@agentuity/cli 0.1.8 → 0.1.10

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 (325) hide show
  1. package/README.md +2 -2
  2. package/bin/cli.ts +8 -0
  3. package/dist/cache/index.d.ts +2 -0
  4. package/dist/cache/index.d.ts.map +1 -0
  5. package/dist/cache/index.js +2 -0
  6. package/dist/cache/index.js.map +1 -0
  7. package/dist/cache/resource-region.d.ts +46 -0
  8. package/dist/cache/resource-region.d.ts.map +1 -0
  9. package/dist/cache/resource-region.js +115 -0
  10. package/dist/cache/resource-region.js.map +1 -0
  11. package/dist/cli.d.ts.map +1 -1
  12. package/dist/cli.js +44 -18
  13. package/dist/cli.js.map +1 -1
  14. package/dist/cmd/ai/capabilities/show.d.ts.map +1 -1
  15. package/dist/cmd/ai/capabilities/show.js +12 -15
  16. package/dist/cmd/ai/capabilities/show.js.map +1 -1
  17. package/dist/cmd/ai/prompt/llm.js +5 -5
  18. package/dist/cmd/ai/prompt/llm.js.map +1 -1
  19. package/dist/cmd/ai/skills/generator.d.ts.map +1 -1
  20. package/dist/cmd/ai/skills/generator.js +9 -1
  21. package/dist/cmd/ai/skills/generator.js.map +1 -1
  22. package/dist/cmd/auth/logout.d.ts.map +1 -1
  23. package/dist/cmd/auth/logout.js +5 -2
  24. package/dist/cmd/auth/logout.js.map +1 -1
  25. package/dist/cmd/build/ast.d.ts.map +1 -1
  26. package/dist/cmd/build/ast.js +87 -1
  27. package/dist/cmd/build/ast.js.map +1 -1
  28. package/dist/cmd/build/vite/metadata-generator.js +1 -1
  29. package/dist/cmd/build/vite/metadata-generator.js.map +1 -1
  30. package/dist/cmd/build/vite/vite-asset-server-config.d.ts.map +1 -1
  31. package/dist/cmd/build/vite/vite-asset-server-config.js +8 -3
  32. package/dist/cmd/build/vite/vite-asset-server-config.js.map +1 -1
  33. package/dist/cmd/build/vite/vite-asset-server.d.ts.map +1 -1
  34. package/dist/cmd/build/vite/vite-asset-server.js +5 -3
  35. package/dist/cmd/build/vite/vite-asset-server.js.map +1 -1
  36. package/dist/cmd/cloud/db/delete.d.ts.map +1 -1
  37. package/dist/cmd/cloud/db/delete.js +69 -11
  38. package/dist/cmd/cloud/db/delete.js.map +1 -1
  39. package/dist/cmd/cloud/db/get.d.ts.map +1 -1
  40. package/dist/cmd/cloud/db/get.js +23 -7
  41. package/dist/cmd/cloud/db/get.js.map +1 -1
  42. package/dist/cmd/cloud/db/list.d.ts.map +1 -1
  43. package/dist/cmd/cloud/db/list.js +15 -7
  44. package/dist/cmd/cloud/db/list.js.map +1 -1
  45. package/dist/cmd/cloud/db/logs.d.ts.map +1 -1
  46. package/dist/cmd/cloud/db/logs.js +24 -4
  47. package/dist/cmd/cloud/db/logs.js.map +1 -1
  48. package/dist/cmd/cloud/deploy.d.ts.map +1 -1
  49. package/dist/cmd/cloud/deploy.js +50 -1
  50. package/dist/cmd/cloud/deploy.js.map +1 -1
  51. package/dist/cmd/cloud/env/delete.d.ts.map +1 -1
  52. package/dist/cmd/cloud/env/delete.js +30 -13
  53. package/dist/cmd/cloud/env/delete.js.map +1 -1
  54. package/dist/cmd/cloud/env/get.d.ts.map +1 -1
  55. package/dist/cmd/cloud/env/get.js +27 -30
  56. package/dist/cmd/cloud/env/get.js.map +1 -1
  57. package/dist/cmd/cloud/env/import.d.ts.map +1 -1
  58. package/dist/cmd/cloud/env/import.js +41 -48
  59. package/dist/cmd/cloud/env/import.js.map +1 -1
  60. package/dist/cmd/cloud/env/index.d.ts.map +1 -1
  61. package/dist/cmd/cloud/env/index.js +6 -2
  62. package/dist/cmd/cloud/env/index.js.map +1 -1
  63. package/dist/cmd/cloud/env/list.d.ts.map +1 -1
  64. package/dist/cmd/cloud/env/list.js +51 -28
  65. package/dist/cmd/cloud/env/list.js.map +1 -1
  66. package/dist/cmd/cloud/env/pull.d.ts.map +1 -1
  67. package/dist/cmd/cloud/env/pull.js +3 -3
  68. package/dist/cmd/cloud/env/pull.js.map +1 -1
  69. package/dist/cmd/cloud/env/push.d.ts.map +1 -1
  70. package/dist/cmd/cloud/env/push.js +31 -11
  71. package/dist/cmd/cloud/env/push.js.map +1 -1
  72. package/dist/cmd/cloud/env/set.d.ts.map +1 -1
  73. package/dist/cmd/cloud/env/set.js +41 -26
  74. package/dist/cmd/cloud/env/set.js.map +1 -1
  75. package/dist/cmd/cloud/index.d.ts.map +1 -1
  76. package/dist/cmd/cloud/index.js +0 -2
  77. package/dist/cmd/cloud/index.js.map +1 -1
  78. package/dist/cmd/cloud/region-lookup.d.ts +18 -0
  79. package/dist/cmd/cloud/region-lookup.d.ts.map +1 -0
  80. package/dist/cmd/cloud/region-lookup.js +64 -0
  81. package/dist/cmd/cloud/region-lookup.js.map +1 -0
  82. package/dist/cmd/cloud/sandbox/cp.d.ts.map +1 -1
  83. package/dist/cmd/cloud/sandbox/cp.js +5 -3
  84. package/dist/cmd/cloud/sandbox/cp.js.map +1 -1
  85. package/dist/cmd/cloud/sandbox/create.d.ts.map +1 -1
  86. package/dist/cmd/cloud/sandbox/create.js +54 -2
  87. package/dist/cmd/cloud/sandbox/create.js.map +1 -1
  88. package/dist/cmd/cloud/sandbox/delete.d.ts.map +1 -1
  89. package/dist/cmd/cloud/sandbox/delete.js +5 -3
  90. package/dist/cmd/cloud/sandbox/delete.js.map +1 -1
  91. package/dist/cmd/cloud/sandbox/download.d.ts.map +1 -1
  92. package/dist/cmd/cloud/sandbox/download.js +4 -3
  93. package/dist/cmd/cloud/sandbox/download.js.map +1 -1
  94. package/dist/cmd/cloud/sandbox/env.d.ts.map +1 -1
  95. package/dist/cmd/cloud/sandbox/env.js +4 -3
  96. package/dist/cmd/cloud/sandbox/env.js.map +1 -1
  97. package/dist/cmd/cloud/sandbox/exec.d.ts.map +1 -1
  98. package/dist/cmd/cloud/sandbox/exec.js +4 -3
  99. package/dist/cmd/cloud/sandbox/exec.js.map +1 -1
  100. package/dist/cmd/cloud/sandbox/execution/get.js +4 -4
  101. package/dist/cmd/cloud/sandbox/execution/get.js.map +1 -1
  102. package/dist/cmd/cloud/sandbox/execution/index.js +1 -1
  103. package/dist/cmd/cloud/sandbox/execution/index.js.map +1 -1
  104. package/dist/cmd/cloud/sandbox/execution/list.d.ts.map +1 -1
  105. package/dist/cmd/cloud/sandbox/execution/list.js +4 -3
  106. package/dist/cmd/cloud/sandbox/execution/list.js.map +1 -1
  107. package/dist/cmd/cloud/sandbox/get.d.ts.map +1 -1
  108. package/dist/cmd/cloud/sandbox/get.js +26 -4
  109. package/dist/cmd/cloud/sandbox/get.js.map +1 -1
  110. package/dist/cmd/cloud/sandbox/index.d.ts.map +1 -1
  111. package/dist/cmd/cloud/sandbox/index.js +3 -1
  112. package/dist/cmd/cloud/sandbox/index.js.map +1 -1
  113. package/dist/cmd/cloud/sandbox/list.d.ts.map +1 -1
  114. package/dist/cmd/cloud/sandbox/list.js +16 -9
  115. package/dist/cmd/cloud/sandbox/list.js.map +1 -1
  116. package/dist/cmd/cloud/sandbox/ls.d.ts.map +1 -1
  117. package/dist/cmd/cloud/sandbox/ls.js +4 -3
  118. package/dist/cmd/cloud/sandbox/ls.js.map +1 -1
  119. package/dist/cmd/cloud/sandbox/mkdir.d.ts.map +1 -1
  120. package/dist/cmd/cloud/sandbox/mkdir.js +4 -3
  121. package/dist/cmd/cloud/sandbox/mkdir.js.map +1 -1
  122. package/dist/cmd/cloud/sandbox/rm.d.ts.map +1 -1
  123. package/dist/cmd/cloud/sandbox/rm.js +4 -3
  124. package/dist/cmd/cloud/sandbox/rm.js.map +1 -1
  125. package/dist/cmd/cloud/sandbox/rmdir.d.ts.map +1 -1
  126. package/dist/cmd/cloud/sandbox/rmdir.js +4 -3
  127. package/dist/cmd/cloud/sandbox/rmdir.js.map +1 -1
  128. package/dist/cmd/cloud/sandbox/run.d.ts.map +1 -1
  129. package/dist/cmd/cloud/sandbox/run.js +51 -2
  130. package/dist/cmd/cloud/sandbox/run.js.map +1 -1
  131. package/dist/cmd/cloud/sandbox/runtime/index.d.ts +3 -0
  132. package/dist/cmd/cloud/sandbox/runtime/index.d.ts.map +1 -0
  133. package/dist/cmd/cloud/sandbox/runtime/index.js +19 -0
  134. package/dist/cmd/cloud/sandbox/runtime/index.js.map +1 -0
  135. package/dist/cmd/cloud/sandbox/runtime/list.d.ts +3 -0
  136. package/dist/cmd/cloud/sandbox/runtime/list.d.ts.map +1 -0
  137. package/dist/cmd/cloud/sandbox/runtime/list.js +68 -0
  138. package/dist/cmd/cloud/sandbox/runtime/list.js.map +1 -0
  139. package/dist/cmd/cloud/sandbox/snapshot/create.d.ts.map +1 -1
  140. package/dist/cmd/cloud/sandbox/snapshot/create.js +41 -8
  141. package/dist/cmd/cloud/sandbox/snapshot/create.js.map +1 -1
  142. package/dist/cmd/cloud/sandbox/snapshot/delete.js +4 -4
  143. package/dist/cmd/cloud/sandbox/snapshot/delete.js.map +1 -1
  144. package/dist/cmd/cloud/sandbox/snapshot/get.js +5 -5
  145. package/dist/cmd/cloud/sandbox/snapshot/get.js.map +1 -1
  146. package/dist/cmd/cloud/sandbox/snapshot/index.js +1 -1
  147. package/dist/cmd/cloud/sandbox/snapshot/index.js.map +1 -1
  148. package/dist/cmd/cloud/sandbox/snapshot/list.d.ts.map +1 -1
  149. package/dist/cmd/cloud/sandbox/snapshot/list.js +8 -4
  150. package/dist/cmd/cloud/sandbox/snapshot/list.js.map +1 -1
  151. package/dist/cmd/cloud/sandbox/snapshot/tag.d.ts.map +1 -1
  152. package/dist/cmd/cloud/sandbox/snapshot/tag.js +14 -4
  153. package/dist/cmd/cloud/sandbox/snapshot/tag.js.map +1 -1
  154. package/dist/cmd/cloud/sandbox/upload.d.ts.map +1 -1
  155. package/dist/cmd/cloud/sandbox/upload.js +4 -3
  156. package/dist/cmd/cloud/sandbox/upload.js.map +1 -1
  157. package/dist/cmd/cloud/sandbox/util.d.ts +13 -0
  158. package/dist/cmd/cloud/sandbox/util.d.ts.map +1 -1
  159. package/dist/cmd/cloud/sandbox/util.js +40 -1
  160. package/dist/cmd/cloud/sandbox/util.js.map +1 -1
  161. package/dist/cmd/cloud/scp/download.d.ts.map +1 -1
  162. package/dist/cmd/cloud/scp/download.js +6 -2
  163. package/dist/cmd/cloud/scp/download.js.map +1 -1
  164. package/dist/cmd/cloud/scp/upload.d.ts.map +1 -1
  165. package/dist/cmd/cloud/scp/upload.js +6 -2
  166. package/dist/cmd/cloud/scp/upload.js.map +1 -1
  167. package/dist/cmd/cloud/session/get.js +4 -4
  168. package/dist/cmd/cloud/session/get.js.map +1 -1
  169. package/dist/cmd/cloud/session/list.js +4 -4
  170. package/dist/cmd/cloud/session/list.js.map +1 -1
  171. package/dist/cmd/cloud/ssh.d.ts.map +1 -1
  172. package/dist/cmd/cloud/ssh.js +7 -2
  173. package/dist/cmd/cloud/ssh.js.map +1 -1
  174. package/dist/cmd/cloud/storage/delete.d.ts.map +1 -1
  175. package/dist/cmd/cloud/storage/delete.js +46 -10
  176. package/dist/cmd/cloud/storage/delete.js.map +1 -1
  177. package/dist/cmd/cloud/storage/download.d.ts.map +1 -1
  178. package/dist/cmd/cloud/storage/download.js +19 -6
  179. package/dist/cmd/cloud/storage/download.js.map +1 -1
  180. package/dist/cmd/cloud/storage/get.d.ts.map +1 -1
  181. package/dist/cmd/cloud/storage/get.js +19 -6
  182. package/dist/cmd/cloud/storage/get.js.map +1 -1
  183. package/dist/cmd/cloud/storage/list.d.ts.map +1 -1
  184. package/dist/cmd/cloud/storage/list.js +17 -7
  185. package/dist/cmd/cloud/storage/list.js.map +1 -1
  186. package/dist/cmd/cloud/storage/upload.d.ts.map +1 -1
  187. package/dist/cmd/cloud/storage/upload.js +19 -6
  188. package/dist/cmd/cloud/storage/upload.js.map +1 -1
  189. package/dist/cmd/cloud/thread/delete.js +4 -4
  190. package/dist/cmd/cloud/thread/delete.js.map +1 -1
  191. package/dist/cmd/cloud/thread/get.js +4 -4
  192. package/dist/cmd/cloud/thread/get.js.map +1 -1
  193. package/dist/cmd/cloud/thread/list.js +4 -4
  194. package/dist/cmd/cloud/thread/list.js.map +1 -1
  195. package/dist/cmd/project/auth/init.d.ts.map +1 -1
  196. package/dist/cmd/project/auth/init.js +6 -3
  197. package/dist/cmd/project/auth/init.js.map +1 -1
  198. package/dist/cmd/project/auth/shared.d.ts +6 -2
  199. package/dist/cmd/project/auth/shared.d.ts.map +1 -1
  200. package/dist/cmd/project/auth/shared.js +40 -12
  201. package/dist/cmd/project/auth/shared.js.map +1 -1
  202. package/dist/config.d.ts +37 -0
  203. package/dist/config.d.ts.map +1 -1
  204. package/dist/config.js +61 -8
  205. package/dist/config.js.map +1 -1
  206. package/dist/env-util.d.ts +25 -2
  207. package/dist/env-util.d.ts.map +1 -1
  208. package/dist/env-util.js +44 -4
  209. package/dist/env-util.js.map +1 -1
  210. package/dist/utils/apt-validator.d.ts +20 -0
  211. package/dist/utils/apt-validator.d.ts.map +1 -0
  212. package/dist/utils/apt-validator.js +157 -0
  213. package/dist/utils/apt-validator.js.map +1 -0
  214. package/package.json +6 -6
  215. package/src/cache/index.ts +11 -0
  216. package/src/cache/resource-region.ts +183 -0
  217. package/src/cli.ts +51 -17
  218. package/src/cmd/ai/capabilities/show.ts +12 -15
  219. package/src/cmd/ai/prompt/llm.ts +5 -5
  220. package/src/cmd/ai/skills/generator.ts +9 -1
  221. package/src/cmd/auth/logout.ts +5 -2
  222. package/src/cmd/build/ast.ts +160 -1
  223. package/src/cmd/build/vite/metadata-generator.ts +1 -1
  224. package/src/cmd/build/vite/vite-asset-server-config.ts +7 -3
  225. package/src/cmd/build/vite/vite-asset-server.ts +6 -3
  226. package/src/cmd/cloud/db/delete.ts +83 -11
  227. package/src/cmd/cloud/db/get.ts +29 -7
  228. package/src/cmd/cloud/db/list.ts +16 -7
  229. package/src/cmd/cloud/db/logs.ts +33 -4
  230. package/src/cmd/cloud/deploy.ts +63 -0
  231. package/src/cmd/cloud/env/delete.ts +36 -12
  232. package/src/cmd/cloud/env/get.ts +28 -27
  233. package/src/cmd/cloud/env/import.ts +43 -56
  234. package/src/cmd/cloud/env/index.ts +6 -2
  235. package/src/cmd/cloud/env/list.ts +57 -30
  236. package/src/cmd/cloud/env/pull.ts +9 -3
  237. package/src/cmd/cloud/env/push.ts +44 -11
  238. package/src/cmd/cloud/env/set.ts +49 -30
  239. package/src/cmd/cloud/index.ts +0 -2
  240. package/src/cmd/cloud/region-lookup.ts +89 -0
  241. package/src/cmd/cloud/sandbox/cp.ts +5 -3
  242. package/src/cmd/cloud/sandbox/create.ts +61 -2
  243. package/src/cmd/cloud/sandbox/delete.ts +6 -3
  244. package/src/cmd/cloud/sandbox/download.ts +4 -3
  245. package/src/cmd/cloud/sandbox/env.ts +4 -3
  246. package/src/cmd/cloud/sandbox/exec.ts +4 -3
  247. package/src/cmd/cloud/sandbox/execution/get.ts +4 -4
  248. package/src/cmd/cloud/sandbox/execution/index.ts +1 -1
  249. package/src/cmd/cloud/sandbox/execution/list.ts +4 -3
  250. package/src/cmd/cloud/sandbox/get.ts +27 -4
  251. package/src/cmd/cloud/sandbox/index.ts +3 -1
  252. package/src/cmd/cloud/sandbox/list.ts +16 -9
  253. package/src/cmd/cloud/sandbox/ls.ts +4 -3
  254. package/src/cmd/cloud/sandbox/mkdir.ts +4 -3
  255. package/src/cmd/cloud/sandbox/rm.ts +4 -3
  256. package/src/cmd/cloud/sandbox/rmdir.ts +4 -3
  257. package/src/cmd/cloud/sandbox/run.ts +58 -2
  258. package/src/cmd/cloud/sandbox/runtime/index.ts +20 -0
  259. package/src/cmd/cloud/sandbox/runtime/list.ts +75 -0
  260. package/src/cmd/cloud/sandbox/snapshot/create.ts +53 -8
  261. package/src/cmd/cloud/sandbox/snapshot/delete.ts +4 -4
  262. package/src/cmd/cloud/sandbox/snapshot/get.ts +5 -5
  263. package/src/cmd/cloud/sandbox/snapshot/index.ts +1 -1
  264. package/src/cmd/cloud/sandbox/snapshot/list.ts +8 -4
  265. package/src/cmd/cloud/sandbox/snapshot/tag.ts +20 -4
  266. package/src/cmd/cloud/sandbox/upload.ts +4 -3
  267. package/src/cmd/cloud/sandbox/util.ts +60 -1
  268. package/src/cmd/cloud/scp/download.ts +14 -2
  269. package/src/cmd/cloud/scp/upload.ts +14 -2
  270. package/src/cmd/cloud/session/get.ts +4 -4
  271. package/src/cmd/cloud/session/list.ts +4 -4
  272. package/src/cmd/cloud/ssh.ts +15 -2
  273. package/src/cmd/cloud/storage/delete.ts +61 -10
  274. package/src/cmd/cloud/storage/download.ts +31 -6
  275. package/src/cmd/cloud/storage/get.ts +31 -6
  276. package/src/cmd/cloud/storage/list.ts +18 -7
  277. package/src/cmd/cloud/storage/upload.ts +31 -6
  278. package/src/cmd/cloud/thread/delete.ts +4 -4
  279. package/src/cmd/cloud/thread/get.ts +4 -4
  280. package/src/cmd/cloud/thread/list.ts +4 -4
  281. package/src/cmd/project/auth/init.ts +7 -3
  282. package/src/cmd/project/auth/shared.ts +52 -13
  283. package/src/config.ts +74 -8
  284. package/src/env-util.ts +50 -5
  285. package/src/utils/apt-validator.ts +215 -0
  286. package/dist/cmd/cloud/secret/delete.d.ts +0 -2
  287. package/dist/cmd/cloud/secret/delete.d.ts.map +0 -1
  288. package/dist/cmd/cloud/secret/delete.js +0 -53
  289. package/dist/cmd/cloud/secret/delete.js.map +0 -1
  290. package/dist/cmd/cloud/secret/get.d.ts +0 -2
  291. package/dist/cmd/cloud/secret/get.d.ts.map +0 -1
  292. package/dist/cmd/cloud/secret/get.js +0 -73
  293. package/dist/cmd/cloud/secret/get.js.map +0 -1
  294. package/dist/cmd/cloud/secret/import.d.ts +0 -2
  295. package/dist/cmd/cloud/secret/import.d.ts.map +0 -1
  296. package/dist/cmd/cloud/secret/import.js +0 -91
  297. package/dist/cmd/cloud/secret/import.js.map +0 -1
  298. package/dist/cmd/cloud/secret/index.d.ts +0 -3
  299. package/dist/cmd/cloud/secret/index.d.ts.map +0 -1
  300. package/dist/cmd/cloud/secret/index.js +0 -33
  301. package/dist/cmd/cloud/secret/index.js.map +0 -1
  302. package/dist/cmd/cloud/secret/list.d.ts +0 -2
  303. package/dist/cmd/cloud/secret/list.d.ts.map +0 -1
  304. package/dist/cmd/cloud/secret/list.js +0 -65
  305. package/dist/cmd/cloud/secret/list.js.map +0 -1
  306. package/dist/cmd/cloud/secret/pull.d.ts +0 -2
  307. package/dist/cmd/cloud/secret/pull.d.ts.map +0 -1
  308. package/dist/cmd/cloud/secret/pull.js +0 -82
  309. package/dist/cmd/cloud/secret/pull.js.map +0 -1
  310. package/dist/cmd/cloud/secret/push.d.ts +0 -2
  311. package/dist/cmd/cloud/secret/push.d.ts.map +0 -1
  312. package/dist/cmd/cloud/secret/push.js +0 -61
  313. package/dist/cmd/cloud/secret/push.js.map +0 -1
  314. package/dist/cmd/cloud/secret/set.d.ts +0 -2
  315. package/dist/cmd/cloud/secret/set.d.ts.map +0 -1
  316. package/dist/cmd/cloud/secret/set.js +0 -63
  317. package/dist/cmd/cloud/secret/set.js.map +0 -1
  318. package/src/cmd/cloud/secret/delete.ts +0 -65
  319. package/src/cmd/cloud/secret/get.ts +0 -77
  320. package/src/cmd/cloud/secret/import.ts +0 -110
  321. package/src/cmd/cloud/secret/index.ts +0 -33
  322. package/src/cmd/cloud/secret/list.ts +0 -70
  323. package/src/cmd/cloud/secret/pull.ts +0 -92
  324. package/src/cmd/cloud/secret/push.ts +0 -69
  325. package/src/cmd/cloud/secret/set.ts +0 -76
package/README.md CHANGED
@@ -32,7 +32,7 @@ agentuity dev
32
32
  agentuity cloud keyvalue set mykey myvalue
33
33
  agentuity cloud agents
34
34
  agentuity cloud env list
35
- agentuity cloud secret set MY_SECRET value
35
+ agentuity cloud env set MY_SECRET value --secret
36
36
 
37
37
  # AI commands
38
38
  agentuity ai capabilities show
@@ -82,7 +82,7 @@ agentuity --log-level=error example list
82
82
  Commands are organized into groups:
83
83
 
84
84
  - **Top-level**: `auth`, `project`, `version`, `build` (alias: `bundle`), `dev`
85
- - **Cloud** (`cloud`): `keyvalue`, `agents`, `env`, `secret`, and deployment-related commands
85
+ - **Cloud** (`cloud`): `keyvalue`, `agents`, `env`, and deployment-related commands
86
86
  - **AI** (`ai`): `capabilities`, `prompt`, `schema`
87
87
  - **Hidden**: `profile` (internal use only)
88
88
 
package/bin/cli.ts CHANGED
@@ -15,6 +15,7 @@ import { setOutputOptions } from '../src/output';
15
15
  import type { GlobalOptions } from '../src/types';
16
16
  import { ensureBunOnPath } from '../src/bun-path';
17
17
  import { checkForUpdates } from '../src/version-check';
18
+ import { closeDatabase } from '../src/cache';
18
19
 
19
20
  // Cleanup TTY state before exit
20
21
  function cleanupTTY() {
@@ -37,10 +38,12 @@ function cleanupTTY() {
37
38
  process.on('SIGINT', () => {
38
39
  process.stdout.write('\b \b'); // erase the ctrl+c display
39
40
  cleanupTTY();
41
+ closeDatabase();
40
42
  });
41
43
 
42
44
  process.on('SIGTERM', () => {
43
45
  cleanupTTY();
46
+ closeDatabase();
44
47
  });
45
48
 
46
49
  validateRuntime();
@@ -75,6 +78,7 @@ if (
75
78
  console.log(JSON.stringify(cliSchema, null, 2));
76
79
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
77
80
  const exit = (globalThis as any).AGENTUITY_PROCESS_EXIT || process.exit;
81
+ closeDatabase();
78
82
  exit(0);
79
83
  }
80
84
 
@@ -171,14 +175,17 @@ try {
171
175
  msg.includes('canceled') || // US
172
176
  msg === ''
173
177
  ) {
178
+ closeDatabase();
174
179
  exit(0);
175
180
  }
176
181
  if ('name' in error && error.name === 'AbortError') {
182
+ closeDatabase();
177
183
  exit(0);
178
184
  }
179
185
  }
180
186
  // Also exit cleanly if error is empty/undefined (user cancellation)
181
187
  if (!error) {
188
+ closeDatabase();
182
189
  exit(0);
183
190
  }
184
191
  const errorWithMessage = error as { message?: string };
@@ -191,5 +198,6 @@ try {
191
198
  error
192
199
  );
193
200
  }
