@yielded/agent 0.1.0-beta.181 → 0.1.0-beta.183
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/dist/{Admin-NvXFPDIM.d.mts → Admin-BgCHCGSl.d.mts} +8 -8
- package/dist/{AgentRuntime-Dx5u_FJD.d.mts → AgentRuntime-DhRchFzv.d.mts} +7 -4
- package/dist/{AgentRuntime-BAExRlgu.mjs → AgentRuntime-ILtyHuQG.mjs} +61 -45
- package/dist/AgentRuntime-ILtyHuQG.mjs.map +1 -0
- package/dist/{Digest-DjUgS5PG.d.mts → Digest-1iVcDLVm.d.mts} +2 -2
- package/dist/{Digest-ft4ku9pj.mjs → Digest-CzLJcsWv.mjs} +2 -2
- package/dist/{Digest-ft4ku9pj.mjs.map → Digest-CzLJcsWv.mjs.map} +1 -1
- package/dist/{DurableAgentRuntime-HH2muFrT.mjs → DurableAgentRuntime-Cj263rW9.mjs} +27 -57
- package/dist/DurableAgentRuntime-Cj263rW9.mjs.map +1 -0
- package/dist/{EventSource-DNyaWmyQ.d.mts → EventSource-CaA6RAtC.d.mts} +3 -3
- package/dist/InMemory.d.mts +1 -1
- package/dist/{MessageDelivery-CLzWJImC.d.mts → MessageDelivery-rlLpakO8.d.mts} +43 -43
- package/dist/{PreparedInputAdmission-BQ9UCLFS.d.mts → PreparedInputAdmission-DjbWz2lW.d.mts} +4 -4
- package/dist/{RecordFormat-BNiLpe43.d.mts → RecordFormat-CjMl0uu8.d.mts} +2 -2
- package/dist/{Records-BTnGRdcf.d.mts → Records-BP67Yz6n.d.mts} +20 -8
- package/dist/{Records-CZRedCE7.mjs → Records-bbGVHprv.mjs} +14 -10
- package/dist/Records-bbGVHprv.mjs.map +1 -0
- package/dist/{RunContinuation-CL0wBsQE.d.mts → RunContinuation-CIJRN_vC.d.mts} +5 -4
- package/dist/{RunContinuation-BF95Ncv2.mjs → RunContinuation-DJ6kkbQG.mjs} +22 -58
- package/dist/RunContinuation-DJ6kkbQG.mjs.map +1 -0
- package/dist/{RunEvent-C5jVQZ6K.d.mts → RunEvent-Bh1p4zAO.d.mts} +2 -2
- package/dist/{RunJournal-oJLo-pjS.mjs → RunJournal-DQr2dUgg.mjs} +4 -7
- package/dist/RunJournal-DQr2dUgg.mjs.map +1 -0
- package/dist/{RunOptions-BANtohGk.d.mts → RunOptions-aBHR-Eqm.d.mts} +6 -3
- package/dist/{RunStorage-DlfvMfHM.mjs → RunStorage-DblN-cmM.mjs} +2 -2
- package/dist/{RunStorage-DlfvMfHM.mjs.map → RunStorage-DblN-cmM.mjs.map} +1 -1
- package/dist/{Schedule-CDgTz0vj.d.mts → Schedule-CVLtl5rP.d.mts} +2 -2
- package/dist/{Scheduling-BebkRVc2.mjs → Scheduling-B6l0lWdr.mjs} +3 -3
- package/dist/{Scheduling-BebkRVc2.mjs.map → Scheduling-B6l0lWdr.mjs.map} +1 -1
- package/dist/{Subagent-D68fe7mr.mjs → Subagent-Bm842K7J.mjs} +43 -17
- package/dist/Subagent-Bm842K7J.mjs.map +1 -0
- package/dist/{Subagent-5ulnV6An.d.mts → Subagent-CWWmA1UQ.d.mts} +17 -5
- package/dist/{Subscription-D2yn6Eo3.d.mts → Subscription-BRsNy0TA.d.mts} +4 -4
- package/dist/{SubscriptionInput-Cog4x7Rd.d.mts → SubscriptionInput-ClCaW_kX.d.mts} +3 -3
- package/dist/{ThreadHistory-KPPBJLJb.d.mts → ThreadHistory-ajQhqZDY.d.mts} +2 -2
- package/dist/{ThreadImport-BoTfjjrz.mjs → ThreadImport-CkPAxXU5.mjs} +7 -7
- package/dist/{ThreadImport-BoTfjjrz.mjs.map → ThreadImport-CkPAxXU5.mjs.map} +1 -1
- package/dist/{ThreadImport-em89zmM-.d.mts → ThreadImport-DtRNoHIr.d.mts} +5 -5
- package/dist/{ThreadStore-D2rqtt7k.mjs → ThreadStore-C_ofHc7h.mjs} +4 -4
- package/dist/{ThreadStore-D2rqtt7k.mjs.map → ThreadStore-C_ofHc7h.mjs.map} +1 -1
- package/dist/{ThreadTransfer-BFolkpEp.mjs → ThreadTransfer-C_TRuo_9.mjs} +4 -4
- package/dist/{ThreadTransfer-BFolkpEp.mjs.map → ThreadTransfer-C_TRuo_9.mjs.map} +1 -1
- package/dist/{WorkerAdmission-DrxDrLII.mjs → WorkerAdmission-9Ka3edXj.mjs} +5 -5
- package/dist/{WorkerAdmission-DrxDrLII.mjs.map → WorkerAdmission-9Ka3edXj.mjs.map} +1 -1
- package/dist/{agent-registration-BovXT8jc.mjs → agent-registration-7kp1dHT0.mjs} +4 -4
- package/dist/{agent-registration-BovXT8jc.mjs.map → agent-registration-7kp1dHT0.mjs.map} +1 -1
- package/dist/capabilities/Commands.d.mts +1 -1
- package/dist/capabilities/Redaction.d.mts +1 -1
- package/dist/capabilities/RunHooks.d.mts +1 -1
- package/dist/capabilities/Subagent.d.mts +1 -1
- package/dist/capabilities/Subagent.mjs +1 -1
- package/dist/capabilities/SubagentReservations.d.mts +4 -1
- package/dist/capabilities/SubagentReservations.mjs +4 -1
- package/dist/capabilities/SubagentReservations.mjs.map +1 -1
- package/dist/core/RunEvent.d.mts +1 -1
- package/dist/core/RunEvent.mjs +1 -1
- package/dist/core/RunEvent.mjs.map +1 -1
- package/dist/durable/ActivityStore.d.mts +1 -1
- package/dist/durable/ActivityStore.mjs +1 -1
- package/dist/durable/Admin.d.mts +1 -1
- package/dist/durable/Admin.mjs +1 -1
- package/dist/durable/AgentRegistration.d.mts +1 -1
- package/dist/durable/AgentRegistration.mjs +1 -1
- package/dist/durable/Certification.d.mts +1 -1
- package/dist/durable/CommittedActivity.d.mts +3 -3
- package/dist/durable/CommittedActivity.mjs +3 -3
- package/dist/durable/Digest.d.mts +1 -1
- package/dist/durable/Digest.mjs +1 -1
- package/dist/durable/DurableAgentRuntime.d.mts +1 -1
- package/dist/durable/DurableAgentRuntime.mjs +2 -2
- package/dist/durable/EventSource.d.mts +1 -1
- package/dist/durable/EventSource.mjs +1 -1
- package/dist/durable/GitHubWorkflowSource.d.mts +3 -3
- package/dist/durable/LifecyclePublication.d.mts +1 -1
- package/dist/durable/LifecyclePublication.mjs +2 -2
- package/dist/durable/MessageDelivery.d.mts +1 -1
- package/dist/durable/MessageDelivery.mjs +2 -2
- package/dist/durable/MessageDeliveryStoreConformance.d.mts +42 -42
- package/dist/durable/MessageDeliveryStoreConformance.mjs +2 -2
- package/dist/durable/PersistentHistory.d.mts +2 -2
- package/dist/durable/PersistentHistory.mjs +4 -4
- package/dist/durable/PreparedInputAdmission.d.mts +1 -1
- package/dist/durable/RecordFormat.d.mts +1 -1
- package/dist/durable/RecordFormat.mjs +1 -1
- package/dist/durable/Records.d.mts +1 -1
- package/dist/durable/Records.mjs +1 -1
- package/dist/durable/Recovery.d.mts +1 -1
- package/dist/durable/Recovery.mjs +1 -1
- package/dist/durable/RunContinuation.d.mts +3 -3
- package/dist/durable/RunContinuation.mjs +3 -3
- package/dist/durable/RunJournal.d.mts +1 -1
- package/dist/durable/RunJournal.mjs +1 -1
- package/dist/durable/RunStorage.d.mts +1 -1
- package/dist/durable/RunStorage.mjs +1 -1
- package/dist/durable/Schedule.d.mts +1 -1
- package/dist/durable/Schedule.mjs +1 -1
- package/dist/durable/ScheduleStoreConformance.d.mts +1 -1
- package/dist/durable/ScheduleStoreConformance.mjs +1 -1
- package/dist/durable/ScheduleTransition.d.mts +1 -1
- package/dist/durable/ScheduleTransition.mjs +1 -1
- package/dist/durable/Scheduling.d.mts +3 -3
- package/dist/durable/Scheduling.mjs +1 -1
- package/dist/durable/SettlementPublisher.d.mts +1 -1
- package/dist/durable/SettlementPublisher.mjs +3 -3
- package/dist/durable/SubmissionLedger.d.mts +1 -1
- package/dist/durable/SubmissionLedger.mjs +2 -2
- package/dist/durable/SubmissionLedgerConformance.d.mts +2 -2
- package/dist/durable/SubmissionLedgerConformance.mjs +5 -5
- package/dist/durable/SubmissionStatus.d.mts +1 -1
- package/dist/durable/Subscription.d.mts +1 -1
- package/dist/durable/Subscription.mjs +1 -1
- package/dist/durable/SubscriptionInput.d.mts +1 -1
- package/dist/durable/SubscriptionInput.mjs +2 -2
- package/dist/durable/SubscriptionStoreConformance.d.mts +1 -1
- package/dist/durable/SubscriptionStoreConformance.mjs +1 -1
- package/dist/durable/SubscriptionTools.d.mts +4 -4
- package/dist/durable/SubscriptionTransition.d.mts +1 -1
- package/dist/durable/SubscriptionTransition.mjs +1 -1
- package/dist/durable/Subscriptions.d.mts +6 -6
- package/dist/durable/Subscriptions.mjs +2 -2
- package/dist/durable/ThreadArchiveRange.d.mts +1 -1
- package/dist/durable/ThreadArchiveRange.mjs +1 -1
- package/dist/durable/ThreadContextHistory.d.mts +1 -1
- package/dist/durable/ThreadContextHistory.mjs +2 -2
- package/dist/durable/ThreadContextHistoryProjection.d.mts +1 -1
- package/dist/durable/ThreadContextHistoryProjection.mjs +1 -1
- package/dist/durable/ThreadImport.d.mts +1 -1
- package/dist/durable/ThreadImport.mjs +1 -1
- package/dist/durable/ThreadInvariants.d.mts +3 -3
- package/dist/durable/ThreadInvariants.mjs +4 -4
- package/dist/durable/ThreadProjection.d.mts +1 -1
- package/dist/durable/ThreadProjection.mjs +1 -1
- package/dist/durable/ThreadProjectionMaintenance.d.mts +1 -1
- package/dist/durable/ThreadReader.d.mts +1 -1
- package/dist/durable/ThreadReader.mjs +1 -1
- package/dist/durable/ThreadStore.d.mts +2 -2
- package/dist/durable/ThreadStore.mjs +2 -2
- package/dist/durable/ThreadStoreConformance.d.mts +2 -2
- package/dist/durable/ThreadStoreConformance.mjs +4 -4
- package/dist/durable/ThreadTransfer.d.mts +2 -2
- package/dist/durable/ThreadTransfer.mjs +1 -1
- package/dist/durable/ThreadWork.d.mts +1 -1
- package/dist/durable/ThreadWork.mjs +5 -5
- package/dist/durable/ToolReconciler.mjs +1 -1
- package/dist/durable/WorkerAdmission.d.mts +2 -2
- package/dist/durable/WorkerAdmission.mjs +1 -1
- package/dist/durable/WorkerHost.d.mts +2 -2
- package/dist/engine/AgentRuntime.d.mts +1 -1
- package/dist/engine/AgentRuntime.mjs +1 -1
- package/dist/engine/RunOptions.d.mts +1 -1
- package/dist/engine/RunOptions.mjs.map +1 -1
- package/dist/engine/ThreadHistory.d.mts +1 -1
- package/dist/index.d.mts +17 -17
- package/dist/index.mjs +12 -12
- package/dist/{run-context-reader-kpO9xhP2.d.mts → run-context-reader-DEU4REfD.d.mts} +3 -3
- package/package.json +1 -1
- package/src/capabilities/Subagent.ts +83 -28
- package/src/capabilities/SubagentReservations.ts +4 -1
- package/src/capabilities/internal/subagent-contract.ts +23 -3
- package/src/core/RunEvent.ts +1 -1
- package/src/durable/DurableAgentRuntime.ts +64 -14
- package/src/durable/Records.ts +21 -15
- package/src/durable/RunContinuation.ts +64 -125
- package/src/durable/RunJournal.ts +4 -12
- package/src/durable/internal/history-prompt.ts +10 -4
- package/src/durable/internal/initial-context.ts +1 -1
- package/src/durable/internal/prompt-history-cache.ts +8 -63
- package/src/engine/RunOptions.ts +4 -1
- package/src/engine/internal/agent-runtime.ts +422 -387
- package/dist/AgentRuntime-BAExRlgu.mjs.map +0 -1
- package/dist/DurableAgentRuntime-HH2muFrT.mjs.map +0 -1
- package/dist/Records-CZRedCE7.mjs.map +0 -1
- package/dist/RunContinuation-BF95Ncv2.mjs.map +0 -1
- package/dist/RunJournal-oJLo-pjS.mjs.map +0 -1
- package/dist/Subagent-D68fe7mr.mjs.map +0 -1
- package/dist/json-BlJVQZxN.mjs +0 -15
- package/dist/json-BlJVQZxN.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Records-CZRedCE7.mjs","names":[],"sources":["../src/durable/internal/history-prompt.ts","../src/durable/Records.ts"],"sourcesContent":["import { Effect, Schema, SchemaParser, SchemaTransformation } from \"effect\";\nimport { Prompt } from \"effect/ai\";\n\nfunction restorePart(part: Prompt.UserMessagePartEncoded): Prompt.UserMessagePart;\nfunction restorePart(part: Prompt.AssistantMessagePartEncoded): Prompt.AssistantMessagePart;\nfunction restorePart(part: Prompt.ToolMessagePartEncoded): Prompt.ToolMessagePart;\nfunction restorePart(part: Prompt.PartEncoded): Prompt.Part {\n switch (part.type) {\n case \"text\":\n return Prompt.textPart(part);\n case \"reasoning\":\n return Prompt.reasoningPart(part);\n case \"file\":\n return Prompt.filePart(part);\n case \"tool-call\":\n return Prompt.toolCallPart({ ...part, providerExecuted: part.providerExecuted ?? false });\n case \"tool-result\":\n return Prompt.toolResultPart({ ...part, providerExecuted: part.providerExecuted ?? false });\n case \"tool-approval-request\":\n return Prompt.toolApprovalRequestPart(part);\n case \"tool-approval-response\":\n return Prompt.toolApprovalResponsePart(part);\n }\n}\n\nconst restoreMessage = (message: Prompt.MessageEncoded): Prompt.Message => {\n switch (message.role) {\n case \"system\":\n return Prompt.makeMessage(\"system\", message);\n case \"user\":\n return Prompt.makeMessage(\"user\", {\n ...message,\n content:\n typeof message.content === \"string\"\n ? [Prompt.textPart({ text: message.content })]\n : message.content.map((part) => restorePart(part)),\n });\n case \"assistant\":\n return Prompt.makeMessage(\"assistant\", {\n ...message,\n content:\n typeof message.content === \"string\"\n ? [Prompt.textPart({ text: message.content })]\n : message.content.map((part) => restorePart(part)),\n });\n case \"tool\":\n return Prompt.makeMessage(\"tool\", {\n ...message,\n content: message.content.map((part) => restorePart(part)),\n });\n }\n};\n\n/**\n * Validate the upstream encoded history once, then restore native values with its constructors.\n * The canonical codec remains authoritative at append, import, recovery and explicit verification.\n */\nexport const HistoryPrompt = Schema.toEncoded(Prompt.Prompt).pipe(\n Schema.decodeTo(\n Schema.toType(Prompt.Prompt),\n SchemaTransformation.transformEffect({\n decode: (input) => Effect.succeed(Prompt.fromMessages(input.content.map(restoreMessage))),\n encode: SchemaParser.encodeEffect(Prompt.Prompt),\n }),\n ),\n);\n","import { Option, Schema, Struct } from \"effect\";\nimport { Prompt } from \"effect/ai\";\n\nimport { InputMessage } from \"../capabilities/Messaging.ts\";\nimport { PolicyLimit } from \"../core/AgentError.ts\";\nimport { AgentPolicy } from \"../core/AgentPolicy.ts\";\nimport { Update } from \"../core/AgentUpdates.ts\";\nimport * as FailureDiagnostic from \"../core/FailureDiagnostic.ts\";\nimport {\n AgentId,\n ThreadId,\n DelegationId,\n ReceiptId,\n RunId,\n SettlementId,\n SubmissionId,\n ToolCallId,\n TurnId,\n} from \"../core/Identifiers.ts\";\nimport { utf8ByteLength } from \"../core/internal/utf8.ts\";\nimport { IdempotencyKey, Principal, Receipt } from \"../core/Receipt.ts\";\nimport { ExhaustedLimit } from \"../core/RunEvent.ts\";\nimport { RunPolicyUsage } from \"../core/RunPolicyUsage.ts\";\nimport {\n DelegationDepth,\n SubagentBudgetReservation,\n SubagentGrant,\n SubagentParentLink,\n ToolExecutionKind,\n} from \"../core/SubagentContract.ts\";\nimport { Selection, Snapshot } from \"../core/ToolExposure.ts\";\nimport { ToolParameterRejection } from \"../core/ToolResult.ts\";\nimport { ModelCallUsage, RunUsageSummary, RunTotals } from \"../core/Usage.ts\";\nimport { WorkerBudgetScope, WorkerRef, WorkerSource, WorkerStop } from \"../core/Worker.ts\";\nimport { ContextHandoff } from \"../engine/ContextWindow.ts\";\nimport { HistoryPrompt } from \"./internal/history-prompt.ts\";\n\n/** Stable identity of one canonical record. */\nexport const RecordId = Schema.NonEmptyString.pipe(Schema.brand(\"@effect-agent/thread/RecordId\"));\n\nexport type RecordId = typeof RecordId.Type;\n\n/** Stable idempotency identity of one atomic append. */\nexport const BatchId = Schema.NonEmptyString.pipe(Schema.brand(\"@effect-agent/thread/BatchId\"));\n\nexport type BatchId = typeof BatchId.Type;\n\n/** Identity of the deployment that produced a record. */\nexport const DeploymentId = Schema.NonEmptyString.pipe(\n Schema.brand(\"@effect-agent/thread/DeploymentId\"),\n);\n\nexport type DeploymentId = typeof DeploymentId.Type;\n\n/** Identity of a canonical-log producer. */\nexport const ProducerId = Schema.NonEmptyString.pipe(\n Schema.brand(\"@effect-agent/thread/ProducerId\"),\n);\n\nexport type ProducerId = typeof ProducerId.Type;\n\n/** SHA-256 digest encoded as lowercase hexadecimal text. */\nexport const Digest = Schema.String.check(Schema.isPattern(/^[a-f0-9]{64}$/)).pipe(\n Schema.brand(\"@effect-agent/thread/Digest\"),\n);\n\nexport type Digest = typeof Digest.Type;\n\n/** Adapter-owned resume cursor. Callers must not parse or synthesize it. */\nexport const ObservationOffset = Schema.NonEmptyString.pipe(\n Schema.brand(\"@effect-agent/thread/ObservationOffset\"),\n);\n\nexport type ObservationOffset = typeof ObservationOffset.Type;\n\n/** Gap-free position in one Thread's canonical sequence. */\nexport const CanonicalSequence = Schema.Natural.pipe(\n Schema.brand(\"@effect-agent/thread/CanonicalSequence\"),\n);\n\nexport type CanonicalSequence = typeof CanonicalSequence.Type;\n\nconst BoundedText = Schema.String.check(Schema.isMaxLength(64 * 1024));\nconst BoundedName = Schema.NonEmptyString.check(Schema.isMaxLength(256));\n\n/**\n * Private failed-Settlement evidence. The summary remains the safe public projection; diagnostic\n * and context preserve structured causal evidence for authorized operators, never model context.\n * Optional fields allow reading supported Settlements written before causal capture was available.\n */\nexport const SettlementFailureDiagnostic = FailureDiagnostic.Failure.pipe(\n Schema.annotate({\n identifier: \"@effect-agent/thread/SettlementFailureDiagnostic\",\n }),\n);\n\nexport type SettlementFailureDiagnostic = typeof SettlementFailureDiagnostic.Type;\n\n/** Positive canonical (Run-relative, Attempt-independent) Turn number. */\nconst TurnNumber = Schema.Int.check(Schema.isGreaterThan(0));\n\nexport const MAX_PERSISTED_JSON_DEPTH = 64;\nexport const MAX_PERSISTED_JSON_COLLECTION_LENGTH = 4_096;\nexport const MAX_PERSISTED_JSON_NODES = 65_536;\nexport const MAX_PERSISTED_JSON_BYTES = 1024 * 1024;\n/** Whole record wire includes bounded payloads and their canonical envelope. */\nexport const MAX_CANONICAL_RECORD_BYTES = 4 * 1024 * 1024;\n\n/**\n * Iteratively preflights an unknown value before Schema's recursive JSON validation. This is the\n * one narrow `Schema.declare` exception in the persistence model: Effect v4's `Unknown.decodeTo`\n * preserves `unknown` as the encoded type, which would leak through every nested record codec.\n * Schema.Json still owns the accepted value shape after this resource preflight succeeds.\n */\nconst isJson = Schema.is(Schema.Json);\n// No Unicode flag: match surrogate code units so astral characters take the UTF-8 path too.\nconst nonAscii = /[\\u0080-\\uFFFF]/;\n\nconst boundedJson =\n (limits: { readonly depth: number; readonly nodes: number; readonly bytes: number }) =>\n (input: unknown): input is Schema.Json => {\n const pending: Array<\n | { readonly _tag: \"visit\"; readonly value: unknown; readonly depth: number }\n | { readonly _tag: \"leave\"; readonly value: object }\n > = [{ _tag: \"visit\", value: input, depth: 0 }];\n\n // Only ancestors indicate a cycle. Shared acyclic values serialize once per occurrence,\n // so revisit them and charge every occurrence against the same resource limits.\n const ancestors = new WeakSet<object>();\n let nodes = 0;\n let textUnits = 0;\n\n try {\n while (pending.length > 0) {\n const current = pending.pop();\n\n if (current === undefined) return false;\n if (current._tag === \"leave\") {\n ancestors.delete(current.value);\n continue;\n }\n if (current.depth > limits.depth || ++nodes > limits.nodes) {\n return false;\n }\n\n const value = current.value;\n\n if (value === null || typeof value === \"boolean\") continue;\n if (typeof value === \"number\") {\n if (!Number.isFinite(value)) return false;\n continue;\n }\n if (typeof value === \"string\") {\n textUnits += value.length;\n if (textUnits > limits.bytes) return false;\n continue;\n }\n if (typeof value !== \"object\" || ancestors.has(value)) return false;\n ancestors.add(value);\n pending.push({ _tag: \"leave\", value });\n\n const entries = Array.isArray(value)\n ? Array.from(value, (entry, index) => [index, entry] as const)\n : Object.entries(value);\n\n if (entries.length > MAX_PERSISTED_JSON_COLLECTION_LENGTH) return false;\n for (const [key, entry] of entries) {\n textUnits += typeof key === \"string\" ? key.length : 0;\n if (textUnits > limits.bytes) return false;\n pending.push({ _tag: \"visit\", value: entry, depth: current.depth + 1 });\n }\n }\n\n if (!isJson(input)) return false;\n const encoded = JSON.stringify(input);\n\n // Escaping is already reflected in the serialized text. UTF-8 uses one to three bytes per\n // UTF-16 code unit; ASCII uses exactly one. Only ambiguous Unicode needs the exact count.\n return (\n encoded !== undefined &&\n encoded.length <= limits.bytes &&\n (encoded.length <= limits.bytes / 3 ||\n !nonAscii.test(encoded) ||\n utf8ByteLength(encoded) <= limits.bytes)\n );\n } catch {\n return false;\n }\n };\n\nconst isPersistedJson = boundedJson({\n depth: MAX_PERSISTED_JSON_DEPTH,\n nodes: MAX_PERSISTED_JSON_NODES,\n bytes: MAX_PERSISTED_JSON_BYTES,\n});\n\n/** Canonical JSON admitted to persisted records and checkpoints under explicit resource limits. */\nexport const PersistedJson = Schema.declare(isPersistedJson, {\n identifier: \"@effect-agent/thread/PersistedJson\",\n description: \"JSON bounded by canonical persistence depth, collection, node, and byte limits\",\n});\n\nexport type PersistedJson = typeof PersistedJson.Type;\n\n/** Whole record wire reserves room for the payload's envelope and additional bounded fields. */\nexport const RecordJson = Schema.declare(\n boundedJson({\n depth: MAX_PERSISTED_JSON_DEPTH + 4,\n nodes: MAX_PERSISTED_JSON_NODES * 4,\n bytes: MAX_CANONICAL_RECORD_BYTES,\n }),\n {\n identifier: \"@effect-agent/thread/RecordJson\",\n description: \"Canonical record JSON bounded by depth, collection, node, and 4 MiB byte limits\",\n },\n);\n\nexport type RecordJson = typeof RecordJson.Type;\n\n/** Schema-owned replay inputs whose individual definitions are incorporated into digests. */\nexport class DefinitionDigestInput extends Schema.Class<DefinitionDigestInput>(\n \"@effect-agent/thread/DefinitionDigestInput\",\n)({\n agent: PersistedJson,\n model: PersistedJson,\n tools: PersistedJson,\n}) {}\n\n/** Admission-time operation fingerprints. Agent fingerprints remain immutable evidence only. */\nexport class ReplayContract extends Schema.Class<ReplayContract>(\n \"@effect-agent/thread/ReplayContract\",\n)({\n agent: Digest,\n /** Retained for reading earlier admissions; never selects executable code. */\n agentBehavior: Schema.optionalKey(Digest),\n tools: Schema.Record(Schema.String, Digest),\n}) {}\n\n/** Digests identify admission exactly; only an unfinished operation needs replay compatibility. */\nexport class DefinitionDigests extends Schema.Class<DefinitionDigests>(\n \"@effect-agent/thread/DefinitionDigests\",\n)({\n agent: Digest,\n model: Digest,\n tools: Digest,\n replay: Schema.optionalKey(ReplayContract),\n}) {}\n\nexport class ThreadCreated extends Schema.TaggedClass<ThreadCreated>(\n \"@effect-agent/thread/ThreadCreated\",\n)(\"ThreadCreated\", {\n agentId: AgentId,\n definitions: DefinitionDigests,\n}) {}\n\n/**\n * One recorded Thread input. `submissionId` is present only for durably accepted work;\n * retained history has no admission or settlement obligation. `kind` identifies the input seam.\n */\nexport class UserInputRecorded extends Schema.TaggedClass<UserInputRecorded>(\n \"@effect-agent/thread/UserInputRecorded\",\n)(\"UserInputRecorded\", {\n submissionId: Schema.optionalKey(SubmissionId),\n kind: Schema.Literals([\"user\", \"steering\", \"follow-up\"]),\n runId: Schema.optionalKey(RunId),\n input: PersistedJson,\n messageAdmission: Schema.optionalKey(InputMessage),\n}) {}\n\n/** Immutable Run start and per-Attempt duration allowance, before any agent execution. */\nexport class RunStartedRecord extends Schema.TaggedClass<RunStartedRecord>(\n \"@effect-agent/thread/RunStartedRecord\",\n)(\"RunStarted\", {\n runId: RunId,\n /** Older private histories cannot prove programmatic accounting and must be reset. */\n policyAccountingVersion: Schema.Literal(1),\n maxDurationMillis: Schema.Finite.check(Schema.isGreaterThan(0)),\n}) {}\n\n/** An active Attempt exhausted its execution allowance; downtime alone never writes this. */\nexport class RunDurationExhausted extends Schema.TaggedClass<RunDurationExhausted>(\n \"@effect-agent/thread/RunDurationExhausted\",\n)(\"RunDurationExhausted\", { runId: RunId }) {}\n\nconst PersistedPromptMessages = Schema.toEncoded(Prompt.Prompt);\nconst isPersistedPromptMessages = Schema.is(PersistedPromptMessages);\n\n/**\n * Final model output. Immediate history records the successful Run's source messages for\n * recall and a full retained model-context snapshot for the next Run. Durable execution\n * instead journals individual ModelResponseRecorded Turns and exact context references.\n */\nexport class ModelCompleted extends Schema.TaggedClass<ModelCompleted>(\n \"@effect-agent/thread/ModelCompleted\",\n)(\n \"ModelCompleted\",\n Schema.Struct({\n runId: RunId,\n output: PersistedJson,\n messages: Schema.optionalKey(PersistedJson),\n history: Schema.optionalKey(PersistedJson),\n }).check(\n Schema.makeFilter(\n (record) =>\n (record.messages === undefined && record.history === undefined) ||\n (record.messages !== undefined &&\n record.history !== undefined &&\n isPersistedPromptMessages(record.messages) &&\n isPersistedPromptMessages(record.history)),\n { title: \"Retained source messages and model context are paired encoded Effect AI Prompts\" },\n ),\n ),\n) {}\n\nexport class ToolCallSettled extends Schema.TaggedClass<ToolCallSettled>(\n \"@effect-agent/thread/ToolCallSettled\",\n)(\"ToolCallSettled\", {\n toolSelection: Schema.optionalKey(Selection),\n runId: RunId,\n toolCallId: ToolCallId,\n toolName: BoundedName,\n result: PersistedJson,\n isFailure: Schema.Boolean,\n /** Explicit engine evidence, never inferred from Tool result data. */\n budgetRejected: Schema.optionalKey(Schema.Literal(true)),\n}) {}\n\n/** Compact execution evidence committed with a declaration, before any handler can start. */\nexport class ToolOperation extends Schema.Class<ToolOperation>(\n \"@effect-agent/thread/ToolOperation\",\n)({\n toolCallId: ToolCallId,\n toolName: BoundedName,\n executionClass: Schema.Literals([\"readonly\", \"idempotent\", \"uncertain\"]),\n executionKind: ToolExecutionKind,\n replay: Digest,\n}) {}\n\n/** Derived recovery input from one committed response; never a separate canonical record. */\nexport class DeclaredToolCall extends Schema.Class<DeclaredToolCall>(\n \"@effect-agent/thread/DeclaredToolCall\",\n)({\n ...ToolOperation.fields,\n runId: RunId,\n turnId: TurnId,\n turn: TurnNumber,\n parameters: PersistedJson,\n parametersDigest: Digest,\n}) {}\n\n/** A retired call's runtime result. Unavailable readonly work may already have been observed. */\nexport class ToolUnavailable extends Schema.TaggedClass<ToolUnavailable>()(\"ToolUnavailable\", {\n toolName: BoundedName,\n execution: Schema.Literals([\"not-executed\", \"unavailable\"]),\n message: BoundedText,\n}) {}\n\n/**\n * One committed model Turn. `messages` carries the Schema-encoded Effect AI Prompt messages this\n * Turn appended (assistant response plus any tool-call declarations), committed atomically at the\n * Turn boundary so a recovering Attempt can rebuild the next Prompt from canonical records alone.\n */\nconst ModelResponseRecordedFields = Schema.Struct({\n /** Original bound for each application result; replacement Bindings cannot enlarge it. */\n toolResultMaxBytes: Schema.Int.check(\n Schema.isBetween({ minimum: 256, maximum: MAX_PERSISTED_JSON_BYTES }),\n ),\n /** Maximum encoded selection metadata from the native catalog at declaration time. */\n toolSelectionMaxBytes: Schema.Natural.check(\n Schema.isLessThanOrEqualTo(MAX_CANONICAL_RECORD_BYTES),\n ),\n /** Exactly one entry per application call, including rejected calls; none for provider execution. */\n toolOperations: Schema.Array(ToolOperation),\n /** Explicit pre-execution failures, committed with the original arguments before any approval. */\n toolParameterRejections: Schema.optionalKey(Schema.Array(ToolParameterRejection)),\n toolExposure: Schema.optionalKey(Snapshot),\n runId: RunId,\n turnId: TurnId,\n turn: TurnNumber,\n messages: PersistedJson,\n /**\n * Number of leading messages that belong only to this Run's evaluated instructions and wake\n * input. They remain canonical. An unfinished Run retains this exact evaluated prefix;\n * subsequent Runs retain its original user intent in conversation history.\n */\n runScopedPrefixLength: Schema.optionalKey(Schema.Int.check(Schema.isGreaterThan(0))),\n /**\n * Exact normalized usage for every model call staged into this Turn. A\n * summarizer and the Turn response are distinct entries. Unmetered responses can omit it.\n */\n modelUsage: Schema.optionalKey(Schema.Array(ModelCallUsage)),\n /** Observed invocations without retained accounting before this Turn committed. */\n unobservedModelCalls: Schema.optionalKey(Schema.Natural),\n /** Aggregate observed usage when per-call accounting is unavailable. */\n inputTokens: Schema.optionalKey(Schema.Natural),\n outputTokens: Schema.optionalKey(Schema.Natural),\n /** Estimated spend staged with the usage; recovery re-seeds the cost budget (RUN-023). */\n costMicrousd: Schema.optionalKey(Schema.Natural),\n}).check(\n Schema.makeFilter(\n (response) => {\n if (!isPersistedPromptMessages(response.messages)) return false;\n\n const declarations = response.messages.content.flatMap((message) =>\n message.role === \"assistant\" && typeof message.content !== \"string\"\n ? message.content.filter(\n (part) => part.type === \"tool-call\" && part.providerExecuted !== true,\n )\n : [],\n );\n\n if (declarations.length !== response.toolOperations.length) return false;\n const seen = new Set<string>();\n\n for (const operation of response.toolOperations) {\n if (\n seen.has(operation.toolCallId) ||\n !declarations.some(\n (call) =>\n call.type === \"tool-call\" &&\n call.id === operation.toolCallId &&\n call.name === operation.toolName,\n )\n )\n return false;\n seen.add(operation.toolCallId);\n }\n\n return declarations.every((call) => call.type === \"tool-call\" && seen.has(call.id));\n },\n { title: \"Every application Tool declaration has unique original operation evidence\" },\n ),\n Schema.makeFilter(\n (response) =>\n response.runScopedPrefixLength === undefined ||\n (isPersistedPromptMessages(response.messages) &&\n response.runScopedPrefixLength < response.messages.content.length &&\n response.messages.content\n .slice(0, response.runScopedPrefixLength)\n .every((message) => message.role === \"system\" || message.role === \"user\")),\n {\n title:\n \"Run-scoped Prompt prefix contains only instruction/wake messages and leaves one response\",\n },\n ),\n);\n\nexport class ModelResponseRecorded extends Schema.TaggedClass<ModelResponseRecorded>(\n \"@effect-agent/thread/ModelResponseRecorded\",\n)(\"ModelResponseRecorded\", ModelResponseRecordedFields) {}\n\n/** Monotonic reservations charged before programmatic execution or grace finalization. */\nexport class RunPolicyUsageReserved extends Schema.TaggedClass<RunPolicyUsageReserved>()(\n \"RunPolicyUsageReserved\",\n {\n runId: RunId,\n programmaticToolCalls: RunPolicyUsage.fields.programmaticToolCalls,\n finalizationUsed: RunPolicyUsage.fields.finalizationUsed,\n },\n) {}\n\n/**\n * A durable Unknown Outcome: the external effect of one declared ordinary Tool Call may have\n * happened but was not confirmed canonically (DUR-009/DUR-017). It is neither success nor\n * ordinary failure; automatic continuation stops until an authorized resolution arrives.\n */\nexport class ToolCallUnknown extends Schema.TaggedClass<ToolCallUnknown>(\n \"@effect-agent/thread/ToolCallUnknown\",\n)(\"ToolCallUnknown\", {\n runId: RunId,\n turn: TurnNumber,\n toolCallId: ToolCallId,\n toolName: BoundedName,\n reason: BoundedText,\n}) {}\n\n/** How one open/unknown Tool Call was authoritatively closed (DUR-017 resolution audit). */\nexport const ToolCallResolution = Schema.Literals([\n \"completed-with-result\",\n \"failed-with-error\",\n \"never-started\",\n \"safe-retry\",\n]);\n\nexport type ToolCallResolution = typeof ToolCallResolution.Type;\n\n/**\n * The canonical audit record closing one open or unknown Tool Call: reconciler-recovered supplier\n * truth or an authorized `resolveUnknown` command. `author`/`reason` make every resolution an\n * attributable decision (DUR-017); a `completed-with-result` resolution is accompanied by the\n * per-call `ToolCallSettled` record carrying the recovered result.\n */\nexport class ToolCallResolved extends Schema.TaggedClass<ToolCallResolved>(\n \"@effect-agent/thread/ToolCallResolved\",\n)(\"ToolCallResolved\", {\n runId: RunId,\n toolCallId: ToolCallId,\n resolution: ToolCallResolution,\n author: BoundedName,\n reason: BoundedText,\n}) {}\n\n/**\n * One accepted Durable Step result (durability §11): exactly-once-recorded while the Step's\n * external side effect stays honestly at-least-once-executed. Only success is recorded — a failing\n * Step body fails into the handler's error channel and re-executes on re-entry. `output` is the\n * Schema-encoded Step output; `outputDigest` pins it for replay-divergence detection.\n */\nexport class ToolStepSettled extends Schema.TaggedClass<ToolStepSettled>(\n \"@effect-agent/thread/ToolStepSettled\",\n)(\"ToolStepSettled\", {\n runId: RunId,\n toolCallId: ToolCallId,\n stepName: BoundedName,\n output: PersistedJson,\n outputDigest: Digest,\n}) {}\n\n/**\n * A canonical approval request for one declared Tool Call (CAP-006, durability §8): with this\n * record durable, \"waiting for explicit approval\" is a safe suspension boundary — the resumed\n * Attempt replays the declared batch instead of re-invoking the model.\n */\nexport class ToolApprovalRequested extends Schema.TaggedClass<ToolApprovalRequested>(\n \"@effect-agent/thread/ToolApprovalRequested\",\n)(\"ToolApprovalRequested\", {\n runId: RunId,\n turnId: TurnId,\n turn: TurnNumber,\n toolCallId: ToolCallId,\n toolName: BoundedName,\n parametersDigest: Digest,\n /** This request preceded every possible dispatch of the original response. */\n blocksInitialDispatch: Schema.Boolean,\n}) {}\n\n/** The two-valued approval decision family shared by canonical records and ledger intents. */\nexport const ApprovalDecision = Schema.Literals([\"approved\", \"denied\"]);\n\nexport type ApprovalDecision = typeof ApprovalDecision.Type;\n\n/**\n * The canonical decision for one requested approval. Appended by the deciding Attempt (policy\n * auto-decisions) or by the resuming Attempt after a durable `resolveApproval` intent; it is the\n * deterministic decision authority for every later Attempt of the same Run.\n */\nexport class ToolApprovalDecided extends Schema.TaggedClass<ToolApprovalDecided>(\n \"@effect-agent/thread/ToolApprovalDecided\",\n)(\"ToolApprovalDecided\", {\n runId: RunId,\n turn: TurnNumber,\n toolCallId: ToolCallId,\n decision: ApprovalDecision,\n resolver: BoundedName,\n reason: BoundedText,\n}) {}\n\n/**\n * A Run resumed inference without a retained response. One marker makes usage coverage\n * incomplete; it does not count missing provider calls or retain Attempt history.\n */\nexport class ModelResponseInterrupted extends Schema.TaggedClass<ModelResponseInterrupted>(\n \"@effect-agent/thread/ModelResponseInterrupted\",\n)(\"ModelResponseInterrupted\", {\n runId: RunId,\n}) {}\n\n/** Disposable call cancellation: no response or Tool declaration is canonical. */\nexport class ModelCallAborted extends Schema.TaggedClass<ModelCallAborted>()(\"ModelCallAborted\", {\n runId: RunId,\n turnId: TurnId,\n turn: TurnNumber,\n restart: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 2 })),\n reason: Schema.Literal(\"joined-input\"),\n modelUsage: Schema.Array(ModelCallUsage),\n unobservedModelCalls: Schema.Natural,\n}) {}\n\n/**\n * One engine-native compaction committed before the pre-Turn view changes (RUN-026).\n * `coversThrough` is a Thread record sequence: the projection\n * renders records at or below it as a summary (`summarize`), a fresh window (`rollover`), or with\n * cleared tool results (kind `clear-tool-results`), never erasing source\n * history. The record carries no digest by decision: it is appended by the\n * fenced owner into the very log it covers, and re-verifying a digest would\n * re-read the covered range on every wake — the O(history) work compaction\n * exists to remove. Host-supplied ContextCompactor decisions use this same commit path.\n * Summaries exceeding BoundedText are rejected before append, never truncated.\n * `summary` is present exactly for `summarize` records; the projection\n * treats a summarize record without one as invalid and ignores it fail-safe.\n */\nexport class CompactionCreated extends Schema.TaggedClass<CompactionCreated>(\n \"@effect-agent/thread/CompactionCreated\",\n)(\"CompactionCreated\", {\n runId: RunId,\n turn: TurnNumber,\n kind: Schema.Literals([\"clear-tool-results\", \"summarize\", \"rollover\"]),\n coversThrough: CanonicalSequence,\n summary: Schema.optionalKey(BoundedText),\n handoff: Schema.optionalKey(ContextHandoff),\n}) {}\n\nexport class RunFailed extends Schema.TaggedClass<RunFailed>(\"@effect-agent/thread/RunFailed\")(\n \"RunFailed\",\n {\n runId: RunId,\n failure: PersistedJson,\n },\n) {}\n\nconst RunCompletedFields = Schema.Struct({\n runId: RunId,\n output: PersistedJson,\n /** Integrity of validated terminal values, independent of future application codecs. */\n /** Application disposition captured with an ordinary completion. */\n runDisposition: Schema.optionalKey(PersistedJson),\n /** Honest soft-landing marker, present exactly when `exhausted` is present. */\n finishReason: Schema.optionalKey(Schema.Literal(\"budget-exhausted\")),\n /** Budget dimension paired with `finishReason` on a soft landing. */\n exhausted: Schema.optionalKey(ExhaustedLimit),\n}).check(\n Schema.makeFilter(\n (completed) =>\n (completed.finishReason === undefined) === (completed.exhausted === undefined) &&\n (completed.runDisposition === undefined || completed.finishReason === undefined),\n { title: \"Run completion metadata matches its terminal family\" },\n ),\n);\n\nexport class RunCompleted extends Schema.TaggedClass<RunCompleted>(\n \"@effect-agent/thread/RunCompleted\",\n)(\"RunCompleted\", RunCompletedFields) {}\n\nexport class RepairAnnotated extends Schema.TaggedClass<RepairAnnotated>(\n \"@effect-agent/thread/RepairAnnotated\",\n)(\"RepairAnnotated\", {\n reason: BoundedText,\n details: PersistedJson,\n}) {}\n\n/** Terminal outcome family for one accepted Submission (DUR-002). */\nexport const SettlementOutcome = Schema.Literals([\"completed\", \"failed\", \"aborted\"]);\n\nexport type SettlementOutcome = typeof SettlementOutcome.Type;\n\n/**\n * A durable abort command made canonical before the active worker is interrupted (DUR-012).\n * Repeating the same abort command is idempotent; abort never rewrites a prior terminal outcome.\n */\nexport class AbortRequested extends Schema.TaggedClass<AbortRequested>(\n \"@effect-agent/thread/AbortRequested\",\n)(\"AbortRequested\", {\n submissionId: SubmissionId,\n author: BoundedName,\n reason: BoundedText,\n}) {}\n\n/**\n * The single canonical settlement record owed to one accepted Submission (DUR-002, DUR-011).\n * Canonical history is the outcome authority: the ledger row is finalized from this record and\n * never the other way around (DUR-015).\n */\nconst RawSubmissionSettled = Schema.Struct({\n submissionId: SubmissionId,\n settlementId: SettlementId,\n receiptId: ReceiptId,\n outcome: SettlementOutcome,\n runId: Schema.optionalKey(RunId),\n /** Number of retained owning facts through this terminal commit, excluding mutable progress. */\n historyRecordCount: Schema.optionalKey(Schema.Natural),\n result: Schema.optionalKey(PersistedJson),\n /**\n * Application-defined, Schema-encoded disposition for an ordinary completed\n * Run. Absent for budget exhaustion and every non-completed or run-less\n * settlement; consumers decode it with the application definition's Schema.\n */\n runDisposition: Schema.optionalKey(PersistedJson),\n /**\n * Present only when a `completed` Run settled through the final-answer\n * exhaustion resolution (RUN-011, RUN-018): the durable log must be able to\n * distinguish honest-exhaustion completion from ordinary completion without\n * the live event stream. Absent for every ordinary settlement, keeping\n * existing histories and goldens byte-stable (additive, schemaVersion 1).\n */\n finishReason: Schema.optionalKey(Schema.Literal(\"budget-exhausted\")),\n /**\n * The dimension that bound a budget-exhausted completion (RUN-011,\n * RUN-025), carried verbatim from the live `RunCompleted` event so\n * consumers never reconstruct it from message text. Valid only alongside\n * `finishReason: \"budget-exhausted\"`; absent on histories persisted before\n * the dimension became durable (additive, schemaVersion 1).\n */\n exhausted: Schema.optionalKey(ExhaustedLimit),\n /**\n * The typed `AgentPolicyError.limit` of a `failed` hard-rail settlement\n * (RUN-011): which finite policy dimension failed the Run, preserved\n * alongside the bounded `{errorTag, message}` failure projection in\n * `result`. Absent for every non-policy failure and on histories persisted\n * before the limit became durable (additive, schemaVersion 1).\n */\n policyLimit: Schema.optionalKey(PolicyLimit),\n /** Canonical aggregate of all priced model calls made by this Run. */\n usageSummary: Schema.optionalKey(RunUsageSummary),\n /** Calls included in usageSummary but not in any ModelResponseRecorded, retained on failure. */\n uncommittedModelUsage: Schema.optionalKey(Schema.Array(ModelCallUsage)),\n});\n\nconst isPolicyFailureProjection = Schema.is(\n Schema.Struct({ errorTag: Schema.Literal(\"AgentPolicyError\") }),\n);\n\nconst decodeSettlementFailureDiagnostic = Schema.decodeUnknownOption(SettlementFailureDiagnostic, {\n onExcessProperty: \"error\",\n});\n\nconst hasValidSettlementFamily = (settled: typeof RawSubmissionSettled.Type): boolean =>\n (settled.finishReason === undefined || settled.outcome === \"completed\") &&\n (settled.finishReason === undefined) === (settled.exhausted === undefined) &&\n (settled.usageSummary === undefined || settled.runId !== undefined) &&\n (settled.uncommittedModelUsage === undefined ||\n (settled.runId !== undefined && settled.usageSummary !== undefined)) &&\n (settled.runDisposition === undefined ||\n (settled.outcome === \"completed\" &&\n settled.finishReason === undefined &&\n settled.runId !== undefined &&\n settled.result !== undefined)) &&\n (settled.outcome !== \"failed\" ||\n Option.isSome(decodeSettlementFailureDiagnostic(settled.result))) &&\n (settled.outcome !== \"aborted\" || settled.result === undefined) &&\n (settled.policyLimit === undefined ||\n (settled.outcome === \"failed\" && isPolicyFailureProjection(settled.result)));\n\nconst SubmissionSettledFields = RawSubmissionSettled.check(\n Schema.makeFilter(hasValidSettlementFamily, {\n title:\n \"failed settlements require a bounded diagnostic; aborted settlements carry no result; budget metadata must match its settlement family\",\n }),\n);\n\nexport class SubmissionSettled extends Schema.TaggedClass<SubmissionSettled>(\n \"@effect-agent/thread/SubmissionSettled\",\n)(\"SubmissionSettled\", SubmissionSettledFields) {}\n\n/** Canonical completed settlement; joined completion may legitimately carry no independent result. */\nexport type CompletedSubmissionSettled = SubmissionSettled & {\n readonly outcome: \"completed\";\n};\n\n/** Canonical failed settlement; its bounded diagnostic is required and typed. */\nexport type FailedSubmissionSettled = SubmissionSettled & {\n readonly outcome: \"failed\";\n readonly result: SettlementFailureDiagnostic;\n};\n\n/** Canonical aborted settlement; abort records intent rather than fabricating a terminal result. */\nexport type AbortedSubmissionSettled = SubmissionSettled & {\n readonly outcome: \"aborted\";\n readonly result?: never;\n};\n\nexport type SubmissionSettledRecord =\n | CompletedSubmissionSettled\n | FailedSubmissionSettled\n | AbortedSubmissionSettled;\n\n/**\n * Canonical-boundary view of `SubmissionSettled`: `finishReason` is valid\n * only on a `completed` outcome, `exhausted` only alongside\n * `finishReason: \"budget-exhausted\"`, every `failed` outcome requires the exact bounded\n * `SettlementFailureDiagnostic`, aborted outcomes carry no result, and `policyLimit` only occurs\n * on a `failed` outcome whose diagnostic carries the `AgentPolicyError` tag. `runDisposition`\n * occurs only on an ordinary completed settlement with a Run —\n * so a malformed persisted combination such as\n * `{ outcome: \"failed\", finishReason: \"budget-exhausted\" }` or a\n * `policyLimit` contradicting `result.errorTag` fails closed at decode\n * instead of becoming trusted audit history (STORE-006, RUN-011).\n */\nexport const SubmissionSettledRecord = SubmissionSettled.pipe(\n Schema.refine(\n (settled): settled is SubmissionSettledRecord => hasValidSettlementFamily(settled),\n {\n expected:\n \"failed settlements require a bounded diagnostic, aborted settlements carry no result, finishReason only occurs on completed settlements, exhausted only occurs with finishReason budget-exhausted, runDisposition only occurs on an ordinary completed settlement with a Run result, and policyLimit only occurs on a failed AgentPolicyError settlement\",\n },\n ),\n);\n\n/**\n * PARENT-log record of one durable child establishment request:\n * the exact parent Tool Call, delegation and target identity, the digests that pin the child's\n * Binding/input/grant, the fenced budget reservation, and the INTENDED child identity derived\n * deterministically from the parent Run and Tool Call pair (D4). `childInput` carries the\n * prepared child input in encoded form (D3) so recovery can complete child admission from this\n * record alone — no live delegation handler is required. `childPrincipal`/`childIdempotencyKey`\n * carry the ledger admission scope with the ledger's exact bounds; the layering keeps their\n * branded Schemas in the ledger port.\n */\nexport class SubagentRequested extends Schema.TaggedClass<SubagentRequested>(\n \"@effect-agent/thread/SubagentRequested\",\n)(\"SubagentRequested\", {\n runId: RunId,\n turnId: TurnId,\n turn: TurnNumber,\n toolCallId: ToolCallId,\n delegationId: DelegationId,\n targetAgentId: AgentId,\n targetDigests: DefinitionDigests,\n childInput: PersistedJson,\n childInputDigest: Digest,\n grantDigest: Digest,\n reservationId: BoundedName,\n reservationDigest: Digest,\n childThreadId: ThreadId,\n childPrincipal: BoundedName,\n childIdempotencyKey: BoundedName,\n /** Effective invocation bound, already clamped to the delegation and child Definition. */\n toolCallAllowance: Schema.optionalKey(Schema.Int.check(Schema.isGreaterThan(0))),\n policy: Schema.optionalKey(Schema.toCodecJson(AgentPolicy)),\n budget: Schema.optionalKey(SubagentBudgetReservation),\n grant: Schema.optionalKey(SubagentGrant),\n depth: Schema.optionalKey(DelegationDepth),\n}) {}\n\n/**\n * PARENT-log record that the intended child exists as accepted work:\n * the full established child identity. It is appended only after the child Receipt\n * exists — SUB-017 holds by construction because `childReceiptId` is a required field.\n */\nexport class SubagentStarted extends Schema.TaggedClass<SubagentStarted>(\n \"@effect-agent/thread/SubagentStarted\",\n)(\"SubagentStarted\", {\n runId: RunId,\n toolCallId: ToolCallId,\n childThreadId: ThreadId,\n childSubmissionId: SubmissionId,\n childReceiptId: ReceiptId,\n childRunId: RunId,\n}) {}\n\n/**\n * PARENT-log record of one verified child settlement join:\n * the child's canonical Settlement identity and outcome, the child usage summary, and the FINAL\n * consumed/released accounting decision for the reservation. It commits in ONE atomic batch with\n * the parent `ToolCallSettled` record (SUB-019); `beginChildBudgetRelease` replays\n * `finalAccounting` from this record, so canonical history authorizes the release (DUR-015).\n */\nexport class SubagentJoined extends Schema.TaggedClass<SubagentJoined>(\n \"@effect-agent/thread/SubagentJoined\",\n)(\"SubagentJoined\", {\n runId: RunId,\n toolCallId: ToolCallId,\n childSubmissionId: SubmissionId,\n childSettlementId: SettlementId,\n childOutcome: SettlementOutcome,\n usageSummary: PersistedJson,\n usage: Schema.optionalKey(RunTotals),\n delegatedUsage: Schema.optionalKey(RunTotals),\n reservationId: BoundedName,\n finalAccounting: PersistedJson,\n}) {}\n\n/**\n * CHILD-log immutable lineage: the Parent Link plus the digests that pin\n * the child's definition, input, and authority grant. It is the first record after the child's\n * `ThreadCreated` (its own single-record batch, so the generic `thread-created:{cid}`\n * batch identity is never contradicted) and the join path verifies it fail-closed — a fabricated\n * child or parent identity fails Parent Link verification (SUB-004, D10).\n */\nexport class SubagentLineageRecorded extends Schema.TaggedClass<SubagentLineageRecorded>(\n \"@effect-agent/thread/SubagentLineageRecorded\",\n)(\"SubagentLineageRecorded\", {\n parentLink: SubagentParentLink,\n parentSubmissionId: SubmissionId,\n childDefinitionDigests: DefinitionDigests,\n childInputDigest: Digest,\n grantDigest: Digest,\n /** Copied from the canonical request before readiness; restored for every child Attempt. */\n toolCallAllowance: SubagentRequested.fields.toolCallAllowance,\n policy: SubagentRequested.fields.policy,\n budget: SubagentRequested.fields.budget,\n grant: SubagentRequested.fields.grant,\n}) {}\n\nexport const WorkerReportingIntent = Schema.Struct({\n /** Absent only in historical custom-report origins; these remain readable as evidence. */\n mode: Schema.optionalKey(Schema.Literal(\"standard\")),\n sourceDigests: DefinitionDigests,\n /** Historical custom destination evidence. New worker origins never write this field. */\n destinationDelegationId: Schema.optionalKey(DelegationId),\n /** Frozen by the sender before acceptance. Standard emission never reads the source runtime. */\n returnAddress: Schema.optionalKey(\n Schema.Struct({\n input: PersistedJson,\n principal: Principal,\n policy: Schema.toCodecJson(AgentPolicy),\n depth: Schema.Natural,\n grant: Schema.optionalKey(SubagentGrant),\n /** Encoded to bound recursive worker origins at the admission boundary. */\n workerAdmission: Schema.optionalKey(PersistedJson),\n }),\n ),\n}).check(\n Schema.makeFilter((value) => (value.mode === \"standard\") === (value.returnAddress !== undefined)),\n);\n\n/** Exact successful predecessor evidence; a locator alone grants no authority. */\nexport const WorkerContinuation = Schema.Struct({\n worker: WorkerRef,\n receipt: Receipt,\n settlementId: SettlementId,\n}).check(Schema.makeFilter((value) => value.worker.threadId === value.receipt.threadId));\n\nexport type WorkerContinuation = typeof WorkerContinuation.Type;\n\n/** Immutable worker Thread origin. Each input has its own digest and parameters separately. */\nexport const WorkerOrigin = Schema.Struct({\n worker: WorkerRef,\n source: WorkerSource,\n /** A new assignment may continue this completed, immutable predecessor. */\n continuationOf: Schema.optionalKey(WorkerContinuation),\n /** Frozen funding owner; worker-run renews only for a new native Run. */\n budgetScope: WorkerBudgetScope,\n /** Frozen at worker creation; older origins remain reusable. */\n lifecycle: Schema.optionalKey(Schema.Literal(\"assignment\")),\n targetDigests: DefinitionDigests,\n policy: Schema.toCodecJson(AgentPolicy),\n budget: SubagentBudgetReservation,\n grant: SubagentGrant,\n depth: DelegationDepth,\n toolCallAllowance: Schema.optionalKey(Schema.Int.check(Schema.isGreaterThan(0))),\n firstMessageId: IdempotencyKey,\n createdAtMillis: Schema.Natural,\n expiresAtMillis: Schema.Natural,\n /** Exact source registration owns projection; absence means reporting was not declared. */\n reporting: Schema.optionalKey(WorkerReportingIntent),\n}).check(Schema.makeFilter((value) => value.expiresAtMillis > value.createdAtMillis));\n\nexport type WorkerOrigin = typeof WorkerOrigin.Type;\n\n/** Frozen per-input metadata; it grants no attached-child or parent-abort semantics. */\nexport const WorkerAdmission = Schema.Struct({\n origin: WorkerOrigin,\n /** Run executing this handoff, independently of immutable lineage and subtree funding. */\n executionRunId: Schema.NullOr(RunId),\n messageId: IdempotencyKey,\n parameters: PersistedJson,\n createdAtMillis: Schema.Natural,\n /** Host-bound source input whose subtree funds this input; never chosen by a model. */\n sourceSubmissionId: Schema.optionalKey(SubmissionId),\n /** Enables routed receipt lookup when the delivery is owned by a reporting child. */\n deliveryPrincipal: Schema.optionalKey(Principal),\n /** Proven framework updates use a separate bounded input-capacity partition. */\n reportKind: Schema.optionalKey(Schema.Literal(\"update\")),\n});\n\nexport type WorkerAdmission = typeof WorkerAdmission.Type;\n\n/** Owner command retained before the destination inbox is sealed. */\nexport class WorkerStopRequested extends Schema.TaggedClass<WorkerStopRequested>()(\n \"WorkerStopRequested\",\n {\n command: WorkerStop,\n principal: Principal,\n sourceSubmissionId: Schema.optionalKey(SubmissionId),\n },\n) {}\n\n/** The named canonical obligation closed only after its owning state durably completes. */\nexport class WorkHandoffCompleted extends Schema.TaggedClass<WorkHandoffCompleted>()(\n \"WorkHandoffCompleted\",\n { preparationId: RecordId, ownerId: Schema.NonEmptyString.check(Schema.isMaxLength(4096)) },\n) {}\n\n/** Source-log capacity reservation, retained independently of the source Run's settlement. */\nexport class WorkerInputRequested extends Schema.TaggedClass<WorkerInputRequested>()(\n \"WorkerInputRequested\",\n { admission: WorkerAdmission, inputDigest: Digest },\n) {}\n\n/** Child-log origin, reconstructed from a retained delivery before the child becomes ready. */\nexport class WorkerOriginRecorded extends Schema.TaggedClass<WorkerOriginRecorded>()(\n \"WorkerOriginRecorded\",\n { origin: WorkerOrigin },\n) {}\n\n/** Canonical child completion acknowledgement releases only this input's active capacity. */\nexport class WorkerInputCompleted extends Schema.TaggedClass<WorkerInputCompleted>()(\n \"WorkerInputCompleted\",\n {\n messageId: IdempotencyKey,\n workerThreadId: ThreadId,\n submissionId: SubmissionId,\n receiptId: ReceiptId,\n settlementId: SettlementId,\n completedAtMillis: Schema.Natural,\n /** New acknowledgements prove that this input's external effects are resolved. */\n effectsResolved: Schema.optionalKey(Schema.Literal(true)),\n },\n) {}\n\n/**\n * Frozen report decision for one actual Run, shared by every joined Receipt. The envelope is\n * a Schema-encoded PreparedInput, validated before append and decoded again on recovery.\n * Keeping the encoded value here avoids a Records/PreparedInput schema dependency cycle.\n */\nexport class WorkerReportPrepared extends Schema.TaggedClass<WorkerReportPrepared>()(\n \"WorkerReportPrepared\",\n {\n runId: RunId,\n messageId: IdempotencyKey,\n envelope: PersistedJson,\n createdAtMillis: Schema.Natural,\n deadlineAtMillis: Schema.Natural,\n predecessor: Schema.optionalKey(IdempotencyKey),\n },\n) {}\n\n/** Accepted update and its optional frozen parent delivery are one atomic canonical fact. */\nexport class AgentUpdateEmitted extends Schema.TaggedClass<AgentUpdateEmitted>()(\n \"AgentUpdateEmitted\",\n {\n update: Update,\n definitions: DefinitionDigests,\n delivery: Schema.optionalKey(\n Schema.Struct({\n messageId: IdempotencyKey,\n envelope: PersistedJson,\n createdAtMillis: Schema.Natural,\n deadlineAtMillis: Schema.Natural,\n predecessor: Schema.optionalKey(IdempotencyKey),\n }),\n ),\n },\n) {}\n\n/** Permanent bounded report refusal. Application errors and raw Run dispositions stay private. */\nexport class WorkerReportRefused extends Schema.TaggedClass<WorkerReportRefused>()(\n \"WorkerReportRefused\",\n {\n runId: RunId,\n messageId: IdempotencyKey,\n reason: Schema.Literals([\n \"filtered\",\n \"declaration-unavailable\",\n \"destination\",\n \"projection\",\n \"input\",\n \"preparation\",\n \"timeout\",\n \"defect\",\n \"expired\",\n \"denied\",\n \"capacity\",\n ]),\n },\n) {}\n\n/** Frozen source proof of peer provenance, readable through routed canonical storage. */\nexport class PeerMessagePrepared extends Schema.TaggedClass<PeerMessagePrepared>()(\n \"PeerMessagePrepared\",\n {\n messageId: IdempotencyKey,\n source: WorkerSource,\n sourcePrincipal: Principal,\n operation: Schema.Literals([\"send\", \"reply\"]),\n deadlineAtMillis: Schema.Int.check(Schema.isGreaterThan(0)),\n encodedEnvelope: PersistedJson,\n },\n) {}\n\n/**\n * One disjoint subtree slice shared by attached and background children of a source input.\n * The source keeps its own execution ceiling; descendants spend only the remaining allocation.\n * Reservations include future descendant slots and never refund, including after interruption.\n * resultBytes reserves the terminal/projection result, not cumulative Tool output bytes.\n */\nexport class SubtreeBudgetReserved extends Schema.TaggedClass<SubtreeBudgetReserved>()(\n \"SubtreeBudgetReserved\",\n {\n reservationId: BoundedName,\n /** Run executing this reservation; null for host-owned follow-ups. Grants no authority. */\n executionRunId: Schema.NullOr(RunId),\n sourceSubmissionId: Schema.optionalKey(SubmissionId),\n childThreadId: ThreadId,\n lifetime: Schema.Literals([\"attached\", \"background\"]),\n depth: DelegationDepth,\n policy: Schema.toCodecJson(AgentPolicy),\n grant: SubagentGrant,\n budget: SubagentBudgetReservation,\n },\n) {}\n\n/** Fact identity; active-only references resolve inside their Run checkpoint. */\nexport const EvidenceReference = Schema.Struct({ recordId: RecordId });\nexport type EvidenceReference = typeof EvidenceReference.Type;\n\n/**\n * Receipt-free factual closure. The receiver's irreversible inbox seal precedes its exact-key\n * NotAdmitted observation; a refusal or an absent lookup alone cannot close reserved work.\n * Invocation and allocation charges remain with the original funding Run.\n */\nexport class WorkerInputRefused extends Schema.TaggedClass<WorkerInputRefused>()(\n \"WorkerInputRefused\",\n Schema.Struct({\n messageId: IdempotencyKey,\n workerThreadId: ThreadId,\n reservation: EvidenceReference,\n stop: EvidenceReference,\n deliveryVersion: Schema.Int.check(Schema.isGreaterThan(0)),\n envelopeDigest: Digest,\n receiver: Schema.Struct({\n threadId: ThreadId,\n principal: Principal,\n idempotencyKey: IdempotencyKey,\n inputDigest: Digest,\n stopped: Schema.Literal(true),\n resolution: Schema.Literal(\"NotAdmitted\"),\n }),\n }).check(Schema.makeFilter((value) => value.receiver.threadId === value.workerThreadId)),\n) {}\n\nexport const MAX_RUN_CONTINUATION_BYTES = 8_192;\n/** Incremental record JSON per Turn, including progress and the first Turn's initial context. */\nexport const MAX_TURN_CANONICAL_BYTES = MAX_CANONICAL_RECORD_BYTES;\n/** Room retained for a bounded terminal failure and its atomic progress publication. */\nexport const RUN_TERMINAL_RESERVE_BYTES = 256 * 1024;\n/** Bounded closing facts remain publishable even after dispatch capacity is exhausted. */\nexport const MAX_RUN_TERMINAL_BYTES = 2 * MAX_CANONICAL_RECORD_BYTES + RUN_TERMINAL_RESERVE_BYTES;\nexport const RUN_TERMINAL_RESERVE_RECORDS = 4;\nexport const MAX_RUN_EVIDENCE_RECORDS = 16_384;\nexport const MAX_RUN_EVIDENCE_BYTES = 32 * 1024 * 1024;\nexport const MAX_RUN_RECOVERY_SUFFIX_RECORDS = 64;\nexport const MAX_RUN_RECOVERY_SUFFIX_BYTES = 2 * 1024 * 1024;\nexport const MAX_RUN_TOOL_CALL_IDENTITIES = 4_096;\n\nexport const ContextEvidenceReference = Schema.Struct({\n ...EvidenceReference.fields,\n sequence: CanonicalSequence,\n});\n\nexport class RunContextRecorded extends Schema.TaggedClass<RunContextRecorded>()(\n \"RunContextRecorded\",\n Schema.Struct({\n version: Schema.Literal(1),\n runId: RunId,\n /** Only evaluated instructions and this Run's input; prior history remains in its facts. */\n runScopedInput: PersistedJson,\n /** Inclusive range; historyThrough + 1 denotes an empty range. */\n historyFrom: CanonicalSequence.check(Schema.isGreaterThan(0)),\n /** Fixed prior-history boundary, immediately before the original accepted input. */\n historyThrough: CanonicalSequence,\n /** Facts below historyFrom still needed after summarize or rollover coverage. */\n retained: Schema.Array(ContextEvidenceReference).check(Schema.isMaxLength(4_096)),\n /** Pins the projected prior Prompt, not a second copy or a per-record manifest. */\n historyDigest: Digest,\n priorHistoryLength: Schema.Natural,\n contextWindowId: Schema.optionalKey(BoundedName),\n }).check(\n Schema.makeFilter(\n (context) =>\n context.historyFrom <= context.historyThrough + 1 &&\n context.retained.every(\n (ref, index) =>\n ref.sequence > (context.retained[index - 1]?.sequence ?? 0) &&\n ref.sequence < context.historyFrom,\n ),\n { title: \"Saved context retains an ordered prefix below its original history range\" },\n ),\n ),\n) {}\n\n/** Accumulated charges; replacement Attempts never replenish or charge these again. */\nexport const ContinuationAccounting = Schema.Struct({\n ...RunPolicyUsage.fields,\n modelRestarts: Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 2 })),\n modelCalls: Schema.Natural,\n unobservedModelCalls: Schema.Natural,\n inputTokens: Schema.Natural,\n outputTokens: Schema.Natural,\n lastInputTokens: Schema.Natural,\n lastOutputTokens: Schema.Natural,\n costMicrousd: Schema.Natural,\n /** The last complete operation batch whose declaration-ordered failure streak was charged. */\n accountedToolTurn: Schema.Natural,\n});\n\nexport type ContinuationAccounting = typeof ContinuationAccounting.Type;\n\n/** Semantic execution boundaries, never engine stacks, fibers, or program counters. */\nexport const RunPosition = Schema.Literals([\n \"starting\",\n \"awaiting-model\",\n \"processing-operations\",\n \"waiting-approval\",\n \"waiting-dependency\",\n \"unknown\",\n \"settling\",\n \"settled\",\n]);\n\n/**\n * Current interpreter progress, replaced atomically with lastFact under the Thread fence.\n * lastFact is the exact accounted frontier of the same commit. References resolve within this\n * Thread's history or its authoritative active checkpoint. Results, operation declarations,\n * approvals and delivery obligations remain canonical; evaluated context and validated completion\n * belong to active state. Neither the checkpoint nor its revision grants execution authority.\n * Retired intermediate revisions are not historical verification evidence.\n */\nexport class RunContinuation extends Schema.TaggedClass<RunContinuation>()(\n \"RunContinuation\",\n Schema.Struct({\n version: Schema.Literal(1),\n runId: RunId,\n submissionId: SubmissionId,\n revision: Schema.Natural.check(Schema.isGreaterThan(0)),\n /** Number of this Run's non-continuation facts accounted for at the frontier. */\n recordCount: Schema.Natural.check(\n Schema.isLessThanOrEqualTo(MAX_RUN_EVIDENCE_RECORDS + RUN_TERMINAL_RESERVE_RECORDS),\n ),\n /** Cumulative committed owning fact bytes, excluding progress; deletion never refunds them. */\n recordBytes: Schema.Natural.check(\n Schema.isLessThanOrEqualTo(MAX_RUN_EVIDENCE_BYTES + MAX_RUN_TERMINAL_BYTES),\n ),\n /** Logical Turn whose incremental durable commit bytes are currently being charged. */\n turn: Schema.Natural,\n turnBytes: Schema.Natural.check(\n Schema.isLessThanOrEqualTo(MAX_TURN_CANONICAL_BYTES + MAX_RUN_TERMINAL_BYTES),\n ),\n /** Closing facts consume the terminal reserve, rather than reserving it again. */\n terminalBytes: Schema.Natural.check(Schema.isLessThanOrEqualTo(MAX_RUN_TERMINAL_BYTES)),\n terminalRecords: Schema.Natural.check(Schema.isLessThanOrEqualTo(RUN_TERMINAL_RESERVE_RECORDS)),\n /** Conservative room for terminal usage grouping; derived only from canonical model usage. */\n terminalUsageBytes: Schema.Natural.check(Schema.isLessThanOrEqualTo(MAX_RUN_EVIDENCE_BYTES)),\n originalInput: EvidenceReference,\n savedContext: Schema.optionalKey(EvidenceReference),\n latestResponse: Schema.optionalKey(EvidenceReference),\n terminal: Schema.optionalKey(EvidenceReference),\n lastFact: EvidenceReference,\n position: RunPosition,\n accounting: ContinuationAccounting,\n }),\n) {}\n\n/** Bump only when the meaning of an existing record changes, independently of SQL layout. */\nexport const CURRENT_RECORD_VERSION = 6;\nexport const CURRENT_RECORD_FORMAT = \"effect-agent/thread@6\";\n\n/** Durable fact and execution-command schemas. Unsupported controls fail before execution. */\nexport const KnownRecordPayload = Schema.Union([\n ThreadCreated,\n UserInputRecorded,\n RunStartedRecord,\n RunDurationExhausted,\n RunPolicyUsageReserved,\n ModelCompleted,\n ModelResponseRecorded,\n ToolCallSettled,\n ToolCallUnknown,\n ToolCallResolved,\n ToolStepSettled,\n ToolApprovalRequested,\n ToolApprovalDecided,\n ModelResponseInterrupted,\n ModelCallAborted,\n CompactionCreated,\n RunFailed,\n RunCompleted,\n AbortRequested,\n SubmissionSettledRecord,\n SubagentRequested,\n SubagentStarted,\n SubagentJoined,\n SubagentLineageRecorded,\n WorkerInputRequested,\n WorkerStopRequested,\n WorkHandoffCompleted,\n WorkerOriginRecorded,\n WorkerInputCompleted,\n WorkerInputRefused,\n WorkerReportPrepared,\n AgentUpdateEmitted,\n WorkerReportRefused,\n PeerMessagePrepared,\n SubtreeBudgetReserved,\n RepairAnnotated,\n RunContextRecorded,\n RunContinuation,\n]);\n\n/** This format accepts only understood facts; unknown control cannot grant permission. */\nexport const CanonicalRecordPayload = KnownRecordPayload;\n\nexport type CanonicalRecordPayload = typeof CanonicalRecordPayload.Type;\n\n/**\n * Versioned durable fact. Retained history acquires Thread ordering at its atomic commit;\n * active operational facts keep their identities without a canonical sequence.\n */\nexport class RecordEnvelope extends Schema.Class<RecordEnvelope>(\n \"@effect-agent/thread/RecordEnvelope\",\n)({\n recordId: RecordId,\n family: Schema.Literal(\"thread\"),\n schemaVersion: Schema.Literal(1),\n createdAt: Schema.DateTimeUtcFromString,\n deploymentId: DeploymentId,\n payload: CanonicalRecordPayload,\n}) {}\n\n/** Backward-compatible domain name for a canonical record. */\nexport const CanonicalRecord = RecordEnvelope;\nexport type CanonicalRecord = RecordEnvelope;\n\n/** One non-empty, bounded, idempotent atomic append unit. */\nexport class CanonicalBatch extends Schema.Class<CanonicalBatch>(\n \"@effect-agent/thread/CanonicalBatch\",\n)({\n batchId: BatchId,\n producerId: ProducerId,\n records: Schema.NonEmptyArray(RecordEnvelope).check(Schema.isMaxLength(256)),\n}) {}\n\n/**\n * A committed record with its Thread ordering and opaque resumable observation cursor.\n */\nexport class CanonicalRecordEnvelope extends Schema.Class<CanonicalRecordEnvelope>(\n \"@effect-agent/thread/CanonicalRecordEnvelope\",\n)({\n threadId: ThreadId,\n batchId: BatchId,\n sequence: CanonicalSequence,\n offset: ObservationOffset,\n record: RecordEnvelope,\n}) {}\n\n/** Read-only history of validated facts. Original inputs establish Run view boundaries. */\nexport const PromptRecordPayload = Schema.TaggedUnion({\n UserInputRecorded: {\n runId: UserInputRecorded.fields.runId,\n kind: UserInputRecorded.fields.kind,\n submissionId: UserInputRecorded.fields.submissionId,\n },\n ModelCompleted: {\n runId: RunId,\n history: Schema.optionalKey(HistoryPrompt),\n },\n ModelResponseRecorded: {\n runId: RunId,\n turn: TurnNumber,\n messages: HistoryPrompt,\n runScopedPrefixLength: ModelResponseRecorded.fields.runScopedPrefixLength,\n },\n ToolCallSettled: {\n runId: RunId,\n toolCallId: ToolCallId,\n toolName: BoundedName,\n result: Schema.Json,\n isFailure: Schema.Boolean,\n },\n CompactionCreated: CompactionCreated.fields,\n RunCompleted: { runId: RunId },\n RunFailed: { runId: RunId },\n SubmissionSettled: {\n runId: Schema.optionalKey(RunId),\n submissionId: SubmissionId,\n outcome: SettlementOutcome,\n },\n});\n\n/** Native selections and the projection decoder share this single list of supported facts. */\nexport const PROMPT_EVIDENCE_TAGS: ReadonlyArray<keyof typeof PromptRecordPayload.cases> =\n Struct.keys(PromptRecordPayload.cases);\n\nexport const PromptRecord = Schema.Struct({ recordId: RecordId, payload: PromptRecordPayload });\nexport type PromptRecord = typeof PromptRecord.Type;\n\n/** Not integrity evidence: omitted canonical wire must be read through the full record port. */\nexport const PromptRecordEnvelope = Schema.Struct({\n threadId: ThreadId,\n sequence: CanonicalSequence,\n record: PromptRecord,\n});\n\nexport type PromptRecordEnvelope = typeof PromptRecordEnvelope.Type;\n\nexport const CURRENT_CANONICAL_SCHEMA_VERSION = 1 as const;\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RunContinuation-BF95Ncv2.mjs","names":["failure"],"sources":["../src/durable/internal/evidence.ts","../src/durable/internal/run-context-reader.ts","../src/durable/internal/run-context.ts","../src/durable/RunContinuation.ts"],"sourcesContent":["import { Effect, Option } from \"effect\";\n\nimport type { ThreadId } from \"../../core/Identifiers.ts\";\nimport { EvidenceReference, type RecordEnvelope } from \"../Records.ts\";\nimport { getRecord, ThreadStoreError } from \"../ThreadStore.ts\";\n\nconst failure = (message: string, cause?: unknown) =>\n ThreadStoreError.make({\n operation: \"RunContinuation\",\n message,\n ...(cause === undefined ? {} : { cause }),\n });\n\n/** References identify immutable facts; schema and owning readers validate their meaning. */\nexport const reference = (record: RecordEnvelope) =>\n Effect.succeed(EvidenceReference.make({ recordId: record.recordId }));\n\n/** Resolve an immutable fact by Thread and record identity. A failed reference leaves the original work owed. */\nexport const resolveEvidence = Effect.fnUntraced(function* (\n threadId: ThreadId,\n ref: EvidenceReference,\n) {\n const found = yield* getRecord({ threadId, recordId: ref.recordId });\n\n if (Option.isNone(found)) return yield* failure(\"Required canonical evidence is unavailable\");\n\n return found.value;\n});\n","import { Context, Effect, Layer, Option, type Stream } from \"effect\";\n\nimport type { ThreadId } from \"../../core/Identifiers.ts\";\nimport type { CanonicalRecordEnvelope, RecordId } from \"../Records.ts\";\nimport {\n getRecord,\n ThreadReader,\n type ThreadNotMaterialized,\n type ThreadStoreError,\n type ThreadPromptRead,\n} from \"../ThreadStore.ts\";\nimport type { JournalRecordEnvelope } from \"./journal-metadata.ts\";\n\n/** Canonical history access bound by the recovery or verification-snapshot owner. */\nexport class RunContextReader extends Context.Service<\n RunContextReader,\n {\n /** Recovery decodes the prompt view; verification supplies full canonical envelopes. */\n readonly read: (\n request: ThreadPromptRead,\n ) => Stream.Stream<JournalRecordEnvelope, ThreadStoreError | ThreadNotMaterialized>;\n readonly record: (\n recordId: RecordId,\n ) => Effect.Effect<\n CanonicalRecordEnvelope | undefined,\n ThreadStoreError | ThreadNotMaterialized\n >;\n }\n>()(\"@effect-agent/thread/RunContextReader\") {\n static layer(threadId: ThreadId) {\n return Layer.effect(\n RunContextReader,\n Effect.gen(function* () {\n const reader = yield* ThreadReader;\n\n return RunContextReader.of({\n read: reader.readPrompt,\n record: (recordId) =>\n getRecord({ threadId, recordId }).pipe(\n Effect.provideService(ThreadReader, reader),\n Effect.map(Option.getOrUndefined),\n ),\n });\n }),\n );\n }\n}\n","import { type Crypto, Effect, Schema, Stream } from \"effect\";\nimport { Prompt } from \"effect/ai\";\n\nimport { canonicalJson, digestCanonicalJson } from \"../Digest.ts\";\nimport {\n CanonicalSequence,\n PromptRecord,\n type RecordId,\n PROMPT_EVIDENCE_TAGS,\n type CanonicalRecordEnvelope,\n type RunContextRecorded,\n} from \"../Records.ts\";\nimport {\n projectRunJournalStream,\n RunJournalError,\n type RunJournalContext,\n type JournalBoundary,\n} from \"../RunJournal.ts\";\nimport type { ThreadNotMaterialized, ThreadStoreError } from \"../ThreadStore.ts\";\nimport type { JournalRecordEnvelope } from \"./journal-metadata.ts\";\nimport { RunContextReader } from \"./run-context-reader.ts\";\n\nconst invalid = (message: string) => RunJournalError.make({ message });\nconst encodePrompt = Schema.encodeEffect(Schema.toCodecJson(Prompt.Prompt));\n\nconst decodePromptRecord = Schema.decodeUnknownEffect(PromptRecord);\nconst promptTags = new Set<string>(PROMPT_EVIDENCE_TAGS);\n\nconst projectHistoryRecord = (\n entry: JournalRecordEnvelope,\n ownerRunId: RunContextRecorded[\"runId\"],\n): Effect.Effect<JournalRecordEnvelope> => {\n if (!(\"batchId\" in entry)) return Effect.succeed(entry);\n const payload = entry.record.payload;\n\n if ((\"runId\" in payload && payload.runId === ownerRunId) || !promptTags.has(payload._tag))\n return Effect.succeed(entry);\n\n return decodePromptRecord({ recordId: entry.record.recordId, payload }).pipe(\n Effect.map((record) => ({ threadId: entry.threadId, sequence: entry.sequence, record })),\n // Coverage and later canonical validation must retain their original error precedence.\n Effect.catchTag(\"SchemaError\", () => Effect.succeed(entry)),\n );\n};\n\nexport const encodeRunHistory = (prompt: Prompt.Prompt) =>\n encodePrompt(prompt).pipe(\n Effect.map(canonicalJson),\n Effect.mapError((cause) =>\n RunJournalError.make({ message: \"Original model history integrity is unavailable\", cause }),\n ),\n );\n\nexport const digestRunHistory = (prompt: Prompt.Prompt) =>\n encodeRunHistory(prompt).pipe(\n Effect.flatMap(digestCanonicalJson),\n Effect.mapError((cause) =>\n RunJournalError.make({ message: \"Original model history integrity is unavailable\", cause }),\n ),\n );\n\nexport const validateContextBoundary = (\n context: RunContextRecorded,\n original: CanonicalRecordEnvelope,\n): Effect.Effect<void, RunJournalError> =>\n original.record.payload._tag !== \"UserInputRecorded\" ||\n original.record.payload.kind !== \"user\" ||\n original.record.payload.runId !== context.runId ||\n context.historyThrough + 1 !== original.sequence ||\n context.historyFrom < 1 ||\n context.historyFrom > original.sequence ||\n context.retained.some(\n (ref, index) =>\n ref.sequence <= (context.retained[index - 1]?.sequence ?? 0) ||\n ref.sequence >= context.historyFrom,\n )\n ? Effect.fail(invalid(\"Saved context has an invalid original admission boundary\"))\n : Effect.void;\n\ntype ProjectedRunHistory = Pick<\n RunJournalContext,\n \"prompt\" | \"historyFrom\" | \"contextWindowId\" | \"boundaries\"\n>;\n\n/** Reconstruct the exact saved range using the owner's history validation boundary. */\nconst readProjectedHistory = Effect.fnUntraced(function* (\n context: RunContextRecorded,\n original: CanonicalRecordEnvelope,\n): Effect.fn.Return<\n ProjectedRunHistory,\n RunJournalError | ThreadStoreError | ThreadNotMaterialized,\n RunContextReader | Crypto.Crypto\n> {\n yield* validateContextBoundary(context, original);\n const reader = yield* RunContextReader;\n const records: Array<JournalRecordEnvelope> = [];\n\n for (const ref of context.retained) {\n const entry = yield* reader.record(ref.recordId);\n\n if (\n entry === undefined ||\n entry.threadId !== original.threadId ||\n entry.record.recordId !== ref.recordId ||\n entry.sequence !== ref.sequence\n )\n return yield* invalid(\"Saved context has missing or corrupt retained evidence\");\n records.push(yield* projectHistoryRecord(entry, context.runId));\n }\n\n let after = CanonicalSequence.make(context.historyFrom - 1);\n\n while (after < context.historyThrough) {\n const page = yield* reader\n .read({\n threadId: original.threadId,\n throughSequence: context.historyThrough,\n afterSequence: after,\n limit: 8,\n })\n .pipe(Stream.take(9), Stream.runCollect);\n\n if (page.length > 8) return yield* invalid(\"Saved context page exceeds its record bound\");\n for (const entry of page) {\n if (\n entry.threadId !== original.threadId ||\n entry.sequence <= after ||\n entry.sequence > context.historyThrough\n )\n return yield* invalid(\"Saved context range has invalid canonical ordering\");\n after = entry.sequence;\n records.push(yield* projectHistoryRecord(entry, context.runId));\n }\n if (page.length < 8) break;\n }\n\n let through = 0;\n const retained = new Map(context.retained.map((ref) => [ref.sequence, ref.recordId]));\n\n for (const entry of records) {\n if (\n entry.threadId !== original.threadId ||\n entry.sequence <= through ||\n entry.sequence > context.historyThrough ||\n (entry.sequence < context.historyFrom &&\n retained.get(entry.sequence) !== entry.record.recordId)\n )\n return yield* invalid(\"Saved context has invalid canonical range evidence\");\n through = entry.sequence;\n retained.delete(entry.sequence);\n }\n if (retained.size !== 0) return yield* invalid(\"Saved context is missing retained evidence\");\n\n const boundaries: Array<JournalBoundary> = [];\n\n records.push(original);\n\n const history = yield* projectRunJournalStream(\n Stream.fromIterable(records),\n context.runId,\n (boundary) => boundaries.push(boundary),\n );\n\n return {\n prompt: history.prompt,\n historyFrom: history.historyFrom,\n boundaries,\n ...(history.contextWindowId === undefined ? {} : { contextWindowId: history.contextWindowId }),\n };\n});\n\n/** Both readers preserve the exact saved context and historyDigest. */\nexport const readRunContext = Effect.fnUntraced(function* (\n context: RunContextRecorded,\n original: CanonicalRecordEnvelope,\n recordId: RecordId,\n): Effect.fn.Return<\n RunJournalContext,\n RunJournalError | ThreadStoreError | ThreadNotMaterialized,\n RunContextReader | Crypto.Crypto\n> {\n const history = yield* readProjectedHistory(context, original);\n const historyDigest = yield* digestRunHistory(history.prompt);\n\n if (\n historyDigest !== context.historyDigest ||\n history.historyFrom !== context.historyFrom ||\n history.prompt.content.length !== context.priorHistoryLength ||\n history.contextWindowId !== context.contextWindowId\n )\n return yield* invalid(\"Saved context differs from its original model history\");\n\n const prefix = yield* Schema.decodeUnknownEffect(Prompt.Prompt)(context.runScopedInput).pipe(\n Effect.mapError(() => invalid(\"Saved Run instructions and input are malformed\")),\n );\n\n return {\n runId: context.runId,\n prompt: Prompt.fromMessages([...history.prompt.content, ...prefix.content]),\n priorHistoryLength: context.priorHistoryLength,\n historyFrom: context.historyFrom,\n boundaries: history.boundaries.filter(\n (boundary) => boundary.promptLength <= context.priorHistoryLength,\n ),\n recordId,\n ...(context.contextWindowId === undefined ? {} : { contextWindowId: context.contextWindowId }),\n };\n});\n","import { Context, DateTime, Effect, Option, Result, Schema, Semaphore, Stream } from \"effect\";\nimport { Prompt } from \"effect/ai\";\n\nimport { AgentPersistenceCapacityError } from \"../core/AgentError.ts\";\nimport type { RunId, SubmissionId, ThreadId } from \"../core/Identifiers.ts\";\nimport { ToolCallId } from \"../core/Identifiers.ts\";\nimport { utf8ByteLength } from \"../core/internal/utf8.ts\";\nimport { resolveEvidence } from \"./internal/evidence.ts\";\nimport { continuationUsage } from \"./internal/usage-totals.ts\";\nexport { reference, resolveEvidence } from \"./internal/evidence.ts\";\nimport {\n captureRecord,\n recordEncoding,\n type ProgressAppendRecord,\n} from \"./internal/record-encoding.ts\";\nimport {\n canonicalRunIds,\n executionRunIds,\n isPreContinuationFact,\n isTerminalBudgetFact,\n} from \"./internal/record-ownership.ts\";\nexport { terminalUsageCharge } from \"./internal/record-ownership.ts\";\nimport { readRunContext, validateContextBoundary } from \"./internal/run-context.ts\";\nimport {\n type CanonicalRecordEnvelope,\n type ContinuationAccounting,\n type DeploymentId,\n CanonicalBatch,\n CanonicalSequence,\n EvidenceReference,\n MAX_RUN_CONTINUATION_BYTES,\n MAX_RUN_EVIDENCE_BYTES,\n MAX_RUN_TERMINAL_BYTES,\n MAX_RUN_EVIDENCE_RECORDS,\n MAX_RUN_RECOVERY_SUFFIX_BYTES,\n MAX_RUN_RECOVERY_SUFFIX_RECORDS,\n MAX_TURN_CANONICAL_BYTES,\n MAX_PERSISTED_JSON_BYTES,\n RUN_TERMINAL_RESERVE_BYTES,\n RUN_TERMINAL_RESERVE_RECORDS,\n RecordEnvelope,\n RecordId,\n RunContinuation,\n type ModelResponseRecorded,\n type ToolCallSettled,\n} from \"./Records.ts\";\nimport {\n runIdForSubmission,\n runCompletedRecordId,\n toolCallSettledRecordId,\n toolCallResultBatchId,\n subagentRequestedRecordId,\n subagentStartedRecordId,\n} from \"./RunJournal.ts\";\nimport type { RunStorageSession } from \"./RunStorage.ts\";\nimport {\n submissionAbortRecordId,\n submissionInputRecordId,\n submissionSettlementRecordId,\n submissionSettlementBatchId,\n} from \"./SubmissionLedger.ts\";\nimport {\n CommitBatch,\n ExecutionCheckpoint,\n ExecutionUpdate,\n getRecord,\n getRunInput,\n ThreadReader,\n ThreadStoreError,\n} from \"./ThreadStore.ts\";\n\nexport { RunContinuation, RunContextRecorded, EvidenceReference } from \"./Records.ts\";\n\n/** Writer and progress sequencer selected at the local owner's resource boundary. */\nexport class CurrentRunWriter extends Context.Service<\n CurrentRunWriter,\n Pick<RunStorageSession, \"threadId\" | \"tail\" | \"append\" | \"appendInput\" | \"withProgress\">\n>()(\"@effect-agent/thread/CurrentRunWriter\") {}\n\n/** Settlement publication keeps its original atomic authority and claim-scoped implementation. */\nexport class CurrentRunSettlement extends Context.Service<\n CurrentRunSettlement,\n Pick<RunStorageSession, \"threadId\" | \"tail\" | \"publishSettlement\" | \"withProgress\">\n>()(\"@effect-agent/thread/CurrentRunSettlement\") {}\n\n/** Canonical reads pinned to the append owner's current transaction or mutation gate. */\nexport class ProgressAppendReader extends Context.Service<\n ProgressAppendReader,\n {\n readonly previous: (\n runId: RunId,\n ) => Effect.Effect<RunContinuation | undefined, ThreadStoreError>;\n readonly initial: (\n next: RunContinuation,\n ) => Effect.Effect<ReadonlyArray<RecordEnvelope>, ThreadStoreError>;\n }\n>()(\"@effect-agent/thread/ProgressAppendReader\") {}\n\nexport {\n canonicalRunIds,\n executionRunIds,\n isWorkHandoff,\n isPreContinuationFact,\n} from \"./internal/record-ownership.ts\";\n\nconst failure = (message: string, cause?: unknown) =>\n ThreadStoreError.make({\n operation: \"RunContinuation\",\n message,\n ...(cause === undefined ? {} : { cause }),\n });\n\nconst capacityFailure = (message: string) =>\n failure(message, AgentPersistenceCapacityError.make({ message }));\n\nconst isExecutionProgressRecord = (\n record: RecordEnvelope,\n): record is RecordEnvelope & { readonly payload: RunContinuation } =>\n record.payload._tag === \"RunContinuation\";\n\nconst decodeResponsePrompt = Schema.decodeUnknownEffect(Prompt.Prompt);\n// The decoded Prompt stays private. Progress and capacity are recomputed on every invocation.\nconst responsePrompts = new WeakMap<ModelResponseRecorded, Prompt.Prompt>();\n\n/** Cache eligibility only: freezing does not make accessors or custom iterators immutable. */\nconst isFrozenJsonData = (input: Schema.Json): boolean => {\n const pending: Array<unknown> = [input];\n const seen = new WeakSet<object>();\n\n while (pending.length > 0) {\n const value = pending.pop();\n\n if (value === null) continue;\n if (typeof value !== \"object\") {\n if (typeof value !== \"string\" && typeof value !== \"number\" && typeof value !== \"boolean\")\n return false;\n continue;\n }\n if (seen.has(value)) continue;\n seen.add(value);\n const prototype = Object.getPrototypeOf(value);\n\n if (\n !Object.isFrozen(value) ||\n (prototype !== null && prototype !== Object.prototype && prototype !== Array.prototype)\n )\n return false;\n for (const key of Reflect.ownKeys(value)) {\n if (typeof key !== \"string\") return false;\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n\n if (descriptor === undefined || !(\"value\" in descriptor)) return false;\n pending.push(descriptor.value);\n }\n }\n\n return true;\n};\n\nconst validateBatchShape = Schema.decodeUnknownSync(\n Schema.Struct({\n batchId: CanonicalBatch.fields.batchId,\n producerId: CanonicalBatch.fields.producerId,\n records: Schema.NonEmptyArray(Schema.Unknown).check(Schema.isMaxLength(256)),\n }),\n);\n\nconst ContinuationBytes = Schema.Struct({\n turnBytes: RunContinuation.fields.turnBytes,\n terminalBytes: RunContinuation.fields.terminalBytes,\n});\n\nconst decodeExecutionFrontier = Schema.decodeUnknownEffect(\n Schema.Struct({\n canonicalRecords: ExecutionCheckpoint.fields.canonicalRecords,\n throughSequence: ExecutionCheckpoint.fields.throughSequence,\n }),\n);\n\n/** One private snapshot for every retry; callers cannot change facts while awaiting the gate. */\nconst captureFacts = (batch: CommitBatch) =>\n Effect.try({\n try: () =>\n Result.gen(function* () {\n const inputs = batch.records;\n\n const {\n batchId,\n producerId,\n records: slots,\n } = validateBatchShape({\n batchId: batch.batchId,\n producerId: batch.producerId,\n records: inputs,\n });\n\n const first = yield* captureRecord(inputs[0]!);\n const records: [RecordEnvelope, ...Array<RecordEnvelope>] = [first.canonical];\n\n for (let index = 1; index < slots.length; index++)\n records.push((yield* captureRecord(inputs[index]!)).canonical);\n\n return Object.freeze(\n CanonicalBatch.make(\n { batchId, producerId, records: Object.freeze(records) },\n { disableChecks: true },\n ),\n );\n }),\n catch: (cause) => failure(\"Cannot capture canonical progress facts\", cause),\n }).pipe(\n Effect.flatMap(Effect.fromResult),\n Effect.mapError((cause) =>\n Schema.is(ThreadStoreError)(cause)\n ? cause\n : failure(\"Cannot capture canonical progress facts\", cause),\n ),\n );\n\n/** Exact UTF-8 wire accounting reuses the append's privately captured Schema encoding. */\nexport const canonicalRecordBytes = (record: RecordEnvelope): number => {\n const encoded = recordEncoding(record);\n\n if (Result.isFailure(encoded)) {\n // oxlint-disable-next-line effect/no-untyped-throw, effect/no-native-error -- Public synchronous byte-accounting validation must reject malformed records before returning a number.\n throw encoded.failure.cause ?? new RangeError(encoded.failure.message);\n }\n\n return encoded.success.bytes;\n};\n\nexport type { ProgressAppendRecord } from \"./internal/record-encoding.ts\";\n\n/** Capture before acquiring the mutation owner; summaries never cross a wire boundary. */\nexport const prepareProgressAppend = (\n records: ReadonlyArray<RecordEnvelope>,\n): ReadonlyArray<ProgressAppendRecord> => {\n const encodings = Result.all(records.map(captureRecord));\n\n if (Result.isFailure(encodings)) {\n // oxlint-disable-next-line effect/no-untyped-throw, effect/no-native-error -- Public synchronous progress construction must reject malformed records before acquiring a mutation owner.\n throw encodings.failure.cause ?? new RangeError(encodings.failure.message);\n }\n\n return Object.freeze(encodings.success.map((record) => record.progress));\n};\n\n/** These values belong to the active Run, not its permanent conversation history. */\nexport const isOperationalRecord = ({ payload }: RecordEnvelope): boolean =>\n payload._tag === \"RunStarted\" ||\n payload._tag === \"RunContextRecorded\" ||\n payload._tag === \"RunCompleted\";\n\nexport const readContinuation = Effect.fnUntraced(function* (\n threadId: ThreadId,\n runId: RunId,\n throughSequence: CanonicalSequence,\n) {\n const reader = yield* ThreadReader;\n\n const loaded = yield* reader\n .readExecution({ threadId, runId })\n .pipe(\n Effect.catchTag(\"ThreadNotMaterialized\", (cause) =>\n throughSequence === 0\n ? Effect.succeed(Option.none())\n : failure(\"Active Run history is not materialized\", cause),\n ),\n );\n\n if (Option.isNone(loaded)) return Option.none();\n const value = loaded.value;\n\n if (\n value.progress.runId !== runId ||\n value.throughSequence > throughSequence ||\n canonicalRecordBytes(value.progressRecord) > MAX_RUN_CONTINUATION_BYTES ||\n value.operational.some(\n (record) => !isOperationalRecord(record) || !executionRunIds(record).includes(runId),\n ) ||\n new Set(value.operational.map((record) => record.recordId)).size !== value.operational.length\n )\n return yield* failure(\"Invalid active Run checkpoint\");\n\n return Option.some({\n ...value,\n checkpoint: value,\n get progress() {\n return value.progress;\n },\n record: value.progressRecord,\n continuation: value.progress,\n });\n});\n\n/** Resolve an active-only fact without presenting it as a canonical envelope or sequence. */\nexport const resolveExecutionEvidence = Effect.fnUntraced(function* (\n threadId: ThreadId,\n checkpoint: ExecutionCheckpoint,\n ref: EvidenceReference,\n) {\n const operational = checkpoint.operational.find((record) => record.recordId === ref.recordId);\n const record = operational ?? (yield* resolveEvidence(threadId, ref)).record;\n\n return record;\n});\n\n/** Each selected page is at most eight records; total resident encoded evidence is bounded. */\nexport const runEvidence = (\n threadId: ThreadId,\n submissionId: SubmissionId,\n throughSequence: CanonicalSequence,\n afterSequence: CanonicalSequence = CanonicalSequence.make(0),\n): Stream.Stream<CanonicalRecordEnvelope, ThreadStoreError, ThreadReader> =>\n Stream.unwrap(\n Effect.map(ThreadReader, (reader) =>\n Stream.suspend(() => {\n let after = afterSequence;\n let count = 0;\n let bytes = 0;\n const runId = runIdForSubmission(submissionId);\n\n const controls = new Set([\n submissionInputRecordId(submissionId),\n submissionAbortRecordId(submissionId),\n submissionSettlementRecordId(submissionId),\n ]);\n\n const next = (): Stream.Stream<CanonicalRecordEnvelope, ThreadStoreError> =>\n Stream.unwrap(\n Stream.runCollect(\n reader.read({\n threadId,\n selection: { _tag: \"RunEvidence\", runId, submissionId, throughSequence },\n page: { limit: 8, ...(after === 0 ? {} : { afterSequence: after }) },\n }),\n ).pipe(\n Effect.mapError((cause) =>\n cause._tag === \"ThreadStoreError\"\n ? cause\n : failure(\"Selected Run disappeared\", cause),\n ),\n Effect.flatMap((page) =>\n Effect.gen(function* () {\n if (page.length > 8)\n return yield* failure(\"Run evidence page exceeds its record bound\");\n for (const entry of page) {\n if (\n entry.threadId !== threadId ||\n entry.sequence <= after ||\n entry.sequence > throughSequence ||\n entry.record.payload._tag === \"RunContinuation\" ||\n (!canonicalRunIds(entry.record).includes(runId) &&\n !controls.has(entry.record.recordId))\n )\n return yield* failure(\"Run evidence page has invalid identity or ordering\");\n after = entry.sequence;\n count += 1;\n bytes += yield* Effect.try({\n try: () => canonicalRecordBytes(entry.record),\n catch: (cause) => failure(\"Selected Run evidence is malformed\", cause),\n });\n if (\n count > MAX_RUN_EVIDENCE_RECORDS + RUN_TERMINAL_RESERVE_RECORDS ||\n bytes > MAX_RUN_EVIDENCE_BYTES + MAX_RUN_TERMINAL_BYTES\n )\n return yield* failure(\"Selected Run evidence exceeds its recovery bound\");\n }\n\n return page.length < 8\n ? Stream.fromIterable(page)\n : Stream.concat(Stream.fromIterable(page), Stream.suspend(next));\n }),\n ),\n ),\n );\n\n return next();\n }),\n ),\n );\n\n/** A bounded selected-Run suffix, never a Thread-wide tail or an implicit replay fallback. */\nexport const validateSuffix = (\n records: ReadonlyArray<CanonicalRecordEnvelope>,\n through: CanonicalSequence,\n) => {\n const suffix = records.filter((record) => record.sequence > through);\n\n return (\n suffix.length <= MAX_RUN_RECOVERY_SUFFIX_RECORDS &&\n suffix.reduce((bytes, record) => bytes + canonicalRecordBytes(record.record), 0) <=\n MAX_RUN_RECOVERY_SUFFIX_BYTES\n );\n};\n\n/**\n * Selected semantic evidence without expanding model context. Worker acknowledgements and\n * delivery repair must validate locator completeness before treating missing effects as closed.\n */\nexport const readRunEvidenceSnapshot = Effect.fnUntraced(function* (\n threadId: ThreadId,\n submissionId: SubmissionId,\n throughSequence: CanonicalSequence,\n) {\n const records = yield* Stream.runCollect(runEvidence(threadId, submissionId, throughSequence));\n const runId = runIdForSubmission(submissionId);\n const own = records.filter((entry) => executionRunIds(entry.record).includes(runId));\n const progress = yield* readContinuation(threadId, runId, throughSequence);\n\n if (Option.isNone(progress)) {\n const terminal = own.findLast(\n ({ record }) => record.payload._tag === \"SubmissionSettled\" && record.payload.runId === runId,\n );\n\n if (terminal?.record.payload._tag === \"SubmissionSettled\") {\n if (\n terminal.record.payload.historyRecordCount === undefined ||\n own.filter((entry) => entry.sequence <= terminal.sequence).length !==\n terminal.record.payload.historyRecordCount\n )\n return yield* failure(\"Settled Run history is incomplete\");\n\n return records;\n }\n if (own.some(({ record }) => !isPreContinuationFact(record)))\n return yield* failure(\"Active execution has no durable checkpoint\");\n\n return records;\n }\n const checkpoint = progress.value;\n const cursor = checkpoint.continuation;\n\n if (cursor.submissionId !== submissionId)\n return yield* failure(\"Active checkpoint has another admitted owner\");\n if (\n own.filter((entry) => entry.sequence <= checkpoint.throughSequence).length !==\n checkpoint.canonicalRecords ||\n !validateSuffix(own, checkpoint.throughSequence)\n )\n return yield* failure(\"Selected execution history is incomplete or exceeds its suffix bound\");\n\n const resolve = (ref: EvidenceReference) =>\n resolveExecutionEvidence(threadId, checkpoint.checkpoint, ref);\n\n const input = yield* resolve(cursor.originalInput);\n\n if (\n input.payload._tag !== \"UserInputRecorded\" ||\n input.payload.submissionId !== submissionId ||\n input.payload.kind !== \"user\" ||\n input.payload.runId !== runId\n )\n return yield* failure(\"Active checkpoint has no original accepted input\");\n yield* resolve(cursor.lastFact);\n if (cursor.savedContext !== undefined) {\n const context = yield* resolve(cursor.savedContext);\n\n if (context.payload._tag !== \"RunContextRecorded\" || context.payload.runId !== runId)\n return yield* failure(\"Active checkpoint has invalid saved context\");\n }\n if (cursor.latestResponse !== undefined) {\n const response = yield* resolve(cursor.latestResponse);\n\n if (\n response.payload._tag !== \"ModelResponseRecorded\" ||\n response.payload.runId !== runId ||\n response.payload.turn !== cursor.accounting.committedTurns\n )\n return yield* failure(\"Active checkpoint has invalid operation evidence\");\n }\n if (cursor.terminal !== undefined) {\n const terminal = yield* resolve(cursor.terminal);\n\n if (\n terminal.payload._tag !== \"RunCompleted\" &&\n terminal.payload._tag !== \"RunFailed\" &&\n terminal.payload._tag !== \"SubmissionSettled\"\n )\n return yield* failure(\"Active checkpoint has invalid terminal evidence\");\n }\n\n return records;\n});\n\n/** Called inside the adapter's existing mutation, before publishing any fact or index. */\nexport const validateProgressAppend = Effect.fnUntraced(function* (\n records: ReadonlyArray<ProgressAppendRecord>,\n updates: ReadonlyArray<ExecutionUpdate> = [],\n): Effect.fn.Return<void, ThreadStoreError, ProgressAppendReader> {\n const reader = yield* ProgressAppendReader;\n\n if (records.some((record) => record.continuation !== undefined))\n return yield* failure(\"Interpreter progress must be committed as active execution state\");\n\n const operational = new Map(\n updates.flatMap((update) => update.facts.map((fact) => [fact.recordId, fact] as const)),\n );\n\n const factsAndProgress = [\n ...records,\n ...prepareProgressAppend([...operational.values()]),\n ...prepareProgressAppend(updates.map((update) => update.checkpoint.progressRecord)),\n ];\n\n const seen = new Set<RunId>();\n let progressStarted = false;\n\n for (const record of factsAndProgress) {\n const next = record.continuation;\n\n if (next === undefined) {\n if (progressStarted)\n return yield* failure(\"Execution facts cannot follow their continuation\");\n continue;\n }\n progressStarted = true;\n if (record.recordBytes > MAX_RUN_CONTINUATION_BYTES)\n return yield* failure(\"Encoded continuation exceeds its record byte bound\");\n if (seen.has(next.runId))\n return yield* failure(\"One atomic batch cannot publish conflicting Run progress\");\n seen.add(next.runId);\n\n const update = updates.find((value) => value.checkpoint.progress.runId === next.runId);\n\n if (\n update === undefined ||\n update.previousRevision + 1 !== next.revision ||\n update.facts.some((fact) => !isOperationalRecord(fact)) ||\n (update.retire && (next.position !== \"settled\" || next.terminal === undefined))\n )\n return yield* failure(\"Invalid active execution transition\");\n\n const facts = factsAndProgress.filter(\n (fact) => fact.continuation === undefined && fact.runIds.includes(next.runId),\n );\n\n const frontier = facts.find((fact) => fact.recordId === next.lastFact.recordId);\n const prior = yield* reader.previous(next.runId);\n\n const retained =\n prior === undefined\n ? (yield* reader.initial(next)).filter((fact) => executionRunIds(fact).includes(next.runId))\n : [];\n\n const retainedBytes = retained.reduce((bytes, fact) => bytes + canonicalRecordBytes(fact), 0);\n const factBytes = facts.reduce((bytes, fact) => bytes + fact.recordBytes, 0);\n const turnBase = prior?.turn === next.turn ? prior.turnBytes : retainedBytes;\n const closing = facts.filter((fact) => fact.terminal);\n\n if (\n frontier === undefined ||\n retained.length > MAX_RUN_RECOVERY_SUFFIX_RECORDS ||\n retainedBytes > MAX_RUN_RECOVERY_SUFFIX_BYTES ||\n retained.some(\n (fact) => !isPreContinuationFact(fact) || !executionRunIds(fact).includes(next.runId),\n ) ||\n frontier.recordId !== next.lastFact.recordId ||\n next.revision !== (prior?.revision ?? 0) + 1 ||\n next.recordBytes < (prior?.recordBytes ?? 0) ||\n next.turn < (prior?.turn ?? 0) ||\n (prior !== undefined && next.turn === prior.turn && next.turnBytes <= prior.turnBytes) ||\n next.recordBytes !== (prior?.recordBytes ?? retainedBytes) + factBytes ||\n next.terminalUsageBytes !==\n (prior?.terminalUsageBytes ?? 0) +\n facts.reduce((bytes, fact) => bytes + fact.terminalUsageBytes, 0) ||\n next.turnBytes !== turnBase + factBytes + record.recordBytes ||\n next.recordCount !== (prior?.recordCount ?? retained.length) + facts.length ||\n next.terminalRecords !== (prior?.terminalRecords ?? 0) + closing.length ||\n next.terminalBytes !==\n (prior?.terminalBytes ?? 0) +\n closing.reduce((bytes, fact) => bytes + fact.recordBytes, 0) +\n (closing.length > 0 ? record.recordBytes : 0) ||\n (prior !== undefined &&\n (prior.submissionId !== next.submissionId ||\n !Schema.toEquivalence(EvidenceReference)(prior.originalInput, next.originalInput) ||\n (prior.savedContext !== undefined &&\n (next.savedContext === undefined ||\n !Schema.toEquivalence(EvidenceReference)(prior.savedContext, next.savedContext))))) ||\n (prior !== undefined &&\n (\n [\n \"committedTurns\",\n \"toolCalls\",\n \"programmaticToolCalls\",\n \"modelRestarts\",\n \"modelCalls\",\n \"inputTokens\",\n \"outputTokens\",\n \"costMicrousd\",\n \"unobservedModelCalls\",\n \"accountedToolTurn\",\n ] satisfies ReadonlyArray<keyof ContinuationAccounting>\n ).some((field) => next.accounting[field] < prior.accounting[field])) ||\n (prior?.accounting.finalizationUsed === true && !next.accounting.finalizationUsed)\n )\n return yield* failure(\"Run continuation conflicts with its canonical frontier or revision\");\n }\n});\n\ninterface ChildResultCapacity {\n readonly resultBytes: number;\n readonly remainingBytes: number;\n readonly remainingRecords: number;\n}\n\ninterface ProgressState {\n readonly continuation: RunContinuation;\n readonly record: RecordEnvelope;\n readonly response?: ModelResponseRecorded;\n readonly results: ReadonlyMap<ToolCallId, ToolCallSettled>;\n readonly completionBytes?: number;\n readonly childResults: ReadonlyMap<ToolCallId, ChildResultCapacity>;\n readonly checkpoint?: ExecutionCheckpoint;\n}\n\ntype CapacityState = Omit<ProgressState, \"continuation\" | \"record\"> & {\n readonly continuation: Pick<\n RunContinuation,\n | \"runId\"\n | \"position\"\n | \"turn\"\n | \"turnBytes\"\n | \"recordBytes\"\n | \"recordCount\"\n | \"accounting\"\n | \"terminalUsageBytes\"\n | \"terminalBytes\"\n | \"terminalRecords\"\n >;\n};\n\n/** Headers/identities must themselves fit a continuation. Leave room for a result's cursor too. */\nconst resultCapacity = (state: CapacityState): { bytes: number; records: number } => {\n const response = state.response;\n\n if (\n response === undefined ||\n state.continuation.position === \"settling\" ||\n state.continuation.position === \"settled\" ||\n state.continuation.accounting.accountedToolTurn >= response.turn\n )\n return { bytes: 0, records: 0 };\n let bytes = 0;\n let records = 0;\n\n for (const operation of response.toolOperations) {\n if (state.results.has(operation.toolCallId)) continue;\n\n const identity = JSON.stringify({\n recordId: toolCallSettledRecordId(response.runId, response.turn, operation.toolCallId),\n payload: {\n _tag: \"ToolCallSettled\",\n runId: response.runId,\n toolCallId: operation.toolCallId,\n toolName: operation.toolName,\n result: null,\n isFailure: false,\n },\n });\n\n // An uncertain ordinary call may later close with exact supplier/operator truth, rather\n // than the interpreter's truncated result. Attached joins retain their frozen allocation.\n const resultBytes =\n operation.executionKind === \"ordinary\" && operation.executionClass !== \"readonly\"\n ? MAX_PERSISTED_JSON_BYTES\n : Math.max(\n response.toolResultMaxBytes,\n state.childResults.get(operation.toolCallId)?.resultBytes ?? 0,\n );\n\n const joining = state.childResults.get(operation.toolCallId);\n\n bytes +=\n utf8ByteLength(identity) +\n resultBytes +\n (joining?.remainingBytes ?? 0) +\n response.toolSelectionMaxBytes +\n 2 * MAX_RUN_CONTINUATION_BYTES +\n 256;\n records += joining?.remainingRecords ?? 1;\n }\n\n return { bytes, records };\n};\n\nconst emptyAccounting = (): ContinuationAccounting => ({\n committedTurns: 0,\n toolCalls: 0,\n programmaticToolCalls: 0,\n consecutiveToolFailures: 0,\n finalizationUsed: false,\n modelRestarts: 0,\n modelCalls: 0,\n unobservedModelCalls: 0,\n inputTokens: 0,\n outputTokens: 0,\n lastInputTokens: 0,\n lastOutputTokens: 0,\n costMicrousd: 0,\n accountedToolTurn: 0,\n});\n\n/** Recompute semantic progress solely from immutable owning facts. No port grants authority. */\nconst advanceFacts = Effect.fnUntraced(function* (\n previous: ProgressState | undefined,\n facts: ReadonlyArray<RecordEnvelope>,\n submissionId: SubmissionId,\n initialBytes: number,\n) {\n const accounting = { ...(previous?.continuation.accounting ?? emptyAccounting()) };\n let savedContext = previous?.continuation.savedContext;\n let latestResponse = previous?.continuation.latestResponse;\n let terminal = previous?.continuation.terminal;\n let position = previous?.continuation.position ?? \"starting\";\n let response = previous?.response;\n let responsePrompt: Prompt.Prompt | undefined;\n let results = new Map(previous?.results);\n let childResults = new Map(previous?.childResults);\n let completionBytes = previous?.completionBytes;\n let factBytes = 0;\n let turn = previous?.continuation.turn ?? 1;\n let usageCharge = 0;\n let closingBytes = 0;\n let closingCount = 0;\n\n for (const fact of facts) {\n const payload = fact.payload;\n const captured = recordEncoding(fact);\n\n if (Result.isFailure(captured))\n return yield* failure(\"Cannot account canonical progress facts\", captured.failure);\n const encoded = captured.success;\n\n factBytes += encoded.bytes;\n if (\"turn\" in payload) turn = Math.max(turn, payload.turn);\n usageCharge += encoded.progress.terminalUsageBytes;\n if (encoded.progress.terminal) {\n closingBytes += encoded.bytes;\n closingCount++;\n }\n\n switch (payload._tag) {\n case \"RunStarted\":\n position = \"awaiting-model\";\n break;\n case \"RunContextRecorded\":\n if (savedContext !== undefined)\n return yield* failure(\"A Run's original context cannot be replaced\");\n savedContext = EvidenceReference.make({ recordId: fact.recordId });\n position = \"awaiting-model\";\n break;\n case \"ModelResponseRecorded\": {\n if (savedContext === undefined)\n return yield* failure(\"A model response has no saved original Run context\");\n if (payload.turn !== accounting.committedTurns + 1)\n return yield* failure(\"Canonical Turn progress must advance once\");\n\n const promptInput = payload.messages;\n const retainedPrompt = responsePrompts.get(payload);\n\n const messages =\n retainedPrompt ??\n (yield* decodeResponsePrompt(promptInput).pipe(\n Effect.mapError((cause) => failure(\"Invalid model evidence\", cause)),\n ));\n\n if (retainedPrompt === undefined) {\n const property = Object.getOwnPropertyDescriptor(payload, \"messages\");\n\n if (\n Object.isFrozen(payload) &&\n property !== undefined &&\n \"value\" in property &&\n property.value === promptInput &&\n isFrozenJsonData(promptInput)\n )\n responsePrompts.set(payload, messages);\n }\n responsePrompt = messages;\n\n const calls = messages.content.flatMap((message) =>\n message.role === \"assistant\"\n ? message.content.filter((part) => part.type === \"tool-call\")\n : [],\n );\n\n const summary =\n payload.modelUsage === undefined\n ? undefined\n : yield* continuationUsage(payload.modelUsage).pipe(\n Effect.mapError((cause) => failure(\"Invalid usage evidence\", cause)),\n );\n\n accounting.committedTurns = payload.turn;\n accounting.toolCalls += calls.length;\n accounting.modelCalls += summary?.modelCalls ?? 1;\n accounting.inputTokens += summary?.inputTokens ?? payload.inputTokens ?? 0;\n accounting.outputTokens += summary?.outputTokens ?? payload.outputTokens ?? 0;\n accounting.costMicrousd += summary?.costMicrousd ?? payload.costMicrousd ?? 0;\n accounting.lastInputTokens = summary?.inputTokens ?? payload.inputTokens ?? 0;\n accounting.lastOutputTokens = summary?.outputTokens ?? payload.outputTokens ?? 0;\n accounting.unobservedModelCalls += payload.unobservedModelCalls ?? 0;\n latestResponse = EvidenceReference.make({ recordId: fact.recordId });\n response = payload;\n results = new Map();\n childResults = new Map();\n position = payload.toolOperations.length === 0 ? \"awaiting-model\" : \"processing-operations\";\n break;\n }\n case \"ToolCallSettled\":\n results.set(payload.toolCallId, payload);\n childResults.delete(payload.toolCallId);\n break;\n case \"ToolCallUnknown\":\n position = \"unknown\";\n break;\n case \"ToolCallResolved\":\n position = \"processing-operations\";\n break;\n case \"ToolApprovalRequested\":\n position = \"waiting-approval\";\n break;\n case \"ToolApprovalDecided\":\n position = \"processing-operations\";\n break;\n case \"SubagentRequested\":\n childResults.set(payload.toolCallId, {\n resultBytes: Math.min(\n MAX_PERSISTED_JSON_BYTES,\n payload.budget?.allocation.resultBytes ?? MAX_PERSISTED_JSON_BYTES,\n ),\n remainingBytes: RUN_TERMINAL_RESERVE_BYTES,\n remainingRecords: 4,\n });\n position = \"waiting-dependency\";\n break;\n case \"SubagentStarted\":\n {\n const reserved = childResults.get(payload.toolCallId);\n\n if (reserved !== undefined)\n childResults.set(payload.toolCallId, {\n ...reserved,\n remainingBytes: Math.max(\n 0,\n reserved.remainingBytes - canonicalRecordBytes(fact) - MAX_RUN_CONTINUATION_BYTES,\n ),\n remainingRecords: reserved.remainingRecords - 1,\n });\n }\n position = \"waiting-dependency\";\n break;\n case \"RunPolicyUsageReserved\":\n if (\n payload.programmaticToolCalls < accounting.programmaticToolCalls ||\n (accounting.finalizationUsed && !payload.finalizationUsed)\n )\n return yield* failure(\"Run reservations cannot be refunded\");\n accounting.programmaticToolCalls = payload.programmaticToolCalls;\n accounting.finalizationUsed = payload.finalizationUsed;\n break;\n case \"ModelCallAborted\": {\n if (payload.restart !== (accounting.modelRestarts ?? 0) + 1)\n return yield* failure(\"Model restart progress must advance once\");\n\n const summary = yield* continuationUsage(payload.modelUsage).pipe(\n Effect.mapError((cause) => failure(\"Invalid cancelled model usage\", cause)),\n );\n\n accounting.modelRestarts = payload.restart;\n accounting.modelCalls += summary.modelCalls;\n accounting.inputTokens += summary.inputTokens;\n accounting.outputTokens += summary.outputTokens;\n accounting.costMicrousd += summary.costMicrousd;\n accounting.unobservedModelCalls += payload.unobservedModelCalls;\n break;\n }\n case \"RunCompleted\":\n case \"RunFailed\":\n completionBytes =\n payload._tag === \"RunCompleted\"\n ? utf8ByteLength(JSON.stringify(payload.output)) +\n (payload.runDisposition === undefined\n ? 0\n : utf8ByteLength(JSON.stringify(payload.runDisposition)))\n : undefined;\n terminal = EvidenceReference.make({ recordId: fact.recordId });\n position = \"settling\";\n break;\n case \"SubmissionSettled\":\n if (payload.submissionId !== submissionId) break;\n terminal = EvidenceReference.make({ recordId: fact.recordId });\n position = \"settled\";\n if (payload.usageSummary !== undefined) {\n accounting.modelCalls = payload.usageSummary.modelCalls;\n accounting.inputTokens = payload.usageSummary.inputTokens.total;\n accounting.outputTokens = payload.usageSummary.outputTokens.total;\n accounting.costMicrousd = payload.usageSummary.costMicrousd;\n accounting.unobservedModelCalls =\n payload.usageSummary.unobservedModelCalls ?? accounting.unobservedModelCalls;\n }\n break;\n default:\n break;\n }\n }\n if (\n response !== undefined &&\n response.turn > accounting.accountedToolTurn &&\n response.toolOperations.every((operation) => results.has(operation.toolCallId))\n ) {\n const messages =\n responsePrompt ??\n responsePrompts.get(response) ??\n (yield* decodeResponsePrompt(response.messages).pipe(\n Effect.mapError((cause) => failure(\"Invalid batch evidence\", cause)),\n ));\n\n const parts = messages.content.flatMap((message) =>\n message.role === \"assistant\" ? message.content : [],\n );\n\n for (const call of parts) {\n if (call.type !== \"tool-call\") continue;\n\n const result = call.providerExecuted\n ? parts.find((part) => part.type === \"tool-result\" && part.id === call.id)\n : results.get(ToolCallId.make(call.id));\n\n if (\n result === undefined ||\n !(\"isFailure\" in result) ||\n (\"budgetRejected\" in result && result.budgetRejected === true)\n )\n continue;\n accounting.consecutiveToolFailures = result.isFailure\n ? accounting.consecutiveToolFailures + 1\n : 0;\n }\n accounting.accountedToolTurn = response.turn;\n results.clear();\n if (position !== \"settling\" && position !== \"settled\") position = \"awaiting-model\";\n }\n const last = facts.at(-1);\n\n if (last === undefined) return yield* failure(\"Progress has no owning fact\");\n if (previous?.continuation.position === \"settled\") position = \"settled\";\n else if (previous?.continuation.position === \"settling\" && position !== \"settled\")\n position = \"settling\";\n\n const turnBase =\n (previous?.continuation.turn === turn ? previous.continuation.turnBytes : initialBytes) +\n factBytes;\n\n const terminalUsageBytes = (previous?.continuation.terminalUsageBytes ?? 0) + usageCharge;\n\n return {\n accounting,\n savedContext,\n latestResponse,\n terminal,\n position,\n response,\n results,\n childResults,\n completionBytes,\n last,\n factBytes,\n turn,\n turnBase,\n usageCharge,\n terminalUsageBytes,\n terminalBytes: (previous?.continuation.terminalBytes ?? 0) + closingBytes,\n terminalRecords: (previous?.continuation.terminalRecords ?? 0) + closingCount,\n closing: closingCount > 0,\n };\n});\n\n/**\n * Verify retained history. Mutable checkpoint revisions are deliberately not historical proof.\n * Active original context is still checked against its exact retained historyDigest.\n */\nexport const verifyRunContinuations = Effect.fnUntraced(function* (\n records: ReadonlyArray<CanonicalRecordEnvelope>,\n options?: {\n readonly verifyContext?: boolean;\n readonly executions?: ReadonlyArray<ExecutionCheckpoint>;\n },\n) {\n const inputs = records.filter(\n ({ record }) =>\n record.payload._tag === \"UserInputRecorded\" &&\n record.payload.kind === \"user\" &&\n record.payload.submissionId !== undefined,\n );\n\n if (records.some(({ record }) => record.payload._tag === \"RunContinuation\"))\n return yield* failure(\"Mutable interpreter progress is not canonical history\");\n for (const input of inputs) {\n const payload = input.record.payload;\n\n if (payload._tag !== \"UserInputRecorded\" || payload.submissionId === undefined) continue;\n const runId = runIdForSubmission(payload.submissionId);\n const own = records.filter((entry) => executionRunIds(entry.record).includes(runId));\n\n const terminal = own.findLast(\n ({ record }) => record.payload._tag === \"SubmissionSettled\" && record.payload.runId === runId,\n );\n\n if (terminal?.record.payload._tag === \"SubmissionSettled\") {\n if (\n terminal.record.payload.historyRecordCount === undefined ||\n own.filter((entry) => entry.sequence <= terminal.sequence).length !==\n terminal.record.payload.historyRecordCount\n )\n return yield* failure(\"Terminal history differs from its retained fact count\");\n continue;\n }\n if (options?.verifyContext === false) continue;\n const checkpoint = options?.executions?.find((value) => value.progress.runId === runId);\n\n if (checkpoint === undefined) {\n if (own.some(({ record }) => !isPreContinuationFact(record)))\n return yield* failure(\"Active execution is missing its authoritative checkpoint\");\n continue;\n }\n\n const saved = checkpoint.operational.find(\n ({ payload }) => payload._tag === \"RunContextRecorded\",\n );\n\n if (saved?.payload._tag === \"RunContextRecorded\") {\n yield* validateContextBoundary(saved.payload, input).pipe(\n Effect.mapError((cause) => failure(\"Context has an invalid admission boundary\", cause)),\n );\n yield* readRunContext(saved.payload, input, saved.recordId).pipe(\n Effect.mapError((cause) => failure(\"Context differs from its original history\", cause)),\n );\n }\n }\n});\n\n/**\n * Prepare progress for the existing atomic append/publication. Accept the returned state only\n * after that append commits; a failed or stale producer cannot publish speculative progress.\n * One writer retains bounded metadata for its active Run, not its historical results or IDs.\n */\nexport const makeProgressWriter = Effect.fnUntraced(function* (\n threadId: ThreadId,\n deploymentId: DeploymentId,\n) {\n const reader = yield* ThreadReader;\n const gate = yield* Semaphore.make(1);\n const cached = new Map<RunId, ProgressState>();\n\n let verifiedEmpty:\n | {\n readonly runId: RunId;\n readonly through: CanonicalSequence;\n readonly writer: CurrentRunWriter[\"Service\"];\n }\n | undefined;\n\n const reservations = new Map<\n RecordId,\n {\n readonly runId: RunId;\n readonly turn: number;\n readonly bytes: number;\n readonly records: number;\n }\n >();\n\n const stagedUsage = new Map<RunId, number>();\n\n const provide = <A, E>(effect: Effect.Effect<A, E, ThreadReader>) =>\n Effect.provideService(effect, ThreadReader, reader);\n\n const loadUncachedState = Effect.fnUntraced(function* (runId: RunId, after: CanonicalSequence) {\n const loaded = yield* provide(readContinuation(threadId, runId, after));\n\n if (Option.isNone(loaded)) return undefined;\n const continuation = loaded.value.continuation;\n let response: ModelResponseRecorded | undefined;\n let completionBytes: number | undefined;\n const results = new Map<ToolCallId, ToolCallSettled>();\n\n const childResults = new Map<ToolCallId, ChildResultCapacity>();\n\n if (continuation.latestResponse !== undefined) {\n const evidence = yield* provide(resolveEvidence(threadId, continuation.latestResponse));\n\n if (\n evidence.record.payload._tag !== \"ModelResponseRecorded\" ||\n evidence.record.payload.runId !== runId\n )\n return yield* failure(\"Continuation operation reference is invalid\");\n response = evidence.record.payload;\n if (continuation.accounting.accountedToolTurn < response.turn) {\n for (const operation of response.toolOperations) {\n const found = yield* provide(\n getRecord({\n threadId,\n recordId: toolCallSettledRecordId(runId, response.turn, operation.toolCallId),\n }),\n );\n\n if (Option.isSome(found)) {\n const result = found.value.record.payload;\n\n if (\n result._tag !== \"ToolCallSettled\" ||\n result.runId !== runId ||\n result.toolCallId !== operation.toolCallId ||\n result.toolName !== operation.toolName\n )\n return yield* failure(\"Continuation result identity is invalid\");\n results.set(operation.toolCallId, result);\n } else if (operation.executionKind === \"delegation\") {\n const requested = yield* provide(\n getRecord({\n threadId,\n recordId: subagentRequestedRecordId(runId, operation.toolCallId),\n }),\n );\n\n if (\n Option.isSome(requested) &&\n requested.value.record.payload._tag === \"SubagentRequested\"\n ) {\n if (\n requested.value.record.payload.runId !== runId ||\n requested.value.record.payload.toolCallId !== operation.toolCallId\n )\n return yield* failure(\"Continuation child request identity is invalid\");\n\n const started = yield* provide(\n getRecord({\n threadId,\n recordId: subagentStartedRecordId(runId, operation.toolCallId),\n }),\n );\n\n if (\n Option.isSome(started) &&\n (started.value.record.payload._tag !== \"SubagentStarted\" ||\n started.value.record.payload.runId !== runId ||\n started.value.record.payload.toolCallId !== operation.toolCallId ||\n started.value.record.payload.childThreadId !==\n requested.value.record.payload.childThreadId)\n )\n return yield* failure(\"Continuation child start identity is invalid\");\n\n const startedBytes = Option.isSome(started)\n ? canonicalRecordBytes(started.value.record) + MAX_RUN_CONTINUATION_BYTES\n : 0;\n\n childResults.set(operation.toolCallId, {\n resultBytes: Math.min(\n MAX_PERSISTED_JSON_BYTES,\n requested.value.record.payload.budget?.allocation.resultBytes ??\n MAX_PERSISTED_JSON_BYTES,\n ),\n remainingBytes: Math.max(0, RUN_TERMINAL_RESERVE_BYTES - startedBytes),\n remainingRecords: Option.isSome(started) ? 3 : 4,\n });\n }\n }\n }\n }\n }\n if (continuation.position === \"settling\" && continuation.terminal !== undefined) {\n const terminal = yield* provide(\n resolveExecutionEvidence(threadId, loaded.value.checkpoint, continuation.terminal),\n );\n\n const payload = terminal.payload;\n\n if (payload._tag === \"RunCompleted\")\n completionBytes =\n utf8ByteLength(JSON.stringify(payload.output)) +\n (payload.runDisposition === undefined\n ? 0\n : utf8ByteLength(JSON.stringify(payload.runDisposition)));\n }\n\n return {\n continuation,\n record: loaded.value.record,\n checkpoint: loaded.value.checkpoint,\n ...(response === undefined ? {} : { response }),\n results,\n childResults,\n ...(completionBytes === undefined ? {} : { completionBytes }),\n };\n });\n\n const checkFutureShapes = (\n state: ProgressState,\n cursorBytes?: number,\n ): Effect.Effect<void, ThreadStoreError> => {\n const progress = state.continuation;\n\n if (progress.position === \"settled\") return Effect.void;\n const size = cursorBytes ?? canonicalRecordBytes(state.record);\n const textBytes = (value: string) => utf8ByteLength(JSON.stringify(value));\n const refBytes = (value: EvidenceReference) => utf8ByteLength(JSON.stringify(value));\n\n const ref = (recordId: RecordId) => EvidenceReference.make({ recordId });\n\n const fits = (batchId: string, lastFact: EvidenceReference, terminal?: EvidenceReference) =>\n // Only these identities change. The fixed allowance covers scalar and timestamp growth.\n size +\n textBytes(JSON.stringify([\"continuation@1\", progress.runId, batchId])) -\n textBytes(state.record.recordId) +\n textBytes(deploymentId) -\n textBytes(state.record.deploymentId) +\n refBytes(lastFact) -\n refBytes(progress.lastFact) +\n (terminal === undefined\n ? 0\n : refBytes(terminal) -\n (progress.terminal === undefined ? 0 : refBytes(progress.terminal)) +\n 12) +\n 1024 <=\n MAX_RUN_CONTINUATION_BYTES;\n\n if (\n !fits(\n submissionSettlementBatchId(progress.submissionId),\n ref(submissionSettlementRecordId(progress.submissionId)),\n ref(runCompletedRecordId(progress.runId)),\n )\n )\n return Effect.fail(capacityFailure(\"Run has no room for a terminal continuation envelope\"));\n\n if (\n state.response !== undefined &&\n progress.accounting.accountedToolTurn < state.response.turn\n ) {\n for (const operation of state.response.toolOperations) {\n if (state.results.has(operation.toolCallId)) continue;\n if (\n !fits(\n toolCallResultBatchId(progress.runId, state.response.turn, operation.toolCallId),\n ref(toolCallSettledRecordId(progress.runId, state.response.turn, operation.toolCallId)),\n )\n )\n return Effect.fail(\n capacityFailure(\"Tool dispatch has no room for its result continuation envelope\"),\n );\n }\n }\n\n return Effect.void;\n };\n\n const checkCapacity = (\n state: CapacityState,\n consumed: ReadonlySet<RecordId> = new Set(),\n extra?: { readonly turn: number; readonly bytes: number; readonly records: number },\n committedUsageBytes = 0,\n ): Effect.Effect<void, ThreadStoreError> => {\n const progress = state.continuation;\n const pending = resultCapacity(state);\n\n const terminal =\n progress.position === \"settled\"\n ? 0\n : Math.max(\n 0,\n RUN_TERMINAL_RESERVE_BYTES +\n 2 * (state.completionBytes ?? 0) +\n 2 *\n (progress.terminalUsageBytes +\n Math.max(0, (stagedUsage.get(progress.runId) ?? 0) - committedUsageBytes)) -\n progress.terminalBytes,\n );\n\n let turnBytes =\n (extra !== undefined && extra.turn !== progress.turn ? 0 : progress.turnBytes) +\n pending.bytes +\n terminal +\n (extra?.bytes ?? 0);\n\n let recordBytes = progress.recordBytes + pending.bytes + terminal + (extra?.bytes ?? 0);\n\n let recordCount =\n progress.recordCount +\n pending.records +\n (progress.position === \"settled\"\n ? 0\n : Math.max(0, RUN_TERMINAL_RESERVE_RECORDS - progress.terminalRecords)) +\n (extra?.records ?? 0);\n\n for (const [recordId, reservation] of reservations) {\n if (reservation.runId !== progress.runId || consumed.has(recordId)) continue;\n if (reservation.turn === (extra?.turn ?? progress.turn)) turnBytes += reservation.bytes;\n recordBytes += reservation.bytes;\n recordCount += reservation.records;\n }\n if (\n turnBytes > MAX_TURN_CANONICAL_BYTES ||\n recordBytes > MAX_RUN_EVIDENCE_BYTES ||\n recordCount > MAX_RUN_EVIDENCE_RECORDS\n )\n return Effect.fail(\n failure(\n \"Run has no remaining canonical dispatch capacity\",\n AgentPersistenceCapacityError.make({\n message: \"Run has no room for the next result and a bounded terminal settlement\",\n }),\n ),\n );\n\n return Effect.void;\n };\n\n const prepare = Effect.fnUntraced(function* (\n batch: CanonicalBatch,\n after: CanonicalSequence,\n mode: \"commit\" | \"preflight\" = \"commit\",\n ) {\n if (batch.records.some((record) => record.payload._tag === \"RunContinuation\"))\n return yield* failure(\"A caller cannot supply interpreter progress to the progress writer\");\n\n // Every private caller passes captureFacts' owned snapshot. Keep a mutable\n // list for settlement accounting without capturing that snapshot a second time.\n const ownedRecords = [...batch.records];\n\n const groups = new Map<RunId, Array<RecordEnvelope>>();\n\n for (const record of ownedRecords) {\n for (const runId of executionRunIds(record)) {\n const facts = groups.get(runId) ?? [];\n\n facts.push(record);\n groups.set(runId, facts);\n }\n }\n const executions: Array<ExecutionUpdate> = [];\n const accepted = new Map<RunId, ProgressState>();\n let executionCount = 0;\n\n for (const [runId, facts] of groups) {\n const empty =\n verifiedEmpty?.runId === runId &&\n verifiedEmpty.through === after &&\n // Settlement preparation need not have a Run writer; absence disables reuse.\n verifiedEmpty.writer ===\n Option.getOrUndefined(yield* Effect.serviceOption(CurrentRunWriter));\n\n const previous = empty\n ? undefined\n : (cached.get(runId) ?? (yield* loadUncachedState(runId, after)));\n\n let original = facts.find(\n (record) =>\n record.payload._tag === \"UserInputRecorded\" &&\n record.payload.kind === \"user\" &&\n record.payload.runId === runId &&\n record.payload.submissionId !== undefined,\n );\n\n let originalCount = 0;\n let initialBytes = 0;\n let originalSequence = previous?.checkpoint?.originalSequence;\n\n if (previous === undefined && original === undefined) {\n const input = yield* provide(getRunInput({ threadId, runId }));\n\n if (\n Option.isNone(input) ||\n input.value.record.payload._tag !== \"UserInputRecorded\" ||\n input.value.record.payload.submissionId === undefined\n )\n continue;\n\n original = input.value.record;\n originalSequence = input.value.sequence;\n }\n\n const submissionId =\n previous?.continuation.submissionId ??\n (original?.payload._tag === \"UserInputRecorded\"\n ? original.payload.submissionId\n : undefined);\n\n if (submissionId === undefined)\n return yield* failure(\"Run progress has no original admission identity\");\n if (runId !== runIdForSubmission(submissionId))\n return yield* failure(\"Run progress conflicts with its original admission\");\n if (previous === undefined && original === undefined)\n return yield* failure(\"Run has no accepted original input\");\n\n if (previous === undefined && !empty) {\n const settled = yield* provide(\n getRecord({\n threadId,\n recordId: submissionSettlementRecordId(submissionId),\n }),\n );\n\n if (\n Option.isSome(settled) &&\n settled.value.sequence <= after &&\n settled.value.record.payload._tag === \"SubmissionSettled\" &&\n settled.value.record.payload.runId === runId &&\n settled.value.record.payload.historyRecordCount !== undefined &&\n facts.every(\n ({ payload }) =>\n payload._tag === \"WorkerReportPrepared\" ||\n payload._tag === \"SubmissionSettled\" ||\n payload._tag === \"ToolCallSettled\" ||\n payload._tag === \"ToolCallResolved\" ||\n payload._tag === \"SubagentJoined\",\n )\n )\n // Independent obligations can record factual closure after interpreter retirement.\n continue;\n\n const selected = yield* provide(\n Stream.runCollect(\n runEvidence(threadId, submissionId, after).pipe(\n Stream.take(MAX_RUN_RECOVERY_SUFFIX_RECORDS + 1),\n ),\n ),\n );\n\n const existing = selected.filter(({ record }) => executionRunIds(record).includes(runId));\n\n if (\n !validateSuffix(existing, CanonicalSequence.make(0)) ||\n existing.some(({ record }) => !isPreContinuationFact(record))\n )\n return yield* failure(\n `Run execution has no active checkpoint or exceeds its preparation bound (${facts.map((fact) => fact.payload._tag).join(\", \")})`,\n );\n originalCount = existing.length;\n initialBytes = existing.reduce(\n (bytes, entry) => bytes + canonicalRecordBytes(entry.record),\n 0,\n );\n }\n\n const canonicalRecords =\n (previous?.checkpoint?.canonicalRecords ?? originalCount) +\n facts.filter((fact) => !isOperationalRecord(fact)).length;\n\n for (let index = 0; index < facts.length; index++) {\n const fact = facts[index]!;\n const payload = fact.payload;\n\n if (payload._tag !== \"SubmissionSettled\" || payload.runId !== runId) continue;\n\n const retained = yield* Effect.fromResult(\n captureRecord(\n RecordEnvelope.make({\n ...fact,\n payload: { ...payload, historyRecordCount: canonicalRecords },\n }),\n ),\n ).pipe(\n Effect.map((record) => record.canonical),\n Effect.mapError((cause) => failure(\"Cannot capture canonical progress facts\", cause)),\n );\n\n facts[index] = retained;\n ownedRecords[ownedRecords.indexOf(fact)] = retained;\n }\n\n const originalInput =\n previous !== undefined\n ? previous.continuation.originalInput\n : original === undefined\n ? yield* failure(\"Run progress has no original input\")\n : EvidenceReference.make({ recordId: original.recordId });\n\n const next = yield* advanceFacts(previous, facts, submissionId, initialBytes);\n\n const {\n accounting,\n savedContext,\n latestResponse,\n terminal,\n position,\n response,\n results,\n childResults,\n completionBytes,\n last,\n factBytes,\n turn,\n turnBase,\n usageCharge,\n terminalUsageBytes,\n } = next;\n\n let continuation = yield* RunContinuation.makeEffect({\n version: 1,\n runId,\n submissionId,\n revision: (previous?.continuation.revision ?? 0) + 1,\n recordCount: (previous?.continuation.recordCount ?? originalCount) + facts.length,\n recordBytes: (previous?.continuation.recordBytes ?? initialBytes) + factBytes,\n turn,\n turnBytes: turnBase,\n terminalUsageBytes,\n terminalBytes: next.terminalBytes,\n terminalRecords: next.terminalRecords,\n originalInput,\n ...(savedContext === undefined ? {} : { savedContext }),\n ...(latestResponse === undefined ? {} : { latestResponse }),\n ...(terminal === undefined ? {} : { terminal }),\n lastFact: EvidenceReference.make({ recordId: last.recordId }),\n position,\n accounting,\n }).pipe(\n Effect.mapError(() =>\n capacityFailure(\"Canonical continuation exceeds its protocol bounds\"),\n ),\n );\n\n const header = {\n recordId: RecordId.make(JSON.stringify([\"continuation@1\", runId, batch.batchId])),\n family: \"thread\" as const,\n schemaVersion: 1 as const,\n createdAt: last.createdAt,\n deploymentId: last.deploymentId,\n };\n\n // The validated continuation fields are JSON; only the envelope DateTime needs encoding.\n // Key order does not change byte width. Measure without capturing a provisional record,\n // then compare against the final Schema encoding before accepting its accounting.\n const provisional = {\n ...header,\n createdAt: DateTime.formatIso(header.createdAt),\n payload: continuation,\n } satisfies typeof RecordEnvelope.Encoded;\n\n const initialCursorBytes = utf8ByteLength(JSON.stringify(provisional));\n\n const initialWidth =\n String(continuation.turnBytes).length + String(continuation.terminalBytes).length;\n\n let turnBytes = continuation.turnBytes;\n let terminalBytes = continuation.terminalBytes;\n\n for (let attempts = 0; ; attempts++) {\n const cursorBytes =\n initialCursorBytes +\n String(turnBytes).length +\n String(terminalBytes).length -\n initialWidth;\n\n const nextTurnBytes = turnBase + cursorBytes;\n const nextTerminalBytes = next.terminalBytes + (next.closing ? cursorBytes : 0);\n\n if (nextTurnBytes === turnBytes && nextTerminalBytes === terminalBytes) break;\n if (attempts >= 4) return yield* failure(\"Continuation byte accounting did not converge\");\n turnBytes = nextTurnBytes;\n terminalBytes = nextTerminalBytes;\n }\n\n const checkedBytes = yield* ContinuationBytes.makeEffect({\n turnBytes,\n terminalBytes,\n }).pipe(\n Effect.mapError(() =>\n capacityFailure(\"Turn exceeds its incremental canonical byte budget\"),\n ),\n );\n\n // Every other field was checked above; byte accounting changes only these counters.\n continuation = RunContinuation.make(\n { ...continuation, ...checkedBytes },\n { disableChecks: true },\n );\n\n const proposedRecord = RecordEnvelope.make(\n { ...header, payload: continuation },\n { disableChecks: true },\n );\n\n const cursorBytes = turnBytes - turnBase;\n\n if (cursorBytes > MAX_RUN_CONTINUATION_BYTES)\n return yield* capacityFailure(\n \"Encoded continuation exceeds 8192 bytes including its envelope\",\n );\n executionCount++;\n if (\n mode === \"preflight\" &&\n previous?.checkpoint !== undefined &&\n facts.every(({ payload }) => payload._tag === \"ModelResponseRecorded\")\n ) {\n // The payload and header are validated, and operational facts are unchanged.\n // Dispatch needs their capacity proof; only a commit needs checkpoint wire.\n yield* decodeExecutionFrontier({\n canonicalRecords,\n throughSequence: after + ownedRecords.filter((fact) => !isOperationalRecord(fact)).length,\n }).pipe(Effect.mapError((cause) => failure(\"Active execution exceeds its bounds\", cause)));\n\n const state: ProgressState = {\n continuation,\n record: proposedRecord,\n ...(response === undefined ? {} : { response }),\n results,\n childResults,\n ...(completionBytes === undefined ? {} : { completionBytes }),\n };\n\n yield* checkCapacity(\n state,\n new Set(batch.records.map(({ recordId }) => recordId)),\n undefined,\n usageCharge,\n );\n yield* checkFutureShapes(state, cursorBytes);\n continue;\n }\n\n const record = yield* Effect.fromResult(captureRecord(proposedRecord)).pipe(\n Effect.map((record) => record.canonical),\n Effect.mapError((cause) => failure(\"Cannot capture canonical progress facts\", cause)),\n );\n\n if (!isExecutionProgressRecord(record))\n return yield* failure(\"Captured execution has no Run continuation\");\n if (canonicalRecordBytes(record) !== cursorBytes)\n return yield* failure(\"Continuation byte accounting differs from its Schema encoding\");\n\n const operational = new Map(\n (previous?.checkpoint?.operational ?? []).map((fact) => [fact.recordId, fact]),\n );\n\n const changed = facts.filter(isOperationalRecord);\n\n for (const fact of changed) {\n const prior = operational.get(fact.recordId);\n\n if (\n prior !== undefined &&\n (yield* Effect.fromResult(recordEncoding(prior)).pipe(\n Effect.mapError((cause) => failure(\"Cannot encode active Run fact\", cause)),\n )).json !==\n (yield* Effect.fromResult(recordEncoding(fact)).pipe(\n Effect.mapError((cause) => failure(\"Cannot encode active Run fact\", cause)),\n )).json\n )\n return yield* failure(\"An active Run fact cannot change after becoming durable\");\n operational.set(fact.recordId, fact);\n }\n\n // The records above already belong to this writer. PreparedAppend captures the\n // complete update at the storage boundary, preserving their private encodings.\n const checkpoint = ExecutionCheckpoint.make(\n {\n version: 2,\n progressRecord: record,\n operational: [...operational.values()],\n canonicalRecords,\n originalSequence:\n originalSequence ??\n CanonicalSequence.make(\n after +\n ownedRecords\n .filter((fact) => !isOperationalRecord(fact))\n .findIndex((fact) => fact.recordId === originalInput.recordId) +\n 1,\n ),\n throughSequence: CanonicalSequence.make(\n after + ownedRecords.filter((fact) => !isOperationalRecord(fact)).length,\n ),\n batchId: batch.batchId,\n },\n { disableChecks: true },\n );\n\n const state = {\n continuation,\n record,\n checkpoint,\n ...(response === undefined ? {} : { response }),\n results,\n childResults,\n ...(completionBytes === undefined ? {} : { completionBytes }),\n };\n\n if (\n !facts.every((fact) => isTerminalBudgetFact(fact) && fact.payload._tag !== \"RunCompleted\")\n )\n yield* checkCapacity(\n state,\n new Set(batch.records.map(({ recordId }) => recordId)),\n undefined,\n usageCharge,\n );\n yield* checkFutureShapes(state);\n executions.push(\n ExecutionUpdate.make(\n {\n previousRevision: previous?.continuation.revision ?? 0,\n checkpoint,\n facts: changed,\n // Pending operations and handoffs retain their own recovery rows and original facts.\n retire: position === \"settled\",\n },\n { disableChecks: true },\n ),\n );\n accepted.set(runId, state);\n }\n\n if (ownedRecords.length + executionCount > 256)\n return yield* failure(\"Progress and facts exceed the atomic batch bound\");\n\n const prepared = CommitBatch.make(\n {\n ...batch,\n records: ownedRecords.filter((fact) => !isOperationalRecord(fact)),\n },\n { disableChecks: true },\n );\n\n return {\n batch: prepared,\n executions,\n accept: () => {\n for (const record of batch.records) reservations.delete(record.recordId);\n for (const [runId, state] of accepted) {\n if (executions.find((update) => update.checkpoint.progress.runId === runId)?.retire)\n cached.delete(runId);\n else cached.set(runId, state);\n }\n // Administrative writers can address many old Runs; retention is still bounded.\n while (cached.size > 8) {\n const first = cached.keys().next().value;\n\n if (first !== undefined) cached.delete(first);\n }\n },\n };\n });\n\n const tail = Effect.flatMap(CurrentRunWriter, (writer) =>\n writer.threadId !== threadId\n ? Effect.fail(failure(\"Progress writer belongs to another Thread\"))\n : Effect.map(writer.tail, (position) => position.sequence),\n );\n\n const commitCaptured = Effect.fnUntraced(\n function* (batch: CanonicalBatch) {\n const writer = yield* CurrentRunWriter;\n\n for (let retries = 0; ; retries++) {\n const prepared = yield* prepare(batch, yield* tail).pipe(\n Effect.catchTag(\"ThreadNotMaterialized\", (cause) =>\n failure(\"Selected Run disappeared during progress publication\", cause),\n ),\n );\n\n const result = yield* writer.append(prepared.batch, prepared.executions).pipe(\n Effect.catchTag(\"AppendConflict\", (conflict) => {\n if (conflict.reason !== \"tail\" || retries >= 8) return Effect.fail(conflict);\n cached.clear();\n\n return Effect.succeed(undefined);\n }),\n );\n\n if (result === undefined) continue;\n\n if (result.replayed) cached.clear();\n else prepared.accept();\n\n return result;\n }\n },\n (effect) =>\n Effect.flatMap(CurrentRunWriter, (writer) =>\n writer.withProgress(gate.withPermits(1)(effect)),\n ),\n );\n\n const publishCaptured = Effect.fnUntraced(\n function* (batch: CanonicalBatch) {\n const publisher = yield* CurrentRunSettlement;\n\n if (publisher.threadId !== threadId)\n return yield* failure(\"Settlement publisher belongs to another Thread\");\n\n for (let retries = 0; ; retries++) {\n const prepared = yield* prepare(batch, (yield* publisher.tail).sequence).pipe(\n Effect.catchTag(\"ThreadNotMaterialized\", (cause) =>\n failure(\"Selected Run disappeared during progress publication\", cause),\n ),\n );\n\n const first = prepared.batch.records[0];\n\n if (first === undefined)\n return yield* failure(\"Settlement must publish a retained terminal fact\");\n\n const terminalBatch = yield* CanonicalBatch.makeEffect({\n ...prepared.batch,\n records: [first, ...prepared.batch.records.slice(1)],\n }).pipe(\n Effect.mapError((cause) =>\n failure(\"Settlement must publish a retained terminal fact\", cause),\n ),\n );\n\n const result = yield* publisher.publishSettlement(terminalBatch, prepared.executions).pipe(\n Effect.catchTag(\"AppendConflict\", (conflict) => {\n if (conflict.reason !== \"tail\" || retries >= 8) return Effect.fail(conflict);\n cached.clear();\n\n return Effect.succeed(undefined);\n }),\n );\n\n if (result === undefined) continue;\n\n if (result.replayed) cached.clear();\n else prepared.accept();\n\n return result;\n }\n },\n (effect) =>\n Effect.flatMap(CurrentRunSettlement, (writer) =>\n writer.withProgress(gate.withPermits(1)(effect)),\n ),\n );\n\n const commit = (batch: CommitBatch) => captureFacts(batch).pipe(Effect.flatMap(commitCaptured));\n\n const publish = (batch: CanonicalBatch) =>\n captureFacts(batch).pipe(Effect.flatMap(publishCaptured));\n\n const reserve = (runId: RunId, probe: CanonicalBatch, bytes: number) =>\n gate.withPermits(1)(\n Effect.gen(function* () {\n const after = yield* tail;\n\n yield* prepare(yield* captureFacts(probe), after);\n const recordId = probe.records[0].recordId;\n const state = cached.get(runId) ?? (yield* loadUncachedState(runId, after));\n\n if (state === undefined) return yield* failure(\"Dispatch has no canonical Run progress\");\n if (reservations.has(recordId))\n return yield* failure(\"Dispatch capacity is already reserved\");\n yield* checkCapacity(state, new Set(), {\n turn: state.continuation.turn,\n bytes,\n records: 1,\n });\n reservations.set(recordId, { runId, turn: state.continuation.turn, bytes, records: 1 });\n\n return gate.withPermits(1)(\n Effect.sync(() => {\n reservations.delete(recordId);\n }),\n );\n }),\n );\n\n const defer = (batch: CanonicalBatch) =>\n gate.withPermits(1)(\n Effect.gen(function* () {\n const after = yield* tail;\n\n const owned = yield* captureFacts(batch);\n\n yield* prepare(owned, after, \"preflight\");\n\n const response = owned.records.find(\n (record) => record.payload._tag === \"ModelResponseRecorded\",\n );\n\n if (response === undefined || response.payload._tag !== \"ModelResponseRecorded\")\n return yield* failure(\"Deferred dispatch has no response\");\n\n const progress =\n cached.get(response.payload.runId) ??\n (yield* loadUncachedState(response.payload.runId, after));\n\n if (progress === undefined) return yield* failure(\"Deferred dispatch has no Run progress\");\n\n const pending = resultCapacity({\n ...progress,\n continuation: {\n ...progress.continuation,\n accounting: { ...progress.continuation.accounting, accountedToolTurn: 0 },\n },\n response: response.payload,\n results: new Map(),\n childResults: new Map(),\n });\n\n const bytes =\n owned.records.reduce((total, record) => total + canonicalRecordBytes(record), 0) +\n MAX_RUN_CONTINUATION_BYTES +\n pending.bytes;\n\n const records = owned.records.length + pending.records;\n\n yield* checkCapacity(progress, new Set(), { turn: response.payload.turn, bytes, records });\n reservations.set(response.recordId, {\n runId: response.payload.runId,\n turn: response.payload.turn,\n bytes,\n records,\n });\n\n return owned;\n }),\n );\n\n const checkState = (state: ProgressState | undefined, recovered: boolean) => {\n if (state === undefined) return Effect.fail(failure(\"Execution has no canonical Run progress\"));\n\n const capacity = () =>\n state.continuation.position === \"settling\" || state.continuation.position === \"settled\"\n ? Effect.void\n : checkCapacity(state);\n\n // Accepted states were shape-checked, but usage and reservations remain live inputs.\n return recovered ? Effect.andThen(checkFutureShapes(state), capacity) : capacity();\n };\n\n const check = (runId: RunId) =>\n gate.withPermits(1)(\n Effect.flatMap(CurrentRunWriter, (writer) => {\n if (writer.threadId !== threadId)\n return Effect.fail(failure(\"Progress writer belongs to another Thread\"));\n\n const retained = cached.get(runId);\n\n if (retained !== undefined) return checkState(retained, false);\n\n return Effect.flatMap(writer.tail, (position) =>\n Effect.flatMap(loadUncachedState(runId, position.sequence), (state) =>\n checkState(state, true),\n ),\n );\n }),\n );\n\n return {\n commit,\n publish,\n reserve,\n defer,\n check,\n /** Scope a verified empty execution/evidence view to one owned initialization body.\n * The caller holds progress+mutation gates; a changed writer or tail never reuses it. */\n withVerifiedEmptyRun: <A, E, R>(\n runId: RunId,\n through: CanonicalSequence,\n body: Effect.Effect<A, E, R>,\n ): Effect.Effect<A, E, R | CurrentRunWriter> =>\n Effect.flatMap(CurrentRunWriter, (writer) => {\n const view = { runId, through, writer };\n\n verifiedEmpty = view;\n\n return body.pipe(\n Effect.ensuring(\n Effect.sync(() => {\n if (verifiedEmpty === view) verifiedEmpty = undefined;\n }),\n ),\n );\n }),\n stageUsage: (runId: RunId, bytes: number) => {\n if (bytes === 0) stagedUsage.delete(runId);\n else stagedUsage.set(runId, bytes);\n },\n };\n});\n"],"mappings":"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"}
|