fix(athena): harden council members — compaction recovery, block TodoWrite, analysis mode

- Add session.compacted handler in BackgroundManager to prevent premature
  task completion after compaction (defer first post-compaction idle)
- Explicitly block TodoWrite/TodoRead for council members in all sync
  points (AgentConfig permission + session tools + prompt instructions)
- Add council member prefix check to todo-continuation-enforcer skip list
  to prevent infinite continuation loops on completed council members
- Add optional analysis mode (solo/delegation) question to Athena setup:
  solo = thorough but heavier, delegation = fast via explore/librarian
- Allow call_omo_agent in council member allow-list for delegation mode
- Update COUNCIL_MEMBER_PROMPT with TodoWrite prohibition and delegation
  addendum for when delegation mode is selected
- Update prepare_council_prompt tool with mode parameter
This commit is contained in:
ismeth
2026-02-23 19:42:56 +01:00
committed by YeonGyu-Kim
parent c75ae6bffd
commit fb543f88d5
7 changed files with 109 additions and 24 deletions
+5 -1
View File
@@ -58,7 +58,8 @@ const AGENT_RESTRICTIONS: Record<string, Record<string, boolean>> = {
// - src/agents/athena/council-member-agent.ts (AgentConfig permission format — allow-list)
// - src/plugin-handlers/tool-config-handler.ts (allow/deny string format)
// Keep all three in sync when modifying.
// Council members use an allow-list: only read-only analysis tools are permitted.
// Council members use an allow-list: read-only analysis + optional call_omo_agent delegation.
// TodoWrite/TodoRead explicitly denied to prevent uncompletable todo loops.
// Prompt file lives in .sisyphus/tmp/ (inside project) so no external_directory needed.
"council-member": {
"*": false,
@@ -70,6 +71,9 @@ const AGENT_RESTRICTIONS: Record<string, Record<string, boolean>> = {
lsp_symbols: true,
lsp_diagnostics: true,
ast_grep_search: true,
call_omo_agent: true,
todowrite: false,
todoread: false,
},
}