autoagent-cli
Version:
Run autonomous AI agents using Claude or Gemini for task execution
83 lines (82 loc) • 2.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ClaudeProvider = void 0;
const Provider_1 = require("./Provider");
const child_process_1 = require("child_process");
class ClaudeProvider extends Provider_1.Provider {
get name() {
return 'claude';
}
async checkAvailability() {
try {
const { stdout, code } = await this.spawnProcess('claude', ['--version']);
return code === 0 && stdout.toLowerCase().includes('claude');
}
catch (error) {
return false;
}
}
async execute(prompt, workspace, additionalDirectories, signal) {
const args = [
'-p',
prompt
];
args.push('--add-dir', workspace);
if (additionalDirectories && additionalDirectories.length > 0) {
for (const dir of additionalDirectories) {
args.push('--add-dir', dir);
}
}
args.push('--model', 'claude-sonnet-4-20250514');
return new Promise((resolve, reject) => {
const child = (0, child_process_1.spawn)('claude', args, {
cwd: workspace,
env: { ...process.env }
});
let output = '';
let error = '';
child.stdout.on('data', (data) => {
const text = data.toString();
output += text;
});
child.stderr.on('data', (data) => {
error += data.toString();
});
child.on('close', (code) => {
if (code === 0) {
resolve(output);
}
else {
reject(new Error(`Claude exited with code ${code}: ${error}`));
}
});
child.on('error', (err) => {
reject(err);
});
if (signal) {
signal.addEventListener('abort', () => {
child.kill('SIGTERM');
reject(new Error('Process aborted'));
});
}
});
}
async chat(prompt, options) {
const args = ['-p', prompt];
if (options?.systemPrompt !== undefined) {
args[1] = `${options.systemPrompt}\n\n${prompt}`;
}
args.push('--model', 'claude-sonnet-4-20250514');
if (options?.maxTokens !== undefined && options.maxTokens > 0) {
args.push('--max-tokens', options.maxTokens.toString());
}
try {
const { stdout } = await this.spawnProcess('claude', args, options?.signal);
return stdout.trim();
}
catch (error) {
throw new Error(`Claude chat failed: ${error instanceof Error ? error.message : String(error)}`);
}
}
}
exports.ClaudeProvider = ClaudeProvider;