@moltzap/client 2026.518.0 → 2026.519.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 (84) hide show
  1. package/dist/channel-base/format-cross-conv.d.ts +43 -0
  2. package/dist/channel-base/format-cross-conv.d.ts.map +1 -0
  3. package/dist/channel-base/format-cross-conv.js +69 -0
  4. package/dist/channel-base/format-cross-conv.js.map +1 -0
  5. package/dist/channel-base/format-group-block.d.ts +43 -0
  6. package/dist/channel-base/format-group-block.d.ts.map +1 -0
  7. package/dist/channel-base/format-group-block.js +59 -0
  8. package/dist/channel-base/format-group-block.js.map +1 -0
  9. package/dist/channel-base/index.d.ts +21 -0
  10. package/dist/channel-base/index.d.ts.map +1 -0
  11. package/dist/channel-base/index.js +24 -0
  12. package/dist/channel-base/index.js.map +1 -0
  13. package/dist/channel-base/lease-guard.d.ts +30 -0
  14. package/dist/channel-base/lease-guard.d.ts.map +1 -0
  15. package/dist/channel-base/lease-guard.js +40 -0
  16. package/dist/channel-base/lease-guard.js.map +1 -0
  17. package/dist/channel-base/lease-store.d.ts +30 -0
  18. package/dist/channel-base/lease-store.d.ts.map +1 -0
  19. package/dist/channel-base/lease-store.js +58 -0
  20. package/dist/channel-base/lease-store.js.map +1 -0
  21. package/dist/channel-base/lease.d.ts +94 -0
  22. package/dist/channel-base/lease.d.ts.map +1 -0
  23. package/dist/channel-base/lease.js +110 -0
  24. package/dist/channel-base/lease.js.map +1 -0
  25. package/dist/index.d.ts +1 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +4 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/notification/__tests__/filter-equivalence.test.d.ts +2 -0
  30. package/dist/notification/__tests__/filter-equivalence.test.d.ts.map +1 -0
  31. package/dist/notification/__tests__/filter-equivalence.test.js +123 -0
  32. package/dist/notification/__tests__/filter-equivalence.test.js.map +1 -0
  33. package/dist/notification/__tests__/snapshot-semantics.test.d.ts +2 -0
  34. package/dist/notification/__tests__/snapshot-semantics.test.d.ts.map +1 -0
  35. package/dist/notification/__tests__/snapshot-semantics.test.js +261 -0
  36. package/dist/notification/__tests__/snapshot-semantics.test.js.map +1 -0
  37. package/dist/notification/__tests__/snapshot-semantics.types-check.d.ts +3 -0
  38. package/dist/notification/__tests__/snapshot-semantics.types-check.d.ts.map +1 -0
  39. package/dist/notification/__tests__/snapshot-semantics.types-check.js +62 -0
  40. package/dist/notification/__tests__/snapshot-semantics.types-check.js.map +1 -0
  41. package/dist/notification/errors.d.ts +27 -0
  42. package/dist/notification/errors.d.ts.map +1 -0
  43. package/dist/notification/errors.js +24 -0
  44. package/dist/notification/errors.js.map +1 -0
  45. package/dist/notification/stream.d.ts +84 -0
  46. package/dist/notification/stream.d.ts.map +1 -0
  47. package/dist/notification/stream.js +106 -0
  48. package/dist/notification/stream.js.map +1 -0
  49. package/dist/runtime/index.d.ts +3 -4
  50. package/dist/runtime/index.d.ts.map +1 -1
  51. package/dist/runtime/index.js +3 -3
  52. package/dist/runtime/service-teardown.d.ts +5 -0
  53. package/dist/runtime/service-teardown.d.ts.map +1 -0
  54. package/dist/runtime/service-teardown.js +36 -0
  55. package/dist/runtime/service-teardown.js.map +1 -0
  56. package/dist/runtime/service-teardown.test.d.ts +2 -0
  57. package/dist/runtime/service-teardown.test.d.ts.map +1 -0
  58. package/dist/runtime/service-teardown.test.js +80 -0
  59. package/dist/runtime/service-teardown.test.js.map +1 -0
  60. package/dist/runtime/subscribers.d.ts +74 -136
  61. package/dist/runtime/subscribers.d.ts.map +1 -1
  62. package/dist/runtime/subscribers.js +187 -93
  63. package/dist/runtime/subscribers.js.map +1 -1
  64. package/dist/service.d.ts +10 -0
  65. package/dist/service.d.ts.map +1 -1
  66. package/dist/service.js +45 -12
  67. package/dist/service.js.map +1 -1
  68. package/dist/test-utils/conformance-adapter.d.ts +6 -16
  69. package/dist/test-utils/conformance-adapter.d.ts.map +1 -1
  70. package/dist/test-utils/conformance-adapter.js +100 -59
  71. package/dist/test-utils/conformance-adapter.js.map +1 -1
  72. package/dist/ws-client-test-support.d.ts +1 -1
  73. package/dist/ws-client-test-support.d.ts.map +1 -1
  74. package/dist/ws-client-test-support.js +24 -3
  75. package/dist/ws-client-test-support.js.map +1 -1
  76. package/dist/ws-client.d.ts +52 -54
  77. package/dist/ws-client.d.ts.map +1 -1
  78. package/dist/ws-client.js +40 -168
  79. package/dist/ws-client.js.map +1 -1
  80. package/package.json +7 -3
  81. package/dist/runtime/subscribers.test.d.ts +0 -2
  82. package/dist/runtime/subscribers.test.d.ts.map +0 -1
  83. package/dist/runtime/subscribers.test.js +0 -193
  84. package/dist/runtime/subscribers.test.js.map +0 -1
