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,2 +1,2 @@
1
- import { i as resolveHead, n as renderHeadToString, r as renderHtmlAttrs, t as renderBodyAttrs } from "../head-D_QRR5Yd.mjs";
1
+ import { i as resolveHead, n as renderHeadToString, r as renderHtmlAttrs, t as renderBodyAttrs } from "../head-D2VF4ApL.mjs";
2
2
  export { renderBodyAttrs, renderHeadToString, renderHtmlAttrs, resolveHead };
@@ -1,5 +1,5 @@
1
- import { a as renderHtmlAttrs, i as renderHeadToString, n as HeadDescriptor, o as resolveHead, r as renderBodyAttrs, t as HeadConfig } from "../head-Do8P4puT.mjs";
2
- import "../config-BMHb8RCj.mjs";
1
+ import { a as renderHtmlAttrs, i as renderHeadToString, n as HeadDescriptor, o as resolveHead, r as renderBodyAttrs, t as HeadConfig } from "../head-C8K_iGe6.mjs";
2
+ import "../config-CSa15FvD.mjs";
3
3
  import { i as PageDefinition, n as LayoutDefinition, o as PageScanResult, r as NamedLayoutDefinition } from "../types-BAp5AEBU.mjs";
4
4
  import { t as serializePageData } from "../serialize-CfSwWfF2.mjs";
5
5
  //#region src/project-paths.d.ts
@@ -1,9 +1,9 @@
1
1
  import { a as join } from "../dist-BVqXeR_h.mjs";
2
2
  import { r as resolvePagesDir } from "../project-paths-GgcMozYz.mjs";
3
- import { m as readConfig } from "../config-Br_JZD6u.mjs";
4
- import { a as resolveNamedLayout, i as resolveLayoutIds, n as resolveEffectiveLayoutChain, r as resolveLayoutChain, t as scanPages } from "../scan-C7okrLyM.mjs";
5
- import { i as parseRedirectsFile } from "../headers-2rKda9Y6.mjs";
6
- import { i as resolveHead, n as renderHeadToString, r as renderHtmlAttrs, t as renderBodyAttrs } from "../head-D_QRR5Yd.mjs";
3
+ import { m as readConfig } from "../config-DiowPT80.mjs";
4
+ import { a as resolveNamedLayout, i as resolveLayoutIds, n as resolveEffectiveLayoutChain, o as toLayoutId, r as resolveLayoutChain, t as scanPages } from "../scan-C3uDzz6J.mjs";
5
+ import { i as parseRedirectsFile } from "../headers-DlfR78Nu.mjs";
6
+ import { i as resolveHead, n as renderHeadToString, r as renderHtmlAttrs, t as renderBodyAttrs } from "../head-D2VF4ApL.mjs";
7
7
  import { t as serializePageData } from "../serialize-BPvnNQuA.mjs";
8
8
  //#region src/pages/manifest.ts
