@spacefast/common 0.0.11 → 0.0.12

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 (122) 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 +42 -24
  12. package/dist/contracts/access.js +73 -34
  13. package/dist/contracts/activity.d.ts +1 -1
  14. package/dist/contracts/activity.js +5 -5
  15. package/dist/contracts/api-keys.d.ts +53 -45
  16. package/dist/contracts/api-keys.js +1 -0
  17. package/dist/contracts/archives.d.ts +8 -8
  18. package/dist/contracts/builds.d.ts +8 -8
  19. package/dist/contracts/builds.js +28 -48
  20. package/dist/contracts/channels.js +1 -2
  21. package/dist/contracts/comments.d.ts +55 -19
  22. package/dist/contracts/comments.js +56 -17
  23. package/dist/contracts/common.d.ts +4 -3
  24. package/dist/contracts/common.js +2 -0
  25. package/dist/contracts/deployments.d.ts +3 -3
  26. package/dist/contracts/device-auth.d.ts +14 -12
  27. package/dist/contracts/docs.d.ts +5 -5
  28. package/dist/contracts/domains.d.ts +261 -1330
  29. package/dist/contracts/domains.js +39 -301
  30. package/dist/contracts/email-preferences.d.ts +50 -0
  31. package/dist/contracts/email-preferences.js +44 -0
  32. package/dist/contracts/enums.d.ts +1 -1
  33. package/dist/contracts/error-code-meta.d.ts +84 -15
  34. package/dist/contracts/error-code-meta.js +28 -4
  35. package/dist/contracts/error-codes.d.ts +1 -1
  36. package/dist/contracts/error-codes.js +24 -6
  37. package/dist/contracts/events.d.ts +13 -13
  38. package/dist/contracts/feature-lifecycle.d.ts +644 -2
  39. package/dist/contracts/feature-lifecycle.js +685 -2
  40. package/dist/contracts/features.d.ts +236 -24
  41. package/dist/contracts/features.js +3 -272
  42. package/dist/contracts/ids.d.ts +1 -2
  43. package/dist/contracts/ids.js +1 -2
  44. package/dist/contracts/internal.d.ts +3 -3
  45. package/dist/contracts/mcp.d.ts +6 -6
  46. package/dist/contracts/me.js +1 -1
  47. package/dist/contracts/mounts.d.ts +142 -0
  48. package/dist/contracts/mounts.js +56 -0
  49. package/dist/contracts/oauth-resources.d.ts +5 -5
  50. package/dist/contracts/oauth-resources.js +1 -0
  51. package/dist/contracts/operations.d.ts +2 -2
  52. package/dist/contracts/pages.d.ts +2 -2
  53. package/dist/contracts/pages.js +8 -3
  54. package/dist/contracts/plan-policy.d.ts +1 -1
  55. package/dist/contracts/platform.d.ts +3 -3
  56. package/dist/contracts/resources.d.ts +12 -20
  57. package/dist/contracts/resources.js +13 -37
  58. package/dist/contracts/runtime-api.d.ts +330 -16
  59. package/dist/contracts/runtime-api.js +58 -14
  60. package/dist/contracts/sf-config-v1.js +1 -1
  61. package/dist/contracts/sites.d.ts +12 -12
  62. package/dist/contracts/sites.js +18 -11
  63. package/dist/contracts/space-config.d.ts +2 -3
  64. package/dist/contracts/space-config.js +3 -1
  65. package/dist/contracts/spaces.d.ts +143 -102
  66. package/dist/contracts/spaces.js +109 -43
  67. package/dist/contracts/superadmin-emails.d.ts +25 -1
  68. package/dist/contracts/superadmin-emails.js +10 -15
  69. package/dist/contracts/superadmin-runtime.d.ts +2 -2
  70. package/dist/contracts/superadmin-spaces.d.ts +6 -14
  71. package/dist/contracts/tags.d.ts +43 -13
  72. package/dist/contracts/tags.js +195 -11
  73. package/dist/contracts/transfers.d.ts +1 -1
  74. package/dist/contracts/variables.d.ts +4 -4
  75. package/dist/contracts/variables.js +4 -3
  76. package/dist/contracts/webhooks.d.ts +2 -2
  77. package/dist/contracts/zero.d.ts +329 -7
  78. package/dist/contracts/zero.js +121 -2
  79. package/dist/dashboard-paths/index.d.ts +1 -1
  80. package/dist/docs/agent-setup.d.ts +4 -2
  81. package/dist/docs/agent-setup.js +15 -7
  82. package/dist/docs/agent-solutions.js +1 -1
  83. package/dist/docs/catalog.d.ts +8 -10
  84. package/dist/docs/catalog.js +8 -10
  85. package/dist/docs/error-docs.js +86 -18
  86. package/dist/utils/access-grant.d.ts +14 -0
  87. package/dist/utils/access-grant.js +88 -0
  88. package/dist/utils/access-match.d.ts +7 -0
  89. package/dist/utils/access-match.fixtures.json +513 -0
  90. package/dist/utils/access-match.js +32 -16
  91. package/dist/utils/access-verdict.fixtures.json +421 -0
  92. package/dist/utils/credential-policy.d.ts +1 -1
  93. package/dist/utils/dns-instructions.d.ts +29 -0
  94. package/dist/utils/dns-instructions.js +78 -0
  95. package/dist/utils/domain-diagnostics.d.ts +29 -0
  96. package/dist/utils/domain-diagnostics.js +63 -0
  97. package/dist/utils/egress-policy.fixtures.json +51 -0
  98. package/dist/utils/id-hints.d.ts +1 -0
  99. package/dist/utils/id-hints.js +55 -13
  100. package/dist/utils/page-colors.d.ts +50 -0
  101. package/dist/utils/page-colors.js +167 -0
  102. package/dist/utils/page-fonts.d.ts +2 -0
  103. package/dist/utils/page-fonts.js +4 -0
  104. package/dist/utils/pages.d.ts +8 -1
  105. package/dist/utils/pages.js +123 -37
  106. package/dist/utils/production-runtime.d.ts +18 -0
  107. package/dist/utils/production-runtime.js +28 -0
  108. package/dist/utils/query-keys.d.ts +6 -7
  109. package/dist/utils/query-keys.js +11 -12
  110. package/dist/utils/sf-config-v1.fixtures.json +9 -0
  111. package/dist/utils/sf-config-v1.js +28 -19
  112. package/dist/utils/source-archive-policy.d.ts +2 -0
  113. package/dist/utils/source-archive-policy.js +2 -0
  114. package/dist/utils/static-runtime-policy.fixtures.json +57 -0
  115. package/dist/utils/static-runtime-policy.js +1 -1
  116. package/package.json +5 -4
  117. package/dist/contracts/annotations.d.ts +0 -327
  118. package/dist/contracts/annotations.js +0 -235
  119. package/dist/contracts/generated-feature-launch-entries.d.ts +0 -2
  120. package/dist/contracts/generated-feature-launch-entries.js +0 -518
  121. package/dist/contracts/publishes.d.ts +0 -135
  122. package/dist/contracts/publishes.js +0 -162
