@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.
- package/CHANGELOG.md +13 -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
|
@@ -146,6 +146,7 @@ export declare class WorkerLifecycle {
|
|
|
146
146
|
getManagedAttempt(laneId: string): AttemptRuntimeState | undefined;
|
|
147
147
|
getManagedHandle(laneId: string): StartedDelegationAttempt | undefined;
|
|
148
148
|
getActiveAttempt(laneId: string): AttemptRuntimeState | undefined;
|
|
149
|
+
getResult(laneId: string): WorkerResultContract | undefined;
|
|
149
150
|
getAttemptUsage(laneId: string): AttemptUsageSnapshot | undefined;
|
|
150
151
|
getRunningCount(profileId?: string): number;
|
|
151
152
|
getPendingTerminalNotifications(): Array<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/core/delegation/worker-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worker-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/core/delegation/worker-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -382,6 +382,9 @@ export class WorkerLifecycle {
|
|
|
382
382
|
getActiveAttempt(laneId) {
|
|
383
383
|
return selectedWorkerAttempt(this.ledger.runtime.getSnapshot(), laneId);
|
|
384
384
|
}
|
|
385
|
+
getResult(laneId) {
|
|
386
|
+
return this.getActiveAttempt(laneId)?.result;
|
|
387
|
+
}
|
|
385
388
|
getAttemptUsage(laneId) {
|
|
386
389
|
const attempt = this.getActiveAttempt(laneId);
|
|
387
390
|
return attempt ? this.ledger.getAttemptUsage(attempt.attemptId) : undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-lifecycle.js","sourceRoot":"","sources":["../../../src/core/delegation/worker-lifecycle.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,gCAAgC,EAAE,MAAM,sCAAsC,CAAC;AAWxF,OAAO,EACN,6BAA6B,GAI7B,MAAM,uCAAuC,CAAC;AAO/C,OAAO,EAAE,+BAA+B,EAAE,MAAM,+CAA+C,CAAC;AAChG,OAAO,EACN,8BAA8B,EAC9B,sBAAsB,EACtB,mCAAmC,EACnC,+BAA+B,EAC/B,uBAAuB,EACvB,4BAA4B,EAC5B,qBAAqB,GACrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,mCAAmC,EAAE,MAAM,2BAA2B,CAAC;AAoBrG;;;GAGG;AACH,MAAM,OAAO,eAAe;IAK3B,YAAY,OAYX;QACA,IAAI,CAAC,MAAM,GAAG,IAAI,6BAA6B,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,mBAAmB,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtE,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAClD,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAC7D,CAAC,EAAE,CAAC,CAAC,CAAC;QACN,IAAI,CAAC,cAAc,GAAG,OAAO,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,CACN,KAA6C,EAC7C,MAAe;QAKf,IAAI,cAAc,GAAG,MAAM,CAAC;QAC5B,MAAM,eAAe,GAAG,CAAC,cAAc,CAAC;QACxC,IAAI,CAAC,cAAc,EAAE,CAAC;YACrB,cAAc,GAAG,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACzD,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;QAC1E,IAAI,eAAe;YAAE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;QAC9F,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,cAAc,oCAAoC,CAAC,CAAC;QACpG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,0FAA0F;IAC1F,+BAA+B;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACnD,IAAI,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,OAAO,QAAQ,CAAC,KAAK,CAAC,UAAU,eAAe,EAAE,CAAC;YAAE,eAAe,IAAI,CAAC,CAAC;QACzE,OAAO,UAAU,eAAe,EAAE,CAAC;IACpC,CAAC;IAED,sEAAsE;IACtE,gBAAgB,CAAC,KAKhB;QAIA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,OAAO,yCAAyC,CAAC,CAAC;QACxG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED,WAAW,CAAC,KAKX;QACA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC/D,IACC,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;YAC5B,QAAQ,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa;YAC9C,CAAC,uBAAuB,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,EACpE,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,UAAU,OAAO,gDAAgD,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,kGAAkG;IAClG,WAAW,CAAC,OAAe;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,cAAc,CACb,KAGC;QAOD,MAAM,MAAM,GAAG,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7F,IAAI,MAAM,EAAE,QAAQ,CAAC,gBAAgB,KAAK,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAClE,IACC,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,QAAQ;gBACrC,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY;oBACnD,MAAM,CAAC,QAAQ,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;oBAC7C,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;oBAC3C,MAAM,CAAC,QAAQ,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe;oBACzD,MAAM,CAAC,QAAQ,CAAC,eAAe,KAAK,KAAK,CAAC,eAAe,CAAC,EAC1D,CAAC;gBACF,MAAM,IAAI,KAAK,CACd,mBAAmB,KAAK,CAAC,MAAM,UAAU,KAAK,CAAC,gBAAgB,kDAAkD,CACjH,CAAC;YACH,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC9F,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACnD,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,MAAM,sBAAsB,CAAC,CAAC;gBACpF,OAAO;oBACN,MAAM;oBACN,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAE;oBACtE,MAAM;oBACN,OAAO,EAAE,IAAI;iBACb,CAAC;YACH,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,MAAM,sBAAsB,CAAC,CAAC;YACpF,IAAI,CAAC,MAAM,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,MAAM,yBAAyB,CAAC,CAAC;YAC7F,OAAO;gBACN,MAAM;gBACN,OAAO,EAAE,MAAM;gBACf,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;gBAClC,OAAO,EAAE,KAAK;aACd,CAAC;QACH,CAAC;QACD,IAAI,MAAM,IAAI,8BAA8B,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CACd,mBAAmB,KAAK,CAAC,MAAM,0BAA0B,KAAK,CAAC,gBAAgB,eAAe,MAAM,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,aAAa,CAChJ,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QAC/F,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,MAAM,qCAAqC,CAAC,CAAC;QACnG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACnH,CAAC;IAED,oBAAoB,CAAC,IAAe;QACnC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3C,OAAO,CACN,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,SAAS,CAAC;gBACjD,MAAM,CAAC,MAAM,KAAK,QAAQ;gBAC1B,MAAM,CAAC,MAAM,KAAK,SAAS,CAC3B,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAc,EAAE,UAAkB;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,OAAe,EAAE,UAAkB,EAAE,OAAO,GAAG,OAAO;QAChF,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,UAAkB;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,sBAAsB,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAC3C,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,KAAK,CAAC,OAAO,EACrB,OAAO,CAAC,KAAK,CAAC,YAAY,EAC1B,UAAU,CACV,CAAC;IACH,CAAC;IAED,UAAU,CACT,MAAc,EACd,KAKC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,sBAAsB,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC;YAC5C,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO;YAC9B,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY;YACxC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9C,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,uCAAuC,CAAC,OAAgB;QACvD,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjF,IACC,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC;gBAC7D,CAAC,OAAO,CAAC,OAAO;gBAChB,OAAO,CAAC,QAAQ,CAAC,aAAa,KAAK,iBAAiB;gBACpD,CAAC,OAAO,CAAC,KAAK,EACb,CAAC;gBACF,SAAS;YACV,CAAC;YACD,MAAM,WAAW,GAChB,OAAO,KAAK,SAAS;gBACpB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO;gBACnC,CAAC,CAAC,mCAAmC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACpF,IAAI,CAAC,WAAW;gBAAE,SAAS;YAC3B,IAAI,CAAC,mBAAmB,CAAC;gBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO;gBAC9B,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO;gBAC9B,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY;gBACxC,UAAU,EACT,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,2BAA2B;aACjG,CAAC,CAAC;YACH,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,IAOnB;QACA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,MAAM,mDAAmD,CAAC,CAAC;QACpG,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC;YACvC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C,CAAC,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,MAAc,EAAE,OAAe,EAAE,UAAkB,EAAE,OAAO,GAAG,OAAO;QACjF,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,6BAA6B,CAAC,CAAC;QACtF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACjG,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IACnH,CAAC;IAED,YAAY,CACX,MAAc,EACd,OAAe,EACf,OAAe,EACf,UAAU,GAAG,mBAAmB,EAChC,KAAyB;QAEzB,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,yCAAyC,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,CAAC,mBAAmB,CAAC;YACxB,MAAM;YACN,OAAO;YACP,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO;YAC9B,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY;YACxC,UAAU;YACV,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3B,CAAC,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,IAMlB;QACA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACxF,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,MAAM,uCAAuC,CAAC,CAAC;QACrG,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,SAAiB,EAAE,KAAqB;QACjD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,MAA4B,EAAE,OAAO,GAAyB,EAAE;QACtE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,MAAM,uCAAuC,CAAC,CAAC;QACtG,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK;YAAE,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;QACvE,OAAO,MAAM,CAAC;IACf,CAAC;IAED,qBAAqB,CAAC,IAMrB;QACA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC;YACtC,MAAM,EAAE,IAAI,CAAC,aAAa;YAC1B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC3B,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,aAAa,sBAAsB,CAAC,CAAC;QAC5F,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,UAAkB;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,MAAM;YAAE,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,aAAa;QAKZ,OAAO,IAAI,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAChE,IAAI,sBAAsB,CAAC,OAAO,CAAC;gBAAE,OAAO,EAAE,CAAC;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;YAC3E,OAAO,MAAM;gBACZ,CAAC,CAAC;oBACA;wBACC,MAAM;wBACN,OAAO;wBACP,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC1F;iBACD;gBACF,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,oGAAoG;IACpG,gCAAgC;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACnD,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAA8B,CAAC,OAAO,EAAE,EAAE;YACrF,IAAI,OAAO,CAAC,YAAY;gBAAE,OAAO,EAAE,CAAC;YACpC,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnF,IAAI,qBAAqB,EAAE,MAAM,EAAE,UAAU,KAAK,mCAAmC;gBAAE,OAAO,EAAE,CAAC;YACjG,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;iBAC5C,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;iBAClF,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACT,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACf,MAAM,yBAAyB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,iBAAiB;oBACjF,CAAC,CAAC,+BAA+B,CAAC,qBAAqB,CAAC,QAAQ,CAAC,iBAAiB,CAAC;oBACnF,CAAC,CAAC,SAAS,CAAC;gBACb,OAAO;oBACN;wBACC,MAAM,EAAE,UAAmB;wBAC3B,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;wBAClC,uBAAuB,EAAE,qBAAqB,CAAC,QAAQ,CAAC,SAAS;wBACjE,OAAO,EAAE,qBAAqB,CAAC,MAAM,CAAC,OAAO;wBAC7C,YAAY,EAAE,qBAAqB,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;wBACpF,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACnE;iBACD,CAAC;YACH,CAAC;YACD,MAAM,eAAe,GAAG,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9E,IAAI,CAAC,eAAe,IAAI,mCAAmC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC;gBAAE,OAAO,EAAE,CAAC;YACnG,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CACnD,CAAC,QAAQ,EAAE,EAAE,CACZ,QAAQ,CAAC,OAAO;gBAChB,QAAQ,CAAC,IAAI,KAAK,QAAQ;gBAC1B,QAAQ,CAAC,QAAQ,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM;gBACxD,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,KAAK,UAAU,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,KAAK,UAAU,CAAC,CACvF,CAAC;YACF,MAAM,YAAY,GAAG,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC;YAC/C,MAAM,OAAO,GAAG,YAAY,KAAK,UAAU,IAAI,YAAY,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC;YAC3G,MAAM,gBAAgB,GAAG,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC;YACvD,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC;gBAClD,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,UAAU,EAAwB,EAAE,CAAC,OAAO,UAAU,KAAK,QAAQ,CAAC;gBAC/F,CAAC,CAAC,EAAE,CAAC;YACN,OAAO;gBACN;oBACC,MAAM,EAAE,WAAoB;oBAC5B,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;oBAClC,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM;oBACpC,iBAAiB,EAAE,eAAe,CAAC,SAAS;oBAC5C,OAAO;oBACP,UAAU,EACT,OAAO,KAAK,UAAU;wBACrB,CAAC,CAAC,mCAAmC;wBACrC,CAAC,CAAC,OAAO,KAAK,UAAU;4BACvB,CAAC,CAAC,qCAAqC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,aAAa,EAAE;4BAC/E,CAAC,CAAC,yCAAyC,eAAe,CAAC,UAAU,IAAI,eAAe,CAAC,MAAM,EAAE,UAAU,IAAI,aAAa,EAAE;iBACjI;aACD,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,MAAc;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,QAAQ,CAAC,OAAe;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,qBAAqB,CAAC,OAAe;QACpC,OAAO,gCAAgC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;IACrF,CAAC;IAED,sBAAsB;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC1C,CAAC;IAED,8EAA8E;IAC9E,2BAA2B,CAAC,SAAiB;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC,SAAS,CAAC,CAAC;IACnE,CAAC;IAED,UAAU;QACT,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACnD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACrD,MAAM,OAAO,GAAG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACxD,IAAI,CAAC,OAAO,IAAI,sBAAsB,CAAC,OAAO,CAAC;gBAAE,OAAO,EAAE,CAAC;YAC3D,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACzD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,iBAAiB;QAChB,OAAO,+BAA+B,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,aAAa;QACZ,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,SAAS,CAAC,MAAc;QACvB,OAAO,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC;IAED,gBAAgB,CAAC,MAAc;QAC9B,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAC5E,CAAC;IAED,iBAAiB,CAAC,MAAc;QAC/B,OAAO,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;IAChF,CAAC;IAED,gBAAgB,CAAC,MAAc;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjE,CAAC;IAED,gBAAgB,CAAC,MAAc;QAC9B,OAAO,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IAED,eAAe,CAAC,MAAc;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,CAAC;IAED,eAAe,CAAC,SAAkB;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACnD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YACpD,MAAM,OAAO,GAAG,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACxD,OAAO,CACN,OAAO,EAAE,MAAM,KAAK,SAAS;gBAC7B,CAAC,sBAAsB,CAAC,OAAO,CAAC;gBAChC,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,CACxD,CAAC;QACH,CAAC,CAAC,CAAC,MAAM,CAAC;IACX,CAAC;IAED,+BAA+B;QAC9B,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACnD,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;YACrE,IAAI,YAAY,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,SAAS;gBAAE,OAAO,EAAE,CAAC;YAC5E,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC1D,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACjE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO,EAAE,CAAC;YACpF,OAAO,CAAC,EAAE,cAAc,EAAE,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,uBAAuB,CACtB,MAAc;QAEd,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACvE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC3F,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAChF,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAC/B,MAAM,cAAc,GAAG,mBAAmB,OAAO,CAAC,SAAS,EAAE,CAAC;QAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACrF,OAAO,YAAY,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3F,CAAC;IAED,0BAA0B,CAAC,eAAkC;QAC5D,KAAK,MAAM,cAAc,IAAI,eAAe;YAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC;IAC7G,CAAC;IAEO,2BAA2B;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACnD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACzD,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzE,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;YAC1C,CAAC;QACF,CAAC;IACF,CAAC;IAEO,2BAA2B,CAAC,MAAkB;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9F,IAAI,CAAC,OAAO,IAAI,mCAAmC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO;QAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,OAAO,CAAC,MAAM,EAAE,UAAU,KAAK,mCAAmC,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QACrG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC;YACvC,cAAc,EAAE,mBAAmB,OAAO,CAAC,SAAS,EAAE;YACtD,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;YAClC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,UAAU,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,MAAM,GAAG;SAC5D,CAAC,CAAC;IACJ,CAAC;IAEO,oBAAoB,CAAC,MAAc;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACrE,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,0BAA0B,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;IAEO,aAAa,CAAC,OAA4B;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,CAAC,SAAS,0BAA0B,CAAC,CAAC;QACtG,OAAO;YACN,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;YAClC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;YACxB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO;YAC9B,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY;YACxC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS;SAClC,CAAC;IACH,CAAC;IAEO,2BAA2B,CAClC,OAA4B,EAC5B,UAAkB,EAClB,YAAoG;QAEpG,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,CAAC,SAAS,wBAAwB,CAAC,CAAC;QAC1F,MAAM,KAAK,GAAG,YAAY,CAAC;YAC1B,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;YAClC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;YACxB,SAAS,EAAE,OAAO,CAAC,SAAS;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CACvB,OAAO,CAAC,SAAS,EACjB,UAAU,EACV,WAAW,OAAO,CAAC,QAAQ,CAAC,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAC7D,CAAC;IACH,CAAC;CACD","sourcesContent":["import type { LaneRecord } from \"../autonomy/lane-tracker.ts\";\nimport type { GoalState } from \"../goals/goal-state.ts\";\nimport { sameAgentResumeIdentity } from \"../orchestration/agent-resume.ts\";\nimport { latestAgentAttemptByDurableOrder } from \"../orchestration/attempt-ordering.ts\";\nimport type {\n\tAgentBindingContract,\n\tAgentResumeContext,\n\tAttemptRetryState,\n\tAttemptUsageSnapshot,\n\tExecutionGrant,\n\tWorkerExecutionContract,\n\tWorkerResultContract,\n\tWorkerRole,\n} from \"../orchestration/contracts.ts\";\nimport {\n\tDelegationOrchestrationLedger,\n\ttype PrepareDelegationInput,\n\ttype PrepareManagedDelegationInput,\n\ttype StartedDelegationAttempt,\n} from \"../orchestration/delegation-ledger.ts\";\nimport type { OrchestrationEventStore } from \"../orchestration/event-store.ts\";\nimport type {\n\tAttemptDispatchReadiness,\n\tAttemptRuntimeState,\n\tTaskRuntimeProjection,\n} from \"../orchestration/task-runtime.ts\";\nimport { verifierWorkerExecutionContract } from \"../orchestration/worker-execution-contract.ts\";\nimport {\n\tACTIVE_WORKER_ATTEMPT_STATUSES,\n\tisManagedWorkerAttempt,\n\tNONTERMINAL_WORKER_ATTEMPT_STATUSES,\n\tprojectManagedWorkerLaneRecords,\n\tprojectWorkerLaneRecord,\n\tselectedManagedWorkerAttempt,\n\tselectedWorkerAttempt,\n} from \"./worker-lane-projection.ts\";\nimport { isLocalProcessAlive, isLocalWorkerProcessOwnerProvenDead } from \"./worker-process-owner.ts\";\n\nexport type PendingVerificationRecovery =\n\t| {\n\t\t\taction: \"dispatch\";\n\t\t\tsubjectTaskId: string;\n\t\t\timplementationProfileId: string;\n\t\t\tsummary: string;\n\t\t\tartifactUris: readonly string[];\n\t\t\tverifierExecutionContract?: WorkerExecutionContract;\n\t }\n\t| {\n\t\t\taction: \"reconcile\";\n\t\t\tsubjectTaskId: string;\n\t\t\tverifierTaskId: string;\n\t\t\tverifierAttemptId: string;\n\t\t\tverdict: \"accepted\" | \"rejected\" | \"inconclusive\";\n\t\t\treasonCode: string;\n\t };\n\n/**\n * Sole owner of in-process worker lifecycle state. LaneRecord is a compatibility/UI projection;\n * all transitions are committed through DurableTaskRuntime before the projection is returned.\n */\nexport class WorkerLifecycle {\n\treadonly ledger: DelegationOrchestrationLedger;\n\tprivate nextLaneNumber: number;\n\tprivate readonly isProcessAlive: (pid: number) => boolean;\n\n\tconstructor(options: {\n\t\tagentDir: string;\n\t\tsessionId: string;\n\t\tisProcessAlive?: (pid: number) => boolean;\n\t\tnow?: () => number;\n\t\t/**\n\t\t * Pre-built durable event store, forwarded to `DelegationOrchestrationLedger`. Defaults to\n\t\t * `undefined`, which the ledger resolves to its own real `OrchestrationEventStore` — a\n\t\t * zero-behavior-change no-op for every existing caller. Only the destructive-testing harness\n\t\t * passes a store constructed over a fault-injecting `fs`.\n\t\t */\n\t\tstore?: OrchestrationEventStore;\n\t}) {\n\t\tthis.ledger = new DelegationOrchestrationLedger(options);\n\t\tthis.isProcessAlive = options.isProcessAlive ?? isLocalProcessAlive;\n\t\tconst snapshot = this.ledger.runtime.getSnapshot();\n\t\tconst highest = Object.keys(snapshot.tasks).reduce((current, taskId) => {\n\t\t\tconst suffix = /^worker-(\\d+)$/.exec(taskId)?.[1];\n\t\t\treturn suffix ? Math.max(current, Number(suffix)) : current;\n\t\t}, 0);\n\t\tthis.nextLaneNumber = highest + 1;\n\t}\n\n\tprepare(\n\t\tinput: Omit<PrepareDelegationInput, \"laneId\">,\n\t\tlaneId?: string,\n\t): {\n\t\trecord: LaneRecord;\n\t\tattempt: AttemptRuntimeState;\n\t} {\n\t\tlet selectedLaneId = laneId;\n\t\tconst generatedLaneId = !selectedLaneId;\n\t\tif (!selectedLaneId) {\n\t\t\tselectedLaneId = this.getNextAvailableLaneIdCandidate();\n\t\t}\n\t\tconst attempt = this.ledger.prepare({ ...input, laneId: selectedLaneId });\n\t\tif (generatedLaneId) this.nextLaneNumber = Number(selectedLaneId.slice(\"worker-\".length)) + 1;\n\t\tconst record = this.getRecord(selectedLaneId);\n\t\tif (!record) throw new Error(`Durable worker '${selectedLaneId}' was not projected after enqueue.`);\n\t\treturn { record, attempt };\n\t}\n\n\t/** Return the next generated lane id without reserving it or changing lifecycle state. */\n\tgetNextAvailableLaneIdCandidate(): string {\n\t\tconst snapshot = this.ledger.runtime.getSnapshot();\n\t\tlet candidateNumber = this.nextLaneNumber;\n\t\twhile (snapshot.tasks[`worker-${candidateNumber}`]) candidateNumber += 1;\n\t\treturn `worker-${candidateNumber}`;\n\t}\n\n\t/** Queue the next distinct task/attempt for an idle logical agent. */\n\tprepareAgentTurn(input: {\n\t\tagentId: string;\n\t\tinstructions: string;\n\t\tcontrolMessageId?: string;\n\t\tdependsOnTaskIds?: readonly string[];\n\t}): {\n\t\trecord: LaneRecord;\n\t\tattempt: AttemptRuntimeState;\n\t} {\n\t\tconst attempt = this.ledger.prepareAgentTurn(input);\n\t\tconst record = this.getRecord(attempt.taskId);\n\t\tif (!record) throw new Error(`Logical worker '${input.agentId}' turn was not projected after enqueue.`);\n\t\treturn { record, attempt };\n\t}\n\n\tensureAgent(input: {\n\t\tagentId: string;\n\t\tparentAgentId?: string;\n\t\trole: WorkerRole;\n\t\tresumeContext: AgentResumeContext;\n\t}): AgentBindingContract {\n\t\tconst agentId = input.agentId.trim();\n\t\tconst existing = this.ledger.runtime.getSnapshot().agents[agentId];\n\t\tif (!existing) return this.ledger.runtime.registerAgent(input);\n\t\tif (\n\t\t\texisting.role !== input.role ||\n\t\t\texisting.parentAgentId !== input.parentAgentId ||\n\t\t\t!sameAgentResumeIdentity(existing.resumeContext, input.resumeContext)\n\t\t) {\n\t\t\tthrow new Error(`Agent '${agentId}' was re-registered with conflicting identity.`);\n\t\t}\n\t\treturn existing;\n\t}\n\n\t/** Retire one idle logical worker while retaining its durable binding and transcript identity. */\n\tretireAgent(agentId: string): AgentBindingContract {\n\t\treturn this.ledger.runtime.retireAgent(agentId);\n\t}\n\n\tprepareManaged(\n\t\tinput: PrepareManagedDelegationInput & {\n\t\t\tleaseTtlMs: number;\n\t\t\tcompileGrant(target: { objectiveId: string; taskId: string; attemptId: string }): ExecutionGrant;\n\t\t},\n\t): {\n\t\trecord: LaneRecord;\n\t\tattempt: AttemptRuntimeState;\n\t\thandle: StartedDelegationAttempt;\n\t\tcreated: boolean;\n\t} {\n\t\tconst before = selectedManagedWorkerAttempt(this.ledger.runtime.getSnapshot(), input.laneId);\n\t\tif (before?.dispatch.dispatchSequence === input.dispatchSequence) {\n\t\t\tif (\n\t\t\t\tbefore.dispatch.provider !== \"legacy\" &&\n\t\t\t\t(before.dispatch.instructions !== input.instructions ||\n\t\t\t\t\tbefore.dispatch.profileId !== input.profileId ||\n\t\t\t\t\tbefore.dispatch.provider !== input.provider ||\n\t\t\t\t\tbefore.dispatch.worktreeLaneKey !== input.worktreeLaneKey ||\n\t\t\t\t\tbefore.dispatch.authorizationId !== input.authorizationId)\n\t\t\t) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Managed worker '${input.laneId}' turn ${input.dispatchSequence} was re-reported with conflicting dispatch data.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (before.status === \"queued\") {\n\t\t\t\tconst handle = this.startPreparedManagedAttempt(before, input.leaseTtlMs, input.compileGrant);\n\t\t\t\tconst record = this.getManagedRecord(input.laneId);\n\t\t\t\tif (!record) throw new Error(`Managed worker '${input.laneId}' was not projected.`);\n\t\t\t\treturn {\n\t\t\t\t\trecord,\n\t\t\t\t\tattempt: this.ledger.runtime.getSnapshot().attempts[before.attemptId]!,\n\t\t\t\t\thandle,\n\t\t\t\t\tcreated: true,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst record = this.getManagedRecord(input.laneId);\n\t\t\tif (!record) throw new Error(`Managed worker '${input.laneId}' was not projected.`);\n\t\t\tif (!before.lease) throw new Error(`Managed worker '${input.laneId}' has no durable lease.`);\n\t\t\treturn {\n\t\t\t\trecord,\n\t\t\t\tattempt: before,\n\t\t\t\thandle: this.startedHandle(before),\n\t\t\t\tcreated: false,\n\t\t\t};\n\t\t}\n\t\tif (before && ACTIVE_WORKER_ATTEMPT_STATUSES.has(before.status)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Managed worker '${input.laneId}' cannot dispatch turn ${input.dispatchSequence} while turn ${before.dispatch.dispatchSequence ?? 1} is active.`,\n\t\t\t);\n\t\t}\n\t\tconst attempt = this.ledger.prepareManaged(input);\n\t\tconst handle = this.startPreparedManagedAttempt(attempt, input.leaseTtlMs, input.compileGrant);\n\t\tconst record = this.getManagedRecord(input.laneId);\n\t\tif (!record) throw new Error(`Managed worker '${input.laneId}' was not projected after dispatch.`);\n\t\treturn { record, attempt: this.ledger.runtime.getSnapshot().attempts[attempt.attemptId]!, handle, created: true };\n\t}\n\n\tsynchronizeGoalState(goal: GoalState): LaneRecord[] {\n\t\tconst before = new Map(this.getRecords().map((record) => [record.laneId, record.status]));\n\t\tthis.ledger.synchronizeGoalState(goal);\n\t\treturn this.getRecords().filter((record) => {\n\t\t\tconst previous = before.get(record.laneId);\n\t\t\treturn (\n\t\t\t\t(previous === \"queued\" || previous === \"running\") &&\n\t\t\t\trecord.status !== \"queued\" &&\n\t\t\t\trecord.status !== \"running\"\n\t\t\t);\n\t\t});\n\t}\n\n\tstart(laneId: string, leaseTtlMs: number): StartedDelegationAttempt {\n\t\tconst attempt = this.requireActiveAttempt(laneId);\n\t\treturn this.ledger.start(attempt.attemptId, leaseTtlMs);\n\t}\n\n\tstartAgent(laneId: string, agentId: string, leaseTtlMs: number, ownerId = agentId): StartedDelegationAttempt {\n\t\tconst attempt = this.requireActiveAttempt(laneId);\n\t\treturn this.ledger.start(attempt.attemptId, leaseTtlMs, ownerId, agentId);\n\t}\n\n\trenewLease(laneId: string, leaseTtlMs: number) {\n\t\tconst attempt = this.requireActiveAttempt(laneId);\n\t\tif (!attempt.lease) throw new Error(`Durable worker '${laneId}' has no live lease.`);\n\t\treturn this.ledger.runtime.renewAttemptLease(\n\t\t\tattempt.attemptId,\n\t\t\tattempt.lease.leaseId,\n\t\t\tattempt.lease.fencingToken,\n\t\t\tleaseTtlMs,\n\t\t);\n\t}\n\n\tcheckpoint(\n\t\tlaneId: string,\n\t\tinput: {\n\t\t\tsummary: string;\n\t\t\tartifactIds?: readonly string[];\n\t\t\tevidenceIds?: readonly string[];\n\t\t\tusage?: AttemptUsageSnapshot;\n\t\t},\n\t) {\n\t\tconst attempt = this.requireActiveAttempt(laneId);\n\t\tif (!attempt.lease) throw new Error(`Durable worker '${laneId}' has no live lease.`);\n\t\treturn this.ledger.runtime.checkpointAttempt({\n\t\t\tattemptId: attempt.attemptId,\n\t\t\tleaseId: attempt.lease.leaseId,\n\t\t\tfencingToken: attempt.lease.fencingToken,\n\t\t\tsummary: input.summary,\n\t\t\t...(input.artifactIds ? { artifactIds: input.artifactIds } : {}),\n\t\t\t...(input.evidenceIds ? { evidenceIds: input.evidenceIds } : {}),\n\t\t\t...(input.usage ? { usage: input.usage } : {}),\n\t\t});\n\t}\n\n\t/**\n\t * Suspend only attempts whose exact controller owner is known (explicit shutdown) or whose\n\t * recorded local owner PID is proven gone (recovery). A live/unknown owner is never stolen.\n\t */\n\tsuspendBoundInProcessAttemptsForRestart(ownerId?: string): string[] {\n\t\tconst suspended: string[] = [];\n\t\tfor (const attempt of Object.values(this.ledger.runtime.getSnapshot().attempts)) {\n\t\t\tif (\n\t\t\t\t(attempt.status !== \"leased\" && attempt.status !== \"running\") ||\n\t\t\t\t!attempt.agentId ||\n\t\t\t\tattempt.dispatch.executionKind === \"managed-process\" ||\n\t\t\t\t!attempt.lease\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst ownsAttempt =\n\t\t\t\townerId !== undefined\n\t\t\t\t\t? attempt.lease.ownerId === ownerId\n\t\t\t\t\t: isLocalWorkerProcessOwnerProvenDead(attempt.lease.ownerId, this.isProcessAlive);\n\t\t\tif (!ownsAttempt) continue;\n\t\t\tthis.suspendBoundAttempt({\n\t\t\t\tlaneId: attempt.taskId,\n\t\t\t\townerId: attempt.lease.ownerId,\n\t\t\t\tleaseId: attempt.lease.leaseId,\n\t\t\t\tfencingToken: attempt.lease.fencingToken,\n\t\t\t\treasonCode:\n\t\t\t\t\townerId === undefined ? \"agent_process_recovered_after_owner_exit\" : \"agent_process_interrupted\",\n\t\t\t});\n\t\t\tsuspended.push(attempt.attemptId);\n\t\t}\n\t\treturn suspended;\n\t}\n\n\t/**\n\t * Applies an explicitly authorized restart suspension. The caller must identify both the logical\n\t * lane and the current lease fence; process liveness policy is intentionally kept by this class.\n\t */\n\tsuspendBoundAttempt(args: {\n\t\tlaneId: string;\n\t\townerId: string;\n\t\tleaseId: string;\n\t\tfencingToken: number;\n\t\treasonCode: string;\n\t\tretry?: AttemptRetryState;\n\t}): void {\n\t\tconst attempt = this.getActiveAttempt(args.laneId);\n\t\tif (!attempt || !attempt.agentId || !attempt.lease) {\n\t\t\tthrow new Error(`Durable worker '${args.laneId}' has no live agent-bound attempt for suspension.`);\n\t\t}\n\t\tthis.ledger.runtime.suspendBoundAttempt({\n\t\t\tattemptId: attempt.attemptId,\n\t\t\townerId: args.ownerId,\n\t\t\tleaseId: args.leaseId,\n\t\t\tfencingToken: args.fencingToken,\n\t\t\treasonCode: args.reasonCode,\n\t\t\t...(args.retry ? { retry: args.retry } : {}),\n\t\t});\n\t}\n\n\tresumeAgent(laneId: string, agentId: string, leaseTtlMs: number, ownerId = agentId): StartedDelegationAttempt {\n\t\tconst attempt = this.getActiveAttempt(laneId);\n\t\tif (!attempt) throw new Error(`Durable worker '${laneId}' has no resumable attempt.`);\n\t\tthis.ledger.runtime.assertAttemptReadyForResume(attempt.attemptId);\n\t\tthis.ledger.runtime.requestAgentResume(agentId, attempt.attemptId);\n\t\tconst lease = this.ledger.runtime.resumeAttempt(attempt.attemptId, agentId, leaseTtlMs, ownerId);\n\t\treturn this.startedHandle(this.ledger.runtime.startAttempt(attempt.attemptId, lease.leaseId, lease.fencingToken));\n\t}\n\n\tsuspendAgent(\n\t\tlaneId: string,\n\t\tagentId: string,\n\t\townerId: string,\n\t\treasonCode = \"agent_interrupted\",\n\t\tretry?: AttemptRetryState,\n\t): void {\n\t\tconst attempt = this.getActiveAttempt(laneId);\n\t\tif (!attempt || attempt.agentId !== agentId || !attempt.lease) {\n\t\t\tthrow new Error(`Logical worker '${agentId}' has no live attempt for interruption.`);\n\t\t}\n\t\tthis.suspendBoundAttempt({\n\t\t\tlaneId,\n\t\t\townerId,\n\t\t\tleaseId: attempt.lease.leaseId,\n\t\t\tfencingToken: attempt.lease.fencingToken,\n\t\t\treasonCode,\n\t\t\t...(retry ? { retry } : {}),\n\t\t});\n\t}\n\n\tscheduleAgentRetry(args: {\n\t\tlaneId: string;\n\t\tagentId: string;\n\t\townerId: string;\n\t\treasonCode: string;\n\t\tretry: AttemptRetryState;\n\t}): AttemptRuntimeState {\n\t\tthis.suspendAgent(args.laneId, args.agentId, args.ownerId, args.reasonCode, args.retry);\n\t\tconst attempt = this.getActiveAttempt(args.laneId);\n\t\tif (!attempt) throw new Error(`Durable worker '${args.laneId}' disappeared after retry suspension.`);\n\t\treturn attempt;\n\t}\n\n\tbindGrant(attemptId: string, grant: ExecutionGrant): void {\n\t\tthis.ledger.runtime.bindAttemptGrant(attemptId, grant);\n\t}\n\n\tfinish(result: WorkerResultContract, options: { notify?: boolean } = {}): LaneRecord {\n\t\tthis.ledger.runtime.finishAttempt(result);\n\t\tconst record = this.getRecord(result.taskId);\n\t\tif (!record) throw new Error(`Durable worker '${result.taskId}' was not projected after completion.`);\n\t\tif (options.notify !== false) this.enqueueTerminalNotification(record);\n\t\treturn record;\n\t}\n\n\treconcileVerification(args: {\n\t\tsubjectTaskId: string;\n\t\tverifierTaskId: string;\n\t\tverifierAttemptId: string;\n\t\tverdict: \"accepted\" | \"rejected\" | \"inconclusive\";\n\t\treasonCode: string;\n\t}): LaneRecord {\n\t\tthis.ledger.runtime.finishVerification({\n\t\t\ttaskId: args.subjectTaskId,\n\t\t\tverifierTaskId: args.verifierTaskId,\n\t\t\tverifierAttemptId: args.verifierAttemptId,\n\t\t\tverdict: args.verdict,\n\t\t\treasonCode: args.reasonCode,\n\t\t});\n\t\tconst subject = this.getRecord(args.subjectTaskId);\n\t\tif (!subject) throw new Error(`Verified worker '${args.subjectTaskId}' was not projected.`);\n\t\tthis.enqueueTerminalNotification(subject);\n\t\treturn subject;\n\t}\n\n\tcancel(laneId: string, reasonCode: string): LaneRecord | undefined {\n\t\tconst attempt = this.getActiveAttempt(laneId);\n\t\tif (!attempt) return this.getRecord(laneId);\n\t\tthis.ledger.cancel(attempt.attemptId, reasonCode);\n\t\tconst record = this.getRecord(laneId);\n\t\tif (record) this.enqueueTerminalNotification(record);\n\t\treturn record;\n\t}\n\n\trecoverQueued(): Array<{\n\t\trecord: LaneRecord;\n\t\tattempt: AttemptRuntimeState;\n\t\tverificationOfTaskId?: string;\n\t}> {\n\t\treturn this.ledger.recoverQueuedDispatches().flatMap((attempt) => {\n\t\t\tif (isManagedWorkerAttempt(attempt)) return [];\n\t\t\tconst record = this.getRecord(attempt.taskId);\n\t\t\tconst task = this.ledger.runtime.getSnapshot().tasks[attempt.taskId]?.task;\n\t\t\treturn record\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trecord,\n\t\t\t\t\t\t\tattempt,\n\t\t\t\t\t\t\t...(task?.verificationOfTaskId ? { verificationOfTaskId: task.verificationOfTaskId } : {}),\n\t\t\t\t\t\t},\n\t\t\t\t\t]\n\t\t\t\t: [];\n\t\t});\n\t}\n\n\t/** Close crash windows between implementation completion, verifier dispatch, and reconciliation. */\n\tgetPendingVerificationRecoveries(): PendingVerificationRecovery[] {\n\t\tconst snapshot = this.ledger.runtime.getSnapshot();\n\t\treturn Object.values(snapshot.tasks).flatMap<PendingVerificationRecovery>((subject) => {\n\t\t\tif (subject.verification) return [];\n\t\t\tconst implementationAttempt = selectedWorkerAttempt(snapshot, subject.task.taskId);\n\t\t\tif (implementationAttempt?.result?.nextAction !== \"independent_verification_required\") return [];\n\t\t\tconst verifier = Object.values(snapshot.tasks)\n\t\t\t\t.filter((candidate) => candidate.task.verificationOfTaskId === subject.task.taskId)\n\t\t\t\t.at(-1);\n\t\t\tif (!verifier) {\n\t\t\t\tconst verifierExecutionContract = implementationAttempt.dispatch.executionContract\n\t\t\t\t\t? verifierWorkerExecutionContract(implementationAttempt.dispatch.executionContract)\n\t\t\t\t\t: undefined;\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\taction: \"dispatch\" as const,\n\t\t\t\t\t\tsubjectTaskId: subject.task.taskId,\n\t\t\t\t\t\timplementationProfileId: implementationAttempt.dispatch.profileId,\n\t\t\t\t\t\tsummary: implementationAttempt.result.summary,\n\t\t\t\t\t\tartifactUris: implementationAttempt.result.artifacts.map((artifact) => artifact.uri),\n\t\t\t\t\t\t...(verifierExecutionContract ? { verifierExecutionContract } : {}),\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t}\n\t\t\tconst verifierAttempt = selectedWorkerAttempt(snapshot, verifier.task.taskId);\n\t\t\tif (!verifierAttempt || NONTERMINAL_WORKER_ATTEMPT_STATUSES.has(verifierAttempt.status)) return [];\n\t\t\tconst review = verifierAttempt.result?.evidence.find(\n\t\t\t\t(evidence) =>\n\t\t\t\t\tevidence.trusted &&\n\t\t\t\t\tevidence.kind === \"review\" &&\n\t\t\t\t\tevidence.metadata?.subjectTaskId === subject.task.taskId &&\n\t\t\t\t\t(evidence.metadata.verdict === \"accepted\" || evidence.metadata.verdict === \"rejected\"),\n\t\t\t);\n\t\t\tconst verdictValue = review?.metadata?.verdict;\n\t\t\tconst verdict = verdictValue === \"accepted\" || verdictValue === \"rejected\" ? verdictValue : \"inconclusive\";\n\t\t\tconst reasonCodesValue = review?.metadata?.reasonCodes;\n\t\t\tconst reasonCodes = Array.isArray(reasonCodesValue)\n\t\t\t\t? reasonCodesValue.filter((reasonCode): reasonCode is string => typeof reasonCode === \"string\")\n\t\t\t\t: [];\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\taction: \"reconcile\" as const,\n\t\t\t\t\tsubjectTaskId: subject.task.taskId,\n\t\t\t\t\tverifierTaskId: verifier.task.taskId,\n\t\t\t\t\tverifierAttemptId: verifierAttempt.attemptId,\n\t\t\t\t\tverdict,\n\t\t\t\t\treasonCode:\n\t\t\t\t\t\tverdict === \"accepted\"\n\t\t\t\t\t\t\t? \"independent_verification_accepted\"\n\t\t\t\t\t\t\t: verdict === \"rejected\"\n\t\t\t\t\t\t\t\t? `independent_verification_rejected:${reasonCodes.join(\",\") || \"unspecified\"}`\n\t\t\t\t\t\t\t\t: `independent_verification_inconclusive:${verifierAttempt.reasonCode ?? verifierAttempt.result?.reasonCode ?? \"interrupted\"}`,\n\t\t\t\t},\n\t\t\t];\n\t\t});\n\t}\n\n\tgetTask(taskId: string): TaskRuntimeProjection[\"tasks\"][string] | undefined {\n\t\treturn this.ledger.runtime.getSnapshot().tasks[taskId];\n\t}\n\n\tgetAgent(agentId: string): AgentBindingContract | undefined {\n\t\treturn this.ledger.runtime.getSnapshot().agents[agentId];\n\t}\n\n\tgetLatestAgentAttempt(agentId: string): AttemptRuntimeState | undefined {\n\t\treturn latestAgentAttemptByDurableOrder(this.ledger.runtime.getSnapshot(), agentId);\n\t}\n\n\tgetTaskRuntimeSnapshot(): TaskRuntimeProjection {\n\t\treturn this.ledger.runtime.getSnapshot();\n\t}\n\n\t/** Read-only dispatch gate for an already persisted queued worker attempt. */\n\tgetAttemptDispatchReadiness(attemptId: string): AttemptDispatchReadiness {\n\t\treturn this.ledger.runtime.getAttemptDispatchReadiness(attemptId);\n\t}\n\n\tgetRecords(): LaneRecord[] {\n\t\tconst snapshot = this.ledger.runtime.getSnapshot();\n\t\treturn Object.keys(snapshot.tasks).flatMap((taskId) => {\n\t\t\tconst attempt = selectedWorkerAttempt(snapshot, taskId);\n\t\t\tif (!attempt || isManagedWorkerAttempt(attempt)) return [];\n\t\t\tconst record = projectWorkerLaneRecord(snapshot, taskId);\n\t\t\treturn record ? [record] : [];\n\t\t});\n\t}\n\n\tgetManagedRecords(): LaneRecord[] {\n\t\treturn projectManagedWorkerLaneRecords(this.ledger.runtime.getSnapshot());\n\t}\n\n\tgetAllRecords(): LaneRecord[] {\n\t\treturn [...this.getRecords(), ...this.getManagedRecords()];\n\t}\n\n\tgetRecord(laneId: string): LaneRecord | undefined {\n\t\treturn projectWorkerLaneRecord(this.ledger.runtime.getSnapshot(), laneId);\n\t}\n\n\tgetManagedRecord(laneId: string): LaneRecord | undefined {\n\t\treturn this.getManagedRecords().find((record) => record.laneId === laneId);\n\t}\n\n\tgetManagedAttempt(laneId: string): AttemptRuntimeState | undefined {\n\t\treturn selectedManagedWorkerAttempt(this.ledger.runtime.getSnapshot(), laneId);\n\t}\n\n\tgetManagedHandle(laneId: string): StartedDelegationAttempt | undefined {\n\t\tconst attempt = this.getManagedAttempt(laneId);\n\t\treturn attempt?.lease ? this.startedHandle(attempt) : undefined;\n\t}\n\n\tgetActiveAttempt(laneId: string): AttemptRuntimeState | undefined {\n\t\treturn selectedWorkerAttempt(this.ledger.runtime.getSnapshot(), laneId);\n\t}\n\n\tgetAttemptUsage(laneId: string): AttemptUsageSnapshot | undefined {\n\t\tconst attempt = this.getActiveAttempt(laneId);\n\t\treturn attempt ? this.ledger.getAttemptUsage(attempt.attemptId) : undefined;\n\t}\n\n\tgetRunningCount(profileId?: string): number {\n\t\tconst snapshot = this.ledger.runtime.getSnapshot();\n\t\treturn Object.keys(snapshot.tasks).filter((taskId) => {\n\t\t\tconst attempt = selectedWorkerAttempt(snapshot, taskId);\n\t\t\treturn (\n\t\t\t\tattempt?.status === \"running\" &&\n\t\t\t\t!isManagedWorkerAttempt(attempt) &&\n\t\t\t\t(!profileId || attempt.dispatch.profileId === profileId)\n\t\t\t);\n\t\t}).length;\n\t}\n\n\tgetPendingTerminalNotifications(): Array<{ notificationId: string; record: LaneRecord }> {\n\t\tthis.ensureTerminalNotifications();\n\t\tconst snapshot = this.ledger.runtime.getSnapshot();\n\t\treturn Object.values(snapshot.notifications).flatMap((notification) => {\n\t\t\tif (notification.status !== \"pending\" || !notification.attemptId) return [];\n\t\t\tconst attempt = snapshot.attempts[notification.attemptId];\n\t\t\tif (!attempt) return [];\n\t\t\tconst record = projectWorkerLaneRecord(snapshot, attempt.taskId);\n\t\t\tif (!record || record.status === \"queued\" || record.status === \"running\") return [];\n\t\t\treturn [{ notificationId: notification.notificationId, record }];\n\t\t});\n\t}\n\n\tgetTerminalNotification(\n\t\tlaneId: string,\n\t): { notificationId: string; status: \"pending\" | \"delivered\"; record: LaneRecord } | undefined {\n\t\tconst record = this.getRecord(laneId) ?? this.getManagedRecord(laneId);\n\t\tif (!record || record.status === \"queued\" || record.status === \"running\") return undefined;\n\t\tthis.enqueueTerminalNotification(record);\n\t\tconst attempt = this.getActiveAttempt(laneId) ?? this.getManagedAttempt(laneId);\n\t\tif (!attempt) return undefined;\n\t\tconst notificationId = `worker-terminal:${attempt.attemptId}`;\n\t\tconst notification = this.ledger.runtime.getSnapshot().notifications[notificationId];\n\t\treturn notification ? { notificationId, status: notification.status, record } : undefined;\n\t}\n\n\tmarkNotificationsDelivered(notificationIds: readonly string[]): void {\n\t\tfor (const notificationId of notificationIds) this.ledger.runtime.markNotificationDelivered(notificationId);\n\t}\n\n\tprivate ensureTerminalNotifications(): void {\n\t\tconst snapshot = this.ledger.runtime.getSnapshot();\n\t\tfor (const taskId of Object.keys(snapshot.tasks)) {\n\t\t\tconst record = projectWorkerLaneRecord(snapshot, taskId);\n\t\t\tif (record && record.status !== \"queued\" && record.status !== \"running\") {\n\t\t\t\tthis.enqueueTerminalNotification(record);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate enqueueTerminalNotification(record: LaneRecord): void {\n\t\tconst attempt = this.getActiveAttempt(record.laneId) ?? this.getManagedAttempt(record.laneId);\n\t\tif (!attempt || NONTERMINAL_WORKER_ATTEMPT_STATUSES.has(attempt.status)) return;\n\t\tconst snapshot = this.ledger.runtime.getSnapshot();\n\t\tconst task = snapshot.tasks[attempt.taskId];\n\t\tif (!task) return;\n\t\tif (attempt.result?.nextAction === \"independent_verification_required\" && !task.verification) return;\n\t\tthis.ledger.runtime.enqueueNotification({\n\t\t\tnotificationId: `worker-terminal:${attempt.attemptId}`,\n\t\t\tobjectiveId: task.task.objectiveId,\n\t\t\tattemptId: attempt.attemptId,\n\t\t\tmessage: `Worker ${record.laneId} reached ${record.status}.`,\n\t\t});\n\t}\n\n\tprivate requireActiveAttempt(laneId: string): AttemptRuntimeState {\n\t\tconst attempt = this.getActiveAttempt(laneId);\n\t\tif (!attempt || !ACTIVE_WORKER_ATTEMPT_STATUSES.has(attempt.status)) {\n\t\t\tthrow new Error(`Durable worker '${laneId}' has no active attempt.`);\n\t\t}\n\t\treturn attempt;\n\t}\n\n\tprivate startedHandle(attempt: AttemptRuntimeState): StartedDelegationAttempt {\n\t\tconst task = this.ledger.runtime.getSnapshot().tasks[attempt.taskId];\n\t\tif (!task || !attempt.lease) throw new Error(`Attempt '${attempt.attemptId}' has no started handle.`);\n\t\treturn {\n\t\t\tobjectiveId: task.task.objectiveId,\n\t\t\ttaskId: task.task.taskId,\n\t\t\tattemptId: attempt.attemptId,\n\t\t\tleaseId: attempt.lease.leaseId,\n\t\t\tfencingToken: attempt.lease.fencingToken,\n\t\t\texpiresAt: attempt.lease.expiresAt,\n\t\t};\n\t}\n\n\tprivate startPreparedManagedAttempt(\n\t\tattempt: AttemptRuntimeState,\n\t\tleaseTtlMs: number,\n\t\tcompileGrant: (target: { objectiveId: string; taskId: string; attemptId: string }) => ExecutionGrant,\n\t): StartedDelegationAttempt {\n\t\tconst task = this.ledger.runtime.getSnapshot().tasks[attempt.taskId];\n\t\tif (!task) throw new Error(`Managed attempt '${attempt.attemptId}' has no durable task.`);\n\t\tconst grant = compileGrant({\n\t\t\tobjectiveId: task.task.objectiveId,\n\t\t\ttaskId: task.task.taskId,\n\t\t\tattemptId: attempt.attemptId,\n\t\t});\n\t\tthis.bindGrant(attempt.attemptId, grant);\n\t\treturn this.ledger.start(\n\t\t\tattempt.attemptId,\n\t\t\tleaseTtlMs,\n\t\t\t`managed:${attempt.dispatch.logicalLaneId ?? attempt.taskId}`,\n\t\t);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"worker-lifecycle.js","sourceRoot":"","sources":["../../../src/core/delegation/worker-lifecycle.ts"],"names":[],"mappings":"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","sourcesContent":["import type { LaneRecord } from \"../autonomy/lane-tracker.ts\";\nimport type { GoalState } from \"../goals/goal-state.ts\";\nimport { sameAgentResumeIdentity } from \"../orchestration/agent-resume.ts\";\nimport { latestAgentAttemptByDurableOrder } from \"../orchestration/attempt-ordering.ts\";\nimport type {\n\tAgentBindingContract,\n\tAgentResumeContext,\n\tAttemptRetryState,\n\tAttemptUsageSnapshot,\n\tExecutionGrant,\n\tWorkerExecutionContract,\n\tWorkerResultContract,\n\tWorkerRole,\n} from \"../orchestration/contracts.ts\";\nimport {\n\tDelegationOrchestrationLedger,\n\ttype PrepareDelegationInput,\n\ttype PrepareManagedDelegationInput,\n\ttype StartedDelegationAttempt,\n} from \"../orchestration/delegation-ledger.ts\";\nimport type { OrchestrationEventStore } from \"../orchestration/event-store.ts\";\nimport type {\n\tAttemptDispatchReadiness,\n\tAttemptRuntimeState,\n\tTaskRuntimeProjection,\n} from \"../orchestration/task-runtime.ts\";\nimport { verifierWorkerExecutionContract } from \"../orchestration/worker-execution-contract.ts\";\nimport {\n\tACTIVE_WORKER_ATTEMPT_STATUSES,\n\tisManagedWorkerAttempt,\n\tNONTERMINAL_WORKER_ATTEMPT_STATUSES,\n\tprojectManagedWorkerLaneRecords,\n\tprojectWorkerLaneRecord,\n\tselectedManagedWorkerAttempt,\n\tselectedWorkerAttempt,\n} from \"./worker-lane-projection.ts\";\nimport { isLocalProcessAlive, isLocalWorkerProcessOwnerProvenDead } from \"./worker-process-owner.ts\";\n\nexport type PendingVerificationRecovery =\n\t| {\n\t\t\taction: \"dispatch\";\n\t\t\tsubjectTaskId: string;\n\t\t\timplementationProfileId: string;\n\t\t\tsummary: string;\n\t\t\tartifactUris: readonly string[];\n\t\t\tverifierExecutionContract?: WorkerExecutionContract;\n\t }\n\t| {\n\t\t\taction: \"reconcile\";\n\t\t\tsubjectTaskId: string;\n\t\t\tverifierTaskId: string;\n\t\t\tverifierAttemptId: string;\n\t\t\tverdict: \"accepted\" | \"rejected\" | \"inconclusive\";\n\t\t\treasonCode: string;\n\t };\n\n/**\n * Sole owner of in-process worker lifecycle state. LaneRecord is a compatibility/UI projection;\n * all transitions are committed through DurableTaskRuntime before the projection is returned.\n */\nexport class WorkerLifecycle {\n\treadonly ledger: DelegationOrchestrationLedger;\n\tprivate nextLaneNumber: number;\n\tprivate readonly isProcessAlive: (pid: number) => boolean;\n\n\tconstructor(options: {\n\t\tagentDir: string;\n\t\tsessionId: string;\n\t\tisProcessAlive?: (pid: number) => boolean;\n\t\tnow?: () => number;\n\t\t/**\n\t\t * Pre-built durable event store, forwarded to `DelegationOrchestrationLedger`. Defaults to\n\t\t * `undefined`, which the ledger resolves to its own real `OrchestrationEventStore` — a\n\t\t * zero-behavior-change no-op for every existing caller. Only the destructive-testing harness\n\t\t * passes a store constructed over a fault-injecting `fs`.\n\t\t */\n\t\tstore?: OrchestrationEventStore;\n\t}) {\n\t\tthis.ledger = new DelegationOrchestrationLedger(options);\n\t\tthis.isProcessAlive = options.isProcessAlive ?? isLocalProcessAlive;\n\t\tconst snapshot = this.ledger.runtime.getSnapshot();\n\t\tconst highest = Object.keys(snapshot.tasks).reduce((current, taskId) => {\n\t\t\tconst suffix = /^worker-(\\d+)$/.exec(taskId)?.[1];\n\t\t\treturn suffix ? Math.max(current, Number(suffix)) : current;\n\t\t}, 0);\n\t\tthis.nextLaneNumber = highest + 1;\n\t}\n\n\tprepare(\n\t\tinput: Omit<PrepareDelegationInput, \"laneId\">,\n\t\tlaneId?: string,\n\t): {\n\t\trecord: LaneRecord;\n\t\tattempt: AttemptRuntimeState;\n\t} {\n\t\tlet selectedLaneId = laneId;\n\t\tconst generatedLaneId = !selectedLaneId;\n\t\tif (!selectedLaneId) {\n\t\t\tselectedLaneId = this.getNextAvailableLaneIdCandidate();\n\t\t}\n\t\tconst attempt = this.ledger.prepare({ ...input, laneId: selectedLaneId });\n\t\tif (generatedLaneId) this.nextLaneNumber = Number(selectedLaneId.slice(\"worker-\".length)) + 1;\n\t\tconst record = this.getRecord(selectedLaneId);\n\t\tif (!record) throw new Error(`Durable worker '${selectedLaneId}' was not projected after enqueue.`);\n\t\treturn { record, attempt };\n\t}\n\n\t/** Return the next generated lane id without reserving it or changing lifecycle state. */\n\tgetNextAvailableLaneIdCandidate(): string {\n\t\tconst snapshot = this.ledger.runtime.getSnapshot();\n\t\tlet candidateNumber = this.nextLaneNumber;\n\t\twhile (snapshot.tasks[`worker-${candidateNumber}`]) candidateNumber += 1;\n\t\treturn `worker-${candidateNumber}`;\n\t}\n\n\t/** Queue the next distinct task/attempt for an idle logical agent. */\n\tprepareAgentTurn(input: {\n\t\tagentId: string;\n\t\tinstructions: string;\n\t\tcontrolMessageId?: string;\n\t\tdependsOnTaskIds?: readonly string[];\n\t}): {\n\t\trecord: LaneRecord;\n\t\tattempt: AttemptRuntimeState;\n\t} {\n\t\tconst attempt = this.ledger.prepareAgentTurn(input);\n\t\tconst record = this.getRecord(attempt.taskId);\n\t\tif (!record) throw new Error(`Logical worker '${input.agentId}' turn was not projected after enqueue.`);\n\t\treturn { record, attempt };\n\t}\n\n\tensureAgent(input: {\n\t\tagentId: string;\n\t\tparentAgentId?: string;\n\t\trole: WorkerRole;\n\t\tresumeContext: AgentResumeContext;\n\t}): AgentBindingContract {\n\t\tconst agentId = input.agentId.trim();\n\t\tconst existing = this.ledger.runtime.getSnapshot().agents[agentId];\n\t\tif (!existing) return this.ledger.runtime.registerAgent(input);\n\t\tif (\n\t\t\texisting.role !== input.role ||\n\t\t\texisting.parentAgentId !== input.parentAgentId ||\n\t\t\t!sameAgentResumeIdentity(existing.resumeContext, input.resumeContext)\n\t\t) {\n\t\t\tthrow new Error(`Agent '${agentId}' was re-registered with conflicting identity.`);\n\t\t}\n\t\treturn existing;\n\t}\n\n\t/** Retire one idle logical worker while retaining its durable binding and transcript identity. */\n\tretireAgent(agentId: string): AgentBindingContract {\n\t\treturn this.ledger.runtime.retireAgent(agentId);\n\t}\n\n\tprepareManaged(\n\t\tinput: PrepareManagedDelegationInput & {\n\t\t\tleaseTtlMs: number;\n\t\t\tcompileGrant(target: { objectiveId: string; taskId: string; attemptId: string }): ExecutionGrant;\n\t\t},\n\t): {\n\t\trecord: LaneRecord;\n\t\tattempt: AttemptRuntimeState;\n\t\thandle: StartedDelegationAttempt;\n\t\tcreated: boolean;\n\t} {\n\t\tconst before = selectedManagedWorkerAttempt(this.ledger.runtime.getSnapshot(), input.laneId);\n\t\tif (before?.dispatch.dispatchSequence === input.dispatchSequence) {\n\t\t\tif (\n\t\t\t\tbefore.dispatch.provider !== \"legacy\" &&\n\t\t\t\t(before.dispatch.instructions !== input.instructions ||\n\t\t\t\t\tbefore.dispatch.profileId !== input.profileId ||\n\t\t\t\t\tbefore.dispatch.provider !== input.provider ||\n\t\t\t\t\tbefore.dispatch.worktreeLaneKey !== input.worktreeLaneKey ||\n\t\t\t\t\tbefore.dispatch.authorizationId !== input.authorizationId)\n\t\t\t) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Managed worker '${input.laneId}' turn ${input.dispatchSequence} was re-reported with conflicting dispatch data.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (before.status === \"queued\") {\n\t\t\t\tconst handle = this.startPreparedManagedAttempt(before, input.leaseTtlMs, input.compileGrant);\n\t\t\t\tconst record = this.getManagedRecord(input.laneId);\n\t\t\t\tif (!record) throw new Error(`Managed worker '${input.laneId}' was not projected.`);\n\t\t\t\treturn {\n\t\t\t\t\trecord,\n\t\t\t\t\tattempt: this.ledger.runtime.getSnapshot().attempts[before.attemptId]!,\n\t\t\t\t\thandle,\n\t\t\t\t\tcreated: true,\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst record = this.getManagedRecord(input.laneId);\n\t\t\tif (!record) throw new Error(`Managed worker '${input.laneId}' was not projected.`);\n\t\t\tif (!before.lease) throw new Error(`Managed worker '${input.laneId}' has no durable lease.`);\n\t\t\treturn {\n\t\t\t\trecord,\n\t\t\t\tattempt: before,\n\t\t\t\thandle: this.startedHandle(before),\n\t\t\t\tcreated: false,\n\t\t\t};\n\t\t}\n\t\tif (before && ACTIVE_WORKER_ATTEMPT_STATUSES.has(before.status)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Managed worker '${input.laneId}' cannot dispatch turn ${input.dispatchSequence} while turn ${before.dispatch.dispatchSequence ?? 1} is active.`,\n\t\t\t);\n\t\t}\n\t\tconst attempt = this.ledger.prepareManaged(input);\n\t\tconst handle = this.startPreparedManagedAttempt(attempt, input.leaseTtlMs, input.compileGrant);\n\t\tconst record = this.getManagedRecord(input.laneId);\n\t\tif (!record) throw new Error(`Managed worker '${input.laneId}' was not projected after dispatch.`);\n\t\treturn { record, attempt: this.ledger.runtime.getSnapshot().attempts[attempt.attemptId]!, handle, created: true };\n\t}\n\n\tsynchronizeGoalState(goal: GoalState): LaneRecord[] {\n\t\tconst before = new Map(this.getRecords().map((record) => [record.laneId, record.status]));\n\t\tthis.ledger.synchronizeGoalState(goal);\n\t\treturn this.getRecords().filter((record) => {\n\t\t\tconst previous = before.get(record.laneId);\n\t\t\treturn (\n\t\t\t\t(previous === \"queued\" || previous === \"running\") &&\n\t\t\t\trecord.status !== \"queued\" &&\n\t\t\t\trecord.status !== \"running\"\n\t\t\t);\n\t\t});\n\t}\n\n\tstart(laneId: string, leaseTtlMs: number): StartedDelegationAttempt {\n\t\tconst attempt = this.requireActiveAttempt(laneId);\n\t\treturn this.ledger.start(attempt.attemptId, leaseTtlMs);\n\t}\n\n\tstartAgent(laneId: string, agentId: string, leaseTtlMs: number, ownerId = agentId): StartedDelegationAttempt {\n\t\tconst attempt = this.requireActiveAttempt(laneId);\n\t\treturn this.ledger.start(attempt.attemptId, leaseTtlMs, ownerId, agentId);\n\t}\n\n\trenewLease(laneId: string, leaseTtlMs: number) {\n\t\tconst attempt = this.requireActiveAttempt(laneId);\n\t\tif (!attempt.lease) throw new Error(`Durable worker '${laneId}' has no live lease.`);\n\t\treturn this.ledger.runtime.renewAttemptLease(\n\t\t\tattempt.attemptId,\n\t\t\tattempt.lease.leaseId,\n\t\t\tattempt.lease.fencingToken,\n\t\t\tleaseTtlMs,\n\t\t);\n\t}\n\n\tcheckpoint(\n\t\tlaneId: string,\n\t\tinput: {\n\t\t\tsummary: string;\n\t\t\tartifactIds?: readonly string[];\n\t\t\tevidenceIds?: readonly string[];\n\t\t\tusage?: AttemptUsageSnapshot;\n\t\t},\n\t) {\n\t\tconst attempt = this.requireActiveAttempt(laneId);\n\t\tif (!attempt.lease) throw new Error(`Durable worker '${laneId}' has no live lease.`);\n\t\treturn this.ledger.runtime.checkpointAttempt({\n\t\t\tattemptId: attempt.attemptId,\n\t\t\tleaseId: attempt.lease.leaseId,\n\t\t\tfencingToken: attempt.lease.fencingToken,\n\t\t\tsummary: input.summary,\n\t\t\t...(input.artifactIds ? { artifactIds: input.artifactIds } : {}),\n\t\t\t...(input.evidenceIds ? { evidenceIds: input.evidenceIds } : {}),\n\t\t\t...(input.usage ? { usage: input.usage } : {}),\n\t\t});\n\t}\n\n\t/**\n\t * Suspend only attempts whose exact controller owner is known (explicit shutdown) or whose\n\t * recorded local owner PID is proven gone (recovery). A live/unknown owner is never stolen.\n\t */\n\tsuspendBoundInProcessAttemptsForRestart(ownerId?: string): string[] {\n\t\tconst suspended: string[] = [];\n\t\tfor (const attempt of Object.values(this.ledger.runtime.getSnapshot().attempts)) {\n\t\t\tif (\n\t\t\t\t(attempt.status !== \"leased\" && attempt.status !== \"running\") ||\n\t\t\t\t!attempt.agentId ||\n\t\t\t\tattempt.dispatch.executionKind === \"managed-process\" ||\n\t\t\t\t!attempt.lease\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst ownsAttempt =\n\t\t\t\townerId !== undefined\n\t\t\t\t\t? attempt.lease.ownerId === ownerId\n\t\t\t\t\t: isLocalWorkerProcessOwnerProvenDead(attempt.lease.ownerId, this.isProcessAlive);\n\t\t\tif (!ownsAttempt) continue;\n\t\t\tthis.suspendBoundAttempt({\n\t\t\t\tlaneId: attempt.taskId,\n\t\t\t\townerId: attempt.lease.ownerId,\n\t\t\t\tleaseId: attempt.lease.leaseId,\n\t\t\t\tfencingToken: attempt.lease.fencingToken,\n\t\t\t\treasonCode:\n\t\t\t\t\townerId === undefined ? \"agent_process_recovered_after_owner_exit\" : \"agent_process_interrupted\",\n\t\t\t});\n\t\t\tsuspended.push(attempt.attemptId);\n\t\t}\n\t\treturn suspended;\n\t}\n\n\t/**\n\t * Applies an explicitly authorized restart suspension. The caller must identify both the logical\n\t * lane and the current lease fence; process liveness policy is intentionally kept by this class.\n\t */\n\tsuspendBoundAttempt(args: {\n\t\tlaneId: string;\n\t\townerId: string;\n\t\tleaseId: string;\n\t\tfencingToken: number;\n\t\treasonCode: string;\n\t\tretry?: AttemptRetryState;\n\t}): void {\n\t\tconst attempt = this.getActiveAttempt(args.laneId);\n\t\tif (!attempt || !attempt.agentId || !attempt.lease) {\n\t\t\tthrow new Error(`Durable worker '${args.laneId}' has no live agent-bound attempt for suspension.`);\n\t\t}\n\t\tthis.ledger.runtime.suspendBoundAttempt({\n\t\t\tattemptId: attempt.attemptId,\n\t\t\townerId: args.ownerId,\n\t\t\tleaseId: args.leaseId,\n\t\t\tfencingToken: args.fencingToken,\n\t\t\treasonCode: args.reasonCode,\n\t\t\t...(args.retry ? { retry: args.retry } : {}),\n\t\t});\n\t}\n\n\tresumeAgent(laneId: string, agentId: string, leaseTtlMs: number, ownerId = agentId): StartedDelegationAttempt {\n\t\tconst attempt = this.getActiveAttempt(laneId);\n\t\tif (!attempt) throw new Error(`Durable worker '${laneId}' has no resumable attempt.`);\n\t\tthis.ledger.runtime.assertAttemptReadyForResume(attempt.attemptId);\n\t\tthis.ledger.runtime.requestAgentResume(agentId, attempt.attemptId);\n\t\tconst lease = this.ledger.runtime.resumeAttempt(attempt.attemptId, agentId, leaseTtlMs, ownerId);\n\t\treturn this.startedHandle(this.ledger.runtime.startAttempt(attempt.attemptId, lease.leaseId, lease.fencingToken));\n\t}\n\n\tsuspendAgent(\n\t\tlaneId: string,\n\t\tagentId: string,\n\t\townerId: string,\n\t\treasonCode = \"agent_interrupted\",\n\t\tretry?: AttemptRetryState,\n\t): void {\n\t\tconst attempt = this.getActiveAttempt(laneId);\n\t\tif (!attempt || attempt.agentId !== agentId || !attempt.lease) {\n\t\t\tthrow new Error(`Logical worker '${agentId}' has no live attempt for interruption.`);\n\t\t}\n\t\tthis.suspendBoundAttempt({\n\t\t\tlaneId,\n\t\t\townerId,\n\t\t\tleaseId: attempt.lease.leaseId,\n\t\t\tfencingToken: attempt.lease.fencingToken,\n\t\t\treasonCode,\n\t\t\t...(retry ? { retry } : {}),\n\t\t});\n\t}\n\n\tscheduleAgentRetry(args: {\n\t\tlaneId: string;\n\t\tagentId: string;\n\t\townerId: string;\n\t\treasonCode: string;\n\t\tretry: AttemptRetryState;\n\t}): AttemptRuntimeState {\n\t\tthis.suspendAgent(args.laneId, args.agentId, args.ownerId, args.reasonCode, args.retry);\n\t\tconst attempt = this.getActiveAttempt(args.laneId);\n\t\tif (!attempt) throw new Error(`Durable worker '${args.laneId}' disappeared after retry suspension.`);\n\t\treturn attempt;\n\t}\n\n\tbindGrant(attemptId: string, grant: ExecutionGrant): void {\n\t\tthis.ledger.runtime.bindAttemptGrant(attemptId, grant);\n\t}\n\n\tfinish(result: WorkerResultContract, options: { notify?: boolean } = {}): LaneRecord {\n\t\tthis.ledger.runtime.finishAttempt(result);\n\t\tconst record = this.getRecord(result.taskId);\n\t\tif (!record) throw new Error(`Durable worker '${result.taskId}' was not projected after completion.`);\n\t\tif (options.notify !== false) this.enqueueTerminalNotification(record);\n\t\treturn record;\n\t}\n\n\treconcileVerification(args: {\n\t\tsubjectTaskId: string;\n\t\tverifierTaskId: string;\n\t\tverifierAttemptId: string;\n\t\tverdict: \"accepted\" | \"rejected\" | \"inconclusive\";\n\t\treasonCode: string;\n\t}): LaneRecord {\n\t\tthis.ledger.runtime.finishVerification({\n\t\t\ttaskId: args.subjectTaskId,\n\t\t\tverifierTaskId: args.verifierTaskId,\n\t\t\tverifierAttemptId: args.verifierAttemptId,\n\t\t\tverdict: args.verdict,\n\t\t\treasonCode: args.reasonCode,\n\t\t});\n\t\tconst subject = this.getRecord(args.subjectTaskId);\n\t\tif (!subject) throw new Error(`Verified worker '${args.subjectTaskId}' was not projected.`);\n\t\tthis.enqueueTerminalNotification(subject);\n\t\treturn subject;\n\t}\n\n\tcancel(laneId: string, reasonCode: string): LaneRecord | undefined {\n\t\tconst attempt = this.getActiveAttempt(laneId);\n\t\tif (!attempt) return this.getRecord(laneId);\n\t\tthis.ledger.cancel(attempt.attemptId, reasonCode);\n\t\tconst record = this.getRecord(laneId);\n\t\tif (record) this.enqueueTerminalNotification(record);\n\t\treturn record;\n\t}\n\n\trecoverQueued(): Array<{\n\t\trecord: LaneRecord;\n\t\tattempt: AttemptRuntimeState;\n\t\tverificationOfTaskId?: string;\n\t}> {\n\t\treturn this.ledger.recoverQueuedDispatches().flatMap((attempt) => {\n\t\t\tif (isManagedWorkerAttempt(attempt)) return [];\n\t\t\tconst record = this.getRecord(attempt.taskId);\n\t\t\tconst task = this.ledger.runtime.getSnapshot().tasks[attempt.taskId]?.task;\n\t\t\treturn record\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\trecord,\n\t\t\t\t\t\t\tattempt,\n\t\t\t\t\t\t\t...(task?.verificationOfTaskId ? { verificationOfTaskId: task.verificationOfTaskId } : {}),\n\t\t\t\t\t\t},\n\t\t\t\t\t]\n\t\t\t\t: [];\n\t\t});\n\t}\n\n\t/** Close crash windows between implementation completion, verifier dispatch, and reconciliation. */\n\tgetPendingVerificationRecoveries(): PendingVerificationRecovery[] {\n\t\tconst snapshot = this.ledger.runtime.getSnapshot();\n\t\treturn Object.values(snapshot.tasks).flatMap<PendingVerificationRecovery>((subject) => {\n\t\t\tif (subject.verification) return [];\n\t\t\tconst implementationAttempt = selectedWorkerAttempt(snapshot, subject.task.taskId);\n\t\t\tif (implementationAttempt?.result?.nextAction !== \"independent_verification_required\") return [];\n\t\t\tconst verifier = Object.values(snapshot.tasks)\n\t\t\t\t.filter((candidate) => candidate.task.verificationOfTaskId === subject.task.taskId)\n\t\t\t\t.at(-1);\n\t\t\tif (!verifier) {\n\t\t\t\tconst verifierExecutionContract = implementationAttempt.dispatch.executionContract\n\t\t\t\t\t? verifierWorkerExecutionContract(implementationAttempt.dispatch.executionContract)\n\t\t\t\t\t: undefined;\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\taction: \"dispatch\" as const,\n\t\t\t\t\t\tsubjectTaskId: subject.task.taskId,\n\t\t\t\t\t\timplementationProfileId: implementationAttempt.dispatch.profileId,\n\t\t\t\t\t\tsummary: implementationAttempt.result.summary,\n\t\t\t\t\t\tartifactUris: implementationAttempt.result.artifacts.map((artifact) => artifact.uri),\n\t\t\t\t\t\t...(verifierExecutionContract ? { verifierExecutionContract } : {}),\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t}\n\t\t\tconst verifierAttempt = selectedWorkerAttempt(snapshot, verifier.task.taskId);\n\t\t\tif (!verifierAttempt || NONTERMINAL_WORKER_ATTEMPT_STATUSES.has(verifierAttempt.status)) return [];\n\t\t\tconst review = verifierAttempt.result?.evidence.find(\n\t\t\t\t(evidence) =>\n\t\t\t\t\tevidence.trusted &&\n\t\t\t\t\tevidence.kind === \"review\" &&\n\t\t\t\t\tevidence.metadata?.subjectTaskId === subject.task.taskId &&\n\t\t\t\t\t(evidence.metadata.verdict === \"accepted\" || evidence.metadata.verdict === \"rejected\"),\n\t\t\t);\n\t\t\tconst verdictValue = review?.metadata?.verdict;\n\t\t\tconst verdict = verdictValue === \"accepted\" || verdictValue === \"rejected\" ? verdictValue : \"inconclusive\";\n\t\t\tconst reasonCodesValue = review?.metadata?.reasonCodes;\n\t\t\tconst reasonCodes = Array.isArray(reasonCodesValue)\n\t\t\t\t? reasonCodesValue.filter((reasonCode): reasonCode is string => typeof reasonCode === \"string\")\n\t\t\t\t: [];\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\taction: \"reconcile\" as const,\n\t\t\t\t\tsubjectTaskId: subject.task.taskId,\n\t\t\t\t\tverifierTaskId: verifier.task.taskId,\n\t\t\t\t\tverifierAttemptId: verifierAttempt.attemptId,\n\t\t\t\t\tverdict,\n\t\t\t\t\treasonCode:\n\t\t\t\t\t\tverdict === \"accepted\"\n\t\t\t\t\t\t\t? \"independent_verification_accepted\"\n\t\t\t\t\t\t\t: verdict === \"rejected\"\n\t\t\t\t\t\t\t\t? `independent_verification_rejected:${reasonCodes.join(\",\") || \"unspecified\"}`\n\t\t\t\t\t\t\t\t: `independent_verification_inconclusive:${verifierAttempt.reasonCode ?? verifierAttempt.result?.reasonCode ?? \"interrupted\"}`,\n\t\t\t\t},\n\t\t\t];\n\t\t});\n\t}\n\n\tgetTask(taskId: string): TaskRuntimeProjection[\"tasks\"][string] | undefined {\n\t\treturn this.ledger.runtime.getSnapshot().tasks[taskId];\n\t}\n\n\tgetAgent(agentId: string): AgentBindingContract | undefined {\n\t\treturn this.ledger.runtime.getSnapshot().agents[agentId];\n\t}\n\n\tgetLatestAgentAttempt(agentId: string): AttemptRuntimeState | undefined {\n\t\treturn latestAgentAttemptByDurableOrder(this.ledger.runtime.getSnapshot(), agentId);\n\t}\n\n\tgetTaskRuntimeSnapshot(): TaskRuntimeProjection {\n\t\treturn this.ledger.runtime.getSnapshot();\n\t}\n\n\t/** Read-only dispatch gate for an already persisted queued worker attempt. */\n\tgetAttemptDispatchReadiness(attemptId: string): AttemptDispatchReadiness {\n\t\treturn this.ledger.runtime.getAttemptDispatchReadiness(attemptId);\n\t}\n\n\tgetRecords(): LaneRecord[] {\n\t\tconst snapshot = this.ledger.runtime.getSnapshot();\n\t\treturn Object.keys(snapshot.tasks).flatMap((taskId) => {\n\t\t\tconst attempt = selectedWorkerAttempt(snapshot, taskId);\n\t\t\tif (!attempt || isManagedWorkerAttempt(attempt)) return [];\n\t\t\tconst record = projectWorkerLaneRecord(snapshot, taskId);\n\t\t\treturn record ? [record] : [];\n\t\t});\n\t}\n\n\tgetManagedRecords(): LaneRecord[] {\n\t\treturn projectManagedWorkerLaneRecords(this.ledger.runtime.getSnapshot());\n\t}\n\n\tgetAllRecords(): LaneRecord[] {\n\t\treturn [...this.getRecords(), ...this.getManagedRecords()];\n\t}\n\n\tgetRecord(laneId: string): LaneRecord | undefined {\n\t\treturn projectWorkerLaneRecord(this.ledger.runtime.getSnapshot(), laneId);\n\t}\n\n\tgetManagedRecord(laneId: string): LaneRecord | undefined {\n\t\treturn this.getManagedRecords().find((record) => record.laneId === laneId);\n\t}\n\n\tgetManagedAttempt(laneId: string): AttemptRuntimeState | undefined {\n\t\treturn selectedManagedWorkerAttempt(this.ledger.runtime.getSnapshot(), laneId);\n\t}\n\n\tgetManagedHandle(laneId: string): StartedDelegationAttempt | undefined {\n\t\tconst attempt = this.getManagedAttempt(laneId);\n\t\treturn attempt?.lease ? this.startedHandle(attempt) : undefined;\n\t}\n\n\tgetActiveAttempt(laneId: string): AttemptRuntimeState | undefined {\n\t\treturn selectedWorkerAttempt(this.ledger.runtime.getSnapshot(), laneId);\n\t}\n\n\tgetResult(laneId: string): WorkerResultContract | undefined {\n\t\treturn this.getActiveAttempt(laneId)?.result;\n\t}\n\n\tgetAttemptUsage(laneId: string): AttemptUsageSnapshot | undefined {\n\t\tconst attempt = this.getActiveAttempt(laneId);\n\t\treturn attempt ? this.ledger.getAttemptUsage(attempt.attemptId) : undefined;\n\t}\n\n\tgetRunningCount(profileId?: string): number {\n\t\tconst snapshot = this.ledger.runtime.getSnapshot();\n\t\treturn Object.keys(snapshot.tasks).filter((taskId) => {\n\t\t\tconst attempt = selectedWorkerAttempt(snapshot, taskId);\n\t\t\treturn (\n\t\t\t\tattempt?.status === \"running\" &&\n\t\t\t\t!isManagedWorkerAttempt(attempt) &&\n\t\t\t\t(!profileId || attempt.dispatch.profileId === profileId)\n\t\t\t);\n\t\t}).length;\n\t}\n\n\tgetPendingTerminalNotifications(): Array<{ notificationId: string; record: LaneRecord }> {\n\t\tthis.ensureTerminalNotifications();\n\t\tconst snapshot = this.ledger.runtime.getSnapshot();\n\t\treturn Object.values(snapshot.notifications).flatMap((notification) => {\n\t\t\tif (notification.status !== \"pending\" || !notification.attemptId) return [];\n\t\t\tconst attempt = snapshot.attempts[notification.attemptId];\n\t\t\tif (!attempt) return [];\n\t\t\tconst record = projectWorkerLaneRecord(snapshot, attempt.taskId);\n\t\t\tif (!record || record.status === \"queued\" || record.status === \"running\") return [];\n\t\t\treturn [{ notificationId: notification.notificationId, record }];\n\t\t});\n\t}\n\n\tgetTerminalNotification(\n\t\tlaneId: string,\n\t): { notificationId: string; status: \"pending\" | \"delivered\"; record: LaneRecord } | undefined {\n\t\tconst record = this.getRecord(laneId) ?? this.getManagedRecord(laneId);\n\t\tif (!record || record.status === \"queued\" || record.status === \"running\") return undefined;\n\t\tthis.enqueueTerminalNotification(record);\n\t\tconst attempt = this.getActiveAttempt(laneId) ?? this.getManagedAttempt(laneId);\n\t\tif (!attempt) return undefined;\n\t\tconst notificationId = `worker-terminal:${attempt.attemptId}`;\n\t\tconst notification = this.ledger.runtime.getSnapshot().notifications[notificationId];\n\t\treturn notification ? { notificationId, status: notification.status, record } : undefined;\n\t}\n\n\tmarkNotificationsDelivered(notificationIds: readonly string[]): void {\n\t\tfor (const notificationId of notificationIds) this.ledger.runtime.markNotificationDelivered(notificationId);\n\t}\n\n\tprivate ensureTerminalNotifications(): void {\n\t\tconst snapshot = this.ledger.runtime.getSnapshot();\n\t\tfor (const taskId of Object.keys(snapshot.tasks)) {\n\t\t\tconst record = projectWorkerLaneRecord(snapshot, taskId);\n\t\t\tif (record && record.status !== \"queued\" && record.status !== \"running\") {\n\t\t\t\tthis.enqueueTerminalNotification(record);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate enqueueTerminalNotification(record: LaneRecord): void {\n\t\tconst attempt = this.getActiveAttempt(record.laneId) ?? this.getManagedAttempt(record.laneId);\n\t\tif (!attempt || NONTERMINAL_WORKER_ATTEMPT_STATUSES.has(attempt.status)) return;\n\t\tconst snapshot = this.ledger.runtime.getSnapshot();\n\t\tconst task = snapshot.tasks[attempt.taskId];\n\t\tif (!task) return;\n\t\tif (attempt.result?.nextAction === \"independent_verification_required\" && !task.verification) return;\n\t\tthis.ledger.runtime.enqueueNotification({\n\t\t\tnotificationId: `worker-terminal:${attempt.attemptId}`,\n\t\t\tobjectiveId: task.task.objectiveId,\n\t\t\tattemptId: attempt.attemptId,\n\t\t\tmessage: `Worker ${record.laneId} reached ${record.status}.`,\n\t\t});\n\t}\n\n\tprivate requireActiveAttempt(laneId: string): AttemptRuntimeState {\n\t\tconst attempt = this.getActiveAttempt(laneId);\n\t\tif (!attempt || !ACTIVE_WORKER_ATTEMPT_STATUSES.has(attempt.status)) {\n\t\t\tthrow new Error(`Durable worker '${laneId}' has no active attempt.`);\n\t\t}\n\t\treturn attempt;\n\t}\n\n\tprivate startedHandle(attempt: AttemptRuntimeState): StartedDelegationAttempt {\n\t\tconst task = this.ledger.runtime.getSnapshot().tasks[attempt.taskId];\n\t\tif (!task || !attempt.lease) throw new Error(`Attempt '${attempt.attemptId}' has no started handle.`);\n\t\treturn {\n\t\t\tobjectiveId: task.task.objectiveId,\n\t\t\ttaskId: task.task.taskId,\n\t\t\tattemptId: attempt.attemptId,\n\t\t\tleaseId: attempt.lease.leaseId,\n\t\t\tfencingToken: attempt.lease.fencingToken,\n\t\t\texpiresAt: attempt.lease.expiresAt,\n\t\t};\n\t}\n\n\tprivate startPreparedManagedAttempt(\n\t\tattempt: AttemptRuntimeState,\n\t\tleaseTtlMs: number,\n\t\tcompileGrant: (target: { objectiveId: string; taskId: string; attemptId: string }) => ExecutionGrant,\n\t): StartedDelegationAttempt {\n\t\tconst task = this.ledger.runtime.getSnapshot().tasks[attempt.taskId];\n\t\tif (!task) throw new Error(`Managed attempt '${attempt.attemptId}' has no durable task.`);\n\t\tconst grant = compileGrant({\n\t\t\tobjectiveId: task.task.objectiveId,\n\t\t\ttaskId: task.task.taskId,\n\t\t\tattemptId: attempt.attemptId,\n\t\t});\n\t\tthis.bindGrant(attempt.attemptId, grant);\n\t\treturn this.ledger.start(\n\t\t\tattempt.attemptId,\n\t\t\tleaseTtlMs,\n\t\t\t`managed:${attempt.dispatch.logicalLaneId ?? attempt.taskId}`,\n\t\t);\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-runner.d.ts","sourceRoot":"","sources":["../../../src/core/delegation/worker-runner.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"worker-runner.d.ts","sourceRoot":"","sources":["../../../src/core/delegation/worker-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { normalizeEvidenceFinding, projectEvidenceFindings, } from "../autonomy/
|
|
|
3
3
|
import { buildVerifierSystemPrompt, buildWorkerSystemPrompt, WORKER_LANE_SYSTEM_PROMPT, WORKER_OPERATOR_LANE_SYSTEM_PROMPT, WORKER_WRITE_LANE_SYSTEM_PROMPT, } from "../provider-prompt-contracts.js";
|
|
4
4
|
import { createEvidenceBundle } from "../research/evidence-bundle.js";
|
|
5
5
|
import { parseWorkerActions, } from "./worker-actions.js";
|
|
6
|
-
import { collectBoundedWorkerClaimBlockers, collectBoundedWorkerClaimChangedFiles, MAX_WORKER_CLAIM_BLOCKER_CHARS, MAX_WORKER_CLAIM_BLOCKERS,
|
|
6
|
+
import { clipWorkerClaimSummary, collectBoundedWorkerClaimBlockers, collectBoundedWorkerClaimChangedFiles, MAX_WORKER_CLAIM_BLOCKER_CHARS, MAX_WORKER_CLAIM_BLOCKERS, normalizeWorkerClaimForHost, validateWorkerClaim, } from "./worker-claim.js";
|
|
7
7
|
export { buildVerifierSystemPrompt, buildWorkerSystemPrompt, WORKER_LANE_SYSTEM_PROMPT, WORKER_OPERATOR_LANE_SYSTEM_PROMPT, WORKER_WRITE_LANE_SYSTEM_PROMPT, };
|
|
8
8
|
export function buildWorkerUserPrompt(request) {
|
|
9
9
|
return [
|
|
@@ -22,7 +22,8 @@ const MAX_WORKER_REASON_CODES = 32;
|
|
|
22
22
|
const MAX_WORKER_REASON_CODE_CHARS = 128;
|
|
23
23
|
function balancedObjectCandidates(text) {
|
|
24
24
|
const ranges = [];
|
|
25
|
-
|
|
25
|
+
let start;
|
|
26
|
+
let depth = 0;
|
|
26
27
|
let inString = false;
|
|
27
28
|
let escaped = false;
|
|
28
29
|
for (let index = 0; index < text.length; index++) {
|
|
@@ -41,19 +42,24 @@ function balancedObjectCandidates(text) {
|
|
|
41
42
|
continue;
|
|
42
43
|
}
|
|
43
44
|
if (character === "{") {
|
|
44
|
-
if (
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
if (depth === 0)
|
|
46
|
+
start = index;
|
|
47
|
+
depth++;
|
|
48
|
+
if (depth > MAX_WORKER_JSON_DEPTH)
|
|
49
|
+
return ranges.map((range) => text.slice(range.start, range.end));
|
|
47
50
|
continue;
|
|
48
51
|
}
|
|
49
52
|
if (character !== "}")
|
|
50
53
|
continue;
|
|
51
|
-
|
|
52
|
-
|
|
54
|
+
if (depth === 0)
|
|
55
|
+
continue;
|
|
56
|
+
depth--;
|
|
57
|
+
if (depth !== 0 || start === undefined || ranges.length >= MAX_WORKER_JSON_CANDIDATES)
|
|
53
58
|
continue;
|
|
54
59
|
const end = index + 1;
|
|
55
60
|
if (end - start <= MAX_WORKER_OUTPUT_CHARS)
|
|
56
61
|
ranges.push({ start, end });
|
|
62
|
+
start = undefined;
|
|
57
63
|
}
|
|
58
64
|
return ranges.map(({ start, end }) => text.slice(start, end));
|
|
59
65
|
}
|
|
@@ -137,7 +143,7 @@ export function parseWorkerOutput(text) {
|
|
|
137
143
|
: [];
|
|
138
144
|
const actionOutcome = parseWorkerActions(record.actions);
|
|
139
145
|
return {
|
|
140
|
-
summary: summary.trim()
|
|
146
|
+
summary: clipWorkerClaimSummary(summary.trim()),
|
|
141
147
|
status,
|
|
142
148
|
blockers,
|
|
143
149
|
findings,
|
|
@@ -298,7 +304,7 @@ export async function runWorker(options) {
|
|
|
298
304
|
const incompleteNote = completion.stopReason === "stop"
|
|
299
305
|
? ""
|
|
300
306
|
: `\n\n[Worker output ended with stop reason '${completion.stopReason}'; verify completeness.]`;
|
|
301
|
-
const summary =
|
|
307
|
+
const summary = clipWorkerClaimSummary(completion.text.trim(), incompleteNote);
|
|
302
308
|
const blocked = completionBlockers.length > 0;
|
|
303
309
|
return finishOutcome({
|
|
304
310
|
request: options.request,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-runner.js","sourceRoot":"","sources":["../../../src/core/delegation/worker-runner.ts"],"names":[],"mappings":"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","sourcesContent":["import { runBoundedCompletion } from \"../autonomy/bounded-completion.ts\";\nimport type { EvidenceRef, GateOutcome, WorkerClaim, WorkerRequest } from \"../autonomy/contracts.ts\";\nimport {\n\ttype EvidenceFindingDraft,\n\tnormalizeEvidenceFinding,\n\tprojectEvidenceFindings,\n} from \"../autonomy/evidence-finding-projection.ts\";\nimport type { LaneTerminalStatus } from \"../autonomy/lane-tracker.ts\";\nimport type { WorkerRole } from \"../orchestration/contracts.ts\";\nimport {\n\tbuildVerifierSystemPrompt,\n\tbuildWorkerSystemPrompt,\n\tWORKER_LANE_SYSTEM_PROMPT,\n\tWORKER_OPERATOR_LANE_SYSTEM_PROMPT,\n\tWORKER_WRITE_LANE_SYSTEM_PROMPT,\n} from \"../provider-prompt-contracts.ts\";\nimport { createEvidenceBundle } from \"../research/evidence-bundle.ts\";\nimport {\n\ttype AppliedActionsReport,\n\tparseWorkerActions,\n\ttype RejectedWorkerActions,\n\ttype WorkerAction,\n} from \"./worker-actions.ts\";\nimport {\n\tcollectBoundedWorkerClaimBlockers,\n\tcollectBoundedWorkerClaimChangedFiles,\n\tMAX_WORKER_CLAIM_BLOCKER_CHARS,\n\tMAX_WORKER_CLAIM_BLOCKERS,\n\tMAX_WORKER_CLAIM_SUMMARY_CHARS,\n\tnormalizeWorkerClaimForHost,\n\tvalidateWorkerClaim,\n} from \"./worker-claim.ts\";\n\nexport {\n\tbuildVerifierSystemPrompt,\n\tbuildWorkerSystemPrompt,\n\tWORKER_LANE_SYSTEM_PROMPT,\n\tWORKER_OPERATOR_LANE_SYSTEM_PROMPT,\n\tWORKER_WRITE_LANE_SYSTEM_PROMPT,\n};\n\n/**\n * Pure execution for one bounded specialist delegation: bounded isolated completion ->\n * parse -> untrusted `WorkerClaim` -> parent validation via {@link validateWorkerClaim}.\n *\n * The injected completion may be a bounded child tool loop. Its tool surface is built and gated by\n * the host; this module keeps the structured-output contract and treats every claim as untrusted\n * until parent validation succeeds.\n */\n\nexport interface WorkerCompletion {\n\ttext: string;\n\tcostUsd: number;\n\tstopReason: string;\n\t/** Files successfully changed by the child tool loop before it produced the final JSON. */\n\tchangedFiles?: readonly string[];\n\t/** Capability refusals or execution failures observed inside the child tool loop. */\n\tblockers?: readonly string[];\n}\n\nexport interface WorkerRunnerOptions {\n\trequest: WorkerRequest;\n\t/** Budget for this delegation; undefined disables this bound, while zero permits only free work. */\n\tmaxUsd?: number;\n\t/** Wall-clock budget in milliseconds; 0 disables. */\n\tmaxWallClockMs: number;\n\t/**\n\t * Pre-allocated spawned-usage report id. Always stamped on the claim so parent validation can\n\t * enforce the cost-visibility invariant (a completed claim without a usage report is blocked).\n\t */\n\tusageReportId: string;\n\tcomplete: (args: { systemPrompt: string; userPrompt: string; signal: AbortSignal }) => Promise<WorkerCompletion>;\n\t/** Live successful child-tool mutations, including writes completed before timeout/cancellation. */\n\tgetChangedFiles?: () => readonly string[];\n\tsignal?: AbortSignal;\n\tnow?: () => string;\n\t/** Enables the WRITE lane: only honored when the request envelope grants \"filesystem.write\". The\n\t * runner applies the worker's structured actions through the envelope path scope; refusals\n\t * and failures become blockers, never silent drops. */\n\tapplyActions?: (actions: readonly WorkerAction[]) => AppliedActionsReport;\n\t/** Enables the constrained direct-argv operator role prompt. */\n\tprocessCapable?: boolean;\n\t/** Enables recursive delegation and orchestration-tree coordination guidance. */\n\tdelegationCapable?: boolean;\n\t/** Session cwd — the baseline for relative changed-file and envelope paths in parent\n\t * validation. Defaults to process.cwd(). */\n\tcwd?: string;\n\t/** Turns the child into a read-only semantic verifier for this exact durable task. */\n\tverificationSubjectTaskId?: string;\n}\n\nexport interface WorkerRunOutcome {\n\tclaim: WorkerClaim;\n\t/** Parent-review verdict from {@link validateWorkerClaim}; worker output stays untrusted. */\n\tacceptance: GateOutcome;\n\taccepted: boolean;\n\tlaneStatus: LaneTerminalStatus;\n\treasonCode: string;\n\t/** Underlying executor error for bounded failures; drives the in-process retry decision. */\n\treasonDetail?: string;\n\tcostUsd: number;\n\t/**\n\t * Set by the caller (worker-delegation-controller.ts admission), never by runWorker itself, when\n\t * a pin policy is active, the effective role has no pin, and the caller requested an explicit\n\t * model — i.e. the owner's model pin was evaded, not merely inapplicable. Diagnostics only.\n\t */\n\tmodelPinBypass?: WorkerRole;\n}\n\nexport function buildWorkerUserPrompt(request: WorkerRequest): string {\n\treturn [\n\t\t\"TASK\",\n\t\trequest.instructions,\n\t\t\"END TASK\",\n\t\t'Do not replace the worker claim envelope; put requested detail inside \"summary\" and \"findings\".',\n\t].join(\"\\n\");\n}\n\nexport interface ParsedWorkerOutput {\n\tsummary: string;\n\tstatus: \"completed\" | \"blocked\";\n\tblockers: string[];\n\tfindings: EvidenceFindingDraft[];\n\tactions: WorkerAction[];\n\t/** Present when the model emitted an action list that cannot safely reach execution. */\n\tactionRejection?: RejectedWorkerActions;\n\tverdict?: \"accepted\" | \"rejected\";\n\treasonCodes: string[];\n}\n\nconst MAX_WORKER_OUTPUT_CHARS = 512 * 1024;\nconst MAX_WORKER_JSON_CANDIDATES = 64;\nconst MAX_WORKER_JSON_DEPTH = 256;\nconst MAX_WORKER_FINDINGS = 64;\nconst MAX_WORKER_FINDING_CHARS = 2_000;\nconst MAX_WORKER_REASON_CODES = 32;\nconst MAX_WORKER_REASON_CODE_CHARS = 128;\n\nfunction balancedObjectCandidates(text: string): string[] {\n\tconst ranges: Array<{ start: number; end: number }> = [];\n\tconst starts: number[] = [];\n\tlet inString = false;\n\tlet escaped = false;\n\tfor (let index = 0; index < text.length; index++) {\n\t\tconst character = text[index];\n\t\tif (inString) {\n\t\t\tif (escaped) escaped = false;\n\t\t\telse if (character === \"\\\\\") escaped = true;\n\t\t\telse if (character === '\"') inString = false;\n\t\t\tcontinue;\n\t\t}\n\t\tif (character === '\"') {\n\t\t\tinString = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (character === \"{\") {\n\t\t\tif (starts.length >= MAX_WORKER_JSON_DEPTH) return ranges.map(({ start, end }) => text.slice(start, end));\n\t\t\tstarts.push(index);\n\t\t\tcontinue;\n\t\t}\n\t\tif (character !== \"}\") continue;\n\t\tconst start = starts.pop();\n\t\tif (start === undefined || ranges.length >= MAX_WORKER_JSON_CANDIDATES) continue;\n\t\tconst end = index + 1;\n\t\tif (end - start <= MAX_WORKER_OUTPUT_CHARS) ranges.push({ start, end });\n\t}\n\treturn ranges.map(({ start, end }) => text.slice(start, end));\n}\n\nfunction workerOutputRecords(text: string): Record<string, unknown>[] {\n\tconst trimmed = text.trim();\n\tif (trimmed.length === 0 || trimmed.length > MAX_WORKER_OUTPUT_CHARS) return [];\n\tconst candidates: string[] = [trimmed];\n\tconst fenced = /```(?:json)?\\s*([\\s\\S]*?)```/.exec(trimmed);\n\tif (fenced?.[1]) candidates.push(fenced[1].trim());\n\tcandidates.push(...balancedObjectCandidates(trimmed));\n\tconst records: Record<string, unknown>[] = [];\n\tfor (const candidate of candidates) {\n\t\ttry {\n\t\t\tconst parsed: unknown = JSON.parse(candidate);\n\t\t\tif (parsed && typeof parsed === \"object\" && !Array.isArray(parsed))\n\t\t\t\trecords.push(parsed as Record<string, unknown>);\n\t\t} catch {\n\t\t\t// Candidate extraction is deliberately best-effort; a later balanced candidate may still be valid.\n\t\t}\n\t}\n\treturn records;\n}\n\nfunction isWorkerStatus(value: unknown): value is ParsedWorkerOutput[\"status\"] {\n\treturn value === \"completed\" || value === \"blocked\";\n}\n\n/**\n * Plain-text fallback is for output that never attempted the worker claim envelope. A JSON object\n * with a claim summary but malformed typed fields is a contract failure, never an implicit success.\n */\nfunction hasMalformedWorkerClaimEnvelope(text: string): boolean {\n\treturn workerOutputRecords(text).some((record) => {\n\t\tif (typeof record.summary !== \"string\" || record.summary.trim().length === 0) return false;\n\t\tif (!isWorkerStatus(record.status)) return true;\n\t\tif (record.verdict !== undefined && record.verdict !== \"accepted\" && record.verdict !== \"rejected\") return true;\n\t\treturn (\n\t\t\trecord.reasonCodes !== undefined &&\n\t\t\t(!Array.isArray(record.reasonCodes) ||\n\t\t\t\trecord.reasonCodes.some((reasonCode) => typeof reasonCode !== \"string\" || reasonCode.trim().length === 0))\n\t\t);\n\t});\n}\n\nexport function parseWorkerOutput(text: string): ParsedWorkerOutput | undefined {\n\tfor (const record of workerOutputRecords(text)) {\n\t\tconst summary = record.summary;\n\t\tif (typeof summary !== \"string\" || summary.trim().length === 0) continue;\n\t\tif (!isWorkerStatus(record.status)) continue;\n\t\tif (record.verdict !== undefined && record.verdict !== \"accepted\" && record.verdict !== \"rejected\") continue;\n\t\tif (\n\t\t\trecord.reasonCodes !== undefined &&\n\t\t\t(!Array.isArray(record.reasonCodes) ||\n\t\t\t\trecord.reasonCodes.some((reasonCode) => typeof reasonCode !== \"string\" || reasonCode.trim().length === 0))\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst status = record.status;\n\t\tconst blockers = Array.isArray(record.blockers)\n\t\t\t? record.blockers\n\t\t\t\t\t.filter((blocker): blocker is string => typeof blocker === \"string\" && blocker.trim().length > 0)\n\t\t\t\t\t.slice(0, MAX_WORKER_CLAIM_BLOCKERS)\n\t\t\t\t\t.map((blocker) => blocker.trim().slice(0, MAX_WORKER_CLAIM_BLOCKER_CHARS))\n\t\t\t: [];\n\t\tconst findings: EvidenceFindingDraft[] = [];\n\t\tif (Array.isArray(record.findings)) {\n\t\t\tfor (let index = 0; index < record.findings.length && index < MAX_WORKER_FINDINGS; index++) {\n\t\t\t\tconst finding = normalizeEvidenceFinding(record.findings[index], MAX_WORKER_FINDING_CHARS);\n\t\t\t\tif (finding) findings.push(finding);\n\t\t\t}\n\t\t}\n\t\tconst verdict = record.verdict === \"accepted\" || record.verdict === \"rejected\" ? record.verdict : undefined;\n\t\tconst reasonCodes = Array.isArray(record.reasonCodes)\n\t\t\t? record.reasonCodes\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t(reasonCode): reasonCode is string => typeof reasonCode === \"string\" && reasonCode.trim().length > 0,\n\t\t\t\t\t)\n\t\t\t\t\t.slice(0, MAX_WORKER_REASON_CODES)\n\t\t\t\t\t.map((reasonCode) => reasonCode.trim().slice(0, MAX_WORKER_REASON_CODE_CHARS))\n\t\t\t: [];\n\t\tconst actionOutcome = parseWorkerActions(record.actions);\n\t\treturn {\n\t\t\tsummary: summary.trim().slice(0, MAX_WORKER_CLAIM_SUMMARY_CHARS),\n\t\t\tstatus,\n\t\t\tblockers,\n\t\t\tfindings,\n\t\t\tactions: actionOutcome.kind === \"accepted\" ? actionOutcome.actions : [],\n\t\t\t...(actionOutcome.kind === \"rejected\" ? { actionRejection: actionOutcome } : {}),\n\t\t\t...(verdict ? { verdict } : {}),\n\t\t\treasonCodes,\n\t\t};\n\t}\n\treturn undefined;\n}\n\nfunction buildWorkerEvidence(request: WorkerRequest, findings: ParsedWorkerOutput[\"findings\"]) {\n\tif (findings.length === 0) return undefined;\n\tconst instructionsRef: EvidenceRef = {\n\t\tid: \"src-instructions\",\n\t\tkind: \"user\",\n\t\ttitle: \"Delegated task instructions\",\n\t\ttrusted: true,\n\t\texcerpt: request.instructions.slice(0, 2000),\n\t};\n\tconst synthesisRef: EvidenceRef = {\n\t\tid: \"src-worker\",\n\t\tkind: \"tool\",\n\t\ttitle: \"Delegated worker synthesis\",\n\t\ttrusted: false,\n\t};\n\treturn createEvidenceBundle({\n\t\tquery: `worker:${request.id}`,\n\t\tsources: [instructionsRef, synthesisRef],\n\t\tfindings: projectEvidenceFindings(findings, synthesisRef.id),\n\t});\n}\n\nfunction finishOutcome(args: {\n\trequest: WorkerRequest;\n\tclaim: WorkerClaim;\n\tlaneStatus: LaneTerminalStatus;\n\treasonCode: string;\n\treasonDetail?: string;\n\tcostUsd: number;\n\tcwd?: string;\n}): WorkerRunOutcome {\n\tconst claim = normalizeWorkerClaimForHost(args.claim);\n\tconst acceptance = validateWorkerClaim({ request: args.request, claim, cwd: args.cwd });\n\treturn {\n\t\tclaim,\n\t\tacceptance,\n\t\taccepted: acceptance.outcome === \"allow\",\n\t\tlaneStatus: args.laneStatus,\n\t\treasonCode: args.reasonCode,\n\t\t...(args.reasonDetail ? { reasonDetail: args.reasonDetail } : {}),\n\t\tcostUsd: args.costUsd,\n\t};\n}\n\nexport async function runWorker(options: WorkerRunnerOptions): Promise<WorkerRunOutcome> {\n\tconst now = options.now ?? (() => new Date().toISOString());\n\tconst baseClaim = {\n\t\trequestId: options.request.id,\n\t\tchangedFiles: [] as string[],\n\t\tusageReportId: options.usageReportId,\n\t\tcreatedAt: now(),\n\t};\n\n\t// The write prompt requires BOTH the envelope grant and a caller-supplied applier.\n\tconst writeCapable =\n\t\toptions.request.envelope.capabilities.includes(\"filesystem.write\") && options.applyActions !== undefined;\n\n\tconst bounded = await runBoundedCompletion({\n\t\tmaxWallClockMs: options.maxWallClockMs,\n\t\tsignal: options.signal,\n\t\texecute: (signal) =>\n\t\t\toptions.complete({\n\t\t\t\tsystemPrompt: options.verificationSubjectTaskId\n\t\t\t\t\t? buildVerifierSystemPrompt(options.verificationSubjectTaskId, {\n\t\t\t\t\t\t\tdelegate: options.delegationCapable === true,\n\t\t\t\t\t\t})\n\t\t\t\t\t: buildWorkerSystemPrompt({\n\t\t\t\t\t\t\twrite: writeCapable,\n\t\t\t\t\t\t\tprocess: options.processCapable === true,\n\t\t\t\t\t\t\tdelegate: options.delegationCapable === true,\n\t\t\t\t\t\t}),\n\t\t\t\tuserPrompt: buildWorkerUserPrompt(options.request),\n\t\t\t\tsignal,\n\t\t\t}),\n\t});\n\tconst costUsd = bounded.completion?.costUsd ?? 0;\n\tconst liveChangedFilesReport = collectBoundedWorkerClaimChangedFiles(options.getChangedFiles?.() ?? []);\n\tconst liveChangedFiles = liveChangedFilesReport.values;\n\n\tif (bounded.failure) {\n\t\tconst isBudgetExhausted =\n\t\t\tbounded.failure.status === \"budget_exhausted\" ||\n\t\t\tbounded.failure.reasonCode.includes(\"budget_exhausted\") ||\n\t\t\tbounded.failure.reasonCode.includes(\"cost_budget_exceeded\");\n\t\tconst cancelled = bounded.failure.status === \"canceled\" || bounded.failure.status === \"timeout\";\n\t\tconst blockers = [\n\t\t\t...(liveChangedFilesReport.overflowed\n\t\t\t\t? [\"worker changed-file report exceeded the durable claim bound; parent review is required\"]\n\t\t\t\t: []),\n\t\t\t...(isBudgetExhausted ? [`budget limit reached: ${bounded.failure.reasonCode}`] : []),\n\t\t];\n\t\tconst status = isBudgetExhausted ? \"partial\" : cancelled ? \"cancelled\" : \"failed\";\n\t\tconst summary = isBudgetExhausted\n\t\t\t? `Worker paused at budget limit (${bounded.failure.reasonCode})${\n\t\t\t\t\tbounded.failure.detail ? `: ${bounded.failure.detail}` : \".\"\n\t\t\t\t}`\n\t\t\t: `Worker did not complete: ${bounded.failure.reasonCode}${\n\t\t\t\t\tbounded.failure.detail ? ` — ${bounded.failure.detail}` : \"\"\n\t\t\t\t}`;\n\t\treturn finishOutcome({\n\t\t\trequest: options.request,\n\t\t\tcwd: options.cwd,\n\t\t\tclaim: {\n\t\t\t\t...baseClaim,\n\t\t\t\tchangedFiles: liveChangedFiles,\n\t\t\t\tstatus,\n\t\t\t\tsummary,\n\t\t\t\t...(blockers.length > 0 ? { blockers } : {}),\n\t\t\t},\n\t\t\tlaneStatus: bounded.failure.status,\n\t\t\treasonCode: bounded.failure.reasonCode,\n\t\t\t...(bounded.failure.detail ? { reasonDetail: bounded.failure.detail } : {}),\n\t\t\tcostUsd,\n\t\t});\n\t}\n\n\tconst completion = bounded.completion as WorkerCompletion | undefined;\n\tconst completionChangedFilesReport = collectBoundedWorkerClaimChangedFiles(completion?.changedFiles ?? []);\n\tconst mergedChangedFilesReport = collectBoundedWorkerClaimChangedFiles([\n\t\t...liveChangedFiles,\n\t\t...completionChangedFilesReport.values,\n\t]);\n\tconst changedFilesOverflowed =\n\t\tliveChangedFilesReport.overflowed ||\n\t\tcompletionChangedFilesReport.overflowed ||\n\t\tmergedChangedFilesReport.overflowed;\n\tconst completionChangedFiles = mergedChangedFilesReport.values;\n\tconst completionBaseClaim = { ...baseClaim, changedFiles: completionChangedFiles };\n\tif (!completion || completion.stopReason === \"error\" || completion.stopReason === \"aborted\") {\n\t\treturn finishOutcome({\n\t\t\trequest: options.request,\n\t\t\tcwd: options.cwd,\n\t\t\tclaim: { ...completionBaseClaim, status: \"failed\", summary: \"Worker model call failed.\" },\n\t\t\tlaneStatus: \"failed\",\n\t\t\treasonCode: \"model_error\",\n\t\t\tcostUsd,\n\t\t});\n\t}\n\n\tconst parsed = parseWorkerOutput(completion.text);\n\tif (!parsed) {\n\t\tif (hasMalformedWorkerClaimEnvelope(completion.text)) {\n\t\t\treturn finishOutcome({\n\t\t\t\trequest: options.request,\n\t\t\t\tcwd: options.cwd,\n\t\t\t\tclaim: {\n\t\t\t\t\t...completionBaseClaim,\n\t\t\t\t\tstatus: \"failed\",\n\t\t\t\t\tsummary: \"Worker output used a malformed structured claim envelope.\",\n\t\t\t\t},\n\t\t\t\tlaneStatus: \"failed\",\n\t\t\t\treasonCode: \"unparseable_output\",\n\t\t\t\tcostUsd,\n\t\t\t});\n\t\t}\n\t\tconst readOnlyPlainText =\n\t\t\t!options.verificationSubjectTaskId &&\n\t\t\t!writeCapable &&\n\t\t\tcompletion.text.trim().length > 0 &&\n\t\t\tcompletionChangedFiles.length === 0 &&\n\t\t\t!changedFilesOverflowed;\n\t\tif (readOnlyPlainText) {\n\t\t\tconst completionBlockersReport = collectBoundedWorkerClaimBlockers(completion.blockers ?? []);\n\t\t\tconst completionBlockers = completionBlockersReport.overflowed\n\t\t\t\t? [\n\t\t\t\t\t\t...completionBlockersReport.values.slice(0, Math.max(0, MAX_WORKER_CLAIM_BLOCKERS - 1)),\n\t\t\t\t\t\t\"worker blocker report exceeded the durable claim bound; parent review is required\",\n\t\t\t\t\t]\n\t\t\t\t: completionBlockersReport.values;\n\t\t\tconst incompleteNote =\n\t\t\t\tcompletion.stopReason === \"stop\"\n\t\t\t\t\t? \"\"\n\t\t\t\t\t: `\\n\\n[Worker output ended with stop reason '${completion.stopReason}'; verify completeness.]`;\n\t\t\tconst summary = `${completion.text.trim().slice(0, Math.max(0, MAX_WORKER_CLAIM_SUMMARY_CHARS - incompleteNote.length))}${incompleteNote}`;\n\t\t\tconst blocked = completionBlockers.length > 0;\n\t\t\treturn finishOutcome({\n\t\t\t\trequest: options.request,\n\t\t\t\tcwd: options.cwd,\n\t\t\t\tclaim: {\n\t\t\t\t\t...completionBaseClaim,\n\t\t\t\t\tstatus: blocked ? \"blocked\" : \"completed\",\n\t\t\t\t\toutputFormat: \"plain_text\",\n\t\t\t\t\tsummary,\n\t\t\t\t\t...(blocked ? { blockers: completionBlockers } : {}),\n\t\t\t\t},\n\t\t\t\tlaneStatus: blocked ? \"blocked\" : \"succeeded\",\n\t\t\t\treasonCode: blocked\n\t\t\t\t\t? \"worker_blocked\"\n\t\t\t\t\t: completion.stopReason === \"stop\"\n\t\t\t\t\t\t? \"worker_completed_plain_text\"\n\t\t\t\t\t\t: \"worker_completed_plain_text_incomplete\",\n\t\t\t\tcostUsd,\n\t\t\t});\n\t\t}\n\t\treturn finishOutcome({\n\t\t\trequest: options.request,\n\t\t\tcwd: options.cwd,\n\t\t\tclaim: {\n\t\t\t\t...completionBaseClaim,\n\t\t\t\tstatus: \"failed\",\n\t\t\t\tsummary: \"Worker output was not valid structured JSON.\",\n\t\t\t\t...(changedFilesOverflowed\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tblockers: [\n\t\t\t\t\t\t\t\t\"worker changed-file report exceeded the durable claim bound; parent review is required\",\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t},\n\t\t\tlaneStatus: \"failed\",\n\t\t\treasonCode: \"unparseable_output\",\n\t\t\tcostUsd,\n\t\t});\n\t}\n\n\tconst evidence = buildWorkerEvidence(options.request, parsed.findings);\n\tif (parsed.actionRejection) {\n\t\treturn finishOutcome({\n\t\t\trequest: options.request,\n\t\t\tcwd: options.cwd,\n\t\t\tclaim: {\n\t\t\t\t...completionBaseClaim,\n\t\t\t\tstatus: \"failed\",\n\t\t\t\tsummary: \"Worker output contained invalid structured actions.\",\n\t\t\t\tblockers: [parsed.actionRejection.reasonCode],\n\t\t\t},\n\t\t\tlaneStatus: \"failed\",\n\t\t\treasonCode: \"unparseable_output\",\n\t\t\tcostUsd,\n\t\t});\n\t}\n\tif (options.verificationSubjectTaskId && (!parsed.verdict || parsed.reasonCodes.length === 0)) {\n\t\treturn finishOutcome({\n\t\t\trequest: options.request,\n\t\t\tcwd: options.cwd,\n\t\t\tclaim: {\n\t\t\t\t...completionBaseClaim,\n\t\t\t\tstatus: \"failed\",\n\t\t\t\tsummary: \"Verifier output omitted its typed verdict or reasonCodes.\",\n\t\t\t},\n\t\t\tlaneStatus: \"failed\",\n\t\t\treasonCode: \"invalid_verifier_result\",\n\t\t\tcostUsd,\n\t\t});\n\t}\n\tlet changedFiles: string[] = [...completionChangedFiles];\n\tconst completionBlockersReport = collectBoundedWorkerClaimBlockers(completion.blockers ?? []);\n\tconst actionBlockers: string[] = [...completionBlockersReport.values];\n\tif (changedFilesOverflowed) {\n\t\tactionBlockers.push(\"worker changed-file report exceeded the durable claim bound; parent review is required\");\n\t}\n\tif (completionBlockersReport.overflowed) {\n\t\tactionBlockers.push(\"worker blocker report exceeded the durable claim bound; parent review is required\");\n\t}\n\tif (!writeCapable && completionChangedFiles.length > 0) {\n\t\tactionBlockers.push(\"worker reported file changes without a filesystem.write envelope grant\");\n\t}\n\tif (writeCapable && parsed.status !== \"blocked\" && parsed.actions.length > 0 && options.applyActions) {\n\t\t// Runner-side application through the envelope path scope: refusals and failures are\n\t\t// surfaced as blockers so a partially-applied change can never look like clean success.\n\t\tconst applied = options.applyActions(parsed.actions);\n\t\tconst appliedChangedFilesReport = collectBoundedWorkerClaimChangedFiles(applied.changedFiles);\n\t\tconst mergedAppliedChangedFilesReport = collectBoundedWorkerClaimChangedFiles([\n\t\t\t...changedFiles,\n\t\t\t...appliedChangedFilesReport.values,\n\t\t]);\n\t\tchangedFiles = mergedAppliedChangedFilesReport.values;\n\t\tif (appliedChangedFilesReport.overflowed || mergedAppliedChangedFilesReport.overflowed) {\n\t\t\tactionBlockers.push(\"applied changed-file report exceeded the durable claim bound; parent review is required\");\n\t\t}\n\t\tfor (const refusal of applied.refused) {\n\t\t\tactionBlockers.push(`action refused (${refusal.path}): ${refusal.reason}`);\n\t\t}\n\t\tfor (const failure of applied.failed) {\n\t\t\tactionBlockers.push(`action failed (${failure.path}): ${failure.reason}`);\n\t\t}\n\t\tfor (const inspection of applied.inspectionRequired) {\n\t\t\tactionBlockers.push(\n\t\t\t\t`action requires workspace/evidence inspection (${inspection.path}, ${inspection.state}): ${inspection.reasonCode}`,\n\t\t\t);\n\t\t}\n\t} else if (!writeCapable && parsed.actions.length > 0) {\n\t\tactionBlockers.push(\"worker emitted file actions without a filesystem.write envelope grant; nothing was applied\");\n\t}\n\tconst allBlockersReport = collectBoundedWorkerClaimBlockers([...parsed.blockers, ...actionBlockers]);\n\tconst allBlockers = allBlockersReport.overflowed\n\t\t? [\n\t\t\t\t...allBlockersReport.values.slice(0, Math.max(0, MAX_WORKER_CLAIM_BLOCKERS - 1)),\n\t\t\t\t\"worker blocker report exceeded the durable claim bound; parent review is required\",\n\t\t\t]\n\t\t: allBlockersReport.values;\n\tconst claim: WorkerClaim = {\n\t\t...baseClaim,\n\t\tchangedFiles,\n\t\tstatus: parsed.status === \"blocked\" || allBlockers.length > 0 ? \"blocked\" : \"completed\",\n\t\tsummary: parsed.summary,\n\t\t...(allBlockers.length > 0 ? { blockers: allBlockers } : {}),\n\t\t...(evidence ? { evidence } : {}),\n\t\t...(options.verificationSubjectTaskId && parsed.verdict\n\t\t\t? {\n\t\t\t\t\tverification: {\n\t\t\t\t\t\tsubjectTaskId: options.verificationSubjectTaskId,\n\t\t\t\t\t\tverdict: parsed.verdict,\n\t\t\t\t\t\treasonCodes: parsed.reasonCodes,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t};\n\n\tif (claim.status === \"blocked\") {\n\t\treturn finishOutcome({\n\t\t\trequest: options.request,\n\t\t\tcwd: options.cwd,\n\t\t\tclaim,\n\t\t\tlaneStatus: \"blocked\",\n\t\t\treasonCode: \"worker_blocked\",\n\t\t\tcostUsd,\n\t\t});\n\t}\n\n\tconst overBudget = options.maxUsd !== undefined && costUsd > options.maxUsd;\n\tconst finalClaim: WorkerClaim = overBudget\n\t\t? {\n\t\t\t\t...claim,\n\t\t\t\tstatus: \"partial\",\n\t\t\t\tblockers: [...(claim.blockers ?? []), \"cost_budget_exceeded\"],\n\t\t\t}\n\t\t: claim;\n\treturn finishOutcome({\n\t\trequest: options.request,\n\t\tcwd: options.cwd,\n\t\tclaim: finalClaim,\n\t\tlaneStatus: overBudget ? \"budget_exhausted\" : \"succeeded\",\n\t\treasonCode: overBudget\n\t\t\t? \"cost_budget_exceeded\"\n\t\t\t: claim.verification\n\t\t\t\t? claim.verification.verdict === \"accepted\"\n\t\t\t\t\t? \"verification_accepted\"\n\t\t\t\t\t: \"verification_rejected\"\n\t\t\t\t: \"worker_completed\",\n\t\tcostUsd,\n\t});\n}\n"]}
|
|
1
|
+
{"version":3,"file":"worker-runner.js","sourceRoot":"","sources":["../../../src/core/delegation/worker-runner.ts"],"names":[],"mappings":"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","sourcesContent":["import { runBoundedCompletion } from \"../autonomy/bounded-completion.ts\";\nimport type { EvidenceRef, GateOutcome, WorkerClaim, WorkerRequest } from \"../autonomy/contracts.ts\";\nimport {\n\ttype EvidenceFindingDraft,\n\tnormalizeEvidenceFinding,\n\tprojectEvidenceFindings,\n} from \"../autonomy/evidence-finding-projection.ts\";\nimport type { LaneTerminalStatus } from \"../autonomy/lane-tracker.ts\";\nimport type { WorkerRole } from \"../orchestration/contracts.ts\";\nimport {\n\tbuildVerifierSystemPrompt,\n\tbuildWorkerSystemPrompt,\n\tWORKER_LANE_SYSTEM_PROMPT,\n\tWORKER_OPERATOR_LANE_SYSTEM_PROMPT,\n\tWORKER_WRITE_LANE_SYSTEM_PROMPT,\n} from \"../provider-prompt-contracts.ts\";\nimport { createEvidenceBundle } from \"../research/evidence-bundle.ts\";\nimport {\n\ttype AppliedActionsReport,\n\tparseWorkerActions,\n\ttype RejectedWorkerActions,\n\ttype WorkerAction,\n} from \"./worker-actions.ts\";\nimport {\n\tclipWorkerClaimSummary,\n\tcollectBoundedWorkerClaimBlockers,\n\tcollectBoundedWorkerClaimChangedFiles,\n\tMAX_WORKER_CLAIM_BLOCKER_CHARS,\n\tMAX_WORKER_CLAIM_BLOCKERS,\n\tnormalizeWorkerClaimForHost,\n\tvalidateWorkerClaim,\n} from \"./worker-claim.ts\";\n\nexport {\n\tbuildVerifierSystemPrompt,\n\tbuildWorkerSystemPrompt,\n\tWORKER_LANE_SYSTEM_PROMPT,\n\tWORKER_OPERATOR_LANE_SYSTEM_PROMPT,\n\tWORKER_WRITE_LANE_SYSTEM_PROMPT,\n};\n\n/**\n * Pure execution for one bounded specialist delegation: bounded isolated completion ->\n * parse -> untrusted `WorkerClaim` -> parent validation via {@link validateWorkerClaim}.\n *\n * The injected completion may be a bounded child tool loop. Its tool surface is built and gated by\n * the host; this module keeps the structured-output contract and treats every claim as untrusted\n * until parent validation succeeds.\n */\n\nexport interface WorkerCompletion {\n\ttext: string;\n\tcostUsd: number;\n\tstopReason: string;\n\t/** Files successfully changed by the child tool loop before it produced the final JSON. */\n\tchangedFiles?: readonly string[];\n\t/** Capability refusals or execution failures observed inside the child tool loop. */\n\tblockers?: readonly string[];\n}\n\nexport interface WorkerRunnerOptions {\n\trequest: WorkerRequest;\n\t/** Budget for this delegation; undefined disables this bound, while zero permits only free work. */\n\tmaxUsd?: number;\n\t/** Wall-clock budget in milliseconds; 0 disables. */\n\tmaxWallClockMs: number;\n\t/**\n\t * Pre-allocated spawned-usage report id. Always stamped on the claim so parent validation can\n\t * enforce the cost-visibility invariant (a completed claim without a usage report is blocked).\n\t */\n\tusageReportId: string;\n\tcomplete: (args: { systemPrompt: string; userPrompt: string; signal: AbortSignal }) => Promise<WorkerCompletion>;\n\t/** Live successful child-tool mutations, including writes completed before timeout/cancellation. */\n\tgetChangedFiles?: () => readonly string[];\n\tsignal?: AbortSignal;\n\tnow?: () => string;\n\t/** Enables the WRITE lane: only honored when the request envelope grants \"filesystem.write\". The\n\t * runner applies the worker's structured actions through the envelope path scope; refusals\n\t * and failures become blockers, never silent drops. */\n\tapplyActions?: (actions: readonly WorkerAction[]) => AppliedActionsReport;\n\t/** Enables the constrained direct-argv operator role prompt. */\n\tprocessCapable?: boolean;\n\t/** Enables recursive delegation and orchestration-tree coordination guidance. */\n\tdelegationCapable?: boolean;\n\t/** Session cwd — the baseline for relative changed-file and envelope paths in parent\n\t * validation. Defaults to process.cwd(). */\n\tcwd?: string;\n\t/** Turns the child into a read-only semantic verifier for this exact durable task. */\n\tverificationSubjectTaskId?: string;\n}\n\nexport interface WorkerRunOutcome {\n\tclaim: WorkerClaim;\n\t/** Parent-review verdict from {@link validateWorkerClaim}; worker output stays untrusted. */\n\tacceptance: GateOutcome;\n\taccepted: boolean;\n\tlaneStatus: LaneTerminalStatus;\n\treasonCode: string;\n\t/** Underlying executor error for bounded failures; drives the in-process retry decision. */\n\treasonDetail?: string;\n\tcostUsd: number;\n\t/**\n\t * Set by the caller (worker-delegation-controller.ts admission), never by runWorker itself, when\n\t * a pin policy is active, the effective role has no pin, and the caller requested an explicit\n\t * model — i.e. the owner's model pin was evaded, not merely inapplicable. Diagnostics only.\n\t */\n\tmodelPinBypass?: WorkerRole;\n}\n\nexport function buildWorkerUserPrompt(request: WorkerRequest): string {\n\treturn [\n\t\t\"TASK\",\n\t\trequest.instructions,\n\t\t\"END TASK\",\n\t\t'Do not replace the worker claim envelope; put requested detail inside \"summary\" and \"findings\".',\n\t].join(\"\\n\");\n}\n\nexport interface ParsedWorkerOutput {\n\tsummary: string;\n\tstatus: \"completed\" | \"blocked\";\n\tblockers: string[];\n\tfindings: EvidenceFindingDraft[];\n\tactions: WorkerAction[];\n\t/** Present when the model emitted an action list that cannot safely reach execution. */\n\tactionRejection?: RejectedWorkerActions;\n\tverdict?: \"accepted\" | \"rejected\";\n\treasonCodes: string[];\n}\n\nconst MAX_WORKER_OUTPUT_CHARS = 512 * 1024;\nconst MAX_WORKER_JSON_CANDIDATES = 64;\nconst MAX_WORKER_JSON_DEPTH = 256;\nconst MAX_WORKER_FINDINGS = 64;\nconst MAX_WORKER_FINDING_CHARS = 2_000;\nconst MAX_WORKER_REASON_CODES = 32;\nconst MAX_WORKER_REASON_CODE_CHARS = 128;\n\nfunction balancedObjectCandidates(text: string): string[] {\n\tconst ranges: Array<{ start: number; end: number }> = [];\n\tlet start: number | undefined;\n\tlet depth = 0;\n\tlet inString = false;\n\tlet escaped = false;\n\tfor (let index = 0; index < text.length; index++) {\n\t\tconst character = text[index];\n\t\tif (inString) {\n\t\t\tif (escaped) escaped = false;\n\t\t\telse if (character === \"\\\\\") escaped = true;\n\t\t\telse if (character === '\"') inString = false;\n\t\t\tcontinue;\n\t\t}\n\t\tif (character === '\"') {\n\t\t\tinString = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (character === \"{\") {\n\t\t\tif (depth === 0) start = index;\n\t\t\tdepth++;\n\t\t\tif (depth > MAX_WORKER_JSON_DEPTH) return ranges.map((range) => text.slice(range.start, range.end));\n\t\t\tcontinue;\n\t\t}\n\t\tif (character !== \"}\") continue;\n\t\tif (depth === 0) continue;\n\t\tdepth--;\n\t\tif (depth !== 0 || start === undefined || ranges.length >= MAX_WORKER_JSON_CANDIDATES) continue;\n\t\tconst end = index + 1;\n\t\tif (end - start <= MAX_WORKER_OUTPUT_CHARS) ranges.push({ start, end });\n\t\tstart = undefined;\n\t}\n\treturn ranges.map(({ start, end }) => text.slice(start, end));\n}\n\nfunction workerOutputRecords(text: string): Record<string, unknown>[] {\n\tconst trimmed = text.trim();\n\tif (trimmed.length === 0 || trimmed.length > MAX_WORKER_OUTPUT_CHARS) return [];\n\tconst candidates: string[] = [trimmed];\n\tconst fenced = /```(?:json)?\\s*([\\s\\S]*?)```/.exec(trimmed);\n\tif (fenced?.[1]) candidates.push(fenced[1].trim());\n\tcandidates.push(...balancedObjectCandidates(trimmed));\n\tconst records: Record<string, unknown>[] = [];\n\tfor (const candidate of candidates) {\n\t\ttry {\n\t\t\tconst parsed: unknown = JSON.parse(candidate);\n\t\t\tif (parsed && typeof parsed === \"object\" && !Array.isArray(parsed))\n\t\t\t\trecords.push(parsed as Record<string, unknown>);\n\t\t} catch {\n\t\t\t// Candidate extraction is deliberately best-effort; a later balanced candidate may still be valid.\n\t\t}\n\t}\n\treturn records;\n}\n\nfunction isWorkerStatus(value: unknown): value is ParsedWorkerOutput[\"status\"] {\n\treturn value === \"completed\" || value === \"blocked\";\n}\n\n/**\n * Plain-text fallback is for output that never attempted the worker claim envelope. A JSON object\n * with a claim summary but malformed typed fields is a contract failure, never an implicit success.\n */\nfunction hasMalformedWorkerClaimEnvelope(text: string): boolean {\n\treturn workerOutputRecords(text).some((record) => {\n\t\tif (typeof record.summary !== \"string\" || record.summary.trim().length === 0) return false;\n\t\tif (!isWorkerStatus(record.status)) return true;\n\t\tif (record.verdict !== undefined && record.verdict !== \"accepted\" && record.verdict !== \"rejected\") return true;\n\t\treturn (\n\t\t\trecord.reasonCodes !== undefined &&\n\t\t\t(!Array.isArray(record.reasonCodes) ||\n\t\t\t\trecord.reasonCodes.some((reasonCode) => typeof reasonCode !== \"string\" || reasonCode.trim().length === 0))\n\t\t);\n\t});\n}\n\nexport function parseWorkerOutput(text: string): ParsedWorkerOutput | undefined {\n\tfor (const record of workerOutputRecords(text)) {\n\t\tconst summary = record.summary;\n\t\tif (typeof summary !== \"string\" || summary.trim().length === 0) continue;\n\t\tif (!isWorkerStatus(record.status)) continue;\n\t\tif (record.verdict !== undefined && record.verdict !== \"accepted\" && record.verdict !== \"rejected\") continue;\n\t\tif (\n\t\t\trecord.reasonCodes !== undefined &&\n\t\t\t(!Array.isArray(record.reasonCodes) ||\n\t\t\t\trecord.reasonCodes.some((reasonCode) => typeof reasonCode !== \"string\" || reasonCode.trim().length === 0))\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst status = record.status;\n\t\tconst blockers = Array.isArray(record.blockers)\n\t\t\t? record.blockers\n\t\t\t\t\t.filter((blocker): blocker is string => typeof blocker === \"string\" && blocker.trim().length > 0)\n\t\t\t\t\t.slice(0, MAX_WORKER_CLAIM_BLOCKERS)\n\t\t\t\t\t.map((blocker) => blocker.trim().slice(0, MAX_WORKER_CLAIM_BLOCKER_CHARS))\n\t\t\t: [];\n\t\tconst findings: EvidenceFindingDraft[] = [];\n\t\tif (Array.isArray(record.findings)) {\n\t\t\tfor (let index = 0; index < record.findings.length && index < MAX_WORKER_FINDINGS; index++) {\n\t\t\t\tconst finding = normalizeEvidenceFinding(record.findings[index], MAX_WORKER_FINDING_CHARS);\n\t\t\t\tif (finding) findings.push(finding);\n\t\t\t}\n\t\t}\n\t\tconst verdict = record.verdict === \"accepted\" || record.verdict === \"rejected\" ? record.verdict : undefined;\n\t\tconst reasonCodes = Array.isArray(record.reasonCodes)\n\t\t\t? record.reasonCodes\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t(reasonCode): reasonCode is string => typeof reasonCode === \"string\" && reasonCode.trim().length > 0,\n\t\t\t\t\t)\n\t\t\t\t\t.slice(0, MAX_WORKER_REASON_CODES)\n\t\t\t\t\t.map((reasonCode) => reasonCode.trim().slice(0, MAX_WORKER_REASON_CODE_CHARS))\n\t\t\t: [];\n\t\tconst actionOutcome = parseWorkerActions(record.actions);\n\t\treturn {\n\t\t\tsummary: clipWorkerClaimSummary(summary.trim()),\n\t\t\tstatus,\n\t\t\tblockers,\n\t\t\tfindings,\n\t\t\tactions: actionOutcome.kind === \"accepted\" ? actionOutcome.actions : [],\n\t\t\t...(actionOutcome.kind === \"rejected\" ? { actionRejection: actionOutcome } : {}),\n\t\t\t...(verdict ? { verdict } : {}),\n\t\t\treasonCodes,\n\t\t};\n\t}\n\treturn undefined;\n}\n\nfunction buildWorkerEvidence(request: WorkerRequest, findings: ParsedWorkerOutput[\"findings\"]) {\n\tif (findings.length === 0) return undefined;\n\tconst instructionsRef: EvidenceRef = {\n\t\tid: \"src-instructions\",\n\t\tkind: \"user\",\n\t\ttitle: \"Delegated task instructions\",\n\t\ttrusted: true,\n\t\texcerpt: request.instructions.slice(0, 2000),\n\t};\n\tconst synthesisRef: EvidenceRef = {\n\t\tid: \"src-worker\",\n\t\tkind: \"tool\",\n\t\ttitle: \"Delegated worker synthesis\",\n\t\ttrusted: false,\n\t};\n\treturn createEvidenceBundle({\n\t\tquery: `worker:${request.id}`,\n\t\tsources: [instructionsRef, synthesisRef],\n\t\tfindings: projectEvidenceFindings(findings, synthesisRef.id),\n\t});\n}\n\nfunction finishOutcome(args: {\n\trequest: WorkerRequest;\n\tclaim: WorkerClaim;\n\tlaneStatus: LaneTerminalStatus;\n\treasonCode: string;\n\treasonDetail?: string;\n\tcostUsd: number;\n\tcwd?: string;\n}): WorkerRunOutcome {\n\tconst claim = normalizeWorkerClaimForHost(args.claim);\n\tconst acceptance = validateWorkerClaim({ request: args.request, claim, cwd: args.cwd });\n\treturn {\n\t\tclaim,\n\t\tacceptance,\n\t\taccepted: acceptance.outcome === \"allow\",\n\t\tlaneStatus: args.laneStatus,\n\t\treasonCode: args.reasonCode,\n\t\t...(args.reasonDetail ? { reasonDetail: args.reasonDetail } : {}),\n\t\tcostUsd: args.costUsd,\n\t};\n}\n\nexport async function runWorker(options: WorkerRunnerOptions): Promise<WorkerRunOutcome> {\n\tconst now = options.now ?? (() => new Date().toISOString());\n\tconst baseClaim = {\n\t\trequestId: options.request.id,\n\t\tchangedFiles: [] as string[],\n\t\tusageReportId: options.usageReportId,\n\t\tcreatedAt: now(),\n\t};\n\n\t// The write prompt requires BOTH the envelope grant and a caller-supplied applier.\n\tconst writeCapable =\n\t\toptions.request.envelope.capabilities.includes(\"filesystem.write\") && options.applyActions !== undefined;\n\n\tconst bounded = await runBoundedCompletion({\n\t\tmaxWallClockMs: options.maxWallClockMs,\n\t\tsignal: options.signal,\n\t\texecute: (signal) =>\n\t\t\toptions.complete({\n\t\t\t\tsystemPrompt: options.verificationSubjectTaskId\n\t\t\t\t\t? buildVerifierSystemPrompt(options.verificationSubjectTaskId, {\n\t\t\t\t\t\t\tdelegate: options.delegationCapable === true,\n\t\t\t\t\t\t})\n\t\t\t\t\t: buildWorkerSystemPrompt({\n\t\t\t\t\t\t\twrite: writeCapable,\n\t\t\t\t\t\t\tprocess: options.processCapable === true,\n\t\t\t\t\t\t\tdelegate: options.delegationCapable === true,\n\t\t\t\t\t\t}),\n\t\t\t\tuserPrompt: buildWorkerUserPrompt(options.request),\n\t\t\t\tsignal,\n\t\t\t}),\n\t});\n\tconst costUsd = bounded.completion?.costUsd ?? 0;\n\tconst liveChangedFilesReport = collectBoundedWorkerClaimChangedFiles(options.getChangedFiles?.() ?? []);\n\tconst liveChangedFiles = liveChangedFilesReport.values;\n\n\tif (bounded.failure) {\n\t\tconst isBudgetExhausted =\n\t\t\tbounded.failure.status === \"budget_exhausted\" ||\n\t\t\tbounded.failure.reasonCode.includes(\"budget_exhausted\") ||\n\t\t\tbounded.failure.reasonCode.includes(\"cost_budget_exceeded\");\n\t\tconst cancelled = bounded.failure.status === \"canceled\" || bounded.failure.status === \"timeout\";\n\t\tconst blockers = [\n\t\t\t...(liveChangedFilesReport.overflowed\n\t\t\t\t? [\"worker changed-file report exceeded the durable claim bound; parent review is required\"]\n\t\t\t\t: []),\n\t\t\t...(isBudgetExhausted ? [`budget limit reached: ${bounded.failure.reasonCode}`] : []),\n\t\t];\n\t\tconst status = isBudgetExhausted ? \"partial\" : cancelled ? \"cancelled\" : \"failed\";\n\t\tconst summary = isBudgetExhausted\n\t\t\t? `Worker paused at budget limit (${bounded.failure.reasonCode})${\n\t\t\t\t\tbounded.failure.detail ? `: ${bounded.failure.detail}` : \".\"\n\t\t\t\t}`\n\t\t\t: `Worker did not complete: ${bounded.failure.reasonCode}${\n\t\t\t\t\tbounded.failure.detail ? ` — ${bounded.failure.detail}` : \"\"\n\t\t\t\t}`;\n\t\treturn finishOutcome({\n\t\t\trequest: options.request,\n\t\t\tcwd: options.cwd,\n\t\t\tclaim: {\n\t\t\t\t...baseClaim,\n\t\t\t\tchangedFiles: liveChangedFiles,\n\t\t\t\tstatus,\n\t\t\t\tsummary,\n\t\t\t\t...(blockers.length > 0 ? { blockers } : {}),\n\t\t\t},\n\t\t\tlaneStatus: bounded.failure.status,\n\t\t\treasonCode: bounded.failure.reasonCode,\n\t\t\t...(bounded.failure.detail ? { reasonDetail: bounded.failure.detail } : {}),\n\t\t\tcostUsd,\n\t\t});\n\t}\n\n\tconst completion = bounded.completion as WorkerCompletion | undefined;\n\tconst completionChangedFilesReport = collectBoundedWorkerClaimChangedFiles(completion?.changedFiles ?? []);\n\tconst mergedChangedFilesReport = collectBoundedWorkerClaimChangedFiles([\n\t\t...liveChangedFiles,\n\t\t...completionChangedFilesReport.values,\n\t]);\n\tconst changedFilesOverflowed =\n\t\tliveChangedFilesReport.overflowed ||\n\t\tcompletionChangedFilesReport.overflowed ||\n\t\tmergedChangedFilesReport.overflowed;\n\tconst completionChangedFiles = mergedChangedFilesReport.values;\n\tconst completionBaseClaim = { ...baseClaim, changedFiles: completionChangedFiles };\n\tif (!completion || completion.stopReason === \"error\" || completion.stopReason === \"aborted\") {\n\t\treturn finishOutcome({\n\t\t\trequest: options.request,\n\t\t\tcwd: options.cwd,\n\t\t\tclaim: { ...completionBaseClaim, status: \"failed\", summary: \"Worker model call failed.\" },\n\t\t\tlaneStatus: \"failed\",\n\t\t\treasonCode: \"model_error\",\n\t\t\tcostUsd,\n\t\t});\n\t}\n\n\tconst parsed = parseWorkerOutput(completion.text);\n\tif (!parsed) {\n\t\tif (hasMalformedWorkerClaimEnvelope(completion.text)) {\n\t\t\treturn finishOutcome({\n\t\t\t\trequest: options.request,\n\t\t\t\tcwd: options.cwd,\n\t\t\t\tclaim: {\n\t\t\t\t\t...completionBaseClaim,\n\t\t\t\t\tstatus: \"failed\",\n\t\t\t\t\tsummary: \"Worker output used a malformed structured claim envelope.\",\n\t\t\t\t},\n\t\t\t\tlaneStatus: \"failed\",\n\t\t\t\treasonCode: \"unparseable_output\",\n\t\t\t\tcostUsd,\n\t\t\t});\n\t\t}\n\t\tconst readOnlyPlainText =\n\t\t\t!options.verificationSubjectTaskId &&\n\t\t\t!writeCapable &&\n\t\t\tcompletion.text.trim().length > 0 &&\n\t\t\tcompletionChangedFiles.length === 0 &&\n\t\t\t!changedFilesOverflowed;\n\t\tif (readOnlyPlainText) {\n\t\t\tconst completionBlockersReport = collectBoundedWorkerClaimBlockers(completion.blockers ?? []);\n\t\t\tconst completionBlockers = completionBlockersReport.overflowed\n\t\t\t\t? [\n\t\t\t\t\t\t...completionBlockersReport.values.slice(0, Math.max(0, MAX_WORKER_CLAIM_BLOCKERS - 1)),\n\t\t\t\t\t\t\"worker blocker report exceeded the durable claim bound; parent review is required\",\n\t\t\t\t\t]\n\t\t\t\t: completionBlockersReport.values;\n\t\t\tconst incompleteNote =\n\t\t\t\tcompletion.stopReason === \"stop\"\n\t\t\t\t\t? \"\"\n\t\t\t\t\t: `\\n\\n[Worker output ended with stop reason '${completion.stopReason}'; verify completeness.]`;\n\t\t\tconst summary = clipWorkerClaimSummary(completion.text.trim(), incompleteNote);\n\t\t\tconst blocked = completionBlockers.length > 0;\n\t\t\treturn finishOutcome({\n\t\t\t\trequest: options.request,\n\t\t\t\tcwd: options.cwd,\n\t\t\t\tclaim: {\n\t\t\t\t\t...completionBaseClaim,\n\t\t\t\t\tstatus: blocked ? \"blocked\" : \"completed\",\n\t\t\t\t\toutputFormat: \"plain_text\",\n\t\t\t\t\tsummary,\n\t\t\t\t\t...(blocked ? { blockers: completionBlockers } : {}),\n\t\t\t\t},\n\t\t\t\tlaneStatus: blocked ? \"blocked\" : \"succeeded\",\n\t\t\t\treasonCode: blocked\n\t\t\t\t\t? \"worker_blocked\"\n\t\t\t\t\t: completion.stopReason === \"stop\"\n\t\t\t\t\t\t? \"worker_completed_plain_text\"\n\t\t\t\t\t\t: \"worker_completed_plain_text_incomplete\",\n\t\t\t\tcostUsd,\n\t\t\t});\n\t\t}\n\t\treturn finishOutcome({\n\t\t\trequest: options.request,\n\t\t\tcwd: options.cwd,\n\t\t\tclaim: {\n\t\t\t\t...completionBaseClaim,\n\t\t\t\tstatus: \"failed\",\n\t\t\t\tsummary: \"Worker output was not valid structured JSON.\",\n\t\t\t\t...(changedFilesOverflowed\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tblockers: [\n\t\t\t\t\t\t\t\t\"worker changed-file report exceeded the durable claim bound; parent review is required\",\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t},\n\t\t\tlaneStatus: \"failed\",\n\t\t\treasonCode: \"unparseable_output\",\n\t\t\tcostUsd,\n\t\t});\n\t}\n\n\tconst evidence = buildWorkerEvidence(options.request, parsed.findings);\n\tif (parsed.actionRejection) {\n\t\treturn finishOutcome({\n\t\t\trequest: options.request,\n\t\t\tcwd: options.cwd,\n\t\t\tclaim: {\n\t\t\t\t...completionBaseClaim,\n\t\t\t\tstatus: \"failed\",\n\t\t\t\tsummary: \"Worker output contained invalid structured actions.\",\n\t\t\t\tblockers: [parsed.actionRejection.reasonCode],\n\t\t\t},\n\t\t\tlaneStatus: \"failed\",\n\t\t\treasonCode: \"unparseable_output\",\n\t\t\tcostUsd,\n\t\t});\n\t}\n\tif (options.verificationSubjectTaskId && (!parsed.verdict || parsed.reasonCodes.length === 0)) {\n\t\treturn finishOutcome({\n\t\t\trequest: options.request,\n\t\t\tcwd: options.cwd,\n\t\t\tclaim: {\n\t\t\t\t...completionBaseClaim,\n\t\t\t\tstatus: \"failed\",\n\t\t\t\tsummary: \"Verifier output omitted its typed verdict or reasonCodes.\",\n\t\t\t},\n\t\t\tlaneStatus: \"failed\",\n\t\t\treasonCode: \"invalid_verifier_result\",\n\t\t\tcostUsd,\n\t\t});\n\t}\n\tlet changedFiles: string[] = [...completionChangedFiles];\n\tconst completionBlockersReport = collectBoundedWorkerClaimBlockers(completion.blockers ?? []);\n\tconst actionBlockers: string[] = [...completionBlockersReport.values];\n\tif (changedFilesOverflowed) {\n\t\tactionBlockers.push(\"worker changed-file report exceeded the durable claim bound; parent review is required\");\n\t}\n\tif (completionBlockersReport.overflowed) {\n\t\tactionBlockers.push(\"worker blocker report exceeded the durable claim bound; parent review is required\");\n\t}\n\tif (!writeCapable && completionChangedFiles.length > 0) {\n\t\tactionBlockers.push(\"worker reported file changes without a filesystem.write envelope grant\");\n\t}\n\tif (writeCapable && parsed.status !== \"blocked\" && parsed.actions.length > 0 && options.applyActions) {\n\t\t// Runner-side application through the envelope path scope: refusals and failures are\n\t\t// surfaced as blockers so a partially-applied change can never look like clean success.\n\t\tconst applied = options.applyActions(parsed.actions);\n\t\tconst appliedChangedFilesReport = collectBoundedWorkerClaimChangedFiles(applied.changedFiles);\n\t\tconst mergedAppliedChangedFilesReport = collectBoundedWorkerClaimChangedFiles([\n\t\t\t...changedFiles,\n\t\t\t...appliedChangedFilesReport.values,\n\t\t]);\n\t\tchangedFiles = mergedAppliedChangedFilesReport.values;\n\t\tif (appliedChangedFilesReport.overflowed || mergedAppliedChangedFilesReport.overflowed) {\n\t\t\tactionBlockers.push(\"applied changed-file report exceeded the durable claim bound; parent review is required\");\n\t\t}\n\t\tfor (const refusal of applied.refused) {\n\t\t\tactionBlockers.push(`action refused (${refusal.path}): ${refusal.reason}`);\n\t\t}\n\t\tfor (const failure of applied.failed) {\n\t\t\tactionBlockers.push(`action failed (${failure.path}): ${failure.reason}`);\n\t\t}\n\t\tfor (const inspection of applied.inspectionRequired) {\n\t\t\tactionBlockers.push(\n\t\t\t\t`action requires workspace/evidence inspection (${inspection.path}, ${inspection.state}): ${inspection.reasonCode}`,\n\t\t\t);\n\t\t}\n\t} else if (!writeCapable && parsed.actions.length > 0) {\n\t\tactionBlockers.push(\"worker emitted file actions without a filesystem.write envelope grant; nothing was applied\");\n\t}\n\tconst allBlockersReport = collectBoundedWorkerClaimBlockers([...parsed.blockers, ...actionBlockers]);\n\tconst allBlockers = allBlockersReport.overflowed\n\t\t? [\n\t\t\t\t...allBlockersReport.values.slice(0, Math.max(0, MAX_WORKER_CLAIM_BLOCKERS - 1)),\n\t\t\t\t\"worker blocker report exceeded the durable claim bound; parent review is required\",\n\t\t\t]\n\t\t: allBlockersReport.values;\n\tconst claim: WorkerClaim = {\n\t\t...baseClaim,\n\t\tchangedFiles,\n\t\tstatus: parsed.status === \"blocked\" || allBlockers.length > 0 ? \"blocked\" : \"completed\",\n\t\tsummary: parsed.summary,\n\t\t...(allBlockers.length > 0 ? { blockers: allBlockers } : {}),\n\t\t...(evidence ? { evidence } : {}),\n\t\t...(options.verificationSubjectTaskId && parsed.verdict\n\t\t\t? {\n\t\t\t\t\tverification: {\n\t\t\t\t\t\tsubjectTaskId: options.verificationSubjectTaskId,\n\t\t\t\t\t\tverdict: parsed.verdict,\n\t\t\t\t\t\treasonCodes: parsed.reasonCodes,\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t};\n\n\tif (claim.status === \"blocked\") {\n\t\treturn finishOutcome({\n\t\t\trequest: options.request,\n\t\t\tcwd: options.cwd,\n\t\t\tclaim,\n\t\t\tlaneStatus: \"blocked\",\n\t\t\treasonCode: \"worker_blocked\",\n\t\t\tcostUsd,\n\t\t});\n\t}\n\n\tconst overBudget = options.maxUsd !== undefined && costUsd > options.maxUsd;\n\tconst finalClaim: WorkerClaim = overBudget\n\t\t? {\n\t\t\t\t...claim,\n\t\t\t\tstatus: \"partial\",\n\t\t\t\tblockers: [...(claim.blockers ?? []), \"cost_budget_exceeded\"],\n\t\t\t}\n\t\t: claim;\n\treturn finishOutcome({\n\t\trequest: options.request,\n\t\tcwd: options.cwd,\n\t\tclaim: finalClaim,\n\t\tlaneStatus: overBudget ? \"budget_exhausted\" : \"succeeded\",\n\t\treasonCode: overBudget\n\t\t\t? \"cost_budget_exceeded\"\n\t\t\t: claim.verification\n\t\t\t\t? claim.verification.verdict === \"accepted\"\n\t\t\t\t\t? \"verification_accepted\"\n\t\t\t\t\t: \"verification_rejected\"\n\t\t\t\t: \"worker_completed\",\n\t\tcostUsd,\n\t});\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ArtifactContract, WorkerResultContract } from "../orchestration/contracts.ts";
|
|
2
|
+
export declare const WORKER_TERMINAL_OUTPUT_INLINE_BYTES: number;
|
|
3
|
+
export interface CaptureWorkerTerminalOutputArtifactInput {
|
|
4
|
+
agentDir: string;
|
|
5
|
+
parentSessionId: string;
|
|
6
|
+
attemptId: string;
|
|
7
|
+
text: string;
|
|
8
|
+
createdAt: string;
|
|
9
|
+
}
|
|
10
|
+
/** Resolve only the host-produced lossless terminal report from a durable worker result. */
|
|
11
|
+
export declare function workerTerminalOutputArtifact(result: Pick<WorkerResultContract, "artifacts"> | undefined): ArtifactContract | undefined;
|
|
12
|
+
/** Persist terminal output that cannot fit in the durable inline summary and return its verified pointer. */
|
|
13
|
+
export declare function captureWorkerTerminalOutputArtifact(input: CaptureWorkerTerminalOutputArtifactInput): ArtifactContract | undefined;
|
|
14
|
+
//# sourceMappingURL=worker-terminal-output-artifact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-terminal-output-artifact.d.ts","sourceRoot":"","sources":["../../../src/core/delegation/worker-terminal-output-artifact.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAI5F,eAAO,MAAM,mCAAmC,QAAoB,CAAC;AAErE,MAAM,WAAW,wCAAwC;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,4FAA4F;AAC5F,wBAAgB,4BAA4B,CAC3C,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,GAAG,SAAS,GACzD,gBAAgB,GAAG,SAAS,CAO9B;AAED,6GAA6G;AAC7G,wBAAgB,mCAAmC,CAClD,KAAK,EAAE,wCAAwC,GAC7C,gBAAgB,GAAG,SAAS,CAoC9B"}
|