netlify 23.8.1 → 23.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/commands/agents/agents-create.d.ts +12 -0
  2. package/dist/commands/agents/agents-create.d.ts.map +1 -0
  3. package/dist/commands/agents/agents-create.js +131 -0
  4. package/dist/commands/agents/agents-create.js.map +1 -0
  5. package/dist/commands/agents/agents-list.d.ts +10 -0
  6. package/dist/commands/agents/agents-list.d.ts.map +1 -0
  7. package/dist/commands/agents/agents-list.js +115 -0
  8. package/dist/commands/agents/agents-list.js.map +1 -0
  9. package/dist/commands/agents/agents-show.d.ts +9 -0
  10. package/dist/commands/agents/agents-show.d.ts.map +1 -0
  11. package/dist/commands/agents/agents-show.js +127 -0
  12. package/dist/commands/agents/agents-show.js.map +1 -0
  13. package/dist/commands/agents/agents-stop.d.ts +11 -0
  14. package/dist/commands/agents/agents-stop.d.ts.map +1 -0
  15. package/dist/commands/agents/agents-stop.js +75 -0
  16. package/dist/commands/agents/agents-stop.js.map +1 -0
  17. package/dist/commands/agents/agents.d.ts +3 -0
  18. package/dist/commands/agents/agents.d.ts.map +1 -0
  19. package/dist/commands/agents/agents.js +83 -0
  20. package/dist/commands/agents/agents.js.map +1 -0
  21. package/dist/commands/agents/constants.d.ts +39 -0
  22. package/dist/commands/agents/constants.d.ts.map +1 -0
  23. package/dist/commands/agents/constants.js +29 -0
  24. package/dist/commands/agents/constants.js.map +1 -0
  25. package/dist/commands/agents/index.d.ts +2 -0
  26. package/dist/commands/agents/index.d.ts.map +1 -0
  27. package/dist/commands/agents/index.js +2 -0
  28. package/dist/commands/agents/index.js.map +1 -0
  29. package/dist/commands/agents/types.d.ts +48 -0
  30. package/dist/commands/agents/types.d.ts.map +1 -0
  31. package/dist/commands/agents/types.js +2 -0
  32. package/dist/commands/agents/types.js.map +1 -0
  33. package/dist/commands/agents/utils.d.ts +8 -0
  34. package/dist/commands/agents/utils.d.ts.map +1 -0
  35. package/dist/commands/agents/utils.js +51 -0
  36. package/dist/commands/agents/utils.js.map +1 -0
  37. package/dist/commands/database/utils.d.ts.map +1 -1
  38. package/dist/commands/main.d.ts.map +1 -1
  39. package/dist/commands/main.js +2 -0
  40. package/dist/commands/main.js.map +1 -1
  41. package/dist/lib/extensions.d.ts.map +1 -1
  42. package/dist/lib/extensions.js +0 -1
  43. package/dist/lib/extensions.js.map +1 -1
  44. package/dist/tsconfig.build.tsbuildinfo +1 -1
  45. package/dist/utils/command-helpers.d.ts +4 -2
  46. package/dist/utils/command-helpers.d.ts.map +1 -1
  47. package/dist/utils/command-helpers.js +1 -1
  48. package/dist/utils/command-helpers.js.map +1 -1
  49. package/dist/utils/hooks/requires-site-info-with-project.d.ts +8 -0
  50. package/dist/utils/hooks/requires-site-info-with-project.d.ts.map +1 -0
  51. package/dist/utils/hooks/requires-site-info-with-project.js +84 -0
  52. package/dist/utils/hooks/requires-site-info-with-project.js.map +1 -0
  53. package/dist/utils/init/utils.d.ts.map +1 -1
  54. package/functions-templates/typescript/hello-world/package-lock.json +6 -6
  55. package/npm-shrinkwrap.json +153 -171
  56. package/package.json +6 -6
