void 0.27.0 → 1.0.3

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 (337) hide show
  1. package/README.md +3 -1
  2. package/dist/{account-cmd-l-FM7Ioq.mjs → account-cmd-BTcUzv9L.mjs} +6 -6
  3. package/dist/{agents-B_pX_HmQ.mjs → agents-CuNtT0D_.mjs} +5 -2
  4. package/dist/{application-analysis-DKy02UY0.mjs → application-analysis-AB_YYWgH.mjs} +118 -135
  5. package/dist/{application-routing-DQyUh_5S.mjs → application-routing-L7V-TFhZ.mjs} +1 -2
  6. package/dist/atomic-write-Dq6R0BPN.mjs +18 -0
  7. package/dist/{auth-Dn2vw-SG.mjs → auth-B6iOCjKI.mjs} +23 -56
  8. package/dist/auth-Cbqi1iVX.mjs +1 -0
  9. package/dist/{auth-link-vz9Z2kmG.mjs → auth-link-DUJuvRx5.mjs} +11 -11
  10. package/dist/{auth-migrations-BwHgeEsD.mjs → auth-migrations-Cgs0k6lS.mjs} +28 -5
  11. package/dist/{auth-router-DvsCUVw4.mjs → auth-router-CIxiMG7i.mjs} +5 -5
  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-D6we0VjO.mjs → build-cmd-BkIv25PA.mjs} +6 -6
  16. package/dist/{cache-CZRdzKx1.mjs → cache-Ctzfig-W.mjs} +6 -6
  17. package/dist/{cancel-deploy-CQ3NnMvf.mjs → cancel-deploy-CD9o-SsC.mjs} +5 -5
  18. package/dist/{cf-access-TWNzXltp.mjs → cf-access-BM9G0lhO.mjs} +4 -3
  19. package/dist/{cf-access-BcIBSKqG.mjs → cf-access-CWP4avfP.mjs} +3 -7
  20. package/dist/cf-build-output-BU3hqdHu.mjs +1 -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 +199 -312
  24. package/dist/cli/cloudflare-operation-process.mjs +41 -15
  25. package/dist/cli/env-schema-probe.d.mts +7 -44
  26. package/dist/cli/env-schema-probe.mjs +14 -80
  27. package/dist/client-B60PwCC4.mjs +1 -0
  28. package/dist/{client-DlDJuY0s.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-BIAF_BIY.mjs} +7 -6
  31. package/dist/{cloudflare-config-BmhBv3HV.mjs → cloudflare-config-DV60XFFK.mjs} +16 -28
  32. package/dist/{cloudflare-connect-2G3rL2rP.mjs → cloudflare-connect-WjwnVOJA.mjs} +4 -4
  33. package/dist/{cloudflare-operations-CwI1bChl.mjs → cloudflare-operations-B42EZeJy.mjs} +26 -34
  34. package/dist/cloudflare-operations-CrSUFRzJ.mjs +1 -0
  35. package/dist/{cloudflare-process-2-TfIEzB.mjs → cloudflare-process-CeDWJRhj.mjs} +12 -7
  36. package/dist/collect-Cae8A7Zr.mjs +1 -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-DPByhVck.mjs → config-D0GY5ItR.mjs} +1 -1
  42. package/dist/config-QrJWu0IX.mjs +1 -0
  43. package/dist/config-entry.d.mts +1 -1
  44. package/dist/{connect-BfPBHHm-.mjs → connect-CKtk-EZe.mjs} +9 -9
  45. package/dist/create-project-B-ewF_Af.mjs +1 -0
  46. package/dist/{create-project-BdXEFKal.mjs → create-project-yInGo72M.mjs} +8 -8
  47. package/dist/database-provider.mjs +1 -2
  48. package/dist/{db-Xs80hcaA.mjs → db-7I_gfdVq.mjs} +177 -268
  49. package/dist/db-types-Bb4WBWIs.mjs +49 -0
  50. package/dist/{delete-d2vuou3j.mjs → delete-Cy-M1u-r.mjs} +6 -6
  51. package/dist/deploy-9lgfhrXS.mjs +2 -0
  52. package/dist/deploy-BYYlnsiy.mjs +6164 -0
  53. package/dist/deploy-managed-static-Ca4TFdmx.mjs +1595 -0
  54. package/dist/deploy-transport-DWlWBe6M.mjs +180 -0
  55. package/dist/deploy.d.mts +10 -0
  56. package/dist/deploy.mjs +82 -0
  57. package/dist/dev-inbox-Rd6j_8vM.mjs +217 -0
  58. package/dist/discover-ClzFSwns.mjs +1 -0
  59. package/dist/{discover-CkCYv9T_.mjs → discover-D2PGT63u.mjs} +2 -2
  60. package/dist/dispatch-DrTTk8Xg.mjs +431 -0
  61. package/dist/{dist-D3m88sjf.mjs → dist-BVdsO7Py.mjs} +5 -6
  62. package/dist/dist-CfgIkieS.mjs +1 -0
  63. package/dist/{dist-BVqXeR_h.mjs → dist-ipQi0Q8y.mjs} +2 -3
  64. package/dist/{domain-BsDUBAvt.mjs → domain-CZGxPv9u.mjs} +8 -23
  65. package/dist/{dotenv-BfU6eqFt.mjs → dotenv-CNazY3-w.mjs} +4 -16
  66. package/dist/edge.mjs +1 -2
  67. package/dist/{email-d_Aux1vM.mjs → email-BcjSyAL0.mjs} +4 -20
  68. package/dist/{email-_lGAHOhp.mjs → email-DzyNVuoU.mjs} +100 -192
  69. package/dist/email-cloudflare-DfG6UEMm.mjs +1096 -0
  70. package/dist/email-protocol-D9nTvhCp.mjs +82 -0
  71. package/dist/{entry-CMAkqBmU.mjs → entry-ehmBvs5w.mjs} +2 -2
  72. package/dist/{env-DMA3cXZt.mjs → env-0jrMQJI_.mjs} +6 -14
  73. package/dist/{env-BxocywBB.mjs → env-BJjULvL0.mjs} +2 -2
  74. package/dist/{env-C74QepDE.mjs → env-Nx3yf50r.mjs} +9 -9
  75. package/dist/{env-public-DR7ZM6d-.d.mts → env-public-CCdykygU.d.mts} +6 -23
  76. package/dist/{env-raw-jZpP5n47.mjs → env-raw-D74P4ebM.mjs} +15 -21
  77. package/dist/{env-types-CwXgeMgL.mjs → env-types-DS2_y4X8.mjs} +2 -2
  78. package/dist/env-validation-BT7z-qpQ.mjs +1 -0
  79. package/dist/env-validation-DYxjz_Wo.mjs +488 -0
  80. package/dist/{gen-DtkQhvQg.mjs → gen-CufHEf42.mjs} +132 -254
  81. package/dist/gen-sXyp5DFO.mjs +1 -0
  82. package/dist/generate-ClI89brV.mjs +1 -0
  83. package/dist/{generate-GDbL7sUr.mjs → generate-Dat0UTry.mjs} +38 -4
  84. package/dist/generated-wrangler-config-DeWj5F9Y.mjs +18 -0
  85. package/dist/{github-cmd-DaDdBbSS.mjs → github-cmd-FU8EjFyU.mjs} +28 -72
  86. package/dist/{handler-BHAn2fZJ.mjs → handler-BZ1t7-Rv.mjs} +2 -2
  87. package/dist/{handler-CNAwjRcW.d.mts → handler-_PqY82xe.d.mts} +1 -1
  88. package/dist/{headers-DlfR78Nu.mjs → headers-Di1FsD3e.mjs} +26 -81
  89. package/dist/{help-0bTe_lID.mjs → help-BT2hovNI.mjs} +26 -14
  90. package/dist/help-i2YGGnTH.mjs +1 -0
  91. package/dist/{inbound-PfQDLXc5.mjs → inbound-BuTfm11U.mjs} +71 -222
  92. package/dist/{inbound-CH5Mksyy.d.mts → inbound-brj2-TM5.d.mts} +19 -58
  93. package/dist/index.d.mts +2 -18
  94. package/dist/index.mjs +714 -762
  95. package/dist/{info-PYWwkWyt.mjs → info-l249eUdH.mjs} +5 -5
  96. package/dist/{init-DaBGmaXC.mjs → init-D0A6M64Q.mjs} +229 -392
  97. package/dist/isr-config-fZaJJ8t7.mjs +165 -0
  98. package/dist/{link-C6fjafep.mjs → link-WMoJFf4i.mjs} +9 -9
  99. package/dist/{list-BTFBlqKl.mjs → list-CQ2EQEHL.mjs} +7 -18
  100. package/dist/{live-CgQuTpqD.mjs → live-BcHoTDFe.mjs} +19 -17
  101. package/dist/{live-Du8jXwOW.d.mts → live-DJONVlQK.d.mts} +1 -1
  102. package/dist/load-user-env-DD5qveNU.mjs +49 -0
  103. package/dist/{local-d1-ga5O_idV.mjs → local-d1-BxvQYEFi.mjs} +6 -6
  104. package/dist/{login-GKcNUmtI.mjs → login-C2T1oVG-.mjs} +12 -12
  105. package/dist/login-XD844Xs-.mjs +1 -0
  106. package/dist/{logs-BiMSULmc.mjs → logs-DnC1d7xB.mjs} +6 -6
  107. package/dist/{migrate-NLsjBbuM.mjs → migrate-BDIprOYd.mjs} +70 -22
  108. package/dist/migrate-BRwU-blY.mjs +1 -0
  109. package/dist/migration-handler-Cg0Y4EPu.mjs +470 -0
  110. package/dist/{migration-handler-DM4clYj5.d.mts → migration-handler-CwlEQUoo.d.mts} +17 -26
  111. package/dist/{mime-DxCznlJq.mjs → mime-srOklVVv.mjs} +92 -395
  112. package/dist/mysql-migration-sql-BIS5vbNk.mjs +241 -0
  113. package/dist/nitro.d.mts +30 -0
  114. package/dist/nitro.mjs +88 -0
  115. package/dist/{node-DJicPvPj.mjs → node-cPadMgUO.mjs} +9 -25
  116. package/dist/{operator-args-DOBhIaIg.mjs → operator-args-UnE8Y2eK.mjs} +27 -26
  117. package/dist/{operator-auth-BEZ_u0Cz.mjs → operator-auth-Cr2zCc-J.mjs} +2 -2
  118. package/dist/{operator-client-DbDv4vtE.mjs → operator-client-C-ROjk1I.mjs} +4 -4
  119. package/dist/operator-cmd-D6gnZsnK.mjs +1 -0
  120. package/dist/{operator-cmd-BT4hgavL.mjs → operator-cmd-DHieWtFp.mjs} +8 -8
  121. package/dist/{output-C50ag2r3.mjs → output-Ba6ZbrzY.mjs} +37 -6
  122. package/dist/{package-json-DXfiT1jV.mjs → package-json-BjYqR-So.mjs} +1 -1
  123. package/dist/pages/client.d.mts +1 -1
  124. package/dist/pages/client.mjs +91 -5
  125. package/dist/pages/head.mjs +1 -2
  126. package/dist/pages/index.d.mts +1 -2
  127. package/dist/pages/index.mjs +6 -6
  128. package/dist/pages/islands-plugin.mjs +5 -83
  129. package/dist/pages/prefetch.mjs +1 -2
  130. package/dist/pages/protocol.d.mts +2 -2
  131. package/dist/pages/protocol.mjs +1 -1
  132. package/dist/pages/serialize.mjs +1 -2
  133. package/dist/plan-CKX_jWnD.mjs +1 -0
  134. package/dist/platform-args-B0HeTh0C.mjs +1 -0
  135. package/dist/{platform-args-DUeXY9Om.mjs → platform-args-CaCL_1Ch.mjs} +43 -60
  136. package/dist/{platform-auth-config-CkSx3usH.mjs → platform-auth-config-Z16-I8nT.mjs} +11 -12
  137. package/dist/{platform-auth-protection-BJimB_p9.mjs → platform-auth-protection-BXwZiJSF.mjs} +37 -27
  138. package/dist/{platform-auth-recovery-BU6izFAU.mjs → platform-auth-recovery-CXjfqyOv.mjs} +9 -10
  139. package/dist/{platform-cmd-BbY1dWiM.mjs → platform-cmd-DaAOiWTl.mjs} +16 -16
  140. package/dist/platform-cmd-PT4YwMLM.mjs +1 -0
  141. package/dist/{platform-discovery-DIYz8V63.mjs → platform-discovery-CHhNs8Nn.mjs} +1 -1
  142. package/dist/{platform-domain-CHVS6cV0.mjs → platform-domain-CxpvUeo0.mjs} +6 -6
  143. package/dist/{platform-lifecycle-DzCwqhFq.mjs → platform-lifecycle-DBiS0cJd.mjs} +1693 -2120
  144. package/dist/platform-lifecycle-u9pMOvxC.mjs +1 -0
  145. package/dist/{platform-management-CuuVDhyt.mjs → platform-management-DhEFdQAf.mjs} +696 -130
  146. package/dist/platform-management-DvBS83rC.mjs +1 -0
  147. package/dist/{platform-plans-config-CN-heS4q.mjs → platform-plans-config-BWn1S2Rv.mjs} +16 -12
  148. package/dist/{platform-recovery-CskSJgLh.mjs → platform-recovery-BUGOB4RC.mjs} +6 -9
  149. package/dist/{platform-registry-Cjv2Qf0r.mjs → platform-registry-B9mWX9LO.mjs} +13 -18
  150. package/dist/{platform-setup-BBxRxmFC.mjs → platform-setup-YvN9VQXV.mjs} +21 -28
  151. package/dist/{plugin-inference-BlQbOL0P.mjs → plugin-inference-DsARdQKE.mjs} +18 -33
  152. package/dist/prepare-CYT6tAzD.mjs +1 -0
  153. package/dist/{prepare-Do96654b.mjs → prepare-DEB5SeVJ.mjs} +12 -13
  154. package/dist/{prepare-Dq9hTIbo.mjs → prepare-PQCgsny0.mjs} +4 -4
  155. package/dist/{prerender-render-Ct20jftc.mjs → prerender-render-Bfsumdkv.mjs} +8 -2
  156. package/dist/prerender-render.d.mts +2 -0
  157. package/dist/prerender-render.mjs +1 -2
  158. package/dist/{project-cmd-DaoRrn-8.mjs → project-cmd-DVatD8Ev.mjs} +20 -20
  159. package/dist/{project-paths-GgcMozYz.mjs → project-paths-DMvEeSau.mjs} +9 -14
  160. package/dist/{project-BAm2aB6Q.mjs → project-rqDnVsJN.mjs} +8 -4
  161. package/dist/project-slug-6cyz8E7k.mjs +1 -0
  162. package/dist/{project-team-Q_lCA7Io.mjs → project-team-DJrWEAG1.mjs} +7 -7
  163. package/dist/{project-token-BArgK9o1.mjs → project-token-CBgLBuL6.mjs} +6 -6
  164. package/dist/{project-tsconfig-CVJhNMxs.mjs → project-tsconfig-bveqhlYA.mjs} +3 -5
  165. package/dist/project-zdB3fs9G.mjs +1 -0
  166. package/dist/{project-zero-trust-KO9Hu2Pq.mjs → project-zero-trust-92gLtZ25.mjs} +6 -6
  167. package/dist/{protocol-BPZaNqBo.d.mts → protocol-4H7V_3Os.d.mts} +1 -1
  168. package/dist/{protocol-CfaUwNs8.mjs → protocol-RNP0u7UY.mjs} +9 -3
  169. package/dist/{provision-BfaLiWbj.mjs → provision-BnSSkiED.mjs} +119 -866
  170. package/dist/{requests-C7Oeoh5u.mjs → requests-7W1Pygt2.mjs} +5 -5
  171. package/dist/resolve-project-PnhzMtY6.mjs +1 -0
  172. package/dist/resolve-project-WpwkCB_c.mjs +48 -0
  173. package/dist/{rollback-DVAtrLAl.mjs → rollback-BcASVnwP.mjs} +8 -18
  174. package/dist/{route-types-CbtsIeFn.mjs → route-types-BZi26DVS.mjs} +9 -91
  175. package/dist/routing-assets-VkrKIbxE.mjs +139 -0
  176. package/dist/{runner-DMBKSrRk.mjs → runner-CabsQ-iM.mjs} +22 -34
  177. package/dist/runner-So9mYfcm.mjs +1 -0
  178. package/dist/runner-mysql-BhRaONkO.mjs +146 -0
  179. package/dist/runner-mysql-DWwE8jKi.mjs +1 -0
  180. package/dist/{runner-pg-DV8p_zjA.mjs → runner-pg-BRemq_GX.mjs} +3 -3
  181. package/dist/runner-pg-_Xncr3H5.mjs +1 -0
  182. package/dist/runtime/ai.mjs +23 -25
  183. package/dist/runtime/auth-client-react.mjs +1 -2
  184. package/dist/runtime/auth-client-solid.mjs +1 -2
  185. package/dist/runtime/auth-client-svelte.mjs +1 -2
  186. package/dist/runtime/auth-client-vue.mjs +1 -2
  187. package/dist/runtime/auth-client.mjs +1 -2
  188. package/dist/runtime/auth.mjs +1 -2
  189. package/dist/runtime/better-auth-mysql.d.mts +2 -5
  190. package/dist/runtime/better-auth-mysql.mjs +9 -31
  191. package/dist/runtime/better-auth-pg.d.mts +2 -5
  192. package/dist/runtime/better-auth-pg.mjs +6 -32
  193. package/dist/runtime/better-auth.d.mts +2 -4
  194. package/dist/runtime/better-auth.mjs +9 -19
  195. package/dist/runtime/db.mjs +6 -2
  196. package/dist/runtime/durable.d.mts +18 -1
  197. package/dist/runtime/durable.mjs +26 -2
  198. package/dist/runtime/email/testing.d.mts +1 -1
  199. package/dist/runtime/email/testing.mjs +9 -23
  200. package/dist/runtime/email-protocol.d.mts +12 -0
  201. package/dist/runtime/email-protocol.mjs +1 -70
  202. package/dist/runtime/email.d.mts +1 -1
  203. package/dist/runtime/email.mjs +79 -221
  204. package/dist/runtime/env-public.d.mts +1 -1
  205. package/dist/runtime/env-public.mjs +12 -38
  206. package/dist/runtime/env.d.mts +1 -12
  207. package/dist/runtime/env.mjs +1 -2
  208. package/dist/runtime/handler.d.mts +1 -1
  209. package/dist/runtime/handler.mjs +1 -1
  210. package/dist/runtime/isr.mjs +1 -1
  211. package/dist/runtime/kv.mjs +1 -1
  212. package/dist/runtime/limits.mjs +1 -2
  213. package/dist/runtime/live-client.d.mts +3 -2
  214. package/dist/runtime/live-server.d.mts +2 -1
  215. package/dist/runtime/live-server.mjs +1 -16
  216. package/dist/runtime/live.d.mts +1 -1
  217. package/dist/runtime/live.mjs +1 -2
  218. package/dist/runtime/log.d.mts +2 -1
  219. package/dist/runtime/migration-handler-mysql.d.mts +2 -2
  220. package/dist/runtime/migration-handler-mysql.mjs +39 -8
  221. package/dist/runtime/migration-handler-pg.d.mts +2 -2
  222. package/dist/runtime/migration-handler-pg.mjs +1 -1
  223. package/dist/runtime/migration-handler.d.mts +2 -2
  224. package/dist/runtime/migration-handler.mjs +1 -470
  225. package/dist/runtime/queues.mjs +1 -1
  226. package/dist/runtime/remote/binding-handler.mjs +62 -62
  227. package/dist/runtime/remote/index.mjs +16 -77
  228. package/dist/runtime/response.mjs +1 -2
  229. package/dist/runtime/route-url.mjs +1 -2
  230. package/dist/runtime/routing.d.mts +3 -5
  231. package/dist/runtime/routing.mjs +82 -218
  232. package/dist/runtime/sandbox-container.d.mts +2 -2
  233. package/dist/runtime/sandbox-container.mjs +1 -2
  234. package/dist/runtime/sandbox.d.mts +2 -2
  235. package/dist/runtime/sandbox.mjs +13 -6
  236. package/dist/runtime/seed.d.mts +2 -1
  237. package/dist/runtime/sse.mjs +1 -2
  238. package/dist/runtime/storage.mjs +1 -1
  239. package/dist/runtime/validator.d.mts +1 -1
  240. package/dist/runtime/validator.mjs +1 -2
  241. package/dist/runtime/ws-server.d.mts +4 -4
  242. package/dist/runtime/ws-server.mjs +6 -28
  243. package/dist/runtime/ws.d.mts +1 -1
  244. package/dist/{sandbox-container-Bo0eiFKz.d.mts → sandbox-container-ChQRum-j.d.mts} +3 -1
  245. package/dist/{sandbox-container-C6ItmVuN.mjs → sandbox-container-a9LRUtii.mjs} +13 -2
  246. package/dist/{sandbox-C5LFoJMf.d.mts → sandbox-q3waMc2T.d.mts} +1 -1
  247. package/dist/{scan-C3uDzz6J.mjs → scan-C0BMdmEd.mjs} +84 -7
  248. package/dist/{secret-BvtB7IjY.mjs → secret-bg73f1Ge.mjs} +63 -81
  249. package/dist/{serialize-BPvnNQuA.mjs → serialize-BtQyaYoC.mjs} +10 -4
  250. package/dist/{skills-BgVMvQdy.mjs → skills-C_yRTg0g.mjs} +3 -3
  251. package/dist/{subcommand-prompt-BSlnD1fI.mjs → subcommand-prompt-Bm3ZlYgA.mjs} +39 -44
  252. package/dist/sveltekit.d.mts +2 -1
  253. package/dist/sveltekit.mjs +1 -1
  254. package/dist/validate-BQFdf0Pi.mjs +1 -0
  255. package/dist/{validate-C9qJArv7.mjs → validate-CheZGRE7.mjs} +4 -8
  256. package/dist/version-metadata-DIrqEHQo.mjs +73 -0
  257. package/dist/{wrangler-D9KTuqnv.mjs → wrangler-BYs07Rxy.mjs} +119 -378
  258. package/dist/wrapper-CwhpNWtH.mjs +663 -0
  259. package/dist/{ws-CChrrAU-.d.mts → ws-aKVYB-fA.d.mts} +1 -1
  260. package/dist/yarn-pnp-DLbEFMT0.mjs +92 -0
  261. package/docs/guide/ai.md +8 -2
  262. package/docs/guide/auth.md +2 -0
  263. package/docs/guide/database/mysql.md +14 -3
  264. package/docs/guide/database/postgresql.md +2 -0
  265. package/docs/guide/database.md +3 -5
  266. package/docs/guide/durable-state.md +32 -4
  267. package/docs/guide/platform/administration/access.md +4 -0
  268. package/docs/guide/platform/administration/connected-apps.md +55 -0
  269. package/docs/guide/platform/installation/credentials.md +21 -3
  270. package/docs/guide/platform/installation/domains.md +1 -1
  271. package/docs/guide/platform/installation/maintenance.md +38 -1
  272. package/docs/guide/platform/installation/prerequisites.md +6 -2
  273. package/docs/guide/platform/installation/setup.md +23 -1
  274. package/docs/guide/platform/installation/uninstall.md +6 -1
  275. package/docs/guide/quickstart.md +2 -0
  276. package/docs/guide/sandboxes.md +3 -1
  277. package/docs/guide/self-hosted-platform.md +1 -1
  278. package/docs/integrations/cloudflare.md +2 -2
  279. package/docs/integrations/frameworks/analog.md +3 -11
  280. package/docs/integrations/frameworks/nuxt.md +7 -10
  281. package/docs/integrations/nodejs-bun-deno.md +2 -0
  282. package/docs/reference/api/deploy.md +23 -0
  283. package/docs/reference/api/pages.md +2 -0
  284. package/docs/reference/api.md +3 -1
  285. package/docs/reference/cli/database.md +9 -3
  286. package/docs/reference/cli/platform-installation.md +19 -7
  287. package/docs/reference/cli/setup.md +2 -0
  288. package/docs/reference/config.md +2 -0
  289. package/package.json +39 -36
  290. package/sandbox.Dockerfile +1 -1
  291. package/skills/void/SKILL.md +2 -1
  292. package/dist/auth-LMJcNESe.mjs +0 -2
  293. package/dist/cf-build-output-H9a97vME.mjs +0 -2
  294. package/dist/cf-user-agent-lKblH3zU.mjs +0 -17
  295. package/dist/client-tso2OfcG.mjs +0 -2
  296. package/dist/cloudflare-operations-BlYLlowZ.mjs +0 -2
  297. package/dist/collect-DLyFDiKW.mjs +0 -2
  298. package/dist/config-5r-YpMC-.mjs +0 -2
  299. package/dist/config-B_ggY-IO.mjs +0 -89
  300. package/dist/config-BtSFvXZx.mjs +0 -2
  301. package/dist/config-write-AHGesphx.mjs +0 -61
  302. package/dist/create-project-qFDC45zg.mjs +0 -2
  303. package/dist/deploy-Bqe1PYBw.mjs +0 -10458
  304. package/dist/deploy-VsWsVQkw.mjs +0 -2
  305. package/dist/dev-inbox-CK-UuPob.mjs +0 -297
  306. package/dist/discover-EDUf6JJw.mjs +0 -2
  307. package/dist/dist-Bx1z6Eva.mjs +0 -2
  308. package/dist/dist-_UUlL6bg.mjs +0 -2
  309. package/dist/env-validation-CrVNjsPm.mjs +0 -2
  310. package/dist/env-validation-Dxdx_5wo.mjs +0 -951
  311. package/dist/gen-dA9hW7AV.mjs +0 -2
  312. package/dist/head-client-DzmJGN4C.mjs +0 -90
  313. package/dist/help-DfQYVfGY.mjs +0 -2
  314. package/dist/login-mx_ydhmp.mjs +0 -2
  315. package/dist/migrate-BHp07yJE.mjs +0 -2
  316. package/dist/operator-cmd-CwBB-1yb.mjs +0 -2
  317. package/dist/pages/head-client.d.mts +0 -13
  318. package/dist/pages/head-client.mjs +0 -2
  319. package/dist/plan-CH2G51je.mjs +0 -2
  320. package/dist/platform-args-D4E1PjVw.mjs +0 -2
  321. package/dist/platform-cmd-BbmJiq5O.mjs +0 -2
  322. package/dist/platform-lifecycle-ByAlpkhV.mjs +0 -2
  323. package/dist/platform-management-CBOT4BSM.mjs +0 -2
  324. package/dist/prepare-DRUV-g3X.mjs +0 -2
  325. package/dist/project-DedqCp59.mjs +0 -2
  326. package/dist/project-slug-DofjTFd-.mjs +0 -2
  327. package/dist/provision-Wu9ZBk9L.mjs +0 -2
  328. package/dist/resolve-project-BIeYs9Cw.mjs +0 -2
  329. package/dist/resolve-project-CP8rZs_p.mjs +0 -28
  330. package/dist/runner-9wjsSZx-.mjs +0 -2
  331. package/dist/runner-mysql-CEzKtmFb.mjs +0 -54
  332. package/dist/runner-mysql-CkFqZ6CE.mjs +0 -2
  333. package/dist/runner-pg-BGYRFdRp.mjs +0 -2
  334. package/dist/runtime/env-helpers.d.mts +0 -2
  335. package/dist/runtime/env-helpers.mjs +0 -2
  336. package/dist/validate-BJr9LfXy.mjs +0 -2
  337. package/dist/yarn-pnp-CUX_iTPA.mjs +0 -188
