UNPKG

autoagent-cli

Version:

Run autonomous AI agents using Claude or Gemini for task execution

70 lines (69 loc) 2.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GeminiProvider = void 0; const Provider_1 = require("./Provider"); const child_process_1 = require("child_process"); class GeminiProvider extends Provider_1.Provider { get name() { return 'gemini'; } async checkAvailability() { try { const { stdout, code } = await this.spawnProcess('gemini', ['--version']); return code === 0 && stdout.toLowerCase().includes('gemini'); } catch (error) { return false; } } async execute(prompt, workspace, _additionalDirectories, signal) { const args = [prompt]; args.push('--sandbox'); return new Promise((resolve, reject) => { const child = (0, child_process_1.spawn)('gemini', 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(`Gemini 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 = [prompt]; if (options?.systemPrompt !== undefined) { args[0] = `${options.systemPrompt}\n\n${prompt}`; } try { const { stdout } = await this.spawnProcess('gemini', args, options?.signal); return stdout.trim(); } catch (error) { throw new Error(`Gemini chat failed: ${error instanceof Error ? error.message : String(error)}`); } } } exports.GeminiProvider = GeminiProvider;