UNPKG

netlify

Version:

Netlify command line tool

75 lines 3.36 kB
import { chalk, logAndThrowError, log, logJson } from '../../utils/command-helpers.js'; import { startSpinner, stopSpinner } from '../../lib/spinner.js'; import { formatStatus } from './utils.js'; export const agentsStop = async (id, options, command) => { const { api, apiOpts } = command.netlify; await command.authenticate(); if (!id) { return logAndThrowError('Agent task ID is required'); } const statusSpinner = startSpinner({ text: 'Checking agent task status...' }); try { // First check if the agent runner exists and is stoppable const statusResponse = await fetch(`${apiOpts.scheme ?? 'https'}://${apiOpts.host ?? api.host}/api/v1/agent_runners/${id}`, { method: 'GET', headers: { Authorization: `Bearer ${api.accessToken ?? ''}`, 'User-Agent': apiOpts.userAgent, }, }); if (!statusResponse.ok) { const errorData = (await statusResponse.json().catch(() => ({}))); throw new Error(errorData.error ?? `HTTP ${statusResponse.status.toString()}: ${statusResponse.statusText}`); } const agentRunner = (await statusResponse.json()); stopSpinner({ spinner: statusSpinner }); // Check if agent task can be stopped if (agentRunner.state === 'done') { log(chalk.yellow('Agent task is already completed.')); return agentRunner; } if (agentRunner.state === 'cancelled') { log(chalk.yellow('Agent task is already cancelled.')); return agentRunner; } if (agentRunner.state === 'error') { log(chalk.yellow('Agent task has already errored.')); return agentRunner; } // Stop the agent task const stopSpinnerInstance = startSpinner({ text: 'Stopping agent task...' }); const response = await fetch(`${apiOpts.scheme ?? 'https'}://${apiOpts.host ?? api.host}/api/v1/agent_runners/${id}`, { method: 'DELETE', headers: { Authorization: `Bearer ${api.accessToken ?? ''}`, 'User-Agent': apiOpts.userAgent, }, }); stopSpinner({ spinner: stopSpinnerInstance }); if (!response.ok) { const errorData = (await response.json().catch(() => ({}))); throw new Error(errorData.error ?? `HTTP ${response.status.toString()}: ${response.statusText}`); } // Success case, 202 with empty body const result = { success: true }; if (options.json) { logJson(result); return result; } log(`${chalk.green('✓')} Agent task stopped successfully!`); log(``); log(chalk.bold('Details:')); log(` Task ID: ${chalk.cyan(id)}`); log(` Previous Status: ${formatStatus(agentRunner.state ?? 'unknown')}`); log(` New Status: ${formatStatus('cancelled')}`); log(``); log(chalk.dim('The agent task has been stopped and will not continue processing.')); return result; } catch (error_) { const error = error_; stopSpinner({ spinner: statusSpinner, error: true }); return logAndThrowError(`Failed to stop agent task: ${error.message}`); } }; //# sourceMappingURL=agents-stop.js.map