@visionfi/server-cli
Version:
Command-line interface for VisionFI Server SDK
125 lines (124 loc) • 4.58 kB
JavaScript
/**
* Processing commands for VisionFI CLI
* Copyright (c) 2024-2025 VisionFI. All Rights Reserved.
*/
import { createClient } from '../utils/config.js';
import { Display } from '../utils/display.js';
/**
* Execute processing on a package
*/
export async function executeProcessing(packageId, options) {
const spinner = Display.spinner('Executing processing...');
try {
const client = createClient();
const response = await client.packages.processing.execute(packageId, options.workflow ? {
workflowId: options.workflow
} : {});
spinner.succeed('Processing started successfully');
Display.keyValue('Processing ID', response.processingId);
Display.keyValue('Status', response.status);
if (response.workflow) {
Display.keyValue('Workflow', response.workflow);
}
}
catch (error) {
spinner.fail('Failed to execute processing');
Display.error(error.message);
process.exit(1);
}
}
/**
* Get processing history for a package
*/
export async function getProcessingHistory(packageId, options) {
const spinner = Display.spinner('Fetching processing history...');
try {
const client = createClient();
const response = options.withResults
? await client.packages.processing.getWithResults(packageId)
: await client.packages.processing.getHistory(packageId, options.limit ? {
maxResults: parseInt(options.limit)
} : undefined);
spinner.succeed('Processing history retrieved');
if (response.processings && response.processings.length > 0) {
Display.table(response.processings.map((proc) => ({
'Processing ID': proc.processingId,
'Status': proc.status,
'Workflow': proc.workflow || 'N/A',
'Started': proc.startTime ? new Date(proc.startTime).toLocaleString() : 'N/A',
'Completed': proc.endTime ? new Date(proc.endTime).toLocaleString() : 'N/A'
})));
}
else {
Display.info('No processing history found');
}
}
catch (error) {
spinner.fail('Failed to get processing history');
Display.error(error.message);
process.exit(1);
}
}
/**
* Get a specific processing result
*/
export async function getProcessingResult(packageId, processingId) {
const spinner = Display.spinner('Fetching processing result...');
try {
const client = createClient();
const result = await client.packages.processing.getResult(packageId, processingId);
spinner.succeed('Processing result retrieved');
Display.json(result);
}
catch (error) {
spinner.fail('Failed to get processing result');
Display.error(error.message);
process.exit(1);
}
}
/**
* Get processing view
*/
export async function getProcessingView(packageId, processingId, options) {
const spinner = Display.spinner('Fetching processing view...');
try {
const client = createClient();
const response = await client.packages.processing.getView(packageId, processingId, options.format ? {
viewFormat: options.format
} : undefined);
spinner.succeed('Processing view retrieved');
if (response.view) {
Display.json(response.view);
}
else {
Display.info('No view data available');
}
}
catch (error) {
spinner.fail('Failed to get processing view');
Display.error(error.message);
process.exit(1);
}
}
/**
* Poll for processing completion
*/
export async function pollProcessing(packageId, processingId, options) {
const spinner = Display.spinner('Polling for processing completion...');
try {
const client = createClient();
const result = await client.packages.processing.pollForCompletion(packageId, processingId, options.interval ? parseInt(options.interval) : 3000, options.timeout ? parseInt(options.timeout) / 1000 : 60);
spinner.succeed('Processing completed');
Display.keyValue('Status', result.status);
Display.keyValue('Completion Time', result.endTime ? new Date(result.endTime).toLocaleString() : 'N/A');
if (result.result) {
Display.header('Results');
Display.json(result.result);
}
}
catch (error) {
spinner.fail('Processing did not complete');
Display.error(error.message);
process.exit(1);
}
}