@moltzap/client 2026.430.1 → 2026.501.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/channel-core.test.js +4 -5
- package/dist/channel-core.test.js.map +1 -1
- package/dist/runtime/errors.d.ts +13 -0
- package/dist/runtime/errors.d.ts.map +1 -1
- package/dist/runtime/errors.js +10 -0
- package/dist/runtime/errors.js.map +1 -1
- package/dist/runtime/frame.d.ts +13 -2
- package/dist/runtime/frame.d.ts.map +1 -1
- package/dist/runtime/frame.js +20 -0
- package/dist/runtime/frame.js.map +1 -1
- package/dist/runtime/frame.test.js +1 -0
- package/dist/runtime/frame.test.js.map +1 -1
- package/dist/test-utils/conformance-adapter.d.ts.map +1 -1
- package/dist/test-utils/conformance-adapter.js +1 -0
- package/dist/test-utils/conformance-adapter.js.map +1 -1
- package/dist/ws-client.d.ts +50 -1
- package/dist/ws-client.d.ts.map +1 -1
- package/dist/ws-client.js +172 -4
- package/dist/ws-client.js.map +1 -1
- package/dist/ws-client.test.js +189 -1
- package/dist/ws-client.test.js.map +1 -1
- package/package.json +3 -3
package/dist/ws-client.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as Socket from "@effect/platform/Socket";
|
|
2
2
|
import * as NodeSocket from "@effect/platform-node/NodeSocket";
|
|
3
|
-
import { Deferred, Duration, Effect, Exit, Fiber, HashMap, ManagedRuntime, Option, Ref, Schedule, Scope, } from "effect";
|
|
4
|
-
import { PROTOCOL_VERSION, } from "@moltzap/protocol";
|
|
5
|
-
import { NotConnectedError, RpcServerError, RpcTimeoutError, } from "./runtime/errors.js";
|
|
3
|
+
import { Cause, Deferred, Duration, Effect, Exit, Fiber, HashMap, ManagedRuntime, Option, Queue, Ref, Schedule, Scope, Stream, } from "effect";
|
|
4
|
+
import { PROTOCOL_VERSION, responseFrame, } from "@moltzap/protocol";
|
|
5
|
+
import { DuplicateServerRpcHandlerError, NotConnectedError, RpcServerError, RpcTimeoutError, } from "./runtime/errors.js";
|
|
6
6
|
import { decodeFrames } from "./runtime/frame.js";
|
|
7
7
|
import { makeSubscriberRegistry, } from "./runtime/subscribers.js";
|
|
8
8
|
import { extractCloseInfo } from "./runtime/close-info.js";
|
|
@@ -28,6 +28,8 @@ const MAX_EVENT_BUFFER = 1000;
|
|
|
28
28
|
const MSG_NOT_CONNECTED = "WebSocket not connected";
|
|
29
29
|
const MSG_RPC_ERROR_FALLBACK = "RPC error";
|
|
30
30
|
const UTF8_DECODER = new TextDecoder("utf-8");
|
|
31
|
+
/** Cap on inbound s2c request queue. Slow handlers cannot leak memory. */
|
|
32
|
+
const MAX_S2C_QUEUE = 256;
|
|
31
33
|
/** Drop `waiter` from its event-name bucket, pruning an empty bucket. */
|
|
32
34
|
function removeWaiter(m, eventName, waiter) {
|
|
33
35
|
const bucket = HashMap.get(m, eventName);
|
|
@@ -71,6 +73,13 @@ export class MoltZapWsClient {
|
|
|
71
73
|
* delegates to it directly.
|
|
72
74
|
*/
|
|
73
75
|
subscribers;
|
|
76
|
+
/**
|
|
77
|
+
* Per-method handler registry for server-initiated RPCs. Survives
|
|
78
|
+
* reconnects so apps register once and re-attach automatically when the
|
|
79
|
+
* socket comes back. Each entry is invoked by the per-connection
|
|
80
|
+
* dispatcher fiber when an s2c request frame arrives.
|
|
81
|
+
*/
|
|
82
|
+
s2cHandlersRef;
|
|
74
83
|
requestCounter = 0;
|
|
75
84
|
closed = false;
|
|
76
85
|
reconnectFiber = null;
|
|
@@ -89,6 +98,32 @@ export class MoltZapWsClient {
|
|
|
89
98
|
this.subscribers = this.runtime.runSync(makeSubscriberRegistry({
|
|
90
99
|
warn: (...args) => this.options.logger?.warn(...args),
|
|
91
100
|
}));
|
|
101
|
+
this.s2cHandlersRef = this.runtime.runSync(Ref.make(HashMap.empty()));
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Register a handler for a server-initiated RPC method. Survives
|
|
105
|
+
* reconnects — the registry lives on the client, not the per-connection
|
|
106
|
+
* `ConnState`. Returns `Effect<void>` that fails with
|
|
107
|
+
* `DuplicateServerRpcHandlerError` if a handler for `method` is already
|
|
108
|
+
* registered (shadowing the existing one would silently swap behaviour
|
|
109
|
+
* mid-flight).
|
|
110
|
+
*
|
|
111
|
+
* The dispatcher fiber forked at `connect()` time picks up handlers via
|
|
112
|
+
* `Ref.get` per-frame, so a registration made BEFORE `connect()` is
|
|
113
|
+
* visible to the very first inbound s2c request, and a registration
|
|
114
|
+
* made AFTER `connect()` takes effect on the next inbound frame.
|
|
115
|
+
*/
|
|
116
|
+
handleServerRpc(method, handler) {
|
|
117
|
+
return Effect.gen(this, function* () {
|
|
118
|
+
const swapped = yield* Ref.modify(this.s2cHandlersRef, (m) => {
|
|
119
|
+
if (HashMap.has(m, method))
|
|
120
|
+
return [false, m];
|
|
121
|
+
return [true, HashMap.set(m, method, handler)];
|
|
122
|
+
});
|
|
123
|
+
if (!swapped) {
|
|
124
|
+
return yield* Effect.fail(new DuplicateServerRpcHandlerError({ method }));
|
|
125
|
+
}
|
|
126
|
+
});
|
|
92
127
|
}
|
|
93
128
|
get helloOk() {
|
|
94
129
|
return this._helloOk;
|
|
@@ -165,6 +200,14 @@ export class MoltZapWsClient {
|
|
|
165
200
|
.write(new Socket.CloseEvent(1000, "normal"))
|
|
166
201
|
.pipe(Effect.orDie);
|
|
167
202
|
yield* Scope.close(state.value.scope, Exit.void);
|
|
203
|
+
// s2c queue + dispatcher are NOT scope-bound (see ConnState
|
|
204
|
+
// doc): tear them down via runFork so this Effect remains
|
|
205
|
+
// sync-runnable for callers using `runSync(client.close())`.
|
|
206
|
+
// Queue.shutdown ends the dispatcher's `Stream.fromQueue`
|
|
207
|
+
// naturally; the explicit `Fiber.interrupt` is belt-and-braces
|
|
208
|
+
// for any handler currently mid-Effect.
|
|
209
|
+
this.runtime.runFork(Queue.shutdown(state.value.s2cInboundQueue));
|
|
210
|
+
this.runtime.runFork(Fiber.interrupt(state.value.s2cDispatcherFiber));
|
|
168
211
|
}
|
|
169
212
|
}).pipe(Effect.asVoid, Effect.ensuring(Effect.sync(() => {
|
|
170
213
|
void this.runtime.dispose();
|
|
@@ -226,6 +269,11 @@ export class MoltZapWsClient {
|
|
|
226
269
|
this.runtime.runFork(Fiber.interrupt(state.value.readerFiber));
|
|
227
270
|
// Close the per-connection scope as a belt-and-braces guarantee.
|
|
228
271
|
this.runtime.runFork(Scope.close(state.value.scope, Exit.void));
|
|
272
|
+
// Tear down the s2c queue + dispatcher (off-scope, see ConnState
|
|
273
|
+
// doc). Both calls are runFork so disconnectSync stays synchronous
|
|
274
|
+
// for callers using `runSync(client.disconnect())`.
|
|
275
|
+
this.runtime.runFork(Queue.shutdown(state.value.s2cInboundQueue));
|
|
276
|
+
this.runtime.runFork(Fiber.interrupt(state.value.s2cDispatcherFiber));
|
|
229
277
|
}
|
|
230
278
|
connectEffect() {
|
|
231
279
|
return Effect.gen(this, function* () {
|
|
@@ -240,6 +288,34 @@ export class MoltZapWsClient {
|
|
|
240
288
|
// Settled first by whichever fires: the auth/connect response, or
|
|
241
289
|
// reader-fiber exit on any close/error before handshake.
|
|
242
290
|
const handshakeSettled = yield* Deferred.make();
|
|
291
|
+
// Inbound s2c request pipeline: the reader fiber `Queue.offer`s
|
|
292
|
+
// every well-formed s2c request frame; a forked dispatcher fiber
|
|
293
|
+
// drains via `Stream.runForEach`, looks up the registered handler,
|
|
294
|
+
// runs it, encodes the response, and writes back. The Queue +
|
|
295
|
+
// Stream pair is the architect's "Stream" — `Stream.fromQueue`
|
|
296
|
+
// produces a totally-ordered stream the dispatcher iterates per
|
|
297
|
+
// `runForEach`, matching the architect plan's "Effect primitives
|
|
298
|
+
// compose" mandate (no bespoke promise pool, no callback registry).
|
|
299
|
+
//
|
|
300
|
+
// The queue and dispatcher fiber are NOT bound to the per-connect
|
|
301
|
+
// `Scope`. `Scope.close` would have to run `Queue.shutdown` and
|
|
302
|
+
// interrupt the dispatcher fiber, both of which yield through the
|
|
303
|
+
// fiber runtime — and `close()` is a documented `runSync` site
|
|
304
|
+
// (see `MoltZapWsClient.close` doc and the `runSync(c.close())`
|
|
305
|
+
// call in
|
|
306
|
+
// `packages/openclaw-channel/src/__tests__/reconnection.integration.test.ts:14`).
|
|
307
|
+
// Instead the queue + dispatcher are torn down via `runFork` in
|
|
308
|
+
// `close()` and `disconnectSync()`, mirroring the reader-fiber
|
|
309
|
+
// ownership pattern (`readerFiber` is `runFork`-owned for the
|
|
310
|
+
// same reason).
|
|
311
|
+
const s2cInboundQueue = yield* Queue.dropping(MAX_S2C_QUEUE);
|
|
312
|
+
const dispatcherEffect = Stream.fromQueue(s2cInboundQueue).pipe(Stream.runForEach((req) => this.dispatchInboundServerRequest(req, write).pipe(Effect.catchAllCause((cause) => Effect.sync(() => this.options.logger?.warn("s2c handler dispatch defected", Cause.pretty(cause)))))), Effect.catchAllCause((cause) =>
|
|
313
|
+
// Queue shutdown closes the stream; that's the expected
|
|
314
|
+
// disconnect path. Other defects log + swallow — the
|
|
315
|
+
// dispatcher fiber must never leak into the connection scope's
|
|
316
|
+
// failure channel.
|
|
317
|
+
Effect.sync(() => this.options.logger?.warn("s2c dispatcher fiber exited", Cause.pretty(cause)))), Effect.asVoid);
|
|
318
|
+
const s2cDispatcherFiber = this.runtime.runFork(dispatcherEffect);
|
|
243
319
|
// Use `onExit` (not `tapErrorCause`) so the clean-close path also
|
|
244
320
|
// triggers pending-drain. `@effect/platform/Socket` treats code 1000
|
|
245
321
|
// as a SUCCESS exit, so error-only handlers miss it and pending RPCs
|
|
@@ -254,7 +330,20 @@ export class MoltZapWsClient {
|
|
|
254
330
|
yield* this.failAllPending(MSG_NOT_CONNECTED);
|
|
255
331
|
// Unblock any `connect()` still awaiting the handshake.
|
|
256
332
|
yield* Deferred.fail(handshakeSettled, new NotConnectedError({ message: MSG_NOT_CONNECTED })).pipe(Effect.ignore);
|
|
333
|
+
// Clear connection state BEFORE the s2c teardown so
|
|
334
|
+
// `sendRpc` and observers see the closed state immediately.
|
|
335
|
+
// Awaiting `Fiber.interrupt` would block this branch on a
|
|
336
|
+
// slow s2c handler still draining (codex P2).
|
|
257
337
|
yield* Ref.set(this.stateRef, Option.none());
|
|
338
|
+
// Tear down the s2c queue + dispatcher on socket-level
|
|
339
|
+
// close (e.g. server-initiated). `close()` /
|
|
340
|
+
// `disconnectSync()` already handle their own teardown for
|
|
341
|
+
// client-initiated paths; this branch covers the case
|
|
342
|
+
// where the server closes us. Forked so a slow handler
|
|
343
|
+
// does not delay the rest of the disconnect path.
|
|
344
|
+
// Idempotent with the explicit teardown in close().
|
|
345
|
+
this.runtime.runFork(Queue.shutdown(s2cInboundQueue));
|
|
346
|
+
this.runtime.runFork(Fiber.interrupt(s2cDispatcherFiber));
|
|
258
347
|
// Spec #222 §5.4 (V7): project the reader-fiber exit onto
|
|
259
348
|
// a typed `CloseInfo` and pass it to `onDisconnect`. Pure
|
|
260
349
|
// total classifier — see runtime/close-info.ts.
|
|
@@ -278,7 +367,14 @@ export class MoltZapWsClient {
|
|
|
278
367
|
const readerFiber = this.runtime.runFork(readerEffect);
|
|
279
368
|
// Publish state BEFORE auth/connect: the write goes through
|
|
280
369
|
// `sendRpcEffect`, which reads `stateRef`.
|
|
281
|
-
yield* Ref.set(this.stateRef, Option.some({
|
|
370
|
+
yield* Ref.set(this.stateRef, Option.some({
|
|
371
|
+
write,
|
|
372
|
+
readerFiber,
|
|
373
|
+
scope,
|
|
374
|
+
handshakeSettled,
|
|
375
|
+
s2cInboundQueue,
|
|
376
|
+
s2cDispatcherFiber,
|
|
377
|
+
}));
|
|
282
378
|
const authEffect = this.sendRpcEffect("auth/connect", {
|
|
283
379
|
agentKey: this.options.agentKey,
|
|
284
380
|
minProtocol: PROTOCOL_VERSION,
|
|
@@ -312,6 +408,7 @@ export class MoltZapWsClient {
|
|
|
312
408
|
const frame = {
|
|
313
409
|
jsonrpc: "2.0",
|
|
314
410
|
type: "request",
|
|
411
|
+
direction: "c2s",
|
|
315
412
|
id,
|
|
316
413
|
method,
|
|
317
414
|
params,
|
|
@@ -364,6 +461,53 @@ export class MoltZapWsClient {
|
|
|
364
461
|
sendRpcEffect(method, params, opts) {
|
|
365
462
|
return this.sendRpcTrackedEffect(method, params, opts).pipe(Effect.map((tracked) => tracked.result));
|
|
366
463
|
}
|
|
464
|
+
/**
|
|
465
|
+
* Dispatch one inbound s2c request to the registered handler, encode
|
|
466
|
+
* the response, and write it back to the server. Errors are projected
|
|
467
|
+
* onto an error response so the server's `Deferred.await` always
|
|
468
|
+
* settles deterministically — never hangs on a missing or crashing
|
|
469
|
+
* handler.
|
|
470
|
+
*
|
|
471
|
+
* Cases:
|
|
472
|
+
* - Handler registered + Effect succeeds → encode `result`.
|
|
473
|
+
* - Handler registered + Effect fails (RpcServerError) → encode
|
|
474
|
+
* `error` from the tag.
|
|
475
|
+
* - Handler registered + Effect defects (untagged crash) →
|
|
476
|
+
* encode generic InternalError, log the cause.
|
|
477
|
+
* - No handler registered → encode MethodNotFound error response.
|
|
478
|
+
*/
|
|
479
|
+
dispatchInboundServerRequest(request, write) {
|
|
480
|
+
return Effect.gen(this, function* () {
|
|
481
|
+
const handlers = yield* Ref.get(this.s2cHandlersRef);
|
|
482
|
+
const lookup = HashMap.get(handlers, request.method);
|
|
483
|
+
const buildReply = lookup._tag === "None"
|
|
484
|
+
? Effect.succeed(responseFrame("s2c", request.id, {
|
|
485
|
+
error: {
|
|
486
|
+
code: -32601,
|
|
487
|
+
message: `No handler registered for method: ${request.method}`,
|
|
488
|
+
},
|
|
489
|
+
}))
|
|
490
|
+
: lookup.value(request.params).pipe(Effect.match({
|
|
491
|
+
onSuccess: (result) => responseFrame("s2c", request.id, {
|
|
492
|
+
result,
|
|
493
|
+
}),
|
|
494
|
+
onFailure: (err) => responseFrame("s2c", request.id, {
|
|
495
|
+
error: {
|
|
496
|
+
code: err.code,
|
|
497
|
+
message: err.message,
|
|
498
|
+
...(err.data !== undefined ? { data: err.data } : {}),
|
|
499
|
+
},
|
|
500
|
+
}),
|
|
501
|
+
}), Effect.catchAllCause((cause) => Effect.sync(() => {
|
|
502
|
+
this.options.logger?.warn(`s2c handler ${request.method} defected`, Cause.pretty(cause));
|
|
503
|
+
return responseFrame("s2c", request.id, {
|
|
504
|
+
error: { code: -32603, message: "Internal error" },
|
|
505
|
+
});
|
|
506
|
+
})));
|
|
507
|
+
const reply = yield* buildReply;
|
|
508
|
+
yield* write(JSON.stringify(reply)).pipe(Effect.catchAll((err) => Effect.sync(() => this.options.logger?.warn("s2c response write failed", err))));
|
|
509
|
+
});
|
|
510
|
+
}
|
|
367
511
|
/** Route an inbound frame. Malformed frames are logged + dropped; event
|
|
368
512
|
* frames dispatch to `onEvent` after the shape check. */
|
|
369
513
|
handleIncoming(raw) {
|
|
@@ -400,6 +544,30 @@ export class MoltZapWsClient {
|
|
|
400
544
|
}
|
|
401
545
|
continue;
|
|
402
546
|
}
|
|
547
|
+
if (decoded._tag === "ServerRequest") {
|
|
548
|
+
// s2c request — hand off to the per-connection dispatcher
|
|
549
|
+
// queue. The dispatcher fiber (forked at `connectEffect` time)
|
|
550
|
+
// runs `Stream.runForEach` over the queue, looks up the
|
|
551
|
+
// handler from `s2cHandlersRef`, runs it, and writes the
|
|
552
|
+
// response back. Decoupling via Queue keeps the reader fiber
|
|
553
|
+
// back-pressure-bounded; the handler runs on the dispatcher
|
|
554
|
+
// fiber instead of stalling subsequent inbound frames.
|
|
555
|
+
const state = yield* Ref.get(this.stateRef);
|
|
556
|
+
if (Option.isNone(state)) {
|
|
557
|
+
// Reader fiber observed a frame without a corresponding
|
|
558
|
+
// ConnState — the only path that reaches here is a frame
|
|
559
|
+
// arriving between scope-close finalization and reader-exit
|
|
560
|
+
// observation. Drop silently: the dispatcher is already
|
|
561
|
+
// gone too.
|
|
562
|
+
continue;
|
|
563
|
+
}
|
|
564
|
+
yield* Queue.offer(state.value.s2cInboundQueue, {
|
|
565
|
+
id: decoded.id,
|
|
566
|
+
method: decoded.method,
|
|
567
|
+
params: decoded.params,
|
|
568
|
+
}).pipe(Effect.ignore);
|
|
569
|
+
continue;
|
|
570
|
+
}
|
|
403
571
|
if (decoded._tag === "Event") {
|
|
404
572
|
// Spec #222 §5.3 (C4 + subscribe-stub): per-subscription
|
|
405
573
|
// fan-out replaces the deleted top-level `onEvent` callback.
|
package/dist/ws-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-client.js","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,yBAAyB,CAAC;AAClD,OAAO,KAAK,UAAU,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,KAAK,EACL,OAAO,EACP,cAAc,EACd,MAAM,EACN,GAAG,EACH,QAAQ,EACR,KAAK,GACN,MAAM,QAAQ,CAAC;AAChB,OAAO,EACL,gBAAgB,GAMjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,sBAAsB,GAKvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAkB,MAAM,yBAAyB,CAAC;AAQ3E;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC;AAMrC,sEAAsE;AACtE,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAEtC;;;GAGG;AACH,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAE9B,MAAM,iBAAiB,GAAG,yBAAyB,CAAC;AACpD,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAE3C,MAAM,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;AAyB9C,yEAAyE;AACzE,SAAS,YAAY,CACnB,CAAsD,EACtD,SAAiB,EACjB,MAAmB;IAEnB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;IAC1D,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC1B,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC;QAC9B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAiDD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,eAAe;IAiCG;IAhCZ,UAAU,CAEzB;IACe,QAAQ,CAAoC;IAC5C,YAAY,CAAkB;IAC9B,eAAe,CAAqC;IACrE;;;;;OAKG;IACc,eAAe,CAE9B;IACe,OAAO,CAGtB;IACF;;;;;OAKG;IACc,WAAW,CAAqB;IAEzC,cAAc,GAAG,CAAC,CAAC;IACnB,MAAM,GAAG,KAAK,CAAC;IACf,cAAc,GAA2C,IAAI,CAAC;IAC9D,QAAQ,GAAY,IAAI,CAAC;IAEjC,YAA6B,OAA+B;QAA/B,YAAO,GAAP,OAAO,CAAwB;QAC1D,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC;QACzE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CACpC,GAAG,CAAC,IAAI,CAEN,OAAO,CAAC,KAAK,EAAE,CAAC,CACnB,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAClC,GAAG,CAAC,IAAI,CAA2B,MAAM,CAAC,IAAI,EAAE,CAAC,CAClD,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CACzC,GAAG,CAAC,IAAI,CAA4B,EAAE,CAAC,CACxC,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CACzC,GAAG,CAAC,IAAI,CACN,OAAO,CAAC,KAAK,EAAE,CAChB,CACF,CAAC;QACF,oEAAoE;QACpE,8DAA8D;QAC9D,qDAAqD;QACrD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CACrC,sBAAsB,CAAC;YACrB,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;SACtD,CAAC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;iDAC6C;IAC7C,OAAO;QAIL,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;YACzB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CACtD,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI;YAC9B,8DAA8D;YAC9D,2DAA2D;YAC3D,8DAA8D;YAC9D,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,yBAAyB,CAAC,CACrD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IA2BD,OAAO,CACL,MAAwD,EACxD,MAAgB,EAChB,IAAqB;QAKrB,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACrE,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IA2BD,cAAc,CACZ,MAAwD,EACxD,MAAgB;QAKhB,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACrE,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;;;;;OAWG;IACH,SAAS,CACP,MAA0B,EAC1B,OAA0B;QAE1B,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;YACzB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,MAAM,CAAC,IAAI,CAChB,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CACtD,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK;QACH,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;YAC/B,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO;YACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;gBACjC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;gBAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;YACD,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CACf;gBACE,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC;gBACtC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC;gBAC3C,4DAA4D;gBAC5D,mDAAmD;gBACnD,IAAI,CAAC,WAAW,CAAC,QAAQ;aAC1B,EACD,EAAE,WAAW,EAAE,WAAW,EAAE,CAC7B,CAAC;YACF,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACjE,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK;qBACf,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;qBAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACtB,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,CAAC;QACH,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,CACb,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;YACf,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC,CAAC,CACH,CACF,CAAC;IACJ,CAAC;IAED;;kCAE8B;IAC9B,YAAY,CACV,SAAiB,EACjB,SAAS,GAAG,IAAI;QAEhB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;YAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE;gBAClE,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;gBAC3D,IAAI,GAAG,KAAK,CAAC,CAAC;oBAAE,OAAO,CAAC,IAAyB,EAAE,MAAM,CAAC,CAAC;gBAC3D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;YACH,IAAI,QAAQ,KAAK,IAAI;gBAAE,OAAO,QAAQ,CAAC;YAEvC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAqB,CAAC;YAC3D,MAAM,MAAM,GAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;YACpD,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE;gBAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;gBAC3C,MAAM,IAAI,GACR,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACpE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,IAAkC,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;YACH,OAAO,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CACzC,MAAM,CAAC,WAAW,CAAC;gBACjB,QAAQ,EAAE,GAAG,SAAS,SAAS;gBAC/B,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,8BAA8B,SAAS,EAAE,CAAC;aACtE,CAAC,EACF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACrB,IAAI,CAAC,IAAI,KAAK,SAAS;gBACrB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CACrC,YAAY,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CACnC;gBACH,CAAC,CAAC,MAAM,CAAC,IAAI,CAChB,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oEAAoE;IACpE,WAAW;QACT,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;IACvB,CAAC;IAED,uFAAuF;IACvF,UAAU;QACR,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAClD,CAAC;IAEO,cAAc;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3D,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,OAAO;QACjC,oEAAoE;QACpE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5D,8DAA8D;QAC9D,sEAAsE;QACtE,kEAAkE;QAClE,sEAAsE;QACtE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC7D,qEAAqE;QACrE,iDAAiD;QACjD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QAC/D,iEAAiE;QACjE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,CAAC;IAEO,aAAa;QAKnB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;YAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;YAElE,wEAAwE;YACxE,sEAAsE;YACtE,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAElC,sEAAsE;YACtE,yDAAyD;YACzD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAChC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAChE,KAAK,CACN,CAAC,IAAI,CACJ,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7B,MAAM,CAAC,QAAQ,CACb,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CACf,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAC1D,EACD,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAChC,MAAM,CAAC,QAAQ,CACb,MAAM,CAAC,IAAI,CACT,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CACtD,CACF,CACF,CACF,CACF,CACF,CAAC;YAEF,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAExD,kEAAkE;YAClE,yDAAyD;YACzD,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAyB,CAAC;YAEvE,kEAAkE;YAClE,qEAAqE;YACrE,qEAAqE;YACrE,sBAAsB;YACtB,MAAM,YAAY,GAAG,MAAM;iBACxB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACf,IAAI,CAAC,cAAc,CACjB,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAC5D,CACF;iBACA,IAAI,CACH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACrB,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;gBACxB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC3D,CAAC;gBACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;gBAC9C,wDAAwD;gBACxD,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAClB,gBAAgB,EAChB,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CACtD,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACtB,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC7C,0DAA0D;gBAC1D,0DAA0D;gBAC1D,gDAAgD;gBAChD,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACrC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;oBACtB,IAAI,CAAC;wBACH,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC;oBACrC,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;oBAC/D,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACjB,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,CAAC;YACH,CAAC,CAAC,CACH,CACF,CAAC;YAEJ,sEAAsE;YACtE,uEAAuE;YACvE,kEAAkE;YAClE,gEAAgE;YAChE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAEvD,4DAA4D;YAC5D,2CAA2C;YAC3C,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CACZ,IAAI,CAAC,QAAQ,EACb,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAC7D,CAAC;YAEF,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;gBACpD,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;gBAC/B,WAAW,EAAE,gBAAgB;gBAC7B,WAAW,EAAE,gBAAgB;aAC9B,CAAC,CAAC;YAEH,uEAAuE;YACvE,iEAAiE;YACjE,oEAAoE;YACpE,6CAA6C;YAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CACpC,UAAU,EACV,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CACjC,CAAC,IAAI,CACJ,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACnB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;gBACf,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACxB,CAAC,CAAC,CACH,CACF,CAAC;YAEF,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACK,oBAAoB,CAC1B,MAAc,EACd,MAAe,EACf,IAAqB;QAKrB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;YAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CACtD,CAAC;YACJ,CAAC;YAED,MAAM,EAAE,GAAG,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAiB;gBAC1B,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,SAAS;gBACf,EAAE;gBACF,MAAM;gBACN,MAAM;aACP,CAAC;YAEF,8DAA8D;YAC9D,2DAA2D;YAC3D,8DAA8D;YAC9D,2BAA2B;YAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAyB,CAAC;YAC/D,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;YAExE,gEAAgE;YAChE,2DAA2D;YAC3D,4DAA4D;YAC5D,yDAAyD;YACzD,sDAAsD;YACtD,mCAAmC;YACnC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAChC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CACzC,CAAC;YACF,MAAM,YAAY,GAAwB,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CACrE,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAC3C,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAChB,CAAC;YACF,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YACjE,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC5D,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBACjE,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CACtD,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,cAAc,CAAC;YACpD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CACjD,MAAM,CAAC,WAAW,CAAC;gBACjB,QAAQ,EAAE,GAAG,SAAS,SAAS;gBAC/B,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;aAC5D,CAAC,EACF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACrB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAClB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3D,CAAC,CAAC,MAAM,CAAC,IAAI,CAChB,CACF,CAAC;YAEF,gEAAgE;YAChE,yDAAyD;YACzD,+DAA+D;YAC/D,gCAAgC;YAChC,6DAA6D;YAC7D,yDAAyD;YACzD,oDAAoD;YACpD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,UAAmB,EAAE,MAAM,EAAE,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACK,aAAa,CACnB,MAAc,EACd,MAAe,EACf,IAAqB;QAKrB,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CACzD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CACxC,CAAC;IACJ,CAAC;IAED;6DACyD;IACjD,cAAc,CAAC,GAAW;QAChC,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;YAC/B,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CACjD,MAAM,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE,EAAE,CAC7C,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;gBACxB,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACnE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,mBAAmB,KAAK,CAAC,EAAE,CAAC;oBAC7C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CACvB,qBAAqB,CAAC,IAAI,EAC1B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CACtB,CAAC;gBACJ,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CACH,CACF,CAAC;YACF,IAAI,aAAa,KAAK,IAAI;gBAAE,OAAO;YAEnC,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;gBACpC,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAChC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;oBACtC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;wBACvD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACjC,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM;4BAC1B,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;4BACtC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;oBAChB,CAAC,CAAC,CAAC;oBACH,IAAI,OAAO,KAAK,IAAI;wBAAE,SAAS;oBAE/B,IAAI,KAAK,EAAE,CAAC;wBACV,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAClB,OAAO,EACP,IAAI,cAAc,CAAC;4BACjB,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;4BAC1D,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,sBAAsB;4BAChD,IAAI,EAAE,KAAK,CAAC,IAAI;yBACjB,CAAC,CACH,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC3C,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC7B,yDAAyD;oBACzD,6DAA6D;oBAC7D,0DAA0D;oBAC1D,wCAAwC;oBACxC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAChD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE;wBAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBACnD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BACxD,OAAO,CAAC,IAA0B,EAAE,CAAC,CAAC,CAAC;wBACzC,CAAC;wBACD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;wBACzB,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;wBACpC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;wBAC9B,MAAM,OAAO,GACX,IAAI,CAAC,MAAM,KAAK,CAAC;4BACf,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;4BACxC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;wBAChD,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;oBAC3B,CAAC,CAAC,CAAC;oBACH,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;wBACvB,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAC7D,MAAM,CAAC,MAAM,CACd,CAAC;wBACF,SAAS;oBACX,CAAC;oBAED,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE;wBAC7C,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;wBACxC,OAAO,QAAQ,CAAC,MAAM,GAAG,gBAAgB;4BACvC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC;4BACnC,CAAC,CAAC,QAAQ,CAAC;oBACf,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,4EAA4E;IACpE,mBAAmB,CAAC,OAAe;QACzC,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;YAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAClC,IAAI,CAAC,eAAe,EACpB,OAAO,CAAC,KAAK,EAAsC,CACpD,CAAC;YACF,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;oBACvB,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACvD,MAAM,CAAC,MAAM,CACd,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,OAAe;QACpC,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC;YAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAClC,IAAI,CAAC,UAAU,EACf,OAAO,CAAC,KAAK,EAAoD,CAClE,CAAC;YACF,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7C,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAC9D,MAAM,CAAC,MAAM,CACd,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;6EACyE;IACjE,iBAAiB;QACvB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI;YAAE,OAAO;QAExD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CACvC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACrB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;YACf,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC,CAAC,CACH;QACD,6DAA6D;QAC7D,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAC7D,CAAC;QAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAClC,QAAQ,CAAC,MAAM,CAAC,uBAAuB,CAAC,EACxC,CAAC,CACF,CAAC,IAAI,CACJ,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,EACzE,QAAQ,CAAC,QAAQ,CAClB,CAAC;QAEF,MAAM,IAAI,GAA+B,OAAO,CAAC,IAAI,CACnD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EACrB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAClC,MAAM,CAAC,QAAQ,CACb,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC,CAAC,CACH,EACD,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,yBAAyB,CAAC,CACrD,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"ws-client.js","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"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"}
|
package/dist/ws-client.test.js
CHANGED
|
@@ -21,7 +21,7 @@ import * as NodeSocketServer from "@effect/platform-node/NodeSocketServer";
|
|
|
21
21
|
import * as Socket from "@effect/platform/Socket";
|
|
22
22
|
import { PROTOCOL_VERSION } from "@moltzap/protocol";
|
|
23
23
|
import { MoltZapWsClient, RPC_TIMEOUT_MS, } from "./ws-client.js";
|
|
24
|
-
import { RpcTimeoutError } from "./runtime/errors.js";
|
|
24
|
+
import { RpcServerError, RpcTimeoutError } from "./runtime/errors.js";
|
|
25
25
|
/**
|
|
26
26
|
* Spin up an in-process `@effect/platform` WS server on `127.0.0.1:0`.
|
|
27
27
|
* Caller owns the provided scope; when it closes, the server shuts down.
|
|
@@ -86,6 +86,7 @@ const startHandshakingServer = (handler) => startTestServer((conn, raw) => Effec
|
|
|
86
86
|
yield* conn.send(JSON.stringify({
|
|
87
87
|
jsonrpc: "2.0",
|
|
88
88
|
type: "response",
|
|
89
|
+
direction: "c2s",
|
|
89
90
|
id: frame.id,
|
|
90
91
|
result: { agentId: "agent-xyz", protocol: PROTOCOL_VERSION },
|
|
91
92
|
}));
|
|
@@ -324,6 +325,7 @@ describe("reconnect backoff", () => {
|
|
|
324
325
|
yield* conn.send(JSON.stringify({
|
|
325
326
|
jsonrpc: "2.0",
|
|
326
327
|
type: "response",
|
|
328
|
+
direction: "c2s",
|
|
327
329
|
id: frame.id,
|
|
328
330
|
result: { agentId: "agent-1" },
|
|
329
331
|
}));
|
|
@@ -370,6 +372,7 @@ describe("§5.4 malformed frames are logged but do not affect pending RPCs", ()
|
|
|
370
372
|
yield* conn.send(JSON.stringify({
|
|
371
373
|
jsonrpc: "2.0",
|
|
372
374
|
type: "response",
|
|
375
|
+
direction: "c2s",
|
|
373
376
|
id: frame.id,
|
|
374
377
|
result: { conversations: [] },
|
|
375
378
|
}));
|
|
@@ -400,6 +403,7 @@ describe("§5.4 malformed frames are logged but do not affect pending RPCs", ()
|
|
|
400
403
|
JSON.stringify({
|
|
401
404
|
jsonrpc: "2.0",
|
|
402
405
|
type: "response",
|
|
406
|
+
direction: "c2s",
|
|
403
407
|
id: frame.id,
|
|
404
408
|
result: { conversations: [] },
|
|
405
409
|
}));
|
|
@@ -543,6 +547,7 @@ describe("sendRpc(RpcDefinition, params) — typed manifest overload", () => {
|
|
|
543
547
|
const server = yield* startHandshakingServer((conn, _raw, frame) => conn.send(JSON.stringify({
|
|
544
548
|
jsonrpc: "2.0",
|
|
545
549
|
type: "response",
|
|
550
|
+
direction: "c2s",
|
|
546
551
|
id: frame.id,
|
|
547
552
|
result: {
|
|
548
553
|
echoedMethod: frame.method,
|
|
@@ -563,6 +568,7 @@ describe("sendRpc(RpcDefinition, params) — typed manifest overload", () => {
|
|
|
563
568
|
const server = yield* startHandshakingServer((conn, _raw, frame) => conn.send(JSON.stringify({
|
|
564
569
|
jsonrpc: "2.0",
|
|
565
570
|
type: "response",
|
|
571
|
+
direction: "c2s",
|
|
566
572
|
id: frame.id,
|
|
567
573
|
result: { echoedMethod: frame.method, agents: [] },
|
|
568
574
|
})));
|
|
@@ -666,4 +672,186 @@ describe("spec #222 §5.4 — onDisconnect close metadata (V7)", () => {
|
|
|
666
672
|
}));
|
|
667
673
|
});
|
|
668
674
|
});
|
|
675
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
676
|
+
// Phase 1.0 (B.1) gating tests — client-side server-initiated RPC
|
|
677
|
+
// (handleServerRpc + dispatcher fiber + s2c response write-back)
|
|
678
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
679
|
+
describe("Phase 1.0 (B.1) — handleServerRpc round-trip", () => {
|
|
680
|
+
it("dispatches an inbound s2c request to the registered handler and writes the response back", async () => {
|
|
681
|
+
await withTestServer(Effect.gen(function* () {
|
|
682
|
+
// Server: auto-handshake; immediately AFTER replying to
|
|
683
|
+
// auth/connect, send an s2c request to the client; capture every
|
|
684
|
+
// subsequent inbound frame the client writes back. We're testing
|
|
685
|
+
// the client's dispatcher fiber + handler registry + response
|
|
686
|
+
// encoding.
|
|
687
|
+
const server = yield* startTestServer((conn, raw) => Effect.gen(function* () {
|
|
688
|
+
const frame = JSON.parse(raw);
|
|
689
|
+
if (frame.method === "auth/connect") {
|
|
690
|
+
yield* conn.send(JSON.stringify({
|
|
691
|
+
jsonrpc: "2.0",
|
|
692
|
+
type: "response",
|
|
693
|
+
direction: "c2s",
|
|
694
|
+
id: frame.id,
|
|
695
|
+
result: { agentId: "agent-xyz", protocol: PROTOCOL_VERSION },
|
|
696
|
+
}));
|
|
697
|
+
// Fire the s2c request straight after auth response. The
|
|
698
|
+
// client's dispatcher fiber was forked into the connect
|
|
699
|
+
// scope BEFORE auth/connect was sent, so the inbound queue
|
|
700
|
+
// is live the moment we land here.
|
|
701
|
+
yield* conn.send(JSON.stringify({
|
|
702
|
+
jsonrpc: "2.0",
|
|
703
|
+
type: "request",
|
|
704
|
+
direction: "s2c",
|
|
705
|
+
id: "srv-test-1",
|
|
706
|
+
method: "apps/onJoin",
|
|
707
|
+
params: { sessionId: "sess-A" },
|
|
708
|
+
}));
|
|
709
|
+
}
|
|
710
|
+
}));
|
|
711
|
+
const client = makeClient(server.url);
|
|
712
|
+
// Register a handler BEFORE connect so the dispatcher fiber sees
|
|
713
|
+
// it on the very first inbound s2c request.
|
|
714
|
+
yield* client.handleServerRpc("apps/onJoin", (params) => Effect.succeed({
|
|
715
|
+
ack: true,
|
|
716
|
+
saw: params.sessionId,
|
|
717
|
+
}));
|
|
718
|
+
yield* Effect.promise(() => connectP(client));
|
|
719
|
+
// Wait for the response frame the dispatcher writes back. The
|
|
720
|
+
// server records every inbound frame in `received` — the s2c
|
|
721
|
+
// response should appear after the client's auth/connect.
|
|
722
|
+
const responseRaw = yield* Effect.promise(() => waitFor(() => server.connections[0].received.some((r) => {
|
|
723
|
+
try {
|
|
724
|
+
const parsed = JSON.parse(r);
|
|
725
|
+
return (parsed.type === "response" && parsed.id === "srv-test-1");
|
|
726
|
+
}
|
|
727
|
+
catch {
|
|
728
|
+
return false;
|
|
729
|
+
}
|
|
730
|
+
}), { maxMs: 2000 })).pipe(Effect.flatMap(() => Effect.sync(() => server.connections[0].received.find((r) => {
|
|
731
|
+
try {
|
|
732
|
+
const parsed = JSON.parse(r);
|
|
733
|
+
return parsed.id === "srv-test-1";
|
|
734
|
+
}
|
|
735
|
+
catch {
|
|
736
|
+
return false;
|
|
737
|
+
}
|
|
738
|
+
}))));
|
|
739
|
+
const parsedResponse = JSON.parse(responseRaw);
|
|
740
|
+
expect(parsedResponse.type).toBe("response");
|
|
741
|
+
expect(parsedResponse.direction).toBe("s2c");
|
|
742
|
+
expect(parsedResponse.id).toBe("srv-test-1");
|
|
743
|
+
expect(parsedResponse.result.ack).toBe(true);
|
|
744
|
+
expect(parsedResponse.result.saw).toBe("sess-A");
|
|
745
|
+
yield* closeClient(client);
|
|
746
|
+
}));
|
|
747
|
+
});
|
|
748
|
+
it("encodes a typed RpcServerError from the handler as a `response` frame with `error`", async () => {
|
|
749
|
+
await withTestServer(Effect.gen(function* () {
|
|
750
|
+
const server = yield* startTestServer((conn, raw) => Effect.gen(function* () {
|
|
751
|
+
const frame = JSON.parse(raw);
|
|
752
|
+
if (frame.method === "auth/connect") {
|
|
753
|
+
yield* conn.send(JSON.stringify({
|
|
754
|
+
jsonrpc: "2.0",
|
|
755
|
+
type: "response",
|
|
756
|
+
direction: "c2s",
|
|
757
|
+
id: frame.id,
|
|
758
|
+
result: { agentId: "agent-xyz", protocol: PROTOCOL_VERSION },
|
|
759
|
+
}));
|
|
760
|
+
yield* conn.send(JSON.stringify({
|
|
761
|
+
jsonrpc: "2.0",
|
|
762
|
+
type: "request",
|
|
763
|
+
direction: "s2c",
|
|
764
|
+
id: "srv-err-1",
|
|
765
|
+
method: "apps/onClose",
|
|
766
|
+
params: {},
|
|
767
|
+
}));
|
|
768
|
+
}
|
|
769
|
+
}));
|
|
770
|
+
const client = makeClient(server.url);
|
|
771
|
+
yield* client.handleServerRpc("apps/onClose", () => Effect.fail(new RpcServerError({
|
|
772
|
+
code: -32099,
|
|
773
|
+
message: "domain-rejected",
|
|
774
|
+
data: { reason: "test" },
|
|
775
|
+
})));
|
|
776
|
+
yield* Effect.promise(() => connectP(client));
|
|
777
|
+
yield* Effect.promise(() => waitFor(() => server.connections[0].received.some((r) => {
|
|
778
|
+
try {
|
|
779
|
+
const parsed = JSON.parse(r);
|
|
780
|
+
return (parsed.id === "srv-err-1" && parsed.error !== undefined);
|
|
781
|
+
}
|
|
782
|
+
catch {
|
|
783
|
+
return false;
|
|
784
|
+
}
|
|
785
|
+
}), { maxMs: 2000 }));
|
|
786
|
+
const found = server.connections[0].received.find((r) => {
|
|
787
|
+
try {
|
|
788
|
+
return JSON.parse(r).id === "srv-err-1";
|
|
789
|
+
}
|
|
790
|
+
catch {
|
|
791
|
+
return false;
|
|
792
|
+
}
|
|
793
|
+
});
|
|
794
|
+
const parsed = JSON.parse(found);
|
|
795
|
+
expect(parsed.direction).toBe("s2c");
|
|
796
|
+
expect(parsed.error.code).toBe(-32099);
|
|
797
|
+
expect(parsed.error.message).toBe("domain-rejected");
|
|
798
|
+
expect(parsed.error.data.reason).toBe("test");
|
|
799
|
+
yield* closeClient(client);
|
|
800
|
+
}));
|
|
801
|
+
});
|
|
802
|
+
it("rejects a duplicate handleServerRpc registration with DuplicateServerRpcHandlerError", async () => {
|
|
803
|
+
const client = new MoltZapWsClient({
|
|
804
|
+
serverUrl: "http://127.0.0.1:1",
|
|
805
|
+
agentKey: "test",
|
|
806
|
+
});
|
|
807
|
+
const first = await Effect.runPromiseExit(client.handleServerRpc("apps/onJoin", () => Effect.succeed({})));
|
|
808
|
+
expect(Exit.isSuccess(first)).toBe(true);
|
|
809
|
+
const second = await Effect.runPromiseExit(client.handleServerRpc("apps/onJoin", () => Effect.succeed({})));
|
|
810
|
+
expect(Exit.isFailure(second)).toBe(true);
|
|
811
|
+
if (Exit.isFailure(second)) {
|
|
812
|
+
const err = Cause.failureOption(second.cause);
|
|
813
|
+
expect(err._tag).toBe("Some");
|
|
814
|
+
if (err._tag === "Some") {
|
|
815
|
+
expect(err.value._tag).toBe("DuplicateServerRpcHandlerError");
|
|
816
|
+
}
|
|
817
|
+
}
|
|
818
|
+
await Effect.runPromise(client.close());
|
|
819
|
+
});
|
|
820
|
+
});
|
|
821
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
822
|
+
// Regression gate (review-295): runSync(client.close()) and
|
|
823
|
+
// runSync(client.disconnect()) must not throw AsyncFiberException after
|
|
824
|
+
// the s2c queue + dispatcher were added. The s2c machinery lives off the
|
|
825
|
+
// per-connect Scope (allocated inline + forked via runtime.runFork) so
|
|
826
|
+
// `Scope.close` stays sync; teardown of the queue and dispatcher fiber
|
|
827
|
+
// is dispatched via `runFork` from close()/disconnectSync().
|
|
828
|
+
//
|
|
829
|
+
// Failure mode this guards: `Effect.acquireRelease(Queue.dropping, Queue.shutdown)
|
|
830
|
+
// .pipe(Scope.extend(scope))` + `Effect.forkScoped` would have made the
|
|
831
|
+
// scope teardown async, breaking
|
|
832
|
+
// packages/openclaw-channel/src/__tests__/reconnection.integration.test.ts:14
|
|
833
|
+
// (`closeWs = (c) => Effect.runSync(c.close())`).
|
|
834
|
+
// ─────────────────────────────────────────────────────────────────────
|
|
835
|
+
describe("Phase 1.0 (B.1) — runSync teardown contract", () => {
|
|
836
|
+
it("client.close() runs synchronously after a successful connect", async () => {
|
|
837
|
+
await withTestServer(Effect.gen(function* () {
|
|
838
|
+
const server = yield* startHandshakingServer(() => Effect.void);
|
|
839
|
+
const client = makeClient(server.url);
|
|
840
|
+
yield* Effect.promise(() => connectP(client));
|
|
841
|
+
// Critical: this MUST be runSync, not runPromise. Throwing
|
|
842
|
+
// AsyncFiberException here is the regression we're guarding.
|
|
843
|
+
expect(() => Effect.runSync(client.close())).not.toThrow();
|
|
844
|
+
}));
|
|
845
|
+
});
|
|
846
|
+
it("client.disconnect() runs synchronously after a successful connect", async () => {
|
|
847
|
+
await withTestServer(Effect.gen(function* () {
|
|
848
|
+
const server = yield* startHandshakingServer(() => Effect.void);
|
|
849
|
+
const client = makeClient(server.url);
|
|
850
|
+
yield* Effect.promise(() => connectP(client));
|
|
851
|
+
expect(() => Effect.runSync(client.disconnect())).not.toThrow();
|
|
852
|
+
// Drain reconnect-fiber + runtime so vitest doesn't flag dangling work.
|
|
853
|
+
yield* closeClient(client);
|
|
854
|
+
}));
|
|
855
|
+
});
|
|
856
|
+
});
|
|
669
857
|
//# sourceMappingURL=ws-client.test.js.map
|