mono/packages/ai-tools/dist/commands/invoke.js
2025-02-20 18:15:43 +01:00

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==