Implements full getActivityState() for Codex, Aider, and OpenCode:
- **Codex**: Checks JSONL rollout files at ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl
Maps event types (user_message, tool_use, approval_request, error) to activity states
- **Aider**: Checks chat history file mtime at .aider.chat.history.md and recent git commits
Detects activity based on file modification and auto-commit behavior
- **OpenCode**: Checks SQLite database mtime at ~/.local/share/opencode/opencode.db
Considers active if database was modified within 30 seconds
All implementations follow the deterministic approach established for Claude Code,
avoiding hacky terminal output parsing in favor of agent-native mechanisms.
Also fixes test mocks to include new getActivityState() method.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>