@@ -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-Cjv2Qf0r.mjs";
2
- import { t as cfAccessHeaders } from "./cf-access-TWNzXltp.mjs";
3
- import { n as ensurePlatformAccessToken } from "./cf-access-BcIBSKqG.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-DbDv4vtE.mjs";
7
- import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-BEZ_u0Cz.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-DzCwqhFq.mjs";
9
- import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-CuuVDhyt.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
+ import { A as confirm, tt as isCancel } from "./dist-BVdsO7Py.mjs";
5
+ import { m as printSuccess } from "./output-Ba6ZbrzY.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 { G as PlatformCloudflareClient, H as parsePlatformAccessSetupSpec, R as resolvePlatformCloudflareCredential, U as preparePlatformAccessSetup, V as checkpointPlatformAccessResources, n as resolvePlatformInstallDatabaseUrl, u as acquirePlatformDatabaseLifecycleLock } from "./platform-lifecycle-DBiS0cJd.mjs";
9
+ import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-DhEFdQAf.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-Cjv2Qf0r.mjs";
2
- import { u as openBrowser } from "./auth-Dn2vw-SG.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-BEZ_u0Cz.mjs";
6
- import { K as PlatformCloudflareClient, V as resolvePlatformCloudflareCredential, c as acquirePlatformDatabaseLifecycleLockConnection, l as platformDatabaseClientUrl, n as resolvePlatformInstallDatabaseUrl } from "./platform-lifecycle-DzCwqhFq.mjs";
7
- import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-CuuVDhyt.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
+ import { A as confirm, tt as isCancel } from "./dist-BVdsO7Py.mjs";
4
+ import { l as formatUrl, m as printSuccess } from "./output-Ba6ZbrzY.mjs";
5
+ import { a as resolveOperatorOrigin } from "./operator-auth-Cr2zCc-J.mjs";
6
+ import { G as PlatformCloudflareClient, R as resolvePlatformCloudflareCredential, d as acquirePlatformDatabaseLifecycleLockConnection, f as platformDatabaseClientUrl, n as resolvePlatformInstallDatabaseUrl } from "./platform-lifecycle-DBiS0cJd.mjs";
7
+ import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-DhEFdQAf.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,9 +1,9 @@
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-Cjv2Qf0r.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-BcIBSKqG.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";
6
- import { n as readPlatformDiscoveryResponse, t as PlatformDisabledError } from "./platform-discovery-DIYz8V63.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
+ import { K as select, L as log, X as text, tt as isCancel } from "./dist-BVdsO7Py.mjs";
5
+ import { f as import_picocolors, l as formatUrl, m as printSuccess } from "./output-Ba6ZbrzY.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();
@@ -12,7 +12,7 @@ function normalizePlatformInputUrl(input) {
12
12
  }
