@spacefast/common 0.0.24 → 0.2.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 (320) hide show
  1. package/brand-assets/LICENSE-Haskoy.txt +93 -0
  2. package/brand-assets/haskoy-latin-variable.woff2 +0 -0
  3. package/brand-assets/spacefast-favicon.svg +4 -4
  4. package/brand-assets/spacefast-sf-full-bleed.svg +3 -3
  5. package/brand-assets/spacefast-wordmark.svg +2 -4
  6. package/dist/agents/connect-targets.d.ts +6 -146
  7. package/dist/agents/connect-targets.js +63 -295
  8. package/dist/agents/private-key-oauth.d.ts +31 -2
  9. package/dist/agents/private-key-oauth.js +166 -92
  10. package/dist/agents/registry/core.d.ts +292 -0
  11. package/dist/agents/registry/core.js +1388 -0
  12. package/dist/agents/registry/deeplink-probes.d.ts +23 -0
  13. package/dist/agents/registry/deeplink-probes.js +18 -0
  14. package/dist/agents/registry/node.d.ts +56 -0
  15. package/dist/agents/registry/node.js +339 -0
  16. package/dist/brand-assets-build.js +3 -6
  17. package/dist/brand-assets.d.ts +5 -15
  18. package/dist/brand-assets.js +12 -14
  19. package/dist/brand.d.ts +17 -0
  20. package/dist/brand.js +24 -4
  21. package/dist/config/domains.d.ts +79 -12
  22. package/dist/config/domains.js +128 -29
  23. package/dist/config/index.js +1 -2
  24. package/dist/contracts/abuse.js +9 -24
  25. package/dist/contracts/access-profiles.d.ts +86 -0
  26. package/dist/contracts/access-profiles.js +89 -0
  27. package/dist/contracts/access.d.ts +24 -30
  28. package/dist/contracts/access.js +33 -64
  29. package/dist/contracts/activity.d.ts +18 -1
  30. package/dist/contracts/activity.js +72 -26
  31. package/dist/contracts/analytics.js +8 -10
  32. package/dist/contracts/api-keys.d.ts +77 -52
  33. package/dist/contracts/api-keys.js +44 -24
  34. package/dist/contracts/application-journal.d.ts +216 -0
  35. package/dist/contracts/application-journal.js +167 -0
  36. package/dist/contracts/auth.d.ts +90 -17
  37. package/dist/contracts/auth.js +86 -17
  38. package/dist/contracts/beta.d.ts +9 -4
  39. package/dist/contracts/beta.js +20 -16
  40. package/dist/contracts/billing.d.ts +2 -1
  41. package/dist/contracts/billing.js +37 -11
  42. package/dist/contracts/bootstrap.d.ts +791 -0
  43. package/dist/contracts/bootstrap.js +51 -0
  44. package/dist/contracts/builds.d.ts +209 -18
  45. package/dist/contracts/builds.js +93 -27
  46. package/dist/contracts/channels.d.ts +43 -0
  47. package/dist/contracts/channels.js +25 -9
  48. package/dist/contracts/cli.d.ts +7 -0
  49. package/dist/contracts/cli.js +6 -0
  50. package/dist/contracts/collab-public.d.ts +1 -1
  51. package/dist/contracts/collab-public.js +5 -8
  52. package/dist/contracts/comments.d.ts +44 -34
  53. package/dist/contracts/comments.js +107 -77
  54. package/dist/contracts/commerce.d.ts +165 -0
  55. package/dist/contracts/commerce.js +146 -0
  56. package/dist/contracts/common.d.ts +3 -3
  57. package/dist/contracts/common.js +20 -31
  58. package/dist/contracts/content-contract-verification.d.ts +521 -0
  59. package/dist/contracts/content-contract-verification.js +320 -0
  60. package/dist/contracts/content-platform-fixture.d.ts +1278 -0
  61. package/dist/contracts/content-platform-fixture.js +44 -0
  62. package/dist/contracts/content-program.d.ts +994 -0
  63. package/dist/contracts/content-program.js +658 -0
  64. package/dist/contracts/content-sync.d.ts +290 -0
  65. package/dist/contracts/content-sync.js +167 -0
  66. package/dist/contracts/content.d.ts +432 -0
  67. package/dist/contracts/content.js +303 -0
  68. package/dist/contracts/continuation.d.ts +17 -1
  69. package/dist/contracts/continuation.js +23 -23
  70. package/dist/contracts/countries.js +3 -4
  71. package/dist/contracts/crons.d.ts +52 -0
  72. package/dist/contracts/crons.js +60 -0
  73. package/dist/contracts/dashboard-prefs.d.ts +56 -0
  74. package/dist/contracts/dashboard-prefs.js +51 -0
  75. package/dist/contracts/device-auth.d.ts +234 -37
  76. package/dist/contracts/device-auth.js +267 -53
  77. package/dist/contracts/docs.d.ts +1 -5
  78. package/dist/contracts/docs.js +7 -15
  79. package/dist/contracts/domains.d.ts +501 -93
  80. package/dist/contracts/domains.js +193 -55
  81. package/dist/contracts/email-preferences.d.ts +3 -3
  82. package/dist/contracts/email-preferences.js +6 -7
  83. package/dist/contracts/enums.d.ts +27 -26
  84. package/dist/contracts/enums.js +68 -61
  85. package/dist/contracts/error-code-meta.d.ts +283 -7
  86. package/dist/contracts/error-code-meta.js +97 -5
  87. package/dist/contracts/error-codes.d.ts +5 -5
  88. package/dist/contracts/error-codes.js +82 -17
  89. package/dist/contracts/events.d.ts +100 -20
  90. package/dist/contracts/events.js +107 -20
  91. package/dist/contracts/execution.d.ts +48 -64
  92. package/dist/contracts/execution.js +52 -62
  93. package/dist/contracts/feature-lifecycle.d.ts +73 -27
  94. package/dist/contracts/feature-lifecycle.js +86 -26
  95. package/dist/contracts/features.d.ts +68 -19
  96. package/dist/contracts/features.js +42 -41
  97. package/dist/contracts/fixtures/content-platform-v1.json +1108 -0
  98. package/dist/contracts/frame-session.d.ts +192 -0
  99. package/dist/contracts/frame-session.js +164 -0
  100. package/dist/contracts/functions.d.ts +338 -164
  101. package/dist/contracts/functions.js +367 -198
  102. package/dist/contracts/git.d.ts +27 -33
  103. package/dist/contracts/git.js +10 -11
  104. package/dist/contracts/grant-copy.d.ts +43 -0
  105. package/dist/contracts/grant-copy.js +44 -0
  106. package/dist/contracts/grants.d.ts +62 -54
  107. package/dist/contracts/grants.js +124 -23
  108. package/dist/contracts/ids.d.ts +4 -1
  109. package/dist/contracts/ids.js +6 -3
  110. package/dist/contracts/internal.d.ts +8 -18
  111. package/dist/contracts/internal.js +13 -14
  112. package/dist/contracts/mcp.d.ts +28 -0
  113. package/dist/contracts/mcp.js +28 -0
  114. package/dist/contracts/me.d.ts +6 -1
  115. package/dist/contracts/me.js +12 -6
  116. package/dist/contracts/notifications.d.ts +27 -29
  117. package/dist/contracts/notifications.js +9 -4
  118. package/dist/contracts/oauth-resources.d.ts +112 -10
  119. package/dist/contracts/oauth-resources.js +116 -11
  120. package/dist/contracts/oauth-scope-actions.d.ts +90 -0
  121. package/dist/contracts/oauth-scope-actions.js +126 -0
  122. package/dist/contracts/operations.d.ts +27 -4
  123. package/dist/contracts/operations.js +12 -6
  124. package/dist/contracts/pages.d.ts +31 -7
  125. package/dist/contracts/pages.js +22 -5
  126. package/dist/contracts/partner-notifications.d.ts +3 -0
  127. package/dist/contracts/partner-notifications.js +65 -0
  128. package/dist/contracts/{platform.d.ts → partner.d.ts} +29 -42
  129. package/dist/contracts/{platform.js → partner.js} +27 -40
  130. package/dist/contracts/plan-policy.js +1 -1
  131. package/dist/contracts/principal-assertion.d.ts +43 -0
  132. package/dist/contracts/principal-assertion.js +67 -0
  133. package/dist/contracts/principals.d.ts +73 -0
  134. package/dist/contracts/principals.js +59 -0
  135. package/dist/contracts/privacy.d.ts +11 -0
  136. package/dist/contracts/privacy.js +17 -0
  137. package/dist/contracts/problem-document.js +3 -4
  138. package/dist/contracts/publish-archive.d.ts +269 -161
  139. package/dist/contracts/publish-archive.js +11 -1
  140. package/dist/contracts/push-new.d.ts +8 -8
  141. package/dist/contracts/quotas.js +5 -5
  142. package/dist/contracts/realtime.d.ts +52 -0
  143. package/dist/contracts/realtime.js +54 -0
  144. package/dist/contracts/repository-connections.d.ts +44 -31
  145. package/dist/contracts/repository-connections.js +17 -5
  146. package/dist/contracts/resources.d.ts +105 -14
  147. package/dist/contracts/resources.js +150 -26
  148. package/dist/contracts/route-inventory.d.ts +358 -0
  149. package/dist/contracts/route-inventory.js +141 -0
  150. package/dist/contracts/runtime-api.d.ts +206 -82
  151. package/dist/contracts/runtime-api.js +131 -70
  152. package/dist/contracts/runtime-app.d.ts +13 -23
  153. package/dist/contracts/runtime-app.js +39 -24
  154. package/dist/contracts/runtime-components.d.ts +143 -0
  155. package/dist/contracts/runtime-components.js +199 -0
  156. package/dist/contracts/runtime-db.d.ts +49 -23
  157. package/dist/contracts/runtime-db.js +87 -22
  158. package/dist/contracts/runtime-purge.d.ts +8 -0
  159. package/dist/contracts/runtime-purge.js +5 -0
  160. package/dist/contracts/runtime-services.d.ts +43 -75
  161. package/dist/contracts/runtime-services.js +29 -49
  162. package/dist/contracts/runtime-storage.d.ts +15 -14
  163. package/dist/contracts/runtime-storage.js +30 -14
  164. package/dist/contracts/sf-config-v1.d.ts +48 -14
  165. package/dist/contracts/slugs.js +13 -4
  166. package/dist/contracts/space-config.d.ts +283 -19
  167. package/dist/contracts/space-config.js +430 -80
  168. package/dist/contracts/spaces.d.ts +376 -290
  169. package/dist/contracts/spaces.js +200 -135
  170. package/dist/contracts/superadmin-activity.d.ts +3 -43
  171. package/dist/contracts/superadmin-activity.js +6 -30
  172. package/dist/contracts/superadmin-emails.d.ts +1 -0
  173. package/dist/contracts/superadmin-emails.js +17 -1
  174. package/dist/contracts/superadmin-runtime.d.ts +199 -0
  175. package/dist/contracts/superadmin-runtime.js +141 -0
  176. package/dist/contracts/superadmin-search.d.ts +22 -2
  177. package/dist/contracts/superadmin-search.js +14 -6
  178. package/dist/contracts/superadmin-spaces.d.ts +438 -189
  179. package/dist/contracts/superadmin-spaces.js +131 -25
  180. package/dist/contracts/superadmin-teams.d.ts +5 -2
  181. package/dist/contracts/superadmin-teams.js +1 -2
  182. package/dist/contracts/superadmin-tenants.d.ts +627 -12
  183. package/dist/contracts/superadmin-tenants.js +32 -13
  184. package/dist/contracts/superadmin.d.ts +232 -37
  185. package/dist/contracts/superadmin.js +106 -22
  186. package/dist/contracts/tags.d.ts +85 -58
  187. package/dist/contracts/tags.js +47 -37
  188. package/dist/contracts/teams.d.ts +86 -26
  189. package/dist/contracts/teams.js +90 -31
  190. package/dist/contracts/tenants.d.ts +135 -0
  191. package/dist/contracts/tenants.js +120 -0
  192. package/dist/contracts/test-triggers.d.ts +70 -0
  193. package/dist/contracts/test-triggers.js +116 -0
  194. package/dist/contracts/theme-json.js +3 -8
  195. package/dist/contracts/transfers.d.ts +1 -0
  196. package/dist/contracts/transfers.js +3 -2
  197. package/dist/contracts/usage.d.ts +209 -0
  198. package/dist/contracts/usage.js +124 -12
  199. package/dist/contracts/variables.d.ts +2 -2
  200. package/dist/contracts/variables.js +9 -13
  201. package/dist/contracts/webhooks.d.ts +13 -5
  202. package/dist/contracts/webhooks.js +3 -1
  203. package/dist/contracts/zero.d.ts +72 -81
  204. package/dist/contracts/zero.js +80 -78
  205. package/dist/dashboard-paths/index.d.ts +24 -21
  206. package/dist/dashboard-paths/index.js +35 -47
  207. package/dist/dashboard-paths/route-reservations.generated.d.ts +2 -0
  208. package/dist/dashboard-paths/route-reservations.generated.js +36 -0
  209. package/dist/docs/agent-arrival.d.ts +92 -0
  210. package/dist/docs/agent-arrival.js +227 -0
  211. package/dist/docs/agent-output-policy.d.ts +6 -0
  212. package/dist/docs/agent-output-policy.js +22 -0
  213. package/dist/docs/agent-prose.d.ts +12 -18
  214. package/dist/docs/agent-prose.js +73 -51
  215. package/dist/docs/agent-setup.d.ts +72 -41
  216. package/dist/docs/agent-setup.js +339 -436
  217. package/dist/docs/catalog.d.ts +153 -95
  218. package/dist/docs/catalog.js +163 -48
  219. package/dist/docs/error-docs.d.ts +2098 -1
  220. package/dist/docs/error-docs.js +421 -144
  221. package/dist/docs/index-build.d.ts +0 -1
  222. package/dist/docs/index-build.js +2 -3
  223. package/dist/docs/page-context-prompt.d.ts +77 -0
  224. package/dist/docs/page-context-prompt.js +131 -0
  225. package/dist/docs/reference-urls.d.ts +46 -0
  226. package/dist/docs/reference-urls.js +79 -0
  227. package/dist/docs/search.d.ts +6 -8
  228. package/dist/docs/search.js +10 -13
  229. package/dist/docs/skill-distribution.d.ts +4 -1
  230. package/dist/docs/skill-distribution.js +10 -5
  231. package/dist/docs/skills.d.ts +120 -120
  232. package/dist/docs/skills.js +121 -73
  233. package/dist/docs/start-prompts.d.ts +45 -0
  234. package/dist/docs/start-prompts.js +62 -0
  235. package/dist/domain-exploration.js +9 -13
  236. package/dist/og-template.d.ts +56 -0
  237. package/dist/og-template.js +56 -0
  238. package/dist/slug-policy/index.js +5 -11
  239. package/dist/test-helpers/fetch-stub.js +1 -0
  240. package/dist/utils/browser-credential.d.ts +13 -6
  241. package/dist/utils/browser-credential.js +14 -7
  242. package/dist/utils/build-settings.d.ts +21 -1
  243. package/dist/utils/build-settings.js +133 -15
  244. package/dist/utils/canonical-json.d.ts +3 -5
  245. package/dist/utils/canonical-json.js +4 -5
  246. package/dist/utils/cast-transport.d.ts +5 -17
  247. package/dist/utils/cast-transport.js +6 -19
  248. package/dist/utils/claim-token.js +1 -2
  249. package/dist/utils/comment-avatars.js +4 -6
  250. package/dist/utils/concurrency.js +3 -3
  251. package/dist/utils/content-type.d.ts +7 -6
  252. package/dist/utils/content-type.js +73 -51
  253. package/dist/utils/credential-policy.d.ts +50 -6
  254. package/dist/utils/credential-policy.js +126 -59
  255. package/dist/utils/dns-instructions.js +9 -9
  256. package/dist/utils/egress-policy.fixtures.json +1 -1
  257. package/dist/utils/error-code.js +1 -0
  258. package/dist/utils/generate-space-name.d.ts +3 -8
  259. package/dist/utils/generate-space-name.js +3 -8
  260. package/dist/utils/grant-decision.fixtures.json +2 -2
  261. package/dist/utils/grants.d.ts +0 -1
  262. package/dist/utils/grants.js +7 -8
  263. package/dist/utils/gravatar.d.ts +2 -4
  264. package/dist/utils/gravatar.js +6 -12
  265. package/dist/utils/id-hints.js +14 -23
  266. package/dist/utils/idempotency.d.ts +3 -3
  267. package/dist/utils/idempotency.js +6 -7
  268. package/dist/utils/local-space-state.d.ts +23 -26
  269. package/dist/utils/local-space-state.js +46 -46
  270. package/dist/utils/oauth-signed-query.d.ts +3 -5
  271. package/dist/utils/oauth-signed-query.js +6 -9
  272. package/dist/utils/one-shot-replay.d.ts +7 -6
  273. package/dist/utils/one-shot-replay.js +3 -5
  274. package/dist/utils/page-colors.d.ts +15 -19
  275. package/dist/utils/page-colors.js +23 -45
  276. package/dist/utils/page-fonts.d.ts +1 -1
  277. package/dist/utils/page-fonts.js +8 -20
  278. package/dist/utils/page-preview.d.ts +0 -1
  279. package/dist/utils/page-preview.js +0 -1
  280. package/dist/utils/pages.d.ts +33 -3
  281. package/dist/utils/pages.js +83 -30
  282. package/dist/utils/privacy-regions.d.ts +19 -0
  283. package/dist/utils/privacy-regions.js +91 -0
  284. package/dist/utils/publish-form-data.d.ts +4 -5
  285. package/dist/utils/publish-form-data.js +2 -3
  286. package/dist/utils/publish-policy.d.ts +11 -17
  287. package/dist/utils/publish-policy.fixtures.json +11 -5
  288. package/dist/utils/publish-policy.js +65 -110
  289. package/dist/utils/query-client.d.ts +2 -0
  290. package/dist/utils/query-client.js +10 -1
  291. package/dist/utils/runtime-paths.d.ts +4 -4
  292. package/dist/utils/runtime-paths.js +6 -8
  293. package/dist/utils/runtime-upload.d.ts +9 -0
  294. package/dist/utils/runtime-upload.js +12 -0
  295. package/dist/utils/secure-local-file.d.ts +3 -3
  296. package/dist/utils/secure-local-file.js +23 -40
  297. package/dist/utils/space-config.d.ts +12 -15
  298. package/dist/utils/space-config.js +13 -16
  299. package/dist/utils/static-runtime-policy.d.ts +10 -7
  300. package/dist/utils/static-runtime-policy.fixtures.json +38 -41
  301. package/dist/utils/static-runtime-policy.generated.d.ts +16 -0
  302. package/dist/utils/static-runtime-policy.generated.js +70 -0
  303. package/dist/utils/static-runtime-policy.js +31 -132
  304. package/dist/utils/storage-policy.js +1 -2
  305. package/dist/utils/upload-session.d.ts +4 -1
  306. package/dist/utils/upload-session.js +41 -19
  307. package/dist/utils/version-path.js +11 -19
  308. package/dist/utils/wpcom-auth-redirects.d.ts +5 -14
  309. package/dist/utils/wpcom-auth-redirects.js +1 -4
  310. package/dist/vocabulary.d.ts +13 -13
  311. package/dist/vocabulary.js +52 -27
  312. package/package.json +15 -18
  313. package/dist/agents/client-registry.d.ts +0 -22
  314. package/dist/agents/client-registry.js +0 -41
  315. package/dist/docs/agent-handoff-document.d.ts +0 -15
  316. package/dist/docs/agent-handoff-document.js +0 -180
  317. package/dist/docs/agent-solutions.d.ts +0 -110
  318. package/dist/docs/agent-solutions.js +0 -183
  319. package/dist/utils/query-keys.d.ts +0 -84
  320. package/dist/utils/query-keys.js +0 -108
