void 0.20.2 → 0.21.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 (310) hide show
  1. package/README.md +2 -2
  2. package/dist/agents-gni4eqBu.mjs +111 -0
  3. package/dist/auth-3sGB0zJ1.mjs +22 -0
  4. package/dist/{auth-DPl6kck4.mjs → auth-B9_D6ygs.mjs} +6 -241
  5. package/dist/auth-CAw7zHqj.mjs +2 -0
  6. package/dist/auth-client-BWBT8HLp.mjs +6 -0
  7. package/dist/auth-client-Bawdj38n.d.mts +7 -0
  8. package/dist/auth-client-react-7GFffu8R.d.mts +7 -0
  9. package/dist/auth-client-react-CMLwT2xI.mjs +6 -0
  10. package/dist/auth-client-solid-DyTFL4cq.d.mts +7 -0
  11. package/dist/auth-client-solid-UoreJWZG.mjs +6 -0
  12. package/dist/auth-client-svelte-Cv_WvrRk.mjs +6 -0
  13. package/dist/auth-client-svelte-zetW0KIH.d.mts +7 -0
  14. package/dist/auth-client-vue-CFk7Xbv3.mjs +6 -0
  15. package/dist/auth-client-vue-bChShbQP.d.mts +7 -0
  16. package/dist/{auth-cmd-gniL2fNt.mjs → auth-cmd-MkBG2u1f.mjs} +5 -5
  17. package/dist/{auth-link-NZdjCmSc.mjs → auth-link-Devmv96E.mjs} +5 -5
  18. package/dist/{better-auth-shared-DSCeohOK.d.mts → better-auth-shared-BoVwA5Vm.d.mts} +1 -6
  19. package/dist/{better-auth-shared-CYw1T3k4.mjs → better-auth-shared-syGYYmnY.mjs} +1 -1
  20. package/dist/{build-cmd-sI18tX_O.mjs → build-cmd-DsBGwtfs.mjs} +6 -4
  21. package/dist/{cache-IHn5MwBC.mjs → cache-BMw8eMyF.mjs} +6 -4
  22. package/dist/{cancel-deploy-C5qTOdLi.mjs → cancel-deploy-B3_s9NIN.mjs} +5 -3
  23. package/dist/cf-access-rAZxzMkL.mjs +181 -0
  24. package/dist/cf-build-output-CTdlo6Rt.mjs +520 -0
  25. package/dist/cli/cf-compat.d.mts +1 -0
  26. package/dist/cli/cf-compat.mjs +934 -0
  27. package/dist/cli/cli.mjs +61 -38
  28. package/dist/cli/env-schema-probe.mjs +3 -3
  29. package/dist/client-DAAivdid.mjs +2 -0
  30. package/dist/{client-dHfSJvAN.mjs → client-PdAJ-F0t.mjs} +148 -89
  31. package/dist/{cloudflare-auth-6M5llVPC.mjs → cloudflare-auth-BCmTc1X_.mjs} +13 -44
  32. package/dist/{cloudflare-cmd-4RPGN3KB.mjs → cloudflare-cmd-D6PrKn7o.mjs} +4 -7
  33. package/dist/{cloudflare-connect-t1UU5svD.mjs → cloudflare-connect-DloREDlc.mjs} +6 -6
  34. package/dist/cloudflare-operations-BHNJVDbN.mjs +2 -0
  35. package/dist/{cloudflare-operations-BzWnlC1_.mjs → cloudflare-operations-CPEdHYhM.mjs} +37 -39
  36. package/dist/cloudflare-user-output-Q-k0QoNQ.mjs +20 -0
  37. package/dist/collect-DAUItMDS.mjs +2 -0
  38. package/dist/collect-DXHNWHcT.mjs +48 -0
  39. package/dist/config--T87TD8T.mjs +2 -0
  40. package/dist/{config-NOG_U1aK.mjs → config-BSe70f4T.mjs} +4 -6
  41. package/dist/config-DDIFxQYx.mjs +2 -0
  42. package/dist/{config-uNGuFsI2.mjs → config-Dxr6cTXn.mjs} +22 -37
  43. package/dist/config-DywxBLQC.d.mts +185 -0
  44. package/dist/config-entry.d.mts +6 -0
  45. package/dist/config-entry.mjs +7 -0
  46. package/dist/config-uP7ZDtVZ.mjs +21 -0
  47. package/dist/config-write-y3CBI_ux.mjs +60 -0
  48. package/dist/{connect-Bfk31O_8.mjs → connect-BvC9kolB.mjs} +8 -6
  49. package/dist/{create-project-Bk9Z0-Jg.mjs → create-project-C9lQhRzj.mjs} +9 -25
  50. package/dist/create-project-CI-17RVJ.mjs +2 -0
  51. package/dist/database-provider-Cx525bwX.mjs +6 -0
  52. package/dist/database-provider.mjs +1 -5
  53. package/dist/{db-BkRoptAt.mjs → db-R7IQgOv5.mjs} +48 -44
  54. package/dist/{delete-DouASY9P.mjs → delete-CghI_NXn.mjs} +6 -4
  55. package/dist/deploy-CYPymbtG.mjs +2 -0
  56. package/dist/{deploy-DTaWUS1S.mjs → deploy-H968Lo4T.mjs} +765 -197
  57. package/dist/discover-BBzDZe_o.mjs +2 -0
  58. package/dist/{discover-xvfrgJeo.mjs → discover-C4O6YxVS.mjs} +3 -8
  59. package/dist/{dist-BrsS7cai.mjs → dist-4WkAWhWx.mjs} +1 -15
  60. package/dist/{dist-m40_XgNh.mjs → dist-Bn8Kodjp.mjs} +1 -1
  61. package/dist/dist-C5fND3R0.mjs +2 -0
  62. package/dist/dist-D7-nEOXi.mjs +2 -0
  63. package/dist/{output-B0cfNSx5.mjs → dist-Dn6nn2IU.mjs} +3 -926
  64. package/dist/{domain-1RhhOVrC.mjs → domain-CITt8lC-.mjs} +7 -5
  65. package/dist/{route-types-Da-DpyUp.mjs → drizzle-Beb2Am5S.mjs} +1 -280
  66. package/dist/{email-Ce6SQq-i.mjs → email-C5kaZXzJ.mjs} +2 -2
  67. package/dist/{email-C-lGh51B.mjs → email-_8VmyX7V.mjs} +14 -12
  68. package/dist/{entry-DU3oDoQ3.mjs → entry-DdRFGK0y.mjs} +2 -2
  69. package/dist/{env-DJHsPE7Z.mjs → env-DV4r3nHz.mjs} +9 -7
  70. package/dist/{env-DBKmK4vc.mjs → env-DX_v-Q-v.mjs} +1 -1
  71. package/dist/env-Yz4HcvHs.mjs +78 -0
  72. package/dist/env-helpers--wFmQ_5Q.mjs +136 -0
  73. package/dist/{env-types-BNPhro-M.mjs → env-types-CWDtqHgw.mjs} +6 -2
  74. package/dist/{env-validation-CF6KvTRf.mjs → env-validation-BsFEXps5.mjs} +19 -28
  75. package/dist/env-validation-DIDGM7h4.mjs +2 -0
  76. package/dist/fetch-CXDChK7B.mjs +18 -0
  77. package/dist/fetch-_SeGZao9.d.mts +57 -0
  78. package/dist/fetch-stream-AOByI7Ki.mjs +81 -0
  79. package/dist/fetch-stream-Bjf0hoZb.d.mts +49 -0
  80. package/dist/gen-BBiIZw6g.mjs +2 -0
  81. package/dist/{gen-B_wPnVTK.mjs → gen-CFOEEc-t.mjs} +13 -11
  82. package/dist/{generate-RTK8_kK1.mjs → generate-C0VY6RVf.mjs} +2 -2
  83. package/dist/{github-cmd-PW7ZnWTp.mjs → github-cmd-jYjha2LO.mjs} +18 -22
  84. package/dist/{handler-D1hLsObx.d.mts → handler-BXJTXd02.d.mts} +6 -1
  85. package/dist/handler-DghKr6dU.mjs +150 -0
  86. package/dist/head-D_QRR5Yd.mjs +112 -0
  87. package/dist/head-client-DzmJGN4C.mjs +90 -0
  88. package/dist/{headers-BAHwgHdW.mjs → headers-B_HBMgi0.mjs} +2 -2
  89. package/dist/{help-CwOX-zmI.mjs → help-C46mnlUS.mjs} +17 -12
  90. package/dist/help-CS_nAsWu.mjs +2 -0
  91. package/dist/index.d.mts +2 -20
  92. package/dist/index.mjs +116 -60
  93. package/dist/{init-BWZ7q5Z4.mjs → init-CSXmvxKu.mjs} +49 -50
  94. package/dist/{link-Rmvu2Wl_.mjs → link-DxMOALXk.mjs} +7 -5
  95. package/dist/{list-DEE2S6mY.mjs → list-0wQs0oYg.mjs} +7 -5
  96. package/dist/live-CB1y5IuC.mjs +411 -0
  97. package/dist/live-CKiJilLr.d.mts +105 -0
  98. package/dist/local-d1-DzykTWY8.mjs +104 -0
  99. package/dist/{login-Uvferzmm.mjs → login-CKk5NX4d.mjs} +6 -11
  100. package/dist/login-Ch9cgWRF.mjs +2 -0
  101. package/dist/{logs-27FenuiC.mjs → logs-hxWBSoej.mjs} +6 -4
  102. package/dist/migrate-CLty4mZR.mjs +2 -0
  103. package/dist/migrate-DcW8F2W8.mjs +285 -0
  104. package/dist/migration-handler-DM4clYj5.d.mts +51 -0
  105. package/dist/{neon-DHwd2zvC.mjs → neon-n74ta1Pr.mjs} +1 -1
  106. package/dist/{node-Ez5KW5rn.mjs → node-Cupyf7-s.mjs} +6 -6
  107. package/dist/{operator-auth-B3e08unv.mjs → operator-auth-BkVgJqv-.mjs} +2 -2
  108. package/dist/{operator-client-LUZnlnYk.mjs → operator-client-A0iex2yi.mjs} +2 -1
  109. package/dist/{operator-cmd-CjOTmAYE.mjs → operator-cmd-BEUYhaHB.mjs} +6 -6
  110. package/dist/output-urU86XeT.mjs +146 -0
  111. package/dist/{package-json-CPoWX79C.mjs → package-json-iCbMg5XF.mjs} +1 -1
  112. package/dist/pages/client.d.mts +5 -2
  113. package/dist/pages/client.mjs +5 -3
  114. package/dist/pages/head-client.mjs +1 -89
  115. package/dist/pages/head.mjs +1 -111
  116. package/dist/pages/index.d.mts +2 -3
  117. package/dist/pages/index.mjs +7 -7
  118. package/dist/pages/islands-plugin.mjs +2 -2
  119. package/dist/pages/prefetch.d.mts +2 -30
  120. package/dist/pages/prefetch.mjs +1 -89
  121. package/dist/pages/protocol.d.mts +2 -2
  122. package/dist/pages/protocol.mjs +3 -3
  123. package/dist/pages/serialize.d.mts +2 -9
  124. package/dist/pages/serialize.mjs +1 -13
  125. package/dist/plan-BEZ8VJW0.mjs +256 -0
  126. package/dist/plan-DpuOr14e.mjs +2 -0
  127. package/dist/{platform-auth-config-DrbQXXiW.mjs → platform-auth-config-Df6yVw-e.mjs} +6 -6
  128. package/dist/{platform-auth-protection-Bhtvp0B_.mjs → platform-auth-protection-Jb0yftay.mjs} +7 -5
  129. package/dist/{platform-auth-recovery-CeOKGVeJ.mjs → platform-auth-recovery-DmRyIfW0.mjs} +6 -5
  130. package/dist/platform-cmd-C9Vt7m-d.mjs +2 -0
  131. package/dist/{platform-cmd-BFhieCdV.mjs → platform-cmd-DRxCOTwy.mjs} +8 -5
  132. package/dist/{platform-domain-C74PULqV.mjs → platform-domain-IjiXgrXJ.mjs} +4 -3
  133. package/dist/{platform-lifecycle-BwAIgz-t.mjs → platform-lifecycle-BquAaU-5.mjs} +263 -56
  134. package/dist/platform-lifecycle-CuJIZNvA.mjs +2 -0
  135. package/dist/{platform-management-COogu_Se.mjs → platform-management-CCQKGsq4.mjs} +12 -7
  136. package/dist/platform-management-Cgyed0WY.mjs +2 -0
  137. package/dist/{platform-recovery-ewqLefp1.mjs → platform-recovery-DS8ih1SW.mjs} +3 -3
  138. package/dist/platform-registry-BJbgZLS1.mjs +431 -0
  139. package/dist/{plugin-inference-BDRfZngg.mjs → plugin-inference-DsvtJLll.mjs} +4 -4
  140. package/dist/prefetch-Bsc_Pb6c.mjs +90 -0
  141. package/dist/prefetch-Ce6la4EI.d.mts +31 -0
  142. package/dist/{prepare-blNRQvQl.mjs → prepare-CaUxODOU.mjs} +3 -2
  143. package/dist/prepare-D4CkM3_v.mjs +2 -0
  144. package/dist/{prepare-CtDJjoOj.mjs → prepare-pcWcxSCh.mjs} +13 -11
  145. package/dist/prerender-render-Cf_WDE9W.mjs +111 -0
  146. package/dist/prerender-render.mjs +1 -110
  147. package/dist/{preset-lAy0B0BQ.mjs → preset-Dowh9tTt.mjs} +16 -118
  148. package/dist/project-BEBFDFLz.mjs +2 -0
  149. package/dist/project-CWNIPoXc.mjs +209 -0
  150. package/dist/{project-cmd-DmZK9Hxf.mjs → project-cmd-2lN--YAX.mjs} +18 -16
  151. package/dist/{project-paths-SK8nMHPp.mjs → project-paths-CKQ-Q5JS.mjs} +47 -14
  152. package/dist/project-slug-23TpquG4.mjs +8 -0
  153. package/dist/project-slug-DofjTFd-.mjs +2 -0
  154. package/dist/{project-team-D8jOJMUJ.mjs → project-team-Dapn9HZn.mjs} +9 -5
  155. package/dist/{project-token-DA34bf-C.mjs → project-token-C90v9SJK.mjs} +6 -4
  156. package/dist/{project-tsconfig-Ql2XsSQp.mjs → project-tsconfig-CwfqUnVp.mjs} +2 -2
  157. package/dist/{protocol-C-pqYJjE.d.mts → protocol-ZH3jP4a7.d.mts} +1 -1
  158. package/dist/providers-BNKRacMr.d.mts +7 -0
  159. package/dist/provision-CNgEBkVA.mjs +3 -0
  160. package/dist/{provision-CSJOjjQk.mjs → provision-Cck2m3jJ.mjs} +11 -25
  161. package/dist/queues-BWKt1Xo4.d.mts +7 -0
  162. package/dist/{requests-CUExwGQQ.mjs → requests-CzX46I0i.mjs} +5 -3
  163. package/dist/resolve-project-BTotl8Nn.mjs +2 -0
  164. package/dist/{resolve-project--Vxawf7z.mjs → resolve-project-Xvis70DG.mjs} +2 -8
  165. package/dist/response-Tn7rU0MV.mjs +30 -0
  166. package/dist/{rollback-CDNGU1gr.mjs → rollback-BEeyc73H.mjs} +6 -4
  167. package/dist/{rolldown-runtime-rQ84J-ij.mjs → rolldown-runtime-DXIUcv95.mjs} +1 -10
  168. package/dist/route-types-Id82-veQ.mjs +280 -0
  169. package/dist/{local-d1-D2I6Ox5F.mjs → runner-BGVsGgkb.mjs} +6 -114
  170. package/dist/runner-CQs_cDSG.mjs +2 -0
  171. package/dist/runner-mysql-1o47achK.mjs +2 -0
  172. package/dist/{runner-mysql-7BPUNGmL.mjs → runner-mysql-BhwMk2Bm.mjs} +2 -9
  173. package/dist/{runner-pg-BkEza-dX.mjs → runner-pg-CJ_JeGF6.mjs} +2 -9
  174. package/dist/runner-pg-D7z01mQS.mjs +2 -0
  175. package/dist/runtime/ai.mjs +1 -1
  176. package/dist/runtime/auth-client-react.d.mts +2 -6
  177. package/dist/runtime/auth-client-react.mjs +1 -5
  178. package/dist/runtime/auth-client-solid.d.mts +2 -6
  179. package/dist/runtime/auth-client-solid.mjs +1 -5
  180. package/dist/runtime/auth-client-svelte.d.mts +2 -6
  181. package/dist/runtime/auth-client-svelte.mjs +1 -5
  182. package/dist/runtime/auth-client-vue.d.mts +2 -6
  183. package/dist/runtime/auth-client-vue.mjs +1 -5
  184. package/dist/runtime/auth-client.d.mts +2 -6
  185. package/dist/runtime/auth-client.mjs +1 -5
  186. package/dist/runtime/auth.mjs +1 -21
  187. package/dist/runtime/better-auth-mysql.d.mts +1 -1
  188. package/dist/runtime/better-auth-mysql.mjs +1 -1
  189. package/dist/runtime/better-auth-pg.d.mts +1 -1
  190. package/dist/runtime/better-auth-pg.mjs +1 -1
  191. package/dist/runtime/better-auth.d.mts +1 -1
  192. package/dist/runtime/better-auth.mjs +1 -1
  193. package/dist/runtime/client-react.d.mts +3 -3
  194. package/dist/runtime/client-react.mjs +3 -3
  195. package/dist/runtime/client-solid.d.mts +3 -3
  196. package/dist/runtime/client-solid.mjs +3 -3
  197. package/dist/runtime/client-svelte.d.mts +3 -3
  198. package/dist/runtime/client-svelte.mjs +3 -3
  199. package/dist/runtime/client-vue.d.mts +3 -3
  200. package/dist/runtime/client-vue.mjs +3 -3
  201. package/dist/runtime/client.d.mts +3 -3
  202. package/dist/runtime/client.mjs +3 -3
  203. package/dist/runtime/db.mjs +1 -1
  204. package/dist/runtime/durable.mjs +1 -1
  205. package/dist/runtime/email/testing.mjs +1 -1
  206. package/dist/runtime/env-helpers.mjs +1 -135
  207. package/dist/runtime/env-public-client.mjs +1 -1
  208. package/dist/runtime/env-public.mjs +2 -2
  209. package/dist/runtime/env.mjs +1 -77
  210. package/dist/runtime/fetch-stream.d.mts +2 -49
  211. package/dist/runtime/fetch-stream.mjs +2 -80
  212. package/dist/runtime/fetch.d.mts +2 -57
  213. package/dist/runtime/fetch.mjs +2 -17
  214. package/dist/runtime/handler.d.mts +1 -1
  215. package/dist/runtime/handler.mjs +1 -149
  216. package/dist/runtime/kv.mjs +1 -1
  217. package/dist/runtime/live-client.d.mts +1 -1
  218. package/dist/runtime/live-server.mjs +2 -2
  219. package/dist/runtime/live.d.mts +2 -104
  220. package/dist/runtime/live.mjs +1 -410
  221. package/dist/runtime/migration-handler-mysql.d.mts +1 -1
  222. package/dist/runtime/migration-handler-pg.d.mts +1 -1
  223. package/dist/runtime/migration-handler.d.mts +2 -50
  224. package/dist/runtime/queues.d.mts +2 -6
  225. package/dist/runtime/queues.mjs +1 -1
  226. package/dist/runtime/remote/index.mjs +49 -8
  227. package/dist/runtime/response.mjs +1 -29
  228. package/dist/runtime/sandbox.d.mts +4 -56
  229. package/dist/runtime/sandbox.mjs +82 -221
  230. package/dist/runtime/sse.mjs +1 -171
  231. package/dist/runtime/storage.mjs +1 -1
  232. package/dist/runtime/validator.d.mts +1 -1
  233. package/dist/runtime/validator.mjs +1 -71
  234. package/dist/runtime/ws-server.d.mts +2 -2
  235. package/dist/runtime/ws-server.mjs +2 -2
  236. package/dist/runtime/ws.d.mts +2 -121
  237. package/dist/{scan-CpK-57ug.mjs → scan-DJbooZm2.mjs} +3 -3
  238. package/dist/{scan-BMH4rzlv.mjs → scan-DdDvRCU1.mjs} +8 -26
  239. package/dist/{secret-Bzzi2e9E.mjs → secret-wnTel5Yw.mjs} +8 -6
  240. package/dist/serialize-BPvnNQuA.mjs +14 -0
  241. package/dist/serialize-CfSwWfF2.d.mts +10 -0
  242. package/dist/{skills-C0RvGjeE.mjs → skills-B-690E7h.mjs} +3 -2
  243. package/dist/sse-BaC1jXko.mjs +172 -0
  244. package/dist/{subcommand-prompt-Bmyn5Rlc.mjs → subcommand-prompt-Gj3VzLIh.mjs} +2 -1
  245. package/dist/sveltekit.d.mts +2 -1
  246. package/dist/sveltekit.mjs +3 -2
  247. package/dist/validate-DqJ33oHj.mjs +2 -0
  248. package/dist/validate-qNhV00PD.mjs +180 -0
  249. package/dist/validator-BTOu0fB0.mjs +72 -0
  250. package/dist/{wrangler--imS8n0d.mjs → wrangler-D01qs6VB.mjs} +259 -71
  251. package/dist/ws-BwcqizuH.d.mts +122 -0
  252. package/dist/{yarn-pnp-DxSInkzL.mjs → yarn-pnp-CVEc3gE7.mjs} +1 -1
  253. package/package.json +19 -8
  254. package/skills/void/SKILL.md +7 -5
  255. package/skills/void/docs/guide/ai.md +3 -3
  256. package/skills/void/docs/guide/app-types.md +12 -11
  257. package/skills/void/docs/guide/auth.md +2 -2
  258. package/skills/void/docs/guide/database/d1.md +1 -1
  259. package/skills/void/docs/guide/database/mysql.md +1 -1
  260. package/skills/void/docs/guide/database/postgresql.md +3 -3
  261. package/skills/void/docs/guide/deployment.md +16 -16
  262. package/skills/void/docs/guide/durable-state.md +2 -2
  263. package/skills/void/docs/guide/edge/headers.md +3 -3
  264. package/skills/void/docs/guide/edge/prerendering.md +1 -1
  265. package/skills/void/docs/guide/edge/redirects.md +4 -4
  266. package/skills/void/docs/guide/edge/revalidation.md +6 -6
  267. package/skills/void/docs/guide/edge/rewrites.md +28 -27
  268. package/skills/void/docs/guide/edge/static-assets.md +1 -1
  269. package/skills/void/docs/guide/email.md +27 -25
  270. package/skills/void/docs/guide/env-migration.md +1 -1
  271. package/skills/void/docs/guide/index.md +1 -1
  272. package/skills/void/docs/guide/pages-routing/head.md +1 -1
  273. package/skills/void/docs/guide/platform/administration/access.md +171 -0
  274. package/skills/void/docs/guide/platform/administration/email.md +121 -0
  275. package/skills/void/docs/guide/platform/administration/operations.md +97 -0
  276. package/skills/void/docs/guide/platform/administration/projects.md +56 -0
  277. package/skills/void/docs/guide/platform/development/local.md +119 -0
  278. package/skills/void/docs/guide/platform/development/runtime.md +124 -0
  279. package/skills/void/docs/guide/platform/development/schema-ci.md +95 -0
  280. package/skills/void/docs/guide/platform/installation/ci.md +58 -0
  281. package/skills/void/docs/guide/platform/installation/credentials.md +90 -0
  282. package/skills/void/docs/guide/platform/installation/domains.md +68 -0
  283. package/skills/void/docs/guide/platform/installation/first-deployment.md +82 -0
  284. package/skills/void/docs/guide/platform/installation/maintenance.md +137 -0
  285. package/skills/void/docs/guide/platform/installation/prerequisites.md +88 -0
  286. package/skills/void/docs/guide/platform/installation/setup.md +169 -0
  287. package/skills/void/docs/guide/platform/installation/uninstall.md +54 -0
  288. package/skills/void/docs/guide/platform-administration.md +6 -414
  289. package/skills/void/docs/guide/platform-development.md +5 -316
  290. package/skills/void/docs/guide/project-collaboration.md +1 -1
  291. package/skills/void/docs/guide/remote-dev.md +2 -2
  292. package/skills/void/docs/guide/sandboxes.md +10 -25
  293. package/skills/void/docs/guide/self-hosted-platform.md +11 -694
  294. package/skills/void/docs/guide/ssg.md +1 -1
  295. package/skills/void/docs/guide/websockets.md +1 -1
  296. package/skills/void/docs/integrations/cloudflare.md +86 -84
  297. package/skills/void/docs/integrations/frameworks/analog.md +14 -9
  298. package/skills/void/docs/integrations/frameworks/astro.md +14 -10
  299. package/skills/void/docs/integrations/frameworks/nuxt.md +14 -9
  300. package/skills/void/docs/integrations/frameworks/overview.md +35 -29
  301. package/skills/void/docs/integrations/frameworks/react-router.md +1 -1
  302. package/skills/void/docs/integrations/frameworks/sveltekit.md +33 -30
  303. package/skills/void/docs/integrations/frameworks/tanstack-start.md +1 -1
  304. package/skills/void/docs/integrations/nodejs-bun-deno.md +5 -5
  305. package/skills/void/docs/reference/api.md +55 -38
  306. package/skills/void/docs/reference/cli.md +60 -34
  307. package/skills/void/docs/reference/config.md +57 -34
  308. package/skills/void/docs/reference/resource-inference.md +10 -10
  309. package/skills/void/docs/reference/structure.md +2 -2
  310. package/dist/validate-tBBN_dXH.mjs +0 -505
