@spacefast/common 0.0.23 → 0.0.26
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/brand-assets/LICENSE-Haskoy.txt +93 -0
- package/brand-assets/haskoy-latin-variable.woff2 +0 -0
- package/brand-assets/spacefast-favicon.svg +4 -4
- package/brand-assets/spacefast-sf-full-bleed.svg +3 -3
- package/brand-assets/spacefast-wordmark.svg +2 -4
- package/dist/agents/connect-targets.js +1 -1
- package/dist/agents/private-key-oauth.d.ts +0 -1
- package/dist/agents/private-key-oauth.js +46 -63
- package/dist/brand-assets-build.js +4 -6
- package/dist/brand-assets.d.ts +5 -15
- package/dist/brand-assets.js +15 -14
- package/dist/config/domains.d.ts +47 -7
- package/dist/config/domains.js +66 -10
- package/dist/config/index.d.ts +0 -1
- package/dist/config/index.js +0 -1
- package/dist/contracts/abuse.d.ts +2 -0
- package/dist/contracts/abuse.js +12 -0
- package/dist/contracts/access.d.ts +124 -12
- package/dist/contracts/access.js +73 -9
- package/dist/contracts/activity.d.ts +1 -1
- package/dist/contracts/activity.js +5 -12
- package/dist/contracts/api-keys.d.ts +21 -21
- package/dist/contracts/api-keys.js +2 -2
- package/dist/contracts/beta.js +1 -1
- package/dist/contracts/billing.d.ts +3 -35
- package/dist/contracts/billing.js +33 -52
- package/dist/contracts/builds.d.ts +30 -18
- package/dist/contracts/builds.js +28 -9
- package/dist/contracts/channels.js +1 -1
- package/dist/contracts/cli.d.ts +10 -0
- package/dist/contracts/cli.js +10 -0
- package/dist/contracts/collab-public.d.ts +63 -0
- package/dist/contracts/collab-public.js +46 -0
- package/dist/contracts/comments.d.ts +282 -53
- package/dist/contracts/comments.js +173 -52
- package/dist/contracts/common.d.ts +3 -3
- package/dist/contracts/common.js +5 -5
- package/dist/contracts/crons.d.ts +35 -0
- package/dist/contracts/crons.js +42 -0
- package/dist/contracts/device-auth.d.ts +6 -6
- package/dist/contracts/device-auth.js +2 -2
- package/dist/contracts/docs.js +2 -2
- package/dist/contracts/domains.d.ts +38 -27
- package/dist/contracts/domains.js +29 -2
- package/dist/contracts/enums.d.ts +34 -30
- package/dist/contracts/enums.js +62 -48
- package/dist/contracts/error-code-meta.d.ts +50 -125
- package/dist/contracts/error-code-meta.js +29 -41
- package/dist/contracts/error-codes.d.ts +1 -1
- package/dist/contracts/error-codes.js +14 -33
- package/dist/contracts/execution.d.ts +47 -66
- package/dist/contracts/execution.js +53 -49
- package/dist/contracts/feature-lifecycle-core.d.ts +0 -6
- package/dist/contracts/feature-lifecycle-core.js +2 -31
- package/dist/contracts/feature-lifecycle.d.ts +12 -52
- package/dist/contracts/feature-lifecycle.js +16 -59
- package/dist/contracts/features.d.ts +48 -60
- package/dist/contracts/features.js +59 -51
- package/dist/contracts/functions.d.ts +266 -72
- package/dist/contracts/functions.js +260 -37
- package/dist/contracts/git.d.ts +28 -34
- package/dist/contracts/git.js +10 -11
- package/dist/contracts/grants.d.ts +9 -5
- package/dist/contracts/grants.js +18 -9
- package/dist/contracts/ids.js +2 -2
- package/dist/contracts/internal.d.ts +8 -6
- package/dist/contracts/internal.js +12 -12
- package/dist/contracts/mcp.d.ts +11 -0
- package/dist/contracts/mcp.js +5 -0
- package/dist/contracts/me.js +1 -1
- package/dist/contracts/oauth-resources.d.ts +4 -3
- package/dist/contracts/oauth-resources.js +12 -3
- package/dist/contracts/operations.d.ts +90 -5
- package/dist/contracts/operations.js +77 -3
- package/dist/contracts/pages.d.ts +12 -7
- package/dist/contracts/pages.js +24 -1
- package/dist/contracts/plan-policy.d.ts +0 -2
- package/dist/contracts/plan-policy.js +2 -3
- package/dist/contracts/platform.d.ts +61 -148
- package/dist/contracts/platform.js +70 -126
- package/dist/contracts/publish-archive.d.ts +508 -0
- package/dist/contracts/publish-archive.js +32 -0
- package/dist/contracts/push-new.d.ts +4 -4
- package/dist/contracts/quotas.js +2 -2
- package/dist/contracts/repository-connections.d.ts +43 -30
- package/dist/contracts/repository-connections.js +11 -3
- package/dist/contracts/resources.d.ts +12 -24
- package/dist/contracts/resources.js +36 -16
- package/dist/contracts/runtime-api.d.ts +433 -192
- package/dist/contracts/runtime-api.js +421 -356
- package/dist/contracts/runtime-app.d.ts +127 -120
- package/dist/contracts/runtime-app.js +19 -10
- package/dist/contracts/runtime-db.d.ts +5 -5
- package/dist/contracts/runtime-db.js +2 -2
- package/dist/contracts/runtime-purge.d.ts +8 -0
- package/dist/contracts/runtime-purge.js +7 -0
- package/dist/contracts/runtime-services.d.ts +219 -0
- package/dist/contracts/runtime-services.js +437 -0
- package/dist/contracts/runtime-storage.d.ts +46 -32
- package/dist/contracts/runtime-storage.js +31 -8
- package/dist/contracts/sf-config-v1.d.ts +48 -10
- package/dist/contracts/space-config.d.ts +69 -18
- package/dist/contracts/space-config.js +226 -27
- package/dist/contracts/spaces.d.ts +236 -450
- package/dist/contracts/spaces.js +131 -151
- package/dist/contracts/superadmin-activity.d.ts +57 -4
- package/dist/contracts/superadmin-activity.js +48 -2
- package/dist/contracts/superadmin-search.d.ts +126 -0
- package/dist/contracts/superadmin-search.js +61 -0
- package/dist/contracts/superadmin-spaces.d.ts +361 -92
- package/dist/contracts/superadmin-spaces.js +97 -24
- package/dist/contracts/superadmin-teams.d.ts +28 -10
- package/dist/contracts/superadmin-teams.js +5 -8
- package/dist/contracts/superadmin-tenants.d.ts +0 -6
- package/dist/contracts/superadmin-tenants.js +1 -7
- package/dist/contracts/superadmin.d.ts +135 -54
- package/dist/contracts/superadmin.js +46 -23
- package/dist/contracts/tags.d.ts +12 -12
- package/dist/contracts/tags.js +3 -3
- package/dist/contracts/teams.d.ts +49 -14
- package/dist/contracts/teams.js +40 -22
- package/dist/contracts/transfers.d.ts +0 -49
- package/dist/contracts/transfers.js +4 -8
- package/dist/contracts/usage.d.ts +61 -0
- package/dist/contracts/usage.js +64 -0
- package/dist/contracts/variables.d.ts +2 -7
- package/dist/contracts/variables.js +9 -8
- package/dist/contracts/webhooks.d.ts +2 -2
- package/dist/contracts/zero.d.ts +102 -73
- package/dist/contracts/zero.js +94 -32
- package/dist/dashboard-paths/index.d.ts +1 -1
- package/dist/dashboard-paths/index.js +1 -0
- package/dist/docs/agent-prose.d.ts +2 -2
- package/dist/docs/agent-prose.js +63 -70
- package/dist/docs/agent-setup.js +45 -15
- package/dist/docs/catalog.d.ts +24 -24
- package/dist/docs/catalog.js +35 -24
- package/dist/docs/error-docs.js +194 -270
- package/dist/docs/skills.d.ts +12 -12
- package/dist/docs/skills.js +4 -4
- package/dist/test-helpers/fetch-stub.d.ts +16 -0
- package/dist/test-helpers/fetch-stub.js +25 -0
- package/dist/utils/build-settings.d.ts +5 -1
- package/dist/utils/build-settings.js +91 -13
- package/dist/utils/canonical-json.d.ts +10 -0
- package/dist/utils/canonical-json.js +22 -0
- package/dist/utils/cast-transport.d.ts +28 -0
- package/dist/utils/cast-transport.js +52 -0
- package/dist/utils/claim-token.d.ts +0 -8
- package/dist/utils/claim-token.js +3 -15
- package/dist/utils/concurrency.js +1 -0
- package/dist/utils/credential-policy.d.ts +1 -1
- package/dist/utils/credential-policy.js +4 -3
- package/dist/utils/dns-instructions.js +9 -9
- package/dist/utils/env-file.d.ts +17 -0
- package/dist/utils/env-file.js +96 -0
- package/dist/utils/error-code.d.ts +2 -0
- package/dist/utils/error-code.js +8 -0
- package/dist/utils/generate-space-name.d.ts +8 -10
- package/dist/utils/generate-space-name.js +206 -21
- package/dist/utils/grant-decision.fixtures.json +2938 -0
- package/dist/utils/grants.d.ts +2 -0
- package/dist/utils/grants.js +26 -1
- package/dist/utils/gravatar.d.ts +9 -0
- package/dist/utils/gravatar.js +31 -0
- package/dist/utils/idempotency.d.ts +6 -0
- package/dist/utils/idempotency.js +28 -0
- package/dist/utils/local-space-state.d.ts +9 -16
- package/dist/utils/local-space-state.js +20 -50
- package/dist/utils/one-shot-replay.d.ts +4 -1
- package/dist/utils/page-colors.d.ts +14 -12
- package/dist/utils/page-colors.js +15 -13
- package/dist/utils/page-fonts.d.ts +2 -2
- package/dist/utils/page-fonts.js +15 -4
- package/dist/utils/pages.d.ts +21 -3
- package/dist/utils/pages.js +42 -13
- package/dist/utils/publish-form-data.d.ts +12 -0
- package/dist/utils/publish-form-data.js +10 -0
- package/dist/utils/publish-policy.d.ts +27 -0
- package/dist/utils/publish-policy.fixtures.json +403 -0
- package/dist/utils/publish-policy.js +45 -20
- package/dist/utils/push-new.d.ts +7 -0
- package/dist/utils/push-new.js +7 -0
- package/dist/utils/query-keys.d.ts +4 -5
- package/dist/utils/query-keys.js +2 -3
- package/dist/utils/runtime-paths.d.ts +5 -0
- package/dist/utils/runtime-paths.js +5 -0
- package/dist/utils/runtime-upload-batch.d.ts +0 -5
- package/dist/utils/runtime-upload-batch.js +1 -27
- package/dist/utils/runtime-upload.d.ts +6 -11
- package/dist/utils/runtime-upload.js +10 -13
- package/dist/utils/secure-local-file.js +5 -16
- package/dist/utils/space-config.d.ts +1 -34
- package/dist/utils/space-config.js +8 -326
- package/dist/utils/static-runtime-policy.d.ts +9 -3
- package/dist/utils/static-runtime-policy.fixtures.json +38 -41
- package/dist/utils/static-runtime-policy.js +22 -56
- package/dist/utils/storage-policy.d.ts +1 -1
- package/dist/utils/storage-policy.js +3 -1
- package/dist/utils/structured-error.d.ts +14 -0
- package/dist/utils/structured-error.js +22 -0
- package/dist/utils/upload-session.d.ts +4 -1
- package/dist/utils/upload-session.js +33 -5
- package/dist/utils/version-path.js +13 -4
- package/dist/vocabulary.d.ts +13 -11
- package/dist/vocabulary.js +42 -28
- package/package.json +7 -17
- package/dist/config/postgres-budget.d.ts +0 -129
- package/dist/config/postgres-budget.js +0 -140
- package/dist/config/postgres-budget.json +0 -51
- package/dist/contracts/archives.d.ts +0 -331
- package/dist/contracts/archives.js +0 -120
- package/dist/contracts/deployments.d.ts +0 -574
- package/dist/contracts/deployments.js +0 -97
- package/dist/contracts/sites.d.ts +0 -416
- package/dist/contracts/sites.js +0 -168
- package/dist/contracts/superadmin-queues.d.ts +0 -414
- package/dist/contracts/superadmin-queues.js +0 -202
- package/dist/contracts/superadmin-runtime.d.ts +0 -27
- package/dist/contracts/superadmin-runtime.js +0 -38
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/utils/api.d.ts +0 -4
- package/dist/utils/api.js +0 -13
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { freezeFeatureRegistryEntry } from "./feature-lifecycle-core.js";
|
|
2
|
-
export {
|
|
2
|
+
export { FEATURE_OWNER_IDS, FEATURE_STAGES, freezeFeatureRegistryEntry, validateFeatureLifecycleRegistry, } from "./feature-lifecycle-core.js";
|
|
3
3
|
const featureEntries = Object.freeze([
|
|
4
4
|
{
|
|
5
5
|
cohort: "launch",
|
|
@@ -13,7 +13,6 @@ const featureEntries = Object.freeze([
|
|
|
13
13
|
enabledForA8c: true,
|
|
14
14
|
planDefaults: {},
|
|
15
15
|
},
|
|
16
|
-
assignmentScopes: ["team", "global"],
|
|
17
16
|
docs: null,
|
|
18
17
|
owner: "team:commerce",
|
|
19
18
|
requires: [],
|
|
@@ -21,7 +20,6 @@ const featureEntries = Object.freeze([
|
|
|
21
20
|
reviewAfter: "2026-08-11",
|
|
22
21
|
removeAfter: null,
|
|
23
22
|
gaAt: null,
|
|
24
|
-
allowedActorPolicies: ["request_actor"],
|
|
25
23
|
downRamp: {
|
|
26
24
|
code: "paid_acquisition_stop",
|
|
27
25
|
summary: "Deny new acquisition; allow cancel, portal, provider reconciliation and purchase recovery.",
|
|
@@ -39,7 +37,6 @@ const featureEntries = Object.freeze([
|
|
|
39
37
|
enabledForA8c: true,
|
|
40
38
|
planDefaults: {},
|
|
41
39
|
},
|
|
42
|
-
assignmentScopes: ["global"],
|
|
43
40
|
docs: {
|
|
44
41
|
channel: "public",
|
|
45
42
|
slug: "/docs/publishing/anonymous",
|
|
@@ -51,7 +48,6 @@ const featureEntries = Object.freeze([
|
|
|
51
48
|
reviewAfter: "2026-07-26",
|
|
52
49
|
removeAfter: "2026-08-11",
|
|
53
50
|
gaAt: "2026-07-12",
|
|
54
|
-
allowedActorPolicies: ["request_actor", "global_policy"],
|
|
55
51
|
downRamp: {
|
|
56
52
|
code: "anonymous_publish_stop",
|
|
57
53
|
summary: "Deny new anonymous content/version/upload authorization or commit/finalize/promote/push side effects; already-issued bounded staging ingress stays quarantined, while static serving and service cleanup remain.",
|
|
@@ -87,7 +83,6 @@ const featureEntries = Object.freeze([
|
|
|
87
83
|
surface: true,
|
|
88
84
|
defaultEnabled: false,
|
|
89
85
|
runtime: null,
|
|
90
|
-
assignmentScopes: ["user", "team", "global"],
|
|
91
86
|
docs: {
|
|
92
87
|
channel: "handbook",
|
|
93
88
|
slug: "/features/domains/catalog",
|
|
@@ -99,7 +94,6 @@ const featureEntries = Object.freeze([
|
|
|
99
94
|
reviewAfter: "2026-08-11",
|
|
100
95
|
removeAfter: "2026-10-10",
|
|
101
96
|
gaAt: null,
|
|
102
|
-
allowedActorPolicies: ["request_actor"],
|
|
103
97
|
downRamp: {
|
|
104
98
|
code: "domain_catalog_hide",
|
|
105
99
|
summary: "Hide authenticated catalog; public suggestions, availability and WHOIS remain.",
|
|
@@ -118,7 +112,6 @@ const featureEntries = Object.freeze([
|
|
|
118
112
|
enabledForA8c: true,
|
|
119
113
|
planDefaults: {},
|
|
120
114
|
},
|
|
121
|
-
assignmentScopes: ["user", "team", "global"],
|
|
122
115
|
docs: {
|
|
123
116
|
channel: "handbook",
|
|
124
117
|
slug: "/features/domains/registration",
|
|
@@ -130,7 +123,6 @@ const featureEntries = Object.freeze([
|
|
|
130
123
|
reviewAfter: "2026-08-11",
|
|
131
124
|
removeAfter: "2026-10-10",
|
|
132
125
|
gaAt: null,
|
|
133
|
-
allowedActorPolicies: ["request_actor", "persisted_request_actor"],
|
|
134
126
|
downRamp: {
|
|
135
127
|
code: "domain_registration_stop",
|
|
136
128
|
summary: "Deny new customer mutations and unstarted provider submits; generic existing-domain read plus service-only reconciliation/compensation for externally committed work continue.",
|
|
@@ -149,7 +141,6 @@ const featureEntries = Object.freeze([
|
|
|
149
141
|
enabledForA8c: true,
|
|
150
142
|
planDefaults: {},
|
|
151
143
|
},
|
|
152
|
-
assignmentScopes: ["user", "team", "global"],
|
|
153
144
|
docs: {
|
|
154
145
|
channel: "handbook",
|
|
155
146
|
slug: "/features/domains/dns-management",
|
|
@@ -161,7 +152,6 @@ const featureEntries = Object.freeze([
|
|
|
161
152
|
reviewAfter: "2026-08-11",
|
|
162
153
|
removeAfter: "2026-10-10",
|
|
163
154
|
gaAt: null,
|
|
164
|
-
allowedActorPolicies: ["request_actor", "persisted_request_actor"],
|
|
165
155
|
downRamp: {
|
|
166
156
|
code: "dns_management_stop",
|
|
167
157
|
summary: "Deny customer mutation and unstarted provider apply; generic authoritative read plus service-only rollback/reconciliation for externally committed work continue.",
|
|
@@ -179,7 +169,6 @@ const featureEntries = Object.freeze([
|
|
|
179
169
|
enabledForA8c: true,
|
|
180
170
|
planDefaults: {},
|
|
181
171
|
},
|
|
182
|
-
assignmentScopes: ["team", "global"],
|
|
183
172
|
docs: {
|
|
184
173
|
channel: "handbook",
|
|
185
174
|
slug: "/features/domains/wpcom-dns",
|
|
@@ -191,7 +180,6 @@ const featureEntries = Object.freeze([
|
|
|
191
180
|
reviewAfter: "2026-08-11",
|
|
192
181
|
removeAfter: "2026-10-10",
|
|
193
182
|
gaAt: null,
|
|
194
|
-
allowedActorPolicies: ["request_actor"],
|
|
195
183
|
downRamp: {
|
|
196
184
|
code: "wpcom_dns_stop",
|
|
197
185
|
summary: "Deny new automation; service/operator detach and reconciliation continue.",
|
|
@@ -209,7 +197,6 @@ const featureEntries = Object.freeze([
|
|
|
209
197
|
enabledForA8c: true,
|
|
210
198
|
planDefaults: {},
|
|
211
199
|
},
|
|
212
|
-
assignmentScopes: ["user", "team", "global"],
|
|
213
200
|
docs: {
|
|
214
201
|
channel: "handbook",
|
|
215
202
|
slug: "/features/domains/domain-connect",
|
|
@@ -221,7 +208,6 @@ const featureEntries = Object.freeze([
|
|
|
221
208
|
reviewAfter: "2026-08-11",
|
|
222
209
|
removeAfter: "2026-10-10",
|
|
223
210
|
gaAt: null,
|
|
224
|
-
allowedActorPolicies: ["request_actor", "persisted_request_actor"],
|
|
225
211
|
downRamp: {
|
|
226
212
|
code: "domain_connect_stop",
|
|
227
213
|
summary: "Deny new setup and every uncommitted callback; after an authenticated external commit, narrowly typed service-only reconciliation or compensation continues idempotently.",
|
|
@@ -241,7 +227,6 @@ const featureEntries = Object.freeze([
|
|
|
241
227
|
internal: true,
|
|
242
228
|
},
|
|
243
229
|
},
|
|
244
|
-
assignmentScopes: ["team", "global"],
|
|
245
230
|
docs: {
|
|
246
231
|
channel: "public",
|
|
247
232
|
slug: "/docs/spaces/proxy-routes",
|
|
@@ -253,7 +238,6 @@ const featureEntries = Object.freeze([
|
|
|
253
238
|
reviewAfter: "2026-08-11",
|
|
254
239
|
removeAfter: "2026-10-10",
|
|
255
240
|
gaAt: null,
|
|
256
|
-
allowedActorPolicies: ["resource_team"],
|
|
257
241
|
downRamp: {
|
|
258
242
|
code: "proxy_binding_stop",
|
|
259
243
|
summary: "Deny new binds; discoverable authenticated read/detach plus service reconciliation continue.",
|
|
@@ -263,7 +247,7 @@ const featureEntries = Object.freeze([
|
|
|
263
247
|
cohort: "launch",
|
|
264
248
|
key: "collab.notices",
|
|
265
249
|
name: "Realtime notices",
|
|
266
|
-
description: "
|
|
250
|
+
description: "Live: the Space notice room. Turns on the dashboard's realtime comment feed and the overlay's notice chips. Not an authorization — who may watch a Space's feed is decided by its Grants.",
|
|
267
251
|
stage: "internal",
|
|
268
252
|
surface: false,
|
|
269
253
|
defaultEnabled: false,
|
|
@@ -271,7 +255,6 @@ const featureEntries = Object.freeze([
|
|
|
271
255
|
enabledForA8c: true,
|
|
272
256
|
planDefaults: {},
|
|
273
257
|
},
|
|
274
|
-
assignmentScopes: ["team", "global"],
|
|
275
258
|
docs: null,
|
|
276
259
|
owner: "team:collaboration",
|
|
277
260
|
requires: [],
|
|
@@ -279,7 +262,6 @@ const featureEntries = Object.freeze([
|
|
|
279
262
|
reviewAfter: "2026-08-11",
|
|
280
263
|
removeAfter: null,
|
|
281
264
|
gaAt: null,
|
|
282
|
-
allowedActorPolicies: ["resource_team"],
|
|
283
265
|
downRamp: {
|
|
284
266
|
code: "notices_stop",
|
|
285
267
|
summary: "Stop mint/publish; service/operator revoke and cleanup continue.",
|
|
@@ -301,9 +283,8 @@ const featureEntries = Object.freeze([
|
|
|
301
283
|
key: "sites.dedicated_runtime",
|
|
302
284
|
name: "Dedicated runtime sites",
|
|
303
285
|
description: "Allows teams to create dedicated WP.Cloud sites and place team spaces on them.",
|
|
304
|
-
//
|
|
305
|
-
//
|
|
306
|
-
// allocate the isolated infrastructure it exposes.
|
|
286
|
+
// Every Space owns its runtime site. The flag remains only as the
|
|
287
|
+
// operational down-ramp for new placement and materialization.
|
|
307
288
|
stage: "ga",
|
|
308
289
|
surface: true,
|
|
309
290
|
defaultEnabled: true,
|
|
@@ -312,7 +293,6 @@ const featureEntries = Object.freeze([
|
|
|
312
293
|
enabledForA8c: true,
|
|
313
294
|
planDefaults: {},
|
|
314
295
|
},
|
|
315
|
-
assignmentScopes: ["team", "global"],
|
|
316
296
|
docs: {
|
|
317
297
|
channel: "public",
|
|
318
298
|
slug: "/docs/apps",
|
|
@@ -324,23 +304,11 @@ const featureEntries = Object.freeze([
|
|
|
324
304
|
reviewAfter: null,
|
|
325
305
|
removeAfter: "2026-11-01",
|
|
326
306
|
gaAt: "2026-08-05",
|
|
327
|
-
allowedActorPolicies: ["request_actor", "resource_team"],
|
|
328
307
|
downRamp: {
|
|
329
308
|
code: "dedicated_runtime_stop",
|
|
330
309
|
summary: "Deny customer mutation and new placement/materialization immediately; serve-time revocation of already-materialized output lands with the deferred runtime-proof slice; operator recovery/export/delete remain; downloaded bytes cannot be recalled.",
|
|
331
310
|
},
|
|
332
311
|
},
|
|
333
|
-
{
|
|
334
|
-
key: "shelf",
|
|
335
|
-
name: "Shelf",
|
|
336
|
-
description: "Exposes the per-user artifact shelf: dashboard curation and public /shelf/{handle} pages.",
|
|
337
|
-
defaultEnabled: false,
|
|
338
|
-
runtime: {
|
|
339
|
-
enabledInDevelopment: true,
|
|
340
|
-
enabledForA8c: true,
|
|
341
|
-
planDefaults: {},
|
|
342
|
-
},
|
|
343
|
-
},
|
|
344
312
|
{
|
|
345
313
|
cohort: "launch",
|
|
346
314
|
key: "build.content_pipeline",
|
|
@@ -350,7 +318,6 @@ const featureEntries = Object.freeze([
|
|
|
350
318
|
surface: true,
|
|
351
319
|
defaultEnabled: false,
|
|
352
320
|
runtime: null,
|
|
353
|
-
assignmentScopes: ["team", "global"],
|
|
354
321
|
docs: {
|
|
355
322
|
channel: "handbook",
|
|
356
323
|
slug: "/features/build/content-pipeline",
|
|
@@ -362,7 +329,6 @@ const featureEntries = Object.freeze([
|
|
|
362
329
|
reviewAfter: "2026-08-11",
|
|
363
330
|
removeAfter: "2026-10-10",
|
|
364
331
|
gaAt: null,
|
|
365
|
-
allowedActorPolicies: ["resource_team"],
|
|
366
332
|
downRamp: {
|
|
367
333
|
code: "content_pipeline_stop",
|
|
368
334
|
summary: "Deny next build/finalize; completed immutable output remains.",
|
|
@@ -381,7 +347,6 @@ const featureEntries = Object.freeze([
|
|
|
381
347
|
enabledForA8c: true,
|
|
382
348
|
planDefaults: {},
|
|
383
349
|
},
|
|
384
|
-
assignmentScopes: ["team", "global"],
|
|
385
350
|
docs: {
|
|
386
351
|
channel: "public",
|
|
387
352
|
slug: "/docs/tags",
|
|
@@ -393,7 +358,6 @@ const featureEntries = Object.freeze([
|
|
|
393
358
|
reviewAfter: "2026-08-11",
|
|
394
359
|
removeAfter: "2026-10-10",
|
|
395
360
|
gaAt: null,
|
|
396
|
-
allowedActorPolicies: ["request_actor", "resource_team"],
|
|
397
361
|
downRamp: {
|
|
398
362
|
code: "tags_stop",
|
|
399
363
|
summary: "Deny every customer Tag API and dynamic module delivery; internal operator export/cleanup and platform-generated inert marker bytes remain.",
|
|
@@ -404,8 +368,8 @@ const featureEntries = Object.freeze([
|
|
|
404
368
|
key: "zero",
|
|
405
369
|
name: "Spacefast Zero",
|
|
406
370
|
description: "Enables Spacefast Zero command surfaces and hosted Zero app workflows.",
|
|
407
|
-
// Zero is public. The flag remains only as the canonical
|
|
408
|
-
// down-ramp
|
|
371
|
+
// Zero is public on every plan. The flag remains only as the canonical
|
|
372
|
+
// operational down-ramp.
|
|
409
373
|
stage: "ga",
|
|
410
374
|
surface: true,
|
|
411
375
|
defaultEnabled: true,
|
|
@@ -413,19 +377,17 @@ const featureEntries = Object.freeze([
|
|
|
413
377
|
enabledForA8c: true,
|
|
414
378
|
planDefaults: {},
|
|
415
379
|
},
|
|
416
|
-
assignmentScopes: ["team", "global"],
|
|
417
380
|
docs: {
|
|
418
381
|
channel: "public",
|
|
419
382
|
slug: "/docs/apps/zero",
|
|
420
383
|
feedbackUrl: null,
|
|
421
384
|
},
|
|
422
385
|
owner: "team:zero",
|
|
423
|
-
requires: [
|
|
386
|
+
requires: [],
|
|
424
387
|
lifecycleAdoptedAt: "2026-07-12",
|
|
425
388
|
reviewAfter: null,
|
|
426
389
|
removeAfter: "2026-11-01",
|
|
427
390
|
gaAt: "2026-08-05",
|
|
428
|
-
allowedActorPolicies: ["resource_team"],
|
|
429
391
|
downRamp: {
|
|
430
392
|
code: "zero_stop",
|
|
431
393
|
summary: "Stop activation/invocation; operator export/delete/migration recovery remain.",
|
|
@@ -437,32 +399,29 @@ const featureEntries = Object.freeze([
|
|
|
437
399
|
name: "Spacefast Functions",
|
|
438
400
|
description: "Dispatches a version's dynamic requests to the execution host. Compiling the worker at publish is not gated: " +
|
|
439
401
|
"the CLI always ships the bundle, and this flag decides whether anything runs it.",
|
|
440
|
-
// Functions
|
|
441
|
-
//
|
|
442
|
-
stage: "
|
|
402
|
+
// Functions is public on every plan. The flag remains only as the
|
|
403
|
+
// operational down-ramp for dispatch.
|
|
404
|
+
stage: "ga",
|
|
443
405
|
surface: true,
|
|
444
|
-
defaultEnabled:
|
|
406
|
+
defaultEnabled: true,
|
|
445
407
|
runtime: {
|
|
446
408
|
enabledForA8c: true,
|
|
447
409
|
planDefaults: {},
|
|
448
410
|
},
|
|
449
|
-
assignmentScopes: ["team", "global"],
|
|
450
411
|
docs: {
|
|
451
412
|
channel: "public",
|
|
452
413
|
slug: "/docs/apps/functions",
|
|
453
414
|
feedbackUrl: null,
|
|
454
415
|
},
|
|
455
416
|
owner: "team:zero",
|
|
456
|
-
//
|
|
457
|
-
//
|
|
458
|
-
//
|
|
459
|
-
// way it is not for a capsule.
|
|
417
|
+
// A worker executes on Cloudflare rather than on the space's box and
|
|
418
|
+
// reaches the database only through the broker, so dispatch has no
|
|
419
|
+
// dedicated-runtime lifecycle dependency.
|
|
460
420
|
requires: [],
|
|
461
421
|
lifecycleAdoptedAt: "2026-07-27",
|
|
462
|
-
reviewAfter:
|
|
422
|
+
reviewAfter: null,
|
|
463
423
|
removeAfter: "2026-11-01",
|
|
464
|
-
gaAt:
|
|
465
|
-
allowedActorPolicies: ["resource_team"],
|
|
424
|
+
gaAt: "2026-08-12",
|
|
466
425
|
downRamp: {
|
|
467
426
|
code: "functions_stop",
|
|
468
427
|
summary: "Stop emitting dispatch configuration at finalize; published bundles stay on disk as inert content and the " +
|
|
@@ -483,7 +442,6 @@ const featureEntries = Object.freeze([
|
|
|
483
442
|
enabledForA8c: true,
|
|
484
443
|
planDefaults: {},
|
|
485
444
|
},
|
|
486
|
-
assignmentScopes: ["user", "team", "global"],
|
|
487
445
|
docs: {
|
|
488
446
|
channel: "public",
|
|
489
447
|
slug: "/docs/spaces/rename",
|
|
@@ -495,7 +453,6 @@ const featureEntries = Object.freeze([
|
|
|
495
453
|
reviewAfter: "2026-08-11",
|
|
496
454
|
removeAfter: "2026-10-10",
|
|
497
455
|
gaAt: "2026-07-27",
|
|
498
|
-
allowedActorPolicies: ["request_actor"],
|
|
499
456
|
downRamp: {
|
|
500
457
|
code: "slug_rename_stop",
|
|
501
458
|
summary: "Deny new slug renames while already-committed hostname redirects and runtime convergence continue.",
|
|
@@ -10,9 +10,13 @@ export declare const planCodeSchema: z.ZodEnum<{
|
|
|
10
10
|
}>;
|
|
11
11
|
export type PlanCode = z.infer<typeof planCodeSchema>;
|
|
12
12
|
export declare const DEFAULT_PLAN_CODE: PlanCode;
|
|
13
|
-
export declare const
|
|
13
|
+
export declare const SELF_SERVE_PLAN_CODES: readonly ["personal", "work"];
|
|
14
|
+
export declare const PUBLIC_PLAN_CODES: readonly ["free", "personal", "work", "enterprise"];
|
|
15
|
+
export declare const FEATURE_KEYS: readonly ("zero" | "tags" | "functions" | "plans.paid.available" | "anonymous.publishing" | "beta.enrollment_gate" | "domains.search" | "domains.registration" | "domains.dns_management" | "domains.wpcom_dns" | "domains.domain_connect" | "domains.proxy_bindings" | "collab.notices" | "collab.drawing" | "sites.dedicated_runtime" | "spaces.slug_rename")[];
|
|
14
16
|
export declare const featureKeySchema: z.ZodEnum<{
|
|
15
17
|
zero: "zero";
|
|
18
|
+
tags: "tags";
|
|
19
|
+
functions: "functions";
|
|
16
20
|
"plans.paid.available": "plans.paid.available";
|
|
17
21
|
"anonymous.publishing": "anonymous.publishing";
|
|
18
22
|
"beta.enrollment_gate": "beta.enrollment_gate";
|
|
@@ -25,9 +29,6 @@ export declare const featureKeySchema: z.ZodEnum<{
|
|
|
25
29
|
"collab.notices": "collab.notices";
|
|
26
30
|
"collab.drawing": "collab.drawing";
|
|
27
31
|
"sites.dedicated_runtime": "sites.dedicated_runtime";
|
|
28
|
-
shelf: "shelf";
|
|
29
|
-
tags: "tags";
|
|
30
|
-
functions: "functions";
|
|
31
32
|
"spaces.slug_rename": "spaces.slug_rename";
|
|
32
33
|
}>;
|
|
33
34
|
export type FeatureKey = RuntimeFeatureKey;
|
|
@@ -45,8 +46,6 @@ export declare const planLimitsSchema: z.ZodObject<{
|
|
|
45
46
|
teamMembers: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
46
47
|
subTeams: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
47
48
|
externalDomainGroups: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
48
|
-
versionRetentionDays: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
49
|
-
versionGatedKeepDays: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
50
49
|
egressBytesPerDay: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
51
50
|
maxFileBytes: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
52
51
|
maxVersionFiles: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
@@ -54,7 +53,6 @@ export declare const planLimitsSchema: z.ZodObject<{
|
|
|
54
53
|
auditLogRetentionHours: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
55
54
|
buildAccessLogRetentionHours: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
56
55
|
buildsDeploysMonthly: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
57
|
-
analyticsRetentionDays: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
58
56
|
shareLinksPerSpace: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
59
57
|
invitesPerSpace: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
60
58
|
inviteEmailsPerSpaceDaily: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
@@ -75,8 +73,6 @@ export declare const teamEntitlementsSchema: z.ZodObject<{
|
|
|
75
73
|
teamMembers: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
76
74
|
subTeams: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
77
75
|
externalDomainGroups: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
78
|
-
versionRetentionDays: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
79
|
-
versionGatedKeepDays: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
80
76
|
egressBytesPerDay: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
81
77
|
maxFileBytes: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
82
78
|
maxVersionFiles: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
@@ -84,7 +80,6 @@ export declare const teamEntitlementsSchema: z.ZodObject<{
|
|
|
84
80
|
auditLogRetentionHours: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
85
81
|
buildAccessLogRetentionHours: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
86
82
|
buildsDeploysMonthly: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
87
|
-
analyticsRetentionDays: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
88
83
|
shareLinksPerSpace: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
89
84
|
invitesPerSpace: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
90
85
|
inviteEmailsPerSpaceDaily: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
@@ -92,11 +87,10 @@ export declare const teamEntitlementsSchema: z.ZodObject<{
|
|
|
92
87
|
pendingAccessRequestsPerSpace: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
93
88
|
}, z.core.$strip>;
|
|
94
89
|
externalProxy: z.ZodBoolean;
|
|
95
|
-
dedicatedRuntime: z.
|
|
90
|
+
dedicatedRuntime: z.ZodLiteral<true>;
|
|
96
91
|
pagesTemplates: z.ZodBoolean;
|
|
97
92
|
hideSpacefastBranding: z.ZodBoolean;
|
|
98
93
|
runtimePhpWorkers: z.ZodNumber;
|
|
99
|
-
analyticsHourlyGranularity: z.ZodBoolean;
|
|
100
94
|
versionDiagnosticsIncluded: z.ZodBoolean;
|
|
101
95
|
}, z.core.$strip>;
|
|
102
96
|
export type TeamEntitlements = z.infer<typeof teamEntitlementsSchema>;
|
|
@@ -109,16 +103,15 @@ export declare const teamEntitlementsResponseSchema: z.ZodObject<{
|
|
|
109
103
|
enterprise: "enterprise";
|
|
110
104
|
}>;
|
|
111
105
|
externalProxy: z.ZodBoolean;
|
|
112
|
-
dedicatedRuntime: z.
|
|
106
|
+
dedicatedRuntime: z.ZodLiteral<true>;
|
|
113
107
|
pagesTemplates: z.ZodBoolean;
|
|
114
108
|
hideSpacefastBranding: z.ZodBoolean;
|
|
115
109
|
runtimePhpWorkers: z.ZodNumber;
|
|
116
|
-
analyticsHourlyGranularity: z.ZodBoolean;
|
|
117
110
|
versionDiagnosticsIncluded: z.ZodBoolean;
|
|
118
111
|
limits: z.ZodObject<{
|
|
112
|
+
storageBytes: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
119
113
|
teamMembers: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
120
114
|
subTeams: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
121
|
-
storageBytes: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
122
115
|
externalDomainGroups: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
123
116
|
maxFileBytes: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
124
117
|
maxVersionFiles: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
@@ -126,7 +119,6 @@ export declare const teamEntitlementsResponseSchema: z.ZodObject<{
|
|
|
126
119
|
auditLogRetentionHours: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
127
120
|
buildAccessLogRetentionHours: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
128
121
|
buildsDeploysMonthly: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
129
|
-
analyticsRetentionDays: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
130
122
|
shareLinksPerSpace: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
131
123
|
invitesPerSpace: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
132
124
|
inviteEmailsPerSpaceDaily: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
|
|
@@ -138,15 +130,21 @@ export type PlanDefinition = {
|
|
|
138
130
|
code: PlanCode;
|
|
139
131
|
name: string;
|
|
140
132
|
monthlyPriceUsd: number | null;
|
|
133
|
+
yearlyPriceUsd: number | null;
|
|
134
|
+
/** Editor memberships included in the base plan price. */
|
|
135
|
+
includedSeats: number | "unlimited";
|
|
136
|
+
/** Additional editor price by interval; null means the plan never meters seats. */
|
|
137
|
+
extraSeatPriceUsd: {
|
|
138
|
+
monthly: number;
|
|
139
|
+
yearly: number;
|
|
140
|
+
} | null;
|
|
141
141
|
limits: PlanLimits;
|
|
142
142
|
externalProxy: boolean;
|
|
143
|
-
dedicatedRuntime: boolean;
|
|
144
143
|
/** Paid full-page takeover templates under _pages/. */
|
|
145
144
|
pagesTemplates: boolean;
|
|
146
145
|
/** Paid removal of the tasteful Spacefast badge from designed defaults. */
|
|
147
146
|
hideSpacefastBranding: boolean;
|
|
148
147
|
runtimePhpWorkers: number;
|
|
149
|
-
analyticsHourlyGranularity: boolean;
|
|
150
148
|
};
|
|
151
149
|
export type FeatureDefinition = RuntimeFeatureDefinition;
|
|
152
150
|
export declare const PLAN_DEFINITIONS: Record<PlanCode, PlanDefinition>;
|
|
@@ -161,6 +159,26 @@ export declare const FEATURE_DEFINITIONS: Readonly<{
|
|
|
161
159
|
readonly enabledForA8c: boolean;
|
|
162
160
|
readonly planDefaults: Readonly<Partial<Record<PlanCode, boolean>>>;
|
|
163
161
|
};
|
|
162
|
+
readonly tags: {
|
|
163
|
+
readonly key: "tags";
|
|
164
|
+
readonly name: string;
|
|
165
|
+
readonly description: string;
|
|
166
|
+
readonly defaultEnabled: boolean;
|
|
167
|
+
} & {
|
|
168
|
+
readonly enabledInDevelopment?: boolean;
|
|
169
|
+
readonly enabledForA8c: boolean;
|
|
170
|
+
readonly planDefaults: Readonly<Partial<Record<PlanCode, boolean>>>;
|
|
171
|
+
};
|
|
172
|
+
readonly functions: {
|
|
173
|
+
readonly key: "functions";
|
|
174
|
+
readonly name: string;
|
|
175
|
+
readonly description: string;
|
|
176
|
+
readonly defaultEnabled: boolean;
|
|
177
|
+
} & {
|
|
178
|
+
readonly enabledInDevelopment?: boolean;
|
|
179
|
+
readonly enabledForA8c: boolean;
|
|
180
|
+
readonly planDefaults: Readonly<Partial<Record<PlanCode, boolean>>>;
|
|
181
|
+
};
|
|
164
182
|
readonly "plans.paid.available": {
|
|
165
183
|
readonly key: "plans.paid.available";
|
|
166
184
|
readonly name: string;
|
|
@@ -281,36 +299,6 @@ export declare const FEATURE_DEFINITIONS: Readonly<{
|
|
|
281
299
|
readonly enabledForA8c: boolean;
|
|
282
300
|
readonly planDefaults: Readonly<Partial<Record<PlanCode, boolean>>>;
|
|
283
301
|
};
|
|
284
|
-
readonly shelf: {
|
|
285
|
-
readonly key: "shelf";
|
|
286
|
-
readonly name: string;
|
|
287
|
-
readonly description: string;
|
|
288
|
-
readonly defaultEnabled: boolean;
|
|
289
|
-
} & {
|
|
290
|
-
readonly enabledInDevelopment?: boolean;
|
|
291
|
-
readonly enabledForA8c: boolean;
|
|
292
|
-
readonly planDefaults: Readonly<Partial<Record<PlanCode, boolean>>>;
|
|
293
|
-
};
|
|
294
|
-
readonly tags: {
|
|
295
|
-
readonly key: "tags";
|
|
296
|
-
readonly name: string;
|
|
297
|
-
readonly description: string;
|
|
298
|
-
readonly defaultEnabled: boolean;
|
|
299
|
-
} & {
|
|
300
|
-
readonly enabledInDevelopment?: boolean;
|
|
301
|
-
readonly enabledForA8c: boolean;
|
|
302
|
-
readonly planDefaults: Readonly<Partial<Record<PlanCode, boolean>>>;
|
|
303
|
-
};
|
|
304
|
-
readonly functions: {
|
|
305
|
-
readonly key: "functions";
|
|
306
|
-
readonly name: string;
|
|
307
|
-
readonly description: string;
|
|
308
|
-
readonly defaultEnabled: boolean;
|
|
309
|
-
} & {
|
|
310
|
-
readonly enabledInDevelopment?: boolean;
|
|
311
|
-
readonly enabledForA8c: boolean;
|
|
312
|
-
readonly planDefaults: Readonly<Partial<Record<PlanCode, boolean>>>;
|
|
313
|
-
};
|
|
314
302
|
readonly "spaces.slug_rename": {
|
|
315
303
|
readonly key: "spaces.slug_rename";
|
|
316
304
|
readonly name: string;
|
|
@@ -325,12 +313,14 @@ export declare const FEATURE_DEFINITIONS: Readonly<{
|
|
|
325
313
|
export declare const featureStateSourceSchema: z.ZodEnum<{
|
|
326
314
|
default: "default";
|
|
327
315
|
override: "override";
|
|
328
|
-
kill_switch: "kill_switch";
|
|
329
316
|
env: "env";
|
|
317
|
+
kill_switch: "kill_switch";
|
|
330
318
|
}>;
|
|
331
319
|
export declare const FeatureStateSchema: z.ZodObject<{
|
|
332
320
|
key: z.ZodEnum<{
|
|
333
321
|
zero: "zero";
|
|
322
|
+
tags: "tags";
|
|
323
|
+
functions: "functions";
|
|
334
324
|
"plans.paid.available": "plans.paid.available";
|
|
335
325
|
"anonymous.publishing": "anonymous.publishing";
|
|
336
326
|
"beta.enrollment_gate": "beta.enrollment_gate";
|
|
@@ -343,17 +333,14 @@ export declare const FeatureStateSchema: z.ZodObject<{
|
|
|
343
333
|
"collab.notices": "collab.notices";
|
|
344
334
|
"collab.drawing": "collab.drawing";
|
|
345
335
|
"sites.dedicated_runtime": "sites.dedicated_runtime";
|
|
346
|
-
shelf: "shelf";
|
|
347
|
-
tags: "tags";
|
|
348
|
-
functions: "functions";
|
|
349
336
|
"spaces.slug_rename": "spaces.slug_rename";
|
|
350
337
|
}>;
|
|
351
338
|
enabled: z.ZodBoolean;
|
|
352
339
|
source: z.ZodEnum<{
|
|
353
340
|
default: "default";
|
|
354
341
|
override: "override";
|
|
355
|
-
kill_switch: "kill_switch";
|
|
356
342
|
env: "env";
|
|
343
|
+
kill_switch: "kill_switch";
|
|
357
344
|
}>;
|
|
358
345
|
}, z.core.$strip>;
|
|
359
346
|
export declare const FeatureStateResponseSchema: z.ZodObject<{
|
|
@@ -366,6 +353,8 @@ export declare const FeatureStateResponseSchema: z.ZodObject<{
|
|
|
366
353
|
}>;
|
|
367
354
|
features: z.ZodRecord<z.ZodEnum<{
|
|
368
355
|
zero: "zero";
|
|
356
|
+
tags: "tags";
|
|
357
|
+
functions: "functions";
|
|
369
358
|
"plans.paid.available": "plans.paid.available";
|
|
370
359
|
"anonymous.publishing": "anonymous.publishing";
|
|
371
360
|
"beta.enrollment_gate": "beta.enrollment_gate";
|
|
@@ -378,13 +367,12 @@ export declare const FeatureStateResponseSchema: z.ZodObject<{
|
|
|
378
367
|
"collab.notices": "collab.notices";
|
|
379
368
|
"collab.drawing": "collab.drawing";
|
|
380
369
|
"sites.dedicated_runtime": "sites.dedicated_runtime";
|
|
381
|
-
shelf: "shelf";
|
|
382
|
-
tags: "tags";
|
|
383
|
-
functions: "functions";
|
|
384
370
|
"spaces.slug_rename": "spaces.slug_rename";
|
|
385
371
|
}>, z.ZodObject<{
|
|
386
372
|
key: z.ZodEnum<{
|
|
387
373
|
zero: "zero";
|
|
374
|
+
tags: "tags";
|
|
375
|
+
functions: "functions";
|
|
388
376
|
"plans.paid.available": "plans.paid.available";
|
|
389
377
|
"anonymous.publishing": "anonymous.publishing";
|
|
390
378
|
"beta.enrollment_gate": "beta.enrollment_gate";
|
|
@@ -397,17 +385,14 @@ export declare const FeatureStateResponseSchema: z.ZodObject<{
|
|
|
397
385
|
"collab.notices": "collab.notices";
|
|
398
386
|
"collab.drawing": "collab.drawing";
|
|
399
387
|
"sites.dedicated_runtime": "sites.dedicated_runtime";
|
|
400
|
-
shelf: "shelf";
|
|
401
|
-
tags: "tags";
|
|
402
|
-
functions: "functions";
|
|
403
388
|
"spaces.slug_rename": "spaces.slug_rename";
|
|
404
389
|
}>;
|
|
405
390
|
enabled: z.ZodBoolean;
|
|
406
391
|
source: z.ZodEnum<{
|
|
407
392
|
default: "default";
|
|
408
393
|
override: "override";
|
|
409
|
-
kill_switch: "kill_switch";
|
|
410
394
|
env: "env";
|
|
395
|
+
kill_switch: "kill_switch";
|
|
411
396
|
}>;
|
|
412
397
|
}, z.core.$strip>>;
|
|
413
398
|
}, z.core.$strip>;
|
|
@@ -417,3 +402,6 @@ export declare function normalizePlanCode(planCode: string | null | undefined):
|
|
|
417
402
|
export declare function featureDefaultForPlan(key: FeatureKey, planCode: string | null | undefined): boolean;
|
|
418
403
|
/** Numeric value of a plan limit; `null` means unlimited. */
|
|
419
404
|
export declare function planLimitNumber(value: PlanLimitValue): number | null;
|
|
405
|
+
/** Extra editor quantity billed on a paid Stripe subscription. */
|
|
406
|
+
export declare function extraSeatQuantity(editorMemberships: number, includedSeats: number | "unlimited"): number;
|
|
407
|
+
export declare function planPriceUsd(plan: PlanDefinition, interval: "monthly" | "yearly"): number | null;
|