void 0.26.1 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. package/README.md +3 -1
  2. package/dist/{account-cmd-CfUXh_nU.mjs → account-cmd-Ci00cncT.mjs} +5 -5
  3. package/dist/{agents-B_pX_HmQ.mjs → agents-CuNtT0D_.mjs} +5 -2
  4. package/dist/{application-analysis-DKy02UY0.mjs → application-analysis-D72ZQfMZ.mjs} +118 -135
  5. package/dist/{application-routing-DQyUh_5S.mjs → application-routing-Dy589Vgn.mjs} +1 -2
  6. package/dist/atomic-write-Dq6R0BPN.mjs +18 -0
  7. package/dist/{auth-B5_tZLxT.mjs → auth-B6iOCjKI.mjs} +23 -56
  8. package/dist/{auth-link-D5RmKnzh.mjs → auth-link-DWr6Afao.mjs} +10 -10
  9. package/dist/{auth-migrations-BwHgeEsD.mjs → auth-migrations-Cgs0k6lS.mjs} +28 -5
  10. package/dist/{auth-router-Bap-pvbn.mjs → auth-router-DP14wVkZ.mjs} +4 -4
  11. package/dist/auth-wn6F8dB8.mjs +2 -0
  12. package/dist/base64-DVrOndmI.mjs +16 -0
  13. package/dist/{better-auth-shared-CPvWD3nG.d.mts → better-auth-shared-B74NJIus.d.mts} +8 -13
  14. package/dist/{better-auth-shared-DPpj8zxc.mjs → better-auth-shared-CMXlZG7W.mjs} +56 -68
  15. package/dist/{build-cmd-B58c8iS8.mjs → build-cmd-Cr3FJxv0.mjs} +5 -5
  16. package/dist/{cache-Bo52trKF.mjs → cache-D0Tt28cn.mjs} +5 -5
  17. package/dist/{cancel-deploy-BZNz3Q26.mjs → cancel-deploy-CJKvk7AN.mjs} +4 -4
  18. package/dist/{cf-access-TWNzXltp.mjs → cf-access-BM9G0lhO.mjs} +4 -3
  19. package/dist/{cf-access-ngGqZpHZ.mjs → cf-access-CWP4avfP.mjs} +3 -7
  20. package/dist/cf-build-output-2u583yJK.mjs +2 -0
  21. package/dist/{cf-build-output-DjvB_872.mjs → cf-build-output-Bc8i3dzE.mjs} +2 -2
  22. package/dist/cf-user-agent-ChjQp2MU.mjs +33 -0
  23. package/dist/cli/cli.mjs +198 -311
  24. package/dist/cli/cloudflare-operation-process.mjs +46 -14
  25. package/dist/cli/env-schema-probe.d.mts +5 -43
  26. package/dist/cli/env-schema-probe.mjs +14 -80
  27. package/dist/client-C1BjRn3g.mjs +2 -0
  28. package/dist/{client-C2Prx_Bi.mjs → client-DM9Kcf4e.mjs} +161 -415
  29. package/dist/{cloudflare-auth-CuxfF6OA.mjs → cloudflare-auth-CqFBDo52.mjs} +12 -39
  30. package/dist/{cloudflare-cmd-lHqNlJGW.mjs → cloudflare-cmd-CTrn-lXJ.mjs} +6 -5
  31. package/dist/{cloudflare-config-BmhBv3HV.mjs → cloudflare-config-DV60XFFK.mjs} +16 -28
  32. package/dist/{cloudflare-connect-2G3rL2rP.mjs → cloudflare-connect-BosmCNlq.mjs} +3 -3
  33. package/dist/{cloudflare-operations-CwI1bChl.mjs → cloudflare-operations-BKdSfNBN.mjs} +26 -34
  34. package/dist/{cloudflare-operations-BlYLlowZ.mjs → cloudflare-operations-Ds-lX3Ts.mjs} +1 -1
  35. package/dist/{cloudflare-process-2-TfIEzB.mjs → cloudflare-process-CeDWJRhj.mjs} +12 -7
  36. package/dist/collect-NUlJMpLY.mjs +2 -0
  37. package/dist/{collect-DiTn9yr6.mjs → collect-xjffdCdk.mjs} +1 -1
  38. package/dist/{config-CSa15FvD.d.mts → config-7qoq2p9v.d.mts} +2 -2
  39. package/dist/{config-CLYAosnQ.mjs → config-BEm9vRvS.mjs} +11 -5
  40. package/dist/{config-DiowPT80.mjs → config-Bx_1SpnO.mjs} +87 -177
  41. package/dist/config-CNnrSMYm.mjs +2 -0
  42. package/dist/{config-DPByhVck.mjs → config-D0GY5ItR.mjs} +1 -1
  43. package/dist/config-entry.d.mts +1 -1
  44. package/dist/{connect-X0MUA1gk.mjs → connect-nukQSoEO.mjs} +8 -8
  45. package/dist/{create-project-DxiyW6iX.mjs → create-project-D4APeBwX.mjs} +7 -7
  46. package/dist/{create-project-iwkbqiBU.mjs → create-project-DL7YXpjj.mjs} +1 -1
  47. package/dist/{db-XnVMHzoV.mjs → db-27RztQLy.mjs} +173 -263
  48. package/dist/{delete-esYlMiSJ.mjs → delete-BbsZFZIw.mjs} +5 -5
  49. package/dist/deploy-B06EQq4t.mjs +6009 -0
  50. package/dist/deploy-Db2ALnQP.mjs +3 -0
  51. package/dist/deploy-managed-static-CGswbcay.mjs +2277 -0
  52. package/dist/deploy-transport-BiicfoQW.mjs +180 -0
  53. package/dist/deploy.d.mts +10 -0
  54. package/dist/deploy.mjs +82 -0
  55. package/dist/dev-inbox-Rd6j_8vM.mjs +217 -0
  56. package/dist/discover-CTUiSsfG.mjs +2 -0
  57. package/dist/{discover-CkCYv9T_.mjs → discover-D2PGT63u.mjs} +2 -2
  58. package/dist/{dist-BVqXeR_h.mjs → dist-ipQi0Q8y.mjs} +2 -3
  59. package/dist/{domain-CbbBWhWE.mjs → domain-Bfq9n03H.mjs} +7 -22
  60. package/dist/{dotenv-BfU6eqFt.mjs → dotenv-CNazY3-w.mjs} +4 -16
  61. package/dist/{email-d_Aux1vM.mjs → email-BcjSyAL0.mjs} +4 -20
  62. package/dist/{email-CpuT42g7.mjs → email-DIwaQU4P.mjs} +99 -191
  63. package/dist/email-cloudflare-CH053RxK.mjs +1096 -0
  64. package/dist/email-protocol-D9nTvhCp.mjs +82 -0
  65. package/dist/{entry-CMAkqBmU.mjs → entry-ehmBvs5w.mjs} +2 -2
  66. package/dist/{env-BxocywBB.mjs → env-BJjULvL0.mjs} +2 -2
  67. package/dist/{env-DMA3cXZt.mjs → env-BhdWMrNy.mjs} +2 -13
  68. package/dist/{env-w9jOyGZn.mjs → env-C6ipBLp3.mjs} +8 -8
  69. package/dist/{env-public-DR7ZM6d-.d.mts → env-public-CCdykygU.d.mts} +6 -23
  70. package/dist/{env-raw-jZpP5n47.mjs → env-raw-Cklzcde3.mjs} +3 -20
  71. package/dist/{env-types-CwXgeMgL.mjs → env-types-DS2_y4X8.mjs} +2 -2
  72. package/dist/{env-validation-CrVNjsPm.mjs → env-validation-CTn-HhG1.mjs} +1 -1
  73. package/dist/env-validation-cE0zcmzO.mjs +486 -0
  74. package/dist/{gen-DtkQhvQg.mjs → gen-CnN1Xidx.mjs} +131 -253
  75. package/dist/gen-F8pSZnhc.mjs +2 -0
  76. package/dist/{generate-GDbL7sUr.mjs → generate-Dat0UTry.mjs} +38 -4
  77. package/dist/generate-Rii9klHB.mjs +2 -0
  78. package/dist/generated-wrangler-config-DeWj5F9Y.mjs +18 -0
  79. package/dist/{github-cmd-D_FsOFxq.mjs → github-cmd-BdkU4Nhe.mjs} +27 -71
  80. package/dist/{handler-BHAn2fZJ.mjs → handler-BZ1t7-Rv.mjs} +2 -2
  81. package/dist/{handler-CNAwjRcW.d.mts → handler-_PqY82xe.d.mts} +1 -1
  82. package/dist/{headers-DlfR78Nu.mjs → headers-Di1FsD3e.mjs} +26 -81
  83. package/dist/{help-CVFBTmBx.mjs → help-Bug7pyK_.mjs} +18 -10
  84. package/dist/help-s9q7LTcu.mjs +2 -0
  85. package/dist/{inbound-PfQDLXc5.mjs → inbound-DmkTQeWp.mjs} +71 -222
  86. package/dist/{inbound-CH5Mksyy.d.mts → inbound-brj2-TM5.d.mts} +19 -58
  87. package/dist/index.d.mts +2 -18
  88. package/dist/index.mjs +200 -496
  89. package/dist/{info-PYWwkWyt.mjs → info-CujPwtMe.mjs} +5 -5
  90. package/dist/{init-Bw-fRKGp.mjs → init-ZWOJvc-Z.mjs} +179 -388
  91. package/dist/isr-config-DPjXM8J2.mjs +194 -0
  92. package/dist/{link-DlPG8iX3.mjs → link-UEc7bnF4.mjs} +8 -8
  93. package/dist/{list-2GN7_ueV.mjs → list-CuWeOnzk.mjs} +6 -17
  94. package/dist/{live-CgQuTpqD.mjs → live-BxLX-JqJ.mjs} +19 -17
  95. package/dist/{live-Du8jXwOW.d.mts → live-DJONVlQK.d.mts} +1 -1
  96. package/dist/load-user-env-DD5qveNU.mjs +49 -0
  97. package/dist/{local-d1-ga5O_idV.mjs → local-d1-BM3p74mm.mjs} +6 -6
  98. package/dist/{login-D-Q4xw3Q.mjs → login-CZ2Cqa-D.mjs} +11 -11
  99. package/dist/login-DhK7o1oJ.mjs +2 -0
  100. package/dist/{logs-rd8J-OFh.mjs → logs-TihRcLTk.mjs} +5 -5
  101. package/dist/migrate-BgT-hmu8.mjs +2 -0
  102. package/dist/{migrate-NLsjBbuM.mjs → migrate-uFwojusJ.mjs} +69 -21
  103. package/dist/migration-handler-Cg0Y4EPu.mjs +470 -0
  104. package/dist/{migration-handler-DM4clYj5.d.mts → migration-handler-CwlEQUoo.d.mts} +17 -26
  105. package/dist/{mime-DxCznlJq.mjs → mime-srOklVVv.mjs} +92 -395
  106. package/dist/{node-DJicPvPj.mjs → node-DoKbo1SZ.mjs} +8 -24
  107. package/dist/{operator-args-BNsW5gfp.mjs → operator-args-UnE8Y2eK.mjs} +27 -26
  108. package/dist/{operator-auth-AzVLbrr3.mjs → operator-auth-Cr2zCc-J.mjs} +2 -2
  109. package/dist/{operator-client-BQtzyG-g.mjs → operator-client-C-ROjk1I.mjs} +4 -4
  110. package/dist/{operator-cmd-B6f6Cg9Z.mjs → operator-cmd-C5lCctnc.mjs} +8 -8
  111. package/dist/operator-cmd-Cjk5DiRx.mjs +2 -0
  112. package/dist/{output-C50ag2r3.mjs → output-FNHKw5Ac.mjs} +36 -5
  113. package/dist/{package-json-DXfiT1jV.mjs → package-json-BjYqR-So.mjs} +1 -1
  114. package/dist/pages/client.d.mts +1 -1
  115. package/dist/pages/client.mjs +91 -5
  116. package/dist/pages/index.d.mts +1 -2
  117. package/dist/pages/index.mjs +6 -6
  118. package/dist/pages/islands-plugin.mjs +5 -83
  119. package/dist/pages/protocol.d.mts +2 -2
  120. package/dist/pages/protocol.mjs +1 -1
  121. package/dist/pages/serialize.mjs +1 -1
  122. package/dist/{platform-args-BoZkWQnJ.mjs → platform-args-C6Mb_I3a.mjs} +34 -58
  123. package/dist/platform-args-Cm7x-fot.mjs +2 -0
  124. package/dist/{platform-auth-config-n603OANg.mjs → platform-auth-config-CJmNkFT2.mjs} +10 -11
  125. package/dist/{platform-auth-protection-zxDr0hWW.mjs → platform-auth-protection-D5wvsI-Y.mjs} +36 -26
  126. package/dist/{platform-auth-recovery-tw9lgtgE.mjs → platform-auth-recovery-D_0I3n-1.mjs} +8 -9
  127. package/dist/{platform-cmd-C00YM14r.mjs → platform-cmd-Cuj4oUVo.mjs} +1 -1
  128. package/dist/{platform-cmd-B8-bCb7t.mjs → platform-cmd-DxxZO6e5.mjs} +17 -16
  129. package/dist/{platform-discovery-BC0HCKYt.mjs → platform-discovery-CHhNs8Nn.mjs} +1 -1
  130. package/dist/{platform-domain-p0kobLV8.mjs → platform-domain-zLXnW1G_.mjs} +5 -5
  131. package/dist/{platform-lifecycle-D_QEY32D.mjs → platform-lifecycle-DOW-wLfx.mjs} +1398 -2043
  132. package/dist/{platform-lifecycle-vFqtNPPa.mjs → platform-lifecycle-_gfnjUBr.mjs} +1 -1
  133. package/dist/{platform-management-oi-SvI3f.mjs → platform-management-CYrLvTGH.mjs} +1 -1
  134. package/dist/{platform-management-BdYblvvE.mjs → platform-management-t7HKy4-U.mjs} +632 -124
  135. package/dist/{platform-plans-config-CjiFv5J4.mjs → platform-plans-config-CNH6zbPX.mjs} +15 -11
  136. package/dist/{platform-recovery-PvNS9Nl2.mjs → platform-recovery-DeucI7A9.mjs} +6 -9
  137. package/dist/{platform-registry-P387v42A.mjs → platform-registry-B9mWX9LO.mjs} +18 -19
  138. package/dist/{platform-setup-DVe42Ws7.mjs → platform-setup-CTf6MMT9.mjs} +19 -26
  139. package/dist/{plugin-inference-BlQbOL0P.mjs → plugin-inference-DsARdQKE.mjs} +18 -33
  140. package/dist/{prepare-Dq9hTIbo.mjs → prepare-C4zfwks4.mjs} +3 -3
  141. package/dist/{prepare-Do96654b.mjs → prepare-CSH9dKTI.mjs} +11 -13
  142. package/dist/prepare-dr9uxQSV.mjs +2 -0
  143. package/dist/{prerender-render-Ct20jftc.mjs → prerender-render-Bfsumdkv.mjs} +8 -2
  144. package/dist/prerender-render.d.mts +2 -0
  145. package/dist/prerender-render.mjs +2 -2
  146. package/dist/project-DiiOBZPF.mjs +2 -0
  147. package/dist/{project-cmd-ti8_yTcA.mjs → project-cmd-Dq75AXzy.mjs} +19 -19
  148. package/dist/{project-paths-GgcMozYz.mjs → project-paths-DMvEeSau.mjs} +9 -14
  149. package/dist/{project-DQstYTxO.mjs → project-rqDnVsJN.mjs} +8 -4
  150. package/dist/{project-team-CDPE1Tsg.mjs → project-team-B3_QcStG.mjs} +6 -6
  151. package/dist/{project-token-CkZ1cN0Z.mjs → project-token-CvsRvv2I.mjs} +5 -5
  152. package/dist/{project-tsconfig-CVJhNMxs.mjs → project-tsconfig-bveqhlYA.mjs} +3 -5
  153. package/dist/{project-zero-trust-DdjLR61k.mjs → project-zero-trust-D1ICiwN_.mjs} +5 -5
  154. package/dist/{protocol-BPZaNqBo.d.mts → protocol-4H7V_3Os.d.mts} +1 -1
  155. package/dist/{protocol-CfaUwNs8.mjs → protocol-RNP0u7UY.mjs} +9 -3
  156. package/dist/{provision-BfaLiWbj.mjs → provision-DDh7ITVS.mjs} +118 -865
  157. package/dist/{requests-DFAqyYy8.mjs → requests-3CL3BuZh.mjs} +4 -4
  158. package/dist/resolve-project-B9Hr0D3n.mjs +2 -0
  159. package/dist/resolve-project-C_Cu7E8a.mjs +48 -0
  160. package/dist/{rollback-BKYXBduI.mjs → rollback-Ce1d_0J9.mjs} +7 -17
  161. package/dist/{route-types-CbtsIeFn.mjs → route-types-IrBuwJ7u.mjs} +35 -70
  162. package/dist/routing-assets-VkrKIbxE.mjs +139 -0
  163. package/dist/{runner-9wjsSZx-.mjs → runner-B5huK2eC.mjs} +1 -1
  164. package/dist/{runner-DMBKSrRk.mjs → runner-DcVDrzuR.mjs} +7 -28
  165. package/dist/{runner-mysql-CEzKtmFb.mjs → runner-mysql-CCtyI0p6.mjs} +4 -3
  166. package/dist/runner-mysql-CaJq-hd6.mjs +2 -0
  167. package/dist/runner-pg-BJhFZZG4.mjs +2 -0
  168. package/dist/{runner-pg-DV8p_zjA.mjs → runner-pg-CPd-CB_F.mjs} +1 -1
  169. package/dist/runtime/ai.mjs +9 -22
  170. package/dist/runtime/better-auth-mysql.d.mts +2 -5
  171. package/dist/runtime/better-auth-mysql.mjs +6 -31
  172. package/dist/runtime/better-auth-pg.d.mts +2 -5
  173. package/dist/runtime/better-auth-pg.mjs +6 -32
  174. package/dist/runtime/better-auth.d.mts +2 -4
  175. package/dist/runtime/better-auth.mjs +9 -19
  176. package/dist/runtime/db.mjs +1 -1
  177. package/dist/runtime/durable.d.mts +16 -0
  178. package/dist/runtime/durable.mjs +26 -2
  179. package/dist/runtime/email/testing.d.mts +1 -1
  180. package/dist/runtime/email/testing.mjs +9 -23
  181. package/dist/runtime/email-protocol.d.mts +12 -0
  182. package/dist/runtime/email-protocol.mjs +2 -70
  183. package/dist/runtime/email.d.mts +1 -1
  184. package/dist/runtime/email.mjs +79 -221
  185. package/dist/runtime/env-public.d.mts +1 -1
  186. package/dist/runtime/env-public.mjs +12 -38
  187. package/dist/runtime/env.d.mts +1 -12
  188. package/dist/runtime/env.mjs +1 -1
  189. package/dist/runtime/handler.d.mts +1 -1
  190. package/dist/runtime/handler.mjs +1 -1
  191. package/dist/runtime/isr.mjs +1 -1
  192. package/dist/runtime/kv.mjs +1 -1
  193. package/dist/runtime/live-client.d.mts +1 -1
  194. package/dist/runtime/live-server.mjs +1 -16
  195. package/dist/runtime/live.d.mts +1 -1
  196. package/dist/runtime/live.mjs +1 -1
  197. package/dist/runtime/migration-handler-mysql.d.mts +2 -2
  198. package/dist/runtime/migration-handler-mysql.mjs +3 -2
  199. package/dist/runtime/migration-handler-pg.d.mts +2 -2
  200. package/dist/runtime/migration-handler-pg.mjs +1 -1
  201. package/dist/runtime/migration-handler.d.mts +2 -2
  202. package/dist/runtime/migration-handler.mjs +2 -470
  203. package/dist/runtime/queues.mjs +1 -1
  204. package/dist/runtime/remote/binding-handler.mjs +62 -62
  205. package/dist/runtime/remote/index.mjs +16 -77
  206. package/dist/runtime/routing.d.mts +1 -4
  207. package/dist/runtime/routing.mjs +82 -218
  208. package/dist/runtime/sandbox-container.d.mts +2 -2
  209. package/dist/runtime/sandbox-container.mjs +2 -2
  210. package/dist/runtime/sandbox.d.mts +2 -2
  211. package/dist/runtime/sandbox.mjs +13 -6
  212. package/dist/runtime/storage.mjs +1 -1
  213. package/dist/runtime/validator.d.mts +1 -1
  214. package/dist/runtime/ws-server.d.mts +2 -3
  215. package/dist/runtime/ws-server.mjs +6 -28
  216. package/dist/runtime/ws.d.mts +1 -1
  217. package/dist/{sandbox-container-Bo0eiFKz.d.mts → sandbox-container-ChQRum-j.d.mts} +3 -1
  218. package/dist/{sandbox-container-C6ItmVuN.mjs → sandbox-container-DBKIqDEK.mjs} +12 -1
  219. package/dist/{sandbox-C5LFoJMf.d.mts → sandbox-q3waMc2T.d.mts} +1 -1
  220. package/dist/{scan-C3uDzz6J.mjs → scan-C0BMdmEd.mjs} +84 -7
  221. package/dist/{secret-BAt2KMmO.mjs → secret-B5J8bBsI.mjs} +62 -80
  222. package/dist/{serialize-BPvnNQuA.mjs → serialize-BtQyaYoC.mjs} +10 -4
  223. package/dist/{skills-BgVMvQdy.mjs → skills-BJsan98C.mjs} +2 -2
  224. package/dist/{subcommand-prompt-BSlnD1fI.mjs → subcommand-prompt-gQ-NDA-u.mjs} +38 -43
  225. package/dist/sveltekit.mjs +1 -1
  226. package/dist/validate-C9xtFOYR.mjs +2 -0
  227. package/dist/{validate-C9qJArv7.mjs → validate-CheZGRE7.mjs} +4 -8
  228. package/dist/version-metadata-DIrqEHQo.mjs +73 -0
  229. package/dist/{wrangler-D9KTuqnv.mjs → wrangler-BYs07Rxy.mjs} +119 -378
  230. package/dist/{ws-CChrrAU-.d.mts → ws-aKVYB-fA.d.mts} +1 -1
  231. package/dist/yarn-pnp-DLbEFMT0.mjs +92 -0
  232. package/docs/guide/auth.md +2 -0
  233. package/docs/guide/database/postgresql.md +2 -0
  234. package/docs/guide/database.md +2 -0
  235. package/docs/guide/deployment.md +2 -2
  236. package/docs/guide/durable-state.md +24 -0
  237. package/docs/guide/platform/administration/access.md +5 -1
  238. package/docs/guide/platform/administration/connected-apps.md +55 -0
  239. package/docs/guide/platform/installation/credentials.md +3 -1
  240. package/docs/guide/platform/installation/first-deployment.md +1 -1
  241. package/docs/guide/project-collaboration.md +1 -1
  242. package/docs/guide/quickstart.md +2 -0
  243. package/docs/guide/sandboxes.md +2 -0
  244. package/docs/reference/api/deploy.md +23 -0
  245. package/docs/reference/api/pages.md +2 -0
  246. package/docs/reference/api.md +2 -1
  247. package/docs/reference/cli/auth.md +1 -1
  248. package/docs/reference/cli/database.md +9 -3
  249. package/docs/reference/cli/deploy.md +1 -1
  250. package/docs/reference/cli/platform-installation.md +1 -1
  251. package/docs/reference/cli/setup.md +2 -0
  252. package/package.json +14 -17
  253. package/skills/void/SKILL.md +4 -2
  254. package/dist/auth-BgX2qYSY.mjs +0 -2
  255. package/dist/cf-build-output-H9a97vME.mjs +0 -2
  256. package/dist/client-By4JjMw_.mjs +0 -2
  257. package/dist/collect-DLyFDiKW.mjs +0 -2
  258. package/dist/config-5r-YpMC-.mjs +0 -2
  259. package/dist/config-B_ggY-IO.mjs +0 -89
  260. package/dist/config-BtSFvXZx.mjs +0 -2
  261. package/dist/config-write-AHGesphx.mjs +0 -61
  262. package/dist/deploy-BsEvnlJl.mjs +0 -10455
  263. package/dist/deploy-C1d-YTfp.mjs +0 -2
  264. package/dist/dev-inbox-CK-UuPob.mjs +0 -297
  265. package/dist/discover-EDUf6JJw.mjs +0 -2
  266. package/dist/dist-_UUlL6bg.mjs +0 -2
  267. package/dist/env-validation-Dxdx_5wo.mjs +0 -951
  268. package/dist/gen-dA9hW7AV.mjs +0 -2
  269. package/dist/head-client-DzmJGN4C.mjs +0 -90
  270. package/dist/help-DzKUrQvk.mjs +0 -2
  271. package/dist/login-Dc-wuTDq.mjs +0 -2
  272. package/dist/migrate-BHp07yJE.mjs +0 -2
  273. package/dist/operator-cmd-Cwn50lOV.mjs +0 -2
  274. package/dist/pages/head-client.d.mts +0 -13
  275. package/dist/pages/head-client.mjs +0 -2
  276. package/dist/platform-args-DYgITk0D.mjs +0 -2
  277. package/dist/prepare-DRUV-g3X.mjs +0 -2
  278. package/dist/project-BiaPQ7ur.mjs +0 -2
  279. package/dist/provision-Wu9ZBk9L.mjs +0 -2
  280. package/dist/resolve-project-BIeYs9Cw.mjs +0 -2
  281. package/dist/resolve-project-CP8rZs_p.mjs +0 -28
  282. package/dist/runner-mysql-CkFqZ6CE.mjs +0 -2
  283. package/dist/runner-pg-BGYRFdRp.mjs +0 -2
  284. package/dist/runtime/env-helpers.d.mts +0 -2
  285. package/dist/runtime/env-helpers.mjs +0 -2
  286. package/dist/validate-BJr9LfXy.mjs +0 -2
  287. package/dist/yarn-pnp-CUX_iTPA.mjs +0 -188