@@ -1,518 +0,0 @@
1
- // Generated from feature-launch-fixture.json. Do not edit.
2
- // Regenerate with: cd packages/common && bun run generate:launch-entries
3
- import { freezeFeatureRegistryEntry } from "./feature-lifecycle-core.js";
4
- export const launchEntries = Object.freeze([
5
- {
6
- cohort: "launch",
7
- key: "plans.paid.available",
8
- name: "Paid acquisition",
9
- description: "Controls new paid-plan acquisition; cancellation, portal and reconciliation are independent.",
10
- stage: "internal",
11
- surface: false,
12
- defaultEnabled: false,
13
- assignmentScopes: ["team", "global"],
14
- docs: null,
15
- owner: "team:commerce",
16
- requires: [],
17
- lifecycleAdoptedAt: "2026-07-12",
18
- reviewAfter: "2026-08-11",
19
- removeAfter: null,
20
- gaAt: null,
21
- allowedActorPolicies: ["request_actor"],
22
- downRamp: {
23
- code: "paid_acquisition_stop",
24
- summary: "Deny new acquisition; allow cancel, portal, provider reconciliation and purchase recovery.",
25
- },
26
- },
27
- {
28
- cohort: "launch",
29
- key: "anonymous.publishing",
30
- name: "Anonymous publishing",
31
- description: "Allows unauthenticated creation and publishing.",
32
- stage: "ga",
33
- surface: true,
34
- defaultEnabled: true,
35
- assignmentScopes: ["global"],
36
- docs: {
37
- channel: "public",
38
- slug: "/docs/publishing/anonymous",
39
- feedbackUrl: null,
40
- },
41
- owner: "team:publishing",
42
- requires: [],
43
- lifecycleAdoptedAt: "2026-07-12",
44
- reviewAfter: "2026-07-26",
45
- removeAfter: "2026-08-11",
46
- gaAt: "2026-07-12",
47
- allowedActorPolicies: ["request_actor", "global_policy"],
48
- downRamp: {
49
- code: "anonymous_publish_stop",
50
- 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.",
51
- },
52
- },
53
- {
54
- cohort: "launch",
55
- key: "domains.catalog",
56
- name: "Domain catalog",
57
- description: "Controls authenticated domain product/catalog operations; public suggestions, availability and WHOIS remain unflagged.",
58
- stage: "internal",
59
- surface: true,
60
- defaultEnabled: false,
61
- assignmentScopes: ["user", "team", "global"],
62
- docs: {
63
- channel: "handbook",
64
- slug: "/features/domains/catalog",
65
- feedbackUrl: null,
66
- },
67
- owner: "team:domains",
68
- requires: [],
69
- lifecycleAdoptedAt: "2026-07-12",
70
- reviewAfter: "2026-08-11",
71
- removeAfter: "2026-10-10",
72
- gaAt: null,
73
- allowedActorPolicies: ["request_actor"],
74
- downRamp: {
75
- code: "domain_catalog_hide",
76
- summary: "Hide authenticated catalog; public suggestions, availability and WHOIS remain.",
77
- },
78
- },
79
- {
80
- cohort: "launch",
81
- key: "domains.registration",
82
- name: "Domain registration",
83
- description: "Controls registration status, purchase, renewal, transfer-in and registration settings.",
84
- stage: "internal",
85
- surface: true,
86
- defaultEnabled: false,
87
- assignmentScopes: ["user", "team", "global"],
88
- docs: {
89
- channel: "handbook",
90
- slug: "/features/domains/registration",
91
- feedbackUrl: null,
92
- },
93
- owner: "team:domains",
94
- requires: [],
95
- lifecycleAdoptedAt: "2026-07-12",
96
- reviewAfter: "2026-08-11",
97
- removeAfter: "2026-10-10",
98
- gaAt: null,
99
- allowedActorPolicies: ["request_actor", "persisted_request_actor"],
100
- downRamp: {
101
- code: "domain_registration_stop",
102
- summary: "Deny new customer mutations and unstarted provider submits; generic existing-domain read plus service-only reconciliation/compensation for externally committed work continue.",
103
- },
104
- },
105
- {
106
- cohort: "launch",
107
- key: "domains.dns_management",
108
- name: "DNS management",
109
- description: "Controls customer DNS zones, nameservers and records.",
110
- stage: "internal",
111
- surface: true,
112
- defaultEnabled: false,
113
- assignmentScopes: ["user", "team", "global"],
114
- docs: {
115
- channel: "handbook",
116
- slug: "/features/domains/dns-management",
117
- feedbackUrl: null,
118
- },
119
- owner: "team:domains",
120
- requires: [],
121
- lifecycleAdoptedAt: "2026-07-12",
122
- reviewAfter: "2026-08-11",
123
- removeAfter: "2026-10-10",
124
- gaAt: null,
125
- allowedActorPolicies: ["request_actor", "persisted_request_actor"],
126
- downRamp: {
127
- code: "dns_management_stop",
128
- summary: "Deny customer mutation and unstarted provider apply; generic authoritative read plus service-only rollback/reconciliation for externally committed work continue.",
129
- },
130
- },
131
- {
132
- cohort: "launch",
133
- key: "domains.wpcom_dns",
134
- name: "WordPress.com DNS automation",
135
- description: "Controls WordPress.com-owned DNS automation.",
136
- stage: "internal",
137
- surface: true,
138
- defaultEnabled: false,
139
- assignmentScopes: ["team", "global"],
140
- docs: {
141
- channel: "handbook",
142
- slug: "/features/domains/wpcom-dns",
143
- feedbackUrl: null,
144
- },
145
- owner: "team:domains",
146
- requires: [],
147
- lifecycleAdoptedAt: "2026-07-12",
148
- reviewAfter: "2026-08-11",
149
- removeAfter: "2026-10-10",
150
- gaAt: null,
151
- allowedActorPolicies: ["request_actor"],
152
- downRamp: {
153
- code: "wpcom_dns_stop",
154
- summary: "Deny new automation; service/operator detach and reconciliation continue.",
155
- },
156
- },
157
- {
158
- cohort: "launch",
159
- key: "domains.domain_connect",
160
- name: "Domain Connect",
161
- description: "Controls one-click Domain Connect DNS setup.",
162
- stage: "internal",
163
- surface: true,
164
- defaultEnabled: false,
165
- assignmentScopes: ["user", "team", "global"],
166
- docs: {
167
- channel: "handbook",
168
- slug: "/features/domains/domain-connect",
169
- feedbackUrl: null,
170
- },
171
- owner: "team:domains",
172
- requires: [],
173
- lifecycleAdoptedAt: "2026-07-12",
174
- reviewAfter: "2026-08-11",
175
- removeAfter: "2026-10-10",
176
- gaAt: null,
177
- allowedActorPolicies: ["request_actor", "persisted_request_actor"],
178
- downRamp: {
179
- code: "domain_connect_stop",
180
- summary: "Deny new setup and every uncommitted callback; after an authenticated external commit, narrowly typed service-only reconciliation or compensation continues idempotently.",
181
- },
182
- },
183
- {
184
- cohort: "launch",
185
- key: "domains.proxy_bindings",
186
- name: "Domain proxy bindings",
187
- description: "Controls team proxy bindings to external upstreams.",
188
- stage: "private_beta",
189
- surface: true,
190
- defaultEnabled: false,
191
- assignmentScopes: ["team", "global"],
192
- docs: {
193
- channel: "public",
194
- slug: "/docs/domains/proxy-bindings",
195
- feedbackUrl: null,
196
- },
197
- owner: "team:domains",
198
- requires: [],
199
- lifecycleAdoptedAt: "2026-07-12",
200
- reviewAfter: "2026-08-11",
201
- removeAfter: "2026-10-10",
202
- gaAt: null,
203
- allowedActorPolicies: ["resource_team"],
204
- downRamp: {
205
- code: "proxy_binding_stop",
206
- summary: "Deny new binds; discoverable authenticated read/detach plus service reconciliation continue.",
207
- },
208
- },
209
- {
210
- cohort: "launch",
211
- key: "collab.preview_loader",
212
- name: "Collab preview loader",
213
- description: "Controls preview loader/config delivery.",
214
- stage: "private_beta",
215
- surface: true,
216
- defaultEnabled: false,
217
- assignmentScopes: ["team", "global"],
218
- docs: {
219
- channel: "public",
220
- slug: "/docs/collab/preview-loader",
221
- feedbackUrl: null,
222
- },
223
- owner: "team:collaboration",
224
- requires: [],
225
- lifecycleAdoptedAt: "2026-07-12",
226
- reviewAfter: "2026-08-11",
227
- removeAfter: "2026-10-10",
228
- gaAt: null,
229
- allowedActorPolicies: ["resource_team"],
230
- downRamp: {
231
- code: "preview_loader_stop",
232
- summary: "Stop new loader/config delivery; immutable preview data remains.",
233
- },
234
- },
235
- {
236
- cohort: "launch",
237
- key: "collab.comments",
238
- name: "Collab comments",
239
- description: "Controls comment, reply and collaboration operations.",
240
- stage: "private_beta",
241
- surface: true,
242
- defaultEnabled: false,
243
- assignmentScopes: ["user", "team", "global"],
244
- docs: {
245
- channel: "public",
246
- slug: "/docs/collab",
247
- feedbackUrl: null,
248
- },
249
- owner: "team:collaboration",
250
- requires: [],
251
- lifecycleAdoptedAt: "2026-07-12",
252
- reviewAfter: "2026-08-11",
253
- removeAfter: "2026-10-10",
254
- gaAt: null,
255
- allowedActorPolicies: ["request_actor", "persisted_request_actor", "resource_team"],
256
- downRamp: {
257
- code: "comments_stop",
258
- summary: "Deny every customer comment read/write route and deferred task; internal operator export/cleanup continue.",
259
- },
260
- },
261
- {
262
- cohort: "launch",
263
- key: "collab.notices",
264
- name: "Collab notices",
265
- description: "Controls notice token minting, publishing and projection.",
266
- stage: "internal",
267
- surface: false,
268
- defaultEnabled: false,
269
- assignmentScopes: ["team", "global"],
270
- docs: null,
271
- owner: "team:collaboration",
272
- requires: [],
273
- lifecycleAdoptedAt: "2026-07-12",
274
- reviewAfter: "2026-08-11",
275
- removeAfter: null,
276
- gaAt: null,
277
- allowedActorPolicies: ["resource_team"],
278
- downRamp: {
279
- code: "notices_stop",
280
- summary: "Stop mint/publish; service/operator revoke and cleanup continue.",
281
- },
282
- },
283
- {
284
- cohort: "launch",
285
- key: "collab.published_comments",
286
- name: "Published-host Collab comments",
287
- description: "Controls Collab comment overlay on published hosts.",
288
- stage: "private_beta",
289
- surface: true,
290
- defaultEnabled: false,
291
- assignmentScopes: ["team", "global"],
292
- docs: {
293
- channel: "public",
294
- slug: "/docs/collab/published-comments",
295
- feedbackUrl: null,
296
- },
297
- owner: "team:collaboration",
298
- requires: ["collab.comments"],
299
- lifecycleAdoptedAt: "2026-07-12",
300
- reviewAfter: "2026-08-11",
301
- removeAfter: "2026-10-10",
302
- gaAt: null,
303
- allowedActorPolicies: ["resource_team"],
304
- downRamp: {
305
- code: "published_comments_stop",
306
- summary: "Stop published-host injection; stored data remains only for operator export/cleanup.",
307
- },
308
- },
309
- {
310
- cohort: "launch",
311
- key: "sites.dedicated_runtime",
312
- name: "Dedicated runtime",
313
- description: "Controls dedicated-site placement, management and gated serving.",
314
- stage: "internal",
315
- surface: true,
316
- defaultEnabled: false,
317
- assignmentScopes: ["team", "global"],
318
- docs: {
319
- channel: "handbook",
320
- slug: "/features/sites/dedicated-runtime",
321
- feedbackUrl: null,
322
- },
323
- owner: "team:runtime",
324
- requires: [],
325
- lifecycleAdoptedAt: "2026-07-12",
326
- reviewAfter: "2026-08-11",
327
- removeAfter: "2026-10-10",
328
- gaAt: null,
329
- allowedActorPolicies: ["request_actor", "resource_team"],
330
- downRamp: {
331
- code: "dedicated_runtime_stop",
332
- 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.",
333
- },
334
- },
335
- {
336
- cohort: "launch",
337
- key: "build.content_pipeline",
338
- name: "Content pipeline",
339
- description: "Controls publish/finalize use of the content transformation pipeline.",
340
- stage: "internal",
341
- surface: true,
342
- defaultEnabled: false,
343
- assignmentScopes: ["team", "global"],
344
- docs: {
345
- channel: "handbook",
346
- slug: "/features/build/content-pipeline",
347
- feedbackUrl: null,
348
- },
349
- owner: "team:build-platform",
350
- requires: [],
351
- lifecycleAdoptedAt: "2026-07-12",
352
- reviewAfter: "2026-08-11",
353
- removeAfter: "2026-10-10",
354
- gaAt: null,
355
- allowedActorPolicies: ["resource_team"],
356
- downRamp: {
357
- code: "content_pipeline_stop",
358
- summary: "Deny next build/finalize; completed immutable output remains.",
359
- },
360
- },
361
- {
362
- cohort: "launch",
363
- key: "tags",
364
- name: "Tag Manager",
365
- description: "Controls Tag Manager APIs, surfaces and its module inside the shared SDK container.",
366
- stage: "private_beta",
367
- surface: true,
368
- defaultEnabled: false,
369
- assignmentScopes: ["team", "global"],
370
- docs: {
371
- channel: "public",
372
- slug: "/docs/tags",
373
- feedbackUrl: null,
374
- },
375
- owner: "team:tag-manager",
376
- requires: [],
377
- lifecycleAdoptedAt: "2026-07-12",
378
- reviewAfter: "2026-08-11",
379
- removeAfter: "2026-10-10",
380
- gaAt: null,
381
- allowedActorPolicies: ["request_actor", "resource_team"],
382
- downRamp: {
383
- code: "tags_stop",
384
- summary: "Deny every customer Tag API and dynamic module delivery; internal operator export/cleanup and platform-generated inert marker bytes remain.",
385
- },
386
- },
387
- {
388
- cohort: "launch",
389
- key: "zero",
390
- name: "Zero",
391
- description: "Controls Zero APIs, activation and dynamic invocation.",
392
- stage: "internal",
393
- surface: true,
394
- defaultEnabled: false,
395
- assignmentScopes: ["team", "global"],
396
- docs: {
397
- channel: "handbook",
398
- slug: "/features/zero",
399
- feedbackUrl: null,
400
- },
401
- owner: "team:zero",
402
- requires: ["sites.dedicated_runtime"],
403
- lifecycleAdoptedAt: "2026-07-12",
404
- reviewAfter: "2026-08-11",
405
- removeAfter: "2026-10-10",
406
- gaAt: null,
407
- allowedActorPolicies: ["resource_team"],
408
- downRamp: {
409
- code: "zero_stop",
410
- summary: "Stop activation/invocation; operator export/delete/migration recovery remain.",
411
- },
412
- },
413
- {
414
- cohort: "launch",
415
- key: "access.invites",
416
- name: "Access invites",
417
- description: "Controls account-less viewer invitation workflows.",
418
- stage: "internal",
419
- surface: true,
420
- defaultEnabled: false,
421
- assignmentScopes: ["user", "team", "global"],
422
- docs: {
423
- channel: "handbook",
424
- slug: "/features/access/invites",
425
- feedbackUrl: null,
426
- },
427
- owner: "team:access",
428
- requires: [],
429
- lifecycleAdoptedAt: "2026-07-12",
430
- reviewAfter: "2026-08-11",
431
- removeAfter: "2026-10-10",
432
- gaAt: null,
433
- allowedActorPolicies: ["request_actor", "persisted_request_actor"],
434
- downRamp: {
435
- code: "invites_stop",
436
- summary: "Deny every customer invite route and deferred delivery; internal operator cancel/revoke and service cleanup continue.",
437
- },
438
- },
439
- {
440
- cohort: "launch",
441
- key: "access.sso_connections",
442
- name: "SSO connections",
443
- description: "Controls team OIDC connection creation and update.",
444
- stage: "internal",
445
- surface: true,
446
- defaultEnabled: false,
447
- assignmentScopes: ["user", "team", "global"],
448
- docs: {
449
- channel: "handbook",
450
- slug: "/features/access/sso-connections",
451
- feedbackUrl: null,
452
- },
453
- owner: "team:access",
454
- requires: [],
455
- lifecycleAdoptedAt: "2026-07-12",
456
- reviewAfter: "2026-08-11",
457
- removeAfter: "2026-10-10",
458
- gaAt: null,
459
- allowedActorPolicies: ["request_actor", "persisted_request_actor"],
460
- downRamp: {
461
- code: "sso_connections_stop",
462
- summary: "Deny every customer SSO connection route and callback; internal operator revoke/cleanup continue.",
463
- },
464
- },
465
- {
466
- cohort: "launch",
467
- key: "access.byo_issuers",
468
- name: "Bring-your-own issuers",
469
- description: "Controls owner-held external token issuer creation and update.",
470
- stage: "internal",
471
- surface: true,
472
- defaultEnabled: false,
473
- assignmentScopes: ["user", "team", "global"],
474
- docs: {
475
- channel: "handbook",
476
- slug: "/features/access/byo-issuers",
477
- feedbackUrl: null,
478
- },
479
- owner: "team:access",
480
- requires: [],
481
- lifecycleAdoptedAt: "2026-07-12",
482
- reviewAfter: "2026-08-11",
483
- removeAfter: "2026-10-10",
484
- gaAt: null,
485
- allowedActorPolicies: ["request_actor", "persisted_request_actor"],
486
- downRamp: {
487
- code: "byo_issuers_stop",
488
- summary: "Deny every customer issuer route and callback; internal operator revoke/cleanup continue.",
489
- },
490
- },
491
- {
492
- cohort: "launch",
493
- key: "spaces.slug_rename",
494
- name: "Space slug rename",
495
- description: "Changes mutable space identity metadata while the stable managed hostname and hostname rows remain unchanged.",
496
- stage: "internal",
497
- surface: true,
498
- defaultEnabled: false,
499
- assignmentScopes: ["user", "team", "global"],
500
- docs: {
501
- channel: "handbook",
502
- slug: "/features/spaces/slug-rename",
503
- feedbackUrl: null,
504
- },
505
- owner: "team:spaces",
506
- requires: [],
507
- lifecycleAdoptedAt: "2026-07-12",
508
- reviewAfter: "2026-08-11",
509
- removeAfter: "2026-10-10",
510
- gaAt: null,
511
- allowedActorPolicies: ["request_actor"],
512
- downRamp: {
513
- code: "slug_rename_stop",
514
- summary: "Deny every new stable-host slug rename; the atomic metadata write has no deferred feature continuation.",
515
- },
516
- },
517
- ].map((definition) => freezeFeatureRegistryEntry(definition)));
518
- export const registryHash = "sha256:a1d9cbc355096bb6a473c87d7cb7624d47bd39ad2dd476d7d8eaa728dd94e93f";
@@ -1,135 +0,0 @@
1
- import { z } from "zod";
2
- export declare const publishStates: readonly ["awaiting_upload", "uploaded", "parked", "materializing", "succeeded", "failed", "cancelled", "expired"];
3
- export declare const publishStateSchema: z.ZodEnum<{
4
- failed: "failed";
5
- expired: "expired";
6
- uploaded: "uploaded";
7
- succeeded: "succeeded";
8
- materializing: "materializing";
9
- awaiting_upload: "awaiting_upload";
10
- parked: "parked";
11
- cancelled: "cancelled";
12
- }>;
13
- export type PublishState = z.infer<typeof publishStateSchema>;
14
- export declare const publishIdSchema: z.ZodCustom<`pub_${string}`, `pub_${string}`>;
15
- export declare const publishAdmissionSchema: z.ZodObject<{
16
- id: z.ZodCustom<`pub_${string}`, `pub_${string}`>;
17
- idempotencyKey: z.ZodString;
18
- requestFingerprint: z.ZodString;
19
- }, z.core.$strip>;
20
- export declare const publishSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
21
- id: z.ZodCustom<`pub_${string}`, `pub_${string}`>;
22
- state: z.ZodLiteral<"awaiting_upload">;
23
- target: z.ZodOptional<z.ZodObject<{
24
- spaceId: z.ZodCustom<`spc_${string}`, `spc_${string}`>;
25
- baseVersionId: z.ZodNullable<z.ZodCustom<`ver_${string}`, `ver_${string}`>>;
26
- }, z.core.$strip>>;
27
- counts: z.ZodOptional<z.ZodObject<{
28
- received: z.ZodNumber;
29
- missing: z.ZodNumber;
30
- }, z.core.$strip>>;
31
- expiresAt: z.ZodOptional<z.ZodString>;
32
- upload: z.ZodOptional<z.ZodObject<{
33
- missing: z.ZodArray<z.ZodObject<{
34
- path: z.ZodString;
35
- sha256: z.ZodNullable<z.ZodString>;
36
- size: z.ZodNumber;
37
- url: z.ZodString;
38
- headers: z.ZodRecord<z.ZodString, z.ZodString>;
39
- expiresAt: z.ZodString;
40
- }, z.core.$strip>>;
41
- }, z.core.$strip>>;
42
- }, z.core.$strip>, z.ZodObject<{
43
- id: z.ZodCustom<`pub_${string}`, `pub_${string}`>;
44
- state: z.ZodLiteral<"uploaded">;
45
- }, z.core.$strip>, z.ZodObject<{
46
- id: z.ZodCustom<`pub_${string}`, `pub_${string}`>;
47
- state: z.ZodLiteral<"parked">;
48
- reason: z.ZodLiteral<"capacity">;
49
- queuePosition: z.ZodOptional<z.ZodNumber>;
50
- nextCheckAfterSeconds: z.ZodNumber;
51
- actions: z.ZodTuple<[z.ZodObject<{
52
- kind: z.ZodLiteral<"cancel_publish">;
53
- publishId: z.ZodCustom<`pub_${string}`, `pub_${string}`>;
54
- }, z.core.$strip>], null>;
55
- }, z.core.$strip>, z.ZodObject<{
56
- id: z.ZodCustom<`pub_${string}`, `pub_${string}`>;
57
- state: z.ZodLiteral<"materializing">;
58
- operation: z.ZodObject<{
59
- id: z.ZodCustom<`op_${string}`, `op_${string}`>;
60
- kind: z.ZodLiteral<"publish.finalize">;
61
- status: z.ZodEnum<{
62
- queued: "queued";
63
- running: "running";
64
- }>;
65
- }, z.core.$strip>;
66
- }, z.core.$strip>, z.ZodObject<{
67
- id: z.ZodCustom<`pub_${string}`, `pub_${string}`>;
68
- state: z.ZodLiteral<"succeeded">;
69
- outcome: z.ZodEnum<{
70
- created: "created";
71
- unchanged: "unchanged";
72
- updated: "updated";
73
- }>;
74
- capturedBaseVersionId: z.ZodOptional<z.ZodNullable<z.ZodCustom<`ver_${string}`, `ver_${string}`>>>;
75
- claim: z.ZodOptional<z.ZodObject<{
76
- token: z.ZodString;
77
- url: z.ZodString;
78
- expiresAt: z.ZodString;
79
- }, z.core.$strip>>;
80
- result: z.ZodObject<{
81
- space: z.ZodObject<{
82
- id: z.ZodCustom<`spc_${string}`, `spc_${string}`>;
83
- liveUrl: z.ZodString;
84
- }, z.core.$strip>;
85
- version: z.ZodObject<{
86
- id: z.ZodCustom<`ver_${string}`, `ver_${string}`>;
87
- immutableUrl: z.ZodString;
88
- }, z.core.$strip>;
89
- live: z.ZodObject<{
90
- previousVersionId: z.ZodNullable<z.ZodCustom<`ver_${string}`, `ver_${string}`>>;
91
- versionId: z.ZodCustom<`ver_${string}`, `ver_${string}`>;
92
- }, z.core.$strip>;
93
- }, z.core.$strip>;
94
- }, z.core.$strip>, z.ZodObject<{
95
- id: z.ZodCustom<`pub_${string}`, `pub_${string}`>;
96
- state: z.ZodLiteral<"failed">;
97
- errorCode: z.ZodString;
98
- }, z.core.$strip>, z.ZodObject<{
99
- id: z.ZodCustom<`pub_${string}`, `pub_${string}`>;
100
- state: z.ZodLiteral<"cancelled">;
101
- }, z.core.$strip>, z.ZodObject<{
102
- id: z.ZodCustom<`pub_${string}`, `pub_${string}`>;
103
- state: z.ZodLiteral<"expired">;
104
- }, z.core.$strip>], "state">;
105
- export type Publish = z.infer<typeof publishSchema>;
106
- export type PublishAdmission = z.infer<typeof publishAdmissionSchema>;
107
- export type DurablePublish = Publish & PublishAdmission;
108
- export type PublishByState<State extends PublishState> = Extract<DurablePublish, {
109
- state: State;
110
- }>;
111
- declare const allowedTransitions: {
112
- readonly awaiting_upload: readonly ["uploaded", "cancelled", "expired"];
113
- readonly uploaded: readonly ["parked", "materializing", "cancelled", "expired"];
114
- readonly parked: readonly ["materializing", "cancelled", "expired"];
115
- readonly materializing: readonly ["succeeded", "failed", "cancelled", "expired"];
116
- readonly succeeded: readonly [];
117
- readonly failed: readonly [];
118
- readonly cancelled: readonly [];
119
- readonly expired: readonly [];
120
- };
121
- export type NextPublishState<State extends PublishState> = (typeof allowedTransitions)[State][number];
122
- export declare function canTransitionPublish<From extends PublishState>(from: From, to: PublishState): to is NextPublishState<From>;
123
- export declare function transitionPublish<From extends PublishState, Next extends DurablePublish>(publish: PublishByState<From>, next: Next & (Next["state"] extends NextPublishState<From> ? unknown : never)): Next;
124
- export type PublishAdmissionResult<Existing extends PublishAdmission = PublishAdmission> = {
125
- outcome: "created";
126
- publish: PublishAdmission;
127
- } | {
128
- outcome: "replayed";
129
- publish: Existing;
130
- } | {
131
- outcome: "conflict";
132
- publish: Existing;
133
- };
134
- export declare function convergePublishAdmission<Existing extends PublishAdmission>(existing: Existing | undefined, attempted: PublishAdmission): PublishAdmissionResult<Existing>;
135
- export {};