void 0.26.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 (360) hide show
  1. package/AGENTS_TEMPLATE.md +1 -3
  2. package/README.md +19 -9
  3. package/dist/{account-cmd-CDry3B5V.mjs → account-cmd-CfUXh_nU.mjs} +8 -7
  4. package/dist/{application-analysis-DC2yPvzY.mjs → application-analysis-DKy02UY0.mjs} +21 -32
  5. package/dist/{application-routing-C9khgLiS.mjs → application-routing-DQyUh_5S.mjs} +1 -1
  6. package/dist/{auth-D52yG7hl.mjs → auth-B5_tZLxT.mjs} +7 -7
  7. package/dist/{auth-B60QDbjg.mjs → auth-BgX2qYSY.mjs} +1 -1
  8. package/dist/{auth-link-DjeOptYi.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-BRxIuqDi.mjs → auth-router-Bap-pvbn.mjs} +4 -17
  11. package/dist/{better-auth-shared-BVkjZ3vM.d.mts → better-auth-shared-CPvWD3nG.d.mts} +0 -4
  12. package/dist/{better-auth-shared-hy6RPh9W.mjs → better-auth-shared-DPpj8zxc.mjs} +94 -16
  13. package/dist/{build-cmd-Ce3C8huo.mjs → build-cmd-B58c8iS8.mjs} +7 -6
  14. package/dist/{cache-CS8Yxr5a.mjs → cache-Bo52trKF.mjs} +7 -7
  15. package/dist/{cancel-deploy-mZsD88Xa.mjs → cancel-deploy-BZNz3Q26.mjs} +5 -4
  16. package/dist/{cf-access-YTlqvAsk.mjs → cf-access-ngGqZpHZ.mjs} +10 -11
  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.mjs +5 -6
  22. package/dist/client-By4JjMw_.mjs +2 -0
  23. package/dist/{client-mC-dFGDD.mjs → client-C2Prx_Bi.mjs} +28 -6
  24. package/dist/{cloudflare-auth-Qdc7tw8F.mjs → cloudflare-auth-CuxfF6OA.mjs} +9 -17
  25. package/dist/{cloudflare-cmd-bhwCxAN6.mjs → cloudflare-cmd-lHqNlJGW.mjs} +6 -5
  26. package/dist/{cloudflare-config-Bktvwtpf.mjs → cloudflare-config-BmhBv3HV.mjs} +1 -1
  27. package/dist/{cloudflare-connect-CuhRgk3k.mjs → cloudflare-connect-2G3rL2rP.mjs} +4 -4
  28. package/dist/{cloudflare-operations-DoQrVHAt.mjs → cloudflare-operations-BlYLlowZ.mjs} +1 -1
  29. package/dist/{cloudflare-operations-DYa3coIk.mjs → cloudflare-operations-CwI1bChl.mjs} +41 -70
  30. package/dist/{cloudflare-process-B-wekeR6.mjs → cloudflare-process-2-TfIEzB.mjs} +20 -22
  31. package/dist/{config-CyQ-wVd7.mjs → config-5r-YpMC-.mjs} +1 -1
  32. package/dist/{config-C_XRIPx2.mjs → config-B_ggY-IO.mjs} +3 -3
  33. package/dist/config-BtSFvXZx.mjs +2 -0
  34. package/dist/config-CLYAosnQ.mjs +78 -0
  35. package/dist/{config-BMHb8RCj.d.mts → config-CSa15FvD.d.mts} +1 -1
  36. package/dist/{config-Br_JZD6u.mjs → config-DiowPT80.mjs} +24 -30
  37. package/dist/config-entry.d.mts +1 -1
  38. package/dist/{config-write-B1f88wJA.mjs → config-write-AHGesphx.mjs} +8 -7
  39. package/dist/{connect-H6EvP62X.mjs → connect-X0MUA1gk.mjs} +10 -9
  40. package/dist/{create-project-B2kk9Q0o.mjs → create-project-DxiyW6iX.mjs} +6 -6
  41. package/dist/{create-project-Dbb4uiN-.mjs → create-project-iwkbqiBU.mjs} +1 -1
  42. package/dist/{db-DpCKZto0.mjs → db-XnVMHzoV.mjs} +100 -132
  43. package/dist/{delete-CxlSvsvW.mjs → delete-esYlMiSJ.mjs} +6 -6
  44. package/dist/{deploy-CeEbnv4b.mjs → deploy-BsEvnlJl.mjs} +2346 -2495
  45. package/dist/deploy-C1d-YTfp.mjs +2 -0
  46. package/dist/{dev-inbox-D64ZKUod.mjs → dev-inbox-CK-UuPob.mjs} +7 -16
  47. package/dist/{discover-BcPPiF1o.mjs → discover-CkCYv9T_.mjs} +1 -2
  48. package/dist/discover-EDUf6JJw.mjs +2 -0
  49. package/dist/{prompts-ZAuJlyCj.mjs → dist-Bx1z6Eva.mjs} +1 -1
  50. package/dist/{dist-AoCzRTJE.mjs → dist-Cegxq8gs.mjs} +8 -8
  51. package/dist/{prompts-6OSVA7DJ.mjs → dist-D3m88sjf.mjs} +10 -53
  52. package/dist/{domain-B_9VgOm6.mjs → domain-CbbBWhWE.mjs} +28 -29
  53. package/dist/{dotenv-VQxupEUv.mjs → dotenv-BfU6eqFt.mjs} +20 -32
  54. package/dist/{drizzle-Beb2Am5S.mjs → drizzle-CF84FOVM.mjs} +16 -13
  55. package/dist/{email-BokHgjKj.mjs → email-CpuT42g7.mjs} +23 -18
  56. package/dist/{email--tEtMoj_.mjs → email-d_Aux1vM.mjs} +1 -1
  57. package/dist/{entry-CF5wvH4w.mjs → entry-CMAkqBmU.mjs} +6 -6
  58. package/dist/{env-_v349JBd.mjs → env-BxocywBB.mjs} +25 -6
  59. package/dist/{env-D5liuQYR.mjs → env-DMA3cXZt.mjs} +1 -1
  60. package/dist/{env-raw-Cx8ElDdj.mjs → env-raw-jZpP5n47.mjs} +1 -2
  61. package/dist/{env-types-D5kds_OZ.mjs → env-types-CwXgeMgL.mjs} +1 -1
  62. package/dist/{env-validation-cZBvGWaP.mjs → env-validation-CrVNjsPm.mjs} +1 -1
  63. package/dist/{env-validation-vBSQ8gw5.mjs → env-validation-Dxdx_5wo.mjs} +17 -21
  64. package/dist/{env-BdTc-K2L.mjs → env-w9jOyGZn.mjs} +9 -9
  65. package/dist/{fetch-_SeGZao9.d.mts → fetch-BPCYVi3H.d.mts} +20 -1
  66. package/dist/{fetch-BIZJh7vR.mjs → fetch-sAcwjzLO.mjs} +1 -1
  67. package/dist/{fetch-stream-Nm3hkZbT.mjs → fetch-stream-PGgz4uGz.mjs} +18 -23
  68. package/dist/{fetch-stream-Bjf0hoZb.d.mts → fetch-stream-obvZ7fvO.d.mts} +1 -16
  69. package/dist/{gen-BhDlTpwW.mjs → gen-DtkQhvQg.mjs} +40 -57
  70. package/dist/gen-dA9hW7AV.mjs +2 -0
  71. package/dist/{github-cmd-hhkTzlGS.mjs → github-cmd-D_FsOFxq.mjs} +64 -163
  72. package/dist/{handler-DghKr6dU.mjs → handler-BHAn2fZJ.mjs} +1 -0
  73. package/dist/{handler-BeK3weD4.d.mts → handler-CNAwjRcW.d.mts} +4 -11
  74. package/dist/{head-Do8P4puT.d.mts → head-C8K_iGe6.d.mts} +1 -1
  75. package/dist/{head-D_QRR5Yd.mjs → head-D2VF4ApL.mjs} +29 -51
  76. package/dist/{headers-2rKda9Y6.mjs → headers-DlfR78Nu.mjs} +3 -3
  77. package/dist/{help-Bv44e2tm.mjs → help-CVFBTmBx.mjs} +13 -32
  78. package/dist/help-DzKUrQvk.mjs +2 -0
  79. package/dist/{inbound-fRkqcXaC.mjs → inbound-PfQDLXc5.mjs} +23 -24
  80. package/dist/index.d.mts +19 -2
  81. package/dist/index.mjs +617 -530
  82. package/dist/{info-DhtTKh65.mjs → info-PYWwkWyt.mjs} +4 -4
  83. package/dist/{init-BMf4T03q.mjs → init-Bw-fRKGp.mjs} +160 -197
  84. package/dist/{link-BqYsSS_I.mjs → link-DlPG8iX3.mjs} +9 -9
  85. package/dist/{list-_kBToO-l.mjs → list-2GN7_ueV.mjs} +8 -7
  86. package/dist/{live-CB1y5IuC.mjs → live-CgQuTpqD.mjs} +15 -16
  87. package/dist/{live-iAuEH1hd.d.mts → live-Du8jXwOW.d.mts} +4 -2
  88. package/dist/{local-d1-fGxYrVD6.mjs → local-d1-ga5O_idV.mjs} +2 -2
  89. package/dist/{login-DFuo-RWO.mjs → login-D-Q4xw3Q.mjs} +7 -7
  90. package/dist/login-Dc-wuTDq.mjs +2 -0
  91. package/dist/{logs-DYgnh6dH.mjs → logs-rd8J-OFh.mjs} +27 -10
  92. package/dist/migrate-BHp07yJE.mjs +2 -0
  93. package/dist/{migrate-CV1on-yJ.mjs → migrate-NLsjBbuM.mjs} +34 -20
  94. package/dist/{mime-D5Nmdzf7.mjs → mime-DxCznlJq.mjs} +45 -95
  95. package/dist/{node-C6Q6e1Es.mjs → node-DJicPvPj.mjs} +5 -5
  96. package/dist/{operator-args-DdY54Bgb.mjs → operator-args-BNsW5gfp.mjs} +10 -1
  97. package/dist/{operator-auth-2dsGlTT5.mjs → operator-auth-AzVLbrr3.mjs} +1 -1
  98. package/dist/{operator-client-BFqpp6z0.mjs → operator-client-BQtzyG-g.mjs} +1 -1
  99. package/dist/{operator-cmd-CUGHXrQf.mjs → operator-cmd-B6f6Cg9Z.mjs} +24 -11
  100. package/dist/operator-cmd-Cwn50lOV.mjs +2 -0
  101. package/dist/{output-BvdaehtE.mjs → output-C50ag2r3.mjs} +20 -2
  102. package/dist/pages/client.d.mts +19 -51
  103. package/dist/pages/client.mjs +204 -225
  104. package/dist/pages/head-client.d.mts +1 -1
  105. package/dist/pages/head.d.mts +1 -1
  106. package/dist/pages/head.mjs +1 -1
  107. package/dist/pages/index.d.mts +2 -2
  108. package/dist/pages/index.mjs +6 -12
  109. package/dist/pages/islands-plugin.d.mts +1 -1
  110. package/dist/pages/islands-plugin.mjs +21 -25
  111. package/dist/pages/protocol.d.mts +2 -2
  112. package/dist/pages/protocol.mjs +2 -2
  113. package/dist/{plan-CJGEeTEI.mjs → plan-BhLO2p4w.mjs} +2 -1
  114. package/dist/plan-CH2G51je.mjs +2 -0
  115. package/dist/{platform-args-DSV2p4nY.mjs → platform-args-BoZkWQnJ.mjs} +1 -1
  116. package/dist/platform-args-DYgITk0D.mjs +2 -0
  117. package/dist/{platform-auth-config-Bosx7U1h.mjs → platform-auth-config-n603OANg.mjs} +40 -36
  118. package/dist/{platform-auth-protection-DcbL_LW_.mjs → platform-auth-protection-zxDr0hWW.mjs} +8 -7
  119. package/dist/{platform-auth-recovery-WfTZ8K6o.mjs → platform-auth-recovery-tw9lgtgE.mjs} +7 -6
  120. package/dist/{platform-cmd-DbKtQb_4.mjs → platform-cmd-B8-bCb7t.mjs} +10 -10
  121. package/dist/{platform-cmd-dyFUof0t.mjs → platform-cmd-C00YM14r.mjs} +1 -1
  122. package/dist/{platform-domain-Bsq43AJp.mjs → platform-domain-p0kobLV8.mjs} +5 -5
  123. package/dist/{platform-lifecycle-Cfi0o6xM.mjs → platform-lifecycle-D_QEY32D.mjs} +75 -386
  124. package/dist/{platform-lifecycle--5gWmDoI.mjs → platform-lifecycle-vFqtNPPa.mjs} +1 -1
  125. package/dist/{platform-management-BrF9STZp.mjs → platform-management-BdYblvvE.mjs} +6 -6
  126. package/dist/{platform-management-Bbwf6-Dq.mjs → platform-management-oi-SvI3f.mjs} +1 -1
  127. package/dist/{platform-plans-config-DU-8nC2Y.mjs → platform-plans-config-CjiFv5J4.mjs} +5 -4
  128. package/dist/{platform-recovery-DQAqAQYu.mjs → platform-recovery-PvNS9Nl2.mjs} +2 -2
  129. package/dist/platform-setup-DVe42Ws7.mjs +299 -0
  130. package/dist/{plugin-inference-CXWnn79A.mjs → plugin-inference-BlQbOL0P.mjs} +43 -42
  131. package/dist/prepare-DRUV-g3X.mjs +2 -0
  132. package/dist/{prepare-WoUubFKL.mjs → prepare-Do96654b.mjs} +8 -8
  133. package/dist/{prepare-BMrRWLwP.mjs → prepare-Dq9hTIbo.mjs} +4 -4
  134. package/dist/{prerender-render-D9qbLs2f.mjs → prerender-render-Ct20jftc.mjs} +17 -3
  135. package/dist/prerender-render.mjs +1 -1
  136. package/dist/{project-cmd-BbH2LptN.mjs → project-cmd-ti8_yTcA.mjs} +18 -18
  137. package/dist/{project-team-Yiww3-go.mjs → project-team-CDPE1Tsg.mjs} +14 -17
  138. package/dist/{project-token-BrtT2NkY.mjs → project-token-CkZ1cN0Z.mjs} +13 -16
  139. package/dist/{project-tsconfig-B8GeM0RM.mjs → project-tsconfig-CVJhNMxs.mjs} +2 -1
  140. package/dist/{project-zero-trust-nYJ2V2nc.mjs → project-zero-trust-DdjLR61k.mjs} +11 -8
  141. package/dist/{protocol-BX8t2jiw.d.mts → protocol-BPZaNqBo.d.mts} +4 -2
  142. package/dist/{protocol-U7bfjHmA.mjs → protocol-CfaUwNs8.mjs} +46 -49
  143. package/dist/{providers-CJlNS3kT.mjs → providers-BXuhmuub.mjs} +1 -12
  144. package/dist/{provision-VeqAC77A.mjs → provision-BfaLiWbj.mjs} +38 -41
  145. package/dist/{provision-DMTPG8Rh.mjs → provision-Wu9ZBk9L.mjs} +2 -3
  146. package/dist/{requests-TIz_jtSu.mjs → requests-DFAqyYy8.mjs} +4 -4
  147. package/dist/resolve-project-BIeYs9Cw.mjs +2 -0
  148. package/dist/{resolve-project-BG5ORGID.mjs → resolve-project-CP8rZs_p.mjs} +6 -1
  149. package/dist/{rollback-dBqICPzj.mjs → rollback-BKYXBduI.mjs} +29 -36
  150. package/dist/{route-types-Clm4WD0B.mjs → route-types-CbtsIeFn.mjs} +1 -1
  151. package/dist/route-url-BgPja1GS.d.mts +5 -0
  152. package/dist/route-url-BjGv_KKY.mjs +28 -0
  153. package/dist/runner-9wjsSZx-.mjs +2 -0
  154. package/dist/{runner--2KF6Kua.mjs → runner-DMBKSrRk.mjs} +2 -2
  155. package/dist/{runner-mysql-DmWchSWJ.mjs → runner-mysql-CEzKtmFb.mjs} +8 -8
  156. package/dist/{runner-mysql-CEG5JozK.mjs → runner-mysql-CkFqZ6CE.mjs} +1 -1
  157. package/dist/{runner-pg-Bh4AgZdj.mjs → runner-pg-BGYRFdRp.mjs} +1 -1
  158. package/dist/runtime/ai.d.mts +1 -1
  159. package/dist/runtime/ai.mjs +34 -95
  160. package/dist/runtime/better-auth-mysql.d.mts +1 -1
  161. package/dist/runtime/better-auth-mysql.mjs +4 -9
  162. package/dist/runtime/better-auth-pg.d.mts +1 -1
  163. package/dist/runtime/better-auth-pg.mjs +5 -10
  164. package/dist/runtime/better-auth.d.mts +1 -1
  165. package/dist/runtime/better-auth.mjs +3 -3
  166. package/dist/runtime/client-react.d.mts +2 -3
  167. package/dist/runtime/client-react.mjs +2 -2
  168. package/dist/runtime/client-solid.d.mts +2 -3
  169. package/dist/runtime/client-solid.mjs +2 -2
  170. package/dist/runtime/client-svelte.d.mts +2 -3
  171. package/dist/runtime/client-svelte.mjs +2 -2
  172. package/dist/runtime/client-vue.d.mts +2 -3
  173. package/dist/runtime/client-vue.mjs +2 -2
  174. package/dist/runtime/client.d.mts +2 -3
  175. package/dist/runtime/client.mjs +2 -2
  176. package/dist/runtime/db.mjs +1 -1
  177. package/dist/runtime/durable.mjs +3 -10
  178. package/dist/runtime/email/testing.mjs +5 -5
  179. package/dist/runtime/email.d.mts +2 -1
  180. package/dist/runtime/email.mjs +11 -27
  181. package/dist/runtime/env-public.mjs +15 -20
  182. package/dist/runtime/env.mjs +1 -1
  183. package/dist/runtime/fetch-stream.d.mts +2 -2
  184. package/dist/runtime/fetch-stream.mjs +1 -1
  185. package/dist/runtime/fetch.d.mts +2 -3
  186. package/dist/runtime/fetch.mjs +1 -1
  187. package/dist/runtime/handler.d.mts +1 -1
  188. package/dist/runtime/handler.mjs +2 -2
  189. package/dist/runtime/isr.mjs +1 -1
  190. package/dist/runtime/kv.mjs +10 -11
  191. package/dist/runtime/live-client.d.mts +1 -1
  192. package/dist/runtime/live-client.mjs +12 -22
  193. package/dist/runtime/live-server.mjs +27 -35
  194. package/dist/runtime/live.d.mts +2 -2
  195. package/dist/runtime/live.mjs +2 -2
  196. package/dist/runtime/migration-handler.mjs +4 -81
  197. package/dist/runtime/queues.mjs +1 -1
  198. package/dist/runtime/remote/binding-handler.d.mts +2 -2
  199. package/dist/runtime/remote/binding-handler.mjs +8 -9
  200. package/dist/runtime/remote/index.mjs +27 -77
  201. package/dist/runtime/route-url.d.mts +2 -4
  202. package/dist/runtime/route-url.mjs +1 -1
  203. package/dist/runtime/routing.d.mts +1 -1
  204. package/dist/runtime/routing.mjs +15 -26
  205. package/dist/runtime/sandbox.mjs +2 -2
  206. package/dist/runtime/sse.mjs +1 -1
  207. package/dist/runtime/storage.mjs +1 -1
  208. package/dist/runtime/validator.d.mts +1 -1
  209. package/dist/runtime/ws-server.d.mts +2 -2
  210. package/dist/runtime/ws-server.mjs +30 -61
  211. package/dist/runtime/ws.d.mts +1 -1
  212. package/dist/runtime/ws.mjs +1 -1
  213. package/dist/{scan-C8dA7iM4.mjs → scan-C3uDzz6J.mjs} +12 -13
  214. package/dist/{secret-AKnNXNP5.mjs → secret-BAt2KMmO.mjs} +14 -14
  215. package/dist/{skills-BPQUGClu.mjs → skills-BgVMvQdy.mjs} +2 -2
  216. package/dist/{sse-CQNaDFFV.mjs → sse-CMvCgjNk.mjs} +1 -1
  217. package/dist/{subcommand-prompt-B6WS9Aoz.mjs → subcommand-prompt-BSlnD1fI.mjs} +2 -2
  218. package/dist/sveltekit.d.mts +0 -2
  219. package/dist/terminal-log-text-D9ACPOuG.mjs +32 -0
  220. package/dist/validate-BJr9LfXy.mjs +2 -0
  221. package/dist/{validate-ymhap6M_.mjs → validate-C9qJArv7.mjs} +9 -28
  222. package/dist/{defer-YsYDUoii.mjs → validation-error-Dg9Recn1.mjs} +11 -11
  223. package/dist/{wrangler-DhUerFkW.mjs → wrangler-D9KTuqnv.mjs} +89 -194
  224. package/dist/{ws-C79j4aED.d.mts → ws-CChrrAU-.d.mts} +1 -1
  225. package/dist/{yarn-pnp-BV4AzNul.mjs → yarn-pnp-CUX_iTPA.mjs} +19 -27
  226. package/{skills/void/docs → docs}/guide/ai.md +5 -3
  227. package/{skills/void/docs → docs}/guide/auth.md +37 -1
  228. package/{skills/void/docs → docs}/guide/database/postgresql.md +2 -2
  229. package/{skills/void/docs → docs}/guide/edge/revalidation.md +1 -1
  230. package/{skills/void/docs → docs}/guide/edge/rewrites.md +2 -4
  231. package/{skills/void/docs → docs}/guide/email/receiving.md +2 -2
  232. package/{skills/void/docs → docs}/guide/email/sending.md +0 -2
  233. package/{skills/void/docs → docs}/guide/env-vars.md +4 -0
  234. package/{skills/void/docs → docs}/guide/jobs.md +2 -2
  235. package/{skills/void/docs → docs}/guide/live.md +10 -5
  236. package/{skills/void/docs → docs}/guide/pages-routing/actions-and-forms.md +20 -8
  237. package/{skills/void/docs → docs}/guide/pages-routing/loaders.md +7 -3
  238. package/{skills/void/docs → docs}/guide/pages-routing/markdown.md +15 -23
  239. package/{skills/void/docs → docs}/guide/pages-routing/overview.md +6 -4
  240. package/{skills/void/docs → docs}/guide/platform/administration/access.md +2 -10
  241. package/{skills/void/docs → docs}/guide/platform/administration/operations.md +3 -12
  242. package/{skills/void/docs → docs}/guide/platform/administration/projects.md +1 -1
  243. package/{skills/void/docs → docs}/guide/platform/development/local.md +4 -2
  244. package/{skills/void/docs → docs}/guide/platform/development/runtime.md +1 -1
  245. package/{skills/void/docs → docs}/guide/platform/development/schema-ci.md +1 -1
  246. package/{skills/void/docs → docs}/guide/platform/installation/domains.md +3 -1
  247. package/{skills/void/docs → docs}/guide/platform/installation/first-deployment.md +3 -1
  248. package/{skills/void/docs → docs}/guide/platform/installation/maintenance.md +4 -0
  249. package/{skills/void/docs → docs}/guide/project-collaboration.md +6 -2
  250. package/{skills/void/docs → docs}/guide/queues.md +0 -2
  251. package/{skills/void/docs → docs}/guide/remote-dev.md +5 -5
  252. package/{skills/void/docs → docs}/guide/sandboxes.md +2 -2
  253. package/{skills/void/docs → docs}/guide/sse.md +0 -2
  254. package/{skills/void/docs → docs}/guide/storage.md +7 -2
  255. package/{skills/void/docs → docs}/guide/websockets.md +4 -0
  256. package/docs/integrations/agents.md +37 -0
  257. package/{skills/void/docs → docs}/integrations/frameworks/astro.md +3 -3
  258. package/{skills/void/docs → docs}/integrations/frameworks/nuxt.md +6 -2
  259. package/{skills/void/docs → docs}/integrations/hono.md +15 -7
  260. package/{skills/void/docs → docs}/integrations/nodejs-bun-deno.md +1 -0
  261. package/{skills/void/docs → docs}/reference/api/auth.md +1 -1
  262. package/{skills/void/docs → docs}/reference/api/handlers.md +4 -2
  263. package/{skills/void/docs → docs}/reference/api/pages.md +4 -0
  264. package/{skills/void/docs → docs}/reference/cli/auth.md +0 -5
  265. package/{skills/void/docs → docs}/reference/cli/database.md +3 -4
  266. package/{skills/void/docs → docs}/reference/cli/generate.md +1 -1
  267. package/{skills/void/docs → docs}/reference/cli/github.md +3 -12
  268. package/{skills/void/docs → docs}/reference/cli/platform-config.md +1 -1
  269. package/{skills/void/docs → docs}/reference/cli/platform-email.md +2 -3
  270. package/{skills/void/docs → docs}/reference/cli/platform-installation.md +1 -1
  271. package/{skills/void/docs → docs}/reference/cli/platform-operations.md +3 -0
  272. package/{skills/void/docs → docs}/reference/cli/platform-users.md +2 -2
  273. package/{skills/void/docs → docs}/reference/cli/project.md +5 -4
  274. package/{skills/void/docs → docs}/reference/cli/secrets.md +3 -3
  275. package/{skills/void/docs → docs}/reference/cli/setup.md +9 -11
  276. package/{skills/void/docs → docs}/reference/cli.md +1 -1
  277. package/{skills/void/docs → docs}/reference/config.md +13 -13
  278. package/{skills/void/docs → docs}/reference/resource-inference.md +1 -16
  279. package/package.json +34 -30
  280. package/schema.json +1 -1
  281. package/skills/migrate-vite-cloudflare-to-void/SKILL.md +4 -1
  282. package/skills/void/SKILL.md +6 -3
  283. package/dist/cf-build-output-ChY6-XWP.mjs +0 -2
  284. package/dist/client-BxVixJBI.mjs +0 -2
  285. package/dist/config-0acf1oys.mjs +0 -2
  286. package/dist/config-D8MOgiQV.mjs +0 -32
  287. package/dist/deploy-qmiLE1G1.mjs +0 -2
  288. package/dist/discover-AMCBXivQ.mjs +0 -2
  289. package/dist/fetch-error-Sp1R4mZv.d.mts +0 -20
  290. package/dist/gen-qCBwH3fZ.mjs +0 -2
  291. package/dist/help-Dw5f9Xrg.mjs +0 -2
  292. package/dist/login-D7meQg_3.mjs +0 -2
  293. package/dist/migrate-CEu2X5DB.mjs +0 -2
  294. package/dist/operator-cmd-DRPvhpjM.mjs +0 -2
  295. package/dist/plan-COtUvdMA.mjs +0 -2
  296. package/dist/platform-args-Dcy_5b_Y.mjs +0 -2
  297. package/dist/prepare-BBknoZI1.mjs +0 -2
  298. package/dist/resolve-project-DtbidV4y.mjs +0 -2
  299. package/dist/route-url-CG7U-cRN.mjs +0 -15
  300. package/dist/runner-voIltZrY.mjs +0 -2
  301. package/dist/validate-pna7R3Pv.mjs +0 -2
  302. package/skills/void/docs/integrations/agents.md +0 -26
  303. package/dist/{runner-pg-D4OPlil-.mjs → runner-pg-DV8p_zjA.mjs} +4 -4
  304. package/{skills/void/docs → docs}/guide/app-types.md +0 -0
  305. package/{skills/void/docs → docs}/guide/database/d1.md +2 -2
  306. package/{skills/void/docs → docs}/guide/database/mysql.md +0 -0
  307. package/{skills/void/docs → docs}/guide/database.md +8 -8
  308. package/{skills/void/docs → docs}/guide/deployment.md +0 -0
  309. package/{skills/void/docs → docs}/guide/durable-state.md +0 -0
  310. package/{skills/void/docs → docs}/guide/edge/headers.md +0 -0
  311. package/{skills/void/docs → docs}/guide/edge/prerendering.md +0 -0
  312. package/{skills/void/docs → docs}/guide/edge/redirects.md +0 -0
  313. package/{skills/void/docs → docs}/guide/edge/static-assets.md +0 -0
  314. package/{skills/void/docs → docs}/guide/email/domains.md +0 -0
  315. package/{skills/void/docs → docs}/guide/email.md +0 -0
  316. package/{skills/void/docs → docs}/guide/index.md +0 -0
  317. package/{skills/void/docs → docs}/guide/kv.md +0 -0
  318. package/{skills/void/docs → docs}/guide/pages-routing/head.md +0 -0
  319. package/{skills/void/docs → docs}/guide/pages-routing/islands.md +2 -2
  320. package/{skills/void/docs → docs}/guide/pages-routing/layouts.md +0 -0
  321. package/{skills/void/docs → docs}/guide/pages-routing/view-transitions.md +0 -0
  322. package/{skills/void/docs → docs}/guide/platform/administration/email.md +0 -0
  323. package/{skills/void/docs → docs}/guide/platform/administration/plans.md +0 -0
  324. package/{skills/void/docs → docs}/guide/platform/administration/zero-trust.md +0 -0
  325. package/{skills/void/docs → docs}/guide/platform/installation/ci.md +0 -0
  326. package/{skills/void/docs → docs}/guide/platform/installation/credentials.md +0 -0
  327. package/{skills/void/docs → docs}/guide/platform/installation/prerequisites.md +0 -0
  328. package/{skills/void/docs → docs}/guide/platform/installation/setup.md +0 -0
  329. package/{skills/void/docs → docs}/guide/platform/installation/uninstall.md +0 -0
  330. package/{skills/void/docs → docs}/guide/platform-administration.md +0 -0
  331. package/{skills/void/docs → docs}/guide/platform-development.md +0 -0
  332. package/{skills/void/docs → docs}/guide/quickstart.md +0 -0
  333. package/{skills/void/docs → docs}/guide/self-hosted-platform.md +0 -0
  334. package/{skills/void/docs → docs}/guide/server-routing.md +3 -3
  335. package/{skills/void/docs → docs}/guide/ssg.md +0 -0
  336. package/{skills/void/docs → docs}/guide/ssr.md +0 -0
  337. package/{skills/void/docs → docs}/guide/type-safety.md +0 -0
  338. package/{skills/void/docs → docs}/guide/typed-fetch.md +0 -0
  339. package/{skills/void/docs → docs}/index.md +0 -0
  340. package/{skills/void/docs → docs}/integrations/cloudflare.md +0 -0
  341. package/{skills/void/docs → docs}/integrations/frameworks/analog.md +3 -3
  342. package/{skills/void/docs → docs}/integrations/frameworks/overview.md +0 -0
  343. package/{skills/void/docs → docs}/integrations/frameworks/react-router.md +3 -3
  344. package/{skills/void/docs → docs}/integrations/frameworks/sveltekit.md +1 -1
  345. package/{skills/void/docs → docs}/integrations/frameworks/tanstack-start.md +2 -2
  346. package/{skills/void/docs → docs}/reference/api/client.md +0 -0
  347. package/{skills/void/docs → docs}/reference/api/database.md +2 -2
  348. /package/{skills/void/docs → docs}/reference/api/durable.md +0 -0
  349. /package/{skills/void/docs → docs}/reference/api/env.md +0 -0
  350. /package/{skills/void/docs → docs}/reference/api/plugin.md +0 -0
  351. /package/{skills/void/docs → docs}/reference/api/resources.md +0 -0
  352. /package/{skills/void/docs → docs}/reference/api/rewrites.md +0 -0
  353. /package/{skills/void/docs → docs}/reference/api/types.md +0 -0
  354. /package/{skills/void/docs → docs}/reference/api.md +0 -0
  355. /package/{skills/void/docs → docs}/reference/cli/deploy.md +0 -0
  356. /package/{skills/void/docs → docs}/reference/cli/domains.md +0 -0
  357. /package/{skills/void/docs → docs}/reference/cli/email.md +0 -0
  358. /package/{skills/void/docs → docs}/reference/cli/platform-zero-trust.md +0 -0
  359. /package/{skills/void/docs → docs}/reference/cli/platform.md +0 -0
  360. /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-C8dA7iM4.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-C8dA7iM4.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-BeK3weD4.mjs";
2
- import { a as handlePageMutation, i as handlePageGet, n as PageRenderResult, o as safeJsonStringify, r as flattenValidationErrors, t as PageObject } from "../protocol-BX8t2jiw.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 };
@@ -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);
@@ -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-DdY54Bgb.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
@@ -0,0 +1,2 @@
1
+ import { t as parsePlatformArgs } from "./platform-args-BoZkWQnJ.mjs";
2
+ export { parsePlatformArgs };
@@ -1,21 +1,23 @@
1
- import { u as openBrowser } from "./auth-D52yG7hl.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-BFqpp6z0.mjs";
4
- import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-2dsGlTT5.mjs";
5
- import { i as humanLines } from "./operator-cmd-CUGHXrQf.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";
6
8
  import { parsePlatformAdmissionPolicy, parsePlatformLoginConfiguration } from "@void/platform";
7
9
  import { stripVTControlCharacters } from "node:util";
8
10
  import { execFile } from "node:child_process";
9
11
  import { setTimeout } from "node:timers/promises";
10
12
  import { readFile } from "node:fs/promises";
11
13
  //#region src/cli/platform-auth-config.ts
12
- function value(input) {
13
- if (isCancel(input) || typeof input === "symbol") throw new Error("platform: Cancelled.");
14
- return input;
15
- }
16
14
  function print(result, json) {
17
15
  console.log(json ? JSON.stringify(result, null, 2) : humanLines(result).join("\n"));
18
16
  }
