@agentuity/cli 0.0.58 → 0.0.60
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 +14 -1
- package/dist/cli.js.map +1 -1
- package/dist/cmd/ai/capabilities/show.d.ts.map +1 -1
- package/dist/cmd/ai/capabilities/show.js +11 -4
- package/dist/cmd/ai/capabilities/show.js.map +1 -1
- package/dist/cmd/build/bundler.d.ts +1 -1
- package/dist/cmd/cloud/agent/get.d.ts +2 -0
- package/dist/cmd/cloud/agent/get.d.ts.map +1 -0
- package/dist/cmd/cloud/agent/get.js +97 -0
- package/dist/cmd/cloud/agent/get.js.map +1 -0
- package/dist/cmd/cloud/agent/index.d.ts +2 -0
- package/dist/cmd/cloud/agent/index.d.ts.map +1 -0
- package/dist/cmd/cloud/agent/index.js +11 -0
- package/dist/cmd/cloud/agent/index.js.map +1 -0
- package/dist/cmd/cloud/agent/list.d.ts.map +1 -0
- package/dist/cmd/cloud/agent/list.js +101 -0
- package/dist/cmd/cloud/agent/list.js.map +1 -0
- package/dist/cmd/cloud/agent/schema.d.ts +4 -0
- package/dist/cmd/cloud/agent/schema.d.ts.map +1 -0
- package/dist/cmd/cloud/agent/schema.js +22 -0
- package/dist/cmd/cloud/agent/schema.js.map +1 -0
- package/dist/cmd/cloud/apikey/create.d.ts +2 -0
- package/dist/cmd/cloud/apikey/create.d.ts.map +1 -0
- package/dist/cmd/cloud/apikey/create.js +100 -0
- package/dist/cmd/cloud/apikey/create.js.map +1 -0
- package/dist/cmd/cloud/apikey/delete.d.ts.map +1 -0
- package/dist/cmd/cloud/apikey/delete.js +55 -0
- package/dist/cmd/cloud/apikey/delete.js.map +1 -0
- package/dist/cmd/cloud/apikey/get.d.ts +2 -0
- package/dist/cmd/cloud/apikey/get.d.ts.map +1 -0
- package/dist/cmd/cloud/apikey/get.js +57 -0
- package/dist/cmd/cloud/apikey/get.js.map +1 -0
- package/dist/cmd/cloud/apikey/index.d.ts.map +1 -0
- package/dist/cmd/cloud/apikey/index.js +13 -0
- package/dist/cmd/cloud/apikey/index.js.map +1 -0
- package/dist/cmd/cloud/apikey/list.d.ts +2 -0
- package/dist/cmd/cloud/apikey/list.d.ts.map +1 -0
- package/dist/cmd/cloud/apikey/list.js +53 -0
- package/dist/cmd/cloud/apikey/list.js.map +1 -0
- package/dist/cmd/cloud/db/create.d.ts +2 -0
- package/dist/cmd/cloud/db/create.d.ts.map +1 -0
- package/dist/cmd/cloud/db/create.js +68 -0
- package/dist/cmd/cloud/db/create.js.map +1 -0
- package/dist/cmd/cloud/db/delete.d.ts +2 -0
- package/dist/cmd/cloud/db/delete.d.ts.map +1 -0
- package/dist/cmd/cloud/db/delete.js +106 -0
- package/dist/cmd/cloud/db/delete.js.map +1 -0
- package/dist/cmd/cloud/db/get.d.ts +2 -0
- package/dist/cmd/cloud/db/get.d.ts.map +1 -0
- package/dist/cmd/cloud/db/get.js +66 -0
- package/dist/cmd/cloud/db/get.js.map +1 -0
- package/dist/cmd/cloud/db/index.d.ts +2 -0
- package/dist/cmd/cloud/db/index.d.ts.map +1 -0
- package/dist/cmd/cloud/db/index.js +14 -0
- package/dist/cmd/cloud/db/index.js.map +1 -0
- package/dist/cmd/cloud/db/list.d.ts +2 -0
- package/dist/cmd/cloud/db/list.d.ts.map +1 -0
- package/dist/cmd/cloud/db/list.js +75 -0
- package/dist/cmd/cloud/db/list.js.map +1 -0
- package/dist/cmd/cloud/db/sql.d.ts +2 -0
- package/dist/cmd/cloud/db/sql.d.ts.map +1 -0
- package/dist/cmd/cloud/db/sql.js +102 -0
- package/dist/cmd/cloud/db/sql.js.map +1 -0
- package/dist/cmd/cloud/deployment/index.d.ts.map +1 -1
- package/dist/cmd/cloud/deployment/index.js +2 -0
- package/dist/cmd/cloud/deployment/index.js.map +1 -1
- package/dist/cmd/cloud/deployment/logs.d.ts +2 -0
- package/dist/cmd/cloud/deployment/logs.d.ts.map +1 -0
- package/dist/cmd/cloud/deployment/logs.js +70 -0
- package/dist/cmd/cloud/deployment/logs.js.map +1 -0
- package/dist/cmd/cloud/env/get.d.ts.map +1 -1
- package/dist/cmd/cloud/env/get.js +2 -3
- package/dist/cmd/cloud/env/get.js.map +1 -1
- package/dist/cmd/cloud/env/list.d.ts.map +1 -1
- package/dist/cmd/cloud/env/list.js +1 -2
- package/dist/cmd/cloud/env/list.js.map +1 -1
- package/dist/cmd/cloud/index.d.ts.map +1 -1
- package/dist/cmd/cloud/index.js +12 -4
- package/dist/cmd/cloud/index.js.map +1 -1
- package/dist/cmd/cloud/secret/get.d.ts.map +1 -1
- package/dist/cmd/cloud/secret/get.js +2 -3
- package/dist/cmd/cloud/secret/get.js.map +1 -1
- package/dist/cmd/cloud/secret/list.d.ts.map +1 -1
- package/dist/cmd/cloud/secret/list.js +1 -2
- package/dist/cmd/cloud/secret/list.js.map +1 -1
- package/dist/cmd/cloud/session/logs.d.ts.map +1 -1
- package/dist/cmd/cloud/session/logs.js +12 -9
- package/dist/cmd/cloud/session/logs.js.map +1 -1
- package/dist/cmd/cloud/storage/create.d.ts +2 -0
- package/dist/cmd/cloud/storage/create.d.ts.map +1 -0
- package/dist/cmd/cloud/storage/create.js +61 -0
- package/dist/cmd/cloud/storage/create.js.map +1 -0
- package/dist/cmd/cloud/storage/delete.d.ts +2 -0
- package/dist/cmd/cloud/storage/delete.d.ts.map +1 -0
- package/dist/cmd/cloud/storage/delete.js +167 -0
- package/dist/cmd/cloud/storage/delete.js.map +1 -0
- package/dist/cmd/cloud/storage/download.d.ts +2 -0
- package/dist/cmd/cloud/storage/download.d.ts.map +1 -0
- package/dist/cmd/cloud/storage/download.js +131 -0
- package/dist/cmd/cloud/storage/download.js.map +1 -0
- package/dist/cmd/cloud/storage/get.d.ts +2 -0
- package/dist/cmd/cloud/storage/get.d.ts.map +1 -0
- package/dist/cmd/cloud/storage/get.js +86 -0
- package/dist/cmd/cloud/storage/get.js.map +1 -0
- package/dist/cmd/cloud/storage/index.d.ts +2 -0
- package/dist/cmd/cloud/storage/index.d.ts.map +1 -0
- package/dist/cmd/cloud/storage/index.js +22 -0
- package/dist/cmd/cloud/storage/index.js.map +1 -0
- package/dist/cmd/cloud/storage/list.d.ts +2 -0
- package/dist/cmd/cloud/storage/list.d.ts.map +1 -0
- package/dist/cmd/cloud/storage/list.js +170 -0
- package/dist/cmd/cloud/storage/list.js.map +1 -0
- package/dist/cmd/cloud/storage/upload.d.ts +2 -0
- package/dist/cmd/cloud/storage/upload.d.ts.map +1 -0
- package/dist/cmd/cloud/storage/upload.js +133 -0
- package/dist/cmd/cloud/storage/upload.js.map +1 -0
- package/dist/cmd/cloud/storage/utils.d.ts +18 -0
- package/dist/cmd/cloud/storage/utils.d.ts.map +1 -0
- package/dist/cmd/cloud/storage/utils.js +21 -0
- package/dist/cmd/cloud/storage/utils.js.map +1 -0
- package/dist/cmd/cloud/stream/delete.d.ts +3 -0
- package/dist/cmd/cloud/stream/delete.d.ts.map +1 -0
- package/dist/cmd/cloud/stream/delete.js +42 -0
- package/dist/cmd/cloud/stream/delete.js.map +1 -0
- package/dist/cmd/cloud/stream/get.d.ts +3 -0
- package/dist/cmd/cloud/stream/get.d.ts.map +1 -0
- package/dist/cmd/cloud/stream/get.js +110 -0
- package/dist/cmd/cloud/stream/get.js.map +1 -0
- package/dist/cmd/cloud/stream/index.d.ts +3 -0
- package/dist/cmd/cloud/stream/index.d.ts.map +1 -0
- package/dist/cmd/cloud/stream/index.js +13 -0
- package/dist/cmd/cloud/stream/index.js.map +1 -0
- package/dist/cmd/cloud/stream/list.d.ts +3 -0
- package/dist/cmd/cloud/stream/list.d.ts.map +1 -0
- package/dist/cmd/cloud/stream/list.js +131 -0
- package/dist/cmd/cloud/stream/list.js.map +1 -0
- package/dist/cmd/cloud/stream/util.d.ts +8 -0
- package/dist/cmd/cloud/stream/util.d.ts.map +1 -0
- package/dist/cmd/cloud/stream/util.js +19 -0
- package/dist/cmd/cloud/stream/util.js.map +1 -0
- package/dist/cmd/cloud/vector/delete.d.ts +3 -0
- package/dist/cmd/cloud/vector/delete.d.ts.map +1 -0
- package/dist/cmd/cloud/vector/delete.js +90 -0
- package/dist/cmd/cloud/vector/delete.js.map +1 -0
- package/dist/cmd/cloud/vector/get.d.ts +3 -0
- package/dist/cmd/cloud/vector/get.d.ts.map +1 -0
- package/dist/cmd/cloud/vector/get.js +80 -0
- package/dist/cmd/cloud/vector/get.js.map +1 -0
- package/dist/cmd/cloud/vector/index.d.ts +3 -0
- package/dist/cmd/cloud/vector/index.d.ts.map +1 -0
- package/dist/cmd/cloud/vector/index.js +14 -0
- package/dist/cmd/cloud/vector/index.js.map +1 -0
- package/dist/cmd/cloud/vector/search.d.ts +3 -0
- package/dist/cmd/cloud/vector/search.d.ts.map +1 -0
- package/dist/cmd/cloud/vector/search.js +136 -0
- package/dist/cmd/cloud/vector/search.js.map +1 -0
- package/dist/cmd/cloud/vector/util.d.ts +8 -0
- package/dist/cmd/cloud/vector/util.d.ts.map +1 -0
- package/dist/cmd/cloud/vector/util.js +18 -0
- package/dist/cmd/cloud/vector/util.js.map +1 -0
- package/dist/cmd/dev/agents.d.ts.map +1 -1
- package/dist/cmd/dev/agents.js +3 -2
- package/dist/cmd/dev/agents.js.map +1 -1
- package/dist/cmd/dev/index.js +3 -3
- package/dist/cmd/dev/index.js.map +1 -1
- package/dist/cmd/index.d.ts.map +1 -1
- package/dist/cmd/index.js +38 -42
- package/dist/cmd/index.js.map +1 -1
- package/dist/schema-parser.d.ts.map +1 -1
- package/dist/schema-parser.js +3 -1
- package/dist/schema-parser.js.map +1 -1
- package/dist/tui.d.ts +12 -2
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +61 -31
- package/dist/tui.js.map +1 -1
- package/dist/utils/date.d.ts +14 -0
- package/dist/utils/date.d.ts.map +1 -0
- package/dist/utils/date.js +51 -0
- package/dist/utils/date.js.map +1 -0
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +6 -6
- package/src/cli.ts +15 -1
- package/src/cmd/ai/capabilities/show.ts +11 -4
- package/src/cmd/cloud/agent/get.ts +105 -0
- package/src/cmd/cloud/agent/index.ts +11 -0
- package/src/cmd/cloud/agent/list.ts +107 -0
- package/src/cmd/cloud/agent/schema.ts +25 -0
- package/src/cmd/cloud/apikey/create.ts +114 -0
- package/src/cmd/cloud/apikey/delete.ts +66 -0
- package/src/cmd/cloud/apikey/get.ts +62 -0
- package/src/cmd/cloud/apikey/index.ts +13 -0
- package/src/cmd/cloud/apikey/list.ts +58 -0
- package/src/cmd/cloud/db/create.ts +72 -0
- package/src/cmd/cloud/db/delete.ts +118 -0
- package/src/cmd/cloud/db/get.ts +75 -0
- package/src/cmd/cloud/db/index.ts +14 -0
- package/src/cmd/cloud/db/list.ts +83 -0
- package/src/cmd/cloud/db/sql.ts +125 -0
- package/src/cmd/cloud/deployment/index.ts +2 -0
- package/src/cmd/cloud/deployment/logs.ts +75 -0
- package/src/cmd/cloud/env/get.ts +2 -3
- package/src/cmd/cloud/env/list.ts +1 -2
- package/src/cmd/cloud/index.ts +13 -4
- package/src/cmd/cloud/secret/get.ts +2 -3
- package/src/cmd/cloud/secret/list.ts +1 -2
- package/src/cmd/cloud/session/logs.ts +12 -11
- package/src/cmd/cloud/storage/create.ts +65 -0
- package/src/cmd/cloud/storage/delete.ts +195 -0
- package/src/cmd/cloud/storage/download.ts +154 -0
- package/src/cmd/cloud/storage/get.ts +97 -0
- package/src/cmd/cloud/storage/index.ts +22 -0
- package/src/cmd/cloud/storage/list.ts +197 -0
- package/src/cmd/cloud/storage/upload.ts +150 -0
- package/src/cmd/cloud/storage/utils.ts +26 -0
- package/src/cmd/cloud/stream/delete.ts +49 -0
- package/src/cmd/cloud/stream/get.ts +118 -0
- package/src/cmd/cloud/stream/index.ts +14 -0
- package/src/cmd/cloud/stream/list.ts +146 -0
- package/src/cmd/cloud/stream/util.ts +32 -0
- package/src/cmd/cloud/vector/delete.ts +105 -0
- package/src/cmd/cloud/vector/get.ts +94 -0
- package/src/cmd/cloud/vector/index.ts +15 -0
- package/src/cmd/cloud/vector/search.ts +156 -0
- package/src/cmd/cloud/vector/util.ts +28 -0
- package/src/cmd/dev/agents.ts +4 -3
- package/src/cmd/dev/index.ts +3 -3
- package/src/cmd/index.ts +38 -42
- package/src/schema-parser.ts +3 -1
- package/src/tui.ts +73 -36
- package/src/utils/date.ts +57 -0
- package/src/version.ts +1 -1
- package/dist/cmd/cloud/agents/index.d.ts.map +0 -1
- package/dist/cmd/cloud/agents/index.js +0 -133
- package/dist/cmd/cloud/agents/index.js.map +0 -1
- package/dist/cmd/cloud/resource/add.d.ts +0 -2
- package/dist/cmd/cloud/resource/add.d.ts.map +0 -1
- package/dist/cmd/cloud/resource/add.js +0 -70
- package/dist/cmd/cloud/resource/add.js.map +0 -1
- package/dist/cmd/cloud/resource/delete.d.ts.map +0 -1
- package/dist/cmd/cloud/resource/delete.js +0 -126
- package/dist/cmd/cloud/resource/delete.js.map +0 -1
- package/dist/cmd/cloud/resource/index.d.ts +0 -2
- package/dist/cmd/cloud/resource/index.d.ts.map +0 -1
- package/dist/cmd/cloud/resource/index.js +0 -12
- package/dist/cmd/cloud/resource/index.js.map +0 -1
- package/dist/cmd/cloud/resource/list.d.ts.map +0 -1
- package/dist/cmd/cloud/resource/list.js +0 -100
- package/dist/cmd/cloud/resource/list.js.map +0 -1
- package/src/cmd/cloud/agents/index.ts +0 -148
- package/src/cmd/cloud/resource/add.ts +0 -75
- package/src/cmd/cloud/resource/delete.ts +0 -141
- package/src/cmd/cloud/resource/index.ts +0 -12
- package/src/cmd/cloud/resource/list.ts +0 -105
- /package/dist/cmd/cloud/{resource → agent}/list.d.ts +0 -0
- /package/dist/cmd/cloud/{resource → apikey}/delete.d.ts +0 -0
- /package/dist/cmd/cloud/{agents → apikey}/index.d.ts +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Logger, VectorStorageService } from '@agentuity/core';
|
|
2
|
+
import { createServerFetchAdapter } from '@agentuity/server';
|
|
3
|
+
import { loadProjectSDKKey } from '../../../config';
|
|
4
|
+
import type { Config } from '../../../types';
|
|
5
|
+
import * as tui from '../../../tui';
|
|
6
|
+
|
|
7
|
+
export async function createStorageAdapter(ctx: {
|
|
8
|
+
logger: Logger;
|
|
9
|
+
projectDir: string;
|
|
10
|
+
config: Config | null;
|
|
11
|
+
}) {
|
|
12
|
+
const sdkKey = await loadProjectSDKKey(ctx.projectDir);
|
|
13
|
+
if (!sdkKey) {
|
|
14
|
+
tui.fatal(`Couldn't find the AGENTUITY_SDK_KEY in ${ctx.projectDir} .env file`);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const adapter = createServerFetchAdapter(
|
|
18
|
+
{
|
|
19
|
+
headers: {
|
|
20
|
+
Authorization: `Bearer ${sdkKey}`,
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
ctx.logger
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
const baseUrl = ctx.config?.overrides?.catalyst_url ?? 'https://catalyst.agentuity.cloud';
|
|
27
|
+
return new VectorStorageService(baseUrl, adapter);
|
|
28
|
+
}
|
package/src/cmd/dev/agents.ts
CHANGED
|
@@ -8,7 +8,7 @@ const AgentSchema = z.object({
|
|
|
8
8
|
id: z.string(),
|
|
9
9
|
name: z.string(),
|
|
10
10
|
description: z.string().nullable(),
|
|
11
|
-
identifier: z.string(),
|
|
11
|
+
identifier: z.string().nullable(), // nullable for legacy records
|
|
12
12
|
version: z.string().nullable(),
|
|
13
13
|
deploymentId: z.string().nullable(),
|
|
14
14
|
devmode: z.boolean(),
|
|
@@ -75,7 +75,8 @@ export const agentsSubcommand = createSubcommand({
|
|
|
75
75
|
tui.fatal(`Failed to fetch agents: ${response.message ?? 'Unknown error'}`);
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
// Filter out legacy agents without identifiers
|
|
79
|
+
const agents = response.data.filter((agent) => agent.identifier !== null);
|
|
79
80
|
|
|
80
81
|
if (format === 'json' && !options.json) {
|
|
81
82
|
console.log(JSON.stringify(agents, null, 2));
|
|
@@ -91,7 +92,7 @@ export const agentsSubcommand = createSubcommand({
|
|
|
91
92
|
agents.map((agent) => ({
|
|
92
93
|
name: agent.name,
|
|
93
94
|
id: verbose ? agent.id : abbreviate(agent.id, 20),
|
|
94
|
-
identifier: verbose ? agent.identifier : abbreviate(agent.identifier
|
|
95
|
+
identifier: verbose ? agent.identifier! : abbreviate(agent.identifier!, 20),
|
|
95
96
|
deployment: abbreviate(agent.deploymentId, 20),
|
|
96
97
|
version: verbose
|
|
97
98
|
? (agent.version ?? 'N/A')
|
package/src/cmd/dev/index.ts
CHANGED
|
@@ -110,7 +110,7 @@ export const command = createCommand({
|
|
|
110
110
|
);
|
|
111
111
|
const deploymentId = getDevmodeDeploymentId(project?.projectId ?? '', devmode?.id ?? '');
|
|
112
112
|
|
|
113
|
-
if (devmode) {
|
|
113
|
+
if (devmode && opts.public) {
|
|
114
114
|
const configDir = getDefaultConfigDir();
|
|
115
115
|
const gravityDir = join(configDir, 'gravity');
|
|
116
116
|
let mustCheck = true;
|
|
@@ -242,7 +242,7 @@ export const command = createCommand({
|
|
|
242
242
|
if (!sdkKey) {
|
|
243
243
|
tui.warning(`Couldn't find the AGENTUITY_SDK_KEY in ${rootDir} .env file`);
|
|
244
244
|
}
|
|
245
|
-
const gravityBinExists = gravityBin ? await Bun.file(gravityBin).exists() :
|
|
245
|
+
const gravityBinExists = gravityBin ? await Bun.file(gravityBin).exists() : true;
|
|
246
246
|
if (!gravityBinExists) {
|
|
247
247
|
logger.error(`Gravity binary not found at ${gravityBin}, skipping gravity client startup`);
|
|
248
248
|
}
|
|
@@ -252,7 +252,7 @@ export const command = createCommand({
|
|
|
252
252
|
gravityClient.kill('SIGINT');
|
|
253
253
|
gravityClient.kill();
|
|
254
254
|
}
|
|
255
|
-
if (!devmode) {
|
|
255
|
+
if (!devmode || !opts.public) {
|
|
256
256
|
return;
|
|
257
257
|
}
|
|
258
258
|
try {
|
package/src/cmd/index.ts
CHANGED
|
@@ -1,53 +1,49 @@
|
|
|
1
|
-
import { readdir } from 'node:fs/promises';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
1
|
import type { CommandDefinition } from '../types';
|
|
4
2
|
|
|
3
|
+
// Use dynamic imports for bundler compatibility while maintaining lazy loading
|
|
5
4
|
export async function discoverCommands(): Promise<CommandDefinition[]> {
|
|
6
|
-
const
|
|
7
|
-
|
|
5
|
+
const commandModules = await Promise.all([
|
|
6
|
+
import('./ai').then((m) => m.command),
|
|
7
|
+
import('./auth').then((m) => m.command),
|
|
8
|
+
import('./build').then((m) => m.command),
|
|
9
|
+
import('./cloud').then((m) => m.command),
|
|
10
|
+
import('./dev').then((m) => m.command),
|
|
11
|
+
import('./profile').then((m) => m.command),
|
|
12
|
+
import('./project').then((m) => m.command),
|
|
13
|
+
import('./repl').then((m) => m.command),
|
|
14
|
+
import('./version').then((m) => m.command),
|
|
15
|
+
]);
|
|
8
16
|
|
|
9
17
|
const commands: CommandDefinition[] = [];
|
|
10
18
|
|
|
11
|
-
for (const
|
|
12
|
-
|
|
13
|
-
try {
|
|
14
|
-
const modulePath = join(cmdDir, entry.name, 'index.ts');
|
|
15
|
-
const module = await import(modulePath);
|
|
19
|
+
for (const cmd of commandModules) {
|
|
20
|
+
commands.push(cmd);
|
|
16
21
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
//
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
42
|
-
examples: (subcommand as any).examples,
|
|
43
|
-
};
|
|
44
|
-
commands.push(alias as CommandDefinition);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
22
|
+
// Auto-create hidden top-level aliases for subcommands with toplevel: true
|
|
23
|
+
if (cmd.subcommands) {
|
|
24
|
+
for (const subcommand of cmd.subcommands) {
|
|
25
|
+
if (subcommand.toplevel) {
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
|
+
const alias: any = {
|
|
28
|
+
name: subcommand.name,
|
|
29
|
+
description: subcommand.description,
|
|
30
|
+
aliases: subcommand.aliases,
|
|
31
|
+
hidden: true,
|
|
32
|
+
requires: subcommand.requires,
|
|
33
|
+
optional: subcommand.optional,
|
|
34
|
+
schema: subcommand.schema,
|
|
35
|
+
handler: subcommand.handler,
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
37
|
+
idempotent: (subcommand as any).idempotent,
|
|
38
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
39
|
+
prerequisites: (subcommand as any).prerequisites,
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
41
|
+
tags: (subcommand as any).tags,
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
43
|
+
examples: (subcommand as any).examples,
|
|
44
|
+
};
|
|
45
|
+
commands.push(alias as CommandDefinition);
|
|
48
46
|
}
|
|
49
|
-
} catch (error) {
|
|
50
|
-
console.warn(`Warning: Failed to load command from ${entry.name}:`, error);
|
|
51
47
|
}
|
|
52
48
|
}
|
|
53
49
|
}
|
package/src/schema-parser.ts
CHANGED
|
@@ -216,7 +216,9 @@ export function buildValidationInput(
|
|
|
216
216
|
const parsed = parseOptionsSchema(schemas.options);
|
|
217
217
|
for (const opt of parsed) {
|
|
218
218
|
// Only include the option if it has a value - omitting undefined allows Zod to apply defaults
|
|
219
|
-
|
|
219
|
+
// Commander.js converts kebab-case to camelCase, so we need to check both
|
|
220
|
+
const camelCaseName = opt.name.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
|
|
221
|
+
const value = rawOptions[opt.name] ?? rawOptions[camelCaseName];
|
|
220
222
|
if (value !== undefined) {
|
|
221
223
|
result.options[opt.name] = value;
|
|
222
224
|
}
|
package/src/tui.ts
CHANGED
|
@@ -13,6 +13,10 @@ import type { ColorScheme } from './terminal';
|
|
|
13
13
|
import type { Profile } from './types';
|
|
14
14
|
import { type APIClient as APIClientType } from './api';
|
|
15
15
|
import { getExitCode } from './errors';
|
|
16
|
+
import { maskSecret } from './env-util';
|
|
17
|
+
|
|
18
|
+
// Re-export maskSecret for convenience
|
|
19
|
+
export { maskSecret };
|
|
16
20
|
|
|
17
21
|
// Icons
|
|
18
22
|
const ICONS = {
|
|
@@ -135,6 +139,24 @@ export function colorMuted(text: string): string {
|
|
|
135
139
|
return `${color}${text}${reset}`;
|
|
136
140
|
}
|
|
137
141
|
|
|
142
|
+
/**
|
|
143
|
+
* Get the appropriate color function for a log severity level
|
|
144
|
+
*/
|
|
145
|
+
export function getSeverityColor(severity: string): (text: string) => string {
|
|
146
|
+
switch (severity.toUpperCase()) {
|
|
147
|
+
case 'ERROR':
|
|
148
|
+
return colorError;
|
|
149
|
+
case 'WARN':
|
|
150
|
+
return colorWarning;
|
|
151
|
+
case 'INFO':
|
|
152
|
+
return colorInfo;
|
|
153
|
+
case 'DEBUG':
|
|
154
|
+
return colorMuted;
|
|
155
|
+
default:
|
|
156
|
+
return (text: string) => text;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
138
160
|
/**
|
|
139
161
|
* Print a success message with a green checkmark
|
|
140
162
|
*/
|
|
@@ -214,6 +236,25 @@ export function bold(text: string): string {
|
|
|
214
236
|
return `${color}${text}${reset}`;
|
|
215
237
|
}
|
|
216
238
|
|
|
239
|
+
/**
|
|
240
|
+
* Format text with white bold (or inverse for light mode)
|
|
241
|
+
* Used for table headings
|
|
242
|
+
*/
|
|
243
|
+
export function heading(text: string): string {
|
|
244
|
+
const USE_COLORS = shouldUseColors();
|
|
245
|
+
if (!USE_COLORS) {
|
|
246
|
+
return text;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// For light mode: use inverse (black bg, white text)
|
|
250
|
+
// For dark mode: use white bold
|
|
251
|
+
const style = isDarkMode()
|
|
252
|
+
? '\x1b[1;37m' // bold white
|
|
253
|
+
: '\x1b[7m'; // inverse
|
|
254
|
+
const reset = getColor('reset');
|
|
255
|
+
return `${style}${text}${reset}`;
|
|
256
|
+
}
|
|
257
|
+
|
|
217
258
|
/**
|
|
218
259
|
* Format text as a link (blue and underlined)
|
|
219
260
|
*/
|
|
@@ -1377,7 +1418,7 @@ export interface TableColumn {
|
|
|
1377
1418
|
}
|
|
1378
1419
|
|
|
1379
1420
|
/**
|
|
1380
|
-
* Display data in a formatted table using
|
|
1421
|
+
* Display data in a formatted table using cli-table3
|
|
1381
1422
|
*
|
|
1382
1423
|
* Supports two modes:
|
|
1383
1424
|
* 1. Simple mode: Pass data array and optional column names
|
|
@@ -1393,14 +1434,14 @@ export function table<T extends Record<string, unknown>>(
|
|
|
1393
1434
|
columns?: (keyof T)[] | TableColumn[],
|
|
1394
1435
|
options?: { render?: boolean }
|
|
1395
1436
|
): string | void {
|
|
1396
|
-
// Dynamic import to avoid type errors (console-table-printer has poor typings)
|
|
1397
1437
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
1398
|
-
const
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1438
|
+
const Table = require('cli-table3') as new (options?: {
|
|
1439
|
+
head?: string[];
|
|
1440
|
+
colAligns?: Array<'left' | 'right' | 'center'>;
|
|
1441
|
+
wordWrap?: boolean;
|
|
1442
|
+
}) => {
|
|
1443
|
+
push(row: unknown[]): void;
|
|
1444
|
+
toString(): string;
|
|
1404
1445
|
};
|
|
1405
1446
|
|
|
1406
1447
|
if (!data || data.length === 0) {
|
|
@@ -1410,52 +1451,48 @@ export function table<T extends Record<string, unknown>>(
|
|
|
1410
1451
|
// Determine if we're using advanced column config or simple column names
|
|
1411
1452
|
const isAdvancedMode = columns && columns.length > 0 && typeof columns[0] === 'object';
|
|
1412
1453
|
|
|
1413
|
-
let
|
|
1454
|
+
let columnNames: string[];
|
|
1455
|
+
let colAligns: Array<'left' | 'right' | 'center'>;
|
|
1414
1456
|
|
|
1415
1457
|
if (isAdvancedMode) {
|
|
1416
1458
|
// Advanced mode: use provided column configurations
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
alignment: col.alignment || 'left',
|
|
1421
|
-
})),
|
|
1422
|
-
};
|
|
1459
|
+
const columnConfigs = columns as TableColumn[];
|
|
1460
|
+
columnNames = columnConfigs.map((col) => col.name);
|
|
1461
|
+
colAligns = columnConfigs.map((col) => col.alignment || 'left');
|
|
1423
1462
|
} else {
|
|
1424
1463
|
// Simple mode: determine column names from data or columns parameter
|
|
1425
|
-
|
|
1464
|
+
columnNames = columns
|
|
1426
1465
|
? (columns as (keyof T)[]).map((c) => String(c))
|
|
1427
1466
|
: data.length > 0
|
|
1428
1467
|
? Object.keys(data[0])
|
|
1429
1468
|
: [];
|
|
1430
|
-
|
|
1431
|
-
tableConfig = {
|
|
1432
|
-
columns: columnNames.map((name) => ({
|
|
1433
|
-
name,
|
|
1434
|
-
alignment: 'left',
|
|
1435
|
-
})),
|
|
1436
|
-
};
|
|
1469
|
+
colAligns = columnNames.map(() => 'left' as const);
|
|
1437
1470
|
}
|
|
1438
1471
|
|
|
1439
|
-
|
|
1472
|
+
// Apply heading style to column names
|
|
1473
|
+
const headings = columnNames.map((name) => heading(name));
|
|
1474
|
+
|
|
1475
|
+
const t = new Table({
|
|
1476
|
+
head: headings,
|
|
1477
|
+
colAligns,
|
|
1478
|
+
wordWrap: true,
|
|
1479
|
+
});
|
|
1440
1480
|
|
|
1441
1481
|
// Add rows to table
|
|
1442
1482
|
for (const row of data) {
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
const
|
|
1446
|
-
|
|
1447
|
-
filtered[String(col)] = row[col];
|
|
1448
|
-
}
|
|
1449
|
-
t.addRow(filtered);
|
|
1450
|
-
} else {
|
|
1451
|
-
// Advanced mode or no column filtering
|
|
1452
|
-
t.addRow(row);
|
|
1483
|
+
const rowData: unknown[] = [];
|
|
1484
|
+
for (const colName of columnNames) {
|
|
1485
|
+
const value = row[colName];
|
|
1486
|
+
rowData.push(value !== undefined && value !== null ? String(value) : '');
|
|
1453
1487
|
}
|
|
1488
|
+
t.push(rowData);
|
|
1454
1489
|
}
|
|
1455
1490
|
|
|
1491
|
+
const output = t.toString();
|
|
1492
|
+
|
|
1456
1493
|
if (options?.render) {
|
|
1457
|
-
return
|
|
1494
|
+
return output;
|
|
1458
1495
|
} else {
|
|
1459
|
-
|
|
1496
|
+
console.log(output);
|
|
1460
1497
|
}
|
|
1461
1498
|
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse duration string (e.g., "1h", "2d", "1y") or ISO date to ISO date string
|
|
3
|
+
*
|
|
4
|
+
* @param input - Duration string (1m, 1h, 2d, 1w, 1y) or ISO date (2025-12-31T23:59:59Z)
|
|
5
|
+
* @returns ISO date string
|
|
6
|
+
* @throws Error if input format is invalid
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* parseExpiresAt('1h') // Returns ISO date 1 hour from now
|
|
10
|
+
* parseExpiresAt('30d') // Returns ISO date 30 days from now
|
|
11
|
+
* parseExpiresAt('2025-12-31T23:59:59Z') // Returns same ISO date
|
|
12
|
+
*/
|
|
13
|
+
export function parseExpiresAt(input: string): string {
|
|
14
|
+
// Check if it's already an ISO date format
|
|
15
|
+
if (input.includes('T') || input.includes('-')) {
|
|
16
|
+
// Validate it's a valid date
|
|
17
|
+
const date = new Date(input);
|
|
18
|
+
if (isNaN(date.getTime())) {
|
|
19
|
+
throw new Error(`Invalid date format: ${input}`);
|
|
20
|
+
}
|
|
21
|
+
return date.toISOString();
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Parse duration format (e.g., "1h", "2d", "30d", "1y")
|
|
25
|
+
const durationRegex = /^(\d+)(m|h|d|w|y)$/;
|
|
26
|
+
const match = input.match(durationRegex);
|
|
27
|
+
|
|
28
|
+
if (!match) {
|
|
29
|
+
throw new Error(
|
|
30
|
+
`Invalid expires-at format: ${input}. Use ISO date (2025-12-31T23:59:59Z) or duration (1h, 2d, 1y)`
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const [, amount, unit] = match;
|
|
35
|
+
const num = parseInt(amount, 10);
|
|
36
|
+
const now = new Date();
|
|
37
|
+
|
|
38
|
+
switch (unit) {
|
|
39
|
+
case 'm': // minutes
|
|
40
|
+
now.setMinutes(now.getMinutes() + num);
|
|
41
|
+
break;
|
|
42
|
+
case 'h': // hours
|
|
43
|
+
now.setHours(now.getHours() + num);
|
|
44
|
+
break;
|
|
45
|
+
case 'd': // days
|
|
46
|
+
now.setDate(now.getDate() + num);
|
|
47
|
+
break;
|
|
48
|
+
case 'w': // weeks
|
|
49
|
+
now.setDate(now.getDate() + num * 7);
|
|
50
|
+
break;
|
|
51
|
+
case 'y': // years
|
|
52
|
+
now.setFullYear(now.getFullYear() + num);
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return now.toISOString();
|
|
57
|
+
}
|
package/src/version.ts
CHANGED
|
@@ -16,7 +16,7 @@ export function getPackage(): typeof pkg {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
export function getVersion(): string {
|
|
19
|
-
return getPackage().version || 'dev';
|
|
19
|
+
return process.env.AGENTUITY_CLI_VERSION || getPackage().version || 'dev';
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
export function getPackageName(): string {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cmd/cloud/agents/index.ts"],"names":[],"mappings":"AAmCA,eAAO,MAAM,OAAO,sCA+GlB,CAAC;AACH,eAAe,OAAO,CAAC"}
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { createCommand } from '../../../types';
|
|
3
|
-
import * as tui from '../../../tui';
|
|
4
|
-
import { APIResponseSchema } from '@agentuity/server';
|
|
5
|
-
import { Table } from 'console-table-printer';
|
|
6
|
-
import { abbreviate, abbreviateDescription } from '../../../utils/format';
|
|
7
|
-
const AgentSchema = z.object({
|
|
8
|
-
id: z.string(),
|
|
9
|
-
name: z.string(),
|
|
10
|
-
description: z.string().nullable(),
|
|
11
|
-
identifier: z.string(),
|
|
12
|
-
version: z.string().nullable(),
|
|
13
|
-
deploymentId: z.string().nullable(),
|
|
14
|
-
devmode: z.boolean(),
|
|
15
|
-
metadata: z.record(z.string(), z.unknown()).nullable(),
|
|
16
|
-
createdAt: z.string(),
|
|
17
|
-
updatedAt: z.string(),
|
|
18
|
-
evals: z.array(z.object({
|
|
19
|
-
id: z.string(),
|
|
20
|
-
name: z.string(),
|
|
21
|
-
description: z.string().nullable(),
|
|
22
|
-
identifier: z.string().nullable(),
|
|
23
|
-
deploymentId: z.string().nullable(),
|
|
24
|
-
version: z.string().nullable(),
|
|
25
|
-
devmode: z.boolean(),
|
|
26
|
-
createdAt: z.string(),
|
|
27
|
-
updatedAt: z.string(),
|
|
28
|
-
})),
|
|
29
|
-
});
|
|
30
|
-
const AgentsResponseSchema = APIResponseSchema(z.array(AgentSchema));
|
|
31
|
-
export const command = createCommand({
|
|
32
|
-
name: 'agents',
|
|
33
|
-
description: 'Show devmode agent results',
|
|
34
|
-
requires: { auth: true, apiClient: true, project: true },
|
|
35
|
-
schema: {
|
|
36
|
-
options: z.object({
|
|
37
|
-
deploymentId: z.string().optional().describe('Filter by deployment ID'),
|
|
38
|
-
format: z
|
|
39
|
-
.enum(['json', 'table'])
|
|
40
|
-
.optional()
|
|
41
|
-
.default('table')
|
|
42
|
-
.describe('Output format: json or table'),
|
|
43
|
-
verbose: z.boolean().optional().default(false).describe('Show full IDs and descriptions'),
|
|
44
|
-
}),
|
|
45
|
-
},
|
|
46
|
-
async handler(ctx) {
|
|
47
|
-
const { opts, apiClient, project } = ctx;
|
|
48
|
-
const projectId = project.projectId;
|
|
49
|
-
const format = opts?.format ?? 'table';
|
|
50
|
-
const verbose = opts?.verbose ?? false;
|
|
51
|
-
const deploymentId = opts?.deploymentId;
|
|
52
|
-
const queryParams = deploymentId ? `?deploymentId=${deploymentId}` : '';
|
|
53
|
-
const response = await tui.spinner('Fetching agents', async () => {
|
|
54
|
-
return apiClient.request('GET', `/cli/agent/${projectId}${queryParams}`, AgentsResponseSchema);
|
|
55
|
-
});
|
|
56
|
-
if (!response.success) {
|
|
57
|
-
tui.fatal(`Failed to fetch agents: ${response.message ?? 'Unknown error'}`);
|
|
58
|
-
}
|
|
59
|
-
const agents = response.data;
|
|
60
|
-
if (format === 'json') {
|
|
61
|
-
console.log(JSON.stringify(agents, null, 2));
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
tui.info(`Agents (${agents.length})`);
|
|
65
|
-
if (agents.length === 0) {
|
|
66
|
-
tui.muted('No agents found');
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
const table = new Table({
|
|
70
|
-
columns: [
|
|
71
|
-
{ name: 'Name', alignment: 'left' },
|
|
72
|
-
{ name: 'ID', alignment: 'left' },
|
|
73
|
-
{ name: 'Identifier', alignment: 'left' },
|
|
74
|
-
{ name: 'Deployment', alignment: 'left' },
|
|
75
|
-
{ name: 'Version', alignment: 'left' },
|
|
76
|
-
{ name: 'Evals', alignment: 'center' },
|
|
77
|
-
{ name: 'Created', alignment: 'left' },
|
|
78
|
-
],
|
|
79
|
-
});
|
|
80
|
-
for (const agent of agents) {
|
|
81
|
-
table.addRow({
|
|
82
|
-
Name: agent.name,
|
|
83
|
-
ID: verbose ? agent.id : abbreviate(agent.id, 20),
|
|
84
|
-
Identifier: verbose ? agent.identifier : abbreviate(agent.identifier, 20),
|
|
85
|
-
Deployment: abbreviate(agent.deploymentId, 20),
|
|
86
|
-
Version: verbose
|
|
87
|
-
? (agent.version ?? 'N/A')
|
|
88
|
-
: (abbreviate(agent.version, 20) ?? 'N/A'),
|
|
89
|
-
Evals: agent.evals.length,
|
|
90
|
-
Created: new Date(agent.createdAt).toLocaleString(),
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
table.printTable();
|
|
94
|
-
// Show evals for each agent
|
|
95
|
-
for (const agent of agents) {
|
|
96
|
-
if (agent.evals.length > 0) {
|
|
97
|
-
console.log(`\n Evals for ${agent.name}:`);
|
|
98
|
-
const evalTable = new Table({
|
|
99
|
-
columns: [
|
|
100
|
-
{ name: 'Name', alignment: 'left' },
|
|
101
|
-
{ name: 'ID', alignment: 'left' },
|
|
102
|
-
{ name: 'Identifier', alignment: 'left' },
|
|
103
|
-
{ name: 'Deployment', alignment: 'left' },
|
|
104
|
-
{ name: 'Version', alignment: 'left' },
|
|
105
|
-
{ name: 'Description', alignment: 'left' },
|
|
106
|
-
{ name: 'Created', alignment: 'left' },
|
|
107
|
-
],
|
|
108
|
-
});
|
|
109
|
-
for (const evalItem of agent.evals) {
|
|
110
|
-
evalTable.addRow({
|
|
111
|
-
Name: evalItem.name,
|
|
112
|
-
ID: verbose ? evalItem.id : abbreviate(evalItem.id, 20),
|
|
113
|
-
Identifier: verbose
|
|
114
|
-
? (evalItem.identifier ?? 'N/A')
|
|
115
|
-
: (abbreviate(evalItem.identifier, 20) ?? 'N/A'),
|
|
116
|
-
Deployment: abbreviate(evalItem.deploymentId, 20),
|
|
117
|
-
Version: verbose
|
|
118
|
-
? (evalItem.version ?? 'N/A')
|
|
119
|
-
: (abbreviate(evalItem.version, 20) ?? 'N/A'),
|
|
120
|
-
Description: verbose
|
|
121
|
-
? (evalItem.description ?? 'N/A')
|
|
122
|
-
: abbreviateDescription(evalItem.description),
|
|
123
|
-
Created: new Date(evalItem.createdAt).toLocaleString(),
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
evalTable.printTable();
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
},
|
|
131
|
-
});
|
|
132
|
-
export default command;
|
|
133
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/agents/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../../src/cmd/cloud/resource/add.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,aAAa,yCAkExB,CAAC"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { createResources } from '@agentuity/server';
|
|
3
|
-
import enquirer from 'enquirer';
|
|
4
|
-
import { createSubcommand } from '../../../types';
|
|
5
|
-
import * as tui from '../../../tui';
|
|
6
|
-
import { getCatalystAPIClient } from '../../../config';
|
|
7
|
-
import { getCommand } from '../../../command-prefix';
|
|
8
|
-
export const addSubcommand = createSubcommand({
|
|
9
|
-
name: 'add',
|
|
10
|
-
aliases: ['create'],
|
|
11
|
-
description: 'Add a cloud resource for an organization',
|
|
12
|
-
tags: ['mutating', 'creates-resource', 'slow', 'requires-auth', 'requires-deployment'],
|
|
13
|
-
idempotent: false,
|
|
14
|
-
requires: { auth: true, org: true, region: true },
|
|
15
|
-
examples: [
|
|
16
|
-
getCommand('cloud resource add'),
|
|
17
|
-
getCommand('cloud resource add --type database'),
|
|
18
|
-
getCommand('cloud resource add --type storage'),
|
|
19
|
-
getCommand('cloud resource create --type database'),
|
|
20
|
-
],
|
|
21
|
-
schema: {
|
|
22
|
-
options: z.object({
|
|
23
|
-
type: z.enum(['database', 'storage']).optional().describe('Resource type'),
|
|
24
|
-
}),
|
|
25
|
-
response: z.object({
|
|
26
|
-
success: z.boolean().describe('Whether creation succeeded'),
|
|
27
|
-
type: z.string().describe('Resource type (database or storage)'),
|
|
28
|
-
name: z.string().describe('Created resource name'),
|
|
29
|
-
}),
|
|
30
|
-
},
|
|
31
|
-
async handler(ctx) {
|
|
32
|
-
const { logger, opts, orgId, region, config, auth } = ctx;
|
|
33
|
-
// Determine resource type
|
|
34
|
-
let resourceType = opts.type;
|
|
35
|
-
if (!resourceType) {
|
|
36
|
-
const response = await enquirer.prompt({
|
|
37
|
-
type: 'select',
|
|
38
|
-
name: 'type',
|
|
39
|
-
message: 'Select resource type:',
|
|
40
|
-
choices: [
|
|
41
|
-
{ name: 'database', message: 'Database (PostgreSQL)' },
|
|
42
|
-
{ name: 'storage', message: 'Storage (S3)' },
|
|
43
|
-
],
|
|
44
|
-
});
|
|
45
|
-
resourceType = response.type;
|
|
46
|
-
}
|
|
47
|
-
// Map user-friendly type to API type
|
|
48
|
-
const apiType = resourceType === 'database' ? 'db' : 's3';
|
|
49
|
-
const catalystClient = getCatalystAPIClient(config, logger, auth);
|
|
50
|
-
const created = await tui.spinner({
|
|
51
|
-
message: `Creating ${resourceType} in ${region}`,
|
|
52
|
-
clearOnSuccess: true,
|
|
53
|
-
callback: async () => {
|
|
54
|
-
return createResources(catalystClient, orgId, region, [{ type: apiType }]);
|
|
55
|
-
},
|
|
56
|
-
});
|
|
57
|
-
if (created.length > 0) {
|
|
58
|
-
tui.success(`Created ${resourceType}: ${tui.bold(created[0].name)}`);
|
|
59
|
-
return {
|
|
60
|
-
success: true,
|
|
61
|
-
type: resourceType,
|
|
62
|
-
name: created[0].name,
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
tui.fatal('Failed to create resource');
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
});
|
|
70
|
-
//# sourceMappingURL=add.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/resource/add.ts"],"names":[],"mappings":"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"}
|