void 0.25.0 → 0.26.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/AGENTS_TEMPLATE.md +1 -3
  2. package/README.md +19 -9
  3. package/dist/{account-cmd-DcR1ywt8.mjs → account-cmd-CfUXh_nU.mjs} +8 -7
  4. package/dist/{application-analysis-BVsVqc11.mjs → application-analysis-DKy02UY0.mjs} +21 -32
  5. package/dist/{application-routing-B7QEjqSR.mjs → application-routing-DQyUh_5S.mjs} +1 -1
  6. package/dist/{auth-7wuZ5ob8.mjs → auth-B5_tZLxT.mjs} +9 -9
  7. package/dist/{auth-CdgZ9uag.mjs → auth-BgX2qYSY.mjs} +1 -1
  8. package/dist/{auth-link-Z6E5DYvM.mjs → auth-link-D5RmKnzh.mjs} +5 -5
  9. package/dist/{auth-migrations-9vif1uj8.mjs → auth-migrations-BwHgeEsD.mjs} +8 -18
  10. package/dist/{auth-router-BdM4avI8.mjs → auth-router-Bap-pvbn.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-CEE7D-hM.mjs → build-cmd-B58c8iS8.mjs} +8 -7
  14. package/dist/{cache-TcZnBLtH.mjs → cache-Bo52trKF.mjs} +8 -8
  15. package/dist/{cancel-deploy-CYoZmcmR.mjs → cancel-deploy-BZNz3Q26.mjs} +6 -5
  16. package/dist/{cf-access-AHKBzmuu.mjs → cf-access-ngGqZpHZ.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/cli/cli.mjs +48 -83
  20. package/dist/cli/cloudflare-operation-process.mjs +71 -77
  21. package/dist/cli/env-schema-probe.d.mts +1 -1
  22. package/dist/cli/env-schema-probe.mjs +5 -6
  23. package/dist/client-By4JjMw_.mjs +2 -0
  24. package/dist/{client-RsPo8wsP.mjs → client-C2Prx_Bi.mjs} +30 -8
  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-BhbK6yTq.mjs → cloudflare-operations-BlYLlowZ.mjs} +1 -1
  30. package/dist/{cloudflare-operations-CjaV4lZi.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-DCvUmPXY.mjs → connect-X0MUA1gk.mjs} +12 -11
  41. package/dist/{create-project-eAPgYq35.mjs → create-project-DxiyW6iX.mjs} +7 -7
  42. package/dist/{create-project-C734I-Mu.mjs → create-project-iwkbqiBU.mjs} +1 -1
  43. package/dist/{db-C07GEdKF.mjs → db-XnVMHzoV.mjs} +101 -133
  44. package/dist/{delete-pKMVsrpJ.mjs → delete-esYlMiSJ.mjs} +8 -8
  45. package/dist/{deploy-DfsAe-T0.mjs → deploy-BsEvnlJl.mjs} +2377 -2512
  46. package/dist/deploy-C1d-YTfp.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-D3uA9ize.mjs → domain-CbbBWhWE.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-z3o2cwjH.mjs → email-CpuT42g7.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-D5liuQYR.mjs → env-DMA3cXZt.mjs} +1 -1
  61. package/dist/{env-public-BX_r8HR6.d.mts → env-public-DR7ZM6d-.d.mts} +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/{env-3Q8-_2IH.mjs → env-w9jOyGZn.mjs} +10 -9
  67. package/dist/{fetch-_SeGZao9.d.mts → fetch-BPCYVi3H.d.mts} +20 -1
  68. package/dist/{fetch-BIZJh7vR.mjs → fetch-sAcwjzLO.mjs} +1 -1
  69. package/dist/{fetch-stream-IvCYKyQL.mjs → fetch-stream-PGgz4uGz.mjs} +26 -24
  70. package/dist/{fetch-stream-Bjf0hoZb.d.mts → fetch-stream-obvZ7fvO.d.mts} +1 -16
  71. package/dist/{gen-NjwoG9FK.mjs → gen-DtkQhvQg.mjs} +40 -57
  72. package/dist/gen-dA9hW7AV.mjs +2 -0
  73. package/dist/{github-cmd-DquUq-b1.mjs → github-cmd-D_FsOFxq.mjs} +65 -164
  74. package/dist/{handler-DghKr6dU.mjs → handler-BHAn2fZJ.mjs} +1 -0
  75. package/dist/{handler-CZ4nAylQ.d.mts → handler-CNAwjRcW.d.mts} +5 -12
  76. package/dist/{head-Do8P4puT.d.mts → head-C8K_iGe6.d.mts} +1 -1
  77. package/dist/{head-D_QRR5Yd.mjs → head-D2VF4ApL.mjs} +29 -51
  78. package/dist/{headers-2rKda9Y6.mjs → headers-DlfR78Nu.mjs} +3 -3
  79. package/dist/{help-DRZXC4fj.mjs → help-CVFBTmBx.mjs} +23 -38
  80. package/dist/help-DzKUrQvk.mjs +2 -0
  81. package/dist/{inbound-fRkqcXaC.mjs → inbound-PfQDLXc5.mjs} +23 -24
  82. package/dist/index.d.mts +19 -2
  83. package/dist/index.mjs +632 -532
  84. package/dist/{info-BmA3_IFZ.mjs → info-PYWwkWyt.mjs} +4 -4
  85. package/dist/{init-DT7yuuyl.mjs → init-Bw-fRKGp.mjs} +161 -197
  86. package/dist/{limits-Bq5LG8Id.d.mts → limits-CFsDKQvU.d.mts} +1 -10
  87. package/dist/{limits-Cjuk2VPm.mjs → limits-D0vD1M9A.mjs} +1 -22
  88. package/dist/{link-CXOlqh2F.mjs → link-DlPG8iX3.mjs} +10 -10
  89. package/dist/{list-eEWVJEPn.mjs → list-2GN7_ueV.mjs} +11 -9
  90. package/dist/{live-CB1y5IuC.mjs → live-CgQuTpqD.mjs} +15 -16
  91. package/dist/{live-Chw1eIMv.d.mts → live-Du8jXwOW.d.mts} +4 -2
  92. package/dist/{local-d1-Df4XpwhW.mjs → local-d1-ga5O_idV.mjs} +2 -2
  93. package/dist/{login-pWQHYVu2.mjs → login-D-Q4xw3Q.mjs} +7 -7
  94. package/dist/login-Dc-wuTDq.mjs +2 -0
  95. package/dist/{logs-DnxVX7TR.mjs → logs-rd8J-OFh.mjs} +28 -11
  96. package/dist/migrate-BHp07yJE.mjs +2 -0
  97. package/dist/{migrate-CV1on-yJ.mjs → migrate-NLsjBbuM.mjs} +34 -20
  98. package/dist/{mime-D5Nmdzf7.mjs → mime-DxCznlJq.mjs} +45 -95
  99. package/dist/{node-BkyRWRx8.mjs → node-DJicPvPj.mjs} +5 -5
  100. package/dist/{operator-args-CAVcmwUt.mjs → operator-args-BNsW5gfp.mjs} +10 -1
  101. package/dist/{operator-auth-CkmTE3rt.mjs → operator-auth-AzVLbrr3.mjs} +4 -8
  102. package/dist/{operator-client-LmwjxT6q.mjs → operator-client-BQtzyG-g.mjs} +3 -3
  103. package/dist/{operator-cmd-d-IEKgNk.mjs → operator-cmd-B6f6Cg9Z.mjs} +45 -14
  104. package/dist/operator-cmd-Cwn50lOV.mjs +2 -0
  105. package/dist/{output-BBsUwdyT.mjs → output-C50ag2r3.mjs} +44 -2
  106. package/dist/pages/client.d.mts +19 -51
  107. package/dist/pages/client.mjs +204 -225
  108. package/dist/pages/head-client.d.mts +1 -1
  109. package/dist/pages/head.d.mts +1 -1
  110. package/dist/pages/head.mjs +1 -1
  111. package/dist/pages/index.d.mts +2 -2
  112. package/dist/pages/index.mjs +6 -12
  113. package/dist/pages/islands-plugin.d.mts +1 -1
  114. package/dist/pages/islands-plugin.mjs +21 -25
  115. package/dist/pages/protocol.d.mts +2 -2
  116. package/dist/pages/protocol.mjs +2 -2
  117. package/dist/{plan-NPpwZ_kc.mjs → plan-BhLO2p4w.mjs} +4 -3
  118. package/dist/plan-CH2G51je.mjs +2 -0
  119. package/dist/{platform-args-Bzf8JPc2.mjs → platform-args-BoZkWQnJ.mjs} +4 -2
  120. package/dist/platform-args-DYgITk0D.mjs +2 -0
  121. package/dist/{platform-auth-config-0V0lA3pF.mjs → platform-auth-config-n603OANg.mjs} +45 -40
  122. package/dist/{platform-auth-protection-DFeJ-JkK.mjs → platform-auth-protection-zxDr0hWW.mjs} +9 -8
  123. package/dist/{platform-auth-recovery-ICy4muq6.mjs → platform-auth-recovery-tw9lgtgE.mjs} +8 -7
  124. package/dist/{platform-cmd-D7vSWMvV.mjs → platform-cmd-B8-bCb7t.mjs} +48 -23
  125. package/dist/{platform-cmd-BPySFOew.mjs → platform-cmd-C00YM14r.mjs} +1 -1
  126. package/dist/{platform-discovery-DDDUvnqp.mjs → platform-discovery-BC0HCKYt.mjs} +18 -4
  127. package/dist/{platform-domain-CUdY064e.mjs → platform-domain-p0kobLV8.mjs} +6 -5
  128. package/dist/{platform-lifecycle-Dm09JNkn.mjs → platform-lifecycle-D_QEY32D.mjs} +906 -389
  129. package/dist/{platform-lifecycle-BaUdTRPU.mjs → platform-lifecycle-vFqtNPPa.mjs} +1 -1
  130. package/dist/{platform-management-BSEc_ZeG.mjs → platform-management-BdYblvvE.mjs} +175 -32
  131. package/dist/{platform-management-Bp6aoH2C.mjs → platform-management-oi-SvI3f.mjs} +1 -1
  132. package/dist/{platform-plans-config-B0pOVQyW.mjs → platform-plans-config-CjiFv5J4.mjs} +5 -4
  133. package/dist/{platform-recovery-WOZ95Uze.mjs → platform-recovery-PvNS9Nl2.mjs} +3 -3
  134. package/dist/{platform-registry-KfNEF84O.mjs → platform-registry-P387v42A.mjs} +17 -10
  135. package/dist/platform-setup-DVe42Ws7.mjs +299 -0
  136. package/dist/{plugin-inference-CXWnn79A.mjs → plugin-inference-BlQbOL0P.mjs} +43 -42
  137. package/dist/prepare-DRUV-g3X.mjs +2 -0
  138. package/dist/{prepare-DnaKBi--.mjs → prepare-Do96654b.mjs} +8 -8
  139. package/dist/{prepare-39EvOhI6.mjs → prepare-Dq9hTIbo.mjs} +4 -3
  140. package/dist/{prerender-render-D9qbLs2f.mjs → prerender-render-Ct20jftc.mjs} +17 -3
  141. package/dist/prerender-render.mjs +1 -1
  142. package/dist/{project-IOjBU8R6.mjs → project-BiaPQ7ur.mjs} +1 -1
  143. package/dist/{project-BkbfDs0V.mjs → project-DQstYTxO.mjs} +1 -1
  144. package/dist/{project-cmd-Bs5A392E.mjs → project-cmd-ti8_yTcA.mjs} +19 -19
  145. package/dist/{project-team-ohAWWaew.mjs → project-team-CDPE1Tsg.mjs} +15 -18
  146. package/dist/{project-token-CP01Jna6.mjs → project-token-CkZ1cN0Z.mjs} +14 -17
  147. package/dist/{project-tsconfig-B8GeM0RM.mjs → project-tsconfig-CVJhNMxs.mjs} +2 -1
  148. package/dist/{project-zero-trust-BzkVgx35.mjs → project-zero-trust-DdjLR61k.mjs} +12 -9
  149. package/dist/{protocol-CjF_iI9X.d.mts → protocol-BPZaNqBo.d.mts} +4 -2
  150. package/dist/{protocol-U7bfjHmA.mjs → protocol-CfaUwNs8.mjs} +46 -49
  151. package/dist/{providers-CJlNS3kT.mjs → providers-BXuhmuub.mjs} +1 -12
  152. package/dist/{provision-Btj1jppf.mjs → provision-BfaLiWbj.mjs} +51 -42
  153. package/dist/{provision-BEv0k-qz.mjs → provision-Wu9ZBk9L.mjs} +2 -3
  154. package/dist/{requests-B3PBuGlX.mjs → requests-DFAqyYy8.mjs} +5 -5
  155. package/dist/resolve-project-BIeYs9Cw.mjs +2 -0
  156. package/dist/{resolve-project-BG5ORGID.mjs → resolve-project-CP8rZs_p.mjs} +6 -1
  157. package/dist/{rollback-DDub9GsO.mjs → rollback-BKYXBduI.mjs} +30 -37
  158. package/dist/{route-types-Clm4WD0B.mjs → route-types-CbtsIeFn.mjs} +1 -1
  159. package/dist/route-url-BgPja1GS.d.mts +5 -0
  160. package/dist/route-url-BjGv_KKY.mjs +28 -0
  161. package/dist/runner-9wjsSZx-.mjs +2 -0
  162. package/dist/{runner-Ol0TNjk6.mjs → runner-DMBKSrRk.mjs} +2 -2
  163. package/dist/{runner-mysql-DmWchSWJ.mjs → runner-mysql-CEzKtmFb.mjs} +8 -8
  164. package/dist/{runner-mysql-CEG5JozK.mjs → runner-mysql-CkFqZ6CE.mjs} +1 -1
  165. package/dist/{runner-pg-Bh4AgZdj.mjs → runner-pg-BGYRFdRp.mjs} +1 -1
  166. package/dist/runtime/ai.d.mts +11 -12
  167. package/dist/runtime/ai.mjs +47 -113
  168. package/dist/runtime/better-auth-mysql.d.mts +1 -1
  169. package/dist/runtime/better-auth-mysql.mjs +4 -9
  170. package/dist/runtime/better-auth-pg.d.mts +1 -1
  171. package/dist/runtime/better-auth-pg.mjs +5 -10
  172. package/dist/runtime/better-auth.d.mts +1 -1
  173. package/dist/runtime/better-auth.mjs +3 -3
  174. package/dist/runtime/client-react.d.mts +2 -3
  175. package/dist/runtime/client-react.mjs +2 -2
  176. package/dist/runtime/client-solid.d.mts +2 -3
  177. package/dist/runtime/client-solid.mjs +2 -2
  178. package/dist/runtime/client-svelte.d.mts +2 -3
  179. package/dist/runtime/client-svelte.mjs +2 -2
  180. package/dist/runtime/client-vue.d.mts +2 -3
  181. package/dist/runtime/client-vue.mjs +2 -2
  182. package/dist/runtime/client.d.mts +2 -3
  183. package/dist/runtime/client.mjs +2 -2
  184. package/dist/runtime/db.mjs +1 -1
  185. package/dist/runtime/durable.mjs +3 -10
  186. package/dist/runtime/email/testing.mjs +5 -5
  187. package/dist/runtime/email.d.mts +2 -1
  188. package/dist/runtime/email.mjs +11 -27
  189. package/dist/runtime/env-public.d.mts +1 -1
  190. package/dist/runtime/env-public.mjs +15 -20
  191. package/dist/runtime/env.mjs +1 -1
  192. package/dist/runtime/fetch-stream.d.mts +2 -2
  193. package/dist/runtime/fetch-stream.mjs +1 -1
  194. package/dist/runtime/fetch.d.mts +2 -3
  195. package/dist/runtime/fetch.mjs +1 -1
  196. package/dist/runtime/handler.d.mts +1 -1
  197. package/dist/runtime/handler.mjs +2 -2
  198. package/dist/runtime/isr.mjs +1 -1
  199. package/dist/runtime/kv.mjs +10 -11
  200. package/dist/runtime/limits.d.mts +2 -2
  201. package/dist/runtime/limits.mjs +2 -2
  202. package/dist/runtime/live-client.d.mts +1 -1
  203. package/dist/runtime/live-client.mjs +12 -22
  204. package/dist/runtime/live-server.mjs +27 -35
  205. package/dist/runtime/live.d.mts +2 -2
  206. package/dist/runtime/live.mjs +2 -2
  207. package/dist/runtime/migration-handler.mjs +35 -86
  208. package/dist/runtime/queues.mjs +1 -1
  209. package/dist/runtime/remote/binding-handler.d.mts +2 -2
  210. package/dist/runtime/remote/binding-handler.mjs +8 -9
  211. package/dist/runtime/remote/index.mjs +27 -77
  212. package/dist/runtime/route-url.d.mts +2 -4
  213. package/dist/runtime/route-url.mjs +1 -1
  214. package/dist/runtime/routing.d.mts +1 -1
  215. package/dist/runtime/routing.mjs +15 -26
  216. package/dist/runtime/sandbox.d.mts +1 -1
  217. package/dist/runtime/sandbox.mjs +14 -24
  218. package/dist/runtime/sse.mjs +1 -1
  219. package/dist/runtime/storage.mjs +1 -1
  220. package/dist/runtime/validator.d.mts +1 -1
  221. package/dist/runtime/ws-server.d.mts +2 -2
  222. package/dist/runtime/ws-server.mjs +30 -61
  223. package/dist/runtime/ws.d.mts +1 -1
  224. package/dist/runtime/ws.mjs +1 -1
  225. package/dist/{sandbox-XZAqzFlG.d.mts → sandbox-C5LFoJMf.d.mts} +7 -7
  226. package/dist/{scan-C7okrLyM.mjs → scan-C3uDzz6J.mjs} +21 -18
  227. package/dist/{secret-3c72lY1U.mjs → secret-BAt2KMmO.mjs} +15 -15
  228. package/dist/{skills-BPQUGClu.mjs → skills-BgVMvQdy.mjs} +2 -2
  229. package/dist/{sse-CQNaDFFV.mjs → sse-CMvCgjNk.mjs} +1 -1
  230. package/dist/{subcommand-prompt-Dhom39bd.mjs → subcommand-prompt-BSlnD1fI.mjs} +2 -2
  231. package/dist/sveltekit.d.mts +0 -2
  232. package/dist/terminal-log-text-D9ACPOuG.mjs +32 -0
  233. package/dist/validate-BJr9LfXy.mjs +2 -0
  234. package/dist/{validate-ctOrgiS3.mjs → validate-C9qJArv7.mjs} +9 -28
  235. package/dist/{defer-YsYDUoii.mjs → validation-error-Dg9Recn1.mjs} +11 -11
  236. package/dist/{wrangler-DhUerFkW.mjs → wrangler-D9KTuqnv.mjs} +89 -194
  237. package/dist/{ws-CL1w7GXU.d.mts → ws-CChrrAU-.d.mts} +1 -1
  238. package/dist/{yarn-pnp-BV4AzNul.mjs → yarn-pnp-CUX_iTPA.mjs} +19 -27
  239. package/{skills/void/docs → docs}/guide/ai.md +69 -64
  240. package/{skills/void/docs → docs}/guide/app-types.md +1 -1
  241. package/{skills/void/docs → docs}/guide/auth.md +37 -1
  242. package/{skills/void/docs → docs}/guide/database/postgresql.md +2 -2
  243. package/{skills/void/docs → docs}/guide/database.md +23 -8
  244. package/{skills/void/docs → docs}/guide/edge/revalidation.md +1 -1
  245. package/{skills/void/docs → docs}/guide/edge/rewrites.md +2 -4
  246. package/{skills/void/docs → docs}/guide/email/receiving.md +2 -2
  247. package/{skills/void/docs → docs}/guide/email/sending.md +0 -2
  248. package/{skills/void/docs → docs}/guide/env-vars.md +4 -0
  249. package/{skills/void/docs → docs}/guide/jobs.md +2 -2
  250. package/{skills/void/docs → docs}/guide/live.md +12 -5
  251. package/{skills/void/docs → docs}/guide/pages-routing/actions-and-forms.md +21 -9
  252. package/{skills/void/docs → docs}/guide/pages-routing/loaders.md +7 -3
  253. package/{skills/void/docs → docs}/guide/pages-routing/markdown.md +15 -23
  254. package/{skills/void/docs → docs}/guide/pages-routing/overview.md +6 -4
  255. package/{skills/void/docs → docs}/guide/platform/administration/access.md +2 -10
  256. package/{skills/void/docs → docs}/guide/platform/administration/operations.md +3 -12
  257. package/{skills/void/docs → docs}/guide/platform/administration/projects.md +1 -1
  258. package/{skills/void/docs → docs}/guide/platform/development/local.md +4 -2
  259. package/{skills/void/docs → docs}/guide/platform/development/runtime.md +1 -1
  260. package/{skills/void/docs → docs}/guide/platform/development/schema-ci.md +1 -1
  261. package/{skills/void/docs → docs}/guide/platform/installation/credentials.md +2 -2
  262. package/{skills/void/docs → docs}/guide/platform/installation/domains.md +3 -1
  263. package/{skills/void/docs → docs}/guide/platform/installation/first-deployment.md +8 -2
  264. package/{skills/void/docs → docs}/guide/platform/installation/maintenance.md +7 -1
  265. package/{skills/void/docs → docs}/guide/platform/installation/setup.md +1 -1
  266. package/docs/guide/platform/installation/uninstall.md +102 -0
  267. package/{skills/void/docs → docs}/guide/project-collaboration.md +6 -2
  268. package/{skills/void/docs → docs}/guide/queues.md +0 -2
  269. package/{skills/void/docs → docs}/guide/remote-dev.md +5 -5
  270. package/{skills/void/docs → docs}/guide/sandboxes.md +41 -22
  271. package/{skills/void/docs → docs}/guide/sse.md +0 -2
  272. package/{skills/void/docs → docs}/guide/storage.md +7 -2
  273. package/{skills/void/docs → docs}/guide/websockets.md +4 -0
  274. package/docs/integrations/agents.md +37 -0
  275. package/{skills/void/docs → docs}/integrations/frameworks/astro.md +3 -3
  276. package/{skills/void/docs → docs}/integrations/frameworks/nuxt.md +6 -2
  277. package/{skills/void/docs → docs}/integrations/hono.md +15 -7
  278. package/{skills/void/docs → docs}/integrations/nodejs-bun-deno.md +1 -0
  279. package/{skills/void/docs → docs}/reference/api/auth.md +1 -1
  280. package/{skills/void/docs → docs}/reference/api/handlers.md +4 -2
  281. package/{skills/void/docs → docs}/reference/api/pages.md +4 -0
  282. package/{skills/void/docs → docs}/reference/api/resources.md +11 -14
  283. package/{skills/void/docs → docs}/reference/api.md +35 -34
  284. package/{skills/void/docs → docs}/reference/cli/auth.md +3 -6
  285. package/{skills/void/docs → docs}/reference/cli/database.md +3 -4
  286. package/{skills/void/docs → docs}/reference/cli/generate.md +1 -1
  287. package/{skills/void/docs → docs}/reference/cli/github.md +3 -12
  288. package/{skills/void/docs → docs}/reference/cli/platform-config.md +3 -3
  289. package/{skills/void/docs → docs}/reference/cli/platform-email.md +2 -3
  290. package/{skills/void/docs → docs}/reference/cli/platform-installation.md +15 -13
  291. package/{skills/void/docs → docs}/reference/cli/platform-operations.md +3 -0
  292. package/{skills/void/docs → docs}/reference/cli/platform-users.md +2 -2
  293. package/{skills/void/docs → docs}/reference/cli/platform.md +4 -2
  294. package/{skills/void/docs → docs}/reference/cli/project.md +5 -4
  295. package/{skills/void/docs → docs}/reference/cli/secrets.md +3 -3
  296. package/{skills/void/docs → docs}/reference/cli/setup.md +9 -11
  297. package/{skills/void/docs → docs}/reference/cli.md +2 -2
  298. package/{skills/void/docs → docs}/reference/config.md +13 -13
  299. package/{skills/void/docs → docs}/reference/resource-inference.md +2 -16
  300. package/package.json +34 -30
  301. package/schema.json +1 -1
  302. package/skills/migrate-vite-cloudflare-to-void/SKILL.md +4 -1
  303. package/skills/void/SKILL.md +11 -5
  304. package/dist/cf-build-output-ChY6-XWP.mjs +0 -2
  305. package/dist/client-B4Me-9HE.mjs +0 -2
  306. package/dist/config-0acf1oys.mjs +0 -2
  307. package/dist/config-D8MOgiQV.mjs +0 -32
  308. package/dist/deploy-BDu1vhSH.mjs +0 -2
  309. package/dist/discover-AMCBXivQ.mjs +0 -2
  310. package/dist/fetch-error-Sp1R4mZv.d.mts +0 -20
  311. package/dist/gen-ById9r2j.mjs +0 -2
  312. package/dist/help-DPGBwomV.mjs +0 -2
  313. package/dist/login-C98-sw79.mjs +0 -2
  314. package/dist/migrate-CEu2X5DB.mjs +0 -2
  315. package/dist/plan-D1Q5rf-r.mjs +0 -2
  316. package/dist/platform-args-Cq6EjQro.mjs +0 -2
  317. package/dist/prepare-CnjcTV2s.mjs +0 -2
  318. package/dist/resolve-project-DtbidV4y.mjs +0 -2
  319. package/dist/route-url-CG7U-cRN.mjs +0 -15
  320. package/dist/runner-CXA9Fh8h.mjs +0 -2
  321. package/dist/validate-Dq_L3s0S.mjs +0 -2
  322. package/skills/void/docs/guide/platform/installation/uninstall.md +0 -69
  323. package/skills/void/docs/integrations/agents.md +0 -26
  324. package/dist/{runner-pg-D4OPlil-.mjs → runner-pg-DV8p_zjA.mjs} +4 -4
  325. package/{skills/void/docs → docs}/guide/database/d1.md +2 -2
  326. package/{skills/void/docs → docs}/guide/database/mysql.md +0 -0
  327. package/{skills/void/docs → docs}/guide/deployment.md +0 -0
  328. package/{skills/void/docs → docs}/guide/durable-state.md +0 -0
  329. package/{skills/void/docs → docs}/guide/edge/headers.md +0 -0
  330. package/{skills/void/docs → docs}/guide/edge/prerendering.md +0 -0
  331. package/{skills/void/docs → docs}/guide/edge/redirects.md +0 -0
  332. package/{skills/void/docs → docs}/guide/edge/static-assets.md +0 -0
  333. package/{skills/void/docs → docs}/guide/email/domains.md +0 -0
  334. package/{skills/void/docs → docs}/guide/email.md +0 -0
  335. package/{skills/void/docs → docs}/guide/index.md +0 -0
  336. package/{skills/void/docs → docs}/guide/kv.md +0 -0
  337. package/{skills/void/docs → docs}/guide/pages-routing/head.md +0 -0
  338. package/{skills/void/docs → docs}/guide/pages-routing/islands.md +2 -2
  339. package/{skills/void/docs → docs}/guide/pages-routing/layouts.md +0 -0
  340. package/{skills/void/docs → docs}/guide/pages-routing/view-transitions.md +0 -0
  341. package/{skills/void/docs → docs}/guide/platform/administration/email.md +0 -0
  342. package/{skills/void/docs → docs}/guide/platform/administration/plans.md +0 -0
  343. package/{skills/void/docs → docs}/guide/platform/administration/zero-trust.md +0 -0
  344. package/{skills/void/docs → docs}/guide/platform/installation/ci.md +0 -0
  345. package/{skills/void/docs → docs}/guide/platform/installation/prerequisites.md +0 -0
  346. package/{skills/void/docs → docs}/guide/platform-administration.md +0 -0
  347. package/{skills/void/docs → docs}/guide/platform-development.md +0 -0
  348. package/{skills/void/docs → docs}/guide/quickstart.md +0 -0
  349. package/{skills/void/docs → docs}/guide/self-hosted-platform.md +0 -0
  350. package/{skills/void/docs → docs}/guide/server-routing.md +3 -3
  351. package/{skills/void/docs → docs}/guide/ssg.md +0 -0
  352. package/{skills/void/docs → docs}/guide/ssr.md +0 -0
  353. package/{skills/void/docs → docs}/guide/type-safety.md +0 -0
  354. package/{skills/void/docs → docs}/guide/typed-fetch.md +0 -0
  355. package/{skills/void/docs → docs}/index.md +0 -0
  356. package/{skills/void/docs → docs}/integrations/cloudflare.md +0 -0
  357. package/{skills/void/docs → docs}/integrations/frameworks/analog.md +3 -3
  358. package/{skills/void/docs → docs}/integrations/frameworks/overview.md +0 -0
  359. package/{skills/void/docs → docs}/integrations/frameworks/react-router.md +3 -3
  360. package/{skills/void/docs → docs}/integrations/frameworks/sveltekit.md +1 -1
  361. package/{skills/void/docs → docs}/integrations/frameworks/tanstack-start.md +2 -2
  362. package/{skills/void/docs → docs}/reference/api/client.md +0 -0
  363. package/{skills/void/docs → docs}/reference/api/database.md +2 -2
  364. /package/{skills/void/docs → docs}/reference/api/durable.md +0 -0
  365. /package/{skills/void/docs → docs}/reference/api/env.md +0 -0
  366. /package/{skills/void/docs → docs}/reference/api/plugin.md +0 -0
  367. /package/{skills/void/docs → docs}/reference/api/rewrites.md +0 -0
  368. /package/{skills/void/docs → docs}/reference/api/types.md +0 -0
  369. /package/{skills/void/docs → docs}/reference/cli/deploy.md +0 -0
  370. /package/{skills/void/docs → docs}/reference/cli/domains.md +0 -0
  371. /package/{skills/void/docs → docs}/reference/cli/email.md +0 -0
  372. /package/{skills/void/docs → docs}/reference/cli/platform-zero-trust.md +0 -0
  373. /package/{skills/void/docs → docs}/reference/structure.md +0 -0
