UNPKG

@plastichub/osr-ai-tools

Version:

CLI and library for LLM tools

62 lines (56 loc) 2.15 kB
import type { Argv } from 'yargs' import { tools } from '../lib/tools/tools' import { logger } from '../' import { ListCommandSchema } from '../zod_schemas' import { sync as write } from '@plastichub/fs/write' import { toYargs } from '@plastichub/osr-commons' export const options = (yargs: Argv) => toYargs(yargs, ListCommandSchema) export const list = async (argv: any, options?: any) => { const fsTools = tools.fs(process.cwd(), options) const npmTools = tools.npm(process.cwd(), options) const gitTools = tools.git(process.cwd(), options) const terminalTools = tools.terminal(process.cwd(), options) const toolsList = { fs: fsTools.map(tool => ({ name: tool.function.name, description: tool.function.description, category: 'fs' })), npm: npmTools.map(tool => ({ name: tool.function.name, description: tool.function.description, category: 'npm' })), git: gitTools.map(tool => ({ name: tool.function.name, description: tool.function.description, category: 'git' })), terminal: terminalTools.map(tool => ({ name: tool.function.name, description: tool.function.description, category: 'terminal' })) }; logger.info('Available Tools:\n'); logger.info('Filesystem Tools:'); fsTools.forEach(tool => { logger.info(` ${tool.function.name}: ${tool.function.description}`); }); logger.info('\nNPM Tools:'); npmTools.forEach(tool => { logger.info(` ${tool.function.name}: ${tool.function.description}`); }); logger.info('\nGit Tools:'); gitTools.forEach(tool => { logger.info(` ${tool.function.name}: ${tool.function.description}`); }); logger.info('\nTerminal Tools:'); terminalTools.forEach(tool => { logger.info(` ${tool.function.name}: ${tool.function.description}`); }); if (argv.output) { logger.info(`\nWriting tools list to ${argv.output}`); write(argv.output, JSON.stringify(toolsList, null, 2)); } };