@okrapdf/cli 0.4.6 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +14 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/auth.d.ts.map +1 -1
  5. package/dist/commands/auth.js +94 -26
  6. package/dist/commands/auth.js.map +1 -1
  7. package/dist/commands/chat.d.ts +6 -17
  8. package/dist/commands/chat.d.ts.map +1 -1
  9. package/dist/commands/chat.js +349 -318
  10. package/dist/commands/chat.js.map +1 -1
  11. package/dist/commands/chat.test.js +4 -0
  12. package/dist/commands/chat.test.js.map +1 -1
  13. package/dist/commands/elements.d.ts.map +1 -1
  14. package/dist/commands/elements.js +15 -12
  15. package/dist/commands/elements.js.map +1 -1
  16. package/dist/commands/jobs.d.ts.map +1 -1
  17. package/dist/commands/jobs.js +228 -13
  18. package/dist/commands/jobs.js.map +1 -1
  19. package/dist/commands/plugins.d.ts +3 -0
  20. package/dist/commands/plugins.d.ts.map +1 -0
  21. package/dist/commands/plugins.js +26 -0
  22. package/dist/commands/plugins.js.map +1 -0
  23. package/dist/commands/read.d.ts.map +1 -1
  24. package/dist/commands/read.js +11 -9
  25. package/dist/commands/read.js.map +1 -1
  26. package/dist/commands/search.d.ts +16 -0
  27. package/dist/commands/search.d.ts.map +1 -0
  28. package/dist/commands/search.js +246 -0
  29. package/dist/commands/search.js.map +1 -0
  30. package/dist/commands/shortcuts.js +2 -2
  31. package/dist/commands/shortcuts.js.map +1 -1
  32. package/dist/commands/task.d.ts +0 -8
  33. package/dist/commands/task.d.ts.map +1 -1
  34. package/dist/commands/task.js +9 -190
  35. package/dist/commands/task.js.map +1 -1
  36. package/dist/lib/agent-renderer.d.ts.map +1 -1
  37. package/dist/lib/agent-renderer.js +17 -1
  38. package/dist/lib/agent-renderer.js.map +1 -1
  39. package/dist/lib/backends/do-adapters.test.d.ts +6 -0
  40. package/dist/lib/backends/do-adapters.test.d.ts.map +1 -0
  41. package/dist/lib/backends/do-adapters.test.js +311 -0
  42. package/dist/lib/backends/do-adapters.test.js.map +1 -0
  43. package/dist/lib/backends/do.d.ts +23 -0
  44. package/dist/lib/backends/do.d.ts.map +1 -0
  45. package/dist/lib/backends/do.js +340 -0
  46. package/dist/lib/backends/do.js.map +1 -0
  47. package/dist/lib/backends/index.d.ts +7 -0
  48. package/dist/lib/backends/index.d.ts.map +1 -0
  49. package/dist/lib/backends/index.js +8 -0
  50. package/dist/lib/backends/index.js.map +1 -0
  51. package/dist/lib/backends/okrapdf.d.ts +9 -0
  52. package/dist/lib/backends/okrapdf.d.ts.map +1 -0
  53. package/dist/lib/backends/okrapdf.js +50 -0
  54. package/dist/lib/backends/okrapdf.js.map +1 -0
  55. package/dist/lib/backends/types.d.ts +205 -0
  56. package/dist/lib/backends/types.d.ts.map +1 -0
  57. package/dist/lib/backends/types.js +7 -0
  58. package/dist/lib/backends/types.js.map +1 -0
  59. package/dist/lib/completion-stream.d.ts +22 -0
  60. package/dist/lib/completion-stream.d.ts.map +1 -0
  61. package/dist/lib/completion-stream.js +69 -0
  62. package/dist/lib/completion-stream.js.map +1 -0
  63. package/dist/lib/config.d.ts +4 -0
  64. package/dist/lib/config.d.ts.map +1 -1
  65. package/dist/lib/config.js +6 -0
  66. package/dist/lib/config.js.map +1 -1
  67. package/dist/lib/federation.d.ts +14 -0
  68. package/dist/lib/federation.d.ts.map +1 -0
  69. package/dist/lib/federation.js +51 -0
  70. package/dist/lib/federation.js.map +1 -0
  71. package/dist/lib/general-chat.d.ts +11 -0
  72. package/dist/lib/general-chat.d.ts.map +1 -0
  73. package/dist/lib/general-chat.js +69 -0
  74. package/dist/lib/general-chat.js.map +1 -0
  75. package/dist/lib/multi-doc-chat.d.ts +20 -0
  76. package/dist/lib/multi-doc-chat.d.ts.map +1 -0
  77. package/dist/lib/multi-doc-chat.js +152 -0
  78. package/dist/lib/multi-doc-chat.js.map +1 -0
  79. package/dist/lib/plugins.d.ts +24 -0
  80. package/dist/lib/plugins.d.ts.map +1 -0
  81. package/dist/lib/plugins.js +55 -0
  82. package/dist/lib/plugins.js.map +1 -0
  83. package/dist/lib/runtime.js +1 -1
  84. package/dist/lib/runtime.js.map +1 -1
  85. package/dist/lib/single-doc-chat.d.ts +14 -0
  86. package/dist/lib/single-doc-chat.d.ts.map +1 -0
  87. package/dist/lib/single-doc-chat.js +165 -0
  88. package/dist/lib/single-doc-chat.js.map +1 -0
  89. package/dist/lib/task-agent.d.ts +11 -0
  90. package/dist/lib/task-agent.d.ts.map +1 -0
  91. package/dist/lib/task-agent.js +200 -0
  92. package/dist/lib/task-agent.js.map +1 -0
  93. package/dist/types.d.ts +32 -0
  94. package/dist/types.d.ts.map +1 -1
  95. package/package.json +3 -1
