@moltzap/client 2026.508.0 → 2026.508.1

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 (62) hide show
  1. package/dist/channel-core.d.ts +118 -2
  2. package/dist/channel-core.d.ts.map +1 -1
  3. package/dist/channel-core.js +195 -27
  4. package/dist/channel-core.js.map +1 -1
  5. package/dist/channel-core.test.js +117 -26
  6. package/dist/channel-core.test.js.map +1 -1
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/runtime/frame.d.ts +6 -10
  11. package/dist/runtime/frame.d.ts.map +1 -1
  12. package/dist/runtime/frame.js +4 -28
  13. package/dist/runtime/frame.js.map +1 -1
  14. package/dist/service.d.ts +18 -3
  15. package/dist/service.d.ts.map +1 -1
  16. package/dist/service.js +28 -50
  17. package/dist/service.js.map +1 -1
  18. package/dist/service.test.js +27 -25
  19. package/dist/service.test.js.map +1 -1
  20. package/dist/test-utils/channel-service-fixture.d.ts +2 -1
  21. package/dist/test-utils/channel-service-fixture.d.ts.map +1 -1
  22. package/dist/test-utils/channel-service-fixture.js +8 -0
  23. package/dist/test-utils/channel-service-fixture.js.map +1 -1
  24. package/dist/ws-client.d.ts +5 -26
  25. package/dist/ws-client.d.ts.map +1 -1
  26. package/dist/ws-client.js +71 -97
  27. package/dist/ws-client.js.map +1 -1
  28. package/dist/ws-client.test.js +40 -12
  29. package/dist/ws-client.test.js.map +1 -1
  30. package/package.json +3 -3
  31. package/dist/internal/__tests__/app-callback-partition-key.test.d.ts +0 -2
  32. package/dist/internal/__tests__/app-callback-partition-key.test.d.ts.map +0 -1
  33. package/dist/internal/__tests__/app-callback-partition-key.test.js +0 -20
  34. package/dist/internal/__tests__/app-callback-partition-key.test.js.map +0 -1
  35. package/dist/internal/__tests__/app-callback-partition-worker.test.d.ts +0 -2
  36. package/dist/internal/__tests__/app-callback-partition-worker.test.d.ts.map +0 -1
  37. package/dist/internal/__tests__/app-callback-partition-worker.test.js +0 -265
  38. package/dist/internal/__tests__/app-callback-partition-worker.test.js.map +0 -1
  39. package/dist/internal/__tests__/app-callback-partitioned-dispatcher.test.d.ts +0 -2
  40. package/dist/internal/__tests__/app-callback-partitioned-dispatcher.test.d.ts.map +0 -1
  41. package/dist/internal/__tests__/app-callback-partitioned-dispatcher.test.js +0 -228
  42. package/dist/internal/__tests__/app-callback-partitioned-dispatcher.test.js.map +0 -1
  43. package/dist/internal/__tests__/app-callback-test-requests.d.ts +0 -22
  44. package/dist/internal/__tests__/app-callback-test-requests.d.ts.map +0 -1
  45. package/dist/internal/__tests__/app-callback-test-requests.js +0 -45
  46. package/dist/internal/__tests__/app-callback-test-requests.js.map +0 -1
  47. package/dist/internal/app-callback-dispatcher-errors.d.ts +0 -50
  48. package/dist/internal/app-callback-dispatcher-errors.d.ts.map +0 -1
  49. package/dist/internal/app-callback-dispatcher-errors.js +0 -36
  50. package/dist/internal/app-callback-dispatcher-errors.js.map +0 -1
  51. package/dist/internal/app-callback-partition-key.d.ts +0 -58
  52. package/dist/internal/app-callback-partition-key.d.ts.map +0 -1
  53. package/dist/internal/app-callback-partition-key.js +0 -80
  54. package/dist/internal/app-callback-partition-key.js.map +0 -1
  55. package/dist/internal/app-callback-partition-worker.d.ts +0 -160
  56. package/dist/internal/app-callback-partition-worker.d.ts.map +0 -1
  57. package/dist/internal/app-callback-partition-worker.js +0 -141
  58. package/dist/internal/app-callback-partition-worker.js.map +0 -1
  59. package/dist/internal/app-callback-partitioned-dispatcher.d.ts +0 -180
  60. package/dist/internal/app-callback-partitioned-dispatcher.d.ts.map +0 -1
  61. package/dist/internal/app-callback-partitioned-dispatcher.js +0 -282
  62. package/dist/internal/app-callback-partitioned-dispatcher.js.map +0 -1