package/dist/index.mjs CHANGED
@@ -1,32 +1,36 @@
1
- import { r as __toESM } from "./rolldown-runtime-rQ84J-ij.mjs";
2
- import { c as relative, l as resolve, n as dirname, o as join } from "./dist-BrsS7cai.mjs";
3
- import { H as ensurePlatformProxyAccess, ft as require_picocolors } from "./output-B0cfNSx5.mjs";
4
- import { D as resolveAssetRoutingPolicy, E as hasDocumentRoutes, T as hasApiRoutes, _ as scanDurableObjectModules, c as resolveDistDir, d as generateQueueResolverSource, f as prerenderPages, g as hasRevalidate, h as collectRevalidate, l as resolveWorkerDirName, m as collectPages, p as prerenderPagesNode, v as SEND_EMAIL_BINDING } from "./deploy-DTaWUS1S.mjs";
5
- import { i as resolveProjectPaths, n as readProjectPaths, t as assertNoRootSourceConventionConflicts } from "./project-paths-SK8nMHPp.mjs";
6
- import { a as scanQueuesSync, c as loadVoidAuthConfig, i as scanWebSocketRoutesSync, n as scanRoutePatternsSync, o as scanJobsSync, r as scanRoutes, s as findVoidAuthConfig, t as scanMiddlewareSync } from "./scan-BMH4rzlv.mjs";
1
+ import { n as __toESM } from "./rolldown-runtime-DXIUcv95.mjs";
2
+ import { a as join, l as relative, n as dirname, u as resolve } from "./dist-4WkAWhWx.mjs";
3
+ import { d as require_picocolors } from "./output-urU86XeT.mjs";
4
+ import { B as resolveDistDir, Ct as resolveAssetRoutingPolicy, W as resolveWorkerDirName, at as generateQueueResolverSource, bt as hasApiRoutes, dt as hasRevalidate, ft as scanDurableObjectModules, lt as collectPages, ot as prerenderPages, pt as SEND_EMAIL_BINDING, st as prerenderPagesNode, ut as collectRevalidate, xt as hasDocumentRoutes } from "./deploy-H968Lo4T.mjs";
5
+ import { i as resolveProjectPaths, n as readProjectPaths, t as assertNoRootSourceConventionConflicts } from "./project-paths-CKQ-Q5JS.mjs";
6
+ import { n as loadVoidAuthConfig, t as findVoidAuthConfig } from "./config-uP7ZDtVZ.mjs";
7
7
  import { r as scopedAccessCredentials } from "./cf-access-DRsQRe6k.mjs";
