@caupulican/pi-adaptative 0.93.12 → 0.93.13

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 (139) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/core/agent-paths.d.ts +6 -0
  3. package/dist/core/agent-paths.d.ts.map +1 -1
  4. package/dist/core/agent-paths.js +15 -0
  5. package/dist/core/agent-paths.js.map +1 -1
  6. package/dist/core/agent-session.d.ts.map +1 -1
  7. package/dist/core/agent-session.js +2 -0
  8. package/dist/core/agent-session.js.map +1 -1
  9. package/dist/core/background-lane-controller.d.ts +2 -0
  10. package/dist/core/background-lane-controller.d.ts.map +1 -1
  11. package/dist/core/background-lane-controller.js +3 -0
  12. package/dist/core/background-lane-controller.js.map +1 -1
  13. package/dist/core/background-tool-task-controller.d.ts +4 -0
  14. package/dist/core/background-tool-task-controller.d.ts.map +1 -1
  15. package/dist/core/background-tool-task-controller.js +22 -19
  16. package/dist/core/background-tool-task-controller.js.map +1 -1
  17. package/dist/core/delegation/worker-agent-control-coordinator.d.ts +3 -1
  18. package/dist/core/delegation/worker-agent-control-coordinator.d.ts.map +1 -1
  19. package/dist/core/delegation/worker-agent-control-coordinator.js +8 -0
  20. package/dist/core/delegation/worker-agent-control-coordinator.js.map +1 -1
  21. package/dist/core/delegation/worker-attempt-executor.d.ts +2 -1
  22. package/dist/core/delegation/worker-attempt-executor.d.ts.map +1 -1
  23. package/dist/core/delegation/worker-attempt-executor.js +14 -1
  24. package/dist/core/delegation/worker-attempt-executor.js.map +1 -1
  25. package/dist/core/delegation/worker-claim.d.ts +4 -1
  26. package/dist/core/delegation/worker-claim.d.ts.map +1 -1
  27. package/dist/core/delegation/worker-claim.js +20 -2
  28. package/dist/core/delegation/worker-claim.js.map +1 -1
  29. package/dist/core/delegation/worker-delegation-controller.d.ts.map +1 -1
  30. package/dist/core/delegation/worker-delegation-controller.js +2 -0
  31. package/dist/core/delegation/worker-delegation-controller.js.map +1 -1
  32. package/dist/core/delegation/worker-lifecycle.d.ts +1 -0
  33. package/dist/core/delegation/worker-lifecycle.d.ts.map +1 -1
  34. package/dist/core/delegation/worker-lifecycle.js +3 -0
  35. package/dist/core/delegation/worker-lifecycle.js.map +1 -1
  36. package/dist/core/delegation/worker-runner.d.ts.map +1 -1
  37. package/dist/core/delegation/worker-runner.js +15 -9
  38. package/dist/core/delegation/worker-runner.js.map +1 -1
  39. package/dist/core/delegation/worker-terminal-output-artifact.d.ts +14 -0
  40. package/dist/core/delegation/worker-terminal-output-artifact.d.ts.map +1 -0
  41. package/dist/core/delegation/worker-terminal-output-artifact.js +49 -0
  42. package/dist/core/delegation/worker-terminal-output-artifact.js.map +1 -0
  43. package/dist/core/foreground-terminal-handoff-controller.d.ts +3 -0
  44. package/dist/core/foreground-terminal-handoff-controller.d.ts.map +1 -1
  45. package/dist/core/foreground-terminal-handoff-controller.js +6 -0
  46. package/dist/core/foreground-terminal-handoff-controller.js.map +1 -1
  47. package/dist/core/goals/goal-session-controller.d.ts +2 -2
  48. package/dist/core/goals/goal-session-controller.d.ts.map +1 -1
  49. package/dist/core/goals/goal-session-controller.js +2 -11
  50. package/dist/core/goals/goal-session-controller.js.map +1 -1
  51. package/dist/core/orchestration/contracts.d.ts +2 -0
  52. package/dist/core/orchestration/contracts.d.ts.map +1 -1
  53. package/dist/core/orchestration/contracts.js +3 -0
  54. package/dist/core/orchestration/contracts.js.map +1 -1
  55. package/dist/core/orchestration/task-runtime-codecs.d.ts.map +1 -1
  56. package/dist/core/orchestration/task-runtime-codecs.js +11 -2
  57. package/dist/core/orchestration/task-runtime-codecs.js.map +1 -1
  58. package/dist/core/orchestration/worker-result-adapter.d.ts +2 -1
  59. package/dist/core/orchestration/worker-result-adapter.d.ts.map +1 -1
  60. package/dist/core/orchestration/worker-result-adapter.js +41 -7
  61. package/dist/core/orchestration/worker-result-adapter.js.map +1 -1
  62. package/dist/core/runtime-builder.d.ts +5 -2
  63. package/dist/core/runtime-builder.d.ts.map +1 -1
  64. package/dist/core/runtime-builder.js +26 -8
  65. package/dist/core/runtime-builder.js.map +1 -1
  66. package/dist/core/secrets/bitwarden-credential-storage-router.d.ts +22 -0
  67. package/dist/core/secrets/bitwarden-credential-storage-router.d.ts.map +1 -0
  68. package/dist/core/secrets/bitwarden-credential-storage-router.js +59 -0
  69. package/dist/core/secrets/bitwarden-credential-storage-router.js.map +1 -0
  70. package/dist/core/secrets/bitwarden-credential-storage.d.ts +2 -8
  71. package/dist/core/secrets/bitwarden-credential-storage.d.ts.map +1 -1
  72. package/dist/core/secrets/bitwarden-credential-storage.js +23 -134
  73. package/dist/core/secrets/bitwarden-credential-storage.js.map +1 -1
  74. package/dist/core/secrets/bitwarden-secrets-manager-storage.d.ts +46 -0
  75. package/dist/core/secrets/bitwarden-secrets-manager-storage.d.ts.map +1 -0
  76. package/dist/core/secrets/bitwarden-secrets-manager-storage.js +379 -0
  77. package/dist/core/secrets/bitwarden-secrets-manager-storage.js.map +1 -0
  78. package/dist/core/secrets/credential-cli-command.d.ts +22 -0
  79. package/dist/core/secrets/credential-cli-command.d.ts.map +1 -0
  80. package/dist/core/secrets/credential-cli-command.js +82 -0
  81. package/dist/core/secrets/credential-cli-command.js.map +1 -0
  82. package/dist/core/secrets/credential-exposure-guard.d.ts +1 -1
  83. package/dist/core/secrets/credential-exposure-guard.d.ts.map +1 -1
  84. package/dist/core/secrets/credential-exposure-guard.js +5 -1
  85. package/dist/core/secrets/credential-exposure-guard.js.map +1 -1
  86. package/dist/core/secrets/credential-machine-session.d.ts +13 -0
  87. package/dist/core/secrets/credential-machine-session.d.ts.map +1 -0
  88. package/dist/core/secrets/credential-machine-session.js +139 -0
  89. package/dist/core/secrets/credential-machine-session.js.map +1 -0
  90. package/dist/core/secrets/credential-manager.d.ts +11 -1
  91. package/dist/core/secrets/credential-manager.d.ts.map +1 -1
  92. package/dist/core/secrets/credential-manager.js +44 -9
  93. package/dist/core/secrets/credential-manager.js.map +1 -1
  94. package/dist/core/secrets/credential-profile-envelope.d.ts +10 -0
  95. package/dist/core/secrets/credential-profile-envelope.d.ts.map +1 -0
  96. package/dist/core/secrets/credential-profile-envelope.js +78 -0
  97. package/dist/core/secrets/credential-profile-envelope.js.map +1 -0
  98. package/dist/core/secrets/credential-session-connection.d.ts.map +1 -1
  99. package/dist/core/secrets/credential-session-connection.js +2 -1
  100. package/dist/core/secrets/credential-session-connection.js.map +1 -1
  101. package/dist/core/secrets/credential-source-discovery.d.ts +7 -3
  102. package/dist/core/secrets/credential-source-discovery.d.ts.map +1 -1
  103. package/dist/core/secrets/credential-source-discovery.js +48 -9
  104. package/dist/core/secrets/credential-source-discovery.js.map +1 -1
  105. package/dist/core/tools/delegate-status.d.ts +4 -0
  106. package/dist/core/tools/delegate-status.d.ts.map +1 -1
  107. package/dist/core/tools/delegate-status.js +20 -4
  108. package/dist/core/tools/delegate-status.js.map +1 -1
  109. package/dist/core/tools/goal.d.ts +2 -2
  110. package/dist/core/tools/goal.d.ts.map +1 -1
  111. package/dist/core/tools/goal.js +30 -11
  112. package/dist/core/tools/goal.js.map +1 -1
  113. package/dist/core/tools/secret-store.d.ts.map +1 -1
  114. package/dist/core/tools/secret-store.js +6 -15
  115. package/dist/core/tools/secret-store.js.map +1 -1
  116. package/dist/core/tools/tool-task.d.ts.map +1 -1
  117. package/dist/core/tools/tool-task.js +6 -3
  118. package/dist/core/tools/tool-task.js.map +1 -1
  119. package/dist/core/util/bounded-value.d.ts +2 -0
  120. package/dist/core/util/bounded-value.d.ts.map +1 -1
  121. package/dist/core/util/bounded-value.js +13 -0
  122. package/dist/core/util/bounded-value.js.map +1 -1
  123. package/dist/index.d.ts +3 -1
  124. package/dist/index.d.ts.map +1 -1
  125. package/dist/index.js +2 -0
  126. package/dist/index.js.map +1 -1
  127. package/dist/utils/tools-manager.d.ts +2 -1
  128. package/dist/utils/tools-manager.d.ts.map +1 -1
  129. package/dist/utils/tools-manager.js +29 -0
  130. package/dist/utils/tools-manager.js.map +1 -1
  131. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  132. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  133. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  134. package/examples/extensions/sandbox/package-lock.json +2 -2
  135. package/examples/extensions/sandbox/package.json +1 -1
  136. package/examples/extensions/with-deps/package-lock.json +2 -2
  137. package/examples/extensions/with-deps/package.json +1 -1
  138. package/npm-shrinkwrap.json +12 -12
  139. package/package.json +4 -4
