| .. | ||
| islands | ||
| lib | ||
| routes | ||
| scripts | ||
| tests | ||
| .gitignore | 28B | |
| deno.json | 1.6K | |
| deno.lock | 50.3K | |
| dev.ts | 571B | |
| main.ts | 449B | |
| README.md | 1002B | |
| utils.ts | 150B | |
| vite.config.ts | 247B |
mosaic site
Deno 2 + Fresh 2. Owns game state, the append-only JSONL log, /, SSE, and
the spectator. Puzzle rules live only in ../ (Go).
deno install # once: node_modules for vite/preact
deno task engine # builds ../engine/bin/mosaic-engine
deno task dev # prints the agent prompt, serves 127.0.0.1:8000
deno task test # fold/replay equality, referee gating, geometry
deno task check # fmt, lint, types
deno task solve -- --seed a # scripted client plays a whole game via /mcp
Routes: / viewer (live; / replays from the log), /
streamable HTTP MCP (authless, localhost only), / SSE (live
follows the newest game), / JSONL.
Generation is cached under data/ by sha256(seed|X|n|m); game logs are
written to data/. The private solution is never in the log, so
a restarted server can replay but not continue a game.