update - last

This commit is contained in:
lovebird 2026-03-19 17:39:41 +01:00
parent 0c87df2d6e
commit d6b6f2803d
54 changed files with 4738 additions and 4258 deletions

View File

@ -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;
}>;

View File

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

View File

@ -1,4 +1,4 @@
import type { Argv } from 'yargs';
declare const options: (yargs: Argv) => CLI.Argv;
export declare const invoke: (argv: any) => Promise<any>;
export { options as invokeOptions };
import type { Argv } from 'yargs';
declare const options: (yargs: Argv) => CLI.Argv;
export declare const invoke: (argv: any) => Promise<any>;
export { options as invokeOptions };

View File

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

View File

@ -1,17 +1,17 @@
import type { Argv } from 'yargs';
export declare const options: (yargs: Argv) => CLI.Argv;
interface FSParameters {
type: string;
properties: Record<string, any>;
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<void>;
export {};
import type { Argv } from 'yargs';
export declare const options: (yargs: Argv) => CLI.Argv;
interface FSParameters {
type: string;
properties: Record<string, any>;
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<void>;
export {};

View File

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

View File

@ -1 +1 @@
export declare const types: () => Promise<void>;
export declare const types: () => Promise<void>;

View File

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

View File

@ -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[];

View File

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

View File

@ -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<unknown>;
export declare const TLogLevelNameSchema: z.ZodEnum<["silly", "trace", "debug", "info", "warn", "error", "fatal"]>;
export type LogLevel = z.infer<typeof TLogLevelNameSchema>;
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<any>): Logger<unknown>;
export declare const defaultLogger: Logger<unknown>;
export declare const winstonLogger: (name: string, file: string, targets?: ELogTargets) => winston.Logger;
export declare const createFileLogger: (logger: Logger<unknown>, level: number, file: string) => Logger<unknown>;
export declare const toolLoggerTS: (name: any, options: IKBotTask) => Logger<unknown>;
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<unknown>;
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<typeof TLogLevelNameSchema>;
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<any>): Logger<unknown>;
export declare const defaultLogger: Logger<unknown>;
export declare const winstonLogger: (name: string, file: string, targets?: ELogTargets) => winston.Logger;
export declare const createFileLogger: (logger: Logger<unknown>, level: number, file: string) => Logger<unknown>;
export declare const toolLoggerTS: (name: any, options: IKBotTask) => Logger<unknown>;
export declare const toolLogger: (name: any, options?: IKBotTask) => winston.Logger;
export * from './types.js';
export * from './types_kbot.js';

File diff suppressed because one or more lines are too long

View File

@ -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<any>;
import { IKBotTask } from '../../types.js';
export declare const decode_base64: (base64: string) => string;
export declare const tools: (target: string, options: IKBotTask) => Array<any>;

File diff suppressed because one or more lines are too long

View File

@ -1,2 +1,2 @@
import { IKBotTask } from '../../types.js';
export declare const tools: (target: string, options: IKBotTask) => Array<any>;
import { IKBotTask } from '../../types.js';
export declare const tools: (target: string, options: IKBotTask) => Array<any>;

File diff suppressed because one or more lines are too long

View File

@ -1,8 +1,8 @@
import { RunnableToolFunctionWithParse } from 'openai/lib/RunnableFunction';
import { ZodSchema, z } from 'zod';
export declare const zodFunction: <T extends object>({ function: fn, schema, description, name, }: {
function: (args: T) => Promise<object>;
schema: ZodSchema<T, z.ZodTypeDef, T>;
description?: string;
name?: string;
}) => RunnableToolFunctionWithParse<T>;
import { RunnableToolFunctionWithParse } from 'openai/lib/RunnableFunction';
import { ZodSchema } from 'zod';
export declare const zodFunction: <T extends object>({ function: fn, schema, description, name, }: {
function: (args: T) => Promise<object>;
schema: ZodSchema<T>;
description?: string;
name?: string;
}) => RunnableToolFunctionWithParse<T>;

View File

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

View File

@ -1,2 +1,2 @@
import { IKBotTask } from '../../types.js';
export declare const tools: (target: string, options: IKBotTask) => Array<any>;
import { IKBotTask } from '../../types.js';
export declare const tools: (target: string, options: IKBotTask) => Array<any>;

View File

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

View File

@ -1,4 +1,4 @@
import Keyv from 'keyv';
export declare const store: (storePath: string, ns?: string, opts?: any) => Keyv<any>;
export declare const get: (key: string, storePath: string, ns?: string, opts?: any) => Promise<any>;
export declare const set: (key: string, value: any, storePath: string, ns?: string, opts?: any) => Promise<boolean>;
import Keyv from 'keyv';
export declare const store: (storePath: string, ns?: string, opts?: any) => Keyv<any>;
export declare const get: (key: string, storePath: string, ns?: string, opts?: any) => Promise<any>;
export declare const set: (key: string, value: any, storePath: string, ns?: string, opts?: any) => Promise<boolean>;

View File

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

View File

