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,6 +1,6 @@
1
- import { a as getRawRuntimeEnv } from "../env-raw-Cx8ElDdj.mjs";
2
- import { a as requireRuntimeBinding } from "../env-D5liuQYR.mjs";
3
- import { i as limitOperation, t as UsageLimit } from "../limits-Cjuk2VPm.mjs";
1
+ import { a as getRawRuntimeEnv } from "../env-raw-jZpP5n47.mjs";
2
+ import { t as UsageLimit } from "../limits-D0vD1M9A.mjs";
3
+ import { a as requireRuntimeBinding } from "../env-DMA3cXZt.mjs";
4
4
  import { n as SandboxContainer, r as validateSandboxOptions } from "../sandbox-container-C6ItmVuN.mjs";
5
5
  export * from "@cloudflare/sandbox";
6
6
  //#region src/runtime/sandbox.ts
@@ -95,7 +95,7 @@ function client(capability) {
95
95
  if (typeof method !== "string" || method === "then") return;
96
96
  return (...args) => {
97
97
  const index = method === "writeFile" || method === "rename" ? 3 : 2;
98
- return limitOperation(() => callWithOptions("files", [method, ...args], index));
98
+ return callWithOptions("files", [method, ...args], index);
99
99
  };
100
100
  } });
101
101
  const execute = async (argv, options) => {
@@ -109,26 +109,21 @@ function client(capability) {
109
109
  stdout: wire.stdout,
110
110
  stderr: wire.stderr,
111
111
  get exitCode() {
112
- return exitCode ??= limitOperation(async () => {
112
+ return exitCode ??= (async () => {
113
113
  try {
114
114
  return await wire.capability.invoke("exitCode", []);
115
115
  } catch (error) {
116
116
  rethrowSandboxError(error);
117
117
  }
118
- });
118
+ })();
119
119
  },
120
120
  output() {
121
- return output ??= limitOperation(async () => {
121
+ return output ??= (async () => {
122
122
  try {
123
123
  return await Promise.all([
124
124
  wire.stdout ? new Response(wire.stdout).arrayBuffer() : /* @__PURE__ */ new ArrayBuffer(0),
125
125
  wire.stderr ? new Response(wire.stderr).arrayBuffer() : /* @__PURE__ */ new ArrayBuffer(0),
126
- process.exitCode.match({
127
- ok: (code) => code,
128
- limited: (limit) => {
129
- throw limit;
130
- }
131
- })
126
+ process.exitCode
132
127
  ]).then(([stdout, stderr, exitCode]) => ({
133
128
  stdout,
134
129
  stderr,
@@ -137,7 +132,7 @@ function client(capability) {
137
132
  } catch (error) {
138
133
  rethrowSandboxError(error);
139
134
  }
140
- });
135
+ })();
141
136
  },
142
137
  kill: async (signal) => {
143
138
  await wire.capability.invoke("kill", [signal]);
@@ -150,16 +145,11 @@ function client(capability) {
150
145
  };
151
146
  return {
152
147
  files,
153
- exec: (argv, options) => limitOperation(() => execute(argv, options)),
154
- run: (argv, options) => limitOperation(async () => {
155
- return (await execute(argv, options)).output().match({
156
- ok: (result) => result,
157
- limited: (limit) => {
158
- throw limit;
159
- }
160
- });
161
- }),
162
- fetch: (port, request) => limitOperation(async () => await call("fetch", [port, request])),
148
+ exec: execute,
149
+ run: async (argv, options) => {
150
+ return (await execute(argv, options)).output();
151
+ },
152
+ fetch: async (port, request) => await call("fetch", [port, request]),
163
153
  running: async () => await call("running", []),
164
154
  destroy: async () => {
165
155
  await call("destroy", []);
@@ -1,2 +1,2 @@
1
- import { a as getLastEventId, i as formatSseText, n as eventStream, r as formatSse, t as SseStreamClosedError } from "../sse-CQNaDFFV.mjs";
1
+ import { a as getLastEventId, i as formatSseText, n as eventStream, r as formatSse, t as SseStreamClosedError } from "../sse-CMvCgjNk.mjs";
2
2
  export { SseStreamClosedError, eventStream, formatSse, formatSseText, getLastEventId };
@@ -1,4 +1,4 @@
1
- import { a as requireRuntimeBinding } from "../env-D5liuQYR.mjs";
1
+ import { a as requireRuntimeBinding } from "../env-DMA3cXZt.mjs";
2
2
  //#region src/runtime/storage.ts
3
3
  /** Create a storage client for a specific R2Bucket instance. */
4
4
  function createStorage(bucket) {
@@ -1,2 +1,2 @@
1
- import { D as runValidation, E as ValidatorSlots, T as HandlerInput } from "../handler-CZ4nAylQ.mjs";
1
+ import { D as runValidation, E as ValidatorSlots, T as HandlerInput } from "../handler-CNAwjRcW.mjs";
2
2
  export { HandlerInput, ValidatorSlots, runValidation };
@@ -1,6 +1,6 @@
1
1
  import { n as AuthState } from "../auth-DkcFflXV.mjs";
2
- import { i as VoidAuthRuntimeOptions, n as VoidAuthEnv } from "../better-auth-shared-BVkjZ3vM.mjs";
3
- import { f as WebSocketInstanceKey, t as AnyWebSocketDefinition } from "../ws-CL1w7GXU.mjs";
2
+ import { i as VoidAuthRuntimeOptions, n as VoidAuthEnv } from "../better-auth-shared-CPvWD3nG.mjs";
3
+ import { f as WebSocketInstanceKey, t as AnyWebSocketDefinition } from "../ws-CChrrAU-.mjs";
4
4
  //#region src/runtime/ws-server.d.ts
5
5
  export type WebSocketRouteMeta = {
6
6
  name?: string;
@@ -1,5 +1,5 @@
1
1
  import { t as authContext } from "../auth-3sGB0zJ1.mjs";
2
- import { o as withRuntimeEnv } from "../env-D5liuQYR.mjs";
2
+ import { o as withRuntimeEnv } from "../env-DMA3cXZt.mjs";
3
3
  //#region src/runtime/ws-server.ts
4
4
  function matchRoute(pattern, pathname) {
5
5
  const patternSegments = pattern.split("/").filter(Boolean);
@@ -153,27 +153,24 @@ function createRoomController(state, serverSchema) {
153
153
  }
154
154
  };
155
155
  }
156
- function createRoomContext(state, env, request, webSocket, stored, serverSchema) {
157
- return {
156
+ function createHookContext(definition, state, env, request, webSocket, stored) {
157
+ const serverSchema = definition.messages.server;
158
+ const base = {
158
159
  id: stored.roomId,
159
160
  params: stored.params,
160
161
  user: stored.user,
161
162
  request,
162
163
  env,
163
- storage: state.storage,
164
- room: createRoomController(state, serverSchema),
165
- connection: createConnection(webSocket, serverSchema)
164
+ storage: state.storage
166
165
  };
167
- }
168
- function createSocketContext(state, env, request, webSocket, stored, serverSchema) {
169
- return {
170
- id: stored.roomId,
171
- params: stored.params,
172
- user: stored.user,
173
- request,
174
- env,
175
- storage: state.storage,
176
- socket: createConnection(webSocket, serverSchema)
166
+ const connection = createConnection(webSocket, serverSchema);
167
+ return definition.__kind === "room" ? {
168
+ ...base,
169
+ room: createRoomController(state, serverSchema),
170
+ connection
171
+ } : {
172
+ ...base,
173
+ socket: connection
177
174
  };
178
175
  }
179
176
  function assertDefinition(definition) {
@@ -196,6 +193,9 @@ function createWebSocketDurableObject(definition, route, authRuntime, resolveAut
196
193
  fetch(request) {
197
194
  return withRuntimeEnv(this.env, () => this.handleFetch(request));
198
195
  }
196
+ context(request, webSocket, stored) {
197
+ return createHookContext(definition, this.state, this.env, request, webSocket, stored);
198
+ }
199
199
  async handleFetch(request) {
200
200
  const params = getRouteMatch(request, route) ?? {};
201
201
  const roomId = buildWebSocketInstanceId(instanceRoute, params);
@@ -213,23 +213,12 @@ function createWebSocketDurableObject(definition, route, authRuntime, resolveAut
213
213
  authState
214
214
  };
215
215
  setStoredConnection(server, stored);
216
- if (definition.__kind === "room") {
217
- const ctx = createRoomContext(this.state, this.env, request, server, stored, definition.messages.server);
218
- const decision = await withAuthState(authState, () => definition.onBeforeConnect?.(ctx));
219
- if (decision instanceof Response) return decision;
220
- } else {
221
- const ctx = createSocketContext(this.state, this.env, request, server, stored, definition.messages.server);
222
- const decision = await withAuthState(authState, () => definition.onBeforeConnect?.(ctx));
223
- if (decision instanceof Response) return decision;
224
- }
216
+ const beforeConnectCtx = this.context(request, server, stored);
217
+ const decision = await withAuthState(authState, () => definition.onBeforeConnect?.(beforeConnectCtx));
218
+ if (decision instanceof Response) return decision;
225
219
  this.state.acceptWebSocket(server);
226
- if (definition.__kind === "room") {
227
- const ctx = createRoomContext(this.state, this.env, request, server, stored, definition.messages.server);
228
- await withAuthState(authState, () => definition.onConnect?.(ctx));
229
- } else {
230
- const ctx = createSocketContext(this.state, this.env, request, server, stored, definition.messages.server);
231
- await withAuthState(authState, () => definition.onConnect?.(ctx));
232
- }
220
+ const connectCtx = this.context(request, server, stored);
221
+ await withAuthState(authState, () => definition.onConnect?.(connectCtx));
233
222
  return new Response(null, {
234
223
  status: 101,
235
224
  webSocket: client
@@ -243,13 +232,7 @@ function createWebSocketDurableObject(definition, route, authRuntime, resolveAut
243
232
  user,
244
233
  authState
245
234
  };
246
- if (definition.__kind === "room") {
247
- const fakeSocket = new WebSocketPair()[1];
248
- const ctx = createRoomContext(this.state, this.env, request, fakeSocket, stored, definition.messages.server);
249
- return withAuthState(authState, () => definition.onRequest(ctx));
250
- }
251
- const fakeSocket = new WebSocketPair()[1];
252
- const ctx = createSocketContext(this.state, this.env, request, fakeSocket, stored, definition.messages.server);
235
+ const ctx = this.context(request, new WebSocketPair()[1], stored);
253
236
  return withAuthState(authState, () => definition.onRequest(ctx));
254
237
  }
255
238
  webSocketMessage(webSocket, message) {
@@ -271,13 +254,8 @@ function createWebSocketDurableObject(definition, route, authRuntime, resolveAut
271
254
  return;
272
255
  }
273
256
  const request = new Request(`https://void.local${route.pattern}`);
274
- if (definition.__kind === "room") {
275
- const ctx = createRoomContext(this.state, this.env, request, webSocket, stored, definition.messages.server);
276
- await withAuthState(stored.authState ?? null, () => definition.onMessage?.(ctx, result.value));
277
- } else {
278
- const ctx = createSocketContext(this.state, this.env, request, webSocket, stored, definition.messages.server);
279
- await withAuthState(stored.authState ?? null, () => definition.onMessage?.(ctx, result.value));
280
- }
257
+ const ctx = this.context(request, webSocket, stored);
258
+ await withAuthState(stored.authState ?? null, () => definition.onMessage?.(ctx, result.value));
281
259
  }
282
260
  webSocketClose(webSocket, code, reason, wasClean) {
283
261
  return withRuntimeEnv(this.env, () => this.handleWebSocketClose(webSocket, code, reason, wasClean));
@@ -286,21 +264,12 @@ function createWebSocketDurableObject(definition, route, authRuntime, resolveAut
286
264
  completeWebSocketClose(webSocket, code, reason);
287
265
  const stored = getStoredConnection(webSocket);
288
266
  const request = new Request(`https://void.local${route.pattern}`);
289
- if (definition.__kind === "room") {
290
- const ctx = createRoomContext(this.state, this.env, request, webSocket, stored, definition.messages.server);
291
- await withAuthState(stored.authState ?? null, () => definition.onClose?.(ctx, {
292
- code,
293
- reason,
294
- wasClean
295
- }));
296
- } else {
297
- const ctx = createSocketContext(this.state, this.env, request, webSocket, stored, definition.messages.server);
298
- await withAuthState(stored.authState ?? null, () => definition.onClose?.(ctx, {
299
- code,
300
- reason,
301
- wasClean
302
- }));
303
- }
267
+ const ctx = this.context(request, webSocket, stored);
268
+ await withAuthState(stored.authState ?? null, () => definition.onClose?.(ctx, {
269
+ code,
270
+ reason,
271
+ wasClean
272
+ }));
304
273
  }
305
274
  }
306
275
  return VoidWebSocketDurableObject;
@@ -1,2 +1,2 @@
1
- import { a as RoomDefinition, c as VoidSocket, d as WebSocketConnection, f as WebSocketInstanceKey, h as defineWebSocket, i as RoomController, l as VoidSocketCloseEvent, m as defineRoom, n as ConnectCommonOptions, o as SocketContext, p as connect, r as RoomContext, s as SocketDefinition, t as AnyWebSocketDefinition, u as WebSocketBaseContext } from "../ws-CL1w7GXU.mjs";
1
+ import { a as RoomDefinition, c as VoidSocket, d as WebSocketConnection, f as WebSocketInstanceKey, h as defineWebSocket, i as RoomController, l as VoidSocketCloseEvent, m as defineRoom, n as ConnectCommonOptions, o as SocketContext, p as connect, r as RoomContext, s as SocketDefinition, t as AnyWebSocketDefinition, u as WebSocketBaseContext } from "../ws-CChrrAU-.mjs";
2
2
  export { AnyWebSocketDefinition, ConnectCommonOptions, RoomContext, RoomController, RoomDefinition, SocketContext, SocketDefinition, VoidSocket, VoidSocketCloseEvent, WebSocketBaseContext, WebSocketConnection, WebSocketInstanceKey, connect, defineRoom, defineWebSocket };
@@ -1,5 +1,5 @@
1
1
  import { t as isResourceName } from "../resource-name-C7LVpcRm.mjs";
2
- import { t as interpolateRouteParams } from "../route-url-CG7U-cRN.mjs";
2
+ import { t as interpolateRouteParams } from "../route-url-BjGv_KKY.mjs";
3
3
  //#region src/runtime/ws.ts
4
4
  function defineRoom(definition) {
5
5
  assertResourceName(definition.name);
@@ -1,4 +1,4 @@
1
- import { n as LimitOperation, r as UsageLimit } from "./limits-Bq5LG8Id.mjs";
1
+ import { t as UsageLimit } from "./limits-CFsDKQvU.mjs";
2
2
  import { i as SandboxExecOptions, r as SandboxContainer, s as SandboxOptions } from "./sandbox-container-Bo0eiFKz.mjs";
3
3
  import { Files } from "@cloudflare/sandbox";
4
4
  //#region src/runtime/sandbox.d.ts
@@ -15,17 +15,17 @@ type SandboxProcess = {
15
15
  stdin: WritableStream | null;
16
16
  stdout: ReadableStream | null;
17
17
  stderr: ReadableStream | null;
18
- readonly exitCode: LimitOperation<number>;
19
- output(): LimitOperation<ExecOutput>;
18
+ readonly exitCode: Promise<number>;
19
+ output(): Promise<ExecOutput>;
20
20
  kill(signal?: number): Promise<void>;
21
21
  resize(cols: number, rows: number): Promise<void>;
22
22
  };
23
- type SandboxFiles = { [K in keyof Files]: Files[K] extends ((...args: infer A) => Promise<infer R>) ? (...args: A) => LimitOperation<R> : never; };
23
+ type SandboxFiles = { [K in keyof Files]: Files[K] extends ((...args: infer A) => Promise<infer R>) ? (...args: A) => Promise<R> : never; };
24
24
  type SandboxClient = {
25
- exec(argv: Array<string>, options?: SandboxExecOptions): LimitOperation<SandboxProcess>;
26
- run(argv: Array<string>, options?: SandboxExecOptions): LimitOperation<ExecOutput>;
25
+ exec(argv: Array<string>, options?: SandboxExecOptions): Promise<SandboxProcess>;
26
+ run(argv: Array<string>, options?: SandboxExecOptions): Promise<ExecOutput>;
27
27
  files: SandboxFiles;
28
- fetch(port: number, request: Request): LimitOperation<Response>;
28
+ fetch(port: number, request: Request): Promise<Response>;
29
29
  running(): Promise<boolean>;
30
30
  destroy(): Promise<void>;
31
31
  };
@@ -59,8 +59,7 @@ function resolveEffectiveLayoutEntries(page, layouts, namedLayouts) {
59
59
  id: toLayoutId(resolved),
60
60
  definition: resolved
61
61
  };
62
- if (isExclusive) return [namedEntry];
63
- if (defaultChain.length === 0) return [namedEntry];
62
+ if (isExclusive || defaultChain.length === 0) return [namedEntry];
64
63
  const chain = [...defaultChain];
65
64
  chain[chain.length - 1] = namedEntry;
66
65
  return chain;
@@ -209,7 +208,7 @@ async function scanPages(root, options) {
209
208
  if (layoutsDirIdx !== -1) {
210
209
  if (layoutsDirIdx === segments.length - 2) namedLayouts.push({
211
210
  name: base,
212
- directory: segments.slice(0, layoutsDirIdx).join("/") || "",
211
+ directory: segments.slice(0, layoutsDirIdx).join("/"),
213
212
  filePath: file,
214
213
  island
215
214
  });
@@ -293,12 +292,8 @@ async function scanPages(root, options) {
293
292
  if (page.island) continue;
294
293
  const dir = dirname(page.componentPath);
295
294
  const segments = dir === "." ? [] : dir.split("/");
296
- let current = "";
297
- if (layouts.some((l) => l.directory === "" && l.island)) throw new Error(`pages: Regular page '${page.componentPath}' is under an island layout. Add a .island suffix.`);
298
- for (const seg of segments) {
299
- current = current ? `${current}/${seg}` : seg;
300
- if (layouts.some((l) => l.directory === current && l.island)) throw new Error(`pages: Regular page '${page.componentPath}' is under an island layout. Add a .island suffix.`);
301
- }
295
+ const ancestors = ["", ...segments.map((_, index) => segments.slice(0, index + 1).join("/"))];
296
+ if (layouts.some((l) => l.island && ancestors.includes(l.directory))) throw new Error(`pages: Regular page '${page.componentPath}' is under an island layout. Add a .island suffix.`);
302
297
  }
303
298
  for (const page of pages) {
304
299
  if (page.layout === void 0 || page.layout === false) continue;
@@ -312,13 +307,21 @@ async function scanPages(root, options) {
312
307
  namedLayouts
313
308
  };
314
309
  }
310
+ const LEADING_SCRIPT_RE = /^<script\b[^>]*>[\s\S]*?<\/script>\s*\n?/;
311
+ /** Return the raw YAML frontmatter of markdown source, after any leading <script> block. */
312
+ function markdownFrontmatter(source) {
313
+ return source.replace(LEADING_SCRIPT_RE, "").match(/^---\r?\n([\s\S]*?)\r?\n---/)?.[1];
314
+ }
315
+ /** Read a single-line `key: value` field, stripping surrounding quotes. */
316
+ function frontmatterField(yaml, key) {
317
+ return yaml.match(new RegExp(`^${key}:\\s*(.+)$`, "m"))?.[1]?.trim().replace(/^["']|["']$/g, "");
318
+ }
315
319
  /** Extract title and description from YAML frontmatter in markdown source. */
316
320
  function extractFrontmatterMeta(source) {
317
- const match = source.match(/^---\r?\n([\s\S]*?)\r?\n---/);
318
- if (!match) return;
319
- const yaml = match[1];
320
- const title = yaml.match(/^title:\s*(.+)$/m)?.[1]?.trim().replace(/^["']|["']$/g, "");
321
- const description = yaml.match(/^description:\s*(.+)$/m)?.[1]?.trim().replace(/^["']|["']$/g, "");
321
+ const yaml = markdownFrontmatter(source);
322
+ if (yaml === void 0) return;
323
+ const title = frontmatterField(yaml, "title");
324
+ const description = frontmatterField(yaml, "description");
322
325
  if (!title && !description) return;
323
326
  return {
324
327
  title,
@@ -327,12 +330,12 @@ function extractFrontmatterMeta(source) {
327
330
  }
328
331
  /** Extract layout field from YAML frontmatter in markdown source. */
329
332
  function extractFrontmatterLayout(source) {
330
- const match = source.match(/^---\r?\n([\s\S]*?)\r?\n---/);
331
- if (!match) return;
332
- const value = match[1].match(/^layout:\s*(.+)$/m)?.[1]?.trim().replace(/^["']|["']$/g, "");
333
+ const yaml = markdownFrontmatter(source);
334
+ if (yaml === void 0) return;
335
+ const value = frontmatterField(yaml, "layout");
333
336
  if (!value) return;
334
337
  if (value === "false") return false;
335
338
  return value;
336
339
  }
337
340
  //#endregion
338
- export { resolveNamedLayout as a, resolveLayoutIds as i, resolveEffectiveLayoutChain as n, resolveLayoutChain as r, scanPages as t };
341
+ export { resolveNamedLayout as a, resolveLayoutIds as i, resolveEffectiveLayoutChain as n, toLayoutId as o, resolveLayoutChain as r, scanPages as t };
@@ -1,10 +1,10 @@
1
- import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-BkbfDs0V.mjs";
2
- import { c as getToken } from "./auth-7wuZ5ob8.mjs";
3
- import { _ as validateSecretValues } from "./env-validation-vBSQ8gw5.mjs";
4
- import { A as confirm, B as note, H as outro, L as log, O as cancel, U as password, tt as isCancel } from "./prompts-6OSVA7DJ.mjs";
5
- import { r as PlatformClient } from "./client-RsPo8wsP.mjs";
6
- import { o as formatCount } from "./output-BBsUwdyT.mjs";
7
- import { r as resolveProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project-BG5ORGID.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, L as log, O as cancel, U as password, tt as isCancel } from "./dist-D3m88sjf.mjs";
4
+ import { d as printSuccess, s as formatCount, u as note } from "./output-C50ag2r3.mjs";
5
+ import { _ as validateSecretValues } from "./env-validation-Dxdx_5wo.mjs";
6
+ import { r as PlatformClient } from "./client-C2Prx_Bi.mjs";
7
+ import { i as resolveProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project-CP8rZs_p.mjs";
8
8
  import { readFileSync } from "node:fs";
9
9
  //#region src/cli/secret.ts
10
10
  async function runSecretCommand(root, args) {
@@ -47,7 +47,7 @@ async function runSecretCommand(root, args) {
47
47
  value
48
48
  }]);
49
49
  await client.setSecret(projectId, args.name, value);
50
- outro(`Secret ${args.name} set.`);
50
+ printSuccess(`Secret ${args.name} set.`);
51
51
  return;
52
52
  }
53
53
  if (args.action === "sync") {
@@ -67,17 +67,17 @@ async function runSecretCommand(root, args) {
67
67
  }
68
68
  for (const s of secrets) {
69
69
  await client.setSecret(projectId, s.name, s.value);
70
- log.success(`Set ${s.name}`);
70
+ log.step(`Set ${s.name}`);
71
71
  }
72
- outro(`Synced ${formatCount(secrets.length, "secret")}.`);
72
+ printSuccess(`Synced ${formatCount(secrets.length, "secret")}.`);
73
73
  return;
74
74
  }
75
75
  await client.deleteSecret(projectId, args.name);
76
- outro(`Secret ${args.name} deleted.`);
76
+ printSuccess(`Secret ${args.name} deleted.`);
77
77
  }
78
78
  async function runCloudflareSecretCommand(root, args) {
79
79
  if (args.projectName) throw new Error("secret: --project selects a Void platform project and is not used for direct Cloudflare apps.");
80
- const { deleteCloudflareSecret, listCloudflareSecrets, putCloudflareSecret, resolveCloudflareOperationContext, syncCloudflareSecrets } = await import("./cloudflare-operations-BhbK6yTq.mjs");
80
+ const { deleteCloudflareSecret, listCloudflareSecrets, putCloudflareSecret, resolveCloudflareOperationContext, syncCloudflareSecrets } = await import("./cloudflare-operations-BlYLlowZ.mjs");
81
81
  const context = resolveCloudflareOperationContext(root);
82
82
  if (args.action === "list") {
83
83
  const secrets = await listCloudflareSecrets(context);
@@ -96,7 +96,7 @@ async function runCloudflareSecretCommand(root, args) {
96
96
  value
97
97
  }]);
98
98
  await putCloudflareSecret(context, args.name, value);
99
- outro(`Secret ${args.name} set.`);
99
+ printSuccess(`Secret ${args.name} set.`);
100
100
  return;
101
101
  }
102
102
  if (args.action === "sync") {
@@ -115,11 +115,11 @@ async function runCloudflareSecretCommand(root, args) {
115
115
  process.exit(0);
116
116
  }
117
117
  await syncCloudflareSecrets(context, secrets);
118
- outro(`Synced ${formatCount(secrets.length, "secret")}.`);
118
+ printSuccess(`Synced ${formatCount(secrets.length, "secret")}.`);
119
119
  return;
120
120
  }
121
121
  await deleteCloudflareSecret(context, args.name);
122
- outro(`Secret ${args.name} deleted.`);
122
+ printSuccess(`Secret ${args.name} deleted.`);
123
123
  }
124
124
  const SECRET_KEY_RE = /^[A-Z][A-Z0-9_]*$/;
125
125
  function parseDotenvFile(filePath) {
@@ -1,5 +1,5 @@
1
1
  import { a as join, l as relative } from "./dist-BVqXeR_h.mjs";
2
- import { L as log } from "./prompts-6OSVA7DJ.mjs";
2
+ import { L as log } from "./dist-D3m88sjf.mjs";
3
3
  import { n as getPackageDir } from "./agents-B_pX_HmQ.mjs";
4
4
  import { existsSync, mkdirSync, readFileSync, readdirSync, readlinkSync, symlinkSync } from "node:fs";
5
5
  //#region src/cli/skills.ts
@@ -42,7 +42,7 @@ function linkSkills(root, skillsDir, skills, agentSkillsDir) {
42
42
  continue;
43
43
  }
44
44
  symlinkSync(relativeTarget, linkPath, process.platform === "win32" ? "junction" : "dir");
45
- log.success(` ${skill.name} — linked`);
45
+ log.step(` ${skill.name} — linked`);
46
46
  linked++;
47
47
  }
48
48
  return linked;
@@ -150,7 +150,7 @@ function assertRetry(value) {
150
150
  if (!Number.isInteger(value) || value < 0) throw new Error("sse: retry must be a non-negative integer.");
151
151
  }
152
152
  function isBinaryData(data) {
153
- return data instanceof ArrayBuffer || ArrayBuffer.isView(data) || typeof Blob !== "undefined" && data instanceof Blob || typeof File !== "undefined" && data instanceof File;
153
+ return data instanceof ArrayBuffer || ArrayBuffer.isView(data) || typeof Blob !== "undefined" && data instanceof Blob;
154
154
  }
155
155
  function serializeData(data) {
156
156
  if (typeof data === "string") return data;
@@ -1,5 +1,5 @@
1
- import { $ as wrapTextWithPrefix, G as promptTitle, M as getGuide, V as optionText, b as S_RADIO_ACTIVE, d as S_CHECKBOX_SELECTED, i as S_BAR_END, it as wrapAnsi, j as formatInstructionFooter, n as SELECT_INSTRUCTIONS, r as S_BAR, t as MULTISELECT_INSTRUCTIONS, u as S_CHECKBOX_INACTIVE, w as S_STEP_SUBMIT } from "./prompts-6OSVA7DJ.mjs";
2
- import { c as import_picocolors } from "./output-BBsUwdyT.mjs";
1
+ import { $ as wrapTextWithPrefix, G as promptTitle, M as getGuide, V as optionText, b as S_RADIO_ACTIVE, d as S_CHECKBOX_SELECTED, i as S_BAR_END, it as wrapAnsi, j as formatInstructionFooter, n as SELECT_INSTRUCTIONS, r as S_BAR, t as MULTISELECT_INSTRUCTIONS, u as S_CHECKBOX_INACTIVE, w as S_STEP_SUBMIT } from "./dist-D3m88sjf.mjs";
2
+ import { l as import_picocolors } from "./output-C50ag2r3.mjs";
3
3
  //#region src/cli/subcommand-prompt.ts
4
4
  function promptSubcommand(command, subcommands) {
5
5
  return new Promise((resolve) => {
@@ -4,8 +4,6 @@ type TsconfigHook = (config: Tsconfig) => Tsconfig | void;
4
4
  export type VoidSvelteKitTsconfigOptions = {
5
5
  /** Project root. Defaults to process.cwd(). */
6
6
  root?: string;
7
- /** @deprecated Generated paths no longer depend on SvelteKit's output directory. */
8
- outDir?: string;
9
7
  };
10
8
  /**
11
9
  * Merge Void's generated tsconfig fragment into SvelteKit's generated
@@ -0,0 +1,32 @@
1
+ //#region src/cli/terminal-log-text.ts
2
+ const TERMINAL_CONTROL = /\u001b\[[0-?]*[ -/]*[@-~]|\u001b\][^\u0000-\u001f\u007f-\u009f]*(?:\u0007|\u001b\\)|[\u0000-\u0008\u000b-\u001f\u007f-\u009f]/g;
3
+ const SGR = /^\u001b\[[0-9;:]*m$/;
4
+ /**
5
+ * Make app log text safe to print to a terminal. App logs often echo request
6
+ * data from anonymous visitors, so escape sequences in them must not reach the
7
+ * terminal as commands (clipboard writes, hyperlinks, screen clears, cursor
8
+ * moves or carriage-return overwrites).
9
+ *
10
+ * SGR color codes, newlines and tabs are kept so ordinary colored or
11
+ * multi-line logs read the same. A text that keeps any SGR code ends with a
12
+ * reset, so styles such as conceal cannot hide the lines printed after it.
13
+ * Every other complete CSI or OSC sequence is removed whole, so a hyperlink
14
+ * shows only its visible text and a line clear leaves no stray "[K". Every
15
+ * other C0/C1 control character is dropped on its own; an escape sequence that
16
+ * is incomplete, such as an OSC with no terminator, loses only its control
17
+ * characters and the rest prints as plain text instead of being swallowed.
18
+ *
19
+ * Keep this module free of imports: the Cloudflare operation process is a
20
+ * separate bundle entry that must stay small.
21
+ */
22
+ function sanitizeTerminalLogText(value) {
23
+ let keptStyle = false;
24
+ const text = value.replace(TERMINAL_CONTROL, (match) => {
25
+ if (!SGR.test(match)) return "";
26
+ keptStyle = true;
27
+ return match;
28
+ });
29
+ return keptStyle ? `${text}\u001b[0m` : text;
30
+ }
31
+ //#endregion
32
+ export { sanitizeTerminalLogText as t };
@@ -0,0 +1,2 @@
1
+ import { i as validateMigrations } from "./validate-C9qJArv7.mjs";
2
+ export { validateMigrations };
@@ -1,8 +1,7 @@
1
1
  import { a as join } from "./dist-BVqXeR_h.mjs";
2
2
  import { n as readJournal, r as stripSqlExt } from "./collect-DiTn9yr6.mjs";
3
- import { t as DESTRUCTIVE_PRAGMA } from "./plan-NPpwZ_kc.mjs";
3
+ import { i as getExecutableSql, t as DESTRUCTIVE_PRAGMA } from "./plan-BhLO2p4w.mjs";
4
4
  import { existsSync, readdirSync } from "node:fs";
5
- import { tokenizeSql } from "@void/deploy-core";
6
5
  //#region src/migrations/validate.ts
7
6
  /**
8
7
  * Destructive SQL patterns that are rejected unless the migration
@@ -50,11 +49,7 @@ function hasUnboundedWrite(statement) {
50
49
  * Check if a SQL migration contains destructive operations.
51
50
  */
52
51
  function isDestructive(sql) {
53
- const normalized = sql.replace(/\r\n?/g, "\n");
54
- let executable = "";
55
- for (const segment of tokenizeSql(normalized)) if (segment.kind === "sql") executable += normalized.slice(segment.start, segment.end);
56
- else executable += " ".repeat(segment.end - segment.start);
57
- return splitExecutableStatements(executable).some((statement) => {
52
+ return splitExecutableStatements(getExecutableSql(sql.replace(/\r\n?/g, "\n"))).some((statement) => {
58
53
  return DESTRUCTIVE_PATTERNS.some((pattern) => pattern.test(statement)) || hasUnboundedWrite(statement);
59
54
  });
60
55
  }
@@ -102,27 +97,13 @@ function listDrizzleArtifacts(migrationsDir) {
102
97
  * Assert that every `.sql` file under `migrationsDir` has a matching entry
103
98
  * in `meta/_journal.json`, and vice versa.
104
99
  *
105
- * Drift is a silent footgun: the local/remote runners apply files directly
106
- * from disk, but `drizzle-kit generate` only sees what's in the journal.
107
- * An orphan file created by hand (or by a botched scaffold/merge) gets
108
- * applied to D1 without Drizzle ever acknowledging it, and a failed
109
- * deploy can leave the database in a state that is impossible to recover
110
- * from without manual SQL edits.
100
+ * The runners apply files from disk, but `drizzle-kit generate` only sees the
101
+ * journal, so an orphan file would reach D1 without Drizzle knowing about it.
111
102
  *
112
- * A missing journal is NOT a drift error. The drift check is a diff
113
- * between disk and `meta/_journal.json`; with no journal, there is nothing
114
- * to diff against. Bare-legacy projects — hand-written `.sql` files with no
115
- * `db/schema.ts`, no drizzle-kit, no `meta/` directory — worked long
116
- * before this check existed, and the local/remote runners still track
117
- * applied migrations by filename via `_void_migrations`. Gating those
118
- * projects here would break `void deploy`, `void db migrate`, `void db
119
- * reset`, and `void db status` for a valid path with no migration path
120
- * forward (they cannot run `void db generate` because it requires
121
- * `db/schema.ts`). We skip the check silently and let the filename-based
122
- * runners take over.
123
- *
124
- * Throws a user-facing error when any mismatch is detected between the
125
- * journal and disk. Returns silently otherwise.
103
+ * A missing journal (with no other drizzle-kit artifacts) is not drift:
104
+ * hand-written `.sql` projects without `db/schema.ts` are supported and are
105
+ * tracked by filename in `_void_migrations`. They cannot run
106
+ * `void db generate`, so the check is skipped for them.
126
107
  */
127
108
  function assertJournalCoherence(migrationsDir, collected) {
128
109
  const journal = readJournal(migrationsDir);
@@ -162,7 +143,7 @@ function assertJournalCoherence(migrationsDir, collected) {
162
143
  const journalTags = new Set(journal.entries.map((e) => e.tag));
163
144
  const collectedTags = new Set(collected.map((m) => stripSqlExt(m.name)));
164
145
  const orphans = collected.map((m) => m.name).filter((name) => !journalTags.has(stripSqlExt(name)));
165
- const missing = journal.entries.map((e) => `${e.tag}.sql`).filter((file) => !collectedTags.has(stripSqlExt(file)));
146
+ const missing = journal.entries.filter((e) => !collectedTags.has(e.tag)).map((e) => `${e.tag}.sql`);
166
147
  if (orphans.length === 0 && missing.length === 0) return;
167
148
  const lines = ["Migration drift detected between db/migrations/ and db/migrations/meta/_journal.json."];
168
149
  if (orphans.length > 0) {
@@ -1,13 +1,3 @@
1
- //#region src/pages/validation-error.ts
2
- var ValidationError = class extends Error {
3
- errors;
4
- constructor(errors) {
5
- super("Validation failed");
6
- this.name = "ValidationError";
7
- this.errors = errors;
8
- }
9
- };
10
- //#endregion
11
1
  //#region src/pages/defer.ts
12
2
  const DEFERRED = Symbol("deferred");
13
3
  function defer(groupOrResolver, maybeResolver) {
@@ -46,4 +36,14 @@ function separateDeferred(props) {
46
36
  };
47
37
  }
48
38
  //#endregion
49
- export { ValidationError as i, defer as n, separateDeferred as r, DEFERRED as t };
39
+ //#region src/pages/validation-error.ts
40
+ var ValidationError = class extends Error {
41
+ errors;
42
+ constructor(errors) {
43
+ super("Validation failed");
44
+ this.name = "ValidationError";
45
+ this.errors = errors;
46
+ }
47
+ };
48
+ //#endregion
49
+ export { separateDeferred as i, DEFERRED as n, defer as r, ValidationError as t };