feat(api): CORS-Tür für POST /speak — OPTIONS-Preflight und ACAO aus Config

OPTIONS /speak beantwortet Preflights mit 204 + Allow-Headers/Methods/Max-Age,
wenn die Origin in server.allowed_origins steht; ungeliste Origins und leere
Liste bekommen keine CORS-Header (Browser blockt). Nur /speak, kein anderer
Endpunkt. /status ergänzt additiv cors:[origins] (immer vorhanden, [] wenn zu).
This commit is contained in:
m3ta-chiron committed 2026-10-18 20:06:05 +02:00
1 parent cef6e6b9f2
commit 156c20dbb3
5 files changed
+174 -35

No files matched your search

+7 -4
View File
@@ -1,8 +1,11 @@
// Package api definiert die HTTP-Oberfläche des Daemons auf 127.0.0.1:
// POST /speak (enqueue, 202 {id}; bei Mute 202 {muted:true}; bei Gesetz-
// Verwurf 202 {discarded:"rate_limit"|"quiet_hours"} — Task 05),
// GET /status (inkl. Rate-Limit- und Ruhezeit-State), POST /cancel,
// POST /mute, POST /unmute. CORS für /speak und der MCP-Endpoint
// (Streamable HTTP) folgen in Task 06. Der Client-Teil ist die CLI-Seite
// derselben Vertragsschnittstelle.
// GET /status (inkl. Gesetz-State, mcp/cors — Task 06), POST /cancel,
// POST /mute, POST /unmute. Task 06 ergänzt die CORS-Tür für POST /speak
// (OPTIONS-Preflight + ACAO aus server.allowed_origins, siehe cors.go)
// und den MCP-Endpoint POST /mcp als schlankes eigenes JSON-RPC-Subset
// (initialize, notifications/initialized, tools/list, tools/call mit dem
// speak-Tool — siehe mcp.go). Der Client-Teil ist die CLI-Seite derselben
// Vertragsschnittstelle.
package api