void 0.22.0 → 0.23.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 (276) hide show
  1. package/README.md +5 -1
  2. package/dist/{account-cmd-CjyxcGkM.mjs → account-cmd-C84Ee8cO.mjs} +4 -4
  3. package/dist/{scan-ClYmX3sa.mjs → application-analysis-BVsVqc11.mjs} +135 -18
  4. package/dist/application-routing-B7QEjqSR.mjs +27 -0
  5. package/dist/{auth-CZuiVsFh.mjs → auth-CCjt0hcq.mjs} +1 -1
  6. package/dist/{auth-DLNN0D3Z.mjs → auth-CSkdO2Bb.mjs} +4 -47
  7. package/dist/{auth-link-BLO4ptzo.mjs → auth-link-CioEg6uY.mjs} +4 -4
  8. package/dist/{auth-router-ZUg9MF_U.mjs → auth-router-BsR981d4.mjs} +4 -4
  9. package/dist/{better-auth-shared-rsBGBvWJ.mjs → better-auth-shared-hy6RPh9W.mjs} +13 -2
  10. package/dist/{build-cmd-BxR5FROK.mjs → build-cmd-LzvNJORH.mjs} +17 -5
  11. package/dist/{cache-D0sWhgKI.mjs → cache-C4MvnrMH.mjs} +2 -2
  12. package/dist/{cancel-deploy-D4NUqFbi.mjs → cancel-deploy-abUxpP2n.mjs} +2 -2
  13. package/dist/{cf-build-output-BJ6yGEIS.mjs → cf-build-output-BPqOT964.mjs} +2 -1
  14. package/dist/cf-build-output-_0HNWysu.mjs +2 -0
  15. package/dist/cli/cli.mjs +80 -455
  16. package/dist/cli/{cf-compat.mjs → cloudflare-operation-process.mjs} +442 -421
  17. package/dist/cli/env-schema-probe.d.mts +2 -1
  18. package/dist/cli/env-schema-probe.mjs +3 -3
  19. package/dist/client-Cu7jWiF1.mjs +2 -0
  20. package/dist/{client-BTZ3XkrB.mjs → client-RV8NVeB8.mjs} +140 -21
  21. package/dist/{cloudflare-auth-DQkqoMYa.mjs → cloudflare-auth-Qdc7tw8F.mjs} +41 -38
  22. package/dist/{cloudflare-cmd-BKlfGHAy.mjs → cloudflare-cmd-BcrVyTmJ.mjs} +5 -5
  23. package/dist/cloudflare-config-Bktvwtpf.mjs +182 -0
  24. package/dist/{cloudflare-connect-Ctmrw579.mjs → cloudflare-connect-B8uPZ4nx.mjs} +3 -3
  25. package/dist/{cloudflare-operations-BT6OWFBk.mjs → cloudflare-operations-AiWashgg.mjs} +1 -1
  26. package/dist/{cloudflare-operations-B9tzgjmf.mjs → cloudflare-operations-fxHb-byx.mjs} +116 -172
  27. package/dist/{preset-UHj9ARyP.mjs → cloudflare-process-B-wekeR6.mjs} +93 -6
  28. package/dist/{config-VavjpDnp.d.mts → config-BMHb8RCj.d.mts} +1 -0
  29. package/dist/config-C_XRIPx2.mjs +89 -0
  30. package/dist/config-entry.d.mts +1 -1
  31. package/dist/{connect-Dg-WkW-C.mjs → connect-Bd4kJd9U.mjs} +5 -5
  32. package/dist/{create-project-DdoqwFLF.mjs → create-project-Boczwj5r.mjs} +1 -1
  33. package/dist/{create-project-l9J7pbtm.mjs → create-project-bMf6ffLZ.mjs} +2 -2
  34. package/dist/{db-gp2sCXyN.mjs → db-8uG64XLl.mjs} +21 -21
  35. package/dist/{delete-TTedbH6B.mjs → delete-NvbiyeJf.mjs} +2 -2
  36. package/dist/{deploy-CH-o2CaZ.mjs → deploy-DzAIwqNU.mjs} +908 -582
  37. package/dist/{deploy-B19L2Bra.mjs → deploy-bjXdFCtn.mjs} +1 -1
  38. package/dist/{domain-JRF59P_r.mjs → domain-y5Tvydvo.mjs} +3 -3
  39. package/dist/{email-Bo6G9LOZ.mjs → email-B3umsW75.mjs} +13 -28
  40. package/dist/{env-BYOrWQnv.mjs → env-BS6qYHDb.mjs} +4 -4
  41. package/dist/{env-public-BxU_0yTL.d.mts → env-public-BX_r8HR6.d.mts} +1 -1
  42. package/dist/{env-validation-BB4GkLxn.mjs → env-validation-BPn7vk-V.mjs} +18 -71
  43. package/dist/{env-validation-BXge7uyK.mjs → env-validation-DbTg7-ar.mjs} +1 -1
  44. package/dist/{fetch-CXDChK7B.mjs → fetch-BIZJh7vR.mjs} +2 -2
  45. package/dist/{fetch-stream-AOByI7Ki.mjs → fetch-stream-IvCYKyQL.mjs} +24 -4
  46. package/dist/{gen-sCtlCOdA.mjs → gen-B580--vC.mjs} +2 -2
  47. package/dist/gen-BVaUUumi.mjs +2 -0
  48. package/dist/{github-cmd-0-7PexDq.mjs → github-cmd-v45BdfKX.mjs} +2 -2
  49. package/dist/{handler-HEcZsaij.d.mts → handler-CZ4nAylQ.d.mts} +1 -1
  50. package/dist/help-DofyZuY7.mjs +2 -0
  51. package/dist/{help-GKtwl07I.mjs → help-daGKjXGk.mjs} +229 -747
  52. package/dist/index.d.mts +1 -1
  53. package/dist/index.mjs +288 -1502
  54. package/dist/info-B97bTX9N.mjs +113 -0
  55. package/dist/{init-FZx3Elvz.mjs → init-Bvy7zrBo.mjs} +46 -15
  56. package/dist/limits-Bq5LG8Id.d.mts +27 -0
  57. package/dist/limits-Cjuk2VPm.mjs +68 -0
  58. package/dist/{link-BrQfb_CU.mjs → link-CDqqCjFl.mjs} +3 -3
  59. package/dist/{list-D44jmIAM.mjs → list-CZj0dzKY.mjs} +3 -3
  60. package/dist/{live-CKJlvlNp.d.mts → live-Chw1eIMv.d.mts} +1 -1
  61. package/dist/{local-d1-Bg9OzEEO.mjs → local-d1-2CMnpuW_.mjs} +2 -2
  62. package/dist/login-DYt_An22.mjs +2 -0
  63. package/dist/{login-CAsAsQ-_.mjs → login-UZKFM_u7.mjs} +3 -3
  64. package/dist/{logs-BjKvFnVM.mjs → logs-CUZ6t9t3.mjs} +3 -3
  65. package/dist/migrate-8_2u55MD.mjs +2 -0
  66. package/dist/{migrate-BPITvDJN.mjs → migrate-DHul7PRV.mjs} +2 -1
  67. package/dist/{node-Dt7z256D.mjs → node-BkyRWRx8.mjs} +1 -1
  68. package/dist/operator-args-CLgKGlwU.mjs +690 -0
  69. package/dist/{operator-cmd-BK5CCiT9.mjs → operator-cmd-DBA6dl0m.mjs} +68 -22
  70. package/dist/pages/client.d.mts +34 -2
  71. package/dist/pages/client.mjs +59 -3
  72. package/dist/pages/index.d.mts +1 -1
  73. package/dist/pages/index.mjs +1 -1
  74. package/dist/pages/islands-plugin.mjs +1 -1
  75. package/dist/pages/protocol.d.mts +2 -2
  76. package/dist/pages/protocol.mjs +2 -308
  77. package/dist/{parse-filename-DioPHiR9.mjs → parse-filename-CUbj-1MP.mjs} +35 -1
  78. package/dist/plan-D1Q5rf-r.mjs +2 -0
  79. package/dist/plan-NPpwZ_kc.mjs +58 -0
  80. package/dist/platform-args-BJdRtlLq.mjs +506 -0
  81. package/dist/platform-args-D3RXyR6h.mjs +2 -0
  82. package/dist/{platform-auth-config-BlN8xTdD.mjs → platform-auth-config-B56E9YP1.mjs} +3 -3
  83. package/dist/{platform-auth-protection-7d5aV2Jg.mjs → platform-auth-protection-BDWO_aER.mjs} +2 -2
  84. package/dist/{platform-auth-recovery-Dxij8ZbR.mjs → platform-auth-recovery-1gg4CSRe.mjs} +3 -3
  85. package/dist/{platform-cmd-E0FuL212.mjs → platform-cmd-Bt-1w6pY.mjs} +1 -1
  86. package/dist/{platform-cmd-B3hwKrFK.mjs → platform-cmd-DMcQStSc.mjs} +24 -3
  87. package/dist/{platform-domain-D6Xcy9ZX.mjs → platform-domain-BNkcz0OB.mjs} +2 -2
  88. package/dist/{platform-lifecycle-k0E0xoxx.mjs → platform-lifecycle-9OyBALhH.mjs} +327 -215
  89. package/dist/{platform-lifecycle-DMh_qrry.mjs → platform-lifecycle-BE6C_jxh.mjs} +1 -1
  90. package/dist/{platform-management-Brz_BDiT.mjs → platform-management-CjwLVQwN.mjs} +6 -3
  91. package/dist/{platform-management-DOtss0BN.mjs → platform-management-CnyTdcWX.mjs} +1 -1
  92. package/dist/platform-plans-config-BNGKGr4P.mjs +359 -0
  93. package/dist/{platform-recovery-BvtcXON5.mjs → platform-recovery-D6KSpuFm.mjs} +2 -2
  94. package/dist/{plugin-inference-BMfKRSqE.mjs → plugin-inference-CXWnn79A.mjs} +174 -64
  95. package/dist/{prepare-C-6YZyyg.mjs → prepare-B5Mkic5u.mjs} +1 -1
  96. package/dist/{prepare-CRhJbVrG.mjs → prepare-DOsL0CC9.mjs} +4 -20
  97. package/dist/prepare-cgvDMtSb.mjs +2 -0
  98. package/dist/{project-cmd-BZLCqOqw.mjs → project-cmd-CNzrqvBv.mjs} +16 -16
  99. package/dist/{project-team-BvgM0WoX.mjs → project-team-DQOWPfQT.mjs} +2 -2
  100. package/dist/{project-token-l5DqK6Az.mjs → project-token-CTDYU0Cc.mjs} +2 -2
  101. package/dist/{project-zero-trust-v6Mvpp8y.mjs → project-zero-trust-BNAkW-_0.mjs} +2 -2
  102. package/dist/{protocol-BBa6cstI.d.mts → protocol-CjF_iI9X.d.mts} +2 -2
  103. package/dist/protocol-U7bfjHmA.mjs +331 -0
  104. package/dist/{provision-Fr9pRqce.mjs → provision-C4ORE7G7.mjs} +1 -1
  105. package/dist/{provision-C4IGqkBf.mjs → provision-CJFgTZY8.mjs} +89 -198
  106. package/dist/{requests-DN-BbNiM.mjs → requests-MhxYnau8.mjs} +2 -2
  107. package/dist/resource-name-C7LVpcRm.mjs +11 -0
  108. package/dist/{rollback-D7rzSaZM.mjs → rollback-CJ6iSDoU.mjs} +3 -3
  109. package/dist/route-url-CG7U-cRN.mjs +15 -0
  110. package/dist/{runner-B8wXwWlo.mjs → runner-CXA9Fh8h.mjs} +1 -1
  111. package/dist/{runner-p-dMs2UN.mjs → runner-Ol0TNjk6.mjs} +2 -2
  112. package/dist/runtime/ai.d.mts +12 -8
  113. package/dist/runtime/ai.mjs +84 -17
  114. package/dist/runtime/better-auth-mysql.mjs +1 -1
  115. package/dist/runtime/better-auth-pg.mjs +1 -1
  116. package/dist/runtime/better-auth.mjs +1 -1
  117. package/dist/runtime/client-react.mjs +2 -2
  118. package/dist/runtime/client-solid.mjs +2 -2
  119. package/dist/runtime/client-svelte.mjs +2 -2
  120. package/dist/runtime/client-vue.mjs +2 -2
  121. package/dist/runtime/client.mjs +2 -2
  122. package/dist/runtime/durable.d.mts +3 -1
  123. package/dist/runtime/durable.mjs +4 -1
  124. package/dist/runtime/email/testing.mjs +1 -1
  125. package/dist/runtime/env-public.d.mts +1 -1
  126. package/dist/runtime/fetch-stream.mjs +1 -1
  127. package/dist/runtime/fetch.mjs +1 -1
  128. package/dist/runtime/handler.d.mts +1 -1
  129. package/dist/runtime/kv.mjs +0 -1
  130. package/dist/runtime/limits.d.mts +2 -0
  131. package/dist/runtime/limits.mjs +2 -0
  132. package/dist/runtime/live-client.d.mts +1 -1
  133. package/dist/runtime/live-server.mjs +25 -16
  134. package/dist/runtime/live.d.mts +1 -1
  135. package/dist/runtime/migration-handler.mjs +62 -42
  136. package/dist/runtime/route-url.d.mts +4 -0
  137. package/dist/runtime/route-url.mjs +2 -0
  138. package/dist/runtime/routing.d.mts +180 -0
  139. package/dist/runtime/routing.mjs +1082 -0
  140. package/dist/runtime/sandbox-container.d.mts +1 -1
  141. package/dist/runtime/sandbox-container.mjs +1 -1
  142. package/dist/runtime/sandbox.d.mts +3 -3
  143. package/dist/runtime/sandbox.mjs +75 -45
  144. package/dist/runtime/sse.mjs +1 -1
  145. package/dist/runtime/validator.d.mts +1 -1
  146. package/dist/runtime/ws-server.d.mts +4 -2
  147. package/dist/runtime/ws-server.mjs +27 -2
  148. package/dist/runtime/ws.d.mts +2 -2
  149. package/dist/runtime/ws.mjs +8 -6
  150. package/dist/{sandbox-qpNBT8a3.d.mts → sandbox-XZAqzFlG.d.mts} +11 -8
  151. package/dist/{sandbox-container-DdNEBfCc.d.mts → sandbox-container-Bo0eiFKz.d.mts} +2 -1
  152. package/dist/{sandbox-container-4fdqLnyb.mjs → sandbox-container-C6ItmVuN.mjs} +4 -2
  153. package/dist/{scan-4tfN-PSn.mjs → scan-C7okrLyM.mjs} +4 -35
  154. package/dist/{secret-BOtOl_cb.mjs → secret-Dli5fP0B.mjs} +4 -4
  155. package/dist/{sse-BaC1jXko.mjs → sse-CQNaDFFV.mjs} +6 -3
  156. package/dist/validate-Dq_L3s0S.mjs +2 -0
  157. package/dist/{validate-CIUwFpjB.mjs → validate-ctOrgiS3.mjs} +2 -1
  158. package/dist/{wrangler-DQF1vKyf.mjs → wrangler-7K-bW_DL.mjs} +8 -239
  159. package/dist/{ws-BoY7vQML.d.mts → ws-CL1w7GXU.d.mts} +13 -2
  160. package/package.json +15 -8
  161. package/skills/migrate-vite-cloudflare-to-void/SKILL.md +34 -157
  162. package/skills/void/SKILL.md +50 -135
  163. package/skills/void/docs/guide/ai.md +94 -84
  164. package/skills/void/docs/guide/app-types.md +3 -32
  165. package/skills/void/docs/guide/auth.md +12 -116
  166. package/skills/void/docs/guide/database/d1.md +9 -54
  167. package/skills/void/docs/guide/database/mysql.md +1 -1
  168. package/skills/void/docs/guide/database/postgresql.md +5 -26
  169. package/skills/void/docs/guide/database.md +23 -75
  170. package/skills/void/docs/guide/deployment.md +27 -113
  171. package/skills/void/docs/guide/durable-state.md +43 -18
  172. package/skills/void/docs/guide/edge/headers.md +3 -47
  173. package/skills/void/docs/guide/edge/prerendering.md +5 -20
  174. package/skills/void/docs/guide/edge/redirects.md +11 -64
  175. package/skills/void/docs/guide/edge/revalidation.md +5 -18
  176. package/skills/void/docs/guide/edge/rewrites.md +56 -284
  177. package/skills/void/docs/guide/edge/static-assets.md +22 -72
  178. package/skills/void/docs/guide/email/domains.md +112 -0
  179. package/skills/void/docs/guide/email/receiving.md +139 -0
  180. package/skills/void/docs/guide/email/sending.md +231 -0
  181. package/skills/void/docs/guide/email.md +13 -619
  182. package/skills/void/docs/guide/env-migration.md +11 -11
  183. package/skills/void/docs/guide/env-vars.md +9 -29
  184. package/skills/void/docs/guide/index.md +0 -15
  185. package/skills/void/docs/guide/jobs.md +3 -18
  186. package/skills/void/docs/guide/kv.md +5 -11
  187. package/skills/void/docs/guide/live.md +5 -56
  188. package/skills/void/docs/guide/pages-routing/actions-and-forms.md +78 -125
  189. package/skills/void/docs/guide/pages-routing/head.md +10 -10
  190. package/skills/void/docs/guide/pages-routing/islands.md +6 -36
  191. package/skills/void/docs/guide/pages-routing/layouts.md +6 -128
  192. package/skills/void/docs/guide/pages-routing/loaders.md +3 -19
  193. package/skills/void/docs/guide/pages-routing/markdown.md +13 -171
  194. package/skills/void/docs/guide/pages-routing/overview.md +7 -17
  195. package/skills/void/docs/guide/pages-routing/view-transitions.md +1 -1
  196. package/skills/void/docs/guide/platform/administration/access.md +1 -4
  197. package/skills/void/docs/guide/platform/administration/email.md +35 -8
  198. package/skills/void/docs/guide/platform/administration/operations.md +26 -4
  199. package/skills/void/docs/guide/platform/administration/plans.md +126 -0
  200. package/skills/void/docs/guide/platform/administration/projects.md +5 -2
  201. package/skills/void/docs/guide/platform/administration/zero-trust.md +23 -152
  202. package/skills/void/docs/guide/platform/development/runtime.md +3 -13
  203. package/skills/void/docs/guide/platform/development/schema-ci.md +0 -58
  204. package/skills/void/docs/guide/platform/installation/credentials.md +6 -4
  205. package/skills/void/docs/guide/platform/installation/domains.md +30 -2
  206. package/skills/void/docs/guide/platform/installation/first-deployment.md +2 -0
  207. package/skills/void/docs/guide/platform/installation/maintenance.md +3 -1
  208. package/skills/void/docs/guide/platform/installation/prerequisites.md +20 -15
  209. package/skills/void/docs/guide/platform/installation/setup.md +9 -5
  210. package/skills/void/docs/guide/platform-administration.md +1 -0
  211. package/skills/void/docs/guide/queues.md +7 -9
  212. package/skills/void/docs/guide/quickstart.md +38 -37
  213. package/skills/void/docs/guide/remote-dev.md +4 -9
  214. package/skills/void/docs/guide/sandboxes.md +29 -21
  215. package/skills/void/docs/guide/server-routing.md +9 -72
  216. package/skills/void/docs/guide/sse.md +4 -18
  217. package/skills/void/docs/guide/ssg.md +3 -15
  218. package/skills/void/docs/guide/ssr.md +14 -62
  219. package/skills/void/docs/guide/storage.md +9 -4
  220. package/skills/void/docs/guide/type-safety.md +3 -14
  221. package/skills/void/docs/guide/typed-fetch.md +3 -7
  222. package/skills/void/docs/guide/websockets.md +68 -40
  223. package/skills/void/docs/integrations/agents.md +3 -3
  224. package/skills/void/docs/integrations/cloudflare.md +85 -316
  225. package/skills/void/docs/integrations/frameworks/analog.md +5 -64
  226. package/skills/void/docs/integrations/frameworks/astro.md +4 -73
  227. package/skills/void/docs/integrations/frameworks/nuxt.md +5 -62
  228. package/skills/void/docs/integrations/frameworks/overview.md +11 -54
  229. package/skills/void/docs/integrations/frameworks/react-router.md +5 -60
  230. package/skills/void/docs/integrations/frameworks/sveltekit.md +6 -65
  231. package/skills/void/docs/integrations/frameworks/tanstack-start.md +4 -62
  232. package/skills/void/docs/integrations/nodejs-bun-deno.md +5 -69
  233. package/skills/void/docs/reference/api/auth.md +156 -0
  234. package/skills/void/docs/reference/api/client.md +87 -0
  235. package/skills/void/docs/reference/api/database.md +95 -0
  236. package/skills/void/docs/reference/api/durable.md +46 -0
  237. package/skills/void/docs/reference/api/env.md +50 -0
  238. package/skills/void/docs/reference/api/handlers.md +254 -0
  239. package/skills/void/docs/reference/api/pages.md +241 -0
  240. package/skills/void/docs/reference/api/plugin.md +39 -0
  241. package/skills/void/docs/reference/api/resources.md +109 -0
  242. package/skills/void/docs/reference/api/rewrites.md +76 -0
  243. package/skills/void/docs/reference/api/types.md +92 -0
  244. package/skills/void/docs/reference/api.md +56 -1218
  245. package/skills/void/docs/reference/cli/auth.md +88 -0
  246. package/skills/void/docs/reference/cli/database.md +128 -0
  247. package/skills/void/docs/reference/cli/deploy.md +85 -0
  248. package/skills/void/docs/reference/cli/domains.md +41 -0
  249. package/skills/void/docs/reference/cli/email.md +129 -0
  250. package/skills/void/docs/reference/cli/generate.md +116 -0
  251. package/skills/void/docs/reference/cli/github.md +189 -0
  252. package/skills/void/docs/reference/cli/platform-config.md +92 -0
  253. package/skills/void/docs/reference/cli/platform-email.md +81 -0
  254. package/skills/void/docs/reference/cli/platform-installation.md +127 -0
  255. package/skills/void/docs/reference/cli/platform-operations.md +90 -0
  256. package/skills/void/docs/reference/cli/platform-users.md +89 -0
  257. package/skills/void/docs/reference/cli/platform-zero-trust.md +45 -0
  258. package/skills/void/docs/reference/cli/platform.md +70 -0
  259. package/skills/void/docs/reference/cli/project.md +214 -0
  260. package/skills/void/docs/reference/cli/secrets.md +76 -0
  261. package/skills/void/docs/reference/cli/setup.md +70 -0
  262. package/skills/void/docs/reference/cli.md +32 -1682
  263. package/skills/void/docs/reference/config.md +12 -18
  264. package/skills/void/docs/reference/resource-inference.md +3 -58
  265. package/skills/void/docs/reference/structure.md +14 -41
  266. package/dist/canonical-json-DuDiiUsQ.mjs +0 -13
  267. package/dist/client-Czz8o5jP.mjs +0 -2
  268. package/dist/gen-CNJ62MM7.mjs +0 -2
  269. package/dist/help-CmZzxUba.mjs +0 -2
  270. package/dist/login-CGcRKEoi.mjs +0 -2
  271. package/dist/migrate-CYfbKkXh.mjs +0 -2
  272. package/dist/plan-BEZ8VJW0.mjs +0 -256
  273. package/dist/plan-DpuOr14e.mjs +0 -2
  274. package/dist/prepare-Bm3iq-u4.mjs +0 -2
  275. package/dist/validate-EKmJWxmy.mjs +0 -2
  276. /package/dist/cli/{cf-compat.d.mts → cloudflare-operation-process.d.mts} +0 -0