@@ -1,3 +1,3 @@
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";
1
+ import { w as ValidationError } from "../handler-_PqY82xe.mjs";
2
+ import { a as handlePageMutation, i as handlePageGet, n as PageRenderResult, o as safeJsonStringify, r as flattenValidationErrors, t as PageObject } from "../protocol-4H7V_3Os.mjs";
3
3
  export { PageObject, PageRenderResult, ValidationError, flattenValidationErrors, handlePageGet, handlePageMutation, safeJsonStringify };
@@ -1,3 +1,3 @@
1
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";
2
+ import { i as safeJsonStringify, n as handlePageGet, r as handlePageMutation, t as flattenValidationErrors } from "../protocol-RNP0u7UY.mjs";
3
3
  export { ValidationError, flattenValidationErrors, handlePageGet, handlePageMutation, safeJsonStringify };
@@ -1,2 +1,2 @@
1
- import { t as serializePageData } from "../serialize-BPvnNQuA.mjs";
1
+ import { t as serializePageData } from "../serialize-BtQyaYoC.mjs";
2
2
  export { serializePageData };
@@ -1,4 +1,4 @@
1
- import { n as operatorGroups, r as parseOperatorArgs } from "./operator-args-BNsW5gfp.mjs";
1
+ import { n as operatorGroups, r as parseOperatorArgs } from "./operator-args-UnE8Y2eK.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
@@ -18,38 +18,14 @@ const PLATFORM_AUTH_ACTIONS = [
18
18
  ];
