@agentuity/cli 1.0.21 → 1.0.23

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 (318) hide show
  1. package/dist/auth.d.ts.map +1 -1
  2. package/dist/auth.js +7 -0
  3. package/dist/auth.js.map +1 -1
  4. package/dist/cache/resource-region.d.ts +1 -1
  5. package/dist/cache/resource-region.d.ts.map +1 -1
  6. package/dist/cache/resource-region.js.map +1 -1
  7. package/dist/cmd/ai/claude-code/install.d.ts.map +1 -1
  8. package/dist/cmd/ai/claude-code/install.js +0 -1
  9. package/dist/cmd/ai/claude-code/install.js.map +1 -1
  10. package/dist/cmd/build/vite/public-asset-path-plugin.d.ts +4 -2
  11. package/dist/cmd/build/vite/public-asset-path-plugin.d.ts.map +1 -1
  12. package/dist/cmd/build/vite/public-asset-path-plugin.js +18 -4
  13. package/dist/cmd/build/vite/public-asset-path-plugin.js.map +1 -1
  14. package/dist/cmd/cloud/deploy.d.ts.map +1 -1
  15. package/dist/cmd/cloud/deploy.js +1 -1
  16. package/dist/cmd/cloud/deploy.js.map +1 -1
  17. package/dist/cmd/cloud/email/create.d.ts +3 -0
  18. package/dist/cmd/cloud/email/create.d.ts.map +1 -0
  19. package/dist/cmd/cloud/email/create.js +58 -0
  20. package/dist/cmd/cloud/email/create.js.map +1 -0
  21. package/dist/cmd/cloud/email/delete.d.ts +3 -0
  22. package/dist/cmd/cloud/email/delete.d.ts.map +1 -0
  23. package/dist/cmd/cloud/email/delete.js +47 -0
  24. package/dist/cmd/cloud/email/delete.js.map +1 -0
  25. package/dist/cmd/cloud/email/destination/delete.d.ts +3 -0
  26. package/dist/cmd/cloud/email/destination/delete.d.ts.map +1 -0
  27. package/dist/cmd/cloud/email/destination/delete.js +54 -0
  28. package/dist/cmd/cloud/email/destination/delete.js.map +1 -0
  29. package/dist/cmd/cloud/email/destination/index.d.ts +3 -0
  30. package/dist/cmd/cloud/email/destination/index.d.ts.map +1 -0
  31. package/dist/cmd/cloud/email/destination/index.js +14 -0
  32. package/dist/cmd/cloud/email/destination/index.js.map +1 -0
  33. package/dist/cmd/cloud/email/destination/list.d.ts +3 -0
  34. package/dist/cmd/cloud/email/destination/list.d.ts.map +1 -0
  35. package/dist/cmd/cloud/email/destination/list.js +39 -0
  36. package/dist/cmd/cloud/email/destination/list.js.map +1 -0
  37. package/dist/cmd/cloud/email/destination/schemas.d.ts +9 -0
  38. package/dist/cmd/cloud/email/destination/schemas.d.ts.map +1 -0
  39. package/dist/cmd/cloud/email/destination/schemas.js +9 -0
  40. package/dist/cmd/cloud/email/destination/schemas.js.map +1 -0
  41. package/dist/cmd/cloud/email/destination/url.d.ts +3 -0
  42. package/dist/cmd/cloud/email/destination/url.d.ts.map +1 -0
  43. package/dist/cmd/cloud/email/destination/url.js +64 -0
  44. package/dist/cmd/cloud/email/destination/url.js.map +1 -0
  45. package/dist/cmd/cloud/email/get.d.ts +3 -0
  46. package/dist/cmd/cloud/email/get.d.ts.map +1 -0
  47. package/dist/cmd/cloud/email/get.js +43 -0
  48. package/dist/cmd/cloud/email/get.js.map +1 -0
  49. package/dist/cmd/cloud/email/inbound/get.d.ts +3 -0
  50. package/dist/cmd/cloud/email/inbound/get.d.ts.map +1 -0
  51. package/dist/cmd/cloud/email/inbound/get.js +44 -0
  52. package/dist/cmd/cloud/email/inbound/get.js.map +1 -0
  53. package/dist/cmd/cloud/email/inbound/index.d.ts +3 -0
  54. package/dist/cmd/cloud/email/inbound/index.d.ts.map +1 -0
  55. package/dist/cmd/cloud/email/inbound/index.js +12 -0
  56. package/dist/cmd/cloud/email/inbound/index.js.map +1 -0
  57. package/dist/cmd/cloud/email/inbound/list.d.ts +3 -0
  58. package/dist/cmd/cloud/email/inbound/list.d.ts.map +1 -0
  59. package/dist/cmd/cloud/email/inbound/list.js +43 -0
  60. package/dist/cmd/cloud/email/inbound/list.js.map +1 -0
  61. package/dist/cmd/cloud/email/inbound/schemas.d.ts +11 -0
  62. package/dist/cmd/cloud/email/inbound/schemas.d.ts.map +1 -0
  63. package/dist/cmd/cloud/email/inbound/schemas.js +11 -0
  64. package/dist/cmd/cloud/email/inbound/schemas.js.map +1 -0
  65. package/dist/cmd/cloud/email/index.d.ts +3 -0
  66. package/dist/cmd/cloud/email/index.d.ts.map +1 -0
  67. package/dist/cmd/cloud/email/index.js +28 -0
  68. package/dist/cmd/cloud/email/index.js.map +1 -0
  69. package/dist/cmd/cloud/email/list.d.ts +3 -0
  70. package/dist/cmd/cloud/email/list.d.ts.map +1 -0
  71. package/dist/cmd/cloud/email/list.js +37 -0
  72. package/dist/cmd/cloud/email/list.js.map +1 -0
  73. package/dist/cmd/cloud/email/outbound/get.d.ts +3 -0
  74. package/dist/cmd/cloud/email/outbound/get.d.ts.map +1 -0
  75. package/dist/cmd/cloud/email/outbound/get.js +45 -0
  76. package/dist/cmd/cloud/email/outbound/get.js.map +1 -0
  77. package/dist/cmd/cloud/email/outbound/index.d.ts +3 -0
  78. package/dist/cmd/cloud/email/outbound/index.d.ts.map +1 -0
  79. package/dist/cmd/cloud/email/outbound/index.js +12 -0
  80. package/dist/cmd/cloud/email/outbound/index.js.map +1 -0
  81. package/dist/cmd/cloud/email/outbound/list.d.ts +3 -0
  82. package/dist/cmd/cloud/email/outbound/list.d.ts.map +1 -0
  83. package/dist/cmd/cloud/email/outbound/list.js +43 -0
  84. package/dist/cmd/cloud/email/outbound/list.js.map +1 -0
  85. package/dist/cmd/cloud/email/outbound/schemas.d.ts +15 -0
  86. package/dist/cmd/cloud/email/outbound/schemas.d.ts.map +1 -0
  87. package/dist/cmd/cloud/email/outbound/schemas.js +15 -0
  88. package/dist/cmd/cloud/email/outbound/schemas.js.map +1 -0
  89. package/dist/cmd/cloud/email/send.d.ts +3 -0
  90. package/dist/cmd/cloud/email/send.d.ts.map +1 -0
  91. package/dist/cmd/cloud/email/send.js +77 -0
  92. package/dist/cmd/cloud/email/send.js.map +1 -0
  93. package/dist/cmd/cloud/email/util.d.ts +26 -0
  94. package/dist/cmd/cloud/email/util.d.ts.map +1 -0
  95. package/dist/cmd/cloud/email/util.js +57 -0
  96. package/dist/cmd/cloud/email/util.js.map +1 -0
  97. package/dist/cmd/cloud/index.d.ts.map +1 -1
  98. package/dist/cmd/cloud/index.js +8 -0
  99. package/dist/cmd/cloud/index.js.map +1 -1
  100. package/dist/cmd/cloud/region-lookup.d.ts +1 -1
  101. package/dist/cmd/cloud/region-lookup.d.ts.map +1 -1
  102. package/dist/cmd/cloud/region-lookup.js +44 -2
  103. package/dist/cmd/cloud/region-lookup.js.map +1 -1
  104. package/dist/cmd/cloud/sandbox/snapshot/build.d.ts +7 -0
  105. package/dist/cmd/cloud/sandbox/snapshot/build.d.ts.map +1 -1
  106. package/dist/cmd/cloud/sandbox/snapshot/build.js +46 -28
  107. package/dist/cmd/cloud/sandbox/snapshot/build.js.map +1 -1
  108. package/dist/cmd/cloud/sandbox/snapshot/generate.d.ts.map +1 -1
  109. package/dist/cmd/cloud/sandbox/snapshot/generate.js +5 -1
  110. package/dist/cmd/cloud/sandbox/snapshot/generate.js.map +1 -1
  111. package/dist/cmd/cloud/schedule/create.d.ts +3 -0
  112. package/dist/cmd/cloud/schedule/create.d.ts.map +1 -0
  113. package/dist/cmd/cloud/schedule/create.js +72 -0
  114. package/dist/cmd/cloud/schedule/create.js.map +1 -0
  115. package/dist/cmd/cloud/schedule/delete.d.ts +3 -0
  116. package/dist/cmd/cloud/schedule/delete.d.ts.map +1 -0
  117. package/dist/cmd/cloud/schedule/delete.js +38 -0
  118. package/dist/cmd/cloud/schedule/delete.js.map +1 -0
  119. package/dist/cmd/cloud/schedule/delivery/get.d.ts +3 -0
  120. package/dist/cmd/cloud/schedule/delivery/get.d.ts.map +1 -0
  121. package/dist/cmd/cloud/schedule/delivery/get.js +78 -0
  122. package/dist/cmd/cloud/schedule/delivery/get.js.map +1 -0
  123. package/dist/cmd/cloud/schedule/delivery/index.d.ts +3 -0
  124. package/dist/cmd/cloud/schedule/delivery/index.d.ts.map +1 -0
  125. package/dist/cmd/cloud/schedule/delivery/index.js +23 -0
  126. package/dist/cmd/cloud/schedule/delivery/index.js.map +1 -0
  127. package/dist/cmd/cloud/schedule/delivery/list.d.ts +3 -0
  128. package/dist/cmd/cloud/schedule/delivery/list.d.ts.map +1 -0
  129. package/dist/cmd/cloud/schedule/delivery/list.js +67 -0
  130. package/dist/cmd/cloud/schedule/delivery/list.js.map +1 -0
  131. package/dist/cmd/cloud/schedule/destination/create.d.ts +3 -0
  132. package/dist/cmd/cloud/schedule/destination/create.d.ts.map +1 -0
  133. package/dist/cmd/cloud/schedule/destination/create.js +97 -0
  134. package/dist/cmd/cloud/schedule/destination/create.js.map +1 -0
  135. package/dist/cmd/cloud/schedule/destination/delete.d.ts +3 -0
  136. package/dist/cmd/cloud/schedule/destination/delete.d.ts.map +1 -0
  137. package/dist/cmd/cloud/schedule/destination/delete.js +41 -0
  138. package/dist/cmd/cloud/schedule/destination/delete.js.map +1 -0
  139. package/dist/cmd/cloud/schedule/destination/get.d.ts +3 -0
  140. package/dist/cmd/cloud/schedule/destination/get.d.ts.map +1 -0
  141. package/dist/cmd/cloud/schedule/destination/get.js +57 -0
  142. package/dist/cmd/cloud/schedule/destination/get.js.map +1 -0
  143. package/dist/cmd/cloud/schedule/destination/index.d.ts +3 -0
  144. package/dist/cmd/cloud/schedule/destination/index.d.ts.map +1 -0
  145. package/dist/cmd/cloud/schedule/destination/index.js +26 -0
  146. package/dist/cmd/cloud/schedule/destination/index.js.map +1 -0
  147. package/dist/cmd/cloud/schedule/destination/list.d.ts +3 -0
  148. package/dist/cmd/cloud/schedule/destination/list.d.ts.map +1 -0
  149. package/dist/cmd/cloud/schedule/destination/list.js +58 -0
  150. package/dist/cmd/cloud/schedule/destination/list.js.map +1 -0
  151. package/dist/cmd/cloud/schedule/get.d.ts +3 -0
  152. package/dist/cmd/cloud/schedule/get.d.ts.map +1 -0
  153. package/dist/cmd/cloud/schedule/get.js +76 -0
  154. package/dist/cmd/cloud/schedule/get.js.map +1 -0
  155. package/dist/cmd/cloud/schedule/index.d.ts +3 -0
  156. package/dist/cmd/cloud/schedule/index.d.ts.map +1 -0
  157. package/dist/cmd/cloud/schedule/index.js +35 -0
  158. package/dist/cmd/cloud/schedule/index.js.map +1 -0
  159. package/dist/cmd/cloud/schedule/list.d.ts +3 -0
  160. package/dist/cmd/cloud/schedule/list.d.ts.map +1 -0
  161. package/dist/cmd/cloud/schedule/list.js +60 -0
  162. package/dist/cmd/cloud/schedule/list.js.map +1 -0
  163. package/dist/cmd/cloud/schedule/update.d.ts +3 -0
  164. package/dist/cmd/cloud/schedule/update.d.ts.map +1 -0
  165. package/dist/cmd/cloud/schedule/update.js +65 -0
  166. package/dist/cmd/cloud/schedule/update.js.map +1 -0
  167. package/dist/cmd/cloud/schedule/util.d.ts +11 -0
  168. package/dist/cmd/cloud/schedule/util.d.ts.map +1 -0
  169. package/dist/cmd/cloud/schedule/util.js +17 -0
  170. package/dist/cmd/cloud/schedule/util.js.map +1 -0
  171. package/dist/cmd/cloud/task/create.d.ts +3 -0
  172. package/dist/cmd/cloud/task/create.d.ts.map +1 -0
  173. package/dist/cmd/cloud/task/create.js +108 -0
  174. package/dist/cmd/cloud/task/create.js.map +1 -0
  175. package/dist/cmd/cloud/task/get.d.ts +3 -0
  176. package/dist/cmd/cloud/task/get.d.ts.map +1 -0
  177. package/dist/cmd/cloud/task/get.js +124 -0
  178. package/dist/cmd/cloud/task/get.js.map +1 -0
  179. package/dist/cmd/cloud/task/index.d.ts +3 -0
  180. package/dist/cmd/cloud/task/index.d.ts.map +1 -0
  181. package/dist/cmd/cloud/task/index.js +33 -0
  182. package/dist/cmd/cloud/task/index.js.map +1 -0
  183. package/dist/cmd/cloud/task/list.d.ts +3 -0
  184. package/dist/cmd/cloud/task/list.d.ts.map +1 -0
  185. package/dist/cmd/cloud/task/list.js +174 -0
  186. package/dist/cmd/cloud/task/list.js.map +1 -0
  187. package/dist/cmd/cloud/task/update.d.ts +3 -0
  188. package/dist/cmd/cloud/task/update.d.ts.map +1 -0
  189. package/dist/cmd/cloud/task/update.js +118 -0
  190. package/dist/cmd/cloud/task/update.js.map +1 -0
  191. package/dist/cmd/cloud/task/util.d.ts +18 -0
  192. package/dist/cmd/cloud/task/util.d.ts.map +1 -0
  193. package/dist/cmd/cloud/task/util.js +45 -0
  194. package/dist/cmd/cloud/task/util.js.map +1 -0
  195. package/dist/cmd/cloud/webhook/create.d.ts +3 -0
  196. package/dist/cmd/cloud/webhook/create.d.ts.map +1 -0
  197. package/dist/cmd/cloud/webhook/create.js +54 -0
  198. package/dist/cmd/cloud/webhook/create.js.map +1 -0
  199. package/dist/cmd/cloud/webhook/delete.d.ts +3 -0
  200. package/dist/cmd/cloud/webhook/delete.d.ts.map +1 -0
  201. package/dist/cmd/cloud/webhook/delete.js +50 -0
  202. package/dist/cmd/cloud/webhook/delete.js.map +1 -0
  203. package/dist/cmd/cloud/webhook/deliveries.d.ts +3 -0
  204. package/dist/cmd/cloud/webhook/deliveries.d.ts.map +1 -0
  205. package/dist/cmd/cloud/webhook/deliveries.js +123 -0
  206. package/dist/cmd/cloud/webhook/deliveries.js.map +1 -0
  207. package/dist/cmd/cloud/webhook/destinations.d.ts +3 -0
  208. package/dist/cmd/cloud/webhook/destinations.d.ts.map +1 -0
  209. package/dist/cmd/cloud/webhook/destinations.js +212 -0
  210. package/dist/cmd/cloud/webhook/destinations.js.map +1 -0
  211. package/dist/cmd/cloud/webhook/get.d.ts +3 -0
  212. package/dist/cmd/cloud/webhook/get.d.ts.map +1 -0
  213. package/dist/cmd/cloud/webhook/get.js +50 -0
  214. package/dist/cmd/cloud/webhook/get.js.map +1 -0
  215. package/dist/cmd/cloud/webhook/index.d.ts +3 -0
  216. package/dist/cmd/cloud/webhook/index.d.ts.map +1 -0
  217. package/dist/cmd/cloud/webhook/index.js +45 -0
  218. package/dist/cmd/cloud/webhook/index.js.map +1 -0
  219. package/dist/cmd/cloud/webhook/list.d.ts +3 -0
  220. package/dist/cmd/cloud/webhook/list.d.ts.map +1 -0
  221. package/dist/cmd/cloud/webhook/list.js +72 -0
  222. package/dist/cmd/cloud/webhook/list.js.map +1 -0
  223. package/dist/cmd/cloud/webhook/receipts.d.ts +3 -0
  224. package/dist/cmd/cloud/webhook/receipts.d.ts.map +1 -0
  225. package/dist/cmd/cloud/webhook/receipts.js +128 -0
  226. package/dist/cmd/cloud/webhook/receipts.js.map +1 -0
  227. package/dist/cmd/cloud/webhook/util.d.ts +27 -0
  228. package/dist/cmd/cloud/webhook/util.d.ts.map +1 -0
  229. package/dist/cmd/cloud/webhook/util.js +20 -0
  230. package/dist/cmd/cloud/webhook/util.js.map +1 -0
  231. package/dist/cmd/project/add/domain.d.ts.map +1 -1
  232. package/dist/cmd/project/add/domain.js +6 -4
  233. package/dist/cmd/project/add/domain.js.map +1 -1
  234. package/dist/cmd/project/domain/check.d.ts.map +1 -1
  235. package/dist/cmd/project/domain/check.js +10 -5
  236. package/dist/cmd/project/domain/check.js.map +1 -1
  237. package/dist/cmd/project/template-flow.d.ts.map +1 -1
  238. package/dist/cmd/project/template-flow.js +2 -1
  239. package/dist/cmd/project/template-flow.js.map +1 -1
  240. package/dist/config.d.ts +8 -0
  241. package/dist/config.d.ts.map +1 -1
  242. package/dist/domain.d.ts +3 -2
  243. package/dist/domain.d.ts.map +1 -1
  244. package/dist/domain.js +87 -21
  245. package/dist/domain.js.map +1 -1
  246. package/dist/types.d.ts +10 -2
  247. package/dist/types.d.ts.map +1 -1
  248. package/dist/types.js +3 -2
  249. package/dist/types.js.map +1 -1
  250. package/dist/version-check.d.ts.map +1 -1
  251. package/dist/version-check.js +18 -3
  252. package/dist/version-check.js.map +1 -1
  253. package/package.json +6 -6
  254. package/src/auth.ts +7 -0
  255. package/src/cache/resource-region.ts +4 -1
  256. package/src/cmd/ai/claude-code/install.ts +0 -3
  257. package/src/cmd/build/vite/public-asset-path-plugin.ts +18 -4
  258. package/src/cmd/cloud/deploy.ts +1 -0
  259. package/src/cmd/cloud/email/create.ts +70 -0
  260. package/src/cmd/cloud/email/delete.ts +53 -0
  261. package/src/cmd/cloud/email/destination/delete.ts +65 -0
  262. package/src/cmd/cloud/email/destination/index.ts +15 -0
  263. package/src/cmd/cloud/email/destination/list.ts +46 -0
  264. package/src/cmd/cloud/email/destination/schemas.ts +9 -0
  265. package/src/cmd/cloud/email/destination/url.ts +75 -0
  266. package/src/cmd/cloud/email/get.ts +52 -0
  267. package/src/cmd/cloud/email/inbound/get.ts +53 -0
  268. package/src/cmd/cloud/email/inbound/index.ts +13 -0
  269. package/src/cmd/cloud/email/inbound/list.ts +50 -0
  270. package/src/cmd/cloud/email/inbound/schemas.ts +11 -0
  271. package/src/cmd/cloud/email/index.ts +29 -0
  272. package/src/cmd/cloud/email/list.ts +44 -0
  273. package/src/cmd/cloud/email/outbound/get.ts +54 -0
  274. package/src/cmd/cloud/email/outbound/index.ts +13 -0
  275. package/src/cmd/cloud/email/outbound/list.ts +50 -0
  276. package/src/cmd/cloud/email/outbound/schemas.ts +15 -0
  277. package/src/cmd/cloud/email/send.ts +91 -0
  278. package/src/cmd/cloud/email/util.ts +89 -0
  279. package/src/cmd/cloud/index.ts +8 -0
  280. package/src/cmd/cloud/region-lookup.ts +58 -2
  281. package/src/cmd/cloud/sandbox/snapshot/build.ts +59 -55
  282. package/src/cmd/cloud/sandbox/snapshot/generate.ts +5 -1
  283. package/src/cmd/cloud/schedule/create.ts +83 -0
  284. package/src/cmd/cloud/schedule/delete.ts +43 -0
  285. package/src/cmd/cloud/schedule/delivery/get.ts +85 -0
  286. package/src/cmd/cloud/schedule/delivery/index.ts +24 -0
  287. package/src/cmd/cloud/schedule/delivery/list.ts +82 -0
  288. package/src/cmd/cloud/schedule/destination/create.ts +110 -0
  289. package/src/cmd/cloud/schedule/destination/delete.ts +46 -0
  290. package/src/cmd/cloud/schedule/destination/get.ts +66 -0
  291. package/src/cmd/cloud/schedule/destination/index.ts +27 -0
  292. package/src/cmd/cloud/schedule/destination/list.ts +72 -0
  293. package/src/cmd/cloud/schedule/get.ts +92 -0
  294. package/src/cmd/cloud/schedule/index.ts +36 -0
  295. package/src/cmd/cloud/schedule/list.ts +78 -0
  296. package/src/cmd/cloud/schedule/update.ts +74 -0
  297. package/src/cmd/cloud/schedule/util.ts +34 -0
  298. package/src/cmd/cloud/task/create.ts +124 -0
  299. package/src/cmd/cloud/task/get.ts +138 -0
  300. package/src/cmd/cloud/task/index.ts +34 -0
  301. package/src/cmd/cloud/task/list.ts +191 -0
  302. package/src/cmd/cloud/task/update.ts +123 -0
  303. package/src/cmd/cloud/task/util.ts +74 -0
  304. package/src/cmd/cloud/webhook/create.ts +66 -0
  305. package/src/cmd/cloud/webhook/delete.ts +57 -0
  306. package/src/cmd/cloud/webhook/deliveries.ts +149 -0
  307. package/src/cmd/cloud/webhook/destinations.ts +274 -0
  308. package/src/cmd/cloud/webhook/get.ts +59 -0
  309. package/src/cmd/cloud/webhook/index.ts +46 -0
  310. package/src/cmd/cloud/webhook/list.ts +82 -0
  311. package/src/cmd/cloud/webhook/receipts.ts +157 -0
  312. package/src/cmd/cloud/webhook/util.ts +35 -0
  313. package/src/cmd/project/add/domain.ts +10 -4
  314. package/src/cmd/project/domain/check.ts +16 -5
  315. package/src/cmd/project/template-flow.ts +2 -1
  316. package/src/domain.ts +96 -21
  317. package/src/types.ts +3 -1
  318. package/src/version-check.ts +22 -3
