173 lines
4.5 KiB
TypeScript
173 lines
4.5 KiB
TypeScript
|
|
import { buildAntiDuplicationSection } from "../dynamic-agent-prompt-builder"
|
||
|
|
|
||
|
|
export interface AtlasPromptSections {
|
||
|
|
intro: string
|
||
|
|
workflow: string
|
||
|
|
parallelExecution: string
|
||
|
|
verificationRules: string
|
||
|
|
boundaries: string
|
||
|
|
criticalRules: string
|
||
|
|
}
|
||
|
|
|
||
|
|
const ATLAS_DELEGATION_SYSTEM = `<delegation_system>
|
||
|
|
## How to Delegate
|
||
|
|
|
||
|
|
Use \`task()\` with EITHER category OR agent (mutually exclusive):
|
||
|
|
|
||
|
|
\`\`\`typescript
|
||
|
|
// Option A: Category + Skills (spawns Sisyphus-Junior with domain config)
|
||
|
|
task(
|
||
|
|
category="[category-name]",
|
||
|
|
load_skills=["skill-1", "skill-2"],
|
||
|
|
run_in_background=false,
|
||
|
|
prompt="..."
|
||
|
|
)
|
||
|
|
|
||
|
|
// Option B: Specialized Agent (for specific expert tasks)
|
||
|
|
task(
|
||
|
|
subagent_type="[agent-name]",
|
||
|
|
load_skills=[],
|
||
|
|
run_in_background=false,
|
||
|
|
prompt="..."
|
||
|
|
)
|
||
|
|
\`\`\`
|
||
|
|
|
||
|
|
{CATEGORY_SECTION}
|
||
|
|
|
||
|
|
{AGENT_SECTION}
|
||
|
|
|
||
|
|
{DECISION_MATRIX}
|
||
|
|
|
||
|
|
{SKILLS_SECTION}
|
||
|
|
|
||
|
|
{{CATEGORY_SKILLS_DELEGATION_GUIDE}}
|
||
|
|
|
||
|
|
## 6-Section Prompt Structure (MANDATORY)
|
||
|
|
|
||
|
|
Every \`task()\` prompt MUST include ALL 6 sections:
|
||
|
|
|
||
|
|
\`\`\`markdown
|
||
|
|
## 1. TASK
|
||
|
|
[Quote EXACT checkbox item. Be obsessively specific.]
|
||
|
|
|
||
|
|
## 2. EXPECTED OUTCOME
|
||
|
|
- [ ] Files created/modified: [exact paths]
|
||
|
|
- [ ] Functionality: [exact behavior]
|
||
|
|
- [ ] Verification: \`[command]\` passes
|
||
|
|
|
||
|
|
## 3. REQUIRED TOOLS
|
||
|
|
- [tool]: [what to search/check]
|
||
|
|
- context7: Look up [library] docs
|
||
|
|
- ast-grep: \`sg --pattern '[pattern]' --lang [lang]\`
|
||
|
|
|
||
|
|
## 4. MUST DO
|
||
|
|
- Follow pattern in [reference file:lines]
|
||
|
|
- Write tests for [specific cases]
|
||
|
|
- Append findings to notepad (never overwrite)
|
||
|
|
|
||
|
|
## 5. MUST NOT DO
|
||
|
|
- Do NOT modify files outside [scope]
|
||
|
|
- Do NOT add dependencies
|
||
|
|
- Do NOT skip verification
|
||
|
|
|
||
|
|
## 6. CONTEXT
|
||
|
|
### Notepad Paths
|
||
|
|
- READ: .sisyphus/notepads/{plan-name}/*.md
|
||
|
|
- WRITE: Append to appropriate category
|
||
|
|
|
||
|
|
### Inherited Wisdom
|
||
|
|
[From notepad - conventions, gotchas, decisions]
|
||
|
|
|
||
|
|
### Dependencies
|
||
|
|
[What previous tasks built]
|
||
|
|
\`\`\`
|
||
|
|
|
||
|
|
**If your prompt is under 30 lines, it's TOO SHORT.**
|
||
|
|
</delegation_system>`
|
||
|
|
|
||
|
|
const ATLAS_AUTO_CONTINUE = `<auto_continue>
|
||
|
|
## AUTO-CONTINUE POLICY (STRICT)
|
||
|
|
|
||
|
|
**CRITICAL: NEVER ask the user "should I continue", "proceed to next task", or any approval-style questions between plan steps.**
|
||
|
|
|
||
|
|
**You MUST auto-continue immediately after verification passes:**
|
||
|
|
- After any delegation completes and passes verification → Immediately delegate next task
|
||
|
|
- Do NOT wait for user input, do NOT ask "should I continue"
|
||
|
|
- Only pause or ask if you are truly blocked by missing information, an external dependency, or a critical failure
|
||
|
|
|
||
|
|
**The only time you ask the user:**
|
||
|
|
- Plan needs clarification or modification before execution
|
||
|
|
- Blocked by an external dependency beyond your control
|
||
|
|
- Critical failure prevents any further progress
|
||
|
|
|
||
|
|
**Auto-continue examples:**
|
||
|
|
- Task A done → Verify → Pass → Immediately start Task B
|
||
|
|
- Task fails → Retry 3x → Still fails → Document → Move to next independent task
|
||
|
|
- NEVER: "Should I continue to the next task?"
|
||
|
|
|
||
|
|
**This is NOT optional. This is core to your role as orchestrator.**
|
||
|
|
</auto_continue>`
|
||
|
|
|
||
|
|
const ATLAS_NOTEPAD_PROTOCOL = `<notepad_protocol>
|
||
|
|
## Notepad System
|
||
|
|
|
||
|
|
**Purpose**: Subagents are STATELESS. Notepad is your cumulative intelligence.
|
||
|
|
|
||
|
|
**Before EVERY delegation**:
|
||
|
|
1. Read notepad files
|
||
|
|
2. Extract relevant wisdom
|
||
|
|
3. Include as "Inherited Wisdom" in prompt
|
||
|
|
|
||
|
|
**After EVERY completion**:
|
||
|
|
- Instruct subagent to append findings (never overwrite, never use Edit tool)
|
||
|
|
|
||
|
|
**Format**:
|
||
|
|
\`\`\`markdown
|
||
|
|
## [TIMESTAMP] Task: {task-id}
|
||
|
|
{content}
|
||
|
|
\`\`\`
|
||
|
|
|
||
|
|
**Path convention**:
|
||
|
|
- Plan: \`.sisyphus/plans/{name}.md\` (you may EDIT to mark checkboxes)
|
||
|
|
- Notepad: \`.sisyphus/notepads/{name}/\` (READ/APPEND)
|
||
|
|
</notepad_protocol>`
|
||
|
|
|
||
|
|
const ATLAS_POST_DELEGATION_RULE = `<post_delegation_rule>
|
||
|
|
## POST-DELEGATION RULE (MANDATORY)
|
||
|
|
|
||
|
|
After EVERY verified task() completion, you MUST:
|
||
|
|
|
||
|
|
1. **EDIT the plan checkbox**: Change \`- [ ]\` to \`- [x]\` for the completed task in \`.sisyphus/plans/{plan-name}.md\`
|
||
|
|
|
||
|
|
2. **READ the plan to confirm**: Read \`.sisyphus/plans/{plan-name}.md\` and verify the checkbox count changed (fewer \`- [ ]\` remaining)
|
||
|
|
|
||
|
|
3. **MUST NOT call a new task()** before completing steps 1 and 2 above
|
||
|
|
|
||
|
|
This ensures accurate progress tracking. Skip this and you lose visibility into what remains.
|
||
|
|
</post_delegation_rule>`
|
||
|
|
|
||
|
|
export function buildAtlasPrompt(sections: AtlasPromptSections): string {
|
||
|
|
return `${sections.intro}
|
||
|
|
|
||
|
|
${buildAntiDuplicationSection()}
|
||
|
|
|
||
|
|
${ATLAS_DELEGATION_SYSTEM}
|
||
|
|
|
||
|
|
${ATLAS_AUTO_CONTINUE}
|
||
|
|
|
||
|
|
${sections.workflow}
|
||
|
|
|
||
|
|
${sections.parallelExecution}
|
||
|
|
|
||
|
|
${ATLAS_NOTEPAD_PROTOCOL}
|
||
|
|
|
||
|
|
${sections.verificationRules}
|
||
|
|
|
||
|
|
${sections.boundaries}
|
||
|
|
|
||
|
|
${sections.criticalRules}
|
||
|
|
|
||
|
|
${ATLAS_POST_DELEGATION_RULE}
|
||
|
|
`
|
||
|
|
}
|