@axiom-lattice/client-sdk 5.0.0 → 6.0.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.
Files changed (68) hide show
  1. package/dist/__tests__/commands.test.d.ts +2 -0
  2. package/dist/__tests__/commands.test.d.ts.map +1 -0
  3. package/dist/__tests__/commands.test.js +96 -0
  4. package/dist/__tests__/commands.test.js.map +1 -0
  5. package/dist/__tests__/crons.test.d.ts +2 -0
  6. package/dist/__tests__/crons.test.d.ts.map +1 -0
  7. package/dist/__tests__/crons.test.js +103 -0
  8. package/dist/__tests__/crons.test.js.map +1 -0
  9. package/dist/__tests__/info.test.d.ts +2 -0
  10. package/dist/__tests__/info.test.d.ts.map +1 -0
  11. package/dist/__tests__/info.test.js +109 -0
  12. package/dist/__tests__/info.test.js.map +1 -0
  13. package/dist/__tests__/project-rooms.test.js +12 -0
  14. package/dist/__tests__/project-rooms.test.js.map +1 -1
  15. package/dist/__tests__/resume-last-event-id.test.d.ts +2 -0
  16. package/dist/__tests__/resume-last-event-id.test.d.ts.map +1 -0
  17. package/dist/__tests__/resume-last-event-id.test.js +111 -0
  18. package/dist/__tests__/resume-last-event-id.test.js.map +1 -0
  19. package/dist/__tests__/resume-stream-http-error.test.d.ts +2 -0
  20. package/dist/__tests__/resume-stream-http-error.test.d.ts.map +1 -0
  21. package/dist/__tests__/resume-stream-http-error.test.js +45 -0
  22. package/dist/__tests__/resume-stream-http-error.test.js.map +1 -0
  23. package/dist/__tests__/runs-task-queue.test.d.ts +2 -0
  24. package/dist/__tests__/runs-task-queue.test.d.ts.map +1 -0
  25. package/dist/__tests__/runs-task-queue.test.js +159 -0
  26. package/dist/__tests__/runs-task-queue.test.js.map +1 -0
  27. package/dist/__tests__/runs.test.d.ts +2 -0
  28. package/dist/__tests__/runs.test.d.ts.map +1 -0
  29. package/dist/__tests__/runs.test.js +135 -0
  30. package/dist/__tests__/runs.test.js.map +1 -0
  31. package/dist/__tests__/runtime-client.test.js +29 -0
  32. package/dist/__tests__/runtime-client.test.js.map +1 -1
  33. package/dist/__tests__/store.test.d.ts +2 -0
  34. package/dist/__tests__/store.test.d.ts.map +1 -0
  35. package/dist/__tests__/store.test.js +100 -0
  36. package/dist/__tests__/store.test.js.map +1 -0
  37. package/dist/__tests__/thread-event-stream.test.d.ts +2 -0
  38. package/dist/__tests__/thread-event-stream.test.d.ts.map +1 -0
  39. package/dist/__tests__/thread-event-stream.test.js +109 -0
  40. package/dist/__tests__/thread-event-stream.test.js.map +1 -0
  41. package/dist/__tests__/thread-maintenance.test.d.ts +2 -0
  42. package/dist/__tests__/thread-maintenance.test.d.ts.map +1 -0
  43. package/dist/__tests__/thread-maintenance.test.js +98 -0
  44. package/dist/__tests__/thread-maintenance.test.js.map +1 -0
  45. package/dist/abstract-client.d.ts +234 -1
  46. package/dist/abstract-client.d.ts.map +1 -1
  47. package/dist/abstract-client.js +406 -1
  48. package/dist/abstract-client.js.map +1 -1
  49. package/dist/client.d.ts +9 -0
  50. package/dist/client.d.ts.map +1 -1
  51. package/dist/client.js +35 -5
  52. package/dist/client.js.map +1 -1
  53. package/dist/index.d.ts +588 -3
  54. package/dist/index.js +622 -121
  55. package/dist/index.js.map +1 -1
  56. package/dist/index.mjs +622 -121
  57. package/dist/index.mjs.map +1 -1
  58. package/dist/project-rooms.d.ts +3 -0
  59. package/dist/project-rooms.d.ts.map +1 -1
  60. package/dist/project-rooms.js +1 -0
  61. package/dist/project-rooms.js.map +1 -1
  62. package/dist/runtime-client.d.ts.map +1 -1
  63. package/dist/runtime-client.js +2 -6
  64. package/dist/runtime-client.js.map +1 -1
  65. package/dist/types.d.ts +342 -2
  66. package/dist/types.d.ts.map +1 -1
  67. package/dist/types.js.map +1 -1
  68. package/package.json +9 -2
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=commands.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/commands.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,96 @@
1
+ import { Client } from "../client";
2
+ const mockFetch = jest.fn();
3
+ global.fetch = mockFetch;
4
+ function makeClient() {
5
+ return new Client({
6
+ baseURL: "http://localhost:3000",
7
+ apiKey: "test-key",
8
+ assistantId: "agent-1",
9
+ transport: "sse",
10
+ });
11
+ }
12
+ function response(body, status = 202) {
13
+ mockFetch.mockResolvedValue({
14
+ ok: status >= 200 && status < 300,
15
+ status,
16
+ json: async () => body,
17
+ });
18
+ }
19
+ function lastFetch() {
20
+ return mockFetch.mock.calls[mockFetch.mock.calls.length - 1];
21
+ }
22
+ const tree = {
23
+ nodes: [{ id: "A" }],
24
+ edges: [{ source: "A", target: "B" }],
25
+ mermaid: "graph TD;",
26
+ namespaces: [],
27
+ };
28
+ beforeEach(() => {
29
+ jest.clearAllMocks();
30
+ });
31
+ describe("Client.commands", () => {
32
+ it("starts a run with the command envelope", async () => {
33
+ response({ success: true, data: { messageId: "m1", queued: true, mode: "followup" } });
34
+ const result = await makeClient().commands.runStart("thread-1", {
35
+ input: { message: "hello" },
36
+ config: { model: "x" },
37
+ multitask_strategy: "collect",
38
+ });
39
+ const [url, init] = lastFetch();
40
+ expect(url).toBe("http://localhost:3000/api/assistants/agent-1/threads/thread-1/commands");
41
+ expect(init.method).toBe("POST");
42
+ expect(JSON.parse(init.body)).toEqual({
43
+ command: "run.start",
44
+ args: {
45
+ input: { message: "hello" },
46
+ config: { model: "x" },
47
+ multitask_strategy: "collect",
48
+ },
49
+ });
50
+ expect(result).toEqual({ messageId: "m1", queued: true, mode: "followup" });
51
+ });
52
+ it("returns the queue-first 202 fields from input.respond", async () => {
53
+ const client = makeClient();
54
+ response({
55
+ success: true,
56
+ data: {
57
+ accepted: true,
58
+ commandId: "cmd-2",
59
+ messageId: "m2",
60
+ queued: true,
61
+ interruptId: "i1",
62
+ },
63
+ });
64
+ await expect(client.commands.respond("thread-1", {
65
+ interrupt_id: "i1",
66
+ expected_interrupt_id: "i1",
67
+ resume: { resume: { action: "approve" } },
68
+ })).resolves.toEqual({
69
+ accepted: true,
70
+ commandId: "cmd-2",
71
+ messageId: "m2",
72
+ queued: true,
73
+ interruptId: "i1",
74
+ });
75
+ expect(JSON.parse(lastFetch()[1].body)).toEqual({
76
+ command: "input.respond",
77
+ args: {
78
+ interrupt_id: "i1",
79
+ expected_interrupt_id: "i1",
80
+ resume: { resume: { action: "approve" } },
81
+ },
82
+ });
83
+ response({ success: true, data: tree }, 200);
84
+ await expect(client.commands.getTree("thread-1")).resolves.toEqual(tree);
85
+ expect(JSON.parse(lastFetch()[1].body)).toEqual({ command: "agent.getTree" });
86
+ });
87
+ it("surfaces 400 and 409 command errors", async () => {
88
+ const client = makeClient();
89
+ for (const status of [400, 409]) {
90
+ response({ success: false, error: `failure-${status}`, code: status === 409 ? "INTERRUPT_NOT_FOUND" : undefined }, status);
91
+ await expect(client.commands.respond("thread-1", { interrupt_id: "missing" }))
92
+ .rejects.toMatchObject({ name: "ApiError", statusCode: status, message: `failure-${status}` });
93
+ }
94
+ });
95
+ });
96
+ //# sourceMappingURL=commands.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.test.js","sourceRoot":"","sources":["../../src/__tests__/commands.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=crons.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crons.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/crons.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,103 @@
1
+ import { Client } from "../client";
2
+ const mockFetch = jest.fn();
3
+ global.fetch = mockFetch;
4
+ const cron = {
5
+ cron_id: "cron-1",
6
+ assistant_id: "agent-1",
7
+ schedule: "0 0 1 1 *",
8
+ timezone: "UTC",
9
+ next_run_date: "2027-01-01T00:00:00.000Z",
10
+ enabled: true,
11
+ payload: { input: { message: "run" } },
12
+ on_run_completed: "delete",
13
+ multitask_strategy: "enqueue",
14
+ created_at: "2026-01-01T00:00:00.000Z",
15
+ updated_at: "2026-01-01T00:00:00.000Z",
16
+ run_count: 0,
17
+ status: "pending",
18
+ };
19
+ function makeClient() {
20
+ return new Client({
21
+ baseURL: "http://localhost:3000",
22
+ apiKey: "test-key",
23
+ assistantId: "agent-1",
24
+ transport: "sse",
25
+ });
26
+ }
27
+ function mockJson(body) {
28
+ mockFetch.mockResolvedValue({
29
+ ok: true,
30
+ status: 200,
31
+ json: async () => body,
32
+ });
33
+ }
34
+ function lastFetch() {
35
+ return mockFetch.mock.calls[mockFetch.mock.calls.length - 1];
36
+ }
37
+ beforeEach(() => {
38
+ jest.clearAllMocks();
39
+ mockJson({ success: true, data: cron });
40
+ });
41
+ describe("Client.crons", () => {
42
+ it("creates a thread cron", async () => {
43
+ const body = {
44
+ schedule: "0 0 1 1 *",
45
+ payload: { input: { message: "run" } },
46
+ timezone: "UTC",
47
+ };
48
+ const result = await makeClient().crons.createForThread("thread-1", body);
49
+ const [url, init] = lastFetch();
50
+ expect(url).toBe("http://localhost:3000/api/threads/thread-1/runs/crons");
51
+ expect(init.method).toBe("POST");
52
+ expect(JSON.parse(init.body)).toEqual(body);
53
+ expect(result).toEqual(cron);
54
+ });
55
+ it("creates a stateless cron", async () => {
56
+ const body = {
57
+ assistant_id: "agent-1",
58
+ schedule: "0 0 1 1 *",
59
+ payload: { input: { message: "run" } },
60
+ on_run_completed: "delete",
61
+ };
62
+ await makeClient().crons.createStateless(body);
63
+ const [url, init] = lastFetch();
64
+ expect(url).toBe("http://localhost:3000/api/runs/crons");
65
+ expect(init.method).toBe("POST");
66
+ expect(JSON.parse(init.body)).toEqual(body);
67
+ });
68
+ it("searches and counts crons", async () => {
69
+ mockJson({ success: true, data: { items: [cron] } });
70
+ await expect(makeClient().crons.search({ assistant_id: "agent-1", limit: 10 }))
71
+ .resolves.toEqual([cron]);
72
+ expect(lastFetch()[0]).toBe("http://localhost:3000/api/runs/crons/search");
73
+ expect(JSON.parse(lastFetch()[1].body)).toEqual({ assistant_id: "agent-1", limit: 10 });
74
+ mockJson({ success: true, data: { count: 2 } });
75
+ await expect(makeClient().crons.count({ enabled: true })).resolves.toBe(2);
76
+ expect(lastFetch()[0]).toBe("http://localhost:3000/api/runs/crons/count");
77
+ });
78
+ it("gets, pauses/resumes, and deletes a cron", async () => {
79
+ await expect(makeClient().crons.get("cron-1")).resolves.toEqual(cron);
80
+ expect(lastFetch()[0]).toBe("http://localhost:3000/api/runs/crons/cron-1");
81
+ await makeClient().crons.updateEnabled("cron-1", false);
82
+ const [patchUrl, patchInit] = lastFetch();
83
+ expect(patchUrl).toBe("http://localhost:3000/api/runs/crons/cron-1");
84
+ expect(patchInit.method).toBe("PATCH");
85
+ expect(JSON.parse(patchInit.body)).toEqual({ enabled: false });
86
+ mockJson({ success: true });
87
+ await expect(makeClient().crons.delete("cron-1")).resolves.toBe(true);
88
+ expect(lastFetch()[1].method).toBe("DELETE");
89
+ });
90
+ it("surfaces 404 errors as ApiError", async () => {
91
+ mockFetch.mockResolvedValueOnce({
92
+ ok: false,
93
+ status: 404,
94
+ json: async () => ({ success: false, error: "Cron not found" }),
95
+ });
96
+ await expect(makeClient().crons.get("missing")).rejects.toMatchObject({
97
+ name: "ApiError",
98
+ statusCode: 404,
99
+ message: "Cron not found",
100
+ });
101
+ });
102
+ });
103
+ //# sourceMappingURL=crons.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crons.test.js","sourceRoot":"","sources":["../../src/__tests__/crons.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=info.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/info.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,109 @@
1
+ import { Client } from "../client";
2
+ const mockFetch = jest.fn();
3
+ global.fetch = mockFetch;
4
+ const info = {
5
+ service: "lattice-gateway",
6
+ version: "1.2.3",
7
+ commit: "abc123",
8
+ startedAt: "2026-01-01T00:00:00.000Z",
9
+ uptimeSeconds: 42,
10
+ flags: {
11
+ authRequired: true,
12
+ executionWorker: false,
13
+ chunkSource: "redis",
14
+ multiReplica: true,
15
+ },
16
+ capabilities: {
17
+ a2a: true,
18
+ mcp: true,
19
+ store: true,
20
+ crons: true,
21
+ threadEvents: true,
22
+ threadEventsWebSocket: true,
23
+ metrics: true,
24
+ taskLifecycle: true,
25
+ },
26
+ endpoints: {
27
+ health: "/health",
28
+ metrics: "/metrics",
29
+ info: "/info",
30
+ mcp: "/mcp",
31
+ store: "/api/store/items",
32
+ threadEvents: "/api/assistants/:assistantId/threads/:threadId/stream/events",
33
+ a2aAgentCard: "/api/a2a/agents/:assistantId/.well-known/agent-card.json",
34
+ a2aJsonRpc: "/api/a2a/agents/:assistantId/jsonrpc",
35
+ },
36
+ metadata: { deployment: "prod" },
37
+ };
38
+ function makeClient() {
39
+ return new Client({
40
+ baseURL: "http://localhost:3000",
41
+ apiKey: "test-key",
42
+ assistantId: "agent-1",
43
+ transport: "sse",
44
+ });
45
+ }
46
+ beforeEach(() => {
47
+ jest.clearAllMocks();
48
+ });
49
+ describe("Client.getInfo", () => {
50
+ it("reads GET /info and unwraps data", async () => {
51
+ mockFetch.mockResolvedValue({
52
+ ok: true,
53
+ status: 200,
54
+ json: async () => ({ success: true, data: info }),
55
+ });
56
+ await expect(makeClient().getInfo()).resolves.toEqual(info);
57
+ const [url, init] = mockFetch.mock.calls[0];
58
+ expect(url).toBe("http://localhost:3000/info");
59
+ expect(init.method ?? "GET").toBe("GET");
60
+ });
61
+ it("surfaces gateway errors as ApiError", async () => {
62
+ mockFetch.mockResolvedValue({
63
+ ok: false,
64
+ status: 500,
65
+ json: async () => ({ success: false, error: "Failed to build gateway info" }),
66
+ });
67
+ await expect(makeClient().getInfo()).rejects.toMatchObject({
68
+ name: "ApiError",
69
+ statusCode: 500,
70
+ message: "Failed to build gateway info",
71
+ });
72
+ });
73
+ });
74
+ describe("Client.getSystemMetrics", () => {
75
+ const metrics = {
76
+ replicaId: "replica-a",
77
+ uptimeSeconds: 42,
78
+ agentRuns: {
79
+ pending: 1,
80
+ running: 2,
81
+ success: 120,
82
+ error: 3,
83
+ interrupted: 1,
84
+ cancelled: 4,
85
+ timeout: 0,
86
+ },
87
+ pendingThreads: 7,
88
+ worker: {
89
+ enabled: true,
90
+ started: true,
91
+ inFlight: 2,
92
+ maxConcurrentThreads: 8,
93
+ scanIntervalMs: 5000,
94
+ },
95
+ chunk: { source: "redis", ttlMs: 1200000, maxLen: 0 },
96
+ };
97
+ it("reads GET /metrics?format=json", async () => {
98
+ mockFetch.mockResolvedValue({
99
+ ok: true,
100
+ status: 200,
101
+ json: async () => metrics,
102
+ });
103
+ await expect(makeClient().getSystemMetrics()).resolves.toEqual(metrics);
104
+ const [url, init] = mockFetch.mock.calls[0];
105
+ expect(url).toBe("http://localhost:3000/metrics?format=json");
106
+ expect(init.method ?? "GET").toBe("GET");
107
+ });
108
+ });
109
+ //# sourceMappingURL=info.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.test.js","sourceRoot":"","sources":["../../src/__tests__/info.test.ts"],"names":[],"mappings":"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"}
@@ -86,6 +86,18 @@ describe("ProjectRoomsClient REST", () => {
86
86
  ref: { kind: "presence", membershipId: "membership-1" },
87
87
  });
