@agentuity/cli 0.0.59 → 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/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.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.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/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 +4 -2
- 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/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/tui.d.ts +2 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +3 -0
- package/dist/tui.js.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +3 -3
- package/src/cli.ts +15 -1
- package/src/cmd/ai/capabilities/show.ts +11 -4
- 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/env/get.ts +2 -3
- package/src/cmd/cloud/env/list.ts +1 -2
- package/src/cmd/cloud/index.ts +5 -2
- package/src/cmd/cloud/secret/get.ts +2 -3
- package/src/cmd/cloud/secret/list.ts +1 -2
- 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/tui.ts +4 -0
- package/src/version.ts +1 -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/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 → db}/delete.d.ts +0 -0
- /package/dist/cmd/cloud/{resource → db}/list.d.ts +0 -0
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { listResources, deleteResources } 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
|
-
|
|
9
|
-
export const deleteSubcommand = createSubcommand({
|
|
10
|
-
name: 'delete',
|
|
11
|
-
description: 'Delete cloud resource(s) for an organization',
|
|
12
|
-
tags: ['destructive', 'deletes-resource', 'slow', 'requires-auth', 'requires-deployment'],
|
|
13
|
-
aliases: ['rm', 'del', 'remove'],
|
|
14
|
-
idempotent: false,
|
|
15
|
-
requires: { auth: true, org: true, region: true },
|
|
16
|
-
examples: [
|
|
17
|
-
getCommand('cloud resource delete'),
|
|
18
|
-
getCommand('cloud resource delete --type db --name my-database'),
|
|
19
|
-
getCommand('cloud resource delete --type s3 --name uploads'),
|
|
20
|
-
getCommand('--explain cloud resource delete --type db --name old-db'),
|
|
21
|
-
getCommand('--dry-run cloud resource rm --type s3 --name temp-bucket'),
|
|
22
|
-
],
|
|
23
|
-
schema: {
|
|
24
|
-
options: z.object({
|
|
25
|
-
type: z.enum(['db', 's3']).optional().describe('Resource type (db or s3)'),
|
|
26
|
-
name: z.string().optional().describe('Resource name to delete'),
|
|
27
|
-
confirm: z.boolean().optional().describe('Skip confirmation prompts'),
|
|
28
|
-
}),
|
|
29
|
-
response: z.object({
|
|
30
|
-
success: z.boolean().describe('Whether deletion succeeded'),
|
|
31
|
-
count: z.number().describe('Number of resources deleted'),
|
|
32
|
-
resources: z.array(z.string()).describe('Deleted resource names'),
|
|
33
|
-
}),
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
async handler(ctx) {
|
|
37
|
-
const { logger, opts, config, orgId, region, auth } = ctx;
|
|
38
|
-
|
|
39
|
-
const catalystClient = getCatalystAPIClient(config, logger, auth);
|
|
40
|
-
|
|
41
|
-
// Determine what to delete
|
|
42
|
-
let resourcesToDelete: Array<{ type: 'db' | 's3'; name: string }> = [];
|
|
43
|
-
|
|
44
|
-
if (opts.type && opts.name) {
|
|
45
|
-
// Command line arguments provided
|
|
46
|
-
resourcesToDelete = [{ type: opts.type, name: opts.name }];
|
|
47
|
-
} else {
|
|
48
|
-
// Fetch resources and prompt for selection
|
|
49
|
-
const resources = await tui.spinner({
|
|
50
|
-
message: `Fetching resources for ${orgId} in ${region}`,
|
|
51
|
-
clearOnSuccess: true,
|
|
52
|
-
callback: async () => {
|
|
53
|
-
return listResources(catalystClient, orgId, region!);
|
|
54
|
-
},
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
if (resources.db.length === 0 && resources.s3.length === 0) {
|
|
58
|
-
tui.info('No resources found to delete');
|
|
59
|
-
return { success: false, count: 0, resources: [] };
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// Build choices for multi-select and resource map
|
|
63
|
-
const choices: Array<{ name: string; message: string }> = [];
|
|
64
|
-
const resourceMap = new Map<string, { type: 'db' | 's3'; name: string }>();
|
|
65
|
-
|
|
66
|
-
for (const db of resources.db) {
|
|
67
|
-
const key = `db:${db.name}`;
|
|
68
|
-
choices.push({
|
|
69
|
-
name: key,
|
|
70
|
-
message: `Database: ${db.name}`,
|
|
71
|
-
});
|
|
72
|
-
resourceMap.set(key, { type: 'db', name: db.name });
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
for (const s3 of resources.s3) {
|
|
76
|
-
const key = `s3:${s3.bucket_name}`;
|
|
77
|
-
choices.push({
|
|
78
|
-
name: key,
|
|
79
|
-
message: `Storage: ${s3.bucket_name}`,
|
|
80
|
-
});
|
|
81
|
-
resourceMap.set(key, { type: 's3', name: s3.bucket_name });
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
const response = await enquirer.prompt<{ resources: string[] }>({
|
|
85
|
-
type: 'multiselect',
|
|
86
|
-
name: 'resources',
|
|
87
|
-
message: 'Select resource(s) to delete:',
|
|
88
|
-
choices,
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
// Map selected keys back to resource objects
|
|
92
|
-
resourcesToDelete = response.resources
|
|
93
|
-
.map((key) => resourceMap.get(key))
|
|
94
|
-
.filter((r): r is { type: 'db' | 's3'; name: string } => r !== undefined);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
if (resourcesToDelete.length === 0) {
|
|
98
|
-
tui.info('No resources selected for deletion');
|
|
99
|
-
return { success: false, count: 0, resources: [] };
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// Confirm deletion
|
|
103
|
-
if (!opts.confirm) {
|
|
104
|
-
const resourceNames = resourcesToDelete.map((r) => `${r.type}:${r.name}`).join(', ');
|
|
105
|
-
tui.warning(`You are about to delete: ${tui.bold(resourceNames)}`);
|
|
106
|
-
|
|
107
|
-
const confirm = await enquirer.prompt<{ confirm: boolean }>({
|
|
108
|
-
type: 'confirm',
|
|
109
|
-
name: 'confirm',
|
|
110
|
-
message: 'Are you sure you want to delete these resources?',
|
|
111
|
-
initial: false,
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
if (!confirm.confirm) {
|
|
115
|
-
tui.info('Deletion cancelled');
|
|
116
|
-
return { success: false, count: 0, resources: [] };
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// Delete resources
|
|
121
|
-
const deleted = await tui.spinner({
|
|
122
|
-
message: `Deleting ${resourcesToDelete.length} resource(s)`,
|
|
123
|
-
clearOnSuccess: true,
|
|
124
|
-
callback: async () => {
|
|
125
|
-
return deleteResources(catalystClient, orgId, region!, resourcesToDelete);
|
|
126
|
-
},
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
if (deleted.length > 0) {
|
|
130
|
-
tui.success(`Deleted ${deleted.length} resource(s): ${deleted.join(', ')}`);
|
|
131
|
-
} else {
|
|
132
|
-
tui.error('Failed to delete resources');
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
return {
|
|
136
|
-
success: deleted.length > 0,
|
|
137
|
-
count: deleted.length,
|
|
138
|
-
resources: deleted,
|
|
139
|
-
};
|
|
140
|
-
},
|
|
141
|
-
});
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { createCommand } from '../../../types';
|
|
2
|
-
import { listSubcommand } from './list';
|
|
3
|
-
import { addSubcommand } from './add';
|
|
4
|
-
import { deleteSubcommand } from './delete';
|
|
5
|
-
|
|
6
|
-
export const resourceSubcommand = createCommand({
|
|
7
|
-
name: 'resource',
|
|
8
|
-
aliases: ['resources'],
|
|
9
|
-
description: 'Manage cloud resources',
|
|
10
|
-
tags: ['fast', 'requires-auth', 'requires-deployment'],
|
|
11
|
-
subcommands: [listSubcommand, addSubcommand, deleteSubcommand],
|
|
12
|
-
});
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { listResources } from '@agentuity/server';
|
|
3
|
-
import { createSubcommand } from '../../../types';
|
|
4
|
-
import * as tui from '../../../tui';
|
|
5
|
-
import { getCatalystAPIClient } from '../../../config';
|
|
6
|
-
import { getCommand } from '../../../command-prefix';
|
|
7
|
-
|
|
8
|
-
const ResourceListResponseSchema = z.object({
|
|
9
|
-
db: z
|
|
10
|
-
.array(
|
|
11
|
-
z.object({
|
|
12
|
-
name: z.string().describe('Database name'),
|
|
13
|
-
url: z.string().optional().describe('Database connection URL'),
|
|
14
|
-
})
|
|
15
|
-
)
|
|
16
|
-
.describe('List of database resources'),
|
|
17
|
-
s3: z
|
|
18
|
-
.array(
|
|
19
|
-
z.object({
|
|
20
|
-
bucket_name: z.string().describe('Storage bucket name'),
|
|
21
|
-
access_key: z.string().optional().describe('S3 access key'),
|
|
22
|
-
secret_key: z.string().optional().describe('S3 secret key'),
|
|
23
|
-
region: z.string().optional().describe('S3 region'),
|
|
24
|
-
endpoint: z.string().optional().describe('S3 endpoint URL'),
|
|
25
|
-
})
|
|
26
|
-
)
|
|
27
|
-
.describe('List of storage resources'),
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
export const listSubcommand = createSubcommand({
|
|
31
|
-
name: 'list',
|
|
32
|
-
description: 'List cloud resources for an organization',
|
|
33
|
-
tags: ['read-only', 'fast', 'requires-auth'],
|
|
34
|
-
aliases: ['ls'],
|
|
35
|
-
requires: { auth: true, org: true, region: true },
|
|
36
|
-
idempotent: true,
|
|
37
|
-
examples: [
|
|
38
|
-
getCommand('cloud resource list'),
|
|
39
|
-
getCommand('--json cloud resource list'),
|
|
40
|
-
getCommand('cloud resource ls'),
|
|
41
|
-
],
|
|
42
|
-
schema: {
|
|
43
|
-
response: ResourceListResponseSchema,
|
|
44
|
-
},
|
|
45
|
-
|
|
46
|
-
async handler(ctx) {
|
|
47
|
-
const { logger, options, orgId, region, config, auth } = ctx;
|
|
48
|
-
|
|
49
|
-
const catalystClient = getCatalystAPIClient(config, logger, auth);
|
|
50
|
-
|
|
51
|
-
const resources = await tui.spinner({
|
|
52
|
-
message: `Fetching resources for ${orgId} in ${region}`,
|
|
53
|
-
clearOnSuccess: true,
|
|
54
|
-
callback: async () => {
|
|
55
|
-
return listResources(catalystClient, orgId, region);
|
|
56
|
-
},
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
// Output based on format
|
|
60
|
-
if (!options.json) {
|
|
61
|
-
// Text table format
|
|
62
|
-
if (resources.db.length === 0 && resources.s3.length === 0) {
|
|
63
|
-
tui.info('No resources found');
|
|
64
|
-
} else {
|
|
65
|
-
if (resources.db.length > 0) {
|
|
66
|
-
tui.info(tui.bold('Databases'));
|
|
67
|
-
tui.newline();
|
|
68
|
-
for (const db of resources.db) {
|
|
69
|
-
console.log(tui.bold(db.name));
|
|
70
|
-
if (db.url) console.log(` URL: ${tui.muted(db.url)}`);
|
|
71
|
-
tui.newline();
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
if (resources.s3.length > 0) {
|
|
76
|
-
tui.info(tui.bold('Storage'));
|
|
77
|
-
tui.newline();
|
|
78
|
-
for (const s3 of resources.s3) {
|
|
79
|
-
console.log(tui.bold(s3.bucket_name));
|
|
80
|
-
if (s3.access_key) console.log(` Access Key: ${tui.muted(s3.access_key)}`);
|
|
81
|
-
if (s3.secret_key) console.log(` Secret Key: ${tui.muted(s3.secret_key)}`);
|
|
82
|
-
if (s3.region) console.log(` Region: ${tui.muted(s3.region)}`);
|
|
83
|
-
if (s3.endpoint) console.log(` Endpoint: ${tui.muted(s3.endpoint)}`);
|
|
84
|
-
tui.newline();
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// Convert null to undefined for schema compliance
|
|
91
|
-
return {
|
|
92
|
-
db: resources.db.map((db) => ({
|
|
93
|
-
name: db.name,
|
|
94
|
-
url: db.url ?? undefined,
|
|
95
|
-
})),
|
|
96
|
-
s3: resources.s3.map((s3) => ({
|
|
97
|
-
bucket_name: s3.bucket_name,
|
|
98
|
-
access_key: s3.access_key ?? undefined,
|
|
99
|
-
secret_key: s3.secret_key ?? undefined,
|
|
100
|
-
region: s3.region ?? undefined,
|
|
101
|
-
endpoint: s3.endpoint ?? undefined,
|
|
102
|
-
})),
|
|
103
|
-
};
|
|
104
|
-
},
|
|
105
|
-
});
|
|
File without changes
|
|
File without changes
|