@yielded/agent-platform-cloudflare 0.1.0-beta.171 → 0.1.0-beta.172

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.
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
- import { a as CloudflareThreadClient, q as cloudflareCryptoLayer } from "./CloudflareThreadClient-D0jRV6Jp.mjs";
3
- import { n as cloudflareScheduledInputAdmissionLayer, t as cloudflarePreparedInputAdmissionLayer } from "./prepared-admission-Chy9awEp.mjs";
2
+ import { X as cloudflareCryptoLayer, o as CloudflareThreadClient } from "./CloudflareThreadClient-DgZVrZzF.mjs";
3
+ import { n as cloudflareScheduledInputAdmissionLayer, t as cloudflarePreparedInputAdmissionLayer } from "./prepared-admission-CSdzFM_v.mjs";
4
4
  import "@yielded/agent/durable-agent-runtime";
5
5
  import { AgentId } from "@yielded/agent/identifiers";
6
6
  import { AdmissionFence } from "@yielded/agent/submission-ledger";
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
- import { a as CloudflareThreadClient, q as cloudflareCryptoLayer } from "./CloudflareThreadClient-D0jRV6Jp.mjs";
3
- import { t as cloudflarePreparedInputAdmissionLayer } from "./prepared-admission-Chy9awEp.mjs";
2
+ import { X as cloudflareCryptoLayer, o as CloudflareThreadClient } from "./CloudflareThreadClient-DgZVrZzF.mjs";
3
+ import { t as cloudflarePreparedInputAdmissionLayer } from "./prepared-admission-CSdzFM_v.mjs";
4
4
  import { Principal } from "@yielded/agent/submission-ledger";
5
5
  import { Cause, Clock, Context, DateTime, Effect, Layer, Schema } from "effect";
6
6
  import { DurableObject, DurableObjectAlarm, DurableObjectState } from "effect-cf";
