@agentuity/cli 0.0.105 → 0.0.106
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.
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +93 -21
- package/dist/cli.js.map +1 -1
- package/dist/cmd/build/ast.d.ts.map +1 -1
- package/dist/cmd/build/ast.js +130 -4
- package/dist/cmd/build/ast.js.map +1 -1
- package/dist/cmd/build/entry-generator.d.ts.map +1 -1
- package/dist/cmd/build/entry-generator.js +8 -2
- package/dist/cmd/build/entry-generator.js.map +1 -1
- package/dist/cmd/build/vite/registry-generator.d.ts.map +1 -1
- package/dist/cmd/build/vite/registry-generator.js +8 -9
- package/dist/cmd/build/vite/registry-generator.js.map +1 -1
- package/dist/cmd/cloud/db/create.d.ts.map +1 -1
- package/dist/cmd/cloud/db/create.js +11 -2
- package/dist/cmd/cloud/db/create.js.map +1 -1
- package/dist/cmd/cloud/db/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/db/delete.js +13 -2
- package/dist/cmd/cloud/db/delete.js.map +1 -1
- package/dist/cmd/cloud/deploy.js +3 -3
- package/dist/cmd/cloud/deploy.js.map +1 -1
- package/dist/cmd/cloud/env/delete.js +1 -1
- package/dist/cmd/cloud/env/delete.js.map +1 -1
- package/dist/cmd/cloud/env/import.js +4 -4
- package/dist/cmd/cloud/env/import.js.map +1 -1
- package/dist/cmd/cloud/env/pull.d.ts.map +1 -1
- package/dist/cmd/cloud/env/pull.js +7 -9
- package/dist/cmd/cloud/env/pull.js.map +1 -1
- package/dist/cmd/cloud/env/push.js +2 -2
- package/dist/cmd/cloud/env/push.js.map +1 -1
- package/dist/cmd/cloud/env/set.js +3 -3
- package/dist/cmd/cloud/env/set.js.map +1 -1
- package/dist/cmd/cloud/index.d.ts.map +1 -1
- package/dist/cmd/cloud/index.js +2 -0
- package/dist/cmd/cloud/index.js.map +1 -1
- package/dist/cmd/cloud/sandbox/cp.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/cp.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/cp.js +334 -0
- package/dist/cmd/cloud/sandbox/cp.js.map +1 -0
- package/dist/cmd/cloud/sandbox/create.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/create.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/create.js +105 -0
- package/dist/cmd/cloud/sandbox/create.js.map +1 -0
- package/dist/cmd/cloud/sandbox/delete.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/delete.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/delete.js +72 -0
- package/dist/cmd/cloud/sandbox/delete.js.map +1 -0
- package/dist/cmd/cloud/sandbox/exec.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/exec.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/exec.js +211 -0
- package/dist/cmd/cloud/sandbox/exec.js.map +1 -0
- package/dist/cmd/cloud/sandbox/execution/get.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/execution/get.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/execution/get.js +96 -0
- package/dist/cmd/cloud/sandbox/execution/get.js.map +1 -0
- package/dist/cmd/cloud/sandbox/execution/index.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/execution/index.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/execution/index.js +24 -0
- package/dist/cmd/cloud/sandbox/execution/index.js.map +1 -0
- package/dist/cmd/cloud/sandbox/execution/list.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/execution/list.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/execution/list.js +100 -0
- package/dist/cmd/cloud/sandbox/execution/list.js.map +1 -0
- package/dist/cmd/cloud/sandbox/get.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/get.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/get.js +95 -0
- package/dist/cmd/cloud/sandbox/get.js.map +1 -0
- package/dist/cmd/cloud/sandbox/index.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/index.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/index.js +45 -0
- package/dist/cmd/cloud/sandbox/index.js.map +1 -0
- package/dist/cmd/cloud/sandbox/list.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/list.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/list.js +120 -0
- package/dist/cmd/cloud/sandbox/list.js.map +1 -0
- package/dist/cmd/cloud/sandbox/run.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/run.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/run.js +152 -0
- package/dist/cmd/cloud/sandbox/run.js.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/create.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/snapshot/create.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/create.js +65 -0
- package/dist/cmd/cloud/sandbox/snapshot/create.js.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/delete.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/snapshot/delete.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/delete.js +66 -0
- package/dist/cmd/cloud/sandbox/snapshot/delete.js.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/get.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/snapshot/get.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/get.js +154 -0
- package/dist/cmd/cloud/sandbox/snapshot/get.js.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/index.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/snapshot/index.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/index.js +27 -0
- package/dist/cmd/cloud/sandbox/snapshot/index.js.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/list.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/snapshot/list.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/list.js +83 -0
- package/dist/cmd/cloud/sandbox/snapshot/list.js.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/tag.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/snapshot/tag.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/tag.js +63 -0
- package/dist/cmd/cloud/sandbox/snapshot/tag.js.map +1 -0
- package/dist/cmd/cloud/sandbox/util.d.ts +15 -0
- package/dist/cmd/cloud/sandbox/util.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/util.js +50 -0
- package/dist/cmd/cloud/sandbox/util.js.map +1 -0
- package/dist/cmd/cloud/secret/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/secret/delete.js +3 -3
- package/dist/cmd/cloud/secret/delete.js.map +1 -1
- package/dist/cmd/cloud/secret/import.js +6 -6
- package/dist/cmd/cloud/secret/import.js.map +1 -1
- package/dist/cmd/cloud/secret/index.d.ts.map +1 -1
- package/dist/cmd/cloud/secret/index.js +1 -0
- package/dist/cmd/cloud/secret/index.js.map +1 -1
- package/dist/cmd/cloud/secret/pull.d.ts.map +1 -1
- package/dist/cmd/cloud/secret/pull.js +7 -9
- package/dist/cmd/cloud/secret/pull.js.map +1 -1
- package/dist/cmd/cloud/secret/push.js +3 -3
- package/dist/cmd/cloud/secret/push.js.map +1 -1
- package/dist/cmd/cloud/secret/set.d.ts.map +1 -1
- package/dist/cmd/cloud/secret/set.js +3 -3
- package/dist/cmd/cloud/secret/set.js.map +1 -1
- package/dist/cmd/cloud/storage/create.d.ts.map +1 -1
- package/dist/cmd/cloud/storage/create.js +13 -2
- package/dist/cmd/cloud/storage/create.js.map +1 -1
- package/dist/cmd/cloud/storage/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/storage/delete.js +13 -2
- package/dist/cmd/cloud/storage/delete.js.map +1 -1
- package/dist/cmd/cloud/stream/list.d.ts.map +1 -1
- package/dist/cmd/cloud/stream/list.js +2 -13
- package/dist/cmd/cloud/stream/list.js.map +1 -1
- package/dist/cmd/dev/index.d.ts.map +1 -1
- package/dist/cmd/dev/index.js +1 -0
- package/dist/cmd/dev/index.js.map +1 -1
- package/dist/cmd/profile/create.d.ts.map +1 -1
- package/dist/cmd/profile/create.js +1 -0
- package/dist/cmd/profile/create.js.map +1 -1
- package/dist/cmd/project/template-flow.d.ts.map +1 -1
- package/dist/cmd/project/template-flow.js +27 -10
- package/dist/cmd/project/template-flow.js.map +1 -1
- package/dist/config.d.ts +0 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -0
- package/dist/config.js.map +1 -1
- package/dist/env-util.d.ts +16 -8
- package/dist/env-util.d.ts.map +1 -1
- package/dist/env-util.js +46 -18
- package/dist/env-util.js.map +1 -1
- package/dist/tui.d.ts +20 -3
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +82 -23
- package/dist/tui.js.map +1 -1
- package/dist/types.d.ts +18 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/package.json +4 -4
- package/src/cli.ts +99 -21
- package/src/cmd/build/ast.ts +163 -4
- package/src/cmd/build/entry-generator.ts +8 -2
- package/src/cmd/build/vite/registry-generator.ts +8 -11
- package/src/cmd/cloud/db/create.ts +13 -2
- package/src/cmd/cloud/db/delete.ts +15 -2
- package/src/cmd/cloud/deploy.ts +3 -3
- package/src/cmd/cloud/env/delete.ts +1 -1
- package/src/cmd/cloud/env/import.ts +4 -4
- package/src/cmd/cloud/env/pull.ts +7 -16
- package/src/cmd/cloud/env/push.ts +2 -2
- package/src/cmd/cloud/env/set.ts +3 -3
- package/src/cmd/cloud/index.ts +2 -0
- package/src/cmd/cloud/sandbox/cp.ts +531 -0
- package/src/cmd/cloud/sandbox/create.ts +114 -0
- package/src/cmd/cloud/sandbox/delete.ts +80 -0
- package/src/cmd/cloud/sandbox/exec.ts +254 -0
- package/src/cmd/cloud/sandbox/execution/get.ts +106 -0
- package/src/cmd/cloud/sandbox/execution/index.ts +25 -0
- package/src/cmd/cloud/sandbox/execution/list.ts +111 -0
- package/src/cmd/cloud/sandbox/get.ts +104 -0
- package/src/cmd/cloud/sandbox/index.ts +46 -0
- package/src/cmd/cloud/sandbox/list.ts +129 -0
- package/src/cmd/cloud/sandbox/run.ts +170 -0
- package/src/cmd/cloud/sandbox/snapshot/create.ts +71 -0
- package/src/cmd/cloud/sandbox/snapshot/delete.ts +74 -0
- package/src/cmd/cloud/sandbox/snapshot/get.ts +188 -0
- package/src/cmd/cloud/sandbox/snapshot/index.ts +28 -0
- package/src/cmd/cloud/sandbox/snapshot/list.ts +90 -0
- package/src/cmd/cloud/sandbox/snapshot/tag.ts +70 -0
- package/src/cmd/cloud/sandbox/util.ts +59 -0
- package/src/cmd/cloud/secret/delete.ts +8 -3
- package/src/cmd/cloud/secret/import.ts +6 -6
- package/src/cmd/cloud/secret/index.ts +1 -0
- package/src/cmd/cloud/secret/pull.ts +7 -16
- package/src/cmd/cloud/secret/push.ts +3 -3
- package/src/cmd/cloud/secret/set.ts +8 -3
- package/src/cmd/cloud/storage/create.ts +15 -2
- package/src/cmd/cloud/storage/delete.ts +15 -2
- package/src/cmd/cloud/stream/list.ts +2 -9
- package/src/cmd/dev/index.ts +1 -0
- package/src/cmd/profile/create.ts +1 -0
- package/src/cmd/project/template-flow.ts +29 -13
- package/src/config.ts +3 -0
- package/src/env-util.ts +52 -21
- package/src/tui.ts +131 -39
- package/src/types.ts +18 -16
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { Writable } from 'node:stream';
|
|
3
|
+
import { createCommand } from '../../../types';
|
|
4
|
+
import * as tui from '../../../tui';
|
|
5
|
+
import { createSandboxClient } from './util';
|
|
6
|
+
import { getCommand } from '../../../command-prefix';
|
|
7
|
+
import { sandboxExecute, executionGet, writeAndDrain } from '@agentuity/server';
|
|
8
|
+
const POLL_INTERVAL_MS = 500;
|
|
9
|
+
const MAX_POLL_ATTEMPTS = 7200;
|
|
10
|
+
const SandboxExecResponseSchema = z.object({
|
|
11
|
+
executionId: z.string().describe('Unique execution identifier'),
|
|
12
|
+
status: z.string().describe('Execution status'),
|
|
13
|
+
exitCode: z.number().optional().describe('Exit code (if completed)'),
|
|
14
|
+
durationMs: z.number().optional().describe('Duration in milliseconds (if completed)'),
|
|
15
|
+
output: z.string().optional().describe('Combined stdout/stderr output'),
|
|
16
|
+
});
|
|
17
|
+
export const execSubcommand = createCommand({
|
|
18
|
+
name: 'exec',
|
|
19
|
+
aliases: ['execute'],
|
|
20
|
+
description: 'Execute a command in a running sandbox',
|
|
21
|
+
tags: ['slow', 'requires-auth'],
|
|
22
|
+
requires: { auth: true, region: true, org: true },
|
|
23
|
+
examples: [
|
|
24
|
+
{
|
|
25
|
+
command: getCommand('cloud sandbox exec abc123 -- echo "hello"'),
|
|
26
|
+
description: 'Execute a command in a sandbox',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
command: getCommand('cloud sandbox exec abc123 --timeout 5m -- bun run build'),
|
|
30
|
+
description: 'Execute with timeout',
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
schema: {
|
|
34
|
+
args: z.object({
|
|
35
|
+
sandboxId: z.string().describe('Sandbox ID'),
|
|
36
|
+
command: z.array(z.string()).describe('Command and arguments to execute'),
|
|
37
|
+
}),
|
|
38
|
+
options: z.object({
|
|
39
|
+
timeout: z.string().optional().describe('Execution timeout (e.g., "5m", "1h")'),
|
|
40
|
+
timestamps: z
|
|
41
|
+
.boolean()
|
|
42
|
+
.default(false)
|
|
43
|
+
.optional()
|
|
44
|
+
.describe('Include timestamps in output (default: false)'),
|
|
45
|
+
}),
|
|
46
|
+
response: SandboxExecResponseSchema,
|
|
47
|
+
},
|
|
48
|
+
async handler(ctx) {
|
|
49
|
+
const { args, opts, options, auth, region, logger, orgId } = ctx;
|
|
50
|
+
const client = createSandboxClient(logger, auth, region);
|
|
51
|
+
const started = Date.now();
|
|
52
|
+
const abortController = new AbortController();
|
|
53
|
+
const handleSignal = () => {
|
|
54
|
+
abortController.abort();
|
|
55
|
+
};
|
|
56
|
+
process.on('SIGINT', handleSignal);
|
|
57
|
+
process.on('SIGTERM', handleSignal);
|
|
58
|
+
const outputChunks = [];
|
|
59
|
+
// For JSON output, capture to buffer; otherwise stream to process
|
|
60
|
+
const stdout = options.json
|
|
61
|
+
? createCaptureStream((chunk) => outputChunks.push(chunk))
|
|
62
|
+
: process.stdout;
|
|
63
|
+
const stderr = options.json
|
|
64
|
+
? createCaptureStream((chunk) => outputChunks.push(chunk))
|
|
65
|
+
: process.stderr;
|
|
66
|
+
try {
|
|
67
|
+
const execution = await sandboxExecute(client, {
|
|
68
|
+
sandboxId: args.sandboxId,
|
|
69
|
+
options: {
|
|
70
|
+
command: args.command,
|
|
71
|
+
timeout: opts.timeout,
|
|
72
|
+
stream: opts.timestamps !== undefined ? { timestamps: opts.timestamps } : undefined,
|
|
73
|
+
},
|
|
74
|
+
orgId,
|
|
75
|
+
});
|
|
76
|
+
const stdoutStreamUrl = execution.stdoutStreamUrl;
|
|
77
|
+
const stderrStreamUrl = execution.stderrStreamUrl;
|
|
78
|
+
const streamAbortController = new AbortController();
|
|
79
|
+
const streamPromises = [];
|
|
80
|
+
// Check if stdout and stderr are the same stream (combined output)
|
|
81
|
+
const isCombinedOutput = stdoutStreamUrl && stderrStreamUrl && stdoutStreamUrl === stderrStreamUrl;
|
|
82
|
+
if (isCombinedOutput) {
|
|
83
|
+
// Stream combined output to stdout only to avoid duplicates
|
|
84
|
+
logger.debug('using combined output stream (stdout === stderr): %s', stdoutStreamUrl);
|
|
85
|
+
streamPromises.push(streamUrlToWritable(stdoutStreamUrl, stdout, streamAbortController.signal, logger));
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
if (stdoutStreamUrl) {
|
|
89
|
+
logger.debug('starting stdout stream from: %s', stdoutStreamUrl);
|
|
90
|
+
streamPromises.push(streamUrlToWritable(stdoutStreamUrl, stdout, streamAbortController.signal, logger));
|
|
91
|
+
}
|
|
92
|
+
if (stderrStreamUrl) {
|
|
93
|
+
logger.debug('starting stderr stream from: %s', stderrStreamUrl);
|
|
94
|
+
streamPromises.push(streamUrlToWritable(stderrStreamUrl, stderr, streamAbortController.signal, logger));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
let attempts = 0;
|
|
98
|
+
let finalExecution = execution;
|
|
99
|
+
while (attempts < MAX_POLL_ATTEMPTS) {
|
|
100
|
+
if (abortController.signal.aborted) {
|
|
101
|
+
throw new Error('Execution cancelled');
|
|
102
|
+
}
|
|
103
|
+
await sleep(POLL_INTERVAL_MS);
|
|
104
|
+
attempts++;
|
|
105
|
+
try {
|
|
106
|
+
const execInfo = await executionGet(client, {
|
|
107
|
+
executionId: execution.executionId,
|
|
108
|
+
orgId,
|
|
109
|
+
});
|
|
110
|
+
if (execInfo.status === 'completed' ||
|
|
111
|
+
execInfo.status === 'failed' ||
|
|
112
|
+
execInfo.status === 'timeout' ||
|
|
113
|
+
execInfo.status === 'cancelled') {
|
|
114
|
+
finalExecution = {
|
|
115
|
+
executionId: execInfo.executionId,
|
|
116
|
+
status: execInfo.status,
|
|
117
|
+
exitCode: execInfo.exitCode,
|
|
118
|
+
durationMs: execInfo.durationMs,
|
|
119
|
+
};
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Wait for all streams to reach EOF (Pulse blocks until true EOF)
|
|
128
|
+
await Promise.all(streamPromises);
|
|
129
|
+
// Ensure stdout is fully flushed before continuing
|
|
130
|
+
if (!options.json && process.stdout.writable) {
|
|
131
|
+
await new Promise((resolve) => {
|
|
132
|
+
if (process.stdout.writableNeedDrain) {
|
|
133
|
+
process.stdout.once('drain', () => resolve());
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
resolve();
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
const duration = Date.now() - started;
|
|
141
|
+
const output = outputChunks.join('');
|
|
142
|
+
if (!options.json) {
|
|
143
|
+
if (finalExecution.exitCode === 0) {
|
|
144
|
+
// no op
|
|
145
|
+
}
|
|
146
|
+
else if (finalExecution.exitCode !== undefined) {
|
|
147
|
+
tui.error(`failed with exit code ${finalExecution.exitCode} in ${duration}ms`);
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
tui.info(`Execution ${tui.bold(finalExecution.executionId)} - Status: ${finalExecution.status}`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return {
|
|
154
|
+
executionId: finalExecution.executionId,
|
|
155
|
+
status: finalExecution.status,
|
|
156
|
+
exitCode: finalExecution.exitCode,
|
|
157
|
+
durationMs: finalExecution.durationMs,
|
|
158
|
+
output: options.json ? output : undefined,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
finally {
|
|
162
|
+
process.off('SIGINT', handleSignal);
|
|
163
|
+
process.off('SIGTERM', handleSignal);
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
});
|
|
167
|
+
async function streamUrlToWritable(url, writable, signal, logger) {
|
|
168
|
+
try {
|
|
169
|
+
logger.debug('fetching stream: %s', url);
|
|
170
|
+
const response = await fetch(url, { signal });
|
|
171
|
+
logger.debug('stream response status: %d', response.status);
|
|
172
|
+
if (!response.ok || !response.body) {
|
|
173
|
+
logger.debug('stream response not ok or no body');
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
const reader = response.body.getReader();
|
|
177
|
+
// Read until EOF - Pulse will block until data is available
|
|
178
|
+
while (true) {
|
|
179
|
+
const { done, value } = await reader.read();
|
|
180
|
+
if (done) {
|
|
181
|
+
logger.debug('stream EOF');
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
if (value) {
|
|
185
|
+
logger.debug('stream chunk: %d bytes', value.length);
|
|
186
|
+
await writeAndDrain(writable, value);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
catch (err) {
|
|
191
|
+
if (err instanceof Error && err.name === 'AbortError') {
|
|
192
|
+
logger.debug('stream aborted');
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
logger.debug('stream error: %s', err);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
function createCaptureStream(onChunk) {
|
|
199
|
+
return new Writable({
|
|
200
|
+
write(chunk, _encoding, callback) {
|
|
201
|
+
const text = typeof chunk === 'string' ? chunk : chunk.toString('utf-8');
|
|
202
|
+
onChunk(text);
|
|
203
|
+
callback();
|
|
204
|
+
},
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
function sleep(ms) {
|
|
208
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
209
|
+
}
|
|
210
|
+
export default execSubcommand;
|
|
211
|
+
//# sourceMappingURL=exec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/sandbox/exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGhF,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAC/D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC/C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACpE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IACrF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;CACvE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC;IAC3C,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,CAAC,SAAS,CAAC;IACpB,WAAW,EAAE,wCAAwC;IACrD,IAAI,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC;IAC/B,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;IACjD,QAAQ,EAAE;QACT;YACC,OAAO,EAAE,UAAU,CAAC,2CAA2C,CAAC;YAChE,WAAW,EAAE,gCAAgC;SAC7C;QACD;YACC,OAAO,EAAE,UAAU,CAAC,yDAAyD,CAAC;YAC9E,WAAW,EAAE,sBAAsB;SACnC;KACD;IACD,MAAM,EAAE;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC;SACzE,CAAC;QACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;YACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAC/E,UAAU,EAAE,CAAC;iBACX,OAAO,EAAE;iBACT,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,EAAE;iBACV,QAAQ,CAAC,+CAA+C,CAAC;SAC3D,CAAC;QACF,QAAQ,EAAE,yBAAyB;KACnC;IAED,KAAK,CAAC,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;QACjE,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE3B,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,MAAM,YAAY,GAAG,GAAG,EAAE;YACzB,eAAe,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC,CAAC;QACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACnC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAEpC,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,kEAAkE;QAClE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI;YAC1B,CAAC,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1D,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QAClB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI;YAC1B,CAAC,CAAC,mBAAmB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1D,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QAElB,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE;gBAC9C,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE;oBACR,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,MAAM,EAAE,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS;iBACnF;gBACD,KAAK;aACL,CAAC,CAAC;YAEH,MAAM,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC;YAClD,MAAM,eAAe,GAAG,SAAS,CAAC,eAAe,CAAC;YAClD,MAAM,qBAAqB,GAAG,IAAI,eAAe,EAAE,CAAC;YACpD,MAAM,cAAc,GAAoB,EAAE,CAAC;YAE3C,mEAAmE;YACnE,MAAM,gBAAgB,GACrB,eAAe,IAAI,eAAe,IAAI,eAAe,KAAK,eAAe,CAAC;YAE3E,IAAI,gBAAgB,EAAE,CAAC;gBACtB,4DAA4D;gBAC5D,MAAM,CAAC,KAAK,CAAC,sDAAsD,EAAE,eAAe,CAAC,CAAC;gBACtF,cAAc,CAAC,IAAI,CAClB,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAClF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,IAAI,eAAe,EAAE,CAAC;oBACrB,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,eAAe,CAAC,CAAC;oBACjE,cAAc,CAAC,IAAI,CAClB,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAClF,CAAC;gBACH,CAAC;gBAED,IAAI,eAAe,EAAE,CAAC;oBACrB,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,eAAe,CAAC,CAAC;oBACjE,cAAc,CAAC,IAAI,CAClB,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAClF,CAAC;gBACH,CAAC;YACF,CAAC;YAED,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,IAAI,cAAc,GAAG,SAAS,CAAC;YAE/B,OAAO,QAAQ,GAAG,iBAAiB,EAAE,CAAC;gBACrC,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACxC,CAAC;gBAED,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAC9B,QAAQ,EAAE,CAAC;gBAEX,IAAI,CAAC;oBACJ,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE;wBAC3C,WAAW,EAAE,SAAS,CAAC,WAAW;wBAClC,KAAK;qBACL,CAAC,CAAC;oBAEH,IACC,QAAQ,CAAC,MAAM,KAAK,WAAW;wBAC/B,QAAQ,CAAC,MAAM,KAAK,QAAQ;wBAC5B,QAAQ,CAAC,MAAM,KAAK,SAAS;wBAC7B,QAAQ,CAAC,MAAM,KAAK,WAAW,EAC9B,CAAC;wBACF,cAAc,GAAG;4BAChB,WAAW,EAAE,QAAQ,CAAC,WAAW;4BACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;4BAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;yBAC/B,CAAC;wBACF,MAAM;oBACP,CAAC;gBACF,CAAC;gBAAC,MAAM,CAAC;oBACR,SAAS;gBACV,CAAC;YACF,CAAC;YAED,kEAAkE;YAClE,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAElC,mDAAmD;YACnD,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC9C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBACnC,IAAI,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;wBACtC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC/C,CAAC;yBAAM,CAAC;wBACP,OAAO,EAAE,CAAC;oBACX,CAAC;gBACF,CAAC,CAAC,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;YACtC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAErC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnB,IAAI,cAAc,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;oBACnC,QAAQ;gBACT,CAAC;qBAAM,IAAI,cAAc,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAClD,GAAG,CAAC,KAAK,CAAC,yBAAyB,cAAc,CAAC,QAAQ,OAAO,QAAQ,IAAI,CAAC,CAAC;gBAChF,CAAC;qBAAM,CAAC;oBACP,GAAG,CAAC,IAAI,CACP,aAAa,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,cAAc,cAAc,CAAC,MAAM,EAAE,CACtF,CAAC;gBACH,CAAC;YACF,CAAC;YAED,OAAO;gBACN,WAAW,EAAE,cAAc,CAAC,WAAW;gBACvC,MAAM,EAAE,cAAc,CAAC,MAAM;gBAC7B,QAAQ,EAAE,cAAc,CAAC,QAAQ;gBACjC,UAAU,EAAE,cAAc,CAAC,UAAU;gBACrC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;aACzC,CAAC;QACH,CAAC;gBAAS,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACtC,CAAC;IACF,CAAC;CACD,CAAC,CAAC;AAEH,KAAK,UAAU,mBAAmB,CACjC,GAAW,EACX,QAA+B,EAC/B,MAAmB,EACnB,MAAc;IAEd,IAAI,CAAC;QACJ,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAE5D,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YAClD,OAAO;QACR,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAEzC,4DAA4D;QAC5D,OAAO,IAAI,EAAE,CAAC;YACb,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC3B,MAAM;YACP,CAAC;YAED,IAAI,KAAK,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBACrD,MAAM,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC;QACF,CAAC;IACF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACvD,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC/B,OAAO;QACR,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;AACF,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgC;IAC5D,OAAO,IAAI,QAAQ,CAAC;QACnB,KAAK,CACJ,KAAsB,EACtB,SAAiB,EACjB,QAAwC;YAExC,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACzE,OAAO,CAAC,IAAI,CAAC,CAAC;YACd,QAAQ,EAAE,CAAC;QACZ,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACxB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../src/cmd/cloud/sandbox/execution/get.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,aAAa,yCAkFxB,CAAC;AAEH,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createCommand } from '../../../../types';
|
|
3
|
+
import * as tui from '../../../../tui';
|
|
4
|
+
import { createSandboxClient } from '../util';
|
|
5
|
+
import { getCommand } from '../../../../command-prefix';
|
|
6
|
+
import { executionGet } from '@agentuity/server';
|
|
7
|
+
const ExecutionGetResponseSchema = z.object({
|
|
8
|
+
executionId: z.string().describe('Execution ID'),
|
|
9
|
+
sandboxId: z.string().describe('Sandbox ID'),
|
|
10
|
+
status: z.string().describe('Current status'),
|
|
11
|
+
command: z.array(z.string()).optional().describe('Command that was executed'),
|
|
12
|
+
exitCode: z.number().optional().describe('Exit code'),
|
|
13
|
+
durationMs: z.number().optional().describe('Duration in milliseconds'),
|
|
14
|
+
startedAt: z.string().optional().describe('Start timestamp'),
|
|
15
|
+
completedAt: z.string().optional().describe('Completion timestamp'),
|
|
16
|
+
error: z.string().optional().describe('Error message if failed'),
|
|
17
|
+
stdoutStreamUrl: z.string().optional().describe('URL to stream stdout'),
|
|
18
|
+
stderrStreamUrl: z.string().optional().describe('URL to stream stderr'),
|
|
19
|
+
});
|
|
20
|
+
export const getSubcommand = createCommand({
|
|
21
|
+
name: 'get',
|
|
22
|
+
aliases: ['info', 'show'],
|
|
23
|
+
description: 'Get information about a specific execution',
|
|
24
|
+
tags: ['read-only', 'fast', 'requires-auth'],
|
|
25
|
+
requires: { auth: true, region: true, org: true },
|
|
26
|
+
idempotent: true,
|
|
27
|
+
examples: [
|
|
28
|
+
{
|
|
29
|
+
command: getCommand('cloud sandbox execution get exec_abc123'),
|
|
30
|
+
description: 'Get execution information',
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
schema: {
|
|
34
|
+
args: z.object({
|
|
35
|
+
executionId: z.string().describe('Execution ID'),
|
|
36
|
+
}),
|
|
37
|
+
response: ExecutionGetResponseSchema,
|
|
38
|
+
},
|
|
39
|
+
async handler(ctx) {
|
|
40
|
+
const { args, options, auth, region, logger, orgId } = ctx;
|
|
41
|
+
const client = createSandboxClient(logger, auth, region);
|
|
42
|
+
const result = await executionGet(client, { executionId: args.executionId, orgId });
|
|
43
|
+
if (!options.json) {
|
|
44
|
+
const statusColor = result.status === 'completed'
|
|
45
|
+
? tui.colorSuccess
|
|
46
|
+
: result.status === 'running'
|
|
47
|
+
? tui.colorWarning
|
|
48
|
+
: result.status === 'failed' || result.status === 'timeout'
|
|
49
|
+
? tui.colorError
|
|
50
|
+
: tui.colorMuted;
|
|
51
|
+
console.log(`${tui.muted('Execution:')} ${tui.bold(result.executionId)}`);
|
|
52
|
+
console.log(`${tui.muted('Sandbox:')} ${result.sandboxId}`);
|
|
53
|
+
console.log(`${tui.muted('Status:')} ${statusColor(result.status)}`);
|
|
54
|
+
if (result.exitCode !== undefined) {
|
|
55
|
+
const exitCodeColor = result.exitCode === 0 ? tui.colorSuccess : tui.colorError;
|
|
56
|
+
console.log(`${tui.muted('Exit Code:')} ${exitCodeColor(String(result.exitCode))}`);
|
|
57
|
+
}
|
|
58
|
+
if (result.durationMs !== undefined) {
|
|
59
|
+
console.log(`${tui.muted('Duration:')} ${result.durationMs}ms`);
|
|
60
|
+
}
|
|
61
|
+
if (result.startedAt) {
|
|
62
|
+
console.log(`${tui.muted('Started:')} ${result.startedAt}`);
|
|
63
|
+
}
|
|
64
|
+
if (result.completedAt) {
|
|
65
|
+
console.log(`${tui.muted('Completed:')} ${result.completedAt}`);
|
|
66
|
+
}
|
|
67
|
+
if (result.error) {
|
|
68
|
+
console.log(`${tui.muted('Error:')} ${tui.colorError(result.error)}`);
|
|
69
|
+
}
|
|
70
|
+
if (result.stdoutStreamUrl) {
|
|
71
|
+
console.log(`${tui.muted('Stdout:')} ${result.stdoutStreamUrl}`);
|
|
72
|
+
}
|
|
73
|
+
if (result.stderrStreamUrl) {
|
|
74
|
+
console.log(`${tui.muted('Stderr:')} ${result.stderrStreamUrl}`);
|
|
75
|
+
}
|
|
76
|
+
if (result.command && result.command.length > 0) {
|
|
77
|
+
console.log(`${tui.muted('Command:')} ${result.command.join(' ')}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
executionId: result.executionId,
|
|
82
|
+
sandboxId: result.sandboxId,
|
|
83
|
+
status: result.status,
|
|
84
|
+
command: result.command,
|
|
85
|
+
exitCode: result.exitCode,
|
|
86
|
+
durationMs: result.durationMs,
|
|
87
|
+
startedAt: result.startedAt,
|
|
88
|
+
completedAt: result.completedAt,
|
|
89
|
+
error: result.error,
|
|
90
|
+
stdoutStreamUrl: result.stdoutStreamUrl,
|
|
91
|
+
stderrStreamUrl: result.stderrStreamUrl,
|
|
92
|
+
};
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
export default getSubcommand;
|
|
96
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../../src/cmd/cloud/sandbox/execution/get.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/cmd/cloud/sandbox/execution/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,OAAO,yCAiBlB,CAAC;AAEH,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createCommand } from '../../../../types';
|
|
2
|
+
import { getSubcommand } from './get';
|
|
3
|
+
import { listSubcommand } from './list';
|
|
4
|
+
import { getCommand } from '../../../../command-prefix';
|
|
5
|
+
export const command = createCommand({
|
|
6
|
+
name: 'execution',
|
|
7
|
+
aliases: ['executions'],
|
|
8
|
+
description: 'Manage sandbox executions',
|
|
9
|
+
tags: ['read-only', 'requires-auth'],
|
|
10
|
+
examples: [
|
|
11
|
+
{
|
|
12
|
+
command: getCommand('cloud sandbox execution list snbx_abc123'),
|
|
13
|
+
description: 'List executions for a sandbox',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
command: getCommand('cloud sandbox execution get exec_abc123'),
|
|
17
|
+
description: 'Get details of a specific execution',
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
subcommands: [getSubcommand, listSubcommand],
|
|
21
|
+
requires: { auth: true, region: true, org: true },
|
|
22
|
+
});
|
|
23
|
+
export default command;
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/cmd/cloud/sandbox/execution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC;IACpC,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,CAAC,YAAY,CAAC;IACvB,WAAW,EAAE,2BAA2B;IACxC,IAAI,EAAE,CAAC,WAAW,EAAE,eAAe,CAAC;IACpC,QAAQ,EAAE;QACT;YACC,OAAO,EAAE,UAAU,CAAC,0CAA0C,CAAC;YAC/D,WAAW,EAAE,+BAA+B;SAC5C;QACD;YACC,OAAO,EAAE,UAAU,CAAC,yCAAyC,CAAC;YAC9D,WAAW,EAAE,qCAAqC;SAClD;KACD;IACD,WAAW,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;IAC5C,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;CACjD,CAAC,CAAC;AAEH,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../../src/cmd/cloud/sandbox/execution/list.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,cAAc,yCAsFzB,CAAC;AAEH,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createCommand } from '../../../../types';
|
|
3
|
+
import * as tui from '../../../../tui';
|
|
4
|
+
import { createSandboxClient } from '../util';
|
|
5
|
+
import { getCommand } from '../../../../command-prefix';
|
|
6
|
+
import { executionList } from '@agentuity/server';
|
|
7
|
+
const ExecutionInfoSchema = z.object({
|
|
8
|
+
executionId: z.string().describe('Execution ID'),
|
|
9
|
+
sandboxId: z.string().describe('Sandbox ID'),
|
|
10
|
+
status: z.string().describe('Current status'),
|
|
11
|
+
exitCode: z.number().optional().describe('Exit code'),
|
|
12
|
+
durationMs: z.number().optional().describe('Duration in milliseconds'),
|
|
13
|
+
startedAt: z.string().optional().describe('Start timestamp'),
|
|
14
|
+
completedAt: z.string().optional().describe('Completion timestamp'),
|
|
15
|
+
error: z.string().optional().describe('Error message if failed'),
|
|
16
|
+
});
|
|
17
|
+
const ExecutionListResponseSchema = z.object({
|
|
18
|
+
executions: z.array(ExecutionInfoSchema).describe('List of executions'),
|
|
19
|
+
});
|
|
20
|
+
export const listSubcommand = createCommand({
|
|
21
|
+
name: 'list',
|
|
22
|
+
aliases: ['ls'],
|
|
23
|
+
description: 'List executions for a sandbox',
|
|
24
|
+
tags: ['read-only', 'fast', 'requires-auth'],
|
|
25
|
+
requires: { auth: true, region: true, org: true },
|
|
26
|
+
idempotent: true,
|
|
27
|
+
examples: [
|
|
28
|
+
{
|
|
29
|
+
command: getCommand('cloud sandbox execution list snbx_abc123'),
|
|
30
|
+
description: 'List executions for a sandbox',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
command: getCommand('cloud sandbox execution list snbx_abc123 --limit 10'),
|
|
34
|
+
description: 'List with a limit',
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
schema: {
|
|
38
|
+
args: z.object({
|
|
39
|
+
sandboxId: z.string().describe('Sandbox ID'),
|
|
40
|
+
}),
|
|
41
|
+
options: z.object({
|
|
42
|
+
limit: z.number().optional().describe('Maximum number of results (default: 50, max: 100)'),
|
|
43
|
+
}),
|
|
44
|
+
response: ExecutionListResponseSchema,
|
|
45
|
+
},
|
|
46
|
+
async handler(ctx) {
|
|
47
|
+
const { args, opts, options, auth, region, logger, orgId } = ctx;
|
|
48
|
+
const client = createSandboxClient(logger, auth, region);
|
|
49
|
+
const result = await executionList(client, {
|
|
50
|
+
sandboxId: args.sandboxId,
|
|
51
|
+
orgId,
|
|
52
|
+
limit: opts.limit,
|
|
53
|
+
});
|
|
54
|
+
if (!options.json) {
|
|
55
|
+
if (result.executions.length === 0) {
|
|
56
|
+
tui.info('No executions found');
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
const tableData = result.executions.map((exec) => {
|
|
60
|
+
const statusColor = exec.status === 'completed'
|
|
61
|
+
? tui.colorSuccess
|
|
62
|
+
: exec.status === 'running'
|
|
63
|
+
? tui.colorWarning
|
|
64
|
+
: exec.status === 'failed' || exec.status === 'timeout'
|
|
65
|
+
? tui.colorError
|
|
66
|
+
: tui.colorMuted;
|
|
67
|
+
return {
|
|
68
|
+
ID: exec.executionId,
|
|
69
|
+
Status: statusColor(exec.status),
|
|
70
|
+
'Exit Code': exec.exitCode !== undefined ? String(exec.exitCode) : '-',
|
|
71
|
+
Duration: exec.durationMs !== undefined ? `${exec.durationMs}ms` : '-',
|
|
72
|
+
Started: exec.startedAt || '-',
|
|
73
|
+
};
|
|
74
|
+
});
|
|
75
|
+
tui.table(tableData, [
|
|
76
|
+
{ name: 'ID', alignment: 'left' },
|
|
77
|
+
{ name: 'Status', alignment: 'left' },
|
|
78
|
+
{ name: 'Exit Code', alignment: 'right' },
|
|
79
|
+
{ name: 'Duration', alignment: 'right' },
|
|
80
|
+
{ name: 'Started', alignment: 'left' },
|
|
81
|
+
]);
|
|
82
|
+
tui.info(`Total: ${result.executions.length} ${tui.plural(result.executions.length, 'execution', 'executions')}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
executions: result.executions.map((e) => ({
|
|
87
|
+
executionId: e.executionId,
|
|
88
|
+
sandboxId: e.sandboxId,
|
|
89
|
+
status: e.status,
|
|
90
|
+
exitCode: e.exitCode,
|
|
91
|
+
durationMs: e.durationMs,
|
|
92
|
+
startedAt: e.startedAt,
|
|
93
|
+
completedAt: e.completedAt,
|
|
94
|
+
error: e.error,
|
|
95
|
+
})),
|
|
96
|
+
};
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
export default listSubcommand;
|
|
100
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../src/cmd/cloud/sandbox/execution/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/cmd/cloud/sandbox/get.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,aAAa,sCAiFxB,CAAC;AAEH,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createCommand } from '../../../types';
|
|
3
|
+
import * as tui from '../../../tui';
|
|
4
|
+
import { createSandboxClient } from './util';
|
|
5
|
+
import { getCommand } from '../../../command-prefix';
|
|
6
|
+
import { sandboxGet } from '@agentuity/server';
|
|
7
|
+
const SandboxGetResponseSchema = z.object({
|
|
8
|
+
sandboxId: z.string().describe('Sandbox ID'),
|
|
9
|
+
status: z.string().describe('Current status'),
|
|
10
|
+
createdAt: z.string().describe('Creation timestamp'),
|
|
11
|
+
region: z.string().optional().describe('Region where sandbox is running'),
|
|
12
|
+
snapshotId: z.string().optional().describe('Snapshot ID sandbox was created from'),
|
|
13
|
+
snapshotTag: z.string().optional().describe('Snapshot tag sandbox was created from'),
|
|
14
|
+
executions: z.number().describe('Number of executions'),
|
|
15
|
+
stdoutStreamUrl: z.string().optional().describe('URL to stdout output stream'),
|
|
16
|
+
stderrStreamUrl: z.string().optional().describe('URL to stderr output stream'),
|
|
17
|
+
dependencies: z.array(z.string()).optional().describe('Apt packages installed'),
|
|
18
|
+
});
|
|
19
|
+
export const getSubcommand = createCommand({
|
|
20
|
+
name: 'get',
|
|
21
|
+
aliases: ['info', 'show'],
|
|
22
|
+
description: 'Get information about a sandbox',
|
|
23
|
+
tags: ['read-only', 'fast', 'requires-auth'],
|
|
24
|
+
requires: { auth: true, region: true, org: true },
|
|
25
|
+
idempotent: true,
|
|
26
|
+
examples: [
|
|
27
|
+
{
|
|
28
|
+
command: getCommand('cloud sandbox get abc123'),
|
|
29
|
+
description: 'Get sandbox information',
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
schema: {
|
|
33
|
+
args: z.object({
|
|
34
|
+
sandboxId: z.string().describe('Sandbox ID'),
|
|
35
|
+
}),
|
|
36
|
+
response: SandboxGetResponseSchema,
|
|
37
|
+
},
|
|
38
|
+
async handler(ctx) {
|
|
39
|
+
const { args, options, auth, region, logger, orgId } = ctx;
|
|
40
|
+
const client = createSandboxClient(logger, auth, region);
|
|
41
|
+
const result = await sandboxGet(client, { sandboxId: args.sandboxId, orgId });
|
|
42
|
+
if (!options.json) {
|
|
43
|
+
const statusColor = result.status === 'running'
|
|
44
|
+
? tui.colorSuccess
|
|
45
|
+
: result.status === 'idle'
|
|
46
|
+
? tui.colorWarning
|
|
47
|
+
: result.status === 'failed'
|
|
48
|
+
? tui.colorError
|
|
49
|
+
: tui.colorMuted;
|
|
50
|
+
console.log(`${tui.muted('Sandbox:')} ${tui.bold(result.sandboxId)}`);
|
|
51
|
+
console.log(`${tui.muted('Status:')} ${statusColor(result.status)}`);
|
|
52
|
+
console.log(`${tui.muted('Created:')} ${result.createdAt}`);
|
|
53
|
+
if (result.region) {
|
|
54
|
+
console.log(`${tui.muted('Region:')} ${result.region}`);
|
|
55
|
+
}
|
|
56
|
+
if (result.snapshotId || result.snapshotTag) {
|
|
57
|
+
const snapshotDisplay = result.snapshotTag
|
|
58
|
+
? `${result.snapshotTag} ${tui.muted('(' + result.snapshotId + ')')}`
|
|
59
|
+
: result.snapshotId;
|
|
60
|
+
console.log(`${tui.muted('Snapshot:')} ${snapshotDisplay}`);
|
|
61
|
+
}
|
|
62
|
+
console.log(`${tui.muted('Executions:')} ${result.executions}`);
|
|
63
|
+
if (result.stdoutStreamUrl &&
|
|
64
|
+
result.stderrStreamUrl &&
|
|
65
|
+
result.stdoutStreamUrl === result.stderrStreamUrl) {
|
|
66
|
+
console.log(`${tui.muted('Stream:')} ${tui.link(result.stdoutStreamUrl)}`);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
if (result.stdoutStreamUrl) {
|
|
70
|
+
console.log(`${tui.muted('Stream (stdout):')} ${tui.link(result.stdoutStreamUrl)}`);
|
|
71
|
+
}
|
|
72
|
+
if (result.stderrStreamUrl) {
|
|
73
|
+
console.log(`${tui.muted('Stream (stderr):')} ${tui.link(result.stderrStreamUrl)}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (result.dependencies && result.dependencies.length > 0) {
|
|
77
|
+
console.log(`${tui.muted('Dependencies:')} ${result.dependencies.join(', ')}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
sandboxId: result.sandboxId,
|
|
82
|
+
status: result.status,
|
|
83
|
+
createdAt: result.createdAt,
|
|
84
|
+
region: result.region,
|
|
85
|
+
snapshotId: result.snapshotId,
|
|
86
|
+
snapshotTag: result.snapshotTag,
|
|
87
|
+
executions: result.executions,
|
|
88
|
+
stdoutStreamUrl: result.stdoutStreamUrl,
|
|
89
|
+
stderrStreamUrl: result.stderrStreamUrl,
|
|
90
|
+
dependencies: result.dependencies,
|
|
91
|
+
};
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
export default getSubcommand;
|
|
95
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/sandbox/get.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cmd/cloud/sandbox/index.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,OAAO,sCA+BlB,CAAC;AAEH,eAAe,OAAO,CAAC"}
|