@agentuity/cli 2.0.0-beta.0 → 2.0.0

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 (505) hide show
  1. package/bin/cli.ts +8 -1
  2. package/dist/auth.d.ts +1 -1
  3. package/dist/auth.d.ts.map +1 -1
  4. package/dist/auth.js +12 -1
  5. package/dist/auth.js.map +1 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +29 -1
  8. package/dist/cli.js.map +1 -1
  9. package/dist/cmd/auth/ssh/delete.js +1 -1
  10. package/dist/cmd/auth/ssh/delete.js.map +1 -1
  11. package/dist/cmd/build/app-config-extractor.d.ts +27 -0
  12. package/dist/cmd/build/app-config-extractor.d.ts.map +1 -0
  13. package/dist/cmd/build/app-config-extractor.js +152 -0
  14. package/dist/cmd/build/app-config-extractor.js.map +1 -0
  15. package/dist/cmd/build/ci.d.ts +18 -0
  16. package/dist/cmd/build/ci.d.ts.map +1 -0
  17. package/dist/cmd/build/ci.js +188 -0
  18. package/dist/cmd/build/ci.js.map +1 -0
  19. package/dist/cmd/build/index.d.ts.map +1 -1
  20. package/dist/cmd/build/index.js +50 -14
  21. package/dist/cmd/build/index.js.map +1 -1
  22. package/dist/cmd/build/vite/agent-discovery.d.ts.map +1 -1
  23. package/dist/cmd/build/vite/agent-discovery.js +26 -2
  24. package/dist/cmd/build/vite/agent-discovery.js.map +1 -1
  25. package/dist/cmd/build/vite/bun-dev-server.d.ts +35 -0
  26. package/dist/cmd/build/vite/bun-dev-server.d.ts.map +1 -1
  27. package/dist/cmd/build/vite/bun-dev-server.js +232 -4
  28. package/dist/cmd/build/vite/bun-dev-server.js.map +1 -1
  29. package/dist/cmd/build/vite/config-loader.d.ts +15 -20
  30. package/dist/cmd/build/vite/config-loader.d.ts.map +1 -1
  31. package/dist/cmd/build/vite/config-loader.js +41 -74
  32. package/dist/cmd/build/vite/config-loader.js.map +1 -1
  33. package/dist/cmd/build/vite/route-discovery.d.ts +5 -0
  34. package/dist/cmd/build/vite/route-discovery.d.ts.map +1 -1
  35. package/dist/cmd/build/vite/route-discovery.js +13 -11
  36. package/dist/cmd/build/vite/route-discovery.js.map +1 -1
  37. package/dist/cmd/build/vite/static-renderer.d.ts +3 -4
  38. package/dist/cmd/build/vite/static-renderer.d.ts.map +1 -1
  39. package/dist/cmd/build/vite/static-renderer.js +28 -44
  40. package/dist/cmd/build/vite/static-renderer.js.map +1 -1
  41. package/dist/cmd/build/vite/tailwind-source-plugin.d.ts +15 -0
  42. package/dist/cmd/build/vite/tailwind-source-plugin.d.ts.map +1 -0
  43. package/dist/cmd/build/vite/tailwind-source-plugin.js +61 -0
  44. package/dist/cmd/build/vite/tailwind-source-plugin.js.map +1 -0
  45. package/dist/cmd/build/vite/vite-asset-server-config.d.ts.map +1 -1
  46. package/dist/cmd/build/vite/vite-asset-server-config.js +4 -48
  47. package/dist/cmd/build/vite/vite-asset-server-config.js.map +1 -1
  48. package/dist/cmd/build/vite/vite-builder.d.ts.map +1 -1
  49. package/dist/cmd/build/vite/vite-builder.js +70 -155
  50. package/dist/cmd/build/vite/vite-builder.js.map +1 -1
  51. package/dist/cmd/cloud/agent/get.d.ts.map +1 -1
  52. package/dist/cmd/cloud/agent/get.js +1 -0
  53. package/dist/cmd/cloud/agent/get.js.map +1 -1
  54. package/dist/cmd/cloud/apikey/delete.js +1 -1
  55. package/dist/cmd/cloud/apikey/delete.js.map +1 -1
  56. package/dist/cmd/cloud/apikey/get.d.ts.map +1 -1
  57. package/dist/cmd/cloud/apikey/get.js +1 -0
  58. package/dist/cmd/cloud/apikey/get.js.map +1 -1
  59. package/dist/cmd/cloud/apikey/index.d.ts.map +1 -1
  60. package/dist/cmd/cloud/apikey/index.js +1 -0
  61. package/dist/cmd/cloud/apikey/index.js.map +1 -1
  62. package/dist/cmd/cloud/db/delete.js +1 -1
  63. package/dist/cmd/cloud/db/delete.js.map +1 -1
  64. package/dist/cmd/cloud/deploy-fork.d.ts +10 -0
  65. package/dist/cmd/cloud/deploy-fork.d.ts.map +1 -1
  66. package/dist/cmd/cloud/deploy-fork.js +71 -32
  67. package/dist/cmd/cloud/deploy-fork.js.map +1 -1
  68. package/dist/cmd/cloud/deploy.d.ts.map +1 -1
  69. package/dist/cmd/cloud/deploy.js +54 -12
  70. package/dist/cmd/cloud/deploy.js.map +1 -1
  71. package/dist/cmd/cloud/deployment/remove.js +17 -17
  72. package/dist/cmd/cloud/deployment/remove.js.map +1 -1
  73. package/dist/cmd/cloud/deployment/show.js +1 -1
  74. package/dist/cmd/cloud/deployment/show.js.map +1 -1
  75. package/dist/cmd/cloud/email/create.js +1 -1
  76. package/dist/cmd/cloud/email/create.js.map +1 -1
  77. package/dist/cmd/cloud/email/delete.js +1 -1
  78. package/dist/cmd/cloud/email/delete.js.map +1 -1
  79. package/dist/cmd/cloud/email/destination/delete.js +1 -1
  80. package/dist/cmd/cloud/email/destination/delete.js.map +1 -1
  81. package/dist/cmd/cloud/email/get.d.ts.map +1 -1
  82. package/dist/cmd/cloud/email/get.js +1 -0
  83. package/dist/cmd/cloud/email/get.js.map +1 -1
  84. package/dist/cmd/cloud/email/inbound/get.d.ts.map +1 -1
  85. package/dist/cmd/cloud/email/inbound/get.js +1 -0
  86. package/dist/cmd/cloud/email/inbound/get.js.map +1 -1
  87. package/dist/cmd/cloud/email/outbound/get.d.ts.map +1 -1
  88. package/dist/cmd/cloud/email/outbound/get.js +1 -0
  89. package/dist/cmd/cloud/email/outbound/get.js.map +1 -1
  90. package/dist/cmd/cloud/env/delete.js +1 -1
  91. package/dist/cmd/cloud/env/delete.js.map +1 -1
  92. package/dist/cmd/cloud/env/get.d.ts.map +1 -1
  93. package/dist/cmd/cloud/env/get.js +1 -0
  94. package/dist/cmd/cloud/env/get.js.map +1 -1
  95. package/dist/cmd/cloud/eval/get.d.ts.map +1 -1
  96. package/dist/cmd/cloud/eval/get.js +1 -0
  97. package/dist/cmd/cloud/eval/get.js.map +1 -1
  98. package/dist/cmd/cloud/eval/index.d.ts.map +1 -1
  99. package/dist/cmd/cloud/eval/index.js +1 -0
  100. package/dist/cmd/cloud/eval/index.js.map +1 -1
  101. package/dist/cmd/cloud/eval/list.js +1 -1
  102. package/dist/cmd/cloud/eval/list.js.map +1 -1
  103. package/dist/cmd/cloud/eval-run/get.d.ts.map +1 -1
  104. package/dist/cmd/cloud/eval-run/get.js +1 -0
  105. package/dist/cmd/cloud/eval-run/get.js.map +1 -1
  106. package/dist/cmd/cloud/eval-run/index.d.ts.map +1 -1
  107. package/dist/cmd/cloud/eval-run/index.js +1 -0
  108. package/dist/cmd/cloud/eval-run/index.js.map +1 -1
  109. package/dist/cmd/cloud/eval-run/list.js +1 -1
  110. package/dist/cmd/cloud/eval-run/list.js.map +1 -1
  111. package/dist/cmd/cloud/keyvalue/delete-namespace.js +1 -1
  112. package/dist/cmd/cloud/keyvalue/delete-namespace.js.map +1 -1
  113. package/dist/cmd/cloud/keyvalue/delete.js +1 -1
  114. package/dist/cmd/cloud/keyvalue/delete.js.map +1 -1
  115. package/dist/cmd/cloud/keyvalue/get.d.ts.map +1 -1
  116. package/dist/cmd/cloud/keyvalue/get.js +1 -0
  117. package/dist/cmd/cloud/keyvalue/get.js.map +1 -1
  118. package/dist/cmd/cloud/keyvalue/index.js +1 -1
  119. package/dist/cmd/cloud/keyvalue/index.js.map +1 -1
  120. package/dist/cmd/cloud/machine/delete.js +1 -1
  121. package/dist/cmd/cloud/machine/delete.js.map +1 -1
  122. package/dist/cmd/cloud/oidc/delete.js +1 -1
  123. package/dist/cmd/cloud/oidc/delete.js.map +1 -1
  124. package/dist/cmd/cloud/oidc/get.d.ts.map +1 -1
  125. package/dist/cmd/cloud/oidc/get.js +1 -0
  126. package/dist/cmd/cloud/oidc/get.js.map +1 -1
  127. package/dist/cmd/cloud/queue/create.d.ts.map +1 -1
  128. package/dist/cmd/cloud/queue/create.js +1 -0
  129. package/dist/cmd/cloud/queue/create.js.map +1 -1
  130. package/dist/cmd/cloud/queue/delete.js +1 -1
  131. package/dist/cmd/cloud/queue/delete.js.map +1 -1
  132. package/dist/cmd/cloud/queue/get.d.ts.map +1 -1
  133. package/dist/cmd/cloud/queue/get.js +1 -0
  134. package/dist/cmd/cloud/queue/get.js.map +1 -1
  135. package/dist/cmd/cloud/redis/get.js +1 -1
  136. package/dist/cmd/cloud/redis/get.js.map +1 -1
  137. package/dist/cmd/cloud/sandbox/checkpoint/create.d.ts.map +1 -1
  138. package/dist/cmd/cloud/sandbox/checkpoint/create.js +1 -0
  139. package/dist/cmd/cloud/sandbox/checkpoint/create.js.map +1 -1
  140. package/dist/cmd/cloud/sandbox/checkpoint/delete.js +1 -1
  141. package/dist/cmd/cloud/sandbox/checkpoint/delete.js.map +1 -1
  142. package/dist/cmd/cloud/sandbox/checkpoint/index.js +1 -1
  143. package/dist/cmd/cloud/sandbox/checkpoint/index.js.map +1 -1
  144. package/dist/cmd/cloud/sandbox/create.d.ts.map +1 -1
  145. package/dist/cmd/cloud/sandbox/create.js +14 -0
  146. package/dist/cmd/cloud/sandbox/create.js.map +1 -1
  147. package/dist/cmd/cloud/sandbox/delete.js +1 -1
  148. package/dist/cmd/cloud/sandbox/delete.js.map +1 -1
  149. package/dist/cmd/cloud/sandbox/exec.d.ts.map +1 -1
  150. package/dist/cmd/cloud/sandbox/exec.js +76 -66
  151. package/dist/cmd/cloud/sandbox/exec.js.map +1 -1
  152. package/dist/cmd/cloud/sandbox/execution/index.js +1 -1
  153. package/dist/cmd/cloud/sandbox/execution/index.js.map +1 -1
  154. package/dist/cmd/cloud/sandbox/execution/list.js +2 -2
  155. package/dist/cmd/cloud/sandbox/execution/list.js.map +1 -1
  156. package/dist/cmd/cloud/sandbox/fs/cp.d.ts +3 -0
  157. package/dist/cmd/cloud/sandbox/fs/cp.d.ts.map +1 -0
  158. package/dist/cmd/cloud/sandbox/{cp.js → fs/cp.js} +13 -13
  159. package/dist/cmd/cloud/sandbox/fs/cp.js.map +1 -0
  160. package/dist/cmd/cloud/sandbox/fs/download.d.ts +3 -0
  161. package/dist/cmd/cloud/sandbox/fs/download.d.ts.map +1 -0
  162. package/dist/cmd/cloud/sandbox/{download.js → fs/download.js} +7 -7
  163. package/dist/cmd/cloud/sandbox/fs/download.js.map +1 -0
  164. package/dist/cmd/cloud/sandbox/fs/index.d.ts +2 -0
  165. package/dist/cmd/cloud/sandbox/fs/index.d.ts.map +1 -0
  166. package/dist/cmd/cloud/sandbox/fs/index.js +36 -0
  167. package/dist/cmd/cloud/sandbox/fs/index.js.map +1 -0
  168. package/dist/cmd/cloud/sandbox/fs/ls.d.ts +3 -0
  169. package/dist/cmd/cloud/sandbox/fs/ls.d.ts.map +1 -0
  170. package/dist/cmd/cloud/sandbox/{ls.js → fs/ls.js} +10 -10
  171. package/dist/cmd/cloud/sandbox/fs/ls.js.map +1 -0
  172. package/dist/cmd/cloud/sandbox/fs/mkdir.d.ts +3 -0
  173. package/dist/cmd/cloud/sandbox/fs/mkdir.d.ts.map +1 -0
  174. package/dist/cmd/cloud/sandbox/{mkdir.js → fs/mkdir.js} +6 -6
  175. package/dist/cmd/cloud/sandbox/fs/mkdir.js.map +1 -0
  176. package/dist/cmd/cloud/sandbox/fs/rm.d.ts +3 -0
  177. package/dist/cmd/cloud/sandbox/fs/rm.d.ts.map +1 -0
  178. package/dist/cmd/cloud/sandbox/{rm.js → fs/rm.js} +6 -5
  179. package/dist/cmd/cloud/sandbox/fs/rm.js.map +1 -0
  180. package/dist/cmd/cloud/sandbox/fs/rmdir.d.ts +3 -0
  181. package/dist/cmd/cloud/sandbox/fs/rmdir.d.ts.map +1 -0
  182. package/dist/cmd/cloud/sandbox/{rmdir.js → fs/rmdir.js} +6 -6
  183. package/dist/cmd/cloud/sandbox/fs/rmdir.js.map +1 -0
  184. package/dist/cmd/cloud/sandbox/fs/upload.d.ts +3 -0
  185. package/dist/cmd/cloud/sandbox/fs/upload.d.ts.map +1 -0
  186. package/dist/cmd/cloud/sandbox/{upload.js → fs/upload.js} +7 -7
  187. package/dist/cmd/cloud/sandbox/fs/upload.js.map +1 -0
  188. package/dist/cmd/cloud/sandbox/index.d.ts.map +1 -1
  189. package/dist/cmd/cloud/sandbox/index.js +4 -14
  190. package/dist/cmd/cloud/sandbox/index.js.map +1 -1
  191. package/dist/cmd/cloud/sandbox/job/create.d.ts +3 -0
  192. package/dist/cmd/cloud/sandbox/job/create.d.ts.map +1 -0
  193. package/dist/cmd/cloud/sandbox/job/create.js +52 -0
  194. package/dist/cmd/cloud/sandbox/job/create.js.map +1 -0
  195. package/dist/cmd/cloud/sandbox/job/destroy.d.ts +3 -0
  196. package/dist/cmd/cloud/sandbox/job/destroy.d.ts.map +1 -0
  197. package/dist/cmd/cloud/sandbox/job/destroy.js +59 -0
  198. package/dist/cmd/cloud/sandbox/job/destroy.js.map +1 -0
  199. package/dist/cmd/cloud/sandbox/job/get.d.ts +3 -0
  200. package/dist/cmd/cloud/sandbox/job/get.d.ts.map +1 -0
  201. package/dist/cmd/cloud/sandbox/job/get.js +66 -0
  202. package/dist/cmd/cloud/sandbox/job/get.js.map +1 -0
  203. package/dist/cmd/cloud/sandbox/job/index.d.ts +3 -0
  204. package/dist/cmd/cloud/sandbox/job/index.d.ts.map +1 -0
  205. package/dist/cmd/cloud/sandbox/job/index.js +41 -0
  206. package/dist/cmd/cloud/sandbox/job/index.js.map +1 -0
  207. package/dist/cmd/cloud/sandbox/job/list.d.ts +3 -0
  208. package/dist/cmd/cloud/sandbox/job/list.d.ts.map +1 -0
  209. package/dist/cmd/cloud/sandbox/job/list.js +67 -0
  210. package/dist/cmd/cloud/sandbox/job/list.js.map +1 -0
  211. package/dist/cmd/cloud/sandbox/job/logs.d.ts +3 -0
  212. package/dist/cmd/cloud/sandbox/job/logs.d.ts.map +1 -0
  213. package/dist/cmd/cloud/sandbox/job/logs.js +124 -0
  214. package/dist/cmd/cloud/sandbox/job/logs.js.map +1 -0
  215. package/dist/cmd/cloud/sandbox/run.d.ts.map +1 -1
  216. package/dist/cmd/cloud/sandbox/run.js +14 -2
  217. package/dist/cmd/cloud/sandbox/run.js.map +1 -1
  218. package/dist/cmd/cloud/sandbox/runtime/index.js +1 -1
  219. package/dist/cmd/cloud/sandbox/runtime/index.js.map +1 -1
  220. package/dist/cmd/cloud/sandbox/snapshot/build.js +2 -2
  221. package/dist/cmd/cloud/sandbox/snapshot/build.js.map +1 -1
  222. package/dist/cmd/cloud/sandbox/snapshot/create.d.ts.map +1 -1
  223. package/dist/cmd/cloud/sandbox/snapshot/create.js +1 -0
  224. package/dist/cmd/cloud/sandbox/snapshot/create.js.map +1 -1
  225. package/dist/cmd/cloud/sandbox/snapshot/delete.js +1 -1
  226. package/dist/cmd/cloud/sandbox/snapshot/delete.js.map +1 -1
  227. package/dist/cmd/cloud/sandbox/snapshot/index.js +1 -1
  228. package/dist/cmd/cloud/sandbox/snapshot/index.js.map +1 -1
  229. package/dist/cmd/cloud/schedule/create.d.ts.map +1 -1
  230. package/dist/cmd/cloud/schedule/create.js +1 -0
  231. package/dist/cmd/cloud/schedule/create.js.map +1 -1
  232. package/dist/cmd/cloud/schedule/delete.js +1 -1
  233. package/dist/cmd/cloud/schedule/delete.js.map +1 -1
  234. package/dist/cmd/cloud/schedule/delivery/get.d.ts.map +1 -1
  235. package/dist/cmd/cloud/schedule/delivery/get.js +1 -0
  236. package/dist/cmd/cloud/schedule/delivery/get.js.map +1 -1
  237. package/dist/cmd/cloud/schedule/destination/create.d.ts.map +1 -1
  238. package/dist/cmd/cloud/schedule/destination/create.js +1 -0
  239. package/dist/cmd/cloud/schedule/destination/create.js.map +1 -1
  240. package/dist/cmd/cloud/schedule/destination/delete.js +1 -1
  241. package/dist/cmd/cloud/schedule/destination/delete.js.map +1 -1
  242. package/dist/cmd/cloud/schedule/destination/get.d.ts.map +1 -1
  243. package/dist/cmd/cloud/schedule/destination/get.js +1 -0
  244. package/dist/cmd/cloud/schedule/destination/get.js.map +1 -1
  245. package/dist/cmd/cloud/schedule/get.d.ts.map +1 -1
  246. package/dist/cmd/cloud/schedule/get.js +1 -0
  247. package/dist/cmd/cloud/schedule/get.js.map +1 -1
  248. package/dist/cmd/cloud/session/get.d.ts.map +1 -1
  249. package/dist/cmd/cloud/session/get.js +1 -0
  250. package/dist/cmd/cloud/session/get.js.map +1 -1
  251. package/dist/cmd/cloud/session/index.d.ts.map +1 -1
  252. package/dist/cmd/cloud/session/index.js +1 -0
  253. package/dist/cmd/cloud/session/index.js.map +1 -1
  254. package/dist/cmd/cloud/session/list.js +1 -1
  255. package/dist/cmd/cloud/session/list.js.map +1 -1
  256. package/dist/cmd/cloud/storage/delete.js +1 -1
  257. package/dist/cmd/cloud/storage/delete.js.map +1 -1
  258. package/dist/cmd/cloud/stream/delete.js +1 -1
  259. package/dist/cmd/cloud/stream/delete.js.map +1 -1
  260. package/dist/cmd/cloud/stream/get.d.ts.map +1 -1
  261. package/dist/cmd/cloud/stream/get.js +1 -0
  262. package/dist/cmd/cloud/stream/get.js.map +1 -1
  263. package/dist/cmd/cloud/task/delete.js +1 -1
  264. package/dist/cmd/cloud/task/delete.js.map +1 -1
  265. package/dist/cmd/cloud/task/index.d.ts.map +1 -1
  266. package/dist/cmd/cloud/task/index.js +1 -0
  267. package/dist/cmd/cloud/task/index.js.map +1 -1
  268. package/dist/cmd/cloud/thread/delete.js +1 -1
  269. package/dist/cmd/cloud/thread/delete.js.map +1 -1
  270. package/dist/cmd/cloud/thread/get.d.ts.map +1 -1
  271. package/dist/cmd/cloud/thread/get.js +1 -0
  272. package/dist/cmd/cloud/thread/get.js.map +1 -1
  273. package/dist/cmd/cloud/thread/index.d.ts.map +1 -1
  274. package/dist/cmd/cloud/thread/index.js +1 -0
  275. package/dist/cmd/cloud/thread/index.js.map +1 -1
  276. package/dist/cmd/cloud/thread/list.js +1 -1
  277. package/dist/cmd/cloud/thread/list.js.map +1 -1
  278. package/dist/cmd/cloud/vector/delete-namespace.js +1 -1
  279. package/dist/cmd/cloud/vector/delete-namespace.js.map +1 -1
  280. package/dist/cmd/cloud/vector/delete.js +1 -1
  281. package/dist/cmd/cloud/vector/delete.js.map +1 -1
  282. package/dist/cmd/cloud/vector/get.d.ts.map +1 -1
  283. package/dist/cmd/cloud/vector/get.js +1 -0
  284. package/dist/cmd/cloud/vector/get.js.map +1 -1
  285. package/dist/cmd/cloud/vector/index.js +1 -1
  286. package/dist/cmd/cloud/vector/index.js.map +1 -1
  287. package/dist/cmd/cloud/webhook/create.d.ts.map +1 -1
  288. package/dist/cmd/cloud/webhook/create.js +1 -0
  289. package/dist/cmd/cloud/webhook/create.js.map +1 -1
  290. package/dist/cmd/cloud/webhook/delete.js +1 -1
  291. package/dist/cmd/cloud/webhook/delete.js.map +1 -1
  292. package/dist/cmd/cloud/webhook/get.d.ts.map +1 -1
  293. package/dist/cmd/cloud/webhook/get.js +1 -0
  294. package/dist/cmd/cloud/webhook/get.js.map +1 -1
  295. package/dist/cmd/coder/hub-url.d.ts.map +1 -1
  296. package/dist/cmd/coder/hub-url.js +3 -1
  297. package/dist/cmd/coder/hub-url.js.map +1 -1
  298. package/dist/cmd/coder/start.js +6 -6
  299. package/dist/cmd/coder/start.js.map +1 -1
  300. package/dist/cmd/coder/tui-init.d.ts +2 -2
  301. package/dist/cmd/coder/tui-init.js +2 -2
  302. package/dist/cmd/coder/tui-init.js.map +1 -1
  303. package/dist/cmd/dev/index.d.ts.map +1 -1
  304. package/dist/cmd/dev/index.js +161 -130
  305. package/dist/cmd/dev/index.js.map +1 -1
  306. package/dist/cmd/dev/process-manager.d.ts +104 -0
  307. package/dist/cmd/dev/process-manager.d.ts.map +1 -0
  308. package/dist/cmd/dev/process-manager.js +204 -0
  309. package/dist/cmd/dev/process-manager.js.map +1 -0
  310. package/dist/cmd/git/account/remove.d.ts.map +1 -1
  311. package/dist/cmd/git/account/remove.js +1 -0
  312. package/dist/cmd/git/account/remove.js.map +1 -1
  313. package/dist/cmd/profile/delete.js +1 -1
  314. package/dist/cmd/profile/delete.js.map +1 -1
  315. package/dist/cmd/project/delete.js +1 -1
  316. package/dist/cmd/project/delete.js.map +1 -1
  317. package/dist/cmd/project/hostname/get.d.ts.map +1 -1
  318. package/dist/cmd/project/hostname/get.js +1 -0
  319. package/dist/cmd/project/hostname/get.js.map +1 -1
  320. package/dist/cmd/project/show.d.ts.map +1 -1
  321. package/dist/cmd/project/show.js +9 -0
  322. package/dist/cmd/project/show.js.map +1 -1
  323. package/dist/cmd/support/report.d.ts.map +1 -1
  324. package/dist/cmd/support/report.js +19 -10
  325. package/dist/cmd/support/report.js.map +1 -1
  326. package/dist/cmd/upgrade/index.d.ts.map +1 -1
  327. package/dist/cmd/upgrade/index.js +3 -16
  328. package/dist/cmd/upgrade/index.js.map +1 -1
  329. package/dist/errors.d.ts +24 -10
  330. package/dist/errors.d.ts.map +1 -1
  331. package/dist/errors.js +42 -12
  332. package/dist/errors.js.map +1 -1
  333. package/dist/schema-generator.d.ts.map +1 -1
  334. package/dist/schema-generator.js +3 -13
  335. package/dist/schema-generator.js.map +1 -1
  336. package/dist/schema-parser.d.ts.map +1 -1
  337. package/dist/schema-parser.js +8 -0
  338. package/dist/schema-parser.js.map +1 -1
  339. package/dist/steps.d.ts.map +1 -1
  340. package/dist/steps.js +38 -0
  341. package/dist/steps.js.map +1 -1
  342. package/dist/tui.d.ts.map +1 -1
  343. package/dist/tui.js +25 -9
  344. package/dist/tui.js.map +1 -1
  345. package/dist/utils/stream-capture.d.ts +9 -0
  346. package/dist/utils/stream-capture.d.ts.map +1 -0
  347. package/dist/utils/stream-capture.js +34 -0
  348. package/dist/utils/stream-capture.js.map +1 -0
  349. package/dist/utils/stream-url.d.ts +23 -0
  350. package/dist/utils/stream-url.d.ts.map +1 -0
  351. package/dist/utils/stream-url.js +153 -0
  352. package/dist/utils/stream-url.js.map +1 -0
  353. package/dist/utils/version-mismatch.d.ts +39 -0
  354. package/dist/utils/version-mismatch.d.ts.map +1 -0
  355. package/dist/utils/version-mismatch.js +161 -0
  356. package/dist/utils/version-mismatch.js.map +1 -0
  357. package/dist/utils/zip.d.ts.map +1 -1
  358. package/dist/utils/zip.js +19 -10
  359. package/dist/utils/zip.js.map +1 -1
  360. package/package.json +11 -7
  361. package/src/auth.ts +12 -2
  362. package/src/cli.ts +33 -1
  363. package/src/cmd/auth/ssh/delete.ts +1 -1
  364. package/src/cmd/build/app-config-extractor.ts +186 -0
  365. package/src/cmd/build/ci.ts +225 -0
  366. package/src/cmd/build/index.ts +61 -14
  367. package/src/cmd/build/vite/agent-discovery.ts +30 -5
  368. package/src/cmd/build/vite/bun-dev-server.ts +319 -6
  369. package/src/cmd/build/vite/config-loader.ts +45 -77
  370. package/src/cmd/build/vite/route-discovery.ts +25 -12
  371. package/src/cmd/build/vite/static-renderer.ts +34 -47
  372. package/src/cmd/build/vite/tailwind-source-plugin.ts +73 -0
  373. package/src/cmd/build/vite/vite-asset-server-config.ts +4 -47
  374. package/src/cmd/build/vite/vite-builder.ts +80 -168
  375. package/src/cmd/cloud/agent/get.ts +1 -0
  376. package/src/cmd/cloud/apikey/delete.ts +1 -1
  377. package/src/cmd/cloud/apikey/get.ts +1 -0
  378. package/src/cmd/cloud/apikey/index.ts +1 -0
  379. package/src/cmd/cloud/db/delete.ts +1 -1
  380. package/src/cmd/cloud/deploy-fork.ts +90 -33
  381. package/src/cmd/cloud/deploy.ts +69 -13
  382. package/src/cmd/cloud/deployment/remove.ts +17 -17
  383. package/src/cmd/cloud/deployment/show.ts +1 -1
  384. package/src/cmd/cloud/email/create.ts +1 -1
  385. package/src/cmd/cloud/email/delete.ts +1 -1
  386. package/src/cmd/cloud/email/destination/delete.ts +1 -1
  387. package/src/cmd/cloud/email/get.ts +1 -0
  388. package/src/cmd/cloud/email/inbound/get.ts +1 -0
  389. package/src/cmd/cloud/email/outbound/get.ts +1 -0
  390. package/src/cmd/cloud/env/delete.ts +1 -1
  391. package/src/cmd/cloud/env/get.ts +1 -0
  392. package/src/cmd/cloud/eval/get.ts +1 -0
  393. package/src/cmd/cloud/eval/index.ts +1 -0
  394. package/src/cmd/cloud/eval/list.ts +1 -1
  395. package/src/cmd/cloud/eval-run/get.ts +1 -0
  396. package/src/cmd/cloud/eval-run/index.ts +1 -0
  397. package/src/cmd/cloud/eval-run/list.ts +1 -1
  398. package/src/cmd/cloud/keyvalue/delete-namespace.ts +1 -1
  399. package/src/cmd/cloud/keyvalue/delete.ts +1 -1
  400. package/src/cmd/cloud/keyvalue/get.ts +1 -0
  401. package/src/cmd/cloud/keyvalue/index.ts +1 -1
  402. package/src/cmd/cloud/machine/delete.ts +1 -1
  403. package/src/cmd/cloud/oidc/delete.ts +1 -1
  404. package/src/cmd/cloud/oidc/get.ts +1 -0
  405. package/src/cmd/cloud/queue/create.ts +1 -0
  406. package/src/cmd/cloud/queue/delete.ts +1 -1
  407. package/src/cmd/cloud/queue/get.ts +1 -0
  408. package/src/cmd/cloud/redis/get.ts +1 -1
  409. package/src/cmd/cloud/sandbox/checkpoint/create.ts +1 -0
  410. package/src/cmd/cloud/sandbox/checkpoint/delete.ts +1 -1
  411. package/src/cmd/cloud/sandbox/checkpoint/index.ts +1 -1
  412. package/src/cmd/cloud/sandbox/create.ts +16 -0
  413. package/src/cmd/cloud/sandbox/delete.ts +1 -1
  414. package/src/cmd/cloud/sandbox/exec.ts +102 -90
  415. package/src/cmd/cloud/sandbox/execution/index.ts +1 -1
  416. package/src/cmd/cloud/sandbox/execution/list.ts +2 -2
  417. package/src/cmd/cloud/sandbox/{cp.ts → fs/cp.ts} +13 -13
  418. package/src/cmd/cloud/sandbox/{download.ts → fs/download.ts} +7 -7
  419. package/src/cmd/cloud/sandbox/fs/index.ts +36 -0
  420. package/src/cmd/cloud/sandbox/{ls.ts → fs/ls.ts} +10 -10
  421. package/src/cmd/cloud/sandbox/{mkdir.ts → fs/mkdir.ts} +6 -6
  422. package/src/cmd/cloud/sandbox/{rm.ts → fs/rm.ts} +6 -5
  423. package/src/cmd/cloud/sandbox/{rmdir.ts → fs/rmdir.ts} +6 -6
  424. package/src/cmd/cloud/sandbox/{upload.ts → fs/upload.ts} +7 -7
  425. package/src/cmd/cloud/sandbox/index.ts +4 -14
  426. package/src/cmd/cloud/sandbox/job/create.ts +63 -0
  427. package/src/cmd/cloud/sandbox/job/destroy.ts +67 -0
  428. package/src/cmd/cloud/sandbox/job/get.ts +78 -0
  429. package/src/cmd/cloud/sandbox/job/index.ts +42 -0
  430. package/src/cmd/cloud/sandbox/job/list.ts +81 -0
  431. package/src/cmd/cloud/sandbox/job/logs.ts +139 -0
  432. package/src/cmd/cloud/sandbox/run.ts +16 -2
  433. package/src/cmd/cloud/sandbox/runtime/index.ts +1 -1
  434. package/src/cmd/cloud/sandbox/snapshot/build.ts +2 -2
  435. package/src/cmd/cloud/sandbox/snapshot/create.ts +1 -0
  436. package/src/cmd/cloud/sandbox/snapshot/delete.ts +1 -1
  437. package/src/cmd/cloud/sandbox/snapshot/index.ts +1 -1
  438. package/src/cmd/cloud/schedule/create.ts +1 -0
  439. package/src/cmd/cloud/schedule/delete.ts +1 -1
  440. package/src/cmd/cloud/schedule/delivery/get.ts +1 -0
  441. package/src/cmd/cloud/schedule/destination/create.ts +1 -0
  442. package/src/cmd/cloud/schedule/destination/delete.ts +1 -1
  443. package/src/cmd/cloud/schedule/destination/get.ts +1 -0
  444. package/src/cmd/cloud/schedule/get.ts +1 -0
  445. package/src/cmd/cloud/session/get.ts +1 -0
  446. package/src/cmd/cloud/session/index.ts +1 -0
  447. package/src/cmd/cloud/session/list.ts +1 -1
  448. package/src/cmd/cloud/storage/delete.ts +1 -1
  449. package/src/cmd/cloud/stream/delete.ts +1 -1
  450. package/src/cmd/cloud/stream/get.ts +1 -0
  451. package/src/cmd/cloud/task/delete.ts +1 -1
  452. package/src/cmd/cloud/task/index.ts +1 -0
  453. package/src/cmd/cloud/thread/delete.ts +1 -1
  454. package/src/cmd/cloud/thread/get.ts +1 -0
  455. package/src/cmd/cloud/thread/index.ts +1 -0
  456. package/src/cmd/cloud/thread/list.ts +1 -1
  457. package/src/cmd/cloud/vector/delete-namespace.ts +1 -1
  458. package/src/cmd/cloud/vector/delete.ts +1 -1
  459. package/src/cmd/cloud/vector/get.ts +1 -0
  460. package/src/cmd/cloud/vector/index.ts +1 -1
  461. package/src/cmd/cloud/webhook/create.ts +1 -0
  462. package/src/cmd/cloud/webhook/delete.ts +1 -1
  463. package/src/cmd/cloud/webhook/get.ts +1 -0
  464. package/src/cmd/coder/hub-url.ts +3 -1
  465. package/src/cmd/coder/start.ts +6 -6
  466. package/src/cmd/coder/tui-init.ts +4 -4
  467. package/src/cmd/dev/index.ts +171 -131
  468. package/src/cmd/dev/process-manager.ts +261 -0
  469. package/src/cmd/git/account/remove.ts +1 -0
  470. package/src/cmd/profile/delete.ts +1 -1
  471. package/src/cmd/project/delete.ts +1 -1
  472. package/src/cmd/project/hostname/get.ts +1 -0
  473. package/src/cmd/project/show.ts +9 -0
  474. package/src/cmd/support/report.ts +21 -10
  475. package/src/cmd/upgrade/index.ts +3 -18
  476. package/src/errors.ts +44 -12
  477. package/src/schema-generator.ts +3 -13
  478. package/src/schema-parser.ts +11 -0
  479. package/src/steps.ts +38 -0
  480. package/src/tui.ts +24 -9
  481. package/src/utils/stream-capture.ts +39 -0
  482. package/src/utils/stream-url.ts +226 -0
  483. package/src/utils/version-mismatch.ts +204 -0
  484. package/src/utils/zip.ts +22 -10
  485. package/dist/cmd/cloud/sandbox/cp.d.ts +0 -3
  486. package/dist/cmd/cloud/sandbox/cp.d.ts.map +0 -1
  487. package/dist/cmd/cloud/sandbox/cp.js.map +0 -1
  488. package/dist/cmd/cloud/sandbox/download.d.ts +0 -3
  489. package/dist/cmd/cloud/sandbox/download.d.ts.map +0 -1
  490. package/dist/cmd/cloud/sandbox/download.js.map +0 -1
  491. package/dist/cmd/cloud/sandbox/ls.d.ts +0 -3
  492. package/dist/cmd/cloud/sandbox/ls.d.ts.map +0 -1
  493. package/dist/cmd/cloud/sandbox/ls.js.map +0 -1
  494. package/dist/cmd/cloud/sandbox/mkdir.d.ts +0 -3
  495. package/dist/cmd/cloud/sandbox/mkdir.d.ts.map +0 -1
  496. package/dist/cmd/cloud/sandbox/mkdir.js.map +0 -1
  497. package/dist/cmd/cloud/sandbox/rm.d.ts +0 -3
  498. package/dist/cmd/cloud/sandbox/rm.d.ts.map +0 -1
  499. package/dist/cmd/cloud/sandbox/rm.js.map +0 -1
  500. package/dist/cmd/cloud/sandbox/rmdir.d.ts +0 -3
  501. package/dist/cmd/cloud/sandbox/rmdir.d.ts.map +0 -1
  502. package/dist/cmd/cloud/sandbox/rmdir.js.map +0 -1
  503. package/dist/cmd/cloud/sandbox/upload.d.ts +0 -3
  504. package/dist/cmd/cloud/sandbox/upload.d.ts.map +0 -1
  505. package/dist/cmd/cloud/sandbox/upload.js.map +0 -1