@@ -1,2 +1,2 @@
1
- import { r as runPlatformLifecycleCommand } from "./platform-lifecycle-k0E0xoxx.mjs";
1
+ import { r as runPlatformLifecycleCommand } from "./platform-lifecycle-9OyBALhH.mjs";
2
2
  export { runPlatformLifecycleCommand };
@@ -1,7 +1,7 @@
1
1
  import { a as listInstallationManifests, d as readInstallationRecoverySecrets, h as resolveInstallationManifest, m as removePlatformConnectionForInstallation, p as removeInstallationRecoverySecrets, t as acquirePlatformLifecycleLock, v as writeInstallationManifest } from "./platform-registry-QBa4DK32.mjs";
2
2
  import { E as confirm, I as select, N as note, P as outro, W as isCancel, j as log } from "./dist-CTBk70IR.mjs";
3
3
  import { i as createSpinner } from "./output-Dm_A4Tbv.mjs";
4
- import { A as PlatformCloudflareClient, C as revalidatePlatformInstallAction, E as resolvePlatformCloudflareCredential, M as hyperdriveOriginFromConnectionString, N as hyperdriveOriginMatches, P as verifyPlatformRuntimeTokenPermissions, S as platformProvisionIntentHash, T as assertPlatformOperatorCredentialCanApplyPlan, a as REMOTE_INSTALLATION_MANIFEST_KEY, b as formatPlatformInstallPlan, d as loadPlatformRuntime, g as assertProjectZeroTrustAllowsUninstall, h as resolveBootstrapGitHubId, j as hyperdriveOriginConfigHash, l as createPlatformInstallationSecrets, n as resolvePlatformInstallDatabaseUrl, o as acquirePlatformDatabaseLifecycleLock, p as readPlatformProjectZeroTrustState, t as assertNoninteractivePlatformMutationAcknowledged, u as installPlatform, v as trackedPlatformWorkerTraffic, w as platformDatabaseNameFromOwnerUrl, x as platformAdoptionIntentHash, y as createPlatformInstallPlan } from "./platform-lifecycle-k0E0xoxx.mjs";
4
+ import { A as PlatformCloudflareClient, C as revalidatePlatformInstallAction, E as resolvePlatformCloudflareCredential, M as hyperdriveOriginFromConnectionString, N as hyperdriveOriginMatches, P as verifyPlatformRuntimeTokenPermissions, S as platformProvisionIntentHash, T as assertPlatformOperatorCredentialCanApplyPlan, a as REMOTE_INSTALLATION_MANIFEST_KEY, b as formatPlatformInstallPlan, d as loadPlatformRuntime, g as assertProjectZeroTrustAllowsUninstall, h as resolveBootstrapGitHubId, j as hyperdriveOriginConfigHash, l as createPlatformInstallationSecrets, n as resolvePlatformInstallDatabaseUrl, o as acquirePlatformDatabaseLifecycleLock, p as readPlatformProjectZeroTrustState, t as assertNoninteractivePlatformMutationAcknowledged, u as installPlatform, v as trackedPlatformWorkerTraffic, w as platformDatabaseNameFromOwnerUrl, x as platformAdoptionIntentHash, y as createPlatformInstallPlan } from "./platform-lifecycle-9OyBALhH.mjs";
5
5
  import { createHash } from "node:crypto";
