@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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/client.d.ts +24 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +396 -36
- package/dist/client.js.map +1 -1
- package/dist/contracts.d.ts +102 -0
- package/dist/contracts.d.ts.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/resources/api-keys.d.ts +19 -0
- package/dist/resources/api-keys.d.ts.map +1 -0
- package/dist/resources/api-keys.js +36 -0
- package/dist/resources/api-keys.js.map +1 -0
- package/dist/resources/auth.d.ts +10 -1
- package/dist/resources/auth.d.ts.map +1 -1
- package/dist/resources/auth.js +15 -1
- package/dist/resources/auth.js.map +1 -1
- package/dist/resources/federation.d.ts +98 -0
- package/dist/resources/federation.d.ts.map +1 -0
- package/dist/resources/federation.js +184 -0
- package/dist/resources/federation.js.map +1 -0
- package/dist/resources/files.d.ts +72 -0
- package/dist/resources/files.d.ts.map +1 -0
- package/dist/resources/files.js +205 -0
- package/dist/resources/files.js.map +1 -0
- package/dist/resources/index.d.ts +4 -0
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +4 -0
- package/dist/resources/index.js.map +1 -1
- package/dist/resources/knowledge.d.ts +6 -0
- package/dist/resources/knowledge.d.ts.map +1 -1
- package/dist/resources/knowledge.js +13 -0
- package/dist/resources/knowledge.js.map +1 -1
- package/dist/resources/portability.d.ts +133 -0
- package/dist/resources/portability.d.ts.map +1 -0
- package/dist/resources/portability.js +244 -0
- package/dist/resources/portability.js.map +1 -0
- package/dist/resources/schemas.d.ts +108 -37
- package/dist/resources/schemas.d.ts.map +1 -1
- package/dist/resources/schemas.js +61 -7
- package/dist/resources/schemas.js.map +1 -1
- 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
|
|
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
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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) {
|
package/dist/client.js.map
CHANGED
|
@@ -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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"}
|