@@ -7,6 +7,10 @@
7
7
  *
8
8
  * The user's app.ts exports the result of createApp() which includes `fetch`
9
9
  * and `port` properties that Bun uses to manage the server lifecycle.
10
+ *
11
+ * Key requirements for bun --hot:
12
+ * - app.ts MUST have `export default` with { fetch, port } properties
13
+ * - Without export default, Bun runs the code but never starts an HTTP server
10
14
  */
11
15
  import type { Logger } from '../../../types';
12
16
  export interface BunDevServerOptions {
@@ -21,6 +25,36 @@ export interface BunDevServerOptions {
21
25
  export interface BunDevServerResult {
22
26
  bunServerPort: number;
23
27
  }
28
+ /**
29
+ * Validation result for app.ts entry point.
30
+ */
31
+ interface AppValidationResult {
32
+ /** Whether app.ts has a default export */
33
+ hasDefaultExport: boolean;
34
+ /** Whether app.ts calls createApp() */
35
+ hasCreateApp: boolean;
36
+ /** Whether it's the v1 pattern (destructuring without export) */
37
+ isV1Pattern: boolean;
38
+ /** Any validation hints to show */
39
+ hints: string[];
40
+ }
41
+ /**
42
+ * Validate app.ts for common issues that prevent Bun --hot from starting.
43
+ *
44
+ * Bun --hot requires `export default { fetch, port }` to start a server.
45
+ * Common mistakes:
46
+ * - No `export default` (v1 pattern: destructuring result without exporting)
47
+ * - Calling createApp() but not exporting it
48
+ *
49
+ * @internal Exported for testing only
50
+ */
51
+ export declare function validateAppTs(appPath: string): Promise<AppValidationResult>;
52
+ /**
53
+ * Build a detailed error message with validation hints and captured output.
54
+ *
55
+ * @internal Exported for testing only
56
+ */
57
+ export declare function buildStartupErrorMessage(port: number, timeoutMs: number, stderr: string, validation: AppValidationResult): string;
24
58
  /**
25
59
  * Start Bun dev server with --hot (Vite asset server must already be running).
26
60
  *
@@ -29,4 +63,5 @@ export interface BunDevServerResult {
29
63
  * are re-evaluated.
30
64
  */
31
65
  export declare function startBunDevServer(options: BunDevServerOptions): Promise<BunDevServerResult>;
66
+ export {};
32
67
  //# sourceMappingURL=bun-dev-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bun-dev-server.d.ts","sourceRoot":"","sources":["../../../../src/cmd/build/vite/bun-dev-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG7C,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IAClC,aAAa,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAuFjG"}
1
+ {"version":3,"file":"bun-dev-server.d.ts","sourceRoot":"","sources":["../../../../src/cmd/build/vite/bun-dev-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAI7C,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IAClC,aAAa,EAAE,MAAM,CAAC;CACtB;AAgHD;;GAEG;AACH,UAAU,mBAAmB;IAC5B,0CAA0C;IAC1C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,uCAAuC;IACvC,YAAY,EAAE,OAAO,CAAC;IACtB,iEAAiE;IACjE,WAAW,EAAE,OAAO,CAAC;IACrB,mCAAmC;IACnC,KAAK,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAoEjF;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACvC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,mBAAmB,GAC7B,MAAM,CA0CR;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAyIjG"}
@@ -7,8 +7,194 @@
7
7
  *
8
8
  * The user's app.ts exports the result of createApp() which includes `fetch`
9
9
  * and `port` properties that Bun uses to manage the server lifecycle.
10
+ *
11
+ * Key requirements for bun --hot:
12
+ * - app.ts MUST have `export default` with { fetch, port } properties
13
+ * - Without export default, Bun runs the code but never starts an HTTP server
10
14
  */
11
15
  import { getAgentEnv } from '../../../agent-detection';
16
+ import { createServer as createNetServer } from 'node:net';
17
+ /**
18
+ * Check if a port is available for binding.
19
+ * Returns true if the port is free, false if in use.
20
+ */
21
+ function isPortAvailable(port, host = '127.0.0.1') {
22
+ return new Promise((resolve) => {
23
+ const server = createNetServer();
24
+ server.once('error', () => {
25
+ resolve(false);
26
+ });
27
+ server.listen(port, host, () => {
28
+ server.close(() => {
29
+ resolve(true);
30
+ });
31
+ });
32
+ });
33
+ }
34
+ /**
35
+ * Kill any process listening on the specified port.
36
+ * Uses lsof on Unix systems to find and kill the process.
37
+ */
38
+ async function killProcessOnPort(port, logger) {
39
+ if (process.platform === 'win32') {
40
+ // Windows: use netstat to find PID, then taskkill
41
+ // This is more complex and less reliable, skip for now
42
+ return false;
43
+ }
44
+ try {
45
+ // Find PIDs listening on the port
46
+ const result = Bun.spawnSync(['lsof', '-t', '-i', `:${port}`], {
47
+ stdout: 'pipe',
48
+ stderr: 'ignore',
49
+ });
50
+ if (result.exitCode !== 0 || !result.stdout) {
51
+ return false;
52
+ }
53
+ const pids = new TextDecoder()
54
+ .decode(result.stdout)
55
+ .trim()
56
+ .split('\n')
57
+ .filter((line) => line && /^\d+$/.test(line));
58
+ if (pids.length === 0) {
59
+ return false;
60
+ }
61
+ // Kill each process
62
+ for (const pid of pids) {
63
+ try {
64
+ // Use SIGKILL to ensure cleanup
65
+ const killResult = Bun.spawnSync(['kill', '-9', pid], {
66
+ stdout: 'ignore',
67
+ stderr: 'ignore',
68
+ });
69
+ if (killResult.exitCode === 0) {
70
+ logger.debug('Killed orphan process %s on port %d', pid, port);
71
+ }
72
+ }
73
+ catch {
74
+ // Ignore kill errors
75
+ }
76
+ }
77
+ // Brief pause to let the port be released
78
+ await new Promise((resolve) => setTimeout(resolve, 100));
79
+ return true;
80
+ }
81
+ catch {
82
+ return false;
83
+ }
84
+ }
85
+ /**
86
+ * Ensure the port is available, cleaning up any orphan processes if needed.
87
+ */
88
+ async function ensurePortAvailable(port, logger) {
89
+ const available = await isPortAvailable(port);
90
+ if (available) {
91
+ return;
92
+ }
93
+ logger.debug('Port %d is in use, attempting to clean up orphan process...', port);
94
+ const killed = await killProcessOnPort(port, logger);
95
+ if (killed) {
96
+ // Verify the port is now free
97
+ const nowAvailable = await isPortAvailable(port);
98
+ if (!nowAvailable) {
99
+ throw new Error(`Port ${port} is still in use after cleanup. Another process may be holding it.\n` +
100
+ `Run 'lsof -i :${port}' to identify the process.`);
101
+ }
102
+ logger.debug('Port %d is now available', port);
103
+ }
104
+ else {
105
+ throw new Error(`Port ${port} is already in use.\n` +
106
+ `Run 'lsof -i :${port}' to identify the process, or kill it manually.`);
107
+ }
108
+ }
109
+ /**
110
+ * Validate app.ts for common issues that prevent Bun --hot from starting.
111
+ *
112
+ * Bun --hot requires `export default { fetch, port }` to start a server.
113
+ * Common mistakes:
114
+ * - No `export default` (v1 pattern: destructuring result without exporting)
115
+ * - Calling createApp() but not exporting it
116
+ *
117
+ * @internal Exported for testing only
118
+ */
119
+ export async function validateAppTs(appPath) {
120
+ const result = {
121
+ hasDefaultExport: false,
122
+ hasCreateApp: false,
123
+ isV1Pattern: false,
124
+ hints: [],
125
+ };
126
+ const file = Bun.file(appPath);
127
+ if (!(await file.exists())) {
128
+ return result;
129
+ }
130
+ const content = await file.text();
131
+ // Strip comments to avoid false positives from commented-out code
132
+ // Simple approach: remove single-line and multi-line comments
133
+ const codeWithoutComments = content
134
+ .replace(/\/\/.*$/gm, '') // Single-line comments
135
+ .replace(/\/\*[\s\S]*?\*\//g, ''); // Multi-line comments
136
+ // Check for default export patterns (only in actual code, not comments)
137
+ // Matches: export default createApp(...), export default await createApp(...),
138
+ // export default { fetch, port }, const { ... } = await createApp(...) then export default result
139
+ result.hasDefaultExport = /\bexport\s+default\b/.test(codeWithoutComments);
140
+ // Check for createApp call
141
+ result.hasCreateApp = /\bcreateApp\s*\(/.test(content);
142
+ // Detect v1 pattern: destructuring createApp result without export default
143
+ // e.g., const { server, logger } = await createApp({...});
144
+ const hasDestructuring = /const\s*\{[^}]*\}\s*=\s*(?:await\s+)?createApp/.test(content);
145
+ if (hasDestructuring && !result.hasDefaultExport) {
146
+ result.isV1Pattern = true;
147
+ result.hints.push('app.ts calls createApp() but does not export it. Bun --hot requires `export default` to start a server.', '', 'Fix: Change your app.ts to export the createApp() result:', '', ' import { createApp } from "@agentuity/runtime";', ' import agents from "@agent/index";', '', ' export default createApp({', ' agents,', ' router: { path: "/api", router: api },', ' });', '', 'Or if you need the logger:', '', ' const app = await createApp({ agents });', ' app.logger.debug("Running %s", app.server.url);', ' export default app;');
148
+ }
149
+ // Check for missing createApp entirely
150
+ if (!result.hasCreateApp && !content.includes('Bun.serve')) {
151
+ result.hints.push('app.ts does not call createApp(). This is required for Agentuity apps.', '', 'Example:', '', ' import { createApp } from "@agentuity/runtime";', ' export default createApp({ agents });');
152
+ }
153
+ return result;
154
+ }
155
+ /**
156
+ * Build a detailed error message with validation hints and captured output.
157
+ *
158
+ * @internal Exported for testing only
159
+ */
160
+ export function buildStartupErrorMessage(port, timeoutMs, stderr, validation) {
161
+ const lines = [];
162
+ lines.push(`Bun server failed to start on port ${port} after ${timeoutMs}ms`);
163
+ lines.push('');
164
+ // Show captured stderr if any
165
+ if (stderr.trim()) {
166
+ lines.push('Bun output:');
167
+ lines.push('');
168
+ // Indent stderr lines for readability
169
+ for (const line of stderr.trim().split('\n').slice(0, 20)) {
170
+ lines.push(` ${line}`);
171
+ }
172
+ if (stderr.split('\n').length > 20) {
173
+ lines.push(' ... (truncated)');
174
+ }
175
+ lines.push('');
176
+ }
177
+ // Show validation hints
178
+ if (validation.hints.length > 0) {
179
+ lines.push('Possible issue:');
180
+ lines.push('');
181
+ for (const hint of validation.hints) {
182
+ lines.push(` ${hint}`);
183
+ }
184
+ lines.push('');
185
+ }
186
+ // Generic troubleshooting if no specific hints
187
+ if (validation.hints.length === 0) {
188
+ lines.push('Troubleshooting:');
189
+ lines.push('');
190
+ lines.push(' 1. Check app.ts exports `export default createApp({...})`');
191
+ lines.push(' 2. Check for TypeScript/syntax errors in your code');
192
+ lines.push(` 3. Check if port ${port} is already in use: lsof -i :${port}`);
193
+ lines.push(' 4. Try running manually: bun run --hot app.ts');
194
+ lines.push('');
195
+ }
196
+ return lines.join('\n');
197
+ }
12
198
  /**
13
199
  * Start Bun dev server with --hot (Vite asset server must already be running).
14
200
  *
@@ -24,6 +210,18 @@ export async function startBunDevServer(options) {
24
210
  if (!(await appFile.exists())) {
25
211
  throw new Error(`App entry not found at ${appPath}.`);
26
212
  }
213
+ // Pre-validate app.ts for common issues
214
+ const validation = await validateAppTs(appPath);
215
+ if (validation.isV1Pattern) {
216
+ logger.warn('');
217
+ logger.warn('⚠️ app.ts may have a v1-style pattern that prevents Bun --hot from starting.');
218
+ for (const hint of validation.hints) {
219
+ logger.warn(' %s', hint);
220
+ }
221
+ logger.warn('');
222
+ }
223
+ // Ensure the port is available, cleaning up any orphan processes
224
+ await ensurePortAvailable(port, logger);
27
225
  process.env.PORT = String(port);
28
226
  const args = ['bun'];
29
227
  // --hot: in-process hot reload — re-evaluates changed modules and swaps
@@ -41,25 +239,54 @@ export async function startBunDevServer(options) {
41
239
  }
42
240
  args.push('run', appPath);
43
241
  logger.debug('Spawning bun subprocess: %s', args.join(' '));
242
+ // Capture stderr for error reporting while still showing it in real-time
243
+ const stderrChunks = [];
244
+ const stdoutChunks = [];
245
+ // Helper to read a stream, capture output, and forward to parent
246
+ const captureStream = async (stream, chunks, output) => {
247
+ const reader = stream.getReader();
248
+ try {
249
+ while (true) {
250
+ const { done, value } = await reader.read();
251
+ if (done)
252
+ break;
253
+ const str = new TextDecoder().decode(value);
254
+ chunks.push(str);
255
+ output.write(value); // Forward to parent for real-time visibility
256
+ }
257
+ }
258
+ catch {
259
+ // Stream may be closed unexpectedly when process exits
260
+ }
261
+ };
44
262
  const bunProcess = Bun.spawn(args, {
45
263
  cwd: rootDir,
46
- stdout: 'inherit',
47
- stderr: 'inherit',
264
+ stdout: 'pipe',
265
+ stderr: 'pipe',
48
266
  env: {
49
267
  ...process.env,
50
268
  ...getAgentEnv(),
51
269
  PORT: String(port),
52
270
  },
53
271
  });
272
+ // Start capturing streams in the background (don't await, we need to check server readiness)
273
+ if (bunProcess.stdout) {
274
+ captureStream(bunProcess.stdout, stdoutChunks, process.stdout).catch(() => { });
275
+ }
276
+ if (bunProcess.stderr) {
277
+ captureStream(bunProcess.stderr, stderrChunks, process.stderr).catch(() => { });
278
+ }
54
279
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
280
  globalThis.__AGENTUITY_BUN_SUBPROCESS__ = bunProcess;
56
281
  // Wait for server to start listening
57
282
  const maxRetries = 50;
58
283
  const retryDelay = 100;
284
+ const timeoutMs = maxRetries * retryDelay;
59
285
  let serverReady = false;
60
286
  for (let i = 0; i < maxRetries; i++) {
61
287
  if (bunProcess.exitCode !== null) {
62
- throw new Error(`Bun subprocess exited with code ${bunProcess.exitCode} during startup`);
288
+ const stderr = stderrChunks.join('');
289
+ throw new Error(`Bun subprocess exited with code ${bunProcess.exitCode} during startup\n\n${stderr}`);
63
290
  }
64
291
  try {
65
292
  await fetch(`http://127.0.0.1:${port}/`, {
@@ -83,7 +310,8 @@ export async function startBunDevServer(options) {
83
310
  }
84
311
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
312
  globalThis.__AGENTUITY_BUN_SUBPROCESS__ = undefined;
86
- throw new Error(`Bun server failed to start on port ${port} after ${maxRetries * retryDelay}ms`);
313
+ const stderr = stderrChunks.join('');
314
+ throw new Error(buildStartupErrorMessage(port, timeoutMs, stderr, validation));
87
315
  }
88
316
  logger.debug(`Bun dev server started on http://127.0.0.1:${port} (--hot mode)`);
89
317
  logger.debug(`Proxied to Vite:${vitePort}`);
@@ -1 +1 @@
1
- {"version":3,"file":"bun-dev-server.js","sourceRoot":"","sources":["../../../../src/cmd/build/vite/bun-dev-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bun-dev-server.js","sourceRoot":"","sources":["../../../../src/cmd/build/vite/bun-dev-server.ts"],"names":[],"mappings":"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"}
@@ -1,34 +1,29 @@
1
1
  /**
2
- * Config loader for agentuity.config.ts
2
+ * Config loader for v2
3
+ *
4
+ * In v2, all runtime config (analytics, workbench) goes in createApp().
5
+ * Vite-specific config (plugins, define, render, bundle) goes in vite.config.ts.
6
+ *
7
+ * Runtime config values are extracted from app.ts via app-config-extractor.
3
8
  */
4
9
  import type { Logger } from '../../../types';
5
- import type { AgentuityConfig } from '../../../types';
10
+ import { type ExtractedAppConfig } from '../app-config-extractor';
6
11
  /**
7
- * Load agentuity.config.ts from the project root
8
- * Returns null if the file doesn't exist or fails to load
12
+ * Load runtime config from createApp() in app.ts (v2 approach).
13
+ *
14
+ * This is the only way to get analytics/workbench config in v2.
15
+ * The CLI reads these values directly from the user's createApp() call.
9
16
  */
10
- export declare function loadAgentuityConfig(rootDir: string, logger: Logger): Promise<AgentuityConfig | null>;
17
+ export declare function loadRuntimeConfig(rootDir: string, logger: Logger): Promise<ExtractedAppConfig>;
11
18
  /**
12
- * Get workbench configuration with defaults
13
- * NOTE: Workbench is only enabled at runtime in dev mode, but we need to know
14
- * if it's configured at build time so we can generate the correct code.
19
+ * Get workbench configuration with defaults.
15
20
  *
16
- * Presence of workbench config implicitly enables it (no explicit 'enabled' flag needed)
17
- * Missing workbench config implicitly disables it
21
+ * In v2, workbench config is extracted from createApp() in app.ts.
18
22
  */
19
- export declare function getWorkbenchConfig(config: AgentuityConfig | null, dev: boolean): {
23
+ export declare function getWorkbenchConfig(dev: boolean, runtimeConfig?: ExtractedAppConfig): {
20
24
  configured: boolean;
21
25
  enabled: boolean;
22
26
  route: string;
23
27
  headers: Record<string, string>;
24
28
  };
25
- /**
26
- * Check if the user's plugins include any known UI-framework Vite plugin
27
- * (React, Svelte, Vue, Solid, Preact, …).
28
- *
29
- * Detection is name-based: Vite plugins expose a `name` property and every
30
- * major framework plugin uses a predictable prefix. This avoids dynamically
31
- * importing every possible framework just to compare names.
32
- */
33
- export declare function hasFrameworkPlugin(userPlugins: import('vite').PluginOption[]): boolean;
34
29
  //# sourceMappingURL=config-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../../src/cmd/build/vite/config-loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD;;;GAGG;AACH,wBAAsB,mBAAmB,CACxC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAuBjC;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,eAAe,GAAG,IAAI,EAC9B,GAAG,EAAE,OAAO,GACV;IACF,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,CAgBA;AAiBD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,OAAO,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAUtF"}
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../../src/cmd/build/vite/config-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAEpF;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACtC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CACjC,GAAG,EAAE,OAAO,EACZ,aAAa,CAAC,EAAE,kBAAkB,GAChC;IACF,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,CAqCA"}
@@ -1,90 +1,57 @@
1
1
  /**
2
- * Config loader for agentuity.config.ts
2
+ * Config loader for v2
3
+ *
4
+ * In v2, all runtime config (analytics, workbench) goes in createApp().
5
+ * Vite-specific config (plugins, define, render, bundle) goes in vite.config.ts.
6
+ *
7
+ * Runtime config values are extracted from app.ts via app-config-extractor.
3
8
  */
4
- var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
5
- if (typeof path === "string" && /^\.\.?\//.test(path)) {
6
- return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
7
- return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
8
- });
9
- }
10
- return path;
11
- };
12
- import { join } from 'node:path';
9
+ import { extractAppConfig } from '../app-config-extractor';
13
10
  /**
14
- * Load agentuity.config.ts from the project root
15
- * Returns null if the file doesn't exist or fails to load
11
+ * Load runtime config from createApp() in app.ts (v2 approach).
12
+ *
13
+ * This is the only way to get analytics/workbench config in v2.
14
+ * The CLI reads these values directly from the user's createApp() call.
16
15
  */
17
- export async function loadAgentuityConfig(rootDir, logger) {
18
- const configPath = join(rootDir, 'agentuity.config.ts');
19
- if (!(await Bun.file(configPath).exists())) {
20
- logger.trace('No agentuity.config.ts found');
21
- return null;
22
- }
23
- try {
24
- const config = await import(__rewriteRelativeImportExtension(configPath));
25
- const userConfig = config.default;
26
- if (!userConfig) {
27
- logger.warn('agentuity.config.ts does not export a default configuration');
28
- return null;
29
- }
30
- logger.trace('Loaded agentuity.config.ts');
31
- return userConfig;
32
- }
33
- catch (error) {
34
- logger.warn('Failed to load agentuity.config.ts:', error);
35
- return null;
36
- }
16
+ export async function loadRuntimeConfig(rootDir, logger) {
17
+ return extractAppConfig(rootDir, logger);
37
18
  }
38
19
  /**
39
- * Get workbench configuration with defaults
40
- * NOTE: Workbench is only enabled at runtime in dev mode, but we need to know
41
- * if it's configured at build time so we can generate the correct code.
20
+ * Get workbench configuration with defaults.
42
21
  *
43
- * Presence of workbench config implicitly enables it (no explicit 'enabled' flag needed)
44
- * Missing workbench config implicitly disables it
22
+ * In v2, workbench config is extracted from createApp() in app.ts.
45
23
  */
46
- export function getWorkbenchConfig(config, dev) {
47
- const configured = config?.workbench !== undefined;
24
+ export function getWorkbenchConfig(dev, runtimeConfig) {
25
+ const workbenchFromRuntime = runtimeConfig?.workbench;
48
26
  // Workbench is enabled if:
49
27
  // 1. In dev mode (never in production)
50
- // 2. Config has a workbench object (presence implies enablement)
51
- const enabled = dev && configured;
52
- const workbench = config?.workbench || {};
28
+ // 2. Workbench is configured in createApp()
29
+ const hasWorkbench = workbenchFromRuntime !== undefined;
30
+ const configured = hasWorkbench;
31
+ const enabled = dev && hasWorkbench;
32
+ // Extract values from createApp()
33
+ let route = '/workbench';
34
+ let headers = {};
35
+ if (workbenchFromRuntime !== undefined) {
36
+ if (typeof workbenchFromRuntime === 'string') {
37
+ route = workbenchFromRuntime;
38
+ }
39
+ else if (typeof workbenchFromRuntime === 'object' && workbenchFromRuntime !== null) {
40
+ if ('route' in workbenchFromRuntime && typeof workbenchFromRuntime.route === 'string') {
41
+ route = workbenchFromRuntime.route;
42
+ }
43
+ if ('headers' in workbenchFromRuntime &&
44
+ typeof workbenchFromRuntime.headers === 'object') {
45
+ headers = workbenchFromRuntime.headers;
46
+ }
47
+ }
48
+ // boolean true uses defaults
49
+ }
53
50
  return {
54
51
  configured,
55
52
  enabled,
56
- route: workbench.route ?? '/workbench',
57
- headers: workbench.headers ?? {},
53
+ route,
54
+ headers,
58
55
  };
59
56
  }
60
- /**
61
- * Known Vite framework plugin name prefixes.
62
- * Each framework's Vite plugin registers one or more plugins whose names
63
- * start with these prefixes. We match against these to detect whether the
64
- * user has already configured a framework plugin in their agentuity.config.ts.
65
- */
66
- const FRAMEWORK_PLUGIN_PREFIXES = [
67
- 'vite:react', // @vitejs/plugin-react (vite:react-babel, vite:react-refresh, …)
68
- 'vite:preact', // @preact/preset-vite
69
- 'vite-plugin-svelte', // @sveltejs/vite-plugin-svelte
70
- 'vite:vue', // @vitejs/plugin-vue (vite:vue, vite:vue-jsx)
71
- 'vite-plugin-solid', // vite-plugin-solid
72
- 'solid', // vite-plugin-solid also uses plain "solid"
73
- ];
74
- /**
75
- * Check if the user's plugins include any known UI-framework Vite plugin
76
- * (React, Svelte, Vue, Solid, Preact, …).
77
- *
78
- * Detection is name-based: Vite plugins expose a `name` property and every
79
- * major framework plugin uses a predictable prefix. This avoids dynamically
80
- * importing every possible framework just to compare names.
81
- */
82
- export function hasFrameworkPlugin(userPlugins) {
83
- const flat = userPlugins.flat(Infinity).filter(Boolean);
84
- return flat.some((p) => p &&
85
- typeof p === 'object' &&
86
- 'name' in p &&
87
- typeof p.name === 'string' &&
88
- FRAMEWORK_PLUGIN_PREFIXES.some((prefix) => p.name.startsWith(prefix)));
89
- }
90
57
  //# sourceMappingURL=config-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../../../src/cmd/build/vite/config-loader.ts"],"names":[],"mappings":"AAAA;;GAEG;;;;;;;;;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,OAAe,EACf,MAAc;IAEd,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;IAExD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,MAAM,MAAM,kCAAC,UAAU,EAAC,CAAC;QACxC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAsC,CAAC;QAEjE,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;YAC3E,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CACjC,MAA8B,EAC9B,GAAY;IAOZ,MAAM,UAAU,GAAG,MAAM,EAAE,SAAS,KAAK,SAAS,CAAC;IAEnD,2BAA2B;IAC3B,uCAAuC;IACvC,iEAAiE;IACjE,MAAM,OAAO,GAAG,GAAG,IAAI,UAAU,CAAC;IAElC,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC;IAE1C,OAAO;QACN,UAAU;QACV,OAAO;QACP,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,YAAY;QACtC,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,EAAE;KAChC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,yBAAyB,GAAG;IACjC,YAAY,EAAE,kEAAkE;IAChF,aAAa,EAAE,sBAAsB;IACrC,oBAAoB,EAAE,+BAA+B;IACrD,UAAU,EAAE,mDAAmD;IAC/D,mBAAmB,EAAE,oBAAoB;IACzC,OAAO,EAAE,4CAA4C;CACrD,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAA0C;IAC5E,MAAM,IAAI,GAAI,WAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC,IAAI,CACf,CAAC,CAAU,EAAE,EAAE,CACd,CAAC;QACD,OAAO,CAAC,KAAK,QAAQ;QACrB,MAAM,IAAI,CAAC;QACX,OAAQ,CAAuB,CAAC,IAAI,KAAK,QAAQ;QACjD,yBAAyB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAE,CAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAC5F,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../../../src/cmd/build/vite/config-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,gBAAgB,EAA2B,MAAM,yBAAyB,CAAC;AAEpF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACtC,OAAe,EACf,MAAc;IAEd,OAAO,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CACjC,GAAY,EACZ,aAAkC;IAOlC,MAAM,oBAAoB,GAAG,aAAa,EAAE,SAAS,CAAC;IAEtD,2BAA2B;IAC3B,uCAAuC;IACvC,4CAA4C;IAC5C,MAAM,YAAY,GAAG,oBAAoB,KAAK,SAAS,CAAC;IACxD,MAAM,UAAU,GAAG,YAAY,CAAC;IAChC,MAAM,OAAO,GAAG,GAAG,IAAI,YAAY,CAAC;IAEpC,kCAAkC;IAClC,IAAI,KAAK,GAAG,YAAY,CAAC;IACzB,IAAI,OAAO,GAA2B,EAAE,CAAC;IAEzC,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;QACxC,IAAI,OAAO,oBAAoB,KAAK,QAAQ,EAAE,CAAC;YAC9C,KAAK,GAAG,oBAAoB,CAAC;QAC9B,CAAC;aAAM,IAAI,OAAO,oBAAoB,KAAK,QAAQ,IAAI,oBAAoB,KAAK,IAAI,EAAE,CAAC;YACtF,IAAI,OAAO,IAAI,oBAAoB,IAAI,OAAO,oBAAoB,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvF,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC;YACpC,CAAC;YACD,IACC,SAAS,IAAI,oBAAoB;gBACjC,OAAO,oBAAoB,CAAC,OAAO,KAAK,QAAQ,EAC/C,CAAC;gBACF,OAAO,GAAG,oBAAoB,CAAC,OAAiC,CAAC;YAClE,CAAC;QACF,CAAC;QACD,6BAA6B;IAC9B,CAAC;IAED,OAAO;QACN,UAAU;QACV,OAAO;QACP,KAAK;QACL,OAAO;KACP,CAAC;AACH,CAAC"}
@@ -27,6 +27,11 @@ export interface RouteMetadata {
27
27
  * Matches patterns like :id, :userId, :id?, *path, etc.
28
28
  */
29
29
  export declare function extractPathParams(path: string): string[];
30
+ /**
31
+ * Generate a deterministic route ID from project/deployment/type/method/filename/path/version.
32
+ * Must match the format used by the platform (prefix: route_, SHA1 hash of all components).
33
+ */
34
+ export declare function generateRouteId(projectId: string, deploymentId: string, type: string, method: string, filename: string, path: string, version: string): string;
30
35
  /**
31
36
  * Discover all routes from explicit router mounts in createApp({ router }).
32
37
  *
@@ -1 +1 @@
1
- {"version":3,"file":"route-discovery.d.ts","sourceRoot":"","sources":["../../../../src/cmd/build/vite/route-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEvF,MAAM,WAAW,aAAa;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,KAAK,GAAG,QAAQ,CAAC;IACxE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAWxD;AAmDD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CACnC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC;IACV,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACpC,CAAC,CAmGD;AAED,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,OAAO,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/D,aAAa,EAAE,CAyBjB"}
1
+ {"version":3,"file":"route-discovery.d.ts","sourceRoot":"","sources":["../../../../src/cmd/build/vite/route-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEvF,MAAM,WAAW,aAAa;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,KAAK,GAAG,QAAQ,CAAC;IACxE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAWxD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC9B,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACb,MAAM,CAMR;AAmCD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CACnC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC;IACV,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACpC,CAAC,CA4GD;AAED,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,OAAO,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/D,aAAa,EAAE,CAyBjB"}
@@ -36,14 +36,15 @@ export function extractPathParams(path) {
36
36
  return params;
37
37
  }
38
38
  /**
39
- * Generate a deterministic route ID from project/deployment/path/method.
39
+ * Generate a deterministic route ID from project/deployment/type/method/filename/path/version.
40
+ * Must match the format used by the platform (prefix: route_, SHA1 hash of all components).
40
41
  */
41
- function generateRouteId(projectId, deploymentId, path, method) {
42
- const hash = createHash('sha256')
43
- .update(`${projectId}:${deploymentId}:${path}:${method}`)
44
- .digest('hex')
45
- .substring(0, 16);
46
- return `routeid_${hash}`;
42
+ export function generateRouteId(projectId, deploymentId, type, method, filename, path, version) {
43
+ const hasher = new Bun.CryptoHasher('sha1');
44
+ for (const val of [projectId, deploymentId, type, method, filename, path, version]) {
45
+ hasher.update(val);
46
+ }
47
+ return `route_${hasher.digest().toHex()}`;
47
48
  }
48
49
  /**
49
50
  * Generate a version hash from file contents.
@@ -108,24 +109,25 @@ export async function discoverRoutes(srcDir, projectId, deploymentId, logger) {
108
109
  // Filter to actual route handlers (not middleware — middleware uses '*' or ALL method)
109
110
  const routeEntries = router.routes.filter((r) => r.method !== 'ALL' && r.path !== '*');
110
111
  for (const route of routeEntries) {
111
- const method = String(route.method).toUpperCase();
112
+ const method = String(route.method).toLowerCase();
112
113
  // Combine mount path with route path
113
114
  let fullPath = route.path;
114
115
  if (mount.path !== '/' && !fullPath.startsWith(mount.path)) {
115
116
  fullPath = mount.path + (fullPath.startsWith('/') ? fullPath : '/' + fullPath);
116
117
  }
117
118
  // Deduplicate (Hono may register same route multiple times for middleware)
118
- const routeKey = `${method} ${fullPath}`;
119
+ const routeKey = `${method.toUpperCase()} ${fullPath}`;
119
120
  if (seenRoutes.has(routeKey))
120
121
  continue;
121
122
  seenRoutes.add(routeKey);
122
123
  const routeType = detectRouteType(route.handler);
123
- const id = generateRouteId(projectId, deploymentId, fullPath, method);
124
+ const rel = toForwardSlash(relative(rootDir, mount.routerFile));
125
+ const id = generateRouteId(projectId, deploymentId, routeType, method, rel, fullPath, version);
124
126
  routes.push({
125
127
  id,
126
128
  filename: toForwardSlash(relative(rootDir, mount.routerFile)),
127
129
  path: fullPath,
128
- method: method.toLowerCase(),
130
+ method,
129
131
  version,
130
132
  type: routeType,
131
133
  });