feat(agents): add useTaskSystem flag for conditional todo/task discipline prompts
- Sisyphus: buildTaskManagementSection() with todo/task variants - Sisyphus-Junior: buildTodoDisciplineSection() with todo/task variants - Hephaestus: buildTodoDisciplineSection() with todo/task variants - All factory functions accept useTaskSystem parameter (default: false)
This commit is contained in:
+84
-39
@@ -16,6 +16,82 @@ import {
|
||||
|
||||
const MODE: AgentMode = "primary"
|
||||
|
||||
function buildTodoDisciplineSection(useTaskSystem: boolean): string {
|
||||
if (useTaskSystem) {
|
||||
return `## Task Discipline (NON-NEGOTIABLE)
|
||||
|
||||
**Track ALL multi-step work with tasks. This is your execution backbone.**
|
||||
|
||||
### When to Create Tasks (MANDATORY)
|
||||
|
||||
| Trigger | Action |
|
||||
|---------|--------|
|
||||
| 2+ step task | \`TaskCreate\` FIRST, atomic breakdown |
|
||||
| Uncertain scope | \`TaskCreate\` to clarify thinking |
|
||||
| Complex single task | Break down into trackable steps |
|
||||
|
||||
### Workflow (STRICT)
|
||||
|
||||
1. **On task start**: \`TaskCreate\` with atomic steps—no announcements, just create
|
||||
2. **Before each step**: \`TaskUpdate(status="in_progress")\` (ONE at a time)
|
||||
3. **After each step**: \`TaskUpdate(status="completed")\` IMMEDIATELY (NEVER batch)
|
||||
4. **Scope changes**: Update tasks BEFORE proceeding
|
||||
|
||||
### Why This Matters
|
||||
|
||||
- **Execution anchor**: Tasks prevent drift from original request
|
||||
- **Recovery**: If interrupted, tasks enable seamless continuation
|
||||
- **Accountability**: Each task = explicit commitment to deliver
|
||||
|
||||
### Anti-Patterns (BLOCKING)
|
||||
|
||||
| Violation | Why It Fails |
|
||||
|-----------|--------------|
|
||||
| Skipping tasks on multi-step work | Steps get forgotten, user has no visibility |
|
||||
| Batch-completing multiple tasks | Defeats real-time tracking purpose |
|
||||
| Proceeding without \`in_progress\` | No indication of current work |
|
||||
| Finishing without completing tasks | Task appears incomplete |
|
||||
|
||||
**NO TASKS ON MULTI-STEP WORK = INCOMPLETE WORK.**`
|
||||
}
|
||||
|
||||
return `## Todo Discipline (NON-NEGOTIABLE)
|
||||
|
||||
**Track ALL multi-step work with todos. This is your execution backbone.**
|
||||
|
||||
### When to Create Todos (MANDATORY)
|
||||
|
||||
| Trigger | Action |
|
||||
|---------|--------|
|
||||
| 2+ step task | \`todowrite\` FIRST, atomic breakdown |
|
||||
| Uncertain scope | \`todowrite\` to clarify thinking |
|
||||
| Complex single task | Break down into trackable steps |
|
||||
|
||||
### Workflow (STRICT)
|
||||
|
||||
1. **On task start**: \`todowrite\` with atomic steps—no announcements, just create
|
||||
2. **Before each step**: Mark \`in_progress\` (ONE at a time)
|
||||
3. **After each step**: Mark \`completed\` IMMEDIATELY (NEVER batch)
|
||||
4. **Scope changes**: Update todos BEFORE proceeding
|
||||
|
||||
### Why This Matters
|
||||
|
||||
- **Execution anchor**: Todos prevent drift from original request
|
||||
- **Recovery**: If interrupted, todos enable seamless continuation
|
||||
- **Accountability**: Each todo = explicit commitment to deliver
|
||||
|
||||
### Anti-Patterns (BLOCKING)
|
||||
|
||||
| Violation | Why It Fails |
|
||||
|-----------|--------------|
|
||||
| Skipping todos on multi-step work | Steps get forgotten, user has no visibility |
|
||||
| Batch-completing multiple todos | Defeats real-time tracking purpose |
|
||||
| Proceeding without \`in_progress\` | No indication of current work |
|
||||
| Finishing without completing todos | Task appears incomplete |
|
||||
|
||||
**NO TODOS ON MULTI-STEP WORK = INCOMPLETE WORK.**`
|
||||
}
|
||||
|
||||
/**
|
||||
* Hephaestus - The Autonomous Deep Worker
|
||||
*
|
||||
@@ -34,7 +110,8 @@ function buildHephaestusPrompt(
|
||||
availableAgents: AvailableAgent[] = [],
|
||||
availableTools: AvailableTool[] = [],
|
||||
availableSkills: AvailableSkill[] = [],
|
||||
availableCategories: AvailableCategory[] = []
|
||||
availableCategories: AvailableCategory[] = [],
|
||||
useTaskSystem = false
|
||||
): string {
|
||||
const keyTriggers = buildKeyTriggersSection(availableAgents, availableSkills)
|
||||
const toolSelection = buildToolSelectionTable(availableAgents, availableTools, availableSkills)
|
||||
@@ -45,6 +122,7 @@ function buildHephaestusPrompt(
|
||||
const oracleSection = buildOracleSection(availableAgents)
|
||||
const hardBlocks = buildHardBlocksSection()
|
||||
const antiPatterns = buildAntiPatternsSection()
|
||||
const todoDiscipline = buildTodoDisciplineSection(useTaskSystem)
|
||||
|
||||
return `You are Hephaestus, an autonomous deep worker for software engineering.
|
||||
|
||||
@@ -265,41 +343,7 @@ After execution:
|
||||
|
||||
---
|
||||
|
||||
## Todo Discipline (NON-NEGOTIABLE)
|
||||
|
||||
**Track ALL multi-step work with todos. This is your execution backbone.**
|
||||
|
||||
### When to Create Todos (MANDATORY)
|
||||
|
||||
| Trigger | Action |
|
||||
|---------|--------|
|
||||
| 2+ step task | \`todowrite\` FIRST, atomic breakdown |
|
||||
| Uncertain scope | \`todowrite\` to clarify thinking |
|
||||
| Complex single task | Break down into trackable steps |
|
||||
|
||||
### Workflow (STRICT)
|
||||
|
||||
1. **On task start**: \`todowrite\` with atomic steps—no announcements, just create
|
||||
2. **Before each step**: Mark \`in_progress\` (ONE at a time)
|
||||
3. **After each step**: Mark \`completed\` IMMEDIATELY (NEVER batch)
|
||||
4. **Scope changes**: Update todos BEFORE proceeding
|
||||
|
||||
### Why This Matters
|
||||
|
||||
- **Execution anchor**: Todos prevent drift from original request
|
||||
- **Recovery**: If interrupted, todos enable seamless continuation
|
||||
- **Accountability**: Each todo = explicit commitment to deliver
|
||||
|
||||
### Anti-Patterns (BLOCKING)
|
||||
|
||||
| Violation | Why It Fails |
|
||||
|-----------|--------------|
|
||||
| Skipping todos on multi-step work | Steps get forgotten, user has no visibility |
|
||||
| Batch-completing multiple todos | Defeats real-time tracking purpose |
|
||||
| Proceeding without \`in_progress\` | No indication of current work |
|
||||
| Finishing without completing todos | Task appears incomplete |
|
||||
|
||||
**NO TODOS ON MULTI-STEP WORK = INCOMPLETE WORK.**
|
||||
${todoDiscipline}
|
||||
|
||||
---
|
||||
|
||||
@@ -523,14 +567,15 @@ export function createHephaestusAgent(
|
||||
availableAgents?: AvailableAgent[],
|
||||
availableToolNames?: string[],
|
||||
availableSkills?: AvailableSkill[],
|
||||
availableCategories?: AvailableCategory[]
|
||||
availableCategories?: AvailableCategory[],
|
||||
useTaskSystem = false
|
||||
): AgentConfig {
|
||||
const tools = availableToolNames ? categorizeTools(availableToolNames) : []
|
||||
const skills = availableSkills ?? []
|
||||
const categories = availableCategories ?? []
|
||||
const prompt = availableAgents
|
||||
? buildHephaestusPrompt(availableAgents, tools, skills, categories)
|
||||
: buildHephaestusPrompt([], tools, skills, categories)
|
||||
? buildHephaestusPrompt(availableAgents, tools, skills, categories, useTaskSystem)
|
||||
: buildHephaestusPrompt([], tools, skills, categories, useTaskSystem)
|
||||
|
||||
return {
|
||||
description:
|
||||
|
||||
Reference in New Issue
Block a user