UNPKG

autoagent-cli

Version:

Run autonomous AI agents using Claude or Gemini for task execution

83 lines (82 loc) 2.88 kB
"use strict"; 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;