@spacefast/common 0.2.1 → 0.4.1

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 (226) hide show
  1. package/dist/agents/marketplace-prompts.d.ts +1 -0
  2. package/dist/agents/marketplace-prompts.js +6 -0
  3. package/dist/agents/registry/core.d.ts +4 -12
  4. package/dist/agents/registry/core.js +7 -28
  5. package/dist/config/domains.d.ts +10 -8
  6. package/dist/config/domains.js +4 -7
  7. package/dist/contracts/access-core.d.ts +135 -0
  8. package/dist/contracts/access-core.js +242 -0
  9. package/dist/contracts/access-profiles.d.ts +8 -8
  10. package/dist/contracts/access-profiles.js +8 -8
  11. package/dist/contracts/access.d.ts +14 -103
  12. package/dist/contracts/access.js +10 -210
  13. package/dist/contracts/activity.d.ts +54 -55
  14. package/dist/contracts/activity.js +38 -9
  15. package/dist/contracts/api-keys.d.ts +69 -26
  16. package/dist/contracts/api-keys.js +29 -2
  17. package/dist/contracts/application-journal.d.ts +197 -4
  18. package/dist/contracts/application-journal.js +97 -16
  19. package/dist/contracts/auth.d.ts +20 -0
  20. package/dist/contracts/auth.js +18 -0
  21. package/dist/contracts/beta.d.ts +13 -0
  22. package/dist/contracts/beta.js +28 -0
  23. package/dist/contracts/billing.d.ts +2 -2
  24. package/dist/contracts/bootstrap.d.ts +23 -6
  25. package/dist/contracts/builds.d.ts +24 -4
  26. package/dist/contracts/builds.js +16 -4
  27. package/dist/contracts/channels.d.ts +43 -0
  28. package/dist/contracts/channels.js +22 -6
  29. package/dist/contracts/comments.d.ts +49 -0
  30. package/dist/contracts/comments.js +61 -2
  31. package/dist/contracts/commerce.d.ts +19 -13
  32. package/dist/contracts/connector-access.d.ts +28 -0
  33. package/dist/contracts/connector-access.js +31 -0
  34. package/dist/contracts/connectors.d.ts +2382 -0
  35. package/dist/contracts/connectors.js +941 -0
  36. package/dist/contracts/content-contract-verification.d.ts +112 -58
  37. package/dist/contracts/content-contract-verification.js +42 -54
  38. package/dist/contracts/content-model-emit.d.ts +97 -0
  39. package/dist/contracts/content-model-emit.js +306 -0
  40. package/dist/contracts/content-model-sdk.d.ts +101 -0
  41. package/dist/contracts/content-model-sdk.js +232 -0
  42. package/dist/contracts/{content-program.d.ts → content-model.d.ts} +338 -82
  43. package/dist/contracts/{content-program.js → content-model.js} +291 -63
  44. package/dist/contracts/content-platform-fixture.d.ts +380 -110
  45. package/dist/contracts/content-platform-fixture.js +8 -8
  46. package/dist/contracts/content-sync.d.ts +197 -74
  47. package/dist/contracts/content-sync.js +98 -37
  48. package/dist/contracts/content.d.ts +30 -422
  49. package/dist/contracts/content.js +34 -294
  50. package/dist/contracts/dashboard-prefs.d.ts +10 -3
  51. package/dist/contracts/dashboard-prefs.js +6 -3
  52. package/dist/contracts/data-location.d.ts +9 -0
  53. package/dist/contracts/data-location.js +7 -0
  54. package/dist/contracts/deployment-comparison.d.ts +67 -0
  55. package/dist/contracts/deployment-comparison.js +68 -0
  56. package/dist/contracts/device-auth.d.ts +55 -11
  57. package/dist/contracts/domains.d.ts +40 -16
  58. package/dist/contracts/domains.js +23 -0
  59. package/dist/contracts/enums.d.ts +1 -10
  60. package/dist/contracts/enums.js +0 -15
  61. package/dist/contracts/error-code-meta.d.ts +388 -20
  62. package/dist/contracts/error-code-meta.js +201 -5
  63. package/dist/contracts/error-codes.d.ts +17 -4
  64. package/dist/contracts/error-codes.js +109 -10
  65. package/dist/contracts/events.d.ts +5 -0
  66. package/dist/contracts/events.js +12 -3
  67. package/dist/contracts/execution.d.ts +5 -1
  68. package/dist/contracts/execution.js +4 -0
  69. package/dist/contracts/feature-lifecycle.d.ts +53 -20
  70. package/dist/contracts/feature-lifecycle.js +65 -23
  71. package/dist/contracts/features.d.ts +57 -31
  72. package/dist/contracts/features.js +0 -1
  73. package/dist/contracts/feedback.d.ts +124 -0
  74. package/dist/contracts/feedback.js +64 -0
  75. package/dist/contracts/fixtures/content-model-sdk-v1.generated.d.ts +129 -0
  76. package/dist/contracts/fixtures/content-model-sdk-v1.generated.js +48 -0
  77. package/dist/contracts/fixtures/content-platform-v1.json +101 -49
  78. package/dist/contracts/frame-session.d.ts +60 -10
  79. package/dist/contracts/frame-session.js +52 -12
  80. package/dist/contracts/functions.d.ts +28 -2
  81. package/dist/contracts/functions.js +25 -2
  82. package/dist/contracts/grant-copy.d.ts +2 -0
  83. package/dist/contracts/grant-copy.js +2 -0
  84. package/dist/contracts/grants-core.d.ts +95 -0
  85. package/dist/contracts/grants-core.js +435 -0
  86. package/dist/contracts/grants.d.ts +13 -84
  87. package/dist/contracts/grants.js +21 -369
  88. package/dist/contracts/ids-core.d.ts +11 -0
  89. package/dist/contracts/ids-core.js +14 -0
  90. package/dist/contracts/ids.d.ts +7 -4
  91. package/dist/contracts/ids.js +12 -4
  92. package/dist/contracts/internal.d.ts +18 -0
  93. package/dist/contracts/internal.js +19 -0
  94. package/dist/contracts/mcp.d.ts +8 -18
  95. package/dist/contracts/mcp.js +2 -23
  96. package/dist/contracts/notifications.d.ts +4 -1
  97. package/dist/contracts/notifications.js +1 -0
  98. package/dist/contracts/oauth-resources.d.ts +55 -9
  99. package/dist/contracts/oauth-resources.js +64 -1
  100. package/dist/contracts/oauth-scope-actions.d.ts +27 -3
  101. package/dist/contracts/oauth-scope-actions.js +18 -8
  102. package/dist/contracts/operations.d.ts +1 -1
  103. package/dist/contracts/partner-account.d.ts +629 -0
  104. package/dist/contracts/partner-account.js +18 -0
  105. package/dist/contracts/principal-assertion.d.ts +74 -1
  106. package/dist/contracts/principal-assertion.js +67 -3
  107. package/dist/contracts/publish-archive.d.ts +22 -1
  108. package/dist/contracts/push-new.d.ts +3 -3
  109. package/dist/contracts/push-new.js +1 -1
  110. package/dist/contracts/quotas.js +2 -1
  111. package/dist/contracts/repository-connections.d.ts +10 -6
  112. package/dist/contracts/repository-connections.js +15 -0
  113. package/dist/contracts/resources.d.ts +6 -5
  114. package/dist/contracts/resources.js +7 -0
  115. package/dist/contracts/route-inventory.d.ts +74 -19
  116. package/dist/contracts/route-inventory.js +20 -6
  117. package/dist/contracts/runtime-api.d.ts +415 -4
  118. package/dist/contracts/runtime-api.js +60 -15
  119. package/dist/contracts/runtime-app.d.ts +6 -1
  120. package/dist/contracts/runtime-components.d.ts +646 -18
  121. package/dist/contracts/runtime-components.js +304 -188
  122. package/dist/contracts/runtime-services.d.ts +15 -0
  123. package/dist/contracts/runtime-services.js +25 -0
  124. package/dist/contracts/runtime-storage.d.ts +32 -0
  125. package/dist/contracts/runtime-storage.js +37 -0
  126. package/dist/contracts/source-workspaces.d.ts +511 -0
  127. package/dist/contracts/source-workspaces.js +276 -0
  128. package/dist/contracts/space-config-spacefast.d.ts +394 -0
  129. package/dist/contracts/space-config-spacefast.js +70 -0
  130. package/dist/contracts/space-config.d.ts +177 -90
  131. package/dist/contracts/space-config.js +77 -92
  132. package/dist/contracts/spaces.d.ts +132 -24
  133. package/dist/contracts/spaces.js +77 -13
  134. package/dist/contracts/superadmin-connectors.d.ts +371 -0
  135. package/dist/contracts/superadmin-connectors.js +61 -0
  136. package/dist/contracts/superadmin-emails.d.ts +1 -1
  137. package/dist/contracts/superadmin-emails.js +1 -1
  138. package/dist/contracts/superadmin-entities.d.ts +105 -0
  139. package/dist/contracts/superadmin-entities.js +64 -0
  140. package/dist/contracts/superadmin-runtime.d.ts +35 -116
  141. package/dist/contracts/superadmin-runtime.js +13 -69
  142. package/dist/contracts/superadmin-search.d.ts +12 -14
  143. package/dist/contracts/superadmin-search.js +2 -2
  144. package/dist/contracts/superadmin-spaces.d.ts +15 -72
  145. package/dist/contracts/superadmin-spaces.js +2 -7
  146. package/dist/contracts/superadmin-teams.d.ts +12 -0
  147. package/dist/contracts/superadmin-teams.js +7 -1
  148. package/dist/contracts/superadmin-tenants.d.ts +44 -16
  149. package/dist/contracts/superadmin.d.ts +2 -2
  150. package/dist/contracts/tags.d.ts +12 -12
  151. package/dist/contracts/teams.d.ts +29 -1
  152. package/dist/contracts/teams.js +24 -2
  153. package/dist/contracts/tenants.d.ts +98 -0
  154. package/dist/contracts/tenants.js +20 -0
  155. package/dist/contracts/transfers.d.ts +92 -0
  156. package/dist/contracts/transfers.js +37 -0
  157. package/dist/contracts/usage.d.ts +9 -1
  158. package/dist/contracts/usage.js +2 -0
  159. package/dist/contracts/visual-review.d.ts +448 -0
  160. package/dist/contracts/visual-review.js +156 -0
  161. package/dist/contracts/wordpress-php-toolkit.json +9 -0
  162. package/dist/contracts/work-mode.d.ts +24 -0
  163. package/dist/contracts/work-mode.js +17 -0
  164. package/dist/contracts/wp-cli.d.ts +66 -0
  165. package/dist/contracts/wp-cli.js +68 -0
  166. package/dist/contracts/zero-catalog.d.ts +29 -0
  167. package/dist/contracts/zero-catalog.js +55 -0
  168. package/dist/contracts/zero-platform-abilities.generated.d.ts +31 -0
  169. package/dist/contracts/zero-platform-abilities.generated.js +373 -0
  170. package/dist/contracts/zero-spacefast.d.ts +444 -0
  171. package/dist/contracts/zero-spacefast.js +149 -0
  172. package/dist/contracts/zero-types.d.ts +47 -0
  173. package/dist/contracts/zero-types.js +263 -0
  174. package/dist/contracts/zero.d.ts +781 -14
  175. package/dist/contracts/zero.js +204 -10
  176. package/dist/dashboard-paths/index.d.ts +2 -2
  177. package/dist/dashboard-paths/route-reservations.generated.d.ts +2 -2
  178. package/dist/dashboard-paths/route-reservations.generated.js +5 -0
  179. package/dist/docs/agent-prose.d.ts +1 -1
  180. package/dist/docs/agent-prose.js +15 -18
  181. package/dist/docs/agent-setup.d.ts +1 -1
  182. package/dist/docs/agent-setup.js +5 -13
  183. package/dist/docs/catalog.d.ts +64 -28
  184. package/dist/docs/catalog.js +155 -28
  185. package/dist/docs/error-docs.d.ts +365 -17
  186. package/dist/docs/error-docs.js +369 -21
  187. package/dist/docs/reference-urls.js +1 -1
  188. package/dist/docs/skills.d.ts +84 -84
  189. package/dist/docs/skills.js +66 -47
  190. package/dist/docs/start-prompts.d.ts +14 -0
  191. package/dist/docs/start-prompts.js +20 -0
  192. package/dist/utils/account-labels.d.ts +7 -0
  193. package/dist/utils/account-labels.js +15 -0
  194. package/dist/utils/auth.d.ts +1 -0
  195. package/dist/utils/auth.js +1 -0
  196. package/dist/utils/credential-policy.d.ts +22 -1
  197. package/dist/utils/credential-policy.js +55 -6
  198. package/dist/utils/local-space-state.d.ts +7 -0
  199. package/dist/utils/local-space-state.js +7 -0
  200. package/dist/utils/logger.d.ts +34 -0
  201. package/dist/utils/logger.js +144 -0
  202. package/dist/utils/page-routes.d.ts +9 -0
  203. package/dist/utils/page-routes.js +82 -0
  204. package/dist/utils/pages.d.ts +2 -0
  205. package/dist/utils/pages.js +7 -0
  206. package/dist/utils/publish-form-data.d.ts +2 -0
  207. package/dist/utils/publish-form-data.js +2 -0
  208. package/dist/utils/publish-policy-spacefast.d.ts +13 -0
  209. package/dist/utils/publish-policy-spacefast.js +117 -0
  210. package/dist/utils/publish-policy.d.ts +22 -16
  211. package/dist/utils/publish-policy.fixtures.json +15 -0
  212. package/dist/utils/publish-policy.js +62 -139
  213. package/dist/utils/query-client.js +9 -1
  214. package/dist/utils/runtime-upload.d.ts +4 -0
  215. package/dist/utils/runtime-upload.js +5 -0
  216. package/dist/utils/space-config.d.ts +2 -3
  217. package/dist/utils/space-config.js +1 -1
  218. package/dist/utils/uploaded-source.d.ts +4 -0
  219. package/dist/utils/uploaded-source.js +12 -0
  220. package/dist/visual-review.d.ts +4 -0
  221. package/dist/visual-review.js +208 -0
  222. package/dist/vocabulary.d.ts +38 -0
  223. package/dist/vocabulary.js +55 -0
  224. package/package.json +7 -2
  225. package/dist/agents/registry/deeplink-probes.d.ts +0 -23
  226. package/dist/agents/registry/deeplink-probes.js +0 -18
