void 0.26.0 → 0.27.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 (365) hide show
  1. package/AGENTS_TEMPLATE.md +1 -3
  2. package/README.md +19 -9
  3. package/dist/{account-cmd-CDry3B5V.mjs → account-cmd-l-FM7Ioq.mjs} +8 -7
  4. package/dist/{application-analysis-DC2yPvzY.mjs → application-analysis-DKy02UY0.mjs} +21 -32
  5. package/dist/{application-routing-C9khgLiS.mjs → application-routing-DQyUh_5S.mjs} +1 -1
  6. package/dist/{auth-D52yG7hl.mjs → auth-Dn2vw-SG.mjs} +9 -9
  7. package/dist/{auth-B60QDbjg.mjs → auth-LMJcNESe.mjs} +1 -1
  8. package/dist/{auth-link-DjeOptYi.mjs → auth-link-vz9Z2kmG.mjs} +5 -5
  9. package/dist/{auth-migrations-9vif1uj8.mjs → auth-migrations-BwHgeEsD.mjs} +8 -18
  10. package/dist/{auth-router-BRxIuqDi.mjs → auth-router-DvsCUVw4.mjs} +6 -19
  11. package/dist/{better-auth-shared-BVkjZ3vM.d.mts → better-auth-shared-CPvWD3nG.d.mts} +0 -4
  12. package/dist/{better-auth-shared-hy6RPh9W.mjs → better-auth-shared-DPpj8zxc.mjs} +94 -16
  13. package/dist/{build-cmd-Ce3C8huo.mjs → build-cmd-D6we0VjO.mjs} +8 -7
  14. package/dist/{cache-CS8Yxr5a.mjs → cache-CZRdzKx1.mjs} +8 -8
  15. package/dist/{cancel-deploy-mZsD88Xa.mjs → cancel-deploy-CQ3NnMvf.mjs} +6 -5
  16. package/dist/{cf-access-YTlqvAsk.mjs → cf-access-BcIBSKqG.mjs} +11 -12
  17. package/dist/{cf-build-output-U8o1Gl6X.mjs → cf-build-output-DjvB_872.mjs} +62 -85
  18. package/dist/cf-build-output-H9a97vME.mjs +2 -0
  19. package/dist/cf-user-agent-lKblH3zU.mjs +17 -0
  20. package/dist/cli/cli.mjs +48 -83
  21. package/dist/cli/cloudflare-operation-process.mjs +78 -78
  22. package/dist/cli/env-schema-probe.mjs +5 -6
  23. package/dist/{client-mC-dFGDD.mjs → client-DlDJuY0s.mjs} +30 -8
  24. package/dist/client-tso2OfcG.mjs +2 -0
  25. package/dist/{cloudflare-auth-Qdc7tw8F.mjs → cloudflare-auth-CuxfF6OA.mjs} +9 -17
  26. package/dist/{cloudflare-cmd-bhwCxAN6.mjs → cloudflare-cmd-lHqNlJGW.mjs} +6 -5
  27. package/dist/{cloudflare-config-Bktvwtpf.mjs → cloudflare-config-BmhBv3HV.mjs} +1 -1
  28. package/dist/{cloudflare-connect-CuhRgk3k.mjs → cloudflare-connect-2G3rL2rP.mjs} +4 -4
  29. package/dist/{cloudflare-operations-DoQrVHAt.mjs → cloudflare-operations-BlYLlowZ.mjs} +1 -1
  30. package/dist/{cloudflare-operations-DYa3coIk.mjs → cloudflare-operations-CwI1bChl.mjs} +41 -70
  31. package/dist/{cloudflare-process-B-wekeR6.mjs → cloudflare-process-2-TfIEzB.mjs} +20 -22
  32. package/dist/{config-CyQ-wVd7.mjs → config-5r-YpMC-.mjs} +1 -1
  33. package/dist/{config-C_XRIPx2.mjs → config-B_ggY-IO.mjs} +3 -3
  34. package/dist/config-BtSFvXZx.mjs +2 -0
  35. package/dist/config-CLYAosnQ.mjs +78 -0
  36. package/dist/{config-BMHb8RCj.d.mts → config-CSa15FvD.d.mts} +1 -1
  37. package/dist/{config-Br_JZD6u.mjs → config-DiowPT80.mjs} +24 -30
  38. package/dist/config-entry.d.mts +1 -1
  39. package/dist/{config-write-B1f88wJA.mjs → config-write-AHGesphx.mjs} +8 -7
  40. package/dist/{connect-H6EvP62X.mjs → connect-BfPBHHm-.mjs} +12 -11
  41. package/dist/{create-project-B2kk9Q0o.mjs → create-project-BdXEFKal.mjs} +7 -7
  42. package/dist/{create-project-Dbb4uiN-.mjs → create-project-qFDC45zg.mjs} +1 -1
  43. package/dist/{db-DpCKZto0.mjs → db-Xs80hcaA.mjs} +101 -133
  44. package/dist/{delete-CxlSvsvW.mjs → delete-d2vuou3j.mjs} +7 -7
  45. package/dist/{deploy-CeEbnv4b.mjs → deploy-Bqe1PYBw.mjs} +2351 -2497
  46. package/dist/deploy-VsWsVQkw.mjs +2 -0
  47. package/dist/{dev-inbox-D64ZKUod.mjs → dev-inbox-CK-UuPob.mjs} +7 -16
  48. package/dist/{discover-BcPPiF1o.mjs → discover-CkCYv9T_.mjs} +1 -2
  49. package/dist/discover-EDUf6JJw.mjs +2 -0
  50. package/dist/{prompts-ZAuJlyCj.mjs → dist-Bx1z6Eva.mjs} +1 -1
  51. package/dist/{dist-AoCzRTJE.mjs → dist-Cegxq8gs.mjs} +8 -8
  52. package/dist/{prompts-6OSVA7DJ.mjs → dist-D3m88sjf.mjs} +10 -53
  53. package/dist/{domain-B_9VgOm6.mjs → domain-BsDUBAvt.mjs} +29 -30
  54. package/dist/{dotenv-VQxupEUv.mjs → dotenv-BfU6eqFt.mjs} +20 -32
  55. package/dist/{drizzle-Beb2Am5S.mjs → drizzle-CF84FOVM.mjs} +16 -13
  56. package/dist/{email-BokHgjKj.mjs → email-_lGAHOhp.mjs} +24 -19
  57. package/dist/{email--tEtMoj_.mjs → email-d_Aux1vM.mjs} +1 -1
  58. package/dist/{entry-CF5wvH4w.mjs → entry-CMAkqBmU.mjs} +6 -6
  59. package/dist/{env-_v349JBd.mjs → env-BxocywBB.mjs} +25 -6
  60. package/dist/{env-BdTc-K2L.mjs → env-C74QepDE.mjs} +10 -10
  61. package/dist/{env-D5liuQYR.mjs → env-DMA3cXZt.mjs} +1 -1
  62. package/dist/{env-raw-Cx8ElDdj.mjs → env-raw-jZpP5n47.mjs} +1 -2
  63. package/dist/{env-types-D5kds_OZ.mjs → env-types-CwXgeMgL.mjs} +1 -1
  64. package/dist/{env-validation-cZBvGWaP.mjs → env-validation-CrVNjsPm.mjs} +1 -1
  65. package/dist/{env-validation-vBSQ8gw5.mjs → env-validation-Dxdx_5wo.mjs} +17 -21
  66. package/dist/{fetch-_SeGZao9.d.mts → fetch-BPCYVi3H.d.mts} +20 -1
  67. package/dist/{fetch-BIZJh7vR.mjs → fetch-sAcwjzLO.mjs} +1 -1
  68. package/dist/{fetch-stream-Nm3hkZbT.mjs → fetch-stream-PGgz4uGz.mjs} +18 -23
  69. package/dist/{fetch-stream-Bjf0hoZb.d.mts → fetch-stream-obvZ7fvO.d.mts} +1 -16
  70. package/dist/{gen-BhDlTpwW.mjs → gen-DtkQhvQg.mjs} +40 -57
  71. package/dist/gen-dA9hW7AV.mjs +2 -0
  72. package/dist/{github-cmd-hhkTzlGS.mjs → github-cmd-DaDdBbSS.mjs} +65 -164
  73. package/dist/{handler-DghKr6dU.mjs → handler-BHAn2fZJ.mjs} +1 -0
  74. package/dist/{handler-BeK3weD4.d.mts → handler-CNAwjRcW.d.mts} +4 -11
  75. package/dist/{head-Do8P4puT.d.mts → head-C8K_iGe6.d.mts} +1 -1
  76. package/dist/{head-D_QRR5Yd.mjs → head-D2VF4ApL.mjs} +29 -51
  77. package/dist/{headers-2rKda9Y6.mjs → headers-DlfR78Nu.mjs} +3 -3
  78. package/dist/{help-Bv44e2tm.mjs → help-0bTe_lID.mjs} +13 -32
  79. package/dist/help-DfQYVfGY.mjs +2 -0
  80. package/dist/{inbound-fRkqcXaC.mjs → inbound-PfQDLXc5.mjs} +23 -24
  81. package/dist/index.d.mts +19 -2
  82. package/dist/index.mjs +619 -532
  83. package/dist/{info-DhtTKh65.mjs → info-PYWwkWyt.mjs} +4 -4
  84. package/dist/{init-BMf4T03q.mjs → init-DaBGmaXC.mjs} +161 -198
  85. package/dist/{link-BqYsSS_I.mjs → link-C6fjafep.mjs} +10 -10
  86. package/dist/{list-_kBToO-l.mjs → list-BTFBlqKl.mjs} +9 -8
  87. package/dist/{live-CB1y5IuC.mjs → live-CgQuTpqD.mjs} +15 -16
  88. package/dist/{live-iAuEH1hd.d.mts → live-Du8jXwOW.d.mts} +4 -2
  89. package/dist/{local-d1-fGxYrVD6.mjs → local-d1-ga5O_idV.mjs} +2 -2
  90. package/dist/{login-DFuo-RWO.mjs → login-GKcNUmtI.mjs} +7 -7
  91. package/dist/login-mx_ydhmp.mjs +2 -0
  92. package/dist/{logs-DYgnh6dH.mjs → logs-BiMSULmc.mjs} +28 -11
  93. package/dist/migrate-BHp07yJE.mjs +2 -0
  94. package/dist/{migrate-CV1on-yJ.mjs → migrate-NLsjBbuM.mjs} +34 -20
  95. package/dist/{mime-D5Nmdzf7.mjs → mime-DxCznlJq.mjs} +45 -95
  96. package/dist/{node-C6Q6e1Es.mjs → node-DJicPvPj.mjs} +5 -5
  97. package/dist/{operator-args-DdY54Bgb.mjs → operator-args-DOBhIaIg.mjs} +10 -1
  98. package/dist/{operator-auth-2dsGlTT5.mjs → operator-auth-BEZ_u0Cz.mjs} +2 -2
  99. package/dist/{operator-client-BFqpp6z0.mjs → operator-client-DbDv4vtE.mjs} +2 -2
  100. package/dist/{operator-cmd-CUGHXrQf.mjs → operator-cmd-BT4hgavL.mjs} +24 -11
  101. package/dist/operator-cmd-CwBB-1yb.mjs +2 -0
  102. package/dist/{output-BvdaehtE.mjs → output-C50ag2r3.mjs} +20 -2
  103. package/dist/pages/client.d.mts +19 -51
  104. package/dist/pages/client.mjs +204 -225
  105. package/dist/pages/head-client.d.mts +1 -1
  106. package/dist/pages/head.d.mts +1 -1
  107. package/dist/pages/head.mjs +1 -1
  108. package/dist/pages/index.d.mts +2 -2
  109. package/dist/pages/index.mjs +6 -12
  110. package/dist/pages/islands-plugin.d.mts +1 -1
  111. package/dist/pages/islands-plugin.mjs +21 -25
  112. package/dist/pages/protocol.d.mts +2 -2
  113. package/dist/pages/protocol.mjs +2 -2
  114. package/dist/{plan-CJGEeTEI.mjs → plan-BhLO2p4w.mjs} +2 -1
  115. package/dist/plan-CH2G51je.mjs +2 -0
  116. package/dist/platform-args-D4E1PjVw.mjs +2 -0
  117. package/dist/{platform-args-DSV2p4nY.mjs → platform-args-DUeXY9Om.mjs} +1 -1
  118. package/dist/{platform-auth-config-Bosx7U1h.mjs → platform-auth-config-CkSx3usH.mjs} +40 -36
  119. package/dist/{platform-auth-protection-DcbL_LW_.mjs → platform-auth-protection-BJimB_p9.mjs} +9 -8
  120. package/dist/{platform-auth-recovery-WfTZ8K6o.mjs → platform-auth-recovery-BU6izFAU.mjs} +8 -7
  121. package/dist/{platform-cmd-DbKtQb_4.mjs → platform-cmd-BbY1dWiM.mjs} +14 -13
  122. package/dist/{platform-cmd-dyFUof0t.mjs → platform-cmd-BbmJiq5O.mjs} +1 -1
  123. package/dist/{platform-discovery-BC0HCKYt.mjs → platform-discovery-DIYz8V63.mjs} +1 -1
  124. package/dist/{platform-domain-Bsq43AJp.mjs → platform-domain-CHVS6cV0.mjs} +6 -6
  125. package/dist/{platform-lifecycle--5gWmDoI.mjs → platform-lifecycle-ByAlpkhV.mjs} +1 -1
  126. package/dist/{platform-lifecycle-Cfi0o6xM.mjs → platform-lifecycle-DzCwqhFq.mjs} +76 -387
  127. package/dist/{platform-management-Bbwf6-Dq.mjs → platform-management-CBOT4BSM.mjs} +1 -1
  128. package/dist/{platform-management-BrF9STZp.mjs → platform-management-CuuVDhyt.mjs} +7 -7
  129. package/dist/{platform-plans-config-DU-8nC2Y.mjs → platform-plans-config-CN-heS4q.mjs} +5 -4
  130. package/dist/{platform-recovery-DQAqAQYu.mjs → platform-recovery-CskSJgLh.mjs} +3 -3
  131. package/dist/{platform-registry-P387v42A.mjs → platform-registry-Cjv2Qf0r.mjs} +5 -1
  132. package/dist/platform-setup-BBxRxmFC.mjs +299 -0
  133. package/dist/{plugin-inference-CXWnn79A.mjs → plugin-inference-BlQbOL0P.mjs} +43 -42
  134. package/dist/prepare-DRUV-g3X.mjs +2 -0
  135. package/dist/{prepare-WoUubFKL.mjs → prepare-Do96654b.mjs} +8 -8
  136. package/dist/{prepare-BMrRWLwP.mjs → prepare-Dq9hTIbo.mjs} +4 -4
  137. package/dist/{prerender-render-D9qbLs2f.mjs → prerender-render-Ct20jftc.mjs} +17 -3
  138. package/dist/prerender-render.mjs +1 -1
  139. package/dist/{project-DQstYTxO.mjs → project-BAm2aB6Q.mjs} +1 -1
  140. package/dist/{project-BiaPQ7ur.mjs → project-DedqCp59.mjs} +1 -1
  141. package/dist/{project-cmd-BbH2LptN.mjs → project-cmd-DaoRrn-8.mjs} +19 -19
  142. package/dist/{project-team-Yiww3-go.mjs → project-team-Q_lCA7Io.mjs} +15 -18
  143. package/dist/{project-token-BrtT2NkY.mjs → project-token-BArgK9o1.mjs} +14 -17
  144. package/dist/{project-tsconfig-B8GeM0RM.mjs → project-tsconfig-CVJhNMxs.mjs} +2 -1
  145. package/dist/{project-zero-trust-nYJ2V2nc.mjs → project-zero-trust-KO9Hu2Pq.mjs} +12 -9
  146. package/dist/{protocol-BX8t2jiw.d.mts → protocol-BPZaNqBo.d.mts} +4 -2
  147. package/dist/{protocol-U7bfjHmA.mjs → protocol-CfaUwNs8.mjs} +46 -49
  148. package/dist/{providers-CJlNS3kT.mjs → providers-BXuhmuub.mjs} +1 -12
  149. package/dist/{provision-VeqAC77A.mjs → provision-BfaLiWbj.mjs} +38 -41
  150. package/dist/{provision-DMTPG8Rh.mjs → provision-Wu9ZBk9L.mjs} +2 -3
  151. package/dist/{requests-TIz_jtSu.mjs → requests-C7Oeoh5u.mjs} +5 -5
  152. package/dist/resolve-project-BIeYs9Cw.mjs +2 -0
  153. package/dist/{resolve-project-BG5ORGID.mjs → resolve-project-CP8rZs_p.mjs} +6 -1
  154. package/dist/{rollback-dBqICPzj.mjs → rollback-DVAtrLAl.mjs} +30 -37
  155. package/dist/{route-types-Clm4WD0B.mjs → route-types-CbtsIeFn.mjs} +1 -1
  156. package/dist/route-url-BgPja1GS.d.mts +5 -0
  157. package/dist/route-url-BjGv_KKY.mjs +28 -0
  158. package/dist/runner-9wjsSZx-.mjs +2 -0
  159. package/dist/{runner--2KF6Kua.mjs → runner-DMBKSrRk.mjs} +2 -2
  160. package/dist/{runner-mysql-DmWchSWJ.mjs → runner-mysql-CEzKtmFb.mjs} +8 -8
  161. package/dist/{runner-mysql-CEG5JozK.mjs → runner-mysql-CkFqZ6CE.mjs} +1 -1
  162. package/dist/{runner-pg-Bh4AgZdj.mjs → runner-pg-BGYRFdRp.mjs} +1 -1
  163. package/dist/runtime/ai.d.mts +1 -1
  164. package/dist/runtime/ai.mjs +34 -95
  165. package/dist/runtime/better-auth-mysql.d.mts +1 -1
  166. package/dist/runtime/better-auth-mysql.mjs +4 -9
  167. package/dist/runtime/better-auth-pg.d.mts +1 -1
  168. package/dist/runtime/better-auth-pg.mjs +5 -10
  169. package/dist/runtime/better-auth.d.mts +1 -1
  170. package/dist/runtime/better-auth.mjs +3 -3
  171. package/dist/runtime/client-react.d.mts +2 -3
  172. package/dist/runtime/client-react.mjs +2 -2
  173. package/dist/runtime/client-solid.d.mts +2 -3
  174. package/dist/runtime/client-solid.mjs +2 -2
  175. package/dist/runtime/client-svelte.d.mts +2 -3
  176. package/dist/runtime/client-svelte.mjs +2 -2
  177. package/dist/runtime/client-vue.d.mts +2 -3
  178. package/dist/runtime/client-vue.mjs +2 -2
  179. package/dist/runtime/client.d.mts +2 -3
  180. package/dist/runtime/client.mjs +2 -2
  181. package/dist/runtime/db.mjs +1 -1
  182. package/dist/runtime/durable.mjs +3 -10
  183. package/dist/runtime/email/testing.mjs +5 -5
  184. package/dist/runtime/email.d.mts +2 -1
  185. package/dist/runtime/email.mjs +11 -27
  186. package/dist/runtime/env-public.mjs +15 -20
  187. package/dist/runtime/env.mjs +1 -1
  188. package/dist/runtime/fetch-stream.d.mts +2 -2
  189. package/dist/runtime/fetch-stream.mjs +1 -1
  190. package/dist/runtime/fetch.d.mts +2 -3
  191. package/dist/runtime/fetch.mjs +1 -1
  192. package/dist/runtime/handler.d.mts +1 -1
  193. package/dist/runtime/handler.mjs +2 -2
  194. package/dist/runtime/isr.mjs +1 -1
  195. package/dist/runtime/kv.mjs +10 -11
  196. package/dist/runtime/live-client.d.mts +1 -1
  197. package/dist/runtime/live-client.mjs +12 -22
  198. package/dist/runtime/live-server.mjs +27 -35
  199. package/dist/runtime/live.d.mts +2 -2
  200. package/dist/runtime/live.mjs +2 -2
  201. package/dist/runtime/migration-handler.mjs +4 -81
  202. package/dist/runtime/queues.mjs +1 -1
  203. package/dist/runtime/remote/binding-handler.d.mts +2 -2
  204. package/dist/runtime/remote/binding-handler.mjs +8 -9
  205. package/dist/runtime/remote/index.mjs +27 -77
  206. package/dist/runtime/route-url.d.mts +2 -4
  207. package/dist/runtime/route-url.mjs +1 -1
  208. package/dist/runtime/routing.d.mts +1 -1
  209. package/dist/runtime/routing.mjs +15 -26
  210. package/dist/runtime/sandbox.mjs +2 -2
  211. package/dist/runtime/sse.mjs +1 -1
  212. package/dist/runtime/storage.mjs +1 -1
  213. package/dist/runtime/validator.d.mts +1 -1
  214. package/dist/runtime/ws-server.d.mts +2 -2
  215. package/dist/runtime/ws-server.mjs +30 -61
  216. package/dist/runtime/ws.d.mts +1 -1
  217. package/dist/runtime/ws.mjs +1 -1
  218. package/dist/{scan-C8dA7iM4.mjs → scan-C3uDzz6J.mjs} +12 -13
  219. package/dist/{secret-AKnNXNP5.mjs → secret-BvtB7IjY.mjs} +15 -15
  220. package/dist/{skills-BPQUGClu.mjs → skills-BgVMvQdy.mjs} +2 -2
  221. package/dist/{sse-CQNaDFFV.mjs → sse-CMvCgjNk.mjs} +1 -1
  222. package/dist/{subcommand-prompt-B6WS9Aoz.mjs → subcommand-prompt-BSlnD1fI.mjs} +2 -2
  223. package/dist/sveltekit.d.mts +0 -2
  224. package/dist/terminal-log-text-D9ACPOuG.mjs +32 -0
  225. package/dist/validate-BJr9LfXy.mjs +2 -0
  226. package/dist/{validate-ymhap6M_.mjs → validate-C9qJArv7.mjs} +9 -28
  227. package/dist/{defer-YsYDUoii.mjs → validation-error-Dg9Recn1.mjs} +11 -11
  228. package/dist/{wrangler-DhUerFkW.mjs → wrangler-D9KTuqnv.mjs} +89 -194
  229. package/dist/{ws-C79j4aED.d.mts → ws-CChrrAU-.d.mts} +1 -1
  230. package/dist/{yarn-pnp-BV4AzNul.mjs → yarn-pnp-CUX_iTPA.mjs} +19 -27
  231. package/{skills/void/docs → docs}/guide/ai.md +5 -3
  232. package/{skills/void/docs → docs}/guide/auth.md +37 -1
  233. package/{skills/void/docs → docs}/guide/database/postgresql.md +2 -2
  234. package/{skills/void/docs → docs}/guide/deployment.md +2 -2
  235. package/{skills/void/docs → docs}/guide/edge/revalidation.md +1 -1
  236. package/{skills/void/docs → docs}/guide/edge/rewrites.md +2 -4
  237. package/{skills/void/docs → docs}/guide/email/receiving.md +2 -2
  238. package/{skills/void/docs → docs}/guide/email/sending.md +0 -2
  239. package/{skills/void/docs → docs}/guide/env-vars.md +4 -0
  240. package/{skills/void/docs → docs}/guide/jobs.md +2 -2
  241. package/{skills/void/docs → docs}/guide/live.md +10 -5
  242. package/{skills/void/docs → docs}/guide/pages-routing/actions-and-forms.md +20 -8
  243. package/{skills/void/docs → docs}/guide/pages-routing/loaders.md +7 -3
  244. package/{skills/void/docs → docs}/guide/pages-routing/markdown.md +15 -23
  245. package/{skills/void/docs → docs}/guide/pages-routing/overview.md +6 -4
  246. package/{skills/void/docs → docs}/guide/platform/administration/access.md +3 -11
  247. package/{skills/void/docs → docs}/guide/platform/administration/operations.md +3 -12
  248. package/{skills/void/docs → docs}/guide/platform/administration/projects.md +1 -1
  249. package/{skills/void/docs → docs}/guide/platform/development/local.md +4 -2
  250. package/{skills/void/docs → docs}/guide/platform/development/runtime.md +1 -1
  251. package/{skills/void/docs → docs}/guide/platform/development/schema-ci.md +1 -1
  252. package/{skills/void/docs → docs}/guide/platform/installation/domains.md +3 -1
  253. package/{skills/void/docs → docs}/guide/platform/installation/first-deployment.md +4 -2
  254. package/{skills/void/docs → docs}/guide/platform/installation/maintenance.md +4 -0
  255. package/{skills/void/docs → docs}/guide/project-collaboration.md +7 -3
  256. package/{skills/void/docs → docs}/guide/queues.md +0 -2
  257. package/{skills/void/docs → docs}/guide/remote-dev.md +5 -5
  258. package/{skills/void/docs → docs}/guide/sandboxes.md +2 -2
  259. package/{skills/void/docs → docs}/guide/sse.md +0 -2
  260. package/{skills/void/docs → docs}/guide/storage.md +7 -2
  261. package/{skills/void/docs → docs}/guide/websockets.md +4 -0
  262. package/docs/integrations/agents.md +37 -0
  263. package/{skills/void/docs → docs}/integrations/frameworks/astro.md +3 -3
  264. package/{skills/void/docs → docs}/integrations/frameworks/nuxt.md +6 -2
  265. package/{skills/void/docs → docs}/integrations/hono.md +15 -7
  266. package/{skills/void/docs → docs}/integrations/nodejs-bun-deno.md +1 -0
  267. package/{skills/void/docs → docs}/reference/api/auth.md +1 -1
  268. package/{skills/void/docs → docs}/reference/api/handlers.md +4 -2
  269. package/{skills/void/docs → docs}/reference/api/pages.md +4 -0
  270. package/{skills/void/docs → docs}/reference/cli/auth.md +1 -6
  271. package/{skills/void/docs → docs}/reference/cli/database.md +3 -4
  272. package/{skills/void/docs → docs}/reference/cli/deploy.md +1 -1
  273. package/{skills/void/docs → docs}/reference/cli/generate.md +1 -1
  274. package/{skills/void/docs → docs}/reference/cli/github.md +3 -12
  275. package/{skills/void/docs → docs}/reference/cli/platform-config.md +1 -1
  276. package/{skills/void/docs → docs}/reference/cli/platform-email.md +2 -3
  277. package/{skills/void/docs → docs}/reference/cli/platform-installation.md +1 -1
  278. package/{skills/void/docs → docs}/reference/cli/platform-operations.md +3 -0
  279. package/{skills/void/docs → docs}/reference/cli/platform-users.md +2 -2
  280. package/{skills/void/docs → docs}/reference/cli/project.md +5 -4
  281. package/{skills/void/docs → docs}/reference/cli/secrets.md +3 -3
  282. package/{skills/void/docs → docs}/reference/cli/setup.md +9 -11
  283. package/{skills/void/docs → docs}/reference/cli.md +1 -1
  284. package/{skills/void/docs → docs}/reference/config.md +13 -13
  285. package/{skills/void/docs → docs}/reference/resource-inference.md +1 -16
  286. package/package.json +34 -30
  287. package/schema.json +1 -1
  288. package/skills/migrate-vite-cloudflare-to-void/SKILL.md +4 -1
  289. package/skills/void/SKILL.md +9 -5
  290. package/dist/cf-build-output-ChY6-XWP.mjs +0 -2
  291. package/dist/client-BxVixJBI.mjs +0 -2
  292. package/dist/config-0acf1oys.mjs +0 -2
  293. package/dist/config-D8MOgiQV.mjs +0 -32
  294. package/dist/deploy-qmiLE1G1.mjs +0 -2
  295. package/dist/discover-AMCBXivQ.mjs +0 -2
  296. package/dist/fetch-error-Sp1R4mZv.d.mts +0 -20
  297. package/dist/gen-qCBwH3fZ.mjs +0 -2
  298. package/dist/help-Dw5f9Xrg.mjs +0 -2
  299. package/dist/login-D7meQg_3.mjs +0 -2
  300. package/dist/migrate-CEu2X5DB.mjs +0 -2
  301. package/dist/operator-cmd-DRPvhpjM.mjs +0 -2
  302. package/dist/plan-COtUvdMA.mjs +0 -2
  303. package/dist/platform-args-Dcy_5b_Y.mjs +0 -2
  304. package/dist/prepare-BBknoZI1.mjs +0 -2
  305. package/dist/resolve-project-DtbidV4y.mjs +0 -2
  306. package/dist/route-url-CG7U-cRN.mjs +0 -15
  307. package/dist/runner-voIltZrY.mjs +0 -2
  308. package/dist/validate-pna7R3Pv.mjs +0 -2
  309. package/skills/void/docs/integrations/agents.md +0 -26
  310. package/dist/{runner-pg-D4OPlil-.mjs → runner-pg-DV8p_zjA.mjs} +4 -4
  311. package/{skills/void/docs → docs}/guide/app-types.md +0 -0
  312. package/{skills/void/docs → docs}/guide/database/d1.md +2 -2
  313. package/{skills/void/docs → docs}/guide/database/mysql.md +0 -0
  314. package/{skills/void/docs → docs}/guide/database.md +8 -8
  315. package/{skills/void/docs → docs}/guide/durable-state.md +0 -0
  316. package/{skills/void/docs → docs}/guide/edge/headers.md +0 -0
  317. package/{skills/void/docs → docs}/guide/edge/prerendering.md +0 -0
  318. package/{skills/void/docs → docs}/guide/edge/redirects.md +0 -0
  319. package/{skills/void/docs → docs}/guide/edge/static-assets.md +0 -0
  320. package/{skills/void/docs → docs}/guide/email/domains.md +0 -0
  321. package/{skills/void/docs → docs}/guide/email.md +0 -0
  322. package/{skills/void/docs → docs}/guide/index.md +0 -0
  323. package/{skills/void/docs → docs}/guide/kv.md +0 -0
  324. package/{skills/void/docs → docs}/guide/pages-routing/head.md +0 -0
  325. package/{skills/void/docs → docs}/guide/pages-routing/islands.md +2 -2
  326. package/{skills/void/docs → docs}/guide/pages-routing/layouts.md +0 -0
  327. package/{skills/void/docs → docs}/guide/pages-routing/view-transitions.md +0 -0
  328. package/{skills/void/docs → docs}/guide/platform/administration/email.md +0 -0
  329. package/{skills/void/docs → docs}/guide/platform/administration/plans.md +0 -0
  330. package/{skills/void/docs → docs}/guide/platform/administration/zero-trust.md +0 -0
  331. package/{skills/void/docs → docs}/guide/platform/installation/ci.md +0 -0
  332. package/{skills/void/docs → docs}/guide/platform/installation/credentials.md +0 -0
  333. package/{skills/void/docs → docs}/guide/platform/installation/prerequisites.md +0 -0
  334. package/{skills/void/docs → docs}/guide/platform/installation/setup.md +0 -0
  335. package/{skills/void/docs → docs}/guide/platform/installation/uninstall.md +0 -0
  336. package/{skills/void/docs → docs}/guide/platform-administration.md +0 -0
  337. package/{skills/void/docs → docs}/guide/platform-development.md +0 -0
  338. package/{skills/void/docs → docs}/guide/quickstart.md +0 -0
  339. package/{skills/void/docs → docs}/guide/self-hosted-platform.md +0 -0
  340. package/{skills/void/docs → docs}/guide/server-routing.md +3 -3
  341. package/{skills/void/docs → docs}/guide/ssg.md +0 -0
  342. package/{skills/void/docs → docs}/guide/ssr.md +0 -0
  343. package/{skills/void/docs → docs}/guide/type-safety.md +0 -0
  344. package/{skills/void/docs → docs}/guide/typed-fetch.md +0 -0
  345. package/{skills/void/docs → docs}/index.md +0 -0
  346. package/{skills/void/docs → docs}/integrations/cloudflare.md +0 -0
  347. package/{skills/void/docs → docs}/integrations/frameworks/analog.md +3 -3
  348. package/{skills/void/docs → docs}/integrations/frameworks/overview.md +0 -0
  349. package/{skills/void/docs → docs}/integrations/frameworks/react-router.md +3 -3
  350. package/{skills/void/docs → docs}/integrations/frameworks/sveltekit.md +1 -1
  351. package/{skills/void/docs → docs}/integrations/frameworks/tanstack-start.md +2 -2
  352. package/{skills/void/docs → docs}/reference/api/client.md +0 -0
  353. package/{skills/void/docs → docs}/reference/api/database.md +2 -2
  354. /package/{skills/void/docs → docs}/reference/api/durable.md +0 -0
  355. /package/{skills/void/docs → docs}/reference/api/env.md +0 -0
  356. /package/{skills/void/docs → docs}/reference/api/plugin.md +0 -0
  357. /package/{skills/void/docs → docs}/reference/api/resources.md +0 -0
  358. /package/{skills/void/docs → docs}/reference/api/rewrites.md +0 -0
  359. /package/{skills/void/docs → docs}/reference/api/types.md +0 -0
  360. /package/{skills/void/docs → docs}/reference/api.md +0 -0
  361. /package/{skills/void/docs → docs}/reference/cli/domains.md +0 -0
  362. /package/{skills/void/docs → docs}/reference/cli/email.md +0 -0
  363. /package/{skills/void/docs → docs}/reference/cli/platform-zero-trust.md +0 -0
  364. /package/{skills/void/docs → docs}/reference/cli/platform.md +0 -0
  365. /package/{skills/void/docs → docs}/reference/structure.md +0 -0