@ -1,2 +1,2 @@
import { IKBotTask } from '../../types.js';
export declare const tools: (target: string, options: IKBotTask) => Array<any>;
import { IKBotTask } from '../../types.js';
export declare const tools: (target: string, options: IKBotTask) => Array<any>;

File diff suppressed because one or more lines are too long

View File

@ -1,2 +1,2 @@
import { IKBotTask } from '../../types.js';
export declare const tools: (target: string, options: IKBotTask) => Array<any>;
import { IKBotTask } from '../../types.js';
export declare const tools: (target: string, options: IKBotTask) => Array<any>;

File diff suppressed because one or more lines are too long

View File

@ -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<any>;
}
export declare class Helper {
static run(cwd: any, cmd: string, args: string[], buffer?: string[], debug_stream?: boolean): Promise<any>;
}
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<any>;
}
export declare class Helper {
static run(cwd: any, cmd: string, args: string[], buffer?: string[], debug_stream?: boolean): Promise<any>;
}

View File

@ -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<any>((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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
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<any>((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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

View File

@ -1,2 +1,2 @@
import { IKBotTask } from '../../types.js';
export declare const tools: (target: string, options: IKBotTask) => Array<any>;
import { IKBotTask } from '../../types.js';
export declare const tools: (target: string, options: IKBotTask) => Array<any>;

View File

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

View File

@ -1,2 +1,2 @@
import { IKBotTask } from '../../types.js';
export declare const tools: (target: string, options: IKBotTask) => Array<any>;
import { IKBotTask } from '../../types.js';
export declare const tools: (target: string, options: IKBotTask) => Array<any>;

View File

@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rvb2xzL3Rlcm1pbmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFBO0FBRTVCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFckMsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBYyxFQUFFLE9BQWtCLEVBQWMsRUFBRTtJQUNwRSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzlDLE9BQU87UUFDSDtZQUNJLElBQUksRUFBRSxVQUFVO1lBQ2hCLFFBQVEsRUFBRTtnQkFDTixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixXQUFXLEVBQUUsK0NBQStDO2dCQUM1RCxVQUFVLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNSLE9BQU8sRUFBRTs0QkFDTCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsb0JBQW9CO3lCQUNwQzt3QkFDRCxJQUFJLEVBQUU7NEJBQ0YsSUFBSSxFQUFFLE9BQU87NEJBQ2IsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTs0QkFDekIsV0FBVyxFQUFFLG1CQUFtQjs0QkFDaEMsUUFBUSxFQUFFLElBQUk7eUJBQ2pCO3dCQUNELEdBQUcsRUFBRTs0QkFDRCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUseUNBQXlDOzRCQUN0RCxRQUFRLEVBQUUsSUFBSTt5QkFDakI7d0JBQ0QsVUFBVSxFQUFFOzRCQUNSLElBQUksRUFBRSxTQUFTOzRCQUNmLFdBQVcsRUFBRSwwQ0FBMEM7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
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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

View File

@ -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<any>;
npm: (target: string, options: import("../../types.js").IKBotTask) => Array<any>;
git: (target: string, options: import("../../types.js").IKBotTask) => Array<any>;
terminal: (target: string, options: import("../../types.js").IKBotTask) => Array<any>;
interact: (target: string, options: import("../../types.js").IKBotTask) => Array<any>;
user: (target: string, options: import("../../types.js").IKBotTask) => Array<any>;
search: (target: string, options: import("../../types.js").IKBotTask) => Array<any>;
memory: (target: string, options: import("../../types.js").IKBotTask) => Array<any>;
};

View File

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

View File

@ -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<any>;
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<any>;

View File

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

View File

@ -1,2 +1,2 @@
import { IKBotTask } from '../../types.js';
export declare const tools: (target: string, options: IKBotTask) => Array<any>;
import { IKBotTask } from '../../types.js';
export declare const tools: (target: string, options: IKBotTask) => Array<any>;

View File

@ -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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
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b29scy93ZWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxTQUFTLE1BQU0sV0FBVyxDQUFBO0FBQ2pDLE9BQU8sZUFBZSxNQUFNLFVBQVUsQ0FBQTtBQUV0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQTtBQUV0QyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFjLEVBQUUsT0FBa0IsRUFBYyxFQUFFO0lBQ3BFLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDekMsT0FBTztRQUNIO1lBQ0ksSUFBSSxFQUFFLFVBQVU7WUFDaEIsUUFBUSxFQUFFO2dCQUNOLElBQUksRUFBRSxhQUFhO2dCQUNuQixXQUFXLEVBQUUsNkZBQTZGO2dCQUMxRyxVQUFVLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNSLEdBQUcsRUFBRTs0QkFDRCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsOEJBQThCO3lCQUM5QztxQkFDSjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUM7aUJBQ3BCO2dCQUNELFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBVyxFQUFFLEVBQUU7b0JBQzVCLElBQUksQ0FBQzt3QkFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLDZCQUE2QixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQzt3QkFDeEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxTQUFTLENBQUMsTUFBTSxDQUFDOzRCQUNuQyxRQUFRLEVBQUUsSUFBSTs0QkFDZCxJQUFJLEVBQUUsQ0FBQyxjQUFjLEVBQUUsMEJBQTBCLENBQUM7eUJBQ3JELENBQUMsQ0FBQTt3QkFFRixJQUFJLENB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

View File

@ -1,2 +1,2 @@
#!/usr/bin/env node
export {};
#!/usr/bin/env node
export {};

View File

@ -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=
#!/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==

View File

@ -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<any>, args: any) => Promise<any>;
export type onToolAfter = (ctx: RunnableFunctionWithParse<any>, args: any, result?: any) => Promise<any>;
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<IKBotTask>;
logger?: Logger<ILogObj>;
}
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<any>, args: any) => Promise<any>;
export type onToolAfter = (ctx: RunnableFunctionWithParse<any>, args: any, result?: any) => Promise<any>;
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<IKBotTask>;
logger?: Logger<ILogObj>;
customTools?: any[];
}

