From 4bc4b36e750ec5856a34bcb12979441c1977c82a Mon Sep 17 00:00:00 2001 From: ismeth Date: Thu, 19 Feb 2026 02:21:33 +0100 Subject: [PATCH] fix(athena): update council member guards for new agent key format 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 --- src/hooks/keyword-detector/hook.ts | 2 +- src/plugin/tool-execute-before.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/hooks/keyword-detector/hook.ts b/src/hooks/keyword-detector/hook.ts index 8af85a30f..4a0c8269f 100644 --- a/src/hooks/keyword-detector/hook.ts +++ b/src/hooks/keyword-detector/hook.ts @@ -48,7 +48,7 @@ export function createKeywordDetectorHook(ctx: PluginInput, _collector?: Context // Athena is a council orchestrator — skip all keyword injections. // search/analyze modes tell the agent to use explore agents and grep directly, - // which conflicts with Athena's job of calling athena_council for council fan-out. + // which conflicts with Athena's job of launching council members via task calls. // Use getAgentConfigKey to handle display name remapping ("Athena (Council)" → "athena"). const agentConfigKey = currentAgent ? getAgentConfigKey(currentAgent) : undefined if (agentConfigKey === "athena") { diff --git a/src/plugin/tool-execute-before.ts b/src/plugin/tool-execute-before.ts index 718d18655..06210ff7d 100644 --- a/src/plugin/tool-execute-before.ts +++ b/src/plugin/tool-execute-before.ts @@ -9,6 +9,7 @@ import { parseRalphLoopArguments } from "../hooks/ralph-loop/command-arguments" import { getAgentConfigKey } from "../shared/agent-display-names" import type { CreatedHooks } from "../create-hooks" +import { COUNCIL_MEMBER_KEY_PREFIX } from "../agents/builtin-agents/council-member-agents" export function createToolExecuteBeforeHandler(args: { ctx: PluginContext @@ -27,7 +28,7 @@ export function createToolExecuteBeforeHandler(args: { const tasks = backgroundManager.getTasksByParentSession(sessionID) return tasks.some((task) => - task.agent === "council-member" && + (task.agent === "council-member" || task.agent.startsWith(COUNCIL_MEMBER_KEY_PREFIX)) && (task.status === "pending" || task.status === "running") ) }