@yielded/agent-storage-cloudflare 0.1.0-beta.166

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.
Files changed (77) hide show
  1. package/LICENSE +21 -0
  2. package/dist/DoMemoryStore.d.mts +30 -0
  3. package/dist/DoMemoryStore.mjs +66 -0
  4. package/dist/DoMemoryStore.mjs.map +1 -0
  5. package/dist/DoMessageDeliveryStore.d.mts +17 -0
  6. package/dist/DoMessageDeliveryStore.mjs +30 -0
  7. package/dist/DoMessageDeliveryStore.mjs.map +1 -0
  8. package/dist/DoScheduleStore.d.mts +36 -0
  9. package/dist/DoScheduleStore.mjs +388 -0
  10. package/dist/DoScheduleStore.mjs.map +1 -0
  11. package/dist/DoStorageConfig.d.mts +45 -0
  12. package/dist/DoStorageConfig.mjs +52 -0
  13. package/dist/DoStorageConfig.mjs.map +1 -0
  14. package/dist/DoStorageError-CGuAfSwF.d.mts +101 -0
  15. package/dist/DoStorageError.d.mts +2 -0
  16. package/dist/DoStorageError.mjs +167 -0
  17. package/dist/DoStorageError.mjs.map +1 -0
  18. package/dist/DoStorageFailpoint.d.mts +17 -0
  19. package/dist/DoStorageFailpoint.mjs +14 -0
  20. package/dist/DoStorageFailpoint.mjs.map +1 -0
  21. package/dist/DoStorageFailpointTesting.d.mts +24 -0
  22. package/dist/DoStorageFailpointTesting.mjs +22 -0
  23. package/dist/DoStorageFailpointTesting.mjs.map +1 -0
  24. package/dist/DoStorageVersion-iNSyi3cJ.d.mts +12 -0
  25. package/dist/DoStorageVersion.d.mts +2 -0
  26. package/dist/DoStorageVersion.mjs +8 -0
  27. package/dist/DoStorageVersion.mjs.map +1 -0
  28. package/dist/DoSubmissionLedger.d.mts +23 -0
  29. package/dist/DoSubmissionLedger.mjs +1979 -0
  30. package/dist/DoSubmissionLedger.mjs.map +1 -0
  31. package/dist/DoSubscriptionStore.d.mts +25 -0
  32. package/dist/DoSubscriptionStore.mjs +186 -0
  33. package/dist/DoSubscriptionStore.mjs.map +1 -0
  34. package/dist/DoThreadStore-D_83OjCH.d.mts +72 -0
  35. package/dist/DoThreadStore.d.mts +2 -0
  36. package/dist/DoThreadStore.mjs +529 -0
  37. package/dist/DoThreadStore.mjs.map +1 -0
  38. package/dist/MemoryProtocol.d.mts +38160 -0
  39. package/dist/MemoryProtocol.mjs +219 -0
  40. package/dist/MemoryProtocol.mjs.map +1 -0
  41. package/dist/PortProtocol.d.mts +7726 -0
  42. package/dist/PortProtocol.mjs +234 -0
  43. package/dist/PortProtocol.mjs.map +1 -0
  44. package/dist/PortRouting.d.mts +97 -0
  45. package/dist/PortRouting.mjs +544 -0
  46. package/dist/PortRouting.mjs.map +1 -0
  47. package/dist/do-journal-DUhjZkOf.mjs +1352 -0
  48. package/dist/do-journal-DUhjZkOf.mjs.map +1 -0
  49. package/dist/index.d.mts +14 -0
  50. package/dist/index.mjs +14 -0
  51. package/dist/migrations-DtKz_Gxr.mjs +306 -0
  52. package/dist/migrations-DtKz_Gxr.mjs.map +1 -0
  53. package/dist/owned-state-DHm2aRXx.mjs +119 -0
  54. package/dist/owned-state-DHm2aRXx.mjs.map +1 -0
  55. package/dist/rolldown-runtime-D7D4PA-g.mjs +13 -0
  56. package/package.json +1 -0
  57. package/src/DoMemoryStore.ts +73 -0
  58. package/src/DoMessageDeliveryStore.ts +39 -0
  59. package/src/DoScheduleStore.ts +622 -0
  60. package/src/DoStorageConfig.ts +53 -0
  61. package/src/DoStorageError.ts +180 -0
  62. package/src/DoStorageFailpoint.ts +20 -0
  63. package/src/DoStorageFailpointTesting.ts +41 -0
  64. package/src/DoStorageVersion.ts +2 -0
  65. package/src/DoSubmissionLedger.ts +4027 -0
  66. package/src/DoSubscriptionStore.ts +327 -0
  67. package/src/DoThreadStore.ts +1121 -0
  68. package/src/MemoryProtocol.ts +355 -0
  69. package/src/PortProtocol.ts +436 -0
  70. package/src/PortRouting.ts +1464 -0
  71. package/src/index.ts +13 -0
  72. package/src/internal/do-journal.ts +2282 -0
  73. package/src/internal/message-delivery-schema.ts +24 -0
  74. package/src/internal/migrations.ts +304 -0
  75. package/src/internal/owned-state.ts +228 -0
  76. package/src/internal/recovery-checkpoint-schema.ts +17 -0
  77. package/src/internal/storage-span.ts +44 -0
