Add agentic mode with MessageOrchestrator#22
Conversation
Introduce AGENTIC_MODE (default: true) that switches the bot to a minimal conversational interface — 3 commands (/start, /new, /status), no inline keyboards, no follow-up suggestions. Everything else goes straight to Claude as a text passthrough. MessageOrchestrator replaces inline handler registration in core.py, routing to agentic or classic handlers based on mode. Classic mode remains fully unchanged. Feature registry gates conversation enhancer, quick actions, and session export behind agentic_mode=false. 252 tests passing.
|
PR Review Summary
What looks good
Issues / questions
Suggested tests (if needed)
Verdict
|
- Escape Markdown metacharacters in user first_name for agentic /start to prevent parse failures from names like A_B or C*D. - Scope agentic callback handler to cd: pattern via CallbackQueryHandler's pattern parameter, preventing interception of unrelated payloads. - Track success/failure in agentic_text and pass correct value to audit_logger.log_command (was always True, now False on exceptions). - Add tests: Markdown escaping, callback pattern scoping, audit failure logging. Closes #23, closes #24. 254 tests passing.
The relative path display showed ~/ for the approved directory root, which looked like the OS home directory. Show the full path instead.
Summary
AGENTIC_MODEenv var (default:true) that switches the bot to a minimal conversational interface — 3 commands (/start,/new,/status), no inline keyboards, no follow-up suggestions. All other input goes straight to Claude.MessageOrchestratorreplaces inline handler registration incore.py, routing to agentic or classic handlers based on mode. Classic mode behavior is fully unchanged.agentic_mode=false.Test plan
AGENTIC_MODE=true: send messages, verify no buttons, Claude respondsAGENTIC_MODE=false: verify full classic experience unchangedFollow-ups addressed
Closes #23
Closes #24