/api/prompts
Prompts are source code (charter §16). They are versioned, reviewed like code, and changing one is a change to the game.
Four narrow roles, not one omniscient prompt (charter §5). Each has its own input contract and output contract:
| File | Role | Output |
|---|---|---|
narrator.md |
Narrator — scenes, outcomes, transitions | Prose + tags |
adjudicator.md |
Adjudicator — free text → legal action | Strict JSON |
improviser.md |
Improviser — minor sandboxed events | Prose + tags |
npc.md |
NPC — voice one character | Prose + move tags |
banter.md |
Banter — companion callbacks | Prose |
Tag syntax (charter §12)
[MOVE: offer_quest(14)]
[FACT: the eastern bridge is out]
[ADJUST_DISPOSITION: -10]
Extracted by regex, validated against game state, stripped from displayed prose. Invalid moves are silently dropped, prose kept (§6).