docs(readme): Daemon talkd, HTTP-Endpunkte, Mute-Persistenz und Degraded Mode dokumentieren
This commit is contained in:
1 parent
1ae1f1262c
commit
dc94f45d11
2 files changed
+40
-6
No files matched your search
@@ -28,11 +28,42 @@ keine Runtime-Abhängigkeiten.
|
||||
Say-Flags (gelten auch für `talk "Text"`): `--wait`, `--now`, `--priority`,
|
||||
`--voice`, `--lang`, `--provider`.
|
||||
|
||||
**Hinweis:** In diesem Stand ist `say` (und der Default-Aufruf
|
||||
`talk "Text"`) implementiert — inklusive der kompletten Provider-Kette
|
||||
(ElevenLabs → OpenAI → Edge-TTS → OS-Stimme, blockierend;
|
||||
Daemon-Anbindung folgt). Alle anderen Befehle sind Stubs und melden
|
||||
`not implemented yet` (Exit-Code ≠ 0).
|
||||
**Hinweis:** In diesem Stand sind implementiert: `say` (und `talk "Text"`)
|
||||
mit der kompletten Provider-Kette und Daemon-Anbindung (non-blocking über
|
||||
`talkd`, siehe unten), `mute`, `unmute`, `status`, `cancel`. Die übrigen
|
||||
Befehle sind Stubs und melden `not implemented yet` (Exit-Code ≠ 0).
|
||||
|
||||
## Daemon talkd (Task 04)
|
||||
|
||||
`talkd` besitzt die Ansage-Queue und spricht seriell ab — genau eine Ansage
|
||||
gleichzeitig, Reihenfolge `now` > `high` > `normal` > `low` (FIFO je
|
||||
Level). Der HTTP-Server lauscht nur auf `127.0.0.1`; Port: Default `7800`,
|
||||
config `[server] port`, Env `TALK_PORT` (schlagen den Default).
|
||||
|
||||
| Endpunkt | Wirkung |
|
||||
| --- | --- |
|
||||
| `POST /speak` | `{text, priority?, provider?, voice?, lang?, now?}` → `202 {"id":"…"}`; bei Mute: `202 {"id":"","muted":true}` (Ansage verworfen — dokumentiertes Verhalten) |
|
||||
| `GET /status` | `{"version", "queue", "queue_ids", "current", "muted", "provider"}` |
|
||||
| `POST /cancel` | bricht die laufende Ansage ab + leert die Queue → `200 {"cancelled":n}` |
|
||||
| `POST /mute` / `POST /unmute` | persistenter Mute-State → `200 {"muted":bool}` |
|
||||
|
||||
- **CLI-Verhalten:** `talk say` (und `talk "Text"`) erkennt den Daemon via
|
||||
`GET /status`. Läuft er: enqueue + sofortige Rückkehr (non-blocking,
|
||||
stdout erhält die Item-ID); `--wait` pollt bis zur Fertigstellung;
|
||||
`--now` springt vor die Warteschlange; bei Mute sagt die CLI `muted`.
|
||||
`talk mute`/`unmute`/`status`/`cancel` sind Daemon-Aufrufe mit plain
|
||||
Output.
|
||||
- **Mute ist persistent** (Datei `mute` im Config-Dir, Inhalt `true`/
|
||||
`false`) und überlebt Daemon-Restarts. `talk mute` ohne laufenden Daemon
|
||||
schreibt die Datei direkt — der Daemon liest sie bei jeder Ansage neu,
|
||||
der Zustand greift also auch offline.
|
||||
- **Degraded Mode:** Antwortet kein Daemon, spielt `talk` lokal und
|
||||
sequenziell weiter — serialisiert über die Lock-Datei `talk.lock` im
|
||||
Config-Dir (Kollision = warten; verwaisste Locks gelten nach 60 s als
|
||||
verfallen). Mute wird auch hier respektiert. Nichts bricht still.
|
||||
- Rate-Limit und Ruhezeiten folgen in Task 05; die Rate-Limit-Struktur
|
||||
existiert bereits (`internal/queue`), ist in diesem Stand aber bewusst
|
||||
noch nicht angebunden (Default: unbegrenzt).
|
||||
|
||||
### Provider-Kette (Task 03)
|
||||
|
||||
|
||||
Reference in new issue
Block a user