47 lines
4.3 KiB
JavaScript
47 lines
4.3 KiB
JavaScript
import { tools } from '../lib/tools/tools.js';
|
|
import { logger } from '../index.js';
|
|
import { InvokeToolSchema } from '../zod_schemas.js';
|
|
import { toYargs } from '@polymech/commons/schemas';
|
|
import { sync as write } from '@polymech/fs/write';
|
|
import * as path from 'path';
|
|
const options = (yargs) => toYargs(yargs, InvokeToolSchema);
|
|
export const invoke = async (argv) => {
|
|
try {
|
|
const { tools: toolCategory, function: funcName, target, params, output } = argv;
|
|
// Get tool category
|
|
const toolSet = tools[toolCategory];
|
|
if (!toolSet) {
|
|
logger.error(`Tool category '${toolCategory}' not found`);
|
|
return;
|
|
}
|
|
// Initialize tools with target directory
|
|
const toolList = toolSet(target);
|
|
// Find specific function
|
|
const tool = toolList.find(t => t.function.name === funcName);
|
|
if (!tool) {
|
|
logger.error(`Function '${funcName}' not found in ${toolCategory} tools`);
|
|
return;
|
|
}
|
|
// Parse parameters if provided
|
|
const parameters = params ? JSON.parse(params) : {};
|
|
// Execute tool function
|
|
logger.info(`Invoking ${toolCategory}::${funcName}`);
|
|
const result = await tool.function.function(parameters);
|
|
// Handle output
|
|
if (output) {
|
|
const outputPath = path.isAbsolute(output) ? output : path.join(process.cwd(), output);
|
|
logger.info(`Writing output to ${outputPath}`);
|
|
write(outputPath, JSON.stringify(result, null, 2));
|
|
}
|
|
else {
|
|
logger.info('Result:', result);
|
|
}
|
|
return result;
|
|
}
|
|
catch (error) {
|
|
logger.error('Error invoking tool:', error);
|
|
throw error;
|
|
}
|
|
};
|
|
export { options as invokeOptions };
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2tlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2ludm9rZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNwQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDbkQsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUVsRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUU1QixNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQVcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBRWxFLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxLQUFLLEVBQUUsSUFBUyxFQUFFLEVBQUU7SUFDdEMsSUFBSTtRQUNBLE1BQU0sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFakYsb0JBQW9CO1FBQ3BCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsTUFBTSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsWUFBWSxhQUFhLENBQUMsQ0FBQztZQUMxRCxPQUFPO1NBQ1Y7UUFFRCx5Q0FBeUM7UUFDekMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWpDLHlCQUF5QjtRQUN6QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNQLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxRQUFRLGtCQUFrQixZQUFZLFFBQVEsQ0FBQyxDQUFDO1lBQzFFLE9BQU87U0FDVjtRQUVELCtCQUErQjtRQUMvQixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVwRCx3QkFBd0I7UUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLFlBQVksS0FBSyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFeEQsZ0JBQWdCO1FBQ2hCLElBQUksTUFBTSxFQUFFO1lBQ1IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN2RixNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEQ7YUFBTTtZQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ2xDO1FBRUQsT0FBTyxNQUFNLENBQUM7S0FDakI7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNaLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUMsTUFBTSxLQUFLLENBQUM7S0FDZjtBQUNMLENBQUMsQ0FBQztBQUVGLE9BQU8sRUFBRSxPQUFPLElBQUksYUFBYSxFQUFFLENBQUMifQ==
|