@okrapdf/cli 0.3.0 → 0.3.2

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 (53) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +18 -4
  3. package/dist/cli.js.map +1 -1
  4. package/dist/index.js +0 -0
  5. package/dist/lib/config.d.ts +8 -0
  6. package/dist/lib/config.d.ts.map +1 -1
  7. package/dist/lib/config.js +15 -0
  8. package/dist/lib/config.js.map +1 -1
  9. package/dist/lib/output.d.ts +1 -1
  10. package/dist/lib/output.d.ts.map +1 -1
  11. package/dist/lib/output.js +53 -2
  12. package/dist/lib/output.js.map +1 -1
  13. package/package.json +1 -1
  14. package/dist/commands/docs.d.ts +0 -6
  15. package/dist/commands/docs.d.ts.map +0 -1
  16. package/dist/commands/docs.js +0 -157
  17. package/dist/commands/docs.js.map +0 -1
  18. package/dist/commands/step.d.ts +0 -17
  19. package/dist/commands/step.d.ts.map +0 -1
  20. package/dist/commands/step.js +0 -212
  21. package/dist/commands/step.js.map +0 -1
  22. package/dist/commands/workflow.d.ts +0 -18
  23. package/dist/commands/workflow.d.ts.map +0 -1
  24. package/dist/commands/workflow.js +0 -340
  25. package/dist/commands/workflow.js.map +0 -1
  26. package/dist/lib/dom-emitter.d.ts +0 -14
  27. package/dist/lib/dom-emitter.d.ts.map +0 -1
  28. package/dist/lib/dom-emitter.js +0 -66
  29. package/dist/lib/dom-emitter.js.map +0 -1
  30. package/dist/lib/dom-ops.d.ts +0 -55
  31. package/dist/lib/dom-ops.d.ts.map +0 -1
  32. package/dist/lib/dom-ops.js +0 -93
  33. package/dist/lib/dom-ops.js.map +0 -1
  34. package/dist/lib/pdfquery.d.ts +0 -57
  35. package/dist/lib/pdfquery.d.ts.map +0 -1
  36. package/dist/lib/pdfquery.js +0 -101
  37. package/dist/lib/pdfquery.js.map +0 -1
  38. package/dist/lib/sinks/file.d.ts +0 -8
  39. package/dist/lib/sinks/file.d.ts.map +0 -1
  40. package/dist/lib/sinks/file.js +0 -30
  41. package/dist/lib/sinks/file.js.map +0 -1
  42. package/dist/lib/sinks/index.d.ts +0 -6
  43. package/dist/lib/sinks/index.d.ts.map +0 -1
  44. package/dist/lib/sinks/index.js +0 -30
  45. package/dist/lib/sinks/index.js.map +0 -1
  46. package/dist/lib/sinks/partykit.d.ts +0 -14
  47. package/dist/lib/sinks/partykit.d.ts.map +0 -1
  48. package/dist/lib/sinks/partykit.js +0 -124
  49. package/dist/lib/sinks/partykit.js.map +0 -1
  50. package/dist/lib/sinks/stdout.d.ts +0 -6
  51. package/dist/lib/sinks/stdout.d.ts.map +0 -1
  52. package/dist/lib/sinks/stdout.js +0 -9
  53. package/dist/lib/sinks/stdout.js.map +0 -1