8
- import { S as readProjectConfig, d as isStagingMode, l as getToken, o as getApiUrl, s as getProxyUrl, x as readDeploymentPlatform } from "./auth-DPl6kck4.mjs";
9
- import { C as readWranglerWebSocketTombstones, D as syncWranglerWebSockets, E as syncWranglerDurableObjects, M as isSandboxEnabled, P as resolveSandboxConfig, T as syncWranglerBindings, a as LIVE_MIGRATION_TAG, d as ensureWranglerNodejsAlsFlag, g as readExistingLiveBindingConfig, h as normalizeWranglerCompatibilityFlags, j as SANDBOX_MIGRATION_TAG, l as ensureWranglerCompat, m as nextDurableObjectMigrationTag, p as hasDurableObjectSqliteMigration, u as ensureWranglerCompatibilityDate, w as resolveLiveBindingConfig, y as readWranglerCompat } from "./wrangler--imS8n0d.mjs";
10
- import { c as getDatabaseDialect, f as readConfig, l as isNodeTarget, p as resolveBindingNames } from "./config-uNGuFsI2.mjs";
8
+ import { a as getApiUrl, c as getToken, o as getProxyUrl, u as isStagingMode } from "./auth-B9_D6ygs.mjs";
9
+ import { r as ensurePlatformProxyAccess } from "./cf-access-rAZxzMkL.mjs";
10
+ import { i as readDeploymentPlatform, o as readProjectConfig } from "./project-CWNIPoXc.mjs";
11
+ import { d as isNodeTarget, h as resolveBindingNames, m as readConfig, u as getDatabaseDialect } from "./config-Dxr6cTXn.mjs";
12
+ import { C as readWranglerWebSocketTombstones, D as syncWranglerWebSockets, E as syncWranglerDurableObjects, L as materializeCloudflareConfig, M as isSandboxEnabled, P as resolveSandboxConfig, T as syncWranglerBindings, V as stashCloudflareDeployPointer, a as LIVE_MIGRATION_TAG, d as ensureWranglerNodejsAlsFlag, g as readExistingLiveBindingConfig, h as normalizeWranglerCompatibilityFlags, j as SANDBOX_MIGRATION_TAG, l as ensureWranglerCompat, m as nextDurableObjectMigrationTag, p as hasDurableObjectSqliteMigration, u as ensureWranglerCompatibilityDate, w as resolveLiveBindingConfig, y as readWranglerCompat, z as restoreCloudflarePreviewPointer } from "./wrangler-D01qs6VB.mjs";
11
13
  import { i as voidWarn, n as voidError, r as voidLog, t as setShowTimestamp } from "./log-ChfPKsVd.mjs";
