1# mosaic site23Deno 2 + Fresh 2. Owns game state, the append-only JSONL log, `/mcp`, SSE, and4the spectator. Puzzle rules live only in `../engine` (Go).56 deno install # once: node_modules for vite/preact7 deno task engine # builds ../engine/bin/mosaic-engine8 deno task dev # prints the agent prompt, serves 127.0.0.1:80009 deno task test # fold/replay equality, referee gating, geometry10 deno task check # fmt, lint, types11 deno task solve -- --seed a # scripted client plays a whole game via /mcp1213Routes: `/` viewer (live; `/?replay=<game_id>` replays from the log), `/mcp`14streamable HTTP MCP (authless, localhost only), `/events/:id` SSE (`live`15follows the newest game), `/log/:id` JSONL.1617Generation is cached under `data/cache/` by `sha256(seed|X|n|m)`; game logs are18written to `data/games/<id>.jsonl`. The private solution is never in the log, so19a restarted server can replay but not continue a game.