View File

@ -1,2 +1,2 @@
export {};
export {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9

File diff suppressed because it is too large Load Diff

View File

@ -1,2 +1,2 @@
export {};
export {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNfa2JvdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlc19rYm90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==

View File

@ -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<z.ZodString>;
}, "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<z.ZodString, "many">;
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<z.ZodString, "many">;
}, "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<z.ZodString>;
}, "strip", z.ZodTypeAny, {
branch?: string;
remote?: string;
}, {
branch?: string;
remote?: string;
}>;
/** Schema for git raw file retrieval */
export declare const GitRawFileSchema: z.ZodEffects<z.ZodObject<{
url: z.ZodOptional<z.ZodString>;
repo: z.ZodOptional<z.ZodString>;
path: z.ZodOptional<z.ZodString>;
}, "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<z.ZodArray<z.ZodString, "many">>;
}, "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<z.ZodArray<z.ZodString, "many">>;
cwd: z.ZodOptional<z.ZodString>;
background: z.ZodOptional<z.ZodBoolean>;
window: z.ZodOptional<z.ZodBoolean>;
detached: z.ZodOptional<z.ZodBoolean>;
}, "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<z.ZodString>;
params: z.ZodOptional<z.ZodString>;
output: z.ZodOptional<z.ZodString>;
env_key: z.ZodOptional<z.ZodString>;
}, "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<z.ZodString>;
}, "strip", z.ZodTypeAny, {
output?: string;
}, {
output?: string;
}>;
/** Schema for tool listing options */
export declare const ToolListingOptionsSchema: z.ZodObject<{
output: z.ZodDefault<z.ZodString>;
}, "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.ZodString>;
}, 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<z.ZodString>;
message: z.ZodString;
}, z.core.$strip>;
/** Schema for git revert operations */
export declare const GitRevertSchema: z.ZodObject<{
files: z.ZodArray<z.ZodString>;
}, z.core.$strip>;
/** Schema for git version switch operations */
export declare const GitSwitchVersionSchema: z.ZodObject<{
branch: z.ZodString;
remote: z.ZodDefault<z.ZodString>;
}, z.core.$strip>;
/** Schema for git raw file retrieval */
export declare const GitRawFileSchema: z.ZodObject<{
url: z.ZodOptional<z.ZodString>;
repo: z.ZodOptional<z.ZodString>;
path: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
/** Schema for npm run command */
export declare const NpmRunSchema: z.ZodObject<{
command: z.ZodString;
args: z.ZodOptional<z.ZodArray<z.ZodString>>;
}, z.core.$strip>;
/** Schema for terminal command execution */
export declare const TerminalCommandSchema: z.ZodObject<{
command: z.ZodString;
args: z.ZodOptional<z.ZodArray<z.ZodString>>;
cwd: z.ZodOptional<z.ZodString>;
background: z.ZodOptional<z.ZodBoolean>;
window: z.ZodOptional<z.ZodBoolean>;
detached: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strip>;
/** Schema for tool invocation parameters */
export declare const InvokeToolSchema: z.ZodObject<{
tools: z.ZodString;
function: z.ZodString;
target: z.ZodDefault<z.ZodString>;
params: z.ZodOptional<z.ZodString>;
output: z.ZodOptional<z.ZodString>;
env_key: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
/** Schema for list command options */
export declare const ListCommandSchema: z.ZodObject<{
output: z.ZodDefault<z.ZodString>;
}, z.core.$strip>;
/** Schema for tool listing options */
export declare const ToolListingOptionsSchema: z.ZodObject<{
output: z.ZodDefault<z.ZodString>;
}, z.core.$strip>;

View File

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

View File

@ -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;
}

View File

@ -1,2 +1,2 @@
export {};
export {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9kX3R5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3pvZF90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=

File diff suppressed because it is too large Load Diff

View File

@ -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"

View File

@ -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 =<T extends object>({
@ -21,7 +20,7 @@ export const zodFunction =<T extends object>({
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)

View File

@ -26,4 +26,5 @@ export interface IKBotTask extends IKBotOptions
collector?: ICollector
onRun?:(ctx: IKBotTask) => Promise<IKBotTask>
logger?: Logger<ILogObj>
customTools?: any[]
}

View File

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

View File

@ -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;
}