@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.
Files changed (125) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +14 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/cmd/ai/capabilities/show.d.ts.map +1 -1
  5. package/dist/cmd/ai/capabilities/show.js +11 -4
  6. package/dist/cmd/ai/capabilities/show.js.map +1 -1
  7. package/dist/cmd/cloud/db/create.d.ts +2 -0
  8. package/dist/cmd/cloud/db/create.d.ts.map +1 -0
  9. package/dist/cmd/cloud/db/create.js +68 -0
  10. package/dist/cmd/cloud/db/create.js.map +1 -0
  11. package/dist/cmd/cloud/db/delete.d.ts.map +1 -0
  12. package/dist/cmd/cloud/db/delete.js +106 -0
  13. package/dist/cmd/cloud/db/delete.js.map +1 -0
  14. package/dist/cmd/cloud/db/get.d.ts +2 -0
  15. package/dist/cmd/cloud/db/get.d.ts.map +1 -0
  16. package/dist/cmd/cloud/db/get.js +66 -0
  17. package/dist/cmd/cloud/db/get.js.map +1 -0
  18. package/dist/cmd/cloud/db/index.d.ts +2 -0
  19. package/dist/cmd/cloud/db/index.d.ts.map +1 -0
  20. package/dist/cmd/cloud/db/index.js +14 -0
  21. package/dist/cmd/cloud/db/index.js.map +1 -0
  22. package/dist/cmd/cloud/db/list.d.ts.map +1 -0
  23. package/dist/cmd/cloud/db/list.js +75 -0
  24. package/dist/cmd/cloud/db/list.js.map +1 -0
  25. package/dist/cmd/cloud/db/sql.d.ts +2 -0
  26. package/dist/cmd/cloud/db/sql.d.ts.map +1 -0
  27. package/dist/cmd/cloud/db/sql.js +102 -0
  28. package/dist/cmd/cloud/db/sql.js.map +1 -0
  29. package/dist/cmd/cloud/env/get.d.ts.map +1 -1
  30. package/dist/cmd/cloud/env/get.js +2 -3
  31. package/dist/cmd/cloud/env/get.js.map +1 -1
  32. package/dist/cmd/cloud/env/list.d.ts.map +1 -1
  33. package/dist/cmd/cloud/env/list.js +1 -2
  34. package/dist/cmd/cloud/env/list.js.map +1 -1
  35. package/dist/cmd/cloud/index.d.ts.map +1 -1
  36. package/dist/cmd/cloud/index.js +4 -2
  37. package/dist/cmd/cloud/index.js.map +1 -1
  38. package/dist/cmd/cloud/secret/get.d.ts.map +1 -1
  39. package/dist/cmd/cloud/secret/get.js +2 -3
  40. package/dist/cmd/cloud/secret/get.js.map +1 -1
  41. package/dist/cmd/cloud/secret/list.d.ts.map +1 -1
  42. package/dist/cmd/cloud/secret/list.js +1 -2
  43. package/dist/cmd/cloud/secret/list.js.map +1 -1
  44. package/dist/cmd/cloud/storage/create.d.ts +2 -0
  45. package/dist/cmd/cloud/storage/create.d.ts.map +1 -0
  46. package/dist/cmd/cloud/storage/create.js +61 -0
  47. package/dist/cmd/cloud/storage/create.js.map +1 -0
  48. package/dist/cmd/cloud/storage/delete.d.ts +2 -0
  49. package/dist/cmd/cloud/storage/delete.d.ts.map +1 -0
  50. package/dist/cmd/cloud/storage/delete.js +167 -0
  51. package/dist/cmd/cloud/storage/delete.js.map +1 -0
  52. package/dist/cmd/cloud/storage/download.d.ts +2 -0
  53. package/dist/cmd/cloud/storage/download.d.ts.map +1 -0
  54. package/dist/cmd/cloud/storage/download.js +131 -0
  55. package/dist/cmd/cloud/storage/download.js.map +1 -0
  56. package/dist/cmd/cloud/storage/get.d.ts +2 -0
  57. package/dist/cmd/cloud/storage/get.d.ts.map +1 -0
  58. package/dist/cmd/cloud/storage/get.js +86 -0
  59. package/dist/cmd/cloud/storage/get.js.map +1 -0
  60. package/dist/cmd/cloud/storage/index.d.ts +2 -0
  61. package/dist/cmd/cloud/storage/index.d.ts.map +1 -0
  62. package/dist/cmd/cloud/storage/index.js +22 -0
  63. package/dist/cmd/cloud/storage/index.js.map +1 -0
  64. package/dist/cmd/cloud/storage/list.d.ts +2 -0
  65. package/dist/cmd/cloud/storage/list.d.ts.map +1 -0
  66. package/dist/cmd/cloud/storage/list.js +170 -0
  67. package/dist/cmd/cloud/storage/list.js.map +1 -0
  68. package/dist/cmd/cloud/storage/upload.d.ts +2 -0
  69. package/dist/cmd/cloud/storage/upload.d.ts.map +1 -0
  70. package/dist/cmd/cloud/storage/upload.js +133 -0
  71. package/dist/cmd/cloud/storage/upload.js.map +1 -0
  72. package/dist/cmd/cloud/storage/utils.d.ts +18 -0
  73. package/dist/cmd/cloud/storage/utils.d.ts.map +1 -0
  74. package/dist/cmd/cloud/storage/utils.js +21 -0
  75. package/dist/cmd/cloud/storage/utils.js.map +1 -0
  76. package/dist/tui.d.ts +2 -1
  77. package/dist/tui.d.ts.map +1 -1
  78. package/dist/tui.js +3 -0
  79. package/dist/tui.js.map +1 -1
  80. package/dist/version.js +1 -1
  81. package/dist/version.js.map +1 -1
  82. package/package.json +3 -3
  83. package/src/cli.ts +15 -1
  84. package/src/cmd/ai/capabilities/show.ts +11 -4
  85. package/src/cmd/cloud/db/create.ts +72 -0
  86. package/src/cmd/cloud/db/delete.ts +118 -0
  87. package/src/cmd/cloud/db/get.ts +75 -0
  88. package/src/cmd/cloud/db/index.ts +14 -0
  89. package/src/cmd/cloud/db/list.ts +83 -0
  90. package/src/cmd/cloud/db/sql.ts +125 -0
  91. package/src/cmd/cloud/env/get.ts +2 -3
  92. package/src/cmd/cloud/env/list.ts +1 -2
  93. package/src/cmd/cloud/index.ts +5 -2
  94. package/src/cmd/cloud/secret/get.ts +2 -3
  95. package/src/cmd/cloud/secret/list.ts +1 -2
  96. package/src/cmd/cloud/storage/create.ts +65 -0
  97. package/src/cmd/cloud/storage/delete.ts +195 -0
  98. package/src/cmd/cloud/storage/download.ts +154 -0
  99. package/src/cmd/cloud/storage/get.ts +97 -0
  100. package/src/cmd/cloud/storage/index.ts +22 -0
  101. package/src/cmd/cloud/storage/list.ts +197 -0
  102. package/src/cmd/cloud/storage/upload.ts +150 -0
  103. package/src/cmd/cloud/storage/utils.ts +26 -0
  104. package/src/tui.ts +4 -0
  105. package/src/version.ts +1 -1
  106. package/dist/cmd/cloud/resource/add.d.ts +0 -2
  107. package/dist/cmd/cloud/resource/add.d.ts.map +0 -1
  108. package/dist/cmd/cloud/resource/add.js +0 -70
  109. package/dist/cmd/cloud/resource/add.js.map +0 -1
  110. package/dist/cmd/cloud/resource/delete.d.ts.map +0 -1
  111. package/dist/cmd/cloud/resource/delete.js +0 -126
  112. package/dist/cmd/cloud/resource/delete.js.map +0 -1
  113. package/dist/cmd/cloud/resource/index.d.ts +0 -2
  114. package/dist/cmd/cloud/resource/index.d.ts.map +0 -1
  115. package/dist/cmd/cloud/resource/index.js +0 -12
  116. package/dist/cmd/cloud/resource/index.js.map +0 -1
  117. package/dist/cmd/cloud/resource/list.d.ts.map +0 -1
  118. package/dist/cmd/cloud/resource/list.js +0 -100
  119. package/dist/cmd/cloud/resource/list.js.map +0 -1
  120. package/src/cmd/cloud/resource/add.ts +0 -75
  121. package/src/cmd/cloud/resource/delete.ts +0 -141
  122. package/src/cmd/cloud/resource/index.ts +0 -12
  123. package/src/cmd/cloud/resource/list.ts +0 -105
  124. /package/dist/cmd/cloud/{resource → db}/delete.d.ts +0 -0
  125. /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