diff --git a/src/agents/athena/guidance/audit.ts b/src/agents/athena/guidance/audit.ts index c4823eee4..9e40030e3 100644 --- a/src/agents/athena/guidance/audit.ts +++ b/src/agents/athena/guidance/audit.ts @@ -1,3 +1,5 @@ +import { FOLLOWUP_OR_DONE_QUESTION_BODY } from "./shared-action-paths" + export const AUDIT_GUIDANCE = ` Use AUDIT synthesis. @@ -126,14 +128,7 @@ Question({ Question({ questions: [{ question: "No findings were selected for action. What should we do next?", - header: "Next Step", - options: [ - { label: "Ask follow-up", description: "Ask a clarifying question and run another council pass" }, - { label: "Done", description: "No further action needed" } - ], - multiple: false - }] -}) +${FOLLOWUP_OR_DONE_QUESTION_BODY} 5) If selected findings exist, ask what action to take on the selected findings: Question({ diff --git a/src/agents/athena/guidance/diagnose.ts b/src/agents/athena/guidance/diagnose.ts index 8d633f773..15c9b1f88 100644 --- a/src/agents/athena/guidance/diagnose.ts +++ b/src/agents/athena/guidance/diagnose.ts @@ -1,3 +1,5 @@ +import { FOLLOWUP_OR_DONE_QUESTION_BODY } from "./shared-action-paths" + export const DIAGNOSE_GUIDANCE = ` Use DIAGNOSE synthesis. @@ -15,14 +17,7 @@ Path type: ACTIONABLE. Question({ questions: [{ question: "No actionable findings were identified. What should we do next?", - header: "Next Step", - options: [ - { label: "Ask follow-up", description: "Ask a clarifying question and run another council pass" }, - { label: "Done", description: "No further action needed" } - ], - multiple: false - }] -}) +${FOLLOWUP_OR_DONE_QUESTION_BODY} 3) If an actionable fix candidate exists, ask action directly (no findings multi-select): Question({ diff --git a/src/agents/athena/guidance/shared-action-paths.ts b/src/agents/athena/guidance/shared-action-paths.ts new file mode 100644 index 000000000..6e54f934a --- /dev/null +++ b/src/agents/athena/guidance/shared-action-paths.ts @@ -0,0 +1,44 @@ +export const EXECUTION_AGENT_OPTIONS = `\ + { label: "Hephaestus", description: "Direct implementation with Hephaestus" }, + { label: "Sisyphus", description: "Implementation with Sisyphus" }, + { label: "Sisyphus ultrawork", description: "Implementation with Sisyphus using ultrawork mode" }` + +export const WRITE_DOCUMENT_OPTION = + ' { label: "Write to document", description: "Save to .sisyphus/athena/notes/ (named after this council session)" }' + +export const DONE_OPTION = + ' { label: "Done", description: "No further action needed" }' + +export const DONE_QUESTION_TAIL = `\ +${DONE_OPTION} + ], + multiple: false + }] +})` + +export const WRITE_DOCUMENT_ACTION = + '- Write to document -> write the document to the ".sisyphus/athena/notes/" directory using the council session name from the council_finalize archive_dir, then report the exact path.' + +export const ASK_FOLLOWUP_ACTION = + "- Ask follow-up -> ask user then restart the council workflow from Step 3 (intent classification)." + +export const DONE_ACTION = "- Done -> acknowledge and end." + +export const COMMON_ACTION_TAIL = `${WRITE_DOCUMENT_ACTION} +${ASK_FOLLOWUP_ACTION} +${DONE_ACTION}` + +export const FOLLOWUP_OR_DONE_QUESTION_BODY = `\ + header: "Next Step", + options: [ + { label: "Ask follow-up", description: "Ask a clarifying question and run another council pass" }, +${DONE_QUESTION_TAIL}` + +export const EXECUTION_AGENT_QUESTION_BODY = `\ + header: "Execution Agent", + options: [ +${EXECUTION_AGENT_OPTIONS} + ], + multiple: false + }] +})`