19
19
  function parsePlatformConfigArgs(args) {
20
20
  if (args.length && args[0] !== "auth") throw new Error("platform: Usage: void platform config auth [command] [options].");
21
- const positional = [];
22
- const flags = /* @__PURE__ */ new Set();
23
- const values = /* @__PURE__ */ new Map();
24
- const valueFlags = [
21
+ const { positional, flags, values } = parseConfigFlags(args, "auth", [
25
22
  "connection",
26
23
  "installation",
27
24
  "id",
28
25
  "file",
29
26
  "client-secret-env",
30
27
  "test-id"
31
- ];
32
- for (let index = 1; index < args.length; index++) {
33
- const arg = args[index];
34
- if (!arg.startsWith("-")) {
35
- positional.push(arg);
36
- continue;
37
- }
38
- const name = arg.slice(2);
39
- if (!arg.startsWith("--") || ![
40
- "json",
41
- "plan",
42
- "yes"
43
- ].includes(name) && !valueFlags.includes(name)) throw new Error(`platform: Unknown config auth flag ${arg}.`);
44
- if (flags.has(name) || values.has(name)) throw new Error(`platform: Duplicate flag ${arg}.`);
45
- if (!valueFlags.includes(name)) {
46
- flags.add(name);
47
- continue;
48
- }
49
- const value = args[++index];
50
- if (!value || value.startsWith("-")) throw new Error(`platform: ${arg} requires a value.`);
51
- values.set(name, value);
52
- }
28
+ ]);
53
29
  const [action = "", target = "", ...extra] = positional;
54
30
  if (extra.length || action && !PLATFORM_AUTH_ACTIONS.includes(action)) throw new Error(`platform: Usage: void platform config auth <${PLATFORM_AUTH_ACTIONS.join("|")}>.`);
55
31
  const needsTarget = action && action !== "list" && action !== "initialize" && action !== "admission";
@@ -97,30 +73,11 @@ function parsePlatformConfigArgs(args) {
97
73
  yes: flags.has("yes")
98
74
  };
99
75
  }