88
88
  });
89
+ it("forwards an explicit interrupt id", async () => {
90
+ fetchMock.mockResolvedValueOnce(response({ success: true, data: { resolved: true } }));
91
+ const rooms = new ProjectRoomsClient("https://gateway", () => ({}));
92
+ await rooms.interrupts.resume("p", {
93
+ ref: { kind: "presence", membershipId: "membership-1" },
94
+ interruptId: "interrupt-2",
95
+ });
96
+ expect(JSON.parse(fetchMock.mock.calls[0][1].body)).toEqual({
97
+ ref: { kind: "presence", membershipId: "membership-1" },
98
+ interruptId: "interrupt-2",
99
+ });
100
+ });
89
101
  it("resumes a task interrupt with a thread ref", async () => {
90
102
  fetchMock.mockResolvedValueOnce(response({ success: true, data: { resolved: true } }));
91
103
  const rooms = new ProjectRoomsClient("https://gateway", () => ({}));
@@ -1 +1 @@
1
- {"version":3,"file":"project-rooms.test.js","sourceRoot":"","sources":["../../src/__tests__/project-rooms.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-rooms.test.js","sourceRoot":"","sources":["../../src/__tests__/project-rooms.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=resume-last-event-id.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume-last-event-id.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/resume-last-event-id.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,111 @@
1
+ import { Client } from "../client";
2
+ const calls = [];
3
+ function sseThenDisconnect(frames = [
4
+ 'id: 1700000000000-4\ndata: {"type":"ai","data":{"id":"m1","content":"hi"}}\n\n',
5
+ ]) {
6
+ const encoder = new TextEncoder();
7
+ let sent = 0;
8
+ return {
9
+ ok: true,
10
+ status: 200,
11
+ body: new ReadableStream({
12
+ pull(controller) {
13
+ if (sent < frames.length) {
14
+ controller.enqueue(encoder.encode(frames[sent]));
15
+ sent += 1;
16
+ return;
17
+ }
18
+ controller.error(new Error("connection lost"));
19
+ },
20
+ }),
21
+ json: async () => ({}),
22
+ };
23
+ }
24
+ function emptySse() {
25
+ return {
26
+ ok: true,
27
+ status: 200,
28
+ body: new ReadableStream({
29
+ start(controller) {
30
+ controller.close();
31
+ },
32
+ }),
33
+ json: async () => ({}),
34
+ };
35
+ }
36
+ async function waitFor(predicate) {
37
+ for (let i = 0; i < 50; i++) {
38
+ if (predicate())
39
+ return;
40
+ await new Promise((resolve) => setTimeout(resolve, 0));
41
+ }
42
+ throw new Error("condition was not met");
43
+ }
44
+ describe("Client.resumeStream Last-Event-ID", () => {
45
+ let client;
46
+ let firstResponse;
47
+ beforeEach(() => {
48
+ calls.length = 0;
49
+ firstResponse = () => sseThenDisconnect();
50
+ global.fetch = jest.fn(async (url, init) => {
51
+ calls.push([url, init]);
52
+ return calls.length === 1 ? firstResponse() : emptySse();
53
+ });
54
+ client = new Client({
55
+ baseURL: "http://x",
56
+ apiKey: "k",
57
+ assistantId: "a1",
58
+ transport: "sse",
59
+ });
60
+ });
61
+ afterEach(() => {
62
+ global.fetch = undefined;
63
+ });
64
+ const headerFor = (index) => calls[index][1].headers;
65
+ it("replays the last SSE id as Last-Event-ID after a dropped connection", async () => {
66
+ const onEvent = jest.fn();
67
+ const onError = jest.fn();
68
+ const options = {
69
+ assistantId: "a1",
70
+ threadId: "t1",
71
+ messageId: "m1",
72
+ knownContent: "",
73
+ };
74
+ client.resumeStream(options, onEvent, undefined, onError);
75
+ await waitFor(() => onError.mock.calls.length > 0);
76
+ expect(onEvent).toHaveBeenCalledTimes(1);
77
+ client.resumeStream(options, jest.fn());
78
+ await waitFor(() => calls.length === 2);
79
+ expect(headerFor(1)["Last-Event-ID"]).toBe("1700000000000-4");
80
+ });
81
+ it("drops the cursor when the server reports CURSOR_EXPIRED", async () => {
82
+ firstResponse = () => sseThenDisconnect([
83
+ 'id: 1700000000000-4\ndata: {"type":"ai","data":{"id":"m1","content":"hi"}}\n\n',
84
+ 'data: {"type":"error","data":{"id":"m1","content":"gone","code":"CURSOR_EXPIRED"}}\n\n',
85
+ ]);
86
+ const onError = jest.fn();
87
+ const options = {
88
+ assistantId: "a1",
89
+ threadId: "t1",
90
+ messageId: "m1",
91
+ knownContent: "",
92
+ };
93
+ client.resumeStream(options, jest.fn(), undefined, onError);
94
+ await waitFor(() => onError.mock.calls.length > 0);
95
+ client.resumeStream(options, jest.fn());
96
+ await waitFor(() => calls.length === 2);
97
+ expect(headerFor(1)["Last-Event-ID"]).toBeUndefined();
98
+ });
99
+ it("sends an explicit lastEventId on the first request", async () => {
100
+ client.resumeStream({
101
+ assistantId: "a1",
102
+ threadId: "t1",
103
+ messageId: "m1",
104
+ knownContent: "",
105
+ lastEventId: " 1700000000000-9 ",
106
+ }, jest.fn());
107
+ await waitFor(() => calls.length === 1);
108
+ expect(headerFor(0)["Last-Event-ID"]).toBe("1700000000000-9");
109
+ });
110
+ });
111
+ //# sourceMappingURL=resume-last-event-id.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume-last-event-id.test.js","sourceRoot":"","sources":["../../src/__tests__/resume-last-event-id.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=resume-stream-http-error.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume-stream-http-error.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/resume-stream-http-error.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ import { Client } from "../client";
2
+ function nonOkResponse(status, body) {
3
+ return {
4
+ ok: false,
5
+ status,
6
+ json: async () => body,
7
+ body: null,
8
+ };
9
+ }
10
+ async function waitFor(predicate) {
11
+ for (let i = 0; i < 100; i++) {
12
+ if (predicate())
13
+ return;
14
+ await new Promise((resolve) => setTimeout(resolve, 0));
15
+ }
16
+ throw new Error("condition was not met");
17
+ }
18
+ describe("Client.resumeStream HTTP errors", () => {
19
+ beforeEach(() => {
20
+ jest.clearAllMocks();
21
+ global.fetch = jest.fn();
22
+ });
23
+ afterEach(() => {
24
+ global.fetch = undefined;
25
+ });
26
+ it("attaches the HTTP status and parsed body to the stream error", async () => {
27
+ const errorBody = { success: false, error: "THREAD_NOT_FOUND" };
28
+ global.fetch.mockResolvedValueOnce(nonOkResponse(404, errorBody));
29
+ const client = new Client({
30
+ baseURL: "http://x",
31
+ apiKey: "k",
32
+ assistantId: "a1",
33
+ transport: "sse",
34
+ });
35
+ const onError = jest.fn();
36
+ client.resumeStream({ assistantId: "a1", threadId: "t1", messageId: "m1", knownContent: "" }, jest.fn(), undefined, onError);
37
+ await waitFor(() => onError.mock.calls.length === 1);
38
+ expect(onError.mock.calls[0][0]).toMatchObject({
39
+ message: "THREAD_NOT_FOUND",
40
+ status: 404,
41
+ responseBody: errorBody,
42
+ });
43
+ });
44
+ });
45
+ //# sourceMappingURL=resume-stream-http-error.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume-stream-http-error.test.js","sourceRoot":"","sources":["../../src/__tests__/resume-stream-http-error.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,SAAS,aAAa,CAAC,MAAc,EAAE,IAAa;IAClD,OAAO;QACL,EAAE,EAAE,KAAK;QACT,MAAM;QACN,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;QACtB,IAAI,EAAE,IAAI;KACY,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,SAAwB;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,IAAI,SAAS,EAAE;YAAE,OAAO;QACxB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;AAC3C,CAAC;AAED,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACpB,MAAwC,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACZ,MAAwC,CAAC,KAAK,GAAG,SAAS,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;QAC/D,MAAM,CAAC,KAAmB,CAAC,qBAAqB,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;QACjF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;YACxB,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,GAAG;YACX,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAE1B,MAAM,CAAC,YAAY,CACjB,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,EACxE,IAAI,CAAC,EAAE,EAAE,EACT,SAAS,EACT,OAAO,CACR,CAAC;QACF,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;QAErD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC7C,OAAO,EAAE,kBAAkB;YAC3B,MAAM,EAAE,GAAG;YACX,YAAY,EAAE,SAAS;SACxB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=runs-task-queue.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runs-task-queue.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/runs-task-queue.test.ts"],"names":[],"mappings":""}