@moltzap/client 2026.501.1 → 2026.503.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/cli/commands/messages.d.ts.map +1 -1
- package/dist/cli/commands/messages.js +1 -1
- package/dist/cli/commands/messages.js.map +1 -1
- package/dist/cli/commands/messages.test.js +6 -2
- package/dist/cli/commands/messages.test.js.map +1 -1
- package/dist/internal/__tests__/s2c-partition-key.test.d.ts +2 -0
- package/dist/internal/__tests__/s2c-partition-key.test.d.ts.map +1 -0
- package/dist/internal/__tests__/s2c-partition-key.test.js +230 -0
- package/dist/internal/__tests__/s2c-partition-key.test.js.map +1 -0
- package/dist/internal/__tests__/s2c-partition-worker.test.d.ts +2 -0
- package/dist/internal/__tests__/s2c-partition-worker.test.d.ts.map +1 -0
- package/dist/internal/__tests__/s2c-partition-worker.test.js +267 -0
- package/dist/internal/__tests__/s2c-partition-worker.test.js.map +1 -0
- package/dist/internal/__tests__/s2c-partitioned-dispatcher-real-ws.test.d.ts +2 -0
- package/dist/internal/__tests__/s2c-partitioned-dispatcher-real-ws.test.d.ts.map +1 -0
- package/dist/internal/__tests__/s2c-partitioned-dispatcher-real-ws.test.js +254 -0
- package/dist/internal/__tests__/s2c-partitioned-dispatcher-real-ws.test.js.map +1 -0
- package/dist/internal/__tests__/s2c-partitioned-dispatcher.test.d.ts +2 -0
- package/dist/internal/__tests__/s2c-partitioned-dispatcher.test.d.ts.map +1 -0
- package/dist/internal/__tests__/s2c-partitioned-dispatcher.test.js +571 -0
- package/dist/internal/__tests__/s2c-partitioned-dispatcher.test.js.map +1 -0
- package/dist/internal/s2c-dispatcher-errors.d.ts +66 -0
- package/dist/internal/s2c-dispatcher-errors.d.ts.map +1 -0
- package/dist/internal/s2c-dispatcher-errors.js +46 -0
- package/dist/internal/s2c-dispatcher-errors.js.map +1 -0
- package/dist/internal/s2c-partition-key.d.ts +70 -0
- package/dist/internal/s2c-partition-key.d.ts.map +1 -0
- package/dist/internal/s2c-partition-key.js +140 -0
- package/dist/internal/s2c-partition-key.js.map +1 -0
- package/dist/internal/s2c-partition-worker.d.ts +160 -0
- package/dist/internal/s2c-partition-worker.d.ts.map +1 -0
- package/dist/internal/s2c-partition-worker.js +141 -0
- package/dist/internal/s2c-partition-worker.js.map +1 -0
- package/dist/internal/s2c-partitioned-dispatcher.d.ts +181 -0
- package/dist/internal/s2c-partitioned-dispatcher.d.ts.map +1 -0
- package/dist/internal/s2c-partitioned-dispatcher.js +290 -0
- package/dist/internal/s2c-partitioned-dispatcher.js.map +1 -0
- package/dist/ws-client.d.ts +27 -0
- package/dist/ws-client.d.ts.map +1 -1
- package/dist/ws-client.js +107 -57
- package/dist/ws-client.js.map +1 -1
- package/dist/ws-client.test.js +7 -1
- package/dist/ws-client.test.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration: `MoltZapWsClient` end-to-end deadlock reproducer.
|
|
3
|
+
*
|
|
4
|
+
* Spec: moltzap#356 §8 (test plan, file 5 — moved from app-sdk to
|
|
5
|
+
* packages/client because the dispatcher behaviour under test is at
|
|
6
|
+
* the @moltzap/client layer, and packages/client already has the
|
|
7
|
+
* in-process WS server helper pattern needed for full-transport
|
|
8
|
+
* tests; see PR body "Deviations" for the rationale).
|
|
9
|
+
*
|
|
10
|
+
* Boots an in-process `@effect/platform-node` WebSocket server,
|
|
11
|
+
* connects a real `MoltZapWsClient`, registers two competing s2c
|
|
12
|
+
* handlers (`before_dispatch` parks on a Deferred;
|
|
13
|
+
* `before_message_delivery` resolves it), and asserts both replies
|
|
14
|
+
* round-trip back to the server. Pre-#356 this hangs; post-#356 it
|
|
15
|
+
* completes via the partitioned dispatcher's
|
|
16
|
+
* `(sessionId, conversationId, hookKind)` keying.
|
|
17
|
+
*
|
|
18
|
+
* No mocks — full transport, full schema validation, real fibers.
|
|
19
|
+
*/
|
|
20
|
+
import * as NodeSocketServer from "@effect/platform-node/NodeSocketServer";
|
|
21
|
+
import { Deferred, Effect, Scope } from "effect";
|
|
22
|
+
import { describe, expect, it } from "vitest";
|
|
23
|
+
import { PROTOCOL_VERSION } from "@moltzap/protocol";
|
|
24
|
+
import { MoltZapWsClient } from "../../ws-client.js";
|
|
25
|
+
const SESSION_A = "11111111-1111-4111-8111-111111111111";
|
|
26
|
+
const SESSION_B = "22222222-2222-4222-8222-222222222222";
|
|
27
|
+
const CONV_X = "conv-X";
|
|
28
|
+
/**
|
|
29
|
+
* Spin up an in-process WS server on 127.0.0.1:0. Caller owns the
|
|
30
|
+
* provided scope; when it closes the server shuts down.
|
|
31
|
+
*/
|
|
32
|
+
function startWsServer(handler) {
|
|
33
|
+
return Effect.gen(function* () {
|
|
34
|
+
const server = yield* NodeSocketServer.makeWebSocket({
|
|
35
|
+
port: 0,
|
|
36
|
+
host: "127.0.0.1",
|
|
37
|
+
});
|
|
38
|
+
const addr = server.address;
|
|
39
|
+
if (addr._tag !== "TcpAddress") {
|
|
40
|
+
return yield* Effect.die("expected TcpAddress");
|
|
41
|
+
}
|
|
42
|
+
const conns = [];
|
|
43
|
+
yield* Effect.forkScoped(server
|
|
44
|
+
.run((sock) => Effect.gen(function* () {
|
|
45
|
+
const write = yield* sock.writer;
|
|
46
|
+
const received = [];
|
|
47
|
+
const conn = {
|
|
48
|
+
send: (raw) => write(raw).pipe(Effect.ignore),
|
|
49
|
+
get received() {
|
|
50
|
+
return received;
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
conns.push(conn);
|
|
54
|
+
yield* sock.runRaw((data) => Effect.gen(function* () {
|
|
55
|
+
const raw = typeof data === "string"
|
|
56
|
+
? data
|
|
57
|
+
: new TextDecoder("utf-8").decode(data);
|
|
58
|
+
received.push(raw);
|
|
59
|
+
yield* handler(conn, raw);
|
|
60
|
+
}));
|
|
61
|
+
}))
|
|
62
|
+
.pipe(Effect.ignore));
|
|
63
|
+
return { url: `http://${addr.hostname}:${addr.port}`, conns };
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/** Connect a client, complete auth handshake. */
|
|
67
|
+
async function connect(client) {
|
|
68
|
+
return Effect.runPromise(client.connect());
|
|
69
|
+
}
|
|
70
|
+
async function close(client) {
|
|
71
|
+
await Effect.runPromise(client.close());
|
|
72
|
+
}
|
|
73
|
+
describe("integration: AppHost + partitioned s2c dispatcher", () => {
|
|
74
|
+
it("two competing handlers (before_dispatch + before_message_delivery) for the " +
|
|
75
|
+
"same conversation: parked before_dispatch resumes after sibling " +
|
|
76
|
+
"before_message_delivery completes — both replies ship to the server", async () => {
|
|
77
|
+
// Pre-#356 (single-fiber dispatcher) this test would hang
|
|
78
|
+
// forever — vitest's testTimeout is the only thing that
|
|
79
|
+
// catches it. Post-#356 (partitioned by hookKind) the two
|
|
80
|
+
// handlers run on independent fibers, the parking deferred
|
|
81
|
+
// fires from the sibling, and both replies ship.
|
|
82
|
+
const result = await Effect.runPromise(Effect.scoped(Effect.gen(function* () {
|
|
83
|
+
const server = yield* startWsServer((conn, raw) => Effect.gen(function* () {
|
|
84
|
+
const frame = JSON.parse(raw);
|
|
85
|
+
if (frame.method === "auth/connect" && frame.id) {
|
|
86
|
+
yield* conn.send(JSON.stringify({
|
|
87
|
+
jsonrpc: "2.0",
|
|
88
|
+
type: "response",
|
|
89
|
+
direction: "c2s",
|
|
90
|
+
id: frame.id,
|
|
91
|
+
result: {
|
|
92
|
+
agentId: "agent-test",
|
|
93
|
+
protocol: PROTOCOL_VERSION,
|
|
94
|
+
},
|
|
95
|
+
}));
|
|
96
|
+
// Fire BOTH s2c requests for the SAME (S, C). With
|
|
97
|
+
// pre-#356 dispatching they queue on one fiber and
|
|
98
|
+
// deadlock; with #356 they run concurrently.
|
|
99
|
+
yield* conn.send(JSON.stringify({
|
|
100
|
+
jsonrpc: "2.0",
|
|
101
|
+
type: "request",
|
|
102
|
+
direction: "s2c",
|
|
103
|
+
id: "rpc-bd-1",
|
|
104
|
+
method: "apps/onBeforeDispatch",
|
|
105
|
+
params: { sessionId: SESSION_A, conversationId: CONV_X },
|
|
106
|
+
}));
|
|
107
|
+
yield* conn.send(JSON.stringify({
|
|
108
|
+
jsonrpc: "2.0",
|
|
109
|
+
type: "request",
|
|
110
|
+
direction: "s2c",
|
|
111
|
+
id: "rpc-bmd-1",
|
|
112
|
+
method: "apps/onBeforeMessageDelivery",
|
|
113
|
+
params: { sessionId: SESSION_A, conversationId: CONV_X },
|
|
114
|
+
}));
|
|
115
|
+
}
|
|
116
|
+
}));
|
|
117
|
+
const client = new MoltZapWsClient({
|
|
118
|
+
serverUrl: server.url,
|
|
119
|
+
agentKey: "k",
|
|
120
|
+
logger: {
|
|
121
|
+
info: () => { },
|
|
122
|
+
warn: () => { },
|
|
123
|
+
error: () => { },
|
|
124
|
+
},
|
|
125
|
+
});
|
|
126
|
+
// Park the dispatch handler. The delivery handler resolves
|
|
127
|
+
// the parking Deferred — pre-#356 this would never run
|
|
128
|
+
// because both queue on a single dispatch fiber.
|
|
129
|
+
const release = yield* Deferred.make();
|
|
130
|
+
yield* client.handleServerRpc("apps/onBeforeDispatch", () => Effect.gen(function* () {
|
|
131
|
+
yield* Deferred.await(release);
|
|
132
|
+
return { admission: "allow" };
|
|
133
|
+
}));
|
|
134
|
+
yield* client.handleServerRpc("apps/onBeforeMessageDelivery", () => Effect.gen(function* () {
|
|
135
|
+
yield* Deferred.succeed(release, undefined);
|
|
136
|
+
return { decision: "allow" };
|
|
137
|
+
}));
|
|
138
|
+
yield* Effect.promise(() => connect(client));
|
|
139
|
+
// Wait for both replies to land at the server.
|
|
140
|
+
const deadline = Date.now() + 4000;
|
|
141
|
+
let bothReplied = false;
|
|
142
|
+
while (Date.now() < deadline) {
|
|
143
|
+
const conn = server.conns[0];
|
|
144
|
+
if (conn) {
|
|
145
|
+
const replyIds = conn.received
|
|
146
|
+
.map((r) => {
|
|
147
|
+
try {
|
|
148
|
+
const f = JSON.parse(r);
|
|
149
|
+
return f.id ?? null;
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
})
|
|
155
|
+
.filter((x) => x !== null);
|
|
156
|
+
if (replyIds.includes("rpc-bd-1") &&
|
|
157
|
+
replyIds.includes("rpc-bmd-1")) {
|
|
158
|
+
bothReplied = true;
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
yield* Effect.sleep("20 millis");
|
|
163
|
+
}
|
|
164
|
+
yield* Effect.promise(() => close(client));
|
|
165
|
+
return bothReplied;
|
|
166
|
+
})));
|
|
167
|
+
expect(result).toBe(true);
|
|
168
|
+
}, /* per-test timeout */ 6000);
|
|
169
|
+
it("concurrent handlers across two different sessions complete independently " +
|
|
170
|
+
"(slow handler in session A does not delay session B)", async () => {
|
|
171
|
+
const result = await Effect.runPromise(Effect.scoped(Effect.gen(function* () {
|
|
172
|
+
const server = yield* startWsServer((conn, raw) => Effect.gen(function* () {
|
|
173
|
+
const frame = JSON.parse(raw);
|
|
174
|
+
if (frame.method === "auth/connect" && frame.id) {
|
|
175
|
+
yield* conn.send(JSON.stringify({
|
|
176
|
+
jsonrpc: "2.0",
|
|
177
|
+
type: "response",
|
|
178
|
+
direction: "c2s",
|
|
179
|
+
id: frame.id,
|
|
180
|
+
result: {
|
|
181
|
+
agentId: "agent-test",
|
|
182
|
+
protocol: PROTOCOL_VERSION,
|
|
183
|
+
},
|
|
184
|
+
}));
|
|
185
|
+
// Session A: park forever (until release).
|
|
186
|
+
yield* conn.send(JSON.stringify({
|
|
187
|
+
jsonrpc: "2.0",
|
|
188
|
+
type: "request",
|
|
189
|
+
direction: "s2c",
|
|
190
|
+
id: "rpc-A",
|
|
191
|
+
method: "apps/onBeforeDispatch",
|
|
192
|
+
params: { sessionId: SESSION_A, conversationId: CONV_X },
|
|
193
|
+
}));
|
|
194
|
+
// Session B: must complete despite A being parked.
|
|
195
|
+
yield* conn.send(JSON.stringify({
|
|
196
|
+
jsonrpc: "2.0",
|
|
197
|
+
type: "request",
|
|
198
|
+
direction: "s2c",
|
|
199
|
+
id: "rpc-B",
|
|
200
|
+
method: "apps/onBeforeDispatch",
|
|
201
|
+
params: { sessionId: SESSION_B, conversationId: CONV_X },
|
|
202
|
+
}));
|
|
203
|
+
}
|
|
204
|
+
}));
|
|
205
|
+
const release = yield* Deferred.make();
|
|
206
|
+
const client = new MoltZapWsClient({
|
|
207
|
+
serverUrl: server.url,
|
|
208
|
+
agentKey: "k",
|
|
209
|
+
logger: {
|
|
210
|
+
info: () => { },
|
|
211
|
+
warn: () => { },
|
|
212
|
+
error: () => { },
|
|
213
|
+
},
|
|
214
|
+
});
|
|
215
|
+
yield* client.handleServerRpc("apps/onBeforeDispatch", (params) => Effect.gen(function* () {
|
|
216
|
+
const sid = params.sessionId;
|
|
217
|
+
if (sid === SESSION_A) {
|
|
218
|
+
yield* Deferred.await(release);
|
|
219
|
+
}
|
|
220
|
+
return { admission: "allow" };
|
|
221
|
+
}));
|
|
222
|
+
yield* Effect.promise(() => connect(client));
|
|
223
|
+
const deadline = Date.now() + 4000;
|
|
224
|
+
let bRan = false;
|
|
225
|
+
while (Date.now() < deadline) {
|
|
226
|
+
const conn = server.conns[0];
|
|
227
|
+
if (conn) {
|
|
228
|
+
const replyIds = conn.received
|
|
229
|
+
.map((r) => {
|
|
230
|
+
try {
|
|
231
|
+
return JSON.parse(r).id ?? null;
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
return null;
|
|
235
|
+
}
|
|
236
|
+
})
|
|
237
|
+
.filter((x) => x !== null);
|
|
238
|
+
if (replyIds.includes("rpc-B")) {
|
|
239
|
+
bRan = true;
|
|
240
|
+
break;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
yield* Effect.sleep("20 millis");
|
|
244
|
+
}
|
|
245
|
+
// Release A so close() doesn't have to interrupt a parked
|
|
246
|
+
// handler.
|
|
247
|
+
yield* Deferred.succeed(release, undefined);
|
|
248
|
+
yield* Effect.promise(() => close(client));
|
|
249
|
+
return bRan;
|
|
250
|
+
})));
|
|
251
|
+
expect(result).toBe(true);
|
|
252
|
+
}, /* per-test timeout */ 6000);
|
|
253
|
+
});
|
|
254
|
+
//# sourceMappingURL=s2c-partitioned-dispatcher-real-ws.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s2c-partitioned-dispatcher-real-ws.test.js","sourceRoot":"","sources":["../../../src/internal/__tests__/s2c-partitioned-dispatcher-real-ws.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s2c-partitioned-dispatcher.test.d.ts","sourceRoot":"","sources":["../../../src/internal/__tests__/s2c-partitioned-dispatcher.test.ts"],"names":[],"mappings":""}
|