@agentuity/cli 1.0.15 → 1.0.17
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/cmd/build/entry-generator.d.ts.map +1 -1
- package/dist/cmd/build/entry-generator.js +5 -2
- package/dist/cmd/build/entry-generator.js.map +1 -1
- package/dist/cmd/build/vite/metadata-generator.d.ts.map +1 -1
- package/dist/cmd/build/vite/metadata-generator.js +1 -37
- package/dist/cmd/build/vite/metadata-generator.js.map +1 -1
- package/dist/cmd/build/vite/registry-generator.d.ts.map +1 -1
- package/dist/cmd/build/vite/registry-generator.js +15 -2
- package/dist/cmd/build/vite/registry-generator.js.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server-config.js +1 -1
- package/dist/cmd/build/vite/vite-asset-server-config.js.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server.d.ts.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server.js +42 -39
- package/dist/cmd/build/vite/vite-asset-server.js.map +1 -1
- package/dist/cmd/cloud/sandbox/get.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/get.js +5 -0
- package/dist/cmd/cloud/sandbox/get.js.map +1 -1
- package/dist/cmd/cloud/sandbox/list.js +1 -1
- package/dist/cmd/cloud/sandbox/list.js.map +1 -1
- package/dist/cmd/cloud/sandbox/snapshot/build.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/snapshot/build.js +32 -1
- package/dist/cmd/cloud/sandbox/snapshot/build.js.map +1 -1
- package/dist/cmd/cloud/sandbox/snapshot/generate.d.ts.map +1 -1
- package/dist/cmd/cloud/sandbox/snapshot/generate.js +7 -0
- package/dist/cmd/cloud/sandbox/snapshot/generate.js.map +1 -1
- package/dist/cmd/cloud/storage/create.d.ts.map +1 -1
- package/dist/cmd/cloud/storage/create.js +58 -26
- package/dist/cmd/cloud/storage/create.js.map +1 -1
- package/dist/cmd/cloud/storage/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/storage/delete.js +108 -16
- package/dist/cmd/cloud/storage/delete.js.map +1 -1
- package/package.json +6 -6
- package/src/cmd/build/entry-generator.ts +6 -2
- package/src/cmd/build/vite/metadata-generator.ts +1 -39
- package/src/cmd/build/vite/registry-generator.ts +17 -2
- package/src/cmd/build/vite/vite-asset-server-config.ts +1 -1
- package/src/cmd/build/vite/vite-asset-server.ts +53 -40
- package/src/cmd/cloud/sandbox/get.ts +5 -0
- package/src/cmd/cloud/sandbox/list.ts +1 -1
- package/src/cmd/cloud/sandbox/snapshot/build.ts +41 -0
- package/src/cmd/cloud/sandbox/snapshot/generate.ts +7 -0
- package/src/cmd/cloud/storage/create.ts +62 -27
- package/src/cmd/cloud/storage/delete.ts +136 -17
|
@@ -13,7 +13,7 @@ import { getResourceInfo, setResourceInfo, deleteResourceRegion } from '../../..
|
|
|
13
13
|
export const deleteSubcommand = createSubcommand({
|
|
14
14
|
name: 'delete',
|
|
15
15
|
aliases: ['rm', 'del', 'remove'],
|
|
16
|
-
description: 'Delete a storage resource or
|
|
16
|
+
description: 'Delete a storage resource, file, or folder',
|
|
17
17
|
tags: ['destructive', 'deletes-resource', 'slow', 'requires-auth', 'requires-deployment'],
|
|
18
18
|
idempotent: false,
|
|
19
19
|
requires: { auth: true },
|
|
@@ -31,6 +31,10 @@ export const deleteSubcommand = createSubcommand({
|
|
|
31
31
|
command: getCommand('cloud storage delete'),
|
|
32
32
|
description: 'Interactive selection to delete a bucket',
|
|
33
33
|
},
|
|
34
|
+
{
|
|
35
|
+
command: getCommand('cloud storage delete my-bucket path/to/folder'),
|
|
36
|
+
description: 'Delete a folder and all its contents from a bucket',
|
|
37
|
+
},
|
|
34
38
|
{
|
|
35
39
|
command: getCommand('--dry-run cloud storage delete my-bucket'),
|
|
36
40
|
description: 'Dry-run: show what would be deleted without making changes',
|
|
@@ -47,6 +51,7 @@ export const deleteSubcommand = createSubcommand({
|
|
|
47
51
|
response: z.object({
|
|
48
52
|
success: z.boolean().describe('Whether deletion succeeded'),
|
|
49
53
|
name: z.string().describe('Deleted bucket or file name'),
|
|
54
|
+
count: z.number().optional().describe('Number of files deleted (for folder deletion)'),
|
|
50
55
|
}),
|
|
51
56
|
},
|
|
52
57
|
async handler(ctx) {
|
|
@@ -97,7 +102,7 @@ export const deleteSubcommand = createSubcommand({
|
|
|
97
102
|
});
|
|
98
103
|
bucketName = response.bucket;
|
|
99
104
|
}
|
|
100
|
-
// If filename is provided, delete the file from the bucket
|
|
105
|
+
// If filename is provided, delete the file or folder from the bucket
|
|
101
106
|
if (args.filename) {
|
|
102
107
|
const bucket = resources.s3.find((s3) => s3.bucket_name === bucketName);
|
|
103
108
|
if (!bucket) {
|
|
@@ -106,20 +111,113 @@ export const deleteSubcommand = createSubcommand({
|
|
|
106
111
|
if (!bucket.access_key || !bucket.secret_key || !bucket.endpoint) {
|
|
107
112
|
tui.fatal(`Storage bucket '${bucketName}' is missing credentials`, ErrorCode.CONFIG_INVALID);
|
|
108
113
|
}
|
|
114
|
+
const s3Client = createS3Client({
|
|
115
|
+
endpoint: bucket.endpoint,
|
|
116
|
+
access_key: bucket.access_key,
|
|
117
|
+
secret_key: bucket.secret_key,
|
|
118
|
+
region: bucket.region,
|
|
119
|
+
});
|
|
120
|
+
const filePath = args.filename;
|
|
121
|
+
// Check if path represents a folder by listing objects under it
|
|
122
|
+
const folderPrefix = filePath.endsWith('/') ? filePath : filePath + '/';
|
|
123
|
+
const folderContents = [];
|
|
124
|
+
let continuationToken;
|
|
125
|
+
let isTruncated = false;
|
|
126
|
+
do {
|
|
127
|
+
const folderResult = await s3Client.list({
|
|
128
|
+
prefix: folderPrefix,
|
|
129
|
+
...(continuationToken ? { continuationToken } : {}),
|
|
130
|
+
});
|
|
131
|
+
if (folderResult.contents) {
|
|
132
|
+
folderContents.push(...folderResult.contents);
|
|
133
|
+
}
|
|
134
|
+
continuationToken = folderResult.nextContinuationToken;
|
|
135
|
+
isTruncated = folderResult.isTruncated ?? false;
|
|
136
|
+
} while (isTruncated);
|
|
137
|
+
if (folderContents.length > 0) {
|
|
138
|
+
// Path is a folder — recursive delete
|
|
139
|
+
const keysToDelete = folderContents.map((obj) => obj.key);
|
|
140
|
+
// Handle dry-run mode
|
|
141
|
+
if (isDryRunMode(options)) {
|
|
142
|
+
outputDryRun(`Would delete ${keysToDelete.length} file${keysToDelete.length === 1 ? '' : 's'} under ${folderPrefix} from bucket ${bucketName}`, options);
|
|
143
|
+
if (!options.json) {
|
|
144
|
+
tui.newline();
|
|
145
|
+
tui.info('[DRY RUN] Folder deletion skipped');
|
|
146
|
+
}
|
|
147
|
+
return { success: false, name: filePath, count: keysToDelete.length };
|
|
148
|
+
}
|
|
149
|
+
// Confirm
|
|
150
|
+
if (!opts.confirm) {
|
|
151
|
+
tui.warning(`You are about to delete ${tui.bold(String(keysToDelete.length))} file${keysToDelete.length === 1 ? '' : 's'} under folder: ${tui.bold(folderPrefix)} from bucket: ${tui.bold(bucketName)}`);
|
|
152
|
+
const confirm = await enquirer.prompt({
|
|
153
|
+
type: 'confirm',
|
|
154
|
+
name: 'confirm',
|
|
155
|
+
message: 'Are you sure you want to delete this folder and all its contents?',
|
|
156
|
+
initial: false,
|
|
157
|
+
});
|
|
158
|
+
if (!confirm.confirm) {
|
|
159
|
+
tui.info('Deletion cancelled');
|
|
160
|
+
return { success: false, name: filePath };
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// Delete all files
|
|
164
|
+
await tui.spinner({
|
|
165
|
+
message: `Deleting ${keysToDelete.length} file${keysToDelete.length === 1 ? '' : 's'} under ${folderPrefix} from ${bucketName}`,
|
|
166
|
+
clearOnSuccess: true,
|
|
167
|
+
callback: async () => {
|
|
168
|
+
const errors = [];
|
|
169
|
+
for (const key of keysToDelete) {
|
|
170
|
+
try {
|
|
171
|
+
await s3Client.delete(key);
|
|
172
|
+
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
errors.push({
|
|
175
|
+
key,
|
|
176
|
+
error: err instanceof Error ? err.message : String(err),
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (errors.length > 0) {
|
|
181
|
+
const failedKeys = errors.map((e) => e.key).join(', ');
|
|
182
|
+
throw new Error(`Failed to delete ${errors.length} file${errors.length === 1 ? '' : 's'}: ${failedKeys}`);
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
});
|
|
186
|
+
// Also delete the exact file if it exists (handles file+folder name conflicts)
|
|
187
|
+
// Skip if filePath was already deleted as part of folder contents (e.g., trailing-slash folder markers)
|
|
188
|
+
if (!keysToDelete.includes(filePath)) {
|
|
189
|
+
const exactFileCheck = await s3Client.list({ prefix: filePath });
|
|
190
|
+
const exactFile = (exactFileCheck.contents || []).find((obj) => obj.key === filePath);
|
|
191
|
+
if (exactFile) {
|
|
192
|
+
await s3Client.delete(filePath);
|
|
193
|
+
keysToDelete.push(filePath);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if (!options.json) {
|
|
197
|
+
tui.success(`Deleted ${tui.bold(String(keysToDelete.length))} file${keysToDelete.length === 1 ? '' : 's'} under ${tui.bold(folderPrefix)} from ${tui.bold(bucketName)}`);
|
|
198
|
+
}
|
|
199
|
+
return { success: true, name: filePath, count: keysToDelete.length };
|
|
200
|
+
}
|
|
201
|
+
// Not a folder — check if exact file exists
|
|
202
|
+
const fileResult = await s3Client.list({ prefix: filePath });
|
|
203
|
+
const exactMatch = (fileResult.contents || []).find((obj) => obj.key === filePath);
|
|
204
|
+
if (!exactMatch) {
|
|
205
|
+
tui.fatal(`No file or folder found at '${filePath}' in bucket '${bucketName}'`, ErrorCode.RESOURCE_NOT_FOUND);
|
|
206
|
+
}
|
|
109
207
|
// Handle dry-run mode
|
|
110
208
|
if (isDryRunMode(options)) {
|
|
111
|
-
outputDryRun(`Would delete file ${
|
|
209
|
+
outputDryRun(`Would delete file ${filePath} from bucket ${bucketName}`, options);
|
|
112
210
|
if (!options.json) {
|
|
113
211
|
tui.newline();
|
|
114
212
|
tui.info('[DRY RUN] File deletion skipped');
|
|
115
213
|
}
|
|
116
214
|
return {
|
|
117
215
|
success: false,
|
|
118
|
-
name:
|
|
216
|
+
name: filePath,
|
|
119
217
|
};
|
|
120
218
|
}
|
|
121
219
|
if (!opts.confirm) {
|
|
122
|
-
tui.warning(`You are about to delete file: ${tui.bold(
|
|
220
|
+
tui.warning(`You are about to delete file: ${tui.bold(filePath)} from bucket: ${tui.bold(bucketName)}`);
|
|
123
221
|
const confirm = await enquirer.prompt({
|
|
124
222
|
type: 'confirm',
|
|
125
223
|
name: 'confirm',
|
|
@@ -128,28 +226,22 @@ export const deleteSubcommand = createSubcommand({
|
|
|
128
226
|
});
|
|
129
227
|
if (!confirm.confirm) {
|
|
130
228
|
tui.info('Deletion cancelled');
|
|
131
|
-
return { success: false, name:
|
|
229
|
+
return { success: false, name: filePath };
|
|
132
230
|
}
|
|
133
231
|
}
|
|
134
|
-
const s3Client = createS3Client({
|
|
135
|
-
endpoint: bucket.endpoint,
|
|
136
|
-
access_key: bucket.access_key,
|
|
137
|
-
secret_key: bucket.secret_key,
|
|
138
|
-
region: bucket.region,
|
|
139
|
-
});
|
|
140
232
|
await tui.spinner({
|
|
141
|
-
message: `Deleting ${
|
|
233
|
+
message: `Deleting ${filePath} from ${bucketName}`,
|
|
142
234
|
clearOnSuccess: true,
|
|
143
235
|
callback: async () => {
|
|
144
|
-
await s3Client.delete(
|
|
236
|
+
await s3Client.delete(filePath);
|
|
145
237
|
},
|
|
146
238
|
});
|
|
147
239
|
if (!options.json) {
|
|
148
|
-
tui.success(`Deleted file: ${tui.bold(
|
|
240
|
+
tui.success(`Deleted file: ${tui.bold(filePath)} from ${tui.bold(bucketName)}`);
|
|
149
241
|
}
|
|
150
242
|
return {
|
|
151
243
|
success: true,
|
|
152
|
-
name:
|
|
244
|
+
name: filePath,
|
|
153
245
|
};
|
|
154
246
|
}
|
|
155
247
|
// Otherwise, delete the bucket
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/storage/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAExF,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;IAChD,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;IAChC,WAAW,EAAE,mCAAmC;IAChD,IAAI,EAAE,CAAC,aAAa,EAAE,kBAAkB,EAAE,MAAM,EAAE,eAAe,EAAE,qBAAqB,CAAC;IACzF,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACxB,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;IACvB,QAAQ,EAAE;QACT;YACC,OAAO,EAAE,UAAU,CAAC,gCAAgC,CAAC;YACrD,WAAW,EAAE,yBAAyB;SACtC;QACD;YACC,OAAO,EAAE,UAAU,CAAC,qCAAqC,CAAC;YAC1D,WAAW,EAAE,6BAA6B;SAC1C;QACD;YACC,OAAO,EAAE,UAAU,CAAC,sBAAsB,CAAC;YAC3C,WAAW,EAAE,0CAA0C;SACvD;QACD;YACC,OAAO,EAAE,UAAU,CAAC,0CAA0C,CAAC;YAC/D,WAAW,EAAE,4DAA4D;SACzE;KACD;IACD,MAAM,EAAE;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YACnD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;SAC3E,CAAC;QACF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;YACjB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;SACrE,CAAC;QACF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YAC3D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;SACxD,CAAC;KACF;IAED,KAAK,CAAC,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QAE1D,MAAM,WAAW,GAAG,MAAM,EAAE,IAAI,IAAI,YAAY,CAAC;QACjD,MAAM,cAAc,GAAG,MAAM,0BAA0B,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAEnF,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;QAE3B,qDAAqD;QACrD,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QACtB,IAAI,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;YAC5E,KAAK,GAAG,UAAU,EAAE,KAAK,CAAC;QAC3B,CAAC;QAED,4DAA4D;QAC5D,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,GAAG,CAAC,KAAK,CACR,kGAAkG,EAClG,SAAS,CAAC,gBAAgB,CAC1B,CAAC;QACH,CAAC;QAED,iEAAiE;QACjE,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,GAAG,CAAC,KAAK,CACR,sCAAsC,UAAU,kEAAkE,EAClH,SAAS,CAAC,gBAAgB,CAC1B,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC;YACnC,OAAO,EAAE,wBAAwB,KAAK,EAAE;YACxC,cAAc,EAAE,IAAI;YACpB,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACpB,OAAO,gBAAgB,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAChE,CAAC;SACD,CAAC,CAAC;QAEH,4BAA4B;QAC5B,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;YAC/B,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC;gBACrB,MAAM,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACtF,CAAC;QACF,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,IAAI,SAAS,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,GAAG,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;gBAC/C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YACrC,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAqB;gBAC1D,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,kCAAkC;gBAC3C,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBAClC,IAAI,EAAE,EAAE,CAAC,WAAW;oBACpB,OAAO,EAAE,EAAE,CAAC,WAAW;iBACvB,CAAC,CAAC;aACH,CAAC,CAAC;YAEH,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC9B,CAAC;QAED,2DAA2D;QAC3D,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC;YAExE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACb,GAAG,CAAC,KAAK,CAAC,mBAAmB,UAAU,aAAa,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;YACrF,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClE,GAAG,CAAC,KAAK,CACR,mBAAmB,UAAU,0BAA0B,EACvD,SAAS,CAAC,cAAc,CACxB,CAAC;YACH,CAAC;YAED,sBAAsB;YACtB,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,YAAY,CAAC,qBAAqB,IAAI,CAAC,QAAQ,gBAAgB,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;gBACtF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBACnB,GAAG,CAAC,OAAO,EAAE,CAAC;oBACd,GAAG,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;gBAC7C,CAAC;gBACD,OAAO;oBACN,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,IAAI,CAAC,QAAQ;iBACnB,CAAC;YACH,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACnB,GAAG,CAAC,OAAO,CACV,iCAAiC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAC/F,CAAC;gBAEF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAuB;oBAC3D,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,4CAA4C;oBACrD,OAAO,EAAE,KAAK;iBACd,CAAC,CAAC;gBAEH,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBACtB,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;oBAC/B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChD,CAAC;YACF,CAAC;YAED,MAAM,QAAQ,GAAG,cAAc,CAAC;gBAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;aACrB,CAAC,CAAC;YAEH,MAAM,GAAG,CAAC,OAAO,CAAC;gBACjB,OAAO,EAAE,YAAY,IAAI,CAAC,QAAQ,SAAS,UAAU,EAAE;gBACvD,cAAc,EAAE,IAAI;gBACpB,QAAQ,EAAE,KAAK,IAAI,EAAE;oBACpB,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAS,CAAC,CAAC;gBACvC,CAAC;aACD,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnB,GAAG,CAAC,OAAO,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACtF,CAAC;YAED,OAAO;gBACN,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,IAAI,CAAC,QAAQ;aACnB,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,oCAAoC;QACpC,MAAM,cAAc,GAAG,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC;QAChF,IAAI,CAAC,cAAc,EAAE,CAAC;YACrB,GAAG,CAAC,KAAK,CAAC,mBAAmB,UAAU,aAAa,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;YAClC,GAAG,CAAC,KAAK,CACR,mBAAmB,UAAU,iCAAiC,EAC9D,SAAS,CAAC,kBAAkB,CAC5B,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,cAAc,CAAC,YAAY,CAAC;QAE3C,sBAAsB;QACtB,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,YAAY,CAAC,gCAAgC,UAAU,aAAa,MAAM,GAAG,EAAE,OAAO,CAAC,CAAC;YACxF,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnB,GAAG,CAAC,OAAO,EAAE,CAAC;gBACd,GAAG,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;YACvD,CAAC;YACD,OAAO;gBACN,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,UAAU;aAChB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACnB,GAAG,CAAC,OAAO,CAAC,2CAA2C,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAE/E,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAuB;gBAC3D,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,sDAAsD;gBAC/D,OAAO,EAAE,KAAK;aACd,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACtB,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBAC/B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YAC7C,CAAC;QACF,CAAC;QAED,+CAA+C;QAC/C,MAAM,cAAc,GAAG,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC;YACjC,OAAO,EAAE,2BAA2B,UAAU,EAAE;YAChD,cAAc,EAAE,IAAI;YACpB,QAAQ,EAAE,KAAK,IAAI,EAAE;gBACpB,OAAO,eAAe,CAAC,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE;oBACrD,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE;iBAChC,CAAC,CAAC;YACJ,CAAC;SACD,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,QAAQ,EAAE,CAAC;YACd,uCAAuC;YACvC,MAAM,oBAAoB,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEjE,wDAAwD;YACxD,IAAI,GAAG,CAAC,UAAU,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpD,MAAM,qBAAqB,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC/D,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;oBACnB,GAAG,CAAC,IAAI,CAAC,WAAW,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC/D,CAAC;YACF,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnB,GAAG,CAAC,OAAO,CAAC,2BAA2B,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnE,CAAC;YACD,OAAO;gBACN,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,QAAQ,CAAC,IAAI;aACnB,CAAC;QACH,CAAC;aAAM,CAAC;YACP,GAAG,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YAC7C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC7C,CAAC;IACF,CAAC;CACD,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/storage/delete.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentuity/cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.17",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"author": "Agentuity employees and contributors",
|
|
6
6
|
"type": "module",
|
|
@@ -41,9 +41,9 @@
|
|
|
41
41
|
"prepublishOnly": "bun run clean && bun run build"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@agentuity/auth": "1.0.
|
|
45
|
-
"@agentuity/core": "1.0.
|
|
46
|
-
"@agentuity/server": "1.0.
|
|
44
|
+
"@agentuity/auth": "1.0.17",
|
|
45
|
+
"@agentuity/core": "1.0.17",
|
|
46
|
+
"@agentuity/server": "1.0.17",
|
|
47
47
|
"@datasert/cronjs-parser": "^1.4.0",
|
|
48
48
|
"@vitejs/plugin-react": "^5.1.2",
|
|
49
49
|
"acorn-loose": "^8.5.2",
|
|
@@ -60,10 +60,10 @@
|
|
|
60
60
|
"typescript": "^5.9.0",
|
|
61
61
|
"vite": "^7.2.7",
|
|
62
62
|
"zod": "^4.3.5",
|
|
63
|
-
"@agentuity/frontend": "1.0.
|
|
63
|
+
"@agentuity/frontend": "1.0.17"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
|
-
"@agentuity/test-utils": "1.0.
|
|
66
|
+
"@agentuity/test-utils": "1.0.17",
|
|
67
67
|
"@types/adm-zip": "^0.5.7",
|
|
68
68
|
"@types/bun": "latest",
|
|
69
69
|
"@types/tar-fs": "^2.0.4",
|
|
@@ -87,6 +87,10 @@ export async function generateEntryFile(options: GenerateEntryOptions): Promise<
|
|
|
87
87
|
` runShutdown,`,
|
|
88
88
|
];
|
|
89
89
|
|
|
90
|
+
if (hasWebFrontend) {
|
|
91
|
+
runtimeImports.push(` mimeTypes,`);
|
|
92
|
+
}
|
|
93
|
+
|
|
90
94
|
const imports = [
|
|
91
95
|
`import { `,
|
|
92
96
|
...runtimeImports,
|
|
@@ -408,10 +412,10 @@ ${
|
|
|
408
412
|
app.get('/', prodHtmlHandler);
|
|
409
413
|
|
|
410
414
|
// Serve static assets from /assets/* (Vite bundled output)
|
|
411
|
-
app.use('/assets/*', serveStatic({ root: import.meta.dir + '/client' }));
|
|
415
|
+
app.use('/assets/*', serveStatic({ root: import.meta.dir + '/client', mimes: mimeTypes }));
|
|
412
416
|
|
|
413
417
|
// Serve static public assets (favicon.ico, robots.txt, etc.)
|
|
414
|
-
app.use('/*', serveStatic({ root: import.meta.dir + '/client', rewriteRequestPath: (path) => path }));
|
|
418
|
+
app.use('/*', serveStatic({ root: import.meta.dir + '/client', rewriteRequestPath: (path) => path, mimes: mimeTypes }));
|
|
415
419
|
|
|
416
420
|
// 404 for unmatched API/system routes (IMPORTANT: comes before SPA fallback)
|
|
417
421
|
app.all('/_agentuity/*', (c: Context) => c.notFound());
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import { join } from 'node:path';
|
|
8
8
|
import { writeFileSync, mkdirSync, existsSync, readFileSync, statSync, readdirSync } from 'node:fs';
|
|
9
|
-
import { type BuildMetadata, DeploymentConfig } from '@agentuity/server';
|
|
9
|
+
import { type BuildMetadata, DeploymentConfig, getContentType } from '@agentuity/server';
|
|
10
10
|
import type { z } from 'zod';
|
|
11
11
|
import type { AgentMetadata } from './agent-discovery';
|
|
12
12
|
import type { RouteMetadata } from './route-discovery';
|
|
@@ -31,44 +31,6 @@ interface AssetInfo {
|
|
|
31
31
|
contentEncoding?: string;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
function getContentType(filename: string): string {
|
|
35
|
-
const ext = filename.split('.').pop()?.toLowerCase();
|
|
36
|
-
switch (ext) {
|
|
37
|
-
case 'js':
|
|
38
|
-
case 'mjs':
|
|
39
|
-
return 'application/javascript';
|
|
40
|
-
case 'css':
|
|
41
|
-
return 'text/css';
|
|
42
|
-
case 'html':
|
|
43
|
-
return 'text/html';
|
|
44
|
-
case 'json':
|
|
45
|
-
return 'application/json';
|
|
46
|
-
case 'png':
|
|
47
|
-
return 'image/png';
|
|
48
|
-
case 'jpg':
|
|
49
|
-
case 'jpeg':
|
|
50
|
-
return 'image/jpeg';
|
|
51
|
-
case 'gif':
|
|
52
|
-
return 'image/gif';
|
|
53
|
-
case 'svg':
|
|
54
|
-
return 'image/svg+xml';
|
|
55
|
-
case 'webp':
|
|
56
|
-
return 'image/webp';
|
|
57
|
-
case 'ico':
|
|
58
|
-
return 'image/x-icon';
|
|
59
|
-
case 'woff':
|
|
60
|
-
return 'font/woff';
|
|
61
|
-
case 'woff2':
|
|
62
|
-
return 'font/woff2';
|
|
63
|
-
case 'ttf':
|
|
64
|
-
return 'font/ttf';
|
|
65
|
-
case 'eot':
|
|
66
|
-
return 'application/vnd.ms-fontobject';
|
|
67
|
-
default:
|
|
68
|
-
return 'application/octet-stream';
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
34
|
/**
|
|
73
35
|
* Determine if an asset should be compressed with gzip.
|
|
74
36
|
* The result is included in asset metadata so the API can generate
|
|
@@ -70,6 +70,21 @@ function sanitizePathSegment(segment: string): string {
|
|
|
70
70
|
return toCamelCase(segment.replace(ROUTE_PARAM_CHARS, ''));
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
+
/**
|
|
74
|
+
* Valid unquoted TypeScript/JavaScript property name pattern.
|
|
75
|
+
* A property name can be unquoted if it starts with a letter, underscore, or dollar sign,
|
|
76
|
+
* and contains only letters, digits, underscores, or dollar signs.
|
|
77
|
+
*/
|
|
78
|
+
const VALID_UNQUOTED_PROPERTY = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Quote a property name for TypeScript object type definitions if it contains
|
|
82
|
+
* characters that require quoting (e.g., dots, hyphens, spaces).
|
|
83
|
+
*/
|
|
84
|
+
function quotePropertyName(name: string): string {
|
|
85
|
+
return VALID_UNQUOTED_PROPERTY.test(name) ? name : JSON.stringify(name);
|
|
86
|
+
}
|
|
87
|
+
|
|
73
88
|
/**
|
|
74
89
|
* Generate TypeScript type for path parameters.
|
|
75
90
|
* Returns 'never' if no path params, or '{ param1: string; param2: string }' format.
|
|
@@ -479,11 +494,11 @@ function generateRPCRegistryType(
|
|
|
479
494
|
const pathParamsType = generatePathParamsType(routeInfo.pathParams);
|
|
480
495
|
const pathParamsTupleType = generatePathParamsTupleType(routeInfo.pathParams);
|
|
481
496
|
lines.push(
|
|
482
|
-
`${indent}${key}: { input: ${value.input}; output: ${value.output}; type: ${value.type}; params: ${pathParamsType}; paramsTuple: ${pathParamsTupleType} };`
|
|
497
|
+
`${indent}${quotePropertyName(key)}: { input: ${value.input}; output: ${value.output}; type: ${value.type}; params: ${pathParamsType}; paramsTuple: ${pathParamsTupleType} };`
|
|
483
498
|
);
|
|
484
499
|
} else {
|
|
485
500
|
// Nested node
|
|
486
|
-
lines.push(`${indent}${key}: {`);
|
|
501
|
+
lines.push(`${indent}${quotePropertyName(key)}: {`);
|
|
487
502
|
lines.push(treeToTypeString(value as NestedNode, indent + '\t'));
|
|
488
503
|
lines.push(`${indent}};`);
|
|
489
504
|
}
|
|
@@ -92,7 +92,7 @@ export async function generateAssetServerConfig(
|
|
|
92
92
|
server: {
|
|
93
93
|
// Use the port we selected
|
|
94
94
|
port,
|
|
95
|
-
strictPort:
|
|
95
|
+
strictPort: true, // Port is pre-verified as available by findAvailablePort()
|
|
96
96
|
host: '127.0.0.1',
|
|
97
97
|
|
|
98
98
|
// CORS headers to allow Bun server on port 3500 to proxy requests
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import { join } from 'node:path';
|
|
9
9
|
import { createRequire } from 'node:module';
|
|
10
|
+
import { createServer as createNetServer } from 'node:net';
|
|
10
11
|
import type { ViteDevServer } from 'vite';
|
|
11
12
|
import type { Logger } from '../../../types';
|
|
12
13
|
import { generateAssetServerConfig } from './vite-asset-server-config';
|
|
@@ -22,6 +23,44 @@ export interface StartViteAssetServerOptions {
|
|
|
22
23
|
workbenchPath?: string;
|
|
23
24
|
}
|
|
24
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Check if a specific port is available on the given host.
|
|
28
|
+
*/
|
|
29
|
+
function isPortAvailable(port: number, host: string): Promise<boolean> {
|
|
30
|
+
return new Promise((resolve) => {
|
|
31
|
+
const server = createNetServer();
|
|
32
|
+
server.once('error', () => {
|
|
33
|
+
resolve(false);
|
|
34
|
+
});
|
|
35
|
+
server.listen(port, host, () => {
|
|
36
|
+
server.close(() => {
|
|
37
|
+
resolve(true);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Find an available port starting from the preferred port.
|
|
45
|
+
* Tries incrementing ports up to maxAttempts times.
|
|
46
|
+
*/
|
|
47
|
+
async function findAvailablePort(
|
|
48
|
+
preferredPort: number,
|
|
49
|
+
host: string = '127.0.0.1',
|
|
50
|
+
maxAttempts: number = 20
|
|
51
|
+
): Promise<number> {
|
|
52
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
53
|
+
const port = preferredPort + attempt;
|
|
54
|
+
const available = await isPortAvailable(port, host);
|
|
55
|
+
if (available) {
|
|
56
|
+
return port;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
throw new Error(
|
|
60
|
+
`Could not find an available port after ${maxAttempts} attempts starting from ${preferredPort}`
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
|
|
25
64
|
/**
|
|
26
65
|
* Start Vite asset server on a dynamically-chosen port
|
|
27
66
|
* Returns the server instance and the actual port number
|
|
@@ -33,16 +72,23 @@ export async function startViteAssetServer(
|
|
|
33
72
|
|
|
34
73
|
logger.debug('Starting Vite asset server (HMR only)...');
|
|
35
74
|
|
|
36
|
-
//
|
|
37
|
-
//
|
|
75
|
+
// Find an available port before starting Vite
|
|
76
|
+
// This avoids relying on Vite's strictPort:false fallback which can fail
|
|
38
77
|
const preferredPort = 5173;
|
|
78
|
+
const availablePort = await findAvailablePort(preferredPort, '127.0.0.1');
|
|
39
79
|
|
|
40
|
-
|
|
80
|
+
if (availablePort !== preferredPort) {
|
|
81
|
+
logger.info(
|
|
82
|
+
`Port ${preferredPort} is in use, using port ${availablePort} for Vite asset server`
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Generate minimal config with the available port
|
|
41
87
|
const config = await generateAssetServerConfig({
|
|
42
88
|
rootDir,
|
|
43
89
|
logger,
|
|
44
90
|
workbenchPath,
|
|
45
|
-
port:
|
|
91
|
+
port: availablePort,
|
|
46
92
|
});
|
|
47
93
|
|
|
48
94
|
// Dynamically import vite from the project's node_modules
|
|
@@ -54,7 +100,6 @@ export async function startViteAssetServer(
|
|
|
54
100
|
const server = await createServer(config);
|
|
55
101
|
|
|
56
102
|
// Start listening with timeout to prevent hangs
|
|
57
|
-
// Vite will choose alternate port if preferred is taken
|
|
58
103
|
const STARTUP_TIMEOUT_MS = 30000; // 30 seconds
|
|
59
104
|
|
|
60
105
|
try {
|
|
@@ -82,42 +127,10 @@ export async function startViteAssetServer(
|
|
|
82
127
|
throw error;
|
|
83
128
|
}
|
|
84
129
|
|
|
85
|
-
//
|
|
86
|
-
const
|
|
87
|
-
const httpServer = server.httpServer;
|
|
88
|
-
if (httpServer) {
|
|
89
|
-
const address = httpServer.address();
|
|
90
|
-
if (address && typeof address === 'object' && 'port' in address) {
|
|
91
|
-
return address.port;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
return null;
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
// Get the actual port Vite is using from the httpServer
|
|
98
|
-
// server.config.server.port is the requested port, not the actual one
|
|
99
|
-
let actualPort = preferredPort;
|
|
100
|
-
|
|
101
|
-
// The resolved URL contains the actual port being used
|
|
102
|
-
const resolvedUrls = server.resolvedUrls;
|
|
103
|
-
if (resolvedUrls?.local && resolvedUrls.local.length > 0) {
|
|
104
|
-
try {
|
|
105
|
-
const url = new URL(resolvedUrls.local[0]);
|
|
106
|
-
actualPort = parseInt(url.port, 10) || preferredPort;
|
|
107
|
-
} catch {
|
|
108
|
-
actualPort = getPortFromHttpServer() ?? preferredPort;
|
|
109
|
-
}
|
|
110
|
-
} else {
|
|
111
|
-
actualPort = getPortFromHttpServer() ?? preferredPort;
|
|
112
|
-
}
|
|
130
|
+
// Port was pre-verified and strictPort:true ensures Vite uses exactly this port
|
|
131
|
+
const actualPort = availablePort;
|
|
113
132
|
|
|
114
|
-
|
|
115
|
-
logger.info(`Vite asset server running on port ${actualPort}`);
|
|
116
|
-
} else {
|
|
117
|
-
logger.warn(
|
|
118
|
-
`Vite asset server running on port ${actualPort} (preferred port ${preferredPort} was in use)`
|
|
119
|
-
);
|
|
120
|
-
}
|
|
133
|
+
logger.info(`Vite asset server running on port ${actualPort}`);
|
|
121
134
|
logger.debug(`Asset server will handle: HMR, React transformation, source maps`);
|
|
122
135
|
logger.debug(
|
|
123
136
|
`HMR WebSocket configured at /__vite_hmr (proxied through Bun server for tunnel support)`
|
|
@@ -40,6 +40,7 @@ const SandboxGetResponseSchema = z.object({
|
|
|
40
40
|
stdoutStreamUrl: z.string().optional().describe('URL to stdout output stream'),
|
|
41
41
|
stderrStreamUrl: z.string().optional().describe('URL to stderr output stream'),
|
|
42
42
|
dependencies: z.array(z.string()).optional().describe('Apt packages installed'),
|
|
43
|
+
packages: z.array(z.string()).optional().describe('npm/bun packages installed globally'),
|
|
43
44
|
metadata: z.record(z.string(), z.unknown()).optional().describe('User-defined metadata'),
|
|
44
45
|
resources: SandboxResourcesSchema.optional().describe('Resource limits'),
|
|
45
46
|
url: z.string().optional().describe('Public URL for the sandbox (if network port configured)'),
|
|
@@ -138,6 +139,9 @@ export const getSubcommand = createCommand({
|
|
|
138
139
|
if (result.dependencies && result.dependencies.length > 0) {
|
|
139
140
|
tableData['Dependencies'] = result.dependencies.join(', ');
|
|
140
141
|
}
|
|
142
|
+
if (result.packages && result.packages.length > 0) {
|
|
143
|
+
tableData['Packages'] = result.packages.join(', ');
|
|
144
|
+
}
|
|
141
145
|
if (resourceParts.length > 0) {
|
|
142
146
|
tableData['Resources'] = resourceParts.join(', ');
|
|
143
147
|
}
|
|
@@ -164,6 +168,7 @@ export const getSubcommand = createCommand({
|
|
|
164
168
|
stdoutStreamUrl: result.stdoutStreamUrl,
|
|
165
169
|
stderrStreamUrl: result.stderrStreamUrl,
|
|
166
170
|
dependencies: result.dependencies,
|
|
171
|
+
packages: result.packages,
|
|
167
172
|
metadata: result.metadata,
|
|
168
173
|
resources: result.resources,
|
|
169
174
|
url: result.url,
|
|
@@ -69,7 +69,7 @@ export const listSubcommand = createCommand({
|
|
|
69
69
|
name: z.string().optional().describe('Filter by sandbox name'),
|
|
70
70
|
mode: z.enum(['oneshot', 'interactive']).optional().describe('Filter by sandbox mode'),
|
|
71
71
|
status: z
|
|
72
|
-
.enum(['creating', 'idle', 'running', 'terminated', 'failed'])
|
|
72
|
+
.enum(['creating', 'idle', 'running', 'paused', 'stopping', 'suspended', 'terminated', 'failed'])
|
|
73
73
|
.optional()
|
|
74
74
|
.describe('Filter by status'),
|
|
75
75
|
projectId: z.string().optional().describe('Filter by project ID'),
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
snapshotBuildFinalize,
|
|
13
13
|
snapshotUpload,
|
|
14
14
|
SnapshotBuildFileSchema,
|
|
15
|
+
NPM_PACKAGE_NAME_PATTERN,
|
|
15
16
|
} from '@agentuity/server';
|
|
16
17
|
import type { SnapshotFileInfo, SnapshotBuildGitInfo } from '@agentuity/server';
|
|
17
18
|
import { getCatalystAPIClient } from '../../../../config';
|
|
@@ -297,6 +298,7 @@ async function generateContentHash(params: {
|
|
|
297
298
|
runtime: string;
|
|
298
299
|
description?: string;
|
|
299
300
|
dependencies?: string[];
|
|
301
|
+
packages?: string[];
|
|
300
302
|
files: SnapshotFileInfo[];
|
|
301
303
|
fileHashes: Map<string, string>;
|
|
302
304
|
env?: Record<string, string>;
|
|
@@ -315,6 +317,11 @@ async function generateContentHash(params: {
|
|
|
315
317
|
hash.update(`dependencies:${sortedDeps.join(',')}\n`);
|
|
316
318
|
}
|
|
317
319
|
|
|
320
|
+
if (params.packages && params.packages.length > 0) {
|
|
321
|
+
const sortedPkgs = [...params.packages].sort();
|
|
322
|
+
hash.update(`packages:${sortedPkgs.join(',')}\n`);
|
|
323
|
+
}
|
|
324
|
+
|
|
318
325
|
if (params.files.length > 0) {
|
|
319
326
|
const sortedFiles = [...params.files].sort((a, b) => a.path.localeCompare(b.path));
|
|
320
327
|
for (const file of sortedFiles) {
|
|
@@ -575,6 +582,22 @@ export const buildSubcommand = createCommand({
|
|
|
575
582
|
}
|
|
576
583
|
}
|
|
577
584
|
|
|
585
|
+
if (buildConfig.packages && buildConfig.packages.length > 0) {
|
|
586
|
+
// Validate package specifiers using shared pattern (also enforced at schema level)
|
|
587
|
+
const invalidPackages = buildConfig.packages.filter(
|
|
588
|
+
(pkg) => !NPM_PACKAGE_NAME_PATTERN.test(pkg)
|
|
589
|
+
);
|
|
590
|
+
if (invalidPackages.length > 0) {
|
|
591
|
+
tui.error('Invalid package specifiers:');
|
|
592
|
+
for (const pkg of invalidPackages) {
|
|
593
|
+
tui.bullet(
|
|
594
|
+
`${pkg}: must not contain whitespace, semicolons, backticks, pipes, or dollar signs`
|
|
595
|
+
);
|
|
596
|
+
}
|
|
597
|
+
process.exit(1);
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
|
|
578
601
|
let files = new Map<string, FileEntry>();
|
|
579
602
|
if (buildConfig.files && buildConfig.files.length > 0) {
|
|
580
603
|
files = await resolveFileGlobs(directory, buildConfig.files);
|
|
@@ -613,6 +636,7 @@ export const buildSubcommand = createCommand({
|
|
|
613
636
|
runtime: buildConfig.runtime,
|
|
614
637
|
description: finalDescription,
|
|
615
638
|
dependencies: buildConfig.dependencies,
|
|
639
|
+
packages: buildConfig.packages,
|
|
616
640
|
files: fileList,
|
|
617
641
|
fileHashes,
|
|
618
642
|
env: finalEnv,
|
|
@@ -647,6 +671,14 @@ export const buildSubcommand = createCommand({
|
|
|
647
671
|
}
|
|
648
672
|
}
|
|
649
673
|
|
|
674
|
+
if (buildConfig.packages && buildConfig.packages.length > 0) {
|
|
675
|
+
console.log('');
|
|
676
|
+
tui.info('Packages (npm/bun):');
|
|
677
|
+
for (const pkg of buildConfig.packages) {
|
|
678
|
+
console.log(` ${tui.muted('•')} ${pkg}`);
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
|
|
650
682
|
if (finalEnv && Object.keys(finalEnv).length > 0) {
|
|
651
683
|
console.log('');
|
|
652
684
|
tui.info('Environment:');
|
|
@@ -914,6 +946,7 @@ export const buildSubcommand = createCommand({
|
|
|
914
946
|
fileCount: fileList.length,
|
|
915
947
|
files: fileList,
|
|
916
948
|
dependencies: buildConfig.dependencies,
|
|
949
|
+
packages: buildConfig.packages,
|
|
917
950
|
env: finalEnv,
|
|
918
951
|
metadata: finalMetadata,
|
|
919
952
|
orgId,
|
|
@@ -949,6 +982,14 @@ export const buildSubcommand = createCommand({
|
|
|
949
982
|
}
|
|
950
983
|
}
|
|
951
984
|
|
|
985
|
+
if (buildConfig.packages && buildConfig.packages.length > 0) {
|
|
986
|
+
console.log('');
|
|
987
|
+
tui.info('Packages (npm/bun):');
|
|
988
|
+
for (const pkg of buildConfig.packages) {
|
|
989
|
+
console.log(` ${tui.muted('•')} ${pkg}`);
|
|
990
|
+
}
|
|
991
|
+
}
|
|
992
|
+
|
|
952
993
|
if (finalEnv && Object.keys(finalEnv).length > 0) {
|
|
953
994
|
console.log('');
|
|
954
995
|
tui.info('Environment:');
|