Skip to content

Pluto: fix voice notes and on-time reminders, add borrow plan and Sarvam script - #4

Merged
sneha-20bit merged 3 commits into
mainfrom
claude/new-session-ui80t8
Nov 1, 2026
Merged

sneha-20bit merged 3 commits into
mainfrom
claude/new-session-ui80t8

Conversation

@sneha-20bit

Copy link
Copy Markdown
Collaborator

Summary

Three commits.

Fix voice notes and on-time reminders (939b355)

  • Voice notes: stt.py now tries Groq Whisper (whisper-large-v3), then Gemini audio, then Sarvam, using whichever keys are set. Before, it only used Sarvam, so voice failed without a Sarvam key. The Sarvam default is now the transcription model saarika:v2.5, since saaras translates.
  • Voice errors: with no voice key set, the bot says which key to add. bot.py --check shows the voice provider order.
  • Reminders: the due check runs every minute instead of every 30. A reminder's first alert always arrives at the time you set, even in quiet hours and past the daily cap. Repeat nudges ("Still pending") and nudges about old ideas still wait for morning and the cap.
  • Relative times: the prompt now understands "in 10 minutes" and "2 ghante mein".

Borrow plan (4561da2)

  • pluto/docs/borrow-plan.md studies QwenPaw's three-layer memory and Heartbeat, and nanobot's Dream memory consolidation and how its scheduled jobs reach Telegram. It cites file paths and functions, and maps each idea onto db.py, llm.py and bot.py.
  • It includes designs for a daily morning digest and a SQLite-only memory upgrade (built-in full-text search, rolling summaries, profile facts), plus what to skip for now.
  • No code was copied. The ideas are re-implemented (nanobot is MIT, QwenPaw is Apache 2.0).

Sarvam script (a4702f1)

  • sarvam_hello.py at the repo root makes one chat completion call to sarvam-105b-conversations with the sarvamai SDK. It reads SARVAM_API_KEY from the environment and never prints it. .env stays ignored by git.

Testing

  • 99 pytest tests pass. New tests cover the voice fallback chain and request shapes, the message when no voice key is set, reminders at night, repeats waiting for morning, the cap applying only to repeats, and the one-minute check interval.
  • Not run: real Groq, Gemini or Sarvam voice calls, and sarvam_hello.py itself, which hasn't been run because this session has no key.

Generated by Claude Code

Voice notes:
- stt.py now tries Groq Whisper (whisper-large-v3), then Gemini audio,
  then Sarvam, using whichever keys exist. Before, only Sarvam was used,
  so voice failed without a Sarvam key. The Sarvam default is now the
  transcription model saarika:v2.5 (saaras translates).
- The bot says which key to add when no voice provider is set, and
  bot.py --check shows the voice order.

Reminders:
- The due check runs every minute instead of every 30 minutes.
- A reminder's first alert always goes out at the time the user set,
  even in quiet hours and past the daily cap. Repeat nudges ("Still
  pending") and stale-idea nudges keep waiting for morning and the cap.
- The prompt resolves relative times ("in 10 minutes", "2 ghante mein").

99 tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018sC4RJhTrBjKg5omzDNBz9
Reads SARVAM_API_KEY from the environment and calls
sarvam-105b-conversations once, printing the reply.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018sC4RJhTrBjKg5omzDNBz9
Study of QwenPaw's three-layer memory and Heartbeat, and nanobot's
Dream consolidation and cron-to-Telegram delivery, with file and
function references and how each maps onto db.py, llm.py and bot.py.
Includes designs for a daily digest and a SQLite-only memory upgrade
(FTS5 search, rolling summaries, profile facts), and what to skip.
No code copied; ideas re-implemented (nanobot MIT, QwenPaw Apache 2.0).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018sC4RJhTrBjKg5omzDNBz9
@sneha-20bit
sneha-20bit merged commit 231d633 into main Nov 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants