@agentuity/cli 0.1.14 → 0.1.16
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/auth.d.ts.map +1 -1
- package/dist/auth.js +7 -6
- package/dist/auth.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +69 -11
- package/dist/cli.js.map +1 -1
- package/dist/cmd/ai/index.d.ts.map +1 -1
- package/dist/cmd/ai/index.js +6 -1
- package/dist/cmd/ai/index.js.map +1 -1
- package/dist/cmd/ai/opencode/index.d.ts +3 -0
- package/dist/cmd/ai/opencode/index.d.ts.map +1 -0
- package/dist/cmd/ai/opencode/index.js +27 -0
- package/dist/cmd/ai/opencode/index.js.map +1 -0
- package/dist/cmd/ai/opencode/install.d.ts +3 -0
- package/dist/cmd/ai/opencode/install.d.ts.map +1 -0
- package/dist/cmd/ai/opencode/install.js +102 -0
- package/dist/cmd/ai/opencode/install.js.map +1 -0
- package/dist/cmd/ai/opencode/run.d.ts +3 -0
- package/dist/cmd/ai/opencode/run.d.ts.map +1 -0
- package/dist/cmd/ai/opencode/run.js +88 -0
- package/dist/cmd/ai/opencode/run.js.map +1 -0
- package/dist/cmd/ai/opencode/uninstall.d.ts +3 -0
- package/dist/cmd/ai/opencode/uninstall.d.ts.map +1 -0
- package/dist/cmd/ai/opencode/uninstall.js +82 -0
- package/dist/cmd/ai/opencode/uninstall.js.map +1 -0
- package/dist/cmd/build/vite/beacon-plugin.d.ts.map +1 -1
- package/dist/cmd/build/vite/beacon-plugin.js.map +1 -1
- package/dist/cmd/build/vite/vite-builder.d.ts.map +1 -1
- package/dist/cmd/build/vite/vite-builder.js +1 -1
- package/dist/cmd/build/vite/vite-builder.js.map +1 -1
- package/dist/cmd/cloud/env/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/env/delete.js +87 -34
- package/dist/cmd/cloud/env/delete.js.map +1 -1
- package/dist/cmd/cloud/env/get.d.ts.map +1 -1
- package/dist/cmd/cloud/env/get.js +50 -16
- package/dist/cmd/cloud/env/get.js.map +1 -1
- package/dist/cmd/cloud/env/import.d.ts.map +1 -1
- package/dist/cmd/cloud/env/import.js +76 -32
- package/dist/cmd/cloud/env/import.js.map +1 -1
- package/dist/cmd/cloud/env/index.d.ts.map +1 -1
- package/dist/cmd/cloud/env/index.js +6 -2
- package/dist/cmd/cloud/env/index.js.map +1 -1
- package/dist/cmd/cloud/env/list.d.ts.map +1 -1
- package/dist/cmd/cloud/env/list.js +94 -23
- package/dist/cmd/cloud/env/list.js.map +1 -1
- package/dist/cmd/cloud/env/org-util.d.ts +16 -0
- package/dist/cmd/cloud/env/org-util.d.ts.map +1 -0
- package/dist/cmd/cloud/env/org-util.js +28 -0
- package/dist/cmd/cloud/env/org-util.js.map +1 -0
- package/dist/cmd/cloud/env/pull.d.ts.map +1 -1
- package/dist/cmd/cloud/env/pull.js +61 -29
- package/dist/cmd/cloud/env/pull.js.map +1 -1
- package/dist/cmd/cloud/env/push.d.ts.map +1 -1
- package/dist/cmd/cloud/env/push.js +69 -23
- package/dist/cmd/cloud/env/push.js.map +1 -1
- package/dist/cmd/cloud/env/set.d.ts.map +1 -1
- package/dist/cmd/cloud/env/set.js +69 -26
- package/dist/cmd/cloud/env/set.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/create-namespace.js +1 -1
- package/dist/cmd/cloud/keyvalue/create-namespace.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete-namespace.js +2 -2
- package/dist/cmd/cloud/keyvalue/delete-namespace.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete.js +1 -1
- package/dist/cmd/cloud/keyvalue/delete.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/get.js +1 -1
- package/dist/cmd/cloud/keyvalue/get.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/index.js +1 -1
- package/dist/cmd/cloud/keyvalue/index.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/keys.js +1 -1
- package/dist/cmd/cloud/keyvalue/keys.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/list-namespaces.js +1 -1
- package/dist/cmd/cloud/keyvalue/list-namespaces.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/repl.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/repl.js +8 -5
- package/dist/cmd/cloud/keyvalue/repl.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/search.js +1 -1
- package/dist/cmd/cloud/keyvalue/search.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/set.js +1 -1
- package/dist/cmd/cloud/keyvalue/set.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/stats.js +1 -1
- package/dist/cmd/cloud/keyvalue/stats.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/util.d.ts +4 -4
- package/dist/cmd/cloud/keyvalue/util.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/util.js +4 -9
- package/dist/cmd/cloud/keyvalue/util.js.map +1 -1
- package/dist/cmd/project/create.d.ts.map +1 -1
- package/dist/cmd/project/create.js +20 -2
- package/dist/cmd/project/create.js.map +1 -1
- package/dist/cmd/project/download.d.ts +3 -1
- package/dist/cmd/project/download.d.ts.map +1 -1
- package/dist/cmd/project/download.js +5 -0
- package/dist/cmd/project/download.js.map +1 -1
- package/dist/cmd/project/template-flow.d.ts +5 -0
- package/dist/cmd/project/template-flow.d.ts.map +1 -1
- package/dist/cmd/project/template-flow.js +188 -79
- package/dist/cmd/project/template-flow.js.map +1 -1
- package/dist/cmd/setup/index.d.ts.map +1 -1
- package/dist/cmd/setup/index.js +2 -1
- package/dist/cmd/setup/index.js.map +1 -1
- package/dist/onboarding/agentPrompt.d.ts +8 -0
- package/dist/onboarding/agentPrompt.d.ts.map +1 -0
- package/dist/onboarding/agentPrompt.js +263 -0
- package/dist/onboarding/agentPrompt.js.map +1 -0
- package/dist/schema-generator.d.ts +1 -1
- package/dist/schema-generator.d.ts.map +1 -1
- package/dist/schema-parser.d.ts +1 -1
- package/dist/schema-parser.d.ts.map +1 -1
- package/dist/schema-parser.js +36 -1
- package/dist/schema-parser.js.map +1 -1
- package/dist/tui/prompt.d.ts.map +1 -1
- package/dist/tui/prompt.js +7 -1
- package/dist/tui/prompt.js.map +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +91 -28
- package/dist/tui.js.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +7 -7
- package/src/auth.ts +7 -6
- package/src/cli.ts +84 -11
- package/src/cmd/ai/index.ts +6 -1
- package/src/cmd/ai/opencode/index.ts +28 -0
- package/src/cmd/ai/opencode/install.ts +120 -0
- package/src/cmd/ai/opencode/run.ts +103 -0
- package/src/cmd/ai/opencode/uninstall.ts +90 -0
- package/src/cmd/build/vite/beacon-plugin.ts +3 -1
- package/src/cmd/build/vite/vite-builder.ts +5 -1
- package/src/cmd/cloud/env/delete.ts +100 -41
- package/src/cmd/cloud/env/get.ts +53 -16
- package/src/cmd/cloud/env/import.ts +86 -37
- package/src/cmd/cloud/env/index.ts +6 -2
- package/src/cmd/cloud/env/list.ts +102 -27
- package/src/cmd/cloud/env/org-util.ts +37 -0
- package/src/cmd/cloud/env/pull.ts +67 -31
- package/src/cmd/cloud/env/push.ts +81 -28
- package/src/cmd/cloud/env/set.ts +82 -33
- package/src/cmd/cloud/keyvalue/create-namespace.ts +1 -1
- package/src/cmd/cloud/keyvalue/delete-namespace.ts +2 -2
- package/src/cmd/cloud/keyvalue/delete.ts +1 -1
- package/src/cmd/cloud/keyvalue/get.ts +1 -1
- package/src/cmd/cloud/keyvalue/index.ts +1 -1
- package/src/cmd/cloud/keyvalue/keys.ts +1 -1
- package/src/cmd/cloud/keyvalue/list-namespaces.ts +1 -1
- package/src/cmd/cloud/keyvalue/repl.ts +8 -5
- package/src/cmd/cloud/keyvalue/search.ts +1 -1
- package/src/cmd/cloud/keyvalue/set.ts +1 -1
- package/src/cmd/cloud/keyvalue/stats.ts +1 -1
- package/src/cmd/cloud/keyvalue/util.ts +8 -17
- package/src/cmd/project/create.ts +21 -2
- package/src/cmd/project/download.ts +7 -1
- package/src/cmd/project/template-flow.ts +215 -80
- package/src/cmd/setup/index.ts +2 -1
- package/src/onboarding/agentPrompt.ts +263 -0
- package/src/schema-generator.ts +1 -1
- package/src/schema-parser.ts +42 -3
- package/src/tui/prompt.ts +10 -3
- package/src/tui.ts +95 -31
- package/src/types.ts +1 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as tui from '../../../tui';
|
|
2
|
+
import { listOrganizations } from '@agentuity/server';
|
|
3
|
+
/**
|
|
4
|
+
* Resolves the organization ID for org-scoped env operations.
|
|
5
|
+
*
|
|
6
|
+
* @param apiClient - The API client
|
|
7
|
+
* @param config - The CLI config (may be null)
|
|
8
|
+
* @param orgOption - The --org option value (true for default/prompt, or explicit org ID)
|
|
9
|
+
* @returns The resolved organization ID
|
|
10
|
+
*/
|
|
11
|
+
export async function resolveOrgId(apiClient, config, orgOption) {
|
|
12
|
+
// If an explicit org ID was provided (string), use it directly
|
|
13
|
+
if (typeof orgOption === 'string' && orgOption !== 'true') {
|
|
14
|
+
return orgOption;
|
|
15
|
+
}
|
|
16
|
+
// Otherwise, we need to select an org
|
|
17
|
+
const orgs = await tui.spinner('Fetching organizations', () => listOrganizations(apiClient));
|
|
18
|
+
// Use preference if available, otherwise prompt
|
|
19
|
+
const preferredOrgId = config?.preferences?.orgId;
|
|
20
|
+
return tui.selectOrganization(orgs, preferredOrgId);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Checks if we're operating in org scope based on the --org option.
|
|
24
|
+
*/
|
|
25
|
+
export function isOrgScope(orgOption) {
|
|
26
|
+
return orgOption === true || (typeof orgOption === 'string' && orgOption.length > 0);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=org-util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-util.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/env/org-util.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CACjC,SAAoB,EACpB,MAAqB,EACrB,SAA2B;IAE3B,+DAA+D;IAC/D,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QAC3D,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,sCAAsC;IACtC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;IAE7F,gDAAgD;IAChD,MAAM,cAAc,GAAG,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC;IAClD,OAAO,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,SAAuC;IACjE,OAAO,SAAS,KAAK,IAAI,IAAI,CAAC,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../../src/cmd/cloud/env/pull.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../../../src/cmd/cloud/env/pull.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,cAAc,yCAgHzB,CAAC"}
|
|
@@ -2,39 +2,86 @@ import { z } from 'zod';
|
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import { createSubcommand } from '../../../types';
|
|
4
4
|
import * as tui from '../../../tui';
|
|
5
|
-
import { projectGet } from '@agentuity/server';
|
|
5
|
+
import { projectGet, orgEnvGet } from '@agentuity/server';
|
|
6
6
|
import { findExistingEnvFile, readEnvFile, writeEnvFile, mergeEnvVars, isReservedAgentuityKey, } from '../../../env-util';
|
|
7
7
|
import { getCommand } from '../../../command-prefix';
|
|
8
|
+
import { resolveOrgId, isOrgScope } from './org-util';
|
|
8
9
|
const EnvPullResponseSchema = z.object({
|
|
9
10
|
success: z.boolean().describe('Whether pull succeeded'),
|
|
10
11
|
pulled: z.number().describe('Number of items pulled'),
|
|
11
12
|
path: z.string().describe('Local file path where variables were saved'),
|
|
12
13
|
force: z.boolean().describe('Whether force mode was used'),
|
|
14
|
+
scope: z.enum(['project', 'org']).describe('The scope from which variables were pulled'),
|
|
13
15
|
});
|
|
14
16
|
export const pullSubcommand = createSubcommand({
|
|
15
17
|
name: 'pull',
|
|
16
18
|
description: 'Pull environment variables from cloud to local .env file',
|
|
17
|
-
tags: ['slow', 'requires-auth'
|
|
19
|
+
tags: ['slow', 'requires-auth'],
|
|
18
20
|
idempotent: true,
|
|
19
21
|
examples: [
|
|
20
|
-
{ command: getCommand('env pull'), description: '
|
|
21
|
-
{ command: getCommand('env pull --force'), description: '
|
|
22
|
+
{ command: getCommand('env pull'), description: 'Pull from project' },
|
|
23
|
+
{ command: getCommand('env pull --force'), description: 'Overwrite local with cloud values' },
|
|
24
|
+
{ command: getCommand('env pull --org'), description: 'Pull from organization' },
|
|
22
25
|
],
|
|
23
|
-
requires: { auth: true,
|
|
26
|
+
requires: { auth: true, apiClient: true },
|
|
27
|
+
optional: { project: true },
|
|
24
28
|
prerequisites: ['cloud deploy'],
|
|
25
29
|
schema: {
|
|
26
30
|
options: z.object({
|
|
27
31
|
force: z.boolean().default(false).describe('overwrite local values with cloud values'),
|
|
32
|
+
org: z
|
|
33
|
+
.union([z.boolean(), z.string()])
|
|
34
|
+
.optional()
|
|
35
|
+
.describe('pull from organization level (use --org for default org)'),
|
|
28
36
|
}),
|
|
29
37
|
response: EnvPullResponseSchema,
|
|
30
38
|
},
|
|
31
39
|
async handler(ctx) {
|
|
32
|
-
const { opts, apiClient, project, projectDir } = ctx;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
40
|
+
const { opts, apiClient, project, projectDir, config } = ctx;
|
|
41
|
+
const useOrgScope = isOrgScope(opts?.org);
|
|
42
|
+
// Require project context for local file operations
|
|
43
|
+
if (!projectDir) {
|
|
44
|
+
tui.fatal('Project context required. Run from a project directory.');
|
|
45
|
+
}
|
|
46
|
+
let cloudEnv;
|
|
47
|
+
let scope;
|
|
48
|
+
if (useOrgScope) {
|
|
49
|
+
// Organization scope
|
|
50
|
+
const orgId = await resolveOrgId(apiClient, config, opts.org);
|
|
51
|
+
const orgData = await tui.spinner('Pulling environment variables from organization', () => {
|
|
52
|
+
return orgEnvGet(apiClient, { id: orgId, mask: false });
|
|
53
|
+
});
|
|
54
|
+
cloudEnv = { ...orgData.env, ...orgData.secrets };
|
|
55
|
+
scope = 'org';
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// Project scope
|
|
59
|
+
if (!project) {
|
|
60
|
+
tui.fatal('Project context required. Run from a project directory or use --org for organization scope.');
|
|
61
|
+
}
|
|
62
|
+
const projectData = await tui.spinner('Pulling environment variables from cloud', () => {
|
|
63
|
+
return projectGet(apiClient, { id: project.projectId, mask: false });
|
|
64
|
+
});
|
|
65
|
+
cloudEnv = { ...projectData.env, ...projectData.secrets };
|
|
66
|
+
scope = 'project';
|
|
67
|
+
// Write AGENTUITY_SDK_KEY to .env if present and missing locally (project scope only)
|
|
68
|
+
if (projectData.api_key) {
|
|
69
|
+
const dotEnvPath = join(projectDir, '.env');
|
|
70
|
+
const dotEnv = await readEnvFile(dotEnvPath);
|
|
71
|
+
if (!dotEnv.AGENTUITY_SDK_KEY) {
|
|
72
|
+
dotEnv.AGENTUITY_SDK_KEY = projectData.api_key;
|
|
73
|
+
await writeEnvFile(dotEnvPath, dotEnv, {
|
|
74
|
+
addComment: (key) => {
|
|
75
|
+
if (key === 'AGENTUITY_SDK_KEY') {
|
|
76
|
+
return 'AGENTUITY_SDK_KEY is a sensitive value and should not be committed to version control.';
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
tui.info(`Wrote AGENTUITY_SDK_KEY to ${dotEnvPath}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
38
85
|
// Target file is always .env
|
|
39
86
|
const targetEnvPath = await findExistingEnvFile(projectDir);
|
|
40
87
|
const localEnv = await readEnvFile(targetEnvPath);
|
|
@@ -52,30 +99,15 @@ export const pullSubcommand = createSubcommand({
|
|
|
52
99
|
await writeEnvFile(targetEnvPath, mergedEnv, {
|
|
53
100
|
skipKeys: Object.keys(mergedEnv).filter(isReservedAgentuityKey),
|
|
54
101
|
});
|
|
55
|
-
// Write AGENTUITY_SDK_KEY to .env if present and missing locally
|
|
56
|
-
if (projectData.api_key) {
|
|
57
|
-
const dotEnvPath = join(projectDir, '.env');
|
|
58
|
-
const dotEnv = await readEnvFile(dotEnvPath);
|
|
59
|
-
if (!dotEnv.AGENTUITY_SDK_KEY) {
|
|
60
|
-
dotEnv.AGENTUITY_SDK_KEY = projectData.api_key;
|
|
61
|
-
await writeEnvFile(dotEnvPath, dotEnv, {
|
|
62
|
-
addComment: (key) => {
|
|
63
|
-
if (key === 'AGENTUITY_SDK_KEY') {
|
|
64
|
-
return 'AGENTUITY_SDK_KEY is a sensitive value and should not be committed to version control.';
|
|
65
|
-
}
|
|
66
|
-
return null;
|
|
67
|
-
},
|
|
68
|
-
});
|
|
69
|
-
tui.info(`Wrote AGENTUITY_SDK_KEY to ${dotEnvPath}`);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
102
|
const count = Object.keys(cloudEnv).length;
|
|
73
|
-
|
|
103
|
+
const scopeLabel = useOrgScope ? 'organization' : 'project';
|
|
104
|
+
tui.success(`Pulled ${count} environment variable${count !== 1 ? 's' : ''} from ${scopeLabel} to ${targetEnvPath}`);
|
|
74
105
|
return {
|
|
75
106
|
success: true,
|
|
76
107
|
pulled: count,
|
|
77
108
|
path: targetEnvPath,
|
|
78
109
|
force: opts?.force ?? false,
|
|
110
|
+
scope,
|
|
79
111
|
};
|
|
80
112
|
},
|
|
81
113
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/env/pull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/env/pull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EACN,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,sBAAsB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACvD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACrD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IACvE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAC1D,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,4CAA4C,CAAC;CACxF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;IAC9C,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,0DAA0D;IACvE,IAAI,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC;IAC/B,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE;QACT,EAAE,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,mBAAmB,EAAE;QACrE,EAAE,OAAO,EAAE,UAAU,CAAC,kBAAkB,CAAC,EAAE,WAAW,EAAE,mCAAmC,EAAE;QAC7F,EAAE,OAAO,EAAE,UAAU,CAAC,gBAAgB,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE;KAChF;IACD,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;IACzC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;IAC3B,aAAa,EAAE,CAAC,cAAc,CAAC;IAC/B,MAAM,EAAE;QACP,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;YACjB,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YACtF,GAAG,EAAE,CAAC;iBACJ,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;iBAChC,QAAQ,EAAE;iBACV,QAAQ,CAAC,0DAA0D,CAAC;SACtE,CAAC;QACF,QAAQ,EAAE,qBAAqB;KAC/B;IAED,KAAK,CAAC,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;QAC7D,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAE1C,oDAAoD;QACpD,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,GAAG,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,QAAgC,CAAC;QACrC,IAAI,KAAwB,CAAC;QAE7B,IAAI,WAAW,EAAE,CAAC;YACjB,qBAAqB;YACrB,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAK,CAAC,GAAI,CAAC,CAAC;YAEhE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,iDAAiD,EAAE,GAAG,EAAE;gBACzF,OAAO,SAAS,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;YAEH,QAAQ,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YAClD,KAAK,GAAG,KAAK,CAAC;QACf,CAAC;aAAM,CAAC;YACP,gBAAgB;YAChB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACd,GAAG,CAAC,KAAK,CAAC,6FAA6F,CAAC,CAAC;YAC1G,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,0CAA0C,EAAE,GAAG,EAAE;gBACtF,OAAO,UAAU,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;YAEH,QAAQ,GAAG,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;YAC1D,KAAK,GAAG,SAAS,CAAC;YAElB,sFAAsF;YACtF,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBACzB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBAC5C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC;gBAE7C,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;oBAC/B,MAAM,CAAC,iBAAiB,GAAG,WAAW,CAAC,OAAO,CAAC;oBAC/C,MAAM,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE;wBACtC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;4BACnB,IAAI,GAAG,KAAK,mBAAmB,EAAE,CAAC;gCACjC,OAAO,wFAAwF,CAAC;4BACjG,CAAC;4BACD,OAAO,IAAI,CAAC;wBACb,CAAC;qBACD,CAAC,CAAC;oBACH,GAAG,CAAC,IAAI,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC;gBACtD,CAAC;YACF,CAAC;QACF,CAAC;QAED,6BAA6B;QAC7B,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC,CAAC;QAElD,yEAAyE;QACzE,IAAI,SAAiC,CAAC;QACtC,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;YACjB,6BAA6B;YAC7B,SAAS,GAAG,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACP,4DAA4D;YAC5D,SAAS,GAAG,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;QAED,0EAA0E;QAC1E,MAAM,YAAY,CAAC,aAAa,EAAE,SAAS,EAAE;YAC5C,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC;SAC/D,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QAC3C,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5D,GAAG,CAAC,OAAO,CACV,UAAU,KAAK,wBAAwB,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,UAAU,OAAO,aAAa,EAAE,CACtG,CAAC;QAEF,OAAO;YACN,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,KAAK;YAC3B,KAAK;SACL,CAAC;IACH,CAAC;CACD,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../../src/cmd/cloud/env/push.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../../src/cmd/cloud/env/push.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,cAAc,yCAmIzB,CAAC"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { createSubcommand } from '../../../types';
|
|
3
3
|
import * as tui from '../../../tui';
|
|
4
|
-
import { projectEnvUpdate } from '@agentuity/server';
|
|
4
|
+
import { projectEnvUpdate, orgEnvUpdate } from '@agentuity/server';
|
|
5
5
|
import { findExistingEnvFile, readEnvFile, filterAgentuitySdkKeys, splitEnvAndSecrets, validateNoPublicSecrets, } from '../../../env-util';
|
|
6
6
|
import { getCommand } from '../../../command-prefix';
|
|
7
|
+
import { resolveOrgId, isOrgScope } from './org-util';
|
|
7
8
|
const EnvPushResponseSchema = z.object({
|
|
8
9
|
success: z.boolean().describe('Whether push succeeded'),
|
|
9
10
|
pushed: z.number().describe('Number of items pushed'),
|
|
10
11
|
envCount: z.number().describe('Number of env vars pushed'),
|
|
11
12
|
secretCount: z.number().describe('Number of secrets pushed'),
|
|
12
13
|
source: z.string().describe('Source file path'),
|
|
14
|
+
scope: z.enum(['project', 'org']).describe('The scope where variables were pushed'),
|
|
13
15
|
});
|
|
14
16
|
export const pushSubcommand = createSubcommand({
|
|
15
17
|
name: 'push',
|
|
@@ -20,17 +22,31 @@ export const pushSubcommand = createSubcommand({
|
|
|
20
22
|
'slow',
|
|
21
23
|
'api-intensive',
|
|
22
24
|
'requires-auth',
|
|
23
|
-
'requires-project',
|
|
24
25
|
],
|
|
25
26
|
idempotent: true,
|
|
26
|
-
examples: [
|
|
27
|
-
|
|
27
|
+
examples: [
|
|
28
|
+
{ command: getCommand('env push'), description: 'Push all variables to cloud (project)' },
|
|
29
|
+
{ command: getCommand('env push --org'), description: 'Push all variables to organization' },
|
|
30
|
+
],
|
|
31
|
+
requires: { auth: true, apiClient: true },
|
|
32
|
+
optional: { project: true },
|
|
28
33
|
prerequisites: ['env set'],
|
|
29
34
|
schema: {
|
|
35
|
+
options: z.object({
|
|
36
|
+
org: z
|
|
37
|
+
.union([z.boolean(), z.string()])
|
|
38
|
+
.optional()
|
|
39
|
+
.describe('push to organization level (use --org for default org)'),
|
|
40
|
+
}),
|
|
30
41
|
response: EnvPushResponseSchema,
|
|
31
42
|
},
|
|
32
43
|
async handler(ctx) {
|
|
33
|
-
const { apiClient, project, projectDir } = ctx;
|
|
44
|
+
const { apiClient, project, projectDir, config, opts } = ctx;
|
|
45
|
+
const useOrgScope = isOrgScope(opts?.org);
|
|
46
|
+
// Always require projectDir since push reads from local .env file
|
|
47
|
+
if (!projectDir) {
|
|
48
|
+
tui.fatal('Project directory required. Run from a project directory.');
|
|
49
|
+
}
|
|
34
50
|
// Read local env file
|
|
35
51
|
const envFilePath = await findExistingEnvFile(projectDir);
|
|
36
52
|
const localEnv = await readEnvFile(envFilePath);
|
|
@@ -44,6 +60,7 @@ export const pushSubcommand = createSubcommand({
|
|
|
44
60
|
envCount: 0,
|
|
45
61
|
secretCount: 0,
|
|
46
62
|
source: envFilePath,
|
|
63
|
+
scope: useOrgScope ? 'org' : 'project',
|
|
47
64
|
};
|
|
48
65
|
}
|
|
49
66
|
// Split into env and secrets based on key naming conventions
|
|
@@ -57,25 +74,54 @@ export const pushSubcommand = createSubcommand({
|
|
|
57
74
|
env[key] = filteredEnv[key];
|
|
58
75
|
}
|
|
59
76
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
77
|
+
if (useOrgScope) {
|
|
78
|
+
// Organization scope
|
|
79
|
+
const orgId = await resolveOrgId(apiClient, config, opts.org);
|
|
80
|
+
await tui.spinner('Pushing variables to organization', () => {
|
|
81
|
+
return orgEnvUpdate(apiClient, {
|
|
82
|
+
id: orgId,
|
|
83
|
+
env,
|
|
84
|
+
secrets,
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
const envCount = Object.keys(env).length;
|
|
88
|
+
const secretCount = Object.keys(secrets).length;
|
|
89
|
+
const totalCount = envCount + secretCount;
|
|
90
|
+
tui.success(`Pushed ${totalCount} variable${totalCount !== 1 ? 's' : ''} to organization (${envCount} env, ${secretCount} secret${secretCount !== 1 ? 's' : ''})`);
|
|
91
|
+
return {
|
|
92
|
+
success: true,
|
|
93
|
+
pushed: totalCount,
|
|
94
|
+
envCount,
|
|
95
|
+
secretCount,
|
|
96
|
+
source: envFilePath,
|
|
97
|
+
scope: 'org',
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
// Project scope (existing behavior)
|
|
102
|
+
if (!project) {
|
|
103
|
+
tui.fatal('Project context required. Run from a project directory or use --org for organization scope.');
|
|
104
|
+
}
|
|
105
|
+
await tui.spinner('Pushing variables to cloud', () => {
|
|
106
|
+
return projectEnvUpdate(apiClient, {
|
|
107
|
+
id: project.projectId,
|
|
108
|
+
env,
|
|
109
|
+
secrets,
|
|
110
|
+
});
|
|
66
111
|
});
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
112
|
+
const envCount = Object.keys(env).length;
|
|
113
|
+
const secretCount = Object.keys(secrets).length;
|
|
114
|
+
const totalCount = envCount + secretCount;
|
|
115
|
+
tui.success(`Pushed ${totalCount} variable${totalCount !== 1 ? 's' : ''} to cloud (${envCount} env, ${secretCount} secret${secretCount !== 1 ? 's' : ''})`);
|
|
116
|
+
return {
|
|
117
|
+
success: true,
|
|
118
|
+
pushed: totalCount,
|
|
119
|
+
envCount,
|
|
120
|
+
secretCount,
|
|
121
|
+
source: envFilePath,
|
|
122
|
+
scope: 'project',
|
|
123
|
+
};
|
|
124
|
+
}
|
|
79
125
|
},
|
|
80
126
|
});
|
|
81
127
|
//# sourceMappingURL=push.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/env/push.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/env/push.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../../src/cmd/cloud/env/set.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../../src/cmd/cloud/env/set.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,aAAa,yCAyIxB,CAAC"}
|
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { createSubcommand } from '../../../types';
|
|
3
3
|
import * as tui from '../../../tui';
|
|
4
|
-
import { projectEnvUpdate } from '@agentuity/server';
|
|
4
|
+
import { projectEnvUpdate, orgEnvUpdate } from '@agentuity/server';
|
|
5
5
|
import { findExistingEnvFile, readEnvFile, writeEnvFile, filterAgentuitySdkKeys, looksLikeSecret, isReservedAgentuityKey, isPublicVarKey, PUBLIC_VAR_PREFIXES, } from '../../../env-util';
|
|
6
6
|
import { getCommand } from '../../../command-prefix';
|
|
7
|
+
import { resolveOrgId, isOrgScope } from './org-util';
|
|
7
8
|
const EnvSetResponseSchema = z.object({
|
|
8
9
|
success: z.boolean().describe('Whether the operation succeeded'),
|
|
9
10
|
key: z.string().describe('Environment variable key'),
|
|
10
|
-
path: z.string().describe('Local file path where env var was saved'),
|
|
11
|
+
path: z.string().optional().describe('Local file path where env var was saved (project scope only)'),
|
|
11
12
|
secret: z.boolean().describe('Whether the value was stored as a secret'),
|
|
13
|
+
scope: z.enum(['project', 'org']).describe('The scope where the variable was set'),
|
|
12
14
|
});
|
|
13
15
|
export const setSubcommand = createSubcommand({
|
|
14
16
|
name: 'set',
|
|
15
17
|
description: 'Set an environment variable or secret',
|
|
16
|
-
tags: ['mutating', 'updates-resource', 'slow', 'requires-auth'
|
|
18
|
+
tags: ['mutating', 'updates-resource', 'slow', 'requires-auth'],
|
|
17
19
|
idempotent: true,
|
|
18
|
-
requires: { auth: true,
|
|
20
|
+
requires: { auth: true, apiClient: true },
|
|
21
|
+
optional: { project: true },
|
|
19
22
|
examples: [
|
|
20
23
|
{
|
|
21
24
|
command: getCommand('env set NODE_ENV production'),
|
|
@@ -26,6 +29,10 @@ export const setSubcommand = createSubcommand({
|
|
|
26
29
|
command: getCommand('env set API_KEY "sk_..." --secret'),
|
|
27
30
|
description: 'Set a secret value',
|
|
28
31
|
},
|
|
32
|
+
{
|
|
33
|
+
command: getCommand('env set OPENAI_API_KEY "sk_..." --secret --org'),
|
|
34
|
+
description: 'Set an organization-wide secret',
|
|
35
|
+
},
|
|
29
36
|
],
|
|
30
37
|
schema: {
|
|
31
38
|
args: z.object({
|
|
@@ -37,11 +44,20 @@ export const setSubcommand = createSubcommand({
|
|
|
37
44
|
.boolean()
|
|
38
45
|
.default(false)
|
|
39
46
|
.describe('store as a secret (encrypted and masked in UI)'),
|
|
47
|
+
org: z
|
|
48
|
+
.union([z.boolean(), z.string()])
|
|
49
|
+
.optional()
|
|
50
|
+
.describe('set at organization level (use --org for default org, or --org <orgId> for specific org)'),
|
|
40
51
|
}),
|
|
41
52
|
response: EnvSetResponseSchema,
|
|
42
53
|
},
|
|
43
54
|
async handler(ctx) {
|
|
44
|
-
const { args, opts, apiClient, project, projectDir } = ctx;
|
|
55
|
+
const { args, opts, apiClient, project, projectDir, config } = ctx;
|
|
56
|
+
const useOrgScope = isOrgScope(opts?.org);
|
|
57
|
+
// Require project context if not using org scope
|
|
58
|
+
if (!useOrgScope && !project) {
|
|
59
|
+
tui.fatal('Project context required. Run from a project directory or use --org for organization scope.');
|
|
60
|
+
}
|
|
45
61
|
let isSecret = opts?.secret ?? false;
|
|
46
62
|
const isPublic = isPublicVarKey(args.key);
|
|
47
63
|
// Validate key doesn't start with reserved AGENTUITY_ prefix (except AGENTUITY_PUBLIC_)
|
|
@@ -61,28 +77,55 @@ export const setSubcommand = createSubcommand({
|
|
|
61
77
|
isSecret = true;
|
|
62
78
|
}
|
|
63
79
|
}
|
|
64
|
-
// Set in cloud
|
|
65
|
-
const updatePayload = isSecret
|
|
66
|
-
? { id: project.projectId, secrets: { [args.key]: args.value } }
|
|
67
|
-
: { id: project.projectId, env: { [args.key]: args.value } };
|
|
68
80
|
const label = isSecret ? 'secret' : 'environment variable';
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
81
|
+
if (useOrgScope) {
|
|
82
|
+
// Organization scope
|
|
83
|
+
const orgId = await resolveOrgId(apiClient, config, opts.org);
|
|
84
|
+
const updatePayload = isSecret
|
|
85
|
+
? { id: orgId, secrets: { [args.key]: args.value } }
|
|
86
|
+
: { id: orgId, env: { [args.key]: args.value } };
|
|
87
|
+
await tui.spinner(`Setting organization ${label} in cloud`, () => {
|
|
88
|
+
return orgEnvUpdate(apiClient, updatePayload);
|
|
89
|
+
});
|
|
90
|
+
tui.success(`Organization ${isSecret ? 'secret' : 'environment variable'} '${args.key}' set successfully (affects all projects in org)`);
|
|
91
|
+
return {
|
|
92
|
+
success: true,
|
|
93
|
+
key: args.key,
|
|
94
|
+
secret: isSecret,
|
|
95
|
+
scope: 'org',
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
// Project scope (existing behavior)
|
|
100
|
+
const updatePayload = isSecret
|
|
101
|
+
? { id: project.projectId, secrets: { [args.key]: args.value } }
|
|
102
|
+
: { id: project.projectId, env: { [args.key]: args.value } };
|
|
103
|
+
await tui.spinner(`Setting ${label} in cloud`, () => {
|
|
104
|
+
return projectEnvUpdate(apiClient, updatePayload);
|
|
105
|
+
});
|
|
106
|
+
// Update local .env file only if we have a project directory
|
|
107
|
+
// (not when using --project-id without being in a project folder)
|
|
108
|
+
let envFilePath;
|
|
109
|
+
if (projectDir) {
|
|
110
|
+
envFilePath = await findExistingEnvFile(projectDir);
|
|
111
|
+
const currentEnv = await readEnvFile(envFilePath);
|
|
112
|
+
currentEnv[args.key] = args.value;
|
|
113
|
+
// Filter out AGENTUITY_ keys before writing
|
|
114
|
+
const filteredEnv = filterAgentuitySdkKeys(currentEnv);
|
|
115
|
+
await writeEnvFile(envFilePath, filteredEnv);
|
|
116
|
+
}
|
|
117
|
+
const successMsg = envFilePath
|
|
118
|
+
? `${isSecret ? 'Secret' : 'Environment variable'} '${args.key}' set successfully (cloud + ${envFilePath})`
|
|
119
|
+
: `${isSecret ? 'Secret' : 'Environment variable'} '${args.key}' set successfully (cloud only)`;
|
|
120
|
+
tui.success(successMsg);
|
|
121
|
+
return {
|
|
122
|
+
success: true,
|
|
123
|
+
key: args.key,
|
|
124
|
+
path: envFilePath,
|
|
125
|
+
secret: isSecret,
|
|
126
|
+
scope: 'project',
|
|
127
|
+
};
|
|
128
|
+
}
|
|
86
129
|
},
|
|
87
130
|
});
|
|
88
131
|
//# sourceMappingURL=set.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/env/set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/env/set.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ export const createNamespaceSubcommand = createCommand({
|
|
|
9
9
|
description: 'Create a new keyvalue namespace',
|
|
10
10
|
tags: ['mutating', 'creates-resource', 'slow', 'requires-auth'],
|
|
11
11
|
idempotent: false,
|
|
12
|
-
requires: { auth: true
|
|
12
|
+
requires: { auth: true },
|
|
13
13
|
examples: [
|
|
14
14
|
{
|
|
15
15
|
command: getCommand('kv create-namespace production'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-namespace.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/keyvalue/create-namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAa,CAAC;IACtD,IAAI,EAAE,kBAAkB;IACxB,OAAO,EAAE,CAAC,QAAQ,CAAC;IACnB,WAAW,EAAE,iCAAiC;IAC9C,IAAI,EAAE,CAAC,UAAU,EAAE,kBAAkB,EAAE,MAAM,EAAE,eAAe,CAAC;IAC/D,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE
|
|
1
|
+
{"version":3,"file":"create-namespace.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/keyvalue/create-namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAa,CAAC;IACtD,IAAI,EAAE,kBAAkB;IACxB,OAAO,EAAE,CAAC,QAAQ,CAAC;IACnB,WAAW,EAAE,iCAAiC;IAC9C,IAAI,EAAE,CAAC,UAAU,EAAE,kBAAkB,EAAE,MAAM,EAAE,eAAe,CAAC;IAC/D,UAAU,EAAE,KAAK;IACjB,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACxB,QAAQ,EAAE;QACT;YACC,OAAO,EAAE,UAAU,CAAC,gCAAgC,CAAC;YACrD,WAAW,EAAE,6BAA6B;SAC1C;QACD;YACC,OAAO,EAAE,UAAU,CAAC,mBAAmB,CAAC;YACxC,WAAW,EAAE,wCAAwC;SACrD;QACD,EAAE,OAAO,EAAE,UAAU,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE;KACjF;IACD,MAAM,EAAE;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;SAC9D,CAAC;QACF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YAChE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAChD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;SAC1D,CAAC;KACF;IAED,KAAK,CAAC,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;QACrB,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAE3C,MAAM,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACvB,GAAG,CAAC,OAAO,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,CAAC;QAED,OAAO;YACN,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI,CAAC,IAAI;YACpB,OAAO,EAAE,aAAa,IAAI,CAAC,IAAI,UAAU;SACzC,CAAC;IACH,CAAC;CACD,CAAC,CAAC;AAEH,eAAe,yBAAyB,CAAC"}
|
|
@@ -8,9 +8,9 @@ export const deleteNamespaceSubcommand = createCommand({
|
|
|
8
8
|
name: 'delete-namespace',
|
|
9
9
|
aliases: ['rm-namespace'],
|
|
10
10
|
description: 'Delete a keyvalue namespace and all its keys',
|
|
11
|
-
tags: ['destructive', 'deletes-resource', 'slow', 'requires-auth'
|
|
11
|
+
tags: ['destructive', 'deletes-resource', 'slow', 'requires-auth'],
|
|
12
12
|
idempotent: true,
|
|
13
|
-
requires: { auth: true
|
|
13
|
+
requires: { auth: true },
|
|
14
14
|
examples: [
|
|
15
15
|
{
|
|
16
16
|
command: getCommand('kv delete-namespace staging'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-namespace.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/keyvalue/delete-namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAa,CAAC;IACtD,IAAI,EAAE,kBAAkB;IACxB,OAAO,EAAE,CAAC,cAAc,CAAC;IACzB,WAAW,EAAE,8CAA8C;IAC3D,IAAI,EAAE,CAAC,aAAa,EAAE,kBAAkB,EAAE,MAAM,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"delete-namespace.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/keyvalue/delete-namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAa,CAAC;IACtD,IAAI,EAAE,kBAAkB;IACxB,OAAO,EAAE,CAAC,cAAc,CAAC;IACzB,WAAW,EAAE,8CAA8C;IAC3D,IAAI,EAAE,CAAC,aAAa,EAAE,kBAAkB,EAAE,MAAM,EAAE,eAAe,CAAC;IAClE,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACxB,QAAQ,EAAE;QACT;YACC,OAAO,EAAE,UAAU,CAAC,6BAA6B,CAAC;YAClD,WAAW,EAAE,wCAAwC;SACrD;QACD;YACC,OAAO,EAAE,UAAU,CAAC,iCAAiC,CAAC;YACtD,WAAW,EAAE,mCAAmC;SAChD;QACD;YACC,OAAO,EAAE,UAAU,CAAC,0CAA0C,CAAC;YAC/D,WAAW,EAAE,yBAAyB;SACtC;KACD;IACD,MAAM,EAAE;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAC9D,OAAO,EAAE,CAAC;iBACR,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,0CAA0C,CAAC;SACtD,CAAC;QACF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YAC/D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YACxD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;SAC/D,CAAC;KACF;IAED,KAAK,CAAC,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;QACrB,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAE3C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACnB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC1B,GAAG,CAAC,KAAK,CACR,qDAAqD,EACrD,SAAS,CAAC,iBAAiB,CAC3B,CAAC;YACH,CAAC;YACD,GAAG,CAAC,OAAO,CAAC,8BAA8B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACnF,MAAM,OAAO,GAAG,MAAM,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;gBACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBACjD,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;oBACnC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;oBACpD,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC;gBAC7C,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACd,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;YACvE,CAAC;QACF,CAAC;QAED,MAAM,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACvB,GAAG,CAAC,OAAO,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,CAAC;QAED,OAAO;YACN,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI,CAAC,IAAI;YACpB,OAAO,EAAE,aAAa,IAAI,CAAC,IAAI,UAAU;SACzC,CAAC;IACH,CAAC;CACD,CAAC,CAAC;AAEH,eAAe,yBAAyB,CAAC"}
|
|
@@ -15,7 +15,7 @@ export const deleteSubcommand = createCommand({
|
|
|
15
15
|
description: 'Delete a key from the keyvalue storage',
|
|
16
16
|
tags: ['destructive', 'deletes-resource', 'slow', 'requires-auth'],
|
|
17
17
|
idempotent: true,
|
|
18
|
-
requires: { auth: true
|
|
18
|
+
requires: { auth: true },
|
|
19
19
|
examples: [
|
|
20
20
|
{ command: getCommand('kv delete production user:123'), description: 'Delete user data' },
|
|
21
21
|
{ command: getCommand('kv delete cache session:abc'), description: 'Delete cached session' },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/keyvalue/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAChE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAChD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CACrE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAC7C,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC;IAChC,WAAW,EAAE,wCAAwC;IACrD,IAAI,EAAE,CAAC,aAAa,EAAE,kBAAkB,EAAE,MAAM,EAAE,eAAe,CAAC;IAClE,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../src/cmd/cloud/keyvalue/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IAChE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAChD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;CACrE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAC7C,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC;IAChC,WAAW,EAAE,wCAAwC;IACrD,IAAI,EAAE,CAAC,aAAa,EAAE,kBAAkB,EAAE,MAAM,EAAE,eAAe,CAAC;IAClE,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;IACxB,QAAQ,EAAE;QACT,EAAE,OAAO,EAAE,UAAU,CAAC,+BAA+B,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE;QACzF,EAAE,OAAO,EAAE,UAAU,CAAC,6BAA6B,CAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE;QAC5F;YACC,OAAO,EAAE,UAAU,CAAC,8BAA8B,CAAC;YACnD,WAAW,EAAE,qCAAqC;SAClD;KACD;IACD,MAAM,EAAE;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAC3D,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;SAC/C,CAAC;QACF,QAAQ,EAAE,sBAAsB;KAChC;IAED,KAAK,CAAC,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACvB,GAAG,CAAC,OAAO,CAAC,cAAc,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC;QAED,OAAO;YACN,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,UAAU;SACV,CAAC;IACH,CAAC;CACD,CAAC,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
|
|
@@ -13,7 +13,7 @@ export const getSubcommand = createCommand({
|
|
|
13
13
|
name: 'get',
|
|
14
14
|
description: 'Get a value from the keyvalue storage',
|
|
15
15
|
tags: ['read-only', 'fast', 'requires-auth'],
|
|
16
|
-
requires: { auth: true
|
|
16
|
+
requires: { auth: true },
|
|
17
17
|
examples: [
|
|
18
18
|
{ command: getCommand('kv get production user:123'), description: 'Get user data' },
|
|
19
19
|
{ command: getCommand('kv get cache session:abc'), description: 'Get cached session' },
|