@@ -0,0 +1,234 @@
1
+ import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
+ import { MessageDeliveryCompletion, MessageDeliveryError, MessageDeliveryFailpointError, MessageDeliveryKey, MessageDeliveryPage, MessageDeliveryPageRequest, MessageDeliveryRecord } from "@yielded/agent/message-delivery";
3
+ import { Schema } from "effect";
4
+ import { ThreadId } from "@yielded/agent/identifiers";
5
+ import { CanonicalRecordEnvelope } from "@yielded/agent/records";
6
+ import { AppendConflict, AppendResult, FenceRejected, FencedAppendRequest, ThreadExport, ThreadExportRequest, ThreadIdentity, ThreadIdentityRequest, ThreadMaterialization, ThreadNotMaterialized, ThreadPeerCountRequest, ThreadReadRequest, ThreadStoreError, ThreadTail, ThreadTailRequest } from "@yielded/agent/thread-store";
7
+ import { AbortCommand, AbortIntent, AdmissionConflict, AdmissionPolicyError, AdmissionRequest, AdmissionResolution, AdmissionResult, ChildSettledNotification, ChildSettledOutcome, JoinedToHost, LedgerError, MarkReadyRequest, SettlementConflict, SubmissionLookup, SubmissionLookupByKey, SubmissionSnapshot, WorkerLedgerState, WorkerStopCommand } from "@yielded/agent/submission-ledger";
8
+ import { DurableRuntimeFailpointError } from "@yielded/agent/durable-failpoint";
9
+ import { WorkerAdmissionRequest } from "@yielded/agent/worker-admission";
10
+ //#region src/PortProtocol.ts
11
+ var PortProtocol_exports = /* @__PURE__ */ __exportAll({
12
+ LedgerAdmitCall: () => LedgerAdmitCall,
13
+ LedgerAdmitResult: () => LedgerAdmitResult,
14
+ LedgerInspectWorkerCall: () => LedgerInspectWorkerCall,
15
+ LedgerInspectWorkerResult: () => LedgerInspectWorkerResult,
16
+ LedgerLookupCall: () => LedgerLookupCall,
17
+ LedgerLookupResult: () => LedgerLookupResult,
18
+ LedgerMarkReadyCall: () => LedgerMarkReadyCall,
19
+ LedgerMarkReadyResult: () => LedgerMarkReadyResult,
20
+ LedgerRecordChildSettledCall: () => LedgerRecordChildSettledCall,
21
+ LedgerRecordChildSettledResult: () => LedgerRecordChildSettledResult,
22
+ LedgerRequestAbortCall: () => LedgerRequestAbortCall,
23
+ LedgerRequestAbortResult: () => LedgerRequestAbortResult,
24
+ LedgerResolveAdmissionCall: () => LedgerResolveAdmissionCall,
25
+ LedgerResolveAdmissionResult: () => LedgerResolveAdmissionResult,
26
+ LedgerStopWorkerCall: () => LedgerStopWorkerCall,
27
+ LedgerStopWorkerResult: () => LedgerStopWorkerResult,
28
+ MAX_PORT_DIAGNOSTIC_LENGTH: () => MAX_PORT_DIAGNOSTIC_LENGTH,
29
+ MessageDeliveryCompleteCall: () => MessageDeliveryCompleteCall,
30
+ MessageDeliveryCompleteResult: () => MessageDeliveryCompleteResult,
31
+ MessageDeliveryListCall: () => MessageDeliveryListCall,
32
+ MessageDeliveryListResult: () => MessageDeliveryListResult,
33
+ PortFailed: () => PortFailed,
34
+ PortFailure: () => PortFailure,
35
+ PortProtocolError: () => PortProtocolError,
36
+ PortRequest: () => PortRequest,
37
+ PortResponse: () => PortResponse,
38
+ PortResult: () => PortResult,
39
+ PortSucceeded: () => PortSucceeded,
40
+ StoreAppendCall: () => StoreAppendCall,
41
+ StoreAppendResult: () => StoreAppendResult,
42
+ StoreCountPeerMessagesCall: () => StoreCountPeerMessagesCall,
43
+ StoreCountPeerMessagesResult: () => StoreCountPeerMessagesResult,
44
+ StoreExportCall: () => StoreExportCall,
45
+ StoreExportResult: () => StoreExportResult,
46
+ StoreInspectTailCall: () => StoreInspectTailCall,
47
+ StoreInspectTailResult: () => StoreInspectTailResult,
48
+ StoreMaterializeCall: () => StoreMaterializeCall,
49
+ StoreMaterializeResult: () => StoreMaterializeResult,
50
+ StoreReadIdentityCall: () => StoreReadIdentityCall,
51
+ StoreReadIdentityResult: () => StoreReadIdentityResult,
52
+ StoreReadPageCall: () => StoreReadPageCall,
53
+ StoreReadPageResult: () => StoreReadPageResult,
54
+ WorkerAdmitCall: () => WorkerAdmitCall,
55
+ WorkerAdmitResult: () => WorkerAdmitResult,
56
+ boundPortDiagnostic: () => boundPortDiagnostic,
57
+ decodePortRequest: () => decodePortRequest,
58
+ decodePortResponse: () => decodePortResponse,
59
+ encodePortRequest: () => encodePortRequest,
60
+ encodePortResponse: () => encodePortResponse
61
+ });
62
+ /**
63
+ * The cross-Durable-Object port protocol (plan §1.3, D-P6-3): Schema request/response/error
64
+ * envelopes for the CLOSED route-capable subset of the thread ports. One Thread's
65
+ * Durable Object executes another Thread's request against its OWN local facets; the
66
+ * envelopes here are the only values that cross the Object boundary, and they are
67
+ * transport-agnostic — native Durable Object JS RPC is the shipped carrier, fetch-with-JSON
68
+ * the documented fallback, and both move the same Schema-encoded JSON.
69
+ *
70
+ * The closed subset is exactly the set of operations the durable coordinator performs against
71
+ * a FOREIGN Thread (parent/child establishment, status checks, abort propagation,
72
+ * child-settlement notification, and the child-thread store operations used by
73
+ * establishment, `verifySettledChild`, and result projection):
74
+ *
75
+ * - worker: `admitWorker` (ledger admission, materialization, creation, origin, readiness);
76
+ * - ledger: `admit`, `markReady`, `lookup`, `resolveAdmission`, `requestAbort`,
77
+ * `recordChildSettled`;
78
+ * - store: `materialize`, `append`, `read` (one page), `readIdentity`, `inspectTail`, `export`.
79
+ *
80
+ * Every other port operation is lane-local and has no envelope. A foreign disposable
81
+ * recovery-cache load returns a miss so the caller can replay canonical history. Other
82
+ * foreign operations fail fast and typed instead of widening the distributed surface.
83
+ *
84
+ * Failures cross the boundary as the `PortFailure` union and re-decode on the caller side to
85
+ * the SAME tagged error types the local facet would have produced, so routed calls keep
86
+ * error-tag fidelity. `cause` chains inside `LedgerError`/`ThreadStoreError` travel as
87
+ * Schema defects and do not claim instance fidelity across Objects (plan §2.8).
88
+ */
89
+ /** Ceiling for protocol diagnostic strings; matches `AdmissionIndeterminate.reason`. */
90
+ const MAX_PORT_DIAGNOSTIC_LENGTH = 4096;
91
+ const BoundedDiagnostic = Schema.String.check(Schema.isMaxLength(MAX_PORT_DIAGNOSTIC_LENGTH));
92
+ /** Truncate a diagnostic string to the protocol's bounded diagnostic length. */
93
+ const boundPortDiagnostic = (value) => value.length > 4096 ? `${value.slice(0, 4093)}...` : value;
94
+ /**
95
+ * The envelope itself could not be honored: the receiving Object could not decode the
96
+ * request, or a response could not be encoded/decoded. It never carries port semantics —
97
+ * callers fold it into the operation's base error (`LedgerError`/`ThreadStoreError`),
98
+ * except `resolveAdmission`, which folds it into `AdmissionIndeterminate` because a
99
+ * non-answer is never proof of absence (SUB-031).
100
+ */
101
+ var PortProtocolError = class extends Schema.TaggedError()("PortProtocolError", { message: BoundedDiagnostic }) {};
102
+ /** One destination-owned worker admission, including canonical initialization and readiness. */
103
+ var WorkerAdmitCall = class extends Schema.TaggedClass()("WorkerAdmit", { request: WorkerAdmissionRequest }) {};
104
+ /** Routed `SubmissionLedger.admit` — child establishment admits INTO the owning Object. */
105
+ var LedgerAdmitCall = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/LedgerAdmitCall")("LedgerAdmit", { request: AdmissionRequest }) {};
106
+ /** Routed `SubmissionLedger.markReady` for a Submission owned by another Object. */
107
+ var LedgerMarkReadyCall = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/LedgerMarkReadyCall")("LedgerMarkReady", { request: MarkReadyRequest }) {};
108
+ /** Routed `SubmissionLedger.lookup` (by identity or scoped idempotency key). */
109
+ var LedgerLookupCall = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/LedgerLookupCall")("LedgerLookup", { request: SubmissionLookup }) {};
110
+ /** Routed `SubmissionLedger.resolveAdmission` — the SUB-031 tri-state authority call. */
111
+ var LedgerResolveAdmissionCall = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/LedgerResolveAdmissionCall")("LedgerResolveAdmission", { request: SubmissionLookupByKey }) {};
112
+ var LedgerInspectWorkerCall = class extends Schema.TaggedClass()("LedgerInspectWorker", { request: Schema.Struct({ threadId: ThreadId }) }) {};
113
+ var LedgerInspectWorkerResult = class extends Schema.TaggedClass()("LedgerInspectWorkerResult", { state: WorkerLedgerState }) {};
114
+ var LedgerStopWorkerCall = class extends Schema.TaggedClass()("LedgerStopWorker", { request: WorkerStopCommand }) {};
115
+ var LedgerStopWorkerResult = class extends Schema.TaggedClass()("LedgerStopWorkerResult", { owned: Schema.Natural }) {};
116
+ /** Routed `SubmissionLedger.requestAbort` — abort propagation across Objects. */
117
+ var LedgerRequestAbortCall = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/LedgerRequestAbortCall")("LedgerRequestAbort", { request: AbortCommand }) {};
118
+ /** Routed `SubmissionLedger.recordChildSettled` — the child→parent durable notification. */
119
+ var LedgerRecordChildSettledCall = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/LedgerRecordChildSettledCall")("LedgerRecordChildSettled", { request: ChildSettledNotification }) {};
120
+ /** Routed `ThreadStore.materialize` against the owning Object. */
121
+ var StoreMaterializeCall = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/StoreMaterializeCall")("StoreMaterialize", { request: ThreadMaterialization }) {};
122
+ /** Routed `ThreadStore.append` against the owning Object. */
123
+ var StoreAppendCall = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/StoreAppendCall")("StoreAppend", { request: FencedAppendRequest }) {};
124
+ /** Routed one-page `ThreadStore.read`; the page bound is the request's own `limit`. */
125
+ var StoreReadPageCall = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/StoreReadPageCall")("StoreReadPage", { request: ThreadReadRequest }) {};
126
+ /** Routed `ThreadStore.inspectTail` against the owning Object. */
127
+ var StoreInspectTailCall = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/StoreInspectTailCall")("StoreInspectTail", { request: ThreadTailRequest }) {};
128
+ /** Routed bounded `ThreadStore.readIdentity` against the owning Object. */
129
+ var StoreReadIdentityCall = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/StoreReadIdentityCall")("StoreReadIdentity", { request: ThreadIdentityRequest }) {};
130
+ /** Routed `ThreadStore.export` against the owning Object. */
131
+ var StoreExportCall = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/StoreExportCall")("StoreExport", { request: ThreadExportRequest }) {};
132
+ var StoreCountPeerMessagesCall = class extends Schema.TaggedClass()("StoreCountPeerMessages", { request: ThreadPeerCountRequest }) {};
133
+ var MessageDeliveryListCall = class extends Schema.TaggedClass()("MessageDeliveryList", { request: MessageDeliveryPageRequest }) {};
134
+ var MessageDeliveryCompleteCall = class extends Schema.TaggedClass()("MessageDeliveryComplete", {
135
+ key: MessageDeliveryKey,
136
+ completion: MessageDeliveryCompletion
137
+ }) {};
138
+ /** Every request that may cross a Durable Object boundary — the CLOSED route-capable subset. */
139
+ const PortRequest = Schema.Union([
140
+ WorkerAdmitCall,
141
+ MessageDeliveryListCall,
142
+ MessageDeliveryCompleteCall,
143
+ LedgerAdmitCall,
144
+ LedgerMarkReadyCall,
145
+ LedgerLookupCall,
146
+ LedgerResolveAdmissionCall,
147
+ LedgerRequestAbortCall,
148
+ LedgerStopWorkerCall,
149
+ LedgerInspectWorkerCall,
150
+ LedgerRecordChildSettledCall,
151
+ StoreMaterializeCall,
152
+ StoreAppendCall,
153
+ StoreReadPageCall,
154
+ StoreInspectTailCall,
155
+ StoreReadIdentityCall,
156
+ StoreExportCall,
157
+ StoreCountPeerMessagesCall
158
+ ]);
159
+ var WorkerAdmitResult = class extends Schema.TaggedClass()("WorkerAdmitResult", { result: AdmissionResult }) {};
160
+ var LedgerAdmitResult = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/LedgerAdmitResult")("LedgerAdmitResult", { result: AdmissionResult }) {};
161
+ var LedgerMarkReadyResult = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/LedgerMarkReadyResult")("LedgerMarkReadyResult", {}) {};
162
+ /** `submission` is absent exactly when the lookup answered `Option.none`. */
163
+ var LedgerLookupResult = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/LedgerLookupResult")("LedgerLookupResult", { submission: Schema.optionalKey(SubmissionSnapshot) }) {};
164
+ var LedgerResolveAdmissionResult = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/LedgerResolveAdmissionResult")("LedgerResolveAdmissionResult", { resolution: AdmissionResolution }) {};
165
+ var LedgerRequestAbortResult = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/LedgerRequestAbortResult")("LedgerRequestAbortResult", { intent: AbortIntent }) {};
166
+ var LedgerRecordChildSettledResult = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/LedgerRecordChildSettledResult")("LedgerRecordChildSettledResult", { outcome: ChildSettledOutcome }) {};
167
+ var StoreMaterializeResult = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/StoreMaterializeResult")("StoreMaterializeResult", {}) {};
168
+ var StoreAppendResult = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/StoreAppendResult")("StoreAppendResult", { result: AppendResult }) {};
169
+ /** One page of canonical records, bounded by the request's `limit` (≤ 1,024). */
170
+ var StoreReadPageResult = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/StoreReadPageResult")("StoreReadPageResult", { records: Schema.Array(CanonicalRecordEnvelope).check(Schema.isMaxLength(1024)) }) {};
171
+ var StoreInspectTailResult = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/StoreInspectTailResult")("StoreInspectTailResult", { tail: ThreadTail }) {};
172
+ var StoreReadIdentityResult = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/StoreReadIdentityResult")("StoreReadIdentityResult", { identity: ThreadIdentity }) {};
173
+ var StoreExportResult = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/StoreExportResult")("StoreExportResult", { export: ThreadExport }) {};
174
+ var StoreCountPeerMessagesResult = class extends Schema.TaggedClass()("StoreCountPeerMessagesResult", { count: Schema.Int.check(Schema.isBetween({
175
+ minimum: 0,
176
+ maximum: 1e3
177
+ })) }) {};
178
+ var MessageDeliveryListResult = class extends Schema.TaggedClass()("MessageDeliveryListResult", { page: MessageDeliveryPage }) {};
179
+ var MessageDeliveryCompleteResult = class extends Schema.TaggedClass()("MessageDeliveryCompleteResult", { record: MessageDeliveryRecord }) {};
180
+ /** Every successful routed result. Callers narrow by the tag their request implies. */
181
+ const PortResult = Schema.Union([
182
+ WorkerAdmitResult,
183
+ MessageDeliveryListResult,
184
+ MessageDeliveryCompleteResult,
185
+ LedgerAdmitResult,
186
+ LedgerMarkReadyResult,
187
+ LedgerLookupResult,
188
+ LedgerResolveAdmissionResult,
189
+ LedgerRequestAbortResult,
190
+ LedgerStopWorkerResult,
191
+ LedgerInspectWorkerResult,
192
+ LedgerRecordChildSettledResult,
193
+ StoreMaterializeResult,
194
+ StoreAppendResult,
195
+ StoreReadPageResult,
196
+ StoreInspectTailResult,
197
+ StoreReadIdentityResult,
198
+ StoreExportResult,
199
+ StoreCountPeerMessagesResult
200
+ ]);
201
+ /**
202
+ * Every typed failure a route-capable operation can produce on its owning Object, plus the
203
+ * protocol's own `PortProtocolError`. Members re-decode to the SAME tagged classes the
204
+ * thread ports declare, so a routed caller observes identical error tags and fields.
205
+ */
206
+ const PortFailure = Schema.Union([
207
+ DurableRuntimeFailpointError,
208
+ MessageDeliveryError,
209
+ MessageDeliveryFailpointError,
210
+ AdmissionConflict,
211
+ AdmissionPolicyError,
212
+ SettlementConflict,
213
+ JoinedToHost,
214
+ LedgerError,
215
+ ThreadStoreError,
216
+ ThreadNotMaterialized,
217
+ AppendConflict,
218
+ FenceRejected,
219
+ PortProtocolError
220
+ ]);
221
+ /** The routed operation succeeded on its owning Object. */
222
+ var PortSucceeded = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/PortSucceeded")("PortSucceeded", { result: PortResult }) {};
223
+ /** The routed operation failed TYPED on its owning Object; the failure re-decodes verbatim. */
224
+ var PortFailed = class extends Schema.TaggedClass("@effect-agent/storage-cloudflare/PortFailed")("PortFailed", { failure: PortFailure }) {};
225
+ /** The uniform answer of one `portCall`: op-specific success or a re-decodable typed failure. */
226
+ const PortResponse = Schema.Union([PortSucceeded, PortFailed]);
227
+ const encodePortRequest = Schema.encodeEffect(PortRequest);
228
+ const decodePortRequest = Schema.decodeUnknownEffect(PortRequest);
229
+ const encodePortResponse = Schema.encodeEffect(PortResponse);
230
+ const decodePortResponse = Schema.decodeUnknownEffect(PortResponse);
231
+ //#endregion
232
+ export { LedgerAdmitCall, LedgerAdmitResult, LedgerInspectWorkerCall, LedgerInspectWorkerResult, LedgerLookupCall, LedgerLookupResult, LedgerMarkReadyCall, LedgerMarkReadyResult, LedgerRecordChildSettledCall, LedgerRecordChildSettledResult, LedgerRequestAbortCall, LedgerRequestAbortResult, LedgerResolveAdmissionCall, LedgerResolveAdmissionResult, LedgerStopWorkerCall, LedgerStopWorkerResult, MAX_PORT_DIAGNOSTIC_LENGTH, MessageDeliveryCompleteCall, MessageDeliveryCompleteResult, MessageDeliveryListCall, MessageDeliveryListResult, PortFailed, PortFailure, PortProtocolError, PortRequest, PortResponse, PortResult, PortSucceeded, StoreAppendCall, StoreAppendResult, StoreCountPeerMessagesCall, StoreCountPeerMessagesResult, StoreExportCall, StoreExportResult, StoreInspectTailCall, StoreInspectTailResult, StoreMaterializeCall, StoreMaterializeResult, StoreReadIdentityCall, StoreReadIdentityResult, StoreReadPageCall, StoreReadPageResult, WorkerAdmitCall, WorkerAdmitResult, boundPortDiagnostic, decodePortRequest, decodePortResponse, encodePortRequest, encodePortResponse, PortProtocol_exports as t };
233
+
234
+ //# sourceMappingURL=PortProtocol.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortProtocol.mjs","names":[],"sources":["../src/PortProtocol.ts"],"sourcesContent":["import { DurableRuntimeFailpointError } from \"@yielded/agent/durable-failpoint\";\nimport { ThreadId } from \"@yielded/agent/identifiers\";\nimport {\n MessageDeliveryError,\n MessageDeliveryFailpointError,\n MessageDeliveryKey,\n MessageDeliveryCompletion,\n MessageDeliveryRecord,\n MessageDeliveryPageRequest,\n MessageDeliveryPage,\n} from \"@yielded/agent/message-delivery\";\nimport { CanonicalRecordEnvelope } from \"@yielded/agent/records\";\nimport {\n AbortCommand,\n WorkerStopCommand,\n WorkerLedgerState,\n AbortIntent,\n AdmissionConflict,\n AdmissionPolicyError,\n AdmissionRequest,\n AdmissionResolution,\n AdmissionResult,\n ChildSettledNotification,\n ChildSettledOutcome,\n JoinedToHost,\n LedgerError,\n MarkReadyRequest,\n SettlementConflict,\n SubmissionLookup,\n SubmissionLookupByKey,\n SubmissionSnapshot,\n} from \"@yielded/agent/submission-ledger\";\nimport {\n AppendConflict,\n AppendResult,\n ThreadExport,\n ThreadPeerCountRequest,\n ThreadExportRequest,\n ThreadIdentity,\n ThreadIdentityRequest,\n ThreadMaterialization,\n ThreadNotMaterialized,\n ThreadReadRequest,\n ThreadStoreError,\n ThreadTail,\n ThreadTailRequest,\n FenceRejected,\n FencedAppendRequest,\n} from \"@yielded/agent/thread-store\";\nimport { WorkerAdmissionRequest } from \"@yielded/agent/worker-admission\";\nimport { Schema } from \"effect\";\n\n/**\n * The cross-Durable-Object port protocol (plan §1.3, D-P6-3): Schema request/response/error\n * envelopes for the CLOSED route-capable subset of the thread ports. One Thread's\n * Durable Object executes another Thread's request against its OWN local facets; the\n * envelopes here are the only values that cross the Object boundary, and they are\n * transport-agnostic — native Durable Object JS RPC is the shipped carrier, fetch-with-JSON\n * the documented fallback, and both move the same Schema-encoded JSON.\n *\n * The closed subset is exactly the set of operations the durable coordinator performs against\n * a FOREIGN Thread (parent/child establishment, status checks, abort propagation,\n * child-settlement notification, and the child-thread store operations used by\n * establishment, `verifySettledChild`, and result projection):\n *\n * - worker: `admitWorker` (ledger admission, materialization, creation, origin, readiness);\n * - ledger: `admit`, `markReady`, `lookup`, `resolveAdmission`, `requestAbort`,\n * `recordChildSettled`;\n * - store: `materialize`, `append`, `read` (one page), `readIdentity`, `inspectTail`, `export`.\n *\n * Every other port operation is lane-local and has no envelope. A foreign disposable\n * recovery-cache load returns a miss so the caller can replay canonical history. Other\n * foreign operations fail fast and typed instead of widening the distributed surface.\n *\n * Failures cross the boundary as the `PortFailure` union and re-decode on the caller side to\n * the SAME tagged error types the local facet would have produced, so routed calls keep\n * error-tag fidelity. `cause` chains inside `LedgerError`/`ThreadStoreError` travel as\n * Schema defects and do not claim instance fidelity across Objects (plan §2.8).\n */\n\n/** Ceiling for protocol diagnostic strings; matches `AdmissionIndeterminate.reason`. */\nexport const MAX_PORT_DIAGNOSTIC_LENGTH = 4_096;\n\nconst BoundedDiagnostic = Schema.String.check(Schema.isMaxLength(MAX_PORT_DIAGNOSTIC_LENGTH));\n\n/** Truncate a diagnostic string to the protocol's bounded diagnostic length. */\nexport const boundPortDiagnostic = (value: string): string =>\n value.length > MAX_PORT_DIAGNOSTIC_LENGTH\n ? `${value.slice(0, MAX_PORT_DIAGNOSTIC_LENGTH - 3)}...`\n : value;\n\n/**\n * The envelope itself could not be honored: the receiving Object could not decode the\n * request, or a response could not be encoded/decoded. It never carries port semantics —\n * callers fold it into the operation's base error (`LedgerError`/`ThreadStoreError`),\n * except `resolveAdmission`, which folds it into `AdmissionIndeterminate` because a\n * non-answer is never proof of absence (SUB-031).\n */\nexport class PortProtocolError extends Schema.TaggedError<PortProtocolError>()(\n \"PortProtocolError\",\n {\n message: BoundedDiagnostic,\n },\n) {}\n\n// ---------------------------------------------------------------------------\n// Requests\n// ---------------------------------------------------------------------------\n\n/** One destination-owned worker admission, including canonical initialization and readiness. */\nexport class WorkerAdmitCall extends Schema.TaggedClass<WorkerAdmitCall>()(\"WorkerAdmit\", {\n request: WorkerAdmissionRequest,\n}) {}\n\n/** Routed `SubmissionLedger.admit` — child establishment admits INTO the owning Object. */\nexport class LedgerAdmitCall extends Schema.TaggedClass<LedgerAdmitCall>(\n \"@effect-agent/storage-cloudflare/LedgerAdmitCall\",\n)(\"LedgerAdmit\", {\n request: AdmissionRequest,\n}) {}\n\n/** Routed `SubmissionLedger.markReady` for a Submission owned by another Object. */\nexport class LedgerMarkReadyCall extends Schema.TaggedClass<LedgerMarkReadyCall>(\n \"@effect-agent/storage-cloudflare/LedgerMarkReadyCall\",\n)(\"LedgerMarkReady\", {\n request: MarkReadyRequest,\n}) {}\n\n/** Routed `SubmissionLedger.lookup` (by identity or scoped idempotency key). */\nexport class LedgerLookupCall extends Schema.TaggedClass<LedgerLookupCall>(\n \"@effect-agent/storage-cloudflare/LedgerLookupCall\",\n)(\"LedgerLookup\", {\n request: SubmissionLookup,\n}) {}\n\n/** Routed `SubmissionLedger.resolveAdmission` — the SUB-031 tri-state authority call. */\nexport class LedgerResolveAdmissionCall extends Schema.TaggedClass<LedgerResolveAdmissionCall>(\n \"@effect-agent/storage-cloudflare/LedgerResolveAdmissionCall\",\n)(\"LedgerResolveAdmission\", {\n request: SubmissionLookupByKey,\n}) {}\n\nexport class LedgerInspectWorkerCall extends Schema.TaggedClass<LedgerInspectWorkerCall>()(\n \"LedgerInspectWorker\",\n { request: Schema.Struct({ threadId: ThreadId }) },\n) {}\n\nexport class LedgerInspectWorkerResult extends Schema.TaggedClass<LedgerInspectWorkerResult>()(\n \"LedgerInspectWorkerResult\",\n { state: WorkerLedgerState },\n) {}\n\nexport class LedgerStopWorkerCall extends Schema.TaggedClass<LedgerStopWorkerCall>()(\n \"LedgerStopWorker\",\n { request: WorkerStopCommand },\n) {}\n\nexport class LedgerStopWorkerResult extends Schema.TaggedClass<LedgerStopWorkerResult>()(\n \"LedgerStopWorkerResult\",\n { owned: Schema.Natural },\n) {}\n\n/** Routed `SubmissionLedger.requestAbort` — abort propagation across Objects. */\nexport class LedgerRequestAbortCall extends Schema.TaggedClass<LedgerRequestAbortCall>(\n \"@effect-agent/storage-cloudflare/LedgerRequestAbortCall\",\n)(\"LedgerRequestAbort\", {\n request: AbortCommand,\n}) {}\n\n/** Routed `SubmissionLedger.recordChildSettled` — the child→parent durable notification. */\nexport class LedgerRecordChildSettledCall extends Schema.TaggedClass<LedgerRecordChildSettledCall>(\n \"@effect-agent/storage-cloudflare/LedgerRecordChildSettledCall\",\n)(\"LedgerRecordChildSettled\", {\n request: ChildSettledNotification,\n}) {}\n\n/** Routed `ThreadStore.materialize` against the owning Object. */\nexport class StoreMaterializeCall extends Schema.TaggedClass<StoreMaterializeCall>(\n \"@effect-agent/storage-cloudflare/StoreMaterializeCall\",\n)(\"StoreMaterialize\", {\n request: ThreadMaterialization,\n}) {}\n\n/** Routed `ThreadStore.append` against the owning Object. */\nexport class StoreAppendCall extends Schema.TaggedClass<StoreAppendCall>(\n \"@effect-agent/storage-cloudflare/StoreAppendCall\",\n)(\"StoreAppend\", {\n request: FencedAppendRequest,\n}) {}\n\n/** Routed one-page `ThreadStore.read`; the page bound is the request's own `limit`. */\nexport class StoreReadPageCall extends Schema.TaggedClass<StoreReadPageCall>(\n \"@effect-agent/storage-cloudflare/StoreReadPageCall\",\n)(\"StoreReadPage\", {\n request: ThreadReadRequest,\n}) {}\n\n/** Routed `ThreadStore.inspectTail` against the owning Object. */\nexport class StoreInspectTailCall extends Schema.TaggedClass<StoreInspectTailCall>(\n \"@effect-agent/storage-cloudflare/StoreInspectTailCall\",\n)(\"StoreInspectTail\", {\n request: ThreadTailRequest,\n}) {}\n\n/** Routed bounded `ThreadStore.readIdentity` against the owning Object. */\nexport class StoreReadIdentityCall extends Schema.TaggedClass<StoreReadIdentityCall>(\n \"@effect-agent/storage-cloudflare/StoreReadIdentityCall\",\n)(\"StoreReadIdentity\", {\n request: ThreadIdentityRequest,\n}) {}\n\n/** Routed `ThreadStore.export` against the owning Object. */\nexport class StoreExportCall extends Schema.TaggedClass<StoreExportCall>(\n \"@effect-agent/storage-cloudflare/StoreExportCall\",\n)(\"StoreExport\", {\n request: ThreadExportRequest,\n}) {}\n\nexport class StoreCountPeerMessagesCall extends Schema.TaggedClass<StoreCountPeerMessagesCall>()(\n \"StoreCountPeerMessages\",\n { request: ThreadPeerCountRequest },\n) {}\n\nexport class MessageDeliveryListCall extends Schema.TaggedClass<MessageDeliveryListCall>()(\n \"MessageDeliveryList\",\n { request: MessageDeliveryPageRequest },\n) {}\n\nexport class MessageDeliveryCompleteCall extends Schema.TaggedClass<MessageDeliveryCompleteCall>()(\n \"MessageDeliveryComplete\",\n { key: MessageDeliveryKey, completion: MessageDeliveryCompletion },\n) {}\n\n/** Every request that may cross a Durable Object boundary — the CLOSED route-capable subset. */\nexport const PortRequest = Schema.Union([\n WorkerAdmitCall,\n MessageDeliveryListCall,\n MessageDeliveryCompleteCall,\n LedgerAdmitCall,\n LedgerMarkReadyCall,\n LedgerLookupCall,\n LedgerResolveAdmissionCall,\n LedgerRequestAbortCall,\n LedgerStopWorkerCall,\n LedgerInspectWorkerCall,\n LedgerRecordChildSettledCall,\n StoreMaterializeCall,\n StoreAppendCall,\n StoreReadPageCall,\n StoreInspectTailCall,\n StoreReadIdentityCall,\n StoreExportCall,\n StoreCountPeerMessagesCall,\n]);\n\nexport type PortRequest = typeof PortRequest.Type;\n\n/** The wire form of one port request (what a transport actually carries). */\nexport type PortRequestEnvelope = typeof PortRequest.Encoded;\n\n// ---------------------------------------------------------------------------\n// Results\n// ---------------------------------------------------------------------------\n\nexport class WorkerAdmitResult extends Schema.TaggedClass<WorkerAdmitResult>()(\n \"WorkerAdmitResult\",\n {\n result: AdmissionResult,\n },\n) {}\n\nexport class LedgerAdmitResult extends Schema.TaggedClass<LedgerAdmitResult>(\n \"@effect-agent/storage-cloudflare/LedgerAdmitResult\",\n)(\"LedgerAdmitResult\", {\n result: AdmissionResult,\n}) {}\n\nexport class LedgerMarkReadyResult extends Schema.TaggedClass<LedgerMarkReadyResult>(\n \"@effect-agent/storage-cloudflare/LedgerMarkReadyResult\",\n)(\"LedgerMarkReadyResult\", {}) {}\n\n/** `submission` is absent exactly when the lookup answered `Option.none`. */\nexport class LedgerLookupResult extends Schema.TaggedClass<LedgerLookupResult>(\n \"@effect-agent/storage-cloudflare/LedgerLookupResult\",\n)(\"LedgerLookupResult\", {\n submission: Schema.optionalKey(SubmissionSnapshot),\n}) {}\n\nexport class LedgerResolveAdmissionResult extends Schema.TaggedClass<LedgerResolveAdmissionResult>(\n \"@effect-agent/storage-cloudflare/LedgerResolveAdmissionResult\",\n)(\"LedgerResolveAdmissionResult\", {\n resolution: AdmissionResolution,\n}) {}\n\nexport class LedgerRequestAbortResult extends Schema.TaggedClass<LedgerRequestAbortResult>(\n \"@effect-agent/storage-cloudflare/LedgerRequestAbortResult\",\n)(\"LedgerRequestAbortResult\", {\n intent: AbortIntent,\n}) {}\n\nexport class LedgerRecordChildSettledResult extends Schema.TaggedClass<LedgerRecordChildSettledResult>(\n \"@effect-agent/storage-cloudflare/LedgerRecordChildSettledResult\",\n)(\"LedgerRecordChildSettledResult\", {\n outcome: ChildSettledOutcome,\n}) {}\n\nexport class StoreMaterializeResult extends Schema.TaggedClass<StoreMaterializeResult>(\n \"@effect-agent/storage-cloudflare/StoreMaterializeResult\",\n)(\"StoreMaterializeResult\", {}) {}\n\nexport class StoreAppendResult extends Schema.TaggedClass<StoreAppendResult>(\n \"@effect-agent/storage-cloudflare/StoreAppendResult\",\n)(\"StoreAppendResult\", {\n result: AppendResult,\n}) {}\n\n/** One page of canonical records, bounded by the request's `limit` (≤ 1,024). */\nexport class StoreReadPageResult extends Schema.TaggedClass<StoreReadPageResult>(\n \"@effect-agent/storage-cloudflare/StoreReadPageResult\",\n)(\"StoreReadPageResult\", {\n records: Schema.Array(CanonicalRecordEnvelope).check(Schema.isMaxLength(1_024)),\n}) {}\n\nexport class StoreInspectTailResult extends Schema.TaggedClass<StoreInspectTailResult>(\n \"@effect-agent/storage-cloudflare/StoreInspectTailResult\",\n)(\"StoreInspectTailResult\", {\n tail: ThreadTail,\n}) {}\n\nexport class StoreReadIdentityResult extends Schema.TaggedClass<StoreReadIdentityResult>(\n \"@effect-agent/storage-cloudflare/StoreReadIdentityResult\",\n)(\"StoreReadIdentityResult\", {\n identity: ThreadIdentity,\n}) {}\n\nexport class StoreExportResult extends Schema.TaggedClass<StoreExportResult>(\n \"@effect-agent/storage-cloudflare/StoreExportResult\",\n)(\"StoreExportResult\", {\n export: ThreadExport,\n}) {}\n\nexport class StoreCountPeerMessagesResult extends Schema.TaggedClass<StoreCountPeerMessagesResult>()(\n \"StoreCountPeerMessagesResult\",\n { count: Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 1000 })) },\n) {}\n\nexport class MessageDeliveryListResult extends Schema.TaggedClass<MessageDeliveryListResult>()(\n \"MessageDeliveryListResult\",\n { page: MessageDeliveryPage },\n) {}\n\nexport class MessageDeliveryCompleteResult extends Schema.TaggedClass<MessageDeliveryCompleteResult>()(\n \"MessageDeliveryCompleteResult\",\n { record: MessageDeliveryRecord },\n) {}\n\n/** Every successful routed result. Callers narrow by the tag their request implies. */\nexport const PortResult = Schema.Union([\n WorkerAdmitResult,\n MessageDeliveryListResult,\n MessageDeliveryCompleteResult,\n LedgerAdmitResult,\n LedgerMarkReadyResult,\n LedgerLookupResult,\n LedgerResolveAdmissionResult,\n LedgerRequestAbortResult,\n LedgerStopWorkerResult,\n LedgerInspectWorkerResult,\n LedgerRecordChildSettledResult,\n StoreMaterializeResult,\n StoreAppendResult,\n StoreReadPageResult,\n StoreInspectTailResult,\n StoreReadIdentityResult,\n StoreExportResult,\n StoreCountPeerMessagesResult,\n]);\n\nexport type PortResult = typeof PortResult.Type;\n\n// ---------------------------------------------------------------------------\n// Failures and the response envelope\n// ---------------------------------------------------------------------------\n\n/**\n * Every typed failure a route-capable operation can produce on its owning Object, plus the\n * protocol's own `PortProtocolError`. Members re-decode to the SAME tagged classes the\n * thread ports declare, so a routed caller observes identical error tags and fields.\n */\nexport const PortFailure = Schema.Union([\n DurableRuntimeFailpointError,\n MessageDeliveryError,\n MessageDeliveryFailpointError,\n AdmissionConflict,\n AdmissionPolicyError,\n SettlementConflict,\n JoinedToHost,\n LedgerError,\n ThreadStoreError,\n ThreadNotMaterialized,\n AppendConflict,\n FenceRejected,\n PortProtocolError,\n]);\n\nexport type PortFailure = typeof PortFailure.Type;\n\n/** The routed operation succeeded on its owning Object. */\nexport class PortSucceeded extends Schema.TaggedClass<PortSucceeded>(\n \"@effect-agent/storage-cloudflare/PortSucceeded\",\n)(\"PortSucceeded\", {\n result: PortResult,\n}) {}\n\n/** The routed operation failed TYPED on its owning Object; the failure re-decodes verbatim. */\nexport class PortFailed extends Schema.TaggedClass<PortFailed>(\n \"@effect-agent/storage-cloudflare/PortFailed\",\n)(\"PortFailed\", {\n failure: PortFailure,\n}) {}\n\n/** The uniform answer of one `portCall`: op-specific success or a re-decodable typed failure. */\nexport const PortResponse = Schema.Union([PortSucceeded, PortFailed]);\nexport type PortResponse = typeof PortResponse.Type;\n\n/** The wire form of one port response (what a transport actually carries). */\nexport type PortResponseEnvelope = typeof PortResponse.Encoded;\n\n// ---------------------------------------------------------------------------\n// Codecs\n// ---------------------------------------------------------------------------\n\nexport const encodePortRequest = Schema.encodeEffect(PortRequest);\nexport const decodePortRequest = Schema.decodeUnknownEffect(PortRequest);\nexport const encodePortResponse = Schema.encodeEffect(PortResponse);\nexport const decodePortResponse = Schema.decodeUnknownEffect(PortResponse);\n"],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ import { LedgerAdmitCall, LedgerInspectWorkerCall, LedgerLookupCall, LedgerMarkReadyCall, LedgerRecordChildSettledCall, LedgerRequestAbortCall, LedgerResolveAdmissionCall, LedgerStopWorkerCall, MessageDeliveryCompleteCall, MessageDeliveryListCall, PortFailed, PortRequestEnvelope, PortSucceeded, StoreAppendCall, StoreCountPeerMessagesCall, StoreExportCall, StoreInspectTailCall, StoreMaterializeCall, StoreReadIdentityCall, StoreReadPageCall, WorkerAdmitCall } from "./PortProtocol.mjs";
2
+ import { MessageDeliveryStore } from "@yielded/agent/message-delivery";
3
+ import { Cause, Context, Effect, Layer, Option, Schema } from "effect";
4
+ import { ThreadMaterialization, ThreadStore } from "@yielded/agent/thread-store";
5
+ import { LedgerError, SubmissionLedger, SubmissionSnapshot } from "@yielded/agent/submission-ledger";
6
+ import { DurableRuntimeFailpoint } from "@yielded/agent/durable-failpoint";
7
+ import { WakeScheduler } from "@yielded/agent/wake-scheduler";
8
+ declare namespace PortRouting_d_exports {
9
+ export { PortTransportError, RoutedPortOptions, ThreadPortTransport, executePortRequest, handleEncodedPortRequest, makeLocalSubmissionLookup, portTransportFailure, routedMessageDeliveryStoreLayer, routedSubmissionLedgerLayer, routedThreadStoreLayer, routedWorkerAdmissionLayer };
10
+ }
11
+ type ThreadId = ThreadMaterialization["threadId"];
12
+ type SubmissionId = SubmissionSnapshot["submissionId"];
13
+ declare const PortTransportError_base: Schema.Class<PortTransportError, Schema.TaggedStruct<"PortTransportError", {
14
+ readonly target: Schema.String;
15
+ readonly message: Schema.String;
16
+ readonly retryable: Schema.optionalKey<Schema.Boolean>;
17
+ readonly cause: Schema.optionalKey<Schema.Defect>;
18
+ }>, Cause.YieldableError>;
19
+ /**
20
+ * A transport could not deliver a port request to (or an answer from) the owning
21
+ * Thread's Durable Object. `retryable` carries the platform's own stub signal when one
22
+ * exists. This error never crosses the wire — it is the CALLER-side evidence that the
23
+ * authority was unreachable, which is exactly the case `AdmissionIndeterminate` was
24
+ * specified for (SUB-031).
25
+ */
26
+ export declare class PortTransportError extends PortTransportError_base {}
27
+ /**
28
+ * Build a `PortTransportError` from an arbitrary thrown transport cause, preserving the
29
+ * platform stub's own `retryable` signal when present.
30
+ */
31
+ export declare const portTransportFailure: (target: string, cause: unknown) => PortTransportError;
32
+ declare const ThreadPortTransport_base: Context.ServiceClass<ThreadPortTransport, "@effect-agent/storage-cloudflare/ThreadPortTransport", {
33
+ readonly call: (threadId: ThreadId, request: PortRequestEnvelope) => Effect.Effect<unknown, PortTransportError>;
34
+ }>;
35
+ /**
36
+ * Delivery of Schema-encoded port envelopes to the Durable Object that owns a FOREIGN
37
+ * Thread (plan §1.3, D-P6-3). The shipped implementation (platform-cloudflare, WP3)
38
+ * calls the owner's `portCall` over native Durable Object JS RPC via
39
+ * `namespace.idFromName(threadId)`; the protocol is transport-agnostic and any carrier
40
+ * that moves the encoded envelopes verbatim satisfies this service. Implementations MUST
41
+ * surface every delivery problem as `PortTransportError` and must never fabricate an answer.
42
+ */
43
+ export declare class ThreadPortTransport extends ThreadPortTransport_base {}
44
+ /** Construction options shared by both routed port Layers. */
45
+ export interface RoutedPortOptions {
46
+ /**
47
+ * Decide whether this physical owner stores the addressed logical Thread. Local
48
+ * requests use the same SQLite facets; foreign requests use the transport or fail
49
+ * fast typed. The predicate determines placement, never caller authorization.
50
+ */
51
+ readonly ownsThread: (threadId: ThreadId) => boolean;
52
+ }
53
+ /**
54
+ * Read a Submission only from this physical owner. Encoded foreign identities fail before
55
+ * storage access; opaque identities still use local lookup. A returned row must also belong
56
+ * to an owned Thread. This is placement validation, not caller authorization.
57
+ */
58
+ export declare const makeLocalSubmissionLookup: (options: RoutedPortOptions) => ((submissionId: SubmissionId) => Effect.Effect<Option.Option<SubmissionSnapshot>, LedgerError, SubmissionLedger>);
59
+ /**
60
+ * Routing decorator over the LOCAL `SubmissionLedger` facet (plan §1.3): a request addressing
61
+ * this Object's Thread executes locally; a route-capable request addressing another
62
+ * Thread is Schema-encoded onto the `ThreadPortTransport` and executed by the
63
+ * owning Object's local facet; any other foreign request fails fast typed. Provide the WP1
64
+ * local facet (`submissionLedgerLayer`/`ledgerLayer`) and a transport to close it.
65
+ */
66
+ export declare const routedSubmissionLedgerLayer: (options: RoutedPortOptions) => Layer.Layer<SubmissionLedger, never, SubmissionLedger | ThreadPortTransport>;
67
+ /**
68
+ * Routing decorator over the LOCAL `ThreadStore` facet (plan §1.3): this-thread
69
+ * requests execute locally; foreign materialize/append/read/inspectTail/export travel the
70
+ * transport. Foreign recovery-cache loads return none for canonical replay; other foreign
71
+ * checkpoint operations and observation fail fast typed.
72
+ */
73
+ export declare const routedThreadStoreLayer: (options: RoutedPortOptions) => Layer.Layer<ThreadStore, never, ThreadStore | ThreadPortTransport>;
74
+ /** Route validated worker admission as one operation; source policy hooks stay at the caller. */
75
+ export declare const routedWorkerAdmissionLayer: (options: RoutedPortOptions) => Layer.Layer<never, never, ThreadPortTransport>;
76
+ /** Route the existing owner-scoped list; delivery mutations remain source local. */
77
+ export declare const routedMessageDeliveryStoreLayer: (options: RoutedPortOptions) => Layer.Layer<MessageDeliveryStore, never, MessageDeliveryStore | ThreadPortTransport>;
78
+ /**
79
+ * Execute one decoded port request against THIS Object's LOCAL facets — the owner-side half
80
+ * of the routed ports (plan §1.3). Callers must provide the WP1 local facets, never the
81
+ * routed decorators: the routing layer already established that this Object owns the
82
+ * addressed Thread, and re-routing here could bounce a request between Objects.
83
+ * Failures never escape — every typed port failure becomes a `PortFailed` envelope that
84
+ * re-decodes on the caller side.
85
+ */
86
+ export declare const executePortRequest: (request: LedgerAdmitCall | LedgerInspectWorkerCall | LedgerLookupCall | LedgerMarkReadyCall | LedgerRecordChildSettledCall | LedgerRequestAbortCall | LedgerResolveAdmissionCall | LedgerStopWorkerCall | MessageDeliveryCompleteCall | MessageDeliveryListCall | StoreAppendCall | StoreCountPeerMessagesCall | StoreExportCall | StoreInspectTailCall | StoreMaterializeCall | StoreReadIdentityCall | StoreReadPageCall | WorkerAdmitCall) => Effect.Effect<PortFailed | PortSucceeded, never, DurableRuntimeFailpoint | MessageDeliveryStore | SubmissionLedger | ThreadStore | WakeScheduler>;
87
+ /**
88
+ * The complete owner-side endpoint body for `portCall` (D-P6-3): decode the wire request,
89
+ * execute it against this Object's LOCAL facets, and answer with the encoded response
90
+ * envelope. Total by construction — a request that cannot be decoded, or a response that
91
+ * cannot be encoded, answers `PortFailed(PortProtocolError)` instead of throwing, so the
92
+ * transport never has to interpret exceptions as protocol answers.
93
+ */
94
+ export declare const handleEncodedPortRequest: (encoded: unknown) => Effect.Effect<unknown, never, DurableRuntimeFailpoint | MessageDeliveryStore | SubmissionLedger | ThreadStore | WakeScheduler>;
95
+ //#endregion
96
+ export { PortRouting_d_exports as t };
97
+ //# sourceMappingURL=PortRouting.d.mts.map