@@ -6,13 +6,25 @@
6
6
  // emitted; retiring an API surface removes its dead codes and generated
7
7
  // references together. Diagnostic codes share this table, so every diagnostic
8
8
  // carries a resolvable docs link.
9
- import { DOCS_BASE_URL } from "../config/domains.js";
10
- export const ERROR_DOCS_BASE_URL = `${DOCS_BASE_URL}/errors`;
9
+ /**
10
+ * Where problem documents point when nobody says otherwise.
11
+ *
12
+ * Compiled in rather than imported from the domain registry: a host that serves
13
+ * its own error pages passes its own base URL through {@link errorDocsUrl}, and
14
+ * a table of codes must not drag a hostname registry along to be readable. The
15
+ * literal is checked against the registry in `config/domains.test.ts`.
16
+ */
17
+ export const DEFAULT_PROBLEM_DOCS_BASE_URL = "https://spacefast.com/docs/errors";
11
18
  /** Media type of every 4xx/5xx response body (RFC 9457 problem details). */
12
19
  export const PROBLEM_CONTENT_TYPE = "application/problem+json";
13
- /** Problem `type` URI: docs origin + `/{code}`. Asserted by the conformance suite. */
14
- export function errorDocsUrl(code) {
15
- return `${ERROR_DOCS_BASE_URL}/${code}`;
20
+ /**
21
+ * Problem `type` URI: docs base + `/{code}`. Asserted by the conformance suite.
22
+ *
23
+ * `baseUrl` is what a white-labeled surface injects (the brand document's
24
+ * `problemDocsBaseUrl`); omitting it resolves against Spacefast's own docs.
25
+ */
26
+ export function errorDocsUrl(code, baseUrl = DEFAULT_PROBLEM_DOCS_BASE_URL) {
27
+ return `${baseUrl.replace(/\/+$/, "")}/${code}`;
16
28
  }
17
29
  /** Problem `title`: the snake_case code as a sentence ("version_not_found" -> "Version not found"). */
18
30
  export function errorTitle(code) {
@@ -51,6 +63,7 @@ export const ERROR_CODES = [
51
63
  "build_timeout",
52
64
  "cache_purge_domain_required",
53
65
  "cache_purge_path_required",
66
+ "catalog_unavailable",
54
67
  "channel_name_reserved",
55
68
  "channel_pointer_moved",
56
69
  "channel_unsupported",
@@ -71,6 +84,26 @@ export const ERROR_CODES = [
71
84
  "confirmation_mismatch",
72
85
  "confirmation_required",
73
86
  "confirmation_token_required",
87
+ "connection_ambiguous",
88
+ "connection_forbidden",
89
+ "connection_needs_reauth",
90
+ "connection_not_found",
91
+ "connection_revoked",
92
+ "connection_serving_not_granted",
93
+ "connector_approval_required",
94
+ "connector_first_party_immutable",
95
+ "connector_not_found",
96
+ "connector_role_unknown",
97
+ "connector_run_budget_exhausted",
98
+ "connector_run_not_found",
99
+ "connector_run_not_resumable",
100
+ "connector_serving_admin_only",
101
+ "connector_serving_not_allowlisted",
102
+ "connector_slug_taken",
103
+ "connector_source_blocked",
104
+ "connector_source_unreachable",
105
+ "connector_tool_blocked",
106
+ "connector_write_in_read_handler",
74
107
  "continuation_unavailable",
75
108
  "continuation_used",
76
109
  "credential_expired",
@@ -89,6 +122,7 @@ export const ERROR_CODES = [
89
122
  "decision_in_progress",
90
123
  "device_authorization_failed",
91
124
  "device_verification_rate_limited",
125
+ "dns_control_observation_indeterminate",
92
126
  "dns_export_required",
93
127
  "dns_field_conflict",
94
128
  "dns_field_not_applicable",
@@ -127,7 +161,6 @@ export const ERROR_CODES = [
127
161
  "domain_facet_already_managed",
128
162
  "domain_facet_external",
129
163
  "domain_facet_not_applicable",
130
- "domain_hostname_site_mismatch",
131
164
  "domain_in_use",
132
165
  "domain_lookup_rate_limited",
133
166
  "domain_not_bound",
@@ -140,7 +173,9 @@ export const ERROR_CODES = [
140
173
  "domain_wildcard_not_enabled",
141
174
  "download_required",
142
175
  "duplicate_version_path",
176
+ "elevation_denied",
143
177
  "elevation_not_required",
178
+ "elevation_required",
144
179
  "email_already_claimed",
145
180
  "email_verification_code_invalid",
146
181
  "enforcement_policy_overlap",
@@ -150,7 +185,17 @@ export const ERROR_CODES = [
150
185
  "feature_unavailable",
151
186
  "files_mode_does_not_support_spa",
152
187
  "forbidden",
188
+ "frame_link_inactive",
189
+ "frame_path_outside_link_resources",
190
+ "frame_principal_required",
191
+ "frame_session_invalid",
192
+ "frame_session_stale",
193
+ "frame_session_target_changed",
194
+ "frame_target_fixed",
195
+ "frame_version_required",
153
196
  "free_external_proxy_disabled",
197
+ "hostname_contested",
198
+ "human_approval_required",
154
199
  "idempotency_conflict_in_progress",
155
200
  "idempotency_key_reused",
156
201
  "incumbent_controls_dns",
@@ -198,6 +243,9 @@ export const ERROR_CODES = [
198
243
  "issuer_proof_invalid",
199
244
  "issuer_tenant_occupied",
200
245
  "issuer_unknown",
246
+ "jetpack_licensing_rejected",
247
+ "jetpack_licensing_response_invalid",
248
+ "jetpack_licensing_unavailable",
201
249
  "job_not_found",
202
250
  "job_not_promotable",
203
251
  "job_not_removable",
@@ -206,6 +254,8 @@ export const ERROR_CODES = [
206
254
  "log_retention_clamped",
207
255
  "lost_domain_control",
208
256
  "maintenance_in_progress",
257
+ "malformed_policy_pattern",
258
+ "malformed_tool_address",
209
259
  "malware_detected",
210
260
  "managed_domain_protected",
211
261
  "manifest_body_too_large",
@@ -218,17 +268,19 @@ export const ERROR_CODES = [
218
268
  "name_managed_by_config",
219
269
  "nameserver_delegation_required",
220
270
  "nameserver_divergence",
271
+ "next_package_layout_unsupported",
272
+ "next_version_unsupported",
221
273
  "no_space_selected",
222
274
  "noop_publish",
223
275
  "not_enrolled",
224
276
  "not_found",
277
+ "owner_binding_requires_private_space",
225
278
  "partner_preset_not_grantable",
226
279
  "partner_tenant_immutable_client",
227
280
  "password_already_set",
228
281
  "password_compromised",
229
282
  "path_case_collision",
230
283
  "path_too_long",
231
- "placement_invalid_burstable",
232
284
  "plan_grant_already_active",
233
285
  "plan_grant_already_revoked",
234
286
  "plan_unknown",
@@ -279,16 +331,21 @@ export const ERROR_CODES = [
279
331
  "queue_not_found",
280
332
  "quota_exceeded",
281
333
  "rate_limited",
334
+ "realtime_cursor_expired",
282
335
  "registration_expired",
283
336
  "registration_expiring",
337
+ "repository_ref_not_found",
338
+ "repository_stale_base",
284
339
  "resource_revision_changed",
285
340
  "response_headers_unservable",
286
341
  "response_table_too_large",
287
342
  "review_item_claimed",
288
343
  "routing_rules_over_plan",
344
+ "run_replay_diverged",
289
345
  "runtime_action_forbidden",
290
346
  "runtime_api_not_found",
291
347
  "runtime_callback_forbidden",
348
+ "runtime_capabilities_pending",
292
349
  "runtime_dev_unsupported",
293
350
  "runtime_hostname_unassigned",
294
351
  "runtime_instance_mismatch",
@@ -314,8 +371,6 @@ export const ERROR_CODES = [
314
371
  "service_signature_invalid",
315
372
  "session_not_fresh",
316
373
  "site_already_deleted",
317
- "site_has_live_spaces",
318
- "site_not_static",
319
374
  "site_required",
320
375
  "site_suspended",
321
376
  "slow_down",
@@ -325,6 +380,41 @@ export const ERROR_CODES = [
325
380
  "source_archive_decompression_timeout",
326
381
  "source_archive_expansion_ratio_exceeded",
327
382
  "source_archive_validation_busy",
383
+ "source_branch_changed",
384
+ "source_branch_missing",
385
+ "source_commit_not_saved",
386
+ "source_conflict_content_unavailable",
387
+ "source_conflicts_missing",
388
+ "source_exact_diff_unsupported",
389
+ "source_file_incomplete",
390
+ "source_file_mode_unavailable",
391
+ "source_file_required",
392
+ "source_file_too_large",
393
+ "source_file_unavailable",
394
+ "source_files_too_large",
395
+ "source_hunk_selection_invalid",
396
+ "source_hunk_stale",
397
+ "source_merge_snapshot_changed",
398
+ "source_merge_undo_unsupported",
399
+ "source_nothing_staged",
400
+ "source_operation_pending",
401
+ "source_operation_reused",
402
+ "source_operation_superseded",
403
+ "source_operation_unreconciled",
404
+ "source_patch_unavailable",
405
+ "source_resolution_invalid",
406
+ "source_resolution_pending",
407
+ "source_selection_invalid",
408
+ "source_snapshot_changed",
409
+ "source_tree_too_large",
410
+ "source_workspace_closed",
411
+ "source_workspace_connection_changed",
412
+ "source_workspace_connection_in_use",
413
+ "source_workspace_dirty",
414
+ "source_workspace_initializing",
415
+ "source_workspace_ref_reserved",
416
+ "source_workspace_revision_conflict",
417
+ "source_workspaces_unavailable",
328
418
  "space_already_claimed",
329
419
  "space_claim_unavailable",
330
420
  "space_claimed_credential_available",
@@ -428,16 +518,24 @@ export const ERROR_CODES = [
428
518
  "version_not_ready",
429
519
  "version_quota_exceeded",
430
520
  "version_total_bytes_exceeded",
521
+ "visitor_role_not_bindable",
522
+ "visual_review_context_too_large",
523
+ "visual_review_expired",
524
+ "visual_review_forbidden",
525
+ "visual_review_invalid_image",
526
+ "visual_review_invalid_note",
527
+ "visual_review_submitted",
528
+ "visual_review_too_large",
431
529
  "webhook_delivery_budget_exceeded",
432
530
  "webhook_managed_by_manifest",
433
531
  "whois_unavailable",
532
+ "wp_cli_timeout",
434
533
  "wp_cloud_assignment_kind_mismatch",
435
534
  "wp_cloud_assignment_space_mismatch",
436
535
  "wp_cloud_assignment_team_mismatch",
437
536
  "wp_cloud_client_in_use",
438
537
  "wp_cloud_client_not_found",
439
538
  "wp_cloud_site_still_assigned",
440
- "wp_cloud_team_shared_site_exists",
441
539
  "wp_cloud_webhook_secret_not_configured",
442
540
  "zero_ai_unavailable",
443
541
  "zero_artifact_abi_mismatch",
@@ -510,6 +608,7 @@ export const ERROR_CODES = [
510
608
  "zero_log_query_invalid",
511
609
  "zero_method_not_allowed",
512
610
  "zero_migration_failed",
611
+ "zero_mutation_origin_invalid",
513
612
  "zero_query_name_missing",
514
613
  "zero_realtime_forbidden",
515
614
  "zero_realtime_message_invalid",
@@ -1,4 +1,5 @@
1
1
  import { z } from "zod";
2
+ export declare const EVENT_PROPERTY_STRING_MAX_LENGTH = 512;
2
3
  export declare const eventSourceSchema: z.ZodEnum<{
3
4
  www: "www";
4
5
  dashboard: "dashboard";
@@ -32,6 +33,7 @@ export declare const EVENT_CATALOG: {
32
33
  actors: ("analytics_id" | "anonymous_id")[];
33
34
  properties: z.ZodObject<{
34
35
  path: z.ZodString;
36
+ url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
35
37
  referrer: z.ZodOptional<z.ZodNullable<z.ZodString>>;
36
38
  }, z.core.$strict>;
37
39
  };
@@ -106,6 +108,7 @@ export declare const EVENT_CATALOG: {
106
108
  actors: ("analytics_id" | "anonymous_id")[];
107
109
  properties: z.ZodObject<{
108
110
  mode: z.ZodEnum<{
111
+ publish: "publish";
109
112
  start: "start";
110
113
  "new-space": "new-space";
111
114
  }>;
@@ -118,6 +121,7 @@ export declare const EVENT_CATALOG: {
118
121
  actors: ("analytics_id" | "anonymous_id")[];
119
122
  properties: z.ZodObject<{
120
123
  mode: z.ZodEnum<{
124
+ publish: "publish";
121
125
  start: "start";
122
126
  "new-space": "new-space";
123
127
  }>;
@@ -131,6 +135,7 @@ export declare const EVENT_CATALOG: {
131
135
  actors: ("analytics_id" | "anonymous_id")[];
132
136
  properties: z.ZodObject<{
133
137
  mode: z.ZodEnum<{
138
+ publish: "publish";
134
139
  start: "start";
135
140
  "new-space": "new-space";
136
141
  }>;
@@ -15,7 +15,13 @@ const pathSchema = z
15
15
  .min(1)
16
16
  .max(2048)
17
17
  .describe("Client route or URL path the event happened on, without query strings.");
18
- const propertyValueSchema = z.union([z.string().max(512), z.number(), z.boolean(), z.null()]);
18
+ export const EVENT_PROPERTY_STRING_MAX_LENGTH = 512;
19
+ const propertyValueSchema = z.union([
20
+ z.string().max(EVENT_PROPERTY_STRING_MAX_LENGTH),
21
+ z.number(),
22
+ z.boolean(),
23
+ z.null(),
24
+ ]);
19
25
  const propertyBagSchema = z
20
26
  .record(z.string().max(64), propertyValueSchema)
21
27
  .refine((value) => Object.keys(value).length <= 32, {
@@ -58,6 +64,9 @@ const eventContextSchema = z
58
64
  const pageViewedPropertiesSchema = z
59
65
  .object({
60
66
  path: pathSchema,
67
+ // Full token-scrubbed location.href, so PostHog's $current_url keeps its
68
+ // host. Optional: senders that only know the path fall back to it.
69
+ url: z.string().max(2048).nullable().optional(),
61
70
  referrer: z.string().max(2048).nullable().optional(),
62
71
  })
63
72
  .strict();
@@ -120,8 +129,8 @@ const browserFunnelPropertiesSchema = propertyBagSchema.default({});
120
129
  // credential NEVER appear here — every shape
121
130
  // below is strict, so a sender that adds one is rejected at ingest.
122
131
  const startFunnelModeSchema = z
123
- .enum(["start", "new-space"])
124
- .describe("Which entry point the visitor is in: first-run /start, or new-space inside a team.");
132
+ .enum(["start", "new-space", "publish"])
133
+ .describe("Which entry point the visitor is in: first-run /start, new-space inside a team, or publishing an existing space.");
125
134
  const startFunnelStepSchema = z.string().min(1).max(64);
126
135
  const startFunnelAgentIdSchema = z
127
136
  .string()
@@ -103,6 +103,8 @@ export declare const executionCapabilitiesSchema: z.ZodDefault<z.ZodObject<{
103
103
  spam: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
104
104
  email: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
105
105
  content: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
106
+ storage: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
107
+ connectors: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
106
108
  }, z.core.$strip>>;
107
109
  export type ExecutionCapabilities = z.infer<typeof executionCapabilitiesSchema>;
108
110
  /**
@@ -110,7 +112,7 @@ export type ExecutionCapabilities = z.infer<typeof executionCapabilitiesSchema>;
110
112
  * derived from a response body, so two spaces never list their capabilities
111
113
  * differently because JSON came back reshuffled.
112
114
  */
113
- export declare const EXECUTION_CAPABILITY_ORDER: readonly ["db", "fetch", "auth", "env", "realtime", "logging", "gravatar", "spam", "email", "content"];
115
+ export declare const EXECUTION_CAPABILITY_ORDER: readonly ["db", "fetch", "auth", "env", "realtime", "logging", "gravatar", "spam", "email", "content", "storage", "connectors"];
114
116
  /**
115
117
  * The portable seam. `db`, `auth` and `realtime` bind a handler to the local
116
118
  * tier: `db` because Zero guarantees one parent-owned transaction that an
@@ -157,6 +159,8 @@ export declare function executionEndpointSourceSchema(routePathSchema: z.ZodType
157
159
  spam: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
158
160
  email: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
159
161
  content: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
162
+ storage: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
163
+ connectors: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
160
164
  }, z.core.$strip>>;
161
165
  }, z.core.$strict>;
162
166
  /**
@@ -186,6 +186,8 @@ export const executionCapabilitiesSchema = z
186
186
  spam: z.boolean().default(false),
187
187
  email: z.boolean().default(false),
188
188
  content: z.boolean().default(false),
189
+ storage: z.boolean().default(false),
190
+ connectors: z.boolean().default(false),
189
191
  })
190
192
  .partial()
191
193
  .default({});
@@ -205,6 +207,8 @@ export const EXECUTION_CAPABILITY_ORDER = [
205
207
  "spam",
206
208
  "email",
207
209
  "content",
210
+ "storage",
211
+ "connectors",
208
212
  ];
209
213
  // A capability added to executionCapabilitiesSchema must also be added to the order above.
210
214
  true;
@@ -297,7 +297,7 @@ declare const featureEntries: readonly [{
297
297
  readonly feedbackUrl: null;
298
298
  };
299
299
  readonly owner: "team:runtime";
300
- readonly requires: readonly ["sites.dedicated_runtime"];
300
+ readonly requires: readonly [];
301
301
  readonly lifecycleAdoptedAt: "2026-08-28";
302
302
  readonly reviewAfter: "2026-09-11";
303
303
  readonly removeAfter: "2026-10-31";
@@ -318,31 +318,26 @@ declare const featureEntries: readonly [{
318
318
  };
319
319
  }, {
320
320
  readonly cohort: "launch";
321
- readonly key: "sites.dedicated_runtime";
322
- readonly name: "Dedicated runtime sites";
323
- readonly description: "Allows teams to create dedicated WP.Cloud sites and place team spaces on them.";
324
- readonly stage: "ga";
325
- readonly surface: true;
326
- readonly defaultEnabled: true;
321
+ readonly key: "sites.jetpack";
322
+ readonly name: "Managed Jetpack";
323
+ readonly description: "Activates Jetpack on managed WordPress sites and attaches configured partner licenses.";
324
+ readonly stage: "internal";
325
+ readonly surface: false;
326
+ readonly defaultEnabled: false;
327
327
  readonly runtime: {
328
- readonly enabledInDevelopment: true;
329
328
  readonly enabledForA8c: true;
330
329
  readonly planDefaults: {};
331
330
  };
332
- readonly docs: {
333
- readonly channel: "public";
334
- readonly slug: "/docs/account/plans";
335
- readonly feedbackUrl: null;
336
- };
331
+ readonly docs: null;
337
332
  readonly owner: "team:runtime";
338
333
  readonly requires: readonly [];
339
- readonly lifecycleAdoptedAt: "2026-07-12";
340
- readonly reviewAfter: null;
341
- readonly removeAfter: "2026-11-01";
342
- readonly gaAt: "2026-08-05";
334
+ readonly lifecycleAdoptedAt: "2026-08-29";
335
+ readonly reviewAfter: "2026-09-12";
336
+ readonly removeAfter: "2026-10-31";
337
+ readonly gaAt: null;
343
338
  readonly downRamp: {
344
- readonly code: "dedicated_runtime_stop";
345
- 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.";
339
+ readonly code: "managed_jetpack_stop";
340
+ readonly summary: "Stop new plugin and license reconciliation. Leave attached licenses and existing Jetpack connections intact for deliberate cleanup.";
346
341
  };
347
342
  }, {
348
343
  readonly cohort: "launch";
@@ -478,6 +473,34 @@ declare const featureEntries: readonly [{
478
473
  readonly code: "slug_rename_stop";
479
474
  readonly summary: "Block new slug renames while earlier hostname and runtime updates continue.";
480
475
  };
476
+ }, {
477
+ readonly cohort: "launch";
478
+ readonly key: "content.users";
479
+ readonly name: "Space users";
480
+ readonly description: string;
481
+ readonly stage: "internal";
482
+ readonly surface: true;
483
+ readonly defaultEnabled: false;
484
+ readonly runtime: {
485
+ readonly enabledInDevelopment: true;
486
+ readonly enabledForA8c: true;
487
+ readonly planDefaults: {};
488
+ };
489
+ readonly docs: {
490
+ readonly channel: "handbook";
491
+ readonly slug: "/features/content";
492
+ readonly feedbackUrl: null;
493
+ };
494
+ readonly owner: "team:runtime";
495
+ readonly requires: readonly [];
496
+ readonly lifecycleAdoptedAt: "2026-08-29";
497
+ readonly reviewAfter: "2026-09-26";
498
+ readonly removeAfter: "2026-11-01";
499
+ readonly gaAt: null;
500
+ readonly downRamp: {
501
+ readonly code: "space_users_stop";
502
+ readonly summary: string;
503
+ };
481
504
  }, {
482
505
  readonly key: "pages.templates";
483
506
  readonly name: "Custom page templates";
@@ -496,6 +519,16 @@ declare const featureEntries: readonly [{
496
519
  readonly enabledForA8c: false;
497
520
  readonly planDefaults: {};
498
521
  };
522
+ }, {
523
+ readonly key: "connectors";
524
+ readonly name: "Connectors";
525
+ readonly description: "Team-scoped connectors: register tool sources, connect accounts, decide policy, and run tools from agents, the CLI, MCP, and the dashboard.";
526
+ readonly defaultEnabled: true;
527
+ readonly runtime: {
528
+ readonly enabledInDevelopment: true;
529
+ readonly enabledForA8c: true;
530
+ readonly planDefaults: {};
531
+ };
499
532
  }];
500
533
  type FeatureEntry = (typeof featureEntries)[number];
501
534
  type LifecycleFeatureEntry = Extract<FeatureEntry, {
@@ -512,5 +545,5 @@ type RuntimeDefinitionRecord<K extends string> = {
512
545
  readonly [Key in K]: RuntimeFeatureDefinitionFields<Key>;
513
546
  };
514
547
  export declare const FEATURE_RUNTIME_KEYS: readonly RuntimeFeatureKey[];
515
- 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.comments" | "content.managed" | "sites.dedicated_runtime" | "collab.drawing" | "tags" | "functions" | "spaces.slug_rename" | "pages.templates" | "branding.hide">>;
548
+ export declare const FEATURE_RUNTIME_DEFINITIONS: Readonly<RuntimeDefinitionRecord<"connectors" | "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.comments" | "content.managed" | "collab.drawing" | "sites.jetpack" | "spaces.slug_rename" | "content.users" | "pages.templates" | "branding.hide">>;
516
549
  export declare const FEATURE_LIFECYCLE_BY_KEY: ReadonlyMap<LifecycleFeatureKey, FeatureRegistryEntry<LifecycleFeatureKey>>;
@@ -302,7 +302,7 @@ const featureEntries = Object.freeze([
302
302
  feedbackUrl: null,
303
303
  },
304
304
  owner: "team:runtime",
305
- requires: ["sites.dedicated_runtime"],
305
+ requires: [],
306
306
  lifecycleAdoptedAt: "2026-08-28",
307
307
  reviewAfter: "2026-09-11",
308
308
  removeAfter: "2026-10-31",
@@ -325,33 +325,26 @@ const featureEntries = Object.freeze([
325
325
  },
326
326
  {
327
327
  cohort: "launch",
328
- key: "sites.dedicated_runtime",
329
- name: "Dedicated runtime sites",
330
- description: "Allows teams to create dedicated WP.Cloud sites and place team spaces on them.",
331
- // Every Space owns its runtime site. The flag remains only as the
332
- // operational down-ramp for new placement and materialization.
333
- stage: "ga",
334
- surface: true,
335
- defaultEnabled: true,
328
+ key: "sites.jetpack",
329
+ name: "Managed Jetpack",
330
+ description: "Activates Jetpack on managed WordPress sites and attaches configured partner licenses.",
331
+ stage: "internal",
332
+ surface: false,
333
+ defaultEnabled: false,
336
334
  runtime: {
337
- enabledInDevelopment: true,
338
335
  enabledForA8c: true,
339
336
  planDefaults: {},
340
337
  },
341
- docs: {
342
- channel: "public",
343
- slug: "/docs/account/plans",
344
- feedbackUrl: null,
345
- },
338
+ docs: null,
346
339
  owner: "team:runtime",
347
340
  requires: [],
348
- lifecycleAdoptedAt: "2026-07-12",
349
- reviewAfter: null,
350
- removeAfter: "2026-11-01",
351
- gaAt: "2026-08-05",
341
+ lifecycleAdoptedAt: "2026-08-29",
342
+ reviewAfter: "2026-09-12",
343
+ removeAfter: "2026-10-31",
344
+ gaAt: null,
352
345
  downRamp: {
353
- code: "dedicated_runtime_stop",
354
- 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.",
346
+ code: "managed_jetpack_stop",
347
+ summary: "Stop new plugin and license reconciliation. Leave attached licenses and existing Jetpack connections intact for deliberate cleanup.",
355
348
  },
356
349
  },
357
350
  {
@@ -460,8 +453,7 @@ const featureEntries = Object.freeze([
460
453
  },
461
454
  owner: "team:zero",
462
455
  // A worker executes on Cloudflare rather than on the space's box and
463
- // reaches the database only through the broker, so dispatch has no
464
- // dedicated-runtime lifecycle dependency.
456
+ // reaches the database only through the broker.
465
457
  requires: [],
466
458
  lifecycleAdoptedAt: "2026-07-27",
467
459
  reviewAfter: null,
@@ -503,6 +495,45 @@ const featureEntries = Object.freeze([
503
495
  summary: "Block new slug renames while earlier hostname and runtime updates continue.",
504
496
  },
505
497
  },
498
+ {
499
+ cohort: "launch",
500
+ key: "content.users",
501
+ name: "Space users",
502
+ description: "Exposes a Space's own WordPress users — list, read, create and update — as zero/wp/users/* Abilities, " +
503
+ "under WordPress's capability rules. It adds no user store: a Space user is the durable WordPress " +
504
+ "principal for an (issuer, subject) authority, and roles stay projected from Grants.",
505
+ stage: "internal",
506
+ // The Space's Users page is the surface, and this key gates it in both
507
+ // places that matter: the dashboard row, and the editor launch that opens
508
+ // the screen. Off by default while internal, opened per team, exactly as
509
+ // content.managed is — the two are turned on together.
510
+ surface: true,
511
+ defaultEnabled: false,
512
+ runtime: {
513
+ enabledInDevelopment: true,
514
+ enabledForA8c: true,
515
+ planDefaults: {},
516
+ },
517
+ docs: {
518
+ channel: "handbook",
519
+ slug: "/features/content",
520
+ feedbackUrl: null,
521
+ },
522
+ owner: "team:runtime",
523
+ // The Abilities register on the Space's WordPress whether or not content
524
+ // is managed. Every Space has that runtime, so it is not a feature dependency.
525
+ requires: [],
526
+ lifecycleAdoptedAt: "2026-08-29",
527
+ reviewAfter: "2026-09-26",
528
+ removeAfter: "2026-11-01",
529
+ gaAt: null,
530
+ downRamp: {
531
+ code: "space_users_stop",
532
+ summary: "Stop registering the zero/wp/users/* Abilities, which denies every user read and write through them. " +
533
+ "WordPress user rows, their Space membership and the durable principal lane that keeps sign-in working " +
534
+ "are untouched.",
535
+ },
536
+ },
506
537
  {
507
538
  // Partner plan-catalog entitlement dial: a partner plan that grants this key
508
539
  // lets its principals' spaces compile `_pages/*.html` full-page takeovers.
@@ -529,6 +560,17 @@ const featureEntries = Object.freeze([
529
560
  planDefaults: {},
530
561
  },
531
562
  },
563
+ {
564
+ key: "connectors",
565
+ name: "Connectors",
566
+ description: "Team-scoped connectors: register tool sources, connect accounts, decide policy, and run tools from agents, the CLI, MCP, and the dashboard.",
567
+ defaultEnabled: true,
568
+ runtime: {
569
+ enabledInDevelopment: true,
570
+ enabledForA8c: true,
571
+ planDefaults: {},
572
+ },
573
+ },
532
574
  ]);
533
575
  function isLifecycleFeatureEntry(entry) {
534
576
  return "cohort" in entry;