@agentuity/cli 0.0.104 → 0.0.106
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/bin/cli.ts +6 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +93 -21
- package/dist/cli.js.map +1 -1
- package/dist/cmd/ai/prompt/version.d.ts +1 -0
- package/dist/cmd/ai/prompt/version.d.ts.map +1 -1
- package/dist/cmd/ai/prompt/version.js +3 -2
- package/dist/cmd/ai/prompt/version.js.map +1 -1
- package/dist/cmd/build/ast.d.ts.map +1 -1
- package/dist/cmd/build/ast.js +179 -37
- package/dist/cmd/build/ast.js.map +1 -1
- package/dist/cmd/build/entry-generator.d.ts.map +1 -1
- package/dist/cmd/build/entry-generator.js +24 -14
- package/dist/cmd/build/entry-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 +8 -9
- package/dist/cmd/build/vite/registry-generator.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.map +1 -1
- package/dist/cmd/cloud/db/create.d.ts.map +1 -1
- package/dist/cmd/cloud/db/create.js +11 -2
- package/dist/cmd/cloud/db/create.js.map +1 -1
- package/dist/cmd/cloud/db/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/db/delete.js +13 -2
- package/dist/cmd/cloud/db/delete.js.map +1 -1
- package/dist/cmd/cloud/deploy.js +3 -3
- package/dist/cmd/cloud/deploy.js.map +1 -1
- package/dist/cmd/cloud/env/delete.js +1 -1
- package/dist/cmd/cloud/env/delete.js.map +1 -1
- package/dist/cmd/cloud/env/import.js +4 -4
- package/dist/cmd/cloud/env/import.js.map +1 -1
- package/dist/cmd/cloud/env/pull.d.ts.map +1 -1
- package/dist/cmd/cloud/env/pull.js +7 -9
- package/dist/cmd/cloud/env/pull.js.map +1 -1
- package/dist/cmd/cloud/env/push.js +2 -2
- package/dist/cmd/cloud/env/push.js.map +1 -1
- package/dist/cmd/cloud/env/set.js +3 -3
- package/dist/cmd/cloud/env/set.js.map +1 -1
- package/dist/cmd/cloud/index.d.ts.map +1 -1
- package/dist/cmd/cloud/index.js +2 -0
- package/dist/cmd/cloud/index.js.map +1 -1
- package/dist/cmd/cloud/sandbox/cp.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/cp.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/cp.js +334 -0
- package/dist/cmd/cloud/sandbox/cp.js.map +1 -0
- package/dist/cmd/cloud/sandbox/create.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/create.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/create.js +105 -0
- package/dist/cmd/cloud/sandbox/create.js.map +1 -0
- package/dist/cmd/cloud/sandbox/delete.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/delete.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/delete.js +72 -0
- package/dist/cmd/cloud/sandbox/delete.js.map +1 -0
- package/dist/cmd/cloud/sandbox/exec.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/exec.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/exec.js +211 -0
- package/dist/cmd/cloud/sandbox/exec.js.map +1 -0
- package/dist/cmd/cloud/sandbox/execution/get.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/execution/get.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/execution/get.js +96 -0
- package/dist/cmd/cloud/sandbox/execution/get.js.map +1 -0
- package/dist/cmd/cloud/sandbox/execution/index.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/execution/index.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/execution/index.js +24 -0
- package/dist/cmd/cloud/sandbox/execution/index.js.map +1 -0
- package/dist/cmd/cloud/sandbox/execution/list.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/execution/list.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/execution/list.js +100 -0
- package/dist/cmd/cloud/sandbox/execution/list.js.map +1 -0
- package/dist/cmd/cloud/sandbox/get.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/get.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/get.js +95 -0
- package/dist/cmd/cloud/sandbox/get.js.map +1 -0
- package/dist/cmd/cloud/sandbox/index.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/index.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/index.js +45 -0
- package/dist/cmd/cloud/sandbox/index.js.map +1 -0
- package/dist/cmd/cloud/sandbox/list.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/list.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/list.js +120 -0
- package/dist/cmd/cloud/sandbox/list.js.map +1 -0
- package/dist/cmd/cloud/sandbox/run.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/run.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/run.js +152 -0
- package/dist/cmd/cloud/sandbox/run.js.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/create.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/snapshot/create.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/create.js +65 -0
- package/dist/cmd/cloud/sandbox/snapshot/create.js.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/delete.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/snapshot/delete.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/delete.js +66 -0
- package/dist/cmd/cloud/sandbox/snapshot/delete.js.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/get.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/snapshot/get.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/get.js +154 -0
- package/dist/cmd/cloud/sandbox/snapshot/get.js.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/index.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/snapshot/index.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/index.js +27 -0
- package/dist/cmd/cloud/sandbox/snapshot/index.js.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/list.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/snapshot/list.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/list.js +83 -0
- package/dist/cmd/cloud/sandbox/snapshot/list.js.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/tag.d.ts +3 -0
- package/dist/cmd/cloud/sandbox/snapshot/tag.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/snapshot/tag.js +63 -0
- package/dist/cmd/cloud/sandbox/snapshot/tag.js.map +1 -0
- package/dist/cmd/cloud/sandbox/util.d.ts +15 -0
- package/dist/cmd/cloud/sandbox/util.d.ts.map +1 -0
- package/dist/cmd/cloud/sandbox/util.js +50 -0
- package/dist/cmd/cloud/sandbox/util.js.map +1 -0
- package/dist/cmd/cloud/secret/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/secret/delete.js +3 -3
- package/dist/cmd/cloud/secret/delete.js.map +1 -1
- package/dist/cmd/cloud/secret/import.js +6 -6
- package/dist/cmd/cloud/secret/import.js.map +1 -1
- package/dist/cmd/cloud/secret/index.d.ts.map +1 -1
- package/dist/cmd/cloud/secret/index.js +1 -0
- package/dist/cmd/cloud/secret/index.js.map +1 -1
- package/dist/cmd/cloud/secret/pull.d.ts.map +1 -1
- package/dist/cmd/cloud/secret/pull.js +7 -9
- package/dist/cmd/cloud/secret/pull.js.map +1 -1
- package/dist/cmd/cloud/secret/push.js +3 -3
- package/dist/cmd/cloud/secret/push.js.map +1 -1
- package/dist/cmd/cloud/secret/set.d.ts.map +1 -1
- package/dist/cmd/cloud/secret/set.js +3 -3
- package/dist/cmd/cloud/secret/set.js.map +1 -1
- package/dist/cmd/cloud/storage/create.d.ts.map +1 -1
- package/dist/cmd/cloud/storage/create.js +13 -2
- 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 +13 -2
- package/dist/cmd/cloud/storage/delete.js.map +1 -1
- package/dist/cmd/cloud/stream/list.d.ts.map +1 -1
- package/dist/cmd/cloud/stream/list.js +2 -13
- package/dist/cmd/cloud/stream/list.js.map +1 -1
- package/dist/cmd/dev/index.d.ts.map +1 -1
- package/dist/cmd/dev/index.js +14 -1
- package/dist/cmd/dev/index.js.map +1 -1
- package/dist/cmd/profile/create.d.ts.map +1 -1
- package/dist/cmd/profile/create.js +1 -0
- package/dist/cmd/profile/create.js.map +1 -1
- package/dist/cmd/project/template-flow.d.ts.map +1 -1
- package/dist/cmd/project/template-flow.js +27 -10
- package/dist/cmd/project/template-flow.js.map +1 -1
- package/dist/config.d.ts +0 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -0
- package/dist/config.js.map +1 -1
- package/dist/env-util.d.ts +16 -8
- package/dist/env-util.d.ts.map +1 -1
- package/dist/env-util.js +46 -18
- package/dist/env-util.js.map +1 -1
- package/dist/tui.d.ts +20 -3
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +82 -23
- package/dist/tui.js.map +1 -1
- package/dist/types.d.ts +18 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/package.json +4 -4
- package/src/cli.ts +99 -21
- package/src/cmd/ai/prompt/api.md +26 -21
- package/src/cmd/ai/prompt/version.ts +3 -2
- package/src/cmd/build/ast.ts +214 -37
- package/src/cmd/build/entry-generator.ts +24 -14
- package/src/cmd/build/vite/registry-generator.ts +8 -11
- package/src/cmd/build/vite/vite-asset-server.ts +3 -1
- package/src/cmd/cloud/db/create.ts +13 -2
- package/src/cmd/cloud/db/delete.ts +15 -2
- package/src/cmd/cloud/deploy.ts +3 -3
- package/src/cmd/cloud/env/delete.ts +1 -1
- package/src/cmd/cloud/env/import.ts +4 -4
- package/src/cmd/cloud/env/pull.ts +7 -16
- package/src/cmd/cloud/env/push.ts +2 -2
- package/src/cmd/cloud/env/set.ts +3 -3
- package/src/cmd/cloud/index.ts +2 -0
- package/src/cmd/cloud/sandbox/cp.ts +531 -0
- package/src/cmd/cloud/sandbox/create.ts +114 -0
- package/src/cmd/cloud/sandbox/delete.ts +80 -0
- package/src/cmd/cloud/sandbox/exec.ts +254 -0
- package/src/cmd/cloud/sandbox/execution/get.ts +106 -0
- package/src/cmd/cloud/sandbox/execution/index.ts +25 -0
- package/src/cmd/cloud/sandbox/execution/list.ts +111 -0
- package/src/cmd/cloud/sandbox/get.ts +104 -0
- package/src/cmd/cloud/sandbox/index.ts +46 -0
- package/src/cmd/cloud/sandbox/list.ts +129 -0
- package/src/cmd/cloud/sandbox/run.ts +170 -0
- package/src/cmd/cloud/sandbox/snapshot/create.ts +71 -0
- package/src/cmd/cloud/sandbox/snapshot/delete.ts +74 -0
- package/src/cmd/cloud/sandbox/snapshot/get.ts +188 -0
- package/src/cmd/cloud/sandbox/snapshot/index.ts +28 -0
- package/src/cmd/cloud/sandbox/snapshot/list.ts +90 -0
- package/src/cmd/cloud/sandbox/snapshot/tag.ts +70 -0
- package/src/cmd/cloud/sandbox/util.ts +59 -0
- package/src/cmd/cloud/secret/delete.ts +8 -3
- package/src/cmd/cloud/secret/import.ts +6 -6
- package/src/cmd/cloud/secret/index.ts +1 -0
- package/src/cmd/cloud/secret/pull.ts +7 -16
- package/src/cmd/cloud/secret/push.ts +3 -3
- package/src/cmd/cloud/secret/set.ts +8 -3
- package/src/cmd/cloud/storage/create.ts +15 -2
- package/src/cmd/cloud/storage/delete.ts +15 -2
- package/src/cmd/cloud/stream/list.ts +2 -9
- package/src/cmd/dev/index.ts +18 -1
- package/src/cmd/profile/create.ts +1 -0
- package/src/cmd/project/template-flow.ts +29 -13
- package/src/config.ts +3 -0
- package/src/env-util.ts +52 -21
- package/src/tui.ts +131 -39
- package/src/types.ts +18 -16
|
@@ -57,6 +57,7 @@ export async function generateEntryFile(options: GenerateEntryOptions): Promise<
|
|
|
57
57
|
` getAppState,`,
|
|
58
58
|
` getAppConfig,`,
|
|
59
59
|
` register,`,
|
|
60
|
+
` getSpanProcessors,`,
|
|
60
61
|
` createServices,`,
|
|
61
62
|
` runAgentSetups,`,
|
|
62
63
|
` getThreadProvider,`,
|
|
@@ -84,7 +85,7 @@ export async function generateEntryFile(options: GenerateEntryOptions): Promise<
|
|
|
84
85
|
].filter(Boolean);
|
|
85
86
|
|
|
86
87
|
imports.push(`import { type LogLevel } from '@agentuity/core';`);
|
|
87
|
-
imports.push(`import { bootstrapRuntimeEnv } from '@agentuity/runtime';`);
|
|
88
|
+
imports.push(`import { bootstrapRuntimeEnv, patchBunS3ForStorageDev } from '@agentuity/runtime';`);
|
|
88
89
|
|
|
89
90
|
// Generate route mounting code for all discovered routes
|
|
90
91
|
const routeImportsAndMounts: string[] = [];
|
|
@@ -329,13 +330,18 @@ if (isDevelopment()) {
|
|
|
329
330
|
if (typeof Bun !== 'undefined') {
|
|
330
331
|
// Enable process exit protection now that we're starting the server
|
|
331
332
|
enableProcessExitProtection();
|
|
332
|
-
|
|
333
|
+
|
|
333
334
|
const port = parseInt(process.env.PORT || '3500', 10);
|
|
334
335
|
const server = Bun.serve({
|
|
335
|
-
fetch:
|
|
336
|
+
fetch: (req, server) => {
|
|
337
|
+
// Get timeout from config on each request (0 = no timeout)
|
|
338
|
+
server.timeout(req, getAppConfig()?.requestTimeout ?? 0);
|
|
339
|
+
return app.fetch(req, server);
|
|
340
|
+
},
|
|
336
341
|
websocket,
|
|
337
342
|
port,
|
|
338
343
|
hostname: '127.0.0.1',
|
|
344
|
+
development: isDevelopment(),
|
|
339
345
|
});
|
|
340
346
|
|
|
341
347
|
// Make server available globally for health checks
|
|
@@ -423,19 +429,14 @@ if (isDevelopment()) {
|
|
|
423
429
|
await bootstrapRuntimeEnv({ projectDir: import.meta.dir + '/../..' });
|
|
424
430
|
}
|
|
425
431
|
|
|
432
|
+
// Step 0.5: Patch Bun's S3 client for Agentuity storage endpoints
|
|
433
|
+
// Agentuity storage uses virtual-hosted-style URLs (*.storage.dev)
|
|
434
|
+
// This patches s3.file() to automatically set virtualHostedStyle: true
|
|
435
|
+
patchBunS3ForStorageDev();
|
|
436
|
+
|
|
426
437
|
// Step 1: Initialize telemetry and services
|
|
427
438
|
const serverUrl = \`http://127.0.0.1:\${process.env.PORT || '3500'}\`;
|
|
428
|
-
const otel = register({ processors:
|
|
429
|
-
|
|
430
|
-
// Get app state and config for use below
|
|
431
|
-
const appState = getAppState();
|
|
432
|
-
const appConfig = getAppConfig();
|
|
433
|
-
|
|
434
|
-
createServices(otel.logger, appConfig, serverUrl);
|
|
435
|
-
|
|
436
|
-
// Make logger and tracer globally available for user's app.ts
|
|
437
|
-
setGlobalLogger(otel.logger);
|
|
438
|
-
setGlobalTracer(otel.tracer);
|
|
439
|
+
const otel = register({ processors: getSpanProcessors(), logLevel: (process.env.AGENTUITY_LOG_LEVEL || 'info') as LogLevel });
|
|
439
440
|
|
|
440
441
|
// Step 2: Create router and set as global
|
|
441
442
|
const app = createRouter();
|
|
@@ -465,6 +466,15 @@ app.use('/api/*', createAgentMiddleware(''));
|
|
|
465
466
|
await import('../../app.js');
|
|
466
467
|
|
|
467
468
|
// Step 5: Initialize providers
|
|
469
|
+
const appState = getAppState();
|
|
470
|
+
const appConfig = getAppConfig();
|
|
471
|
+
|
|
472
|
+
createServices(otel.logger, appConfig, serverUrl);
|
|
473
|
+
|
|
474
|
+
// Make logger and tracer globally available for user's app.ts
|
|
475
|
+
setGlobalLogger(otel.logger);
|
|
476
|
+
setGlobalTracer(otel.tracer);
|
|
477
|
+
|
|
468
478
|
const threadProvider = getThreadProvider();
|
|
469
479
|
const sessionProvider = getSessionProvider();
|
|
470
480
|
|
|
@@ -289,12 +289,11 @@ function generateRPCRegistryType(
|
|
|
289
289
|
.replace(/_+/g, '_');
|
|
290
290
|
const pascalName = toPascalCase(safeName);
|
|
291
291
|
|
|
292
|
-
// Only reference type names if route has schemas, otherwise use 'never'
|
|
292
|
+
// Only reference type names if route has actual schemas extracted, otherwise use 'never'
|
|
293
|
+
// Note: hasValidator may be true (e.g., zValidator('query', ...)) but no schemas extracted
|
|
294
|
+
// because only 'json' validators extract input schemas
|
|
293
295
|
const hasSchemas =
|
|
294
|
-
route.
|
|
295
|
-
route.inputSchemaVariable ||
|
|
296
|
-
route.outputSchemaVariable ||
|
|
297
|
-
route.agentVariable;
|
|
296
|
+
route.inputSchemaVariable || route.outputSchemaVariable || route.agentVariable;
|
|
298
297
|
|
|
299
298
|
current[terminalMethod] = {
|
|
300
299
|
input: hasSchemas ? `${pascalName}Input` : 'never',
|
|
@@ -725,12 +724,10 @@ export function generateRouteRegistry(
|
|
|
725
724
|
.replace(/_+/g, '_');
|
|
726
725
|
const pascalName = toPascalCase(safeName);
|
|
727
726
|
|
|
728
|
-
if
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
!route.agentVariable
|
|
733
|
-
) {
|
|
727
|
+
// Use 'never' types if no schemas were actually extracted
|
|
728
|
+
// Note: hasValidator may be true (e.g., zValidator('query', ...)) but no schemas extracted
|
|
729
|
+
// because only 'json' validators extract input schemas
|
|
730
|
+
if (!route.inputSchemaVariable && !route.outputSchemaVariable && !route.agentVariable) {
|
|
734
731
|
const streamValue = route.stream === true ? 'true' : 'false';
|
|
735
732
|
return `\t'${routeKey}': {
|
|
736
733
|
\t\tinputSchema: never;
|
|
@@ -59,7 +59,9 @@ export async function startViteAssetServer(
|
|
|
59
59
|
new Promise<never>((_, reject) => {
|
|
60
60
|
const timeoutId = setTimeout(() => {
|
|
61
61
|
reject(
|
|
62
|
-
new Error(
|
|
62
|
+
new Error(
|
|
63
|
+
`Vite asset server failed to start within ${STARTUP_TIMEOUT_MS / 1000}s`
|
|
64
|
+
)
|
|
63
65
|
);
|
|
64
66
|
}, STARTUP_TIMEOUT_MS);
|
|
65
67
|
// Clean up timeout when listen succeeds (via finally in the outer try)
|
|
@@ -6,6 +6,7 @@ import { getCatalystAPIClient } from '../../../config';
|
|
|
6
6
|
import { getCommand } from '../../../command-prefix';
|
|
7
7
|
import { isDryRunMode, outputDryRun } from '../../../explain';
|
|
8
8
|
import { ErrorCode } from '../../../errors';
|
|
9
|
+
import { addResourceEnvVars } from '../../../env-util';
|
|
9
10
|
|
|
10
11
|
export const createSubcommand = defineSubcommand({
|
|
11
12
|
name: 'create',
|
|
@@ -62,12 +63,22 @@ export const createSubcommand = defineSubcommand({
|
|
|
62
63
|
},
|
|
63
64
|
});
|
|
64
65
|
if (created.length > 0) {
|
|
66
|
+
const resource = created[0];
|
|
67
|
+
|
|
68
|
+
// Write environment variables to .env if running inside a project
|
|
69
|
+
if (ctx.projectDir && resource.env && Object.keys(resource.env).length > 0) {
|
|
70
|
+
await addResourceEnvVars(ctx.projectDir, resource.env);
|
|
71
|
+
if (!options.json) {
|
|
72
|
+
tui.info('Environment variables written to .env');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
65
76
|
if (!options.json) {
|
|
66
|
-
tui.success(`Created database: ${tui.bold(
|
|
77
|
+
tui.success(`Created database: ${tui.bold(resource.name)}`);
|
|
67
78
|
}
|
|
68
79
|
return {
|
|
69
80
|
success: true,
|
|
70
|
-
name:
|
|
81
|
+
name: resource.name,
|
|
71
82
|
};
|
|
72
83
|
} else {
|
|
73
84
|
tui.fatal('Failed to create database');
|
|
@@ -7,6 +7,7 @@ import { getCatalystAPIClient } from '../../../config';
|
|
|
7
7
|
import { getCommand } from '../../../command-prefix';
|
|
8
8
|
import { isDryRunMode, outputDryRun } from '../../../explain';
|
|
9
9
|
import { ErrorCode } from '../../../errors';
|
|
10
|
+
import { removeResourceEnvVars } from '../../../env-util';
|
|
10
11
|
|
|
11
12
|
export const deleteSubcommand = createSubcommand({
|
|
12
13
|
name: 'delete',
|
|
@@ -109,10 +110,22 @@ export const deleteSubcommand = createSubcommand({
|
|
|
109
110
|
});
|
|
110
111
|
|
|
111
112
|
if (deleted.length > 0) {
|
|
112
|
-
|
|
113
|
+
const resource = deleted[0];
|
|
114
|
+
|
|
115
|
+
// Remove env vars from .env if running inside a project
|
|
116
|
+
if (ctx.projectDir && resource.env_keys.length > 0) {
|
|
117
|
+
await removeResourceEnvVars(ctx.projectDir, resource.env_keys);
|
|
118
|
+
if (!options.json) {
|
|
119
|
+
tui.info(`Removed ${resource.env_keys.join(', ')} from .env`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (!options.json) {
|
|
124
|
+
tui.success(`Deleted database: ${tui.bold(resource.name)}`);
|
|
125
|
+
}
|
|
113
126
|
return {
|
|
114
127
|
success: true,
|
|
115
|
-
name:
|
|
128
|
+
name: resource.name,
|
|
116
129
|
};
|
|
117
130
|
} else {
|
|
118
131
|
tui.error('Failed to delete database');
|
package/src/cmd/cloud/deploy.ts
CHANGED
|
@@ -34,7 +34,7 @@ import {
|
|
|
34
34
|
getAppBaseURL,
|
|
35
35
|
} from '@agentuity/server';
|
|
36
36
|
import {
|
|
37
|
-
|
|
37
|
+
findExistingEnvFile,
|
|
38
38
|
readEnvFile,
|
|
39
39
|
filterAgentuitySdkKeys,
|
|
40
40
|
splitEnvAndSecrets,
|
|
@@ -176,8 +176,8 @@ export const deploySubcommand = createSubcommand({
|
|
|
176
176
|
label: 'Sync Env & Secrets',
|
|
177
177
|
run: async () => {
|
|
178
178
|
try {
|
|
179
|
-
// Read
|
|
180
|
-
const envFilePath = await
|
|
179
|
+
// Read env file
|
|
180
|
+
const envFilePath = await findExistingEnvFile(projectDir);
|
|
181
181
|
const localEnv = await readEnvFile(envFilePath);
|
|
182
182
|
|
|
183
183
|
// Filter out AGENTUITY_ keys
|
|
@@ -45,7 +45,7 @@ export const deleteSubcommand = createSubcommand({
|
|
|
45
45
|
});
|
|
46
46
|
});
|
|
47
47
|
|
|
48
|
-
// Update local .env file (prefer .env
|
|
48
|
+
// Update local .env file (prefer .env)
|
|
49
49
|
const envFilePath = await findExistingEnvFile(projectDir);
|
|
50
50
|
const currentEnv = await readEnvFile(envFilePath);
|
|
51
51
|
delete currentEnv[args.key];
|
|
@@ -3,7 +3,7 @@ import { createSubcommand } from '../../../types';
|
|
|
3
3
|
import * as tui from '../../../tui';
|
|
4
4
|
import { projectEnvUpdate } from '@agentuity/server';
|
|
5
5
|
import {
|
|
6
|
-
|
|
6
|
+
findExistingEnvFile,
|
|
7
7
|
readEnvFile,
|
|
8
8
|
writeEnvFile,
|
|
9
9
|
filterAgentuitySdkKeys,
|
|
@@ -23,7 +23,7 @@ const EnvImportResponseSchema = z.object({
|
|
|
23
23
|
|
|
24
24
|
export const importSubcommand = createSubcommand({
|
|
25
25
|
name: 'import',
|
|
26
|
-
description: 'Import environment variables from a file to cloud and local .env
|
|
26
|
+
description: 'Import environment variables from a file to cloud and local .env',
|
|
27
27
|
tags: [
|
|
28
28
|
'mutating',
|
|
29
29
|
'creates-resource',
|
|
@@ -131,8 +131,8 @@ export const importSubcommand = createSubcommand({
|
|
|
131
131
|
});
|
|
132
132
|
});
|
|
133
133
|
|
|
134
|
-
// Merge
|
|
135
|
-
const localEnvPath = await
|
|
134
|
+
// Merge environment
|
|
135
|
+
const localEnvPath = await findExistingEnvFile(projectDir);
|
|
136
136
|
const localEnv = await readEnvFile(localEnvPath);
|
|
137
137
|
const mergedEnv = mergeEnvVars(localEnv, filteredEnv);
|
|
138
138
|
|
|
@@ -3,13 +3,7 @@ import { join } from 'node:path';
|
|
|
3
3
|
import { createSubcommand } from '../../../types';
|
|
4
4
|
import * as tui from '../../../tui';
|
|
5
5
|
import { projectGet } from '@agentuity/server';
|
|
6
|
-
import {
|
|
7
|
-
findEnvFile,
|
|
8
|
-
findExistingEnvFile,
|
|
9
|
-
readEnvFile,
|
|
10
|
-
writeEnvFile,
|
|
11
|
-
mergeEnvVars,
|
|
12
|
-
} from '../../../env-util';
|
|
6
|
+
import { findExistingEnvFile, readEnvFile, writeEnvFile, mergeEnvVars } from '../../../env-util';
|
|
13
7
|
import { getCommand } from '../../../command-prefix';
|
|
14
8
|
|
|
15
9
|
const EnvPullResponseSchema = z.object({
|
|
@@ -21,7 +15,7 @@ const EnvPullResponseSchema = z.object({
|
|
|
21
15
|
|
|
22
16
|
export const pullSubcommand = createSubcommand({
|
|
23
17
|
name: 'pull',
|
|
24
|
-
description: 'Pull environment variables from cloud to local .env
|
|
18
|
+
description: 'Pull environment variables from cloud to local .env file',
|
|
25
19
|
tags: ['slow', 'requires-auth', 'requires-project'],
|
|
26
20
|
idempotent: true,
|
|
27
21
|
examples: [
|
|
@@ -45,14 +39,11 @@ export const pullSubcommand = createSubcommand({
|
|
|
45
39
|
return projectGet(apiClient, { id: project.projectId, mask: false });
|
|
46
40
|
});
|
|
47
41
|
|
|
48
|
-
const cloudEnv = projectData.env
|
|
42
|
+
const cloudEnv = { ...projectData.env, ...projectData.secrets }; // env pull with actually do both secrets and env since thats likely what the user would want
|
|
49
43
|
|
|
50
|
-
//
|
|
51
|
-
const
|
|
52
|
-
const localEnv = await readEnvFile(
|
|
53
|
-
|
|
54
|
-
// Target file is always .env.production
|
|
55
|
-
const targetEnvPath = await findEnvFile(projectDir);
|
|
44
|
+
// Target file is always .env
|
|
45
|
+
const targetEnvPath = await findExistingEnvFile(projectDir);
|
|
46
|
+
const localEnv = await readEnvFile(targetEnvPath);
|
|
56
47
|
|
|
57
48
|
// Merge: cloud values override local if force=true, otherwise keep local
|
|
58
49
|
let mergedEnv: Record<string, string>;
|
|
@@ -64,7 +55,7 @@ export const pullSubcommand = createSubcommand({
|
|
|
64
55
|
mergedEnv = mergeEnvVars(cloudEnv, localEnv);
|
|
65
56
|
}
|
|
66
57
|
|
|
67
|
-
// Write to .env
|
|
58
|
+
// Write to .env (skip AGENTUITY_ keys)
|
|
68
59
|
await writeEnvFile(targetEnvPath, mergedEnv, {
|
|
69
60
|
skipKeys: Object.keys(mergedEnv).filter((k) => k.startsWith('AGENTUITY_')),
|
|
70
61
|
});
|
|
@@ -13,7 +13,7 @@ const EnvPushResponseSchema = z.object({
|
|
|
13
13
|
|
|
14
14
|
export const pushSubcommand = createSubcommand({
|
|
15
15
|
name: 'push',
|
|
16
|
-
description: 'Push environment variables from local .env
|
|
16
|
+
description: 'Push environment variables from local .env file to cloud',
|
|
17
17
|
tags: [
|
|
18
18
|
'mutating',
|
|
19
19
|
'updates-resource',
|
|
@@ -33,7 +33,7 @@ export const pushSubcommand = createSubcommand({
|
|
|
33
33
|
async handler(ctx) {
|
|
34
34
|
const { apiClient, project, projectDir } = ctx;
|
|
35
35
|
|
|
36
|
-
// Read local env file (prefer .env
|
|
36
|
+
// Read local env file (prefer .env)
|
|
37
37
|
const envFilePath = await findExistingEnvFile(projectDir);
|
|
38
38
|
const localEnv = await readEnvFile(envFilePath);
|
|
39
39
|
|
package/src/cmd/cloud/env/set.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { createSubcommand } from '../../../types';
|
|
|
3
3
|
import * as tui from '../../../tui';
|
|
4
4
|
import { projectEnvUpdate } from '@agentuity/server';
|
|
5
5
|
import {
|
|
6
|
-
|
|
6
|
+
findExistingEnvFile,
|
|
7
7
|
readEnvFile,
|
|
8
8
|
writeEnvFile,
|
|
9
9
|
filterAgentuitySdkKeys,
|
|
@@ -75,8 +75,8 @@ export const setSubcommand = createSubcommand({
|
|
|
75
75
|
});
|
|
76
76
|
});
|
|
77
77
|
|
|
78
|
-
// Update local .env
|
|
79
|
-
const envFilePath = await
|
|
78
|
+
// Update local .env file
|
|
79
|
+
const envFilePath = await findExistingEnvFile(projectDir);
|
|
80
80
|
const currentEnv = await readEnvFile(envFilePath);
|
|
81
81
|
currentEnv[args.key] = args.value;
|
|
82
82
|
|
package/src/cmd/cloud/index.ts
CHANGED
|
@@ -15,6 +15,7 @@ import secretCommand from './secret';
|
|
|
15
15
|
import apikeyCommand from './apikey';
|
|
16
16
|
import streamCommand from './stream';
|
|
17
17
|
import vectorCommand from './vector';
|
|
18
|
+
import sandboxCommand from './sandbox';
|
|
18
19
|
import { getCommand } from '../../command-prefix';
|
|
19
20
|
|
|
20
21
|
export const command = createCommand({
|
|
@@ -31,6 +32,7 @@ export const command = createCommand({
|
|
|
31
32
|
agentCommand,
|
|
32
33
|
streamCommand,
|
|
33
34
|
vectorCommand,
|
|
35
|
+
sandboxCommand,
|
|
34
36
|
envCommand,
|
|
35
37
|
secretCommand,
|
|
36
38
|
deploySubcommand,
|