@agentuity/cli 0.1.9 → 0.1.11

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 (323) 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 -32
  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/auth/logout.d.ts.map +1 -1
  20. package/dist/cmd/auth/logout.js +5 -2
  21. package/dist/cmd/auth/logout.js.map +1 -1
  22. package/dist/cmd/build/ast.d.ts.map +1 -1
  23. package/dist/cmd/build/ast.js +87 -1
  24. package/dist/cmd/build/ast.js.map +1 -1
  25. package/dist/cmd/build/vite/vite-asset-server-config.d.ts.map +1 -1
  26. package/dist/cmd/build/vite/vite-asset-server-config.js +8 -3
  27. package/dist/cmd/build/vite/vite-asset-server-config.js.map +1 -1
  28. package/dist/cmd/build/vite/vite-asset-server.d.ts.map +1 -1
  29. package/dist/cmd/build/vite/vite-asset-server.js +5 -3
  30. package/dist/cmd/build/vite/vite-asset-server.js.map +1 -1
  31. package/dist/cmd/cloud/db/delete.d.ts.map +1 -1
  32. package/dist/cmd/cloud/db/delete.js +69 -11
  33. package/dist/cmd/cloud/db/delete.js.map +1 -1
  34. package/dist/cmd/cloud/db/get.d.ts.map +1 -1
  35. package/dist/cmd/cloud/db/get.js +23 -7
  36. package/dist/cmd/cloud/db/get.js.map +1 -1
  37. package/dist/cmd/cloud/db/list.d.ts.map +1 -1
  38. package/dist/cmd/cloud/db/list.js +15 -7
  39. package/dist/cmd/cloud/db/list.js.map +1 -1
  40. package/dist/cmd/cloud/db/logs.d.ts.map +1 -1
  41. package/dist/cmd/cloud/db/logs.js +24 -4
  42. package/dist/cmd/cloud/db/logs.js.map +1 -1
  43. package/dist/cmd/cloud/deploy.d.ts.map +1 -1
  44. package/dist/cmd/cloud/deploy.js +38 -0
  45. package/dist/cmd/cloud/deploy.js.map +1 -1
  46. package/dist/cmd/cloud/env/delete.d.ts.map +1 -1
  47. package/dist/cmd/cloud/env/delete.js +30 -13
  48. package/dist/cmd/cloud/env/delete.js.map +1 -1
  49. package/dist/cmd/cloud/env/get.d.ts.map +1 -1
  50. package/dist/cmd/cloud/env/get.js +27 -30
  51. package/dist/cmd/cloud/env/get.js.map +1 -1
  52. package/dist/cmd/cloud/env/import.d.ts.map +1 -1
  53. package/dist/cmd/cloud/env/import.js +41 -48
  54. package/dist/cmd/cloud/env/import.js.map +1 -1
  55. package/dist/cmd/cloud/env/index.d.ts.map +1 -1
  56. package/dist/cmd/cloud/env/index.js +6 -2
  57. package/dist/cmd/cloud/env/index.js.map +1 -1
  58. package/dist/cmd/cloud/env/list.d.ts.map +1 -1
  59. package/dist/cmd/cloud/env/list.js +51 -28
  60. package/dist/cmd/cloud/env/list.js.map +1 -1
  61. package/dist/cmd/cloud/env/pull.d.ts.map +1 -1
  62. package/dist/cmd/cloud/env/pull.js +3 -3
  63. package/dist/cmd/cloud/env/pull.js.map +1 -1
  64. package/dist/cmd/cloud/env/push.d.ts.map +1 -1
  65. package/dist/cmd/cloud/env/push.js +31 -11
  66. package/dist/cmd/cloud/env/push.js.map +1 -1
  67. package/dist/cmd/cloud/env/set.d.ts.map +1 -1
  68. package/dist/cmd/cloud/env/set.js +41 -26
  69. package/dist/cmd/cloud/env/set.js.map +1 -1
  70. package/dist/cmd/cloud/index.d.ts.map +1 -1
  71. package/dist/cmd/cloud/index.js +0 -2
  72. package/dist/cmd/cloud/index.js.map +1 -1
  73. package/dist/cmd/cloud/region-lookup.d.ts +18 -0
  74. package/dist/cmd/cloud/region-lookup.d.ts.map +1 -0
  75. package/dist/cmd/cloud/region-lookup.js +64 -0
  76. package/dist/cmd/cloud/region-lookup.js.map +1 -0
  77. package/dist/cmd/cloud/sandbox/cp.d.ts.map +1 -1
  78. package/dist/cmd/cloud/sandbox/cp.js +5 -3
  79. package/dist/cmd/cloud/sandbox/cp.js.map +1 -1
  80. package/dist/cmd/cloud/sandbox/create.d.ts.map +1 -1
  81. package/dist/cmd/cloud/sandbox/create.js +43 -6
  82. package/dist/cmd/cloud/sandbox/create.js.map +1 -1
  83. package/dist/cmd/cloud/sandbox/delete.d.ts.map +1 -1
  84. package/dist/cmd/cloud/sandbox/delete.js +5 -3
  85. package/dist/cmd/cloud/sandbox/delete.js.map +1 -1
  86. package/dist/cmd/cloud/sandbox/download.d.ts.map +1 -1
  87. package/dist/cmd/cloud/sandbox/download.js +4 -3
  88. package/dist/cmd/cloud/sandbox/download.js.map +1 -1
  89. package/dist/cmd/cloud/sandbox/env.d.ts.map +1 -1
  90. package/dist/cmd/cloud/sandbox/env.js +4 -3
  91. package/dist/cmd/cloud/sandbox/env.js.map +1 -1
  92. package/dist/cmd/cloud/sandbox/exec.d.ts.map +1 -1
  93. package/dist/cmd/cloud/sandbox/exec.js +4 -3
  94. package/dist/cmd/cloud/sandbox/exec.js.map +1 -1
  95. package/dist/cmd/cloud/sandbox/execution/get.js +4 -4
  96. package/dist/cmd/cloud/sandbox/execution/get.js.map +1 -1
  97. package/dist/cmd/cloud/sandbox/execution/index.js +1 -1
  98. package/dist/cmd/cloud/sandbox/execution/index.js.map +1 -1
  99. package/dist/cmd/cloud/sandbox/execution/list.d.ts.map +1 -1
  100. package/dist/cmd/cloud/sandbox/execution/list.js +4 -3
  101. package/dist/cmd/cloud/sandbox/execution/list.js.map +1 -1
  102. package/dist/cmd/cloud/sandbox/get.d.ts.map +1 -1
  103. package/dist/cmd/cloud/sandbox/get.js +9 -4
  104. package/dist/cmd/cloud/sandbox/get.js.map +1 -1
  105. package/dist/cmd/cloud/sandbox/index.js +1 -1
  106. package/dist/cmd/cloud/sandbox/index.js.map +1 -1
  107. package/dist/cmd/cloud/sandbox/list.js +4 -4
  108. package/dist/cmd/cloud/sandbox/list.js.map +1 -1
  109. package/dist/cmd/cloud/sandbox/ls.d.ts.map +1 -1
  110. package/dist/cmd/cloud/sandbox/ls.js +4 -3
  111. package/dist/cmd/cloud/sandbox/ls.js.map +1 -1
  112. package/dist/cmd/cloud/sandbox/mkdir.d.ts.map +1 -1
  113. package/dist/cmd/cloud/sandbox/mkdir.js +4 -3
  114. package/dist/cmd/cloud/sandbox/mkdir.js.map +1 -1
  115. package/dist/cmd/cloud/sandbox/rm.d.ts.map +1 -1
  116. package/dist/cmd/cloud/sandbox/rm.js +4 -3
  117. package/dist/cmd/cloud/sandbox/rm.js.map +1 -1
  118. package/dist/cmd/cloud/sandbox/rmdir.d.ts.map +1 -1
  119. package/dist/cmd/cloud/sandbox/rmdir.js +4 -3
  120. package/dist/cmd/cloud/sandbox/rmdir.js.map +1 -1
  121. package/dist/cmd/cloud/sandbox/run.d.ts.map +1 -1
  122. package/dist/cmd/cloud/sandbox/run.js +44 -6
  123. package/dist/cmd/cloud/sandbox/run.js.map +1 -1
  124. package/dist/cmd/cloud/sandbox/runtime/index.js +1 -1
  125. package/dist/cmd/cloud/sandbox/runtime/index.js.map +1 -1
  126. package/dist/cmd/cloud/sandbox/runtime/list.js +4 -4
  127. package/dist/cmd/cloud/sandbox/runtime/list.js.map +1 -1
  128. package/dist/cmd/cloud/sandbox/snapshot/build.d.ts +5 -0
  129. package/dist/cmd/cloud/sandbox/snapshot/build.d.ts.map +1 -0
  130. package/dist/cmd/cloud/sandbox/snapshot/build.js +574 -0
  131. package/dist/cmd/cloud/sandbox/snapshot/build.js.map +1 -0
  132. package/dist/cmd/cloud/sandbox/snapshot/create.d.ts.map +1 -1
  133. package/dist/cmd/cloud/sandbox/snapshot/create.js +5 -3
  134. package/dist/cmd/cloud/sandbox/snapshot/create.js.map +1 -1
  135. package/dist/cmd/cloud/sandbox/snapshot/delete.js +4 -4
  136. package/dist/cmd/cloud/sandbox/snapshot/delete.js.map +1 -1
  137. package/dist/cmd/cloud/sandbox/snapshot/generate.d.ts +3 -0
  138. package/dist/cmd/cloud/sandbox/snapshot/generate.d.ts.map +1 -0
  139. package/dist/cmd/cloud/sandbox/snapshot/generate.js +127 -0
  140. package/dist/cmd/cloud/sandbox/snapshot/generate.js.map +1 -0
  141. package/dist/cmd/cloud/sandbox/snapshot/get.d.ts.map +1 -1
  142. package/dist/cmd/cloud/sandbox/snapshot/get.js +20 -4
  143. package/dist/cmd/cloud/sandbox/snapshot/get.js.map +1 -1
  144. package/dist/cmd/cloud/sandbox/snapshot/index.d.ts.map +1 -1
  145. package/dist/cmd/cloud/sandbox/snapshot/index.js +20 -2
  146. package/dist/cmd/cloud/sandbox/snapshot/index.js.map +1 -1
  147. package/dist/cmd/cloud/sandbox/snapshot/list.js +4 -4
  148. package/dist/cmd/cloud/sandbox/snapshot/list.js.map +1 -1
  149. package/dist/cmd/cloud/sandbox/snapshot/tag.d.ts.map +1 -1
  150. package/dist/cmd/cloud/sandbox/snapshot/tag.js +4 -4
  151. package/dist/cmd/cloud/sandbox/snapshot/tag.js.map +1 -1
  152. package/dist/cmd/cloud/sandbox/upload.d.ts.map +1 -1
  153. package/dist/cmd/cloud/sandbox/upload.js +4 -3
  154. package/dist/cmd/cloud/sandbox/upload.js.map +1 -1
  155. package/dist/cmd/cloud/sandbox/util.d.ts +13 -0
  156. package/dist/cmd/cloud/sandbox/util.d.ts.map +1 -1
  157. package/dist/cmd/cloud/sandbox/util.js +40 -1
  158. package/dist/cmd/cloud/sandbox/util.js.map +1 -1
  159. package/dist/cmd/cloud/scp/download.d.ts.map +1 -1
  160. package/dist/cmd/cloud/scp/download.js +6 -2
  161. package/dist/cmd/cloud/scp/download.js.map +1 -1
  162. package/dist/cmd/cloud/scp/upload.d.ts.map +1 -1
  163. package/dist/cmd/cloud/scp/upload.js +6 -2
  164. package/dist/cmd/cloud/scp/upload.js.map +1 -1
  165. package/dist/cmd/cloud/session/get.js +4 -4
  166. package/dist/cmd/cloud/session/get.js.map +1 -1
  167. package/dist/cmd/cloud/session/list.js +4 -4
  168. package/dist/cmd/cloud/session/list.js.map +1 -1
  169. package/dist/cmd/cloud/ssh.d.ts.map +1 -1
  170. package/dist/cmd/cloud/ssh.js +7 -2
  171. package/dist/cmd/cloud/ssh.js.map +1 -1
  172. package/dist/cmd/cloud/storage/delete.d.ts.map +1 -1
  173. package/dist/cmd/cloud/storage/delete.js +46 -10
  174. package/dist/cmd/cloud/storage/delete.js.map +1 -1
  175. package/dist/cmd/cloud/storage/download.d.ts.map +1 -1
  176. package/dist/cmd/cloud/storage/download.js +19 -6
  177. package/dist/cmd/cloud/storage/download.js.map +1 -1
  178. package/dist/cmd/cloud/storage/get.d.ts.map +1 -1
  179. package/dist/cmd/cloud/storage/get.js +19 -6
  180. package/dist/cmd/cloud/storage/get.js.map +1 -1
  181. package/dist/cmd/cloud/storage/list.d.ts.map +1 -1
  182. package/dist/cmd/cloud/storage/list.js +17 -7
  183. package/dist/cmd/cloud/storage/list.js.map +1 -1
  184. package/dist/cmd/cloud/storage/upload.d.ts.map +1 -1
  185. package/dist/cmd/cloud/storage/upload.js +19 -6
  186. package/dist/cmd/cloud/storage/upload.js.map +1 -1
  187. package/dist/cmd/cloud/thread/delete.js +4 -4
  188. package/dist/cmd/cloud/thread/delete.js.map +1 -1
  189. package/dist/cmd/cloud/thread/get.js +4 -4
  190. package/dist/cmd/cloud/thread/get.js.map +1 -1
  191. package/dist/cmd/cloud/thread/list.js +4 -4
  192. package/dist/cmd/cloud/thread/list.js.map +1 -1
  193. package/dist/cmd/project/auth/init.d.ts.map +1 -1
  194. package/dist/cmd/project/auth/init.js +6 -3
  195. package/dist/cmd/project/auth/init.js.map +1 -1
  196. package/dist/cmd/project/auth/shared.d.ts +6 -2
  197. package/dist/cmd/project/auth/shared.d.ts.map +1 -1
  198. package/dist/cmd/project/auth/shared.js +41 -13
  199. package/dist/cmd/project/auth/shared.js.map +1 -1
  200. package/dist/config.d.ts +37 -0
  201. package/dist/config.d.ts.map +1 -1
  202. package/dist/config.js +55 -8
  203. package/dist/config.js.map +1 -1
  204. package/dist/env-util.d.ts +25 -2
  205. package/dist/env-util.d.ts.map +1 -1
  206. package/dist/env-util.js +44 -4
  207. package/dist/env-util.js.map +1 -1
  208. package/dist/utils/apt-validator.d.ts +20 -0
  209. package/dist/utils/apt-validator.d.ts.map +1 -0
  210. package/dist/utils/apt-validator.js +157 -0
  211. package/dist/utils/apt-validator.js.map +1 -0
  212. package/package.json +6 -6
  213. package/src/cache/index.ts +11 -0
  214. package/src/cache/resource-region.ts +183 -0
  215. package/src/cli.ts +47 -38
  216. package/src/cmd/ai/capabilities/show.ts +12 -15
  217. package/src/cmd/ai/prompt/llm.ts +5 -5
  218. package/src/cmd/auth/logout.ts +5 -2
  219. package/src/cmd/build/ast.ts +160 -1
  220. package/src/cmd/build/vite/vite-asset-server-config.ts +7 -3
  221. package/src/cmd/build/vite/vite-asset-server.ts +6 -3
  222. package/src/cmd/cloud/db/delete.ts +83 -11
  223. package/src/cmd/cloud/db/get.ts +29 -7
  224. package/src/cmd/cloud/db/list.ts +16 -7
  225. package/src/cmd/cloud/db/logs.ts +33 -4
  226. package/src/cmd/cloud/deploy.ts +49 -0
  227. package/src/cmd/cloud/env/delete.ts +36 -12
  228. package/src/cmd/cloud/env/get.ts +28 -27
  229. package/src/cmd/cloud/env/import.ts +43 -56
  230. package/src/cmd/cloud/env/index.ts +6 -2
  231. package/src/cmd/cloud/env/list.ts +57 -30
  232. package/src/cmd/cloud/env/pull.ts +9 -3
  233. package/src/cmd/cloud/env/push.ts +44 -11
  234. package/src/cmd/cloud/env/set.ts +49 -30
  235. package/src/cmd/cloud/index.ts +0 -2
  236. package/src/cmd/cloud/region-lookup.ts +89 -0
  237. package/src/cmd/cloud/sandbox/cp.ts +5 -3
  238. package/src/cmd/cloud/sandbox/create.ts +50 -6
  239. package/src/cmd/cloud/sandbox/delete.ts +6 -3
  240. package/src/cmd/cloud/sandbox/download.ts +4 -3
  241. package/src/cmd/cloud/sandbox/env.ts +4 -3
  242. package/src/cmd/cloud/sandbox/exec.ts +4 -3
  243. package/src/cmd/cloud/sandbox/execution/get.ts +4 -4
  244. package/src/cmd/cloud/sandbox/execution/index.ts +1 -1
  245. package/src/cmd/cloud/sandbox/execution/list.ts +4 -3
  246. package/src/cmd/cloud/sandbox/get.ts +10 -4
  247. package/src/cmd/cloud/sandbox/index.ts +1 -1
  248. package/src/cmd/cloud/sandbox/list.ts +4 -4
  249. package/src/cmd/cloud/sandbox/ls.ts +4 -3
  250. package/src/cmd/cloud/sandbox/mkdir.ts +4 -3
  251. package/src/cmd/cloud/sandbox/rm.ts +4 -3
  252. package/src/cmd/cloud/sandbox/rmdir.ts +4 -3
  253. package/src/cmd/cloud/sandbox/run.ts +51 -6
  254. package/src/cmd/cloud/sandbox/runtime/index.ts +1 -1
  255. package/src/cmd/cloud/sandbox/runtime/list.ts +4 -4
  256. package/src/cmd/cloud/sandbox/snapshot/build.ts +696 -0
  257. package/src/cmd/cloud/sandbox/snapshot/create.ts +11 -5
  258. package/src/cmd/cloud/sandbox/snapshot/delete.ts +4 -4
  259. package/src/cmd/cloud/sandbox/snapshot/generate.ts +134 -0
  260. package/src/cmd/cloud/sandbox/snapshot/get.ts +23 -4
  261. package/src/cmd/cloud/sandbox/snapshot/index.ts +20 -2
  262. package/src/cmd/cloud/sandbox/snapshot/list.ts +4 -4
  263. package/src/cmd/cloud/sandbox/snapshot/tag.ts +7 -5
  264. package/src/cmd/cloud/sandbox/upload.ts +4 -3
  265. package/src/cmd/cloud/sandbox/util.ts +60 -1
  266. package/src/cmd/cloud/scp/download.ts +14 -2
  267. package/src/cmd/cloud/scp/upload.ts +14 -2
  268. package/src/cmd/cloud/session/get.ts +4 -4
  269. package/src/cmd/cloud/session/list.ts +4 -4
  270. package/src/cmd/cloud/ssh.ts +15 -2
  271. package/src/cmd/cloud/storage/delete.ts +61 -10
  272. package/src/cmd/cloud/storage/download.ts +31 -6
  273. package/src/cmd/cloud/storage/get.ts +31 -6
  274. package/src/cmd/cloud/storage/list.ts +18 -7
  275. package/src/cmd/cloud/storage/upload.ts +31 -6
  276. package/src/cmd/cloud/thread/delete.ts +4 -4
  277. package/src/cmd/cloud/thread/get.ts +4 -4
  278. package/src/cmd/cloud/thread/list.ts +4 -4
  279. package/src/cmd/project/auth/init.ts +7 -3
  280. package/src/cmd/project/auth/shared.ts +53 -14
  281. package/src/config.ts +69 -8
  282. package/src/env-util.ts +50 -5
  283. package/src/utils/apt-validator.ts +215 -0
  284. package/dist/cmd/cloud/secret/delete.d.ts +0 -2
  285. package/dist/cmd/cloud/secret/delete.d.ts.map +0 -1
  286. package/dist/cmd/cloud/secret/delete.js +0 -53
  287. package/dist/cmd/cloud/secret/delete.js.map +0 -1
  288. package/dist/cmd/cloud/secret/get.d.ts +0 -2
  289. package/dist/cmd/cloud/secret/get.d.ts.map +0 -1
  290. package/dist/cmd/cloud/secret/get.js +0 -73
  291. package/dist/cmd/cloud/secret/get.js.map +0 -1
  292. package/dist/cmd/cloud/secret/import.d.ts +0 -2
  293. package/dist/cmd/cloud/secret/import.d.ts.map +0 -1
  294. package/dist/cmd/cloud/secret/import.js +0 -91
  295. package/dist/cmd/cloud/secret/import.js.map +0 -1
  296. package/dist/cmd/cloud/secret/index.d.ts +0 -3
  297. package/dist/cmd/cloud/secret/index.d.ts.map +0 -1
  298. package/dist/cmd/cloud/secret/index.js +0 -33
  299. package/dist/cmd/cloud/secret/index.js.map +0 -1
  300. package/dist/cmd/cloud/secret/list.d.ts +0 -2
  301. package/dist/cmd/cloud/secret/list.d.ts.map +0 -1
  302. package/dist/cmd/cloud/secret/list.js +0 -65
  303. package/dist/cmd/cloud/secret/list.js.map +0 -1
  304. package/dist/cmd/cloud/secret/pull.d.ts +0 -2
  305. package/dist/cmd/cloud/secret/pull.d.ts.map +0 -1
  306. package/dist/cmd/cloud/secret/pull.js +0 -82
  307. package/dist/cmd/cloud/secret/pull.js.map +0 -1
  308. package/dist/cmd/cloud/secret/push.d.ts +0 -2
  309. package/dist/cmd/cloud/secret/push.d.ts.map +0 -1
  310. package/dist/cmd/cloud/secret/push.js +0 -61
  311. package/dist/cmd/cloud/secret/push.js.map +0 -1
  312. package/dist/cmd/cloud/secret/set.d.ts +0 -2
  313. package/dist/cmd/cloud/secret/set.d.ts.map +0 -1
  314. package/dist/cmd/cloud/secret/set.js +0 -63
  315. package/dist/cmd/cloud/secret/set.js.map +0 -1
  316. package/src/cmd/cloud/secret/delete.ts +0 -65
  317. package/src/cmd/cloud/secret/get.ts +0 -77
  318. package/src/cmd/cloud/secret/import.ts +0 -110
  319. package/src/cmd/cloud/secret/index.ts +0 -33
  320. package/src/cmd/cloud/secret/list.ts +0 -70
  321. package/src/cmd/cloud/secret/pull.ts +0 -92
  322. package/src/cmd/cloud/secret/push.ts +0 -69
  323. 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;AAi9BD,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC,CAmMf"}
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,64 +550,76 @@ 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(apiUrl, 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;
561
579
  }
