@spacefast/common 0.0.11 → 0.0.13

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 (160) hide show
  1. package/dist/agents/connect-targets.d.ts +4 -4
  2. package/dist/agents/connect-targets.js +3 -3
  3. package/dist/agents/private-key-oauth.d.ts +37 -0
  4. package/dist/agents/private-key-oauth.js +158 -0
  5. package/dist/config/domains.js +1 -1
  6. package/dist/config/index.d.ts +1 -0
  7. package/dist/config/index.js +1 -0
  8. package/dist/config/postgres-budget.d.ts +126 -0
  9. package/dist/config/postgres-budget.js +135 -0
  10. package/dist/config/postgres-budget.json +50 -0
  11. package/dist/contracts/access.d.ts +386 -1183
  12. package/dist/contracts/access.js +240 -1018
  13. package/dist/contracts/activity.d.ts +1 -1
  14. package/dist/contracts/activity.js +11 -19
  15. package/dist/contracts/api-keys.d.ts +69 -45
  16. package/dist/contracts/api-keys.js +3 -0
  17. package/dist/contracts/archives.d.ts +9 -10
  18. package/dist/contracts/archives.js +4 -6
  19. package/dist/contracts/builds.d.ts +8 -8
  20. package/dist/contracts/builds.js +28 -48
  21. package/dist/contracts/channels.js +1 -2
  22. package/dist/contracts/comments.d.ts +102 -93
  23. package/dist/contracts/comments.js +121 -63
  24. package/dist/contracts/common.d.ts +4 -3
  25. package/dist/contracts/common.js +2 -0
  26. package/dist/contracts/countries.js +2 -7
  27. package/dist/contracts/data-source-routes.d.ts +20 -0
  28. package/dist/contracts/data-source-routes.js +15 -0
  29. package/dist/contracts/deployments.d.ts +3 -3
  30. package/dist/contracts/device-auth.d.ts +21 -15
  31. package/dist/contracts/docs.d.ts +5 -5
  32. package/dist/contracts/domains.d.ts +261 -1330
  33. package/dist/contracts/domains.js +39 -301
  34. package/dist/contracts/email-preferences.d.ts +50 -0
  35. package/dist/contracts/email-preferences.js +44 -0
  36. package/dist/contracts/enums.d.ts +3 -5
  37. package/dist/contracts/enums.js +3 -8
  38. package/dist/contracts/error-code-meta.d.ts +99 -33
  39. package/dist/contracts/error-code-meta.js +36 -9
  40. package/dist/contracts/error-codes.d.ts +1 -1
  41. package/dist/contracts/error-codes.js +28 -11
  42. package/dist/contracts/execution.d.ts +212 -0
  43. package/dist/contracts/execution.js +288 -0
  44. package/dist/contracts/feature-lifecycle.d.ts +498 -2
  45. package/dist/contracts/feature-lifecycle.js +539 -2
  46. package/dist/contracts/features.d.ts +184 -74
  47. package/dist/contracts/features.js +4 -303
  48. package/dist/contracts/functions.d.ts +729 -0
  49. package/dist/contracts/functions.js +485 -0
  50. package/dist/contracts/git.d.ts +1 -1
  51. package/dist/contracts/grants.d.ts +1158 -0
  52. package/dist/contracts/grants.js +696 -0
  53. package/dist/contracts/ids.d.ts +6 -5
  54. package/dist/contracts/ids.js +6 -5
  55. package/dist/contracts/internal.d.ts +3 -3
  56. package/dist/contracts/mcp.d.ts +12 -12
  57. package/dist/contracts/me.js +1 -1
  58. package/dist/contracts/mounts.d.ts +142 -0
  59. package/dist/contracts/mounts.js +56 -0
  60. package/dist/contracts/oauth-resources.d.ts +5 -5
  61. package/dist/contracts/oauth-resources.js +2 -0
  62. package/dist/contracts/operations.d.ts +4 -4
  63. package/dist/contracts/pages.d.ts +6 -14
  64. package/dist/contracts/pages.js +11 -23
  65. package/dist/contracts/plan-policy.d.ts +2 -9
  66. package/dist/contracts/plan-policy.js +1 -4
  67. package/dist/contracts/platform.d.ts +80 -32
  68. package/dist/contracts/platform.js +59 -12
  69. package/dist/contracts/push-new.d.ts +26 -2
  70. package/dist/contracts/push-new.js +8 -0
  71. package/dist/contracts/quotas.d.ts +0 -1
  72. package/dist/contracts/quotas.js +0 -5
  73. package/dist/contracts/repository-connections.d.ts +1 -1
  74. package/dist/contracts/resources.d.ts +21 -85
  75. package/dist/contracts/resources.js +17 -47
  76. package/dist/contracts/runtime-api.d.ts +799 -192
  77. package/dist/contracts/runtime-api.js +231 -100
  78. package/dist/contracts/runtime-app.d.ts +138 -0
  79. package/dist/contracts/runtime-app.js +21 -0
  80. package/dist/contracts/sf-config-v1.d.ts +5 -0
  81. package/dist/contracts/sf-config-v1.js +1 -1
  82. package/dist/contracts/sites.d.ts +17 -12
  83. package/dist/contracts/sites.js +30 -12
  84. package/dist/contracts/space-config.d.ts +46 -117
  85. package/dist/contracts/space-config.js +323 -25
  86. package/dist/contracts/spaces.d.ts +392 -256
  87. package/dist/contracts/spaces.js +163 -83
  88. package/dist/contracts/superadmin-emails.d.ts +27 -3
  89. package/dist/contracts/superadmin-emails.js +10 -15
  90. package/dist/contracts/superadmin-runtime.d.ts +2 -2
  91. package/dist/contracts/superadmin-spaces.d.ts +19 -142
  92. package/dist/contracts/superadmin-spaces.js +7 -0
  93. package/dist/contracts/tags.d.ts +66 -36
  94. package/dist/contracts/tags.js +195 -11
  95. package/dist/contracts/teams.d.ts +9 -9
  96. package/dist/contracts/transfers.d.ts +1 -2
  97. package/dist/contracts/variables.d.ts +4 -4
  98. package/dist/contracts/variables.js +4 -3
  99. package/dist/contracts/webhooks.d.ts +2 -2
  100. package/dist/contracts/zero.d.ts +437 -193
  101. package/dist/contracts/zero.js +149 -158
  102. package/dist/dashboard-paths/index.d.ts +3 -3
  103. package/dist/dashboard-paths/index.js +1 -0
  104. package/dist/docs/agent-prose.js +10 -8
  105. package/dist/docs/agent-setup.d.ts +6 -4
  106. package/dist/docs/agent-setup.js +26 -16
  107. package/dist/docs/agent-solutions.js +1 -1
  108. package/dist/docs/catalog.d.ts +35 -37
  109. package/dist/docs/catalog.js +36 -38
  110. package/dist/docs/error-docs.js +108 -44
  111. package/dist/utils/asset-fingerprint.d.ts +11 -0
  112. package/dist/utils/asset-fingerprint.js +46 -0
  113. package/dist/utils/auth-redirect.d.ts +1 -3
  114. package/dist/utils/auth-redirect.js +1 -21
  115. package/dist/utils/build-settings.d.ts +2 -0
  116. package/dist/utils/build-settings.js +61 -9
  117. package/dist/utils/credential-policy.d.ts +1 -1
  118. package/dist/utils/credential-policy.js +4 -0
  119. package/dist/utils/dns-instructions.d.ts +29 -0
  120. package/dist/utils/dns-instructions.js +78 -0
  121. package/dist/utils/domain-diagnostics.d.ts +29 -0
  122. package/dist/utils/domain-diagnostics.js +63 -0
  123. package/dist/utils/egress-policy.fixtures.json +51 -0
  124. package/dist/utils/grants.d.ts +53 -0
  125. package/dist/utils/grants.js +160 -0
  126. package/dist/utils/id-hints.d.ts +1 -0
  127. package/dist/utils/id-hints.js +55 -13
  128. package/dist/utils/local-space-state.js +1 -0
  129. package/dist/utils/page-colors.d.ts +50 -0
  130. package/dist/utils/page-colors.js +167 -0
  131. package/dist/utils/page-fonts.d.ts +2 -0
  132. package/dist/utils/page-fonts.js +4 -0
  133. package/dist/utils/pages.d.ts +19 -6
  134. package/dist/utils/pages.js +122 -49
  135. package/dist/utils/production-runtime.d.ts +18 -0
  136. package/dist/utils/production-runtime.js +28 -0
  137. package/dist/utils/publish-policy.d.ts +34 -4
  138. package/dist/utils/publish-policy.js +132 -61
  139. package/dist/utils/query-keys.d.ts +7 -13
  140. package/dist/utils/query-keys.js +12 -18
  141. package/dist/utils/source-archive-policy.d.ts +2 -0
  142. package/dist/utils/source-archive-policy.js +2 -0
  143. package/dist/utils/space-config.d.ts +5 -1
  144. package/dist/utils/space-config.js +35 -0
  145. package/dist/utils/static-runtime-policy.d.ts +5 -0
  146. package/dist/utils/static-runtime-policy.fixtures.json +57 -0
  147. package/dist/utils/static-runtime-policy.js +54 -10
  148. package/dist/utils/upload-session.d.ts +3 -0
  149. package/dist/utils/upload-session.js +31 -0
  150. package/package.json +6 -4
  151. package/dist/contracts/annotations.d.ts +0 -327
  152. package/dist/contracts/annotations.js +0 -235
  153. package/dist/contracts/generated-feature-launch-entries.d.ts +0 -2
  154. package/dist/contracts/generated-feature-launch-entries.js +0 -518
  155. package/dist/contracts/publishes.d.ts +0 -135
  156. package/dist/contracts/publishes.js +0 -162
  157. package/dist/utils/access-match.d.ts +0 -39
  158. package/dist/utils/access-match.js +0 -296
  159. package/dist/utils/sf-config-v1.d.ts +0 -2
  160. package/dist/utils/sf-config-v1.js +0 -542
