@axiom-lattice/client-sdk 4.2.1 → 4.3.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,152 @@
1
+ import type { ProjectBotMembership, ProjectBotRole, ProjectHumanRole, ProjectMembership, ProjectRoom, ProjectRoomControlEvent, ProjectRoomMention, ProjectRoomPublicMessage, ProjectRoomPublicMembership, ProjectRoomPublicBotMembership, ProjectRoomMessageCreatedEvent, ProjectRoomRosterChangedEvent, ProjectRoomMembershipChangedEvent, ProjectRoomTaskChangedEvent } from "@axiom-lattice/protocols";
2
+ export declare class ProjectRoomClientError extends Error {
3
+ readonly status: number;
4
+ readonly code: string;
5
+ readonly retryable: boolean;
6
+ readonly details?: unknown | undefined;
7
+ constructor(message: string, status: number, code: string, retryable: boolean, details?: unknown | undefined);
8
+ }
9
+ export interface ProjectRoomRecord extends Omit<ProjectRoom, "createdAt" | "updatedAt"> {
10
+ createdAt: Date;
11
+ updatedAt: Date;
12
+ }
13
+ export interface ProjectRoomMessageRecord extends Omit<ProjectRoomPublicMessage, "createdAt"> {
14
+ createdAt: Date;
15
+ }
16
+ export interface ProjectRoomMembershipRecord extends Omit<ProjectMembership, "joinedAt" | "updatedAt"> {
17
+ joinedAt: Date;
18
+ updatedAt: Date;
19
+ }
20
+ export interface ProjectRoomBotRecord extends Omit<ProjectBotMembership, "joinedAt" | "updatedAt"> {
21
+ joinedAt: Date;
22
+ updatedAt: Date;
23
+ }
24
+ export interface ProjectRoomPublicMembershipRecord extends Omit<ProjectRoomPublicMembership, "joinedAt" | "updatedAt"> {
25
+ joinedAt: Date;
26
+ updatedAt: Date;
27
+ }
28
+ export interface ProjectRoomPublicBotRecord extends Omit<ProjectRoomPublicBotMembership, "joinedAt" | "updatedAt"> {
29
+ joinedAt: Date;
30
+ updatedAt: Date;
31
+ }
32
+ export type ProjectRoomDispatchErrorCode = "BOT_PAUSED" | "TARGET_UNAVAILABLE" | "TARGET_REQUIRED" | "CHANNEL_UNAVAILABLE" | "DISPATCH_FAILED" | "DISPATCH_STATUS_UNKNOWN" | "AUTHORIZATION_REVOKED" | "ROSTER_CONFLICT";
33
+ export interface ProjectRoomDispatchResult {
34
+ membershipId?: string;
35
+ success: boolean;
36
+ errorCode?: ProjectRoomDispatchErrorCode;
37
+ }
38
+ export interface ProjectRoomSendResult {
39
+ message: ProjectRoomMessageRecord;
40
+ dispatch: ProjectRoomDispatchResult[];
41
+ replayed: boolean;
42
+ }
43
+ export interface SendProjectRoomMessageInput {
44
+ text: string;
45
+ mentions: ProjectRoomMention[];
46
+ replyToMessageId?: string;
47
+ idempotencyKey: string;
48
+ }
49
+ export interface ListProjectRoomMessagesOptions {
50
+ limit?: number;
51
+ cursor?: {
52
+ createdAt: Date;
53
+ id: string;
54
+ };
55
+ }
56
+ export interface UpdateProjectMembershipInput {
57
+ role: ProjectHumanRole;
58
+ expectedUpdatedAt: Date;
59
+ }
60
+ export interface MutationExpectedUpdatedAt {
61
+ expectedUpdatedAt: Date | string;
62
+ }
63
+ export interface AddProjectMembershipInput {
64
+ userId: string;
65
+ role: ProjectHumanRole;
66
+ }
67
+ export interface AddProjectBotMembershipInput {
68
+ assistantId: string;
69
+ role: ProjectBotRole;
70
+ title: string;
71
+ responsibility?: string;
72
+ mentionName: string;
73
+ }
74
+ export interface UpdateProjectBotMembershipInput {
75
+ role?: ProjectBotRole;
76
+ title?: string;
77
+ responsibility?: string;
78
+ mentionName?: string;
79
+ expectedUpdatedAt: Date | string;
80
+ }
81
+ export type HydratedProjectRoomBusinessEvent = (Omit<ProjectRoomMessageCreatedEvent, "occurredAt" | "data"> & {
82
+ occurredAt: Date;
83
+ data: {
84
+ message: ProjectRoomMessageRecord;
85
+ };
86
+ }) | (Omit<ProjectRoomRosterChangedEvent, "occurredAt" | "data"> & {
87
+ occurredAt: Date;
88
+ data: {
89
+ change: ProjectRoomRosterChangedEvent["data"]["change"];
90
+ membership: ProjectRoomPublicBotRecord;
91
+ };
92
+ }) | (Omit<ProjectRoomMembershipChangedEvent, "occurredAt" | "data"> & {
93
+ occurredAt: Date;
94
+ data: {
95
+ change: ProjectRoomMembershipChangedEvent["data"]["change"];
96
+ membership: ProjectRoomPublicMembershipRecord;
97
+ };
98
+ }) | (Omit<ProjectRoomTaskChangedEvent, "occurredAt" | "data"> & {
99
+ occurredAt: Date;
100
+ data: Omit<ProjectRoomTaskChangedEvent["data"], "updatedAt"> & {
101
+ updatedAt: Date;
102
+ };
103
+ });
104
+ export interface ProjectRoomSseFrame {
105
+ event: HydratedProjectRoomBusinessEvent | ProjectRoomControlEvent;
106
+ id?: string;
107
+ retry?: number;
108
+ }
109
+ type HeadersGetter = () => Record<string, string>;
110
+ export interface ProjectRoomEventConnection extends AsyncIterable<ProjectRoomSseFrame> {
111
+ readonly opened: Promise<{
112
+ status: 200;
113
+ lastEventId?: string;
114
+ }>;
115
+ }
116
+ export declare class ProjectRoomsClient {
117
+ private readonly baseURL;
118
+ private readonly getHeaders;
119
+ readonly messages: {
120
+ list: (projectId: string, options?: ListProjectRoomMessagesOptions) => Promise<ProjectRoomMessageRecord[]>;
121
+ send: (projectId: string, input: SendProjectRoomMessageInput) => Promise<ProjectRoomSendResult>;
122
+ retry: (projectId: string, messageId: string) => Promise<ProjectRoomDispatchResult[]>;
123
+ };
124
+ readonly members: {
125
+ list: (projectId: string) => Promise<ProjectRoomMembershipRecord[]>;
126
+ add: (projectId: string, input: AddProjectMembershipInput) => Promise<ProjectRoomMembershipRecord>;
127
+ update: (projectId: string, membershipId: string, input: UpdateProjectMembershipInput) => Promise<ProjectRoomMembershipRecord>;
128
+ remove: (projectId: string, membershipId: string, input: MutationExpectedUpdatedAt) => Promise<unknown>;
129
+ };
130
+ readonly bots: {
131
+ list: (projectId: string) => Promise<ProjectRoomBotRecord[]>;
132
+ add: (projectId: string, input: AddProjectBotMembershipInput) => Promise<ProjectRoomBotRecord>;
133
+ update: (projectId: string, membershipId: string, input: UpdateProjectBotMembershipInput) => Promise<ProjectRoomBotRecord>;
134
+ pause: (projectId: string, membershipId: string, input: MutationExpectedUpdatedAt) => Promise<ProjectRoomBotRecord>;
135
+ resume: (projectId: string, membershipId: string, input: MutationExpectedUpdatedAt) => Promise<ProjectRoomBotRecord>;
136
+ remove: (projectId: string, membershipId: string, input: MutationExpectedUpdatedAt) => Promise<unknown>;
137
+ };
138
+ readonly events: {
139
+ connect: (projectId: string, options: {
140
+ lastEventId?: string;
141
+ signal: AbortSignal;
142
+ }) => ProjectRoomEventConnection;
143
+ };
144
+ constructor(baseURL: string, getHeaders: HeadersGetter);
145
+ getRoom(projectId: string): Promise<ProjectRoomRecord>;
146
+ getRealtimeMode(projectId: string): Promise<unknown>;
147
+ private records;
148
+ private request;
149
+ private connect;
150
+ }
151
+ export {};
152
+ //# sourceMappingURL=project-rooms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-rooms.d.ts","sourceRoot":"","sources":["../src/project-rooms.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,240 @@
1
+ import { parseSseBody, SseParseError } from "./sse-parser";
2
+ export class ProjectRoomClientError extends Error {
3
+ constructor(message, status, code, retryable, details) {
4
+ super(message);
5
+ this.status = status;
6
+ this.code = code;
7
+ this.retryable = retryable;
8
+ this.details = details;
9
+ this.name = "ProjectRoomClientError";
10
+ }
11
+ }
12
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
13
+ const date = (value, field) => {
14
+ const result = value instanceof Date ? new Date(value.getTime()) : new Date(typeof value === "string" || typeof value === "number" ? value : Number.NaN);
15
+ if (!Number.isFinite(result.getTime()))
16
+ throw new ProjectRoomClientError(`Invalid ${field}`, 500, "INVALID_RESPONSE", false);
17
+ return result;
18
+ };
19
+ const requiredString = (record, field) => {
20
+ if (typeof record[field] !== "string")
21
+ throw new ProjectRoomClientError(`Invalid ${field}`, 500, "INVALID_RESPONSE", false);
22
+ return record[field];
23
+ };
24
+ const oneOf = (value, values, field) => {
25
+ if (typeof value !== "string" || !values.includes(value))
26
+ throw new ProjectRoomClientError(`Invalid ${field}`, 500, "INVALID_RESPONSE", false);
27
+ return value;
28
+ };
29
+ const messageSources = ["user", "agent", "task", "routine", "system"];
30
+ const humanRoles = ["owner", "admin", "member", "viewer"];
31
+ const memberStatuses = ["active", "removed"];
32
+ const botRoles = ["coordinator", "specialist"];
33
+ const botStatuses = ["active", "paused", "removed"];
34
+ const exactKeys = (row, required, optional = []) => {
35
+ if (required.some((key) => !Object.prototype.hasOwnProperty.call(row, key)) || Object.keys(row).some((key) => !required.includes(key) && !optional.includes(key)))
36
+ throw new ProjectRoomClientError("Invalid Project Room response", 500, "INVALID_RESPONSE", false);
37
+ };
38
+ const hydrateAuthor = (value) => {
39
+ const row = record(value);
40
+ const type = oneOf(row.type, ["human", "bot", "system"], "author.type");
41
+ if (type === "human") {
42
+ exactKeys(row, ["type", "userId"]);
43
+ return { type, userId: requiredString(row, "userId") };
44
+ }
45
+ if (type === "bot")
46
+ return { type, membershipId: requiredString(row, "membershipId") };
47
+ if (Object.keys(row).some((key) => key !== "type"))
48
+ throw new ProjectRoomClientError("Invalid author", 500, "INVALID_RESPONSE", false);
49
+ return { type };
50
+ };
51
+ const hydrateMentions = (value) => {
52
+ if (!Array.isArray(value))
53
+ throw new ProjectRoomClientError("Invalid mentions", 500, "INVALID_RESPONSE", false);
54
+ return value.map((entry) => { const row = record(entry); const type = oneOf(row.type, ["bot", "team"], "mention.type"); if (type === "team") {
55
+ if (Object.keys(row).length !== 1)
56
+ throw new ProjectRoomClientError("Invalid mention", 500, "INVALID_RESPONSE", false);
57
+ return { type };
58
+ } return { type, membershipId: requiredString(row, "membershipId") }; });
59
+ };
60
+ const record = (value) => {
61
+ if (!isRecord(value))
62
+ throw new ProjectRoomClientError("Invalid Project Room response", 500, "INVALID_RESPONSE", false);
63
+ return value;
64
+ };
65
+ const hydrateRoom = (value) => {
66
+ const row = record(value);
67
+ exactKeys(row, ["id", "tenantId", "workspaceId", "projectId", "type", "name", "createdAt", "updatedAt"]);
68
+ return { id: requiredString(row, "id"), tenantId: requiredString(row, "tenantId"), workspaceId: requiredString(row, "workspaceId"), projectId: requiredString(row, "projectId"), type: oneOf(row.type, ["main"], "type"), name: requiredString(row, "name"), createdAt: date(row.createdAt, "createdAt"), updatedAt: date(row.updatedAt, "updatedAt") };
69
+ };
70
+ const hydrateMessage = (value) => {
71
+ const row = record(value);
72
+ exactKeys(row, ["id", "roomId", "author", "content", "mentions", "source", "createdAt"], ["replyToMessageId"]);
73
+ const content = record(row.content);
74
+ if (oneOf(content.type, ["text"], "content.type") !== "text")
75
+ throw new ProjectRoomClientError("Invalid content", 500, "INVALID_RESPONSE", false);
76
+ return { id: requiredString(row, "id"), roomId: requiredString(row, "roomId"), author: hydrateAuthor(row.author), content: { type: "text", text: requiredString(content, "text") }, mentions: hydrateMentions(row.mentions), ...(row.replyToMessageId === undefined ? {} : { replyToMessageId: requiredString(row, "replyToMessageId") }), source: oneOf(row.source, messageSources, "source"), createdAt: date(row.createdAt, "createdAt") };
77
+ };
78
+ const hydrateMember = (value) => {
79
+ const row = record(value);
80
+ exactKeys(row, ["id", "tenantId", "projectId", "userId", "role", "status", "joinedAt", "updatedAt"]);
81
+ return { id: requiredString(row, "id"), tenantId: requiredString(row, "tenantId"), projectId: requiredString(row, "projectId"), userId: requiredString(row, "userId"), role: oneOf(row.role, humanRoles, "role"), status: oneOf(row.status, memberStatuses, "status"), joinedAt: date(row.joinedAt, "joinedAt"), updatedAt: date(row.updatedAt, "updatedAt") };
82
+ };
83
+ const hydrateBot = (value) => {
84
+ const row = record(value);
85
+ exactKeys(row, ["id", "tenantId", "workspaceId", "projectId", "roomId", "assistantId", "role", "title", "mentionName", "status", "roomThreadId", "joinedAt", "updatedAt"], ["responsibility"]);
86
+ return { id: requiredString(row, "id"), tenantId: requiredString(row, "tenantId"), workspaceId: requiredString(row, "workspaceId"), projectId: requiredString(row, "projectId"), roomId: requiredString(row, "roomId"), assistantId: requiredString(row, "assistantId"), role: oneOf(row.role, botRoles, "role"), title: requiredString(row, "title"), ...(row.responsibility === undefined ? {} : { responsibility: requiredString(row, "responsibility") }), mentionName: requiredString(row, "mentionName"), status: oneOf(row.status, botStatuses, "status"), roomThreadId: requiredString(row, "roomThreadId"), joinedAt: date(row.joinedAt, "joinedAt"), updatedAt: date(row.updatedAt, "updatedAt") };
87
+ };
88
+ const iso = (value) => date(value, "date").toISOString();
89
+ const hydrateDispatch = (value) => {
90
+ const row = record(value);
91
+ if (typeof row.success !== "boolean" || row.membershipId !== undefined && typeof row.membershipId !== "string" || row.errorCode !== undefined && typeof row.errorCode !== "string")
92
+ throw new ProjectRoomClientError("Invalid dispatch response", 500, "INVALID_RESPONSE", false);
93
+ return { success: row.success, ...(row.membershipId === undefined ? {} : { membershipId: row.membershipId }), ...(row.errorCode === undefined ? {} : { errorCode: row.errorCode }) };
94
+ };
95
+ const encode = encodeURIComponent;
96
+ export class ProjectRoomsClient {
97
+ constructor(baseURL, getHeaders) {
98
+ this.baseURL = baseURL;
99
+ this.getHeaders = getHeaders;
100
+ this.messages = {
101
+ list: async (projectId, options = {}) => {
102
+ const query = new URLSearchParams();
103
+ if (options.cursor) {
104
+ query.set("beforeCreatedAt", iso(options.cursor.createdAt));
105
+ query.set("beforeId", options.cursor.id);
106
+ }
107
+ if (options.limit !== undefined)
108
+ query.set("limit", String(options.limit));
109
+ const result = await this.request(`/api/projects/${encode(projectId)}/room/messages${query.toString() ? `?${query}` : ""}`);
110
+ if (!Array.isArray(result))
111
+ throw new ProjectRoomClientError("Invalid messages response", 500, "INVALID_RESPONSE", false);
112
+ return result.map(hydrateMessage);
113
+ },
114
+ send: async (projectId, input) => { const result = await this.request(`/api/projects/${encode(projectId)}/room/messages`, { method: "POST", body: { text: input.text, mentions: input.mentions, ...(input.replyToMessageId === undefined ? {} : { replyToMessageId: input.replyToMessageId }) }, headers: { "Idempotency-Key": input.idempotencyKey.trim() } }); if (!Array.isArray(result.dispatch) || typeof result.replayed !== "boolean")
115
+ throw new ProjectRoomClientError("Invalid send response", 500, "INVALID_RESPONSE", false); return { message: hydrateMessage(result.message), dispatch: result.dispatch.map(hydrateDispatch), replayed: result.replayed }; },
116
+ retry: async (projectId, messageId) => { const result = await this.request(`/api/projects/${encode(projectId)}/room/messages/${encode(messageId)}/retry`, { method: "POST", body: {} }); if (!Array.isArray(result))
117
+ throw new ProjectRoomClientError("Invalid retry response", 500, "INVALID_RESPONSE", false); return result.map(hydrateDispatch); },
118
+ };
119
+ this.members = {
120
+ list: async (projectId) => this.records(`/api/projects/${encode(projectId)}/members`, hydrateMember),
121
+ add: async (projectId, input) => hydrateMember(await this.request(`/api/projects/${encode(projectId)}/members`, { method: "POST", body: input })),
122
+ update: async (projectId, membershipId, input) => hydrateMember(await this.request(`/api/projects/${encode(projectId)}/members/${encode(membershipId)}`, { method: "PATCH", body: { role: input.role, expectedUpdatedAt: iso(input.expectedUpdatedAt) } })),
123
+ remove: async (projectId, membershipId, input) => this.request(`/api/projects/${encode(projectId)}/members/${encode(membershipId)}?expectedUpdatedAt=${encode(iso(input.expectedUpdatedAt))}`, { method: "DELETE" }),
124
+ };
125
+ this.bots = {
126
+ list: async (projectId) => this.records(`/api/projects/${encode(projectId)}/bots`, hydrateBot),
127
+ add: async (projectId, input) => hydrateBot(await this.request(`/api/projects/${encode(projectId)}/bots`, { method: "POST", body: input })),
128
+ update: async (projectId, membershipId, input) => hydrateBot(await this.request(`/api/projects/${encode(projectId)}/bots/${encode(membershipId)}`, { method: "PATCH", body: { ...input, expectedUpdatedAt: iso(input.expectedUpdatedAt) } })),
129
+ pause: async (projectId, membershipId, input) => hydrateBot(await this.request(`/api/projects/${encode(projectId)}/bots/${encode(membershipId)}/pause`, { method: "POST", body: { expectedUpdatedAt: iso(input.expectedUpdatedAt) } })),
130
+ resume: async (projectId, membershipId, input) => hydrateBot(await this.request(`/api/projects/${encode(projectId)}/bots/${encode(membershipId)}/resume`, { method: "POST", body: { expectedUpdatedAt: iso(input.expectedUpdatedAt) } })),
131
+ remove: async (projectId, membershipId, input) => this.request(`/api/projects/${encode(projectId)}/bots/${encode(membershipId)}?expectedUpdatedAt=${encode(iso(input.expectedUpdatedAt))}`, { method: "DELETE" }),
132
+ };
133
+ this.events = { connect: (projectId, options) => this.connect(projectId, options) };
134
+ }
135
+ async getRoom(projectId) { return hydrateRoom(await this.request(`/api/projects/${encode(projectId)}/room`)); }
136
+ async getRealtimeMode(projectId) { return this.request(`/api/projects/${encode(projectId)}/room/realtime-mode`); }
137
+ async records(path, hydrate) {
138
+ const result = await this.request(path);
139
+ if (!Array.isArray(result))
140
+ throw new ProjectRoomClientError("Invalid records response", 500, "INVALID_RESPONSE", false);
141
+ return result.map(hydrate);
142
+ }
143
+ async request(path, options = {}) {
144
+ const headers = { ...this.getHeaders(), ...(options.headers ?? {}) };
145
+ const body = options.body === undefined ? undefined : JSON.parse(JSON.stringify(options.body));
146
+ const response = await fetch(`${this.baseURL}${path}`, { method: options.method ?? "GET", headers, ...(body === undefined ? {} : { body: JSON.stringify(body) }) });
147
+ const payload = await response.json().catch(() => undefined);
148
+ if (!response.ok || !payload?.success) {
149
+ const error = payload?.error;
150
+ throw new ProjectRoomClientError(typeof error?.message === "string" ? error.message : "Project Room request failed", response.status, typeof error?.code === "string" ? error.code : response.ok ? "INVALID_RESPONSE" : "HTTP_ERROR", error?.retryable === true, error?.details);
151
+ }
152
+ if (!Object.prototype.hasOwnProperty.call(payload, "data"))
153
+ throw new ProjectRoomClientError("Missing response data", 500, "INVALID_RESPONSE", false);
154
+ return payload.data;
155
+ }
156
+ connect(projectId, options) {
157
+ const headers = { ...this.getHeaders(), Accept: "text/event-stream", ...(options.lastEventId ? { "Last-Event-ID": options.lastEventId } : {}) };
158
+ let resolveOpen;
159
+ let rejectOpen;
160
+ const opened = new Promise((resolve, reject) => { resolveOpen = resolve; rejectOpen = reject; });
161
+ const responsePromise = fetch(`${this.baseURL}/api/projects/${encode(projectId)}/room/events`, { headers, signal: options.signal }).then(async (response) => {
162
+ if (!response.ok) {
163
+ const payload = await response.json().catch(() => undefined);
164
+ const error = payload?.error;
165
+ throw new ProjectRoomClientError(typeof error?.message === "string" ? error.message : "Project Room stream failed", response.status, typeof error?.code === "string" ? error.code : "HTTP_ERROR", error?.retryable === true, error?.details);
166
+ }
167
+ if (response.headers?.get && response.headers.get("content-type")?.split(";")[0].trim() !== "text/event-stream")
168
+ throw new ProjectRoomClientError("Project Room stream has invalid content type", response.status, "INVALID_RESPONSE", false);
169
+ if (!response.body)
170
+ throw new ProjectRoomClientError("Project Room stream has no body", 500, "INVALID_RESPONSE", false);
171
+ resolveOpen({ status: 200, ...(options.lastEventId === undefined ? {} : { lastEventId: options.lastEventId }) });
172
+ return response;
173
+ }).catch((error) => { rejectOpen(error); throw error; });
174
+ const stream = (async function* () {
175
+ const response = await responsePromise;
176
+ const body = response.body;
177
+ if (!body)
178
+ throw new ProjectRoomClientError("Project Room stream has no body", 500, "INVALID_RESPONSE", false);
179
+ for await (const raw of parseSseBody(body, { strictJsonObject: true })) {
180
+ try {
181
+ const event = raw.event;
182
+ const payload = isRecord(raw.data) ? raw.data : undefined;
183
+ let value = payload;
184
+ if (event === "ready" || event === "resync" || event === "access.revoked") {
185
+ if (!payload || Object.prototype.hasOwnProperty.call(payload, "type"))
186
+ throw new ProjectRoomClientError("Invalid SSE control", 200, "INVALID_EVENT", false);
187
+ value = { type: event, data: payload };
188
+ }
189
+ else {
190
+ if (typeof payload?.type !== "string" || payload.type !== event || typeof payload.id !== "string" || raw.id !== payload.id)
191
+ throw new ProjectRoomClientError("Invalid SSE business event", 200, "INVALID_EVENT", false);
192
+ value = payload;
193
+ }
194
+ yield { event: hydrateEvent(value), ...(raw.id === undefined ? {} : { id: raw.id }), ...(raw.retry === undefined ? {} : { retry: raw.retry }) };
195
+ }
196
+ catch (error) {
197
+ if (error instanceof ProjectRoomClientError && error.code === "INVALID_EVENT")
198
+ throw new ProjectRoomClientError(error.message, 400, "INVALID_EVENT", false, error.details);
199
+ if (error instanceof SseParseError)
200
+ throw new ProjectRoomClientError(error.message, 400, "INVALID_EVENT", false);
201
+ if (error instanceof ProjectRoomClientError)
202
+ throw new ProjectRoomClientError(error.message, 400, "INVALID_EVENT", false, error.details);
203
+ throw new ProjectRoomClientError("Invalid SSE event", 400, "INVALID_EVENT", false);
204
+ }
205
+ }
206
+ })();
207
+ return { opened, [Symbol.asyncIterator]: () => stream };
208
+ }
209
+ }
210
+ function hydrateEvent(value) {
211
+ const row = record(value);
212
+ if (row.type === "ready") {
213
+ exactKeys(row, ["type", "data"]);
214
+ const data = record(row.data);
215
+ exactKeys(data, ["epoch", "headEventId"]);
216
+ if (typeof data.epoch !== "string" || data.headEventId !== null && typeof data.headEventId !== "string")
217
+ throw new ProjectRoomClientError("Invalid SSE control", 200, "INVALID_EVENT", false);
218
+ return { type: "ready", data: { epoch: data.epoch, headEventId: data.headEventId } };
219
+ }
220
+ if (row.type === "resync" || row.type === "access.revoked") {
221
+ exactKeys(row, ["type", "data"]);
222
+ const data = record(row.data);
223
+ exactKeys(data, ["reason"]);
224
+ const reasons = row.type === "resync" ? ["SERVER_RESTART", "CURSOR_EXPIRED", "SLOW_CONSUMER"] : ["PROJECT_ACCESS_REVOKED", "TOKEN_EXPIRED"];
225
+ return { type: row.type, data: { reason: oneOf(data.reason, reasons, "reason") } };
226
+ }
227
+ const data = record(row.data);
228
+ if (row.type === "message.created")
229
+ return { ...row, occurredAt: date(row.occurredAt, "occurredAt"), data: { message: hydrateMessage(data.message) } };
230
+ if (row.type === "roster.changed")
231
+ return { ...row, occurredAt: date(row.occurredAt, "occurredAt"), data: { change: data.change, membership: hydratePublicBot(data.membership) } };
232
+ if (row.type === "membership.changed")
233
+ return { ...row, occurredAt: date(row.occurredAt, "occurredAt"), data: { change: data.change, membership: hydratePublicMember(data.membership) } };
234
+ if (row.type === "task.changed")
235
+ return { ...row, occurredAt: date(row.occurredAt, "occurredAt"), data: { taskId: requiredString(data, "taskId"), status: data.status, ownerMembershipId: requiredString(data, "ownerMembershipId"), updatedAt: date(data.updatedAt, "updatedAt") } };
236
+ throw new ProjectRoomClientError("Invalid SSE event", 200, "INVALID_EVENT", false);
237
+ }
238
+ function hydratePublicMember(value) { const row = record(value); return { id: requiredString(row, "id"), userId: requiredString(row, "userId"), role: row.role, status: row.status, joinedAt: date(row.joinedAt, "joinedAt"), updatedAt: date(row.updatedAt, "updatedAt") }; }
239
+ function hydratePublicBot(value) { const row = record(value); return { id: requiredString(row, "id"), role: row.role, title: requiredString(row, "title"), ...(row.responsibility === undefined ? {} : { responsibility: row.responsibility }), mentionName: requiredString(row, "mentionName"), status: row.status, joinedAt: date(row.joinedAt, "joinedAt"), updatedAt: date(row.updatedAt, "updatedAt") }; }
240
+ //# sourceMappingURL=project-rooms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-rooms.js","sourceRoot":"","sources":["../src/project-rooms.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface SseParserOptions {
2
+ maxLineBytes?: number;
3
+ maxEventBytes?: number;
4
+ maxDataLines?: number;
5
+ strictJsonObject?: boolean;
6
+ }
7
+ export interface ParsedSseFrame {
8
+ event: string;
9
+ data: unknown;
10
+ id?: string;
11
+ retry?: number;
12
+ }
13
+ export declare class SseParseError extends Error {
14
+ readonly code = "INVALID_EVENT";
15
+ constructor(message: string);
16
+ }
17
+ export declare function parseSseBody(body: ReadableStream<Uint8Array>, options?: SseParserOptions): AsyncIterableIterator<ParsedSseFrame>;
18
+ //# sourceMappingURL=sse-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse-parser.d.ts","sourceRoot":"","sources":["../src/sse-parser.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAAG,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAAE;AACvI,MAAM,WAAW,cAAc;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CAAE;AAE9F,qBAAa,aAAc,SAAQ,KAAK;IAAG,QAAQ,CAAC,IAAI,mBAAmB;gBAAa,OAAO,EAAE,MAAM;CAAoD;AAE3J,wBAAuB,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,EAAE,OAAO,GAAE,gBAAqB,GAAG,qBAAqB,CAAC,cAAc,CAAC,CA4B3I"}
@@ -0,0 +1,119 @@
1
+ export class SseParseError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.code = "INVALID_EVENT";
5
+ this.name = "SseParseError";
6
+ }
7
+ }
8
+ export async function* parseSseBody(body, options = {}) {
9
+ const maxLine = options.maxLineBytes ?? 64 * 1024;
10
+ const maxEvent = options.maxEventBytes ?? 1024 * 1024;
11
+ const maxDataLines = options.maxDataLines ?? 1024;
12
+ const reader = body.getReader();
13
+ const decoder = new TextDecoder();
14
+ let buffer = "";
15
+ let event = "";
16
+ let id;
17
+ let retry;
18
+ let data = [];
19
+ let bytes = 0;
20
+ const dispatch = () => {
21
+ if (data.length === 0) {
22
+ event = "";
23
+ id = undefined;
24
+ retry = undefined;
25
+ bytes = 0;
26
+ return undefined;
27
+ }
28
+ let parsed;
29
+ try {
30
+ parsed = JSON.parse(data.join("\n"));
31
+ }
32
+ catch {
33
+ throw new SseParseError("Invalid SSE JSON");
34
+ }
35
+ if (options.strictJsonObject && (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)))
36
+ throw new SseParseError("SSE data must be an object");
37
+ const result = { event, data: parsed, ...(id === undefined ? {} : { id }), ...(retry === undefined ? {} : { retry }) };
38
+ event = "";
39
+ id = undefined;
40
+ retry = undefined;
41
+ data = [];
42
+ bytes = 0;
43
+ return result;
44
+ };
45
+ const processLine = (raw) => {
46
+ const line = raw.endsWith("\r") ? raw.slice(0, -1) : raw;
47
+ if (new TextEncoder().encode(line).byteLength > maxLine)
48
+ throw new SseParseError("SSE line is too large");
49
+ if (line === "")
50
+ return dispatch();
51
+ if (line.startsWith(":"))
52
+ return undefined;
53
+ const separator = line.indexOf(":");
54
+ const field = separator < 0 ? line : line.slice(0, separator);
55
+ let value = separator < 0 ? "" : line.slice(separator + 1);
56
+ if (value.startsWith(" "))
57
+ value = value.slice(1);
58
+ if (field === "event")
59
+ event = value;
60
+ else if (field === "data") {
61
+ if (data.length >= maxDataLines)
62
+ throw new SseParseError("Too many SSE data lines");
63
+ data.push(value);
64
+ bytes += new TextEncoder().encode(value).byteLength + (data.length === 1 ? 0 : 1);
65
+ if (bytes > maxEvent)
66
+ throw new SseParseError("SSE event is too large");
67
+ }
68
+ else if (field === "id")
69
+ id = value;
70
+ else if (field === "retry") {
71
+ const parsed = Number(value);
72
+ if (!Number.isInteger(parsed) || parsed < 0 || !Number.isFinite(parsed))
73
+ throw new SseParseError("Invalid SSE retry");
74
+ retry = parsed;
75
+ }
76
+ return undefined;
77
+ };
78
+ try {
79
+ while (true) {
80
+ const chunk = await reader.read();
81
+ if (chunk.done) {
82
+ buffer += decoder.decode();
83
+ if (new TextEncoder().encode(buffer).byteLength > maxLine)
84
+ throw new SseParseError("SSE line is too large");
85
+ break;
86
+ }
87
+ buffer += decoder.decode(chunk.value, { stream: true });
88
+ if (new TextEncoder().encode(buffer.slice(0, Math.max(0, findLineBreak(buffer) < 0 ? buffer.length : findLineBreak(buffer)))).byteLength > maxLine)
89
+ throw new SseParseError("SSE line is too large");
90
+ let index = findLineBreak(buffer);
91
+ while (index >= 0) {
92
+ if (buffer[index] === "\r" && index === buffer.length - 1)
93
+ break;
94
+ const frame = processLine(buffer.slice(0, index));
95
+ buffer = buffer.slice(index + lineBreakLength(buffer, index));
96
+ if (frame)
97
+ yield frame;
98
+ index = findLineBreak(buffer);
99
+ }
100
+ }
101
+ if (buffer) {
102
+ const frame = processLine(buffer);
103
+ if (frame)
104
+ yield frame;
105
+ }
106
+ const frame = processLine("");
107
+ if (frame)
108
+ yield frame;
109
+ }
110
+ finally {
111
+ await reader.cancel().catch(() => undefined);
112
+ reader.releaseLock();
113
+ }
114
+ }
115
+ function findLineBreak(value) { const lf = value.indexOf("\n"); const cr = value.indexOf("\r"); if (lf < 0)
116
+ return cr; if (cr < 0)
117
+ return lf; return Math.min(lf, cr); }
118
+ function lineBreakLength(value, index) { return value[index] === "\r" && value[index + 1] === "\n" ? 2 : 1; }
119
+ //# sourceMappingURL=sse-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse-parser.js","sourceRoot":"","sources":["../src/sse-parser.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axiom-lattice/client-sdk",
3
- "version": "4.2.1",
3
+ "version": "4.3.0",
4
4
  "description": "TypeScript client SDK for interacting with the Agent Service API",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "dependencies": {
33
33
  "best-effort-json-parser": "^1.2.1",
34
- "@axiom-lattice/protocols": "4.1.1"
34
+ "@axiom-lattice/protocols": "4.1.2"
35
35
  },
36
36
  "scripts": {
37
37
  "build": "tsc &&tsup src/index.ts --format cjs,esm --dts --sourcemap",