@agentuity/cli 2.0.10 → 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 (353) 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.d.ts.map +1 -1
  66. package/dist/cmd/coder/create.js +18 -0
  67. package/dist/cmd/coder/create.js.map +1 -1
  68. package/dist/cmd/coder/index.d.ts.map +1 -1
  69. package/dist/cmd/coder/index.js +4 -0
  70. package/dist/cmd/coder/index.js.map +1 -1
  71. package/dist/cmd/coder/start.d.ts.map +1 -1
  72. package/dist/cmd/coder/start.js +49 -1
  73. package/dist/cmd/coder/start.js.map +1 -1
  74. package/dist/cmd/coder/update.d.ts.map +1 -1
  75. package/dist/cmd/coder/update.js +21 -1
  76. package/dist/cmd/coder/update.js.map +1 -1
  77. package/dist/cmd/coder/workspace/create.d.ts.map +1 -1
  78. package/dist/cmd/coder/workspace/create.js +17 -1
  79. package/dist/cmd/coder/workspace/create.js.map +1 -1
  80. package/dist/cmd/coder/workspace/list.js +2 -2
  81. package/dist/cmd/coder/workspace/list.js.map +1 -1
  82. package/dist/cmd/dev/index.d.ts +9 -0
  83. package/dist/cmd/dev/index.d.ts.map +1 -1
  84. package/dist/cmd/dev/index.js +127 -923
  85. package/dist/cmd/dev/index.js.map +1 -1
  86. package/dist/cmd/project/auth/shared.d.ts.map +1 -1
  87. package/dist/cmd/project/auth/shared.js +14 -38
  88. package/dist/cmd/project/auth/shared.js.map +1 -1
  89. package/dist/cmd/project/create.d.ts.map +1 -1
  90. package/dist/cmd/project/create.js +12 -19
  91. package/dist/cmd/project/create.js.map +1 -1
  92. package/dist/cmd/project/frameworks-ai-examples.d.ts +15 -0
  93. package/dist/cmd/project/frameworks-ai-examples.d.ts.map +1 -0
  94. package/dist/cmd/project/frameworks-ai-examples.js +160 -0
  95. package/dist/cmd/project/frameworks-ai-examples.js.map +1 -0
  96. package/dist/cmd/project/frameworks-landing-pages.d.ts +17 -0
  97. package/dist/cmd/project/frameworks-landing-pages.d.ts.map +1 -0
  98. package/dist/cmd/project/frameworks-landing-pages.js +242 -0
  99. package/dist/cmd/project/frameworks-landing-pages.js.map +1 -0
  100. package/dist/cmd/project/frameworks.d.ts +58 -0
  101. package/dist/cmd/project/frameworks.d.ts.map +1 -0
  102. package/dist/cmd/project/frameworks.js +152 -0
  103. package/dist/cmd/project/frameworks.js.map +1 -0
  104. package/dist/cmd/project/reconcile.d.ts.map +1 -1
  105. package/dist/cmd/project/reconcile.js +10 -23
  106. package/dist/cmd/project/reconcile.js.map +1 -1
  107. package/dist/cmd/project/remote-import.js +1 -1
  108. package/dist/cmd/project/scaffold.d.ts +58 -0
  109. package/dist/cmd/project/scaffold.d.ts.map +1 -0
  110. package/dist/cmd/project/scaffold.js +223 -0
  111. package/dist/cmd/project/scaffold.js.map +1 -0
  112. package/dist/cmd/project/template-flow.d.ts +8 -4
  113. package/dist/cmd/project/template-flow.d.ts.map +1 -1
  114. package/dist/cmd/project/template-flow.js +93 -144
  115. package/dist/cmd/project/template-flow.js.map +1 -1
  116. package/dist/deploy-metadata.d.ts +49 -0
  117. package/dist/deploy-metadata.d.ts.map +1 -0
  118. package/dist/deploy-metadata.js +183 -0
  119. package/dist/deploy-metadata.js.map +1 -0
  120. package/dist/index.d.ts +1 -1
  121. package/dist/index.d.ts.map +1 -1
  122. package/dist/index.js.map +1 -1
  123. package/dist/types.d.ts +25 -31
  124. package/dist/types.d.ts.map +1 -1
  125. package/dist/types.js.map +1 -1
  126. package/package.json +13 -8
  127. package/src/cmd/ai/prompt/index.ts +2 -7
  128. package/src/cmd/build/adapters/generic.ts +239 -0
  129. package/src/cmd/build/adapters/index.ts +30 -0
  130. package/src/cmd/build/adapters/nextjs.ts +146 -0
  131. package/src/cmd/build/adapters/static-server.ts +143 -0
  132. package/src/cmd/build/adapters/types.ts +93 -0
  133. package/src/cmd/build/detect/engine.ts +111 -0
  134. package/src/cmd/build/detect/frameworks.ts +335 -0
  135. package/src/cmd/build/detect/generic.ts +71 -0
  136. package/src/cmd/build/detect/index.ts +122 -0
  137. package/src/cmd/build/detect/types.ts +109 -0
  138. package/src/cmd/build/detect/util.ts +104 -0
  139. package/src/cmd/build/index.ts +64 -24
  140. package/src/cmd/build/package/index.ts +66 -0
  141. package/src/cmd/build/package/launch.ts +104 -0
  142. package/src/cmd/build/typecheck.ts +9 -0
  143. package/src/cmd/cloud/deploy.ts +86 -13
  144. package/src/cmd/coder/create.ts +24 -1
  145. package/src/cmd/coder/index.ts +4 -0
  146. package/src/cmd/coder/start.ts +60 -1
  147. package/src/cmd/coder/update.ts +18 -1
  148. package/src/cmd/coder/workspace/create.ts +20 -2
  149. package/src/cmd/coder/workspace/list.ts +2 -2
  150. package/src/cmd/dev/index.ts +155 -1059
  151. package/src/cmd/project/auth/shared.ts +14 -39
  152. package/src/cmd/project/create.ts +14 -19
  153. package/src/cmd/project/frameworks-ai-examples.ts +166 -0
  154. package/src/cmd/project/frameworks-landing-pages.ts +267 -0
  155. package/src/cmd/project/frameworks.ts +223 -0
  156. package/src/cmd/project/reconcile.ts +10 -22
  157. package/src/cmd/project/remote-import.ts +1 -1
  158. package/src/cmd/project/scaffold.ts +300 -0
  159. package/src/cmd/project/template-flow.ts +102 -156
  160. package/src/deploy-metadata.ts +253 -0
  161. package/src/index.ts +0 -2
  162. package/src/types.ts +0 -31
  163. package/dist/agents-docs.d.ts +0 -23
  164. package/dist/agents-docs.d.ts.map +0 -1
  165. package/dist/agents-docs.js +0 -56
  166. package/dist/agents-docs.js.map +0 -1
  167. package/dist/cmd/ai/prompt/agent.d.ts +0 -10
  168. package/dist/cmd/ai/prompt/agent.d.ts.map +0 -1
  169. package/dist/cmd/ai/prompt/agent.js +0 -28
  170. package/dist/cmd/ai/prompt/agent.js.map +0 -1
  171. package/dist/cmd/build/app-router-detector.d.ts +0 -39
  172. package/dist/cmd/build/app-router-detector.d.ts.map +0 -1
  173. package/dist/cmd/build/app-router-detector.js +0 -229
  174. package/dist/cmd/build/app-router-detector.js.map +0 -1
  175. package/dist/cmd/build/format-schema.d.ts +0 -6
  176. package/dist/cmd/build/format-schema.d.ts.map +0 -1
  177. package/dist/cmd/build/format-schema.js +0 -60
  178. package/dist/cmd/build/format-schema.js.map +0 -1
  179. package/dist/cmd/build/vite/agent-discovery.d.ts +0 -37
  180. package/dist/cmd/build/vite/agent-discovery.d.ts.map +0 -1
  181. package/dist/cmd/build/vite/agent-discovery.js +0 -263
  182. package/dist/cmd/build/vite/agent-discovery.js.map +0 -1
  183. package/dist/cmd/build/vite/beacon-plugin.d.ts +0 -19
  184. package/dist/cmd/build/vite/beacon-plugin.d.ts.map +0 -1
  185. package/dist/cmd/build/vite/beacon-plugin.js +0 -137
  186. package/dist/cmd/build/vite/beacon-plugin.js.map +0 -1
  187. package/dist/cmd/build/vite/browser-env-plugin.d.ts +0 -9
  188. package/dist/cmd/build/vite/browser-env-plugin.d.ts.map +0 -1
  189. package/dist/cmd/build/vite/browser-env-plugin.js +0 -28
  190. package/dist/cmd/build/vite/browser-env-plugin.js.map +0 -1
  191. package/dist/cmd/build/vite/bun-dev-server.d.ts +0 -67
  192. package/dist/cmd/build/vite/bun-dev-server.d.ts.map +0 -1
  193. package/dist/cmd/build/vite/bun-dev-server.js +0 -340
  194. package/dist/cmd/build/vite/bun-dev-server.js.map +0 -1
  195. package/dist/cmd/build/vite/bundle-files.d.ts +0 -12
  196. package/dist/cmd/build/vite/bundle-files.d.ts.map +0 -1
  197. package/dist/cmd/build/vite/bundle-files.js +0 -107
  198. package/dist/cmd/build/vite/bundle-files.js.map +0 -1
  199. package/dist/cmd/build/vite/config-loader.d.ts +0 -29
  200. package/dist/cmd/build/vite/config-loader.d.ts.map +0 -1
  201. package/dist/cmd/build/vite/config-loader.js +0 -57
  202. package/dist/cmd/build/vite/config-loader.js.map +0 -1
  203. package/dist/cmd/build/vite/db-rewrite.d.ts +0 -50
  204. package/dist/cmd/build/vite/db-rewrite.d.ts.map +0 -1
  205. package/dist/cmd/build/vite/db-rewrite.js +0 -169
  206. package/dist/cmd/build/vite/db-rewrite.js.map +0 -1
  207. package/dist/cmd/build/vite/docs-generator.d.ts +0 -13
  208. package/dist/cmd/build/vite/docs-generator.d.ts.map +0 -1
  209. package/dist/cmd/build/vite/docs-generator.js +0 -97
  210. package/dist/cmd/build/vite/docs-generator.js.map +0 -1
  211. package/dist/cmd/build/vite/env-types-generator.d.ts +0 -26
  212. package/dist/cmd/build/vite/env-types-generator.d.ts.map +0 -1
  213. package/dist/cmd/build/vite/env-types-generator.js +0 -110
  214. package/dist/cmd/build/vite/env-types-generator.js.map +0 -1
  215. package/dist/cmd/build/vite/index.d.ts +0 -3
  216. package/dist/cmd/build/vite/index.d.ts.map +0 -1
  217. package/dist/cmd/build/vite/index.js +0 -4
  218. package/dist/cmd/build/vite/index.js.map +0 -1
  219. package/dist/cmd/build/vite/lifecycle-generator.d.ts +0 -19
  220. package/dist/cmd/build/vite/lifecycle-generator.d.ts.map +0 -1
  221. package/dist/cmd/build/vite/lifecycle-generator.js +0 -328
  222. package/dist/cmd/build/vite/lifecycle-generator.js.map +0 -1
  223. package/dist/cmd/build/vite/metadata-generator.d.ts +0 -36
  224. package/dist/cmd/build/vite/metadata-generator.d.ts.map +0 -1
  225. package/dist/cmd/build/vite/metadata-generator.js +0 -575
  226. package/dist/cmd/build/vite/metadata-generator.js.map +0 -1
  227. package/dist/cmd/build/vite/prompt-generator.d.ts +0 -23
  228. package/dist/cmd/build/vite/prompt-generator.d.ts.map +0 -1
  229. package/dist/cmd/build/vite/prompt-generator.js +0 -123
  230. package/dist/cmd/build/vite/prompt-generator.js.map +0 -1
  231. package/dist/cmd/build/vite/public-asset-path-plugin.d.ts +0 -45
  232. package/dist/cmd/build/vite/public-asset-path-plugin.d.ts.map +0 -1
  233. package/dist/cmd/build/vite/public-asset-path-plugin.js +0 -166
  234. package/dist/cmd/build/vite/public-asset-path-plugin.js.map +0 -1
  235. package/dist/cmd/build/vite/route-discovery.d.ts +0 -64
  236. package/dist/cmd/build/vite/route-discovery.d.ts.map +0 -1
  237. package/dist/cmd/build/vite/route-discovery.js +0 -187
  238. package/dist/cmd/build/vite/route-discovery.js.map +0 -1
  239. package/dist/cmd/build/vite/server-bundler.d.ts +0 -20
  240. package/dist/cmd/build/vite/server-bundler.d.ts.map +0 -1
  241. package/dist/cmd/build/vite/server-bundler.js +0 -388
  242. package/dist/cmd/build/vite/server-bundler.js.map +0 -1
  243. package/dist/cmd/build/vite/static-renderer.d.ts +0 -26
  244. package/dist/cmd/build/vite/static-renderer.d.ts.map +0 -1
  245. package/dist/cmd/build/vite/static-renderer.js +0 -188
  246. package/dist/cmd/build/vite/static-renderer.js.map +0 -1
  247. package/dist/cmd/build/vite/tailwind-source-plugin.d.ts +0 -15
  248. package/dist/cmd/build/vite/tailwind-source-plugin.d.ts.map +0 -1
  249. package/dist/cmd/build/vite/tailwind-source-plugin.js +0 -61
  250. package/dist/cmd/build/vite/tailwind-source-plugin.js.map +0 -1
  251. package/dist/cmd/build/vite/vite-asset-server-config.d.ts +0 -24
  252. package/dist/cmd/build/vite/vite-asset-server-config.d.ts.map +0 -1
  253. package/dist/cmd/build/vite/vite-asset-server-config.js +0 -285
  254. package/dist/cmd/build/vite/vite-asset-server-config.js.map +0 -1
  255. package/dist/cmd/build/vite/vite-asset-server.d.ts +0 -30
  256. package/dist/cmd/build/vite/vite-asset-server.d.ts.map +0 -1
  257. package/dist/cmd/build/vite/vite-asset-server.js +0 -109
  258. package/dist/cmd/build/vite/vite-asset-server.js.map +0 -1
  259. package/dist/cmd/build/vite/vite-builder.d.ts +0 -59
  260. package/dist/cmd/build/vite/vite-builder.d.ts.map +0 -1
  261. package/dist/cmd/build/vite/vite-builder.js +0 -401
  262. package/dist/cmd/build/vite/vite-builder.js.map +0 -1
  263. package/dist/cmd/build/vite/workbench-generator.d.ts +0 -10
  264. package/dist/cmd/build/vite/workbench-generator.d.ts.map +0 -1
  265. package/dist/cmd/build/vite/workbench-generator.js +0 -135
  266. package/dist/cmd/build/vite/workbench-generator.js.map +0 -1
  267. package/dist/cmd/build/vite/ws-proxy.d.ts +0 -53
  268. package/dist/cmd/build/vite/ws-proxy.d.ts.map +0 -1
  269. package/dist/cmd/build/vite/ws-proxy.js +0 -95
  270. package/dist/cmd/build/vite/ws-proxy.js.map +0 -1
  271. package/dist/cmd/build/vite-bundler.d.ts +0 -29
  272. package/dist/cmd/build/vite-bundler.d.ts.map +0 -1
  273. package/dist/cmd/build/vite-bundler.js +0 -93
  274. package/dist/cmd/build/vite-bundler.js.map +0 -1
  275. package/dist/cmd/dev/agents.d.ts +0 -2
  276. package/dist/cmd/dev/agents.d.ts.map +0 -1
  277. package/dist/cmd/dev/agents.js +0 -123
  278. package/dist/cmd/dev/agents.js.map +0 -1
  279. package/dist/cmd/dev/api.d.ts +0 -20
  280. package/dist/cmd/dev/api.d.ts.map +0 -1
  281. package/dist/cmd/dev/api.js +0 -42
  282. package/dist/cmd/dev/api.js.map +0 -1
  283. package/dist/cmd/dev/dev-lock.d.ts +0 -62
  284. package/dist/cmd/dev/dev-lock.d.ts.map +0 -1
  285. package/dist/cmd/dev/dev-lock.js +0 -250
  286. package/dist/cmd/dev/dev-lock.js.map +0 -1
  287. package/dist/cmd/dev/download.d.ts +0 -11
  288. package/dist/cmd/dev/download.d.ts.map +0 -1
  289. package/dist/cmd/dev/download.js +0 -94
  290. package/dist/cmd/dev/download.js.map +0 -1
  291. package/dist/cmd/dev/file-watcher.d.ts +0 -24
  292. package/dist/cmd/dev/file-watcher.d.ts.map +0 -1
  293. package/dist/cmd/dev/file-watcher.js +0 -349
  294. package/dist/cmd/dev/file-watcher.js.map +0 -1
  295. package/dist/cmd/dev/process-manager.d.ts +0 -104
  296. package/dist/cmd/dev/process-manager.d.ts.map +0 -1
  297. package/dist/cmd/dev/process-manager.js +0 -204
  298. package/dist/cmd/dev/process-manager.js.map +0 -1
  299. package/dist/cmd/dev/sync.d.ts +0 -12
  300. package/dist/cmd/dev/sync.d.ts.map +0 -1
  301. package/dist/cmd/dev/sync.js +0 -227
  302. package/dist/cmd/dev/sync.js.map +0 -1
  303. package/dist/cmd/dev/templates.d.ts +0 -3
  304. package/dist/cmd/dev/templates.d.ts.map +0 -1
  305. package/dist/cmd/dev/templates.js +0 -58
  306. package/dist/cmd/dev/templates.js.map +0 -1
  307. package/dist/cmd/project/download.d.ts +0 -35
  308. package/dist/cmd/project/download.d.ts.map +0 -1
  309. package/dist/cmd/project/download.js +0 -403
  310. package/dist/cmd/project/download.js.map +0 -1
  311. package/dist/cmd/project/templates.d.ts +0 -9
  312. package/dist/cmd/project/templates.d.ts.map +0 -1
  313. package/dist/cmd/project/templates.js +0 -34
  314. package/dist/cmd/project/templates.js.map +0 -1
  315. package/src/agents-docs.ts +0 -86
  316. package/src/cmd/ai/prompt/agent.md +0 -305
  317. package/src/cmd/ai/prompt/agent.ts +0 -31
  318. package/src/cmd/build/app-router-detector.ts +0 -320
  319. package/src/cmd/build/format-schema.ts +0 -66
  320. package/src/cmd/build/vite/agent-discovery.ts +0 -380
  321. package/src/cmd/build/vite/beacon-plugin.ts +0 -164
  322. package/src/cmd/build/vite/browser-env-plugin.ts +0 -34
  323. package/src/cmd/build/vite/bun-dev-server.ts +0 -458
  324. package/src/cmd/build/vite/bundle-files.ts +0 -135
  325. package/src/cmd/build/vite/config-loader.ts +0 -76
  326. package/src/cmd/build/vite/db-rewrite.ts +0 -189
  327. package/src/cmd/build/vite/docs-generator.ts +0 -103
  328. package/src/cmd/build/vite/env-types-generator.ts +0 -145
  329. package/src/cmd/build/vite/index.ts +0 -3
  330. package/src/cmd/build/vite/lifecycle-generator.ts +0 -381
  331. package/src/cmd/build/vite/metadata-generator.ts +0 -713
  332. package/src/cmd/build/vite/prompt-generator.ts +0 -169
  333. package/src/cmd/build/vite/public-asset-path-plugin.ts +0 -209
  334. package/src/cmd/build/vite/route-discovery.ts +0 -271
  335. package/src/cmd/build/vite/server-bundler.ts +0 -481
  336. package/src/cmd/build/vite/static-renderer.ts +0 -239
  337. package/src/cmd/build/vite/tailwind-source-plugin.ts +0 -73
  338. package/src/cmd/build/vite/vite-asset-server-config.ts +0 -349
  339. package/src/cmd/build/vite/vite-asset-server.ts +0 -154
  340. package/src/cmd/build/vite/vite-builder.ts +0 -503
  341. package/src/cmd/build/vite/workbench-generator.ts +0 -152
  342. package/src/cmd/build/vite/ws-proxy.ts +0 -126
  343. package/src/cmd/build/vite-bundler.ts +0 -137
  344. package/src/cmd/dev/agents.ts +0 -140
  345. package/src/cmd/dev/api.ts +0 -65
  346. package/src/cmd/dev/dev-lock.ts +0 -332
  347. package/src/cmd/dev/download.ts +0 -117
  348. package/src/cmd/dev/file-watcher.ts +0 -423
  349. package/src/cmd/dev/process-manager.ts +0 -261
  350. package/src/cmd/dev/sync.ts +0 -411
  351. package/src/cmd/dev/templates.ts +0 -66
  352. package/src/cmd/project/download.ts +0 -505
  353. package/src/cmd/project/templates.ts +0 -56