@@ -75,6 +75,30 @@ export type DispatchAdmissionDecision = {
75
75
  _tag: "hold";
76
76
  reason?: string;
77
77
  };
78
+ /**
79
+ * Server → recipient `dispatch/release` notification payload (the
80
+ * verdict). Mirrors `NotificationParamsOf<typeof DispatchRelease>` from
81
+ * the protocol, kept structurally typed here so this module does not
82
+ * need a direct protocol descriptor import (the channel core stays
83
+ * descriptor-free; the wire shape is asserted by the service module).
84
+ */
85
+ export interface DispatchReleaseFrame {
86
+ readonly dispatchId: string;
87
+ readonly leaseId: string;
88
+ readonly verdict: {
89
+ readonly decision: "grant";
90
+ readonly leaseId?: string;
91
+ readonly leaseTimeoutMs?: number;
92
+ readonly dispatchMessageId?: string;
93
+ } | {
94
+ readonly decision: "deny";
95
+ readonly reason?: string;
96
+ } | {
97
+ readonly decision: "hold";
98
+ readonly reason?: string;
99
+ };
100
+ readonly leaseTimeoutMs?: number;
101
+ }
78
102
  /** The subset of MoltZapService that MoltZapChannelCore needs. */
79
103
  export interface ChannelService {
80
104
  readonly ownAgentId: string | undefined;
@@ -87,6 +111,7 @@ export interface ChannelService {
87
111
  on(event: "conversationUnarchived", handler: (data: {
88
112
  conversationId: string;
89
113
  }) => void): void;
114
+ on(event: "dispatchRelease", handler: (frame: DispatchReleaseFrame) => void): void;
90
115
  connect(): Effect.Effect<unknown, ServiceRpcError>;
91
116
  close(): void;
92
117
  send(conversationId: string, text: string, opts?: {
@@ -111,7 +136,32 @@ export interface ChannelService {
111
136
  messages: CrossConvMessage[];
112
137
  commit: () => void;
113
138
  };
114
- authorizeDispatch?(request: DispatchAdmissionRequest): Effect.Effect<DispatchAdmissionDecision, ServiceRpcError>;
139
+ /**
140
+ * Issue `dispatch/request` and receive the immediate
141
+ * `{leaseId, dispatchId}` ack. The verdict arrives asynchronously
142
+ * via the `dispatchRelease` event.
143
+ *
144
+ * The argument shape mirrors `ParamsOf<DispatchRequest>` from the
145
+ * protocol (the channel core does not depend on the protocol
146
+ * descriptor, hence the structural shape duplicated here).
147
+ *
148
+ * Optional: when undefined (e.g. unauthenticated test fakes), the
149
+ * channel core falls back to default-grant — every inbound message
150
+ * dispatches without admission.
151
+ */
152
+ requestDispatch?(params: {
153
+ readonly conversationId: string;
154
+ readonly messageId: string;
155
+ readonly senderAgentId: string;
156
+ readonly parts?: ReadonlyArray<unknown>;
157
+ readonly receivedAt?: string;
158
+ readonly pending?: ReadonlyArray<unknown>;
159
+ readonly clock?: LogicalClock;
160
+ readonly attempt?: number;
161
+ }): Effect.Effect<{
162
+ readonly leaseId: string;
163
+ readonly dispatchId: string;
164
+ }, ServiceRpcError>;
115
165
  }
116
166
  export interface ChannelCoreOptions {
117
167
  service: ChannelService;
@@ -139,7 +189,30 @@ export declare class MoltZapChannelCore {
139
189
  private readonly dispatchAdmissionTimeoutMs;
140
190
  private connected;
141
191
  private inboundHandler;
142
- private activeDispatchLeaseId;
192
+ /**
193
+ * Lease id scoped to the in-flight `dispatchInboundEffect` call
194
+ * (set immediately around the user-handler invocation). Replaces
195
+ * the legacy `activeDispatchLeaseId` field whose semantics were
196
+ * unchanged but whose name leaked an admission-flow detail. The
197
+ * field remains a single mutable cell because the consumer fiber
198
+ * processes inbound work strictly serially (one queue, one fiber);
199
+ * concurrent dispatches do not exist on this code path.
200
+ */
201
+ private leaseIdInFlight;
202
+ /**
203
+ * Per-lease parking Deferreds for dispatches awaiting their
204
+ * `dispatchRelease` verdict. Settled by the `dispatchRelease` event
205
+ * handler when a matching frame arrives.
206
+ */
207
+ private readonly pendingDispatchesByLease;
208
+ /**
209
+ * Ring buffer of `dispatchRelease` frames that arrived before the
210
+ * recipient registered its parking Deferred (release-then-ack
211
+ * race). Bounded LRU via Map insertion-order iteration; soft-TTL
212
+ * eviction at `DISPATCH_RELEASE_RING_SOFT_TTL_MS` so a release
213
+ * without a matching ack does not leak memory.
214
+ */
215
+ private readonly pendingReleasesByLease;
143
216
  private readonly closedConversationIds;
144
217
  private readonly logicalClocks;
145
218
  private readonly parkedByConversation;
@@ -150,6 +223,19 @@ export declare class MoltZapChannelCore {
150
223
  private disconnectHandlers;
151
224
  private reconnectHandlers;
152
225
  constructor(opts: ChannelCoreOptions);
226
+ /**
227
+ * Record an incoming `dispatchRelease` frame. If a matching
228
+ * parking Deferred is registered, settle it inline; otherwise
229
+ * insert into the ring buffer for the future ack-side `consume`.
230
+ * Soft-TTL evicts buffered entries whose age exceeds
231
+ * `DISPATCH_RELEASE_RING_SOFT_TTL_MS`; the hard-cap at
232
+ * `DISPATCH_RELEASE_RING_CAPACITY` evicts the oldest entry once
233
+ * exceeded. Both eviction paths warn-log so operators can spot
234
+ * release-without-ack adversarial patterns.
235
+ */
236
+ private recordDispatchRelease;
237
+ private evictDispatchReleaseRing;
238
+ private consumeDispatchRelease;
153
239
  /** Replaces any previous handler. */
154
240
  onInbound<E>(handler: InboundHandler<E>): void;
155
241
  onDisconnect(handler: () => void): void;
@@ -165,7 +251,37 @@ export declare class MoltZapChannelCore {
165
251
  private observeMessage;
166
252
  private takeDispatchCandidate;
167
253
  private parkDispatchWork;
254
+ /**
255
+ * Issue `dispatch/request` against the service, await the lease's
256
+ * `dispatchRelease` verdict, and return the channel-core
257
+ * `DispatchAdmissionDecision`. Absorbs the ack/release race via
258
+ * `pendingDispatchesByLease` (Deferred) plus
259
+ * `pendingReleasesByLease` (LRU ring buffer):
260
+ * - if release arrives first, the `recordDispatchRelease` event
261
+ * handler buffers it; this method consumes the buffered entry
262
+ * after the ack returns.
263
+ * - if ack arrives first, this method registers a Deferred that
264
+ * `recordDispatchRelease` settles when the release frame
265
+ * arrives.
266
+ *
267
+ * When the service has no `requestDispatch` (test fakes that don't
268
+ * exercise admission), default-grant.
269
+ *
270
+ * On request error or release wait timeout, fail-closed with a
271
+ * synthetic deny verdict. The lease (if minted server-side) ages
272
+ * out via the post-grant TTL or LeaseRegistry's
273
+ * abandon-on-disconnect path; nothing here re-issues.
274
+ */
168
275
  private dispatchAdmission;
276
+ /**
277
+ * Wait for the verdict on `leaseId`. Consumes any buffered
278
+ * `dispatchRelease` first; otherwise registers a parking Deferred
279
+ * and bounded-waits for the `recordDispatchRelease` event handler
280
+ * to settle it. The wait timeout matches today's
281
+ * `dispatchAdmissionTimeoutMs` (default 30 s).
282
+ */
283
+ private awaitDispatchRelease;
284
+ private projectVerdict;
169
285
  private dispatchInboundWork;
170
286
  private pendingDispatchSnapshot;
171
287
  private takeCoalescedConversationMessages;
@@ -1 +1 @@
1
- {"version":3,"file":"channel-core.d.ts","sourceRoot":"","sources":["../src/channel-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channel-core.d.ts","sourceRoot":"","sources":["../src/channel-core.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAoC,MAAM,EAAgB,MAAM,QAAQ,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EACV,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,CAAC,EAAE,wBAAwB,CAAC;IACzC,iBAAiB,CAAC,EAAE,sBAAsB,EAAE,CAAC;IAC7C,yBAAyB,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAChD;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;IAC5C,aAAa,EAAE,aAAa,CAAC;IAC7B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,aAAa,CAAC;QAChC,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,cAAc,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,6EAA6E;IAC7E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;CAChD;AAED,MAAM,MAAM,yBAAyB,GACjC;IACE,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GACD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EACZ;QACE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;KACrC,GACD;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GACvD;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,kEAAkE;AAClE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAC5D,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACnD,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAClD,EAAE,CACA,KAAK,EAAE,sBAAsB,EAC7B,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAClD,IAAI,CAAC;IACR,EAAE,CACA,KAAK,EAAE,wBAAwB,EAC/B,OAAO,EAAE,CAAC,IAAI,EAAE;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAClD,IAAI,CAAC;IACR,EAAE,CACA,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,GAC7C,IAAI,CAAC;IACR,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACnD,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,CACF,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAClC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACxC,sBAAsB,CAAC,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;IACzD,eAAe,CACb,MAAM,EAAE,MAAM,GACb;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,SAAS,CAAC;IACvE,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAClD,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChE,kBAAkB,CAChB,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE,GAChE;QAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IAC7D,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG;QACvC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;QAC7B,MAAM,EAAE,MAAM,IAAI,CAAC;KACpB,CAAC;IACF;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,CAAC,MAAM,EAAE;QACvB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QACxC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAC1C,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;QAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;KAC3B,GAAG,MAAM,CAAC,MAAM,CACf;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EACzD,eAAe,CAChB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,OAAO,IAAI,CACxC,GAAG,EAAE,sBAAsB,KACxB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AA4D5B;;;;;;;GAOG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAS;IACpD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAwC;IAC9D;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe,CAAqB;IAC5C;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAGrC;IACJ;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAGnC;IACJ,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAqB;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAG1B;IACJ,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAGjC;IACJ;iFAC6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAC4B;IACzD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkC;IAChE,OAAO,CAAC,kBAAkB,CAAyB;IACnD,OAAO,CAAC,iBAAiB,CAAyB;gBAEtC,IAAI,EAAE,kBAAkB;IA2EpC;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;IA6B7B,OAAO,CAAC,wBAAwB;IAehC,OAAO,CAAC,sBAAsB;IAS9B,qCAAqC;IACrC,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAI9C,YAAY,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAIvC,WAAW,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAItC,OAAO,CAAC,MAAM;IAad,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC;IAW/C,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;IAUxC,WAAW,IAAI,OAAO;IAItB,SAAS,CACP,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAClC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC;IAiBvC,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,gBAAgB;IAUxB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,iBAAiB;IAkDzB;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IA0C5B,OAAO,CAAC,cAAc;IAyCtB,OAAO,CAAC,mBAAmB;IAsJ3B,OAAO,CAAC,uBAAuB;IAqB/B,OAAO,CAAC,iCAAiC;IAsCzC;;;OAGG;IACH,MAAM,CAAC,aAAa,CAClB,OAAO,EAAE,cAAc,EACvB,iBAAiB,EAAE,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,GAClD,MAAM,CAAC,MAAM,CACd;QACE,QAAQ,EAAE,sBAAsB,CAAC;QACjC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;KAC5B,EACD,KAAK,CACN;IA0GD,OAAO,CAAC,qBAAqB;CAkB9B"}
@@ -1,14 +1,16 @@
1
1
  /**
2
2
  * Shared message-enrichment helper for MoltZap channel adapters.
3
3
  */
4
- import { Cause, Chunk, Duration, Effect, Fiber, Queue } from "effect";
4
+ import { Cause, Chunk, Deferred, Duration, Effect, Fiber, Queue } from "effect";
5
5
  const noopLogger = {
6
6
  info: () => { },
7
7
  warn: () => { },
8
8
  error: () => { },
9
9
  };
10
- const DEFAULT_DISPATCH_ADMISSION_TIMEOUT_MS = 900_000;
10
+ const DEFAULT_DISPATCH_ADMISSION_TIMEOUT_MS = 30_000;
11
11
  const DEFAULT_DISPATCH_LEASE_TIMEOUT_MS = 90_000;
12
+ const DISPATCH_RELEASE_RING_CAPACITY = 256;
13
+ const DISPATCH_RELEASE_RING_SOFT_TTL_MS = 30_000;
12
14
  class DispatchLeaseExpired extends Error {
13
15
  messageId;
14
16
  conversationId;
@@ -53,7 +55,30 @@ export class MoltZapChannelCore {
53
55
  dispatchAdmissionTimeoutMs;
54
56
  connected = false;
55
57
  inboundHandler = null;
56
- activeDispatchLeaseId;
58
+ /**
59
+ * Lease id scoped to the in-flight `dispatchInboundEffect` call
60
+ * (set immediately around the user-handler invocation). Replaces
61
+ * the legacy `activeDispatchLeaseId` field whose semantics were
62
+ * unchanged but whose name leaked an admission-flow detail. The
63
+ * field remains a single mutable cell because the consumer fiber
64
+ * processes inbound work strictly serially (one queue, one fiber);
65
+ * concurrent dispatches do not exist on this code path.
66
+ */
67
+ leaseIdInFlight;
68
+ /**
69
+ * Per-lease parking Deferreds for dispatches awaiting their
70
+ * `dispatchRelease` verdict. Settled by the `dispatchRelease` event
71
+ * handler when a matching frame arrives.
72
+ */
73
+ pendingDispatchesByLease = new Map();
74
+ /**
75
+ * Ring buffer of `dispatchRelease` frames that arrived before the
76
+ * recipient registered its parking Deferred (release-then-ack
77
+ * race). Bounded LRU via Map insertion-order iteration; soft-TTL
78
+ * eviction at `DISPATCH_RELEASE_RING_SOFT_TTL_MS` so a release
79
+ * without a matching ack does not leak memory.
80
+ */
81
+ pendingReleasesByLease = new Map();
57
82
  closedConversationIds = new Set();
58
83
  logicalClocks = new Map();
59
84
  parkedByConversation = new Map();
@@ -108,6 +133,63 @@ export class MoltZapChannelCore {
108
133
  this.service.on("conversationUnarchived", ({ conversationId }) => {
109
134
  this.closedConversationIds.delete(conversationId);
110
135
  });
136
+ this.service.on("dispatchRelease", (frame) => {
137
+ this.recordDispatchRelease(frame);
138
+ });
139
+ }
140
+ /**
141
+ * Record an incoming `dispatchRelease` frame. If a matching
142
+ * parking Deferred is registered, settle it inline; otherwise
143
+ * insert into the ring buffer for the future ack-side `consume`.
144
+ * Soft-TTL evicts buffered entries whose age exceeds
145
+ * `DISPATCH_RELEASE_RING_SOFT_TTL_MS`; the hard-cap at
146
+ * `DISPATCH_RELEASE_RING_CAPACITY` evicts the oldest entry once
147
+ * exceeded. Both eviction paths warn-log so operators can spot
148
+ * release-without-ack adversarial patterns.
149
+ */
150
+ recordDispatchRelease(frame) {
151
+ const parked = this.pendingDispatchesByLease.get(frame.leaseId);
152
+ if (parked) {
153
+ this.pendingDispatchesByLease.delete(frame.leaseId);
154
+ // `Deferred.unsafeDone` is the sync settler — `succeed` returns an
155
+ // Effect that the caller would have to runFork. The Deferred has
156
+ // `never` in the failure channel, so unsafeDone with Exit.succeed
157
+ // is total.
158
+ Effect.runSync(Deferred.succeed(parked, frame));
159
+ return;
160
+ }
161
+ const nowMs = Date.now();
162
+ this.evictDispatchReleaseRing(nowMs);
163
+ this.pendingReleasesByLease.set(frame.leaseId, {
164
+ verdict: frame.verdict,
165
+ leaseTimeoutMs: frame.leaseTimeoutMs,
166
+ receivedAtMs: nowMs,
167
+ });
168
+ while (this.pendingReleasesByLease.size > DISPATCH_RELEASE_RING_CAPACITY) {
169
+ const oldest = this.pendingReleasesByLease.keys().next().value;
170
+ if (oldest === undefined)
171
+ break;
172
+ this.pendingReleasesByLease.delete(oldest);
173
+ this.logger.warn({ leaseId: oldest }, "MoltZapChannelCore: dispatchRelease ring buffer evicted oldest entry (capacity reached)");
174
+ }
175
+ }
176
+ evictDispatchReleaseRing(nowMs) {
177
+ for (const [leaseId, entry] of this.pendingReleasesByLease) {
178
+ if (nowMs - entry.receivedAtMs <= DISPATCH_RELEASE_RING_SOFT_TTL_MS) {
179
+ // Map iteration is insertion-order; once one entry is fresh
180
+ // every subsequent entry is fresher. Stop here.
181
+ return;
182
+ }
183
+ this.pendingReleasesByLease.delete(leaseId);
184
+ this.logger.warn({ leaseId, ageMs: nowMs - entry.receivedAtMs }, "MoltZapChannelCore: dispatchRelease ring buffer evicted stale entry (soft TTL)");
185
+ }
186
+ }
187
+ consumeDispatchRelease(leaseId) {
188
+ const entry = this.pendingReleasesByLease.get(leaseId);
189
+ if (entry === undefined)
190
+ return undefined;
191
+ this.pendingReleasesByLease.delete(leaseId);
192
+ return entry;
111
193
  }
112
194
  /** Replaces any previous handler. */
113
195
  onInbound(handler) {
@@ -152,7 +234,7 @@ export class MoltZapChannelCore {
152
234
  return Effect.sync(() => this.logger.info({ conversationId }, "MoltZapChannelCore: dropping reply for closed conversation"));
153
235
  }
154
236
  return this.service.send(conversationId, text, {
155
- dispatchLeaseId: opts?.dispatchLeaseId ?? this.activeDispatchLeaseId,
237
+ dispatchLeaseId: opts?.dispatchLeaseId ?? this.leaseIdInFlight,
156
238
  });
157
239
  }
158
240
  closeConversation(conversationId) {
@@ -214,33 +296,49 @@ export class MoltZapChannelCore {
214
296
  });
215
297
  this.parkedByConversation.set(conversationId, parked);
216
298
  }
299
+ /**
300
+ * Issue `dispatch/request` against the service, await the lease's
301
+ * `dispatchRelease` verdict, and return the channel-core
302
+ * `DispatchAdmissionDecision`. Absorbs the ack/release race via
303
+ * `pendingDispatchesByLease` (Deferred) plus
304
+ * `pendingReleasesByLease` (LRU ring buffer):
305
+ * - if release arrives first, the `recordDispatchRelease` event
306
+ * handler buffers it; this method consumes the buffered entry
307
+ * after the ack returns.
308
+ * - if ack arrives first, this method registers a Deferred that
309
+ * `recordDispatchRelease` settles when the release frame
310
+ * arrives.
311
+ *
312
+ * When the service has no `requestDispatch` (test fakes that don't
313
+ * exercise admission), default-grant.
314
+ *
315
+ * On request error or release wait timeout, fail-closed with a
316
+ * synthetic deny verdict. The lease (if minted server-side) ages
317
+ * out via the post-grant TTL or LeaseRegistry's
318
+ * abandon-on-disconnect path; nothing here re-issues.
319
+ */
217
320
  dispatchAdmission(work) {
218
- if (!this.service.authorizeDispatch) {
321
+ if (!this.service.requestDispatch) {
219
322
  return Effect.succeed({ _tag: "grant" });
220
323
  }
221
- return Effect.suspend(() => this.service.authorizeDispatch({
222
- message: work.message,
324
+ return Effect.suspend(() => this.service.requestDispatch({
223
325
  conversationId: work.message.conversationId,
326
+ messageId: work.message.id,
224
327
  senderAgentId: work.message.senderId,
328
+ parts: work.message.parts,
225
329
  attempt: work.attempt,
226
330
  receivedAt: new Date(work.receivedAtMs).toISOString(),
227
331
  clock: work.clock,
228
332
  pending: this.pendingDispatchSnapshot(work),
229
- })).pipe(Effect.tap((decision) => Effect.sync(() => {
230
- if (decision._tag === "grant") {
231
- this.logger.info({
232
- messageId: work.message.id,
233
- conversationId: work.message.conversationId,
234
- attempt: work.attempt,
235
- leaseId: decision.leaseId,
236
- leaseTimeoutMs: decision.leaseTimeoutMs,
237
- dispatchMessageId: decision.dispatchMessageId,
238
- }, "MoltZapChannelCore: dispatch admission granted");
239
- }
240
- })), Effect.timeoutFail({
333
+ })).pipe(
334
+ // Total deadline for the admission round-trip (ack + release).
335
+ // Hangs in the underlying RPC fall through to the fail-closed
336
+ // branch below; the request itself does not race the ack/release
337
+ // timeouts independently.
338
+ Effect.timeoutFail({
241
339
  duration: Duration.millis(this.dispatchAdmissionTimeoutMs),
242
- onTimeout: () => new Error(`dispatch admission timed out after ${this.dispatchAdmissionTimeoutMs}ms`),
243
- }), Effect.catchAll((err) => Effect.sync(() => {
340
+ onTimeout: () => new Error(`dispatch request timed out after ${this.dispatchAdmissionTimeoutMs}ms`),
341
+ }), Effect.flatMap(({ leaseId }) => this.awaitDispatchRelease(work, leaseId)), Effect.catchAll((err) => Effect.sync(() => {
244
342
  this.logger.warn({
245
343
  messageId: work.message.id,
246
344
  conversationId: work.message.conversationId,
@@ -253,6 +351,76 @@ export class MoltZapChannelCore {
253
351
  };
254
352
  })));
255
353
  }
354
+ /**
355
+ * Wait for the verdict on `leaseId`. Consumes any buffered
356
+ * `dispatchRelease` first; otherwise registers a parking Deferred
357
+ * and bounded-waits for the `recordDispatchRelease` event handler
358
+ * to settle it. The wait timeout matches today's
359
+ * `dispatchAdmissionTimeoutMs` (default 30 s).
360
+ */
361
+ awaitDispatchRelease(work, leaseId) {
362
+ return Effect.gen(this, function* () {
363
+ const buffered = this.consumeDispatchRelease(leaseId);
364
+ if (buffered) {
365
+ return this.projectVerdict(work, leaseId, buffered.verdict);
366
+ }
367
+ const deferred = yield* Deferred.make();
368
+ this.pendingDispatchesByLease.set(leaseId, deferred);
369
+ // `ensuring` (not `tap`) guarantees the entry is removed even on
370
+ // interrupt — without it, a fiber interruption (consumer fiber
371
+ // teardown on `disconnect`) would orphan the Deferred + leak the
372
+ // lease entry until process exit.
373
+ const settled = yield* Deferred.await(deferred).pipe(Effect.timeoutOption(Duration.millis(this.dispatchAdmissionTimeoutMs)), Effect.ensuring(Effect.sync(() => {
374
+ this.pendingDispatchesByLease.delete(leaseId);
375
+ })));
376
+ if (settled._tag === "None") {
377
+ this.logger.warn({
378
+ messageId: work.message.id,
379
+ conversationId: work.message.conversationId,
380
+ leaseId,
381
+ timeoutMs: this.dispatchAdmissionTimeoutMs,
382
+ }, "MoltZapChannelCore: dispatchRelease wait timed out — fail-closed deny");
383
+ return {
384
+ _tag: "deny",
385
+ reason: "dispatch release wait timed out",
386
+ };
387
+ }
388
+ return this.projectVerdict(work, leaseId, settled.value.verdict);
389
+ });
390
+ }
391
+ projectVerdict(work, leaseId, verdict) {
392
+ if (verdict.decision === "grant") {
393
+ this.logger.info({
394
+ messageId: work.message.id,
395
+ conversationId: work.message.conversationId,
396
+ attempt: work.attempt,
397
+ leaseId,
398
+ leaseTimeoutMs: verdict.leaseTimeoutMs,
399
+ dispatchMessageId: verdict.dispatchMessageId,
400
+ }, "MoltZapChannelCore: dispatch admission granted");
401
+ const grant = {
402
+ _tag: "grant",
403
+ leaseId: verdict.leaseId ?? leaseId,
404
+ ...(verdict.leaseTimeoutMs !== undefined
405
+ ? { leaseTimeoutMs: verdict.leaseTimeoutMs }
406
+ : {}),
407
+ ...(verdict.dispatchMessageId
408
+ ? { dispatchMessageId: verdict.dispatchMessageId }
409
+ : {}),
410
+ };
411
+ return grant;
412
+ }
413
+ if (verdict.decision === "deny") {
414
+ return {
415
+ _tag: "deny",
416
+ ...(verdict.reason !== undefined ? { reason: verdict.reason } : {}),
417
+ };
418
+ }
419
+ return {
420
+ _tag: "hold",
421
+ ...(verdict.reason !== undefined ? { reason: verdict.reason } : {}),
422
+ };
423
+ }
256
424
  dispatchInboundWork(work) {
257
425
  return Effect.gen(this, function* () {
258
426
  const current = this.takeDispatchCandidate(work);
@@ -266,7 +434,7 @@ export class MoltZapChannelCore {
266
434
  }
267
435
  const decision = yield* this.dispatchAdmission(current);
268
436
  if (decision._tag === "grant") {
269
- const messages = this.service.authorizeDispatch
437
+ const messages = this.service.requestDispatch
270
438
  ? yield* this.takeCoalescedConversationMessages(current, decision.dispatchMessageId)
271
439
  : [current.message];
272
440
  if (messages.length === 0) {
@@ -288,11 +456,11 @@ export class MoltZapChannelCore {
288
456
  coalescedMessageCount: messages.length,
289
457
  }, "MoltZapChannelCore: inbound dispatch starting"));
290
458
  const dispatch = Effect.acquireUseRelease(Effect.sync(() => {
291
- const previous = this.activeDispatchLeaseId;
292
- this.activeDispatchLeaseId = decision.leaseId;
459
+ const previous = this.leaseIdInFlight;
460
+ this.leaseIdInFlight = decision.leaseId;
293
461
  return previous;
294
462
  }), () => this.dispatchInboundEffect(messages), (previous) => Effect.sync(() => {
295
- this.activeDispatchLeaseId = previous;
463
+ this.leaseIdInFlight = previous;
296
464
  }));
297
465
  const timeoutMs = decision.leaseId
298
466
  ? (decision.leaseTimeoutMs ?? DEFAULT_DISPATCH_LEASE_TIMEOUT_MS)
@@ -489,8 +657,8 @@ export class MoltZapChannelCore {
489
657
  if (!this.inboundHandler)
490
658
  return;
491
659
  const { enriched, commitContext } = yield* MoltZapChannelCore.enrichMessage(this.service, messages);
492
- const leased = this.activeDispatchLeaseId !== undefined
493
- ? { ...enriched, dispatchLeaseId: this.activeDispatchLeaseId }
660
+ const leased = this.leaseIdInFlight !== undefined
661
+ ? { ...enriched, dispatchLeaseId: this.leaseIdInFlight }
494
662
  : enriched;
495
663
  // The handler is user code returning an Effect — yield it directly so
496
664
  // its typed error channel propagates to the consumer fiber, which logs
@@ -1 +1 @@
1
- {"version":3,"file":"channel-core.js","sourceRoot":"","sources":["../src/channel-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channel-core.js","sourceRoot":"","sources":["../src/channel-core.ts"],"names":[],"mappings":"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"}