13
13
  async function discoverPlatform(input, fetcher = fetch) {
14
14
  const apiUrl = normalizePlatformInputUrl(input);
15
- ensureCloudflaredToken(apiUrl);
15
+ ensurePlatformAccessToken(apiUrl);
16
16
  const request = () => fetcher(`${apiUrl}/.well-known/void-platform`, {
17
17
  headers: {
18
18
  Accept: "application/json",
@@ -66,7 +66,7 @@ async function resolveConnection(selector) {
66
66
  function showPlatform(connection, installations) {
67
67
  const slug = platformConnectionSlug(connection, installations);
68
68
  console.log(` ${import_picocolors.default.bold(connection.displayName)}${slug ? ` ${import_picocolors.default.dim(`(${slug})`)}` : ""}`);
69
- console.log(` ${connection.apiUrl}`);
69
+ console.log(` ${formatUrl(connection.apiUrl)}`);
70
70
  if (connection.applicationDomain) console.log(connection.applicationDomain.endsWith(".workers.dev") ? " apps: workers.dev (testing)" : ` apps: *.${connection.applicationDomain}`);
71
71
  }
72
72
  function saveDiscoveredPlatform(discovery) {
@@ -96,19 +96,19 @@ async function runPlatformCommand(_root, args) {
96
96
  }]
97
97
  });
98
98
  if (isCancel(group)) return;
99
- const { parsePlatformArgs } = await import("./platform-args-D4E1PjVw.mjs");
99
+ const { parsePlatformArgs } = await import("./platform-args-B0HeTh0C.mjs");
100
100
  return runPlatformCommand(_root, parsePlatformArgs(["config", group]));
101
101
  }
102
- const { runPlatformPlansConfig } = await import("./platform-plans-config-CN-heS4q.mjs");
102
+ const { runPlatformPlansConfig } = await import("./platform-plans-config-BWn1S2Rv.mjs");
103
103
  await runPlatformPlansConfig(args);
104
104
  return;
105
105
  }
106
- const { runPlatformAuthConfig } = await import("./platform-auth-config-CkSx3usH.mjs");
106
+ const { runPlatformAuthConfig } = await import("./platform-auth-config-Z16-I8nT.mjs");
107
107
  await runPlatformAuthConfig(args);
108
108
  return;
109
109
  }
