chore: bootstrap go module, license, readme and package skeleton
This commit is contained in:
1 parent
c8f39024e1
commit
24dfe4d46c
11 files changed
+119
No files matched your search
+10
@@ -0,0 +1,10 @@
|
||||
# Go-Binaries
|
||||
/talk
|
||||
/talkd
|
||||
/talk.exe
|
||||
/talkd.exe
|
||||
*.test
|
||||
*.out
|
||||
|
||||
# Release-Artefakte (GoReleaser, Task 11)
|
||||
/dist/
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 m3tam3re
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,49 @@
|
||||
# talk
|
||||
|
||||
> **Status: WIP** — aktive Entwicklung (talk 2.0). Binde Spezifikation:
|
||||
> [`.scratch/talk-2-0/spec.md`](.scratch/talk-2-0/spec.md) ·
|
||||
> Implementierungsplan: [`.scratch/talk-2-0/plan.md`](.scratch/talk-2-0/plan.md)
|
||||
|
||||
**talk** macht Skripte und KI-Agenten hörbar: Ein Aufruf — `talk "Build fertig"` —
|
||||
spricht eine kurze Nachricht über eine TTS-Provider-Kette
|
||||
(ElevenLabs → OpenAI → Edge-TTS → OS-Stimme), serialisiert durch den Daemon
|
||||
`talkd`. Cross-platform (Windows/macOS/Linux, amd64/arm64), statische Binaries,
|
||||
keine Runtime-Abhängigkeiten.
|
||||
|
||||
## Befehle
|
||||
|
||||
| Befehl | Zweck |
|
||||
| --- | --- |
|
||||
| `talk "Text"` | Ansage — Abkürzung für `talk say`, non-blocking |
|
||||
| `talk say "Text"` | Ansage (Text als Argument oder von stdin) |
|
||||
| `talk wrap -- <Befehl>` | Befehl ausführen, Erfolg/Misserfolg + Dauer ansagen |
|
||||
| `talk mute` / `talk unmute` | Ansagen dauerhaft stummschalten / Stummschaltung aufheben |
|
||||
| `talk status` | Daemon-Status (Queue, Mute, Provider, Version) |
|
||||
| `talk cancel` | laufende und geplante Ansagen abbrechen |
|
||||
| `talk voices` | verfügbare Stimmen anzeigen |
|
||||
| `talk test` | Test-Ansage ausgeben |
|
||||
| `talk doctor` | Selbstdiagnose des Setups |
|
||||
| `talk setup` | geführte Ersteinrichtung (Wizard) |
|
||||
|
||||
Say-Flags (gelten auch für `talk "Text"`): `--wait`, `--now`, `--priority`,
|
||||
`--voice`, `--lang`, `--provider`.
|
||||
|
||||
**Hinweis:** Alle Befehle sind in diesem Stand Stubs und melden
|
||||
`not implemented yet` (Exit-Code ≠ 0). Die Implementierung entsteht
|
||||
Aufgabenweise gemäß Plan; `--version` und `--help` funktionieren.
|
||||
|
||||
## Entwicklung
|
||||
|
||||
```console
|
||||
go build ./... # bauen
|
||||
go test ./... # Tests
|
||||
go vet ./... # statische Analyse
|
||||
gofmt -l . # Formatierung prüfen (leerer Output = ok)
|
||||
```
|
||||
|
||||
CI: `.gitea/workflows/test.yml` (Gitea Actions) läuft vet, gofmt-Check, Tests
|
||||
und Build bei jedem Push und Pull Request.
|
||||
|
||||
## Lizenz
|
||||
|
||||
MIT — siehe [LICENSE](LICENSE).
|
||||
@@ -0,0 +1,4 @@
|
||||
// Package api implementiert die HTTP-Oberfläche des Daemons auf 127.0.0.1:
|
||||
// POST /speak, GET /status, POST /cancel, POST /mute, POST /unmute (Task 04),
|
||||
// CORS für /speak und den MCP-Endpoint (Streamable HTTP, Task 06).
|
||||
package api
|
||||
@@ -0,0 +1,5 @@
|
||||
// Package audio implementiert die Audio-Ausgabe von talk über das
|
||||
// Sink-Interface: Playback embedded via oto (PCM/WAV) und ein null-Sink,
|
||||
// das verwirft (CI, Server, Tests). Auswahl per Config audio.sink.
|
||||
// Implementierung folgt in Task 02.
|
||||
package audio
|
||||
@@ -0,0 +1,7 @@
|
||||
// Package config implementiert die Config-Auflösung von talk: Defaults +
|
||||
// optionale config.toml im platform-nativen Verzeichnis (~/.config/talk,
|
||||
// ~/Library/Application Support/talk, %APPDATA%\talk) + Env-Overrides
|
||||
// (TALK_*); Env schlägt Datei. Enthält Voice-Mapping voice.<provider>.<lang>
|
||||
// und Provider-Endpunkte (Fake-bar für Tests). Implementierung folgt in
|
||||
// Task 02.
|
||||
package config
|
||||
@@ -0,0 +1,4 @@
|
||||
// Package langdetect erkennt die Sprache eines Ansage-Texts als reine
|
||||
// Funktion Detect(text) → "de" | "en" (Default "de"; Heuristik über
|
||||
// Common-Word-Listen und Umlaute/ß). Implementierung folgt in Task 02.
|
||||
package langdetect
|
||||
@@ -0,0 +1,4 @@
|
||||
// Package notify implementiert Best-effort-Desktop-Notifications parallel
|
||||
// zum Audio (beeep: notify-send / macOS Notification Center / Windows Toast),
|
||||
// mit Abbrechen-Button, wo das OS ihn hergibt. Implementierung folgt.
|
||||
package notify
|
||||
@@ -0,0 +1,6 @@
|
||||
// Package provider implementiert die TTS-Provider-Kette von talk:
|
||||
// ElevenLabs → OpenAI TTS → Edge-TTS → OS built-in (macOS say, Windows SAPI,
|
||||
// Linux espeak/speech-dispatcher), überschreibbar per Config/Flag, mit
|
||||
// Fallback bei Fehlern. Implementierung folgt in Task 02 (osbuiltin) und
|
||||
// Task 03 (Cloud-Provider, Kette).
|
||||
package provider
|
||||
@@ -0,0 +1,6 @@
|
||||
// Package queue implementiert die Ansage-Queue des Daemons: serialisierte
|
||||
// Abarbeitung (eine Ansage gleichzeitig), Prioritäten (high > normal > low,
|
||||
// FIFO je Level), now-Items springen vor, Rate-Limit mit prioritätsbewusstem
|
||||
// Verwerfen. Implementierung folgt in Task 04 (Queue) und Task 05
|
||||
// (Rate-Limit, Ruhezeiten).
|
||||
package queue
|
||||
Reference in new issue
Block a user