@knowzai/api-client 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/client.d.ts +24 -3
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +396 -36
  5. package/dist/client.js.map +1 -1
  6. package/dist/contracts.d.ts +102 -0
  7. package/dist/contracts.d.ts.map +1 -1
  8. package/dist/index.d.ts +3 -3
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +1 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/resources/api-keys.d.ts +19 -0
  13. package/dist/resources/api-keys.d.ts.map +1 -0
  14. package/dist/resources/api-keys.js +36 -0
  15. package/dist/resources/api-keys.js.map +1 -0
  16. package/dist/resources/auth.d.ts +10 -1
  17. package/dist/resources/auth.d.ts.map +1 -1
  18. package/dist/resources/auth.js +15 -1
  19. package/dist/resources/auth.js.map +1 -1
  20. package/dist/resources/federation.d.ts +98 -0
  21. package/dist/resources/federation.d.ts.map +1 -0
  22. package/dist/resources/federation.js +184 -0
  23. package/dist/resources/federation.js.map +1 -0
  24. package/dist/resources/files.d.ts +72 -0
  25. package/dist/resources/files.d.ts.map +1 -0
  26. package/dist/resources/files.js +205 -0
  27. package/dist/resources/files.js.map +1 -0
  28. package/dist/resources/index.d.ts +4 -0
  29. package/dist/resources/index.d.ts.map +1 -1
  30. package/dist/resources/index.js +4 -0
  31. package/dist/resources/index.js.map +1 -1
  32. package/dist/resources/knowledge.d.ts +6 -0
  33. package/dist/resources/knowledge.d.ts.map +1 -1
  34. package/dist/resources/knowledge.js +13 -0
  35. package/dist/resources/knowledge.js.map +1 -1
  36. package/dist/resources/portability.d.ts +133 -0
  37. package/dist/resources/portability.d.ts.map +1 -0
  38. package/dist/resources/portability.js +244 -0
  39. package/dist/resources/portability.js.map +1 -0
  40. package/dist/resources/schemas.d.ts +108 -37
  41. package/dist/resources/schemas.d.ts.map +1 -1
  42. package/dist/resources/schemas.js +61 -7
  43. package/dist/resources/schemas.js.map +1 -1
  44. package/package.json +3 -3
package/dist/client.js CHANGED
@@ -1,8 +1,11 @@
1
+ import { openAsBlob } from 'node:fs';
2
+ import { open, rename, unlink } from 'node:fs/promises';
3
+ import { basename } from 'node:path';
1
4
  import pRetry, { AbortError } from 'p-retry';
2
5
  import { z } from 'zod';
3
6
  import { ApiError } from '@knowzai/types';
4
7
  import { assertTlsAllowed } from './tls.js';
5
- import { AuthApi, KnowledgeApi, VaultsApi, SearchApi, AskApi } from './resources/index.js';
8
+ import { AuthApi, ApiKeysApi, KnowledgeApi, VaultsApi, SearchApi, AskApi, FilesApi, PortabilityApi, FederationApi, } from './resources/index.js';
6
9
  import { EntitiesApi, TopicsApi, StatsApi, CommentsApi, VersionsApi, AmendApi, } from './resources/extras.js';
7
10
  import { ChatApi } from './chat.js';
8
11
  /** Envelope shape with an opaque `data` — validated before the typed payload. */
@@ -17,6 +20,19 @@ const BaseEnvelopeSchema = z.object({
17
20
  timestamp: z.string(),
18
21
  });
19
22
  const RETRYABLE_STATUS = (s) => s >= 500 || s === 429;