110
110
  if (args.subcommand === "operator") {
111
- const { runOperatorCommand } = await import("./operator-cmd-CwBB-1yb.mjs");
111
+ const { runOperatorCommand } = await import("./operator-cmd-D6gnZsnK.mjs");
112
112
  await runOperatorCommand(args);
113
113
  return;
114
114
  }
@@ -166,8 +166,8 @@ async function runPlatformCommand(_root, args) {
166
166
  throw error;
167
167
  }
168
168
  log.info(`${discovery.displayName} is reachable.`);
169
- console.log(`API: ${discovery.apiUrl}`);
170
- console.log(`Proxy: ${discovery.proxyUrl}`);
169
+ console.log(`API: ${formatUrl(discovery.apiUrl)}`);
170
+ console.log(`Proxy: ${formatUrl(discovery.proxyUrl)}`);
171
171
  if (discovery.applicationRouting?.workersDev && !discovery.applicationRouting.zoneName) {
172
172
  console.log("Application domain: workers.dev (testing)");
173
173
  console.log("Add a domain: void platform domain set <domain>");
@@ -176,7 +176,7 @@ async function runPlatformCommand(_root, args) {
176
176
  console.log(`Capabilities: ${Object.entries(discovery.capabilities).filter(([, enabled]) => enabled).map(([name]) => name).join(", ")}`);
177
177
  return;
178
178
  }
179
- const { runPlatformLifecycleCommand } = await import("./platform-lifecycle-ByAlpkhV.mjs");
179
+ const { runPlatformLifecycleCommand } = await import("./platform-lifecycle-u9pMOvxC.mjs");
180
180
  await runPlatformLifecycleCommand(args);
181
181
  }