17
+ function printApplied(result, args) {
18
+ print(result, args.json);
19
+ if (!args.json && !args.plan) printSuccess("Platform authentication configuration updated.");
20
+ }
19
21
  async function apply(client, path, body, args) {
20
22
  const preview = await client.request(path, {
21
23
  method: "POST",
@@ -28,7 +30,7 @@ async function apply(client, path, body, args) {
28
30
  if (!args.yes) {
29
31
  if (!process.stdin.isTTY) throw new Error("platform: Configuration changes require --yes or --plan in non-interactive mode.");
30
32
  console.error(JSON.stringify(preview, null, 2));
31
- if (!value(await confirm({
33
+ if (!platformPromptAnswer(await confirm({
32
34
  message: `Apply this change to ${client.origin}?`,
33
35
  initialValue: false
34
36
  }))) throw new Error("platform: Cancelled.");
@@ -92,11 +94,11 @@ async function configurationInput(args, existing) {
92
94
  input.id = id || input.id || (kind === "github" || kind === "google" ? kind : kind === "oidc" ? "company" : "access");
93
95
  const interactive = !!process.stdin.isTTY && !args.file;
94
96
  if (interactive) {
95
- 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({
96
98
  message: "Connection ID:",
97
99
  initialValue: String(input.id)
98
100
  }));
99
- input.label = value(await text({
101
+ input.label = platformPromptAnswer(await text({
100
102
  message: "Login button label:",
101
103
  initialValue: String(input.label ?? {
102
104
  github: "GitHub",
@@ -105,23 +107,23 @@ async function configurationInput(args, existing) {
105
107
  "cloudflare-access": "Cloudflare Access"
106
108
  }[kind])
107
109
  }));
108
- if (kind === "oidc" || kind === "cloudflare-access") input.issuer = value(await text({
110
+ if (kind === "oidc" || kind === "cloudflare-access") input.issuer = platformPromptAnswer(await text({
109
111
  message: "OIDC issuer URL:",
110
112
  initialValue: String(input.issuer ?? "")
111
113
  }));
112
- input.clientId = value(await text({
114
+ input.clientId = platformPromptAnswer(await text({
113
115
  message: "Client ID:",
114
116
  initialValue: String(input.clientId ?? "")
115
117
  }));
116
118
  if (kind === "google") {
117
- const domains = value(await text({
119
+ const domains = platformPromptAnswer(await text({
118
120
  message: "Allowed Workspace domains (comma-separated; blank allows any Google account):",
119
121
  initialValue: Array.isArray(input.allowedDomains) ? input.allowedDomains.join(", ") : ""
120
122
  }));
121
123
  input.allowedDomains = domains.split(",").map((domain) => domain.trim()).filter(Boolean);
122
124
  }
123
125
  if (kind === "oidc" || kind === "cloudflare-access") {
124
- const groups = value(await text({
126
+ const groups = platformPromptAnswer(await text({
125
127
  message: "Allowed groups (comma-separated; blank uses the provider’s access policy):",
126
128
  initialValue: Array.isArray(input.requiredGroups) ? input.requiredGroups.join(", ") : ""
127
129
  }));
@@ -132,7 +134,7 @@ async function configurationInput(args, existing) {
132
134
  if (existing && configuration.id !== existing.id) throw new Error("platform: Use add to create a connection with a new ID.");
133
135
  let secret = args.clientSecretEnv ? process.env[args.clientSecretEnv] : void 0;
134
136
  if (args.clientSecretEnv && !secret) throw new Error(`platform: ${args.clientSecretEnv} must contain the client secret.`);
135
- 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;
136
138
  if (!existing && !secret) throw new Error("platform: Provide --client-secret-env or enter a client secret interactively.");
137
139
  return {
138
140
  configuration,
@@ -141,11 +143,11 @@ async function configurationInput(args, existing) {
141
143
  }
142
144
  async function runPlatformAuthConfig(args) {
143
145
  if (args.action === "recover") {
144
- const { runPlatformAuthRecovery } = await import("./platform-auth-recovery-WfTZ8K6o.mjs");
146
+ const { runPlatformAuthRecovery } = await import("./platform-auth-recovery-tw9lgtgE.mjs");
145
147
  return runPlatformAuthRecovery(args);
146
148
  }
147
149
  if (args.action === "protection") {
148
- const { runPlatformProtectionConfig } = await import("./platform-auth-protection-DcbL_LW_.mjs");
150
+ const { runPlatformProtectionConfig } = await import("./platform-auth-protection-zxDr0hWW.mjs");
149
151
  return runPlatformProtectionConfig(args);
150
152
  }
151
153
  const origin = resolveOperatorOrigin(args.connection);
@@ -157,11 +159,11 @@ async function runPlatformAuthConfig(args) {
157
159
  return;
158
160
  }
159
161
  if (!listing.initialized) {
160
- print(await apply(client, "/config/auth/initialize", {}, args), args.json);
162
+ printApplied(await apply(client, "/config/auth/initialize", {}, args), args);
161
163
  console.log("Run void platform auth login, then return to void platform config auth.");
162
164
  return;
163
165
  }
164
- const chosen = value(await select({
166
+ const chosen = platformPromptAnswer(await select({
165
167
  message: "Platform authentication:",
166
168
  options: [
167
169
  ...listing.methods.map((method) => ({
@@ -183,7 +185,7 @@ async function runPlatformAuthConfig(args) {
183
185
  ]
184
186
  }));
185
187
  if (chosen === ":protection") {
186
- const target = value(await select({
188
+ const target = platformPromptAnswer(await select({
187
189
  message: "Platform protection:",
188
190
  options: [
189
191
  {
@@ -211,7 +213,7 @@ async function runPlatformAuthConfig(args) {
211
213
  action: "admission"
212
214
  });
213
215
  if (chosen === ":add") {
214
- const kind = value(await select({
216
+ const kind = platformPromptAnswer(await select({
215
217
  message: "Login method:",
216
218
  options: [
217
219
  {
@@ -239,7 +241,7 @@ async function runPlatformAuthConfig(args) {
239
241
  });
240
242
  }
241
243
  const method = listing.methods.find((method) => method.id === chosen);
242
- const action = value(await select({
244
+ const action = platformPromptAnswer(await select({
243
245
  message: stripVTControlCharacters(method.label),
244
246
  options: [
245
247
  {
@@ -271,7 +273,7 @@ async function runPlatformAuthConfig(args) {
271
273
  return;
272
274
  }
273
275
  if (args.action === "initialize") {
274
- print(await apply(client, "/config/auth/initialize", {}, args), args.json);
276
+ printApplied(await apply(client, "/config/auth/initialize", {}, args), args);
275
277
  return;
276
278
  }
277
279
  if (!listing.initialized) throw new Error("platform: Run void platform config auth initialize, then sign in again.");
@@ -280,7 +282,7 @@ async function runPlatformAuthConfig(args) {
280
282
  if (args.file) admission = JSON.parse(await readFile(args.file, "utf8"));
281
283
  else {
282
284
  if (!process.stdin.isTTY || args.json) throw new Error("platform: Supply --file with the signup policy in non-interactive mode.");
283
- const mode = value(await select({
285
+ const mode = platformPromptAnswer(await select({
284
286
  message: "Who can create an account?",
285
287
  initialValue: listing.admission?.mode ?? "restricted",
286
288
  options: [
@@ -299,7 +301,7 @@ async function runPlatformAuthConfig(args) {
299
301
  ]
300
302
  }));
301
303
  if (mode === "company") {
302
- const access = !!listing.protection && value(await confirm({
304
+ const access = !!listing.protection && platformPromptAnswer(await confirm({
303
305
  message: "Allow everyone approved by Cloudflare Access protection?",
304
306
  initialValue: true
305
307
  }));
@@ -308,7 +310,7 @@ async function runPlatformAuthConfig(args) {
308
310
  admission = {
309
311
  mode,
310
312
  access,
311
- connections: eligible.length ? value(await multiselect({
313
+ connections: eligible.length ? platformPromptAnswer(await multiselect({
312
314
  message: "Login methods whose company policies qualify new users:",
313
315
  required: !access,
314
316
  options: eligible.map((method) => ({
@@ -319,10 +321,10 @@ async function runPlatformAuthConfig(args) {
319
321
  };
320
322
  } else admission = { mode };
321
323
  }
322
- print(await apply(client, "/config/auth/admission", {
324
+ printApplied(await apply(client, "/config/auth/admission", {
323
325
  revision: listing.revision,
324
326
  admission: parsePlatformAdmissionPolicy(admission)
325
- }, args), args.json);
327
+ }, args), args);
326
328
  return;
327
329
  }
328
330
  const method = listing.methods.find((method) => method.id === args.target);
@@ -332,16 +334,18 @@ async function runPlatformAuthConfig(args) {
332
334
  return;
333
335
  }
334
336
  if (args.action === "test") {
335
- print(await testMethod(client, args.target, args), args.json);
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.");
336
340
  return;
337
341
  }
338
342
  if (args.action === "add" || args.action === "configure") {
339
343
  console.error(`Register this callback URL with the provider: ${listing.callbackUrl ?? `${origin}/auth/callback`}`);
340
344
  const input = await configurationInput(args, args.action === "configure" ? method : void 0);
341
- 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`, {
342
346
  ...input,
343
347
  revision: args.action === "add" ? null : method.revision
344
- }, args), args.json);
348
+ }, args), args);
345
349
  if (!args.plan && !args.json) console.log(`Test and enable it with void platform config auth enable ${input.configuration.id}.`);
346
350
  return;
347
351
  }
@@ -352,7 +356,7 @@ async function runPlatformAuthConfig(args) {
352
356
  print(tested, args.json);
353
357
  if (tested.complete !== true || typeof tested.id !== "string") throw new Error("platform: Complete the browser test before enabling or linking this login.");
354
358
  testId = tested.id;
355
- if (args.action === "enable" && value(await confirm({
359
+ if (args.action === "enable" && platformPromptAnswer(await confirm({
356
360
  message: "Link this verified identity to your administrator account?",
357
361
  initialValue: true
358
362
  }))) await apply(client, `/config/auth/connections/${encodeURIComponent(args.target)}/link`, {
@@ -360,10 +364,10 @@ async function runPlatformAuthConfig(args) {
360
364
  testId
361
365
  }, args);
362
366
  }
363
- 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}`, {
364
368
  revision: method.revision,
365
369
  ...testId ? { testId } : {}
366
- }, args), args.json);
370
+ }, args), args);
367
371
  }
368
372
  //#endregion
369
373
  export { runPlatformAuthConfig };
@@ -1,11 +1,12 @@
1
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-YTlqvAsk.mjs";
4
- import { A as confirm, tt as isCancel } from "./prompts-6OSVA7DJ.mjs";
5
- import { n as OperatorClient } from "./operator-client-BFqpp6z0.mjs";
6
- import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-2dsGlTT5.mjs";
7
- 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-Cfi0o6xM.mjs";
8
- import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-BrF9STZp.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
1
  import { m as readInstallationRecoverySecrets, t as acquirePlatformLifecycleLock, v as resolveInstallationManifest } from "./platform-registry-P387v42A.mjs";
2
- import { u as openBrowser } from "./auth-D52yG7hl.mjs";
3
- import { A as confirm, tt as isCancel } from "./prompts-6OSVA7DJ.mjs";
4
- import { a as resolveOperatorOrigin } from "./operator-auth-2dsGlTT5.mjs";
5
- import { K as PlatformCloudflareClient, V as resolvePlatformCloudflareCredential, c as acquirePlatformDatabaseLifecycleLockConnection, l as platformDatabaseClientUrl, n as resolvePlatformInstallDatabaseUrl } from "./platform-lifecycle-Cfi0o6xM.mjs";
6
- import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-BrF9STZp.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
  }
@@ -1,9 +1,9 @@
1
1
  import { b as selectPlatformConnection, c as normalizePlatformApiUrl, i as getActivePlatformConnection, l as platformConnectionSlug, o as listInstallationManifests, s as listPlatformConnections, y as savePlatformConnection } from "./platform-registry-P387v42A.mjs";
2
2
  import { t as cfAccessHeaders } from "./cf-access-TWNzXltp.mjs";
3
- import { i as isCloudflareAccessChallenge, n as ensurePlatformAccessToken, t as ensureCloudflaredToken } from "./cf-access-YTlqvAsk.mjs";
4
- import { K as select, L as log, X as text, tt as isCancel } from "./prompts-6OSVA7DJ.mjs";
3
+ import { i as isCloudflareAccessChallenge, n as ensurePlatformAccessToken, t as ensureCloudflaredToken } from "./cf-access-ngGqZpHZ.mjs";
4
+ import { K as select, L as log, X as text, tt as isCancel } from "./dist-D3m88sjf.mjs";
5
+ import { d as printSuccess, l as import_picocolors } from "./output-C50ag2r3.mjs";
5
6
  import { n as readPlatformDiscoveryResponse, t as PlatformDisabledError } from "./platform-discovery-BC0HCKYt.mjs";
6
- import { c as import_picocolors } from "./output-BvdaehtE.mjs";
7
7
  //#region src/cli/platform-cmd.ts
8
8
  function normalizePlatformInputUrl(input) {
9
9
  const value = input.trim();
@@ -95,19 +95,19 @@ async function runPlatformCommand(_root, args) {
95
95
  }]
96
96
  });
97
97
  if (isCancel(group)) return;
98
- const { parsePlatformArgs } = await import("./platform-args-Dcy_5b_Y.mjs");
98
+ const { parsePlatformArgs } = await import("./platform-args-DYgITk0D.mjs");
99
99
  return runPlatformCommand(_root, parsePlatformArgs(["config", group]));
100
100
  }
101
- const { runPlatformPlansConfig } = await import("./platform-plans-config-DU-8nC2Y.mjs");
101
+ const { runPlatformPlansConfig } = await import("./platform-plans-config-CjiFv5J4.mjs");
102
102
  await runPlatformPlansConfig(args);
103
103
  return;
104
104
  }
105
- const { runPlatformAuthConfig } = await import("./platform-auth-config-Bosx7U1h.mjs");
105
+ const { runPlatformAuthConfig } = await import("./platform-auth-config-n603OANg.mjs");
106
106
  await runPlatformAuthConfig(args);
107
107
  return;
108
108
  }
109
109
  if (args.subcommand === "operator") {
110
- const { runOperatorCommand } = await import("./operator-cmd-DRPvhpjM.mjs");
110
+ const { runOperatorCommand } = await import("./operator-cmd-Cwn50lOV.mjs");
111
111
  await runOperatorCommand(args);
112
112
  return;
113
113
  }
@@ -138,7 +138,7 @@ async function runPlatformCommand(_root, args) {
138
138
  }
139
139
  if (args.subcommand === "use") {
140
140
  const connection = await resolveConnection(args.selector);
141
- log.success(`Using ${import_picocolors.default.bold(connection.displayName)} (${connection.apiUrl}).`);
141
+ printSuccess(`Using ${import_picocolors.default.bold(connection.displayName)} (${connection.apiUrl}).`);
142
142
  return;
143
143
  }
144
144
  if (args.subcommand === "status") {
@@ -164,7 +164,7 @@ async function runPlatformCommand(_root, args) {
164
164
  if (error instanceof PlatformDisabledError) throw new Error(`platform: Traffic at ${apiUrl} is paused for an upgrade or repair. Check again when it finishes.`, { cause: error });
165
165
  throw error;
166
166
  }
167
- log.success(`${discovery.displayName} is reachable.`);
167
+ log.info(`${discovery.displayName} is reachable.`);
168
168
  console.log(`API: ${discovery.apiUrl}`);
169
169
  console.log(`Proxy: ${discovery.proxyUrl}`);
170
170
  if (discovery.applicationRouting?.workersDev && !discovery.applicationRouting.zoneName) {
@@ -175,7 +175,7 @@ async function runPlatformCommand(_root, args) {
175
175
  console.log(`Capabilities: ${Object.entries(discovery.capabilities).filter(([, enabled]) => enabled).map(([name]) => name).join(", ")}`);
176
176
  return;
177
177
  }
178
- const { runPlatformLifecycleCommand } = await import("./platform-lifecycle--5gWmDoI.mjs");
178
+ const { runPlatformLifecycleCommand } = await import("./platform-lifecycle-vFqtNPPa.mjs");
179
179
  await runPlatformLifecycleCommand(args);
180
180
  }
181
181
  function showSavedInstallationStatus(manifest) {
@@ -1,2 +1,2 @@
1
- import { r as runPlatformCommand, t as discoverPlatform } from "./platform-cmd-DbKtQb_4.mjs";
1
+ import { r as runPlatformCommand, t as discoverPlatform } from "./platform-cmd-B8-bCb7t.mjs";
2
2
  export { discoverPlatform, runPlatformCommand };
@@ -1,9 +1,9 @@
1
1
  import { m as readInstallationRecoverySecrets, t as acquirePlatformLifecycleLock, x as writeInstallationManifest, y as savePlatformConnection } from "./platform-registry-P387v42A.mjs";
2
2
  import { t as cfAccessHeaders } from "./cf-access-TWNzXltp.mjs";
3
- import { A as confirm, L as log, X as text, tt as isCancel } from "./prompts-6OSVA7DJ.mjs";
4
- import { l as note } from "./output-BvdaehtE.mjs";
5
- import { B as assertPlatformOperatorCredentialCanApplyPlan, K as PlatformCloudflareClient, M as recordPlatformWorkerTraffic, O as createPlatformHealthProbeToken, P as createPlatformInstallPlan, V as resolvePlatformCloudflareCredential, j as recordResource, n as resolvePlatformInstallDatabaseUrl, s as acquirePlatformDatabaseLifecycleLock, t as assertNoninteractivePlatformMutationAcknowledged } from "./platform-lifecycle-Cfi0o6xM.mjs";
6
- import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest, o as resolveInstalledPlatformManifest } from "./platform-management-BrF9STZp.mjs";
3
+ import { A as confirm, X as text, tt as isCancel } from "./dist-D3m88sjf.mjs";
4
+ import { d as printSuccess, u as note } from "./output-C50ag2r3.mjs";
5
+ import { B as assertPlatformOperatorCredentialCanApplyPlan, K as PlatformCloudflareClient, M as recordPlatformWorkerTraffic, O as createPlatformHealthProbeToken, P as createPlatformInstallPlan, V as resolvePlatformCloudflareCredential, j as recordResource, n as resolvePlatformInstallDatabaseUrl, s as acquirePlatformDatabaseLifecycleLock, t as assertNoninteractivePlatformMutationAcknowledged } from "./platform-lifecycle-D_QEY32D.mjs";
6
+ import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest, o as resolveInstalledPlatformManifest } from "./platform-management-BdYblvvE.mjs";
7
7
  import { PLATFORM_HEALTH_HOSTNAME_LABEL, PLATFORM_REMOTE_INSTALLATION_MANIFEST_KEY, createApplicationRoutes, createPlatformDeploymentManifest, normalizeApplicationDomain } from "@void/platform";
8
8
  //#region src/cli/platform-domain.ts
9
9
  function platformDomainTarget(manifest, domain, zone, dedicatedZone) {
@@ -232,7 +232,7 @@ async function runPlatformDomainCommand(args) {
232
232
  kind: "installed",
233
233
  proxyUrl: manifest.endpoints.proxyUrl
234
234
  });
235
- log.success(`Apps now use *.${domain}. Existing workers.dev URLs remain available; the API connection is unchanged.`);
235
+ printSuccess(`Apps now use *.${domain}. Existing workers.dev URLs remain available; the API connection is unchanged.`);
236
236
  };
237
237
  if (args.plan) {
238
238
  await execute(selected);