@okrapdf/cli 0.1.0 → 0.1.1
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 +163 -0
- package/dist/cli.d.ts +19 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +175 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/auth.d.ts +6 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +154 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/chat.d.ts +6 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +218 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/docs.d.ts +6 -0
- package/dist/commands/docs.d.ts.map +1 -0
- package/dist/commands/docs.js +181 -0
- package/dist/commands/docs.js.map +1 -0
- package/dist/commands/jobs.d.ts +6 -0
- package/dist/commands/jobs.d.ts.map +1 -0
- package/dist/commands/jobs.js +348 -0
- package/dist/commands/jobs.js.map +1 -0
- package/dist/commands/jobs.test.d.ts +5 -0
- package/dist/commands/jobs.test.d.ts.map +1 -0
- package/dist/commands/jobs.test.js +118 -0
- package/dist/commands/jobs.test.js.map +1 -0
- package/dist/commands/logs.d.ts +8 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +186 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/processors.d.ts +8 -0
- package/dist/commands/processors.d.ts.map +1 -0
- package/dist/commands/processors.js +91 -0
- package/dist/commands/processors.js.map +1 -0
- package/dist/commands/review.d.ts +3 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +370 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/shortcuts.d.ts +20 -0
- package/dist/commands/shortcuts.d.ts.map +1 -0
- package/dist/commands/shortcuts.js +405 -0
- package/dist/commands/shortcuts.js.map +1 -0
- package/dist/commands/tables.d.ts +6 -0
- package/dist/commands/tables.d.ts.map +1 -0
- package/dist/commands/tables.js +189 -0
- package/dist/commands/tables.js.map +1 -0
- package/dist/commands/templates.d.ts +8 -0
- package/dist/commands/templates.d.ts.map +1 -0
- package/dist/commands/templates.js +202 -0
- package/dist/commands/templates.js.map +1 -0
- package/dist/index.d.ts +14 -412
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -46
- package/dist/index.js.map +1 -1
- package/dist/lib/browser.d.ts +11 -0
- package/dist/lib/browser.d.ts.map +1 -0
- package/dist/lib/browser.js +33 -0
- package/dist/lib/browser.js.map +1 -0
- package/dist/lib/client.d.ts +57 -0
- package/dist/lib/client.d.ts.map +1 -0
- package/dist/lib/client.js +176 -0
- package/dist/lib/client.js.map +1 -0
- package/dist/lib/config.d.ts +56 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +110 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/config.test.d.ts +5 -0
- package/dist/lib/config.test.d.ts.map +1 -0
- package/dist/lib/config.test.js +81 -0
- package/dist/lib/config.test.js.map +1 -0
- package/dist/lib/logs.d.ts +89 -0
- package/dist/lib/logs.d.ts.map +1 -0
- package/dist/lib/logs.js +196 -0
- package/dist/lib/logs.js.map +1 -0
- package/dist/lib/logs.test.d.ts +5 -0
- package/dist/lib/logs.test.d.ts.map +1 -0
- package/dist/lib/logs.test.js +183 -0
- package/dist/lib/logs.test.js.map +1 -0
- package/dist/lib/output.d.ts +73 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +204 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/output.test.d.ts +5 -0
- package/dist/lib/output.test.d.ts.map +1 -0
- package/dist/lib/output.test.js +174 -0
- package/dist/lib/output.test.js.map +1 -0
- package/dist/lib/processors.d.ts +73 -0
- package/dist/lib/processors.d.ts.map +1 -0
- package/dist/lib/processors.js +94 -0
- package/dist/lib/processors.js.map +1 -0
- package/dist/lib/processors.test.d.ts +5 -0
- package/dist/lib/processors.test.d.ts.map +1 -0
- package/dist/lib/processors.test.js +83 -0
- package/dist/lib/processors.test.js.map +1 -0
- package/dist/lib/progress.d.ts +44 -0
- package/dist/lib/progress.d.ts.map +1 -0
- package/dist/lib/progress.js +102 -0
- package/dist/lib/progress.js.map +1 -0
- package/dist/lib/templates.d.ts +56 -0
- package/dist/lib/templates.d.ts.map +1 -0
- package/dist/lib/templates.js +204 -0
- package/dist/lib/templates.js.map +1 -0
- package/dist/lib/templates.test.d.ts +5 -0
- package/dist/lib/templates.test.d.ts.map +1 -0
- package/dist/lib/templates.test.js +101 -0
- package/dist/lib/templates.test.js.map +1 -0
- package/dist/types.d.ts +144 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +56 -25
- package/dist/bin.d.ts +0 -1
- package/dist/bin.js +0 -152
- package/dist/bin.js.map +0 -1
- package/dist/chunk-A6YTW4WL.js +0 -499
- package/dist/chunk-A6YTW4WL.js.map +0 -1
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Output formatters for different output modes
|
|
3
|
+
*/
|
|
4
|
+
import Table from 'cli-table3';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
/**
|
|
7
|
+
* Format data based on the output format
|
|
8
|
+
*/
|
|
9
|
+
export function formatOutput(data, format, columns) {
|
|
10
|
+
switch (format) {
|
|
11
|
+
case 'json':
|
|
12
|
+
return formatJson(data);
|
|
13
|
+
case 'jsonl':
|
|
14
|
+
return formatJsonl(data);
|
|
15
|
+
case 'csv':
|
|
16
|
+
return formatCsv(data, columns);
|
|
17
|
+
case 'markdown':
|
|
18
|
+
return formatMarkdown(data, columns);
|
|
19
|
+
case 'table':
|
|
20
|
+
default:
|
|
21
|
+
return formatTable(data, columns);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Format as JSON
|
|
26
|
+
*/
|
|
27
|
+
export function formatJson(data) {
|
|
28
|
+
return JSON.stringify(data, null, 2);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Format as JSON Lines
|
|
32
|
+
*/
|
|
33
|
+
export function formatJsonl(data) {
|
|
34
|
+
if (Array.isArray(data)) {
|
|
35
|
+
return data.map(item => JSON.stringify(item)).join('\n');
|
|
36
|
+
}
|
|
37
|
+
return JSON.stringify(data);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Format as CSV
|
|
41
|
+
*/
|
|
42
|
+
export function formatCsv(data, columns) {
|
|
43
|
+
const items = Array.isArray(data) ? data : [data];
|
|
44
|
+
if (items.length === 0)
|
|
45
|
+
return '';
|
|
46
|
+
// Determine columns from first item if not provided
|
|
47
|
+
const cols = columns || Object.keys(items[0]).map(key => ({ key, header: key }));
|
|
48
|
+
// Header row
|
|
49
|
+
const header = cols.map(c => escapeCsvField(c.header)).join(',');
|
|
50
|
+
// Data rows
|
|
51
|
+
const rows = items.map(item => cols.map(c => escapeCsvField(String(item[c.key] ?? ''))).join(','));
|
|
52
|
+
return [header, ...rows].join('\n');
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Escape a CSV field
|
|
56
|
+
*/
|
|
57
|
+
function escapeCsvField(field) {
|
|
58
|
+
if (field.includes(',') || field.includes('"') || field.includes('\n')) {
|
|
59
|
+
return `"${field.replace(/"/g, '""')}"`;
|
|
60
|
+
}
|
|
61
|
+
return field;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Format as CLI table
|
|
65
|
+
*/
|
|
66
|
+
export function formatTable(data, columns) {
|
|
67
|
+
const items = Array.isArray(data) ? data : [data];
|
|
68
|
+
if (items.length === 0)
|
|
69
|
+
return chalk.dim('No results');
|
|
70
|
+
// Determine columns from first item if not provided
|
|
71
|
+
const cols = columns || Object.keys(items[0]).map(key => ({ key, header: key, width: undefined }));
|
|
72
|
+
const table = new Table({
|
|
73
|
+
head: cols.map(c => chalk.bold(c.header)),
|
|
74
|
+
colWidths: cols.map(c => c.width ?? null),
|
|
75
|
+
style: {
|
|
76
|
+
head: ['cyan'],
|
|
77
|
+
border: ['gray'],
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
for (const item of items) {
|
|
81
|
+
table.push(cols.map(c => formatValue(item[c.key])));
|
|
82
|
+
}
|
|
83
|
+
return table.toString();
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Format as Markdown table
|
|
87
|
+
*/
|
|
88
|
+
export function formatMarkdown(data, columns) {
|
|
89
|
+
const items = Array.isArray(data) ? data : [data];
|
|
90
|
+
if (items.length === 0)
|
|
91
|
+
return '_No results_';
|
|
92
|
+
// Determine columns from first item if not provided
|
|
93
|
+
const cols = columns || Object.keys(items[0]).map(key => ({ key, header: key }));
|
|
94
|
+
// Header row
|
|
95
|
+
const header = `| ${cols.map(c => c.header).join(' | ')} |`;
|
|
96
|
+
const separator = `| ${cols.map(() => '---').join(' | ')} |`;
|
|
97
|
+
// Data rows
|
|
98
|
+
const rows = items.map(item => `| ${cols.map(c => escapeMarkdown(String(item[c.key] ?? ''))).join(' | ')} |`);
|
|
99
|
+
return [header, separator, ...rows].join('\n');
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Escape markdown special characters
|
|
103
|
+
*/
|
|
104
|
+
function escapeMarkdown(text) {
|
|
105
|
+
return text.replace(/\|/g, '\\|').replace(/\n/g, ' ');
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Format a single value for table display
|
|
109
|
+
*/
|
|
110
|
+
function formatValue(value) {
|
|
111
|
+
if (value === null || value === undefined) {
|
|
112
|
+
return chalk.dim('-');
|
|
113
|
+
}
|
|
114
|
+
if (typeof value === 'boolean') {
|
|
115
|
+
return value ? chalk.green('Yes') : chalk.red('No');
|
|
116
|
+
}
|
|
117
|
+
if (value instanceof Date) {
|
|
118
|
+
return value.toISOString();
|
|
119
|
+
}
|
|
120
|
+
if (typeof value === 'object') {
|
|
121
|
+
return JSON.stringify(value);
|
|
122
|
+
}
|
|
123
|
+
return String(value);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Print a success message
|
|
127
|
+
*/
|
|
128
|
+
export function success(message) {
|
|
129
|
+
console.log(chalk.green('✓'), message);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Print an error message
|
|
133
|
+
*/
|
|
134
|
+
export function error(message) {
|
|
135
|
+
console.error(chalk.red('✗'), message);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Print a warning message
|
|
139
|
+
*/
|
|
140
|
+
export function warn(message) {
|
|
141
|
+
console.warn(chalk.yellow('!'), message);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Print an info message
|
|
145
|
+
*/
|
|
146
|
+
export function info(message) {
|
|
147
|
+
console.log(chalk.blue('ℹ'), message);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Format file size in human readable format
|
|
151
|
+
*/
|
|
152
|
+
export function formatFileSize(bytes) {
|
|
153
|
+
if (bytes === null)
|
|
154
|
+
return '-';
|
|
155
|
+
const units = ['B', 'KB', 'MB', 'GB'];
|
|
156
|
+
let unitIndex = 0;
|
|
157
|
+
let size = bytes;
|
|
158
|
+
while (size >= 1024 && unitIndex < units.length - 1) {
|
|
159
|
+
size /= 1024;
|
|
160
|
+
unitIndex++;
|
|
161
|
+
}
|
|
162
|
+
return `${size.toFixed(1)} ${units[unitIndex]}`;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Format a date in relative or absolute format
|
|
166
|
+
*/
|
|
167
|
+
export function formatDate(dateStr) {
|
|
168
|
+
const date = new Date(dateStr);
|
|
169
|
+
const now = new Date();
|
|
170
|
+
const diffMs = now.getTime() - date.getTime();
|
|
171
|
+
const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));
|
|
172
|
+
if (diffDays === 0) {
|
|
173
|
+
const diffHours = Math.floor(diffMs / (1000 * 60 * 60));
|
|
174
|
+
if (diffHours === 0) {
|
|
175
|
+
const diffMins = Math.floor(diffMs / (1000 * 60));
|
|
176
|
+
return `${diffMins}m ago`;
|
|
177
|
+
}
|
|
178
|
+
return `${diffHours}h ago`;
|
|
179
|
+
}
|
|
180
|
+
if (diffDays < 7) {
|
|
181
|
+
return `${diffDays}d ago`;
|
|
182
|
+
}
|
|
183
|
+
return date.toLocaleDateString();
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Format job status with color
|
|
187
|
+
*/
|
|
188
|
+
export function formatStatus(status) {
|
|
189
|
+
switch (status) {
|
|
190
|
+
case 'completed':
|
|
191
|
+
return chalk.green(status);
|
|
192
|
+
case 'running':
|
|
193
|
+
case 'pending':
|
|
194
|
+
return chalk.blue(status);
|
|
195
|
+
case 'queued':
|
|
196
|
+
return chalk.yellow(status);
|
|
197
|
+
case 'failed':
|
|
198
|
+
case 'cancelled':
|
|
199
|
+
return chalk.red(status);
|
|
200
|
+
default:
|
|
201
|
+
return status;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.test.d.ts","sourceRoot":"","sources":["../../src/lib/output.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for output formatters
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect } from 'vitest';
|
|
5
|
+
import { formatOutput, formatJson, formatJsonl, formatCsv, formatMarkdown, formatFileSize, formatDate, formatStatus, } from './output.js';
|
|
6
|
+
describe('output formatters', () => {
|
|
7
|
+
describe('formatJson', () => {
|
|
8
|
+
it('should format object as JSON', () => {
|
|
9
|
+
const data = { name: 'test', value: 123 };
|
|
10
|
+
const result = formatJson(data);
|
|
11
|
+
expect(JSON.parse(result)).toEqual(data);
|
|
12
|
+
});
|
|
13
|
+
it('should format arrays', () => {
|
|
14
|
+
const data = [{ id: 1 }, { id: 2 }];
|
|
15
|
+
const result = formatJson(data);
|
|
16
|
+
expect(JSON.parse(result)).toEqual(data);
|
|
17
|
+
});
|
|
18
|
+
it('should pretty print with indentation', () => {
|
|
19
|
+
const data = { key: 'value' };
|
|
20
|
+
const result = formatJson(data);
|
|
21
|
+
expect(result).toContain('\n');
|
|
22
|
+
expect(result).toContain(' ');
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
describe('formatJsonl', () => {
|
|
26
|
+
it('should format array as JSON lines', () => {
|
|
27
|
+
const data = [{ id: 1 }, { id: 2 }];
|
|
28
|
+
const result = formatJsonl(data);
|
|
29
|
+
const lines = result.split('\n');
|
|
30
|
+
expect(lines).toHaveLength(2);
|
|
31
|
+
expect(JSON.parse(lines[0])).toEqual({ id: 1 });
|
|
32
|
+
expect(JSON.parse(lines[1])).toEqual({ id: 2 });
|
|
33
|
+
});
|
|
34
|
+
it('should format single object as single line', () => {
|
|
35
|
+
const data = { id: 1 };
|
|
36
|
+
const result = formatJsonl(data);
|
|
37
|
+
expect(result).not.toContain('\n');
|
|
38
|
+
expect(JSON.parse(result)).toEqual(data);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
describe('formatCsv', () => {
|
|
42
|
+
it('should format array as CSV', () => {
|
|
43
|
+
const data = [
|
|
44
|
+
{ name: 'Alice', age: 30 },
|
|
45
|
+
{ name: 'Bob', age: 25 },
|
|
46
|
+
];
|
|
47
|
+
const result = formatCsv(data);
|
|
48
|
+
const lines = result.split('\n');
|
|
49
|
+
expect(lines[0]).toBe('name,age');
|
|
50
|
+
expect(lines[1]).toBe('Alice,30');
|
|
51
|
+
expect(lines[2]).toBe('Bob,25');
|
|
52
|
+
});
|
|
53
|
+
it('should escape fields with commas', () => {
|
|
54
|
+
const data = [{ name: 'Last, First', value: 'ok' }];
|
|
55
|
+
const result = formatCsv(data);
|
|
56
|
+
expect(result).toContain('"Last, First"');
|
|
57
|
+
});
|
|
58
|
+
it('should escape fields with quotes', () => {
|
|
59
|
+
const data = [{ name: 'Say "hello"', value: 'ok' }];
|
|
60
|
+
const result = formatCsv(data);
|
|
61
|
+
expect(result).toContain('"Say ""hello"""');
|
|
62
|
+
});
|
|
63
|
+
it('should use custom columns', () => {
|
|
64
|
+
const data = [{ first: 'A', second: 'B', third: 'C' }];
|
|
65
|
+
const columns = [
|
|
66
|
+
{ key: 'first', header: 'First Column' },
|
|
67
|
+
{ key: 'third', header: 'Third Column' },
|
|
68
|
+
];
|
|
69
|
+
const result = formatCsv(data, columns);
|
|
70
|
+
const lines = result.split('\n');
|
|
71
|
+
expect(lines[0]).toBe('First Column,Third Column');
|
|
72
|
+
expect(lines[1]).toBe('A,C');
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
describe('formatMarkdown', () => {
|
|
76
|
+
it('should format as markdown table', () => {
|
|
77
|
+
const data = [
|
|
78
|
+
{ name: 'Alice', age: 30 },
|
|
79
|
+
{ name: 'Bob', age: 25 },
|
|
80
|
+
];
|
|
81
|
+
const result = formatMarkdown(data);
|
|
82
|
+
expect(result).toContain('| name | age |');
|
|
83
|
+
expect(result).toContain('| --- | --- |');
|
|
84
|
+
expect(result).toContain('| Alice | 30 |');
|
|
85
|
+
});
|
|
86
|
+
it('should escape pipe characters', () => {
|
|
87
|
+
const data = [{ name: 'A | B', value: 'ok' }];
|
|
88
|
+
const result = formatMarkdown(data);
|
|
89
|
+
expect(result).toContain('A \\| B');
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
describe('formatOutput', () => {
|
|
93
|
+
const testData = [{ id: 1, name: 'test' }];
|
|
94
|
+
it('should format as json', () => {
|
|
95
|
+
const result = formatOutput(testData, 'json');
|
|
96
|
+
expect(JSON.parse(result)).toEqual(testData);
|
|
97
|
+
});
|
|
98
|
+
it('should format as jsonl', () => {
|
|
99
|
+
const result = formatOutput(testData, 'jsonl');
|
|
100
|
+
expect(JSON.parse(result)).toEqual(testData[0]);
|
|
101
|
+
});
|
|
102
|
+
it('should format as csv', () => {
|
|
103
|
+
const result = formatOutput(testData, 'csv');
|
|
104
|
+
expect(result).toContain('id,name');
|
|
105
|
+
});
|
|
106
|
+
it('should format as markdown', () => {
|
|
107
|
+
const result = formatOutput(testData, 'markdown');
|
|
108
|
+
expect(result).toContain('| id | name |');
|
|
109
|
+
});
|
|
110
|
+
it('should default to table format', () => {
|
|
111
|
+
const result = formatOutput(testData, 'table');
|
|
112
|
+
// Table format includes box-drawing characters
|
|
113
|
+
expect(result).toBeTruthy();
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
describe('formatFileSize', () => {
|
|
117
|
+
it('should format bytes', () => {
|
|
118
|
+
expect(formatFileSize(500)).toBe('500.0 B');
|
|
119
|
+
});
|
|
120
|
+
it('should format kilobytes', () => {
|
|
121
|
+
expect(formatFileSize(1024)).toBe('1.0 KB');
|
|
122
|
+
expect(formatFileSize(2048)).toBe('2.0 KB');
|
|
123
|
+
});
|
|
124
|
+
it('should format megabytes', () => {
|
|
125
|
+
expect(formatFileSize(1024 * 1024)).toBe('1.0 MB');
|
|
126
|
+
expect(formatFileSize(5 * 1024 * 1024)).toBe('5.0 MB');
|
|
127
|
+
});
|
|
128
|
+
it('should format gigabytes', () => {
|
|
129
|
+
expect(formatFileSize(1024 * 1024 * 1024)).toBe('1.0 GB');
|
|
130
|
+
});
|
|
131
|
+
it('should handle null', () => {
|
|
132
|
+
expect(formatFileSize(null)).toBe('-');
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
describe('formatDate', () => {
|
|
136
|
+
it('should format recent dates as relative', () => {
|
|
137
|
+
const now = new Date();
|
|
138
|
+
const fiveMinutesAgo = new Date(now.getTime() - 5 * 60 * 1000);
|
|
139
|
+
const result = formatDate(fiveMinutesAgo.toISOString());
|
|
140
|
+
expect(result).toContain('m ago');
|
|
141
|
+
});
|
|
142
|
+
it('should format hours ago', () => {
|
|
143
|
+
const now = new Date();
|
|
144
|
+
const twoHoursAgo = new Date(now.getTime() - 2 * 60 * 60 * 1000);
|
|
145
|
+
const result = formatDate(twoHoursAgo.toISOString());
|
|
146
|
+
expect(result).toContain('h ago');
|
|
147
|
+
});
|
|
148
|
+
it('should format days ago', () => {
|
|
149
|
+
const now = new Date();
|
|
150
|
+
const threeDaysAgo = new Date(now.getTime() - 3 * 24 * 60 * 60 * 1000);
|
|
151
|
+
const result = formatDate(threeDaysAgo.toISOString());
|
|
152
|
+
expect(result).toContain('d ago');
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
describe('formatStatus', () => {
|
|
156
|
+
it('should format completed status', () => {
|
|
157
|
+
const result = formatStatus('completed');
|
|
158
|
+
expect(result).toContain('completed');
|
|
159
|
+
});
|
|
160
|
+
it('should format failed status', () => {
|
|
161
|
+
const result = formatStatus('failed');
|
|
162
|
+
expect(result).toContain('failed');
|
|
163
|
+
});
|
|
164
|
+
it('should format running status', () => {
|
|
165
|
+
const result = formatStatus('running');
|
|
166
|
+
expect(result).toContain('running');
|
|
167
|
+
});
|
|
168
|
+
it('should format queued status', () => {
|
|
169
|
+
const result = formatStatus('queued');
|
|
170
|
+
expect(result).toContain('queued');
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
//# sourceMappingURL=output.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.test.js","sourceRoot":"","sources":["../../src/lib/output.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,YAAY,EACZ,UAAU,EACV,WAAW,EACX,SAAS,EACT,cAAc,EACd,cAAc,EACd,UAAU,EACV,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAEhC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAEhC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAEhC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACpC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEjC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YAEjC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,IAAI,GAAG;gBACX,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE;gBAC1B,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE;aACzB,CAAC;YACF,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEjC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAClC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAClC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAE/B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAE/B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG;gBACd,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE;gBACxC,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE;aACzC,CAAC;YACF,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEjC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,IAAI,GAAG;gBACX,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE;gBAC1B,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE;aACzB,CAAC;YACF,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YAEpC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;YAEpC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,MAAM,QAAQ,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAE3C,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/C,+CAA+C;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC7B,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,CAAC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnD,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,CAAC,cAAc,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAC5B,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAE/D,MAAM,MAAM,GAAG,UAAU,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC;YACxD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAEjE,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAEvE,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Processor Plugin System
|
|
3
|
+
*
|
|
4
|
+
* Provides vendor-agnostic abstraction for different OCR/extraction providers.
|
|
5
|
+
* Inspired by Simon Willison's llm plugin architecture.
|
|
6
|
+
*/
|
|
7
|
+
export interface ProcessorOptions {
|
|
8
|
+
/** Pages to process (e.g., "1-5", "1,3,5", "all") */
|
|
9
|
+
pages?: string;
|
|
10
|
+
/** Output format preference */
|
|
11
|
+
format?: 'markdown' | 'json' | 'html';
|
|
12
|
+
/** Language hint for OCR */
|
|
13
|
+
language?: string;
|
|
14
|
+
/** Enable table detection */
|
|
15
|
+
tables?: boolean;
|
|
16
|
+
/** Enable form field detection */
|
|
17
|
+
forms?: boolean;
|
|
18
|
+
/** Custom processor-specific options */
|
|
19
|
+
custom?: Record<string, unknown>;
|
|
20
|
+
}
|
|
21
|
+
export interface ProcessorResult {
|
|
22
|
+
pages: Array<{
|
|
23
|
+
page_number: number;
|
|
24
|
+
text: string;
|
|
25
|
+
tables?: Array<{
|
|
26
|
+
content: string;
|
|
27
|
+
confidence?: number;
|
|
28
|
+
}>;
|
|
29
|
+
entities?: Array<{
|
|
30
|
+
type: string;
|
|
31
|
+
value: string;
|
|
32
|
+
confidence?: number;
|
|
33
|
+
}>;
|
|
34
|
+
}>;
|
|
35
|
+
metadata?: Record<string, unknown>;
|
|
36
|
+
}
|
|
37
|
+
export interface Processor {
|
|
38
|
+
/** Unique processor identifier */
|
|
39
|
+
id: string;
|
|
40
|
+
/** Human-readable name */
|
|
41
|
+
name: string;
|
|
42
|
+
/** Description */
|
|
43
|
+
description: string;
|
|
44
|
+
/** Whether this processor is available (has required config/API keys) */
|
|
45
|
+
isAvailable(): Promise<boolean>;
|
|
46
|
+
/** Process a document */
|
|
47
|
+
process(documentUuid: string, options?: ProcessorOptions): Promise<ProcessorResult>;
|
|
48
|
+
}
|
|
49
|
+
export declare const BUILTIN_PROCESSORS: Record<string, {
|
|
50
|
+
id: string;
|
|
51
|
+
name: string;
|
|
52
|
+
description: string;
|
|
53
|
+
apiEndpoint: string;
|
|
54
|
+
requiresKey?: string;
|
|
55
|
+
}>;
|
|
56
|
+
export declare const PROCESSOR_ALIASES: Record<string, string>;
|
|
57
|
+
/**
|
|
58
|
+
* Resolve a processor name (including aliases) to a processor ID
|
|
59
|
+
*/
|
|
60
|
+
export declare function resolveProcessor(nameOrAlias: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* Get processor info by ID
|
|
63
|
+
*/
|
|
64
|
+
export declare function getProcessor(id: string): typeof BUILTIN_PROCESSORS[string] | undefined;
|
|
65
|
+
/**
|
|
66
|
+
* List all available processors
|
|
67
|
+
*/
|
|
68
|
+
export declare function listProcessors(): Array<typeof BUILTIN_PROCESSORS[string]>;
|
|
69
|
+
/**
|
|
70
|
+
* Format processor list for display
|
|
71
|
+
*/
|
|
72
|
+
export declare function formatProcessorList(): string;
|
|
73
|
+
//# sourceMappingURL=processors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processors.d.ts","sourceRoot":"","sources":["../../src/lib/processors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IACtC,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,KAAK,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,KAAK,CAAC;YACb,OAAO,EAAE,MAAM,CAAC;YAChB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC,CAAC;QACH,QAAQ,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;YACd,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,SAAS;IACxB,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,yBAAyB;IACzB,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CACrF;AAGD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAwCA,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CASpD,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,kBAAkB,CAAC,MAAM,CAAC,GAAG,SAAS,CAGtF;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,KAAK,CAAC,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAEzE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAU5C"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Processor Plugin System
|
|
3
|
+
*
|
|
4
|
+
* Provides vendor-agnostic abstraction for different OCR/extraction providers.
|
|
5
|
+
* Inspired by Simon Willison's llm plugin architecture.
|
|
6
|
+
*/
|
|
7
|
+
// Built-in processor definitions
|
|
8
|
+
export const BUILTIN_PROCESSORS = {
|
|
9
|
+
'docai': {
|
|
10
|
+
id: 'docai',
|
|
11
|
+
name: 'Google Document AI',
|
|
12
|
+
description: 'Google Cloud Document AI for high-accuracy OCR and form parsing',
|
|
13
|
+
apiEndpoint: 'api/v1/ocr/google-docai',
|
|
14
|
+
requiresKey: 'GOOGLE_DOCAI',
|
|
15
|
+
},
|
|
16
|
+
'qwen': {
|
|
17
|
+
id: 'qwen',
|
|
18
|
+
name: 'Qwen VL',
|
|
19
|
+
description: 'Qwen Vision-Language model for document understanding',
|
|
20
|
+
apiEndpoint: 'api/qwen/extract',
|
|
21
|
+
},
|
|
22
|
+
'llamaparse': {
|
|
23
|
+
id: 'llamaparse',
|
|
24
|
+
name: 'LlamaParse',
|
|
25
|
+
description: 'LlamaIndex parser for complex document layouts',
|
|
26
|
+
apiEndpoint: 'api/parse/llama',
|
|
27
|
+
requiresKey: 'LLAMA_CLOUD',
|
|
28
|
+
},
|
|
29
|
+
'gemini': {
|
|
30
|
+
id: 'gemini',
|
|
31
|
+
name: 'Google Gemini',
|
|
32
|
+
description: 'Google Gemini multimodal model for document analysis',
|
|
33
|
+
apiEndpoint: 'api/parse/gemini',
|
|
34
|
+
requiresKey: 'GOOGLE_GEMINI',
|
|
35
|
+
},
|
|
36
|
+
'pdfplumber': {
|
|
37
|
+
id: 'pdfplumber',
|
|
38
|
+
name: 'PDFPlumber',
|
|
39
|
+
description: 'Local Python-based PDF text extraction (no OCR)',
|
|
40
|
+
apiEndpoint: 'api/extract-text',
|
|
41
|
+
},
|
|
42
|
+
'default': {
|
|
43
|
+
id: 'default',
|
|
44
|
+
name: 'OkraPDF Default',
|
|
45
|
+
description: 'Automatic processor selection based on document type',
|
|
46
|
+
apiEndpoint: 'api/v1/extract',
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
// Processor aliases for convenience
|
|
50
|
+
export const PROCESSOR_ALIASES = {
|
|
51
|
+
'google': 'docai',
|
|
52
|
+
'gcp': 'docai',
|
|
53
|
+
'llama': 'llamaparse',
|
|
54
|
+
'lp': 'llamaparse',
|
|
55
|
+
'q': 'qwen',
|
|
56
|
+
'g': 'gemini',
|
|
57
|
+
'local': 'pdfplumber',
|
|
58
|
+
'auto': 'default',
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Resolve a processor name (including aliases) to a processor ID
|
|
62
|
+
*/
|
|
63
|
+
export function resolveProcessor(nameOrAlias) {
|
|
64
|
+
const lower = nameOrAlias.toLowerCase();
|
|
65
|
+
return PROCESSOR_ALIASES[lower] || lower;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get processor info by ID
|
|
69
|
+
*/
|
|
70
|
+
export function getProcessor(id) {
|
|
71
|
+
const resolved = resolveProcessor(id);
|
|
72
|
+
return BUILTIN_PROCESSORS[resolved];
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* List all available processors
|
|
76
|
+
*/
|
|
77
|
+
export function listProcessors() {
|
|
78
|
+
return Object.values(BUILTIN_PROCESSORS);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Format processor list for display
|
|
82
|
+
*/
|
|
83
|
+
export function formatProcessorList() {
|
|
84
|
+
const processors = listProcessors();
|
|
85
|
+
const lines = processors.map(p => {
|
|
86
|
+
const aliases = Object.entries(PROCESSOR_ALIASES)
|
|
87
|
+
.filter(([_, v]) => v === p.id)
|
|
88
|
+
.map(([k]) => k);
|
|
89
|
+
const aliasStr = aliases.length > 0 ? ` (aliases: ${aliases.join(', ')})` : '';
|
|
90
|
+
return ` ${p.id.padEnd(12)} ${p.name}${aliasStr}\n ${p.description}`;
|
|
91
|
+
});
|
|
92
|
+
return lines.join('\n\n');
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=processors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processors.js","sourceRoot":"","sources":["../../src/lib/processors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processors.test.d.ts","sourceRoot":"","sources":["../../src/lib/processors.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|