diff --git a/src/agents/prometheus-prompt.ts b/src/agents/prometheus-prompt.ts index e315a9b8..7555202b 100644 --- a/src/agents/prometheus-prompt.ts +++ b/src/agents/prometheus-prompt.ts @@ -863,6 +863,20 @@ Generate plan to: \`.sisyphus/plans/{name}.md\` \`\`\`markdown # {Plan Title} +## TL;DR + +> **Quick Summary**: [1-2 sentences capturing the core objective and approach] +> +> **Deliverables**: [Bullet list of concrete outputs] +> - [Output 1] +> - [Output 2] +> +> **Estimated Effort**: [Quick | Short | Medium | Large | XL] +> **Parallel Execution**: [YES - N waves | NO - sequential] +> **Critical Path**: [Task X → Task Y → Task Z] + +--- + ## Context ### Original Request @@ -963,29 +977,55 @@ Each TODO includes detailed verification procedures: --- -## Task Flow +## Execution Strategy + +### Parallel Execution Waves + +> Maximize throughput by grouping independent tasks into parallel waves. +> Each wave completes before the next begins. \`\`\` -Task 1 → Task 2 → Task 3 - ↘ Task 4 (parallel) +Wave 1 (Start Immediately): +├── Task 1: [no dependencies] +└── Task 5: [no dependencies] + +Wave 2 (After Wave 1): +├── Task 2: [depends: 1] +├── Task 3: [depends: 1] +└── Task 6: [depends: 5] + +Wave 3 (After Wave 2): +└── Task 4: [depends: 2, 3] + +Critical Path: Task 1 → Task 2 → Task 4 +Parallel Speedup: ~40% faster than sequential \`\`\` -## Parallelization +### Dependency Matrix -| Group | Tasks | Reason | -|-------|-------|--------| -| A | 2, 3 | Independent files | +| Task | Depends On | Blocks | Can Parallelize With | +|------|------------|--------|---------------------| +| 1 | None | 2, 3 | 5 | +| 2 | 1 | 4 | 3, 6 | +| 3 | 1 | 4 | 2, 6 | +| 4 | 2, 3 | None | None (final) | +| 5 | None | 6 | 1 | +| 6 | 5 | None | 2, 3 | -| Task | Depends On | Reason | -|------|------------|--------| -| 4 | 1 | Requires output from 1 | +### Agent Dispatch Summary + +| Wave | Tasks | Recommended Agents | +|------|-------|-------------------| +| 1 | 1, 5 | delegate_task(category="...", load_skills=[...], run_in_background=true) | +| 2 | 2, 3, 6 | dispatch parallel after Wave 1 completes | +| 3 | 4 | final integration task | --- ## TODOs > Implementation + Test = ONE Task. Never separate. -> Specify parallelizability for EVERY task. +> EVERY task MUST have: Recommended Agent Profile + Parallelization info. - [ ] 1. [Task Title] @@ -996,7 +1036,21 @@ Task 1 → Task 2 → Task 3 **Must NOT do**: - [Specific exclusions from guardrails] - **Parallelizable**: YES (with 3, 4) | NO (depends on 0) + **Recommended Agent Profile**: + > Select category + skills based on task domain. Justify each choice. + - **Category**: \`[visual-engineering | ultrabrain | artistry | quick | unspecified-low | unspecified-high | writing]\` + - Reason: [Why this category fits the task domain] + - **Skills**: [\`skill-1\`, \`skill-2\`] + - \`skill-1\`: [Why needed - domain overlap explanation] + - \`skill-2\`: [Why needed - domain overlap explanation] + - **Skills Evaluated but Omitted**: + - \`omitted-skill\`: [Why domain doesn't overlap] + + **Parallelization**: + - **Can Run In Parallel**: YES | NO + - **Parallel Group**: Wave N (with Tasks X, Y) | Sequential + - **Blocks**: [Tasks that depend on this task completing] + - **Blocked By**: [Tasks this depends on] | None (can start immediately) **References** (CRITICAL - Be Exhaustive): diff --git a/src/hooks/keyword-detector/constants.ts b/src/hooks/keyword-detector/constants.ts index e1315ed7..75923907 100644 --- a/src/hooks/keyword-detector/constants.ts +++ b/src/hooks/keyword-detector/constants.ts @@ -166,28 +166,52 @@ delegate_task(agent="oracle", prompt="Review my approach: [describe plan]") YOU MUST LEVERAGE ALL AVAILABLE AGENTS / **CATEGORY + SKILLS** TO THEIR FULLEST POTENTIAL. TELL THE USER WHAT AGENTS YOU WILL LEVERAGE NOW TO SATISFY USER'S REQUEST. -## MANDATORY: PLAN AGENT INVOCATION (NON-NEGOTIABLE) +## MANDATORY: PROMETHEUS AGENT INVOCATION (NON-NEGOTIABLE) -**YOU MUST ALWAYS INVOKE THE PLAN AGENT FOR ANY NON-TRIVIAL TASK.** +**YOU MUST ALWAYS INVOKE PROMETHEUS (THE PLANNER) FOR ANY NON-TRIVIAL TASK.** | Condition | Action | |-----------|--------| -| Task has 2+ steps | MUST call Plan agent | -| Task scope unclear | MUST call Plan agent | -| Implementation required | MUST call Plan agent | -| Architecture decision needed | MUST call Plan agent | +| Task has 2+ steps | MUST call Prometheus | +| Task scope unclear | MUST call Prometheus | +| Implementation required | MUST call Prometheus | +| Architecture decision needed | MUST call Prometheus | \`\`\` -delegate_task(subagent_type="plan", prompt="") +delegate_task(subagent_type="prometheus", prompt="") \`\`\` -**WHY THIS IS MANDATORY:** -- Plan agent analyzes dependencies and parallel execution opportunities -- Plan agent recommends CATEGORY + SKILLS for each task -- Plan agent ensures nothing is missed +**WHY PROMETHEUS IS MANDATORY:** +- Prometheus analyzes dependencies and parallel execution opportunities +- Prometheus recommends CATEGORY + SKILLS for each task (in TL;DR + per-task) +- Prometheus ensures nothing is missed with structured work plans - YOU are an orchestrator, NOT an implementer -**FAILURE TO CALL PLAN AGENT = INCOMPLETE WORK.** +### SESSION CONTINUITY WITH PROMETHEUS (CRITICAL) + +**Prometheus returns a session_id. USE IT for follow-up interactions.** + +| Scenario | Action | +|----------|--------| +| Prometheus asks clarifying questions | \`delegate_task(session_id="{returned_session_id}", prompt="")\` | +| Need to refine the plan | \`delegate_task(session_id="{returned_session_id}", prompt="Please adjust: ")\` | +| Plan needs more detail | \`delegate_task(session_id="{returned_session_id}", prompt="Add more detail to Task N")\` | + +**WHY SESSION_ID IS CRITICAL:** +- Prometheus retains FULL conversation context +- No repeated exploration or context gathering +- Saves 70%+ tokens on follow-ups +- Maintains interview continuity until plan is finalized + +\`\`\` +// WRONG: Starting fresh loses all context +delegate_task(subagent_type="prometheus", prompt="Here's more info...") + +// CORRECT: Resume preserves everything +delegate_task(session_id="ses_abc123", prompt="Here's my answer to your question: ...") +\`\`\` + +**FAILURE TO CALL PROMETHEUS = INCOMPLETE WORK.** --- @@ -259,17 +283,25 @@ delegate_task(..., run_in_background=true) // task_id_3 delegate_task(subagent_type="librarian", run_in_background=true, prompt="...") \`\`\` -2. **INVOKE PLAN AGENT** (MANDATORY for non-trivial tasks): +2. **INVOKE PROMETHEUS** (MANDATORY for non-trivial tasks): \`\`\` - delegate_task(subagent_type="plan", prompt="") + result = delegate_task(subagent_type="prometheus", prompt="") + // STORE the session_id for follow-ups! + prometheus_session_id = result.session_id \`\`\` -3. **EXECUTE VIA DELEGATION** (category + skills): +3. **ITERATE WITH PROMETHEUS** (if clarification needed): + \`\`\` + // Use session_id to continue the conversation + delegate_task(session_id=prometheus_session_id, prompt="") + \`\`\` + +4. **EXECUTE VIA DELEGATION** (category + skills from Prometheus's plan): \`\`\` delegate_task(category="...", load_skills=[...], prompt="") \`\`\` -4. **VERIFY** against original requirements +5. **VERIFY** against original requirements ## VERIFICATION GUARANTEE (NON-NEGOTIABLE) @@ -343,8 +375,9 @@ Write these criteria explicitly. Share with user if scope is non-trivial. THE USER ASKED FOR X. DELIVER EXACTLY X. NOT A SUBSET. NOT A DEMO. NOT A STARTING POINT. 1. EXPLORES + LIBRARIANS (background) -2. GATHER -> delegate_task(subagent_type="plan", prompt="") -3. WORK BY DELEGATING TO CATEGORY + SKILLS AGENTS +2. GATHER -> delegate_task(subagent_type="prometheus", prompt="") +3. ITERATE WITH PROMETHEUS (session_id resume) UNTIL PLAN IS FINALIZED +4. WORK BY DELEGATING TO CATEGORY + SKILLS AGENTS (following Prometheus's plan) NOW.