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

+33
View File
@@ -376,6 +376,39 @@ def award_xp(character_id: int, xp: int) -> ToolResult:
}
@tool
def update_quest(quest_id: int, status: str = "active", name: str = "", description: str = "") -> ToolResult:
VALID_STATUSES = ["active", "completed", "failed"]
if status not in VALID_STATUSES:
return {
"success": False,
"tool": "update-quest",
"message": f"Status '{status}' non valido. Usa: {', '.join(VALID_STATUSES)}",
}
quest = storage.get_quest(quest_id)
if not quest:
return {"success": False, "tool": "update-quest", "message": f"Missione #{quest_id} non trovata."}
changed = []
if status != quest["status"]:
changed.append(f"stato: {quest['status']}→{status}")
if name and name != quest.get("name"):
changed.append(f"nome: {quest.get('name')}→{name}")
if description and description != quest.get("description"):
changed.append("descrizione aggiornata")
storage.update_quest(quest_id, status=status, name=name, description=description)
display_name = name or quest["name"]
return {
"success": True,
"tool": "update-quest",
"quest_id": quest_id,
"name": display_name,
"status": status,
"message": f"Missione '{display_name}' → {status}." + (f" ({', '.join(changed)})" if changed else ""),
}
@tool
def dm_override(command: str, params: dict | None = None) -> ToolResult:
manual = {