feat(tools): add update-quest tool, switch to Big Pickle (opencode/zen)

- update_quest: aggiorna stato/nome/descrizione missioni
- db: get_quest(), update_quest con nome+desc
- prompt: quest_id nel contesto, esempio nei tool examples
- Switch da deepseek-v4-flash (go) a big-pickle (zen) — gratuito
This commit is contained in:
truetype committed 2026-06-28 10:01:33 +02:00
1 parent eacc946868
commit b985df0017
6 files changed
+60 -10

No files matched your search

+3 -1
View File
@@ -25,6 +25,7 @@ _KNOWN_TOOLS: dict[str, dict[str, str]] = {
"spellcasting": {"character_id": "id pg", "spell_name": "nome incantesimo", "spell_check": "valore tiro"},
"update_inventory": {"character_id": "id pg", "item": "nome oggetto", "action": "add|remove|equip|unequip|list", "quantity": "quantità (default 1)"},
"award_xp": {"character_id": "id pg", "xp": "quantità PE"},
"update_quest": {"quest_id": "id missione", "status": "active|completed|failed", "name": "nuovo nome (opzionale)", "description": "nuova descrizione (opzionale)"},
"dm_override": {"command": "narrate|set|force", "params": "parametri opzionali"},
}
@@ -34,6 +35,7 @@ Esempi:
- Tiro d20 per sentire rumori → {"tool": "roll_dice", "params": {"die": "d20"}, "narration": "Tendi l'orecchio nel buio..."}
- Esploro la stanza → {"tool": "dm_override", "params": {"command": "narrate", "params": {"text": "La stanza è polverosa..."}}, "narration": "Scrutando nell'oscurità, noti..."}
- Prova di percezione CD 12 → {"tool": "ability_check", "params": {"character_id": 1, "dc": 12}, "narration": "Cerchi indizi nella stanza..."}
- Missione completata → {"tool": "update_quest", "params": {"quest_id": 1, "status": "completed"}, "narration": "La missione è stata completata con successo!"}
"""
SYSTEM_PROMPT = f"""Sei il Dungeon Master di DCC RPG (Dungeon Crawl Classics) — narrazione epico-oscura, tono sword & sorcery.
@@ -110,7 +112,7 @@ def format_context(ctx: GameContext) -> str:
if ctx.quests:
lines.append("MISSIONI:")
for q in ctx.quests:
lines.append(f" [{q['status']}] {q['name']}")
lines.append(f" [ID:{q['id']}] {q['name']} ({q['status']})")
lines.append("")
enriched = _enrich_areas(ctx.areas)