@@ -1,9 +1,8 @@
1
1
  import { a as join, n as dirname, o as normalize, t as basename, u as resolve$2 } from "./dist-BVqXeR_h.mjs";
2
2
  import { i as voidWarn, r as voidLog } from "./log-vqY3pqwI.mjs";
3
- import { i as persistCloudflareConfig } from "./cloudflare-config-Bktvwtpf.mjs";
4
- import { A as writeProvisionedWranglerConfig, s as assertNoDuplicateMembers, v as readProvisionedBindingEntry } from "./wrangler-DhUerFkW.mjs";
5
- import { r as scanWranglerDotenvKeys } from "./dotenv-VQxupEUv.mjs";
6
- import { c as resolveCloudflareOperationArgv, n as decodeCloudflareOperationResult, r as encodeCloudflareOperation } from "./cloudflare-process-B-wekeR6.mjs";
3
+ import { _ as persistMaterializedWranglerConfig, j as writeProvisionedWranglerConfig, s as assertNoDuplicateMembers, y as readProvisionedBindingEntry } from "./wrangler-D9KTuqnv.mjs";
4
+ import { n as scanWranglerDotenvKeys } from "./dotenv-BfU6eqFt.mjs";
5
+ import { l as resolveCloudflareOperationArgv, n as decodeCloudflareOperationResult, r as encodeCloudflareOperation } from "./cloudflare-process-2-TfIEzB.mjs";
7
6
  import { createRequire } from "node:module";
