pi-subagents 0.74.0 → 0.75.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.
- package/CHANGELOG.md +46 -0
- package/docs/agents.md +15 -5
- package/docs/configuration.md +10 -0
- package/docs/extension-api.md +1 -1
- package/docs/missions.md +15 -1
- package/docs/models.md +6 -2
- package/docs/observability.md +8 -3
- package/docs/tool-reference.md +28 -3
- package/docs/workflows.md +2 -2
- package/package.json +1 -1
- package/src/agents/agents.d.ts +1 -0
- package/src/agents/agents.d.ts.map +1 -1
- package/src/agents/agents.js +65 -3
- package/src/agents/agents.js.map +1 -1
- package/src/api/preflight.d.ts +1 -1
- package/src/api/preflight.d.ts.map +1 -1
- package/src/api/preflight.js +44 -1
- package/src/api/preflight.js.map +1 -1
- package/src/extension/config.d.ts.map +1 -1
- package/src/extension/config.js +4 -1
- package/src/extension/config.js.map +1 -1
- package/src/extension/index.d.ts.map +1 -1
- package/src/extension/index.js +26 -19
- package/src/extension/index.js.map +1 -1
- package/src/extension/public-execution.d.ts.map +1 -1
- package/src/extension/public-execution.js +4 -0
- package/src/extension/public-execution.js.map +1 -1
- package/src/extension/reply-workflow-script.js +1 -1
- package/src/extension/reply-workflow-script.js.map +1 -1
- package/src/extension/rpc.js +1 -1
- package/src/extension/rpc.js.map +1 -1
- package/src/extension/schemas.d.ts +1 -0
- package/src/extension/schemas.d.ts.map +1 -1
- package/src/extension/schemas.js +5 -3
- package/src/extension/schemas.js.map +1 -1
- package/src/extension/tool-description.js +1 -1
- package/src/extension/tool-description.js.map +1 -1
- package/src/missions/goal-driver.d.ts +1 -0
- package/src/missions/goal-driver.d.ts.map +1 -1
- package/src/missions/goal-driver.js +49 -34
- package/src/missions/goal-driver.js.map +1 -1
- package/src/missions/store.d.ts.map +1 -1
- package/src/missions/store.js +11 -1
- package/src/missions/store.js.map +1 -1
- package/src/profiles/profiles.d.ts +1 -1
- package/src/profiles/profiles.d.ts.map +1 -1
- package/src/profiles/profiles.js +4 -0
- package/src/profiles/profiles.js.map +1 -1
- package/src/runs/background/async-execution.d.ts +13 -0
- package/src/runs/background/async-execution.d.ts.map +1 -1
- package/src/runs/background/async-execution.js +89 -6
- package/src/runs/background/async-execution.js.map +1 -1
- package/src/runs/background/async-job-tracker.d.ts +1 -0
- package/src/runs/background/async-job-tracker.d.ts.map +1 -1
- package/src/runs/background/async-job-tracker.js +2 -2
- package/src/runs/background/async-job-tracker.js.map +1 -1
- package/src/runs/background/await-async-run.d.ts.map +1 -1
- package/src/runs/background/await-async-run.js +4 -2
- package/src/runs/background/await-async-run.js.map +1 -1
- package/src/runs/background/control-channel.d.ts +10 -0
- package/src/runs/background/control-channel.d.ts.map +1 -1
- package/src/runs/background/control-channel.js +51 -0
- package/src/runs/background/control-channel.js.map +1 -1
- package/src/runs/background/run-child-session.d.ts.map +1 -1
- package/src/runs/background/run-child-session.js +20 -6
- package/src/runs/background/run-child-session.js.map +1 -1
- package/src/runs/background/runner-aliases.d.ts +1 -0
- package/src/runs/background/runner-aliases.d.ts.map +1 -1
- package/src/runs/background/runner-aliases.js +6 -2
- package/src/runs/background/runner-aliases.js.map +1 -1
- package/src/runs/background/scheduled-runs.d.ts +2 -1
- package/src/runs/background/scheduled-runs.d.ts.map +1 -1
- package/src/runs/background/scheduled-runs.js +28 -11
- package/src/runs/background/scheduled-runs.js.map +1 -1
- package/src/runs/background/stale-run-reconciler.d.ts +1 -1
- package/src/runs/background/stale-run-reconciler.d.ts.map +1 -1
- package/src/runs/background/stale-run-reconciler.js +15 -2
- package/src/runs/background/stale-run-reconciler.js.map +1 -1
- package/src/runs/background/subagent-runner.d.ts.map +1 -1
- package/src/runs/background/subagent-runner.js +44 -3
- package/src/runs/background/subagent-runner.js.map +1 -1
- package/src/runs/foreground/command-action.d.ts +13 -0
- package/src/runs/foreground/command-action.d.ts.map +1 -0
- package/src/runs/foreground/command-action.js +38 -0
- package/src/runs/foreground/command-action.js.map +1 -0
- package/src/runs/foreground/execution.d.ts.map +1 -1
- package/src/runs/foreground/execution.js +19 -5
- package/src/runs/foreground/execution.js.map +1 -1
- package/src/runs/foreground/subagent-executor.d.ts +1 -0
- package/src/runs/foreground/subagent-executor.d.ts.map +1 -1
- package/src/runs/foreground/subagent-executor.js +64 -11
- package/src/runs/foreground/subagent-executor.js.map +1 -1
- package/src/runs/shared/child-commands.d.ts +28 -0
- package/src/runs/shared/child-commands.d.ts.map +1 -0
- package/src/runs/shared/child-commands.js +250 -0
- package/src/runs/shared/child-commands.js.map +1 -0
- package/src/runs/shared/child-session.d.ts +4 -0
- package/src/runs/shared/child-session.d.ts.map +1 -1
- package/src/runs/shared/child-session.js +97 -20
- package/src/runs/shared/child-session.js.map +1 -1
- package/src/runs/shared/child-tool-plan.js +1 -1
- package/src/runs/shared/child-tool-plan.js.map +1 -1
- package/src/runs/shared/claude-code-adapter.d.ts +56 -0
- package/src/runs/shared/claude-code-adapter.d.ts.map +1 -1
- package/src/runs/shared/claude-code-adapter.js +138 -2
- package/src/runs/shared/claude-code-adapter.js.map +1 -1
- package/src/runs/shared/dynamic-fanout.js +1 -1
- package/src/runs/shared/dynamic-fanout.js.map +1 -1
- package/src/runs/shared/external-cli-preflight.d.ts +10 -0
- package/src/runs/shared/external-cli-preflight.d.ts.map +1 -1
- package/src/runs/shared/external-cli-preflight.js +50 -6
- package/src/runs/shared/external-cli-preflight.js.map +1 -1
- package/src/runs/shared/external-cli-runner.d.ts.map +1 -1
- package/src/runs/shared/external-cli-runner.js +4 -2
- package/src/runs/shared/external-cli-runner.js.map +1 -1
- package/src/runs/shared/mcp-direct-tool-allowlist.d.ts.map +1 -1
- package/src/runs/shared/mcp-direct-tool-allowlist.js +5 -4
- package/src/runs/shared/mcp-direct-tool-allowlist.js.map +1 -1
- package/src/runs/shared/model-resolution.d.ts +6 -2
- package/src/runs/shared/model-resolution.d.ts.map +1 -1
- package/src/runs/shared/model-resolution.js +9 -2
- package/src/runs/shared/model-resolution.js.map +1 -1
- package/src/runs/shared/parallel-utils.d.ts +2 -0
- package/src/runs/shared/parallel-utils.d.ts.map +1 -1
- package/src/runs/shared/parallel-utils.js.map +1 -1
- package/src/runs/shared/run-history.d.ts +47 -0
- package/src/runs/shared/run-history.d.ts.map +1 -1
- package/src/runs/shared/run-history.js +70 -0
- package/src/runs/shared/run-history.js.map +1 -1
- package/src/runs/shared/subagent-control.d.ts.map +1 -1
- package/src/runs/shared/subagent-control.js +30 -17
- package/src/runs/shared/subagent-control.js.map +1 -1
- package/src/runs/shared/subagent-prompt-runtime.d.ts +1 -0
- package/src/runs/shared/subagent-prompt-runtime.d.ts.map +1 -1
- package/src/runs/shared/subagent-prompt-runtime.js +12 -5
- package/src/runs/shared/subagent-prompt-runtime.js.map +1 -1
- package/src/shared/required-child-extensions.d.ts +16 -1
- package/src/shared/required-child-extensions.d.ts.map +1 -1
- package/src/shared/required-child-extensions.js +37 -5
- package/src/shared/required-child-extensions.js.map +1 -1
- package/src/shared/types.d.ts +6 -1
- package/src/shared/types.d.ts.map +1 -1
- package/src/shared/types.js +1 -1
- package/src/shared/types.js.map +1 -1
- package/src/slash/subagent-cost.d.ts.map +1 -1
- package/src/slash/subagent-cost.js +8 -4
- package/src/slash/subagent-cost.js.map +1 -1
- package/src/tui/render.d.ts +1 -1
- package/src/tui/render.d.ts.map +1 -1
- package/src/tui/render.js +4 -4
- package/src/tui/render.js.map +1 -1
- package/src/workflows/workflow-receipt.js +2 -2
- package/src/workflows/workflow-receipt.js.map +1 -1
- package/src/workflows/workflow-resources.d.ts +4 -0
- package/src/workflows/workflow-resources.d.ts.map +1 -1
- package/src/workflows/workflow-resources.js +7 -4
- package/src/workflows/workflow-resources.js.map +1 -1
|
@@ -15,6 +15,7 @@ import { currentCompletionOwnerId } from "../../shared/completion-owner.js";
|
|
|
15
15
|
import { planChildLaunch, projectChainOutputSchemas, resolveStepBehavior, suppressProgressForReadOnlyTask } from "../shared/child-launch-plan.js";
|
|
16
16
|
import { formatHerdrMachineRunnerUnsupported, resolveHerdrMachinePlacement } from "../shared/herdr-machine.js";
|
|
17
17
|
import { applyThinkingSuffix, projectLaunchResolvedChildExtensions, resolvePiLaunchToolPlan } from "../shared/child-tool-plan.js";
|
|
18
|
+
import { assertClaudeCodeModelScope, isClaudeCodeAdapterId, resolveClaudeCodeOverride } from "../shared/claude-code-adapter.js";
|
|
18
19
|
import { injectSingleOutputInstruction, normalizeSingleOutputOverride, resolveSingleOutputPath, validateFileOnlyOutputMode } from "../shared/single-output.js";
|
|
19
20
|
import { applyWatchdogLaunchRules, sendRuleViolationWarning } from "../../watchdog/rules.js";
|
|
20
21
|
import { buildChainInstructions, isDynamicParallelStep, isParallelStep, resolveExistingReadInstructionPaths, resolveExistingReadPaths, writeInitialProgressFile } from "../../shared/settings.js";
|
|
@@ -57,7 +58,7 @@ import { resolvePermissionRules } from "../shared/permissions.js";
|
|
|
57
58
|
import { normalizeExtensionBindings, omitExtensionBindingsEnv } from "../shared/extension-bindings.js";
|
|
58
59
|
import { omitGitRoutingEnv } from "../shared/git-environment.js";
|
|
59
60
|
import { assertWorkflowLaneKey, normalizeWorkflowLaneMetadata } from "../shared/lane-metadata.js";
|
|
60
|
-
import { resolveRequiredChildExtensions } from "../../shared/required-child-extensions.js";
|
|
61
|
+
import { assertRequiredChildExtensionsAdmitted, resolveRequiredChildExtensions, writeRetainedRequiredChildExtensions } from "../../shared/required-child-extensions.js";
|
|
61
62
|
const require = nodeModule.createRequire(import.meta.url);
|
|
62
63
|
const piPackageRoot = resolveAsyncPiPackageRoot();
|
|
63
64
|
/**
|
|
@@ -629,6 +630,22 @@ function spawnRunner(cfg, suffix, cwd, initialStatus, initialStatusPath, launchP
|
|
|
629
630
|
return { error: error instanceof Error ? error.message : String(error) };
|
|
630
631
|
}
|
|
631
632
|
}
|
|
633
|
+
/**
|
|
634
|
+
* An explicit `thinking: false` clears the level, so only `undefined` falls
|
|
635
|
+
* through to the agent's own value. Treating `false` as absent would silently
|
|
636
|
+
* apply the agent default the caller just cleared.
|
|
637
|
+
*/
|
|
638
|
+
export function resolveClaudeCodeThinking(source, fallback) {
|
|
639
|
+
const value = source === undefined ? fallback : source;
|
|
640
|
+
return typeof value === "string" ? value : undefined;
|
|
641
|
+
}
|
|
642
|
+
/** A pinned Claude Code model cannot survive pane-native saved-machine placement, which
|
|
643
|
+
* owns the remote model registry, so the combination fails instead of losing both flags. */
|
|
644
|
+
export function assertClaudeCodeOverrideIsLocal(agent, machine, override) {
|
|
645
|
+
if (!machine || !override)
|
|
646
|
+
return;
|
|
647
|
+
throw new Error(`Agent '${agent}' requested machine '${machine}', but a Claude Code model or thinking level cannot be honored on a saved machine. Remove the model or thinking request, or run the agent locally.`);
|
|
648
|
+
}
|
|
632
649
|
function formatAsyncStartError(mode, message) {
|
|
633
650
|
return {
|
|
634
651
|
content: [{ type: "text", text: message }],
|
|
@@ -725,6 +742,13 @@ export function buildAsyncRunnerSteps(id, params) {
|
|
|
725
742
|
const machineUnsupported = formatHerdrMachineRunnerUnsupported({ machine: requestedMachine, agentName: a.name, runnerType: a.runner?.type, adapter: a.runner?.type === "external-cli" ? a.runner.adapter : undefined, worktree: s.worktree });
|
|
726
743
|
if (machineUnsupported)
|
|
727
744
|
throw new AsyncStartValidationError(machineUnsupported);
|
|
745
|
+
const registeredExtensions = resolveRequiredChildExtensions(ctx.parentSessionId ?? ctx.currentSessionId ?? undefined);
|
|
746
|
+
try {
|
|
747
|
+
assertRequiredChildExtensionsAdmitted([params.requiredExtensions, ctx.childRuntime?.requiredExtensions, registeredExtensions], { agent: a.name, runnerType: a.runner?.type, machine: requestedMachine });
|
|
748
|
+
}
|
|
749
|
+
catch (error) {
|
|
750
|
+
throw new AsyncStartValidationError(error instanceof Error ? error.message : String(error));
|
|
751
|
+
}
|
|
728
752
|
let machine;
|
|
729
753
|
let machineEnv;
|
|
730
754
|
if (requestedMachine) {
|
|
@@ -737,9 +761,12 @@ export function buildAsyncRunnerSteps(id, params) {
|
|
|
737
761
|
throw new AsyncStartValidationError(error instanceof Error ? error.message : String(error));
|
|
738
762
|
}
|
|
739
763
|
}
|
|
764
|
+
// A code-owned Claude Code adapter owns its argv, but it does accept an explicit
|
|
765
|
+
// model/thinking request; those become --model/--effort on the launch below.
|
|
766
|
+
const claudeCodeAdapter = a.runner?.type === "external-cli" && isClaudeCodeAdapterId(a.runner.adapter);
|
|
740
767
|
if (externalRunner) {
|
|
741
768
|
const unsupported = [];
|
|
742
|
-
if (s.model !== undefined)
|
|
769
|
+
if (s.model !== undefined && !claudeCodeAdapter)
|
|
743
770
|
unsupported.push("model override");
|
|
744
771
|
if (effectiveBehavior.outputSchema !== undefined)
|
|
745
772
|
unsupported.push("structured output");
|
|
@@ -811,6 +838,24 @@ export function buildAsyncRunnerSteps(id, params) {
|
|
|
811
838
|
const primaryModelFromParent = modelOrigin === "inherited";
|
|
812
839
|
const primaryModel = externalRunner ? undefined : resolveEffectiveSubagentModel(s.model, a.model, ctx.currentModel, availableModels, a.modelProvider ?? ctx.currentModelProvider, { scope: modelScopes, source: modelOrigin === "explicit" ? "explicit" : "inherited" });
|
|
813
840
|
const thinkingOverride = flatIndex === undefined ? undefined : thinkingOverridesByFlatIndex?.[flatIndex];
|
|
841
|
+
let claudeCodeOverride;
|
|
842
|
+
if (claudeCodeAdapter) {
|
|
843
|
+
try {
|
|
844
|
+
claudeCodeOverride = resolveClaudeCodeOverride({
|
|
845
|
+
model: typeof s.model === "string" ? s.model : undefined,
|
|
846
|
+
agent: a,
|
|
847
|
+
thinking: resolveClaudeCodeThinking(thinkingOverride, a.thinking),
|
|
848
|
+
thinkingCeiling: intersectThinkingCeilings(params.thinkingCeiling, a.maxThinking, ctx.childRuntime?.thinkingCeiling),
|
|
849
|
+
agentName: a.name,
|
|
850
|
+
runId: id,
|
|
851
|
+
});
|
|
852
|
+
assertClaudeCodeModelScope({ scopes: modelScopes, model: claudeCodeOverride?.model, agent: a.name, runId: id });
|
|
853
|
+
assertClaudeCodeOverrideIsLocal(a.name, machine ? requestedMachine : undefined, claudeCodeOverride);
|
|
854
|
+
}
|
|
855
|
+
catch (error) {
|
|
856
|
+
throw new AsyncStartValidationError(error instanceof Error ? error.message : String(error));
|
|
857
|
+
}
|
|
858
|
+
}
|
|
814
859
|
const effectiveThinking = externalRunner ? undefined : thinkingOverride ?? a.thinking;
|
|
815
860
|
const model = externalRunner ? undefined : applyThinkingSuffix(primaryModel, effectiveThinking, thinkingOverride !== undefined);
|
|
816
861
|
const contextLimit = model ? findModelInfo(model, availableModels, a.modelProvider ?? ctx.currentModelProvider)?.contextWindow : undefined;
|
|
@@ -846,7 +891,7 @@ export function buildAsyncRunnerSteps(id, params) {
|
|
|
846
891
|
if (launchRuleError)
|
|
847
892
|
throw new AsyncStartValidationError(launchRuleError);
|
|
848
893
|
const fast = s.fast ?? params.fast ?? a.fast;
|
|
849
|
-
const requiredExtensions = externalRunner ? [] :
|
|
894
|
+
const requiredExtensions = externalRunner ? [] : params.requiredExtensions ?? ctx.childRuntime?.requiredExtensions ?? registeredExtensions;
|
|
850
895
|
const toolPlan = resolvePiLaunchToolPlan({
|
|
851
896
|
tools: a.tools,
|
|
852
897
|
excludeTools: a.excludeTools,
|
|
@@ -878,6 +923,7 @@ export function buildAsyncRunnerSteps(id, params) {
|
|
|
878
923
|
agent: s.agent,
|
|
879
924
|
task,
|
|
880
925
|
...(a.runner ? { runner: a.runner } : {}),
|
|
926
|
+
...(claudeCodeOverride ? { claudeCodeOverrideArgs: claudeCodeOverride.args } : {}),
|
|
881
927
|
...(machine ? { machine } : {}),
|
|
882
928
|
...(machineEnv ? { machineEnv } : {}),
|
|
883
929
|
...(params.contextForAgent ? { context: params.contextForAgent(s.agent) } : {}),
|
|
@@ -1150,6 +1196,7 @@ export function executeAsyncChain(id, params) {
|
|
|
1150
1196
|
toolTimeoutMsEnv: params.toolTimeoutMsEnv ?? toolTimeoutFromEnv(),
|
|
1151
1197
|
capabilityCeiling,
|
|
1152
1198
|
thinkingCeiling: params.thinkingCeiling,
|
|
1199
|
+
requiredExtensions: params.requiredExtensions,
|
|
1153
1200
|
});
|
|
1154
1201
|
if ("error" in built) {
|
|
1155
1202
|
try {
|
|
@@ -1196,6 +1243,13 @@ export function executeAsyncChain(id, params) {
|
|
|
1196
1243
|
const initialStatusAt = Date.now();
|
|
1197
1244
|
const initialCompletionOwnerId = ctx.completionOwnerId ?? currentCompletionOwnerId();
|
|
1198
1245
|
const launchParentSessionId = ctx.parentSessionId ?? ctx.currentSessionId;
|
|
1246
|
+
try {
|
|
1247
|
+
writeRetainedRequiredChildExtensions(asyncDir, params.requiredExtensions ?? ctx.childRuntime?.requiredExtensions ?? resolveRequiredChildExtensions(launchParentSessionId ?? undefined));
|
|
1248
|
+
}
|
|
1249
|
+
catch (error) {
|
|
1250
|
+
fs.rmSync(asyncDir, { recursive: true, force: true });
|
|
1251
|
+
return formatAsyncStartError(resultMode, `Failed to record required child extensions: ${error instanceof Error ? error.message : String(error)}`);
|
|
1252
|
+
}
|
|
1199
1253
|
let spawnResult = {};
|
|
1200
1254
|
try {
|
|
1201
1255
|
spawnResult = spawnRunner({
|
|
@@ -1416,13 +1470,16 @@ export function executeAsyncSingle(id, params) {
|
|
|
1416
1470
|
const externalRunner = agentConfig.runner?.type === "external-cli" || agentConfig.runner?.type === "external-job";
|
|
1417
1471
|
const externalRunnerType = agentConfig.runner?.type;
|
|
1418
1472
|
const permissionRules = resolvePermissionRules(ctx.permissions, agentConfig.permissions);
|
|
1473
|
+
// See the chain path: the Claude Code adapter accepts an explicit model/thinking
|
|
1474
|
+
// request even though no other external runner does.
|
|
1475
|
+
const claudeCodeAdapter = agentConfig.runner?.type === "external-cli" && isClaudeCodeAdapterId(agentConfig.runner.adapter);
|
|
1419
1476
|
if (externalRunner) {
|
|
1420
1477
|
const unsupported = [];
|
|
1421
|
-
if (params.modelOverride !== undefined)
|
|
1478
|
+
if (params.modelOverride !== undefined && !claudeCodeAdapter)
|
|
1422
1479
|
unsupported.push("model override");
|
|
1423
1480
|
if ((params.fast ?? agentConfig.fast) === true)
|
|
1424
1481
|
unsupported.push("fast mode");
|
|
1425
|
-
if (params.thinkingOverride !== undefined)
|
|
1482
|
+
if (params.thinkingOverride !== undefined && !claudeCodeAdapter)
|
|
1426
1483
|
unsupported.push("thinking override");
|
|
1427
1484
|
if (params.structuredOutputSchema !== undefined)
|
|
1428
1485
|
unsupported.push("structured output");
|
|
@@ -1453,6 +1510,13 @@ export function executeAsyncSingle(id, params) {
|
|
|
1453
1510
|
const machineUnsupported = formatHerdrMachineRunnerUnsupported({ machine: requestedMachine, agentName: agentConfig.name, runnerType: agentConfig.runner?.type, adapter: agentConfig.runner?.type === "external-cli" ? agentConfig.runner.adapter : undefined, worktree: params.worktree });
|
|
1454
1511
|
if (machineUnsupported)
|
|
1455
1512
|
return formatAsyncStartError("single", machineUnsupported);
|
|
1513
|
+
const registeredExtensions = resolveRequiredChildExtensions(ctx.parentSessionId ?? ctx.currentSessionId ?? undefined);
|
|
1514
|
+
try {
|
|
1515
|
+
assertRequiredChildExtensionsAdmitted([params.requiredExtensions, ctx.childRuntime?.requiredExtensions, registeredExtensions], { agent: agentConfig.name, runnerType: agentConfig.runner?.type, machine: requestedMachine });
|
|
1516
|
+
}
|
|
1517
|
+
catch (error) {
|
|
1518
|
+
return formatAsyncStartError("single", error instanceof Error ? error.message : String(error));
|
|
1519
|
+
}
|
|
1456
1520
|
let machine;
|
|
1457
1521
|
let machineEnv;
|
|
1458
1522
|
if (requestedMachine) {
|
|
@@ -1546,6 +1610,24 @@ export function executeAsyncSingle(id, params) {
|
|
|
1546
1610
|
catch (error) {
|
|
1547
1611
|
return formatAsyncStartError("single", error instanceof Error ? error.message : String(error));
|
|
1548
1612
|
}
|
|
1613
|
+
let singleClaudeCodeOverride;
|
|
1614
|
+
if (claudeCodeAdapter) {
|
|
1615
|
+
try {
|
|
1616
|
+
singleClaudeCodeOverride = resolveClaudeCodeOverride({
|
|
1617
|
+
model: typeof params.modelOverride === "string" ? params.modelOverride : undefined,
|
|
1618
|
+
agent: agentConfig,
|
|
1619
|
+
thinking: resolveClaudeCodeThinking(params.thinkingOverride, agentConfig.thinking),
|
|
1620
|
+
thinkingCeiling: intersectThinkingCeilings(params.thinkingCeiling, agentConfig.maxThinking, ctx.childRuntime?.thinkingCeiling),
|
|
1621
|
+
agentName: agentConfig.name,
|
|
1622
|
+
runId: id,
|
|
1623
|
+
});
|
|
1624
|
+
assertClaudeCodeModelScope({ scopes: modelScopes, model: singleClaudeCodeOverride?.model, agent: agentConfig.name, runId: id });
|
|
1625
|
+
assertClaudeCodeOverrideIsLocal(agentConfig.name, machine ? requestedMachine : undefined, singleClaudeCodeOverride);
|
|
1626
|
+
}
|
|
1627
|
+
catch (error) {
|
|
1628
|
+
return formatAsyncStartError("single", error instanceof Error ? error.message : String(error));
|
|
1629
|
+
}
|
|
1630
|
+
}
|
|
1549
1631
|
const effectiveThinking = externalRunner ? undefined : params.thinkingOverride ?? agentConfig.thinking;
|
|
1550
1632
|
const model = externalRunner ? undefined : applyThinkingSuffix(primaryModel, effectiveThinking, params.thinkingOverride !== undefined);
|
|
1551
1633
|
const contextLimit = model ? findModelInfo(model, availableModels, agentConfig.modelProvider ?? ctx.currentModelProvider)?.contextWindow : undefined;
|
|
@@ -1599,7 +1681,7 @@ export function executeAsyncSingle(id, params) {
|
|
|
1599
1681
|
return formatAsyncStartError("single", error instanceof Error ? error.message : String(error));
|
|
1600
1682
|
}
|
|
1601
1683
|
}
|
|
1602
|
-
const requiredExtensions = externalRunner ? [] : params.requiredExtensions ?? ctx.childRuntime?.requiredExtensions ??
|
|
1684
|
+
const requiredExtensions = externalRunner ? [] : params.requiredExtensions ?? ctx.childRuntime?.requiredExtensions ?? registeredExtensions;
|
|
1603
1685
|
const toolPlan = resolvePiLaunchToolPlan({
|
|
1604
1686
|
tools: agentConfig.tools,
|
|
1605
1687
|
excludeTools: agentConfig.excludeTools,
|
|
@@ -1725,6 +1807,7 @@ export function executeAsyncSingle(id, params) {
|
|
|
1725
1807
|
agent,
|
|
1726
1808
|
task: taskText,
|
|
1727
1809
|
...(agentConfig.runner ? { runner: agentConfig.runner } : {}),
|
|
1810
|
+
...(singleClaudeCodeOverride ? { claudeCodeOverrideArgs: singleClaudeCodeOverride.args } : {}),
|
|
1728
1811
|
...(machine ? { machine } : {}),
|
|
1729
1812
|
...(!externalRunner && machine && params.reads !== undefined ? { remoteReads: params.reads } : {}),
|
|
1730
1813
|
...(machineEnv ? { machineEnv } : {}),
|