- Fix misleading background_wait instructions to show loop pattern with
remaining_task_ids (race semantics, not block-all)
- Fix wrong Gemini model string: gemini-3-pro-preview → gemini-3-pro
- Add getMainSessionID() fallback when input.sessionID is undefined
- Narrow .gitignore packages/ to only ignore built binaries
- Fix contradictory config doc: non_interactive_members 'all' → 'custom'
- Add athena-junior to keyword-detector exclusion check
- Add .trim() before .toUpperCase() in resolveCouncilIntent
- Update snapshots for model string change
The hasPendingCouncilMembers guard now matches the 'Council: ' prefix from COUNCIL_MEMBER_KEY_PREFIX instead of the old task.agent === 'council-member' check.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
The previous check used currentAgent?.toLowerCase() === 'athena' which failed
after display name remapping stored the agent as 'Athena (Council)' in session
state. Now uses getAgentConfigKey() to resolve display names back to config keys,
matching the established pattern used by other hooks (atlas, todo-continuation, etc.).
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
The old prompt said 'when requiring multi-model analysis' which let Athena
decide to skip the council and do direct analysis herself. Combined with
keyword-detector injecting [search-mode] telling her to 'launch explore
agents and use Grep directly', Athena never called athena_council.
Two fixes:
1. System prompt now unconditionally requires athena_council as FIRST action
- Explicitly prohibits Read/Grep/Glob/LSP/call_omo_agent
- Identity is 'orchestrator, not analyst'
2. keyword-detector skips ALL injections for Athena agent
- search/analyze/ultrawork modes conflict with council orchestration
- Same pattern as isPlannerAgent() skip for Prometheus
- keyword-detector: always set variant to 'max' when ultrawork/ulw keyword detected
- chat-message: remove variant resolution logic to passthrough TUI variant unchanged
- Tests updated to reflect new behavior
🤖 Generated with OhMyOpenCode assistance