- Add 10 alert criteria types with RPC-based evaluation and 24h rolling cooldown
- Implement pluggable email service with Gmail SMTP and unsubscribe links
- Add ALERT_SUBSCRIPTION query classification and isolated 2-tool resolution
- Add confirmation, unsubscribe, and internal evaluate API routes
- Add background evaluator, digest sender, and cleanup workers
- Add comprehensive test suite with 45 unit tests and 44 simulated tool tests
refactor(core): reduce cyclomatic complexity to <=10, enforce <=500 lines per file, apply comment discipline, and add 22-tool test suite
1. Model Tier Mapping:
- Configured GROQ_ROUTE_MODEL='openai/gpt-oss-20b' and GROQ_FALLBACK_ROUTE_MODEL='groq/compound-mini'.
- Configured GROQ_SYNTHESIS_MODEL='openai/gpt-oss-120b' and GROQ_FALLBACK_SYNTHESIS_MODEL='qwen/qwen3.6-27b'.
2. Router Category Gating:
- Updated ROUTER_PROMPT to output 'tool_categories' alongside route classification.
- Wired classify_query() to return (classification, tool_categories) and passed categories into discover_tools().
3. Universal suggest_actions across ALL Routes:
- Attached SUGGEST_ACTIONS_TOOL to PATH_B and all active routes.
- Tested live PATH_B execution: zero JSON code fences leaked, suggest_actions invoked natively.
- Restructured repository to clean production FastAPI package layout
- Moved research docs, scratch scripts, and legacy routes to misc/
- Added COMMERCIAL_TOOLS with generate_contact_buttons for dynamic handoffs
- Configured direct file downloads (/download endpoint) in Appwrite storage
- Fixed middleware compression to preserve tool payload output for python tools
- Updated requirements.txt and verified test suite