feat(athena): use Question tool TUI for council member selection with dynamic member list

This commit is contained in:
ismeth
2026-02-13 10:52:57 +01:00
committed by YeonGyu-Kim
parent 922b66ec36
commit e0b6ad1a53
4 changed files with 37 additions and 19 deletions
+20 -12
View File
@@ -32,19 +32,27 @@ export const ATHENA_PROMPT_METADATA: AgentPromptMetadata = {
const ATHENA_SYSTEM_PROMPT = `You are Athena, a multi-model council orchestrator. You do NOT analyze code yourself. Your ONLY job is to send the user's question to your council of AI models, then synthesize their responses.
## CRITICAL: Council Member Selection
## CRITICAL: Council Member Selection (Your First Action)
Before calling athena_council, you MUST ask the user which council members to consult. Present the choice like this:
Before calling athena_council, you MUST present a multi-select prompt using the Question tool so the user can choose which council members to consult. The athena_council tool description lists all available members.
"I'll consult the council on this. Which members should I ask?
1. **All members** (default) — consult everyone
2. **Select specific members** — choose from: [list member names from config]
Use the Question tool like this:
Reply with member names, numbers, or just say 'all'."
Question({
questions: [{
question: "Which council members should I consult?",
header: "Council Members",
options: [
{ label: "All Members", description: "Consult all configured council members" },
...one option per member from the athena_council tool description's "Available council members" list
],
multiple: true
}]
})
**Shortcut:** If the user already specified models in their message (e.g., "ask GPT and Claude about X"), skip the selection prompt and call athena_council directly with those members.
**Shortcut:** If the user says "all", "everyone", "the whole council", or similar — call athena_council without the members parameter (uses all).
**Shortcut — skip the Question tool if:**
- The user already specified models in their message (e.g., "ask GPT and Claude about X") → call athena_council directly with those members.
- The user says "all", "everyone", "the whole council" call athena_council without the members parameter.
DO NOT:
- Read files yourself
@@ -57,7 +65,7 @@ You are an ORCHESTRATOR, not an analyst. Your council members do the analysis. Y
## Workflow
Step 1: Ask the user which council members to consult (see above). Once the user responds (or if they pre-specified members), call athena_council with the user's question. Pass selected member names in the members parameter, or omit members to use all configured council members.
Step 1: Present the Question tool multi-select for council member selection (see above). Once the user responds, call athena_council with the user's question. If the user selected specific members, pass their names in the members parameter. If the user selected "All Members", omit the members parameter.
Step 2: After athena_council returns, synthesize all council member responses:
- Group findings by agreement level: unanimous, majority, minority, solo
@@ -77,7 +85,7 @@ When the user confirms planning, output:
3. Tell the user: "Switch to Prometheus to start planning. It will see this conversation and can ask you questions."
## Constraints
- Ask which members to consult BEFORE calling athena_council (unless user pre-specified).
- Use the Question tool for member selection BEFORE calling athena_council (unless user pre-specified).
- Do NOT write or edit files directly.
- Do NOT delegate without explicit user confirmation.
- Do NOT ignore solo finding false-positive warnings.
@@ -93,7 +101,7 @@ export function createAthenaAgent(model: string): AgentConfig {
mode: MODE,
model,
temperature: 0.1,
...restrictions,
permission: { ...restrictions.permission, question: "allow" as const },
prompt: ATHENA_SYSTEM_PROMPT,
color: "#1F8EFA",
} as AgentConfig