201
+ closeDatabase();
194
202
  exit(1);
195
203
  }
@@ -0,0 +1,2 @@
1
+ export { getResourceInfo, getResourceRegion, setResourceInfo, setResourceRegion, deleteResourceRegion, clearProfileCache, closeDatabase, type ResourceType, type ResourceInfo, } from './resource-region';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,KAAK,YAAY,EACjB,KAAK,YAAY,GACjB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { getResourceInfo, getResourceRegion, setResourceInfo, setResourceRegion, deleteResourceRegion, clearProfileCache, closeDatabase, } from './resource-region';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,GAGb,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,46 @@
1
+ export type ResourceType = 'sandbox' | 'bucket' | 'db' | 'project' | 'deployment';
2
+ /**
3
+ * Resource info returned from cache lookup
4
+ */
5
+ export interface ResourceInfo {
6
+ region: string;
7
+ orgId?: string;
8
+ }
9
+ /**
10
+ * Get the cached info (region and orgId) for a resource.
11
+ * Returns null if not found or expired.
12
+ */
13
+ export declare function getResourceInfo(type: ResourceType, profile: string, id: string): Promise<ResourceInfo | null>;
14
+ /**
15
+ * Get the cached region for a resource.
16
+ * Returns null if not found or expired.
17
+ * @deprecated Use getResourceInfo() to get both region and orgId
18
+ */
19
+ export declare function getResourceRegion(type: ResourceType, profile: string, id: string): Promise<string | null>;
20
+ /**
21
+ * Set the cached info for a resource.
22
+ * Uses INSERT OR REPLACE to upsert.
23
+ */
24
+ export declare function setResourceInfo(type: ResourceType, profile: string, id: string, region: string, orgId?: string): Promise<void>;
25
+ /**
26
+ * Set the cached region for a resource.
27
+ * Uses INSERT OR REPLACE to upsert.
28
+ * @deprecated Use setResourceInfo() to set both region and orgId
29
+ */
30
+ export declare function setResourceRegion(type: ResourceType, profile: string, id: string, region: string): Promise<void>;
31
+ /**
32
+ * Delete the cached info for a resource.
33
+ * Called when a resource is deleted.
34
+ */
35
+ export declare function deleteResourceRegion(type: ResourceType, profile: string, id: string): Promise<void>;
36
+ /**
37
+ * Clear all cached entries for a specific profile.
38
+ * Useful when switching profiles or logging out.
39
+ */
40
+ export declare function clearProfileCache(profile: string): Promise<void>;
41
+ /**
42
+ * Close the database connection.
43
+ * Should be called on CLI exit for clean shutdown.
44
+ */
45
+ export declare function closeDatabase(): void;
46
+ //# sourceMappingURL=resource-region.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-region.d.ts","sourceRoot":"","sources":["../../src/cache/resource-region.ts"],"names":[],"mappings":"AA8CA,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACpC,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,GACR,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA6B9B;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACtC,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,GACR,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACpC,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACtC,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACzC,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,GACR,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAItE;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAKpC"}
@@ -0,0 +1,115 @@
1
+ import { Database } from 'bun:sqlite';
2
+ import { join } from 'node:path';
3
+ import { mkdir } from 'node:fs/promises';
4
+ import { getDefaultConfigDir } from '../config';
5
+ const TTL_DAYS = 7;
6
+ const TTL_MS = TTL_DAYS * 24 * 60 * 60 * 1000;
7
+ let db = null;
8
+ async function getDatabase() {
9
+ if (db) {
10
+ return db;
11
+ }
12
+ const configDir = getDefaultConfigDir();
13
+ await mkdir(configDir, { recursive: true });
14
+ const dbPath = join(configDir, 'resource.db');
15
+ db = new Database(dbPath);
16
+ db.run(`
17
+ CREATE TABLE IF NOT EXISTS resource_region_cache (
18
+ resource_type TEXT NOT NULL,
19
+ profile TEXT NOT NULL,
20
+ id TEXT NOT NULL,
21
+ region TEXT NOT NULL,
22
+ org_id TEXT,
23
+ last_updated INTEGER NOT NULL,
24
+ PRIMARY KEY (resource_type, profile, id)
25
+ )
26
+ `);
27
+ db.run(`
28
+ CREATE INDEX IF NOT EXISTS idx_last_updated
29
+ ON resource_region_cache(last_updated)
30
+ `);
31
+ return db;
32
+ }
33
+ function pruneOldEntries(database) {
34
+ const cutoff = Date.now() - TTL_MS;
35
+ database.run('DELETE FROM resource_region_cache WHERE last_updated < ?', [cutoff]);
36
+ }
37
+ /**
38
+ * Get the cached info (region and orgId) for a resource.
39
+ * Returns null if not found or expired.
40
+ */
41
+ export async function getResourceInfo(type, profile, id) {
42
+ const database = await getDatabase();
43
+ const cutoff = Date.now() - TTL_MS;
44
+ const row = database
45
+ .query('SELECT region, org_id, last_updated FROM resource_region_cache WHERE resource_type = ? AND profile = ? AND id = ?')
46
+ .get(type, profile, id);
47
+ if (!row) {
48
+ return null;
49
+ }
50
+ // Check if entry is expired
51
+ if (row.last_updated < cutoff) {
52
+ // Remove stale entry
53
+ database.run('DELETE FROM resource_region_cache WHERE resource_type = ? AND profile = ? AND id = ?', [type, profile, id]);
54
+ return null;
55
+ }
56
+ return {
57
+ region: row.region,
58
+ orgId: row.org_id ?? undefined,
59
+ };
60
+ }
61
+ /**
62
+ * Get the cached region for a resource.
63
+ * Returns null if not found or expired.
64
+ * @deprecated Use getResourceInfo() to get both region and orgId
65
+ */
66
+ export async function getResourceRegion(type, profile, id) {
67
+ const info = await getResourceInfo(type, profile, id);
68
+ return info?.region ?? null;
69
+ }
70
+ /**
71
+ * Set the cached info for a resource.
72
+ * Uses INSERT OR REPLACE to upsert.
73
+ */
74
+ export async function setResourceInfo(type, profile, id, region, orgId) {
75
+ const database = await getDatabase();
76
+ pruneOldEntries(database);
77
+ database.run(`INSERT OR REPLACE INTO resource_region_cache
78
+ (resource_type, profile, id, region, org_id, last_updated)
79
+ VALUES (?, ?, ?, ?, ?, ?)`, [type, profile, id, region, orgId ?? null, Date.now()]);
80
+ }
81
+ /**
82
+ * Set the cached region for a resource.
83
+ * Uses INSERT OR REPLACE to upsert.
84
+ * @deprecated Use setResourceInfo() to set both region and orgId
85
+ */
86
+ export async function setResourceRegion(type, profile, id, region) {
87
+ await setResourceInfo(type, profile, id, region);
88
+ }
89
+ /**
90
+ * Delete the cached info for a resource.
91
+ * Called when a resource is deleted.
92
+ */
93
+ export async function deleteResourceRegion(type, profile, id) {
94
+ const database = await getDatabase();
95
+ database.run('DELETE FROM resource_region_cache WHERE resource_type = ? AND profile = ? AND id = ?', [type, profile, id]);
96
+ }
97
+ /**
98
+ * Clear all cached entries for a specific profile.
99
+ * Useful when switching profiles or logging out.
100
+ */
101
+ export async function clearProfileCache(profile) {
102
+ const database = await getDatabase();
103
+ database.run('DELETE FROM resource_region_cache WHERE profile = ?', [profile]);
104
+ }
105
+ /**
106
+ * Close the database connection.
107
+ * Should be called on CLI exit for clean shutdown.
108
+ */
109
+ export function closeDatabase() {
110
+ if (db) {
111
+ db.close();
112
+ db = null;
113
+ }
114
+ }
115
+ //# sourceMappingURL=resource-region.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-region.js","sourceRoot":"","sources":["../../src/cache/resource-region.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EACX,iBAAiB,EAEjB,cAAc,EAQd,MAAM,SAAS,CAAC;AA8bjB,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA2MjE;AA27BD,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC,CAgMf"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EACX,iBAAiB,EAEjB,cAAc,EAQd,MAAM,SAAS,CAAC;AA8bjB,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA2MjE;AA09BD,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC,CAmMf"}
package/dist/cli.js CHANGED
@@ -1,4 +1,4 @@
1
- import { mkdir } from 'node:fs/promises';
1
+ import { mkdir, unlink } from 'node:fs/promises';
2
2
  import { homedir } from 'node:os';