@@ -1,8 +1,8 @@
1
- import { r as readProjectConfig } from "./project-BkbfDs0V.mjs";
2
- import { c as getToken } from "./auth-7wuZ5ob8.mjs";
3
- import { H as outro, L as log } from "./prompts-6OSVA7DJ.mjs";
4
- import { r as PlatformClient } from "./client-RsPo8wsP.mjs";
5
- import { c as import_picocolors, i as dim } from "./output-BBsUwdyT.mjs";
1
+ import { r as readProjectConfig } from "./project-DQstYTxO.mjs";
2
+ import { c as getToken } from "./auth-B5_tZLxT.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-C2Prx_Bi.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-BkbfDs0V.mjs";
2
- import { c as getToken } from "./auth-7wuZ5ob8.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-RsPo8wsP.mjs";
5
- import { a as ensureUtc, c as import_picocolors, i as dim, o as formatCount, r as createSpinner } from "./output-BBsUwdyT.mjs";
1
+ import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-DQstYTxO.mjs";
2
+ import { c as getToken } from "./auth-B5_tZLxT.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-C2Prx_Bi.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-BhbK6yTq.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-NPpwZ_kc.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 };
@@ -1,4 +1,3 @@
1
- import { n as LimitOperation } from "../limits-Bq5LG8Id.mjs";
2
1
  //#region src/runtime/ai-types.d.ts
