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:
1 parent
eacc946868
commit
b985df0017
6 files changed
+60
-10
No files matched your search
@@ -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 = {
|
||||
|
||||
Reference in new issue
Block a user