@@ -1,7 +1,503 @@
1
1
  import type { FeatureRegistryEntry } from "./feature-lifecycle-core.js";
2
- import { launchEntries as compiledLaunchEntries } from "./generated-feature-launch-entries.js";
2
+ import type { PlanCode } from "./features.js";
3
3
  export { FEATURE_ASSIGNMENT_SCOPES, FEATURE_EXECUTION_ACTOR_POLICIES, FEATURE_OWNER_IDS, FEATURE_STAGES, freezeFeatureRegistryEntry, validateFeatureLifecycleRegistry, } from "./feature-lifecycle-core.js";
4
4
  export type { FeatureAssignmentScope, FeatureExecutionActorPolicy, FeatureOwnerId, FeatureRegistryEntry, FeatureStage, } from "./feature-lifecycle-core.js";
5
- export type LifecycleFeatureKey = (typeof compiledLaunchEntries)[number]["key"];
5
+ type RuntimeFeaturePolicy = {
6
+ readonly enabledInDevelopment?: boolean;
7
+ readonly enabledForA8c: boolean;
8
+ readonly planDefaults: Readonly<Partial<Record<PlanCode, boolean>>>;
9
+ };
10
+ type RuntimeFeatureDefinitionShape<K extends string> = {
11
+ readonly key: K;
12
+ readonly name: string;
13
+ readonly description: string;
14
+ readonly defaultEnabled: boolean;
15
+ } & RuntimeFeaturePolicy;
16
+ declare const featureEntries: readonly [{
17
+ readonly cohort: "launch";
18
+ readonly key: "plans.paid.available";
19
+ readonly name: "Paid plans available";
20
+ readonly description: "Controls whether paid plan upgrade and management surfaces are available.";
21
+ readonly stage: "internal";
22
+ readonly surface: false;
23
+ readonly defaultEnabled: false;
24
+ readonly runtime: {
25
+ readonly enabledForA8c: true;
26
+ readonly planDefaults: {};
27
+ };
28
+ readonly assignmentScopes: readonly ["team", "global"];
29
+ readonly docs: null;
30
+ readonly owner: "team:commerce";
31
+ readonly requires: readonly [];
32
+ readonly lifecycleAdoptedAt: "2026-07-12";
33
+ readonly reviewAfter: "2026-08-11";
34
+ readonly removeAfter: null;
35
+ readonly gaAt: null;
36
+ readonly allowedActorPolicies: readonly ["request_actor"];
37
+ readonly downRamp: {
38
+ readonly code: "paid_acquisition_stop";
39
+ readonly summary: "Deny new acquisition; allow cancel, portal, provider reconciliation and purchase recovery.";
40
+ };
41
+ }, {
42
+ readonly cohort: "launch";
43
+ readonly key: "anonymous.publishing";
44
+ readonly name: "Anonymous publishing";
45
+ readonly description: "Allows unauthenticated space creation and publishing.";
46
+ readonly stage: "ga";
47
+ readonly surface: true;
48
+ readonly defaultEnabled: true;
49
+ readonly runtime: {
50
+ readonly enabledForA8c: true;
51
+ readonly planDefaults: {};
52
+ };
53
+ readonly assignmentScopes: readonly ["global"];
54
+ readonly docs: {
55
+ readonly channel: "public";
56
+ readonly slug: "/docs/publishing/anonymous";
57
+ readonly feedbackUrl: null;
58
+ };
59
+ readonly owner: "team:publishing";
60
+ readonly requires: readonly [];
61
+ readonly lifecycleAdoptedAt: "2026-07-12";
62
+ readonly reviewAfter: "2026-07-26";
63
+ readonly removeAfter: "2026-08-11";
64
+ readonly gaAt: "2026-07-12";
65
+ readonly allowedActorPolicies: readonly ["request_actor", "global_policy"];
66
+ readonly downRamp: {
67
+ readonly code: "anonymous_publish_stop";
68
+ readonly 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.";
69
+ };
70
+ }, {
71
+ readonly key: "beta.enrollment_gate";
72
+ readonly name: "Beta enrollment gate";
73
+ readonly description: "Gates the whole API behind private-beta enrollment; non-enrolled credentials get 403 not_enrolled.";
74
+ readonly defaultEnabled: false;
75
+ readonly runtime: {
76
+ readonly enabledForA8c: true;
77
+ readonly planDefaults: {};
78
+ };
79
+ }, {
80
+ readonly key: "domains.search";
81
+ readonly name: "Domain search";
82
+ readonly description: "Allows domain availability search and suggestion surfaces.";
83
+ readonly defaultEnabled: false;
84
+ readonly runtime: {
85
+ readonly enabledInDevelopment: true;
86
+ readonly enabledForA8c: true;
87
+ readonly planDefaults: {};
88
+ };
89
+ }, {
90
+ readonly cohort: "launch";
91
+ readonly key: "domains.catalog";
92
+ readonly name: "Domain catalog";
93
+ readonly description: "Controls authenticated domain product/catalog operations; public suggestions, availability and WHOIS remain unflagged.";
94
+ readonly stage: "internal";
95
+ readonly surface: true;
96
+ readonly defaultEnabled: false;
97
+ readonly runtime: null;
98
+ readonly assignmentScopes: readonly ["user", "team", "global"];
99
+ readonly docs: {
100
+ readonly channel: "handbook";
101
+ readonly slug: "/features/domains/catalog";
102
+ readonly feedbackUrl: null;
103
+ };
104
+ readonly owner: "team:domains";
105
+ readonly requires: readonly [];
106
+ readonly lifecycleAdoptedAt: "2026-07-12";
107
+ readonly reviewAfter: "2026-08-11";
108
+ readonly removeAfter: "2026-10-10";
109
+ readonly gaAt: null;
110
+ readonly allowedActorPolicies: readonly ["request_actor"];
111
+ readonly downRamp: {
112
+ readonly code: "domain_catalog_hide";
113
+ readonly summary: "Hide authenticated catalog; public suggestions, availability and WHOIS remain.";
114
+ };
115
+ }, {
116
+ readonly cohort: "launch";
117
+ readonly key: "domains.registration";
118
+ readonly name: "Domain registration";
119
+ readonly description: "Allows domain registration, purchase, and transfer-in surfaces.";
120
+ readonly stage: "internal";
121
+ readonly surface: true;
122
+ readonly defaultEnabled: false;
123
+ readonly runtime: {
124
+ readonly enabledInDevelopment: true;
125
+ readonly enabledForA8c: true;
126
+ readonly planDefaults: {};
127
+ };
128
+ readonly assignmentScopes: readonly ["user", "team", "global"];
129
+ readonly docs: {
130
+ readonly channel: "handbook";
131
+ readonly slug: "/features/domains/registration";
132
+ readonly feedbackUrl: null;
133
+ };
134
+ readonly owner: "team:domains";
135
+ readonly requires: readonly [];
136
+ readonly lifecycleAdoptedAt: "2026-07-12";
137
+ readonly reviewAfter: "2026-08-11";
138
+ readonly removeAfter: "2026-10-10";
139
+ readonly gaAt: null;
140
+ readonly allowedActorPolicies: readonly ["request_actor", "persisted_request_actor"];
141
+ readonly downRamp: {
142
+ readonly code: "domain_registration_stop";
143
+ readonly summary: "Deny new customer mutations and unstarted provider submits; generic existing-domain read plus service-only reconciliation/compensation for externally committed work continue.";
144
+ };
145
+ }, {
146
+ readonly cohort: "launch";
147
+ readonly key: "domains.dns_management";
148
+ readonly name: "DNS management";
149
+ readonly description: "Allows customer DNS zone, nameserver, and record-management surfaces.";
150
+ readonly stage: "internal";
151
+ readonly surface: true;
152
+ readonly defaultEnabled: false;
153
+ readonly runtime: {
154
+ readonly enabledInDevelopment: true;
155
+ readonly enabledForA8c: true;
156
+ readonly planDefaults: {};
157
+ };
158
+ readonly assignmentScopes: readonly ["user", "team", "global"];
159
+ readonly docs: {
160
+ readonly channel: "handbook";
161
+ readonly slug: "/features/domains/dns-management";
162
+ readonly feedbackUrl: null;
163
+ };
164
+ readonly owner: "team:domains";
165
+ readonly requires: readonly [];
166
+ readonly lifecycleAdoptedAt: "2026-07-12";
167
+ readonly reviewAfter: "2026-08-11";
168
+ readonly removeAfter: "2026-10-10";
169
+ readonly gaAt: null;
170
+ readonly allowedActorPolicies: readonly ["request_actor", "persisted_request_actor"];
171
+ readonly downRamp: {
172
+ readonly code: "dns_management_stop";
173
+ readonly summary: "Deny customer mutation and unstarted provider apply; generic authoritative read plus service-only rollback/reconciliation for externally committed work continue.";
174
+ };
175
+ }, {
176
+ readonly cohort: "launch";
177
+ readonly key: "domains.wpcom_dns";
178
+ readonly name: "WordPress.com DNS automation";
179
+ readonly description: "Manage a domain's DNS through the owner's WordPress.com account.";
180
+ readonly stage: "internal";
181
+ readonly surface: true;
182
+ readonly defaultEnabled: false;
183
+ readonly runtime: {
184
+ readonly enabledForA8c: true;
185
+ readonly planDefaults: {};
186
+ };
187
+ readonly assignmentScopes: readonly ["team", "global"];
188
+ readonly docs: {
189
+ readonly channel: "handbook";
190
+ readonly slug: "/features/domains/wpcom-dns";
191
+ readonly feedbackUrl: null;
192
+ };
193
+ readonly owner: "team:domains";
194
+ readonly requires: readonly [];
195
+ readonly lifecycleAdoptedAt: "2026-07-12";
196
+ readonly reviewAfter: "2026-08-11";
197
+ readonly removeAfter: "2026-10-10";
198
+ readonly gaAt: null;
199
+ readonly allowedActorPolicies: readonly ["request_actor"];
200
+ readonly downRamp: {
201
+ readonly code: "wpcom_dns_stop";
202
+ readonly summary: "Deny new automation; service/operator detach and reconciliation continue.";
203
+ };
204
+ }, {
205
+ readonly cohort: "launch";
206
+ readonly key: "domains.domain_connect";
207
+ readonly name: "Domain Connect";
208
+ readonly description: "One-click DNS setup at providers that implement Domain Connect.";
209
+ readonly stage: "internal";
210
+ readonly surface: true;
211
+ readonly defaultEnabled: false;
212
+ readonly runtime: {
213
+ readonly enabledForA8c: true;
214
+ readonly planDefaults: {};
215
+ };
216
+ readonly assignmentScopes: readonly ["user", "team", "global"];
217
+ readonly docs: {
218
+ readonly channel: "handbook";
219
+ readonly slug: "/features/domains/domain-connect";
220
+ readonly feedbackUrl: null;
221
+ };
222
+ readonly owner: "team:domains";
223
+ readonly requires: readonly [];
224
+ readonly lifecycleAdoptedAt: "2026-07-12";
225
+ readonly reviewAfter: "2026-08-11";
226
+ readonly removeAfter: "2026-10-10";
227
+ readonly gaAt: null;
228
+ readonly allowedActorPolicies: readonly ["request_actor", "persisted_request_actor"];
229
+ readonly downRamp: {
230
+ readonly code: "domain_connect_stop";
231
+ readonly summary: "Deny new setup and every uncommitted callback; after an authenticated external commit, narrowly typed service-only reconciliation or compensation continues idempotently.";
232
+ };
233
+ }, {
234
+ readonly cohort: "launch";
235
+ readonly key: "domains.proxy_bindings";
236
+ readonly name: "Domain proxy bindings";
237
+ readonly description: "Allow a team to proxy custom-domain traffic to an external HTTP upstream.";
238
+ readonly stage: "private_beta";
239
+ readonly surface: true;
240
+ readonly defaultEnabled: false;
241
+ readonly runtime: {
242
+ readonly enabledForA8c: true;
243
+ readonly planDefaults: {
244
+ readonly internal: true;
245
+ };
246
+ };
247
+ readonly assignmentScopes: readonly ["team", "global"];
248
+ readonly docs: {
249
+ readonly channel: "public";
250
+ readonly slug: "/docs/domains/proxy-bindings";
251
+ readonly feedbackUrl: null;
252
+ };
253
+ readonly owner: "team:domains";
254
+ readonly requires: readonly [];
255
+ readonly lifecycleAdoptedAt: "2026-07-12";
256
+ readonly reviewAfter: "2026-08-11";
257
+ readonly removeAfter: "2026-10-10";
258
+ readonly gaAt: null;
259
+ readonly allowedActorPolicies: readonly ["resource_team"];
260
+ readonly downRamp: {
261
+ readonly code: "proxy_binding_stop";
262
+ readonly summary: "Deny new binds; discoverable authenticated read/detach plus service reconciliation continue.";
263
+ };
264
+ }, {
265
+ readonly cohort: "launch";
266
+ readonly key: "collab.notices";
267
+ readonly name: "Realtime notices";
268
+ readonly description: "Reserved kill-switch for future realtime preview notices.";
269
+ readonly stage: "internal";
270
+ readonly surface: false;
271
+ readonly defaultEnabled: false;
272
+ readonly runtime: {
273
+ readonly enabledForA8c: true;
274
+ readonly planDefaults: {};
275
+ };
276
+ readonly assignmentScopes: readonly ["team", "global"];
277
+ readonly docs: null;
278
+ readonly owner: "team:collaboration";
279
+ readonly requires: readonly [];
280
+ readonly lifecycleAdoptedAt: "2026-07-12";
281
+ readonly reviewAfter: "2026-08-11";
282
+ readonly removeAfter: null;
283
+ readonly gaAt: null;
284
+ readonly allowedActorPolicies: readonly ["resource_team"];
285
+ readonly downRamp: {
286
+ readonly code: "notices_stop";
287
+ readonly summary: "Stop mint/publish; service/operator revoke and cleanup continue.";
288
+ };
289
+ }, {
290
+ readonly key: "collab.drawing";
291
+ readonly name: "Collab drawing";
292
+ readonly description: "Enables drawing feedback in the Collab overlay.";
293
+ readonly defaultEnabled: true;
294
+ readonly runtime: {
295
+ readonly enabledInDevelopment: true;
296
+ readonly enabledForA8c: true;
297
+ readonly planDefaults: {};
298
+ };
299
+ }, {
300
+ readonly cohort: "launch";
301
+ readonly key: "sites.dedicated_runtime";
302
+ readonly name: "Dedicated runtime sites";
303
+ readonly description: "Allows teams to create dedicated WP.Cloud sites and place team spaces on them.";
304
+ readonly stage: "internal";
305
+ readonly surface: true;
306
+ readonly defaultEnabled: false;
307
+ readonly runtime: {
308
+ readonly enabledInDevelopment: true;
309
+ readonly enabledForA8c: true;
310
+ readonly planDefaults: {};
311
+ };
312
+ readonly assignmentScopes: readonly ["team", "global"];
313
+ readonly docs: {
314
+ readonly channel: "handbook";
315
+ readonly slug: "/features/sites/dedicated-runtime";
316
+ readonly feedbackUrl: null;
317
+ };
318
+ readonly owner: "team:runtime";
319
+ readonly requires: readonly [];
320
+ readonly lifecycleAdoptedAt: "2026-07-12";
321
+ readonly reviewAfter: "2026-08-11";
322
+ readonly removeAfter: "2026-10-10";
323
+ readonly gaAt: null;
324
+ readonly allowedActorPolicies: readonly ["request_actor", "resource_team"];
325
+ readonly downRamp: {
326
+ readonly code: "dedicated_runtime_stop";
327
+ readonly 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.";
328
+ };
329
+ }, {
330
+ readonly key: "shelf";
331
+ readonly name: "Shelf";
332
+ readonly description: "Exposes the per-user artifact shelf: dashboard curation and public /shelf/{handle} pages.";
333
+ readonly defaultEnabled: false;
334
+ readonly runtime: {
335
+ readonly enabledInDevelopment: true;
336
+ readonly enabledForA8c: true;
337
+ readonly planDefaults: {};
338
+ };
339
+ }, {
340
+ readonly cohort: "launch";
341
+ readonly key: "build.content_pipeline";
342
+ readonly name: "Content pipeline";
343
+ readonly description: "Controls publish/finalize use of the content transformation pipeline.";
344
+ readonly stage: "internal";
345
+ readonly surface: true;
346
+ readonly defaultEnabled: false;
347
+ readonly runtime: null;
348
+ readonly assignmentScopes: readonly ["team", "global"];
349
+ readonly docs: {
350
+ readonly channel: "handbook";
351
+ readonly slug: "/features/build/content-pipeline";
352
+ readonly feedbackUrl: null;
353
+ };
354
+ readonly owner: "team:build-platform";
355
+ readonly requires: readonly [];
356
+ readonly lifecycleAdoptedAt: "2026-07-12";
357
+ readonly reviewAfter: "2026-08-11";
358
+ readonly removeAfter: "2026-10-10";
359
+ readonly gaAt: null;
360
+ readonly allowedActorPolicies: readonly ["resource_team"];
361
+ readonly downRamp: {
362
+ readonly code: "content_pipeline_stop";
363
+ readonly summary: "Deny next build/finalize; completed immutable output remains.";
364
+ };
365
+ }, {
366
+ readonly cohort: "launch";
367
+ readonly key: "tags";
368
+ readonly name: "Spacefast Tag Manager";
369
+ readonly description: "Enables Spacefast Tag Manager command surfaces, SDK configuration, and governed tag workflows.";
370
+ readonly stage: "private_beta";
371
+ readonly surface: true;
372
+ readonly defaultEnabled: false;
373
+ readonly runtime: {
374
+ readonly enabledInDevelopment: true;
375
+ readonly enabledForA8c: true;
376
+ readonly planDefaults: {};
377
+ };
378
+ readonly assignmentScopes: readonly ["team", "global"];
379
+ readonly docs: {
380
+ readonly channel: "public";
381
+ readonly slug: "/docs/tags";
382
+ readonly feedbackUrl: null;
383
+ };
384
+ readonly owner: "team:tag-manager";
385
+ readonly requires: readonly [];
386
+ readonly lifecycleAdoptedAt: "2026-07-12";
387
+ readonly reviewAfter: "2026-08-11";
388
+ readonly removeAfter: "2026-10-10";
389
+ readonly gaAt: null;
390
+ readonly allowedActorPolicies: readonly ["request_actor", "resource_team"];
391
+ readonly downRamp: {
392
+ readonly code: "tags_stop";
393
+ readonly summary: "Deny every customer Tag API and dynamic module delivery; internal operator export/cleanup and platform-generated inert marker bytes remain.";
394
+ };
395
+ }, {
396
+ readonly cohort: "launch";
397
+ readonly key: "zero";
398
+ readonly name: "Spacefast Zero";
399
+ readonly description: "Enables Spacefast Zero command surfaces and hosted Zero app workflows.";
400
+ readonly stage: "internal";
401
+ readonly surface: true;
402
+ readonly defaultEnabled: false;
403
+ readonly runtime: {
404
+ readonly enabledForA8c: true;
405
+ readonly planDefaults: {
406
+ readonly enterprise: true;
407
+ readonly internal: true;
408
+ };
409
+ };
410
+ readonly assignmentScopes: readonly ["team", "global"];
411
+ readonly docs: {
412
+ readonly channel: "handbook";
413
+ readonly slug: "/features/zero";
414
+ readonly feedbackUrl: null;
415
+ };
416
+ readonly owner: "team:zero";
417
+ readonly requires: readonly ["sites.dedicated_runtime"];
418
+ readonly lifecycleAdoptedAt: "2026-07-12";
419
+ readonly reviewAfter: "2026-08-11";
420
+ readonly removeAfter: "2026-10-10";
421
+ readonly gaAt: null;
422
+ readonly allowedActorPolicies: readonly ["resource_team"];
423
+ readonly downRamp: {
424
+ readonly code: "zero_stop";
425
+ readonly summary: "Stop activation/invocation; operator export/delete/migration recovery remain.";
426
+ };
427
+ }, {
428
+ readonly cohort: "launch";
429
+ readonly key: "functions";
430
+ readonly name: "Spacefast Functions";
431
+ readonly description: string;
432
+ readonly stage: "internal";
433
+ readonly surface: true;
434
+ readonly defaultEnabled: false;
435
+ readonly runtime: {
436
+ readonly enabledForA8c: true;
437
+ readonly planDefaults: {};
438
+ };
439
+ readonly assignmentScopes: readonly ["team", "global"];
440
+ readonly docs: {
441
+ readonly channel: "handbook";
442
+ readonly slug: "/features/functions";
443
+ readonly feedbackUrl: null;
444
+ };
445
+ readonly owner: "team:zero";
446
+ readonly requires: readonly [];
447
+ readonly lifecycleAdoptedAt: "2026-07-27";
448
+ readonly reviewAfter: "2026-08-26";
449
+ readonly removeAfter: "2026-10-25";
450
+ readonly gaAt: null;
451
+ readonly allowedActorPolicies: readonly ["resource_team"];
452
+ readonly downRamp: {
453
+ readonly code: "functions_stop";
454
+ readonly summary: string;
455
+ };
456
+ }, {
457
+ readonly cohort: "launch";
458
+ readonly key: "spaces.slug_rename";
459
+ readonly name: "Space slug rename";
460
+ readonly description: "Renames a space and its managed hostname while retained former hostnames temporarily redirect to the current address.";
461
+ readonly stage: "ga";
462
+ readonly surface: true;
463
+ readonly defaultEnabled: true;
464
+ readonly runtime: {
465
+ readonly enabledInDevelopment: true;
466
+ readonly enabledForA8c: true;
467
+ readonly planDefaults: {};
468
+ };
469
+ readonly assignmentScopes: readonly ["user", "team", "global"];
470
+ readonly docs: {
471
+ readonly channel: "public";
472
+ readonly slug: "/docs/spaces/rename";
473
+ readonly feedbackUrl: null;
474
+ };
475
+ readonly owner: "team:spaces";
476
+ readonly requires: readonly [];
477
+ readonly lifecycleAdoptedAt: "2026-07-12";
478
+ readonly reviewAfter: "2026-08-11";
479
+ readonly removeAfter: "2026-10-10";
480
+ readonly gaAt: "2026-07-27";
481
+ readonly allowedActorPolicies: readonly ["request_actor"];
482
+ readonly downRamp: {
483
+ readonly code: "slug_rename_stop";
484
+ readonly summary: "Deny new slug renames while already-committed hostname redirects and runtime convergence continue.";
485
+ };
486
+ }];
487
+ type FeatureEntry = (typeof featureEntries)[number];
488
+ type LifecycleFeatureEntry = Extract<FeatureEntry, {
489
+ readonly cohort: "launch";
490
+ }>;
491
+ type RuntimeFeatureEntry = Extract<FeatureEntry, {
492
+ readonly runtime: object;
493
+ }>;
494
+ export type LifecycleFeatureKey = LifecycleFeatureEntry["key"];
495
+ export type RuntimeFeatureKey = RuntimeFeatureEntry["key"];
496
+ export type RuntimeFeatureDefinition<K extends RuntimeFeatureKey = RuntimeFeatureKey> = RuntimeFeatureDefinitionShape<K>;
6
497
  export declare const FEATURE_LIFECYCLE_REGISTRY: readonly FeatureRegistryEntry<LifecycleFeatureKey>[];
498
+ type RuntimeDefinitionRecord<K extends string> = {
499
+ readonly [Key in K]: RuntimeFeatureDefinitionShape<Key>;
500
+ };
501
+ export declare const FEATURE_RUNTIME_KEYS: readonly RuntimeFeatureKey[];
502
+ export declare const FEATURE_RUNTIME_DEFINITIONS: Readonly<RuntimeDefinitionRecord<"zero" | "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" | "shelf" | "tags" | "functions" | "spaces.slug_rename">>;
7
503
  export declare const FEATURE_LIFECYCLE_BY_KEY: ReadonlyMap<LifecycleFeatureKey, FeatureRegistryEntry<LifecycleFeatureKey>>;