A 5e storytelling engine with an LLM DM

Refactor world state architecture and tool semantics master

Big rework of how the DM tracks and persists game state. The campaign log now lives in worlds/{world}/log/ (world-scoped for future multiplayer) with separate day files (day+001.md, day-001.md for backstory support). Renamed tools to be more action-oriented: - roll_dice → roll - log_event → mark_time - update_session → set_scene - save_to_world → establish - Combined lookup_rule + query_world → recall Added note_discovery tool for tracking player knowledge separately from DM truth - players/{player}/worlds/{world}/ now holds what the character has learned, while worlds/{world}/ holds the full DM knowledge. Also fixed the dice parser to support compound notation like 2d8+1d6 (for spells like Chaos Bolt), and added --debug mode tool call logging that shows truncated params and results inline. Strengthened the DM prompt with an explicit "after every response" checklist to remind it to call mark_time, establish, note_discovery, and set_scene consistently. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>