@agentuity/cli 2.0.11 → 3.0.0-alpha.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 (339) hide show
  1. package/dist/cmd/ai/prompt/index.d.ts.map +1 -1
  2. package/dist/cmd/ai/prompt/index.js +2 -7
  3. package/dist/cmd/ai/prompt/index.js.map +1 -1
  4. package/dist/cmd/build/adapters/generic.d.ts +29 -0
  5. package/dist/cmd/build/adapters/generic.d.ts.map +1 -0
  6. package/dist/cmd/build/adapters/generic.js +190 -0
  7. package/dist/cmd/build/adapters/generic.js.map +1 -0
  8. package/dist/cmd/build/adapters/index.d.ts +15 -0
  9. package/dist/cmd/build/adapters/index.d.ts.map +1 -0
  10. package/dist/cmd/build/adapters/index.js +24 -0
  11. package/dist/cmd/build/adapters/index.js.map +1 -0
  12. package/dist/cmd/build/adapters/nextjs.d.ts +11 -0
  13. package/dist/cmd/build/adapters/nextjs.d.ts.map +1 -0
  14. package/dist/cmd/build/adapters/nextjs.js +118 -0
  15. package/dist/cmd/build/adapters/nextjs.js.map +1 -0
  16. package/dist/cmd/build/adapters/static-server.d.ts +23 -0
  17. package/dist/cmd/build/adapters/static-server.d.ts.map +1 -0
  18. package/dist/cmd/build/adapters/static-server.js +137 -0
  19. package/dist/cmd/build/adapters/static-server.js.map +1 -0
  20. package/dist/cmd/build/adapters/types.d.ts +71 -0
  21. package/dist/cmd/build/adapters/types.d.ts.map +1 -0
  22. package/dist/cmd/build/adapters/types.js +8 -0
  23. package/dist/cmd/build/adapters/types.js.map +1 -0
  24. package/dist/cmd/build/detect/engine.d.ts +24 -0
  25. package/dist/cmd/build/detect/engine.d.ts.map +1 -0
  26. package/dist/cmd/build/detect/engine.js +91 -0
  27. package/dist/cmd/build/detect/engine.js.map +1 -0
  28. package/dist/cmd/build/detect/frameworks.d.ts +66 -0
  29. package/dist/cmd/build/detect/frameworks.d.ts.map +1 -0
  30. package/dist/cmd/build/detect/frameworks.js +278 -0
  31. package/dist/cmd/build/detect/frameworks.js.map +1 -0
  32. package/dist/cmd/build/detect/generic.d.ts +13 -0
  33. package/dist/cmd/build/detect/generic.d.ts.map +1 -0
  34. package/dist/cmd/build/detect/generic.js +62 -0
  35. package/dist/cmd/build/detect/generic.js.map +1 -0
  36. package/dist/cmd/build/detect/index.d.ts +27 -0
  37. package/dist/cmd/build/detect/index.d.ts.map +1 -0
  38. package/dist/cmd/build/detect/index.js +76 -0
  39. package/dist/cmd/build/detect/index.js.map +1 -0
  40. package/dist/cmd/build/detect/types.d.ts +91 -0
  41. package/dist/cmd/build/detect/types.d.ts.map +1 -0
  42. package/dist/cmd/build/detect/types.js +9 -0
  43. package/dist/cmd/build/detect/types.js.map +1 -0
  44. package/dist/cmd/build/detect/util.d.ts +41 -0
  45. package/dist/cmd/build/detect/util.d.ts.map +1 -0
  46. package/dist/cmd/build/detect/util.js +101 -0
  47. package/dist/cmd/build/detect/util.js.map +1 -0
  48. package/dist/cmd/build/index.d.ts.map +1 -1
  49. package/dist/cmd/build/index.js +49 -22
  50. package/dist/cmd/build/index.js.map +1 -1
  51. package/dist/cmd/build/package/index.d.ts +30 -0
  52. package/dist/cmd/build/package/index.d.ts.map +1 -0
  53. package/dist/cmd/build/package/index.js +39 -0
  54. package/dist/cmd/build/package/index.js.map +1 -0
  55. package/dist/cmd/build/package/launch.d.ts +56 -0
  56. package/dist/cmd/build/package/launch.d.ts.map +1 -0
  57. package/dist/cmd/build/package/launch.js +56 -0
  58. package/dist/cmd/build/package/launch.js.map +1 -0
  59. package/dist/cmd/build/typecheck.d.ts.map +1 -1
  60. package/dist/cmd/build/typecheck.js +8 -0
  61. package/dist/cmd/build/typecheck.js.map +1 -1
  62. package/dist/cmd/cloud/deploy.d.ts.map +1 -1
  63. package/dist/cmd/cloud/deploy.js +63 -13
  64. package/dist/cmd/cloud/deploy.js.map +1 -1
  65. package/dist/cmd/coder/create.js +7 -7
  66. package/dist/cmd/coder/create.js.map +1 -1
  67. package/dist/cmd/coder/update.js +8 -8
  68. package/dist/cmd/coder/update.js.map +1 -1
  69. package/dist/cmd/coder/workspace/create.js +9 -9
  70. package/dist/cmd/coder/workspace/create.js.map +1 -1
  71. package/dist/cmd/dev/index.d.ts +9 -0
  72. package/dist/cmd/dev/index.d.ts.map +1 -1
  73. package/dist/cmd/dev/index.js +127 -923
  74. package/dist/cmd/dev/index.js.map +1 -1
  75. package/dist/cmd/project/auth/shared.d.ts.map +1 -1
  76. package/dist/cmd/project/auth/shared.js +14 -38
  77. package/dist/cmd/project/auth/shared.js.map +1 -1
  78. package/dist/cmd/project/create.d.ts.map +1 -1
  79. package/dist/cmd/project/create.js +12 -19
  80. package/dist/cmd/project/create.js.map +1 -1
  81. package/dist/cmd/project/frameworks-ai-examples.d.ts +15 -0
  82. package/dist/cmd/project/frameworks-ai-examples.d.ts.map +1 -0
  83. package/dist/cmd/project/frameworks-ai-examples.js +160 -0
  84. package/dist/cmd/project/frameworks-ai-examples.js.map +1 -0
  85. package/dist/cmd/project/frameworks-landing-pages.d.ts +17 -0
  86. package/dist/cmd/project/frameworks-landing-pages.d.ts.map +1 -0
  87. package/dist/cmd/project/frameworks-landing-pages.js +242 -0
  88. package/dist/cmd/project/frameworks-landing-pages.js.map +1 -0
  89. package/dist/cmd/project/frameworks.d.ts +58 -0
  90. package/dist/cmd/project/frameworks.d.ts.map +1 -0
  91. package/dist/cmd/project/frameworks.js +152 -0
  92. package/dist/cmd/project/frameworks.js.map +1 -0
  93. package/dist/cmd/project/reconcile.d.ts.map +1 -1
  94. package/dist/cmd/project/reconcile.js +10 -23
  95. package/dist/cmd/project/reconcile.js.map +1 -1
  96. package/dist/cmd/project/remote-import.js +1 -1
  97. package/dist/cmd/project/scaffold.d.ts +58 -0
  98. package/dist/cmd/project/scaffold.d.ts.map +1 -0
  99. package/dist/cmd/project/scaffold.js +223 -0
  100. package/dist/cmd/project/scaffold.js.map +1 -0
  101. package/dist/cmd/project/template-flow.d.ts +8 -4
  102. package/dist/cmd/project/template-flow.d.ts.map +1 -1
  103. package/dist/cmd/project/template-flow.js +93 -144
  104. package/dist/cmd/project/template-flow.js.map +1 -1
  105. package/dist/deploy-metadata.d.ts +49 -0
  106. package/dist/deploy-metadata.d.ts.map +1 -0
  107. package/dist/deploy-metadata.js +183 -0
  108. package/dist/deploy-metadata.js.map +1 -0
  109. package/dist/index.d.ts +1 -1
  110. package/dist/index.d.ts.map +1 -1
  111. package/dist/index.js.map +1 -1
  112. package/dist/types.d.ts +24 -30
  113. package/dist/types.d.ts.map +1 -1
  114. package/dist/types.js.map +1 -1
  115. package/package.json +13 -8
  116. package/src/cmd/ai/prompt/index.ts +2 -7
  117. package/src/cmd/build/adapters/generic.ts +239 -0
  118. package/src/cmd/build/adapters/index.ts +30 -0
  119. package/src/cmd/build/adapters/nextjs.ts +146 -0
  120. package/src/cmd/build/adapters/static-server.ts +143 -0
  121. package/src/cmd/build/adapters/types.ts +93 -0
  122. package/src/cmd/build/detect/engine.ts +111 -0
  123. package/src/cmd/build/detect/frameworks.ts +335 -0
  124. package/src/cmd/build/detect/generic.ts +71 -0
  125. package/src/cmd/build/detect/index.ts +122 -0
  126. package/src/cmd/build/detect/types.ts +109 -0
  127. package/src/cmd/build/detect/util.ts +104 -0
  128. package/src/cmd/build/index.ts +64 -24
  129. package/src/cmd/build/package/index.ts +66 -0
  130. package/src/cmd/build/package/launch.ts +104 -0
  131. package/src/cmd/build/typecheck.ts +9 -0
  132. package/src/cmd/cloud/deploy.ts +86 -13
  133. package/src/cmd/coder/create.ts +8 -8
  134. package/src/cmd/coder/update.ts +7 -7
  135. package/src/cmd/coder/workspace/create.ts +10 -10
  136. package/src/cmd/dev/index.ts +155 -1059
  137. package/src/cmd/project/auth/shared.ts +14 -39
  138. package/src/cmd/project/create.ts +14 -19
  139. package/src/cmd/project/frameworks-ai-examples.ts +166 -0
  140. package/src/cmd/project/frameworks-landing-pages.ts +267 -0
  141. package/src/cmd/project/frameworks.ts +223 -0
  142. package/src/cmd/project/reconcile.ts +10 -22
  143. package/src/cmd/project/remote-import.ts +1 -1
  144. package/src/cmd/project/scaffold.ts +300 -0
  145. package/src/cmd/project/template-flow.ts +102 -156
  146. package/src/deploy-metadata.ts +253 -0
  147. package/src/index.ts +0 -2
  148. package/src/types.ts +0 -31
  149. package/dist/agents-docs.d.ts +0 -23
  150. package/dist/agents-docs.d.ts.map +0 -1
  151. package/dist/agents-docs.js +0 -56
  152. package/dist/agents-docs.js.map +0 -1
  153. package/dist/cmd/ai/prompt/agent.d.ts +0 -10
  154. package/dist/cmd/ai/prompt/agent.d.ts.map +0 -1
  155. package/dist/cmd/ai/prompt/agent.js +0 -28
  156. package/dist/cmd/ai/prompt/agent.js.map +0 -1
  157. package/dist/cmd/build/app-router-detector.d.ts +0 -39
  158. package/dist/cmd/build/app-router-detector.d.ts.map +0 -1
  159. package/dist/cmd/build/app-router-detector.js +0 -229
  160. package/dist/cmd/build/app-router-detector.js.map +0 -1
  161. package/dist/cmd/build/format-schema.d.ts +0 -6
  162. package/dist/cmd/build/format-schema.d.ts.map +0 -1
  163. package/dist/cmd/build/format-schema.js +0 -60
  164. package/dist/cmd/build/format-schema.js.map +0 -1
  165. package/dist/cmd/build/vite/agent-discovery.d.ts +0 -37
  166. package/dist/cmd/build/vite/agent-discovery.d.ts.map +0 -1
  167. package/dist/cmd/build/vite/agent-discovery.js +0 -263
  168. package/dist/cmd/build/vite/agent-discovery.js.map +0 -1
  169. package/dist/cmd/build/vite/beacon-plugin.d.ts +0 -19
  170. package/dist/cmd/build/vite/beacon-plugin.d.ts.map +0 -1
  171. package/dist/cmd/build/vite/beacon-plugin.js +0 -137
  172. package/dist/cmd/build/vite/beacon-plugin.js.map +0 -1
  173. package/dist/cmd/build/vite/browser-env-plugin.d.ts +0 -9
  174. package/dist/cmd/build/vite/browser-env-plugin.d.ts.map +0 -1
  175. package/dist/cmd/build/vite/browser-env-plugin.js +0 -28
  176. package/dist/cmd/build/vite/browser-env-plugin.js.map +0 -1
  177. package/dist/cmd/build/vite/bun-dev-server.d.ts +0 -67
  178. package/dist/cmd/build/vite/bun-dev-server.d.ts.map +0 -1
  179. package/dist/cmd/build/vite/bun-dev-server.js +0 -340
  180. package/dist/cmd/build/vite/bun-dev-server.js.map +0 -1
  181. package/dist/cmd/build/vite/bundle-files.d.ts +0 -12
  182. package/dist/cmd/build/vite/bundle-files.d.ts.map +0 -1
  183. package/dist/cmd/build/vite/bundle-files.js +0 -107
  184. package/dist/cmd/build/vite/bundle-files.js.map +0 -1
  185. package/dist/cmd/build/vite/config-loader.d.ts +0 -29
  186. package/dist/cmd/build/vite/config-loader.d.ts.map +0 -1
  187. package/dist/cmd/build/vite/config-loader.js +0 -57
  188. package/dist/cmd/build/vite/config-loader.js.map +0 -1
  189. package/dist/cmd/build/vite/db-rewrite.d.ts +0 -50
  190. package/dist/cmd/build/vite/db-rewrite.d.ts.map +0 -1
  191. package/dist/cmd/build/vite/db-rewrite.js +0 -169
  192. package/dist/cmd/build/vite/db-rewrite.js.map +0 -1
  193. package/dist/cmd/build/vite/docs-generator.d.ts +0 -13
  194. package/dist/cmd/build/vite/docs-generator.d.ts.map +0 -1
  195. package/dist/cmd/build/vite/docs-generator.js +0 -97
  196. package/dist/cmd/build/vite/docs-generator.js.map +0 -1
  197. package/dist/cmd/build/vite/env-types-generator.d.ts +0 -26
  198. package/dist/cmd/build/vite/env-types-generator.d.ts.map +0 -1
  199. package/dist/cmd/build/vite/env-types-generator.js +0 -110
  200. package/dist/cmd/build/vite/env-types-generator.js.map +0 -1
  201. package/dist/cmd/build/vite/index.d.ts +0 -3
  202. package/dist/cmd/build/vite/index.d.ts.map +0 -1
  203. package/dist/cmd/build/vite/index.js +0 -4
  204. package/dist/cmd/build/vite/index.js.map +0 -1
  205. package/dist/cmd/build/vite/lifecycle-generator.d.ts +0 -19
  206. package/dist/cmd/build/vite/lifecycle-generator.d.ts.map +0 -1
  207. package/dist/cmd/build/vite/lifecycle-generator.js +0 -328
  208. package/dist/cmd/build/vite/lifecycle-generator.js.map +0 -1
  209. package/dist/cmd/build/vite/metadata-generator.d.ts +0 -36
  210. package/dist/cmd/build/vite/metadata-generator.d.ts.map +0 -1
  211. package/dist/cmd/build/vite/metadata-generator.js +0 -575
  212. package/dist/cmd/build/vite/metadata-generator.js.map +0 -1
  213. package/dist/cmd/build/vite/prompt-generator.d.ts +0 -23
  214. package/dist/cmd/build/vite/prompt-generator.d.ts.map +0 -1
  215. package/dist/cmd/build/vite/prompt-generator.js +0 -123
  216. package/dist/cmd/build/vite/prompt-generator.js.map +0 -1
  217. package/dist/cmd/build/vite/public-asset-path-plugin.d.ts +0 -45
  218. package/dist/cmd/build/vite/public-asset-path-plugin.d.ts.map +0 -1
  219. package/dist/cmd/build/vite/public-asset-path-plugin.js +0 -166
  220. package/dist/cmd/build/vite/public-asset-path-plugin.js.map +0 -1
  221. package/dist/cmd/build/vite/route-discovery.d.ts +0 -64
  222. package/dist/cmd/build/vite/route-discovery.d.ts.map +0 -1
  223. package/dist/cmd/build/vite/route-discovery.js +0 -187
  224. package/dist/cmd/build/vite/route-discovery.js.map +0 -1
  225. package/dist/cmd/build/vite/server-bundler.d.ts +0 -20
  226. package/dist/cmd/build/vite/server-bundler.d.ts.map +0 -1
  227. package/dist/cmd/build/vite/server-bundler.js +0 -388
  228. package/dist/cmd/build/vite/server-bundler.js.map +0 -1
  229. package/dist/cmd/build/vite/static-renderer.d.ts +0 -26
  230. package/dist/cmd/build/vite/static-renderer.d.ts.map +0 -1
  231. package/dist/cmd/build/vite/static-renderer.js +0 -188
  232. package/dist/cmd/build/vite/static-renderer.js.map +0 -1
  233. package/dist/cmd/build/vite/tailwind-source-plugin.d.ts +0 -15
  234. package/dist/cmd/build/vite/tailwind-source-plugin.d.ts.map +0 -1
  235. package/dist/cmd/build/vite/tailwind-source-plugin.js +0 -61
  236. package/dist/cmd/build/vite/tailwind-source-plugin.js.map +0 -1
  237. package/dist/cmd/build/vite/vite-asset-server-config.d.ts +0 -24
  238. package/dist/cmd/build/vite/vite-asset-server-config.d.ts.map +0 -1
  239. package/dist/cmd/build/vite/vite-asset-server-config.js +0 -285
  240. package/dist/cmd/build/vite/vite-asset-server-config.js.map +0 -1
  241. package/dist/cmd/build/vite/vite-asset-server.d.ts +0 -30
  242. package/dist/cmd/build/vite/vite-asset-server.d.ts.map +0 -1
  243. package/dist/cmd/build/vite/vite-asset-server.js +0 -109
  244. package/dist/cmd/build/vite/vite-asset-server.js.map +0 -1
  245. package/dist/cmd/build/vite/vite-builder.d.ts +0 -59
  246. package/dist/cmd/build/vite/vite-builder.d.ts.map +0 -1
  247. package/dist/cmd/build/vite/vite-builder.js +0 -401
  248. package/dist/cmd/build/vite/vite-builder.js.map +0 -1
  249. package/dist/cmd/build/vite/workbench-generator.d.ts +0 -10
  250. package/dist/cmd/build/vite/workbench-generator.d.ts.map +0 -1
  251. package/dist/cmd/build/vite/workbench-generator.js +0 -135
  252. package/dist/cmd/build/vite/workbench-generator.js.map +0 -1
  253. package/dist/cmd/build/vite/ws-proxy.d.ts +0 -53
  254. package/dist/cmd/build/vite/ws-proxy.d.ts.map +0 -1
  255. package/dist/cmd/build/vite/ws-proxy.js +0 -95
  256. package/dist/cmd/build/vite/ws-proxy.js.map +0 -1
  257. package/dist/cmd/build/vite-bundler.d.ts +0 -29
  258. package/dist/cmd/build/vite-bundler.d.ts.map +0 -1
  259. package/dist/cmd/build/vite-bundler.js +0 -93
  260. package/dist/cmd/build/vite-bundler.js.map +0 -1
  261. package/dist/cmd/dev/agents.d.ts +0 -2
  262. package/dist/cmd/dev/agents.d.ts.map +0 -1
  263. package/dist/cmd/dev/agents.js +0 -123
  264. package/dist/cmd/dev/agents.js.map +0 -1
  265. package/dist/cmd/dev/api.d.ts +0 -20
  266. package/dist/cmd/dev/api.d.ts.map +0 -1
  267. package/dist/cmd/dev/api.js +0 -42
  268. package/dist/cmd/dev/api.js.map +0 -1
  269. package/dist/cmd/dev/dev-lock.d.ts +0 -62
  270. package/dist/cmd/dev/dev-lock.d.ts.map +0 -1
  271. package/dist/cmd/dev/dev-lock.js +0 -250
  272. package/dist/cmd/dev/dev-lock.js.map +0 -1
  273. package/dist/cmd/dev/download.d.ts +0 -11
  274. package/dist/cmd/dev/download.d.ts.map +0 -1
  275. package/dist/cmd/dev/download.js +0 -94
  276. package/dist/cmd/dev/download.js.map +0 -1
  277. package/dist/cmd/dev/file-watcher.d.ts +0 -24
  278. package/dist/cmd/dev/file-watcher.d.ts.map +0 -1
  279. package/dist/cmd/dev/file-watcher.js +0 -349
  280. package/dist/cmd/dev/file-watcher.js.map +0 -1
  281. package/dist/cmd/dev/process-manager.d.ts +0 -104
  282. package/dist/cmd/dev/process-manager.d.ts.map +0 -1
  283. package/dist/cmd/dev/process-manager.js +0 -204
  284. package/dist/cmd/dev/process-manager.js.map +0 -1
  285. package/dist/cmd/dev/sync.d.ts +0 -12
  286. package/dist/cmd/dev/sync.d.ts.map +0 -1
  287. package/dist/cmd/dev/sync.js +0 -227
  288. package/dist/cmd/dev/sync.js.map +0 -1
  289. package/dist/cmd/dev/templates.d.ts +0 -3
  290. package/dist/cmd/dev/templates.d.ts.map +0 -1
  291. package/dist/cmd/dev/templates.js +0 -58
  292. package/dist/cmd/dev/templates.js.map +0 -1
  293. package/dist/cmd/project/download.d.ts +0 -35
  294. package/dist/cmd/project/download.d.ts.map +0 -1
  295. package/dist/cmd/project/download.js +0 -403
  296. package/dist/cmd/project/download.js.map +0 -1
  297. package/dist/cmd/project/templates.d.ts +0 -9
  298. package/dist/cmd/project/templates.d.ts.map +0 -1
  299. package/dist/cmd/project/templates.js +0 -34
  300. package/dist/cmd/project/templates.js.map +0 -1
  301. package/src/agents-docs.ts +0 -86
  302. package/src/cmd/ai/prompt/agent.md +0 -305
  303. package/src/cmd/ai/prompt/agent.ts +0 -31
  304. package/src/cmd/build/app-router-detector.ts +0 -320
  305. package/src/cmd/build/format-schema.ts +0 -66
  306. package/src/cmd/build/vite/agent-discovery.ts +0 -380
  307. package/src/cmd/build/vite/beacon-plugin.ts +0 -164
  308. package/src/cmd/build/vite/browser-env-plugin.ts +0 -34
  309. package/src/cmd/build/vite/bun-dev-server.ts +0 -458
  310. package/src/cmd/build/vite/bundle-files.ts +0 -135
  311. package/src/cmd/build/vite/config-loader.ts +0 -76
  312. package/src/cmd/build/vite/db-rewrite.ts +0 -189
  313. package/src/cmd/build/vite/docs-generator.ts +0 -103
  314. package/src/cmd/build/vite/env-types-generator.ts +0 -145
  315. package/src/cmd/build/vite/index.ts +0 -3
  316. package/src/cmd/build/vite/lifecycle-generator.ts +0 -381
  317. package/src/cmd/build/vite/metadata-generator.ts +0 -713
  318. package/src/cmd/build/vite/prompt-generator.ts +0 -169
  319. package/src/cmd/build/vite/public-asset-path-plugin.ts +0 -209
  320. package/src/cmd/build/vite/route-discovery.ts +0 -271
  321. package/src/cmd/build/vite/server-bundler.ts +0 -481
  322. package/src/cmd/build/vite/static-renderer.ts +0 -239
  323. package/src/cmd/build/vite/tailwind-source-plugin.ts +0 -73
  324. package/src/cmd/build/vite/vite-asset-server-config.ts +0 -349
  325. package/src/cmd/build/vite/vite-asset-server.ts +0 -154
  326. package/src/cmd/build/vite/vite-builder.ts +0 -503
  327. package/src/cmd/build/vite/workbench-generator.ts +0 -152
  328. package/src/cmd/build/vite/ws-proxy.ts +0 -126
  329. package/src/cmd/build/vite-bundler.ts +0 -137
  330. package/src/cmd/dev/agents.ts +0 -140
  331. package/src/cmd/dev/api.ts +0 -65
  332. package/src/cmd/dev/dev-lock.ts +0 -332
  333. package/src/cmd/dev/download.ts +0 -117
  334. package/src/cmd/dev/file-watcher.ts +0 -423
  335. package/src/cmd/dev/process-manager.ts +0 -261
  336. package/src/cmd/dev/sync.ts +0 -411
  337. package/src/cmd/dev/templates.ts +0 -66
  338. package/src/cmd/project/download.ts +0 -505
  339. package/src/cmd/project/templates.ts +0 -56
