diff options
Diffstat (limited to 'AGENTS.md')
| -rw-r--r-- | AGENTS.md | 15 |
1 files changed, 11 insertions, 4 deletions
@@ -10,9 +10,14 @@ canvas (`desktop/assistant/` in the quickshell repo, SUPER+Home). Spec: `docs/superpowers/specs/2026-10-16-text-daemon-design.md`. The voice version is the tag `voice-v1`: push-to-talk on the mic's mute -button, whisper large-v3-turbo, Kokoro. The sections from "Hardware" -through "Kokoro-82M" describe that version and its measurements. They are -kept because a return to voice starts from them. +button, whisper large-v3-turbo, Kokoro. These sections describe only that +version, and are kept because a return to voice starts from them: +"Hardware", "whisper.cpp", and under Findings "Models", "STT backends", +"Live mic with whisper-stream", both "Push-to-talk" sections, +"large-v3-turbo", "The loop", "Overlay", "Barge-in", "Wake word trial", +"TTS" and "Kokoro-82M". The rest still describes the daemon: the tool, +context-size and tool-call-history findings are rules `assistant.py` +applies today. Tools (2026-09-26): read-only shell-command TOML files in `~/.config/desktop-assistant/tools/`; `config.toml` there overrides the @@ -35,7 +40,9 @@ socket (ask) ──> llama-server (LLM, tools) ──> socket (think, token, too - **Concurrency:** one reader thread per client, one reply thread per question. One lock guards the conversation, the turn counter and the database. `say()` checks the turn under it before each emit, and stop - bumps the turn under it, so a stopped reply cannot emit after its `done`. + bumps the turn under it, so a stopped reply cannot send a token or tool + event after its `done`. A late `ctx` can still arrive: `ask()` emits it + outside the lock, and its numbers are true regardless. - **One daemon:** `serve()` probe-connects first and refuses to start over a socket that answers; `main()` removes the socket only if it served it. - **Commands** are type-checked before they run (ids must be `int`: SQLite would match `"1"` to row 1 while the Python comparison with the current id would not) and run under a try, so a failing command answers `error` instead of killing the client's reader. - **Client sockets** have a 2 s timeout, not non-blocking mode: a large |
