Release Notes - v0.3.7
Bug Fixes
ToolManager: per-skill state isolation under parallel activation
ToolManager tracked the active skill in a single slot (_active_skill) and
a flat _selected_methods list. When the LLM activated two SkillBase
skills in the same parallel tool_calls batch, the concurrent coroutines
overwrote each other's state and the next round failed Stage-3 dispatch with
Tool not found: <method>.
Fix: replace the single slot with per-skill dicts keyed by skill name plus a
reverse index for O(1) Stage-3 dispatch.
_active_skills: Dict[str, SkillObjectTool]_selected_methods: Dict[str, List[str]]_method_to_skill: Dict[str, SkillObjectTool]
All four tool types — NativeFunctionTool, NativeObjectTool,
SkillObjectTool, ClaudeSkill — now run safely in any parallel mix.
Examples
examples/tool_calling_parallel_skills.py— end-to-end demo activating
2×SkillBase+ 2×ClaudeSkillin one parallel batch. Each skill
leaves a visible marker in the final answer (numeric result, string
transform, BEGIN/END frame, audit signature line).
Upgrade
pip install -U chakpy==0.3.7