diff --git a/package.json b/package.json index 1c9a3a8..7526090 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ztimson/ai-utils", - "version": "0.8.5", + "version": "0.8.6", "description": "AI Utility library", "author": "Zak Timson", "license": "MIT", diff --git a/src/tools.ts b/src/tools.ts index c2b3ed7..5ac8a94 100644 --- a/src/tools.ts +++ b/src/tools.ts @@ -1,9 +1,15 @@ import * as cheerio from 'cheerio'; -import {$, $Sync} from '@ztimson/node-utils'; +import {$Sync} from '@ztimson/node-utils'; import {ASet, consoleInterceptor, Http, fn as Fn} from '@ztimson/utils'; +import * as os from 'node:os'; import {Ai} from './ai.ts'; import {LLMRequest} from './llm.ts'; +const getShell = () => { + if(os.platform() == 'win32') return 'cmd'; + return $Sync`echo $SHELL`?.split('/').pop() || 'bash'; +} + export type AiToolArg = {[key: string]: { /** Argument type */ type: 'array' | 'boolean' | 'number' | 'object' | 'string', @@ -40,7 +46,7 @@ export const CliTool: AiTool = { name: 'cli', description: 'Use the command line interface, returns any output', args: {command: {type: 'string', description: 'Command to run', required: true}}, - fn: (args: {command: string}) => $`${args.command}` + fn: (args: {command: string}) => $Sync`${args.command}` } export const DateTimeTool: AiTool = { @@ -54,13 +60,13 @@ export const ExecTool: AiTool = { name: 'exec', description: 'Run code/scripts', args: { - language: {type: 'string', description: 'Execution language', enum: ['cli', 'node', 'python'], required: true}, + language: {type: 'string', description: `Execution language (CLI: ${getShell()})`, enum: ['cli', 'node', 'python'], required: true}, code: {type: 'string', description: 'Code to execute', required: true} }, fn: async (args, stream, ai) => { try { switch(args.type) { - case 'bash': + case 'cli': return await CliTool.fn({command: args.code}, stream, ai); case 'node': return await JSTool.fn({code: args.code}, stream, ai);