package/dist/ws-client.js CHANGED
@@ -1,10 +1,12 @@
1
+ /* eslint-disable jsdoc/text-escaping -- JSDoc references to generic types use natural angle-bracket form (TS source style) inside backtick code spans; matches filter-equivalence.test.ts precedent. */
1
2
  import * as Socket from "@effect/platform/Socket";
2
3
  import * as NodeSocket from "@effect/platform-node/NodeSocket";
3
- import { Data, Deferred, Duration, Either, Effect, Exit, Fiber, HashMap, ManagedRuntime, Option, Queue, Ref, Schedule, Scope, } from "effect";
4
+ import { Data, Deferred, Duration, Either, Effect, Exit, Fiber, HashMap, ManagedRuntime, Option, Queue, Ref, Schedule, Scope, Stream, } from "effect";
4
5
  import { PROTOCOL_VERSION, Connect, encodeErrorResponse, makeJsonRpcClient, makeJsonRpcServer, NotConnectedError, RpcTimeoutError, } from "@moltzap/protocol";
5
6
  import { DuplicateServerRpcHandlerError } from "./runtime/errors.js";
6
7
  import { decodeFrames } from "./runtime/frame.js";
7
8
  import { makeSubscriberRegistry, } from "./runtime/subscribers.js";
9
+ import { subscribe as subscribeStream, subscribeAll as subscribeAllStream, } from "./notification/stream.js";
8
10
  import { extractCloseInfo } from "./runtime/close-info.js";
9
11
  /**
10
12
  * Default per-RPC timeout. Exported so tests driving `TestClock` can match
@@ -16,7 +18,6 @@ const BASE_RECONNECT_DELAY_MS = 1000;
16
18
  const MAX_RECONNECT_DELAY_MS = 30_000;
17
19
  const RECONNECT_BACKOFF_FACTOR = 2;
18
20
  const NORMAL_CLOSE_CODE = 1000;
19
- const EVENT_WAIT_TIMEOUT_MS = 5000;
20
21
  const WEB_SOCKET_OPEN_TIMEOUT_SECONDS = 10;
21
22
  const MALFORMED_FRAME_PREVIEW_CHARS = 200;
22
23
  /**
@@ -25,12 +26,6 @@ const MALFORMED_FRAME_PREVIEW_CHARS = 200;
25
26
  */
26
27
  const MALFORMED_LOG_EVERY = 50;
27
28
  export const shouldLogMalformedFrame = (count) => count === 1 || count % MALFORMED_LOG_EVERY === 0;