182
182
  function showSavedInstallationStatus(manifest) {
@@ -187,7 +187,7 @@ function showSavedInstallationStatus(manifest) {
187
187
  console.log(`Saved operation: ${operation.action} — ${operation.phase}`);
188
188
  console.log(`Runtime: ${operation.fromVersion ?? "new installation"} → ${operation.toVersion}`);
189
189
  }
190
- 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`)}`);
191
191
  }
192
192
  //#endregion
193
193
  export { saveDiscoveredPlatform as i, promptPlatformUrl as n, runPlatformCommand as r, discoverPlatform as t };
@@ -0,0 +1 @@
1
+ export { t as discoverPlatform, r as runPlatformCommand } from "./platform-cmd-DaAOiWTl.mjs";
@@ -1,4 +1,4 @@
1
- import { c as normalizePlatformApiUrl } from "./platform-registry-Cjv2Qf0r.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-Cjv2Qf0r.mjs";
2
- import { t as cfAccessHeaders } from "./cf-access-TWNzXltp.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-DzCwqhFq.mjs";
6
- import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest, o as resolveInstalledPlatformManifest } from "./platform-management-CuuVDhyt.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
+ import { A as confirm, X as text, tt as isCancel } from "./dist-BVdsO7Py.mjs";
4
+ import { m as printSuccess, p as note } from "./output-Ba6ZbrzY.mjs";
5
+ import { G as PlatformCloudflareClient, L as assertPlatformOperatorCredentialCanApplyPlan, R as resolvePlatformCloudflareCredential, S as recordResource, T as createPlatformInstallPlan, n as resolvePlatformInstallDatabaseUrl, t as assertNoninteractivePlatformMutationAcknowledged, u as acquirePlatformDatabaseLifecycleLock, w as recordPlatformWorkerTraffic, y as createPlatformHealthProbeToken } from "./platform-lifecycle-DBiS0cJd.mjs";
6
+ import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest, o as resolveInstalledPlatformManifest } from "./platform-management-DhEFdQAf.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) {