@agentuity/cli 0.0.50 → 0.0.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (578) hide show
  1. package/AGENTS.md +17 -4
  2. package/README.md +26 -8
  3. package/dist/api.js +68 -0
  4. package/dist/api.js.map +1 -0
  5. package/dist/auth.js +225 -0
  6. package/dist/auth.js.map +1 -0
  7. package/dist/banner.js +35 -0
  8. package/dist/banner.js.map +1 -0
  9. package/dist/cli-logger.js +72 -0
  10. package/dist/cli-logger.js.map +1 -0
  11. package/dist/cli.d.ts.map +1 -1
  12. package/dist/cli.js +822 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/cmd/{capabilities → ai/capabilities}/index.d.ts +1 -1
  15. package/dist/cmd/ai/capabilities/index.d.ts.map +1 -0
  16. package/dist/cmd/ai/capabilities/index.js +10 -0
  17. package/dist/cmd/ai/capabilities/index.js.map +1 -0
  18. package/dist/cmd/{capabilities → ai/capabilities}/show.d.ts +1 -1
  19. package/dist/cmd/ai/capabilities/show.d.ts.map +1 -0
  20. package/dist/cmd/ai/capabilities/show.js +221 -0
  21. package/dist/cmd/ai/capabilities/show.js.map +1 -0
  22. package/dist/cmd/ai/index.d.ts.map +1 -0
  23. package/dist/cmd/ai/index.js +11 -0
  24. package/dist/cmd/ai/index.js.map +1 -0
  25. package/dist/cmd/ai/prompt/index.d.ts +4 -0
  26. package/dist/cmd/ai/prompt/index.d.ts.map +1 -0
  27. package/dist/cmd/ai/prompt/index.js +10 -0
  28. package/dist/cmd/ai/prompt/index.js.map +1 -0
  29. package/dist/cmd/ai/prompt/llm.d.ts +3 -0
  30. package/dist/cmd/ai/prompt/llm.d.ts.map +1 -0
  31. package/dist/cmd/ai/prompt/llm.js +365 -0
  32. package/dist/cmd/ai/prompt/llm.js.map +1 -0
  33. package/dist/cmd/ai/schema/index.d.ts +4 -0
  34. package/dist/cmd/ai/schema/index.d.ts.map +1 -0
  35. package/dist/cmd/ai/schema/index.js +10 -0
  36. package/dist/cmd/ai/schema/index.js.map +1 -0
  37. package/dist/cmd/ai/schema/show.d.ts +3 -0
  38. package/dist/cmd/ai/schema/show.d.ts.map +1 -0
  39. package/dist/cmd/ai/schema/show.js +23 -0
  40. package/dist/cmd/ai/schema/show.js.map +1 -0
  41. package/dist/cmd/auth/api.js +85 -0
  42. package/dist/cmd/auth/api.js.map +1 -0
  43. package/dist/cmd/auth/index.js +13 -0
  44. package/dist/cmd/auth/index.js.map +1 -0
  45. package/dist/cmd/auth/login.js +84 -0
  46. package/dist/cmd/auth/login.js.map +1 -0
  47. package/dist/cmd/auth/logout.js +17 -0
  48. package/dist/cmd/auth/logout.js.map +1 -0
  49. package/dist/cmd/auth/signup.js +55 -0
  50. package/dist/cmd/auth/signup.js.map +1 -0
  51. package/dist/cmd/auth/ssh/add.js +239 -0
  52. package/dist/cmd/auth/ssh/add.js.map +1 -0
  53. package/dist/cmd/auth/ssh/api.js +53 -0
  54. package/dist/cmd/auth/ssh/api.js.map +1 -0
  55. package/dist/cmd/auth/ssh/delete.js +126 -0
  56. package/dist/cmd/auth/ssh/delete.js.map +1 -0
  57. package/dist/cmd/auth/ssh/index.js +11 -0
  58. package/dist/cmd/auth/ssh/index.js.map +1 -0
  59. package/dist/cmd/auth/ssh/list.js +70 -0
  60. package/dist/cmd/auth/ssh/list.js.map +1 -0
  61. package/dist/cmd/auth/whoami.js +68 -0
  62. package/dist/cmd/auth/whoami.js.map +1 -0
  63. package/dist/cmd/build/ast.d.ts.map +1 -0
  64. package/dist/cmd/build/ast.js +608 -0
  65. package/dist/cmd/build/ast.js.map +1 -0
  66. package/dist/cmd/{bundle → build}/ast.test.d.ts.map +1 -1
  67. package/dist/cmd/build/ast.test.js +389 -0
  68. package/dist/cmd/build/ast.test.js.map +1 -0
  69. package/dist/cmd/build/bundler.d.ts.map +1 -0
  70. package/dist/cmd/build/bundler.js +304 -0
  71. package/dist/cmd/build/bundler.js.map +1 -0
  72. package/dist/cmd/build/file.d.ts.map +1 -0
  73. package/dist/cmd/build/file.js +10 -0
  74. package/dist/cmd/build/file.js.map +1 -0
  75. package/dist/cmd/build/fix-duplicate-exports.d.ts.map +1 -0
  76. package/dist/cmd/build/fix-duplicate-exports.js +167 -0
  77. package/dist/cmd/build/fix-duplicate-exports.js.map +1 -0
  78. package/dist/cmd/build/fix-duplicate-exports.test.d.ts.map +1 -0
  79. package/dist/cmd/build/fix-duplicate-exports.test.js +300 -0
  80. package/dist/cmd/build/fix-duplicate-exports.test.js.map +1 -0
  81. package/dist/cmd/build/index.d.ts.map +1 -0
  82. package/dist/cmd/build/index.js +79 -0
  83. package/dist/cmd/build/index.js.map +1 -0
  84. package/dist/cmd/build/patch/_util.d.ts.map +1 -0
  85. package/dist/cmd/build/patch/_util.js +42 -0
  86. package/dist/cmd/build/patch/_util.js.map +1 -0
  87. package/dist/cmd/build/patch/aisdk.d.ts.map +1 -0
  88. package/dist/cmd/build/patch/aisdk.js +65 -0
  89. package/dist/cmd/build/patch/aisdk.js.map +1 -0
  90. package/dist/cmd/build/patch/index.d.ts.map +1 -0
  91. package/dist/cmd/build/patch/index.js +97 -0
  92. package/dist/cmd/build/patch/index.js.map +1 -0
  93. package/dist/cmd/build/patch/llm.d.ts.map +1 -0
  94. package/dist/cmd/build/patch/llm.js +18 -0
  95. package/dist/cmd/build/patch/llm.js.map +1 -0
  96. package/dist/cmd/build/plugin.d.ts.map +1 -0
  97. package/dist/cmd/build/plugin.js +556 -0
  98. package/dist/cmd/build/plugin.js.map +1 -0
  99. package/dist/cmd/cloud/agents/index.d.ts +3 -0
  100. package/dist/cmd/cloud/agents/index.d.ts.map +1 -0
  101. package/dist/cmd/cloud/agents/index.js +133 -0
  102. package/dist/cmd/cloud/agents/index.js.map +1 -0
  103. package/dist/cmd/cloud/deploy.js +341 -0
  104. package/dist/cmd/cloud/deploy.js.map +1 -0
  105. package/dist/cmd/cloud/deployment/index.js +20 -0
  106. package/dist/cmd/cloud/deployment/index.js.map +1 -0
  107. package/dist/cmd/cloud/deployment/list.js +89 -0
  108. package/dist/cmd/cloud/deployment/list.js.map +1 -0
  109. package/dist/cmd/cloud/deployment/remove.js +60 -0
  110. package/dist/cmd/cloud/deployment/remove.js.map +1 -0
  111. package/dist/cmd/cloud/deployment/rollback.js +80 -0
  112. package/dist/cmd/cloud/deployment/rollback.js.map +1 -0
  113. package/dist/cmd/cloud/deployment/show.js +106 -0
  114. package/dist/cmd/cloud/deployment/show.js.map +1 -0
  115. package/dist/cmd/cloud/deployment/undeploy.js +45 -0
  116. package/dist/cmd/cloud/deployment/undeploy.js.map +1 -0
  117. package/dist/cmd/cloud/deployment/utils.js +10 -0
  118. package/dist/cmd/cloud/deployment/utils.js.map +1 -0
  119. package/dist/cmd/cloud/domain.js +77 -0
  120. package/dist/cmd/cloud/domain.js.map +1 -0
  121. package/dist/cmd/cloud/env/delete.d.ts +2 -0
  122. package/dist/cmd/cloud/env/delete.d.ts.map +1 -0
  123. package/dist/cmd/cloud/env/delete.js +50 -0
  124. package/dist/cmd/cloud/env/delete.js.map +1 -0
  125. package/dist/cmd/cloud/env/get.d.ts +2 -0
  126. package/dist/cmd/cloud/env/get.d.ts.map +1 -0
  127. package/dist/cmd/cloud/env/get.js +65 -0
  128. package/dist/cmd/cloud/env/get.js.map +1 -0
  129. package/dist/cmd/cloud/env/import.d.ts +2 -0
  130. package/dist/cmd/cloud/env/import.d.ts.map +1 -0
  131. package/dist/cmd/cloud/env/import.js +113 -0
  132. package/dist/cmd/cloud/env/import.js.map +1 -0
  133. package/dist/cmd/cloud/env/index.d.ts +3 -0
  134. package/dist/cmd/cloud/env/index.d.ts.map +1 -0
  135. package/dist/cmd/cloud/env/index.js +24 -0
  136. package/dist/cmd/cloud/env/index.js.map +1 -0
  137. package/dist/cmd/cloud/env/list.d.ts +2 -0
  138. package/dist/cmd/cloud/env/list.d.ts.map +1 -0
  139. package/dist/cmd/cloud/env/list.js +58 -0
  140. package/dist/cmd/cloud/env/list.js.map +1 -0
  141. package/dist/cmd/cloud/env/pull.d.ts +2 -0
  142. package/dist/cmd/cloud/env/pull.d.ts.map +1 -0
  143. package/dist/cmd/cloud/env/pull.js +81 -0
  144. package/dist/cmd/cloud/env/pull.js.map +1 -0
  145. package/dist/cmd/cloud/env/push.d.ts +2 -0
  146. package/dist/cmd/cloud/env/push.d.ts.map +1 -0
  147. package/dist/cmd/cloud/env/push.js +61 -0
  148. package/dist/cmd/cloud/env/push.js.map +1 -0
  149. package/dist/cmd/cloud/env/set.d.ts +2 -0
  150. package/dist/cmd/cloud/env/set.d.ts.map +1 -0
  151. package/dist/cmd/cloud/env/set.js +73 -0
  152. package/dist/cmd/cloud/env/set.js.map +1 -0
  153. package/dist/cmd/cloud/index.d.ts.map +1 -1
  154. package/dist/cmd/cloud/index.js +31 -0
  155. package/dist/cmd/cloud/index.js.map +1 -0
  156. package/dist/cmd/cloud/keyvalue/create-namespace.d.ts +3 -0
  157. package/dist/cmd/cloud/keyvalue/create-namespace.d.ts.map +1 -0
  158. package/dist/cmd/cloud/keyvalue/create-namespace.js +41 -0
  159. package/dist/cmd/cloud/keyvalue/create-namespace.js.map +1 -0
  160. package/dist/cmd/cloud/keyvalue/delete-namespace.d.ts +3 -0
  161. package/dist/cmd/cloud/keyvalue/delete-namespace.d.ts.map +1 -0
  162. package/dist/cmd/cloud/keyvalue/delete-namespace.js +64 -0
  163. package/dist/cmd/cloud/keyvalue/delete-namespace.js.map +1 -0
  164. package/dist/cmd/cloud/keyvalue/delete.d.ts +3 -0
  165. package/dist/cmd/cloud/keyvalue/delete.d.ts.map +1 -0
  166. package/dist/cmd/cloud/keyvalue/delete.js +47 -0
  167. package/dist/cmd/cloud/keyvalue/delete.js.map +1 -0
  168. package/dist/cmd/cloud/keyvalue/get.d.ts +3 -0
  169. package/dist/cmd/cloud/keyvalue/get.d.ts.map +1 -0
  170. package/dist/cmd/cloud/keyvalue/get.js +65 -0
  171. package/dist/cmd/cloud/keyvalue/get.js.map +1 -0
  172. package/dist/cmd/cloud/keyvalue/index.d.ts +3 -0
  173. package/dist/cmd/cloud/keyvalue/index.d.ts.map +1 -0
  174. package/dist/cmd/cloud/keyvalue/index.js +32 -0
  175. package/dist/cmd/cloud/keyvalue/index.js.map +1 -0
  176. package/dist/cmd/cloud/keyvalue/keys.d.ts +3 -0
  177. package/dist/cmd/cloud/keyvalue/keys.d.ts.map +1 -0
  178. package/dist/cmd/cloud/keyvalue/keys.js +50 -0
  179. package/dist/cmd/cloud/keyvalue/keys.js.map +1 -0
  180. package/dist/cmd/cloud/keyvalue/list-namespaces.d.ts +3 -0
  181. package/dist/cmd/cloud/keyvalue/list-namespaces.d.ts.map +1 -0
  182. package/dist/cmd/cloud/keyvalue/list-namespaces.js +37 -0
  183. package/dist/cmd/cloud/keyvalue/list-namespaces.js.map +1 -0
  184. package/dist/cmd/cloud/keyvalue/repl.d.ts +3 -0
  185. package/dist/cmd/cloud/keyvalue/repl.d.ts.map +1 -0
  186. package/dist/cmd/cloud/keyvalue/repl.js +277 -0
  187. package/dist/cmd/cloud/keyvalue/repl.js.map +1 -0
  188. package/dist/cmd/cloud/keyvalue/search.d.ts +3 -0
  189. package/dist/cmd/cloud/keyvalue/search.d.ts.map +1 -0
  190. package/dist/cmd/cloud/keyvalue/search.js +72 -0
  191. package/dist/cmd/cloud/keyvalue/search.js.map +1 -0
  192. package/dist/cmd/cloud/keyvalue/set.d.ts +3 -0
  193. package/dist/cmd/cloud/keyvalue/set.d.ts.map +1 -0
  194. package/dist/cmd/cloud/keyvalue/set.js +59 -0
  195. package/dist/cmd/cloud/keyvalue/set.js.map +1 -0
  196. package/dist/cmd/cloud/keyvalue/stats.d.ts +3 -0
  197. package/dist/cmd/cloud/keyvalue/stats.d.ts.map +1 -0
  198. package/dist/cmd/cloud/keyvalue/stats.js +82 -0
  199. package/dist/cmd/cloud/keyvalue/stats.js.map +1 -0
  200. package/dist/cmd/{kv → cloud/keyvalue}/util.d.ts +1 -1
  201. package/dist/cmd/cloud/keyvalue/util.d.ts.map +1 -0
  202. package/dist/cmd/cloud/keyvalue/util.js +19 -0
  203. package/dist/cmd/cloud/keyvalue/util.js.map +1 -0
  204. package/dist/cmd/cloud/objectstore/delete-bucket.d.ts +3 -0
  205. package/dist/cmd/cloud/objectstore/delete-bucket.d.ts.map +1 -0
  206. package/dist/cmd/cloud/objectstore/delete-bucket.js +66 -0
  207. package/dist/cmd/cloud/objectstore/delete-bucket.js.map +1 -0
  208. package/dist/cmd/cloud/objectstore/delete.d.ts +3 -0
  209. package/dist/cmd/cloud/objectstore/delete.d.ts.map +1 -0
  210. package/dist/cmd/cloud/objectstore/delete.js +56 -0
  211. package/dist/cmd/cloud/objectstore/delete.js.map +1 -0
  212. package/dist/cmd/cloud/objectstore/get.d.ts +3 -0
  213. package/dist/cmd/cloud/objectstore/get.d.ts.map +1 -0
  214. package/dist/cmd/cloud/objectstore/get.js +64 -0
  215. package/dist/cmd/cloud/objectstore/get.js.map +1 -0
  216. package/dist/cmd/cloud/objectstore/index.d.ts +3 -0
  217. package/dist/cmd/cloud/objectstore/index.d.ts.map +1 -0
  218. package/dist/cmd/cloud/objectstore/index.js +28 -0
  219. package/dist/cmd/cloud/objectstore/index.js.map +1 -0
  220. package/dist/cmd/cloud/objectstore/list-buckets.d.ts +3 -0
  221. package/dist/cmd/cloud/objectstore/list-buckets.d.ts.map +1 -0
  222. package/dist/cmd/cloud/objectstore/list-buckets.js +37 -0
  223. package/dist/cmd/cloud/objectstore/list-buckets.js.map +1 -0
  224. package/dist/cmd/cloud/objectstore/list-keys.d.ts +3 -0
  225. package/dist/cmd/cloud/objectstore/list-keys.d.ts.map +1 -0
  226. package/dist/cmd/cloud/objectstore/list-keys.js +52 -0
  227. package/dist/cmd/cloud/objectstore/list-keys.js.map +1 -0
  228. package/dist/cmd/cloud/objectstore/put.d.ts +3 -0
  229. package/dist/cmd/cloud/objectstore/put.d.ts.map +1 -0
  230. package/dist/cmd/cloud/objectstore/put.js +57 -0
  231. package/dist/cmd/cloud/objectstore/put.js.map +1 -0
  232. package/dist/cmd/cloud/objectstore/repl.d.ts +3 -0
  233. package/dist/cmd/cloud/objectstore/repl.d.ts.map +1 -0
  234. package/dist/cmd/cloud/objectstore/repl.js +219 -0
  235. package/dist/cmd/cloud/objectstore/repl.js.map +1 -0
  236. package/dist/cmd/cloud/objectstore/url.d.ts +3 -0
  237. package/dist/cmd/cloud/objectstore/url.d.ts.map +1 -0
  238. package/dist/cmd/cloud/objectstore/url.js +55 -0
  239. package/dist/cmd/cloud/objectstore/url.js.map +1 -0
  240. package/dist/cmd/{objectstore → cloud/objectstore}/util.d.ts +1 -1
  241. package/dist/cmd/cloud/objectstore/util.d.ts.map +1 -0
  242. package/dist/cmd/cloud/objectstore/util.js +18 -0
  243. package/dist/cmd/cloud/objectstore/util.js.map +1 -0
  244. package/dist/cmd/cloud/resource/add.js +70 -0
  245. package/dist/cmd/cloud/resource/add.js.map +1 -0
  246. package/dist/cmd/cloud/resource/delete.js +126 -0
  247. package/dist/cmd/cloud/resource/delete.js.map +1 -0
  248. package/dist/cmd/cloud/resource/index.js +12 -0
  249. package/dist/cmd/cloud/resource/index.js.map +1 -0
  250. package/dist/cmd/cloud/resource/list.js +89 -0
  251. package/dist/cmd/cloud/resource/list.js.map +1 -0
  252. package/dist/cmd/cloud/scp/download.js +72 -0
  253. package/dist/cmd/cloud/scp/download.js.map +1 -0
  254. package/dist/cmd/cloud/scp/index.js +10 -0
  255. package/dist/cmd/cloud/scp/index.js.map +1 -0
  256. package/dist/cmd/cloud/scp/upload.js +75 -0
  257. package/dist/cmd/cloud/scp/upload.js.map +1 -0
  258. package/dist/cmd/cloud/secret/delete.d.ts +2 -0
  259. package/dist/cmd/cloud/secret/delete.d.ts.map +1 -0
  260. package/dist/cmd/cloud/secret/delete.js +50 -0
  261. package/dist/cmd/cloud/secret/delete.js.map +1 -0
  262. package/dist/cmd/cloud/secret/get.d.ts +2 -0
  263. package/dist/cmd/cloud/secret/get.d.ts.map +1 -0
  264. package/dist/cmd/cloud/secret/get.js +69 -0
  265. package/dist/cmd/cloud/secret/get.js.map +1 -0
  266. package/dist/cmd/cloud/secret/import.d.ts +2 -0
  267. package/dist/cmd/cloud/secret/import.d.ts.map +1 -0
  268. package/dist/cmd/cloud/secret/import.js +88 -0
  269. package/dist/cmd/cloud/secret/import.js.map +1 -0
  270. package/dist/cmd/cloud/secret/index.d.ts +3 -0
  271. package/dist/cmd/cloud/secret/index.d.ts.map +1 -0
  272. package/dist/cmd/cloud/secret/index.js +24 -0
  273. package/dist/cmd/cloud/secret/index.js.map +1 -0
  274. package/dist/cmd/cloud/secret/list.d.ts +2 -0
  275. package/dist/cmd/cloud/secret/list.d.ts.map +1 -0
  276. package/dist/cmd/cloud/secret/list.js +58 -0
  277. package/dist/cmd/cloud/secret/list.js.map +1 -0
  278. package/dist/cmd/cloud/secret/pull.d.ts +2 -0
  279. package/dist/cmd/cloud/secret/pull.d.ts.map +1 -0
  280. package/dist/cmd/cloud/secret/pull.js +81 -0
  281. package/dist/cmd/cloud/secret/pull.js.map +1 -0
  282. package/dist/cmd/cloud/secret/push.d.ts +2 -0
  283. package/dist/cmd/cloud/secret/push.d.ts.map +1 -0
  284. package/dist/cmd/cloud/secret/push.js +61 -0
  285. package/dist/cmd/cloud/secret/push.js.map +1 -0
  286. package/dist/cmd/cloud/secret/set.d.ts +2 -0
  287. package/dist/cmd/cloud/secret/set.d.ts.map +1 -0
  288. package/dist/cmd/cloud/secret/set.js +57 -0
  289. package/dist/cmd/cloud/secret/set.js.map +1 -0
  290. package/dist/cmd/cloud/session/get.d.ts.map +1 -1
  291. package/dist/cmd/cloud/session/get.js +155 -0
  292. package/dist/cmd/cloud/session/get.js.map +1 -0
  293. package/dist/cmd/cloud/session/index.js +11 -0
  294. package/dist/cmd/cloud/session/index.js.map +1 -0
  295. package/dist/cmd/cloud/session/list.js +132 -0
  296. package/dist/cmd/cloud/session/list.js.map +1 -0
  297. package/dist/cmd/cloud/session/logs.js +56 -0
  298. package/dist/cmd/cloud/session/logs.js.map +1 -0
  299. package/dist/cmd/cloud/ssh.js +67 -0
  300. package/dist/cmd/cloud/ssh.js.map +1 -0
  301. package/dist/cmd/dev/agents.js +103 -0
  302. package/dist/cmd/dev/agents.js.map +1 -0
  303. package/dist/cmd/dev/api.js +26 -0
  304. package/dist/cmd/dev/api.js.map +1 -0
  305. package/dist/cmd/dev/download.js +77 -0
  306. package/dist/cmd/dev/download.js.map +1 -0
  307. package/dist/cmd/dev/index.js +745 -0
  308. package/dist/cmd/dev/index.js.map +1 -0
  309. package/dist/cmd/dev/sync.js +229 -0
  310. package/dist/cmd/dev/sync.js.map +1 -0
  311. package/dist/cmd/dev/templates.js +75 -0
  312. package/dist/cmd/dev/templates.js.map +1 -0
  313. package/dist/cmd/index.js +49 -0
  314. package/dist/cmd/index.js.map +1 -0
  315. package/dist/cmd/profile/create.js +89 -0
  316. package/dist/cmd/profile/create.js.map +1 -0
  317. package/dist/cmd/profile/delete.js +63 -0
  318. package/dist/cmd/profile/delete.js.map +1 -0
  319. package/dist/cmd/profile/index.d.ts.map +1 -1
  320. package/dist/cmd/profile/index.js +14 -0
  321. package/dist/cmd/profile/index.js.map +1 -0
  322. package/dist/cmd/profile/list.js +28 -0
  323. package/dist/cmd/profile/list.js.map +1 -0
  324. package/dist/cmd/profile/show.js +68 -0
  325. package/dist/cmd/profile/show.js.map +1 -0
  326. package/dist/cmd/profile/use.js +37 -0
  327. package/dist/cmd/profile/use.js.map +1 -0
  328. package/dist/cmd/project/create.js +92 -0
  329. package/dist/cmd/project/create.js.map +1 -0
  330. package/dist/cmd/project/delete.js +117 -0
  331. package/dist/cmd/project/delete.js.map +1 -0
  332. package/dist/cmd/project/download.js +217 -0
  333. package/dist/cmd/project/download.js.map +1 -0
  334. package/dist/cmd/project/index.js +12 -0
  335. package/dist/cmd/project/index.js.map +1 -0
  336. package/dist/cmd/project/list.js +51 -0
  337. package/dist/cmd/project/list.js.map +1 -0
  338. package/dist/cmd/project/show.js +54 -0
  339. package/dist/cmd/project/show.js.map +1 -0
  340. package/dist/cmd/project/template-flow.js +315 -0
  341. package/dist/cmd/project/template-flow.js.map +1 -0
  342. package/dist/cmd/project/templates.js +31 -0
  343. package/dist/cmd/project/templates.js.map +1 -0
  344. package/dist/cmd/repl/index.js +444 -0
  345. package/dist/cmd/repl/index.js.map +1 -0
  346. package/dist/cmd/version/index.js +29 -0
  347. package/dist/cmd/version/index.js.map +1 -0
  348. package/dist/command-prefix.js +37 -0
  349. package/dist/command-prefix.js.map +1 -0
  350. package/dist/config.js +536 -0
  351. package/dist/config.js.map +1 -0
  352. package/dist/crypto/box.js +382 -0
  353. package/dist/crypto/box.js.map +1 -0
  354. package/dist/crypto/box.test.js +317 -0
  355. package/dist/crypto/box.test.js.map +1 -0
  356. package/dist/download.js +64 -0
  357. package/dist/download.js.map +1 -0
  358. package/dist/env-util.js +219 -0
  359. package/dist/env-util.js.map +1 -0
  360. package/dist/env-util.test.js +146 -0
  361. package/dist/env-util.test.js.map +1 -0
  362. package/dist/errors.js +177 -0
  363. package/dist/errors.js.map +1 -0
  364. package/dist/explain.js +90 -0
  365. package/dist/explain.js.map +1 -0
  366. package/dist/index.js +23 -0
  367. package/dist/index.js.map +1 -0
  368. package/dist/json.js +29 -0
  369. package/dist/json.js.map +1 -0
  370. package/dist/legacy-check.js +104 -0
  371. package/dist/legacy-check.js.map +1 -0
  372. package/dist/output.js +207 -0
  373. package/dist/output.js.map +1 -0
  374. package/dist/repl.js +1176 -0
  375. package/dist/repl.js.map +1 -0
  376. package/dist/runtime.js +19 -0
  377. package/dist/runtime.js.map +1 -0
  378. package/dist/schema-generator.js +289 -0
  379. package/dist/schema-generator.js.map +1 -0
  380. package/dist/schema-parser.js +145 -0
  381. package/dist/schema-parser.js.map +1 -0
  382. package/dist/sound.js +44 -0
  383. package/dist/sound.js.map +1 -0
  384. package/dist/steps.js +293 -0
  385. package/dist/steps.js.map +1 -0
  386. package/dist/terminal.js +130 -0
  387. package/dist/terminal.js.map +1 -0
  388. package/dist/tui.js +1124 -0
  389. package/dist/tui.js.map +1 -0
  390. package/dist/types.js +163 -0
  391. package/dist/types.js.map +1 -0
  392. package/dist/utils/detectSubagent.js +25 -0
  393. package/dist/utils/detectSubagent.js.map +1 -0
  394. package/dist/utils/format.js +21 -0
  395. package/dist/utils/format.js.map +1 -0
  396. package/dist/utils/zip.js +33 -0
  397. package/dist/utils/zip.js.map +1 -0
  398. package/dist/version.js +24 -0
  399. package/dist/version.js.map +1 -0
  400. package/package.json +6 -6
  401. package/src/banner.ts +1 -1
  402. package/src/cli.ts +7 -2
  403. package/src/cmd/{capabilities → ai/capabilities}/index.ts +2 -2
  404. package/src/cmd/{capabilities → ai/capabilities}/show.ts +6 -6
  405. package/src/cmd/ai/index.ts +11 -0
  406. package/src/cmd/{prompt → ai/prompt}/index.ts +2 -2
  407. package/src/cmd/{prompt → ai/prompt}/llm.ts +6 -6
  408. package/src/cmd/{schema → ai/schema}/index.ts +2 -2
  409. package/src/cmd/{schema → ai/schema}/show.ts +3 -3
  410. package/src/cmd/build/index.ts +83 -0
  411. package/src/cmd/{bundle → build}/plugin.ts +2 -1
  412. package/src/cmd/{agents → cloud/agents}/index.ts +4 -3
  413. package/src/cmd/cloud/deploy.ts +1 -1
  414. package/src/cmd/{env → cloud/env}/delete.ts +4 -4
  415. package/src/cmd/{env → cloud/env}/get.ts +5 -5
  416. package/src/cmd/{env → cloud/env}/import.ts +4 -4
  417. package/src/cmd/{env → cloud/env}/index.ts +2 -1
  418. package/src/cmd/{env → cloud/env}/list.ts +4 -4
  419. package/src/cmd/{env → cloud/env}/pull.ts +4 -4
  420. package/src/cmd/{env → cloud/env}/push.ts +4 -4
  421. package/src/cmd/{env → cloud/env}/set.ts +4 -4
  422. package/src/cmd/cloud/index.ts +10 -0
  423. package/src/cmd/{kv → cloud/keyvalue}/create-namespace.ts +3 -3
  424. package/src/cmd/{kv → cloud/keyvalue}/delete-namespace.ts +4 -4
  425. package/src/cmd/{kv → cloud/keyvalue}/delete.ts +3 -3
  426. package/src/cmd/{kv → cloud/keyvalue}/get.ts +4 -4
  427. package/src/cmd/{kv → cloud/keyvalue}/index.ts +2 -1
  428. package/src/cmd/{kv → cloud/keyvalue}/keys.ts +3 -3
  429. package/src/cmd/{kv → cloud/keyvalue}/list-namespaces.ts +3 -3
  430. package/src/cmd/{kv → cloud/keyvalue}/repl.ts +6 -6
  431. package/src/cmd/{kv → cloud/keyvalue}/search.ts +3 -3
  432. package/src/cmd/{kv → cloud/keyvalue}/set.ts +4 -4
  433. package/src/cmd/{kv → cloud/keyvalue}/stats.ts +3 -3
  434. package/src/cmd/{kv → cloud/keyvalue}/util.ts +4 -4
  435. package/src/cmd/{objectstore → cloud/objectstore}/delete-bucket.ts +3 -3
  436. package/src/cmd/{objectstore → cloud/objectstore}/delete.ts +3 -3
  437. package/src/cmd/{objectstore → cloud/objectstore}/get.ts +4 -4
  438. package/src/cmd/{objectstore → cloud/objectstore}/index.ts +2 -1
  439. package/src/cmd/{objectstore → cloud/objectstore}/list-buckets.ts +3 -3
  440. package/src/cmd/{objectstore → cloud/objectstore}/list-keys.ts +3 -3
  441. package/src/cmd/{objectstore → cloud/objectstore}/put.ts +4 -4
  442. package/src/cmd/{objectstore → cloud/objectstore}/repl.ts +6 -6
  443. package/src/cmd/{objectstore → cloud/objectstore}/url.ts +3 -3
  444. package/src/cmd/{objectstore → cloud/objectstore}/util.ts +3 -3
  445. package/src/cmd/{secret → cloud/secret}/delete.ts +4 -4
  446. package/src/cmd/{secret → cloud/secret}/get.ts +5 -5
  447. package/src/cmd/{secret → cloud/secret}/import.ts +4 -4
  448. package/src/cmd/{secret → cloud/secret}/index.ts +2 -1
  449. package/src/cmd/{secret → cloud/secret}/list.ts +4 -4
  450. package/src/cmd/{secret → cloud/secret}/pull.ts +4 -4
  451. package/src/cmd/{secret → cloud/secret}/push.ts +4 -4
  452. package/src/cmd/{secret → cloud/secret}/set.ts +4 -4
  453. package/src/cmd/cloud/session/get.ts +20 -14
  454. package/src/cmd/cloud/session/list.ts +1 -1
  455. package/src/cmd/dev/index.ts +3 -3
  456. package/src/cmd/profile/index.ts +1 -0
  457. package/src/cmd/project/create.ts +1 -1
  458. package/src/cmd/project/index.ts +1 -1
  459. package/dist/cmd/agents/index.d.ts.map +0 -1
  460. package/dist/cmd/bundle/ast.d.ts.map +0 -1
  461. package/dist/cmd/bundle/bundler.d.ts.map +0 -1
  462. package/dist/cmd/bundle/file.d.ts.map +0 -1
  463. package/dist/cmd/bundle/fix-duplicate-exports.d.ts.map +0 -1
  464. package/dist/cmd/bundle/fix-duplicate-exports.test.d.ts.map +0 -1
  465. package/dist/cmd/bundle/index.d.ts.map +0 -1
  466. package/dist/cmd/bundle/patch/_util.d.ts.map +0 -1
  467. package/dist/cmd/bundle/patch/aisdk.d.ts.map +0 -1
  468. package/dist/cmd/bundle/patch/index.d.ts.map +0 -1
  469. package/dist/cmd/bundle/patch/llm.d.ts.map +0 -1
  470. package/dist/cmd/bundle/plugin.d.ts.map +0 -1
  471. package/dist/cmd/capabilities/index.d.ts.map +0 -1
  472. package/dist/cmd/capabilities/show.d.ts.map +0 -1
  473. package/dist/cmd/env/delete.d.ts +0 -2
  474. package/dist/cmd/env/delete.d.ts.map +0 -1
  475. package/dist/cmd/env/get.d.ts +0 -2
  476. package/dist/cmd/env/get.d.ts.map +0 -1
  477. package/dist/cmd/env/import.d.ts +0 -2
  478. package/dist/cmd/env/import.d.ts.map +0 -1
  479. package/dist/cmd/env/index.d.ts +0 -2
  480. package/dist/cmd/env/index.d.ts.map +0 -1
  481. package/dist/cmd/env/list.d.ts +0 -2
  482. package/dist/cmd/env/list.d.ts.map +0 -1
  483. package/dist/cmd/env/pull.d.ts +0 -2
  484. package/dist/cmd/env/pull.d.ts.map +0 -1
  485. package/dist/cmd/env/push.d.ts +0 -2
  486. package/dist/cmd/env/push.d.ts.map +0 -1
  487. package/dist/cmd/env/set.d.ts +0 -2
  488. package/dist/cmd/env/set.d.ts.map +0 -1
  489. package/dist/cmd/kv/create-namespace.d.ts +0 -3
  490. package/dist/cmd/kv/create-namespace.d.ts.map +0 -1
  491. package/dist/cmd/kv/delete-namespace.d.ts +0 -3
  492. package/dist/cmd/kv/delete-namespace.d.ts.map +0 -1
  493. package/dist/cmd/kv/delete.d.ts +0 -3
  494. package/dist/cmd/kv/delete.d.ts.map +0 -1
  495. package/dist/cmd/kv/get.d.ts +0 -3
  496. package/dist/cmd/kv/get.d.ts.map +0 -1
  497. package/dist/cmd/kv/index.d.ts +0 -2
  498. package/dist/cmd/kv/index.d.ts.map +0 -1
  499. package/dist/cmd/kv/keys.d.ts +0 -3
  500. package/dist/cmd/kv/keys.d.ts.map +0 -1
  501. package/dist/cmd/kv/list-namespaces.d.ts +0 -3
  502. package/dist/cmd/kv/list-namespaces.d.ts.map +0 -1
  503. package/dist/cmd/kv/repl.d.ts +0 -3
  504. package/dist/cmd/kv/repl.d.ts.map +0 -1
  505. package/dist/cmd/kv/search.d.ts +0 -3
  506. package/dist/cmd/kv/search.d.ts.map +0 -1
  507. package/dist/cmd/kv/set.d.ts +0 -3
  508. package/dist/cmd/kv/set.d.ts.map +0 -1
  509. package/dist/cmd/kv/stats.d.ts +0 -3
  510. package/dist/cmd/kv/stats.d.ts.map +0 -1
  511. package/dist/cmd/kv/util.d.ts.map +0 -1
  512. package/dist/cmd/objectstore/delete-bucket.d.ts +0 -3
  513. package/dist/cmd/objectstore/delete-bucket.d.ts.map +0 -1
  514. package/dist/cmd/objectstore/delete.d.ts +0 -3
  515. package/dist/cmd/objectstore/delete.d.ts.map +0 -1
  516. package/dist/cmd/objectstore/get.d.ts +0 -3
  517. package/dist/cmd/objectstore/get.d.ts.map +0 -1
  518. package/dist/cmd/objectstore/index.d.ts +0 -2
  519. package/dist/cmd/objectstore/index.d.ts.map +0 -1
  520. package/dist/cmd/objectstore/list-buckets.d.ts +0 -3
  521. package/dist/cmd/objectstore/list-buckets.d.ts.map +0 -1
  522. package/dist/cmd/objectstore/list-keys.d.ts +0 -3
  523. package/dist/cmd/objectstore/list-keys.d.ts.map +0 -1
  524. package/dist/cmd/objectstore/put.d.ts +0 -3
  525. package/dist/cmd/objectstore/put.d.ts.map +0 -1
  526. package/dist/cmd/objectstore/repl.d.ts +0 -3
  527. package/dist/cmd/objectstore/repl.d.ts.map +0 -1
  528. package/dist/cmd/objectstore/url.d.ts +0 -3
  529. package/dist/cmd/objectstore/url.d.ts.map +0 -1
  530. package/dist/cmd/objectstore/util.d.ts.map +0 -1
  531. package/dist/cmd/prompt/index.d.ts +0 -4
  532. package/dist/cmd/prompt/index.d.ts.map +0 -1
  533. package/dist/cmd/prompt/llm.d.ts +0 -3
  534. package/dist/cmd/prompt/llm.d.ts.map +0 -1
  535. package/dist/cmd/schema/index.d.ts +0 -4
  536. package/dist/cmd/schema/index.d.ts.map +0 -1
  537. package/dist/cmd/schema/show.d.ts +0 -3
  538. package/dist/cmd/schema/show.d.ts.map +0 -1
  539. package/dist/cmd/secret/delete.d.ts +0 -2
  540. package/dist/cmd/secret/delete.d.ts.map +0 -1
  541. package/dist/cmd/secret/get.d.ts +0 -2
  542. package/dist/cmd/secret/get.d.ts.map +0 -1
  543. package/dist/cmd/secret/import.d.ts +0 -2
  544. package/dist/cmd/secret/import.d.ts.map +0 -1
  545. package/dist/cmd/secret/index.d.ts +0 -2
  546. package/dist/cmd/secret/index.d.ts.map +0 -1
  547. package/dist/cmd/secret/list.d.ts +0 -2
  548. package/dist/cmd/secret/list.d.ts.map +0 -1
  549. package/dist/cmd/secret/pull.d.ts +0 -2
  550. package/dist/cmd/secret/pull.d.ts.map +0 -1
  551. package/dist/cmd/secret/push.d.ts +0 -2
  552. package/dist/cmd/secret/push.d.ts.map +0 -1
  553. package/dist/cmd/secret/set.d.ts +0 -2
  554. package/dist/cmd/secret/set.d.ts.map +0 -1
  555. package/src/cmd/bundle/index.ts +0 -58
  556. /package/dist/cmd/{agents → ai}/index.d.ts +0 -0
  557. /package/dist/cmd/{bundle → build}/ast.d.ts +0 -0
  558. /package/dist/cmd/{bundle → build}/ast.test.d.ts +0 -0
  559. /package/dist/cmd/{bundle → build}/bundler.d.ts +0 -0
  560. /package/dist/cmd/{bundle → build}/file.d.ts +0 -0
  561. /package/dist/cmd/{bundle → build}/fix-duplicate-exports.d.ts +0 -0
  562. /package/dist/cmd/{bundle → build}/fix-duplicate-exports.test.d.ts +0 -0
  563. /package/dist/cmd/{bundle → build}/index.d.ts +0 -0
  564. /package/dist/cmd/{bundle → build}/patch/_util.d.ts +0 -0
  565. /package/dist/cmd/{bundle → build}/patch/aisdk.d.ts +0 -0
  566. /package/dist/cmd/{bundle → build}/patch/index.d.ts +0 -0
  567. /package/dist/cmd/{bundle → build}/patch/llm.d.ts +0 -0
  568. /package/dist/cmd/{bundle → build}/plugin.d.ts +0 -0
  569. /package/src/cmd/{bundle → build}/ast.test.ts +0 -0
  570. /package/src/cmd/{bundle → build}/ast.ts +0 -0
  571. /package/src/cmd/{bundle → build}/bundler.ts +0 -0
  572. /package/src/cmd/{bundle → build}/file.ts +0 -0
  573. /package/src/cmd/{bundle → build}/fix-duplicate-exports.test.ts +0 -0
  574. /package/src/cmd/{bundle → build}/fix-duplicate-exports.ts +0 -0
  575. /package/src/cmd/{bundle → build}/patch/_util.ts +0 -0
  576. /package/src/cmd/{bundle → build}/patch/aisdk.ts +0 -0
  577. /package/src/cmd/{bundle → build}/patch/index.ts +0 -0
  578. /package/src/cmd/{bundle → build}/patch/llm.ts +0 -0
