UNPKG

capsule-ai-cli

Version:

The AI Model Orchestrator - Intelligent multi-model workflows with device-locked licensing

39 lines 1.64 kB
import { BashTool } from './bash.js'; import { toolExecutionService } from '../../services/tool-execution.js'; import { v4 as uuidv4 } from 'uuid'; export class BashUnifiedTool extends BashTool { constructor() { super(); this.name = 'bash'; this.description = 'Execute bash commands with confirmation for safety'; } async run(params, context) { const dangerousCommands = ['rm', 'rmdir', 'mv', 'cp', 'chmod', 'chown', 'kill', 'pkill', 'shutdown', 'reboot']; const isDangerous = dangerousCommands.some(cmd => { const regex = new RegExp(`(^|\\s|;|\\||&)${cmd}\\s`); return regex.test(params.command); }); const workingDir = process.cwd(); const toolCallId = uuidv4(); const approved = await toolExecutionService.requestConfirmation(toolCallId, 'bash', { command: params.command, workingDirectory: workingDir, isDangerous }); if (!approved) { const { contextManager } = await import('../../services/context.js'); contextManager.addMessage({ role: 'system', content: `Bash command "${params.command}" was cancelled by user` }); throw new Error('Command cancelled by user'); } const { contextManager } = await import('../../services/context.js'); contextManager.addMessage({ role: 'system', content: `Bash command "${params.command}" was approved by user` }); return super.run(params, context); } } //# sourceMappingURL=bash-unified.js.map