@axiom-lattice/client-sdk 4.3.2 → 4.3.6
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/__tests__/project-rooms.test.js +0 -66
- package/dist/__tests__/project-rooms.test.js.map +1 -1
- package/dist/__tests__/room-events.test.d.ts +2 -0
- package/dist/__tests__/room-events.test.d.ts.map +1 -0
- package/dist/__tests__/room-events.test.js +144 -0
- package/dist/__tests__/room-events.test.js.map +1 -0
- package/dist/__tests__/runtime-client.test.d.ts +10 -0
- package/dist/__tests__/runtime-client.test.d.ts.map +1 -0
- package/dist/__tests__/runtime-client.test.js +113 -0
- package/dist/__tests__/runtime-client.test.js.map +1 -0
- package/dist/__tests__/workspace-rooms.test.d.ts +2 -0
- package/dist/__tests__/workspace-rooms.test.d.ts.map +1 -0
- package/dist/__tests__/workspace-rooms.test.js +116 -0
- package/dist/__tests__/workspace-rooms.test.js.map +1 -0
- package/dist/client.d.ts +4 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +4 -0
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +201 -46
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +411 -181
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +408 -181
- package/dist/index.mjs.map +1 -1
- package/dist/project-room-hydrators.d.ts +18 -0
- package/dist/project-room-hydrators.d.ts.map +1 -0
- package/dist/project-room-hydrators.js +95 -0
- package/dist/project-room-hydrators.js.map +1 -0
- package/dist/project-rooms.d.ts +3 -51
- package/dist/project-rooms.d.ts.map +1 -1
- package/dist/project-rooms.js +5 -178
- package/dist/project-rooms.js.map +1 -1
- package/dist/room-events.d.ts +108 -0
- package/dist/room-events.d.ts.map +1 -0
- package/dist/room-events.js +127 -0
- package/dist/room-events.js.map +1 -0
- package/dist/runtime-client.d.ts +67 -0
- package/dist/runtime-client.d.ts.map +1 -0
- package/dist/runtime-client.js +122 -0
- package/dist/runtime-client.js.map +1 -0
- package/dist/workspace-rooms.d.ts +26 -0
- package/dist/workspace-rooms.d.ts.map +1 -0
- package/dist/workspace-rooms.js +67 -0
- package/dist/workspace-rooms.js.map +1 -0
- package/package.json +2 -2
|
@@ -75,70 +75,4 @@ describe("Client.projectRooms", () => {
|
|
|
75
75
|
expect(client.clone().projectRooms).toBeDefined();
|
|
76
76
|
});
|
|
77
77
|
});
|
|
78
|
-
function sseBody(chunks) {
|
|
79
|
-
const encoder = new TextEncoder();
|
|
80
|
-
return new ReadableStream({ start(controller) { for (const chunk of chunks)
|
|
81
|
-
controller.enqueue(encoder.encode(chunk)); controller.close(); } });
|
|
82
|
-
}
|
|
83
|
-
describe("Project Room SSE", () => {
|
|
84
|
-
it("parses controls, fragmented business frames, ids, retry, and hydrates dates", async () => {
|
|
85
|
-
fetchMock.mockResolvedValueOnce({ ok: true, status: 200, headers: new Headers({ "content-type": "text/event-stream" }), body: sseBody([
|
|
86
|
-
": heartbeat\r\nevent: ready\r\ndata: {\"epoch\":\"e\",\"headEventId\":null}\r\n\r\n",
|
|
87
|
-
"event: task.changed\r\nid: e:1\r\nretry: 500\r\ndata: {\"id\":\"e:1\",\"type\":\"task.changed\",\"occurredAt\":\"2026-01-01T00:00:00.000Z\",\"data\":{\"taskId\":\"t\",\"status\":\"pending\",\"ownerMembershipId\":\"b\",\"updatedAt\":\"2026-01-02T00:00:00.000Z\"}}\r\n\r\n",
|
|
88
|
-
"event: resync\ndata: {\"reason\":\"CURSOR_EXPIRED\"}\n\n",
|
|
89
|
-
]) });
|
|
90
|
-
const rooms = new ProjectRoomsClient("https://gateway", () => ({ Authorization: "Bearer token" }));
|
|
91
|
-
const connection = rooms.events.connect("project/one", { lastEventId: "e:0", signal: new AbortController().signal });
|
|
92
|
-
await expect(connection.opened).resolves.toEqual({ status: 200, lastEventId: "e:0" });
|
|
93
|
-
const frames = [];
|
|
94
|
-
for await (const frame of connection)
|
|
95
|
-
frames.push(frame);
|
|
96
|
-
expect(frames[0].event).toEqual({ type: "ready", data: { epoch: "e", headEventId: null } });
|
|
97
|
-
expect(frames[1]).toEqual(expect.objectContaining({ id: "e:1", retry: 500 }));
|
|
98
|
-
expect(frames[1].event.occurredAt).toBeInstanceOf(Date);
|
|
99
|
-
expect(frames[2].event).toEqual({ type: "resync", data: { reason: "CURSOR_EXPIRED" } });
|
|
100
|
-
});
|
|
101
|
-
it("opens after HTTP validation before body data and sends bearer/cursor headers", async () => {
|
|
102
|
-
let release;
|
|
103
|
-
fetchMock.mockReturnValueOnce(new Promise((resolve) => { release = resolve; }));
|
|
104
|
-
const controller = new AbortController();
|
|
105
|
-
const rooms = new ProjectRoomsClient("https://gateway", () => ({ Authorization: "Bearer token" }));
|
|
106
|
-
const connection = rooms.events.connect("project/one", { lastEventId: "e:7", signal: controller.signal });
|
|
107
|
-
release({ ok: true, status: 200, headers: new Headers({ "content-type": "text/event-stream" }), body: new ReadableStream({ start(controller) { controller.close(); } }) });
|
|
108
|
-
await expect(connection.opened).resolves.toEqual({ status: 200, lastEventId: "e:7" });
|
|
109
|
-
expect(fetchMock).toHaveBeenCalledWith("https://gateway/api/projects/project%2Fone/room/events", expect.objectContaining({ headers: expect.objectContaining({ Accept: "text/event-stream", Authorization: "Bearer token", "Last-Event-ID": "e:7" }), signal: controller.signal }));
|
|
110
|
-
});
|
|
111
|
-
it("rejects malformed event shapes and aborts without a network error", async () => {
|
|
112
|
-
fetchMock.mockResolvedValueOnce({ ok: true, status: 200, headers: new Headers({ "content-type": "text/event-stream" }), body: sseBody(["event: task.changed\nid: e:1\ndata: {\"id\":\"e:2\",\"type\":\"task.changed\"}\n\n"]) });
|
|
113
|
-
const rooms = new ProjectRoomsClient("https://gateway", () => ({}));
|
|
114
|
-
const connection = rooms.events.connect("p", { signal: new AbortController().signal });
|
|
115
|
-
await expect((async () => { for await (const frame of connection)
|
|
116
|
-
void frame; })()).rejects.toMatchObject({ code: "INVALID_EVENT" });
|
|
117
|
-
});
|
|
118
|
-
it("rejects an SSE frame larger than the transport cap", async () => {
|
|
119
|
-
const oversized = "x".repeat(1024 * 1024 + 1);
|
|
120
|
-
fetchMock.mockResolvedValueOnce({ ok: true, status: 200, headers: new Headers({ "content-type": "text/event-stream" }), body: sseBody([`event: ready\ndata: {"epoch":"${oversized}","headEventId":null}\n\n`]) });
|
|
121
|
-
const connection = new ProjectRoomsClient("https://gateway", () => ({})).events.connect("p", { signal: new AbortController().signal });
|
|
122
|
-
await expect((async () => { for await (const frame of connection)
|
|
123
|
-
void frame; })()).rejects.toMatchObject({ code: "INVALID_EVENT" });
|
|
124
|
-
});
|
|
125
|
-
it("cancels the reader when iteration stops early", async () => {
|
|
126
|
-
const cancel = jest.fn().mockResolvedValue(undefined);
|
|
127
|
-
const body = { getReader: () => ({ read: jest.fn().mockResolvedValue({ done: false, value: new TextEncoder().encode("event: ready\ndata: {\"epoch\":\"e\",\"headEventId\":null}\n\n") }), cancel, releaseLock: jest.fn() }) };
|
|
128
|
-
fetchMock.mockResolvedValueOnce({ ok: true, status: 200, headers: new Headers({ "content-type": "text/event-stream" }), body });
|
|
129
|
-
const connection = new ProjectRoomsClient("https://gateway", () => ({})).events.connect("p", { signal: new AbortController().signal });
|
|
130
|
-
for await (const frame of connection) {
|
|
131
|
-
void frame;
|
|
132
|
-
break;
|
|
133
|
-
}
|
|
134
|
-
await Promise.resolve();
|
|
135
|
-
expect(cancel).toHaveBeenCalled();
|
|
136
|
-
});
|
|
137
|
-
it("wraps parser and nested hydration failures as typed INVALID_EVENT errors", async () => {
|
|
138
|
-
fetchMock.mockResolvedValueOnce({ ok: true, status: 200, headers: new Headers({ "content-type": "text/event-stream" }), body: sseBody(["event: message.created\nid: e:1\ndata: {\"id\":\"e:1\",\"type\":\"message.created\",\"occurredAt\":\"bad\",\"data\":{\"message\":{}}}\n\n"]) });
|
|
139
|
-
const connection = new ProjectRoomsClient("https://gateway", () => ({})).events.connect("p", { signal: new AbortController().signal });
|
|
140
|
-
await expect((async () => { for await (const frame of connection)
|
|
141
|
-
void frame; })()).rejects.toMatchObject({ name: "ProjectRoomClientError", status: 400, code: "INVALID_EVENT" });
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
78
|
//# sourceMappingURL=project-rooms.test.js.map
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"room-events.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/room-events.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { Client } from "../client";
|
|
2
|
+
import { ProjectRoomClientError } from "../project-rooms";
|
|
3
|
+
import { RoomEventsClient } from "../room-events";
|
|
4
|
+
const fetchMock = jest.fn();
|
|
5
|
+
function sseBody(chunks) {
|
|
6
|
+
const encoder = new TextEncoder();
|
|
7
|
+
return new ReadableStream({ start(controller) { for (const chunk of chunks)
|
|
8
|
+
controller.enqueue(encoder.encode(chunk)); controller.close(); } });
|
|
9
|
+
}
|
|
10
|
+
function sseResponse(chunks) {
|
|
11
|
+
return { ok: true, status: 200, headers: new Headers({ "content-type": "text/event-stream" }), body: sseBody(chunks) };
|
|
12
|
+
}
|
|
13
|
+
function errorResponse(status, code) {
|
|
14
|
+
return { ok: false, status, json: async () => ({ success: false, error: { code, message: "denied", retryable: false } }) };
|
|
15
|
+
}
|
|
16
|
+
const scope = { tenantId: "tenant-1", roomId: "room-1", projectId: "project-1" };
|
|
17
|
+
function messageFixture() {
|
|
18
|
+
return { id: "message-1", roomId: "room-1", author: { type: "human", userId: "user-1" }, content: { type: "text", text: "hello" }, mentions: [], source: "user", createdAt: "2026-01-01T00:00:00.000Z" };
|
|
19
|
+
}
|
|
20
|
+
beforeEach(() => {
|
|
21
|
+
fetchMock.mockReset();
|
|
22
|
+
global.fetch = fetchMock;
|
|
23
|
+
});
|
|
24
|
+
async function collect(connection) {
|
|
25
|
+
const frames = [];
|
|
26
|
+
for await (const frame of connection)
|
|
27
|
+
frames.push(frame);
|
|
28
|
+
return frames;
|
|
29
|
+
}
|
|
30
|
+
describe("RoomEventsClient", () => {
|
|
31
|
+
it("hydrates the ready control frame", async () => {
|
|
32
|
+
fetchMock.mockResolvedValueOnce(sseResponse(["event: ready\ndata: {\"epoch\":\"e\",\"headEventId\":null}\n\n"]));
|
|
33
|
+
const connection = new RoomEventsClient("https://gateway", () => ({})).connect("workspace/one", { signal: new AbortController().signal });
|
|
34
|
+
await expect(connection.opened).resolves.toEqual({ status: 200 });
|
|
35
|
+
const frames = await collect(connection);
|
|
36
|
+
expect(frames[0].event).toEqual({ type: "ready", data: { epoch: "e", headEventId: null } });
|
|
37
|
+
expect(frames[0].id).toBeUndefined();
|
|
38
|
+
expect(fetchMock.mock.calls[0][0]).toBe("https://gateway/api/workspaces/workspace%2Fone/room-events");
|
|
39
|
+
});
|
|
40
|
+
it("hydrates a scoped message.created business frame", async () => {
|
|
41
|
+
const data = JSON.stringify({ id: "e:1", type: "message.created", occurredAt: "2026-01-02T00:00:00.000Z", data: { message: messageFixture() }, scope });
|
|
42
|
+
fetchMock.mockResolvedValueOnce(sseResponse([`id: e:1\nevent: message.created\ndata: ${data}\n\n`]));
|
|
43
|
+
const connection = new RoomEventsClient("https://gateway", () => ({})).connect("w", { signal: new AbortController().signal });
|
|
44
|
+
const frames = await collect(connection);
|
|
45
|
+
expect(frames[0].id).toBe("e:1");
|
|
46
|
+
const event = frames[0].event;
|
|
47
|
+
expect(event.type).toBe("message.created");
|
|
48
|
+
expect(event.scope).toEqual(scope);
|
|
49
|
+
expect(event.occurredAt).toBeInstanceOf(Date);
|
|
50
|
+
expect(event.data.message.createdAt).toBeInstanceOf(Date);
|
|
51
|
+
});
|
|
52
|
+
it("hydrates a user-channel read.changed frame without scope", async () => {
|
|
53
|
+
const data = JSON.stringify({ id: "e:2", type: "read.changed", occurredAt: "2026-01-02T00:00:00.000Z", data: { projectId: "project-1", roomId: "room-1", lastReadAt: "2026-01-03T00:00:00.000Z" } });
|
|
54
|
+
fetchMock.mockResolvedValueOnce(sseResponse([`id: e:2\nevent: read.changed\ndata: ${data}\n\n`]));
|
|
55
|
+
const connection = new RoomEventsClient("https://gateway", () => ({})).connect("w", { signal: new AbortController().signal });
|
|
56
|
+
const frames = await collect(connection);
|
|
57
|
+
const event = frames[0].event;
|
|
58
|
+
expect(event.type).toBe("read.changed");
|
|
59
|
+
expect(event.data.projectId).toBe("project-1");
|
|
60
|
+
expect(event.data.lastReadAt).toBeInstanceOf(Date);
|
|
61
|
+
expect("scope" in event).toBe(false);
|
|
62
|
+
});
|
|
63
|
+
it("accepts every membership.affected change value and rejects invalid ones", async () => {
|
|
64
|
+
const frame = (id, change) => `id: ${id}\nevent: membership.affected\ndata: ${JSON.stringify({ id, type: "membership.affected", occurredAt: "2026-01-02T00:00:00.000Z", data: { change, projectId: "project-1", roomId: "room-1" } })}\n\n`;
|
|
65
|
+
fetchMock.mockResolvedValueOnce(sseResponse([frame("e:1", "added"), frame("e:2", "removed"), frame("e:3", "role_changed")]));
|
|
66
|
+
const rooms = new RoomEventsClient("https://gateway", () => ({}));
|
|
67
|
+
const frames = await collect(rooms.connect("w", { signal: new AbortController().signal }));
|
|
68
|
+
expect(frames).toHaveLength(3);
|
|
69
|
+
expect(frames[2].event.data.change).toBe("role_changed");
|
|
70
|
+
fetchMock.mockResolvedValueOnce(sseResponse([frame("e:4", "banned")]));
|
|
71
|
+
await expect(collect(rooms.connect("w", { signal: new AbortController().signal }))).rejects.toMatchObject({ status: 400, code: "INVALID_EVENT" });
|
|
72
|
+
});
|
|
73
|
+
it("accepts every access.revoked reason", async () => {
|
|
74
|
+
const chunks = ["PROJECT_ACCESS_REVOKED", "TOKEN_EXPIRED", "CONNECTION_SUPERSEDED"].map((reason) => `event: access.revoked\ndata: {"reason":"${reason}"}\n\n`);
|
|
75
|
+
fetchMock.mockResolvedValueOnce(sseResponse(chunks));
|
|
76
|
+
const frames = await collect(new RoomEventsClient("https://gateway", () => ({})).connect("w", { signal: new AbortController().signal }));
|
|
77
|
+
expect(frames.map((f) => f.event)).toEqual([
|
|
78
|
+
{ type: "access.revoked", data: { reason: "PROJECT_ACCESS_REVOKED" } },
|
|
79
|
+
{ type: "access.revoked", data: { reason: "TOKEN_EXPIRED" } },
|
|
80
|
+
{ type: "access.revoked", data: { reason: "CONNECTION_SUPERSEDED" } },
|
|
81
|
+
]);
|
|
82
|
+
});
|
|
83
|
+
it("passes unknown business events through without killing the stream", async () => {
|
|
84
|
+
const unknown = JSON.stringify({ id: "e:9", type: "future.event", occurredAt: "2026-01-02T00:00:00.000Z", data: { x: 1 }, scope });
|
|
85
|
+
const known = JSON.stringify({ id: "e:10", type: "read.changed", occurredAt: "2026-01-02T00:00:00.000Z", data: { projectId: "p", roomId: "r", lastReadAt: "2026-01-03T00:00:00.000Z" } });
|
|
86
|
+
fetchMock.mockResolvedValueOnce(sseResponse([`id: e:9\nevent: future.event\ndata: ${unknown}\n\n`, `id: e:10\nevent: read.changed\ndata: ${known}\n\n`]));
|
|
87
|
+
const frames = await collect(new RoomEventsClient("https://gateway", () => ({})).connect("w", { signal: new AbortController().signal }));
|
|
88
|
+
expect(frames).toHaveLength(2);
|
|
89
|
+
const event = frames[0].event;
|
|
90
|
+
expect(event.type).toBe("future.event");
|
|
91
|
+
expect(event.id).toBe("e:9");
|
|
92
|
+
expect(event.occurredAt).toBeInstanceOf(Date);
|
|
93
|
+
expect(event.data).toEqual({ x: 1 });
|
|
94
|
+
expect(event.scope).toEqual(scope);
|
|
95
|
+
expect(frames[1].event.type).toBe("read.changed");
|
|
96
|
+
});
|
|
97
|
+
it("hydrates a resync control frame and closes cleanly without INVALID_EVENT", async () => {
|
|
98
|
+
fetchMock.mockResolvedValueOnce(sseResponse([
|
|
99
|
+
"event: ready\ndata: {\"epoch\":\"e\",\"headEventId\":null}\n\n",
|
|
100
|
+
"event: resync\ndata: {\"reason\":\"SLOW_CONSUMER\"}\n\n",
|
|
101
|
+
]));
|
|
102
|
+
const frames = await collect(new RoomEventsClient("https://gateway", () => ({})).connect("w", { signal: new AbortController().signal }));
|
|
103
|
+
expect(frames.map((f) => f.event)).toEqual([
|
|
104
|
+
{ type: "ready", data: { epoch: "e", headEventId: null } },
|
|
105
|
+
{ type: "resync", data: { reason: "SLOW_CONSUMER" } },
|
|
106
|
+
]);
|
|
107
|
+
fetchMock.mockResolvedValueOnce(sseResponse(["event: resync\ndata: {\"reason\":\"BOGUS\"}\n\n"]));
|
|
108
|
+
await expect(collect(new RoomEventsClient("https://gateway", () => ({})).connect("w", { signal: new AbortController().signal }))).rejects.toMatchObject({ status: 400, code: "INVALID_EVENT" });
|
|
109
|
+
});
|
|
110
|
+
it("rejects frames whose data.type disagrees with the SSE event name", async () => {
|
|
111
|
+
fetchMock.mockResolvedValueOnce(sseResponse(["id: e:1\nevent: message.created\ndata: {\"id\":\"e:1\",\"type\":\"task.changed\"}\n\n"]));
|
|
112
|
+
const connection = new RoomEventsClient("https://gateway", () => ({})).connect("w", { signal: new AbortController().signal });
|
|
113
|
+
await expect(collect(connection)).rejects.toMatchObject({ name: "ProjectRoomClientError", status: 400, code: "INVALID_EVENT" });
|
|
114
|
+
});
|
|
115
|
+
it("rejects malformed control payloads and bad scope shapes", async () => {
|
|
116
|
+
const rooms = new RoomEventsClient("https://gateway", () => ({}));
|
|
117
|
+
fetchMock.mockResolvedValueOnce(sseResponse(["event: ready\ndata: {\"epoch\":\"e\",\"headEventId\":7}\n\n"]));
|
|
118
|
+
await expect(collect(rooms.connect("w", { signal: new AbortController().signal }))).rejects.toMatchObject({ status: 400, code: "INVALID_EVENT" });
|
|
119
|
+
const badScope = JSON.stringify({ id: "e:1", type: "message.created", occurredAt: "2026-01-02T00:00:00.000Z", data: { message: messageFixture() }, scope: { tenantId: "t" } });
|
|
120
|
+
fetchMock.mockResolvedValueOnce(sseResponse([`id: e:1\nevent: message.created\ndata: ${badScope}\n\n`]));
|
|
121
|
+
await expect(collect(rooms.connect("w", { signal: new AbortController().signal }))).rejects.toMatchObject({ status: 400, code: "INVALID_EVENT" });
|
|
122
|
+
});
|
|
123
|
+
it("resolves opened on a 200 SSE response and rejects with the envelope code on 403", async () => {
|
|
124
|
+
const rooms = new RoomEventsClient("https://gateway", () => ({ Authorization: "Bearer token" }));
|
|
125
|
+
fetchMock.mockResolvedValueOnce(sseResponse([]));
|
|
126
|
+
const ok = rooms.connect("w", { signal: new AbortController().signal });
|
|
127
|
+
await expect(ok.opened).resolves.toEqual({ status: 200 });
|
|
128
|
+
expect(fetchMock.mock.calls[0][1]).toEqual(expect.objectContaining({ headers: expect.objectContaining({ Accept: "text/event-stream", Authorization: "Bearer token" }) }));
|
|
129
|
+
expect(fetchMock.mock.calls[0][1].headers).not.toHaveProperty("Last-Event-ID");
|
|
130
|
+
fetchMock.mockResolvedValueOnce(errorResponse(403, "FORBIDDEN"));
|
|
131
|
+
const denied = rooms.connect("w", { signal: new AbortController().signal });
|
|
132
|
+
await expect(denied.opened).rejects.toMatchObject({ status: 403, code: "FORBIDDEN" });
|
|
133
|
+
await expect(denied.opened).rejects.toBeInstanceOf(ProjectRoomClientError);
|
|
134
|
+
await expect(collect(denied)).rejects.toMatchObject({ status: 403, code: "FORBIDDEN" });
|
|
135
|
+
});
|
|
136
|
+
it("is mounted on Client with live headers", async () => {
|
|
137
|
+
fetchMock.mockResolvedValueOnce(sseResponse([]));
|
|
138
|
+
const client = new Client({ baseURL: "https://gateway", apiKey: "token", assistantId: "a", transport: "sse" });
|
|
139
|
+
client.setTenantId("tenant-1");
|
|
140
|
+
await client.roomEvents.connect("w", { signal: new AbortController().signal }).opened;
|
|
141
|
+
expect(fetchMock.mock.calls[0][1]).toEqual(expect.objectContaining({ headers: expect.objectContaining({ Authorization: "Bearer token", "x-tenant-id": "tenant-1" }) }));
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
//# sourceMappingURL=room-events.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room-events.test.js","sourceRoot":"","sources":["../../src/__tests__/room-events.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RuntimeAxiomClient transport tests.
|
|
3
|
+
*
|
|
4
|
+
* Asserts the reuse-first transport: the Console client's own `/api/...`
|
|
5
|
+
* paths land on the gateway's `/runtime/api` console mirror, baseURL points
|
|
6
|
+
* at the web app runtime, and the web-app identity (verified bearer or
|
|
7
|
+
* unverified external-user header) is injected per request.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=runtime-client.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-client.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/runtime-client.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RuntimeAxiomClient transport tests.
|
|
3
|
+
*
|
|
4
|
+
* Asserts the reuse-first transport: the Console client's own `/api/...`
|
|
5
|
+
* paths land on the gateway's `/runtime/api` console mirror, baseURL points
|
|
6
|
+
* at the web app runtime, and the web-app identity (verified bearer or
|
|
7
|
+
* unverified external-user header) is injected per request.
|
|
8
|
+
*/
|
|
9
|
+
import { RuntimeAxiomClient } from "../runtime-client";
|
|
10
|
+
const mockFetch = jest.fn();
|
|
11
|
+
global.fetch = mockFetch;
|
|
12
|
+
function mockJsonResponse(body, status = 200) {
|
|
13
|
+
mockFetch.mockResolvedValue({
|
|
14
|
+
ok: status < 400,
|
|
15
|
+
status,
|
|
16
|
+
json: async () => body,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function makeVerifiedClient(token = "tok-1") {
|
|
20
|
+
return new RuntimeAxiomClient({
|
|
21
|
+
gatewayUrl: "http://gw.test",
|
|
22
|
+
webAppId: "webapp_1",
|
|
23
|
+
assistantId: "asst-1",
|
|
24
|
+
transport: "sse",
|
|
25
|
+
identity: { mode: "verified", tokenProvider: async () => token },
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
function makeUnverifiedClient() {
|
|
29
|
+
return new RuntimeAxiomClient({
|
|
30
|
+
gatewayUrl: "http://gw.test/",
|
|
31
|
+
webAppId: "webapp_1",
|
|
32
|
+
assistantId: "asst-1",
|
|
33
|
+
transport: "sse",
|
|
34
|
+
identity: { mode: "unverified", userId: "vendor-user-42" },
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/** Drive the transport exactly like the chat stack's threads.list does. */
|
|
38
|
+
async function listThreads(client) {
|
|
39
|
+
return client.listThreads();
|
|
40
|
+
}
|
|
41
|
+
function lastRequest() {
|
|
42
|
+
const [url, init] = mockFetch.mock.calls[0];
|
|
43
|
+
return [url, init];
|
|
44
|
+
}
|
|
45
|
+
describe("RuntimeAxiomClient", () => {
|
|
46
|
+
afterEach(() => mockFetch.mockClear());
|
|
47
|
+
it("points every Console /api path at the /runtime/api mirror", async () => {
|
|
48
|
+
const client = makeVerifiedClient();
|
|
49
|
+
mockJsonResponse({ success: true, data: { records: [] } });
|
|
50
|
+
await listThreads(client);
|
|
51
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
52
|
+
const [url] = lastRequest();
|
|
53
|
+
expect(url).toBe("http://gw.test/api/web-apps/webapp_1/runtime/api/assistants/asst-1/threads");
|
|
54
|
+
});
|
|
55
|
+
it("resolves and injects the bearer lazily (no explicit primeToken call)", async () => {
|
|
56
|
+
const client = makeVerifiedClient("tok-1");
|
|
57
|
+
mockJsonResponse({ success: true, data: { records: [] } });
|
|
58
|
+
await listThreads(client);
|
|
59
|
+
expect(new Headers(lastRequest()[1].headers).get("Authorization")).toBe("Bearer tok-1");
|
|
60
|
+
});
|
|
61
|
+
it("single-flights the token provider across concurrent requests", async () => {
|
|
62
|
+
const provider = jest.fn().mockResolvedValue("tok-2");
|
|
63
|
+
const client = new RuntimeAxiomClient({
|
|
64
|
+
gatewayUrl: "http://gw.test",
|
|
65
|
+
webAppId: "webapp_1",
|
|
66
|
+
assistantId: "asst-1",
|
|
67
|
+
transport: "sse",
|
|
68
|
+
identity: { mode: "verified", tokenProvider: provider },
|
|
69
|
+
});
|
|
70
|
+
mockJsonResponse({ success: true, data: { records: [] } });
|
|
71
|
+
await Promise.all([listThreads(client), listThreads(client)]);
|
|
72
|
+
expect(provider).toHaveBeenCalledTimes(1);
|
|
73
|
+
});
|
|
74
|
+
it("injects X-Axiom-External-User-Id in unverified mode (no Authorization)", async () => {
|
|
75
|
+
const client = makeUnverifiedClient();
|
|
76
|
+
mockJsonResponse({ success: true, data: { records: [] } });
|
|
77
|
+
await listThreads(client);
|
|
78
|
+
const headers = new Headers(lastRequest()[1].headers);
|
|
79
|
+
expect(headers.get("X-Axiom-External-User-Id")).toBe("vendor-user-42");
|
|
80
|
+
expect(headers.get("Authorization")).toBeNull();
|
|
81
|
+
});
|
|
82
|
+
it("trims a trailing slash from the gateway URL", async () => {
|
|
83
|
+
const client = makeUnverifiedClient();
|
|
84
|
+
mockJsonResponse({ success: true, data: { records: [] } });
|
|
85
|
+
await listThreads(client);
|
|
86
|
+
expect(lastRequest()[0]).toContain("/api/web-apps/webapp_1/runtime/api/");
|
|
87
|
+
});
|
|
88
|
+
it("rejects an unverified identity with an empty userId", () => {
|
|
89
|
+
expect(() => new RuntimeAxiomClient({
|
|
90
|
+
gatewayUrl: "http://gw.test",
|
|
91
|
+
webAppId: "webapp_1",
|
|
92
|
+
assistantId: "asst-1",
|
|
93
|
+
transport: "sse",
|
|
94
|
+
identity: { mode: "unverified", userId: "" },
|
|
95
|
+
})).toThrow(/non-empty userId/);
|
|
96
|
+
});
|
|
97
|
+
it("rethrows non-ok responses with a status-carrying error", async () => {
|
|
98
|
+
const client = makeVerifiedClient();
|
|
99
|
+
mockJsonResponse({ error: "nope" }, 401);
|
|
100
|
+
await expect(listThreads(client)).rejects.toMatchObject({ status: 401 });
|
|
101
|
+
});
|
|
102
|
+
it("clones into a sibling runtime client scoped to the cloned assistant", async () => {
|
|
103
|
+
const client = makeVerifiedClient("tok-1");
|
|
104
|
+
mockJsonResponse({ success: true, data: { records: [] } });
|
|
105
|
+
const clone = client.clone({ assistantId: "asst-2" });
|
|
106
|
+
expect(clone).not.toBe(client);
|
|
107
|
+
await listThreads(clone);
|
|
108
|
+
const [url, init] = lastRequest();
|
|
109
|
+
expect(url).toContain("/runtime/api/assistants/asst-2/threads");
|
|
110
|
+
expect(new Headers(init.headers).get("Authorization")).toBe("Bearer tok-1");
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
//# sourceMappingURL=runtime-client.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-client.test.js","sourceRoot":"","sources":["../../src/__tests__/runtime-client.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-rooms.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/workspace-rooms.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { Client } from "../client";
|
|
2
|
+
import { ProjectRoomClientError, ProjectRoomsClient } from "../project-rooms";
|
|
3
|
+
import { WorkspaceRoomsClient } from "../workspace-rooms";
|
|
4
|
+
const fetchMock = jest.fn();
|
|
5
|
+
function response(data, ok = true, status = 200) {
|
|
6
|
+
return { ok, status, json: async () => data };
|
|
7
|
+
}
|
|
8
|
+
function projectFixture() {
|
|
9
|
+
return {
|
|
10
|
+
id: "project-1", tenantId: "tenant-1", workspaceId: "w1",
|
|
11
|
+
name: "Project One", description: "desc", config: { key: "value" }, kind: "business",
|
|
12
|
+
createdAt: "2026-01-01T00:00:00.000Z", updatedAt: "2026-01-02T00:00:00.000Z",
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function roomFixture() {
|
|
16
|
+
return {
|
|
17
|
+
id: "room-1", tenantId: "tenant-1", workspaceId: "w1", projectId: "project-1",
|
|
18
|
+
type: "main", name: "Main", createdAt: "2026-01-01T00:00:00.000Z", updatedAt: "2026-01-02T00:00:00.000Z",
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function messageFixture() {
|
|
22
|
+
return { id: "message-1", roomId: "room-1", author: { type: "human", userId: "user-1" }, content: { type: "text", text: "hello" }, mentions: [], source: "user", createdAt: "2026-01-03T00:00:00.000Z" };
|
|
23
|
+
}
|
|
24
|
+
beforeEach(() => {
|
|
25
|
+
fetchMock.mockReset();
|
|
26
|
+
global.fetch = fetchMock;
|
|
27
|
+
});
|
|
28
|
+
describe("WorkspaceRoomsClient", () => {
|
|
29
|
+
it("lists aggregated rooms with hydrated dates and unreadCount", async () => {
|
|
30
|
+
fetchMock.mockResolvedValueOnce(response({
|
|
31
|
+
success: true,
|
|
32
|
+
data: {
|
|
33
|
+
rooms: [
|
|
34
|
+
{
|
|
35
|
+
project: projectFixture(), room: roomFixture(), lastMessage: messageFixture(),
|
|
36
|
+
participantCount: 3, participantNames: ["Alice", "Bob"], isPublic: true, unreadCount: 5,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
project: { ...projectFixture(), id: "project-2", description: undefined, config: undefined, kind: undefined },
|
|
40
|
+
room: { ...roomFixture(), id: "room-2", projectId: "project-2" },
|
|
41
|
+
participantCount: 1, participantNames: ["Alice"], unreadCount: 0,
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
}));
|
|
46
|
+
const rooms = new WorkspaceRoomsClient("https://gateway", () => ({ Authorization: "Bearer token" }));
|
|
47
|
+
const entries = await rooms.list("w1");
|
|
48
|
+
expect(fetchMock.mock.calls[0][0]).toBe("https://gateway/api/workspaces/w1/rooms");
|
|
49
|
+
expect(fetchMock.mock.calls[0][1]).toEqual(expect.objectContaining({ headers: { Authorization: "Bearer token" } }));
|
|
50
|
+
expect(entries).toHaveLength(2);
|
|
51
|
+
const first = entries[0];
|
|
52
|
+
expect(first.project.createdAt).toBeInstanceOf(Date);
|
|
53
|
+
expect(first.project.updatedAt).toBeInstanceOf(Date);
|
|
54
|
+
expect(first.room.createdAt).toBeInstanceOf(Date);
|
|
55
|
+
expect(first.lastMessage?.createdAt).toBeInstanceOf(Date);
|
|
56
|
+
expect(first.unreadCount).toBe(5);
|
|
57
|
+
expect(first.participantCount).toBe(3);
|
|
58
|
+
expect(first.participantNames).toEqual(["Alice", "Bob"]);
|
|
59
|
+
expect(first.isPublic).toBe(true);
|
|
60
|
+
const second = entries[1];
|
|
61
|
+
expect(second.lastMessage).toBeUndefined();
|
|
62
|
+
expect("lastMessage" in second).toBe(false);
|
|
63
|
+
expect("isPublic" in second).toBe(false);
|
|
64
|
+
expect(second.unreadCount).toBe(0);
|
|
65
|
+
});
|
|
66
|
+
it("rejects non-ok envelopes with ProjectRoomClientError", async () => {
|
|
67
|
+
fetchMock.mockResolvedValueOnce(response({ success: false, error: { code: "FORBIDDEN", message: "no access", retryable: false, details: { workspaceId: "w1" } } }, false, 403));
|
|
68
|
+
const rooms = new WorkspaceRoomsClient("https://gateway", () => ({}));
|
|
69
|
+
const error = await rooms.list("w1").catch((caught) => caught);
|
|
70
|
+
expect(error).toBeInstanceOf(ProjectRoomClientError);
|
|
71
|
+
expect(error).toEqual(expect.objectContaining({ name: "ProjectRoomClientError", status: 403, code: "FORBIDDEN", retryable: false, details: { workspaceId: "w1" } }));
|
|
72
|
+
});
|
|
73
|
+
it("maps ok-but-unsuccessful envelopes without a code to INVALID_RESPONSE", async () => {
|
|
74
|
+
fetchMock.mockResolvedValueOnce(response({ success: false, error: { message: "bad envelope" } }));
|
|
75
|
+
const rooms = new WorkspaceRoomsClient("https://gateway", () => ({}));
|
|
76
|
+
await expect(rooms.list("w1")).rejects.toMatchObject({ code: "INVALID_RESPONSE" });
|
|
77
|
+
});
|
|
78
|
+
it("rejects malformed entries", async () => {
|
|
79
|
+
fetchMock.mockResolvedValueOnce(response({ success: true, data: { rooms: [{ project: projectFixture(), room: roomFixture(), participantCount: "3", participantNames: [], unreadCount: 0 }] } }));
|
|
80
|
+
const rooms = new WorkspaceRoomsClient("https://gateway", () => ({}));
|
|
81
|
+
await expect(rooms.list("w1")).rejects.toMatchObject({ code: "INVALID_RESPONSE" });
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
describe("ProjectRoomsClient.markRead", () => {
|
|
85
|
+
it("POSTs an empty body to the read-state endpoint", async () => {
|
|
86
|
+
fetchMock.mockResolvedValueOnce(response({ success: true, data: { marked: true } }));
|
|
87
|
+
const rooms = new ProjectRoomsClient("https://gateway", () => ({}));
|
|
88
|
+
await rooms.messages.markRead("p1");
|
|
89
|
+
expect(fetchMock.mock.calls[0][0]).toBe("https://gateway/api/projects/p1/room/read-state");
|
|
90
|
+
const init = fetchMock.mock.calls[0][1];
|
|
91
|
+
expect(init.method).toBe("POST");
|
|
92
|
+
expect(JSON.parse(init.body)).toEqual({});
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
describe("public API surface", () => {
|
|
96
|
+
it("does not leak internal room hydrators from the package index", async () => {
|
|
97
|
+
const publicApi = await import("../index");
|
|
98
|
+
expect(publicApi).not.toHaveProperty("hydrateRoom");
|
|
99
|
+
expect(publicApi).not.toHaveProperty("hydrateMessage");
|
|
100
|
+
expect(publicApi).not.toHaveProperty("hydratePublicMember");
|
|
101
|
+
expect(publicApi).not.toHaveProperty("hydratePublicBot");
|
|
102
|
+
expect(publicApi).not.toHaveProperty("hydrateEvent");
|
|
103
|
+
expect(publicApi.ProjectRoomClientError).toBeDefined();
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
describe("Client.workspaceRooms", () => {
|
|
107
|
+
it("uses live headers and cloned clients expose the namespace", async () => {
|
|
108
|
+
fetchMock.mockResolvedValueOnce(response({ success: true, data: { rooms: [] } }));
|
|
109
|
+
const client = new Client({ baseURL: "https://gateway", apiKey: "token", assistantId: "a", transport: "sse" });
|
|
110
|
+
client.setTenantId("tenant-1");
|
|
111
|
+
await client.workspaceRooms.list("w1");
|
|
112
|
+
expect(fetchMock.mock.calls[0][1]).toEqual(expect.objectContaining({ headers: expect.objectContaining({ Authorization: "Bearer token", "x-tenant-id": "tenant-1" }) }));
|
|
113
|
+
expect(client.clone().workspaceRooms).toBeDefined();
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
//# sourceMappingURL=workspace-rooms.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-rooms.test.js","sourceRoot":"","sources":["../../src/__tests__/workspace-rooms.test.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ import { AbstractClient } from "./abstract-client";
|
|
|
4
4
|
import { ResourcesClient } from "./resources-client";
|
|
5
5
|
import { ExportImportClient } from "./export-import";
|
|
6
6
|
import { ProjectRoomsClient } from "./project-rooms";
|
|
7
|
+
import { WorkspaceRoomsClient } from "./workspace-rooms";
|
|
8
|
+
import { RoomEventsClient } from "./room-events";
|
|
7
9
|
/**
|
|
8
10
|
* Web client class for interacting with the Axiom Lattice Agent Service API
|
|
9
11
|
*/
|
|
@@ -12,6 +14,8 @@ export declare class Client extends AbstractClient {
|
|
|
12
14
|
resources: ResourcesClient;
|
|
13
15
|
exportImport: ExportImportClient;
|
|
14
16
|
readonly projectRooms: ProjectRoomsClient;
|
|
17
|
+
readonly workspaceRooms: WorkspaceRoomsClient;
|
|
18
|
+
readonly roomEvents: RoomEventsClient;
|
|
15
19
|
/**
|
|
16
20
|
* Creates a new Client instance
|
|
17
21
|
* @param config - Configuration options for the client
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EACL,UAAU,EAGV,YAAY,EAEZ,mBAAmB,EACnB,UAAU,EACV,WAAW,EACZ,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|