Skip to content

Commit 1f6c45e

Browse files
committed
Sort sub-agent tool wire order too
SubAgentDirector passed its tool definitions to super unsorted, so leaf workers kept shipping discovery order while the main chat director had been pinned. Same helper, same reason. CL-7868
1 parent 782497b commit 1f6c45e

2 files changed

Lines changed: 7 additions & 3 deletions

File tree

‎src/agent/director.ts‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@ const logger = getLogger([LOG_NAMESPACE_ROOT, "agent", "director"]);
5555
// falling to 2.1% on a reorder alone. Tool discovery order is not stable across
5656
// turns (MCP connect order, plugin load order, map iteration), so the wire
5757
// order is pinned by name. See CL-7868.
58-
function stableToolOrder(tools: readonly ToolDefinition[]): ToolDefinition[] {
58+
export function stableToolOrder(
59+
tools: readonly ToolDefinition[],
60+
): ToolDefinition[] {
5961
return [...tools].sort((a, b) => a.name.localeCompare(b.name));
6062
}
6163

‎src/subagent/nudge-director.ts‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
createCompactionGovernor,
2121
type CompactionGovernor,
2222
} from "../agent/compaction.js";
23+
import { stableToolOrder } from "../agent/director.js";
2324
import { onTurnBoundary } from "../agent/reactor-events.js";
2425
import { createCorbitsRetryPolicy } from "../agent/retry-policy.js";
2526
import {
@@ -235,12 +236,13 @@ export class SubAgentDirector extends DefaultDirector {
235236
requirePlanSubstance = false,
236237
retryPolicy: RetryPolicy = createCorbitsRetryPolicy(),
237238
) {
238-
super(systemPrompt, toolDefinitions, {});
239+
const orderedTools = stableToolOrder(toolDefinitions);
240+
super(systemPrompt, orderedTools, {});
239241
this._systemPrompt = systemPrompt;
240242
this.compaction = createCompactionGovernor(
241243
requestContinuation,
242244
systemPrompt,
243-
toolDefinitions,
245+
orderedTools,
244246
);
245247
this.stallTimeoutMs = stallTimeoutMs;
246248
this.now = now;

0 commit comments

Comments
 (0)