@@ -1,481 +0,0 @@
1
- /**
2
- * Server bundler using Bun.build with external dependency management
3
- * Handles installing externals into .agentuity/node_modules for production
4
- */
5
-
6
- import { join } from 'node:path';
7
- import { readdir, stat } from 'node:fs/promises';
8
- import type { Logger } from '../../../types';
9
- import type { BunPlugin, BuildOutput } from 'bun';
10
- import { generatePatches, applyPatch, buildPatchFilter } from '../patch';
11
- import { getLoaderForPath, rewriteBunImports, rewritePgImports } from './db-rewrite';
12
-
13
- /**
14
- * Format a Bun build log (BuildMessage or ResolveMessage) into a readable string
15
- */
16
- export function formatBuildLog(log: BuildMessage | ResolveMessage): string {
17
- const parts: string[] = [];
18
-
19
- // For ResolveMessage, format with specifier info
20
- if (log.name === 'ResolveMessage') {
21
- const resolveLog = log as ResolveMessage;
22
- if (resolveLog.specifier) {
23
- parts.push(`Could not resolve "${resolveLog.specifier}"`);
24
- // Use referrer if available, otherwise fall back to position.file
25
- const referrer = resolveLog.referrer || resolveLog.position?.file;
26
- if (referrer) {
27
- parts.push(` imported from: ${referrer}`);
28
- }
29
- } else if (resolveLog.message) {
30
- parts.push(resolveLog.message);
31
- }
32
- } else if (log.message) {
33
- parts.push(log.message);
34
- }
35
-
36
- // Add position info if available (only if we haven't already shown referrer from position)
37
- if (log.position && log.name !== 'ResolveMessage') {
38
- parts.push(` at ${log.position.file}:${log.position.line}:${log.position.column}`);
39
- }
40
-
41
- return parts.join('\n');
42
- }
43
-
44
- export interface ServerBundleOptions {
45
- rootDir: string;
46
- dev: boolean;
47
- logger: Logger;
48
- }
49
-
50
- /**
51
- * Install external dependencies and build server bundle
52
- * For production: installs externals into .agentuity/node_modules BEFORE bundling
53
- */
54
- export async function installExternalsAndBuild(options: ServerBundleOptions): Promise<void> {
55
- const { rootDir, dev, logger } = options;
56
-
57
- logger.debug('[server-bundler] Starting server bundle process');
58
-
59
- const entryPath = join(rootDir, 'app.ts');
60
- const outDir = join(rootDir, '.agentuity');
61
-
62
- logger.debug(`[server-bundler] Entry: ${entryPath}, OutDir: ${outDir}`);
63
-
64
- // Runtime externals: native modules and packages that need to be external
65
- // These WILL be installed into .agentuity/node_modules for production
66
- const runtimeExternals = ['bun', 'fsevents', 'chromium-bidi', 'sharp', 'ws'];
67
-
68
- // Build tool externals: packages that should be external but NOT installed
69
- // These are devDependencies that may exist in node_modules but aren't needed at runtime
70
- // NOTE: @babel/* is NOT externalized because some runtime deps (e.g., puppeteer → cosmiconfig → parse-json)
71
- // require @babel/code-frame at runtime. Babel packages are pure JS and bundle fine.
72
- const buildToolExternals = ['lightningcss', '@vitejs/*', 'vite', 'esbuild'];
73
-
74
- // Load custom externals and define from agentuity.config.ts if it exists
75
- const customExternals: string[] = [];
76
- let userDefine: Record<string, string> = {};
77
- let dbRewriteEnabled = true;
78
- const configPath = join(rootDir, 'agentuity.config.ts');
79
- if (await Bun.file(configPath).exists()) {
80
- try {
81
- const config = await import(configPath);
82
- const userConfig = config.default;
83
-
84
- // Load custom externals (legacy build.external support)
85
- if (userConfig?.build?.external && Array.isArray(userConfig.build.external)) {
86
- customExternals.push(
87
- ...userConfig.build.external.filter((e: unknown) => typeof e === 'string')
88
- );
89
- }
90
-
91
- // Load custom define values
92
- if (userConfig?.define && typeof userConfig.define === 'object') {
93
- userDefine = userConfig.define;
94
- if (Object.keys(userDefine).length > 0) {
95
- logger.debug(
96
- 'Loaded %d custom define(s) from agentuity.config.ts for server bundle',
97
- Object.keys(userDefine).length
98
- );
99
- }
100
- }
101
-
102
- // Allow users to disable db rewrite plugin
103
- if (userConfig?.build?.dbRewrite === false) {
104
- dbRewriteEnabled = false;
105
- logger.debug('DB rewrite: disabled via agentuity.config.ts');
106
- }
107
- } catch (error) {
108
- logger.debug('Failed to load agentuity.config.ts for externals:', error);
109
- }
110
- }
111
-
112
- // Combine runtime externals with custom externals for installation
113
- const installPatterns = [...runtimeExternals, ...customExternals];
114
-
115
- // All external patterns (runtime + build tools + custom) for Bun.build
116
- const allExternalPatterns = [...runtimeExternals, ...buildToolExternals, ...customExternals];
117
- let external = allExternalPatterns;
118
-
119
- // For production builds: install ONLY runtime externals, then discover full dependency tree
120
- if (!dev) {
121
- logger.debug('Installing externalized packages to discover full dependency tree...');
122
-
123
- // Step 1: Collect packages matching RUNTIME external patterns (skip build tools)
124
- const externalInstalls: string[] = [];
125
- for (const pattern of installPatterns) {
126
- if (pattern.endsWith('/*')) {
127
- // Pattern like @org/* - install all packages under that scope
128
- const prefix = pattern.slice(0, -2);
129
- const nmDir = join(rootDir, 'node_modules', prefix);
130
- const nmDirExists = await stat(nmDir)
131
- .then((s) => s.isDirectory())
132
- .catch(() => false);
133
- if (nmDirExists) {
134
- const entries = await readdir(nmDir);
135
- for (const entry of entries) {
136
- const pkgName = `${prefix}/${entry}`;
137
- const pkgJsonExists = await Bun.file(
138
- join(rootDir, 'node_modules', pkgName, 'package.json')
139
- ).exists();
140
- if (pkgJsonExists) {
141
- externalInstalls.push(pkgName);
142
- }
143
- }
144
- }
145
- } else {
146
- // Exact package name
147
- const pkgJsonExists = await Bun.file(
148
- join(rootDir, 'node_modules', pattern, 'package.json')
149
- ).exists();
150
- if (pkgJsonExists) {
151
- externalInstalls.push(pattern);
152
- }
153
- }
154
- }
155
-
156
- // Step 2: Write minimal package.json and install externals
157
- if (externalInstalls.length > 0) {
158
- const pkgPath = join(rootDir, 'package.json');
159
- const pkgContents = await Bun.file(pkgPath).json();
160
-
161
- await Bun.write(
162
- join(outDir, 'package.json'),
163
- JSON.stringify({ name: pkgContents.name, version: pkgContents.version }, null, 2)
164
- );
165
-
166
- logger.debug(
167
- 'Installing %d packages: %s',
168
- externalInstalls.length,
169
- externalInstalls.join(', ')
170
- );
171
-
172
- // Collect platform-specific optional dependencies for native modules
173
- // Bun's --target flag doesn't correctly install cross-platform optional deps,
174
- // so we need to explicitly install them (e.g., @img/sharp-linux-x64 for sharp)
175
- const platformOptionalDeps: string[] = [];
176
- for (const pkg of externalInstalls) {
177
- const pkgJsonPath = join(rootDir, 'node_modules', pkg, 'package.json');
178
- if (await Bun.file(pkgJsonPath).exists()) {
179
- try {
180
- const pkgJson = await Bun.file(pkgJsonPath).json();
181
- if (pkgJson.optionalDependencies) {
182
- // Find linux-x64 specific optional dependencies (glibc, not musl)
183
- // Match patterns like: @img/sharp-linux-x64, @img/sharp-libvips-linux-x64
184
- for (const optDep of Object.keys(pkgJson.optionalDependencies)) {
185
- if (optDep.includes('linux-x64') && !optDep.includes('musl')) {
186
- platformOptionalDeps.push(optDep);
187
- }
188
- }
189
- }
190
- } catch {
191
- // Ignore parse errors
192
- }
193
- }
194
- }
195
-
196
- if (platformOptionalDeps.length > 0) {
197
- logger.debug(
198
- 'Found %d platform-specific optional deps: %s',
199
- platformOptionalDeps.length,
200
- platformOptionalDeps.join(', ')
201
- );
202
- }
203
-
204
- // Use npm with --force for cross-platform installs since Bun's --target flag
205
- // doesn't correctly handle optional dependencies for other platforms
206
- const allPackagesToInstall = [...externalInstalls, ...platformOptionalDeps];
207
- logger.debug('Installing with npm (cross-platform): %s', allPackagesToInstall.join(', '));
208
-
209
- const proc = Bun.spawn(
210
- [
211
- 'npm',
212
- 'install',
213
- '--no-save',
214
- '--ignore-scripts',
215
- '--os=linux',
216
- '--cpu=x64',
217
- '--force',
218
- ...allPackagesToInstall,
219
- ],
220
- {
221
- cwd: outDir,
222
- stdout: 'pipe',
223
- stderr: 'pipe',
224
- }
225
- );
226
-
227
- const exitCode = await proc.exited;
228
-
229
- if (exitCode !== 0) {
230
- const stderr = await new Response(proc.stderr).text();
231
- throw new Error(
232
- `Failed to install external dependencies (exit code ${exitCode}):\n${stderr}`
233
- );
234
- }
235
-
236
- // Step 3: Scan what actually got installed (includes transitive dependencies)
237
- const installedNmDir = join(outDir, 'node_modules');
238
- const installedNmDirExists = await stat(installedNmDir)
239
- .then((s) => s.isDirectory())
240
- .catch(() => false);
241
- if (installedNmDirExists) {
242
- const allInstalled: string[] = [];
243
-
244
- // Recursively find all installed packages
245
- const scanDir = async (dir: string, prefix = '') => {
246
- const entries = await readdir(dir, { withFileTypes: true });
247
- for (const entry of entries) {
248
- if (entry.isDirectory()) {
249
- const pkgName = prefix ? `${prefix}/${entry.name}` : entry.name;
250
-
251
- // Check if this is a package (has package.json)
252
- const pkgJsonExists = await Bun.file(
253
- join(dir, entry.name, 'package.json')
254
- ).exists();
255
- if (pkgJsonExists) {
256
- allInstalled.push(pkgName);
257
- }
258
-
259
- // Recurse into scoped packages (@org/package)
260
- if (entry.name.startsWith('@')) {
261
- await scanDir(join(dir, entry.name), entry.name);
262
- }
263
- }
264
- }
265
- };
266
-
267
- await scanDir(installedNmDir);
268
- logger.debug(
269
- 'Discovered %d total packages (including transitive deps)',
270
- allInstalled.length
271
- );
272
-
273
- // Step 4: Use ALL installed packages + build tool externals for bundling
274
- external = [...allInstalled, ...buildToolExternals];
275
- }
276
- }
277
- } else {
278
- // Dev mode: just use all external patterns as-is
279
- external = allExternalPatterns;
280
- }
281
-
282
- // Build server bundle
283
- logger.debug('Building server with Bun.build...');
284
- logger.debug(`External packages (${external.length}): ${external.join(', ')}`);
285
-
286
- // Create Bun plugin to apply LLM patches during bundling
287
- const patches = generatePatches();
288
- logger.debug(`Loaded ${patches.size} patch(es) for LLM providers`);
289
-
290
- const patchPlugin: BunPlugin = {
291
- name: 'agentuity:patch',
292
- setup(build) {
293
- for (const [, patch] of patches) {
294
- build.onLoad(
295
- {
296
- filter: buildPatchFilter(patch.module, patch.filename),
297
- namespace: 'file',
298
- },
299
- async (args) => {
300
- if (build.config.target !== 'bun') {
301
- return;
302
- }
303
- logger.trace(`Applying patch to: ${args.path}`);
304
- const [contents, loader] = await applyPatch(args.path, patch);
305
- return {
306
- contents,
307
- loader,
308
- };
309
- }
310
- );
311
- }
312
- },
313
- };
314
-
315
- // Detect files belonging to @agentuity/postgres or @agentuity/drizzle.
316
- // Matches both published paths (node_modules/@agentuity/postgres/) and
317
- // symlinked/monorepo paths (packages/postgres/dist/, packages/postgres/src/).
318
- const isAgentuityPostgres = (filePath: string) =>
319
- filePath.includes('/@agentuity/postgres/') ||
320
- filePath.includes('\\@agentuity\\postgres\\') ||
321
- filePath.includes('/packages/postgres/');
322
-
323
- const isAgentuityDrizzle = (filePath: string) =>
324
- filePath.includes('/@agentuity/drizzle/') ||
325
- filePath.includes('\\@agentuity\\drizzle\\') ||
326
- filePath.includes('/packages/drizzle/');
327
-
328
- const dbRewritePlugin: BunPlugin = {
329
- name: 'agentuity:db-rewrite',
330
- setup(build) {
331
- build.onResolve({ filter: /^drizzle-orm\/bun-sql$/ }, (args) => {
332
- // Don't redirect if the importer is @agentuity/drizzle itself — that would create a cycle.
333
- // Matches both published packages in node_modules and symlinked monorepo paths.
334
- if (args.importer && isAgentuityDrizzle(args.importer)) {
335
- return; // Let default resolution handle it
336
- }
337
- // Resolve to @agentuity/drizzle — the bundler will find it in node_modules
338
- // and bundle it into .agentuity/app.js (NOT kept external).
339
- const resolved = import.meta.resolveSync('@agentuity/drizzle', args.importer);
340
- logger.debug('DB rewrite: redirected drizzle-orm/bun-sql → @agentuity/drizzle');
341
- return { path: resolved };
342
- });
343
-
344
- build.onLoad(
345
- {
346
- filter: /\.[cm]?[jt]sx?$/,
347
- namespace: 'file',
348
- },
349
- async (args) => {
350
- // Skip node_modules and the rewrite-target packages themselves.
351
- // The symlink check is needed because symlinked packages (e.g. via
352
- // workspace links) resolve to paths outside node_modules/ (like
353
- // ../../sdk/packages/postgres/dist/) and would otherwise be rewritten,
354
- // creating circular imports (postgres importing from itself).
355
- if (
356
- args.path.includes('/node_modules/') ||
357
- isAgentuityPostgres(args.path) ||
358
- isAgentuityDrizzle(args.path)
359
- ) {
360
- return;
361
- }
362
- const contents = await Bun.file(args.path).text();
363
- let updated = contents;
364
- let didRewrite = false;
365
-
366
- const bunResult = rewriteBunImports(updated);
367
- if (bunResult.changed) {
368
- logger.debug('DB rewrite: redirected bun → @agentuity/postgres');
369
- updated = bunResult.contents;
370
- didRewrite = true;
371
- }
372
-
373
- const pgResult = rewritePgImports(updated);
374
- if (pgResult.changed) {
375
- logger.debug('DB rewrite: redirected pg → @agentuity/postgres');
376
- updated = pgResult.contents;
377
- didRewrite = true;
378
- }
379
-
380
- if (!didRewrite) {
381
- return;
382
- }
383
-
384
- return {
385
- contents: updated,
386
- loader: getLoaderForPath(args.path) as Bun.Loader,
387
- };
388
- }
389
- );
390
- },
391
- };
392
-
393
- const buildConfig = {
394
- entrypoints: [entryPath],
395
- outdir: outDir, // Output to .agentuity/ directly (not .agentuity/server/)
396
- target: 'bun' as const,
397
- format: 'esm' as const,
398
- splitting: false, // Disable splitting - causes issues with externalized CommonJS packages
399
- minify: !dev,
400
- sourcemap: (dev ? 'inline' : 'external') as 'inline' | 'external',
401
- external,
402
- // CRITICAL: Disable environment variable inlining for server builds
403
- // Server code must read process.env at RUNTIME, not have values baked in at build time
404
- // Without this, NODE_ENV and other env vars get inlined as string literals
405
- env: 'disable' as const,
406
- define: userDefine, // Include custom define values from agentuity.config.ts
407
- plugins: dbRewriteEnabled ? [patchPlugin, dbRewritePlugin] : [patchPlugin],
408
- naming: {
409
- entry: 'app.js', // Output as app.js (not app.generated.js)
410
- },
411
- };
412
-
413
- logger.debug(
414
- `Bun.build config: ${JSON.stringify({ ...buildConfig, external: `[${external.length} packages]` }, null, 2)}`
415
- );
416
-
417
- // WORKAROUND: Temporarily delete NODE_ENV to prevent Bun.build from inlining it
418
- // See: https://github.com/oven-sh/bun/issues/20183
419
- // Even with env: 'disable', Bun.build still inlines NODE_ENV at build time
420
- const originalNodeEnv = process.env.NODE_ENV;
421
- delete process.env.NODE_ENV;
422
-
423
- // Verify entry point exists before building
424
- if (!(await Bun.file(entryPath).exists())) {
425
- throw new Error(`Entry point not found: ${entryPath}`);
426
- }
427
-
428
- logger.debug(`Entry point verified: ${entryPath}`);
429
-
430
- let result: BuildOutput;
431
- try {
432
- result = await Bun.build(buildConfig);
433
- } catch (error: unknown) {
434
- // Restore NODE_ENV after build attempt
435
- if (originalNodeEnv !== undefined) {
436
- process.env.NODE_ENV = originalNodeEnv;
437
- }
438
-
439
- // Handle AggregateError with build/resolve messages
440
- if (error instanceof AggregateError && error.errors) {
441
- const formattedErrors = error.errors
442
- .map((err) => {
443
- // Try to use formatBuildLog if it looks like a BuildMessage/ResolveMessage
444
- if (err && typeof err === 'object' && 'name' in err) {
445
- const formatted = formatBuildLog(err as BuildMessage | ResolveMessage);
446
- if (formatted) return formatted;
447
- }
448
- // Fallback for other error types
449
- const parts = [err.message || err.text || 'Unknown error'];
450
- if (err.position) {
451
- parts.push(
452
- ` at ${err.position.file}:${err.position.line}:${err.position.column}`
453
- );
454
- }
455
- return parts.join('\n');
456
- })
457
- .filter(Boolean)
458
- .join('\n');
459
-
460
- throw new Error(formattedErrors || 'Build failed');
461
- }
462
-
463
- throw error;
464
- }
465
-
466
- // Restore NODE_ENV after successful build
467
- if (originalNodeEnv !== undefined) {
468
- process.env.NODE_ENV = originalNodeEnv;
469
- }
470
-
471
- if (!result.success) {
472
- const errorMessages = result.logs
473
- .map((log) => formatBuildLog(log))
474
- .filter(Boolean)
475
- .join('\n');
476
-
477
- throw new Error(errorMessages || 'Build failed with no error messages');
478
- }
479
-
480
- logger.debug(`Server build complete: ${result.outputs.length} files`);
481
- }