@okrapdf/runtime 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/README.md CHANGED
@@ -1,34 +1,105 @@
1
1
  # @okrapdf/runtime
2
2
 
3
- Minimal OkraPDF runtime client:
3
+ Upload a PDF, get an API. That URL has REST endpoints for pages, entities, search, AI completion, SQL queries, and analytics.
4
4
 
5
- - `upload()`
6
- - `status()`
7
- - `wait()`
8
- - `structuredOutput()`
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install @okrapdf/runtime
9
+ ```
10
+
11
+ ## Quick Start
9
12
 
10
13
  ```ts
11
14
  import { OkraPDF } from '@okrapdf/runtime';
12
15
  import { z } from 'zod';
13
16
 
14
- const okra = new OkraPDF({
15
- baseUrl: 'https://agent-session.steventsao.workers.dev',
16
- apiKey: process.env.OKRA_API_KEY,
17
- });
17
+ const okra = new OkraPDF({ apiKey: process.env.OKRA_API_KEY });
18
18
 
19
- const doc = await okra.upload('https://example.com/invoice.pdf');
19
+ // Upload
20
+ const doc = await okra.upload('./report.pdf');
20
21
  await okra.wait(doc.id);
21
22
 
22
- const InvoiceSchema = z.object({
23
+ // Read pages
24
+ const pages = await okra.pages(doc.id);
25
+
26
+ // Ask questions
27
+ const answer = await okra.ask(doc.id, 'What was Q3 revenue?');
28
+
29
+ // Structured output — pass a Zod schema, get typed data
30
+ const Invoice = z.object({
23
31
  vendor: z.string(),
24
- invoiceNumber: z.string(),
25
32
  total: z.number(),
33
+ lineItems: z.array(z.object({
34
+ description: z.string(),
35
+ amount: z.number(),
36
+ })),
26
37
  });
27
38
 
28
- const result = await okra.structuredOutput(doc.id, InvoiceSchema, {
39
+ const result = await okra.structuredOutput(doc.id, Invoice, {
29
40
  query: 'Extract invoice fields',
30
41
  });
42
+ console.log(result.data.vendor); // fully typed
43
+ ```
44
+
45
+ ## URL Builder
46
+
47
+ Cloudinary for documents — every property is a CDN-cacheable URL.
48
+
49
+ ```tsx
50
+ import { okraPdf } from '@okrapdf/runtime';
51
+
52
+ const doc = okraPdf('doc_7fK3x');
53
+
54
+ <Image src={doc.thumbnail.url()} alt="Report cover" />
55
+ <Image src={doc.pages[3].image.url()} />
56
+ <a href={doc.entities.tables[0].url({ format: 'csv' })}>Download CSV</a>
57
+ ```
58
+
59
+ ## Provider Abstraction
60
+
61
+ AI SDK-style vendor switching:
62
+
63
+ ```ts
64
+ import { createOkra } from '@okrapdf/runtime';
65
+
66
+ const okra = createOkra({
67
+ apiKey: 'okra_...',
68
+ providers: { azureDocAI, llamaparse },
69
+ extraction: { ocr: 'azureDocAI', enhance: 'llamaparse' },
70
+ });
71
+ ```
72
+
73
+ ## Agent Sandbox
74
+
75
+ Scope tool access to specific documents:
76
+
77
+ ```ts
78
+ const tools = okra.sandbox({
79
+ docs: [doc1.id, doc2.id],
80
+ capabilities: ['read', 'query'],
81
+ });
82
+
83
+ // MCP-compatible
84
+ const mcpTools = tools.asMcp();
85
+ ```
86
+
87
+ ## Streaming Completion
88
+
89
+ ```ts
90
+ for await (const event of okra.complete(doc.id, 'Summarize this document')) {
91
+ if (event.type === 'text_delta') process.stdout.write(event.text);
92
+ if (event.type === 'done') console.log('\nCost:', event.costUsd);
93
+ }
94
+ ```
95
+
96
+ ## Self-Host
97
+
98
+ ```ts
99
+ // worker.ts
100
+ import { handleRequest } from '@okrapdf/runtime/worker';
31
101
 
32
- console.log(result.data.vendor);
102
+ export default { fetch: handleRequest(env) };
33
103
  ```
34
104
 
105
+ Same SDK, same code. Only `baseUrl` changes.
package/dist/client.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { DocumentStatus, OkraPDFOptions, StructuredOutputOptions, StructuredOutputResult, StructuredSchema, UploadOptions, UploadResult, WaitOptions } from './types.js';
1
+ import type { AskResult, CompletionEvent, CompletionOptions, DocumentStatus, EntitiesResponse, OkraPDFOptions, Page, QueryResult, Sandbox, SandboxOptions, StructuredOutputOptions, StructuredOutputResult, StructuredSchema, UploadOptions, UploadResult, WaitOptions, AnalyticsResult } from './types.js';
2
2
  export declare class OkraPDF {
3
3
  private readonly baseUrl;
4
4
  private readonly apiKey?;
@@ -8,9 +8,29 @@ export declare class OkraPDF {
8
8
  upload(input: string | ArrayBuffer | Uint8Array, options?: UploadOptions): Promise<UploadResult>;
9
9
  status(documentId: string, signal?: AbortSignal): Promise<DocumentStatus>;
10
10
  wait(documentId: string, options?: WaitOptions): Promise<DocumentStatus>;
11
- structuredOutput<T>(documentId: string, schema: StructuredSchema<T>, options: StructuredOutputOptions): Promise<StructuredOutputResult<T>>;
12
- structuredOutputMany<T>(documentIds: string[], schema: StructuredSchema<T>, options: StructuredOutputOptions): Promise<Array<StructuredOutputResult<T>>>;
11
+ pages(documentId: string, options?: {
12
+ range?: string;
13
+ signal?: AbortSignal;
14
+ }): Promise<Page[]>;
15
+ page(documentId: string, pageNumber: number, signal?: AbortSignal): Promise<Page>;
16
+ entities(documentId: string, options?: {
17
+ type?: string;
18
+ limit?: number;
19
+ offset?: number;
20
+ signal?: AbortSignal;
21
+ }): Promise<EntitiesResponse>;
22
+ query(documentId: string, sql: string, signal?: AbortSignal): Promise<QueryResult>;
23
+ complete(documentId: string, query: string, options?: CompletionOptions): AsyncGenerator<CompletionEvent>;
24
+ ask(documentId: string | string[], query: string, signal?: AbortSignal): Promise<AskResult>;
25
+ structuredOutput<T>(documentId: string | string[], schema: StructuredSchema<T>, options: StructuredOutputOptions): Promise<StructuredOutputResult<T> | Array<StructuredOutputResult<T>>>;
26
+ private structuredOutputSingle;
27
+ analytics(documentId: string, options?: {
28
+ period?: string;
29
+ signal?: AbortSignal;
30
+ }): Promise<AnalyticsResult>;
31
+ sandbox(options: SandboxOptions): Sandbox;
13
32
  private authHeaders;
33
+ private rawRequest;
14
34
  private requestJson;
15
35
  private parseBody;
16
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,cAAc,EAEd,cAAc,EAGd,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,WAAW,EACZ,MAAM,YAAY,CAAC;AA6EpB,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;gBAExC,OAAO,EAAE,cAAc;IAe7B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAkDpG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IAOzE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,cAAc,CAAC;IAmC5E,gBAAgB,CAAC,CAAC,EACtB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC3B,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAoC/B,oBAAoB,CAAC,CAAC,EAC1B,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC3B,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;IAI5C,OAAO,CAAC,WAAW;YAML,WAAW;IA4CzB,OAAO,CAAC,SAAS;CASlB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAEhB,cAAc,EACd,IAAI,EACJ,WAAW,EAEX,OAAO,EACP,cAAc,EAGd,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,WAAW,EACX,eAAe,EAChB,MAAM,YAAY,CAAC;AA6EpB,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;gBAExC,OAAO,EAAE,cAAc;IAiB7B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAoDpG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IAOzE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,cAAc,CAAC;IAqC5E,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAQ9F,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IASjF,QAAQ,CACZ,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACjF,OAAO,CAAC,gBAAgB,CAAC;IActB,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IASjF,QAAQ,CACb,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,iBAAiB,GAC1B,cAAc,CAAC,eAAe,CAAC;IA2D5B,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IAsC3F,gBAAgB,CAAC,CAAC,EACtB,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,EAC7B,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC3B,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;YAO1D,sBAAsB;IA0C9B,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAUlH,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO;IA2FzC,OAAO,CAAC,WAAW;YAML,UAAU;YAiBV,WAAW;IA6BzB,OAAO,CAAC,SAAS;CASlB"}
package/dist/client.js CHANGED
@@ -62,6 +62,7 @@ export class OkraPDF {
62
62
  throw new OkraRuntimeError('UNAUTHORIZED', 'OkraPDF requires either apiKey or sharedSecret', 401);
63
63
  }
64
64
  }
65
+ // ─── Upload ──────────────────────────────────────────────────────────────
65
66
  async upload(input, options = {}) {
66
67
  const documentId = options.documentId || makeDocId();
67
68
  const path = `/document/${encodeURIComponent(documentId)}`;
@@ -76,7 +77,7 @@ export class OkraPDF {
76
77
  });
77
78
  return {
78
79
  id: documentId,
79
- url: `${this.baseUrl}${path}`,
80
+ url: `${this.baseUrl}/v1/documents/${encodeURIComponent(documentId)}`,
80
81
  status: response.phase || 'uploading',
81
82
  };
82
83
  }
@@ -104,10 +105,11 @@ export class OkraPDF {
104
105
  });
105
106
  return {
106
107
  id: documentId,
107
- url: `${this.baseUrl}${path}`,
108
+ url: `${this.baseUrl}/v1/documents/${encodeURIComponent(documentId)}`,
108
109
  status: response.phase || 'uploading',
109
110
  };
110
111
  }
112
+ // ─── Status / Wait ───────────────────────────────────────────────────────
111
113
  async status(documentId, signal) {
112
114
  return this.requestJson(`/document/${encodeURIComponent(documentId)}/status`, { method: 'GET', signal });
113
115
  }
@@ -132,7 +134,119 @@ export class OkraPDF {
132
134
  await sleep(pollIntervalMs);
133
135
  }
134
136
  }
137
+ // ─── Pages ───────────────────────────────────────────────────────────────
138
+ async pages(documentId, options) {
139
+ const params = options?.range ? `?range=${encodeURIComponent(options.range)}` : '';
140
+ return this.requestJson(`/document/${encodeURIComponent(documentId)}/pages${params}`, { method: 'GET', signal: options?.signal });
141
+ }
142
+ async page(documentId, pageNumber, signal) {
143
+ return this.requestJson(`/document/${encodeURIComponent(documentId)}/page/${pageNumber}`, { method: 'GET', signal });
144
+ }
145
+ // ─── Entities ────────────────────────────────────────────────────────────
146
+ async entities(documentId, options) {
147
+ const params = new URLSearchParams();
148
+ if (options?.type)
149
+ params.set('type', options.type);
150
+ if (options?.limit)
151
+ params.set('limit', String(options.limit));
152
+ if (options?.offset)
153
+ params.set('offset', String(options.offset));
154
+ const qs = params.toString();
155
+ return this.requestJson(`/document/${encodeURIComponent(documentId)}/nodes${qs ? `?${qs}` : ''}`, { method: 'GET', signal: options?.signal });
156
+ }
157
+ // ─── Query (SQL) ─────────────────────────────────────────────────────────
158
+ async query(documentId, sql, signal) {
159
+ return this.requestJson(`/document/${encodeURIComponent(documentId)}/query?sql=${encodeURIComponent(sql)}`, { method: 'GET', signal });
160
+ }
161
+ // ─── Completion (streaming) ──────────────────────────────────────────────
162
+ async *complete(documentId, query, options) {
163
+ const response = await this.rawRequest(`/document/${encodeURIComponent(documentId)}/completion`, {
164
+ method: 'POST',
165
+ headers: { 'Content-Type': 'application/json' },
166
+ body: JSON.stringify({ query, stream: options?.stream !== false }),
167
+ signal: options?.signal,
168
+ });
169
+ if (!response.ok) {
170
+ const text = await response.text();
171
+ throw new OkraRuntimeError('HTTP_ERROR', `Completion failed: ${text}`, response.status);
172
+ }
173
+ if (!response.body) {
174
+ throw new OkraRuntimeError('INVALID_RESPONSE', 'No response body for completion stream', 500);
175
+ }
176
+ const reader = response.body.getReader();
177
+ const decoder = new TextDecoder();
178
+ let buffer = '';
179
+ try {
180
+ while (true) {
181
+ const { done, value } = await reader.read();
182
+ if (done)
183
+ break;
184
+ buffer += decoder.decode(value, { stream: true });
185
+ const lines = buffer.split('\n');
186
+ buffer = lines.pop() || '';
187
+ for (const line of lines) {
188
+ const trimmed = line.trim();
189
+ if (!trimmed)
190
+ continue;
191
+ try {
192
+ yield JSON.parse(trimmed);
193
+ }
194
+ catch {
195
+ // skip malformed lines
196
+ }
197
+ }
198
+ }
199
+ // flush remaining buffer
200
+ if (buffer.trim()) {
201
+ try {
202
+ yield JSON.parse(buffer.trim());
203
+ }
204
+ catch {
205
+ // skip
206
+ }
207
+ }
208
+ }
209
+ finally {
210
+ reader.releaseLock();
211
+ }
212
+ }
213
+ // ─── Ask (non-streaming convenience) ─────────────────────────────────────
214
+ async ask(documentId, query, signal) {
215
+ if (Array.isArray(documentId)) {
216
+ return this.requestJson('/v1/completion', {
217
+ method: 'POST',
218
+ headers: { 'Content-Type': 'application/json' },
219
+ body: JSON.stringify({ documents: documentId, query, stream: false }),
220
+ signal,
221
+ });
222
+ }
223
+ const events = [];
224
+ for await (const event of this.complete(documentId, query, { stream: true, signal })) {
225
+ events.push(event);
226
+ }
227
+ const doneEvent = events.find((e) => e.type === 'done');
228
+ if (doneEvent && doneEvent.type === 'done') {
229
+ return {
230
+ answer: doneEvent.answer,
231
+ sources: doneEvent.sources,
232
+ costUsd: doneEvent.costUsd,
233
+ };
234
+ }
235
+ // fallback: concat text deltas
236
+ const text = events
237
+ .filter((e) => e.type === 'text_delta')
238
+ .map((e) => e.text)
239
+ .join('');
240
+ return { answer: text };
241
+ }
242
+ // ─── Structured Output ───────────────────────────────────────────────────
135
243
  async structuredOutput(documentId, schema, options) {
244
+ if (Array.isArray(documentId)) {
245
+ return Promise.all(documentId.map((id) => this.structuredOutputSingle(id, schema, options)));
246
+ }
247
+ return this.structuredOutputSingle(documentId, schema, options);
248
+ }
249
+ async structuredOutputSingle(documentId, schema, options) {
136
250
  if (!options?.query || options.query.trim() === '') {
137
251
  throw new OkraRuntimeError('INVALID_REQUEST', 'structuredOutput requires a non-empty query', 400);
138
252
  }
@@ -156,9 +270,101 @@ export class OkraPDF {
156
270
  }
157
271
  return body;
158
272
  }
159
- async structuredOutputMany(documentIds, schema, options) {
160
- return Promise.all(documentIds.map((id) => this.structuredOutput(id, schema, options)));
273
+ // ─── Analytics ───────────────────────────────────────────────────────────
274
+ async analytics(documentId, options) {
275
+ const params = options?.period ? `?period=${encodeURIComponent(options.period)}` : '';
276
+ return this.requestJson(`/document/${encodeURIComponent(documentId)}/analytics${params}`, { method: 'GET', signal: options?.signal });
277
+ }
278
+ // ─── Sandbox ─────────────────────────────────────────────────────────────
279
+ sandbox(options) {
280
+ const capabilities = options.capabilities || ['read', 'query'];
281
+ const tools = [];
282
+ if (capabilities.includes('read')) {
283
+ tools.push({
284
+ name: 'get_pages',
285
+ description: `Read page content from documents: ${options.docs.join(', ')}`,
286
+ parameters: {
287
+ type: 'object',
288
+ properties: {
289
+ document_id: { type: 'string', enum: options.docs },
290
+ page_number: { type: 'number' },
291
+ },
292
+ required: ['document_id'],
293
+ },
294
+ execute: async (args) => {
295
+ const docId = args.document_id;
296
+ if (!options.docs.includes(docId))
297
+ throw new Error(`Document ${docId} not in sandbox scope`);
298
+ if (args.page_number)
299
+ return this.page(docId, args.page_number);
300
+ return this.pages(docId);
301
+ },
302
+ });
303
+ tools.push({
304
+ name: 'get_entities',
305
+ description: `Get extracted entities (tables, figures, etc.) from documents: ${options.docs.join(', ')}`,
306
+ parameters: {
307
+ type: 'object',
308
+ properties: {
309
+ document_id: { type: 'string', enum: options.docs },
310
+ type: { type: 'string', enum: ['table', 'figure', 'footnote', 'summary', 'signature'] },
311
+ },
312
+ required: ['document_id'],
313
+ },
314
+ execute: async (args) => {
315
+ const docId = args.document_id;
316
+ if (!options.docs.includes(docId))
317
+ throw new Error(`Document ${docId} not in sandbox scope`);
318
+ return this.entities(docId, { type: args.type });
319
+ },
320
+ });
321
+ }
322
+ if (capabilities.includes('query')) {
323
+ tools.push({
324
+ name: 'query_sql',
325
+ description: `Run read-only SQL queries against document data: ${options.docs.join(', ')}`,
326
+ parameters: {
327
+ type: 'object',
328
+ properties: {
329
+ document_id: { type: 'string', enum: options.docs },
330
+ sql: { type: 'string' },
331
+ },
332
+ required: ['document_id', 'sql'],
333
+ },
334
+ execute: async (args) => {
335
+ const docId = args.document_id;
336
+ if (!options.docs.includes(docId))
337
+ throw new Error(`Document ${docId} not in sandbox scope`);
338
+ return this.query(docId, args.sql);
339
+ },
340
+ });
341
+ }
342
+ if (capabilities.includes('complete')) {
343
+ tools.push({
344
+ name: 'ask_document',
345
+ description: `Ask a natural-language question about documents: ${options.docs.join(', ')}`,
346
+ parameters: {
347
+ type: 'object',
348
+ properties: {
349
+ document_id: { type: 'string', enum: options.docs },
350
+ question: { type: 'string' },
351
+ },
352
+ required: ['document_id', 'question'],
353
+ },
354
+ execute: async (args) => {
355
+ const docId = args.document_id;
356
+ if (!options.docs.includes(docId))
357
+ throw new Error(`Document ${docId} not in sandbox scope`);
358
+ return this.ask(docId, args.question);
359
+ },
360
+ });
361
+ }
362
+ return {
363
+ tools,
364
+ asMcp: () => tools,
365
+ };
161
366
  }
367
+ // ─── Internal HTTP ───────────────────────────────────────────────────────
162
368
  authHeaders() {
163
369
  if (this.apiKey)
164
370
  return { Authorization: `Bearer ${this.apiKey}` };
@@ -166,19 +372,21 @@ export class OkraPDF {
166
372
  return { 'x-document-agent-secret': this.sharedSecret };
167
373
  return {};
168
374
  }
169
- async requestJson(path, init) {
375
+ async rawRequest(path, init) {
170
376
  const headers = new Headers(init.headers);
171
377
  for (const [key, value] of Object.entries(this.authHeaders())) {
172
378
  if (!headers.has(key))
173
379
  headers.set(key, value);
174
380
  }
175
- let response;
176
381
  try {
177
- response = await this.fetchImpl(`${this.baseUrl}${path}`, { ...init, headers });
382
+ return await this.fetchImpl(`${this.baseUrl}${path}`, { ...init, headers });
178
383
  }
179
384
  catch (err) {
180
385
  throw new OkraRuntimeError('HTTP_ERROR', err instanceof Error ? err.message : String(err), 502);
181
386
  }
387
+ }
388
+ async requestJson(path, init) {
389
+ const response = await this.rawRequest(path, init);
182
390
  const text = await response.text();
183
391
  const parsed = this.parseBody(text);
184
392
  if (!response.ok) {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,CAAC,EAAgB,MAAM,KAAK,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAetE,MAAM,gBAAgB,GAAG,yBAAyB,CAAC;AACnD,MAAM,uBAAuB,GAAG,CAAC,GAAG,MAAM,CAAC;AAC3C,MAAM,oBAAoB,GAAG,KAAK,CAAC;AACnC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC;AACjE,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACjD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAA4B;IAC1D,0BAA0B;IAC1B,mBAAmB;IACnB,SAAS;IACT,oBAAoB;CACrB,CAAC,CAAC;AAEH,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,SAAS;IAChB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QAC7E,OAAO,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IACrE,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACrD,OAAO,OAAO,IAAI,EAAE,CAAC;AACvB,CAAC;AAED,SAAS,YAAY,CAAC,KAA+B;IACnD,IAAI,KAAK,YAAY,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9C,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAwBD,SAAS,eAAe,CAAI,MAA2B;IACrD,MAAM,QAAQ,GAAG,MAAoB,CAAC;IACtC,MAAM,YAAY,GAAG,OAAQ,QAAoC,CAAC,SAAS,KAAK,UAAU,CAAC;IAC3F,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO;YACL,UAAU,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAe;YAC/E,MAAM,EAAE,QAAQ;SACjB,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,MAAoB,EAAE,CAAC;AAC9C,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAwB;IAChD,OAAO,CAAC,CAAC,IAAI,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAiC,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,OAAO,OAAO;IACD,OAAO,CAAS;IAChB,MAAM,CAAU;IAChB,YAAY,CAAU;IACtB,SAAS,CAA0B;IAEpD,YAAY,OAAuB;QACjC,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvC,MAAM,IAAI,gBAAgB,CACxB,cAAc,EACd,gDAAgD,EAChD,GAAG,CACJ,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAwC,EAAE,UAAyB,EAAE;QAChF,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,SAAS,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,aAAa,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;QAE3D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAqB,GAAG,IAAI,aAAa,EAAE;gBAChF,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,GAAG,EAAE,KAAK;oBACV,YAAY,EAAE,OAAO,CAAC,YAAY;iBACnC,CAAC;aACH,CAAC,CAAC;YACH,OAAO;gBACL,EAAE,EAAE,UAAU;gBACd,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE;gBAC7B,MAAM,EAAE,QAAQ,CAAC,KAAK,IAAI,WAAW;aACtC,CAAC;QACJ,CAAC;QAED,IAAI,KAAiB,CAAC;QACtB,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,cAAc,CAAC;QAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,QAAQ;gBAAE,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,iBAAiB;YACjC,aAAa,EAAE,QAAQ;SACxB,CAAC;QACF,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAqB,GAAG,IAAI,SAAS,EAAE;YAC5E,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QAEH,OAAO;YACL,EAAE,EAAE,UAAU;YACd,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE;YAC7B,MAAM,EAAE,QAAQ,CAAC,KAAK,IAAI,WAAW;SACtC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAE,MAAoB;QACnD,OAAO,IAAI,CAAC,WAAW,CACrB,aAAa,kBAAkB,CAAC,UAAU,CAAC,SAAS,EACpD,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAC1B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,UAAkB,EAAE,UAAuB,EAAE;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,uBAAuB,CAAC;QAC/D,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,oBAAoB,CAAC;QAEtE,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBAC5B,MAAM,IAAI,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;YAC7D,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAC9D,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO,OAAO,CAAC;YACvD,IAAI,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7C,MAAM,IAAI,gBAAgB,CACxB,mBAAmB,EACnB,0CAA0C,OAAO,CAAC,KAAK,GAAG,EAC1D,GAAG,EACH,OAAO,CACR,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACvC,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,gBAAgB,CACxB,SAAS,EACT,kCAAkC,UAAU,UAAU,SAAS,IAAI,EACnE,GAAG,EACH,OAAO,CACR,CAAC;YACJ,CAAC;YAED,MAAM,KAAK,CAAC,cAAc,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,UAAkB,EAClB,MAA2B,EAC3B,OAAgC;QAEhC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACnD,MAAM,IAAI,gBAAgB,CAAC,iBAAiB,EAAE,6CAA6C,EAAE,GAAG,CAAC,CAAC;QACpG,CAAC;QAED,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CACjC,aAAa,kBAAkB,CAAC,UAAU,CAAC,oBAAoB,EAC/D;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,UAAU,CAAC,UAAU;gBAC7B,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/D,CAAC;YACF,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CACF,CAAC;QAEF,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,IAAI,qBAAqB,CAC7B,0BAA0B,EAC1B,qEAAqE,EACrE,GAAG,EACH,MAAM,CAAC,KAAK,CAAC,MAAM,CACpB,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAChD,CAAC;QAED,OAAO,IAAiC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,WAAqB,EACrB,MAA2B,EAC3B,OAAgC;QAEhC,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAI,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,EAAE,yBAAyB,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/E,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,KAAK,CAAC,WAAW,CAAI,IAAY,EAAE,IAAiB;QAC1D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAClF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,gBAAgB,CACxB,YAAY,EACZ,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAChD,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEpC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,MAAwC,CAAC;YAC1D,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,CAAC;YAC5B,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,QAAQ,EAAE,KAAK,IAAI,8BAA8B,QAAQ,CAAC,MAAM,EAAE,CAAC;YACxG,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,MAAM,IAAI,IAAI,CAAC;YACpD,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC3E,CAAC;YACD,MAAM,WAAW,GAAqB,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC;YAC9F,MAAM,IAAI,gBAAgB,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,gBAAgB,CACxB,kBAAkB,EAClB,8BAA8B,IAAI,EAAE,EACpC,QAAQ,CAAC,MAAM,EACf,IAAI,CACL,CAAC;QACJ,CAAC;QAED,OAAO,MAAW,CAAC;IACrB,CAAC;IAEO,SAAS,CAAC,IAAY;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC1B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,7 @@
1
1
  export { OkraPDF } from './client.js';
2
+ export { okraPdf } from './url.js';
3
+ export { createOkra, withCache, withQualityScore } from './providers.js';
4
+ export type { OkraProvider, OkraMiddleware, CreateOkraOptions, ExtractionPhase } from './providers.js';
2
5
  export { OkraRuntimeError, StructuredOutputError } from './errors.js';
3
- export type { JsonSchema, RuntimeErrorCode, StructuredOutputErrorCode, OkraPDFOptions, UploadOptions, UploadResult, DocumentStatus, WaitOptions, StructuredOutputMeta, StructuredOutputOptions, StructuredOutputResult, StructuredSchema, } from './types.js';
6
+ export type { JsonSchema, RuntimeErrorCode, StructuredOutputErrorCode, OkraPDFOptions, UploadOptions, UploadResult, DocumentStatus, WaitOptions, Page, PageBlock, PageEntity, Entity, EntitiesResponse, QueryResult, CompletionEvent, CompletionOptions, AskResult, StructuredOutputMeta, StructuredOutputOptions, StructuredOutputResult, StructuredSchema, SandboxCapability, SandboxOptions, SandboxTool, Sandbox, UrlBuilderOptions, AnalyticsEntry, TokenUsage, AnalyticsResult, } from './types.js';
4
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACtE,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACzE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGvG,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGtE,YAAY,EAEV,UAAU,EACV,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EAEd,aAAa,EACb,YAAY,EAEZ,cAAc,EACd,WAAW,EAEX,IAAI,EACJ,SAAS,EACT,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,WAAW,EAEX,eAAe,EACf,iBAAiB,EACjB,SAAS,EAET,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAEhB,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,OAAO,EAEP,iBAAiB,EAEjB,cAAc,EACd,UAAU,EACV,eAAe,GAChB,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,9 @@
1
+ // Core client
1
2
  export { OkraPDF } from './client.js';
3
+ // URL builder
4
+ export { okraPdf } from './url.js';
5
+ // Provider abstraction
6
+ export { createOkra, withCache, withQualityScore } from './providers.js';
7
+ // Errors
2
8
  export { OkraRuntimeError, StructuredOutputError } from './errors.js';
3
9
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,cAAc;AACd,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,uBAAuB;AACvB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGzE,SAAS;AACT,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,51 @@
1
+ import type { OkraPDFOptions } from './types.js';
2
+ import { OkraPDF } from './client.js';
3
+ /**
4
+ * Extraction phase names.
5
+ */
6
+ export type ExtractionPhase = 'ocr' | 'enhance' | 'metadata' | 'verify';
7
+ /**
8
+ * A provider plugin that handles one or more extraction phases.
9
+ */
10
+ export interface OkraProvider {
11
+ name: string;
12
+ supportedPhases: ExtractionPhase[];
13
+ }
14
+ /**
15
+ * Middleware that wraps the client with cross-cutting concerns.
16
+ */
17
+ export interface OkraMiddleware {
18
+ name: string;
19
+ /** Middleware config passed through to the worker as capabilities. */
20
+ config: Record<string, unknown>;
21
+ }
22
+ export interface CreateOkraOptions extends OkraPDFOptions {
23
+ /** Registered provider plugins. */
24
+ providers?: Record<string, OkraProvider>;
25
+ /** Map extraction phases to provider names. */
26
+ extraction?: Partial<Record<ExtractionPhase, string>>;
27
+ /** Middleware stack applied to requests. */
28
+ middleware?: OkraMiddleware[];
29
+ }
30
+ /**
31
+ * Factory function — AI SDK-style provider abstraction.
32
+ *
33
+ * ```ts
34
+ * import { createOkra } from '@okrapdf/runtime';
35
+ * import { azureDocAI } from '@okrapdf/azure-docai';
36
+ *
37
+ * const okra = createOkra({
38
+ * apiKey: 'okra_...',
39
+ * providers: { azureDocAI },
40
+ * extraction: { ocr: 'azureDocAI' },
41
+ * });
42
+ * ```
43
+ */
44
+ export declare function createOkra(options: CreateOkraOptions): OkraPDF;
45
+ export declare function withCache(opts: {
46
+ by: 'pdf-hash' | 'content-hash';
47
+ }): OkraMiddleware;
48
+ export declare function withQualityScore(opts: {
49
+ threshold: number;
50
+ }): OkraMiddleware;
51
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,eAAe,EAAE,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzC,+CAA+C;IAC/C,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD,4CAA4C;IAC5C,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAwC9D;AAID,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAAE,EAAE,EAAE,UAAU,GAAG,cAAc,CAAA;CAAE,GAAG,cAAc,CAEnF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAE5E"}
@@ -0,0 +1,59 @@
1
+ import { OkraPDF } from './client.js';
2
+ /**
3
+ * Factory function — AI SDK-style provider abstraction.
4
+ *
5
+ * ```ts
6
+ * import { createOkra } from '@okrapdf/runtime';
7
+ * import { azureDocAI } from '@okrapdf/azure-docai';
8
+ *
9
+ * const okra = createOkra({
10
+ * apiKey: 'okra_...',
11
+ * providers: { azureDocAI },
12
+ * extraction: { ocr: 'azureDocAI' },
13
+ * });
14
+ * ```
15
+ */
16
+ export function createOkra(options) {
17
+ // Validate that extraction phase references exist in providers
18
+ if (options.extraction && options.providers) {
19
+ for (const [phase, providerName] of Object.entries(options.extraction)) {
20
+ if (!options.providers[providerName]) {
21
+ throw new Error(`Extraction phase '${phase}' references provider '${providerName}' which is not registered. ` +
22
+ `Available: ${Object.keys(options.providers).join(', ')}`);
23
+ }
24
+ }
25
+ }
26
+ // Build capabilities object from providers + extraction config
27
+ const capabilities = {};
28
+ if (options.extraction) {
29
+ capabilities.phases = {};
30
+ for (const [phase, providerName] of Object.entries(options.extraction)) {
31
+ capabilities.phases[phase] = {
32
+ vendor: providerName,
33
+ enabled: true,
34
+ };
35
+ }
36
+ }
37
+ if (options.middleware) {
38
+ capabilities.middleware = options.middleware.map((m) => ({
39
+ name: m.name,
40
+ ...m.config,
41
+ }));
42
+ }
43
+ // The client itself is thin — provider/middleware config is sent to the
44
+ // worker via capabilities on upload, not executed client-side.
45
+ return new OkraPDF({
46
+ baseUrl: options.baseUrl,
47
+ apiKey: options.apiKey,
48
+ sharedSecret: options.sharedSecret,
49
+ fetch: options.fetch,
50
+ });
51
+ }
52
+ // ─── Built-in middleware constructors ──────────────────────────────────────
53
+ export function withCache(opts) {
54
+ return { name: 'cache', config: { strategy: opts.by } };
55
+ }
56
+ export function withQualityScore(opts) {
57
+ return { name: 'quality-score', config: { threshold: opts.threshold } };
58
+ }
59
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAiCtC;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,UAAU,CAAC,OAA0B;IACnD,+DAA+D;IAC/D,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QAC5C,KAAK,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACvE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CACb,qBAAqB,KAAK,0BAA0B,YAAY,6BAA6B;oBAC7F,cAAc,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,MAAM,YAAY,GAA4B,EAAE,CAAC;IACjD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACtE,YAAY,CAAC,MAAkC,CAAC,KAAK,CAAC,GAAG;gBACxD,MAAM,EAAE,YAAY;gBACpB,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,YAAY,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvD,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,GAAG,CAAC,CAAC,MAAM;SACZ,CAAC,CAAC,CAAC;IACN,CAAC;IAED,wEAAwE;IACxE,+DAA+D;IAC/D,OAAO,IAAI,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAE9E,MAAM,UAAU,SAAS,CAAC,IAAyC;IACjE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAA2B;IAC1D,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;AAC1E,CAAC"}
package/dist/types.d.ts CHANGED
@@ -61,4 +61,113 @@ export interface StructuredOutputOptions {
61
61
  signal?: AbortSignal;
62
62
  }
63
63
  export type StructuredSchema<T> = JsonSchema | ZodType<T>;
64
+ export interface PageBlock {
65
+ text: string;
66
+ bbox?: {
67
+ x: number;
68
+ y: number;
69
+ width: number;
70
+ height: number;
71
+ };
72
+ confidence?: number;
73
+ }
74
+ export interface PageEntity {
75
+ id: string;
76
+ type: string;
77
+ label: string | null;
78
+ }
79
+ export interface Page {
80
+ page: number;
81
+ content: string;
82
+ blocks: PageBlock[];
83
+ entities: PageEntity[];
84
+ }
85
+ export interface Entity {
86
+ id: string;
87
+ type: string;
88
+ label: string | null;
89
+ value: string | null;
90
+ page_number: number | null;
91
+ status: string;
92
+ bbox_x?: number | null;
93
+ bbox_y?: number | null;
94
+ bbox_w?: number | null;
95
+ bbox_h?: number | null;
96
+ metadata?: string | null;
97
+ }
98
+ export interface EntitiesResponse {
99
+ nodes: Entity[];
100
+ total?: number;
101
+ limit?: number;
102
+ offset?: number;
103
+ }
104
+ export interface QueryResult {
105
+ rows: Record<string, unknown>[];
106
+ columns: string[];
107
+ }
108
+ export type CompletionEvent = {
109
+ type: 'text_delta';
110
+ text: string;
111
+ } | {
112
+ type: 'tool_result';
113
+ name: string;
114
+ result: unknown;
115
+ } | {
116
+ type: 'done';
117
+ answer: string;
118
+ costUsd?: number;
119
+ sources?: Array<{
120
+ page: number;
121
+ snippet: string;
122
+ }>;
123
+ } | {
124
+ type: 'error';
125
+ message: string;
126
+ };
127
+ export interface CompletionOptions {
128
+ stream?: boolean;
129
+ signal?: AbortSignal;
130
+ }
131
+ export interface AskResult {
132
+ answer: string;
133
+ sources?: Array<{
134
+ page: number;
135
+ snippet: string;
136
+ }>;
137
+ costUsd?: number;
138
+ }
139
+ export type SandboxCapability = 'read' | 'query' | 'complete';
140
+ export interface SandboxOptions {
141
+ docs: string[];
142
+ capabilities?: SandboxCapability[];
143
+ }
144
+ export interface SandboxTool {
145
+ name: string;
146
+ description: string;
147
+ parameters: JsonSchema;
148
+ execute: (args: Record<string, unknown>) => Promise<unknown>;
149
+ }
150
+ export interface Sandbox {
151
+ tools: SandboxTool[];
152
+ asMcp: () => SandboxTool[];
153
+ }
154
+ export interface UrlBuilderOptions {
155
+ format?: 'json' | 'csv' | 'html' | 'markdown' | 'png';
156
+ include?: string[];
157
+ }
158
+ export interface AnalyticsEntry {
159
+ endpoint: string;
160
+ requests: number;
161
+ cost?: number;
162
+ }
163
+ export interface TokenUsage {
164
+ label: string;
165
+ requests: number;
166
+ cost?: number;
167
+ }
168
+ export interface AnalyticsResult {
169
+ endpoints: AnalyticsEntry[];
170
+ tokens: TokenUsage[];
171
+ period: string;
172
+ }
64
173
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAEnC,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,MAAM,MAAM,yBAAyB,GACjC,0BAA0B,GAC1B,mBAAmB,GACnB,SAAS,GACT,oBAAoB,CAAC;AAEzB,MAAM,MAAM,gBAAgB,GACxB,yBAAyB,GACzB,iBAAiB,GACjB,cAAc,GACd,YAAY,GACZ,kBAAkB,CAAC;AAEvB,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAED,MAAM,WAAW,sBAAsB,CAAC,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/url.d.ts ADDED
@@ -0,0 +1,54 @@
1
+ import type { UrlBuilderOptions } from './types.js';
2
+ interface DocumentUrl {
3
+ /** Base document URL */
4
+ url: (opts?: UrlBuilderOptions) => string;
5
+ /** Thumbnail image URL */
6
+ thumbnail: {
7
+ url: () => string;
8
+ };
9
+ /** Page-level access */
10
+ pages: PageProxy;
11
+ /** Entity-level access */
12
+ entities: EntitiesProxy;
13
+ }
14
+ interface PageProxy {
15
+ [index: number]: {
16
+ /** Page rendered as image */
17
+ image: {
18
+ url: () => string;
19
+ };
20
+ /** Page as markdown */
21
+ markdown: {
22
+ url: () => string;
23
+ };
24
+ /** Raw page URL */
25
+ url: () => string;
26
+ };
27
+ }
28
+ interface EntitiesProxy {
29
+ tables: EntityCollectionProxy;
30
+ figures: EntityCollectionProxy;
31
+ }
32
+ interface EntityCollectionProxy {
33
+ [index: number]: {
34
+ url: (opts?: {
35
+ format?: 'json' | 'csv' | 'html';
36
+ }) => string;
37
+ };
38
+ url: (opts?: UrlBuilderOptions) => string;
39
+ }
40
+ /**
41
+ * Build-time URL builder — Cloudinary for documents.
42
+ *
43
+ * Every document property is a CDN-cacheable URL.
44
+ * Construct at build time, works in any `<img>` or `<a>`.
45
+ *
46
+ * ```tsx
47
+ * const doc = okraPdf('doc_7fK3x');
48
+ * <Image src={doc.thumbnail.url()} />
49
+ * <a href={doc.entities.tables[0].url({ format: 'csv' })}>CSV</a>
50
+ * ```
51
+ */
52
+ export declare function okraPdf(documentId: string, baseUrl?: string): DocumentUrl;
53
+ export {};
54
+ //# sourceMappingURL=url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../src/url.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAIpD,UAAU,WAAW;IACnB,wBAAwB;IACxB,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,iBAAiB,KAAK,MAAM,CAAC;IAC1C,0BAA0B;IAC1B,SAAS,EAAE;QAAE,GAAG,EAAE,MAAM,MAAM,CAAA;KAAE,CAAC;IACjC,wBAAwB;IACxB,KAAK,EAAE,SAAS,CAAC;IACjB,0BAA0B;IAC1B,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,UAAU,SAAS;IACjB,CAAC,KAAK,EAAE,MAAM,GAAG;QACf,6BAA6B;QAC7B,KAAK,EAAE;YAAE,GAAG,EAAE,MAAM,MAAM,CAAA;SAAE,CAAC;QAC7B,uBAAuB;QACvB,QAAQ,EAAE;YAAE,GAAG,EAAE,MAAM,MAAM,CAAA;SAAE,CAAC;QAChC,mBAAmB;QACnB,GAAG,EAAE,MAAM,MAAM,CAAC;KACnB,CAAC;CACH;AAED,UAAU,aAAa;IACrB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,OAAO,EAAE,qBAAqB,CAAC;CAChC;AAED,UAAU,qBAAqB;IAC7B,CAAC,KAAK,EAAE,MAAM,GAAG;QACf,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAA;SAAE,KAAK,MAAM,CAAC;KAC9D,CAAC;IACF,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,iBAAiB,KAAK,MAAM,CAAC;CAC3C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,MAAyB,GAAG,WAAW,CAuD3F"}
package/dist/url.js ADDED
@@ -0,0 +1,68 @@
1
+ const DEFAULT_BASE_URL = 'https://api.okrapdf.com';
2
+ /**
3
+ * Build-time URL builder — Cloudinary for documents.
4
+ *
5
+ * Every document property is a CDN-cacheable URL.
6
+ * Construct at build time, works in any `<img>` or `<a>`.
7
+ *
8
+ * ```tsx
9
+ * const doc = okraPdf('doc_7fK3x');
10
+ * <Image src={doc.thumbnail.url()} />
11
+ * <a href={doc.entities.tables[0].url({ format: 'csv' })}>CSV</a>
12
+ * ```
13
+ */
14
+ export function okraPdf(documentId, baseUrl = DEFAULT_BASE_URL) {
15
+ const base = baseUrl.replace(/\/+$/, '');
16
+ const docBase = `${base}/v1/documents/${encodeURIComponent(documentId)}`;
17
+ const formatParams = (opts) => {
18
+ const params = new URLSearchParams();
19
+ if (opts?.format)
20
+ params.set('format', opts.format);
21
+ if (opts?.include?.length)
22
+ params.set('include', opts.include.join(','));
23
+ const qs = params.toString();
24
+ return qs ? `?${qs}` : '';
25
+ };
26
+ const makeEntityCollection = (type) => {
27
+ return new Proxy({}, {
28
+ get(_target, prop) {
29
+ if (prop === 'url') {
30
+ return (opts) => `${docBase}/entities/${type}${formatParams(opts)}`;
31
+ }
32
+ const index = typeof prop === 'string' ? parseInt(prop, 10) : NaN;
33
+ if (!isNaN(index)) {
34
+ return {
35
+ url: (opts) => {
36
+ const params = opts?.format ? `?format=${opts.format}` : '';
37
+ return `${docBase}/entities/${type}/${index}${params}`;
38
+ },
39
+ };
40
+ }
41
+ return undefined;
42
+ },
43
+ });
44
+ };
45
+ const pages = new Proxy({}, {
46
+ get(_target, prop) {
47
+ const pageNum = typeof prop === 'string' ? parseInt(prop, 10) : NaN;
48
+ if (!isNaN(pageNum)) {
49
+ return {
50
+ image: { url: () => `${docBase}/pages/${pageNum}/image` },
51
+ markdown: { url: () => `${docBase}/pages/${pageNum}/markdown` },
52
+ url: () => `${docBase}/pages/${pageNum}`,
53
+ };
54
+ }
55
+ return undefined;
56
+ },
57
+ });
58
+ return {
59
+ url: (opts) => `${docBase}${formatParams(opts)}`,
60
+ thumbnail: { url: () => `${docBase}/thumbnail` },
61
+ pages,
62
+ entities: {
63
+ tables: makeEntityCollection('tables'),
64
+ figures: makeEntityCollection('figures'),
65
+ },
66
+ };
67
+ }
68
+ //# sourceMappingURL=url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.js","sourceRoot":"","sources":["../src/url.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @okrapdf/runtime/worker — self-host subpath export.
3
+ *
4
+ * Re-export the DocumentAgent DO class and a request handler
5
+ * for self-hosted deployments.
6
+ *
7
+ * Usage:
8
+ * ```ts
9
+ * // worker.ts
10
+ * import { handleRequest } from '@okrapdf/runtime/worker';
11
+ * import { DocumentAgent } from './document-agent';
12
+ *
13
+ * export { DocumentAgent };
14
+ * export default { fetch: handleRequest({ DOCUMENT_AGENT: env.DOCUMENT_AGENT }) };
15
+ * ```
16
+ *
17
+ * ```toml
18
+ * # wrangler.toml
19
+ * [durable_objects]
20
+ * bindings = [{ name = "DOCUMENT_AGENT", class_name = "DocumentAgent" }]
21
+ * ```
22
+ */
23
+ export interface DurableObjectBinding {
24
+ idFromName(name: string): {
25
+ toString(): string;
26
+ };
27
+ get(id: {
28
+ toString(): string;
29
+ }): {
30
+ fetch(request: Request): Promise<Response>;
31
+ };
32
+ }
33
+ export interface WorkerEnv {
34
+ DOCUMENT_AGENT: DurableObjectBinding;
35
+ DOCUMENT_AGENT_SHARED_SECRET?: string;
36
+ [key: string]: unknown;
37
+ }
38
+ /**
39
+ * Minimal request router that forwards /document/:id/* and /v1/documents/:id/*
40
+ * to the corresponding Durable Object.
41
+ */
42
+ export declare function handleRequest(env: WorkerEnv): (request: Request) => Promise<Response>;
43
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IACjD,GAAG,CAAC,EAAE,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,GAAG;QAAE,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;KAAE,CAAC;CACjF;AAED,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,oBAAoB,CAAC;IACrC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CA0BrF"}
package/dist/worker.js ADDED
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @okrapdf/runtime/worker — self-host subpath export.
3
+ *
4
+ * Re-export the DocumentAgent DO class and a request handler
5
+ * for self-hosted deployments.
6
+ *
7
+ * Usage:
8
+ * ```ts
9
+ * // worker.ts
10
+ * import { handleRequest } from '@okrapdf/runtime/worker';
11
+ * import { DocumentAgent } from './document-agent';
12
+ *
13
+ * export { DocumentAgent };
14
+ * export default { fetch: handleRequest({ DOCUMENT_AGENT: env.DOCUMENT_AGENT }) };
15
+ * ```
16
+ *
17
+ * ```toml
18
+ * # wrangler.toml
19
+ * [durable_objects]
20
+ * bindings = [{ name = "DOCUMENT_AGENT", class_name = "DocumentAgent" }]
21
+ * ```
22
+ */
23
+ /**
24
+ * Minimal request router that forwards /document/:id/* and /v1/documents/:id/*
25
+ * to the corresponding Durable Object.
26
+ */
27
+ export function handleRequest(env) {
28
+ return async (request) => {
29
+ const url = new URL(request.url);
30
+ const path = url.pathname;
31
+ // Match /document/:id/* or /v1/documents/:id/*
32
+ const docMatch = path.match(/^\/(?:document|v1\/documents)\/([^/]+)(\/.*)?$/);
33
+ if (!docMatch) {
34
+ return new Response(JSON.stringify({ error: 'Not found' }), {
35
+ status: 404,
36
+ headers: { 'Content-Type': 'application/json' },
37
+ });
38
+ }
39
+ const documentId = decodeURIComponent(docMatch[1]);
40
+ const subpath = docMatch[2] || '/status';
41
+ const doId = env.DOCUMENT_AGENT.idFromName(documentId);
42
+ const stub = env.DOCUMENT_AGENT.get(doId);
43
+ // Forward to DO with the subpath
44
+ const doUrl = new URL(request.url);
45
+ doUrl.pathname = `/document/${documentId}${subpath}`;
46
+ return stub.fetch(new Request(doUrl.toString(), request));
47
+ };
48
+ }
49
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAaH;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAc;IAC1C,OAAO,KAAK,EAAE,OAAgB,EAAE,EAAE;QAChC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;QAE1B,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAC9E,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE;gBAC1D,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CAAC,CAAC;QACL,CAAC;QAED,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;QAEzC,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE1C,iCAAiC;QACjC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,KAAK,CAAC,QAAQ,GAAG,aAAa,UAAU,GAAG,OAAO,EAAE,CAAC;QAErD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,10 +1,20 @@
1
1
  {
2
2
  "name": "@okrapdf/runtime",
3
- "version": "0.1.0",
4
- "description": "Tiny runtime client for upload, status, wait, and structured output",
3
+ "version": "0.2.0",
4
+ "description": "OkraPDF Document Runtime upload a PDF, get an API",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ },
13
+ "./worker": {
14
+ "types": "./dist/worker.d.ts",
15
+ "import": "./dist/worker.js"
16
+ }
17
+ },
8
18
  "publishConfig": {
9
19
  "access": "public"
10
20
  },