@@ -12,7 +12,7 @@ export type PlanCode = z.infer<typeof planCodeSchema>;
12
12
  export declare const DEFAULT_PLAN_CODE: PlanCode;
13
13
  export declare const SELF_SERVE_PLAN_CODES: readonly ["personal", "work"];
14
14
  export declare const PUBLIC_PLAN_CODES: readonly ["free", "personal", "work", "enterprise"];
15
- export declare const FEATURE_KEYS: readonly ("zero" | "plans.paid.available" | "anonymous.publishing" | "beta.enrollment_gate" | "domains.search" | "domains.registration" | "domains.dns_management" | "domains.wpcom_dns" | "domains.domain_connect" | "domains.proxy_bindings" | "collab.notices" | "collab.drawing" | "sites.dedicated_runtime" | "shelf" | "tags" | "functions" | "spaces.slug_rename")[];
15
+ export declare const FEATURE_KEYS: readonly ("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")[];
16
16
  export declare const featureKeySchema: z.ZodEnum<{
17
17
  zero: "zero";
18
18
  "plans.paid.available": "plans.paid.available";
@@ -25,12 +25,15 @@ export declare const featureKeySchema: z.ZodEnum<{
25
25
  "domains.domain_connect": "domains.domain_connect";
26
26
  "domains.proxy_bindings": "domains.proxy_bindings";
27
27
  "collab.notices": "collab.notices";
28
- "collab.drawing": "collab.drawing";
28
+ "collab.comments": "collab.comments";
29
+ "content.managed": "content.managed";
29
30
  "sites.dedicated_runtime": "sites.dedicated_runtime";
30
- shelf: "shelf";
31
+ "collab.drawing": "collab.drawing";
31
32
  tags: "tags";
32
33
  functions: "functions";
33
34
  "spaces.slug_rename": "spaces.slug_rename";
35
+ "pages.templates": "pages.templates";
36
+ "branding.hide": "branding.hide";
34
37
  }>;
35
38
  export type FeatureKey = RuntimeFeatureKey;
36
39
  export declare const FEATURE_OVERRIDE_STATES: readonly ["enabled", "disabled", "kill_switch"];
@@ -110,9 +113,9 @@ export declare const teamEntitlementsResponseSchema: z.ZodObject<{
110
113
  runtimePhpWorkers: z.ZodNumber;
111
114
  versionDiagnosticsIncluded: z.ZodBoolean;
112
115
  limits: z.ZodObject<{
116
+ storageBytes: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
113
117
  teamMembers: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
114
118
  subTeams: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
115
- storageBytes: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
116
119
  externalDomainGroups: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
117
120
  maxFileBytes: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
118
121
  maxVersionFiles: z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"unlimited">]>;
@@ -143,12 +146,15 @@ export type PlanDefinition = {
143
146
  externalProxy: boolean;
144
147
  /** Paid full-page takeover templates under _pages/. */
145
148
  pagesTemplates: boolean;
146
- /** Paid removal of the tasteful Spacefast badge from designed defaults. */
149
+ /** Paid removal of the Spacefast badge from designed defaults. */
147
150
  hideSpacefastBranding: boolean;
148
151
  runtimePhpWorkers: number;
149
152
  };
150
153
  export type FeatureDefinition = RuntimeFeatureDefinition;
151
- export declare const PLAN_DEFINITIONS: Record<PlanCode, PlanDefinition>;
154
+ type PlanCatalog = {
155
+ [Code in PlanCode]: PlanDefinition;
156
+ };
157
+ export declare const PLAN_DEFINITIONS: PlanCatalog;
152
158
  export declare const FEATURE_DEFINITIONS: Readonly<{
153
159
  readonly zero: {
154
160
  readonly key: "zero";
@@ -260,8 +266,18 @@ export declare const FEATURE_DEFINITIONS: Readonly<{
260
266
  readonly enabledForA8c: boolean;
261
267
  readonly planDefaults: Readonly<Partial<Record<PlanCode, boolean>>>;
262
268
  };
263
- readonly "collab.drawing": {
264
- readonly key: "collab.drawing";
269
+ readonly "collab.comments": {
270
+ readonly key: "collab.comments";
271
+ readonly name: string;
272
+ readonly description: string;
273
+ readonly defaultEnabled: boolean;
274
+ } & {
275
+ readonly enabledInDevelopment?: boolean;
276
+ readonly enabledForA8c: boolean;
277
+ readonly planDefaults: Readonly<Partial<Record<PlanCode, boolean>>>;
278
+ };
279
+ readonly "content.managed": {
280
+ readonly key: "content.managed";
265
281
  readonly name: string;
266
282
  readonly description: string;
267
283
  readonly defaultEnabled: boolean;
@@ -280,8 +296,8 @@ export declare const FEATURE_DEFINITIONS: Readonly<{
280
296
  readonly enabledForA8c: boolean;
281
297
  readonly planDefaults: Readonly<Partial<Record<PlanCode, boolean>>>;
282
298
  };
283
- readonly shelf: {
284
- readonly key: "shelf";
299
+ readonly "collab.drawing": {
300
+ readonly key: "collab.drawing";
285
301
  readonly name: string;
286
302
  readonly description: string;
287
303
  readonly defaultEnabled: boolean;
@@ -320,12 +336,33 @@ export declare const FEATURE_DEFINITIONS: Readonly<{
320
336
  readonly enabledForA8c: boolean;
321
337
  readonly planDefaults: Readonly<Partial<Record<PlanCode, boolean>>>;
322
338
  };
339
+ readonly "pages.templates": {
340
+ readonly key: "pages.templates";
341
+ readonly name: string;
342
+ readonly description: string;
343
+ readonly defaultEnabled: boolean;
344
+ } & {
345
+ readonly enabledInDevelopment?: boolean;
346
+ readonly enabledForA8c: boolean;
347
+ readonly planDefaults: Readonly<Partial<Record<PlanCode, boolean>>>;
348
+ };
349
+ readonly "branding.hide": {
350
+ readonly key: "branding.hide";
351
+ readonly name: string;
352
+ readonly description: string;
353
+ readonly defaultEnabled: boolean;
354
+ } & {
355
+ readonly enabledInDevelopment?: boolean;
356
+ readonly enabledForA8c: boolean;
357
+ readonly planDefaults: Readonly<Partial<Record<PlanCode, boolean>>>;
358
+ };
323
359
  }>;
324
360
  export declare const featureStateSourceSchema: z.ZodEnum<{
325
361
  default: "default";
326
362
  override: "override";
327
- kill_switch: "kill_switch";
328
363
  env: "env";
364
+ kill_switch: "kill_switch";
365
+ dependency: "dependency";
329
366
  }>;
330
367
  export declare const FeatureStateSchema: z.ZodObject<{
331
368
  key: z.ZodEnum<{
@@ -340,19 +377,23 @@ export declare const FeatureStateSchema: z.ZodObject<{
340
377
  "domains.domain_connect": "domains.domain_connect";
341
378
  "domains.proxy_bindings": "domains.proxy_bindings";
342
379
  "collab.notices": "collab.notices";
343
- "collab.drawing": "collab.drawing";
380
+ "collab.comments": "collab.comments";
381
+ "content.managed": "content.managed";
344
382
  "sites.dedicated_runtime": "sites.dedicated_runtime";
345
- shelf: "shelf";
383
+ "collab.drawing": "collab.drawing";
346
384
  tags: "tags";
347
385
  functions: "functions";
348
386
  "spaces.slug_rename": "spaces.slug_rename";
387
+ "pages.templates": "pages.templates";
388
+ "branding.hide": "branding.hide";
349
389
  }>;
350
390
  enabled: z.ZodBoolean;
351
391
  source: z.ZodEnum<{
352
392
  default: "default";
353
393
  override: "override";
354
- kill_switch: "kill_switch";
355
394
  env: "env";
395
+ kill_switch: "kill_switch";
396
+ dependency: "dependency";
356
397
  }>;
357
398
  }, z.core.$strip>;
358
399
  export declare const FeatureStateResponseSchema: z.ZodObject<{
@@ -375,12 +416,15 @@ export declare const FeatureStateResponseSchema: z.ZodObject<{
375
416
  "domains.domain_connect": "domains.domain_connect";
376
417
  "domains.proxy_bindings": "domains.proxy_bindings";
377
418
  "collab.notices": "collab.notices";
378
- "collab.drawing": "collab.drawing";
419
+ "collab.comments": "collab.comments";
420
+ "content.managed": "content.managed";
379
421
  "sites.dedicated_runtime": "sites.dedicated_runtime";
380
- shelf: "shelf";
422
+ "collab.drawing": "collab.drawing";
381
423
  tags: "tags";
382
424
  functions: "functions";
383
425
  "spaces.slug_rename": "spaces.slug_rename";
426
+ "pages.templates": "pages.templates";
427
+ "branding.hide": "branding.hide";
384
428
  }>, z.ZodObject<{
385
429
  key: z.ZodEnum<{
386
430
  zero: "zero";
@@ -394,19 +438,23 @@ export declare const FeatureStateResponseSchema: z.ZodObject<{
394
438
  "domains.domain_connect": "domains.domain_connect";
395
439
  "domains.proxy_bindings": "domains.proxy_bindings";
396
440
  "collab.notices": "collab.notices";
397
- "collab.drawing": "collab.drawing";
441
+ "collab.comments": "collab.comments";
442
+ "content.managed": "content.managed";
398
443
  "sites.dedicated_runtime": "sites.dedicated_runtime";
399
- shelf: "shelf";
444
+ "collab.drawing": "collab.drawing";
400
445
  tags: "tags";
401
446
  functions: "functions";
402
447
  "spaces.slug_rename": "spaces.slug_rename";
448
+ "pages.templates": "pages.templates";
449
+ "branding.hide": "branding.hide";
403
450
  }>;
404
451
  enabled: z.ZodBoolean;
405
452
  source: z.ZodEnum<{
406
453
  default: "default";
407
454
  override: "override";
408
- kill_switch: "kill_switch";
409
455
  env: "env";
456
+ kill_switch: "kill_switch";
457
+ dependency: "dependency";
410
458
  }>;
411
459
  }, z.core.$strip>>;
412
460
  }, z.core.$strip>;
@@ -419,3 +467,4 @@ export declare function planLimitNumber(value: PlanLimitValue): number | null;
419
467
  /** Extra editor quantity billed on a paid Stripe subscription. */
420
468
  export declare function extraSeatQuantity(editorMemberships: number, includedSeats: number | "unlimited"): number;
421
469
  export declare function planPriceUsd(plan: PlanDefinition, interval: "monthly" | "yearly"): number | null;
470
+ export {};
@@ -1,7 +1,9 @@
1
1
  import { z } from "zod";
2
2
  import { FEATURE_RUNTIME_DEFINITIONS, FEATURE_RUNTIME_KEYS, } from "./feature-lifecycle.js";
3
- // Spec plan vocabulary (internal-docs/platform.md "Plans And Limits").
4
- // `enterprise` and `internal` are named plans without self-serve pricing.
3
+ // Spec plan vocabulary (the platform spec "Plans And Limits"). `enterprise` and
4
+ // `internal` have no self-serve pricing. Codes never change with marketing
5
+ // renames: `personal` sells as "Plus", `work` as "Pro". Display names live on
6
+ // PlanDefinition.name.
5
7
  export const PLAN_CODES = ["free", "personal", "work", "enterprise", "internal"];
6
8
  export const planCodeSchema = z.enum(PLAN_CODES).describe("Plan code.");
7
9
  export const DEFAULT_PLAN_CODE = "free";
@@ -21,7 +23,7 @@ export const featureOverrideStateSchema = z.enum(FEATURE_OVERRIDE_STATES);
21
23
  export const planLimitValueSchema = z
22
24
  .union([z.number().int().nonnegative(), z.literal("unlimited")])
23
25
  .describe('Plan limit value; "unlimited" when the plan does not limit this axis.');
24
- // Named plan limit table (internal-docs/platform.md "Plans And Limits",
26
+ // Named plan limit table (the platform spec "Plans And Limits",
25
27
  // Free/Personal/Work columns verbatim). Keys mirror `PlanPolicyResponse.limits`
26
28
  // so plan policy is a projection of this data, never a re-derivation.
27
29
  export const planLimitsSchema = z
@@ -30,13 +32,12 @@ export const planLimitsSchema = z
30
32
  teamMembers: planLimitValueSchema,
31
33
  subTeams: planLimitValueSchema,
32
34
  externalDomainGroups: planLimitValueSchema,
33
- // Per-space daily bandwidth cap feeding the egress kill-switch sweep
34
- // (internal-docs/platform.md "Abuse Posture"; internal plan data never on
35
- // the PlanPolicyResponse wire shape). WORST_CASE_QUOTAS
36
- // .maxEgressBytesPerSpacePerDay stays the absolute platform ceiling.
35
+ // Per-space daily bandwidth cap feeding the egress kill-switch sweep.
36
+ // Internal plan data, never on the PlanPolicyResponse wire shape;
37
+ // WORST_CASE_QUOTAS.maxEgressBytesPerSpacePerDay stays the platform ceiling.
37
38
  egressBytesPerDay: planLimitValueSchema,
38
39
  maxFileBytes: planLimitValueSchema,
39
- // Files per version. Plan policy may LOWER the 100k contract ceiling
40
+ // Files per version. Plan policy may lower the 100k contract ceiling
40
41
  // (Free 20,000), never raise it; the validator clamps at the ceiling.
41
42
  maxVersionFiles: planLimitValueSchema,
42
43
  routingRules: planLimitValueSchema,
@@ -47,7 +48,7 @@ export const planLimitsSchema = z
47
48
  // Access-surface abuse ceilings: generous by default, enterprise unlimited.
48
49
  // Active (non-revoked, non-expired) share links per space.
49
50
  shareLinksPerSpace: planLimitValueSchema,
50
- // Active invites per space (§5.3 enforced when invites land).
51
+ // Active invites per space (§5.3; enforced when invites land).
51
52
  invitesPerSpace: planLimitValueSchema,
52
53
  // Invite emails per space / per account, daily (§5.3 abuse posture).
53
54
  inviteEmailsPerSpaceDaily: planLimitValueSchema,
@@ -56,17 +57,14 @@ export const planLimitsSchema = z
56
57
  pendingAccessRequestsPerSpace: planLimitValueSchema,
57
58
  })
58
59
  .describe("Named plan limit table.");
59
- // Resolved team entitlements: plan limits after add-on grants plus the
60
- // capability dials that are not number|"unlimited" limits. Served by
61
- // `GET /v1/teams/{teamId}/entitlements`.
60
+ // Served by `GET /v1/teams/{teamId}/entitlements`. The capability dials are the
61
+ // entitlements that are not number|"unlimited" limits.
62
62
  export const teamEntitlementsSchema = z
63
63
  .object({
64
64
  planCode: planCodeSchema,
65
65
  limits: planLimitsSchema,
66
66
  externalProxy: z.boolean().describe("Whether external proxy upstreams compile on this plan."),
67
- dedicatedRuntime: z
68
- .literal(true)
69
- .describe("Dedicated runtime availability. Every team receives its own runtime site."),
67
+ dedicatedRuntime: z.literal(true).describe("Every team receives its own runtime site."),
70
68
  pagesTemplates: z
71
69
  .boolean()
72
70
  .describe("Whether _pages/*.html full-page takeovers compile for this team."),
@@ -79,9 +77,8 @@ export const teamEntitlementsSchema = z
79
77
  .describe("Whether version diagnostics are included with the plan."),
80
78
  })
81
79
  .describe("Resolved entitlements for a team: plan limits after add-on grants.");
82
- // Wire projection of TeamEntitlements for GET /v1/teams/{teamId}/entitlements.
83
- // `egressBytesPerDay` (abuse posture) is internal plan data never on a wire
84
- // shape, mirroring PlanPolicyResponse's deliberate exclusion.
80
+ // Wire projection of TeamEntitlements. `egressBytesPerDay` is internal
81
+ // abuse-posture data and never on a wire shape, mirroring PlanPolicyResponse.
85
82
  export const teamEntitlementsResponseSchema = teamEntitlementsSchema
86
83
  .extend({
87
84
  limits: planLimitsSchema.omit({
@@ -110,9 +107,8 @@ const UNLIMITED_LIMITS = {
110
107
  inviteEmailsPerAccountDaily: "unlimited",
111
108
  pendingAccessRequestsPerSpace: "unlimited",
112
109
  };
113
- // The §5.1 access abuse-ceiling table (X-40): applied verbatim to every
114
- // self-serve plan; enterprise/internal stay unlimited. These sit far above
115
- // honest use — they are abuse ceilings, not upsell levers.
110
+ // The §5.1 access abuse-ceiling table, applied verbatim to every self-serve
111
+ // plan; enterprise/internal stay unlimited. Abuse ceilings, not upsell levers.
116
112
  const ACCESS_QUOTA_DEFAULTS = {
117
113
  shareLinksPerSpace: 100,
118
114
  invitesPerSpace: 500,
@@ -126,11 +122,13 @@ export const PLAN_DEFINITIONS = {
126
122
  name: "Free",
127
123
  monthlyPriceUsd: 0,
128
124
  yearlyPriceUsd: 0,
129
- includedSeats: 3,
125
+ // Free is single-player: the owner is the only editor. Reviewers and
126
+ // agent principals are not seats.
127
+ includedSeats: 1,
130
128
  extraSeatPriceUsd: null,
131
129
  limits: {
132
- storageBytes: 5 * GB,
133
- teamMembers: 3,
130
+ storageBytes: 10 * GB,
131
+ teamMembers: 1,
134
132
  subTeams: 0,
135
133
  externalDomainGroups: 3,
136
134
  egressBytesPerDay: 100 * GB, // = worst-case ceiling; tunable per plan
@@ -149,15 +147,17 @@ export const PLAN_DEFINITIONS = {
149
147
  },
150
148
  personal: {
151
149
  code: "personal",
152
- name: "Personal",
153
- monthlyPriceUsd: 5,
154
- yearlyPriceUsd: 60,
155
- includedSeats: 5,
156
- extraSeatPriceUsd: { monthly: 1, yearly: 12 },
150
+ name: "Plus",
151
+ monthlyPriceUsd: 4.99,
152
+ yearlyPriceUsd: 49.99,
153
+ includedSeats: 3,
154
+ // Each paid seat also raises usage limits (builds, domains, emails,
155
+ // versions) via additive grants. The seat price is not access alone.
156
+ extraSeatPriceUsd: { monthly: 4.99, yearly: 49.99 },
157
157
  limits: {
158
158
  ...UNLIMITED_LIMITS,
159
- storageBytes: 20 * GB,
160
- teamMembers: 5,
159
+ storageBytes: 50 * GB,
160
+ teamMembers: 3,
161
161
  subTeams: 0,
162
162
  externalDomainGroups: 10,
163
163
  maxFileBytes: 1 * GB,
@@ -174,18 +174,18 @@ export const PLAN_DEFINITIONS = {
174
174
  },
175
175
  work: {
176
176
  code: "work",
177
- name: "Work",
178
- monthlyPriceUsd: 15,
179
- yearlyPriceUsd: 180,
180
- includedSeats: 15,
181
- extraSeatPriceUsd: { monthly: 1, yearly: 12 },
177
+ name: "Pro",
178
+ monthlyPriceUsd: 49.99,
179
+ yearlyPriceUsd: 499,
180
+ includedSeats: 10,
181
+ extraSeatPriceUsd: { monthly: 4.99, yearly: 49.99 },
182
182
  limits: {
183
183
  ...UNLIMITED_LIMITS,
184
- storageBytes: 50 * GB,
184
+ storageBytes: 200 * GB,
185
185
  // The catalog keeps the included quantity numeric for display and seat
186
186
  // billing. An active paid Stripe source lifts admission separately so
187
187
  // editors beyond this number can be added and reconciled automatically.
188
- teamMembers: 15,
188
+ teamMembers: 10,
189
189
  subTeams: 0,
190
190
  ...ACCESS_QUOTA_DEFAULTS,
191
191
  },
@@ -194,7 +194,7 @@ export const PLAN_DEFINITIONS = {
194
194
  hideSpacefastBranding: true,
195
195
  runtimePhpWorkers: 4,
196
196
  },
197
- // Footnote-only publicly ("custom talk to us"); manual grant, never self-serve.
197
+ // Footnote-only publicly ("custom, talk to us"); manual grant, never self-serve.
198
198
  enterprise: {
199
199
  code: "enterprise",
200
200
  name: "Enterprise",
@@ -224,9 +224,10 @@ export const PLAN_DEFINITIONS = {
224
224
  };
225
225
  export const FEATURE_DEFINITIONS = FEATURE_RUNTIME_DEFINITIONS;
226
226
  export const featureStateSourceSchema = z
227
- .enum(["kill_switch", "env", "override", "default"])
227
+ .enum(["kill_switch", "env", "override", "default", "dependency"])
228
228
  .describe("Layer that decides the flag: kill_switch (emergency off), env (SPACEFAST_FLAG_* variable), " +
229
- "override (feature_overrides row), default (plan/code default).");
229
+ "override (feature_overrides row), default (plan/code default), dependency (a required " +
230
+ "feature is off).");
230
231
  export const FeatureStateSchema = z.object({
231
232
  key: featureKeySchema,
232
233
  enabled: z.boolean().describe("Whether the feature is enabled for the requesting actor."),