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.
Files changed (127) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +1 -1
  3. package/agents/claude-code-writer.md +1 -0
  4. package/agents/codex-exec-writer.md +1 -0
  5. package/agents/cursor-agent-writer.md +1 -0
  6. package/agents/worker.md +1 -0
  7. package/docs/agents.md +6 -7
  8. package/docs/configuration.md +2 -0
  9. package/docs/extension-api.md +2 -0
  10. package/docs/models.md +1 -1
  11. package/docs/observability.md +1 -1
  12. package/docs/standalone-background.md +4 -4
  13. package/docs/tool-reference.md +3 -7
  14. package/inspector-runner.mjs +1 -1
  15. package/package.json +1 -1
  16. package/skills/pi-subagents/SKILL.md +1 -0
  17. package/skills/pi-subagents/references/management-authoring-rpc.md +1 -1
  18. package/skills/pi-subagents/references/multi-lane-orchestration.md +8 -0
  19. package/skills/pi-subagents/references/prompting-and-roles.md +14 -13
  20. package/src/agents/agent-management.d.ts.map +1 -1
  21. package/src/agents/agent-management.js +11 -25
  22. package/src/agents/agent-management.js.map +1 -1
  23. package/src/agents/agent-serializer.d.ts.map +1 -1
  24. package/src/agents/agent-serializer.js +0 -4
  25. package/src/agents/agent-serializer.js.map +1 -1
  26. package/src/agents/agents.d.ts +17 -4
  27. package/src/agents/agents.d.ts.map +1 -1
  28. package/src/agents/agents.js +39 -22
  29. package/src/agents/agents.js.map +1 -1
  30. package/src/agents/runtime-agent-registry.d.ts +8 -3
  31. package/src/agents/runtime-agent-registry.d.ts.map +1 -1
  32. package/src/agents/runtime-agent-registry.js +14 -9
  33. package/src/agents/runtime-agent-registry.js.map +1 -1
  34. package/src/extension/index.js +1 -1
  35. package/src/extension/index.js.map +1 -1
  36. package/src/runs/background/async-execution.d.ts.map +1 -1
  37. package/src/runs/background/async-execution.js +0 -34
  38. package/src/runs/background/async-execution.js.map +1 -1
  39. package/src/runs/background/async-resume.d.ts.map +1 -1
  40. package/src/runs/background/async-resume.js +1 -4
  41. package/src/runs/background/async-resume.js.map +1 -1
  42. package/src/runs/background/run-status.d.ts.map +1 -1
  43. package/src/runs/background/run-status.js +6 -4
  44. package/src/runs/background/run-status.js.map +1 -1
  45. package/src/runs/background/runner-aliases.d.ts.map +1 -1
  46. package/src/runs/background/runner-aliases.js +26 -15
  47. package/src/runs/background/runner-aliases.js.map +1 -1
  48. package/src/runs/background/subagent-runner.d.ts +1 -5
  49. package/src/runs/background/subagent-runner.d.ts.map +1 -1
  50. package/src/runs/background/subagent-runner.js +31 -113
  51. package/src/runs/background/subagent-runner.js.map +1 -1
  52. package/src/runs/foreground/execution.d.ts.map +1 -1
  53. package/src/runs/foreground/execution.js +0 -97
  54. package/src/runs/foreground/execution.js.map +1 -1
  55. package/src/runs/foreground/subagent-executor.d.ts.map +1 -1
  56. package/src/runs/foreground/subagent-executor.js +0 -2
  57. package/src/runs/foreground/subagent-executor.js.map +1 -1
  58. package/src/runs/shared/acceptance.d.ts.map +1 -1
  59. package/src/runs/shared/acceptance.js +7 -40
  60. package/src/runs/shared/acceptance.js.map +1 -1
  61. package/src/runs/shared/child-hooks.d.ts +1 -3
  62. package/src/runs/shared/child-hooks.d.ts.map +1 -1
  63. package/src/runs/shared/child-hooks.js +1 -16
  64. package/src/runs/shared/child-hooks.js.map +1 -1
  65. package/src/runs/shared/child-launch.d.ts +0 -2
  66. package/src/runs/shared/child-launch.d.ts.map +1 -1
  67. package/src/runs/shared/child-launch.js +1 -2
  68. package/src/runs/shared/child-launch.js.map +1 -1
  69. package/src/runs/shared/child-session.d.ts +8 -9
  70. package/src/runs/shared/child-session.d.ts.map +1 -1
  71. package/src/runs/shared/child-session.js +67 -2
  72. package/src/runs/shared/child-session.js.map +1 -1
  73. package/src/runs/shared/dynamic-fanout.js +1 -1
  74. package/src/runs/shared/dynamic-fanout.js.map +1 -1
  75. package/src/runs/shared/parallel-utils.d.ts +0 -1
  76. package/src/runs/shared/parallel-utils.d.ts.map +1 -1
  77. package/src/runs/shared/parallel-utils.js.map +1 -1
  78. package/src/runs/shared/single-output.d.ts.map +1 -1
  79. package/src/runs/shared/single-output.js +10 -2
  80. package/src/runs/shared/single-output.js.map +1 -1
  81. package/src/runs/shared/subagent-control.d.ts.map +1 -1
  82. package/src/runs/shared/subagent-control.js +6 -19
  83. package/src/runs/shared/subagent-control.js.map +1 -1
  84. package/src/shared/launch-contract.d.ts.map +1 -1
  85. package/src/shared/launch-contract.js +0 -1
  86. package/src/shared/launch-contract.js.map +1 -1
  87. package/src/shared/pruned-fork.d.ts +1 -1
  88. package/src/shared/pruned-fork.d.ts.map +1 -1
  89. package/src/shared/pruned-fork.js +2 -9
  90. package/src/shared/pruned-fork.js.map +1 -1
  91. package/src/shared/types.d.ts +3 -10
  92. package/src/shared/types.d.ts.map +1 -1
  93. package/src/shared/types.js.map +1 -1
  94. package/src/slash/slash-commands.js +1 -1
  95. package/src/slash/slash-commands.js.map +1 -1
  96. package/src/slash/subagents-admin.d.ts.map +1 -1
  97. package/src/slash/subagents-admin.js +4 -5
  98. package/src/slash/subagents-admin.js.map +1 -1
  99. package/src/tui/render.d.ts.map +1 -1
  100. package/src/tui/render.js +8 -7
  101. package/src/tui/render.js.map +1 -1
  102. package/src/watchdog/permission-arbiter.d.ts.map +1 -1
  103. package/src/watchdog/permission-arbiter.js +13 -8
  104. package/src/watchdog/permission-arbiter.js.map +1 -1
  105. package/src/watchdog/review.d.ts +2 -1
  106. package/src/watchdog/review.d.ts.map +1 -1
  107. package/src/watchdog/review.js +13 -6
  108. package/src/watchdog/review.js.map +1 -1
  109. package/src/workflows/scripted-workflow.d.ts.map +1 -1
  110. package/src/workflows/scripted-workflow.js +1 -3
  111. package/src/workflows/scripted-workflow.js.map +1 -1
  112. package/src/runs/shared/completion-evidence.d.ts +0 -31
  113. package/src/runs/shared/completion-evidence.d.ts.map +0 -1
  114. package/src/runs/shared/completion-evidence.js +0 -54
  115. package/src/runs/shared/completion-evidence.js.map +0 -1
  116. package/src/runs/shared/completion-guard.d.ts +0 -35
  117. package/src/runs/shared/completion-guard.d.ts.map +0 -1
  118. package/src/runs/shared/completion-guard.js +0 -214
  119. package/src/runs/shared/completion-guard.js.map +0 -1
  120. package/src/runs/shared/llm-intent-arbiter.d.ts +0 -48
  121. package/src/runs/shared/llm-intent-arbiter.d.ts.map +0 -1
  122. package/src/runs/shared/llm-intent-arbiter.js +0 -235
  123. package/src/runs/shared/llm-intent-arbiter.js.map +0 -1
  124. package/src/runs/shared/task-intent.d.ts +0 -38
  125. package/src/runs/shared/task-intent.d.ts.map +0 -1
  126. package/src/runs/shared/task-intent.js +0 -213
  127. 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":"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"}
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 completion evidence when it actually finishes.
984
- // Stopped/timedOut runs already have terminal failures; checking completion evidence there is meaningless.
985
- const completionDiagnosticsEligible = !run.interrupted && !run.stopped && !run.timedOut;
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 (completionDiagnosticsEligible && effectiveStructuredOutput && run.exitCode === 0 && !run.error && !toolAvailabilityError && !midToolExitError) {
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 = completionDiagnosticsEligible && run.exitCode === 0 && !run.error && !toolAvailabilityError && !structuredError && !midToolExitError
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 = completionDiagnosticsEligible && run.exitCode === 0
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 completionMutationEvidence = ctx.trackedMutationEvidenceForCompletionGuard === false ? undefined : mutationEvidence;
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 = completionDiagnosticsEligible ? formatRequiredOutputError(requiredOutput) : undefined;
1023
+ const missingRequiredOutputError = terminalDiagnosticsEligible ? formatRequiredOutputError(requiredOutput) : undefined;
1089
1024
  const missingRequiredOutputAfterMutation = Boolean(missingRequiredOutputError) && (mutationAttemptObserved || Boolean(mutationEvidence.changedFiles.length));
1090
- const effectiveExitCode = toolAvailabilityError || completionEvidence.legacyFailureError || midToolExitError || structuredError || emptyOutputError || missingRequiredOutputError
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 ?? completionEvidence.legacyFailureError;
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 = projectSettlementDiagnostic(completionEvidence, {
1118
- terminalFailed: effectiveExitCode !== 0,
1051
+ const settlementDiagnostic = effectiveExitCode !== 0 ? {
1119
1052
  finalTextPresent: Boolean(stripAcceptanceReport(run.finalOutput).trim()),
1120
- mutationObserved: mutationEvidence.attemptedMutation,
1121
- requiredOutput,
1053
+ mutation: { attempted: mutationAttemptObserved, observed: mutationEvidence.attemptedMutation },
1054
+ ...(requiredOutput ? { requiredOutput } : {}),
1122
1055
  afterCompactionSettlement: run.afterCompactionSettlement === true,
1123
- });
1124
- const fileMutationEffect = completionEvidence.fileMutation ?? (missingRequiredOutputAfterMutation ? { status: "observed", expected: completionEvidence.mutationExpected, attempted: true, evidence: mutationEvidence } : undefined);
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 {