pi-subagents 0.70.0 → 0.70.1
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 +25 -0
- package/README.md +1 -1
- package/agents/claude-code-writer.md +1 -0
- package/agents/codex-exec-writer.md +1 -0
- package/agents/cursor-agent-writer.md +1 -0
- package/agents/worker.md +1 -0
- package/docs/agents.md +6 -7
- package/docs/configuration.md +2 -0
- package/docs/extension-api.md +2 -0
- package/docs/models.md +1 -1
- package/docs/observability.md +1 -1
- package/docs/standalone-background.md +4 -4
- package/docs/tool-reference.md +3 -7
- package/inspector-runner.mjs +1 -1
- package/package.json +1 -1
- package/skills/pi-subagents/SKILL.md +1 -0
- package/skills/pi-subagents/references/management-authoring-rpc.md +1 -1
- package/skills/pi-subagents/references/multi-lane-orchestration.md +8 -0
- package/skills/pi-subagents/references/prompting-and-roles.md +14 -13
- package/src/agents/agent-management.d.ts.map +1 -1
- package/src/agents/agent-management.js +11 -25
- package/src/agents/agent-management.js.map +1 -1
- package/src/agents/agent-serializer.d.ts.map +1 -1
- package/src/agents/agent-serializer.js +0 -4
- package/src/agents/agent-serializer.js.map +1 -1
- package/src/agents/agents.d.ts +17 -4
- package/src/agents/agents.d.ts.map +1 -1
- package/src/agents/agents.js +39 -22
- package/src/agents/agents.js.map +1 -1
- package/src/agents/runtime-agent-registry.d.ts +8 -3
- package/src/agents/runtime-agent-registry.d.ts.map +1 -1
- package/src/agents/runtime-agent-registry.js +14 -9
- package/src/agents/runtime-agent-registry.js.map +1 -1
- package/src/extension/index.js +1 -1
- package/src/extension/index.js.map +1 -1
- package/src/runs/background/async-execution.d.ts.map +1 -1
- package/src/runs/background/async-execution.js +0 -34
- package/src/runs/background/async-execution.js.map +1 -1
- package/src/runs/background/async-resume.d.ts.map +1 -1
- package/src/runs/background/async-resume.js +1 -4
- package/src/runs/background/async-resume.js.map +1 -1
- package/src/runs/background/run-status.d.ts.map +1 -1
- package/src/runs/background/run-status.js +6 -4
- package/src/runs/background/run-status.js.map +1 -1
- package/src/runs/background/runner-aliases.d.ts.map +1 -1
- package/src/runs/background/runner-aliases.js +26 -15
- package/src/runs/background/runner-aliases.js.map +1 -1
- package/src/runs/background/subagent-runner.d.ts +1 -5
- package/src/runs/background/subagent-runner.d.ts.map +1 -1
- package/src/runs/background/subagent-runner.js +31 -113
- package/src/runs/background/subagent-runner.js.map +1 -1
- package/src/runs/foreground/execution.d.ts.map +1 -1
- package/src/runs/foreground/execution.js +0 -97
- package/src/runs/foreground/execution.js.map +1 -1
- package/src/runs/foreground/subagent-executor.d.ts.map +1 -1
- package/src/runs/foreground/subagent-executor.js +0 -2
- package/src/runs/foreground/subagent-executor.js.map +1 -1
- package/src/runs/shared/acceptance.d.ts.map +1 -1
- package/src/runs/shared/acceptance.js +7 -40
- package/src/runs/shared/acceptance.js.map +1 -1
- package/src/runs/shared/child-hooks.d.ts +1 -3
- package/src/runs/shared/child-hooks.d.ts.map +1 -1
- package/src/runs/shared/child-hooks.js +1 -16
- package/src/runs/shared/child-hooks.js.map +1 -1
- package/src/runs/shared/child-launch.d.ts +0 -2
- package/src/runs/shared/child-launch.d.ts.map +1 -1
- package/src/runs/shared/child-launch.js +1 -2
- package/src/runs/shared/child-launch.js.map +1 -1
- package/src/runs/shared/child-session.d.ts +8 -9
- package/src/runs/shared/child-session.d.ts.map +1 -1
- package/src/runs/shared/child-session.js +67 -2
- package/src/runs/shared/child-session.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/parallel-utils.d.ts +0 -1
- 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/single-output.d.ts.map +1 -1
- package/src/runs/shared/single-output.js +10 -2
- package/src/runs/shared/single-output.js.map +1 -1
- package/src/runs/shared/subagent-control.d.ts.map +1 -1
- package/src/runs/shared/subagent-control.js +6 -19
- package/src/runs/shared/subagent-control.js.map +1 -1
- package/src/shared/launch-contract.d.ts.map +1 -1
- package/src/shared/launch-contract.js +0 -1
- package/src/shared/launch-contract.js.map +1 -1
- package/src/shared/pruned-fork.d.ts +1 -1
- package/src/shared/pruned-fork.d.ts.map +1 -1
- package/src/shared/pruned-fork.js +2 -9
- package/src/shared/pruned-fork.js.map +1 -1
- package/src/shared/types.d.ts +3 -10
- package/src/shared/types.d.ts.map +1 -1
- package/src/shared/types.js.map +1 -1
- package/src/slash/slash-commands.js +1 -1
- package/src/slash/slash-commands.js.map +1 -1
- package/src/slash/subagents-admin.d.ts.map +1 -1
- package/src/slash/subagents-admin.js +4 -5
- package/src/slash/subagents-admin.js.map +1 -1
- package/src/tui/render.d.ts.map +1 -1
- package/src/tui/render.js +8 -7
- package/src/tui/render.js.map +1 -1
- package/src/watchdog/permission-arbiter.d.ts.map +1 -1
- package/src/watchdog/permission-arbiter.js +13 -8
- package/src/watchdog/permission-arbiter.js.map +1 -1
- package/src/watchdog/review.d.ts +2 -1
- package/src/watchdog/review.d.ts.map +1 -1
- package/src/watchdog/review.js +13 -6
- package/src/watchdog/review.js.map +1 -1
- package/src/workflows/scripted-workflow.d.ts.map +1 -1
- package/src/workflows/scripted-workflow.js +1 -3
- package/src/workflows/scripted-workflow.js.map +1 -1
- package/src/runs/shared/completion-evidence.d.ts +0 -31
- package/src/runs/shared/completion-evidence.d.ts.map +0 -1
- package/src/runs/shared/completion-evidence.js +0 -54
- package/src/runs/shared/completion-evidence.js.map +0 -1
- package/src/runs/shared/completion-guard.d.ts +0 -35
- package/src/runs/shared/completion-guard.d.ts.map +0 -1
- package/src/runs/shared/completion-guard.js +0 -214
- package/src/runs/shared/completion-guard.js.map +0 -1
- package/src/runs/shared/llm-intent-arbiter.d.ts +0 -48
- package/src/runs/shared/llm-intent-arbiter.d.ts.map +0 -1
- package/src/runs/shared/llm-intent-arbiter.js +0 -235
- package/src/runs/shared/llm-intent-arbiter.js.map +0 -1
- package/src/runs/shared/task-intent.d.ts +0 -38
- package/src/runs/shared/task-intent.d.ts.map +0 -1
- package/src/runs/shared/task-intent.js +0 -213
- package/src/runs/shared/task-intent.js.map +0 -1
|
@@ -187,14 +187,10 @@ interface SingleStepContext {
|
|
|
187
187
|
usageBudgetExhausted?: () => boolean | undefined;
|
|
188
188
|
/** Existing run-owned budget configuration; cost allowance is not settled by the live token ledger. */
|
|
189
189
|
usageBudget?: UsageBudgetConfig;
|
|
190
|
-
/** False when sibling work in the same Git worktree could have caused the tracked diff. */
|
|
191
|
-
trackedMutationEvidenceForCompletionGuard?: boolean;
|
|
192
190
|
orcaProgressTab?: OrcaProgressTab;
|
|
193
191
|
}
|
|
194
192
|
export declare function settleHerdrExternalRunnerError(error: unknown, adapter: HerdrExternalAdapterId, evidence: Parameters<ReturnType<typeof createHerdrExternalAdapter>["normalize"]>[0], retain: () => Promise<void>): Promise<HerdrExternalResult>;
|
|
195
|
-
export declare function runSingleStepInner(step: SubagentStep, ctx: SingleStepContext): Promise<StepResult
|
|
196
|
-
completionGuardTriggered?: boolean;
|
|
197
|
-
}>;
|
|
193
|
+
export declare function runSingleStepInner(step: SubagentStep, ctx: SingleStepContext): Promise<StepResult>;
|
|
198
194
|
export declare function runSubagent(config: SubagentRunConfig, childSessions: ChildSessionFactory): Promise<void>;
|
|
199
195
|
export declare function runConfiguredSubagent(config: SubagentRunConfig, options?: DefaultChildSessionFactoryOptions): Promise<void>;
|
|
200
196
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-runner.d.ts","sourceRoot":"","sources":["../../../../src/runs/background/subagent-runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"subagent-runner.d.ts","sourceRoot":"","sources":["../../../../src/runs/background/subagent-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,6 @@ import * as fs from "node:fs";
|
|
|
11
11
|
import * as path from "node:path";
|
|
12
12
|
import { performance } from "node:perf_hooks";
|
|
13
13
|
import { pathToFileURL } from "node:url";
|
|
14
|
-
import { arbitrateCompletionGuardRescue, createTaskMutationArbiter } from "../shared/llm-intent-arbiter.js";
|
|
15
14
|
import { installRunnerHttpDispatcher } from "./runner-http-dispatcher.js";
|
|
16
15
|
const isRunnerEntrypoint = Boolean(process.argv[1] && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href);
|
|
17
16
|
// Detached Node runners skip Pi's CLI dispatcher setup; install the runner's own.
|
|
@@ -53,8 +52,6 @@ import { isContextOverflow } from "../shared/model-resolution.js";
|
|
|
53
52
|
import { markProcessTerminalCandidateLeaseRelease, processTerminalPath, writeProcessTerminalCandidate } from "./process-terminal.js";
|
|
54
53
|
import { createSteeringStatus, recordSteeringRequest, steeringStatus, terminalSteeringNoticeState, unconsumedSteerReason, updateSteeringTarget } from "./steering.js";
|
|
55
54
|
import { PROMPT_REDACTED, detectSubagentError, extractTextFromContent, extractToolArgsPreview, formatEmptyTerminalAssistantResponseError, getAgentDir, hasEmptyTerminalAssistantResponse, readStatus } from "../../shared/utils.js";
|
|
56
|
-
import { evaluateCompletionMutationGuard, expectsImplementationMutation, hasMutationToolCapability, validateImplementationToolContract } from "../shared/completion-guard.js";
|
|
57
|
-
import { planCompletionEvidence, projectSettlementDiagnostic } from "../shared/completion-evidence.js";
|
|
58
55
|
import { planAbortRecovery } from "../shared/abort-recovery.js";
|
|
59
56
|
import { createMutatingFailureState, didMutatingToolFail, isMutatingTool, nextLongRunningTrigger, recordMutatingFailure, resetMutatingFailureState, resolveCurrentPath, shouldEscalateMutatingFailures, summarizeRecentMutatingFailures, } from "../shared/long-running-guard.js";
|
|
60
57
|
import { parseSessionTokens } from "../../shared/session-tokens.js";
|
|
@@ -507,7 +504,6 @@ export async function runSingleStepInner(step, ctx) {
|
|
|
507
504
|
let task = step.task.replace(placeholderRegex, () => ctx.previousOutput);
|
|
508
505
|
if (ctx.outputs)
|
|
509
506
|
task = resolveOutputReferences(task, ctx.outputs);
|
|
510
|
-
const taskForCompletionGuard = task;
|
|
511
507
|
let resolvedTaskToolPlan;
|
|
512
508
|
if (!step.runner) {
|
|
513
509
|
resolvedTaskToolPlan = resolvePiLaunchToolPlan(omitUndefinedProperties({
|
|
@@ -527,28 +523,6 @@ export async function runSingleStepInner(step, ctx) {
|
|
|
527
523
|
requiredExtensions: step.requiredExtensions ?? ctx.inheritedChildRuntime?.requiredExtensions,
|
|
528
524
|
permissionRules: step.permissionRules,
|
|
529
525
|
}));
|
|
530
|
-
const contractTools = resolvedTaskToolPlan.explicitToolAllowlist ? resolvedTaskToolPlan.effectiveToolAllowlist : undefined;
|
|
531
|
-
const contractError = validateImplementationToolContract({
|
|
532
|
-
agent: step.agent,
|
|
533
|
-
task: taskForCompletionGuard,
|
|
534
|
-
tools: contractTools,
|
|
535
|
-
mcpDirectTools: resolvedTaskToolPlan.effectiveMcpTools,
|
|
536
|
-
configuredExtensions: resolvedTaskToolPlan.configuredExtensions,
|
|
537
|
-
requestedTools: resolvedTaskToolPlan.requestedBuiltinTools,
|
|
538
|
-
acceptanceRole: step.acceptanceRole,
|
|
539
|
-
completionGuard: step.completionGuard,
|
|
540
|
-
});
|
|
541
|
-
if (contractError) {
|
|
542
|
-
return omitUndefinedProperties({
|
|
543
|
-
agent: step.agent,
|
|
544
|
-
context: step.context,
|
|
545
|
-
output: contractError,
|
|
546
|
-
error: contractError,
|
|
547
|
-
exitCode: 1,
|
|
548
|
-
capabilityCeiling: resolvedTaskToolPlan.capabilityCeiling,
|
|
549
|
-
capabilityAudit: resolvedTaskToolPlan.capabilityAudit,
|
|
550
|
-
});
|
|
551
|
-
}
|
|
552
526
|
}
|
|
553
527
|
// Derive from the pre-acceptance task so internal acceptance/recovery
|
|
554
528
|
// instructions never leak into the display name.
|
|
@@ -818,7 +792,6 @@ export async function runSingleStepInner(step, ctx) {
|
|
|
818
792
|
let finalOutputSnapshot;
|
|
819
793
|
let structuredAcceptanceReport;
|
|
820
794
|
let structuredAcceptanceReportError;
|
|
821
|
-
let completionGuardTriggeredFinal = false;
|
|
822
795
|
let toolBudget = step.toolBudget ? initialToolBudgetState(step.toolBudget) : undefined;
|
|
823
796
|
let toolBudgetBlocked = false;
|
|
824
797
|
let actualLaunchContractDigest = step.launchContractDigest;
|
|
@@ -980,9 +953,9 @@ export async function runSingleStepInner(step, ctx) {
|
|
|
980
953
|
aggregateUsage.cacheWrite += run.usage.cacheWrite;
|
|
981
954
|
aggregateUsage.cost += run.usage.cost;
|
|
982
955
|
aggregateUsage.turns += run.usage.turns;
|
|
983
|
-
// A parked run still owes
|
|
984
|
-
// Stopped/timedOut runs already have terminal failures
|
|
985
|
-
const
|
|
956
|
+
// A parked run still owes output diagnostics when it actually finishes.
|
|
957
|
+
// Stopped/timedOut runs already have terminal failures, so terminal output diagnostics are deferred.
|
|
958
|
+
const terminalDiagnosticsEligible = !run.interrupted && !run.stopped && !run.timedOut;
|
|
986
959
|
const toolDiagnostic = run.exitCode === 0 && !run.error ? launch.capture.toolDiagnostic() : undefined;
|
|
987
960
|
const toolAvailabilityError = toolDiagnostic ? formatChildToolDiagnostic(toolDiagnostic) : undefined;
|
|
988
961
|
const runtimeAcknowledgedExtensions = launch.capture.runtimeAcknowledgedExtensions();
|
|
@@ -997,7 +970,7 @@ export async function runSingleStepInner(step, ctx) {
|
|
|
997
970
|
let structuredOutput;
|
|
998
971
|
let structuredError;
|
|
999
972
|
let validatedStructuredOutput = false;
|
|
1000
|
-
if (
|
|
973
|
+
if (terminalDiagnosticsEligible && effectiveStructuredOutput && run.exitCode === 0 && !run.error && !toolAvailabilityError && !midToolExitError) {
|
|
1001
974
|
if (!run.structuredOutputToolInvoked) {
|
|
1002
975
|
structuredError = MISSING_STRUCTURED_OUTPUT_CALL_ERROR;
|
|
1003
976
|
}
|
|
@@ -1021,13 +994,13 @@ export async function runSingleStepInner(step, ctx) {
|
|
|
1021
994
|
const errorMessages = validatedStructuredOutput
|
|
1022
995
|
? run.messages.slice(run.structuredOutputMessageStartIndex ?? run.messages.length)
|
|
1023
996
|
: run.messages;
|
|
1024
|
-
const hiddenError =
|
|
997
|
+
const hiddenError = terminalDiagnosticsEligible && run.exitCode === 0 && !run.error && !toolAvailabilityError && !structuredError && !midToolExitError
|
|
1025
998
|
? detectSubagentError(errorMessages)
|
|
1026
999
|
: null;
|
|
1027
1000
|
const terminalEmptyAfterUsefulWork = !validatedStructuredOutput
|
|
1028
1001
|
&& hasEmptyTerminalAssistantResponse(run.messages)
|
|
1029
1002
|
&& (run.toolCount > 0 || Boolean(run.finalOutput.trim()));
|
|
1030
|
-
const emptyOutputError =
|
|
1003
|
+
const emptyOutputError = terminalDiagnosticsEligible && run.exitCode === 0
|
|
1031
1004
|
&& !run.error
|
|
1032
1005
|
&& !toolAvailabilityError
|
|
1033
1006
|
&& !structuredError
|
|
@@ -1036,48 +1009,10 @@ export async function runSingleStepInner(step, ctx) {
|
|
|
1036
1009
|
&& (!hiddenError?.hasError || hasEmptyTerminalAssistantResponse(run.messages))
|
|
1037
1010
|
? formatEmptyTerminalAssistantResponseError(run.messages)
|
|
1038
1011
|
: undefined;
|
|
1039
|
-
const completionGuardEnabled = isAgentContract(step.agentContract) ? step.completionGuard === true : step.completionGuard !== false;
|
|
1040
|
-
const completionToolPlan = resolvedTaskToolPlan;
|
|
1041
|
-
const completionTools = completionToolPlan ? (completionToolPlan.explicitToolAllowlist ? completionToolPlan.effectiveToolAllowlist : undefined) : step.tools;
|
|
1042
1012
|
const remoteGitChanged = run.nativeMachine?.initialGit && run.nativeMachine.finalGit ? run.nativeMachine.initialGit.head !== run.nativeMachine.finalGit.head || run.nativeMachine.initialGit.dirty !== run.nativeMachine.finalGit.dirty : undefined;
|
|
1043
1013
|
const mutationEvidence = run.nativeMachine ? { source: "tracked-files", trackedOnly: true, changedFiles: [], attemptedMutation: remoteGitChanged === true, ...(remoteGitChanged === undefined ? { unavailable: "Remote Git before/after evidence was incomplete." } : {}) } : collectTrackedMutationEvidence(mutationSnapshot, step.cwd ?? ctx.cwd);
|
|
1044
1014
|
finalMutationEvidence = mutationEvidence;
|
|
1045
|
-
const
|
|
1046
|
-
const completionGuard = completionDiagnosticsEligible && run.exitCode === 0 && !run.error && !structuredError && !hiddenError?.hasError && !midToolExitError && !emptyOutputError && completionGuardEnabled
|
|
1047
|
-
? evaluateCompletionMutationGuard(omitUndefinedProperties({
|
|
1048
|
-
agent: step.agent,
|
|
1049
|
-
task: taskForCompletionGuard,
|
|
1050
|
-
messages: run.messages,
|
|
1051
|
-
tools: completionTools,
|
|
1052
|
-
mcpDirectTools: completionToolPlan?.effectiveMcpTools ?? step.mcpDirectTools,
|
|
1053
|
-
mutationTools: step.mutationTools,
|
|
1054
|
-
toolAvailabilityError,
|
|
1055
|
-
mutationEvidence: completionMutationEvidence,
|
|
1056
|
-
}))
|
|
1057
|
-
: undefined;
|
|
1058
|
-
const mutationAttemptObserved = run.observedMutationAttempt === true || completionMutationEvidence?.attemptedMutation === true;
|
|
1059
|
-
let arbitration = { triggered: completionGuard?.triggered === true && !mutationAttemptObserved, rescued: false };
|
|
1060
|
-
if (arbitration.triggered) {
|
|
1061
|
-
const modelContext = launch.capture.completionIntentContext?.();
|
|
1062
|
-
arbitration = await arbitrateCompletionGuardRescue({
|
|
1063
|
-
guardTriggered: true,
|
|
1064
|
-
task: taskForCompletionGuard,
|
|
1065
|
-
// Construct lazily too: the shared gate refuses overlength tasks before
|
|
1066
|
-
// registry/auth/model work. The child has already shut down normally.
|
|
1067
|
-
arbiter: modelContext ? async (task) => createTaskMutationArbiter(modelContext)?.(task) ?? "unavailable" : undefined,
|
|
1068
|
-
});
|
|
1069
|
-
}
|
|
1070
|
-
const completionEvidence = planCompletionEvidence({
|
|
1071
|
-
guard: completionGuard,
|
|
1072
|
-
guardTriggered: arbitration.triggered,
|
|
1073
|
-
arbiterRescued: arbitration.rescued,
|
|
1074
|
-
completionGuardEnabled,
|
|
1075
|
-
mutationCapable: hasMutationToolCapability(completionTools, completionToolPlan?.effectiveMcpTools ?? step.mcpDirectTools),
|
|
1076
|
-
implementationMutationExpected: expectsImplementationMutation(step.agent, taskForCompletionGuard),
|
|
1077
|
-
mutationAttemptObserved,
|
|
1078
|
-
mutationEvidence: completionMutationEvidence,
|
|
1079
|
-
agentContractEnabled: isAgentContract(step.agentContract),
|
|
1080
|
-
});
|
|
1015
|
+
const mutationAttemptObserved = run.observedMutationAttempt === true || mutationEvidence.attemptedMutation === true;
|
|
1081
1016
|
const finalOutputHasPersistableFileContent = run.exitCode === 0 && !run.error && !emptyOutputError && Boolean(stripAcceptanceReport(run.finalOutput).trim());
|
|
1082
1017
|
const requiredOutput = step.outputMode === "file-only" && step.outputPath
|
|
1083
1018
|
? { kind: "file-only", path: step.outputPath, missing: !fs.existsSync(step.outputPath) && !finalOutputHasPersistableFileContent }
|
|
@@ -1085,9 +1020,9 @@ export async function runSingleStepInner(step, ctx) {
|
|
|
1085
1020
|
? { kind: "structured", path: effectiveStructuredOutput.outputPath, missing: !fs.existsSync(effectiveStructuredOutput.outputPath) }
|
|
1086
1021
|
: undefined;
|
|
1087
1022
|
finalRequiredOutputMissing = requiredOutput?.missing;
|
|
1088
|
-
const missingRequiredOutputError =
|
|
1023
|
+
const missingRequiredOutputError = terminalDiagnosticsEligible ? formatRequiredOutputError(requiredOutput) : undefined;
|
|
1089
1024
|
const missingRequiredOutputAfterMutation = Boolean(missingRequiredOutputError) && (mutationAttemptObserved || Boolean(mutationEvidence.changedFiles.length));
|
|
1090
|
-
const effectiveExitCode = toolAvailabilityError ||
|
|
1025
|
+
const effectiveExitCode = toolAvailabilityError || midToolExitError || structuredError || emptyOutputError || missingRequiredOutputError
|
|
1091
1026
|
? 1
|
|
1092
1027
|
: hiddenError?.hasError
|
|
1093
1028
|
? (hiddenError.exitCode ?? 1)
|
|
@@ -1105,8 +1040,7 @@ export async function runSingleStepInner(step, ctx) {
|
|
|
1105
1040
|
? `${hiddenError.errorType} failed (exit ${effectiveExitCode}): ${hiddenError.details}`
|
|
1106
1041
|
: `${hiddenError.errorType} failed with exit code ${effectiveExitCode}`
|
|
1107
1042
|
: undefined);
|
|
1108
|
-
const error = underlyingError ?? missingRequiredOutputError
|
|
1109
|
-
completionGuardTriggeredFinal = completionEvidence.guardTriggered && !underlyingError && !missingRequiredOutputError;
|
|
1043
|
+
const error = underlyingError ?? missingRequiredOutputError;
|
|
1110
1044
|
finalOutputSnapshot = outputSnapshot;
|
|
1111
1045
|
if (step.toolBudget) {
|
|
1112
1046
|
const toolMessages = run.messages.filter((message) => message.role === "toolResult");
|
|
@@ -1114,21 +1048,18 @@ export async function runSingleStepInner(step, ctx) {
|
|
|
1114
1048
|
toolBudgetBlocked = Boolean(blockedMessage);
|
|
1115
1049
|
toolBudget = toolBudgetState(step.toolBudget, toolMessages.length, blockedMessage ? blockedMessage.toolName : undefined);
|
|
1116
1050
|
}
|
|
1117
|
-
const settlementDiagnostic =
|
|
1118
|
-
terminalFailed: effectiveExitCode !== 0,
|
|
1051
|
+
const settlementDiagnostic = effectiveExitCode !== 0 ? {
|
|
1119
1052
|
finalTextPresent: Boolean(stripAcceptanceReport(run.finalOutput).trim()),
|
|
1120
|
-
|
|
1121
|
-
requiredOutput,
|
|
1053
|
+
mutation: { attempted: mutationAttemptObserved, observed: mutationEvidence.attemptedMutation },
|
|
1054
|
+
...(requiredOutput ? { requiredOutput } : {}),
|
|
1122
1055
|
afterCompactionSettlement: run.afterCompactionSettlement === true,
|
|
1123
|
-
}
|
|
1124
|
-
const fileMutationEffect =
|
|
1056
|
+
} : undefined;
|
|
1057
|
+
const fileMutationEffect = missingRequiredOutputAfterMutation ? { status: "observed", attempted: true, evidence: mutationEvidence } : undefined;
|
|
1125
1058
|
finalResult = { ...run, exitCode: effectiveExitCode, model: candidate ?? run.model, error, structuredOutput, runtimeAcknowledgedExtensions, ...(step.agentContract ? { agentContract: step.agentContract } : {}), ...(fileMutationEffect || settlementDiagnostic ? { effects: { ...(fileMutationEffect ? { fileMutation: fileMutationEffect } : {}), ...(settlementDiagnostic ? { settlementDiagnostic } : {}) } } : {}) };
|
|
1126
1059
|
if (run.stopped || run.timedOut || ctx.timeoutSignal?.aborted || ctx.stopSignal?.aborted || ctx.skipAcceptance?.())
|
|
1127
1060
|
break singleLaunch;
|
|
1128
1061
|
if (effectiveExitCode === 0 && !error)
|
|
1129
1062
|
break singleLaunch;
|
|
1130
|
-
if (completionEvidence.guardTriggered)
|
|
1131
|
-
break singleLaunch;
|
|
1132
1063
|
const recovery = planAbortRecovery({
|
|
1133
1064
|
messages: run.messages,
|
|
1134
1065
|
error,
|
|
@@ -1330,7 +1261,6 @@ export async function runSingleStepInner(step, ctx) {
|
|
|
1330
1261
|
timeoutRecovery,
|
|
1331
1262
|
toolBudget,
|
|
1332
1263
|
toolBudgetBlocked: toolBudgetBlocked || undefined,
|
|
1333
|
-
completionGuardTriggered: completionGuardTriggeredFinal,
|
|
1334
1264
|
...(finalResult?.effects ? { effects: finalResult.effects } : {}),
|
|
1335
1265
|
structuredOutput: timedOutAfterAcceptance || stoppedAfterAcceptance ? undefined : finalResult?.structuredOutput,
|
|
1336
1266
|
structuredOutputPath: timedOutAfterAcceptance || stoppedAfterAcceptance ? undefined : effectiveStructuredOutput?.outputPath,
|
|
@@ -3546,7 +3476,6 @@ export async function runSubagent(config, childSessions) {
|
|
|
3546
3476
|
onSteerOutcome: (request, delivery) => applySteerDelivery(request.id, fi, delivery),
|
|
3547
3477
|
timeoutSignal: timeoutAbortController.signal,
|
|
3548
3478
|
stopSignal: stopAbortController.signal,
|
|
3549
|
-
trackedMutationEvidenceForCompletionGuard: false,
|
|
3550
3479
|
timeoutMessage,
|
|
3551
3480
|
stopMessage,
|
|
3552
3481
|
toolTimeoutMs: task.toolTimeoutMs ?? config.toolTimeoutMs,
|
|
@@ -3969,7 +3898,6 @@ export async function runSubagent(config, childSessions) {
|
|
|
3969
3898
|
onSteerOutcome: (request, delivery) => applySteerDelivery(request.id, fi, delivery),
|
|
3970
3899
|
timeoutSignal: timeoutAbortController.signal,
|
|
3971
3900
|
stopSignal: stopAbortController.signal,
|
|
3972
|
-
trackedMutationEvidenceForCompletionGuard: Boolean(worktreeSetup),
|
|
3973
3901
|
timeoutMessage,
|
|
3974
3902
|
stopMessage,
|
|
3975
3903
|
toolTimeoutMs: taskForRun.toolTimeoutMs ?? config.toolTimeoutMs,
|
|
@@ -4048,19 +3976,6 @@ export async function runSubagent(config, childSessions) {
|
|
|
4048
3976
|
}));
|
|
4049
3977
|
if (stopped || childStopped)
|
|
4050
3978
|
appendTerminalChildStatusEvent(fi, taskEndTime);
|
|
4051
|
-
if (singleResult.completionGuardTriggered) {
|
|
4052
|
-
const event = buildControlEvent(omitUndefinedProperties({
|
|
4053
|
-
from: requiredStatusStep(statusPayload, fi).activityState,
|
|
4054
|
-
to: "needs_attention",
|
|
4055
|
-
runId: id,
|
|
4056
|
-
agent: task.agent,
|
|
4057
|
-
index: fi,
|
|
4058
|
-
ts: taskEndTime,
|
|
4059
|
-
message: `${task.agent} completed without making edits for an implementation task`,
|
|
4060
|
-
reason: "completion_guard",
|
|
4061
|
-
}));
|
|
4062
|
-
appendControlEvent(event);
|
|
4063
|
-
}
|
|
4064
3979
|
if (singleResult.exitCode !== 0 && failFast && !childStopped)
|
|
4065
3980
|
aborted = true;
|
|
4066
3981
|
return stopped || childStopped ? { ...singleResult, output: stopMessage, error: stopMessage, exitCode: 1, interrupted: false, timedOut: false, stopped: true, skipped: false } : timedOut ? { ...singleResult, output: singleResult.output || (timeoutMessage ?? "Subagent timed out."), error: singleResult.error ?? timeoutMessage ?? "Subagent timed out.", exitCode: 1, interrupted: false, timedOut: true, skipped: false } : { ...singleResult, skipped: false };
|
|
@@ -4595,19 +4510,6 @@ export async function runSubagent(config, childSessions) {
|
|
|
4595
4510
|
writeStatusPayload();
|
|
4596
4511
|
});
|
|
4597
4512
|
}
|
|
4598
|
-
if (singleResult.completionGuardTriggered) {
|
|
4599
|
-
const event = buildControlEvent(omitUndefinedProperties({
|
|
4600
|
-
from: requiredStatusStep(statusPayload, flatIndex).activityState,
|
|
4601
|
-
to: "needs_attention",
|
|
4602
|
-
runId: id,
|
|
4603
|
-
agent: seqStep.agent,
|
|
4604
|
-
index: flatIndex,
|
|
4605
|
-
ts: stepEndTime,
|
|
4606
|
-
message: `${seqStep.agent} completed without making edits for an implementation task`,
|
|
4607
|
-
reason: "completion_guard",
|
|
4608
|
-
}));
|
|
4609
|
-
appendControlEvent(event);
|
|
4610
|
-
}
|
|
4611
4513
|
flatIndex++;
|
|
4612
4514
|
if (isAgentContract(seqStep.agentContract) && seqStep.gateOn === "acceptance" && singleResult.acceptance?.status === "rejected") {
|
|
4613
4515
|
statusPayload.error = acceptanceFailureMessage(singleResult.acceptance) ?? "Chain acceptance gate rejected the step.";
|
|
@@ -5094,7 +4996,23 @@ function startConfiguredSubagent(config) {
|
|
|
5094
4996
|
process.exit(1);
|
|
5095
4997
|
});
|
|
5096
4998
|
}
|
|
4999
|
+
function monitorTestParent() {
|
|
5000
|
+
const parentPid = Number(process.env.PI_SUBAGENTS_TEST_PARENT_PID);
|
|
5001
|
+
if (!Number.isSafeInteger(parentPid) || parentPid <= 0 || parentPid === process.pid)
|
|
5002
|
+
return;
|
|
5003
|
+
const check = () => {
|
|
5004
|
+
try {
|
|
5005
|
+
process.kill(parentPid, 0);
|
|
5006
|
+
}
|
|
5007
|
+
catch {
|
|
5008
|
+
process.exit(1);
|
|
5009
|
+
}
|
|
5010
|
+
};
|
|
5011
|
+
check();
|
|
5012
|
+
setInterval(check, 250).unref();
|
|
5013
|
+
}
|
|
5097
5014
|
if (isRunnerEntrypoint) {
|
|
5015
|
+
monitorTestParent();
|
|
5098
5016
|
const configArg = process.argv[2];
|
|
5099
5017
|
if (configArg) {
|
|
5100
5018
|
try {
|