@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
package/dist/runtime/frame.js
CHANGED
|
@@ -1,80 +1,32 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { LIFECYCLE_CONVERSATION_SENTINEL, } from "../internal/app-callback-partition-key.js";
|
|
2
|
+
import { decodeServerInbound, MalformedFrameError, TaskAuthorizeDispatch, } from "@moltzap/protocol";
|
|
3
|
+
import {} from "../internal/app-callback-partition-key.js";
|
|
5
4
|
const isFramePadding = (char) => char === "\u0000" || char === "\ufeff" || /\s/u.test(char);
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
return Effect.succeed(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return decodeRpcRequest(appCallbackRpcGroup, parsed).pipe(Effect.mapError((cause) => new MalformedFrameError({ raw, cause })), Effect.flatMap((request) => appCallbackPartitionRoute(request).pipe(Effect.map((partition) => ({
|
|
21
|
-
_tag: "ServerRequest",
|
|
22
|
-
...request,
|
|
23
|
-
partition,
|
|
24
|
-
})))));
|
|
25
|
-
}
|
|
26
|
-
if (validators.notificationFrame(parsed)) {
|
|
27
|
-
return toDecodedNotification(parsed);
|
|
28
|
-
}
|
|
29
|
-
return Effect.fail(new MalformedFrameError({ raw }));
|
|
5
|
+
const liftServerInbound = (decoded, raw) => {
|
|
6
|
+
if (decoded._tag === "ResponseSuccess")
|
|
7
|
+
return Effect.succeed(decoded);
|
|
8
|
+
if (decoded._tag === "ResponseError")
|
|
9
|
+
return Effect.succeed(decoded);
|
|
10
|
+
if (decoded._tag === "Notification")
|
|
11
|
+
return Effect.succeed(decoded);
|
|
12
|
+
return appCallbackPartitionRoute(decoded.definition, decoded.params).pipe(Effect.map((partition) => ({
|
|
13
|
+
_tag: "ServerRequest",
|
|
14
|
+
id: decoded.id,
|
|
15
|
+
definition: decoded.definition,
|
|
16
|
+
params: decoded.params,
|
|
17
|
+
partition,
|
|
18
|
+
})), Effect.mapError((cause) => new MalformedFrameError({ raw, cause })));
|
|
30
19
|
};
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
// here. `_tag` and `definition` attach non-enumerably so the
|
|
35
|
-
// decoded value still satisfies `validators.notificationFrame`'s
|
|
36
|
-
// strict `additionalProperties: false`. Unknown methods (no
|
|
37
|
-
// descriptor) emit `UnknownDecodedNotification`; production typed
|
|
38
|
-
// handlers exclude that branch via the `definition` discriminator.
|
|
39
|
-
const definition = notificationGroup.byName.get(parsed.method);
|
|
40
|
-
Object.defineProperty(parsed, "_tag", {
|
|
41
|
-
value: "Notification",
|
|
42
|
-
enumerable: false,
|
|
43
|
-
});
|
|
44
|
-
if (definition !== undefined) {
|
|
45
|
-
Object.defineProperty(parsed, "definition", {
|
|
46
|
-
value: definition,
|
|
47
|
-
enumerable: false,
|
|
48
|
-
});
|
|
49
|
-
return Effect.succeed(parsed);
|
|
50
|
-
}
|
|
51
|
-
return Effect.succeed(parsed);
|
|
52
|
-
};
|
|
53
|
-
const lifecycleRoute = (taskId) => ({
|
|
54
|
-
taskId,
|
|
55
|
-
conversationId: LIFECYCLE_CONVERSATION_SENTINEL,
|
|
56
|
-
});
|
|
57
|
-
const appCallbackPartitionRoute = (request) => {
|
|
58
|
-
if (isDecodedRpcRequest(AppsOnBeforeDispatch, request)) {
|
|
20
|
+
const appCallbackPartitionRoute = (definition, params) => {
|
|
21
|
+
if (definition === TaskAuthorizeDispatch &&
|
|
22
|
+
TaskAuthorizeDispatch.validateParams(params)) {
|
|
59
23
|
return Effect.succeed({
|
|
60
|
-
taskId:
|
|
61
|
-
conversationId:
|
|
24
|
+
taskId: params.taskId,
|
|
25
|
+
conversationId: params.conversationId,
|
|
62
26
|
});
|
|
63
27
|
}
|
|
64
|
-
if (isDecodedRpcRequest(AppsOnBeforeMessageDelivery, request)) {
|
|
65
|
-
return Effect.succeed({
|
|
66
|
-
taskId: request.params.taskId,
|
|
67
|
-
conversationId: request.params.conversationId,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
if (isDecodedRpcRequest(AppsOnSessionActive, request)) {
|
|
71
|
-
return Effect.succeed(lifecycleRoute(request.params.taskId));
|
|
72
|
-
}
|
|
73
|
-
if (isDecodedRpcRequest(AppsOnClose, request)) {
|
|
74
|
-
return Effect.succeed(lifecycleRoute(request.params.taskId));
|
|
75
|
-
}
|
|
76
28
|
return Effect.fail(new MalformedFrameError({
|
|
77
|
-
raw: "unroutable
|
|
29
|
+
raw: "unroutable task-callback request descriptor",
|
|
78
30
|
}));
|
|
79
31
|
};
|
|
80
32
|
export const splitRawFrames = (raw) => Effect.try({
|
|
@@ -155,7 +107,9 @@ export const decodeFrames = (raw) => Effect.gen(function* () {
|
|
|
155
107
|
catch (err) {
|
|
156
108
|
return yield* Effect.fail(new MalformedFrameError({ raw: frameText, cause: err }));
|
|
157
109
|
}
|
|
158
|
-
const decoded = yield*
|
|
110
|
+
const decoded = yield* decodeServerInbound(parsed).pipe(Effect.flatMap((d) => liftServerInbound(d, frameText)), Effect.mapError((cause) => cause instanceof MalformedFrameError
|
|
111
|
+
? cause
|
|
112
|
+
: new MalformedFrameError({ raw: frameText, cause })));
|
|
159
113
|
decodedFrames.push(decoded);
|
|
160
114
|
}
|
|
161
115
|
return decodedFrames;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame.js","sourceRoot":"","sources":["../../src/runtime/frame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"frame.js","sourceRoot":"","sources":["../../src/runtime/frame.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { Effect } from "effect";
|
|
1
|
+
import { Effect, Exit } from "effect";
|
|
2
2
|
import { describe, expect, it } from "vitest";
|
|
3
|
-
import { MessageReceivedNotificationDefinition
|
|
3
|
+
import { MessageReceivedNotificationDefinition } from "@moltzap/protocol";
|
|
4
|
+
import { agentId, conversationId, messageId } from "@moltzap/protocol/testing";
|
|
4
5
|
import { decodeFrames } from "./frame.js";
|
|
6
|
+
import { MalformedFrameError } from "./errors.js";
|
|
5
7
|
const TEST_MESSAGE = {
|
|
6
8
|
id: messageId("11111111-1111-4111-8111-111111111111"),
|
|
7
9
|
conversationId: conversationId("22222222-2222-4222-8222-222222222222"),
|
|
@@ -11,7 +13,7 @@ const TEST_MESSAGE = {
|
|
|
11
13
|
};
|
|
12
14
|
describe("decodeFrames", () => {
|
|
13
15
|
it("decodes padded chunks that contain both a notification and a response", async () => {
|
|
14
|
-
const raw = JSON.stringify(
|
|
16
|
+
const raw = JSON.stringify(MessageReceivedNotificationDefinition.encode({
|
|
15
17
|
message: TEST_MESSAGE,
|
|
16
18
|
})) +
|
|
17
19
|
"\u0000\n" +
|
|
@@ -28,19 +30,17 @@ describe("decodeFrames", () => {
|
|
|
28
30
|
params: { message: TEST_MESSAGE },
|
|
29
31
|
});
|
|
30
32
|
expect(decoded[1]).toMatchObject({
|
|
31
|
-
_tag: "
|
|
33
|
+
_tag: "ResponseSuccess",
|
|
32
34
|
id: "rpc-7",
|
|
33
35
|
result: { ok: true },
|
|
34
36
|
});
|
|
35
37
|
});
|
|
36
|
-
//
|
|
37
|
-
//
|
|
38
|
-
//
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
|
|
42
|
-
// `{taskId, conversations, closedBy: {agentId, ownerId}}`.
|
|
43
|
-
it("attaches definition for known methods so subscribers can reject stale `task/closed` payload", async () => {
|
|
38
|
+
// S9 fail-close: stale shapes are rejected at the wire boundary.
|
|
39
|
+
// Pre-Phase-7 `task/closed` carrying `sessionId` instead of
|
|
40
|
+
// `{taskId, conversations, closedBy: {agentId, ownerId}}` decodes to
|
|
41
|
+
// `MalformedFrameError`; subscribers no longer need to defend
|
|
42
|
+
// against drift downstream because the decoder fails closed.
|
|
43
|
+
it("fail-closes stale `task/closed` payload at the wire boundary", async () => {
|
|
44
44
|
const stale = JSON.stringify({
|
|
45
45
|
jsonrpc: "2.0",
|
|
46
46
|
method: "task/closed",
|
|
@@ -49,28 +49,22 @@ describe("decodeFrames", () => {
|
|
|
49
49
|
closedBy: "33333333-3333-4333-8333-333333333333",
|
|
50
50
|
},
|
|
51
51
|
});
|
|
52
|
-
const
|
|
53
|
-
expect(
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
conversations: { main: "22222222-2222-4222-8222-222222222222" },
|
|
69
|
-
closedBy: {
|
|
70
|
-
agentId: "33333333-3333-4333-8333-333333333333",
|
|
71
|
-
ownerId: "owner-1",
|
|
72
|
-
},
|
|
73
|
-
})).toBe(true);
|
|
52
|
+
const exit = await Effect.runPromiseExit(decodeFrames(stale));
|
|
53
|
+
expect(Exit.isFailure(exit)).toBe(true);
|
|
54
|
+
if (Exit.isFailure(exit)) {
|
|
55
|
+
const error = exit.cause._tag === "Fail" ? exit.cause.error : null;
|
|
56
|
+
expect(error).toBeInstanceOf(MalformedFrameError);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
// S9 also rejects unknown notification methods at the wire boundary.
|
|
60
|
+
it("fail-closes unknown notification method", async () => {
|
|
61
|
+
const stranger = JSON.stringify({
|
|
62
|
+
jsonrpc: "2.0",
|
|
63
|
+
method: "some/unregistered-method",
|
|
64
|
+
params: {},
|
|
65
|
+
});
|
|
66
|
+
const exit = await Effect.runPromiseExit(decodeFrames(stranger));
|
|
67
|
+
expect(Exit.isFailure(exit)).toBe(true);
|
|
74
68
|
});
|
|
75
69
|
});
|
|
76
70
|
//# sourceMappingURL=frame.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame.test.js","sourceRoot":"","sources":["../../src/runtime/frame.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"frame.test.js","sourceRoot":"","sources":["../../src/runtime/frame.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
* `register`, `dispatch`, and `closeAll` are `Effect<T, never>`.
|
|
31
31
|
*/
|
|
32
32
|
import { Brand, Effect } from "effect";
|
|
33
|
-
import type {
|
|
33
|
+
import type { AnyNotificationDefinition, DecodedNotification } from "@moltzap/protocol";
|
|
34
34
|
interface FilterableNotificationFrame {
|
|
35
35
|
readonly method: string;
|
|
36
36
|
readonly params?: unknown;
|
|
@@ -82,13 +82,10 @@ export interface NotificationSubscription {
|
|
|
82
82
|
* dispatch fiber. Must not throw — throws are caught by the registry,
|
|
83
83
|
* logged via the injected logger, and swallowed.
|
|
84
84
|
*
|
|
85
|
-
* The frame
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
* `params` is genuinely opaque here — handlers that need a typed
|
|
90
|
-
* payload must validate themselves (`frame.definition?.validateParams`)
|
|
91
|
-
* or live behind the typed-handler bridge in `service.handleNotification`.
|
|
85
|
+
* The frame is a known-descriptor `DecodedNotification` (post-S9
|
|
86
|
+
* fail-close: malformed / unknown-method frames are rejected before
|
|
87
|
+
* dispatch). Handlers receive validated `params` typed as
|
|
88
|
+
* `NotificationParamsOf<D>` for the matching definition.
|
|
92
89
|
*
|
|
93
90
|
* Returning an `Effect` (not a plain `void`) lets handlers compose with
|
|
94
91
|
* Effect-native downstream code without an extra runSync shim. The
|
|
@@ -97,7 +94,7 @@ export interface NotificationSubscription {
|
|
|
97
94
|
* handler on subscription A does not reorder frames seen by
|
|
98
95
|
* subscription B across frames.
|
|
99
96
|
*/
|
|
100
|
-
export type SubscriberHandler = (frame:
|
|
97
|
+
export type SubscriberHandler = (frame: DecodedNotification<AnyNotificationDefinition>) => Effect.Effect<void, never>;
|
|
101
98
|
/**
|
|
102
99
|
* Subscriber registry. One instance per `MoltZapWsClient`, created at
|
|
103
100
|
* construction time and owned by the client. Not exported from the
|
|
@@ -120,7 +117,7 @@ export interface SubscriberRegistry {
|
|
|
120
117
|
* live-subscription list at the start of dispatch so
|
|
121
118
|
* unsubscribe-during-dispatch observes next-frame semantics (OQ-3 A).
|
|
122
119
|
*
|
|
123
|
-
* Frames are pre-validation (`
|
|
120
|
+
* Frames are pre-validation (`DecodedNotification<AnyNotificationDefinition>` union) — the
|
|
124
121
|
* type-system contract that subscribers see RAW frames, not the lifted
|
|
125
122
|
* `DecodedNotification<D>` shape that typed handlers see.
|
|
126
123
|
*
|
|
@@ -128,7 +125,7 @@ export interface SubscriberRegistry {
|
|
|
128
125
|
* handlers block later subscriptions for this frame but never
|
|
129
126
|
* reorder frame N relative to frame N+1.
|
|
130
127
|
*/
|
|
131
|
-
readonly dispatch: (frame:
|
|
128
|
+
readonly dispatch: (frame: DecodedNotification<AnyNotificationDefinition>) => Effect.Effect<void, never>;
|
|
132
129
|
/**
|
|
133
130
|
* Drop every live subscription. Called from `MoltZapWsClient.close`
|
|
134
131
|
* so handlers stop firing once the client is torn down. Idempotent.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribers.d.ts","sourceRoot":"","sources":["../../src/runtime/subscribers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAO,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"subscribers.d.ts","sourceRoot":"","sources":["../../src/runtime/subscribers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAO,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EACV,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAE3B,UAAU,2BAA2B;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,0EAA0E;AAC1E,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACpE,eAAO,MAAM,cAAc,yCAAkC,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CAC1C;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;CAClD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,KAAK,EAAE,mBAAmB,CAAC,yBAAyB,CAAC,KAClD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,CACjB,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,iBAAiB,KACvB,MAAM,CAAC,MAAM,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IAEpD;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,QAAQ,EAAE,CACjB,KAAK,EAAE,mBAAmB,CAAC,yBAAyB,CAAC,KAClD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEhC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;CAC/C;AAcD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CAC1D,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CA8C3C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAmBT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribers.js","sourceRoot":"","sources":["../../src/runtime/subscribers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"subscribers.js","sourceRoot":"","sources":["../../src/runtime/subscribers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAa5C,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,EAAkB,CAAC;AAmH9D,SAAS,0BAA0B,CACjC,KAAc;IAEd,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAEtC;IACC,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAkC,EAAE,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEtC,MAAM,QAAQ,GAAmC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CACnE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5D,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACtC,MAAM,IAAI,GAAqB,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YACvD,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;YAClD,MAAM,WAAW,GAA+B,GAAG,CAAC,MAAM,CACxD,OAAO,EACP,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CACtC,CAAC;YACF,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEL,MAAM,QAAQ,GAAmC,CAAC,KAAK,EAAE,EAAE,CACzD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,+DAA+D;YAC/D,6DAA6D;YAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACzC,6DAA6D;YAC7D,4DAA4D;YAC5D,uCAAuC;YACvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAClC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;oBAAE,SAAS;gBAChD,2DAA2D;gBAC3D,6DAA6D;gBAC7D,oBAAoB;gBACpB,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAClD,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE,EAAE,CAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;oBACf,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;gBAC/C,CAAC,CAAC,CACH,CACF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEL,MAAM,QAAQ,GAA+B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAElE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAC3B,MAA0B,EAC1B,KAAkC;IAElC,IAAI,MAAM,CAAC,sBAAsB,KAAK,SAAS,EAAE,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,sBAAsB,CAAC;YAAE,OAAO,KAAK,CAAC;IAC5E,CAAC;IACD,MAAM,MAAM,GAAmC,0BAA0B,CACvE,KAAK,CAAC,MAAM,CACb;QACC,CAAC,CAAC,KAAK,CAAC,MAAM;QACd,CAAC,CAAC,IAAI,CAAC;IAET,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,CAAC;QACtC,IAAI,GAAG,KAAK,MAAM,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;IAC/C,CAAC;IACD,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,gBAAgB,CAAC,CAAC;QACvC,IAAI,GAAG,KAAK,MAAM,CAAC,cAAc;YAAE,OAAO,KAAK,CAAC;IAClD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import { describe, expect, it, vi } from "vitest";
|
|
18
18
|
import { Effect, Ref } from "effect";
|
|
19
|
-
import {
|
|
19
|
+
import { ConversationArchivedNotificationDefinition, } from "@moltzap/protocol";
|
|
20
|
+
import { agentId, conversationId, taskId, TaskFailedNotificationDefinition, } from "@moltzap/protocol/testing";
|
|
20
21
|
import { makeSubscriberRegistry, matchesFilter } from "./subscribers.js";
|
|
21
22
|
const TASK_ID = taskId("11111111-1111-4111-8111-111111111111");
|
|
22
23
|
const CONV_1 = conversationId("22222222-2222-4222-8222-222222222222");
|
|
@@ -27,25 +28,18 @@ const filterableNotification = (method, params) => ({
|
|
|
27
28
|
params,
|
|
28
29
|
});
|
|
29
30
|
const decodedNotification = (definition, params) => {
|
|
30
|
-
// Construct a
|
|
31
|
+
// Construct a DecodedNotification<D> directly from the typed
|
|
31
32
|
// descriptor + params — bypassing the wire decoder is intentional
|
|
32
33
|
// for test fixtures so the result type stays narrow to D rather than
|
|
33
|
-
// collapsing to the group's union.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const decoded = {
|
|
39
|
-
...frame,
|
|
34
|
+
// collapsing to the group's union.
|
|
35
|
+
const frame = definition.encode(params);
|
|
36
|
+
return {
|
|
37
|
+
_tag: "Notification",
|
|
38
|
+
jsonrpc: frame.jsonrpc,
|
|
40
39
|
definition,
|
|
41
40
|
method: definition.name,
|
|
42
41
|
params,
|
|
43
42
|
};
|
|
44
|
-
Object.defineProperty(decoded, "_tag", {
|
|
45
|
-
value: "Notification",
|
|
46
|
-
enumerable: false,
|
|
47
|
-
});
|
|
48
|
-
return decoded;
|
|
49
43
|
};
|
|
50
44
|
const taskFailedNotification = () => decodedNotification(TaskFailedNotificationDefinition, {
|
|
51
45
|
taskId: TASK_ID,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscribers.test.js","sourceRoot":"","sources":["../../src/runtime/subscribers.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"subscribers.test.js","sourceRoot":"","sources":["../../src/runtime/subscribers.test.ts"],"names":[],"mappings":"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"}
|
package/dist/service.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type HelloOk, type
|
|
1
|
+
import { type HelloOk, type AnyNotificationDefinition, type DecodedNotification, type Message, type ConversationArchivedNotification, type ConversationUnarchivedNotification, NotConnectedError, RpcServerError, RpcTimeoutError, type ParamsOf, type ResultOf, type RpcDefinition } from "@moltzap/protocol";
|
|
2
2
|
import { Effect } from "effect";
|
|
3
3
|
import { type RpcCallOptions, type WsClientLogger } from "./ws-client.js";
|
|
4
4
|
import { AgentNotFoundError } from "./runtime/errors.js";
|
|
@@ -49,14 +49,14 @@ interface ServiceHandlerPayloads {
|
|
|
49
49
|
readonly message: Message;
|
|
50
50
|
/**
|
|
51
51
|
* The "raw notification" surface receives the wire decoder's
|
|
52
|
-
* `
|
|
52
|
+
* `DecodedNotification<AnyNotificationDefinition>` union — known methods carry the
|
|
53
53
|
* descriptor and a raw `params: unknown` payload (validation hasn't
|
|
54
54
|
* happened yet); unknown methods carry no descriptor at all.
|
|
55
55
|
* Subscribers that want validated payloads register specific typed
|
|
56
56
|
* `on(...)` handlers (e.g. `conversationArchived`) which run behind
|
|
57
57
|
* the typed-bridge lift in `handleNotification`.
|
|
58
58
|
*/
|
|
59
|
-
readonly rawNotification:
|
|
59
|
+
readonly rawNotification: DecodedNotification<AnyNotificationDefinition>;
|
|
60
60
|
readonly disconnect: void;
|
|
61
61
|
readonly reconnect: HelloOk;
|
|
62
62
|
readonly conversationArchived: ConversationArchivedNotification;
|
|
@@ -95,7 +95,6 @@ export declare class MoltZapService {
|
|
|
95
95
|
private readonly lastReadRef;
|
|
96
96
|
private readonly archivedConversationIds;
|
|
97
97
|
private readonly handlers;
|
|
98
|
-
private readonly notificationHandlers;
|
|
99
98
|
private _ownAgentId;
|
|
100
99
|
constructor(opts: ServiceOptions);
|
|
101
100
|
get connected(): boolean;
|
|
@@ -185,7 +184,7 @@ export declare class MoltZapService {
|
|
|
185
184
|
private iterNewMessagesByConv;
|
|
186
185
|
private advanceLastNotified;
|
|
187
186
|
on<K extends ServiceHandlerName>(notification: K, handler: NotificationHandler<ServiceHandlerPayloads[K]>): void;
|
|
188
|
-
sendRpc<D extends RpcDefinition<string,
|
|
187
|
+
sendRpc<D extends RpcDefinition<string, any, any>>(definition: D, params: ParamsOf<D>, opts?: RpcCallOptions): Effect.Effect<ResultOf<D>, ServiceRpcError>;
|
|
189
188
|
/**
|
|
190
189
|
* Fetch full conversation details (including participants) via RPC and merge
|
|
191
190
|
* into the local cache. Called on ConversationCreated notifications because
|
|
@@ -193,9 +192,7 @@ export declare class MoltZapService {
|
|
|
193
192
|
* protocol/notifications.ts.
|
|
194
193
|
*/
|
|
195
194
|
private refreshConversationParticipants;
|
|
196
|
-
|
|
197
|
-
protected handleNotification(notification: DecodedNotificationFrame): void;
|
|
198
|
-
private createNotificationHandlers;
|
|
195
|
+
protected handleNotification(notification: DecodedNotification<AnyNotificationDefinition>): void;
|
|
199
196
|
private handleMessageReceivedNotification;
|
|
200
197
|
private handleConversationCreatedNotification;
|
|
201
198
|
private handleConversationUpdatedNotification;
|
package/dist/service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|