@moltzap/client 2026.411.0 → 2026.413.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.
@@ -0,0 +1,43 @@
1
+ /** Test fixture factory for ChannelService-shaped objects. */
2
+ import type { Message } from "@moltzap/protocol";
3
+ import type { ChannelService, CrossConversationEntry } from "../index.js";
4
+ interface FixtureConversationMeta {
5
+ type: string;
6
+ name?: string;
7
+ participants: string[];
8
+ }
9
+ /** Fire events on the fixture service. */
10
+ export interface ChannelServiceEmit {
11
+ message(msg: Message): void;
12
+ disconnect(): void;
13
+ reconnect(): void;
14
+ }
15
+ export interface ChannelServiceState {
16
+ setConversation(id: string, meta: FixtureConversationMeta): void;
17
+ setAgentName(id: string, name: string): void;
18
+ setContextEntries(currentConvId: string, entries: CrossConversationEntry[]): void;
19
+ setResolveAgentNameFailure(agentId: string, err: Error): void;
20
+ setConnectResult(result: unknown): void;
21
+ readonly sent: ReadonlyArray<{
22
+ convId: string;
23
+ text: string;
24
+ }>;
25
+ readonly connectCalls: {
26
+ count: number;
27
+ };
28
+ readonly closeCalls: {
29
+ count: number;
30
+ };
31
+ resolveAgentNameCallCount(agentId: string): number;
32
+ }
33
+ export interface FakeChannelService {
34
+ service: ChannelService;
35
+ emit: ChannelServiceEmit;
36
+ state: ChannelServiceState;
37
+ }
38
+ export interface CreateFakeChannelServiceOptions {
39
+ ownAgentId?: string;
40
+ }
41
+ export declare function createFakeChannelService(opts?: CreateFakeChannelServiceOptions): FakeChannelService;
42
+ export {};
43
+ //# sourceMappingURL=channel-service-fixture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-service-fixture.d.ts","sourceRoot":"","sources":["../../src/test-utils/channel-service-fixture.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAE9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAK1E,UAAU,uBAAuB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,0CAA0C;AAC1C,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,UAAU,IAAI,IAAI,CAAC;IACnB,SAAS,IAAI,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACjE,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,iBAAiB,CACf,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,sBAAsB,EAAE,GAChC,IAAI,CAAC;IACR,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI,CAAC;IAC9D,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,QAAQ,CAAC,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;CACpD;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,EAAE,mBAAmB,CAAC;CAC5B;AAED,MAAM,WAAW,+BAA+B;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,wBAAwB,CACtC,IAAI,GAAE,+BAAoC,GACzC,kBAAkB,CAgHpB"}
@@ -0,0 +1,106 @@
1
+ /** Test fixture factory for ChannelService-shaped objects. */
2
+ export function createFakeChannelService(opts = {}) {
3
+ const messageHandlers = [];
4
+ const disconnectHandlers = [];
5
+ const reconnectHandlers = [];
6
+ const conversations = new Map();
7
+ const agentNames = new Map();
8
+ const contextEntriesByConv = new Map();
9
+ const resolveFailures = new Map();
10
+ const resolveCalls = [];
11
+ const sent = [];
12
+ const connectCalls = { count: 0 };
13
+ const closeCalls = { count: 0 };
14
+ let connectResult = {};
15
+ let ownAgentId = opts.ownAgentId;
16
+ const service = {
17
+ get ownAgentId() {
18
+ return ownAgentId;
19
+ },
20
+ on(event, handler) {
21
+ if (event === "message") {
22
+ messageHandlers.push(handler);
23
+ }
24
+ else if (event === "disconnect") {
25
+ disconnectHandlers.push(handler);
26
+ }
27
+ else if (event === "reconnect") {
28
+ reconnectHandlers.push(handler);
29
+ }
30
+ },
31
+ async connect() {
32
+ connectCalls.count++;
33
+ return connectResult;
34
+ },
35
+ close() {
36
+ closeCalls.count++;
37
+ },
38
+ async send(conversationId, text) {
39
+ sent.push({ convId: conversationId, text });
40
+ },
41
+ getConversation(convId) {
42
+ const m = conversations.get(convId);
43
+ if (!m)
44
+ return undefined;
45
+ return { type: m.type, name: m.name, participants: m.participants };
46
+ },
47
+ getAgentName(agentId) {
48
+ return agentNames.get(agentId);
49
+ },
50
+ async resolveAgentName(agentId) {
51
+ resolveCalls.push(agentId);
52
+ const failure = resolveFailures.get(agentId);
53
+ if (failure)
54
+ throw failure;
55
+ return agentNames.get(agentId) ?? agentId;
56
+ },
57
+ peekContextEntries(currentConvId) {
58
+ const entries = contextEntriesByConv.get(currentConvId) ?? [];
59
+ const commit = () => {
60
+ contextEntriesByConv.set(currentConvId, []);
61
+ };
62
+ return { entries, commit };
63
+ },
64
+ };
65
+ const emit = {
66
+ message(msg) {
67
+ for (const h of messageHandlers)
68
+ h(msg);
69
+ },
70
+ disconnect() {
71
+ for (const h of disconnectHandlers)
72
+ h();
73
+ },
74
+ reconnect() {
75
+ for (const h of reconnectHandlers)
76
+ h();
77
+ },
78
+ };
79
+ const state = {
80
+ setConversation(id, meta) {
81
+ conversations.set(id, meta);
82
+ },
83
+ setAgentName(id, name) {
84
+ agentNames.set(id, name);
85
+ },
86
+ setContextEntries(currentConvId, entries) {
87
+ contextEntriesByConv.set(currentConvId, entries);
88
+ },
89
+ setResolveAgentNameFailure(agentId, err) {
90
+ resolveFailures.set(agentId, err);
91
+ },
92
+ setConnectResult(result) {
93
+ connectResult = result;
94
+ },
95
+ get sent() {
96
+ return sent;
97
+ },
98
+ connectCalls,
99
+ closeCalls,
100
+ resolveAgentNameCallCount(agentId) {
101
+ return resolveCalls.filter((id) => id === agentId).length;
102
+ },
103
+ };
104
+ return { service, emit, state };
105
+ }
106
+ //# sourceMappingURL=channel-service-fixture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-service-fixture.js","sourceRoot":"","sources":["../../src/test-utils/channel-service-fixture.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { createFakeChannelService, type ChannelServiceEmit, type ChannelServiceState, type CreateFakeChannelServiceOptions, type FakeChannelService, } from "./channel-service-fixture.js";
2
+ import type { Message } from "@moltzap/protocol";
3
+ export declare function buildMessage(overrides?: Partial<Message>): Message;
4
+ export declare function flushDispatchChain(): Promise<void>;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test-utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,+BAA+B,EACpC,KAAK,kBAAkB,GACxB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,wBAAgB,YAAY,CAAC,SAAS,GAAE,OAAO,CAAC,OAAO,CAAM,GAAG,OAAO,CAUtE;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAIxD"}
@@ -0,0 +1,18 @@
1
+ export { createFakeChannelService, } from "./channel-service-fixture.js";
2
+ export function buildMessage(overrides = {}) {
3
+ return {
4
+ id: "msg-1",
5
+ conversationId: "conv-1",
6
+ sender: { type: "agent", id: "agent-alice" },
7
+ seq: 1,
8
+ parts: [{ type: "text", text: "hello" }],
9
+ createdAt: "2026-04-10T12:00:00.000Z",
10
+ ...overrides,
11
+ };
12
+ }
13
+ export async function flushDispatchChain() {
14
+ for (let i = 0; i < 20; i++) {
15
+ await Promise.resolve();
16
+ }
17
+ }
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test-utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,GAKzB,MAAM,8BAA8B,CAAC;AAItC,MAAM,UAAU,YAAY,CAAC,YAA8B,EAAE;IAC3D,OAAO;QACL,EAAE,EAAE,OAAO;QACX,cAAc,EAAE,QAAQ;QACxB,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE;QAC5C,GAAG,EAAE,CAAC;QACN,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACxC,SAAS,EAAE,0BAA0B;QACrC,GAAG,SAAS;KACF,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moltzap/client",
3
- "version": "2026.411.0",
3
+ "version": "2026.413.0",
4
4
  "description": "MoltZap client service — connection, conversation state, and cross-conversation context",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -20,6 +20,10 @@
20
20
  ".": {
21
21
  "types": "./dist/index.d.ts",
22
22
  "import": "./dist/index.js"
23
+ },
24
+ "./test-utils": {
25
+ "types": "./dist/test-utils/index.d.ts",
26
+ "import": "./dist/test-utils/index.js"
23
27
  }
24
28
  },
25
29
  "dependencies": {