6
6
  import { PLATFORM_DISABLED_KEY, PLATFORM_DISABLED_VALUE, PLATFORM_R2_OWNERSHIP_MARKER_KEY, createPlatformResourceOwnershipMarker, parsePlatformInstallationManifest, parsePlatformResourceOwnershipMarker, recordInstallationResource, recordInstallationStep, setInstallationDesiredState, transitionInstallation } from "@void/platform";
7
7
  //#region src/cli/platform-management.ts
@@ -77,6 +77,7 @@ async function runInstalledPlatformCommand(args) {
77
77
  ...args.subcommand === "upgrade" && process.env.VOID_EMAIL_SENDER_DOMAIN ? { emailSenderDomain: process.env.VOID_EMAIL_SENDER_DOMAIN } : {},
78
78
  applicationDomain: deployment.application.baseDomain,
79
79
  controlPlaneDomain: deployment.controlPlane.apiHostname ?? "",
80
+ ...args.subcommand !== "rollback" && args.dashboardUrl !== void 0 ? { dashboardUrl: args.dashboardUrl } : {},
80
81
  dedicatedZone: deployment.application.dedicatedZone,
81
82
  displayName: deployment.displayName,
82
83
  installationSlug: deployment.installationSlug,
@@ -87,7 +88,8 @@ async function runInstalledPlatformCommand(args) {
87
88
  repairMissing: args.subcommand === "repair",
88
89
  allowUnverifiedAiGateway: args.plan,
89
90
  includeEmailGateway: runtime.manifest.artifacts.emailGateway !== void 0,
90
- enableSandbox: runtime.manifest.safetyProtocols.sandboxDrain >= 3
91
+ enableSandbox: runtime.manifest.safetyProtocols.sandboxDrain >= 3,
92
+ deploymentExecution: runtime.manifest.deploymentExecution === 1
91
93
  });
