drizzy-agent 0.6.2 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +3 -3
  2. package/dist/agents/builtin-agents/{atlas-agent.d.ts → orchestrator-agent.d.ts} +1 -1
  3. package/dist/agents/{atlas → orchestrator}/agent.d.ts +9 -9
  4. package/dist/agents/{atlas → orchestrator}/default.d.ts +3 -3
  5. package/dist/agents/{atlas → orchestrator}/gemini.d.ts +3 -3
  6. package/dist/agents/{atlas → orchestrator}/gpt.d.ts +3 -3
  7. package/dist/agents/orchestrator/index.d.ts +2 -0
  8. package/dist/agents/{atlas → orchestrator}/prompt-section-builder.d.ts +1 -1
  9. package/dist/agents/types.d.ts +2 -2
  10. package/dist/cli/index.js +26 -26
  11. package/dist/config/schema/agent-names.d.ts +3 -3
  12. package/dist/config/schema/agent-overrides.d.ts +1 -1
  13. package/dist/config/schema/drizzy-agent-config.d.ts +2 -2
  14. package/dist/config/schema/hooks.d.ts +1 -1
  15. package/dist/create-hooks.d.ts +1 -1
  16. package/dist/drizzy-agent.schema.json +2 -2
  17. package/dist/features/boulder-state/types.d.ts +1 -1
  18. package/dist/features/builtin-commands/templates/start-work.d.ts +1 -1
  19. package/dist/features/hook-message-injector/injector.d.ts +1 -1
  20. package/dist/hooks/index.d.ts +1 -1
  21. package/dist/hooks/{atlas → orchestrator}/event-handler.d.ts +3 -3
  22. package/dist/hooks/orchestrator/hook-name.d.ts +1 -0
  23. package/dist/hooks/orchestrator/idle-event.d.ts +8 -0
  24. package/dist/hooks/orchestrator/index.d.ts +3 -0
  25. package/dist/hooks/{atlas/atlas-hook.d.ts → orchestrator/orchestrator-hook.d.ts} +2 -2
  26. package/dist/hooks/{atlas → orchestrator}/types.d.ts +1 -1
  27. package/dist/hooks/planner-md-only/agent-resolution.d.ts +1 -1
  28. package/dist/index.js +358 -151
  29. package/dist/plugin/hooks/create-continuation-hooks.d.ts +2 -2
  30. package/dist/shared/agent-display-names.d.ts +1 -1
  31. package/dist/shared/agent-model-defaults.d.ts +2 -2
  32. package/package.json +12 -12
  33. package/dist/agents/atlas/index.d.ts +0 -2
  34. package/dist/hooks/atlas/hook-name.d.ts +0 -1
  35. package/dist/hooks/atlas/idle-event.d.ts +0 -8
  36. package/dist/hooks/atlas/index.d.ts +0 -3
  37. /package/dist/hooks/{atlas → orchestrator}/boulder-continuation-injector.d.ts +0 -0
  38. /package/dist/hooks/{atlas → orchestrator}/coder-path.d.ts +0 -0
  39. /package/dist/hooks/{atlas → orchestrator}/is-abort-error.d.ts +0 -0
  40. /package/dist/hooks/{atlas → orchestrator}/recent-model-resolver.d.ts +0 -0
  41. /package/dist/hooks/{atlas → orchestrator}/session-last-agent.d.ts +0 -0
  42. /package/dist/hooks/{atlas → orchestrator}/subagent-session-id.d.ts +0 -0
  43. /package/dist/hooks/{atlas → orchestrator}/system-reminder-templates.d.ts +0 -0
  44. /package/dist/hooks/{atlas → orchestrator}/tool-execute-after.d.ts +0 -0
  45. /package/dist/hooks/{atlas → orchestrator}/tool-execute-before.d.ts +0 -0
  46. /package/dist/hooks/{atlas → orchestrator}/verification-reminders.d.ts +0 -0
  47. /package/dist/hooks/{atlas → orchestrator}/write-edit-tool-policy.d.ts +0 -0