12
- import { n as lintDuplicateSources, r as mergeRoutingRules, t as lintDestinationSplats } from "./headers-BAHwgHdW.mjs";
13
- import { n as ensureProjectTsconfig, r as writeFileIfChanged } from "./project-tsconfig-Ql2XsSQp.mjs";
14
- import { a as inferBindingsFromSource, i as inferProjectBindings, n as FRAMEWORK_SCAN_DIRS, o as walk, r as detectFramework, t as DEFAULT_SCAN_DIRS } from "./plugin-inference-BDRfZngg.mjs";
15
- import { a as validateSsrEntries, c as isIdentifier, l as isLiteral, n as SSR_SERVER_ENTRY_RELATIVE_PATHS, o as validateSsrEntry, t as SSR_CLIENT_ENTRY_RELATIVE_PATHS, u as isMemberExpression } from "./entry-DU3oDoQ3.mjs";
16
- import { n as writeLocalD1PersistState, t as resolveLocalD1Target } from "./local-d1-D2I6Ox5F.mjs";
14
+ import { n as lintDuplicateSources, r as mergeRoutingRules, t as lintDestinationSplats } from "./headers-B_HBMgi0.mjs";
15
+ import { n as ensureProjectTsconfig, r as writeFileIfChanged } from "./project-tsconfig-CwfqUnVp.mjs";
16
+ import { a as scanQueuesSync, i as scanWebSocketRoutesSync, n as scanRoutePatternsSync, o as scanJobsSync, r as scanRoutes, t as scanMiddlewareSync } from "./scan-DdDvRCU1.mjs";
17
+ import { a as inferBindingsFromSource, i as inferProjectBindings, n as FRAMEWORK_SCAN_DIRS, o as walk, r as detectFramework, t as DEFAULT_SCAN_DIRS } from "./plugin-inference-DsvtJLll.mjs";
18
+ import { a as validateSsrEntries, c as isIdentifier, l as isLiteral, n as SSR_SERVER_ENTRY_RELATIVE_PATHS, o as validateSsrEntry, t as SSR_CLIENT_ENTRY_RELATIVE_PATHS, u as isMemberExpression } from "./entry-DdRFGK0y.mjs";
19
+ import { n as writeLocalD1PersistState, t as resolveLocalD1Target } from "./local-d1-DzykTWY8.mjs";
17
20
  import { n as parseDotenvFile } from "./dotenv-VQxupEUv.mjs";
18
- import { i as generateVoidAuthDrizzleSchema, n as generateQueueTypes, o as DRIZZLE_OPERATORS, r as generateVoidAuthDatabaseModule, s as generateDbDts, t as generateRouteTypes } from "./route-types-Da-DpyUp.mjs";
19
- import { t as discoverSchema } from "./discover-xvfrgJeo.mjs";
21
+ import { i as generateDbDts, n as generateQueueTypes, r as DRIZZLE_OPERATORS, t as generateRouteTypes } from "./route-types-Id82-veQ.mjs";
22
+ import { t as discoverSchema } from "./discover-C4O6YxVS.mjs";
20
23
  import { _ as parseCapturedMessage, a as DEV_INBOX_ENV_VAR, c as DEV_INBOX_TOKEN_ENV_VAR, f as clearDevBuffer, g as listDevMessages, l as DEV_INBOX_TOKEN_HEADER, m as findDevMessage, n as DEV_INBOX_ACK_VALUE, o as DEV_INBOX_MAX_CAPTURE_BYTES, s as DEV_INBOX_PREFIX, t as DEV_INBOX_ACK_HEADER, u as DEV_INBOX_TOKEN_QUERY, v as pushToDevBuffer, y as registerEmailSink } from "./dev-inbox-P0u4tM8Y.mjs";
21
24
  import { t as MagicString } from "./dist-BR1quN_w.mjs";
22
- import { n as findEnvFileForPaths, r as generateEnvTypes, t as findEnvFile } from "./env-types-BNPhro-M.mjs";
23
- import { h as loadUserEnvFile } from "./env-validation-CF6KvTRf.mjs";
24
- import { a as loadLocalEnv, o as resolveRemoteMode, r as findLegacyEnvFiles, s as stripInternalEnvKeys, t as CLIENT_ENV_PREFIX$2 } from "./env-DBKmK4vc.mjs";
25
- import { i as resolveLayoutIds, o as isRouteEnabledForEnvironment } from "./scan-CpK-57ug.mjs";
26
- import { a as scanEmailHandlersSync, r as hasEmailHandlers } from "./email-Ce6SQq-i.mjs";
25
+ import { n as findEnvFileForPaths, r as generateEnvTypes, t as findEnvFile } from "./env-types-CWDtqHgw.mjs";
26
+ import { y as loadUserEnvFile } from "./env-validation-BsFEXps5.mjs";
27
+ import { a as loadLocalEnv, o as resolveRemoteMode, r as findLegacyEnvFiles, s as stripInternalEnvKeys, t as CLIENT_ENV_PREFIX$2 } from "./env-DX_v-Q-v.mjs";
28
+ import { i as resolveLayoutIds, o as isRouteEnabledForEnvironment } from "./scan-DJbooZm2.mjs";
29
+ import { a as scanEmailHandlersSync, r as hasEmailHandlers } from "./email-C5kaZXzJ.mjs";
30
+ import { n as generateVoidAuthDrizzleSchema, t as generateVoidAuthDatabaseModule } from "./drizzle-Beb2Am5S.mjs";
27
31
  import { n as INTERNAL_BINDING_PREFIXES, t as INTERNAL_BINDING_EXACT_NAMES } from "./env-raw-Cx8ElDdj.mjs";
28
32
  import { n as defer } from "./defer-YsYDUoii.mjs";
29
- import { VoidAssetRewriteError, basicAuth, defineHandler, defineHead, defineMiddleware, defineQueue, defineRender, defineScheduled } from "./runtime/handler.mjs";
33
+ import { a as defineMiddleware, c as defineScheduled, i as defineHead, n as basicAuth, o as defineQueue, r as defineHandler, s as defineRender, t as VoidAssetRewriteError } from "./handler-DghKr6dU.mjs";
30
34
  import { chmodSync, closeSync, existsSync, mkdirSync, openSync, readFileSync, readdirSync, rmSync, statSync, writeFileSync, writeSync } from "node:fs";
31
35
  import { fileURLToPath, pathToFileURL } from "node:url";
32
36
  import { cloudflare } from "@cloudflare/vite-plugin";