3
3
  import { resolve, join } from 'node:path';
4
4
  import { Command } from 'commander';
@@ -283,7 +283,7 @@ function handleProjectConfigError(error, requiresProject, logger, errorFormat) {
283
283
  error &&
284
284
  typeof error === 'object' &&
285
285
  'name' in error &&
286
- error.name === 'ProjectConfigNotFoundExpection') {
286
+ error.name === 'ProjectConfigNotFoundException') {
287
287
  exitWithError(createError(ErrorCode.PROJECT_NOT_FOUND, 'Invalid project folder', undefined, [
288
288
  'Use --dir to specify a different directory',
289
289
  'Change to a directory containing agentuity.json',
@@ -550,11 +550,29 @@ async function getRegion(regions) {
550
550
  return response.region;
551
551
  }
552
552
  }
553
- const REGIONS_CACHE_FILE = 'regions.json';
554
553
  const REGIONS_CACHE_MAX_AGE_MS = 5 * 24 * 60 * 60 * 1000; // 5 days
555
- async function getCachedRegions(logger) {
554
+ const LEGACY_REGIONS_CACHE_FILE = 'regions.json';
555
+ function getRegionsCacheFile(profileName) {
556
+ return `regions-${profileName}.json`;
557
+ }
558
+ async function removeLegacyRegionsCache(logger) {
559
+ try {
560
+ const legacyPath = join(getDefaultConfigDir(), LEGACY_REGIONS_CACHE_FILE);
561
+ const file = Bun.file(legacyPath);
562
+ if (await file.exists()) {
563
+ await unlink(legacyPath);
564
+ logger.trace('removed legacy regions cache file');
565
+ }
566
+ }
567
+ catch {
568
+ // Ignore errors when removing legacy file
569
+ }
570
+ }
571
+ async function getCachedRegions(profileName, logger) {
556
572
  try {
557
- const cachePath = join(getDefaultConfigDir(), REGIONS_CACHE_FILE);
573
+ // Clean up legacy single-file cache from older versions
574
+ await removeLegacyRegionsCache(logger);
575
+ const cachePath = join(getDefaultConfigDir(), getRegionsCacheFile(profileName));
558
576
  const file = Bun.file(cachePath);
559
577
  if (!(await file.exists())) {
560
578
  return null;
@@ -562,46 +580,46 @@ async function getCachedRegions(logger) {
562
580
  const data = await file.json();
563
581
  const age = Date.now() - data.timestamp;
564
582
  if (age > REGIONS_CACHE_MAX_AGE_MS) {
565
- logger.trace('regions cache expired (age: %dms)', age);
583
+ logger.trace('regions cache expired for profile %s (age: %dms)', profileName, age);
566
584
  return null;
567
585
  }
568
- logger.trace('using cached regions (age: %dms)', age);
586
+ logger.trace('using cached regions for profile %s (age: %dms)', profileName, age);
569
587
  return data.regions;
570
588
  }
571
589
  catch (error) {
572
- logger.trace('failed to read regions cache: %s', error);
590
+ logger.trace('failed to read regions cache for profile %s: %s', profileName, error);
573
591
  return null;
574
592
  }
575
593
  }
576
- async function saveRegionsCache(regions, logger) {
594
+ async function saveRegionsCache(profileName, regions, logger) {
577
595
  try {
578
596
  const cacheDir = getDefaultConfigDir();
579
597
  await mkdir(cacheDir, { recursive: true });
580
- const cachePath = join(cacheDir, REGIONS_CACHE_FILE);
598
+ const cachePath = join(cacheDir, getRegionsCacheFile(profileName));
581
599
  const data = {
582
600
  timestamp: Date.now(),
583
601
  regions,
584
602
  };
585
603
  await Bun.write(cachePath, JSON.stringify(data));
586
- logger.trace('saved regions cache');
604
+ logger.trace('saved regions cache for profile %s', profileName);
587
605
  }
588
606
  catch (error) {
589
- logger.trace('failed to save regions cache: %s', error);
607
+ logger.trace('failed to save regions cache for profile %s: %s', profileName, error);
590
608
  }
591
609
  }
592
- async function fetchRegionsWithCache(apiClient, logger) {
593
- const cached = await getCachedRegions(logger);
610
+ async function fetchRegionsWithCache(profileName, apiClient, logger) {
611
+ const cached = await getCachedRegions(profileName, logger);
594
612
  if (cached) {
595
613
  return cached;
596
614
  }
597
615
  const regions = await listRegions(apiClient);
598
- await saveRegionsCache(regions, logger);
616
+ await saveRegionsCache(profileName, regions, logger);
599
617
  return regions;
600
618
  }
601
619
  async function resolveRegion(opts) {
602
- const { options, apiClient, logger, required } = opts;
620
+ const { options, apiClient, profileName, logger, required } = opts;
603
621
  // Fetch regions (with caching)
604
- const regions = await fetchRegionsWithCache(apiClient, logger);
622
+ const regions = await fetchRegionsWithCache(profileName, apiClient, logger);
605
623
  // No regions available
606
624
  if (regions.length === 0) {
607
625
  if (required) {
@@ -876,7 +894,7 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
876
894
  if (error &&
877
895
  typeof error === 'object' &&
878
896
  'name' in error &&
879
- error.name === 'ProjectConfigNotFoundExpection') {
897
+ error.name === 'ProjectConfigNotFoundException') {
880
898
  // If TTY is available, prompt user to select a project
881
899
  const hasTTY = process.stdin.isTTY && process.stdout.isTTY;
882
900
  if (hasTTY) {
@@ -964,6 +982,7 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
964
982
  return resolveRegion({
965
983
  options: options,
966
984
  apiClient,
985
+ profileName: baseCtx.config?.name ?? defaultProfileName,
967
986
  logger: baseCtx.logger,
968
987
  required: !!normalized.requiresRegion,
969
988
  region: project?.region,
@@ -1021,6 +1040,7 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
1021
1040
  return resolveRegion({
1022
1041
  options: options,
1023
1042
  apiClient,
1043
+ profileName: baseCtx.config?.name ?? defaultProfileName,
1024
1044
  logger: baseCtx.logger,
1025
1045
  required: !!normalized.requiresRegion,
1026
1046
  region: project?.region,
@@ -1106,6 +1126,7 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
1106
1126
  const region = await resolveRegion({
1107
1127
  options: options,
1108
1128
  apiClient,
1129
+ profileName: baseCtx.config?.name ?? defaultProfileName,
1109
1130
  logger: baseCtx.logger,
1110
1131
  required: !!normalized.requiresRegion,
1111
1132
  region: project?.region,
@@ -1159,6 +1180,7 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
1159
1180
  const region = await resolveRegion({
1160
1181
  options: options,
1161
1182
  apiClient,
1183
+ profileName: baseCtx.config?.name ?? defaultProfileName,
1162
1184
  logger: baseCtx.logger,
1163
1185
  required: !!normalized.requiresRegion,
1164
1186
  });
@@ -1248,6 +1270,7 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
1248
1270
  const region = await resolveRegion({
1249
1271
  options: options,
1250
1272
  apiClient,
1273
+ profileName: baseCtx.config?.name ?? defaultProfileName,
1251
1274
  logger: baseCtx.logger,
1252
1275
  required: !!normalized.requiresRegion,
1253
1276
  region: project?.region,
@@ -1348,6 +1371,7 @@ export async function registerCommands(program, commands, baseCtx) {
1348
1371
  const region = await resolveRegion({
1349
1372
  options: baseCtx.options,
1350
1373
  apiClient,
1374
+ profileName: baseCtx.config?.name ?? defaultProfileName,
1351
1375
  logger: baseCtx.logger,
1352
1376
  required: !!normalized.requiresRegion,
1353
1377
  });
@@ -1397,6 +1421,7 @@ export async function registerCommands(program, commands, baseCtx) {
1397
1421
  const region = await resolveRegion({
1398
1422
  options: baseCtx.options,
1399
1423
  apiClient,
1424
+ profileName: baseCtx.config?.name ?? defaultProfileName,
1400
1425
  logger: baseCtx.logger,
1401
1426
  required: !!normalized.requiresRegion,
1402
1427
  });
@@ -1418,6 +1443,7 @@ export async function registerCommands(program, commands, baseCtx) {
1418
1443
  const region = await resolveRegion({
1419
1444
  options: baseCtx.options,
1420
1445
  apiClient,
1446
+ profileName: baseCtx.config?.name ?? defaultProfileName,
1421
1447
  logger: baseCtx.logger,
1422
1448
  required: !!normalized.requiresRegion,
1423
1449
  });