28
- /**
29
- * Cap on the per-client notification buffer. Any frame that has no live
30
- * `waitForNotification` awaiter lands here until someone drains it. Excess
31
- * frames are evicted FIFO so a slow consumer can't leak memory.
32
- */
33
- const MAX_EVENT_BUFFER = 1000;
34
29
  /**
35
30
  * Capacity of the per-connection task-callback executor queue. Sized at
36
31
  * 8192 to preserve the pre-cutover burst envelope (256 partitions × 32
@@ -48,25 +43,6 @@ const UTF8_DECODER = new TextDecoder("utf-8");
48
43
  const makeNotConnectedError = () => new NotConnectedError({ message: MSG_NOT_CONNECTED });
49
44
  class ReconnectAttemptFailedError extends Data.TaggedError("ReconnectAttemptFailedError") {
50
45
  }
51
- /**
52
- * Notifications are pre-validated by the wire decoder
53
- * (`decodeNotification` in `@moltzap/protocol`) — fail-close on unknown
54
- * methods or bad params. Buffer + waiters hold the validated shape
55
- * directly; no separate Raw|Unknown lift remains.
56
- */
57
- function acceptTypedNotification(definition, notification) {
58
- return notification.definition === definition;
59
- }
60
- /** Drop `waiter` from its notification-definition bucket, pruning an empty bucket. */
61
- function removeWaiter(m, definition, waiter) {
62
- const bucket = HashMap.get(m, definition);
63
- if (bucket._tag === "None")
64
- return m;
65
- const filtered = bucket.value.filter((w) => w !== waiter);
66
- return filtered.length === 0
67
- ? HashMap.remove(m, definition)
68
- : HashMap.set(m, definition, filtered);
69
- }
70
46
  /**
71
47
  * WebSocket lifecycle: open → network/connect → active. On disconnect,
72
48
  * exponential backoff (1s base, 30s cap, jittered) retries the handshake via
@@ -78,23 +54,21 @@ function removeWaiter(m, definition, waiter) {
78
54
  * `@effect/platform-node/NodeSocket.layerWebSocketConstructor`. The Node
79
55
  * `WebSocketConstructor` layer is provided internally via `ManagedRuntime`
80
56
  * so callers' `connect()` / `sendRpc()` Effects have no extra requirement.
57
+ *
58
+ * Notification consumption (spec #596 / Spec B): use `subscribe(def, refinement?)`
59
+ * for typed payload Streams; `subscribeAll(refinement?)` for the broad-union
60
+ * escape hatch. Both return `Stream.Stream` of `DecodedNotification` with a `NotConnectedError` error channel.
61
+ * Consume via `Stream.runForEach` (long-lived) or `Stream.runHead` + `Effect.timeoutFail`
62
+ * (one-shot).
81
63
  */