3
2
  type AiProviderName = "openai" | "anthropic" | "google-ai-studio" | "groq" | "mistral" | "grok" | "deepseek" | "openrouter" | "perplexity" | "cohere" | "cerebras" | "huggingface" | "replicate" | "baseten" | "cartesia" | "deepgram" | "elevenlabs" | "fal" | "ideogram" | "parallel";
4
3
  type AiProvider = AiProviderName | (string & {});
@@ -26,25 +25,25 @@ type AiProviderFetchInit = {
26
25
  * in a `Response` with SSE headers — ready to return from a route handler.
27
26
  */
28
27
  export type VoidAi = {
29
- models(...args: Parameters<Ai["models"]>): LimitOperation<Awaited<ReturnType<Ai["models"]>>>;
30
- toMarkdown(files: Array<Parameters<Ai["toMarkdown"]>[0]>, options?: Parameters<Ai["toMarkdown"]>[1]): LimitOperation<Array<Awaited<ReturnType<Ai["toMarkdown"]>>>>;
31
- toMarkdown(...args: Parameters<Ai["toMarkdown"]>): LimitOperation<Awaited<ReturnType<Ai["toMarkdown"]>>>;
32
- /** Workers AI inference (existing) */
33
- run<Name extends keyof AiModels>(model: Name, inputs: AiModels[Name]["inputs"], options?: AiOptions): LimitOperation<AiModels[Name]["postProcessedOutputs"]>;
28
+ models(...args: Parameters<Ai["models"]>): Promise<Awaited<ReturnType<Ai["models"]>>>;
29
+ toMarkdown(files: Array<Parameters<Ai["toMarkdown"]>[0]>, options?: Parameters<Ai["toMarkdown"]>[1]): Promise<Array<Awaited<ReturnType<Ai["toMarkdown"]>>>>;
30
+ toMarkdown(...args: Parameters<Ai["toMarkdown"]>): Promise<Awaited<ReturnType<Ai["toMarkdown"]>>>;
31
+ /** Workers AI inference. */
32
+ run<Name extends keyof AiModels>(model: Name, inputs: AiModels[Name]["inputs"], options?: AiOptions): Promise<AiModels[Name]["postProcessedOutputs"]>;
34
33
  /** Cloudflare AI Gateway model inference. Accepts Cloudflare model IDs unchanged. */
35
- run(model: string, inputs: unknown, options?: AiOptions): LimitOperation<unknown>;
34
+ run(model: string, inputs: unknown, options?: AiOptions): Promise<unknown>;
36
35
  /** Image generation. Returns the proxy response so callers can return or parse it. */
37
- image<Name extends keyof AiModels>(model: Name, inputs: AiModels[Name]["inputs"], options?: AiOptions): LimitOperation<Response>;
36
+ image<Name extends keyof AiModels>(model: Name, inputs: AiModels[Name]["inputs"], options?: AiOptions): Promise<Response>;
38
37
  /** Cloudflare AI Gateway model inference returned as a Response. */
39
- image(model: string, inputs: unknown, options?: AiOptions): LimitOperation<Response>;
38
+ image(model: string, inputs: unknown, options?: AiOptions): Promise<Response>;
40
39
  /** Provider-native AI Gateway requests using a project secret for the provider API key. */
41
40
  provider(provider: AiProvider, options?: AiProviderOptions): {
42
- fetch(path: string, init?: AiProviderFetchInit): LimitOperation<Response>;
41
+ fetch(path: string, init?: AiProviderFetchInit): Promise<Response>;
43
42
  };
44
43
  /** Stream Workers AI response as SSE */
45
- stream<Name extends keyof AiModels>(model: Name, inputs: Omit<AiModels[Name]["inputs"], "stream">, options?: AiOptions): LimitOperation<Response>;
44
+ stream<Name extends keyof AiModels>(model: Name, inputs: Omit<AiModels[Name]["inputs"], "stream">, options?: AiOptions): Promise<Response>;
46
45
  /** Stream any Cloudflare AI Gateway model response as SSE */
47
- stream(model: string, inputs: Record<string, unknown>, options?: AiOptions): LimitOperation<Response>;
46
+ stream(model: string, inputs: Record<string, unknown>, options?: AiOptions): Promise<Response>;
48
47
  };
49
48
  export declare const ai: VoidAi;
50
49
  //#endregion
@@ -1,6 +1,6 @@
1
1
  import { t as cfAccessHeaders } from "../cf-access-TWNzXltp.mjs";
2
- import { a as getRawRuntimeEnv } from "../env-raw-Cx8ElDdj.mjs";
3
- import { a as readUsageLimit, i as limitOperation, r as limitFromResponse, t as UsageLimit } from "../limits-Cjuk2VPm.mjs";
2
+ import { a as getRawRuntimeEnv } from "../env-raw-jZpP5n47.mjs";
3
+ import { r as limitFromResponse, t as UsageLimit } from "../limits-D0vD1M9A.mjs";
4
4
  //#region src/runtime/ai-types.ts
5
5
  /** Maps provider prefix to expected env var name for the API key */
6
6
  const PROVIDER_KEY_MAP = {
@@ -143,9 +143,6 @@ async function serializeProxyValue(value, serializeDataObjectAsFile = false) {
143
143
  }
144
144
  return value;
145
145
  }
146
- function formFileName(value, fallback) {
147
- return fileNameFromBlob(value) ?? fallback;
148
- }
149
146
  async function serializeFormData(form) {
150
147
  const entries = [];
151
148
  for (const [name, value] of form.entries()) {
@@ -161,7 +158,7 @@ async function serializeFormData(form) {
161
158
  value: {
162
159
  [VOID_FILE_MARKER]: true,
163
160
  data: arrayBufferToBase64(await value.arrayBuffer()),
164
- name: formFileName(value, name),
161
+ name: fileNameFromBlob(value) ?? name,
165
162
  type: value.type || void 0
166
163
  }
167
164
  });
@@ -260,7 +257,7 @@ function isUnsafeProviderPath(path) {
260
257
  return false;
261
258
  }
262
259
  /**
263
- * Build a real outgoing HTTP body for the user's own AI Gateway (P3 self-host).
260
+ * Build a real outgoing HTTP body for the user's own AI Gateway (self-host).
264
261
  *
265
262
  * Unlike `serializeProviderBody`/`providerRequestBody` (which build the proxy
266
263
  * envelope decoded on the proxy side), this emits an actual `BodyInit` +
@@ -304,16 +301,10 @@ async function providerRequestBody(provider, path, init, options, runtimeEnv) {
304
301
  apiKeyPrefix: options?.apiKeyPrefix
305
302
  };
306
303
  }
307
- function makeServiceBindingBackend(proxy, runtimeEnv) {
308
- async function proxyFetch(action, body, options = {}) {
309
- const res = await proxy.fetch(`https://ai-proxy/ai/${action}`, {
310
- method: "POST",
311
- headers: { "content-type": "application/json" },
312
- body: JSON.stringify({
313
- action,
314
- ...body
315
- })
316
- });
304
+ /** Backend for the Void platform proxy, reached by service binding or HTTPS. */
305
+ function makeProxyBackend(send, runtimeEnv) {
306
+ async function proxyFetch(action, payload, options = {}) {
307
+ const res = await send(action, payload);
317
308
  const limit = await limitFromResponse(res, "ai");
318
309
  if (limit) throw limit;
319
310
  if (options.throwOnError !== false && !res.ok) {
@@ -324,60 +315,48 @@ function makeServiceBindingBackend(proxy, runtimeEnv) {
324
315
  }
325
316
  return {
326
317
  async run(model, inputs, options) {
327
- const projectId = runtimeEnv.__PROJECT_ID;
328
- const aiToken = runtimeEnv.__VOID_PROXY_TOKEN;
329
318
  const res = await proxyFetch("run", {
330
319
  model,
331
320
  inputs,
332
- options,
333
- projectId,
334
- aiToken
321
+ options
335
322
  });
336
323
  if (hasStreamFlag(inputs) && inputs.stream) return res.body;
337
324
  return readProxyResult(res);
338
325
  },
339
326
  async image(model, inputs, options) {
340
- const projectId = runtimeEnv.__PROJECT_ID;
341
- const aiToken = runtimeEnv.__VOID_PROXY_TOKEN;
342
327
  const { runOptions } = splitImageOptions(options);
343
328
  return proxyFetch("run", {
344
329
  model,
345
330
  inputs,
346
- options: runOptions,
347
- projectId,
348
- aiToken
331
+ options: runOptions
349
332
  });
350
333
  },
351
334
  async providerFetch(provider, path, init, options) {
352
- const projectId = runtimeEnv.__PROJECT_ID;
353
- const aiToken = runtimeEnv.__VOID_PROXY_TOKEN;
354
- return proxyFetch("provider", {
355
- ...await providerRequestBody(provider, path, init, options, runtimeEnv),
356
- projectId,
357
- aiToken
358
- }, { throwOnError: false });
335
+ return proxyFetch("provider", await providerRequestBody(provider, path, init, options, runtimeEnv), { throwOnError: false });
359
336
  },
360
337
  async models(params) {
361
- const projectId = runtimeEnv.__PROJECT_ID;
362
- const aiToken = runtimeEnv.__VOID_PROXY_TOKEN;
363
- return (await proxyFetch("models", {
364
- inputs: params,
365
- projectId,
366
- aiToken
367
- })).json();
338
+ return (await proxyFetch("models", { inputs: params })).json();
368
339
  },
369
340
  async toMarkdown(items, options) {
370
- const projectId = runtimeEnv.__PROJECT_ID;
371
- const aiToken = runtimeEnv.__VOID_PROXY_TOKEN;
372
341
  return (await proxyFetch("toMarkdown", {
373
342
  inputs: items,
374
- options,
375
- projectId,
376
- aiToken
343
+ options
377
344
  })).json();
378
345
  }
379
346
  };
380
347
  }
348
+ function makeServiceBindingBackend(proxy, runtimeEnv) {
349
+ return makeProxyBackend((action, payload) => proxy.fetch(`https://ai-proxy/ai/${action}`, {
350
+ method: "POST",
351
+ headers: { "content-type": "application/json" },
352
+ body: JSON.stringify({
353
+ action,
354
+ ...payload,
355
+ projectId: runtimeEnv.__PROJECT_ID,
356
+ aiToken: runtimeEnv.__VOID_PROXY_TOKEN
357
+ })
358
+ }), runtimeEnv);
359
+ }
381
360
  function makeHttpBackend(token, projectId, runtimeEnv) {
382
361
  const base = getProxyUrl(runtimeEnv);
383
362
  const headers = {
@@ -385,56 +364,16 @@ function makeHttpBackend(token, projectId, runtimeEnv) {
385
364
  authorization: `Bearer ${token}`,
386
365
  ...cfAccessHeaders(runtimeEnv, base)
387
366
  };
388
- async function proxyFetch(action, body, options = {}) {
389
- const res = await fetch(`${base}/${action}`, {
390
- method: "POST",
391
- headers,
392
- body: JSON.stringify({
393
- action,
394
- ...body,
395
- projectId
396
- }),
397
- redirect: "manual"
398
- });
399
- const limit = await limitFromResponse(res, "ai");
400
- if (limit) throw limit;
401
- if (options.throwOnError !== false && !res.ok) {
402
- const text = await res.text();
403
- throw new Error(`ai: Proxy request failed with ${res.status}: '${text}'.`);
404
- }
405
- return res;
406
- }
407
- return {
408
- async run(model, inputs, options) {
409
- const res = await proxyFetch("run", {
410
- model,
411
- inputs,
412
- options
413
- });
414
- if (hasStreamFlag(inputs) && inputs.stream) return res.body;
415
- return readProxyResult(res);
416
- },
417
- async image(model, inputs, options) {
418
- const { runOptions } = splitImageOptions(options);
419
- return proxyFetch("run", {
420
- model,
421
- inputs,
422
- options: runOptions
423
- });
424
- },
425
- async providerFetch(provider, path, init, options) {
426
- return proxyFetch("provider", await providerRequestBody(provider, path, init, options, runtimeEnv), { throwOnError: false });
427
- },
428
- async models(params) {
429
- return (await proxyFetch("models", { inputs: params })).json();
430
- },
431
- async toMarkdown(items, options) {
432
- return (await proxyFetch("toMarkdown", {
433
- inputs: items,
434
- options
435
- })).json();
436
- }
437
- };
367
+ return makeProxyBackend((action, payload) => fetch(`${base}/${action}`, {
368
+ method: "POST",
369
+ headers,
370
+ body: JSON.stringify({
371
+ action,
372
+ ...payload,
373
+ projectId
374
+ }),
375
+ redirect: "manual"
376
+ }), runtimeEnv);
438
377
  }
439
378
  function makeDirectBackend(directAi, runtimeEnv, gatewayId) {
440
379
  const run = async (model, inputs, options) => {
@@ -491,19 +430,20 @@ function backend() {
491
430
  return _backend ??= resolveBackend();
492
431
  }
493
432
  /** Normalize provider 429 responses and binding quota failures before they reach callers. */
494
- function aiOperation(execute, rawStream = false) {
495
- return limitOperation(async () => {
496
- const value = await execute();
433
+ async function aiOperation(execute, rawStream = false) {
434
+ let value;
435
+ try {
436
+ value = await execute();
497
437
  if (value instanceof Response) {
498
438
  const limit = await limitFromResponse(value, "ai");
499
439
  if (limit) throw limit;
500
440
  }
501
- return value;
502
- }, classifyAiLimit, (value, limited) => {
503
- if (value instanceof Response && value.body && value.headers.get("content-type")?.includes("text/event-stream")) return new Response(streamResponse(value.body, limited).body, value);
504
- if (rawStream && value instanceof ReadableStream) return streamResponse(value, limited).body;
505
- return value;
506
- });
441
+ } catch (error) {
442
+ throw classifyAiLimit(error) ?? error;
443
+ }
444
+ if (value instanceof Response && value.body && value.headers.get("content-type")?.includes("text/event-stream")) return new Response(streamResponse(value.body).body, value);
445
+ if (rawStream && value instanceof ReadableStream) return streamResponse(value).body;
446
+ return value;
507
447
  }
508
448
  function classifyAiLimit(error) {
509
449
  if (error instanceof UsageLimit) return error;
@@ -515,7 +455,7 @@ function classifyAiLimit(error) {
515
455
  }) : null;
516
456
  }
517
457
  /** Streaming failures after headers are sent end with an explicit terminal SSE event. */
518
- function streamResponse(body, limited) {
458
+ function streamResponse(body) {
519
459
  const reader = body.getReader();
520
460
  return new Response(new ReadableStream({
521
461
  async pull(controller) {
@@ -526,13 +466,7 @@ function streamResponse(body, limited) {
526
466
  } catch (error) {
527
467
  const limit = classifyAiLimit(error);
528
468
  let data = { message: "Generation was interrupted. Please try again." };
529
- if (limit) {
530
- data = await limit.response().json();
531
- try {
532
- const fallback = await limited(limit);
533
- if (fallback instanceof Response) data = readUsageLimit(await fallback.json().catch(() => null)) ?? data;
534
- } catch {}
535
- }
469
+ if (limit) data = await limit.response().json();
536
470
  controller.enqueue(new TextEncoder().encode(`event: ${limit ? "void:limit" : "void:error"}\ndata: ${JSON.stringify(data)}\n\n`));
537
471
  controller.close();
538
472
  }
@@ -1,4 +1,4 @@
1
- import { i as VoidAuthRuntimeOptions, n as VoidAuthEnv, r as VoidAuthRuntimeApi, t as VoidAuthDialect } from "../better-auth-shared-BVkjZ3vM.mjs";
1
+ import { i as VoidAuthRuntimeOptions, n as VoidAuthEnv, r as VoidAuthRuntimeApi, t as VoidAuthDialect } from "../better-auth-shared-CPvWD3nG.mjs";
2
2
  //#region src/runtime/better-auth-mysql.d.ts
3
3
  export declare const resolveVoidAuthOptions: VoidAuthRuntimeApi["resolveVoidAuthOptions"];
4
4
  export declare const createVoidAuth: VoidAuthRuntimeApi["createVoidAuth"];
@@ -1,15 +1,10 @@
1
- import { t as applyMySqlAuthMigrations } from "../auth-migrations-9vif1uj8.mjs";
2
- import { t as createVoidAuthRuntime } from "../better-auth-shared-hy6RPh9W.mjs";
1
+ import { t as applyMySqlAuthMigrations } from "../auth-migrations-BwHgeEsD.mjs";
2
+ import { n as createVoidAuthRuntime, r as resolveConnectionString } from "../better-auth-shared-DPpj8zxc.mjs";
3
3
  //#region src/runtime/better-auth-mysql.ts
4
- function resolveConnectionString(env) {
5
- const connectionString = typeof env.DATABASE_URL === "string" && env.DATABASE_URL.length > 0 ? env.DATABASE_URL : typeof env.HYPERDRIVE?.connectionString === "string" && env.HYPERDRIVE.connectionString.length > 0 ? env.HYPERDRIVE.connectionString : void 0;
6
- if (!connectionString) throw new Error("auth: Better Auth requires DATABASE_URL for local MySQL dev or HYPERDRIVE in production.");
7
- return connectionString;
8
- }
9
4
  async function resolveDatabase(env) {
10
5
  const { createPool } = await import("mysql2/promise");
11
6
  const pool = createPool({
12
- uri: resolveConnectionString(env),
7
+ uri: resolveConnectionString(env, "MySQL"),
13
8
  connectionLimit: 1
14
9
  });
15
10
  return {
@@ -23,7 +18,7 @@ async function runMySqlAuthMigrations(_request, env, runtime, migrationSchema) {
23
18
  if (!migrationSchema) throw new Error("auth: Migration schema is unavailable.");
24
19
  if (runtime.dialect !== "mysql" || migrationSchema.dialect !== "mysql") throw new Error("auth: Runtime mismatch. Expected mysql.");
25
20
  const { createConnection } = await import("mysql2/promise");
26
- const connection = await createConnection(resolveConnectionString(env));
21
+ const connection = await createConnection(resolveConnectionString(env, "MySQL"));
27
22
  try {
28
23
  await applyMySqlAuthMigrations({
29
24
  async all(sql, params) {
@@ -1,4 +1,4 @@
1
- import { i as VoidAuthRuntimeOptions, n as VoidAuthEnv, r as VoidAuthRuntimeApi, t as VoidAuthDialect } from "../better-auth-shared-BVkjZ3vM.mjs";
1
+ import { i as VoidAuthRuntimeOptions, n as VoidAuthEnv, r as VoidAuthRuntimeApi, t as VoidAuthDialect } from "../better-auth-shared-CPvWD3nG.mjs";
2
2
  //#region src/runtime/better-auth-pg.d.ts
3
3
  export declare const resolveVoidAuthOptions: VoidAuthRuntimeApi["resolveVoidAuthOptions"];
4
4
  export declare const createVoidAuth: VoidAuthRuntimeApi["createVoidAuth"];
@@ -1,15 +1,10 @@
1
- import { n as applyPgAuthMigrations } from "../auth-migrations-9vif1uj8.mjs";
2
- import { t as createVoidAuthRuntime } from "../better-auth-shared-hy6RPh9W.mjs";
1
+ import { n as applyPgAuthMigrations } from "../auth-migrations-BwHgeEsD.mjs";
2
+ import { n as createVoidAuthRuntime, r as resolveConnectionString, t as assertRuntimeDialect } from "../better-auth-shared-DPpj8zxc.mjs";
3
3
  import { t as disablePgPassFallback } from "../pg-J2HbZIkX.mjs";
4
4
  //#region src/runtime/better-auth-pg.ts
5
- function resolveConnectionString(env) {
6
- const connectionString = typeof env.DATABASE_URL === "string" && env.DATABASE_URL.length > 0 ? env.DATABASE_URL : typeof env.HYPERDRIVE?.connectionString === "string" && env.HYPERDRIVE.connectionString.length > 0 ? env.HYPERDRIVE.connectionString : void 0;
7
- if (!connectionString) throw new Error("auth: Better Auth requires DATABASE_URL for local PostgreSQL dev or HYPERDRIVE in production.");
8
- return connectionString;
9
- }
10
5
  async function resolveDatabase(env) {
11
6
  const { default: pg } = await import("pg");
12
- const connectionString = resolveConnectionString(env);
7
+ const connectionString = resolveConnectionString(env, "PostgreSQL");
13
8
  const pool = new pg.Pool({
14
9
  connectionString,
15
10
  max: 1
@@ -23,10 +18,10 @@ async function resolveDatabase(env) {
23
18
  }
24
19
  async function runPostgresAuthMigrations(_request, env, runtime, migrationSchema) {
25
20
  if (!migrationSchema) throw new Error("auth: Migration schema is unavailable.");
26
- if (runtime.dialect !== "postgresql") throw new Error(`auth: Runtime mismatch. Expected postgresql, received '${runtime.dialect}'.`);
21
+ assertRuntimeDialect(runtime, "postgresql");
27
22
  if (migrationSchema.dialect !== "postgresql") throw new Error(`auth: Runtime mismatch. Expected postgresql, received '${migrationSchema.dialect}'.`);
28
23
  const { Client } = await import("pg");
29
- const client = new Client({ connectionString: resolveConnectionString(env) });
24
+ const client = new Client({ connectionString: resolveConnectionString(env, "PostgreSQL") });
30
25
  disablePgPassFallback(client);
31
26
  await client.connect();
32
27
  try {
@@ -1,4 +1,4 @@
1
- import { i as VoidAuthRuntimeOptions, n as VoidAuthEnv, r as VoidAuthRuntimeApi, t as VoidAuthDialect } from "../better-auth-shared-BVkjZ3vM.mjs";
1
+ import { i as VoidAuthRuntimeOptions, n as VoidAuthEnv, r as VoidAuthRuntimeApi, t as VoidAuthDialect } from "../better-auth-shared-CPvWD3nG.mjs";
2
2
  //#region src/runtime/better-auth.d.ts
3
3
  export declare const resolveVoidAuthOptions: VoidAuthRuntimeApi["resolveVoidAuthOptions"];
4
4
  export declare const createVoidAuth: VoidAuthRuntimeApi["createVoidAuth"];