23
+ /**
24
+ * H3 — never follow an HTTP redirect on an API request.
25
+ *
26
+ * `fetch` re-sends request headers on a same-origin redirect and, in Node's
27
+ * undici, a cross-origin redirect strips `Authorization` but NOT arbitrary
28
+ * headers like `X-Api-Key`. A redirect from an API host we trust to one we do
29
+ * not would therefore hand the caller's API key to the redirect target, with no
30
+ * signal at the call site. Knowz API routes never legitimately redirect
31
+ * (the platform contract explicitly forbids cross-host redirects on API paths),
32
+ * so a redirect is an anomaly and `redirect: 'error'` turns it into a visible
33
+ * transport failure instead of a silent credential disclosure.
34
+ */
35
+ export const API_REDIRECT_MODE = 'error';
20
36
  function buildUrl(baseUrl, path, query) {
21
37
  const url = new URL(path.replace(/^\//, ''), baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`);
22
38
  if (query) {
@@ -44,6 +60,13 @@ function messagesFromBody(body, status) {
44
60
  }
45
61
  return [`Request failed with status ${status}`];
46
62
  }
63
+ /** The envelope's `data` payload from an error body, when it carried one (attached to ApiError.data). */
64
+ function envelopeData(body) {
65
+ if (body && typeof body === 'object' && 'data' in body) {
66
+ return body.data ?? undefined;
67
+ }
68
+ return undefined;
69
+ }
47
70
  export function createApiClient(opts) {
48
71
  assertTlsAllowed(opts.baseUrl);
49
72
  const fetchImpl = opts.fetchImpl ?? globalThis.fetch;
@@ -75,8 +98,9 @@ export function createApiClient(opts) {
75
98
  return await fetchImpl(url, {
76
99
  method,
77
100
  headers,
78
- body: body === undefined ? undefined : JSON.stringify(body),
101
+ body,
79
102
  signal: controller.signal,
103
+ redirect: API_REDIRECT_MODE,
80
104
  });
81
105
  }
82
106
  finally {
@@ -85,14 +109,58 @@ export function createApiClient(opts) {
85
109
  externalSignal.removeEventListener('abort', onAbort);
86
110
  }
87
111
  }
112
+ /**
113
+ * Validate an API envelope response and return its typed payload.
114
+ * Throws `ApiError` for every failure mode; callers decide whether that is retryable.
115
+ */
116
+ async function readEnvelope(res,
117
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
118
+ schema) {
119
+ // 204 / empty body
120
+ if (res.status === 204)
121
+ return schema.parse(undefined);
122
+ const text = await res.text();
123
+ const json = text ? safeJson(text) : undefined;
124
+ if (!res.ok) {
125
+ throw new ApiError(res.status, messagesFromBody(json, res.status), {
126
+ requestId: res.headers.get('x-request-id') ?? undefined,
127
+ data: envelopeData(json),
128
+ });
129
+ }
130
+ // 1) Validate the envelope shape with an opaque `data`.
131
+ const base = BaseEnvelopeSchema.safeParse(json);
132
+ if (!base.success) {
133
+ const issue = base.error.issues[0];
134
+ throw new ApiError(res.status, [
135
+ `Malformed API response${issue ? ` ('${issue.path.join('.')}': ${issue.message})` : ''}`,
136
+ ]);
137
+ }
138
+ // 2) A success:false envelope is an error regardless of HTTP status.
139
+ if (!base.data.success) {
140
+ throw new ApiError(res.status, base.data.errors ?? [base.data.message || 'Request failed'], {
141
+ data: base.data.data ?? undefined,
142
+ });
143
+ }
144
+ // 3) Validate the typed payload.
145
+ const payload = schema.safeParse(base.data.data);
146
+ if (!payload.success) {
147
+ const issue = payload.error.issues[0];
148
+ throw new ApiError(res.status, [
149
+ `Malformed API response data${issue ? ` ('${issue.path.join('.')}': ${issue.message})` : ''}`,
150
+ ]);
151
+ }
152
+ return payload.data;
153
+ }
88
154
  async function request(spec) {
89
155
  const url = buildUrl(opts.baseUrl, spec.path, spec.query);
90
156
  const headers = headersFor({ anonymous: spec.anonymous, hasBody: spec.body !== undefined });
157
+ for (const [name, value] of Object.entries(spec.headers ?? {}))
158
+ headers.set(name, value);
91
159
  const timeoutMs = spec.timeoutMs ?? defaultTimeout;
92
160
  const run = async () => {
93
161
  let res;
94
162
  try {
95
- res = await doFetch(spec.method, url, headers, spec.body, timeoutMs);
163
+ res = await doFetch(spec.method, url, headers, spec.body === undefined ? undefined : JSON.stringify(spec.body), timeoutMs);
96
164
  }
97
165
  catch (e) {
98
166
  // Timeout/abort → do not retry. Other network errors → retryable (rethrow).
@@ -109,40 +177,16 @@ export function createApiClient(opts) {
109
177
  requestId: res.headers.get('x-request-id') ?? undefined,
110
178
  });
111
179
  }
112
- // 204 / empty body
113
- if (res.status === 204)
114
- return spec.schema.parse(undefined);
115
- const text = await res.text();
116
- const json = text ? safeJson(text) : undefined;
117
- if (!res.ok) {
118
- throw new AbortError(new ApiError(res.status, messagesFromBody(json, res.status), {
119
- requestId: res.headers.get('x-request-id') ?? undefined,
120
- }));
121
- }
122
- // 1) Validate the envelope shape with an opaque `data`.
123
- const base = BaseEnvelopeSchema.safeParse(json);
124
- if (!base.success) {
125
- const issue = base.error.issues[0];
126
- throw new AbortError(new ApiError(res.status, [
127
- `Malformed API response${issue ? ` ('${issue.path.join('.')}': ${issue.message})` : ''}`,
128
- ]));
129
- }
130
- // 2) A success:false envelope is an error regardless of HTTP status.
131
- if (!base.data.success) {
132
- throw new AbortError(new ApiError(res.status, base.data.errors ?? [base.data.message || 'Request failed']));
133
- }
134
- // 3) Validate the typed payload.
135
- const payload = spec.schema.safeParse(base.data.data);
136
- if (!payload.success) {
137
- const issue = payload.error.issues[0];
138
- throw new AbortError(new ApiError(res.status, [
139
- `Malformed API response data${issue ? ` ('${issue.path.join('.')}': ${issue.message})` : ''}`,
140
- ]));
141
- }
142
- return payload.data;
180
+ try {
181
+ return await readEnvelope(res, spec.schema);
182
+ }
183
+ catch (e) {
184
+ // Every envelope-level failure is terminal for the JSON path.
185
+ throw e instanceof ApiError ? new AbortError(e) : e;
186
+ }
143
187
  };
144
188
  try {
145
- return await pRetry(run, { retries, minTimeout: 1000, factor: 2 });
189
+ return await pRetry(run, { retries: spec.retries ?? retries, minTimeout: 1000, factor: 2 });
146
190
  }
147
191
  catch (e) {
148
192
  if (e instanceof ApiError)
@@ -151,6 +195,313 @@ export function createApiClient(opts) {
151
195
  throw new ApiError(0, [msg], { code: 'transport', cause: e });
152
196
  }
153
197
  }
198
+ /**
199
+ * Sibling of `request` for raw byte bodies (R7). Shares auth injection, the
200
+ * timeout/abort plumbing and envelope validation, but sends the body untouched
201
+ * as `application/octet-stream` and never retries — a chunk PUT is idempotent by
202
+ * index, so the retry decision belongs to the upload loop (R8).
203
+ */
204
+ async function rawRequest(spec) {
205
+ const url = buildUrl(opts.baseUrl, spec.path, spec.query);
206
+ const headers = headersFor({ anonymous: spec.anonymous, hasBody: false });
207
+ headers.set('Content-Type', 'application/octet-stream');
208
+ for (const [name, value] of Object.entries(spec.headers ?? {}))
209
+ headers.set(name, value);
210
+ let res;
211
+ try {
212
+ res = await doFetch(spec.method, url, headers, spec.body, spec.timeoutMs ?? defaultTimeout, spec.signal);
213
+ }
214
+ catch (e) {
215
+ if (e instanceof Error && e.name === 'AbortError') {
216
+ throw new ApiError(0, ['Request timed out'], { code: 'timeout', cause: e });
217
+ }
218
+ throw new ApiError(0, [e instanceof Error ? e.message : String(e)], {
219
+ code: 'transport',
220
+ cause: e,
221
+ });
222
+ }
223
+ return readEnvelope(res, spec.schema);
224
+ }
225
+ /** Error text from an envelope OR a bare error body ({errors}, {message}, or selfhosted {error}). */
226
+ function flexMessages(body, status) {
227
+ if (body && typeof body === 'object') {
228
+ const b = body;
229
+ if (typeof b.error === 'string' && b.error)
230
+ return [b.error];
231
+ }
232
+ return messagesFromBody(body, status);
233
+ }
234
+ /** True for the ApiResponse envelope; false for every bare body (incl. bare results with a `success` field). */
235
+ function isApiEnvelope(body) {
236
+ if (!body || typeof body !== 'object')
237
+ return false;
238
+ const b = body;
239
+ return typeof b.success === 'boolean' && 'data' in b && ('timestamp' in b || 'errors' in b);
240
+ }
241
+ /**
242
+ * Shared response handling for the envelope-tolerant legs (R2): statuses in
243
+ * `acceptStatuses` are parsed as payload-bearing ANSWERS (central 400
244
+ * validation results, selfhosted 422s); an envelope is unwrapped, a bare body
245
+ * is parsed directly. An envelope-level refusal (`success:false`) is still an
246
+ * error — it carries no payload to parse.
247
+ */
248
+ async function readFlexBody(res,
249
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
250
+ schema, acceptStatuses, onEnvelope) {
251
+ if (res.status === 204)
252
+ return schema.parse(undefined);
253
+ const text = await res.text();
254
+ const json = text ? safeJson(text) : undefined;
255
+ if (!res.ok && !acceptStatuses.includes(res.status)) {
256
+ throw new ApiError(res.status, flexMessages(json, res.status), {
257
+ requestId: res.headers.get('x-request-id') ?? undefined,
258
+ data: envelopeData(json),
259
+ });
260
+ }
261
+ const wasEnvelope = isApiEnvelope(json);
262
+ onEnvelope?.(wasEnvelope);
263
+ let payload = json;
264
+ if (wasEnvelope) {
265
+ if (!json.success) {
266
+ throw new ApiError(res.status, json.errors?.length ? json.errors : [json.message || 'Request failed'], {
267
+ data: json.data ?? undefined,
268
+ });
269
+ }
270
+ payload = json.data;
271
+ }
272
+ const parsed = schema.safeParse(payload);
273
+ if (!parsed.success) {
274
+ const issue = parsed.error.issues[0];
275
+ throw new ApiError(res.status, [
276
+ `Malformed API response${issue ? ` ('${issue.path.join('.')}': ${issue.message})` : ''}`,
277
+ ]);
278
+ }
279
+ return parsed.data;
280
+ }
281
+ /**
282
+ * Envelope-tolerant JSON leg (CLI_PortabilityTransfer R2). Never retries —
283
+ * the surfaces it serves (import) are not idempotent.
284
+ */
285
+ async function flexRequest(spec) {
286
+ const url = buildUrl(opts.baseUrl, spec.path, spec.query);
287
+ const headers = headersFor({ anonymous: spec.anonymous, hasBody: spec.body !== undefined });
288
+ let res;
289
+ try {
290
+ res = await doFetch(spec.method, url, headers, spec.body === undefined ? undefined : JSON.stringify(spec.body), spec.timeoutMs ?? defaultTimeout);
291
+ }
292
+ catch (e) {
293
+ if (e instanceof Error && e.name === 'AbortError') {
294
+ throw new ApiError(0, ['Request timed out'], { code: 'timeout', cause: e });
295
+ }
296
+ throw new ApiError(0, [e instanceof Error ? e.message : String(e)], { code: 'transport', cause: e });
297
+ }
298
+ return readFlexBody(res, spec.schema, spec.acceptStatuses ?? [], spec.onEnvelope);
299
+ }
300
+ const LOCAL_REDIRECT_HOSTS = new Set(['localhost', '127.0.0.1', '::1', '[::1]']);
301
+ /**
302
+ * R3 SECURITY — validate a redirect target before making any second request.
303
+ * Only an absolute `https:` URL (or `http:` to localhost for local stacks) is
304
+ * followed; anything else — relative, missing, other scheme/host — hard-fails
305
+ * with NO second request, so the caller's credential can never chase an
306
+ * attacker-controlled Location.
307
+ */
308
+ function assertSafeRedirectTarget(location, from) {
309
+ if (!location) {
310
+ throw new ApiError(0, [`Redirect from ${from} carried no Location header — refusing to continue.`], {
311
+ code: 'unsafe-redirect',
312
+ });
313
+ }
314
+ let target;
315
+ try {
316
+ target = new URL(location); // absolute-only: a relative Location throws here
317
+ }
318
+ catch {
319
+ throw new ApiError(0, [`Refusing non-absolute redirect Location '${location}'.`], { code: 'unsafe-redirect' });
320
+ }
321
+ const isHttps = target.protocol === 'https:';
322
+ const isLocalHttp = target.protocol === 'http:' && LOCAL_REDIRECT_HOSTS.has(target.hostname);
323
+ if (!isHttps && !isLocalHttp) {
324
+ throw new ApiError(0, [`Refusing redirect to '${location}' — only https (or http to localhost) is allowed.`], {
325
+ code: 'unsafe-redirect',
326
+ });
327
+ }
328
+ return target.toString();
329
+ }
330
+ function fileNameFromDisposition(value) {
331
+ if (!value)
332
+ return undefined;
333
+ const match = /filename\*?=(?:UTF-8''|")?([^";]+)"?/i.exec(value);
334
+ return match?.[1] ? decodeURIComponent(match[1]) : undefined;
335
+ }
336
+ /**
337
+ * Stream a response body to `${outPath}.partial`, renaming on success (R4).
338
+ * The inactivity timer aborts a stalled transfer; ANY failure removes the
339
+ * partial so a crashed download can never be mistaken for a finished one.
340
+ */
341
+ async function streamResponseToFile(res, outPath, onProgress, resetInactivity) {
342
+ const partialPath = `${outPath}.partial`;
343
+ const totalHeader = res.headers.get('content-length');
344
+ const totalBytes = totalHeader ? Number(totalHeader) || undefined : undefined;
345
+ const handle = await open(partialPath, 'w');
346
+ let bytes = 0;
347
+ try {
348
+ if (res.body) {
349
+ const reader = res.body.getReader();
350
+ for (;;) {
351
+ const { done, value } = await reader.read();
352
+ if (done)
353
+ break;
354
+ resetInactivity();
355
+ await handle.write(value);
356
+ bytes += value.byteLength;
357
+ onProgress?.(bytes, totalBytes);
358
+ }
359
+ }
360
+ await handle.close();
361
+ await rename(partialPath, outPath);
362
+ return bytes;
363
+ }
364
+ catch (e) {
365
+ await handle.close().catch(() => undefined);
366
+ await unlink(partialPath).catch(() => undefined);
367
+ throw e;
368
+ }
369
+ }
370
+ /**
371
+ * Redirect-safe download leg (CLI_PortabilityTransfer R3 + R4).
372
+ *
373
+ * Request #1 goes to our API with normal auth and `redirect:'manual'` — undici
374
+ * re-sends `X-Api-Key` on redirects, so the hop is never delegated to fetch.
375
+ * A 3xx Location is validated (absolute https, or http to localhost) and then
376
+ * fetched as a FRESH request with NO auth callback, no `X-Api-Key`, no
377
+ * `Authorization`, no cookies, and `redirect:'error'` — exactly one hop, ever.
378
+ */
379
+ async function download(spec) {
380
+ const url = buildUrl(opts.baseUrl, spec.path, spec.query);
381
+ const headers = headersFor({ anonymous: false, hasBody: spec.body !== undefined });
382
+ headers.set('Accept', '*/*');
383
+ const timeoutMs = spec.timeoutMs ?? defaultTimeout;
384
+ const controller = new AbortController();
385
+ const onAbort = () => controller.abort();
386
+ if (spec.signal) {
387
+ if (spec.signal.aborted)
388
+ controller.abort();
389
+ else
390
+ spec.signal.addEventListener('abort', onAbort, { once: true });
391
+ }
392
+ let timer = setTimeout(() => controller.abort(), timeoutMs);
393
+ const resetInactivity = () => {
394
+ clearTimeout(timer);
395
+ timer = setTimeout(() => controller.abort(), timeoutMs);
396
+ };
397
+ try {
398
+ let res;
399
+ try {
400
+ res = await fetchImpl(url, {
401
+ method: spec.method,
402
+ headers,
403
+ body: spec.body === undefined ? undefined : JSON.stringify(spec.body),
404
+ signal: controller.signal,
405
+ redirect: 'manual',
406
+ });
407
+ }
408
+ catch (e) {
409
+ if (e instanceof Error && e.name === 'AbortError') {
410
+ throw new ApiError(0, ['Download timed out'], { code: 'timeout', cause: e });
411
+ }
412
+ throw new ApiError(0, [e instanceof Error ? e.message : String(e)], { code: 'transport', cause: e });
413
+ }
414
+ let redirected = false;
415
+ if (res.status >= 300 && res.status < 400) {
416
+ const target = assertSafeRedirectTarget(res.headers.get('location'), url);
417
+ await res.body?.cancel().catch(() => undefined);
418
+ resetInactivity();
419
+ redirected = true;
420
+ try {
421
+ // R3.3 — fresh request: NO auth headers of any kind, exactly one hop.
422
+ res = await fetchImpl(target, {
423
+ method: 'GET',
424
+ headers: new Headers({ Accept: '*/*' }),
425
+ signal: controller.signal,
426
+ redirect: 'error',
427
+ });
428
+ }
429
+ catch (e) {
430
+ if (e instanceof Error && e.name === 'AbortError') {
431
+ throw new ApiError(0, ['Download timed out'], { code: 'timeout', cause: e });
432
+ }
433
+ throw new ApiError(0, [e instanceof Error ? e.message : String(e)], { code: 'transport', cause: e });
434
+ }
435
+ }
436
+ if (!res.ok) {
437
+ const text = await res.text().catch(() => '');
438
+ throw new ApiError(res.status, flexMessages(safeJson(text), res.status), {
439
+ requestId: res.headers.get('x-request-id') ?? undefined,
440
+ });
441
+ }
442
+ resetInactivity();
443
+ let bytes;
444
+ try {
445
+ bytes = await streamResponseToFile(res, spec.outPath, spec.onProgress, resetInactivity);
446
+ }
447
+ catch (e) {
448
+ if (e instanceof ApiError)
449
+ throw e;
450
+ if (e instanceof Error && e.name === 'AbortError') {
451
+ throw new ApiError(0, ['Download timed out'], { code: 'timeout', cause: e });
452
+ }
453
+ throw new ApiError(0, [e instanceof Error ? e.message : String(e)], { code: 'transport', cause: e });
454
+ }
455
+ return {
456
+ path: spec.outPath,
457
+ bytes,
458
+ contentType: res.headers.get('content-type') ?? undefined,
459
+ fileName: fileNameFromDisposition(res.headers.get('content-disposition')),
460
+ redirected,
461
+ };
462
+ }
463
+ finally {
464
+ clearTimeout(timer);
465
+ if (spec.signal)
466
+ spec.signal.removeEventListener('abort', onAbort);
467
+ }
468
+ }
469
+ /**
470
+ * Multipart upload leg (CLI_PortabilityTransfer R6). The file streams from
471
+ * disk via `openAsBlob` — never buffered whole — and there is no automatic
472
+ * retry: an import is not idempotent.
473
+ */
474
+ async function uploadMultipart(spec) {
475
+ const url = buildUrl(opts.baseUrl, spec.path, spec.query);
476
+ // No Content-Type here — fetch derives the multipart boundary from the body.
477
+ const headers = headersFor({ anonymous: false, hasBody: false });
478
+ const form = new FormData();
479
+ for (const [name, value] of Object.entries(spec.fields ?? {}))
480
+ form.append(name, value);
481
+ form.append(spec.fileField, await openAsBlob(spec.filePath), basename(spec.filePath));
482
+ const controller = new AbortController();
483
+ const timer = setTimeout(() => controller.abort(), spec.timeoutMs ?? defaultTimeout);
484
+ let res;
485
+ try {
486
+ res = await fetchImpl(url, {
487
+ method: 'POST',
488
+ headers,
489
+ body: form,
490
+ signal: controller.signal,
491
+ redirect: API_REDIRECT_MODE,
492
+ });
493
+ }
494
+ catch (e) {
495
+ if (e instanceof Error && e.name === 'AbortError') {
496
+ throw new ApiError(0, ['Upload timed out'], { code: 'timeout', cause: e });
497
+ }
498
+ throw new ApiError(0, [e instanceof Error ? e.message : String(e)], { code: 'transport', cause: e });
499
+ }
500
+ finally {
501
+ clearTimeout(timer);
502
+ }
503
+ return readFlexBody(res, spec.schema, spec.acceptStatuses ?? []);
504
+ }
154
505
  async function stream(spec) {
155
506
  const url = buildUrl(opts.baseUrl, spec.path, spec.query);
156
507
  const headers = headersFor({ anonymous: spec.anonymous, hasBody: spec.body !== undefined });
@@ -161,6 +512,7 @@ export function createApiClient(opts) {
161
512
  headers,
162
513
  body: spec.body === undefined ? undefined : JSON.stringify(spec.body),
163
514
  signal: spec.signal,
515
+ redirect: API_REDIRECT_MODE,
164
516
  });
165
517
  if (!res.ok) {
166
518
  const text = await res.text().catch(() => '');
@@ -168,13 +520,19 @@ export function createApiClient(opts) {
168
520
  }
169
521
  return res;
170
522
  }
171
- const core = { request, stream };
523
+ const core = { request, stream, rawRequest, flexRequest, download, uploadMultipart };
172
524
  return {
173
525
  request,
526
+ rawRequest,
174
527
  stream,
528
+ flexRequest,
529
+ download,
530
+ uploadMultipart,
175
531
  baseUrl: opts.baseUrl,
176
532
  auth: new AuthApi(core),
533
+ apiKeys: new ApiKeysApi(core),
177
534
  knowledge: new KnowledgeApi(core),
535
+ files: new FilesApi(core),
178
536
  vaults: new VaultsApi(core),
179
537
  search: new SearchApi(core),
180
538
  ask: new AskApi(core),
@@ -185,6 +543,8 @@ export function createApiClient(opts) {
185
543
  comments: new CommentsApi(core),
186
544
  versions: new VersionsApi(core),
187
545
  amend: new AmendApi(core),
546
+ portability: new PortabilityApi(core),
547
+ federation: new FederationApi(core),
188
548
  };
189
549
  }
190
550
  function safeJson(text) {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}