@@ -702,7 +706,7 @@ export function createDb(d1) {
702
706
  const migrationsDir = paths.migrationsDir;
703
707
  if (!(existsSync(migrationsDir) && readdirSync(migrationsDir).some((f) => f.endsWith(".sql")))) {
704
708
  if (dialect === "sqlite") {
705
- const { getApplicationTables, getMiniflareDatabasePath } = await import("./local-d1-D2I6Ox5F.mjs").then((n) => n.i);
709
+ const { getApplicationTables, getMiniflareDatabasePath } = await import("./runner-CQs_cDSG.mjs");
706
710
  if ((await getApplicationTables(getMiniflareDatabasePath(options.localD1PersistRoot ?? join(root, ".void"), options.localD1DatabaseId ?? "local")).catch(() => [])).length > 0) return;
707
711
  }
708
712
  voidWarn(`Schema found but no migrations in ${paths.sourceRelative("db/migrations")}/.\n \`void db push\` syncs the schema to your local DB without creating migration files.
@@ -1983,10 +1987,10 @@ function migrationPlugin(root, dialect, databaseId = "local", persistRoot = join
1983
1987
  else warn();
1984
1988
  return;
1985
1989
  }
1986
- const { collectMigrations } = await import("./validate-tBBN_dXH.mjs").then((n) => n.l);
1987
- const { validateMigrations } = await import("./validate-tBBN_dXH.mjs").then((n) => n.i);
1990
+ const { collectMigrations } = await import("./collect-DAUItMDS.mjs");
1991
+ const { validateMigrations } = await import("./validate-DqJ33oHj.mjs");
1988
1992
  const allMigrations = collectMigrations(migrationsDir);
1989
- const appliedNames = dialect === "mysql" ? await import("./runner-mysql-7BPUNGmL.mjs").then((n) => n.n).then((runner) => runner.getMySqlAppliedMigrations(url)) : await import("./runner-pg-BkEza-dX.mjs").then((n) => n.n).then((runner) => runner.getPgAppliedMigrations(url));
1993
+ const appliedNames = dialect === "mysql" ? await import("./runner-mysql-1o47achK.mjs").then((runner) => runner.getMySqlAppliedMigrations(url)) : await import("./runner-pg-D7z01mQS.mjs").then((runner) => runner.getPgAppliedMigrations(url));
1990
1994
  const appliedSet = new Set(appliedNames);
1991
1995
  const pending = allMigrations.filter((migration) => !appliedSet.has(migration.name));
1992
1996
  if (pending.length > 0) try {
@@ -1994,12 +1998,12 @@ function migrationPlugin(root, dialect, databaseId = "local", persistRoot = join
1994
1998
  } catch (err) {
1995
1999
  voidWarn(err instanceof Error ? err.message : String(err));
1996
2000
  }
1997
- const applied = dialect === "mysql" ? await import("./runner-mysql-7BPUNGmL.mjs").then((n) => n.n).then((runner) => runner.runMySqlMigrations(migrationsDir, url)) : await import("./runner-pg-BkEza-dX.mjs").then((n) => n.n).then((runner) => runner.runPgMigrations(migrationsDir, url));
2001
+ const applied = dialect === "mysql" ? await import("./runner-mysql-1o47achK.mjs").then((runner) => runner.runMySqlMigrations(migrationsDir, url)) : await import("./runner-pg-D7z01mQS.mjs").then((runner) => runner.runPgMigrations(migrationsDir, url));
1998
2002
  if (applied.length > 0) voidLog(`Applied ${applied.length} migration(s): ${applied.join(", ")}`);
1999
2003
  } else if (hasSqlMigrations) {
2000
- const { runMigrations, getMiniflareDatabasePath, getAppliedMigrations } = await import("./local-d1-D2I6Ox5F.mjs").then((n) => n.i);
2001
- const { collectMigrations } = await import("./validate-tBBN_dXH.mjs").then((n) => n.l);
2002
- const { validateMigrations } = await import("./validate-tBBN_dXH.mjs").then((n) => n.i);
2004
+ const { runMigrations, getMiniflareDatabasePath, getAppliedMigrations } = await import("./runner-CQs_cDSG.mjs");
2005
+ const { collectMigrations } = await import("./collect-DAUItMDS.mjs");
2006
+ const { validateMigrations } = await import("./validate-DqJ33oHj.mjs");
2003
2007
  const dbPath = getMiniflareDatabasePath(persistRoot, databaseId);
2004
2008
  const allMigrations = collectMigrations(migrationsDir);
2005
2009
  const appliedRows = await getAppliedMigrations(dbPath);
@@ -2014,7 +2018,7 @@ function migrationPlugin(root, dialect, databaseId = "local", persistRoot = join
2014
2018
  if (applied.length > 0) voidLog(`Applied ${applied.length} migration(s): ${applied.join(", ")}`);
2015
2019
  }
2016
2020
  if (auth?.enabled) {
2017
- const { runLocalVoidAuthMigrations } = await import("./node-Ez5KW5rn.mjs");
2021
+ const { runLocalVoidAuthMigrations } = await import("./node-Cupyf7-s.mjs");
2018
2022
  await runLocalVoidAuthMigrations(root, dialect, persistRoot, databaseId, auth.configPath);
2019
2023
  voidLog("Applied Better Auth migrations");
2020
2024
  }
@@ -5029,8 +5033,8 @@ function routingPlugin(root, options) {
5029
5033
  if (!options.target) {
5030
5034
  const migrationsDir = paths.migrationsDir;
5031
5035
  if (existsSync(migrationsDir) || compileOptions.auth) {
5032
- const { collectMigrations } = await import("./validate-tBBN_dXH.mjs").then((n) => n.l);
5033
- const { buildMigrationPlanBundle } = await import("./validate-tBBN_dXH.mjs").then((n) => n.s);
5036
+ const { collectMigrations } = await import("./collect-DAUItMDS.mjs");
5037
+ const { buildMigrationPlanBundle } = await import("./plan-DpuOr14e.mjs");
5034
5038
  const migrations = existsSync(migrationsDir) ? collectMigrations(migrationsDir) : [];
5035
5039
  const dialect = getDatabaseDialect(readConfig(root));
5036
5040
  compileOptions.migrationHandlerPath = resolveFile(dialect === "postgresql" ? "#self/runtime/migration-handler-pg" : dialect === "mysql" ? "#self/runtime/migration-handler-mysql" : "#self/runtime/migration-handler");
@@ -5343,9 +5347,14 @@ import original from ${JSON.stringify(original)};
5343
5347
  export default {
5344
5348
  ...original,
5345
5349
  async fetch(request, env, ctx) {
5346
- const { handleDevTrigger } = await import(${JSON.stringify(frameworkTriggersDispatchPath(root))});
5347
- const response = await handleDevTrigger(request, env, ctx);
5348
- if (response) return response;
5350
+ if (request.method === "POST") {
5351
+ const pathname = new URL(request.url).pathname;
5352
+ if (pathname === "/__void/scheduled" || pathname === "/__void/queue") {
5353
+ const { handleDevTrigger } = await import(${JSON.stringify(frameworkTriggersDispatchPath(root))});
5354
+ const response = await handleDevTrigger(request, env, ctx);
5355
+ if (response) return response;
5356
+ }
5357
+ }
5349
5358
  return original.fetch(request, env, ctx);
5350
5359
  },
5351
5360
  };
@@ -5572,10 +5581,10 @@ function readVoidDevCredentials(root) {
5572
5581
  * block the server. On completion, writes project.json and restarts the server.
5573
5582
  */
5574
5583
  async function runAiSetupPrompt(root, token, apiUrl, server) {
5575
- const { select, text, isCancel, log } = await import("./output-B0cfNSx5.mjs").then((n) => n.T);
5576
- const { PlatformClient } = await import("./client-dHfSJvAN.mjs").then((n) => n.r);
5577
- const { attachSelectedPlatform, writeProjectConfig } = await import("./auth-DPl6kck4.mjs").then((n) => n.b);
5578
- const { inferDefaultSlug } = await import("./resolve-project--Vxawf7z.mjs").then((n) => n.i);
5584
+ const { select, text, isCancel, log } = await import("./dist-C5fND3R0.mjs");
5585
+ const { PlatformClient } = await import("./client-DAAivdid.mjs");
5586
+ const { attachSelectedPlatform, writeProjectConfig } = await import("./project-BEBFDFLz.mjs");
5587
+ const { inferDefaultSlug } = await import("./resolve-project-BTotl8Nn.mjs");
5579
5588
  const client = new PlatformClient(token, apiUrl);
5580
5589
  let projects;
5581
5590
  try {
@@ -5601,8 +5610,8 @@ async function runAiSetupPrompt(root, token, apiUrl, server) {
5601
5610
  let projectId;
5602
5611
  let slug;
5603
5612
  if (result === "__create__") {
5604
- const { validateProjectSlug } = await import("./create-project-Bk9Z0-Jg.mjs").then((n) => n.a);
5605
- const { createProjectWithSlugRetry } = await import("./create-project-Bk9Z0-Jg.mjs").then((n) => n.t);
5613
+ const { validateProjectSlug } = await import("./project-slug-DofjTFd-.mjs");
5614
+ const { createProjectWithSlugRetry } = await import("./create-project-CI-17RVJ.mjs");
5606
5615
  let created;
5607
5616
  try {
5608
5617
  created = await createProjectWithSlugRetry(client, inferDefaultSlug(root), async (defaultSlug) => {
@@ -5645,19 +5654,49 @@ async function runAiSetupPrompt(root, token, apiUrl, server) {
5645
5654
  * Binding inference runs synchronously here so results are available
5646
5655
  * before the Cloudflare plugin initializes.
5647
5656
  *
5648
- * If the user has a `wrangler.jsonc` / `wrangler.json` in their project root,
5649
- * the Cloudflare plugin reads it and provides the resolved config to our
5657
+ * The Cloudflare plugin reads Void's generated config and provides it to our
5650
5658
  * config function. Bindings already defined there (with real IDs for
5651
5659
  * production deployment) are preserved — we only add inferred bindings
5652
5660
  * that are missing. This allows `vite build && wrangler deploy` to work
5653
5661
  * for deploying directly to Cloudflare without the Void platform.
5654
5662
  */
5663
+ const scheduledPointerCleanups = /* @__PURE__ */ new Set();
5664
+ const scheduledPreviewPointerCleanups = /* @__PURE__ */ new Set();
5655
5665
  function voidPlugin(options) {
5656
5666
  const root = process.cwd();
5657
5667
  const directCloudflareDestination = readDeploymentPlatform(root) === "cloudflare";
5658
5668
  warnIfPackageJsonIsNotEsm(root);
5659
5669
  const devTriggerToken = isViteBuildOrPreview() ? crypto.randomUUID() : getOrCreateDevTriggerToken(root);
5660
5670
  const config = readConfig(root);
5671
+ const projectCloudflareConfigPath = !isNodeTarget(config.target) ? materializeCloudflareConfig(root) : void 0;
5672
+ const cloudflareConfigPath = projectCloudflareConfigPath && existsSync(projectCloudflareConfigPath) ? projectCloudflareConfigPath : void 0;
5673
+ let previewing = false;
5674
+ const implicitDeployGuard = {
5675
+ name: "void:remove-implicit-cloudflare-deploy-pointer",
5676
+ enforce: "pre",
5677
+ config(_config, environment) {
5678
+ previewing = environment.isPreview === true;
5679
+ if (previewing && existsSync(join(root, "void.config.ts"))) {
5680
+ if (restoreCloudflarePreviewPointer(root) && !scheduledPreviewPointerCleanups.has(root)) {
5681
+ scheduledPreviewPointerCleanups.add(root);
5682
+ process.once("exit", () => {
5683
+ rmSync(join(root, ".wrangler", "deploy", "config.json"), { force: true });
5684
+ });
5685
+ }
5686
+ }
5687
+ },
5688
+ closeBundle() {
5689
+ if (!previewing && existsSync(join(root, "void.config.ts")) && process.env["VOID_CLOUDFLARE_DEPLOY_BUILD"] !== "1") {
5690
+ const removePointer = () => stashCloudflareDeployPointer(root);
5691
+ if (detected?.name === "astro") {
5692
+ if (!scheduledPointerCleanups.has(root)) {
5693
+ scheduledPointerCleanups.add(root);
5694
+ process.once("exit", removePointer);
5695
+ }
5696
+ } else removePointer();
5697
+ }
5698
+ }
5699
+ };
5661
5700
  const paths = resolveProjectPaths(root, config);
5662
5701
  let routeEnvironment = "prod";
5663
5702
  assertNoRootSourceConventionConflicts(paths);
@@ -5798,6 +5837,7 @@ function voidPlugin(options) {
5798
5837
  name: "void:wrangler-compat",
5799
5838
  enforce: "pre",
5800
5839
  config(_, env) {
5840
+ if (env.command === "serve" && directCloudflareDestination && bindings.needsAI) process.env.CLOUDFLARE_AUTH_USE_KEYRING = "true";
5801
5841
  syncFrameworkCompat(ensureWranglerCompat(root, config));
5802
5842
  if (env.command !== "serve") return;
5803
5843
  if (ensureWranglerNodejsAlsFlag(root)) voidLog("Synced nodejs_als to Cloudflare config");
@@ -5809,17 +5849,28 @@ function voidPlugin(options) {
5809
5849
  syncFrameworkCompat(ensureWranglerCompat(root, config));
5810
5850
  }
5811
5851
  };
5852
+ const syncFrameworkBindings = (command) => {
5853
+ if (command !== "serve") return;
5854
+ if (syncWranglerBindings(root, {
5855
+ ...bindings,
5856
+ needsD1: dialect === "sqlite" && bindings.needsD1
5857
+ }, {
5858
+ bindingNames,
5859
+ ...directCloudflareDestination && bindings.needsAI ? { directCloudflareAi: { gateway: config.ai?.gateway } } : {},
5860
+ websockets: websocketRoutes,
5861
+ sandbox: sandboxConfig,
5862
+ live: liveConfig
5863
+ })) voidLog("Synced bindings to Cloudflare config");
5864
+ };
5812
5865
  const wranglerSyncPlugin = {
5813
5866
  name: "void:wrangler-sync",
5867
+ enforce: "pre",
5868
+ config(_, env) {
5869
+ syncFrameworkBindings(env.command);
5870
+ },
5814
5871
  configResolved(resolvedConfig) {
5815
5872
  syncFrameworkCompat(readWranglerCompat(root, config));
5816
- if (resolvedConfig.command !== "serve") return;
5817
- if (syncWranglerBindings(root, bindings, {
5818
- bindingNames,
5819
- websockets: websocketRoutes,
5820
- sandbox: sandboxConfig,
5821
- live: liveConfig
5822
- })) voidLog("Synced bindings to wrangler.jsonc");
5873
+ syncFrameworkBindings(resolvedConfig.command);
5823
5874
  }
5824
5875
  };
5825
5876
  const nuxtVite8WebSocketCompatPlugin = detected.name === "nuxt" ? {
@@ -5876,7 +5927,8 @@ function voidPlugin(options) {
5876
5927
  frameworkTriggersPlugin(root, { devTriggerToken }),
5877
5928
  ...detected.name === "nuxt" ? [nitroDevTriggerInjectPlugin(root, { serverDir: "server" })] : [],
5878
5929
  ...detected.name === "analog" ? [analogDevTriggerInjectPlugin(root)] : [],
5879
- ...detected.name === "astro" ? [astroDevTriggerInjectPlugin(root)] : []
5930
+ ...detected.name === "astro" ? [astroDevTriggerInjectPlugin(root)] : [],
5931
+ implicitDeployGuard
5880
5932
  ];
5881
5933
  }
5882
5934
  const remoteMode = resolveRemoteMode(config.remote);
@@ -5924,7 +5976,7 @@ function voidPlugin(options) {
5924
5976
  }
5925
5977
  const d1Name = bindingNames?.d1 ?? "DB";
5926
5978
  const d1 = [];
5927
- if ((bindings.needsD1 || authEnabled && dialect === "sqlite") && !hasBinding(resolved.d1_databases, d1Name)) d1.push({
5979
+ if (dialect === "sqlite" && (bindings.needsD1 || authEnabled) && !hasBinding(resolved.d1_databases, d1Name)) d1.push({
5928
5980
  binding: d1Name,
5929
5981
  database_name: "default",
5930
5982
  database_id: "local"
@@ -6228,7 +6280,7 @@ function voidPlugin(options) {
6228
6280
  if (resolved.command !== "build") return;
6229
6281
  if (config.routing?.notFound !== void 0 && !process.env.VOID_DEPLOY_BUILD && !notFoundIgnoredWarned) {
6230
6282
  notFoundIgnoredWarned = true;
6231
- voidWarn(`Void generates no asset routing policy for a ${framework} build, so "routing.notFound" in void.json is not written to the built worker config. During a self-hosted build and direct Cloudflare deployment, it takes effect only if your own Cloudflare config declares a complete \`assets\` policy (\`binding\`, \`directory\`, \`not_found_handling\`, \`run_worker_first\`); otherwise Cloudflare's default applies. Managed \`void deploy\` supplies the policy for you.`);
6283
+ voidWarn(`Void generates no asset routing policy for a ${framework} build, so "routing.notFound" in void.config.ts is not written to the built worker config. During a self-hosted build and direct Cloudflare deployment, it takes effect only if your own Cloudflare config declares a complete \`assets\` policy (\`binding\`, \`directory\`, \`not_found_handling\`, \`run_worker_first\`); otherwise Cloudflare's default applies. Managed \`void deploy\` supplies the policy for you.`);
6232
6284
  }
6233
6285
  generateClassATriggerWrapper(root, framework, getOriginalFrameworkEntry(framework, root), true, resolved.build.assetsDir, config.routing?.notFound);
6234
6286
  }
