@moltzap/client 2026.505.2 → 2026.507.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/contacts.d.ts.map +1 -1
- package/dist/cli/commands/contacts.js +3 -3
- package/dist/cli/commands/contacts.js.map +1 -1
- package/dist/cli/commands/conversations.d.ts.map +1 -1
- package/dist/cli/commands/conversations.js +11 -11
- package/dist/cli/commands/conversations.js.map +1 -1
- package/dist/cli/commands/messages.d.ts.map +1 -1
- package/dist/cli/commands/messages.js +3 -3
- package/dist/cli/commands/messages.js.map +1 -1
- package/dist/cli/commands/send.d.ts.map +1 -1
- package/dist/cli/commands/send.js +3 -3
- package/dist/cli/commands/send.js.map +1 -1
- package/dist/cli/commands/test-transport.d.ts.map +1 -1
- package/dist/cli/commands/test-transport.js +11 -8
- package/dist/cli/commands/test-transport.js.map +1 -1
- package/dist/cli/http-client.d.ts +2 -2
- package/dist/cli/http-client.d.ts.map +1 -1
- package/dist/cli/socket-client.d.ts +4 -3
- package/dist/cli/socket-client.d.ts.map +1 -1
- package/dist/cli/socket-client.js +6 -4
- package/dist/cli/socket-client.js.map +1 -1
- package/dist/cli/transport.d.ts +3 -3
- package/dist/cli/transport.d.ts.map +1 -1
- package/dist/cli/transport.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/__tests__/app-callback-partition-key.test.js +7 -20
- package/dist/internal/__tests__/app-callback-partition-key.test.js.map +1 -1
- package/dist/internal/__tests__/app-callback-partition-worker.test.js +3 -3
- package/dist/internal/__tests__/app-callback-partition-worker.test.js.map +1 -1
- package/dist/internal/__tests__/app-callback-partitioned-dispatcher.test.js +84 -394
- package/dist/internal/__tests__/app-callback-partitioned-dispatcher.test.js.map +1 -1
- package/dist/internal/__tests__/app-callback-test-requests.d.ts +12 -37
- package/dist/internal/__tests__/app-callback-test-requests.d.ts.map +1 -1
- package/dist/internal/__tests__/app-callback-test-requests.js +17 -73
- package/dist/internal/__tests__/app-callback-test-requests.js.map +1 -1
- package/dist/internal/app-callback-dispatcher-errors.d.ts +3 -3
- package/dist/internal/app-callback-dispatcher-errors.d.ts.map +1 -1
- package/dist/internal/app-callback-partition-key.d.ts +5 -15
- package/dist/internal/app-callback-partition-key.d.ts.map +1 -1
- package/dist/internal/app-callback-partition-key.js +1 -11
- package/dist/internal/app-callback-partition-key.js.map +1 -1
- package/dist/runtime/errors.d.ts +2 -12
- package/dist/runtime/errors.d.ts.map +1 -1
- package/dist/runtime/errors.js +4 -3
- package/dist/runtime/errors.js.map +1 -1
- package/dist/runtime/frame.d.ts +15 -17
- package/dist/runtime/frame.d.ts.map +1 -1
- package/dist/runtime/frame.js +25 -71
- package/dist/runtime/frame.js.map +1 -1
- package/dist/runtime/frame.test.js +28 -34
- package/dist/runtime/frame.test.js.map +1 -1
- package/dist/runtime/subscribers.d.ts +8 -11
- package/dist/runtime/subscribers.d.ts.map +1 -1
- package/dist/runtime/subscribers.js.map +1 -1
- package/dist/runtime/subscribers.test.js +8 -14
- package/dist/runtime/subscribers.test.js.map +1 -1
- package/dist/service.d.ts +5 -8
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +44 -65
- package/dist/service.js.map +1 -1
- package/dist/service.test.js +9 -9
- package/dist/service.test.js.map +1 -1
- package/dist/test/index.d.ts +1 -1
- package/dist/test/index.js +1 -1
- package/dist/test-utils/conformance-adapter.d.ts +5 -5
- package/dist/test-utils/conformance-adapter.d.ts.map +1 -1
- package/dist/test-utils/conformance-adapter.js +26 -29
- package/dist/test-utils/conformance-adapter.js.map +1 -1
- package/dist/test-utils/fake-service.d.ts +4 -4
- package/dist/test-utils/fake-service.d.ts.map +1 -1
- package/dist/test-utils/fake-service.js +19 -10
- package/dist/test-utils/fake-service.js.map +1 -1
- package/dist/test-utils/ids.d.ts +2 -6
- package/dist/test-utils/ids.d.ts.map +1 -1
- package/dist/test-utils/ids.js +1 -2
- package/dist/test-utils/ids.js.map +1 -1
- package/dist/ws-client.d.ts +17 -93
- package/dist/ws-client.d.ts.map +1 -1
- package/dist/ws-client.js +67 -161
- package/dist/ws-client.js.map +1 -1
- package/dist/ws-client.test.js +43 -56
- package/dist/ws-client.test.js.map +1 -1
- package/package.json +3 -4
- package/dist/internal/__tests__/app-callback-partitioned-dispatcher-real-ws.test.d.ts +0 -2
- package/dist/internal/__tests__/app-callback-partitioned-dispatcher-real-ws.test.d.ts.map +0 -1
- package/dist/internal/__tests__/app-callback-partitioned-dispatcher-real-ws.test.js +0 -230
- package/dist/internal/__tests__/app-callback-partitioned-dispatcher-real-ws.test.js.map +0 -1
- package/dist/runtime/index.d.ts +0 -3
- package/dist/runtime/index.d.ts.map +0 -1
- package/dist/runtime/index.js +0 -3
- package/dist/runtime/index.js.map +0 -1
- package/dist/runtime/notification-types.types-check.d.ts +0 -2
- package/dist/runtime/notification-types.types-check.d.ts.map +0 -1
- package/dist/runtime/notification-types.types-check.js +0 -57
- package/dist/runtime/notification-types.types-check.js.map +0 -1
- package/dist/service.typed-bridge.test.d.ts +0 -2
- package/dist/service.typed-bridge.test.d.ts.map +0 -1
- package/dist/service.typed-bridge.test.js +0 -93
- package/dist/service.typed-bridge.test.js.map +0 -1
- package/dist/ws-client.typed-bridge.test.d.ts +0 -2
- package/dist/ws-client.typed-bridge.test.d.ts.map +0 -1
- package/dist/ws-client.typed-bridge.test.js +0 -105
- package/dist/ws-client.typed-bridge.test.js.map +0 -1
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
* `onDisconnect`): no private reads, no monkey-patching
|
|
16
16
|
* (Invariant I9 from spec #200).
|
|
17
17
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
18
|
+
* Phase 12 encapsulation: request ids are wire metadata, not part of the
|
|
19
|
+
* test-protocol surface. The adapter calls `ws.sendRpc(...)` (no id leak)
|
|
20
|
+
* and synthesizes a wire-shaped `ResponseFrame` with `id: null` for the
|
|
21
|
+
* conformance contract. Tests that need to verify id-correlation (B4)
|
|
22
|
+
* discriminate via `result` payload content instead of reading ids back.
|
|
23
23
|
* - `closeRef` is populated from `CloseInfo.{code, reason}` passed
|
|
24
24
|
* into `onDisconnect`, not the hardcoded `{1000, "disconnect"}`
|
|
25
25
|
* (V7).
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* no-op stub is gone (C4 + subscribe-stub).
|
|
28
28
|
*/
|
|
29
29
|
import { Data, Effect, Either, Ref, Scope } from "effect";
|
|
30
|
-
import {
|
|
30
|
+
import { rpcMethods, } from "@moltzap/protocol";
|
|
31
31
|
import { MoltZapWsClient } from "../ws-client.js";
|
|
32
32
|
import { NotConnectedError, RpcServerError, RpcTimeoutError, } from "@moltzap/protocol";
|
|
33
33
|
const CONNECT_READY_TIMEOUT_MS = 30_000;
|
|
@@ -96,7 +96,6 @@ function filterFromRealClient(filter) {
|
|
|
96
96
|
export function createMoltZapRealClientFactory(opts) {
|
|
97
97
|
return (args) => Effect.gen(function* () {
|
|
98
98
|
const notificationsRef = yield* Ref.make([]);
|
|
99
|
-
const outboundIdsRef = yield* Ref.make([]);
|
|
100
99
|
const closeRef = yield* Ref.make(null);
|
|
101
100
|
const ws = new MoltZapWsClient({
|
|
102
101
|
serverUrl: args.testServerUrl,
|
|
@@ -124,14 +123,19 @@ export function createMoltZapRealClientFactory(opts) {
|
|
|
124
123
|
// replacement. Pre-`connect()` registration is supported.
|
|
125
124
|
const captureAll = yield* ws
|
|
126
125
|
.subscribe({}, (frame) => Effect.sync(() => {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
126
|
+
// Strip `definition` (added by `decodeNotification` post-Phase-12)
|
|
127
|
+
// before re-encoding so `rawBytes` matches the wire form the
|
|
128
|
+
// TestServer originally emitted. Conformance correlation in
|
|
129
|
+
// `lookupTagForRawBytes` keys on the wire form.
|
|
130
|
+
const wireFrame = {
|
|
131
|
+
jsonrpc: frame.jsonrpc,
|
|
132
|
+
method: frame.method,
|
|
133
|
+
...(frame.params !== undefined ? { params: frame.params } : {}),
|
|
134
|
+
};
|
|
135
|
+
const encoded = new TextEncoder().encode(JSON.stringify(wireFrame));
|
|
132
136
|
const obs = {
|
|
133
|
-
emissionTag:
|
|
134
|
-
decoded:
|
|
137
|
+
emissionTag: null,
|
|
138
|
+
decoded: wireFrame,
|
|
135
139
|
rawBytes: encoded,
|
|
136
140
|
observedAtMs: Date.now(),
|
|
137
141
|
};
|
|
@@ -182,7 +186,10 @@ export function createMoltZapRealClientFactory(opts) {
|
|
|
182
186
|
snapshot,
|
|
183
187
|
};
|
|
184
188
|
const call = (method, params) => Effect.gen(function* () {
|
|
185
|
-
|
|
189
|
+
// The conformance suite passes string method names; resolve to
|
|
190
|
+
// the protocol descriptor by name. Per-def `validateParams` is
|
|
191
|
+
// checked inside `ws.sendRpc` via wire validation.
|
|
192
|
+
const definition = rpcMethods.find((d) => d.name === method);
|
|
186
193
|
if (definition === undefined || !definition.validateParams(params)) {
|
|
187
194
|
return yield* Effect.fail(new RealClientRpcFailure({
|
|
188
195
|
cause: { method, params },
|
|
@@ -191,22 +198,12 @@ export function createMoltZapRealClientFactory(opts) {
|
|
|
191
198
|
method,
|
|
192
199
|
}));
|
|
193
200
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
// helper — no mirror id, no hand-written frame.
|
|
197
|
-
const tracked = yield* ws
|
|
198
|
-
.sendRpcTracked(definition, params)
|
|
201
|
+
const result = yield* ws
|
|
202
|
+
.sendRpc(definition, params)
|
|
199
203
|
.pipe(Effect.mapError((cause) => rpcError(cause, method)));
|
|
200
|
-
|
|
201
|
-
// minted at the `rpc-${++counter}` site, surfaced as-is).
|
|
202
|
-
yield* Ref.update(outboundIdsRef, (xs) => [...xs, tracked.id]);
|
|
203
|
-
const frame = responseFrame(jsonRpcStringId(tracked.id), { result: tracked.result });
|
|
204
|
-
return frame;
|
|
204
|
+
return definition.encodeResponse(null, result);
|
|
205
205
|
});
|
|
206
|
-
const rpcCaller = {
|
|
207
|
-
call,
|
|
208
|
-
outboundIdFeed: Ref.get(outboundIdsRef),
|
|
209
|
-
};
|
|
206
|
+
const rpcCaller = { call };
|
|
210
207
|
const closeSignal = Effect.gen(function* () {
|
|
211
208
|
while (true) {
|
|
212
209
|
const cur = yield* Ref.get(closeRef);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conformance-adapter.js","sourceRoot":"","sources":["../../src/test-utils/conformance-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"conformance-adapter.js","sourceRoot":"","sources":["../../src/test-utils/conformance-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* Canned responses are validated through the descriptor's result schema before
|
|
16
16
|
* they are returned, matching the real transport boundary.
|
|
17
17
|
*/
|
|
18
|
-
import type { DecodedNotification, AnyNotificationDefinition, NotificationFrame, Message, ParamsOf, ResultOf, RpcDefinition
|
|
18
|
+
import type { DecodedNotification, AnyNotificationDefinition, NotificationFrame, Message, ParamsOf, ResultOf, RpcDefinition } from "@moltzap/protocol";
|
|
19
19
|
import { Effect } from "effect";
|
|
20
20
|
import { MoltZapService, type ServiceRpcError } from "../service.js";
|
|
21
21
|
import type { RpcCallOptions } from "../ws-client.js";
|
|
@@ -35,12 +35,12 @@ export declare class FakeMoltZapService extends MoltZapService {
|
|
|
35
35
|
/**
|
|
36
36
|
* Register a canned response, typed against the real RPC descriptor.
|
|
37
37
|
*/
|
|
38
|
-
setResponse<D extends RpcDefinition<string,
|
|
38
|
+
setResponse<D extends RpcDefinition<string, any, any>>(definition: D, result: ResultOf<D>): void;
|
|
39
39
|
/**
|
|
40
40
|
* Remove a previously-registered response.
|
|
41
41
|
*/
|
|
42
|
-
deleteResponse<D extends RpcDefinition<string,
|
|
43
|
-
sendRpc<D extends RpcDefinition<string,
|
|
42
|
+
deleteResponse<D extends RpcDefinition<string, any, any>>(definition: D): void;
|
|
43
|
+
sendRpc<D extends RpcDefinition<string, any, any>>(definition: D, params: ParamsOf<D>, opts?: RpcCallOptions): Effect.Effect<ResultOf<D>, ServiceRpcError>;
|
|
44
44
|
/**
|
|
45
45
|
* Insert a message into the service's internal buffer without going
|
|
46
46
|
* through the WebSocket path — used to stage state for context-building
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake-service.d.ts","sourceRoot":"","sources":["../../src/test-utils/fake-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EACjB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,aAAa,
|
|
1
|
+
{"version":3,"file":"fake-service.d.ts","sourceRoot":"","sources":["../../src/test-utils/fake-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EACjB,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,aAAa,EACd,MAAM,mBAAmB,CAAC;AAM3B,OAAO,EAAE,MAAM,EAAwB,MAAM,QAAQ,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD,sCAAsC;AACtC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB;AAED,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,KAAK,EAAE,YAAY,EAAE,CAAM;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAGtB;gBAGF,IAAI,GAAE;QACJ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACd;IAQR;;OAEG;IACH,WAAW,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EACnD,UAAU,EAAE,CAAC,EACb,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,GAClB,IAAI;IAIP;;OAEG;IACH,cAAc,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EACtD,UAAU,EAAE,CAAC,GACZ,IAAI;IAIE,OAAO,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EACxD,UAAU,EAAE,CAAC,EACb,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EACnB,IAAI,CAAC,EAAE,cAAc,GACpB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC;IAiC9C;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI;IAY9C,wEAAwE;IACxE,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAuBzC,gBAAgB,CACd,YAAY,EAAE,mBAAmB,CAAC,yBAAyB,CAAC,GAC3D,IAAI;IAIP,yEAAyE;IACzE,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAQlD;;;;OAIG;IACH,OAAO,KAAK,iBAAiB,GAE5B;IAED,OAAO,KAAK,mBAAmB,GAK9B;CACF"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* Canned responses are validated through the descriptor's result schema before
|
|
16
16
|
* they are returned, matching the real transport boundary.
|
|
17
17
|
*/
|
|
18
|
-
import {
|
|
18
|
+
import { decodeServerInbound, JSON_RPC_RESERVED_CODES, RpcServerError, } from "@moltzap/protocol";
|
|
19
19
|
import { Effect, HashMap, Option, Ref } from "effect";
|
|
20
20
|
import { MoltZapService } from "../service.js";
|
|
21
21
|
import { testAgentId } from "./ids.js";
|
|
@@ -46,14 +46,16 @@ export class FakeMoltZapService extends MoltZapService {
|
|
|
46
46
|
this.calls.push(opts === undefined ? { method, params } : { method, params, opts });
|
|
47
47
|
const responder = this.responses.get(method);
|
|
48
48
|
if (responder !== undefined) {
|
|
49
|
-
return responder(params).pipe(Effect.flatMap((result) =>
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
return responder(params).pipe(Effect.flatMap((result) => definition.validateResult(result)
|
|
50
|
+
? Effect.succeed(result)
|
|
51
|
+
: Effect.fail(new RpcServerError({
|
|
52
|
+
code: JSON_RPC_RESERVED_CODES.InternalError,
|
|
53
|
+
message: `FakeMoltZapService: invalid result for ${method}`,
|
|
54
|
+
data: result,
|
|
55
|
+
}))));
|
|
54
56
|
}
|
|
55
57
|
return Effect.fail(new RpcServerError({
|
|
56
|
-
code:
|
|
58
|
+
code: JSON_RPC_RESERVED_CODES.MethodNotFound,
|
|
57
59
|
message: `FakeMoltZapService: no canned response for ${method}`,
|
|
58
60
|
}));
|
|
59
61
|
});
|
|
@@ -72,12 +74,19 @@ export class FakeMoltZapService extends MoltZapService {
|
|
|
72
74
|
}
|
|
73
75
|
/** Deliver a protocol notification through the real service handler. */
|
|
74
76
|
emitEvent(event) {
|
|
75
|
-
const
|
|
76
|
-
code:
|
|
77
|
+
const decoded = Effect.runSync(decodeServerInbound(event).pipe(Effect.mapError(() => new RpcServerError({
|
|
78
|
+
code: JSON_RPC_RESERVED_CODES.InvalidParams,
|
|
77
79
|
message: `FakeMoltZapService: invalid notification ${event.method}`,
|
|
78
80
|
data: event.params,
|
|
79
81
|
}))));
|
|
80
|
-
|
|
82
|
+
if (decoded._tag !== "Notification") {
|
|
83
|
+
throw new RpcServerError({
|
|
84
|
+
code: JSON_RPC_RESERVED_CODES.InvalidParams,
|
|
85
|
+
message: `FakeMoltZapService: emitEvent expects a notification frame, got ${decoded._tag}`,
|
|
86
|
+
data: event,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
this.emitNotification(decoded);
|
|
81
90
|
}
|
|
82
91
|
emitNotification(notification) {
|
|
83
92
|
this.handleNotification(notification);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake-service.js","sourceRoot":"","sources":["../../src/test-utils/fake-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"fake-service.js","sourceRoot":"","sources":["../../src/test-utils/fake-service.ts"],"names":[],"mappings":"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"}
|
package/dist/test-utils/ids.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
type AgentId = Static<typeof AgentIdSchema>;
|
|
4
|
-
type ConversationId = Static<typeof ConversationIdSchema>;
|
|
5
|
-
type MessageId = Static<typeof MessageIdSchema>;
|
|
1
|
+
import type { AgentId } from "@moltzap/protocol/identity";
|
|
2
|
+
import type { ConversationId, MessageId } from "@moltzap/protocol/task";
|
|
6
3
|
export declare const testAgentId: (label: string) => AgentId;
|
|
7
4
|
export declare const testConversationId: (label: string) => ConversationId;
|
|
8
5
|
export declare const testMessageId: (label: string) => MessageId;
|
|
9
|
-
export {};
|
|
10
6
|
//# sourceMappingURL=ids.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/test-utils/ids.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/test-utils/ids.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAqDxE,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,OACV,CAAC;AAEnC,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,KAAG,cACH,CAAC;AAEjD,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,SACR,CAAC"}
|
package/dist/test-utils/ids.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { agentId, conversationId, messageId
|
|
2
|
-
import { AgentId as AgentIdSchema, ConversationId as ConversationIdSchema, MessageId as MessageIdSchema, } from "@moltzap/protocol/schemas/primitives";
|
|
1
|
+
import { agentId, conversationId, messageId } from "@moltzap/protocol/testing";
|
|
3
2
|
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
4
3
|
const HEX_ALPHABET = "0123456789abcdef";
|
|
5
4
|
const HEX_WORD = "00000000";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/test-utils/ids.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/test-utils/ids.ts"],"names":[],"mappings":"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"}
|
package/dist/ws-client.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
import { Connect, NotConnectedError, RpcServerError, RpcTimeoutError, type
|
|
2
|
+
import { Connect, NotConnectedError, RpcServerError, RpcTimeoutError, type AnyTaskCallbackRpcDefinition, type AnyNotificationDefinition, type JsonRpcId, type ParamsOf, type ResultOf, type RpcDefinition } from "@moltzap/protocol";
|
|
3
3
|
import { DuplicateServerRpcHandlerError } from "./runtime/errors.js";
|
|
4
|
-
import { type DecodedNotification
|
|
4
|
+
import { type DecodedNotification } from "./runtime/frame.js";
|
|
5
5
|
import { type NotificationSubscription, type SubscriberHandler, type SubscriptionFilter } from "./runtime/subscribers.js";
|
|
6
6
|
import { type CloseInfo } from "./runtime/close-info.js";
|
|
7
7
|
import { type PartitionedDispatcherConfig } from "./internal/app-callback-partitioned-dispatcher.js";
|
|
@@ -14,7 +14,7 @@ export declare const RPC_TIMEOUT_MS = 30000;
|
|
|
14
14
|
export interface RpcCallOptions {
|
|
15
15
|
readonly timeoutMs?: number;
|
|
16
16
|
}
|
|
17
|
-
type ConnectResult =
|
|
17
|
+
type ConnectResult = ResultOf<typeof Connect>;
|
|
18
18
|
/**
|
|
19
19
|
* appCallback dispatcher knobs exposed on `MoltZapWsClientOptions`. All optional;
|
|
20
20
|
* defaults from `DEFAULT_PARTITIONED_DISPATCHER_CONFIG`.
|
|
@@ -33,58 +33,20 @@ export type AppCallbackDispatcherConfig = Partial<PartitionedDispatcherConfig>;
|
|
|
33
33
|
* `error`. Defects (handler crashes, non-tagged exceptions) collapse to a
|
|
34
34
|
* generic InternalError reply.
|
|
35
35
|
*
|
|
36
|
-
* The `unknown`/`unknown` parameter and result types
|
|
37
|
-
*
|
|
38
|
-
*
|
|
36
|
+
* The `unknown`/`unknown` parameter and result types narrow generically
|
|
37
|
+
* against `taskCallbackMethods` at each `handleServerRpc(definition,
|
|
38
|
+
* handler)` call site via the `AnyTaskCallbackRpcDefinition` union. Phase
|
|
39
|
+
* 9b consumer-migration retired the legacy `AppCallbackRpcMap` indirection
|
|
40
|
+
* alongside the appCallback group collapse to a single member.
|
|
39
41
|
*/
|
|
40
42
|
export interface ServerRpcContext {
|
|
41
|
-
readonly requestId:
|
|
42
|
-
readonly definition:
|
|
43
|
+
readonly requestId: JsonRpcId;
|
|
44
|
+
readonly definition: AnyTaskCallbackRpcDefinition;
|
|
43
45
|
readonly traceparent?: string;
|
|
44
46
|
}
|
|
45
|
-
export type ServerRpcHandler<D extends
|
|
47
|
+
export type ServerRpcHandler<D extends AnyTaskCallbackRpcDefinition = AnyTaskCallbackRpcDefinition> = (params: ParamsOf<D>, ctx: ServerRpcContext & {
|
|
46
48
|
readonly definition: D;
|
|
47
|
-
}) => Effect.Effect<
|
|
48
|
-
/**
|
|
49
|
-
* Pre-validation alias used internally by buffer/waiter machinery —
|
|
50
|
-
* the decoder is payload-opaque so frames carry `params: unknown`
|
|
51
|
-
* until a typed bridge runs `validateNotificationParams`.
|
|
52
|
-
*/
|
|
53
|
-
type AnyRawDecodedNotification = RawDecodedNotification<AnyNotificationDefinition>;
|
|
54
|
-
/**
|
|
55
|
-
* Validate `notification.params` against the schema attached by the
|
|
56
|
-
* decoder. Type predicate: a `true` result lifts the input from the
|
|
57
|
-
* raw (`params: unknown`) shape to the validated
|
|
58
|
-
* `DecodedNotification<…>` shape — the compiler-enforced lift the
|
|
59
|
-
* inbound bridges rely on. Logs a structured drift warning and
|
|
60
|
-
* returns `false` on failure. Every typed dispatcher MUST route
|
|
61
|
-
* through this guard before invoking handlers, because the wire
|
|
62
|
-
* decoder is payload-opaque (required for the
|
|
63
|
-
* `delivery/payload-opacity-client` and
|
|
64
|
-
* `boundary/schema-exhaustive-fuzz-client` conformance properties).
|
|
65
|
-
*
|
|
66
|
-
* The signature is non-generic over a single descriptor: the input
|
|
67
|
-
* accepts the broad `AnyRawDecodedNotification` union (distributed
|
|
68
|
-
* over all known descriptors), and the predicate narrows to the
|
|
69
|
-
* matching distributed validated union. Per-descriptor narrowing is
|
|
70
|
-
* the job of the caller's enclosing `is`-predicate
|
|
71
|
-
* (e.g. `acceptTypedNotification<D>`); this helper just gates "params
|
|
72
|
-
* conform to the attached schema." Current call sites:
|
|
73
|
-
* `acceptTypedNotification` below (typed-promise resolver) and
|
|
74
|
-
* `service.ts:handleNotification` (subscriber-fanout dispatch into
|
|
75
|
-
* the typed handler bucket).
|
|
76
|
-
*/
|
|
77
|
-
export declare function validateNotificationParams(notification: AnyRawDecodedNotification, logger: WsClientLogger | undefined): notification is DecodedNotification<AnyNotificationDefinition>;
|
|
78
|
-
/**
|
|
79
|
-
* Typed bridge for `waitForNotification`: matches the notification's
|
|
80
|
-
* descriptor against `definition` and then validates its params via
|
|
81
|
-
* `validateNotificationParams`. A frame whose method matches `definition`
|
|
82
|
-
* but whose params fail validation is logged and skipped — the typed
|
|
83
|
-
* promise never resolves with a malformed payload typed as if it were
|
|
84
|
-
* valid. "Skip on non-match" semantics for the bucketed waiter map are
|
|
85
|
-
* preserved; the validation guard is the lift from raw to validated.
|
|
86
|
-
*/
|
|
87
|
-
export declare function acceptTypedNotification<D extends AnyNotificationDefinition>(definition: D, notification: AnyRawDecodedNotification, logger: WsClientLogger | undefined): notification is DecodedNotification<D>;
|
|
49
|
+
}) => Effect.Effect<ResultOf<D>, RpcServerError>;
|
|
88
50
|
export interface WsClientLogger {
|
|
89
51
|
info: (...args: unknown[]) => void;
|
|
90
52
|
warn: (...args: unknown[]) => void;
|
|
@@ -116,16 +78,7 @@ export interface MoltZapWsClientOptions {
|
|
|
116
78
|
appCallbackDispatcher?: AppCallbackDispatcherConfig;
|
|
117
79
|
}
|
|
118
80
|
/**
|
|
119
|
-
*
|
|
120
|
-
* request `id` alongside the typed result without leaking the JSON-RPC wire
|
|
121
|
-
* object onto the caller surface.
|
|
122
|
-
*/
|
|
123
|
-
export interface TrackedRpcResponse<R> {
|
|
124
|
-
readonly id: JsonRpcStringId;
|
|
125
|
-
readonly result: R;
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* WebSocket lifecycle: open → auth/connect → active. On disconnect,
|
|
81
|
+
* WebSocket lifecycle: open → network/connect → active. On disconnect,
|
|
129
82
|
* exponential backoff (1s base, 30s cap, jittered) retries the handshake via
|
|
130
83
|
* `Effect.sleep` + `Schedule` so TestClock can drive it. Public API is
|
|
131
84
|
* Effect-based — consumers run the returned Effects themselves (typically at
|
|
@@ -180,9 +133,9 @@ export declare class MoltZapWsClient {
|
|
|
180
133
|
* visible to the very first inbound appCallback request, and a registration
|
|
181
134
|
* made AFTER `connect()` takes effect on the next inbound frame.
|
|
182
135
|
*/
|
|
183
|
-
handleServerRpc<D extends
|
|
136
|
+
handleServerRpc<D extends AnyTaskCallbackRpcDefinition>(definition: D, handler: ServerRpcHandler<D>): Effect.Effect<void, DuplicateServerRpcHandlerError>;
|
|
184
137
|
get helloOk(): ConnectResult | null;
|
|
185
|
-
/** Open the socket, perform
|
|
138
|
+
/** Open the socket, perform network/connect, resolve with HelloOk. Fails
|
|
186
139
|
* immediately on pre-open close or error. */
|
|
187
140
|
connect(): Effect.Effect<ConnectResult, NotConnectedError | RpcTimeoutError | RpcServerError>;
|
|
188
141
|
/**
|
|
@@ -194,19 +147,7 @@ export declare class MoltZapWsClient {
|
|
|
194
147
|
* Descriptor-backed RPC call. Callers pass the protocol descriptor, and the
|
|
195
148
|
* client extracts the wire method only inside the encoder path.
|
|
196
149
|
*/
|
|
197
|
-
sendRpc<D extends RpcDefinition<string,
|
|
198
|
-
/**
|
|
199
|
-
* Send an RPC and surface the outbound request id alongside the
|
|
200
|
-
* response envelope `type` and `result`. Spec #222 §5.1–5.2:
|
|
201
|
-
* un-vacuates B4 (request-id tracking) and V5 (response-type
|
|
202
|
-
* exposure). Mirrors `sendRpc`'s descriptor-backed call shape.
|
|
203
|
-
*
|
|
204
|
-
* Invariant 3 (spec #222 §4): the returned `id` is the same identity
|
|
205
|
-
* minted inside the existing `rpc-${++counter}` site — no parallel
|
|
206
|
-
* counter, no mirror. The single-id pre-condition is what makes B4 a
|
|
207
|
-
* real check rather than a tautology.
|
|
208
|
-
*/
|
|
209
|
-
sendRpcTracked<D extends RpcDefinition<string, TSchema, TSchema>>(definition: D, params: ParamsOf<D>): Effect.Effect<TrackedRpcResponse<ResultOf<D>>, NotConnectedError | RpcTimeoutError | RpcServerError>;
|
|
150
|
+
sendRpc<D extends RpcDefinition<string, any, any>>(definition: D, params: ParamsOf<D>, opts?: RpcCallOptions): Effect.Effect<ResultOf<D>, NotConnectedError | RpcTimeoutError | RpcServerError>;
|
|
210
151
|
/**
|
|
211
152
|
* Register a per-subscription notification handler. Spec #222 §5.3 + OQ-2
|
|
212
153
|
* (A): filter grammar is the three-field `SubscriptionFilter`
|
|
@@ -234,28 +175,11 @@ export declare class MoltZapWsClient {
|
|
|
234
175
|
/** Return all buffered notifications and clear the buffer. Synchronous.
|
|
235
176
|
* Frames are pre-validation (`params: unknown`) — buffer holds the
|
|
236
177
|
* raw shape produced by the wire decoder. */
|
|
237
|
-
drainNotifications():
|
|
178
|
+
drainNotifications(): DecodedNotification<AnyNotificationDefinition>[];
|
|
238
179
|
/** Close the socket without marking as permanently closed, triggering reconnection. */
|
|
239
180
|
disconnect(): Effect.Effect<void, never>;
|
|
240
181
|
private disconnectSync;
|
|
241
182
|
private connectEffect;
|
|
242
|
-
/**
|
|
243
|
-
* Tracked variant of `sendRpcEffect`. Reuses the same Deferred /
|
|
244
|
-
* pendingRef plumbing — the only difference is the resolved value:
|
|
245
|
-
* `{id, result}` instead of bare `result`. This
|
|
246
|
-
* keeps Invariant 3 (single id source) trivially: we mint `id` once
|
|
247
|
-
* inside this body, register the Deferred under that id, and return
|
|
248
|
-
* the same id to the caller alongside the result.
|
|
249
|
-
*/
|
|
250
|
-
private sendRpcTrackedEffect;
|
|
251
|
-
/**
|
|
252
|
-
* Bare-result RPC — projects the tracked RPC envelope onto its
|
|
253
|
-
* `result` field, discarding the `{id, type}` observability surface.
|
|
254
|
-
* The write / race / timeout plumbing lives in `sendRpcTrackedEffect`
|
|
255
|
-
* so there is one shared site for Invariant 3 (single id source),
|
|
256
|
-
* Invariant 5 (typed error channel), and the `socket.writer` latch
|
|
257
|
-
* race described below.
|
|
258
|
-
*/
|
|
259
183
|
private sendRpcEffect;
|
|
260
184
|
/**
|
|
261
185
|
* Translate a typed `OfferRejected` failure from the partitioned
|
package/dist/ws-client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-client.d.ts","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAML,MAAM,EASP,MAAM,QAAQ,CAAC;AAChB,OAAO,EAEL,OAAO,
|
|
1
|
+
{"version":3,"file":"ws-client.d.ts","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"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"}
|