@caupulican/pi-adaptative 0.86.3 → 0.86.6
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 +44 -0
- package/dist/core/agent-paths.d.ts +13 -0
- package/dist/core/agent-paths.d.ts.map +1 -1
- package/dist/core/agent-paths.js +23 -0
- package/dist/core/agent-paths.js.map +1 -1
- package/dist/core/autonomy/bounded-completion.d.ts +7 -0
- package/dist/core/autonomy/bounded-completion.d.ts.map +1 -1
- package/dist/core/autonomy/bounded-completion.js +12 -4
- package/dist/core/autonomy/bounded-completion.js.map +1 -1
- package/dist/core/autonomy/lane-tool-surface.d.ts +2 -0
- package/dist/core/autonomy/lane-tool-surface.d.ts.map +1 -1
- package/dist/core/autonomy/lane-tool-surface.js +6 -3
- package/dist/core/autonomy/lane-tool-surface.js.map +1 -1
- package/dist/core/autonomy/subagent-prompt.js +1 -1
- package/dist/core/autonomy/subagent-prompt.js.map +1 -1
- package/dist/core/background-lane-controller.d.ts +25 -2
- package/dist/core/background-lane-controller.d.ts.map +1 -1
- package/dist/core/background-lane-controller.js +67 -0
- package/dist/core/background-lane-controller.js.map +1 -1
- package/dist/core/delegation/replay-safe-mailbox-bounds.d.ts +4 -0
- package/dist/core/delegation/replay-safe-mailbox-bounds.d.ts.map +1 -0
- package/dist/core/delegation/replay-safe-mailbox-bounds.js +20 -0
- package/dist/core/delegation/replay-safe-mailbox-bounds.js.map +1 -0
- package/dist/core/delegation/sanitized-context-fork.d.ts +25 -0
- package/dist/core/delegation/sanitized-context-fork.d.ts.map +1 -0
- package/dist/core/delegation/sanitized-context-fork.js +299 -0
- package/dist/core/delegation/sanitized-context-fork.js.map +1 -0
- package/dist/core/delegation/session-root-mailbox.d.ts +75 -0
- package/dist/core/delegation/session-root-mailbox.d.ts.map +1 -0
- package/dist/core/delegation/session-root-mailbox.js +627 -0
- package/dist/core/delegation/session-root-mailbox.js.map +1 -0
- package/dist/core/delegation/worker-agent-control-coordinator.d.ts +102 -9
- package/dist/core/delegation/worker-agent-control-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-agent-control-coordinator.js +1307 -125
- package/dist/core/delegation/worker-agent-control-coordinator.js.map +1 -1
- package/dist/core/delegation/worker-agent-control.d.ts +183 -8
- package/dist/core/delegation/worker-agent-control.d.ts.map +1 -1
- package/dist/core/delegation/worker-agent-control.js +778 -48
- package/dist/core/delegation/worker-agent-control.js.map +1 -1
- package/dist/core/delegation/worker-attempt-executor.d.ts +9 -0
- package/dist/core/delegation/worker-attempt-executor.d.ts.map +1 -1
- package/dist/core/delegation/worker-attempt-executor.js +479 -214
- package/dist/core/delegation/worker-attempt-executor.js.map +1 -1
- package/dist/core/delegation/worker-authority-resolver.d.ts +9 -0
- package/dist/core/delegation/worker-authority-resolver.d.ts.map +1 -1
- package/dist/core/delegation/worker-authority-resolver.js +21 -2
- package/dist/core/delegation/worker-authority-resolver.js.map +1 -1
- package/dist/core/delegation/worker-context-fork-store.d.ts +71 -0
- package/dist/core/delegation/worker-context-fork-store.d.ts.map +1 -0
- package/dist/core/delegation/worker-context-fork-store.js +437 -0
- package/dist/core/delegation/worker-context-fork-store.js.map +1 -0
- package/dist/core/delegation/worker-context-inheritance-policy.d.ts +18 -0
- package/dist/core/delegation/worker-context-inheritance-policy.d.ts.map +1 -0
- package/dist/core/delegation/worker-context-inheritance-policy.js +28 -0
- package/dist/core/delegation/worker-context-inheritance-policy.js.map +1 -0
- package/dist/core/delegation/worker-conversation-revision.d.ts +31 -0
- package/dist/core/delegation/worker-conversation-revision.d.ts.map +1 -0
- package/dist/core/delegation/worker-conversation-revision.js +203 -0
- package/dist/core/delegation/worker-conversation-revision.js.map +1 -0
- package/dist/core/delegation/worker-conversation-store.d.ts +130 -18
- package/dist/core/delegation/worker-conversation-store.d.ts.map +1 -1
- package/dist/core/delegation/worker-conversation-store.js +1263 -79
- package/dist/core/delegation/worker-conversation-store.js.map +1 -1
- package/dist/core/delegation/worker-delegation-controller.d.ts +30 -2
- package/dist/core/delegation/worker-delegation-controller.d.ts.map +1 -1
- package/dist/core/delegation/worker-delegation-controller.js +675 -111
- package/dist/core/delegation/worker-delegation-controller.js.map +1 -1
- package/dist/core/delegation/worker-delegation-request.d.ts +2 -0
- package/dist/core/delegation/worker-delegation-request.d.ts.map +1 -1
- package/dist/core/delegation/worker-delegation-request.js.map +1 -1
- package/dist/core/delegation/worker-dispatch-scheduler.d.ts +20 -1
- package/dist/core/delegation/worker-dispatch-scheduler.d.ts.map +1 -1
- package/dist/core/delegation/worker-dispatch-scheduler.js +210 -37
- package/dist/core/delegation/worker-dispatch-scheduler.js.map +1 -1
- package/dist/core/delegation/worker-execution-policy.d.ts.map +1 -1
- package/dist/core/delegation/worker-execution-policy.js +14 -2
- package/dist/core/delegation/worker-execution-policy.js.map +1 -1
- package/dist/core/delegation/worker-fleet-limits.d.ts +38 -0
- package/dist/core/delegation/worker-fleet-limits.d.ts.map +1 -0
- package/dist/core/delegation/worker-fleet-limits.js +113 -0
- package/dist/core/delegation/worker-fleet-limits.js.map +1 -0
- package/dist/core/delegation/worker-lane-projection.d.ts +1 -0
- package/dist/core/delegation/worker-lane-projection.d.ts.map +1 -1
- package/dist/core/delegation/worker-lane-projection.js +6 -2
- package/dist/core/delegation/worker-lane-projection.js.map +1 -1
- package/dist/core/delegation/worker-lifecycle.d.ts +20 -3
- package/dist/core/delegation/worker-lifecycle.d.ts.map +1 -1
- package/dist/core/delegation/worker-lifecycle.js +42 -18
- package/dist/core/delegation/worker-lifecycle.js.map +1 -1
- package/dist/core/delegation/worker-notification-coordinator.d.ts +4 -0
- package/dist/core/delegation/worker-notification-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-notification-coordinator.js +45 -4
- package/dist/core/delegation/worker-notification-coordinator.js.map +1 -1
- package/dist/core/delegation/worker-provider-turn-protocol.d.ts +50 -0
- package/dist/core/delegation/worker-provider-turn-protocol.d.ts.map +1 -0
- package/dist/core/delegation/worker-provider-turn-protocol.js +185 -0
- package/dist/core/delegation/worker-provider-turn-protocol.js.map +1 -0
- package/dist/core/delegation/worker-recovery-coordinator.d.ts +45 -4
- package/dist/core/delegation/worker-recovery-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-recovery-coordinator.js +223 -17
- package/dist/core/delegation/worker-recovery-coordinator.js.map +1 -1
- package/dist/core/delegation/worker-retry-policy.d.ts +36 -0
- package/dist/core/delegation/worker-retry-policy.d.ts.map +1 -0
- package/dist/core/delegation/worker-retry-policy.js +41 -0
- package/dist/core/delegation/worker-retry-policy.js.map +1 -0
- package/dist/core/delegation/worker-runner.d.ts +3 -1
- package/dist/core/delegation/worker-runner.d.ts.map +1 -1
- package/dist/core/delegation/worker-runner.js +4 -2
- package/dist/core/delegation/worker-runner.js.map +1 -1
- package/dist/core/delegation/worker-task-view.d.ts +43 -0
- package/dist/core/delegation/worker-task-view.d.ts.map +1 -0
- package/dist/core/delegation/worker-task-view.js +194 -0
- package/dist/core/delegation/worker-task-view.js.map +1 -0
- package/dist/core/delegation/worker-terminal-handoff-coordinator.d.ts +55 -0
- package/dist/core/delegation/worker-terminal-handoff-coordinator.d.ts.map +1 -0
- package/dist/core/delegation/worker-terminal-handoff-coordinator.js +179 -0
- package/dist/core/delegation/worker-terminal-handoff-coordinator.js.map +1 -0
- package/dist/core/delegation/worker-tree-budget-coordinator.d.ts +2 -2
- package/dist/core/delegation/worker-tree-budget-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-tree-budget-coordinator.js +12 -46
- package/dist/core/delegation/worker-tree-budget-coordinator.js.map +1 -1
- package/dist/core/goals/goal-continuation-controller.d.ts.map +1 -1
- package/dist/core/goals/goal-continuation-controller.js +15 -0
- package/dist/core/goals/goal-continuation-controller.js.map +1 -1
- package/dist/core/goals/goal-state.d.ts +6 -0
- package/dist/core/goals/goal-state.d.ts.map +1 -1
- package/dist/core/goals/goal-state.js +1 -0
- package/dist/core/goals/goal-state.js.map +1 -1
- package/dist/core/goals/goal-tool-core.d.ts +1 -0
- package/dist/core/goals/goal-tool-core.d.ts.map +1 -1
- package/dist/core/goals/goal-tool-core.js +25 -3
- package/dist/core/goals/goal-tool-core.js.map +1 -1
- package/dist/core/keybindings.d.ts +10 -0
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +2 -0
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/orchestration/attempt-ordering.d.ts +9 -0
- package/dist/core/orchestration/attempt-ordering.d.ts.map +1 -0
- package/dist/core/orchestration/attempt-ordering.js +29 -0
- package/dist/core/orchestration/attempt-ordering.js.map +1 -0
- package/dist/core/orchestration/capability-gateway.d.ts +19 -0
- package/dist/core/orchestration/capability-gateway.d.ts.map +1 -1
- package/dist/core/orchestration/capability-gateway.js +19 -2
- package/dist/core/orchestration/capability-gateway.js.map +1 -1
- package/dist/core/orchestration/contracts.d.ts +43 -3
- package/dist/core/orchestration/contracts.d.ts.map +1 -1
- package/dist/core/orchestration/contracts.js +24 -0
- package/dist/core/orchestration/contracts.js.map +1 -1
- package/dist/core/orchestration/delegation-ledger.d.ts +8 -3
- package/dist/core/orchestration/delegation-ledger.d.ts.map +1 -1
- package/dist/core/orchestration/delegation-ledger.js +148 -55
- package/dist/core/orchestration/delegation-ledger.js.map +1 -1
- package/dist/core/orchestration/event-store.d.ts +6 -3
- package/dist/core/orchestration/event-store.d.ts.map +1 -1
- package/dist/core/orchestration/event-store.js +228 -30
- package/dist/core/orchestration/event-store.js.map +1 -1
- package/dist/core/orchestration/task-runtime-codecs.d.ts +31 -0
- package/dist/core/orchestration/task-runtime-codecs.d.ts.map +1 -0
- package/dist/core/orchestration/task-runtime-codecs.js +1471 -0
- package/dist/core/orchestration/task-runtime-codecs.js.map +1 -0
- package/dist/core/orchestration/task-runtime-projection.d.ts +30 -0
- package/dist/core/orchestration/task-runtime-projection.d.ts.map +1 -0
- package/dist/core/orchestration/task-runtime-projection.js +340 -0
- package/dist/core/orchestration/task-runtime-projection.js.map +1 -0
- package/dist/core/orchestration/task-runtime-reducer.d.ts +38 -0
- package/dist/core/orchestration/task-runtime-reducer.d.ts.map +1 -0
- package/dist/core/orchestration/task-runtime-reducer.js +1270 -0
- package/dist/core/orchestration/task-runtime-reducer.js.map +1 -0
- package/dist/core/orchestration/task-runtime-state.d.ts +142 -0
- package/dist/core/orchestration/task-runtime-state.d.ts.map +1 -0
- package/dist/core/orchestration/task-runtime-state.js +14 -0
- package/dist/core/orchestration/task-runtime-state.js.map +1 -0
- package/dist/core/orchestration/task-runtime.d.ts +44 -98
- package/dist/core/orchestration/task-runtime.d.ts.map +1 -1
- package/dist/core/orchestration/task-runtime.js +357 -1113
- package/dist/core/orchestration/task-runtime.js.map +1 -1
- package/dist/core/orchestration/worker-context-fork-reference.d.ts +20 -0
- package/dist/core/orchestration/worker-context-fork-reference.d.ts.map +1 -0
- package/dist/core/orchestration/worker-context-fork-reference.js +53 -0
- package/dist/core/orchestration/worker-context-fork-reference.js.map +1 -0
- package/dist/core/orchestration/worker-execution-contract.d.ts.map +1 -1
- package/dist/core/orchestration/worker-execution-contract.js +4 -2
- package/dist/core/orchestration/worker-execution-contract.js.map +1 -1
- package/dist/core/research/research-runner.d.ts +2 -0
- package/dist/core/research/research-runner.d.ts.map +1 -1
- package/dist/core/research/research-runner.js +1 -0
- package/dist/core/research/research-runner.js.map +1 -1
- package/dist/core/runtime-builder.d.ts.map +1 -1
- package/dist/core/runtime-builder.js +8 -0
- package/dist/core/runtime-builder.js.map +1 -1
- package/dist/core/secrets/credential-project.d.ts.map +1 -1
- package/dist/core/secrets/credential-project.js +24 -2
- package/dist/core/secrets/credential-project.js.map +1 -1
- package/dist/core/security/secret-text.d.ts +3 -0
- package/dist/core/security/secret-text.d.ts.map +1 -1
- package/dist/core/security/secret-text.js +15 -0
- package/dist/core/security/secret-text.js.map +1 -1
- package/dist/core/settings-manager.d.ts +3 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +160 -8
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/tools/delegate.d.ts +33 -15
- package/dist/core/tools/delegate.d.ts.map +1 -1
- package/dist/core/tools/delegate.js +763 -115
- package/dist/core/tools/delegate.js.map +1 -1
- package/dist/core/tools/goal.d.ts +1 -0
- package/dist/core/tools/goal.d.ts.map +1 -1
- package/dist/core/tools/goal.js +9 -1
- package/dist/core/tools/goal.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +1 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/activity-lane.d.ts +5 -0
- package/dist/modes/interactive/components/activity-lane.d.ts.map +1 -1
- package/dist/modes/interactive/components/activity-lane.js +133 -49
- package/dist/modes/interactive/components/activity-lane.js.map +1 -1
- package/dist/modes/interactive/components/agents-overlay.d.ts +40 -0
- package/dist/modes/interactive/components/agents-overlay.d.ts.map +1 -0
- package/dist/modes/interactive/components/agents-overlay.js +153 -0
- package/dist/modes/interactive/components/agents-overlay.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +18 -13
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-event-controller.d.ts +1 -1
- package/dist/modes/interactive/interactive-event-controller.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-event-controller.js +6 -3
- package/dist/modes/interactive/interactive-event-controller.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +5 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +51 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/key-handlers.d.ts +1 -0
- package/dist/modes/interactive/key-handlers.d.ts.map +1 -1
- package/dist/modes/interactive/key-handlers.js +1 -0
- package/dist/modes/interactive/key-handlers.js.map +1 -1
- package/docs/harness-architecture.md +61 -17
- package/docs/settings.md +17 -9
- package/docs/worker-profiles.md +6 -2
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +12 -12
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-runtime.js","sourceRoot":"","sources":["../../../src/core/orchestration/task-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { isDeepStrictEqual } from \"node:util\";\nimport type { JsonObject } from \"../autonomy/contracts.ts\";\nimport { createAgentIdentity } from \"./agent-resume.ts\";\nimport { validateAttemptUsageSnapshot } from \"./attempt-usage.ts\";\nimport {\n\ttype AcceptanceCriterion,\n\ttype AgentBindingContract,\n\ttype AgentIdentityContract,\n\ttype AgentResumeContext,\n\ttype AppendOrchestrationEventInput,\n\ttype ApprovalOutcome,\n\ttype ApprovalRequestContract,\n\ttype ApprovalResolutionContract,\n\ttype AttemptCheckpoint,\n\ttype AttemptLease,\n\ttype AttemptStatus,\n\ttype EvidenceContract,\n\ttype ExecutionGrant,\n\tisHarnessCapability,\n\tMAX_ORCHESTRATION_COLLECTION_LENGTH,\n\tMAX_ORCHESTRATION_DISPATCH_INSTRUCTIONS_LENGTH,\n\tMAX_ORCHESTRATION_IDENTIFIER_LENGTH,\n\tMAX_ORCHESTRATION_MODEL_PROVIDER_LENGTH,\n\ttype ObjectiveContract,\n\ttype ObjectiveStatus,\n\tORCHESTRATION_SCHEMA_VERSION,\n\ttype OrchestrationDispatchRequest,\n\ttype OrchestrationEvent,\n\ttype OrchestrationTaskStatus,\n\ttype RiskBudget,\n\ttype TaskContract,\n\ttoJsonObject,\n\ttype WorkerExecutionContract,\n\ttype WorkerResultContract,\n} from \"./contracts.ts\";\nimport { type OrchestrationEventStore, OrchestrationSnapshotRequiredError } from \"./event-store.ts\";\nimport { validateRiskBudget } from \"./risk-budget.ts\";\nimport { parseWorkerExecutionContract } from \"./worker-execution-contract.ts\";\n\nconst MAX_DATE_EPOCH_MS = 8_640_000_000_000_000;\n\nexport interface ObjectiveRuntimeState {\n\tobjective: ObjectiveContract;\n\ttaskIds: readonly string[];\n\tevidence: readonly EvidenceContract[];\n}\n\nexport interface TaskRuntimeState {\n\ttask: TaskContract;\n\tattemptIds: readonly string[];\n\tverification?: {\n\t\tverifierTaskId: string;\n\t\tverifierAttemptId: string;\n\t\tverdict: \"accepted\" | \"rejected\" | \"inconclusive\";\n\t\treasonCode: string;\n\t\tcompletedAt: string;\n\t};\n}\n\nexport interface AttemptRuntimeState {\n\tattemptId: string;\n\ttaskId: string;\n\tdispatch: OrchestrationDispatchRequest;\n\tstatus: AttemptStatus;\n\treasonCode?: string;\n\tgrantId?: string;\n\t/** Full compiled authority for new attempts; grantId alone is retained only when replaying legacy events. */\n\tgrant?: ExecutionGrant;\n\tagentId?: string;\n\tlease?: AttemptLease;\n\tcheckpointIds: readonly string[];\n\tresult?: WorkerResultContract;\n\tcreatedAt: string;\n\tupdatedAt: string;\n}\n\nexport interface NotificationRuntimeState {\n\tnotificationId: string;\n\tobjectiveId: string;\n\tattemptId?: string;\n\tstatus: \"pending\" | \"delivered\";\n\tmessage: string;\n\tcreatedAt: string;\n\tdeliveredAt?: string;\n}\n\nexport interface ApprovalRuntimeState {\n\trequest: ApprovalRequestContract;\n\tstatus: \"pending\" | ApprovalOutcome;\n\tresolution?: ApprovalResolutionContract;\n}\n\nexport interface TaskRuntimeProjection {\n\tlastOrdinal: number;\n\tagents: Readonly<Record<string, AgentBindingContract>>;\n\tobjectives: Readonly<Record<string, ObjectiveRuntimeState>>;\n\ttasks: Readonly<Record<string, TaskRuntimeState>>;\n\tattempts: Readonly<Record<string, AttemptRuntimeState>>;\n\tcheckpoints: Readonly<Record<string, AttemptCheckpoint>>;\n\tapprovals: Readonly<Record<string, ApprovalRuntimeState>>;\n\tnotifications: Readonly<Record<string, NotificationRuntimeState>>;\n}\n\nexport interface CreateObjectiveInput {\n\tobjectiveId?: string;\n\ttitle: string;\n\tdescription: string;\n\tconstraints?: readonly string[];\n\tacceptanceCriteria?: readonly AcceptanceCriterion[];\n\triskBudget?: RiskBudget;\n}\n\nexport interface CreateTaskInput {\n\ttaskId?: string;\n\tobjectiveId: string;\n\ttitle: string;\n\tdescription: string;\n\trole: TaskContract[\"role\"];\n\tdependsOn?: readonly string[];\n\trequiredCapabilities?: TaskContract[\"requiredCapabilities\"];\n\tacceptanceCriterionIds?: readonly string[];\n\tverificationOfTaskId?: string;\n\triskBudget?: RiskBudget;\n}\n\nexport interface DurableTaskRuntimeOptions {\n\tstore: OrchestrationEventStore;\n\tnow?: () => number;\n\tcreateId?: () => string;\n}\n\nexport interface RegisterAgentInput {\n\tagentId?: string;\n\tparentAgentId?: string;\n\trole: AgentBindingContract[\"role\"];\n\tresumeContext: AgentResumeContext;\n}\n\nexport class DurableTaskRuntimeError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"DurableTaskRuntimeError\";\n\t}\n}\n\nfunction emptyProjection(): TaskRuntimeProjection {\n\treturn {\n\t\tlastOrdinal: 0,\n\t\tagents: {},\n\t\tobjectives: {},\n\t\ttasks: {},\n\t\tattempts: {},\n\t\tcheckpoints: {},\n\t\tapprovals: {},\n\t\tnotifications: {},\n\t};\n}\n\nfunction cloneProjection(state: TaskRuntimeProjection): TaskRuntimeProjection {\n\treturn structuredClone(state);\n}\n\nfunction projectionFromSnapshot(projection: JsonObject, throughOrdinal: number): TaskRuntimeProjection {\n\tconst candidate = record(projection, \"orchestration projection snapshot\");\n\tif (candidate.lastOrdinal !== throughOrdinal) {\n\t\tthrow new DurableTaskRuntimeError(\"Orchestration projection snapshot ordinal does not match its baseline.\");\n\t}\n\tfor (const field of [\n\t\t\"agents\",\n\t\t\"objectives\",\n\t\t\"tasks\",\n\t\t\"attempts\",\n\t\t\"checkpoints\",\n\t\t\"approvals\",\n\t\t\"notifications\",\n\t] as const) {\n\t\trecord(candidate[field], `orchestration projection snapshot.${field}`);\n\t}\n\tconst normalized = structuredClone(candidate) as unknown as TaskRuntimeProjection;\n\tconst agents = normalized.agents as Record<string, AgentBindingContract>;\n\tfor (const [agentId, agent] of Object.entries(agents)) {\n\t\tagents[agentId] = normalizeAgentBinding(agent, `orchestration projection snapshot.agents.${agentId}`);\n\t}\n\treturn normalized;\n}\n\nfunction record(value: unknown, label: string): Record<string, unknown> {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) {\n\t\tthrow new DurableTaskRuntimeError(`${label} is not an object.`);\n\t}\n\treturn value as Record<string, unknown>;\n}\n\nfunction string(value: unknown, label: string): string {\n\tif (typeof value !== \"string\" || value.length === 0) throw new DurableTaskRuntimeError(`${label} is required.`);\n\treturn value;\n}\n\nfunction number(value: unknown, label: string): number {\n\tif (typeof value !== \"number\" || !Number.isFinite(value)) throw new DurableTaskRuntimeError(`${label} is invalid.`);\n\treturn value;\n}\n\nfunction boolean(value: unknown, label: string): boolean {\n\tif (typeof value !== \"boolean\") throw new DurableTaskRuntimeError(`${label} is invalid.`);\n\treturn value;\n}\n\nfunction assertRiskBudget(budget: RiskBudget | undefined, label: string): void {\n\ttry {\n\t\tvalidateRiskBudget(budget ?? {}, label);\n\t} catch (error) {\n\t\tthrow new DurableTaskRuntimeError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nfunction stringArray(value: unknown, label: string): string[] {\n\tif (!Array.isArray(value) || !value.every((entry) => typeof entry === \"string\")) {\n\t\tthrow new DurableTaskRuntimeError(`${label} must be a string array.`);\n\t}\n\treturn [...value];\n}\n\nfunction dispatchIdentifier(value: unknown, label: string): string {\n\tconst identifier = string(value, label);\n\tif (identifier.length > MAX_ORCHESTRATION_IDENTIFIER_LENGTH) {\n\t\tthrow new DurableTaskRuntimeError(`${label} exceeds its durable size bound.`);\n\t}\n\treturn identifier;\n}\n\nfunction optionalDispatchIdentifier(\n\tvalue: unknown,\n\tlabel: string,\n\tmaxLength = MAX_ORCHESTRATION_IDENTIFIER_LENGTH,\n): string | undefined {\n\tif (value === undefined) return undefined;\n\tconst identifier = string(value, label);\n\tif (identifier.length > maxLength) throw new DurableTaskRuntimeError(`${label} exceeds its durable size bound.`);\n\treturn identifier;\n}\n\nfunction dispatchInstructions(value: unknown, label: string): string {\n\tconst instructions = string(value, label);\n\tif (instructions.length > MAX_ORCHESTRATION_DISPATCH_INSTRUCTIONS_LENGTH) {\n\t\tthrow new DurableTaskRuntimeError(`${label} exceeds its durable size bound.`);\n\t}\n\treturn instructions;\n}\n\nfunction dispatchIdentifierArray(value: unknown, label: string): string[] {\n\tif (\n\t\t!Array.isArray(value) ||\n\t\tvalue.length > MAX_ORCHESTRATION_COLLECTION_LENGTH ||\n\t\t!value.every(\n\t\t\t(entry) =>\n\t\t\t\ttypeof entry === \"string\" && entry.length > 0 && entry.length <= MAX_ORCHESTRATION_IDENTIFIER_LENGTH,\n\t\t)\n\t) {\n\t\tthrow new DurableTaskRuntimeError(`${label} must be a bounded identifier array.`);\n\t}\n\tif (new Set(value).size !== value.length) {\n\t\tthrow new DurableTaskRuntimeError(`${label} contains duplicates.`);\n\t}\n\treturn [...value];\n}\n\nconst DISPATCH_FIELDS = new Set([\n\t\"taskId\",\n\t\"profileId\",\n\t\"instructions\",\n\t\"resourcePointerIds\",\n\t\"parentAgentId\",\n\t\"requirementIds\",\n\t\"executionKind\",\n\t\"logicalLaneId\",\n\t\"dispatchSequence\",\n\t\"provider\",\n\t\"authorizationId\",\n\t\"worktreeLaneKey\",\n\t\"executionContract\",\n]);\n\nfunction dispatchFromValue(value: unknown, label: string): OrchestrationDispatchRequest {\n\tconst dispatch = record(value, label);\n\tconst unsupportedField = Object.keys(dispatch).find((field) => !DISPATCH_FIELDS.has(field));\n\tif (unsupportedField) throw new DurableTaskRuntimeError(`${label}.${unsupportedField} is unsupported.`);\n\tconst executionKind = dispatch.executionKind;\n\tif (executionKind !== undefined && executionKind !== \"in-process\" && executionKind !== \"managed-process\") {\n\t\tthrow new DurableTaskRuntimeError(`${label}.executionKind is invalid.`);\n\t}\n\tconst logicalLaneId = optionalDispatchIdentifier(dispatch.logicalLaneId, `${label}.logicalLaneId`);\n\tconst parentAgentId = optionalDispatchIdentifier(dispatch.parentAgentId, `${label}.parentAgentId`);\n\tconst provider = optionalDispatchIdentifier(\n\t\tdispatch.provider,\n\t\t`${label}.provider`,\n\t\tMAX_ORCHESTRATION_MODEL_PROVIDER_LENGTH,\n\t);\n\tconst authorizationId = optionalDispatchIdentifier(dispatch.authorizationId, `${label}.authorizationId`);\n\tconst worktreeLaneKey = optionalDispatchIdentifier(dispatch.worktreeLaneKey, `${label}.worktreeLaneKey`);\n\tif (\n\t\tdispatch.dispatchSequence !== undefined &&\n\t\t(!Number.isSafeInteger(dispatch.dispatchSequence) || Number(dispatch.dispatchSequence) < 1)\n\t) {\n\t\tthrow new DurableTaskRuntimeError(`${label}.dispatchSequence is invalid.`);\n\t}\n\tlet executionContract: WorkerExecutionContract | undefined;\n\ttry {\n\t\texecutionContract = dispatch.executionContract\n\t\t\t? parseWorkerExecutionContract(dispatch.executionContract)\n\t\t\t: undefined;\n\t} catch (error) {\n\t\tthrow new DurableTaskRuntimeError(error instanceof Error ? error.message : String(error));\n\t}\n\tif (executionContract && executionKind === \"managed-process\") {\n\t\tthrow new DurableTaskRuntimeError(`${label} cannot combine a worker execution contract with managed execution.`);\n\t}\n\treturn {\n\t\ttaskId: dispatchIdentifier(dispatch.taskId, `${label}.taskId`),\n\t\tprofileId: dispatchIdentifier(dispatch.profileId, `${label}.profileId`),\n\t\tinstructions: dispatchInstructions(dispatch.instructions, `${label}.instructions`),\n\t\tresourcePointerIds: dispatchIdentifierArray(dispatch.resourcePointerIds, `${label}.resourcePointerIds`),\n\t\t...(parentAgentId ? { parentAgentId } : {}),\n\t\trequirementIds:\n\t\t\tdispatch.requirementIds === undefined\n\t\t\t\t? []\n\t\t\t\t: dispatchIdentifierArray(dispatch.requirementIds, `${label}.requirementIds`),\n\t\t...(executionKind ? { executionKind } : {}),\n\t\t...(logicalLaneId ? { logicalLaneId } : {}),\n\t\t...(typeof dispatch.dispatchSequence === \"number\" ? { dispatchSequence: dispatch.dispatchSequence } : {}),\n\t\t...(provider ? { provider } : {}),\n\t\t...(authorizationId ? { authorizationId } : {}),\n\t\t...(worktreeLaneKey ? { worktreeLaneKey } : {}),\n\t\t...(executionContract ? { executionContract } : {}),\n\t};\n}\n\nfunction objectiveFromPayload(payload: JsonObject): ObjectiveContract {\n\treturn structuredClone(record(payload.objective, \"objective\")) as unknown as ObjectiveContract;\n}\n\nfunction evidenceFromPayload(payload: JsonObject): EvidenceContract {\n\treturn structuredClone(record(payload.evidence, \"evidence\")) as unknown as EvidenceContract;\n}\n\nfunction assertAcceptanceCriteria(criteria: readonly AcceptanceCriterion[]): void {\n\tconst criterionIds = criteria.map((criterion) => criterion.id);\n\tif (\n\t\tcriterionIds.some((id) => !id.trim()) ||\n\t\tnew Set(criterionIds).size !== criterionIds.length ||\n\t\tcriteria.some((criterion) => !criterion.description.trim())\n\t) {\n\t\tthrow new DurableTaskRuntimeError(\"Objective acceptance criteria require unique ids and descriptions.\");\n\t}\n}\n\nfunction taskFromPayload(payload: JsonObject): TaskContract {\n\treturn structuredClone(record(payload.task, \"task\")) as unknown as TaskContract;\n}\n\nfunction leaseFromPayload(payload: JsonObject): AttemptLease {\n\tconst lease = record(payload.lease, \"lease\");\n\treturn {\n\t\tleaseId: string(lease.leaseId, \"lease.leaseId\"),\n\t\tattemptId: string(lease.attemptId, \"lease.attemptId\"),\n\t\townerId: string(lease.ownerId, \"lease.ownerId\"),\n\t\tfencingToken: number(lease.fencingToken, \"lease.fencingToken\"),\n\t\tissuedAt: string(lease.issuedAt, \"lease.issuedAt\"),\n\t\texpiresAt: string(lease.expiresAt, \"lease.expiresAt\"),\n\t};\n}\n\nfunction checkpointFromPayload(payload: JsonObject): AttemptCheckpoint {\n\tconst checkpoint = record(payload.checkpoint, \"checkpoint\");\n\tconst usage = checkpoint.usage === undefined ? undefined : usageFromPayload(checkpoint.usage, \"checkpoint.usage\");\n\treturn {\n\t\tcheckpointId: string(checkpoint.checkpointId, \"checkpoint.checkpointId\"),\n\t\tattemptId: string(checkpoint.attemptId, \"checkpoint.attemptId\"),\n\t\tfencingToken: number(checkpoint.fencingToken, \"checkpoint.fencingToken\"),\n\t\tsummary: string(checkpoint.summary, \"checkpoint.summary\"),\n\t\tartifactIds: stringArray(checkpoint.artifactIds, \"checkpoint.artifactIds\"),\n\t\tevidenceIds: stringArray(checkpoint.evidenceIds, \"checkpoint.evidenceIds\"),\n\t\t...(usage ? { usage } : {}),\n\t\tcreatedAt: string(checkpoint.createdAt, \"checkpoint.createdAt\"),\n\t};\n}\n\nfunction usageFromPayload(value: unknown, label: string): AttemptCheckpoint[\"usage\"] {\n\tconst usage = record(value, label);\n\tconst expectedFields = [\n\t\t\"toolCalls\",\n\t\t\"inputTokens\",\n\t\t\"outputTokens\",\n\t\t\"cacheReadTokens\",\n\t\t\"cacheWriteTokens\",\n\t\t\"totalTokens\",\n\t\t\"costUsd\",\n\t\t\"activeWallClockMs\",\n\t];\n\tconst unexpected = Object.keys(usage).find((field) => !expectedFields.includes(field));\n\tif (unexpected) throw new DurableTaskRuntimeError(`${label}.${unexpected} is unsupported.`);\n\ttry {\n\t\treturn validateAttemptUsageSnapshot(\n\t\t\t{\n\t\t\t\ttoolCalls: number(usage.toolCalls, `${label}.toolCalls`),\n\t\t\t\tinputTokens: number(usage.inputTokens, `${label}.inputTokens`),\n\t\t\t\toutputTokens: number(usage.outputTokens, `${label}.outputTokens`),\n\t\t\t\tcacheReadTokens: number(usage.cacheReadTokens, `${label}.cacheReadTokens`),\n\t\t\t\tcacheWriteTokens: number(usage.cacheWriteTokens, `${label}.cacheWriteTokens`),\n\t\t\t\ttotalTokens: number(usage.totalTokens, `${label}.totalTokens`),\n\t\t\t\tcostUsd: number(usage.costUsd, `${label}.costUsd`),\n\t\t\t\tactiveWallClockMs: number(usage.activeWallClockMs, `${label}.activeWallClockMs`),\n\t\t\t},\n\t\t\tlabel,\n\t\t);\n\t} catch (error) {\n\t\tthrow new DurableTaskRuntimeError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nfunction resultFromPayload(payload: JsonObject): WorkerResultContract {\n\treturn structuredClone(record(payload.result, \"result\")) as unknown as WorkerResultContract;\n}\n\nfunction normalizeAgentBinding(value: unknown, label: string): AgentBindingContract {\n\tconst agent = structuredClone(record(value, label)) as unknown as AgentBindingContract;\n\tif (!agent.agentId?.trim()) throw new DurableTaskRuntimeError(`${label}.agentId is required.`);\n\tconst parentAgentId = agent.parentAgentId?.trim();\n\tconst rootAgentId = agent.rootAgentId?.trim() || agent.agentId;\n\tconst depth = agent.depth ?? 0;\n\tif (!rootAgentId || !Number.isSafeInteger(depth) || depth < 0) {\n\t\tthrow new DurableTaskRuntimeError(`${label} lineage is invalid.`);\n\t}\n\tif (parentAgentId && depth === 0) throw new DurableTaskRuntimeError(`${label} child lineage depth is invalid.`);\n\treturn {\n\t\t...agent,\n\t\t...(parentAgentId ? { parentAgentId } : {}),\n\t\trootAgentId,\n\t\tdepth,\n\t};\n}\n\nfunction agentFromPayload(payload: JsonObject): AgentBindingContract {\n\treturn normalizeAgentBinding(payload.agent, \"agent\");\n}\n\nfunction approvalFromPayload(payload: JsonObject): ApprovalRequestContract {\n\tconst approval = record(payload.approval, \"approval\");\n\tconst capabilities = stringArray(approval.requestedCapabilities, \"approval.requestedCapabilities\");\n\tif (!capabilities.every(isHarnessCapability)) {\n\t\tthrow new DurableTaskRuntimeError(\"Approval contains an unknown capability.\");\n\t}\n\tconst requestedBudget = approval.requestedBudget\n\t\t? (structuredClone(record(approval.requestedBudget, \"approval.requestedBudget\")) as RiskBudget)\n\t\t: undefined;\n\tassertRiskBudget(requestedBudget, \"approval.requestedBudget\");\n\tif (capabilities.length === 0 && !requestedBudget) {\n\t\tthrow new DurableTaskRuntimeError(\"Approval must request capabilities or budget.\");\n\t}\n\tif (approval.schemaVersion !== ORCHESTRATION_SCHEMA_VERSION) {\n\t\tthrow new DurableTaskRuntimeError(\"Approval schema version is invalid.\");\n\t}\n\treturn {\n\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\tapprovalId: string(approval.approvalId, \"approval.approvalId\"),\n\t\tobjectiveId: string(approval.objectiveId, \"approval.objectiveId\"),\n\t\t...(typeof approval.taskId === \"string\" ? { taskId: string(approval.taskId, \"approval.taskId\") } : {}),\n\t\t...(typeof approval.attemptId === \"string\"\n\t\t\t? { attemptId: string(approval.attemptId, \"approval.attemptId\") }\n\t\t\t: {}),\n\t\treasonCode: string(approval.reasonCode, \"approval.reasonCode\"),\n\t\tsummary: string(approval.summary, \"approval.summary\"),\n\t\trequestedCapabilities: capabilities,\n\t\t...(requestedBudget ? { requestedBudget } : {}),\n\t\treversible: boolean(approval.reversible, \"approval.reversible\"),\n\t\tcreatedAt: string(approval.createdAt, \"approval.createdAt\"),\n\t};\n}\n\nfunction approvalResolutionFromPayload(payload: JsonObject): ApprovalResolutionContract {\n\tconst resolution = record(payload.resolution, \"resolution\");\n\tif (resolution.schemaVersion !== ORCHESTRATION_SCHEMA_VERSION) {\n\t\tthrow new DurableTaskRuntimeError(\"Approval resolution schema version is invalid.\");\n\t}\n\tconst outcome = string(resolution.outcome, \"resolution.outcome\");\n\tif (outcome !== \"approved\" && outcome !== \"rejected\") {\n\t\tthrow new DurableTaskRuntimeError(`Unknown approval outcome '${outcome}'.`);\n\t}\n\treturn {\n\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\tapprovalId: string(resolution.approvalId, \"resolution.approvalId\"),\n\t\toutcome,\n\t\treasonCode: string(resolution.reasonCode, \"resolution.reasonCode\"),\n\t\tresolvedAt: string(resolution.resolvedAt, \"resolution.resolvedAt\"),\n\t};\n}\n\nfunction updateObjectiveStatus(\n\tstate: TaskRuntimeProjection,\n\tobjectiveId: string,\n\tstatus: ObjectiveStatus,\n\tat: string,\n): void {\n\tconst current = state.objectives[objectiveId];\n\tif (!current) throw new DurableTaskRuntimeError(`Unknown objective '${objectiveId}'.`);\n\t(state.objectives as Record<string, ObjectiveRuntimeState>)[objectiveId] = {\n\t\t...current,\n\t\tobjective: { ...current.objective, status, updatedAt: at },\n\t};\n}\n\nfunction terminalAttemptStatus(status: AttemptStatus): boolean {\n\treturn [\"completed\", \"partial\", \"blocked\", \"failed\", \"cancelled\", \"expired\"].includes(status);\n}\n\nfunction cancelOpenObjectiveWork(\n\tstate: TaskRuntimeProjection,\n\tobjectiveId: string,\n\tat: string,\n\treasonCode: string,\n): void {\n\tconst objective = state.objectives[objectiveId];\n\tconst tasks = state.tasks as Record<string, TaskRuntimeState>;\n\tconst attempts = state.attempts as Record<string, AttemptRuntimeState>;\n\tfor (const taskId of objective?.taskIds ?? []) {\n\t\tconst taskState = tasks[taskId];\n\t\tif (taskState && ![\"completed\", \"failed\", \"cancelled\"].includes(taskState.task.status)) {\n\t\t\ttasks[taskId] = {\n\t\t\t\t...taskState,\n\t\t\t\ttask: { ...taskState.task, status: \"cancelled\", updatedAt: at },\n\t\t\t};\n\t\t}\n\t\tfor (const attemptId of taskState?.attemptIds ?? []) {\n\t\t\tconst attempt = attempts[attemptId];\n\t\t\tif (attempt && !terminalAttemptStatus(attempt.status)) {\n\t\t\t\tattempts[attemptId] = { ...attempt, status: \"cancelled\", reasonCode, updatedAt: at };\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction taskStatusForResult(status: WorkerResultContract[\"status\"]): OrchestrationTaskStatus {\n\tif (status === \"completed\") return \"completed\";\n\tif (status === \"failed\") return \"failed\";\n\tif (status === \"cancelled\") return \"cancelled\";\n\treturn \"blocked\";\n}\n\nfunction releaseAttemptAgent(\n\tagents: Record<string, AgentBindingContract>,\n\tattempt: AttemptRuntimeState,\n\tat: string,\n): void {\n\tif (!attempt.agentId) return;\n\tconst agent = agents[attempt.agentId];\n\tif (!agent) return;\n\tconst next = { ...agent, status: \"registered\" as const, updatedAt: at };\n\tdelete next.activeAttemptId;\n\tagents[attempt.agentId] = next;\n}\n\nfunction missingTrustedCriteria(result: WorkerResultContract, criterionIds: readonly string[]): string[] {\n\tconst proven = new Set(\n\t\tresult.evidence.flatMap((evidence) => (evidence.trusted && evidence.criterionId ? [evidence.criterionId] : [])),\n\t);\n\treturn criterionIds.filter((criterionId) => !proven.has(criterionId));\n}\n\nfunction refreshReadyTasks(state: TaskRuntimeProjection, objectiveId: string, at: string): void {\n\tconst objective = state.objectives[objectiveId];\n\tif (!objective || objective.objective.status !== \"active\") return;\n\tconst mutableTasks = state.tasks as Record<string, TaskRuntimeState>;\n\tfor (const taskId of objective.taskIds) {\n\t\tconst current = mutableTasks[taskId];\n\t\tif (!current || current.task.status !== \"pending\") continue;\n\t\tif (current.task.dependsOn.every((dependencyId) => mutableTasks[dependencyId]?.task.status === \"completed\")) {\n\t\t\tmutableTasks[taskId] = { ...current, task: { ...current.task, status: \"ready\", updatedAt: at } };\n\t\t}\n\t}\n}\n\nexport function reduceOrchestrationEvent(\n\tprojection: TaskRuntimeProjection,\n\tevent: OrchestrationEvent,\n): TaskRuntimeProjection {\n\tif (event.ordinal <= projection.lastOrdinal) return projection;\n\tconst state = cloneProjection(projection);\n\tconst agents = state.agents as Record<string, AgentBindingContract>;\n\tconst objectives = state.objectives as Record<string, ObjectiveRuntimeState>;\n\tconst tasks = state.tasks as Record<string, TaskRuntimeState>;\n\tconst attempts = state.attempts as Record<string, AttemptRuntimeState>;\n\tconst checkpoints = state.checkpoints as Record<string, AttemptCheckpoint>;\n\tconst approvals = state.approvals as Record<string, ApprovalRuntimeState>;\n\tconst notifications = state.notifications as Record<string, NotificationRuntimeState>;\n\n\tswitch (event.type) {\n\t\tcase \"objective.created\": {\n\t\t\tconst objective = objectiveFromPayload(event.payload);\n\t\t\tif (objectives[objective.objectiveId]) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Objective '${objective.objectiveId}' was created more than once.`);\n\t\t\t}\n\t\t\tobjectives[objective.objectiveId] = { objective, taskIds: [], evidence: [] };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"objective.updated\": {\n\t\t\tconst objective = objectiveFromPayload(event.payload);\n\t\t\tconst current = objectives[event.aggregateId];\n\t\t\tif (!current) throw new DurableTaskRuntimeError(`Unknown objective '${event.aggregateId}'.`);\n\t\t\tif (objective.objectiveId !== event.aggregateId) {\n\t\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t\t`Updated objective id '${objective.objectiveId}' does not match aggregate.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tobjectives[event.aggregateId] = { ...current, objective };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"objective.evidence_recorded\": {\n\t\t\tconst evidence = evidenceFromPayload(event.payload);\n\t\t\tconst current = objectives[event.aggregateId];\n\t\t\tif (!current) throw new DurableTaskRuntimeError(`Unknown objective '${event.aggregateId}'.`);\n\t\t\tconst existing = current.evidence.find((candidate) => candidate.evidenceId === evidence.evidenceId);\n\t\t\tif (existing && !isDeepStrictEqual(existing, evidence)) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Objective evidence '${evidence.evidenceId}' has conflicting content.`);\n\t\t\t}\n\t\t\tif (!existing) objectives[event.aggregateId] = { ...current, evidence: [...current.evidence, evidence] };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"objective.paused\":\n\t\t\tupdateObjectiveStatus(state, event.aggregateId, \"paused\", event.occurredAt);\n\t\t\tbreak;\n\t\tcase \"objective.resumed\":\n\t\t\tupdateObjectiveStatus(state, event.aggregateId, \"active\", event.occurredAt);\n\t\t\trefreshReadyTasks(state, event.aggregateId, event.occurredAt);\n\t\t\tbreak;\n\t\tcase \"objective.completed\":\n\t\t\tupdateObjectiveStatus(state, event.aggregateId, \"completed\", event.occurredAt);\n\t\t\tcancelOpenObjectiveWork(state, event.aggregateId, event.occurredAt, \"objective_completed\");\n\t\t\tbreak;\n\t\tcase \"objective.cancelled\": {\n\t\t\tupdateObjectiveStatus(state, event.aggregateId, \"cancelled\", event.occurredAt);\n\t\t\tcancelOpenObjectiveWork(state, event.aggregateId, event.occurredAt, \"objective_cancelled\");\n\t\t\tbreak;\n\t\t}\n\t\tcase \"task.created\": {\n\t\t\tconst task = taskFromPayload(event.payload);\n\t\t\tconst objective = objectives[task.objectiveId];\n\t\t\tif (!objective) throw new DurableTaskRuntimeError(`Task '${task.taskId}' references an unknown objective.`);\n\t\t\tif (tasks[task.taskId]) throw new DurableTaskRuntimeError(`Task '${task.taskId}' was created more than once.`);\n\t\t\ttasks[task.taskId] = { task, attemptIds: [] };\n\t\t\tobjectives[task.objectiveId] = { ...objective, taskIds: [...objective.taskIds, task.taskId] };\n\t\t\trefreshReadyTasks(state, task.objectiveId, event.occurredAt);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"task.ready\": {\n\t\t\tconst taskId = string(event.payload.taskId, \"task.ready.taskId\");\n\t\t\tconst current = tasks[taskId];\n\t\t\tif (!current) throw new DurableTaskRuntimeError(`Unknown task '${taskId}'.`);\n\t\t\ttasks[taskId] = { ...current, task: { ...current.task, status: \"ready\", updatedAt: event.occurredAt } };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"task.failed\": {\n\t\t\tconst taskId = string(event.payload.taskId, \"task.failed.taskId\");\n\t\t\tconst current = tasks[taskId];\n\t\t\tif (!current) throw new DurableTaskRuntimeError(`Unknown task '${taskId}'.`);\n\t\t\ttasks[taskId] = { ...current, task: { ...current.task, status: \"failed\", updatedAt: event.occurredAt } };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"task.verification_finished\": {\n\t\t\tconst taskId = string(event.payload.taskId, \"task.verification_finished.taskId\");\n\t\t\tconst verifierTaskId = string(event.payload.verifierTaskId, \"task.verification_finished.verifierTaskId\");\n\t\t\tconst verifierAttemptId = string(\n\t\t\t\tevent.payload.verifierAttemptId,\n\t\t\t\t\"task.verification_finished.verifierAttemptId\",\n\t\t\t);\n\t\t\tconst verdict = string(event.payload.verdict, \"task.verification_finished.verdict\");\n\t\t\tif (verdict !== \"accepted\" && verdict !== \"rejected\" && verdict !== \"inconclusive\") {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Unknown verification verdict '${verdict}'.`);\n\t\t\t}\n\t\t\tconst current = tasks[taskId];\n\t\t\tif (!current) throw new DurableTaskRuntimeError(`Unknown task '${taskId}'.`);\n\t\t\tconst reasonCode = string(event.payload.reasonCode, \"task.verification_finished.reasonCode\");\n\t\t\ttasks[taskId] = {\n\t\t\t\t...current,\n\t\t\t\ttask: {\n\t\t\t\t\t...current.task,\n\t\t\t\t\tstatus: verdict === \"accepted\" ? \"completed\" : \"blocked\",\n\t\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t\t},\n\t\t\t\tverification: {\n\t\t\t\t\tverifierTaskId,\n\t\t\t\t\tverifierAttemptId,\n\t\t\t\t\tverdict,\n\t\t\t\t\treasonCode,\n\t\t\t\t\tcompletedAt: event.occurredAt,\n\t\t\t\t},\n\t\t\t};\n\t\t\trefreshReadyTasks(state, current.task.objectiveId, event.occurredAt);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"agent.registered\": {\n\t\t\tconst agent = agentFromPayload(event.payload);\n\t\t\tif (agents[agent.agentId])\n\t\t\t\tthrow new DurableTaskRuntimeError(`Agent '${agent.agentId}' was registered more than once.`);\n\t\t\tif (agent.parentAgentId) {\n\t\t\t\tconst parent = agents[agent.parentAgentId];\n\t\t\t\tif (!parent) throw new DurableTaskRuntimeError(`Unknown parent agent '${agent.parentAgentId}'.`);\n\t\t\t\tif (agent.rootAgentId !== parent.rootAgentId || agent.depth !== parent.depth + 1) {\n\t\t\t\t\tthrow new DurableTaskRuntimeError(`Agent '${agent.agentId}' lineage conflicts with its parent.`);\n\t\t\t\t}\n\t\t\t} else if (agent.rootAgentId !== agent.agentId || agent.depth !== 0) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Root agent '${agent.agentId}' lineage is invalid.`);\n\t\t\t}\n\t\t\tagents[agent.agentId] = agent;\n\t\t\tbreak;\n\t\t}\n\t\tcase \"agent.suspended\": {\n\t\t\tconst agentId = string(event.payload.agentId, \"agent.suspended.agentId\");\n\t\t\tconst agent = agents[agentId];\n\t\t\tif (!agent) throw new DurableTaskRuntimeError(`Unknown agent '${agentId}'.`);\n\t\t\tagents[agentId] = { ...agent, status: \"suspended\", updatedAt: event.occurredAt };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"agent.resume_requested\": {\n\t\t\tconst agentId = string(event.payload.agentId, \"agent.resume_requested.agentId\");\n\t\t\tconst agent = agents[agentId];\n\t\t\tif (!agent) throw new DurableTaskRuntimeError(`Unknown agent '${agentId}'.`);\n\t\t\tagents[agentId] = { ...agent, status: \"resuming\", updatedAt: event.occurredAt };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"agent.resumed\": {\n\t\t\tconst agentId = string(event.payload.agentId, \"agent.resumed.agentId\");\n\t\t\tconst attemptId = string(event.payload.attemptId, \"agent.resumed.attemptId\");\n\t\t\tconst agent = agents[agentId];\n\t\t\tif (!agent) throw new DurableTaskRuntimeError(`Unknown agent '${agentId}'.`);\n\t\t\tagents[agentId] = { ...agent, status: \"active\", activeAttemptId: attemptId, updatedAt: event.occurredAt };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.queued\": {\n\t\t\tconst attemptId = string(event.payload.attemptId, \"attempt.queued.attemptId\");\n\t\t\tconst taskId = string(event.payload.taskId, \"attempt.queued.taskId\");\n\t\t\tconst task = tasks[taskId];\n\t\t\tif (!task) throw new DurableTaskRuntimeError(`Attempt '${attemptId}' references an unknown task.`);\n\t\t\tif (attempts[attemptId])\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' was queued more than once.`);\n\t\t\tconst dispatch = dispatchFromValue(event.payload.dispatch, \"attempt.queued.dispatch\");\n\t\t\tif (dispatch.taskId !== taskId) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' dispatch task does not match its task.`);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tdispatch.executionContract &&\n\t\t\t\t(dispatch.executionContract.worker.profile.profileId !== dispatch.profileId ||\n\t\t\t\t\tdispatch.executionContract.worker.profile.role !== task.task.role)\n\t\t\t) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' execution contract does not match its dispatch.`);\n\t\t\t}\n\t\t\tattempts[attemptId] = {\n\t\t\t\tattemptId,\n\t\t\t\ttaskId,\n\t\t\t\tdispatch,\n\t\t\t\tstatus: \"queued\",\n\t\t\t\t...(typeof event.payload.grantId === \"string\" ? { grantId: event.payload.grantId } : {}),\n\t\t\t\tcheckpointIds: [],\n\t\t\t\tcreatedAt: event.occurredAt,\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t};\n\t\t\ttasks[taskId] = {\n\t\t\t\t...task,\n\t\t\t\ttask: { ...task.task, status: \"running\", updatedAt: event.occurredAt },\n\t\t\t\tattemptIds: [...task.attemptIds, attemptId],\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.grant_bound\": {\n\t\t\tconst attemptId = string(event.payload.attemptId, \"attempt.grant_bound.attemptId\");\n\t\t\tconst attempt = attempts[attemptId];\n\t\t\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${attemptId}'.`);\n\t\t\tconst grant = event.payload.grant\n\t\t\t\t? (structuredClone(record(event.payload.grant, \"attempt.grant_bound.grant\")) as unknown as ExecutionGrant)\n\t\t\t\t: undefined;\n\t\t\tattempts[attemptId] = {\n\t\t\t\t...attempt,\n\t\t\t\tgrantId: grant?.grantId ?? string(event.payload.grantId, \"attempt.grant_bound.grantId\"),\n\t\t\t\t...(grant ? { grant } : {}),\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.leased\": {\n\t\t\tconst lease = leaseFromPayload(event.payload);\n\t\t\tconst attempt = attempts[lease.attemptId];\n\t\t\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${lease.attemptId}'.`);\n\t\t\tconst agentId = typeof event.payload.agentId === \"string\" ? event.payload.agentId : undefined;\n\t\t\tif (agentId) {\n\t\t\t\tconst agent = agents[agentId];\n\t\t\t\tif (!agent) throw new DurableTaskRuntimeError(`Unknown agent '${agentId}'.`);\n\t\t\t\tagents[agentId] = {\n\t\t\t\t\t...agent,\n\t\t\t\t\tstatus: \"active\",\n\t\t\t\t\tactiveAttemptId: lease.attemptId,\n\t\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t\t};\n\t\t\t}\n\t\t\tattempts[lease.attemptId] = {\n\t\t\t\t...attempt,\n\t\t\t\tstatus: \"leased\",\n\t\t\t\tlease,\n\t\t\t\t...(agentId ? { agentId } : {}),\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.started\": {\n\t\t\tconst attemptId = string(event.payload.attemptId, \"attempt.started.attemptId\");\n\t\t\tconst attempt = attempts[attemptId];\n\t\t\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${attemptId}'.`);\n\t\t\tattempts[attemptId] = { ...attempt, status: \"running\", updatedAt: event.occurredAt };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.checkpointed\": {\n\t\t\tconst checkpoint = checkpointFromPayload(event.payload);\n\t\t\tconst attempt = attempts[checkpoint.attemptId];\n\t\t\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${checkpoint.attemptId}'.`);\n\t\t\tcheckpoints[checkpoint.checkpointId] = checkpoint;\n\t\t\tattempts[checkpoint.attemptId] = {\n\t\t\t\t...attempt,\n\t\t\t\tcheckpointIds: [...attempt.checkpointIds, checkpoint.checkpointId],\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tif (attempt.agentId) {\n\t\t\t\tconst agent = agents[attempt.agentId];\n\t\t\t\tif (agent) {\n\t\t\t\t\tagents[attempt.agentId] = {\n\t\t\t\t\t\t...agent,\n\t\t\t\t\t\tresumeContext: { ...agent.resumeContext, latestCheckpointId: checkpoint.checkpointId },\n\t\t\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.suspended\": {\n\t\t\tconst attemptId = string(event.payload.attemptId, \"attempt.suspended.attemptId\");\n\t\t\tconst attempt = attempts[attemptId];\n\t\t\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${attemptId}'.`);\n\t\t\tconst leaseId = string(event.payload.leaseId, \"attempt.suspended.leaseId\");\n\t\t\tconst fencingToken = number(event.payload.fencingToken, \"attempt.suspended.fencingToken\");\n\t\t\tif (!attempt.lease || attempt.lease.leaseId !== leaseId || attempt.lease.fencingToken !== fencingToken) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' lease or fencing token is stale.`);\n\t\t\t}\n\t\t\tif (attempt.status !== \"leased\" && attempt.status !== \"running\") {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' cannot suspend from '${attempt.status}'.`);\n\t\t\t}\n\t\t\tattempts[attemptId] = {\n\t\t\t\t...attempt,\n\t\t\t\tstatus: \"suspended\",\n\t\t\t\t...(typeof event.payload.reasonCode === \"string\" ? { reasonCode: event.payload.reasonCode } : {}),\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tif (attempt.agentId) {\n\t\t\t\tconst agent = agents[attempt.agentId];\n\t\t\t\tif (agent) agents[attempt.agentId] = { ...agent, status: \"suspended\", updatedAt: event.occurredAt };\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.resumed\": {\n\t\t\tconst lease = leaseFromPayload(event.payload);\n\t\t\tconst agentId = string(event.payload.agentId, \"attempt.resumed.agentId\");\n\t\t\tconst attempt = attempts[lease.attemptId];\n\t\t\tconst agent = agents[agentId];\n\t\t\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${lease.attemptId}'.`);\n\t\t\tif (!agent) throw new DurableTaskRuntimeError(`Unknown agent '${agentId}'.`);\n\t\t\tattempts[lease.attemptId] = {\n\t\t\t\t...attempt,\n\t\t\t\tstatus: \"leased\",\n\t\t\t\tagentId,\n\t\t\t\tlease,\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tagents[agentId] = {\n\t\t\t\t...agent,\n\t\t\t\tstatus: \"active\",\n\t\t\t\tactiveAttemptId: lease.attemptId,\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.cancelled\": {\n\t\t\tconst attemptId = string(event.payload.attemptId, \"attempt.cancelled.attemptId\");\n\t\t\tconst attempt = attempts[attemptId];\n\t\t\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${attemptId}'.`);\n\t\t\tattempts[attemptId] = {\n\t\t\t\t...attempt,\n\t\t\t\tstatus: \"cancelled\",\n\t\t\t\treasonCode: string(event.payload.reasonCode, \"attempt.cancelled.reasonCode\"),\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tconst task = tasks[attempt.taskId];\n\t\t\tif (task) {\n\t\t\t\ttasks[attempt.taskId] = {\n\t\t\t\t\t...task,\n\t\t\t\t\ttask: { ...task.task, status: \"cancelled\", updatedAt: event.occurredAt },\n\t\t\t\t};\n\t\t\t}\n\t\t\treleaseAttemptAgent(agents, attempt, event.occurredAt);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.finished\": {\n\t\t\tconst result = resultFromPayload(event.payload);\n\t\t\tconst attempt = attempts[result.attemptId];\n\t\t\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${result.attemptId}'.`);\n\t\t\tattempts[result.attemptId] = { ...attempt, status: result.status, result, updatedAt: event.occurredAt };\n\t\t\tconst task = tasks[result.taskId];\n\t\t\tif (!task) throw new DurableTaskRuntimeError(`Unknown task '${result.taskId}'.`);\n\t\t\ttasks[result.taskId] = {\n\t\t\t\t...task,\n\t\t\t\ttask: { ...task.task, status: taskStatusForResult(result.status), updatedAt: event.occurredAt },\n\t\t\t};\n\t\t\treleaseAttemptAgent(agents, attempt, event.occurredAt);\n\t\t\trefreshReadyTasks(state, task.task.objectiveId, event.occurredAt);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"attempt.lease_expired\": {\n\t\t\tconst attemptId = string(event.payload.attemptId, \"attempt.lease_expired.attemptId\");\n\t\t\tconst attempt = attempts[attemptId];\n\t\t\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${attemptId}'.`);\n\t\t\tattempts[attemptId] = {\n\t\t\t\t...attempt,\n\t\t\t\tstatus: \"expired\",\n\t\t\t\t...(typeof event.payload.reasonCode === \"string\" ? { reasonCode: event.payload.reasonCode } : {}),\n\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tconst task = tasks[attempt.taskId];\n\t\t\tif (task)\n\t\t\t\ttasks[attempt.taskId] = { ...task, task: { ...task.task, status: \"ready\", updatedAt: event.occurredAt } };\n\t\t\tbreak;\n\t\t}\n\t\tcase \"approval.requested\": {\n\t\t\tconst approval = approvalFromPayload(event.payload);\n\t\t\tif (approvals[approval.approvalId]) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Approval '${approval.approvalId}' was requested more than once.`);\n\t\t\t}\n\t\t\tapprovals[approval.approvalId] = { request: approval, status: \"pending\" };\n\t\t\tconst notificationId = `approval-requested:${approval.approvalId}`;\n\t\t\tif (notifications[notificationId]) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Notification '${notificationId}' already exists.`);\n\t\t\t}\n\t\t\tnotifications[notificationId] = {\n\t\t\t\tnotificationId,\n\t\t\t\tobjectiveId: approval.objectiveId,\n\t\t\t\t...(approval.attemptId ? { attemptId: approval.attemptId } : {}),\n\t\t\t\tstatus: \"pending\",\n\t\t\t\tmessage: approval.summary,\n\t\t\t\tcreatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase \"approval.resolved\": {\n\t\t\tconst resolution = approvalResolutionFromPayload(event.payload);\n\t\t\tconst approval = approvals[resolution.approvalId];\n\t\t\tif (!approval) throw new DurableTaskRuntimeError(`Unknown approval '${resolution.approvalId}'.`);\n\t\t\tapprovals[resolution.approvalId] = {\n\t\t\t\t...approval,\n\t\t\t\tstatus: resolution.outcome,\n\t\t\t\tresolution,\n\t\t\t};\n\t\t\tconst approvalNotification = notifications[`approval-requested:${resolution.approvalId}`];\n\t\t\tif (approvalNotification?.status === \"pending\") {\n\t\t\t\tnotifications[approvalNotification.notificationId] = {\n\t\t\t\t\t...approvalNotification,\n\t\t\t\t\tstatus: \"delivered\",\n\t\t\t\t\tdeliveredAt: event.occurredAt,\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (resolution.outcome === \"rejected\" && approval.request.attemptId) {\n\t\t\t\tconst attempt = attempts[approval.request.attemptId];\n\t\t\t\tif (attempt && !terminalAttemptStatus(attempt.status)) {\n\t\t\t\t\tattempts[attempt.attemptId] = {\n\t\t\t\t\t\t...attempt,\n\t\t\t\t\t\tstatus: \"blocked\",\n\t\t\t\t\t\treasonCode: \"approval_rejected\",\n\t\t\t\t\t\tupdatedAt: event.occurredAt,\n\t\t\t\t\t};\n\t\t\t\t\tconst task = tasks[attempt.taskId];\n\t\t\t\t\tif (task) {\n\t\t\t\t\t\ttasks[attempt.taskId] = {\n\t\t\t\t\t\t\t...task,\n\t\t\t\t\t\t\ttask: { ...task.task, status: \"blocked\", updatedAt: event.occurredAt },\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"notification.enqueued\": {\n\t\t\tconst notificationId = string(event.payload.notificationId, \"notification.enqueued.notificationId\");\n\t\t\tnotifications[notificationId] = {\n\t\t\t\tnotificationId,\n\t\t\t\tobjectiveId: string(event.payload.objectiveId, \"notification.enqueued.objectiveId\"),\n\t\t\t\t...(typeof event.payload.attemptId === \"string\" ? { attemptId: event.payload.attemptId } : {}),\n\t\t\t\tstatus: \"pending\",\n\t\t\t\tmessage: string(event.payload.message, \"notification.enqueued.message\"),\n\t\t\t\tcreatedAt: event.occurredAt,\n\t\t\t};\n\t\t\tbreak;\n\t\t}\n\t\tcase \"notification.delivered\": {\n\t\t\tconst notificationId = string(event.payload.notificationId, \"notification.delivered.notificationId\");\n\t\t\tconst notification = notifications[notificationId];\n\t\t\tif (!notification) throw new DurableTaskRuntimeError(`Unknown notification '${notificationId}'.`);\n\t\t\tnotifications[notificationId] = { ...notification, status: \"delivered\", deliveredAt: event.occurredAt };\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn { ...state, lastOrdinal: event.ordinal };\n}\n\nexport function projectOrchestrationEvents(events: readonly OrchestrationEvent[]): TaskRuntimeProjection {\n\treturn events.reduce(reduceOrchestrationEvent, emptyProjection());\n}\n\nexport class DurableTaskRuntime {\n\tprivate readonly store: OrchestrationEventStore;\n\tprivate readonly now: () => number;\n\tprivate readonly createId: () => string;\n\tprivate state: TaskRuntimeProjection;\n\n\tconstructor(options: DurableTaskRuntimeOptions) {\n\t\tthis.store = options.store;\n\t\tthis.now = options.now ?? Date.now;\n\t\tthis.createId = options.createId ?? randomUUID;\n\t\tconst snapshot = this.store.readProjectionSnapshot();\n\t\tif (snapshot) {\n\t\t\tthis.state = projectionFromSnapshot(snapshot.projection, snapshot.throughOrdinal);\n\t\t} else {\n\t\t\tconst events = this.store.readAll();\n\t\t\t// Compaction may install a baseline between the first snapshot read and readAll(). In that\n\t\t\t// case readAll() returns only the new tail, which must be applied to that baseline rather\n\t\t\t// than projected as a standalone history.\n\t\t\tconst snapshotAfterRead = this.store.readProjectionSnapshot();\n\t\t\tthis.state = snapshotAfterRead\n\t\t\t\t? events\n\t\t\t\t\t\t.filter((event) => event.ordinal > snapshotAfterRead.throughOrdinal)\n\t\t\t\t\t\t.reduce(\n\t\t\t\t\t\t\treduceOrchestrationEvent,\n\t\t\t\t\t\t\tprojectionFromSnapshot(snapshotAfterRead.projection, snapshotAfterRead.throughOrdinal),\n\t\t\t\t\t\t)\n\t\t\t\t: projectOrchestrationEvents(events);\n\t\t}\n\t\tthis.refresh();\n\t}\n\n\tgetSnapshot(): TaskRuntimeProjection {\n\t\tthis.refresh();\n\t\treturn cloneProjection(this.state);\n\t}\n\n\tregisterAgent(input: RegisterAgentInput): AgentBindingContract {\n\t\tthis.refresh();\n\t\tconst now = this.nowIso();\n\t\tlet identity: AgentIdentityContract;\n\t\ttry {\n\t\t\tidentity = createAgentIdentity(input.agentId ?? `agent-${this.createId()}`, input.resumeContext);\n\t\t} catch (error) {\n\t\t\tthrow new DurableTaskRuntimeError(error instanceof Error ? error.message : String(error));\n\t\t}\n\t\tconst parentAgentId = input.parentAgentId?.trim();\n\t\tconst parent = parentAgentId ? this.state.agents[parentAgentId] : undefined;\n\t\tif (parentAgentId && !parent) {\n\t\t\tthrow new DurableTaskRuntimeError(`Unknown parent agent '${parentAgentId}'.`);\n\t\t}\n\t\tif (parent?.status === \"retired\") {\n\t\t\tthrow new DurableTaskRuntimeError(`Parent agent '${parentAgentId}' is retired.`);\n\t\t}\n\t\tconst depth = parent ? parent.depth + 1 : 0;\n\t\tif (!Number.isSafeInteger(depth)) {\n\t\t\tthrow new DurableTaskRuntimeError(\"Agent lineage depth exceeds the durable numeric range.\");\n\t\t}\n\t\tconst agent: AgentBindingContract = {\n\t\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\t\t...identity,\n\t\t\t...(parent ? { parentAgentId: parent.agentId } : {}),\n\t\t\trootAgentId: parent?.rootAgentId ?? identity.agentId,\n\t\t\tdepth,\n\t\t\trole: input.role,\n\t\t\tstatus: \"registered\",\n\t\t\tcreatedAt: now,\n\t\t\tupdatedAt: now,\n\t\t};\n\t\tif (this.state.agents[agent.agentId])\n\t\t\tthrow new DurableTaskRuntimeError(`Agent '${agent.agentId}' already exists.`);\n\t\tthis.commit({\n\t\t\ttype: \"agent.registered\",\n\t\t\taggregateId: agent.agentId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `agent-registered:${agent.agentId}`,\n\t\t\tpayload: toJsonObject({ agent }),\n\t\t});\n\t\treturn structuredClone(agent);\n\t}\n\n\tcreateObjective(input: CreateObjectiveInput): ObjectiveContract {\n\t\tthis.refresh();\n\t\tassertRiskBudget(input.riskBudget, \"objective.riskBudget\");\n\t\tconst now = this.nowIso();\n\t\tconst objective: ObjectiveContract = {\n\t\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\t\tobjectiveId: input.objectiveId ?? `objective-${this.createId()}`,\n\t\t\ttitle: input.title.trim(),\n\t\t\tdescription: input.description.trim(),\n\t\t\tstatus: \"active\",\n\t\t\tconstraints: [...(input.constraints ?? [])],\n\t\t\tacceptanceCriteria: structuredClone(input.acceptanceCriteria ?? []),\n\t\t\triskBudget: { ...(input.riskBudget ?? {}) },\n\t\t\tcreatedAt: now,\n\t\t\tupdatedAt: now,\n\t\t};\n\t\tif (!objective.title || !objective.description)\n\t\t\tthrow new DurableTaskRuntimeError(\"Objective title and description are required.\");\n\t\tassertAcceptanceCriteria(objective.acceptanceCriteria);\n\t\tif (this.state.objectives[objective.objectiveId]) {\n\t\t\tthrow new DurableTaskRuntimeError(`Objective '${objective.objectiveId}' already exists.`);\n\t\t}\n\t\tthis.commit({\n\t\t\ttype: \"objective.created\",\n\t\t\taggregateId: objective.objectiveId,\n\t\t\tactor: \"kernel\",\n\t\t\tidempotencyKey: `objective-created:${objective.objectiveId}`,\n\t\t\tpayload: toJsonObject({ objective }),\n\t\t});\n\t\treturn structuredClone(objective);\n\t}\n\n\t/** Create or synchronize owner-authored objective metadata without disturbing lifecycle or task state. */\n\tensureObjective(input: CreateObjectiveInput & { objectiveId: string }): ObjectiveContract {\n\t\tthis.refresh();\n\t\tconst current = this.state.objectives[input.objectiveId];\n\t\tif (!current) return this.createObjective(input);\n\t\tassertRiskBudget(input.riskBudget, \"objective.riskBudget\");\n\t\tconst acceptanceCriteria = structuredClone(input.acceptanceCriteria ?? []);\n\t\tassertAcceptanceCriteria(acceptanceCriteria);\n\t\tconst nextFields = {\n\t\t\ttitle: input.title.trim(),\n\t\t\tdescription: input.description.trim(),\n\t\t\tconstraints: [...(input.constraints ?? [])],\n\t\t\tacceptanceCriteria,\n\t\t\triskBudget: { ...(input.riskBudget ?? {}) },\n\t\t};\n\t\tif (!nextFields.title || !nextFields.description) {\n\t\t\tthrow new DurableTaskRuntimeError(\"Objective title and description are required.\");\n\t\t}\n\t\tconst currentFields = {\n\t\t\ttitle: current.objective.title,\n\t\t\tdescription: current.objective.description,\n\t\t\tconstraints: current.objective.constraints,\n\t\t\tacceptanceCriteria: current.objective.acceptanceCriteria,\n\t\t\triskBudget: current.objective.riskBudget,\n\t\t};\n\t\tif (isDeepStrictEqual(currentFields, nextFields)) return structuredClone(current.objective);\n\n\t\tconst retainedCriterionIds = new Set(acceptanceCriteria.map((criterion) => criterion.id));\n\t\tconst referencedRemovedIds = current.taskIds.flatMap((taskId) =>\n\t\t\t(this.state.tasks[taskId]?.task.acceptanceCriterionIds ?? []).filter(\n\t\t\t\t(criterionId) => !retainedCriterionIds.has(criterionId),\n\t\t\t),\n\t\t);\n\t\tif (referencedRemovedIds.length > 0) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Cannot remove acceptance criteria referenced by tasks: ${[...new Set(referencedRemovedIds)].join(\", \")}.`,\n\t\t\t);\n\t\t}\n\t\tconst objective: ObjectiveContract = {\n\t\t\t...current.objective,\n\t\t\t...nextFields,\n\t\t\tupdatedAt: this.nowIso(),\n\t\t};\n\t\tthis.commit({\n\t\t\ttype: \"objective.updated\",\n\t\t\taggregateId: objective.objectiveId,\n\t\t\tactor: \"kernel\",\n\t\t\tpayload: toJsonObject({ objective }),\n\t\t});\n\t\treturn structuredClone(objective);\n\t}\n\n\trecordObjectiveEvidence(objectiveId: string, evidence: EvidenceContract): EvidenceContract {\n\t\tthis.refresh();\n\t\tconst objective = this.requireObjective(objectiveId);\n\t\tconst existing = objective.evidence.find((candidate) => candidate.evidenceId === evidence.evidenceId);\n\t\tif (existing) {\n\t\t\tif (!isDeepStrictEqual(existing, evidence)) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Objective evidence '${evidence.evidenceId}' has conflicting content.`);\n\t\t\t}\n\t\t\treturn structuredClone(existing);\n\t\t}\n\t\tif (!evidence.evidenceId.trim() || !evidence.summary.trim() || !evidence.createdAt.trim()) {\n\t\t\tthrow new DurableTaskRuntimeError(\"Objective evidence requires an id, summary, and creation time.\");\n\t\t}\n\t\tif (\n\t\t\tevidence.criterionId &&\n\t\t\t!objective.objective.acceptanceCriteria.some((criterion) => criterion.id === evidence.criterionId)\n\t\t) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Objective evidence references unknown acceptance criterion '${evidence.criterionId}'.`,\n\t\t\t);\n\t\t}\n\t\tthis.commit({\n\t\t\ttype: \"objective.evidence_recorded\",\n\t\t\taggregateId: objectiveId,\n\t\t\tactor: \"kernel\",\n\t\t\tidempotencyKey: `objective-evidence-recorded:${objectiveId}:${evidence.evidenceId}`,\n\t\t\tpayload: toJsonObject({ evidence }),\n\t\t});\n\t\treturn structuredClone(evidence);\n\t}\n\n\tcreateTask(input: CreateTaskInput): TaskContract {\n\t\tthis.refresh();\n\t\tassertRiskBudget(input.riskBudget, \"task.riskBudget\");\n\t\tconst objectiveState = this.state.objectives[input.objectiveId];\n\t\tif (!objectiveState) throw new DurableTaskRuntimeError(`Unknown objective '${input.objectiveId}'.`);\n\t\tif (objectiveState.objective.status !== \"active\") {\n\t\t\tthrow new DurableTaskRuntimeError(`Objective '${input.objectiveId}' is not active.`);\n\t\t}\n\t\tconst dependsOn = [...new Set(input.dependsOn ?? [])];\n\t\tconst acceptanceCriterionIds = [...new Set(input.acceptanceCriterionIds ?? [])];\n\t\tconst objectiveCriterionIds = new Set(\n\t\t\tobjectiveState.objective.acceptanceCriteria.map((criterion) => criterion.id),\n\t\t);\n\t\tconst unknownCriterionIds = acceptanceCriterionIds.filter(\n\t\t\t(criterionId) => !objectiveCriterionIds.has(criterionId),\n\t\t);\n\t\tif (unknownCriterionIds.length > 0) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Task references unknown acceptance criteria: ${unknownCriterionIds.join(\", \")}.`,\n\t\t\t);\n\t\t}\n\t\tfor (const dependencyId of dependsOn) {\n\t\t\tconst dependency = this.state.tasks[dependencyId];\n\t\t\tif (!dependency || dependency.task.objectiveId !== input.objectiveId) {\n\t\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t\t`Task dependency '${dependencyId}' is not in objective '${input.objectiveId}'.`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (input.verificationOfTaskId) {\n\t\t\tconst subject = this.state.tasks[input.verificationOfTaskId];\n\t\t\tif (!subject || subject.task.objectiveId !== input.objectiveId) {\n\t\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t\t`Verification subject '${input.verificationOfTaskId}' is not in objective '${input.objectiveId}'.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (input.role !== \"verifier\") {\n\t\t\t\tthrow new DurableTaskRuntimeError(\"Only verifier tasks may declare verificationOfTaskId.\");\n\t\t\t}\n\t\t\tif (subject.task.role === \"verifier\") {\n\t\t\t\tthrow new DurableTaskRuntimeError(\"A verifier task cannot independently verify another verifier task.\");\n\t\t\t}\n\t\t}\n\t\tconst now = this.nowIso();\n\t\tconst task: TaskContract = {\n\t\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\t\ttaskId: input.taskId ?? `task-${this.createId()}`,\n\t\t\tobjectiveId: input.objectiveId,\n\t\t\ttitle: input.title.trim(),\n\t\t\tdescription: input.description.trim(),\n\t\t\trole: input.role,\n\t\t\tstatus: dependsOn.length === 0 ? \"ready\" : \"pending\",\n\t\t\tdependsOn,\n\t\t\trequiredCapabilities: [...new Set(input.requiredCapabilities ?? [])],\n\t\t\tacceptanceCriterionIds,\n\t\t\t...(input.verificationOfTaskId ? { verificationOfTaskId: input.verificationOfTaskId } : {}),\n\t\t\triskBudget: { ...(input.riskBudget ?? {}) },\n\t\t\tcreatedAt: now,\n\t\t\tupdatedAt: now,\n\t\t};\n\t\tif (!task.title || !task.description)\n\t\t\tthrow new DurableTaskRuntimeError(\"Task title and description are required.\");\n\t\tif (this.state.tasks[task.taskId]) throw new DurableTaskRuntimeError(`Task '${task.taskId}' already exists.`);\n\t\tthis.commit({\n\t\t\ttype: \"task.created\",\n\t\t\taggregateId: task.objectiveId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `task-created:${task.taskId}`,\n\t\t\tpayload: toJsonObject({ task }),\n\t\t});\n\t\treturn structuredClone(this.state.tasks[task.taskId]!.task);\n\t}\n\n\tqueueAttempt(taskId: string, dispatch: OrchestrationDispatchRequest, grantId?: string): AttemptRuntimeState {\n\t\tthis.refresh();\n\t\tconst task = this.requireDispatchableTask(taskId);\n\t\tconst pendingApproval = this.pendingApprovalForTask(taskId);\n\t\tif (pendingApproval) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Task '${taskId}' is awaiting approval '${pendingApproval.request.approvalId}'.`,\n\t\t\t);\n\t\t}\n\t\tconst normalizedDispatch = dispatchFromValue(dispatch, \"dispatch\");\n\t\tif (normalizedDispatch.taskId !== taskId) {\n\t\t\tthrow new DurableTaskRuntimeError(\"Dispatch taskId does not match the queued task.\");\n\t\t}\n\t\tif (\n\t\t\tnormalizedDispatch.executionContract &&\n\t\t\t(normalizedDispatch.executionContract.worker.profile.profileId !== normalizedDispatch.profileId ||\n\t\t\t\tnormalizedDispatch.executionContract.worker.profile.role !== task.task.role)\n\t\t) {\n\t\t\tthrow new DurableTaskRuntimeError(\"Execution contract does not match the dispatch profile and task role.\");\n\t\t}\n\t\tconst objective = this.state.objectives[task.task.objectiveId]!.objective;\n\t\tconst attemptCeilings = [task.task.riskBudget.maxAttempts, objective.riskBudget.maxAttempts].filter(\n\t\t\t(value): value is number => value !== undefined,\n\t\t);\n\t\tconst maxAttempts = attemptCeilings.length > 0 ? Math.min(...attemptCeilings) : undefined;\n\t\tif (maxAttempts !== undefined && task.attemptIds.length >= maxAttempts) {\n\t\t\tthrow new DurableTaskRuntimeError(`Task '${taskId}' exhausted its ${maxAttempts} attempt budget.`);\n\t\t}\n\t\tconst attemptId = `attempt-${this.createId()}`;\n\t\tthis.commit({\n\t\t\ttype: \"attempt.queued\",\n\t\t\taggregateId: taskId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `attempt-queued:${attemptId}`,\n\t\t\tpayload: toJsonObject({ attemptId, taskId, dispatch: normalizedDispatch, ...(grantId ? { grantId } : {}) }),\n\t\t});\n\t\treturn structuredClone(this.state.attempts[attemptId]!);\n\t}\n\n\tbindAttemptGrant(attemptId: string, grant: ExecutionGrant): AttemptRuntimeState {\n\t\tthis.refresh();\n\t\tconst attempt = this.requireAttempt(attemptId);\n\t\tif (![\"queued\", \"leased\", \"running\"].includes(attempt.status)) {\n\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' cannot bind a grant from '${attempt.status}'.`);\n\t\t}\n\t\tif (!grant.grantId.trim()) throw new DurableTaskRuntimeError(\"Grant id is required.\");\n\t\tconst task = this.state.tasks[attempt.taskId];\n\t\tif (\n\t\t\t!task ||\n\t\t\tgrant.schemaVersion !== ORCHESTRATION_SCHEMA_VERSION ||\n\t\t\tgrant.attemptId !== attemptId ||\n\t\t\tgrant.taskId !== attempt.taskId ||\n\t\t\tgrant.objectiveId !== task.task.objectiveId ||\n\t\t\tgrant.role !== task.task.role\n\t\t) {\n\t\t\tthrow new DurableTaskRuntimeError(\"Execution grant target does not match the attempt.\");\n\t\t}\n\t\tconst approval = this.approvalForAttempt(attemptId);\n\t\tif (approval?.status === \"pending\") {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Attempt '${attemptId}' is awaiting approval '${approval.request.approvalId}'.`,\n\t\t\t);\n\t\t}\n\t\tif (approval?.status === \"rejected\") {\n\t\t\tthrow new DurableTaskRuntimeError(`Approval '${approval.request.approvalId}' was rejected.`);\n\t\t}\n\t\tif (attempt.grantId === grant.grantId) {\n\t\t\tif (attempt.grant && !isDeepStrictEqual(attempt.grant, grant)) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' grant has conflicting content.`);\n\t\t\t}\n\t\t\treturn structuredClone(attempt);\n\t\t}\n\t\tif (attempt.grantId) throw new DurableTaskRuntimeError(`Attempt '${attemptId}' already has a different grant.`);\n\t\tthis.commit({\n\t\t\ttype: \"attempt.grant_bound\",\n\t\t\taggregateId: attemptId,\n\t\t\tactor: \"policy\",\n\t\t\tidempotencyKey: `attempt-grant-bound:${attemptId}:${grant.grantId}`,\n\t\t\tpayload: toJsonObject({ attemptId, grant }),\n\t\t});\n\t\treturn structuredClone(this.state.attempts[attemptId]!);\n\t}\n\n\tleaseAttempt(attemptId: string, ownerId: string, ttlMs: number, agentId?: string): AttemptLease {\n\t\tthis.refresh();\n\t\tconst attempt = this.requireAttempt(attemptId);\n\t\tif (attempt.status !== \"queued\") throw new DurableTaskRuntimeError(`Attempt '${attemptId}' is not queued.`);\n\t\tthis.requireActiveObjectiveForAttempt(attempt);\n\t\tconst approval = this.approvalForAttempt(attemptId);\n\t\tif (approval?.status === \"pending\") {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Attempt '${attemptId}' is awaiting approval '${approval.request.approvalId}'.`,\n\t\t\t);\n\t\t}\n\t\tif (!attempt.grantId) {\n\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' requires an execution grant before leasing.`);\n\t\t}\n\t\tif (agentId) {\n\t\t\tconst agent = this.state.agents[agentId];\n\t\t\tif (!agent) throw new DurableTaskRuntimeError(`Unknown agent '${agentId}'.`);\n\t\t\tif (agent.status !== \"registered\") throw new DurableTaskRuntimeError(`Agent '${agentId}' is not idle.`);\n\t\t\tconst task = this.state.tasks[attempt.taskId];\n\t\t\tif (!task || task.task.role !== agent.role)\n\t\t\t\tthrow new DurableTaskRuntimeError(`Agent '${agentId}' role does not match task.`);\n\t\t}\n\t\tconst lease = this.issueLease(attempt, ownerId, ttlMs);\n\t\tthis.commit({\n\t\t\ttype: \"attempt.leased\",\n\t\t\taggregateId: attemptId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `attempt-leased:${lease.leaseId}`,\n\t\t\tpayload: toJsonObject({ lease, ...(agentId ? { agentId } : {}) }),\n\t\t});\n\t\treturn structuredClone(lease);\n\t}\n\n\tstartAttempt(attemptId: string, leaseId: string, fencingToken: number): AttemptRuntimeState {\n\t\tthis.refresh();\n\t\tconst attempt = this.requireLiveLease(attemptId, leaseId, fencingToken);\n\t\tthis.requireActiveObjectiveForAttempt(attempt);\n\t\tif (attempt.status !== \"leased\") throw new DurableTaskRuntimeError(`Attempt '${attemptId}' is not leased.`);\n\t\tthis.commit({\n\t\t\ttype: \"attempt.started\",\n\t\t\taggregateId: attemptId,\n\t\t\tactor: \"worker\",\n\t\t\tidempotencyKey: `attempt-started:${attemptId}:${fencingToken}`,\n\t\t\tpayload: toJsonObject({ attemptId, leaseId, fencingToken }),\n\t\t});\n\t\treturn structuredClone(this.state.attempts[attemptId]!);\n\t}\n\n\tcheckpointAttempt(args: {\n\t\tattemptId: string;\n\t\tleaseId: string;\n\t\tfencingToken: number;\n\t\tsummary: string;\n\t\tartifactIds?: readonly string[];\n\t\tevidenceIds?: readonly string[];\n\t\tusage?: AttemptCheckpoint[\"usage\"];\n\t}): AttemptCheckpoint {\n\t\tthis.refresh();\n\t\tconst attempt = this.requireLiveLease(args.attemptId, args.leaseId, args.fencingToken);\n\t\tif (attempt.status !== \"running\")\n\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${args.attemptId}' is not running.`);\n\t\tconst checkpoint: AttemptCheckpoint = {\n\t\t\tcheckpointId: `checkpoint-${this.createId()}`,\n\t\t\tattemptId: args.attemptId,\n\t\t\tfencingToken: args.fencingToken,\n\t\t\tsummary: args.summary.trim(),\n\t\t\tartifactIds: [...(args.artifactIds ?? [])],\n\t\t\tevidenceIds: [...(args.evidenceIds ?? [])],\n\t\t\t...(args.usage ? { usage: usageFromPayload(args.usage, \"checkpoint.usage\") } : {}),\n\t\t\tcreatedAt: this.nowIso(),\n\t\t};\n\t\tif (!checkpoint.summary) throw new DurableTaskRuntimeError(\"Checkpoint summary is required.\");\n\t\tthis.commit({\n\t\t\ttype: \"attempt.checkpointed\",\n\t\t\taggregateId: args.attemptId,\n\t\t\tactor: \"worker\",\n\t\t\tidempotencyKey: `attempt-checkpointed:${checkpoint.checkpointId}`,\n\t\t\tpayload: toJsonObject({ checkpoint, leaseId: args.leaseId }),\n\t\t});\n\t\treturn structuredClone(checkpoint);\n\t}\n\n\tfinishAttempt(result: WorkerResultContract): AttemptRuntimeState {\n\t\tthis.refresh();\n\t\tconst attempt = this.requireLiveLease(result.attemptId, result.leaseId, result.fencingToken);\n\t\tif (attempt.status !== \"running\" && attempt.status !== \"leased\") {\n\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${result.attemptId}' cannot finish from '${attempt.status}'.`);\n\t\t}\n\t\tif (attempt.taskId !== result.taskId)\n\t\t\tthrow new DurableTaskRuntimeError(\"Worker result taskId does not match attempt.\");\n\t\tconst task = this.state.tasks[attempt.taskId];\n\t\tif (!task || task.task.objectiveId !== result.objectiveId) {\n\t\t\tthrow new DurableTaskRuntimeError(\"Worker result objectiveId does not match attempt.\");\n\t\t}\n\t\tif (result.status === \"completed\") {\n\t\t\tconst missingCriteria = missingTrustedCriteria(result, task.task.acceptanceCriterionIds);\n\t\t\tif (missingCriteria.length > 0) {\n\t\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t\t`Completed result lacks trusted evidence for acceptance criteria: ${missingCriteria.join(\", \")}.`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tthis.commit({\n\t\t\ttype: \"attempt.finished\",\n\t\t\taggregateId: result.attemptId,\n\t\t\tactor: \"worker\",\n\t\t\tidempotencyKey: `attempt-finished:${result.resultId}`,\n\t\t\tpayload: toJsonObject({ result }),\n\t\t});\n\t\treturn structuredClone(this.state.attempts[result.attemptId]!);\n\t}\n\n\tfinishVerification(args: {\n\t\ttaskId: string;\n\t\tverifierTaskId: string;\n\t\tverifierAttemptId: string;\n\t\tverdict: \"accepted\" | \"rejected\" | \"inconclusive\";\n\t\treasonCode: string;\n\t}): TaskRuntimeState {\n\t\tthis.refresh();\n\t\tconst subject = this.state.tasks[args.taskId];\n\t\tconst verifierTask = this.state.tasks[args.verifierTaskId];\n\t\tconst verifierAttempt = this.state.attempts[args.verifierAttemptId];\n\t\tif (!subject) throw new DurableTaskRuntimeError(`Unknown verification subject '${args.taskId}'.`);\n\t\tif (!verifierTask || verifierTask.task.verificationOfTaskId !== args.taskId) {\n\t\t\tthrow new DurableTaskRuntimeError(`Task '${args.verifierTaskId}' is not the verifier for '${args.taskId}'.`);\n\t\t}\n\t\tif (!verifierAttempt || verifierAttempt.taskId !== args.verifierTaskId) {\n\t\t\tthrow new DurableTaskRuntimeError(`Unknown verifier attempt '${args.verifierAttemptId}'.`);\n\t\t}\n\t\tif (args.verdict === \"inconclusive\") {\n\t\t\tif (\n\t\t\t\tverifierAttempt.status === \"queued\" ||\n\t\t\t\tverifierAttempt.status === \"leased\" ||\n\t\t\t\tverifierAttempt.status === \"running\"\n\t\t\t) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Verifier attempt '${args.verifierAttemptId}' is not terminal.`);\n\t\t\t}\n\t\t} else if (verifierAttempt.status !== \"completed\" || !verifierAttempt.result) {\n\t\t\tthrow new DurableTaskRuntimeError(`Verifier attempt '${args.verifierAttemptId}' is not completed.`);\n\t\t}\n\t\tif (subject.task.status !== \"blocked\") {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Verification subject '${args.taskId}' cannot reconcile from '${subject.task.status}'.`,\n\t\t\t);\n\t\t}\n\t\tif (!args.reasonCode.trim()) throw new DurableTaskRuntimeError(\"Verification reason code is required.\");\n\t\tif (\n\t\t\targs.verdict === \"accepted\" &&\n\t\t\t!verifierAttempt.result?.evidence.some(\n\t\t\t\t(evidence) =>\n\t\t\t\t\tevidence.trusted && evidence.kind === \"review\" && evidence.metadata?.subjectTaskId === args.taskId,\n\t\t\t)\n\t\t) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t\"Accepted verification requires trusted review evidence for the subject task.\",\n\t\t\t);\n\t\t}\n\t\tthis.commit({\n\t\t\ttype: \"task.verification_finished\",\n\t\t\taggregateId: args.taskId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `task-verification-finished:${args.taskId}:${args.verifierAttemptId}`,\n\t\t\tpayload: toJsonObject({ ...args, reasonCode: args.reasonCode.trim() }),\n\t\t});\n\t\treturn structuredClone(this.state.tasks[args.taskId]!);\n\t}\n\n\tcancelAttempt(attemptId: string, reasonCode: string): AttemptRuntimeState {\n\t\tthis.refresh();\n\t\tconst attempt = this.requireAttempt(attemptId);\n\t\tif (terminalAttemptStatus(attempt.status)) return structuredClone(attempt);\n\t\tif (!reasonCode.trim()) throw new DurableTaskRuntimeError(\"Cancellation reason is required.\");\n\t\tthis.commit({\n\t\t\ttype: \"attempt.cancelled\",\n\t\t\taggregateId: attemptId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `attempt-cancelled:${attemptId}`,\n\t\t\tpayload: toJsonObject({ attemptId, reasonCode: reasonCode.trim() }),\n\t\t});\n\t\treturn structuredClone(this.state.attempts[attemptId]!);\n\t}\n\n\t/**\n\t * The only runtime suspension transition. Callers must present the exact current owner and lease\n\t * fence; liveness/restart policy stays outside this deterministic runtime.\n\t */\n\tsuspendBoundAttempt(args: {\n\t\tattemptId: string;\n\t\townerId: string;\n\t\tleaseId: string;\n\t\tfencingToken: number;\n\t\treasonCode: string;\n\t}): AttemptRuntimeState {\n\t\tthis.refresh();\n\t\tconst attempt = this.requireAttempt(args.attemptId);\n\t\tif (!attempt.agentId || !attempt.lease || ![\"leased\", \"running\"].includes(attempt.status)) {\n\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${args.attemptId}' is not a live agent-bound attempt.`);\n\t\t}\n\t\tif (attempt.lease.ownerId !== args.ownerId) {\n\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${args.attemptId}' is not owned by '${args.ownerId}'.`);\n\t\t}\n\t\tif (attempt.lease.leaseId !== args.leaseId || attempt.lease.fencingToken !== args.fencingToken) {\n\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${args.attemptId}' lease or fencing token is stale.`);\n\t\t}\n\t\tif (!args.reasonCode.trim()) throw new DurableTaskRuntimeError(\"Suspension reason is required.\");\n\t\tthis.commit({\n\t\t\ttype: \"attempt.suspended\",\n\t\t\taggregateId: args.attemptId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `attempt-suspended:${args.attemptId}:${args.leaseId}:${args.fencingToken}`,\n\t\t\tpayload: toJsonObject({\n\t\t\t\tattemptId: args.attemptId,\n\t\t\t\tleaseId: args.leaseId,\n\t\t\t\tfencingToken: args.fencingToken,\n\t\t\t\treasonCode: args.reasonCode.trim(),\n\t\t\t}),\n\t\t});\n\t\treturn structuredClone(this.state.attempts[args.attemptId]!);\n\t}\n\n\tfailTask(taskId: string, reasonCode: string): TaskContract {\n\t\tthis.refresh();\n\t\tconst task = this.state.tasks[taskId];\n\t\tif (!task) throw new DurableTaskRuntimeError(`Unknown task '${taskId}'.`);\n\t\tif ([\"completed\", \"failed\", \"cancelled\"].includes(task.task.status)) return structuredClone(task.task);\n\t\tif (!reasonCode.trim()) throw new DurableTaskRuntimeError(\"Task failure reason is required.\");\n\t\tthis.commit({\n\t\t\ttype: \"task.failed\",\n\t\t\taggregateId: taskId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `task-failed:${taskId}:${reasonCode.trim()}`,\n\t\t\tpayload: toJsonObject({ taskId, reasonCode: reasonCode.trim() }),\n\t\t});\n\t\treturn structuredClone(this.state.tasks[taskId]!.task);\n\t}\n\n\t/**\n\t * Recover unbound in-process work after a process restart. A completion has no resumable model\n\t * transcript, so its old lease is fenced and the task becomes dispatchable for a fresh attempt.\n\t * Agent-bound attempts are intentionally excluded: those must wake the same logical agent.\n\t */\n\trecoverInterruptedUnboundAttempts(shouldRecover: (attempt: AttemptRuntimeState) => boolean = () => true): string[] {\n\t\tthis.refresh();\n\t\tconst recovered: string[] = [];\n\t\tfor (const attempt of Object.values(this.state.attempts)) {\n\t\t\tif (\n\t\t\t\t(attempt.status !== \"leased\" && attempt.status !== \"running\") ||\n\t\t\t\tattempt.agentId ||\n\t\t\t\t!shouldRecover(attempt)\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis.commit({\n\t\t\t\ttype: \"attempt.lease_expired\",\n\t\t\t\taggregateId: attempt.attemptId,\n\t\t\t\tactor: \"runtime\",\n\t\t\t\tidempotencyKey: `attempt-process-interrupted:${attempt.attemptId}:${attempt.lease?.leaseId ?? \"none\"}`,\n\t\t\t\tpayload: toJsonObject({\n\t\t\t\t\tattemptId: attempt.attemptId,\n\t\t\t\t\t...(attempt.lease ? { leaseId: attempt.lease.leaseId, fencingToken: attempt.lease.fencingToken } : {}),\n\t\t\t\t\treasonCode: \"worker_process_interrupted\",\n\t\t\t\t}),\n\t\t\t});\n\t\t\trecovered.push(attempt.attemptId);\n\t\t}\n\t\treturn recovered;\n\t}\n\n\texpireLeases(at = this.now()): string[] {\n\t\tthis.refresh();\n\t\tconst expired: string[] = [];\n\t\tfor (const attempt of Object.values(this.state.attempts)) {\n\t\t\tif ((attempt.status !== \"leased\" && attempt.status !== \"running\") || !attempt.lease) continue;\n\t\t\tif (Date.parse(attempt.lease.expiresAt) > at) continue;\n\t\t\tthis.commit({\n\t\t\t\ttype: attempt.agentId ? \"attempt.suspended\" : \"attempt.lease_expired\",\n\t\t\t\taggregateId: attempt.attemptId,\n\t\t\t\tactor: \"runtime\",\n\t\t\t\tidempotencyKey: `attempt-lease-expired:${attempt.lease.leaseId}`,\n\t\t\t\tpayload: toJsonObject({\n\t\t\t\t\tattemptId: attempt.attemptId,\n\t\t\t\t\tleaseId: attempt.lease.leaseId,\n\t\t\t\t\tfencingToken: attempt.lease.fencingToken,\n\t\t\t\t}),\n\t\t\t});\n\t\t\texpired.push(attempt.attemptId);\n\t\t}\n\t\treturn expired;\n\t}\n\n\trequestAgentResume(agentId: string): AgentBindingContract {\n\t\tthis.refresh();\n\t\tconst agent = this.state.agents[agentId];\n\t\tif (!agent) throw new DurableTaskRuntimeError(`Unknown agent '${agentId}'.`);\n\t\tif (agent.status !== \"suspended\") throw new DurableTaskRuntimeError(`Agent '${agentId}' is not suspended.`);\n\t\tthis.commit({\n\t\t\ttype: \"agent.resume_requested\",\n\t\t\taggregateId: agentId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `agent-resume-requested:${agentId}:${this.state.lastOrdinal}`,\n\t\t\tpayload: toJsonObject({ agentId }),\n\t\t});\n\t\treturn structuredClone(this.state.agents[agentId]!);\n\t}\n\n\tresumeAttempt(attemptId: string, agentId: string, ttlMs: number, ownerId = agentId): AttemptLease {\n\t\tthis.refresh();\n\t\tconst attempt = this.requireAttempt(attemptId);\n\t\tconst agent = this.state.agents[agentId];\n\t\tif (attempt.status !== \"suspended\" || attempt.agentId !== agentId) {\n\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' is not suspended for agent '${agentId}'.`);\n\t\t}\n\t\tif (!agent || agent.status !== \"resuming\")\n\t\t\tthrow new DurableTaskRuntimeError(`Agent '${agentId}' is not resuming.`);\n\t\tthis.requireActiveObjectiveForAttempt(attempt);\n\t\tconst lease = this.issueLease(attempt, ownerId, ttlMs);\n\t\tthis.commit({\n\t\t\ttype: \"attempt.resumed\",\n\t\t\taggregateId: attemptId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `attempt-resumed:${lease.leaseId}`,\n\t\t\tpayload: toJsonObject({ agentId, lease }),\n\t\t});\n\t\treturn structuredClone(lease);\n\t}\n\n\tpauseObjective(objectiveId: string): void {\n\t\tthis.transitionObjective(objectiveId, \"objective.paused\", \"paused\");\n\t}\n\n\tresumeObjective(objectiveId: string): void {\n\t\tthis.transitionObjective(objectiveId, \"objective.resumed\", \"active\");\n\t}\n\n\tcancelObjective(objectiveId: string): void {\n\t\tthis.transitionObjective(objectiveId, \"objective.cancelled\", \"cancelled\");\n\t}\n\n\tcompleteObjective(objectiveId: string): void {\n\t\tthis.refresh();\n\t\tconst objective = this.requireObjective(objectiveId);\n\t\tconst incomplete = objective.taskIds.filter((taskId) => this.state.tasks[taskId]?.task.status !== \"completed\");\n\t\tif (incomplete.length > 0) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Objective '${objectiveId}' has incomplete tasks: ${incomplete.join(\", \")}.`,\n\t\t\t);\n\t\t}\n\t\tconst requiredCriterionIds = objective.objective.acceptanceCriteria\n\t\t\t.filter((criterion) => criterion.required)\n\t\t\t.map((criterion) => criterion.id);\n\t\tconst evidence = [\n\t\t\t...objective.evidence,\n\t\t\t...objective.taskIds.flatMap((taskId) => {\n\t\t\t\tconst task = this.state.tasks[taskId];\n\t\t\t\treturn (\n\t\t\t\t\ttask?.attemptIds.flatMap((attemptId) => this.state.attempts[attemptId]?.result?.evidence ?? []) ?? []\n\t\t\t\t);\n\t\t\t}),\n\t\t];\n\t\tconst provenCriterionIds = new Set(\n\t\t\tevidence.flatMap((item) => (item.trusted && item.criterionId ? [item.criterionId] : [])),\n\t\t);\n\t\tconst unproven = requiredCriterionIds.filter((criterionId) => !provenCriterionIds.has(criterionId));\n\t\tif (unproven.length > 0) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Objective '${objectiveId}' lacks trusted evidence for required criteria: ${unproven.join(\", \")}.`,\n\t\t\t);\n\t\t}\n\t\tthis.transitionObjective(objectiveId, \"objective.completed\", \"completed\");\n\t}\n\n\tcompleteObjectiveFromOwner(objectiveId: string, acceptanceOverride: boolean): void {\n\t\tthis.refresh();\n\t\tconst objective = this.requireObjective(objectiveId);\n\t\tif (objective.objective.status === \"completed\") return;\n\t\tif (objective.objective.status === \"cancelled\") {\n\t\t\tthrow new DurableTaskRuntimeError(`Objective '${objectiveId}' is terminal.`);\n\t\t}\n\t\tif (!acceptanceOverride) {\n\t\t\tconst provenCriterionIds = new Set(\n\t\t\t\tobjective.evidence.flatMap((evidence) =>\n\t\t\t\t\tevidence.trusted && evidence.criterionId ? [evidence.criterionId] : [],\n\t\t\t\t),\n\t\t\t);\n\t\t\tconst unproven = objective.objective.acceptanceCriteria\n\t\t\t\t.filter((criterion) => criterion.required && !provenCriterionIds.has(criterion.id))\n\t\t\t\t.map((criterion) => criterion.id);\n\t\t\tif (unproven.length > 0) {\n\t\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t\t`Objective '${objectiveId}' lacks trusted owner evidence for required criteria: ${unproven.join(\", \")}.`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tthis.transitionObjective(objectiveId, \"objective.completed\", \"completed\");\n\t}\n\n\trequestApproval(approval: ApprovalRequestContract): ApprovalRuntimeState {\n\t\tthis.refresh();\n\t\tconst normalized = approvalFromPayload(toJsonObject({ approval }));\n\t\tconst existing = this.state.approvals[normalized.approvalId];\n\t\tif (existing) {\n\t\t\tif (!isDeepStrictEqual(existing.request, normalized)) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Approval id '${normalized.approvalId}' has conflicting content.`);\n\t\t\t}\n\t\t\treturn structuredClone(existing);\n\t\t}\n\t\tthis.validateApprovalRequest(normalized);\n\t\tconst pendingForTarget = Object.values(this.state.approvals).find(\n\t\t\t(candidate) =>\n\t\t\t\tcandidate.status === \"pending\" &&\n\t\t\t\tcandidate.request.objectiveId === normalized.objectiveId &&\n\t\t\t\tcandidate.request.taskId === normalized.taskId &&\n\t\t\t\tcandidate.request.attemptId === normalized.attemptId,\n\t\t);\n\t\tif (pendingForTarget) {\n\t\t\tthrow new DurableTaskRuntimeError(`Target already awaits approval '${pendingForTarget.request.approvalId}'.`);\n\t\t}\n\t\tthis.commit({\n\t\t\ttype: \"approval.requested\",\n\t\t\taggregateId: normalized.attemptId ?? normalized.taskId ?? normalized.objectiveId,\n\t\t\tactor: \"policy\",\n\t\t\tidempotencyKey: `approval-requested:${normalized.approvalId}`,\n\t\t\tpayload: toJsonObject({ approval: normalized }),\n\t\t});\n\t\treturn structuredClone(this.state.approvals[normalized.approvalId]!);\n\t}\n\n\tresolveApproval(approvalId: string, outcome: ApprovalOutcome, reasonCode: string): ApprovalRuntimeState {\n\t\tthis.refresh();\n\t\tconst approval = this.state.approvals[approvalId];\n\t\tif (!approval) throw new DurableTaskRuntimeError(`Unknown approval '${approvalId}'.`);\n\t\tif (approval.status !== \"pending\") {\n\t\t\tif (approval.status === outcome) return structuredClone(approval);\n\t\t\tthrow new DurableTaskRuntimeError(`Approval '${approvalId}' was already ${approval.status}.`);\n\t\t}\n\t\tif (outcome !== \"approved\" && outcome !== \"rejected\") {\n\t\t\tthrow new DurableTaskRuntimeError(`Unknown approval outcome '${String(outcome)}'.`);\n\t\t}\n\t\tif (!reasonCode.trim()) throw new DurableTaskRuntimeError(\"Approval resolution reason is required.\");\n\t\tconst resolution: ApprovalResolutionContract = {\n\t\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\t\tapprovalId,\n\t\t\toutcome,\n\t\t\treasonCode: reasonCode.trim(),\n\t\t\tresolvedAt: this.nowIso(),\n\t\t};\n\t\tthis.commit({\n\t\t\ttype: \"approval.resolved\",\n\t\t\taggregateId: approval.request.attemptId ?? approval.request.taskId ?? approval.request.objectiveId,\n\t\t\tactor: \"human\",\n\t\t\tidempotencyKey: `approval-resolved:${approvalId}`,\n\t\t\tpayload: toJsonObject({ resolution }),\n\t\t});\n\t\treturn structuredClone(this.state.approvals[approvalId]!);\n\t}\n\n\tenqueueNotification(args: {\n\t\tnotificationId?: string;\n\t\tobjectiveId: string;\n\t\tattemptId?: string;\n\t\tmessage: string;\n\t}): NotificationRuntimeState {\n\t\tthis.refresh();\n\t\tthis.requireObjective(args.objectiveId);\n\t\tconst notificationId = args.notificationId ?? `notification-${this.createId()}`;\n\t\tconst existing = this.state.notifications[notificationId];\n\t\tif (existing) return structuredClone(existing);\n\t\tthis.commit({\n\t\t\ttype: \"notification.enqueued\",\n\t\t\taggregateId: args.objectiveId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `notification-enqueued:${notificationId}`,\n\t\t\tpayload: toJsonObject({ ...args, notificationId }),\n\t\t});\n\t\treturn structuredClone(this.state.notifications[notificationId]!);\n\t}\n\n\tmarkNotificationDelivered(notificationId: string): NotificationRuntimeState {\n\t\tthis.refresh();\n\t\tconst notification = this.state.notifications[notificationId];\n\t\tif (!notification) throw new DurableTaskRuntimeError(`Unknown notification '${notificationId}'.`);\n\t\tif (notification.status === \"delivered\") return structuredClone(notification);\n\t\tthis.commit({\n\t\t\ttype: \"notification.delivered\",\n\t\t\taggregateId: notification.objectiveId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `notification-delivered:${notificationId}`,\n\t\t\tpayload: toJsonObject({ notificationId }),\n\t\t});\n\t\treturn structuredClone(this.state.notifications[notificationId]!);\n\t}\n\n\tprivate transitionObjective(\n\t\tobjectiveId: string,\n\t\ttype: \"objective.paused\" | \"objective.resumed\" | \"objective.cancelled\" | \"objective.completed\",\n\t\ttarget: ObjectiveStatus,\n\t): void {\n\t\tthis.refresh();\n\t\tconst objective = this.requireObjective(objectiveId);\n\t\tif (objective.objective.status === target) return;\n\t\tif ([\"completed\", \"cancelled\"].includes(objective.objective.status)) {\n\t\t\tthrow new DurableTaskRuntimeError(`Objective '${objectiveId}' is terminal.`);\n\t\t}\n\t\tthis.commit({\n\t\t\ttype,\n\t\t\taggregateId: objectiveId,\n\t\t\tactor: \"human\",\n\t\t\tidempotencyKey: `${type}:${objectiveId}:${this.state.lastOrdinal}`,\n\t\t\tpayload: {},\n\t\t});\n\t}\n\n\tprivate requireObjective(objectiveId: string): ObjectiveRuntimeState {\n\t\tconst objective = this.state.objectives[objectiveId];\n\t\tif (!objective) throw new DurableTaskRuntimeError(`Unknown objective '${objectiveId}'.`);\n\t\treturn objective;\n\t}\n\n\tprivate requireDispatchableTask(taskId: string): TaskRuntimeState {\n\t\tconst task = this.state.tasks[taskId];\n\t\tif (!task) throw new DurableTaskRuntimeError(`Unknown task '${taskId}'.`);\n\t\tconst objective = this.requireObjective(task.task.objectiveId);\n\t\tif (objective.objective.status !== \"active\") {\n\t\t\tthrow new DurableTaskRuntimeError(`Objective '${objective.objective.objectiveId}' is not active.`);\n\t\t}\n\t\tif (![\"ready\", \"blocked\", \"failed\"].includes(task.task.status)) {\n\t\t\tthrow new DurableTaskRuntimeError(`Task '${taskId}' is not dispatchable from '${task.task.status}'.`);\n\t\t}\n\t\treturn task;\n\t}\n\n\tprivate requireAttempt(attemptId: string): AttemptRuntimeState {\n\t\tconst attempt = this.state.attempts[attemptId];\n\t\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${attemptId}'.`);\n\t\treturn attempt;\n\t}\n\n\tprivate issueLease(attempt: AttemptRuntimeState, ownerId: string, ttlMs: number): AttemptLease {\n\t\tif (!Number.isFinite(ttlMs) || ttlMs <= 0) throw new DurableTaskRuntimeError(\"Lease TTL must be positive.\");\n\t\tconst issuedAtMs = this.now();\n\t\tconst expiresAtMs = issuedAtMs + Math.min(ttlMs, MAX_DATE_EPOCH_MS - issuedAtMs);\n\t\treturn {\n\t\t\tleaseId: `lease-${this.createId()}`,\n\t\t\tattemptId: attempt.attemptId,\n\t\t\townerId,\n\t\t\tfencingToken: (attempt.lease?.fencingToken ?? 0) + 1,\n\t\t\tissuedAt: new Date(issuedAtMs).toISOString(),\n\t\t\texpiresAt: new Date(expiresAtMs).toISOString(),\n\t\t};\n\t}\n\n\tprivate approvalForAttempt(attemptId: string): ApprovalRuntimeState | undefined {\n\t\treturn Object.values(this.state.approvals).find((approval) => approval.request.attemptId === attemptId);\n\t}\n\n\tprivate pendingApprovalForTask(taskId: string): ApprovalRuntimeState | undefined {\n\t\tconst task = this.state.tasks[taskId];\n\t\tif (!task) return undefined;\n\t\treturn Object.values(this.state.approvals).find(\n\t\t\t(approval) =>\n\t\t\t\tapproval.status === \"pending\" &&\n\t\t\t\tapproval.request.attemptId === undefined &&\n\t\t\t\tapproval.request.objectiveId === task.task.objectiveId &&\n\t\t\t\t(approval.request.taskId === undefined || approval.request.taskId === taskId),\n\t\t);\n\t}\n\n\tprivate requireActiveObjectiveForAttempt(attempt: AttemptRuntimeState): void {\n\t\tconst task = this.state.tasks[attempt.taskId];\n\t\tif (!task) throw new DurableTaskRuntimeError(`Unknown task '${attempt.taskId}'.`);\n\t\tconst objective = this.requireObjective(task.task.objectiveId).objective;\n\t\tif (objective.status !== \"active\") {\n\t\t\tthrow new DurableTaskRuntimeError(`Objective '${objective.objectiveId}' is not active.`);\n\t\t}\n\t}\n\n\tprivate validateApprovalRequest(approval: ApprovalRequestContract): void {\n\t\tconst objective = this.requireObjective(approval.objectiveId).objective;\n\t\tif (objective.status !== \"active\") {\n\t\t\tthrow new DurableTaskRuntimeError(`Objective '${approval.objectiveId}' is not active.`);\n\t\t}\n\t\tif (approval.attemptId && !approval.taskId) {\n\t\t\tthrow new DurableTaskRuntimeError(\"Attempt-scoped approval requires a taskId.\");\n\t\t}\n\t\tif (approval.taskId) {\n\t\t\tconst task = this.state.tasks[approval.taskId];\n\t\t\tif (!task || task.task.objectiveId !== approval.objectiveId) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Approval task '${approval.taskId}' does not belong to its objective.`);\n\t\t\t}\n\t\t}\n\t\tif (approval.attemptId) {\n\t\t\tconst attempt = this.state.attempts[approval.attemptId];\n\t\t\tif (!attempt || attempt.taskId !== approval.taskId) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Approval attempt '${approval.attemptId}' does not belong to its task.`);\n\t\t\t}\n\t\t\tif (attempt.status !== \"queued\" || attempt.grantId) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Approval attempt '${approval.attemptId}' is not awaiting policy.`);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate requireLiveLease(attemptId: string, leaseId: string, fencingToken: number): AttemptRuntimeState {\n\t\tconst attempt = this.requireAttempt(attemptId);\n\t\tif (!attempt.lease || attempt.lease.leaseId !== leaseId || attempt.lease.fencingToken !== fencingToken) {\n\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' lease or fencing token is stale.`);\n\t\t}\n\t\tif (Date.parse(attempt.lease.expiresAt) <= this.now()) {\n\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' lease expired.`);\n\t\t}\n\t\treturn attempt;\n\t}\n\n\tprivate refresh(): void {\n\t\tlet events: OrchestrationEvent[];\n\t\ttry {\n\t\t\tevents = this.store.readAfter(this.state.lastOrdinal);\n\t\t} catch (error) {\n\t\t\tif (!(error instanceof OrchestrationSnapshotRequiredError)) throw error;\n\t\t\tconst snapshot = this.store.readProjectionSnapshot();\n\t\t\tif (!snapshot || snapshot.throughOrdinal < error.throughOrdinal) {\n\t\t\t\tthrow new DurableTaskRuntimeError(\"Required orchestration projection snapshot is unavailable.\");\n\t\t\t}\n\t\t\tthis.state = projectionFromSnapshot(snapshot.projection, snapshot.throughOrdinal);\n\t\t\tevents = this.store.readAfter(this.state.lastOrdinal);\n\t\t}\n\t\tfor (const event of events) {\n\t\t\tthis.state = reduceOrchestrationEvent(this.state, event);\n\t\t}\n\t\tthis.compactCurrentProjection();\n\t}\n\n\tprivate commit(input: AppendOrchestrationEventInput): void {\n\t\tthis.compactCurrentProjection();\n\t\tconst event = this.store.append(input, { expectedLastOrdinal: this.state.lastOrdinal });\n\t\tif (event.ordinal > this.state.lastOrdinal) this.state = reduceOrchestrationEvent(this.state, event);\n\t}\n\n\tprivate compactCurrentProjection(): void {\n\t\tif (this.state.lastOrdinal > 0) {\n\t\t\tthis.store.compactIfNeeded(this.state.lastOrdinal, () => toJsonObject(this.state));\n\t\t}\n\t}\n\n\tprivate nowIso(): string {\n\t\treturn new Date(this.now()).toISOString();\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"task-runtime.js","sourceRoot":"","sources":["../../../src/core/orchestration/task-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { isDeepStrictEqual } from \"node:util\";\nimport type { JsonObject } from \"../autonomy/contracts.ts\";\nimport { createAgentIdentity } from \"./agent-resume.ts\";\nimport {\n\ttype AgentBindingContract,\n\ttype AgentIdentityContract,\n\ttype AppendOrchestrationEventInput,\n\ttype ApprovalOutcome,\n\ttype ApprovalRequestContract,\n\ttype ApprovalResolutionContract,\n\ttype AttemptCheckpoint,\n\ttype AttemptLease,\n\ttype AttemptRetryState,\n\ttype EvidenceContract,\n\ttype ExecutionGrant,\n\tMAX_ORCHESTRATION_AGENT_BINDINGS,\n\tMAX_ORCHESTRATION_APPROVALS,\n\tMAX_ORCHESTRATION_ATTEMPTS,\n\tMAX_ORCHESTRATION_CHECKPOINTS,\n\tMAX_ORCHESTRATION_NOTIFICATIONS,\n\tMAX_ORCHESTRATION_OBJECTIVE_EVIDENCE,\n\tMAX_ORCHESTRATION_OBJECTIVES,\n\tMAX_ORCHESTRATION_TASKS,\n\ttype ObjectiveContract,\n\ttype ObjectiveStatus,\n\tORCHESTRATION_SCHEMA_VERSION,\n\ttype OrchestrationDispatchRequest,\n\ttype OrchestrationEvent,\n\ttype TaskContract,\n\ttoJsonObject,\n\ttype WorkerResultContract,\n} from \"./contracts.ts\";\nimport { type OrchestrationEventStore, OrchestrationSnapshotRequiredError } from \"./event-store.ts\";\nimport {\n\tapprovalFromPayload,\n\tassertAcceptanceCriteria,\n\tassertReferencedAcceptanceCriteriaRetained,\n\tassertRiskBudget,\n\tcheckpointSummary,\n\tdispatchFromValue,\n\tdispatchIdentifier,\n\tdispatchIdentifierArray,\n\texecutionGrantFromValue,\n\tMAX_DATE_EPOCH_MS,\n\tprojectionFromSnapshot,\n\tretryStateFromValue,\n\ttaskFromValue,\n\tusageFromPayload,\n\tvalidateTaskContractForState,\n\tvalidateTaskDependencyIds,\n} from \"./task-runtime-codecs.ts\";\nimport {\n\tassertBoundedIdentifierList,\n\tassertIdentifierListHasCapacity,\n\tassertObjectiveEvidenceHasCapacity,\n\tassertProjectionRecordReplacementWithinLimits,\n\tassertRecordHasCapacity,\n\tcloneProjection,\n\tprojectionCapacity,\n\trequestedProjectionSlots,\n} from \"./task-runtime-projection.ts\";\nimport {\n\tactiveTaskAttempt,\n\tassertAgentNotRetired,\n\tassertAgentRetirementEligible,\n\tassertApprovalRequestTransition,\n\tassertApprovalResolutionTransition,\n\tassertAttemptCheckpointTransition,\n\tassertAttemptFinishTransition,\n\tassertAttemptGrantTransition,\n\tassertAttemptLeaseTransition,\n\tassertAttemptStartTransition,\n\tassertNotificationTarget,\n\tassertObjectiveStatusTransition,\n\tassertRetryBackoffElapsedAt,\n\tassertTaskAttemptBudgetForState,\n\tassertTaskFailureTransition,\n\tassertVerificationTransition,\n\tattemptDispatchReadiness,\n\ttype ObjectiveCompletionPolicy,\n\tprojectOrchestrationEvents,\n\treduceOrchestrationEvent,\n\trequireActiveObjectiveForAttemptInProjection,\n\ttype VerificationTransitionInput,\n} from \"./task-runtime-reducer.ts\";\nimport {\n\ttype ApprovalRuntimeState,\n\ttype AttemptDispatchReadiness,\n\ttype AttemptRuntimeState,\n\ttype CreateObjectiveInput,\n\ttype CreateTaskInput,\n\tDurableTaskRuntimeError,\n\ttype NotificationRuntimeState,\n\ttype ObjectiveRuntimeState,\n\ttype OrchestrationProjectionCapacity,\n\ttype OrchestrationProjectionHeadroomRequest,\n\ttype PreparedTaskAttempt,\n\ttype RegisterAgentInput,\n\ttype TaskRuntimeProjection,\n\ttype TaskRuntimeState,\n\tterminalAttemptStatus,\n} from \"./task-runtime-state.ts\";\n\nexport { validateTaskDependencyIds } from \"./task-runtime-codecs.ts\";\nexport {\n\tprojectOrchestrationEvents,\n\treduceOrchestrationEvent,\n} from \"./task-runtime-reducer.ts\";\nexport {\n\ttype ApprovalRuntimeState,\n\ttype AttemptDispatchReadiness,\n\ttype AttemptRuntimeState,\n\ttype CreateObjectiveInput,\n\ttype CreateTaskInput,\n\tDurableTaskRuntimeError,\n\ttype NotificationRuntimeState,\n\ttype ObjectiveRuntimeState,\n\ttype OrchestrationProjectionCapacity,\n\ttype OrchestrationProjectionHeadroomRequest,\n\ttype OrchestrationProjectionSlotCounts,\n\ttype PreparedTaskAttempt,\n\ttype RegisterAgentInput,\n\ttype TaskRuntimeProjection,\n\ttype TaskRuntimeState,\n} from \"./task-runtime-state.ts\";\n\nexport interface DurableTaskRuntimeOptions {\n\tstore: OrchestrationEventStore;\n\tnow?: () => number;\n\tcreateId?: () => string;\n}\n\nexport class DurableTaskRuntime {\n\tprivate readonly store: OrchestrationEventStore;\n\tprivate readonly now: () => number;\n\tprivate readonly createId: () => string;\n\tprivate state: TaskRuntimeProjection;\n\n\tconstructor(options: DurableTaskRuntimeOptions) {\n\t\tthis.store = options.store;\n\t\tthis.now = options.now ?? (() => Date.now());\n\t\tthis.createId = options.createId ?? randomUUID;\n\t\tconst snapshot = this.store.readProjectionSnapshot();\n\t\tif (snapshot) {\n\t\t\tthis.state = projectionFromSnapshot(snapshot.projection, snapshot.throughOrdinal);\n\t\t} else {\n\t\t\tconst events = this.store.readAll();\n\t\t\t// Compaction may install a baseline between the first snapshot read and readAll(). In that\n\t\t\t// case readAll() returns only the new tail, which must be applied to that baseline rather\n\t\t\t// than projected as a standalone history.\n\t\t\tconst snapshotAfterRead = this.store.readProjectionSnapshot();\n\t\t\tthis.state = snapshotAfterRead\n\t\t\t\t? events\n\t\t\t\t\t\t.filter((event) => event.ordinal > snapshotAfterRead.throughOrdinal)\n\t\t\t\t\t\t.reduce(\n\t\t\t\t\t\t\treduceOrchestrationEvent,\n\t\t\t\t\t\t\tprojectionFromSnapshot(snapshotAfterRead.projection, snapshotAfterRead.throughOrdinal),\n\t\t\t\t\t\t)\n\t\t\t\t: projectOrchestrationEvents(events);\n\t\t}\n\t\tthis.refresh();\n\t}\n\n\tgetSnapshot(): TaskRuntimeProjection {\n\t\tthis.refresh();\n\t\treturn cloneProjection(this.state);\n\t}\n\n\t/** Read-only retained-record counts and remaining lifetime slots for orchestration admission. */\n\tgetProjectionCapacity(): OrchestrationProjectionCapacity {\n\t\tthis.refresh();\n\t\treturn projectionCapacity(this.state);\n\t}\n\n\t/**\n\t * Preflight every record needed by a multi-event operation before its first append. Callers use\n\t * this to reserve implementation and mandatory-verifier task/attempt pairs atomically.\n\t */\n\tassertProjectionHeadroom(required: OrchestrationProjectionHeadroomRequest): OrchestrationProjectionCapacity {\n\t\tthis.refresh();\n\t\tconst capacity = projectionCapacity(this.state);\n\t\tconst agents = requestedProjectionSlots(required.agents, \"Agent binding\");\n\t\tconst objectives = requestedProjectionSlots(required.objectives, \"Objective\");\n\t\tconst tasks = requestedProjectionSlots(required.tasks, \"Task\");\n\t\tconst attempts = requestedProjectionSlots(required.attempts, \"Attempt\");\n\t\tconst checkpoints = requestedProjectionSlots(required.checkpoints, \"Checkpoint\");\n\t\tconst approvals = requestedProjectionSlots(required.approvals, \"Approval\");\n\t\tconst notifications = requestedProjectionSlots(required.notifications, \"Notification\");\n\t\tconst evidence = requestedProjectionSlots(required.evidence, \"Evidence\");\n\t\tif (agents > capacity.headroom.agents) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Orchestration agent binding limit (${capacity.limits.agents}) lacks ${agents} required slots.`,\n\t\t\t);\n\t\t}\n\t\tif (tasks > capacity.headroom.tasks) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Orchestration task limit (${capacity.limits.tasks}) lacks ${tasks} required slots.`,\n\t\t\t);\n\t\t}\n\t\tif (attempts > capacity.headroom.attempts) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Orchestration attempt limit (${capacity.limits.attempts}) lacks ${attempts} required slots.`,\n\t\t\t);\n\t\t}\n\t\tif (objectives > capacity.headroom.objectives) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Orchestration objective limit (${capacity.limits.objectives}) lacks ${objectives} required slots.`,\n\t\t\t);\n\t\t}\n\t\tif (checkpoints > capacity.headroom.checkpoints) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Orchestration checkpoint limit (${capacity.limits.checkpoints}) lacks ${checkpoints} required slots.`,\n\t\t\t);\n\t\t}\n\t\tif (approvals > capacity.headroom.approvals) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Orchestration approval limit (${capacity.limits.approvals}) lacks ${approvals} required slots.`,\n\t\t\t);\n\t\t}\n\t\tif (notifications > capacity.headroom.notifications) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Orchestration notification limit (${capacity.limits.notifications}) lacks ${notifications} required slots.`,\n\t\t\t);\n\t\t}\n\t\tif (evidence > capacity.headroom.evidence) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Orchestration evidence limit (${capacity.limits.evidence}) lacks ${evidence} required slots.`,\n\t\t\t);\n\t\t}\n\t\treturn capacity;\n\t}\n\n\t/**\n\t * Preflight the idempotent evidence batch for one objective before synchronizing any member.\n\t * The objective may be absent when its creation is part of the same compound operation.\n\t */\n\tassertObjectiveEvidenceHeadroom(objectiveId: string, evidenceIds: readonly string[]): number {\n\t\tthis.refresh();\n\t\tassertBoundedIdentifierList(evidenceIds, MAX_ORCHESTRATION_OBJECTIVE_EVIDENCE, \"Objective evidence ids\");\n\t\tconst objective = this.state.objectives[objectiveId];\n\t\tconst existingIds = new Set(objective?.evidence.map((evidence) => evidence.evidenceId) ?? []);\n\t\tlet required = 0;\n\t\tfor (const evidenceId of evidenceIds) {\n\t\t\tif (!existingIds.has(evidenceId)) required += 1;\n\t\t}\n\t\tif ((objective?.evidence.length ?? 0) + required > MAX_ORCHESTRATION_OBJECTIVE_EVIDENCE) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Orchestration objective evidence limit (${MAX_ORCHESTRATION_OBJECTIVE_EVIDENCE}) lacks ${required} required slots.`,\n\t\t\t);\n\t\t}\n\t\tconst capacity = projectionCapacity(this.state);\n\t\tif (required > capacity.headroom.evidence) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Orchestration evidence limit (${capacity.limits.evidence}) lacks ${required} required slots.`,\n\t\t\t);\n\t\t}\n\t\treturn required;\n\t}\n\n\t/**\n\t * Preflight the final retained objective record for a multi-event owner synchronization. This\n\t * validates the objective metadata and the complete idempotently merged evidence batch before\n\t * ensureObjective can append the first event, so a later byte rejection cannot leave a prefix.\n\t */\n\tassertObjectiveSynchronizationHeadroom(\n\t\tinput: CreateObjectiveInput & { objectiveId: string },\n\t\tevidence: readonly EvidenceContract[],\n\t): void {\n\t\tthis.refresh();\n\t\tconst objectiveId = dispatchIdentifier(input.objectiveId, \"objective.objectiveId\");\n\t\tconst current = this.state.objectives[objectiveId];\n\t\tconst requiredEvidence = this.assertObjectiveEvidenceHeadroom(\n\t\t\tobjectiveId,\n\t\t\tevidence.map((item) => item.evidenceId),\n\t\t);\n\t\tthis.assertProjectionHeadroom({ objectives: current ? 0 : 1, evidence: requiredEvidence });\n\t\tassertRiskBudget(input.riskBudget, \"objective.riskBudget\");\n\t\tconst acceptanceCriteria = structuredClone(input.acceptanceCriteria ?? []);\n\t\tassertAcceptanceCriteria(acceptanceCriteria);\n\t\tconst title = input.title.trim();\n\t\tconst description = input.description.trim();\n\t\tif (!title || !description) throw new DurableTaskRuntimeError(\"Objective title and description are required.\");\n\t\tconst now = this.nowIso();\n\t\tconst objective: ObjectiveContract = current\n\t\t\t? {\n\t\t\t\t\t...current.objective,\n\t\t\t\t\ttitle,\n\t\t\t\t\tdescription,\n\t\t\t\t\tconstraints: [...(input.constraints ?? [])],\n\t\t\t\t\tacceptanceCriteria,\n\t\t\t\t\triskBudget: { ...(input.riskBudget ?? {}) },\n\t\t\t\t\tupdatedAt: now,\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\t\t\t\tobjectiveId,\n\t\t\t\t\ttitle,\n\t\t\t\t\tdescription,\n\t\t\t\t\tstatus: \"active\",\n\t\t\t\t\tconstraints: [...(input.constraints ?? [])],\n\t\t\t\t\tacceptanceCriteria,\n\t\t\t\t\triskBudget: { ...(input.riskBudget ?? {}) },\n\t\t\t\t\tcreatedAt: now,\n\t\t\t\t\tupdatedAt: now,\n\t\t\t\t};\n\t\tif (current) {\n\t\t\tassertReferencedAcceptanceCriteriaRetained(this.state.tasks, current, acceptanceCriteria);\n\t\t}\n\n\t\tconst mergedEvidence = current?.evidence.map((item) => structuredClone(item)) ?? [];\n\t\tconst evidenceById = new Map(mergedEvidence.map((item) => [item.evidenceId, item]));\n\t\tfor (const item of evidence) {\n\t\t\tconst evidenceId = dispatchIdentifier(item.evidenceId, \"objective evidence.evidenceId\");\n\t\t\tif (!item.summary.trim() || !item.createdAt.trim()) {\n\t\t\t\tthrow new DurableTaskRuntimeError(\"Objective evidence requires an id, summary, and creation time.\");\n\t\t\t}\n\t\t\tif (item.criterionId && !objective.acceptanceCriteria.some((criterion) => criterion.id === item.criterionId)) {\n\t\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t\t`Objective evidence references unknown acceptance criterion '${item.criterionId}'.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst existing = evidenceById.get(evidenceId);\n\t\t\tif (existing) {\n\t\t\t\tif (!isDeepStrictEqual(existing, item)) {\n\t\t\t\t\tthrow new DurableTaskRuntimeError(`Objective evidence '${evidenceId}' has conflicting content.`);\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst retained = structuredClone(item);\n\t\t\tmergedEvidence.push(retained);\n\t\t\tevidenceById.set(evidenceId, retained);\n\t\t}\n\t\tassertProjectionRecordReplacementWithinLimits(this.state, \"objectives\", objectiveId, {\n\t\t\tobjective,\n\t\t\ttaskIds: current?.taskIds ?? [],\n\t\t\tevidence: mergedEvidence,\n\t\t});\n\t}\n\n\tregisterAgent(input: RegisterAgentInput): AgentBindingContract {\n\t\tthis.refresh();\n\t\tconst now = this.nowIso();\n\t\tlet identity: AgentIdentityContract;\n\t\ttry {\n\t\t\tidentity = createAgentIdentity(input.agentId ?? `agent-${this.createId()}`, input.resumeContext);\n\t\t} catch (error) {\n\t\t\tthrow new DurableTaskRuntimeError(error instanceof Error ? error.message : String(error));\n\t\t}\n\t\tconst parentAgentId = input.parentAgentId?.trim();\n\t\tconst parent = parentAgentId ? this.state.agents[parentAgentId] : undefined;\n\t\tif (parentAgentId && !parent) {\n\t\t\tthrow new DurableTaskRuntimeError(`Unknown parent agent '${parentAgentId}'.`);\n\t\t}\n\t\tif (parent?.status === \"retired\") {\n\t\t\tthrow new DurableTaskRuntimeError(`Parent agent '${parentAgentId}' is retired.`);\n\t\t}\n\t\tconst depth = parent ? parent.depth + 1 : 0;\n\t\tif (!Number.isSafeInteger(depth)) {\n\t\t\tthrow new DurableTaskRuntimeError(\"Agent lineage depth exceeds the durable numeric range.\");\n\t\t}\n\t\tconst agent: AgentBindingContract = {\n\t\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\t\t...identity,\n\t\t\t...(parent ? { parentAgentId: parent.agentId } : {}),\n\t\t\trootAgentId: parent?.rootAgentId ?? identity.agentId,\n\t\t\tdepth,\n\t\t\trole: input.role,\n\t\t\tstatus: \"registered\",\n\t\t\tcreatedAt: now,\n\t\t\tupdatedAt: now,\n\t\t};\n\t\tif (this.state.agents[agent.agentId])\n\t\t\tthrow new DurableTaskRuntimeError(`Agent '${agent.agentId}' already exists.`);\n\t\tassertRecordHasCapacity(this.state.agents, MAX_ORCHESTRATION_AGENT_BINDINGS, \"agent binding\");\n\t\tthis.commit({\n\t\t\ttype: \"agent.registered\",\n\t\t\taggregateId: agent.agentId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `agent-registered:${agent.agentId}`,\n\t\t\tpayload: toJsonObject({ agent }),\n\t\t});\n\t\treturn structuredClone(agent);\n\t}\n\n\t/**\n\t * Retire one idle persistent identity without deleting its binding, lineage, transcript pointers,\n\t * or attempt history. A repeated call is inert and returns the durable retired binding.\n\t */\n\tretireAgent(agentId: string): AgentBindingContract {\n\t\tthis.refresh();\n\t\tconst normalizedAgentId = dispatchIdentifier(agentId.trim(), \"agentId\");\n\t\tconst agent = assertAgentRetirementEligible(this.state, normalizedAgentId);\n\t\tif (agent.status === \"retired\") return structuredClone(agent);\n\t\tthis.commit({\n\t\t\ttype: \"agent.retired\",\n\t\t\taggregateId: normalizedAgentId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `agent-retired:${normalizedAgentId}`,\n\t\t\tpayload: toJsonObject({ agentId: normalizedAgentId }),\n\t\t});\n\t\treturn structuredClone(this.state.agents[normalizedAgentId]!);\n\t}\n\n\tcreateObjective(input: CreateObjectiveInput): ObjectiveContract {\n\t\tthis.refresh();\n\t\tassertRiskBudget(input.riskBudget, \"objective.riskBudget\");\n\t\tconst now = this.nowIso();\n\t\tconst objective: ObjectiveContract = {\n\t\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\t\tobjectiveId: input.objectiveId ?? `objective-${this.createId()}`,\n\t\t\ttitle: input.title.trim(),\n\t\t\tdescription: input.description.trim(),\n\t\t\tstatus: \"active\",\n\t\t\tconstraints: [...(input.constraints ?? [])],\n\t\t\tacceptanceCriteria: structuredClone(input.acceptanceCriteria ?? []),\n\t\t\triskBudget: { ...(input.riskBudget ?? {}) },\n\t\t\tcreatedAt: now,\n\t\t\tupdatedAt: now,\n\t\t};\n\t\tif (!objective.title || !objective.description)\n\t\t\tthrow new DurableTaskRuntimeError(\"Objective title and description are required.\");\n\t\tassertAcceptanceCriteria(objective.acceptanceCriteria);\n\t\tif (this.state.objectives[objective.objectiveId]) {\n\t\t\tthrow new DurableTaskRuntimeError(`Objective '${objective.objectiveId}' already exists.`);\n\t\t}\n\t\tassertRecordHasCapacity(this.state.objectives, MAX_ORCHESTRATION_OBJECTIVES, \"objective\");\n\t\tthis.commit({\n\t\t\ttype: \"objective.created\",\n\t\t\taggregateId: objective.objectiveId,\n\t\t\tactor: \"kernel\",\n\t\t\tidempotencyKey: `objective-created:${objective.objectiveId}`,\n\t\t\tpayload: toJsonObject({ objective }),\n\t\t});\n\t\treturn structuredClone(objective);\n\t}\n\n\t/** Create or synchronize owner-authored objective metadata without disturbing lifecycle or task state. */\n\tensureObjective(input: CreateObjectiveInput & { objectiveId: string }): ObjectiveContract {\n\t\tthis.refresh();\n\t\tconst current = this.state.objectives[input.objectiveId];\n\t\tif (!current) return this.createObjective(input);\n\t\tassertRiskBudget(input.riskBudget, \"objective.riskBudget\");\n\t\tconst acceptanceCriteria = structuredClone(input.acceptanceCriteria ?? []);\n\t\tassertAcceptanceCriteria(acceptanceCriteria);\n\t\tconst nextFields = {\n\t\t\ttitle: input.title.trim(),\n\t\t\tdescription: input.description.trim(),\n\t\t\tconstraints: [...(input.constraints ?? [])],\n\t\t\tacceptanceCriteria,\n\t\t\triskBudget: { ...(input.riskBudget ?? {}) },\n\t\t};\n\t\tif (!nextFields.title || !nextFields.description) {\n\t\t\tthrow new DurableTaskRuntimeError(\"Objective title and description are required.\");\n\t\t}\n\t\tconst currentFields = {\n\t\t\ttitle: current.objective.title,\n\t\t\tdescription: current.objective.description,\n\t\t\tconstraints: current.objective.constraints,\n\t\t\tacceptanceCriteria: current.objective.acceptanceCriteria,\n\t\t\triskBudget: current.objective.riskBudget,\n\t\t};\n\t\tif (isDeepStrictEqual(currentFields, nextFields)) return structuredClone(current.objective);\n\n\t\tassertReferencedAcceptanceCriteriaRetained(this.state.tasks, current, acceptanceCriteria);\n\t\tconst objective: ObjectiveContract = {\n\t\t\t...current.objective,\n\t\t\t...nextFields,\n\t\t\tupdatedAt: this.nowIso(),\n\t\t};\n\t\tthis.commit({\n\t\t\ttype: \"objective.updated\",\n\t\t\taggregateId: objective.objectiveId,\n\t\t\tactor: \"kernel\",\n\t\t\tpayload: toJsonObject({ objective }),\n\t\t});\n\t\treturn structuredClone(objective);\n\t}\n\n\trecordObjectiveEvidence(objectiveId: string, evidence: EvidenceContract): EvidenceContract {\n\t\tthis.refresh();\n\t\tconst objective = this.requireObjective(objectiveId);\n\t\tconst existing = objective.evidence.find((candidate) => candidate.evidenceId === evidence.evidenceId);\n\t\tif (existing) {\n\t\t\tif (!isDeepStrictEqual(existing, evidence)) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Objective evidence '${evidence.evidenceId}' has conflicting content.`);\n\t\t\t}\n\t\t\treturn structuredClone(existing);\n\t\t}\n\t\tif (!evidence.evidenceId.trim() || !evidence.summary.trim() || !evidence.createdAt.trim()) {\n\t\t\tthrow new DurableTaskRuntimeError(\"Objective evidence requires an id, summary, and creation time.\");\n\t\t}\n\t\tif (\n\t\t\tevidence.criterionId &&\n\t\t\t!objective.objective.acceptanceCriteria.some((criterion) => criterion.id === evidence.criterionId)\n\t\t) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Objective evidence references unknown acceptance criterion '${evidence.criterionId}'.`,\n\t\t\t);\n\t\t}\n\t\tassertObjectiveEvidenceHasCapacity(this.state.objectives, objective);\n\t\tthis.commit({\n\t\t\ttype: \"objective.evidence_recorded\",\n\t\t\taggregateId: objectiveId,\n\t\t\tactor: \"kernel\",\n\t\t\tidempotencyKey: `objective-evidence-recorded:${objectiveId}:${evidence.evidenceId}`,\n\t\t\tpayload: toJsonObject({ evidence }),\n\t\t});\n\t\treturn structuredClone(evidence);\n\t}\n\n\tcreateTask(input: CreateTaskInput): TaskContract {\n\t\tthis.refresh();\n\t\tconst { task, objectiveState } = this.buildTask(input);\n\t\tassertRecordHasCapacity(this.state.tasks, MAX_ORCHESTRATION_TASKS, \"task\");\n\t\tassertIdentifierListHasCapacity(objectiveState.taskIds, MAX_ORCHESTRATION_TASKS, \"objective task list\");\n\t\tthis.commit({\n\t\t\ttype: \"task.created\",\n\t\t\taggregateId: task.objectiveId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `task-created:${task.taskId}`,\n\t\t\tpayload: toJsonObject({ task }),\n\t\t});\n\t\treturn structuredClone(this.state.tasks[task.taskId]!.task);\n\t}\n\n\t/** Atomically create a new task and its first queued attempt in one durable transition. */\n\tprepareTaskAttempt(\n\t\tinput: CreateTaskInput,\n\t\tdispatch: OrchestrationDispatchRequest,\n\t\tgrantId?: string,\n\t): PreparedTaskAttempt {\n\t\tthis.refresh();\n\t\tconst { task, objectiveState } = this.buildTask(input);\n\t\tconst taskState: TaskRuntimeState = { task, attemptIds: [] };\n\t\tconst normalizedDispatch = this.normalizeDispatchForTask(taskState, dispatch);\n\t\tthis.assertTaskAttemptBudget(taskState, objectiveState.objective);\n\t\tassertRecordHasCapacity(this.state.tasks, MAX_ORCHESTRATION_TASKS, \"task\");\n\t\tassertIdentifierListHasCapacity(objectiveState.taskIds, MAX_ORCHESTRATION_TASKS, \"objective task list\");\n\t\tassertRecordHasCapacity(this.state.attempts, MAX_ORCHESTRATION_ATTEMPTS, \"attempt\");\n\t\tconst attemptId = `attempt-${this.createId()}`;\n\t\tthis.commit({\n\t\t\ttype: \"task.attempt_prepared\",\n\t\t\taggregateId: task.taskId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `task-attempt-prepared:${task.taskId}:${attemptId}`,\n\t\t\tpayload: toJsonObject({\n\t\t\t\ttask,\n\t\t\t\tattemptId,\n\t\t\t\ttaskId: task.taskId,\n\t\t\t\tdispatch: normalizedDispatch,\n\t\t\t\t...(grantId ? { grantId } : {}),\n\t\t\t}),\n\t\t});\n\t\treturn {\n\t\t\ttask: structuredClone(this.state.tasks[task.taskId]!.task),\n\t\t\tattempt: structuredClone(this.state.attempts[attemptId]!),\n\t\t};\n\t}\n\n\tqueueAttempt(taskId: string, dispatch: OrchestrationDispatchRequest, grantId?: string): AttemptRuntimeState {\n\t\tthis.refresh();\n\t\tconst task = this.requireDispatchableTask(taskId);\n\t\tconst pendingApproval = this.pendingApprovalForTask(taskId);\n\t\tif (pendingApproval) {\n\t\t\tthrow new DurableTaskRuntimeError(\n\t\t\t\t`Task '${taskId}' is awaiting approval '${pendingApproval.request.approvalId}'.`,\n\t\t\t);\n\t\t}\n\t\tconst normalizedDispatch = this.normalizeDispatchForTask(task, dispatch);\n\t\tthis.assertTaskAttemptBudget(task, this.state.objectives[task.task.objectiveId]!.objective);\n\t\tassertRecordHasCapacity(this.state.attempts, MAX_ORCHESTRATION_ATTEMPTS, \"attempt\");\n\t\tassertIdentifierListHasCapacity(task.attemptIds, MAX_ORCHESTRATION_ATTEMPTS, \"task attempt list\");\n\t\tconst attemptId = `attempt-${this.createId()}`;\n\t\tthis.commit({\n\t\t\ttype: \"attempt.queued\",\n\t\t\taggregateId: taskId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `attempt-queued:${attemptId}`,\n\t\t\tpayload: toJsonObject({ attemptId, taskId, dispatch: normalizedDispatch, ...(grantId ? { grantId } : {}) }),\n\t\t});\n\t\treturn structuredClone(this.state.attempts[attemptId]!);\n\t}\n\n\t/** Read-only controller seam for deciding whether one durable queued or suspended attempt may run. */\n\tgetAttemptDispatchReadiness(attemptId: string): AttemptDispatchReadiness {\n\t\tthis.refresh();\n\t\treturn structuredClone(attemptDispatchReadiness(this.state, this.requireAttempt(attemptId)));\n\t}\n\n\tbindAttemptGrant(attemptId: string, grant: ExecutionGrant): AttemptRuntimeState {\n\t\tthis.refresh();\n\t\tconst normalizedGrant = executionGrantFromValue(grant, \"grant\");\n\t\tconst attempt = assertAttemptGrantTransition(this.state, attemptId, attemptId, normalizedGrant);\n\t\tif (attempt.grantId === normalizedGrant.grantId) {\n\t\t\tif (attempt.grant && !isDeepStrictEqual(attempt.grant, normalizedGrant)) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' grant has conflicting content.`);\n\t\t\t}\n\t\t\treturn structuredClone(attempt);\n\t\t}\n\t\tif (attempt.grantId) throw new DurableTaskRuntimeError(`Attempt '${attemptId}' already has a different grant.`);\n\t\tthis.commit({\n\t\t\ttype: \"attempt.grant_bound\",\n\t\t\taggregateId: attemptId,\n\t\t\tactor: \"policy\",\n\t\t\tidempotencyKey: `attempt-grant-bound:${attemptId}:${normalizedGrant.grantId}`,\n\t\t\tpayload: toJsonObject({ attemptId, grant: normalizedGrant }),\n\t\t});\n\t\treturn structuredClone(this.state.attempts[attemptId]!);\n\t}\n\n\tleaseAttempt(attemptId: string, ownerId: string, ttlMs: number, agentId?: string): AttemptLease {\n\t\tthis.refresh();\n\t\tconst attempt = this.requireAttempt(attemptId);\n\t\tconst lease = this.issueLease(attempt, ownerId, ttlMs);\n\t\tassertAttemptLeaseTransition(this.state, attemptId, lease, agentId, this.nowIso());\n\t\tthis.commit({\n\t\t\ttype: \"attempt.leased\",\n\t\t\taggregateId: attemptId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `attempt-leased:${lease.leaseId}`,\n\t\t\tpayload: toJsonObject({ lease, ...(agentId ? { agentId } : {}) }),\n\t\t});\n\t\treturn structuredClone(lease);\n\t}\n\n\tstartAttempt(attemptId: string, leaseId: string, fencingToken: number): AttemptRuntimeState {\n\t\tthis.refresh();\n\t\tassertAttemptStartTransition(this.state, attemptId, attemptId, leaseId, fencingToken, this.nowIso());\n\t\tthis.commit({\n\t\t\ttype: \"attempt.started\",\n\t\t\taggregateId: attemptId,\n\t\t\tactor: \"worker\",\n\t\t\tidempotencyKey: `attempt-started:${attemptId}:${fencingToken}`,\n\t\t\tpayload: toJsonObject({ attemptId, leaseId, fencingToken }),\n\t\t});\n\t\treturn structuredClone(this.state.attempts[attemptId]!);\n\t}\n\n\tcheckpointAttempt(args: {\n\t\tattemptId: string;\n\t\tleaseId: string;\n\t\tfencingToken: number;\n\t\tsummary: string;\n\t\tartifactIds?: readonly string[];\n\t\tevidenceIds?: readonly string[];\n\t\tusage?: AttemptCheckpoint[\"usage\"];\n\t}): AttemptCheckpoint {\n\t\tthis.refresh();\n\t\tconst attempt = this.requireLiveLease(args.attemptId, args.leaseId, args.fencingToken);\n\t\tif (attempt.status !== \"running\")\n\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${args.attemptId}' is not running.`);\n\t\tconst summary = checkpointSummary(args.summary, \"checkpoint.summary\");\n\t\tconst artifactIds = dispatchIdentifierArray(args.artifactIds ?? [], \"checkpoint.artifactIds\");\n\t\tconst evidenceIds = dispatchIdentifierArray(args.evidenceIds ?? [], \"checkpoint.evidenceIds\");\n\t\tassertIdentifierListHasCapacity(attempt.checkpointIds, MAX_ORCHESTRATION_CHECKPOINTS, \"attempt checkpoint list\");\n\t\tassertRecordHasCapacity(this.state.checkpoints, MAX_ORCHESTRATION_CHECKPOINTS, \"checkpoint\");\n\t\tconst checkpoint: AttemptCheckpoint = {\n\t\t\tcheckpointId: `checkpoint-${this.createId()}`,\n\t\t\tattemptId: args.attemptId,\n\t\t\tfencingToken: args.fencingToken,\n\t\t\tsummary,\n\t\t\tartifactIds,\n\t\t\tevidenceIds,\n\t\t\t...(args.usage ? { usage: usageFromPayload(args.usage, \"checkpoint.usage\") } : {}),\n\t\t\tcreatedAt: this.nowIso(),\n\t\t};\n\t\tassertAttemptCheckpointTransition(this.state, args.attemptId, checkpoint, args.leaseId, this.nowIso());\n\t\tthis.commit({\n\t\t\ttype: \"attempt.checkpointed\",\n\t\t\taggregateId: args.attemptId,\n\t\t\tactor: \"worker\",\n\t\t\tidempotencyKey: `attempt-checkpointed:${checkpoint.checkpointId}`,\n\t\t\tpayload: toJsonObject({ checkpoint, leaseId: args.leaseId }),\n\t\t});\n\t\treturn structuredClone(checkpoint);\n\t}\n\n\tfinishAttempt(result: WorkerResultContract): AttemptRuntimeState {\n\t\tthis.refresh();\n\t\tassertAttemptFinishTransition(this.state, result.attemptId, result, this.nowIso());\n\t\tthis.commit({\n\t\t\ttype: \"attempt.finished\",\n\t\t\taggregateId: result.attemptId,\n\t\t\tactor: \"worker\",\n\t\t\tidempotencyKey: `attempt-finished:${result.resultId}`,\n\t\t\tpayload: toJsonObject({ result }),\n\t\t});\n\t\treturn structuredClone(this.state.attempts[result.attemptId]!);\n\t}\n\n\tfinishVerification(args: VerificationTransitionInput): TaskRuntimeState {\n\t\tthis.refresh();\n\t\tassertVerificationTransition(this.state, args.taskId, args);\n\t\tthis.commit({\n\t\t\ttype: \"task.verification_finished\",\n\t\t\taggregateId: args.taskId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `task-verification-finished:${args.taskId}:${args.verifierAttemptId}`,\n\t\t\tpayload: toJsonObject({ ...args, reasonCode: args.reasonCode.trim() }),\n\t\t});\n\t\treturn structuredClone(this.state.tasks[args.taskId]!);\n\t}\n\n\tcancelAttempt(attemptId: string, reasonCode: string): AttemptRuntimeState {\n\t\tthis.refresh();\n\t\tconst attempt = this.requireAttempt(attemptId);\n\t\tif (terminalAttemptStatus(attempt.status)) return structuredClone(attempt);\n\t\tif (!reasonCode.trim()) throw new DurableTaskRuntimeError(\"Cancellation reason is required.\");\n\t\tthis.commit({\n\t\t\ttype: \"attempt.cancelled\",\n\t\t\taggregateId: attemptId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `attempt-cancelled:${attemptId}`,\n\t\t\tpayload: toJsonObject({ attemptId, reasonCode: reasonCode.trim() }),\n\t\t});\n\t\treturn structuredClone(this.state.attempts[attemptId]!);\n\t}\n\n\t/**\n\t * The only runtime suspension transition. Callers must present the exact current owner and lease\n\t * fence; liveness/restart policy stays outside this deterministic runtime.\n\t */\n\tsuspendBoundAttempt(args: {\n\t\tattemptId: string;\n\t\townerId: string;\n\t\tleaseId: string;\n\t\tfencingToken: number;\n\t\treasonCode: string;\n\t\tretry?: AttemptRetryState;\n\t}): AttemptRuntimeState {\n\t\tthis.refresh();\n\t\tconst attempt = this.requireAttempt(args.attemptId);\n\t\tif (!attempt.agentId || !attempt.lease || ![\"leased\", \"running\"].includes(attempt.status)) {\n\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${args.attemptId}' is not a live agent-bound attempt.`);\n\t\t}\n\t\tif (attempt.lease.ownerId !== args.ownerId) {\n\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${args.attemptId}' is not owned by '${args.ownerId}'.`);\n\t\t}\n\t\tif (attempt.lease.leaseId !== args.leaseId || attempt.lease.fencingToken !== args.fencingToken) {\n\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${args.attemptId}' lease or fencing token is stale.`);\n\t\t}\n\t\tif (!args.reasonCode.trim()) throw new DurableTaskRuntimeError(\"Suspension reason is required.\");\n\t\tconst retry = args.retry ? retryStateFromValue(args.retry, \"attempt.suspended.retry\") : undefined;\n\t\tif (retry) {\n\t\t\tif (retry.retriesUsed !== (attempt.retry?.retriesUsed ?? 0) + 1) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${args.attemptId}' retry count is not monotonic.`);\n\t\t\t}\n\t\t\tif (Date.parse(retry.notBefore) <= this.now()) {\n\t\t\t\tthrow new DurableTaskRuntimeError(\"Retry not-before deadline must be in the future.\");\n\t\t\t}\n\t\t}\n\t\tthis.commit({\n\t\t\ttype: \"attempt.suspended\",\n\t\t\taggregateId: args.attemptId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `attempt-suspended:${args.attemptId}:${args.leaseId}:${args.fencingToken}`,\n\t\t\tpayload: toJsonObject({\n\t\t\t\tattemptId: args.attemptId,\n\t\t\t\tleaseId: args.leaseId,\n\t\t\t\tfencingToken: args.fencingToken,\n\t\t\t\treasonCode: args.reasonCode.trim(),\n\t\t\t\t...(retry ? { retry } : {}),\n\t\t\t}),\n\t\t});\n\t\treturn structuredClone(this.state.attempts[args.attemptId]!);\n\t}\n\n\tfailTask(taskId: string, reasonCode: string): TaskContract {\n\t\tthis.refresh();\n\t\tconst task = this.state.tasks[taskId];\n\t\tif (!task) throw new DurableTaskRuntimeError(`Unknown task '${taskId}'.`);\n\t\tif ([\"completed\", \"failed\", \"cancelled\"].includes(task.task.status)) return structuredClone(task.task);\n\t\tassertTaskFailureTransition(this.state, taskId, taskId, reasonCode);\n\t\tthis.commit({\n\t\t\ttype: \"task.failed\",\n\t\t\taggregateId: taskId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `task-failed:${taskId}:${reasonCode.trim()}`,\n\t\t\tpayload: toJsonObject({ taskId, reasonCode: reasonCode.trim() }),\n\t\t});\n\t\treturn structuredClone(this.state.tasks[taskId]!.task);\n\t}\n\n\t/**\n\t * Recover unbound in-process work after a process restart. A completion has no resumable model\n\t * transcript, so its old lease is fenced and the task becomes dispatchable for a fresh attempt.\n\t * Agent-bound attempts are intentionally excluded: those must wake the same logical agent.\n\t */\n\trecoverInterruptedUnboundAttempts(shouldRecover: (attempt: AttemptRuntimeState) => boolean = () => true): string[] {\n\t\tthis.refresh();\n\t\tconst recovered: string[] = [];\n\t\tfor (const attempt of Object.values(this.state.attempts)) {\n\t\t\tif (\n\t\t\t\t(attempt.status !== \"leased\" && attempt.status !== \"running\") ||\n\t\t\t\tattempt.agentId ||\n\t\t\t\t!shouldRecover(attempt)\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis.commit({\n\t\t\t\ttype: \"attempt.lease_expired\",\n\t\t\t\taggregateId: attempt.attemptId,\n\t\t\t\tactor: \"runtime\",\n\t\t\t\tidempotencyKey: `attempt-process-interrupted:${attempt.attemptId}:${attempt.lease?.leaseId ?? \"none\"}`,\n\t\t\t\tpayload: toJsonObject({\n\t\t\t\t\tattemptId: attempt.attemptId,\n\t\t\t\t\t...(attempt.lease ? { leaseId: attempt.lease.leaseId, fencingToken: attempt.lease.fencingToken } : {}),\n\t\t\t\t\treasonCode: \"worker_process_interrupted\",\n\t\t\t\t}),\n\t\t\t});\n\t\t\trecovered.push(attempt.attemptId);\n\t\t}\n\t\treturn recovered;\n\t}\n\n\texpireLeases(at = this.now()): string[] {\n\t\tthis.refresh();\n\t\tconst expired: string[] = [];\n\t\tfor (const attempt of Object.values(this.state.attempts)) {\n\t\t\tif ((attempt.status !== \"leased\" && attempt.status !== \"running\") || !attempt.lease) continue;\n\t\t\tif (Date.parse(attempt.lease.expiresAt) > at) continue;\n\t\t\tthis.commit({\n\t\t\t\ttype: attempt.agentId ? \"attempt.suspended\" : \"attempt.lease_expired\",\n\t\t\t\taggregateId: attempt.attemptId,\n\t\t\t\tactor: \"runtime\",\n\t\t\t\tidempotencyKey: `attempt-lease-expired:${attempt.lease.leaseId}`,\n\t\t\t\tpayload: toJsonObject({\n\t\t\t\t\tattemptId: attempt.attemptId,\n\t\t\t\t\tleaseId: attempt.lease.leaseId,\n\t\t\t\t\tfencingToken: attempt.lease.fencingToken,\n\t\t\t\t}),\n\t\t\t});\n\t\t\texpired.push(attempt.attemptId);\n\t\t}\n\t\treturn expired;\n\t}\n\n\trequestAgentResume(agentId: string, attemptId: string): AgentBindingContract {\n\t\tthis.refresh();\n\t\tconst agent = this.state.agents[agentId];\n\t\tif (!agent) throw new DurableTaskRuntimeError(`Unknown agent '${agentId}'.`);\n\t\tassertAgentNotRetired(agent, \"request resume\");\n\t\tconst attempt = this.requireAttempt(attemptId);\n\t\tif (attempt.status !== \"suspended\" || attempt.agentId !== agentId || agent.activeAttemptId !== attemptId) {\n\t\t\tthrow new DurableTaskRuntimeError(`Agent '${agentId}' cannot resume suspended attempt '${attemptId}'.`);\n\t\t}\n\t\tthis.assertRetryBackoffElapsed(attempt);\n\t\tthis.requireActiveObjectiveForAttempt(attempt);\n\t\tif (agent.status === \"resuming\") return structuredClone(agent);\n\t\tif (agent.status !== \"suspended\") throw new DurableTaskRuntimeError(`Agent '${agentId}' is not suspended.`);\n\t\tthis.commit({\n\t\t\ttype: \"agent.resume_requested\",\n\t\t\taggregateId: agentId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `agent-resume-requested:${agentId}:${this.state.lastOrdinal}`,\n\t\t\tpayload: toJsonObject({ agentId, attemptId }),\n\t\t});\n\t\treturn structuredClone(this.state.agents[agentId]!);\n\t}\n\n\t/** Read-only guard used before changing agent state; resumeAttempt repeats it authoritatively. */\n\tassertAttemptReadyForResume(attemptId: string): void {\n\t\tthis.refresh();\n\t\tthis.assertRetryBackoffElapsed(this.requireAttempt(attemptId));\n\t}\n\n\tresumeAttempt(attemptId: string, agentId: string, ttlMs: number, ownerId = agentId): AttemptLease {\n\t\tthis.refresh();\n\t\tconst attempt = this.requireAttempt(attemptId);\n\t\tconst agent = this.state.agents[agentId];\n\t\tif (attempt.status !== \"suspended\" || attempt.agentId !== agentId) {\n\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' is not suspended for agent '${agentId}'.`);\n\t\t}\n\t\tif (!agent || agent.status !== \"resuming\")\n\t\t\tthrow new DurableTaskRuntimeError(`Agent '${agentId}' is not resuming.`);\n\t\tthis.assertRetryBackoffElapsed(attempt);\n\t\tthis.requireActiveObjectiveForAttempt(attempt);\n\t\tconst lease = this.issueLease(attempt, ownerId, ttlMs);\n\t\tthis.commit({\n\t\t\ttype: \"attempt.resumed\",\n\t\t\taggregateId: attemptId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `attempt-resumed:${lease.leaseId}`,\n\t\t\tpayload: toJsonObject({ agentId, lease }),\n\t\t});\n\t\treturn structuredClone(lease);\n\t}\n\n\tpauseObjective(objectiveId: string): void {\n\t\tthis.transitionObjective(objectiveId, \"objective.paused\", \"paused\");\n\t}\n\n\tresumeObjective(objectiveId: string): void {\n\t\tthis.transitionObjective(objectiveId, \"objective.resumed\", \"active\");\n\t}\n\n\tcancelObjective(objectiveId: string): void {\n\t\tthis.transitionObjective(objectiveId, \"objective.cancelled\", \"cancelled\");\n\t}\n\n\tcompleteObjective(objectiveId: string): void {\n\t\tthis.transitionObjective(objectiveId, \"objective.completed\", \"completed\", {\n\t\t\tcompletionPolicy: \"task_evidence\",\n\t\t});\n\t}\n\n\tcompleteObjectiveFromOwner(objectiveId: string, acceptanceOverride: boolean): void {\n\t\tthis.refresh();\n\t\tconst objective = this.requireObjective(objectiveId);\n\t\tif (objective.objective.status === \"completed\") return;\n\t\tif (objective.objective.status === \"cancelled\") {\n\t\t\tthrow new DurableTaskRuntimeError(`Objective '${objectiveId}' is terminal.`);\n\t\t}\n\t\tthis.transitionObjective(objectiveId, \"objective.completed\", \"completed\", {\n\t\t\tcompletionPolicy: acceptanceOverride ? \"owner_override\" : \"owner_evidence\",\n\t\t});\n\t}\n\n\trequestApproval(approval: ApprovalRequestContract): ApprovalRuntimeState {\n\t\tthis.refresh();\n\t\tconst normalized = approvalFromPayload(toJsonObject({ approval }));\n\t\tconst existing = this.state.approvals[normalized.approvalId];\n\t\tif (existing) {\n\t\t\tif (!isDeepStrictEqual(existing.request, normalized)) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Approval id '${normalized.approvalId}' has conflicting content.`);\n\t\t\t}\n\t\t\treturn structuredClone(existing);\n\t\t}\n\t\tassertApprovalRequestTransition(\n\t\t\tthis.state,\n\t\t\tnormalized.attemptId ?? normalized.taskId ?? normalized.objectiveId,\n\t\t\tnormalized,\n\t\t);\n\t\tassertRecordHasCapacity(this.state.approvals, MAX_ORCHESTRATION_APPROVALS, \"approval\");\n\t\tassertRecordHasCapacity(this.state.notifications, MAX_ORCHESTRATION_NOTIFICATIONS, \"notification\");\n\t\tthis.commit({\n\t\t\ttype: \"approval.requested\",\n\t\t\taggregateId: normalized.attemptId ?? normalized.taskId ?? normalized.objectiveId,\n\t\t\tactor: \"policy\",\n\t\t\tidempotencyKey: `approval-requested:${normalized.approvalId}`,\n\t\t\tpayload: toJsonObject({ approval: normalized }),\n\t\t});\n\t\treturn structuredClone(this.state.approvals[normalized.approvalId]!);\n\t}\n\n\tresolveApproval(approvalId: string, outcome: ApprovalOutcome, reasonCode: string): ApprovalRuntimeState {\n\t\tthis.refresh();\n\t\tconst approval = this.state.approvals[approvalId];\n\t\tif (!approval) throw new DurableTaskRuntimeError(`Unknown approval '${approvalId}'.`);\n\t\tif (approval.status !== \"pending\") {\n\t\t\tif (approval.status === outcome) return structuredClone(approval);\n\t\t\tthrow new DurableTaskRuntimeError(`Approval '${approvalId}' was already ${approval.status}.`);\n\t\t}\n\t\tif (outcome !== \"approved\" && outcome !== \"rejected\") {\n\t\t\tthrow new DurableTaskRuntimeError(`Unknown approval outcome '${String(outcome)}'.`);\n\t\t}\n\t\tif (!reasonCode.trim()) throw new DurableTaskRuntimeError(\"Approval resolution reason is required.\");\n\t\tconst resolution: ApprovalResolutionContract = {\n\t\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\t\tapprovalId,\n\t\t\toutcome,\n\t\t\treasonCode: reasonCode.trim(),\n\t\t\tresolvedAt: this.nowIso(),\n\t\t};\n\t\tassertApprovalResolutionTransition(\n\t\t\tthis.state,\n\t\t\tapproval.request.attemptId ?? approval.request.taskId ?? approval.request.objectiveId,\n\t\t\tresolution,\n\t\t);\n\t\tthis.commit({\n\t\t\ttype: \"approval.resolved\",\n\t\t\taggregateId: approval.request.attemptId ?? approval.request.taskId ?? approval.request.objectiveId,\n\t\t\tactor: \"human\",\n\t\t\tidempotencyKey: `approval-resolved:${approvalId}`,\n\t\t\tpayload: toJsonObject({ resolution }),\n\t\t});\n\t\treturn structuredClone(this.state.approvals[approvalId]!);\n\t}\n\n\tenqueueNotification(args: {\n\t\tnotificationId?: string;\n\t\tobjectiveId: string;\n\t\tattemptId?: string;\n\t\tmessage: string;\n\t}): NotificationRuntimeState {\n\t\tthis.refresh();\n\t\tassertNotificationTarget(this.state, args.objectiveId, args.attemptId);\n\t\tconst notificationId = args.notificationId ?? `notification-${this.createId()}`;\n\t\tconst existing = this.state.notifications[notificationId];\n\t\tif (existing) {\n\t\t\tif (\n\t\t\t\texisting.objectiveId !== args.objectiveId ||\n\t\t\t\texisting.attemptId !== args.attemptId ||\n\t\t\t\texisting.message !== args.message\n\t\t\t) {\n\t\t\t\tthrow new DurableTaskRuntimeError(`Notification id '${notificationId}' has conflicting content.`);\n\t\t\t}\n\t\t\treturn structuredClone(existing);\n\t\t}\n\t\tassertRecordHasCapacity(this.state.notifications, MAX_ORCHESTRATION_NOTIFICATIONS, \"notification\");\n\t\tthis.commit({\n\t\t\ttype: \"notification.enqueued\",\n\t\t\taggregateId: args.objectiveId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `notification-enqueued:${notificationId}`,\n\t\t\tpayload: toJsonObject({ ...args, notificationId }),\n\t\t});\n\t\treturn structuredClone(this.state.notifications[notificationId]!);\n\t}\n\n\tmarkNotificationDelivered(notificationId: string): NotificationRuntimeState {\n\t\tthis.refresh();\n\t\tconst notification = this.state.notifications[notificationId];\n\t\tif (!notification) throw new DurableTaskRuntimeError(`Unknown notification '${notificationId}'.`);\n\t\tif (notification.status === \"delivered\") return structuredClone(notification);\n\t\tthis.commit({\n\t\t\ttype: \"notification.delivered\",\n\t\t\taggregateId: notification.objectiveId,\n\t\t\tactor: \"runtime\",\n\t\t\tidempotencyKey: `notification-delivered:${notificationId}`,\n\t\t\tpayload: toJsonObject({ notificationId }),\n\t\t});\n\t\treturn structuredClone(this.state.notifications[notificationId]!);\n\t}\n\n\tprivate buildTask(input: CreateTaskInput): { task: TaskContract; objectiveState: ObjectiveRuntimeState } {\n\t\tassertRiskBudget(input.riskBudget, \"task.riskBudget\");\n\t\tconst objectiveState = this.state.objectives[input.objectiveId];\n\t\tif (!objectiveState) throw new DurableTaskRuntimeError(`Unknown objective '${input.objectiveId}'.`);\n\t\tif (objectiveState.objective.status !== \"active\") {\n\t\t\tthrow new DurableTaskRuntimeError(`Objective '${input.objectiveId}' is not active.`);\n\t\t}\n\t\tconst dependsOn = validateTaskDependencyIds(this.state.tasks, input.objectiveId, input.dependsOn);\n\t\tconst acceptanceCriterionIds = [...new Set(input.acceptanceCriterionIds ?? [])];\n\t\tconst now = this.nowIso();\n\t\tconst task = taskFromValue(\n\t\t\t{\n\t\t\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\t\t\ttaskId: input.taskId ?? `task-${this.createId()}`,\n\t\t\t\tobjectiveId: input.objectiveId,\n\t\t\t\ttitle: input.title.trim(),\n\t\t\t\tdescription: input.description.trim(),\n\t\t\t\trole: input.role,\n\t\t\t\tstatus: dependsOn.length === 0 ? \"ready\" : \"pending\",\n\t\t\t\tdependsOn,\n\t\t\t\trequiredCapabilities: [...new Set(input.requiredCapabilities ?? [])],\n\t\t\t\tacceptanceCriterionIds,\n\t\t\t\t...(input.verificationOfTaskId ? { verificationOfTaskId: input.verificationOfTaskId } : {}),\n\t\t\t\triskBudget: { ...(input.riskBudget ?? {}) },\n\t\t\t\tcreatedAt: now,\n\t\t\t\tupdatedAt: now,\n\t\t\t},\n\t\t\t\"task\",\n\t\t);\n\t\tif (this.state.tasks[task.taskId]) throw new DurableTaskRuntimeError(`Task '${task.taskId}' already exists.`);\n\t\tvalidateTaskContractForState(this.state, task, `Task '${task.taskId}'`);\n\t\treturn { task, objectiveState };\n\t}\n\n\tprivate normalizeDispatchForTask(\n\t\ttask: TaskRuntimeState,\n\t\tdispatch: OrchestrationDispatchRequest,\n\t): OrchestrationDispatchRequest {\n\t\tconst normalizedDispatch = dispatchFromValue(dispatch, \"dispatch\");\n\t\tif (normalizedDispatch.taskId !== task.task.taskId) {\n\t\t\tthrow new DurableTaskRuntimeError(\"Dispatch taskId does not match the queued task.\");\n\t\t}\n\t\tif (\n\t\t\tnormalizedDispatch.executionContract &&\n\t\t\t(normalizedDispatch.executionContract.worker.profile.profileId !== normalizedDispatch.profileId ||\n\t\t\t\tnormalizedDispatch.executionContract.worker.profile.role !== task.task.role)\n\t\t) {\n\t\t\tthrow new DurableTaskRuntimeError(\"Execution contract does not match the dispatch profile and task role.\");\n\t\t}\n\t\treturn normalizedDispatch;\n\t}\n\n\tprivate assertTaskAttemptBudget(task: TaskRuntimeState, objective: ObjectiveContract): void {\n\t\tassertTaskAttemptBudgetForState(task, objective);\n\t}\n\n\tprivate transitionObjective(\n\t\tobjectiveId: string,\n\t\ttype: \"objective.paused\" | \"objective.resumed\" | \"objective.cancelled\" | \"objective.completed\",\n\t\ttarget: ObjectiveStatus,\n\t\tpayload: JsonObject = {},\n\t): void {\n\t\tthis.refresh();\n\t\tconst objective = this.requireObjective(objectiveId);\n\t\tif (objective.objective.status === target) return;\n\t\tassertObjectiveStatusTransition(\n\t\t\tthis.state,\n\t\t\tobjectiveId,\n\t\t\ttarget,\n\t\t\ttype === \"objective.completed\"\n\t\t\t\t? (payload.completionPolicy as ObjectiveCompletionPolicy | undefined)\n\t\t\t\t: undefined,\n\t\t);\n\t\tthis.commit({\n\t\t\ttype,\n\t\t\taggregateId: objectiveId,\n\t\t\tactor: \"human\",\n\t\t\tidempotencyKey: `${type}:${objectiveId}:${this.state.lastOrdinal}`,\n\t\t\tpayload,\n\t\t});\n\t}\n\n\tprivate requireObjective(objectiveId: string): ObjectiveRuntimeState {\n\t\tconst objective = this.state.objectives[objectiveId];\n\t\tif (!objective) throw new DurableTaskRuntimeError(`Unknown objective '${objectiveId}'.`);\n\t\treturn objective;\n\t}\n\n\tprivate requireDispatchableTask(taskId: string): TaskRuntimeState {\n\t\tconst task = this.state.tasks[taskId];\n\t\tif (!task) throw new DurableTaskRuntimeError(`Unknown task '${taskId}'.`);\n\t\tconst objective = this.requireObjective(task.task.objectiveId);\n\t\tif (objective.objective.status !== \"active\") {\n\t\t\tthrow new DurableTaskRuntimeError(`Objective '${objective.objective.objectiveId}' is not active.`);\n\t\t}\n\t\tif (![\"pending\", \"ready\", \"blocked\", \"failed\"].includes(task.task.status)) {\n\t\t\tthrow new DurableTaskRuntimeError(`Task '${taskId}' is not dispatchable from '${task.task.status}'.`);\n\t\t}\n\t\tconst active = activeTaskAttempt(this.state, task);\n\t\tif (active) {\n\t\t\tthrow new DurableTaskRuntimeError(`Task '${taskId}' already owns active attempt '${active.attemptId}'.`);\n\t\t}\n\t\treturn task;\n\t}\n\n\tprivate requireAttempt(attemptId: string): AttemptRuntimeState {\n\t\tconst attempt = this.state.attempts[attemptId];\n\t\tif (!attempt) throw new DurableTaskRuntimeError(`Unknown attempt '${attemptId}'.`);\n\t\treturn attempt;\n\t}\n\n\tprivate issueLease(attempt: AttemptRuntimeState, ownerId: string, ttlMs: number): AttemptLease {\n\t\tif (!Number.isFinite(ttlMs) || ttlMs <= 0) throw new DurableTaskRuntimeError(\"Lease TTL must be positive.\");\n\t\tconst issuedAtMs = this.now();\n\t\tconst expiresAtMs = issuedAtMs + Math.min(ttlMs, MAX_DATE_EPOCH_MS - issuedAtMs);\n\t\treturn {\n\t\t\tleaseId: `lease-${this.createId()}`,\n\t\t\tattemptId: attempt.attemptId,\n\t\t\townerId,\n\t\t\tfencingToken: (attempt.lease?.fencingToken ?? 0) + 1,\n\t\t\tissuedAt: new Date(issuedAtMs).toISOString(),\n\t\t\texpiresAt: new Date(expiresAtMs).toISOString(),\n\t\t};\n\t}\n\n\tprivate pendingApprovalForTask(taskId: string): ApprovalRuntimeState | undefined {\n\t\tconst task = this.state.tasks[taskId];\n\t\tif (!task) return undefined;\n\t\treturn Object.values(this.state.approvals).find(\n\t\t\t(approval) =>\n\t\t\t\tapproval.status === \"pending\" &&\n\t\t\t\tapproval.request.attemptId === undefined &&\n\t\t\t\tapproval.request.objectiveId === task.task.objectiveId &&\n\t\t\t\t(approval.request.taskId === undefined || approval.request.taskId === taskId),\n\t\t);\n\t}\n\n\tprivate requireActiveObjectiveForAttempt(attempt: AttemptRuntimeState): void {\n\t\trequireActiveObjectiveForAttemptInProjection(this.state, attempt);\n\t}\n\n\tprivate assertRetryBackoffElapsed(attempt: AttemptRuntimeState): void {\n\t\tassertRetryBackoffElapsedAt(attempt, this.now());\n\t}\n\n\tprivate requireLiveLease(attemptId: string, leaseId: string, fencingToken: number): AttemptRuntimeState {\n\t\tconst attempt = this.requireAttempt(attemptId);\n\t\tif (!attempt.lease || attempt.lease.leaseId !== leaseId || attempt.lease.fencingToken !== fencingToken) {\n\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' lease or fencing token is stale.`);\n\t\t}\n\t\tif (Date.parse(attempt.lease.expiresAt) <= this.now()) {\n\t\t\tthrow new DurableTaskRuntimeError(`Attempt '${attemptId}' lease expired.`);\n\t\t}\n\t\treturn attempt;\n\t}\n\n\tprivate refresh(): void {\n\t\tlet events: OrchestrationEvent[];\n\t\ttry {\n\t\t\tevents = this.store.readAfter(this.state.lastOrdinal);\n\t\t} catch (error) {\n\t\t\tif (!(error instanceof OrchestrationSnapshotRequiredError)) throw error;\n\t\t\tconst snapshot = this.store.readProjectionSnapshot();\n\t\t\tif (!snapshot || snapshot.throughOrdinal < error.throughOrdinal) {\n\t\t\t\tthrow new DurableTaskRuntimeError(\"Required orchestration projection snapshot is unavailable.\");\n\t\t\t}\n\t\t\tthis.state = projectionFromSnapshot(snapshot.projection, snapshot.throughOrdinal);\n\t\t\tevents = this.store.readAfter(this.state.lastOrdinal);\n\t\t}\n\t\tfor (const event of events) {\n\t\t\tthis.state = reduceOrchestrationEvent(this.state, event);\n\t\t}\n\t\tthis.compactCurrentProjection();\n\t}\n\n\tprivate commit(input: AppendOrchestrationEventInput): void {\n\t\tthis.compactCurrentProjection();\n\t\tlet admittedProjection: TaskRuntimeProjection | undefined;\n\t\tconst event = this.store.append(input, {\n\t\t\texpectedLastOrdinal: this.state.lastOrdinal,\n\t\t\tvalidateBeforeCommit: (candidate) => {\n\t\t\t\tif (candidate.ordinal > this.state.lastOrdinal) {\n\t\t\t\t\tadmittedProjection = reduceOrchestrationEvent(this.state, candidate);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t\tif (admittedProjection) {\n\t\t\tthis.state = admittedProjection;\n\t\t\treturn;\n\t\t}\n\t\t// Exact idempotent replay can return an older event after another writer committed a\n\t\t// contiguous suffix. Adopt through readAfter so no intervening ordinal is skipped. Test stores\n\t\t// that do not execute append admission still fall back to reducing their returned next event.\n\t\tif (event.ordinal > this.state.lastOrdinal) this.refresh();\n\t\tif (event.ordinal > this.state.lastOrdinal) this.state = reduceOrchestrationEvent(this.state, event);\n\t}\n\n\tprivate compactCurrentProjection(): void {\n\t\tif (this.state.lastOrdinal > 0) {\n\t\t\tthis.store.compactIfNeeded(this.state.lastOrdinal, () => toJsonObject(this.state));\n\t\t}\n\t}\n\n\tprivate nowIso(): string {\n\t\treturn new Date(this.now()).toISOString();\n\t}\n}\n"]}
|