@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,11 +1,4 @@
|
|
|
1
1
|
export const FEATURE_STAGES = ["internal", "private_beta", "ga"];
|
|
2
|
-
export const FEATURE_ASSIGNMENT_SCOPES = ["user", "team", "global"];
|
|
3
|
-
export const FEATURE_EXECUTION_ACTOR_POLICIES = [
|
|
4
|
-
"request_actor",
|
|
5
|
-
"persisted_request_actor",
|
|
6
|
-
"resource_team",
|
|
7
|
-
"global_policy",
|
|
8
|
-
];
|
|
9
2
|
export const FEATURE_OWNER_IDS = [
|
|
10
3
|
"team:access",
|
|
11
4
|
"team:build-platform",
|
|
@@ -21,10 +14,8 @@ export const FEATURE_OWNER_IDS = [
|
|
|
21
14
|
export function freezeFeatureRegistryEntry(definition) {
|
|
22
15
|
return Object.freeze({
|
|
23
16
|
...definition,
|
|
24
|
-
assignmentScopes: Object.freeze([...definition.assignmentScopes]),
|
|
25
17
|
docs: definition.docs === null ? null : Object.freeze({ ...definition.docs }),
|
|
26
18
|
requires: Object.freeze([...definition.requires]),
|
|
27
|
-
allowedActorPolicies: Object.freeze([...definition.allowedActorPolicies]),
|
|
28
19
|
downRamp: Object.freeze({ ...definition.downRamp }),
|
|
29
20
|
});
|
|
30
21
|
}
|
|
@@ -104,21 +95,8 @@ export function validateFeatureLifecycleRegistry(registry) {
|
|
|
104
95
|
if (hasRequiredMetadata(definition.downRamp.code) &&
|
|
105
96
|
!/^[a-z][a-z0-9]*(?:_[a-z][a-z0-9]*)*$/.test(definition.downRamp.code))
|
|
106
97
|
errors.push(`${definition.key}: downRamp.code must use canonical snake_case`);
|
|
107
|
-
|
|
108
|
-
errors.push(`${definition.key}:
|
|
109
|
-
if (definition.allowedActorPolicies.length === 0)
|
|
110
|
-
errors.push(`${definition.key}: allowedActorPolicies must not be empty`);
|
|
111
|
-
for (const [field, values] of [
|
|
112
|
-
["assignmentScopes", definition.assignmentScopes],
|
|
113
|
-
["allowedActorPolicies", definition.allowedActorPolicies],
|
|
114
|
-
["requires", definition.requires],
|
|
115
|
-
]) {
|
|
116
|
-
for (const duplicate of duplicateValues(values))
|
|
117
|
-
errors.push(`${definition.key}: ${field} contains duplicate ${duplicate}`);
|
|
118
|
-
}
|
|
119
|
-
if (definition.allowedActorPolicies.includes("global_policy") &&
|
|
120
|
-
(definition.assignmentScopes.length !== 1 || definition.assignmentScopes[0] !== "global"))
|
|
121
|
-
errors.push(`${definition.key}: global policy requires exactly global assignment scope`);
|
|
98
|
+
for (const duplicate of duplicateValues(definition.requires))
|
|
99
|
+
errors.push(`${definition.key}: requires contains duplicate ${duplicate}`);
|
|
122
100
|
if (definition.stage !== "ga" && definition.surface && definition.defaultEnabled)
|
|
123
101
|
errors.push(`${definition.key}: non-GA features default off`);
|
|
124
102
|
if (definition.stage === "ga" && definition.surface && !definition.defaultEnabled)
|
|
@@ -173,19 +151,12 @@ export function validateFeatureLifecycleRegistry(registry) {
|
|
|
173
151
|
definition.removeAfter !== null &&
|
|
174
152
|
definition.gaAt > definition.removeAfter)
|
|
175
153
|
errors.push(`${definition.key}: gaAt must not follow removeAfter`);
|
|
176
|
-
if (definition.assignmentScopes.includes("user") &&
|
|
177
|
-
!definition.allowedActorPolicies.some((policy) => policy === "request_actor" || policy === "persisted_request_actor"))
|
|
178
|
-
errors.push(`${definition.key}: user scope requires an actor-aware policy`);
|
|
179
154
|
for (const dependency of definition.requires) {
|
|
180
155
|
const dependencyDefinition = byKey.get(dependency);
|
|
181
156
|
if (!dependencyDefinition) {
|
|
182
157
|
errors.push(`${definition.key}: unknown dependency ${dependency}`);
|
|
183
158
|
continue;
|
|
184
159
|
}
|
|
185
|
-
if (definition.allowedActorPolicies.some((policy) => !dependencyDefinition.allowedActorPolicies.includes(policy)))
|
|
186
|
-
errors.push(`${definition.key}: actor policies must be allowed by dependency ${dependency}`);
|
|
187
|
-
if (definition.assignmentScopes.some((scope) => !dependencyDefinition.assignmentScopes.includes(scope)))
|
|
188
|
-
errors.push(`${definition.key}: assignment scopes must be supported by dependency ${dependency}`);
|
|
189
160
|
if (FEATURE_STAGES.indexOf(dependencyDefinition.stage) <
|
|
190
161
|
FEATURE_STAGES.indexOf(definition.stage))
|
|
191
162
|
errors.push(`${definition.key}: dependency ${dependency} must be at least as mature as its dependent`);
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { FeatureRegistryEntry } from "./feature-lifecycle-core.js";
|
|
2
2
|
import type { PlanCode } from "./features.js";
|
|
3
|
-
export {
|
|
4
|
-
export type {
|
|
3
|
+
export { FEATURE_OWNER_IDS, FEATURE_STAGES, freezeFeatureRegistryEntry, validateFeatureLifecycleRegistry, } from "./feature-lifecycle-core.js";
|
|
4
|
+
export type { FeatureOwnerId, FeatureRegistryEntry, FeatureStage, } from "./feature-lifecycle-core.js";
|
|
5
5
|
type RuntimeFeaturePolicy = {
|
|
6
6
|
readonly enabledInDevelopment?: boolean;
|
|
7
7
|
readonly enabledForA8c: boolean;
|
|
8
8
|
readonly planDefaults: Readonly<Partial<Record<PlanCode, boolean>>>;
|
|
9
9
|
};
|
|
10
|
-
type
|
|
10
|
+
type RuntimeFeatureDefinitionFields<K extends string> = {
|
|
11
11
|
readonly key: K;
|
|
12
12
|
readonly name: string;
|
|
13
13
|
readonly description: string;
|
|
@@ -25,7 +25,6 @@ declare const featureEntries: readonly [{
|
|
|
25
25
|
readonly enabledForA8c: true;
|
|
26
26
|
readonly planDefaults: {};
|
|
27
27
|
};
|
|
28
|
-
readonly assignmentScopes: readonly ["team", "global"];
|
|
29
28
|
readonly docs: null;
|
|
30
29
|
readonly owner: "team:commerce";
|
|
31
30
|
readonly requires: readonly [];
|
|
@@ -33,7 +32,6 @@ declare const featureEntries: readonly [{
|
|
|
33
32
|
readonly reviewAfter: "2026-08-11";
|
|
34
33
|
readonly removeAfter: null;
|
|
35
34
|
readonly gaAt: null;
|
|
36
|
-
readonly allowedActorPolicies: readonly ["request_actor"];
|
|
37
35
|
readonly downRamp: {
|
|
38
36
|
readonly code: "paid_acquisition_stop";
|
|
39
37
|
readonly summary: "Deny new acquisition; allow cancel, portal, provider reconciliation and purchase recovery.";
|
|
@@ -50,7 +48,6 @@ declare const featureEntries: readonly [{
|
|
|
50
48
|
readonly enabledForA8c: true;
|
|
51
49
|
readonly planDefaults: {};
|
|
52
50
|
};
|
|
53
|
-
readonly assignmentScopes: readonly ["global"];
|
|
54
51
|
readonly docs: {
|
|
55
52
|
readonly channel: "public";
|
|
56
53
|
readonly slug: "/docs/publishing/anonymous";
|
|
@@ -62,7 +59,6 @@ declare const featureEntries: readonly [{
|
|
|
62
59
|
readonly reviewAfter: "2026-07-26";
|
|
63
60
|
readonly removeAfter: "2026-08-11";
|
|
64
61
|
readonly gaAt: "2026-07-12";
|
|
65
|
-
readonly allowedActorPolicies: readonly ["request_actor", "global_policy"];
|
|
66
62
|
readonly downRamp: {
|
|
67
63
|
readonly code: "anonymous_publish_stop";
|
|
68
64
|
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.";
|
|
@@ -95,7 +91,6 @@ declare const featureEntries: readonly [{
|
|
|
95
91
|
readonly surface: true;
|
|
96
92
|
readonly defaultEnabled: false;
|
|
97
93
|
readonly runtime: null;
|
|
98
|
-
readonly assignmentScopes: readonly ["user", "team", "global"];
|
|
99
94
|
readonly docs: {
|
|
100
95
|
readonly channel: "handbook";
|
|
101
96
|
readonly slug: "/features/domains/catalog";
|
|
@@ -107,7 +102,6 @@ declare const featureEntries: readonly [{
|
|
|
107
102
|
readonly reviewAfter: "2026-08-11";
|
|
108
103
|
readonly removeAfter: "2026-10-10";
|
|
109
104
|
readonly gaAt: null;
|
|
110
|
-
readonly allowedActorPolicies: readonly ["request_actor"];
|
|
111
105
|
readonly downRamp: {
|
|
112
106
|
readonly code: "domain_catalog_hide";
|
|
113
107
|
readonly summary: "Hide authenticated catalog; public suggestions, availability and WHOIS remain.";
|
|
@@ -125,7 +119,6 @@ declare const featureEntries: readonly [{
|
|
|
125
119
|
readonly enabledForA8c: true;
|
|
126
120
|
readonly planDefaults: {};
|
|
127
121
|
};
|
|
128
|
-
readonly assignmentScopes: readonly ["user", "team", "global"];
|
|
129
122
|
readonly docs: {
|
|
130
123
|
readonly channel: "handbook";
|
|
131
124
|
readonly slug: "/features/domains/registration";
|
|
@@ -137,7 +130,6 @@ declare const featureEntries: readonly [{
|
|
|
137
130
|
readonly reviewAfter: "2026-08-11";
|
|
138
131
|
readonly removeAfter: "2026-10-10";
|
|
139
132
|
readonly gaAt: null;
|
|
140
|
-
readonly allowedActorPolicies: readonly ["request_actor", "persisted_request_actor"];
|
|
141
133
|
readonly downRamp: {
|
|
142
134
|
readonly code: "domain_registration_stop";
|
|
143
135
|
readonly summary: "Deny new customer mutations and unstarted provider submits; generic existing-domain read plus service-only reconciliation/compensation for externally committed work continue.";
|
|
@@ -155,7 +147,6 @@ declare const featureEntries: readonly [{
|
|
|
155
147
|
readonly enabledForA8c: true;
|
|
156
148
|
readonly planDefaults: {};
|
|
157
149
|
};
|
|
158
|
-
readonly assignmentScopes: readonly ["user", "team", "global"];
|
|
159
150
|
readonly docs: {
|
|
160
151
|
readonly channel: "handbook";
|
|
161
152
|
readonly slug: "/features/domains/dns-management";
|
|
@@ -167,7 +158,6 @@ declare const featureEntries: readonly [{
|
|
|
167
158
|
readonly reviewAfter: "2026-08-11";
|
|
168
159
|
readonly removeAfter: "2026-10-10";
|
|
169
160
|
readonly gaAt: null;
|
|
170
|
-
readonly allowedActorPolicies: readonly ["request_actor", "persisted_request_actor"];
|
|
171
161
|
readonly downRamp: {
|
|
172
162
|
readonly code: "dns_management_stop";
|
|
173
163
|
readonly summary: "Deny customer mutation and unstarted provider apply; generic authoritative read plus service-only rollback/reconciliation for externally committed work continue.";
|
|
@@ -184,7 +174,6 @@ declare const featureEntries: readonly [{
|
|
|
184
174
|
readonly enabledForA8c: true;
|
|
185
175
|
readonly planDefaults: {};
|
|
186
176
|
};
|
|
187
|
-
readonly assignmentScopes: readonly ["team", "global"];
|
|
188
177
|
readonly docs: {
|
|
189
178
|
readonly channel: "handbook";
|
|
190
179
|
readonly slug: "/features/domains/wpcom-dns";
|
|
@@ -196,7 +185,6 @@ declare const featureEntries: readonly [{
|
|
|
196
185
|
readonly reviewAfter: "2026-08-11";
|
|
197
186
|
readonly removeAfter: "2026-10-10";
|
|
198
187
|
readonly gaAt: null;
|
|
199
|
-
readonly allowedActorPolicies: readonly ["request_actor"];
|
|
200
188
|
readonly downRamp: {
|
|
201
189
|
readonly code: "wpcom_dns_stop";
|
|
202
190
|
readonly summary: "Deny new automation; service/operator detach and reconciliation continue.";
|
|
@@ -213,7 +201,6 @@ declare const featureEntries: readonly [{
|
|
|
213
201
|
readonly enabledForA8c: true;
|
|
214
202
|
readonly planDefaults: {};
|
|
215
203
|
};
|
|
216
|
-
readonly assignmentScopes: readonly ["user", "team", "global"];
|
|
217
204
|
readonly docs: {
|
|
218
205
|
readonly channel: "handbook";
|
|
219
206
|
readonly slug: "/features/domains/domain-connect";
|
|
@@ -225,7 +212,6 @@ declare const featureEntries: readonly [{
|
|
|
225
212
|
readonly reviewAfter: "2026-08-11";
|
|
226
213
|
readonly removeAfter: "2026-10-10";
|
|
227
214
|
readonly gaAt: null;
|
|
228
|
-
readonly allowedActorPolicies: readonly ["request_actor", "persisted_request_actor"];
|
|
229
215
|
readonly downRamp: {
|
|
230
216
|
readonly code: "domain_connect_stop";
|
|
231
217
|
readonly summary: "Deny new setup and every uncommitted callback; after an authenticated external commit, narrowly typed service-only reconciliation or compensation continues idempotently.";
|
|
@@ -244,7 +230,6 @@ declare const featureEntries: readonly [{
|
|
|
244
230
|
readonly internal: true;
|
|
245
231
|
};
|
|
246
232
|
};
|
|
247
|
-
readonly assignmentScopes: readonly ["team", "global"];
|
|
248
233
|
readonly docs: {
|
|
249
234
|
readonly channel: "public";
|
|
250
235
|
readonly slug: "/docs/spaces/proxy-routes";
|
|
@@ -256,7 +241,6 @@ declare const featureEntries: readonly [{
|
|
|
256
241
|
readonly reviewAfter: "2026-08-11";
|
|
257
242
|
readonly removeAfter: "2026-10-10";
|
|
258
243
|
readonly gaAt: null;
|
|
259
|
-
readonly allowedActorPolicies: readonly ["resource_team"];
|
|
260
244
|
readonly downRamp: {
|
|
261
245
|
readonly code: "proxy_binding_stop";
|
|
262
246
|
readonly summary: "Deny new binds; discoverable authenticated read/detach plus service reconciliation continue.";
|
|
@@ -265,7 +249,7 @@ declare const featureEntries: readonly [{
|
|
|
265
249
|
readonly cohort: "launch";
|
|
266
250
|
readonly key: "collab.notices";
|
|
267
251
|
readonly name: "Realtime notices";
|
|
268
|
-
readonly description: "
|
|
252
|
+
readonly 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.";
|
|
269
253
|
readonly stage: "internal";
|
|
270
254
|
readonly surface: false;
|
|
271
255
|
readonly defaultEnabled: false;
|
|
@@ -273,7 +257,6 @@ declare const featureEntries: readonly [{
|
|
|
273
257
|
readonly enabledForA8c: true;
|
|
274
258
|
readonly planDefaults: {};
|
|
275
259
|
};
|
|
276
|
-
readonly assignmentScopes: readonly ["team", "global"];
|
|
277
260
|
readonly docs: null;
|
|
278
261
|
readonly owner: "team:collaboration";
|
|
279
262
|
readonly requires: readonly [];
|
|
@@ -281,7 +264,6 @@ declare const featureEntries: readonly [{
|
|
|
281
264
|
readonly reviewAfter: "2026-08-11";
|
|
282
265
|
readonly removeAfter: null;
|
|
283
266
|
readonly gaAt: null;
|
|
284
|
-
readonly allowedActorPolicies: readonly ["resource_team"];
|
|
285
267
|
readonly downRamp: {
|
|
286
268
|
readonly code: "notices_stop";
|
|
287
269
|
readonly summary: "Stop mint/publish; service/operator revoke and cleanup continue.";
|
|
@@ -309,7 +291,6 @@ declare const featureEntries: readonly [{
|
|
|
309
291
|
readonly enabledForA8c: true;
|
|
310
292
|
readonly planDefaults: {};
|
|
311
293
|
};
|
|
312
|
-
readonly assignmentScopes: readonly ["team", "global"];
|
|
313
294
|
readonly docs: {
|
|
314
295
|
readonly channel: "public";
|
|
315
296
|
readonly slug: "/docs/apps";
|
|
@@ -321,21 +302,10 @@ declare const featureEntries: readonly [{
|
|
|
321
302
|
readonly reviewAfter: null;
|
|
322
303
|
readonly removeAfter: "2026-11-01";
|
|
323
304
|
readonly gaAt: "2026-08-05";
|
|
324
|
-
readonly allowedActorPolicies: readonly ["request_actor", "resource_team"];
|
|
325
305
|
readonly downRamp: {
|
|
326
306
|
readonly code: "dedicated_runtime_stop";
|
|
327
307
|
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
308
|
};
|
|
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
309
|
}, {
|
|
340
310
|
readonly cohort: "launch";
|
|
341
311
|
readonly key: "build.content_pipeline";
|
|
@@ -345,7 +315,6 @@ declare const featureEntries: readonly [{
|
|
|
345
315
|
readonly surface: true;
|
|
346
316
|
readonly defaultEnabled: false;
|
|
347
317
|
readonly runtime: null;
|
|
348
|
-
readonly assignmentScopes: readonly ["team", "global"];
|
|
349
318
|
readonly docs: {
|
|
350
319
|
readonly channel: "handbook";
|
|
351
320
|
readonly slug: "/features/build/content-pipeline";
|
|
@@ -357,7 +326,6 @@ declare const featureEntries: readonly [{
|
|
|
357
326
|
readonly reviewAfter: "2026-08-11";
|
|
358
327
|
readonly removeAfter: "2026-10-10";
|
|
359
328
|
readonly gaAt: null;
|
|
360
|
-
readonly allowedActorPolicies: readonly ["resource_team"];
|
|
361
329
|
readonly downRamp: {
|
|
362
330
|
readonly code: "content_pipeline_stop";
|
|
363
331
|
readonly summary: "Deny next build/finalize; completed immutable output remains.";
|
|
@@ -375,7 +343,6 @@ declare const featureEntries: readonly [{
|
|
|
375
343
|
readonly enabledForA8c: true;
|
|
376
344
|
readonly planDefaults: {};
|
|
377
345
|
};
|
|
378
|
-
readonly assignmentScopes: readonly ["team", "global"];
|
|
379
346
|
readonly docs: {
|
|
380
347
|
readonly channel: "public";
|
|
381
348
|
readonly slug: "/docs/tags";
|
|
@@ -387,7 +354,6 @@ declare const featureEntries: readonly [{
|
|
|
387
354
|
readonly reviewAfter: "2026-08-11";
|
|
388
355
|
readonly removeAfter: "2026-10-10";
|
|
389
356
|
readonly gaAt: null;
|
|
390
|
-
readonly allowedActorPolicies: readonly ["request_actor", "resource_team"];
|
|
391
357
|
readonly downRamp: {
|
|
392
358
|
readonly code: "tags_stop";
|
|
393
359
|
readonly summary: "Deny every customer Tag API and dynamic module delivery; internal operator export/cleanup and platform-generated inert marker bytes remain.";
|
|
@@ -404,19 +370,17 @@ declare const featureEntries: readonly [{
|
|
|
404
370
|
readonly enabledForA8c: true;
|
|
405
371
|
readonly planDefaults: {};
|
|
406
372
|
};
|
|
407
|
-
readonly assignmentScopes: readonly ["team", "global"];
|
|
408
373
|
readonly docs: {
|
|
409
374
|
readonly channel: "public";
|
|
410
375
|
readonly slug: "/docs/apps/zero";
|
|
411
376
|
readonly feedbackUrl: null;
|
|
412
377
|
};
|
|
413
378
|
readonly owner: "team:zero";
|
|
414
|
-
readonly requires: readonly [
|
|
379
|
+
readonly requires: readonly [];
|
|
415
380
|
readonly lifecycleAdoptedAt: "2026-07-12";
|
|
416
381
|
readonly reviewAfter: null;
|
|
417
382
|
readonly removeAfter: "2026-11-01";
|
|
418
383
|
readonly gaAt: "2026-08-05";
|
|
419
|
-
readonly allowedActorPolicies: readonly ["resource_team"];
|
|
420
384
|
readonly downRamp: {
|
|
421
385
|
readonly code: "zero_stop";
|
|
422
386
|
readonly summary: "Stop activation/invocation; operator export/delete/migration recovery remain.";
|
|
@@ -426,14 +390,13 @@ declare const featureEntries: readonly [{
|
|
|
426
390
|
readonly key: "functions";
|
|
427
391
|
readonly name: "Spacefast Functions";
|
|
428
392
|
readonly description: string;
|
|
429
|
-
readonly stage: "
|
|
393
|
+
readonly stage: "ga";
|
|
430
394
|
readonly surface: true;
|
|
431
|
-
readonly defaultEnabled:
|
|
395
|
+
readonly defaultEnabled: true;
|
|
432
396
|
readonly runtime: {
|
|
433
397
|
readonly enabledForA8c: true;
|
|
434
398
|
readonly planDefaults: {};
|
|
435
399
|
};
|
|
436
|
-
readonly assignmentScopes: readonly ["team", "global"];
|
|
437
400
|
readonly docs: {
|
|
438
401
|
readonly channel: "public";
|
|
439
402
|
readonly slug: "/docs/apps/functions";
|
|
@@ -442,10 +405,9 @@ declare const featureEntries: readonly [{
|
|
|
442
405
|
readonly owner: "team:zero";
|
|
443
406
|
readonly requires: readonly [];
|
|
444
407
|
readonly lifecycleAdoptedAt: "2026-07-27";
|
|
445
|
-
readonly reviewAfter:
|
|
408
|
+
readonly reviewAfter: null;
|
|
446
409
|
readonly removeAfter: "2026-11-01";
|
|
447
|
-
readonly gaAt:
|
|
448
|
-
readonly allowedActorPolicies: readonly ["resource_team"];
|
|
410
|
+
readonly gaAt: "2026-08-12";
|
|
449
411
|
readonly downRamp: {
|
|
450
412
|
readonly code: "functions_stop";
|
|
451
413
|
readonly summary: string;
|
|
@@ -463,7 +425,6 @@ declare const featureEntries: readonly [{
|
|
|
463
425
|
readonly enabledForA8c: true;
|
|
464
426
|
readonly planDefaults: {};
|
|
465
427
|
};
|
|
466
|
-
readonly assignmentScopes: readonly ["user", "team", "global"];
|
|
467
428
|
readonly docs: {
|
|
468
429
|
readonly channel: "public";
|
|
469
430
|
readonly slug: "/docs/spaces/rename";
|
|
@@ -475,7 +436,6 @@ declare const featureEntries: readonly [{
|
|
|
475
436
|
readonly reviewAfter: "2026-08-11";
|
|
476
437
|
readonly removeAfter: "2026-10-10";
|
|
477
438
|
readonly gaAt: "2026-07-27";
|
|
478
|
-
readonly allowedActorPolicies: readonly ["request_actor"];
|
|
479
439
|
readonly downRamp: {
|
|
480
440
|
readonly code: "slug_rename_stop";
|
|
481
441
|
readonly summary: "Deny new slug renames while already-committed hostname redirects and runtime convergence continue.";
|
|
@@ -490,11 +450,11 @@ type RuntimeFeatureEntry = Extract<FeatureEntry, {
|
|
|
490
450
|
}>;
|
|
491
451
|
export type LifecycleFeatureKey = LifecycleFeatureEntry["key"];
|
|
492
452
|
export type RuntimeFeatureKey = RuntimeFeatureEntry["key"];
|
|
493
|
-
export type RuntimeFeatureDefinition<K extends RuntimeFeatureKey = RuntimeFeatureKey> =
|
|
453
|
+
export type RuntimeFeatureDefinition<K extends RuntimeFeatureKey = RuntimeFeatureKey> = RuntimeFeatureDefinitionFields<K>;
|
|
494
454
|
export declare const FEATURE_LIFECYCLE_REGISTRY: readonly FeatureRegistryEntry<LifecycleFeatureKey>[];
|
|
495
455
|
type RuntimeDefinitionRecord<K extends string> = {
|
|
496
|
-
readonly [Key in K]:
|
|
456
|
+
readonly [Key in K]: RuntimeFeatureDefinitionFields<Key>;
|
|
497
457
|
};
|
|
498
458
|
export declare const FEATURE_RUNTIME_KEYS: readonly RuntimeFeatureKey[];
|
|
499
|
-
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" | "
|
|
459
|
+
export declare const FEATURE_RUNTIME_DEFINITIONS: Readonly<RuntimeDefinitionRecord<"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">>;
|
|
500
460
|
export declare const FEATURE_LIFECYCLE_BY_KEY: ReadonlyMap<LifecycleFeatureKey, FeatureRegistryEntry<LifecycleFeatureKey>>;
|