Release 0.2.1a1#8
Open
github-actions[bot] wants to merge 9 commits into
Open
Conversation
* fix: make SkillMDLoader tests hermetic via auto-discovery mocks Patch _discover_via_entry_points and _discover_via_package_data in test_load_invalidated_when_mtime_changes and test_invalidate_cache_forces_reparse so they do not pick up SKILL.md files installed in the workspace environment, making the assertions deterministic regardless of installed packages. * docs: NLnet/NGI0 funding attribution
* feat: NativeToolCallEngine — provider-native tool-calling loop Add an agent loop that uses the brain's native function-calling: it passes the ToolBox objects to continue_chat(tools=...), reads structured AgentMessage.tool_calls back, executes them via the existing ToolBox machinery, and feeds results back as MessageRole.TOOL messages until the brain answers. Subclasses ReActLoopEngine and falls back to the ReAct text loop when the brain lacks supports_tools, so it works with any brain. Registered as opm.agents.chat entry point ovos-native-toolcall-loop. Tests, docs (native-toolcall-loop.md + loop-architectures/index), and an example. CI installs the ovos-plugin-manager tool-calling branch until it releases. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * test: real-stack native tool-call e2e + fix example toolbox init Add test_native_toolcall_e2e: drives NativeToolCallEngine with a real OpenAIChatEngine brain (HTTP mocked) and the real MathToolBox, asserting a full tool round-trip where evaluate_expression actually computes 12*9=108 and the result is serialized back as a TOOL message. Only the LLM HTTP is mocked. Adds ovos-openai-plugin as a test brain (CI installs the opm-agents branch). Also fixes the example: MathToolBox() takes no toolbox_id. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(deps): pin released ovos-plugin-manager>=2.7.0a1; drop opm CI git-ref The tool-calling contract NativeToolCallEngine relies on (ToolCall, tools=, supports_tools) is published in ovos-plugin-manager 2.7.0a1, so pin the floor in pyproject and drop the opm git-ref from build/coverage. The real-stack e2e brain still installs ovos-openai-plugin@opm-agents via pre_install_pip until that migration releases. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(deps): pin released ovos-openai-plugin>=2.0.8a1; drop all CI git-refs The opm-agents OpenAIChatEngine the real-stack e2e brain uses is published in ovos-openai-plugin 2.0.8a1, so pin it in the test extra and remove the last pre_install_pip git-ref from build-tests and coverage. Coverage now installs the 'test' extra so the brain comes from PyPI. CI is fully git-ref-free. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(ci): use test_extras to install .[test] in coverage job The coverage reusable workflow installs the package extra via test_extras (the install_extras input is literal pip args). Set test_extras: test so the pinned ovos-openai-plugin e2e brain is installed from PyPI. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
…cover (#7) When a tool was found but its execution raised, _call_tool swallowed the error and returned the misleading "tool 'X' not found", so the LLM got a wrong observation and could not recover. Separate lookup failure (try the next toolbox) from execution failure (return the real error as the observation, e.g. "Error: tool 'X' failed: ..."). Applies to ReActLoopEngine (and NativeToolCallEngine, which inherits _call_tool) and PlanAndExecuteEngine; adds the LOG import to plan_execute. Adds test/test_tool_error_observation.py (parametrized over all three engines): tool succeeds, tool-found-but-raises surfaces the error (not 'not found'), genuine miss reports 'not found', lookup error falls through, execution error does not fall through. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Human review requested!