Repository navigation
fix: preserve fatal tool execution propagation - #108
Conversation
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
|
Warning Rate limit exceeded
To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThis PR ensures ChangesFatal Error Propagation Through Core Pipeline Layers
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@coding-agent/tests/agentkit/runtime/test_pipeline.py`:
- Around line 132-160: The test's coverage is incorrect because the helper
plugin FatalExecuteToolPlugin only implements execute_tool (and get_tools) but
the test claims to cover the batch-hook path; update the plugin or test so the
batch path is exercised: either add an execute_tools_batch method to
FatalExecuteToolPlugin that mirrors execute_tool and raises
FatalToolExecutionError for "fatal_tool", or change the test to call the
single-tool execution path explicitly (execute_tool) instead of
execute_tools_batch; ensure the test invokes the new execute_tools_batch hook
and still registers the tool via get_tools so execute_tools_batch is used during
the from_batch_hook assertion.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: a8cf9c44-a95f-4bed-8759-121f9f9b3bc9
📒 Files selected for processing (8)
coding-agent/.opencode/prompts/tasks/adr-0018-pr4-session-manager-fatal-propagation.mdcoding-agent/src/agentkit/runtime/pipeline.pycoding-agent/src/coding_agent/tools/subagent.pycoding-agent/src/coding_agent/ui/session_manager.pycoding-agent/tests/agentkit/runtime/test_pipeline.pycoding-agent/tests/coding_agent/tools/test_subagent.pycoding-agent/tests/ui/test_http_server.pycoding-agent/tests/ui/test_session_manager_runtime.py
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Summary
FatalToolExecutionErrorthrough the pipeline stage wrapper, subagent summary/child-run paths, andSessionManager.run_agent()so generic fatal tool failures are not downgraded into generic pipeline/session errors/sessions/{session_id}/prompton the existing fail-fast contract by surfacing mid-turn fatal tool failures as SSEErrorevents instead of fake assistantStreamDeltaplus parentTurnEnd(ERROR)outputVerification
uv run pytest tests/agentkit/runtime/test_pipeline.py tests/coding_agent/tools/test_subagent.py tests/ui/test_session_manager_runtime.py tests/ui/test_http_server.py tests/ui/test_http_server_failover.py tests/ui/test_session_manager_public_api.py -vuv run python -m compileall -q src tests/agentkit/runtime tests/coding_agent/tools tests/uilsp_diagnosticserror check on all changed Python filesError(fatal tool failure)onlyToolCallDelta/child output followed by SSEError(fatal summary publish rejected)with no fake parent error turnSummary by CodeRabbit
Release Notes
Bug Fixes
Tests