@@ -6281,24 +6333,26 @@ function voidPlugin(options) {
6281
6333
  devTriggerToken
6282
6334
  }),
6283
6335
  ...cloudflare({
6336
+ configPath: cloudflareConfigPath,
6284
6337
  ...inspectorPortOption,
6285
6338
  persistState: { path: localD1.persistRoot },
6286
6339
  auxiliaryWorkers: options?.auxiliaryWorkers,
6287
6340
  viteEnvironment,
6288
6341
  config: mergeBindings
6289
- })
6342
+ }),
6343
+ implicitDeployGuard
6290
6344
  ];
6291
6345
  }
6292
6346
  if (isNodeTarget(config.target)) {
6293
6347
  if (authEnabled) throw new Error("auth: Void-managed Better Auth is only supported in Cloudflare Void apps. Use Better Auth directly for this target instead.");
6294
- if (config.inference?.bindings) voidWarn("\"inference.bindings\" in void.json is ignored with target: \"" + config.target + "\"");
6295
- if (config.worker) voidWarn("\"worker\" in void.json is ignored with target: \"" + config.target + "\"");
6296
- if (config.remote) voidWarn("\"remote\" in void.json is ignored with target: \"" + config.target + "\"");
6348
+ if (config.inference?.bindings) voidWarn("\"inference.bindings\" in void.config.ts is ignored with target: \"" + config.target + "\"");
6349
+ if (config.worker) voidWarn("\"worker\" in void.config.ts is ignored with target: \"" + config.target + "\"");
6350
+ if (config.remote) voidWarn("\"remote\" in void.config.ts is ignored with target: \"" + config.target + "\"");
6297
6351
  if (bindings.needsSandbox) throw new Error(`sandbox: Cloudflare Sandboxes require target: "cloudflare". They are not available with target: '${config.target}'.`);
6298
6352
  if (bindings.needsLive) throw new Error(`live: void/live requires target: "cloudflare". It is not available with target: '${config.target}'.`);
6299
6353
  if (durableObjects.length > 0) throw new Error(`durable: durable-objects/ requires target: "cloudflare". It is not available with target: '${config.target}'.`);
6300
6354
  if (hasInboundEmail) throw new Error(`email: inbound email handlers (email/) require target: "cloudflare". They are not available with target: '${config.target}'.`);
6301
- if (config.routing?.revalidate) voidWarn("\"routing.revalidate\" in void.json is ignored with target: \"" + config.target + "\" (edge caching is CF-only)");
6355
+ if (config.routing?.revalidate) voidWarn("\"routing.revalidate\" in void.config.ts is ignored with target: \"" + config.target + "\" (edge caching is CF-only)");
6302
6356
  return [
6303
6357
  restartPlugin(),
6304
6358
  envPlugin,
@@ -6421,12 +6475,14 @@ function voidPlugin(options) {
6421
6475
  devTriggerToken
6422
6476
  }),
6423
6477
  ...cloudflare({
6478
+ configPath: cloudflareConfigPath,
6424
6479
  ...inspectorPortOption,
6425
6480
  persistState: { path: localD1.persistRoot },
6426
6481
  auxiliaryWorkers: options?.auxiliaryWorkers,
6427
6482
  viteEnvironment: { name: DEFAULT_WORKER_ENVIRONMENT_NAME },
6428
6483
  config: mergeBindings
6429
- })
6484
+ }),
6485
+ implicitDeployGuard
6430
6486
  ];
6431
6487
  }
6432
6488
  //#endregion
