capsule-ai-cli
Version:
The AI Model Orchestrator - Intelligent multi-model workflows with device-locked licensing
39 lines • 1.64 kB
JavaScript
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