Upgrades fastapi (0.115.6->0.141.1, pulling starlette to 1.6.0),
fastapi-users (14.0.1->15.0.5), aiosmtplib (3.0.2->5.1.2),
python-multipart (0.0.20->0.0.32), and sentence-transformers
(3.3.1->6.0.1, pulling transformers and pyjwt to patched versions).
Verified via pip-audit (zero remaining findings across all 97
resolved dependencies) and functional smoke tests: auth flow, RAG
embedding/retrieval (dimension still 384, similarity still sane),
DM-turn tool-calling (roll_dice still fires correctly), and a live
WebSocket handshake/send/broadcast round trip against the upgraded
Starlette.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
RAG: switch Postgres to pgvector, chunk and embed the three D&D
rulebooks locally via sentence-transformers, and retrieve relevant
excerpts per DM turn (query = latest player message) to ground the
system prompt. Retrieval runs off the event loop and is capped by a
relevance threshold and a max character budget so it can't blow up
context size or cost.
Game setup wizard: creating a game now opens a short chat where the
DM asks about genre, length, and the player's experience level, then
proposes a name and description via a tool call. The player can edit
both before creating the game. Stateless endpoint — the frontend
carries the conversation, no DB needed since the game doesn't exist
yet.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
FastAPI + Postgres backend with fastapi-users auth, games/characters
CRUD, and a WebSocket chat endpoint where an x.ai Grok DM narrates
play, rolls dice, and maintains character sheets via tool calls.
React + Tailwind frontend covers registration/login, game list and
creation, participation-code join flow, character viewer, and a
real-time chat session view. Docker Compose skeleton (Postgres +
backend) included; Caddy/frontend container wiring is deferred to
the deploy milestone.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>