@@ -1,21 +1,26 @@
1
- import { a as isAbsolute, c as relative, l as resolve, n as dirname, o as join, t as basename } from "./dist-BrsS7cai.mjs";
2
- import { A as outro, C as cancel, D as log, E as intro, I as isCancel, M as select, P as text, f as detectAgents, k as note, p as getPackageDir, r as cliTitle, w as confirm } from "./output-B0cfNSx5.mjs";
3
- import { n as readProjectPaths } from "./project-paths-SK8nMHPp.mjs";
4
- import { E as writeProjectConfig, S as readProjectConfig, d as isStagingMode, l as getToken, w as writeDeploymentPlatform, x as readDeploymentPlatform, y as attachSelectedPlatform } from "./auth-DPl6kck4.mjs";
5
- import { i as LATEST_KNOWN_COMPAT_DATE, k as writeProvisionedWranglerConfig } from "./wrangler--imS8n0d.mjs";
6
- import { c as getDatabaseDialect, f as readConfig } from "./config-uNGuFsI2.mjs";
7
- import { n as ensureProjectTsconfig, t as createProjectTsconfig } from "./project-tsconfig-Ql2XsSQp.mjs";
8
- import { r as detectFramework } from "./plugin-inference-BDRfZngg.mjs";
1
+ import { a as join, i as isAbsolute, l as relative, n as dirname, t as basename, u as resolve } from "./dist-4WkAWhWx.mjs";
2
+ import { r as cliTitle } from "./output-urU86XeT.mjs";
3
+ import { n as readProjectPaths, o as TYPED_CONFIG_FILE } from "./project-paths-CKQ-Q5JS.mjs";
4
+ import { c as getToken, u as isStagingMode } from "./auth-B9_D6ygs.mjs";
5
+ import { d as writeProjectConfig, i as readDeploymentPlatform, l as writeDeploymentPlatform, o as readProjectConfig, t as attachSelectedPlatform } from "./project-CWNIPoXc.mjs";
6
+ import { m as readConfig, u as getDatabaseDialect } from "./config-Dxr6cTXn.mjs";
7
+ import { L as materializeCloudflareConfig, i as LATEST_KNOWN_COMPAT_DATE, k as writeProvisionedWranglerConfig } from "./wrangler-D01qs6VB.mjs";
8
+ import { n as ensureProjectTsconfig, t as createProjectTsconfig } from "./project-tsconfig-CwfqUnVp.mjs";
9
+ import { r as detectFramework } from "./plugin-inference-DsvtJLll.mjs";
9
10
  import { n as parseDotenvFile, t as expandDotenv } from "./dotenv-VQxupEUv.mjs";
10
11
  import { t as MagicString } from "./dist-BR1quN_w.mjs";
