splinter-keep/tools
Dejvino 4b9078d41f TUI now owns the full game loop with embedded LLM engine
The game is now self-contained: run.sh starts the TUI, which calls the
LLM directly via engine.py. No external agent (OpenCode) needed.

- tools/engine.py: Game engine with prompt builder, litellm client,
  response parser (JSON block extraction), and state persistence
- tools/run.py: Refactored TUI with PLAY/CHAR/LOG/BOOK tabs. PLAY tab
  has streaming narrative pane, dynamic choice buttons, and text input.
  Game loop: scene -> input -> resolve -> archive -> apply -> scene
- session/config.json: LLM provider configuration (model, api_key, etc.)
- AGENTS.md: Updated to document the new architecture
- tools/__init__.py: Package marker for clean imports
- session/turn_description.md, turn_reaction.md: Deprecated - no longer
  needed now that the TUI drives the game loop internally
2026-06-25 12:12:04 +02:00
..
__init__.py TUI now owns the full game loop with embedded LLM engine 2026-06-25 12:12:04 +02:00
ambience.py add ambience music system: TUI crossfade, yt-dlp fetch, source tracking 2026-06-24 21:44:18 +02:00
draw.py Initial commit: The Chaos TTRPG solo campaign skeleton 2026-06-23 23:15:17 +02:00
engine.py TUI now owns the full game loop with embedded LLM engine 2026-06-25 12:12:04 +02:00
music-fetch.py music-fetch: duration filter (11 min default, --allow-long-songs); populate dungeon-synth themed ambience tracks (9 tracks across 8 ambiences) 2026-06-24 21:56:42 +02:00
roll.py Initial commit: The Chaos TTRPG solo campaign skeleton 2026-06-23 23:15:17 +02:00
run.py TUI now owns the full game loop with embedded LLM engine 2026-06-25 12:12:04 +02:00
store_turn.py drop turn_prompt.md — prompt is implicit in the DM asking the player 2026-06-25 08:34:17 +02:00