New fast_tools.py module:
- FastTool base class (matches + run interface)
- RealTimeSearchTool: SearXNG search for weather/news/prices/scores
- FastToolRunner: classifier that checks all tools, runs matching
ones concurrently and returns combined context
Router accepts FastToolRunner; any_matches() forces medium tier
before LLM classification (replaces _MEDIUM_FORCE_PATTERNS regex).
agent.py: _REALTIME_RE and _searxng_search_async removed; pre-flight
gather now includes fast_tool_runner.run_matching() alongside URL
fetch and memory retrieval.
To add a new fast tool: subclass FastTool, add to the list in agent.py.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- router.py: add _MEDIUM_FORCE_PATTERNS to block weather/news/price
queries from light tier regardless of LLM classification
- agent.py: add _REALTIME_RE and _searxng_search_async(); real-time
queries now run SearXNG search concurrently with URL fetch + memory
retrieval, injecting snippets into medium system prompt
- tests/use_cases/weather_now.md: use case test for weather queries
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>