@axiom-lattice/client-sdk 4.2.1 → 4.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/project-rooms.test.d.ts +2 -0
- package/dist/__tests__/project-rooms.test.d.ts.map +1 -0
- package/dist/__tests__/project-rooms.test.js +144 -0
- package/dist/__tests__/project-rooms.test.js.map +1 -0
- package/dist/__tests__/sse-parser.test.d.ts +2 -0
- package/dist/__tests__/sse-parser.test.d.ts.map +1 -0
- package/dist/__tests__/sse-parser.test.js +17 -0
- package/dist/__tests__/sse-parser.test.js.map +1 -0
- package/dist/client.d.ts +2 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +17 -134
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +153 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +401 -131
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +399 -131
- package/dist/index.mjs.map +1 -1
- package/dist/project-rooms.d.ts +152 -0
- package/dist/project-rooms.d.ts.map +1 -0
- package/dist/project-rooms.js +240 -0
- package/dist/project-rooms.js.map +1 -0
- package/dist/sse-parser.d.ts +15 -0
- package/dist/sse-parser.d.ts.map +1 -0
- package/dist/sse-parser.js +101 -0
- package/dist/sse-parser.js.map +1 -0
- package/package.json +2 -2
|
@@ -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,15 @@
|
|
|
1
|
+
export interface SseParserOptions {
|
|
2
|
+
strictJsonObject?: boolean;
|
|
3
|
+
}
|
|
4
|
+
export interface ParsedSseFrame {
|
|
5
|
+
event: string;
|
|
6
|
+
data: unknown;
|
|
7
|
+
id?: string;
|
|
8
|
+
retry?: number;
|
|
9
|
+
}
|
|
10
|
+
export declare class SseParseError extends Error {
|
|
11
|
+
readonly code = "INVALID_EVENT";
|
|
12
|
+
constructor(message: string);
|
|
13
|
+
}
|
|
14
|
+
export declare function parseSseBody(body: ReadableStream<Uint8Array>, options?: SseParserOptions): AsyncIterableIterator<ParsedSseFrame>;
|
|
15
|
+
//# 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,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAAE;AACjE,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,CAwB3I"}
|
|
@@ -0,0 +1,101 @@
|
|
|
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 reader = body.getReader();
|
|
10
|
+
const decoder = new TextDecoder();
|
|
11
|
+
let buffer = "";
|
|
12
|
+
let event = "";
|
|
13
|
+
let id;
|
|
14
|
+
let retry;
|
|
15
|
+
let data = [];
|
|
16
|
+
const dispatch = () => {
|
|
17
|
+
if (data.length === 0) {
|
|
18
|
+
event = "";
|
|
19
|
+
id = undefined;
|
|
20
|
+
retry = undefined;
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
let parsed;
|
|
24
|
+
try {
|
|
25
|
+
parsed = JSON.parse(data.join("\n"));
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
throw new SseParseError("Invalid SSE JSON");
|
|
29
|
+
}
|
|
30
|
+
if (options.strictJsonObject && (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)))
|
|
31
|
+
throw new SseParseError("SSE data must be an object");
|
|
32
|
+
const result = { event, data: parsed, ...(id === undefined ? {} : { id }), ...(retry === undefined ? {} : { retry }) };
|
|
33
|
+
event = "";
|
|
34
|
+
id = undefined;
|
|
35
|
+
retry = undefined;
|
|
36
|
+
data = [];
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
const processLine = (raw) => {
|
|
40
|
+
const line = raw.endsWith("\r") ? raw.slice(0, -1) : raw;
|
|
41
|
+
if (line === "")
|
|
42
|
+
return dispatch();
|
|
43
|
+
if (line.startsWith(":"))
|
|
44
|
+
return undefined;
|
|
45
|
+
const separator = line.indexOf(":");
|
|
46
|
+
const field = separator < 0 ? line : line.slice(0, separator);
|
|
47
|
+
let value = separator < 0 ? "" : line.slice(separator + 1);
|
|
48
|
+
if (value.startsWith(" "))
|
|
49
|
+
value = value.slice(1);
|
|
50
|
+
if (field === "event")
|
|
51
|
+
event = value;
|
|
52
|
+
else if (field === "data")
|
|
53
|
+
data.push(value);
|
|
54
|
+
else if (field === "id")
|
|
55
|
+
id = value;
|
|
56
|
+
else if (field === "retry") {
|
|
57
|
+
const parsed = Number(value);
|
|
58
|
+
if (!Number.isInteger(parsed) || parsed < 0 || !Number.isFinite(parsed))
|
|
59
|
+
throw new SseParseError("Invalid SSE retry");
|
|
60
|
+
retry = parsed;
|
|
61
|
+
}
|
|
62
|
+
return undefined;
|
|
63
|
+
};
|
|
64
|
+
try {
|
|
65
|
+
while (true) {
|
|
66
|
+
const chunk = await reader.read();
|
|
67
|
+
if (chunk.done) {
|
|
68
|
+
buffer += decoder.decode();
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
buffer += decoder.decode(chunk.value, { stream: true });
|
|
72
|
+
let index = findLineBreak(buffer);
|
|
73
|
+
while (index >= 0) {
|
|
74
|
+
if (buffer[index] === "\r" && index === buffer.length - 1)
|
|
75
|
+
break;
|
|
76
|
+
const frame = processLine(buffer.slice(0, index));
|
|
77
|
+
buffer = buffer.slice(index + lineBreakLength(buffer, index));
|
|
78
|
+
if (frame)
|
|
79
|
+
yield frame;
|
|
80
|
+
index = findLineBreak(buffer);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (buffer) {
|
|
84
|
+
const frame = processLine(buffer);
|
|
85
|
+
if (frame)
|
|
86
|
+
yield frame;
|
|
87
|
+
}
|
|
88
|
+
const frame = processLine("");
|
|
89
|
+
if (frame)
|
|
90
|
+
yield frame;
|
|
91
|
+
}
|
|
92
|
+
finally {
|
|
93
|
+
await reader.cancel().catch(() => undefined);
|
|
94
|
+
reader.releaseLock();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function findLineBreak(value) { const lf = value.indexOf("\n"); const cr = value.indexOf("\r"); if (lf < 0)
|
|
98
|
+
return cr; if (cr < 0)
|
|
99
|
+
return lf; return Math.min(lf, cr); }
|
|
100
|
+
function lineBreakLength(value, index) { return value[index] === "\r" && value[index + 1] === "\n" ? 2 : 1; }
|
|
101
|
+
//# 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.
|
|
3
|
+
"version": "4.3.1",
|
|
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.
|
|
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",
|