@moltzap/client 2026.505.0 → 2026.505.1

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.
Files changed (60) hide show
  1. package/dist/cli/index.d.ts.map +1 -1
  2. package/dist/cli/index.js +0 -2
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/cli/transport.test.js +7 -7
  5. package/dist/cli/transport.test.js.map +1 -1
  6. package/dist/internal/__tests__/app-callback-partition-key.test.js +2 -2
  7. package/dist/internal/__tests__/app-callback-partition-key.test.js.map +1 -1
  8. package/dist/internal/__tests__/app-callback-partitioned-dispatcher-real-ws.test.js +2 -2
  9. package/dist/internal/__tests__/app-callback-partitioned-dispatcher-real-ws.test.js.map +1 -1
  10. package/dist/internal/__tests__/app-callback-partitioned-dispatcher.test.js +1 -1
  11. package/dist/internal/__tests__/app-callback-partitioned-dispatcher.test.js.map +1 -1
  12. package/dist/internal/__tests__/app-callback-test-requests.d.ts +18 -14
  13. package/dist/internal/__tests__/app-callback-test-requests.d.ts.map +1 -1
  14. package/dist/internal/__tests__/app-callback-test-requests.js +25 -25
  15. package/dist/internal/__tests__/app-callback-test-requests.js.map +1 -1
  16. package/dist/internal/app-callback-dispatcher-errors.js +1 -1
  17. package/dist/internal/app-callback-partition-key.d.ts +3 -3
  18. package/dist/internal/app-callback-partition-key.d.ts.map +1 -1
  19. package/dist/internal/app-callback-partition-key.js +4 -4
  20. package/dist/internal/app-callback-partition-key.js.map +1 -1
  21. package/dist/internal/app-callback-partition-worker.d.ts +1 -1
  22. package/dist/internal/app-callback-partition-worker.js +1 -1
  23. package/dist/runtime/frame.d.ts +3 -6
  24. package/dist/runtime/frame.d.ts.map +1 -1
  25. package/dist/runtime/frame.js +18 -10
  26. package/dist/runtime/frame.js.map +1 -1
  27. package/dist/runtime/frame.test.js +40 -1
  28. package/dist/runtime/frame.test.js.map +1 -1
  29. package/dist/runtime/subscribers.d.ts +3 -2
  30. package/dist/runtime/subscribers.d.ts.map +1 -1
  31. package/dist/runtime/subscribers.js.map +1 -1
  32. package/dist/runtime/subscribers.test.js +27 -13
  33. package/dist/runtime/subscribers.test.js.map +1 -1
  34. package/dist/service.d.ts +6 -6
  35. package/dist/service.d.ts.map +1 -1
  36. package/dist/service.js +14 -8
  37. package/dist/service.js.map +1 -1
  38. package/dist/service.typed-bridge.test.d.ts +2 -0
  39. package/dist/service.typed-bridge.test.d.ts.map +1 -0
  40. package/dist/service.typed-bridge.test.js +92 -0
  41. package/dist/service.typed-bridge.test.js.map +1 -0
  42. package/dist/ws-client.d.ts +24 -1
  43. package/dist/ws-client.d.ts.map +1 -1
  44. package/dist/ws-client.js +37 -4
  45. package/dist/ws-client.js.map +1 -1
  46. package/dist/ws-client.test.js +1 -1
  47. package/dist/ws-client.test.js.map +1 -1
  48. package/dist/ws-client.typed-bridge.test.d.ts +2 -0
  49. package/dist/ws-client.typed-bridge.test.d.ts.map +1 -0
  50. package/dist/ws-client.typed-bridge.test.js +103 -0
  51. package/dist/ws-client.typed-bridge.test.js.map +1 -0
  52. package/package.json +3 -3
  53. package/dist/cli/commands/apps.d.ts +0 -78
  54. package/dist/cli/commands/apps.d.ts.map +0 -1
  55. package/dist/cli/commands/apps.js +0 -172
  56. package/dist/cli/commands/apps.js.map +0 -1
  57. package/dist/cli/commands/apps.test.d.ts +0 -2
  58. package/dist/cli/commands/apps.test.d.ts.map +0 -1
  59. package/dist/cli/commands/apps.test.js +0 -208
  60. package/dist/cli/commands/apps.test.js.map +0 -1
