@zdrops/ai-assistants-sdk 1.1.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.
- package/CHANGELOG.md +61 -0
- package/dist/index.cjs +401 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +551 -0
- package/dist/index.d.ts +551 -0
- package/dist/index.js +373 -0
- package/dist/index.js.map +1 -0
- package/package.json +46 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
// src/errors.ts
|
|
2
|
+
var ApiError = class extends Error {
|
|
3
|
+
constructor(statusCode, code, message, requestId) {
|
|
4
|
+
super(Array.isArray(message) ? message.join(", ") : message);
|
|
5
|
+
this.statusCode = statusCode;
|
|
6
|
+
this.code = code;
|
|
7
|
+
this.requestId = requestId;
|
|
8
|
+
this.name = "ApiError";
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
// src/http.ts
|
|
13
|
+
var HttpClient = class {
|
|
14
|
+
constructor(config) {
|
|
15
|
+
this.config = config;
|
|
16
|
+
this.refreshPromise = null;
|
|
17
|
+
this.baseUrl = new URL(config.baseUrl);
|
|
18
|
+
this.fetchFn = config.fetch ?? globalThis.fetch;
|
|
19
|
+
}
|
|
20
|
+
buildAndFetch(method, path, options = {}) {
|
|
21
|
+
const { body, query, authenticated = true } = options;
|
|
22
|
+
const url = new URL(path, this.baseUrl);
|
|
23
|
+
if (query) {
|
|
24
|
+
for (const [key, value] of Object.entries(query)) {
|
|
25
|
+
if (value !== void 0 && value !== null) {
|
|
26
|
+
url.searchParams.set(key, String(value));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const headers = {
|
|
31
|
+
"X-Tenant-Key": this.config.tenantKey
|
|
32
|
+
};
|
|
33
|
+
if (body !== void 0) {
|
|
34
|
+
headers["Content-Type"] = "application/json";
|
|
35
|
+
}
|
|
36
|
+
if (authenticated) {
|
|
37
|
+
const token = this.config.getAccessToken();
|
|
38
|
+
if (token) {
|
|
39
|
+
headers["Authorization"] = `Bearer ${token}`;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return this.fetchFn(url.toString(), {
|
|
43
|
+
method,
|
|
44
|
+
headers,
|
|
45
|
+
body: body !== void 0 ? JSON.stringify(body) : void 0
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
async throwIfError(response) {
|
|
49
|
+
if (!response.ok) {
|
|
50
|
+
const errorBody = await response.json().catch(() => null);
|
|
51
|
+
throw new ApiError(
|
|
52
|
+
response.status,
|
|
53
|
+
errorBody?.error?.code ?? "UNKNOWN_ERROR",
|
|
54
|
+
errorBody?.error?.message ?? response.statusText,
|
|
55
|
+
errorBody?.meta?.requestId
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async request(method, path, options = {}) {
|
|
60
|
+
const { isRetry = false, authenticated = true } = options;
|
|
61
|
+
const response = await this.buildAndFetch(method, path, options);
|
|
62
|
+
if (response.status === 401 && !isRetry && authenticated) {
|
|
63
|
+
const refreshed = await this.attemptTokenRefresh();
|
|
64
|
+
if (refreshed) {
|
|
65
|
+
return this.request(method, path, { ...options, isRetry: true });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
await this.throwIfError(response);
|
|
69
|
+
const contentType = response.headers.get("content-type");
|
|
70
|
+
if (!contentType?.includes("application/json")) {
|
|
71
|
+
return void 0;
|
|
72
|
+
}
|
|
73
|
+
const json = await response.json();
|
|
74
|
+
return json && "data" in json && "meta" in json ? json.data : json;
|
|
75
|
+
}
|
|
76
|
+
attemptTokenRefresh() {
|
|
77
|
+
if (this.refreshPromise) return this.refreshPromise;
|
|
78
|
+
this.refreshPromise = this.doRefresh().finally(() => {
|
|
79
|
+
this.refreshPromise = null;
|
|
80
|
+
});
|
|
81
|
+
return this.refreshPromise;
|
|
82
|
+
}
|
|
83
|
+
async doRefresh() {
|
|
84
|
+
const refreshToken = this.config.getRefreshToken();
|
|
85
|
+
if (!refreshToken) return false;
|
|
86
|
+
try {
|
|
87
|
+
const tokens = await this.request(
|
|
88
|
+
"POST",
|
|
89
|
+
"/api/v1/auth/refresh",
|
|
90
|
+
{
|
|
91
|
+
body: { refreshToken },
|
|
92
|
+
authenticated: false,
|
|
93
|
+
isRetry: true
|
|
94
|
+
}
|
|
95
|
+
);
|
|
96
|
+
await this.config.onTokenRefreshed(tokens);
|
|
97
|
+
return true;
|
|
98
|
+
} catch {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
get(path, options) {
|
|
103
|
+
return this.request("GET", path, options);
|
|
104
|
+
}
|
|
105
|
+
post(path, body, options) {
|
|
106
|
+
return this.request("POST", path, { ...options, body });
|
|
107
|
+
}
|
|
108
|
+
patch(path, body, options) {
|
|
109
|
+
return this.request("PATCH", path, { ...options, body });
|
|
110
|
+
}
|
|
111
|
+
put(path, body, options) {
|
|
112
|
+
return this.request("PUT", path, { ...options, body });
|
|
113
|
+
}
|
|
114
|
+
delete(path, options) {
|
|
115
|
+
return this.request("DELETE", path, options);
|
|
116
|
+
}
|
|
117
|
+
async rawRequest(method, path, options = {}) {
|
|
118
|
+
const { authenticated = true } = options;
|
|
119
|
+
let response = await this.buildAndFetch(method, path, options);
|
|
120
|
+
if (response.status === 401 && authenticated) {
|
|
121
|
+
const refreshed = await this.attemptTokenRefresh();
|
|
122
|
+
if (refreshed) {
|
|
123
|
+
response = await this.buildAndFetch(method, path, options);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
await this.throwIfError(response);
|
|
127
|
+
return response;
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
// src/resources/auth.ts
|
|
132
|
+
var AuthResource = class {
|
|
133
|
+
constructor(http) {
|
|
134
|
+
this.http = http;
|
|
135
|
+
}
|
|
136
|
+
register(data) {
|
|
137
|
+
return this.http.post("/api/v1/auth/register", data, { authenticated: false });
|
|
138
|
+
}
|
|
139
|
+
login(data) {
|
|
140
|
+
return this.http.post("/api/v1/auth/login", data, { authenticated: false });
|
|
141
|
+
}
|
|
142
|
+
startAuth(data) {
|
|
143
|
+
return this.http.post("/api/v1/auth/start", data, { authenticated: false });
|
|
144
|
+
}
|
|
145
|
+
verifyOtp(data) {
|
|
146
|
+
return this.http.post("/api/v1/auth/verify-otp", data, { authenticated: false });
|
|
147
|
+
}
|
|
148
|
+
refresh(data) {
|
|
149
|
+
return this.http.post("/api/v1/auth/refresh", data, { authenticated: false });
|
|
150
|
+
}
|
|
151
|
+
logout() {
|
|
152
|
+
return this.http.post("/api/v1/auth/logout");
|
|
153
|
+
}
|
|
154
|
+
getProfile() {
|
|
155
|
+
return this.http.get("/api/v1/auth/me");
|
|
156
|
+
}
|
|
157
|
+
updateProfile(data) {
|
|
158
|
+
return this.http.patch("/api/v1/auth/me", data);
|
|
159
|
+
}
|
|
160
|
+
deleteAccount() {
|
|
161
|
+
return this.http.delete("/api/v1/auth/me");
|
|
162
|
+
}
|
|
163
|
+
requestEmailChange(data) {
|
|
164
|
+
return this.http.post("/api/v1/auth/request-email-change", data);
|
|
165
|
+
}
|
|
166
|
+
confirmEmailChange(data) {
|
|
167
|
+
return this.http.post("/api/v1/auth/confirm-email-change", data);
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
// src/resources/plans.ts
|
|
172
|
+
var PlansResource = class {
|
|
173
|
+
constructor(http) {
|
|
174
|
+
this.http = http;
|
|
175
|
+
}
|
|
176
|
+
list(query) {
|
|
177
|
+
return this.http.get("/api/v1/public/plans", { query, authenticated: false });
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
// src/resources/credits.ts
|
|
182
|
+
var CreditsResource = class {
|
|
183
|
+
constructor(http) {
|
|
184
|
+
this.http = http;
|
|
185
|
+
}
|
|
186
|
+
getBalance() {
|
|
187
|
+
return this.http.get("/api/v1/credits/balance");
|
|
188
|
+
}
|
|
189
|
+
getTransactions(query) {
|
|
190
|
+
return this.http.get("/api/v1/credits/transactions", { query });
|
|
191
|
+
}
|
|
192
|
+
purchase(data) {
|
|
193
|
+
return this.http.post("/api/v1/credits/purchase", data);
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
// src/resources/billing.ts
|
|
198
|
+
var BillingResource = class {
|
|
199
|
+
constructor(http) {
|
|
200
|
+
this.http = http;
|
|
201
|
+
}
|
|
202
|
+
get() {
|
|
203
|
+
return this.http.get("/api/v1/billing");
|
|
204
|
+
}
|
|
205
|
+
upsert(data) {
|
|
206
|
+
return this.http.put("/api/v1/billing", data);
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
// src/resources/preferences.ts
|
|
211
|
+
var PreferencesResource = class {
|
|
212
|
+
constructor(http) {
|
|
213
|
+
this.http = http;
|
|
214
|
+
}
|
|
215
|
+
getAll() {
|
|
216
|
+
return this.http.get("/api/v1/preferences");
|
|
217
|
+
}
|
|
218
|
+
getByAppKey(appKey) {
|
|
219
|
+
return this.http.get(`/api/v1/preferences/${appKey}`);
|
|
220
|
+
}
|
|
221
|
+
upsert(appKey, data) {
|
|
222
|
+
return this.http.put(`/api/v1/preferences/${appKey}`, data);
|
|
223
|
+
}
|
|
224
|
+
remove(appKey) {
|
|
225
|
+
return this.http.delete(`/api/v1/preferences/${appKey}`);
|
|
226
|
+
}
|
|
227
|
+
merge(appKey, data) {
|
|
228
|
+
return this.http.patch(`/api/v1/preferences/${appKey}`, data);
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
// src/resources/conversations.ts
|
|
233
|
+
var ConversationsResource = class {
|
|
234
|
+
constructor(http) {
|
|
235
|
+
this.http = http;
|
|
236
|
+
}
|
|
237
|
+
create(data) {
|
|
238
|
+
return this.http.post("/api/v1/conversations", data);
|
|
239
|
+
}
|
|
240
|
+
list(query) {
|
|
241
|
+
return this.http.get("/api/v1/conversations", { query });
|
|
242
|
+
}
|
|
243
|
+
get(id) {
|
|
244
|
+
return this.http.get(`/api/v1/conversations/${id}`);
|
|
245
|
+
}
|
|
246
|
+
archive(id) {
|
|
247
|
+
return this.http.patch(`/api/v1/conversations/${id}/archive`);
|
|
248
|
+
}
|
|
249
|
+
listMessages(conversationId, query) {
|
|
250
|
+
return this.http.get(`/api/v1/conversations/${conversationId}/messages`, { query });
|
|
251
|
+
}
|
|
252
|
+
addMessage(conversationId, data) {
|
|
253
|
+
return this.http.post(`/api/v1/conversations/${conversationId}/messages`, data);
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
|
|
257
|
+
// src/resources/generation.ts
|
|
258
|
+
var GenerationResource = class {
|
|
259
|
+
constructor(http) {
|
|
260
|
+
this.http = http;
|
|
261
|
+
}
|
|
262
|
+
async generate(conversationId, data, options) {
|
|
263
|
+
const response = await this.http.rawRequest("POST", `/api/v1/conversations/${conversationId}/generate`, {
|
|
264
|
+
body: data
|
|
265
|
+
});
|
|
266
|
+
const reader = response.body?.getReader();
|
|
267
|
+
if (!reader) throw new Error("No response body");
|
|
268
|
+
const decoder = new TextDecoder();
|
|
269
|
+
const parts = [];
|
|
270
|
+
let buffer = "";
|
|
271
|
+
try {
|
|
272
|
+
while (true) {
|
|
273
|
+
if (options?.signal?.aborted) {
|
|
274
|
+
reader.cancel();
|
|
275
|
+
break;
|
|
276
|
+
}
|
|
277
|
+
const { done, value } = await reader.read();
|
|
278
|
+
if (done) break;
|
|
279
|
+
buffer += decoder.decode(value, { stream: true });
|
|
280
|
+
const lines = buffer.split("\n");
|
|
281
|
+
buffer = lines.pop() ?? "";
|
|
282
|
+
for (const line of lines) {
|
|
283
|
+
if (!line.startsWith("data: ")) continue;
|
|
284
|
+
const jsonStr = line.slice(6).trim();
|
|
285
|
+
if (!jsonStr) continue;
|
|
286
|
+
let event;
|
|
287
|
+
try {
|
|
288
|
+
event = JSON.parse(jsonStr);
|
|
289
|
+
} catch {
|
|
290
|
+
continue;
|
|
291
|
+
}
|
|
292
|
+
if (event.type === "text_delta") {
|
|
293
|
+
parts.push(event.text);
|
|
294
|
+
options?.onTextDelta?.(event.text);
|
|
295
|
+
} else if (event.type === "done") {
|
|
296
|
+
options?.onDone?.(event);
|
|
297
|
+
} else if (event.type === "error") {
|
|
298
|
+
options?.onError?.(event.error);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
} finally {
|
|
303
|
+
reader.releaseLock();
|
|
304
|
+
}
|
|
305
|
+
return parts.join("");
|
|
306
|
+
}
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
// src/resources/images.ts
|
|
310
|
+
var ImagesResource = class {
|
|
311
|
+
constructor(http) {
|
|
312
|
+
this.http = http;
|
|
313
|
+
}
|
|
314
|
+
trigger(messageId, data) {
|
|
315
|
+
return this.http.post(`/api/v1/messages/${messageId}/images`, data);
|
|
316
|
+
}
|
|
317
|
+
getAll(messageId) {
|
|
318
|
+
return this.http.get(`/api/v1/messages/${messageId}/images`);
|
|
319
|
+
}
|
|
320
|
+
getBySlot(messageId, slot) {
|
|
321
|
+
return this.http.get(`/api/v1/messages/${messageId}/images/${slot}`);
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
|
|
325
|
+
// src/resources/payments.ts
|
|
326
|
+
var PaymentsResource = class {
|
|
327
|
+
constructor(http) {
|
|
328
|
+
this.http = http;
|
|
329
|
+
}
|
|
330
|
+
checkout(data) {
|
|
331
|
+
return this.http.post("/api/v1/payments/checkout", data);
|
|
332
|
+
}
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
// src/client.ts
|
|
336
|
+
function createClient(options) {
|
|
337
|
+
let accessToken = options.accessToken ?? null;
|
|
338
|
+
let refreshToken = options.refreshToken ?? null;
|
|
339
|
+
const http = new HttpClient({
|
|
340
|
+
baseUrl: options.baseUrl,
|
|
341
|
+
tenantKey: options.tenantKey,
|
|
342
|
+
fetch: options.fetch,
|
|
343
|
+
getAccessToken: () => accessToken,
|
|
344
|
+
getRefreshToken: () => refreshToken,
|
|
345
|
+
onTokenRefreshed: async (tokens) => {
|
|
346
|
+
accessToken = tokens.accessToken;
|
|
347
|
+
refreshToken = tokens.refreshToken;
|
|
348
|
+
await options.onTokenRefreshed?.(tokens);
|
|
349
|
+
}
|
|
350
|
+
});
|
|
351
|
+
return {
|
|
352
|
+
auth: new AuthResource(http),
|
|
353
|
+
plans: new PlansResource(http),
|
|
354
|
+
credits: new CreditsResource(http),
|
|
355
|
+
billing: new BillingResource(http),
|
|
356
|
+
preferences: new PreferencesResource(http),
|
|
357
|
+
conversations: new ConversationsResource(http),
|
|
358
|
+
generation: new GenerationResource(http),
|
|
359
|
+
images: new ImagesResource(http),
|
|
360
|
+
payments: new PaymentsResource(http),
|
|
361
|
+
setAccessToken(token) {
|
|
362
|
+
accessToken = token;
|
|
363
|
+
},
|
|
364
|
+
setRefreshToken(token) {
|
|
365
|
+
refreshToken = token;
|
|
366
|
+
}
|
|
367
|
+
};
|
|
368
|
+
}
|
|
369
|
+
export {
|
|
370
|
+
ApiError,
|
|
371
|
+
createClient
|
|
372
|
+
};
|
|
373
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/resources/auth.ts","../src/resources/plans.ts","../src/resources/credits.ts","../src/resources/billing.ts","../src/resources/preferences.ts","../src/resources/conversations.ts","../src/resources/generation.ts","../src/resources/images.ts","../src/resources/payments.ts","../src/client.ts"],"sourcesContent":["export class ApiError extends Error {\n constructor(\n public readonly statusCode: number,\n public readonly code: string,\n message: string | string[],\n public readonly requestId?: string,\n ) {\n super(Array.isArray(message) ? message.join(\", \") : message);\n this.name = \"ApiError\";\n }\n}\n","import { ApiError } from \"./errors\";\nimport type { TokensResponseDto } from \"./types\";\n\nexport interface HttpClientConfig {\n baseUrl: string;\n tenantKey: string;\n getAccessToken: () => string | null;\n getRefreshToken: () => string | null;\n onTokenRefreshed: (tokens: TokensResponseDto) => void | Promise<void>;\n fetch?: typeof globalThis.fetch;\n}\n\ntype HttpMethod = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\ninterface RequestOptions {\n body?: unknown;\n query?: Record<string, string | number | boolean | undefined | null>;\n authenticated?: boolean;\n}\n\ninterface InternalRequestOptions extends RequestOptions {\n isRetry?: boolean;\n}\n\nexport class HttpClient {\n private refreshPromise: Promise<boolean> | null = null;\n private readonly baseUrl: URL;\n private readonly fetchFn: typeof globalThis.fetch;\n\n constructor(private config: HttpClientConfig) {\n this.baseUrl = new URL(config.baseUrl);\n this.fetchFn = config.fetch ?? globalThis.fetch;\n }\n\n private buildAndFetch(\n method: HttpMethod,\n path: string,\n options: RequestOptions = {},\n ): Promise<Response> {\n const { body, query, authenticated = true } = options;\n\n const url = new URL(path, this.baseUrl);\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n\n const headers: Record<string, string> = {\n \"X-Tenant-Key\": this.config.tenantKey,\n };\n if (body !== undefined) {\n headers[\"Content-Type\"] = \"application/json\";\n }\n if (authenticated) {\n const token = this.config.getAccessToken();\n if (token) {\n headers[\"Authorization\"] = `Bearer ${token}`;\n }\n }\n\n return this.fetchFn(url.toString(), {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n }\n\n private async throwIfError(response: Response): Promise<void> {\n if (!response.ok) {\n const errorBody = await response.json().catch(() => null);\n throw new ApiError(\n response.status,\n errorBody?.error?.code ?? \"UNKNOWN_ERROR\",\n errorBody?.error?.message ?? response.statusText,\n errorBody?.meta?.requestId,\n );\n }\n }\n\n private async request<T>(\n method: HttpMethod,\n path: string,\n options: InternalRequestOptions = {},\n ): Promise<T> {\n const { isRetry = false, authenticated = true } = options;\n\n const response = await this.buildAndFetch(method, path, options);\n\n if (response.status === 401 && !isRetry && authenticated) {\n const refreshed = await this.attemptTokenRefresh();\n if (refreshed) {\n return this.request<T>(method, path, { ...options, isRetry: true });\n }\n }\n\n await this.throwIfError(response);\n\n const contentType = response.headers.get(\"content-type\");\n if (!contentType?.includes(\"application/json\")) {\n return undefined as T;\n }\n\n const json = await response.json();\n return (json && \"data\" in json && \"meta\" in json ? json.data : json) as T;\n }\n\n private attemptTokenRefresh(): Promise<boolean> {\n if (this.refreshPromise) return this.refreshPromise;\n this.refreshPromise = this.doRefresh().finally(() => {\n this.refreshPromise = null;\n });\n return this.refreshPromise;\n }\n\n private async doRefresh(): Promise<boolean> {\n const refreshToken = this.config.getRefreshToken();\n if (!refreshToken) return false;\n\n try {\n const tokens = await this.request<TokensResponseDto>(\n \"POST\",\n \"/api/v1/auth/refresh\",\n {\n body: { refreshToken },\n authenticated: false,\n isRetry: true,\n },\n );\n await this.config.onTokenRefreshed(tokens);\n return true;\n } catch {\n return false;\n }\n }\n\n get<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(\"GET\", path, options);\n }\n\n post<T>(path: string, body?: unknown, options?: Omit<RequestOptions, \"body\">): Promise<T> {\n return this.request<T>(\"POST\", path, { ...options, body });\n }\n\n patch<T>(path: string, body?: unknown, options?: Omit<RequestOptions, \"body\">): Promise<T> {\n return this.request<T>(\"PATCH\", path, { ...options, body });\n }\n\n put<T>(path: string, body?: unknown, options?: Omit<RequestOptions, \"body\">): Promise<T> {\n return this.request<T>(\"PUT\", path, { ...options, body });\n }\n\n delete<T>(path: string, options?: RequestOptions): Promise<T> {\n return this.request<T>(\"DELETE\", path, options);\n }\n\n async rawRequest(method: HttpMethod, path: string, options: RequestOptions = {}): Promise<Response> {\n const { authenticated = true } = options;\n\n let response = await this.buildAndFetch(method, path, options);\n\n if (response.status === 401 && authenticated) {\n const refreshed = await this.attemptTokenRefresh();\n if (refreshed) {\n response = await this.buildAndFetch(method, path, options);\n }\n }\n\n await this.throwIfError(response);\n\n return response;\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n RegisterDto,\n LoginDto,\n VerifyOtpDto,\n RefreshTokenDto,\n UpdateProfileDto,\n RequestEmailChangeDto,\n ConfirmEmailChangeDto,\n MessageResponseDto,\n AuthResponseDto,\n TokensResponseDto,\n UserResponseDto,\n StartAuthResponseDto,\n} from \"../types\";\n\nexport class AuthResource {\n constructor(private http: HttpClient) {}\n\n register(data: RegisterDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/auth/register\", data, { authenticated: false });\n }\n\n login(data: LoginDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/auth/login\", data, { authenticated: false });\n }\n\n startAuth(data: LoginDto): Promise<StartAuthResponseDto> {\n return this.http.post(\"/api/v1/auth/start\", data, { authenticated: false });\n }\n\n verifyOtp(data: VerifyOtpDto): Promise<AuthResponseDto> {\n return this.http.post(\"/api/v1/auth/verify-otp\", data, { authenticated: false });\n }\n\n refresh(data: RefreshTokenDto): Promise<TokensResponseDto> {\n return this.http.post(\"/api/v1/auth/refresh\", data, { authenticated: false });\n }\n\n logout(): Promise<void> {\n return this.http.post(\"/api/v1/auth/logout\");\n }\n\n getProfile(): Promise<UserResponseDto> {\n return this.http.get(\"/api/v1/auth/me\");\n }\n\n updateProfile(data: UpdateProfileDto): Promise<UserResponseDto> {\n return this.http.patch(\"/api/v1/auth/me\", data);\n }\n\n deleteAccount(): Promise<void> {\n return this.http.delete(\"/api/v1/auth/me\");\n }\n\n requestEmailChange(data: RequestEmailChangeDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/auth/request-email-change\", data);\n }\n\n confirmEmailChange(data: ConfirmEmailChangeDto): Promise<MessageResponseDto> {\n return this.http.post(\"/api/v1/auth/confirm-email-change\", data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { PlanResponseDto, PlanType } from \"../types\";\n\nexport class PlansResource {\n constructor(private http: HttpClient) {}\n\n list(query?: { type?: PlanType }): Promise<PlanResponseDto[]> {\n return this.http.get(\"/api/v1/public/plans\", { query, authenticated: false });\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n CreditBalanceResponseDto,\n CreditTransactionResponseDto,\n CreditTransactionType,\n PurchaseCreditsDto,\n PurchaseCreditsResponseDto,\n} from \"../types\";\n\nexport class CreditsResource {\n constructor(private http: HttpClient) {}\n\n getBalance(): Promise<CreditBalanceResponseDto> {\n return this.http.get(\"/api/v1/credits/balance\");\n }\n\n getTransactions(query?: {\n cursor?: string;\n limit?: number;\n type?: CreditTransactionType;\n }): Promise<CreditTransactionResponseDto[]> {\n return this.http.get(\"/api/v1/credits/transactions\", { query });\n }\n\n purchase(data: PurchaseCreditsDto): Promise<PurchaseCreditsResponseDto> {\n return this.http.post(\"/api/v1/credits/purchase\", data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { BillingResponseDto, UpsertBillingDto } from \"../types\";\n\nexport class BillingResource {\n constructor(private http: HttpClient) {}\n\n get(): Promise<BillingResponseDto> {\n return this.http.get(\"/api/v1/billing\");\n }\n\n upsert(data: UpsertBillingDto): Promise<BillingResponseDto> {\n return this.http.put(\"/api/v1/billing\", data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n PreferenceResponseDto,\n UpdatePreferencesDto,\n} from \"../types\";\n\nexport class PreferencesResource {\n constructor(private http: HttpClient) {}\n\n getAll(): Promise<PreferenceResponseDto[]> {\n return this.http.get(\"/api/v1/preferences\");\n }\n\n getByAppKey(appKey: string): Promise<PreferenceResponseDto> {\n return this.http.get(`/api/v1/preferences/${appKey}`);\n }\n\n upsert(appKey: string, data: UpdatePreferencesDto): Promise<PreferenceResponseDto> {\n return this.http.put(`/api/v1/preferences/${appKey}`, data);\n }\n\n remove(appKey: string): Promise<void> {\n return this.http.delete(`/api/v1/preferences/${appKey}`);\n }\n\n merge(appKey: string, data: UpdatePreferencesDto): Promise<PreferenceResponseDto> {\n return this.http.patch(`/api/v1/preferences/${appKey}`, data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n CreateConversationDto,\n ConversationResponseDto,\n ConversationMessageResponseDto,\n AddMessageDto,\n ConversationStatus,\n} from \"../types\";\n\nexport class ConversationsResource {\n constructor(private http: HttpClient) {}\n\n create(data: CreateConversationDto): Promise<ConversationResponseDto> {\n return this.http.post(\"/api/v1/conversations\", data);\n }\n\n list(query?: {\n cursor?: string;\n limit?: number;\n status?: ConversationStatus;\n appKey?: string;\n }): Promise<ConversationResponseDto[]> {\n return this.http.get(\"/api/v1/conversations\", { query });\n }\n\n get(id: string): Promise<ConversationResponseDto> {\n return this.http.get(`/api/v1/conversations/${id}`);\n }\n\n archive(id: string): Promise<ConversationResponseDto> {\n return this.http.patch(`/api/v1/conversations/${id}/archive`);\n }\n\n listMessages(conversationId: string, query?: {\n cursor?: string;\n limit?: number;\n }): Promise<ConversationMessageResponseDto[]> {\n return this.http.get(`/api/v1/conversations/${conversationId}/messages`, { query });\n }\n\n addMessage(conversationId: string, data: AddMessageDto): Promise<ConversationMessageResponseDto> {\n return this.http.post(`/api/v1/conversations/${conversationId}/messages`, data);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { GenerateDto } from \"../types\";\n\nexport interface GenerationDoneData {\n messageId: string;\n usage?: { inputTokens: number; outputTokens: number };\n structuredOutput?: Record<string, unknown>;\n}\n\nexport interface SseStreamOptions {\n onTextDelta?: (text: string) => void;\n onDone?: (data: GenerationDoneData) => void;\n onError?: (error: string) => void;\n signal?: AbortSignal;\n}\n\ntype SseEvent =\n | { type: \"text_delta\"; text: string }\n | { type: \"done\"; messageId: string; usage?: { inputTokens: number; outputTokens: number }; structuredOutput?: Record<string, unknown> }\n | { type: \"error\"; error: string };\n\nexport class GenerationResource {\n constructor(private http: HttpClient) {}\n\n async generate(conversationId: string, data: GenerateDto, options?: SseStreamOptions): Promise<string> {\n const response = await this.http.rawRequest(\"POST\", `/api/v1/conversations/${conversationId}/generate`, {\n body: data,\n });\n\n const reader = response.body?.getReader();\n if (!reader) throw new Error(\"No response body\");\n\n const decoder = new TextDecoder();\n const parts: string[] = [];\n let buffer = \"\";\n\n try {\n while (true) {\n if (options?.signal?.aborted) {\n reader.cancel();\n break;\n }\n\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() ?? \"\";\n\n for (const line of lines) {\n if (!line.startsWith(\"data: \")) continue;\n const jsonStr = line.slice(6).trim();\n if (!jsonStr) continue;\n\n let event: SseEvent;\n try {\n event = JSON.parse(jsonStr);\n } catch {\n continue;\n }\n\n if (event.type === \"text_delta\") {\n parts.push(event.text);\n options?.onTextDelta?.(event.text);\n } else if (event.type === \"done\") {\n options?.onDone?.(event);\n } else if (event.type === \"error\") {\n options?.onError?.(event.error);\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n\n return parts.join(\"\");\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type {\n TriggerImageDto,\n ImageStatusResponseDto,\n} from \"../types\";\n\nexport class ImagesResource {\n constructor(private http: HttpClient) {}\n\n trigger(messageId: string, data: TriggerImageDto): Promise<ImageStatusResponseDto> {\n return this.http.post(`/api/v1/messages/${messageId}/images`, data);\n }\n\n getAll(messageId: string): Promise<ImageStatusResponseDto[]> {\n return this.http.get(`/api/v1/messages/${messageId}/images`);\n }\n\n getBySlot(messageId: string, slot: string): Promise<ImageStatusResponseDto> {\n return this.http.get(`/api/v1/messages/${messageId}/images/${slot}`);\n }\n}\n","import type { HttpClient } from \"../http\";\nimport type { CreateCheckoutDto, CheckoutResponseDto } from \"../types\";\n\nexport class PaymentsResource {\n constructor(private http: HttpClient) {}\n\n checkout(data: CreateCheckoutDto): Promise<CheckoutResponseDto> {\n return this.http.post(\"/api/v1/payments/checkout\", data);\n }\n}\n","import { HttpClient } from \"./http\";\nimport type { TokensResponseDto } from \"./types\";\nimport { AuthResource } from \"./resources/auth\";\nimport { PlansResource } from \"./resources/plans\";\nimport { CreditsResource } from \"./resources/credits\";\nimport { BillingResource } from \"./resources/billing\";\nimport { PreferencesResource } from \"./resources/preferences\";\nimport { ConversationsResource } from \"./resources/conversations\";\nimport { GenerationResource } from \"./resources/generation\";\nimport { ImagesResource } from \"./resources/images\";\nimport { PaymentsResource } from \"./resources/payments\";\n\nexport interface ClientOptions {\n baseUrl: string;\n tenantKey: string;\n accessToken?: string;\n refreshToken?: string;\n onTokenRefreshed?: (tokens: TokensResponseDto) => void | Promise<void>;\n fetch?: typeof globalThis.fetch;\n}\n\nexport interface AiAssistantsClient {\n auth: AuthResource;\n plans: PlansResource;\n credits: CreditsResource;\n billing: BillingResource;\n preferences: PreferencesResource;\n conversations: ConversationsResource;\n generation: GenerationResource;\n images: ImagesResource;\n payments: PaymentsResource;\n setAccessToken(token: string): void;\n setRefreshToken(token: string): void;\n}\n\nexport function createClient(options: ClientOptions): AiAssistantsClient {\n let accessToken = options.accessToken ?? null;\n let refreshToken = options.refreshToken ?? null;\n\n const http = new HttpClient({\n baseUrl: options.baseUrl,\n tenantKey: options.tenantKey,\n fetch: options.fetch,\n getAccessToken: () => accessToken,\n getRefreshToken: () => refreshToken,\n onTokenRefreshed: async (tokens) => {\n accessToken = tokens.accessToken;\n refreshToken = tokens.refreshToken;\n await options.onTokenRefreshed?.(tokens);\n },\n });\n\n return {\n auth: new AuthResource(http),\n plans: new PlansResource(http),\n credits: new CreditsResource(http),\n billing: new BillingResource(http),\n preferences: new PreferencesResource(http),\n conversations: new ConversationsResource(http),\n generation: new GenerationResource(http),\n images: new ImagesResource(http),\n payments: new PaymentsResource(http),\n setAccessToken(token: string) {\n accessToken = token;\n },\n setRefreshToken(token: string) {\n refreshToken = token;\n },\n };\n}\n"],"mappings":"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","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@zdrops/ai-assistants-sdk",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "TypeScript SDK for the AI Assistants API",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.cjs",
|
|
8
|
+
"module": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"import": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"default": "./dist/index.js"
|
|
15
|
+
},
|
|
16
|
+
"require": {
|
|
17
|
+
"types": "./dist/index.d.cts",
|
|
18
|
+
"default": "./dist/index.cjs"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"publishConfig": {
|
|
23
|
+
"registry": "https://registry.npmjs.org",
|
|
24
|
+
"access": "public"
|
|
25
|
+
},
|
|
26
|
+
"files": [
|
|
27
|
+
"dist",
|
|
28
|
+
"CHANGELOG.md",
|
|
29
|
+
"README.md"
|
|
30
|
+
],
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": ">=18"
|
|
33
|
+
},
|
|
34
|
+
"scripts": {
|
|
35
|
+
"generate:types": "openapi-typescript ../ai-assistants-backend/openapi.json -o src/generated/api-types.ts",
|
|
36
|
+
"build": "tsup",
|
|
37
|
+
"build:full": "npm run generate:types && npm run build",
|
|
38
|
+
"typecheck": "tsc --noEmit",
|
|
39
|
+
"prepublishOnly": "npm run build"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"openapi-typescript": "^7.6.1",
|
|
43
|
+
"tsup": "^8.4.0",
|
|
44
|
+
"typescript": "^5.7.0"
|
|
45
|
+
}
|
|
46
|
+
}
|