@@ -81,6 +81,7 @@ var CloudflareThreadClient_exports = /* @__PURE__ */ __exportAll({
81
81
  AbortRecorded: () => AbortRecorded,
82
82
  ApprovalRecorded: () => ApprovalRecorded,
83
83
  AwaitProgressRequest: () => AwaitProgressRequest,
84
+ AwaitSettlementRequest: () => AwaitSettlementRequest,
84
85
  CancelProgressRequest: () => CancelProgressRequest,
85
86
  CloudflareThreadClient: () => CloudflareThreadClient,
86
87
  HostFailed: () => HostFailed,
@@ -103,6 +104,7 @@ var CloudflareThreadClient_exports = /* @__PURE__ */ __exportAll({
103
104
  decodeAbortCommand: () => decodeAbortCommand,
104
105
  decodeApprovalDecisionCommand: () => decodeApprovalDecisionCommand,
105
106
  decodeAwaitProgressRequest: () => decodeAwaitProgressRequest,
107
+ decodeAwaitSettlementRequest: () => decodeAwaitSettlementRequest,
106
108
  decodeCancelProgressRequest: () => decodeCancelProgressRequest,
107
109
  decodeHostResponse: () => decodeHostResponse,
108
110
  decodeObservePageRequest: () => decodeObservePageRequest,
@@ -112,6 +114,7 @@ var CloudflareThreadClient_exports = /* @__PURE__ */ __exportAll({
112
114
  encodeAbortCommand: () => encodeAbortCommand,
113
115
  encodeApprovalDecisionCommand: () => encodeApprovalDecisionCommand,
114
116
  encodeAwaitProgressRequest: () => encodeAwaitProgressRequest,
117
+ encodeAwaitSettlementRequest: () => encodeAwaitSettlementRequest,
115
118
  encodeCancelProgressRequest: () => encodeCancelProgressRequest,
116
119
  encodeHostResponse: () => encodeHostResponse,
117
120
  encodeObservePageRequest: () => encodeObservePageRequest,
@@ -170,12 +173,14 @@ var ObservePageRequest = class extends Schema.Class("@effect-agent/platform-clou
170
173
  afterSequence: Schema.optionalKey(CanonicalSequence),
171
174
  limit: Schema.Int.check(Schema.isGreaterThan(0), Schema.isLessThanOrEqualTo(1024))
172
175
  }) {};
176
+ /** Receipt-shaped observation request; the optional identity owns only the remote wait. */
177
+ var AwaitSettlementRequest = class extends Receipt.extend("@effect-agent/platform-cloudflare/AwaitSettlementRequest")({ waiterId: Schema.optionalKey(Schema.String.check(Schema.isMinLength(1), Schema.isMaxLength(256))) }) {};
173
178
  /** One event-driven wait for canonical progress strictly after this sequence. */
174
179
  var AwaitProgressRequest = class extends Schema.Class("@effect-agent/platform-cloudflare/AwaitProgressRequest")({
175
180
  afterSequence: CanonicalSequence,
176
181
  waiterId: Schema.String.check(Schema.isMinLength(1), Schema.isMaxLength(256))
177
182
  }) {};
178
- /** Best-effort cancellation of one in-flight progress RPC. */
183
+ /** Best-effort cancellation of one in-flight progress or settlement observation. */
179
184
  var CancelProgressRequest = class extends Schema.Class("@effect-agent/platform-cloudflare/CancelProgressRequest")({ waiterId: Schema.String.check(Schema.isMinLength(1), Schema.isMaxLength(256)) }) {};
180
185
  /**
181
186
  * Every typed failure a host entry point can produce, plus the protocol's own errors. Same
@@ -235,6 +240,8 @@ const decodeSubmitRequest = Schema.decodeUnknownEffect(SubmitRequest);
235
240
  const encodeSubmitRequest = Schema.encodeEffect(SubmitRequest);
236
241
  const decodeReceipt = Schema.decodeUnknownEffect(Receipt);
237
242
  const encodeReceipt = Schema.encodeEffect(Receipt);
243
+ const decodeAwaitSettlementRequest = Schema.decodeUnknownEffect(AwaitSettlementRequest);
244
+ const encodeAwaitSettlementRequest = Schema.encodeEffect(AwaitSettlementRequest);
238
245
  const decodeObservePageRequest = Schema.decodeUnknownEffect(ObservePageRequest);
239
246
  const encodeObservePageRequest = Schema.encodeEffect(ObservePageRequest);
240
247
  const decodeAwaitProgressRequest = Schema.decodeUnknownEffect(AwaitProgressRequest);
@@ -460,6 +467,14 @@ var CloudflareThreadClient = class CloudflareThreadClient extends Context.Servic
460
467
  return (yield* expect(threadId, "observePage", ObservedPage, ClientObserveHostFailure)(response)).records;
461
468
  });
462
469
  const cancelProgress = (threadId, waiterId) => encodeCancelProgressRequest(CancelProgressRequest.make({ waiterId })).pipe(Effect.mapError(() => void 0), Effect.flatMap((encoded) => call(threadId, "cancelProgress", encoded)), Effect.interruptible, Effect.timeout(PROGRESS_CANCELLATION_TIMEOUT), Effect.asVoid, Effect.ignore);
470
+ const awaitSettlementCall = Effect.fnUntraced(function* (receipt, operation) {
471
+ const waiterId = yield* crypto.randomUUIDv4().pipe(Effect.mapError((error) => HostProtocolError.make({ message: boundHostDiagnostic(`${operation} cancellation identity generation failed: ${error.message}`) })));
472
+ const encoded = yield* encodeAwaitSettlementRequest(AwaitSettlementRequest.make({
473
+ ...receipt,
474
+ waiterId
475
+ })).pipe(Effect.mapError((error) => HostProtocolError.make({ message: boundHostDiagnostic(`${operation} request encode failed: ${error.message}`) })));
476
+ return yield* call(receipt.threadId, operation, encoded).pipe(Effect.onInterrupt(() => cancelProgress(receipt.threadId, waiterId)));
477
+ });
463
478
  return CloudflareThreadClient.of({
464
479
  submit: (agent, input, options) => Effect.gen(function* () {
465
480
  const encodedInput = yield* Schema.encodeEffect(agent.definition.input)(input).pipe(Effect.mapError((cause) => AgentInputError.make({ message: `Unable to encode Agent input: ${cause.message}` })));
@@ -485,13 +500,11 @@ var CloudflareThreadClient = class CloudflareThreadClient extends Context.Servic
485
500
  return (yield* expect(receipt.threadId, "submissionStatus", SubmissionStatusResponse, ClientAwaitHostFailure)(response)).status;
486
501
  }),
487
502
  awaitSettlement: (receipt) => Effect.gen(function* () {
488
- const encoded = yield* encodeReceipt(receipt).pipe(Effect.mapError((error) => HostProtocolError.make({ message: boundHostDiagnostic(`receipt encode failed: ${error.message}`) })));
489
- const response = yield* call(receipt.threadId, "awaitSettlement", encoded);
503
+ const response = yield* awaitSettlementCall(receipt, "awaitSettlement");
490
504
  return (yield* expect(receipt.threadId, "awaitSettlement", SettlementReached, ClientAwaitHostFailure)(response)).settlement;
491
505
  }),
492
506
  awaitSettlementRecord: (receipt) => Effect.gen(function* () {
493
- const encoded = yield* encodeReceipt(receipt).pipe(Effect.mapError((error) => HostProtocolError.make({ message: boundHostDiagnostic(`receipt encode failed: ${error.message}`) })));
494
- const response = yield* call(receipt.threadId, "awaitSettlementRecord", encoded);
507
+ const response = yield* awaitSettlementCall(receipt, "awaitSettlementRecord");
495
508
  return (yield* expect(receipt.threadId, "awaitSettlementRecord", SettlementRecordReached, ClientAwaitHostFailure)(response)).record;
496
509
  }),
497
510
  awaitProgress: (threadId, afterSequence) => Effect.gen(function* () {
@@ -583,6 +596,6 @@ var CloudflareThreadClient = class CloudflareThreadClient extends Context.Servic
583
596
  }));
584
597
  };
585
598
  //#endregion
586
- export { decodeSubmitRequest as A, encodeUnknownResolutionCommand as B, decodeAbortCommand as C, decodeHostResponse as D, decodeCancelProgressRequest as E, encodeCancelProgressRequest as F, Request as G, MAX_DELTA_LENGTH as H, encodeHostResponse as I, isBoundedEvent as K, encodeObservePageRequest as L, encodeAbortCommand as M, encodeApprovalDecisionCommand as N, decodeObservePageRequest as O, encodeAwaitProgressRequest as P, encodeReceipt as R, boundHostDiagnostic as S, decodeAwaitProgressRequest as T, MAX_DRAFT_LENGTH as U, Frame as V, MAX_FRAME_BYTES as W, SubmissionStatusResponse as _, CloudflareThreadClient as a, ThreadClientError as b, HostFailure as c, ObservePageRequest as d, ObservedPage as f, SettlementRecordReached as g, SettlementReached as h, CancelProgressRequest as i, decodeUnknownResolutionCommand as j, decodeReceipt as k, HostProtocolError as l, ProgressObserved as m, ApprovalRecorded as n, CloudflareThreadClient_exports as o, ProgressCancelled as p, cloudflareCryptoLayer as q, AwaitProgressRequest as r, HostFailed as s, AbortRecorded as t, HostResponse as u, SubmitRequest as v, decodeApprovalDecisionCommand as w, UnknownResolutionRecorded as x, SubmitSucceeded as y, encodeSubmitRequest as z };
599
+ export { decodeObservePageRequest as A, encodeObservePageRequest as B, boundHostDiagnostic as C, decodeAwaitSettlementRequest as D, decodeAwaitProgressRequest as E, encodeApprovalDecisionCommand as F, MAX_DELTA_LENGTH as G, encodeSubmitRequest as H, encodeAwaitProgressRequest as I, Request as J, MAX_DRAFT_LENGTH as K, encodeAwaitSettlementRequest as L, decodeSubmitRequest as M, decodeUnknownResolutionCommand as N, decodeCancelProgressRequest as O, encodeAbortCommand as P, encodeCancelProgressRequest as R, UnknownResolutionRecorded as S, decodeApprovalDecisionCommand as T, encodeUnknownResolutionCommand as U, encodeReceipt as V, Frame as W, cloudflareCryptoLayer as X, isBoundedEvent as Y, SettlementRecordReached as _, CancelProgressRequest as a, SubmitSucceeded as b, HostFailed as c, HostResponse as d, ObservePageRequest as f, SettlementReached as g, ProgressObserved as h, AwaitSettlementRequest as i, decodeReceipt as j, decodeHostResponse as k, HostFailure as l, ProgressCancelled as m, ApprovalRecorded as n, CloudflareThreadClient as o, ObservedPage as p, MAX_FRAME_BYTES as q, AwaitProgressRequest as r, CloudflareThreadClient_exports as s, AbortRecorded as t, HostProtocolError as u, SubmissionStatusResponse as v, decodeAbortCommand as w, ThreadClientError as x, SubmitRequest as y, encodeHostResponse as z };
587
600
 
588
- //# sourceMappingURL=CloudflareThreadClient-D0jRV6Jp.mjs.map
601
+ //# sourceMappingURL=CloudflareThreadClient-DgZVrZzF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CloudflareThreadClient-DgZVrZzF.mjs","names":["LiveTextFrame","WatchTextRequest"],"sources":["../src/internal/crypto.ts","../src/internal/live-text-protocol.ts","../src/CloudflareThreadClient.ts"],"sourcesContent":["// Implement the Effect Crypto service with the Workers native hashing primitive.\n// @effect-diagnostics-next-line nodeBuiltinImport:off\nimport { createHash } from \"node:crypto\";\n\nimport { BrowserCrypto } from \"@effect/platform-browser\";\nimport { Crypto, Effect, Layer, PlatformError } from \"effect\";\n\n/** Workers use native SHA-256 while retaining BrowserCrypto's services and overrides. */\nexport const cloudflareCryptoLayer: Layer.Layer<Crypto.Crypto> = Layer.effect(\n Crypto.Crypto,\n Effect.gen(function* () {\n const base = yield* Crypto.Crypto;\n const webCrypto = yield* BrowserCrypto.WebCrypto;\n const hostGlobals: object = globalThis;\n\n return Crypto.Crypto.of({\n ...base,\n digest: (algorithm, data) => {\n if (\n algorithm !== \"SHA-256\" ||\n !(\"crypto\" in hostGlobals) ||\n webCrypto !== hostGlobals.crypto ||\n typeof webCrypto.subtle?.digest !== \"function\"\n )\n return base.digest(algorithm, data);\n\n return Effect.try({\n try: () => Uint8Array.from(createHash(\"sha256\").update(data).digest()),\n catch: (cause) =>\n PlatformError.systemError({\n module: \"Crypto\",\n method: \"digest\",\n _tag: \"Unknown\",\n description: \"Could not compute digest\",\n cause,\n }),\n });\n },\n });\n }),\n).pipe(Layer.provide(BrowserCrypto.layer));\n","import { ThreadId } from \"@yielded/agent/identifiers\";\nimport { Event } from \"@yielded/agent/provisional-text\";\nimport { Schema } from \"effect\";\n\nexport const MAX_FRAME_BYTES = 32 * 1_024;\nexport const MAX_ID_LENGTH = 256;\nexport const MAX_DELTA_LENGTH = 4_096;\nexport const BUFFER_SIZE = 32;\nexport const MAX_OBSERVERS = 8;\nexport const MAX_DRAFT_PARTS = 32;\nexport const MAX_DRAFT_LENGTH = 2 * 1_024 * 1_024;\n\nconst streamId = Schema.NonEmptyString.check(Schema.isMaxLength(MAX_ID_LENGTH));\n\nexport const Request = Schema.Struct({ schemaVersion: Schema.Literal(1) });\n\n/**\n * Reset replaces all drafts with a snapshot, streamed as native Text parts before live deltas.\n * Each snapshot starts a fresh streamId. Its sequences are unrelated to canonical sequences.\n */\nexport const Frame = Schema.Union([\n Schema.TaggedStruct(\"Reset\", {\n schemaVersion: Schema.Literal(1),\n streamId,\n threadId: ThreadId,\n sequence: Schema.Literal(0),\n }),\n Schema.TaggedStruct(\"Event\", {\n schemaVersion: Schema.Literal(1),\n streamId,\n sequence: Schema.Int.check(Schema.isGreaterThan(0)),\n event: Event,\n }),\n]);\n\nexport type Frame = typeof Frame.Type;\n\n/** Bounds are checked before queueing; provider metadata is deliberately absent. */\nexport const isBoundedEvent = (event: Event): boolean => {\n const ids: string[] = [event.threadId, event.submissionId, event.attemptId];\n\n if (event._tag !== \"AttemptEnded\") ids.push(event.runId, event.turnId);\n if (ids.some((id) => id.length > MAX_ID_LENGTH)) return false;\n\n return (\n event._tag !== \"Text\" ||\n (event.part.id.length <= MAX_ID_LENGTH &&\n Object.keys(event.part.metadata).length === 0 &&\n (event.part.type !== \"text-delta\" || event.part.delta.length <= MAX_DELTA_LENGTH))\n );\n};\n","import { AgentInputError } from \"@yielded/agent/agent-error\";\nimport { DigestError } from \"@yielded/agent/digest\";\nimport {\n Receipt,\n type DurableSubmitAgent,\n type DurableSubmitOptions,\n} from \"@yielded/agent/durable-agent-runtime\";\nimport { DurableRuntimeFailpointError } from \"@yielded/agent/durable-failpoint\";\nimport { AgentId, type ThreadId } from \"@yielded/agent/identifiers\";\nimport { InputMessage } from \"@yielded/agent/messaging\";\nimport { OperationDenied } from \"@yielded/agent/operation-authorizer\";\nimport {\n CanonicalRecordEnvelope,\n CanonicalSequence,\n DefinitionDigests,\n PersistedJson,\n SubmissionSettledRecord,\n WorkerAdmission,\n} from \"@yielded/agent/records\";\nimport {\n AdmissionFence,\n AdmissionGroup,\n AbortCommand,\n AbortIntent,\n AdmissionConflict,\n AdmissionPolicyError,\n ApprovalConflict,\n ApprovalDecisionCommand,\n ApprovalDecisionIntent,\n IdempotencyKey,\n JoinedToHost,\n LedgerError,\n OwnershipLost,\n Principal,\n Settlement,\n SettlementConflict,\n UnknownResolutionCommand,\n UnknownResolutionConflict,\n UnknownResolutionIntent,\n} from \"@yielded/agent/submission-ledger\";\nimport { SubmissionStatus } from \"@yielded/agent/submission-status\";\nimport {\n AppendConflict,\n ThreadNotMaterialized,\n ThreadStoreError,\n} from \"@yielded/agent/thread-store\";\nimport { Context, Crypto, Duration, Effect, Layer, Predicate, Schema, Stream } from \"effect\";\nimport { RpcTargets, RpcTracing } from \"effect-cf\";\n\nimport { DurableAlarmError } from \"./Alarm.ts\";\nimport {\n callThreadObject,\n ThreadObjectNamespace,\n type ThreadObjectRpc,\n} from \"./CloudflareBindings.ts\";\nimport { AdmissionLimitExceeded } from \"./CloudflareConfig.ts\";\nimport { cloudflareFailureSignals, safeCauseMessage } from \"./internal/boundary.ts\";\nimport { cloudflareCryptoLayer } from \"./internal/crypto.ts\";\nimport {\n Frame as LiveTextFrame,\n isBoundedEvent,\n MAX_DRAFT_PARTS,\n MAX_FRAME_BYTES,\n Request as WatchTextRequest,\n} from \"./internal/live-text-protocol.ts\";\n\nexport { Frame as LiveTextFrame } from \"./internal/live-text-protocol.ts\";\n\n/**\n * The Worker↔Thread-Object host protocol (plan §1.4): Schema envelopes for the host\n * entry points (`submitEncoded`, `awaitSettlementEncoded`, `observePage`, `abortEncoded`,\n * `resolveApprovalEncoded`, `resolveUnknownEncoded`) plus the Worker-side client that speaks\n * it. Mirrors the WP2 port protocol: requests and responses are closed Schema unions, typed\n * failures travel as their own tagged classes and RE-DECODE to identical tags on the caller\n * (error-tag fidelity), and protocol anomalies are answered typed instead of thrown.\n */\n\n/** Ceiling for host protocol diagnostic strings. */\nconst MAX_HOST_DIAGNOSTIC_LENGTH = 4_096;\nconst PROGRESS_CANCELLATION_TIMEOUT = \"1 second\";\n\nconst BoundedDiagnostic = Schema.String.check(Schema.isMaxLength(MAX_HOST_DIAGNOSTIC_LENGTH));\n\n/** Truncate a diagnostic string to the host protocol's bounded length. */\nexport const boundHostDiagnostic = (value: string): string =>\n value.length > MAX_HOST_DIAGNOSTIC_LENGTH\n ? `${value.slice(0, MAX_HOST_DIAGNOSTIC_LENGTH - 3)}...`\n : value;\n\n/**\n * The envelope itself could not be honored: the Object could not decode the request, or a\n * response could not be encoded/decoded. Never carries operation semantics.\n */\nexport class HostProtocolError extends Schema.TaggedError<HostProtocolError>()(\n \"HostProtocolError\",\n {\n message: BoundedDiagnostic,\n },\n) {}\n\n/** The Worker-side stub call itself failed (RPC rejection, overload, eviction mid-call). */\nexport class ThreadClientError extends Schema.TaggedError<ThreadClientError>()(\n \"ThreadClientError\",\n {\n threadId: Schema.String,\n message: Schema.String,\n cause: Schema.optionalKey(Schema.Defect()),\n /** Cloudflare's own classification for a failure safe to retry with a fresh stub. */\n retryable: Schema.optionalKey(Schema.Boolean),\n /** Cloudflare overloads are surfaced immediately instead of adding retry pressure. */\n overloaded: Schema.optionalKey(Schema.Boolean),\n },\n) {}\n\n// ---------------------------------------------------------------------------\n// Requests\n// ---------------------------------------------------------------------------\n\n/**\n * One durable submission, input ALREADY encoded by the caller through the Agent Binding's\n * input schema (the Worker bundles the same Agent definitions as the Object, so schema\n * validation happens client-side; the resolved Binding re-validates at claim time). The\n * Thread identity is deliberately absent — the addressed Object IS the lane.\n */\nexport class SubmitRequest extends Schema.Class<SubmitRequest>(\n \"@effect-agent/platform-cloudflare/SubmitRequest\",\n)({\n agentId: AgentId,\n principal: Principal,\n idempotencyKey: IdempotencyKey,\n admissionGroup: Schema.optionalKey(AdmissionGroup),\n admissionFence: Schema.optionalKey(AdmissionFence),\n workerAdmission: Schema.optionalKey(WorkerAdmission),\n messageAdmission: Schema.optionalKey(InputMessage),\n definitions: DefinitionDigests,\n inputPayload: PersistedJson,\n}) {}\n\n/** One bounded page of canonical records after an optional sequence. */\nexport class ObservePageRequest extends Schema.Class<ObservePageRequest>(\n \"@effect-agent/platform-cloudflare/ObservePageRequest\",\n)({\n afterSequence: Schema.optionalKey(CanonicalSequence),\n limit: Schema.Int.check(Schema.isGreaterThan(0), Schema.isLessThanOrEqualTo(1_024)),\n}) {}\n\n/** Receipt-shaped observation request; the optional identity owns only the remote wait. */\nexport class AwaitSettlementRequest extends Receipt.extend<AwaitSettlementRequest>(\n \"@effect-agent/platform-cloudflare/AwaitSettlementRequest\",\n)({\n waiterId: Schema.optionalKey(Schema.String.check(Schema.isMinLength(1), Schema.isMaxLength(256))),\n}) {}\n\n/** One event-driven wait for canonical progress strictly after this sequence. */\nexport class AwaitProgressRequest extends Schema.Class<AwaitProgressRequest>(\n \"@effect-agent/platform-cloudflare/AwaitProgressRequest\",\n)({\n afterSequence: CanonicalSequence,\n waiterId: Schema.String.check(Schema.isMinLength(1), Schema.isMaxLength(256)),\n}) {}\n\n/** Best-effort cancellation of one in-flight progress or settlement observation. */\nexport class CancelProgressRequest extends Schema.Class<CancelProgressRequest>(\n \"@effect-agent/platform-cloudflare/CancelProgressRequest\",\n)({\n waiterId: Schema.String.check(Schema.isMinLength(1), Schema.isMaxLength(256)),\n}) {}\n\n// ---------------------------------------------------------------------------\n// Responses\n// ---------------------------------------------------------------------------\n\n/**\n * Every typed failure a host entry point can produce, plus the protocol's own errors. Same\n * closed-union discipline as the WP2 `PortFailure`: members re-decode to the SAME tagged\n * classes on the Worker side; `cause` chains travel as Schema defects without instance\n * fidelity (plan §2.8).\n */\nexport const HostFailure = Schema.Union([\n AgentInputError,\n DigestError,\n AdmissionConflict,\n AdmissionPolicyError,\n SettlementConflict,\n ApprovalConflict,\n UnknownResolutionConflict,\n JoinedToHost,\n LedgerError,\n OwnershipLost,\n ThreadStoreError,\n ThreadNotMaterialized,\n AppendConflict,\n DurableRuntimeFailpointError,\n AdmissionLimitExceeded,\n DurableAlarmError,\n OperationDenied,\n HostProtocolError,\n]);\n\nexport type HostFailure = typeof HostFailure.Type;\n\nexport class SubmitSucceeded extends Schema.TaggedClass<SubmitSucceeded>(\n \"@effect-agent/platform-cloudflare/SubmitSucceeded\",\n)(\"SubmitSucceeded\", {\n receipt: Receipt,\n}) {}\n\nexport class SubmissionStatusResponse extends Schema.TaggedClass<SubmissionStatusResponse>(\n \"@effect-agent/platform-cloudflare/SubmissionStatusResponse\",\n)(\"SubmissionStatusResponse\", { status: SubmissionStatus }) {}\n\nexport class SettlementReached extends Schema.TaggedClass<SettlementReached>(\n \"@effect-agent/platform-cloudflare/SettlementReached\",\n)(\"SettlementReached\", {\n settlement: Settlement,\n}) {}\n\n/** The exact canonical record of an operationally finalized Submission. */\nexport class SettlementRecordReached extends Schema.TaggedClass<SettlementRecordReached>(\n \"@effect-agent/platform-cloudflare/SettlementRecordReached\",\n)(\"SettlementRecordReached\", {\n record: SubmissionSettledRecord,\n}) {}\n\nexport class ObservedPage extends Schema.TaggedClass<ObservedPage>(\n \"@effect-agent/platform-cloudflare/ObservedPage\",\n)(\"ObservedPage\", {\n records: Schema.Array(CanonicalRecordEnvelope).check(Schema.isMaxLength(1_024)),\n}) {}\n\n/** A record was already committed or an incarnation-local hint says the caller should re-read. */\nexport class ProgressObserved extends Schema.TaggedClass<ProgressObserved>(\n \"@effect-agent/platform-cloudflare/ProgressObserved\",\n)(\"ProgressObserved\", {}) {}\n\nexport class ProgressCancelled extends Schema.TaggedClass<ProgressCancelled>(\n \"@effect-agent/platform-cloudflare/ProgressCancelled\",\n)(\"ProgressCancelled\", {}) {}\n\nexport class AbortRecorded extends Schema.TaggedClass<AbortRecorded>(\n \"@effect-agent/platform-cloudflare/AbortRecorded\",\n)(\"AbortRecorded\", {\n intent: AbortIntent,\n}) {}\n\nexport class ApprovalRecorded extends Schema.TaggedClass<ApprovalRecorded>(\n \"@effect-agent/platform-cloudflare/ApprovalRecorded\",\n)(\"ApprovalRecorded\", {\n intent: ApprovalDecisionIntent,\n}) {}\n\nexport class UnknownResolutionRecorded extends Schema.TaggedClass<UnknownResolutionRecorded>(\n \"@effect-agent/platform-cloudflare/UnknownResolutionRecorded\",\n)(\"UnknownResolutionRecorded\", {\n intent: UnknownResolutionIntent,\n}) {}\n\n/** The entry point failed TYPED on the Object; the failure re-decodes verbatim. */\nexport class HostFailed extends Schema.TaggedClass<HostFailed>(\n \"@effect-agent/platform-cloudflare/HostFailed\",\n)(\"HostFailed\", {\n failure: HostFailure,\n}) {}\n\n/** The uniform answer of one host entry point. Callers narrow by the tag their call implies. */\nexport const HostResponse = Schema.Union([\n SubmitSucceeded,\n SettlementReached,\n SettlementRecordReached,\n SubmissionStatusResponse,\n ObservedPage,\n ProgressObserved,\n ProgressCancelled,\n AbortRecorded,\n ApprovalRecorded,\n UnknownResolutionRecorded,\n HostFailed,\n]);\n\nexport type HostResponse = typeof HostResponse.Type;\n\n// ---------------------------------------------------------------------------\n// Codecs (shared by the Object endpoints and the Worker client)\n// ---------------------------------------------------------------------------\n\nexport const decodeSubmitRequest = Schema.decodeUnknownEffect(SubmitRequest);\nexport const encodeSubmitRequest = Schema.encodeEffect(SubmitRequest);\nexport const decodeReceipt = Schema.decodeUnknownEffect(Receipt);\nexport const encodeReceipt = Schema.encodeEffect(Receipt);\nexport const decodeAwaitSettlementRequest = Schema.decodeUnknownEffect(AwaitSettlementRequest);\nexport const encodeAwaitSettlementRequest = Schema.encodeEffect(AwaitSettlementRequest);\nexport const decodeObservePageRequest = Schema.decodeUnknownEffect(ObservePageRequest);\nexport const encodeObservePageRequest = Schema.encodeEffect(ObservePageRequest);\nexport const decodeAwaitProgressRequest = Schema.decodeUnknownEffect(AwaitProgressRequest);\nexport const encodeAwaitProgressRequest = Schema.encodeEffect(AwaitProgressRequest);\nexport const decodeCancelProgressRequest = Schema.decodeUnknownEffect(CancelProgressRequest);\nexport const encodeCancelProgressRequest = Schema.encodeEffect(CancelProgressRequest);\nexport const decodeAbortCommand = Schema.decodeUnknownEffect(AbortCommand);\nexport const encodeAbortCommand = Schema.encodeEffect(AbortCommand);\nexport const decodeApprovalDecisionCommand = Schema.decodeUnknownEffect(ApprovalDecisionCommand);\nexport const encodeApprovalDecisionCommand = Schema.encodeEffect(ApprovalDecisionCommand);\nexport const decodeUnknownResolutionCommand = Schema.decodeUnknownEffect(UnknownResolutionCommand);\nexport const encodeUnknownResolutionCommand = Schema.encodeEffect(UnknownResolutionCommand);\nexport const encodeHostResponse = Schema.encodeEffect(HostResponse);\nexport const decodeHostResponse = Schema.decodeUnknownEffect(HostResponse);\n\n// ---------------------------------------------------------------------------\n// Worker-side client\n// ---------------------------------------------------------------------------\n\n/** Failure surface of `CloudflareThreadClient.submit`. */\nconst ClientSubmitHostFailure = Schema.Union([\n AgentInputError,\n DigestError,\n AdmissionConflict,\n AdmissionPolicyError,\n LedgerError,\n OwnershipLost,\n ThreadStoreError,\n ThreadNotMaterialized,\n AppendConflict,\n DurableRuntimeFailpointError,\n AdmissionLimitExceeded,\n DurableAlarmError,\n HostProtocolError,\n]);\n\nconst ClientAwaitHostFailure = Schema.Union([\n LedgerError,\n OwnershipLost,\n SettlementConflict,\n OperationDenied,\n HostProtocolError,\n]);\n\nconst ClientObserveHostFailure = Schema.Union([\n ThreadStoreError,\n ThreadNotMaterialized,\n OperationDenied,\n HostProtocolError,\n]);\n\nconst ClientAbortHostFailure = Schema.Union([\n OperationDenied,\n LedgerError,\n OwnershipLost,\n SettlementConflict,\n JoinedToHost,\n DurableRuntimeFailpointError,\n DurableAlarmError,\n HostProtocolError,\n]);\n\nconst ClientApprovalHostFailure = Schema.Union([\n LedgerError,\n OwnershipLost,\n SettlementConflict,\n ApprovalConflict,\n OperationDenied,\n DurableAlarmError,\n HostProtocolError,\n]);\n\nconst ClientUnknownHostFailure = Schema.Union([\n LedgerError,\n OwnershipLost,\n SettlementConflict,\n UnknownResolutionConflict,\n JoinedToHost,\n DurableRuntimeFailpointError,\n OperationDenied,\n DurableAlarmError,\n HostProtocolError,\n]);\n\nexport type ClientSubmitFailure = typeof ClientSubmitHostFailure.Type | ThreadClientError;\nexport type ClientAwaitFailure = typeof ClientAwaitHostFailure.Type | ThreadClientError;\nexport type ClientObserveFailure = typeof ClientObserveHostFailure.Type | ThreadClientError;\nexport type ClientProgressFailure = ClientObserveFailure;\nexport type ClientAbortFailure = typeof ClientAbortHostFailure.Type | ThreadClientError;\nexport type ClientApprovalFailure = typeof ClientApprovalHostFailure.Type | ThreadClientError;\nexport type ClientUnknownFailure = typeof ClientUnknownHostFailure.Type | ThreadClientError;\n\nconst liveTextProtocolFailure = () =>\n HostProtocolError.make({\n message: \"Provisional text is incomplete or invalid; discard drafts and read canonical records\",\n });\n\nconst decodeLiveText = (\n threadId: ThreadId,\n source: ReadableStream<unknown>,\n): Stream.Stream<LiveTextFrame, HostProtocolError | ThreadClientError> =>\n Stream.suspend(() => {\n const decoder = new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: false });\n const decode = Schema.decodeUnknownSync(Schema.fromJsonString(LiveTextFrame));\n let pending = \"\";\n let pendingBytes = 0;\n let expected = 0;\n let streamId: string | undefined;\n const models = new Map<string, { attemptId: string; parts: Set<string> }>();\n\n const accept = (frame: LiveTextFrame): boolean => {\n if (frame._tag === \"Reset\") {\n if (frame.streamId === streamId || frame.threadId !== threadId)\n throw liveTextProtocolFailure();\n streamId = frame.streamId;\n expected = 1;\n models.clear();\n\n return true;\n }\n if (\n streamId === undefined ||\n frame.streamId !== streamId ||\n frame.sequence !== expected++ ||\n frame.event.threadId !== threadId ||\n !isBoundedEvent(frame.event)\n )\n throw liveTextProtocolFailure();\n const event = frame.event;\n\n if (event._tag === \"AttemptEnded\") {\n for (const [key, model] of models)\n if (model.attemptId === event.attemptId) models.delete(key);\n\n return true;\n }\n const key = JSON.stringify([event.attemptId, event.runId, event.turnId, event.generation]);\n\n if (event._tag === \"Discard\") {\n models.delete(key);\n\n return true;\n }\n let model = models.get(key);\n\n if (event.part.type === \"text-start\") {\n if (model?.parts.has(event.part.id)) throw liveTextProtocolFailure();\n if (\n [...models.values()].reduce((size, value) => size + value.parts.size, 0) >=\n MAX_DRAFT_PARTS\n )\n throw liveTextProtocolFailure();\n if (model === undefined) {\n model = { attemptId: event.attemptId, parts: new Set() };\n models.set(key, model);\n }\n model.parts.add(event.part.id);\n\n return true;\n }\n if (!model?.parts.has(event.part.id)) throw liveTextProtocolFailure();\n if (event.part.type === \"text-end\") {\n model.parts.delete(event.part.id);\n if (model.parts.size === 0) models.delete(key);\n }\n\n return true;\n };\n\n return Stream.fromReadableStream({\n evaluate: () => source,\n // The subscription Scope owns the single bounded cancellation after this reader unlocks.\n releaseLockOnEnd: true,\n onError: (cause) =>\n ThreadClientError.make({\n threadId,\n message: \"Provisional text disconnected; discard drafts and read canonical records\",\n cause,\n }),\n }).pipe(\n Stream.mapEffect((chunk) =>\n Effect.try({\n try: () => {\n if (!(chunk instanceof Uint8Array)) throw liveTextProtocolFailure();\n const frames: LiveTextFrame[] = [];\n\n for (let offset = 0; offset < chunk.byteLength;) {\n const newline = chunk.indexOf(10, offset);\n const end = newline < 0 ? chunk.byteLength : newline;\n\n pendingBytes += end - offset;\n if (pendingBytes > MAX_FRAME_BYTES) throw liveTextProtocolFailure();\n pending += decoder.decode(chunk.subarray(offset, end), { stream: newline < 0 });\n offset = end + 1;\n if (newline < 0) break;\n const frame = decode(pending);\n\n pending = \"\";\n pendingBytes = 0;\n if (accept(frame)) frames.push(frame);\n }\n\n return frames;\n },\n catch: liveTextProtocolFailure,\n }),\n ),\n Stream.flatMap(Stream.fromArray),\n // This connection is open-ended. Clean EOF is also loss of provisional state.\n Stream.concat(Stream.fail(liveTextProtocolFailure())),\n );\n });\n\nconst outOfContract = (threadId: string, operation: string, observed: string): ThreadClientError =>\n ThreadClientError.make({\n threadId,\n message: boundHostDiagnostic(\n `The Thread Object answered ${operation} with the out-of-contract ${observed}.`,\n ),\n });\n\nconst hostRpcMethods = {\n submit: \"submitEncoded\",\n awaitSettlement: \"awaitSettlementEncoded\",\n awaitSettlementRecord: \"awaitSettlementRecordEncoded\",\n submissionStatus: \"submissionStatusEncoded\",\n awaitProgress: \"awaitProgressEncoded\",\n cancelProgress: \"cancelProgressEncoded\",\n observePage: \"observePage\",\n abort: \"abortEncoded\",\n resolveApproval: \"resolveApprovalEncoded\",\n resolveUnknown: \"resolveUnknownEncoded\",\n} as const satisfies Record<string, keyof ThreadObjectRpc>;\n\n/** Worker-side client over the Thread Object namespace (DEPLOY-010). */\nexport class CloudflareThreadClient extends Context.Service<\n CloudflareThreadClient,\n {\n /** Encode the input client-side, then durably submit to the owning Object. */\n readonly submit: <InputSchema extends Schema.Top>(\n agent: DurableSubmitAgent<InputSchema>,\n input: InputSchema[\"Type\"],\n options: DurableSubmitOptions,\n ) => Effect.Effect<Receipt, ClientSubmitFailure, InputSchema[\"EncodingServices\"]>;\n /** Wake-hinted, poll-guaranteed settlement wait executed inside the owning Object. */\n readonly submissionStatus: (\n receipt: Receipt,\n ) => Effect.Effect<SubmissionStatus, ClientAwaitFailure>;\n /**\n * Wait for settlement; interruption spends at most one second cancelling the remote\n * observation best effort. Cancellation never aborts the admitted Run.\n */\n readonly awaitSettlement: (receipt: Receipt) => Effect.Effect<Settlement, ClientAwaitFailure>;\n /**\n * Wait for finalization and return this Receipt's canonical terminal record in one RPC.\n * Requires both settlement and observation authority. Decode an ordinary completed\n * record's result through the Agent output Schema; joined completion may have no result.\n * Interruption uses the same bounded observation cancellation as `awaitSettlement`.\n */\n readonly awaitSettlementRecord: (\n receipt: Receipt,\n ) => Effect.Effect<SubmissionSettledRecord, ClientAwaitFailure>;\n /**\n * Wait without polling until progress after `afterSequence` is already durable or hinted.\n * The result is deliberately void: canonical records remain authoritative and must be read.\n * Interruption waits at most one second for best-effort remote cancellation.\n */\n readonly awaitProgress: (\n threadId: ThreadId,\n afterSequence: CanonicalSequence,\n ) => Effect.Effect<void, ClientProgressFailure>;\n /**\n * Current provisional text followed by native deltas. Reset starts a replacement snapshot,\n * including when a slow consumer exceeds the fixed backlog. Reconcile by\n * Run/Turn identity to canonical records; discard drafts on Discard, AttemptEnded,\n * Reset or stream failure. Snapshots exist only in the Object incarnation's memory.\n * Scope the stream: interruption cancels its remote subscription.\n */\n readonly watchText: (threadId: ThreadId) => Stream.Stream<LiveTextFrame, ClientObserveFailure>;\n /** One bounded page of canonical records. */\n readonly readPage: (\n threadId: ThreadId,\n options?: {\n readonly afterSequence?: CanonicalSequence | undefined;\n readonly limit?: number | undefined;\n },\n ) => Effect.Effect<ReadonlyArray<CanonicalRecordEnvelope>, ClientObserveFailure>;\n /**\n * Every canonical record up to the CURRENT committed tail, via repeated pages. A\n * snapshot read, not a live observation — callers wanting liveness re-read after\n * `awaitSettlement`.\n */\n readonly readAll: (\n threadId: ThreadId,\n ) => Effect.Effect<ReadonlyArray<CanonicalRecordEnvelope>, ClientObserveFailure>;\n /**\n * Submission-addressed operations take the owning Thread explicitly (from the\n * Receipt): minted Submission identities stay OPAQUE outside the storage adapter that\n * minted them (D-P6-5), so the client never parses one to find the lane.\n */\n readonly abort: (\n threadId: ThreadId,\n command: AbortCommand,\n ) => Effect.Effect<AbortIntent, ClientAbortFailure>;\n readonly resolveApproval: (\n threadId: ThreadId,\n command: ApprovalDecisionCommand,\n ) => Effect.Effect<ApprovalDecisionIntent, ClientApprovalFailure>;\n readonly resolveUnknown: (\n threadId: ThreadId,\n command: UnknownResolutionCommand,\n ) => Effect.Effect<UnknownResolutionIntent, ClientUnknownFailure>;\n }\n>()(\"@effect-agent/platform-cloudflare/CloudflareThreadClient\") {\n /**\n * Assemble the client from a resolved namespace and the platform Crypto implementation.\n * rpcTracing is the binding name and remains opt-in. Caller authentication, principals,\n * idempotency keys, and definition digests are still explicit submission inputs.\n */\n static layerFromBinding(options: {\n readonly namespace: DurableObjectNamespace<ThreadObjectRpc>;\n readonly rpcTracing?: string;\n }): Layer.Layer<CloudflareThreadClient> {\n return CloudflareThreadClient.layer.pipe(\n Layer.provide([\n ThreadObjectNamespace.layer(options.namespace, options),\n cloudflareCryptoLayer,\n ]),\n );\n }\n\n static readonly layer: Layer.Layer<\n CloudflareThreadClient,\n never,\n ThreadObjectNamespace | Crypto.Crypto\n > = Layer.effect(CloudflareThreadClient)(\n Effect.gen(function* () {\n const namespace = yield* ThreadObjectNamespace;\n const { rpcTracing } = namespace;\n const crypto = yield* Crypto.Crypto;\n\n const call = Effect.fnUntraced(\n function* (\n threadId: ThreadId,\n operation: keyof typeof hostRpcMethods,\n encoded: unknown,\n ): Effect.fn.Return<HostResponse, ThreadClientError | HostProtocolError> {\n // Empty arguments preserve native arity. Passing `undefined` still adds an argument.\n const traceArgs =\n rpcTracing === undefined ? [] : yield* RpcTracing.withRpcTraceContext([]);\n\n const raw = yield* callThreadObject(\n threadId,\n (stub) => stub[hostRpcMethods[operation]](encoded, ...traceArgs),\n (cause) =>\n ThreadClientError.make({\n threadId,\n message: boundHostDiagnostic(\n `${operation} did not reach the Thread Object: ${safeCauseMessage(\n cause,\n \"the RPC failed without a diagnostic\",\n )}`,\n ),\n cause,\n ...cloudflareFailureSignals(cause),\n }),\n ).pipe(Effect.provideService(ThreadObjectNamespace, namespace));\n\n return yield* decodeHostResponse(raw).pipe(\n Effect.mapError((error): HostProtocolError =>\n HostProtocolError.make({\n message: boundHostDiagnostic(\n `The ${operation} answer could not be decoded: ${error.message}`,\n ),\n }),\n ),\n );\n },\n (effect, threadId, operation) =>\n rpcTracing === undefined\n ? Effect.withSpan(effect, \"CloudflareThreadClient.call\", {\n attributes: { threadId, operation },\n })\n : RpcTracing.withRpcClientSpan(effect, rpcTracing, hostRpcMethods[operation]),\n );\n\n const expect = <ResultSchema extends Schema.Top, FailureSchema extends Schema.Top>(\n threadId: string,\n operation: string,\n resultSchema: ResultSchema,\n failureSchema: FailureSchema,\n ) => {\n const isExpectedResult = Schema.is(resultSchema);\n const isExpectedFailure = Schema.is(failureSchema);\n\n return (\n response: HostResponse,\n ): Effect.Effect<ResultSchema[\"Type\"], FailureSchema[\"Type\"] | ThreadClientError> => {\n if (response._tag === \"HostFailed\") {\n const failure = response.failure;\n\n return isExpectedFailure(failure)\n ? Effect.fail(failure)\n : Effect.fail(outOfContract(threadId, operation, `failure ${failure._tag}`));\n }\n if (!isExpectedResult(response)) {\n return Effect.fail(outOfContract(threadId, operation, `result ${response._tag}`));\n }\n\n return Effect.succeed(response);\n };\n };\n\n const readPage = (\n threadId: ThreadId,\n options?: {\n readonly afterSequence?: CanonicalSequence | undefined;\n readonly limit?: number | undefined;\n },\n ) =>\n Effect.gen(function* () {\n const request = ObservePageRequest.make({\n ...(options?.afterSequence === undefined\n ? {}\n : { afterSequence: options.afterSequence }),\n limit: options?.limit ?? 256,\n });\n\n const encoded = yield* encodeObservePageRequest(request).pipe(\n Effect.mapError((error) =>\n HostProtocolError.make({\n message: boundHostDiagnostic(`observePage request encode failed: ${error.message}`),\n }),\n ),\n );\n\n const response = yield* call(threadId, \"observePage\", encoded);\n\n const page = yield* expect(\n threadId,\n \"observePage\",\n ObservedPage,\n ClientObserveHostFailure,\n )(response);\n\n return page.records;\n });\n\n const cancelProgress = (threadId: ThreadId, waiterId: string): Effect.Effect<void> =>\n encodeCancelProgressRequest(CancelProgressRequest.make({ waiterId })).pipe(\n Effect.mapError(() => undefined),\n Effect.flatMap((encoded) => call(threadId, \"cancelProgress\", encoded)),\n // Finalizers are uninterruptible; only the foreign RPC branch must remain\n // interruptible so a lost cancellation reply cannot prevent local shutdown.\n Effect.interruptible,\n Effect.timeout(PROGRESS_CANCELLATION_TIMEOUT),\n Effect.asVoid,\n Effect.ignore,\n );\n\n const awaitSettlementCall = Effect.fnUntraced(function* (\n receipt: Receipt,\n operation: \"awaitSettlement\" | \"awaitSettlementRecord\",\n ): Effect.fn.Return<HostResponse, ClientAwaitFailure> {\n const waiterId = yield* crypto.randomUUIDv4().pipe(\n Effect.mapError((error) =>\n HostProtocolError.make({\n message: boundHostDiagnostic(\n `${operation} cancellation identity generation failed: ${error.message}`,\n ),\n }),\n ),\n );\n\n const encoded = yield* encodeAwaitSettlementRequest(\n AwaitSettlementRequest.make({ ...receipt, waiterId }),\n ).pipe(\n Effect.mapError((error) =>\n HostProtocolError.make({\n message: boundHostDiagnostic(`${operation} request encode failed: ${error.message}`),\n }),\n ),\n );\n\n return yield* call(receipt.threadId, operation, encoded).pipe(\n Effect.onInterrupt(() => cancelProgress(receipt.threadId, waiterId)),\n );\n });\n\n return CloudflareThreadClient.of({\n submit: <InputSchema extends Schema.Top>(\n agent: DurableSubmitAgent<InputSchema>,\n input: InputSchema[\"Type\"],\n options: DurableSubmitOptions,\n ) =>\n Effect.gen(function* () {\n // Client-side half of `DurableAgentRuntime.submit`'s input boundary: encode\n // through the Agent's input schema and prove the canonical persistence bounds.\n const encodedInput = yield* Schema.encodeEffect(agent.definition.input)(input).pipe(\n Effect.mapError((cause) =>\n AgentInputError.make({ message: `Unable to encode Agent input: ${cause.message}` }),\n ),\n );\n\n const inputPayload = yield* Schema.decodeUnknownEffect(PersistedJson)(\n encodedInput,\n ).pipe(\n Effect.mapError(() =>\n AgentInputError.make({\n message: \"Agent input does not satisfy the canonical persistence bounds\",\n }),\n ),\n );\n\n const request = SubmitRequest.make({\n agentId: agent.definition.id,\n principal: options.principal,\n idempotencyKey: options.idempotencyKey,\n ...(options.admissionGroup === undefined\n ? {}\n : { admissionGroup: options.admissionGroup }),\n ...(options.admissionFence === undefined\n ? {}\n : { admissionFence: options.admissionFence }),\n ...(options.workerAdmission === undefined\n ? {}\n : { workerAdmission: options.workerAdmission }),\n ...(options.messageAdmission === undefined\n ? {}\n : { messageAdmission: options.messageAdmission }),\n definitions: options.definitions,\n inputPayload,\n });\n\n const encoded = yield* encodeSubmitRequest(request).pipe(\n Effect.mapError((error) =>\n HostProtocolError.make({\n message: boundHostDiagnostic(`submit request encode failed: ${error.message}`),\n }),\n ),\n );\n\n const response = yield* call(options.threadId, \"submit\", encoded);\n\n const succeeded = yield* expect(\n options.threadId,\n \"submit\",\n SubmitSucceeded,\n ClientSubmitHostFailure,\n )(response);\n\n return succeeded.receipt;\n }),\n\n submissionStatus: (receipt) =>\n Effect.gen(function* () {\n const encoded = yield* encodeReceipt(receipt).pipe(\n Effect.mapError(() => HostProtocolError.make({ message: \"Invalid receipt\" })),\n );\n\n const response = yield* call(receipt.threadId, \"submissionStatus\", encoded);\n\n const result = yield* expect(\n receipt.threadId,\n \"submissionStatus\",\n SubmissionStatusResponse,\n ClientAwaitHostFailure,\n )(response);\n\n return result.status;\n }),\n awaitSettlement: (receipt) =>\n Effect.gen(function* () {\n const response = yield* awaitSettlementCall(receipt, \"awaitSettlement\");\n\n const settled = yield* expect(\n receipt.threadId,\n \"awaitSettlement\",\n SettlementReached,\n ClientAwaitHostFailure,\n )(response);\n\n return settled.settlement;\n }),\n\n awaitSettlementRecord: (receipt) =>\n Effect.gen(function* () {\n const response = yield* awaitSettlementCall(receipt, \"awaitSettlementRecord\");\n\n const settled = yield* expect(\n receipt.threadId,\n \"awaitSettlementRecord\",\n SettlementRecordReached,\n ClientAwaitHostFailure,\n )(response);\n\n return settled.record;\n }),\n\n awaitProgress: (threadId, afterSequence) =>\n Effect.gen(function* () {\n const waiterId = yield* crypto.randomUUIDv4().pipe(\n Effect.mapError((error) =>\n HostProtocolError.make({\n message: boundHostDiagnostic(\n `awaitProgress cancellation identity generation failed: ${error.message}`,\n ),\n }),\n ),\n );\n\n const request = AwaitProgressRequest.make({ afterSequence, waiterId });\n\n const encoded = yield* encodeAwaitProgressRequest(request).pipe(\n Effect.mapError((error) =>\n HostProtocolError.make({\n message: boundHostDiagnostic(\n `awaitProgress request encode failed: ${error.message}`,\n ),\n }),\n ),\n );\n\n const attempt = (retry: number): Effect.Effect<void, ClientProgressFailure> =>\n call(threadId, \"awaitProgress\", encoded).pipe(\n Effect.flatMap(\n expect(threadId, \"awaitProgress\", ProgressObserved, ClientObserveHostFailure),\n ),\n Effect.asVoid,\n Effect.catchTag(\"ThreadClientError\", (error) =>\n error.retryable === true && error.overloaded !== true && retry < 5\n ? Effect.sleep(Duration.millis(10 * 2 ** retry)).pipe(\n Effect.andThen(attempt(retry + 1)),\n )\n : Effect.fail(error),\n ),\n );\n\n yield* attempt(0).pipe(Effect.onInterrupt(() => cancelProgress(threadId, waiterId)));\n }),\n\n watchText: (threadId) =>\n Stream.unwrap(\n Effect.gen(function* () {\n const traceArgs =\n rpcTracing === undefined ? [] : yield* RpcTracing.withRpcTraceContext([]);\n\n const openingFailure = (cause: unknown) =>\n ThreadClientError.make({\n threadId,\n message: \"Provisional text observation could not reach the Thread Object\",\n cause,\n ...cloudflareFailureSignals(cause),\n });\n\n // Retain the original RPC promise: resolving through callThreadObject would\n // erase its optional native disposer before an interrupted opening can use it.\n const target = yield* RpcTargets.get(namespace, threadId, () =>\n namespace.get(threadId),\n ).pipe(Effect.mapError(openingFailure));\n\n let request: Promise<unknown> | undefined;\n let received: unknown;\n let closed = false;\n\n const cancel = () => {\n const value = received;\n\n received = undefined;\n\n return value instanceof ReadableStream && !value.locked\n ? value.cancel().catch(() => undefined)\n : Promise.resolve();\n };\n\n // Install ownership before invoking foreign code, not after its promise settles.\n yield* Effect.addFinalizer(() =>\n Effect.try({\n try: () => {\n closed = true;\n if (Predicate.hasProperty(request, Symbol.dispose)) {\n const dispose = request[Symbol.dispose];\n\n if (typeof dispose === \"function\") dispose.call(request);\n }\n },\n catch: () => undefined,\n }).pipe(\n Effect.ignore,\n Effect.andThen(\n Effect.tryPromise({ try: cancel, catch: () => undefined }).pipe(\n Effect.interruptible,\n Effect.timeout(PROGRESS_CANCELLATION_TIMEOUT),\n Effect.ignore,\n ),\n ),\n ),\n );\n\n const raw = yield* Effect.tryPromise({\n try: () => {\n request = target.watchTextEncoded(\n Schema.encodeSync(WatchTextRequest)({ schemaVersion: 1 }),\n ...traceArgs,\n );\n\n return request.then((value) => {\n received = value;\n\n // A custom endpoint may return a plain, non-cancellable promise. Keep\n // late cleanup on that native promise chain; it starts no Effect fiber.\n return closed ? cancel().then(() => value) : value;\n });\n },\n catch: openingFailure,\n }).pipe(\n Effect.interruptible,\n Effect.tapCause(() => RpcTargets.invalidate(target)),\n );\n\n if (raw instanceof ReadableStream) return decodeLiveText(threadId, raw);\n\n const response = yield* decodeHostResponse(raw).pipe(\n Effect.mapError(liveTextProtocolFailure),\n );\n\n if (\n response._tag === \"HostFailed\" &&\n Schema.is(ClientObserveHostFailure)(response.failure)\n )\n return yield* response.failure;\n\n return yield* liveTextProtocolFailure();\n }),\n ),\n\n readPage,\n\n readAll: (threadId) =>\n Effect.gen(function* () {\n const all: Array<CanonicalRecordEnvelope> = [];\n let after: CanonicalSequence | undefined;\n\n for (;;) {\n const page = yield* readPage(threadId, { afterSequence: after, limit: 1_024 });\n\n all.push(...page);\n const last = page.at(-1);\n\n if (page.length < 1_024 || last === undefined) return all;\n after = last.sequence;\n }\n }),\n\n abort: (threadId, command) =>\n Effect.gen(function* () {\n const encoded = yield* encodeAbortCommand(command).pipe(\n Effect.mapError((error) =>\n HostProtocolError.make({\n message: boundHostDiagnostic(`abort command encode failed: ${error.message}`),\n }),\n ),\n );\n\n const response = yield* call(threadId, \"abort\", encoded);\n\n const recorded = yield* expect(\n threadId,\n \"abort\",\n AbortRecorded,\n ClientAbortHostFailure,\n )(response);\n\n return recorded.intent;\n }),\n\n resolveApproval: (threadId, command) =>\n Effect.gen(function* () {\n const encoded = yield* encodeApprovalDecisionCommand(command).pipe(\n Effect.mapError((error) =>\n HostProtocolError.make({\n message: boundHostDiagnostic(`approval command encode failed: ${error.message}`),\n }),\n ),\n );\n\n const response = yield* call(threadId, \"resolveApproval\", encoded);\n\n const recorded = yield* expect(\n threadId,\n \"resolveApproval\",\n ApprovalRecorded,\n ClientApprovalHostFailure,\n )(response);\n\n return recorded.intent;\n }),\n\n resolveUnknown: (threadId, command) =>\n Effect.gen(function* () {\n const encoded = yield* encodeUnknownResolutionCommand(command).pipe(\n Effect.mapError((error) =>\n HostProtocolError.make({\n message: boundHostDiagnostic(\n `resolution command encode failed: ${error.message}`,\n ),\n }),\n ),\n );\n\n const response = yield* call(threadId, \"resolveUnknown\", encoded);\n\n const recorded = yield* expect(\n threadId,\n \"resolveUnknown\",\n UnknownResolutionRecorded,\n ClientUnknownHostFailure,\n )(response);\n\n return recorded.intent;\n }),\n });\n }),\n );\n}\n"],"mappings":"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"}
@@ -66,7 +66,7 @@ declare const Frame: Schema.Union<readonly [Schema.TaggedStruct<"Reset", {
66
66
  }>]>;
67
67
  type Frame = typeof Frame.Type;
68
68
  declare namespace CloudflareThreadClient_d_exports {
69
- export { AbortRecorded, ApprovalRecorded, AwaitProgressRequest, CancelProgressRequest, ClientAbortFailure, ClientApprovalFailure, ClientAwaitFailure, ClientObserveFailure, ClientProgressFailure, ClientSubmitFailure, ClientUnknownFailure, CloudflareThreadClient, HostFailed, HostFailure, HostProtocolError, HostResponse, Frame as LiveTextFrame, ObservePageRequest, ObservedPage, ProgressCancelled, ProgressObserved, SettlementReached, SettlementRecordReached, SubmissionStatusResponse, SubmitRequest, SubmitSucceeded, ThreadClientError, UnknownResolutionRecorded, boundHostDiagnostic, decodeAbortCommand, decodeApprovalDecisionCommand, decodeAwaitProgressRequest, decodeCancelProgressRequest, decodeHostResponse, decodeObservePageRequest, decodeReceipt, decodeSubmitRequest, decodeUnknownResolutionCommand, encodeAbortCommand, encodeApprovalDecisionCommand, encodeAwaitProgressRequest, encodeCancelProgressRequest, encodeHostResponse, encodeObservePageRequest, encodeReceipt, encodeSubmitRequest, encodeUnknownResolutionCommand };
69
+ export { AbortRecorded, ApprovalRecorded, AwaitProgressRequest, AwaitSettlementRequest, CancelProgressRequest, ClientAbortFailure, ClientApprovalFailure, ClientAwaitFailure, ClientObserveFailure, ClientProgressFailure, ClientSubmitFailure, ClientUnknownFailure, CloudflareThreadClient, HostFailed, HostFailure, HostProtocolError, HostResponse, Frame as LiveTextFrame, ObservePageRequest, ObservedPage, ProgressCancelled, ProgressObserved, SettlementReached, SettlementRecordReached, SubmissionStatusResponse, SubmitRequest, SubmitSucceeded, ThreadClientError, UnknownResolutionRecorded, boundHostDiagnostic, decodeAbortCommand, decodeApprovalDecisionCommand, decodeAwaitProgressRequest, decodeAwaitSettlementRequest, decodeCancelProgressRequest, decodeHostResponse, decodeObservePageRequest, decodeReceipt, decodeSubmitRequest, decodeUnknownResolutionCommand, encodeAbortCommand, encodeApprovalDecisionCommand, encodeAwaitProgressRequest, encodeAwaitSettlementRequest, encodeCancelProgressRequest, encodeHostResponse, encodeObservePageRequest, encodeReceipt, encodeSubmitRequest, encodeUnknownResolutionCommand };
70
70
  }
71
71
  /** Truncate a diagnostic string to the host protocol's bounded length. */
72
72
  declare const boundHostDiagnostic: (value: string) => string;
@@ -242,6 +242,15 @@ declare const ObservePageRequest_base: Schema.Class<ObservePageRequest, Schema.S
242
242
  }>, {}>;
243
243
  /** One bounded page of canonical records after an optional sequence. */
244
244
  declare class ObservePageRequest extends ObservePageRequest_base {}
245
+ declare const AwaitSettlementRequest_base: Schema.Class<AwaitSettlementRequest, Schema.Struct<{
246
+ readonly receiptId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ReceiptId">;
247
+ readonly submissionId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/SubmissionId">;
248
+ readonly threadId: Schema.brand<Schema.NonEmptyString, "@effect-agent/core/ThreadId">;
249
+ readonly queueSequence: Schema.brand<Schema.Natural, "@effect-agent/thread/QueueSequence">;
250
+ waiterId: Schema.optionalKey<Schema.String>;
251
+ }>, Receipt> & Pick<{}, never>;
252
+ /** Receipt-shaped observation request; the optional identity owns only the remote wait. */
253
+ declare class AwaitSettlementRequest extends AwaitSettlementRequest_base {}
245
254
  declare const AwaitProgressRequest_base: Schema.Class<AwaitProgressRequest, Schema.Struct<{
246
255
  readonly afterSequence: Schema.brand<Schema.Natural, "@effect-agent/thread/CanonicalSequence">;
247
256
  readonly waiterId: Schema.String;
@@ -251,7 +260,7 @@ declare class AwaitProgressRequest extends AwaitProgressRequest_base {}
251
260
  declare const CancelProgressRequest_base: Schema.Class<CancelProgressRequest, Schema.Struct<{
252
261
  readonly waiterId: Schema.String;
253
262
  }>, {}>;
254
- /** Best-effort cancellation of one in-flight progress RPC. */
263
+ /** Best-effort cancellation of one in-flight progress or settlement observation. */
255
264
  declare class CancelProgressRequest extends CancelProgressRequest_base {}
256
265
  /**
257
266
  * Every typed failure a host entry point can produce, plus the protocol's own errors. Same
@@ -547,6 +556,14 @@ declare const encodeReceipt: (input: Receipt, options?: import("effect/SchemaAST
547
556
  readonly threadId: string;
548
557
  readonly queueSequence: number;
549
558
  }, Schema.SchemaError, never>;
559
+ declare const decodeAwaitSettlementRequest: (input: unknown, options?: import("effect/SchemaAST").ParseOptions) => Effect.Effect<AwaitSettlementRequest, Schema.SchemaError, never>;
560
+ declare const encodeAwaitSettlementRequest: (input: AwaitSettlementRequest, options?: import("effect/SchemaAST").ParseOptions) => Effect.Effect<{
561
+ readonly receiptId: string;
562
+ readonly submissionId: string;
563
+ readonly threadId: string;
564
+ readonly queueSequence: number;
565
+ readonly waiterId?: string | undefined;
566
+ }, Schema.SchemaError, never>;
550
567
  declare const decodeObservePageRequest: (input: unknown, options?: import("effect/SchemaAST").ParseOptions) => Effect.Effect<ObservePageRequest, Schema.SchemaError, never>;
551
568
  declare const encodeObservePageRequest: (input: ObservePageRequest, options?: import("effect/SchemaAST").ParseOptions) => Effect.Effect<{
552
569
  readonly afterSequence?: number | undefined;
@@ -1865,10 +1882,13 @@ declare const encodeHostResponse: (input: AbortRecorded | ApprovalRecorded | Hos
1865
1882
  } | {
1866
1883
  readonly _tag: "HostFailed";
1867
1884
  readonly failure: {
1868
- readonly _tag: "LedgerError";
1885
+ readonly _tag: "DurableAlarmError";
1869
1886
  readonly operation: string;
1870
1887
  readonly message: string;
1871
- readonly cause?: import("@yielded/agent/failure-diagnostic").Diagnostic | undefined;
1888
+ readonly cause?: Schema.Json | undefined;
1889
+ } | {
1890
+ readonly _tag: "ThreadNotMaterialized";
1891
+ readonly threadId: string;
1872
1892
  } | {
1873
1893
  readonly _tag: "ThreadStoreError";
1874
1894
  readonly operation: string;
@@ -1882,8 +1902,10 @@ declare const encodeHostResponse: (input: AbortRecorded | ApprovalRecorded | Hos
1882
1902
  readonly sequence?: number | undefined;
1883
1903
  } | undefined;
1884
1904
  } | {
1885
- readonly _tag: "ThreadNotMaterialized";
1886
- readonly threadId: string;
1905
+ readonly _tag: "LedgerError";
1906
+ readonly operation: string;
1907
+ readonly message: string;
1908
+ readonly cause?: import("@yielded/agent/failure-diagnostic").Diagnostic | undefined;
1887
1909
  } | {
1888
1910
  readonly _tag: "AppendConflict";
1889
1911
  readonly threadId: string;
@@ -1931,11 +1953,6 @@ declare const encodeHostResponse: (input: AbortRecorded | ApprovalRecorded | Hos
1931
1953
  readonly limit: "database-bytes" | "input-bytes" | "queue-depth";
1932
1954
  readonly actual: number;
1933
1955
  readonly maximum: number;
1934
- } | {
1935
- readonly _tag: "DurableAlarmError";
1936
- readonly operation: string;
1937
- readonly message: string;
1938
- readonly cause?: Schema.Json | undefined;
1939
1956
  } | {
1940
1957
  readonly _tag: "HostProtocolError";
1941
1958
  readonly message: string;
@@ -1974,11 +1991,16 @@ declare const CloudflareThreadClient_base: Context.ServiceClass<CloudflareThread
1974
1991
  readonly submit: <InputSchema extends Schema.Top>(agent: DurableSubmitAgent<InputSchema>, input: InputSchema["Type"], options: DurableSubmitOptions) => Effect.Effect<Receipt, ClientSubmitFailure, InputSchema["EncodingServices"]>;
1975
1992
  /** Wake-hinted, poll-guaranteed settlement wait executed inside the owning Object. */
1976
1993
  readonly submissionStatus: (receipt: Receipt) => Effect.Effect<SubmissionStatus, ClientAwaitFailure>;
1994
+ /**
1995
+ * Wait for settlement; interruption spends at most one second cancelling the remote
1996
+ * observation best effort. Cancellation never aborts the admitted Run.
1997
+ */
1977
1998
  readonly awaitSettlement: (receipt: Receipt) => Effect.Effect<Settlement, ClientAwaitFailure>;
1978
1999
  /**
1979
2000
  * Wait for finalization and return this Receipt's canonical terminal record in one RPC.
1980
2001
  * Requires both settlement and observation authority. Decode an ordinary completed
1981
2002
  * record's result through the Agent output Schema; joined completion may have no result.
2003
+ * Interruption uses the same bounded observation cancellation as `awaitSettlement`.
1982
2004
  */
1983
2005
  readonly awaitSettlementRecord: (receipt: Receipt) => Effect.Effect<SubmissionSettledRecord, ClientAwaitFailure>;
1984
2006
  /**
@@ -2029,5 +2051,5 @@ declare class CloudflareThreadClient extends CloudflareThreadClient_base {
2029
2051
  static readonly layer: Layer.Layer<CloudflareThreadClient, never, ThreadObjectNamespace | Crypto.Crypto>;
2030
2052
  }
2031
2053
  //#endregion
2032
- export { decodeAbortCommand as A, encodeApprovalDecisionCommand as B, SettlementRecordReached as C, ThreadClientError as D, SubmitSucceeded as E, decodeObservePageRequest as F, encodeReceipt as G, encodeCancelProgressRequest as H, decodeReceipt as I, Frame as J, encodeSubmitRequest as K, decodeSubmitRequest as L, decodeAwaitProgressRequest as M, decodeCancelProgressRequest as N, UnknownResolutionRecorded as O, decodeHostResponse as P, decodeUnknownResolutionCommand as R, SettlementReached as S, SubmitRequest as T, encodeHostResponse as U, encodeAwaitProgressRequest as V, encodeObservePageRequest as W, HostResponse as _, ClientAbortFailure as a, ProgressCancelled as b, ClientObserveFailure as c, ClientUnknownFailure as d, CloudflareThreadClient as f, HostProtocolError as g, HostFailure as h, CancelProgressRequest as i, decodeApprovalDecisionCommand as j, boundHostDiagnostic as k, ClientProgressFailure as l, HostFailed as m, ApprovalRecorded as n, ClientApprovalFailure as o, CloudflareThreadClient_d_exports as p, encodeUnknownResolutionCommand as q, AwaitProgressRequest as r, ClientAwaitFailure as s, AbortRecorded as t, ClientSubmitFailure as u, ObservePageRequest as v, SubmissionStatusResponse as w, ProgressObserved as x, ObservedPage as y, encodeAbortCommand as z };
2033
- //# sourceMappingURL=CloudflareThreadClient-QsVzLGGZ.d.mts.map
2054
+ export { boundHostDiagnostic as A, decodeUnknownResolutionCommand as B, SettlementReached as C, SubmitSucceeded as D, SubmitRequest as E, decodeCancelProgressRequest as F, encodeCancelProgressRequest as G, encodeApprovalDecisionCommand as H, decodeHostResponse as I, encodeReceipt as J, encodeHostResponse as K, decodeObservePageRequest as L, decodeApprovalDecisionCommand as M, decodeAwaitProgressRequest as N, ThreadClientError as O, decodeAwaitSettlementRequest as P, decodeReceipt as R, ProgressObserved as S, SubmissionStatusResponse as T, encodeAwaitProgressRequest as U, encodeAbortCommand as V, encodeAwaitSettlementRequest as W, encodeUnknownResolutionCommand as X, encodeSubmitRequest as Y, Frame as Z, HostProtocolError as _, CancelProgressRequest as a, ObservedPage as b, ClientAwaitFailure as c, ClientSubmitFailure as d, ClientUnknownFailure as f, HostFailure as g, HostFailed as h, AwaitSettlementRequest as i, decodeAbortCommand as j, UnknownResolutionRecorded as k, ClientObserveFailure as l, CloudflareThreadClient_d_exports as m, ApprovalRecorded as n, ClientAbortFailure as o, CloudflareThreadClient as p, encodeObservePageRequest as q, AwaitProgressRequest as r, ClientApprovalFailure as s, AbortRecorded as t, ClientProgressFailure as u, HostResponse as v, SettlementRecordReached as w, ProgressCancelled as x, ObservePageRequest as y, decodeSubmitRequest as z };
2055
+ //# sourceMappingURL=CloudflareThreadClient-DuRG0MLd.d.mts.map
@@ -1,2 +1,2 @@
1
- import { A as decodeAbortCommand, B as encodeApprovalDecisionCommand, C as SettlementRecordReached, D as ThreadClientError, E as SubmitSucceeded, F as decodeObservePageRequest, G as encodeReceipt, H as encodeCancelProgressRequest, I as decodeReceipt, J as Frame, K as encodeSubmitRequest, L as decodeSubmitRequest, M as decodeAwaitProgressRequest, N as decodeCancelProgressRequest, O as UnknownResolutionRecorded, P as decodeHostResponse, R as decodeUnknownResolutionCommand, S as SettlementReached, T as SubmitRequest, U as encodeHostResponse, V as encodeAwaitProgressRequest, W as encodeObservePageRequest, _ as HostResponse, a as ClientAbortFailure, b as ProgressCancelled, c as ClientObserveFailure, d as ClientUnknownFailure, f as CloudflareThreadClient, g as HostProtocolError, h as HostFailure, i as CancelProgressRequest, j as decodeApprovalDecisionCommand, k as boundHostDiagnostic, l as ClientProgressFailure, m as HostFailed, n as ApprovalRecorded, o as ClientApprovalFailure, q as encodeUnknownResolutionCommand, r as AwaitProgressRequest, s as ClientAwaitFailure, t as AbortRecorded, u as ClientSubmitFailure, v as ObservePageRequest, w as SubmissionStatusResponse, x as ProgressObserved, y as ObservedPage, z as encodeAbortCommand } from "./CloudflareThreadClient-QsVzLGGZ.mjs";
2
- export { AbortRecorded, ApprovalRecorded, AwaitProgressRequest, CancelProgressRequest, ClientAbortFailure, ClientApprovalFailure, ClientAwaitFailure, ClientObserveFailure, ClientProgressFailure, ClientSubmitFailure, ClientUnknownFailure, CloudflareThreadClient, HostFailed, HostFailure, HostProtocolError, HostResponse, Frame as LiveTextFrame, ObservePageRequest, ObservedPage, ProgressCancelled, ProgressObserved, SettlementReached, SettlementRecordReached, SubmissionStatusResponse, SubmitRequest, SubmitSucceeded, ThreadClientError, UnknownResolutionRecorded, boundHostDiagnostic, decodeAbortCommand, decodeApprovalDecisionCommand, decodeAwaitProgressRequest, decodeCancelProgressRequest, decodeHostResponse, decodeObservePageRequest, decodeReceipt, decodeSubmitRequest, decodeUnknownResolutionCommand, encodeAbortCommand, encodeApprovalDecisionCommand, encodeAwaitProgressRequest, encodeCancelProgressRequest, encodeHostResponse, encodeObservePageRequest, encodeReceipt, encodeSubmitRequest, encodeUnknownResolutionCommand };
1
+ import { A as boundHostDiagnostic, B as decodeUnknownResolutionCommand, C as SettlementReached, D as SubmitSucceeded, E as SubmitRequest, F as decodeCancelProgressRequest, G as encodeCancelProgressRequest, H as encodeApprovalDecisionCommand, I as decodeHostResponse, J as encodeReceipt, K as encodeHostResponse, L as decodeObservePageRequest, M as decodeApprovalDecisionCommand, N as decodeAwaitProgressRequest, O as ThreadClientError, P as decodeAwaitSettlementRequest, R as decodeReceipt, S as ProgressObserved, T as SubmissionStatusResponse, U as encodeAwaitProgressRequest, V as encodeAbortCommand, W as encodeAwaitSettlementRequest, X as encodeUnknownResolutionCommand, Y as encodeSubmitRequest, Z as Frame, _ as HostProtocolError, a as CancelProgressRequest, b as ObservedPage, c as ClientAwaitFailure, d as ClientSubmitFailure, f as ClientUnknownFailure, g as HostFailure, h as HostFailed, i as AwaitSettlementRequest, j as decodeAbortCommand, k as UnknownResolutionRecorded, l as ClientObserveFailure, n as ApprovalRecorded, o as ClientAbortFailure, p as CloudflareThreadClient, q as encodeObservePageRequest, r as AwaitProgressRequest, s as ClientApprovalFailure, t as AbortRecorded, u as ClientProgressFailure, v as HostResponse, w as SettlementRecordReached, x as ProgressCancelled, y as ObservePageRequest, z as decodeSubmitRequest } from "./CloudflareThreadClient-DuRG0MLd.mjs";
2
+ export { AbortRecorded, ApprovalRecorded, AwaitProgressRequest, AwaitSettlementRequest, CancelProgressRequest, ClientAbortFailure, ClientApprovalFailure, ClientAwaitFailure, ClientObserveFailure, ClientProgressFailure, ClientSubmitFailure, ClientUnknownFailure, CloudflareThreadClient, HostFailed, HostFailure, HostProtocolError, HostResponse, Frame as LiveTextFrame, ObservePageRequest, ObservedPage, ProgressCancelled, ProgressObserved, SettlementReached, SettlementRecordReached, SubmissionStatusResponse, SubmitRequest, SubmitSucceeded, ThreadClientError, UnknownResolutionRecorded, boundHostDiagnostic, decodeAbortCommand, decodeApprovalDecisionCommand, decodeAwaitProgressRequest, decodeAwaitSettlementRequest, decodeCancelProgressRequest, decodeHostResponse, decodeObservePageRequest, decodeReceipt, decodeSubmitRequest, decodeUnknownResolutionCommand, encodeAbortCommand, encodeApprovalDecisionCommand, encodeAwaitProgressRequest, encodeAwaitSettlementRequest, encodeCancelProgressRequest, encodeHostResponse, encodeObservePageRequest, encodeReceipt, encodeSubmitRequest, encodeUnknownResolutionCommand };
@@ -1,2 +1,2 @@
1
- import { A as decodeSubmitRequest, B as encodeUnknownResolutionCommand, C as decodeAbortCommand, D as decodeHostResponse, E as decodeCancelProgressRequest, F as encodeCancelProgressRequest, I as encodeHostResponse, L as encodeObservePageRequest, M as encodeAbortCommand, N as encodeApprovalDecisionCommand, O as decodeObservePageRequest, P as encodeAwaitProgressRequest, R as encodeReceipt, S as boundHostDiagnostic, T as decodeAwaitProgressRequest, V as Frame, _ as SubmissionStatusResponse, a as CloudflareThreadClient, b as ThreadClientError, c as HostFailure, d as ObservePageRequest, f as ObservedPage, g as SettlementRecordReached, h as SettlementReached, i as CancelProgressRequest, j as decodeUnknownResolutionCommand, k as decodeReceipt, l as HostProtocolError, m as ProgressObserved, n as ApprovalRecorded, p as ProgressCancelled, r as AwaitProgressRequest, s as HostFailed, t as AbortRecorded, u as HostResponse, v as SubmitRequest, w as decodeApprovalDecisionCommand, x as UnknownResolutionRecorded, y as SubmitSucceeded, z as encodeSubmitRequest } from "./CloudflareThreadClient-D0jRV6Jp.mjs";
2
- export { AbortRecorded, ApprovalRecorded, AwaitProgressRequest, CancelProgressRequest, CloudflareThreadClient, HostFailed, HostFailure, HostProtocolError, HostResponse, Frame as LiveTextFrame, ObservePageRequest, ObservedPage, ProgressCancelled, ProgressObserved, SettlementReached, SettlementRecordReached, SubmissionStatusResponse, SubmitRequest, SubmitSucceeded, ThreadClientError, UnknownResolutionRecorded, boundHostDiagnostic, decodeAbortCommand, decodeApprovalDecisionCommand, decodeAwaitProgressRequest, decodeCancelProgressRequest, decodeHostResponse, decodeObservePageRequest, decodeReceipt, decodeSubmitRequest, decodeUnknownResolutionCommand, encodeAbortCommand, encodeApprovalDecisionCommand, encodeAwaitProgressRequest, encodeCancelProgressRequest, encodeHostResponse, encodeObservePageRequest, encodeReceipt, encodeSubmitRequest, encodeUnknownResolutionCommand };
1
+ import { A as decodeObservePageRequest, B as encodeObservePageRequest, C as boundHostDiagnostic, D as decodeAwaitSettlementRequest, E as decodeAwaitProgressRequest, F as encodeApprovalDecisionCommand, H as encodeSubmitRequest, I as encodeAwaitProgressRequest, L as encodeAwaitSettlementRequest, M as decodeSubmitRequest, N as decodeUnknownResolutionCommand, O as decodeCancelProgressRequest, P as encodeAbortCommand, R as encodeCancelProgressRequest, S as UnknownResolutionRecorded, T as decodeApprovalDecisionCommand, U as encodeUnknownResolutionCommand, V as encodeReceipt, W as Frame, _ as SettlementRecordReached, a as CancelProgressRequest, b as SubmitSucceeded, c as HostFailed, d as HostResponse, f as ObservePageRequest, g as SettlementReached, h as ProgressObserved, i as AwaitSettlementRequest, j as decodeReceipt, k as decodeHostResponse, l as HostFailure, m as ProgressCancelled, n as ApprovalRecorded, o as CloudflareThreadClient, p as ObservedPage, r as AwaitProgressRequest, t as AbortRecorded, u as HostProtocolError, v as SubmissionStatusResponse, w as decodeAbortCommand, x as ThreadClientError, y as SubmitRequest, z as encodeHostResponse } from "./CloudflareThreadClient-DgZVrZzF.mjs";
2
+ export { AbortRecorded, ApprovalRecorded, AwaitProgressRequest, AwaitSettlementRequest, CancelProgressRequest, CloudflareThreadClient, HostFailed, HostFailure, HostProtocolError, HostResponse, Frame as LiveTextFrame, ObservePageRequest, ObservedPage, ProgressCancelled, ProgressObserved, SettlementReached, SettlementRecordReached, SubmissionStatusResponse, SubmitRequest, SubmitSucceeded, ThreadClientError, UnknownResolutionRecorded, boundHostDiagnostic, decodeAbortCommand, decodeApprovalDecisionCommand, decodeAwaitProgressRequest, decodeAwaitSettlementRequest, decodeCancelProgressRequest, decodeHostResponse, decodeObservePageRequest, decodeReceipt, decodeSubmitRequest, decodeUnknownResolutionCommand, encodeAbortCommand, encodeApprovalDecisionCommand, encodeAwaitProgressRequest, encodeAwaitSettlementRequest, encodeCancelProgressRequest, encodeHostResponse, encodeObservePageRequest, encodeReceipt, encodeSubmitRequest, encodeUnknownResolutionCommand };
@@ -2,8 +2,8 @@ import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
2
  import { DurableObjectContext, ThreadObjectIdentity, ThreadObjectNamespace, ThreadObjectPlacement, callThreadObject, threadNamespaceFromEnv } from "./CloudflareBindings.mjs";
3
3
  import { AdmissionLimitExceeded, CLOUDFLARE_RUNTIME_DEFAULTS, CloudflareDurableRuntimeConfig, CloudflareDurableRuntimeConfigValue, CloudflarePlatformConfigError } from "./CloudflareConfig.mjs";
4
4
  import { _ as Lifecycle, b as Projection, c as ThreadMaintenanceFailpoint, d as ThreadNativeMaintenance, f as ThreadPublication, g as HostLaneId, h as publishCommitted, l as ThreadMessageDelivery, n as DurableAlarmError, o as ThreadMaintenance, r as DurableAlarmService, s as ThreadMaintenanceAlarm, u as ThreadMutationGate, v as Messages, x as Publication, y as Native } from "./Alarm-BMEAZo3p.mjs";
5
- import { A as decodeSubmitRequest, C as decodeAbortCommand, E as decodeCancelProgressRequest, G as Request, H as MAX_DELTA_LENGTH, I as encodeHostResponse, K as isBoundedEvent, O as decodeObservePageRequest, S as boundHostDiagnostic, T as decodeAwaitProgressRequest, V as Frame, _ as SubmissionStatusResponse, a as CloudflareThreadClient, f as ObservedPage, g as SettlementRecordReached, h as SettlementReached, j as decodeUnknownResolutionCommand, k as decodeReceipt, l as HostProtocolError, m as ProgressObserved, n as ApprovalRecorded, p as ProgressCancelled, q as cloudflareCryptoLayer, s as HostFailed, t as AbortRecorded, w as decodeApprovalDecisionCommand, x as UnknownResolutionRecorded, y as SubmitSucceeded } from "./CloudflareThreadClient-D0jRV6Jp.mjs";
6
- import { t as cloudflarePreparedInputAdmissionLayer } from "./prepared-admission-Chy9awEp.mjs";
5
+ import { A as decodeObservePageRequest, C as boundHostDiagnostic, D as decodeAwaitSettlementRequest, E as decodeAwaitProgressRequest, G as MAX_DELTA_LENGTH, J as Request, M as decodeSubmitRequest, N as decodeUnknownResolutionCommand, O as decodeCancelProgressRequest, S as UnknownResolutionRecorded, T as decodeApprovalDecisionCommand, W as Frame, X as cloudflareCryptoLayer, Y as isBoundedEvent, _ as SettlementRecordReached, b as SubmitSucceeded, c as HostFailed, g as SettlementReached, h as ProgressObserved, j as decodeReceipt, m as ProgressCancelled, n as ApprovalRecorded, o as CloudflareThreadClient, p as ObservedPage, t as AbortRecorded, u as HostProtocolError, v as SubmissionStatusResponse, w as decodeAbortCommand, z as encodeHostResponse } from "./CloudflareThreadClient-DgZVrZzF.mjs";
6
+ import { t as cloudflarePreparedInputAdmissionLayer } from "./prepared-admission-CSdzFM_v.mjs";
7
7
  import { cloudflareWakeSchedulerLayer } from "./WakeScheduler.mjs";
8
8
  import { ThreadPortTransport, executePortRequest, makeLocalSubmissionLookup, portTransportFailure, routedMessageDeliveryStoreLayer, routedSettlementPublisherLayer, routedSubmissionLedgerLayer, routedThreadStoreLayer, routedWorkerAdmissionLayer } from "@yielded/agent-storage-cloudflare/port-routing";
9
9
  import { compileRegistrations } from "@yielded/agent/agent-registration";
@@ -261,7 +261,7 @@ const threadMessageDeliveryLayer = Layer.effectContext(Effect.gen(function* () {
261
261
  /** Cancellation tombstones are bounded hints, never durable authority. */
262
262
  const MAX_CANCELLATION_TOMBSTONES = 1024;
263
263
  /**
264
- * Per-incarnation cancellation registry for long-lived progress RPCs. The public runtime owns
264
+ * Per-incarnation cancellation registry for long-lived progress and settlement RPCs. The runtime owns
265
265
  * the actual wake registration; this host-only registry lets an interrupted Worker Effect ask
266
266
  * the Object to interrupt its scoped wait before the Worker execution context itself ends.
267
267
  */
@@ -837,7 +837,7 @@ const submissionStatusEndpoint = (encoded) => decodeReceipt(encoded).pipe(Effect
837
837
  const runtime = yield* DurableAgentRuntime;
838
838
  return SubmissionStatusResponse.make({ status: yield* runtime.submissionStatus(receipt) });
839
839
  })), respond, Effect.flatMap(encodeResponse));
840
- const awaitSettlementEndpoint = (encoded, includeRecord = false) => decodeReceipt(encoded).pipe(Effect.mapError(protocolFailure("The receipt could not be decoded")), Effect.flatMap((receipt) => Effect.gen(function* () {
840
+ const awaitSettlementEndpoint = (encoded, includeRecord = false) => decodeAwaitSettlementRequest(encoded).pipe(Effect.mapError(protocolFailure("The receipt could not be decoded")), Effect.flatMap((receipt) => Effect.gen(function* () {
841
841
  const authorizer = yield* OperationAuthorizer;
842
842
  yield* authorizer.authorize(OperationAuthorizationRequest.make({
843
843
  operation: "awaitSettlement",
@@ -851,8 +851,16 @@ const awaitSettlementEndpoint = (encoded, includeRecord = false) => decodeReceip
851
851
  yield* requireReceiptThread(receipt.threadId);
852
852
  yield* requireSubmissionThread(receipt.submissionId);
853
853
  const runtime = yield* DurableAgentRuntime;
854
- if (includeRecord) return SettlementRecordReached.make({ record: yield* runtime.awaitSettlementRecord(receipt) });
855
- return SettlementReached.make({ settlement: yield* runtime.awaitSettlement(receipt) });
854
+ const wait = Effect.gen(function* () {
855
+ if (includeRecord) return SettlementRecordReached.make({ record: yield* runtime.awaitSettlementRecord(receipt) });
856
+ return SettlementReached.make({ settlement: yield* runtime.awaitSettlement(receipt) });
857
+ });
858
+ if (receipt.waiterId === void 0) return yield* wait;
859
+ const registry = yield* ProgressWaitRegistry;
860
+ return yield* Effect.scoped(Effect.gen(function* () {
861
+ const cancelled = yield* registry.subscribe(JSON.stringify([receipt.threadId, receipt.waiterId]));
862
+ return yield* Effect.raceFirst(wait, cancelled.pipe(Effect.as(ProgressCancelled.make())));
863
+ }));
856
864
  })), respond, Effect.flatMap(encodeResponse));
857
865
  const awaitProgressEndpoint = (encoded) => decodeAwaitProgressRequest(encoded).pipe(Effect.mapError(protocolFailure("The progress request could not be decoded")), Effect.flatMap((request) => Effect.gen(function* () {
858
866
  const identity = yield* ThreadObjectIdentity;
@@ -1157,4 +1165,4 @@ const make = (applicationLayer, options) => {
1157
1165
  //#endregion
1158
1166
  export { ThreadObjectPorts as C, layerInHost as D, layerHostConfig as E, submit as S, layerConfig as T, decodeRetryCommand as _, AdminVerifyRequest as a, make as b, RetryExecuted as c, VerifiedIntegrity as d, alarms as f, decodeObligationThresholds as g, decodeAdminVerifyRequest as h, AdminResponse as i, ThreadObject_exports as l, decodeAdminResponse as m, AdminFailed as n, ExplainedRecovery as o, decodeAdminExplainRequest as p, AdminFailure as r, ObligationsScanned as s, AdminExplainRequest as t, ThreadRpcOperation as u, encodeAdminResponse as v, layer$1 as w, portCall as x, handleRpc as y };
1159
1167
 
1160
- //# sourceMappingURL=ThreadObject-AcJYhNnL.mjs.map
1168
+ //# sourceMappingURL=ThreadObject-CGIaz6Jv.mjs.map