Show raw AI output in Insights per turn

Store the model's literal reply (before the world-state block is stripped)
in each turn's snapshot, and render it in the Insights panel when inspecting
a past AI message (the 🔍 button). Makes it possible to see exactly what the
model emitted — including whether it sent a state delta and with what paths —
which is the fastest way to debug under-reported or misrouted stat changes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parththakkar106
2026-07-21 16:34:38 +05:30
co-authored by Claude Opus 4.8
parent 80fb5b0c89
commit 3b03bf737a
3 changed files with 21 additions and 0 deletions
@@ -130,6 +130,14 @@ def test_turn_applies_clamped_delta_and_strips_block(client):
# The state block is not shown to the player.
assert "```state" not in _last_ai_text(client.adv_id)
assert "goblin's blade" in _last_ai_text(client.adv_id)
# ...but the raw model reply (with the block) is kept for the Insights view.
db = SessionLocal()
try:
snap = db.get(models.Adventure, client.adv_id).actions[-1].context_snapshot
finally:
db.close()
assert "```state" in snap["raw_output"]
assert '"player.hp": -80' in snap["raw_output"]
def test_world_state_endpoint(client):