82
64
  export class MoltZapWsClient {
83
65
  options;
84
66
  stateRef;
85
67
  malformedRef;
86
- notificationsBufferRef;
87
- /**
88
- * Waiters keyed by notification descriptor identity. Each bucket is a FIFO
89
- * stack: delivery pops the most recently registered waiter (the tail).
90
- */
91
- notificationWaitersRef;
92
68
  runtime;
93
69
  /**
94
- * Per-subscription notification registry. Spec #222 §5.3 (C4 + the
95
- * `RealClientEventSubscriber.subscribe` filter stub). Constructed
96
- * synchronously alongside the other Refs; `MoltZapWsClient.subscribe`
97
- * delegates to it directly.
70
+ * Per-subscription notification registry. Spec #596 / Spec B: callback-based
71
+ * storage feeds `Stream.async` consumers via `notification/stream.ts`.
98
72
  */
99
73
  subscribers;
100
74
  /**
@@ -112,8 +86,6 @@ export class MoltZapWsClient {
112
86
  this.runtime = ManagedRuntime.make(NodeSocket.layerWebSocketConstructor);
113
87
  this.stateRef = this.runtime.runSync(Ref.make(Option.none()));
114
88
  this.malformedRef = this.runtime.runSync(Ref.make(0));
115
- this.notificationsBufferRef = this.runtime.runSync(Ref.make([]));
116
- this.notificationWaitersRef = this.runtime.runSync(Ref.make(HashMap.empty()));
117
89
  // Registry construction is `Effect<…, never>`; running it sync here
118
90
  // matches every other Ref initializer in this constructor and
119
91
  // keeps `subscribers` non-nullable inside the class.
@@ -123,7 +95,7 @@ export class MoltZapWsClient {
123
95
  /**
124
96
  * Register a handler for a server-initiated RPC method. Survives
125
97
  * reconnects — the registry lives on the client, not the per-connection
126
- * `ConnState`. Returns `Effect&lt;void>` that fails with
98
+ * `ConnState`. Returns `Effect<void>` that fails with
127
99
  * `DuplicateServerRpcHandlerError` if a handler for `method` is already
128
100
  * registered (shadowing the existing one would silently swap behaviour
129
101
  * mid-flight).
@@ -181,25 +153,23 @@ export class MoltZapWsClient {
181
153
  const timeoutMs = opts?.timeoutMs ?? RPC_TIMEOUT_MS;
182
154
  return this.sendRpcEffect(definition, params, timeoutMs);
183
155
  }
156
+ subscribe(definition,
157
+ // eslint-disable-next-line agent-code-guard/no-conditional-chaining -- optional refinement is a value-level passthrough to the Stream factory; not a refinement-of-discriminant decision
158
+ refinement) {
159
+ return subscribeStream(this.subscribers, definition, refinement);
160
+ }
184
161
  /**
185
- * Register a per-subscription notification handler. Spec #222 §5.3 + OQ-2
186
- * (A): filter grammar is the three-field `SubscriptionFilter`
187
- * (`emissionTag` / `conversationId` / `notificationNamePrefix`). Returns a
188
- * handle whose `unsubscribe` Effect drops delivery starting with the
189
- * next inbound frame (OQ-3 A snapshot semantics).
162
+ * Broad-union escape hatch (spec #596 Goal #2). Returns a Stream of every
163
+ * inbound notification regardless of definition. Payload narrowing is
164
+ * intentionally lost — callers wanting typed payloads use `subscribe`.
190
165
  *
191
- * Subscription is legal pre-`connect()`; the registry buffers
192
- * registrations and starts dispatching once the reader fiber begins
193
- * producing frames. Fails with `NotConnectedError` only if the client
194
- * has been permanently torn down via `close()`.
166
+ * The only intended in-tree consumer is `MoltZapService.connect`'s
167
+ * service-wide notification fanout.
195
168
  */
196
- subscribe(filter, handler) {
197
- return Effect.suspend(() => {
198
- if (this.closed) {
199
- return Effect.fail(makeNotConnectedError());
200
- }
201
- return this.subscribers.register(filter, handler);
202
- });
169
+ subscribeAll(
170
+ // eslint-disable-next-line agent-code-guard/no-conditional-chaining -- optional refinement is a value-level passthrough to the Stream factory; not a refinement-of-discriminant decision
171
+ refinement) {
172
+ return subscribeAllStream(this.subscribers, refinement);
203
173
  }
204
174
  /**
205
175
  * Close the socket permanently (no reconnection). Writes a clean WebSocket
@@ -220,9 +190,12 @@ export class MoltZapWsClient {
220
190
  yield* Effect.forkDaemon(Fiber.interrupt(f));
221
191
  }
222
192
  yield* this.failAllPending(MSG_NOT_CONNECTED);
223
- yield* this.failAllNotificationWaiters(MSG_NOT_CONNECTED);
224
193
  // Drop every live subscription so handlers stop firing once
225
- // the client is permanently torn down. Idempotent.
194
+ // the client is permanently torn down. The registry invokes each
195
+ // sub's `onClose(new NotConnectedError(...))` callback, which fires
196
+ // `emit.fail` on the corresponding consumer Stream. Subsumes the
197
+ // deleted `failAllNotificationWaiters` semantic (spec #596 §3.2 +
198
+ // §"Stream lifecycle contract" row 5).
226
199
  yield* this.subscribers.closeAll;
227
200
  const state = yield* Ref.getAndSet(this.stateRef, Option.none());
228
201
  if (Option.isSome(state)) {
@@ -247,72 +220,6 @@ export class MoltZapWsClient {
247
220
  this.runtime.dispose();
248
221
  })));
249
222
  }
250
- /**
251
- * Wait for the next inbound notification matching `definition`.
252
- * Consumes a buffered match if present; otherwise awaits the next match
253
- * with a per-call timeout.
254
- */
255
- waitForNotification(definition, timeoutMs = EVENT_WAIT_TIMEOUT_MS) {
256
- return Effect.gen(this, function* () {
257
- const buffered = yield* this.takeBufferedNotification(definition);
258
- if (buffered !== null)
259
- return buffered;
260
- return yield* this.awaitNotification(definition, timeoutMs);
261
- });
262
- }
263
- takeBufferedNotification(definition) {
264
- return Ref.modify(this.notificationsBufferRef, (frames) => {
265
- for (const [idx, frame] of frames.entries()) {
266
- if (!acceptTypedNotification(definition, frame))
267
- continue;
268
- const next = [...frames.slice(0, idx), ...frames.slice(idx + 1)];
269
- return [frame, next];
270
- }
271
- return [null, frames];
272
- });
273
- }
274
- awaitNotification(definition, timeoutMs) {
275
- return Effect.gen(this, function* () {
276
- const deferred = yield* Deferred.make();
277
- const waiter = this.makeNotificationWaiter(definition, deferred);
278
- yield* this.addNotificationWaiter(definition, waiter);
279
- return yield* Deferred.await(deferred).pipe(Effect.timeoutFail({
280
- duration: `${timeoutMs} millis`,
281
- onTimeout: () => new Error(`Timeout waiting for notification: ${definition.name}`),
282
- }), Effect.onExit((exit) => Exit.isFailure(exit)
283
- ? this.removeNotificationWaiter(definition, waiter)
284
- : Effect.void));
285
- });
286
- }
287
- makeNotificationWaiter(definition, deferred) {
288
- return {
289
- definition,
290
- complete: (notification) => acceptTypedNotification(definition, notification)
291
- ? Deferred.succeed(deferred, notification).pipe(Effect.asVoid)
292
- : Effect.void,
293
- fail: (error) => Deferred.fail(deferred, error).pipe(Effect.asVoid),
294
- };
295
- }
296
- addNotificationWaiter(definition, waiter) {
297
- return Ref.update(this.notificationWaitersRef, (m) => {
298
- const existing = HashMap.get(m, definition);
299
- const next = existing._tag === "Some" ? [...existing.value, waiter] : [waiter];
300
- return HashMap.set(m, definition, next);
301
- });
302
- }
303
- removeNotificationWaiter(definition, waiter) {
304
- return Ref.update(this.notificationWaitersRef, (m) => removeWaiter(m, definition, waiter));
305
- }
306
- /**
307
- * Return all buffered notifications and clear the buffer. Synchronous.
308
- * Frames are pre-validation (`params: unknown`) — buffer holds the
309
- * raw shape produced by the wire decoder.
310
- */
311
- drainNotifications() {
312
- const snapshot = this.runtime.runSync(Ref.get(this.notificationsBufferRef));
313
- this.runtime.runSync(Ref.set(this.notificationsBufferRef, []));
314
- return [...snapshot];
315
- }
316
223
  /** Close the socket without marking as permanently closed, triggering reconnection. */
317
224
  disconnect() {
318
225
  return Effect.sync(() => this.disconnectSync());
@@ -522,39 +429,15 @@ export class MoltZapWsClient {
522
429
  }
523
430
  });
524
431
  }