@@ -0,0 +1,12 @@
1
+ import type { OptionValues } from 'commander';
2
+ import type BaseCommand from '../base-command.js';
3
+ import type { AgentRunner } from './types.js';
4
+ interface AgentCreateOptions extends OptionValues {
5
+ prompt?: string;
6
+ agent?: string;
7
+ branch?: string;
8
+ model?: string;
9
+ }
10
+ export declare const agentsCreate: (promptArg: string, options: AgentCreateOptions, command: BaseCommand) => Promise<AgentRunner>;
11
+ export {};
12
+ //# sourceMappingURL=agents-create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-create.d.ts","sourceRoot":"","sources":["../../../src/commands/agents/agents-create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAK7C,OAAO,KAAK,WAAW,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAI7C,UAAU,kBAAmB,SAAQ,YAAY;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,eAAO,MAAM,YAAY,GAAU,WAAW,MAAM,EAAE,SAAS,kBAAkB,EAAE,SAAS,WAAW,yBA4JtG,CAAA"}
@@ -0,0 +1,131 @@
1
+ import inquirer from 'inquirer';
2
+ import { chalk, logAndThrowError, log, logJson } from '../../utils/command-helpers.js';
3
+ import { startSpinner, stopSpinner } from '../../lib/spinner.js';
4
+ import { validatePrompt, validateAgent, formatStatus, getAgentName } from './utils.js';
5
+ import { AVAILABLE_AGENTS } from './constants.js';
6
+ export const agentsCreate = async (promptArg, options, command) => {
7
+ const { api, site, siteInfo, apiOpts } = command.netlify;
8
+ await command.authenticate();
9
+ const { prompt, agent: initialAgent, branch: initialBranch, model } = options;
10
+ let finalPrompt;
11
+ let agent = initialAgent;
12
+ let branch = initialBranch;
13
+ const isGitBased = Boolean(siteInfo.build_settings?.repo_branch);
14
+ // Interactive prompt if not provided
15
+ if (!prompt && !promptArg) {
16
+ const { promptInput } = await inquirer.prompt([
17
+ {
18
+ type: 'input',
19
+ name: 'promptInput',
20
+ message: 'What would you like the agent to do?',
21
+ validate: validatePrompt,
22
+ },
23
+ ]);
24
+ finalPrompt = promptInput;
25
+ }
26
+ else {
27
+ finalPrompt = (promptArg || prompt) ?? '';
28
+ }
29
+ const promptIsValid = validatePrompt(finalPrompt);
30
+ if (promptIsValid !== true) {
31
+ return logAndThrowError(promptIsValid);
32
+ }
33
+ // Agent selection if not provided
34
+ if (!agent) {
35
+ const { agentInput } = await inquirer.prompt([
36
+ {
37
+ type: 'list',
38
+ name: 'agentInput',
39
+ message: 'Which agent would you like to use?',
40
+ choices: AVAILABLE_AGENTS,
41
+ default: 'claude',
42
+ },
43
+ ]);
44
+ agent = agentInput;
45
+ }
46
+ else {
47
+ const agentIsValid = validateAgent(agent);
48
+ if (agentIsValid !== true) {
49
+ return logAndThrowError(agentIsValid);
50
+ }
51
+ }
52
+ if (isGitBased) {
53
+ if (!branch) {
54
+ const defaultBranch = siteInfo.build_settings?.repo_branch;
55
+ const { branchInput } = await inquirer.prompt([
56
+ {
57
+ type: 'input',
58
+ name: 'branchInput',
59
+ message: 'Which branch would you like to work on?',
60
+ default: defaultBranch,
61
+ validate: (input) => {
62
+ if (!input || input.trim().length === 0) {
63
+ return 'Branch name is required';
64
+ }
65
+ return true;
66
+ },
67
+ },
68
+ ]);
69
+ branch = branchInput.trim();
70
+ }
71
+ }
72
+ else {
73
+ branch = undefined;
74
+ }
75
+ const createSpinner = startSpinner({ text: 'Creating agent task...' });
76
+ try {
77
+ // Create the agent runner using the same API format as the React UI
78
+ const createParams = new URLSearchParams();
79
+ createParams.set('site_id', site.id ?? '');
80
+ const response = await fetch(`${apiOpts.scheme ?? 'https'}://${apiOpts.host ?? api.host}/api/v1/agent_runners?${createParams.toString()}`, {
81
+ method: 'POST',
82
+ headers: {
83
+ Authorization: `Bearer ${api.accessToken ?? ''}`,
84
+ 'Content-Type': 'application/json',
85
+ 'User-Agent': apiOpts.userAgent,
86
+ },
87
+ body: JSON.stringify({
88
+ ...(branch ? { branch } : {}),
89
+ prompt: finalPrompt,
90
+ agent,
91
+ model,
92
+ }),
93
+ });
94
+ if (!response.ok) {
95
+ const errorData = (await response.json().catch(() => ({})));
96
+ throw new Error(errorData.error ?? `HTTP ${response.status.toString()}: ${response.statusText}`);
97
+ }
98
+ const agentRunner = (await response.json());
99
+ stopSpinner({ spinner: createSpinner });
100
+ if (options.json) {
101
+ logJson(agentRunner);
102
+ return agentRunner;
103
+ }
104
+ log(`${chalk.green('✓')} Agent task created successfully!`);
105
+ log(``);
106
+ log(chalk.bold('Details:'));
107
+ log(` Task ID: ${chalk.cyan(agentRunner.id)}`);
108
+ log(` Prompt: ${chalk.dim(finalPrompt)}`);
109
+ log(` Agent: ${chalk.cyan(getAgentName(agent))}${model ? ` (${model})` : ''}`);
110
+ if (isGitBased && branch) {
111
+ log(` Branch: ${chalk.cyan(branch)}`);
112
+ }
113
+ else {
114
+ log(` Base: ${chalk.cyan('Latest production deployment')}`);
115
+ }
116
+ log(` Status: ${formatStatus(agentRunner.state ?? 'new')}`);
117
+ log(``);
118
+ log(chalk.bold('Monitor progress:'));
119
+ log(` CLI: ${chalk.cyan(`netlify agents:show ${agentRunner.id}`)}`);
120
+ log(` View in browser: ${chalk.blue(`https://app.netlify.com/sites/${site.id ?? siteInfo.id}/agents/${agentRunner.id}`)}`);
121
+ log(``);
122
+ log(chalk.dim('Note: The agent task will run remotely on Netlify infrastructure and may take a few minutes to complete.'));
123
+ return agentRunner;
124
+ }
125
+ catch (error_) {
126
+ const error = error_;
127
+ stopSpinner({ spinner: createSpinner, error: true });
128
+ return logAndThrowError(`Failed to create agent task: ${error.message}`);
129
+ }
130
+ };
131
+ //# sourceMappingURL=agents-create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-create.js","sourceRoot":"","sources":["../../../src/commands/agents/agents-create.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { OptionValues } from 'commander';
2
+ import type BaseCommand from '../base-command.js';
3
+ import type { AgentRunner } from './types.js';
4
+ interface AgentListOptions extends OptionValues {
5
+ status?: string;
6
+ json?: boolean;
7
+ }
8
+ export declare const agentsList: (options: AgentListOptions, command: BaseCommand) => Promise<AgentRunner[] | null | undefined>;
9
+ export {};
10
+ //# sourceMappingURL=agents-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-list.d.ts","sourceRoot":"","sources":["../../../src/commands/agents/agents-list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAK7C,OAAO,KAAK,WAAW,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,WAAW,EAAsB,MAAM,YAAY,CAAA;AAGjE,UAAU,gBAAiB,SAAQ,YAAY;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,eAAO,MAAM,UAAU,GAAU,SAAS,gBAAgB,EAAE,SAAS,WAAW,8CAmJ/E,CAAA"}
@@ -0,0 +1,115 @@
1
+ import AsciiTable from 'ascii-table';
2
+ import { chalk, logAndThrowError, log, logJson } from '../../utils/command-helpers.js';
3
+ import { startSpinner, stopSpinner } from '../../lib/spinner.js';
4
+ import { formatDuration, formatStatus, truncateText, getAgentName } from './utils.js';
5
+ export const agentsList = async (options, command) => {
6
+ const { api, site, siteInfo, apiOpts } = command.netlify;
7
+ await command.authenticate();
8
+ const listSpinner = startSpinner({ text: 'Fetching agent tasks...' });
9
+ try {
10
+ const params = new URLSearchParams();
11
+ params.set('site_id', site.id ?? '');
12
+ params.set('page', '1');
13
+ params.set('per_page', '15');
14
+ if (options.status) {
15
+ params.set('state', options.status);
16
+ }
17
+ const response = await fetch(`${apiOpts.scheme ?? 'https'}://${apiOpts.host ?? api.host}/api/v1/agent_runners?${params.toString()}`, {
18
+ method: 'GET',
19
+ headers: {
20
+ Authorization: `Bearer ${api.accessToken ?? ''}`,
21
+ 'User-Agent': apiOpts.userAgent,
22
+ },
23
+ });
24
+ if (!response.ok) {
25
+ const errorData = (await response.json().catch(() => ({})));
26
+ throw new Error(errorData.error ?? `HTTP ${response.status.toString()}: ${response.statusText}`);
27
+ }
28
+ const agentRunners = (await response.json());
29
+ stopSpinner({ spinner: listSpinner });
30
+ if (options.json) {
31
+ logJson(agentRunners);
32
+ return agentRunners;
33
+ }
34
+ if (!agentRunners || agentRunners.length === 0) {
35
+ log(chalk.yellow('No agent tasks found for this site.'));
36
+ log(``);
37
+ log(`Create your first agent task with:`);
38
+ log(` ${chalk.cyan('netlify agents:create')}`);
39
+ return;
40
+ }
41
+ // Fetch agent info for each runner
42
+ const agentInfo = new Map();
43
+ const agentSpinner = startSpinner({ text: 'Loading agent information...' });
44
+ try {
45
+ // Fetch latest session for each runner in parallel to get agent info
46
+ const sessionPromises = agentRunners.map(async (runner) => {
47
+ try {
48
+ const sessionsResponse = await fetch(`${apiOpts.scheme ?? 'https'}://${apiOpts.host ?? api.host}/api/v1/agent_runners/${runner.id}/sessions?page=1&per_page=1`, {
49
+ method: 'GET',
50
+ headers: {
51
+ Authorization: `Bearer ${api.accessToken ?? ''}`,
52
+ 'User-Agent': apiOpts.userAgent,
53
+ },
54
+ });
55
+ if (sessionsResponse.ok) {
56
+ const sessions = (await sessionsResponse.json());
57
+ if (sessions && sessions.length > 0 && sessions[0].agent_config) {
58
+ const { agent } = sessions[0].agent_config;
59
+ if (agent) {
60
+ agentInfo.set(runner.id, agent);
61
+ }
62
+ }
63
+ }
64
+ }
65
+ catch {
66
+ // Failed to fetch session for this runner, continue without agent info
67
+ }
68
+ });
69
+ // Wait for all session fetches to complete
70
+ await Promise.allSettled(sessionPromises);
71
+ stopSpinner({ spinner: agentSpinner });
72
+ }
73
+ catch {
74
+ // If parallel fetch fails entirely, continue without agent info
75
+ stopSpinner({ spinner: agentSpinner, error: true });
76
+ }
77
+ const isGitBased = Boolean(siteInfo.build_settings?.repo_branch);
78
+ // Create and populate table without colors for proper formatting
79
+ const table = new AsciiTable(`Agent Tasks for ${siteInfo.name}`);
80
+ const baseColumnLabel = isGitBased ? 'BRANCH' : 'BASE';
81
+ table.setHeading('ID', 'STATUS', 'AGENT', 'PROMPT', baseColumnLabel, 'DURATION', 'CREATED');
82
+ agentRunners.forEach((runner) => {
83
+ const baseValue = isGitBased ? truncateText(runner.branch ?? 'unknown', 12) : 'Production';
84
+ table.addRow(runner.id, (runner.state ?? 'unknown').toUpperCase(), getAgentName(agentInfo.get(runner.id) ?? 'unknown'), truncateText(runner.title ?? 'No title', 35), baseValue, runner.done_at ? formatDuration(runner.created_at, runner.done_at) : formatDuration(runner.created_at), new Date(runner.created_at).toLocaleDateString());
85
+ });
86
+ // Apply colors to the table output
87
+ let tableOutput = table.toString();
88
+ // Create unique status mappings to avoid replacement conflicts
89
+ const statusReplacements = new Set();
90
+ agentRunners.forEach((runner) => {
91
+ const status = runner.state ?? 'unknown';
92
+ statusReplacements.add(status);
93
+ });
94
+ // Apply color replacements
95
+ statusReplacements.forEach((status) => {
96
+ const plainStatus = status.toUpperCase();
97
+ const coloredStatus = formatStatus(status);
98
+ // Use word boundary regex to avoid partial matches
99
+ const regex = new RegExp(`\\b${plainStatus}\\b`, 'g');
100
+ tableOutput = tableOutput.replace(regex, coloredStatus);
101
+ });
102
+ log(tableOutput);
103
+ log('');
104
+ log(chalk.dim(`Total: ${agentRunners.length.toString()} agent task(s)`));
105
+ log('');
106
+ log(`${chalk.dim('Use')} ${chalk.cyan('netlify agents:show <id>')} ${chalk.dim('to view details')}`);
107
+ return agentRunners;
108
+ }
109
+ catch (error_) {
110
+ const error = error_;
111
+ stopSpinner({ spinner: listSpinner, error: true });
112
+ return logAndThrowError(`Failed to list agent tasks: ${error.message}`);
113
+ }
114
+ };
115
+ //# sourceMappingURL=agents-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-list.js","sourceRoot":"","sources":["../../../src/commands/agents/agents-list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { OptionValues } from 'commander';
2
+ import type BaseCommand from '../base-command.js';
3
+ import type { AgentRunner } from './types.js';
4
+ interface AgentShowOptions extends OptionValues {
5
+ json?: boolean;
6
+ }
7
+ export declare const agentsShow: (id: string, options: AgentShowOptions, command: BaseCommand) => Promise<AgentRunner>;
8
+ export {};
9
+ //# sourceMappingURL=agents-show.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-show.d.ts","sourceRoot":"","sources":["../../../src/commands/agents/agents-show.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAI7C,OAAO,KAAK,WAAW,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,WAAW,EAAsB,MAAM,YAAY,CAAA;AAGjE,UAAU,gBAAiB,SAAQ,YAAY;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,eAAO,MAAM,UAAU,GAAU,IAAI,MAAM,EAAE,SAAS,gBAAgB,EAAE,SAAS,WAAW,yBA2J3F,CAAA"}
@@ -0,0 +1,127 @@
1
+ import { chalk, logAndThrowError, log, logJson } from '../../utils/command-helpers.js';
2
+ import { startSpinner, stopSpinner } from '../../lib/spinner.js';
3
+ import { formatDate, formatDuration, formatStatus, getAgentName } from './utils.js';
4
+ export const agentsShow = async (id, options, command) => {
5
+ const { api, site, siteInfo, apiOpts } = command.netlify;
6
+ await command.authenticate();
7
+ if (!id) {
8
+ return logAndThrowError('Agent task ID is required');
9
+ }
10
+ const showSpinner = startSpinner({ text: 'Fetching agent task details...' });
11
+ try {
12
+ const response = await fetch(`${apiOpts.scheme ?? 'https'}://${apiOpts.host ?? api.host}/api/v1/agent_runners/${id}`, {
13
+ method: 'GET',
14
+ headers: {
15
+ Authorization: `Bearer ${api.accessToken ?? ''}`,
16
+ 'User-Agent': apiOpts.userAgent,
17
+ },
18
+ });
19
+ if (!response.ok) {
20
+ const errorData = (await response.json().catch(() => ({})));
21
+ throw new Error(errorData.error ?? `HTTP ${response.status.toString()}: ${response.statusText}`);
22
+ }
23
+ const agentRunner = (await response.json());
24
+ stopSpinner({ spinner: showSpinner });
25
+ if (options.json) {
26
+ logJson(agentRunner);
27
+ return agentRunner;
28
+ }
29
+ // Display detailed information
30
+ log(chalk.bold('Agent Task Details'));
31
+ log(``);
32
+ log(chalk.bold('Basic Information:'));
33
+ log(` Task ID: ${chalk.cyan(agentRunner.id)}`);
34
+ log(` Status: ${formatStatus(agentRunner.state ?? 'unknown')}`);
35
+ log(` Site: ${chalk.cyan(siteInfo.name)} (${site.id ?? ''})`);
36
+ if (agentRunner.user) {
37
+ log(` Created by: ${agentRunner.user.full_name ?? 'Anonymous'}`);
38
+ }
39
+ // Fetch sessions to get agent information
40
+ let sessions;
41
+ try {
42
+ const sessionsResponse = await fetch(`${apiOpts.scheme ?? 'https'}://${apiOpts.host ?? api.host}/api/v1/agent_runners/${id}/sessions?page=1&per_page=5`, {
43
+ method: 'GET',
44
+ headers: {
45
+ Authorization: `Bearer ${api.accessToken ?? ''}`,
46
+ 'User-Agent': apiOpts.userAgent,
47
+ },
48
+ });
49
+ if (sessionsResponse.ok) {
50
+ sessions = (await sessionsResponse.json());
51
+ }
52
+ }
53
+ catch {
54
+ // Sessions fetch failed, but continue without session data
55
+ }
56
+ log(``);
57
+ log(chalk.bold('Configuration:'));
58
+ // Display agent information from latest session
59
+ if (sessions && sessions.length > 0) {
60
+ const latestSession = sessions[0];
61
+ if (latestSession.agent_config) {
62
+ const { agent, model } = latestSession.agent_config;
63
+ if (agent) {
64
+ log(` Agent: ${chalk.cyan(getAgentName(agent))}`);
65
+ }
66
+ if (model) {
67
+ log(` Model: ${chalk.cyan(model)}`);
68
+ }
69
+ }
70
+ }
71
+ const isGitBased = Boolean(siteInfo.build_settings?.repo_branch);
72
+ if (isGitBased) {
73
+ log(` Branch: ${chalk.cyan(agentRunner.branch ?? 'unknown')}`);
74
+ if (agentRunner.result_branch) {
75
+ log(` Result Branch: ${chalk.green(agentRunner.result_branch)}`);
76
+ }
77
+ }
78
+ else {
79
+ log(` Base: ${chalk.cyan('Latest production deployment')}`);
80
+ }
81
+ log(``);
82
+ log(chalk.bold('Task:'));
83
+ log(` Prompt: ${chalk.dim(agentRunner.title ?? 'No title')}`);
84
+ if (agentRunner.current_task) {
85
+ log(` Current Task: ${chalk.yellow(agentRunner.current_task)}`);
86
+ }
87
+ log(``);
88
+ log(chalk.bold('Timeline:'));
89
+ log(` Created: ${formatDate(agentRunner.created_at)}`);
90
+ log(` Updated: ${formatDate(agentRunner.updated_at)}`);
91
+ if (agentRunner.done_at) {
92
+ log(` Completed: ${formatDate(agentRunner.done_at)}`);
93
+ log(` Duration: ${formatDuration(agentRunner.created_at, agentRunner.done_at)}`);
94
+ }
95
+ else if (agentRunner.state === 'running') {
96
+ log(` Running for: ${formatDuration(agentRunner.created_at)}`);
97
+ }
98
+ // Show recent runs if available
99
+ if (sessions && sessions.length > 0) {
100
+ log(``);
101
+ log(chalk.bold('Recent Runs:'));
102
+ sessions.slice(0, 3).forEach((session, index) => {
103
+ log(` ${(index + 1).toString()}. ${formatStatus(session.state)} - ${session.title ?? 'No title'}`);
104
+ if (session.result && session.state === 'done') {
105
+ const resultPreview = session.result.length > 100 ? session.result.substring(0, 100) + '...' : session.result;
106
+ log(` ${chalk.dim(resultPreview)}`);
107
+ }
108
+ });
109
+ if (sessions.length > 3) {
110
+ log(` ${chalk.dim(`... and ${(sessions.length - 3).toString()} more runs`)}`);
111
+ }
112
+ }
113
+ log(``);
114
+ log(chalk.bold('Actions:'));
115
+ if (agentRunner.state === 'running' || agentRunner.state === 'new') {
116
+ log(` Stop: ${chalk.cyan(`netlify agents:stop ${agentRunner.id}`)}`);
117
+ }
118
+ log(` View in browser: ${chalk.blue(`https://app.netlify.com/sites/${site.id ?? ''}/agents/${agentRunner.id}`)}`);
119
+ return agentRunner;
120
+ }
121
+ catch (error_) {
122
+ const error = error_;
123
+ stopSpinner({ spinner: showSpinner, error: true });
124
+ return logAndThrowError(`Failed to show agent task: ${error.message}`);
125
+ }
126
+ };
127
+ //# sourceMappingURL=agents-show.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-show.js","sourceRoot":"","sources":["../../../src/commands/agents/agents-show.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { OptionValues } from 'commander';
2
+ import type BaseCommand from '../base-command.js';
3
+ import type { AgentRunner } from './types.js';
4
+ interface AgentStopOptions extends OptionValues {
5
+ json?: boolean;
6
+ }
7
+ export declare const agentsStop: (id: string, options: AgentStopOptions, command: BaseCommand) => Promise<AgentRunner | {
8
+ success: boolean;
9
+ }>;
10
+ export {};
11
+ //# sourceMappingURL=agents-stop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-stop.d.ts","sourceRoot":"","sources":["../../../src/commands/agents/agents-stop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAI7C,OAAO,KAAK,WAAW,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAG7C,UAAU,gBAAiB,SAAQ,YAAY;IAC7C,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,eAAO,MAAM,UAAU,GAAU,IAAI,MAAM,EAAE,SAAS,gBAAgB,EAAE,SAAS,WAAW;;EA8F3F,CAAA"}
@@ -0,0 +1,75 @@
1
+ import { chalk, logAndThrowError, log, logJson } from '../../utils/command-helpers.js';
2
+ import { startSpinner, stopSpinner } from '../../lib/spinner.js';
3
+ import { formatStatus } from './utils.js';
4
+ export const agentsStop = async (id, options, command) => {
5
+ const { api, apiOpts } = command.netlify;
6
+ await command.authenticate();
7
+ if (!id) {
8
+ return logAndThrowError('Agent task ID is required');
9
+ }
10
+ const statusSpinner = startSpinner({ text: 'Checking agent task status...' });
11
+ try {
12
+ // First check if the agent runner exists and is stoppable
13
+ const statusResponse = await fetch(`${apiOpts.scheme ?? 'https'}://${apiOpts.host ?? api.host}/api/v1/agent_runners/${id}`, {
14
+ method: 'GET',
15
+ headers: {
16
+ Authorization: `Bearer ${api.accessToken ?? ''}`,
17
+ 'User-Agent': apiOpts.userAgent,
18
+ },
19
+ });
20
+ if (!statusResponse.ok) {
21
+ const errorData = (await statusResponse.json().catch(() => ({})));
22
+ throw new Error(errorData.error ?? `HTTP ${statusResponse.status.toString()}: ${statusResponse.statusText}`);
23
+ }
24
+ const agentRunner = (await statusResponse.json());
25
+ stopSpinner({ spinner: statusSpinner });
26
+ // Check if agent task can be stopped
27
+ if (agentRunner.state === 'done') {
28
+ log(chalk.yellow('Agent task is already completed.'));
29
+ return agentRunner;
30
+ }
31
+ if (agentRunner.state === 'cancelled') {
32
+ log(chalk.yellow('Agent task is already cancelled.'));
33
+ return agentRunner;
34
+ }
35
+ if (agentRunner.state === 'error') {
36
+ log(chalk.yellow('Agent task has already errored.'));
37
+ return agentRunner;
38
+ }
39
+ // Stop the agent task
40
+ const stopSpinnerInstance = startSpinner({ text: 'Stopping agent task...' });
41
+ const response = await fetch(`${apiOpts.scheme ?? 'https'}://${apiOpts.host ?? api.host}/api/v1/agent_runners/${id}`, {
42
+ method: 'DELETE',
43
+ headers: {
44
+ Authorization: `Bearer ${api.accessToken ?? ''}`,
45
+ 'User-Agent': apiOpts.userAgent,
46
+ },
47
+ });
48
+ stopSpinner({ spinner: stopSpinnerInstance });
49
+ if (!response.ok) {
50
+ const errorData = (await response.json().catch(() => ({})));
51
+ throw new Error(errorData.error ?? `HTTP ${response.status.toString()}: ${response.statusText}`);
52
+ }
53
+ // Success case, 202 with empty body
54
+ const result = { success: true };
55
+ if (options.json) {
56
+ logJson(result);
57
+ return result;
58
+ }
59
+ log(`${chalk.green('✓')} Agent task stopped successfully!`);
60
+ log(``);
61
+ log(chalk.bold('Details:'));
62
+ log(` Task ID: ${chalk.cyan(id)}`);
63
+ log(` Previous Status: ${formatStatus(agentRunner.state ?? 'unknown')}`);
64
+ log(` New Status: ${formatStatus('cancelled')}`);
65
+ log(``);
66
+ log(chalk.dim('The agent task has been stopped and will not continue processing.'));
67
+ return result;
68
+ }
69
+ catch (error_) {
70
+ const error = error_;
71
+ stopSpinner({ spinner: statusSpinner, error: true });
72
+ return logAndThrowError(`Failed to stop agent task: ${error.message}`);
73
+ }
74
+ };
75
+ //# sourceMappingURL=agents-stop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-stop.js","sourceRoot":"","sources":["../../../src/commands/agents/agents-stop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type BaseCommand from '../base-command.js';
2
+ export declare const createAgentsCommand: (program: BaseCommand) => BaseCommand;
3
+ //# sourceMappingURL=agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../src/commands/agents/agents.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,WAAW,MAAM,oBAAoB,CAAA;AAMjD,eAAO,MAAM,mBAAmB,GAAI,SAAS,WAAW,gBAmFvD,CAAA"}