8
7
  import { closeSync, existsSync, fsyncSync, lstatSync, openSync, readFileSync, readlinkSync, realpathSync, renameSync, unlinkSync, writeSync } from "node:fs";
9
8
  import { isRecord } from "@void/deploy-core";
@@ -282,21 +281,6 @@ function assertNoTransportRedirectInProjectDotenv(root, platform = process.platf
282
281
  }
283
282
  }
284
283
  /**
285
- * Child-process env with every CF Access credential scrubbed. Mirrors `buildEnv`
286
- * in `deploy.ts`: Access credentials are needed only by this CLI's own guarded
287
- * HTTP requests and must never leak into the spawned wrangler process (which may
288
- * in turn run user hooks). This includes the short-lived cloudflared
289
- * `CF_ACCESS_TOKEN` JWT used by local readiness probes.
290
- *
291
- * Pins ONE transport context: scrubs every {@link TRANSPORT_REDIRECT_ENV_VARS}
292
- * from the child env, then re-sets `CLOUDFLARE_API_BASE_URL` to the SINGLE resolved
293
- * `apiBaseUrl` so the spawned wrangler and the Hyperdrive REST lister hit the exact same
294
- * endpoint. Scrubbing the compliance/staging/env selectors makes the explicit base
295
- * authoritative (they can no longer re-derive a different base). Combined with
296
- * {@link assertNoTransportRedirectInProjectDotenv} (which blocks a project dotenv from
297
- * repopulating any of them via wrangler's per-command reload), the pin cannot be moved.
298
- */
299
- /**
300
284
  * Delete `name` from `env` IN PLACE, honoring the platform's env-key case rule.
301
285
  * Windows environment keys are CASE-INSENSITIVE: a spawned child's `process.env`
302
286
  * resolves `WRANGLER_OUTPUT_FILE_PATH` from an ambient `Wrangler_Output_File_Path`
@@ -314,6 +298,21 @@ function deleteEnvVarCaseAware(env, name, platform = process.platform) {
314
298
  const lower = name.toLowerCase();
315
299
  for (const key of Object.keys(env)) if (key.toLowerCase() === lower) delete env[key];
316
300
  }
301
+ /**
302
+ * Child-process env with every CF Access credential scrubbed. Mirrors `buildEnv`
303
+ * in `deploy.ts`: Access credentials are needed only by this CLI's own guarded
304
+ * HTTP requests and must never leak into the spawned wrangler process (which may
305
+ * in turn run user hooks). This includes the short-lived cloudflared
306
+ * `CF_ACCESS_TOKEN` JWT used by local readiness probes.
307
+ *
308
+ * Pins ONE transport context: scrubs every {@link TRANSPORT_REDIRECT_ENV_VARS}
309
+ * from the child env, then re-sets `CLOUDFLARE_API_BASE_URL` to the SINGLE resolved
310
+ * `apiBaseUrl` so the spawned wrangler and the Hyperdrive REST lister hit the exact same
311
+ * endpoint. Scrubbing the compliance/staging/env selectors makes the explicit base
312
+ * authoritative (they can no longer re-derive a different base). Combined with
313
+ * {@link assertNoTransportRedirectInProjectDotenv} (which blocks a project dotenv from
314
+ * repopulating any of them via wrangler's per-command reload), the pin cannot be moved.
315
+ */
317
316
  function provisionEnv(ctx) {
318
317
  const env = { ...process.env };
319
318
  const platform = ctx?.platform ?? process.platform;
@@ -585,7 +584,7 @@ function armRetentionWatchdog(lock, info) {
585
584
  try {
586
585
  process.kill(process.platform === "win32" ? info.pid : -info.pid, 0);
587
586
  } catch (error) {
588
- dead = error.code === "ESRCH";
587
+ dead = isAlreadyGoneKillError(error);
589
588
  }
590
589
  if (dead) {
591
590
  lock.release().then(() => resolveWatchdog(), (error) => {
@@ -712,14 +711,14 @@ function createDefaultRunWrangler(root, options) {
712
711
  try {
713
712
  process.kill(child.pid, 0);
714
713
  } catch (error) {
715
- if (error.code === "ESRCH") groupGone = true;
714
+ groupGone = isAlreadyGoneKillError(error);
716
715
  }
717
716
  return groupGone;
718
717
  }
719
718
  try {
720
719
  process.kill(-child.pid, 0);
721
720
  } catch (error) {
722
- if (error.code === "ESRCH") groupGone = true;
721
+ groupGone = isAlreadyGoneKillError(error);
723
722
  }
724
723
  return groupGone;
725
724
  };
@@ -1146,7 +1145,7 @@ function assertQuarantineClearedOrClear(lockTarget, onBeforeClear) {
1146
1145
  if (probeTarget !== void 0) try {
1147
1146
  process.kill(probeTarget, 0);
1148
1147
  } catch (error) {
1149
- if (error.code === "ESRCH") confirmedDead = true;
1148
+ confirmedDead = isAlreadyGoneKillError(error);
1150
1149
  }
1151
1150
  if (!confirmedDead) {
1152
1151
  const who = pid !== void 0 || pgid !== void 0 ? `process group ${String(pgid ?? pid)}` : "an unrecorded process";
@@ -1448,7 +1447,7 @@ function parseJsonObject(value) {
1448
1447
  * config, delegating to the STRICT canonical reader in `wrangler.ts`
1449
1448
  * ({@link readProvisionedBindingEntry}). Unlike the old loose first-match `.find()`, this
1450
1449
  * validates the target field's outer shape, fails closed on a DUPLICATE binding, and runs
1451
- * the worker-wide CROSS-TYPE collision check (reusing the Task-3 collector) — so a
1450
+ * the worker-wide CROSS-TYPE collision check — so a
1452
1451
  * duplicate/collision config can never be reported `reused` or pass a create postcondition.
1453
1452
  */
1454
1453
  function readBindingEntry(configPath, field, binding) {
@@ -1456,8 +1455,8 @@ function readBindingEntry(configPath, field, binding) {
1456
1455
  }
1457
1456
  /**
1458
1457
  * Read + parse the root wrangler config (fresh each call — wrangler mutates it).
1459
- * BOM-aware (wrangler + the Task 3 writer strip a leading BOM before parsing, so
1460
- * we must too, else a BOM-prefixed config would look unparseable). FAILS CLOSED
1458
+ * BOM-aware (wrangler + `writeProvisionedWranglerConfig` strip a leading BOM before
1459
+ * parsing, so we must too, else a BOM-prefixed config would look unparseable). FAILS CLOSED
1461
1460
  * on a genuine parse error or a non-object root: never silently treat a real
1462
1461
  * config as `{}`, which would miss existing ids (re-provision/orphan) and mask a
1463
1462
  * corrupt file. A missing file is fine (nothing to read-first → `{}`).
@@ -1486,7 +1485,7 @@ function assertDiscoverySucceeded(result, label) {
1486
1485
  /**
1487
1486
  * STRICT list validator shared by KV + D1. Rejects the ENTIRE list (throws) if ANY
1488
1487
  * member is not a well-formed object carrying a non-empty name AND a
1489
- * FORMAT-VALID id (per {@link ResourceListSpec.idValidator}). A member is NEVER
1488
+ * FORMAT-VALID id (per {@link ResourceListSpec.hasValidId}). A member is NEVER
1490
1489
  * silently filtered, and a member with a malformed id is NEVER accepted, because
1491
1490
  * either could BE the requested target (or signal a corrupt list) and treating it as
1492
1491
  * "absent" would mint a duplicate. Validates EVERY member up front — BEFORE any
@@ -1577,20 +1576,20 @@ function isAlreadyExistsError(result) {
1577
1576
  return result.errorCode === 7502;
1578
1577
  }
1579
1578
  /**
1580
- * EXACT, name-aware not-found classifier shared by R2 + queues. Given a
1581
- * already-NON-zero `<res> info`-by-name probe, returns `true` (confirmed absent →
1582
- * safe to create) ONLY on wrangler's exact, resource-specific not-found signal
1583
- * for THIS name (regex-escaped). Everything else returns `false` so the caller
1579
+ * Not-found classifier shared by R2 + queues. Given an `<res> info`-by-name probe,
1580
+ * returns `true` (confirmed absent → safe to create) ONLY on a clean non-zero exit
1581
+ * with the provider's typed not-found result (R2 error code 10006; the queue
1582
+ * operation's `not-found` failure). Everything else returns `false` so the caller
1584
1583
  * fails closed — a signal/spawn failure, an auth/network/metrics error, or a
1585
1584
  * GENERIC "not found" (e.g. `Account not found`) is NEVER treated as absence,
1586
1585
  * which would mint a duplicate resource.
1587
1586
  */
1588
- function isConfirmedAbsent(result, kind, _name) {
1587
+ function isConfirmedAbsent(result, kind) {
1589
1588
  return isCleanFailure(result) && (kind === "r2" ? result.errorCode === 10006 : result.failure === "not-found");
1590
1589
  }
1591
1590
  /** Only a completed, typed not-found response confirms queue absence. */
1592
- function isQueueConfirmedAbsent(result, name) {
1593
- return isConfirmedAbsent(result, "queue", name);
1591
+ function isQueueConfirmedAbsent(result, _name) {
1592
+ return isConfirmedAbsent(result, "queue");
1594
1593
  }
1595
1594
  /** Reuse and post-create verification require clean success and the exact returned name. */
1596
1595
  function queueInfoConfirmsExists(result, name) {
@@ -2011,8 +2010,8 @@ function redactRejection(error, redactText) {
2011
2010
  * `wrangler <res> create --update-config` write real ids into the root config.
2012
2011
  * For resources that already exist (adopt path) — where `create` cannot run —
2013
2012
  * the real id is captured from `wrangler <res> list/info` (or, for Hyperdrive,
2014
- * the account-list existence seam) and written through the Task 3 writer's adopt
2015
- * fields. Pure provisioning: NO build, deploy, or drift-check. Idempotent +
2013
+ * the account-list existence seam) and written through `writeProvisionedWranglerConfig`'s
2014
+ * adopt fields. Pure provisioning: NO build, deploy, or drift-check. Idempotent +
2016
2015
  * read-first: a binding already pointing at a real id is left untouched.
2017
2016
  */
2018
2017
  async function provisionCloudflareResources(root, rootWranglerPath, desired, opts) {
@@ -2317,7 +2316,7 @@ async function reconcileR2(desired, configPath, runWrangler, write, persistCreat
2317
2316
  name: bucketName,
2318
2317
  action: "adopted"
2319
2318
  });
2320
- } else if (isConfirmedAbsent(info, "r2", bucketName)) {
2319
+ } else if (isConfirmedAbsent(info, "r2")) {
2321
2320
  const created = await runWrangler({
2322
2321
  type: "r2.bucket.create",
2323
2322
  name: bucketName,
@@ -2448,7 +2447,7 @@ async function reconcileQueues(desired, configPath, runWrangler, resources) {
2448
2447
  });
2449
2448
  continue;
2450
2449
  }
2451
- if (!isConfirmedAbsent(info, "queue", name)) throw new Error(`provision: "wrangler queues info ${name}" failed or did not confirm the queue exists: ${info.stderr || info.stdout || "no output"}`);
2450
+ if (!isConfirmedAbsent(info, "queue")) throw new Error(`provision: "wrangler queues info ${name}" failed or did not confirm the queue exists: ${info.stderr || info.stdout || "no output"}`);
2452
2451
  const created = await runWrangler({
2453
2452
  type: "queues.create",
2454
2453
  name,
@@ -2496,9 +2495,7 @@ async function provisionCloudflareResourcesLocked(root, configPath, desired, opt
2496
2495
  const log = opts?.log ?? defaultLogger;
2497
2496
  const resources = [];
2498
2497
  const write = (patch) => writeProvisionedWranglerConfig(root, patch, { configPath });
2499
- const persistCreatedConfig = () => {
2500
- if (basename(configPath) === ".void-wrangler.jsonc") persistCloudflareConfig(dirname(configPath));
2501
- };
2498
+ const persistCreatedConfig = () => persistMaterializedWranglerConfig(configPath);
2502
2499
  const hasRemoteWork = !!desired.d1 || desired.kvNamespaces.length > 0 || !!desired.r2 || !!desired.hyperdrive || desired.queues.length > 0;
2503
2500
  if (hasRemoteWork && !effectiveAccountId) throw new Error("provision: no Cloudflare account is resolvable — set \"account_id\" in your root wrangler config or export CLOUDFLARE_ACCOUNT_ID before deploying. Refusing to provision resources without a pinned account (wrangler would otherwise fall back to an ambient/interactive account that is never persisted, so a later retry could rebind them elsewhere).");
2504
2501
  if (hasRemoteWork) assertNoTransportRedirectInProjectDotenv(root);
@@ -1,3 +1,2 @@
1
- import { r as scanWranglerDotenvKeys } from "./dotenv-VQxupEUv.mjs";
2
- import { _ as resolvePinnedApiBaseUrl, a as checkCloudflareProvisionDrift, c as enableD1ReadReplicationViaApi, d as isQueueConfirmedAbsent, f as isRealD1Id, g as provisionEnv, h as provisionCloudflareResources, i as assertValidResourceName, l as isAlreadyGoneKillError, m as normalizeRunWranglerResult, n as acquireProvisionLock, o as createDefaultRunWrangler, p as isRealKvId, r as assertNoTransportRedirectInProjectDotenv, s as deleteEnvVarCaseAware, t as WranglerQuarantineError, u as isQuarantineError, v as resolveProperLockfileKey } from "./provision-VeqAC77A.mjs";
3
- export { WranglerQuarantineError, acquireProvisionLock, assertNoTransportRedirectInProjectDotenv, assertValidResourceName, checkCloudflareProvisionDrift, createDefaultRunWrangler, deleteEnvVarCaseAware, enableD1ReadReplicationViaApi, isAlreadyGoneKillError, isQuarantineError, isQueueConfirmedAbsent, isRealD1Id, isRealKvId, normalizeRunWranglerResult, provisionCloudflareResources, provisionEnv, resolvePinnedApiBaseUrl, resolveProperLockfileKey, scanWranglerDotenvKeys };
1
+ import { _ as resolvePinnedApiBaseUrl, a as checkCloudflareProvisionDrift, c as enableD1ReadReplicationViaApi, d as isQueueConfirmedAbsent, f as isRealD1Id, g as provisionEnv, h as provisionCloudflareResources, i as assertValidResourceName, l as isAlreadyGoneKillError, m as normalizeRunWranglerResult, n as acquireProvisionLock, o as createDefaultRunWrangler, p as isRealKvId, r as assertNoTransportRedirectInProjectDotenv, s as deleteEnvVarCaseAware, t as WranglerQuarantineError, u as isQuarantineError, v as resolveProperLockfileKey } from "./provision-BfaLiWbj.mjs";
2
+ export { WranglerQuarantineError, acquireProvisionLock, assertNoTransportRedirectInProjectDotenv, assertValidResourceName, checkCloudflareProvisionDrift, createDefaultRunWrangler, deleteEnvVarCaseAware, enableD1ReadReplicationViaApi, isAlreadyGoneKillError, isQuarantineError, isQueueConfirmedAbsent, isRealD1Id, isRealKvId, normalizeRunWranglerResult, provisionCloudflareResources, provisionEnv, resolvePinnedApiBaseUrl, resolveProperLockfileKey };
@@ -1,8 +1,8 @@
1
- import { r as readProjectConfig } from "./project-DQstYTxO.mjs";
2
- import { c as getToken } from "./auth-D52yG7hl.mjs";
3
- import { H as outro, L as log } from "./prompts-6OSVA7DJ.mjs";
4
- import { r as PlatformClient } from "./client-mC-dFGDD.mjs";
5
- import { c as import_picocolors, i as dim } from "./output-BvdaehtE.mjs";
1
+ import { r as readProjectConfig } from "./project-BAm2aB6Q.mjs";
2
+ import { c as getToken } from "./auth-Dn2vw-SG.mjs";
3
+ import { H as outro, L as log } from "./dist-D3m88sjf.mjs";
4
+ import { i as dim, l as import_picocolors } from "./output-C50ag2r3.mjs";
5
+ import { r as PlatformClient } from "./client-DlDJuY0s.mjs";
6
6
  //#region src/cli/requests.ts
7
7
  async function runRequestsCommand(root, range, status) {
8
8
  console.log();
@@ -0,0 +1,2 @@
1
+ import { n as inferDefaultSlug } from "./resolve-project-CP8rZs_p.mjs";
2
+ export { inferDefaultSlug };
@@ -15,9 +15,14 @@ function resolveProjectBySlug(projects, slug) {
15
15
  slug: project.slug
16
16
  } : null;
17
17
  }
18
+ async function requireProjectBySlug(client, slug) {
19
+ const project = resolveProjectBySlug(await client.listProjects(), slug);
20
+ if (!project) throw new Error(`project: No project found with slug '${slug}'.`);
21
+ return project;
22
+ }
18
23
  function inferDefaultSlug(root) {
19
24
  const pkgPath = join(root, "package.json");
20
25
  return (JSON.parse(readFileSync(pkgPath, "utf-8")).name ?? "my-app").replace(/^@[^/]+\//, "").replace(/[^a-z0-9-]/g, "-");
21
26
  }
22
27
  //#endregion
23
- export { inferDefaultSlug as n, resolveProjectBySlug as r, getRequestedProjectSlug as t };
28
+ export { resolveProjectBySlug as i, inferDefaultSlug as n, requireProjectBySlug as r, getRequestedProjectSlug as t };
@@ -1,8 +1,8 @@
1
- import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-DQstYTxO.mjs";
2
- import { c as getToken } from "./auth-D52yG7hl.mjs";
3
- import { A as confirm, H as outro, K as select, L as log, O as cancel, tt as isCancel } from "./prompts-6OSVA7DJ.mjs";
4
- import { r as PlatformClient } from "./client-mC-dFGDD.mjs";
5
- import { a as ensureUtc, c as import_picocolors, i as dim, o as formatCount, r as createSpinner } from "./output-BvdaehtE.mjs";
1
+ import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-BAm2aB6Q.mjs";
2
+ import { c as getToken } from "./auth-Dn2vw-SG.mjs";
3
+ import { A as confirm, H as outro, K as select, L as log, O as cancel, tt as isCancel } from "./dist-D3m88sjf.mjs";
4
+ import { a as ensureUtc, d as printSuccess, i as dim, r as createSpinner, s as formatCount } from "./output-C50ag2r3.mjs";
5
+ import { r as PlatformClient } from "./client-DlDJuY0s.mjs";
6
6
  //#region src/cli/rollback.ts
7
7
  async function runRollbackCommand(root, deployId) {
8
8
  console.log();
@@ -54,23 +54,16 @@ async function runRollbackCommand(root, deployId) {
54
54
  const currentMigrations = active?.applied_migrations ? JSON.parse(active.applied_migrations) : [];
55
55
  const targetMigrations = target.applied_migrations ? JSON.parse(target.applied_migrations) : [];
56
56
  const migrationDiff = currentMigrations.filter((m) => !targetMigrations.includes(m));
57
- if (migrationDiff.length > 0) {
58
- log.warn(`The current database has ${formatCount(migrationDiff.length, "migration")} applied after this deployment:`);
59
- for (const m of migrationDiff) log.message(` ${dim("•")} ${m}`);
60
- log.message(dim("Rolling back will NOT revert these migrations. The older code will run against the current schema."));
61
- const proceed = await confirm({ message: "Proceed with rollback?" });
62
- if (isCancel(proceed) || !proceed) {
63
- cancel("Rollback cancelled.");
64
- process.exit(0);
65
- }
66
- }
57
+ await confirmUnrevertedMigrations(migrationDiff, "deployment");
67
58
  const s = createSpinner();
68
59
  s.start("Rolling back...");
69
60
  try {
70
61
  const result = await client.rollback(linked.projectId, targetId, { allowDestructive: migrationDiff.length > 0 ? migrationDiff : void 0 });
71
62
  s.stop("Rollback complete.");
72
- if (result.ok) log.success(`Rolled back to ${import_picocolors.default.bold(targetId)}`);
73
- else {
63
+ if (result.ok) {
64
+ log.info("Traffic is now serving the rolled-back deployment.");
65
+ printSuccess(`Rolled back to ${targetId}.`);
66
+ } else {
74
67
  log.error(result.error ?? "Rollback failed.");
75
68
  process.exit(1);
76
69
  }
@@ -79,10 +72,9 @@ async function runRollbackCommand(root, deployId) {
79
72
  log.error(err instanceof Error ? err.message : String(err));
80
73
  process.exit(1);
81
74
  }
82
- outro(dim("Traffic is now serving the rolled-back deployment."));
83
75
  }
84
76
  async function runCloudflareRollback(root, deployId) {
85
- const { activateCloudflareExistingVersion, readCloudflareWorkerStatus, resolveCloudflareOperationContext } = await import("./cloudflare-operations-DoQrVHAt.mjs");
77
+ const { activateCloudflareExistingVersion, readCloudflareWorkerStatus, resolveCloudflareOperationContext } = await import("./cloudflare-operations-BlYLlowZ.mjs");
86
78
  const context = resolveCloudflareOperationContext(root);
87
79
  const status = await readCloudflareWorkerStatus(context);
88
80
  const deployedVersionIds = new Set(status.deployedVersionIds);
@@ -121,24 +113,10 @@ async function runCloudflareRollback(root, deployId) {
121
113
  if (target.metadata?.schema !== 2 || current?.metadata?.schema !== 2 || target.metadata.triggerConfig.preserve || current.metadata.triggerConfig.preserve) log.info("This rollback keeps the current domains, routes, and schedules. The selected version has no complete trigger snapshot.");
122
114
  if (!current?.metadata || !target.metadata) {
123
115
  log.warn("Void migration metadata is unavailable for one of these versions. Database migrations are forward-only and will not be reverted.");
124
- const proceed = await confirm({ message: "Proceed with rollback?" });
125
- if (isCancel(proceed) || !proceed) {
126
- cancel("Rollback cancelled.");
127
- process.exit(0);
128
- }
116
+ await confirmRollbackOrExit();
129
117
  } else {
130
118
  const targetSet = new Set(target.metadata.migrations);
131
- const migrationDiff = current.metadata.migrations.filter((migration) => !targetSet.has(migration));
132
- if (migrationDiff.length > 0) {
133
- log.warn(`The current database has ${formatCount(migrationDiff.length, "migration")} applied after this version:`);
134
- for (const migration of migrationDiff) log.message(` ${dim("•")} ${migration}`);
135
- log.message(dim("Rolling back will NOT revert these migrations. The older code will run against the current schema."));
136
- const proceed = await confirm({ message: "Proceed with rollback?" });
137
- if (isCancel(proceed) || !proceed) {
138
- cancel("Rollback cancelled.");
139
- process.exit(0);
140
- }
141
- }
119
+ await confirmUnrevertedMigrations(current.metadata.migrations.filter((migration) => !targetSet.has(migration)), "version");
142
120
  }
143
121
  const spinner = createSpinner();
144
122
  spinner.start("Rolling back...");
@@ -150,8 +128,23 @@ async function runCloudflareRollback(root, deployId) {
150
128
  log.error(error instanceof Error ? error.message : String(error));
151
129
  process.exit(1);
152
130
  }
153
- log.success(`Rolled back to ${import_picocolors.default.bold(target.id)}`);
154
- outro(dim("Traffic is now serving the selected Cloudflare Worker Version."));
131
+ log.info("Traffic is now serving the selected Cloudflare Worker Version.");
132
+ printSuccess(`Rolled back to ${target.id}.`);
133
+ }
134
+ async function confirmRollbackOrExit() {
135
+ const proceed = await confirm({ message: "Proceed with rollback?" });
136
+ if (isCancel(proceed) || !proceed) {
137
+ cancel("Rollback cancelled.");
138
+ process.exit(0);
139
+ }
140
+ }
141
+ /** List migrations the rollback will not revert and ask before continuing. */
142
+ async function confirmUnrevertedMigrations(migrationDiff, noun) {
143
+ if (migrationDiff.length === 0) return;
144
+ log.warn(`The current database has ${formatCount(migrationDiff.length, "migration")} applied after this ${noun}:`);
145
+ for (const migration of migrationDiff) log.message(` ${dim("•")} ${migration}`);
146
+ log.message(dim("Rolling back will NOT revert these migrations. The older code will run against the current schema."));
147
+ await confirmRollbackOrExit();
155
148
  }
156
149
  function formatAge(deployedAt) {
157
150
  if (!deployedAt) return "";
@@ -1,5 +1,5 @@
1
1
  import { a as join, l as relative } from "./dist-BVqXeR_h.mjs";
2
- import { r as writeFileIfChanged } from "./project-tsconfig-B8GeM0RM.mjs";
2
+ import { r as writeFileIfChanged } from "./project-tsconfig-CVJhNMxs.mjs";
3
3
  import { mkdirSync } from "node:fs";
4
4
  //#region src/codegen/db-types.ts
5
5
  const DRIZZLE_OPERATORS = "sql, eq, ne, gt, gte, lt, lte, and, or, not, desc, asc, like, ilike, notLike, inArray, notInArray, isNull, isNotNull, between, notBetween, exists, notExists, count, sum, avg, min, max";
@@ -0,0 +1,5 @@
1
+ //#region src/runtime/route-url.d.ts
2
+ /** Expand complete route tokens without changing query strings or fragments. */
3
+ declare function interpolateRouteParams(path: string, params?: Record<string, string>): string;
4
+ //#endregion
5
+ export { interpolateRouteParams as t };
@@ -0,0 +1,28 @@
1
+ //#region src/runtime/route-url.ts
2
+ /**
3
+ * Encode one path segment of a route param. `encodeURIComponent` keeps dots, and
4
+ * URL parsing resolves `.`/`..` (even as `%2e`), so such a segment would move the
5
+ * request to another path instead of reaching this route.
6
+ */
7
+ function encodeSegment(name, segment) {
8
+ if (segment === "." || segment === "..") throw new TypeError(`Route param "${name}" cannot be "${segment}"; it would change the request path.`);
9
+ return encodeURIComponent(segment);
10
+ }
11
+ /** Expand complete route tokens without changing query strings or fragments. */
12
+ function interpolateRouteParams(path, params) {
13
+ if (!params) return path;
14
+ const suffixIndex = path.search(/[?#]/);
15
+ const pathname = suffixIndex === -1 ? path : path.slice(0, suffixIndex);
16
+ const suffix = suffixIndex === -1 ? "" : path.slice(suffixIndex);
17
+ let leadingName;
18
+ const replaced = pathname.replace(/(^|\/):([^/{}]+)(\{\.\+\})?(?=\/|$)/g, (token, prefix, name, catchAll, offset) => {
19
+ if (!Object.hasOwn(params, name)) return token;
20
+ if (offset === 0) leadingName = name;
21
+ const value = params[name];
22
+ return prefix + (catchAll ? value.split("/").map((segment) => encodeSegment(name, segment)).join("/") : encodeSegment(name, value));
23
+ });
24
+ if (replaced.startsWith("//") && !pathname.startsWith("//")) throw new TypeError(`Route param "${leadingName ?? ""}" would make the request path start with "//", which changes the request host.`);
25
+ return replaced + suffix;
26
+ }
27
+ //#endregion
28
+ export { interpolateRouteParams as t };
@@ -0,0 +1,2 @@
1
+ import { a as runMigrations, i as openSqliteDatabase, n as getAppliedMigrations, r as getMiniflareDatabasePath, t as getApplicationTables } from "./runner-DMBKSrRk.mjs";
2
+ export { getApplicationTables, getAppliedMigrations, getMiniflareDatabasePath, openSqliteDatabase, runMigrations };
@@ -1,7 +1,7 @@
1
1
  import { a as join, n as dirname } from "./dist-BVqXeR_h.mjs";
2
2
  import { t as collectMigrations } from "./collect-DiTn9yr6.mjs";
3
3
  import { n as hasPackageDependency, r as readNearestPackageJson } from "./package-json-DXfiT1jV.mjs";
4
- import { r as classifyMigration } from "./plan-CJGEeTEI.mjs";
4
+ import { r as classifyMigration } from "./plan-BhLO2p4w.mjs";
5
5
  import { existsSync, mkdirSync } from "node:fs";
6
6
  import { createHash, createHmac } from "node:crypto";
7
7
  //#region src/migrations/runner.ts
@@ -171,4 +171,4 @@ async function runMigrations(migrationsDir, dbPath) {
171
171
  }
172
172
  }
173
173
  //#endregion
174
- export { projectUsesVitePlus as a, openSqliteDatabase as i, getAppliedMigrations as n, runMigrations as o, getMiniflareDatabasePath as r, toBetterSqlite3Error as s, getApplicationTables as t };
174
+ export { runMigrations as a, openSqliteDatabase as i, getAppliedMigrations as n, toBetterSqlite3Error as o, getMiniflareDatabasePath as r, getApplicationTables as t };
@@ -9,14 +9,17 @@ async function readMySqlAppliedMigrations(client) {
9
9
  throw error;
10
10
  }
11
11
  }
12
+ function toMySqlClient(connection) {
13
+ return { async query(sql, params) {
14
+ const [rows] = await connection.query(sql, params);
15
+ return Array.isArray(rows) ? rows : [];
16
+ } };
17
+ }
12
18
  async function getMySqlAppliedMigrations(url) {
13
19
  const { createConnection } = await import("mysql2/promise");
14
20
  const connection = await createConnection(url);
15
21
  try {
16
- return await readMySqlAppliedMigrations({ async query(sql, params) {
17
- const [rows] = await connection.query(sql, params);
18
- return Array.isArray(rows) ? rows : [];
19
- } });
22
+ return await readMySqlAppliedMigrations(toMySqlClient(connection));
20
23
  } finally {
21
24
  await connection.end();
22
25
  }
@@ -42,10 +45,7 @@ async function runMySqlMigrations(migrationsDir, url) {
42
45
  multipleStatements: true
43
46
  });
44
47
  try {
45
- return await applyMySqlMigrations({ async query(sql, params) {
46
- const [rows] = await connection.query(sql, params);
47
- return Array.isArray(rows) ? rows : [];
48
- } }, migrations);
48
+ return await applyMySqlMigrations(toMySqlClient(connection), migrations);
49
49
  } finally {
50
50
  await connection.end();
51
51
  }
@@ -1,2 +1,2 @@
1
- import { i as runMySqlMigrations, n as getMySqlAppliedMigrations, t as applyMySqlMigrations } from "./runner-mysql-DmWchSWJ.mjs";
1
+ import { i as runMySqlMigrations, n as getMySqlAppliedMigrations, t as applyMySqlMigrations } from "./runner-mysql-CEzKtmFb.mjs";
2
2
  export { applyMySqlMigrations, getMySqlAppliedMigrations, runMySqlMigrations };
@@ -1,2 +1,2 @@
1
- import { i as runPgMigrations, n as getPgAppliedMigrations, t as applyPgMigrations } from "./runner-pg-D4OPlil-.mjs";
1
+ import { i as runPgMigrations, n as getPgAppliedMigrations, t as applyPgMigrations } from "./runner-pg-DV8p_zjA.mjs";
2
2
  export { applyPgMigrations, getPgAppliedMigrations, runPgMigrations };
@@ -28,7 +28,7 @@ export type VoidAi = {
28
28
  models(...args: Parameters<Ai["models"]>): Promise<Awaited<ReturnType<Ai["models"]>>>;
29
29
  toMarkdown(files: Array<Parameters<Ai["toMarkdown"]>[0]>, options?: Parameters<Ai["toMarkdown"]>[1]): Promise<Array<Awaited<ReturnType<Ai["toMarkdown"]>>>>;
30
30
  toMarkdown(...args: Parameters<Ai["toMarkdown"]>): Promise<Awaited<ReturnType<Ai["toMarkdown"]>>>;
31
- /** Workers AI inference (existing) */
31
+ /** Workers AI inference. */
32
32
  run<Name extends keyof AiModels>(model: Name, inputs: AiModels[Name]["inputs"], options?: AiOptions): Promise<AiModels[Name]["postProcessedOutputs"]>;
33
33
  /** Cloudflare AI Gateway model inference. Accepts Cloudflare model IDs unchanged. */
34
34
  run(model: string, inputs: unknown, options?: AiOptions): Promise<unknown>;