@knowzai/api-client 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +4 -4
package/dist/contracts.d.ts
CHANGED
|
@@ -5,8 +5,12 @@ export interface RequestSpec<T> {
|
|
|
5
5
|
query?: Record<string, unknown>;
|
|
6
6
|
body?: unknown;
|
|
7
7
|
schema: z.ZodType<T, z.ZodTypeDef, any>;
|
|
8
|
+
/** Extra request headers merged over the defaults (e.g. an integrity hash). */
|
|
9
|
+
headers?: Record<string, string>;
|
|
8
10
|
anonymous?: boolean;
|
|
9
11
|
timeoutMs?: number;
|
|
12
|
+
/** Override the client's retry count for this request (use 0 for non-idempotent writes). */
|
|
13
|
+
retries?: number;
|
|
10
14
|
}
|
|
11
15
|
export interface StreamSpec {
|
|
12
16
|
method: string;
|
|
@@ -16,9 +20,107 @@ export interface StreamSpec {
|
|
|
16
20
|
anonymous?: boolean;
|
|
17
21
|
signal?: AbortSignal;
|
|
18
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* A request whose body is raw bytes rather than JSON (CLI_KnowledgeAttachUpload R7).
|
|
25
|
+
* Unlike `RequestSpec` the body is sent untouched as `application/octet-stream`, and
|
|
26
|
+
* the caller may add request headers (the chunk-upload protocol is header-driven).
|
|
27
|
+
* There is no automatic retry — chunk retry policy belongs to the caller (R8).
|
|
28
|
+
*/
|
|
29
|
+
export interface RawRequestSpec<T> {
|
|
30
|
+
method: string;
|
|
31
|
+
path: string;
|
|
32
|
+
query?: Record<string, unknown>;
|
|
33
|
+
body: Uint8Array;
|
|
34
|
+
headers?: Record<string, string>;
|
|
35
|
+
schema: z.ZodType<T, z.ZodTypeDef, any>;
|
|
36
|
+
anonymous?: boolean;
|
|
37
|
+
timeoutMs?: number;
|
|
38
|
+
signal?: AbortSignal;
|
|
39
|
+
}
|
|
19
40
|
/** Minimal core surface the resource modules depend on. */
|
|
20
41
|
export interface CoreClient {
|
|
21
42
|
request<T>(spec: RequestSpec<T>): Promise<T>;
|
|
22
43
|
stream(spec: StreamSpec): Promise<Response>;
|
|
23
44
|
}
|
|
45
|
+
/** `CoreClient` plus the raw-body leg. Required by resources that upload bytes. */
|
|
46
|
+
export interface RawCoreClient extends CoreClient {
|
|
47
|
+
rawRequest<T>(spec: RawRequestSpec<T>): Promise<T>;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Envelope-tolerant JSON request (CLI_PortabilityTransfer R2). Unlike
|
|
51
|
+
* `RequestSpec`, the response body may be a bare (non-envelope) document —
|
|
52
|
+
* the selfhosted dialect and the Light export package — and statuses listed in
|
|
53
|
+
* `acceptStatuses` are parsed as payload-bearing answers instead of thrown
|
|
54
|
+
* (central 400 validation results, selfhosted 422s). Never retried: the
|
|
55
|
+
* surfaces this serves (import) are not idempotent.
|
|
56
|
+
*/
|
|
57
|
+
export interface FlexRequestSpec<T> {
|
|
58
|
+
method: string;
|
|
59
|
+
path: string;
|
|
60
|
+
query?: Record<string, unknown>;
|
|
61
|
+
body?: unknown;
|
|
62
|
+
schema: z.ZodType<T, z.ZodTypeDef, any>;
|
|
63
|
+
/** Statuses whose bodies are parsed as payloads instead of thrown (e.g. [400, 422]). */
|
|
64
|
+
acceptStatuses?: number[];
|
|
65
|
+
anonymous?: boolean;
|
|
66
|
+
timeoutMs?: number;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* ADDITIVE sibling of `FlexRequestSpec` — NOT part of the frozen N1 contract.
|
|
70
|
+
* `PortabilityApi.getSchema` needs to know whether the schema preflight body
|
|
71
|
+
* was an ApiResponse envelope (⇒ platform dialect) or bare (⇒ selfhosted, R6),
|
|
72
|
+
* and the frozen spec surface has no channel for that; this hook keeps the
|
|
73
|
+
* dialect probe to a single HTTP request without altering the frozen types.
|
|
74
|
+
*/
|
|
75
|
+
export interface FlexProbeRequestSpec<T> extends FlexRequestSpec<T> {
|
|
76
|
+
/** Called once with whether the (parsed-as-answer) body was an ApiResponse envelope. */
|
|
77
|
+
onEnvelope?: (wasEnvelope: boolean) => void;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Redirect-safe streaming download (CLI_PortabilityTransfer R3 + R4).
|
|
81
|
+
* The API request carries auth with `redirect:'manual'`; a 3xx `Location` must
|
|
82
|
+
* be an absolute https URL (or http to localhost) and is fetched exactly once
|
|
83
|
+
* with NO credentials and `redirect:'error'`. Bytes stream to
|
|
84
|
+
* `${outPath}.partial` and are renamed on success; any failure deletes the
|
|
85
|
+
* partial.
|
|
86
|
+
*/
|
|
87
|
+
export interface DownloadSpec {
|
|
88
|
+
method: 'GET' | 'POST';
|
|
89
|
+
path: string;
|
|
90
|
+
query?: Record<string, unknown>;
|
|
91
|
+
body?: unknown;
|
|
92
|
+
outPath: string;
|
|
93
|
+
onProgress?: (bytesReceived: number, totalBytes?: number) => void;
|
|
94
|
+
timeoutMs?: number;
|
|
95
|
+
signal?: AbortSignal;
|
|
96
|
+
}
|
|
97
|
+
export interface DownloadResult {
|
|
98
|
+
path: string;
|
|
99
|
+
bytes: number;
|
|
100
|
+
contentType?: string;
|
|
101
|
+
fileName?: string;
|
|
102
|
+
redirected: boolean;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Multipart file upload (CLI_PortabilityTransfer R6). The file streams from
|
|
106
|
+
* disk via `fs.openAsBlob` (never buffered in memory) under the field name
|
|
107
|
+
* `file` — central takes the first file regardless of name, selfhosted
|
|
108
|
+
* requires `file`, so one name serves both. Never retried.
|
|
109
|
+
*/
|
|
110
|
+
export interface MultipartSpec<T> {
|
|
111
|
+
path: string;
|
|
112
|
+
query?: Record<string, unknown>;
|
|
113
|
+
filePath: string;
|
|
114
|
+
fileField: string;
|
|
115
|
+
fields?: Record<string, string>;
|
|
116
|
+
schema: z.ZodType<T, z.ZodTypeDef, any>;
|
|
117
|
+
acceptStatuses?: number[];
|
|
118
|
+
timeoutMs?: number;
|
|
119
|
+
}
|
|
120
|
+
/** CoreClient extension consumed by PortabilityApi (and N2's FederationApi where noted). */
|
|
121
|
+
export interface PortabilityCoreClient extends CoreClient {
|
|
122
|
+
flexRequest<T>(spec: FlexRequestSpec<T>): Promise<T>;
|
|
123
|
+
download(spec: DownloadSpec): Promise<DownloadResult>;
|
|
124
|
+
uploadMultipart<T>(spec: MultipartSpec<T>): Promise<T>;
|
|
125
|
+
}
|
|
24
126
|
//# sourceMappingURL=contracts.d.ts.map
|
package/dist/contracts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IAKf,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export declare const NODE_ID: "FEAT_KnowzApiClient";
|
|
2
2
|
export { createApiClient, type ApiClientOptions, type KnowzApiClient } from './client.js';
|
|
3
|
-
export type { RequestSpec, StreamSpec, CoreClient } from './contracts.js';
|
|
3
|
+
export type { RequestSpec, StreamSpec, RawRequestSpec, CoreClient, RawCoreClient, FlexRequestSpec, FlexProbeRequestSpec, DownloadSpec, DownloadResult, MultipartSpec, PortabilityCoreClient, } from './contracts.js';
|
|
4
4
|
export { ApiEnvelopeSchema } from './envelope.js';
|
|
5
5
|
export { assertTlsAllowed } from './tls.js';
|
|
6
|
-
export { AuthApi, KnowledgeApi, VaultsApi, SearchApi, AskApi, type SearchQuery, type AskRequest, } from './resources/index.js';
|
|
6
|
+
export { AuthApi, ApiKeysApi, KnowledgeApi, VaultsApi, SearchApi, AskApi, FilesApi, contentTypeForFile, PortabilityApi, FederationApi, type SearchQuery, type AskRequest, type UploadInput, type UploadProgress, type UploadedFile, type PortabilityDialect, type ConflictStrategy, type ExportScopeType, type PortabilitySchema, type ExportScopeInput, type ExportToFileInput, type ExportToFileResult, type ExportJob, type ExportJobPart, type ExportJobStatus, type ImportValidation, type EntityCounts, type ImportOutcome, type FederationPeer, type FederationVaultLink, type FederationRunSummary, type FederationSyncOptionsInput, } from './resources/index.js';
|
|
7
7
|
export { toPaged, toArray } from './resources/paging.js';
|
|
8
8
|
export { ChatApi, parseSseStream } from './chat.js';
|
|
9
9
|
export { EntitiesApi, TopicsApi, StatsApi, CommentsApi, VersionsApi, AmendApi, type Entity, type Topic, type Comment, type KnowledgeVersion, type AmendEnvelope, type AmendStatus, } from './resources/extras.js';
|
|
10
10
|
export { ApiError } from '@knowzai/types';
|
|
11
|
-
export type { ApiEnvelope, AuthHeader, AuthHeaderName, RegisterTenantRequest, RegisterResult, VerifyResult, ValidateKeyResult, } from '@knowzai/types';
|
|
11
|
+
export type { ApiEnvelope, AuthHeader, AuthHeaderName, RegisterTenantRequest, RegisterResult, LoginTokenResult, CreateApiKeyRequest, CreatedApiKey, VerifyResult, ValidateKeyResult, } from '@knowzai/types';
|
|
12
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,EAAG,qBAA8B,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1F,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,EAAG,qBAA8B,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1F,YAAY,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,UAAU,EACV,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EACL,OAAO,EACP,UAAU,EACV,YAAY,EACZ,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,EACR,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,GAChC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EACL,WAAW,EACX,SAAS,EACT,QAAQ,EACR,WAAW,EACX,WAAW,EACX,QAAQ,EACR,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,iBAAiB,GAClB,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ export const NODE_ID = 'FEAT_KnowzApiClient';
|
|
|
2
2
|
export { createApiClient } from './client.js';
|
|
3
3
|
export { ApiEnvelopeSchema } from './envelope.js';
|
|
4
4
|
export { assertTlsAllowed } from './tls.js';
|
|
5
|
-
export { AuthApi, KnowledgeApi, VaultsApi, SearchApi, AskApi, } from './resources/index.js';
|
|
5
|
+
export { AuthApi, ApiKeysApi, KnowledgeApi, VaultsApi, SearchApi, AskApi, FilesApi, contentTypeForFile, PortabilityApi, FederationApi, } from './resources/index.js';
|
|
6
6
|
export { toPaged, toArray } from './resources/paging.js';
|
|
7
7
|
export { ChatApi, parseSseStream } from './chat.js';
|
|
8
8
|
export { EntitiesApi, TopicsApi, StatsApi, CommentsApi, VersionsApi, AmendApi, } from './resources/extras.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,qBAA8B,CAAC;AAEtD,OAAO,EAAE,eAAe,EAA8C,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,qBAA8B,CAAC;AAEtD,OAAO,EAAE,eAAe,EAA8C,MAAM,aAAa,CAAC;AAc1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EACL,OAAO,EACP,UAAU,EACV,YAAY,EACZ,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,EACR,kBAAkB,EAClB,cAAc,EACd,aAAa,GAuBd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EACL,WAAW,EACX,SAAS,EACT,QAAQ,EACR,WAAW,EACX,WAAW,EACX,QAAQ,GAOT,MAAM,uBAAuB,CAAC;AAE/B,gEAAgE;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CoreClient } from '../contracts.js';
|
|
2
|
+
import type { CreateApiKeyRequest, CreatedApiKey } from '@knowzai/types';
|
|
3
|
+
/**
|
|
4
|
+
* Explicit API-key management (`/api/v1/api-keys`). Registration does not mint
|
|
5
|
+
* keys — this is the supported way to obtain one (#661).
|
|
6
|
+
*/
|
|
7
|
+
export declare class ApiKeysApi {
|
|
8
|
+
private readonly core;
|
|
9
|
+
constructor(core: CoreClient);
|
|
10
|
+
/**
|
|
11
|
+
* Create a key and return it once. Pass `token` (a JWT from sign-in/registration)
|
|
12
|
+
* to authenticate with a bearer token instead of the client's ambient API key —
|
|
13
|
+
* that is the post-register case, where no key exists yet.
|
|
14
|
+
*/
|
|
15
|
+
create(req: CreateApiKeyRequest, opts?: {
|
|
16
|
+
token?: string;
|
|
17
|
+
}): Promise<CreatedApiKey>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=api-keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-keys.d.ts","sourceRoot":"","sources":["../../src/resources/api-keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGzE;;;GAGG;AACH,qBAAa,UAAU;IACT,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,aAAa,CAAC;CAmBxF"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { CreatedApiKeySchema } from './schemas.js';
|
|
2
|
+
/**
|
|
3
|
+
* Explicit API-key management (`/api/v1/api-keys`). Registration does not mint
|
|
4
|
+
* keys — this is the supported way to obtain one (#661).
|
|
5
|
+
*/
|
|
6
|
+
export class ApiKeysApi {
|
|
7
|
+
core;
|
|
8
|
+
constructor(core) {
|
|
9
|
+
this.core = core;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Create a key and return it once. Pass `token` (a JWT from sign-in/registration)
|
|
13
|
+
* to authenticate with a bearer token instead of the client's ambient API key —
|
|
14
|
+
* that is the post-register case, where no key exists yet.
|
|
15
|
+
*/
|
|
16
|
+
create(req, opts = {}) {
|
|
17
|
+
return this.core.request({
|
|
18
|
+
method: 'POST',
|
|
19
|
+
path: '/api/v1/api-keys',
|
|
20
|
+
body: {
|
|
21
|
+
name: req.name,
|
|
22
|
+
keyType: req.keyType ?? 'user',
|
|
23
|
+
...(req.description === undefined ? {} : { description: req.description }),
|
|
24
|
+
...(req.expirationDays === undefined ? {} : { expirationDays: req.expirationDays }),
|
|
25
|
+
},
|
|
26
|
+
schema: CreatedApiKeySchema,
|
|
27
|
+
// A lost response after the server commits would otherwise mint a second live key.
|
|
28
|
+
retries: 0,
|
|
29
|
+
// An explicit bearer token replaces the ambient auth header entirely.
|
|
30
|
+
...(opts.token
|
|
31
|
+
? { headers: { Authorization: `Bearer ${opts.token}` }, anonymous: true }
|
|
32
|
+
: {}),
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=api-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-keys.js","sourceRoot":"","sources":["../../src/resources/api-keys.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD;;;GAGG;AACH,MAAM,OAAO,UAAU;IACQ;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD;;;;OAIG;IACH,MAAM,CAAC,GAAwB,EAAE,OAA2B,EAAE;QAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE;gBACJ,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,MAAM;gBAC9B,GAAG,CAAC,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC;gBAC1E,GAAG,CAAC,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC;aACpF;YACD,MAAM,EAAE,mBAAmB;YAC3B,mFAAmF;YACnF,OAAO,EAAE,CAAC;YACV,sEAAsE;YACtE,GAAG,CAAC,IAAI,CAAC,KAAK;gBACZ,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;gBACzE,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/dist/resources/auth.d.ts
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import type { CoreClient } from '../contracts.js';
|
|
2
|
-
import type { RegisterTenantRequest, RegisterResult, VerifyResult, ValidateKeyResult } from '@knowzai/types';
|
|
2
|
+
import type { RegisterTenantRequest, RegisterResult, LoginTokenResult, VerifyResult, ValidateKeyResult } from '@knowzai/types';
|
|
3
3
|
export declare class AuthApi {
|
|
4
4
|
private readonly core;
|
|
5
5
|
constructor(core: CoreClient);
|
|
6
|
+
/**
|
|
7
|
+
* Create a tenant + owner. The response is NOT assumed to carry an API key —
|
|
8
|
+
* keys are minted explicitly through `POST /api/v1/api-keys` (#661).
|
|
9
|
+
*/
|
|
6
10
|
register(req: RegisterTenantRequest): Promise<RegisterResult>;
|
|
11
|
+
/** Email/password sign-in — returns the bearer token used to create an API key. */
|
|
12
|
+
login(req: {
|
|
13
|
+
usernameOrEmail: string;
|
|
14
|
+
password: string;
|
|
15
|
+
}): Promise<LoginTokenResult>;
|
|
7
16
|
verify(req: {
|
|
8
17
|
tenantId: string;
|
|
9
18
|
apiKey: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/resources/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AAGxB,qBAAa,OAAO;IACN,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,QAAQ,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC;IAU7D,MAAM,CAAC,GAAG,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAUxE,WAAW,CAAC,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;CASjE"}
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/resources/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AAGxB,qBAAa,OAAO;IACN,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC;IAU7D,mFAAmF;IACnF,KAAK,CAAC,GAAG,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAUpF,MAAM,CAAC,GAAG,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAUxE,WAAW,CAAC,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;CASjE"}
|
package/dist/resources/auth.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { RegisterResultSchema, VerifyResultSchema } from './schemas.js';
|
|
1
|
+
import { RegisterResultSchema, LoginTokenResultSchema, VerifyResultSchema } from './schemas.js';
|
|
2
2
|
export class AuthApi {
|
|
3
3
|
core;
|
|
4
4
|
constructor(core) {
|
|
5
5
|
this.core = core;
|
|
6
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* Create a tenant + owner. The response is NOT assumed to carry an API key —
|
|
9
|
+
* keys are minted explicitly through `POST /api/v1/api-keys` (#661).
|
|
10
|
+
*/
|
|
7
11
|
register(req) {
|
|
8
12
|
return this.core.request({
|
|
9
13
|
method: 'POST',
|
|
@@ -13,6 +17,16 @@ export class AuthApi {
|
|
|
13
17
|
anonymous: true,
|
|
14
18
|
});
|
|
15
19
|
}
|
|
20
|
+
/** Email/password sign-in — returns the bearer token used to create an API key. */
|
|
21
|
+
login(req) {
|
|
22
|
+
return this.core.request({
|
|
23
|
+
method: 'POST',
|
|
24
|
+
path: '/api/v1/users/login',
|
|
25
|
+
body: req,
|
|
26
|
+
schema: LoginTokenResultSchema,
|
|
27
|
+
anonymous: true,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
16
30
|
verify(req) {
|
|
17
31
|
return this.core.request({
|
|
18
32
|
method: 'POST',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/resources/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/resources/auth.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEhG,MAAM,OAAO,OAAO;IACW;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD;;;OAGG;IACH,QAAQ,CAAC,GAA0B;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,uBAAuB;YAC7B,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,oBAAoB;YAC5B,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,mFAAmF;IACnF,KAAK,CAAC,GAAkD;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,qBAAqB;YAC3B,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,sBAAsB;YAC9B,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,GAAyC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,qBAAqB;YAC3B,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,kBAAkB;YAC1B,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,GAAuB;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,2BAA2B;YACjC,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,kBAAkB;YAC1B,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import type { CoreClient } from '../contracts.js';
|
|
2
|
+
export interface FederationPeer {
|
|
3
|
+
id: string;
|
|
4
|
+
slug: string;
|
|
5
|
+
displayName: string;
|
|
6
|
+
baseUrl: string;
|
|
7
|
+
transport: number | string;
|
|
8
|
+
isEnabled: boolean;
|
|
9
|
+
allowTombstoneOverride: boolean;
|
|
10
|
+
remoteInstanceFingerprint?: string | null;
|
|
11
|
+
lastTestedAt?: string | null;
|
|
12
|
+
lastTestStatus?: string | null;
|
|
13
|
+
rowVersionToken: string;
|
|
14
|
+
warnPreHotfixPeer: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface FederationVaultLink {
|
|
17
|
+
id: string;
|
|
18
|
+
peerId: string;
|
|
19
|
+
localVaultId: string;
|
|
20
|
+
remoteVaultId: string;
|
|
21
|
+
direction: number | string;
|
|
22
|
+
isActive: boolean;
|
|
23
|
+
lastCursor?: string | null;
|
|
24
|
+
lastSyncedAt?: string | null;
|
|
25
|
+
}
|
|
26
|
+
export interface FederationRunSummary {
|
|
27
|
+
id: string;
|
|
28
|
+
peerId: string;
|
|
29
|
+
direction: number | string;
|
|
30
|
+
vaultLinkId?: string | null;
|
|
31
|
+
startedAt: string;
|
|
32
|
+
completedAt?: string | null;
|
|
33
|
+
status: number | string;
|
|
34
|
+
}
|
|
35
|
+
export interface FederationSyncOptionsInput {
|
|
36
|
+
skipReEnrichment?: boolean;
|
|
37
|
+
maxFileMb?: number;
|
|
38
|
+
since?: string;
|
|
39
|
+
}
|
|
40
|
+
export declare class FederationApi {
|
|
41
|
+
private readonly core;
|
|
42
|
+
constructor(core: CoreClient);
|
|
43
|
+
create(req: {
|
|
44
|
+
slug: string;
|
|
45
|
+
displayName: string;
|
|
46
|
+
baseUrl: string;
|
|
47
|
+
transport: number;
|
|
48
|
+
apiKey: string;
|
|
49
|
+
}): Promise<FederationPeer>;
|
|
50
|
+
list(includeDisabled?: boolean): Promise<FederationPeer[]>;
|
|
51
|
+
get(id: string): Promise<FederationPeer>;
|
|
52
|
+
update(id: string, req: {
|
|
53
|
+
displayName?: string;
|
|
54
|
+
baseUrl?: string;
|
|
55
|
+
isEnabled?: boolean;
|
|
56
|
+
allowTombstoneOverride?: boolean;
|
|
57
|
+
}, ifMatch: string): Promise<FederationPeer>;
|
|
58
|
+
remove(id: string): Promise<void>;
|
|
59
|
+
rotateCredential(id: string, apiKey: string, ifMatch: string): Promise<FederationPeer>;
|
|
60
|
+
test(id: string): Promise<{
|
|
61
|
+
success: boolean;
|
|
62
|
+
[k: string]: unknown;
|
|
63
|
+
}>;
|
|
64
|
+
acceptNewFingerprint(id: string): Promise<FederationPeer>;
|
|
65
|
+
listVaultLinks(id: string): Promise<FederationVaultLink[]>;
|
|
66
|
+
createVaultLink(id: string, req: {
|
|
67
|
+
peerId: string;
|
|
68
|
+
localVaultId: string;
|
|
69
|
+
remoteVaultId: string;
|
|
70
|
+
direction: number;
|
|
71
|
+
}): Promise<FederationVaultLink>;
|
|
72
|
+
deleteVaultLink(id: string, linkId: string): Promise<void>;
|
|
73
|
+
pull(id: string, req: {
|
|
74
|
+
vaultLinkId: string;
|
|
75
|
+
options: FederationSyncOptionsInput;
|
|
76
|
+
}): Promise<{
|
|
77
|
+
runId: string;
|
|
78
|
+
status: number | string;
|
|
79
|
+
}>;
|
|
80
|
+
push(id: string, req: {
|
|
81
|
+
vaultLinkId: string;
|
|
82
|
+
options: FederationSyncOptionsInput;
|
|
83
|
+
}): Promise<{
|
|
84
|
+
runId: string;
|
|
85
|
+
status: number | string;
|
|
86
|
+
}>;
|
|
87
|
+
listRuns(id: string, opts?: {
|
|
88
|
+
cursor?: string;
|
|
89
|
+
limit?: number;
|
|
90
|
+
status?: string;
|
|
91
|
+
}): Promise<{
|
|
92
|
+
items: FederationRunSummary[];
|
|
93
|
+
nextCursor?: string | null;
|
|
94
|
+
}>;
|
|
95
|
+
getRun(id: string, runId: string): Promise<Record<string, unknown>>;
|
|
96
|
+
cancelRun(id: string, runId: string): Promise<void>;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=federation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"federation.d.ts","sourceRoot":"","sources":["../../src/resources/federation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAkBlD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,sBAAsB,EAAE,OAAO,CAAC;IAChC,yBAAyB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AACD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AACD,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AACD,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAuDD,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C,MAAM,CAAC,GAAG,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,cAAc,CAAC;IAI3B,IAAI,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAS1D,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAIxC,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,GAAG,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;KAAE,EACtG,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC;IAW1B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjC,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAWtF,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IASrE,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IASzD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAI1D,eAAe,CACb,EAAE,EAAE,MAAM,EACV,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GACtF,OAAO,CAAC,mBAAmB,CAAC;IAU/B,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1D,IAAI,CACF,EAAE,EAAE,MAAM,EACV,GAAG,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,0BAA0B,CAAA;KAAE,GAChE,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAUtD,IAAI,CACF,EAAE,EAAE,MAAM,EACV,GAAG,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,0BAA0B,CAAA;KAAE,GAChE,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAUtD,QAAQ,CACN,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1D,OAAO,CAAC;QAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IASzE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAQ7D,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAS1D"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* CLI_InstanceTransfer — thin client for the server-to-server federation plane
|
|
4
|
+
* (`FederationController`, `/api/v1/federation/peers`). All responses are
|
|
5
|
+
* enveloped, so the standard `request` leg serves every route.
|
|
6
|
+
*
|
|
7
|
+
* AUTH: the controller is JWT-Bearer-only (Owner/Admin) — the resource itself
|
|
8
|
+
* is auth-agnostic and simply uses whatever header callback the client was
|
|
9
|
+
* built with; `knowz peer` builds a Bearer-token client per invocation (R8).
|
|
10
|
+
*
|
|
11
|
+
* WIRE (R13): JSON bodies use NUMERIC enum values (`transport: 0` KnowzApiKey,
|
|
12
|
+
* `direction: 0|1` Pull/Push — proven interop with the SPA's numeric enums);
|
|
13
|
+
* query params use enum NAMES; `If-Match` carries `rowVersionToken`.
|
|
14
|
+
*/
|
|
15
|
+
const BASE = '/api/v1/federation/peers';
|
|
16
|
+
const enumValue = z.union([z.number(), z.string()]);
|
|
17
|
+
const PeerSchema = z
|
|
18
|
+
.object({
|
|
19
|
+
id: z.string(),
|
|
20
|
+
slug: z.string(),
|
|
21
|
+
displayName: z.string().default(''),
|
|
22
|
+
baseUrl: z.string().default(''),
|
|
23
|
+
transport: enumValue.default(0),
|
|
24
|
+
isEnabled: z.boolean().default(true),
|
|
25
|
+
allowTombstoneOverride: z.boolean().default(false),
|
|
26
|
+
remoteInstanceFingerprint: z.string().nullish(),
|
|
27
|
+
lastTestedAt: z.string().nullish(),
|
|
28
|
+
lastTestStatus: z.string().nullish(),
|
|
29
|
+
rowVersionToken: z.string().default(''),
|
|
30
|
+
warnPreHotfixPeer: z.boolean().default(false),
|
|
31
|
+
})
|
|
32
|
+
.passthrough();
|
|
33
|
+
const VaultLinkSchema = z
|
|
34
|
+
.object({
|
|
35
|
+
id: z.string(),
|
|
36
|
+
peerId: z.string(),
|
|
37
|
+
localVaultId: z.string(),
|
|
38
|
+
remoteVaultId: z.string(),
|
|
39
|
+
direction: enumValue.default(0),
|
|
40
|
+
isActive: z.boolean().default(true),
|
|
41
|
+
lastCursor: z.string().nullish(),
|
|
42
|
+
lastSyncedAt: z.string().nullish(),
|
|
43
|
+
})
|
|
44
|
+
.passthrough();
|
|
45
|
+
const RunSummarySchema = z
|
|
46
|
+
.object({
|
|
47
|
+
id: z.string(),
|
|
48
|
+
peerId: z.string(),
|
|
49
|
+
direction: enumValue.default(0),
|
|
50
|
+
vaultLinkId: z.string().nullish(),
|
|
51
|
+
startedAt: z.string().default(''),
|
|
52
|
+
completedAt: z.string().nullish(),
|
|
53
|
+
status: enumValue.default(''),
|
|
54
|
+
})
|
|
55
|
+
.passthrough();
|
|
56
|
+
const TestResultSchema = z.object({ success: z.boolean() }).passthrough();
|
|
57
|
+
const EnqueueSchema = z.object({ runId: z.string(), status: enumValue.default('') }).passthrough();
|
|
58
|
+
const RunListSchema = z
|
|
59
|
+
.object({ items: z.array(RunSummarySchema).default([]), nextCursor: z.string().nullish() })
|
|
60
|
+
.passthrough();
|
|
61
|
+
/** Mutations are never retried — creating a peer or enqueueing a run twice is a real side effect. */
|
|
62
|
+
const NO_RETRY = 0;
|
|
63
|
+
export class FederationApi {
|
|
64
|
+
core;
|
|
65
|
+
constructor(core) {
|
|
66
|
+
this.core = core;
|
|
67
|
+
}
|
|
68
|
+
create(req) {
|
|
69
|
+
return this.core.request({ method: 'POST', path: BASE, body: req, schema: PeerSchema, retries: NO_RETRY });
|
|
70
|
+
}
|
|
71
|
+
list(includeDisabled) {
|
|
72
|
+
return this.core.request({
|
|
73
|
+
method: 'GET',
|
|
74
|
+
path: BASE,
|
|
75
|
+
query: includeDisabled ? { includeDisabled: true } : undefined,
|
|
76
|
+
schema: z.array(PeerSchema),
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
get(id) {
|
|
80
|
+
return this.core.request({ method: 'GET', path: `${BASE}/${id}`, schema: PeerSchema });
|
|
81
|
+
}
|
|
82
|
+
update(id, req, ifMatch) {
|
|
83
|
+
return this.core.request({
|
|
84
|
+
method: 'PATCH',
|
|
85
|
+
path: `${BASE}/${id}`,
|
|
86
|
+
body: req,
|
|
87
|
+
headers: { 'If-Match': ifMatch },
|
|
88
|
+
schema: PeerSchema,
|
|
89
|
+
retries: NO_RETRY,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
remove(id) {
|
|
93
|
+
return this.core.request({ method: 'DELETE', path: `${BASE}/${id}`, schema: z.void(), retries: NO_RETRY });
|
|
94
|
+
}
|
|
95
|
+
rotateCredential(id, apiKey, ifMatch) {
|
|
96
|
+
return this.core.request({
|
|
97
|
+
method: 'POST',
|
|
98
|
+
path: `${BASE}/${id}/credential/rotate`,
|
|
99
|
+
body: { apiKey },
|
|
100
|
+
headers: { 'If-Match': ifMatch },
|
|
101
|
+
schema: PeerSchema,
|
|
102
|
+
retries: NO_RETRY,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
test(id) {
|
|
106
|
+
return this.core.request({
|
|
107
|
+
method: 'POST',
|
|
108
|
+
path: `${BASE}/${id}/test`,
|
|
109
|
+
schema: TestResultSchema,
|
|
110
|
+
retries: NO_RETRY,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
acceptNewFingerprint(id) {
|
|
114
|
+
return this.core.request({
|
|
115
|
+
method: 'POST',
|
|
116
|
+
path: `${BASE}/${id}/accept-new-fingerprint`,
|
|
117
|
+
schema: PeerSchema,
|
|
118
|
+
retries: NO_RETRY,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
listVaultLinks(id) {
|
|
122
|
+
return this.core.request({ method: 'GET', path: `${BASE}/${id}/vault-links`, schema: z.array(VaultLinkSchema) });
|
|
123
|
+
}
|
|
124
|
+
createVaultLink(id, req) {
|
|
125
|
+
return this.core.request({
|
|
126
|
+
method: 'POST',
|
|
127
|
+
path: `${BASE}/${id}/vault-links`,
|
|
128
|
+
body: req,
|
|
129
|
+
schema: VaultLinkSchema,
|
|
130
|
+
retries: NO_RETRY,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
deleteVaultLink(id, linkId) {
|
|
134
|
+
return this.core.request({
|
|
135
|
+
method: 'DELETE',
|
|
136
|
+
path: `${BASE}/${id}/vault-links/${linkId}`,
|
|
137
|
+
schema: z.void(),
|
|
138
|
+
retries: NO_RETRY,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
pull(id, req) {
|
|
142
|
+
return this.core.request({
|
|
143
|
+
method: 'POST',
|
|
144
|
+
path: `${BASE}/${id}/pull`,
|
|
145
|
+
body: req,
|
|
146
|
+
schema: EnqueueSchema,
|
|
147
|
+
retries: NO_RETRY,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
push(id, req) {
|
|
151
|
+
return this.core.request({
|
|
152
|
+
method: 'POST',
|
|
153
|
+
path: `${BASE}/${id}/push`,
|
|
154
|
+
body: req,
|
|
155
|
+
schema: EnqueueSchema,
|
|
156
|
+
retries: NO_RETRY,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
listRuns(id, opts) {
|
|
160
|
+
return this.core.request({
|
|
161
|
+
method: 'GET',
|
|
162
|
+
path: `${BASE}/${id}/runs`,
|
|
163
|
+
query: { cursor: opts?.cursor, limit: opts?.limit, status: opts?.status },
|
|
164
|
+
schema: RunListSchema,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
getRun(id, runId) {
|
|
168
|
+
return this.core.request({
|
|
169
|
+
method: 'GET',
|
|
170
|
+
path: `${BASE}/${id}/runs/${runId}`,
|
|
171
|
+
schema: z.record(z.unknown()),
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
async cancelRun(id, runId) {
|
|
175
|
+
// 200 `ApiResponse.Ok("Run cancelled")` — data may be null; accept anything.
|
|
176
|
+
await this.core.request({
|
|
177
|
+
method: 'POST',
|
|
178
|
+
path: `${BASE}/${id}/runs/${runId}/cancel`,
|
|
179
|
+
schema: z.unknown(),
|
|
180
|
+
retries: NO_RETRY,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=federation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"federation.js","sourceRoot":"","sources":["../../src/resources/federation.ts"],"names":[],"mappings":"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"}
|