562
580
  const data = await file.json();
563
- // Check if cache is for the same API URL (profile-aware)
564
- if (data.apiUrl && data.apiUrl !== apiUrl) {
565
- logger.trace('regions cache is for different API URL (cached: %s, current: %s)', data.apiUrl, apiUrl);
566
- return null;
567
- }
568
581
  const age = Date.now() - data.timestamp;
569
582
  if (age > REGIONS_CACHE_MAX_AGE_MS) {
570
- logger.trace('regions cache expired (age: %dms)', age);
583
+ logger.trace('regions cache expired for profile %s (age: %dms)', profileName, age);
571
584
  return null;
572
585
  }
573
- logger.trace('using cached regions (age: %dms)', age);
586
+ logger.trace('using cached regions for profile %s (age: %dms)', profileName, age);
574
587
  return data.regions;
575
588
  }
576
589
  catch (error) {
577
- logger.trace('failed to read regions cache: %s', error);
590
+ logger.trace('failed to read regions cache for profile %s: %s', profileName, error);
578
591
  return null;
579
592
  }
580
593
  }
581
- async function saveRegionsCache(apiUrl, regions, logger) {
594
+ async function saveRegionsCache(profileName, regions, logger) {
582
595
  try {
583
596
  const cacheDir = getDefaultConfigDir();
584
597
  await mkdir(cacheDir, { recursive: true });
585
- const cachePath = join(cacheDir, REGIONS_CACHE_FILE);
598
+ const cachePath = join(cacheDir, getRegionsCacheFile(profileName));
586
599
  const data = {
587
600
  timestamp: Date.now(),
588
601
  regions,
589
- apiUrl,
590
602
  };
591
603
  await Bun.write(cachePath, JSON.stringify(data));
592
- logger.trace('saved regions cache for %s', apiUrl);
604
+ logger.trace('saved regions cache for profile %s', profileName);
593
605
  }
594
606
  catch (error) {
595
- logger.trace('failed to save regions cache: %s', error);
607
+ logger.trace('failed to save regions cache for profile %s: %s', profileName, error);
596
608
  }
597
609
  }
598
- async function fetchRegionsWithCache(apiUrl, apiClient, logger) {
599
- const cached = await getCachedRegions(apiUrl, logger);
610
+ async function fetchRegionsWithCache(profileName, apiClient, logger) {
611
+ const cached = await getCachedRegions(profileName, logger);
600
612
  if (cached) {
601
613
  return cached;
602
614
  }
603
615
  const regions = await listRegions(apiClient);
604
- await saveRegionsCache(apiUrl, regions, logger);
616
+ await saveRegionsCache(profileName, regions, logger);
605
617
  return regions;
606
618
  }
607
619
  async function resolveRegion(opts) {
608
- const { options, apiClient, apiUrl, logger, required } = opts;
620
+ const { options, apiClient, profileName, logger, required } = opts;
609
621
  // Fetch regions (with caching)
610
- const regions = await fetchRegionsWithCache(apiUrl, apiClient, logger);
622
+ const regions = await fetchRegionsWithCache(profileName, apiClient, logger);
611
623
  // No regions available
612
624
  if (regions.length === 0) {
613
625
  if (required) {
@@ -882,7 +894,7 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
882
894
  if (error &&
883
895
  typeof error === 'object' &&
884
896
  'name' in error &&
885
- error.name === 'ProjectConfigNotFoundExpection') {
897
+ error.name === 'ProjectConfigNotFoundException') {
886
898
  // If TTY is available, prompt user to select a project
887
899
  const hasTTY = process.stdin.isTTY && process.stdout.isTTY;
888
900
  if (hasTTY) {
@@ -970,7 +982,7 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
970
982
  return resolveRegion({
971
983
  options: options,
972
984
  apiClient,
973
- apiUrl: getAPIBaseURL(baseCtx.config),
985
+ profileName: baseCtx.config?.name ?? defaultProfileName,
974
986
  logger: baseCtx.logger,
975
987
  required: !!normalized.requiresRegion,
976
988
  region: project?.region,
@@ -1028,7 +1040,7 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
1028
1040
  return resolveRegion({
1029
1041
  options: options,
1030
1042
  apiClient,
1031
- apiUrl: getAPIBaseURL(baseCtx.config),
1043
+ profileName: baseCtx.config?.name ?? defaultProfileName,
1032
1044
  logger: baseCtx.logger,
1033
1045
  required: !!normalized.requiresRegion,
1034
1046
  region: project?.region,
@@ -1114,7 +1126,7 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
1114
1126
  const region = await resolveRegion({
1115
1127
  options: options,
1116
1128
  apiClient,
1117
- apiUrl: getAPIBaseURL(baseCtx.config),
1129
+ profileName: baseCtx.config?.name ?? defaultProfileName,
1118
1130
  logger: baseCtx.logger,
1119
1131
  required: !!normalized.requiresRegion,
1120
1132
  region: project?.region,
@@ -1168,7 +1180,7 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
1168
1180
  const region = await resolveRegion({
1169
1181
  options: options,
1170
1182
  apiClient,
1171
- apiUrl: getAPIBaseURL(baseCtx.config),
1183
+ profileName: baseCtx.config?.name ?? defaultProfileName,
1172
1184
  logger: baseCtx.logger,
1173
1185
  required: !!normalized.requiresRegion,
1174
1186
  });
@@ -1258,7 +1270,7 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
1258
1270
  const region = await resolveRegion({
1259
1271
  options: options,
1260
1272
  apiClient,
1261
- apiUrl: getAPIBaseURL(baseCtx.config),
1273
+ profileName: baseCtx.config?.name ?? defaultProfileName,
1262
1274
  logger: baseCtx.logger,
1263
1275
  required: !!normalized.requiresRegion,
1264
1276
  region: project?.region,
@@ -1359,7 +1371,7 @@ export async function registerCommands(program, commands, baseCtx) {
1359
1371
  const region = await resolveRegion({
1360
1372
  options: baseCtx.options,
1361
1373
  apiClient,
1362
- apiUrl: getAPIBaseURL(baseCtx.config),
1374
+ profileName: baseCtx.config?.name ?? defaultProfileName,
1363
1375
  logger: baseCtx.logger,
1364
1376
  required: !!normalized.requiresRegion,
1365
1377
  });
@@ -1409,7 +1421,7 @@ export async function registerCommands(program, commands, baseCtx) {
1409
1421
  const region = await resolveRegion({
1410
1422
  options: baseCtx.options,
1411
1423
  apiClient,
1412
- apiUrl: getAPIBaseURL(baseCtx.config),
1424
+ profileName: baseCtx.config?.name ?? defaultProfileName,
1413
1425
  logger: baseCtx.logger,
1414
1426
  required: !!normalized.requiresRegion,
1415
1427
  });
@@ -1431,7 +1443,7 @@ export async function registerCommands(program, commands, baseCtx) {
1431
1443
  const region = await resolveRegion({
1432
1444
  options: baseCtx.options,
1433
1445
  apiClient,
1434
- apiUrl: getAPIBaseURL(baseCtx.config),
1446
+ profileName: baseCtx.config?.name ?? defaultProfileName,
1435
1447
  logger: baseCtx.logger,
1436
1448
  required: !!normalized.requiresRegion,
1437
1449
  });