92
94
  markPhase("plan");
93
95
  note(formatPlatformInstallPlan(plan), args.subcommand === "upgrade" ? "Upgrade plan" : args.subcommand === "rollback" ? "Rollback plan" : args.subcommand === "enable" ? "Enable plan" : "Repair plan");
@@ -167,7 +169,8 @@ async function runInstalledPlatformCommand(args) {
167
169
  authoritativeProvisionIntents: true,
168
170
  repairMissing: true,
169
171
  includeEmailGateway: runtime.manifest.artifacts.emailGateway !== void 0,
170
- enableSandbox: runtime.manifest.safetyProtocols.sandboxDrain >= 3
172
+ enableSandbox: runtime.manifest.safetyProtocols.sandboxDrain >= 3,
173
+ deploymentExecution: runtime.manifest.deploymentExecution === 1
171
174
  })).actions.filter((action) => action.kind === "worker"),
172
175
  revalidateBeforeWorkerDeploy: (manifest, action) => revalidatePlatformInstallAction(client, plan, manifest, action, {
173
176
  repairMissing: args.subcommand === "repair",
@@ -1,2 +1,2 @@
1
- import { c as selectAuthoritativePlatformManifest, s as runInstalledPlatformCommand, u as verifyPlatformInstallationOwnership } from "./platform-management-Brz_BDiT.mjs";
1
+ import { c as selectAuthoritativePlatformManifest, s as runInstalledPlatformCommand, u as verifyPlatformInstallationOwnership } from "./platform-management-CjwLVQwN.mjs";
2
2
  export { runInstalledPlatformCommand, selectAuthoritativePlatformManifest, verifyPlatformInstallationOwnership };
@@ -0,0 +1,359 @@
1
+ import { B as text, E as confirm, I as select, W as isCancel } from "./dist-CTBk70IR.mjs";
2
+ import { n as OperatorClient, r as OperatorClientError } from "./operator-client-DUwumHpQ.mjs";
3
+ import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-8KnOVXVd.mjs";
4
+ import { stripVTControlCharacters } from "node:util";
5
+ import { PLAN_EDITABLE_LIMIT_KEYS, PLAN_LIMITS, parseBuildInstanceType, parsePlanLimitsPatch, parsePlanName, parsePlatformPlanId } from "@void/platform/plans";
6
+ import { readFile } from "node:fs/promises";
7
+ //#region src/cli/platform-plans-config.ts
8
+ const limitLabels = {
9
+ requestsPerMonth: "Requests per billing month",
10
+ cpuMsPerRequest: "Default CPU per request (ms)",
11
+ maxCpuMsPerRequest: "Maximum app CPU per request (ms)",
12
+ subRequestsPerInvocation: "Subrequests per invocation",
13
+ deploysPerDay: "Deployments per day",
14
+ aiNeuronsPerMonth: "AI neurons per billing month",
15
+ retainedDeployments: "Retained Worker deployments",
16
+ sandboxRuntimeSecondsPerMonth: "Sandbox runtime per billing month (seconds)",
17
+ sandboxMaxConcurrentInstances: "Concurrent Sandbox instances",
18
+ concurrentBuilds: "Concurrent builds",
19
+ buildTimeoutMinutes: "Build timeout (minutes)"
20
+ };
21
+ function limitValue(value, key) {
22
+ if (value === 0 && key === "buildTimeoutMinutes") return "platform maximum (60 minutes)";
23
+ return value === 0 ? "unlimited" : value.toLocaleString("en-US");
24
+ }
25
+ function showListing(listing, json) {
26
+ if (json) {
27
+ print(listing);
28
+ return;
29
+ }
30
+ console.log(`Default for new accounts: ${listing.catalog.defaultPlanId}`);
31
+ for (const plan of listing.catalog.plans) {
32
+ const count = listing.accounts.find((entry) => entry.planId === plan.id)?.count ?? 0;
33
+ console.log(`${label(plan)} — ${count} accounts`);
34
+ }
35
+ if (listing.catalog.reconciliation && !listing.catalog.reconciliation.complete) console.log("Account updates are pending. Run void platform config plans sync --yes.");
36
+ }
37
+ function showPreview(preview, before, write = console.error) {
38
+ const after = preview.catalog;
39
+ write(`Change: ${preview.action} ${preview.target}`);
40
+ write(`Accounts affected: ${preview.affectedAccounts}`);
41
+ for (const warning of preview.warnings ?? []) write(stripVTControlCharacters(warning));
42
+ if (typeof preview.usageSampleSize === "number" && preview.usageSampleSize > 0) write(`Usage preview samples ${preview.usageSampleSize} accounts.`);
43
+ if (before.defaultPlanId !== after.defaultPlanId) write(`Default for new accounts: ${before.defaultPlanId} → ${after.defaultPlanId}`);
44
+ for (const plan of after.plans) {
45
+ const previous = before.plans.find((entry) => entry.id === plan.id);
46
+ if (!previous) {
47
+ write(`Add ${label(plan)}; build size ${plan.buildInstanceType}`);
48
+ for (const key of PLAN_EDITABLE_LIMIT_KEYS) write(` ${limitLabels[key]}: ${limitValue(plan.limits[key], key)}`);
49
+ write(` Short project slugs: ${plan.allowShortSlugs ? "allowed" : "not allowed"}`);
50
+ continue;
51
+ }
52
+ if (previous.name !== plan.name) write(`Name: ${previous.name} → ${plan.name}`);
53
+ if (previous.archived !== plan.archived) write(`${plan.id}: ${plan.archived ? "archive for new assignments" : "restore assignments"}`);
54
+ if (previous.buildInstanceType !== plan.buildInstanceType) write(`Build size: ${previous.buildInstanceType} → ${plan.buildInstanceType}`);
55
+ if (previous.allowShortSlugs !== plan.allowShortSlugs) write(`Short project slugs: ${previous.allowShortSlugs ? "allowed" : "not allowed"} → ${plan.allowShortSlugs ? "allowed" : "not allowed"}`);
56
+ for (const key of PLAN_EDITABLE_LIMIT_KEYS) if (previous.limits[key] !== plan.limits[key]) write(`${limitLabels[key]}: ${limitValue(previous.limits[key], key)} → ${limitValue(plan.limits[key], key)}`);
57
+ }
58
+ for (const plan of before.plans) if (!after.plans.some((entry) => entry.id === plan.id)) {
59
+ write(`Remove ${label(plan)}`);
60
+ const replacement = after.plans.find((entry) => entry.id === preview.replacementPlanId);
61
+ if (replacement) {
62
+ write(`Move accounts to ${label(replacement)}`);
63
+ if (plan.buildInstanceType !== replacement.buildInstanceType) write(`Build size: ${plan.buildInstanceType} → ${replacement.buildInstanceType}`);
64
+ if (plan.allowShortSlugs !== replacement.allowShortSlugs) write(`Short project slugs: ${plan.allowShortSlugs ? "allowed" : "not allowed"} → ${replacement.allowShortSlugs ? "allowed" : "not allowed"}`);
65
+ for (const key of PLAN_EDITABLE_LIMIT_KEYS) if (plan.limits[key] !== replacement.limits[key]) write(`${limitLabels[key]}: ${limitValue(plan.limits[key], key)} → ${limitValue(replacement.limits[key], key)}`);
66
+ }
67
+ }
68
+ for (const account of preview.overLimitAccounts ?? []) write(`Already above proposed limits: ${stripVTControlCharacters(account.login)} (${account.id}): ${account.reasons.join(", ")}`);
69
+ }
70
+ function value(input) {
71
+ if (isCancel(input) || typeof input === "symbol") throw new Error("platform: Cancelled.");
72
+ return input;
73
+ }
74
+ function print(result) {
75
+ console.log(JSON.stringify(result, null, 2));
76
+ }
77
+ function label(plan) {
78
+ return `${stripVTControlCharacters(plan.name)} (${plan.id}${plan.archived ? ", archived" : ""})`;
79
+ }
80
+ async function choosePlan(catalog, message, options = {}) {
81
+ const plans = catalog.plans.filter((plan) => plan.id !== options.exclude && (!options.activeOnly || !plan.archived));
82
+ if (!plans.length) throw new Error("platform: No eligible plans are available.");
83
+ return value(await select({
84
+ message,
85
+ options: plans.map((plan) => ({
86
+ value: plan.id,
87
+ label: label(plan)
88
+ }))
89
+ }));
90
+ }
91
+ async function changesInput(args, plan) {
92
+ if (args.file) {
93
+ const input = JSON.parse(await readFile(args.file, "utf8"));
94
+ if (!input || typeof input !== "object" || Array.isArray(input)) throw new Error("platform: A plan file must contain a JSON object.");
95
+ const object = input;
96
+ for (const key of Object.keys(object)) if (![
97
+ "name",
98
+ "limits",
99
+ "buildInstanceType",
100
+ "allowShortSlugs"
101
+ ].includes(key)) throw new Error(`platform: Unknown plan field ${key}. Use name, limits, buildInstanceType, or allowShortSlugs.`);
102
+ if (object.allowShortSlugs !== void 0 && typeof object.allowShortSlugs !== "boolean") throw new Error("platform: allowShortSlugs must be a boolean.");
103
+ return {
104
+ ...object,
105
+ ...object.name !== void 0 ? { name: parsePlanName(object.name) } : {},
106
+ ...object.buildInstanceType !== void 0 ? { buildInstanceType: parseBuildInstanceType(object.buildInstanceType) } : {},
107
+ ...object.limits !== void 0 ? { limits: parsePlanLimitsPatch(object.limits) } : {},
108
+ ...args.name ? { name: parsePlanName(args.name) } : {}
109
+ };
110
+ }
111
+ if (args.name) return { name: parsePlanName(args.name) };
112
+ if (!process.stdin.isTTY || args.json) {
113
+ if (args.action === "add") throw new Error("platform: Supply --name or --file when adding a plan in non-interactive mode.");
114
+ throw new Error("platform: Supply --name or --file with the changes in non-interactive mode.");
115
+ }
116
+ if (args.action === "add") return { name: parsePlanName(value(await text({
117
+ message: "Plan name:",
118
+ initialValue: args.target
119
+ }))) };
120
+ const field = value(await select({
121
+ message: "What would you like to change?",
122
+ options: [
123
+ {
124
+ value: "name",
125
+ label: "Plan name"
126
+ },
127
+ ...PLAN_EDITABLE_LIMIT_KEYS.map((key) => ({
128
+ value: key,
129
+ label: `${limitLabels[key]}: ${limitValue(plan.limits[key], key)}`
130
+ })),
131
+ {
132
+ value: "buildInstanceType",
133
+ label: "Build instance size"
134
+ }
135
+ ]
136
+ }));
137
+ if (field === "name") return { name: parsePlanName(value(await text({
138
+ message: "Plan name:",
139
+ initialValue: plan.name
140
+ }))) };
141
+ if (field === "buildInstanceType") return { buildInstanceType: value(await select({
142
+ message: "Build instance size:",
143
+ initialValue: plan.buildInstanceType,
144
+ options: [{
145
+ value: "standard-3",
146
+ label: "Standard: 2 vCPU, 8 GiB"
147
+ }, {
148
+ value: "standard-4",
149
+ label: "Large: 4 vCPU, 12 GiB"
150
+ }]
151
+ })) };
152
+ const current = plan.limits[field];
153
+ const input = value(await text({
154
+ message: `${limitLabels[field]} (${field === "buildTimeoutMinutes" ? "0 uses the platform maximum of 60 minutes" : "0 means unlimited"}):`,
155
+ initialValue: String(current),
156
+ validate: (value) => /^\d+$/.test(value ?? "") && Number.isSafeInteger(Number(value)) ? void 0 : "Enter a nonnegative whole number."
157
+ }));
158
+ return { limits: parsePlanLimitsPatch({ [field]: Number(input) }) };
159
+ }
160
+ async function apply(client, path, body, args, catalog) {
161
+ if (!args.plan && !args.yes && (!process.stdin.isTTY || args.json)) throw new Error("platform: Configuration changes require --yes or --plan in non-interactive mode.");
162
+ const preview = await client.request(path, {
163
+ method: "POST",
164
+ body: {
165
+ ...body,
166
+ dryRun: true
167
+ }
168
+ });
169
+ if (args.plan) {
170
+ if (args.json) print(preview);
171
+ else showPreview(preview, catalog, console.log);
172
+ return;
173
+ }
174
+ if (!Number.isSafeInteger(preview.expectedRevision)) throw new Error("platform: The platform returned an invalid plan revision.");
175
+ if (!args.yes) {
176
+ showPreview(preview, catalog);
177
+ if (!value(await confirm({
178
+ message: `Apply this change to ${client.origin}?`,
179
+ initialValue: false
180
+ }))) throw new Error("platform: Cancelled.");
181
+ }
182
+ let result = await client.request(path, {
183
+ method: "POST",
184
+ body: {
185
+ ...body,
186
+ expectedRevision: preview.expectedRevision
187
+ }
188
+ });
189
+ const committedCatalog = result.catalog;
190
+ if (!Number.isSafeInteger(committedCatalog?.revision)) throw new Error("platform: The platform returned an invalid saved plan revision. Inspect the catalog before retrying.");
191
+ const committedRevision = committedCatalog.revision;
192
+ const applied = result;
193
+ let previousCursor = catalog.reconciliation?.cursor ?? null;
194
+ while (true) {
195
+ const reconciliation = result.reconciliation;
196
+ if (!reconciliation || reconciliation.complete !== false) break;
197
+ const currentCatalog = result.catalog;
198
+ const cursor = currentCatalog.reconciliation?.cursor ?? null;
199
+ if (reconciliation.error || !Number.isSafeInteger(reconciliation.processed) || reconciliation.processed <= 0 || cursor === previousCursor || currentCatalog.revision !== committedRevision) {
200
+ const pending = {
201
+ ...applied,
202
+ ...result
203
+ };
204
+ print(pending);
205
+ throw new OperatorClientError("Plan configuration was saved, but account updates are pending. Run void platform config plans sync --yes.", "plan_sync_pending", void 0, pending);
206
+ }
207
+ previousCursor = cursor;
208
+ result = await client.request("/config/plans/sync", {
209
+ method: "POST",
210
+ body: { expectedRevision: committedRevision }
211
+ });
212
+ }
213
+ const completed = {
214
+ ...applied,
215
+ ...result
216
+ };
217
+ if (args.json) print(completed);
218
+ else console.log(`Saved ${applied.action ?? "plans.sync"} ${applied.target ?? ""}. Account updates complete.`);
219
+ }
220
+ async function runPlatformPlansConfig(args) {
221
+ const origin = resolveOperatorOrigin(args.connection);
222
+ const client = new OperatorClient(origin, readOperatorToken(origin));
223
+ const listing = await client.request("/config/plans");
224
+ const { catalog } = listing;
225
+ if (!args.action) {
226
+ if (!process.stdin.isTTY || args.json) {
227
+ showListing(listing, args.json);
228
+ return;
229
+ }
230
+ const selected = value(await select({
231
+ message: "Platform plans:",
232
+ options: [
233
+ ...catalog.plans.map((plan) => ({
234
+ value: plan.id,
235
+ label: `${label(plan)}${plan.id === catalog.defaultPlanId ? " — default" : ""}`,
236
+ hint: `${listing.accounts.find((entry) => entry.planId === plan.id)?.count ?? 0} accounts`
237
+ })),
238
+ {
239
+ value: ":add",
240
+ label: "Add a plan by copying an existing plan"
241
+ },
242
+ {
243
+ value: ":default",
244
+ label: "Choose the default for new accounts"
245
+ },
246
+ ...catalog.reconciliation && !catalog.reconciliation.complete ? [{
247
+ value: ":sync",
248
+ label: "Continue pending account updates"
249
+ }] : []
250
+ ]
251
+ }));
252
+ if (selected === ":sync") return runPlatformPlansConfig({
253
+ ...args,
254
+ action: "sync"
255
+ });
256
+ if (selected === ":default") {
257
+ const target = await choosePlan(catalog, "Default plan for new accounts:", { activeOnly: true });
258
+ return runPlatformPlansConfig({
259
+ ...args,
260
+ action: "default",
261
+ target
262
+ });
263
+ }
264
+ if (selected === ":add") {
265
+ const target = parsePlatformPlanId(value(await text({ message: "New plan ID (stable; lowercase letters, digits, and hyphens):" })));
266
+ const copy = await choosePlan(catalog, "Copy limits and build size from:");
267
+ return runPlatformPlansConfig({
268
+ ...args,
269
+ action: "add",
270
+ target,
271
+ copy
272
+ });
273
+ }
274
+ const plan = catalog.plans.find((entry) => entry.id === selected);
275
+ const action = value(await select({
276
+ message: label(plan),
277
+ options: [
278
+ {
279
+ value: "show",
280
+ label: "Show limits and account count"
281
+ },
282
+ {
283
+ value: "set",
284
+ label: "Edit name or limits"
285
+ },
286
+ {
287
+ value: plan.archived ? "restore" : "archive",
288
+ label: plan.archived ? "Restore assignments to this plan" : "Archive for new assignments"
289
+ },
290
+ ...Object.hasOwn(PLAN_LIMITS, plan.id) ? [{
291
+ value: "reset",
292
+ label: "Reset to original limits and build size"
293
+ }] : [],
294
+ {
295
+ value: "remove",
296
+ label: "Remove this plan"
297
+ }
298
+ ]
299
+ }));
300
+ return runPlatformPlansConfig({
301
+ ...args,
302
+ action,
303
+ target: selected
304
+ });
305
+ }
306
+ if (args.action === "show") {
307
+ if (!args.target) showListing(listing, args.json);
308
+ else {
309
+ const result = await client.request(`/config/plans/${encodeURIComponent(args.target)}`);
310
+ if (args.json) print(result);
311
+ else {
312
+ const plan = result.plan;
313
+ console.log(`${label(plan)}${result.default ? " — default for new accounts" : ""}`);
314
+ console.log(`Accounts: ${result.accounts}; build size: ${plan.buildInstanceType}`);
315
+ console.log(`Short project slugs: ${plan.allowShortSlugs ? "allowed" : "not allowed"}`);
316
+ for (const key of PLAN_EDITABLE_LIMIT_KEYS) console.log(`${limitLabels[key]}: ${limitValue(plan.limits[key], key)}`);
317
+ }
318
+ }
319
+ return;
320
+ }
321
+ let body = {};
322
+ let path = `/config/plans/${encodeURIComponent(args.target)}/${args.action}`;
323
+ const plan = catalog.plans.find((entry) => entry.id === args.target);
324
+ if (args.action === "add") {
325
+ let copy = args.copy;
326
+ if (!copy) {
327
+ if (!process.stdin.isTTY || args.json) throw new Error("platform: Adding a plan requires --copy <plan-id> in non-interactive mode.");
328
+ copy = await choosePlan(catalog, "Copy limits and build size from:");
329
+ }
330
+ body = {
331
+ id: args.target,
332
+ copyFrom: copy,
333
+ ...await changesInput(args)
334
+ };
335
+ path = "/config/plans/add";
336
+ } else if (args.action === "default") {
337
+ body = { planId: args.target };
338
+ path = "/config/plans/default";
339
+ } else if (args.action === "sync") path = "/config/plans/sync";
340
+ else {
341
+ if (!plan) throw new Error("platform: Plan not found. Run void platform config plans show.");
342
+ if (args.action === "set") body = await changesInput(args, plan);
343
+ else if (args.action === "archive" || args.action === "restore") {
344
+ path = `/config/plans/${encodeURIComponent(args.target)}/archive`;
345
+ body = { archived: args.action === "archive" };
346
+ } else if (args.action === "remove") {
347
+ let replacement = args.replacement;
348
+ const needsReplacement = args.target === catalog.defaultPlanId || (listing.accounts.find((entry) => entry.planId === args.target)?.count ?? 0) > 0;
349
+ if (!replacement && needsReplacement && process.stdin.isTTY && !args.json) replacement = await choosePlan(catalog, "Move accounts and any default to:", {
350
+ activeOnly: true,
351
+ exclude: args.target
352
+ });
353
+ body = replacement ? { replacementPlanId: replacement } : {};
354
+ }
355
+ }
356
+ await apply(client, path, body, args, catalog);
357
+ }
358
+ //#endregion
359
+ export { runPlatformPlansConfig };
@@ -1,7 +1,7 @@
1
1
  import { t as cfAccessHeaders } from "./cf-access-DRsQRe6k.mjs";
2
2
  import { a as listInstallationManifests, g as savePlatformConnection, t as acquirePlatformLifecycleLock, v as writeInstallationManifest } from "./platform-registry-QBa4DK32.mjs";
3
- import { a as REMOTE_INSTALLATION_MANIFEST_KEY, y as createPlatformInstallPlan } from "./platform-lifecycle-k0E0xoxx.mjs";
4
- import { i as recoverDurablyMarkedProvisionIntents, r as isPlatformManifestMonotonicExtension, u as verifyPlatformInstallationOwnership } from "./platform-management-Brz_BDiT.mjs";
3
+ import { a as REMOTE_INSTALLATION_MANIFEST_KEY, y as createPlatformInstallPlan } from "./platform-lifecycle-9OyBALhH.mjs";
4
+ import { i as recoverDurablyMarkedProvisionIntents, r as isPlatformManifestMonotonicExtension, u as verifyPlatformInstallationOwnership } from "./platform-management-CjwLVQwN.mjs";
5
5
  import { parsePlatformInstallationManifest, setInstallationEndpoints } from "@void/platform";
6
6
  //#region src/cli/platform-recovery.ts
7
7
  async function recoverPlatformInstallations(client, accountId, verifyEndpoint = verifyInstallationEndpoint, selector = "") {