klaaro 0.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Klaaro
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,222 @@
1
+ # klaaro
2
+
3
+ Official TypeScript SDK for the [Klaaro](https://klaaro.ai) API — documents in, structured data out.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install klaaro
9
+ ```
10
+
11
+ Requires Node.js 18+ (uses native `fetch`). No runtime dependencies.
12
+
13
+ ## Quick start
14
+
15
+ ```ts
16
+ import { KlaaroClient } from "klaaro";
17
+
18
+ const klaaro = new KlaaroClient({ apiKey: "sk_your_key_here" });
19
+
20
+ // 1. List datasets
21
+ const { data: datasets } = await klaaro.listDatasets();
22
+ console.log(datasets[0].name); // "Invoices 2026"
23
+
24
+ // 2. Upload a document (file)
25
+ import { readFileSync } from "fs";
26
+ const file = new Blob([readFileSync("invoice.pdf")], { type: "application/pdf" });
27
+ const doc = await klaaro.uploadDocument({
28
+ datasetId: datasets[0].id,
29
+ file,
30
+ filename: "invoice.pdf",
31
+ });
32
+ console.log(doc.id, doc.status); // "b6d2a7f6-..." "queued"
33
+
34
+ // 3. Upload from URL
35
+ const doc2 = await klaaro.uploadDocument({
36
+ datasetId: datasets[0].id,
37
+ url: "https://example.com/invoice.pdf",
38
+ });
39
+
40
+ // 4. Poll until complete
41
+ let document = await klaaro.getDocument(doc.id);
42
+ while (document.status === "queued" || document.status === "processing") {
43
+ await new Promise((r) => setTimeout(r, 3000));
44
+ document = await klaaro.getDocument(doc.id);
45
+ }
46
+
47
+ // 5. Read extracted records (clean values)
48
+ const { records } = await klaaro.getDocumentRecords(document.id);
49
+ console.log(records[0].data); // { vendor_name: "Acme Corp", total: 1234.56, ... }
50
+ ```
51
+
52
+ ## Constructor
53
+
54
+ ```ts
55
+ const klaaro = new KlaaroClient({
56
+ apiKey: "sk_...", // required
57
+ baseUrl: "https://dev.klaaro.ai/api/v1", // optional, defaults to prod
58
+ });
59
+ ```
60
+
61
+ Get your API key from **Team → API keys** in the Klaaro dashboard.
62
+
63
+ ## Authentication
64
+
65
+ All requests send `Authorization: Bearer <apiKey>`. Three scopes control access:
66
+
67
+ | Scope | Unlocks |
68
+ | ------- | --------------------------- |
69
+ | `read` | List and get endpoints |
70
+ | `write` | Upload, create, delete |
71
+ | `export`| Export endpoints |
72
+
73
+ ## Datasets
74
+
75
+ ```ts
76
+ // List (paginated)
77
+ const page = await klaaro.listDatasets({ limit: 20 });
78
+
79
+ // Get one
80
+ const dataset = await klaaro.getDataset("a1b2c3d4-...");
81
+
82
+ // Delete
83
+ await klaaro.deleteDataset("a1b2c3d4-...");
84
+
85
+ // Records (clean extracted values)
86
+ const records = await klaaro.listDatasetRecords("a1b2c3d4-...", {
87
+ class: "invoice",
88
+ approval: "approved",
89
+ limit: 100,
90
+ });
91
+
92
+ // Records with full field metadata (review, validation, evidence)
93
+ const flat = await klaaro.listDatasetRecordsFlat("a1b2c3d4-...");
94
+
95
+ // Classes / schemas
96
+ const classes = await klaaro.listDatasetClasses("a1b2c3d4-...");
97
+ const invoiceClass = await klaaro.getDatasetClass("a1b2c3d4-...", "invoice");
98
+ ```
99
+
100
+ ## Documents
101
+
102
+ ```ts
103
+ // List with filters
104
+ const docs = await klaaro.listDocuments({
105
+ datasetId: "a1b2c3d4-...",
106
+ status: "completed",
107
+ limit: 50,
108
+ });
109
+
110
+ // Upload (idempotent)
111
+ const doc = await klaaro.uploadDocument({
112
+ datasetId: "a1b2c3d4-...",
113
+ file: myBlob,
114
+ filename: "receipt.pdf",
115
+ idempotencyKey: "my-unique-key-001",
116
+ });
117
+
118
+ // Get / delete
119
+ const d = await klaaro.getDocument("b6d2a7f6-...");
120
+ await klaaro.deleteDocument("b6d2a7f6-...");
121
+
122
+ // Records for a specific document
123
+ const { records } = await klaaro.getDocumentRecords("b6d2a7f6-...");
124
+ const { records: flat } = await klaaro.getDocumentRecordsFlat("b6d2a7f6-...", {
125
+ includeUnapproved: true,
126
+ });
127
+ ```
128
+
129
+ ## Records
130
+
131
+ ```ts
132
+ const record = await klaaro.getRecord("2c0c2e50-..."); // clean values
133
+ const flat = await klaaro.getRecordFlat("2c0c2e50-..."); // flat FieldView map
134
+ const nested = await klaaro.getRecordNested("2c0c2e50-..."); // nested FieldView tree
135
+
136
+ const events = await klaaro.listRecordFieldEvents("2c0c2e50-...", { fieldPath: "total" });
137
+ const comments = await klaaro.getRecordComments("2c0c2e50-...");
138
+ const approvals = await klaaro.getRecordApprovals("2c0c2e50-...");
139
+ ```
140
+
141
+ ## Webhooks
142
+
143
+ ```ts
144
+ const hook = await klaaro.createWebhook({
145
+ datasetId: "a1b2c3d4-...",
146
+ url: "https://my.app/hooks/klaaro",
147
+ events: ["document.extraction_completed", "document.failed"],
148
+ });
149
+
150
+ await klaaro.updateWebhook(hook.id, {
151
+ datasetId: "a1b2c3d4-...",
152
+ events: ["document.extraction_completed"],
153
+ });
154
+
155
+ const { secret } = await klaaro.rotateWebhookSecret(hook.id, { datasetId: "a1b2c3d4-..." });
156
+
157
+ await klaaro.deleteWebhook(hook.id, { datasetId: "a1b2c3d4-..." });
158
+ ```
159
+
160
+ ### Webhook signature verification
161
+
162
+ ```ts
163
+ import { createHmac } from "crypto";
164
+
165
+ function verifyWebhook(rawBody: string, sigHeader: string, secret: string): boolean {
166
+ const parts = Object.fromEntries(sigHeader.split(",").map((p) => p.split("=")));
167
+ const timestamp = parts["t"];
168
+ const signature = parts["v1"];
169
+ if (!timestamp || !signature) return false;
170
+ if (Math.abs(Date.now() / 1000 - Number(timestamp)) > 300) return false;
171
+ const expected = createHmac("sha256", secret)
172
+ .update(`${timestamp}.${rawBody}`)
173
+ .digest("hex");
174
+ return expected === signature;
175
+ }
176
+ ```
177
+
178
+ ## Pagination
179
+
180
+ All list methods accept `{ limit, cursor }` and return `{ data, meta: { nextCursor, hasMore } }`.
181
+
182
+ ```ts
183
+ let cursor: string | undefined;
184
+ do {
185
+ const page = await klaaro.listDatasetRecords("a1b2c3d4-...", { cursor, limit: 200 });
186
+ for (const record of page.data) {
187
+ // process
188
+ }
189
+ cursor = page.meta.hasMore ? (page.meta.nextCursor ?? undefined) : undefined;
190
+ } while (cursor);
191
+ ```
192
+
193
+ ## Error handling
194
+
195
+ ```ts
196
+ import { KlaaroApiError } from "klaaro";
197
+
198
+ try {
199
+ await klaaro.getDocument("missing-id");
200
+ } catch (err) {
201
+ if (err instanceof KlaaroApiError) {
202
+ console.error(err.status, err.code, err.message);
203
+ // 404 "document_not_found" "Document not found"
204
+ }
205
+ }
206
+ ```
207
+
208
+ | Code | Status | Meaning |
209
+ | --------------------- | ------ | -------------------------------- |
210
+ | `not_authenticated` | 401 | Missing / invalid API key |
211
+ | `api_key_required` | 401 | Session auth rejected on v1 |
212
+ | `insufficient_scope` | 403 | Key missing required scope |
213
+ | `dataset_not_found` | 404 | Dataset not found or inaccessible|
214
+ | `document_not_found` | 404 | Document not found |
215
+ | `record_not_found` | 404 | Record not found |
216
+ | `validation_error` | 400 | Invalid request parameter |
217
+ | `rate_limited` | 429 | Too many requests |
218
+ | `internal_error` | 500 | Unexpected server error |
219
+
220
+ ## License
221
+
222
+ MIT
@@ -0,0 +1,69 @@
1
+ import type { ApprovalEvent, ApprovalQueueItem, Class, CommentView, CreateWebhookParams, Dataset, Document, DocumentRecordsParams, FieldEvent, ListApprovalQueueParams, ListDocumentsParams, ListFieldEventsParams, ListParams, ListRecordsParams, ListResponse, FlatRecord, RecordClean, RecordNested, UpdateWebhookParams, UploadDocumentParams, Webhook, WebhookScopeParams } from "./types.js";
2
+ export declare const DEFAULT_BASE_URL = "https://klaaro.ai/api/v1";
3
+ export interface KlaaroClientOptions {
4
+ apiKey: string;
5
+ /** Override the base URL (e.g. for dev: "https://dev.klaaro.ai/api/v1"). */
6
+ baseUrl?: string;
7
+ }
8
+ export declare class KlaaroClient {
9
+ private readonly apiKey;
10
+ private readonly baseUrl;
11
+ constructor(options: KlaaroClientOptions);
12
+ private request;
13
+ listDatasets(params?: ListParams): Promise<ListResponse<Dataset>>;
14
+ getDataset(id: string): Promise<Dataset>;
15
+ deleteDataset(id: string): Promise<void>;
16
+ listDatasetRecords(id: string, params?: ListRecordsParams): Promise<ListResponse<RecordClean>>;
17
+ listDatasetRecordsFlat(id: string, params?: ListRecordsParams): Promise<ListResponse<FlatRecord>>;
18
+ listDatasetRecordsNested(id: string, params?: ListRecordsParams): Promise<ListResponse<RecordNested>>;
19
+ listDatasetClasses(id: string): Promise<ListResponse<Class>>;
20
+ getDatasetClass(id: string, classSlug: string): Promise<Class>;
21
+ listApprovalQueue(id: string, params?: ListApprovalQueueParams): Promise<ListResponse<ApprovalQueueItem>>;
22
+ listDocuments(params?: ListDocumentsParams): Promise<ListResponse<Document>>;
23
+ /**
24
+ * Upload a document by file (multipart) or URL (JSON).
25
+ * Provide either `file` (+ optional `filename`) or `url`, not both.
26
+ */
27
+ uploadDocument(params: UploadDocumentParams): Promise<Document>;
28
+ getDocument(id: string): Promise<Document>;
29
+ deleteDocument(id: string): Promise<void>;
30
+ getDocumentRecords(id: string, params?: DocumentRecordsParams): Promise<{
31
+ records: RecordClean[];
32
+ class: {
33
+ slug: string | null;
34
+ name: string | null;
35
+ };
36
+ }>;
37
+ getDocumentRecordsFlat(id: string, params?: DocumentRecordsParams): Promise<{
38
+ records: FlatRecord[];
39
+ class: {
40
+ slug: string | null;
41
+ name: string | null;
42
+ };
43
+ }>;
44
+ getDocumentRecordsNested(id: string, params?: DocumentRecordsParams): Promise<{
45
+ records: RecordNested[];
46
+ class: {
47
+ slug: string | null;
48
+ name: string | null;
49
+ };
50
+ }>;
51
+ getRecord(id: string): Promise<RecordClean>;
52
+ getRecordFlat(id: string): Promise<FlatRecord>;
53
+ getRecordNested(id: string): Promise<RecordNested>;
54
+ listRecordFieldEvents(id: string, params?: ListFieldEventsParams): Promise<ListResponse<FieldEvent>>;
55
+ getRecordComments(id: string): Promise<ListResponse<CommentView>>;
56
+ getRecordApprovals(id: string): Promise<ListResponse<ApprovalEvent>>;
57
+ listWebhooks(params: {
58
+ datasetId: string;
59
+ } & ListParams): Promise<ListResponse<Webhook>>;
60
+ createWebhook(params: CreateWebhookParams): Promise<Webhook>;
61
+ updateWebhook(id: string, params: UpdateWebhookParams): Promise<Webhook>;
62
+ deleteWebhook(id: string, params: WebhookScopeParams): Promise<void>;
63
+ rotateWebhookSecret(id: string, params: WebhookScopeParams): Promise<{
64
+ secret: string;
65
+ }>;
66
+ /** Returns the raw OpenAPI JSON spec. Does not require authentication. */
67
+ getOpenApiSpec(): Promise<unknown>;
68
+ }
69
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js ADDED
@@ -0,0 +1,186 @@
1
+ import { KlaaroApiError } from "./errors.js";
2
+ export const DEFAULT_BASE_URL = "https://klaaro.ai/api/v1";
3
+ export class KlaaroClient {
4
+ apiKey;
5
+ baseUrl;
6
+ constructor(options) {
7
+ if (!options.apiKey)
8
+ throw new Error("KlaaroClient: apiKey is required");
9
+ this.apiKey = options.apiKey;
10
+ this.baseUrl = (options.baseUrl ?? DEFAULT_BASE_URL).replace(/\/$/, "");
11
+ }
12
+ // ---------------------------------------------------------------------------
13
+ // Core request helper
14
+ // ---------------------------------------------------------------------------
15
+ async request(method, path, options = {}) {
16
+ const url = new URL(this.baseUrl + path);
17
+ if (options.params) {
18
+ for (const [k, v] of Object.entries(options.params)) {
19
+ if (v !== undefined)
20
+ url.searchParams.set(k, String(v));
21
+ }
22
+ }
23
+ const headers = {};
24
+ if (!options.noAuth) {
25
+ headers["Authorization"] = `Bearer ${this.apiKey}`;
26
+ }
27
+ if (options.idempotencyKey) {
28
+ headers["Idempotency-Key"] = options.idempotencyKey;
29
+ }
30
+ let bodyInit;
31
+ if (options.form) {
32
+ bodyInit = options.form;
33
+ }
34
+ else if (options.body !== undefined) {
35
+ headers["Content-Type"] = "application/json";
36
+ bodyInit = JSON.stringify(options.body);
37
+ }
38
+ const response = await fetch(url.toString(), {
39
+ method,
40
+ headers,
41
+ body: bodyInit,
42
+ });
43
+ if (response.status === 204) {
44
+ return undefined;
45
+ }
46
+ const json = await response.json();
47
+ if (!response.ok) {
48
+ const err = json.error;
49
+ throw new KlaaroApiError(response.status, {
50
+ code: err?.code ?? "unknown_error",
51
+ message: err?.message ?? `HTTP ${response.status}`,
52
+ param: err?.param,
53
+ requestId: err?.requestId,
54
+ });
55
+ }
56
+ return json;
57
+ }
58
+ // ---------------------------------------------------------------------------
59
+ // Datasets
60
+ // ---------------------------------------------------------------------------
61
+ listDatasets(params) {
62
+ return this.request("GET", "/datasets", { params });
63
+ }
64
+ getDataset(id) {
65
+ return this.request("GET", `/datasets/${id}`);
66
+ }
67
+ deleteDataset(id) {
68
+ return this.request("DELETE", `/datasets/${id}`);
69
+ }
70
+ listDatasetRecords(id, params) {
71
+ return this.request("GET", `/datasets/${id}/records`, { params });
72
+ }
73
+ listDatasetRecordsFlat(id, params) {
74
+ return this.request("GET", `/datasets/${id}/records-flat`, { params });
75
+ }
76
+ listDatasetRecordsNested(id, params) {
77
+ return this.request("GET", `/datasets/${id}/records-nested`, { params });
78
+ }
79
+ listDatasetClasses(id) {
80
+ return this.request("GET", `/datasets/${id}/classes`);
81
+ }
82
+ getDatasetClass(id, classSlug) {
83
+ return this.request("GET", `/datasets/${id}/classes/${encodeURIComponent(classSlug)}`);
84
+ }
85
+ listApprovalQueue(id, params) {
86
+ return this.request("GET", `/datasets/${id}/approval-queue`, { params });
87
+ }
88
+ // ---------------------------------------------------------------------------
89
+ // Documents
90
+ // ---------------------------------------------------------------------------
91
+ listDocuments(params) {
92
+ return this.request("GET", "/documents", { params });
93
+ }
94
+ /**
95
+ * Upload a document by file (multipart) or URL (JSON).
96
+ * Provide either `file` (+ optional `filename`) or `url`, not both.
97
+ */
98
+ uploadDocument(params) {
99
+ const { datasetId, file, filename, url, fixedClass, idempotencyKey, replaceDocumentId } = params;
100
+ if (file) {
101
+ const form = new FormData();
102
+ form.append("datasetId", datasetId);
103
+ form.append("file", file, filename ?? (file instanceof File ? file.name : "upload"));
104
+ if (fixedClass)
105
+ form.append("fixedClassification", fixedClass);
106
+ if (replaceDocumentId)
107
+ form.append("replaceDocumentId", replaceDocumentId);
108
+ return this.request("POST", "/documents", { form, idempotencyKey });
109
+ }
110
+ if (url) {
111
+ return this.request("POST", "/documents", {
112
+ body: { datasetId, url, fixedClass, idempotencyKey, replaceDocumentId },
113
+ idempotencyKey,
114
+ });
115
+ }
116
+ throw new Error("uploadDocument: provide either file or url");
117
+ }
118
+ getDocument(id) {
119
+ return this.request("GET", `/documents/${id}`);
120
+ }
121
+ deleteDocument(id) {
122
+ return this.request("DELETE", `/documents/${id}`);
123
+ }
124
+ getDocumentRecords(id, params) {
125
+ return this.request("GET", `/documents/${id}/records`, {
126
+ params: params?.includeUnapproved !== undefined ? { includeUnapproved: params.includeUnapproved } : undefined,
127
+ });
128
+ }
129
+ getDocumentRecordsFlat(id, params) {
130
+ return this.request("GET", `/documents/${id}/records-flat`, {
131
+ params: params?.includeUnapproved !== undefined ? { includeUnapproved: params.includeUnapproved } : undefined,
132
+ });
133
+ }
134
+ getDocumentRecordsNested(id, params) {
135
+ return this.request("GET", `/documents/${id}/records-nested`, {
136
+ params: params?.includeUnapproved !== undefined ? { includeUnapproved: params.includeUnapproved } : undefined,
137
+ });
138
+ }
139
+ // ---------------------------------------------------------------------------
140
+ // Records
141
+ // ---------------------------------------------------------------------------
142
+ getRecord(id) {
143
+ return this.request("GET", `/records/${id}`);
144
+ }
145
+ getRecordFlat(id) {
146
+ return this.request("GET", `/records-flat/${id}`);
147
+ }
148
+ getRecordNested(id) {
149
+ return this.request("GET", `/records-nested/${id}`);
150
+ }
151
+ listRecordFieldEvents(id, params) {
152
+ return this.request("GET", `/records/${id}/field-events`, { params });
153
+ }
154
+ getRecordComments(id) {
155
+ return this.request("GET", `/records/${id}/comments`);
156
+ }
157
+ getRecordApprovals(id) {
158
+ return this.request("GET", `/records/${id}/approvals`);
159
+ }
160
+ // ---------------------------------------------------------------------------
161
+ // Webhooks
162
+ // ---------------------------------------------------------------------------
163
+ listWebhooks(params) {
164
+ return this.request("GET", "/webhooks", { params });
165
+ }
166
+ createWebhook(params) {
167
+ return this.request("POST", "/webhooks", { body: params });
168
+ }
169
+ updateWebhook(id, params) {
170
+ return this.request("PATCH", `/webhooks/${id}`, { body: params });
171
+ }
172
+ deleteWebhook(id, params) {
173
+ return this.request("DELETE", `/webhooks/${id}`, { body: params });
174
+ }
175
+ rotateWebhookSecret(id, params) {
176
+ return this.request("POST", `/webhooks/${id}/rotate-secret`, { body: params });
177
+ }
178
+ // ---------------------------------------------------------------------------
179
+ // Misc
180
+ // ---------------------------------------------------------------------------
181
+ /** Returns the raw OpenAPI JSON spec. Does not require authentication. */
182
+ getOpenApiSpec() {
183
+ return this.request("GET", "/openapi", { noAuth: true });
184
+ }
185
+ }
186
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface KlaaroErrorBody {
2
+ code: string;
3
+ message: string;
4
+ param?: string;
5
+ requestId?: string;
6
+ }
7
+ export declare class KlaaroApiError extends Error {
8
+ readonly status: number;
9
+ readonly code: string;
10
+ readonly param: string | undefined;
11
+ readonly requestId: string | undefined;
12
+ constructor(status: number, body: KlaaroErrorBody);
13
+ }
14
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE3B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe;CAQlD"}
package/dist/errors.js ADDED
@@ -0,0 +1,15 @@
1
+ export class KlaaroApiError extends Error {
2
+ status;
3
+ code;
4
+ param;
5
+ requestId;
6
+ constructor(status, body) {
7
+ super(body.message);
8
+ this.name = "KlaaroApiError";
9
+ this.status = status;
10
+ this.code = body.code;
11
+ this.param = body.param;
12
+ this.requestId = body.requestId;
13
+ }
14
+ }
15
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,cAAe,SAAQ,KAAK;IAC9B,MAAM,CAAS;IACf,IAAI,CAAS;IACb,KAAK,CAAqB;IAC1B,SAAS,CAAqB;IAEvC,YAAY,MAAc,EAAE,IAAqB;QAC/C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAClC,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ export { KlaaroClient, DEFAULT_BASE_URL } from "./client.js";
2
+ export type { KlaaroClientOptions } from "./client.js";
3
+ export { KlaaroApiError } from "./errors.js";
4
+ export type { KlaaroErrorBody } from "./errors.js";
5
+ export type { ListMeta, ListResponse, ListParams, Dataset, SchemaField, Class, DocumentStatus, DocumentClassRef, PipelineStatus, Document, ListDocumentsParams, UploadDocumentParams, RecordClassRef, FieldAnnotationKind, FieldAnnotationTier, FieldAnnotation, FieldActorKind, FieldActor, FieldReview, FieldValidation, Violation, FieldExtraction, FieldSchemaInfo, FieldScores, FieldView, ApprovalStatus, ApprovalView, QualityView, CommentView, FlatRecord, RecordNested, RecordClean, ListRecordsParams, DocumentRecordsParams, FieldEvent, ListFieldEventsParams, ApprovalEventAction, ApprovalEvent, ApprovalQueueItem, ListApprovalQueueParams, WebhookEvent, Webhook, CreateWebhookParams, UpdateWebhookParams, WebhookScopeParams, } from "./types.js";
6
+ export { WEBHOOK_EVENTS } from "./types.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC7D,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,OAAO,EACP,WAAW,EACX,KAAK,EACL,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,UAAU,EACV,WAAW,EACX,eAAe,EACf,SAAS,EACT,eAAe,EACf,eAAe,EACf,WAAW,EACX,SAAS,EACT,cAAc,EACd,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACZ,OAAO,EACP,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export { KlaaroClient, DEFAULT_BASE_URL } from "./client.js";
2
+ export { KlaaroApiError } from "./errors.js";
3
+ export { WEBHOOK_EVENTS } from "./types.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAiD7C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,299 @@
1
+ export interface ListMeta {
2
+ nextCursor: string | null;
3
+ hasMore: boolean;
4
+ }
5
+ export interface ListResponse<T> {
6
+ data: T[];
7
+ meta: ListMeta;
8
+ }
9
+ export interface ListParams {
10
+ limit?: number;
11
+ cursor?: string;
12
+ }
13
+ export interface Dataset {
14
+ id: string;
15
+ slug: string;
16
+ name: string;
17
+ description: string;
18
+ documentCount: number;
19
+ createdAt: string;
20
+ updatedAt: string;
21
+ }
22
+ export interface SchemaField {
23
+ name: string;
24
+ type: string;
25
+ description?: string;
26
+ required: boolean;
27
+ children?: SchemaField[];
28
+ arrayItemType?: string;
29
+ arrayItemFields?: SchemaField[];
30
+ enumValues?: (string | number)[];
31
+ }
32
+ export interface Class {
33
+ slug: string;
34
+ name: string;
35
+ description: string;
36
+ color: string;
37
+ schemaHash: string;
38
+ classHash: string;
39
+ fields: SchemaField[];
40
+ createdAt?: string;
41
+ updatedAt?: string;
42
+ }
43
+ export type DocumentStatus = "queued" | "processing" | "completed" | "failed" | "cancelled";
44
+ export interface DocumentClassRef {
45
+ slug: string | null;
46
+ name: string | null;
47
+ }
48
+ export interface PipelineStatus {
49
+ lastRunId: string | null;
50
+ lastFinishedAt: string | null;
51
+ fromStep: string | null;
52
+ }
53
+ export interface Document {
54
+ id: string;
55
+ datasetId: string;
56
+ datasetSlug: string;
57
+ filename: string;
58
+ fileType: string;
59
+ fileSize: number;
60
+ status: DocumentStatus;
61
+ currentStep: string;
62
+ class: DocumentClassRef;
63
+ error: string | null;
64
+ ingestSourceDisplay: string | null;
65
+ pipeline: PipelineStatus;
66
+ createdAt: string;
67
+ updatedAt: string;
68
+ }
69
+ export interface ListDocumentsParams extends ListParams {
70
+ datasetId?: string;
71
+ class?: string;
72
+ status?: DocumentStatus;
73
+ createdAfter?: string;
74
+ createdBefore?: string;
75
+ }
76
+ export interface UploadDocumentParams {
77
+ datasetId: string;
78
+ /** File upload (browser File / Node Blob). Mutually exclusive with url. */
79
+ file?: Blob | File;
80
+ /** File name to use (required when file is a raw Blob). */
81
+ filename?: string;
82
+ /** URL to ingest from. Mutually exclusive with file. */
83
+ url?: string;
84
+ fixedClass?: string;
85
+ idempotencyKey?: string;
86
+ replaceDocumentId?: string;
87
+ }
88
+ export interface RecordClassRef {
89
+ slug: string | null;
90
+ name: string | null;
91
+ schemaHash: string | null;
92
+ classHash: string | null;
93
+ }
94
+ export type FieldAnnotationKind = "corrected_unsure" | "confirmed_unsure" | "edited_unflagged" | "reviewed_unchanged";
95
+ export type FieldAnnotationTier = "bronze" | "silver" | "gold";
96
+ export interface FieldAnnotation {
97
+ kind: FieldAnnotationKind;
98
+ tier: FieldAnnotationTier;
99
+ reviewerId: string | null;
100
+ createdAt: string;
101
+ }
102
+ export type FieldActorKind = "user" | "api_key" | "model" | "system";
103
+ export interface FieldActor {
104
+ kind: FieldActorKind;
105
+ id: string | null;
106
+ name: string | null;
107
+ }
108
+ export interface FieldReview {
109
+ latestAnnotation: FieldAnnotation | null;
110
+ isUnsure: boolean;
111
+ openFlagId: string | null;
112
+ commentCount: number;
113
+ eventCount: number;
114
+ lastActor: FieldActor | null;
115
+ lastAt: string | null;
116
+ }
117
+ export interface FieldValidation {
118
+ violations: Violation[];
119
+ hasHard: boolean;
120
+ }
121
+ export interface Violation {
122
+ ruleId: string;
123
+ ruleKind: string;
124
+ severity: "soft" | "hard";
125
+ status: "fail" | "error";
126
+ message: string;
127
+ details?: Record<string, unknown>;
128
+ }
129
+ export interface FieldExtraction {
130
+ evidence: string | null;
131
+ modelUnsure: boolean;
132
+ modelNote: string | null;
133
+ }
134
+ export interface FieldSchemaInfo {
135
+ type: string;
136
+ required: boolean;
137
+ description?: string;
138
+ enumValues?: (string | number)[];
139
+ }
140
+ export interface FieldScores {
141
+ selfConsistency: number | null;
142
+ evidenceCoverage: number | null;
143
+ schemaConformance: number | null;
144
+ judgeScore: number | null;
145
+ truthMatch: boolean | null;
146
+ }
147
+ export interface FieldView {
148
+ path: string;
149
+ fieldRoot: string;
150
+ value: unknown;
151
+ schema: FieldSchemaInfo | null;
152
+ extraction: FieldExtraction;
153
+ review: FieldReview;
154
+ validation: FieldValidation;
155
+ scores?: FieldScores;
156
+ }
157
+ export type ApprovalStatus = "pending" | "approved" | "approved_with_changes" | "rejected";
158
+ export interface ApprovalView {
159
+ status: ApprovalStatus | null;
160
+ triggeredBy: string[];
161
+ }
162
+ export interface QualityView {
163
+ kqs: number | null;
164
+ subScores: {
165
+ null: number | null;
166
+ unsure: number | null;
167
+ validation: number | null;
168
+ selfConsistency: number | null;
169
+ judge: number | null;
170
+ } | null;
171
+ truthScore: number | null;
172
+ schemaHash: string | null;
173
+ computedAt: string | null;
174
+ }
175
+ export interface CommentView {
176
+ id: string;
177
+ body: string;
178
+ author: {
179
+ kind: "user" | "api_key";
180
+ id: string | null;
181
+ name: string | null;
182
+ };
183
+ createdAt: string;
184
+ }
185
+ /** Flat FieldView record (records / records-flat endpoints). */
186
+ export interface FlatRecord {
187
+ id: string;
188
+ documentId: string;
189
+ datasetId: string;
190
+ datasetSlug: string;
191
+ rowIndex: number;
192
+ class: RecordClassRef;
193
+ sourcePage: number | null;
194
+ createdAt: string;
195
+ updatedAt: string;
196
+ approval: ApprovalView | null;
197
+ quality?: QualityView;
198
+ fields: {
199
+ [path: string]: FieldView;
200
+ };
201
+ crossField: {
202
+ validation: FieldValidation;
203
+ };
204
+ comments: {
205
+ count: number;
206
+ preview: CommentView[];
207
+ };
208
+ }
209
+ /** Nested record (records-nested endpoints). */
210
+ export interface RecordNested extends Omit<FlatRecord, "fields"> {
211
+ data: unknown;
212
+ }
213
+ /** Clean extracted values only (no FieldView wrappers). */
214
+ export interface RecordClean {
215
+ id: string;
216
+ documentId: string;
217
+ class: RecordClassRef;
218
+ data: {
219
+ [key: string]: unknown;
220
+ };
221
+ }
222
+ export interface ListRecordsParams extends ListParams {
223
+ class?: string;
224
+ approval?: ApprovalStatus;
225
+ createdAfter?: string;
226
+ createdBefore?: string;
227
+ }
228
+ export interface DocumentRecordsParams {
229
+ includeUnapproved?: boolean;
230
+ }
231
+ export interface FieldEvent {
232
+ id: string;
233
+ fieldPath: string;
234
+ kind: string;
235
+ body?: string;
236
+ priorValue?: unknown;
237
+ newValue?: unknown;
238
+ actor: FieldActor;
239
+ createdAt: string;
240
+ }
241
+ export interface ListFieldEventsParams extends ListParams {
242
+ fieldPath?: string;
243
+ kinds?: string;
244
+ }
245
+ export type ApprovalEventAction = "created_pending" | "auto_approved" | "approved" | "approved_with_changes" | "rejected" | "reset_to_pending";
246
+ export interface ApprovalEvent {
247
+ id: string;
248
+ action: ApprovalEventAction;
249
+ actor: {
250
+ kind: "user" | "api_key" | "system";
251
+ id: string | null;
252
+ name: string | null;
253
+ };
254
+ comment: string | null;
255
+ createdAt: string;
256
+ }
257
+ export interface ApprovalQueueItem {
258
+ recordId: string;
259
+ documentId: string;
260
+ documentFilename: string;
261
+ classification: string | null;
262
+ status: ApprovalStatus;
263
+ triggeredBy: string[];
264
+ assignedReviewerId: string | null;
265
+ createdAt: string;
266
+ updatedAt: string;
267
+ }
268
+ export interface ListApprovalQueueParams extends ListParams {
269
+ status?: ApprovalStatus;
270
+ }
271
+ export declare const WEBHOOK_EVENTS: readonly ["document.ocr_completed", "document.extraction_completed", "document.failed", "document.uploaded", "record.updated", "record.approved", "evaluation.completed"];
272
+ export type WebhookEvent = (typeof WEBHOOK_EVENTS)[number];
273
+ export interface Webhook {
274
+ id: string;
275
+ url: string;
276
+ events: WebhookEvent[];
277
+ description: string | null;
278
+ secretLast4: string | null;
279
+ lastDeliveryAt: string | null;
280
+ lastStatus: string | null;
281
+ createdAt: string;
282
+ updatedAt: string;
283
+ }
284
+ export interface CreateWebhookParams {
285
+ datasetId: string;
286
+ url: string;
287
+ events: WebhookEvent[];
288
+ description?: string;
289
+ }
290
+ export interface UpdateWebhookParams {
291
+ datasetId: string;
292
+ url?: string;
293
+ events?: WebhookEvent[];
294
+ description?: string | null;
295
+ }
296
+ export interface WebhookScopeParams {
297
+ datasetId: string;
298
+ }
299
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,16 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Shared
3
+ // ---------------------------------------------------------------------------
4
+ // ---------------------------------------------------------------------------
5
+ // Webhook
6
+ // ---------------------------------------------------------------------------
7
+ export const WEBHOOK_EVENTS = [
8
+ "document.ocr_completed",
9
+ "document.extraction_completed",
10
+ "document.failed",
11
+ "document.uploaded",
12
+ "record.updated",
13
+ "record.approved",
14
+ "evaluation.completed",
15
+ ];
16
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AA6U9E,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,wBAAwB;IACxB,+BAA+B;IAC/B,iBAAiB;IACjB,mBAAmB;IACnB,gBAAgB;IAChB,iBAAiB;IACjB,sBAAsB;CACd,CAAC"}
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "klaaro",
3
+ "version": "0.1.0",
4
+ "description": "Official TypeScript SDK for the Klaaro API",
5
+ "homepage": "https://klaaro.ai",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/klaaro-ai/klaaro-ts.git"
9
+ },
10
+ "bugs": {
11
+ "url": "https://github.com/klaaro-ai/klaaro-ts/issues"
12
+ },
13
+ "type": "module",
14
+ "main": "./dist/index.js",
15
+ "types": "./dist/index.d.ts",
16
+ "exports": {
17
+ ".": {
18
+ "import": "./dist/index.js",
19
+ "types": "./dist/index.d.ts"
20
+ }
21
+ },
22
+ "files": ["dist"],
23
+ "scripts": {
24
+ "build": "tsc",
25
+ "test": "vitest run",
26
+ "test:watch": "vitest",
27
+ "prepublishOnly": "npm run build"
28
+ },
29
+ "license": "MIT",
30
+ "engines": {
31
+ "node": ">=18"
32
+ },
33
+ "publishConfig": {
34
+ "access": "public"
35
+ },
36
+ "devDependencies": {
37
+ "typescript": "^5.4.5",
38
+ "vitest": "^3.0.0"
39
+ }
40
+ }