@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.
Files changed (299) hide show
  1. package/dist/api.js +68 -0
  2. package/dist/api.js.map +1 -0
  3. package/dist/auth.js +225 -0
  4. package/dist/auth.js.map +1 -0
  5. package/dist/banner.js +35 -0
  6. package/dist/banner.js.map +1 -0
  7. package/dist/cli-logger.js +72 -0
  8. package/dist/cli-logger.js.map +1 -0
  9. package/dist/cli.js +822 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/cmd/ai/capabilities/index.js +10 -0
  12. package/dist/cmd/ai/capabilities/index.js.map +1 -0
  13. package/dist/cmd/ai/capabilities/show.js +221 -0
  14. package/dist/cmd/ai/capabilities/show.js.map +1 -0
  15. package/dist/cmd/ai/index.js +11 -0
  16. package/dist/cmd/ai/index.js.map +1 -0
  17. package/dist/cmd/ai/prompt/index.js +10 -0
  18. package/dist/cmd/ai/prompt/index.js.map +1 -0
  19. package/dist/cmd/ai/prompt/llm.js +365 -0
  20. package/dist/cmd/ai/prompt/llm.js.map +1 -0
  21. package/dist/cmd/ai/schema/index.js +10 -0
  22. package/dist/cmd/ai/schema/index.js.map +1 -0
  23. package/dist/cmd/ai/schema/show.js +23 -0
  24. package/dist/cmd/ai/schema/show.js.map +1 -0
  25. package/dist/cmd/auth/api.js +85 -0
  26. package/dist/cmd/auth/api.js.map +1 -0
  27. package/dist/cmd/auth/index.js +13 -0
  28. package/dist/cmd/auth/index.js.map +1 -0
  29. package/dist/cmd/auth/login.js +84 -0
  30. package/dist/cmd/auth/login.js.map +1 -0
  31. package/dist/cmd/auth/logout.js +17 -0
  32. package/dist/cmd/auth/logout.js.map +1 -0
  33. package/dist/cmd/auth/signup.js +55 -0
  34. package/dist/cmd/auth/signup.js.map +1 -0
  35. package/dist/cmd/auth/ssh/add.js +239 -0
  36. package/dist/cmd/auth/ssh/add.js.map +1 -0
  37. package/dist/cmd/auth/ssh/api.js +53 -0
  38. package/dist/cmd/auth/ssh/api.js.map +1 -0
  39. package/dist/cmd/auth/ssh/delete.js +126 -0
  40. package/dist/cmd/auth/ssh/delete.js.map +1 -0
  41. package/dist/cmd/auth/ssh/index.js +11 -0
  42. package/dist/cmd/auth/ssh/index.js.map +1 -0
  43. package/dist/cmd/auth/ssh/list.js +70 -0
  44. package/dist/cmd/auth/ssh/list.js.map +1 -0
  45. package/dist/cmd/auth/whoami.js +68 -0
  46. package/dist/cmd/auth/whoami.js.map +1 -0
  47. package/dist/cmd/build/ast.js +608 -0
  48. package/dist/cmd/build/ast.js.map +1 -0
  49. package/dist/cmd/build/ast.test.js +389 -0
  50. package/dist/cmd/build/ast.test.js.map +1 -0
  51. package/dist/cmd/build/bundler.js +304 -0
  52. package/dist/cmd/build/bundler.js.map +1 -0
  53. package/dist/cmd/build/file.js +10 -0
  54. package/dist/cmd/build/file.js.map +1 -0
  55. package/dist/cmd/build/fix-duplicate-exports.js +167 -0
  56. package/dist/cmd/build/fix-duplicate-exports.js.map +1 -0
  57. package/dist/cmd/build/fix-duplicate-exports.test.js +300 -0
  58. package/dist/cmd/build/fix-duplicate-exports.test.js.map +1 -0
  59. package/dist/cmd/build/index.d.ts.map +1 -1
  60. package/dist/cmd/build/index.js +79 -0
  61. package/dist/cmd/build/index.js.map +1 -0
  62. package/dist/cmd/build/patch/_util.js +42 -0
  63. package/dist/cmd/build/patch/_util.js.map +1 -0
  64. package/dist/cmd/build/patch/aisdk.js +65 -0
  65. package/dist/cmd/build/patch/aisdk.js.map +1 -0
  66. package/dist/cmd/build/patch/index.js +97 -0
  67. package/dist/cmd/build/patch/index.js.map +1 -0
  68. package/dist/cmd/build/patch/llm.js +18 -0
  69. package/dist/cmd/build/patch/llm.js.map +1 -0
  70. package/dist/cmd/build/plugin.d.ts.map +1 -1
  71. package/dist/cmd/build/plugin.js +556 -0
  72. package/dist/cmd/build/plugin.js.map +1 -0
  73. package/dist/cmd/cloud/agents/index.js +133 -0
  74. package/dist/cmd/cloud/agents/index.js.map +1 -0
  75. package/dist/cmd/cloud/deploy.js +341 -0
  76. package/dist/cmd/cloud/deploy.js.map +1 -0
  77. package/dist/cmd/cloud/deployment/index.js +20 -0
  78. package/dist/cmd/cloud/deployment/index.js.map +1 -0
  79. package/dist/cmd/cloud/deployment/list.js +89 -0
  80. package/dist/cmd/cloud/deployment/list.js.map +1 -0
  81. package/dist/cmd/cloud/deployment/remove.js +60 -0
  82. package/dist/cmd/cloud/deployment/remove.js.map +1 -0
  83. package/dist/cmd/cloud/deployment/rollback.js +80 -0
  84. package/dist/cmd/cloud/deployment/rollback.js.map +1 -0
  85. package/dist/cmd/cloud/deployment/show.js +106 -0
  86. package/dist/cmd/cloud/deployment/show.js.map +1 -0
  87. package/dist/cmd/cloud/deployment/undeploy.js +45 -0
  88. package/dist/cmd/cloud/deployment/undeploy.js.map +1 -0
  89. package/dist/cmd/cloud/deployment/utils.js +10 -0
  90. package/dist/cmd/cloud/deployment/utils.js.map +1 -0
  91. package/dist/cmd/cloud/domain.js +77 -0
  92. package/dist/cmd/cloud/domain.js.map +1 -0
  93. package/dist/cmd/cloud/env/delete.js +50 -0
  94. package/dist/cmd/cloud/env/delete.js.map +1 -0
  95. package/dist/cmd/cloud/env/get.js +65 -0
  96. package/dist/cmd/cloud/env/get.js.map +1 -0
  97. package/dist/cmd/cloud/env/import.js +113 -0
  98. package/dist/cmd/cloud/env/import.js.map +1 -0
  99. package/dist/cmd/cloud/env/index.js +24 -0
  100. package/dist/cmd/cloud/env/index.js.map +1 -0
  101. package/dist/cmd/cloud/env/list.js +58 -0
  102. package/dist/cmd/cloud/env/list.js.map +1 -0
  103. package/dist/cmd/cloud/env/pull.js +81 -0
  104. package/dist/cmd/cloud/env/pull.js.map +1 -0
  105. package/dist/cmd/cloud/env/push.js +61 -0
  106. package/dist/cmd/cloud/env/push.js.map +1 -0
  107. package/dist/cmd/cloud/env/set.js +73 -0
  108. package/dist/cmd/cloud/env/set.js.map +1 -0
  109. package/dist/cmd/cloud/index.js +31 -0
  110. package/dist/cmd/cloud/index.js.map +1 -0
  111. package/dist/cmd/cloud/keyvalue/create-namespace.js +41 -0
  112. package/dist/cmd/cloud/keyvalue/create-namespace.js.map +1 -0
  113. package/dist/cmd/cloud/keyvalue/delete-namespace.js +64 -0
  114. package/dist/cmd/cloud/keyvalue/delete-namespace.js.map +1 -0
  115. package/dist/cmd/cloud/keyvalue/delete.js +47 -0
  116. package/dist/cmd/cloud/keyvalue/delete.js.map +1 -0
  117. package/dist/cmd/cloud/keyvalue/get.js +65 -0
  118. package/dist/cmd/cloud/keyvalue/get.js.map +1 -0
  119. package/dist/cmd/cloud/keyvalue/index.js +32 -0
  120. package/dist/cmd/cloud/keyvalue/index.js.map +1 -0
  121. package/dist/cmd/cloud/keyvalue/keys.js +50 -0
  122. package/dist/cmd/cloud/keyvalue/keys.js.map +1 -0
  123. package/dist/cmd/cloud/keyvalue/list-namespaces.js +37 -0
  124. package/dist/cmd/cloud/keyvalue/list-namespaces.js.map +1 -0
  125. package/dist/cmd/cloud/keyvalue/repl.js +277 -0
  126. package/dist/cmd/cloud/keyvalue/repl.js.map +1 -0
  127. package/dist/cmd/cloud/keyvalue/search.js +72 -0
  128. package/dist/cmd/cloud/keyvalue/search.js.map +1 -0
  129. package/dist/cmd/cloud/keyvalue/set.js +59 -0
  130. package/dist/cmd/cloud/keyvalue/set.js.map +1 -0
  131. package/dist/cmd/cloud/keyvalue/stats.js +82 -0
  132. package/dist/cmd/cloud/keyvalue/stats.js.map +1 -0
  133. package/dist/cmd/cloud/keyvalue/util.js +19 -0
  134. package/dist/cmd/cloud/keyvalue/util.js.map +1 -0
  135. package/dist/cmd/cloud/objectstore/delete-bucket.js +66 -0
  136. package/dist/cmd/cloud/objectstore/delete-bucket.js.map +1 -0
  137. package/dist/cmd/cloud/objectstore/delete.js +56 -0
  138. package/dist/cmd/cloud/objectstore/delete.js.map +1 -0
  139. package/dist/cmd/cloud/objectstore/get.js +64 -0
  140. package/dist/cmd/cloud/objectstore/get.js.map +1 -0
  141. package/dist/cmd/cloud/objectstore/index.js +28 -0
  142. package/dist/cmd/cloud/objectstore/index.js.map +1 -0
  143. package/dist/cmd/cloud/objectstore/list-buckets.js +37 -0
  144. package/dist/cmd/cloud/objectstore/list-buckets.js.map +1 -0
  145. package/dist/cmd/cloud/objectstore/list-keys.js +52 -0
  146. package/dist/cmd/cloud/objectstore/list-keys.js.map +1 -0
  147. package/dist/cmd/cloud/objectstore/put.js +57 -0
  148. package/dist/cmd/cloud/objectstore/put.js.map +1 -0
  149. package/dist/cmd/cloud/objectstore/repl.js +219 -0
  150. package/dist/cmd/cloud/objectstore/repl.js.map +1 -0
  151. package/dist/cmd/cloud/objectstore/url.js +55 -0
  152. package/dist/cmd/cloud/objectstore/url.js.map +1 -0
  153. package/dist/cmd/cloud/objectstore/util.js +18 -0
  154. package/dist/cmd/cloud/objectstore/util.js.map +1 -0
  155. package/dist/cmd/cloud/resource/add.js +70 -0
  156. package/dist/cmd/cloud/resource/add.js.map +1 -0
  157. package/dist/cmd/cloud/resource/delete.js +126 -0
  158. package/dist/cmd/cloud/resource/delete.js.map +1 -0
  159. package/dist/cmd/cloud/resource/index.js +12 -0
  160. package/dist/cmd/cloud/resource/index.js.map +1 -0
  161. package/dist/cmd/cloud/resource/list.js +89 -0
  162. package/dist/cmd/cloud/resource/list.js.map +1 -0
  163. package/dist/cmd/cloud/scp/download.js +72 -0
  164. package/dist/cmd/cloud/scp/download.js.map +1 -0
  165. package/dist/cmd/cloud/scp/index.js +10 -0
  166. package/dist/cmd/cloud/scp/index.js.map +1 -0
  167. package/dist/cmd/cloud/scp/upload.js +75 -0
  168. package/dist/cmd/cloud/scp/upload.js.map +1 -0
  169. package/dist/cmd/cloud/secret/delete.js +50 -0
  170. package/dist/cmd/cloud/secret/delete.js.map +1 -0
  171. package/dist/cmd/cloud/secret/get.js +69 -0
  172. package/dist/cmd/cloud/secret/get.js.map +1 -0
  173. package/dist/cmd/cloud/secret/import.js +88 -0
  174. package/dist/cmd/cloud/secret/import.js.map +1 -0
  175. package/dist/cmd/cloud/secret/index.js +24 -0
  176. package/dist/cmd/cloud/secret/index.js.map +1 -0
  177. package/dist/cmd/cloud/secret/list.js +58 -0
  178. package/dist/cmd/cloud/secret/list.js.map +1 -0
  179. package/dist/cmd/cloud/secret/pull.js +81 -0
  180. package/dist/cmd/cloud/secret/pull.js.map +1 -0
  181. package/dist/cmd/cloud/secret/push.js +61 -0
  182. package/dist/cmd/cloud/secret/push.js.map +1 -0
  183. package/dist/cmd/cloud/secret/set.js +57 -0
  184. package/dist/cmd/cloud/secret/set.js.map +1 -0
  185. package/dist/cmd/cloud/session/get.d.ts.map +1 -1
  186. package/dist/cmd/cloud/session/get.js +155 -0
  187. package/dist/cmd/cloud/session/get.js.map +1 -0
  188. package/dist/cmd/cloud/session/index.js +11 -0
  189. package/dist/cmd/cloud/session/index.js.map +1 -0
  190. package/dist/cmd/cloud/session/list.js +132 -0
  191. package/dist/cmd/cloud/session/list.js.map +1 -0
  192. package/dist/cmd/cloud/session/logs.js +56 -0
  193. package/dist/cmd/cloud/session/logs.js.map +1 -0
  194. package/dist/cmd/cloud/ssh.js +67 -0
  195. package/dist/cmd/cloud/ssh.js.map +1 -0
  196. package/dist/cmd/dev/agents.js +103 -0
  197. package/dist/cmd/dev/agents.js.map +1 -0
  198. package/dist/cmd/dev/api.js +26 -0
  199. package/dist/cmd/dev/api.js.map +1 -0
  200. package/dist/cmd/dev/download.js +77 -0
  201. package/dist/cmd/dev/download.js.map +1 -0
  202. package/dist/cmd/dev/index.js +745 -0
  203. package/dist/cmd/dev/index.js.map +1 -0
  204. package/dist/cmd/dev/sync.js +229 -0
  205. package/dist/cmd/dev/sync.js.map +1 -0
  206. package/dist/cmd/dev/templates.js +75 -0
  207. package/dist/cmd/dev/templates.js.map +1 -0
  208. package/dist/cmd/index.js +49 -0
  209. package/dist/cmd/index.js.map +1 -0
  210. package/dist/cmd/profile/create.js +89 -0
  211. package/dist/cmd/profile/create.js.map +1 -0
  212. package/dist/cmd/profile/delete.js +63 -0
  213. package/dist/cmd/profile/delete.js.map +1 -0
  214. package/dist/cmd/profile/index.js +14 -0
  215. package/dist/cmd/profile/index.js.map +1 -0
  216. package/dist/cmd/profile/list.js +28 -0
  217. package/dist/cmd/profile/list.js.map +1 -0
  218. package/dist/cmd/profile/show.js +68 -0
  219. package/dist/cmd/profile/show.js.map +1 -0
  220. package/dist/cmd/profile/use.js +37 -0
  221. package/dist/cmd/profile/use.js.map +1 -0
  222. package/dist/cmd/project/create.js +92 -0
  223. package/dist/cmd/project/create.js.map +1 -0
  224. package/dist/cmd/project/delete.js +117 -0
  225. package/dist/cmd/project/delete.js.map +1 -0
  226. package/dist/cmd/project/download.js +217 -0
  227. package/dist/cmd/project/download.js.map +1 -0
  228. package/dist/cmd/project/index.js +12 -0
  229. package/dist/cmd/project/index.js.map +1 -0
  230. package/dist/cmd/project/list.js +51 -0
  231. package/dist/cmd/project/list.js.map +1 -0
  232. package/dist/cmd/project/show.js +54 -0
  233. package/dist/cmd/project/show.js.map +1 -0
  234. package/dist/cmd/project/template-flow.js +315 -0
  235. package/dist/cmd/project/template-flow.js.map +1 -0
  236. package/dist/cmd/project/templates.js +31 -0
  237. package/dist/cmd/project/templates.js.map +1 -0
  238. package/dist/cmd/repl/index.js +444 -0
  239. package/dist/cmd/repl/index.js.map +1 -0
  240. package/dist/cmd/version/index.js +29 -0
  241. package/dist/cmd/version/index.js.map +1 -0
  242. package/dist/command-prefix.js +37 -0
  243. package/dist/command-prefix.js.map +1 -0
  244. package/dist/config.js +536 -0
  245. package/dist/config.js.map +1 -0
  246. package/dist/crypto/box.js +382 -0
  247. package/dist/crypto/box.js.map +1 -0
  248. package/dist/crypto/box.test.js +317 -0
  249. package/dist/crypto/box.test.js.map +1 -0
  250. package/dist/download.js +64 -0
  251. package/dist/download.js.map +1 -0
  252. package/dist/env-util.js +219 -0
  253. package/dist/env-util.js.map +1 -0
  254. package/dist/env-util.test.js +146 -0
  255. package/dist/env-util.test.js.map +1 -0
  256. package/dist/errors.js +177 -0
  257. package/dist/errors.js.map +1 -0
  258. package/dist/explain.js +90 -0
  259. package/dist/explain.js.map +1 -0
  260. package/dist/index.js +23 -0
  261. package/dist/index.js.map +1 -0
  262. package/dist/json.js +29 -0
  263. package/dist/json.js.map +1 -0
  264. package/dist/legacy-check.js +104 -0
  265. package/dist/legacy-check.js.map +1 -0
  266. package/dist/output.js +207 -0
  267. package/dist/output.js.map +1 -0
  268. package/dist/repl.js +1176 -0
  269. package/dist/repl.js.map +1 -0
  270. package/dist/runtime.js +19 -0
  271. package/dist/runtime.js.map +1 -0
  272. package/dist/schema-generator.js +289 -0
  273. package/dist/schema-generator.js.map +1 -0
  274. package/dist/schema-parser.js +145 -0
  275. package/dist/schema-parser.js.map +1 -0
  276. package/dist/sound.js +44 -0
  277. package/dist/sound.js.map +1 -0
  278. package/dist/steps.js +293 -0
  279. package/dist/steps.js.map +1 -0
  280. package/dist/terminal.js +130 -0
  281. package/dist/terminal.js.map +1 -0
  282. package/dist/tui.js +1124 -0
  283. package/dist/tui.js.map +1 -0
  284. package/dist/types.js +163 -0
  285. package/dist/types.js.map +1 -0
  286. package/dist/utils/detectSubagent.js +25 -0
  287. package/dist/utils/detectSubagent.js.map +1 -0
  288. package/dist/utils/format.js +21 -0
  289. package/dist/utils/format.js.map +1 -0
  290. package/dist/utils/zip.js +33 -0
  291. package/dist/utils/zip.js.map +1 -0
  292. package/dist/version.js +24 -0
  293. package/dist/version.js.map +1 -0
  294. package/package.json +6 -6
  295. package/src/banner.ts +1 -1
  296. package/src/cmd/build/index.ts +15 -21
  297. package/src/cmd/build/plugin.ts +2 -1
  298. package/src/cmd/cloud/session/get.ts +20 -14
  299. 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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"}