525
- takeNotificationWaiter(decoded) {
526
- return Ref.modify(this.notificationWaitersRef, (waitersMap) => {
527
- const bucket = HashMap.get(waitersMap, decoded.definition);
528
- if (bucket._tag === "None" || bucket.value.length === 0) {
529
- return [null, waitersMap];
530
- }
531
- const arr = bucket.value;
532
- const chosen = arr[arr.length - 1];
533
- const rest = arr.slice(0, -1);
534
- const nextMap = rest.length === 0
535
- ? HashMap.remove(waitersMap, decoded.definition)
536
- : HashMap.set(waitersMap, decoded.definition, rest);
537
- return [chosen, nextMap];
538
- });
539
- }
540
- bufferNotification(decoded) {
541
- return Ref.update(this.notificationsBufferRef, (buffer) => {
542
- const appended = [...buffer, decoded];
543
- return appended.length > MAX_EVENT_BUFFER
544
- ? appended.slice(-MAX_EVENT_BUFFER)
545
- : appended;
546
- });
547
- }
432
+ /**
433
+ * Inbound notification routing. Spec #596 / Spec B: dispatch fans out
434
+ * through the registry's stored `onFrame` callbacks into each
435
+ * subscription's `Stream.async` source. The pre-arrival buffer and
436
+ * waiter-pop branches were deleted in Spec B (no top-level waiter, no
437
+ * `notificationsBufferRef`).
438
+ */
548
439
  handleDecodedNotification(decoded) {
549
- return Effect.gen(this, function* () {
550
- yield* this.subscribers.dispatch(decoded);
551
- const delivered = yield* this.takeNotificationWaiter(decoded);
552
- if (delivered !== null) {
553
- yield* delivered.complete(decoded);
554
- return;
555
- }
556
- yield* this.bufferNotification(decoded);
557
- });
440
+ return this.subscribers.dispatch(decoded);
558
441
  }