@@ -514,67 +514,42 @@ export function printIntegrationExamples(): void {
514
514
  tui.newline();
515
515
 
516
516
  console.log(tui.muted('━'.repeat(60)));
517
- console.log(tui.bold(' 1. Set up your API routes (e.g., src/api/index.ts):'));
517
+ console.log(tui.bold(' 1. Set up your API routes:'));
518
518
  console.log(tui.muted('━'.repeat(60)));
519
519
  console.log(`
520
- import { createRouter } from '@agentuity/runtime';
520
+ import { Hono } from 'hono';
521
521
  import { mountAuthRoutes } from '@agentuity/auth';
522
- import { auth, authMiddleware } from '../auth';
522
+ import { auth, authMiddleware } from './auth';
523
523
 
524
- const api = createRouter();
524
+ const app = new Hono();
525
525
 
526
526
  // Mount auth routes (sign-in, sign-up, sign-out, session, etc.)
527
- // Must match the basePath configured in createAuth (default: /api/auth)
528
- api.on(['GET', 'POST'], '/api/auth/*', mountAuthRoutes(auth));
527
+ app.on(['GET', 'POST'], '/api/auth/*', mountAuthRoutes(auth));
529
528
 
530
529
  // Protect your API routes with auth middleware
531
- api.use('/api/*', authMiddleware);
530
+ app.use('/api/*', authMiddleware);
532
531
 
533
- api.get('/api/me', async (c) => {
532
+ app.get('/api/me', async (c) => {
534
533
  const user = await c.var.auth.getUser();
535
534
  return c.json({ id: user.id, email: user.email });
536
535
  });
537
536
 
538
- export default api;
537
+ export default app;
539
538
  `);
540
539
 
541
540
  console.log(tui.muted('━'.repeat(60)));
542
- console.log(tui.bold(' 2. Wrap your React app with AuthProvider:'));
541
+ console.log(tui.bold(' 2. Use the auth client in your frontend:'));
543
542
  console.log(tui.muted('━'.repeat(60)));
544
543
  console.log(`
545
- import { AgentuityProvider } from '@agentuity/react';
546
- import { createAuthClient, AuthProvider } from '@agentuity/auth/react';
544
+ import { createAuthClient } from '@agentuity/auth/client';
547
545
 
548
546
  const authClient = createAuthClient();
549
547
 
550
- function App() {
551
- return (
552
- <AgentuityProvider>
553
- <AuthProvider authClient={authClient}>
554
- {/* your app */}
555
- </AuthProvider>
556
- </AgentuityProvider>
557
- );
558
- }
559
- `);
548
+ // Sign in
549
+ await authClient.signIn.email({ email, password });
560
550
 
561
- console.log(tui.muted('━'.repeat(60)));
562
- console.log(tui.bold(' 3. Access auth in agents via ctx.auth:'));
563
- console.log(tui.muted('━'.repeat(60)));
564
- console.log(`
565
- import { createAgent } from '@agentuity/runtime';
566
-
567
- export default createAgent('my-agent', {
568
- schema: { input: s.object({ name: s.string() }), output: s.string() },
569
- handler: async (ctx, input) => {
570
- // ctx.auth is available when using auth middleware
571
- if (ctx.auth) {
572
- const user = await ctx.auth.getUser();
573
- return \`Hello, \${user.email}!\`;
574
- }
575
- return 'Hello, anonymous!';
576
- },
577
- });
551
+ // Get session
552
+ const session = await authClient.getSession();
578
553
  `);
579
554
 
580
555
  tui.newline();
@@ -11,7 +11,7 @@ const ProjectCreateResponseSchema = z.object({
11
11
  path: z.string().describe('Project directory path'),
12
12
  projectId: z.string().optional().describe('Project ID if registered'),
13
13
  orgId: z.string().optional().describe('Organization ID if registered'),
14
- template: z.string().describe('Template used'),
14
+ framework: z.string().describe('Framework used'),
15
15
  installed: z.boolean().describe('Whether dependencies were installed'),
16
16
  built: z.boolean().describe('Whether the project was built'),
17
17
  domains: z.array(z.string()).optional().describe('Array of custom domains'),
@@ -29,33 +29,30 @@ export const createProjectSubcommand = createSubcommand({
29
29
  examples: [
30
30
  { command: getCommand('project create'), description: 'Create new project' },
31
31
  {
32
- command: getCommand('project create --name my-ai-agent'),
33
- description: 'Create new project',
32
+ command: getCommand('project create --name my-ai-app'),
33
+ description: 'Create named project',
34
34
  },
35
35
  {
36
- command: getCommand('project create --name customer-service-bot --dir ~/projects/agent'),
37
- description: 'Create new project',
36
+ command: getCommand('project create --name my-app --framework nextjs'),
37
+ description: 'Create with Next.js',
38
38
  },
39
39
  {
40
- command: getCommand('project create --template basic --no-install'),
41
- description: 'Use no install option',
40
+ command: getCommand('project create --framework hono --no-install'),
41
+ description: 'Scaffold without installing',
42
42
  },
43
- { command: getCommand('project new --no-register'), description: 'Use no register option' },
43
+ { command: getCommand('project new --no-register'), description: 'Skip cloud registration' },
44
44
  ],
45
45
  schema: {
46
46
  options: z.object({
47
47
  name: z.string().optional().describe('Project name'),
48
48
  dir: z.string().optional().describe('Directory to create the project in'),
49
49
  domains: z.array(z.string()).optional().describe('Array of custom domains'),
50
- template: z.string().optional().describe('Template to use'),
51
- templateDir: z
50
+ framework: z
52
51
  .string()
53
52
  .optional()
54
- .describe('Local template directory for testing (e.g., ./packages/templates)'),
55
- templateBranch: z
56
- .string()
57
- .optional()
58
- .describe('GitHub branch to use for templates (default: main)'),
53
+ .describe(
54
+ 'Framework to use (e.g., nextjs, astro, sveltekit, remix, nuxt, hono, vite-react)'
55
+ ),
59
56
  install: z
60
57
  .boolean()
61
58
  .optional()
@@ -101,9 +98,7 @@ export const createProjectSubcommand = createSubcommand({
101
98
  projectName: opts.name,
102
99
  dir: opts.dir,
103
100
  domains: opts.domains,
104
- template: opts.template,
105
- templateDir: opts.templateDir,
106
- templateBranch: opts.templateBranch,
101
+ framework: opts.framework,
107
102
  noInstall: opts.install === false,
108
103
  noBuild: opts.build === false,
109
104
  skipPrompts: opts.confirm === true,
@@ -130,7 +125,7 @@ export const createProjectSubcommand = createSubcommand({
130
125
  path: result.path,
131
126
  projectId: result.projectId,
132
127
  orgId: result.orgId,
133
- template: result.template,
128
+ framework: result.framework,
134
129
  installed: result.installed,
135
130
  built: result.built,
136
131
  domains: result.domains,
@@ -0,0 +1,166 @@
1
+ /**
2
+ * AI SDK example generators for each framework.
3
+ *
4
+ * Each function returns a map of relative file paths to file contents
5
+ * that demonstrate a simple AI chat endpoint using the Vercel AI SDK
6
+ * with the Agentuity AI Gateway.
7
+ */
8
+
9
+ export function nextjsAiExample(): Record<string, string> {
10
+ return {
11
+ 'app/api/chat/route.ts': `import { generateText } from 'ai';
12
+ import { openai } from '@ai-sdk/openai';
13
+ import { NextResponse } from 'next/server';
14
+
15
+ export async function POST(request: Request) {
16
+ \tconst { message } = await request.json();
17
+
18
+ \tconst { text } = await generateText({
19
+ \t\tmodel: openai('gpt-4o-mini'),
20
+ \t\tprompt: message,
21
+ \t});
22
+
23
+ \treturn NextResponse.json({ reply: text });
24
+ }
25
+ `,
26
+ };
27
+ }
28
+
29
+ export function nuxtAiExample(): Record<string, string> {
30
+ return {
31
+ 'server/api/chat.post.ts': `import { generateText } from 'ai';
32
+ import { openai } from '@ai-sdk/openai';
33
+
34
+ export default defineEventHandler(async (event) => {
35
+ \tconst { message } = await readBody(event);
36
+
37
+ \tconst { text } = await generateText({
38
+ \t\tmodel: openai('gpt-4o-mini'),
39
+ \t\tprompt: message,
40
+ \t});
41
+
42
+ \treturn { reply: text };
43
+ });
44
+ `,
45
+ };
46
+ }
47
+
48
+ export function remixAiExample(): Record<string, string> {
49
+ return {
50
+ 'app/routes/api.chat.ts': `import { type ActionFunctionArgs, json } from '@remix-run/node';
51
+ import { generateText } from 'ai';
52
+ import { openai } from '@ai-sdk/openai';
53
+
54
+ export async function action({ request }: ActionFunctionArgs) {
55
+ \tconst { message } = await request.json();
56
+
57
+ \tconst { text } = await generateText({
58
+ \t\tmodel: openai('gpt-4o-mini'),
59
+ \t\tprompt: message,
60
+ \t});
61
+
62
+ \treturn json({ reply: text });
63
+ }
64
+ `,
65
+ };
66
+ }
67
+
68
+ export function sveltekitAiExample(): Record<string, string> {
69
+ return {
70
+ 'src/routes/api/chat/+server.ts': `import { json } from '@sveltejs/kit';
71
+ import type { RequestHandler } from './$types';
72
+ import { generateText } from 'ai';
73
+ import { openai } from '@ai-sdk/openai';
74
+
75
+ export const POST: RequestHandler = async ({ request }) => {
76
+ \tconst { message } = await request.json();
77
+
78
+ \tconst { text } = await generateText({
79
+ \t\tmodel: openai('gpt-4o-mini'),
80
+ \t\tprompt: message,
81
+ \t});
82
+
83
+ \treturn json({ reply: text });
84
+ };
85
+ `,
86
+ };
87
+ }
88
+
89
+ export function astroAiExample(): Record<string, string> {
90
+ return {
91
+ 'src/pages/api/chat.ts': `import type { APIRoute } from 'astro';
92
+ import { generateText } from 'ai';
93
+ import { openai } from '@ai-sdk/openai';
94
+
95
+ export const POST: APIRoute = async ({ request }) => {
96
+ \tconst { message } = await request.json();
97
+
98
+ \tconst { text } = await generateText({
99
+ \t\tmodel: openai('gpt-4o-mini'),
100
+ \t\tprompt: message,
101
+ \t});
102
+
103
+ \treturn new Response(
104
+ \t\tJSON.stringify({ reply: text }),
105
+ \t\t{ headers: { 'Content-Type': 'application/json' } }
106
+ \t);
107
+ };
108
+ `,
109
+ };
110
+ }
111
+
112
+ export function honoAiExample(): Record<string, string> {
113
+ return {
114
+ 'src/index.ts': `import { Hono } from 'hono';
115
+ import { generateText } from 'ai';
116
+ import { openai } from '@ai-sdk/openai';
117
+
118
+ const app = new Hono();
119
+
120
+ app.get('/', (c) => c.text('Hello from Hono + Agentuity!'));
121
+
122
+ app.post('/api/chat', async (c) => {
123
+ \tconst { message } = await c.req.json();
124
+
125
+ \tconst { text } = await generateText({
126
+ \t\tmodel: openai('gpt-4o-mini'),
127
+ \t\tprompt: message,
128
+ \t});
129
+
130
+ \treturn c.json({ reply: text });
131
+ });
132
+
133
+ export default app;
134
+ `,
135
+ };
136
+ }
137
+
138
+ export function viteReactAiExample(): Record<string, string> {
139
+ return {
140
+ 'server.ts': `import { generateText } from 'ai';
141
+ import { openai } from '@ai-sdk/openai';
142
+
143
+ Bun.serve({
144
+ \tport: process.env.PORT ?? 3000,
145
+ \tasync fetch(request) {
146
+ \t\tconst url = new URL(request.url);
147
+
148
+ \t\tif (url.pathname === '/api/chat' && request.method === 'POST') {
149
+ \t\t\tconst { message } = await request.json();
150
+
151
+ \t\t\tconst { text } = await generateText({
152
+ \t\t\t\tmodel: openai('gpt-4o-mini'),
153
+ \t\t\t\tprompt: message,
154
+ \t\t\t});
155
+
156
+ \t\t\treturn Response.json({ reply: text });
157
+ \t\t}
158
+
159
+ \t\treturn new Response('Not Found', { status: 404 });
160
+ \t},
161
+ });
162
+
163
+ console.log('Server running on http://localhost:' + (process.env.PORT ?? 3000));
164
+ `,
165
+ };
166
+ }
@@ -0,0 +1,267 @@
1
+ /**
2
+ * Agentuity-branded landing page generators for each framework.
3
+ *
4
+ * Each function returns a map of relative file paths to file contents
5
+ * that replace the framework's default landing page with a dark-themed
6
+ * Agentuity welcome page matching the brand design system.
7
+ *
8
+ * Design: dark background (#09090b), cyan accent (#00FFFF), Agentuity
9
+ * logo, "Welcome to Agentuity" heading, and framework-specific next steps.
10
+ */
11
+
12
+ // ─── Shared ──────────────────────────────────────────────────────────────────
13
+
14
+ const AGENTUITY_LOGO_SVG = `<svg xmlns="http://www.w3.org/2000/svg" width="48" height="42" viewBox="0 0 220 191" fill="none">
15
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M220 191H0L31.427 136.5H0L8 122.5H180.5L220 191ZM47.588 136.5L24.234 177H195.766L172.412 136.5H47.588Z" fill="#00FFFF"/>
16
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M110 0L157.448 82.5H189L197 96.5H54.5L110 0ZM78.702 82.5L110 28.081L141.298 82.5H78.702Z" fill="#00FFFF"/>
17
+ </svg>`;
18
+
19
+ const SHARED_STYLES = `
20
+ <style>
21
+ * { margin: 0; padding: 0; box-sizing: border-box; }
22
+ body { background: #09090b; color: #a1a1aa; font-family: system-ui, -apple-system, sans-serif; min-height: 100vh; display: flex; justify-content: center; }
23
+ .wrap { max-width: 48rem; width: 100%; padding: 4rem; display: flex; flex-direction: column; gap: 1rem; }
24
+ .header { text-align: center; margin-bottom: 2rem; }
25
+ .header svg { margin-bottom: 1rem; }
26
+ .header h1 { font-size: 3rem; font-weight: 100; color: #fff; }
27
+ .header p { font-size: 1.125rem; color: #71717a; }
28
+ .header em { font-style: italic; font-family: Georgia, serif; }
29
+ .card { background: #000; border: 1px solid #1c1c1e; border-radius: 0.5rem; padding: 2rem; }
30
+ .card h3 { color: #fff; font-size: 1.25rem; font-weight: 400; margin-bottom: 1.5rem; }
31
+ .step { display: flex; gap: 0.75rem; align-items: flex-start; margin-bottom: 1.25rem; }
32
+ .step:last-child { margin-bottom: 0; }
33
+ .check { width: 1rem; height: 1rem; border: 1px solid #22c55e; background: #052e16; border-radius: 0.25rem; display: flex; align-items: center; justify-content: center; flex-shrink: 0; margin-top: 0.1rem; }
34
+ .check svg { width: 0.625rem; height: 0.625rem; }
35
+ .step h4 { color: #fff; font-size: 0.875rem; font-weight: 400; margin-bottom: 0.25rem; }
36
+ .step p { font-size: 0.75rem; }
37
+ code { color: #fff; background: #1c1c1e; padding: 0.125rem 0.375rem; border-radius: 0.25rem; font-size: 0.75rem; }
38
+ a.badge { position: fixed; bottom: 1rem; right: 1rem; display: flex; align-items: center; gap: 0.5rem; padding: 0.5rem 0.75rem; background: #09090b; border: 1px solid #27272a; border-radius: 0.5rem; color: #a1a1aa; font-size: 0.75rem; text-decoration: none; transition: border-color 0.2s; z-index: 50; }
39
+ a.badge:hover { border-color: #00FFFF; }
40
+ a.badge svg { width: 16px; height: 14px; }
41
+ </style>`;
42
+
43
+ const CHECK_SVG =
44
+ '<svg fill="none" stroke="#22c55e" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg>';
45
+
46
+ const BADGE_SVG =
47
+ '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 220 191" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M220 191H0L31.427 136.5H0L8 122.5H180.5L220 191ZM47.588 136.5L24.234 177H195.766L172.412 136.5H47.588Z" fill="#00FFFF"/><path fill-rule="evenodd" clip-rule="evenodd" d="M110 0L157.448 82.5H189L197 96.5H54.5L110 0ZM78.702 82.5L110 28.081L141.298 82.5H78.702Z" fill="#00FFFF"/></svg>';
48
+
49
+ function buildPage(frameworkLabel: string, steps: { title: string; text: string }[]): string {
50
+ const stepsHtml = steps
51
+ .map(
52
+ (s) => `
53
+ <div class="step">
54
+ <div class="check">${CHECK_SVG}</div>
55
+ <div><h4>${s.title}</h4><p>${s.text}</p></div>
56
+ </div>`
57
+ )
58
+ .join('');
59
+
60
+ return `<!DOCTYPE html>
61
+ <html lang="en">
62
+ <head>
63
+ <meta charset="utf-8"/>
64
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
65
+ <title>Agentuity + ${frameworkLabel}</title>
66
+ ${SHARED_STYLES}
67
+ </head>
68
+ <body>
69
+ <div class="wrap">
70
+ <div class="header">
71
+ ${AGENTUITY_LOGO_SVG}
72
+ <h1>Welcome to Agentuity</h1>
73
+ <p><em>${frameworkLabel}</em> + AI Gateway</p>
74
+ </div>
75
+ <div class="card">
76
+ <h3>Getting started</h3>
77
+ ${stepsHtml}
78
+ </div>
79
+ </div>
80
+ <a class="badge" href="https://agentuity.dev/" target="_blank" rel="noopener noreferrer">${BADGE_SVG} Powered by Agentuity</a>
81
+ </body>
82
+ </html>`;
83
+ }
84
+
85
+ // ─── Framework-specific Landing Pages ────────────────────────────────────────
86
+
87
+ export function nextjsLandingPage(): Record<string, string> {
88
+ return {
89
+ 'src/app/page.tsx': `export default function Home() {
90
+ return (
91
+ <div
92
+ style={{ background: '#09090b', color: '#a1a1aa', fontFamily: 'system-ui, -apple-system, sans-serif', minHeight: '100vh', display: 'flex', justifyContent: 'center' }}
93
+ dangerouslySetInnerHTML={{
94
+ __html: \`${buildReactInnerHtml('Next.js', [
95
+ {
96
+ title: 'AI Gateway',
97
+ text: 'Run <code>agentuity dev</code> to start with AI Gateway routing.',
98
+ },
99
+ {
100
+ title: 'API route',
101
+ text: 'Edit <code>app/api/chat/route.ts</code> to customize the AI endpoint.',
102
+ },
103
+ {
104
+ title: 'Deploy',
105
+ text: 'Run <code>agentuity deploy</code> to ship to production.',
106
+ },
107
+ ])}\`
108
+ }}
109
+ />
110
+ );
111
+ }
112
+ `,
113
+ 'src/app/globals.css': `body { margin: 0; }
114
+ `,
115
+ };
116
+ }
117
+
118
+ export function nuxtLandingPage(): Record<string, string> {
119
+ return {
120
+ 'app.vue': `<template>
121
+ <div v-html="html" />
122
+ </template>
123
+
124
+ <script setup lang="ts">
125
+ const html = \`${buildPage('Nuxt', [
126
+ {
127
+ title: 'AI Gateway',
128
+ text: 'Run <code>agentuity dev</code> to start with AI Gateway routing.',
129
+ },
130
+ {
131
+ title: 'Server route',
132
+ text: 'Edit <code>server/api/chat.post.ts</code> to customize the AI endpoint.',
133
+ },
134
+ { title: 'Deploy', text: 'Run <code>agentuity deploy</code> to ship to production.' },
135
+ ])}\`;
136
+ </script>
137
+ `,
138
+ };
139
+ }
140
+
141
+ export function remixLandingPage(): Record<string, string> {
142
+ return {
143
+ 'app/routes/_index.tsx': `export default function Index() {
144
+ return (
145
+ <div
146
+ style={{ background: '#09090b', color: '#a1a1aa', fontFamily: 'system-ui, -apple-system, sans-serif', minHeight: '100vh', display: 'flex', justifyContent: 'center' }}
147
+ dangerouslySetInnerHTML={{
148
+ __html: \`${buildReactInnerHtml('Remix', [
149
+ {
150
+ title: 'AI Gateway',
151
+ text: 'Run <code>agentuity dev</code> to start with AI Gateway routing.',
152
+ },
153
+ {
154
+ title: 'Action route',
155
+ text: 'Edit <code>app/routes/api.chat.ts</code> to customize the AI endpoint.',
156
+ },
157
+ {
158
+ title: 'Deploy',
159
+ text: 'Run <code>agentuity deploy</code> to ship to production.',
160
+ },
161
+ ])}\`
162
+ }}
163
+ />
164
+ );
165
+ }
166
+ `,
167
+ };
168
+ }
169
+
170
+ export function sveltekitLandingPage(): Record<string, string> {
171
+ return {
172
+ 'src/routes/+page.svelte': `{@html \`${buildPage('SvelteKit', [
173
+ {
174
+ title: 'AI Gateway',
175
+ text: 'Run <code>agentuity dev</code> to start with AI Gateway routing.',
176
+ },
177
+ {
178
+ title: 'Server route',
179
+ text: 'Edit <code>src/routes/api/chat/+server.ts</code> to customize the AI endpoint.',
180
+ },
181
+ { title: 'Deploy', text: 'Run <code>agentuity deploy</code> to ship to production.' },
182
+ ])}\`}
183
+ `,
184
+ };
185
+ }
186
+
187
+ export function astroLandingPage(): Record<string, string> {
188
+ return {
189
+ 'src/pages/index.astro': `---
190
+ ---
191
+ ${buildPage('Astro', [
192
+ {
193
+ title: 'AI Gateway',
194
+ text: 'Run <code>agentuity dev</code> to start with AI Gateway routing.',
195
+ },
196
+ {
197
+ title: 'API route',
198
+ text: 'Edit <code>src/pages/api/chat.ts</code> to customize the AI endpoint.',
199
+ },
200
+ { title: 'Deploy', text: 'Run <code>agentuity deploy</code> to ship to production.' },
201
+ ])}
202
+ `,
203
+ };
204
+ }
205
+
206
+ export function viteReactLandingPage(): Record<string, string> {
207
+ return {
208
+ 'src/App.tsx': `export default function App() {
209
+ return (
210
+ <div
211
+ style={{ background: '#09090b', color: '#a1a1aa', fontFamily: 'system-ui, -apple-system, sans-serif', minHeight: '100vh', display: 'flex', justifyContent: 'center' }}
212
+ dangerouslySetInnerHTML={{
213
+ __html: \`${buildReactInnerHtml('Vite + React', [
214
+ {
215
+ title: 'AI Gateway',
216
+ text: 'Run <code>agentuity dev</code> to start with AI Gateway routing.',
217
+ },
218
+ {
219
+ title: 'Server',
220
+ text: 'Edit <code>server.ts</code> to customize the AI endpoint.',
221
+ },
222
+ {
223
+ title: 'Deploy',
224
+ text: 'Run <code>agentuity deploy</code> to ship to production.',
225
+ },
226
+ ])}\`
227
+ }}
228
+ />
229
+ );
230
+ }
231
+ `,
232
+ 'src/index.css': `body { margin: 0; }
233
+ `,
234
+ };
235
+ }
236
+
237
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
238
+
239
+ /** Build inner HTML for React's dangerouslySetInnerHTML (no <html>/<body> wrapper) */
240
+ function buildReactInnerHtml(
241
+ frameworkLabel: string,
242
+ steps: { title: string; text: string }[]
243
+ ): string {
244
+ const stepsHtml = steps
245
+ .map(
246
+ (s) => `
247
+ <div class="step">
248
+ <div class="check">${CHECK_SVG}</div>
249
+ <div><h4>${s.title}</h4><p>${s.text}</p></div>
250
+ </div>`
251
+ )
252
+ .join('');
253
+
254
+ return `${SHARED_STYLES}
255
+ <div class="wrap">
256
+ <div class="header">
257
+ ${AGENTUITY_LOGO_SVG}
258
+ <h1>Welcome to Agentuity</h1>
259
+ <p><em>${frameworkLabel}</em> + AI Gateway</p>
260
+ </div>
261
+ <div class="card">
262
+ <h3>Getting started</h3>
263
+ ${stepsHtml}
264
+ </div>
265
+ </div>
266
+ <a class="badge" href="https://agentuity.dev/" target="_blank" rel="noopener noreferrer">${BADGE_SVG} Powered by Agentuity</a>`;
267
+ }