merge: upstream/dev into fix/toolcall-format
Resolved conflict in dynamic-agent-prompt-builder.ts by keeping both buildToolCallFormatSection() and buildNonClaudePlannerSection() functions.
This commit is contained in:
@@ -277,12 +277,11 @@ Briefly announce "Consulting Oracle for [reason]" before invocation.
|
||||
|
||||
### Oracle Background Task Policy:
|
||||
|
||||
**You MUST collect Oracle results before your final answer. No exceptions.**
|
||||
**Collect Oracle results before your final answer. No exceptions.**
|
||||
|
||||
- Oracle may take several minutes. This is normal and expected.
|
||||
- When Oracle is running and you finish your own exploration/analysis, your next action is \`background_output(task_id="...")\` on Oracle — NOT delivering a final answer.
|
||||
- Oracle catches blind spots you cannot see — its value is HIGHEST when you think you don't need it.
|
||||
- **NEVER** cancel Oracle. **NEVER** use \`background_cancel(all=true)\` when Oracle is running. Cancel disposable tasks (explore, librarian) individually by taskId instead.
|
||||
- Oracle takes minutes. When done with your own work: **end your response** — wait for the \`<system-reminder>\`.
|
||||
- Do NOT poll \`background_output\` on a running Oracle. The notification will come.
|
||||
- Never cancel Oracle.
|
||||
</Oracle_Usage>`
|
||||
}
|
||||
|
||||
@@ -292,8 +291,8 @@ export function buildHardBlocksSection(): string {
|
||||
"- Commit without explicit request — **Never**",
|
||||
"- Speculate about unread code — **Never**",
|
||||
"- Leave code in broken state after failures — **Never**",
|
||||
"- `background_cancel(all=true)` when Oracle is running — **Never.** Cancel tasks individually by taskId.",
|
||||
"- Delivering final answer before collecting Oracle result — **Never.** Always `background_output` Oracle first.",
|
||||
"- `background_cancel(all=true)` — **Never.** Always cancel individually by taskId.",
|
||||
"- Delivering final answer before collecting Oracle result — **Never.**",
|
||||
]
|
||||
|
||||
return `## Hard Blocks (NEVER violate)
|
||||
@@ -308,8 +307,8 @@ export function buildAntiPatternsSection(): string {
|
||||
"- **Testing**: Deleting failing tests to \"pass\"",
|
||||
"- **Search**: Firing agents for single-line typos or obvious syntax errors",
|
||||
"- **Debugging**: Shotgun debugging, random changes",
|
||||
"- **Background Tasks**: `background_cancel(all=true)` — always cancel individually by taskId",
|
||||
"- **Oracle**: Skipping Oracle results when Oracle was launched — ALWAYS collect via `background_output`",
|
||||
"- **Background Tasks**: Polling `background_output` on running tasks — end response and wait for notification",
|
||||
"- **Oracle**: Delivering answer without collecting Oracle results",
|
||||
]
|
||||
|
||||
return `## Anti-Patterns (BLOCKING violations)
|
||||
@@ -334,6 +333,22 @@ When you need to call a tool:
|
||||
Your tool calls are processed automatically. Just invoke the tool - do not format the call yourself.`
|
||||
}
|
||||
|
||||
export function buildNonClaudePlannerSection(model: string): string {
|
||||
const isNonClaude = !model.toLowerCase().includes('claude')
|
||||
if (!isNonClaude) return ""
|
||||
|
||||
return `### Plan Agent Dependency (Non-Claude)
|
||||
|
||||
Multi-step task? **ALWAYS consult Plan Agent first.** Do NOT start implementation without a plan.
|
||||
|
||||
- Single-file fix or trivial change → proceed directly
|
||||
- Anything else (2+ steps, unclear scope, architecture) → \`task(subagent_type="plan", ...)\` FIRST
|
||||
- Use \`session_id\` to resume the same Plan Agent — ask follow-up questions aggressively
|
||||
- If ANY part of the task is ambiguous, ask Plan Agent before guessing
|
||||
|
||||
Plan Agent returns a structured work breakdown with parallel execution opportunities. Follow it.`
|
||||
}
|
||||
|
||||
export function buildDeepParallelSection(model: string, categories: AvailableCategory[]): string {
|
||||
const isNonClaude = !model.toLowerCase().includes('claude')
|
||||
const hasDeepCategory = categories.some(c => c.name === 'deep')
|
||||
@@ -342,12 +357,13 @@ export function buildDeepParallelSection(model: string, categories: AvailableCat
|
||||
|
||||
return `### Deep Parallel Delegation
|
||||
|
||||
For implementation tasks, actively decompose and delegate to \`deep\` category agents in parallel.
|
||||
Delegate EVERY independent unit to a \`deep\` agent in parallel (\`run_in_background=true\`).
|
||||
If a task decomposes into 4 independent units, spawn 4 agents simultaneously — not 1 at a time.
|
||||
|
||||
1. Break the implementation into independent work units
|
||||
2. Maximize parallel deep agents — spawn one per independent unit (\`run_in_background=true\`)
|
||||
3. Give each agent a GOAL, not step-by-step instructions — deep agents explore and solve autonomously
|
||||
4. Collect results, integrate, verify coherence`
|
||||
1. Decompose the implementation into independent work units
|
||||
2. Assign one \`deep\` agent per unit — all via \`run_in_background=true\`
|
||||
3. Give each agent a clear GOAL with success criteria, not step-by-step instructions
|
||||
4. Collect all results, integrate, verify coherence across units`
|
||||
}
|
||||
|
||||
export function buildUltraworkSection(
|
||||
|
||||
Reference in New Issue
Block a user