-
Notifications
You must be signed in to change notification settings - Fork 1
Optimize tool call reactor handler ordering cache #669
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: dev
Are you sure you want to change the base?
Conversation
WalkthroughAdds a lazily computed, cached priority ordering for tool call handlers with invalidation on register/unregister. Updates processing to use the cached order. Introduces unit tests verifying cache rebuild on registration and unregistration, ensuring correct priority handling and swallow behavior. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant C as Caller
participant R as ToolCallReactorService
participant H as Handlers (various priorities)
note over R: On first use, compute and cache sorted handlers
C->>R: process_tool_call(call)
alt cache empty
R->>R: _get_sorted_handlers() -> sort & cache
else cache present
R->>R: _get_sorted_handlers() -> return cached
end
loop in priority order
R->>H: can_handle(call)?
alt can_handle = true
R->>H: handle(call)
alt swallowed
R-->>C: return handled result
note over R: Stop on swallow
else not swallowed
note over R: Continue to next handler
end
else cannot handle
note over R: Skip to next
end
end
R-->>C: return default/no-op if none handled
sequenceDiagram
autonumber
participant Dev as Registrar
participant R as ToolCallReactorService
participant Cache as _sorted_handlers
rect rgba(220,240,255,0.4)
note over R,Cache: Cache invalidation paths
Dev->>R: register(handler, priority)
R->>Cache: _invalidate_sorted_handlers() -> None
Dev->>R: unregister(handler)
R->>Cache: _invalidate_sorted_handlers() -> None
end
note over R: Next process_tool_call recomputes sorted list
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (2)
🧰 Additional context used📓 Path-based instructions (2)**/*.py📄 CodeRabbit inference engine (AGENTS.md)
Files:
src/**/*.py📄 CodeRabbit inference engine (AGENTS.md)
Files:
🧬 Code graph analysis (2)tests/unit/core/services/test_tool_call_reactor_service.py (2)
src/core/services/tool_call_reactor_service.py (2)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
🔇 Additional comments (7)
Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Summary
ToolCallReactorServiceto avoid repeated sorting on every tool callTesting
https://chatgpt.com/codex/tasks/task_e_68ec2f427ce08333b4c1e4ecd4777ede
Summary by CodeRabbit