@@ -1,5 +1,5 @@
1
1
  import type { WorkerClaim } from "../autonomy/contracts.ts";
2
- import { type WorkerResultContract } from "./contracts.ts";
2
+ import { type ArtifactContract, type WorkerResultContract } from "./contracts.ts";
3
3
  import type { StartedDelegationAttempt } from "./delegation-ledger.ts";
4
4
  /** Matches the default text-read ceiling while keeping synchronous result capture bounded. */
5
5
  export declare const MAX_WORKER_ARTIFACT_HASH_BYTES: number;
@@ -21,6 +21,7 @@ export interface CreateWorkerResultContractInput {
21
21
  verificationCriterionIds?: readonly string[];
22
22
  reasonCode?: string;
23
23
  createdAt?: string;
24
+ outputArtifact?: ArtifactContract;
24
25
  }
25
26
  /** Sole host-owned conversion from an untrusted claim to a fenced durable result. */
26
27
  export declare function createWorkerResultContract(args: CreateWorkerResultContractInput): WorkerResultContract;
@@ -1 +1 @@
1
- {"version":3,"file":"worker-result-adapter.d.ts","sourceRoot":"","sources":["../../../src/core/orchestration/worker-result-adapter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D,OAAO,EAIN,KAAK,oBAAoB,EACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEvE,8FAA8F;AAC9F,eAAO,MAAM,8BAA8B,QAAmB,CAAC;AAC/D,6FAA6F;AAC7F,eAAO,MAAM,oCAAoC,QAAmB,CAAC;AAqOrE,0FAA0F;AAC1F,MAAM,WAAW,+BAA+B;IAC/C,MAAM,EAAE,wBAAwB,CAAC;IACjC,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,wBAAwB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qFAAqF;AACrF,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,+BAA+B,GAAG,oBAAoB,CAqDtG"}
1
+ {"version":3,"file":"worker-result-adapter.d.ts","sourceRoot":"","sources":["../../../src/core/orchestration/worker-result-adapter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAI5D,OAAO,EACN,KAAK,gBAAgB,EAIrB,KAAK,oBAAoB,EACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEvE,8FAA8F;AAC9F,eAAO,MAAM,8BAA8B,QAAmB,CAAC;AAC/D,6FAA6F;AAC7F,eAAO,MAAM,oCAAoC,QAAmB,CAAC;AA6PrE,0FAA0F;AAC1F,MAAM,WAAW,+BAA+B;IAC/C,MAAM,EAAE,wBAAwB,CAAC;IACjC,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,wBAAwB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,gBAAgB,CAAC;CAClC;AAED,qFAAqF;AACrF,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,+BAA+B,GAAG,oBAAoB,CAsEtG"}
@@ -4,12 +4,14 @@ import path from "node:path";
4
4
  import { pathToFileURL } from "node:url";
5
5
  import { normalizeWorkerClaimForHost } from "../delegation/worker-claim.js";
6
6
  import { sameFileVersion } from "../util/bounded-file.js";
7
- import { ORCHESTRATION_SCHEMA_VERSION, } from "./contracts.js";
7
+ import { utf8PrefixByBytes } from "../util/bounded-value.js";
8
+ import { MAX_ORCHESTRATION_WORKER_RESULT_SUMMARY_BYTES, ORCHESTRATION_SCHEMA_VERSION, } from "./contracts.js";
8
9
  /** Matches the default text-read ceiling while keeping synchronous result capture bounded. */
9
10
  export const MAX_WORKER_ARTIFACT_HASH_BYTES = 16 * 1024 * 1024;
10
11
  /** A terminal result may report many files; bound their cumulative synchronous reads too. */
11
12
  export const MAX_WORKER_ARTIFACT_HASH_TOTAL_BYTES = 32 * 1024 * 1024;
12
13
  const WORKER_ARTIFACT_HASH_CHUNK_BYTES = 64 * 1024;
14
+ const WORKER_RESULT_SUMMARY_TRUNCATION_NOTICE = "\n\n[Worker summary truncated; full output remains in the worker transcript.]";
13
15
  function metadataForFileState(fileState, digestStatus) {
14
16
  return {
15
17
  hostObservation: "file_state_captured",
@@ -175,7 +177,22 @@ function evidenceForClaim(claim, createdAt) {
175
177
  ...(finding.confidence !== undefined ? { metadata: { confidence: finding.confidence } } : {}),
176
178
  }));
177
179
  }
178
- function verificationEvidence(claim, accepted, criterionIds, createdAt) {
180
+ function durableWorkerResultSummary(value, outputArtifact) {
181
+ const summary = value.trim();
182
+ if (outputArtifact) {
183
+ const artifactNotice = `\n\n[Full worker output: ${outputArtifact.uri}]`;
184
+ const noticeBytes = Buffer.byteLength(artifactNotice, "utf8");
185
+ if (noticeBytes > MAX_ORCHESTRATION_WORKER_RESULT_SUMMARY_BYTES) {
186
+ throw new Error("Worker terminal output artifact URI exceeds the durable summary limit.");
187
+ }
188
+ return `${utf8PrefixByBytes(summary, MAX_ORCHESTRATION_WORKER_RESULT_SUMMARY_BYTES - noticeBytes)}${artifactNotice}`;
189
+ }
190
+ if (Buffer.byteLength(summary, "utf8") <= MAX_ORCHESTRATION_WORKER_RESULT_SUMMARY_BYTES)
191
+ return summary;
192
+ const noticeBytes = Buffer.byteLength(WORKER_RESULT_SUMMARY_TRUNCATION_NOTICE, "utf8");
193
+ return `${utf8PrefixByBytes(summary, MAX_ORCHESTRATION_WORKER_RESULT_SUMMARY_BYTES - noticeBytes)}${WORKER_RESULT_SUMMARY_TRUNCATION_NOTICE}`;
194
+ }
195
+ function verificationEvidence(claim, summary, accepted, criterionIds, createdAt) {
179
196
  if (!claim.verification)
180
197
  return [];
181
198
  const trustedReview = accepted;
@@ -183,7 +200,7 @@ function verificationEvidence(claim, accepted, criterionIds, createdAt) {
183
200
  {
184
201
  evidenceId: "independent-review",
185
202
  kind: "review",
186
- summary: claim.summary,
203
+ summary,
187
204
  artifactIds: [],
188
205
  trusted: trustedReview,
189
206
  createdAt,
@@ -197,7 +214,7 @@ function verificationEvidence(claim, accepted, criterionIds, createdAt) {
197
214
  evidenceId: `independent-review-criterion-${index + 1}`,
198
215
  criterionId,
199
216
  kind: "review",
200
- summary: claim.summary,
217
+ summary,
201
218
  artifactIds: [],
202
219
  trusted: trustedReview && claim.verification?.verdict === "accepted",
203
220
  createdAt,
@@ -211,6 +228,7 @@ export function createWorkerResultContract(args) {
211
228
  // Result construction is reachable from recovery/error paths as well as the native runner.
212
229
  // Normalize first so no claim can expand file iteration, hashing, evidence, or durable results.
213
230
  const claim = normalizeWorkerClaimForHost(args.claim);
231
+ const summary = durableWorkerResultSummary(claim.summary, args.outputArtifact);
214
232
  const status = claim.status === "completed"
215
233
  ? args.accepted && !args.verificationRequired
216
234
  ? "completed"
@@ -223,7 +241,10 @@ export function createWorkerResultContract(args) {
223
241
  changedFileObservations.push(observation);
224
242
  remainingDigestBytes -= observation.digestBytesCaptured;
225
243
  }
226
- const artifacts = changedFileObservations.map(({ artifact }) => artifact);
244
+ const artifacts = [
245
+ ...changedFileObservations.map(({ artifact }) => artifact),
246
+ ...(args.outputArtifact ? [args.outputArtifact] : []),
247
+ ];
227
248
  const blockers = claim.blockers ?? [];
228
249
  return {
229
250
  schemaVersion: ORCHESTRATION_SCHEMA_VERSION,
@@ -235,12 +256,25 @@ export function createWorkerResultContract(args) {
235
256
  fencingToken: args.handle.fencingToken,
236
257
  status,
237
258
  reasonCode: args.reasonCode ?? `worker_${claim.status}`,
238
- summary: claim.summary,
259
+ summary,
239
260
  artifacts,
240
261
  evidence: [
241
262
  ...evidenceForClaim(claim, createdAt),
242
263
  ...hostFileStateEvidence(changedFileObservations, createdAt),
243
- ...verificationEvidence(claim, args.accepted, args.verificationCriterionIds ?? [], createdAt),
264
+ ...(args.outputArtifact
265
+ ? [
266
+ {
267
+ evidenceId: "host-worker-terminal-output",
268
+ kind: "observation",
269
+ summary: "Host persisted the complete terminal worker output.",
270
+ artifactIds: [args.outputArtifact.artifactId],
271
+ trusted: true,
272
+ createdAt,
273
+ metadata: { observation: "worker_terminal_output_persisted" },
274
+ },
275
+ ]
276
+ : []),
277
+ ...verificationEvidence(claim, summary, args.accepted, args.verificationCriterionIds ?? [], createdAt),
244
278
  ],
245
279
  errors: blockers.map((message) => ({ code: "worker_blocker", message, retryable: false })),
246
280
  ...(args.verificationRequired
@@ -1 +1 @@
1
- {"version":3,"file":"worker-result-adapter.js","sourceRoot":"","sources":["../../../src/core/orchestration/worker-result-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAGN,4BAA4B,GAE5B,MAAM,gBAAgB,CAAC;AAGxB,8FAA8F;AAC9F,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAC/D,6FAA6F;AAC7F,MAAM,CAAC,MAAM,oCAAoC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AACrE,MAAM,gCAAgC,GAAG,EAAE,GAAG,IAAI,CAAC;AAUnD,SAAS,oBAAoB,CAAC,SAAwB,EAAE,YAAoB;IAC3E,OAAO;QACN,eAAe,EAAE,qBAAqB;QACtC,SAAS;QACT,YAAY;KACZ,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC9B,GAAW,EACX,WAAmB,EACnB,KAAa,EACb,SAAiB,EACjB,oBAA4B;IAE5B,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC/G,MAAM,UAAU,GAAG,gBAAgB,KAAK,GAAG,CAAC,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG;QACZ,UAAU;QACV,IAAI,EAAE,MAAe;QACrB,GAAG,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,IAAI;QACrC,SAAS;KACT,CAAC;IACF,IAAI,YAA0C,CAAC;IAC/C,IAAI,CAAC;QACJ,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACzB,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACN,QAAQ,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,oBAAoB,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE;gBACjF,SAAS,EAAE,SAAS;gBACpB,mBAAmB,EAAE,CAAC;aACtB,CAAC;QACH,CAAC;QACD,OAAO;YACN,QAAQ,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,oBAAoB,CAAC,YAAY,EAAE,eAAe,CAAC,EAAE;YACpF,SAAS,EAAE,YAAY;YACvB,mBAAmB,EAAE,CAAC;SACtB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5B,OAAO;YACN,QAAQ,EAAE;gBACT,GAAG,IAAI;gBACP,SAAS,EAAE,YAAY,CAAC,IAAI;gBAC5B,QAAQ,EAAE,oBAAoB,CAAC,aAAa,EAAE,gBAAgB,CAAC;aAC/D;YACD,SAAS,EAAE,aAAa;YACxB,mBAAmB,EAAE,CAAC;SACtB,CAAC;IACH,CAAC;IAED,IAAI,cAAkC,CAAC;IACvC,IAAI,CAAC;QACJ,cAAc,GAAG,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACrB,OAAO;gBACN,QAAQ,EAAE;oBACT,GAAG,IAAI;oBACP,SAAS,EAAE,KAAK,CAAC,IAAI;oBACrB,QAAQ,EAAE,oBAAoB,CAAC,aAAa,EAAE,gBAAgB,CAAC;iBAC/D;gBACD,SAAS,EAAE,aAAa;gBACxB,mBAAmB,EAAE,CAAC;aACtB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC1F,IAAI,KAAK,CAAC,IAAI,GAAG,8BAA8B,EAAE,CAAC;YACjD,OAAO;gBACN,QAAQ,EAAE;oBACT,GAAG,IAAI;oBACP,SAAS,EAAE,KAAK,CAAC,IAAI;oBACrB,QAAQ,EAAE;wBACT,GAAG,oBAAoB,CAAC,SAAS,EAAE,oBAAoB,CAAC;wBACxD,cAAc,EAAE,8BAA8B;qBAC9C;iBACD;gBACD,SAAS,EAAE,SAAS;gBACpB,mBAAmB,EAAE,CAAC;aACtB,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,GAAG,oBAAoB,EAAE,CAAC;YACvC,OAAO;gBACN,QAAQ,EAAE;oBACT,GAAG,IAAI;oBACP,SAAS,EAAE,KAAK,CAAC,IAAI;oBACrB,QAAQ,EAAE;wBACT,GAAG,oBAAoB,CAAC,SAAS,EAAE,yBAAyB,CAAC;wBAC7D,mBAAmB,EAAE,oCAAoC;qBACzD;iBACD;gBACD,SAAS,EAAE,SAAS;gBACpB,mBAAmB,EAAE,CAAC;aACtB,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,gCAAgC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvG,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,OAAO,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,QAAQ,CACzB,cAAc,EACd,MAAM,EACN,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,GAAG,WAAW,CAAC,EACjD,WAAW,CACX,CAAC;YACF,IAAI,SAAS,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YACnE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;YAC3C,WAAW,IAAI,SAAS,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACtG,OAAO;YACN,QAAQ,EAAE;gBACT,GAAG,IAAI;gBACP,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC1B,SAAS,EAAE,KAAK,CAAC,IAAI;gBACrB,QAAQ,EAAE;oBACT,GAAG,oBAAoB,CAAC,SAAS,EAAE,UAAU,CAAC;oBAC9C,eAAe,EAAE,QAAQ;oBACzB,WAAW,EAAE,WAAW;iBACxB;aACD;YACD,SAAS,EAAE,SAAS;YACpB,mBAAmB,EAAE,WAAW;SAChC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,OAAO;YACN,QAAQ,EAAE;gBACT,GAAG,IAAI;gBACP,SAAS,EAAE,YAAY,CAAC,IAAI;gBAC5B,QAAQ,EAAE,oBAAoB,CAAC,YAAY,EAAE,eAAe,CAAC;aAC7D;YACD,SAAS,EAAE,YAAY;YACvB,mBAAmB,EAAE,CAAC;SACtB,CAAC;IACH,CAAC;YAAS,CAAC;QACV,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC;gBACJ,SAAS,CAAC,cAAc,CAAC,CAAC;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACR,kFAAkF;YACnF,CAAC;QACF,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AAClG,CAAC;AAED,SAAS,qBAAqB,CAC7B,YAAuD,EACvD,SAAiB;IAEjB,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5D,UAAU,EAAE,mBAAmB,KAAK,GAAG,CAAC,EAAE;QAC1C,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,2BAA2B;QACpC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QAClC,OAAO,EAAE,IAAI;QACb,SAAS;QACT,QAAQ,EAAE,EAAE,WAAW,EAAE,qBAAqB,EAAE,SAAS,EAAE;KAC3D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAkB,EAAE,SAAiB;IAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC;IAChD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACxC,UAAU,EAAE,kBAAkB,KAAK,GAAG,CAAC,EAAE;QACzC,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,KAAK;QACd,SAAS;QACT,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7F,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAC5B,KAAkB,EAClB,QAAiB,EACjB,YAA+B,EAC/B,SAAiB;IAEjB,IAAI,CAAC,KAAK,CAAC,YAAY;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,aAAa,GAAG,QAAQ,CAAC;IAC/B,OAAO;QACN;YACC,UAAU,EAAE,oBAAoB;YAChC,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,EAAE;YACf,OAAO,EAAE,aAAa;YACtB,SAAS;YACT,QAAQ,EAAE;gBACT,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC,aAAa;gBAC/C,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,OAAO;gBACnC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC;aAChD;SACD;QACD,GAAG,YAAY,CAAC,GAAG,CAClB,CAAC,WAAW,EAAE,KAAK,EAAoB,EAAE,CAAC,CAAC;YAC1C,UAAU,EAAE,gCAAgC,KAAK,GAAG,CAAC,EAAE;YACvD,WAAW;YACX,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,EAAE;YACf,OAAO,EAAE,aAAa,IAAI,KAAK,CAAC,YAAY,EAAE,OAAO,KAAK,UAAU;YACpE,SAAS;YACT,QAAQ,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,YAAY,EAAE,aAAa,IAAI,EAAE,EAAE;SACpE,CAAC,CACF;KACD,CAAC;AACH,CAAC;AAoBD,qFAAqF;AACrF,MAAM,UAAU,0BAA0B,CAAC,IAAqC;IAC/E,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7D,2FAA2F;IAC3F,gGAAgG;IAChG,MAAM,KAAK,GAAG,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,MAAM,GACX,KAAK,CAAC,MAAM,KAAK,WAAW;QAC3B,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,oBAAoB;YAC5C,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,SAAS;QACZ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IACjB,MAAM,uBAAuB,GAAqC,EAAE,CAAC;IACrE,IAAI,oBAAoB,GAAG,oCAAoC,CAAC;IAChE,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;QACjE,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAC1G,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,oBAAoB,IAAI,WAAW,CAAC,mBAAmB,CAAC;IACzD,CAAC;IACD,MAAM,SAAS,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IACtC,OAAO;QACN,aAAa,EAAE,4BAA4B;QAC3C,QAAQ,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;QACvE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;QACpC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;QAC1B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;QAChC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;QAC5B,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;QACtC,MAAM;QACN,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,CAAC,MAAM,EAAE;QACvD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS;QACT,QAAQ,EAAE;YACT,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;YACrC,GAAG,qBAAqB,CAAC,uBAAuB,EAAE,SAAS,CAAC;YAC5D,GAAG,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,wBAAwB,IAAI,EAAE,EAAE,SAAS,CAAC;SAC7F;QACD,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1F,GAAG,CAAC,IAAI,CAAC,oBAAoB;YAC5B,CAAC,CAAC,EAAE,UAAU,EAAE,mCAAmC,EAAE;YACrD,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,oBAAoB;gBAC7C,CAAC,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE;gBACjC,CAAC,CAAC,EAAE,CAAC;QACP,KAAK,EAAE;YACN,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/E,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;SACzB;QACD,SAAS;KACT,CAAC;AACH,CAAC","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { closeSync, fstatSync, lstatSync, openSync, readSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { WorkerClaim } from \"../autonomy/contracts.ts\";\nimport { normalizeWorkerClaimForHost } from \"../delegation/worker-claim.ts\";\nimport { sameFileVersion } from \"../util/bounded-file.ts\";\nimport {\n\ttype ArtifactContract,\n\ttype EvidenceContract,\n\tORCHESTRATION_SCHEMA_VERSION,\n\ttype WorkerResultContract,\n} from \"./contracts.ts\";\nimport type { StartedDelegationAttempt } from \"./delegation-ledger.ts\";\n\n/** Matches the default text-read ceiling while keeping synchronous result capture bounded. */\nexport const MAX_WORKER_ARTIFACT_HASH_BYTES = 16 * 1024 * 1024;\n/** A terminal result may report many files; bound their cumulative synchronous reads too. */\nexport const MAX_WORKER_ARTIFACT_HASH_TOTAL_BYTES = 32 * 1024 * 1024;\nconst WORKER_ARTIFACT_HASH_CHUNK_BYTES = 64 * 1024;\n\ntype HostFileState = \"regular\" | \"missing\" | \"non_regular\" | \"read_error\";\n\ninterface ChangedFileArtifactObservation {\n\tartifact: ArtifactContract;\n\tfileState: HostFileState;\n\tdigestBytesCaptured: number;\n}\n\nfunction metadataForFileState(fileState: HostFileState, digestStatus: string): ArtifactContract[\"metadata\"] {\n\treturn {\n\t\thostObservation: \"file_state_captured\",\n\t\tfileState,\n\t\tdigestStatus,\n\t};\n}\n\nfunction artifactForChangedFile(\n\tcwd: string,\n\tchangedPath: string,\n\tindex: number,\n\tcreatedAt: string,\n\tremainingDigestBytes: number,\n): ChangedFileArtifactObservation {\n\tconst absolutePath = path.isAbsolute(changedPath) ? path.resolve(changedPath) : path.resolve(cwd, changedPath);\n\tconst artifactId = `changed-file-${index + 1}`;\n\tconst base = {\n\t\tartifactId,\n\t\tkind: \"file\" as const,\n\t\turi: pathToFileURL(absolutePath).href,\n\t\tcreatedAt,\n\t};\n\tlet initialStats: ReturnType<typeof lstatSync>;\n\ttry {\n\t\tinitialStats = lstatSync(absolutePath);\n\t} catch (error: unknown) {\n\t\tif (isMissingFileError(error)) {\n\t\t\treturn {\n\t\t\t\tartifact: { ...base, metadata: metadataForFileState(\"missing\", \"not_available\") },\n\t\t\t\tfileState: \"missing\",\n\t\t\t\tdigestBytesCaptured: 0,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tartifact: { ...base, metadata: metadataForFileState(\"read_error\", \"not_available\") },\n\t\t\tfileState: \"read_error\",\n\t\t\tdigestBytesCaptured: 0,\n\t\t};\n\t}\n\n\tif (!initialStats.isFile()) {\n\t\treturn {\n\t\t\tartifact: {\n\t\t\t\t...base,\n\t\t\t\tsizeBytes: initialStats.size,\n\t\t\t\tmetadata: metadataForFileState(\"non_regular\", \"not_applicable\"),\n\t\t\t},\n\t\t\tfileState: \"non_regular\",\n\t\t\tdigestBytesCaptured: 0,\n\t\t};\n\t}\n\n\tlet fileDescriptor: number | undefined;\n\ttry {\n\t\tfileDescriptor = openSync(absolutePath, \"r\");\n\t\tconst stats = fstatSync(fileDescriptor);\n\t\tif (!stats.isFile()) {\n\t\t\treturn {\n\t\t\t\tartifact: {\n\t\t\t\t\t...base,\n\t\t\t\t\tsizeBytes: stats.size,\n\t\t\t\t\tmetadata: metadataForFileState(\"non_regular\", \"not_applicable\"),\n\t\t\t\t},\n\t\t\t\tfileState: \"non_regular\",\n\t\t\t\tdigestBytesCaptured: 0,\n\t\t\t};\n\t\t}\n\t\tif (!sameFileVersion(initialStats, stats)) throw new Error(\"File changed before hashing\");\n\t\tif (stats.size > MAX_WORKER_ARTIFACT_HASH_BYTES) {\n\t\t\treturn {\n\t\t\t\tartifact: {\n\t\t\t\t\t...base,\n\t\t\t\t\tsizeBytes: stats.size,\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t...metadataForFileState(\"regular\", \"omitted_size_limit\"),\n\t\t\t\t\t\tdigestMaxBytes: MAX_WORKER_ARTIFACT_HASH_BYTES,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tfileState: \"regular\",\n\t\t\t\tdigestBytesCaptured: 0,\n\t\t\t};\n\t\t}\n\t\tif (stats.size > remainingDigestBytes) {\n\t\t\treturn {\n\t\t\t\tartifact: {\n\t\t\t\t\t...base,\n\t\t\t\t\tsizeBytes: stats.size,\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t...metadataForFileState(\"regular\", \"omitted_aggregate_limit\"),\n\t\t\t\t\t\tdigestTotalMaxBytes: MAX_WORKER_ARTIFACT_HASH_TOTAL_BYTES,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tfileState: \"regular\",\n\t\t\t\tdigestBytesCaptured: 0,\n\t\t\t};\n\t\t}\n\n\t\tconst hash = createHash(\"sha256\");\n\t\tconst buffer = Buffer.allocUnsafe(Math.min(WORKER_ARTIFACT_HASH_CHUNK_BYTES, Math.max(stats.size, 1)));\n\t\tlet bytesHashed = 0;\n\t\twhile (bytesHashed < stats.size) {\n\t\t\tconst bytesRead = readSync(\n\t\t\t\tfileDescriptor,\n\t\t\t\tbuffer,\n\t\t\t\t0,\n\t\t\t\tMath.min(buffer.length, stats.size - bytesHashed),\n\t\t\t\tbytesHashed,\n\t\t\t);\n\t\t\tif (bytesRead === 0) throw new Error(\"File changed while hashing\");\n\t\t\thash.update(buffer.subarray(0, bytesRead));\n\t\t\tbytesHashed += bytesRead;\n\t\t}\n\t\tif (!sameFileVersion(stats, fstatSync(fileDescriptor))) throw new Error(\"File changed while hashing\");\n\t\treturn {\n\t\t\tartifact: {\n\t\t\t\t...base,\n\t\t\t\tdigest: hash.digest(\"hex\"),\n\t\t\t\tsizeBytes: stats.size,\n\t\t\t\tmetadata: {\n\t\t\t\t\t...metadataForFileState(\"regular\", \"computed\"),\n\t\t\t\t\tdigestAlgorithm: \"sha256\",\n\t\t\t\t\tdigestBytes: bytesHashed,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfileState: \"regular\",\n\t\t\tdigestBytesCaptured: bytesHashed,\n\t\t};\n\t} catch {\n\t\treturn {\n\t\t\tartifact: {\n\t\t\t\t...base,\n\t\t\t\tsizeBytes: initialStats.size,\n\t\t\t\tmetadata: metadataForFileState(\"read_error\", \"not_available\"),\n\t\t\t},\n\t\t\tfileState: \"read_error\",\n\t\t\tdigestBytesCaptured: 0,\n\t\t};\n\t} finally {\n\t\tif (fileDescriptor !== undefined) {\n\t\t\ttry {\n\t\t\t\tcloseSync(fileDescriptor);\n\t\t\t} catch {\n\t\t\t\t// The captured state remains valid even if the descriptor close reports an error.\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction isMissingFileError(error: unknown): boolean {\n\treturn typeof error === \"object\" && error !== null && \"code\" in error && error.code === \"ENOENT\";\n}\n\nfunction hostFileStateEvidence(\n\tobservations: readonly ChangedFileArtifactObservation[],\n\tcreatedAt: string,\n): EvidenceContract[] {\n\treturn observations.map(({ artifact, fileState }, index) => ({\n\t\tevidenceId: `host-file-state-${index + 1}`,\n\t\tkind: \"observation\",\n\t\tsummary: \"Host captured file state.\",\n\t\tartifactIds: [artifact.artifactId],\n\t\ttrusted: true,\n\t\tcreatedAt,\n\t\tmetadata: { observation: \"file_state_captured\", fileState },\n\t}));\n}\n\nfunction evidenceForClaim(claim: WorkerClaim, createdAt: string): EvidenceContract[] {\n\tconst findings = claim.evidence?.findings ?? [];\n\treturn findings.map((finding, index) => ({\n\t\tevidenceId: `worker-finding-${index + 1}`,\n\t\tkind: \"observation\",\n\t\tsummary: finding.summary,\n\t\tartifactIds: [],\n\t\ttrusted: false,\n\t\tcreatedAt,\n\t\t...(finding.confidence !== undefined ? { metadata: { confidence: finding.confidence } } : {}),\n\t}));\n}\n\nfunction verificationEvidence(\n\tclaim: WorkerClaim,\n\taccepted: boolean,\n\tcriterionIds: readonly string[],\n\tcreatedAt: string,\n): EvidenceContract[] {\n\tif (!claim.verification) return [];\n\tconst trustedReview = accepted;\n\treturn [\n\t\t{\n\t\t\tevidenceId: \"independent-review\",\n\t\t\tkind: \"review\",\n\t\t\tsummary: claim.summary,\n\t\t\tartifactIds: [],\n\t\t\ttrusted: trustedReview,\n\t\t\tcreatedAt,\n\t\t\tmetadata: {\n\t\t\t\tsubjectTaskId: claim.verification.subjectTaskId,\n\t\t\t\tverdict: claim.verification.verdict,\n\t\t\t\treasonCodes: [...claim.verification.reasonCodes],\n\t\t\t},\n\t\t},\n\t\t...criterionIds.map(\n\t\t\t(criterionId, index): EvidenceContract => ({\n\t\t\t\tevidenceId: `independent-review-criterion-${index + 1}`,\n\t\t\t\tcriterionId,\n\t\t\t\tkind: \"review\",\n\t\t\t\tsummary: claim.summary,\n\t\t\t\tartifactIds: [],\n\t\t\t\ttrusted: trustedReview && claim.verification?.verdict === \"accepted\",\n\t\t\t\tcreatedAt,\n\t\t\t\tmetadata: { subjectTaskId: claim.verification?.subjectTaskId ?? \"\" },\n\t\t\t}),\n\t\t),\n\t];\n}\n\n/** Inputs shared by every worker terminal path before the durable result is committed. */\nexport interface CreateWorkerResultContractInput {\n\thandle: StartedDelegationAttempt;\n\tclaim: WorkerClaim;\n\taccepted: boolean;\n\tcostUsd?: number;\n\tcwd: string;\n\tinputTokens?: number;\n\toutputTokens?: number;\n\ttotalTokens?: number;\n\twallClockMs: number;\n\ttoolCalls: number;\n\tverificationRequired?: boolean;\n\tverificationCriterionIds?: readonly string[];\n\treasonCode?: string;\n\tcreatedAt?: string;\n}\n\n/** Sole host-owned conversion from an untrusted claim to a fenced durable result. */\nexport function createWorkerResultContract(args: CreateWorkerResultContractInput): WorkerResultContract {\n\tconst createdAt = args.createdAt ?? new Date().toISOString();\n\t// Result construction is reachable from recovery/error paths as well as the native runner.\n\t// Normalize first so no claim can expand file iteration, hashing, evidence, or durable results.\n\tconst claim = normalizeWorkerClaimForHost(args.claim);\n\tconst status: WorkerResultContract[\"status\"] =\n\t\tclaim.status === \"completed\"\n\t\t\t? args.accepted && !args.verificationRequired\n\t\t\t\t? \"completed\"\n\t\t\t\t: \"partial\"\n\t\t\t: claim.status;\n\tconst changedFileObservations: ChangedFileArtifactObservation[] = [];\n\tlet remainingDigestBytes = MAX_WORKER_ARTIFACT_HASH_TOTAL_BYTES;\n\tfor (const [index, changedPath] of claim.changedFiles.entries()) {\n\t\tconst observation = artifactForChangedFile(args.cwd, changedPath, index, createdAt, remainingDigestBytes);\n\t\tchangedFileObservations.push(observation);\n\t\tremainingDigestBytes -= observation.digestBytesCaptured;\n\t}\n\tconst artifacts = changedFileObservations.map(({ artifact }) => artifact);\n\tconst blockers = claim.blockers ?? [];\n\treturn {\n\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\tresultId: `result-${args.handle.attemptId}-${args.handle.fencingToken}`,\n\t\tobjectiveId: args.handle.objectiveId,\n\t\ttaskId: args.handle.taskId,\n\t\tattemptId: args.handle.attemptId,\n\t\tleaseId: args.handle.leaseId,\n\t\tfencingToken: args.handle.fencingToken,\n\t\tstatus,\n\t\treasonCode: args.reasonCode ?? `worker_${claim.status}`,\n\t\tsummary: claim.summary,\n\t\tartifacts,\n\t\tevidence: [\n\t\t\t...evidenceForClaim(claim, createdAt),\n\t\t\t...hostFileStateEvidence(changedFileObservations, createdAt),\n\t\t\t...verificationEvidence(claim, args.accepted, args.verificationCriterionIds ?? [], createdAt),\n\t\t],\n\t\terrors: blockers.map((message) => ({ code: \"worker_blocker\", message, retryable: false })),\n\t\t...(args.verificationRequired\n\t\t\t? { nextAction: \"independent_verification_required\" }\n\t\t\t: !args.accepted || claim.parentReviewRequired\n\t\t\t\t? { nextAction: \"parent_review\" }\n\t\t\t\t: {}),\n\t\tusage: {\n\t\t\t...(args.inputTokens !== undefined ? { inputTokens: args.inputTokens } : {}),\n\t\t\t...(args.outputTokens !== undefined ? { outputTokens: args.outputTokens } : {}),\n\t\t\t...(args.totalTokens !== undefined ? { totalTokens: args.totalTokens } : {}),\n\t\t\t...(args.costUsd !== undefined ? { costUsd: args.costUsd } : {}),\n\t\t\twallClockMs: args.wallClockMs,\n\t\t\ttoolCalls: args.toolCalls,\n\t\t},\n\t\tcreatedAt,\n\t};\n}\n"]}
1
+ {"version":3,"file":"worker-result-adapter.js","sourceRoot":"","sources":["../../../src/core/orchestration/worker-result-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { closeSync, fstatSync, lstatSync, openSync, readSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { WorkerClaim } from \"../autonomy/contracts.ts\";\nimport { normalizeWorkerClaimForHost } from \"../delegation/worker-claim.ts\";\nimport { sameFileVersion } from \"../util/bounded-file.ts\";\nimport { utf8PrefixByBytes } from \"../util/bounded-value.ts\";\nimport {\n\ttype ArtifactContract,\n\ttype EvidenceContract,\n\tMAX_ORCHESTRATION_WORKER_RESULT_SUMMARY_BYTES,\n\tORCHESTRATION_SCHEMA_VERSION,\n\ttype WorkerResultContract,\n} from \"./contracts.ts\";\nimport type { StartedDelegationAttempt } from \"./delegation-ledger.ts\";\n\n/** Matches the default text-read ceiling while keeping synchronous result capture bounded. */\nexport const MAX_WORKER_ARTIFACT_HASH_BYTES = 16 * 1024 * 1024;\n/** A terminal result may report many files; bound their cumulative synchronous reads too. */\nexport const MAX_WORKER_ARTIFACT_HASH_TOTAL_BYTES = 32 * 1024 * 1024;\nconst WORKER_ARTIFACT_HASH_CHUNK_BYTES = 64 * 1024;\nconst WORKER_RESULT_SUMMARY_TRUNCATION_NOTICE =\n\t\"\\n\\n[Worker summary truncated; full output remains in the worker transcript.]\";\n\ntype HostFileState = \"regular\" | \"missing\" | \"non_regular\" | \"read_error\";\n\ninterface ChangedFileArtifactObservation {\n\tartifact: ArtifactContract;\n\tfileState: HostFileState;\n\tdigestBytesCaptured: number;\n}\n\nfunction metadataForFileState(fileState: HostFileState, digestStatus: string): ArtifactContract[\"metadata\"] {\n\treturn {\n\t\thostObservation: \"file_state_captured\",\n\t\tfileState,\n\t\tdigestStatus,\n\t};\n}\n\nfunction artifactForChangedFile(\n\tcwd: string,\n\tchangedPath: string,\n\tindex: number,\n\tcreatedAt: string,\n\tremainingDigestBytes: number,\n): ChangedFileArtifactObservation {\n\tconst absolutePath = path.isAbsolute(changedPath) ? path.resolve(changedPath) : path.resolve(cwd, changedPath);\n\tconst artifactId = `changed-file-${index + 1}`;\n\tconst base = {\n\t\tartifactId,\n\t\tkind: \"file\" as const,\n\t\turi: pathToFileURL(absolutePath).href,\n\t\tcreatedAt,\n\t};\n\tlet initialStats: ReturnType<typeof lstatSync>;\n\ttry {\n\t\tinitialStats = lstatSync(absolutePath);\n\t} catch (error: unknown) {\n\t\tif (isMissingFileError(error)) {\n\t\t\treturn {\n\t\t\t\tartifact: { ...base, metadata: metadataForFileState(\"missing\", \"not_available\") },\n\t\t\t\tfileState: \"missing\",\n\t\t\t\tdigestBytesCaptured: 0,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tartifact: { ...base, metadata: metadataForFileState(\"read_error\", \"not_available\") },\n\t\t\tfileState: \"read_error\",\n\t\t\tdigestBytesCaptured: 0,\n\t\t};\n\t}\n\n\tif (!initialStats.isFile()) {\n\t\treturn {\n\t\t\tartifact: {\n\t\t\t\t...base,\n\t\t\t\tsizeBytes: initialStats.size,\n\t\t\t\tmetadata: metadataForFileState(\"non_regular\", \"not_applicable\"),\n\t\t\t},\n\t\t\tfileState: \"non_regular\",\n\t\t\tdigestBytesCaptured: 0,\n\t\t};\n\t}\n\n\tlet fileDescriptor: number | undefined;\n\ttry {\n\t\tfileDescriptor = openSync(absolutePath, \"r\");\n\t\tconst stats = fstatSync(fileDescriptor);\n\t\tif (!stats.isFile()) {\n\t\t\treturn {\n\t\t\t\tartifact: {\n\t\t\t\t\t...base,\n\t\t\t\t\tsizeBytes: stats.size,\n\t\t\t\t\tmetadata: metadataForFileState(\"non_regular\", \"not_applicable\"),\n\t\t\t\t},\n\t\t\t\tfileState: \"non_regular\",\n\t\t\t\tdigestBytesCaptured: 0,\n\t\t\t};\n\t\t}\n\t\tif (!sameFileVersion(initialStats, stats)) throw new Error(\"File changed before hashing\");\n\t\tif (stats.size > MAX_WORKER_ARTIFACT_HASH_BYTES) {\n\t\t\treturn {\n\t\t\t\tartifact: {\n\t\t\t\t\t...base,\n\t\t\t\t\tsizeBytes: stats.size,\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t...metadataForFileState(\"regular\", \"omitted_size_limit\"),\n\t\t\t\t\t\tdigestMaxBytes: MAX_WORKER_ARTIFACT_HASH_BYTES,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tfileState: \"regular\",\n\t\t\t\tdigestBytesCaptured: 0,\n\t\t\t};\n\t\t}\n\t\tif (stats.size > remainingDigestBytes) {\n\t\t\treturn {\n\t\t\t\tartifact: {\n\t\t\t\t\t...base,\n\t\t\t\t\tsizeBytes: stats.size,\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t...metadataForFileState(\"regular\", \"omitted_aggregate_limit\"),\n\t\t\t\t\t\tdigestTotalMaxBytes: MAX_WORKER_ARTIFACT_HASH_TOTAL_BYTES,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tfileState: \"regular\",\n\t\t\t\tdigestBytesCaptured: 0,\n\t\t\t};\n\t\t}\n\n\t\tconst hash = createHash(\"sha256\");\n\t\tconst buffer = Buffer.allocUnsafe(Math.min(WORKER_ARTIFACT_HASH_CHUNK_BYTES, Math.max(stats.size, 1)));\n\t\tlet bytesHashed = 0;\n\t\twhile (bytesHashed < stats.size) {\n\t\t\tconst bytesRead = readSync(\n\t\t\t\tfileDescriptor,\n\t\t\t\tbuffer,\n\t\t\t\t0,\n\t\t\t\tMath.min(buffer.length, stats.size - bytesHashed),\n\t\t\t\tbytesHashed,\n\t\t\t);\n\t\t\tif (bytesRead === 0) throw new Error(\"File changed while hashing\");\n\t\t\thash.update(buffer.subarray(0, bytesRead));\n\t\t\tbytesHashed += bytesRead;\n\t\t}\n\t\tif (!sameFileVersion(stats, fstatSync(fileDescriptor))) throw new Error(\"File changed while hashing\");\n\t\treturn {\n\t\t\tartifact: {\n\t\t\t\t...base,\n\t\t\t\tdigest: hash.digest(\"hex\"),\n\t\t\t\tsizeBytes: stats.size,\n\t\t\t\tmetadata: {\n\t\t\t\t\t...metadataForFileState(\"regular\", \"computed\"),\n\t\t\t\t\tdigestAlgorithm: \"sha256\",\n\t\t\t\t\tdigestBytes: bytesHashed,\n\t\t\t\t},\n\t\t\t},\n\t\t\tfileState: \"regular\",\n\t\t\tdigestBytesCaptured: bytesHashed,\n\t\t};\n\t} catch {\n\t\treturn {\n\t\t\tartifact: {\n\t\t\t\t...base,\n\t\t\t\tsizeBytes: initialStats.size,\n\t\t\t\tmetadata: metadataForFileState(\"read_error\", \"not_available\"),\n\t\t\t},\n\t\t\tfileState: \"read_error\",\n\t\t\tdigestBytesCaptured: 0,\n\t\t};\n\t} finally {\n\t\tif (fileDescriptor !== undefined) {\n\t\t\ttry {\n\t\t\t\tcloseSync(fileDescriptor);\n\t\t\t} catch {\n\t\t\t\t// The captured state remains valid even if the descriptor close reports an error.\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction isMissingFileError(error: unknown): boolean {\n\treturn typeof error === \"object\" && error !== null && \"code\" in error && error.code === \"ENOENT\";\n}\n\nfunction hostFileStateEvidence(\n\tobservations: readonly ChangedFileArtifactObservation[],\n\tcreatedAt: string,\n): EvidenceContract[] {\n\treturn observations.map(({ artifact, fileState }, index) => ({\n\t\tevidenceId: `host-file-state-${index + 1}`,\n\t\tkind: \"observation\",\n\t\tsummary: \"Host captured file state.\",\n\t\tartifactIds: [artifact.artifactId],\n\t\ttrusted: true,\n\t\tcreatedAt,\n\t\tmetadata: { observation: \"file_state_captured\", fileState },\n\t}));\n}\n\nfunction evidenceForClaim(claim: WorkerClaim, createdAt: string): EvidenceContract[] {\n\tconst findings = claim.evidence?.findings ?? [];\n\treturn findings.map((finding, index) => ({\n\t\tevidenceId: `worker-finding-${index + 1}`,\n\t\tkind: \"observation\",\n\t\tsummary: finding.summary,\n\t\tartifactIds: [],\n\t\ttrusted: false,\n\t\tcreatedAt,\n\t\t...(finding.confidence !== undefined ? { metadata: { confidence: finding.confidence } } : {}),\n\t}));\n}\n\nfunction durableWorkerResultSummary(value: string, outputArtifact?: ArtifactContract): string {\n\tconst summary = value.trim();\n\tif (outputArtifact) {\n\t\tconst artifactNotice = `\\n\\n[Full worker output: ${outputArtifact.uri}]`;\n\t\tconst noticeBytes = Buffer.byteLength(artifactNotice, \"utf8\");\n\t\tif (noticeBytes > MAX_ORCHESTRATION_WORKER_RESULT_SUMMARY_BYTES) {\n\t\t\tthrow new Error(\"Worker terminal output artifact URI exceeds the durable summary limit.\");\n\t\t}\n\t\treturn `${utf8PrefixByBytes(\n\t\t\tsummary,\n\t\t\tMAX_ORCHESTRATION_WORKER_RESULT_SUMMARY_BYTES - noticeBytes,\n\t\t)}${artifactNotice}`;\n\t}\n\tif (Buffer.byteLength(summary, \"utf8\") <= MAX_ORCHESTRATION_WORKER_RESULT_SUMMARY_BYTES) return summary;\n\tconst noticeBytes = Buffer.byteLength(WORKER_RESULT_SUMMARY_TRUNCATION_NOTICE, \"utf8\");\n\treturn `${utf8PrefixByBytes(\n\t\tsummary,\n\t\tMAX_ORCHESTRATION_WORKER_RESULT_SUMMARY_BYTES - noticeBytes,\n\t)}${WORKER_RESULT_SUMMARY_TRUNCATION_NOTICE}`;\n}\n\nfunction verificationEvidence(\n\tclaim: WorkerClaim,\n\tsummary: string,\n\taccepted: boolean,\n\tcriterionIds: readonly string[],\n\tcreatedAt: string,\n): EvidenceContract[] {\n\tif (!claim.verification) return [];\n\tconst trustedReview = accepted;\n\treturn [\n\t\t{\n\t\t\tevidenceId: \"independent-review\",\n\t\t\tkind: \"review\",\n\t\t\tsummary,\n\t\t\tartifactIds: [],\n\t\t\ttrusted: trustedReview,\n\t\t\tcreatedAt,\n\t\t\tmetadata: {\n\t\t\t\tsubjectTaskId: claim.verification.subjectTaskId,\n\t\t\t\tverdict: claim.verification.verdict,\n\t\t\t\treasonCodes: [...claim.verification.reasonCodes],\n\t\t\t},\n\t\t},\n\t\t...criterionIds.map(\n\t\t\t(criterionId, index): EvidenceContract => ({\n\t\t\t\tevidenceId: `independent-review-criterion-${index + 1}`,\n\t\t\t\tcriterionId,\n\t\t\t\tkind: \"review\",\n\t\t\t\tsummary,\n\t\t\t\tartifactIds: [],\n\t\t\t\ttrusted: trustedReview && claim.verification?.verdict === \"accepted\",\n\t\t\t\tcreatedAt,\n\t\t\t\tmetadata: { subjectTaskId: claim.verification?.subjectTaskId ?? \"\" },\n\t\t\t}),\n\t\t),\n\t];\n}\n\n/** Inputs shared by every worker terminal path before the durable result is committed. */\nexport interface CreateWorkerResultContractInput {\n\thandle: StartedDelegationAttempt;\n\tclaim: WorkerClaim;\n\taccepted: boolean;\n\tcostUsd?: number;\n\tcwd: string;\n\tinputTokens?: number;\n\toutputTokens?: number;\n\ttotalTokens?: number;\n\twallClockMs: number;\n\ttoolCalls: number;\n\tverificationRequired?: boolean;\n\tverificationCriterionIds?: readonly string[];\n\treasonCode?: string;\n\tcreatedAt?: string;\n\toutputArtifact?: ArtifactContract;\n}\n\n/** Sole host-owned conversion from an untrusted claim to a fenced durable result. */\nexport function createWorkerResultContract(args: CreateWorkerResultContractInput): WorkerResultContract {\n\tconst createdAt = args.createdAt ?? new Date().toISOString();\n\t// Result construction is reachable from recovery/error paths as well as the native runner.\n\t// Normalize first so no claim can expand file iteration, hashing, evidence, or durable results.\n\tconst claim = normalizeWorkerClaimForHost(args.claim);\n\tconst summary = durableWorkerResultSummary(claim.summary, args.outputArtifact);\n\tconst status: WorkerResultContract[\"status\"] =\n\t\tclaim.status === \"completed\"\n\t\t\t? args.accepted && !args.verificationRequired\n\t\t\t\t? \"completed\"\n\t\t\t\t: \"partial\"\n\t\t\t: claim.status;\n\tconst changedFileObservations: ChangedFileArtifactObservation[] = [];\n\tlet remainingDigestBytes = MAX_WORKER_ARTIFACT_HASH_TOTAL_BYTES;\n\tfor (const [index, changedPath] of claim.changedFiles.entries()) {\n\t\tconst observation = artifactForChangedFile(args.cwd, changedPath, index, createdAt, remainingDigestBytes);\n\t\tchangedFileObservations.push(observation);\n\t\tremainingDigestBytes -= observation.digestBytesCaptured;\n\t}\n\tconst artifacts = [\n\t\t...changedFileObservations.map(({ artifact }) => artifact),\n\t\t...(args.outputArtifact ? [args.outputArtifact] : []),\n\t];\n\tconst blockers = claim.blockers ?? [];\n\treturn {\n\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\tresultId: `result-${args.handle.attemptId}-${args.handle.fencingToken}`,\n\t\tobjectiveId: args.handle.objectiveId,\n\t\ttaskId: args.handle.taskId,\n\t\tattemptId: args.handle.attemptId,\n\t\tleaseId: args.handle.leaseId,\n\t\tfencingToken: args.handle.fencingToken,\n\t\tstatus,\n\t\treasonCode: args.reasonCode ?? `worker_${claim.status}`,\n\t\tsummary,\n\t\tartifacts,\n\t\tevidence: [\n\t\t\t...evidenceForClaim(claim, createdAt),\n\t\t\t...hostFileStateEvidence(changedFileObservations, createdAt),\n\t\t\t...(args.outputArtifact\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tevidenceId: \"host-worker-terminal-output\",\n\t\t\t\t\t\t\tkind: \"observation\" as const,\n\t\t\t\t\t\t\tsummary: \"Host persisted the complete terminal worker output.\",\n\t\t\t\t\t\t\tartifactIds: [args.outputArtifact.artifactId],\n\t\t\t\t\t\t\ttrusted: true,\n\t\t\t\t\t\t\tcreatedAt,\n\t\t\t\t\t\t\tmetadata: { observation: \"worker_terminal_output_persisted\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t]\n\t\t\t\t: []),\n\t\t\t...verificationEvidence(claim, summary, args.accepted, args.verificationCriterionIds ?? [], createdAt),\n\t\t],\n\t\terrors: blockers.map((message) => ({ code: \"worker_blocker\", message, retryable: false })),\n\t\t...(args.verificationRequired\n\t\t\t? { nextAction: \"independent_verification_required\" }\n\t\t\t: !args.accepted || claim.parentReviewRequired\n\t\t\t\t? { nextAction: \"parent_review\" }\n\t\t\t\t: {}),\n\t\tusage: {\n\t\t\t...(args.inputTokens !== undefined ? { inputTokens: args.inputTokens } : {}),\n\t\t\t...(args.outputTokens !== undefined ? { outputTokens: args.outputTokens } : {}),\n\t\t\t...(args.totalTokens !== undefined ? { totalTokens: args.totalTokens } : {}),\n\t\t\t...(args.costUsd !== undefined ? { costUsd: args.costUsd } : {}),\n\t\t\twallClockMs: args.wallClockMs,\n\t\t\ttoolCalls: args.toolCalls,\n\t\t},\n\t\tcreatedAt,\n\t};\n}\n"]}
@@ -52,7 +52,7 @@ import type { MemoryManager } from "./memory/memory-manager.ts";
52
52
  import type { MemoryControllerReloadSnapshot } from "./memory-controller.ts";
53
53
  import type { LaneWorkerRefusal } from "./model-capability.ts";
54
54
  import type { ModelRegistry } from "./model-registry.ts";
55
- import type { OrchestrationProfile } from "./orchestration/contracts.ts";
55
+ import type { OrchestrationProfile, WorkerResultContract } from "./orchestration/contracts.ts";
56
56
  import type { TaskProfileWriterPort } from "./orchestration/task-profile-writer.ts";
57
57
  import { type PipelineRun } from "./pipelines/types.ts";
58
58
  import type { ProfileFilterReloadSnapshot } from "./profile-filter-controller.ts";
@@ -188,7 +188,7 @@ export interface RuntimeBuilderDeps {
188
188
  getGoalStateSnapshot(): GoalState | undefined;
189
189
  saveGoalStateSnapshot(state: GoalState, expected?: GoalStateRevision): string;
190
190
  /** Authorize model-facing goal creation and its exact owner-requested token ceiling. */
191
- authorizeGoalStartFromTool?(input: Pick<GoalToolInput, "userGoal" | "tokenBudget">): string | undefined;
191
+ authorizeGoalStartFromTool?(input: Pick<GoalToolInput, "userGoal" | "tokenBudget">): string | number | null | undefined;
192
192
  /** Native task-step state accessors. */
193
193
  getTaskStepsStateSnapshot(): TaskStepsState | undefined;
194
194
  saveTaskStepsStateSnapshot(state: TaskStepsState): string;
@@ -212,6 +212,7 @@ export interface RuntimeBuilderDeps {
212
212
  }>;
213
213
  getWorkerLaneRecords(): LaneRecord[];
214
214
  getWorkerClaimSnapshots(): WorkerClaim[];
215
+ getWorkerResult?(laneId: string): WorkerResultContract | undefined;
215
216
  /** Confirm a managed dispatch's caller-stable canonical lane id was registered durably before the
216
217
  * goal binds it (`BackgroundLaneController.resolveManagedLaneId`). */
217
218
  resolveManagedLaneId(callerLaneId: string): string | undefined;
@@ -286,6 +287,8 @@ export declare class RuntimeBuilder {
286
287
  private _reloadRequested;
287
288
  private readonly _credentialManager;
288
289
  private readonly _credentialExposureBoundary;
290
+ private readonly _credentialBootstrapFiles;
291
+ private readonly _credentialDiscoveryRoots;
289
292
  private readonly _fileMutationIntents;
290
293
  private readonly deps;
291
294
  constructor(deps: RuntimeBuilderDeps);
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-builder.d.ts","sourceRoot":"","sources":["../../src/core/runtime-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-builder.d.ts","sourceRoot":"","sources":["../../src/core/runtime-builder.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@
35
35
  import { existsSync } from "node:fs";
36
36
  import { isAbsolute, join } from "node:path";
37
37
  import { getShellEnv } from "../utils/shell.js";
38
- import { managedSecretEnvDir, resourceDir, secretVaultFile } from "./agent-paths.js";
38
+ import { bitwardenSecretsManagerCoordinationFile, managedSecretEnvDir, resourceDir, secretVaultFile, } from "./agent-paths.js";
39
39
  import { deriveCompositeChildEnvelope, wrapToolWithCapabilityEnvelopeGate } from "./autonomy/composite-tool-gate.js";
40
40
  import { isPathWithinEnvelope } from "./autonomy/envelope-enforcement.js";
41
41
  import { isCompletedBackgroundToolEvidence } from "./background-tool-task-controller.js";
@@ -58,10 +58,12 @@ import { resolveCurrentProjectPipelineRun } from "./pipelines/run-state.js";
58
58
  import { isPipelineRunActive } from "./pipelines/types.js";
59
59
  import { describeInFlightWorkUnit, getInFlightWorkUnits } from "./reload-blockers.js";
60
60
  import { ScoutController } from "./scout-controller.js";
61
- import { BitwardenCredentialStorage } from "./secrets/bitwarden-credential-storage.js";
61
+ import { BitwardenCredentialStorageRouter } from "./secrets/bitwarden-credential-storage-router.js";
62
62
  import { wrapToolWithCredentialExposureGuard, } from "./secrets/credential-exposure-guard.js";
63
+ import { discoverMachineCredentialSession, getMachineCredentialBootstrapFiles, getMachineCredentialDiscoveryRoots, } from "./secrets/credential-machine-session.js";
63
64
  import { CredentialManager } from "./secrets/credential-manager.js";
64
65
  import { resolveCredentialProject } from "./secrets/credential-project.js";
66
+ import { discoverCredentialMigrationSources } from "./secrets/credential-source-discovery.js";
65
67
  import { getSessionRole, isWorkerSession, WORKER_FORBIDDEN_TOOLS } from "./session-role.js";
66
68
  import { matchesResourceProfilePattern, } from "./settings-manager.js";
67
69
  import { createSyntheticSourceInfo } from "./source-info.js";
@@ -150,9 +152,18 @@ export class RuntimeBuilder {
150
152
  this._explicitLiveExtensionPaths = new Set();
151
153
  this._reloadRequested = false;
152
154
  this.deps = deps;
155
+ this._credentialBootstrapFiles = getMachineCredentialBootstrapFiles(deps.getAgentDir());
156
+ this._credentialDiscoveryRoots = getMachineCredentialDiscoveryRoots(deps.getAgentDir());
153
157
  this._credentialManager = new CredentialManager({
154
- storage: new BitwardenCredentialStorage(),
158
+ storage: new BitwardenCredentialStorageRouter({
159
+ secretsManagerCoordinationFile: bitwardenSecretsManagerCoordinationFile(deps.getAgentDir()),
160
+ }),
155
161
  resolveProject: resolveCredentialProject,
162
+ resolveMachineSession: (signal) => {
163
+ if (signal?.aborted)
164
+ return Promise.resolve(undefined);
165
+ return discoverMachineCredentialSession({ candidateFiles: this._credentialBootstrapFiles, signal });
166
+ },
156
167
  onEnvironmentChanged: () => {
157
168
  const sessionKey = deps.getShellSessionKey();
158
169
  disposeShellExecutionSession(sessionKey);
@@ -161,7 +172,7 @@ export class RuntimeBuilder {
161
172
  this._credentialExposureBoundary = {
162
173
  redactSensitiveText: (text) => this._credentialManager.redactSensitiveText(text),
163
174
  // Data from the retired local vault remains protected even though it is no longer executable.
164
- protectedFiles: [secretVaultFile(deps.getAgentDir())],
175
+ protectedFiles: [secretVaultFile(deps.getAgentDir()), ...this._credentialBootstrapFiles],
165
176
  protectedDirectories: [managedSecretEnvDir(deps.getAgentDir())],
166
177
  };
167
178
  this._fileMutationIntents = new FileMutationIntentController();
@@ -601,9 +612,7 @@ export class RuntimeBuilder {
601
612
  if (shouldBuildGoalExecutor) {
602
613
  const goalToolDefinition = createGoalToolDefinition({
603
614
  getGoalState: () => this.deps.getGoalStateSnapshot(),
604
- authorizeStart: (input) => this.deps.authorizeGoalStartFromTool
605
- ? this.deps.authorizeGoalStartFromTool(input)
606
- : "goal start requires explicit owner authorization in the current prompt.",
615
+ authorizeStart: (input) => this.deps.authorizeGoalStartFromTool ? this.deps.authorizeGoalStartFromTool(input) : null,
607
616
  saveGoalState: (state, expected) => {
608
617
  this.deps.saveGoalStateSnapshot(state, expected);
609
618
  },
@@ -722,7 +731,13 @@ export class RuntimeBuilder {
722
731
  this._baseToolDefinitions.set(askQuestionToolDefinition.name, askQuestionToolDefinition);
723
732
  }
724
733
  if (toolAccess.allows("secret_store")) {
725
- const secretStoreToolDefinition = createSecretStoreToolDefinition({ manager: this._credentialManager });
734
+ const secretStoreToolDefinition = createSecretStoreToolDefinition({
735
+ manager: this._credentialManager,
736
+ discoverMigrationSources: (cwd, signal) => discoverCredentialMigrationSources(cwd, signal, process.env, {
737
+ additionalRoots: this._credentialDiscoveryRoots,
738
+ excludedFiles: this._credentialBootstrapFiles,
739
+ }),
740
+ });
726
741
  this._baseToolDefinitions.set(secretStoreToolDefinition.name, secretStoreToolDefinition);
727
742
  }
728
743
  if (toolAccess.allows("delegate")) {
@@ -754,6 +769,9 @@ export class RuntimeBuilder {
754
769
  status: {
755
770
  getLaneRecords: () => this.deps.getWorkerLaneRecords(),
756
771
  getWorkerClaimSnapshots: () => this.deps.getWorkerClaimSnapshots(),
772
+ ...(this.deps.getWorkerResult
773
+ ? { getWorkerResult: (laneId) => this.deps.getWorkerResult?.(laneId) }
774
+ : {}),
757
775
  acknowledgeWorkerReview: (requestId) => acknowledgeWorkerClaimReview(this.deps.getSessionManager(), requestId),
758
776
  },
759
777
  ...(profileWriter ? { profileWriter } : {}),