From 8452ee9ec426a64ee24233ceea1cb2a57c7a02fb Mon Sep 17 00:00:00 2001 From: rosspeili Date: Thu, 3 Sep 2026 11:13:49 +0300 Subject: [PATCH] fix(examples): derive tool dispatch names from manifest (#178) Replace hardcoded skill IDs in claude_tos_evaluator, ollama_tos_evaluator, and ollama_novelty_extractor with manifest-derived TOOL_NAME values. --- CHANGELOG.md | 4 ++++ examples/claude_tos_evaluator.py | 5 +++-- examples/ollama_novelty_extractor.py | 5 +++-- examples/ollama_tos_evaluator.py | 5 +++-- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd44f78..6cdbe2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,10 @@ Contributors add user-facing entries under `[Unreleased]` in the same PR. Mainta - **CLI:** User-configurable `pastel`, `ocean`, and `mono` presentation themes; interactive menu selection persists globally, project config can override it, and unknown values fall back to `pastel` (#248). - **CLI:** The mail submenu and direct mail commands now follow the active presentation theme (#248). +### Fixed + +- **Examples:** Derive agent-loop tool dispatch names from the loaded manifest in `claude_tos_evaluator.py`, `ollama_tos_evaluator.py`, and `ollama_novelty_extractor.py` (#178). + ## [0.5.3] - 2026-09-01 ### Added diff --git a/examples/claude_tos_evaluator.py b/examples/claude_tos_evaluator.py index 6da2a17..ac9830a 100644 --- a/examples/claude_tos_evaluator.py +++ b/examples/claude_tos_evaluator.py @@ -9,7 +9,8 @@ load_env_file() bundle = SkillLoader.load_skill("compliance/tos_evaluator") -print(f"Loaded Skill: {bundle['manifest']['name']}") +TOOL_NAME = bundle["manifest"]["name"] +print(f"Loaded Skill: {TOOL_NAME}") TOSEvaluatorSkill = bundle["module"].TOSEvaluatorSkill tos_skill = TOSEvaluatorSkill() @@ -39,7 +40,7 @@ print(f"Claude requested tool: {tool_name}") print(f"Input: {tool_input}") - if tool_name == "compliance/tos_evaluator": + if tool_name == TOOL_NAME: result = tos_skill.execute(tool_input) print(json.dumps(result, indent=2)) diff --git a/examples/ollama_novelty_extractor.py b/examples/ollama_novelty_extractor.py index 13f80a5..421434c 100644 --- a/examples/ollama_novelty_extractor.py +++ b/examples/ollama_novelty_extractor.py @@ -7,6 +7,7 @@ load_env_file() bundle = SkillLoader.load_skill("data_engineering/novelty_extractor") +TOOL_NAME = bundle["manifest"]["name"] NoveltyExtractor = bundle["module"].NoveltyExtractor skill = NoveltyExtractor() @@ -17,7 +18,7 @@ To use a skill, output exactly one JSON code block: ```json {{ - "tool": "the_tool_name", + "tool": "{TOOL_NAME}", "arguments": {{ "param_name": "value" }} @@ -54,7 +55,7 @@ fn_name = tool_call.get("tool") fn_args = tool_call.get("arguments", {}) - if fn_name == "data_engineering/novelty_extractor": + if fn_name == TOOL_NAME: result = skill.execute(fn_args) print(json.dumps(result, indent=2)) messages.append({"role": "assistant", "content": message_content}) diff --git a/examples/ollama_tos_evaluator.py b/examples/ollama_tos_evaluator.py index 4c75f72..8172b5f 100644 --- a/examples/ollama_tos_evaluator.py +++ b/examples/ollama_tos_evaluator.py @@ -9,6 +9,7 @@ load_env_file() bundle = SkillLoader.load_skill("compliance/tos_evaluator") +TOOL_NAME = bundle["manifest"]["name"] TOSEvaluatorSkill = bundle["module"].TOSEvaluatorSkill tos_skill = TOSEvaluatorSkill() @@ -19,7 +20,7 @@ To use a skill, output exactly one JSON code block: ```json {{ - "tool": "the_tool_name", + "tool": "{TOOL_NAME}", "arguments": {{ "param_name": "value" }} @@ -53,7 +54,7 @@ fn_name = tool_call.get("tool") fn_args = tool_call.get("arguments", {}) - if fn_name == "compliance/tos_evaluator": + if fn_name == TOOL_NAME: result = tos_skill.execute(fn_args) print(json.dumps(result, indent=2)) messages.append({"role": "assistant", "content": message_content})