runtime_tool_catalog.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. from __future__ import annotations
  2. from dataclasses import dataclass
  3. @dataclass(frozen=True)
  4. class ToolDefinition:
  5. """Stable business metadata for one runtime tool.
  6. The event projection layer owns this translation. Business projectors and
  7. UI adapters should never maintain their own copies of tool-name mappings.
  8. """
  9. name: str
  10. business_label: str
  11. category: str
  12. _TOOLS: tuple[ToolDefinition, ...] = (
  13. ToolDefinition("get_topic_detail", "选题", "decision-input"),
  14. ToolDefinition("get_script_direction", "创作总目标", "decision-input"),
  15. ToolDefinition("get_script_snapshot", "当前主脚本", "decision-input"),
  16. ToolDefinition("get_account_script_section_patterns", "账号段落模式", "decision-input"),
  17. ToolDefinition("get_account_script_persona_points", "账号人设", "decision-input"),
  18. ToolDefinition("get_domain_info", "领域信息", "decision-input"),
  19. ToolDefinition("save_script_direction", "保存创作目标", "decision-anchor"),
  20. ToolDefinition("begin_round", "开启新一轮", "decision-anchor"),
  21. ToolDefinition("record_multipath_plan", "记录实现规划", "decision-anchor"),
  22. ToolDefinition("implement_paths", "并发派发多路实现", "orchestration"),
  23. ToolDefinition("record_multipath_decision", "记录多路决策", "decision-anchor"),
  24. ToolDefinition("record_data_decision", "记录数据取舍", "creative-action"),
  25. ToolDefinition("record_task_plan", "记录任务规划", "creative-action"),
  26. ToolDefinition("update_task_plan_step", "更新规划步骤", "creative-action"),
  27. ToolDefinition("get_task_plan", "查看任务规划", "creative-action"),
  28. ToolDefinition("create_script_paragraph", "新增脚本段落", "creative-action"),
  29. ToolDefinition("batch_update_script_paragraphs", "更新候选脚本内容", "creative-action"),
  30. ToolDefinition("append_paragraph_atoms", "补充段落原子点", "creative-action"),
  31. ToolDefinition("create_script_element", "新增脚本元素", "creative-action"),
  32. ToolDefinition("batch_create_script_elements", "批量新增脚本元素", "creative-action"),
  33. ToolDefinition("load_images", "查看图片", "creative-action"),
  34. )
  35. TOOL_CATALOG: dict[str, ToolDefinition] = {item.name: item for item in _TOOLS}
  36. MAIN_DECISION_READ_TOOLS: frozenset[str] = frozenset(
  37. item.name for item in _TOOLS if item.category == "decision-input"
  38. )
  39. MAIN_DECISION_ANCHORS: frozenset[str] = frozenset(
  40. item.name for item in _TOOLS if item.category == "decision-anchor"
  41. )
  42. RETRIEVAL_AGENT_LABELS: dict[str, str] = {
  43. "retrieve_data_decode_case": "解构 Case Agent",
  44. "retrieve_data_external_search": "外部搜索 Agent",
  45. "retrieve_data_knowledge": "知识 Agent",
  46. "retrieve_data_pattern_relation": "Pattern / Relation Agent",
  47. }
  48. def business_tool_label(name: str) -> str:
  49. """Return a non-technical label without inventing an unknown translation."""
  50. definition = TOOL_CATALOG.get(str(name or ""))
  51. return definition.business_label if definition else "运行记录"
  52. def tools_in_category(category: str) -> frozenset[str]:
  53. return frozenset(item.name for item in _TOOLS if item.category == category)