@caupulican/pi-adaptative 0.93.11 → 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.
- package/CHANGELOG.md +19 -0
- package/dist/core/agent-paths.d.ts +6 -0
- package/dist/core/agent-paths.d.ts.map +1 -1
- package/dist/core/agent-paths.js +15 -0
- package/dist/core/agent-paths.js.map +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +2 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/background-lane-controller.d.ts +2 -0
- package/dist/core/background-lane-controller.d.ts.map +1 -1
- package/dist/core/background-lane-controller.js +3 -0
- package/dist/core/background-lane-controller.js.map +1 -1
- package/dist/core/background-tool-task-controller.d.ts +4 -0
- package/dist/core/background-tool-task-controller.d.ts.map +1 -1
- package/dist/core/background-tool-task-controller.js +22 -19
- package/dist/core/background-tool-task-controller.js.map +1 -1
- package/dist/core/delegation/worker-agent-control-coordinator.d.ts +3 -1
- package/dist/core/delegation/worker-agent-control-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-agent-control-coordinator.js +8 -0
- package/dist/core/delegation/worker-agent-control-coordinator.js.map +1 -1
- package/dist/core/delegation/worker-attempt-executor.d.ts +2 -1
- package/dist/core/delegation/worker-attempt-executor.d.ts.map +1 -1
- package/dist/core/delegation/worker-attempt-executor.js +14 -1
- package/dist/core/delegation/worker-attempt-executor.js.map +1 -1
- package/dist/core/delegation/worker-claim.d.ts +4 -1
- package/dist/core/delegation/worker-claim.d.ts.map +1 -1
- package/dist/core/delegation/worker-claim.js +20 -2
- package/dist/core/delegation/worker-claim.js.map +1 -1
- package/dist/core/delegation/worker-delegation-controller.d.ts.map +1 -1
- package/dist/core/delegation/worker-delegation-controller.js +2 -0
- package/dist/core/delegation/worker-delegation-controller.js.map +1 -1
- package/dist/core/delegation/worker-lifecycle.d.ts +1 -0
- package/dist/core/delegation/worker-lifecycle.d.ts.map +1 -1
- package/dist/core/delegation/worker-lifecycle.js +3 -0
- package/dist/core/delegation/worker-lifecycle.js.map +1 -1
- package/dist/core/delegation/worker-runner.d.ts.map +1 -1
- package/dist/core/delegation/worker-runner.js +15 -9
- package/dist/core/delegation/worker-runner.js.map +1 -1
- package/dist/core/delegation/worker-terminal-output-artifact.d.ts +14 -0
- package/dist/core/delegation/worker-terminal-output-artifact.d.ts.map +1 -0
- package/dist/core/delegation/worker-terminal-output-artifact.js +49 -0
- package/dist/core/delegation/worker-terminal-output-artifact.js.map +1 -0
- package/dist/core/foreground-terminal-handoff-controller.d.ts +3 -0
- package/dist/core/foreground-terminal-handoff-controller.d.ts.map +1 -1
- package/dist/core/foreground-terminal-handoff-controller.js +6 -0
- package/dist/core/foreground-terminal-handoff-controller.js.map +1 -1
- package/dist/core/goals/goal-session-controller.d.ts +2 -2
- package/dist/core/goals/goal-session-controller.d.ts.map +1 -1
- package/dist/core/goals/goal-session-controller.js +2 -11
- package/dist/core/goals/goal-session-controller.js.map +1 -1
- package/dist/core/orchestration/contracts.d.ts +2 -0
- package/dist/core/orchestration/contracts.d.ts.map +1 -1
- package/dist/core/orchestration/contracts.js +3 -0
- package/dist/core/orchestration/contracts.js.map +1 -1
- package/dist/core/orchestration/task-runtime-codecs.d.ts.map +1 -1
- package/dist/core/orchestration/task-runtime-codecs.js +11 -2
- package/dist/core/orchestration/task-runtime-codecs.js.map +1 -1
- package/dist/core/orchestration/worker-result-adapter.d.ts +2 -1
- package/dist/core/orchestration/worker-result-adapter.d.ts.map +1 -1
- package/dist/core/orchestration/worker-result-adapter.js +41 -7
- package/dist/core/orchestration/worker-result-adapter.js.map +1 -1
- package/dist/core/runtime-builder.d.ts +5 -2
- package/dist/core/runtime-builder.d.ts.map +1 -1
- package/dist/core/runtime-builder.js +26 -8
- package/dist/core/runtime-builder.js.map +1 -1
- package/dist/core/secrets/bitwarden-credential-storage-router.d.ts +22 -0
- package/dist/core/secrets/bitwarden-credential-storage-router.d.ts.map +1 -0
- package/dist/core/secrets/bitwarden-credential-storage-router.js +59 -0
- package/dist/core/secrets/bitwarden-credential-storage-router.js.map +1 -0
- package/dist/core/secrets/bitwarden-credential-storage.d.ts +2 -8
- package/dist/core/secrets/bitwarden-credential-storage.d.ts.map +1 -1
- package/dist/core/secrets/bitwarden-credential-storage.js +23 -134
- package/dist/core/secrets/bitwarden-credential-storage.js.map +1 -1
- package/dist/core/secrets/bitwarden-secrets-manager-storage.d.ts +46 -0
- package/dist/core/secrets/bitwarden-secrets-manager-storage.d.ts.map +1 -0
- package/dist/core/secrets/bitwarden-secrets-manager-storage.js +379 -0
- package/dist/core/secrets/bitwarden-secrets-manager-storage.js.map +1 -0
- package/dist/core/secrets/credential-cli-command.d.ts +22 -0
- package/dist/core/secrets/credential-cli-command.d.ts.map +1 -0
- package/dist/core/secrets/credential-cli-command.js +82 -0
- package/dist/core/secrets/credential-cli-command.js.map +1 -0
- package/dist/core/secrets/credential-exposure-guard.d.ts +1 -1
- package/dist/core/secrets/credential-exposure-guard.d.ts.map +1 -1
- package/dist/core/secrets/credential-exposure-guard.js +5 -1
- package/dist/core/secrets/credential-exposure-guard.js.map +1 -1
- package/dist/core/secrets/credential-machine-session.d.ts +13 -0
- package/dist/core/secrets/credential-machine-session.d.ts.map +1 -0
- package/dist/core/secrets/credential-machine-session.js +139 -0
- package/dist/core/secrets/credential-machine-session.js.map +1 -0
- package/dist/core/secrets/credential-manager.d.ts +11 -1
- package/dist/core/secrets/credential-manager.d.ts.map +1 -1
- package/dist/core/secrets/credential-manager.js +44 -9
- package/dist/core/secrets/credential-manager.js.map +1 -1
- package/dist/core/secrets/credential-profile-envelope.d.ts +10 -0
- package/dist/core/secrets/credential-profile-envelope.d.ts.map +1 -0
- package/dist/core/secrets/credential-profile-envelope.js +78 -0
- package/dist/core/secrets/credential-profile-envelope.js.map +1 -0
- package/dist/core/secrets/credential-session-connection.d.ts.map +1 -1
- package/dist/core/secrets/credential-session-connection.js +2 -1
- package/dist/core/secrets/credential-session-connection.js.map +1 -1
- package/dist/core/secrets/credential-source-discovery.d.ts +7 -3
- package/dist/core/secrets/credential-source-discovery.d.ts.map +1 -1
- package/dist/core/secrets/credential-source-discovery.js +48 -9
- package/dist/core/secrets/credential-source-discovery.js.map +1 -1
- package/dist/core/tools/delegate-status.d.ts +4 -0
- package/dist/core/tools/delegate-status.d.ts.map +1 -1
- package/dist/core/tools/delegate-status.js +20 -4
- package/dist/core/tools/delegate-status.js.map +1 -1
- package/dist/core/tools/goal.d.ts +2 -2
- package/dist/core/tools/goal.d.ts.map +1 -1
- package/dist/core/tools/goal.js +30 -11
- package/dist/core/tools/goal.js.map +1 -1
- package/dist/core/tools/secret-store.d.ts.map +1 -1
- package/dist/core/tools/secret-store.js +6 -15
- package/dist/core/tools/secret-store.js.map +1 -1
- package/dist/core/tools/tool-task.d.ts.map +1 -1
- package/dist/core/tools/tool-task.js +6 -3
- package/dist/core/tools/tool-task.js.map +1 -1
- package/dist/core/util/bounded-value.d.ts +2 -0
- package/dist/core/util/bounded-value.d.ts.map +1 -1
- package/dist/core/util/bounded-value.js +13 -0
- package/dist/core/util/bounded-value.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/tools-manager.d.ts +2 -1
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +29 -0
- package/dist/utils/tools-manager.js.map +1 -1
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +12 -12
- 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;
|
|
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 {
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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
|
|
259
|
+
summary,
|
|
239
260
|
artifacts,
|
|
240
261
|
evidence: [
|
|
241
262
|
...evidenceForClaim(claim, createdAt),
|
|
242
263
|
...hostFileStateEvidence(changedFileObservations, createdAt),
|
|
243
|
-
...
|
|
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":"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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 {\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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAIH,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAiB,MAAM,2BAA2B,CAAC;AAC7G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;
|
|
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 {
|
|
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
|
|
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({
|
|
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 } : {}),
|