@@ -1,208 +0,0 @@
1
- /**
2
- * Unit tests for `moltzap apps <subcommand>` handlers. Provides a fake
3
- * `Transport` via `Effect.provideService(Transport, fake)`; asserts on
4
- * (method, params) tuples recorded by the fake.
5
- *
6
- * Spec test-coverage floor (sbd#177 §"Cross-cutting acceptance floors"):
7
- * at least one success path and one RPC-failure path per handler.
8
- */
9
- import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
10
- import { tmpdir } from "node:os";
11
- import { join } from "node:path";
12
- import { Effect } from "effect";
13
- import { afterEach, beforeEach, describe, expect, it, vi, } from "vitest";
14
- import { appsCloseHandler, appsCreateHandler, appsGetHandler, appsListHandler, appsRegisterHandler, } from "./apps.js";
15
- import { Transport } from "../transport.js";
16
- import { makeFakeTransport } from "./test-transport.js";
17
- import { AppsCloseSession, AppsCreate, AppsGetSession, AppsListSessions, AppsRegister, } from "@moltzap/protocol";
18
- describe("apps register", () => {
19
- let tmp;
20
- let stdout;
21
- let stderr;
22
- beforeEach(() => {
23
- tmp = mkdtempSync(join(tmpdir(), "moltzap-apps-"));
24
- stdout = vi.spyOn(console, "log").mockImplementation(() => { });
25
- stderr = vi.spyOn(console, "error").mockImplementation(() => { });
26
- });
27
- afterEach(() => {
28
- rmSync(tmp, { recursive: true, force: true });
29
- stdout.mockRestore();
30
- stderr.mockRestore();
31
- });
32
- it("calls apps/register with the manifest body and prints appId", async () => {
33
- const manifestPath = join(tmp, "m.json");
34
- const manifest = {
35
- appId: "demo-app",
36
- name: "Demo App",
37
- conversations: [
38
- { key: "main", name: "Main", participantFilter: "all" },
39
- ],
40
- };
41
- writeFileSync(manifestPath, JSON.stringify(manifest));
42
- const { calls, transport } = makeFakeTransport(() => ({
43
- appId: "app-xyz",
44
- }));
45
- await Effect.runPromise(appsRegisterHandler({ manifestPath }).pipe(Effect.provideService(Transport, transport)));
46
- expect(calls).toEqual([
47
- { method: AppsRegister.name, params: { manifest } },
48
- ]);
49
- expect(stdout).toHaveBeenCalledWith("app-xyz");
50
- });
51
- it("rejects a missing manifest file with AppsInputError", async () => {
52
- const { transport } = makeFakeTransport(() => ({ appId: "never" }));
53
- const result = await Effect.runPromiseExit(appsRegisterHandler({ manifestPath: join(tmp, "missing.json") }).pipe(Effect.provideService(Transport, transport)));
54
- expect(result._tag).toBe("Failure");
55
- if (result._tag === "Failure") {
56
- // Effect failure cause wraps the AppsInputError.
57
- const s = JSON.stringify(result.cause);
58
- expect(s).toMatch(/AppsInputError/);
59
- }
60
- });
61
- it("surfaces TransportRpcError as a failure", async () => {
62
- const manifestPath = join(tmp, "m.json");
63
- writeFileSync(manifestPath, JSON.stringify({}));
64
- const { transport } = makeFakeTransport(() => new Error("invalid manifest"));
65
- const result = await Effect.runPromiseExit(appsRegisterHandler({ manifestPath }).pipe(Effect.provideService(Transport, transport)));
66
- expect(result._tag).toBe("Failure");
67
- });
68
- });
69
- describe("apps create", () => {
70
- let stdout;
71
- beforeEach(() => {
72
- stdout = vi.spyOn(console, "log").mockImplementation(() => { });
73
- });
74
- afterEach(() => stdout.mockRestore());
75
- it("calls apps/create with appId and invitedAgentIds and prints session.id", async () => {
76
- const SESS_ID = "00000000-0000-4000-8000-0000000005e5";
77
- const AGENT_A = "00000000-0000-4000-8000-00000000000a";
78
- const AGENT_B = "00000000-0000-4000-8000-00000000000b";
79
- const INITIATOR = "00000000-0000-4000-8000-000000001717";
80
- const CONV_MAIN = "00000000-0000-4000-8000-000000000c01";
81
- const { calls, transport } = makeFakeTransport(() => ({
82
- session: {
83
- id: SESS_ID,
84
- appId: "app-1",
85
- initiatorAgentId: INITIATOR,
86
- status: "active",
87
- conversations: { main: CONV_MAIN },
88
- createdAt: "2026-05-04T00:00:00.000Z",
89
- },
90
- }));
91
- await Effect.runPromise(appsCreateHandler({
92
- appId: "app-1",
93
- invitedAgentIds: [AGENT_A, AGENT_B],
94
- }).pipe(Effect.provideService(Transport, transport)));
95
- expect(calls).toEqual([
96
- {
97
- method: AppsCreate.name,
98
- params: { appId: "app-1", invitedAgentIds: [AGENT_A, AGENT_B] },
99
- },
100
- ]);
101
- expect(stdout).toHaveBeenCalledWith(SESS_ID);
102
- });
103
- it("surfaces TransportRpcError", async () => {
104
- const { transport } = makeFakeTransport(() => new Error("nope"));
105
- const result = await Effect.runPromiseExit(appsCreateHandler({ appId: "app-1", invitedAgentIds: [] }).pipe(Effect.provideService(Transport, transport)));
106
- expect(result._tag).toBe("Failure");
107
- });
108
- });
109
- describe("apps list", () => {
110
- let stdout;
111
- beforeEach(() => {
112
- stdout = vi.spyOn(console, "log").mockImplementation(() => { });
113
- });
114
- afterEach(() => stdout.mockRestore());
115
- it("calls apps/listSessions with optional filters and prints one per line", async () => {
116
- const SESS_1 = "00000000-0000-4000-8000-000000000501";
117
- const SESS_2 = "00000000-0000-4000-8000-000000000502";
118
- const INITIATOR = "00000000-0000-4000-8000-000000001717";
119
- const CONV_MAIN = "00000000-0000-4000-8000-000000000c01";
120
- const baseSession = {
121
- appId: "app-1",
122
- initiatorAgentId: INITIATOR,
123
- conversations: { main: CONV_MAIN },
124
- createdAt: "2026-05-04T00:00:00.000Z",
125
- };
126
- const { calls, transport } = makeFakeTransport(() => ({
127
- sessions: [
128
- { ...baseSession, id: SESS_1, status: "active" },
129
- { ...baseSession, id: SESS_2, status: "closed" },
130
- ],
131
- }));
132
- await Effect.runPromise(appsListHandler({ appId: "app-1", status: "active", limit: 10 }).pipe(Effect.provideService(Transport, transport)));
133
- expect(calls).toEqual([
134
- {
135
- method: AppsListSessions.name,
136
- params: { appId: "app-1", status: "active", limit: 10 },
137
- },
138
- ]);
139
- expect(stdout).toHaveBeenCalledTimes(2);
140
- });
141
- it("omits absent filters from the params object", async () => {
142
- const { calls, transport } = makeFakeTransport(() => ({ sessions: [] }));
143
- await Effect.runPromise(appsListHandler({}).pipe(Effect.provideService(Transport, transport)));
144
- expect(calls[0]?.params).toEqual({});
145
- });
146
- it("surfaces TransportRpcError", async () => {
147
- const { transport } = makeFakeTransport(() => new Error("boom"));
148
- const result = await Effect.runPromiseExit(appsListHandler({}).pipe(Effect.provideService(Transport, transport)));
149
- expect(result._tag).toBe("Failure");
150
- });
151
- });
152
- describe("apps get", () => {
153
- let stdout;
154
- beforeEach(() => {
155
- stdout = vi.spyOn(console, "log").mockImplementation(() => { });
156
- });
157
- afterEach(() => stdout.mockRestore());
158
- it("calls apps/getSession and prints session as JSON", async () => {
159
- const SESS_1 = "00000000-0000-4000-8000-000000000501";
160
- const INITIATOR = "00000000-0000-4000-8000-000000001717";
161
- const CONV_MAIN = "00000000-0000-4000-8000-000000000c01";
162
- const sessionObj = {
163
- id: SESS_1,
164
- appId: "app-1",
165
- initiatorAgentId: INITIATOR,
166
- status: "active",
167
- conversations: { main: CONV_MAIN },
168
- createdAt: "2026-05-04T00:00:00.000Z",
169
- };
170
- const { calls, transport } = makeFakeTransport(() => ({
171
- session: sessionObj,
172
- }));
173
- await Effect.runPromise(appsGetHandler({ sessionId: SESS_1 }).pipe(Effect.provideService(Transport, transport)));
174
- expect(calls[0]).toEqual({
175
- method: AppsGetSession.name,
176
- params: { sessionId: SESS_1 },
177
- });
178
- expect(stdout).toHaveBeenCalledWith(JSON.stringify(sessionObj, null, 2));
179
- });
180
- it("surfaces TransportRpcError", async () => {
181
- const { transport } = makeFakeTransport(() => new Error("404"));
182
- const result = await Effect.runPromiseExit(appsGetHandler({ sessionId: "s1" }).pipe(Effect.provideService(Transport, transport)));
183
- expect(result._tag).toBe("Failure");
184
- });
185
- });
186
- describe("apps close", () => {
187
- let stdout;
188
- beforeEach(() => {
189
- stdout = vi.spyOn(console, "log").mockImplementation(() => { });
190
- });
191
- afterEach(() => stdout.mockRestore());
192
- const SESS_42 = "00000000-0000-4000-8000-000000000042";
193
- it("calls apps/closeSession and prints the closed session id", async () => {
194
- const { calls, transport } = makeFakeTransport(() => ({ closed: true }));
195
- await Effect.runPromise(appsCloseHandler({ sessionId: SESS_42 }).pipe(Effect.provideService(Transport, transport)));
196
- expect(calls[0]).toEqual({
197
- method: AppsCloseSession.name,
198
- params: { sessionId: SESS_42 },
199
- });
200
- expect(stdout).toHaveBeenCalledWith(SESS_42);
201
- });
202
- it("surfaces TransportRpcError", async () => {
203
- const { transport } = makeFakeTransport(() => new Error("nope"));
204
- const result = await Effect.runPromiseExit(appsCloseHandler({ sessionId: SESS_42 }).pipe(Effect.provideService(Transport, transport)));
205
- expect(result._tag).toBe("Failure");
206
- });
207
- });
208
- //# sourceMappingURL=apps.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"apps.test.js","sourceRoot":"","sources":["../../../src/cli/commands/apps.test.ts"],"names":[],"mappings":"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"}