From d6b6f2803d6bbd55a061a26b4eadc2dd3226f98e Mon Sep 17 00:00:00 2001 From: Babayaga Date: Thu, 19 Mar 2026 17:39:41 +0100 Subject: [PATCH] update - last --- packages/ai-tools/dist/commands/index.d.ts | 8 +- packages/ai-tools/dist/commands/index.js | 52 +- packages/ai-tools/dist/commands/invoke.d.ts | 8 +- packages/ai-tools/dist/commands/invoke.js | 94 +- packages/ai-tools/dist/commands/list.d.ts | 34 +- packages/ai-tools/dist/commands/list.js | 108 +- packages/ai-tools/dist/commands/types.d.ts | 2 +- packages/ai-tools/dist/commands/types.js | 32 +- packages/ai-tools/dist/constants.d.ts | 4 +- packages/ai-tools/dist/constants.js | 20 +- packages/ai-tools/dist/index.d.ts | 68 +- packages/ai-tools/dist/index.js | 326 +-- packages/ai-tools/dist/lib/tools/fs.d.ts | 6 +- packages/ai-tools/dist/lib/tools/fs.js | 864 +++---- packages/ai-tools/dist/lib/tools/git.d.ts | 4 +- packages/ai-tools/dist/lib/tools/git.js | 312 +-- packages/ai-tools/dist/lib/tools/index.d.ts | 16 +- packages/ai-tools/dist/lib/tools/index.js | 36 +- .../ai-tools/dist/lib/tools/interact.d.ts | 4 +- packages/ai-tools/dist/lib/tools/interact.js | 170 +- packages/ai-tools/dist/lib/tools/keyv.d.ts | 8 +- packages/ai-tools/dist/lib/tools/keyv.js | 38 +- packages/ai-tools/dist/lib/tools/memory.d.ts | 4 +- packages/ai-tools/dist/lib/tools/memory.js | 620 ++--- packages/ai-tools/dist/lib/tools/npm.d.ts | 4 +- packages/ai-tools/dist/lib/tools/npm.js | 300 +-- packages/ai-tools/dist/lib/tools/process.d.ts | 32 +- packages/ai-tools/dist/lib/tools/process.js | 252 +- packages/ai-tools/dist/lib/tools/search.d.ts | 4 +- packages/ai-tools/dist/lib/tools/search.js | 180 +- .../ai-tools/dist/lib/tools/terminal.d.ts | 4 +- packages/ai-tools/dist/lib/tools/terminal.js | 232 +- packages/ai-tools/dist/lib/tools/tools.d.ts | 20 +- packages/ai-tools/dist/lib/tools/tools.js | 44 +- packages/ai-tools/dist/lib/tools/user.d.ts | 8 +- packages/ai-tools/dist/lib/tools/user.js | 156 +- packages/ai-tools/dist/lib/tools/web.d.ts | 4 +- packages/ai-tools/dist/lib/tools/web.js | 198 +- packages/ai-tools/dist/main.d.ts | 4 +- packages/ai-tools/dist/main.js | 34 +- packages/ai-tools/dist/types.d.ts | 47 +- packages/ai-tools/dist/types.js | 2 +- packages/ai-tools/dist/types_kbot.d.ts | 1130 ++++---- packages/ai-tools/dist/types_kbot.js | 2 +- packages/ai-tools/dist/zod_schemas.d.ts | 206 +- packages/ai-tools/dist/zod_schemas.js | 122 +- packages/ai-tools/dist/zod_types.d.ts | 421 +-- packages/ai-tools/dist/zod_types.js | 2 +- packages/ai-tools/package-lock.json | 2286 ++++++++++++----- packages/ai-tools/package.json | 17 +- packages/ai-tools/src/lib/tools/index.ts | 3 +- packages/ai-tools/src/types.ts | 1 + packages/ai-tools/src/types_kbot.ts | 28 +- packages/ai-tools/src/zod_types.ts | 415 +-- 54 files changed, 4738 insertions(+), 4258 deletions(-) diff --git a/packages/ai-tools/dist/commands/index.d.ts b/packages/ai-tools/dist/commands/index.d.ts index c1dd7f08..e0f8d325 100644 --- a/packages/ai-tools/dist/commands/index.d.ts +++ b/packages/ai-tools/dist/commands/index.d.ts @@ -1,4 +1,4 @@ -import type { Argv } from 'yargs'; -export declare const commands: (yargs: Argv) => Argv<{ - env_key: string; -}>; +import type { Argv } from 'yargs'; +export declare const commands: (yargs: Argv) => Argv<{ + env_key: string; +}>; diff --git a/packages/ai-tools/dist/commands/index.js b/packages/ai-tools/dist/commands/index.js index 1f442bd4..017c1a3c 100644 --- a/packages/ai-tools/dist/commands/index.js +++ b/packages/ai-tools/dist/commands/index.js @@ -1,26 +1,26 @@ -import { types } from './types.js'; -import { list, options as listOptions } from './list.js'; -import { invoke, invokeOptions } from './invoke.js'; -import { CONFIG_DEFAULT } from '@polymech/commons'; -import { logger } from '../index.js'; -export const commands = (yargs) => { - return yargs - .command('types', 'Generate TypeScript interfaces from Zod schemas', {}, types) - .command('list', 'List all available tools and their descriptions', listOptions, list) - .command('invoke', 'Invoke a specific tool function', invokeOptions, invoke) - .option('env_key', { - type: 'string', - description: 'Environment configuration key' - }) - .middleware([(argv) => { - const config = CONFIG_DEFAULT(argv.env_key); - if (!config) { - logger.warn('No config found!'); - return; - } - return config; - }]) - .strict() - .help(); -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sSUFBSSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFcEMsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBVyxFQUFFLEVBQUU7SUFDcEMsT0FBTyxLQUFLO1NBQ1AsT0FBTyxDQUFDLE9BQU8sRUFBRSxpREFBaUQsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDO1NBQzlFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsaURBQWlELEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQztTQUNyRixPQUFPLENBQUMsUUFBUSxFQUFFLGlDQUFpQyxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUM7U0FDM0UsTUFBTSxDQUFDLFNBQVMsRUFBRTtRQUNmLElBQUksRUFBRSxRQUFRO1FBQ2QsV0FBVyxFQUFFLCtCQUErQjtLQUMvQyxDQUFDO1NBQ0QsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNsQixNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBUSxDQUFDO1lBQ25ELElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ1QsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUNoQyxPQUFPO2FBQ1Y7WUFDRCxPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztTQUNGLE1BQU0sRUFBRTtTQUNSLElBQUksRUFBRSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyJ9 \ No newline at end of file +import { types } from './types.js'; +import { list, options as listOptions } from './list.js'; +import { invoke, invokeOptions } from './invoke.js'; +import { CONFIG_DEFAULT } from '@polymech/commons'; +import { logger } from '../index.js'; +export const commands = (yargs) => { + return yargs + .command('types', 'Generate TypeScript interfaces from Zod schemas', {}, types) + .command('list', 'List all available tools and their descriptions', listOptions, list) + .command('invoke', 'Invoke a specific tool function', invokeOptions, invoke) + .option('env_key', { + type: 'string', + description: 'Environment configuration key' + }) + .middleware([(argv) => { + const config = CONFIG_DEFAULT(argv.env_key); + if (!config) { + logger.warn('No config found!'); + return; + } + return config; + }]) + .strict() + .help(); +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sSUFBSSxXQUFXLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFcEMsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBVyxFQUFFLEVBQUU7SUFDcEMsT0FBTyxLQUFLO1NBQ1AsT0FBTyxDQUFDLE9BQU8sRUFBRSxpREFBaUQsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDO1NBQzlFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsaURBQWlELEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQztTQUNyRixPQUFPLENBQUMsUUFBUSxFQUFFLGlDQUFpQyxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUM7U0FDM0UsTUFBTSxDQUFDLFNBQVMsRUFBRTtRQUNmLElBQUksRUFBRSxRQUFRO1FBQ2QsV0FBVyxFQUFFLCtCQUErQjtLQUMvQyxDQUFDO1NBQ0QsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNsQixNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBUSxDQUFDO1lBQ25ELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDVixNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBQ2hDLE9BQU87WUFDWCxDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7U0FDRixNQUFNLEVBQUU7U0FDUixJQUFJLEVBQUUsQ0FBQztBQUNoQixDQUFDLENBQUMifQ== \ No newline at end of file diff --git a/packages/ai-tools/dist/commands/invoke.d.ts b/packages/ai-tools/dist/commands/invoke.d.ts index 64ef1617..c88b6e62 100644 --- a/packages/ai-tools/dist/commands/invoke.d.ts +++ b/packages/ai-tools/dist/commands/invoke.d.ts @@ -1,4 +1,4 @@ -import type { Argv } from 'yargs'; -declare const options: (yargs: Argv) => CLI.Argv; -export declare const invoke: (argv: any) => Promise; -export { options as invokeOptions }; +import type { Argv } from 'yargs'; +declare const options: (yargs: Argv) => CLI.Argv; +export declare const invoke: (argv: any) => Promise; +export { options as invokeOptions }; diff --git a/packages/ai-tools/dist/commands/invoke.js b/packages/ai-tools/dist/commands/invoke.js index 7042654f..5126cc87 100644 --- a/packages/ai-tools/dist/commands/invoke.js +++ b/packages/ai-tools/dist/commands/invoke.js @@ -1,47 +1,47 @@ -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== \ No newline at end of file +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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2tlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2ludm9rZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDN0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNwQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDbkQsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUVsRCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUU1QixNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQVcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBRWxFLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxLQUFLLEVBQUUsSUFBUyxFQUFFLEVBQUU7SUFDdEMsSUFBSSxDQUFDO1FBQ0QsTUFBTSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztRQUVqRixvQkFBb0I7UUFDcEIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNYLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLFlBQVksYUFBYSxDQUFDLENBQUM7WUFDMUQsT0FBTztRQUNYLENBQUM7UUFFRCx5Q0FBeUM7UUFDekMsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWpDLHlCQUF5QjtRQUN6QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1IsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLFFBQVEsa0JBQWtCLFlBQVksUUFBUSxDQUFDLENBQUM7WUFDMUUsT0FBTztRQUNYLENBQUM7UUFFRCwrQkFBK0I7UUFDL0IsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFcEQsd0JBQXdCO1FBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxZQUFZLEtBQUssUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNyRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXhELGdCQUFnQjtRQUNoQixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUN2RixNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixNQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVDLE1BQU0sS0FBSyxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixPQUFPLEVBQUUsT0FBTyxJQUFJLGFBQWEsRUFBRSxDQUFDIn0= \ No newline at end of file diff --git a/packages/ai-tools/dist/commands/list.d.ts b/packages/ai-tools/dist/commands/list.d.ts index 7e2108f9..abae3066 100644 --- a/packages/ai-tools/dist/commands/list.d.ts +++ b/packages/ai-tools/dist/commands/list.d.ts @@ -1,17 +1,17 @@ -import type { Argv } from 'yargs'; -export declare const options: (yargs: Argv) => CLI.Argv; -interface FSParameters { - type: string; - properties: Record; - required: string[]; -} -interface FSDefinition { - name: string; - description: string; - category: string; - parameters: FSParameters; -} -export declare const signature: (definition: FSDefinition) => string; -export declare function format(category: string, data: any): string; -export declare const list: (argv: any, options?: any) => Promise; -export {}; +import type { Argv } from 'yargs'; +export declare const options: (yargs: Argv) => CLI.Argv; +interface FSParameters { + type: string; + properties: Record; + required: string[]; +} +interface FSDefinition { + name: string; + description: string; + category: string; + parameters: FSParameters; +} +export declare const signature: (definition: FSDefinition) => string; +export declare function format(category: string, data: any): string; +export declare const list: (argv: any, options?: any) => Promise; +export {}; diff --git a/packages/ai-tools/dist/commands/list.js b/packages/ai-tools/dist/commands/list.js index 99f0899f..d374787b 100644 --- a/packages/ai-tools/dist/commands/list.js +++ b/packages/ai-tools/dist/commands/list.js @@ -1,54 +1,54 @@ -import { tools } from '../lib/tools/tools.js'; -import { ListCommandSchema } from '../zod_schemas.js'; -import { sync as write } from '@polymech/fs/write'; -import { toYargs } from '@polymech/commons/schemas'; -export const options = (yargs) => toYargs(yargs, ListCommandSchema); -export const signature = (definition) => { - const { properties } = definition.parameters; - const requiredKeys = definition.parameters.required || []; - const params = Object.entries(properties).map(([key, val]) => { - const isRequired = requiredKeys.includes(key); - const isOptional = !!val.optional || !isRequired; - return isOptional ? `?${key}` : key; - }); - return `(${params.join(", ")})`; -}; -export function format(category, data) { - const lines = [`## ${category}\n`]; - data.forEach(definition => { - const functionName = definition.name; - const args = `${signature(definition)}`; - const summary = definition.description; - lines.push(`- ${functionName}${args}: ${summary}`); - }); - return lines.join("\n"); -} -export const list = async (argv, options) => { - const getCategorizedTools = (category, options) => { - const toolsArray = tools[category](process.cwd(), options); - return toolsArray.map(tool => ({ - name: tool.function.name, - description: tool.function.description, - category, - parameters: tool.function.parameters - })); - }; - const toolsList = { - email: getCategorizedTools('email', options), - search: getCategorizedTools('search', options), - interact: getCategorizedTools('email', options), - fs: getCategorizedTools('fs', options), - npm: getCategorizedTools('npm', options), - git: getCategorizedTools('git', options), - terminal: getCategorizedTools('terminal', options) - }; - //write(argv.output + '.json', Object.keys(toolsList).map((k,v)=>format(k,v as any)).join('\n') ); - const shortDescription = Object.keys(toolsList).map((value) => { - return format(value, toolsList[value]); - }).join('\n\n'); - if (argv.output) { - write(argv.output, JSON.stringify(toolsList, null, 2)); - write(argv.output + '.md', shortDescription); - } -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUU3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUVuRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtBQWlCekUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsVUFBd0IsRUFBVSxFQUFFO0lBQzFELE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDO0lBQzdDLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUMxRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7UUFDekQsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNqRCxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJ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 \ No newline at end of file +import { tools } from '../lib/tools/tools.js'; +import { ListCommandSchema } from '../zod_schemas.js'; +import { sync as write } from '@polymech/fs/write'; +import { toYargs } from '@polymech/commons/schemas'; +export const options = (yargs) => toYargs(yargs, ListCommandSchema); +export const signature = (definition) => { + const { properties } = definition.parameters; + const requiredKeys = definition.parameters.required || []; + const params = Object.entries(properties).map(([key, val]) => { + const isRequired = requiredKeys.includes(key); + const isOptional = !!val.optional || !isRequired; + return isOptional ? `?${key}` : key; + }); + return `(${params.join(", ")})`; +}; +export function format(category, data) { + const lines = [`## ${category}\n`]; + data.forEach(definition => { + const functionName = definition.name; + const args = `${signature(definition)}`; + const summary = definition.description; + lines.push(`- ${functionName}${args}: ${summary}`); + }); + return lines.join("\n"); +} +export const list = async (argv, options) => { + const getCategorizedTools = (category, options) => { + const toolsArray = tools[category](process.cwd(), options); + return toolsArray.map(tool => ({ + name: tool.function.name, + description: tool.function.description, + category, + parameters: tool.function.parameters + })); + }; + const toolsList = { + email: getCategorizedTools('email', options), + search: getCategorizedTools('search', options), + interact: getCategorizedTools('email', options), + fs: getCategorizedTools('fs', options), + npm: getCategorizedTools('npm', options), + git: getCategorizedTools('git', options), + terminal: getCategorizedTools('terminal', options) + }; + //write(argv.output + '.json', Object.keys(toolsList).map((k,v)=>format(k,v as any)).join('\n') ); + const shortDescription = Object.keys(toolsList).map((value) => { + return format(value, toolsList[value]); + }).join('\n\n'); + if (argv.output) { + write(argv.output, JSON.stringify(toolsList, null, 2)); + write(argv.output + '.md', shortDescription); + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUU3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUVuRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtBQWlCekUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsVUFBd0IsRUFBVSxFQUFFO0lBQzFELE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDO0lBQzdDLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUMxRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7UUFDekQsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNqRCxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJ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 \ No newline at end of file diff --git a/packages/ai-tools/dist/commands/types.d.ts b/packages/ai-tools/dist/commands/types.d.ts index 367650bc..fa91aca4 100644 --- a/packages/ai-tools/dist/commands/types.d.ts +++ b/packages/ai-tools/dist/commands/types.d.ts @@ -1 +1 @@ -export declare const types: () => Promise; +export declare const types: () => Promise; diff --git a/packages/ai-tools/dist/commands/types.js b/packages/ai-tools/dist/commands/types.js index 6b9becc1..de444c03 100644 --- a/packages/ai-tools/dist/commands/types.js +++ b/packages/ai-tools/dist/commands/types.js @@ -1,17 +1,17 @@ -import { generate_interfaces } from '@polymech/commons'; -import { FileListingOptionsSchema, FileRemovalOptionsSchema, GitCommitSchema, GitRevertSchema, GitSwitchVersionSchema, InvokeToolSchema, ToolListingOptionsSchema, TerminalCommandSchema, ListCommandSchema, NpmRunSchema } from '../zod_schemas.js'; -export const types = async () => { - return generate_interfaces([ - FileListingOptionsSchema, - FileRemovalOptionsSchema, - GitCommitSchema, - GitRevertSchema, - GitSwitchVersionSchema, - InvokeToolSchema, - ToolListingOptionsSchema, - TerminalCommandSchema, - ListCommandSchema, - NpmRunSchema - ], 'src/zod_types.ts'); -}; +import { generate_interfaces } from '@polymech/commons'; +import { FileListingOptionsSchema, FileRemovalOptionsSchema, GitCommitSchema, GitRevertSchema, GitSwitchVersionSchema, InvokeToolSchema, ToolListingOptionsSchema, TerminalCommandSchema, ListCommandSchema, NpmRunSchema } from '../zod_schemas.js'; +export const types = async () => { + return generate_interfaces([ + FileListingOptionsSchema, + FileRemovalOptionsSchema, + GitCommitSchema, + GitRevertSchema, + GitSwitchVersionSchema, + InvokeToolSchema, + ToolListingOptionsSchema, + TerminalCommandSchema, + ListCommandSchema, + NpmRunSchema + ], 'src/zod_types.ts'); +}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFdkQsT0FBTyxFQUNILHdCQUF3QixFQUN4Qix3QkFBd0IsRUFDeEIsZUFBZSxFQUNmLGVBQWUsRUFDZixzQkFBc0IsRUFDdEIsZ0JBQWdCLEVBQ2hCLHdCQUF3QixFQUN4QixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLFlBQVksRUFDZixNQUFNLG1CQUFtQixDQUFBO0FBRTFCLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxLQUFLLElBQUksRUFBRTtJQUM1QixPQUFPLG1CQUFtQixDQUFDO1FBQ3ZCLHdCQUF3QjtRQUN4Qix3QkFBd0I7UUFDeEIsZUFBZTtRQUNmLGVBQWU7UUFDZixzQkFBc0I7UUFDdEIsZ0JBQWdCO1FBQ2hCLHdCQUF3QjtRQUN4QixxQkFBcUI7UUFDckIsaUJBQWlCO1FBQ2pCLFlBQVk7S0FDZixFQUFFLGtCQUFrQixDQUFDLENBQUE7QUFDMUIsQ0FBQyxDQUFBIn0= \ No newline at end of file diff --git a/packages/ai-tools/dist/constants.d.ts b/packages/ai-tools/dist/constants.d.ts index 49747014..13df1c76 100644 --- a/packages/ai-tools/dist/constants.d.ts +++ b/packages/ai-tools/dist/constants.d.ts @@ -1,2 +1,2 @@ -export declare const LOGGER_NAME = "llm-tools-cli"; -export declare const EXCLUDE_GLOB: string[]; +export declare const LOGGER_NAME = "llm-tools-cli"; +export declare const EXCLUDE_GLOB: string[]; diff --git a/packages/ai-tools/dist/constants.js b/packages/ai-tools/dist/constants.js index f95409a7..e4732305 100644 --- a/packages/ai-tools/dist/constants.js +++ b/packages/ai-tools/dist/constants.js @@ -1,11 +1,11 @@ -export const LOGGER_NAME = 'llm-tools-cli'; -export const EXCLUDE_GLOB = [ - "**/node_modules/**", - "**/dist/**", - "**/build/**", - "**/coverage/**", - "*.log", - ".kbot", - ".git" -]; +export const LOGGER_NAME = 'llm-tools-cli'; +export const EXCLUDE_GLOB = [ + "**/node_modules/**", + "**/dist/**", + "**/build/**", + "**/coverage/**", + "*.log", + ".kbot", + ".git" +]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFBO0FBRTFDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUN4QixvQkFBb0I7SUFDcEIsWUFBWTtJQUNaLGFBQWE7SUFDYixnQkFBZ0I7SUFDaEIsT0FBTztJQUNQLE9BQU87SUFDUCxNQUFNO0NBQ1QsQ0FBQSJ9 \ No newline at end of file diff --git a/packages/ai-tools/dist/index.d.ts b/packages/ai-tools/dist/index.d.ts index 2ed0eb75..49bbe7cf 100644 --- a/packages/ai-tools/dist/index.d.ts +++ b/packages/ai-tools/dist/index.d.ts @@ -1,30 +1,38 @@ -import { z } from 'zod'; -import { ISettingsParam, Logger } from "tslog"; -import * as winston from 'winston'; -import { IKBotTask } from './types.js'; -export declare let logger: Logger; -export declare const TLogLevelNameSchema: z.ZodEnum<["silly", "trace", "debug", "info", "warn", "error", "fatal"]>; -export type LogLevel = z.infer; -export declare enum LogLevelEx { - silly = 0, - trace = 1, - debug = 2, - info = 3, - warn = 4, - error = 5, - fatal = 6 -} -export declare enum ELogTargets { - Console = 1, - FileText = 2, - FileJson = 4, - Seq = 8 -} -export declare function createLogger(name: string, options?: ISettingsParam): Logger; -export declare const defaultLogger: Logger; -export declare const winstonLogger: (name: string, file: string, targets?: ELogTargets) => winston.Logger; -export declare const createFileLogger: (logger: Logger, level: number, file: string) => Logger; -export declare const toolLoggerTS: (name: any, options: IKBotTask) => Logger; -export declare const toolLogger: (name: any, options?: IKBotTask) => winston.Logger; -export * from './types.js'; -export * from './types_kbot.js'; +import { z } from 'zod'; +import { ISettingsParam, Logger } from "tslog"; +import * as winston from 'winston'; +import { IKBotTask } from './types.js'; +export declare let logger: Logger; +export declare const TLogLevelNameSchema: z.ZodEnum<{ + silly: "silly"; + trace: "trace"; + debug: "debug"; + info: "info"; + warn: "warn"; + error: "error"; + fatal: "fatal"; +}>; +export type LogLevel = z.infer; +export declare enum LogLevelEx { + silly = 0, + trace = 1, + debug = 2, + info = 3, + warn = 4, + error = 5, + fatal = 6 +} +export declare enum ELogTargets { + Console = 1, + FileText = 2, + FileJson = 4, + Seq = 8 +} +export declare function createLogger(name: string, options?: ISettingsParam): Logger; +export declare const defaultLogger: Logger; +export declare const winstonLogger: (name: string, file: string, targets?: ELogTargets) => winston.Logger; +export declare const createFileLogger: (logger: Logger, level: number, file: string) => Logger; +export declare const toolLoggerTS: (name: any, options: IKBotTask) => Logger; +export declare const toolLogger: (name: any, options?: IKBotTask) => winston.Logger; +export * from './types.js'; +export * from './types_kbot.js'; diff --git a/packages/ai-tools/dist/index.js b/packages/ai-tools/dist/index.js index 1499a2ea..f59ecbf8 100644 --- a/packages/ai-tools/dist/index.js +++ b/packages/ai-tools/dist/index.js @@ -1,163 +1,163 @@ -import * as path from 'path'; -import { z } from 'zod'; -import { Logger } from "tslog"; -import * as winston from 'winston'; -import TransportStream from 'winston-transport'; -import { SeqTransport } from '@datalust/winston-seq'; -import { createStream } from "rotating-file-stream"; -import { CONFIG_DEFAULT } from '@polymech/commons'; -import { sync as read } from '@polymech/fs/read'; -import { sync as write } from '@polymech/fs/write'; -import { sync as exists } from '@polymech/fs/exists'; -export let logger = createLogger('osr-ai-tools'); -export const TLogLevelNameSchema = z.enum(["silly", "trace", "debug", "info", "warn", "error", "fatal"]); -export var LogLevelEx; -(function (LogLevelEx) { - LogLevelEx[LogLevelEx["silly"] = 0] = "silly"; - LogLevelEx[LogLevelEx["trace"] = 1] = "trace"; - LogLevelEx[LogLevelEx["debug"] = 2] = "debug"; - LogLevelEx[LogLevelEx["info"] = 3] = "info"; - LogLevelEx[LogLevelEx["warn"] = 4] = "warn"; - LogLevelEx[LogLevelEx["error"] = 5] = "error"; - LogLevelEx[LogLevelEx["fatal"] = 6] = "fatal"; -})(LogLevelEx = LogLevelEx || (LogLevelEx = {})); -export var ELogTargets; -(function (ELogTargets) { - ELogTargets[ELogTargets["Console"] = 1] = "Console"; - ELogTargets[ELogTargets["FileText"] = 2] = "FileText"; - ELogTargets[ELogTargets["FileJson"] = 4] = "FileJson"; - ELogTargets[ELogTargets["Seq"] = 8] = "Seq"; -})(ELogTargets = ELogTargets || (ELogTargets = {})); -export function createLogger(name, options) { - return new Logger({ - name, - type: 'pretty', - ...options, - }); -} -export const defaultLogger = createLogger('DefaultLogger', { - minLevel: LogLevelEx.info -}); -class JsonArrayFileTransport extends TransportStream { - filename; - constructor(opts) { - super(opts); - opts.filename = opts.filename; - this.filename = opts.filename || 'logs.json'; - setImmediate(() => this.emit('opened')); - } - log(info, next) { - setImmediate(() => this.emit('logged', info)); - const { level, message, exception, stack, ...props } = info; - const fileExists = exists(this.filename); - const existingLogs = fileExists - ? read(this.filename, 'json') - : []; - const entry = { - level: info.level, - message: info.message, - timestamp: new Date().toISOString(), - ...info - }; - existingLogs.push(entry); - write(this.filename, existingLogs); - next(); - } - close() { - setImmediate(() => this.emit('closed')); - } - flush() { - return new Promise((resolve, reject) => { - resolve(true); - }); - } -} -class TSLogTransport extends TransportStream { - constructor(opts) { - super(opts); - setImmediate(() => this.emit('opened')); - } - log(info, next) { - setImmediate(() => this.emit('logged', info)); - const { level, message, exception, stack, ...props } = info; - defaultLogger.info(info); - next(); - } -} -export const winstonLogger = (name, file, targets = ELogTargets.Console | ELogTargets.FileJson) => { - const logger = winston.createLogger({ - defaultMeta: { service: name }, - level: 'debug', - transports: [] - }); - if (targets & ELogTargets.Console) { - //logger.add(new TSLogTransport({})) - logger.add(new winston.transports.Console({ - format: winston.format.combine(winston.format.timestamp({ format: 'MM/DD/YYYY hh:mm:ss.SSS' }), - ///winston.format.json(), - winston.format.colorize(), winston.format.printf(info => { - let message = null; - try { - message = JSON.stringify(info.message); - } - catch (e) { - } - return `[${info.level}] [${name}] | message: ${message.substring(0, 200)}`; - })) - })); - } - if (targets & ELogTargets.FileText) { - logger.add(new winston.transports.File({ - format: winston.format.combine(winston.format.timestamp(), winston.format.timestamp({ format: 'MM/DD/YYYY hh:mm:ss.SSS' }), winston.format.json(), winston.format.printf(info => { - return JSON.stringify(info, null, 2); - })), - dirname: path.parse(file).dir, - filename: path.parse(file).base - })); - } - if (targets & ELogTargets.FileJson) { - logger.add(new JsonArrayFileTransport({ - filename: file - })); - } - if (targets & ELogTargets.Seq) { - const config = CONFIG_DEFAULT(); - if (config.seq) { - logger.add(new SeqTransport({ - ...config.seq, - onError: (e => { }) - })); - } - } - return logger; -}; -export const createFileLogger = (logger, level, file) => { - const rfs = createStream(file, { - size: "10M", - interval: "1d", - compress: "gzip", // compress rotated files - }); - const log = new Logger({ - type: "json", - attachedTransports: [ - (logObj) => { - rfs.write(JSON.stringify(logObj) + "\n"); - }, - ], - }); - return log; -}; -export const toolLoggerTS = (name, options) => { - let log = createLogger(name); - //log.settings.minLevel = options.logLevel - log = createFileLogger(log, options.logLevel, path.join(options.logs, `tools-${name}.json`)); - return log; -}; -export const toolLogger = (name, options = { logs: process.cwd() }) => { - const logPath = path.resolve(path.join(options.logs || './', `tools-${name}.json`)); - const log = winstonLogger(name, logPath, ELogTargets.Console); - return log; -}; -export * from './types.js'; -export * from './types_kbot.js'; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFDNUIsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUV2QixPQUFPLEVBQWtCLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUU5QyxPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsQ0FBQTtBQUNsQyxPQUFPLGVBQWUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFDLE1BQU0sdUJBQXVCLENBQUE7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUlwRCxNQUFNLENBQUMsSUFBSSxNQUFNLEdBQW9CLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQTtBQUNqRSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtBQUV4RyxNQUFNLENBQU4sSUFBWSxVQVFYO0FBUkQsV0FBWSxVQUFVO0lBQ2xCLDZDQUFLLENBQUE7SUFDTCw2Q0FBSyxDQUFBO0lBQ0wsNkNBQUssQ0FBQTtJQUNMLDJDQUFJLENBQUE7SUFDSiwyQ0FBSSxDQUFBO0lBQ0osNkNB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 \ No newline at end of file +import * as path from 'path'; +import { z } from 'zod'; +import { Logger } from "tslog"; +import * as winston from 'winston'; +import TransportStream from 'winston-transport'; +import { SeqTransport } from '@datalust/winston-seq'; +import { createStream } from "rotating-file-stream"; +import { CONFIG_DEFAULT } from '@polymech/commons'; +import { sync as read } from '@polymech/fs/read'; +import { sync as write } from '@polymech/fs/write'; +import { sync as exists } from '@polymech/fs/exists'; +export let logger = createLogger('osr-ai-tools'); +export const TLogLevelNameSchema = z.enum(["silly", "trace", "debug", "info", "warn", "error", "fatal"]); +export var LogLevelEx; +(function (LogLevelEx) { + LogLevelEx[LogLevelEx["silly"] = 0] = "silly"; + LogLevelEx[LogLevelEx["trace"] = 1] = "trace"; + LogLevelEx[LogLevelEx["debug"] = 2] = "debug"; + LogLevelEx[LogLevelEx["info"] = 3] = "info"; + LogLevelEx[LogLevelEx["warn"] = 4] = "warn"; + LogLevelEx[LogLevelEx["error"] = 5] = "error"; + LogLevelEx[LogLevelEx["fatal"] = 6] = "fatal"; +})(LogLevelEx || (LogLevelEx = {})); +export var ELogTargets; +(function (ELogTargets) { + ELogTargets[ELogTargets["Console"] = 1] = "Console"; + ELogTargets[ELogTargets["FileText"] = 2] = "FileText"; + ELogTargets[ELogTargets["FileJson"] = 4] = "FileJson"; + ELogTargets[ELogTargets["Seq"] = 8] = "Seq"; +})(ELogTargets || (ELogTargets = {})); +export function createLogger(name, options) { + return new Logger({ + name, + type: 'pretty', + ...options, + }); +} +export const defaultLogger = createLogger('DefaultLogger', { + minLevel: LogLevelEx.info +}); +class JsonArrayFileTransport extends TransportStream { + filename; + constructor(opts) { + super(opts); + opts.filename = opts.filename; + this.filename = opts.filename || 'logs.json'; + setImmediate(() => this.emit('opened')); + } + log(info, next) { + setImmediate(() => this.emit('logged', info)); + const { level, message, exception, stack, ...props } = info; + const fileExists = exists(this.filename); + const existingLogs = fileExists + ? read(this.filename, 'json') + : []; + const entry = { + level: info.level, + message: info.message, + timestamp: new Date().toISOString(), + ...info + }; + existingLogs.push(entry); + write(this.filename, existingLogs); + next(); + } + close() { + setImmediate(() => this.emit('closed')); + } + flush() { + return new Promise((resolve, reject) => { + resolve(true); + }); + } +} +class TSLogTransport extends TransportStream { + constructor(opts) { + super(opts); + setImmediate(() => this.emit('opened')); + } + log(info, next) { + setImmediate(() => this.emit('logged', info)); + const { level, message, exception, stack, ...props } = info; + defaultLogger.info(info); + next(); + } +} +export const winstonLogger = (name, file, targets = ELogTargets.Console | ELogTargets.FileJson) => { + const logger = winston.createLogger({ + defaultMeta: { service: name }, + level: 'debug', + transports: [] + }); + if (targets & ELogTargets.Console) { + //logger.add(new TSLogTransport({})) + logger.add(new winston.transports.Console({ + format: winston.format.combine(winston.format.timestamp({ format: 'MM/DD/YYYY hh:mm:ss.SSS' }), + ///winston.format.json(), + winston.format.colorize(), winston.format.printf(info => { + let message = null; + try { + message = JSON.stringify(info.message); + } + catch (e) { + } + return `[${info.level}] [${name}] | message: ${message.substring(0, 200)}`; + })) + })); + } + if (targets & ELogTargets.FileText) { + logger.add(new winston.transports.File({ + format: winston.format.combine(winston.format.timestamp(), winston.format.timestamp({ format: 'MM/DD/YYYY hh:mm:ss.SSS' }), winston.format.json(), winston.format.printf(info => { + return JSON.stringify(info, null, 2); + })), + dirname: path.parse(file).dir, + filename: path.parse(file).base + })); + } + if (targets & ELogTargets.FileJson) { + logger.add(new JsonArrayFileTransport({ + filename: file + })); + } + if (targets & ELogTargets.Seq) { + const config = CONFIG_DEFAULT(); + if (config.seq) { + logger.add(new SeqTransport({ + ...config.seq, + onError: (e => { }) + })); + } + } + return logger; +}; +export const createFileLogger = (logger, level, file) => { + const rfs = createStream(file, { + size: "10M", // rotate every 10 MegaBytes written + interval: "1d", // rotate daily + compress: "gzip", // compress rotated files + }); + const log = new Logger({ + type: "json", + attachedTransports: [ + (logObj) => { + rfs.write(JSON.stringify(logObj) + "\n"); + }, + ], + }); + return log; +}; +export const toolLoggerTS = (name, options) => { + let log = createLogger(name); + //log.settings.minLevel = options.logLevel + log = createFileLogger(log, options.logLevel, path.join(options.logs, `tools-${name}.json`)); + return log; +}; +export const toolLogger = (name, options = { logs: process.cwd() }) => { + const logPath = path.resolve(path.join(options.logs || './', `tools-${name}.json`)); + const log = winstonLogger(name, logPath, ELogTargets.Console); + return log; +}; +export * from './types.js'; +export * from './types_kbot.js'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFDNUIsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQTtBQUV2QixPQUFPLEVBQWtCLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUU5QyxPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsQ0FBQTtBQUNsQyxPQUFPLGVBQWUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFDLE1BQU0sdUJBQXVCLENBQUE7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUlwRCxNQUFNLENBQUMsSUFBSSxNQUFNLEdBQW9CLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQTtBQUNqRSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtBQUV4RyxNQUFNLENBQU4sSUFBWSxVQVFYO0FBUkQsV0FBWSxVQUFVO0lBQ2xCLDZDQUFLLENBQUE7SUFDTCw2Q0FBSyxDQUFBO0lBQ0wsNkNBQUssQ0FBQTtJQUNMLDJDQUFJLENBQUE7SUFDSiwyQ0FBSSxDQUFBO0lBQ0osNkNB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 \ No newline at end of file diff --git a/packages/ai-tools/dist/lib/tools/fs.d.ts b/packages/ai-tools/dist/lib/tools/fs.d.ts index 5852c674..d62651fa 100644 --- a/packages/ai-tools/dist/lib/tools/fs.d.ts +++ b/packages/ai-tools/dist/lib/tools/fs.d.ts @@ -1,3 +1,3 @@ -import { IKBotTask } from '../../types.js'; -export declare const decode_base64: (base64: string) => string; -export declare const tools: (target: string, options: IKBotTask) => Array; +import { IKBotTask } from '../../types.js'; +export declare const decode_base64: (base64: string) => string; +export declare const tools: (target: string, options: IKBotTask) => Array; diff --git a/packages/ai-tools/dist/lib/tools/fs.js b/packages/ai-tools/dist/lib/tools/fs.js index ab5bf53f..578d3660 100644 --- a/packages/ai-tools/dist/lib/tools/fs.js +++ b/packages/ai-tools/dist/lib/tools/fs.js @@ -1,432 +1,432 @@ -import * as path from 'path'; -import { sync as rm } from '@polymech/fs/remove'; -import { isString } from '@polymech/core/primitives'; -import { sync as write } from '@polymech/fs/write'; -import { sync as read } from '@polymech/fs/read'; -import { sync as rename } from '@polymech/fs/rename'; -import { sync as exists } from '@polymech/fs/exists'; -import { sanitize } from "@polymech/fs/utils"; -import { filesEx } from '@polymech/commons'; -import { toolLogger } from '../../index.js'; -import { EXCLUDE_GLOB } from '../../constants.js'; -import { glob } from 'glob'; -const isBase64 = (str) => { - // 1. Quick checks for length & allowed characters: - // - Must be multiple of 4 in length - // - Must match Base64 charset (A-Z, a-z, 0-9, +, /) plus optional "=" padding - if (!str || str.length % 4 !== 0) { - return false; - } - const base64Regex = /^[A-Za-z0-9+/]+={0,2}$/; - if (!base64Regex.test(str)) { - return false; - } - // 2. Attempt decode–re-encode to confirm validity: - try { - const decoded = atob(str); // Decode from Base64 - const reencoded = btoa(decoded); // Re-encode to Base64 - // Compare the re-encoded string to original - return reencoded === str; - } - catch { - return false; - } -}; -export const decode_base64 = (base64) => { - try { - if (!isBase64(base64)) { - return base64; - } - return Buffer.from(base64, 'base64').toString('utf-8'); - } - catch (error) { - throw new Error('Failed to decode base64 string'); - } -}; -// Helper function for smart Base64 decoding -const decodeContentSmart = (content, logger, identifier) => { - if (!content || typeof content !== 'string') { - return content; // Return original content if null, undefined, or not a string - } - const lines = content.split(/\r?\n/); - const processedLines = lines.map(line => { - const trimmedLine = line.trim(); - if (!trimmedLine) { - return ''; // Preserve empty lines between potential blocks but decode the blocks themselves - } - try { - // Attempt to decode Base64 - const decodedLine = Buffer.from(trimmedLine, 'base64').toString('utf-8'); - // Validate if it was actually Base64 by re-encoding - const reEncodedLine = Buffer.from(decodedLine, 'utf-8').toString('base64'); - // Revised Validation Check: - // Compare original trimmed line with re-encoded line. - // Allow for potential padding differences by checking both exact match and no-pad match. - const originalNoPad = trimmedLine.replace(/={1,2}$/, ''); - const reEncodedNoPad = reEncodedLine.replace(/={1,2}$/, ''); - if (reEncodedLine === trimmedLine || reEncodedNoPad === originalNoPad) { - logger.debug(`Successfully decoded Base64 line for ${identifier}`); - return decodedLine; - } - // If validation fails, treat as plain text - logger.debug(`Re-encoding mismatch for ${identifier}. Original: '${trimmedLine}', Re-encoded: '${reEncodedLine}', using original trimmed line.`); - return trimmedLine; - } - catch (decodeError) { - // If decoding throws an error, assume it's plain text - // Use debug level as this is expected for non-base64 lines - logger.debug(`Base64 decoding failed for line in ${identifier}, assuming plain text. Line: ${trimmedLine}`); - return trimmedLine; // Return original trimmed line - } - }); - // Join the processed lines back together - return processedLines.join('\n'); -}; -export const tools = (target, options) => { - const logger = toolLogger('fs', options); - return [ - { - type: 'function', - function: { - name: 'list_files', - description: 'List all files in a directory', - parameters: { - type: 'object', - properties: { - directory: { type: 'string' }, - pattern: { type: 'string', optional: true } - }, - required: ['directory'] - }, - function: async (params) => { - try { - const directory = path.join(target, sanitize(params.directory)); - if (!exists(directory)) { - logger.debug(`Tool::ListFiles Directory ${directory} does not exist`); - return []; - } - let pattern = params.pattern || '**/*'; - logger.debug(`Tool::ListFiles Listing files in ${directory} with pattern ${pattern}`); - pattern = [ - ...EXCLUDE_GLOB, - pattern - ]; - const ret = await glob(pattern, { - cwd: directory, - absolute: false, - ignore: EXCLUDE_GLOB - }); - return ret; - } - catch (error) { - logger.error('Error listing files', error); - throw error; - } - }, - parse: JSON.parse - } - }, - { - type: 'function', - function: { - name: 'read_files', - description: 'Reads files in a directory with a given pattern', - parameters: { - type: 'object', - properties: { - directory: { type: 'string' }, - pattern: { type: 'string', optional: true } - }, - required: ['directory'] - }, - function: async (params) => { - try { - const pattern = params.pattern || '**/*'; - let entries = filesEx(target, pattern); - let ret = entries.map((entry) => { - try { - let content = read(entry); - return { - path: path.relative(target, entry).replace(/\\/g, '/'), - content: content.toString() - }; - } - catch (error) { - logger.error(`Error reading file ${entry}:`, error); - return null; - } - }); - ret = ret.filter((entry) => (entry !== null && entry.content)); - logger.debug(`Tool::ReadFiles Reading files in ${target} with pattern ${pattern} : ${ret.length} files`, ret.map((entry) => entry.path)); - return ret; - } - catch (error) { - logger.error('Error listing files', error); - throw error; - } - }, - parse: JSON.parse - } - }, - { - type: 'function', - function: { - name: 'remove_file', - description: 'Remove a file at given path', - parameters: { - type: 'object', - properties: { - path: { type: 'string' } - }, - required: ['path'] - }, - function: async (params) => { - try { - const filePath = path.join(target, sanitize(params.path)); - logger.debug(`Tool::RemoveFile Removing file ${filePath}`); - rm(filePath); - return true; - } - catch (error) { - logger.error('Error removing file', error); - throw error; - } - }, - parse: JSON.parse - } - }, - { - type: 'function', - function: { - name: 'rename_file', - description: 'Rename or move a file or directory', - parameters: { - type: 'object', - properties: { - src: { type: 'string' }, - dst: { type: 'string' } - }, - required: ['path'] - }, - function: async (params) => { - try { - const src = path.join(target, sanitize(params.src)); - const dst = path.join(target, sanitize(params.dst)); - logger.debug(`Tool::Rename file ${src} to ${dst}`); - rename(src, dst); - rm(src); - return true; - } - catch (error) { - logger.error('Error removing file', error); - throw error; - } - }, - parse: JSON.parse - } - }, - { - type: 'function', - function: { - name: "modify_project_files", - description: "Create or modify existing project files in one shot, preferably used for creating project structure)", - parameters: { - type: "object", - properties: { - files: { - type: "array", - items: { - type: "object", - properties: { - path: { type: "string" }, - content: { type: "string", description: "new file content (Part of JSON payload)" } - }, - required: ["path", "content"] - } - } - }, - required: ["files"], - }, - function: async (ret) => { - try { - if (!target) { - logger.error(`Tool::FS:modify_project_files : Root path required`); - return; - } - let { files } = ret; - if (isString(files)) { - try { - files = JSON.parse(files); - } - catch (error) { - logger.error(`Tool::modify_project_files : Structure Error parsing files`, error, ret); - // Consider writing the raw input for debugging if JSON parsing fails - // write(path.join(target, 'tools-output-error.json'), files) - return error.message; - } - } - for (const file of files) { - const sanitizedPath = sanitize(file.path); - const filePath = path.join(target, sanitizedPath); - logger.debug(`Tool:modify_project_files writing file ${filePath}`); - try { - // const contentToWrite = decodeContentSmart(file.content, logger, sanitizedPath); - try { - await write(filePath, file.content); - } - catch (writeError) { - logger.error(`Tool:modify_project_files Error writing file ${filePath}`, writeError); - } - } - catch (error) { - logger.error(`Tool:modify_project_files Error processing file content for ${filePath}`, error); - } - } - } - catch (error) { - logger.error(`Error creating project structure`, error); - } - }, - parse: JSON.parse, - }, - }, - { - type: 'function', - function: { - name: "write_file", - description: "Writes to a file, given a path and content (Part of JSON payload). No directory or file exists check needed!", - parameters: { - type: "object", - properties: { - file: { - type: "object", - properties: { - path: { type: "string" }, - content: { type: "string", description: "new file content (Part of JSON payload)" } - } - } - }, - required: ["file"], - }, - function: async (params) => { - let fileInfo; - try { - if (isString(params)) { - try { - params = JSON.parse(params); - } - catch (error) { - logger.error(`Tool::write_file : Structure Error parsing JSON`, error, params); - return error.message; - } - } - fileInfo = params.file; // Keep fileInfo accessible - if (!target || !fileInfo || !fileInfo.path || typeof fileInfo.content === 'undefined') { - logger.error(`Tool::write_file : Path/Target/Content are required`, fileInfo); - return false; // Indicate failure - } - const sanitizedPath = sanitize(fileInfo.path); - const filePath = path.join(target, sanitizedPath); - logger.debug(`Tool::write_file Writing file ${filePath}`); - try { - // Use the smart decoding helper function - // const contentToWrite = decodeContentSmart(fileInfo.content, logger, sanitizedPath); - await write(filePath, fileInfo.content); - return true; - } - catch (error) { - // Log error related to processing or writing the file - logger.error(`Tool:write_file Error processing or writing file ${sanitizedPath}`, error); - return false; // Indicate failure - } - } - catch (error) { - logger.error(`Tool:write_file Error writing file ${fileInfo?.path ? sanitize(fileInfo.path) : 'unknown'}`, error); - return false; // Indicate failure - } - }, - parse: JSON.parse, - }, - }, - { - type: 'function', - function: { - name: "file_exists", - description: "check if a file or folder exists", - parameters: { - type: "object", - properties: { - file: { - type: "object", - properties: { - path: { type: "string" } - } - } - }, - required: ["file"], - }, - function: async (ret) => { - try { - if (isString(ret)) { - try { - ret = JSON.parse(ret); - } - catch (error) { - logger.error(`Tool::file_exists : Structure Error parsing files`, error, ret); - return error.message; - } - } - const { file } = ret; - if (!target || !file.path) { - logger.error(`Tool::file_exists : Path is required`, ret); - return; - } - const sanitizedPath = sanitize(file.path); - const filePath = path.join(target, sanitizedPath); - const res = exists(filePath); - logger.debug(`Tool::file_exists ${filePath} exists: ${res}`); - return res ? true : false; - } - catch (error) { - logger.error(`Tool:file_exists error`, error); - return false; - } - }, - parse: JSON.parse, - }, - }, - { - type: 'function', - function: { - name: "read_file", - description: "read a file, at given a path", - parameters: { - type: "object", - properties: { - file: { - type: "object", - properties: { - path: { type: "string" } - } - } - }, - required: ["file"], - }, - function: async (ret) => { - try { - const { file } = ret; - const sanitizedPath = sanitize(file.path); - const filePath = path.join(target, sanitizedPath); - logger.debug(`Tool::ReadFile Reading file ${filePath}`); - return read(filePath, 'string'); - } - catch (error) { - logger.error(`Error reading file`, error); - } - }, - parse: JSON.parse - } - } - ]; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rvb2xzL2ZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBRTVCLE9BQU8sRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUUzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRWpELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFM0IsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFXLEVBQVcsRUFBRTtJQUN0QyxtREFBbUQ7SUFDbkQsdUNBQXVDO0lBQ3ZDLGlGQUFpRjtJQUNqRixJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNoQyxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsTUFBTSxXQUFXLEdBQUcsd0JBQXdCLENBQUM7SUFDN0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJ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 \ No newline at end of file +import * as path from 'path'; +import { sync as rm } from '@polymech/fs/remove'; +import { isString } from '@polymech/core/primitives'; +import { sync as write } from '@polymech/fs/write'; +import { sync as read } from '@polymech/fs/read'; +import { sync as rename } from '@polymech/fs/rename'; +import { sync as exists } from '@polymech/fs/exists'; +import { sanitize } from "@polymech/fs/utils"; +import { filesEx } from '@polymech/commons'; +import { toolLogger } from '../../index.js'; +import { EXCLUDE_GLOB } from '../../constants.js'; +import { glob } from 'glob'; +const isBase64 = (str) => { + // 1. Quick checks for length & allowed characters: + // - Must be multiple of 4 in length + // - Must match Base64 charset (A-Z, a-z, 0-9, +, /) plus optional "=" padding + if (!str || str.length % 4 !== 0) { + return false; + } + const base64Regex = /^[A-Za-z0-9+/]+={0,2}$/; + if (!base64Regex.test(str)) { + return false; + } + // 2. Attempt decode–re-encode to confirm validity: + try { + const decoded = atob(str); // Decode from Base64 + const reencoded = btoa(decoded); // Re-encode to Base64 + // Compare the re-encoded string to original + return reencoded === str; + } + catch { + return false; + } +}; +export const decode_base64 = (base64) => { + try { + if (!isBase64(base64)) { + return base64; + } + return Buffer.from(base64, 'base64').toString('utf-8'); + } + catch (error) { + throw new Error('Failed to decode base64 string'); + } +}; +// Helper function for smart Base64 decoding +const decodeContentSmart = (content, logger, identifier) => { + if (!content || typeof content !== 'string') { + return content; // Return original content if null, undefined, or not a string + } + const lines = content.split(/\r?\n/); + const processedLines = lines.map(line => { + const trimmedLine = line.trim(); + if (!trimmedLine) { + return ''; // Preserve empty lines between potential blocks but decode the blocks themselves + } + try { + // Attempt to decode Base64 + const decodedLine = Buffer.from(trimmedLine, 'base64').toString('utf-8'); + // Validate if it was actually Base64 by re-encoding + const reEncodedLine = Buffer.from(decodedLine, 'utf-8').toString('base64'); + // Revised Validation Check: + // Compare original trimmed line with re-encoded line. + // Allow for potential padding differences by checking both exact match and no-pad match. + const originalNoPad = trimmedLine.replace(/={1,2}$/, ''); + const reEncodedNoPad = reEncodedLine.replace(/={1,2}$/, ''); + if (reEncodedLine === trimmedLine || reEncodedNoPad === originalNoPad) { + logger.debug(`Successfully decoded Base64 line for ${identifier}`); + return decodedLine; + } + // If validation fails, treat as plain text + logger.debug(`Re-encoding mismatch for ${identifier}. Original: '${trimmedLine}', Re-encoded: '${reEncodedLine}', using original trimmed line.`); + return trimmedLine; + } + catch (decodeError) { + // If decoding throws an error, assume it's plain text + // Use debug level as this is expected for non-base64 lines + logger.debug(`Base64 decoding failed for line in ${identifier}, assuming plain text. Line: ${trimmedLine}`); + return trimmedLine; // Return original trimmed line + } + }); + // Join the processed lines back together + return processedLines.join('\n'); +}; +export const tools = (target, options) => { + const logger = toolLogger('fs', options); + return [ + { + type: 'function', + function: { + name: 'list_files', + description: 'List all files in a directory', + parameters: { + type: 'object', + properties: { + directory: { type: 'string' }, + pattern: { type: 'string', optional: true } + }, + required: ['directory'] + }, + function: async (params) => { + try { + const directory = path.join(target, sanitize(params.directory)); + if (!exists(directory)) { + logger.debug(`Tool::ListFiles Directory ${directory} does not exist`); + return []; + } + let pattern = params.pattern || '**/*'; + logger.debug(`Tool::ListFiles Listing files in ${directory} with pattern ${pattern}`); + pattern = [ + ...EXCLUDE_GLOB, + pattern + ]; + const ret = await glob(pattern, { + cwd: directory, + absolute: false, + ignore: EXCLUDE_GLOB + }); + return ret; + } + catch (error) { + logger.error('Error listing files', error); + throw error; + } + }, + parse: JSON.parse + } + }, + { + type: 'function', + function: { + name: 'read_files', + description: 'Reads files in a directory with a given pattern', + parameters: { + type: 'object', + properties: { + directory: { type: 'string' }, + pattern: { type: 'string', optional: true } + }, + required: ['directory'] + }, + function: async (params) => { + try { + const pattern = params.pattern || '**/*'; + let entries = filesEx(target, pattern); + let ret = entries.map((entry) => { + try { + let content = read(entry); + return { + path: path.relative(target, entry).replace(/\\/g, '/'), + content: content.toString() + }; + } + catch (error) { + logger.error(`Error reading file ${entry}:`, error); + return null; + } + }); + ret = ret.filter((entry) => (entry !== null && entry.content)); + logger.debug(`Tool::ReadFiles Reading files in ${target} with pattern ${pattern} : ${ret.length} files`, ret.map((entry) => entry.path)); + return ret; + } + catch (error) { + logger.error('Error listing files', error); + throw error; + } + }, + parse: JSON.parse + } + }, + { + type: 'function', + function: { + name: 'remove_file', + description: 'Remove a file at given path', + parameters: { + type: 'object', + properties: { + path: { type: 'string' } + }, + required: ['path'] + }, + function: async (params) => { + try { + const filePath = path.join(target, sanitize(params.path)); + logger.debug(`Tool::RemoveFile Removing file ${filePath}`); + rm(filePath); + return true; + } + catch (error) { + logger.error('Error removing file', error); + throw error; + } + }, + parse: JSON.parse + } + }, + { + type: 'function', + function: { + name: 'rename_file', + description: 'Rename or move a file or directory', + parameters: { + type: 'object', + properties: { + src: { type: 'string' }, + dst: { type: 'string' } + }, + required: ['path'] + }, + function: async (params) => { + try { + const src = path.join(target, sanitize(params.src)); + const dst = path.join(target, sanitize(params.dst)); + logger.debug(`Tool::Rename file ${src} to ${dst}`); + rename(src, dst); + rm(src); + return true; + } + catch (error) { + logger.error('Error removing file', error); + throw error; + } + }, + parse: JSON.parse + } + }, + { + type: 'function', + function: { + name: "modify_project_files", + description: "Create or modify existing project files in one shot, preferably used for creating project structure)", + parameters: { + type: "object", + properties: { + files: { + type: "array", + items: { + type: "object", + properties: { + path: { type: "string" }, + content: { type: "string", description: "new file content (Part of JSON payload)" } + }, + required: ["path", "content"] + } + } + }, + required: ["files"], + }, + function: async (ret) => { + try { + if (!target) { + logger.error(`Tool::FS:modify_project_files : Root path required`); + return; + } + let { files } = ret; + if (isString(files)) { + try { + files = JSON.parse(files); + } + catch (error) { + logger.error(`Tool::modify_project_files : Structure Error parsing files`, error, ret); + // Consider writing the raw input for debugging if JSON parsing fails + // write(path.join(target, 'tools-output-error.json'), files) + return error.message; + } + } + for (const file of files) { + const sanitizedPath = sanitize(file.path); + const filePath = path.join(target, sanitizedPath); + logger.debug(`Tool:modify_project_files writing file ${filePath}`); + try { + // const contentToWrite = decodeContentSmart(file.content, logger, sanitizedPath); + try { + await write(filePath, file.content); + } + catch (writeError) { + logger.error(`Tool:modify_project_files Error writing file ${filePath}`, writeError); + } + } + catch (error) { + logger.error(`Tool:modify_project_files Error processing file content for ${filePath}`, error); + } + } + } + catch (error) { + logger.error(`Error creating project structure`, error); + } + }, + parse: JSON.parse, + }, + }, + { + type: 'function', + function: { + name: "write_file", + description: "Writes to a file, given a path and content (Part of JSON payload). No directory or file exists check needed!", + parameters: { + type: "object", + properties: { + file: { + type: "object", + properties: { + path: { type: "string" }, + content: { type: "string", description: "new file content (Part of JSON payload)" } + } + } + }, + required: ["file"], + }, + function: async (params) => { + let fileInfo; + try { + if (isString(params)) { + try { + params = JSON.parse(params); + } + catch (error) { + logger.error(`Tool::write_file : Structure Error parsing JSON`, error, params); + return error.message; + } + } + fileInfo = params.file; // Keep fileInfo accessible + if (!target || !fileInfo || !fileInfo.path || typeof fileInfo.content === 'undefined') { + logger.error(`Tool::write_file : Path/Target/Content are required`, fileInfo); + return false; // Indicate failure + } + const sanitizedPath = sanitize(fileInfo.path); + const filePath = path.join(target, sanitizedPath); + logger.debug(`Tool::write_file Writing file ${filePath}`); + try { + // Use the smart decoding helper function + // const contentToWrite = decodeContentSmart(fileInfo.content, logger, sanitizedPath); + await write(filePath, fileInfo.content); + return true; + } + catch (error) { + // Log error related to processing or writing the file + logger.error(`Tool:write_file Error processing or writing file ${sanitizedPath}`, error); + return false; // Indicate failure + } + } + catch (error) { + logger.error(`Tool:write_file Error writing file ${fileInfo?.path ? sanitize(fileInfo.path) : 'unknown'}`, error); + return false; // Indicate failure + } + }, + parse: JSON.parse, + }, + }, + { + type: 'function', + function: { + name: "file_exists", + description: "check if a file or folder exists", + parameters: { + type: "object", + properties: { + file: { + type: "object", + properties: { + path: { type: "string" } + } + } + }, + required: ["file"], + }, + function: async (ret) => { + try { + if (isString(ret)) { + try { + ret = JSON.parse(ret); + } + catch (error) { + logger.error(`Tool::file_exists : Structure Error parsing files`, error, ret); + return error.message; + } + } + const { file } = ret; + if (!target || !file.path) { + logger.error(`Tool::file_exists : Path is required`, ret); + return; + } + const sanitizedPath = sanitize(file.path); + const filePath = path.join(target, sanitizedPath); + const res = exists(filePath); + logger.debug(`Tool::file_exists ${filePath} exists: ${res}`); + return res ? true : false; + } + catch (error) { + logger.error(`Tool:file_exists error`, error); + return false; + } + }, + parse: JSON.parse, + }, + }, + { + type: 'function', + function: { + name: "read_file", + description: "read a file, at given a path", + parameters: { + type: "object", + properties: { + file: { + type: "object", + properties: { + path: { type: "string" } + } + } + }, + required: ["file"], + }, + function: async (ret) => { + try { + const { file } = ret; + const sanitizedPath = sanitize(file.path); + const filePath = path.join(target, sanitizedPath); + logger.debug(`Tool::ReadFile Reading file ${filePath}`); + return read(filePath, 'string'); + } + catch (error) { + logger.error(`Error reading file`, error); + } + }, + parse: JSON.parse + } + } + ]; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rvb2xzL2ZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBRTVCLE9BQU8sRUFBRSxJQUFJLElBQUksRUFBRSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUUzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRWpELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFFM0IsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFXLEVBQVcsRUFBRTtJQUN0QyxtREFBbUQ7SUFDbkQsdUNBQXVDO0lBQ3ZDLGlGQUFpRjtJQUNqRixJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sV0FBVyxHQUFHLHdCQUF3QixDQUFDO0lBQzdDLElBQUksQ0FBQyxXQUFX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 \ No newline at end of file diff --git a/packages/ai-tools/dist/lib/tools/git.d.ts b/packages/ai-tools/dist/lib/tools/git.d.ts index 539fabc9..081be802 100644 --- a/packages/ai-tools/dist/lib/tools/git.d.ts +++ b/packages/ai-tools/dist/lib/tools/git.d.ts @@ -1,2 +1,2 @@ -import { IKBotTask } from '../../types.js'; -export declare const tools: (target: string, options: IKBotTask) => Array; +import { IKBotTask } from '../../types.js'; +export declare const tools: (target: string, options: IKBotTask) => Array; diff --git a/packages/ai-tools/dist/lib/tools/git.js b/packages/ai-tools/dist/lib/tools/git.js index ce89d2ae..1e449c6e 100644 --- a/packages/ai-tools/dist/lib/tools/git.js +++ b/packages/ai-tools/dist/lib/tools/git.js @@ -1,156 +1,156 @@ -import * as path from 'path'; -import { simpleGit } from 'simple-git'; -import { sync as exists } from '@polymech/fs/exists'; -import { substitute } from '@polymech/commons'; -import { logger } from '../../index.js'; -import { toolLogger } from '../../index.js'; -import { findUpSync } from 'find-up'; -const commitFiles = async (filePaths, commitMessage, targetDirectory, variables = {}) => { - try { - if (!filePaths || !filePaths.length) { - logger.warn(`No files to commit`); - return; - } - if (!exists(path.join(targetDirectory, '.git'))) { - try { - logger.info(`Initializing repository at ${targetDirectory}`); - await initRepository(targetDirectory); - } - catch (e) { - logger.error(`Error initializing repository at ${targetDirectory} `, e.message, filePaths); - } - } - const git = simpleGit(targetDirectory); - try { - await git.add(filePaths); - } - catch (e) { - logger.error('Error adding files:', e.message, filePaths); - } - await git.commit(commitMessage); - try { - await git.raw(['branch', '-M', 'master']); - const repo = substitute(false, "${GIT_REPO}/${GIT_USER}/${REPO_NAME}.git", { - REPO_NAME: path.basename(targetDirectory), - ...variables - }); - await git.raw(['remote', 'add', 'origin', repo]); - await git.push(['--set-upstream', 'origin', 'master']); - return true; - } - catch (e) { - if (e.message.includes('remote origin already exists')) { - await git.push(['--set-upstream', 'origin', 'master']); - } - else { - logger.error('Tools::GIT : Error pushing files:', e.message, filePaths); - } - } - } - catch (error) { - logger.error('Error committing files:', error.message, filePaths); - throw error; - } -}; -const initRepository = async (targetDirectory, variables = {}) => { - try { - const git = simpleGit(targetDirectory); - if (!exists(path.join(targetDirectory, '.git'))) { - await git.init(); - logger.info('Git repository initialized successfully!'); - return true; - } - logger.info('Git repository already exists'); - return false; - } - catch (error) { - logger.error('Error initializing git repository:', error.message); - return false; - } -}; -export const tools = (target, options) => { - const logger = toolLogger('git', options); - if (!target) { - logger.warn(`Tools:GIT : Target is required`); - return []; - } - if (!exists(target)) { - logger.warn(`Tools:GIT : Project path doesnt exists ${target}`); - return []; - } - return [ - { - type: 'function', - function: { - name: "init_repository", - description: "Initialize a new git repository", - parameters: { - type: "object", - properties: {}, - required: [] - }, - function: async (params) => { - logger.info(`Tool::init_repository Init Repository in ${target}`); - const gitDir = findUpSync('.git', { type: 'directory', cwd: target }); - if (gitDir && exists(gitDir)) { - logger.info(`Repository already exists at ${gitDir}`); - return true; - } - try { - const ret = await initRepository(target, options.variables); - return true; - } - catch (error) { - logger.error(`Error initializing repository`, error); - return false; - } - }, - parse: JSON.parse, - } - }, - { - type: 'function', - function: { - name: "commit_files_git", - description: "Commit files using git", - parameters: { - type: "object", - properties: { - files: { - type: "array", - items: { - type: "string" - } - }, - message: { - type: "string" - } - }, - required: ["files"], - }, - function: async (ret) => { - debugger; - try { - const { files, message } = ret; - logger.info(`Tool::GIT Commit files ${files} in ${target}`); - if (!target) { - logger.error(`Tool::Git Commit : Target is required`); - return; - } - if (!exists(target)) { - logger.error(`Project doesnt path exists ${target}`); - return; - } - await commitFiles(files, message, target, options.variables); - } - catch (error) { - logger.error(`Error committing dependencies : ${error.message}`); - } - return true; - }, - parse: JSON.parse, - }, - } - ]; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b29scy9naXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFHNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFPLFlBQVksQ0FBQTtBQUV2QyxPQUFPLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUU5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFFcEMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLFNBQW1CLEVBQUUsYUFBcUIsRUFBRSxlQUF1QixFQUFFLFlBQW9DLEVBQUUsRUFBRSxFQUFFO0lBQ3RJLElBQUk7UUFDQSxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtZQUNqQyxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUE7WUFDakMsT0FBTTtTQUNUO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFO1lBQzdDLElBQUk7Z0JBQ0EsTUFBTSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsZUFBZSxFQUFFLENBQUMsQ0FBQTtnQkFDNUQsTUFBTSxjQUFjLENBQUMsZUFBZSxDQUFDLENBQUE7YUFDeEM7WUFBQyxPQUFPLENBQU0sRUFBRTtnQkFDYixNQUFNLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxlQUFlLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFB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 \ No newline at end of file +import * as path from 'path'; +import { simpleGit } from 'simple-git'; +import { sync as exists } from '@polymech/fs/exists'; +import { substitute } from '@polymech/commons'; +import { logger } from '../../index.js'; +import { toolLogger } from '../../index.js'; +import { findUpSync } from 'find-up'; +const commitFiles = async (filePaths, commitMessage, targetDirectory, variables = {}) => { + try { + if (!filePaths || !filePaths.length) { + logger.warn(`No files to commit`); + return; + } + if (!exists(path.join(targetDirectory, '.git'))) { + try { + logger.info(`Initializing repository at ${targetDirectory}`); + await initRepository(targetDirectory); + } + catch (e) { + logger.error(`Error initializing repository at ${targetDirectory} `, e.message, filePaths); + } + } + const git = simpleGit(targetDirectory); + try { + await git.add(filePaths); + } + catch (e) { + logger.error('Error adding files:', e.message, filePaths); + } + await git.commit(commitMessage); + try { + await git.raw(['branch', '-M', 'master']); + const repo = substitute(false, "${GIT_REPO}/${GIT_USER}/${REPO_NAME}.git", { + REPO_NAME: path.basename(targetDirectory), + ...variables + }); + await git.raw(['remote', 'add', 'origin', repo]); + await git.push(['--set-upstream', 'origin', 'master']); + return true; + } + catch (e) { + if (e.message.includes('remote origin already exists')) { + await git.push(['--set-upstream', 'origin', 'master']); + } + else { + logger.error('Tools::GIT : Error pushing files:', e.message, filePaths); + } + } + } + catch (error) { + logger.error('Error committing files:', error.message, filePaths); + throw error; + } +}; +const initRepository = async (targetDirectory, variables = {}) => { + try { + const git = simpleGit(targetDirectory); + if (!exists(path.join(targetDirectory, '.git'))) { + await git.init(); + logger.info('Git repository initialized successfully!'); + return true; + } + logger.info('Git repository already exists'); + return false; + } + catch (error) { + logger.error('Error initializing git repository:', error.message); + return false; + } +}; +export const tools = (target, options) => { + const logger = toolLogger('git', options); + if (!target) { + logger.warn(`Tools:GIT : Target is required`); + return []; + } + if (!exists(target)) { + logger.warn(`Tools:GIT : Project path doesnt exists ${target}`); + return []; + } + return [ + { + type: 'function', + function: { + name: "init_repository", + description: "Initialize a new git repository", + parameters: { + type: "object", + properties: {}, + required: [] + }, + function: async (params) => { + logger.info(`Tool::init_repository Init Repository in ${target}`); + const gitDir = findUpSync('.git', { type: 'directory', cwd: target }); + if (gitDir && exists(gitDir)) { + logger.info(`Repository already exists at ${gitDir}`); + return true; + } + try { + const ret = await initRepository(target, options.variables); + return true; + } + catch (error) { + logger.error(`Error initializing repository`, error); + return false; + } + }, + parse: JSON.parse, + } + }, + { + type: 'function', + function: { + name: "commit_files_git", + description: "Commit files using git", + parameters: { + type: "object", + properties: { + files: { + type: "array", + items: { + type: "string" + } + }, + message: { + type: "string" + } + }, + required: ["files"], + }, + function: async (ret) => { + debugger; + try { + const { files, message } = ret; + logger.info(`Tool::GIT Commit files ${files} in ${target}`); + if (!target) { + logger.error(`Tool::Git Commit : Target is required`); + return; + } + if (!exists(target)) { + logger.error(`Project doesnt path exists ${target}`); + return; + } + await commitFiles(files, message, target, options.variables); + } + catch (error) { + logger.error(`Error committing dependencies : ${error.message}`); + } + return true; + }, + parse: JSON.parse, + }, + } + ]; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b29scy9naXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFHNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFPLFlBQVksQ0FBQTtBQUV2QyxPQUFPLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUU5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFFcEMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLFNBQW1CLEVBQUUsYUFBcUIsRUFBRSxlQUF1QixFQUFFLFlBQW9DLEVBQUUsRUFBRSxFQUFFO0lBQ3RJLElBQUksQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEMsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1lBQ2pDLE9BQU07UUFDVixDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDO2dCQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsOEJBQThCLGVBQWUsRUFBRSxDQUFDLENBQUE7Z0JBQzVELE1BQU0sY0FBYyxDQUFDLGVBQWUsQ0FBQyxDQUFBO1lBQ3pDLENBQUM7WUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO2dCQUNkLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLGVBQWUsR0FBRyxFQUFF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 \ No newline at end of file diff --git a/packages/ai-tools/dist/lib/tools/index.d.ts b/packages/ai-tools/dist/lib/tools/index.d.ts index a2d0cb84..cdb06d6f 100644 --- a/packages/ai-tools/dist/lib/tools/index.d.ts +++ b/packages/ai-tools/dist/lib/tools/index.d.ts @@ -1,8 +1,8 @@ -import { RunnableToolFunctionWithParse } from 'openai/lib/RunnableFunction'; -import { ZodSchema, z } from 'zod'; -export declare const zodFunction: ({ function: fn, schema, description, name, }: { - function: (args: T) => Promise; - schema: ZodSchema; - description?: string; - name?: string; -}) => RunnableToolFunctionWithParse; +import { RunnableToolFunctionWithParse } from 'openai/lib/RunnableFunction'; +import { ZodSchema } from 'zod'; +export declare const zodFunction: ({ function: fn, schema, description, name, }: { + function: (args: T) => Promise; + schema: ZodSchema; + description?: string; + name?: string; +}) => RunnableToolFunctionWithParse; diff --git a/packages/ai-tools/dist/lib/tools/index.js b/packages/ai-tools/dist/lib/tools/index.js index e077e3e0..09b2b69f 100644 --- a/packages/ai-tools/dist/lib/tools/index.js +++ b/packages/ai-tools/dist/lib/tools/index.js @@ -1,18 +1,18 @@ -import { zodToJsonSchema } from 'zod-to-json-schema'; -// see https://github.com/openai/openai-node/blob/master/examples/tool-call-helpers-zod.ts -export const zodFunction = ({ function: fn, schema, description = '', name, }) => { - return { - type: 'function', - function: { - function: fn, - name: name ?? fn.name, - description: description, - parameters: zodToJsonSchema(schema), - parse(input) { - const obj = JSON.parse(input); - return schema.parse(obj); - } - } - }; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rvb2xzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUVwRCwwRkFBMEY7QUFDMUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFFLENBQW1CLEVBQ3pDLFFBQVEsRUFBRSxFQUFFLEVBQ1osTUFBTSxFQUNOLFdBQVcsR0FBRyxFQUFFLEVBQ2hCLElBQUksR0FNTCxFQUFxQyxFQUFFO0lBQ3RDLE9BQU87UUFDTCxJQUFJLEVBQUUsVUFBVTtRQUNoQixRQUFRLEVBQUU7WUFDUixRQUFRLEVBQUUsRUFBRTtZQUNaLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLElBQUk7WUFDckIsV0FBVyxFQUFFLFdBQVc7WUFDeEIsVUFBVSxFQUFFLGVBQWUsQ0FBQyxNQUFNLENBQWU7WUFDakQsS0FBSyxDQUFDLEtBQWE7Z0JBQ2pCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQzdCLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUMxQixDQUFDO1NBQ0Y7S0FDRixDQUFBO0FBQ0gsQ0FBQyxDQUFBIn0= \ No newline at end of file +import { z } from 'zod'; +// see https://github.com/openai/openai-node/blob/master/examples/tool-call-helpers-zod.ts +export const zodFunction = ({ function: fn, schema, description = '', name, }) => { + return { + type: 'function', + function: { + function: fn, + name: name ?? fn.name, + description: description, + parameters: z.toJSONSchema(schema), + parse(input) { + const obj = JSON.parse(input); + return schema.parse(obj); + } + } + }; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rvb2xzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBYSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFFbEMsMEZBQTBGO0FBQzFGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRSxDQUFtQixFQUN6QyxRQUFRLEVBQUUsRUFBRSxFQUNaLE1BQU0sRUFDTixXQUFXLEdBQUcsRUFBRSxFQUNoQixJQUFJLEdBTUwsRUFBcUMsRUFBRTtJQUN0QyxPQUFPO1FBQ0wsSUFBSSxFQUFFLFVBQVU7UUFDaEIsUUFBUSxFQUFFO1lBQ1IsUUFBUSxFQUFFLEVBQUU7WUFDWixJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxJQUFJO1lBQ3JCLFdBQVcsRUFBRSxXQUFXO1lBQ3hCLFVBQVUsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBZTtZQUNoRCxLQUFLLENBQUMsS0FBYTtnQkFDakIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQkFDN0IsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQzFCLENBQUM7U0FDRjtLQUNGLENBQUE7QUFDSCxDQUFDLENBQUEifQ== \ No newline at end of file diff --git a/packages/ai-tools/dist/lib/tools/interact.d.ts b/packages/ai-tools/dist/lib/tools/interact.d.ts index 539fabc9..081be802 100644 --- a/packages/ai-tools/dist/lib/tools/interact.d.ts +++ b/packages/ai-tools/dist/lib/tools/interact.d.ts @@ -1,2 +1,2 @@ -import { IKBotTask } from '../../types.js'; -export declare const tools: (target: string, options: IKBotTask) => Array; +import { IKBotTask } from '../../types.js'; +export declare const tools: (target: string, options: IKBotTask) => Array; diff --git a/packages/ai-tools/dist/lib/tools/interact.js b/packages/ai-tools/dist/lib/tools/interact.js index 62e6b6b5..c2c5b83a 100644 --- a/packages/ai-tools/dist/lib/tools/interact.js +++ b/packages/ai-tools/dist/lib/tools/interact.js @@ -1,85 +1,85 @@ -import { toolLogger } from '../../index.js'; -import { input, select } from '@inquirer/prompts'; -export const tools = (target, options) => { - const logger = toolLogger('interact', options); - return [ - { - type: 'function', - function: { - name: 'ask_question', - description: 'Ask user a simple question and get response', - parameters: { - type: 'object', - properties: { - question: { - type: 'string', - description: 'Question to ask the user' - }, - default: { - type: 'string', - description: 'Default answer', - optional: true - } - }, - required: ['question'] - }, - function: async (params) => { - try { - const answer = await input({ - message: params.question, - default: params.default - }); - return { response: answer }; - } - catch (error) { - logger.error('Error asking question:', error.message); - return null; - } - }, - parse: JSON.parse - } - }, - { - type: 'function', - function: { - name: 'choose_option', - description: 'Ask user to choose from multiple options', - parameters: { - type: 'object', - properties: { - message: { - type: 'string', - description: 'Message to show the user' - }, - choices: { - type: 'array', - items: { type: 'string' }, - description: 'List of choices' - }, - multiple: { - type: 'boolean', - description: 'Allow multiple selections', - optional: true - } - }, - required: ['message', 'choices'] - }, - function: async (params) => { - try { - const answer = await select({ - message: params.message, - choices: params.choices - }); - return { response: answer }; - } - catch (error) { - logger.error('Error in choice selection:', error.message); - return null; - } - }, - parse: JSON.parse - } - } - ]; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rvb2xzL2ludGVyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQWMsRUFBRSxPQUFrQixFQUFjLEVBQUU7SUFDcEUsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUM5QyxPQUFPO1FBQ0g7WUFDSSxJQUFJLEVBQUUsVUFBVTtZQUNoQixRQUFRLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLFdBQVcsRUFBRSw2Q0FBNkM7Z0JBQzFELFVBQVUsRUFBRTtvQkFDUixJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1IsUUFBUSxFQUFFOzRCQUNOLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSwwQkFBMEI7eUJBQzFDO3dCQUNELE9BQU8sRUFBRTs0QkFDTCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsZ0JBQWdCOzRCQUM3QixRQUFRLEVBQUUsSUFBSTt5QkFDakI7cUJBQ0o7b0JBQ0QsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDO2lCQUN6QjtnQkFDRCxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQVcsRUFBRSxFQUFFO29CQUM1QixJQUFJO3dCQUNBLE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUN0Qjs0QkFDSSxPQUFPLEVBQUUsTUFBTSxDQUFDLFFBQVE7NEJBQ3hCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTzt5QkFDMUIsQ0FDSixDQUFBO3dCQUNELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUE7cUJBQzlCO29CQUFDLE9BQU8sS0FBVSxFQUFFO3dCQUNqQixNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDdEQsT0FBTyxJQUFJLENBQUM7cUJBQ2Y7Z0JBQ0wsQ0FBQztnQkFDRCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7YUFDcEI7U0FDeUI7UUFDOUI7WUFDSSxJQUFJLEVBQUUsVUFBVTtZQUNoQixRQUFRLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLFdBQVcsRUFBRSwwQ0FBMEM7Z0JBQ3ZELFVBQVUsRUFBRTtvQkFDUixJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1IsT0FBTyxFQUFFOzRCQUNMLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSwwQkFBMEI7eUJBQzFDO3dCQUNELE9BQU8sRUFBRTs0QkFDTCxJQUFJLEVBQUUsT0FBTzs0QkFDYixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFOzRCQUN6QixXQUFXLEVBQUUsaUJBQWlCO3lCQUNqQzt3QkFDRCxRQUFRLEVBQUU7NEJBQ04sSUFBSSxFQUFFLFNBQVM7NEJBQ2YsV0FBVyxFQUFFLDJCQUEyQjs0QkFDeEMsUUFBUSxFQUFFLElBQUk7eUJBQ2pCO3FCQUNKO29CQUNELFFBQVEsRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7aUJBQ25DO2dCQUNELFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBVyxFQUFFLEVBQUU7b0JBQzVCLElBQUk7d0JBQ0EsTUFBTSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQ3ZCOzRCQUNJLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTzs0QkFDdkIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO3lCQUMxQixDQUNKLENBQUM7d0JBQ0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQTtxQkFDOUI7b0JBQUMsT0FBTyxLQUFVLEVBQUU7d0JBQ2pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUMxRCxPQUFPLElBQUksQ0FBQztxQkFDZjtnQkFDTCxDQUFDO2dCQUNELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzthQUNwQjtTQUN5QjtLQUNqQyxDQUFBO0FBQ0wsQ0FBQyxDQUFBIn0= \ No newline at end of file +import { toolLogger } from '../../index.js'; +import { input, select } from '@inquirer/prompts'; +export const tools = (target, options) => { + const logger = toolLogger('interact', options); + return [ + { + type: 'function', + function: { + name: 'ask_question', + description: 'Ask user a simple question and get response', + parameters: { + type: 'object', + properties: { + question: { + type: 'string', + description: 'Question to ask the user' + }, + default: { + type: 'string', + description: 'Default answer', + optional: true + } + }, + required: ['question'] + }, + function: async (params) => { + try { + const answer = await input({ + message: params.question, + default: params.default + }); + return { response: answer }; + } + catch (error) { + logger.error('Error asking question:', error.message); + return null; + } + }, + parse: JSON.parse + } + }, + { + type: 'function', + function: { + name: 'choose_option', + description: 'Ask user to choose from multiple options', + parameters: { + type: 'object', + properties: { + message: { + type: 'string', + description: 'Message to show the user' + }, + choices: { + type: 'array', + items: { type: 'string' }, + description: 'List of choices' + }, + multiple: { + type: 'boolean', + description: 'Allow multiple selections', + optional: true + } + }, + required: ['message', 'choices'] + }, + function: async (params) => { + try { + const answer = await select({ + message: params.message, + choices: params.choices + }); + return { response: answer }; + } + catch (error) { + logger.error('Error in choice selection:', error.message); + return null; + } + }, + parse: JSON.parse + } + } + ]; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rvb2xzL2ludGVyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQWMsRUFBRSxPQUFrQixFQUFjLEVBQUU7SUFDcEUsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUM5QyxPQUFPO1FBQ0g7WUFDSSxJQUFJLEVBQUUsVUFBVTtZQUNoQixRQUFRLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLFdBQVcsRUFBRSw2Q0FBNkM7Z0JBQzFELFVBQVUsRUFBRTtvQkFDUixJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1IsUUFBUSxFQUFFOzRCQUNOLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSwwQkFBMEI7eUJBQzFDO3dCQUNELE9BQU8sRUFBRTs0QkFDTCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsZ0JBQWdCOzRCQUM3QixRQUFRLEVBQUUsSUFBSTt5QkFDakI7cUJBQ0o7b0JBQ0QsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDO2lCQUN6QjtnQkFDRCxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQVcsRUFBRSxFQUFFO29CQUM1QixJQUFJLENBQUM7d0JBQ0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQ3RCOzRCQUNJLE9BQU8sRUFBRSxNQUFNLENBQUMsUUFBUTs0QkFDeEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO3lCQUMxQixDQUNKLENBQUE7d0JBQ0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQTtvQkFDL0IsQ0FBQztvQkFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO3dCQUNsQixNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDdEQsT0FBTyxJQUFJLENBQUM7b0JBQ2hCLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7YUFDcEI7U0FDeUI7UUFDOUI7WUFDSSxJQUFJLEVBQUUsVUFBVTtZQUNoQixRQUFRLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLFdBQVcsRUFBRSwwQ0FBMEM7Z0JBQ3ZELFVBQVUsRUFBRTtvQkFDUixJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1IsT0FBTyxFQUFFOzRCQUNMLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSwwQkFBMEI7eUJBQzFDO3dCQUNELE9BQU8sRUFBRTs0QkFDTCxJQUFJLEVBQUUsT0FBTzs0QkFDYixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFOzRCQUN6QixXQUFXLEVBQUUsaUJBQWlCO3lCQUNqQzt3QkFDRCxRQUFRLEVBQUU7NEJBQ04sSUFBSSxFQUFFLFNBQVM7NEJBQ2YsV0FBVyxFQUFFLDJCQUEyQjs0QkFDeEMsUUFBUSxFQUFFLElBQUk7eUJBQ2pCO3FCQUNKO29CQUNELFFBQVEsRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUM7aUJBQ25DO2dCQUNELFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBVyxFQUFFLEVBQUU7b0JBQzVCLElBQUksQ0FBQzt3QkFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FDdkI7NEJBQ0ksT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPOzRCQUN2QixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87eUJBQzFCLENBQ0osQ0FBQzt3QkFDRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFBO29CQUMvQixDQUFDO29CQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7d0JBQ2xCLE1BQU0sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO3dCQUMxRCxPQUFPLElBQUksQ0FBQztvQkFDaEIsQ0FBQztnQkFDTCxDQUFDO2dCQUNELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzthQUNwQjtTQUN5QjtLQUNqQyxDQUFBO0FBQ0wsQ0FBQyxDQUFBIn0= \ No newline at end of file diff --git a/packages/ai-tools/dist/lib/tools/keyv.d.ts b/packages/ai-tools/dist/lib/tools/keyv.d.ts index 288178d1..deb738f4 100644 --- a/packages/ai-tools/dist/lib/tools/keyv.d.ts +++ b/packages/ai-tools/dist/lib/tools/keyv.d.ts @@ -1,4 +1,4 @@ -import Keyv from 'keyv'; -export declare const store: (storePath: string, ns?: string, opts?: any) => Keyv; -export declare const get: (key: string, storePath: string, ns?: string, opts?: any) => Promise; -export declare const set: (key: string, value: any, storePath: string, ns?: string, opts?: any) => Promise; +import Keyv from 'keyv'; +export declare const store: (storePath: string, ns?: string, opts?: any) => Keyv; +export declare const get: (key: string, storePath: string, ns?: string, opts?: any) => Promise; +export declare const set: (key: string, value: any, storePath: string, ns?: string, opts?: any) => Promise; diff --git a/packages/ai-tools/dist/lib/tools/keyv.js b/packages/ai-tools/dist/lib/tools/keyv.js index d6685748..756dc084 100644 --- a/packages/ai-tools/dist/lib/tools/keyv.js +++ b/packages/ai-tools/dist/lib/tools/keyv.js @@ -1,20 +1,20 @@ -import * as path from 'path'; -import Keyv from 'keyv'; -import { KeyvFile } from 'keyv-file'; -import { resolve } from '@polymech/commons'; -export const store = (storePath, ns = 'ns-unknown', opts = {}) => { - const keyvFile = new KeyvFile({ - filename: path.resolve(resolve(storePath)), - writeDelay: 100, // ms - }); - return new Keyv({ store: keyvFile, namespace: ns, ...opts }); -}; -export const get = async (key, storePath, ns = 'ns-unknown', opts = {}) => { - const keyv = store(storePath, ns, opts); - return await keyv.get(key); -}; -export const set = async (key, value, storePath, ns = 'ns-unknown', opts = {}) => { - const keyv = store(storePath, ns, opts); - return await keyv.set(key, value); -}; +import * as path from 'path'; +import Keyv from 'keyv'; +import { KeyvFile } from 'keyv-file'; +import { resolve } from '@polymech/commons'; +export const store = (storePath, ns = 'ns-unknown', opts = {}) => { + const keyvFile = new KeyvFile({ + filename: path.resolve(resolve(storePath)), + writeDelay: 100, // ms + }); + return new Keyv({ store: keyvFile, namespace: ns, ...opts }); +}; +export const get = async (key, storePath, ns = 'ns-unknown', opts = {}) => { + const keyv = store(storePath, ns, opts); + return await keyv.get(key); +}; +export const set = async (key, value, storePath, ns = 'ns-unknown', opts = {}) => { + const keyv = store(storePath, ns, opts); + return await keyv.set(key, value); +}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5di5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdG9vbHMva2V5di50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUM1QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUVwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFM0MsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsU0FBaUIsRUFBRSxLQUFhLFlBQVksRUFBRSxPQUFZLEVBQUUsRUFBRSxFQUFFO0lBQ2xGLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDO1FBQzFCLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUs7S0FDekIsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUE7QUFDaEUsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFXLEVBQUUsU0FBaUIsRUFBRSxLQUFhLFlBQVksRUFBRSxPQUFZLEVBQUUsRUFBRSxFQUFFO0lBQ25HLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3ZDLE9BQU8sTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQzlCLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBVyxFQUFFLEtBQVUsRUFBRSxTQUFpQixFQUFFLEtBQWEsWUFBWSxFQUFFLE9BQVksRUFBRSxFQUFFLEVBQUU7SUFDL0csTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdkMsT0FBTyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO0FBQ3JDLENBQUMsQ0FBQSJ9 \ No newline at end of file diff --git a/packages/ai-tools/dist/lib/tools/memory.d.ts b/packages/ai-tools/dist/lib/tools/memory.d.ts index 539fabc9..081be802 100644 --- a/packages/ai-tools/dist/lib/tools/memory.d.ts +++ b/packages/ai-tools/dist/lib/tools/memory.d.ts @@ -1,2 +1,2 @@ -import { IKBotTask } from '../../types.js'; -export declare const tools: (target: string, options: IKBotTask) => Array; +import { IKBotTask } from '../../types.js'; +export declare const tools: (target: string, options: IKBotTask) => Array; diff --git a/packages/ai-tools/dist/lib/tools/memory.js b/packages/ai-tools/dist/lib/tools/memory.js index 43c5e828..123fad0f 100644 --- a/packages/ai-tools/dist/lib/tools/memory.js +++ b/packages/ai-tools/dist/lib/tools/memory.js @@ -1,60 +1,60 @@ -import * as path from 'path'; -import { toolLogger } from '../../index.js'; -import { store, get, set } from './keyv.js'; -// Helper function to get storage path -const getStoragePath = (options) => { - // For now, use default path. Later this can be configured via options - return path.join(process.cwd(), 'memory.json'); -}; -// Default collection name when none provided -const DEFAULT_COLLECTION = 'no-collection'; -// Helper function to process value based on format -const processValueForStorage = (value, format) => { - switch (format) { - case 'json': - try { - // Validate JSON by parsing and re-stringifying - JSON.parse(value); - return value; - } - catch (error) { - throw new Error('Invalid JSON format provided'); - } - case 'binary': - // For binary, we expect base64 encoded data - try { - // Validate base64 - Buffer.from(value, 'base64'); - return value; - } - catch (error) { - throw new Error('Invalid base64 format for binary data'); - } - case 'text': - default: - return value; - } -}; -// Helper function to create memory entry -const createMemoryEntry = (value, format) => { - const now = new Date().toISOString(); - return { - value: processValueForStorage(value, format), - meta: { - type: format, - created: now, - updated: now - } - }; -}; -export const tools = (target, options) => { - const logger = toolLogger('memory', options); - const storagePath = getStoragePath(options); - return [ - { - type: 'function', - function: { - name: 'memorize', +import * as path from 'path'; +import { toolLogger } from '../../index.js'; +import { store, get, set } from './keyv.js'; +// Helper function to get storage path +const getStoragePath = (options) => { + // For now, use default path. Later this can be configured via options + return path.join(process.cwd(), 'memory.json'); +}; +// Default collection name when none provided +const DEFAULT_COLLECTION = 'no-collection'; +// Helper function to process value based on format +const processValueForStorage = (value, format) => { + switch (format) { + case 'json': + try { + // Validate JSON by parsing and re-stringifying + JSON.parse(value); + return value; + } + catch (error) { + throw new Error('Invalid JSON format provided'); + } + case 'binary': + // For binary, we expect base64 encoded data + try { + // Validate base64 + Buffer.from(value, 'base64'); + return value; + } + catch (error) { + throw new Error('Invalid base64 format for binary data'); + } + case 'text': + default: + return value; + } +}; +// Helper function to create memory entry +const createMemoryEntry = (value, format) => { + const now = new Date().toISOString(); + return { + value: processValueForStorage(value, format), + meta: { + type: format, + created: now, + updated: now + } + }; +}; +export const tools = (target, options) => { + const logger = toolLogger('memory', options); + const storagePath = getStoragePath(options); + return [ + { + type: 'function', + function: { + name: 'memorize', description: `Store information in memory as a key-value collection with format support. Supports text, JSON, and binary (base64) formats. Returns: { @@ -65,59 +65,59 @@ Returns: { created: string (ISO timestamp), updated: string (ISO timestamp) } -}`, - parameters: { - type: 'object', - properties: { - collection: { - type: 'string', - description: 'Collection name to organize related data (defaults to "no-collection" if not provided). Acts like a namespace.', - optional: true - }, - key: { - type: 'string', - description: 'Unique identifier for the data within the collection. Must be a string.' - }, - value: { - type: 'string', - description: 'The data to store. For format="text": any string. For format="json": valid JSON string. For format="binary": base64 encoded data.' - }, - format: { - type: 'string', - description: 'Data format type. "text" for plain text (default), "json" for JSON data (validates structure), "binary" for base64 encoded binary data.', - enum: ['text', 'json', 'binary'], - optional: true - } - }, - required: ['key', 'value'] - }, - function: async (params) => { - try { - const { collection = DEFAULT_COLLECTION, key, value, format = 'text' } = params; - logger.debug(`Tool::Memorize Storing ${key} in collection ${collection} as ${format}`); - const memoryEntry = createMemoryEntry(value, format); - await set(`${collection}:${key}`, memoryEntry, storagePath, collection); - return { - success: true, - message: `Stored ${key} in collection ${collection} as ${format}`, - meta: memoryEntry.meta - }; - } - catch (error) { - logger.error('Error storing memory', error); - return { - success: false, - message: error instanceof Error ? error.message : 'Unknown error occurred' - }; - } - }, - parse: JSON.parse - } - }, - { - type: 'function', - function: { - name: 'recall', +}`, + parameters: { + type: 'object', + properties: { + collection: { + type: 'string', + description: 'Collection name to organize related data (defaults to "no-collection" if not provided). Acts like a namespace.', + optional: true + }, + key: { + type: 'string', + description: 'Unique identifier for the data within the collection. Must be a string.' + }, + value: { + type: 'string', + description: 'The data to store. For format="text": any string. For format="json": valid JSON string. For format="binary": base64 encoded data.' + }, + format: { + type: 'string', + description: 'Data format type. "text" for plain text (default), "json" for JSON data (validates structure), "binary" for base64 encoded binary data.', + enum: ['text', 'json', 'binary'], + optional: true + } + }, + required: ['key', 'value'] + }, + function: async (params) => { + try { + const { collection = DEFAULT_COLLECTION, key, value, format = 'text' } = params; + logger.debug(`Tool::Memorize Storing ${key} in collection ${collection} as ${format}`); + const memoryEntry = createMemoryEntry(value, format); + await set(`${collection}:${key}`, memoryEntry, storagePath, collection); + return { + success: true, + message: `Stored ${key} in collection ${collection} as ${format}`, + meta: memoryEntry.meta + }; + } + catch (error) { + logger.error('Error storing memory', error); + return { + success: false, + message: error instanceof Error ? error.message : 'Unknown error occurred' + }; + } + }, + parse: JSON.parse + } + }, + { + type: 'function', + function: { + name: 'recall', description: `Retrieve stored information from memory by collection and key, including format metadata. Returns: { @@ -131,113 +131,113 @@ Returns: { key: string, collection: string, message?: string (error message if success=false) -}`, - parameters: { - type: 'object', - properties: { - collection: { - type: 'string', - description: 'Collection name to retrieve from (defaults to "no-collection" if not provided). Must match the collection used when storing.', - optional: true - }, - key: { - type: 'string', - description: 'The unique identifier of the data to retrieve. Must match the key used when storing.' - } - }, - required: ['key'] - }, - function: async (params) => { - try { - const { collection = DEFAULT_COLLECTION, key } = params; - logger.debug(`Tool::Recall Retrieving ${key} from collection ${collection}`); - const storedData = await get(`${collection}:${key}`, storagePath, collection); - if (storedData === undefined) { - return { success: false, message: `Key ${key} not found in collection ${collection}` }; - } - // Handle both old format (plain string) and new format (MemoryEntry) - let memoryEntry; - if (typeof storedData === 'string') { - // Legacy format - convert to new format - memoryEntry = { - value: storedData, - meta: { - type: 'text', - created: new Date().toISOString(), - updated: new Date().toISOString() - } - }; - } - else { - memoryEntry = storedData; - } - return { - success: true, - value: memoryEntry.value, - meta: memoryEntry.meta, - key, - collection - }; - } - catch (error) { - logger.error('Error retrieving memory', error); - return { - success: false, - message: error instanceof Error ? error.message : 'Unknown error occurred' - }; - } - }, - parse: JSON.parse - } - }, - { - type: 'function', - function: { - name: 'forget', +}`, + parameters: { + type: 'object', + properties: { + collection: { + type: 'string', + description: 'Collection name to retrieve from (defaults to "no-collection" if not provided). Must match the collection used when storing.', + optional: true + }, + key: { + type: 'string', + description: 'The unique identifier of the data to retrieve. Must match the key used when storing.' + } + }, + required: ['key'] + }, + function: async (params) => { + try { + const { collection = DEFAULT_COLLECTION, key } = params; + logger.debug(`Tool::Recall Retrieving ${key} from collection ${collection}`); + const storedData = await get(`${collection}:${key}`, storagePath, collection); + if (storedData === undefined) { + return { success: false, message: `Key ${key} not found in collection ${collection}` }; + } + // Handle both old format (plain string) and new format (MemoryEntry) + let memoryEntry; + if (typeof storedData === 'string') { + // Legacy format - convert to new format + memoryEntry = { + value: storedData, + meta: { + type: 'text', + created: new Date().toISOString(), + updated: new Date().toISOString() + } + }; + } + else { + memoryEntry = storedData; + } + return { + success: true, + value: memoryEntry.value, + meta: memoryEntry.meta, + key, + collection + }; + } + catch (error) { + logger.error('Error retrieving memory', error); + return { + success: false, + message: error instanceof Error ? error.message : 'Unknown error occurred' + }; + } + }, + parse: JSON.parse + } + }, + { + type: 'function', + function: { + name: 'forget', description: `Remove a specific key from memory collection. Returns: { success: boolean, message: string (confirmation or error message) -}`, - parameters: { - type: 'object', - properties: { - collection: { - type: 'string', - description: 'Collection name to remove from (defaults to "no-collection" if not provided). Must match the collection where the key was stored.', - optional: true - }, - key: { - type: 'string', - description: 'The unique identifier of the data to remove. Must match exactly the key used when storing.' - } - }, - required: ['key'] - }, - function: async (params) => { - try { - const { collection = DEFAULT_COLLECTION, key } = params; - logger.debug(`Tool::Forget Removing ${key} from collection ${collection}`); - const keyv = store(storagePath, collection); - const deleted = await keyv.delete(`${collection}:${key}`); - return { success: deleted, message: deleted ? `Removed ${key} from ${collection}` : `Key ${key} not found in ${collection}` }; - } - catch (error) { - logger.error('Error removing from memory', error); - return { - success: false, - message: error instanceof Error ? error.message : 'Unknown error occurred' - }; - } - }, - parse: JSON.parse - } - }, - { - type: 'function', - function: { - name: 'list_memories', +}`, + parameters: { + type: 'object', + properties: { + collection: { + type: 'string', + description: 'Collection name to remove from (defaults to "no-collection" if not provided). Must match the collection where the key was stored.', + optional: true + }, + key: { + type: 'string', + description: 'The unique identifier of the data to remove. Must match exactly the key used when storing.' + } + }, + required: ['key'] + }, + function: async (params) => { + try { + const { collection = DEFAULT_COLLECTION, key } = params; + logger.debug(`Tool::Forget Removing ${key} from collection ${collection}`); + const keyv = store(storagePath, collection); + const deleted = await keyv.delete(`${collection}:${key}`); + return { success: deleted, message: deleted ? `Removed ${key} from ${collection}` : `Key ${key} not found in ${collection}` }; + } + catch (error) { + logger.error('Error removing from memory', error); + return { + success: false, + message: error instanceof Error ? error.message : 'Unknown error occurred' + }; + } + }, + parse: JSON.parse + } + }, + { + type: 'function', + function: { + name: 'list_memories', description: `List all keys in a specific collection using Keyv's iterator method. Returns: { @@ -254,101 +254,101 @@ Returns: { }>, count: number (total number of keys), message?: string (info or error message) -}`, - parameters: { - type: 'object', - properties: { - collection: { - type: 'string', - description: 'Collection name to list keys from (defaults to "no-collection" if not provided). Will return all keys stored in this collection namespace.', - optional: true - } - }, - required: [] - }, - function: async (params) => { - try { - const { collection = DEFAULT_COLLECTION } = params; - logger.debug(`Tool::ListMemories Listing keys in collection ${collection}`); - // Create a Keyv instance for the specific collection to use iterator - const keyv = store(storagePath, collection); - const keys = []; - const entries = []; - try { - // Check if iterator method exists and use it - if (typeof keyv.iterator === 'function') { - try { - // Try calling iterator without arguments first - const iterator = keyv.iterator(); - for await (const [key, value] of iterator) { - // Remove the collection prefix from the key to get the clean key name - const cleanKey = key.replace(`${collection}:`, ''); - keys.push(cleanKey); - // Try to extract metadata if it's a MemoryEntry - let meta = undefined; - if (value && typeof value === 'object' && value.meta) { - meta = value.meta; - } - entries.push({ key: cleanKey, meta }); - } - } - catch (iteratorCallError) { - logger.warn(`Tool::ListMemories Iterator call failed:`, iteratorCallError); - // Fall through to the not available case - return { - success: true, - collection, - keys: [], - entries: [], - count: 0, - message: 'Iterator call failed. Unable to list keys.' - }; - } - } - else { - // Iterator not available, provide helpful message - logger.warn(`Tool::ListMemories Iterator method not available for Keyv instance`); - return { - success: true, - collection, - keys: [], - entries: [], - count: 0, - message: 'Iterator method not available in this Keyv version. Use individual key operations instead.' - }; - } - return { - success: true, - collection, - keys, - entries, - count: keys.length - }; - } - catch (iteratorError) { - // If iterator fails, fall back to returning basic info - logger.warn(`Tool::ListMemories Iterator failed for collection ${collection}:`, iteratorError); - return { - success: true, - collection, - keys: [], - entries: [], - count: 0, - message: 'Iterator failed or collection is empty' - }; - } - } - catch (error) { - logger.error('Error listing memories', error); - return { - success: false, - message: error instanceof Error ? error.message : 'Unknown error occurred' - }; - } - }, - parse: JSON.parse - } - } - ]; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b29scy9tZW1vcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFJNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUUzQyxzQ0FBc0M7QUFDdEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFrQixFQUFVLEVBQUU7SUFDbEQsc0VBQXNFO0lBQ3RFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDbkQsQ0FBQyxDQUFDO0FBRUYsNkNBQTZDO0FBQzdDLE1BQU0sa0JBQWtCLEdBQUcsZUFBZSxDQUFDO0FBZTNDLG1EQUFtRDtBQUNuRCxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWtCLEVBQVUsRUFBRTtJQUN6RSxRQUFRLE1BQU0sRUFBRTtRQUNaLEtBQUssTUFBTTtZQUNQLElBQUk7Z0JBQ0EsK0NBQStDO2dCQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNsQixPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQzthQUNuRDtRQUNMLEtBQUssUUFBUTtZQUNULDRDQUE0QztZQUM1QyxJQUFJO2dCQUNBLGtCQUFrQjtnQkFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzdCLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyx1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 \ No newline at end of file +}`, + parameters: { + type: 'object', + properties: { + collection: { + type: 'string', + description: 'Collection name to list keys from (defaults to "no-collection" if not provided). Will return all keys stored in this collection namespace.', + optional: true + } + }, + required: [] + }, + function: async (params) => { + try { + const { collection = DEFAULT_COLLECTION } = params; + logger.debug(`Tool::ListMemories Listing keys in collection ${collection}`); + // Create a Keyv instance for the specific collection to use iterator + const keyv = store(storagePath, collection); + const keys = []; + const entries = []; + try { + // Check if iterator method exists and use it + if (typeof keyv.iterator === 'function') { + try { + // Try calling iterator without arguments first + const iterator = keyv.iterator(); + for await (const [key, value] of iterator) { + // Remove the collection prefix from the key to get the clean key name + const cleanKey = key.replace(`${collection}:`, ''); + keys.push(cleanKey); + // Try to extract metadata if it's a MemoryEntry + let meta = undefined; + if (value && typeof value === 'object' && value.meta) { + meta = value.meta; + } + entries.push({ key: cleanKey, meta }); + } + } + catch (iteratorCallError) { + logger.warn(`Tool::ListMemories Iterator call failed:`, iteratorCallError); + // Fall through to the not available case + return { + success: true, + collection, + keys: [], + entries: [], + count: 0, + message: 'Iterator call failed. Unable to list keys.' + }; + } + } + else { + // Iterator not available, provide helpful message + logger.warn(`Tool::ListMemories Iterator method not available for Keyv instance`); + return { + success: true, + collection, + keys: [], + entries: [], + count: 0, + message: 'Iterator method not available in this Keyv version. Use individual key operations instead.' + }; + } + return { + success: true, + collection, + keys, + entries, + count: keys.length + }; + } + catch (iteratorError) { + // If iterator fails, fall back to returning basic info + logger.warn(`Tool::ListMemories Iterator failed for collection ${collection}:`, iteratorError); + return { + success: true, + collection, + keys: [], + entries: [], + count: 0, + message: 'Iterator failed or collection is empty' + }; + } + } + catch (error) { + logger.error('Error listing memories', error); + return { + success: false, + message: error instanceof Error ? error.message : 'Unknown error occurred' + }; + } + }, + parse: JSON.parse + } + } + ]; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b29scy9tZW1vcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFJNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUUzQyxzQ0FBc0M7QUFDdEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFrQixFQUFVLEVBQUU7SUFDbEQsc0VBQXNFO0lBQ3RFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDbkQsQ0FBQyxDQUFDO0FBRUYsNkNBQTZDO0FBQzdDLE1BQU0sa0JBQWtCLEdBQUcsZUFBZSxDQUFDO0FBZTNDLG1EQUFtRDtBQUNuRCxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWtCLEVBQVUsRUFBRTtJQUN6RSxRQUFRLE1BQU0sRUFBRSxDQUFDO1FBQ2IsS0FBSyxNQUFNO1lBQ1AsSUFBSSxDQUFDO2dCQUNELCtDQUErQztnQkFDL0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDbEIsT0FBTyxLQUFLLENBQUM7WUFDakIsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1lBQ3BELENBQUM7UUFDTCxLQUFLLFFBQVE7WUFDVCw0Q0FBNEM7WUFDNUMsSUFBSSxDQUFDO2dCQUNELGtCQUFrQjtnQkFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzdCLE9BQU8sS0FBSyxDQUFDO1lBQ2pCLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztZQUM3RCxDQUFDO1FBQ0wsS0FBSyxNQUFNLENBQUM7UUFDWjtZQUNJLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRix5Q0FBeUM7QUFDekMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLEtBQWEsRUFBRSxNQUFrQixFQUFlLEVBQUU7SUFDekUsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQyxPQUFPO1FBQ0gsS0FBSyxFQUFFLHNCQUFzQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7UUFDNUMsSUFBSSxFQUFFO1lBQ0YsSUFBSSxFQUFFLE1BQU07WUFDWixPQUFPLEVBQUUsR0FBRztZQUNaLE9BQU8sRUFBRSxHQUFHO1NBQ2Y7S0FDSixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBYyxFQUFFLE9BQWtCLEVBQWMsRUFBRTtJQUNwRSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzVDLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUU1QyxPQUFPO1FBQ0g7WUFDSSxJQUFJLEVBQUUsVUFBVTtZQUNoQixRQUFRLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLFdBQVcsRUFBRTs7Ozs7Ozs7OztFQVUzQjtnQkFDYyxVQUFVLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNSLFVBQVUsRUFBRTs0QkFDUixJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsZ0hBQWdIOzRCQUM3SCxRQUFRLEVBQUUsSUFBSTt5QkFDakI7d0JBQ0QsR0FBRyxFQUFFOzRCQUNELElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSx5RUFBeUU7eUJBQ3pGO3dCQUNELEtBQUssRUFBRTs0QkFDSCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsbUlBQW1JO3lCQUNuSjt3QkFDRCxNQUFNLEVBQUU7NEJBQ0osSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLHlJQUF5STs0QkFDdEosSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUM7NEJBQ2hDLFFBQVEsRUFBRSxJQUFJO3lCQUNqQjtxQkFDSjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO2lCQUM3QjtnQkFDRCxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQVcsRUFBRSxFQUFFO29CQUM1QixJQUFJLENBQUM7d0JBQ0QsTUFBTSxFQUFFLFVBQVUsR0FBRyxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUM7d0JBQ2hGLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEdBQUcsa0JBQWtCLFVBQVUsT0FBTyxNQUFNLEVBQUUsQ0FBQyxDQUFDO3dCQUV2RixNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsTUFBb0IsQ0FBQyxDQUFDO3dCQUNuRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLFVBQVUsSUFBSSxHQUFHLEVBQUUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO3dCQUV4RSxPQUFPOzRCQUNILE9BQU8sRUFBRSxJQUFJOzRCQUNiLE9BQU8sRUFBRSxVQUFVLEdBQUcsa0JBQWtCLFVBQVUsT0FBTyxNQUFNLEVBQUU7NEJBQ2pFLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSTt5QkFDekIsQ0FBQztvQkFDTixDQUFDO29CQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7d0JBQ2IsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQzt3QkFDNUMsT0FBTzs0QkFDSCxPQUFPLEVBQUUsS0FBSzs0QkFDZCxPQUFPLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsd0JBQXdCO3lCQUM3RSxDQUFDO29CQUNOLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7YUFDcEI7U0FDeUI7UUFDOUI7WUFDSSxJQUFJLEVBQUUsVUFBVTtZQUNoQixRQUFRLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFOzs7Ozs7Ozs7Ozs7O0VBYTNCO2dCQUNjLFVBQVUsRUFBRTtvQkFDUixJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1IsVUFBVSxFQUFFOzRCQUNSLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSw4SEFBOEg7NEJBQzNJLFFBQVEsRUFBRSxJQUFJO3lCQUNqQjt3QkFDRCxHQUFHLEVBQUU7NEJBQ0QsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLHNGQUFzRjt5QkFDdEc7cUJBQ0o7b0JBQ0QsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDO2lCQUNwQjtnQkFDRCxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQVcsRUFBRSxFQUFFO29CQUM1QixJQUFJLENBQUM7d0JBQ0QsTUFBTSxFQUFFLFVBQVUsR0FBRyxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUM7d0JBQ3hELE1BQU0sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEdBQUcsb0JBQW9CLFVBQVUsRUFBRSxDQUFDLENBQUM7d0JBRTdFLE1BQU0sVUFBVSxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsVUFBVSxJQUFJLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQzt3QkFDOUUsSUFBSSxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7NEJBQzNCLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEdBQUcsNEJBQTRCLFVBQVUsRUFBRSxFQUFFLENBQUM7d0JBQzNGLENBQUM7d0JBRUQscUVBQXFFO3dCQUNyRSxJQUFJLFdBQXdCLENBQUM7d0JBQzdCLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7NEJBQ2pDLHdDQUF3Qzs0QkFDeEMsV0FBVyxHQUFHO2dDQUNWLEtBQUssRUFBRSxVQUFVO2dDQUNqQixJQUFJLEVBQUU7b0NBQ0YsSUFBSSxFQUFFLE1BQU07b0NBQ1osT0FBTyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO29DQUNqQyxPQUFPLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7aUNBQ3BDOzZCQUNKLENBQUM7d0JBQ04sQ0FBQzs2QkFBTSxDQUFDOzRCQUNKLFdBQVcsR0FBRyxVQUF5QixDQUFDO3dCQUM1QyxDQUFDO3dCQUVELE9BQU87NEJBQ0gsT0FBTyxFQUFFLElBQUk7NEJBQ2IsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLOzRCQUN4QixJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUk7NEJBQ3RCLEdBQUc7NEJBQ0gsVUFBVTt5QkFDYixDQUFDO29CQUNOLENBQUM7b0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQzt3QkFDYixNQUFNLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLEtBQUssQ0FBQyxDQUFDO3dCQUMvQyxPQUFPOzRCQUNILE9BQU8sRUFBRSxLQUFLOzRCQUNkLE9BQU8sRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyx3QkFBd0I7eUJBQzdFLENBQUM7b0JBQ04sQ0FBQztnQkFDTCxDQUFDO2dCQUNELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzthQUNwQjtTQUN5QjtRQUM5QjtZQUNJLElBQUksRUFBRSxVQUFVO1lBQ2hCLFFBQVEsRUFBRTtnQkFDTixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUU7Ozs7O0VBSzNCO2dCQUNjLFVBQVUsRUFBRTtvQkFDUixJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1IsVUFBVSxFQUFFOzRCQUNSLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSxtSUFBbUk7NEJBQ2hKLFFBQVEsRUFBRSxJQUFJO3lCQUNqQjt3QkFDRCxHQUFHLEVBQUU7NEJBQ0QsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLDRGQUE0Rjt5QkFDNUc7cUJBQ0o7b0JBQ0QsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDO2lCQUNwQjtnQkFDRCxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQVcsRUFBRSxFQUFFO29CQUM1QixJQUFJLENBQUM7d0JBQ0QsTUFBTSxFQUFFLFVBQVUsR0FBRyxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUM7d0JBQ3hELE1BQU0sQ0FBQyxLQUFLLENBQUMseUJBQXlCLEdBQUcsb0JBQW9CLFVBQVUsRUFBRSxDQUFDLENBQUM7d0JBRTNFLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7d0JBQzVDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO3dCQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsU0FBUyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLGlCQUFpQixVQUFVLEVBQUUsRUFBRSxDQUFDO29CQUNsSSxDQUFDO29CQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7d0JBQ2IsTUFBTSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxLQUFLLENBQUMsQ0FBQzt3QkFDbEQsT0FBTzs0QkFDSCxPQUFPLEVBQUUsS0FBSzs0QkFDZCxPQUFPLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsd0JBQXdCO3lCQUM3RSxDQUFDO29CQUNOLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7YUFDcEI7U0FDeUI7UUFDOUI7WUFDSSxJQUFJLEVBQUUsVUFBVTtZQUNoQixRQUFRLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLFdBQVcsRUFBRTs7Ozs7Ozs7Ozs7Ozs7OztFQWdCM0I7Z0JBQ2MsVUFBVSxFQUFFO29CQUNSLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDUixVQUFVLEVBQUU7NEJBQ1IsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLDRJQUE0STs0QkFDekosUUFBUSxFQUFFLElBQUk7eUJBQ2pCO3FCQUNKO29CQUNELFFBQVEsRUFBRSxFQUFFO2lCQUNmO2dCQUNELFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBVyxFQUFFLEVBQUU7b0JBQzVCLElBQUksQ0FBQzt3QkFDRCxNQUFNLEVBQUUsVUFBVSxHQUFHLGtCQUFrQixFQUFFLEdBQUcsTUFBTSxDQUFDO3dCQUVuRCxNQUFNLENBQUMsS0FBSyxDQUFDLGlEQUFpRCxVQUFVLEVBQUUsQ0FBQyxDQUFDO3dCQUU1RSxxRUFBcUU7d0JBQ3JFLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7d0JBQzVDLE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQzt3QkFDMUIsTUFBTSxPQUFPLEdBQWtDLEVBQUUsQ0FBQzt3QkFFbEQsSUFBSSxDQUFDOzRCQUNELDZDQUE2Qzs0QkFDN0MsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssVUFBVSxFQUFFLENBQUM7Z0NBQ3RDLElBQUksQ0FBQztvQ0FDRCwrQ0FBK0M7b0NBQy9DLE1BQU0sUUFBUSxHQUFJLElBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQ0FDMUMsSUFBSSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQzt3Q0FDeEMsc0VBQXNFO3dDQUN0RSxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsVUFBVSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7d0NBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7d0NBRXBCLGdEQUFnRDt3Q0FDaEQsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDO3dDQUNyQixJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDOzRDQUNuRCxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQzt3Q0FDdEIsQ0FBQzt3Q0FFRCxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO29DQUMxQyxDQUFDO2dDQUNMLENBQUM7Z0NBQUMsT0FBTyxpQkFBaUIsRUFBRSxDQUFDO29DQUN6QixNQUFNLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxFQUFFLGlCQUFpQixDQUFDLENBQUM7b0NBQzNFLHlDQUF5QztvQ0FDekMsT0FBTzt3Q0FDSCxPQUFPLEVBQUUsSUFBSTt3Q0FDYixVQUFVO3dDQUNWLElBQUksRUFBRSxFQUFFO3dDQUNSLE9BQU8sRUFBRSxFQUFFO3dDQUNYLEtBQUssRUFBRSxDQUFDO3dDQUNSLE9BQU8sRUFBRSw0Q0FBNEM7cUNBQ3hELENBQUM7Z0NBQ04sQ0FBQzs0QkFDTCxDQUFDO2lDQUFNLENBQUM7Z0NBQ0osa0RBQWtEO2dDQUNsRCxNQUFNLENBQUMsSUFBSSxDQUFDLG9FQUFvRSxDQUFDLENBQUM7Z0NBQ2xGLE9BQU87b0NBQ0gsT0FBTyxFQUFFLElBQUk7b0NBQ2IsVUFBVTtvQ0FDVixJQUFJLEVBQUUsRUFBRTtvQ0FDUixPQUFPLEVBQUUsRUFBRTtvQ0FDWCxLQUFLLEVBQUUsQ0FBQztvQ0FDUixPQUFPLEVBQUUsNEZBQTRGO2lDQUN4RyxDQUFDOzRCQUNOLENBQUM7NEJBRUQsT0FBTztnQ0FDSCxPQUFPLEVBQUUsSUFBSTtnQ0FDYixVQUFVO2dDQUNWLElBQUk7Z0NBQ0osT0FBTztnQ0FDUCxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU07NkJBQ3JCLENBQUM7d0JBQ04sQ0FBQzt3QkFBQyxPQUFPLGFBQWEsRUFBRSxDQUFDOzRCQUNyQix1REFBdUQ7NEJBQ3ZELE1BQU0sQ0FBQyxJQUFJLENBQUMscURBQXFELFVBQVUsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDOzRCQUMvRixPQUFPO2dDQUNILE9BQU8sRUFBRSxJQUFJO2dDQUNiLFVBQVU7Z0NBQ1YsSUFBSSxFQUFFLEVBQUU7Z0NBQ1IsT0FBTyxFQUFFLEVBQUU7Z0NBQ1gsS0FBSyxFQUFFLENBQUM7Z0NBQ1IsT0FBTyxFQUFFLHdDQUF3Qzs2QkFDcEQsQ0FBQzt3QkFDTixDQUFDO29CQUNMLENBQUM7b0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQzt3QkFDYixNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO3dCQUM5QyxPQUFPOzRCQUNILE9BQU8sRUFBRSxLQUFLOzRCQUNkLE9BQU8sRUFBRSxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyx3QkFBd0I7eUJBQzdFLENBQUM7b0JBQ04sQ0FBQztnQkFDTCxDQUFDO2dCQUNELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzthQUNwQjtTQUN5QjtLQUNqQyxDQUFBO0FBQ0wsQ0FBQyxDQUFDIn0= \ No newline at end of file diff --git a/packages/ai-tools/dist/lib/tools/npm.d.ts b/packages/ai-tools/dist/lib/tools/npm.d.ts index 539fabc9..081be802 100644 --- a/packages/ai-tools/dist/lib/tools/npm.d.ts +++ b/packages/ai-tools/dist/lib/tools/npm.d.ts @@ -1,2 +1,2 @@ -import { IKBotTask } from '../../types.js'; -export declare const tools: (target: string, options: IKBotTask) => Array; +import { IKBotTask } from '../../types.js'; +export declare const tools: (target: string, options: IKBotTask) => Array; diff --git a/packages/ai-tools/dist/lib/tools/npm.js b/packages/ai-tools/dist/lib/tools/npm.js index 966b7579..6ffe7517 100644 --- a/packages/ai-tools/dist/lib/tools/npm.js +++ b/packages/ai-tools/dist/lib/tools/npm.js @@ -1,150 +1,150 @@ -import { exec } from 'child_process'; -import { promisify } from 'util'; -import { logger } from '../../index.js'; -import pMap from "p-map"; -import { sync as exists } from '@polymech/fs/exists'; -import { toolLogger } from '../../index.js'; -const execAsync = promisify(exec); -const install = async (dependency, directory) => { - return new Promise((resolve, reject) => { - const command = `pnpm add ${dependency} --dir ${directory}`; - exec(command, (error, stdout, stderr) => { - if (error) { - logger.error(`Error installing ${dependency}:`, error.message); - return resolve(false); - } - logger.info(`Successfully installed "${dependency}" in "${directory}".`); - }); - }); -}; -export const tools = (target, options) => { - const logger = toolLogger('npm', options); - return [ - { - type: 'function', - function: { - name: 'build_project', - description: 'Build project using pnpm build command', - parameters: { - type: 'object', - properties: {}, - required: [] - }, - function: async () => { - try { - logger.debug(`Tool::BuildProject Building project at ${target}`); - const { stdout, stderr } = await execAsync('pnpm build', { - cwd: target - }); - return { - success: !stderr, - output: stdout, - error: stderr || null - }; - } - catch (error) { - logger.error('Error building project', error); - return { - success: false, - output: null, - error: error.message - }; - } - }, - parse: JSON.parse - } - }, - { - type: 'function', - function: { - name: 'run_npm', - description: 'Run an npm/pnpm command', - parameters: { - type: 'object', - properties: { - command: { type: 'string', description: 'Command to run (e.g. install, test, etc)' }, - args: { - type: 'array', - items: { type: 'string' }, - description: 'Additional arguments for the command', - optional: true - } - }, - required: ['command'] - }, - function: async (params) => { - try { - const args = params.args ? params.args.join(' ') : ''; - const fullCommand = `pnpm ${params.command} ${args}`.trim(); - logger.debug(`Tool::RunNpm Running command: ${fullCommand}`); - const { stdout, stderr } = await execAsync(fullCommand, { - cwd: target - }); - return { - success: !stderr, - output: stdout, - error: stderr || null - }; - } - catch (error) { - logger.error('Error running npm command', error); - return { - success: false, - output: null, - error: error.message - }; - } - }, - parse: JSON.parse - } - }, - { - type: 'function', - function: { - name: "install_dependency", - description: "Install a dependency using npm", - parameters: { - type: "object", - properties: { - dependencies: { - type: "array", - items: { - type: "string" - } - } - }, - required: ["dependencies"], - }, - function: async (ret) => { - try { - const { dependencies } = ret; - if (!target) { - logger.error(`Tool::NPM Target is required to install dependencies`); - return; - } - if (!exists(target)) { - logger.error(`Project doesnt path exists ${target}`); - return; - } - await pMap(dependencies, (async (dependency) => { - logger.info(`Installing dependency`, dependency); - try { - return install(dependency, target); - } - catch (error) { - logger.error(`Error installing dependency ${dependency} `, error); - } - }), { - concurrency: 1 - }); - } - catch (error) { - logger.error(`Error installing dependencies`, error); - } - }, - parse: JSON.parse, - } - } - ]; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b29scy9ucG0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN2QyxPQUFPLElBQUksTUFBTSxPQUFPLENBQUE7QUFDeEIsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFM0MsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ2pDLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxVQUFrQixFQUFFLFNBQWlCLEVBQWdCLEVBQUU7SUFDMUUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNuQyxNQUFNLE9BQU8sR0FBRyxZQUFZLFVBQVUsVUFBVSxTQUFTLEVBQUUsQ0FBQTtRQUMzRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNwQyxJQUFJLEtBQUssRUFBRTtnQkFDUCxNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixVQUFVLEdBQUcsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7Z0JBQzlELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO2FBQ3hCO1lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsVUFBVSxTQUFTLFNBQVMsSUFBSSxDQUFDLENBQUE7UUFDNUUsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQTtBQUNE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 \ No newline at end of file +import { exec } from 'child_process'; +import { promisify } from 'util'; +import { logger } from '../../index.js'; +import pMap from "p-map"; +import { sync as exists } from '@polymech/fs/exists'; +import { toolLogger } from '../../index.js'; +const execAsync = promisify(exec); +const install = async (dependency, directory) => { + return new Promise((resolve, reject) => { + const command = `pnpm add ${dependency} --dir ${directory}`; + exec(command, (error, stdout, stderr) => { + if (error) { + logger.error(`Error installing ${dependency}:`, error.message); + return resolve(false); + } + logger.info(`Successfully installed "${dependency}" in "${directory}".`); + }); + }); +}; +export const tools = (target, options) => { + const logger = toolLogger('npm', options); + return [ + { + type: 'function', + function: { + name: 'build_project', + description: 'Build project using pnpm build command', + parameters: { + type: 'object', + properties: {}, + required: [] + }, + function: async () => { + try { + logger.debug(`Tool::BuildProject Building project at ${target}`); + const { stdout, stderr } = await execAsync('pnpm build', { + cwd: target + }); + return { + success: !stderr, + output: stdout, + error: stderr || null + }; + } + catch (error) { + logger.error('Error building project', error); + return { + success: false, + output: null, + error: error.message + }; + } + }, + parse: JSON.parse + } + }, + { + type: 'function', + function: { + name: 'run_npm', + description: 'Run an npm/pnpm command', + parameters: { + type: 'object', + properties: { + command: { type: 'string', description: 'Command to run (e.g. install, test, etc)' }, + args: { + type: 'array', + items: { type: 'string' }, + description: 'Additional arguments for the command', + optional: true + } + }, + required: ['command'] + }, + function: async (params) => { + try { + const args = params.args ? params.args.join(' ') : ''; + const fullCommand = `pnpm ${params.command} ${args}`.trim(); + logger.debug(`Tool::RunNpm Running command: ${fullCommand}`); + const { stdout, stderr } = await execAsync(fullCommand, { + cwd: target + }); + return { + success: !stderr, + output: stdout, + error: stderr || null + }; + } + catch (error) { + logger.error('Error running npm command', error); + return { + success: false, + output: null, + error: error.message + }; + } + }, + parse: JSON.parse + } + }, + { + type: 'function', + function: { + name: "install_dependency", + description: "Install a dependency using npm", + parameters: { + type: "object", + properties: { + dependencies: { + type: "array", + items: { + type: "string" + } + } + }, + required: ["dependencies"], + }, + function: async (ret) => { + try { + const { dependencies } = ret; + if (!target) { + logger.error(`Tool::NPM Target is required to install dependencies`); + return; + } + if (!exists(target)) { + logger.error(`Project doesnt path exists ${target}`); + return; + } + await pMap(dependencies, (async (dependency) => { + logger.info(`Installing dependency`, dependency); + try { + return install(dependency, target); + } + catch (error) { + logger.error(`Error installing dependency ${dependency} `, error); + } + }), { + concurrency: 1 + }); + } + catch (error) { + logger.error(`Error installing dependencies`, error); + } + }, + parse: JSON.parse, + } + } + ]; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b29scy9ucG0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ2hDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN2QyxPQUFPLElBQUksTUFBTSxPQUFPLENBQUE7QUFDeEIsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFM0MsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ2pDLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxVQUFrQixFQUFFLFNBQWlCLEVBQWdCLEVBQUU7SUFDMUUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNuQyxNQUFNLE9BQU8sR0FBRyxZQUFZLFVBQVUsVUFBVSxTQUFTLEVBQUUsQ0FBQTtRQUMzRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNwQyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNSLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLFVBQVUsR0FBRyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtnQkFDOUQsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDekIsQ0FBQztZQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLFVBQVUsU0FBUyxTQUFTLElBQUksQ0FBQyxDQUFBO1FBQzVFLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFD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 \ No newline at end of file diff --git a/packages/ai-tools/dist/lib/tools/process.d.ts b/packages/ai-tools/dist/lib/tools/process.d.ts index 921d05ed..1ec9aaa8 100644 --- a/packages/ai-tools/dist/lib/tools/process.d.ts +++ b/packages/ai-tools/dist/lib/tools/process.d.ts @@ -1,16 +1,16 @@ -export declare enum STATUS { - OK = 0, - ERROR = 1, - PENDING = 2 -} -export declare class Process { - binary: string; - cwd: string; - args: string; - buffer: string[]; - constructor(options?: any); - exec(command: string, args?: string[]): Promise; -} -export declare class Helper { - static run(cwd: any, cmd: string, args: string[], buffer?: string[], debug_stream?: boolean): Promise; -} +export declare enum STATUS { + OK = 0, + ERROR = 1, + PENDING = 2 +} +export declare class Process { + binary: string; + cwd: string; + args: string; + buffer: string[]; + constructor(options?: any); + exec(command: string, args?: string[]): Promise; +} +export declare class Helper { + static run(cwd: any, cmd: string, args: string[], buffer?: string[], debug_stream?: boolean): Promise; +} diff --git a/packages/ai-tools/dist/lib/tools/process.js b/packages/ai-tools/dist/lib/tools/process.js index 109c1989..bc4f2a05 100644 --- a/packages/ai-tools/dist/lib/tools/process.js +++ b/packages/ai-tools/dist/lib/tools/process.js @@ -1,126 +1,126 @@ -import { logger } from '../../index.js'; -import { spawn } from 'child_process'; -export var STATUS; -(function (STATUS) { - STATUS[STATUS["OK"] = 0] = "OK"; - STATUS[STATUS["ERROR"] = 1] = "ERROR"; - STATUS[STATUS["PENDING"] = 2] = "PENDING"; -})(STATUS = STATUS || (STATUS = {})); -const fatalHandler = (message, fn) => { - if (message.startsWith('fatal:')) { - fn('\t\ ' + message); - return true; - } - return false; -}; -const defaultFilter = (message) => { - return message.length > 0 && - message !== '\n' && - message !== '\r' && - message !== '\r\n' && - !message.startsWith('Debugger attached') && - !message.includes('NODE_TLS_REJECT_UNAUTHORIZED') && - !message.includes('Waiting for the debugger to disconnect'); -}; -const subscribe = (signal, collector = () => { }) => { - if (!signal || !signal.on) { - return; - } - signal.on('message', (message) => logger.debug('message', message)); - signal.on('error', (error) => logger.error('std-error', error)); - signal.on('data', (data) => { - /* - const msg = data.toString().replace(ansiRegex(), "") - if (!defaultFilter(msg)) { - return - } - collector(msg)*/ - process.stdout.write(data); - }); -}; -const merge = (buffer, data) => buffer.concat(data); -const hook = (child, resolve, reject, cmd, buffer = []) => { - const collector = (data) => { buffer.push(data); }; - //subscribe(child.stderr, collector) - //process.stdin.pipe(child.stdin) - debugger; - child.on('exit', (code, signal) => { - debugger; - if (code) { - resolve({ - code: STATUS.ERROR, - command: cmd, - error: code, - messages: buffer - }); - } - else { - resolve({ - code: STATUS.OK, - command: cmd, - messages: buffer - }); - } - }); - return child; -}; -export class Process { - binary = ''; - cwd = ''; - args = ''; - buffer = []; - constructor(options = {}) { - this.binary = options.binary || this.binary; - this.cwd = options.cwd || process.cwd(); - this.buffer = options.buffer || []; - } - async exec(command, args = []) { - args = [command].concat(args); - try { - let cmd = `${this.binary} ${args.join(' ')}`; - /* - const p = new Promise((resolve, reject) => { - const p = exec(cmd, { - cwd: this.cwd - }) - return hook(p, resolve, reject, this.binary + ' ' + args.join(' '), this.buffer) - }) - return p - */ - try { - //stdio: ['pipe', 'pipe', 'pipe'], - debugger; - const p = new Promise((resolve, reject) => { - const cp = spawn(cmd, args, { - cwd: this.cwd, - shell: true, - stdio: 'inherit', - env: { - ...process.env - }, - }); - return hook(cp, resolve, reject, cmd, this.buffer); - }); - return p; - } - catch (e) { - logger.error('Error executing command', e); - } - } - catch (e) { - logger.error('Error executing command', e); - } - } -} -export class Helper { - static async run(cwd, cmd, args, buffer = [], debug_stream = false) { - debug_stream && logger.info(`Run ${cmd} in ${cwd}`, args); - const gitProcess = new Process({ - cwd, - binary: cmd, - buffer - }); - return gitProcess.exec('', args); - } -} -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdG9vbHMvcHJvY2Vzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFdkMsT0FBTyxFQUFnQixLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFbkQsTUFBTSxDQUFOLElBQVksTUFJWDtBQUpELFdBQVksTUFBTTtJQUNkLCtCQUFFLENBQUE7SUFDRixxQ0FBSyxDQUFBO0lBQ0wseUNBQU8sQ0FBQTtBQUNYLENBQUMsRUFKVyxNQUFNLEdBQU4sTUFBTSxLQUFOLE1BQU0sUUFJakI7QUFFRCxNQUFNLFlBQVksR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUF5QixFQUFXLEVBQUU7SUFDekUsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQzlCLEVBQUUsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUE7UUFDcEIsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUNELE9BQU8sS0FBSyxDQUFBO0FBQ2hCLENBQUMsQ0FBQTtBQUVELE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBZSxFQUFXLEVBQUU7SUFDL0MsT0FBTyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDckIsT0FBTyxLQUFLLElBQUk7UUFDaEIsT0FBTyxLQUFLLElBQUk7UUFDaEIsT0FBTyxLQUFLLE1BQU07UUFDbEIsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDO1FBQ3hDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyw4QkFBOEIsQ0FBQztRQUNqRCxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsd0NBQXdDLENBQUMsQ0FBQTtBQUNuRSxDQUFDLENBQUE7QUFFRCxNQUFNLFNBQVMsR0FBRyxDQUFDLE1BQXVCLEVBQUUsWUFBaUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUU7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 \ No newline at end of file +import { logger } from '../../index.js'; +import { spawn } from 'child_process'; +export var STATUS; +(function (STATUS) { + STATUS[STATUS["OK"] = 0] = "OK"; + STATUS[STATUS["ERROR"] = 1] = "ERROR"; + STATUS[STATUS["PENDING"] = 2] = "PENDING"; +})(STATUS || (STATUS = {})); +const fatalHandler = (message, fn) => { + if (message.startsWith('fatal:')) { + fn('\t\ ' + message); + return true; + } + return false; +}; +const defaultFilter = (message) => { + return message.length > 0 && + message !== '\n' && + message !== '\r' && + message !== '\r\n' && + !message.startsWith('Debugger attached') && + !message.includes('NODE_TLS_REJECT_UNAUTHORIZED') && + !message.includes('Waiting for the debugger to disconnect'); +}; +const subscribe = (signal, collector = () => { }) => { + if (!signal || !signal.on) { + return; + } + signal.on('message', (message) => logger.debug('message', message)); + signal.on('error', (error) => logger.error('std-error', error)); + signal.on('data', (data) => { + /* + const msg = data.toString().replace(ansiRegex(), "") + if (!defaultFilter(msg)) { + return + } + collector(msg)*/ + process.stdout.write(data); + }); +}; +const merge = (buffer, data) => buffer.concat(data); +const hook = (child, resolve, reject, cmd, buffer = []) => { + const collector = (data) => { buffer.push(data); }; + //subscribe(child.stderr, collector) + //process.stdin.pipe(child.stdin) + debugger; + child.on('exit', (code, signal) => { + debugger; + if (code) { + resolve({ + code: STATUS.ERROR, + command: cmd, + error: code, + messages: buffer + }); + } + else { + resolve({ + code: STATUS.OK, + command: cmd, + messages: buffer + }); + } + }); + return child; +}; +export class Process { + binary = ''; + cwd = ''; + args = ''; + buffer = []; + constructor(options = {}) { + this.binary = options.binary || this.binary; + this.cwd = options.cwd || process.cwd(); + this.buffer = options.buffer || []; + } + async exec(command, args = []) { + args = [command].concat(args); + try { + let cmd = `${this.binary} ${args.join(' ')}`; + /* + const p = new Promise((resolve, reject) => { + const p = exec(cmd, { + cwd: this.cwd + }) + return hook(p, resolve, reject, this.binary + ' ' + args.join(' '), this.buffer) + }) + return p + */ + try { + //stdio: ['pipe', 'pipe', 'pipe'], + debugger; + const p = new Promise((resolve, reject) => { + const cp = spawn(cmd, args, { + cwd: this.cwd, + shell: true, + stdio: 'inherit', + env: { + ...process.env + }, + }); + return hook(cp, resolve, reject, cmd, this.buffer); + }); + return p; + } + catch (e) { + logger.error('Error executing command', e); + } + } + catch (e) { + logger.error('Error executing command', e); + } + } +} +export class Helper { + static async run(cwd, cmd, args, buffer = [], debug_stream = false) { + debug_stream && logger.info(`Run ${cmd} in ${cwd}`, args); + const gitProcess = new Process({ + cwd, + binary: cmd, + buffer + }); + return gitProcess.exec('', args); + } +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdG9vbHMvcHJvY2Vzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFdkMsT0FBTyxFQUFnQixLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFbkQsTUFBTSxDQUFOLElBQVksTUFJWDtBQUpELFdBQVksTUFBTTtJQUNkLCtCQUFFLENBQUE7SUFDRixxQ0FBSyxDQUFBO0lBQ0wseUNBQU8sQ0FBQTtBQUNYLENBQUMsRUFKVyxNQUFNLEtBQU4sTUFBTSxRQUlqQjtBQUVELE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQXlCLEVBQVcsRUFBRTtJQUN6RSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUMvQixFQUFFLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFBO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQTtBQUNoQixDQUFDLENBQUE7QUFFRCxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQWUsRUFBVyxFQUFFO0lBQy9DLE9BQU8sT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQ3JCLE9BQU8sS0FBSyxJQUFJO1FBQ2hCLE9BQU8sS0FBSyxJQUFJO1FBQ2hCLE9BQU8sS0FBSyxNQUFNO1FBQ2xCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQztRQUN4QyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsOEJBQThCLENBQUM7UUFDakQsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLHdDQUF3QyxDQUFDLENBQUE7QUFDbkUsQ0FBQyxDQUFBO0FBRUQsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUF1QixFQUFFLFlBQWlDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFF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 \ No newline at end of file diff --git a/packages/ai-tools/dist/lib/tools/search.d.ts b/packages/ai-tools/dist/lib/tools/search.d.ts index 539fabc9..081be802 100644 --- a/packages/ai-tools/dist/lib/tools/search.d.ts +++ b/packages/ai-tools/dist/lib/tools/search.d.ts @@ -1,2 +1,2 @@ -import { IKBotTask } from '../../types.js'; -export declare const tools: (target: string, options: IKBotTask) => Array; +import { IKBotTask } from '../../types.js'; +export declare const tools: (target: string, options: IKBotTask) => Array; diff --git a/packages/ai-tools/dist/lib/tools/search.js b/packages/ai-tools/dist/lib/tools/search.js index 2d35b722..d0729603 100644 --- a/packages/ai-tools/dist/lib/tools/search.js +++ b/packages/ai-tools/dist/lib/tools/search.js @@ -1,90 +1,90 @@ -import { isArray } from '@polymech/core/primitives'; -import { CONFIG_DEFAULT } from '@polymech/commons'; -import { toolLogger } from '../../index.js'; -export const tools = (target, options) => { - const logger = toolLogger('search', options); - return [ - { - type: 'function', - function: { - name: 'google', - description: 'Searches Google for the given query', - parameters: { - type: 'object', - properties: { - query: { type: 'string' } - }, - required: ['query'] - }, - function: async (params) => { - const { query } = params; - const config = CONFIG_DEFAULT(); - let apiKey = config?.google?.api_key; - let cse = config?.google?.cse; - if (!config || !apiKey || !cse) { - logger.debug("Config not found in $HOME/.osr/config.json. " + - "Optionally, export OSR_CONFIG with the path to the configuration file " + - ""); - return undefined; - } - const res = await fetch(`https://www.googleapis.com/customsearch/v1?key=${apiKey}&cx=${cse}&q=${encodeURIComponent(query)}`); - const data = await res.json(); - let results = data.items?.map((item) => ({ - title: item.title, - link: item.link, - snippet: item.snippet, - ...item - })) ?? []; - return JSON.stringify(results); - }, - parse: JSON.parse - } - }, - { - type: 'function', - function: { - name: 'serpapi', - description: 'Searches Serpapi (finds locations (engine:google_local), places on the map (engine:google_maps) ) for the given query', - parameters: { - type: 'object', - properties: { - query: { type: 'string' }, - engine: { type: 'string', default: 'google' }, - }, - required: ['query'] - }, - function: async (params) => { - const { query, engine } = params; - const config = CONFIG_DEFAULT(); - let apiKey = config?.serpapi?.key || config?.serpapi?.api_key; - if (!config || !apiKey) { - logger.debug("Config not found in $HOME/.osr/config.json. " + - "Optionally, export OSR_CONFIG with the path to the configuration file " + - ""); - return undefined; - } - const url = `https://serpapi.com/search?api_key=${apiKey}&engine=${engine || 'google'}&q=${encodeURIComponent(query)}&google_domain=google.com`; - const res = await fetch(url); - logger.debug(`Searching ${url}`); - if (!res.ok) { - throw new Error(`HTTP error! status: ${res.status}`); - } - const data = await res.json(); - let items = data.organic_results || data.local_results || data.place_results || data.places || data.maps_results || []; - if (items && !isArray(items)) { - items = [items]; - } - let results = items.map((item) => ({ - title: item.title, - link: item.link, - snippet: item.snippet, - ...item - })) ?? []; - return JSON.stringify(results); - }, - parse: JSON.parse - } - } - ]; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b29scy9zZWFyY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHM0MsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBYyxFQUFFLE9BQWtCLEVBQWMsRUFBRTtJQUNwRSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzVDLE9BQU87UUFDSDtZQUNJLElBQUksRUFBRSxVQUFVO1lBQ2hCLFFBQVEsRUFBRTtnQkFDTixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUscUNBQXFDO2dCQUNsRCxVQUFVLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNSLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7cUJBQzVCO29CQUNELFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDdEI7Z0JBQ0QsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFXLEVBQUUsRUFBRTtvQkFDNUIsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQTtvQkFDeEIsTUFBTSxNQUFNLEdBQUcsY0FBYyxFQUFTLENBQUE7b0JBQ3RDLElBQUksTUFBTSxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFBO29CQUNwQyxJQUFJLEdBQUcsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQTtvQkFDN0IsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRTt3QkFDNUIsTUFBTSxDQUFDLEtB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 \ No newline at end of file +import { isArray } from '@polymech/core/primitives'; +import { CONFIG_DEFAULT } from '@polymech/commons'; +import { toolLogger } from '../../index.js'; +export const tools = (target, options) => { + const logger = toolLogger('search', options); + return [ + { + type: 'function', + function: { + name: 'google', + description: 'Searches Google for the given query', + parameters: { + type: 'object', + properties: { + query: { type: 'string' } + }, + required: ['query'] + }, + function: async (params) => { + const { query } = params; + const config = CONFIG_DEFAULT(); + let apiKey = config?.google?.api_key; + let cse = config?.google?.cse; + if (!config || !apiKey || !cse) { + logger.debug("Config not found in $HOME/.osr/config.json. " + + "Optionally, export OSR_CONFIG with the path to the configuration file " + + ""); + return undefined; + } + const res = await fetch(`https://www.googleapis.com/customsearch/v1?key=${apiKey}&cx=${cse}&q=${encodeURIComponent(query)}`); + const data = await res.json(); + let results = data.items?.map((item) => ({ + title: item.title, + link: item.link, + snippet: item.snippet, + ...item + })) ?? []; + return JSON.stringify(results); + }, + parse: JSON.parse + } + }, + { + type: 'function', + function: { + name: 'serpapi', + description: 'Searches Serpapi (finds locations (engine:google_local), places on the map (engine:google_maps) ) for the given query', + parameters: { + type: 'object', + properties: { + query: { type: 'string' }, + engine: { type: 'string', default: 'google' }, + }, + required: ['query'] + }, + function: async (params) => { + const { query, engine } = params; + const config = CONFIG_DEFAULT(); + let apiKey = config?.serpapi?.key || config?.serpapi?.api_key; + if (!config || !apiKey) { + logger.debug("Config not found in $HOME/.osr/config.json. " + + "Optionally, export OSR_CONFIG with the path to the configuration file " + + ""); + return undefined; + } + const url = `https://serpapi.com/search?api_key=${apiKey}&engine=${engine || 'google'}&q=${encodeURIComponent(query)}&google_domain=google.com`; + const res = await fetch(url); + logger.debug(`Searching ${url}`); + if (!res.ok) { + throw new Error(`HTTP error! status: ${res.status}`); + } + const data = await res.json(); + let items = data.organic_results || data.local_results || data.place_results || data.places || data.maps_results || []; + if (items && !isArray(items)) { + items = [items]; + } + let results = items.map((item) => ({ + title: item.title, + link: item.link, + snippet: item.snippet, + ...item + })) ?? []; + return JSON.stringify(results); + }, + parse: JSON.parse + } + } + ]; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b29scy9zZWFyY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHM0MsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBYyxFQUFFLE9BQWtCLEVBQWMsRUFBRTtJQUNwRSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzVDLE9BQU87UUFDSDtZQUNJLElBQUksRUFBRSxVQUFVO1lBQ2hCLFFBQVEsRUFBRTtnQkFDTixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUscUNBQXFDO2dCQUNsRCxVQUFVLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNSLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7cUJBQzVCO29CQUNELFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDdEI7Z0JBQ0QsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFXLEVBQUUsRUFBRTtvQkFDNUIsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQTtvQkFDeEIsTUFBTSxNQUFNLEdBQUcsY0FBYyxFQUFTLENBQUE7b0JBQ3RDLElBQUksTUFBTSxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFBO29CQUNwQyxJQUFJLEdBQUcsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQTtvQkFDN0IsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO3dCQUM3QixNQUFNLENB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 \ No newline at end of file diff --git a/packages/ai-tools/dist/lib/tools/terminal.d.ts b/packages/ai-tools/dist/lib/tools/terminal.d.ts index 539fabc9..081be802 100644 --- a/packages/ai-tools/dist/lib/tools/terminal.d.ts +++ b/packages/ai-tools/dist/lib/tools/terminal.d.ts @@ -1,2 +1,2 @@ -import { IKBotTask } from '../../types.js'; -export declare const tools: (target: string, options: IKBotTask) => Array; +import { IKBotTask } from '../../types.js'; +export declare const tools: (target: string, options: IKBotTask) => Array; diff --git a/packages/ai-tools/dist/lib/tools/terminal.js b/packages/ai-tools/dist/lib/tools/terminal.js index 1e77baa2..985a5e05 100644 --- a/packages/ai-tools/dist/lib/tools/terminal.js +++ b/packages/ai-tools/dist/lib/tools/terminal.js @@ -1,116 +1,116 @@ -import * as path from 'path'; -import { spawn } from 'child_process'; -import { toolLogger } from '../../index.js'; -import { Helper } from './process.js'; -export const tools = (target, options) => { - const logger = toolLogger('terminal', options); - return [ - { - type: 'function', - function: { - name: 'execute_command', - description: 'Execute a terminal command and capture output', - parameters: { - type: 'object', - properties: { - command: { - type: 'string', - description: 'Command to execute' - }, - args: { - type: 'array', - items: { type: 'string' }, - description: 'Command arguments', - optional: true - }, - cwd: { - type: 'string', - description: 'Working directory for command execution', - optional: true - }, - background: { - type: 'boolean', - description: 'Run command in background (non-blocking)', - optional: true, - default: false - }, - window: { - type: 'boolean', - description: 'Open command in new terminal window', - optional: true, - default: false - }, - detached: { - type: 'boolean', - description: 'Run process detached from parent', - optional: true, - default: false - } - }, - required: ['command'] - }, - function: async (params) => { - try { - debugger; - const cwd = params.cwd ? path.join(target, params.cwd) : target; - const args = params.args || []; - logger.debug(`Tool::Terminal : ExecuteCommand Running '${params.command}' in ${cwd}`, params); - if (params.detached) { - const isWindows = process.platform === 'win32'; - if (isWindows) { - spawn('cmd', ['/c', 'start', 'cmd', '/k', params.command, ...args], { - cwd: cwd, - detached: true, - stdio: 'ignore' - }); - } - else { - // For macOS/Linux - spawn('x-terminal-emulator', ['-e', `${params.command} ${args.join(' ')}`], { - cwd: cwd, - detached: true, - stdio: 'ignore' - }); - } - return { - success: true, - output: 'Command launched in new window', - error: null - }; - } - if (params.background || params.detached) { - const child = spawn(params.command, args, { - cwd: cwd, - detached: params.detached === true, - stdio: 'ignore' - }); - if (params.detached) { - child.unref(); - } - return { - success: true, - output: `Process started with PID: ${child.pid}`, - error: null - }; - } - const cmd = `${params.command} ${args.join(' ')}`.trim(); - logger.debug(`Tool::ExecuteCommand Running '${cmd}' in ${cwd}`); - const collector = []; - const ret = await Helper.run(cwd, cmd, [], collector, true); - return ret; - } - catch (error) { - logger.error('Error executing command', error); - return { - success: false, - output: null, - error: error.message - }; - } - }, - parse: JSON.parse - } - } - ]; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rvb2xzL3Rlcm1pbmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBRTVCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFckMsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBYyxFQUFFLE9BQWtCLEVBQWMsRUFBRTtJQUNwRSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzlDLE9BQU87UUFDSDtZQUNJLElBQUksRUFBRSxVQUFVO1lBQ2hCLFFBQVEsRUFBRTtnQkFDTixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixXQUFXLEVBQUUsK0NBQStDO2dCQUM1RCxVQUFVLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNSLE9BQU8sRUFBRTs0QkFDTCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsb0JBQW9CO3lCQUNwQzt3QkFDRCxJQUFJLEVBQUU7NEJBQ0YsSUFBSSxFQUFFLE9BQU87NEJBQ2IsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTs0QkFDekIsV0FBVyxFQUFFLG1CQUFtQjs0QkFDaEMsUUFBUSxFQUFFLElBQUk7eUJBQ2pCO3dCQUNELEdBQUcsRUFBRTs0QkFDRCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUseUNBQXlDOzRCQUN0RCxRQUFRLEVBQUUsSUFBSTt5QkFDakI7d0JBQ0QsVUFBVSxFQUFFOzRCQUNSLElBQUksRUFBRSxTQUFTOzRCQUNmLFdBQVcsRUFBRSwwQ0FBMEM7NEJBQ3ZELFFBQVEsRUFBRSxJQUFJOzRCQUNkLE9BQU8sRUFBRSxLQUFLO3lCQUNqQjt3QkFDRCxNQUFNLEVBQUU7NEJBQ0osSUFBSSxFQUFFLFNBQVM7NEJBQ2YsV0FBVyxFQUFFLHFDQUFxQzs0QkFDbEQsUUFBUSxFQUFFLElBQUk7NEJBQ2QsT0FBTyxFQUFFLEtBQUs7eUJBQ2pCO3dCQUNELFFBQVEsRUFBRTs0QkFDTixJQUFJLEVBQUUsU0FBUzs0QkFDZixXQUFXLEVBQUUsa0NBQWtDOzRCQUMvQyxRQUFRLEVBQUUsSUFBSTs0QkFDZCxPQUFPLEVBQUUsS0FBSzt5QkFDakI7cUJBQ0o7b0JBQ0QsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO2lCQUN4QjtnQkFDRCxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQVcsRUFBRSxFQUFFO29CQUM1QixJQUFJO3dCQUNBLFFBQVEsQ0FBQTt3QkFDUixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQzt3QkFDaEUsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7d0JBQy9CLE1BQU0sQ0FBQyxLQUFLLENBQUMsNENBQTRDLE1BQU0sQ0FBQyxPQUFPLFFBQVEsR0FBRyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUE7d0JBQzdGLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRTs0QkFDakIsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUM7NEJBQy9DLElBQUksU0FBUyxFQUFFO2dDQUNYLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFO29DQUNoRSxHQUFHLEVBQUUsR0FBRztvQ0FDUixRQUFRLEVBQUUsSUFBSTtvQ0FDZCxLQUFLLEVBQUUsUUFBUTtpQ0FDbEIsQ0FBQyxDQUFDOzZCQUNOO2lDQUFNO2dDQUNILGtCQUFrQjtnQ0FDbEIsS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtvQ0FDeEUsR0FBRyxFQUFFLEdBQUc7b0NBQ1IsUUFBUSxFQUFFLElBQUk7b0NBQ2QsS0FBSyxFQUFFLFFBQVE7aUNBQ2xCLENBQUMsQ0FBQzs2QkFDTjs0QkFDRCxPQUFPO2dDQUNILE9BQU8sRUFBRSxJQUFJO2dDQUNiLE1BQU0sRUFBRSxnQ0FBZ0M7Z0NBQ3hDLEtBQUssRUFBRSxJQUFJOzZCQUNkLENBQUM7eUJBQ0w7d0JBRUQsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUU7NEJBQ3RDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtnQ0FDdEMsR0FBRyxFQUFFLEdBQUc7Z0NBQ1IsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEtBQUssSUFBSTtnQ0FDbEMsS0FBSyxFQUFFLFFBQVE7NkJBQ2xCLENBQUMsQ0FBQzs0QkFFSCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0NBQ2pCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQzs2QkFDakI7NEJBRUQsT0FBTztnQ0FDSCxPQUFPLEVBQUUsSUFBSTtnQ0FDYixNQUFNLEVBQUUsNkJBQTZCLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0NBQ2hELEtBQUssRUFBRSxJQUFJOzZCQUNkLENBQUM7eUJBQ0w7d0JBQ0QsTUFBTSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDekQsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUM7d0JBQ2hFLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQTt3QkFDcEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTt3QkFDM0QsT0FBTyxHQUFHLENBQUE7cUJBQ2I7b0JBQUMsT0FBTyxLQUFVLEVBQUU7d0JBQ2pCLE1BQU0sQ0FBQyxLQUFLLENBQUMseUJBQXlCLEVBQUUsS0FBSyxDQUFDLENBQUM7d0JBQy9DLE9BQU87NEJBQ0gsT0FBTyxFQUFFLEtBQUs7NEJBQ2QsTUFBTSxFQUFFLElBQUk7NEJBQ1osS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPO3lCQUN2QixDQUFDO3FCQUNMO2dCQUNMLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2FBQ3BCO1NBQ3lCO0tBQ2pDLENBQUE7QUFDTCxDQUFDLENBQUEifQ== \ No newline at end of file +import * as path from 'path'; +import { spawn } from 'child_process'; +import { toolLogger } from '../../index.js'; +import { Helper } from './process.js'; +export const tools = (target, options) => { + const logger = toolLogger('terminal', options); + return [ + { + type: 'function', + function: { + name: 'execute_command', + description: 'Execute a terminal command and capture output', + parameters: { + type: 'object', + properties: { + command: { + type: 'string', + description: 'Command to execute' + }, + args: { + type: 'array', + items: { type: 'string' }, + description: 'Command arguments', + optional: true + }, + cwd: { + type: 'string', + description: 'Working directory for command execution', + optional: true + }, + background: { + type: 'boolean', + description: 'Run command in background (non-blocking)', + optional: true, + default: false + }, + window: { + type: 'boolean', + description: 'Open command in new terminal window', + optional: true, + default: false + }, + detached: { + type: 'boolean', + description: 'Run process detached from parent', + optional: true, + default: false + } + }, + required: ['command'] + }, + function: async (params) => { + try { + debugger; + const cwd = params.cwd ? path.join(target, params.cwd) : target; + const args = params.args || []; + logger.debug(`Tool::Terminal : ExecuteCommand Running '${params.command}' in ${cwd}`, params); + if (params.detached) { + const isWindows = process.platform === 'win32'; + if (isWindows) { + spawn('cmd', ['/c', 'start', 'cmd', '/k', params.command, ...args], { + cwd: cwd, + detached: true, + stdio: 'ignore' + }); + } + else { + // For macOS/Linux + spawn('x-terminal-emulator', ['-e', `${params.command} ${args.join(' ')}`], { + cwd: cwd, + detached: true, + stdio: 'ignore' + }); + } + return { + success: true, + output: 'Command launched in new window', + error: null + }; + } + if (params.background || params.detached) { + const child = spawn(params.command, args, { + cwd: cwd, + detached: params.detached === true, + stdio: 'ignore' + }); + if (params.detached) { + child.unref(); + } + return { + success: true, + output: `Process started with PID: ${child.pid}`, + error: null + }; + } + const cmd = `${params.command} ${args.join(' ')}`.trim(); + logger.debug(`Tool::ExecuteCommand Running '${cmd}' in ${cwd}`); + const collector = []; + const ret = await Helper.run(cwd, cmd, [], collector, true); + return ret; + } + catch (error) { + logger.error('Error executing command', error); + return { + success: false, + output: null, + error: error.message + }; + } + }, + parse: JSON.parse + } + } + ]; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rvb2xzL3Rlcm1pbmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBRTVCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFckMsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBYyxFQUFFLE9BQWtCLEVBQWMsRUFBRTtJQUNwRSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzlDLE9BQU87UUFDSDtZQUNJLElBQUksRUFBRSxVQUFVO1lBQ2hCLFFBQVEsRUFBRTtnQkFDTixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixXQUFXLEVBQUUsK0NBQStDO2dCQUM1RCxVQUFVLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNSLE9BQU8sRUFBRTs0QkFDTCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsb0JBQW9CO3lCQUNwQzt3QkFDRCxJQUFJLEVBQUU7NEJBQ0YsSUFBSSxFQUFFLE9BQU87NEJBQ2IsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTs0QkFDekIsV0FBVyxFQUFFLG1CQUFtQjs0QkFDaEMsUUFBUSxFQUFFLElBQUk7eUJBQ2pCO3dCQUNELEdBQUcsRUFBRTs0QkFDRCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUseUNBQXlDOzRCQUN0RCxRQUFRLEVBQUUsSUFBSTt5QkFDakI7d0JBQ0QsVUFBVSxFQUFFOzRCQUNSLElBQUksRUFBRSxTQUFTOzRCQUNmLFdBQVcsRUFBRSwwQ0FBMEM7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 \ No newline at end of file diff --git a/packages/ai-tools/dist/lib/tools/tools.d.ts b/packages/ai-tools/dist/lib/tools/tools.d.ts index a55231ba..edd1da0d 100644 --- a/packages/ai-tools/dist/lib/tools/tools.d.ts +++ b/packages/ai-tools/dist/lib/tools/tools.d.ts @@ -1,10 +1,10 @@ -export declare const tools: { - fs: (target: string, options: import("../../types.js").IKBotTask) => any[]; - npm: (target: string, options: import("../../types.js").IKBotTask) => any[]; - git: (target: string, options: import("../../types.js").IKBotTask) => any[]; - terminal: (target: string, options: import("../../types.js").IKBotTask) => any[]; - interact: (target: string, options: import("../../types.js").IKBotTask) => any[]; - user: (target: string, options: import("../../types.js").IKBotTask) => any[]; - search: (target: string, options: import("../../types.js").IKBotTask) => any[]; - memory: (target: string, options: import("../../types.js").IKBotTask) => any[]; -}; +export declare const tools: { + fs: (target: string, options: import("../../types.js").IKBotTask) => Array; + npm: (target: string, options: import("../../types.js").IKBotTask) => Array; + git: (target: string, options: import("../../types.js").IKBotTask) => Array; + terminal: (target: string, options: import("../../types.js").IKBotTask) => Array; + interact: (target: string, options: import("../../types.js").IKBotTask) => Array; + user: (target: string, options: import("../../types.js").IKBotTask) => Array; + search: (target: string, options: import("../../types.js").IKBotTask) => Array; + memory: (target: string, options: import("../../types.js").IKBotTask) => Array; +}; diff --git a/packages/ai-tools/dist/lib/tools/tools.js b/packages/ai-tools/dist/lib/tools/tools.js index ff6669fa..f21c4d49 100644 --- a/packages/ai-tools/dist/lib/tools/tools.js +++ b/packages/ai-tools/dist/lib/tools/tools.js @@ -1,23 +1,23 @@ -import { tools as fsTools } from './fs.js'; -import { tools as npmTools } from './npm.js'; -import { tools as gitTools } from './git.js'; -import { tools as terminalTools } from './terminal.js'; -import { tools as interactTools } from './interact.js'; -import { tools as userTools } from './user.js'; -import { tools as search } from './search.js'; -//import { tools as webTools } from './web.js' -import { tools as memoryTools } from './memory.js'; -// import { tools as emailTools } from './email' -export const tools = { - fs: fsTools, - npm: npmTools, - git: gitTools, - terminal: terminalTools, - interact: interactTools, - user: userTools, - search: search, - // web: webTools, - memory: memoryTools - // email: emailTools -}; +import { tools as fsTools } from './fs.js'; +import { tools as npmTools } from './npm.js'; +import { tools as gitTools } from './git.js'; +import { tools as terminalTools } from './terminal.js'; +import { tools as interactTools } from './interact.js'; +import { tools as userTools } from './user.js'; +import { tools as search } from './search.js'; +//import { tools as webTools } from './web.js' +import { tools as memoryTools } from './memory.js'; +// import { tools as emailTools } from './email' +export const tools = { + fs: fsTools, + npm: npmTools, + git: gitTools, + terminal: terminalTools, + interact: interactTools, + user: userTools, + search: search, + // web: webTools, + memory: memoryTools + // email: emailTools +}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rvb2xzL3Rvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLElBQUksT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzFDLE9BQU8sRUFBRSxLQUFLLElBQUksUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxLQUFLLElBQUksUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxLQUFLLElBQUksYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3RELE9BQU8sRUFBRSxLQUFLLElBQUksYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3RELE9BQU8sRUFBRSxLQUFLLElBQUksU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzlDLE9BQU8sRUFBRSxLQUFLLElBQUksTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzdDLDhDQUE4QztBQUM5QyxPQUFPLEVBQUUsS0FBSyxJQUFJLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNsRCxnREFBZ0Q7QUFFaEQsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHO0lBQ2pCLEVBQUUsRUFBRSxPQUFPO0lBQ1gsR0FBRyxFQUFFLFFBQVE7SUFDYixHQUFHLEVBQUUsUUFBUTtJQUNiLFFBQVEsRUFBRSxhQUFhO0lBQ3ZCLFFBQVEsRUFBRSxhQUFhO0lBQ3ZCLElBQUksRUFBRSxTQUFTO0lBQ2YsTUFBTSxFQUFFLE1BQU07SUFDZCxpQkFBaUI7SUFDakIsTUFBTSxFQUFFLFdBQVc7SUFDbkIsb0JBQW9CO0NBQ3ZCLENBQUEifQ== \ No newline at end of file diff --git a/packages/ai-tools/dist/lib/tools/user.d.ts b/packages/ai-tools/dist/lib/tools/user.d.ts index dc47c416..e750843f 100644 --- a/packages/ai-tools/dist/lib/tools/user.d.ts +++ b/packages/ai-tools/dist/lib/tools/user.d.ts @@ -1,4 +1,4 @@ -import { IKBotTask } from '../../types.js'; -export declare const mime: (file?: string) => any; -export declare const fileToBase64: (filePath: string) => string | null; -export declare const tools: (target: string, options: IKBotTask) => Array; +import { IKBotTask } from '../../types.js'; +export declare const mime: (file?: string) => any; +export declare const fileToBase64: (filePath: string) => string | null; +export declare const tools: (target: string, options: IKBotTask) => Array; diff --git a/packages/ai-tools/dist/lib/tools/user.js b/packages/ai-tools/dist/lib/tools/user.js index 34e6a2f3..292cd7ad 100644 --- a/packages/ai-tools/dist/lib/tools/user.js +++ b/packages/ai-tools/dist/lib/tools/user.js @@ -1,78 +1,78 @@ -import { parse, join } from 'path'; -import * as fs from 'fs'; -import { lookup } from 'mime-types'; -import { toolLogger } from '../../index.js'; -export const mime = (file = '') => parse(file).ext ? lookup(file) : null; -//const screenshot = require('screenshot-desktop') -export const fileToBase64 = (filePath) => { - try { - const fileBuffer = fs.readFileSync(filePath); - const mimeType = lookup(filePath); - if (!mimeType) { - throw new Error('Unable to determine MIME type.'); - } - const base64Data = fileBuffer.toString('base64'); - return `data:${mimeType};base64,${base64Data}`; - } - catch (error) { - console.error('fileToBase64 : Error reading file:', error); - return null; - } -}; -export const tools = (target, options) => { - const logger = toolLogger('user', options); - return [ - { - type: 'function', - function: { - name: 'capture_screen', - description: 'Capture a screenshot and store it as file (jpg). Returns the path to the file', - parameters: { - type: 'object', - properties: { - file: { type: 'string' } - }, - required: ['file'] - }, - function: async (params) => { - try { - const outputPath = join(target, params.file); - const takeScreenshot = async () => { - /* - return new Promise((resolve, reject) => { - screenshot({ format: 'jpg' }).then((img) => { - write(outputPath, img) - resolve({ success: true, path: outputPath}) - }).catch(reject) - }) - */ - }; - const { path } = await takeScreenshot(); - return { - "role": "user", - "content": [ - /* - { - type: "image_url", - image_url: { - url: fileToBase64( path), - } - } - */ - ] - }; - } - catch (error) { - logger.error('Error capturing screenshot:', error); - return { - success: false, - error: error.message - }; - } - }, - parse: JSON.parse - } - } - ]; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdG9vbHMvdXNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUdsQyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQTtBQUN4QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRW5DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUUzQyxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7QUFFaEYsa0RBQWtEO0FBRWxELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLFFBQWdCLEVBQWlCLEVBQUU7SUFDNUQsSUFBSTtRQUNBLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDNUMsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUE7U0FDcEQ7UUFDRCxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ2hELE9BQU8sUUFBUSxRQUFRLFdBQVcsVUFBVSxFQUFFLENBQUE7S0FDakQ7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNaLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDMUQsT0FBTyxJQUFJLENBQUE7S0FDZDtBQUNMLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQWMsRUFBRSxPQUFrQixFQUFjLEVBQUU7SUFDcEUsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUMxQyxPQUFPO1FBQ0g7WUFDSSxJQUFJLEVBQUUsVUFBVTtZQUNoQixRQUFRLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLGdCQUFnQjtnQkFDdEIsV0FBVyxFQUFFLCtFQUErRTtnQkFDNUYsVUFBVSxFQUFFO29CQUNSLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDUixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO3FCQUMzQjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7aUJBQ3JCO2dCQUNELFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBVyxFQUFFLEVBQUU7b0JBQzVCLElBQUk7d0JBQ0EsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7d0JBQzVDLE1BQU0sY0FBYyxHQUFHLEtBQUssSUFBbUIsRUFBRTs0QkFDN0M7Ozs7Ozs7OEJBT0U7d0JBQ04sQ0FBQyxDQUFBO3dCQUNELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLGNBQWMsRUFBRSxDQUFBO3dCQUN2QyxPQUFPOzRCQUNILE1BQU0sRUFBRSxNQUFNOzRCQUNkLFNBQVMsRUFDUDs0QkFDRTs7Ozs7Ozs4QkFPRTs2QkFDSDt5QkFDSixDQUFBO3FCQUNOO29CQUFDLE9BQU8sS0FBVSxFQUFFO3dCQUNqQixNQUFNLENBQUMsS0FBSyxDQUFDLDZCQUE2QixFQUFFLEtBQUssQ0FBQyxDQUFDO3dCQUNuRCxPQUFPOzRCQUNILE9BQU8sRUFBRSxLQUFLOzRCQUNkLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTzt5QkFDdkIsQ0FBQztxQkFDTDtnQkFDTCxDQUFDO2dCQUNELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzthQUNwQjtTQUN5QjtLQUNqQyxDQUFDO0FBQ04sQ0FBQyxDQUFDIn0= \ No newline at end of file +import { parse, join } from 'path'; +import * as fs from 'fs'; +import { lookup } from 'mime-types'; +import { toolLogger } from '../../index.js'; +export const mime = (file = '') => parse(file).ext ? lookup(file) : null; +//const screenshot = require('screenshot-desktop') +export const fileToBase64 = (filePath) => { + try { + const fileBuffer = fs.readFileSync(filePath); + const mimeType = lookup(filePath); + if (!mimeType) { + throw new Error('Unable to determine MIME type.'); + } + const base64Data = fileBuffer.toString('base64'); + return `data:${mimeType};base64,${base64Data}`; + } + catch (error) { + console.error('fileToBase64 : Error reading file:', error); + return null; + } +}; +export const tools = (target, options) => { + const logger = toolLogger('user', options); + return [ + { + type: 'function', + function: { + name: 'capture_screen', + description: 'Capture a screenshot and store it as file (jpg). Returns the path to the file', + parameters: { + type: 'object', + properties: { + file: { type: 'string' } + }, + required: ['file'] + }, + function: async (params) => { + try { + const outputPath = join(target, params.file); + const takeScreenshot = async () => { + /* + return new Promise((resolve, reject) => { + screenshot({ format: 'jpg' }).then((img) => { + write(outputPath, img) + resolve({ success: true, path: outputPath}) + }).catch(reject) + }) + */ + }; + const { path } = await takeScreenshot(); + return { + "role": "user", + "content": [ + /* + { + type: "image_url", + image_url: { + url: fileToBase64( path), + } + } + */ + ] + }; + } + catch (error) { + logger.error('Error capturing screenshot:', error); + return { + success: false, + error: error.message + }; + } + }, + parse: JSON.parse + } + } + ]; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdG9vbHMvdXNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUdsQyxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQTtBQUN4QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRW5DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUUzQyxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7QUFFaEYsa0RBQWtEO0FBRWxELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLFFBQWdCLEVBQWlCLEVBQUU7SUFDNUQsSUFBSSxDQUFDO1FBQ0QsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUM1QyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDakMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFBO1FBQ3JELENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ2hELE9BQU8sUUFBUSxRQUFRLFdBQVcsVUFBVSxFQUFFLENBQUE7SUFDbEQsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQzFELE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztBQUNMLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQWMsRUFBRSxPQUFrQixFQUFjLEVBQUU7SUFDcEUsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUMxQyxPQUFPO1FBQ0g7WUFDSSxJQUFJLEVBQUUsVUFBVTtZQUNoQixRQUFRLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLGdCQUFnQjtnQkFDdEIsV0FBVyxFQUFFLCtFQUErRTtnQkFDNUYsVUFBVSxFQUFFO29CQUNSLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDUixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO3FCQUMzQjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7aUJBQ3JCO2dCQUNELFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBVyxFQUFFLEVBQUU7b0JBQzVCLElBQUksQ0FBQzt3QkFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTt3QkFDNUMsTUFBTSxjQUFjLEdBQUcsS0FBSyxJQUFtQixFQUFFOzRCQUM3Qzs7Ozs7Ozs4QkFPRTt3QkFDTixDQUFDLENBQUE7d0JBQ0QsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sY0FBYyxFQUFFLENBQUE7d0JBQ3ZDLE9BQU87NEJBQ0gsTUFBTSxFQUFFLE1BQU07NEJBQ2QsU0FBUyxFQUNQOzRCQUNFOzs7Ozs7OzhCQU9FOzZCQUNIO3lCQUNKLENBQUE7b0JBQ1AsQ0FBQztvQkFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO3dCQUNsQixNQUFNLENBQUMsS0FBSyxDQUFDLDZCQUE2QixFQUFFLEtBQUssQ0FBQyxDQUFDO3dCQUNuRCxPQUFPOzRCQUNILE9BQU8sRUFBRSxLQUFLOzRCQUNkLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTzt5QkFDdkIsQ0FBQztvQkFDTixDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2FBQ3BCO1NBQ3lCO0tBQ2pDLENBQUM7QUFDTixDQUFDLENBQUMifQ== \ No newline at end of file diff --git a/packages/ai-tools/dist/lib/tools/web.d.ts b/packages/ai-tools/dist/lib/tools/web.d.ts index 539fabc9..081be802 100644 --- a/packages/ai-tools/dist/lib/tools/web.d.ts +++ b/packages/ai-tools/dist/lib/tools/web.d.ts @@ -1,2 +1,2 @@ -import { IKBotTask } from '../../types.js'; -export declare const tools: (target: string, options: IKBotTask) => Array; +import { IKBotTask } from '../../types.js'; +export declare const tools: (target: string, options: IKBotTask) => Array; diff --git a/packages/ai-tools/dist/lib/tools/web.js b/packages/ai-tools/dist/lib/tools/web.js index 2e9e51e5..656a7bb7 100644 --- a/packages/ai-tools/dist/lib/tools/web.js +++ b/packages/ai-tools/dist/lib/tools/web.js @@ -1,99 +1,99 @@ -import puppeteer from 'puppeteer'; -import TurndownService from 'turndown'; -import { toolLogger } from '../../index.js'; -const turndown = new TurndownService(); -export const tools = (target, options) => { - const logger = toolLogger('web', options); - return [ - { - type: 'function', - function: { - name: 'browse_page', - description: 'Browse a webpage and return its content as markdown, all links, images and pages main image', - parameters: { - type: 'object', - properties: { - url: { - type: 'string', - description: 'URL of the webpage to browse' - } - }, - required: ['url'] - }, - function: async (params) => { - try { - logger.debug(`Tool::BrowsePage Browsing ${params.url}`); - const browser = await puppeteer.launch({ - headless: true, - args: ['--no-sandbox', '--disable-setuid-sandbox'] - }); - try { - const page = await browser.newPage(); - logger.debug(`Tool::Web::BrowsePage Opening page ${params.url}`); - await page.goto(params.url, { - waitUntil: 'networkidle2' - }); - const pageData = await page.evaluate((selector) => { - const elementsToRemove = document.querySelectorAll('script, style, link, meta, noscript, iframe, [style*="display:none"],[style*="display: none"], .hidden'); - elementsToRemove.forEach(el => el.remove()); - const links = Array.from(document.querySelectorAll('a')) - .map(a => ({ - text: a.textContent?.trim() || '', - href: a.href - })) - .filter(link => link.href && link.href.startsWith('http')) - .slice(0, 20); - const images = Array.from(document.querySelectorAll('img')) - .map(img => ({ - src: img.src, - alt: img.alt || '', - width: img.width, - height: img.height - })) - .filter(img => img.src && img.src.startsWith('http')) - .slice(0, 20); - const mainImage = document.querySelector('meta[property="og:image"]')?.getAttribute('content') || - document.querySelector('meta[name="og:image"]')?.getAttribute('content'); - let content; - const body = document.body; - content = body ? body.innerHTML : ''; - return { - content, - links, - images, - ogImage: mainImage - }; - }, null); - const markdown = turndown.turndown(pageData.content); - await browser.close(); - const ret = { - success: true, - markdown: markdown, - links: pageData.links, - images: pageData.images, - mainImage: pageData.ogImage, - url: params.url - }; - return ret; - } - catch (error) { - logger.debug('Error browsing page:', error.message, error); - await browser.close(); - throw error; - } - } - catch (error) { - logger.debug('Error browsing page:', error.message); - return { - success: false, - error: error.message, - url: params.url - }; - } - }, - parse: JSON.parse - } - } - ]; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b29scy93ZWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxTQUFTLE1BQU0sV0FBVyxDQUFBO0FBQ2pDLE9BQU8sZUFBZSxNQUFNLFVBQVUsQ0FBQTtBQUV0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQTtBQUV0QyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFjLEVBQUUsT0FBa0IsRUFBYyxFQUFFO0lBQ3BFLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDekMsT0FBTztRQUNIO1lBQ0ksSUFBSSxFQUFFLFVBQVU7WUFDaEIsUUFBUSxFQUFFO2dCQUNOLElBQUksRUFBRSxhQUFhO2dCQUNuQixXQUFXLEVBQUUsNkZBQTZGO2dCQUMxRyxVQUFVLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNSLEdBQUcsRUFBRTs0QkFDRCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsOEJBQThCO3lCQUM5QztxQkFDSjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUM7aUJBQ3BCO2dCQUNELFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBVyxFQUFFLEVBQUU7b0JBQzVCLElBQUk7d0JBQ0EsTUFBTSxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7d0JBQ3hELE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLE1BQU0sQ0FBQzs0QkFDbkMsUUFBUSxFQUFFLElBQUk7NEJBQ2QsSUFBSSxFQUFFLENBQUMsY0FBYyxFQUFFLDBCQUEwQixDQUFDO3lCQUNyRCxDQUFDLENBQUE7d0JBRUYsSUFBSTs0QkFDQSxN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 \ No newline at end of file +import puppeteer from 'puppeteer'; +import TurndownService from 'turndown'; +import { toolLogger } from '../../index.js'; +const turndown = new TurndownService(); +export const tools = (target, options) => { + const logger = toolLogger('web', options); + return [ + { + type: 'function', + function: { + name: 'browse_page', + description: 'Browse a webpage and return its content as markdown, all links, images and pages main image', + parameters: { + type: 'object', + properties: { + url: { + type: 'string', + description: 'URL of the webpage to browse' + } + }, + required: ['url'] + }, + function: async (params) => { + try { + logger.debug(`Tool::BrowsePage Browsing ${params.url}`); + const browser = await puppeteer.launch({ + headless: true, + args: ['--no-sandbox', '--disable-setuid-sandbox'] + }); + try { + const page = await browser.newPage(); + logger.debug(`Tool::Web::BrowsePage Opening page ${params.url}`); + await page.goto(params.url, { + waitUntil: 'networkidle2' + }); + const pageData = await page.evaluate((selector) => { + const elementsToRemove = document.querySelectorAll('script, style, link, meta, noscript, iframe, [style*="display:none"],[style*="display: none"], .hidden'); + elementsToRemove.forEach(el => el.remove()); + const links = Array.from(document.querySelectorAll('a')) + .map(a => ({ + text: a.textContent?.trim() || '', + href: a.href + })) + .filter(link => link.href && link.href.startsWith('http')) + .slice(0, 20); + const images = Array.from(document.querySelectorAll('img')) + .map(img => ({ + src: img.src, + alt: img.alt || '', + width: img.width, + height: img.height + })) + .filter(img => img.src && img.src.startsWith('http')) + .slice(0, 20); + const mainImage = document.querySelector('meta[property="og:image"]')?.getAttribute('content') || + document.querySelector('meta[name="og:image"]')?.getAttribute('content'); + let content; + const body = document.body; + content = body ? body.innerHTML : ''; + return { + content, + links, + images, + ogImage: mainImage + }; + }, null); + const markdown = turndown.turndown(pageData.content); + await browser.close(); + const ret = { + success: true, + markdown: markdown, + links: pageData.links, + images: pageData.images, + mainImage: pageData.ogImage, + url: params.url + }; + return ret; + } + catch (error) { + logger.debug('Error browsing page:', error.message, error); + await browser.close(); + throw error; + } + } + catch (error) { + logger.debug('Error browsing page:', error.message); + return { + success: false, + error: error.message, + url: params.url + }; + } + }, + parse: JSON.parse + } + } + ]; +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b29scy93ZWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxTQUFTLE1BQU0sV0FBVyxDQUFBO0FBQ2pDLE9BQU8sZUFBZSxNQUFNLFVBQVUsQ0FBQTtBQUV0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQTtBQUV0QyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFjLEVBQUUsT0FBa0IsRUFBYyxFQUFFO0lBQ3BFLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDekMsT0FBTztRQUNIO1lBQ0ksSUFBSSxFQUFFLFVBQVU7WUFDaEIsUUFBUSxFQUFFO2dCQUNOLElBQUksRUFBRSxhQUFhO2dCQUNuQixXQUFXLEVBQUUsNkZBQTZGO2dCQUMxRyxVQUFVLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNSLEdBQUcsRUFBRTs0QkFDRCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsOEJBQThCO3lCQUM5QztxQkFDSjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUM7aUJBQ3BCO2dCQUNELFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBVyxFQUFFLEVBQUU7b0JBQzVCLElBQUksQ0FBQzt3QkFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLDZCQUE2QixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQzt3QkFDeEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxTQUFTLENBQUMsTUFBTSxDQUFDOzRCQUNuQyxRQUFRLEVBQUUsSUFBSTs0QkFDZCxJQUFJLEVBQUUsQ0FBQyxjQUFjLEVBQUUsMEJBQTBCLENBQUM7eUJBQ3JELENBQUMsQ0FBQTt3QkFFRixJQUFJLENBQUM7NEJBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7NEJBQ3BDLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0NBQXNDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBOzRCQUNoRSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQ0FDeEIsU0FBUyxFQUFFLGNBQWM7NkJBQzVCLENBQUMsQ0FBQTs0QkFFRixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQ0FDOUMsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLENBQzlDLHdHQUF3RyxDQUMzRyxDQUFBO2dDQUNELGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFBO2dDQUUzQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztxQ0FDbkQsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQ0FDUCxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO29DQUNqQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7aUNBQ2YsQ0FBQyxDQUFDO3FDQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7cUNBQ3pELEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7Z0NBRWpCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO3FDQUN0RCxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29DQUNULEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRztvQ0FDWixHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFO29DQUNsQixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7b0NBQ2hCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTtpQ0FDckIsQ0FBQyxDQUFDO3FDQUNGLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7cUNBQ3BELEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7Z0NBRWpCLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsRUFBRSxZQUFZLENBQUMsU0FBUyxDQUFDO29DQUMxRixRQUFRLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFBO2dDQUU1RSxJQUFJLE9BQU8sQ0FBQTtnQ0FDWCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFBO2dDQUMxQixPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7Z0NBQ3BDLE9BQU87b0NBQ0gsT0FBTztvQ0FDUCxLQUFLO29DQUNMLE1BQU07b0NBQ04sT0FBTyxFQUFFLFNBQVM7aUNBQ3JCLENBQUE7NEJBQ0wsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBOzRCQUVSLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBOzRCQUNwRCxNQUFNLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQTs0QkFDckIsTUFBTSxHQUFHLEdBQUc7Z0NBQ1IsT0FBTyxFQUFFLElBQUk7Z0NBQ2IsUUFBUSxFQUFFLFFBQVE7Z0NBQ2xCLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztnQ0FDckIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNO2dDQUN2QixTQUFTLEVBQUUsUUFBUSxDQUFDLE9BQU87Z0NBQzNCLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRzs2QkFDbEIsQ0FBQzs0QkFDRixPQUFPLEdBQUcsQ0FBQTt3QkFDZCxDQUFDO3dCQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7NEJBQ2xCLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQzs0QkFDM0QsTUFBTSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUE7NEJBQ3JCLE1BQU0sS0FBSyxDQUFBO3dCQUNmLENBQUM7b0JBQ0wsQ0FBQztvQkFBQyxPQUFPLEtBQVUsRUFBRSxDQUFDO3dCQUNsQixNQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDcEQsT0FBTzs0QkFDSCxPQUFPLEVBQUUsS0FBSzs0QkFDZCxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU87NEJBQ3BCLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRzt5QkFDbEIsQ0FBQztvQkFDTixDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2FBQ3BCO1NBQ3lCO0tBQ2pDLENBQUE7QUFDTCxDQUFDLENBQUEifQ== \ No newline at end of file diff --git a/packages/ai-tools/dist/main.d.ts b/packages/ai-tools/dist/main.d.ts index d1ebc9c7..b7988016 100644 --- a/packages/ai-tools/dist/main.d.ts +++ b/packages/ai-tools/dist/main.d.ts @@ -1,2 +1,2 @@ -#!/usr/bin/env node -export {}; +#!/usr/bin/env node +export {}; diff --git a/packages/ai-tools/dist/main.js b/packages/ai-tools/dist/main.js index bbc7705f..f645415f 100644 --- a/packages/ai-tools/dist/main.js +++ b/packages/ai-tools/dist/main.js @@ -1,17 +1,17 @@ -#!/usr/bin/env node -import { commands } from './commands/index.js'; -import { logger } from './index.js'; -import cli from 'yargs'; -import { hideBin } from 'yargs/helpers'; -const yargs = cli(hideBin(process.argv)); -async function main() { - try { - const argv = await commands(yargs).argv; - } - catch (error) { - logger.error('Error executing command:', error); - process.exit(1); - } -} -main(); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNuQyxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUE7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0FBRXhDLEtBQUssVUFBVSxJQUFJO0lBQ2YsSUFBSTtRQUNBLE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQTtLQUMxQztJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ1osTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ25CO0FBQ0wsQ0FBQztBQUNELElBQUksRUFBRSxDQUFBIn0= \ No newline at end of file +#!/usr/bin/env node +import { commands } from './commands/index.js'; +import { logger } from './index.js'; +import cli from 'yargs'; +import { hideBin } from 'yargs/helpers'; +const yargs = cli(hideBin(process.argv)); +async function main() { + try { + const argv = await commands(yargs).argv; + } + catch (error) { + logger.error('Error executing command:', error); + process.exit(1); + } +} +main(); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNuQyxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUE7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0FBRXhDLEtBQUssVUFBVSxJQUFJO0lBQ2YsSUFBSSxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFBO0lBQzNDLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7QUFDTCxDQUFDO0FBQ0QsSUFBSSxFQUFFLENBQUEifQ== \ No newline at end of file diff --git a/packages/ai-tools/dist/types.d.ts b/packages/ai-tools/dist/types.d.ts index cbfff109..0d181280 100644 --- a/packages/ai-tools/dist/types.d.ts +++ b/packages/ai-tools/dist/types.d.ts @@ -1,23 +1,24 @@ -import { ChatCompletion, ChatCompletionMessage, ChatCompletionMessageParam } from 'openai/resources'; -import { IKBotOptions } from './types_kbot.js'; -import OpenAI from 'openai'; -import { Logger, ILogObj } from 'tslog'; -import { RunnableFunctionWithParse } from 'openai/lib/RunnableFunction'; -export type onToolBefore = (ctx: RunnableFunctionWithParse, args: any) => Promise; -export type onToolAfter = (ctx: RunnableFunctionWithParse, args: any, result?: any) => Promise; -export interface ICollector { - onMessage: (message: ChatCompletionMessageParam) => void; - onToolCall: (tool: ChatCompletionMessage.FunctionCall) => void; - onFunctionCallResult: (content: string) => void; - onChatCompletion: (completion: ChatCompletion) => void; - onContent: (content: string) => void; - onTool: (category: string, name: string, args: any, result?: any) => void; - onToolBefore: onToolBefore; - onToolAfter: onToolAfter; -} -export interface IKBotTask extends IKBotOptions { - client?: OpenAI; - collector?: ICollector; - onRun?: (ctx: IKBotTask) => Promise; - logger?: Logger; -} +import { ChatCompletion, ChatCompletionMessage, ChatCompletionMessageParam } from 'openai/resources'; +import { IKBotOptions } from './types_kbot.js'; +import OpenAI from 'openai'; +import { Logger, ILogObj } from 'tslog'; +import { RunnableFunctionWithParse } from 'openai/lib/RunnableFunction'; +export type onToolBefore = (ctx: RunnableFunctionWithParse, args: any) => Promise; +export type onToolAfter = (ctx: RunnableFunctionWithParse, args: any, result?: any) => Promise; +export interface ICollector { + onMessage: (message: ChatCompletionMessageParam) => void; + onToolCall: (tool: ChatCompletionMessage.FunctionCall) => void; + onFunctionCallResult: (content: string) => void; + onChatCompletion: (completion: ChatCompletion) => void; + onContent: (content: string) => void; + onTool: (category: string, name: string, args: any, result?: any) => void; + onToolBefore: onToolBefore; + onToolAfter: onToolAfter; +} +export interface IKBotTask extends IKBotOptions { + client?: OpenAI; + collector?: ICollector; + onRun?: (ctx: IKBotTask) => Promise; + logger?: Logger; + customTools?: any[]; +} diff --git a/packages/ai-tools/dist/types.js b/packages/ai-tools/dist/types.js index b22f0a6d..a0dabde2 100644 --- a/packages/ai-tools/dist/types.js +++ b/packages/ai-tools/dist/types.js @@ -1,2 +1,2 @@ -export {}; +export {}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9 \ No newline at end of file diff --git a/packages/ai-tools/dist/types_kbot.d.ts b/packages/ai-tools/dist/types_kbot.d.ts index dd92830b..e7951110 100644 --- a/packages/ai-tools/dist/types_kbot.d.ts +++ b/packages/ai-tools/dist/types_kbot.d.ts @@ -1,561 +1,569 @@ -export interface IKBotOptions { - /** Target directory */ - path?: string; - /** The prompt. Supports file paths and environment variables. */ - prompt?: string | undefined; - /** Optional output path for modified files (Tool mode only) */ - output?: string | undefined; - /** Optional destination path for the result, will substitute ${MODEL_NAME} and ${ROUTER} in the path. Optional, used for "completion" mode */ - dst?: string | undefined; - /** How to handle output if --dst file already exists: "concat" (append) or "merge" (try to merge structures if possible, otherwise append). Only used if --dst is specified. */ - append?: ("concat" | "merge" | "replace") | undefined; - /** Specify how to wrap the output, "meta (file name, absolute path, cwd)" or "none". */ - wrap?: "meta" | "none"; - /** Iterate over items, supported: GLOB | Path to JSON File | array of strings (comma separated). To test different models, use --each="gpt-3.5-turbo,gpt-4o", the actual string will exposed as variable `ITEM`, eg: --dst="${ITEM}-output.md" */ - each?: string | undefined; - /** Disable tools categories, eg: --disable=fs,git,interact,terminal,search,web,email,user */ - disable?: string[]; - /** List of specific tools to disable */ - disableTools?: string[]; - /** List of tools to use. Can be built-in tool names or paths to custom tool files. Default: fs,git,interact,terminal,search,web,email,user */ - tools?: (string[] | string); - /** Comma separated glob patterns or paths, eg --include=src/*.tsx,src/*.ts --include=package.json */ - include?: string[] | undefined; - /** Comma separated glob patterns or paths, eg --exclude=src/*.tsx,src/*.ts --exclude=package.json */ - exclude?: string[] | undefined; - /** Specify a glob extension behavior. Available presets: match-cpp. Also accepts a custom glob pattern with variables like ${SRC_DIR}, ${SRC_NAME}, ${SRC_EXT}. E.g., "match-cpp" or "${SRC_DIR}/${SRC_NAME}*.cpp" */ - globExtension?: (("match-cpp") | string) | undefined; - /** Explicit API key to use */ - api_key?: string | undefined; - /** AI model to use for processing. Available models: -  -  OpenRouter models: -  - ai21/jamba-large-1.7 | paid - ai21/jamba-mini-1.7 | paid - aion-labs/aion-1.0 | paid - aion-labs/aion-1.0-mini | paid - aion-labs/aion-rp-llama-3.1-8b | paid - alfredpros/codellama-7b-instruct-solidity | paid - allenai/olmo-2-0325-32b-instruct | paid - allenai/olmo-3-32b-think:free | free - allenai/olmo-3-7b-instruct | paid - allenai/olmo-3-7b-think | paid - allenai/olmo-3.1-32b-think:free | free - amazon/nova-2-lite-v1 | paid - amazon/nova-lite-v1 | paid - amazon/nova-micro-v1 | paid - amazon/nova-premier-v1 | paid - amazon/nova-pro-v1 | paid - anthropic/claude-3-haiku | paid - anthropic/claude-3-opus | paid - anthropic/claude-3.5-haiku | paid - anthropic/claude-3.5-haiku-20241022 | paid - anthropic/claude-3.5-sonnet | paid - anthropic/claude-3.7-sonnet | paid - anthropic/claude-3.7-sonnet:thinking | paid - anthropic/claude-haiku-4.5 | paid - anthropic/claude-opus-4 | paid - anthropic/claude-opus-4.1 | paid - anthropic/claude-opus-4.5 | paid - anthropic/claude-sonnet-4 | paid - anthropic/claude-sonnet-4.5 | paid - arcee-ai/coder-large | paid - arcee-ai/maestro-reasoning | paid - arcee-ai/spotlight | paid - arcee-ai/trinity-mini | paid - arcee-ai/trinity-mini:free | free - arcee-ai/virtuoso-large | paid - arliai/qwq-32b-arliai-rpr-v1 | paid - openrouter/auto | paid - baidu/ernie-4.5-21b-a3b | paid - baidu/ernie-4.5-21b-a3b-thinking | paid - baidu/ernie-4.5-300b-a47b | paid - baidu/ernie-4.5-vl-28b-a3b | paid - baidu/ernie-4.5-vl-424b-a47b | paid - openrouter/bodybuilder | paid - bytedance-seed/seed-1.6 | paid - bytedance-seed/seed-1.6-flash | paid - bytedance/ui-tars-1.5-7b | paid - deepcogito/cogito-v2-preview-llama-109b-moe | paid - cohere/command-a | paid - cohere/command-r-08-2024 | paid - cohere/command-r-plus-08-2024 | paid - cohere/command-r7b-12-2024 | paid - deepcogito/cogito-v2-preview-llama-405b | paid - deepcogito/cogito-v2-preview-llama-70b | paid - deepcogito/cogito-v2.1-671b | paid - deepseek/deepseek-prover-v2 | paid - deepseek/deepseek-r1-0528-qwen3-8b | paid - deepseek/deepseek-chat | paid - deepseek/deepseek-chat-v3-0324 | paid - deepseek/deepseek-chat-v3.1 | paid - deepseek/deepseek-v3.1-terminus | paid - deepseek/deepseek-v3.1-terminus:exacto | paid - deepseek/deepseek-v3.2 | paid - deepseek/deepseek-v3.2-exp | paid - deepseek/deepseek-v3.2-speciale | paid - deepseek/deepseek-r1 | paid - deepseek/deepseek-r1-0528 | paid - deepseek/deepseek-r1-0528:free | free - deepseek/deepseek-r1-distill-llama-70b | paid - deepseek/deepseek-r1-distill-qwen-14b | paid - deepseek/deepseek-r1-distill-qwen-32b | paid - eleutherai/llemma_7b | paid - essentialai/rnj-1-instruct | paid - alpindale/goliath-120b | paid - google/gemini-2.0-flash-001 | paid - google/gemini-2.0-flash-exp:free | free - google/gemini-2.0-flash-lite-001 | paid - google/gemini-2.5-flash | paid - google/gemini-2.5-flash-image | paid - google/gemini-2.5-flash-image-preview | paid - google/gemini-2.5-flash-lite | paid - google/gemini-2.5-flash-lite-preview-09-2025 | paid - google/gemini-2.5-flash-preview-09-2025 | paid - google/gemini-2.5-pro | paid - google/gemini-2.5-pro-preview-05-06 | paid - google/gemini-2.5-pro-preview | paid - google/gemini-3-flash-preview | paid - google/gemini-3-pro-preview | paid - google/gemma-2-27b-it | paid - google/gemma-2-9b-it | paid - google/gemma-3-12b-it | paid - google/gemma-3-12b-it:free | free - google/gemma-3-27b-it | paid - google/gemma-3-27b-it:free | free - google/gemma-3-4b-it | paid - google/gemma-3-4b-it:free | free - google/gemma-3n-e2b-it:free | free - google/gemma-3n-e4b-it | paid - google/gemma-3n-e4b-it:free | free - google/gemini-3-pro-image-preview | paid - ibm-granite/granite-4.0-h-micro | paid - inception/mercury | paid - inception/mercury-coder | paid - inflection/inflection-3-pi | paid - inflection/inflection-3-productivity | paid - kwaipilot/kat-coder-pro:free | free - liquid/lfm-2.2-6b | paid - liquid/lfm2-8b-a1b | paid - meta-llama/llama-guard-3-8b | paid - anthracite-org/magnum-v4-72b | paid - mancer/weaver | paid - meituan/longcat-flash-chat | paid - meta-llama/llama-3-70b-instruct | paid - meta-llama/llama-3-8b-instruct | paid - meta-llama/llama-3.1-405b | paid - meta-llama/llama-3.1-405b-instruct | paid - meta-llama/llama-3.1-405b-instruct:free | free - meta-llama/llama-3.1-70b-instruct | paid - meta-llama/llama-3.1-8b-instruct | paid - meta-llama/llama-3.2-11b-vision-instruct | paid - meta-llama/llama-3.2-1b-instruct | paid - meta-llama/llama-3.2-3b-instruct | paid - meta-llama/llama-3.2-3b-instruct:free | free - meta-llama/llama-3.2-90b-vision-instruct | paid - meta-llama/llama-3.3-70b-instruct | paid - meta-llama/llama-3.3-70b-instruct:free | free - meta-llama/llama-4-maverick | paid - meta-llama/llama-4-scout | paid - meta-llama/llama-guard-4-12b | paid - meta-llama/llama-guard-2-8b | paid - microsoft/phi-4 | paid - microsoft/phi-4-multimodal-instruct | paid - microsoft/phi-4-reasoning-plus | paid - microsoft/phi-3-medium-128k-instruct | paid - microsoft/phi-3-mini-128k-instruct | paid - microsoft/phi-3.5-mini-128k-instruct | paid - minimax/minimax-m1 | paid - minimax/minimax-m2 | paid - minimax/minimax-m2.1 | paid - minimax/minimax-01 | paid - mistralai/mistral-large | paid - mistralai/mistral-large-2407 | paid - mistralai/mistral-large-2411 | paid - mistralai/mistral-tiny | paid - mistralai/codestral-2508 | paid - mistralai/devstral-2512 | paid - mistralai/devstral-2512:free | free - mistralai/devstral-medium | paid - mistralai/devstral-small | paid - mistralai/devstral-small-2505 | paid - mistralai/ministral-14b-2512 | paid - mistralai/ministral-3b-2512 | paid - mistralai/ministral-8b-2512 | paid - mistralai/ministral-3b | paid - mistralai/ministral-8b | paid - mistralai/mistral-7b-instruct | paid - mistralai/mistral-7b-instruct:free | free - mistralai/mistral-7b-instruct-v0.1 | paid - mistralai/mistral-7b-instruct-v0.2 | paid - mistralai/mistral-7b-instruct-v0.3 | paid - mistralai/mistral-large-2512 | paid - mistralai/mistral-medium-3 | paid - mistralai/mistral-medium-3.1 | paid - mistralai/mistral-nemo | paid - mistralai/mistral-small-24b-instruct-2501 | paid - mistralai/mistral-small-3.1-24b-instruct | paid - mistralai/mistral-small-3.1-24b-instruct:free | free - mistralai/mistral-small-3.2-24b-instruct | paid - mistralai/mistral-small-creative | paid - mistralai/mixtral-8x22b-instruct | paid - mistralai/mixtral-8x7b-instruct | paid - mistralai/pixtral-12b | paid - mistralai/pixtral-large-2411 | paid - mistralai/mistral-saba | paid - mistralai/voxtral-small-24b-2507 | paid - moonshotai/kimi-dev-72b | paid - moonshotai/kimi-k2 | paid - moonshotai/kimi-k2:free | free - moonshotai/kimi-k2-0905 | paid - moonshotai/kimi-k2-0905:exacto | paid - moonshotai/kimi-k2-thinking | paid - morph/morph-v3-fast | paid - morph/morph-v3-large | paid - gryphe/mythomax-l2-13b | paid - neversleep/llama-3.1-lumimaid-8b | paid - nex-agi/deepseek-v3.1-nex-n1:free | free - neversleep/noromaid-20b | paid - nousresearch/deephermes-3-mistral-24b-preview | paid - nousresearch/hermes-3-llama-3.1-405b | paid - nousresearch/hermes-3-llama-3.1-405b:free | free - nousresearch/hermes-3-llama-3.1-70b | paid - nousresearch/hermes-4-405b | paid - nousresearch/hermes-4-70b | paid - nousresearch/hermes-2-pro-llama-3-8b | paid - nvidia/llama-3.1-nemotron-70b-instruct | paid - nvidia/llama-3.1-nemotron-ultra-253b-v1 | paid - nvidia/llama-3.3-nemotron-super-49b-v1.5 | paid - nvidia/nemotron-3-nano-30b-a3b | paid - nvidia/nemotron-3-nano-30b-a3b:free | free - nvidia/nemotron-nano-12b-v2-vl | paid - nvidia/nemotron-nano-12b-v2-vl:free | free - nvidia/nemotron-nano-9b-v2 | paid - nvidia/nemotron-nano-9b-v2:free | free - openai/chatgpt-4o-latest | paid - openai/codex-mini | paid - openai/gpt-3.5-turbo | paid - openai/gpt-3.5-turbo-0613 | paid - openai/gpt-3.5-turbo-16k | paid - openai/gpt-3.5-turbo-instruct | paid - openai/gpt-4 | paid - openai/gpt-4-0314 | paid - openai/gpt-4-turbo | paid - openai/gpt-4-1106-preview | paid - openai/gpt-4-turbo-preview | paid - openai/gpt-4.1 | paid - openai/gpt-4.1-mini | paid - openai/gpt-4.1-nano | paid - openai/gpt-4o | paid - openai/gpt-4o-2024-05-13 | paid - openai/gpt-4o-2024-08-06 | paid - openai/gpt-4o-2024-11-20 | paid - openai/gpt-4o:extended | paid - openai/gpt-4o-audio-preview | paid - openai/gpt-4o-search-preview | paid - openai/gpt-4o-mini | paid - openai/gpt-4o-mini-2024-07-18 | paid - openai/gpt-4o-mini-search-preview | paid - openai/gpt-5 | paid - openai/gpt-5-chat | paid - openai/gpt-5-codex | paid - openai/gpt-5-image | paid - openai/gpt-5-image-mini | paid - openai/gpt-5-mini | paid - openai/gpt-5-nano | paid - openai/gpt-5-pro | paid - openai/gpt-5.1 | paid - openai/gpt-5.1-chat | paid - openai/gpt-5.1-codex | paid - openai/gpt-5.1-codex-max | paid - openai/gpt-5.1-codex-mini | paid - openai/gpt-5.2 | paid - openai/gpt-5.2-chat | paid - openai/gpt-5.2-pro | paid - openai/gpt-oss-120b | paid - openai/gpt-oss-120b:exacto | paid - openai/gpt-oss-120b:free | free - openai/gpt-oss-20b | paid - openai/gpt-oss-20b:free | free - openai/gpt-oss-safeguard-20b | paid - openai/o1 | paid - openai/o1-pro | paid - openai/o3 | paid - openai/o3-deep-research | paid - openai/o3-mini | paid - openai/o3-mini-high | paid - openai/o3-pro | paid - openai/o4-mini | paid - openai/o4-mini-deep-research | paid - openai/o4-mini-high | paid - opengvlab/internvl3-78b | paid - perplexity/sonar | paid - perplexity/sonar-deep-research | paid - perplexity/sonar-pro | paid - perplexity/sonar-pro-search | paid - perplexity/sonar-reasoning | paid - perplexity/sonar-reasoning-pro | paid - prime-intellect/intellect-3 | paid - qwen/qwen-plus-2025-07-28 | paid - qwen/qwen-plus-2025-07-28:thinking | paid - qwen/qwen-vl-max | paid - qwen/qwen-vl-plus | paid - qwen/qwen-max | paid - qwen/qwen-plus | paid - qwen/qwen-turbo | paid - qwen/qwen-2.5-7b-instruct | paid - qwen/qwen2.5-coder-7b-instruct | paid - qwen/qwen2.5-vl-32b-instruct | paid - qwen/qwen2.5-vl-72b-instruct | paid - qwen/qwen-2.5-vl-7b-instruct | paid - qwen/qwen-2.5-vl-7b-instruct:free | free - qwen/qwen3-14b | paid - qwen/qwen3-235b-a22b | paid - qwen/qwen3-235b-a22b-2507 | paid - qwen/qwen3-235b-a22b-thinking-2507 | paid - qwen/qwen3-30b-a3b | paid - qwen/qwen3-30b-a3b-instruct-2507 | paid - qwen/qwen3-30b-a3b-thinking-2507 | paid - qwen/qwen3-32b | paid - qwen/qwen3-4b:free | free - qwen/qwen3-8b | paid - qwen/qwen3-coder-30b-a3b-instruct | paid - qwen/qwen3-coder | paid - qwen/qwen3-coder:exacto | paid - qwen/qwen3-coder:free | free - qwen/qwen3-coder-flash | paid - qwen/qwen3-coder-plus | paid - qwen/qwen3-max | paid - qwen/qwen3-next-80b-a3b-instruct | paid - qwen/qwen3-next-80b-a3b-thinking | paid - qwen/qwen3-vl-235b-a22b-instruct | paid - qwen/qwen3-vl-235b-a22b-thinking | paid - qwen/qwen3-vl-30b-a3b-instruct | paid - qwen/qwen3-vl-30b-a3b-thinking | paid - qwen/qwen3-vl-32b-instruct | paid - qwen/qwen3-vl-8b-instruct | paid - qwen/qwen3-vl-8b-thinking | paid - qwen/qwq-32b | paid - qwen/qwen-2.5-72b-instruct | paid - qwen/qwen-2.5-coder-32b-instruct | paid - relace/relace-apply-3 | paid - relace/relace-search | paid - undi95/remm-slerp-l2-13b | paid - sao10k/l3-lunaris-8b | paid - sao10k/l3-euryale-70b | paid - sao10k/l3.1-70b-hanami-x1 | paid - sao10k/l3.1-euryale-70b | paid - sao10k/l3.3-euryale-70b | paid - raifle/sorcererlm-8x22b | paid - stepfun-ai/step3 | paid - switchpoint/router | paid - tencent/hunyuan-a13b-instruct | paid - thedrummer/cydonia-24b-v4.1 | paid - thedrummer/rocinante-12b | paid - thedrummer/skyfall-36b-v2 | paid - thedrummer/unslopnemo-12b | paid - thudm/glm-4.1v-9b-thinking | paid - tngtech/deepseek-r1t-chimera | paid - tngtech/deepseek-r1t-chimera:free | free - tngtech/deepseek-r1t2-chimera | paid - tngtech/deepseek-r1t2-chimera:free | free - tngtech/tng-r1t-chimera | paid - tngtech/tng-r1t-chimera:free | free - alibaba/tongyi-deepresearch-30b-a3b | paid - alibaba/tongyi-deepresearch-30b-a3b:free | free - cognitivecomputations/dolphin-mistral-24b-venice-edition:free | free - microsoft/wizardlm-2-8x22b | paid - x-ai/grok-3 | paid - x-ai/grok-3-beta | paid - x-ai/grok-3-mini | paid - x-ai/grok-3-mini-beta | paid - x-ai/grok-4 | paid - x-ai/grok-4-fast | paid - x-ai/grok-4.1-fast | paid - x-ai/grok-code-fast-1 | paid - xiaomi/mimo-v2-flash:free | free - z-ai/glm-4-32b | paid - z-ai/glm-4.5 | paid - z-ai/glm-4.5-air | paid - z-ai/glm-4.5-air:free | free - z-ai/glm-4.5v | paid - z-ai/glm-4.6 | paid - z-ai/glm-4.6:exacto | paid - z-ai/glm-4.6v | paid - z-ai/glm-4.7 | paid -  -  OpenAI models: -  - babbage-002 - chatgpt-4o-latest - chatgpt-image-latest - codex-mini-latest - dall-e-2 - dall-e-3 - davinci-002 - gpt-3.5-turbo - gpt-3.5-turbo-0125 - gpt-3.5-turbo-1106 - gpt-3.5-turbo-16k - gpt-3.5-turbo-instruct - gpt-3.5-turbo-instruct-0914 - gpt-4 - gpt-4-0125-preview - gpt-4-0613 - gpt-4-1106-preview - gpt-4-turbo - gpt-4-turbo-2024-04-09 - gpt-4-turbo-preview - gpt-4.1 - gpt-4.1-2025-04-14 - gpt-4.1-mini - gpt-4.1-mini-2025-04-14 - gpt-4.1-nano - gpt-4.1-nano-2025-04-14 - gpt-4o - gpt-4o-2024-05-13 - gpt-4o-2024-08-06 - gpt-4o-2024-11-20 - gpt-4o-audio-preview - gpt-4o-audio-preview-2024-12-17 - gpt-4o-audio-preview-2025-06-03 - gpt-4o-mini - gpt-4o-mini-2024-07-18 - gpt-4o-mini-audio-preview - gpt-4o-mini-audio-preview-2024-12-17 - gpt-4o-mini-realtime-preview - gpt-4o-mini-realtime-preview-2024-12-17 - gpt-4o-mini-search-preview - gpt-4o-mini-search-preview-2025-03-11 - gpt-4o-mini-transcribe - gpt-4o-mini-transcribe-2025-03-20 - gpt-4o-mini-transcribe-2025-12-15 - gpt-4o-mini-tts - gpt-4o-mini-tts-2025-03-20 - gpt-4o-mini-tts-2025-12-15 - gpt-4o-realtime-preview - gpt-4o-realtime-preview-2024-12-17 - gpt-4o-realtime-preview-2025-06-03 - gpt-4o-search-preview - gpt-4o-search-preview-2025-03-11 - gpt-4o-transcribe - gpt-4o-transcribe-diarize - gpt-5 - gpt-5-2025-08-07 - gpt-5-chat-latest - gpt-5-codex - gpt-5-mini - gpt-5-mini-2025-08-07 - gpt-5-nano - gpt-5-nano-2025-08-07 - gpt-5-pro - gpt-5-pro-2025-10-06 - gpt-5-search-api - gpt-5-search-api-2025-10-14 - gpt-5.1 - gpt-5.1-2025-11-13 - gpt-5.1-chat-latest - gpt-5.1-codex - gpt-5.1-codex-max - gpt-5.1-codex-mini - gpt-5.2 - gpt-5.2-2025-12-11 - gpt-5.2-chat-latest - gpt-5.2-pro - gpt-5.2-pro-2025-12-11 - gpt-audio - gpt-audio-2025-08-28 - gpt-audio-mini - gpt-audio-mini-2025-10-06 - gpt-audio-mini-2025-12-15 - gpt-image-1 - gpt-image-1-mini - gpt-image-1.5 - gpt-realtime - gpt-realtime-2025-08-28 - gpt-realtime-mini - gpt-realtime-mini-2025-10-06 - gpt-realtime-mini-2025-12-15 - o1 - o1-2024-12-17 - o1-pro - o1-pro-2025-03-19 - o3 - o3-2025-04-16 - o3-mini - o3-mini-2025-01-31 - o4-mini - o4-mini-2025-04-16 - o4-mini-deep-research - o4-mini-deep-research-2025-06-26 - omni-moderation-2024-09-26 - omni-moderation-latest - sora-2 - sora-2-pro - text-embedding-3-large - text-embedding-3-small - text-embedding-ada-002 - tts-1 - tts-1-1106 - tts-1-hd - tts-1-hd-1106 - whisper-1 - ----- - -  -  Deepseek models: -  - deepseek-chat - deepseek-reasoner - ----- - */ - model?: string | undefined; - /** Router to use: openai, openrouter or deepseek */ - router?: string; - /** Chat completion mode: - completion, tools, assistant. - completion: no support for tools, please use --dst parameter to save the output. - tools: allows for tools to be used, eg 'save to ./output.md'. Not all models support this mode. - responses: allows for responses to be used, eg 'save to ./output.md'. Not all models support this mode. - assistant: : allows documents (PDF, DOCX, ...) to be added but dont support tools. Use --dst to save the output. Supported files : - custom: custom mode - */ - mode?: "completion" | "tools" | "assistant" | "responses" | "custom"; - /** Logging level for the application */ - logLevel?: number; - /** Path to profile for variables. Supports environment variables. */ - profile?: string | undefined; - /** Base URL for the API, set via --router or directly */ - baseURL?: string | undefined; - /** Path to JSON configuration file (API keys). Supports environment variables. */ - config?: string | undefined; - /** Create a script */ - dump?: string | undefined; - /** Path to preferences file, eg: location, your email address, gender, etc. Supports environment variables. */ - preferences?: string; - /** Logging directory */ - logs?: string; - /** Enable streaming (verbose LLM output) */ - stream?: boolean; - /** Use alternate tokenizer & instead of $ */ - alt?: boolean; - /** Environment (in profile) */ - env?: string; - variables?: { - [x: string]: string; - }; - /** List of filters to apply to the output. - Used only in completion mode and a given output file specified with --dst. - It unwraps by default any code or data in Markdown. - Choices: - JSON,JSONUnescape,JSONPretty,AlphaSort,code,JSONParse,trim,markdown - */ - filters?: (string | ("JSON" | "JSONUnescape" | "JSONPretty" | "AlphaSort" | "code" | "JSONParse" | "trim" | "markdown")[] | string[] | ((...args_0: unknown[]) => unknown)[]); - /** JSONPath query to be used to transform input objects */ - query?: (string | null); - /** Dry run - only write out parameters without making API calls */ - dry?: (boolean | string); - /** Format for structured outputs. Can be a Zod schema, a Zod schema string, a JSON schema string, or a path to a JSON file. */ - format?: (string | any) | undefined; -} +export interface IKBotOptions { + /** Target directory */ + path?: string; + /** The prompt. Supports file paths and environment variables. */ + prompt?: string | undefined; + /** Optional output path for modified files (Tool mode only) */ + output?: string | undefined; + /** Optional destination path for the result, will substitute ${MODEL_NAME} and ${ROUTER} in the path. Optional, used for "completion" mode */ + dst?: string | undefined; + /** How to handle output if --dst file already exists: "concat" (append) or "merge" (try to merge structures if possible, otherwise append). Only used if --dst is specified. */ + append?: ("concat" | "merge" | "replace") | undefined; + /** Specify how to wrap the output, "meta (file name, absolute path, cwd)" or "none". */ + wrap?: "meta" | "none"; + /** Iterate over items, supported: GLOB | Path to JSON File | array of strings (comma separated). To test different models, use --each="gpt-3.5-turbo,gpt-4o", the actual string will exposed as variable `ITEM`, eg: --dst="${ITEM}-output.md" */ + each?: string | undefined; + /** Disable tools categories, eg: --disable=fs,git,interact,terminal,search,web,email,user */ + disable?: string[]; + /** List of specific tools to disable */ + disableTools?: string[]; + /** List of tools to use. Can be built-in tool names or paths to custom tool files. Default: fs,git,interact,terminal,search,web,email,user */ + tools?: (string[] | string); + /** Comma separated glob patterns or paths, eg --include=src/*.tsx,src/*.ts --include=package.json */ + include?: string[] | undefined; + /** Comma separated glob patterns or paths, eg --exclude=src/*.tsx,src/*.ts --exclude=package.json */ + exclude?: string[] | undefined; + /** Specify a glob extension behavior. Available presets: match-cpp. Also accepts a custom glob pattern with variables like ${SRC_DIR}, ${SRC_NAME}, ${SRC_EXT}. E.g., "match-cpp" or "${SRC_DIR}/${SRC_NAME}*.cpp" */ + globExtension?: (("match-cpp") | string) | undefined; + /** Explicit API key to use */ + api_key?: string | undefined; + /** AI model to use for processing. Available models: +  +  OpenRouter models: +  + ai21/jamba-large-1.7 | paid + aion-labs/aion-1.0 | paid + aion-labs/aion-1.0-mini | paid + aion-labs/aion-2.0 | paid + aion-labs/aion-rp-llama-3.1-8b | paid + alfredpros/codellama-7b-instruct-solidity | paid + allenai/molmo-2-8b | paid + allenai/olmo-2-0325-32b-instruct | paid + allenai/olmo-3-32b-think | paid + allenai/olmo-3-7b-instruct | paid + allenai/olmo-3-7b-think | paid + allenai/olmo-3.1-32b-instruct | paid + allenai/olmo-3.1-32b-think | paid + amazon/nova-2-lite-v1 | paid + amazon/nova-lite-v1 | paid + amazon/nova-micro-v1 | paid + amazon/nova-premier-v1 | paid + amazon/nova-pro-v1 | paid + anthropic/claude-3-haiku | paid + anthropic/claude-3.5-haiku | paid + anthropic/claude-3.5-sonnet | paid + anthropic/claude-3.7-sonnet | paid + anthropic/claude-3.7-sonnet:thinking | paid + anthropic/claude-haiku-4.5 | paid + anthropic/claude-opus-4 | paid + anthropic/claude-opus-4.1 | paid + anthropic/claude-opus-4.5 | paid + anthropic/claude-opus-4.6 | paid + anthropic/claude-sonnet-4 | paid + anthropic/claude-sonnet-4.5 | paid + anthropic/claude-sonnet-4.6 | paid + arcee-ai/coder-large | paid + arcee-ai/maestro-reasoning | paid + arcee-ai/spotlight | paid + arcee-ai/trinity-large-preview:free | free + arcee-ai/trinity-mini | paid + arcee-ai/trinity-mini:free | free + arcee-ai/virtuoso-large | paid + openrouter/auto | paid + baidu/ernie-4.5-21b-a3b | paid + baidu/ernie-4.5-21b-a3b-thinking | paid + baidu/ernie-4.5-300b-a47b | paid + baidu/ernie-4.5-vl-28b-a3b | paid + baidu/ernie-4.5-vl-424b-a47b | paid + openrouter/bodybuilder | paid + bytedance-seed/seed-1.6 | paid + bytedance-seed/seed-1.6-flash | paid + bytedance-seed/seed-2.0-lite | paid + bytedance-seed/seed-2.0-mini | paid + bytedance/ui-tars-1.5-7b | paid + cohere/command-a | paid + cohere/command-r-08-2024 | paid + cohere/command-r-plus-08-2024 | paid + cohere/command-r7b-12-2024 | paid + deepcogito/cogito-v2.1-671b | paid + deepseek/deepseek-chat | paid + deepseek/deepseek-chat-v3-0324 | paid + deepseek/deepseek-chat-v3.1 | paid + deepseek/deepseek-v3.1-terminus | paid + deepseek/deepseek-v3.2 | paid + deepseek/deepseek-v3.2-exp | paid + deepseek/deepseek-v3.2-speciale | paid + deepseek/deepseek-r1 | paid + deepseek/deepseek-r1-0528 | paid + deepseek/deepseek-r1-distill-llama-70b | paid + deepseek/deepseek-r1-distill-qwen-32b | paid + eleutherai/llemma_7b | paid + essentialai/rnj-1-instruct | paid + openrouter/free | paid + alpindale/goliath-120b | paid + google/gemini-2.0-flash-001 | paid + google/gemini-2.0-flash-lite-001 | paid + google/gemini-2.5-flash | paid + google/gemini-2.5-flash-lite | paid + google/gemini-2.5-flash-lite-preview-09-2025 | paid + google/gemini-2.5-pro | paid + google/gemini-2.5-pro-preview-05-06 | paid + google/gemini-2.5-pro-preview | paid + google/gemini-3-flash-preview | paid + google/gemini-3-pro-preview | paid + google/gemini-3.1-flash-lite-preview | paid + google/gemini-3.1-pro-preview | paid + google/gemini-3.1-pro-preview-customtools | paid + google/gemma-2-27b-it | paid + google/gemma-2-9b-it | paid + google/gemma-3-12b-it | paid + google/gemma-3-12b-it:free | free + google/gemma-3-27b-it | paid + google/gemma-3-27b-it:free | free + google/gemma-3-4b-it | paid + google/gemma-3-4b-it:free | free + google/gemma-3n-e2b-it:free | free + google/gemma-3n-e4b-it | paid + google/gemma-3n-e4b-it:free | free + google/gemini-2.5-flash-image | paid + google/gemini-3.1-flash-image-preview | paid + google/gemini-3-pro-image-preview | paid + ibm-granite/granite-4.0-h-micro | paid + inception/mercury | paid + inception/mercury-2 | paid + inception/mercury-coder | paid + inflection/inflection-3-pi | paid + inflection/inflection-3-productivity | paid + kwaipilot/kat-coder-pro | paid + liquid/lfm-2.2-6b | paid + liquid/lfm-2-24b-a2b | paid + liquid/lfm2-8b-a1b | paid + liquid/lfm-2.5-1.2b-instruct:free | free + liquid/lfm-2.5-1.2b-thinking:free | free + meta-llama/llama-guard-3-8b | paid + anthracite-org/magnum-v4-72b | paid + mancer/weaver | paid + meituan/longcat-flash-chat | paid + meta-llama/llama-3-70b-instruct | paid + meta-llama/llama-3-8b-instruct | paid + meta-llama/llama-3.1-405b | paid + meta-llama/llama-3.1-70b-instruct | paid + meta-llama/llama-3.1-8b-instruct | paid + meta-llama/llama-3.2-11b-vision-instruct | paid + meta-llama/llama-3.2-1b-instruct | paid + meta-llama/llama-3.2-3b-instruct | paid + meta-llama/llama-3.2-3b-instruct:free | free + meta-llama/llama-3.3-70b-instruct | paid + meta-llama/llama-3.3-70b-instruct:free | free + meta-llama/llama-4-maverick | paid + meta-llama/llama-4-scout | paid + meta-llama/llama-guard-4-12b | paid + microsoft/phi-4 | paid + minimax/minimax-m1 | paid + minimax/minimax-m2 | paid + minimax/minimax-m2-her | paid + minimax/minimax-m2.1 | paid + minimax/minimax-m2.5 | paid + minimax/minimax-m2.5:free | free + minimax/minimax-m2.7 | paid + minimax/minimax-01 | paid + mistralai/mistral-large | paid + mistralai/mistral-large-2407 | paid + mistralai/mistral-large-2411 | paid + mistralai/codestral-2508 | paid + mistralai/devstral-2512 | paid + mistralai/devstral-medium | paid + mistralai/devstral-small | paid + mistralai/ministral-14b-2512 | paid + mistralai/ministral-3b-2512 | paid + mistralai/ministral-8b-2512 | paid + mistralai/mistral-7b-instruct-v0.1 | paid + mistralai/mistral-large-2512 | paid + mistralai/mistral-medium-3 | paid + mistralai/mistral-medium-3.1 | paid + mistralai/mistral-nemo | paid + mistralai/mistral-small-24b-instruct-2501 | paid + mistralai/mistral-small-3.1-24b-instruct | paid + mistralai/mistral-small-3.1-24b-instruct:free | free + mistralai/mistral-small-3.2-24b-instruct | paid + mistralai/mistral-small-2603 | paid + mistralai/mistral-small-creative | paid + mistralai/mixtral-8x22b-instruct | paid + mistralai/mixtral-8x7b-instruct | paid + mistralai/pixtral-large-2411 | paid + mistralai/mistral-saba | paid + mistralai/voxtral-small-24b-2507 | paid + moonshotai/kimi-k2 | paid + moonshotai/kimi-k2-0905 | paid + moonshotai/kimi-k2-thinking | paid + moonshotai/kimi-k2.5 | paid + morph/morph-v3-fast | paid + morph/morph-v3-large | paid + gryphe/mythomax-l2-13b | paid + nex-agi/deepseek-v3.1-nex-n1 | paid + nousresearch/hermes-3-llama-3.1-405b | paid + nousresearch/hermes-3-llama-3.1-405b:free | free + nousresearch/hermes-3-llama-3.1-70b | paid + nousresearch/hermes-4-405b | paid + nousresearch/hermes-4-70b | paid + nousresearch/hermes-2-pro-llama-3-8b | paid + nvidia/llama-3.1-nemotron-70b-instruct | paid + nvidia/llama-3.3-nemotron-super-49b-v1.5 | paid + nvidia/nemotron-3-nano-30b-a3b | paid + nvidia/nemotron-3-nano-30b-a3b:free | free + nvidia/nemotron-3-super-120b-a12b | paid + nvidia/nemotron-3-super-120b-a12b:free | free + nvidia/nemotron-nano-12b-v2-vl | paid + nvidia/nemotron-nano-12b-v2-vl:free | free + nvidia/nemotron-nano-9b-v2 | paid + nvidia/nemotron-nano-9b-v2:free | free + openai/gpt-audio | paid + openai/gpt-audio-mini | paid + openai/gpt-3.5-turbo | paid + openai/gpt-3.5-turbo-0613 | paid + openai/gpt-3.5-turbo-16k | paid + openai/gpt-3.5-turbo-instruct | paid + openai/gpt-4 | paid + openai/gpt-4-0314 | paid + openai/gpt-4-turbo | paid + openai/gpt-4-1106-preview | paid + openai/gpt-4-turbo-preview | paid + openai/gpt-4.1 | paid + openai/gpt-4.1-mini | paid + openai/gpt-4.1-nano | paid + openai/gpt-4o | paid + openai/gpt-4o-2024-05-13 | paid + openai/gpt-4o-2024-08-06 | paid + openai/gpt-4o-2024-11-20 | paid + openai/gpt-4o:extended | paid + openai/gpt-4o-audio-preview | paid + openai/gpt-4o-search-preview | paid + openai/gpt-4o-mini | paid + openai/gpt-4o-mini-2024-07-18 | paid + openai/gpt-4o-mini-search-preview | paid + openai/gpt-5 | paid + openai/gpt-5-chat | paid + openai/gpt-5-codex | paid + openai/gpt-5-image | paid + openai/gpt-5-image-mini | paid + openai/gpt-5-mini | paid + openai/gpt-5-nano | paid + openai/gpt-5-pro | paid + openai/gpt-5.1 | paid + openai/gpt-5.1-chat | paid + openai/gpt-5.1-codex | paid + openai/gpt-5.1-codex-max | paid + openai/gpt-5.1-codex-mini | paid + openai/gpt-5.2 | paid + openai/gpt-5.2-chat | paid + openai/gpt-5.2-pro | paid + openai/gpt-5.2-codex | paid + openai/gpt-5.3-chat | paid + openai/gpt-5.3-codex | paid + openai/gpt-5.4 | paid + openai/gpt-5.4-mini | paid + openai/gpt-5.4-nano | paid + openai/gpt-5.4-pro | paid + openai/gpt-oss-120b | paid + openai/gpt-oss-120b:free | free + openai/gpt-oss-20b | paid + openai/gpt-oss-20b:free | free + openai/gpt-oss-safeguard-20b | paid + openai/o1 | paid + openai/o1-pro | paid + openai/o3 | paid + openai/o3-deep-research | paid + openai/o3-mini | paid + openai/o3-mini-high | paid + openai/o3-pro | paid + openai/o4-mini | paid + openai/o4-mini-deep-research | paid + openai/o4-mini-high | paid + perplexity/sonar | paid + perplexity/sonar-deep-research | paid + perplexity/sonar-pro | paid + perplexity/sonar-pro-search | paid + perplexity/sonar-reasoning-pro | paid + prime-intellect/intellect-3 | paid + qwen/qwen-plus-2025-07-28 | paid + qwen/qwen-plus-2025-07-28:thinking | paid + qwen/qwen-vl-max | paid + qwen/qwen-vl-plus | paid + qwen/qwen-max | paid + qwen/qwen-plus | paid + qwen/qwen-turbo | paid + qwen/qwen-2.5-7b-instruct | paid + qwen/qwen2.5-coder-7b-instruct | paid + qwen/qwen2.5-vl-32b-instruct | paid + qwen/qwen2.5-vl-72b-instruct | paid + qwen/qwen-2.5-vl-7b-instruct | paid + qwen/qwen3-14b | paid + qwen/qwen3-235b-a22b | paid + qwen/qwen3-235b-a22b-2507 | paid + qwen/qwen3-235b-a22b-thinking-2507 | paid + qwen/qwen3-30b-a3b | paid + qwen/qwen3-30b-a3b-instruct-2507 | paid + qwen/qwen3-30b-a3b-thinking-2507 | paid + qwen/qwen3-32b | paid + qwen/qwen3-4b:free | free + qwen/qwen3-8b | paid + qwen/qwen3-coder-30b-a3b-instruct | paid + qwen/qwen3-coder | paid + qwen/qwen3-coder:free | free + qwen/qwen3-coder-flash | paid + qwen/qwen3-coder-next | paid + qwen/qwen3-coder-plus | paid + qwen/qwen3-max | paid + qwen/qwen3-max-thinking | paid + qwen/qwen3-next-80b-a3b-instruct | paid + qwen/qwen3-next-80b-a3b-instruct:free | free + qwen/qwen3-next-80b-a3b-thinking | paid + qwen/qwen3-vl-235b-a22b-instruct | paid + qwen/qwen3-vl-235b-a22b-thinking | paid + qwen/qwen3-vl-30b-a3b-instruct | paid + qwen/qwen3-vl-30b-a3b-thinking | paid + qwen/qwen3-vl-32b-instruct | paid + qwen/qwen3-vl-8b-instruct | paid + qwen/qwen3-vl-8b-thinking | paid + qwen/qwen3.5-397b-a17b | paid + qwen/qwen3.5-plus-02-15 | paid + qwen/qwen3.5-122b-a10b | paid + qwen/qwen3.5-27b | paid + qwen/qwen3.5-35b-a3b | paid + qwen/qwen3.5-9b | paid + qwen/qwen3.5-flash-02-23 | paid + qwen/qwq-32b | paid + qwen/qwen-2.5-72b-instruct | paid + qwen/qwen-2.5-coder-32b-instruct | paid + relace/relace-apply-3 | paid + relace/relace-search | paid + undi95/remm-slerp-l2-13b | paid + sao10k/l3-lunaris-8b | paid + sao10k/l3-euryale-70b | paid + sao10k/l3.1-70b-hanami-x1 | paid + sao10k/l3.1-euryale-70b | paid + sao10k/l3.3-euryale-70b | paid + stepfun/step-3.5-flash | paid + stepfun/step-3.5-flash:free | free + switchpoint/router | paid + tencent/hunyuan-a13b-instruct | paid + thedrummer/cydonia-24b-v4.1 | paid + thedrummer/rocinante-12b | paid + thedrummer/skyfall-36b-v2 | paid + thedrummer/unslopnemo-12b | paid + tngtech/deepseek-r1t2-chimera | paid + alibaba/tongyi-deepresearch-30b-a3b | paid + upstage/solar-pro-3 | paid + cognitivecomputations/dolphin-mistral-24b-venice-edition:free | free + microsoft/wizardlm-2-8x22b | paid + writer/palmyra-x5 | paid + x-ai/grok-3 | paid + x-ai/grok-3-beta | paid + x-ai/grok-3-mini | paid + x-ai/grok-3-mini-beta | paid + x-ai/grok-4 | paid + x-ai/grok-4-fast | paid + x-ai/grok-4.1-fast | paid + x-ai/grok-4.20-beta | paid + x-ai/grok-4.20-multi-agent-beta | paid + x-ai/grok-code-fast-1 | paid + xiaomi/mimo-v2-flash | paid + xiaomi/mimo-v2-omni | paid + xiaomi/mimo-v2-pro | paid + z-ai/glm-4-32b | paid + z-ai/glm-4.5 | paid + z-ai/glm-4.5-air | paid + z-ai/glm-4.5-air:free | free + z-ai/glm-4.5v | paid + z-ai/glm-4.6 | paid + z-ai/glm-4.6v | paid + z-ai/glm-4.7 | paid + z-ai/glm-4.7-flash | paid + z-ai/glm-5 | paid + z-ai/glm-5-turbo | paid +  +  OpenAI models: +  + babbage-002 + chatgpt-image-latest + dall-e-2 + dall-e-3 + davinci-002 + gpt-3.5-turbo + gpt-3.5-turbo-0125 + gpt-3.5-turbo-1106 + gpt-3.5-turbo-16k + gpt-3.5-turbo-instruct + gpt-3.5-turbo-instruct-0914 + gpt-4 + gpt-4-0125-preview + gpt-4-0613 + gpt-4-1106-preview + gpt-4-turbo + gpt-4-turbo-2024-04-09 + gpt-4-turbo-preview + gpt-4.1 + gpt-4.1-2025-04-14 + gpt-4.1-mini + gpt-4.1-mini-2025-04-14 + gpt-4.1-nano + gpt-4.1-nano-2025-04-14 + gpt-4o + gpt-4o-2024-05-13 + gpt-4o-2024-08-06 + gpt-4o-2024-11-20 + gpt-4o-audio-preview + gpt-4o-audio-preview-2024-12-17 + gpt-4o-audio-preview-2025-06-03 + gpt-4o-mini + gpt-4o-mini-2024-07-18 + gpt-4o-mini-audio-preview + gpt-4o-mini-audio-preview-2024-12-17 + gpt-4o-mini-realtime-preview + gpt-4o-mini-realtime-preview-2024-12-17 + gpt-4o-mini-search-preview + gpt-4o-mini-search-preview-2025-03-11 + gpt-4o-mini-transcribe + gpt-4o-mini-transcribe-2025-03-20 + gpt-4o-mini-transcribe-2025-12-15 + gpt-4o-mini-tts + gpt-4o-mini-tts-2025-03-20 + gpt-4o-mini-tts-2025-12-15 + gpt-4o-realtime-preview + gpt-4o-realtime-preview-2024-12-17 + gpt-4o-realtime-preview-2025-06-03 + gpt-4o-search-preview + gpt-4o-search-preview-2025-03-11 + gpt-4o-transcribe + gpt-4o-transcribe-diarize + gpt-5 + gpt-5-2025-08-07 + gpt-5-chat-latest + gpt-5-codex + gpt-5-mini + gpt-5-mini-2025-08-07 + gpt-5-nano + gpt-5-nano-2025-08-07 + gpt-5-pro + gpt-5-pro-2025-10-06 + gpt-5-search-api + gpt-5-search-api-2025-10-14 + gpt-5.1 + gpt-5.1-2025-11-13 + gpt-5.1-chat-latest + gpt-5.1-codex + gpt-5.1-codex-max + gpt-5.1-codex-mini + gpt-5.2 + gpt-5.2-2025-12-11 + gpt-5.2-chat-latest + gpt-5.2-codex + gpt-5.2-pro + gpt-5.2-pro-2025-12-11 + gpt-5.3-chat-latest + gpt-5.3-codex + gpt-5.4 + gpt-5.4-2026-03-05 + gpt-5.4-mini + gpt-5.4-mini-2026-03-17 + gpt-5.4-nano + gpt-5.4-nano-2026-03-17 + gpt-5.4-pro + gpt-5.4-pro-2026-03-05 + gpt-audio + gpt-audio-1.5 + gpt-audio-2025-08-28 + gpt-audio-mini + gpt-audio-mini-2025-10-06 + gpt-audio-mini-2025-12-15 + gpt-image-1 + gpt-image-1-mini + gpt-image-1.5 + gpt-realtime + gpt-realtime-1.5 + gpt-realtime-2025-08-28 + gpt-realtime-mini + gpt-realtime-mini-2025-10-06 + gpt-realtime-mini-2025-12-15 + o1 + o1-2024-12-17 + o1-pro + o1-pro-2025-03-19 + o3 + o3-2025-04-16 + o3-mini + o3-mini-2025-01-31 + o4-mini + o4-mini-2025-04-16 + o4-mini-deep-research + o4-mini-deep-research-2025-06-26 + omni-moderation-2024-09-26 + omni-moderation-latest + sora-2 + sora-2-pro + text-embedding-3-large + text-embedding-3-small + text-embedding-ada-002 + tts-1 + tts-1-1106 + tts-1-hd + tts-1-hd-1106 + whisper-1 + ----- + +  +  Deepseek models: +  + deepseek-chat + deepseek-reasoner + ----- + */ + model?: string | undefined; + /** Router to use: openai, openrouter or deepseek */ + router?: string; + /** Chat completion mode: + completion, tools, assistant. + completion: no support for tools, please use --dst parameter to save the output. + tools: allows for tools to be used, eg 'save to ./output.md'. Not all models support this mode. + responses: allows for responses to be used, eg 'save to ./output.md'. Not all models support this mode. + assistant: : allows documents (PDF, DOCX, ...) to be added but dont support tools. Use --dst to save the output. Supported files : + custom: custom mode + */ + mode?: "completion" | "tools" | "assistant" | "responses" | "custom"; + /** Logging level for the application */ + logLevel?: number; + /** Path to profile for variables. Supports environment variables. */ + profile?: string | undefined; + /** Base URL for the API, set via --router or directly */ + baseURL?: string | undefined; + /** Path to JSON configuration file (API keys). Supports environment variables. */ + config?: string | undefined; + /** Create a script */ + dump?: string | undefined; + /** Path to preferences file, eg: location, your email address, gender, etc. Supports environment variables. */ + preferences?: string; + /** Logging directory */ + logs?: string; + /** Enable streaming (verbose LLM output) */ + stream?: boolean; + /** Use alternate tokenizer & instead of $ */ + alt?: boolean; + /** Environment (in profile) */ + env?: string; + variables?: { + [x: string]: string; + }; + /** List of filters to apply to the output. + Used only in completion mode and a given output file specified with --dst. + It unwraps by default any code or data in Markdown. + Choices: + JSON,JSONUnescape,JSONPretty,AlphaSort,code,JSONParse,trim,markdown + */ + filters?: (string | ("JSON" | "JSONUnescape" | "JSONPretty" | "AlphaSort" | "code" | "JSONParse" | "trim" | "markdown")[] | string[] | ((...args_0: unknown[]) => unknown)[]); + /** JSONPath query to be used to transform input objects */ + query?: (string | null); + /** Dry run - only write out parameters without making API calls */ + dry?: (boolean | string); + /** Format for structured outputs. Can be a Zod schema, a Zod schema string, a JSON schema string, or a path to a JSON file. */ + format?: (string | any) | undefined; +} diff --git a/packages/ai-tools/dist/types_kbot.js b/packages/ai-tools/dist/types_kbot.js index 3f960835..d3bae8ed 100644 --- a/packages/ai-tools/dist/types_kbot.js +++ b/packages/ai-tools/dist/types_kbot.js @@ -1,2 +1,2 @@ -export {}; +export {}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNfa2JvdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlc19rYm90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ== \ No newline at end of file diff --git a/packages/ai-tools/dist/zod_schemas.d.ts b/packages/ai-tools/dist/zod_schemas.d.ts index 2d9f3111..c2e30fc0 100644 --- a/packages/ai-tools/dist/zod_schemas.d.ts +++ b/packages/ai-tools/dist/zod_schemas.d.ts @@ -1,145 +1,61 @@ -import { z } from 'zod'; -/** Schema for listing files in a directory */ -export declare const FileListingOptionsSchema: z.ZodObject<{ - directory: z.ZodString; - pattern: z.ZodOptional; -}, "strip", z.ZodTypeAny, { - directory?: string; - pattern?: string; -}, { - directory?: string; - pattern?: string; -}>; -/** Schema for file removal operations */ -export declare const FileRemovalOptionsSchema: z.ZodObject<{ - path: z.ZodString; -}, "strip", z.ZodTypeAny, { - path?: string; -}, { - path?: string; -}>; -/** Schema for git commit operations */ -export declare const GitCommitSchema: z.ZodObject<{ - files: z.ZodArray; - message: z.ZodString; -}, "strip", z.ZodTypeAny, { - message?: string; - files?: string[]; -}, { - message?: string; - files?: string[]; -}>; -/** Schema for git revert operations */ -export declare const GitRevertSchema: z.ZodObject<{ - files: z.ZodArray; -}, "strip", z.ZodTypeAny, { - files?: string[]; -}, { - files?: string[]; -}>; -/** Schema for git version switch operations */ -export declare const GitSwitchVersionSchema: z.ZodObject<{ - branch: z.ZodString; - remote: z.ZodDefault; -}, "strip", z.ZodTypeAny, { - branch?: string; - remote?: string; -}, { - branch?: string; - remote?: string; -}>; -/** Schema for git raw file retrieval */ -export declare const GitRawFileSchema: z.ZodEffects; - repo: z.ZodOptional; - path: z.ZodOptional; -}, "strip", z.ZodTypeAny, { - path?: string; - url?: string; - repo?: string; -}, { - path?: string; - url?: string; - repo?: string; -}>, { - path?: string; - url?: string; - repo?: string; -}, { - path?: string; - url?: string; - repo?: string; -}>; -/** Schema for npm run command */ -export declare const NpmRunSchema: z.ZodObject<{ - command: z.ZodString; - args: z.ZodOptional>; -}, "strip", z.ZodTypeAny, { - command?: string; - args?: string[]; -}, { - command?: string; - args?: string[]; -}>; -/** Schema for terminal command execution */ -export declare const TerminalCommandSchema: z.ZodObject<{ - command: z.ZodString; - args: z.ZodOptional>; - cwd: z.ZodOptional; - background: z.ZodOptional; - window: z.ZodOptional; - detached: z.ZodOptional; -}, "strip", z.ZodTypeAny, { - command?: string; - args?: string[]; - cwd?: string; - background?: boolean; - window?: boolean; - detached?: boolean; -}, { - command?: string; - args?: string[]; - cwd?: string; - background?: boolean; - window?: boolean; - detached?: boolean; -}>; -/** Schema for tool invocation parameters */ -export declare const InvokeToolSchema: z.ZodObject<{ - tools: z.ZodString; - function: z.ZodString; - target: z.ZodDefault; - params: z.ZodOptional; - output: z.ZodOptional; - env_key: z.ZodOptional; -}, "strip", z.ZodTypeAny, { - function?: string; - tools?: string; - params?: string; - target?: string; - output?: string; - env_key?: string; -}, { - function?: string; - tools?: string; - params?: string; - target?: string; - output?: string; - env_key?: string; -}>; -/** Schema for list command options */ -export declare const ListCommandSchema: z.ZodObject<{ - output: z.ZodDefault; -}, "strip", z.ZodTypeAny, { - output?: string; -}, { - output?: string; -}>; -/** Schema for tool listing options */ -export declare const ToolListingOptionsSchema: z.ZodObject<{ - output: z.ZodDefault; -}, "strip", z.ZodTypeAny, { - output?: string; -}, { - output?: string; -}>; +import { z } from 'zod'; +/** Schema for listing files in a directory */ +export declare const FileListingOptionsSchema: z.ZodObject<{ + directory: z.ZodString; + pattern: z.ZodOptional; +}, z.core.$strip>; +/** Schema for file removal operations */ +export declare const FileRemovalOptionsSchema: z.ZodObject<{ + path: z.ZodString; +}, z.core.$strip>; +/** Schema for git commit operations */ +export declare const GitCommitSchema: z.ZodObject<{ + files: z.ZodArray; + message: z.ZodString; +}, z.core.$strip>; +/** Schema for git revert operations */ +export declare const GitRevertSchema: z.ZodObject<{ + files: z.ZodArray; +}, z.core.$strip>; +/** Schema for git version switch operations */ +export declare const GitSwitchVersionSchema: z.ZodObject<{ + branch: z.ZodString; + remote: z.ZodDefault; +}, z.core.$strip>; +/** Schema for git raw file retrieval */ +export declare const GitRawFileSchema: z.ZodObject<{ + url: z.ZodOptional; + repo: z.ZodOptional; + path: z.ZodOptional; +}, z.core.$strip>; +/** Schema for npm run command */ +export declare const NpmRunSchema: z.ZodObject<{ + command: z.ZodString; + args: z.ZodOptional>; +}, z.core.$strip>; +/** Schema for terminal command execution */ +export declare const TerminalCommandSchema: z.ZodObject<{ + command: z.ZodString; + args: z.ZodOptional>; + cwd: z.ZodOptional; + background: z.ZodOptional; + window: z.ZodOptional; + detached: z.ZodOptional; +}, z.core.$strip>; +/** Schema for tool invocation parameters */ +export declare const InvokeToolSchema: z.ZodObject<{ + tools: z.ZodString; + function: z.ZodString; + target: z.ZodDefault; + params: z.ZodOptional; + output: z.ZodOptional; + env_key: z.ZodOptional; +}, z.core.$strip>; +/** Schema for list command options */ +export declare const ListCommandSchema: z.ZodObject<{ + output: z.ZodDefault; +}, z.core.$strip>; +/** Schema for tool listing options */ +export declare const ToolListingOptionsSchema: z.ZodObject<{ + output: z.ZodDefault; +}, z.core.$strip>; diff --git a/packages/ai-tools/dist/zod_schemas.js b/packages/ai-tools/dist/zod_schemas.js index 8eb2ec4e..1cdf94e9 100644 --- a/packages/ai-tools/dist/zod_schemas.js +++ b/packages/ai-tools/dist/zod_schemas.js @@ -1,62 +1,62 @@ -import { z } from 'zod'; -/** Schema for listing files in a directory */ -export const FileListingOptionsSchema = z.object({ - directory: z.string().describe('Directory path to list files from'), - pattern: z.string().optional().describe('Glob pattern for filtering files') -}).describe('IFileListingOptions'); -/** Schema for file removal operations */ -export const FileRemovalOptionsSchema = z.object({ - path: z.string().describe('Path of the file to remove') -}).describe('IFileRemovalOptions'); -/** Schema for git commit operations */ -export const GitCommitSchema = z.object({ - files: z.array(z.string()).describe('Files to commit'), - message: z.string().describe('Commit message') -}).describe('IGitCommitOptions'); -/** Schema for git revert operations */ -export const GitRevertSchema = z.object({ - files: z.array(z.string()).describe('Files to revert') -}).describe('IGitRevertOptions'); -/** Schema for git version switch operations */ -export const GitSwitchVersionSchema = z.object({ - branch: z.string().describe('Branch name to switch to'), - remote: z.string().default('origin').describe('Remote name') -}).describe('IGitSwitchVersionOptions'); -/** Schema for git raw file retrieval */ -export const GitRawFileSchema = z.object({ - url: z.string().optional().describe('Full GitHub raw URL'), - repo: z.string().optional().describe('Repository in format owner/repo'), - path: z.string().optional().describe('File path within repository') -}).refine(data => (data.url) || (data.repo && data.path), 'Either url or both repo and path must be provided').describe('IGitRawFileOptions'); -/** Schema for npm run command */ -export const NpmRunSchema = z.object({ - command: z.string().describe('Command to run (e.g. install, test, etc)'), - args: z.array(z.string()).optional().describe('Additional arguments for the command') -}).describe('INpmRunOptions'); -/** Schema for terminal command execution */ -export const TerminalCommandSchema = z.object({ - command: z.string().describe('Command to execute'), - args: z.array(z.string()).optional().describe('Command arguments'), - cwd: z.string().optional().describe('Working directory for command execution'), - background: z.boolean().optional().describe('Run command in background (non-blocking)'), - window: z.boolean().optional().describe('Open command in new terminal window'), - detached: z.boolean().optional().describe('Run process detached from parent') -}).describe('ITerminalCommandOptions'); -/** Schema for tool invocation parameters */ -export const InvokeToolSchema = z.object({ - tools: z.string().describe('Tool category to use (fs, npm, git, terminal)'), - function: z.string().describe('Function name to invoke'), - target: z.string().default(process.cwd()).describe('Target directory'), - params: z.string().optional().describe('JSON string of parameters'), - output: z.string().optional().describe('Path to write the output to'), - env_key: z.string().optional().describe('Environment configuration key') -}).describe('IInvokeToolOptions'); -/** Schema for list command options */ -export const ListCommandSchema = z.object({ - output: z.string().default("./llm-tools.json").describe('Output file path for tools list') -}).describe('IListCommandOptions'); -/** Schema for tool listing options */ -export const ToolListingOptionsSchema = z.object({ - output: z.string().default('./llm-tools.json').describe('Path to write the output to') -}).describe('IToolListingOptions'); +import { z } from 'zod'; +/** Schema for listing files in a directory */ +export const FileListingOptionsSchema = z.object({ + directory: z.string().describe('Directory path to list files from'), + pattern: z.string().optional().describe('Glob pattern for filtering files') +}).describe('IFileListingOptions'); +/** Schema for file removal operations */ +export const FileRemovalOptionsSchema = z.object({ + path: z.string().describe('Path of the file to remove') +}).describe('IFileRemovalOptions'); +/** Schema for git commit operations */ +export const GitCommitSchema = z.object({ + files: z.array(z.string()).describe('Files to commit'), + message: z.string().describe('Commit message') +}).describe('IGitCommitOptions'); +/** Schema for git revert operations */ +export const GitRevertSchema = z.object({ + files: z.array(z.string()).describe('Files to revert') +}).describe('IGitRevertOptions'); +/** Schema for git version switch operations */ +export const GitSwitchVersionSchema = z.object({ + branch: z.string().describe('Branch name to switch to'), + remote: z.string().default('origin').describe('Remote name') +}).describe('IGitSwitchVersionOptions'); +/** Schema for git raw file retrieval */ +export const GitRawFileSchema = z.object({ + url: z.string().optional().describe('Full GitHub raw URL'), + repo: z.string().optional().describe('Repository in format owner/repo'), + path: z.string().optional().describe('File path within repository') +}).refine(data => (data.url) || (data.repo && data.path), 'Either url or both repo and path must be provided').describe('IGitRawFileOptions'); +/** Schema for npm run command */ +export const NpmRunSchema = z.object({ + command: z.string().describe('Command to run (e.g. install, test, etc)'), + args: z.array(z.string()).optional().describe('Additional arguments for the command') +}).describe('INpmRunOptions'); +/** Schema for terminal command execution */ +export const TerminalCommandSchema = z.object({ + command: z.string().describe('Command to execute'), + args: z.array(z.string()).optional().describe('Command arguments'), + cwd: z.string().optional().describe('Working directory for command execution'), + background: z.boolean().optional().describe('Run command in background (non-blocking)'), + window: z.boolean().optional().describe('Open command in new terminal window'), + detached: z.boolean().optional().describe('Run process detached from parent') +}).describe('ITerminalCommandOptions'); +/** Schema for tool invocation parameters */ +export const InvokeToolSchema = z.object({ + tools: z.string().describe('Tool category to use (fs, npm, git, terminal)'), + function: z.string().describe('Function name to invoke'), + target: z.string().default(process.cwd()).describe('Target directory'), + params: z.string().optional().describe('JSON string of parameters'), + output: z.string().optional().describe('Path to write the output to'), + env_key: z.string().optional().describe('Environment configuration key') +}).describe('IInvokeToolOptions'); +/** Schema for list command options */ +export const ListCommandSchema = z.object({ + output: z.string().default("./llm-tools.json").describe('Output file path for tools list') +}).describe('IListCommandOptions'); +/** Schema for tool listing options */ +export const ToolListingOptionsSchema = z.object({ + output: z.string().default('./llm-tools.json').describe('Path to write the output to') +}).describe('IToolListingOptions'); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9kX3NjaGVtYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvem9kX3NjaGVtYXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV4Qiw4Q0FBOEM7QUFDOUMsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUM3QyxTQUFTLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxtQ0FBbUMsQ0FBQztJQUNuRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxrQ0FBa0MsQ0FBQztDQUM5RSxDQUFDLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLENBQUE7QUFFbEMseUNBQXlDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0MsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUM7Q0FDMUQsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBRW5DLHVDQUF1QztBQUN2QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNwQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUM7SUFDdEQsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7Q0FDakQsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBRWpDLHVDQUF1QztBQUN2QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNw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 \ No newline at end of file diff --git a/packages/ai-tools/dist/zod_types.d.ts b/packages/ai-tools/dist/zod_types.d.ts index f1a5dae6..ba983dc7 100644 --- a/packages/ai-tools/dist/zod_types.d.ts +++ b/packages/ai-tools/dist/zod_types.d.ts @@ -1,353 +1,68 @@ -export interface IKBotOptions { - /** Target directory */ - path?: string; - /** The prompt. Supports file paths and environment variables. */ - prompt?: string; - /** Optional output path for modified files (Tool mode only) */ - output?: string | undefined; - /** Optional destination path for the result, will substitute ${MODEL_NAME} and ${ROUTER} in the path. Optional, used for "completion" mode */ - dst?: string | undefined; - /** Iterate over items, supported: GLOB | Path to JSON File | array of strings (comma separated). To test different models, use --each="gpt-3.5-turbo,gpt-4o", the actual string will exposed as variable `ITEM`, eg: --dst="${ITEM}-output.md" */ - each?: string | undefined; - /** Disable tools categories, eg: --disable=fs,git,interact,terminal,search,web,email,user */ - disable?: string[]; - /** List of specific tools to disable */ - disableTools?: string[]; - /** List of tools to use. Can be built-in tool names or paths to custom tool files. Default: fs,git,interact,terminal,search,web,email,user */ - tools?: (string[] | string); - /** Comma separated glob patterns or paths, eg --include=src/*.tsx,src/*.ts --include=package.json */ - include?: string[] | undefined; - /** Explicit API key to use */ - api_key?: string | undefined; - /** AI model to use for processing. Available models: -  -  OpenRouter models: -  - 01-ai/yi-large | paid - aetherwiing/mn-starcannon-12b | paid - ai21/jamba-1-5-large | paid - ai21/jamba-1-5-mini | paid - ai21/jamba-instruct | paid - aion-labs/aion-1.0 | paid - aion-labs/aion-1.0-mini | paid - aion-labs/aion-rp-llama-3.1-8b | paid - jondurbin/airoboros-l2-70b | paid - amazon/nova-lite-v1 | paid - amazon/nova-micro-v1 | paid - amazon/nova-pro-v1 | paid - anthropic/claude-3-haiku | paid - anthropic/claude-3-haiku:beta | paid - anthropic/claude-3-opus | paid - anthropic/claude-3-opus:beta | paid - anthropic/claude-3-sonnet | paid - anthropic/claude-3-sonnet:beta | paid - anthropic/claude-3.5-haiku | paid - anthropic/claude-3.5-haiku-20241022 | paid - anthropic/claude-3.5-haiku-20241022:beta | paid - anthropic/claude-3.5-haiku:beta | paid - anthropic/claude-3.5-sonnet | paid - anthropic/claude-3.5-sonnet-20240620 | paid - anthropic/claude-3.5-sonnet-20240620:beta | paid - anthropic/claude-3.5-sonnet:beta | paid - anthropic/claude-2 | paid - anthropic/claude-2:beta | paid - anthropic/claude-2.0 | paid - anthropic/claude-2.0:beta | paid - anthropic/claude-2.1 | paid - anthropic/claude-2.1:beta | paid - openrouter/auto | paid - cohere/command | paid - cohere/command-r | paid - cohere/command-r-03-2024 | paid - cohere/command-r-08-2024 | paid - cohere/command-r-plus | paid - cohere/command-r-plus-04-2024 | paid - cohere/command-r-plus-08-2024 | paid - cohere/command-r7b-12-2024 | paid - databricks/dbrx-instruct | paid - deepseek/deepseek-chat-v2.5 | paid - deepseek/deepseek-chat | paid - deepseek/deepseek-chat:free | free - deepseek/deepseek-r1 | paid - deepseek/deepseek-r1:free | free - deepseek/deepseek-r1-distill-llama-70b | paid - deepseek/deepseek-r1-distill-llama-70b:free | free - deepseek/deepseek-r1-distill-llama-8b | paid - deepseek/deepseek-r1-distill-qwen-1.5b | paid - deepseek/deepseek-r1-distill-qwen-14b | paid - deepseek/deepseek-r1-distill-qwen-32b | paid - cognitivecomputations/dolphin-mixtral-8x7b | paid - cognitivecomputations/dolphin-mixtral-8x22b | paid - eva-unit-01/eva-llama-3.33-70b | paid - eva-unit-01/eva-qwen-2.5-32b | paid - eva-unit-01/eva-qwen-2.5-72b | paid - sao10k/fimbulvetr-11b-v2 | paid - alpindale/goliath-120b | paid - google/gemini-2.0-flash-thinking-exp-1219:free | free - google/gemini-2.0-flash-thinking-exp:free | free - google/gemini-exp-1206:free | free - google/gemini-flash-1.5 | paid - google/gemini-flash-1.5-8b | paid - google/gemini-flash-1.5-8b-exp | paid - google/gemini-2.0-flash-001 | paid - google/gemini-2.0-flash-exp:free | free - google/gemini-2.0-flash-lite-preview-02-05:free | free - google/gemini-pro | paid - google/gemini-pro-1.5 | paid - google/gemini-2.0-pro-exp-02-05:free | free - google/gemini-pro-vision | paid - google/gemma-2-27b-it | paid - google/gemma-2-9b-it | paid - google/gemma-2-9b-it:free | free - google/gemma-7b-it | paid - google/learnlm-1.5-pro-experimental:free | free - google/palm-2-chat-bison | paid - google/palm-2-chat-bison-32k | paid - google/palm-2-codechat-bison | paid - google/palm-2-codechat-bison-32k | paid - huggingfaceh4/zephyr-7b-beta:free | free - infermatic/mn-inferor-12b | paid - inflection/inflection-3-pi | paid - inflection/inflection-3-productivity | paid - liquid/lfm-3b | paid - liquid/lfm-40b | paid - liquid/lfm-7b | paid - allenai/llama-3.1-tulu-3-405b | paid - alpindale/magnum-72b | paid - anthracite-org/magnum-v2-72b | paid - anthracite-org/magnum-v4-72b | paid - mancer/weaver | paid - meta-llama/llama-2-13b-chat | paid - meta-llama/llama-2-70b-chat | paid - meta-llama/llama-3-70b-instruct | paid - meta-llama/llama-3-8b-instruct | paid - meta-llama/llama-3-8b-instruct:free | free - meta-llama/llama-3.1-405b | paid - meta-llama/llama-3.1-405b-instruct | paid - meta-llama/llama-3.1-70b-instruct | paid - meta-llama/llama-3.1-8b-instruct | paid - meta-llama/llama-3.2-11b-vision-instruct | paid - meta-llama/llama-3.2-11b-vision-instruct:free | free - meta-llama/llama-3.2-1b-instruct | paid - meta-llama/llama-3.2-3b-instruct | paid - meta-llama/llama-3.2-90b-vision-instruct | paid - meta-llama/llama-3.3-70b-instruct | paid - meta-llama/llama-3.3-70b-instruct:free | free - meta-llama/llama-guard-2-8b | paid - microsoft/phi-4 | paid - microsoft/phi-3-medium-128k-instruct | paid - microsoft/phi-3-medium-128k-instruct:free | free - microsoft/phi-3-mini-128k-instruct | paid - microsoft/phi-3-mini-128k-instruct:free | free - microsoft/phi-3.5-mini-128k-instruct | paid - sophosympatheia/midnight-rose-70b | paid - minimax/minimax-01 | paid - mistralai/mistral-large | paid - mistralai/mistral-large-2407 | paid - mistralai/mistral-large-2411 | paid - mistralai/mistral-medium | paid - nothingiisreal/mn-celeste-12b | paid - mistralai/mistral-small | paid - mistralai/mistral-tiny | paid - mistralai/codestral-2501 | paid - mistralai/codestral-mamba | paid - mistralai/ministral-3b | paid - mistralai/ministral-8b | paid - mistralai/mistral-7b-instruct | paid - mistralai/mistral-7b-instruct:free | free - mistralai/mistral-7b-instruct-v0.1 | paid - mistralai/mistral-7b-instruct-v0.3 | paid - mistralai/mistral-nemo | paid - mistralai/mistral-small-24b-instruct-2501 | paid - mistralai/mixtral-8x22b-instruct | paid - mistralai/mixtral-8x7b | paid - mistralai/mixtral-8x7b-instruct | paid - mistralai/pixtral-12b | paid - mistralai/pixtral-large-2411 | paid - gryphe/mythomax-l2-13b | paid - gryphe/mythomax-l2-13b:free | free - neversleep/llama-3-lumimaid-70b | paid - neversleep/llama-3-lumimaid-8b | paid - neversleep/llama-3-lumimaid-8b:extended | paid - neversleep/llama-3.1-lumimaid-70b | paid - neversleep/llama-3.1-lumimaid-8b | paid - neversleep/noromaid-20b | paid - nousresearch/nous-hermes-llama2-13b | paid - nousresearch/nous-hermes-2-mixtral-8x7b-dpo | paid - nousresearch/hermes-3-llama-3.1-405b | paid - nousresearch/hermes-3-llama-3.1-70b | paid - nousresearch/hermes-2-pro-llama-3-8b | paid - nvidia/llama-3.1-nemotron-70b-instruct | paid - nvidia/llama-3.1-nemotron-70b-instruct:free | free - openai/chatgpt-4o-latest | paid - openai/gpt-3.5-turbo | paid - openai/gpt-3.5-turbo-0613 | paid - openai/gpt-3.5-turbo-16k | paid - openai/gpt-3.5-turbo-0125 | paid - openai/gpt-3.5-turbo-1106 | paid - openai/gpt-3.5-turbo-instruct | paid - openai/gpt-4 | paid - openai/gpt-4-0314 | paid - openai/gpt-4-32k | paid - openai/gpt-4-32k-0314 | paid - openai/gpt-4-turbo | paid - openai/gpt-4-1106-preview | paid - openai/gpt-4-turbo-preview | paid - openai/gpt-4o | paid - openai/gpt-4o-2024-05-13 | paid - openai/gpt-4o-2024-08-06 | paid - openai/gpt-4o-2024-11-20 | paid - openai/gpt-4o:extended | paid - openai/gpt-4o-mini | paid - openai/gpt-4o-mini-2024-07-18 | paid - openai/o1 | paid - openai/o1-mini | paid - openai/o1-mini-2024-09-12 | paid - openai/o1-preview | paid - openai/o1-preview-2024-09-12 | paid - openai/o3-mini | paid - openchat/openchat-7b | paid - openchat/openchat-7b:free | free - teknium/openhermes-2.5-mistral-7b | paid - perplexity/llama-3.1-sonar-huge-128k-online | paid - perplexity/llama-3.1-sonar-large-128k-chat | paid - perplexity/llama-3.1-sonar-large-128k-online | paid - perplexity/llama-3.1-sonar-small-128k-chat | paid - perplexity/llama-3.1-sonar-small-128k-online | paid - perplexity/sonar | paid - perplexity/sonar-reasoning | paid - pygmalionai/mythalion-13b | paid - qwen/qwen-2-72b-instruct | paid - qwen/qwen-2-7b-instruct | paid - qwen/qwen-2-7b-instruct:free | free - qwen/qvq-72b-preview | paid - qwen/qwen-vl-plus:free | free - qwen/qwen-max | paid - qwen/qwen-plus | paid - qwen/qwen-turbo | paid - qwen/qwen2.5-vl-72b-instruct:free | free - qwen/qwq-32b-preview | paid - qwen/qwen-2-vl-72b-instruct | paid - qwen/qwen-2-vl-7b-instruct | paid - qwen/qwen-2.5-72b-instruct | paid - qwen/qwen-2.5-7b-instruct | paid - qwen/qwen-2.5-coder-32b-instruct | paid - undi95/remm-slerp-l2-13b | paid - thedrummer/rocinante-12b | paid - sophosympatheia/rogue-rose-103b-v0.2:free | free - sao10k/l3-lunaris-8b | paid - sao10k/l3-euryale-70b | paid - sao10k/l3.1-70b-hanami-x1 | paid - sao10k/l3.1-euryale-70b | paid - sao10k/l3.3-euryale-70b | paid - raifle/sorcererlm-8x22b | paid - undi95/toppy-m-7b | paid - undi95/toppy-m-7b:free | free - thedrummer/unslopnemo-12b | paid - microsoft/wizardlm-2-7b | paid - microsoft/wizardlm-2-8x22b | paid - x-ai/grok-2-1212 | paid - x-ai/grok-2-vision-1212 | paid - x-ai/grok-beta | paid - x-ai/grok-vision-beta | paid - xwin-lm/xwin-lm-70b | paid -  -  OpenAI models: -  - babbage-002 - chatgpt-4o-latest - dall-e-2 - dall-e-3 - davinci-002 - gpt-3.5-turbo - gpt-3.5-turbo-0125 - gpt-3.5-turbo-1106 - gpt-3.5-turbo-16k - gpt-3.5-turbo-instruct - gpt-3.5-turbo-instruct-0914 - gpt-4 - gpt-4-0125-preview - gpt-4-0613 - gpt-4-1106-preview - gpt-4-turbo - gpt-4-turbo-2024-04-09 - gpt-4-turbo-preview - gpt-4o - gpt-4o-2024-05-13 - gpt-4o-2024-08-06 - gpt-4o-2024-11-20 - gpt-4o-audio-preview - gpt-4o-audio-preview-2024-10-01 - gpt-4o-audio-preview-2024-12-17 - gpt-4o-mini - gpt-4o-mini-2024-07-18 - gpt-4o-mini-audio-preview - gpt-4o-mini-audio-preview-2024-12-17 - gpt-4o-mini-realtime-preview - gpt-4o-mini-realtime-preview-2024-12-17 - gpt-4o-realtime-preview - gpt-4o-realtime-preview-2024-10-01 - gpt-4o-realtime-preview-2024-12-17 - o1-mini - o1-mini-2024-09-12 - o1-preview - o1-preview-2024-09-12 - omni-moderation-2024-09-26 - omni-moderation-latest - text-embedding-3-large - text-embedding-3-small - text-embedding-ada-002 - tts-1 - tts-1-1106 - tts-1-hd - tts-1-hd-1106 - whisper-1 - ----- - -  -  Deepseek models: -  - deepseek-chat - deepseek-reasoner - ----- - */ - model?: string | undefined; - /** Router to use: openai, openrouter or deepseek */ - router?: string; - /** Chat completion mode: - completion, tools, assistant. - completion: no support for tools, please use --dst parameter to save the output. - tools: allows for tools to be used, eg 'save to ./output.md'. Not all models support this mode. - assistant: : allows documents (PDF, DOCX, ...) to be added but dont support tools. Use --dst to save the output. Supported files : - custom: custom mode - */ - mode?: "completion" | "tools" | "assistant" | "custom"; - /** Logging level for the application */ - logLevel?: number; - /** Path to profile for variables. Supports environment variables. */ - profile?: string | undefined; - /** Base URL for the API, set via --router or directly */ - baseURL?: string | undefined; - /** Path to JSON configuration file (API keys). Supports environment variables. */ - config?: string | undefined; - /** Create a script */ - dump?: string | undefined; - /** Path to preferences file, eg: location, your email address, gender, etc. Supports environment variables. */ - preferences?: string; - /** Logging directory */ - logs?: string; - /** Environment (in profile) */ - env?: string; - variables?: { - [x: string]: string; - }; - /** List of filters to apply to the output. - Used only in completion mode and a given output file specified with --dst. - It unwraps by default any code or data in Markdown. - Choices: - JSON,JSONUnescape,JSONPretty,AlphaSort,code,JSONParse,trim - */ - filters?: (string | ("JSON" | "JSONUnescape" | "JSONPretty" | "AlphaSort" | "code" | "JSONParse" | "trim")[] | string[] | ((...args_0: unknown[]) => unknown)[]); - /** Dry run - only write out parameters without making API calls */ - dry?: (boolean | string); -} +export interface IFileListingOptions { + /** Directory path to list files from */ + directory: string; + /** Glob pattern for filtering files */ + pattern?: string | undefined; +} +export interface IFileRemovalOptions { + /** Path of the file to remove */ + path: string; +} +export interface IGitCommitOptions { + /** Files to commit */ + files: string[]; + /** Commit message */ + message: string; +} +export interface IGitRevertOptions { + /** Files to revert */ + files: string[]; +} +export interface IGitSwitchVersionOptions { + /** Branch name to switch to */ + branch: string; + /** Remote name */ + remote: string; +} +export interface IInvokeToolOptions { + /** Tool category to use (fs, npm, git, terminal) */ + tools: string; + /** Function name to invoke */ + function: string; + /** Target directory */ + target: string; + /** JSON string of parameters */ + params?: string | undefined; + /** Path to write the output to */ + output?: string | undefined; + /** Environment configuration key */ + env_key?: string | undefined; +} +export interface IToolListingOptions { + /** Path to write the output to */ + output: string; +} +export interface ITerminalCommandOptions { + /** Command to execute */ + command: string; + /** Command arguments */ + args?: string[] | undefined; + /** Working directory for command execution */ + cwd?: string | undefined; + /** Run command in background (non-blocking) */ + background?: boolean | undefined; + /** Open command in new terminal window */ + window?: boolean | undefined; + /** Run process detached from parent */ + detached?: boolean | undefined; +} +export interface IListCommandOptions { + /** Output file path for tools list */ + output: string; +} +export interface INpmRunOptions { + /** Command to run (e.g. install, test, etc) */ + command: string; + /** Additional arguments for the command */ + args?: string[] | undefined; +} diff --git a/packages/ai-tools/dist/zod_types.js b/packages/ai-tools/dist/zod_types.js index 7b026b68..6a47fd2a 100644 --- a/packages/ai-tools/dist/zod_types.js +++ b/packages/ai-tools/dist/zod_types.js @@ -1,2 +1,2 @@ -export {}; +export {}; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9kX3R5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3pvZF90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0= \ No newline at end of file diff --git a/packages/ai-tools/package-lock.json b/packages/ai-tools/package-lock.json index 04291f5b..518fea8d 100644 --- a/packages/ai-tools/package-lock.json +++ b/packages/ai-tools/package-lock.json @@ -25,7 +25,6 @@ "marked": "^15.0.4", "mime-types": "^2.1.35", "nodemailer": "^7.0.13", - "openai": "^5.8.2", "p-map": "^7.0.3", "rotating-file-stream": "^3.2.6", "screenshot-desktop": "^1.15.0", @@ -37,8 +36,8 @@ "type-fest": "^4.30.2", "winston": "^3.17.0", "yargs": "^17.7.2", - "zod": "^3.24.3", - "zod-to-json-schema": "^3.24.1" + "zod": "^4.3.6", + "zod-to-json-schema": "^3.25.1" }, "bin": { "ai-tools": "main.js" @@ -46,15 +45,17 @@ "devDependencies": { "@types/jsdom": "^21.1.7", "@types/marked": "^6.0.0", - "@types/node": "^18.19.74", "@types/nodemailer": "^6.4.17", "@types/turndown": "^5.0.5", "@types/yargs": "^17.0.33", - "ts-node": "^10.9.2", - "typescript": "^4.9.5" + "tsx": "^4.21.0", + "typescript": "^5.9.3" }, "optionalDependencies": { "puppeteer": "^24.2.1" + }, + "peerDependencies": { + "openai": ">=4.0.0" } }, "../../node_modules/.pnpm/@types+node@22.10.9/node_modules/@types/node": { @@ -804,11 +805,11 @@ "p-throttle": "^4.1.1", "regedit": "^5.1.4", "tslog": "^3.3.3", - "tsup": "^2.0.3", + "tsup": "^8.5.1", "yargs": "^17.7.2", - "zod": "^3.24.3", - "zod-to-json-schema": "^3.24.5", - "zod-to-ts": "^1.2.0" + "zod": "^4.3.6", + "zod-to-json-schema": "^3.25.1", + "zod-to-ts": "^2.0.0" }, "bin": { "pm-cli": "dist/main.js" @@ -818,31 +819,10 @@ "typescript": "^5.7.3" } }, - "../commons/node_modules/@babel/code-frame": { - "version": "7.26.2", - "license": "MIT", - "optional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../commons/node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=6.9.0" - } - }, "../commons/node_modules/@esbuild/aix-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", - "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz", + "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==", "cpu": [ "ppc64" ], @@ -856,9 +836,9 @@ } }, "../commons/node_modules/@esbuild/android-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", - "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz", + "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==", "cpu": [ "arm" ], @@ -872,9 +852,9 @@ } }, "../commons/node_modules/@esbuild/android-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", - "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz", + "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==", "cpu": [ "arm64" ], @@ -888,9 +868,9 @@ } }, "../commons/node_modules/@esbuild/android-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", - "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz", + "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==", "cpu": [ "x64" ], @@ -904,9 +884,9 @@ } }, "../commons/node_modules/@esbuild/darwin-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", - "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz", + "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==", "cpu": [ "arm64" ], @@ -920,9 +900,9 @@ } }, "../commons/node_modules/@esbuild/darwin-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", - "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz", + "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==", "cpu": [ "x64" ], @@ -936,9 +916,9 @@ } }, "../commons/node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", - "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz", + "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==", "cpu": [ "arm64" ], @@ -952,9 +932,9 @@ } }, "../commons/node_modules/@esbuild/freebsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", - "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz", + "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==", "cpu": [ "x64" ], @@ -968,9 +948,9 @@ } }, "../commons/node_modules/@esbuild/linux-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", - "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz", + "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==", "cpu": [ "arm" ], @@ -984,9 +964,9 @@ } }, "../commons/node_modules/@esbuild/linux-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", - "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz", + "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==", "cpu": [ "arm64" ], @@ -1000,9 +980,9 @@ } }, "../commons/node_modules/@esbuild/linux-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", - "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz", + "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==", "cpu": [ "ia32" ], @@ -1016,9 +996,9 @@ } }, "../commons/node_modules/@esbuild/linux-loong64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", - "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz", + "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==", "cpu": [ "loong64" ], @@ -1032,9 +1012,9 @@ } }, "../commons/node_modules/@esbuild/linux-mips64el": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", - "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz", + "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==", "cpu": [ "mips64el" ], @@ -1048,9 +1028,9 @@ } }, "../commons/node_modules/@esbuild/linux-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", - "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz", + "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==", "cpu": [ "ppc64" ], @@ -1064,9 +1044,9 @@ } }, "../commons/node_modules/@esbuild/linux-riscv64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", - "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz", + "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==", "cpu": [ "riscv64" ], @@ -1080,9 +1060,9 @@ } }, "../commons/node_modules/@esbuild/linux-s390x": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", - "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz", + "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==", "cpu": [ "s390x" ], @@ -1096,9 +1076,9 @@ } }, "../commons/node_modules/@esbuild/linux-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", - "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz", + "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==", "cpu": [ "x64" ], @@ -1112,9 +1092,9 @@ } }, "../commons/node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", - "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz", + "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==", "cpu": [ "arm64" ], @@ -1128,9 +1108,9 @@ } }, "../commons/node_modules/@esbuild/netbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", - "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz", + "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==", "cpu": [ "x64" ], @@ -1144,9 +1124,9 @@ } }, "../commons/node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", - "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz", + "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==", "cpu": [ "arm64" ], @@ -1160,9 +1140,9 @@ } }, "../commons/node_modules/@esbuild/openbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", - "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz", + "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==", "cpu": [ "x64" ], @@ -1176,9 +1156,9 @@ } }, "../commons/node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", - "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz", + "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==", "cpu": [ "arm64" ], @@ -1192,9 +1172,9 @@ } }, "../commons/node_modules/@esbuild/sunos-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", - "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz", + "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==", "cpu": [ "x64" ], @@ -1208,9 +1188,9 @@ } }, "../commons/node_modules/@esbuild/win32-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", - "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz", + "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==", "cpu": [ "arm64" ], @@ -1224,9 +1204,9 @@ } }, "../commons/node_modules/@esbuild/win32-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", - "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz", + "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==", "cpu": [ "ia32" ], @@ -1240,9 +1220,9 @@ } }, "../commons/node_modules/@esbuild/win32-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", - "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz", + "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==", "cpu": [ "x64" ], @@ -1270,6 +1250,41 @@ "node": ">=12" } }, + "../commons/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "../commons/node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "../commons/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "../commons/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "../commons/node_modules/@jsep-plugin/assignment": { "version": "1.3.0", "license": "MIT", @@ -1310,23 +1325,341 @@ "resolved": "../typescript-config", "link": true }, - "../commons/node_modules/@rollup/pluginutils": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", - "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "../commons/node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", + "cpu": [ + "arm" + ], "license": "MIT", - "dependencies": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - } + "optional": true, + "os": [ + "android" + ] + }, + "../commons/node_modules/@rollup/rollup-android-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "../commons/node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "../commons/node_modules/@rollup/rollup-darwin-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "../commons/node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "../commons/node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "../commons/node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "../commons/node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "../commons/node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "../commons/node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "../commons/node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "../commons/node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "../commons/node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "../commons/node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "../commons/node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "../commons/node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "../commons/node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "../commons/node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "../commons/node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "../commons/node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "../commons/node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "../commons/node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "../commons/node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "../commons/node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "../commons/node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] }, "../commons/node_modules/@schemastore/package": { "version": "0.0.10", "license": "MIT" }, + "../commons/node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, "../commons/node_modules/@types/node": { "version": "22.13.4", "dev": true, @@ -1335,6 +1668,18 @@ "undici-types": "~6.20.0" } }, + "../commons/node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "../commons/node_modules/ansi-regex": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", @@ -1357,6 +1702,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "../commons/node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, "../commons/node_modules/argparse": { "version": "2.0.1", "license": "Python-2.0" @@ -1378,6 +1729,21 @@ "version": "1.1.2", "license": "MIT" }, + "../commons/node_modules/bundle-require": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz", + "integrity": "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==", + "license": "MIT", + "dependencies": { + "load-tsconfig": "^0.2.3" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "esbuild": ">=0.18" + } + }, "../commons/node_modules/cac": { "version": "6.7.14", "license": "MIT", @@ -1385,6 +1751,21 @@ "node": ">=8" } }, + "../commons/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "../commons/node_modules/cliui": { "version": "8.0.1", "license": "ISC", @@ -1472,6 +1853,30 @@ "version": "1.1.4", "license": "MIT" }, + "../commons/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "../commons/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "license": "MIT" + }, + "../commons/node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, "../commons/node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -1523,9 +1928,9 @@ } }, "../commons/node_modules/esbuild": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", - "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz", + "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==", "hasInstallScript": true, "license": "MIT", "peer": true, @@ -1536,32 +1941,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.2", - "@esbuild/android-arm": "0.27.2", - "@esbuild/android-arm64": "0.27.2", - "@esbuild/android-x64": "0.27.2", - "@esbuild/darwin-arm64": "0.27.2", - "@esbuild/darwin-x64": "0.27.2", - "@esbuild/freebsd-arm64": "0.27.2", - "@esbuild/freebsd-x64": "0.27.2", - "@esbuild/linux-arm": "0.27.2", - "@esbuild/linux-arm64": "0.27.2", - "@esbuild/linux-ia32": "0.27.2", - "@esbuild/linux-loong64": "0.27.2", - "@esbuild/linux-mips64el": "0.27.2", - "@esbuild/linux-ppc64": "0.27.2", - "@esbuild/linux-riscv64": "0.27.2", - "@esbuild/linux-s390x": "0.27.2", - "@esbuild/linux-x64": "0.27.2", - "@esbuild/netbsd-arm64": "0.27.2", - "@esbuild/netbsd-x64": "0.27.2", - "@esbuild/openbsd-arm64": "0.27.2", - "@esbuild/openbsd-x64": "0.27.2", - "@esbuild/openharmony-arm64": "0.27.2", - "@esbuild/sunos-x64": "0.27.2", - "@esbuild/win32-arm64": "0.27.2", - "@esbuild/win32-ia32": "0.27.2", - "@esbuild/win32-x64": "0.27.2" + "@esbuild/aix-ppc64": "0.27.4", + "@esbuild/android-arm": "0.27.4", + "@esbuild/android-arm64": "0.27.4", + "@esbuild/android-x64": "0.27.4", + "@esbuild/darwin-arm64": "0.27.4", + "@esbuild/darwin-x64": "0.27.4", + "@esbuild/freebsd-arm64": "0.27.4", + "@esbuild/freebsd-x64": "0.27.4", + "@esbuild/linux-arm": "0.27.4", + "@esbuild/linux-arm64": "0.27.4", + "@esbuild/linux-ia32": "0.27.4", + "@esbuild/linux-loong64": "0.27.4", + "@esbuild/linux-mips64el": "0.27.4", + "@esbuild/linux-ppc64": "0.27.4", + "@esbuild/linux-riscv64": "0.27.4", + "@esbuild/linux-s390x": "0.27.4", + "@esbuild/linux-x64": "0.27.4", + "@esbuild/netbsd-arm64": "0.27.4", + "@esbuild/netbsd-x64": "0.27.4", + "@esbuild/openbsd-arm64": "0.27.4", + "@esbuild/openbsd-x64": "0.27.4", + "@esbuild/openharmony-arm64": "0.27.4", + "@esbuild/sunos-x64": "0.27.4", + "@esbuild/win32-arm64": "0.27.4", + "@esbuild/win32-ia32": "0.27.4", + "@esbuild/win32-x64": "0.27.4" } }, "../commons/node_modules/escalade": { @@ -1571,11 +1976,33 @@ "node": ">=6" } }, - "../commons/node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "license": "MIT" + "../commons/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "../commons/node_modules/fix-dts-default-cjs-exports": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fix-dts-default-cjs-exports/-/fix-dts-default-cjs-exports-1.0.1.tgz", + "integrity": "sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==", + "license": "MIT", + "dependencies": { + "magic-string": "^0.30.17", + "mlly": "^1.7.4", + "rollup": "^4.34.8" + } }, "../commons/node_modules/foreground-child": { "version": "3.3.0", @@ -1591,6 +2018,20 @@ "url": "https://github.com/sponsors/isaacs" } }, + "../commons/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "../commons/node_modules/get-caller-file": { "version": "2.0.5", "license": "ISC", @@ -1661,17 +2102,14 @@ } }, "../commons/node_modules/joycon": { - "version": "2.2.5", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=10" } }, - "../commons/node_modules/js-tokens": { - "version": "4.0.0", - "license": "MIT", - "optional": true - }, "../commons/node_modules/js-yaml": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", @@ -1708,15 +2146,53 @@ "node": ">=18.0.0" } }, + "../commons/node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "../commons/node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, + "../commons/node_modules/load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, "../commons/node_modules/lru-cache": { "version": "10.4.3", "license": "ISC" }, + "../commons/node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, "../commons/node_modules/minimatch": { - "version": "9.0.5", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -1732,12 +2208,35 @@ "node": ">=16 || 14 >=14.17" } }, + "../commons/node_modules/mlly": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.1.tgz", + "integrity": "sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ==", + "license": "MIT", + "dependencies": { + "acorn": "^8.16.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.3" + } + }, "../commons/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "../commons/node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "../commons/node_modules/normalize-url": { "version": "8.0.1", "license": "MIT", @@ -1748,6 +2247,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "../commons/node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "../commons/node_modules/p-map": { "version": "7.0.3", "license": "MIT", @@ -1793,23 +2301,93 @@ "url": "https://github.com/sponsors/isaacs" } }, + "../commons/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "license": "MIT" + }, "../commons/node_modules/picocolors": { "version": "1.1.1", - "license": "ISC", - "optional": true + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" }, "../commons/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", + "peer": true, "engines": { - "node": ">=8.6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" } }, + "../commons/node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "../commons/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "../commons/node_modules/postcss-load-config": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, "../commons/node_modules/readable-stream": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", @@ -1822,6 +2400,19 @@ "string_decoder": "~0.10.x" } }, + "../commons/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "../commons/node_modules/regedit": { "version": "5.1.4", "resolved": "https://registry.npmjs.org/regedit/-/regedit-5.1.4.tgz", @@ -1841,37 +2432,59 @@ "node": ">=0.10.0" } }, - "../commons/node_modules/rollup": { - "version": "2.79.2", + "../commons/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "license": "MIT", - "peer": true, + "engines": { + "node": ">=8" + } + }, + "../commons/node_modules/rollup": { + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0", + "npm": ">=8.0.0" }, "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", "fsevents": "~2.3.2" } }, - "../commons/node_modules/rollup-plugin-esbuild": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-2.6.1.tgz", - "integrity": "sha512-hskMEQQ4Vxlyoeg1OWlFTwWHIhpNaw6q+diOT7p9pdkk34m9Mbk3aymS/JbTqLXy/AbJi22iuXrucknKpeczfg==", - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^4.1.0", - "joycon": "^2.2.5", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "esbuild": ">=0.7.0" - } - }, "../commons/node_modules/shebang-command": { "version": "2.0.0", "license": "MIT", @@ -2006,16 +2619,47 @@ "node": ">=8" } }, - "../commons/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "../commons/node_modules/sucrase": { + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", + "ts-interface-checker": "^0.1.9" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "../commons/node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "../commons/node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" } }, "../commons/node_modules/through2": { @@ -2028,6 +2672,43 @@ "xtend": ">=4.0.0 <4.1.0-0" } }, + "../commons/node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "license": "MIT" + }, + "../commons/node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "../commons/node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "../commons/node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "license": "Apache-2.0" + }, "../commons/node_modules/tslog": { "version": "3.3.4", "license": "MIT", @@ -2039,56 +2720,64 @@ } }, "../commons/node_modules/tsup": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tsup/-/tsup-2.1.0.tgz", - "integrity": "sha512-olm/SXqV58FUczleRXRuZiUB3odEbH+BH+AQGZgW8PgTkCKjN+MIvw7T6KewH6Y0guUFkJJw7M4q8EMYjaIioA==", + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.5.1.tgz", + "integrity": "sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing==", "license": "MIT", "dependencies": { - "cac": "^6.5.13", - "esbuild": "^0.6.3", - "joycon": "^2.2.5", - "rollup": "^2.21.0", - "rollup-plugin-dts": "^1.4.8", - "rollup-plugin-esbuild": "^2.4.1" + "bundle-require": "^5.1.0", + "cac": "^6.7.14", + "chokidar": "^4.0.3", + "consola": "^3.4.0", + "debug": "^4.4.0", + "esbuild": "^0.27.0", + "fix-dts-default-cjs-exports": "^1.0.0", + "joycon": "^3.1.1", + "picocolors": "^1.1.1", + "postcss-load-config": "^6.0.1", + "resolve-from": "^5.0.0", + "rollup": "^4.34.8", + "source-map": "^0.7.6", + "sucrase": "^3.35.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.11", + "tree-kill": "^1.2.2" }, "bin": { - "tsup": "dist/cli.js" - } - }, - "../commons/node_modules/tsup/node_modules/esbuild": { - "version": "0.6.34", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.6.34.tgz", - "integrity": "sha512-InRdL/Q96pUucPqovJzvuLhquZr6jOn81FDVwFjCKz1rYKIm9OdOC+7Fs4vr6x48vKBl5LzKgtjU39BUpO636A==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - } - }, - "../commons/node_modules/tsup/node_modules/rollup-plugin-dts": { - "version": "1.4.14", - "license": "LGPL-3.0", - "funding": { - "url": "https://github.com/sponsors/Swatinem" - }, - "optionalDependencies": { - "@babel/code-frame": "^7.10.4" - }, - "peerDependencies": { - "rollup": "^2.33.1", - "typescript": "^4.0.5" - } - }, - "../commons/node_modules/tsup/node_modules/typescript": { - "version": "4.9.5", - "license": "Apache-2.0", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "tsup": "dist/cli-default.js", + "tsup-node": "dist/cli-node.js" }, "engines": { - "node": ">=4.2.0" + "node": ">=18" + }, + "peerDependencies": { + "@microsoft/api-extractor": "^7.36.0", + "@swc/core": "^1", + "postcss": "^8.4.12", + "typescript": ">=4.5.0" + }, + "peerDependenciesMeta": { + "@microsoft/api-extractor": { + "optional": true + }, + "@swc/core": { + "optional": true + }, + "postcss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "../commons/node_modules/tsup/node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" } }, "../commons/node_modules/typescript": { @@ -2103,6 +2792,12 @@ "node": ">=14.17" } }, + "../commons/node_modules/ufo": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", + "license": "MIT" + }, "../commons/node_modules/undici-types": { "version": "6.20.0", "dev": true, @@ -2388,27 +3083,6 @@ "node": ">=12" } }, - "../fs/node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "../fs/node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "../fs/node_modules/@isaacs/cliui": { "version": "8.0.2", "license": "ISC", @@ -2748,10 +3422,12 @@ } }, "../fs/node_modules/glob/node_modules/minimatch": { - "version": "9.0.5", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -2835,20 +3511,41 @@ } }, "../fs/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "../fs/node_modules/minimatch/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "../fs/node_modules/minimatch/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "../fs/node_modules/minipass": { "version": "7.1.2", "license": "ISC", @@ -4015,9 +4712,9 @@ "link": true }, "../log/node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", - "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", "cpu": [ "arm" ], @@ -4028,9 +4725,9 @@ ] }, "../log/node_modules/@rollup/rollup-android-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", - "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", "cpu": [ "arm64" ], @@ -4041,9 +4738,9 @@ ] }, "../log/node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", - "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", "cpu": [ "arm64" ], @@ -4054,9 +4751,9 @@ ] }, "../log/node_modules/@rollup/rollup-darwin-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", - "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", "cpu": [ "x64" ], @@ -4067,9 +4764,9 @@ ] }, "../log/node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", - "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", "cpu": [ "arm64" ], @@ -4080,9 +4777,9 @@ ] }, "../log/node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", - "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", "cpu": [ "x64" ], @@ -4093,9 +4790,9 @@ ] }, "../log/node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", - "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", "cpu": [ "arm" ], @@ -4106,9 +4803,9 @@ ] }, "../log/node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", - "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", "cpu": [ "arm" ], @@ -4119,9 +4816,9 @@ ] }, "../log/node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", - "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", "cpu": [ "arm64" ], @@ -4132,9 +4829,9 @@ ] }, "../log/node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", - "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", "cpu": [ "arm64" ], @@ -4145,9 +4842,9 @@ ] }, "../log/node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", - "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", "cpu": [ "loong64" ], @@ -4158,9 +4855,9 @@ ] }, "../log/node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", - "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", "cpu": [ "loong64" ], @@ -4171,9 +4868,9 @@ ] }, "../log/node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", - "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", "cpu": [ "ppc64" ], @@ -4184,9 +4881,9 @@ ] }, "../log/node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", - "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", "cpu": [ "ppc64" ], @@ -4197,9 +4894,9 @@ ] }, "../log/node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", - "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", "cpu": [ "riscv64" ], @@ -4210,9 +4907,9 @@ ] }, "../log/node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", - "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", "cpu": [ "riscv64" ], @@ -4223,9 +4920,9 @@ ] }, "../log/node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", - "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", "cpu": [ "s390x" ], @@ -4236,9 +4933,9 @@ ] }, "../log/node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", - "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", "cpu": [ "x64" ], @@ -4249,9 +4946,9 @@ ] }, "../log/node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", - "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", "cpu": [ "x64" ], @@ -4262,9 +4959,9 @@ ] }, "../log/node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", - "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", "cpu": [ "x64" ], @@ -4275,9 +4972,9 @@ ] }, "../log/node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", - "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", "cpu": [ "arm64" ], @@ -4288,9 +4985,9 @@ ] }, "../log/node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", - "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", "cpu": [ "arm64" ], @@ -4301,9 +4998,9 @@ ] }, "../log/node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", - "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", "cpu": [ "ia32" ], @@ -4314,9 +5011,9 @@ ] }, "../log/node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", - "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", "cpu": [ "x64" ], @@ -4327,9 +5024,9 @@ ] }, "../log/node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", - "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", "cpu": [ "x64" ], @@ -4380,9 +5077,9 @@ } }, "../log/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -4911,9 +5608,9 @@ } }, "../log/node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, @@ -5161,9 +5858,9 @@ } }, "../log/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -5432,9 +6129,9 @@ } }, "../log/node_modules/rollup": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", - "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", "license": "MIT", "dependencies": { "@types/estree": "1.0.8" @@ -5447,31 +6144,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.57.1", - "@rollup/rollup-android-arm64": "4.57.1", - "@rollup/rollup-darwin-arm64": "4.57.1", - "@rollup/rollup-darwin-x64": "4.57.1", - "@rollup/rollup-freebsd-arm64": "4.57.1", - "@rollup/rollup-freebsd-x64": "4.57.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", - "@rollup/rollup-linux-arm-musleabihf": "4.57.1", - "@rollup/rollup-linux-arm64-gnu": "4.57.1", - "@rollup/rollup-linux-arm64-musl": "4.57.1", - "@rollup/rollup-linux-loong64-gnu": "4.57.1", - "@rollup/rollup-linux-loong64-musl": "4.57.1", - "@rollup/rollup-linux-ppc64-gnu": "4.57.1", - "@rollup/rollup-linux-ppc64-musl": "4.57.1", - "@rollup/rollup-linux-riscv64-gnu": "4.57.1", - "@rollup/rollup-linux-riscv64-musl": "4.57.1", - "@rollup/rollup-linux-s390x-gnu": "4.57.1", - "@rollup/rollup-linux-x64-gnu": "4.57.1", - "@rollup/rollup-linux-x64-musl": "4.57.1", - "@rollup/rollup-openbsd-x64": "4.57.1", - "@rollup/rollup-openharmony-arm64": "4.57.1", - "@rollup/rollup-win32-arm64-msvc": "4.57.1", - "@rollup/rollup-win32-ia32-msvc": "4.57.1", - "@rollup/rollup-win32-x64-gnu": "4.57.1", - "@rollup/rollup-win32-x64-msvc": "4.57.1", + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", "fsevents": "~2.3.2" } }, @@ -5806,17 +6503,6 @@ "node": ">=0.1.90" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@csstools/color-helpers": { "version": "5.0.1", "funding": [ @@ -5939,6 +6625,448 @@ "winston": "^3.0.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz", + "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz", + "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz", + "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz", + "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz", + "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz", + "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz", + "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz", + "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz", + "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz", + "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz", + "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz", + "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz", + "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz", + "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz", + "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz", + "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz", + "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz", + "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz", + "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz", + "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz", + "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz", + "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz", + "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz", + "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz", + "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz", + "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@inquirer/ansi": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", @@ -6269,27 +7397,6 @@ } } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -6336,28 +7443,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, "node_modules/@keyv/serialize": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.0.tgz", @@ -6420,26 +7505,6 @@ "license": "MIT", "optional": true }, - "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "dev": true, - "license": "MIT" - }, "node_modules/@types/jsdom": { "version": "21.1.7", "dev": true, @@ -6521,28 +7586,6 @@ "node": ">=6.5" } }, - "node_modules/acorn": { - "version": "8.14.0", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/agent-base": { "version": "7.1.3", "license": "MIT", @@ -6612,11 +7655,6 @@ "version": "1.1.4", "license": "MIT" }, - "node_modules/arg": { - "version": "4.1.3", - "dev": true, - "license": "MIT" - }, "node_modules/argparse": { "version": "2.0.1", "license": "Python-2.0", @@ -6642,13 +7680,13 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.4.tgz", - "integrity": "sha512-1wVkUaAO6WyaYtCkcYCOx12ZgpGf9Zif+qXa4n+oYzK558YryKqiL6UWwd5DqiH3VRW0GYhTZQ/vlgJrCoNQlg==", + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz", + "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", "proxy-from-env": "^1.1.0" } }, @@ -6716,7 +7754,9 @@ } }, "node_modules/basic-ftp": { - "version": "5.0.5", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.2.0.tgz", + "integrity": "sha512-VoMINM2rqJwJgfdHq6RiUudKt2BV+FY5ZFezP/ypmwayk68+NzzAQy4XXLlqsGD4MCzq3DrmNFD/uUmBJuGoXw==", "license": "MIT", "optional": true, "engines": { @@ -6820,6 +7860,16 @@ "devtools-protocol": "*" } }, + "node_modules/chromium-bidi/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "optional": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/cli-width": { "version": "4.1.0", "license": "ISC", @@ -6968,11 +8018,6 @@ } } }, - "node_modules/create-require": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -7084,16 +8129,6 @@ "node": ">=0.4.0" } }, - "node_modules/diff": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", - "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/dom-serializer": { "version": "2.0.0", "license": "MIT", @@ -7251,6 +8286,48 @@ "node": ">= 0.4" } }, + "node_modules/esbuild": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz", + "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.4", + "@esbuild/android-arm": "0.27.4", + "@esbuild/android-arm64": "0.27.4", + "@esbuild/android-x64": "0.27.4", + "@esbuild/darwin-arm64": "0.27.4", + "@esbuild/darwin-x64": "0.27.4", + "@esbuild/freebsd-arm64": "0.27.4", + "@esbuild/freebsd-x64": "0.27.4", + "@esbuild/linux-arm": "0.27.4", + "@esbuild/linux-arm64": "0.27.4", + "@esbuild/linux-ia32": "0.27.4", + "@esbuild/linux-loong64": "0.27.4", + "@esbuild/linux-mips64el": "0.27.4", + "@esbuild/linux-ppc64": "0.27.4", + "@esbuild/linux-riscv64": "0.27.4", + "@esbuild/linux-s390x": "0.27.4", + "@esbuild/linux-x64": "0.27.4", + "@esbuild/netbsd-arm64": "0.27.4", + "@esbuild/netbsd-x64": "0.27.4", + "@esbuild/openbsd-arm64": "0.27.4", + "@esbuild/openbsd-x64": "0.27.4", + "@esbuild/openharmony-arm64": "0.27.4", + "@esbuild/sunos-x64": "0.27.4", + "@esbuild/win32-arm64": "0.27.4", + "@esbuild/win32-ia32": "0.27.4", + "@esbuild/win32-x64": "0.27.4" + } + }, "node_modules/escalade": { "version": "3.2.0", "license": "MIT", @@ -7371,7 +8448,9 @@ "license": "MIT" }, "node_modules/follow-redirects": { - "version": "1.15.9", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "funding": [ { "type": "individual", @@ -7435,6 +8514,21 @@ "version": "1.0.0", "license": "ISC" }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "license": "MIT", @@ -7496,6 +8590,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-tsconfig": { + "version": "4.13.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", + "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/get-uri": { "version": "6.0.4", "license": "MIT", @@ -7532,16 +8639,37 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", - "license": "BlueOak-1.0.0", + "node_modules/glob/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "license": "MIT", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "balanced-match": "^4.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -7907,11 +9035,6 @@ "version": "10.4.3", "license": "ISC" }, - "node_modules/make-error": { - "version": "1.3.6", - "dev": true, - "license": "ISC" - }, "node_modules/marked": { "version": "15.0.7", "license": "MIT", @@ -7947,7 +9070,9 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -8076,16 +9201,17 @@ } }, "node_modules/openai": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/openai/-/openai-5.8.2.tgz", - "integrity": "sha512-8C+nzoHYgyYOXhHGN6r0fcb4SznuEn1R7YZMvlqDbnCuE0FM2mm3T1HiYW6WIcMS/F1Of2up/cSPjLPaWt0X9Q==", + "version": "6.32.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-6.32.0.tgz", + "integrity": "sha512-j3k+BjydAf8yQlcOI7WUQMQTbbF5GEIMAE2iZYCOzwwB3S2pCheaWYp+XZRNAch4jWVc52PMDGRRjutao3lLCg==", "license": "Apache-2.0", + "peer": true, "bin": { "openai": "bin/cli" }, "peerDependencies": { "ws": "^8.18.0", - "zod": "^3.23.8" + "zod": "^3.25 || ^4.0" }, "peerDependenciesMeta": { "ws": { @@ -8418,6 +9544,16 @@ "node": ">=4" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/rotating-file-stream": { "version": "3.2.6", "license": "MIT", @@ -8570,12 +9706,14 @@ } }, "node_modules/simple-git": { - "version": "3.27.0", + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.33.0.tgz", + "integrity": "sha512-D4V/tGC2sjsoNhoMybKyGoE+v8A60hRawKQ1iFRA1zwuDgGZCBJ4ByOzZ5J8joBbi4Oam0qiPH+GhzmSBwbJng==", "license": "MIT", "dependencies": { "@kwsites/file-exists": "^1.1.1", "@kwsites/promise-deferred": "^1.1.1", - "debug": "^4.3.5" + "debug": "^4.4.0" }, "funding": { "type": "github", @@ -8898,48 +10036,6 @@ "node": ">= 14.0.0" } }, - "node_modules/ts-node": { - "version": "10.9.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, "node_modules/tslib": { "version": "2.8.1", "license": "0BSD" @@ -8954,6 +10050,26 @@ "url": "https://github.com/fullstack-build/tslog?sponsor=1" } }, + "node_modules/tsx": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", + "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.27.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, "node_modules/turndown": { "version": "7.2.0", "license": "MIT", @@ -8977,7 +10093,9 @@ "optional": true }, "node_modules/typescript": { - "version": "4.9.5", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", "peer": true, @@ -8986,13 +10104,13 @@ "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/undici": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", - "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.24.1.tgz", + "integrity": "sha512-sC+b0tB1whOCzbtlx20fx3WgCXwkW627p4EA9uM+/tNNPkSS+eSEld6pAs9nDv7WbY1UUljBMYPtu9BCOrCWKA==", "license": "MIT", "engines": { "node": ">=18.17" @@ -9028,11 +10146,6 @@ "version": "1.0.2", "license": "MIT" }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "dev": true, - "license": "MIT" - }, "node_modules/w3c-xmlserializer": { "version": "5.0.0", "license": "MIT", @@ -9235,6 +10348,7 @@ "node_modules/ws": { "version": "8.18.0", "license": "MIT", + "peer": true, "engines": { "node": ">=10.0.0" }, @@ -9334,14 +10448,6 @@ "fd-slicer": "~1.1.0" } }, - "node_modules/yn": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/yocto-queue": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", @@ -9367,9 +10473,9 @@ } }, "node_modules/zod": { - "version": "3.24.3", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.3.tgz", - "integrity": "sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", "license": "MIT", "peer": true, "funding": { @@ -9377,10 +10483,12 @@ } }, "node_modules/zod-to-json-schema": { - "version": "3.24.2", + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.1.tgz", + "integrity": "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==", "license": "ISC", "peerDependencies": { - "zod": "^3.24.1" + "zod": "^3.25 || ^4" } } } diff --git a/packages/ai-tools/package.json b/packages/ai-tools/package.json index f566f336..adff6ed3 100644 --- a/packages/ai-tools/package.json +++ b/packages/ai-tools/package.json @@ -24,8 +24,8 @@ "build": "tsc -p . --declaration", "start": "node ./main.js", "dev": "tsc -p . --watch --declaration", - "types": "ts-node src/main.ts types", - "list": "ts-node src/main.ts list" + "types": "tsx src/main.ts types", + "list": "tsx src/main.ts list" }, "dependencies": { "@datalust/winston-seq": "^2.0.0", @@ -45,7 +45,6 @@ "marked": "^15.0.4", "mime-types": "^2.1.35", "nodemailer": "^7.0.13", - "openai": "^5.8.2", "p-map": "^7.0.3", "rotating-file-stream": "^3.2.6", "screenshot-desktop": "^1.15.0", @@ -57,18 +56,20 @@ "type-fest": "^4.30.2", "winston": "^3.17.0", "yargs": "^17.7.2", - "zod": "^3.24.3", - "zod-to-json-schema": "^3.24.1" + "zod": "^4.3.6", + "zod-to-json-schema": "^3.25.1" }, "devDependencies": { "@types/jsdom": "^21.1.7", "@types/marked": "^6.0.0", - "@types/node": "^18.19.74", "@types/nodemailer": "^6.4.17", "@types/turndown": "^5.0.5", "@types/yargs": "^17.0.33", - "ts-node": "^10.9.2", - "typescript": "^4.9.5" + "tsx": "^4.21.0", + "typescript": "^5.9.3" + }, + "peerDependencies": { + "openai": ">=4.0.0" }, "optionalDependencies": { "puppeteer": "^24.2.1" diff --git a/packages/ai-tools/src/lib/tools/index.ts b/packages/ai-tools/src/lib/tools/index.ts index 465eaa9f..bc5b02f8 100644 --- a/packages/ai-tools/src/lib/tools/index.ts +++ b/packages/ai-tools/src/lib/tools/index.ts @@ -1,7 +1,6 @@ import { RunnableToolFunctionWithParse } from 'openai/lib/RunnableFunction' import { JSONSchema } from 'openai/lib/jsonschema' import { ZodSchema, z } from 'zod' -import { zodToJsonSchema } from 'zod-to-json-schema' // see https://github.com/openai/openai-node/blob/master/examples/tool-call-helpers-zod.ts export const zodFunction =({ @@ -21,7 +20,7 @@ export const zodFunction =({ function: fn, name: name ?? fn.name, description: description, - parameters: zodToJsonSchema(schema) as JSONSchema, + parameters: z.toJSONSchema(schema) as JSONSchema, parse(input: string): T { const obj = JSON.parse(input) return schema.parse(obj) diff --git a/packages/ai-tools/src/types.ts b/packages/ai-tools/src/types.ts index 3e874f8f..9488d70d 100644 --- a/packages/ai-tools/src/types.ts +++ b/packages/ai-tools/src/types.ts @@ -26,4 +26,5 @@ export interface IKBotTask extends IKBotOptions collector?: ICollector onRun?:(ctx: IKBotTask) => Promise logger?: Logger + customTools?: any[] } \ No newline at end of file diff --git a/packages/ai-tools/src/types_kbot.ts b/packages/ai-tools/src/types_kbot.ts index 7cd3dd00..86ce411d 100644 --- a/packages/ai-tools/src/types_kbot.ts +++ b/packages/ai-tools/src/types_kbot.ts @@ -78,6 +78,7 @@ export interface IKBotOptions { openrouter/bodybuilder | paid bytedance-seed/seed-1.6 | paid bytedance-seed/seed-1.6-flash | paid + bytedance-seed/seed-2.0-lite | paid bytedance-seed/seed-2.0-mini | paid bytedance/ui-tars-1.5-7b | paid cohere/command-a | paid @@ -89,7 +90,6 @@ export interface IKBotOptions { deepseek/deepseek-chat-v3-0324 | paid deepseek/deepseek-chat-v3.1 | paid deepseek/deepseek-v3.1-terminus | paid - deepseek/deepseek-v3.1-terminus:exacto | paid deepseek/deepseek-v3.2 | paid deepseek/deepseek-v3.2-exp | paid deepseek/deepseek-v3.2-speciale | paid @@ -147,7 +147,6 @@ export interface IKBotOptions { meta-llama/llama-3-70b-instruct | paid meta-llama/llama-3-8b-instruct | paid meta-llama/llama-3.1-405b | paid - meta-llama/llama-3.1-405b-instruct | paid meta-llama/llama-3.1-70b-instruct | paid meta-llama/llama-3.1-8b-instruct | paid meta-llama/llama-3.2-11b-vision-instruct | paid @@ -159,13 +158,14 @@ export interface IKBotOptions { meta-llama/llama-4-maverick | paid meta-llama/llama-4-scout | paid meta-llama/llama-guard-4-12b | paid - meta-llama/llama-guard-2-8b | paid microsoft/phi-4 | paid minimax/minimax-m1 | paid minimax/minimax-m2 | paid minimax/minimax-m2-her | paid minimax/minimax-m2.1 | paid minimax/minimax-m2.5 | paid + minimax/minimax-m2.5:free | free + minimax/minimax-m2.7 | paid minimax/minimax-01 | paid mistralai/mistral-large | paid mistralai/mistral-large-2407 | paid @@ -186,6 +186,7 @@ export interface IKBotOptions { mistralai/mistral-small-3.1-24b-instruct | paid mistralai/mistral-small-3.1-24b-instruct:free | free mistralai/mistral-small-3.2-24b-instruct | paid + mistralai/mistral-small-2603 | paid mistralai/mistral-small-creative | paid mistralai/mixtral-8x22b-instruct | paid mistralai/mixtral-8x7b-instruct | paid @@ -194,15 +195,12 @@ export interface IKBotOptions { mistralai/voxtral-small-24b-2507 | paid moonshotai/kimi-k2 | paid moonshotai/kimi-k2-0905 | paid - moonshotai/kimi-k2-0905:exacto | paid moonshotai/kimi-k2-thinking | paid moonshotai/kimi-k2.5 | paid morph/morph-v3-fast | paid morph/morph-v3-large | paid gryphe/mythomax-l2-13b | paid - neversleep/llama-3.1-lumimaid-8b | paid nex-agi/deepseek-v3.1-nex-n1 | paid - neversleep/noromaid-20b | paid nousresearch/hermes-3-llama-3.1-405b | paid nousresearch/hermes-3-llama-3.1-405b:free | free nousresearch/hermes-3-llama-3.1-70b | paid @@ -213,6 +211,8 @@ export interface IKBotOptions { nvidia/llama-3.3-nemotron-super-49b-v1.5 | paid nvidia/nemotron-3-nano-30b-a3b | paid nvidia/nemotron-3-nano-30b-a3b:free | free + nvidia/nemotron-3-super-120b-a12b | paid + nvidia/nemotron-3-super-120b-a12b:free | free nvidia/nemotron-nano-12b-v2-vl | paid nvidia/nemotron-nano-12b-v2-vl:free | free nvidia/nemotron-nano-9b-v2 | paid @@ -261,9 +261,10 @@ export interface IKBotOptions { openai/gpt-5.3-chat | paid openai/gpt-5.3-codex | paid openai/gpt-5.4 | paid + openai/gpt-5.4-mini | paid + openai/gpt-5.4-nano | paid openai/gpt-5.4-pro | paid openai/gpt-oss-120b | paid - openai/gpt-oss-120b:exacto | paid openai/gpt-oss-120b:free | free openai/gpt-oss-20b | paid openai/gpt-oss-20b:free | free @@ -308,7 +309,6 @@ export interface IKBotOptions { qwen/qwen3-8b | paid qwen/qwen3-coder-30b-a3b-instruct | paid qwen/qwen3-coder | paid - qwen/qwen3-coder:exacto | paid qwen/qwen3-coder:free | free qwen/qwen3-coder-flash | paid qwen/qwen3-coder-next | paid @@ -330,6 +330,7 @@ export interface IKBotOptions { qwen/qwen3.5-122b-a10b | paid qwen/qwen3.5-27b | paid qwen/qwen3.5-35b-a3b | paid + qwen/qwen3.5-9b | paid qwen/qwen3.5-flash-02-23 | paid qwen/qwq-32b | paid qwen/qwen-2.5-72b-instruct | paid @@ -342,7 +343,6 @@ export interface IKBotOptions { sao10k/l3.1-70b-hanami-x1 | paid sao10k/l3.1-euryale-70b | paid sao10k/l3.3-euryale-70b | paid - raifle/sorcererlm-8x22b | paid stepfun/step-3.5-flash | paid stepfun/step-3.5-flash:free | free switchpoint/router | paid @@ -364,19 +364,23 @@ export interface IKBotOptions { x-ai/grok-4 | paid x-ai/grok-4-fast | paid x-ai/grok-4.1-fast | paid + x-ai/grok-4.20-beta | paid + x-ai/grok-4.20-multi-agent-beta | paid x-ai/grok-code-fast-1 | paid xiaomi/mimo-v2-flash | paid + xiaomi/mimo-v2-omni | paid + xiaomi/mimo-v2-pro | paid z-ai/glm-4-32b | paid z-ai/glm-4.5 | paid z-ai/glm-4.5-air | paid z-ai/glm-4.5-air:free | free z-ai/glm-4.5v | paid z-ai/glm-4.6 | paid - z-ai/glm-4.6:exacto | paid z-ai/glm-4.6v | paid z-ai/glm-4.7 | paid z-ai/glm-4.7-flash | paid z-ai/glm-5 | paid + z-ai/glm-5-turbo | paid   OpenAI models:  @@ -460,6 +464,10 @@ export interface IKBotOptions { gpt-5.3-codex gpt-5.4 gpt-5.4-2026-03-05 + gpt-5.4-mini + gpt-5.4-mini-2026-03-17 + gpt-5.4-nano + gpt-5.4-nano-2026-03-17 gpt-5.4-pro gpt-5.4-pro-2026-03-05 gpt-audio diff --git a/packages/ai-tools/src/zod_types.ts b/packages/ai-tools/src/zod_types.ts index 52b8440a..b2ea8a7a 100644 --- a/packages/ai-tools/src/zod_types.ts +++ b/packages/ai-tools/src/zod_types.ts @@ -1,353 +1,68 @@ -export interface IKBotOptions { +export interface IFileListingOptions { + /** Directory path to list files from */ + directory: string; + /** Glob pattern for filtering files */ + pattern?: string | undefined; +} +export interface IFileRemovalOptions { + /** Path of the file to remove */ + path: string; +} +export interface IGitCommitOptions { + /** Files to commit */ + files: string[]; + /** Commit message */ + message: string; +} +export interface IGitRevertOptions { + /** Files to revert */ + files: string[]; +} +export interface IGitSwitchVersionOptions { + /** Branch name to switch to */ + branch: string; + /** Remote name */ + remote: string; +} +export interface IInvokeToolOptions { + /** Tool category to use (fs, npm, git, terminal) */ + tools: string; + /** Function name to invoke */ + function: string; /** Target directory */ - path?: string; - /** The prompt. Supports file paths and environment variables. */ - prompt?: string; - /** Optional output path for modified files (Tool mode only) */ + target: string; + /** JSON string of parameters */ + params?: string | undefined; + /** Path to write the output to */ output?: string | undefined; - /** Optional destination path for the result, will substitute ${MODEL_NAME} and ${ROUTER} in the path. Optional, used for "completion" mode */ - dst?: string | undefined; - /** Iterate over items, supported: GLOB | Path to JSON File | array of strings (comma separated). To test different models, use --each="gpt-3.5-turbo,gpt-4o", the actual string will exposed as variable `ITEM`, eg: --dst="${ITEM}-output.md" */ - each?: string | undefined; - /** Disable tools categories, eg: --disable=fs,git,interact,terminal,search,web,email,user */ - disable?: string[]; - /** List of specific tools to disable */ - disableTools?: string[]; - /** List of tools to use. Can be built-in tool names or paths to custom tool files. Default: fs,git,interact,terminal,search,web,email,user */ - tools?: (string[] | string); - /** Comma separated glob patterns or paths, eg --include=src/*.tsx,src/*.ts --include=package.json */ - include?: string[] | undefined; - /** Explicit API key to use */ - api_key?: string | undefined; - /** AI model to use for processing. Available models: -  -  OpenRouter models: -  - 01-ai/yi-large | paid - aetherwiing/mn-starcannon-12b | paid - ai21/jamba-1-5-large | paid - ai21/jamba-1-5-mini | paid - ai21/jamba-instruct | paid - aion-labs/aion-1.0 | paid - aion-labs/aion-1.0-mini | paid - aion-labs/aion-rp-llama-3.1-8b | paid - jondurbin/airoboros-l2-70b | paid - amazon/nova-lite-v1 | paid - amazon/nova-micro-v1 | paid - amazon/nova-pro-v1 | paid - anthropic/claude-3-haiku | paid - anthropic/claude-3-haiku:beta | paid - anthropic/claude-3-opus | paid - anthropic/claude-3-opus:beta | paid - anthropic/claude-3-sonnet | paid - anthropic/claude-3-sonnet:beta | paid - anthropic/claude-3.5-haiku | paid - anthropic/claude-3.5-haiku-20241022 | paid - anthropic/claude-3.5-haiku-20241022:beta | paid - anthropic/claude-3.5-haiku:beta | paid - anthropic/claude-3.5-sonnet | paid - anthropic/claude-3.5-sonnet-20240620 | paid - anthropic/claude-3.5-sonnet-20240620:beta | paid - anthropic/claude-3.5-sonnet:beta | paid - anthropic/claude-2 | paid - anthropic/claude-2:beta | paid - anthropic/claude-2.0 | paid - anthropic/claude-2.0:beta | paid - anthropic/claude-2.1 | paid - anthropic/claude-2.1:beta | paid - openrouter/auto | paid - cohere/command | paid - cohere/command-r | paid - cohere/command-r-03-2024 | paid - cohere/command-r-08-2024 | paid - cohere/command-r-plus | paid - cohere/command-r-plus-04-2024 | paid - cohere/command-r-plus-08-2024 | paid - cohere/command-r7b-12-2024 | paid - databricks/dbrx-instruct | paid - deepseek/deepseek-chat-v2.5 | paid - deepseek/deepseek-chat | paid - deepseek/deepseek-chat:free | free - deepseek/deepseek-r1 | paid - deepseek/deepseek-r1:free | free - deepseek/deepseek-r1-distill-llama-70b | paid - deepseek/deepseek-r1-distill-llama-70b:free | free - deepseek/deepseek-r1-distill-llama-8b | paid - deepseek/deepseek-r1-distill-qwen-1.5b | paid - deepseek/deepseek-r1-distill-qwen-14b | paid - deepseek/deepseek-r1-distill-qwen-32b | paid - cognitivecomputations/dolphin-mixtral-8x7b | paid - cognitivecomputations/dolphin-mixtral-8x22b | paid - eva-unit-01/eva-llama-3.33-70b | paid - eva-unit-01/eva-qwen-2.5-32b | paid - eva-unit-01/eva-qwen-2.5-72b | paid - sao10k/fimbulvetr-11b-v2 | paid - alpindale/goliath-120b | paid - google/gemini-2.0-flash-thinking-exp-1219:free | free - google/gemini-2.0-flash-thinking-exp:free | free - google/gemini-exp-1206:free | free - google/gemini-flash-1.5 | paid - google/gemini-flash-1.5-8b | paid - google/gemini-flash-1.5-8b-exp | paid - google/gemini-2.0-flash-001 | paid - google/gemini-2.0-flash-exp:free | free - google/gemini-2.0-flash-lite-preview-02-05:free | free - google/gemini-pro | paid - google/gemini-pro-1.5 | paid - google/gemini-2.0-pro-exp-02-05:free | free - google/gemini-pro-vision | paid - google/gemma-2-27b-it | paid - google/gemma-2-9b-it | paid - google/gemma-2-9b-it:free | free - google/gemma-7b-it | paid - google/learnlm-1.5-pro-experimental:free | free - google/palm-2-chat-bison | paid - google/palm-2-chat-bison-32k | paid - google/palm-2-codechat-bison | paid - google/palm-2-codechat-bison-32k | paid - huggingfaceh4/zephyr-7b-beta:free | free - infermatic/mn-inferor-12b | paid - inflection/inflection-3-pi | paid - inflection/inflection-3-productivity | paid - liquid/lfm-3b | paid - liquid/lfm-40b | paid - liquid/lfm-7b | paid - allenai/llama-3.1-tulu-3-405b | paid - alpindale/magnum-72b | paid - anthracite-org/magnum-v2-72b | paid - anthracite-org/magnum-v4-72b | paid - mancer/weaver | paid - meta-llama/llama-2-13b-chat | paid - meta-llama/llama-2-70b-chat | paid - meta-llama/llama-3-70b-instruct | paid - meta-llama/llama-3-8b-instruct | paid - meta-llama/llama-3-8b-instruct:free | free - meta-llama/llama-3.1-405b | paid - meta-llama/llama-3.1-405b-instruct | paid - meta-llama/llama-3.1-70b-instruct | paid - meta-llama/llama-3.1-8b-instruct | paid - meta-llama/llama-3.2-11b-vision-instruct | paid - meta-llama/llama-3.2-11b-vision-instruct:free | free - meta-llama/llama-3.2-1b-instruct | paid - meta-llama/llama-3.2-3b-instruct | paid - meta-llama/llama-3.2-90b-vision-instruct | paid - meta-llama/llama-3.3-70b-instruct | paid - meta-llama/llama-3.3-70b-instruct:free | free - meta-llama/llama-guard-2-8b | paid - microsoft/phi-4 | paid - microsoft/phi-3-medium-128k-instruct | paid - microsoft/phi-3-medium-128k-instruct:free | free - microsoft/phi-3-mini-128k-instruct | paid - microsoft/phi-3-mini-128k-instruct:free | free - microsoft/phi-3.5-mini-128k-instruct | paid - sophosympatheia/midnight-rose-70b | paid - minimax/minimax-01 | paid - mistralai/mistral-large | paid - mistralai/mistral-large-2407 | paid - mistralai/mistral-large-2411 | paid - mistralai/mistral-medium | paid - nothingiisreal/mn-celeste-12b | paid - mistralai/mistral-small | paid - mistralai/mistral-tiny | paid - mistralai/codestral-2501 | paid - mistralai/codestral-mamba | paid - mistralai/ministral-3b | paid - mistralai/ministral-8b | paid - mistralai/mistral-7b-instruct | paid - mistralai/mistral-7b-instruct:free | free - mistralai/mistral-7b-instruct-v0.1 | paid - mistralai/mistral-7b-instruct-v0.3 | paid - mistralai/mistral-nemo | paid - mistralai/mistral-small-24b-instruct-2501 | paid - mistralai/mixtral-8x22b-instruct | paid - mistralai/mixtral-8x7b | paid - mistralai/mixtral-8x7b-instruct | paid - mistralai/pixtral-12b | paid - mistralai/pixtral-large-2411 | paid - gryphe/mythomax-l2-13b | paid - gryphe/mythomax-l2-13b:free | free - neversleep/llama-3-lumimaid-70b | paid - neversleep/llama-3-lumimaid-8b | paid - neversleep/llama-3-lumimaid-8b:extended | paid - neversleep/llama-3.1-lumimaid-70b | paid - neversleep/llama-3.1-lumimaid-8b | paid - neversleep/noromaid-20b | paid - nousresearch/nous-hermes-llama2-13b | paid - nousresearch/nous-hermes-2-mixtral-8x7b-dpo | paid - nousresearch/hermes-3-llama-3.1-405b | paid - nousresearch/hermes-3-llama-3.1-70b | paid - nousresearch/hermes-2-pro-llama-3-8b | paid - nvidia/llama-3.1-nemotron-70b-instruct | paid - nvidia/llama-3.1-nemotron-70b-instruct:free | free - openai/chatgpt-4o-latest | paid - openai/gpt-3.5-turbo | paid - openai/gpt-3.5-turbo-0613 | paid - openai/gpt-3.5-turbo-16k | paid - openai/gpt-3.5-turbo-0125 | paid - openai/gpt-3.5-turbo-1106 | paid - openai/gpt-3.5-turbo-instruct | paid - openai/gpt-4 | paid - openai/gpt-4-0314 | paid - openai/gpt-4-32k | paid - openai/gpt-4-32k-0314 | paid - openai/gpt-4-turbo | paid - openai/gpt-4-1106-preview | paid - openai/gpt-4-turbo-preview | paid - openai/gpt-4o | paid - openai/gpt-4o-2024-05-13 | paid - openai/gpt-4o-2024-08-06 | paid - openai/gpt-4o-2024-11-20 | paid - openai/gpt-4o:extended | paid - openai/gpt-4o-mini | paid - openai/gpt-4o-mini-2024-07-18 | paid - openai/o1 | paid - openai/o1-mini | paid - openai/o1-mini-2024-09-12 | paid - openai/o1-preview | paid - openai/o1-preview-2024-09-12 | paid - openai/o3-mini | paid - openchat/openchat-7b | paid - openchat/openchat-7b:free | free - teknium/openhermes-2.5-mistral-7b | paid - perplexity/llama-3.1-sonar-huge-128k-online | paid - perplexity/llama-3.1-sonar-large-128k-chat | paid - perplexity/llama-3.1-sonar-large-128k-online | paid - perplexity/llama-3.1-sonar-small-128k-chat | paid - perplexity/llama-3.1-sonar-small-128k-online | paid - perplexity/sonar | paid - perplexity/sonar-reasoning | paid - pygmalionai/mythalion-13b | paid - qwen/qwen-2-72b-instruct | paid - qwen/qwen-2-7b-instruct | paid - qwen/qwen-2-7b-instruct:free | free - qwen/qvq-72b-preview | paid - qwen/qwen-vl-plus:free | free - qwen/qwen-max | paid - qwen/qwen-plus | paid - qwen/qwen-turbo | paid - qwen/qwen2.5-vl-72b-instruct:free | free - qwen/qwq-32b-preview | paid - qwen/qwen-2-vl-72b-instruct | paid - qwen/qwen-2-vl-7b-instruct | paid - qwen/qwen-2.5-72b-instruct | paid - qwen/qwen-2.5-7b-instruct | paid - qwen/qwen-2.5-coder-32b-instruct | paid - undi95/remm-slerp-l2-13b | paid - thedrummer/rocinante-12b | paid - sophosympatheia/rogue-rose-103b-v0.2:free | free - sao10k/l3-lunaris-8b | paid - sao10k/l3-euryale-70b | paid - sao10k/l3.1-70b-hanami-x1 | paid - sao10k/l3.1-euryale-70b | paid - sao10k/l3.3-euryale-70b | paid - raifle/sorcererlm-8x22b | paid - undi95/toppy-m-7b | paid - undi95/toppy-m-7b:free | free - thedrummer/unslopnemo-12b | paid - microsoft/wizardlm-2-7b | paid - microsoft/wizardlm-2-8x22b | paid - x-ai/grok-2-1212 | paid - x-ai/grok-2-vision-1212 | paid - x-ai/grok-beta | paid - x-ai/grok-vision-beta | paid - xwin-lm/xwin-lm-70b | paid -  -  OpenAI models: -  - babbage-002 - chatgpt-4o-latest - dall-e-2 - dall-e-3 - davinci-002 - gpt-3.5-turbo - gpt-3.5-turbo-0125 - gpt-3.5-turbo-1106 - gpt-3.5-turbo-16k - gpt-3.5-turbo-instruct - gpt-3.5-turbo-instruct-0914 - gpt-4 - gpt-4-0125-preview - gpt-4-0613 - gpt-4-1106-preview - gpt-4-turbo - gpt-4-turbo-2024-04-09 - gpt-4-turbo-preview - gpt-4o - gpt-4o-2024-05-13 - gpt-4o-2024-08-06 - gpt-4o-2024-11-20 - gpt-4o-audio-preview - gpt-4o-audio-preview-2024-10-01 - gpt-4o-audio-preview-2024-12-17 - gpt-4o-mini - gpt-4o-mini-2024-07-18 - gpt-4o-mini-audio-preview - gpt-4o-mini-audio-preview-2024-12-17 - gpt-4o-mini-realtime-preview - gpt-4o-mini-realtime-preview-2024-12-17 - gpt-4o-realtime-preview - gpt-4o-realtime-preview-2024-10-01 - gpt-4o-realtime-preview-2024-12-17 - o1-mini - o1-mini-2024-09-12 - o1-preview - o1-preview-2024-09-12 - omni-moderation-2024-09-26 - omni-moderation-latest - text-embedding-3-large - text-embedding-3-small - text-embedding-ada-002 - tts-1 - tts-1-1106 - tts-1-hd - tts-1-hd-1106 - whisper-1 - ----- - -  -  Deepseek models: -  - deepseek-chat - deepseek-reasoner - ----- - */ - model?: string | undefined; - /** Router to use: openai, openrouter or deepseek */ - router?: string; - /** Chat completion mode: - completion, tools, assistant. - completion: no support for tools, please use --dst parameter to save the output. - tools: allows for tools to be used, eg 'save to ./output.md'. Not all models support this mode. - assistant: : allows documents (PDF, DOCX, ...) to be added but dont support tools. Use --dst to save the output. Supported files : - custom: custom mode - */ - mode?: "completion" | "tools" | "assistant" | "custom"; - /** Logging level for the application */ - logLevel?: number; - /** Path to profile for variables. Supports environment variables. */ - profile?: string | undefined; - /** Base URL for the API, set via --router or directly */ - baseURL?: string | undefined; - /** Path to JSON configuration file (API keys). Supports environment variables. */ - config?: string | undefined; - /** Create a script */ - dump?: string | undefined; - /** Path to preferences file, eg: location, your email address, gender, etc. Supports environment variables. */ - preferences?: string; - /** Logging directory */ - logs?: string; - /** Environment (in profile) */ - env?: string; - variables?: { - [x: string]: string; - }; - /** List of filters to apply to the output. - Used only in completion mode and a given output file specified with --dst. - It unwraps by default any code or data in Markdown. - Choices: - JSON,JSONUnescape,JSONPretty,AlphaSort,code,JSONParse,trim - */ - filters?: (string | ("JSON" | "JSONUnescape" | "JSONPretty" | "AlphaSort" | "code" | "JSONParse" | "trim")[] | string[] | ((...args_0: unknown[]) => unknown)[]); - /** Dry run - only write out parameters without making API calls */ - dry?: (boolean | string); + /** Environment configuration key */ + env_key?: string | undefined; +} +export interface IToolListingOptions { + /** Path to write the output to */ + output: string; +} +export interface ITerminalCommandOptions { + /** Command to execute */ + command: string; + /** Command arguments */ + args?: string[] | undefined; + /** Working directory for command execution */ + cwd?: string | undefined; + /** Run command in background (non-blocking) */ + background?: boolean | undefined; + /** Open command in new terminal window */ + window?: boolean | undefined; + /** Run process detached from parent */ + detached?: boolean | undefined; +} +export interface IListCommandOptions { + /** Output file path for tools list */ + output: string; +} +export interface INpmRunOptions { + /** Command to run (e.g. install, test, etc) */ + command: string; + /** Additional arguments for the command */ + args?: string[] | undefined; } \ No newline at end of file