11
- import { n as writeDrizzleConfig } from "./config-NOG_U1aK.mjs";
12
- import { n as PlatformClient } from "./client-dHfSJvAN.mjs";
13
- import { r as formatProjectCommand } from "./preset-lAy0B0BQ.mjs";
14
- import { n as promptAndCreateProject, r as promptProjectSelection } from "./create-project-Bk9Z0-Jg.mjs";
15
- import { n as promptForLoginToken } from "./login-Uvferzmm.mjs";
16
- import { discoverPlatform, saveDiscoveredPlatform } from "./platform-cmd-BFhieCdV.mjs";
17
- import { t as connectCloudflare } from "./cloudflare-connect-t1UU5svD.mjs";
18
- import { n as findInstalledYarnPnpRuntime, r as hasLocalLockfile, t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-DxSInkzL.mjs";
12
+ import { B as text, E as confirm, I as select, N as note, O as intro, P as outro, T as cancel, W as isCancel, j as log } from "./dist-Dn6nn2IU.mjs";
13
+ import { t as writeDrizzleConfig } from "./config-BSe70f4T.mjs";
14
+ import { n as getPackageDir, t as detectAgents } from "./agents-gni4eqBu.mjs";
15
+ import { n as PlatformClient } from "./client-PdAJ-F0t.mjs";
16
+ import { r as formatProjectCommand } from "./preset-Dowh9tTt.mjs";
17
+ import { n as writeVoidProjectConfig, t as canRewriteVoidProjectConfig } from "./config-write-y3CBI_ux.mjs";
18
+ import { i as migrateFrameworkAdapterPaths, t as migrateLegacyVoidConfig } from "./migrate-DcW8F2W8.mjs";
19
+ import { i as promptProjectSelection, r as promptAndCreateProject } from "./create-project-C9lQhRzj.mjs";
20
+ import { t as promptForLoginToken } from "./login-CKk5NX4d.mjs";
21
+ import { i as saveDiscoveredPlatform, t as discoverPlatform } from "./platform-cmd-DRxCOTwy.mjs";
22
+ import { t as connectCloudflare } from "./cloudflare-connect-DloREDlc.mjs";
23
+ import { n as findInstalledYarnPnpRuntime, r as hasLocalLockfile, t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-CVEc3gE7.mjs";
19
24
  import { createRequire } from "node:module";
20
25
  import { existsSync, mkdirSync, readFileSync, readdirSync, rmdirSync, unlinkSync, writeFileSync } from "node:fs";
21
26
  import { fileURLToPath } from "node:url";
@@ -244,6 +249,7 @@ const SCAFFOLD_GITIGNORE_LINES = [
244
249
  "dist",
245
250
  ".void",
246
251
  ".wrangler",
252
+ ".void-wrangler.jsonc",
247
253
  ".env",
248
254
  ".env.*",
249
255
  "!.env.example",
@@ -780,7 +786,6 @@ const VITE_CONFIG_FILES = [
780
786
  "vite.config.cjs"
781
787
  ];
782
788
  const VOID_CONFIG_FILE = "void.json";
783
- const VOID_SCHEMA_PATH = "./node_modules/void/schema.json";
784
789
  function asRecord(value) {
785
790
  if (!value || typeof value !== "object" || Array.isArray(value)) return null;
786
791
  return value;
@@ -954,7 +959,7 @@ function isScaffoldableEmptyProject(root) {
954
959
  function shouldPromptForInitLocation(root) {
955
960
  if (isScaffoldableEmptyProject(root)) return false;
956
961
  if (existsSync(join(root, "package.json"))) return false;
957
- if (existsSync(join(root, VOID_CONFIG_FILE))) return false;
962
+ if (existsSync(join(root, VOID_CONFIG_FILE)) || existsSync(join(root, "void.config.ts"))) return false;
958
963
  return findViteConfig(root) === void 0;
959
964
  }
960
965
  function validateSubfolderName(root, value) {
@@ -1590,8 +1595,7 @@ function setupTsconfig(root, state, pagesFramework) {
1590
1595
  }
1591
1596
  }
1592
1597
  function readProjectWranglerCompatDate(root) {
1593
- for (const name of ["wrangler.jsonc", "wrangler.json"]) {
1594
- const configPath = join(root, name);
1598
+ for (const configPath of [materializeCloudflareConfig(root)]) {
1595
1599
  if (!existsSync(configPath)) continue;
1596
1600
  try {
1597
1601
  const raw = readFileSync(configPath, "utf-8");
@@ -1608,23 +1612,16 @@ function readProjectWranglerCompatDate(root) {
1608
1612
  */
1609
1613
  function setupWranglerConfig(root, framework) {
1610
1614
  if (framework.class === "a") return;
1611
- const hadConfig = ["wrangler.jsonc", "wrangler.json"].some((name) => existsSync(join(root, name)));
1615
+ const hadConfig = existsSync(materializeCloudflareConfig(root));
1612
1616
  const result = writeProvisionedWranglerConfig(root, {
1613
1617
  compatibilityDate: LATEST_KNOWN_COMPAT_DATE,
1614
1618
  compatibilityFlags: ["nodejs_als"]
1615
1619
  });
1616
- if (result.modified) log.success(hadConfig ? "Updated Cloudflare config with compatibility_date and nodejs_als" : "Created wrangler.jsonc with compatibility_date and nodejs_als");
1620
+ if (result.modified) log.success(hadConfig ? "Updated Cloudflare config with compatibility_date and nodejs_als" : "Created Cloudflare config with compatibility_date and nodejs_als");
1617
1621
  else log.success(`${basename(result.configPath)} looks good`);
1618
1622
  }
1619
- function withDefaultVoidSchema(config) {
1620
- if (typeof config.$schema === "string" && config.$schema.length > 0) return config;
1621
- return {
1622
- $schema: VOID_SCHEMA_PATH,
1623
- ...config
1624
- };
1625
- }
1626
1623
  function writeVoidConfig(root, config) {
1627
- writeFileSync(join(root, VOID_CONFIG_FILE), JSON.stringify(withDefaultVoidSchema(config), null, 2) + "\n");
1624
+ writeVoidProjectConfig(root, config);
1628
1625
  }
1629
1626
  function ensureVoidWorkerCompatibilityDate(root) {
1630
1627
  const config = readConfig(root);
@@ -1632,26 +1629,25 @@ function ensureVoidWorkerCompatibilityDate(root) {
1632
1629
  const worker = asRecord(config.worker) ?? {};
1633
1630
  if (typeof worker.compatibility_date === "string" && worker.compatibility_date.length > 0) return;
1634
1631
  const compatibilityDate = readProjectWranglerCompatDate(root) ?? "2026-02-24";
1632
+ if (!canRewriteVoidProjectConfig(root)) {
1633
+ writeProvisionedWranglerConfig(root, { compatibilityDate });
1634
+ log.success("Pinned worker compatibility_date in void.lock.json");
1635
+ return;
1636
+ }
1635
1637
  config.worker = {
1636
1638
  ...worker,
1637
1639
  compatibility_date: compatibilityDate
1638
1640
  };
1639
1641
  writeVoidConfig(root, config);
1640
- log.success("Pinned worker compatibility_date in void.json");
1642
+ log.success("Pinned worker compatibility_date in void.config.ts");
1641
1643
  }
1642
1644
  function clearConfiguredDatabase(root, messages) {
1643
1645
  const config = readConfig(root);
1644
- const configPath = join(root, VOID_CONFIG_FILE);
1645
1646
  if (config.database !== "pg" && config.database !== "mysql") {
1646
1647
  log.info(messages.unchanged);
1647
1648
  return;
1648
1649
  }
1649
1650
  delete config.database;
1650
- if (Object.keys(config).length === 0) {
1651
- unlinkSync(configPath);
1652
- log.success(messages.updated);
1653
- return;
1654
- }
1655
1651
  writeVoidConfig(root, config);
1656
1652
  log.success(messages.updated);
1657
1653
  }
@@ -1659,27 +1655,27 @@ function applyDatabaseDialect(root, dialect) {
1659
1655
  const config = readConfig(root);
1660
1656
  if (dialect === "postgresql") {
1661
1657
  if (config.database === "pg") {
1662
- log.info("PostgreSQL already configured in void.json");
1658
+ log.info("PostgreSQL already configured in void.config.ts");
1663
1659
  return;
1664
1660
  }
1665
1661
  config.database = "pg";
1666
1662
  writeVoidConfig(root, config);
1667
- log.success("Configured PostgreSQL in void.json");
1663
+ log.success("Configured PostgreSQL in void.config.ts");
1668
1664
  return;
1669
1665
  }
1670
1666
  if (dialect === "mysql") {
1671
1667
  if (config.database === "mysql") {
1672
- log.info("MySQL already configured in void.json");
1668
+ log.info("MySQL already configured in void.config.ts");
1673
1669
  return;
1674
1670
  }
1675
1671
  config.database = "mysql";
1676
1672
  writeVoidConfig(root, config);
1677
- log.success("Configured MySQL in void.json");
1673
+ log.success("Configured MySQL in void.config.ts");
1678
1674
  return;
1679
1675
  }
1680
1676
  clearConfiguredDatabase(root, {
1681
1677
  unchanged: "Using default D1 (SQLite) configuration",
1682
- updated: "Updated void.json to use the default D1 (SQLite) configuration"
1678
+ updated: "Updated void.config.ts to use the default D1 (SQLite) configuration"
1683
1679
  });
1684
1680
  }
1685
1681
  function detectDatabaseSetup(root) {
@@ -1692,7 +1688,7 @@ function applyDatabaseSetup(root, choice) {
1692
1688
  if (choice === "none") {
1693
1689
  clearConfiguredDatabase(root, {
1694
1690
  unchanged: "No database configured yet",
1695
- updated: "Removed database config from void.json"
1691
+ updated: "Removed database config from void.config.ts"
1696
1692
  });
1697
1693
  return;
1698
1694
  }
@@ -1710,12 +1706,12 @@ async function promptStarterMode() {
1710
1706
  {
1711
1707
  value: "postgresql",
1712
1708
  label: "PostgreSQL",
1713
- hint: "Scaffolds the same starter with PostgreSQL, a generated migration, a seed file, and writes \"database\": \"pg\" to void.json."
1709
+ hint: "Scaffolds the same starter with PostgreSQL, a generated migration, a seed file, and writes database: \"pg\" to void.config.ts."
1714
1710
  },
1715
1711
  {
1716
1712
  value: "mysql",
1717
1713
  label: "MySQL",
1718
- hint: "Scaffolds the same starter with MySQL, a generated migration, a seed file, and writes \"database\": \"mysql\" to void.json."
1714
+ hint: "Scaffolds the same starter with MySQL, a generated migration, a seed file, and writes database: \"mysql\" to void.config.ts."
1719
1715
  },
1720
1716
  {
1721
1717
  value: "static",
@@ -1822,7 +1818,7 @@ async function ensureVoidPlatformConnection(root) {
1822
1818
  let selectedApiUrl = null;
1823
1819
  let promptedForPlatform = false;
1824
1820
  try {
1825
- const { getApiUrl, getSiteDomain } = await import("./auth-DPl6kck4.mjs").then((n) => n.t);
1821
+ const { getApiUrl, getSiteDomain } = await import("./auth-CAw7zHqj.mjs");
1826
1822
  selectedApiUrl = getApiUrl(root);
1827
1823
  getSiteDomain(root);
1828
1824
  } catch (error) {
@@ -1998,7 +1994,7 @@ function setupGithubActions(root, state, platform = "void", platformApiUrl = WOR
1998
1994
  mkdirSync(workflowDir, { recursive: true });
1999
1995
  writeFileSync(workflowPath, getWorkflowYaml(root, state.packageManager, slug, platform, platformApiUrl));
2000
1996
  log.success("Created .github/workflows/void-deploy.yml");
2001
- if (platform === "cloudflare") note("Pushes to main will deploy through the same readiness-gated Cloudflare path.\nAdd a scoped CLOUDFLARE_API_TOKEN repository secret; PostgreSQL/MySQL apps also need DATABASE_URL.\nKeep account_id in wrangler.jsonc.", "GitHub Actions Cloudflare deploy");
1997
+ if (platform === "cloudflare") note("Pushes to main will deploy through the same readiness-gated Cloudflare path.\nAdd a scoped CLOUDFLARE_API_TOKEN repository secret; PostgreSQL/MySQL apps also need DATABASE_URL.\nKeep cloudflare.account_id in void.config.ts.", "GitHub Actions Cloudflare deploy");
2002
1998
  else if (slug) note(`Pushes to main will build and deploy "${slug}" via GitHub OIDC — no token to store.\nConnect the repo to your project in the Void dashboard to authorize it.`, "GitHub Actions OIDC deploy");
2003
1999
  else note("Pushes to main will build and deploy via GitHub OIDC — no token to store.\nSet a VOID_PROJECT repository variable (Settings → Secrets and variables → Actions → Variables)\nto your project slug, and connect the repo to your project in the Void dashboard.", "GitHub Actions OIDC deploy");
2004
2000
  }
@@ -2768,6 +2764,8 @@ async function runInitCommand(root, initArgs) {
2768
2764
  intro(cliTitle("init"));
2769
2765
  const targeted = Boolean(initArgs && (initArgs.tsconfig || initArgs.github || initArgs.agents));
2770
2766
  if (!targeted) root = await resolveInitRoot(root);
2767
+ const hadTypedConfig = existsSync(join(root, TYPED_CONFIG_FILE));
2768
+ if (migrateLegacyVoidConfig(root)) log.success("Migrated project configuration to void.config.ts. Commit void.config.ts and void.lock.json.");
2771
2769
  const workspaceSubpackage = isInsideWorkspaceSubpackage(root);
2772
2770
  if (workspaceSubpackage && initArgs?.git !== void 0) throw new Error("init: The --git/--no-git options are not available when adding a package to an existing monorepo.");
2773
2771
  const gitInitialized = !workspaceSubpackage && (!targeted || initArgs?.git !== void 0) ? await setupGit(root, initArgs?.git) : false;
@@ -2824,14 +2822,15 @@ async function runInitCommand(root, initArgs) {
2824
2822
  ensureProjectTsconfig(root, void 0, hasSchema, hasSchema);
2825
2823
  }
2826
2824
  ensureGitignore(root);
2827
- if (framework) setupWranglerConfig(root, framework);
2828
2825
  if (!targeted) ensureVoidWorkerCompatibilityDate(root);
2826
+ if (framework) setupWranglerConfig(root, framework);
2827
+ if (!hadTypedConfig) migrateFrameworkAdapterPaths(root);
2829
2828
  if (!targeted && !didScaffoldStarter) applyDatabaseSetup(root, await promptDatabaseSetup(root));
2830
2829
  if (!targeted || initArgs?.agents) {
2831
2830
  injectAgentBlock(root);
2832
2831
  const agents = detectAgents(root);
2833
2832
  if (agents.length > 0) {
2834
- const { linkSkillsForSpecificAgents } = await import("./skills-C0RvGjeE.mjs");
2833
+ const { linkSkillsForSpecificAgents } = await import("./skills-B-690E7h.mjs");
2835
2834
  linkSkillsForSpecificAgents(root, agents);
2836
2835
  } else log.info("No coding agent detected; read the bundled docs linked in AGENTS.md");
2837
2836
  }
@@ -2865,7 +2864,7 @@ async function runInitCommand(root, initArgs) {
2865
2864
  let shouldSetupGithub = targeted ? initArgs?.github === true : deploymentPlatform !== "none";
2866
2865
  if (shouldSetupGithub && !githubStepSkipForSubpackage && deploymentPlatform !== "cloudflare" && deploymentPlatform !== "none") {
2867
2866
  if (!voidPlatformDiscovery) {
2868
- const { getApiUrl } = await import("./auth-DPl6kck4.mjs").then((n) => n.t);
2867
+ const { getApiUrl } = await import("./auth-CAw7zHqj.mjs");
2869
2868
  voidPlatformDiscovery = await discoverPlatform(getApiUrl(root));
2870
2869
  }
2871
2870
  if (!voidPlatformDiscovery.capabilities.githubActions) {
@@ -1,8 +1,10 @@
1
- import { A as outro, C as cancel, D as log, E as intro, c as import_picocolors, r as cliTitle } from "./output-B0cfNSx5.mjs";
2
- import { E as writeProjectConfig, S as readProjectConfig, c as getSiteDomain, l as getToken, y as attachSelectedPlatform } from "./auth-DPl6kck4.mjs";
3
- import { n as PlatformClient } from "./client-dHfSJvAN.mjs";
4
- import { n as promptAndCreateProject, r as promptProjectSelection } from "./create-project-Bk9Z0-Jg.mjs";
5
- import { r as resolveProjectBySlug } from "./resolve-project--Vxawf7z.mjs";
1
+ import { c as import_picocolors, r as cliTitle } from "./output-urU86XeT.mjs";
2
+ import { c as getToken, s as getSiteDomain } from "./auth-B9_D6ygs.mjs";
3
+ import { d as writeProjectConfig, o as readProjectConfig, t as attachSelectedPlatform } from "./project-CWNIPoXc.mjs";
4
+ import { O as intro, P as outro, T as cancel, j as log } from "./dist-Dn6nn2IU.mjs";
5
+ import { n as PlatformClient } from "./client-PdAJ-F0t.mjs";
6
+ import { i as promptProjectSelection, r as promptAndCreateProject } from "./create-project-C9lQhRzj.mjs";
7
+ import { r as resolveProjectBySlug } from "./resolve-project-Xvis70DG.mjs";
6
8
  //#region src/cli/link.ts
7
9
  function projectLabel(slug, root, url) {
8
10
  if (url) return url;