void 0.21.9 → 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.
- package/README.md +5 -1
- package/dist/{account-cmd-DZZGK80W.mjs → account-cmd-C84Ee8cO.mjs} +5 -5
- package/dist/{scan-ClYmX3sa.mjs → application-analysis-BVsVqc11.mjs} +135 -18
- package/dist/application-routing-B7QEjqSR.mjs +27 -0
- package/dist/{auth-CZuiVsFh.mjs → auth-CCjt0hcq.mjs} +1 -1
- package/dist/{auth-DLNN0D3Z.mjs → auth-CSkdO2Bb.mjs} +4 -47
- package/dist/{auth-link-B_CeugBw.mjs → auth-link-CioEg6uY.mjs} +5 -5
- package/dist/{auth-router-BgEFRuvZ.mjs → auth-router-BsR981d4.mjs} +5 -5
- package/dist/{better-auth-shared-rsBGBvWJ.mjs → better-auth-shared-hy6RPh9W.mjs} +13 -2
- package/dist/{build-cmd-Dpt0jd-x.mjs → build-cmd-LzvNJORH.mjs} +19 -7
- package/dist/{cache-7_UeZdTk.mjs → cache-C4MvnrMH.mjs} +4 -4
- package/dist/{cancel-deploy-D23R1RXT.mjs → cancel-deploy-abUxpP2n.mjs} +4 -4
- package/dist/{cf-build-output-CGT03qCD.mjs → cf-build-output-BPqOT964.mjs} +141 -63
- package/dist/cf-build-output-_0HNWysu.mjs +2 -0
- package/dist/cli/cli.mjs +114 -460
- package/dist/cli/cloudflare-operation-process.mjs +1103 -0
- package/dist/cli/env-schema-probe.d.mts +2 -1
- package/dist/cli/env-schema-probe.mjs +3 -3
- package/dist/client-Cu7jWiF1.mjs +2 -0
- package/dist/{client-QTl6ko_D.mjs → client-RV8NVeB8.mjs} +165 -21
- package/dist/{cloudflare-auth-C4_GPZr0.mjs → cloudflare-auth-Qdc7tw8F.mjs} +41 -43
- package/dist/{cloudflare-cmd-bSmZ1d5L.mjs → cloudflare-cmd-BcrVyTmJ.mjs} +9 -10
- package/dist/cloudflare-config-Bktvwtpf.mjs +182 -0
- package/dist/{cloudflare-connect-jAwacxxP.mjs → cloudflare-connect-B8uPZ4nx.mjs} +4 -4
- package/dist/{cloudflare-operations-BipGMJ5O.mjs → cloudflare-operations-AiWashgg.mjs} +1 -1
- package/dist/{cloudflare-operations-sMZXpk_S.mjs → cloudflare-operations-fxHb-byx.mjs} +118 -203
- package/dist/{preset-UHj9ARyP.mjs → cloudflare-process-B-wekeR6.mjs} +93 -6
- package/dist/{config-CF69HgXc.d.mts → config-BMHb8RCj.d.mts} +2 -2
- package/dist/{config-CafTW6Cz.mjs → config-Br_JZD6u.mjs} +2 -7
- package/dist/config-C_XRIPx2.mjs +89 -0
- package/dist/{config-s7Xj7tPb.mjs → config-CyQ-wVd7.mjs} +1 -1
- package/dist/config-entry.d.mts +1 -1
- package/dist/{config-write-BSduPMY8.mjs → config-write-B1f88wJA.mjs} +1 -1
- package/dist/{connect-BsUSRzln.mjs → connect-Bd4kJd9U.mjs} +6 -6
- package/dist/{create-project-BniEV0OW.mjs → create-project-Boczwj5r.mjs} +1 -1
- package/dist/{create-project-DBfFSZKY.mjs → create-project-bMf6ffLZ.mjs} +9 -5
- package/dist/{db-hRrvZaq_.mjs → db-8uG64XLl.mjs} +26 -26
- package/dist/{delete-D6dZ9B6B.mjs → delete-NvbiyeJf.mjs} +4 -4
- package/dist/{deploy-WaAQez1O.mjs → deploy-DzAIwqNU.mjs} +944 -607
- package/dist/{deploy-DDz7c8LK.mjs → deploy-bjXdFCtn.mjs} +1 -1
- package/dist/{dist-BR1quN_w.mjs → dist-AoCzRTJE.mjs} +226 -60
- package/dist/{dist-C5fND3R0.mjs → dist-BuDuKZJv.mjs} +1 -1
- package/dist/{dist-Dn6nn2IU.mjs → dist-CTBk70IR.mjs} +42 -42
- package/dist/{domain-Dmhvb2oU.mjs → domain-y5Tvydvo.mjs} +5 -5
- package/dist/{email-DFi-s2t4.mjs → email-B3umsW75.mjs} +15 -30
- package/dist/{env-Csi-tMbT.mjs → env-BS6qYHDb.mjs} +6 -6
- package/dist/{env-public-D_6u46fX.d.mts → env-public-BX_r8HR6.d.mts} +2 -1
- package/dist/{env-validation-BB4GkLxn.mjs → env-validation-BPn7vk-V.mjs} +18 -71
- package/dist/{env-validation-BXge7uyK.mjs → env-validation-DbTg7-ar.mjs} +1 -1
- package/dist/{fetch-CXDChK7B.mjs → fetch-BIZJh7vR.mjs} +2 -2
- package/dist/{fetch-stream-AOByI7Ki.mjs → fetch-stream-IvCYKyQL.mjs} +24 -4
- package/dist/{gen-Dz3X1Qab.mjs → gen-B580--vC.mjs} +5 -5
- package/dist/gen-BVaUUumi.mjs +2 -0
- package/dist/{github-cmd-BED3_9JD.mjs → github-cmd-v45BdfKX.mjs} +6 -8
- package/dist/{handler-BXJTXd02.d.mts → handler-CZ4nAylQ.d.mts} +2 -1
- package/dist/{headers-BOg_velo.mjs → headers-DWi2IXWx.mjs} +1 -1
- package/dist/help-DofyZuY7.mjs +2 -0
- package/dist/{help-DC7gdz7L.mjs → help-daGKjXGk.mjs} +268 -666
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +305 -1490
- package/dist/info-B97bTX9N.mjs +113 -0
- package/dist/{init-WO0JlPx8.mjs → init-Bvy7zrBo.mjs} +51 -20
- package/dist/limits-Bq5LG8Id.d.mts +27 -0
- package/dist/limits-Cjuk2VPm.mjs +68 -0
- package/dist/{link-CsHOinF7.mjs → link-CDqqCjFl.mjs} +5 -5
- package/dist/{list-CDb-4bZ1.mjs → list-CZj0dzKY.mjs} +5 -5
- package/dist/{live-CKiJilLr.d.mts → live-Chw1eIMv.d.mts} +1 -1
- package/dist/{local-d1-CC8sKFGu.mjs → local-d1-2CMnpuW_.mjs} +2 -2
- package/dist/login-DYt_An22.mjs +2 -0
- package/dist/{login-DvqXsfGs.mjs → login-UZKFM_u7.mjs} +5 -5
- package/dist/{logs-BdfiOezj.mjs → logs-CUZ6t9t3.mjs} +5 -5
- package/dist/migrate-8_2u55MD.mjs +2 -0
- package/dist/{migrate-B8KuoYsO.mjs → migrate-DHul7PRV.mjs} +5 -4
- package/dist/{node-BM43oz4G.mjs → node-BkyRWRx8.mjs} +2 -2
- package/dist/operator-args-CLgKGlwU.mjs +690 -0
- package/dist/{operator-cmd-03819ATr.mjs → operator-cmd-DBA6dl0m.mjs} +69 -23
- package/dist/output-Dm_A4Tbv.mjs +81 -0
- package/dist/pages/client.d.mts +34 -2
- package/dist/pages/client.mjs +59 -3
- package/dist/pages/index.d.mts +1 -1
- package/dist/pages/index.mjs +3 -3
- package/dist/pages/islands-plugin.d.mts +16 -6
- package/dist/pages/islands-plugin.mjs +2 -2
- package/dist/pages/protocol.d.mts +2 -2
- package/dist/pages/protocol.mjs +2 -308
- package/dist/{parse-filename-DioPHiR9.mjs → parse-filename-CUbj-1MP.mjs} +35 -1
- package/dist/{output-CCH48AMM.mjs → picocolors-BTps1_gs.mjs} +2 -76
- package/dist/plan-D1Q5rf-r.mjs +2 -0
- package/dist/plan-NPpwZ_kc.mjs +58 -0
- package/dist/platform-args-BJdRtlLq.mjs +506 -0
- package/dist/platform-args-D3RXyR6h.mjs +2 -0
- package/dist/{platform-auth-config-z92h63q5.mjs → platform-auth-config-B56E9YP1.mjs} +4 -4
- package/dist/{platform-auth-protection-DeE3yr2R.mjs → platform-auth-protection-BDWO_aER.mjs} +3 -3
- package/dist/{platform-auth-recovery-o_340Ixx.mjs → platform-auth-recovery-1gg4CSRe.mjs} +4 -4
- package/dist/{platform-cmd-C4ZV3Vpy.mjs → platform-cmd-Bt-1w6pY.mjs} +1 -1
- package/dist/{platform-cmd-DNl8WosH.mjs → platform-cmd-DMcQStSc.mjs} +26 -5
- package/dist/{platform-domain-CU1JtJkW.mjs → platform-domain-BNkcz0OB.mjs} +36 -9
- package/dist/{platform-lifecycle-Bc047IeT.mjs → platform-lifecycle-9OyBALhH.mjs} +850 -276
- package/dist/{platform-lifecycle-Bs2qx1E3.mjs → platform-lifecycle-BE6C_jxh.mjs} +1 -1
- package/dist/{platform-management-CVpGI9Y5.mjs → platform-management-CjwLVQwN.mjs} +59 -11
- package/dist/{platform-management-C8tt6D8h.mjs → platform-management-CnyTdcWX.mjs} +1 -1
- package/dist/platform-plans-config-BNGKGr4P.mjs +359 -0
- package/dist/{platform-recovery-dvUaptLr.mjs → platform-recovery-D6KSpuFm.mjs} +2 -2
- package/dist/{plugin-inference-BMfKRSqE.mjs → plugin-inference-CXWnn79A.mjs} +174 -64
- package/dist/{prepare-DyZ-Yok5.mjs → prepare-B5Mkic5u.mjs} +3 -3
- package/dist/{prepare-C3kt3Rst.mjs → prepare-DOsL0CC9.mjs} +4 -20
- package/dist/prepare-cgvDMtSb.mjs +2 -0
- package/dist/{project-cmd-B44I8J_W.mjs → project-cmd-CNzrqvBv.mjs} +30 -16
- package/dist/{project-team-BkbYIsXN.mjs → project-team-DQOWPfQT.mjs} +4 -4
- package/dist/{project-token-C8xEEQnB.mjs → project-token-CTDYU0Cc.mjs} +4 -4
- package/dist/project-zero-trust-BNAkW-_0.mjs +63 -0
- package/dist/{protocol-ZH3jP4a7.d.mts → protocol-CjF_iI9X.d.mts} +2 -2
- package/dist/protocol-U7bfjHmA.mjs +331 -0
- package/dist/{provision-DNtrtaVD.mjs → provision-C4ORE7G7.mjs} +1 -1
- package/dist/{provision-BhreDAOS.mjs → provision-CJFgTZY8.mjs} +111 -215
- package/dist/{requests-DFyhBMaf.mjs → requests-MhxYnau8.mjs} +4 -4
- package/dist/resource-name-C7LVpcRm.mjs +11 -0
- package/dist/{rollback-DHHxXZiS.mjs → rollback-CJ6iSDoU.mjs} +5 -5
- package/dist/route-url-CG7U-cRN.mjs +15 -0
- package/dist/{runner-B8wXwWlo.mjs → runner-CXA9Fh8h.mjs} +1 -1
- package/dist/{runner-p-dMs2UN.mjs → runner-Ol0TNjk6.mjs} +2 -2
- package/dist/runtime/ai.d.mts +12 -8
- package/dist/runtime/ai.mjs +84 -17
- package/dist/runtime/better-auth-mysql.mjs +1 -1
- package/dist/runtime/better-auth-pg.mjs +1 -1
- package/dist/runtime/better-auth.mjs +1 -1
- package/dist/runtime/client-react.mjs +2 -2
- package/dist/runtime/client-solid.mjs +2 -2
- package/dist/runtime/client-svelte.mjs +2 -2
- package/dist/runtime/client-vue.mjs +2 -2
- package/dist/runtime/client.mjs +2 -2
- package/dist/runtime/durable.d.mts +3 -1
- package/dist/runtime/durable.mjs +4 -1
- package/dist/runtime/email/testing.mjs +1 -1
- package/dist/runtime/env-public.d.mts +1 -1
- package/dist/runtime/fetch-stream.mjs +1 -1
- package/dist/runtime/fetch.mjs +1 -1
- package/dist/runtime/handler.d.mts +1 -1
- package/dist/runtime/kv.mjs +0 -1
- package/dist/runtime/limits.d.mts +2 -0
- package/dist/runtime/limits.mjs +2 -0
- package/dist/runtime/live-client.d.mts +1 -1
- package/dist/runtime/live-server.mjs +25 -16
- package/dist/runtime/live.d.mts +1 -1
- package/dist/runtime/migration-handler.mjs +62 -42
- package/dist/runtime/route-url.d.mts +4 -0
- package/dist/runtime/route-url.mjs +2 -0
- package/dist/runtime/routing.d.mts +180 -0
- package/dist/runtime/routing.mjs +1082 -0
- package/dist/runtime/sandbox-container.d.mts +3 -0
- package/dist/runtime/sandbox-container.mjs +2 -0
- package/dist/runtime/sandbox.d.mts +4 -32
- package/dist/runtime/sandbox.mjs +151 -75
- package/dist/runtime/sse.mjs +1 -1
- package/dist/runtime/validator.d.mts +1 -1
- package/dist/runtime/ws-server.d.mts +4 -2
- package/dist/runtime/ws-server.mjs +27 -2
- package/dist/runtime/ws.d.mts +2 -2
- package/dist/runtime/ws.mjs +8 -6
- package/dist/sandbox-XZAqzFlG.d.mts +52 -0
- package/dist/sandbox-container-Bo0eiFKz.d.mts +73 -0
- package/dist/sandbox-container-C6ItmVuN.mjs +281 -0
- package/dist/{scan-4tfN-PSn.mjs → scan-C7okrLyM.mjs} +4 -35
- package/dist/{secret-DN9sSNiV.mjs → secret-Dli5fP0B.mjs} +6 -6
- package/dist/{skills-O6FUaizK.mjs → skills-D1II1Juz.mjs} +1 -1
- package/dist/{sse-BaC1jXko.mjs → sse-CQNaDFFV.mjs} +6 -3
- package/dist/{subcommand-prompt-BuGYkAkC.mjs → subcommand-prompt-CY1C4fvl.mjs} +2 -2
- package/dist/validate-Dq_L3s0S.mjs +2 -0
- package/dist/{validate-CIUwFpjB.mjs → validate-ctOrgiS3.mjs} +2 -1
- package/dist/{wrangler-BymcxrRa.mjs → wrangler-7K-bW_DL.mjs} +14 -235
- package/dist/{ws-BwcqizuH.d.mts → ws-CL1w7GXU.d.mts} +13 -2
- package/package.json +48 -33
- package/sandbox.Dockerfile +4 -0
- package/schema.json +10 -22
- package/skills/migrate-vite-cloudflare-to-void/SKILL.md +34 -157
- package/skills/void/SKILL.md +50 -133
- package/skills/void/docs/guide/ai.md +94 -84
- package/skills/void/docs/guide/app-types.md +3 -32
- package/skills/void/docs/guide/auth.md +12 -116
- package/skills/void/docs/guide/database/d1.md +9 -54
- package/skills/void/docs/guide/database/mysql.md +1 -1
- package/skills/void/docs/guide/database/postgresql.md +5 -26
- package/skills/void/docs/guide/database.md +23 -75
- package/skills/void/docs/guide/deployment.md +27 -113
- package/skills/void/docs/guide/durable-state.md +43 -18
- package/skills/void/docs/guide/edge/headers.md +3 -47
- package/skills/void/docs/guide/edge/prerendering.md +5 -20
- package/skills/void/docs/guide/edge/redirects.md +11 -64
- package/skills/void/docs/guide/edge/revalidation.md +6 -19
- package/skills/void/docs/guide/edge/rewrites.md +56 -284
- package/skills/void/docs/guide/edge/static-assets.md +23 -72
- package/skills/void/docs/guide/email/domains.md +112 -0
- package/skills/void/docs/guide/email/receiving.md +139 -0
- package/skills/void/docs/guide/email/sending.md +231 -0
- package/skills/void/docs/guide/email.md +13 -619
- package/skills/void/docs/guide/env-migration.md +11 -11
- package/skills/void/docs/guide/env-vars.md +9 -29
- package/skills/void/docs/guide/index.md +0 -15
- package/skills/void/docs/guide/jobs.md +3 -18
- package/skills/void/docs/guide/kv.md +5 -11
- package/skills/void/docs/guide/live.md +5 -56
- package/skills/void/docs/guide/pages-routing/actions-and-forms.md +78 -125
- package/skills/void/docs/guide/pages-routing/head.md +10 -10
- package/skills/void/docs/guide/pages-routing/islands.md +6 -36
- package/skills/void/docs/guide/pages-routing/layouts.md +6 -128
- package/skills/void/docs/guide/pages-routing/loaders.md +3 -19
- package/skills/void/docs/guide/pages-routing/markdown.md +13 -171
- package/skills/void/docs/guide/pages-routing/overview.md +7 -17
- package/skills/void/docs/guide/pages-routing/view-transitions.md +1 -1
- package/skills/void/docs/guide/platform/administration/access.md +1 -4
- package/skills/void/docs/guide/platform/administration/email.md +35 -8
- package/skills/void/docs/guide/platform/administration/operations.md +26 -4
- package/skills/void/docs/guide/platform/administration/plans.md +126 -0
- package/skills/void/docs/guide/platform/administration/projects.md +5 -2
- package/skills/void/docs/guide/platform/administration/zero-trust.md +189 -0
- package/skills/void/docs/guide/platform/development/local.md +2 -2
- package/skills/void/docs/guide/platform/development/runtime.md +3 -13
- package/skills/void/docs/guide/platform/development/schema-ci.md +0 -58
- package/skills/void/docs/guide/platform/installation/credentials.md +6 -4
- package/skills/void/docs/guide/platform/installation/domains.md +31 -3
- package/skills/void/docs/guide/platform/installation/first-deployment.md +6 -0
- package/skills/void/docs/guide/platform/installation/maintenance.md +3 -1
- package/skills/void/docs/guide/platform/installation/prerequisites.md +21 -16
- package/skills/void/docs/guide/platform/installation/setup.md +9 -5
- package/skills/void/docs/guide/platform/installation/uninstall.md +17 -2
- package/skills/void/docs/guide/platform-administration.md +2 -0
- package/skills/void/docs/guide/queues.md +7 -9
- package/skills/void/docs/guide/quickstart.md +38 -37
- package/skills/void/docs/guide/remote-dev.md +4 -9
- package/skills/void/docs/guide/sandboxes.md +78 -41
- package/skills/void/docs/guide/server-routing.md +9 -72
- package/skills/void/docs/guide/sse.md +4 -18
- package/skills/void/docs/guide/ssg.md +3 -15
- package/skills/void/docs/guide/ssr.md +14 -62
- package/skills/void/docs/guide/storage.md +9 -4
- package/skills/void/docs/guide/type-safety.md +3 -14
- package/skills/void/docs/guide/typed-fetch.md +3 -7
- package/skills/void/docs/guide/websockets.md +68 -40
- package/skills/void/docs/integrations/agents.md +3 -3
- package/skills/void/docs/integrations/cloudflare.md +85 -316
- package/skills/void/docs/integrations/frameworks/analog.md +5 -64
- package/skills/void/docs/integrations/frameworks/astro.md +4 -73
- package/skills/void/docs/integrations/frameworks/nuxt.md +5 -62
- package/skills/void/docs/integrations/frameworks/overview.md +11 -54
- package/skills/void/docs/integrations/frameworks/react-router.md +5 -60
- package/skills/void/docs/integrations/frameworks/sveltekit.md +6 -65
- package/skills/void/docs/integrations/frameworks/tanstack-start.md +4 -62
- package/skills/void/docs/integrations/nodejs-bun-deno.md +5 -69
- package/skills/void/docs/reference/api/auth.md +156 -0
- package/skills/void/docs/reference/api/client.md +87 -0
- package/skills/void/docs/reference/api/database.md +95 -0
- package/skills/void/docs/reference/api/durable.md +46 -0
- package/skills/void/docs/reference/api/env.md +50 -0
- package/skills/void/docs/reference/api/handlers.md +254 -0
- package/skills/void/docs/reference/api/pages.md +241 -0
- package/skills/void/docs/reference/api/plugin.md +39 -0
- package/skills/void/docs/reference/api/resources.md +109 -0
- package/skills/void/docs/reference/api/rewrites.md +76 -0
- package/skills/void/docs/reference/api/types.md +92 -0
- package/skills/void/docs/reference/api.md +56 -1218
- package/skills/void/docs/reference/cli/auth.md +88 -0
- package/skills/void/docs/reference/cli/database.md +128 -0
- package/skills/void/docs/reference/cli/deploy.md +85 -0
- package/skills/void/docs/reference/cli/domains.md +41 -0
- package/skills/void/docs/reference/cli/email.md +129 -0
- package/skills/void/docs/reference/cli/generate.md +116 -0
- package/skills/void/docs/reference/cli/github.md +189 -0
- package/skills/void/docs/reference/cli/platform-config.md +92 -0
- package/skills/void/docs/reference/cli/platform-email.md +81 -0
- package/skills/void/docs/reference/cli/platform-installation.md +127 -0
- package/skills/void/docs/reference/cli/platform-operations.md +90 -0
- package/skills/void/docs/reference/cli/platform-users.md +89 -0
- package/skills/void/docs/reference/cli/platform-zero-trust.md +45 -0
- package/skills/void/docs/reference/cli/platform.md +70 -0
- package/skills/void/docs/reference/cli/project.md +214 -0
- package/skills/void/docs/reference/cli/secrets.md +76 -0
- package/skills/void/docs/reference/cli/setup.md +70 -0
- package/skills/void/docs/reference/cli.md +33 -1621
- package/skills/void/docs/reference/config.md +26 -32
- package/skills/void/docs/reference/resource-inference.md +3 -58
- package/skills/void/docs/reference/structure.md +14 -41
- package/dist/canonical-json-DuDiiUsQ.mjs +0 -13
- package/dist/cli/cf-compat.mjs +0 -968
- package/dist/client-4cDVv7BO.mjs +0 -2
- package/dist/gen-Vnv2f65C.mjs +0 -2
- package/dist/help-DQMfeKMz.mjs +0 -2
- package/dist/login-DFQk7rbW.mjs +0 -2
- package/dist/migrate-TsHGBnDA.mjs +0 -2
- package/dist/plan-BEZ8VJW0.mjs +0 -256
- package/dist/plan-DpuOr14e.mjs +0 -2
- package/dist/prepare-BZXkjdNe.mjs +0 -2
- package/dist/validate-EKmJWxmy.mjs +0 -2
- /package/dist/cli/{cf-compat.d.mts → cloudflare-operation-process.d.mts} +0 -0
|
@@ -0,0 +1,690 @@
|
|
|
1
|
+
import { t as OPERATOR_MAX_TIMEOUT_MS } from "./operator-client-DUwumHpQ.mjs";
|
|
2
|
+
//#region src/cli/operator-args.ts
|
|
3
|
+
const operatorCommands = [
|
|
4
|
+
{
|
|
5
|
+
group: "auth",
|
|
6
|
+
action: "login",
|
|
7
|
+
description: "Sign in as a platform administrator",
|
|
8
|
+
path: "/session",
|
|
9
|
+
values: { provider: "OAuth provider" },
|
|
10
|
+
booleans: ["token-stdin"]
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
group: "auth",
|
|
14
|
+
action: "logout",
|
|
15
|
+
description: "Revoke the current operator session and remove its local credential",
|
|
16
|
+
path: "/session/logout"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
group: "auth",
|
|
20
|
+
action: "status",
|
|
21
|
+
description: "Inspect operator identity, expiry, and capabilities",
|
|
22
|
+
path: "/session"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
group: "auth",
|
|
26
|
+
action: "token",
|
|
27
|
+
description: "Print an operator token; exchange an API session with --token-stdin",
|
|
28
|
+
path: "/session",
|
|
29
|
+
booleans: ["token-stdin"]
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
group: "user",
|
|
33
|
+
action: "list",
|
|
34
|
+
description: "List users",
|
|
35
|
+
path: "/users",
|
|
36
|
+
values: { search: "Search login or email" }
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
group: "user",
|
|
40
|
+
action: "show",
|
|
41
|
+
description: "Inspect a user, usage, and projects",
|
|
42
|
+
path: "/users/:id",
|
|
43
|
+
positional: ["id"]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
group: "user",
|
|
47
|
+
action: "plan",
|
|
48
|
+
description: "Change a user plan",
|
|
49
|
+
path: "/users/:id/plan",
|
|
50
|
+
positional: ["id", "plan"],
|
|
51
|
+
method: "POST"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
group: "user",
|
|
55
|
+
action: "suspend",
|
|
56
|
+
description: "Suspend a user and their projects",
|
|
57
|
+
path: "/users/:id/suspend",
|
|
58
|
+
positional: ["id"],
|
|
59
|
+
values: { reason: "Reason for suspension" },
|
|
60
|
+
method: "POST"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
group: "user",
|
|
64
|
+
action: "restore",
|
|
65
|
+
description: "Restore a suspended user",
|
|
66
|
+
path: "/users/:id/restore",
|
|
67
|
+
positional: ["id"],
|
|
68
|
+
method: "POST"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
group: "user",
|
|
72
|
+
action: "delete",
|
|
73
|
+
description: "Delete a user and all owned resources",
|
|
74
|
+
path: "/users/:id/delete",
|
|
75
|
+
positional: ["id"],
|
|
76
|
+
method: "POST"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
group: "project",
|
|
80
|
+
action: "list",
|
|
81
|
+
description: "List tenant projects",
|
|
82
|
+
path: "/projects",
|
|
83
|
+
values: {
|
|
84
|
+
user: "Owner user ID",
|
|
85
|
+
search: "Search projects"
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
group: "project",
|
|
90
|
+
action: "show",
|
|
91
|
+
description: "Inspect a project and its resources",
|
|
92
|
+
path: "/projects/:id",
|
|
93
|
+
positional: ["id"]
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
group: "project",
|
|
97
|
+
action: "delete",
|
|
98
|
+
description: "Delete a project and its resources",
|
|
99
|
+
path: "/projects/:id/delete",
|
|
100
|
+
positional: ["id"],
|
|
101
|
+
method: "POST"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
group: "project",
|
|
105
|
+
action: "normalize",
|
|
106
|
+
description: "Verify and normalize legacy project deployment and queue identities",
|
|
107
|
+
path: "/projects/:id/normalize",
|
|
108
|
+
positional: ["id"],
|
|
109
|
+
method: "POST"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
group: "project",
|
|
113
|
+
action: "owner",
|
|
114
|
+
description: "Transfer project ownership to another registered user",
|
|
115
|
+
path: "/projects/:id/owner",
|
|
116
|
+
positional: ["id", "userId"],
|
|
117
|
+
method: "POST"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
group: "zero-trust",
|
|
121
|
+
action: "status",
|
|
122
|
+
description: "Inspect saved platform Zero Trust configuration and project state counts",
|
|
123
|
+
path: "/zero-trust",
|
|
124
|
+
booleans: ["check"]
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
group: "zero-trust",
|
|
128
|
+
action: "configure",
|
|
129
|
+
description: "Configure and reconcile project Zero Trust protection",
|
|
130
|
+
path: "/zero-trust/configure",
|
|
131
|
+
values: {
|
|
132
|
+
"identity-providers": "Comma-separated Access identity provider IDs",
|
|
133
|
+
policies: "Comma-separated reusable Access policy IDs",
|
|
134
|
+
"existing-projects": "Required when enabling: protected or public for existing projects"
|
|
135
|
+
},
|
|
136
|
+
booleans: ["token-stdin", "protect-new-projects"],
|
|
137
|
+
method: "POST"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
group: "zero-trust",
|
|
141
|
+
action: "reconcile",
|
|
142
|
+
description: "Repair platform and project Access configuration drift",
|
|
143
|
+
path: "/zero-trust/reconcile",
|
|
144
|
+
method: "POST"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
group: "zero-trust",
|
|
148
|
+
action: "disable",
|
|
149
|
+
description: "Remove Void-managed Access applications and make projects public",
|
|
150
|
+
path: "/zero-trust/disable",
|
|
151
|
+
method: "POST"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
group: "zero-trust",
|
|
155
|
+
action: "project-status",
|
|
156
|
+
description: "Inspect one project Zero Trust override and effective state",
|
|
157
|
+
path: "/zero-trust/projects/:id",
|
|
158
|
+
positional: ["id"]
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
group: "zero-trust",
|
|
162
|
+
action: "project-protect",
|
|
163
|
+
description: "Protect one project, overriding the platform default",
|
|
164
|
+
path: "/zero-trust/projects/:id",
|
|
165
|
+
positional: ["id"],
|
|
166
|
+
method: "POST"
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
group: "zero-trust",
|
|
170
|
+
action: "project-public",
|
|
171
|
+
description: "Make one project public, overriding the platform default",
|
|
172
|
+
path: "/zero-trust/projects/:id",
|
|
173
|
+
positional: ["id"],
|
|
174
|
+
method: "POST"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
group: "zero-trust",
|
|
178
|
+
action: "project-reconcile",
|
|
179
|
+
description: "Repair Access configuration drift for one project",
|
|
180
|
+
path: "/zero-trust/projects/:id/reconcile",
|
|
181
|
+
positional: ["id"],
|
|
182
|
+
method: "POST"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
group: "deployment",
|
|
186
|
+
action: "list",
|
|
187
|
+
description: "List tenant deployments",
|
|
188
|
+
path: "/deployments",
|
|
189
|
+
values: {
|
|
190
|
+
project: "Project ID",
|
|
191
|
+
search: "Search deployments",
|
|
192
|
+
status: "Deployment status"
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
group: "deployment",
|
|
197
|
+
action: "show",
|
|
198
|
+
description: "Inspect a deployment",
|
|
199
|
+
path: "/deployments/:id",
|
|
200
|
+
positional: ["id"]
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
group: "deployment",
|
|
204
|
+
action: "cancel",
|
|
205
|
+
description: "Cancel a deployment",
|
|
206
|
+
path: "/deployments/:id/cancel",
|
|
207
|
+
positional: ["id"],
|
|
208
|
+
method: "POST"
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
group: "deployment",
|
|
212
|
+
action: "migrate-assets",
|
|
213
|
+
description: "Copy and verify legacy deployment assets in scoped R2 storage",
|
|
214
|
+
path: "/deployments/:id/migrate-assets",
|
|
215
|
+
positional: ["id"],
|
|
216
|
+
values: { cursor: "Resume from the last successful asset migration cursor" },
|
|
217
|
+
method: "POST"
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
group: "deployment",
|
|
221
|
+
action: "logs",
|
|
222
|
+
description: "Read runtime logs (JSON follow emits one object per line)",
|
|
223
|
+
path: "/deployments/:id/logs",
|
|
224
|
+
positional: ["id"],
|
|
225
|
+
values: {
|
|
226
|
+
since: "Duration or ISO timestamp",
|
|
227
|
+
cursor: "Opaque continuation cursor"
|
|
228
|
+
},
|
|
229
|
+
booleans: ["follow"]
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
group: "build",
|
|
233
|
+
action: "show",
|
|
234
|
+
description: "Inspect a managed build",
|
|
235
|
+
path: "/builds/:id",
|
|
236
|
+
positional: ["id"]
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
group: "build",
|
|
240
|
+
action: "logs",
|
|
241
|
+
description: "Read build logs (JSON follow emits one object per line)",
|
|
242
|
+
path: "/builds/:id/logs",
|
|
243
|
+
positional: ["id"],
|
|
244
|
+
values: { since: "Last received sequence number" },
|
|
245
|
+
booleans: ["follow"]
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
group: "signup",
|
|
249
|
+
action: "show",
|
|
250
|
+
description: "Inspect signup restrictions and allowlist",
|
|
251
|
+
path: "/signup"
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
group: "signup",
|
|
255
|
+
action: "restrict",
|
|
256
|
+
description: "Restrict signup to the allowlist",
|
|
257
|
+
path: "/signup/restrict",
|
|
258
|
+
method: "POST"
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
group: "signup",
|
|
262
|
+
action: "open",
|
|
263
|
+
description: "Open public signup",
|
|
264
|
+
path: "/signup/open",
|
|
265
|
+
method: "POST"
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
group: "signup",
|
|
269
|
+
action: "allow",
|
|
270
|
+
description: "Add a GitHub, email, or exact login identity grant",
|
|
271
|
+
path: "/signup/allow",
|
|
272
|
+
positional: ["type", "pattern"],
|
|
273
|
+
usage: ["void platform signup allow <github|email> <pattern> [options]", "void platform signup allow identity <connection-id> <subject> [options]"],
|
|
274
|
+
values: { note: "Allowlist note" },
|
|
275
|
+
method: "POST"
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
group: "signup",
|
|
279
|
+
action: "disallow",
|
|
280
|
+
description: "Remove a GitHub, email, or exact login identity grant",
|
|
281
|
+
path: "/signup/disallow",
|
|
282
|
+
positional: ["type", "pattern"],
|
|
283
|
+
usage: ["void platform signup disallow <github|email> <pattern> [options]", "void platform signup disallow identity <connection-id> <subject> [options]"],
|
|
284
|
+
method: "POST"
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
group: "signup",
|
|
288
|
+
action: "remove",
|
|
289
|
+
description: "Remove a GitHub or email allowlist pattern (compatibility alias)",
|
|
290
|
+
path: "/signup/remove",
|
|
291
|
+
positional: ["type", "pattern"],
|
|
292
|
+
method: "POST"
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
group: "invitation",
|
|
296
|
+
action: "list",
|
|
297
|
+
description: "List invitations",
|
|
298
|
+
path: "/invitations"
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
group: "invitation",
|
|
302
|
+
action: "send",
|
|
303
|
+
description: "Send invitations to comma-separated email addresses",
|
|
304
|
+
path: "/invitations/send",
|
|
305
|
+
positional: ["emails"],
|
|
306
|
+
method: "POST"
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
group: "invitation",
|
|
310
|
+
action: "revoke",
|
|
311
|
+
description: "Revoke an invitation",
|
|
312
|
+
path: "/invitations/:id/revoke",
|
|
313
|
+
positional: ["id"],
|
|
314
|
+
method: "POST"
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
group: "system",
|
|
318
|
+
action: "overview",
|
|
319
|
+
description: "Inspect platform usage and capacity",
|
|
320
|
+
path: "/system/overview"
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
group: "system",
|
|
324
|
+
action: "health",
|
|
325
|
+
description: "Check platform health",
|
|
326
|
+
path: "/system/health"
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
group: "system",
|
|
330
|
+
action: "cli-versions",
|
|
331
|
+
description: "Inspect CLI version adoption and deployment statistics",
|
|
332
|
+
path: "/system/cli-versions"
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
group: "system",
|
|
336
|
+
action: "asset-migrations",
|
|
337
|
+
description: "Inventory legacy assets in active and retained deployments",
|
|
338
|
+
path: "/system/asset-migrations",
|
|
339
|
+
values: {
|
|
340
|
+
page: "One-based page number",
|
|
341
|
+
limit: "Maximum 100 records per page"
|
|
342
|
+
}
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
group: "system",
|
|
346
|
+
action: "events",
|
|
347
|
+
description: "List operator audit events",
|
|
348
|
+
path: "/system/events"
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
group: "system",
|
|
352
|
+
action: "backfill-queue-tokens",
|
|
353
|
+
description: "Repair missing queue authentication tokens",
|
|
354
|
+
path: "/system/backfill-queue-tokens",
|
|
355
|
+
method: "POST"
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
group: "system",
|
|
359
|
+
action: "sandbox-drain",
|
|
360
|
+
description: "Drain and verify managed Sandbox container applications",
|
|
361
|
+
path: "/system/sandbox-drain",
|
|
362
|
+
values: { cursor: "Opaque cursor returned by --plan" },
|
|
363
|
+
method: "POST"
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
group: "email",
|
|
367
|
+
action: "policy",
|
|
368
|
+
description: "Show the recipient policy for the shared sender",
|
|
369
|
+
path: "/email/policy"
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
group: "email",
|
|
373
|
+
action: "policy-set",
|
|
374
|
+
description: "Set the recipient policy: verified, domains, or any",
|
|
375
|
+
path: "/email/policy",
|
|
376
|
+
positional: ["mode"],
|
|
377
|
+
values: { domains: "Comma-separated recipient domains for mode=domains" },
|
|
378
|
+
method: "POST"
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
group: "email",
|
|
382
|
+
action: "settings",
|
|
383
|
+
description: "Show platform email settings",
|
|
384
|
+
path: "/email/settings"
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
group: "email",
|
|
388
|
+
action: "settings-set",
|
|
389
|
+
description: "Set who manages email domains: self-serve or admin",
|
|
390
|
+
path: "/email/settings",
|
|
391
|
+
values: { domains: "self-serve or admin" },
|
|
392
|
+
method: "POST"
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
group: "email",
|
|
396
|
+
action: "limit",
|
|
397
|
+
description: "Set a project's monthly and burst recipient submission caps",
|
|
398
|
+
path: "/email/projects/:project/limit",
|
|
399
|
+
positional: ["project"],
|
|
400
|
+
values: {
|
|
401
|
+
monthly: "Recipient submissions per UTC calendar month",
|
|
402
|
+
burst: "Recipient submissions per rolling 60-second window"
|
|
403
|
+
},
|
|
404
|
+
method: "POST"
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
group: "email",
|
|
408
|
+
action: "logs",
|
|
409
|
+
description: "Inspect retained email receipt and recipient outcomes for a project",
|
|
410
|
+
path: "/email/projects/:project/logs",
|
|
411
|
+
positional: ["project"]
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
group: "email",
|
|
415
|
+
action: "attempts",
|
|
416
|
+
description: "List unresolved email send attempts awaiting operator reconciliation",
|
|
417
|
+
path: "/email/attempts",
|
|
418
|
+
values: { project: "Project id or slug" }
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
group: "email",
|
|
422
|
+
action: "attempt-resolve",
|
|
423
|
+
description: "Resolve a stopped send as outcome unknown and release its cleanup fence",
|
|
424
|
+
path: "/email/attempts/:id/resolve",
|
|
425
|
+
positional: ["id"],
|
|
426
|
+
values: { reason: "Audit reason without recipient or message content" },
|
|
427
|
+
booleans: ["ended"],
|
|
428
|
+
method: "POST"
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
group: "email",
|
|
432
|
+
action: "operation-resolve",
|
|
433
|
+
description: "Resolve an ended ambiguous email setup write with operator attestation",
|
|
434
|
+
path: "/email/operations/:id/resolve",
|
|
435
|
+
positional: ["id"],
|
|
436
|
+
values: {
|
|
437
|
+
outcome: "Provider outcome: applied or not-applied",
|
|
438
|
+
reason: "Audit reason for the verified provider outcome"
|
|
439
|
+
},
|
|
440
|
+
booleans: ["ended"],
|
|
441
|
+
method: "POST"
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
group: "email",
|
|
445
|
+
action: "shared-recipients",
|
|
446
|
+
description: "Inspect shared inbound recipient rules and interrupted creation intents",
|
|
447
|
+
path: "/email/shared-recipients",
|
|
448
|
+
values: { project: "Project id or slug, including a project awaiting deletion" }
|
|
449
|
+
},
|
|
450
|
+
{
|
|
451
|
+
group: "email",
|
|
452
|
+
action: "shared-recipient-resolve",
|
|
453
|
+
description: "Resolve an ended ambiguous shared recipient creation after provider inspection",
|
|
454
|
+
path: "/email/shared-recipients/:id/resolve",
|
|
455
|
+
positional: ["id"],
|
|
456
|
+
values: {
|
|
457
|
+
outcome: "Provider outcome: applied or not-applied",
|
|
458
|
+
reason: "Audit reason for the verified provider outcome"
|
|
459
|
+
},
|
|
460
|
+
booleans: ["ended"],
|
|
461
|
+
method: "POST"
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
group: "email",
|
|
465
|
+
action: "domains",
|
|
466
|
+
description: "List email domains registered on this platform",
|
|
467
|
+
path: "/email/domains",
|
|
468
|
+
values: { project: "Project id or slug" }
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
group: "email",
|
|
472
|
+
action: "domain-add",
|
|
473
|
+
description: "Register an email domain for a project with the platform credential",
|
|
474
|
+
path: "/email/domains",
|
|
475
|
+
positional: ["domain"],
|
|
476
|
+
values: { project: "Project id or slug" },
|
|
477
|
+
booleans: ["token-stdin"],
|
|
478
|
+
method: "POST"
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
group: "email",
|
|
482
|
+
action: "domain-status",
|
|
483
|
+
description: "Inspect an email domain's setup, credential and relay",
|
|
484
|
+
path: "/email/domains/:domain",
|
|
485
|
+
positional: ["domain"]
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
group: "email",
|
|
489
|
+
action: "domain-sync",
|
|
490
|
+
description: "Reconcile an email domain with its Cloudflare setup",
|
|
491
|
+
path: "/email/domains/:domain/sync",
|
|
492
|
+
positional: ["domain"],
|
|
493
|
+
method: "POST"
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
group: "email",
|
|
497
|
+
action: "domain-rotate-secret",
|
|
498
|
+
description: "Rotate an email domain's ingress secret",
|
|
499
|
+
path: "/email/domains/:domain/rotate-secret",
|
|
500
|
+
positional: ["domain"],
|
|
501
|
+
method: "POST"
|
|
502
|
+
},
|
|
503
|
+
{
|
|
504
|
+
group: "email",
|
|
505
|
+
action: "domain-remove",
|
|
506
|
+
description: "Remove an email domain and its Cloudflare setup",
|
|
507
|
+
path: "/email/domains/:domain/remove",
|
|
508
|
+
positional: ["domain"],
|
|
509
|
+
booleans: ["token-stdin"],
|
|
510
|
+
method: "POST"
|
|
511
|
+
},
|
|
512
|
+
{
|
|
513
|
+
group: "worker",
|
|
514
|
+
action: "list",
|
|
515
|
+
description: "List hosted platform workers",
|
|
516
|
+
path: "/workers",
|
|
517
|
+
values: { environment: "production or staging" }
|
|
518
|
+
},
|
|
519
|
+
{
|
|
520
|
+
group: "worker",
|
|
521
|
+
action: "show",
|
|
522
|
+
description: "Inspect hosted worker versions",
|
|
523
|
+
path: "/workers/:id",
|
|
524
|
+
positional: ["id"],
|
|
525
|
+
values: { environment: "production or staging" }
|
|
526
|
+
},
|
|
527
|
+
{
|
|
528
|
+
group: "worker",
|
|
529
|
+
action: "rollback",
|
|
530
|
+
description: "Roll back a hosted worker to a version",
|
|
531
|
+
path: "/workers/:id/rollback",
|
|
532
|
+
positional: ["id", "versionId"],
|
|
533
|
+
values: { environment: "production or staging" },
|
|
534
|
+
method: "POST"
|
|
535
|
+
},
|
|
536
|
+
{
|
|
537
|
+
group: "worker",
|
|
538
|
+
action: "rollback-all",
|
|
539
|
+
description: "Roll back all hosted workers to their previous versions",
|
|
540
|
+
path: "/workers/rollback-all",
|
|
541
|
+
values: { environment: "production or staging" },
|
|
542
|
+
method: "POST"
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
group: "worker",
|
|
546
|
+
action: "events",
|
|
547
|
+
description: "List hosted worker events or inspect a batch",
|
|
548
|
+
path: "/workers/events",
|
|
549
|
+
positional: ["batchId"],
|
|
550
|
+
optionalPositional: true,
|
|
551
|
+
values: { environment: "production or staging" }
|
|
552
|
+
}
|
|
553
|
+
];
|
|
554
|
+
const operatorGroups = [...new Set(operatorCommands.map(({ group }) => group))];
|
|
555
|
+
function parseOperatorArgs(args) {
|
|
556
|
+
const positional = [];
|
|
557
|
+
const values = {};
|
|
558
|
+
const flags = /* @__PURE__ */ new Set();
|
|
559
|
+
const booleanFlags = /* @__PURE__ */ new Set([
|
|
560
|
+
"json",
|
|
561
|
+
"plan",
|
|
562
|
+
"yes",
|
|
563
|
+
"follow",
|
|
564
|
+
"token-stdin",
|
|
565
|
+
"force",
|
|
566
|
+
"ended",
|
|
567
|
+
...operatorCommands.flatMap((command) => command.booleans ?? [])
|
|
568
|
+
]);
|
|
569
|
+
for (let index = 0; index < args.length; index++) {
|
|
570
|
+
const arg = args[index];
|
|
571
|
+
if (!arg.startsWith("-")) {
|
|
572
|
+
positional.push(arg);
|
|
573
|
+
continue;
|
|
574
|
+
}
|
|
575
|
+
if (!arg.startsWith("--")) throw new Error(`platform: Unknown flag '${arg}'.`);
|
|
576
|
+
const flag = arg.slice(2);
|
|
577
|
+
if (flags.has(flag) || Object.hasOwn(values, flag)) throw new Error(`platform: Duplicate flag '${arg}'.`);
|
|
578
|
+
if (booleanFlags.has(flag)) flags.add(flag);
|
|
579
|
+
else {
|
|
580
|
+
const value = args[++index];
|
|
581
|
+
if (!value || value.startsWith("-")) throw new Error(`platform: ${arg} requires a value.`);
|
|
582
|
+
values[flag] = value;
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
const [group = "", action = "", ...parameters] = positional;
|
|
586
|
+
if (!operatorGroups.includes(group)) throw new Error("platform: Unknown operator command group.");
|
|
587
|
+
const parsed = {
|
|
588
|
+
subcommand: "operator",
|
|
589
|
+
group,
|
|
590
|
+
action,
|
|
591
|
+
connection: values.connection ?? "",
|
|
592
|
+
json: flags.has("json"),
|
|
593
|
+
plan: flags.has("plan"),
|
|
594
|
+
yes: flags.has("yes"),
|
|
595
|
+
follow: flags.has("follow"),
|
|
596
|
+
tokenStdin: flags.has("token-stdin"),
|
|
597
|
+
provider: values.provider ?? "github",
|
|
598
|
+
...values.provider ? { providerExplicit: true } : {},
|
|
599
|
+
method: "GET",
|
|
600
|
+
path: "",
|
|
601
|
+
query: {},
|
|
602
|
+
body: {}
|
|
603
|
+
};
|
|
604
|
+
if (!action && args.length === 1) return parsed;
|
|
605
|
+
const command = operatorCommands.find((entry) => entry.group === group && entry.action === action);
|
|
606
|
+
if (!command) throw new Error(`platform: Usage: void platform ${group} <${operatorCommands.filter((entry) => entry.group === group).map(({ action }) => action).join("|")}>.`);
|
|
607
|
+
const count = command.positional?.length ?? 0;
|
|
608
|
+
const identitySignupEntry = group === "signup" && ["allow", "disallow"].includes(action) && parameters[0] === "identity";
|
|
609
|
+
if (group === "signup" && action === "remove" && parameters[0] === "identity") throw new Error("platform: Use `void platform signup disallow identity <connection-id> <subject>`.");
|
|
610
|
+
const expectedCount = identitySignupEntry ? 3 : count;
|
|
611
|
+
if (parameters.length > expectedCount || !command.optionalPositional && parameters.length !== expectedCount) throw new Error(`platform: Usage: ${command.usage?.[identitySignupEntry ? 1 : 0]?.replace(/ \[options\]$/, "") ?? `void platform ${group} ${action}${command.positional?.map((name) => ` <${name}>`).join("") ?? ""}`}.`);
|
|
612
|
+
const paged = action === "list" || action === "events" || action === "logs" || action === "attempts" || action === "shared-recipients";
|
|
613
|
+
const allowed = /* @__PURE__ */ new Set([
|
|
614
|
+
"connection",
|
|
615
|
+
...command.method ? ["timeout"] : [],
|
|
616
|
+
...Object.keys(command.values ?? {}),
|
|
617
|
+
...paged ? ["limit", ...action !== "logs" || group === "email" ? ["page"] : []] : []
|
|
618
|
+
]);
|
|
619
|
+
for (const name of Object.keys(values)) if (!allowed.has(name)) throw new Error(`platform: Unknown flag '--${name}' for ${group} ${action}.`);
|
|
620
|
+
for (const name of flags) if (![
|
|
621
|
+
"json",
|
|
622
|
+
...command.method ? ["yes", "plan"] : [],
|
|
623
|
+
...command.booleans ?? []
|
|
624
|
+
].includes(name)) throw new Error(`platform: Unknown flag '--${name}' for ${group} ${action}.`);
|
|
625
|
+
if (parsed.plan && parsed.yes) throw new Error("platform: --plan and --yes cannot be combined.");
|
|
626
|
+
parsed.path = command.path;
|
|
627
|
+
parsed.method = command.method ?? "GET";
|
|
628
|
+
if (identitySignupEntry) {
|
|
629
|
+
const connectionId = parameters[1];
|
|
630
|
+
const subject = parameters[2];
|
|
631
|
+
if (!/^[a-z][a-z0-9-]{0,63}$/.test(connectionId)) throw new Error("platform: Invalid login connection ID.");
|
|
632
|
+
if (!subject || subject.length > 255) throw new Error("platform: Identity subject must be 1–255 characters.");
|
|
633
|
+
parsed.body = {
|
|
634
|
+
type: "identity",
|
|
635
|
+
connectionId,
|
|
636
|
+
subject
|
|
637
|
+
};
|
|
638
|
+
} else for (const [index, name] of (command.positional ?? []).entries()) {
|
|
639
|
+
const value = parameters[index];
|
|
640
|
+
if (value === void 0) continue;
|
|
641
|
+
if (value === "." || value === "..") throw new Error("platform: An object ID cannot be a dot path segment.");
|
|
642
|
+
if (parsed.path.includes(`:${name}`)) parsed.path = parsed.path.replace(`:${name}`, encodeURIComponent(value));
|
|
643
|
+
else if (group === "worker" && action === "events") parsed.path += `/${encodeURIComponent(value)}`;
|
|
644
|
+
else parsed.body[name] = name === "emails" ? value.split(",").map((email) => email.trim()) : value;
|
|
645
|
+
}
|
|
646
|
+
for (const [name, value] of Object.entries(values)) {
|
|
647
|
+
if (name === "connection" || name === "provider") continue;
|
|
648
|
+
if (name === "timeout") {
|
|
649
|
+
const maximum = OPERATOR_MAX_TIMEOUT_MS / 1e3;
|
|
650
|
+
if (!/^[1-9]\d*$/.test(value) || Number(value) > maximum) throw new Error(`platform: --timeout must be an integer from 1 to ${maximum} seconds.`);
|
|
651
|
+
parsed.timeoutMs = Number(value) * 1e3;
|
|
652
|
+
continue;
|
|
653
|
+
}
|
|
654
|
+
if (name === "page" || name === "limit") {
|
|
655
|
+
const maximum = name === "limit" ? action === "logs" && group !== "email" ? 500 : 100 : 1e6;
|
|
656
|
+
if (!/^[1-9]\d*$/.test(value) || Number(value) > maximum) throw new Error(`platform: --${name} must be an integer from 1 to ${maximum}.`);
|
|
657
|
+
}
|
|
658
|
+
if (name === "since" && group === "build" && (!/^\d+$/.test(value) || !Number.isSafeInteger(Number(value)))) throw new Error("platform: --since must be a nonnegative safe integer for build logs.");
|
|
659
|
+
if (name === "environment" && !["production", "staging"].includes(value)) throw new Error("platform: --environment must be production or staging.");
|
|
660
|
+
if (parsed.method === "POST") parsed.body[name] = value;
|
|
661
|
+
else parsed.query[name] = value;
|
|
662
|
+
}
|
|
663
|
+
if (parsed.body.type && ![
|
|
664
|
+
"github",
|
|
665
|
+
"email",
|
|
666
|
+
"identity"
|
|
667
|
+
].includes(String(parsed.body.type))) throw new Error("platform: Signup grant type must be github, email, or identity.");
|
|
668
|
+
for (const name of command.booleans ?? []) if (name !== "token-stdin" && flags.has(name)) parsed.body[name] = true;
|
|
669
|
+
if (group === "zero-trust" && action === "configure") {
|
|
670
|
+
if (!parsed.tokenStdin) throw new Error("platform: zero-trust configure requires --token-stdin.");
|
|
671
|
+
const identityProviderIds = values["identity-providers"]?.split(",").map((entry) => entry.trim()).filter(Boolean);
|
|
672
|
+
const policyIds = values.policies?.split(",").map((entry) => entry.trim()).filter(Boolean);
|
|
673
|
+
const existingProjects = values["existing-projects"];
|
|
674
|
+
if (!identityProviderIds?.length || !policyIds?.length) throw new Error("platform: zero-trust configure requires --identity-providers and --policies.");
|
|
675
|
+
if (existingProjects !== void 0 && existingProjects !== "protected" && existingProjects !== "public") throw new Error("platform: --existing-projects must be protected or public.");
|
|
676
|
+
parsed.body = {
|
|
677
|
+
identityProviderIds,
|
|
678
|
+
policyIds,
|
|
679
|
+
...existingProjects ? { existingProjects } : {},
|
|
680
|
+
protectNewProjects: flags.has("protect-new-projects")
|
|
681
|
+
};
|
|
682
|
+
} else if (group === "zero-trust" && action === "status") {
|
|
683
|
+
delete parsed.body.check;
|
|
684
|
+
if (flags.has("check")) parsed.query.check = "true";
|
|
685
|
+
} else if (group === "zero-trust" && action === "project-protect") parsed.body.protected = true;
|
|
686
|
+
else if (group === "zero-trust" && action === "project-public") parsed.body.protected = false;
|
|
687
|
+
return parsed;
|
|
688
|
+
}
|
|
689
|
+
//#endregion
|
|
690
|
+
export { operatorGroups as n, parseOperatorArgs as r, operatorCommands as t };
|