package/dist/index.js CHANGED
@@ -16072,8 +16072,8 @@ var AGENT_NAME_MAP = {
16072
16072
  planner: "planner",
16073
16073
  "Prometheus (Planner)": "planner",
16074
16074
  prometheus: "planner",
16075
- Atlas: "atlas",
16076
- atlas: "atlas",
16075
+ Orchestrator: "orchestrator",
16076
+ orchestrator: "orchestrator",
16077
16077
  "Plan Consultant": "plan-consultant",
16078
16078
  metis: "plan-consultant",
16079
16079
  "plan-consultant": "plan-consultant",
@@ -16099,7 +16099,7 @@ var BUILTIN_AGENT_NAMES = new Set([
16099
16099
  "plan-reviewer",
16100
16100
  "planner",
16101
16101
  "prometheus",
16102
- "atlas",
16102
+ "orchestrator",
16103
16103
  "build"
16104
16104
  ]);
16105
16105
  function migrateAgentNames(agents) {
@@ -16117,7 +16117,7 @@ function migrateAgentNames(agents) {
16117
16117
  // src/shared/migration/hook-names.ts
16118
16118
  var HOOK_NAME_MAP = {
16119
16119
  "anthropic-auto-compact": "anthropic-context-window-limit-recovery",
16120
- "coder-orchestrator": "atlas",
16120
+ "coder-orchestrator": "orchestrator",
16121
16121
  "coder-gpt-hephaestus-reminder": "no-coder-gpt",
16122
16122
  "no-coder-gpt": "no-coder-gpt",
16123
16123
  "coder-junior-notepad": "coder-junior-notepad",
@@ -16621,7 +16621,7 @@ var AGENT_DISPLAY_NAMES = {
16621
16621
  coder: "Coder",
16622
16622
  gptcoder: "GPTCoder",
16623
16623
  planner: "Planner",
16624
- atlas: "Atlas (Plan Executor)",
16624
+ orchestrator: "Orchestrator",
16625
16625
  "coder-junior": "Coder Junior",
16626
16626
  planConsultant: "Plan Consultant",
16627
16627
  planReviewer: "Plan Reviewer",
@@ -16758,7 +16758,7 @@ var AGENT_MODEL_DEFAULTS = {
16758
16758
  ],
16759
16759
  includeInInstall: true
16760
16760
  },
16761
- atlas: {
16761
+ orchestrator: {
16762
16762
  chain: [{ providers: ["kimi-for-coding"], model: "k2p5" }, { providers: CLAUDE_PROVIDERS, model: "claude-sonnet-4-6" }, { providers: CLAUDE_PROVIDERS, model: "claude-sonnet-4-5" }, { providers: OPENAI_PROVIDERS, model: "gpt-5.4", variant: "medium" }, { providers: GEMINI_PROVIDERS, model: "gemini-3.1-pro" }],
16763
16763
  includeInInstall: true
16764
16764
  },
@@ -16869,8 +16869,8 @@ var LEGACY_AGENT_REQUIREMENT_OVERRIDES = {
16869
16869
  gptcoder: {
16870
16870
  requiresProvider: AGENT_MODEL_DEFAULTS.gptcoder.requiresAnyProvider
16871
16871
  },
16872
- atlas: {
16873
- fallbackChain: pickFallbackEntries(AGENT_MODEL_DEFAULTS.atlas.chain, ["claude-sonnet-4-6", "gpt-5.4"])
16872
+ orchestrator: {
16873
+ fallbackChain: pickFallbackEntries(AGENT_MODEL_DEFAULTS.orchestrator.chain, ["claude-sonnet-4-6", "gpt-5.4"])
16874
16874
  }
16875
16875
  };
16876
16876
  var LEGACY_CATEGORY_REQUIREMENT_OVERRIDES = {
@@ -17813,7 +17813,7 @@ async function isCallerOrchestrator(sessionID, client) {
17813
17813
  if (isSqliteBackend() && client) {
17814
17814
  try {
17815
17815
  const nearest2 = await findNearestMessageWithFieldsFromSDK(client, sessionID);
17816
- return getAgentConfigKey(nearest2?.agent ?? "") === "atlas";
17816
+ return getAgentConfigKey(nearest2?.agent ?? "") === "orchestrator";
17817
17817
  } catch (error) {
17818
17818
  log("[session-utils] SDK orchestrator check failed", { sessionID, error: String(error) });
17819
17819
  return false;
@@ -17823,7 +17823,7 @@ async function isCallerOrchestrator(sessionID, client) {
17823
17823
  if (!messageDir)
17824
17824
  return false;
17825
17825
  const nearest = findNearestMessageWithFields(messageDir);
17826
- return getAgentConfigKey(nearest?.agent ?? "") === "atlas";
17826
+ return getAgentConfigKey(nearest?.agent ?? "") === "orchestrator";
17827
17827
  }
17828
17828
  // src/shared/tmux/constants.ts
17829
17829
  var POLL_INTERVAL_BACKGROUND_MS = 2000;
@@ -40904,7 +40904,7 @@ function clearAgentUsageState(sessionID) {
40904
40904
  var ORCHESTRATOR_AGENTS = new Set([
40905
40905
  "coder",
40906
40906
  "coder-junior",
40907
- "atlas",
40907
+ "orchestrator",
40908
40908
  "gptcoder",
40909
40909
  "planner"
40910
40910
  ]);
@@ -42536,7 +42536,7 @@ function buildReminderMessage(availableSkills) {
42536
42536
  var TARGET_AGENTS = new Set([
42537
42537
  "coder",
42538
42538
  "coder-junior",
42539
- "atlas"
42539
+ "orchestrator"
42540
42540
  ]);
42541
42541
  var DELEGATABLE_WORK_TOOLS = new Set([
42542
42542
  "edit",
@@ -42568,7 +42568,7 @@ function createCategorySkillReminderHook(_ctx, availableSkills = []) {
42568
42568
  if (!agent)
42569
42569
  return false;
42570
42570
  const agentKey = getAgentConfigKey(agent);
42571
- return TARGET_AGENTS.has(agentKey) || agentKey.includes("coder") || agentKey.includes("atlas");
42571
+ return TARGET_AGENTS.has(agentKey) || agentKey.includes("coder") || agentKey.includes("orchestrator");
42572
42572
  }
42573
42573
  const toolExecuteAfter = async (input, output) => {
42574
42574
  const { tool, sessionID } = input;
@@ -44899,7 +44899,7 @@ var START_WORK_TEMPLATE = `You are starting a Coder work session.
44899
44899
  }
44900
44900
  \`\`\`
44901
44901
 
44902
- 6. **Read the plan file** and start executing tasks according to atlas workflow
44902
+ 6. **Read the plan file** and start executing tasks according to orchestrator workflow
44903
44903
 
44904
44904
  ## OUTPUT FORMAT
44905
44905
 
@@ -44946,7 +44946,7 @@ Reading plan and beginning execution...
44946
44946
  - Always update boulder.json BEFORE starting work
44947
44947
  - Always set worktree_path in boulder.json before executing any tasks
44948
44948
  - Read the FULL plan file before delegating any tasks
44949
- - Follow atlas delegation protocols (7-section format)`;
44949
+ - Follow orchestrator delegation protocols (7-section format)`;
44950
44950
 
44951
44951
  // src/features/builtin-commands/templates/handoff.ts
44952
44952
  var HANDOFF_TEMPLATE = `# Handoff Command
@@ -45177,7 +45177,7 @@ ${REFACTOR_TEMPLATE}
45177
45177
  },
45178
45178
  "start-work": {
45179
45179
  description: "(builtin) Start Coder work session from Planner plan",
45180
- agent: "atlas",
45180
+ agent: "orchestrator",
45181
45181
  template: `<command-instruction>
45182
45182
  ${START_WORK_TEMPLATE}
45183
45183
  </command-instruction>
@@ -47968,7 +47968,7 @@ var BuiltinAgentNameSchema = exports_external.enum([
47968
47968
  "multimodal-looker",
47969
47969
  "plan-consultant",
47970
47970
  "plan-reviewer",
47971
- "atlas",
47971
+ "orchestrator",
47972
47972
  "coder-junior",
47973
47973
  "researcher",
47974
47974
  "researcher-junior"
@@ -47994,7 +47994,7 @@ var OverridableAgentNameSchema = exports_external.enum([
47994
47994
  "librarian",
47995
47995
  "explore",
47996
47996
  "multimodal-looker",
47997
- "atlas"
47997
+ "orchestrator"
47998
47998
  ]);
47999
47999
  // src/config/schema/fallback-models.ts
48000
48000
  var FallbackModelsSchema = exports_external.union([exports_external.string(), exports_external.array(exports_external.string())]);
@@ -48064,7 +48064,7 @@ var AgentOverridesSchema = exports_external.object({
48064
48064
  librarian: AgentOverrideConfigSchema.optional(),
48065
48065
  explore: AgentOverrideConfigSchema.optional(),
48066
48066
  "multimodal-looker": AgentOverrideConfigSchema.optional(),
48067
- atlas: AgentOverrideConfigSchema.optional(),
48067
+ orchestrator: AgentOverrideConfigSchema.optional(),
48068
48068
  researcher: AgentOverrideConfigSchema.optional(),
48069
48069
  "researcher-junior": AgentOverrideConfigSchema.optional()
48070
48070
  });
@@ -48256,7 +48256,7 @@ var HookNameSchema = exports_external.enum([
48256
48256
  "no-coder-gpt",
48257
48257
  "no-gptcoder-non-gpt",
48258
48258
  "start-work",
48259
- "atlas",
48259
+ "orchestrator",
48260
48260
  "unstable-agent-babysitter",
48261
48261
  "task-resume-info",
48262
48262
  "stop-continuation-guard",
@@ -49598,7 +49598,7 @@ function createStartWorkHook(ctx) {
49598
49598
  if (!promptText.includes("<session-context>"))
49599
49599
  return;
49600
49600
  log(`[${HOOK_NAME8}] Processing start-work command`, { sessionID: input.sessionID });
49601
- updateSessionAgent(input.sessionID, "atlas");
49601
+ updateSessionAgent(input.sessionID, "orchestrator");
49602
49602
  const existingState = readBoulderState(ctx.directory);
49603
49603
  const sessionId = input.sessionID;
49604
49604
  const timestamp2 = new Date().toISOString();
@@ -49620,7 +49620,7 @@ All ${progress.total} tasks are done. Create a new plan with: /plan "your task"`
49620
49620
  } else {
49621
49621
  if (existingState)
49622
49622
  clearBoulderState(ctx.directory);
49623
- const newState = createBoulderState(matchedPlan, sessionId, "atlas", worktreePath);
49623
+ const newState = createBoulderState(matchedPlan, sessionId, "orchestrator", worktreePath);
49624
49624
  writeBoulderState(ctx.directory, newState);
49625
49625
  contextInfo = `
49626
49626
  ## Auto-Selected Plan
@@ -49713,7 +49713,7 @@ All ${plans.length} plan(s) are complete. Create a new plan with: /plan "your ta
49713
49713
  } else if (incompletePlans.length === 1) {
49714
49714
  const planPath = incompletePlans[0];
49715
49715
  const progress = getPlanProgress(planPath);
49716
- const newState = createBoulderState(planPath, sessionId, "atlas", worktreePath);
49716
+ const newState = createBoulderState(planPath, sessionId, "orchestrator", worktreePath);
49717
49717
  writeBoulderState(ctx.directory, newState);
49718
49718
  contextInfo += `
49719
49719
 
@@ -49765,12 +49765,12 @@ ${contextInfo}`;
49765
49765
  }
49766
49766
  };
49767
49767
  }
49768
- // src/hooks/atlas/hook-name.ts
49769
- var HOOK_NAME9 = "atlas";
49770
- // src/hooks/atlas/event-handler.ts
49768
+ // src/hooks/orchestrator/hook-name.ts
49769
+ var HOOK_NAME9 = "orchestrator";
49770
+ // src/hooks/orchestrator/event-handler.ts
49771
49771
  init_logger();
49772
49772
 
49773
- // src/hooks/atlas/is-abort-error.ts
49773
+ // src/hooks/orchestrator/is-abort-error.ts
49774
49774
  function isAbortError(error48) {
49775
49775
  if (!error48)
49776
49776
  return false;
@@ -49792,13 +49792,13 @@ function isAbortError(error48) {
49792
49792
  return false;
49793
49793
  }
49794
49794
 
49795
- // src/hooks/atlas/idle-event.ts
49795
+ // src/hooks/orchestrator/idle-event.ts
49796
49796
  init_logger();
49797
49797
 
49798
- // src/hooks/atlas/boulder-continuation-injector.ts
49798
+ // src/hooks/orchestrator/boulder-continuation-injector.ts
49799
49799
  init_logger();
49800
49800
 
49801
- // src/hooks/atlas/system-reminder-templates.ts
49801
+ // src/hooks/orchestrator/system-reminder-templates.ts
49802
49802
  var DIRECT_WORK_REMINDER = `
49803
49803
 
49804
49804
  ---
@@ -49907,7 +49907,7 @@ ${createSystemDirective(SystemDirectiveTypes.DELEGATION_REQUIRED)}
49907
49907
 
49908
49908
  **STOP. YOU ARE VIOLATING ORCHESTRATOR PROTOCOL.**
49909
49909
 
49910
- You (Atlas) are attempting to directly modify a file outside \`.drizzy/\`.
49910
+ You (Orchestrator) are attempting to directly modify a file outside \`.drizzy/\`.
49911
49911
 
49912
49912
  **Path attempted:** $FILE_PATH
49913
49913
 
@@ -49973,7 +49973,7 @@ If you were NOT given **exactly ONE atomic task**, you MUST:
49973
49973
  **REFUSE multi-task requests. DEMAND single-task clarity.**
49974
49974
  `;
49975
49975
 
49976
- // src/hooks/atlas/recent-model-resolver.ts
49976
+ // src/hooks/orchestrator/recent-model-resolver.ts
49977
49977
  async function resolveRecentPromptContextForSession(ctx, sessionID) {
49978
49978
  try {
49979
49979
  const messagesResp = await ctx.client.session.messages({ path: { id: sessionID } });
@@ -50005,7 +50005,7 @@ async function resolveRecentPromptContextForSession(ctx, sessionID) {
50005
50005
  return { model: { providerID: model.providerID, modelID: model.modelID }, tools };
50006
50006
  }
50007
50007
 
50008
- // src/hooks/atlas/boulder-continuation-injector.ts
50008
+ // src/hooks/orchestrator/boulder-continuation-injector.ts
50009
50009
  async function injectBoulderContinuation(input) {
50010
50010
  const {
50011
50011
  ctx,
@@ -50036,7 +50036,7 @@ async function injectBoulderContinuation(input) {
50036
50036
  await ctx.client.session.promptAsync({
50037
50037
  path: { id: sessionID },
50038
50038
  body: {
50039
- agent: agent ?? "atlas",
50039
+ agent: agent ?? "orchestrator",
50040
50040
  ...promptContext.model !== undefined ? { model: promptContext.model } : {},
50041
50041
  ...inheritedTools ? { tools: inheritedTools } : {},
50042
50042
  parts: [createInternalAgentTextPart(prompt)]
@@ -50056,7 +50056,7 @@ async function injectBoulderContinuation(input) {
50056
50056
  }
50057
50057
  }
50058
50058
 
50059
- // src/hooks/atlas/idle-event.ts
50059
+ // src/hooks/orchestrator/idle-event.ts
50060
50060
  var CONTINUATION_COOLDOWN_MS2 = 5000;
50061
50061
  var FAILURE_BACKOFF_MS = 5 * 60 * 1000;
50062
50062
  var RETRY_DELAY_MS = CONTINUATION_COOLDOWN_MS2 + 1000;
@@ -50144,7 +50144,7 @@ function scheduleRetry(input) {
50144
50144
  });
50145
50145
  }, RETRY_DELAY_MS);
50146
50146
  }
50147
- async function handleAtlasSessionIdle(input) {
50147
+ async function handleOrchestratorSessionIdle(input) {
50148
50148
  const { ctx, options, getState, sessionID } = input;
50149
50149
  log(`[${HOOK_NAME9}] session.idle`, { sessionID });
50150
50150
  const activeBoulderSession = resolveActiveBoulderSession({
@@ -50219,8 +50219,8 @@ async function handleAtlasSessionIdle(input) {
50219
50219
  });
50220
50220
  }
50221
50221
 
50222
- // src/hooks/atlas/event-handler.ts
50223
- function createAtlasEventHandler(input) {
50222
+ // src/hooks/orchestrator/event-handler.ts
50223
+ function createOrchestratorEventHandler(input) {
50224
50224
  const { ctx, options, sessions, getState } = input;
50225
50225
  return async ({ event }) => {
50226
50226
  const props = event.properties;
@@ -50238,7 +50238,7 @@ function createAtlasEventHandler(input) {
50238
50238
  const sessionID = props?.sessionID;
50239
50239
  if (!sessionID)
50240
50240
  return;
50241
- await handleAtlasSessionIdle({ ctx, options, getState, sessionID });
50241
+ await handleOrchestratorSessionIdle({ ctx, options, getState, sessionID });
50242
50242
  return;
50243
50243
  }
50244
50244
  if (event.type === "message.updated") {
@@ -50300,21 +50300,21 @@ function createAtlasEventHandler(input) {
50300
50300
  };
50301
50301
  }
50302
50302
 
50303
- // src/hooks/atlas/tool-execute-after.ts
50303
+ // src/hooks/orchestrator/tool-execute-after.ts
50304
50304
  init_logger();
50305
50305
 
50306
- // src/hooks/atlas/coder-path.ts
50306
+ // src/hooks/orchestrator/coder-path.ts
50307
50307
  function isCoderPath(filePath) {
50308
50308
  return /\.drizzy[/\\]/.test(filePath);
50309
50309
  }
50310
50310
 
50311
- // src/hooks/atlas/subagent-session-id.ts
50311
+ // src/hooks/orchestrator/subagent-session-id.ts
50312
50312
  function extractSessionIdFromOutput(output) {
50313
50313
  const match = output.match(/Session ID:\s*(ses_[a-zA-Z0-9]+)/);
50314
50314
  return match?.[1] ?? "<session_id>";
50315
50315
  }
50316
50316
 
50317
- // src/hooks/atlas/verification-reminders.ts
50317
+ // src/hooks/orchestrator/verification-reminders.ts
50318
50318
  function buildCompletionGate(planName, sessionId) {
50319
50319
  return `
50320
50320
  **COMPLETION GATE \u2014 DO NOT PROCEED UNTIL THIS IS DONE**
@@ -50445,13 +50445,13 @@ If QA tasks exist in your todo list:
50445
50445
  **NO TODO = NO TRACKING = INCOMPLETE WORK. Use todowrite aggressively.**`;
50446
50446
  }
50447
50447
 
50448
- // src/hooks/atlas/write-edit-tool-policy.ts
50448
+ // src/hooks/orchestrator/write-edit-tool-policy.ts
50449
50449
  var WRITE_EDIT_TOOLS = ["Write", "Edit", "write", "edit"];
50450
50450
  function isWriteOrEditToolName(toolName) {
50451
50451
  return WRITE_EDIT_TOOLS.includes(toolName);
50452
50452
  }
50453
50453
 
50454
- // src/hooks/atlas/tool-execute-after.ts
50454
+ // src/hooks/orchestrator/tool-execute-after.ts
50455
50455
  function createToolExecuteAfterHandler2(input) {
50456
50456
  const { ctx, pendingFilePaths, autoCommit } = input;
50457
50457
  return async (toolInput, toolOutput) => {
@@ -50539,7 +50539,7 @@ ${buildStandaloneVerificationReminder(subagentSessionId)}
50539
50539
  };
50540
50540
  }
50541
50541
 
50542
- // src/hooks/atlas/tool-execute-before.ts
50542
+ // src/hooks/orchestrator/tool-execute-before.ts
50543
50543
  init_logger();
50544
50544
  function createToolExecuteBeforeHandler2(input) {
50545
50545
  const { ctx, pendingFilePaths } = input;
@@ -50576,8 +50576,8 @@ function createToolExecuteBeforeHandler2(input) {
50576
50576
  };
50577
50577
  }
50578
50578
 
50579
- // src/hooks/atlas/atlas-hook.ts
50580
- function createAtlasHook(ctx, options) {
50579
+ // src/hooks/orchestrator/orchestrator-hook.ts
50580
+ function createOrchestratorHook(ctx, options) {
50581
50581
  const sessions = new Map;
50582
50582
  const pendingFilePaths = new Map;
50583
50583
  const autoCommit = options?.autoCommit ?? true;
@@ -50590,7 +50590,7 @@ function createAtlasHook(ctx, options) {
50590
50590
  return state3;
50591
50591
  }
50592
50592
  return {
50593
- handler: createAtlasEventHandler({ ctx, options, sessions, getState }),
50593
+ handler: createOrchestratorEventHandler({ ctx, options, sessions, getState }),
50594
50594
  "tool.execute.before": createToolExecuteBeforeHandler2({ ctx, pendingFilePaths }),
50595
50595
  "tool.execute.after": createToolExecuteAfterHandler2({ ctx, pendingFilePaths, autoCommit })
50596
50596
  };
@@ -52103,7 +52103,7 @@ var AGENT_NAMES = [
52103
52103
  "librarian",
52104
52104
  "explore",
52105
52105
  "planner",
52106
- "atlas",
52106
+ "orchestrator",
52107
52107
  "plan-consultant",
52108
52108
  "plan-reviewer",
52109
52109
  "gptcoder",
@@ -77278,7 +77278,7 @@ function createContinuationHooks(args) {
77278
77278
  }
77279
77279
  }
77280
77280
  const backgroundNotificationHook = isHookEnabled("background-notification") ? safeHook("background-notification", () => createBackgroundNotificationHook(backgroundManager)) : null;
77281
- const atlasHook = isHookEnabled("atlas") ? safeHook("atlas", () => createAtlasHook(ctx, {
77281
+ const orchestratorHook = isHookEnabled("orchestrator") ? safeHook("orchestrator", () => createOrchestratorHook(ctx, {
77282
77282
  directory: ctx.directory,
77283
77283
  backgroundManager,
77284
77284
  isContinuationStopped: (sessionID) => stopContinuationGuard?.isStopped(sessionID) ?? false,
@@ -77294,7 +77294,7 @@ function createContinuationHooks(args) {
77294
77294
  todoContinuationEnforcer,
77295
77295
  unstableAgentBabysitter,
77296
77296
  backgroundNotificationHook,
77297
- atlasHook
77297
+ orchestratorHook
77298
77298
  };
77299
77299
  }
77300
77300
 
@@ -88330,12 +88330,12 @@ var planConsultantPromptMetadata = {
88330
88330
  keyTrigger: "Ambiguous or complex request \u2192 consult Plan Consultant before Planner"
88331
88331
  };
88332
88332
 
88333
- // src/agents/atlas/default.ts
88334
- var ATLAS_SYSTEM_PROMPT = `
88333
+ // src/agents/orchestrator/default.ts
88334
+ var ORCHESTRATOR_SYSTEM_PROMPT = `
88335
88335
  <identity>
88336
- You are Atlas - the Master Orchestrator from DrizzyAgent.
88336
+ You are Orchestrator - the Master Orchestrator from DrizzyAgent.
88337
88337
 
88338
- In Greek mythology, Atlas holds up the celestial heavens. You hold up the entire workflow - coordinating every agent, every task, every verification until completion.
88338
+ In Greek mythology, Orchestrator holds up the celestial heavens. You hold up the entire workflow - coordinating every agent, every task, every verification until completion.
88339
88339
 
88340
88340
  You are a conductor, not a musician. A general, not a soldier. You DELEGATE, COORDINATE, and VERIFY.
88341
88341
  You never write code yourself. You orchestrate specialists who do.
@@ -88767,14 +88767,14 @@ After EVERY verified task() completion, you MUST:
88767
88767
  This ensures accurate progress tracking. Skip this and you lose visibility into what remains.
88768
88768
  </post_delegation_rule>
88769
88769
  `;
88770
- function getDefaultAtlasPrompt() {
88771
- return ATLAS_SYSTEM_PROMPT;
88770
+ function getDefaultOrchestratorPrompt() {
88771
+ return ORCHESTRATOR_SYSTEM_PROMPT;
88772
88772
  }
88773
88773
 
88774
- // src/agents/atlas/gpt.ts
88775
- var ATLAS_GPT_SYSTEM_PROMPT = `
88774
+ // src/agents/orchestrator/gpt.ts
88775
+ var ORCHESTRATOR_GPT_SYSTEM_PROMPT = `
88776
88776
  <identity>
88777
- You are Atlas - Master Orchestrator from DrizzyAgent.
88777
+ You are Orchestrator - Master Orchestrator from DrizzyAgent.
88778
88778
  Role: Conductor, not musician. General, not soldier.
88779
88779
  You DELEGATE, COORDINATE, and VERIFY. You NEVER write code yourself.
88780
88780
  </identity>
@@ -89181,14 +89181,14 @@ After EVERY verified task() completion, you MUST:
89181
89181
  This ensures accurate progress tracking. Skip this and you lose visibility into what remains.
89182
89182
  </post_delegation_rule>
89183
89183
  `;
89184
- function getGptAtlasPrompt() {
89185
- return ATLAS_GPT_SYSTEM_PROMPT;
89184
+ function getGptOrchestratorPrompt() {
89185
+ return ORCHESTRATOR_GPT_SYSTEM_PROMPT;
89186
89186
  }
89187
89187
 
89188
- // src/agents/atlas/gemini.ts
89189
- var ATLAS_GEMINI_SYSTEM_PROMPT = `
89188
+ // src/agents/orchestrator/gemini.ts
89189
+ var ORCHESTRATOR_GEMINI_SYSTEM_PROMPT = `
89190
89190
  <identity>
89191
- You are Atlas - Master Orchestrator from DrizzyAgent.
89191
+ You are Orchestrator - Master Orchestrator from DrizzyAgent.
89192
89192
  Role: Conductor, not musician. General, not soldier.
89193
89193
  You DELEGATE, COORDINATE, and VERIFY. You NEVER write code yourself.
89194
89194
 
@@ -89592,11 +89592,11 @@ After EVERY verified task() completion, you MUST:
89592
89592
  This ensures accurate progress tracking. Skip this and you lose visibility into what remains.
89593
89593
  </post_delegation_rule>
89594
89594
  `;
89595
- function getGeminiAtlasPrompt() {
89596
- return ATLAS_GEMINI_SYSTEM_PROMPT;
89595
+ function getGeminiOrchestratorPrompt() {
89596
+ return ORCHESTRATOR_GEMINI_SYSTEM_PROMPT;
89597
89597
  }
89598
89598
 
89599
- // src/agents/atlas/prompt-section-builder.ts
89599
+ // src/agents/orchestrator/prompt-section-builder.ts
89600
89600
  var getCategoryDescription = (name, userCategories) => userCategories?.[name]?.description ?? CATEGORY_DESCRIPTIONS[name] ?? "General tasks";
89601
89601
  function buildAgentSelectionSection(agents) {
89602
89602
  if (agents.length === 0) {
@@ -89680,9 +89680,9 @@ ${agentRows.join(`
89680
89680
  **NEVER provide both category AND agent - they are mutually exclusive.**`;
89681
89681
  }
89682
89682
 
89683
- // src/agents/atlas/agent.ts
89683
+ // src/agents/orchestrator/agent.ts
89684
89684
  var MODE7 = "all";
89685
- function getAtlasPromptSource(model) {
89685
+ function getOrchestratorPromptSource(model) {
89686
89686
  if (model && isGptModel(model)) {
89687
89687
  return "gpt";
89688
89688
  }
@@ -89691,16 +89691,16 @@ function getAtlasPromptSource(model) {
89691
89691
  }
89692
89692
  return "default";
89693
89693
  }
89694
- function getAtlasPrompt(model) {
89695
- const source = getAtlasPromptSource(model);
89694
+ function getOrchestratorPrompt(model) {
89695
+ const source = getOrchestratorPromptSource(model);
89696
89696
  switch (source) {
89697
89697
  case "gpt":
89698
- return getGptAtlasPrompt();
89698
+ return getGptOrchestratorPrompt();
89699
89699
  case "gemini":
89700
- return getGeminiAtlasPrompt();
89700
+ return getGeminiOrchestratorPrompt();
89701
89701
  case "default":
89702
89702
  default:
89703
- return getDefaultAtlasPrompt();
89703
+ return getDefaultOrchestratorPrompt();
89704
89704
  }
89705
89705
  }
89706
89706
  function buildDynamicOrchestratorPrompt(ctx) {
@@ -89718,12 +89718,12 @@ function buildDynamicOrchestratorPrompt(ctx) {
89718
89718
  const decisionMatrix = buildDecisionMatrix(agents, userCategories);
89719
89719
  const skillsSection = buildSkillsSection(skills2);
89720
89720
  const categorySkillsGuide = buildCategorySkillsDelegationGuide(availableCategories, skills2);
89721
- const basePrompt = getAtlasPrompt(model);
89721
+ const basePrompt = getOrchestratorPrompt(model);
89722
89722
  return basePrompt.replace("{CATEGORY_SECTION}", categorySection).replace("{AGENT_SECTION}", agentSection).replace("{DECISION_MATRIX}", decisionMatrix).replace("{SKILLS_SECTION}", skillsSection).replace("{{CATEGORY_SKILLS_DELEGATION_GUIDE}}", categorySkillsGuide);
89723
89723
  }
89724
- function createAtlasAgent(ctx) {
89724
+ function createOrchestratorAgent(ctx) {
89725
89725
  const baseConfig = {
89726
- description: "Orchestrates work via task() to complete ALL tasks in a todo list until fully done. (Atlas - DrizzyAgent)",
89726
+ description: "Orchestrates work via task() to complete ALL tasks in a todo list until fully done. (Orchestrator - DrizzyAgent)",
89727
89727
  mode: MODE7,
89728
89728
  ...ctx.model ? { model: ctx.model } : {},
89729
89729
  temperature: 0.1,
@@ -89732,11 +89732,11 @@ function createAtlasAgent(ctx) {
89732
89732
  };
89733
89733
  return baseConfig;
89734
89734
  }
89735
- createAtlasAgent.mode = MODE7;
89736
- var atlasPromptMetadata = {
89735
+ createOrchestratorAgent.mode = MODE7;
89736
+ var orchestratorPromptMetadata = {
89737
89737
  category: "advisor",
89738
89738
  cost: "EXPENSIVE",
89739
- promptAlias: "Atlas",
89739
+ promptAlias: "Orchestrator",
89740
89740
  triggers: [
89741
89741
  {
89742
89742
  domain: "Todo list orchestration",
@@ -92031,38 +92031,62 @@ Follow these 6 steps in order:
92031
92031
  <step_1_understand>
92032
92032
  **Step 1: Understand the Goal**
92033
92033
  Analyze the research request carefully.
92034
+ <reasoning_phase name="planning">
92034
92035
  - First classify the request as **coding** or **non-coding**.
92035
- - **If this is a coding task**:
92036
- - Inspect the codebase first before asking planning questions.
92037
- - Launch 1-3 Explore agents in parallel and read the relevant local files before you propose a plan or ask the user follow-up questions.
92038
- - Treat this as a lightweight grounding pass. If no relevant local code, patterns, or prior art exist, explicitly say so and continue with external research rather than stalling.
92039
- - Only ask targeted follow-up questions after that first codebase pass, and only if a critical ambiguity remains.
92040
- - **If this is a non-coding task**:
92041
- - Use the question tool first to ask clarifying questions before research begins.
92042
- - Do not make assumptions about scope, audience, geography, timeframe, or desired output format.
92043
- - If you are a subagent without direct user access, return the clarifying questions to the caller and stop until they are answered.
92044
- - If detailed instructions are provided, skip unnecessary clarification and move directly to the appropriate next step.
92045
- - Identify: What does the requester actually need to decide or learn?
92036
+ - Identify the decision, comparison, or unknown the requester actually needs resolved.
92037
+ - Decide whether clarification is required now or whether existing instructions already define scope.
92038
+ </reasoning_phase>
92039
+ <reasoning_phase name="execution">
92040
+ - **If this is a coding task**: inspect the codebase first before asking planning questions.
92041
+ - Launch 1-3 Explore agents in parallel and read the relevant local files before you propose a plan or ask the user follow-up questions.
92042
+ - Treat this as a lightweight grounding pass. If no relevant local code, patterns, or prior art exist, explicitly say so and continue with external research rather than stalling.
92043
+ - Only ask targeted follow-up questions after that first codebase pass, and only if a critical ambiguity remains.
92044
+ - **If this is a non-coding task**: use the question tool first, make no assumptions about scope, audience, geography, timeframe, or output format, and if you are a subagent without direct user access, return the clarifying questions to the caller and stop until they are answered.
92045
+ </reasoning_phase>
92046
+ <reasoning_phase name="verification">
92047
+ - Confirm the request is correctly labeled as coding or non-coding.
92048
+ - Confirm any blocking ambiguity has either been resolved or explicitly surfaced.
92049
+ - Confirm you can state in one sentence what the requester needs to decide or learn.
92050
+ </reasoning_phase>
92046
92051
  </step_1_understand>
92047
92052
 
92048
92053
  <step_2_plan>
92049
92054
  **Step 2: Plan the Research**
92050
- Break the topic into at least 5 focused sub-questions. For each sub-question, classify it:
92051
- - **Codebase** (existing code patterns, usage) --> Explore agent
92052
- - **Docs/Library** (official docs, API references, OSS examples) --> Librarian agent
92053
- - **General/Web** (comparisons, blog posts, benchmarks, non-coding topics) --> direct websearch/webfetch MCP tools or Researcher-Junior agent
92054
-
92055
- List your sub-questions and their classification before executing.
92056
- For coding tasks, this planning step happens only after your first codebase exploration pass.
92057
- For non-coding tasks, this planning step happens only after the clarifying questions have been answered.
92058
- Also create a single run directory for the whole investigation:
92059
- - \`.drizzy/research/{slug}/\`
92060
- - Save the final report to \`{run_directory}/report.md\`
92055
+ <reasoning_phase name="planning">
92056
+ - Build a Tree-of-Thoughts plan: one root research question, 2-4 major branches, and leaf sub-questions under each branch.
92057
+ - Prefer leaf sub-questions that are mutually informative rather than flat duplicates.
92058
+ - For coding tasks, do this only after the first codebase exploration pass.
92059
+ - For non-coding tasks, do this only after the clarifying questions have been answered.
92060
+ </reasoning_phase>
92061
+ <reasoning_phase name="execution">
92062
+ - List every leaf sub-question and classify it as **Codebase** (Explore agent), **Docs/Library** (Librarian agent), or **General/Web** (direct websearch/webfetch MCP tools or Researcher-Junior agent).
92063
+ - Create a single run directory for the whole investigation: \`.drizzy/research/{slug}/\`.
92064
+ - Save the final report to \`{run_directory}/report.md\`.
92061
92065
  - Pass the exact same \`{run_directory}\` to every Researcher-Junior task so all findings land under one shared investigation folder.
92066
+ </reasoning_phase>
92067
+ <reasoning_phase name="verification">
92068
+ - Confirm the tree covers scope, evidence gathering, comparison, and recommendation needs.
92069
+ - Confirm each leaf sub-question has exactly one primary research path and owner.
92070
+ - Confirm the run_directory contract is defined before any delegation starts.
92071
+ </reasoning_phase>
92072
+ <complexity_check>
92073
+ Classify the investigation before executing:
92074
+ - **STRAIGHTFORWARD** --> narrow scope, stable facts, few moving parts --> start with **3-4 Researcher-Junior agents**
92075
+ - **STANDARD** --> moderate scope, several branches, some comparison work --> start with **5-6 Researcher-Junior agents**
92076
+ - **DEEP** --> high stakes, conflicting sources, many branches, or fast-changing context --> start with **7-10 Researcher-Junior agents**
92077
+
92078
+ Use the classification to size the initial Researcher-Junior wave. Explore and Librarian agents support the plan but do NOT count toward the Researcher-Junior target range.
92079
+ </complexity_check>
92062
92080
  </step_2_plan>
92063
92081
 
92064
92082
  <step_3_search>
92065
92083
  **Step 3: Execute Parallel Search**
92084
+ <reasoning_phase name="planning">
92085
+ - Map each leaf sub-question from Step 2 to the right execution path.
92086
+ - Size the initial Researcher-Junior wave according to the STRAIGHTFORWARD/STANDARD/DEEP classification.
92087
+ - Ensure the first wave covers every major branch of the Tree-of-Thoughts, not just the easiest leaves.
92088
+ </reasoning_phase>
92089
+ <reasoning_phase name="execution">
92066
92090
  Spawn sub-agents for each sub-question using background execution:
92067
92091
 
92068
92092
  For codebase questions:
@@ -92088,15 +92112,32 @@ CRITICAL delegation rule:
92088
92112
  - Never delegate to coder-junior.
92089
92113
  - Always delegate with explicit subagent_type: explore, librarian, or researcher-junior.
92090
92114
 
92091
- You MUST deploy at least 5 Researcher-Junior subagents in parallel. Each sub-question from Step 2 should map to its own Researcher-Junior. If you identified more than 5 sub-questions, spawn one Researcher-Junior per sub-question. Supplement with Explore and Librarian agents as needed for codebase and docs queries -- those do NOT count toward the minimum 5 Researcher-Junior requirement.
92115
+ Initial Researcher-Junior deployment guidance:
92116
+ - **STRAIGHTFORWARD** --> deploy **3-4 Researcher-Junior subagents** in parallel
92117
+ - **STANDARD** --> deploy **5-6 Researcher-Junior subagents** in parallel
92118
+ - **DEEP** --> deploy **7-10 Researcher-Junior subagents** in parallel
92119
+
92120
+ Each initial Researcher-Junior should own a distinct leaf sub-question or high-value branch. Supplement with Explore and Librarian agents as needed for codebase and docs queries -- those do NOT count toward the Researcher-Junior target range.
92092
92121
 
92093
92122
  ALL task() calls MUST include description, load_skills, and run_in_background parameters.
92094
92123
 
92095
92124
  Escalation rule: After collecting results in Step 4, if Researcher-Junior agents return conflicting findings, incomplete coverage, or surface new research threads, deploy additional Researcher-Junior agents to resolve the conflicts or cover the gaps. There is no upper limit -- keep spawning until you have consistent, well-sourced answers across all sub-questions.
92125
+ </reasoning_phase>
92126
+ <reasoning_phase name="verification">
92127
+ - Confirm every major branch has active coverage.
92128
+ - Confirm every task() call includes description, load_skills, and run_in_background.
92129
+ - Confirm no delegation uses category or coder-junior.
92130
+ </reasoning_phase>
92096
92131
  </step_3_search>
92097
92132
 
92098
92133
  <step_4_collect>
92099
92134
  **Step 4: Collect and Deep-Read**
92135
+ <reasoning_phase name="planning">
92136
+ - Gather all pending results before judging coverage.
92137
+ - Identify which findings are corroborated, incomplete, or in conflict.
92138
+ - Prioritize high-impact disagreements for deeper review first.
92139
+ </reasoning_phase>
92140
+ <reasoning_phase name="execution">
92100
92141
  - Gather all sub-agent results via background_output(task_id="...")
92101
92142
  - For promising URLs found in results, use webfetch to get full content
92102
92143
  - Cross-reference findings across sources: do multiple sources agree?
@@ -92104,10 +92145,31 @@ Escalation rule: After collecting results in Step 4, if Researcher-Junior agents
92104
92145
  - **HIGH**: 3+ independent sources confirm
92105
92146
  - **MEDIUM**: 1-2 sources, from authoritative origins
92106
92147
  - **LOW**: single source, uncertain, or conflicting information
92148
+ </reasoning_phase>
92149
+ <reasoning_phase name="verification">
92150
+ - Confirm every major claim has at least one traceable source.
92151
+ - Confirm unresolved conflicts are explicitly labeled rather than averaged away.
92152
+ - Confirm any gap or contradiction is either escalated or documented for synthesis.
92153
+ </reasoning_phase>
92154
+ <conflict_resolution>
92155
+ When findings conflict, resolve them in this order:
92156
+ 1. **Credibility** --> prefer primary sources, official docs, peer-reviewed work, or directly observed code over commentary.
92157
+ 2. **Recency** --> if credibility is comparable, prefer the most current valid source.
92158
+ 3. **Confidence** --> prefer the conclusion supported by broader independent confirmation.
92159
+ 4. **Context** --> if disagreement is scenario-specific, preserve both findings and explain the boundary conditions.
92160
+
92161
+ If the conflict remains unresolved after applying this hierarchy, mark it as unresolved, cite both sides, and launch additional Researcher-Junior agents.
92162
+ </conflict_resolution>
92107
92163
  </step_4_collect>
92108
92164
 
92109
92165
  <step_5_synthesize>
92110
92166
  **Step 5: Synthesize Report**
92167
+ <reasoning_phase name="planning">
92168
+ - Organize findings by decision-relevant themes, not by search chronology.
92169
+ - Decide which conclusions are stable, conditional, or unresolved.
92170
+ - Reserve space for methodology, caveats, and confidence notes.
92171
+ </reasoning_phase>
92172
+ <reasoning_phase name="execution">
92111
92173
  Write a structured markdown report with this format:
92112
92174
 
92113
92175
  \`\`\`markdown
@@ -92134,10 +92196,22 @@ Per-finding confidence noted where relevant.
92134
92196
  ## Methodology
92135
92197
  Brief description of search strategy, agents used, and any gaps.
92136
92198
  \`\`\`
92199
+ </reasoning_phase>
92200
+ <reasoning_phase name="verification">
92201
+ - Confirm every section supports the final recommendation or decision.
92202
+ - Confirm inline citations and per-finding confidence labels are present where relevant.
92203
+ - Confirm conflicts, gaps, and assumptions remain visible in the final narrative.
92204
+ </reasoning_phase>
92137
92205
  </step_5_synthesize>
92138
92206
 
92139
92207
  <step_6_save>
92140
92208
  **Step 6: Save and Deliver**
92209
+ <reasoning_phase name="planning">
92210
+ - Prepare the final report path and the chat-ready summary.
92211
+ - Keep the chat response concise but decision-useful.
92212
+ - Ensure the saved artifact and the delivered summary match.
92213
+ </reasoning_phase>
92214
+ <reasoning_phase name="execution">
92141
92215
  1. Write the full report to \`{run_directory}/report.md\`
92142
92216
  - \`run_directory\` is the single slug-based directory you created in Step 2
92143
92217
  - slug: lowercase, hyphenated topic name (e.g., "react-state-management")
@@ -92145,6 +92219,12 @@ Brief description of search strategy, agents used, and any gaps.
92145
92219
  - The Executive Summary section
92146
92220
  - The Key Takeaways section
92147
92221
  - Path to the full report file
92222
+ </reasoning_phase>
92223
+ <reasoning_phase name="verification">
92224
+ - Confirm the file exists at the exact run_directory path.
92225
+ - Confirm the chat reply includes Executive Summary, Key Takeaways, and file path.
92226
+ - Confirm nothing promised in the report is missing from the saved artifact.
92227
+ </reasoning_phase>
92148
92228
  </step_6_save>
92149
92229
  </workflow>
92150
92230
 
@@ -92161,22 +92241,107 @@ var RESEARCHER_GPT_PROMPT = `You are a deep research orchestrator. Your job is t
92161
92241
  Follow this 6-step workflow:
92162
92242
 
92163
92243
  Step 1: Understand the Goal
92164
- Analyze the research request. First classify it as coding or non-coding. If it is a coding task, inspect the codebase first: launch 1-3 Explore agents in parallel and read the relevant local files before asking planning questions. Treat this as a lightweight grounding pass; if no relevant local code or patterns exist, state that clearly and continue with external research rather than stalling. Only ask targeted follow-up questions after that first codebase pass if a critical ambiguity remains. If it is a non-coding task, use the question tool first and make no assumptions about scope, audience, geography, timeframe, or output format. If you are a subagent without direct user access, return clarifying questions to the caller and stop until they are answered. If detailed instructions already resolve those uncertainties, skip unnecessary clarification. Identify what the requester actually needs to decide or learn.
92244
+ Planning phase:
92245
+ - Classify the request as coding or non-coding.
92246
+ - Identify the decision, comparison, or unknown the requester actually needs resolved.
92247
+ - Decide whether clarification is required now or whether existing instructions already define scope.
92248
+ Execution phase:
92249
+ - If it is a coding task, inspect the codebase first: launch 1-3 Explore agents in parallel and read the relevant local files before asking planning questions.
92250
+ - Treat this as a lightweight grounding pass; if no relevant local code or patterns exist, state that clearly and continue with external research rather than stalling.
92251
+ - Only ask targeted follow-up questions after that first codebase pass if a critical ambiguity remains.
92252
+ - If it is a non-coding task, use the question tool first, make no assumptions about scope, audience, geography, timeframe, or output format, and if you are a subagent without direct user access, return clarifying questions to the caller and stop until they are answered.
92253
+ Verification phase:
92254
+ - Confirm the request is correctly labeled as coding or non-coding.
92255
+ - Confirm any blocking ambiguity has either been resolved or explicitly surfaced.
92256
+ - Confirm you can state in one sentence what the requester needs to decide or learn.
92165
92257
 
92166
92258
  Step 2: Plan the Research
92167
- Break the topic into at least 5 focused sub-questions. Classify each as: codebase (use Explore agent), docs/library (use Librarian agent), or general/web (use websearch/webfetch MCP tools or Researcher-Junior agent). List your sub-questions and classification before executing. For coding tasks, do this only after the first codebase exploration pass. For non-coding tasks, do this only after the clarifying questions are answered. Create one shared run directory at .drizzy/research/{slug}/ and pass that exact run_directory to every Researcher-Junior task.
92259
+ Planning phase:
92260
+ - Build a Tree-of-Thoughts plan with one root research question, 2-4 major branches, and leaf sub-questions under each branch.
92261
+ - Prefer leaf sub-questions that are mutually informative rather than flat duplicates.
92262
+ - For coding tasks, do this only after the first codebase exploration pass.
92263
+ - For non-coding tasks, do this only after the clarifying questions are answered.
92264
+ Execution phase:
92265
+ - List every leaf sub-question and classify it as codebase (Explore agent), docs/library (Librarian agent), or general/web (direct websearch/webfetch MCP tools or Researcher-Junior agent).
92266
+ - Create one shared run directory at .drizzy/research/{slug}/.
92267
+ - Save the final report to {run_directory}/report.md.
92268
+ - Pass that exact run_directory to every Researcher-Junior task.
92269
+ Verification phase:
92270
+ - Confirm the tree covers scope, evidence gathering, comparison, and recommendation needs.
92271
+ - Confirm each leaf sub-question has exactly one primary research path and owner.
92272
+ - Confirm the run_directory contract is defined before any delegation starts.
92273
+ Complexity check:
92274
+ - STRAIGHTFORWARD: narrow scope, stable facts, few moving parts; start with 3-4 Researcher-Junior agents.
92275
+ - STANDARD: moderate scope, several branches, some comparison work; start with 5-6 Researcher-Junior agents.
92276
+ - DEEP: high stakes, conflicting sources, many branches, or fast-changing context; start with 7-10 Researcher-Junior agents.
92277
+ - Explore and Librarian agents support the plan but do not count toward the Researcher-Junior target range.
92168
92278
 
92169
92279
  Step 3: Execute Parallel Search
92170
- Spawn sub-agents for each sub-question using background execution. For codebase questions use task(subagent_type="explore", description="...", load_skills=[], run_in_background=true, prompt="..."). For docs use task(subagent_type="librarian", ...). For web research use websearch MCP tool directly or spawn task(subagent_type="researcher-junior", description="...", load_skills=[], run_in_background=true, prompt="... Use this exact run_directory: {run_directory}. Save findings to {run_directory}/findings/..." ) for deeper investigation. You MUST deploy at least 5 Researcher-Junior subagents in parallel -- one per sub-question from Step 2. If you have more than 5 sub-questions, spawn one Researcher-Junior per sub-question. Explore and Librarian agents for codebase/docs queries do NOT count toward the minimum 5. ALL task() calls MUST include description, load_skills, and run_in_background parameters. Never pass category to task(), never delegate to coder-junior, and always use explicit subagent_type values (explore, librarian, researcher-junior). Escalation: after collecting results, if Researcher-Junior agents return conflicting findings, incomplete coverage, or surface new threads, deploy additional Researcher-Junior agents to resolve conflicts or cover gaps -- no upper limit.
92280
+ Planning phase:
92281
+ - Map each leaf sub-question to the right execution path.
92282
+ - Size the initial Researcher-Junior wave according to the STRAIGHTFORWARD, STANDARD, or DEEP classification.
92283
+ - Ensure the first wave covers every major branch of the Tree-of-Thoughts, not just the easiest leaves.
92284
+ Execution phase:
92285
+ - Spawn sub-agents for each sub-question using background execution.
92286
+ - For codebase questions use task(subagent_type="explore", description="...", load_skills=[], run_in_background=true, prompt="...").
92287
+ - For docs use task(subagent_type="librarian", description="...", load_skills=[], run_in_background=true, prompt="...").
92288
+ - For web research use websearch MCP tool directly or spawn task(subagent_type="researcher-junior", description="...", load_skills=[], run_in_background=true, prompt="... Use this exact run_directory: {run_directory}. Save findings to {run_directory}/findings/..." ) for deeper investigation.
92289
+ - Initial Researcher-Junior deployment guidance: STRAIGHTFORWARD means 3-4 agents, STANDARD means 5-6 agents, and DEEP means 7-10 agents.
92290
+ - Each initial Researcher-Junior should own a distinct leaf sub-question or high-value branch. Explore and Librarian agents for codebase and docs queries do not count toward the Researcher-Junior target range.
92291
+ - ALL task() calls MUST include description, load_skills, and run_in_background parameters.
92292
+ - Never pass category to task(), never delegate to coder-junior, and always use explicit subagent_type values: explore, librarian, researcher-junior.
92293
+ - Escalation: after collecting results, if Researcher-Junior agents return conflicting findings, incomplete coverage, or surface new threads, deploy additional Researcher-Junior agents to resolve conflicts or cover gaps; there is no upper limit.
92294
+ Verification phase:
92295
+ - Confirm every major branch has active coverage.
92296
+ - Confirm every task() call includes description, load_skills, and run_in_background.
92297
+ - Confirm no delegation uses category or coder-junior.
92171
92298
 
92172
92299
  Step 4: Collect and Deep-Read
92173
- Gather all sub-agent results via background_output(task_id="..."). For promising URLs, use webfetch to get full content. Cross-reference findings across sources. Tag each finding with confidence: HIGH (3+ sources confirm), MEDIUM (1-2 authoritative sources), LOW (single/uncertain source).
92300
+ Planning phase:
92301
+ - Gather all pending results before judging coverage.
92302
+ - Identify which findings are corroborated, incomplete, or in conflict.
92303
+ - Prioritize high-impact disagreements for deeper review first.
92304
+ Execution phase:
92305
+ - Gather all sub-agent results via background_output(task_id="...").
92306
+ - For promising URLs, use webfetch to get full content.
92307
+ - Cross-reference findings across sources.
92308
+ - Tag each finding with confidence: HIGH (3+ sources confirm), MEDIUM (1-2 authoritative sources), LOW (single, uncertain, or conflicting information).
92309
+ Verification phase:
92310
+ - Confirm every major claim has at least one traceable source.
92311
+ - Confirm unresolved conflicts are explicitly labeled rather than averaged away.
92312
+ - Confirm any gap or contradiction is either escalated or documented for synthesis.
92313
+ Conflict resolution protocol:
92314
+ - Resolve conflicts in this order: credibility, recency, confidence, context.
92315
+ - Credibility means prefer primary sources, official docs, peer-reviewed work, or directly observed code over commentary.
92316
+ - Recency breaks ties when credibility is comparable.
92317
+ - Confidence favors conclusions supported by broader independent confirmation.
92318
+ - Context preserves scenario-specific differences instead of forcing a false merge.
92319
+ - If the conflict remains unresolved, cite both sides and launch additional Researcher-Junior agents.
92174
92320
 
92175
92321
  Step 5: Synthesize Report
92176
- Write a structured markdown report: Executive Summary (2-3 paragraphs) --> Themed Sections with inline citations [1], [2] and per-finding confidence --> Key Takeaways (numbered actionable insights) --> Sources (numbered list with relevance notes) --> Methodology (search strategy, agents used, gaps).
92322
+ Planning phase:
92323
+ - Organize findings by decision-relevant themes, not by search chronology.
92324
+ - Decide which conclusions are stable, conditional, or unresolved.
92325
+ - Reserve space for methodology, caveats, and confidence notes.
92326
+ Execution phase:
92327
+ - Write a structured markdown report: Executive Summary (2-3 paragraphs), Themed Sections with inline citations [1], [2] and per-finding confidence, Key Takeaways (numbered actionable insights), Sources (numbered list with relevance notes), and Methodology (search strategy, agents used, gaps).
92328
+ Verification phase:
92329
+ - Confirm every section supports the final recommendation or decision.
92330
+ - Confirm inline citations and per-finding confidence labels are present where relevant.
92331
+ - Confirm conflicts, gaps, and assumptions remain visible in the final narrative.
92177
92332
 
92178
92333
  Step 6: Save and Deliver
92179
- Write the full report to {run_directory}/report.md where run_directory is the single slug-based directory created during planning. Post the Executive Summary and Key Takeaways in chat along with the file path.
92334
+ Planning phase:
92335
+ - Prepare the final report path and the chat-ready summary.
92336
+ - Keep the chat response concise but decision-useful.
92337
+ - Ensure the saved artifact and the delivered summary match.
92338
+ Execution phase:
92339
+ - Write the full report to {run_directory}/report.md where run_directory is the single slug-based directory created during planning.
92340
+ - Post the Executive Summary and Key Takeaways in chat along with the file path.
92341
+ Verification phase:
92342
+ - Confirm the file exists at the exact run_directory path.
92343
+ - Confirm the chat reply includes Executive Summary, Key Takeaways, and file path.
92344
+ - Confirm nothing promised in the report is missing from the saved artifact.
92180
92345
 
92181
92346
  Quality Rules: Every claim must have a source citation. Cross-reference single-source findings and flag them as MEDIUM or LOW confidence. Prefer recent sources. Acknowledge gaps explicitly. Never hallucinate sources, URLs, statistics, or quotes. Present conflicting information from both sides with sources.
92182
92347
 
@@ -92238,31 +92403,57 @@ var RESEARCHER_JUNIOR_DEFAULT_PROMPT = `You are a focused web research specialis
92238
92403
  <workflow>
92239
92404
  1. Receive the sub-topic/question from Researcher
92240
92405
  2. Search with websearch (Exa) using 2-3 keyword variations \u2014 aim for 5-10 sources
92241
- 3. Deep-read 2-3 most promising URLs via webfetch for full content
92242
- 4. Extract key findings with inline citations [source](url)
92243
- 5. Tag each finding with confidence:
92406
+ 3. Pre-filter candidate sources before deep reading:
92407
+ - Domain authority: .edu/.gov/.org and official institution sites = HIGH, established publications and well-known vendors = HIGH, unknown domains = LOW until proven otherwise
92408
+ - Recency: prefer sources published or updated within the last 2 years for tech topics unless an older primary source is still authoritative
92409
+ - Bias indicators: flag marketing pages, sponsored posts, affiliate content, and vendor claims without independent corroboration
92410
+ - Prioritization: read HIGH authority sources first, then use lower-authority sources only as supporting context or to surface contradictions
92411
+ 4. Deep-read 2-3 most promising URLs via webfetch for full content
92412
+ 5. Extract key findings with inline citations [source](url)
92413
+ 6. Tag each finding with confidence:
92244
92414
  - HIGH: Confirmed by 3+ independent sources
92245
92415
  - MEDIUM: Supported by 1-2 sources
92246
92416
  - LOW: Single source or uncertain/conflicting information
92247
- 6. Write findings to: {run_directory}/findings/{sub-topic}-findings.md
92417
+ 7. Write findings to: {run_directory}/findings/{sub-topic}-findings.md
92248
92418
  - Researcher should pass you an exact run_directory in the prompt
92249
92419
  - Use that exact run_directory so your findings land in the same shared investigation folder as the final report
92250
92420
  - If no explicit run_directory is provided, state the missing contract clearly before making assumptions
92251
- 7. Return brief summary in conversation
92421
+ 8. Return brief summary in conversation
92252
92422
  </workflow>
92253
92423
 
92254
92424
  <findings_format>
92255
92425
  # {Sub-Topic}: Findings
92256
92426
  *Searched: {date} | Sources: {N} | Confidence: {overall}*
92257
92427
 
92428
+ <metadata>
92429
+ - parent_question: {broader research question from Researcher}
92430
+ - classification: {fact-finding | comparison | risk-check | implementation-context | other}
92431
+ - completion_status: {complete | partial | blocked}
92432
+ - related_sub_topics: {comma-separated related branches or "none"}
92433
+ </metadata>
92434
+
92258
92435
  ## Key Findings
92259
92436
  - **[Finding]** -- [explanation with citation](url) [CONFIDENCE]
92260
92437
 
92438
+ ## Source Credibility Summary
92439
+ | Source | Authority | Recency | Bias Risk |
92440
+ | --- | --- | --- | --- |
92441
+ | [Title](url) | HIGH/MEDIUM/LOW | {publish date or "unknown"} | LOW/MEDIUM/HIGH |
92442
+
92261
92443
  ## Sources Consulted
92262
92444
  1. [Title](url) -- {relevance description}
92263
92445
 
92446
+ ## Cross-References
92447
+ - Related sub-topic: {name} -- {why it matters to this branch}
92448
+
92449
+ ## Contradictions Detected
92450
+ - {Conflict between sources, confidence impact, and what remains unresolved}
92451
+
92264
92452
  ## Gaps & Limitations
92265
92453
  - {What couldn't be confirmed or found}
92454
+
92455
+ ## Synthesis Notes for Parent Agent
92456
+ - {What Researcher should incorporate, compare, or follow up on in the final synthesis}
92266
92457
  </findings_format>
92267
92458
 
92268
92459
  <quality_rules>
@@ -92271,32 +92462,48 @@ var RESEARCHER_JUNIOR_DEFAULT_PROMPT = `You are a focused web research specialis
92271
92462
  - No hallucination -- if unsure, say so
92272
92463
  - Prefer recent sources over older ones
92273
92464
  - Cross-reference when possible
92465
+ - Include source credibility judgments for every source you rely on
92466
+ - Surface contradictions explicitly instead of smoothing them over
92467
+ - Tell Researcher whether this branch is complete, partial, or blocked
92274
92468
  </quality_rules>`;
92275
92469
  var RESEARCHER_JUNIOR_GPT_PROMPT = `You are a focused web research specialist. You receive a specific sub-topic from Researcher and investigate it thoroughly.
92276
92470
 
92277
92471
  Workflow:
92278
92472
  1. Receive the sub-topic/question from Researcher.
92279
92473
  2. Search with websearch (Exa) using 2-3 keyword variations. Aim for 5-10 sources.
92280
- 3. Deep-read 2-3 most promising URLs via webfetch for full content.
92281
- 4. Extract key findings with inline citations [source](url).
92282
- 5. Tag each finding with confidence: HIGH (3+ sources), MEDIUM (1-2 sources), LOW (single/uncertain).
92283
- 6. Write findings to {run_directory}/findings/{sub-topic}-findings.md using this format:
92474
+ 3. Pre-filter candidate sources before deep reading. Treat .edu, .gov, .org, official institution sites, and established publications as high authority. Treat unknown domains as low authority until proven otherwise. For tech topics, prefer sources published or updated within the last 2 years unless an older primary source is still authoritative. Flag marketing pages, sponsored posts, affiliate content, and vendor claims without independent corroboration as higher bias risk. Read high-authority sources first.
92475
+ 4. Deep-read 2-3 most promising URLs via webfetch for full content.
92476
+ 5. Extract key findings with inline citations [source](url).
92477
+ 6. Tag each finding with confidence: HIGH (3+ sources), MEDIUM (1-2 sources), LOW (single/uncertain).
92478
+ 7. Write findings to {run_directory}/findings/{sub-topic}-findings.md using this format:
92284
92479
 
92285
92480
  Findings File Format:
92286
92481
  - Title: "# {Sub-Topic}: Findings"
92287
92482
  - Metadata line: "*Searched: {date} | Sources: {N} | Confidence: {overall}*"
92483
+ - Metadata section with:
92484
+ - parent_question: broader research question from Researcher
92485
+ - classification: fact-finding, comparison, risk-check, implementation-context, or other
92486
+ - completion_status: complete, partial, or blocked
92487
+ - related_sub_topics: related branches or "none"
92288
92488
  - Key Findings section: bullet points with finding, citation link, and confidence tag
92489
+ - Source Credibility Summary section: markdown table with columns Source, Authority, Recency, Bias Risk
92289
92490
  - Sources Consulted section: numbered list with title, URL, and relevance
92491
+ - Cross-References section: related sub-topics and why they matter
92492
+ - Contradictions Detected section: explicit conflicts, confidence impact, and unresolved disagreements
92290
92493
  - Gaps & Limitations section: what couldn't be confirmed
92494
+ - Synthesis Notes for Parent Agent section: what Researcher should incorporate, compare, or follow up on
92291
92495
 
92292
- 7. Return brief summary in conversation.
92496
+ 8. Return brief summary in conversation.
92293
92497
 
92294
92498
  Quality Rules:
92295
92499
  - Cite every claim with source URL.
92296
92500
  - Acknowledge gaps explicitly.
92297
92501
  - No hallucination. If unsure, say so.
92298
92502
  - Prefer recent sources over older ones.
92299
- - Cross-reference when possible.`;
92503
+ - Cross-reference when possible.
92504
+ - Include source credibility judgments for every source you rely on.
92505
+ - Surface contradictions explicitly instead of smoothing them over.
92506
+ - Tell Researcher whether this branch is complete, partial, or blocked.`;
92300
92507
  var createResearcherJuniorAgent = (model) => {
92301
92508
  const restrictions = createAgentToolRestrictions([
92302
92509
  "apply_patch",
@@ -92508,7 +92715,7 @@ function collectPendingBuiltinAgents(input) {
92508
92715
  continue;
92509
92716
  if (agentName === "gptcoder")
92510
92717
  continue;
92511
- if (agentName === "atlas")
92718
+ if (agentName === "orchestrator")
92512
92719
  continue;
92513
92720
  if (agentName === "coder-junior")
92514
92721
  continue;
@@ -92659,8 +92866,8 @@ function maybeCreateGptcoderConfig(input) {
92659
92866
  return gptcoderConfig;
92660
92867
  }
92661
92868
 
92662
- // src/agents/builtin-agents/atlas-agent.ts
92663
- function maybeCreateAtlasConfig(input) {
92869
+ // src/agents/builtin-agents/orchestrator-agent.ts
92870
+ function maybeCreateOrchestratorConfig(input) {
92664
92871
  const {
92665
92872
  disabledAgents,
92666
92873
  agentOverrides,
@@ -92673,30 +92880,30 @@ function maybeCreateAtlasConfig(input) {
92673
92880
  directory,
92674
92881
  userCategories
92675
92882
  } = input;
92676
- if (disabledAgents.includes("atlas"))
92883
+ if (disabledAgents.includes("orchestrator"))
92677
92884
  return;
92678
- const orchestratorOverride = getExplicitAgentOverride(agentOverrides, "atlas");
92679
- const effectiveOrchestratorOverride = getEffectiveAgentOverride(agentOverrides, "atlas");
92680
- const atlasRequirement = AGENT_MODEL_REQUIREMENTS["atlas"];
92681
- const atlasResolution = applyModelResolution({
92885
+ const orchestratorOverride = getExplicitAgentOverride(agentOverrides, "orchestrator");
92886
+ const effectiveOrchestratorOverride = getEffectiveAgentOverride(agentOverrides, "orchestrator");
92887
+ const orchestratorRequirement = AGENT_MODEL_REQUIREMENTS["orchestrator"];
92888
+ const orchestratorResolution = applyModelResolution({
92682
92889
  uiSelectedModel: effectiveOrchestratorOverride?.model ? undefined : uiSelectedModel,
92683
92890
  userModel: effectiveOrchestratorOverride?.model,
92684
- requirement: atlasRequirement,
92891
+ requirement: orchestratorRequirement,
92685
92892
  availableModels,
92686
92893
  systemDefaultModel
92687
92894
  });
92688
- if (!atlasResolution)
92895
+ if (!orchestratorResolution)
92689
92896
  return;
92690
- const { model: atlasModel, variant: atlasResolvedVariant } = atlasResolution;
92691
- let orchestratorConfig = createAtlasAgent({
92692
- model: atlasModel,
92897
+ const { model: orchestratorModel, variant: orchestratorResolvedVariant } = orchestratorResolution;
92898
+ let orchestratorConfig = createOrchestratorAgent({
92899
+ model: orchestratorModel,
92693
92900
  availableAgents,
92694
92901
  availableSkills,
92695
92902
  userCategories
92696
92903
  });
92697
- const atlasVariant = orchestratorOverride?.variant ?? effectiveOrchestratorOverride?.variant ?? atlasResolvedVariant;
92698
- if (atlasVariant) {
92699
- orchestratorConfig = { ...orchestratorConfig, variant: atlasVariant };
92904
+ const orchestratorVariant = orchestratorOverride?.variant ?? effectiveOrchestratorOverride?.variant ?? orchestratorResolvedVariant;
92905
+ if (orchestratorVariant) {
92906
+ orchestratorConfig = { ...orchestratorConfig, variant: orchestratorVariant };
92700
92907
  }
92701
92908
  orchestratorConfig = applyOverrides(orchestratorConfig, orchestratorOverride, mergedCategories, directory);
92702
92909
  return orchestratorConfig;
@@ -92758,7 +92965,7 @@ var agentSources = {
92758
92965
  "multimodal-looker": createMultimodalLookerAgent,
92759
92966
  "plan-consultant": createPlanConsultantAgent,
92760
92967
  "plan-reviewer": createPlanReviewerAgent,
92761
- atlas: createAtlasAgent,
92968
+ orchestrator: createOrchestratorAgent,
92762
92969
  "coder-junior": createCoderJuniorAgentWithOverrides,
92763
92970
  researcher: createResearcherAgent,
92764
92971
  "researcher-junior": createResearcherJuniorAgent
@@ -92770,7 +92977,7 @@ var agentMetadata = {
92770
92977
  "multimodal-looker": MULTIMODAL_LOOKER_PROMPT_METADATA,
92771
92978
  "plan-consultant": planConsultantPromptMetadata,
92772
92979
  "plan-reviewer": planReviewerPromptMetadata,
92773
- atlas: atlasPromptMetadata,
92980
+ orchestrator: orchestratorPromptMetadata,
92774
92981
  researcher: RESEARCHER_PROMPT_METADATA,
92775
92982
  "researcher-junior": RESEARCHER_JUNIOR_PROMPT_METADATA
92776
92983
  };
@@ -92861,7 +93068,7 @@ async function createBuiltinAgents(disabledAgents = [], agentOverrides = {}, dir
92861
93068
  for (const [name, config4] of pendingAgentConfigs) {
92862
93069
  result[name] = config4;
92863
93070
  }
92864
- const atlasConfig = maybeCreateAtlasConfig({
93071
+ const orchestratorConfig = maybeCreateOrchestratorConfig({
92865
93072
  disabledAgents,
92866
93073
  agentOverrides,
92867
93074
  uiSelectedModel,
@@ -92873,8 +93080,8 @@ async function createBuiltinAgents(disabledAgents = [], agentOverrides = {}, dir
92873
93080
  directory,
92874
93081
  userCategories: categories2
92875
93082
  });
92876
- if (atlasConfig) {
92877
- result["atlas"] = atlasConfig;
93083
+ if (orchestratorConfig) {
93084
+ result["orchestrator"] = orchestratorConfig;
92878
93085
  }
92879
93086
  return result;
92880
93087
  }
@@ -92956,7 +93163,7 @@ var CORE_AGENT_ORDER = [
92956
93163
  getAgentDisplayName("coder"),
92957
93164
  getAgentDisplayName("gptcoder"),
92958
93165
  getAgentDisplayName("planner"),
92959
- getAgentDisplayName("atlas")
93166
+ getAgentDisplayName("orchestrator")
92960
93167
  ];
92961
93168
  function reorderAgentsByPriority(agents) {
92962
93169
  const ordered = {};
@@ -95842,10 +96049,10 @@ function applyToolConfig(params) {
95842
96049
  if (looker) {
95843
96050
  looker.permission = { ...looker.permission, task: "deny", look_at: "deny" };
95844
96051
  }
95845
- const atlas = agentByKey(params.agentResult, "atlas");
95846
- if (atlas) {
95847
- atlas.permission = {
95848
- ...atlas.permission,
96052
+ const orchestrator = agentByKey(params.agentResult, "orchestrator");
96053
+ if (orchestrator) {
96054
+ orchestrator.permission = {
96055
+ ...orchestrator.permission,
95849
96056
  task: "allow",
95850
96057
  call_omo_agent: "deny",
95851
96058
  "task_*": "allow",
@@ -96916,7 +97123,7 @@ function createEventHandler2(args) {
96916
97123
  await Promise.resolve(hooks2.compactionContextInjector?.event?.(input));
96917
97124
  await Promise.resolve(hooks2.compactionTodoPreserver?.event?.(input));
96918
97125
  await Promise.resolve(hooks2.writeExistingFileGuard?.event?.(input));
96919
- await Promise.resolve(hooks2.atlasHook?.handler?.(input));
97126
+ await Promise.resolve(hooks2.orchestratorHook?.handler?.(input));
96920
97127
  await Promise.resolve(hooks2.autoSlashCommand?.event?.(input));
96921
97128
  };
96922
97129
  const recentSyntheticIdles = new Map;
@@ -97218,7 +97425,7 @@ function createToolExecuteAfterHandler3(args) {
97218
97425
  await hooks2.interactiveBashSession?.["tool.execute.after"]?.(input, output);
97219
97426
  await hooks2.editErrorRecovery?.["tool.execute.after"]?.(input, output);
97220
97427
  await hooks2.delegateTaskRetry?.["tool.execute.after"]?.(input, output);
97221
- await hooks2.atlasHook?.["tool.execute.after"]?.(input, output);
97428
+ await hooks2.orchestratorHook?.["tool.execute.after"]?.(input, output);
97222
97429
  await hooks2.taskResumeInfo?.["tool.execute.after"]?.(input, output);
97223
97430
  await hooks2.readImageResizer?.["tool.execute.after"]?.(input, output);
97224
97431
  await hooks2.hashlineReadEnhancer?.["tool.execute.after"]?.(input, output);
@@ -97286,7 +97493,7 @@ function createToolExecuteBeforeHandler3(args) {
97286
97493
  await hooks2.tasksTodowriteDisabler?.["tool.execute.before"]?.(input, output);
97287
97494
  await hooks2.plannerMdOnly?.["tool.execute.before"]?.(input, output);
97288
97495
  await hooks2.coderJuniorNotepad?.["tool.execute.before"]?.(input, output);
97289
- await hooks2.atlasHook?.["tool.execute.before"]?.(input, output);
97496
+ await hooks2.orchestratorHook?.["tool.execute.before"]?.(input, output);
97290
97497
  const normalizedToolName = input.tool.toLowerCase();
97291
97498
  if (normalizedToolName === "question" || normalizedToolName === "ask_user_question" || normalizedToolName === "askuserquestion") {
97292
97499
  const sessionID = input.sessionID || getMainSessionID();