@@ -0,0 +1,745 @@
1
+ /** biome-ignore-all lint/style/useTemplate: its easier */
2
+ import { z } from 'zod';
3
+ import { resolve, join } from 'node:path';
4
+ import { bundle } from '../build/bundler';
5
+ import { getBuildMetadata } from '../build/plugin';
6
+ import { existsSync, watch, statSync, readdirSync } from 'node:fs';
7
+ import { getDefaultConfigDir, loadProjectSDKKey, saveProjectDir, saveConfig, loadBuildMetadata, } from '../../config';
8
+ import { createCommand } from '../../types';
9
+ import * as tui from '../../tui';
10
+ import { createAgentTemplates, createAPITemplates } from './templates';
11
+ import { generateEndpoint } from './api';
12
+ import { APIClient, getAPIBaseURL } from '../../api';
13
+ import { download } from './download';
14
+ import { createDevmodeSyncService } from './sync';
15
+ import { getDevmodeDeploymentId } from '../build/ast';
16
+ import { getCommand } from '../../command-prefix';
17
+ export const command = createCommand({
18
+ name: 'dev',
19
+ description: 'Build and run the development server',
20
+ tags: ['mutating', 'slow', 'requires-project'],
21
+ idempotent: true,
22
+ examples: [
23
+ getCommand('dev'),
24
+ getCommand('dev --port 8080'),
25
+ getCommand('dev --local'),
26
+ getCommand('dev --no-public'),
27
+ ],
28
+ schema: {
29
+ options: z.object({
30
+ local: z.boolean().optional().describe('Turn on local services (instead of cloud)'),
31
+ public: z
32
+ .boolean()
33
+ .optional()
34
+ .default(!process.env.CI)
35
+ .describe('Turn on or off the public url'),
36
+ port: z
37
+ .number()
38
+ .min(1024) // should we allow a lower root port? probably not?
39
+ .max(65535)
40
+ .default(3500)
41
+ .describe('The TCP port to start the dev start'),
42
+ }),
43
+ },
44
+ optional: { auth: 'Continue without an account (local only)', project: true },
45
+ async handler(ctx) {
46
+ const { opts, logger, options, project, projectDir, auth } = ctx;
47
+ let { config } = ctx;
48
+ // Allow sync with mock service even without devmode endpoint
49
+ const useMockService = process.env.DEVMODE_SYNC_SERVICE_MOCK === 'true';
50
+ const apiClient = new APIClient(getAPIBaseURL(config), logger, config);
51
+ const syncService = createDevmodeSyncService({ logger, apiClient, mock: useMockService });
52
+ const rootDir = projectDir;
53
+ const appTs = join(rootDir, 'app.ts');
54
+ const srcDir = join(rootDir, 'src');
55
+ const mustHaves = [join(rootDir, 'package.json'), appTs, srcDir];
56
+ const missing = [];
57
+ for (const filename of mustHaves) {
58
+ if (!existsSync(filename)) {
59
+ missing.push(filename);
60
+ }
61
+ }
62
+ if (missing.length) {
63
+ tui.error(`${rootDir} does not appear to be a valid Agentuity project`);
64
+ for (const filename of missing) {
65
+ tui.bullet(`Missing ${filename}`);
66
+ }
67
+ process.exit(1);
68
+ }
69
+ await saveProjectDir(rootDir);
70
+ let devmode;
71
+ let gravityBin;
72
+ if (auth && project && opts.public) {
73
+ // Generate devmode endpoint only when using --public
74
+ const endpoint = await tui.spinner({
75
+ message: 'Connecting to Gravity',
76
+ callback: () => {
77
+ return generateEndpoint(apiClient, project.projectId, config?.devmode?.hostname);
78
+ },
79
+ clearOnSuccess: true,
80
+ });
81
+ const _config = { ...config };
82
+ _config.devmode = {
83
+ hostname: endpoint.hostname,
84
+ };
85
+ await saveConfig(_config);
86
+ config = _config;
87
+ devmode = endpoint;
88
+ }
89
+ logger.debug('Getting devmode deployment id for projectId: %s, endpointId: %s', project?.projectId, devmode?.id);
90
+ const deploymentId = getDevmodeDeploymentId(project?.projectId ?? '', devmode?.id ?? '');
91
+ if (devmode) {
92
+ const configDir = getDefaultConfigDir();
93
+ const gravityDir = join(configDir, 'gravity');
94
+ let mustCheck = true;
95
+ if (config?.gravity?.version &&
96
+ existsSync(join(gravityDir, config.gravity.version, 'gravity')) &&
97
+ config?.gravity?.checked) {
98
+ if (Date.now() - config.gravity.checked < 3.6e6) {
99
+ mustCheck = false;
100
+ gravityBin = join(gravityDir, config.gravity.version, 'gravity');
101
+ }
102
+ }
103
+ if (mustCheck) {
104
+ const res = await download(gravityDir);
105
+ gravityBin = res.filename;
106
+ const _config = { ...config };
107
+ _config.gravity = {
108
+ checked: Date.now(),
109
+ version: res.version,
110
+ };
111
+ await saveConfig(_config);
112
+ config = _config;
113
+ }
114
+ }
115
+ const canDoInput = !!(process.stdin.isTTY && process.stdout.isTTY && !process.env.CI);
116
+ const devmodebody = tui.muted(tui.padRight('Local:', 10)) +
117
+ tui.link(`http://127.0.0.1:${opts.port}`) +
118
+ '\n' +
119
+ tui.muted(tui.padRight('Public:', 10)) +
120
+ (devmode?.hostname ? tui.link(`https://${devmode.hostname}`) : tui.warn('Disabled')) +
121
+ '\n' +
122
+ (canDoInput
123
+ ? '\n' + tui.muted('Press ') + tui.bold('h') + tui.muted(' for keyboard shortcuts')
124
+ : '');
125
+ function showBanner() {
126
+ tui.banner('⨺ Agentuity DevMode', devmodebody, {
127
+ padding: 2,
128
+ topSpacer: false,
129
+ bottomSpacer: false,
130
+ centerTitle: false,
131
+ });
132
+ }
133
+ showBanner();
134
+ const env = { ...process.env };
135
+ env.AGENTUITY_SDK_DEV_MODE = 'true';
136
+ env.AGENTUITY_ENV = 'development';
137
+ env.NODE_ENV = 'development';
138
+ env.PORT = Number(opts.port).toFixed();
139
+ env.AGENTUITY_PORT = env.PORT;
140
+ if (options.logLevel !== undefined)
141
+ env.AGENTUITY_LOG_LEVEL = options.logLevel;
142
+ // Pass through AGENTUITY_SDK_LOG_LEVEL for internal SDK logger
143
+ if (process.env.AGENTUITY_SDK_LOG_LEVEL) {
144
+ env.AGENTUITY_SDK_LOG_LEVEL = process.env.AGENTUITY_SDK_LOG_LEVEL;
145
+ }
146
+ env.AGENTUITY_FORCE_LOCAL_SERVICES = opts.local === true ? 'true' : 'false';
147
+ if (config?.overrides?.transport_url) {
148
+ env.AGENTUITY_TRANSPORT_URL = config.overrides.transport_url;
149
+ }
150
+ if (config?.overrides?.catalyst_url) {
151
+ env.AGENTUITY_CATALYST_URL = config.overrides.catalyst_url;
152
+ }
153
+ if (config?.overrides?.vector_url) {
154
+ env.AGENTUITY_VECTOR_URL = config.overrides.vector_url;
155
+ }
156
+ if (config?.overrides?.object_url) {
157
+ env.AGENTUITY_OBJECTSTORE_URL = config.overrides.object_url;
158
+ }
159
+ if (config?.overrides?.kv_url) {
160
+ env.AGENTUITY_KEYVALUE_URL = config.overrides.kv_url;
161
+ }
162
+ if (config?.overrides?.stream_url) {
163
+ env.AGENTUITY_STREAM_URL = config.overrides.stream_url;
164
+ }
165
+ if (project) {
166
+ env.AGENTUITY_CLOUD_ORG_ID = project.orgId;
167
+ env.AGENTUITY_CLOUD_PROJECT_ID = project.projectId;
168
+ }
169
+ if (!process.stdout.isTTY) {
170
+ env.NO_COLOR = '1';
171
+ }
172
+ const agentuityDir = resolve(rootDir, '.agentuity');
173
+ const appPath = resolve(agentuityDir, 'app.js');
174
+ // Load existing metadata file to use as previousMetadata for sync
175
+ // This prevents reinserting agents/evals that haven't changed
176
+ let previousMetadata;
177
+ try {
178
+ previousMetadata = await loadBuildMetadata(agentuityDir);
179
+ logger.debug('Loaded previous metadata with %d agent(s)', previousMetadata.agents?.length ?? 0);
180
+ }
181
+ catch (_error) {
182
+ // File doesn't exist yet (first run), that's okay
183
+ logger.debug('No previous metadata file found, will treat all agents/evals as new');
184
+ previousMetadata = undefined;
185
+ }
186
+ // Watch directories instead of files to survive atomic replacements (sed -i, cp)
187
+ const watches = [rootDir];
188
+ const watchers = [];
189
+ let failures = 0;
190
+ let running = false;
191
+ let pid = 0;
192
+ let failed = false;
193
+ let devServer;
194
+ let exitPromise;
195
+ let restarting = false;
196
+ let shuttingDownForRestart = false;
197
+ let pendingRestart = false;
198
+ let building = false;
199
+ let buildCompletedAt = 0;
200
+ const BUILD_COOLDOWN_MS = 500; // Ignore file changes for 500ms after build completes
201
+ let metadata;
202
+ let showInitialReadyMessage = true;
203
+ let serverStartTime = 0;
204
+ let gravityClient;
205
+ if (gravityBin && devmode && project) {
206
+ const sdkKey = await loadProjectSDKKey(rootDir);
207
+ if (!sdkKey) {
208
+ tui.warning(`Couldn't find the AGENTUITY_SDK_KEY in ${rootDir} .env file`);
209
+ }
210
+ else {
211
+ const gravityBinExists = await Bun.file(gravityBin).exists();
212
+ if (!gravityBinExists) {
213
+ logger.error(`Gravity binary not found at ${gravityBin}, skipping gravity client startup`);
214
+ }
215
+ else {
216
+ try {
217
+ gravityClient = Bun.spawn([
218
+ gravityBin,
219
+ '--endpoint-id',
220
+ devmode.id,
221
+ '--port',
222
+ env.PORT,
223
+ '--url',
224
+ config?.overrides?.gravity_url ?? 'grpc://devmode.agentuity.com',
225
+ '--log-level',
226
+ 'error',
227
+ ], {
228
+ cwd: rootDir,
229
+ stdout: 'inherit',
230
+ stderr: 'inherit',
231
+ stdin: 'ignore',
232
+ env: { ...env, AGENTUITY_SDK_KEY: sdkKey },
233
+ });
234
+ gravityClient.exited.then(() => {
235
+ logger.debug('gravity client exited');
236
+ });
237
+ }
238
+ catch (err) {
239
+ logger.error('Failed to spawn gravity client: %s', err instanceof Error ? err.message : String(err));
240
+ }
241
+ }
242
+ }
243
+ }
244
+ // Track restart timestamps to detect restart loops
245
+ const restartTimestamps = [];
246
+ const MAX_RESTARTS = 10;
247
+ const TIME_WINDOW_MS = 10000; // 10 seconds
248
+ function checkRestartThrottle() {
249
+ const now = Date.now();
250
+ restartTimestamps.push(now);
251
+ // Remove timestamps older than the time window
252
+ while (restartTimestamps.length > 0 && now - restartTimestamps[0] > TIME_WINDOW_MS) {
253
+ restartTimestamps.shift();
254
+ }
255
+ // Check if we've exceeded the threshold
256
+ if (restartTimestamps.length >= MAX_RESTARTS) {
257
+ tui.error(`Detected ${MAX_RESTARTS} restarts in ${TIME_WINDOW_MS / 1000} seconds`);
258
+ tui.error('This usually indicates a file watcher loop (e.g., log files in the project root)');
259
+ tui.fatal('Too many rapid restarts, exiting to prevent infinite loop');
260
+ }
261
+ }
262
+ function failure(msg) {
263
+ failed = true;
264
+ failures++;
265
+ if (failures >= 5) {
266
+ tui.error(msg);
267
+ tui.fatal('too many failures, exiting');
268
+ }
269
+ else {
270
+ setImmediate(() => tui.error(msg));
271
+ }
272
+ }
273
+ const kill = async () => {
274
+ if (!running || !devServer) {
275
+ logger.trace('kill() called but server not running');
276
+ return;
277
+ }
278
+ logger.trace('Killing dev server (pid: %d)', pid);
279
+ shuttingDownForRestart = true;
280
+ running = false;
281
+ try {
282
+ // Kill the process group (negative PID kills entire group)
283
+ process.kill(-pid, 'SIGTERM');
284
+ logger.trace('Sent SIGTERM to process group');
285
+ }
286
+ catch {
287
+ // Fallback: kill the direct process
288
+ try {
289
+ if (devServer) {
290
+ devServer.kill();
291
+ logger.trace('Killed dev server process directly');
292
+ }
293
+ }
294
+ catch {
295
+ // Ignore if already dead
296
+ logger.trace('Process already dead');
297
+ }
298
+ }
299
+ // Wait for the server to actually exit
300
+ if (exitPromise) {
301
+ logger.trace('Waiting for dev server to exit...');
302
+ await exitPromise;
303
+ logger.trace('Dev server exited');
304
+ }
305
+ devServer = undefined;
306
+ exitPromise = undefined;
307
+ shuttingDownForRestart = false;
308
+ };
309
+ // Handle signals to ensure entire process tree is killed
310
+ const cleanup = (exitCode = 0) => {
311
+ logger.trace('cleanup() called with exitCode=%d', exitCode);
312
+ if (gravityClient) {
313
+ logger.debug('calling kill on gravity client with pid: %d', gravityClient.pid);
314
+ gravityClient.kill('SIGINT');
315
+ gravityClient = undefined;
316
+ }
317
+ if (pid && running) {
318
+ kill();
319
+ }
320
+ for (const watcher of watchers) {
321
+ watcher.close();
322
+ }
323
+ watchers.length = 0;
324
+ process.exit(exitCode);
325
+ };
326
+ process.on('SIGINT', cleanup);
327
+ process.on('SIGTERM', cleanup);
328
+ process.on('SIGQUIT', cleanup);
329
+ process.on('exit', () => {
330
+ // Synchronous cleanup on exit
331
+ if (gravityClient) {
332
+ try {
333
+ gravityClient.kill('SIGINT');
334
+ }
335
+ catch {
336
+ // Ignore errors
337
+ }
338
+ }
339
+ });
340
+ async function restart() {
341
+ // Queue restart if already restarting
342
+ if (restarting) {
343
+ logger.trace('Restart already in progress, queuing another restart');
344
+ pendingRestart = true;
345
+ return;
346
+ }
347
+ logger.trace('restart() called, restarting=%s, running=%s', restarting, running);
348
+ restarting = true;
349
+ pendingRestart = false;
350
+ failed = false;
351
+ try {
352
+ if (running) {
353
+ logger.trace('Server is running, killing before restart');
354
+ checkRestartThrottle();
355
+ tui.info('Restarting on file change');
356
+ await kill();
357
+ logger.trace('Server killed, continuing with restart');
358
+ // Continue with restart after kill completes
359
+ }
360
+ else {
361
+ logger.trace('Initial server start');
362
+ }
363
+ logger.trace('Starting typecheck and build...');
364
+ await Promise.all([
365
+ tui.runCommand({
366
+ command: 'tsc',
367
+ cmd: ['bunx', 'tsc', '--noEmit'],
368
+ cwd: rootDir,
369
+ clearOnSuccess: true,
370
+ truncate: false,
371
+ maxLinesOutput: 2,
372
+ maxLinesOnFailure: 15,
373
+ }),
374
+ tui.spinner('Building project', async () => {
375
+ try {
376
+ logger.trace('Bundle starting...');
377
+ building = true;
378
+ await bundle({
379
+ rootDir,
380
+ dev: true,
381
+ projectId: project?.projectId,
382
+ deploymentId,
383
+ });
384
+ building = false;
385
+ buildCompletedAt = Date.now();
386
+ logger.trace('Bundle completed successfully');
387
+ }
388
+ catch (error) {
389
+ building = false;
390
+ logger.trace('Bundle failed: %s', error);
391
+ failure('Build failed');
392
+ }
393
+ }),
394
+ ]);
395
+ logger.trace('Typecheck and build completed');
396
+ if (failed) {
397
+ logger.trace('Restart failed, returning early');
398
+ return;
399
+ }
400
+ logger.trace('Checking if app file exists: %s', appPath);
401
+ if (!existsSync(appPath)) {
402
+ logger.trace('App file not found: %s', appPath);
403
+ failure(`App file not found: ${appPath}`);
404
+ return;
405
+ }
406
+ logger.trace('App file exists, getting build metadata...');
407
+ metadata = getBuildMetadata();
408
+ logger.trace('Build metadata retrieved');
409
+ // Sync agents and evals to API if in devmode with auth
410
+ if (auth && project && apiClient) {
411
+ try {
412
+ logger.debug('Loading build metadata for sync...');
413
+ const currentMetadata = await loadBuildMetadata(agentuityDir);
414
+ logger.debug('Found %d agent(s) and %d route(s) in metadata', currentMetadata.agents?.length ?? 0, currentMetadata.routes?.length ?? 0);
415
+ if (currentMetadata.agents) {
416
+ for (const agent of currentMetadata.agents) {
417
+ logger.debug('Agent: id=%s, name=%s, version=%s, evals=%d', agent.id, agent.name, agent.version, agent.evals?.length ?? 0);
418
+ if (agent.evals) {
419
+ for (const evalItem of agent.evals) {
420
+ logger.debug(' Eval: id=%s, name=%s, version=%s', evalItem.id, evalItem.name, evalItem.version);
421
+ }
422
+ }
423
+ }
424
+ }
425
+ logger.debug('Syncing agents and evals...');
426
+ await syncService.sync(currentMetadata, previousMetadata, project.projectId, deploymentId);
427
+ previousMetadata = currentMetadata;
428
+ logger.debug('Sync completed successfully');
429
+ }
430
+ catch (error) {
431
+ logger.error('Failed to sync agents/evals: %s', error);
432
+ if (error instanceof Error) {
433
+ logger.error('Error stack: %s', error.stack);
434
+ }
435
+ // Don't fail the build, just log the error
436
+ }
437
+ }
438
+ else {
439
+ logger.trace('Skipping sync - auth=%s, project=%s, devmode=%s, apiClient=%s', !!auth, !!project, !!devmode, !!apiClient);
440
+ }
441
+ logger.trace('Starting dev server: %s', appPath);
442
+ // Use shell to run in a process group for proper cleanup
443
+ // The 'exec' ensures the shell is replaced by the actual process
444
+ logger.trace('Spawning dev server process...');
445
+ devServer = Bun.spawn(['sh', '-c', `exec bun run "${appPath}"`], {
446
+ cwd: rootDir,
447
+ stdout: 'inherit',
448
+ stderr: 'inherit',
449
+ stdin: process.stdin.isTTY ? 'ignore' : 'inherit', // Don't inherit stdin, we handle it ourselves
450
+ env,
451
+ });
452
+ logger.trace('Dev server process spawned, setting up state...');
453
+ running = true;
454
+ failed = false;
455
+ pid = devServer.pid;
456
+ exitPromise = devServer.exited;
457
+ serverStartTime = Date.now();
458
+ logger.trace('Dev server started (pid: %d)', pid);
459
+ if (showInitialReadyMessage) {
460
+ showInitialReadyMessage = false;
461
+ logger.info('DevMode ready 🚀');
462
+ logger.trace('Initial ready message logged');
463
+ }
464
+ logger.trace('Attaching exit handler to dev server process...');
465
+ // Attach non-blocking exit handler
466
+ exitPromise
467
+ .then((exitCode) => {
468
+ const runtime = Date.now() - serverStartTime;
469
+ logger.trace('Dev server exited with code %d (shuttingDownForRestart=%s, runtime=%dms)', exitCode, shuttingDownForRestart, runtime);
470
+ running = false;
471
+ devServer = undefined;
472
+ exitPromise = undefined;
473
+ // If server exited immediately after starting (< 2 seconds), treat as failure and restart
474
+ if (runtime < 2000 && !shuttingDownForRestart) {
475
+ logger.trace('Server exited too quickly, treating as failure and restarting');
476
+ failure('Server exited immediately after starting');
477
+ // Trigger a restart after a short delay
478
+ setTimeout(() => {
479
+ if (!running && !restarting) {
480
+ logger.trace('Triggering restart after quick exit');
481
+ restart();
482
+ }
483
+ }, 100);
484
+ return;
485
+ }
486
+ // Only exit the CLI if this is a clean exit AND not a restart AND server ran for a while
487
+ if (exitCode === 0 && !shuttingDownForRestart && runtime >= 2000) {
488
+ logger.trace('Clean exit, stopping CLI');
489
+ cleanup(exitCode);
490
+ }
491
+ // Non-zero exit codes are treated as restartable failures
492
+ // But if it's exit code 1 (common error exit), also exit the CLI
493
+ if (exitCode === 1 && !shuttingDownForRestart && runtime >= 2000) {
494
+ logger.trace('Server exited with error code 1, stopping CLI');
495
+ cleanup(exitCode);
496
+ }
497
+ })
498
+ .catch((error) => {
499
+ logger.trace('Dev server exit error (shuttingDownForRestart=%s): %s', shuttingDownForRestart, error);
500
+ running = false;
501
+ devServer = undefined;
502
+ exitPromise = undefined;
503
+ if (!shuttingDownForRestart) {
504
+ if (error instanceof Error) {
505
+ failure(`Dev server failed: ${error.message}`);
506
+ }
507
+ else {
508
+ failure('Dev server failed');
509
+ }
510
+ }
511
+ });
512
+ }
513
+ catch (error) {
514
+ logger.trace('Restart caught error: %s', error);
515
+ if (error instanceof Error) {
516
+ logger.trace('Error message: %s, stack: %s', error.message, error.stack);
517
+ failure(`Dev server failed: ${error.message}`);
518
+ }
519
+ else {
520
+ logger.trace('Non-Error exception: %s', String(error));
521
+ failure('Dev server failed');
522
+ }
523
+ running = false;
524
+ devServer = undefined;
525
+ }
526
+ finally {
527
+ logger.trace('Entering restart() finally block...');
528
+ const hadPendingRestart = pendingRestart;
529
+ restarting = false;
530
+ pendingRestart = false;
531
+ logger.trace('restart() completed, restarting=%s, hadPendingRestart=%s', restarting, hadPendingRestart);
532
+ // If another restart was queued while we were restarting, trigger it now
533
+ if (hadPendingRestart) {
534
+ logger.trace('Triggering queued restart');
535
+ setImmediate(restart);
536
+ }
537
+ }
538
+ }
539
+ logger.trace('Starting initial build and server');
540
+ await restart();
541
+ logger.trace('Initial restart completed, setting up watchers');
542
+ // Setup keyboard shortcuts (only if we have a TTY)
543
+ if (canDoInput) {
544
+ logger.trace('Setting up keyboard shortcuts');
545
+ process.stdin.setRawMode(true);
546
+ process.stdin.resume();
547
+ process.stdin.setEncoding('utf8');
548
+ const showHelp = () => {
549
+ console.log('\n' + tui.bold('Keyboard Shortcuts:'));
550
+ console.log(tui.muted(' h') + ' - show this help');
551
+ console.log(tui.muted(' c') + ' - clear console');
552
+ console.log(tui.muted(' r') + ' - restart server');
553
+ console.log(tui.muted(' o') + ' - show routes');
554
+ console.log(tui.muted(' a') + ' - show agents');
555
+ console.log(tui.muted(' q') + ' - quit\n');
556
+ };
557
+ const showRoutes = () => {
558
+ tui.info('API Route Detail');
559
+ tui.table(metadata?.routes ?? [], ['method', 'path', 'filename']);
560
+ };
561
+ const showAgents = () => {
562
+ tui.info('Agent Detail');
563
+ tui.table(metadata?.agents ?? [], ['name', 'filename', 'description']);
564
+ };
565
+ process.stdin.on('data', (data) => {
566
+ const key = data.toString();
567
+ // Handle Ctrl+C
568
+ if (key === '\u0003') {
569
+ cleanup();
570
+ return;
571
+ }
572
+ // Handle other shortcuts
573
+ switch (key) {
574
+ case 'h':
575
+ showHelp();
576
+ break;
577
+ case 'c':
578
+ console.clear();
579
+ showBanner();
580
+ break;
581
+ case 'r':
582
+ tui.info('Manually restarting server...');
583
+ restart();
584
+ break;
585
+ case 'o':
586
+ showRoutes();
587
+ break;
588
+ case 'a':
589
+ showAgents();
590
+ break;
591
+ case 'q':
592
+ tui.info('Shutting down...');
593
+ cleanup();
594
+ break;
595
+ }
596
+ });
597
+ logger.trace('✓ Keyboard shortcuts enabled');
598
+ }
599
+ else {
600
+ if (process.stdin) {
601
+ // still need to monitor stdin in case we are pipeing into another process or file etc
602
+ if (typeof process.stdin.setRawMode === 'function') {
603
+ process.stdin.setRawMode(true);
604
+ }
605
+ process.stdin.resume();
606
+ process.stdin.on('data', (data) => {
607
+ const key = data.toString();
608
+ // Handle Ctrl+C
609
+ if (key === '\u0003') {
610
+ cleanup();
611
+ return;
612
+ }
613
+ });
614
+ }
615
+ logger.trace('❌ Keyboard shortcuts disabled');
616
+ }
617
+ // Patterns to ignore (generated files that change during build)
618
+ const ignorePatterns = [
619
+ /\.generated\.(js|ts|d\.ts)$/,
620
+ /registry\.generated\.ts$/,
621
+ /types\.generated\.d\.ts$/,
622
+ /client\.generated\.js$/,
623
+ /\.tmp$/,
624
+ /\.tsbuildinfo$/,
625
+ /\.agentuity\//,
626
+ // Ignore temporary files created by sed (e.g., sedUprJj0)
627
+ /\/sed[A-Za-z0-9]+$/,
628
+ ];
629
+ // Helper to check if a file is a temporary file created by sed
630
+ const isSedTempFile = (filePath) => {
631
+ const basename = filePath.split('/').pop() || '';
632
+ return /^sed[A-Za-z0-9]+$/.test(basename);
633
+ };
634
+ logger.trace('Setting up file watchers for: %s', watches.join(', '));
635
+ for (const watchDir of watches) {
636
+ try {
637
+ logger.trace('Setting up watcher for %s', watchDir);
638
+ const watcher = watch(watchDir, { recursive: true }, (eventType, changedFile) => {
639
+ const absPath = changedFile ? resolve(watchDir, changedFile) : watchDir;
640
+ // Ignore file changes during active build to prevent loops
641
+ if (building) {
642
+ logger.trace('File change ignored (build in progress): %s (event: %s, file: %s)', watchDir, eventType, changedFile);
643
+ return;
644
+ }
645
+ // Ignore file changes immediately after build completes (cooldown period)
646
+ // This prevents restarts from build output files that are written asynchronously
647
+ if (buildCompletedAt > 0 && Date.now() - buildCompletedAt < BUILD_COOLDOWN_MS) {
648
+ logger.trace('File change ignored (build cooldown): %s (event: %s, file: %s)', watchDir, eventType, changedFile);
649
+ return;
650
+ }
651
+ // Ignore node_modules folder
652
+ if (absPath.includes('node_modules')) {
653
+ logger.trace('File change ignored (node_modules): %s (event: %s, file: %s)', watchDir, eventType, changedFile);
654
+ return;
655
+ }
656
+ // Ignore changes in .agentuity directory (build output)
657
+ // Check both relative path and normalized absolute path
658
+ const isInAgentuityDir = (changedFile &&
659
+ (changedFile === '.agentuity' || changedFile.startsWith('.agentuity/'))) ||
660
+ resolve(absPath).startsWith(agentuityDir);
661
+ if (isInAgentuityDir) {
662
+ logger.trace('File change ignored (.agentuity dir): %s (event: %s, file: %s)', watchDir, eventType, changedFile);
663
+ return;
664
+ }
665
+ // Ignore changes to src/web/public directory (static assets, not code)
666
+ if (changedFile && changedFile === 'src/web/public') {
667
+ logger.trace('File change ignored (static assets dir): %s (event: %s, file: %s)', watchDir, eventType, changedFile);
668
+ return;
669
+ }
670
+ // Check for .tmp file renames that replace watched files (BEFORE ignoring)
671
+ // This handles cases like sed -i.tmp where agent.ts.tmp is renamed to agent.ts
672
+ if (eventType === 'rename' && changedFile && changedFile.endsWith('.tmp')) {
673
+ const targetFile = changedFile.slice(0, -4); // Remove .tmp suffix
674
+ const targetAbsPath = resolve(watchDir, targetFile);
675
+ // Only trigger restart for source files (ts, tsx, js, jsx, etc.)
676
+ const isSourceFile = /\.(ts|tsx|js|jsx|mjs|cjs)$/.test(targetFile);
677
+ // Check if target file exists and is not in ignored directories
678
+ const targetExists = existsSync(targetAbsPath);
679
+ const inNodeModules = targetAbsPath.includes('node_modules');
680
+ const inAgentuityDir = (targetFile &&
681
+ (targetFile === '.agentuity' || targetFile.startsWith('.agentuity/'))) ||
682
+ resolve(targetAbsPath).startsWith(agentuityDir);
683
+ let isDirectory = false;
684
+ if (targetExists) {
685
+ try {
686
+ isDirectory = statSync(targetAbsPath).isDirectory();
687
+ }
688
+ catch (err) {
689
+ logger.trace('Failed to stat target file: %s', err);
690
+ }
691
+ }
692
+ if (isSourceFile &&
693
+ targetExists &&
694
+ !inNodeModules &&
695
+ !inAgentuityDir &&
696
+ !isDirectory) {
697
+ logger.trace('File change detected (temp file rename): %s -> %s', absPath, targetAbsPath);
698
+ restart();
699
+ return;
700
+ }
701
+ }
702
+ // Ignore generated files to prevent restart loops
703
+ if (changedFile) {
704
+ // Check for sed temporary files
705
+ if (isSedTempFile(changedFile)) {
706
+ logger.trace('File change ignored (sed temp file): %s (event: %s, file: %s)', watchDir, eventType, changedFile);
707
+ return;
708
+ }
709
+ // Check other ignore patterns
710
+ for (const pattern of ignorePatterns) {
711
+ if (pattern.test(changedFile)) {
712
+ logger.trace('File change ignored (generated file): %s (event: %s, file: %s)', watchDir, eventType, changedFile);
713
+ return;
714
+ }
715
+ }
716
+ }
717
+ if (eventType === 'rename' &&
718
+ existsSync(absPath) &&
719
+ statSync(absPath).isDirectory() &&
720
+ readdirSync(absPath).length === 0) {
721
+ if (changedFile?.startsWith('src/agents/')) {
722
+ logger.debug('agent directory created: %s', changedFile);
723
+ createAgentTemplates(absPath);
724
+ }
725
+ else if (changedFile?.startsWith('src/apis/')) {
726
+ logger.debug('api directory created: %s', changedFile);
727
+ createAPITemplates(absPath);
728
+ }
729
+ }
730
+ logger.trace('File change detected: %s (event: %s, file: %s)', absPath, eventType, changedFile);
731
+ restart();
732
+ });
733
+ watchers.push(watcher);
734
+ logger.trace('✓ Watcher added for %s', watchDir);
735
+ }
736
+ catch (error) {
737
+ logger.error('Failed to setup watcher for %s: %s', watchDir, error);
738
+ }
739
+ }
740
+ logger.debug('Dev server watching for changes');
741
+ // Keep the handler alive indefinitely
742
+ await new Promise(() => { }).catch(() => cleanup());
743
+ },
744
+ });
745
+ //# sourceMappingURL=index.js.map