- 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
- Added explicit anti-repetition constraint in Rule 5 of services/prompts.py.
- Updated services/tool_executor.py suggest_actions return message to instruct model not to write manual links.
- Added _clean_reply_text() sanitizer in services/agent_loop.py to strip any stray dummy action links from synthesized text.