@@ -39,6 +39,7 @@ export const checkSubcommand = createSubcommand({
39
39
  domain: z.string(),
40
40
  recordType: z.string(),
41
41
  target: z.string(),
42
+ aRecordTarget: z.string().optional(),
42
43
  status: z.string(),
43
44
  success: z.boolean(),
44
45
  })
@@ -69,11 +70,17 @@ export const checkSubcommand = createSubcommand({
69
70
  }
70
71
 
71
72
  const results = jsonMode
72
- ? await checkCustomDomainForDNS(project.projectId, domainsToCheck, config)
73
+ ? await checkCustomDomainForDNS(project.projectId, domainsToCheck, project.region, config)
73
74
  : await tui.spinner({
74
75
  message: `Checking DNS for ${domainsToCheck.length} ${tui.plural(domainsToCheck.length, 'domain', 'domains')}`,
75
76
  clearOnSuccess: true,
76
- callback: () => checkCustomDomainForDNS(project.projectId, domainsToCheck, config),
77
+ callback: () =>
78
+ checkCustomDomainForDNS(
79
+ project.projectId,
80
+ domainsToCheck,
81
+ project.region,
82
+ config
83
+ ),
77
84
  });
78
85
 
79
86
  const domainResults = results.map((r) => {
@@ -106,6 +113,7 @@ export const checkSubcommand = createSubcommand({
106
113
  domain: r.domain,
107
114
  recordType: r.recordType,
108
115
  target: r.target,
116
+ aRecordTarget: r.aRecordTarget,
109
117
  status,
110
118
  statusRaw,
111
119
  success,
@@ -116,8 +124,10 @@ export const checkSubcommand = createSubcommand({
116
124
  tui.newline();
117
125
  for (const r of domainResults) {
118
126
  console.log(` ${tui.colorInfo('Domain:')} ${tui.colorPrimary(r.domain)}`);
119
- console.log(` ${tui.colorInfo('Type:')} ${tui.colorPrimary(r.recordType)}`);
120
- console.log(` ${tui.colorInfo('Target:')} ${tui.colorPrimary(r.target)}`);
127
+ console.log(` ${tui.colorInfo('CNAME:')} ${tui.colorPrimary(r.target)}`);
128
+ if (r.aRecordTarget) {
129
+ console.log(` ${tui.colorInfo('A:')} ${tui.colorPrimary(r.aRecordTarget)}`);
130
+ }
121
131
  console.log(` ${tui.colorInfo('Status:')} ${r.status}`);
122
132
  console.log();
123
133
  }
@@ -128,7 +138,7 @@ export const checkSubcommand = createSubcommand({
128
138
  } else {
129
139
  const failCount = domainResults.filter((r) => !r.success).length;
130
140
  tui.warning(
131
- `${failCount} ${tui.plural(failCount, 'domain has', 'domains have')} DNS issues — add a CNAME record pointing to the target shown above`
141
+ `${failCount} ${tui.plural(failCount, 'domain has', 'domains have')} DNS issues — add a CNAME or A record pointing to one of the targets shown above`
132
142
  );
133
143
  }
134
144
  }
@@ -138,6 +148,7 @@ export const checkSubcommand = createSubcommand({
138
148
  domain: r.domain,
139
149
  recordType: r.recordType,
140
150
  target: r.target,
151
+ aRecordTarget: r.aRecordTarget,
141
152
  status: r.statusRaw,
142
153
  success: r.success,
143
154
  })),
@@ -768,7 +768,8 @@ export async function runCreateFlow(options: CreateFlowOptions): Promise<CreateF
768
768
  const ok = await tui.confirm('Would you like to configure DNS now?', true);
769
769
  if (ok) {
770
770
  tui.newline();
771
- await promptForDNS(projectId, _domains, config);
771
+ const cloudRegion = region ?? process.env.AGENTUITY_REGION ?? 'usc';
772
+ await promptForDNS(projectId, _domains, cloudRegion, config);
772
773
  }
773
774
  }
774
775
 
package/src/domain.ts CHANGED
@@ -1,11 +1,13 @@
1
1
  import type { Config } from './types';
2
2
  import { StructuredError } from '@agentuity/core';
3
+ import { getIONHost } from './config';
3
4
  import * as tui from './tui';
4
5
 
5
6
  interface BaseDNSResult {
6
7
  domain: string;
7
8
  target: string;
8
9
  recordType: string;
10
+ aRecordTarget?: string;
9
11
  }
10
12
 
11
13
  interface DNSSuccess extends BaseDNSResult {
@@ -68,7 +70,7 @@ interface CFRecord {
68
70
  }[];
69
71
  }
70
72
 
71
- async function fetchDNSRecord(name: string, type: string): Promise<string | null> {
73
+ async function fetchDNSRecords(name: string, type: string): Promise<string[]> {
72
74
  const params = new URLSearchParams();
73
75
  params.set('name', name);
74
76
  params.set('type', type);
@@ -82,12 +84,15 @@ async function fetchDNSRecord(name: string, type: string): Promise<string | null
82
84
  });
83
85
  if (res.ok) {
84
86
  const result = (await res.json()) as CFRecord;
85
- const firstAnswer = result?.Answer?.[0];
86
- if (firstAnswer) {
87
- return firstAnswer.data.replace(/\.$/, ''); // DNS records end with . so we remove that
88
- }
87
+ // DNS records end with . so we remove that
88
+ return (result?.Answer ?? []).map((a) => a.data.replace(/\.$/, ''));
89
89
  }
90
- return null;
90
+ return [];
91
+ }
92
+
93
+ async function fetchDNSRecord(name: string, type: string): Promise<string | null> {
94
+ const records = await fetchDNSRecords(name, type);
95
+ return records[0] ?? null;
91
96
  }
92
97
 
93
98
  const LOCAL_DNS = 'agentuity.io';
@@ -105,12 +110,24 @@ const PRODUCTION_DNS = 'agentuity.run';
105
110
  export async function checkCustomDomainForDNS(
106
111
  projectId: string,
107
112
  domains: string[],
113
+ region: string,
108
114
  config?: Config | null
109
115
  ): Promise<DNSResult[]> {
110
116
  const suffix = config?.overrides?.api_url?.includes('agentuity.io') ? LOCAL_DNS : PRODUCTION_DNS;
111
117
  const id = Bun.hash.xxHash64(projectId).toString(16).padStart(16, '0');
112
118
  const proxy = `p${id}.${suffix}`;
113
119
 
120
+ // Resolve the ION host A record(s) so we can validate A records
121
+ // and show the user what IP to point their A record to
122
+ const ionHost = getIONHost(config ?? null, region);
123
+ let ionIPs: string[] = [];
124
+ try {
125
+ ionIPs = await fetchDNSRecords(ionHost, 'A');
126
+ } catch {
127
+ // If we can't resolve the ION host, A record validation will be skipped
128
+ }
129
+ const aRecordTarget = ionIPs[0] ?? undefined;
130
+
114
131
  return Promise.all(
115
132
  domains.map(async (domain) => {
116
133
  // Detect if user passed a URL instead of a domain name
@@ -120,6 +137,7 @@ export async function checkCustomDomainForDNS(
120
137
  return {
121
138
  domain,
122
139
  target: proxy,
140
+ aRecordTarget,
123
141
  recordType: 'CNAME',
124
142
  success: false,
125
143
  error: `Invalid domain format: "${domain}" appears to be a URL. Use just the domain name: "${url.hostname}"`,
@@ -128,6 +146,7 @@ export async function checkCustomDomainForDNS(
128
146
  return {
129
147
  domain,
130
148
  target: proxy,
149
+ aRecordTarget,
131
150
  recordType: 'CNAME',
132
151
  success: false,
133
152
  error: `Invalid domain format: "${domain}" appears to be a URL. Use just the domain name without the protocol (e.g., "example.com" not "https://example.com")`,
@@ -135,6 +154,7 @@ export async function checkCustomDomainForDNS(
135
154
  }
136
155
  }
137
156
 
157
+ // Step 1: Check CNAME record
138
158
  try {
139
159
  let timeoutId: Timer | undefined;
140
160
 
@@ -156,6 +176,7 @@ export async function checkCustomDomainForDNS(
156
176
  return {
157
177
  domain,
158
178
  target: proxy,
179
+ aRecordTarget,
159
180
  recordType: 'CNAME',
160
181
  success: true,
161
182
  } as DNSSuccess;
@@ -163,9 +184,10 @@ export async function checkCustomDomainForDNS(
163
184
  return {
164
185
  domain,
165
186
  target: proxy,
187
+ aRecordTarget,
166
188
  recordType: 'CNAME',
167
189
  success: false,
168
- misconfigured: `CNAME record is ${result}`,
190
+ misconfigured: `CNAME record points to ${result}`,
169
191
  } as DNSMisconfigured;
170
192
  }
171
193
  } catch (ex) {
@@ -174,6 +196,7 @@ export async function checkCustomDomainForDNS(
174
196
  return {
175
197
  domain,
176
198
  target: proxy,
199
+ aRecordTarget,
177
200
  recordType: 'CNAME',
178
201
  success: false,
179
202
  error: `DNS lookup timed out after 5 seconds. Please check your DNS configuration.`,
@@ -189,16 +212,63 @@ export async function checkCustomDomainForDNS(
189
212
  return {
190
213
  domain,
191
214
  target: proxy,
215
+ aRecordTarget,
192
216
  recordType: 'CNAME',
193
217
  success: false,
194
218
  error: errMsg,
195
219
  } as DNSError;
196
220
  }
221
+ // ENOTFOUND: no CNAME record exists, fall through to A record check
197
222
  }
223
+
224
+ // Step 2: Check A record (supports apex domains and ALIAS/ANAME/CNAME-flattening)
225
+ if (ionIPs.length > 0) {
226
+ try {
227
+ let aTimeoutId: Timer | undefined;
228
+
229
+ const aTimeoutPromise = new Promise<never>((_, reject) => {
230
+ aTimeoutId = setTimeout(() => {
231
+ reject(new DNSTimeoutError());
232
+ }, timeoutMs);
233
+ });
234
+
235
+ const domainARecords = await Promise.race([
236
+ fetchDNSRecords(domain, 'A'),
237
+ aTimeoutPromise,
238
+ ]).finally(() => {
239
+ if (aTimeoutId) clearTimeout(aTimeoutId);
240
+ });
241
+
242
+ if (domainARecords.length > 0) {
243
+ const matching = domainARecords.some((a) => ionIPs.includes(a));
244
+ if (matching) {
245
+ return {
246
+ domain,
247
+ target: proxy,
248
+ aRecordTarget,
249
+ recordType: 'A',
250
+ success: true,
251
+ } as DNSSuccess;
252
+ }
253
+ return {
254
+ domain,
255
+ target: proxy,
256
+ aRecordTarget,
257
+ recordType: 'A',
258
+ success: false,
259
+ misconfigured: `A record points to ${domainARecords[0]}, expected ${aRecordTarget}`,
260
+ } as DNSMisconfigured;
261
+ }
262
+ } catch {
263
+ // A record check failed, fall through to missing
264
+ }
265
+ }
266
+
198
267
  return {
199
268
  domain,
200
269
  success: false,
201
270
  target: proxy,
271
+ aRecordTarget,
202
272
  recordType: 'CNAME',
203
273
  pending: false,
204
274
  } as DNSMissing;
@@ -209,27 +279,28 @@ export async function checkCustomDomainForDNS(
209
279
  export async function promptForDNS(
210
280
  projectId: string,
211
281
  domains: string[],
282
+ region: string,
212
283
  config?: Config,
213
284
  resumeFn?: () => () => void
214
285
  ) {
215
286
  let paused = false;
216
287
  let resume: (() => void) | undefined;
217
288
  for (;;) {
218
- const result = await checkCustomDomainForDNS(projectId, domains, config);
289
+ const result = await checkCustomDomainForDNS(projectId, domains, region, config);
219
290
  const failed = result.filter((x): x is DNSFailed => !isSuccess(x));
220
291
  if (failed.length) {
221
292
  const records: {
222
293
  domain: string;
223
- type: string;
224
- target: string;
294
+ cnameTarget: string;
295
+ aRecordTarget?: string;
225
296
  status: string;
226
297
  }[] = [];
227
298
  result.forEach((r) => {
228
299
  if (isSuccess(r)) {
229
300
  records.push({
230
301
  domain: r.domain,
231
- type: r.recordType,
232
- target: r.target,
302
+ cnameTarget: r.target,
303
+ aRecordTarget: r.aRecordTarget,
233
304
  status: tui.colorSuccess(`${tui.ICONS.success} Configured`),
234
305
  });
235
306
  }
@@ -248,22 +319,22 @@ export async function promptForDNS(
248
319
  } else if (isMisconfigured(r)) {
249
320
  records.push({
250
321
  domain: r.domain,
251
- type: r.recordType,
252
- target: r.target,
322
+ cnameTarget: r.target,
323
+ aRecordTarget: r.aRecordTarget,
253
324
  status: tui.colorWarning(`${tui.ICONS.error} ${r.misconfigured}`),
254
325
  });
255
326
  } else if (isPending(r)) {
256
327
  records.push({
257
328
  domain: r.domain,
258
- type: r.recordType,
259
- target: r.target,
329
+ cnameTarget: r.target,
330
+ aRecordTarget: r.aRecordTarget,
260
331
  status: tui.colorWarning('⌛️ Pending'),
261
332
  });
262
333
  } else if (isMissing(r)) {
263
334
  records.push({
264
335
  domain: r.domain,
265
- type: r.recordType,
266
- target: r.target,
336
+ cnameTarget: r.target,
337
+ aRecordTarget: r.aRecordTarget,
267
338
  status: tui.colorError(`${tui.ICONS.error} Missing`),
268
339
  });
269
340
  }
@@ -273,11 +344,15 @@ export async function promptForDNS(
273
344
  for (const record of records) {
274
345
  console.log();
275
346
  console.log(`${tui.colorInfo('Domain:')} ${tui.colorPrimary(record.domain)}`);
276
- console.log(`${tui.colorInfo('Type:')} ${tui.colorPrimary(record.type)}`);
277
- console.log(`${tui.colorInfo('Target:')} ${tui.colorPrimary(record.target)}`);
347
+ console.log(`${tui.colorInfo('CNAME:')} ${tui.colorPrimary(record.cnameTarget)}`);
348
+ if (record.aRecordTarget) {
349
+ console.log(
350
+ `${tui.colorInfo('A:')} ${tui.colorPrimary(record.aRecordTarget)}`
351
+ );
352
+ }
278
353
  console.log(`${tui.colorInfo('Status:')} ${tui.colorPrimary(record.status)}`);
279
354
  console.log();
280
- linesShown += 6;
355
+ linesShown += record.aRecordTarget ? 6 : 5;
281
356
  }
282
357
 
283
358
  // await tui.waitForAnyKey('Press any key to check again or ctrl+c to cancel...');
package/src/types.ts CHANGED
@@ -1,13 +1,14 @@
1
1
  import type { Logger } from '@agentuity/core';
2
2
  import {
3
3
  DeploymentConfig,
4
+ ProjectBuildConfig,
4
5
  BuildMetadataSchema as ServerBuildMetadataSchema,
5
6
  } from '@agentuity/server';
6
7
  import type * as z from 'zod';
7
8
  import { z as zod } from 'zod';
8
9
  import type { APIClient } from './api';
9
10
 
10
- export { DeploymentConfig };
11
+ export { DeploymentConfig, ProjectBuildConfig };
11
12
 
12
13
  export type { Logger };
13
14
 
@@ -720,6 +721,7 @@ export const ProjectSchema = zod.object({
720
721
  orgId: zod.string().describe('the organization id'),
721
722
  region: zod.string().describe('the region identifier that the project is deployed into'),
722
723
  deployment: DeploymentConfig.optional().describe('the deployment configuration'),
724
+ build: ProjectBuildConfig.optional().describe('the CI/CD build configuration'),
723
725
  skipGitSetup: zod
724
726
  .boolean()
725
727
  .optional()
@@ -215,10 +215,29 @@ async function performUpgrade(logger: Logger, targetVersion: string): Promise<vo
215
215
  // Exit with the same exit code as the new process
216
216
  process.exit(proc.exitCode ?? 0);
217
217
  } catch (error) {
218
- // Upgrade failed - log and continue with original command
219
- logger.error('Upgrade failed: %s', error instanceof Error ? error.message : 'Unknown error');
218
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
219
+ logger.error('Upgrade failed: %s', errorMessage);
220
+
221
+ // Check for known bun package manager bug (oven-sh/bun#18354)
222
+ if (errorMessage.includes('BadPathName')) {
223
+ tui.newline();
224
+ tui.warning(
225
+ 'This appears to be a known bun package manager issue with stale global packages.'
226
+ );
227
+ tui.info('To fix this, run one of the following:');
228
+ tui.newline();
229
+ tui.info(` ${tui.bold('Option 1:')} Clear stale packages and reinstall`);
230
+ tui.info(` ${tui.muted('$')} rm -rf ~/.bun/install/global`);
231
+ tui.info(` ${tui.muted('$')} bun add -g @agentuity/cli@latest`);
232
+ tui.newline();
233
+ tui.info(` ${tui.bold('Option 2:')} Use the install script`);
234
+ tui.info(` ${tui.muted('$')} curl -fsSL https://agentuity.sh | sh`);
235
+ tui.newline();
236
+ }
237
+
220
238
  tui.warning('Continuing with current version...');
221
- tui.info('');
239
+ tui.info('You can upgrade later by running: agentuity upgrade');
240
+ tui.newline();
222
241
  }
223
242
  }
224
243