@agentuity/cli 1.0.1 → 1.0.3
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/AGENTS.md +40 -24
- package/bin/cli.ts +47 -22
- package/dist/agent-detection.d.ts +23 -38
- package/dist/agent-detection.d.ts.map +1 -1
- package/dist/agent-detection.js +412 -153
- package/dist/agent-detection.js.map +1 -1
- package/dist/ai-help.d.ts +23 -0
- package/dist/ai-help.d.ts.map +1 -0
- package/dist/ai-help.js +328 -0
- package/dist/ai-help.js.map +1 -0
- package/dist/api.js +1 -1
- package/dist/api.js.map +1 -1
- package/dist/auth.d.ts +10 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +176 -16
- package/dist/auth.js.map +1 -1
- package/dist/banner.d.ts.map +1 -1
- package/dist/banner.js +5 -0
- package/dist/banner.js.map +1 -1
- package/dist/cache/agent-intro.d.ts +13 -0
- package/dist/cache/agent-intro.d.ts.map +1 -0
- package/dist/cache/agent-intro.js +54 -0
- package/dist/cache/agent-intro.js.map +1 -0
- package/dist/cache/index.d.ts +1 -0
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +1 -0
- package/dist/cache/index.js.map +1 -1
- package/dist/cache/resource-region.d.ts +3 -2
- package/dist/cache/resource-region.d.ts.map +1 -1
- package/dist/cache/resource-region.js +13 -4
- package/dist/cache/resource-region.js.map +1 -1
- package/dist/catalyst.d.ts +7 -0
- package/dist/catalyst.d.ts.map +1 -0
- package/dist/catalyst.js +15 -0
- package/dist/catalyst.js.map +1 -0
- package/dist/cli.d.ts +12 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +290 -67
- package/dist/cli.js.map +1 -1
- package/dist/cmd/ai/detect.d.ts +3 -0
- package/dist/cmd/ai/detect.d.ts.map +1 -0
- package/dist/cmd/ai/detect.js +49 -0
- package/dist/cmd/ai/detect.js.map +1 -0
- package/dist/cmd/ai/index.d.ts.map +1 -1
- package/dist/cmd/ai/index.js +18 -1
- package/dist/cmd/ai/index.js.map +1 -1
- package/dist/cmd/ai/intro.d.ts +7 -0
- package/dist/cmd/ai/intro.d.ts.map +1 -0
- package/dist/cmd/ai/intro.js +141 -0
- package/dist/cmd/ai/intro.js.map +1 -0
- package/dist/cmd/ai/opencode/run.d.ts.map +1 -1
- package/dist/cmd/ai/opencode/run.js +5 -0
- package/dist/cmd/ai/opencode/run.js.map +1 -1
- package/dist/cmd/build/ast.d.ts.map +1 -1
- package/dist/cmd/build/ast.js +79 -0
- package/dist/cmd/build/ast.js.map +1 -1
- package/dist/cmd/build/vite/bun-dev-server.d.ts.map +1 -1
- package/dist/cmd/build/vite/bun-dev-server.js +2 -0
- package/dist/cmd/build/vite/bun-dev-server.js.map +1 -1
- package/dist/cmd/build/vite/docs-generator.d.ts.map +1 -1
- package/dist/cmd/build/vite/docs-generator.js +15 -1
- package/dist/cmd/build/vite/docs-generator.js.map +1 -1
- package/dist/cmd/build/vite/env-types-generator.d.ts +26 -0
- package/dist/cmd/build/vite/env-types-generator.d.ts.map +1 -0
- package/dist/cmd/build/vite/env-types-generator.js +110 -0
- package/dist/cmd/build/vite/env-types-generator.js.map +1 -0
- package/dist/cmd/build/vite/index.d.ts +2 -0
- package/dist/cmd/build/vite/index.d.ts.map +1 -1
- package/dist/cmd/build/vite/index.js +12 -1
- package/dist/cmd/build/vite/index.js.map +1 -1
- package/dist/cmd/build/vite/public-asset-path-plugin.d.ts.map +1 -1
- package/dist/cmd/build/vite/public-asset-path-plugin.js.map +1 -1
- package/dist/cmd/build/vite/vite-builder.d.ts +2 -0
- package/dist/cmd/build/vite/vite-builder.d.ts.map +1 -1
- package/dist/cmd/build/vite/vite-builder.js +10 -1
- package/dist/cmd/build/vite/vite-builder.js.map +1 -1
- package/dist/cmd/cloud/db/create.js.map +1 -1
- package/dist/cmd/cloud/db/delete.js.map +1 -1
- package/dist/cmd/cloud/db/get.d.ts.map +1 -1
- package/dist/cmd/cloud/db/get.js +27 -12
- package/dist/cmd/cloud/db/get.js.map +1 -1
- package/dist/cmd/cloud/deploy-fork.d.ts.map +1 -1
- package/dist/cmd/cloud/deploy-fork.js +2 -0
- package/dist/cmd/cloud/deploy-fork.js.map +1 -1
- package/dist/cmd/cloud/deploy.d.ts.map +1 -1
- package/dist/cmd/cloud/deploy.js +17 -0
- package/dist/cmd/cloud/deploy.js.map +1 -1
- package/dist/cmd/cloud/env/import.js.map +1 -1
- package/dist/cmd/cloud/env/list.js.map +1 -1
- package/dist/cmd/cloud/env/push.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/util.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/util.js +3 -3
- package/dist/cmd/cloud/keyvalue/util.js.map +1 -1
- package/dist/cmd/cloud/machine/list.js +3 -3
- package/dist/cmd/cloud/machine/list.js.map +1 -1
- package/dist/cmd/cloud/region/index.js.map +1 -1
- package/dist/cmd/cloud/region-lookup.d.ts +7 -4
- package/dist/cmd/cloud/region-lookup.d.ts.map +1 -1
- package/dist/cmd/cloud/region-lookup.js +59 -14
- package/dist/cmd/cloud/region-lookup.js.map +1 -1
- package/dist/cmd/cloud/sandbox/cp.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/cp.js +7 -5
- package/dist/cmd/cloud/sandbox/cp.js.map +1 -1
- package/dist/cmd/cloud/sandbox/create.js +2 -2
- package/dist/cmd/cloud/sandbox/create.js.map +1 -1
- package/dist/cmd/cloud/sandbox/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/delete.js +8 -7
- package/dist/cmd/cloud/sandbox/delete.js.map +1 -1
- package/dist/cmd/cloud/sandbox/download.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/download.js +7 -5
- package/dist/cmd/cloud/sandbox/download.js.map +1 -1
- package/dist/cmd/cloud/sandbox/env.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/env.js +7 -5
- package/dist/cmd/cloud/sandbox/env.js.map +1 -1
- package/dist/cmd/cloud/sandbox/exec.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/exec.js +7 -5
- package/dist/cmd/cloud/sandbox/exec.js.map +1 -1
- package/dist/cmd/cloud/sandbox/get.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/get.js +12 -7
- package/dist/cmd/cloud/sandbox/get.js.map +1 -1
- package/dist/cmd/cloud/sandbox/list.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/list.js +40 -63
- package/dist/cmd/cloud/sandbox/list.js.map +1 -1
- package/dist/cmd/cloud/sandbox/ls.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/ls.js +7 -5
- package/dist/cmd/cloud/sandbox/ls.js.map +1 -1
- package/dist/cmd/cloud/sandbox/mkdir.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/mkdir.js +7 -5
- package/dist/cmd/cloud/sandbox/mkdir.js.map +1 -1
- package/dist/cmd/cloud/sandbox/rm.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/rm.js +7 -5
- package/dist/cmd/cloud/sandbox/rm.js.map +1 -1
- package/dist/cmd/cloud/sandbox/rmdir.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/rmdir.js +7 -5
- package/dist/cmd/cloud/sandbox/rmdir.js.map +1 -1
- package/dist/cmd/cloud/sandbox/run.js +1 -1
- package/dist/cmd/cloud/sandbox/run.js.map +1 -1
- package/dist/cmd/cloud/sandbox/snapshot/build.js.map +1 -1
- package/dist/cmd/cloud/sandbox/snapshot/get.js.map +1 -1
- package/dist/cmd/cloud/sandbox/upload.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/upload.js +7 -5
- package/dist/cmd/cloud/sandbox/upload.js.map +1 -1
- package/dist/cmd/cloud/sandbox/util.d.ts +2 -2
- package/dist/cmd/cloud/sandbox/util.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/util.js +14 -13
- package/dist/cmd/cloud/sandbox/util.js.map +1 -1
- package/dist/cmd/cloud/ssh.d.ts.map +1 -1
- package/dist/cmd/cloud/ssh.js +3 -3
- package/dist/cmd/cloud/ssh.js.map +1 -1
- package/dist/cmd/cloud/storage/create.js.map +1 -1
- package/dist/cmd/cloud/storage/delete.js.map +1 -1
- package/dist/cmd/cloud/storage/get.d.ts.map +1 -1
- package/dist/cmd/cloud/storage/get.js +5 -11
- package/dist/cmd/cloud/storage/get.js.map +1 -1
- package/dist/cmd/cloud/storage/list.d.ts.map +1 -1
- package/dist/cmd/cloud/storage/list.js +6 -6
- package/dist/cmd/cloud/storage/list.js.map +1 -1
- package/dist/cmd/cloud/stream/create.d.ts.map +1 -1
- package/dist/cmd/cloud/stream/create.js +7 -4
- package/dist/cmd/cloud/stream/create.js.map +1 -1
- package/dist/cmd/cloud/stream/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/stream/delete.js +25 -4
- package/dist/cmd/cloud/stream/delete.js.map +1 -1
- package/dist/cmd/cloud/stream/get.d.ts.map +1 -1
- package/dist/cmd/cloud/stream/get.js +91 -62
- package/dist/cmd/cloud/stream/get.js.map +1 -1
- package/dist/cmd/cloud/stream/list.d.ts.map +1 -1
- package/dist/cmd/cloud/stream/list.js +66 -38
- package/dist/cmd/cloud/stream/list.js.map +1 -1
- package/dist/cmd/cloud/stream/util.d.ts +20 -0
- package/dist/cmd/cloud/stream/util.d.ts.map +1 -1
- package/dist/cmd/cloud/stream/util.js +27 -3
- package/dist/cmd/cloud/stream/util.js.map +1 -1
- package/dist/cmd/cloud/vector/util.d.ts.map +1 -1
- package/dist/cmd/cloud/vector/util.js +3 -3
- package/dist/cmd/cloud/vector/util.js.map +1 -1
- package/dist/cmd/dev/index.js.map +1 -1
- package/dist/cmd/git/account/add.js.map +1 -1
- package/dist/cmd/git/list.js.map +1 -1
- package/dist/cmd/project/add/database.d.ts +2 -0
- package/dist/cmd/project/add/database.d.ts.map +1 -0
- package/dist/cmd/project/add/database.js +123 -0
- package/dist/cmd/project/add/database.js.map +1 -0
- package/dist/cmd/project/add/domain.d.ts +2 -0
- package/dist/cmd/project/add/domain.d.ts.map +1 -0
- package/dist/cmd/project/add/domain.js +152 -0
- package/dist/cmd/project/add/domain.js.map +1 -0
- package/dist/cmd/project/add/index.d.ts +2 -0
- package/dist/cmd/project/add/index.d.ts.map +1 -0
- package/dist/cmd/project/add/index.js +35 -0
- package/dist/cmd/project/add/index.js.map +1 -0
- package/dist/cmd/project/add/storage.d.ts +2 -0
- package/dist/cmd/project/add/storage.d.ts.map +1 -0
- package/dist/cmd/project/add/storage.js +123 -0
- package/dist/cmd/project/add/storage.js.map +1 -0
- package/dist/cmd/project/auth/init.js.map +1 -1
- package/dist/cmd/project/index.d.ts.map +1 -1
- package/dist/cmd/project/index.js +7 -0
- package/dist/cmd/project/index.js.map +1 -1
- package/dist/cmd/project/reconcile.d.ts.map +1 -1
- package/dist/cmd/project/reconcile.js +32 -0
- package/dist/cmd/project/reconcile.js.map +1 -1
- package/dist/cmd/support/report.js.map +1 -1
- package/dist/cmd/support/system.js +2 -2
- package/dist/cmd/support/system.js.map +1 -1
- package/dist/config.d.ts +6 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +31 -7
- package/dist/config.js.map +1 -1
- package/dist/errors.d.ts +2 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +5 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/repl.js +2 -1
- package/dist/repl.js.map +1 -1
- package/dist/tui/box.d.ts +3 -1
- package/dist/tui/box.d.ts.map +1 -1
- package/dist/tui/box.js +22 -7
- package/dist/tui/box.js.map +1 -1
- package/dist/tui/colors.d.ts +0 -3
- package/dist/tui/colors.d.ts.map +1 -1
- package/dist/tui/colors.js +76 -23
- package/dist/tui/colors.js.map +1 -1
- package/dist/tui/prompt.d.ts +2 -0
- package/dist/tui/prompt.d.ts.map +1 -1
- package/dist/tui/prompt.js +44 -3
- package/dist/tui/prompt.js.map +1 -1
- package/dist/tui/symbols.d.ts +0 -4
- package/dist/tui/symbols.d.ts.map +1 -1
- package/dist/tui/symbols.js +5 -0
- package/dist/tui/symbols.js.map +1 -1
- package/dist/tui.d.ts +8 -0
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +54 -9
- package/dist/tui.js.map +1 -1
- package/dist/types.d.ts +37 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/dist/version-check.d.ts.map +1 -1
- package/dist/version-check.js +5 -0
- package/dist/version-check.js.map +1 -1
- package/package.json +6 -6
- package/src/agent-detection.ts +457 -160
- package/src/ai-help.ts +393 -0
- package/src/api.ts +1 -1
- package/src/auth.ts +226 -17
- package/src/banner.ts +5 -0
- package/src/cache/agent-intro.ts +62 -0
- package/src/cache/index.ts +2 -0
- package/src/cache/resource-region.ts +28 -7
- package/src/catalyst.ts +16 -0
- package/src/cli.ts +375 -93
- package/src/cmd/ai/detect.ts +54 -0
- package/src/cmd/ai/index.ts +18 -1
- package/src/cmd/ai/intro.ts +154 -0
- package/src/cmd/ai/opencode/run.ts +5 -0
- package/src/cmd/build/ast.ts +97 -0
- package/src/cmd/build/vite/bun-dev-server.ts +2 -0
- package/src/cmd/build/vite/docs-generator.ts +15 -1
- package/src/cmd/build/vite/env-types-generator.ts +145 -0
- package/src/cmd/build/vite/index.ts +15 -0
- package/src/cmd/build/vite/public-asset-path-plugin.ts +8 -2
- package/src/cmd/build/vite/vite-builder.ts +31 -11
- package/src/cmd/cloud/db/create.ts +16 -16
- package/src/cmd/cloud/db/delete.ts +19 -19
- package/src/cmd/cloud/db/get.ts +32 -17
- package/src/cmd/cloud/deploy-fork.ts +2 -0
- package/src/cmd/cloud/deploy.ts +17 -0
- package/src/cmd/cloud/env/import.ts +6 -6
- package/src/cmd/cloud/env/list.ts +11 -11
- package/src/cmd/cloud/env/push.ts +6 -6
- package/src/cmd/cloud/keyvalue/util.ts +3 -3
- package/src/cmd/cloud/machine/list.ts +3 -3
- package/src/cmd/cloud/region/index.ts +3 -3
- package/src/cmd/cloud/region-lookup.ts +82 -22
- package/src/cmd/cloud/sandbox/cp.ts +9 -4
- package/src/cmd/cloud/sandbox/create.ts +2 -2
- package/src/cmd/cloud/sandbox/delete.ts +10 -7
- package/src/cmd/cloud/sandbox/download.ts +8 -5
- package/src/cmd/cloud/sandbox/env.ts +8 -5
- package/src/cmd/cloud/sandbox/exec.ts +10 -5
- package/src/cmd/cloud/sandbox/get.ts +13 -7
- package/src/cmd/cloud/sandbox/list.ts +47 -73
- package/src/cmd/cloud/sandbox/ls.ts +9 -5
- package/src/cmd/cloud/sandbox/mkdir.ts +9 -5
- package/src/cmd/cloud/sandbox/rm.ts +9 -5
- package/src/cmd/cloud/sandbox/rmdir.ts +9 -5
- package/src/cmd/cloud/sandbox/run.ts +1 -1
- package/src/cmd/cloud/sandbox/snapshot/build.ts +31 -31
- package/src/cmd/cloud/sandbox/snapshot/get.ts +17 -17
- package/src/cmd/cloud/sandbox/upload.ts +8 -5
- package/src/cmd/cloud/sandbox/util.ts +15 -14
- package/src/cmd/cloud/ssh.ts +2 -4
- package/src/cmd/cloud/storage/create.ts +16 -16
- package/src/cmd/cloud/storage/delete.ts +19 -19
- package/src/cmd/cloud/storage/get.ts +5 -16
- package/src/cmd/cloud/storage/list.ts +12 -6
- package/src/cmd/cloud/stream/create.ts +8 -4
- package/src/cmd/cloud/stream/delete.ts +28 -4
- package/src/cmd/cloud/stream/get.ts +102 -64
- package/src/cmd/cloud/stream/list.ts +76 -44
- package/src/cmd/cloud/stream/util.ts +39 -3
- package/src/cmd/cloud/vector/util.ts +3 -3
- package/src/cmd/dev/index.ts +4 -4
- package/src/cmd/git/account/add.ts +5 -5
- package/src/cmd/git/list.ts +7 -7
- package/src/cmd/project/add/database.ts +145 -0
- package/src/cmd/project/add/domain.ts +181 -0
- package/src/cmd/project/add/index.ts +35 -0
- package/src/cmd/project/add/storage.ts +147 -0
- package/src/cmd/project/auth/init.ts +6 -6
- package/src/cmd/project/index.ts +7 -0
- package/src/cmd/project/reconcile.ts +40 -0
- package/src/cmd/support/report.ts +5 -5
- package/src/cmd/support/system.ts +2 -2
- package/src/config.ts +40 -12
- package/src/errors.ts +7 -0
- package/src/index.ts +11 -0
- package/src/repl.ts +4 -1
- package/src/tui/box.ts +24 -9
- package/src/tui/colors.ts +83 -26
- package/src/tui/prompt.ts +55 -3
- package/src/tui/symbols.ts +6 -0
- package/src/tui.ts +55 -9
- package/src/types.ts +46 -2
- package/src/version-check.ts +6 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { createCommand } from '../../../types';
|
|
3
3
|
import * as tui from '../../../tui';
|
|
4
|
-
import {
|
|
4
|
+
import { createSandboxClient, clearSandboxRegionCache } from './util';
|
|
5
5
|
import { getCommand } from '../../../command-prefix';
|
|
6
|
-
import { sandboxDestroy } from '@agentuity/server';
|
|
6
|
+
import { sandboxDestroy, sandboxResolve } from '@agentuity/server';
|
|
7
7
|
|
|
8
8
|
const SandboxDeleteResponseSchema = z.object({
|
|
9
9
|
success: z.boolean().describe('Whether the operation succeeded'),
|
|
@@ -17,7 +17,7 @@ export const deleteSubcommand = createCommand({
|
|
|
17
17
|
aliases: ['del', 'remove', 'destroy'],
|
|
18
18
|
description: 'Delete a sandbox',
|
|
19
19
|
tags: ['destructive', 'deletes-resource', 'slow', 'requires-auth'],
|
|
20
|
-
requires: { auth: true,
|
|
20
|
+
requires: { auth: true, apiClient: true },
|
|
21
21
|
idempotent: true,
|
|
22
22
|
examples: [
|
|
23
23
|
{
|
|
@@ -40,7 +40,7 @@ export const deleteSubcommand = createCommand({
|
|
|
40
40
|
},
|
|
41
41
|
|
|
42
42
|
async handler(ctx) {
|
|
43
|
-
const { args, options, opts, auth, config, logger,
|
|
43
|
+
const { args, options, opts, auth, config, logger, apiClient } = ctx;
|
|
44
44
|
|
|
45
45
|
if (!opts.confirm) {
|
|
46
46
|
const confirmed = await tui.confirm(`Delete sandbox "${args.sandboxId}"?`, false);
|
|
@@ -56,10 +56,13 @@ export const deleteSubcommand = createCommand({
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
const started = Date.now();
|
|
59
|
-
const region = await getSandboxRegion(logger, auth, config?.name, args.sandboxId, orgId);
|
|
60
|
-
const client = createSandboxClient(logger, auth, region);
|
|
61
59
|
|
|
62
|
-
|
|
60
|
+
// Resolve sandbox to get region and orgId using CLI API
|
|
61
|
+
const sandboxInfo = await sandboxResolve(apiClient, args.sandboxId);
|
|
62
|
+
|
|
63
|
+
const client = createSandboxClient(logger, auth, sandboxInfo.region);
|
|
64
|
+
|
|
65
|
+
await sandboxDestroy(client, { sandboxId: args.sandboxId, orgId: sandboxInfo.orgId });
|
|
63
66
|
const durationMs = Date.now() - started;
|
|
64
67
|
|
|
65
68
|
await clearSandboxRegionCache(config?.name, args.sandboxId);
|
|
@@ -2,16 +2,16 @@ import { z } from 'zod';
|
|
|
2
2
|
import { writeFileSync } from 'node:fs';
|
|
3
3
|
import { createCommand } from '../../../types';
|
|
4
4
|
import * as tui from '../../../tui';
|
|
5
|
-
import { createSandboxClient
|
|
5
|
+
import { createSandboxClient } from './util';
|
|
6
6
|
import { getCommand } from '../../../command-prefix';
|
|
7
|
-
import { sandboxDownloadArchive } from '@agentuity/server';
|
|
7
|
+
import { sandboxDownloadArchive, sandboxResolve } from '@agentuity/server';
|
|
8
8
|
|
|
9
9
|
export const downloadSubcommand = createCommand({
|
|
10
10
|
name: 'download',
|
|
11
11
|
aliases: ['dl'],
|
|
12
12
|
description: 'Download files from a sandbox as a compressed archive',
|
|
13
13
|
tags: ['slow', 'requires-auth'],
|
|
14
|
-
requires: { auth: true,
|
|
14
|
+
requires: { auth: true, apiClient: true },
|
|
15
15
|
examples: [
|
|
16
16
|
{
|
|
17
17
|
command: getCommand('cloud sandbox download sbx_abc123 ./backup.tar.gz'),
|
|
@@ -46,9 +46,12 @@ export const downloadSubcommand = createCommand({
|
|
|
46
46
|
},
|
|
47
47
|
|
|
48
48
|
async handler(ctx) {
|
|
49
|
-
const { args, opts, options, auth, logger,
|
|
49
|
+
const { args, opts, options, auth, logger, apiClient } = ctx;
|
|
50
|
+
|
|
51
|
+
// Resolve sandbox to get region and orgId using CLI API
|
|
52
|
+
const sandboxInfo = await sandboxResolve(apiClient, args.sandboxId);
|
|
53
|
+
const { region, orgId } = sandboxInfo;
|
|
50
54
|
|
|
51
|
-
const region = await getSandboxRegion(logger, auth, config?.name, args.sandboxId, orgId);
|
|
52
55
|
const client = createSandboxClient(logger, auth, region);
|
|
53
56
|
|
|
54
57
|
const format = opts.format ?? detectFormat(args.output);
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { createCommand } from '../../../types';
|
|
3
3
|
import * as tui from '../../../tui';
|
|
4
|
-
import {
|
|
4
|
+
import { createSandboxClient } from './util';
|
|
5
5
|
import { getCommand } from '../../../command-prefix';
|
|
6
|
-
import { sandboxSetEnv } from '@agentuity/server';
|
|
6
|
+
import { sandboxSetEnv, sandboxResolve } from '@agentuity/server';
|
|
7
7
|
|
|
8
8
|
export const envSubcommand = createCommand({
|
|
9
9
|
name: 'env',
|
|
10
10
|
description: 'Set or delete environment variables on a sandbox',
|
|
11
11
|
tags: ['slow', 'requires-auth'],
|
|
12
|
-
requires: { auth: true,
|
|
12
|
+
requires: { auth: true, apiClient: true },
|
|
13
13
|
examples: [
|
|
14
14
|
{
|
|
15
15
|
command: getCommand('cloud sandbox env sbx_abc123 MY_VAR=value'),
|
|
@@ -42,9 +42,12 @@ export const envSubcommand = createCommand({
|
|
|
42
42
|
},
|
|
43
43
|
|
|
44
44
|
async handler(ctx) {
|
|
45
|
-
const { args, opts, options, auth,
|
|
45
|
+
const { args, opts, options, auth, logger, apiClient } = ctx;
|
|
46
|
+
|
|
47
|
+
// Resolve sandbox to get region and orgId using CLI API
|
|
48
|
+
const sandboxInfo = await sandboxResolve(apiClient, args.sandboxId);
|
|
49
|
+
const { region, orgId } = sandboxInfo;
|
|
46
50
|
|
|
47
|
-
const region = await getSandboxRegion(logger, auth, config?.name, args.sandboxId, orgId);
|
|
48
51
|
const client = createSandboxClient(logger, auth, region);
|
|
49
52
|
|
|
50
53
|
const envMap: Record<string, string | null> = {};
|
|
@@ -2,9 +2,9 @@ import { z } from 'zod';
|
|
|
2
2
|
import { Writable } from 'node:stream';
|
|
3
3
|
import { createCommand } from '../../../types';
|
|
4
4
|
import * as tui from '../../../tui';
|
|
5
|
-
import {
|
|
5
|
+
import { createSandboxClient } from './util';
|
|
6
6
|
import { getCommand } from '../../../command-prefix';
|
|
7
|
-
import { sandboxExecute, executionGet, writeAndDrain } from '@agentuity/server';
|
|
7
|
+
import { sandboxExecute, executionGet, writeAndDrain, sandboxResolve } from '@agentuity/server';
|
|
8
8
|
import type { Logger } from '@agentuity/core';
|
|
9
9
|
|
|
10
10
|
// Server-side long-poll wait duration (max 5 minutes supported by server)
|
|
@@ -23,7 +23,7 @@ export const execSubcommand = createCommand({
|
|
|
23
23
|
aliases: ['execute'],
|
|
24
24
|
description: 'Execute a command in a running sandbox',
|
|
25
25
|
tags: ['slow', 'requires-auth'],
|
|
26
|
-
requires: { auth: true,
|
|
26
|
+
requires: { auth: true, apiClient: true },
|
|
27
27
|
examples: [
|
|
28
28
|
{
|
|
29
29
|
command: getCommand('cloud sandbox exec abc123 -- echo "hello"'),
|
|
@@ -34,6 +34,7 @@ export const execSubcommand = createCommand({
|
|
|
34
34
|
description: 'Execute with timeout',
|
|
35
35
|
},
|
|
36
36
|
],
|
|
37
|
+
|
|
37
38
|
schema: {
|
|
38
39
|
args: z.object({
|
|
39
40
|
sandboxId: z.string().describe('Sandbox ID'),
|
|
@@ -51,8 +52,12 @@ export const execSubcommand = createCommand({
|
|
|
51
52
|
},
|
|
52
53
|
|
|
53
54
|
async handler(ctx) {
|
|
54
|
-
const { args, opts, options, auth,
|
|
55
|
-
|
|
55
|
+
const { args, opts, options, auth, logger, apiClient } = ctx;
|
|
56
|
+
|
|
57
|
+
// Resolve sandbox to get region and orgId using CLI API
|
|
58
|
+
const sandboxInfo = await sandboxResolve(apiClient, args.sandboxId);
|
|
59
|
+
const { region, orgId } = sandboxInfo;
|
|
60
|
+
|
|
56
61
|
const client = createSandboxClient(logger, auth, region);
|
|
57
62
|
const started = Date.now();
|
|
58
63
|
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { createCommand } from '../../../types';
|
|
3
3
|
import * as tui from '../../../tui';
|
|
4
|
-
import { cacheSandboxRegion } from './util';
|
|
4
|
+
import { cacheSandboxRegion, createSandboxClient } from './util';
|
|
5
5
|
import { getCommand } from '../../../command-prefix';
|
|
6
|
-
import { sandboxGet } from '@agentuity/server';
|
|
7
|
-
import { getGlobalCatalystAPIClient } from '../../../config';
|
|
6
|
+
import { sandboxGet, sandboxResolve } from '@agentuity/server';
|
|
8
7
|
|
|
9
8
|
const SandboxResourcesSchema = z.object({
|
|
10
9
|
memory: z.string().optional().describe('Memory limit (e.g., "512Mi", "1Gi")'),
|
|
@@ -51,7 +50,7 @@ export const getSubcommand = createCommand({
|
|
|
51
50
|
aliases: ['info', 'show'],
|
|
52
51
|
description: 'Get information about a sandbox',
|
|
53
52
|
tags: ['read-only', 'fast', 'requires-auth'],
|
|
54
|
-
requires: { auth: true,
|
|
53
|
+
requires: { auth: true, apiClient: true },
|
|
55
54
|
idempotent: true,
|
|
56
55
|
examples: [
|
|
57
56
|
{
|
|
@@ -67,10 +66,17 @@ export const getSubcommand = createCommand({
|
|
|
67
66
|
},
|
|
68
67
|
|
|
69
68
|
async handler(ctx) {
|
|
70
|
-
const { args, options, auth, logger,
|
|
71
|
-
const client = await getGlobalCatalystAPIClient(logger, auth, config?.name);
|
|
69
|
+
const { args, options, auth, logger, config, apiClient } = ctx;
|
|
72
70
|
|
|
73
|
-
|
|
71
|
+
// Resolve sandbox to get region and orgId using CLI API
|
|
72
|
+
const sandboxInfo = await sandboxResolve(apiClient, args.sandboxId);
|
|
73
|
+
|
|
74
|
+
// Create regional client and get full sandbox details
|
|
75
|
+
const client = createSandboxClient(logger, auth, sandboxInfo.region);
|
|
76
|
+
const result = await sandboxGet(client, {
|
|
77
|
+
sandboxId: args.sandboxId,
|
|
78
|
+
orgId: sandboxInfo.orgId,
|
|
79
|
+
});
|
|
74
80
|
|
|
75
81
|
// Cache the region for future lookups
|
|
76
82
|
if (result.region) {
|
|
@@ -2,59 +2,18 @@ import { z } from 'zod';
|
|
|
2
2
|
import { createCommand } from '../../../types';
|
|
3
3
|
import * as tui from '../../../tui';
|
|
4
4
|
import { getCommand } from '../../../command-prefix';
|
|
5
|
-
import {
|
|
6
|
-
import { getGlobalCatalystAPIClient } from '../../../config';
|
|
7
|
-
import type { SandboxStatus } from '@agentuity/core';
|
|
8
|
-
|
|
9
|
-
const SandboxRuntimeInfoSchema = z.object({
|
|
10
|
-
id: z.string().describe('Runtime ID'),
|
|
11
|
-
name: z.string().describe('Runtime name'),
|
|
12
|
-
iconUrl: z.string().optional().describe('URL for runtime icon'),
|
|
13
|
-
brandColor: z.string().optional().describe('Brand color for the runtime'),
|
|
14
|
-
tags: z.array(z.string()).optional().describe('Runtime tags'),
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
const SandboxSnapshotUserInfoSchema = z.object({
|
|
18
|
-
id: z.string().describe('User ID'),
|
|
19
|
-
firstName: z.string().optional().describe("User's first name"),
|
|
20
|
-
lastName: z.string().optional().describe("User's last name"),
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
const SandboxSnapshotOrgInfoSchema = z.object({
|
|
24
|
-
id: z.string().describe('Organization ID'),
|
|
25
|
-
name: z.string().describe('Organization name'),
|
|
26
|
-
slug: z.string().optional().describe('Organization slug'),
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
const SandboxSnapshotInfoSchema = z.discriminatedUnion('public', [
|
|
30
|
-
z.object({
|
|
31
|
-
id: z.string().describe('Snapshot ID'),
|
|
32
|
-
name: z.string().optional().describe('Snapshot name'),
|
|
33
|
-
tag: z.string().nullable().optional().describe('Snapshot tag'),
|
|
34
|
-
fullName: z.string().optional().describe('Full name with org slug'),
|
|
35
|
-
public: z.literal(true).describe('Public snapshot'),
|
|
36
|
-
org: SandboxSnapshotOrgInfoSchema.describe('Organization that owns the public snapshot'),
|
|
37
|
-
}),
|
|
38
|
-
z.object({
|
|
39
|
-
id: z.string().describe('Snapshot ID'),
|
|
40
|
-
name: z.string().optional().describe('Snapshot name'),
|
|
41
|
-
tag: z.string().nullable().optional().describe('Snapshot tag'),
|
|
42
|
-
fullName: z.string().optional().describe('Full name with org slug'),
|
|
43
|
-
public: z.literal(false).describe('Private snapshot'),
|
|
44
|
-
user: SandboxSnapshotUserInfoSchema.describe('User who created the private snapshot'),
|
|
45
|
-
}),
|
|
46
|
-
]);
|
|
5
|
+
import { cliSandboxList } from '@agentuity/server';
|
|
47
6
|
|
|
48
7
|
const SandboxInfoSchema = z.object({
|
|
49
|
-
|
|
50
|
-
name: z.string().
|
|
51
|
-
description: z.string().
|
|
8
|
+
id: z.string().describe('Sandbox ID'),
|
|
9
|
+
name: z.string().nullable().describe('Sandbox name'),
|
|
10
|
+
description: z.string().nullable().describe('Sandbox description'),
|
|
52
11
|
status: z.string().describe('Current status'),
|
|
53
|
-
createdAt: z.string().describe('Creation timestamp'),
|
|
54
|
-
region: z.string().
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
12
|
+
createdAt: z.string().nullable().describe('Creation timestamp'),
|
|
13
|
+
region: z.string().nullable().describe('Region where sandbox is running'),
|
|
14
|
+
orgId: z.string().describe('Organization ID'),
|
|
15
|
+
orgName: z.string().nullable().describe('Organization name'),
|
|
16
|
+
projectId: z.string().nullable().describe('Project ID'),
|
|
58
17
|
});
|
|
59
18
|
|
|
60
19
|
const SandboxListResponseSchema = z.object({
|
|
@@ -67,7 +26,7 @@ export const listSubcommand = createCommand({
|
|
|
67
26
|
aliases: ['ls'],
|
|
68
27
|
description: 'List sandboxes with optional filtering',
|
|
69
28
|
tags: ['read-only', 'slow', 'requires-auth'],
|
|
70
|
-
requires: { auth: true,
|
|
29
|
+
requires: { auth: true, apiClient: true },
|
|
71
30
|
optional: { project: true },
|
|
72
31
|
idempotent: true,
|
|
73
32
|
pagination: {
|
|
@@ -92,6 +51,10 @@ export const listSubcommand = createCommand({
|
|
|
92
51
|
command: getCommand('cloud sandbox list --project-id proj_123'),
|
|
93
52
|
description: 'List sandboxes for a specific project',
|
|
94
53
|
},
|
|
54
|
+
{
|
|
55
|
+
command: getCommand('cloud sandbox list --org-id org_123'),
|
|
56
|
+
description: 'List sandboxes for a specific organization',
|
|
57
|
+
},
|
|
95
58
|
{
|
|
96
59
|
command: getCommand('cloud sandbox list --limit 10 --offset 20'),
|
|
97
60
|
description: 'List with pagination',
|
|
@@ -108,6 +71,7 @@ export const listSubcommand = createCommand({
|
|
|
108
71
|
.optional()
|
|
109
72
|
.describe('Filter by status'),
|
|
110
73
|
projectId: z.string().optional().describe('Filter by project ID'),
|
|
74
|
+
orgId: z.string().optional().describe('Filter by organization ID'),
|
|
111
75
|
all: z.boolean().optional().describe('List all sandboxes regardless of project context'),
|
|
112
76
|
limit: z.number().optional().describe('Maximum number of results (default: 50, max: 100)'),
|
|
113
77
|
offset: z.number().optional().describe('Pagination offset'),
|
|
@@ -116,57 +80,67 @@ export const listSubcommand = createCommand({
|
|
|
116
80
|
},
|
|
117
81
|
|
|
118
82
|
async handler(ctx) {
|
|
119
|
-
const { opts, options,
|
|
120
|
-
const client = await getGlobalCatalystAPIClient(logger, auth, config?.name);
|
|
83
|
+
const { opts, options, project, apiClient } = ctx;
|
|
121
84
|
|
|
122
85
|
const projectId = opts.all ? undefined : opts.projectId || project?.projectId;
|
|
123
86
|
|
|
124
|
-
const result = await
|
|
125
|
-
orgId,
|
|
87
|
+
const result = await cliSandboxList(apiClient, {
|
|
126
88
|
projectId,
|
|
127
|
-
|
|
89
|
+
orgId: opts.orgId,
|
|
90
|
+
status: opts.status,
|
|
128
91
|
limit: opts.limit,
|
|
129
92
|
offset: opts.offset,
|
|
130
93
|
});
|
|
131
94
|
|
|
95
|
+
// Check if results span multiple orgs
|
|
96
|
+
const uniqueOrgIds = new Set(result.sandboxes.map((s) => s.orgId));
|
|
97
|
+
const showOrgColumn = uniqueOrgIds.size > 1;
|
|
98
|
+
|
|
132
99
|
if (!options.json) {
|
|
133
100
|
if (result.sandboxes.length === 0) {
|
|
134
101
|
tui.info('No sandboxes found');
|
|
135
102
|
} else {
|
|
136
103
|
const tableData = result.sandboxes.map((sandbox) => {
|
|
137
|
-
|
|
138
|
-
ID: sandbox.
|
|
104
|
+
const row: Record<string, string | number> = {
|
|
105
|
+
ID: sandbox.id,
|
|
139
106
|
Name: sandbox.name || '-',
|
|
140
|
-
Runtime: sandbox.runtime?.name || '-',
|
|
141
107
|
Status: sandbox.status,
|
|
142
|
-
|
|
143
|
-
|
|
108
|
+
Region: sandbox.region || '-',
|
|
109
|
+
'Created At': sandbox.createdAt || '-',
|
|
144
110
|
};
|
|
111
|
+
if (showOrgColumn) {
|
|
112
|
+
row.Organization = sandbox.orgName || sandbox.orgId;
|
|
113
|
+
}
|
|
114
|
+
return row;
|
|
145
115
|
});
|
|
146
|
-
tui.table(tableData, [
|
|
147
|
-
{ name: 'ID', alignment: 'left' },
|
|
148
|
-
{ name: 'Name', alignment: 'left' },
|
|
149
|
-
{ name: 'Runtime', alignment: 'left' },
|
|
150
|
-
{ name: 'Status', alignment: 'left' },
|
|
151
|
-
{ name: 'Created At', alignment: 'left' },
|
|
152
|
-
{ name: 'Executions', alignment: 'right' },
|
|
153
|
-
]);
|
|
154
116
|
|
|
117
|
+
const columns = [
|
|
118
|
+
{ name: 'ID', alignment: 'left' as const },
|
|
119
|
+
{ name: 'Name', alignment: 'left' as const },
|
|
120
|
+
{ name: 'Status', alignment: 'left' as const },
|
|
121
|
+
{ name: 'Region', alignment: 'left' as const },
|
|
122
|
+
{ name: 'Created At', alignment: 'left' as const },
|
|
123
|
+
];
|
|
124
|
+
if (showOrgColumn) {
|
|
125
|
+
columns.push({ name: 'Organization', alignment: 'left' as const });
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
tui.table(tableData, columns);
|
|
155
129
|
tui.info(`Total: ${result.total} ${tui.plural(result.total, 'sandbox', 'sandboxes')}`);
|
|
156
130
|
}
|
|
157
131
|
}
|
|
158
132
|
|
|
159
133
|
return {
|
|
160
134
|
sandboxes: result.sandboxes.map((s) => ({
|
|
161
|
-
|
|
135
|
+
id: s.id,
|
|
162
136
|
name: s.name,
|
|
163
137
|
description: s.description,
|
|
164
138
|
status: s.status,
|
|
165
139
|
createdAt: s.createdAt,
|
|
166
140
|
region: s.region,
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
141
|
+
orgId: s.orgId,
|
|
142
|
+
orgName: s.orgName,
|
|
143
|
+
projectId: s.projectId,
|
|
170
144
|
})),
|
|
171
145
|
total: result.total,
|
|
172
146
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { createCommand } from '../../../types';
|
|
3
3
|
import * as tui from '../../../tui';
|
|
4
|
-
import {
|
|
4
|
+
import { createSandboxClient } from './util';
|
|
5
5
|
import { getCommand } from '../../../command-prefix';
|
|
6
|
-
import { sandboxListFiles } from '@agentuity/server';
|
|
6
|
+
import { sandboxListFiles, sandboxResolve } from '@agentuity/server';
|
|
7
7
|
|
|
8
8
|
const FileInfoSchema = z.object({
|
|
9
9
|
path: z.string(),
|
|
@@ -23,7 +23,7 @@ export const lsSubcommand = createCommand({
|
|
|
23
23
|
aliases: ['lsf'],
|
|
24
24
|
description: 'List files in a sandbox directory',
|
|
25
25
|
tags: ['slow', 'requires-auth'],
|
|
26
|
-
requires: { auth: true,
|
|
26
|
+
requires: { auth: true, apiClient: true },
|
|
27
27
|
examples: [
|
|
28
28
|
{
|
|
29
29
|
command: getCommand('cloud sandbox files sbx_abc123'),
|
|
@@ -61,8 +61,12 @@ export const lsSubcommand = createCommand({
|
|
|
61
61
|
},
|
|
62
62
|
|
|
63
63
|
async handler(ctx) {
|
|
64
|
-
const { args, opts, options, auth,
|
|
65
|
-
|
|
64
|
+
const { args, opts, options, auth, logger, apiClient } = ctx;
|
|
65
|
+
|
|
66
|
+
// Resolve sandbox to get region and orgId using CLI API
|
|
67
|
+
const sandboxInfo = await sandboxResolve(apiClient, args.sandboxId);
|
|
68
|
+
const { region, orgId } = sandboxInfo;
|
|
69
|
+
|
|
66
70
|
const client = createSandboxClient(logger, auth, region);
|
|
67
71
|
|
|
68
72
|
const result = await sandboxListFiles(client, {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { createCommand } from '../../../types';
|
|
3
3
|
import * as tui from '../../../tui';
|
|
4
|
-
import { createSandboxClient
|
|
4
|
+
import { createSandboxClient } from './util';
|
|
5
5
|
import { getCommand } from '../../../command-prefix';
|
|
6
|
-
import { sandboxMkDir } from '@agentuity/server';
|
|
6
|
+
import { sandboxMkDir, sandboxResolve } from '@agentuity/server';
|
|
7
7
|
|
|
8
8
|
const MkDirResponseSchema = z.object({
|
|
9
9
|
success: z.boolean(),
|
|
@@ -14,7 +14,7 @@ export const mkdirSubcommand = createCommand({
|
|
|
14
14
|
name: 'mkdir',
|
|
15
15
|
description: 'Create a directory in a sandbox',
|
|
16
16
|
tags: ['slow', 'requires-auth'],
|
|
17
|
-
requires: { auth: true,
|
|
17
|
+
requires: { auth: true, apiClient: true },
|
|
18
18
|
examples: [
|
|
19
19
|
{
|
|
20
20
|
command: getCommand('cloud sandbox mkdir sbx_abc123 /path/to/dir'),
|
|
@@ -44,8 +44,12 @@ export const mkdirSubcommand = createCommand({
|
|
|
44
44
|
},
|
|
45
45
|
|
|
46
46
|
async handler(ctx) {
|
|
47
|
-
const { args, opts, options, auth, logger,
|
|
48
|
-
|
|
47
|
+
const { args, opts, options, auth, logger, apiClient } = ctx;
|
|
48
|
+
|
|
49
|
+
// Resolve sandbox to get region and orgId using CLI API
|
|
50
|
+
const sandboxInfo = await sandboxResolve(apiClient, args.sandboxId);
|
|
51
|
+
const { region, orgId } = sandboxInfo;
|
|
52
|
+
|
|
49
53
|
const client = createSandboxClient(logger, auth, region);
|
|
50
54
|
|
|
51
55
|
await sandboxMkDir(client, {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { createCommand } from '../../../types';
|
|
3
3
|
import * as tui from '../../../tui';
|
|
4
|
-
import {
|
|
4
|
+
import { createSandboxClient } from './util';
|
|
5
5
|
import { getCommand } from '../../../command-prefix';
|
|
6
|
-
import { sandboxRmFile } from '@agentuity/server';
|
|
6
|
+
import { sandboxRmFile, sandboxResolve } from '@agentuity/server';
|
|
7
7
|
|
|
8
8
|
const RmFileResponseSchema = z.object({
|
|
9
9
|
success: z.boolean(),
|
|
@@ -14,7 +14,7 @@ export const rmSubcommand = createCommand({
|
|
|
14
14
|
name: 'rm',
|
|
15
15
|
description: 'Remove a file from a sandbox',
|
|
16
16
|
tags: ['slow', 'requires-auth'],
|
|
17
|
-
requires: { auth: true,
|
|
17
|
+
requires: { auth: true, apiClient: true },
|
|
18
18
|
examples: [
|
|
19
19
|
{
|
|
20
20
|
command: getCommand('cloud sandbox rm sbx_abc123 /path/to/file.txt'),
|
|
@@ -31,8 +31,12 @@ export const rmSubcommand = createCommand({
|
|
|
31
31
|
},
|
|
32
32
|
|
|
33
33
|
async handler(ctx) {
|
|
34
|
-
const { args, options, auth, logger,
|
|
35
|
-
|
|
34
|
+
const { args, options, auth, logger, apiClient } = ctx;
|
|
35
|
+
|
|
36
|
+
// Resolve sandbox to get region and orgId using CLI API
|
|
37
|
+
const sandboxInfo = await sandboxResolve(apiClient, args.sandboxId);
|
|
38
|
+
const { region, orgId } = sandboxInfo;
|
|
39
|
+
|
|
36
40
|
const client = createSandboxClient(logger, auth, region);
|
|
37
41
|
|
|
38
42
|
await sandboxRmFile(client, {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { createCommand } from '../../../types';
|
|
3
3
|
import * as tui from '../../../tui';
|
|
4
|
-
import { createSandboxClient
|
|
4
|
+
import { createSandboxClient } from './util';
|
|
5
5
|
import { getCommand } from '../../../command-prefix';
|
|
6
|
-
import { sandboxRmDir } from '@agentuity/server';
|
|
6
|
+
import { sandboxRmDir, sandboxResolve } from '@agentuity/server';
|
|
7
7
|
|
|
8
8
|
const RmDirResponseSchema = z.object({
|
|
9
9
|
success: z.boolean(),
|
|
@@ -14,7 +14,7 @@ export const rmdirSubcommand = createCommand({
|
|
|
14
14
|
name: 'rmdir',
|
|
15
15
|
description: 'Remove a directory from a sandbox',
|
|
16
16
|
tags: ['slow', 'requires-auth'],
|
|
17
|
-
requires: { auth: true,
|
|
17
|
+
requires: { auth: true, apiClient: true },
|
|
18
18
|
examples: [
|
|
19
19
|
{
|
|
20
20
|
command: getCommand('cloud sandbox rmdir sbx_abc123 /path/to/dir'),
|
|
@@ -44,8 +44,12 @@ export const rmdirSubcommand = createCommand({
|
|
|
44
44
|
},
|
|
45
45
|
|
|
46
46
|
async handler(ctx) {
|
|
47
|
-
const { args, opts, options, auth, logger,
|
|
48
|
-
|
|
47
|
+
const { args, opts, options, auth, logger, apiClient } = ctx;
|
|
48
|
+
|
|
49
|
+
// Resolve sandbox to get region and orgId using CLI API
|
|
50
|
+
const sandboxInfo = await sandboxResolve(apiClient, args.sandboxId);
|
|
51
|
+
const { region, orgId } = sandboxInfo;
|
|
52
|
+
|
|
49
53
|
const client = createSandboxClient(logger, auth, region);
|
|
50
54
|
|
|
51
55
|
await sandboxRmDir(client, {
|
|
@@ -65,26 +65,26 @@ function buildFileTree(files: SnapshotFileInfo[]): TreeNode {
|
|
|
65
65
|
const parts = file.path.split('/');
|
|
66
66
|
let current = root;
|
|
67
67
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
68
|
+
for (let i = 0; i < parts.length; i++) {
|
|
69
|
+
const part = parts[i];
|
|
70
|
+
if (!part) continue;
|
|
71
|
+
if (!current.children.has(part)) {
|
|
72
|
+
current.children.set(part, {
|
|
73
|
+
name: part,
|
|
74
|
+
isFile: i === parts.length - 1,
|
|
75
|
+
children: new Map(),
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
const child = current.children.get(part);
|
|
79
|
+
if (!child) continue;
|
|
80
|
+
current = child;
|
|
81
81
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
82
|
+
if (i === parts.length - 1) {
|
|
83
|
+
current.size = file.size;
|
|
84
|
+
current.isFile = true;
|
|
85
|
+
}
|
|
85
86
|
}
|
|
86
87
|
}
|
|
87
|
-
}
|
|
88
88
|
|
|
89
89
|
return root;
|
|
90
90
|
}
|
|
@@ -647,15 +647,15 @@ export const buildSubcommand = createCommand({
|
|
|
647
647
|
}
|
|
648
648
|
}
|
|
649
649
|
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
650
|
+
if (finalEnv && Object.keys(finalEnv).length > 0) {
|
|
651
|
+
console.log('');
|
|
652
|
+
tui.info('Environment:');
|
|
653
|
+
for (const [envKey, envValue] of Object.entries(finalEnv)) {
|
|
654
|
+
console.log(` ${tui.muted('•')} ${envKey}=${tui.maskSecret(envValue)}`);
|
|
655
|
+
}
|
|
655
656
|
}
|
|
656
|
-
}
|
|
657
657
|
|
|
658
|
-
|
|
658
|
+
if (fileList.length > 0) {
|
|
659
659
|
console.log('');
|
|
660
660
|
tui.info('Files:');
|
|
661
661
|
printFileTree(fileList);
|
|
@@ -949,15 +949,15 @@ export const buildSubcommand = createCommand({
|
|
|
949
949
|
}
|
|
950
950
|
}
|
|
951
951
|
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
952
|
+
if (finalEnv && Object.keys(finalEnv).length > 0) {
|
|
953
|
+
console.log('');
|
|
954
|
+
tui.info('Environment:');
|
|
955
|
+
for (const [envKey, envValue] of Object.entries(finalEnv)) {
|
|
956
|
+
console.log(` ${tui.muted('•')} ${envKey}=${tui.maskSecret(envValue)}`);
|
|
957
|
+
}
|
|
957
958
|
}
|
|
958
|
-
}
|
|
959
959
|
|
|
960
|
-
|
|
960
|
+
if (finalMetadata && Object.keys(finalMetadata).length > 0) {
|
|
961
961
|
console.log('');
|
|
962
962
|
tui.info('Metadata:');
|
|
963
963
|
for (const key of Object.keys(finalMetadata)) {
|