@@ -0,0 +1,340 @@
1
+ /**
2
+ * DO backend — talks to agent-session Durable Object worker.
3
+ *
4
+ * Extracted from commands/search.ts; provides the Backend interface
5
+ * so commands never call fetch directly.
6
+ */
7
+ // ─── Low-level fetch ─────────────────────────────────────────────────────────
8
+ const DEFAULT_WORKER_URL = 'https://agent-session.steventsao.workers.dev';
9
+ function normalizeUrl(url) {
10
+ return url.replace(/\/+$/, '');
11
+ }
12
+ export function getWorkerUrl() {
13
+ const url = process.env.DOCUMENT_AGENT_URL || process.env.OKRA_DOCUMENT_AGENT_URL || DEFAULT_WORKER_URL;
14
+ return normalizeUrl(url);
15
+ }
16
+ export function authHeaders() {
17
+ const h = {};
18
+ if (process.env.DOCUMENT_AGENT_SHARED_SECRET) {
19
+ h['x-document-agent-secret'] = process.env.DOCUMENT_AGENT_SHARED_SECRET;
20
+ }
21
+ if (process.env.DOCUMENT_AGENT_WORKER_SECRET) {
22
+ h['X-Worker-Secret'] = process.env.DOCUMENT_AGENT_WORKER_SECRET;
23
+ }
24
+ const authToken = process.env.DOCUMENT_AGENT_AUTH_TOKEN || process.env.DOCUMENT_AGENT_WS_TOKEN;
25
+ if (authToken) {
26
+ h.Authorization = authToken.startsWith('Bearer ') ? authToken : `Bearer ${authToken}`;
27
+ }
28
+ return h;
29
+ }
30
+ export async function workerFetch(path) {
31
+ const res = await fetch(`${getWorkerUrl()}${path}`, { headers: authHeaders() });
32
+ if (!res.ok)
33
+ throw new Error(`Worker ${res.status}: ${path}`);
34
+ return (await res.json());
35
+ }
36
+ export function isWorkerStatusError(error, status) {
37
+ if (!(error instanceof Error))
38
+ return false;
39
+ return error.message.includes(`Worker ${status}:`);
40
+ }
41
+ function buildDocRouteCandidates() {
42
+ const mode = process.env.DOCUMENT_AGENT_DOC_ROUTE?.toLowerCase();
43
+ if (mode === 'document')
44
+ return ['document'];
45
+ if (mode === 'task')
46
+ return ['task'];
47
+ if (process.env.DOCUMENT_AGENT_SHARED_SECRET) {
48
+ return ['document', 'task'];
49
+ }
50
+ return ['task', 'document'];
51
+ }
52
+ /** Fetch scoped to a specific document. */
53
+ export async function workerDocFetch(docId, path) {
54
+ const encodedDocId = encodeURIComponent(docId);
55
+ const candidates = buildDocRouteCandidates();
56
+ let lastError;
57
+ for (const route of candidates) {
58
+ try {
59
+ return await workerFetch(`/${route}/${encodedDocId}${path}`);
60
+ }
61
+ catch (error) {
62
+ lastError = error;
63
+ if (isWorkerStatusError(error, 400)
64
+ || isWorkerStatusError(error, 401)
65
+ || isWorkerStatusError(error, 403)
66
+ || isWorkerStatusError(error, 404)) {
67
+ continue;
68
+ }
69
+ throw error;
70
+ }
71
+ }
72
+ throw lastError instanceof Error ? lastError : new Error('Worker request failed');
73
+ }
74
+ async function docFetch(docId, path) {
75
+ return workerDocFetch(docId, path);
76
+ }
77
+ export function fallbackLedgerFromStatus(status) {
78
+ const totalPages = Math.max(0, status.pagesTotal || 0);
79
+ const completedPages = Math.max(0, Math.min(totalPages, status.pagesCompleted || 0));
80
+ const ledger = [];
81
+ for (let page = 1; page <= totalPages; page++) {
82
+ let pageStatus = 'pending';
83
+ if (page <= completedPages || status.phase === 'complete') {
84
+ pageStatus = 'completed';
85
+ }
86
+ else if (page === completedPages + 1 && status.phase !== 'pending') {
87
+ pageStatus = 'running';
88
+ }
89
+ ledger.push({
90
+ page_number: page,
91
+ status: pageStatus,
92
+ pass: pageStatus === 'completed' ? 1 : 0,
93
+ vendor: status.activeVendor,
94
+ });
95
+ }
96
+ return { ledger };
97
+ }
98
+ // ─── Adapter: nodes → entities ───────────────────────────────────────────────
99
+ const NODE_TYPE_MAP = {
100
+ table: 'table',
101
+ figure: 'figure',
102
+ footnote: 'footnote',
103
+ summary: 'summary',
104
+ signature: 'signature',
105
+ };
106
+ function nodeBbox(n) {
107
+ if (n.bbox_x != null && n.bbox_y != null && n.bbox_w != null && n.bbox_h != null) {
108
+ return { x: n.bbox_x, y: n.bbox_y, width: n.bbox_w, height: n.bbox_h };
109
+ }
110
+ return undefined;
111
+ }
112
+ function nodeSchema(n) {
113
+ if (!n.metadata)
114
+ return undefined;
115
+ try {
116
+ const meta = JSON.parse(n.metadata);
117
+ if (Array.isArray(meta.schema))
118
+ return meta.schema;
119
+ }
120
+ catch { /* ignore */ }
121
+ return undefined;
122
+ }
123
+ async function fetchAllNodes(docId) {
124
+ const pageSize = 500;
125
+ let offset = 0;
126
+ const allNodes = [];
127
+ while (true) {
128
+ const resp = await docFetch(docId, `/nodes?limit=${pageSize}&offset=${offset}`);
129
+ const pageNodes = Array.isArray(resp.nodes) ? resp.nodes : [];
130
+ allNodes.push(...pageNodes);
131
+ const total = typeof resp.total === 'number' ? resp.total : undefined;
132
+ const limit = typeof resp.limit === 'number' && resp.limit > 0 ? resp.limit : pageSize;
133
+ if (pageNodes.length === 0)
134
+ break;
135
+ if (total !== undefined && allNodes.length >= total)
136
+ break;
137
+ if (total === undefined && pageNodes.length < limit)
138
+ break;
139
+ offset += limit;
140
+ }
141
+ return allNodes;
142
+ }
143
+ export function adaptNodes(docId, nodes, typeFilter) {
144
+ const counts = { tables: 0, figures: 0, footnotes: 0, summaries: 0, signatures: 0 };
145
+ const entities = [];
146
+ for (const n of nodes) {
147
+ const mapped = NODE_TYPE_MAP[n.type];
148
+ if (!mapped)
149
+ continue;
150
+ // Count all entity-type nodes
151
+ const countKey = `${mapped}s`;
152
+ if (countKey in counts)
153
+ counts[countKey]++;
154
+ // Filter if requested
155
+ if (typeFilter && typeFilter !== 'all') {
156
+ const singular = typeFilter.replace(/s$/, '');
157
+ if (n.type !== singular)
158
+ continue;
159
+ }
160
+ entities.push({
161
+ id: n.id,
162
+ type: mapped,
163
+ title: n.label,
164
+ page: n.page_number ?? 0,
165
+ bbox: nodeBbox(n),
166
+ schema: nodeSchema(n),
167
+ });
168
+ }
169
+ return {
170
+ jobId: docId,
171
+ entities,
172
+ counts,
173
+ extractionStatus: 'completed',
174
+ totalPages: undefined,
175
+ };
176
+ }
177
+ // ─── Adapter: status → verification tree ─────────────────────────────────────
178
+ export function adaptStatusToVerificationTree(docId, status, ledger) {
179
+ const pages = ledger.ledger.map((entry) => {
180
+ let pageStatus = 'pending';
181
+ if (entry.status === 'completed')
182
+ pageStatus = 'complete';
183
+ else if (entry.status === 'failed')
184
+ pageStatus = 'flagged';
185
+ else if (entry.status === 'running' || entry.status === 'retrying')
186
+ pageStatus = 'partial';
187
+ const isComplete = entry.status === 'completed';
188
+ const isFailed = entry.status === 'failed';
189
+ return {
190
+ page: entry.page_number,
191
+ status: pageStatus,
192
+ total: 1,
193
+ verified: isComplete ? 1 : 0,
194
+ pending: (!isComplete && !isFailed) ? 1 : 0,
195
+ flagged: isFailed ? 1 : 0,
196
+ rejected: 0,
197
+ avgConfidence: isComplete ? 1.0 : 0,
198
+ hasOcr: entry.pass >= 1,
199
+ ocrLineCount: 0,
200
+ hasCoverageGaps: false,
201
+ uncoveredCount: 0,
202
+ resolution: null,
203
+ classification: null,
204
+ isStale: false,
205
+ };
206
+ });
207
+ const summary = {
208
+ complete: pages.filter((p) => p.status === 'complete').length,
209
+ partial: pages.filter((p) => p.status === 'partial').length,
210
+ flagged: pages.filter((p) => p.status === 'flagged').length,
211
+ pending: pages.filter((p) => p.status === 'pending').length,
212
+ empty: 0,
213
+ gap: 0,
214
+ resolved: 0,
215
+ stale: 0,
216
+ };
217
+ return {
218
+ jobId: docId,
219
+ documentId: status.documentId,
220
+ totalPages: status.pagesTotal,
221
+ summary,
222
+ pages,
223
+ };
224
+ }
225
+ // ─── Adapter: page → PageContent ─────────────────────────────────────────────
226
+ export function adaptPageContent(docId, pageNum, doPage) {
227
+ return {
228
+ jobId: docId,
229
+ pageNum,
230
+ content: doPage.content,
231
+ version: 1,
232
+ blocks: doPage.blocks.map((b) => ({
233
+ text: b.text,
234
+ bbox: b.bbox
235
+ ? { x: b.bbox.x, y: b.bbox.y, width: b.bbox.w, height: b.bbox.h }
236
+ : undefined,
237
+ confidence: b.confidence,
238
+ })),
239
+ dimension: null,
240
+ };
241
+ }
242
+ // ─── Adapter: mutations → history ────────────────────────────────────────────
243
+ export function adaptMutations(resp) {
244
+ return {
245
+ history: resp.mutations.map((m) => ({
246
+ id: m.id,
247
+ action: m.action,
248
+ pageNumber: m.page_number,
249
+ entityId: m.entity_id,
250
+ entityType: m.entity_type,
251
+ previousState: m.previous_state,
252
+ newState: m.new_state,
253
+ triggeredBy: m.triggered_by,
254
+ createdAt: m.created_at,
255
+ })),
256
+ };
257
+ }
258
+ // ─── Adapter: nodes → JobResults (read/results) ─────────────────────────────
259
+ export function adaptNodesToResults(docId, status, pages) {
260
+ const tables = [];
261
+ const pageResults = [];
262
+ for (const p of pages) {
263
+ pageResults.push({
264
+ page_number: p.page,
265
+ text: p.content,
266
+ entities: [],
267
+ });
268
+ for (const e of p.entities) {
269
+ if (e.type === 'table') {
270
+ // We don't have markdown from page endpoint, just record it
271
+ tables.push({
272
+ id: e.id,
273
+ page_number: p.page,
274
+ content_markdown: '', // Tables need separate fetch from nodes
275
+ confidence: null,
276
+ });
277
+ }
278
+ }
279
+ }
280
+ return {
281
+ job_id: docId,
282
+ filename: status.fileName || docId,
283
+ total_pages: status.pagesTotal,
284
+ pages: pageResults,
285
+ tables,
286
+ };
287
+ }
288
+ // ─── Backend implementation ──────────────────────────────────────────────────
289
+ export function createDOBackend() {
290
+ return {
291
+ async entities(docId, type) {
292
+ const nodes = await fetchAllNodes(docId);
293
+ return adaptNodes(docId, nodes, type);
294
+ },
295
+ async counts(docId) {
296
+ const nodes = await fetchAllNodes(docId);
297
+ return adaptNodes(docId, nodes);
298
+ },
299
+ async verificationTree(docId) {
300
+ const status = await docFetch(docId, '/status');
301
+ let ledger;
302
+ try {
303
+ ledger = await docFetch(docId, '/ledger');
304
+ }
305
+ catch (error) {
306
+ if (isWorkerStatusError(error, 404)) {
307
+ ledger = fallbackLedgerFromStatus(status);
308
+ }
309
+ else {
310
+ throw error;
311
+ }
312
+ }
313
+ return adaptStatusToVerificationTree(docId, status, ledger);
314
+ },
315
+ async pageContent(docId, pageNum) {
316
+ const page = await docFetch(docId, `/page/${pageNum}`);
317
+ return adaptPageContent(docId, pageNum, page);
318
+ },
319
+ async history(docId, limit = 20) {
320
+ const resp = await docFetch(docId, `/mutations?limit=${limit}`);
321
+ return adaptMutations(resp);
322
+ },
323
+ async read(docId) {
324
+ const status = await docFetch(docId, '/status');
325
+ const total = status.pagesTotal || 0;
326
+ // Fetch all pages in parallel
327
+ const pagePromises = [];
328
+ for (let i = 1; i <= total; i++) {
329
+ pagePromises.push(docFetch(docId, `/page/${i}`));
330
+ }
331
+ const pages = await Promise.all(pagePromises);
332
+ return adaptNodesToResults(docId, status, pages);
333
+ },
334
+ async results(docId) {
335
+ // Same as read for DO backend
336
+ return this.read(docId);
337
+ },
338
+ };
339
+ }
340
+ //# sourceMappingURL=do.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"do.js","sourceRoot":"","sources":["../../../src/lib/backends/do.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Backend selector — DO only.
3
+ */
4
+ import type { Backend } from './types.js';
5
+ export declare function getBackend(): Backend;
6
+ export { type Backend } from './types.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/backends/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Backend selector — DO only.
3
+ */
4
+ import { createDOBackend } from './do.js';
5
+ export function getBackend() {
6
+ return createDOBackend();
7
+ }
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/backends/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,MAAM,UAAU,UAAU;IACxB,OAAO,eAAe,EAAE,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * OkraPDF REST backend — thin wrappers around existing client.ts helpers.
3
+ *
4
+ * This is the legacy path: commands that don't have a DO equivalent
5
+ * (or when DOCUMENT_AGENT_URL isn't set) use this backend.
6
+ */
7
+ import type { Backend } from './types.js';
8
+ export declare function createOkraPdfBackend(): Backend;
9
+ //# sourceMappingURL=okrapdf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"okrapdf.d.ts","sourceRoot":"","sources":["../../../src/lib/backends/okrapdf.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,OAAO,EAMR,MAAM,YAAY,CAAC;AAsFpB,wBAAgB,oBAAoB,IAAI,OAAO,CA6C9C"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * OkraPDF REST backend — thin wrappers around existing client.ts helpers.
3
+ *
4
+ * This is the legacy path: commands that don't have a DO equivalent
5
+ * (or when DOCUMENT_AGENT_URL isn't set) use this backend.
6
+ */
7
+ import { get } from '../client.js';
8
+ export function createOkraPdfBackend() {
9
+ return {
10
+ async entities(docId, type) {
11
+ const params = {};
12
+ if (type)
13
+ params.type = type;
14
+ return get(`api/ocr/jobs/${docId}/entities`, params);
15
+ },
16
+ async counts(docId) {
17
+ return get(`api/ocr/jobs/${docId}/entities`);
18
+ },
19
+ async verificationTree(docId) {
20
+ return get(`api/ocr/jobs/${docId}/verification-tree`);
21
+ },
22
+ async pageContent(docId, pageNum) {
23
+ return get(`api/ocr/jobs/${docId}/pages/${pageNum}`);
24
+ },
25
+ async history(docId, limit = 20, page) {
26
+ const params = { limit: String(limit) };
27
+ if (page)
28
+ params.page = String(page);
29
+ return get(`api/ocr/jobs/${docId}/history`, params);
30
+ },
31
+ async read(docId) {
32
+ const api = await get(`api/v1/jobs/${docId}/results`);
33
+ return {
34
+ job_id: api.job_id,
35
+ filename: api.filename,
36
+ total_pages: api.total_pages,
37
+ tables: api.results?.tables || [],
38
+ pages: (api.results?.text || []).map((t) => ({
39
+ page_number: t.page,
40
+ text: t.content,
41
+ entities: [],
42
+ })),
43
+ };
44
+ },
45
+ async results(docId) {
46
+ return this.read(docId);
47
+ },
48
+ };
49
+ }
50
+ //# sourceMappingURL=okrapdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"okrapdf.js","sourceRoot":"","sources":["../../../src/lib/backends/okrapdf.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AA8FnC,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI;YACxB,MAAM,MAAM,GAA2B,EAAE,CAAC;YAC1C,IAAI,IAAI;gBAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;YAC7B,OAAO,GAAG,CAAuB,gBAAgB,KAAK,WAAW,EAAE,MAAM,CAAmC,CAAC;QAC/G,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,KAAK;YAChB,OAAO,GAAG,CAAuB,gBAAgB,KAAK,WAAW,CAAmC,CAAC;QACvG,CAAC;QAED,KAAK,CAAC,gBAAgB,CAAC,KAAK;YAC1B,OAAO,GAAG,CAAuB,gBAAgB,KAAK,oBAAoB,CAAqC,CAAC;QAClH,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO;YAC9B,OAAO,GAAG,CAAkB,gBAAgB,KAAK,UAAU,OAAO,EAAE,CAAgC,CAAC;QACvG,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,IAAK;YACpC,MAAM,MAAM,GAA2B,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,IAAI,IAAI;gBAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YACrC,OAAO,GAAG,CAAqC,gBAAgB,KAAK,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1F,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,KAAK;YACd,MAAM,GAAG,GAAG,MAAM,GAAG,CAAoB,eAAe,KAAK,UAAU,CAAC,CAAC;YACzE,OAAO;gBACL,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE;gBACjC,KAAK,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC3C,WAAW,EAAE,CAAC,CAAC,IAAI;oBACnB,IAAI,EAAE,CAAC,CAAC,OAAO;oBACf,QAAQ,EAAE,EAAE;iBACb,CAAC,CAAC;aACwB,CAAC;QAChC,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,KAAK;YACjB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,205 @@
1
+ /**
2
+ * Shared backend types — DO response shapes and backend interface.
3
+ *
4
+ * Commands call Backend methods; they never call fetch directly.
5
+ */
6
+ export interface DOStatusResponse {
7
+ documentId: string;
8
+ phase: string;
9
+ fileName: string;
10
+ pagesTotal: number;
11
+ pagesCompleted?: number;
12
+ totalNodes: number;
13
+ verifiedNodes: number;
14
+ activeVendor: string;
15
+ }
16
+ export interface DONode {
17
+ id: string;
18
+ type: string;
19
+ label: string | null;
20
+ value: string | null;
21
+ page_number: number | null;
22
+ status: string;
23
+ bbox_x?: number | null;
24
+ bbox_y?: number | null;
25
+ bbox_w?: number | null;
26
+ bbox_h?: number | null;
27
+ metadata?: string | null;
28
+ }
29
+ export interface DONodesResponse {
30
+ nodes: DONode[];
31
+ total?: number;
32
+ limit?: number;
33
+ offset?: number;
34
+ }
35
+ export interface DOLedgerEntry {
36
+ page_number: number;
37
+ status: string;
38
+ pass: number;
39
+ vendor?: string;
40
+ }
41
+ export interface DOLedgerResponse {
42
+ ledger: DOLedgerEntry[];
43
+ }
44
+ export interface DOPageBlock {
45
+ text: string;
46
+ bbox?: {
47
+ x: number;
48
+ y: number;
49
+ w: number;
50
+ h: number;
51
+ };
52
+ confidence?: number;
53
+ }
54
+ export interface DOPageEntity {
55
+ id: string;
56
+ type: string;
57
+ label: string | null;
58
+ }
59
+ export interface DOPageResponse {
60
+ page: number;
61
+ content: string;
62
+ blocks: DOPageBlock[];
63
+ entities: DOPageEntity[];
64
+ }
65
+ export interface DOMutation {
66
+ id: string;
67
+ action: string;
68
+ page_number: number | null;
69
+ entity_id: string | null;
70
+ entity_type: string | null;
71
+ previous_state: unknown;
72
+ new_state: unknown;
73
+ triggered_by: string;
74
+ created_at: string;
75
+ }
76
+ export interface DOMutationsResponse {
77
+ mutations: DOMutation[];
78
+ }
79
+ export interface EntityBbox {
80
+ x: number;
81
+ y: number;
82
+ width: number;
83
+ height: number;
84
+ }
85
+ export interface BackendEntity {
86
+ id: string;
87
+ type: 'table' | 'figure' | 'footnote' | 'summary' | 'signature';
88
+ title: string | null;
89
+ page: number;
90
+ schema?: string[];
91
+ isComplete?: boolean;
92
+ bbox?: EntityBbox;
93
+ }
94
+ export interface BackendEntitiesResult {
95
+ jobId: string;
96
+ entities: BackendEntity[];
97
+ counts: {
98
+ tables: number;
99
+ figures: number;
100
+ footnotes: number;
101
+ summaries: number;
102
+ signatures: number;
103
+ };
104
+ extractionStatus: string;
105
+ totalPages?: number;
106
+ }
107
+ export interface BackendPageStatus {
108
+ page: number;
109
+ status: string;
110
+ total: number;
111
+ verified: number;
112
+ pending: number;
113
+ flagged: number;
114
+ rejected: number;
115
+ avgConfidence: number;
116
+ hasOcr: boolean;
117
+ ocrLineCount: number;
118
+ hasCoverageGaps: boolean;
119
+ uncoveredCount: number;
120
+ resolution: string | null;
121
+ classification: string | null;
122
+ isStale: boolean;
123
+ }
124
+ export interface BackendVerificationTree {
125
+ jobId: string;
126
+ documentId: string;
127
+ totalPages: number;
128
+ summary: {
129
+ complete: number;
130
+ partial: number;
131
+ flagged: number;
132
+ pending: number;
133
+ empty: number;
134
+ gap: number;
135
+ resolved: number;
136
+ stale: number;
137
+ };
138
+ pages: BackendPageStatus[];
139
+ }
140
+ export interface BackendPageContent {
141
+ jobId: string;
142
+ pageNum: number;
143
+ content: string;
144
+ version: number;
145
+ blocks?: Array<{
146
+ text: string;
147
+ bbox?: {
148
+ x: number;
149
+ y: number;
150
+ width: number;
151
+ height: number;
152
+ };
153
+ confidence?: number;
154
+ }>;
155
+ dimension?: {
156
+ width: number;
157
+ height: number;
158
+ } | null;
159
+ }
160
+ export interface BackendHistoryEntry {
161
+ id: string;
162
+ action: string;
163
+ pageNumber: number | null;
164
+ entityId: string | null;
165
+ entityType: string | null;
166
+ previousState: unknown;
167
+ newState: unknown;
168
+ triggeredBy: string;
169
+ createdAt: string;
170
+ }
171
+ export interface BackendJobResults {
172
+ job_id: string;
173
+ filename: string;
174
+ total_pages: number;
175
+ pages: Array<{
176
+ page_number: number;
177
+ text: string;
178
+ entities: unknown[];
179
+ }>;
180
+ tables: Array<{
181
+ id: string;
182
+ page_number: number;
183
+ content_markdown: string;
184
+ confidence: number | null;
185
+ }>;
186
+ }
187
+ export interface Backend {
188
+ /** List entities with optional type filter */
189
+ entities(docId: string, type?: string): Promise<BackendEntitiesResult>;
190
+ /** Element counts */
191
+ counts(docId: string): Promise<BackendEntitiesResult>;
192
+ /** Verification tree (status + pages) */
193
+ verificationTree(docId: string): Promise<BackendVerificationTree>;
194
+ /** Single page content */
195
+ pageContent(docId: string, pageNum: number): Promise<BackendPageContent>;
196
+ /** Mutation/audit history */
197
+ history(docId: string, limit?: number, page?: number): Promise<{
198
+ history: BackendHistoryEntry[];
199
+ }>;
200
+ /** Full document read (all pages) */
201
+ read(docId: string): Promise<BackendJobResults>;
202
+ /** Job results (same as read but from results endpoint) */
203
+ results(docId: string): Promise<BackendJobResults>;
204
+ }
205
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/backends/types.ts"],"names":[],"mappings":"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"}