@@ -1,212 +0,0 @@
1
- /**
2
- * Step Command - Run individual workflow nodes
3
- *
4
- * Usage:
5
- * okra step run <node-name> --input '{"pageUrls": [...], "jobId": "xxx"}'
6
- * okra step list
7
- * okra step describe <node-name>
8
- *
9
- * Designed for testing individual workflow nodes in isolation.
10
- */
11
- import { Command } from 'commander';
12
- import chalk from 'chalk';
13
- import { formatOutput, success, error, info } from '../lib/output.js';
14
- import { post, get, EXIT_CODES } from '../lib/client.js';
15
- import { withSpinner } from '../lib/progress.js';
16
- /**
17
- * Create the 'step' command group
18
- */
19
- export function createStepCommand() {
20
- const step = new Command('step')
21
- .description('Run and manage individual workflow nodes');
22
- // okra step list
23
- step
24
- .command('list')
25
- .description('List all available workflow nodes')
26
- .option('-o, --output <format>', 'Output format (table, json)', 'table')
27
- .option('--group <group>', 'Filter by group (trigger, source, transform, ai, output, utility)')
28
- .action(async (options) => {
29
- try {
30
- const response = await withSpinner('Fetching nodes', () => get('api/v1/workflow/nodes'));
31
- let nodes = response.nodes;
32
- // Filter by group if specified
33
- if (options.group) {
34
- nodes = nodes.filter((n) => n.group.includes(options.group));
35
- }
36
- if (options.output === 'json') {
37
- console.log(formatOutput(nodes, 'json'));
38
- }
39
- else {
40
- console.log(chalk.bold('\nAvailable Workflow Nodes:\n'));
41
- // Group nodes by category
42
- const grouped = {};
43
- for (const node of nodes) {
44
- const group = node.group[0] || 'utility';
45
- if (!grouped[group])
46
- grouped[group] = [];
47
- grouped[group].push(node);
48
- }
49
- for (const [group, groupNodes] of Object.entries(grouped)) {
50
- console.log(chalk.cyan(` ${group.toUpperCase()}`));
51
- for (const node of groupNodes) {
52
- console.log(` ${chalk.green(node.name.padEnd(20))} ${node.displayName}`);
53
- if (node.description) {
54
- console.log(` ${' '.repeat(20)} ${chalk.dim(node.description)}`);
55
- }
56
- }
57
- console.log();
58
- }
59
- console.log(chalk.dim(`Use 'okra step describe <node>' for details`));
60
- }
61
- }
62
- catch (err) {
63
- error(err.message || 'Failed to list nodes');
64
- process.exit(EXIT_CODES.GENERAL_ERROR);
65
- }
66
- });
67
- // okra step describe <node>
68
- step
69
- .command('describe <node>')
70
- .description('Show detailed info about a workflow node')
71
- .option('-o, --output <format>', 'Output format (table, json)', 'table')
72
- .action(async (nodeName, options) => {
73
- try {
74
- const response = await withSpinner('Fetching node info', () => get(`api/v1/workflow/nodes/${nodeName}`));
75
- if (options.output === 'json') {
76
- console.log(formatOutput(response, 'json'));
77
- }
78
- else {
79
- const node = response;
80
- console.log();
81
- console.log(chalk.bold.cyan(node.displayName));
82
- console.log(chalk.dim(`Node: ${node.name} v${node.version}`));
83
- console.log();
84
- if (node.description) {
85
- console.log(node.description);
86
- console.log();
87
- }
88
- // Inputs
89
- if (node.inputs.length > 0) {
90
- console.log(chalk.bold('Inputs:'));
91
- for (const input of node.inputs) {
92
- const required = input.required ? chalk.red('*') : '';
93
- console.log(` ${input.name}${required} (${input.type})`);
94
- if (input.displayName !== input.name) {
95
- console.log(` ${chalk.dim(input.displayName)}`);
96
- }
97
- }
98
- console.log();
99
- }
100
- // Outputs
101
- if (node.outputs.length > 0) {
102
- console.log(chalk.bold('Outputs:'));
103
- for (const output of node.outputs) {
104
- console.log(` ${output.name} (${output.type})`);
105
- }
106
- console.log();
107
- }
108
- // Properties (parameters)
109
- if (node.properties.length > 0) {
110
- console.log(chalk.bold('Parameters:'));
111
- for (const prop of node.properties) {
112
- const defaultVal = prop.default !== undefined ? ` [default: ${JSON.stringify(prop.default)}]` : '';
113
- console.log(` --${prop.name} (${prop.type})${defaultVal}`);
114
- if (prop.description) {
115
- console.log(` ${chalk.dim(prop.description)}`);
116
- }
117
- }
118
- console.log();
119
- }
120
- console.log(chalk.dim(`Run with: okra step run ${node.name} --input '{...}'`));
121
- }
122
- }
123
- catch (err) {
124
- error(err.message || `Node '${nodeName}' not found`);
125
- process.exit(EXIT_CODES.INVALID_ARGS);
126
- }
127
- });
128
- // okra step run <node> --input <json>
129
- step
130
- .command('run <node>')
131
- .description('Execute a workflow node with input data')
132
- .requiredOption('-i, --input <json>', 'Input data as JSON string')
133
- .option('-j, --job-id <jobId>', 'Job ID for context')
134
- .option('-p, --param <key=value...>', 'Node parameters (e.g., -p model=qwen/qwen2.5-vl-72b)')
135
- .option('--dry-run', 'Validate inputs without executing')
136
- .option('-o, --output <format>', 'Output format (json, table)', 'json')
137
- .option('-q, --quiet', 'Only output the result')
138
- .action(async (nodeName, options) => {
139
- try {
140
- // Parse input JSON
141
- let input;
142
- try {
143
- input = JSON.parse(options.input);
144
- }
145
- catch {
146
- error('Invalid JSON input. Use: --input \'{"key": "value"}\'');
147
- process.exit(EXIT_CODES.INVALID_ARGS);
148
- }
149
- // Parse parameters
150
- const parameters = {};
151
- if (options.param) {
152
- for (const p of options.param) {
153
- const [key, ...valueParts] = p.split('=');
154
- const value = valueParts.join('=');
155
- // Try to parse as JSON, otherwise use as string
156
- try {
157
- parameters[key] = JSON.parse(value);
158
- }
159
- catch {
160
- parameters[key] = value;
161
- }
162
- }
163
- }
164
- // Build request
165
- const request = {
166
- nodeType: nodeName,
167
- input,
168
- parameters,
169
- jobId: options.jobId || `step-${Date.now()}`,
170
- dryRun: options.dryRun || false,
171
- };
172
- if (!options.quiet) {
173
- info(`Running node: ${nodeName}`);
174
- if (options.dryRun) {
175
- info('(dry run - no execution)');
176
- }
177
- }
178
- const response = await withSpinner(options.quiet ? '' : 'Executing', () => post('api/v1/workflow/step/run', request));
179
- if (response.status === 'error' && response.error) {
180
- error(`Node failed: ${response.error.message}`);
181
- if (options.output === 'json') {
182
- console.log(formatOutput(response, 'json'));
183
- }
184
- process.exit(EXIT_CODES.JOB_FAILED);
185
- }
186
- if (options.output === 'json') {
187
- console.log(formatOutput(response, 'json'));
188
- }
189
- else {
190
- console.log();
191
- success(`Node ${nodeName} completed`);
192
- console.log(chalk.dim(`Execution ID: ${response.executionId}`));
193
- if (response.duration_ms) {
194
- console.log(chalk.dim(`Duration: ${response.duration_ms}ms`));
195
- }
196
- if (response.metadata) {
197
- console.log(chalk.dim(`Metadata: ${JSON.stringify(response.metadata)}`));
198
- }
199
- console.log();
200
- console.log(chalk.bold('Output:'));
201
- console.log(JSON.stringify(response.output, null, 2));
202
- }
203
- }
204
- catch (err) {
205
- error(err.message || 'Failed to run node');
206
- process.exit(EXIT_CODES.GENERAL_ERROR);
207
- }
208
- });
209
- return step;
210
- }
211
- export default createStepCommand;
212
- //# sourceMappingURL=step.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"step.js","sourceRoot":"","sources":["../../src/commands/step.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- /**
2
- * Workflow Command - Run and manage workflows
3
- *
4
- * Usage:
5
- * okra workflow list
6
- * okra workflow describe <workflow-id>
7
- * okra workflow run --id <workflow-id> --input '{"pdfUrl": "...", "jobId": "..."}'
8
- * okra workflow status <execution-id>
9
- *
10
- * Designed for running complete OCR pipelines.
11
- */
12
- import { Command } from 'commander';
13
- /**
14
- * Create the 'workflow' command group
15
- */
16
- export declare function createWorkflowCommand(): Command;
17
- export default createWorkflowCommand;
18
- //# sourceMappingURL=workflow.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0CpC;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CA8S/C;AAwED,eAAe,qBAAqB,CAAC"}
@@ -1,340 +0,0 @@
1
- /**
2
- * Workflow Command - Run and manage workflows
3
- *
4
- * Usage:
5
- * okra workflow list
6
- * okra workflow describe <workflow-id>
7
- * okra workflow run --id <workflow-id> --input '{"pdfUrl": "...", "jobId": "..."}'
8
- * okra workflow status <execution-id>
9
- *
10
- * Designed for running complete OCR pipelines.
11
- */
12
- import { Command } from 'commander';
13
- import chalk from 'chalk';
14
- import { formatOutput, success, error, info } from '../lib/output.js';
15
- import { post, get, EXIT_CODES } from '../lib/client.js';
16
- import { withSpinner, pollWithProgress } from '../lib/progress.js';
17
- /**
18
- * Create the 'workflow' command group
19
- */
20
- export function createWorkflowCommand() {
21
- const workflow = new Command('workflow')
22
- .description('Run and manage OCR workflows');
23
- // okra workflow list
24
- workflow
25
- .command('list')
26
- .description('List available workflows')
27
- .option('-o, --output <format>', 'Output format (table, json)', 'table')
28
- .option('--tag <tag>', 'Filter by tag')
29
- .action(async (options) => {
30
- try {
31
- const response = await withSpinner('Fetching workflows', () => get('api/v1/workflow/definitions'));
32
- let workflows = response.workflows;
33
- // Filter by tag if specified
34
- if (options.tag) {
35
- workflows = workflows.filter((w) => w.tags?.includes(options.tag));
36
- }
37
- if (options.output === 'json') {
38
- console.log(formatOutput(workflows, 'json'));
39
- }
40
- else {
41
- console.log(chalk.bold('\nAvailable Workflows:\n'));
42
- for (const wf of workflows) {
43
- console.log(` ${chalk.green(wf.name.padEnd(30))} v${wf.version}`);
44
- console.log(` ${' '.repeat(30)} ${chalk.cyan(wf.displayName)}`);
45
- if (wf.description) {
46
- console.log(` ${' '.repeat(30)} ${chalk.dim(wf.description.slice(0, 60))}...`);
47
- }
48
- if (wf.tags && wf.tags.length > 0) {
49
- console.log(` ${' '.repeat(30)} ${chalk.dim(`Tags: ${wf.tags.join(', ')}`)}`);
50
- }
51
- console.log();
52
- }
53
- console.log(chalk.dim(`Use 'okra workflow describe <name>' for details`));
54
- }
55
- }
56
- catch (err) {
57
- error(err.message || 'Failed to list workflows');
58
- process.exit(EXIT_CODES.GENERAL_ERROR);
59
- }
60
- });
61
- // okra workflow describe <workflow>
62
- workflow
63
- .command('describe <workflow>')
64
- .description('Show detailed info about a workflow')
65
- .option('-o, --output <format>', 'Output format (table, json)', 'table')
66
- .action(async (workflowName, options) => {
67
- try {
68
- const response = await withSpinner('Fetching workflow', () => get(`api/v1/workflow/definitions/${workflowName}`));
69
- if (options.output === 'json') {
70
- console.log(formatOutput(response, 'json'));
71
- }
72
- else {
73
- const wf = response;
74
- console.log();
75
- console.log(chalk.bold.cyan(wf.displayName));
76
- console.log(chalk.dim(`Workflow: ${wf.name} v${wf.version}`));
77
- console.log();
78
- if (wf.description) {
79
- console.log(wf.description);
80
- console.log();
81
- }
82
- // Node flow visualization
83
- console.log(chalk.bold('Pipeline:'));
84
- const nodeMap = new Map(wf.nodes.map((n) => [n.id, n]));
85
- // Simple linear display (for complex DAGs, would need proper topo sort)
86
- console.log();
87
- for (let i = 0; i < wf.nodes.length; i++) {
88
- const node = wf.nodes[i];
89
- const isLast = i === wf.nodes.length - 1;
90
- const arrow = isLast ? '' : ' → ';
91
- process.stdout.write(chalk.green(node.type) + arrow);
92
- }
93
- console.log('\n');
94
- // Node details
95
- console.log(chalk.bold('Nodes:'));
96
- for (const node of wf.nodes) {
97
- console.log(` ${chalk.cyan(node.id)} (${node.type})`);
98
- if (node.parameters && Object.keys(node.parameters).length > 0) {
99
- for (const [key, value] of Object.entries(node.parameters)) {
100
- console.log(` ${chalk.dim(key)}: ${JSON.stringify(value)}`);
101
- }
102
- }
103
- }
104
- console.log();
105
- if (wf.tags && wf.tags.length > 0) {
106
- console.log(chalk.bold('Tags:'), wf.tags.join(', '));
107
- console.log();
108
- }
109
- console.log(chalk.dim(`Run with: okra workflow run --id ${wf.name} --input '{...}'`));
110
- }
111
- }
112
- catch (err) {
113
- error(err.message || `Workflow '${workflowName}' not found`);
114
- process.exit(EXIT_CODES.INVALID_ARGS);
115
- }
116
- });
117
- // okra workflow run --id <workflow> --input <json>
118
- workflow
119
- .command('run')
120
- .description('Execute a workflow with input data')
121
- .requiredOption('--id <workflow>', 'Workflow ID to run')
122
- .requiredOption('-i, --input <json>', 'Input data as JSON string')
123
- .option('-j, --job-id <jobId>', 'Custom job ID')
124
- .option('--no-wait', 'Start workflow without waiting for completion')
125
- .option('--timeout <seconds>', 'Timeout in seconds (default: 3600)', '3600')
126
- .option('-o, --output <format>', 'Output format (json, table)', 'json')
127
- .option('-q, --quiet', 'Only output the result')
128
- .action(async (options) => {
129
- try {
130
- // Parse input JSON
131
- let input;
132
- try {
133
- input = JSON.parse(options.input);
134
- }
135
- catch {
136
- error('Invalid JSON input. Use: --input \'{"key": "value"}\'');
137
- process.exit(EXIT_CODES.INVALID_ARGS);
138
- }
139
- const jobId = options.jobId || `wf-${Date.now()}`;
140
- // Build request
141
- const request = {
142
- workflowId: options.id,
143
- input,
144
- jobId,
145
- };
146
- if (!options.quiet) {
147
- info(`Starting workflow: ${options.id}`);
148
- info(`Job ID: ${jobId}`);
149
- }
150
- const response = await withSpinner(options.quiet ? '' : 'Starting workflow', () => post('api/v1/workflow/run', request));
151
- if (!options.wait) {
152
- // Return immediately
153
- if (options.output === 'json') {
154
- console.log(formatOutput(response, 'json'));
155
- }
156
- else {
157
- success('Workflow started');
158
- console.log(` Execution ID: ${response.executionId}`);
159
- console.log(` Job ID: ${response.jobId}`);
160
- console.log();
161
- console.log(chalk.dim(`Check status: okra workflow status ${response.executionId}`));
162
- }
163
- return;
164
- }
165
- // Poll for completion
166
- const timeoutMs = parseInt(options.timeout, 10) * 1000;
167
- const startTime = Date.now();
168
- const result = await pollWithProgress(async () => {
169
- const status = await get(`api/v1/workflow/executions/${response.executionId}`);
170
- const done = ['completed', 'failed', 'cancelled'].includes(status.status);
171
- // Calculate progress from node statuses
172
- let progress = 0;
173
- let total = 0;
174
- if (status.nodeStatuses) {
175
- total = Object.keys(status.nodeStatuses).length;
176
- progress = Object.values(status.nodeStatuses).filter((n) => n.status === 'success' || n.status === 'error').length;
177
- }
178
- return {
179
- done,
180
- progress,
181
- total: total || undefined,
182
- data: status,
183
- };
184
- }, {
185
- label: options.quiet ? '' : 'Running workflow',
186
- interval: 3000,
187
- timeout: timeoutMs,
188
- });
189
- if (result.status === 'failed' && result.error) {
190
- error(`Workflow failed: ${result.error.message}`);
191
- if (options.output === 'json') {
192
- console.log(formatOutput(result, 'json'));
193
- }
194
- process.exit(EXIT_CODES.JOB_FAILED);
195
- }
196
- if (result.status === 'cancelled') {
197
- error('Workflow was cancelled');
198
- process.exit(EXIT_CODES.JOB_FAILED);
199
- }
200
- // Success
201
- if (options.output === 'json') {
202
- console.log(formatOutput(result, 'json'));
203
- }
204
- else {
205
- console.log();
206
- success(`Workflow ${options.id} completed`);
207
- console.log(chalk.dim(`Execution ID: ${response.executionId}`));
208
- const duration = Date.now() - startTime;
209
- console.log(chalk.dim(`Duration: ${(duration / 1000).toFixed(1)}s`));
210
- if (result.nodeStatuses) {
211
- console.log();
212
- console.log(chalk.bold('Node Results:'));
213
- for (const [nodeId, status] of Object.entries(result.nodeStatuses)) {
214
- const icon = status.status === 'success' ? '✓' : status.status === 'error' ? '✗' : '○';
215
- const color = status.status === 'success' ? chalk.green : status.status === 'error' ? chalk.red : chalk.dim;
216
- console.log(` ${color(icon)} ${nodeId}: ${status.status}`);
217
- }
218
- }
219
- if (result.output) {
220
- console.log();
221
- console.log(chalk.bold('Output:'));
222
- console.log(JSON.stringify(result.output, null, 2));
223
- }
224
- }
225
- }
226
- catch (err) {
227
- error(err.message || 'Failed to run workflow');
228
- process.exit(EXIT_CODES.GENERAL_ERROR);
229
- }
230
- });
231
- // okra workflow status <execution-id>
232
- workflow
233
- .command('status <executionId>')
234
- .description('Check status of a workflow execution')
235
- .option('-o, --output <format>', 'Output format (json, table)', 'table')
236
- .option('--watch', 'Watch for updates')
237
- .action(async (executionId, options) => {
238
- try {
239
- const fetchStatus = async () => {
240
- return get(`api/v1/workflow/executions/${executionId}`);
241
- };
242
- if (options.watch) {
243
- // Continuous watch mode
244
- console.log(chalk.dim('Watching execution (Ctrl+C to stop)...\n'));
245
- let lastStatus = '';
246
- while (true) {
247
- const status = await fetchStatus();
248
- // Only print if status changed
249
- const statusStr = JSON.stringify(status.nodeStatuses);
250
- if (statusStr !== lastStatus) {
251
- console.clear();
252
- printStatus(status);
253
- lastStatus = statusStr;
254
- }
255
- if (['completed', 'failed', 'cancelled'].includes(status.status)) {
256
- break;
257
- }
258
- await new Promise((r) => setTimeout(r, 2000));
259
- }
260
- }
261
- else {
262
- const status = await withSpinner('Fetching status', fetchStatus);
263
- if (options.output === 'json') {
264
- console.log(formatOutput(status, 'json'));
265
- }
266
- else {
267
- printStatus(status);
268
- }
269
- }
270
- }
271
- catch (err) {
272
- error(err.message || 'Failed to get status');
273
- process.exit(EXIT_CODES.GENERAL_ERROR);
274
- }
275
- });
276
- return workflow;
277
- }
278
- function printStatus(status) {
279
- console.log();
280
- console.log(chalk.bold(`Workflow Execution: ${status.executionId}`));
281
- console.log();
282
- // Overall status
283
- const statusColor = status.status === 'completed'
284
- ? chalk.green
285
- : status.status === 'failed'
286
- ? chalk.red
287
- : status.status === 'cancelled'
288
- ? chalk.yellow
289
- : chalk.cyan;
290
- console.log(`Status: ${statusColor(status.status.toUpperCase())}`);
291
- console.log(`Job ID: ${status.jobId}`);
292
- console.log(`Workflow: ${status.workflowId}`);
293
- if (status.startedAt) {
294
- console.log(`Started: ${status.startedAt}`);
295
- }
296
- if (status.completedAt) {
297
- console.log(`Completed: ${status.completedAt}`);
298
- }
299
- // Node statuses
300
- if (status.nodeStatuses && Object.keys(status.nodeStatuses).length > 0) {
301
- console.log();
302
- console.log(chalk.bold('Nodes:'));
303
- for (const [nodeId, nodeStatus] of Object.entries(status.nodeStatuses)) {
304
- const icon = nodeStatus.status === 'success'
305
- ? chalk.green('✓')
306
- : nodeStatus.status === 'error'
307
- ? chalk.red('✗')
308
- : nodeStatus.status === 'running'
309
- ? chalk.cyan('◌')
310
- : chalk.dim('○');
311
- let progressStr = '';
312
- if (nodeStatus.progress) {
313
- const pct = nodeStatus.progress.total
314
- ? Math.round((nodeStatus.progress.current / nodeStatus.progress.total) * 100)
315
- : 0;
316
- progressStr = chalk.dim(` (${nodeStatus.progress.current}/${nodeStatus.progress.total || '?'} - ${pct}%)`);
317
- }
318
- console.log(` ${icon} ${nodeId}: ${nodeStatus.status}${progressStr}`);
319
- }
320
- }
321
- // Error
322
- if (status.error) {
323
- console.log();
324
- console.log(chalk.red(`Error: ${status.error.message}`));
325
- }
326
- // Output preview
327
- if (status.output) {
328
- console.log();
329
- console.log(chalk.bold('Output:'));
330
- const outputStr = JSON.stringify(status.output, null, 2);
331
- if (outputStr.length > 500) {
332
- console.log(outputStr.slice(0, 500) + '...');
333
- }
334
- else {
335
- console.log(outputStr);
336
- }
337
- }
338
- }
339
- export default createWorkflowCommand;
340
- //# sourceMappingURL=workflow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import type { DomOpSink } from './dom-ops.js';
2
- export declare class DomEmitter {
3
- private sink;
4
- constructor(sink: DomOpSink);
5
- addDocument(id: string, filename: string): Promise<void>;
6
- addPage(docId: string, pageNum: number, text?: string): Promise<void>;
7
- addTable(pageId: string, tableId: string, bbox?: unknown): Promise<void>;
8
- addFigure(pageId: string, figureId: string, bbox?: unknown): Promise<void>;
9
- setTableContent(tableId: string, markdown: string): Promise<void>;
10
- setStatus(nodeId: string, status: string): Promise<void>;
11
- setProgress(nodeId: string, completed: number, total: number): Promise<void>;
12
- close(): Promise<void>;
13
- }
14
- //# sourceMappingURL=dom-emitter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dom-emitter.d.ts","sourceRoot":"","sources":["../../src/lib/dom-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,SAAS,EAAW,MAAM,cAAc,CAAC;AAE9D,qBAAa,UAAU;IACT,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,SAAS;IAE7B,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAarE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1E,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}