feat: spirit engine — seance WS, entity minting/Codex, Piper TTS voices, wire telemetry

- WS /ws/session: modes, summon, anomaly fragments, streaming direct contact,
  passive wire-ghost ambient loop, per-user rate limits, event transcript
- entities: anomaly-signature fingerprinting, LLM minting + procedural
  fallback, Codex matching with contact counts and sightings
- tts: 8 local Piper voices (EN/ES), per-entity voice profiles, numpy
  effects chain (pitch/rate/bitcrush/echo/static)
- llm: streaming client, submit_stream in bounded queue, SpiritService
  with offline fallbacks for every channel
- routes: public /api/codex, /api/codex/{id}, /api/stats; /audio static mount
- models: Entity, EntitySighting, Event, ContactSession(entity_id, language)
This commit is contained in:
Indiana
2026-07-20 20:13:28 +00:00
parent 52afad1ad5
commit b9110f45de
28 changed files with 1997 additions and 4 deletions

View File

@@ -9,5 +9,18 @@ class Settings(BaseSettings):
session_secret: str
port: int = 7777
# LLM tiers — CPU-only remote Ollama, so the fast tier must stay small.
ollama_fast_model: str = "granite4.1:3b"
ollama_chat_model: str = "minicpm-v4.5:latest"
llm_max_concurrency: int = 2
llm_max_queue_depth: int = 8
llm_cooldown_seconds: float = 8.0 # min gap between ambient whispers
# TTS
piper_voices_dir: str = "voices"
# Where synthesized utterance audio is written (served at /audio/).
data_dir: str = "data"
settings = Settings()