@agentuity/cli 0.0.51 → 0.0.52
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/api.js +68 -0
- package/dist/api.js.map +1 -0
- package/dist/auth.js +225 -0
- package/dist/auth.js.map +1 -0
- package/dist/banner.js +35 -0
- package/dist/banner.js.map +1 -0
- package/dist/cli-logger.js +72 -0
- package/dist/cli-logger.js.map +1 -0
- package/dist/cli.js +822 -0
- package/dist/cli.js.map +1 -0
- package/dist/cmd/ai/capabilities/index.js +10 -0
- package/dist/cmd/ai/capabilities/index.js.map +1 -0
- package/dist/cmd/ai/capabilities/show.js +221 -0
- package/dist/cmd/ai/capabilities/show.js.map +1 -0
- package/dist/cmd/ai/index.js +11 -0
- package/dist/cmd/ai/index.js.map +1 -0
- package/dist/cmd/ai/prompt/index.js +10 -0
- package/dist/cmd/ai/prompt/index.js.map +1 -0
- package/dist/cmd/ai/prompt/llm.js +365 -0
- package/dist/cmd/ai/prompt/llm.js.map +1 -0
- package/dist/cmd/ai/schema/index.js +10 -0
- package/dist/cmd/ai/schema/index.js.map +1 -0
- package/dist/cmd/ai/schema/show.js +23 -0
- package/dist/cmd/ai/schema/show.js.map +1 -0
- package/dist/cmd/auth/api.js +85 -0
- package/dist/cmd/auth/api.js.map +1 -0
- package/dist/cmd/auth/index.js +13 -0
- package/dist/cmd/auth/index.js.map +1 -0
- package/dist/cmd/auth/login.js +84 -0
- package/dist/cmd/auth/login.js.map +1 -0
- package/dist/cmd/auth/logout.js +17 -0
- package/dist/cmd/auth/logout.js.map +1 -0
- package/dist/cmd/auth/signup.js +55 -0
- package/dist/cmd/auth/signup.js.map +1 -0
- package/dist/cmd/auth/ssh/add.js +239 -0
- package/dist/cmd/auth/ssh/add.js.map +1 -0
- package/dist/cmd/auth/ssh/api.js +53 -0
- package/dist/cmd/auth/ssh/api.js.map +1 -0
- package/dist/cmd/auth/ssh/delete.js +126 -0
- package/dist/cmd/auth/ssh/delete.js.map +1 -0
- package/dist/cmd/auth/ssh/index.js +11 -0
- package/dist/cmd/auth/ssh/index.js.map +1 -0
- package/dist/cmd/auth/ssh/list.js +70 -0
- package/dist/cmd/auth/ssh/list.js.map +1 -0
- package/dist/cmd/auth/whoami.js +68 -0
- package/dist/cmd/auth/whoami.js.map +1 -0
- package/dist/cmd/build/ast.js +608 -0
- package/dist/cmd/build/ast.js.map +1 -0
- package/dist/cmd/build/ast.test.js +389 -0
- package/dist/cmd/build/ast.test.js.map +1 -0
- package/dist/cmd/build/bundler.js +304 -0
- package/dist/cmd/build/bundler.js.map +1 -0
- package/dist/cmd/build/file.js +10 -0
- package/dist/cmd/build/file.js.map +1 -0
- package/dist/cmd/build/fix-duplicate-exports.js +167 -0
- package/dist/cmd/build/fix-duplicate-exports.js.map +1 -0
- package/dist/cmd/build/fix-duplicate-exports.test.js +300 -0
- package/dist/cmd/build/fix-duplicate-exports.test.js.map +1 -0
- package/dist/cmd/build/index.d.ts.map +1 -1
- package/dist/cmd/build/index.js +79 -0
- package/dist/cmd/build/index.js.map +1 -0
- package/dist/cmd/build/patch/_util.js +42 -0
- package/dist/cmd/build/patch/_util.js.map +1 -0
- package/dist/cmd/build/patch/aisdk.js +65 -0
- package/dist/cmd/build/patch/aisdk.js.map +1 -0
- package/dist/cmd/build/patch/index.js +97 -0
- package/dist/cmd/build/patch/index.js.map +1 -0
- package/dist/cmd/build/patch/llm.js +18 -0
- package/dist/cmd/build/patch/llm.js.map +1 -0
- package/dist/cmd/build/plugin.d.ts.map +1 -1
- package/dist/cmd/build/plugin.js +556 -0
- package/dist/cmd/build/plugin.js.map +1 -0
- package/dist/cmd/cloud/agents/index.js +133 -0
- package/dist/cmd/cloud/agents/index.js.map +1 -0
- package/dist/cmd/cloud/deploy.js +341 -0
- package/dist/cmd/cloud/deploy.js.map +1 -0
- package/dist/cmd/cloud/deployment/index.js +20 -0
- package/dist/cmd/cloud/deployment/index.js.map +1 -0
- package/dist/cmd/cloud/deployment/list.js +89 -0
- package/dist/cmd/cloud/deployment/list.js.map +1 -0
- package/dist/cmd/cloud/deployment/remove.js +60 -0
- package/dist/cmd/cloud/deployment/remove.js.map +1 -0
- package/dist/cmd/cloud/deployment/rollback.js +80 -0
- package/dist/cmd/cloud/deployment/rollback.js.map +1 -0
- package/dist/cmd/cloud/deployment/show.js +106 -0
- package/dist/cmd/cloud/deployment/show.js.map +1 -0
- package/dist/cmd/cloud/deployment/undeploy.js +45 -0
- package/dist/cmd/cloud/deployment/undeploy.js.map +1 -0
- package/dist/cmd/cloud/deployment/utils.js +10 -0
- package/dist/cmd/cloud/deployment/utils.js.map +1 -0
- package/dist/cmd/cloud/domain.js +77 -0
- package/dist/cmd/cloud/domain.js.map +1 -0
- package/dist/cmd/cloud/env/delete.js +50 -0
- package/dist/cmd/cloud/env/delete.js.map +1 -0
- package/dist/cmd/cloud/env/get.js +65 -0
- package/dist/cmd/cloud/env/get.js.map +1 -0
- package/dist/cmd/cloud/env/import.js +113 -0
- package/dist/cmd/cloud/env/import.js.map +1 -0
- package/dist/cmd/cloud/env/index.js +24 -0
- package/dist/cmd/cloud/env/index.js.map +1 -0
- package/dist/cmd/cloud/env/list.js +58 -0
- package/dist/cmd/cloud/env/list.js.map +1 -0
- package/dist/cmd/cloud/env/pull.js +81 -0
- package/dist/cmd/cloud/env/pull.js.map +1 -0
- package/dist/cmd/cloud/env/push.js +61 -0
- package/dist/cmd/cloud/env/push.js.map +1 -0
- package/dist/cmd/cloud/env/set.js +73 -0
- package/dist/cmd/cloud/env/set.js.map +1 -0
- package/dist/cmd/cloud/index.js +31 -0
- package/dist/cmd/cloud/index.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/create-namespace.js +41 -0
- package/dist/cmd/cloud/keyvalue/create-namespace.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/delete-namespace.js +64 -0
- package/dist/cmd/cloud/keyvalue/delete-namespace.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/delete.js +47 -0
- package/dist/cmd/cloud/keyvalue/delete.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/get.js +65 -0
- package/dist/cmd/cloud/keyvalue/get.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/index.js +32 -0
- package/dist/cmd/cloud/keyvalue/index.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/keys.js +50 -0
- package/dist/cmd/cloud/keyvalue/keys.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/list-namespaces.js +37 -0
- package/dist/cmd/cloud/keyvalue/list-namespaces.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/repl.js +277 -0
- package/dist/cmd/cloud/keyvalue/repl.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/search.js +72 -0
- package/dist/cmd/cloud/keyvalue/search.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/set.js +59 -0
- package/dist/cmd/cloud/keyvalue/set.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/stats.js +82 -0
- package/dist/cmd/cloud/keyvalue/stats.js.map +1 -0
- package/dist/cmd/cloud/keyvalue/util.js +19 -0
- package/dist/cmd/cloud/keyvalue/util.js.map +1 -0
- package/dist/cmd/cloud/objectstore/delete-bucket.js +66 -0
- package/dist/cmd/cloud/objectstore/delete-bucket.js.map +1 -0
- package/dist/cmd/cloud/objectstore/delete.js +56 -0
- package/dist/cmd/cloud/objectstore/delete.js.map +1 -0
- package/dist/cmd/cloud/objectstore/get.js +64 -0
- package/dist/cmd/cloud/objectstore/get.js.map +1 -0
- package/dist/cmd/cloud/objectstore/index.js +28 -0
- package/dist/cmd/cloud/objectstore/index.js.map +1 -0
- package/dist/cmd/cloud/objectstore/list-buckets.js +37 -0
- package/dist/cmd/cloud/objectstore/list-buckets.js.map +1 -0
- package/dist/cmd/cloud/objectstore/list-keys.js +52 -0
- package/dist/cmd/cloud/objectstore/list-keys.js.map +1 -0
- package/dist/cmd/cloud/objectstore/put.js +57 -0
- package/dist/cmd/cloud/objectstore/put.js.map +1 -0
- package/dist/cmd/cloud/objectstore/repl.js +219 -0
- package/dist/cmd/cloud/objectstore/repl.js.map +1 -0
- package/dist/cmd/cloud/objectstore/url.js +55 -0
- package/dist/cmd/cloud/objectstore/url.js.map +1 -0
- package/dist/cmd/cloud/objectstore/util.js +18 -0
- package/dist/cmd/cloud/objectstore/util.js.map +1 -0
- package/dist/cmd/cloud/resource/add.js +70 -0
- package/dist/cmd/cloud/resource/add.js.map +1 -0
- package/dist/cmd/cloud/resource/delete.js +126 -0
- package/dist/cmd/cloud/resource/delete.js.map +1 -0
- package/dist/cmd/cloud/resource/index.js +12 -0
- package/dist/cmd/cloud/resource/index.js.map +1 -0
- package/dist/cmd/cloud/resource/list.js +89 -0
- package/dist/cmd/cloud/resource/list.js.map +1 -0
- package/dist/cmd/cloud/scp/download.js +72 -0
- package/dist/cmd/cloud/scp/download.js.map +1 -0
- package/dist/cmd/cloud/scp/index.js +10 -0
- package/dist/cmd/cloud/scp/index.js.map +1 -0
- package/dist/cmd/cloud/scp/upload.js +75 -0
- package/dist/cmd/cloud/scp/upload.js.map +1 -0
- package/dist/cmd/cloud/secret/delete.js +50 -0
- package/dist/cmd/cloud/secret/delete.js.map +1 -0
- package/dist/cmd/cloud/secret/get.js +69 -0
- package/dist/cmd/cloud/secret/get.js.map +1 -0
- package/dist/cmd/cloud/secret/import.js +88 -0
- package/dist/cmd/cloud/secret/import.js.map +1 -0
- package/dist/cmd/cloud/secret/index.js +24 -0
- package/dist/cmd/cloud/secret/index.js.map +1 -0
- package/dist/cmd/cloud/secret/list.js +58 -0
- package/dist/cmd/cloud/secret/list.js.map +1 -0
- package/dist/cmd/cloud/secret/pull.js +81 -0
- package/dist/cmd/cloud/secret/pull.js.map +1 -0
- package/dist/cmd/cloud/secret/push.js +61 -0
- package/dist/cmd/cloud/secret/push.js.map +1 -0
- package/dist/cmd/cloud/secret/set.js +57 -0
- package/dist/cmd/cloud/secret/set.js.map +1 -0
- package/dist/cmd/cloud/session/get.d.ts.map +1 -1
- package/dist/cmd/cloud/session/get.js +155 -0
- package/dist/cmd/cloud/session/get.js.map +1 -0
- package/dist/cmd/cloud/session/index.js +11 -0
- package/dist/cmd/cloud/session/index.js.map +1 -0
- package/dist/cmd/cloud/session/list.js +132 -0
- package/dist/cmd/cloud/session/list.js.map +1 -0
- package/dist/cmd/cloud/session/logs.js +56 -0
- package/dist/cmd/cloud/session/logs.js.map +1 -0
- package/dist/cmd/cloud/ssh.js +67 -0
- package/dist/cmd/cloud/ssh.js.map +1 -0
- package/dist/cmd/dev/agents.js +103 -0
- package/dist/cmd/dev/agents.js.map +1 -0
- package/dist/cmd/dev/api.js +26 -0
- package/dist/cmd/dev/api.js.map +1 -0
- package/dist/cmd/dev/download.js +77 -0
- package/dist/cmd/dev/download.js.map +1 -0
- package/dist/cmd/dev/index.js +745 -0
- package/dist/cmd/dev/index.js.map +1 -0
- package/dist/cmd/dev/sync.js +229 -0
- package/dist/cmd/dev/sync.js.map +1 -0
- package/dist/cmd/dev/templates.js +75 -0
- package/dist/cmd/dev/templates.js.map +1 -0
- package/dist/cmd/index.js +49 -0
- package/dist/cmd/index.js.map +1 -0
- package/dist/cmd/profile/create.js +89 -0
- package/dist/cmd/profile/create.js.map +1 -0
- package/dist/cmd/profile/delete.js +63 -0
- package/dist/cmd/profile/delete.js.map +1 -0
- package/dist/cmd/profile/index.js +14 -0
- package/dist/cmd/profile/index.js.map +1 -0
- package/dist/cmd/profile/list.js +28 -0
- package/dist/cmd/profile/list.js.map +1 -0
- package/dist/cmd/profile/show.js +68 -0
- package/dist/cmd/profile/show.js.map +1 -0
- package/dist/cmd/profile/use.js +37 -0
- package/dist/cmd/profile/use.js.map +1 -0
- package/dist/cmd/project/create.js +92 -0
- package/dist/cmd/project/create.js.map +1 -0
- package/dist/cmd/project/delete.js +117 -0
- package/dist/cmd/project/delete.js.map +1 -0
- package/dist/cmd/project/download.js +217 -0
- package/dist/cmd/project/download.js.map +1 -0
- package/dist/cmd/project/index.js +12 -0
- package/dist/cmd/project/index.js.map +1 -0
- package/dist/cmd/project/list.js +51 -0
- package/dist/cmd/project/list.js.map +1 -0
- package/dist/cmd/project/show.js +54 -0
- package/dist/cmd/project/show.js.map +1 -0
- package/dist/cmd/project/template-flow.js +315 -0
- package/dist/cmd/project/template-flow.js.map +1 -0
- package/dist/cmd/project/templates.js +31 -0
- package/dist/cmd/project/templates.js.map +1 -0
- package/dist/cmd/repl/index.js +444 -0
- package/dist/cmd/repl/index.js.map +1 -0
- package/dist/cmd/version/index.js +29 -0
- package/dist/cmd/version/index.js.map +1 -0
- package/dist/command-prefix.js +37 -0
- package/dist/command-prefix.js.map +1 -0
- package/dist/config.js +536 -0
- package/dist/config.js.map +1 -0
- package/dist/crypto/box.js +382 -0
- package/dist/crypto/box.js.map +1 -0
- package/dist/crypto/box.test.js +317 -0
- package/dist/crypto/box.test.js.map +1 -0
- package/dist/download.js +64 -0
- package/dist/download.js.map +1 -0
- package/dist/env-util.js +219 -0
- package/dist/env-util.js.map +1 -0
- package/dist/env-util.test.js +146 -0
- package/dist/env-util.test.js.map +1 -0
- package/dist/errors.js +177 -0
- package/dist/errors.js.map +1 -0
- package/dist/explain.js +90 -0
- package/dist/explain.js.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/json.js +29 -0
- package/dist/json.js.map +1 -0
- package/dist/legacy-check.js +104 -0
- package/dist/legacy-check.js.map +1 -0
- package/dist/output.js +207 -0
- package/dist/output.js.map +1 -0
- package/dist/repl.js +1176 -0
- package/dist/repl.js.map +1 -0
- package/dist/runtime.js +19 -0
- package/dist/runtime.js.map +1 -0
- package/dist/schema-generator.js +289 -0
- package/dist/schema-generator.js.map +1 -0
- package/dist/schema-parser.js +145 -0
- package/dist/schema-parser.js.map +1 -0
- package/dist/sound.js +44 -0
- package/dist/sound.js.map +1 -0
- package/dist/steps.js +293 -0
- package/dist/steps.js.map +1 -0
- package/dist/terminal.js +130 -0
- package/dist/terminal.js.map +1 -0
- package/dist/tui.js +1124 -0
- package/dist/tui.js.map +1 -0
- package/dist/types.js +163 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/detectSubagent.js +25 -0
- package/dist/utils/detectSubagent.js.map +1 -0
- package/dist/utils/format.js +21 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/zip.js +33 -0
- package/dist/utils/zip.js.map +1 -0
- package/dist/version.js +24 -0
- package/dist/version.js.map +1 -0
- package/package.json +6 -6
- package/src/banner.ts +1 -1
- package/src/cmd/build/index.ts +15 -21
- package/src/cmd/build/plugin.ts +2 -1
- package/src/cmd/cloud/session/get.ts +20 -14
- package/src/cmd/cloud/session/list.ts +1 -1
package/dist/config.js
ADDED
|
@@ -0,0 +1,536 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { BuildMetadataSchema, getServiceUrls, APIClient as ServerAPIClient, } from '@agentuity/server';
|
|
4
|
+
import { YAML } from 'bun';
|
|
5
|
+
import { join, extname, basename, resolve, normalize } from 'node:path';
|
|
6
|
+
import { homedir } from 'node:os';
|
|
7
|
+
import { mkdir, readdir, readFile, writeFile, chmod } from 'node:fs/promises';
|
|
8
|
+
import JSON5 from 'json5';
|
|
9
|
+
import { ConfigSchema, ProjectSchema } from './types';
|
|
10
|
+
import * as tui from './tui';
|
|
11
|
+
export const defaultProfileName = 'production';
|
|
12
|
+
export function getDefaultConfigDir() {
|
|
13
|
+
return join(homedir(), '.config', 'agentuity');
|
|
14
|
+
}
|
|
15
|
+
export function getDefaultConfigPath() {
|
|
16
|
+
return join(getDefaultConfigDir(), defaultProfileName + '.yaml');
|
|
17
|
+
}
|
|
18
|
+
export function getProfilePath() {
|
|
19
|
+
return join(getDefaultConfigDir(), 'profile');
|
|
20
|
+
}
|
|
21
|
+
export async function ensureConfigDir() {
|
|
22
|
+
const dir = getDefaultConfigDir();
|
|
23
|
+
try {
|
|
24
|
+
await mkdir(dir, { recursive: true, mode: 0o700 });
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// Ignore if already exists
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export async function saveProfile(path) {
|
|
31
|
+
await ensureConfigDir();
|
|
32
|
+
await writeFile(getProfilePath(), path, { mode: 0o600 });
|
|
33
|
+
}
|
|
34
|
+
export async function getProfile() {
|
|
35
|
+
const profilePath = getProfilePath();
|
|
36
|
+
const defaultConfigPath = getDefaultConfigPath();
|
|
37
|
+
try {
|
|
38
|
+
const file = Bun.file(profilePath);
|
|
39
|
+
if (await file.exists()) {
|
|
40
|
+
const content = await file.text();
|
|
41
|
+
const savedPath = content.trim();
|
|
42
|
+
const savedFile = Bun.file(savedPath);
|
|
43
|
+
if (await savedFile.exists()) {
|
|
44
|
+
return savedPath;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// Fall back to default
|
|
50
|
+
}
|
|
51
|
+
return defaultConfigPath;
|
|
52
|
+
}
|
|
53
|
+
export async function fetchProfiles() {
|
|
54
|
+
const configDir = getDefaultConfigDir();
|
|
55
|
+
const currentConfigPath = await getProfile();
|
|
56
|
+
const profiles = [];
|
|
57
|
+
const nameRegex = /\bname:\s+["']?([\w-_]+)["']?/;
|
|
58
|
+
try {
|
|
59
|
+
const entries = await readdir(configDir);
|
|
60
|
+
for (const entry of entries) {
|
|
61
|
+
if (extname(entry) === '.yaml' && !entry.includes('templates/')) {
|
|
62
|
+
const filePath = join(configDir, entry);
|
|
63
|
+
try {
|
|
64
|
+
const content = await readFile(filePath, 'utf-8');
|
|
65
|
+
const match = nameRegex.exec(content);
|
|
66
|
+
if (match?.[1]) {
|
|
67
|
+
profiles.push({
|
|
68
|
+
name: match[1],
|
|
69
|
+
filename: filePath,
|
|
70
|
+
selected: filePath === currentConfigPath,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Skip files we can't read
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// Directory doesn't exist or can't be read
|
|
82
|
+
}
|
|
83
|
+
return profiles;
|
|
84
|
+
}
|
|
85
|
+
function expandTilde(path) {
|
|
86
|
+
if (path.startsWith('~/')) {
|
|
87
|
+
return join(homedir(), path.slice(2));
|
|
88
|
+
}
|
|
89
|
+
return path;
|
|
90
|
+
}
|
|
91
|
+
let cachedConfig;
|
|
92
|
+
export async function loadConfig(customPath) {
|
|
93
|
+
if (cachedConfig !== undefined) {
|
|
94
|
+
return cachedConfig;
|
|
95
|
+
}
|
|
96
|
+
const configPath = customPath ? expandTilde(customPath) : await getProfile();
|
|
97
|
+
try {
|
|
98
|
+
const file = Bun.file(configPath);
|
|
99
|
+
const exists = await file.exists();
|
|
100
|
+
let result;
|
|
101
|
+
if (exists) {
|
|
102
|
+
const content = await file.text();
|
|
103
|
+
const config = YAML.parse(content);
|
|
104
|
+
// check to see if this is a legacy config file that might not have the required name
|
|
105
|
+
// and in this case we can just use the filename
|
|
106
|
+
const _config = config;
|
|
107
|
+
if (!_config.name) {
|
|
108
|
+
_config.name = basename(configPath).replace(extname(configPath), '');
|
|
109
|
+
}
|
|
110
|
+
result = ConfigSchema.safeParse(config);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
result = ConfigSchema.safeParse({ name: defaultProfileName });
|
|
114
|
+
}
|
|
115
|
+
if (!result.success) {
|
|
116
|
+
tui.error(`Invalid config in ${configPath}:`);
|
|
117
|
+
for (const issue of result.error.issues) {
|
|
118
|
+
const path = issue.path.length > 0 ? issue.path.join('.') : 'root';
|
|
119
|
+
tui.bullet(`${path}: ${issue.message}`);
|
|
120
|
+
}
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
// allow environment variables to override
|
|
124
|
+
const overrides = result.data.overrides ?? ConfigSchema.shape.overrides.parse({});
|
|
125
|
+
if (overrides) {
|
|
126
|
+
if (process.env.AGENTUITY_API_URL) {
|
|
127
|
+
overrides.api_url = process.env.AGENTUITY_API_URL;
|
|
128
|
+
}
|
|
129
|
+
if (process.env.AGENTUITY_APP_URL) {
|
|
130
|
+
overrides.app_url = process.env.AGENTUITY_APP_URL;
|
|
131
|
+
}
|
|
132
|
+
if (process.env.AGENTUITY_CATALYST_URL) {
|
|
133
|
+
overrides.catalyst_url = process.env.AGENTUITY_CATALYST_URL;
|
|
134
|
+
}
|
|
135
|
+
if (process.env.AGENTUITY_TRANSPORT_URL) {
|
|
136
|
+
overrides.transport_url = process.env.AGENTUITY_TRANSPORT_URL;
|
|
137
|
+
}
|
|
138
|
+
if (process.env.AGENTUITY_KEYVALUE_URL) {
|
|
139
|
+
overrides.kv_url = process.env.AGENTUITY_KEYVALUE_URL;
|
|
140
|
+
}
|
|
141
|
+
if (process.env.AGENTUITY_OBJECTSTORE_URL) {
|
|
142
|
+
overrides.object_url = process.env.AGENTUITY_OBJECTSTORE_URL;
|
|
143
|
+
}
|
|
144
|
+
if (process.env.AGENTUITY_VECTOR_URL) {
|
|
145
|
+
overrides.vector_url = process.env.AGENTUITY_VECTOR_URL;
|
|
146
|
+
}
|
|
147
|
+
if (process.env.AGENTUITY_STREAM_URL) {
|
|
148
|
+
overrides.stream_url = process.env.AGENTUITY_STREAM_URL;
|
|
149
|
+
}
|
|
150
|
+
result.data.overrides = overrides;
|
|
151
|
+
}
|
|
152
|
+
cachedConfig = result.data;
|
|
153
|
+
return result.data;
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
if (error instanceof Error) {
|
|
157
|
+
console.error(`Error loading config from ${configPath}:`, error.message);
|
|
158
|
+
}
|
|
159
|
+
cachedConfig = null;
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
function formatYAML(obj, indent = 0) {
|
|
164
|
+
const spaces = ' '.repeat(indent);
|
|
165
|
+
const lines = [];
|
|
166
|
+
if (typeof obj !== 'object' || obj === null) {
|
|
167
|
+
return String(obj);
|
|
168
|
+
}
|
|
169
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
170
|
+
if (value === null || value === undefined) {
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
if (typeof value === 'object' && !Array.isArray(value)) {
|
|
174
|
+
lines.push(`${spaces}${key}:`);
|
|
175
|
+
lines.push(formatYAML(value, indent + 1));
|
|
176
|
+
}
|
|
177
|
+
else if (Array.isArray(value)) {
|
|
178
|
+
lines.push(`${spaces}${key}:`);
|
|
179
|
+
for (const item of value) {
|
|
180
|
+
if (typeof item === 'object') {
|
|
181
|
+
lines.push(`${spaces} -`);
|
|
182
|
+
lines.push(formatYAML(item, indent + 2));
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
lines.push(`${spaces} - ${item}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
else if (typeof value === 'string') {
|
|
190
|
+
if (value === '') {
|
|
191
|
+
lines.push(`${spaces}${key}: ""`);
|
|
192
|
+
}
|
|
193
|
+
else if (value.includes(':') || value.includes('#') || value.includes(' ')) {
|
|
194
|
+
lines.push(`${spaces}${key}: "${value}"`);
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
lines.push(`${spaces}${key}: ${value}`);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
lines.push(`${spaces}${key}: ${value}`);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return lines.join('\n');
|
|
205
|
+
}
|
|
206
|
+
export async function saveConfig(config, customPath) {
|
|
207
|
+
const configPath = customPath || (await getProfile());
|
|
208
|
+
await ensureConfigDir();
|
|
209
|
+
const content = formatYAML(config);
|
|
210
|
+
await writeFile(configPath, content + '\n', { mode: 0o600 });
|
|
211
|
+
// Ensure existing files get correct permissions on upgrade
|
|
212
|
+
await chmod(configPath, 0o600);
|
|
213
|
+
cachedConfig = config;
|
|
214
|
+
}
|
|
215
|
+
async function getOrInitConfig() {
|
|
216
|
+
const config = await loadConfig();
|
|
217
|
+
if (config) {
|
|
218
|
+
return config;
|
|
219
|
+
}
|
|
220
|
+
const profilePath = await getProfile();
|
|
221
|
+
const name = basename(profilePath, '.yaml');
|
|
222
|
+
return { name };
|
|
223
|
+
}
|
|
224
|
+
export async function saveAuth(auth) {
|
|
225
|
+
const config = await getOrInitConfig();
|
|
226
|
+
config.auth = {
|
|
227
|
+
api_key: auth.apiKey,
|
|
228
|
+
user_id: auth.userId,
|
|
229
|
+
expires: auth.expires.getTime(),
|
|
230
|
+
};
|
|
231
|
+
config.preferences = config.preferences || {};
|
|
232
|
+
config.preferences.orgId = '';
|
|
233
|
+
await saveConfig(config);
|
|
234
|
+
}
|
|
235
|
+
export async function clearAuth() {
|
|
236
|
+
const config = await getOrInitConfig();
|
|
237
|
+
config.auth = {
|
|
238
|
+
api_key: '',
|
|
239
|
+
user_id: '',
|
|
240
|
+
expires: Date.now(),
|
|
241
|
+
};
|
|
242
|
+
config.preferences = config.preferences || {};
|
|
243
|
+
config.preferences.orgId = '';
|
|
244
|
+
await saveConfig(config);
|
|
245
|
+
}
|
|
246
|
+
export async function saveProjectDir(projectDir) {
|
|
247
|
+
const config = await getOrInitConfig();
|
|
248
|
+
config.preferences = config.preferences || {};
|
|
249
|
+
const normalized = resolve(normalize(projectDir));
|
|
250
|
+
config.preferences.project_dir = normalized;
|
|
251
|
+
await saveConfig(config);
|
|
252
|
+
}
|
|
253
|
+
export async function saveOrgId(orgId) {
|
|
254
|
+
const config = await getOrInitConfig();
|
|
255
|
+
config.preferences = config.preferences || {};
|
|
256
|
+
config.preferences.orgId = orgId;
|
|
257
|
+
await saveConfig(config);
|
|
258
|
+
}
|
|
259
|
+
export async function getAuth() {
|
|
260
|
+
// allow automated login from environment variables if present
|
|
261
|
+
if (process.env.AGENTUITY_CLI_API_KEY && process.env.AGENTUITY_USER_ID) {
|
|
262
|
+
return {
|
|
263
|
+
apiKey: process.env.AGENTUITY_CLI_API_KEY,
|
|
264
|
+
userId: process.env.AGENTUITY_USER_ID,
|
|
265
|
+
expires: new Date(Date.now() + 30 * 60_000),
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
const config = await loadConfig();
|
|
269
|
+
if (!config)
|
|
270
|
+
return null;
|
|
271
|
+
const auth = config.auth;
|
|
272
|
+
if (!auth || !auth.api_key || !auth.user_id) {
|
|
273
|
+
return null;
|
|
274
|
+
}
|
|
275
|
+
return {
|
|
276
|
+
apiKey: auth.api_key,
|
|
277
|
+
userId: auth.user_id,
|
|
278
|
+
expires: new Date(auth.expires || 0),
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
function getSchemaDescription(schema) {
|
|
282
|
+
return schema.description;
|
|
283
|
+
}
|
|
284
|
+
function getPlaceholderValue(schema) {
|
|
285
|
+
// Unwrap optional to get to the inner type
|
|
286
|
+
let unwrapped = schema;
|
|
287
|
+
if (schema instanceof z.ZodOptional) {
|
|
288
|
+
unwrapped = schema._def.innerType;
|
|
289
|
+
}
|
|
290
|
+
// Check the type using constructor name
|
|
291
|
+
const typeName = unwrapped.constructor.name;
|
|
292
|
+
switch (typeName) {
|
|
293
|
+
case 'ZodString':
|
|
294
|
+
return '""';
|
|
295
|
+
case 'ZodNumber':
|
|
296
|
+
return '0';
|
|
297
|
+
case 'ZodBoolean':
|
|
298
|
+
return 'false';
|
|
299
|
+
default:
|
|
300
|
+
return '""';
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
function extractDefaultValue(schema) {
|
|
304
|
+
let unwrapped = schema;
|
|
305
|
+
// Unwrap optional layers
|
|
306
|
+
while (unwrapped instanceof z.ZodOptional) {
|
|
307
|
+
unwrapped = unwrapped._def.innerType;
|
|
308
|
+
}
|
|
309
|
+
// Check if it's a ZodDefault (has defaultValue in def or _def)
|
|
310
|
+
const checkDef = (obj) => {
|
|
311
|
+
if (typeof obj !== 'object' || obj === null)
|
|
312
|
+
return undefined;
|
|
313
|
+
const anyObj = obj;
|
|
314
|
+
// Check `def` property first (used in some Zod versions)
|
|
315
|
+
if ('def' in anyObj && typeof anyObj.def === 'object' && anyObj.def !== null) {
|
|
316
|
+
const def = anyObj.def;
|
|
317
|
+
if (def.type === 'default' && 'defaultValue' in def) {
|
|
318
|
+
const val = def.defaultValue;
|
|
319
|
+
return typeof val === 'function' ? val() : val;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
// Check `_def` property (standard Zod property)
|
|
323
|
+
if ('_def' in anyObj && typeof anyObj._def === 'object' && anyObj._def !== null) {
|
|
324
|
+
const def = anyObj._def;
|
|
325
|
+
if (def.type === 'default' && 'defaultValue' in def) {
|
|
326
|
+
const val = def.defaultValue;
|
|
327
|
+
return typeof val === 'function' ? val() : val;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return undefined;
|
|
331
|
+
};
|
|
332
|
+
return checkDef(unwrapped);
|
|
333
|
+
}
|
|
334
|
+
function getValueWithDefaults(schema, providedValue) {
|
|
335
|
+
// If value is explicitly provided, use it
|
|
336
|
+
if (providedValue !== undefined) {
|
|
337
|
+
return providedValue;
|
|
338
|
+
}
|
|
339
|
+
// Try to extract default value
|
|
340
|
+
const defaultValue = extractDefaultValue(schema);
|
|
341
|
+
if (defaultValue !== undefined) {
|
|
342
|
+
return defaultValue;
|
|
343
|
+
}
|
|
344
|
+
// For optional fields without defaults, check if it's an object
|
|
345
|
+
let unwrapped = schema;
|
|
346
|
+
if (schema instanceof z.ZodOptional) {
|
|
347
|
+
unwrapped = schema._def.innerType;
|
|
348
|
+
}
|
|
349
|
+
// If it's an object schema, recursively populate defaults
|
|
350
|
+
if (unwrapped instanceof z.ZodObject) {
|
|
351
|
+
const shape = unwrapped.shape;
|
|
352
|
+
const result = {};
|
|
353
|
+
let hasAnyDefaults = false;
|
|
354
|
+
for (const [key, fieldSchema] of Object.entries(shape)) {
|
|
355
|
+
const fieldValue = getValueWithDefaults(fieldSchema, undefined);
|
|
356
|
+
if (fieldValue !== undefined) {
|
|
357
|
+
result[key] = fieldValue;
|
|
358
|
+
hasAnyDefaults = true;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
return hasAnyDefaults ? result : undefined;
|
|
362
|
+
}
|
|
363
|
+
return undefined;
|
|
364
|
+
}
|
|
365
|
+
export function generateYAMLTemplate(name) {
|
|
366
|
+
const lines = [];
|
|
367
|
+
// Add name (required)
|
|
368
|
+
lines.push(`name: "${name}"`);
|
|
369
|
+
lines.push('');
|
|
370
|
+
// Get schema shape
|
|
371
|
+
const shape = ConfigSchema.shape;
|
|
372
|
+
// Only include user-configurable sections
|
|
373
|
+
// Skip: auth (managed by login), devmode (internal), preferences (managed by CLI)
|
|
374
|
+
const userConfigurableSections = ['overrides'];
|
|
375
|
+
// Process each top-level field
|
|
376
|
+
for (const [key, value] of Object.entries(shape)) {
|
|
377
|
+
if (key === 'name')
|
|
378
|
+
continue;
|
|
379
|
+
if (!userConfigurableSections.includes(key))
|
|
380
|
+
continue;
|
|
381
|
+
const schema = value;
|
|
382
|
+
// Unwrap optional to get to the inner schema
|
|
383
|
+
let innerSchema = schema;
|
|
384
|
+
if (schema instanceof z.ZodOptional) {
|
|
385
|
+
innerSchema = schema._def.innerType;
|
|
386
|
+
}
|
|
387
|
+
const description = getSchemaDescription(schema);
|
|
388
|
+
// Add section comment
|
|
389
|
+
if (description) {
|
|
390
|
+
lines.push(`# ${description}`);
|
|
391
|
+
}
|
|
392
|
+
// For object schemas, expand their properties
|
|
393
|
+
if (innerSchema instanceof z.ZodObject) {
|
|
394
|
+
const innerShape = innerSchema.shape;
|
|
395
|
+
lines.push(`# ${key}:`);
|
|
396
|
+
for (const [subKey, subValue] of Object.entries(innerShape)) {
|
|
397
|
+
const subSchema = subValue;
|
|
398
|
+
const subDesc = getSchemaDescription(subSchema);
|
|
399
|
+
const placeholder = getPlaceholderValue(subSchema);
|
|
400
|
+
if (subDesc) {
|
|
401
|
+
lines.push(`# ${subKey}: ${placeholder} # ${subDesc}`);
|
|
402
|
+
}
|
|
403
|
+
else {
|
|
404
|
+
lines.push(`# ${subKey}: ${placeholder}`);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
else {
|
|
409
|
+
const placeholder = getPlaceholderValue(schema);
|
|
410
|
+
lines.push(`# ${key}: ${placeholder}`);
|
|
411
|
+
}
|
|
412
|
+
lines.push('');
|
|
413
|
+
}
|
|
414
|
+
return lines.join('\n');
|
|
415
|
+
}
|
|
416
|
+
class ProjectConfigNotFoundExpection extends Error {
|
|
417
|
+
name;
|
|
418
|
+
constructor() {
|
|
419
|
+
super('project not found');
|
|
420
|
+
this.name = 'ProjectConfigNotFoundExpection';
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
function generateJSON5WithComments(schema, data) {
|
|
424
|
+
const lines = ['{'];
|
|
425
|
+
const shape = schema.shape;
|
|
426
|
+
const keys = Object.keys(shape);
|
|
427
|
+
for (let i = 0; i < keys.length; i++) {
|
|
428
|
+
const key = keys[i];
|
|
429
|
+
const fieldSchema = shape[key];
|
|
430
|
+
const description = getSchemaDescription(fieldSchema);
|
|
431
|
+
const providedValue = data[key];
|
|
432
|
+
if (description) {
|
|
433
|
+
lines.push(` // ${description}`);
|
|
434
|
+
}
|
|
435
|
+
// Get value with defaults applied
|
|
436
|
+
const valueWithDefaults = getValueWithDefaults(fieldSchema, providedValue);
|
|
437
|
+
const safeValue = valueWithDefaults === undefined ? null : valueWithDefaults;
|
|
438
|
+
const jsonValue = JSON.stringify(safeValue, null, 2).replace(/\n/g, '\n ');
|
|
439
|
+
const comma = i < keys.length - 1 ? ',' : '';
|
|
440
|
+
lines.push(` ${JSON.stringify(key)}: ${jsonValue}${comma}`);
|
|
441
|
+
}
|
|
442
|
+
lines.push('}');
|
|
443
|
+
return lines.join('\n');
|
|
444
|
+
}
|
|
445
|
+
export async function loadProjectConfig(dir, config) {
|
|
446
|
+
let configPath = join(dir, 'agentuity.json');
|
|
447
|
+
// Check for profile-specific override if config is provided
|
|
448
|
+
if (config?.name) {
|
|
449
|
+
const profileConfigPath = join(dir, `agentuity.${config.name}.json`);
|
|
450
|
+
if (await Bun.file(profileConfigPath).exists()) {
|
|
451
|
+
configPath = profileConfigPath;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
const file = Bun.file(configPath);
|
|
455
|
+
if (!(await file.exists())) {
|
|
456
|
+
// TODO: check to see if a valid project that was created unauthenticated
|
|
457
|
+
// and then if so:
|
|
458
|
+
// 1. if authentication, offer to import the project
|
|
459
|
+
// 2. tell them that they need to login to use the command and import the project
|
|
460
|
+
throw new ProjectConfigNotFoundExpection();
|
|
461
|
+
}
|
|
462
|
+
const text = await file.text();
|
|
463
|
+
const parsedConfig = JSON5.parse(text);
|
|
464
|
+
const result = ProjectSchema.safeParse(parsedConfig);
|
|
465
|
+
if (!result.success) {
|
|
466
|
+
tui.error(`Invalid project config at ${configPath}:`);
|
|
467
|
+
for (const issue of result.error.issues) {
|
|
468
|
+
const path = issue.path.length > 0 ? issue.path.join('.') : 'root';
|
|
469
|
+
tui.bullet(`${path}: ${issue.message}`);
|
|
470
|
+
}
|
|
471
|
+
process.exit(1);
|
|
472
|
+
}
|
|
473
|
+
return result.data;
|
|
474
|
+
}
|
|
475
|
+
export async function createProjectConfig(dir, config) {
|
|
476
|
+
const { sdkKey, ...sanitizedConfig } = config;
|
|
477
|
+
const configPath = join(dir, 'agentuity.json');
|
|
478
|
+
const json5Content = generateJSON5WithComments(ProjectSchema, sanitizedConfig);
|
|
479
|
+
await Bun.write(configPath, json5Content + '\n');
|
|
480
|
+
const envPath = join(dir, '.env');
|
|
481
|
+
const comment = '# AGENTUITY_SDK_KEY is a sensitive value and should not be committed to version control.';
|
|
482
|
+
const content = `${comment}\nAGENTUITY_SDK_KEY=${sdkKey}\n`;
|
|
483
|
+
await Bun.write(envPath, content);
|
|
484
|
+
await chmod(envPath, 0o600);
|
|
485
|
+
}
|
|
486
|
+
export async function loadBuildMetadata(dir) {
|
|
487
|
+
const filename = join(dir, 'agentuity.metadata.json');
|
|
488
|
+
const file = Bun.file(filename);
|
|
489
|
+
if (!(await file.exists())) {
|
|
490
|
+
throw new Error(`couldn't find ${filename}`);
|
|
491
|
+
}
|
|
492
|
+
const buffer = await file.text();
|
|
493
|
+
const config = JSON.parse(buffer);
|
|
494
|
+
const result = BuildMetadataSchema.safeParse(config);
|
|
495
|
+
if (!result.success) {
|
|
496
|
+
tui.error(`Invalid build metadata at ${filename}:`);
|
|
497
|
+
for (const issue of result.error.issues) {
|
|
498
|
+
const path = issue.path.length > 0 ? issue.path.join('.') : 'root';
|
|
499
|
+
tui.bullet(`${path}: ${issue.message}`);
|
|
500
|
+
}
|
|
501
|
+
process.exit(1);
|
|
502
|
+
}
|
|
503
|
+
return result.data;
|
|
504
|
+
}
|
|
505
|
+
export async function loadProjectSDKKey(projectDir) {
|
|
506
|
+
const files = process.env.NODE_ENV === 'production'
|
|
507
|
+
? ['.env', '.env.production']
|
|
508
|
+
: ['.env.development', '.env.local', '.env'];
|
|
509
|
+
const c = await getOrInitConfig();
|
|
510
|
+
if (c) {
|
|
511
|
+
files.unshift(`.env.${c.name}`);
|
|
512
|
+
}
|
|
513
|
+
for (const filename of files) {
|
|
514
|
+
const fn = join(projectDir, filename);
|
|
515
|
+
if (existsSync(fn)) {
|
|
516
|
+
const buf = await Bun.file(fn).text();
|
|
517
|
+
const tok = buf.split(/\n/);
|
|
518
|
+
for (const t of tok) {
|
|
519
|
+
if (t.charAt(0) !== '#' && t.startsWith('AGENTUITY_SDK_KEY=')) {
|
|
520
|
+
const i = t.indexOf('=');
|
|
521
|
+
return t.substring(i + 1).trim();
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
export function getCatalystAPIClient(config, logger, auth) {
|
|
528
|
+
const serviceUrls = getServiceUrls();
|
|
529
|
+
const catalystUrl = config?.overrides?.catalyst_url ?? serviceUrls.catalyst;
|
|
530
|
+
return new ServerAPIClient(catalystUrl, logger, auth.apiKey);
|
|
531
|
+
}
|
|
532
|
+
export function getIONHost(config) {
|
|
533
|
+
const url = new URL(config?.overrides?.ion_url ?? 'https://ion.agentuity.cloud');
|
|
534
|
+
return url.hostname;
|
|
535
|
+
}
|
|
536
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|