100
- //#endregion
101
- //#region src/cli/platform-plans-args.ts
102
- const PLATFORM_PLAN_ACTIONS = [
103
- "show",
104
- "add",
105
- "set",
106
- "reset",
107
- "archive",
108
- "restore",
109
- "remove",
110
- "default",
111
- "sync"
112
- ];
113
- function parsePlatformPlansArgs(args) {
76
+ /** Parses `config <group>` flags: --json, --plan, --yes, and the given value flags. */
77
+ function parseConfigFlags(args, group, valueFlags) {
114
78
  const positional = [];
115
79
  const flags = /* @__PURE__ */ new Set();
116
80
  const values = /* @__PURE__ */ new Map();
117
- const valueFlags = [
118
- "connection",
119
- "file",
120
- "name",
121
- "copy",
122
- "replacement"
123
- ];
124
81
  for (let index = 1; index < args.length; index++) {
125
82
  const arg = args[index];
126
83
  if (!arg.startsWith("-")) {
@@ -132,7 +89,7 @@ function parsePlatformPlansArgs(args) {
132
89
  "json",
133
90
  "plan",
134
91
  "yes"
135
- ].includes(name) && !valueFlags.includes(name)) throw new Error(`platform: Unknown config plans flag ${arg}.`);
92
+ ].includes(name) && !valueFlags.includes(name)) throw new Error(`platform: Unknown config ${group} flag ${arg}.`);
136
93
  if (flags.has(name) || values.has(name)) throw new Error(`platform: Duplicate flag ${arg}.`);
137
94
  if (!valueFlags.includes(name)) {
138
95
  flags.add(name);
@@ -142,6 +99,33 @@ function parsePlatformPlansArgs(args) {
142
99
  if (!value || value.startsWith("-")) throw new Error(`platform: ${arg} requires a value.`);
143
100
  values.set(name, value);
144
101
  }
102
+ return {
103
+ positional,
104
+ flags,
105
+ values
106
+ };
107
+ }
108
+ //#endregion
109
+ //#region src/cli/platform-plans-args.ts
110
+ const PLATFORM_PLAN_ACTIONS = [
111
+ "show",
112
+ "add",
113
+ "set",
114
+ "reset",
115
+ "archive",
116
+ "restore",
117
+ "remove",
118
+ "default",
119
+ "sync"
120
+ ];
121
+ function parsePlatformPlansArgs(args) {
122
+ const { positional, flags, values } = parseConfigFlags(args, "plans", [
123
+ "connection",
124
+ "file",
125
+ "name",
126
+ "copy",
127
+ "replacement"
128
+ ]);
145
129
  const [action = "", target = "", ...extra] = positional;
146
130
  if (extra.length || action && !PLATFORM_PLAN_ACTIONS.includes(action)) throw new Error(`platform: Usage: void platform config plans [${PLATFORM_PLAN_ACTIONS.join("|")}] [plan-id] [options].`);
147
131
  const needsTarget = action && action !== "show" && action !== "sync";
@@ -362,21 +346,13 @@ function parsePlatformArgs(args) {
362
346
  if (rest.length > 0) throw new Error(`platform: Unexpected argument '${rest[0]}'.`);
363
347
  return { subcommand };
364
348
  }
365
- if (subcommand === "use") {
349
+ if (subcommand === "use" || subcommand === "status") {
366
350
  const { selector } = parseSelector(rest, subcommand);
367
351
  return {
368
352
  subcommand,
369
353
  selector
370
354
  };
371
355
  }
372
- if (subcommand === "status") {
373
- const { selector, plan } = parseSelector(rest, subcommand);
374
- if (plan) throw new Error("platform: Unknown flag '--plan'.");
375
- return {
376
- subcommand,
377
- selector
378
- };
379
- }
380
356
  if (subcommand === "discover") {
381
357
  let account = "";
382
358
  let selector = "";
@@ -0,0 +1,2 @@
1
+ import { t as parsePlatformArgs } from "./platform-args-C6Mb_I3a.mjs";
2
+ export { parsePlatformArgs };
@@ -1,13 +1,12 @@
1
- import { u as openBrowser } from "./auth-B5_tZLxT.mjs";
1
+ import { u as openBrowser } from "./auth-B6iOCjKI.mjs";
2
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";
3
+ import { l as formatUrl, m as printSuccess } from "./output-FNHKw5Ac.mjs";
4
+ import { n as OperatorClient } from "./operator-client-C-ROjk1I.mjs";
5
+ import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-Cr2zCc-J.mjs";
6
+ import { i as humanLines } from "./operator-cmd-C5lCctnc.mjs";
7
+ import { o as platformPromptAnswer } from "./platform-setup-CTf6MMT9.mjs";
8
8
  import { parsePlatformAdmissionPolicy, parsePlatformLoginConfiguration } from "@void/platform";
9
9
  import { stripVTControlCharacters } from "node:util";
10
- import { execFile } from "node:child_process";
11
10
  import { setTimeout } from "node:timers/promises";
12
11
  import { readFile } from "node:fs/promises";
13
12
  //#region src/cli/platform-auth-config.ts
@@ -46,8 +45,8 @@ async function waitForPlatformLoginTest(client, launch, signal) {
46
45
  if (url.origin !== client.origin || url.pathname !== "/auth/test" || url.username || url.password || url.hash) throw new Error("platform: The login test belongs to a different platform.");
47
46
  const expiry = Date.parse(launch.expiresAt);
48
47
  if (!Number.isFinite(expiry) || expiry > Date.now() + 66e4) throw new Error("platform: Invalid login test expiry.");
49
- console.log(`Complete the login test in your browser: ${url.href}`);
50
- openBrowser(url.href, execFile);
48
+ console.log(`Complete the login test in your browser: ${formatUrl(url.href)}`);
49
+ openBrowser(url.href);
51
50
  while (Date.now() < expiry) {
52
51
  signal?.throwIfAborted();
53
52
  const result = await client.request(`/config/auth/tests/${encodeURIComponent(launch.id)}`, { signal });
@@ -143,11 +142,11 @@ async function configurationInput(args, existing) {
143
142
  }
144
143
  async function runPlatformAuthConfig(args) {
145
144
  if (args.action === "recover") {
146
- const { runPlatformAuthRecovery } = await import("./platform-auth-recovery-tw9lgtgE.mjs");
145
+ const { runPlatformAuthRecovery } = await import("./platform-auth-recovery-D_0I3n-1.mjs");
147
146
  return runPlatformAuthRecovery(args);
148
147
  }
149
148
  if (args.action === "protection") {
150
- const { runPlatformProtectionConfig } = await import("./platform-auth-protection-zxDr0hWW.mjs");
149
+ const { runPlatformProtectionConfig } = await import("./platform-auth-protection-D5wvsI-Y.mjs");
151
150
  return runPlatformProtectionConfig(args);
152
151
  }
153
152
  const origin = resolveOperatorOrigin(args.connection);
@@ -1,12 +1,12 @@
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
- import { t as cfAccessHeaders } from "./cf-access-TWNzXltp.mjs";
3
- import { n as ensurePlatformAccessToken } from "./cf-access-ngGqZpHZ.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-B9mWX9LO.mjs";
2
+ import { t as cfAccessHeaders } from "./cf-access-BM9G0lhO.mjs";
3
+ import { t as ensurePlatformAccessToken } from "./cf-access-CWP4avfP.mjs";
4
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";
5
+ import { m as printSuccess } from "./output-FNHKw5Ac.mjs";
6
+ import { n as OperatorClient } from "./operator-client-C-ROjk1I.mjs";
7
+ import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-Cr2zCc-J.mjs";
8
+ import { F as checkpointPlatformAccessResources, I as parsePlatformAccessSetupSpec, L as preparePlatformAccessSetup, N as resolvePlatformCloudflareCredential, n as resolvePlatformInstallDatabaseUrl, s as acquirePlatformDatabaseLifecycleLock, z as PlatformCloudflareClient } from "./platform-lifecycle-DOW-wLfx.mjs";
9
+ import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-t7HKy4-U.mjs";
10
10
  import { parsePlatformAccessProtection, platformProtectionProofMessage } from "@void/platform";
11
11
  import { createHmac } from "node:crypto";
12
12
  import { readFile } from "node:fs/promises";
@@ -55,6 +55,21 @@ async function verifyProtectionWorkerOrigins(client, manifest, origins, disableP
55
55
  if (current.enabled !== update.enabled || current.previews_enabled !== false) throw new Error("platform: Worker alternate origins changed during protection setup. Reconcile them before retrying.");
56
56
  }
57
57
  }
58
+ function stringList(value) {
59
+ return Array.isArray(value) && value.every((item) => typeof item === "string") ? value : void 0;
60
+ }
61
+ function protectionContext(value) {
62
+ const { installationId, userId, sessionId, revision, lifecycleVersion } = value;
63
+ const origins = stringList(value.origins);
64
+ return typeof installationId === "string" && typeof userId === "string" && typeof sessionId === "string" && typeof revision === "number" && Number.isSafeInteger(revision) && typeof lifecycleVersion === "string" && origins ? {
65
+ installationId,
66
+ userId,
67
+ sessionId,
68
+ revision,
69
+ lifecycleVersion,
70
+ origins
71
+ } : void 0;
72
+ }
58
73
  async function runPlatformProtectionConfig(args) {
59
74
  const manifest = args.target === "show" ? void 0 : resolveInstallationManifest(args.installation);
60
75
  const origin = args.connection ? resolveOperatorOrigin(args.connection) : manifest?.endpoints.apiUrl ? normalizePlatformApiUrl(manifest.endpoints.apiUrl) : resolveOperatorOrigin("");
@@ -64,16 +79,16 @@ async function runPlatformProtectionConfig(args) {
64
79
  const provisioning = saved?.accessProvisioningJson ? JSON.parse(saved.accessProvisioningJson) : void 0;
65
80
  if (manifest.deployment.authentication.accessProtection || provisioning?.resources?.protection?.id) ensurePlatformAccessToken(origin, false, true);
66
81
  }
67
- let context = await operator.request("/config/auth/protection");
82
+ const live = await operator.request("/config/auth/protection");
68
83
  if (args.target === "show") {
69
84
  console.log(JSON.stringify({
70
- protection: context.protection,
71
- origins: context.origins
85
+ protection: live.protection,
86
+ origins: live.origins
72
87
  }, null, 2));
73
88
  return;
74
89
  }
75
- if (!manifest || manifest.status !== "installed" || !manifest.endpoints.proxyUrl || normalizePlatformApiUrl(manifest.endpoints.apiUrl ?? "") !== origin || context.installationId !== manifest.id || typeof context.userId !== "string" || typeof context.sessionId !== "string" || typeof context.revision !== "number" || typeof context.lifecycleVersion !== "string" || !Number.isSafeInteger(context.revision) || !Array.isArray(context.origins) || context.origins.some((value) => typeof value !== "string")) throw new Error("platform: Protection settings must belong to this completed installation. Repair or upgrade it first.");
76
- let lifecycleVersion = context.lifecycleVersion;
90
+ let context = protectionContext(live);
91
+ if (!manifest || manifest.status !== "installed" || !manifest.endpoints.proxyUrl || normalizePlatformApiUrl(manifest.endpoints.apiUrl ?? "") !== origin || !context || context.installationId !== manifest.id) throw new Error("platform: Protection settings must belong to this completed installation. Repair or upgrade it first.");
77
92
  let origins = context.origins;
78
93
  if (!origins.includes(origin) || !origins.includes(new URL(manifest.endpoints.proxyUrl).origin)) throw new Error("platform: The live API and proxy origins differ from installation recovery state. Repair the installation first.");
79
94
  const spec = args.file ? parsePlatformAccessSetupSpec(JSON.parse(await readFile(args.file, "utf8"))) : void 0;
@@ -126,10 +141,9 @@ async function runPlatformProtectionConfig(args) {
126
141
  currentManifest = selectAuthoritativePlatformManifest(currentManifest, releaseDatabase.authoritativeManifest);
127
142
  if (!releaseDatabase.authoritativeManifest) await releaseDatabase.checkpoint?.(currentManifest);
128
143
  else writeInstallationManifest(currentManifest);
129
- context = await operator.request("/config/auth/protection");
130
- const rawLockedOrigins = context.origins;
131
- const lockedOrigins = Array.isArray(rawLockedOrigins) ? rawLockedOrigins.filter((value) => typeof value === "string") : [];
132
- if (normalizePlatformApiUrl(currentManifest.endpoints.apiUrl ?? "") !== origin || !currentManifest.endpoints.proxyUrl || context.installationId !== currentManifest.id || lockedOrigins.length !== (Array.isArray(rawLockedOrigins) ? rawLockedOrigins.length : -1) || !lockedOrigins.includes(origin) || !lockedOrigins.includes(new URL(currentManifest.endpoints.proxyUrl).origin)) throw new Error("platform: Platform origins changed before Access provisioning. Review and retry.");
144
+ const locked = await operator.request("/config/auth/protection");
145
+ const lockedOrigins = stringList(locked.origins);
146
+ if (normalizePlatformApiUrl(currentManifest.endpoints.apiUrl ?? "") !== origin || !currentManifest.endpoints.proxyUrl || locked.installationId !== currentManifest.id || !lockedOrigins || !lockedOrigins.includes(origin) || !lockedOrigins.includes(new URL(currentManifest.endpoints.proxyUrl).origin)) throw new Error("platform: Platform origins changed before Access provisioning. Review and retry.");
133
147
  origins = lockedOrigins;
134
148
  await verifyPlatformInstallationOwnership(cloudflare, currentManifest);
135
149
  await verifyProtectionWorkerOrigins(cloudflare, currentManifest, origins, true);
@@ -168,9 +182,8 @@ async function runPlatformProtectionConfig(args) {
168
182
  }
169
183
  ensurePlatformAccessToken(origin, false, true);
170
184
  if (!cfAccessHeaders(process.env, origin)["cf-access-token"]) throw new Error("platform: Sign in interactively through company Access to enable protection. Service credentials cannot authorize this change.");
171
- context = await operator.request("/config/auth/protection");
172
- if (context.installationId !== currentManifest.id || typeof context.userId !== "string" || typeof context.sessionId !== "string" || typeof context.revision !== "number" || typeof context.lifecycleVersion !== "string" || !Array.isArray(context.origins) || context.origins.some((value) => typeof value !== "string") || JSON.stringify(context.origins) !== JSON.stringify(origins)) throw new Error("platform: Protection settings changed while Access resources were being checkpointed. Review and retry.");
173
- lifecycleVersion = context.lifecycleVersion;
185
+ context = protectionContext(await operator.request("/config/auth/protection"));
186
+ if (!context || context.installationId !== currentManifest.id || JSON.stringify(context.origins) !== JSON.stringify(origins)) throw new Error("platform: Protection settings changed while Access resources were being checkpointed. Review and retry.");
174
187
  await verifyProtectionWorkerOrigins(cloudflare, currentManifest, origins, false);
175
188
  }
176
189
  const expiresAt = new Date(Date.now() + 3e5).toISOString();
@@ -180,13 +193,13 @@ async function runPlatformProtectionConfig(args) {
180
193
  userId: context.userId,
181
194
  sessionId: context.sessionId,
182
195
  revision: context.revision,
183
- lifecycleVersion,
196
+ lifecycleVersion: context.lifecycleVersion,
184
197
  protection,
185
198
  expiresAt
186
199
  })).digest("base64url");
187
200
  const body = {
188
201
  revision: context.revision,
189
- lifecycleVersion,
202
+ lifecycleVersion: context.lifecycleVersion,
190
203
  protection,
191
204
  expiresAt,
192
205
  signature
@@ -203,10 +216,7 @@ async function runPlatformProtectionConfig(args) {
203
216
  method: "POST",
204
217
  body
205
218
  });
206
- save({ protectionUpdateJson: JSON.stringify({
207
- revision: result.revision,
208
- protection
209
- }) });
219
+ writePendingInstallationSecrets(currentManifest, checkpoint);
210
220
  promoteInstallationSecrets(currentManifest);
211
221
  console.log(JSON.stringify({
212
222
  ...result,
@@ -1,13 +1,12 @@
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";
1
+ import { m as readInstallationRecoverySecrets, t as acquirePlatformLifecycleLock, v as resolveInstallationManifest } from "./platform-registry-B9mWX9LO.mjs";
2
+ import { u as openBrowser } from "./auth-B6iOCjKI.mjs";
3
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";
4
+ import { l as formatUrl, m as printSuccess } from "./output-FNHKw5Ac.mjs";
5
+ import { a as resolveOperatorOrigin } from "./operator-auth-Cr2zCc-J.mjs";
6
+ import { N as resolvePlatformCloudflareCredential, c as acquirePlatformDatabaseLifecycleLockConnection, l as platformDatabaseClientUrl, n as resolvePlatformInstallDatabaseUrl, z as PlatformCloudflareClient } from "./platform-lifecycle-DOW-wLfx.mjs";
7
+ import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-t7HKy4-U.mjs";
8
8
  import { parsePlatformAccessProtection, parsePlatformAdmissionPolicy, parsePlatformLoginConfiguration, platformAuthenticationRecoveryMessage, validatePlatformAdmissionPolicy } from "@void/platform";
9
9
  import { createCipheriv, createDecipheriv, createHash, createHmac, hkdfSync, randomBytes, randomUUID } from "node:crypto";
10
- import { execFile } from "node:child_process";
11
10
  import { setTimeout } from "node:timers/promises";
12
11
  import { readFile } from "node:fs/promises";
13
12
  //#region src/cli/platform-auth-recovery-core.ts
@@ -271,8 +270,8 @@ async function runPlatformAuthRecovery(args) {
271
270
  const url = new URL("/auth/test", manifest.endpoints.apiUrl);
272
271
  url.searchParams.set("id", testId);
273
272
  url.searchParams.set("proof", proof);
274
- console.log(`Complete the recovery login in your browser: ${url.href}`);
275
- if (process.stdin.isTTY) openBrowser(url.href, execFile);
273
+ console.log(`Complete the recovery login in your browser: ${formatUrl(url.href)}`);
274
+ if (process.stdin.isTTY) openBrowser(url.href);
276
275
  let tested;
277
276
  while (Date.now() < Date.parse(expiresAt)) {
278
277
  tested = (await db.query("SELECT issuer,subject,login FROM platform_login_tests WHERE id = $1 AND user_id = $2 AND expires_at > now()", [testId, input.administratorUserId])).rows[0];
@@ -1,2 +1,2 @@
1
- import { r as runPlatformCommand, t as discoverPlatform } from "./platform-cmd-B8-bCb7t.mjs";
1
+ import { r as runPlatformCommand, t as discoverPlatform } from "./platform-cmd-DxxZO6e5.mjs";
2
2
  export { discoverPlatform, runPlatformCommand };
@@ -1,17 +1,18 @@
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
- import { t as cfAccessHeaders } from "./cf-access-TWNzXltp.mjs";
3
- import { i as isCloudflareAccessChallenge, n as ensurePlatformAccessToken, t as ensureCloudflaredToken } from "./cf-access-ngGqZpHZ.mjs";
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-B9mWX9LO.mjs";
2
+ import { t as cfAccessHeaders } from "./cf-access-BM9G0lhO.mjs";
3
+ import { r as isCloudflareAccessChallenge, t as ensurePlatformAccessToken } from "./cf-access-CWP4avfP.mjs";
4
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";
6
- import { n as readPlatformDiscoveryResponse, t as PlatformDisabledError } from "./platform-discovery-BC0HCKYt.mjs";
5
+ import { f as import_picocolors, l as formatUrl, m as printSuccess } from "./output-FNHKw5Ac.mjs";
6
+ import { n as readPlatformDiscoveryResponse, t as PlatformDisabledError } from "./platform-discovery-CHhNs8Nn.mjs";
7
7
  //#region src/cli/platform-cmd.ts
8
8
  function normalizePlatformInputUrl(input) {
9
9
  const value = input.trim();
10
- return normalizePlatformApiUrl(value.includes("://") ? value : `https://${value}`);
10
+ const protocol = /^(?:localhost|127\.0\.0\.1|\[::1\])(?::\d+)?\/?$/i.test(value) ? "http" : "https";
11
+ return normalizePlatformApiUrl(value.includes("://") ? value : `${protocol}://${value}`);
11
12
  }
12
13
  async function discoverPlatform(input, fetcher = fetch) {
13
14
  const apiUrl = normalizePlatformInputUrl(input);
14
- ensureCloudflaredToken(apiUrl);
15
+ ensurePlatformAccessToken(apiUrl);
15
16
  const request = () => fetcher(`${apiUrl}/.well-known/void-platform`, {
16
17
  headers: {
17
18
  Accept: "application/json",
@@ -65,7 +66,7 @@ async function resolveConnection(selector) {
65
66
  function showPlatform(connection, installations) {
66
67
  const slug = platformConnectionSlug(connection, installations);
67
68
  console.log(` ${import_picocolors.default.bold(connection.displayName)}${slug ? ` ${import_picocolors.default.dim(`(${slug})`)}` : ""}`);
68
- console.log(` ${connection.apiUrl}`);
69
+ console.log(` ${formatUrl(connection.apiUrl)}`);
69
70
  if (connection.applicationDomain) console.log(connection.applicationDomain.endsWith(".workers.dev") ? " apps: workers.dev (testing)" : ` apps: *.${connection.applicationDomain}`);
70
71
  }
71
72
  function saveDiscoveredPlatform(discovery) {
@@ -95,19 +96,19 @@ async function runPlatformCommand(_root, args) {
95
96
  }]
96
97
  });
97
98
  if (isCancel(group)) return;
98
- const { parsePlatformArgs } = await import("./platform-args-DYgITk0D.mjs");
99
+ const { parsePlatformArgs } = await import("./platform-args-Cm7x-fot.mjs");
99
100
  return runPlatformCommand(_root, parsePlatformArgs(["config", group]));
100
101
  }
101
- const { runPlatformPlansConfig } = await import("./platform-plans-config-CjiFv5J4.mjs");
102
+ const { runPlatformPlansConfig } = await import("./platform-plans-config-CNH6zbPX.mjs");
102
103
  await runPlatformPlansConfig(args);
103
104
  return;
104
105
  }
105
- const { runPlatformAuthConfig } = await import("./platform-auth-config-n603OANg.mjs");
106
+ const { runPlatformAuthConfig } = await import("./platform-auth-config-CJmNkFT2.mjs");
106
107
  await runPlatformAuthConfig(args);
107
108
  return;
108
109
  }
109
110
  if (args.subcommand === "operator") {
110
- const { runOperatorCommand } = await import("./operator-cmd-Cwn50lOV.mjs");
111
+ const { runOperatorCommand } = await import("./operator-cmd-Cjk5DiRx.mjs");
111
112
  await runOperatorCommand(args);
112
113
  return;
113
114
  }
@@ -165,8 +166,8 @@ async function runPlatformCommand(_root, args) {
165
166
  throw error;
166
167
  }
167
168
  log.info(`${discovery.displayName} is reachable.`);
168
- console.log(`API: ${discovery.apiUrl}`);
169
- console.log(`Proxy: ${discovery.proxyUrl}`);
169
+ console.log(`API: ${formatUrl(discovery.apiUrl)}`);
170
+ console.log(`Proxy: ${formatUrl(discovery.proxyUrl)}`);
170
171
  if (discovery.applicationRouting?.workersDev && !discovery.applicationRouting.zoneName) {
171
172
  console.log("Application domain: workers.dev (testing)");
172
173
  console.log("Add a domain: void platform domain set <domain>");
@@ -175,7 +176,7 @@ async function runPlatformCommand(_root, args) {
175
176
  console.log(`Capabilities: ${Object.entries(discovery.capabilities).filter(([, enabled]) => enabled).map(([name]) => name).join(", ")}`);
176
177
  return;
177
178
  }
178
- const { runPlatformLifecycleCommand } = await import("./platform-lifecycle-vFqtNPPa.mjs");
179
+ const { runPlatformLifecycleCommand } = await import("./platform-lifecycle-_gfnjUBr.mjs");
179
180
  await runPlatformLifecycleCommand(args);
180
181
  }
181
182
  function showSavedInstallationStatus(manifest) {
@@ -186,7 +187,7 @@ function showSavedInstallationStatus(manifest) {
186
187
  console.log(`Saved operation: ${operation.action} — ${operation.phase}`);
187
188
  console.log(`Runtime: ${operation.fromVersion ?? "new installation"} → ${operation.toVersion}`);
188
189
  }
189
- if (manifest.endpoints.apiUrl) console.log(`Administrator status: ${manifest.endpoints.apiUrl}/admin/status`);
190
+ if (manifest.endpoints.apiUrl) console.log(`Administrator status: ${formatUrl(`${manifest.endpoints.apiUrl}/admin/status`)}`);
190
191
  }
191
192
  //#endregion
192
193
  export { saveDiscoveredPlatform as i, promptPlatformUrl as n, runPlatformCommand as r, discoverPlatform as t };
@@ -1,4 +1,4 @@
1
- import { c as normalizePlatformApiUrl } from "./platform-registry-P387v42A.mjs";
1
+ import { c as normalizePlatformApiUrl } from "./platform-registry-B9mWX9LO.mjs";
2
2
  import { parsePlatformDiscoveryDocument } from "@void/platform";
3
3
  //#region src/cli/platform-discovery.ts
4
4
  /** Discovery was refused because the platform traffic gate is closed. */
@@ -1,9 +1,9 @@
1
- import { m as readInstallationRecoverySecrets, t as acquirePlatformLifecycleLock, x as writeInstallationManifest, y as savePlatformConnection } from "./platform-registry-P387v42A.mjs";
2
- import { t as cfAccessHeaders } from "./cf-access-TWNzXltp.mjs";
1
+ import { m as readInstallationRecoverySecrets, t as acquirePlatformLifecycleLock, x as writeInstallationManifest, y as savePlatformConnection } from "./platform-registry-B9mWX9LO.mjs";
2
+ import { t as cfAccessHeaders } from "./cf-access-BM9G0lhO.mjs";
3
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";
4
+ import { m as printSuccess, p as note } from "./output-FNHKw5Ac.mjs";
5
+ import { M as assertPlatformOperatorCredentialCanApplyPlan, N as resolvePlatformCloudflareCredential, b as recordPlatformWorkerTraffic, h as createPlatformHealthProbeToken, n as resolvePlatformInstallDatabaseUrl, s as acquirePlatformDatabaseLifecycleLock, t as assertNoninteractivePlatformMutationAcknowledged, v as recordResource, x as createPlatformInstallPlan, z as PlatformCloudflareClient } from "./platform-lifecycle-DOW-wLfx.mjs";
6
+ import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest, o as resolveInstalledPlatformManifest } from "./platform-management-t7HKy4-U.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) {