@agentuity/cli 2.0.11 → 3.0.0-alpha.1

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,381 +0,0 @@
1
- /**
2
- * Lifecycle Types Generator
3
- *
4
- * Generates src/generated/state.ts and src/generated/router.ts by analyzing
5
- * app.ts for a setup() function.
6
- *
7
- * Uses TypeScript's type checker to extract the real return type of setup —
8
- * no AST literal guessing needed.
9
- */
10
-
11
- import ts from 'typescript';
12
- import { join, relative, dirname } from 'node:path';
13
- import { mkdirSync } from 'node:fs';
14
- import { StructuredError } from '@agentuity/core';
15
- import type { Logger } from '../../../types';
16
- import { toForwardSlash } from '../../../utils/normalize-path';
17
-
18
- const RuntimePackageNotFound = StructuredError('RuntimePackageNotFound');
19
-
20
- /**
21
- * Use the TypeScript type checker to extract the return type of the setup
22
- * function passed to createApp(). Works with inline setup, exported setup,
23
- * variable references, async functions — anything TS can resolve.
24
- */
25
- function extractSetupReturnType(appFilePath: string, logger: Logger): string | null {
26
- const compilerOptions: ts.CompilerOptions = {
27
- target: ts.ScriptTarget.ESNext,
28
- module: ts.ModuleKind.ESNext,
29
- moduleResolution: ts.ModuleResolutionKind.Bundler,
30
- strict: true,
31
- skipLibCheck: true,
32
- noEmit: true,
33
- allowJs: true,
34
- esModuleInterop: true,
35
- };
36
-
37
- const program = ts.createProgram([appFilePath], compilerOptions);
38
- const checker = program.getTypeChecker();
39
- const sourceFile = program.getSourceFile(appFilePath);
40
-
41
- if (!sourceFile) {
42
- logger.debug('[lifecycle] Could not load source file');
43
- return null;
44
- }
45
-
46
- let setupType: ts.Type | null = null;
47
-
48
- function unwrapPromise(type: ts.Type): ts.Type {
49
- // Check for Promise by looking at typeArguments on TypeReference
50
- const typeRef = type as ts.TypeReference;
51
- if (typeRef.typeArguments && typeRef.typeArguments.length > 0) {
52
- const symbol = type.getSymbol() ?? type.aliasSymbol;
53
- if (symbol?.name === 'Promise') {
54
- return typeRef.typeArguments[0]!;
55
- }
56
- }
57
- return type;
58
- }
59
-
60
- function extractFromProperty(prop: ts.ObjectLiteralElementLike): void {
61
- if (setupType) return;
62
-
63
- // Handle: setup: () => { ... } or setup: myFunc
64
- if (
65
- ts.isPropertyAssignment(prop) &&
66
- ts.isIdentifier(prop.name) &&
67
- prop.name.text === 'setup'
68
- ) {
69
- const type = checker.getTypeAtLocation(prop.initializer);
70
- const callSigs = type.getCallSignatures();
71
- if (callSigs.length > 0) {
72
- setupType = unwrapPromise(checker.getReturnTypeOfSignature(callSigs[0]!));
73
- }
74
- return;
75
- }
76
-
77
- // Handle shorthand: createApp({ setup })
78
- if (ts.isShorthandPropertyAssignment(prop) && prop.name.text === 'setup') {
79
- const type = checker.getTypeAtLocation(prop.name);
80
- const callSigs = type.getCallSignatures();
81
- if (callSigs.length > 0) {
82
- setupType = unwrapPromise(checker.getReturnTypeOfSignature(callSigs[0]!));
83
- }
84
- }
85
- }
86
-
87
- function visit(node: ts.Node): void {
88
- if (setupType) return;
89
-
90
- // Find createApp(...) call — with or without await
91
- let callExpr: ts.CallExpression | undefined;
92
-
93
- if (ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {
94
- if (node.expression.text === 'createApp') callExpr = node;
95
- } else if (ts.isAwaitExpression(node) && ts.isCallExpression(node.expression)) {
96
- const call = node.expression;
97
- if (ts.isIdentifier(call.expression) && call.expression.text === 'createApp') {
98
- callExpr = call;
99
- }
100
- }
101
-
102
- if (callExpr && callExpr.arguments.length > 0) {
103
- const configArg = callExpr.arguments[0];
104
- if (configArg && ts.isObjectLiteralExpression(configArg)) {
105
- for (const prop of configArg.properties) {
106
- extractFromProperty(prop);
107
- if (setupType) return;
108
- }
109
- }
110
- }
111
-
112
- ts.forEachChild(node, visit);
113
- }
114
-
115
- visit(sourceFile);
116
-
117
- // Fallback: look for an exported function named `setup` in the file
118
- // (user may define `export function setup()` without passing it to createApp)
119
- if (!setupType) {
120
- for (const stmt of sourceFile.statements) {
121
- if (
122
- ts.isFunctionDeclaration(stmt) &&
123
- stmt.name?.text === 'setup' &&
124
- stmt.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword)
125
- ) {
126
- const type = checker.getTypeAtLocation(stmt);
127
- const callSigs = type.getCallSignatures();
128
- if (callSigs.length > 0) {
129
- setupType = unwrapPromise(checker.getReturnTypeOfSignature(callSigs[0]!));
130
- }
131
- break;
132
- }
133
-
134
- // Handle: export const setup = () => { ... }
135
- if (
136
- ts.isVariableStatement(stmt) &&
137
- stmt.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword)
138
- ) {
139
- for (const decl of stmt.declarationList.declarations) {
140
- if (ts.isIdentifier(decl.name) && decl.name.text === 'setup' && decl.initializer) {
141
- const type = checker.getTypeAtLocation(decl.initializer);
142
- const callSigs = type.getCallSignatures();
143
- if (callSigs.length > 0) {
144
- setupType = unwrapPromise(checker.getReturnTypeOfSignature(callSigs[0]!));
145
- }
146
- break;
147
- }
148
- }
149
- if (setupType) break;
150
- }
151
- }
152
- }
153
-
154
- if (!setupType) {
155
- return null;
156
- }
157
-
158
- // Print the type as a string — TS gives us the real resolved type
159
- const typeString = checker.typeToString(
160
- setupType,
161
- undefined,
162
- ts.TypeFormatFlags.NoTruncation | ts.TypeFormatFlags.MultilineObjectLiterals
163
- );
164
-
165
- return typeString;
166
- }
167
-
168
- /**
169
- * Find the @agentuity/runtime package by walking up the directory tree.
170
- */
171
- async function findRuntimePackage(rootDir: string, logger: Logger): Promise<string> {
172
- let currentDir = rootDir;
173
- const searchedPaths: string[] = [];
174
-
175
- while (currentDir && currentDir !== '/' && currentDir !== '.') {
176
- const candidatePath = join(currentDir, 'node_modules', '@agentuity', 'runtime');
177
- searchedPaths.push(candidatePath);
178
- if (await Bun.file(join(candidatePath, 'package.json')).exists()) {
179
- logger.debug(`Found runtime package at: ${candidatePath}`);
180
- return candidatePath;
181
- }
182
-
183
- const packagesPath = join(currentDir, 'packages', 'runtime');
184
- searchedPaths.push(packagesPath);
185
- if (await Bun.file(join(packagesPath, 'package.json')).exists()) {
186
- logger.debug(`Found runtime package (source) at: ${packagesPath}`);
187
- return packagesPath;
188
- }
189
-
190
- const parent = dirname(currentDir);
191
- if (parent === currentDir) break;
192
- currentDir = parent;
193
- }
194
-
195
- throw new RuntimePackageNotFound({
196
- message:
197
- `@agentuity/runtime package not found.\n` +
198
- `Searched paths:\n${searchedPaths.map((p) => ` - ${p}`).join('\n')}\n` +
199
- `Make sure dependencies are installed by running 'bun install' or 'npm install'`,
200
- });
201
- }
202
-
203
- function generateStateContent(appStateType: string): string {
204
- return `// @generated
205
- // AUTO-GENERATED from app.ts setup() return type
206
- // This file is auto-generated by the build tool - do not edit manually
207
-
208
- /**
209
- * Application state type inferred from your createApp setup function.
210
- * This type is automatically generated and available throughout your app via ctx.app.
211
- *
212
- * @example
213
- * \`\`\`typescript
214
- * // In your agents:
215
- * const agent = createAgent({
216
- * handler: async (ctx, input) => {
217
- * // ctx.app is strongly typed as GeneratedAppState
218
- * const value = ctx.app; // All properties from your setup return value
219
- * return 'result';
220
- * }
221
- * });
222
- * \`\`\`
223
- */
224
- export type GeneratedAppState = ${appStateType};
225
-
226
- // Augment the @agentuity/runtime module with AppState
227
- declare module '@agentuity/runtime' {
228
- interface AppState extends GeneratedAppState {}
229
- }
230
-
231
- // FOUND AN ERROR IN THIS FILE?
232
- // Please file an issue at https://github.com/agentuity/sdk/issues
233
- // or if you know the fix please submit a PR!
234
- `;
235
- }
236
-
237
- function generateRouterWrapper(runtimeImportPath: string): string {
238
- return `// @generated
239
- // AUTO-GENERATED runtime wrapper
240
- // This file is auto-generated by the build tool - do not edit manually
241
-
242
- // Import augmentations file (NOT type-only) to trigger module augmentation
243
- import type { GeneratedAppState } from './state';
244
- import './state';
245
-
246
- // Import from actual package location
247
- import { createRouter as baseCreateRouter, type Env } from '${runtimeImportPath}/src/index';
248
- import type { Hono } from 'hono';
249
-
250
- // Type aliases to avoid repeating the generic parameter
251
- type AppEnv = Env<GeneratedAppState>;
252
- type AppRouter = Hono<AppEnv>;
253
-
254
- /**
255
- * Creates a Hono router with extended methods for Agentuity-specific routing patterns.
256
- *
257
- * @returns Extended Hono router with custom methods and app state typing
258
- *
259
- * @example
260
- * \`\`\`typescript
261
- * const router = createRouter();
262
- * router.get('/hello', (c) => c.text('Hello!'));
263
- * router.get('/db', (c) => {
264
- * const db = c.var.app; // Your app state from createApp setup
265
- * return c.json({ connected: true });
266
- * });
267
- * \`\`\`
268
- */
269
- export function createRouter(): AppRouter {
270
- return baseCreateRouter() as unknown as AppRouter;
271
- }
272
-
273
- // Re-export everything else
274
- export * from '${runtimeImportPath}/src/index';
275
-
276
- // FOUND AN ERROR IN THIS FILE?
277
- // Please file an issue at https://github.com/agentuity/sdk/issues
278
- // or if you know the fix please submit a PR!
279
- `;
280
- }
281
-
282
- async function updateTsconfigPathMapping(
283
- rootDir: string,
284
- shouldAdd: boolean,
285
- logger: Logger
286
- ): Promise<void> {
287
- const tsconfigPath = join(rootDir, 'tsconfig.json');
288
- if (!(await Bun.file(tsconfigPath).exists())) {
289
- logger.debug('No tsconfig.json found, skipping path mapping update');
290
- return;
291
- }
292
-
293
- try {
294
- const tsconfigContent = await Bun.file(tsconfigPath).text();
295
- const { parseJSONC } = await import('../../../utils/jsonc');
296
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
297
- const tsconfig = parseJSONC(tsconfigContent) as any;
298
- const before = JSON.stringify(tsconfig);
299
-
300
- if (!tsconfig.compilerOptions) tsconfig.compilerOptions = {};
301
- if (!tsconfig.compilerOptions.paths) tsconfig.compilerOptions.paths = {};
302
-
303
- if (shouldAdd) {
304
- tsconfig.compilerOptions.paths['@agentuity/runtime'] = ['./src/generated/router.ts'];
305
- logger.debug('Added @agentuity/runtime path mapping to tsconfig.json');
306
- } else {
307
- if (tsconfig.compilerOptions.paths['@agentuity/runtime']) {
308
- delete tsconfig.compilerOptions.paths['@agentuity/runtime'];
309
- logger.debug('Removed @agentuity/runtime path mapping from tsconfig.json');
310
- }
311
- if (Object.keys(tsconfig.compilerOptions.paths).length === 0) {
312
- delete tsconfig.compilerOptions.paths;
313
- }
314
- }
315
-
316
- if (JSON.stringify(tsconfig) === before) return;
317
- await Bun.write(tsconfigPath, JSON.stringify(tsconfig, null, '\t') + '\n');
318
- } catch (error) {
319
- logger.warn('Failed to update tsconfig.json:', error);
320
- }
321
- }
322
-
323
- /**
324
- * Setup lifecycle types by analyzing app.ts for setup() function.
325
- *
326
- * Uses TypeScript's type checker to extract the real return type — handles
327
- * inline setup, exported setup, variable references, async functions, and
328
- * any other pattern TS can resolve.
329
- */
330
- export async function generateLifecycleTypes(
331
- rootDir: string,
332
- srcDir: string,
333
- logger: Logger
334
- ): Promise<boolean> {
335
- logger.debug('[lifecycle] Starting lifecycle type generation...');
336
-
337
- const outDir = join(srcDir, 'generated');
338
-
339
- // Look for app.ts in both root and src directories
340
- const rootAppFile = join(rootDir, 'app.ts');
341
- const srcAppFile = join(srcDir, 'app.ts');
342
-
343
- let appFile = '';
344
- if (await Bun.file(rootAppFile).exists()) {
345
- appFile = rootAppFile;
346
- } else if (await Bun.file(srcAppFile).exists()) {
347
- appFile = srcAppFile;
348
- }
349
-
350
- if (!appFile || !(await Bun.file(appFile).exists())) {
351
- logger.debug('[lifecycle] No app.ts found');
352
- return false;
353
- }
354
-
355
- // Use TypeScript type checker to extract the setup return type
356
- const appStateType = extractSetupReturnType(appFile, logger);
357
-
358
- if (!appStateType) {
359
- logger.debug('[lifecycle] No setup() function found in createApp');
360
- await updateTsconfigPathMapping(rootDir, false, logger);
361
- return false;
362
- }
363
-
364
- logger.debug(`[lifecycle] Extracted setup return type: ${appStateType}`);
365
-
366
- // Generate files
367
- mkdirSync(outDir, { recursive: true });
368
-
369
- const runtimePkgPath = await findRuntimePackage(rootDir, logger);
370
- const runtimeImportPath = toForwardSlash(relative(outDir, runtimePkgPath));
371
-
372
- await Bun.write(join(outDir, 'state.ts'), generateStateContent(appStateType));
373
- logger.debug(`Generated lifecycle types: ${join(outDir, 'state.ts')}`);
374
-
375
- await Bun.write(join(outDir, 'router.ts'), generateRouterWrapper(runtimeImportPath));
376
- logger.debug(`Generated lifecycle wrapper: ${join(outDir, 'router.ts')}`);
377
-
378
- await updateTsconfigPathMapping(rootDir, true, logger);
379
-
380
- return true;
381
- }