9
9
  /**
@@ -17,15 +17,9 @@ function generateComponentManifest(scan, pagesDir) {
17
17
  const importPath = `${pagesDir}/${page.componentPath}`;
18
18
  lines.push(` ${JSON.stringify(page.componentId)}: () => import(${JSON.stringify(importPath)}),`);
19
19
  }
20
- for (const layout of scan.layouts) {
20
+ for (const layout of [...scan.layouts, ...scan.namedLayouts]) {
21
21
  const importPath = `${pagesDir}/${layout.filePath}`;
22
- const layoutId = layout.directory ? `${layout.directory}/layout` : "layout";
23
- lines.push(` ${JSON.stringify(layoutId)}: () => import(${JSON.stringify(importPath)}),`);
24
- }
25
- for (const namedLayout of scan.namedLayouts) {
26
- const importPath = `${pagesDir}/${namedLayout.filePath}`;
27
- const layoutId = namedLayout.directory ? `${namedLayout.directory}/_layouts/${namedLayout.name}` : `_layouts/${namedLayout.name}`;
28
- lines.push(` ${JSON.stringify(layoutId)}: () => import(${JSON.stringify(importPath)}),`);
22
+ lines.push(` ${JSON.stringify(toLayoutId(layout))}: () => import(${JSON.stringify(importPath)}),`);
29
23
  }
30
24
  lines.push("};");
31
25
  lines.push("const layoutTree = {");
@@ -1,6 +1,6 @@
1
1
  import { o as PageScanResult } from "../types-BAp5AEBU.mjs";
2
2
  import { ResolvedConfig, ViteDevServer } from "vite";
3
- //#region ../../node_modules/.pnpm/magic-string@1.4.2/node_modules/magic-string/dist/index.d.mts
3
+ //#region ../../node_modules/.pnpm/magic-string@1.4.3/node_modules/magic-string/dist/index.d.mts
4
4
  //#region src/SourceMap.d.ts
5
5
  interface SourceMapOptions {
6
6
  /**
@@ -1,22 +1,32 @@
1
1
  import { n as dirname, u as resolve } from "../dist-BVqXeR_h.mjs";
2
2
  import { n as isIdentifier, r as isLiteral } from "../ast-CPGPjb0V.mjs";
3
- import { n as resolveEffectiveLayoutChain, t as scanPages } from "../scan-C7okrLyM.mjs";
4
- import { t as MagicString } from "../dist-AoCzRTJE.mjs";
3
+ import { n as resolveEffectiveLayoutChain, t as scanPages } from "../scan-C3uDzz6J.mjs";
4
+ import { t as MagicString } from "../dist-Cegxq8gs.mjs";
5
5
  import { existsSync, readFileSync, readdirSync } from "node:fs";
6
6
  import { normalizePath, parseSync } from "vite";
7
7
  //#region src/pages/island-imports.ts
8
- /** Collect stylesheet imports from authored modules without treating dynamic imports or text as dependencies. */
9
- function findStaticCssImports(code, filename) {
10
- if (!code.includes("import")) return [];
11
- const scripts = /\.(?:vue|svelte)$/.test(filename) ? [...code.matchAll(/<script\b[^>]*>([\s\S]*?)<\/script\s*>/gi)].map((match) => ({
12
- source: match[1],
13
- filename: filename.replace(/\.(?:vue|svelte)$/, ".ts")
14
- })) : [{
8
+ /** The whole JS/TS module, or each `<script>` block of a Vue/Svelte SFC with its offset in the file. */
9
+ function scriptBlocks(code, filename) {
10
+ if (!/\.(?:vue|svelte)$/.test(filename)) return [{
15
11
  source: code,
12
+ offset: 0,
16
13
  filename
17
14
  }];
15
+ const scriptFilename = filename.replace(/\.(?:vue|svelte)$/, ".ts");
16
+ return [...code.matchAll(/<script\b[^>]*>([\s\S]*?)<\/script\s*>/gi)].map((match) => {
17
+ const source = match[1];
18
+ return {
19
+ source,
20
+ offset: match.index + match[0].indexOf(source),
21
+ filename: scriptFilename
22
+ };
23
+ });
24
+ }
25
+ /** Collect stylesheet imports from authored modules without treating dynamic imports or text as dependencies. */
26
+ function findStaticCssImports(code, filename) {
27
+ if (!code.includes("import")) return [];
18
28
  const imports = [];
19
- for (const script of scripts) {
29
+ for (const script of scriptBlocks(code, filename)) {
20
30
  if (!script.source.includes("import")) continue;
21
31
  const program = parseSync(script.filename, script.source).program;
22
32
  for (const node of program.body ?? []) {
@@ -44,22 +54,8 @@ function editIslandSource(code, edits, options) {
44
54
  /** Read island import attributes from JS/TS, or script blocks inside an SFC. */
45
55
  function findIslandImports(code, filename) {
46
56
  if (!code.includes("import") || !code.includes("island")) return [];
47
- const scripts = [];
48
- if (/\.(?:vue|svelte)$/.test(filename)) for (const match of code.matchAll(/<script\b[^>]*>([\s\S]*?)<\/script\s*>/gi)) {
49
- const source = match[1];
50
- scripts.push({
51
- source,
52
- offset: match.index + match[0].indexOf(source),
53
- filename: filename.replace(/\.(?:vue|svelte)$/, ".ts")
54
- });
55
- }
56
- else scripts.push({
57
- source: code,
58
- offset: 0,
59
- filename
60
- });
61
57
  const imports = [];
62
- for (const script of scripts) {
58
+ for (const script of scriptBlocks(code, filename)) {
63
59
  if (!script.source.includes("island")) continue;
64
60
  const program = parseSync(script.filename, script.source).program;
65
61
  for (const node of program.body ?? []) {
@@ -1,3 +1,3 @@
1
- import { w as ValidationError } from "../handler-CZ4nAylQ.mjs";
2
- import { a as handlePageMutation, i as handlePageGet, n as PageRenderResult, o as safeJsonStringify, r as flattenValidationErrors, t as PageObject } from "../protocol-CjF_iI9X.mjs";
1
+ import { w as ValidationError } from "../handler-CNAwjRcW.mjs";
2
+ import { a as handlePageMutation, i as handlePageGet, n as PageRenderResult, o as safeJsonStringify, r as flattenValidationErrors, t as PageObject } from "../protocol-BPZaNqBo.mjs";
3
3
  export { PageObject, PageRenderResult, ValidationError, flattenValidationErrors, handlePageGet, handlePageMutation, safeJsonStringify };
@@ -1,3 +1,3 @@
1
- import { i as ValidationError } from "../defer-YsYDUoii.mjs";
2
- import { i as safeJsonStringify, n as handlePageGet, r as handlePageMutation, t as flattenValidationErrors } from "../protocol-U7bfjHmA.mjs";
1
+ import { t as ValidationError } from "../validation-error-Dg9Recn1.mjs";
2
+ import { i as safeJsonStringify, n as handlePageGet, r as handlePageMutation, t as flattenValidationErrors } from "../protocol-CfaUwNs8.mjs";
3
3
  export { ValidationError, flattenValidationErrors, handlePageGet, handlePageMutation, safeJsonStringify };
@@ -1,4 +1,4 @@
1
- import { MIGRATION_CLASSIFIER_VERSION, canonicalJson, canonicalSql, classifySqlMigration, getMigrationPlanHashInput, tokenizeSql } from "@void/deploy-core";
1
+ import { MIGRATION_CLASSIFIER_VERSION, canonicalJson, canonicalSql, classifySqlMigration, getMigrationPlanHashInput, splitSqlStatements, tokenizeSql } from "@void/deploy-core";
2
2
  import { createHash } from "node:crypto";
3
3
  //#region src/migrations/plan.ts
4
4
  const DESTRUCTIVE_PRAGMA = "-- void:allow-destructive";
@@ -15,6 +15,7 @@ function computeMigrationListHash(plans) {
15
15
  plan.planHash
16
16
  ])));
17
17
  }
18
+ /** Blank out comments, strings and quoted identifiers, keeping offsets stable. */
18
19
  function getExecutableSql(sql) {
19
20
  let out = "";
20
21
  for (const segment of tokenizeSql(sql)) if (segment.kind === "sql") out += sql.slice(segment.start, segment.end);
@@ -41,7 +42,7 @@ function classifyMigration(migration) {
41
42
  return {
42
43
  ...base,
43
44
  planHash: hashPlan(base),
44
- ...classification.kind === "legacy-unsplit-multi-statement" ? { warnings: [`Migration ${migration.name} contains multiple statements without Drizzle statement breakpoints; it will run through the legacy D1 path.`] } : {}
45
+ ...classification.kind === "legacy-unsplit-multi-statement" && splitSqlStatements(sql) === null ? { warnings: [`Add a \`--> statement-breakpoint\` line after each complete SQL statement in migration ${migration.name}.`] } : {}
45
46
  };
46
47
  }
47
48
  function buildMigrationPlanBundle(migrations) {
@@ -55,4 +56,4 @@ function buildMigrationPlanBundle(migrations) {
55
56
  };
56
57
  }
57
58
  //#endregion
58
- export { sha256Hex as a, computeMigrationListHash as i, buildMigrationPlanBundle as n, classifyMigration as r, DESTRUCTIVE_PRAGMA as t };
59
+ export { getExecutableSql as i, buildMigrationPlanBundle as n, classifyMigration as r, DESTRUCTIVE_PRAGMA as t };
@@ -0,0 +1,2 @@
1
+ import { n as buildMigrationPlanBundle } from "./plan-BhLO2p4w.mjs";
2
+ export { buildMigrationPlanBundle };
@@ -1,4 +1,4 @@
1
- import { n as operatorGroups, r as parseOperatorArgs } from "./operator-args-CAVcmwUt.mjs";
1
+ import { n as operatorGroups, r as parseOperatorArgs } from "./operator-args-BNsW5gfp.mjs";
2
2
  import { PLATFORM_LOGIN_KINDS, normalizePlatformDashboardUrl, parsePlatformLoginId } from "@void/platform";
3
3
  import { parsePlatformPlanId } from "@void/platform/plans";
4
4
  //#region src/cli/platform-config-args.ts
@@ -416,6 +416,7 @@ function parsePlatformArgs(args) {
416
416
  if (subcommand === "uninstall") {
417
417
  const parsed = parseSelector(rest.filter((arg) => ![
418
418
  "--purge-data",
419
+ "--purge-resources",
419
420
  "--delete-zone",
420
421
  "--keep-zone"
421
422
  ].includes(arg)), subcommand, { allowYes: true });
@@ -424,7 +425,8 @@ function parsePlatformArgs(args) {
424
425
  subcommand,
425
426
  selector: parsed.selector,
426
427
  plan: parsed.plan,
427
- purgeData: rest.includes("--purge-data"),
428
+ purgeData: rest.includes("--purge-data") || rest.includes("--purge-resources"),
429
+ purgeResources: rest.includes("--purge-resources"),
428
430
  yes: parsed.yes,
429
431
  deleteZone: rest.includes("--delete-zone") ? true : rest.includes("--keep-zone") ? false : null
430
432
  };
@@ -0,0 +1,2 @@
1
+ import { t as parsePlatformArgs } from "./platform-args-BoZkWQnJ.mjs";
2
+ export { parsePlatformArgs };
@@ -1,19 +1,22 @@
1
- import { u as openBrowser } from "./auth-7wuZ5ob8.mjs";
2
- import { A as confirm, K as select, U as password, X as text, tt as isCancel, z as multiselect } from "./prompts-6OSVA7DJ.mjs";
3
- import { n as OperatorClient } from "./operator-client-LmwjxT6q.mjs";
4
- import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-CkmTE3rt.mjs";
1
+ import { u as openBrowser } from "./auth-B5_tZLxT.mjs";
2
+ import { A as confirm, K as select, U as password, X as text, z as multiselect } from "./dist-D3m88sjf.mjs";
3
+ import { d as printSuccess } from "./output-C50ag2r3.mjs";
4
+ import { n as OperatorClient } from "./operator-client-BQtzyG-g.mjs";
5
+ import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-AzVLbrr3.mjs";
6
+ import { i as humanLines } from "./operator-cmd-B6f6Cg9Z.mjs";
7
+ import { o as platformPromptAnswer } from "./platform-setup-DVe42Ws7.mjs";
5
8
  import { parsePlatformAdmissionPolicy, parsePlatformLoginConfiguration } from "@void/platform";
6
9
  import { stripVTControlCharacters } from "node:util";
7
10
  import { execFile } from "node:child_process";
8
11
  import { setTimeout } from "node:timers/promises";
9
12
  import { readFile } from "node:fs/promises";
10
13
  //#region src/cli/platform-auth-config.ts
11
- function value(input) {
12
- if (isCancel(input) || typeof input === "symbol") throw new Error("platform: Cancelled.");
13
- return input;
14
+ function print(result, json) {
15
+ console.log(json ? JSON.stringify(result, null, 2) : humanLines(result).join("\n"));
14
16
  }
15
- function print(result) {
16
- console.log(JSON.stringify(result, null, 2));
17
+ function printApplied(result, args) {
18
+ print(result, args.json);
19
+ if (!args.json && !args.plan) printSuccess("Platform authentication configuration updated.");
17
20
  }
18
21
  async function apply(client, path, body, args) {
19
22
  const preview = await client.request(path, {
@@ -27,7 +30,7 @@ async function apply(client, path, body, args) {
27
30
  if (!args.yes) {
28
31
  if (!process.stdin.isTTY) throw new Error("platform: Configuration changes require --yes or --plan in non-interactive mode.");
29
32
  console.error(JSON.stringify(preview, null, 2));
30
- if (!value(await confirm({
33
+ if (!platformPromptAnswer(await confirm({
31
34
  message: `Apply this change to ${client.origin}?`,
32
35
  initialValue: false
33
36
  }))) throw new Error("platform: Cancelled.");
@@ -91,11 +94,11 @@ async function configurationInput(args, existing) {
91
94
  input.id = id || input.id || (kind === "github" || kind === "google" ? kind : kind === "oidc" ? "company" : "access");
92
95
  const interactive = !!process.stdin.isTTY && !args.file;
93
96
  if (interactive) {
94
- if (!existing && kind !== "github" && kind !== "google" && !args.id) input.id = value(await text({
97
+ if (!existing && kind !== "github" && kind !== "google" && !args.id) input.id = platformPromptAnswer(await text({
95
98
  message: "Connection ID:",
96
99
  initialValue: String(input.id)
97
100
  }));
98
- input.label = value(await text({
101
+ input.label = platformPromptAnswer(await text({
99
102
  message: "Login button label:",
100
103
  initialValue: String(input.label ?? {
101
104
  github: "GitHub",
@@ -104,23 +107,23 @@ async function configurationInput(args, existing) {
104
107
  "cloudflare-access": "Cloudflare Access"
105
108
  }[kind])
106
109
  }));
107
- if (kind === "oidc" || kind === "cloudflare-access") input.issuer = value(await text({
110
+ if (kind === "oidc" || kind === "cloudflare-access") input.issuer = platformPromptAnswer(await text({
108
111
  message: "OIDC issuer URL:",
109
112
  initialValue: String(input.issuer ?? "")
110
113
  }));
111
- input.clientId = value(await text({
114
+ input.clientId = platformPromptAnswer(await text({
112
115
  message: "Client ID:",
113
116
  initialValue: String(input.clientId ?? "")
114
117
  }));
115
118
  if (kind === "google") {
116
- const domains = value(await text({
119
+ const domains = platformPromptAnswer(await text({
117
120
  message: "Allowed Workspace domains (comma-separated; blank allows any Google account):",
118
121
  initialValue: Array.isArray(input.allowedDomains) ? input.allowedDomains.join(", ") : ""
119
122
  }));
120
123
  input.allowedDomains = domains.split(",").map((domain) => domain.trim()).filter(Boolean);
121
124
  }
122
125
  if (kind === "oidc" || kind === "cloudflare-access") {
123
- const groups = value(await text({
126
+ const groups = platformPromptAnswer(await text({
124
127
  message: "Allowed groups (comma-separated; blank uses the provider’s access policy):",
125
128
  initialValue: Array.isArray(input.requiredGroups) ? input.requiredGroups.join(", ") : ""
126
129
  }));
@@ -131,7 +134,7 @@ async function configurationInput(args, existing) {
131
134
  if (existing && configuration.id !== existing.id) throw new Error("platform: Use add to create a connection with a new ID.");
132
135
  let secret = args.clientSecretEnv ? process.env[args.clientSecretEnv] : void 0;
133
136
  if (args.clientSecretEnv && !secret) throw new Error(`platform: ${args.clientSecretEnv} must contain the client secret.`);
134
- if (!args.clientSecretEnv && interactive) secret = value(await password({ message: existing ? "Client secret (leave blank to keep the saved secret):" : "Client secret:" })) || void 0;
137
+ if (!args.clientSecretEnv && interactive) secret = platformPromptAnswer(await password({ message: existing ? "Client secret (leave blank to keep the saved secret):" : "Client secret:" })) || void 0;
135
138
  if (!existing && !secret) throw new Error("platform: Provide --client-secret-env or enter a client secret interactively.");
136
139
  return {
137
140
  configuration,
@@ -140,11 +143,11 @@ async function configurationInput(args, existing) {
140
143
  }
141
144
  async function runPlatformAuthConfig(args) {
142
145
  if (args.action === "recover") {
143
- const { runPlatformAuthRecovery } = await import("./platform-auth-recovery-ICy4muq6.mjs");
146
+ const { runPlatformAuthRecovery } = await import("./platform-auth-recovery-tw9lgtgE.mjs");
144
147
  return runPlatformAuthRecovery(args);
145
148
  }
146
149
  if (args.action === "protection") {
147
- const { runPlatformProtectionConfig } = await import("./platform-auth-protection-DFeJ-JkK.mjs");
150
+ const { runPlatformProtectionConfig } = await import("./platform-auth-protection-zxDr0hWW.mjs");
148
151
  return runPlatformProtectionConfig(args);
149
152
  }
150
153
  const origin = resolveOperatorOrigin(args.connection);
@@ -152,15 +155,15 @@ async function runPlatformAuthConfig(args) {
152
155
  const listing = await client.request("/config/auth");
153
156
  if (!args.action) {
154
157
  if (!process.stdin.isTTY || args.json) {
155
- print(listing);
158
+ print(listing, args.json);
156
159
  return;
157
160
  }
158
161
  if (!listing.initialized) {
159
- print(await apply(client, "/config/auth/initialize", {}, args));
162
+ printApplied(await apply(client, "/config/auth/initialize", {}, args), args);
160
163
  console.log("Run void platform auth login, then return to void platform config auth.");
161
164
  return;
162
165
  }
163
- const chosen = value(await select({
166
+ const chosen = platformPromptAnswer(await select({
164
167
  message: "Platform authentication:",
165
168
  options: [
166
169
  ...listing.methods.map((method) => ({
@@ -182,7 +185,7 @@ async function runPlatformAuthConfig(args) {
182
185
  ]
183
186
  }));
184
187
  if (chosen === ":protection") {
185
- const target = value(await select({
188
+ const target = platformPromptAnswer(await select({
186
189
  message: "Platform protection:",
187
190
  options: [
188
191
  {
@@ -210,7 +213,7 @@ async function runPlatformAuthConfig(args) {
210
213
  action: "admission"
211
214
  });
212
215
  if (chosen === ":add") {
213
- const kind = value(await select({
216
+ const kind = platformPromptAnswer(await select({
214
217
  message: "Login method:",
215
218
  options: [
216
219
  {
@@ -238,7 +241,7 @@ async function runPlatformAuthConfig(args) {
238
241
  });
239
242
  }
240
243
  const method = listing.methods.find((method) => method.id === chosen);
241
- const action = value(await select({
244
+ const action = platformPromptAnswer(await select({
242
245
  message: stripVTControlCharacters(method.label),
243
246
  options: [
244
247
  {
@@ -266,11 +269,11 @@ async function runPlatformAuthConfig(args) {
266
269
  });
267
270
  }
268
271
  if (args.action === "list") {
269
- print(listing);
272
+ print(listing, args.json);
270
273
  return;
271
274
  }
272
275
  if (args.action === "initialize") {
273
- print(await apply(client, "/config/auth/initialize", {}, args));
276
+ printApplied(await apply(client, "/config/auth/initialize", {}, args), args);
274
277
  return;
275
278
  }
276
279
  if (!listing.initialized) throw new Error("platform: Run void platform config auth initialize, then sign in again.");
@@ -279,7 +282,7 @@ async function runPlatformAuthConfig(args) {
279
282
  if (args.file) admission = JSON.parse(await readFile(args.file, "utf8"));
280
283
  else {
281
284
  if (!process.stdin.isTTY || args.json) throw new Error("platform: Supply --file with the signup policy in non-interactive mode.");
282
- const mode = value(await select({
285
+ const mode = platformPromptAnswer(await select({
283
286
  message: "Who can create an account?",
284
287
  initialValue: listing.admission?.mode ?? "restricted",
285
288
  options: [
@@ -298,7 +301,7 @@ async function runPlatformAuthConfig(args) {
298
301
  ]
299
302
  }));
300
303
  if (mode === "company") {
301
- const access = !!listing.protection && value(await confirm({
304
+ const access = !!listing.protection && platformPromptAnswer(await confirm({
302
305
  message: "Allow everyone approved by Cloudflare Access protection?",
303
306
  initialValue: true
304
307
  }));
@@ -307,7 +310,7 @@ async function runPlatformAuthConfig(args) {
307
310
  admission = {
308
311
  mode,
309
312
  access,
310
- connections: eligible.length ? value(await multiselect({
313
+ connections: eligible.length ? platformPromptAnswer(await multiselect({
311
314
  message: "Login methods whose company policies qualify new users:",
312
315
  required: !access,
313
316
  options: eligible.map((method) => ({
@@ -318,29 +321,31 @@ async function runPlatformAuthConfig(args) {
318
321
  };
319
322
  } else admission = { mode };
320
323
  }
321
- print(await apply(client, "/config/auth/admission", {
324
+ printApplied(await apply(client, "/config/auth/admission", {
322
325
  revision: listing.revision,
323
326
  admission: parsePlatformAdmissionPolicy(admission)
324
- }, args));
327
+ }, args), args);
325
328
  return;
326
329
  }
327
330
  const method = listing.methods.find((method) => method.id === args.target);
328
331
  if (args.action !== "add" && !method) throw new Error("platform: Login method not found. Run void platform config auth list.");
329
332
  if (args.action === "show") {
330
- print(method);
333
+ print(method, args.json);
331
334
  return;
332
335
  }
333
336
  if (args.action === "test") {
334
- print(await testMethod(client, args.target, args));
337
+ const tested = await testMethod(client, args.target, args);
338
+ print(tested, args.json);
339
+ if (!args.json && !args.plan && tested.complete === true) printSuccess("Platform login verified.");
335
340
  return;
336
341
  }
337
342
  if (args.action === "add" || args.action === "configure") {
338
343
  console.error(`Register this callback URL with the provider: ${listing.callbackUrl ?? `${origin}/auth/callback`}`);
339
344
  const input = await configurationInput(args, args.action === "configure" ? method : void 0);
340
- print(await apply(client, `/config/auth/connections/${encodeURIComponent(input.configuration.id)}/configure`, {
345
+ printApplied(await apply(client, `/config/auth/connections/${encodeURIComponent(input.configuration.id)}/configure`, {
341
346
  ...input,
342
347
  revision: args.action === "add" ? null : method.revision
343
- }, args));
348
+ }, args), args);
344
349
  if (!args.plan && !args.json) console.log(`Test and enable it with void platform config auth enable ${input.configuration.id}.`);
345
350
  return;
346
351
  }
@@ -348,10 +353,10 @@ async function runPlatformAuthConfig(args) {
348
353
  if ((args.action === "enable" || args.action === "link") && !testId) {
349
354
  if (!process.stdin.isTTY || args.plan || args.json) throw new Error("platform: Complete a login test and supply its --test-id.");
350
355
  const tested = await testMethod(client, args.target, args);
351
- print(tested);
356
+ print(tested, args.json);
352
357
  if (tested.complete !== true || typeof tested.id !== "string") throw new Error("platform: Complete the browser test before enabling or linking this login.");
353
358
  testId = tested.id;
354
- if (args.action === "enable" && value(await confirm({
359
+ if (args.action === "enable" && platformPromptAnswer(await confirm({
355
360
  message: "Link this verified identity to your administrator account?",
356
361
  initialValue: true
357
362
  }))) await apply(client, `/config/auth/connections/${encodeURIComponent(args.target)}/link`, {
@@ -359,10 +364,10 @@ async function runPlatformAuthConfig(args) {
359
364
  testId
360
365
  }, args);
361
366
  }
362
- print(await apply(client, `/config/auth/connections/${encodeURIComponent(args.target)}/${args.action}`, {
367
+ printApplied(await apply(client, `/config/auth/connections/${encodeURIComponent(args.target)}/${args.action}`, {
363
368
  revision: method.revision,
364
369
  ...testId ? { testId } : {}
365
- }, args));
370
+ }, args), args);
366
371
  }
367
372
  //#endregion
368
373
  export { runPlatformAuthConfig };
@@ -1,11 +1,12 @@
1
- import { b as writePendingInstallationSecrets, d as promoteInstallationSecrets, f as readInstallationRecoverySecrets, g as resolveInstallationManifest, s as normalizePlatformApiUrl, t as acquirePlatformLifecycleLock, y as writeInstallationManifest } from "./platform-registry-KfNEF84O.mjs";
1
+ import { S as writePendingInstallationSecrets, c as normalizePlatformApiUrl, m as readInstallationRecoverySecrets, p as promoteInstallationSecrets, t as acquirePlatformLifecycleLock, v as resolveInstallationManifest, x as writeInstallationManifest } from "./platform-registry-P387v42A.mjs";
2
2
  import { t as cfAccessHeaders } from "./cf-access-TWNzXltp.mjs";
3
- import { n as ensurePlatformAccessToken } from "./cf-access-AHKBzmuu.mjs";
4
- import { A as confirm, tt as isCancel } from "./prompts-6OSVA7DJ.mjs";
5
- import { n as OperatorClient } from "./operator-client-LmwjxT6q.mjs";
6
- import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-CkmTE3rt.mjs";
7
- import { A as PlatformCloudflareClient, D as checkpointPlatformAccessResources, E as resolvePlatformCloudflareCredential, O as parsePlatformAccessSetupSpec, k as preparePlatformAccessSetup, n as resolvePlatformInstallDatabaseUrl, s as acquirePlatformDatabaseLifecycleLock } from "./platform-lifecycle-Dm09JNkn.mjs";
8
- import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-BSEc_ZeG.mjs";
3
+ import { n as ensurePlatformAccessToken } from "./cf-access-ngGqZpHZ.mjs";
4
+ import { A as confirm, tt as isCancel } from "./dist-D3m88sjf.mjs";
5
+ import { d as printSuccess } from "./output-C50ag2r3.mjs";
6
+ import { n as OperatorClient } from "./operator-client-BQtzyG-g.mjs";
7
+ import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-AzVLbrr3.mjs";
8
+ import { G as preparePlatformAccessSetup, K as PlatformCloudflareClient, U as checkpointPlatformAccessResources, V as resolvePlatformCloudflareCredential, W as parsePlatformAccessSetupSpec, n as resolvePlatformInstallDatabaseUrl, s as acquirePlatformDatabaseLifecycleLock } from "./platform-lifecycle-D_QEY32D.mjs";
9
+ import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-BdYblvvE.mjs";
9
10
  import { parsePlatformAccessProtection, platformProtectionProofMessage } from "@void/platform";
10
11
  import { createHmac } from "node:crypto";
11
12
  import { readFile } from "node:fs/promises";
@@ -212,7 +213,7 @@ async function runPlatformProtectionConfig(args) {
212
213
  protection,
213
214
  retainedAccessApplications: true
214
215
  }, null, 2));
215
- if (!args.json) console.log("Sign in again with void platform auth login. Existing Access applications and policies were retained.");
216
+ if (!args.json) printSuccess("Platform protection updated. Sign in again with void platform auth login. Existing Access applications and policies were retained.");
216
217
  } finally {
217
218
  release();
218
219
  }
@@ -1,9 +1,10 @@
1
- import { f as readInstallationRecoverySecrets, g as resolveInstallationManifest, t as acquirePlatformLifecycleLock } from "./platform-registry-KfNEF84O.mjs";
2
- import { u as openBrowser } from "./auth-7wuZ5ob8.mjs";
3
- import { A as confirm, tt as isCancel } from "./prompts-6OSVA7DJ.mjs";
4
- import { a as resolveOperatorOrigin } from "./operator-auth-CkmTE3rt.mjs";
5
- import { A as PlatformCloudflareClient, E as resolvePlatformCloudflareCredential, c as acquirePlatformDatabaseLifecycleLockConnection, l as platformDatabaseClientUrl, n as resolvePlatformInstallDatabaseUrl } from "./platform-lifecycle-Dm09JNkn.mjs";
6
- import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-BSEc_ZeG.mjs";
1
+ import { m as readInstallationRecoverySecrets, t as acquirePlatformLifecycleLock, v as resolveInstallationManifest } from "./platform-registry-P387v42A.mjs";
2
+ import { u as openBrowser } from "./auth-B5_tZLxT.mjs";
3
+ import { A as confirm, tt as isCancel } from "./dist-D3m88sjf.mjs";
4
+ import { d as printSuccess } from "./output-C50ag2r3.mjs";
5
+ import { a as resolveOperatorOrigin } from "./operator-auth-AzVLbrr3.mjs";
6
+ import { K as PlatformCloudflareClient, V as resolvePlatformCloudflareCredential, c as acquirePlatformDatabaseLifecycleLockConnection, l as platformDatabaseClientUrl, n as resolvePlatformInstallDatabaseUrl } from "./platform-lifecycle-D_QEY32D.mjs";
7
+ import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-BdYblvvE.mjs";
7
8
  import { parsePlatformAccessProtection, parsePlatformAdmissionPolicy, parsePlatformLoginConfiguration, platformAuthenticationRecoveryMessage, validatePlatformAdmissionPolicy } from "@void/platform";
8
9
  import { createCipheriv, createDecipheriv, createHash, createHmac, hkdfSync, randomBytes, randomUUID } from "node:crypto";
9
10
  import { execFile } from "node:child_process";
@@ -295,7 +296,7 @@ async function runPlatformAuthRecovery(args) {
295
296
  recovery,
296
297
  identity: tested
297
298
  });
298
- console.log("Administrator login recovered. Sign in again with this login method.");
299
+ printSuccess("Administrator login recovered. Sign in again with this login method.");
299
300
  } finally {
300
301
  await releaseDatabase();
301
302
  }