559
442
  handleDecodedFrame(decoded) {
560
443
  switch (decoded._tag) {
@@ -569,7 +452,7 @@ export class MoltZapWsClient {
569
452
  }
570
453
  /**
571
454
  * Route an inbound frame. Malformed frames are logged + dropped; notification
572
- * frames dispatch to `onNotification` after the shape check.
455
+ * frames fan out through the per-subscription registry (Spec B).
573
456
  */
574
457
  handleIncoming(raw) {
575
458
  return Effect.gen(this, function* () {
@@ -581,17 +464,6 @@ export class MoltZapWsClient {
581
464
  }
582
465
  });
583
466
  }
584
- /** Fail every outstanding notification waiter with `message` and clear the map. */
585
- failAllNotificationWaiters(message) {
586
- return Effect.gen(this, function* () {
587
- const waiters = yield* Ref.getAndSet(this.notificationWaitersRef, HashMap.empty());
588
- for (const [, bucket] of HashMap.entries(waiters)) {
589
- for (const w of bucket) {
590
- yield* w.fail(new Error(message));
591
- }
592
- }
593
- });
594
- }
595
467
  failConnectionPending(state) {
596
468
  return state.jsonRpcClient.failAllPending(new NotConnectedError({ message: MSG_NOT_CONNECTED }));
597
469
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ws-client.js","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ws-client.js","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moltzap/client",
3
- "version": "2026.518.0",
3
+ "version": "2026.519.1",
4
4
  "description": "MoltZap client service — connection, conversation state, and cross-conversation context",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -32,6 +32,10 @@
32
32
  "./runtime": {
33
33
  "types": "./dist/runtime/index.d.ts",
34
34
  "import": "./dist/runtime/index.js"
35
+ },
36
+ "./channel-base": {
37
+ "types": "./dist/channel-base/index.d.ts",
38
+ "import": "./dist/channel-base/index.js"
35
39
  }
36
40
  },
37
41
  "dependencies": {
@@ -43,7 +47,7 @@
43
47
  "@effect/rpc": "0.75.1",
44
48
  "@effect/typeclass": "0.40.0",
45
49
  "effect": "3.21.2",
46
- "@moltzap/protocol": "2026.518.0"
50
+ "@moltzap/protocol": "2026.519.0"
47
51
  },
48
52
  "devDependencies": {
49
53
  "@effect/vitest": "^0.29.0",
@@ -52,7 +56,7 @@
52
56
  "fast-check": "^4.6.0",
53
57
  "typescript": "^5.7.0",
54
58
  "vitest": "^3.0.0",
55
- "@moltzap/server-core": "2026.518.0"
59
+ "@moltzap/server-core": "2026.519.0"
56
60
  },
57
61
  "scripts": {
58
62
  "build": "tsc",
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=subscribers.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subscribers.test.d.ts","sourceRoot":"","sources":["../../src/runtime/subscribers.test.ts"],"names":[],"mappings":""}
@@ -1,193 +0,0 @@
1
- /**
2
- * Unit tests for the per-subscription event registry.
3
- *
4
- * Spec #222 §5.3 (C4 + the `RealClientEventSubscriber.subscribe` filter
5
- * stub) requires:
6
- * - Every set filter field narrows delivery (AND semantics).
7
- * - Subscriptions fire in registration order.
8
- * - Unsubscribe-during-dispatch is next-frame effective (OQ-3 A
9
- * snapshot semantics).
10
- * - Handler exceptions are caught + logged, not propagated.
11
- *
12
- * Each scenario gets a dedicated test so a mutation that bypasses the
13
- * filter (e.g. force `matchesFilter` to always return `true`) trips the
14
- * filter-narrows tests but leaves order tests passing — the tests
15
- * discriminate.
16
- */
17
- import * as fc from "fast-check";
18
- import { expect, it } from "vitest";
19
- import { Effect, Ref } from "effect";
20
- import { ConversationArchivedNotificationDefinition, } from "@moltzap/protocol";
21
- import { agentId, conversationId, taskId, TaskFailedNotificationDefinition, } from "@moltzap/protocol/testing";
22
- import { makeSubscriberRegistry, matchesFilter } from "./subscribers.js";
23
- const TASK_ID = taskId("11111111-1111-4111-8111-111111111111");
24
- const CONV_1 = conversationId("22222222-2222-4222-8222-222222222222");
25
- const CONV_2 = conversationId("33333333-3333-4333-8333-333333333333");
26
- const AGENT_ID = agentId("44444444-4444-4444-8444-444444444444");
27
- const PROPERTY_RUNS = 25;
28
- const SUBSCRIBER_DEFECT_MESSAGE = "subscriber blew up";
29
- const CONSTRUCTION_THROW_MESSAGE = "construction-time throw";
30
- function pushValue(values, value) {
31
- return Effect.sync(() => {
32
- values.push(value);
33
- });
34
- }
35
- function recordAndMaybeUnsubscribe(calls, frameIdx, unsubscribe) {
36
- return Effect.gen(function* () {
37
- calls.push(frameIdx);
38
- if (frameIdx === 0 && unsubscribe !== null) {
39
- yield* unsubscribe;
40
- }
41
- });
42
- }
43
- function subscriberDefect() {
44
- return Effect.die(new Error(SUBSCRIBER_DEFECT_MESSAGE));
45
- }
46
- function constructionThrow() {
47
- throw new Error(CONSTRUCTION_THROW_MESSAGE);
48
- }
49
- function increment(value) {
50
- return value + 1;
51
- }
52
- const filterableNotification = (method, params) => ({
53
- method,
54
- params,
55
- });
56
- const decodedNotification = (definition, params) => {
57
- // Construct a DecodedNotification<D> directly from the typed
58
- // descriptor + params — bypassing the wire decoder is intentional
59
- // for test fixtures so the result type stays narrow to D rather than
60
- // collapsing to the group's union.
61
- const frame = definition.encode(params);
62
- return {
63
- _tag: "Notification",
64
- jsonrpc: frame.jsonrpc,
65
- definition,
66
- method: definition.name,
67
- params,
68
- };
69
- };
70
- const taskFailedNotification = () => decodedNotification(TaskFailedNotificationDefinition, {
71
- taskId: TASK_ID,
72
- });
73
- const conversationArchivedNotification = (conv) => decodedNotification(ConversationArchivedNotificationDefinition, {
74
- conversationId: conv,
75
- archivedAt: "2026-05-03T00:00:00Z",
76
- by: AGENT_ID,
77
- });
78
- it("property: notificationNamePrefix follows string startsWith", () => {
79
- expect.hasAssertions();
80
- fc.assert(fc.property(fc.string(), fc.string(), (method, prefix) => {
81
- expect(matchesFilter({ notificationNamePrefix: prefix }, filterableNotification(method, {}))).toBe(method.startsWith(prefix));
82
- }), { numRuns: PROPERTY_RUNS });
83
- });
84
- it("empty filter matches every frame", () => {
85
- expect(matchesFilter({}, filterableNotification("any", { x: 1 }))).toBe(true);
86
- });
87
- it("emissionTag matches on `__emissionTag` key", () => {
88
- const frame = filterableNotification("e", { __emissionTag: "tag-1" });
89
- expect(matchesFilter({ emissionTag: "tag-1" }, frame)).toBe(true);
90
- expect(matchesFilter({ emissionTag: "tag-other" }, frame)).toBe(false);
91
- });
92
- it("conversationId matches on `conversationId` key", () => {
93
- const frame = filterableNotification("e", { conversationId: "c-1" });
94
- expect(matchesFilter({ conversationId: "c-1" }, frame)).toBe(true);
95
- expect(matchesFilter({ conversationId: "c-2" }, frame)).toBe(false);
96
- });
97
- it("notificationNamePrefix uses startsWith", () => {
98
- const frame = filterableNotification("messages/received", {});
99
- expect(matchesFilter({ notificationNamePrefix: "messages/" }, frame)).toBe(true);
100
- expect(matchesFilter({ notificationNamePrefix: "presence/" }, frame)).toBe(false);
101
- });
102
- it("AND semantics: all set fields must match", () => {
103
- const frame = filterableNotification("messages/received", {
104
- __emissionTag: "tag-1",
105
- conversationId: "c-1",
106
- });
107
- expect(matchesFilter({
108
- emissionTag: "tag-1",
109
- conversationId: "c-1",
110
- notificationNamePrefix: "m",
111
- }, frame)).toBe(true);
112
- expect(matchesFilter({ emissionTag: "tag-1", conversationId: "c-other" }, frame)).toBe(false);
113
- });
114
- it("non-record `params` cannot satisfy payload-key filters", () => {
115
- const stringData = filterableNotification("e", "string-payload");
116
- expect(matchesFilter({ emissionTag: "x" }, stringData)).toBe(false);
117
- expect(matchesFilter({ conversationId: "x" }, stringData)).toBe(false);
118
- expect(matchesFilter({ notificationNamePrefix: "e" }, stringData)).toBe(true);
119
- });
120
- it("dispatches in registration order", () => Effect.runPromise(Effect.gen(function* () {
121
- const registry = yield* makeSubscriberRegistry();
122
- const order = [];
123
- yield* registry.register({}, () => pushValue(order, "a"));
124
- yield* registry.register({}, () => pushValue(order, "b"));
125
- yield* registry.dispatch(taskFailedNotification());
126
- expect(order).toEqual(["a", "b"]);
127
- })));
128
- it("unsubscribe stops delivery for the next frame", () => Effect.runPromise(Effect.gen(function* () {
129
- const registry = yield* makeSubscriberRegistry();
130
- const aCalls = [];
131
- const bCalls = [];
132
- let frameIdx = 0;
133
- let unsubA = null;
134
- const handleA = yield* registry.register({}, () => recordAndMaybeUnsubscribe(aCalls, frameIdx, unsubA));
135
- unsubA = handleA.unsubscribe;
136
- yield* registry.register({}, () => pushValue(bCalls, frameIdx));
137
- frameIdx = 0;
138
- yield* registry.dispatch(taskFailedNotification());
139
- frameIdx = 1;
140
- yield* registry.dispatch(taskFailedNotification());
141
- expect(aCalls).toEqual([0]); // a saw frame 0, not frame 1.
142
- expect(bCalls).toEqual([0, 1]); // b saw both — snapshot at start of frame 0 still included a; b is unaffected by a's unsub.
143
- })));
144
- it("filters narrow delivery", () => Effect.runPromise(Effect.gen(function* () {
145
- const registry = yield* makeSubscriberRegistry();
146
- const seenByConv1 = [];
147
- const seenByConv2 = [];
148
- yield* registry.register({ conversationId: CONV_1 }, (frame) => pushValue(seenByConv1, frame));
149
- yield* registry.register({ conversationId: CONV_2 }, (frame) => pushValue(seenByConv2, frame));
150
- yield* registry.dispatch(conversationArchivedNotification(CONV_1));
151
- yield* registry.dispatch(conversationArchivedNotification(CONV_2));
152
- expect(seenByConv1).toHaveLength(1);
153
- expect(seenByConv2).toHaveLength(1);
154
- expect(seenByConv1[0].params.conversationId).toBe(CONV_1);
155
- expect(seenByConv2[0].params.conversationId).toBe(CONV_2);
156
- })));
157
- it("handler exceptions are caught and subsequent subscribers still run", () => Effect.runPromise(Effect.gen(function* () {
158
- const registry = yield* makeSubscriberRegistry();
159
- const otherCalls = [];
160
- yield* registry.register({}, subscriberDefect);
161
- yield* registry.register({}, () => pushValue(otherCalls, 1));
162
- yield* registry.dispatch(taskFailedNotification());
163
- expect(otherCalls).toEqual([1]); // other subscribers still fire.
164
- })));
165
- it("construction-time handler throw is caught", () => Effect.runPromise(Effect.gen(function* () {
166
- const registry = yield* makeSubscriberRegistry();
167
- const otherCalls = [];
168
- yield* registry.register({}, constructionThrow);
169
- yield* registry.register({}, () => pushValue(otherCalls, 1));
170
- yield* registry.dispatch(taskFailedNotification());
171
- expect(otherCalls).toEqual([1]); // subsequent subscribers still fire.
172
- })));
173
- it("closeAll drops every subscription", () => Effect.runPromise(Effect.gen(function* () {
174
- const registry = yield* makeSubscriberRegistry();
175
- const calls = [];
176
- yield* registry.register({}, () => pushValue(calls, 1));
177
- yield* registry.closeAll;
178
- yield* registry.dispatch(taskFailedNotification());
179
- expect(calls).toEqual([]);
180
- })));
181
- it("Ref-make composition works inside an Effect.gen", () => Effect.runPromise(
182
- // Smoke test that the Effect surface composes; the registry never
183
- // resolves with `never` failure tag, so this can't catch
184
- // typechecker drift, but it does pin behaviour.
185
- Effect.gen(function* () {
186
- const registry = yield* makeSubscriberRegistry();
187
- const counter = yield* Ref.make(0);
188
- yield* registry.register({}, () => Ref.update(counter, increment));
189
- yield* registry.dispatch(taskFailedNotification());
190
- const result = yield* Ref.get(counter);
191
- expect(result).toBe(1);
192
- })));
193
- //# sourceMappingURL=subscribers.test.js.map