@spacefast/common 0.0.26 → 0.2.2

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 (302) hide show
  1. package/dist/agents/connect-targets.d.ts +6 -146
  2. package/dist/agents/connect-targets.js +63 -295
  3. package/dist/agents/private-key-oauth.d.ts +31 -1
  4. package/dist/agents/private-key-oauth.js +124 -33
  5. package/dist/agents/registry/core.d.ts +292 -0
  6. package/dist/agents/registry/core.js +1388 -0
  7. package/dist/agents/registry/deeplink-probes.d.ts +23 -0
  8. package/dist/agents/registry/deeplink-probes.js +18 -0
  9. package/dist/agents/registry/node.d.ts +56 -0
  10. package/dist/agents/registry/node.js +339 -0
  11. package/dist/brand-assets-build.js +1 -2
  12. package/dist/brand-assets.js +4 -7
  13. package/dist/brand.d.ts +17 -0
  14. package/dist/brand.js +24 -4
  15. package/dist/config/domains.d.ts +55 -28
  16. package/dist/config/domains.js +85 -41
  17. package/dist/config/index.js +1 -2
  18. package/dist/contracts/abuse.js +9 -24
  19. package/dist/contracts/access-profiles.d.ts +86 -0
  20. package/dist/contracts/access-profiles.js +89 -0
  21. package/dist/contracts/access.d.ts +21 -27
  22. package/dist/contracts/access.js +33 -64
  23. package/dist/contracts/activity.d.ts +18 -1
  24. package/dist/contracts/activity.js +70 -26
  25. package/dist/contracts/analytics.js +8 -10
  26. package/dist/contracts/api-keys.d.ts +77 -52
  27. package/dist/contracts/api-keys.js +44 -24
  28. package/dist/contracts/application-journal.d.ts +216 -0
  29. package/dist/contracts/application-journal.js +167 -0
  30. package/dist/contracts/auth.d.ts +90 -17
  31. package/dist/contracts/auth.js +86 -17
  32. package/dist/contracts/beta.d.ts +9 -4
  33. package/dist/contracts/beta.js +20 -16
  34. package/dist/contracts/billing.js +7 -11
  35. package/dist/contracts/bootstrap.d.ts +791 -0
  36. package/dist/contracts/bootstrap.js +51 -0
  37. package/dist/contracts/builds.d.ts +192 -7
  38. package/dist/contracts/builds.js +84 -21
  39. package/dist/contracts/channels.d.ts +43 -0
  40. package/dist/contracts/channels.js +25 -9
  41. package/dist/contracts/cli.d.ts +7 -0
  42. package/dist/contracts/cli.js +6 -0
  43. package/dist/contracts/collab-public.d.ts +1 -1
  44. package/dist/contracts/collab-public.js +5 -8
  45. package/dist/contracts/comments.d.ts +45 -35
  46. package/dist/contracts/comments.js +107 -77
  47. package/dist/contracts/commerce.d.ts +165 -0
  48. package/dist/contracts/commerce.js +146 -0
  49. package/dist/contracts/common.d.ts +3 -3
  50. package/dist/contracts/common.js +18 -29
  51. package/dist/contracts/content-contract-verification.d.ts +521 -0
  52. package/dist/contracts/content-contract-verification.js +320 -0
  53. package/dist/contracts/content-platform-fixture.d.ts +1278 -0
  54. package/dist/contracts/content-platform-fixture.js +44 -0
  55. package/dist/contracts/content-program.d.ts +994 -0
  56. package/dist/contracts/content-program.js +658 -0
  57. package/dist/contracts/content-sync.d.ts +290 -0
  58. package/dist/contracts/content-sync.js +167 -0
  59. package/dist/contracts/content.d.ts +432 -0
  60. package/dist/contracts/content.js +303 -0
  61. package/dist/contracts/continuation.d.ts +17 -1
  62. package/dist/contracts/continuation.js +23 -23
  63. package/dist/contracts/countries.js +3 -4
  64. package/dist/contracts/crons.d.ts +17 -0
  65. package/dist/contracts/crons.js +33 -15
  66. package/dist/contracts/dashboard-prefs.d.ts +56 -0
  67. package/dist/contracts/dashboard-prefs.js +51 -0
  68. package/dist/contracts/device-auth.d.ts +234 -37
  69. package/dist/contracts/device-auth.js +267 -53
  70. package/dist/contracts/docs.d.ts +6 -10
  71. package/dist/contracts/docs.js +5 -13
  72. package/dist/contracts/domains.d.ts +499 -102
  73. package/dist/contracts/domains.js +169 -58
  74. package/dist/contracts/email-preferences.d.ts +3 -3
  75. package/dist/contracts/email-preferences.js +6 -7
  76. package/dist/contracts/enums.d.ts +26 -26
  77. package/dist/contracts/enums.js +61 -54
  78. package/dist/contracts/error-code-meta.d.ts +273 -7
  79. package/dist/contracts/error-code-meta.js +81 -5
  80. package/dist/contracts/error-codes.d.ts +5 -5
  81. package/dist/contracts/error-codes.js +79 -16
  82. package/dist/contracts/events.d.ts +100 -20
  83. package/dist/contracts/events.js +107 -20
  84. package/dist/contracts/execution.d.ts +47 -66
  85. package/dist/contracts/execution.js +51 -64
  86. package/dist/contracts/feature-lifecycle.d.ts +70 -14
  87. package/dist/contracts/feature-lifecycle.js +86 -15
  88. package/dist/contracts/features.d.ts +100 -37
  89. package/dist/contracts/features.js +21 -27
  90. package/dist/contracts/fixtures/content-platform-v1.json +1108 -0
  91. package/dist/contracts/frame-session.d.ts +192 -0
  92. package/dist/contracts/frame-session.js +164 -0
  93. package/dist/contracts/functions.d.ts +218 -211
  94. package/dist/contracts/functions.js +273 -260
  95. package/dist/contracts/grant-copy.d.ts +43 -0
  96. package/dist/contracts/grant-copy.js +44 -0
  97. package/dist/contracts/grants.d.ts +64 -56
  98. package/dist/contracts/grants.js +124 -23
  99. package/dist/contracts/ids.d.ts +4 -1
  100. package/dist/contracts/ids.js +4 -1
  101. package/dist/contracts/internal.d.ts +5 -4
  102. package/dist/contracts/internal.js +12 -3
  103. package/dist/contracts/mcp.d.ts +17 -0
  104. package/dist/contracts/mcp.js +23 -0
  105. package/dist/contracts/me.d.ts +6 -1
  106. package/dist/contracts/me.js +12 -6
  107. package/dist/contracts/notifications.d.ts +27 -29
  108. package/dist/contracts/notifications.js +9 -4
  109. package/dist/contracts/oauth-resources.d.ts +121 -10
  110. package/dist/contracts/oauth-resources.js +130 -11
  111. package/dist/contracts/oauth-scope-actions.d.ts +90 -0
  112. package/dist/contracts/oauth-scope-actions.js +126 -0
  113. package/dist/contracts/operations.d.ts +27 -4
  114. package/dist/contracts/operations.js +11 -5
  115. package/dist/contracts/pages.d.ts +29 -5
  116. package/dist/contracts/pages.js +22 -5
  117. package/dist/contracts/partner-notifications.d.ts +3 -0
  118. package/dist/contracts/partner-notifications.js +65 -0
  119. package/dist/contracts/{platform.d.ts → partner.d.ts} +29 -42
  120. package/dist/contracts/{platform.js → partner.js} +27 -40
  121. package/dist/contracts/plan-policy.d.ts +1 -1
  122. package/dist/contracts/principal-assertion.d.ts +43 -0
  123. package/dist/contracts/principal-assertion.js +67 -0
  124. package/dist/contracts/principals.d.ts +73 -0
  125. package/dist/contracts/principals.js +59 -0
  126. package/dist/contracts/privacy.d.ts +11 -0
  127. package/dist/contracts/privacy.js +17 -0
  128. package/dist/contracts/problem-document.js +3 -4
  129. package/dist/contracts/publish-archive.d.ts +116 -18
  130. package/dist/contracts/publish-archive.js +6 -3
  131. package/dist/contracts/push-new.d.ts +4 -4
  132. package/dist/contracts/quotas.js +3 -3
  133. package/dist/contracts/realtime.d.ts +52 -0
  134. package/dist/contracts/realtime.js +54 -0
  135. package/dist/contracts/repository-connections.d.ts +1 -1
  136. package/dist/contracts/repository-connections.js +6 -2
  137. package/dist/contracts/resources.d.ts +105 -14
  138. package/dist/contracts/resources.js +145 -21
  139. package/dist/contracts/route-inventory.d.ts +358 -0
  140. package/dist/contracts/route-inventory.js +141 -0
  141. package/dist/contracts/runtime-api.d.ts +112 -35
  142. package/dist/contracts/runtime-api.js +86 -66
  143. package/dist/contracts/runtime-app.d.ts +11 -21
  144. package/dist/contracts/runtime-app.js +39 -24
  145. package/dist/contracts/runtime-components.d.ts +143 -0
  146. package/dist/contracts/runtime-components.js +199 -0
  147. package/dist/contracts/runtime-db.d.ts +45 -19
  148. package/dist/contracts/runtime-db.js +85 -20
  149. package/dist/contracts/runtime-purge.js +3 -5
  150. package/dist/contracts/runtime-services.d.ts +43 -75
  151. package/dist/contracts/runtime-services.js +29 -49
  152. package/dist/contracts/runtime-storage.d.ts +14 -14
  153. package/dist/contracts/runtime-storage.js +28 -13
  154. package/dist/contracts/sf-config-v1.d.ts +14 -18
  155. package/dist/contracts/slugs.js +13 -4
  156. package/dist/contracts/space-config.d.ts +235 -28
  157. package/dist/contracts/space-config.js +246 -91
  158. package/dist/contracts/spaces.d.ts +360 -255
  159. package/dist/contracts/spaces.js +190 -122
  160. package/dist/contracts/superadmin-activity.d.ts +3 -43
  161. package/dist/contracts/superadmin-activity.js +6 -30
  162. package/dist/contracts/superadmin-emails.d.ts +1 -0
  163. package/dist/contracts/superadmin-emails.js +17 -1
  164. package/dist/contracts/superadmin-runtime.d.ts +199 -0
  165. package/dist/contracts/superadmin-runtime.js +141 -0
  166. package/dist/contracts/superadmin-search.d.ts +22 -2
  167. package/dist/contracts/superadmin-search.js +14 -6
  168. package/dist/contracts/superadmin-spaces.d.ts +435 -186
  169. package/dist/contracts/superadmin-spaces.js +131 -25
  170. package/dist/contracts/superadmin-teams.d.ts +3 -0
  171. package/dist/contracts/superadmin-teams.js +1 -2
  172. package/dist/contracts/superadmin-tenants.d.ts +627 -6
  173. package/dist/contracts/superadmin-tenants.js +32 -7
  174. package/dist/contracts/superadmin.d.ts +98 -16
  175. package/dist/contracts/superadmin.js +63 -10
  176. package/dist/contracts/tags.d.ts +85 -58
  177. package/dist/contracts/tags.js +44 -34
  178. package/dist/contracts/teams.d.ts +72 -9
  179. package/dist/contracts/teams.js +84 -25
  180. package/dist/contracts/tenants.d.ts +135 -0
  181. package/dist/contracts/tenants.js +120 -0
  182. package/dist/contracts/test-triggers.d.ts +70 -0
  183. package/dist/contracts/test-triggers.js +116 -0
  184. package/dist/contracts/theme-json.js +3 -8
  185. package/dist/contracts/transfers.d.ts +1 -0
  186. package/dist/contracts/transfers.js +1 -0
  187. package/dist/contracts/usage.d.ts +209 -0
  188. package/dist/contracts/usage.js +124 -12
  189. package/dist/contracts/variables.d.ts +2 -2
  190. package/dist/contracts/variables.js +9 -13
  191. package/dist/contracts/webhooks.d.ts +13 -5
  192. package/dist/contracts/webhooks.js +3 -1
  193. package/dist/contracts/zero.d.ts +57 -64
  194. package/dist/contracts/zero.js +68 -66
  195. package/dist/dashboard-paths/index.d.ts +24 -21
  196. package/dist/dashboard-paths/index.js +35 -47
  197. package/dist/dashboard-paths/route-reservations.generated.d.ts +2 -0
  198. package/dist/dashboard-paths/route-reservations.generated.js +36 -0
  199. package/dist/docs/agent-arrival.d.ts +92 -0
  200. package/dist/docs/agent-arrival.js +227 -0
  201. package/dist/docs/agent-output-policy.d.ts +6 -0
  202. package/dist/docs/agent-output-policy.js +22 -0
  203. package/dist/docs/agent-prose.d.ts +11 -17
  204. package/dist/docs/agent-prose.js +62 -37
  205. package/dist/docs/agent-setup.d.ts +72 -41
  206. package/dist/docs/agent-setup.js +336 -436
  207. package/dist/docs/catalog.d.ts +147 -89
  208. package/dist/docs/catalog.js +157 -42
  209. package/dist/docs/error-docs.d.ts +2102 -1
  210. package/dist/docs/error-docs.js +285 -16
  211. package/dist/docs/index-build.d.ts +0 -1
  212. package/dist/docs/index-build.js +2 -3
  213. package/dist/docs/page-context-prompt.d.ts +77 -0
  214. package/dist/docs/page-context-prompt.js +131 -0
  215. package/dist/docs/reference-urls.d.ts +46 -0
  216. package/dist/docs/reference-urls.js +79 -0
  217. package/dist/docs/search.d.ts +6 -8
  218. package/dist/docs/search.js +10 -13
  219. package/dist/docs/skill-distribution.d.ts +4 -1
  220. package/dist/docs/skill-distribution.js +10 -5
  221. package/dist/docs/skills.d.ts +117 -117
  222. package/dist/docs/skills.js +120 -72
  223. package/dist/docs/start-prompts.d.ts +45 -0
  224. package/dist/docs/start-prompts.js +62 -0
  225. package/dist/domain-exploration.js +9 -13
  226. package/dist/og-template.d.ts +56 -0
  227. package/dist/og-template.js +56 -0
  228. package/dist/slug-policy/index.js +5 -11
  229. package/dist/utils/browser-credential.d.ts +13 -6
  230. package/dist/utils/browser-credential.js +14 -7
  231. package/dist/utils/build-settings.d.ts +16 -0
  232. package/dist/utils/build-settings.js +63 -17
  233. package/dist/utils/canonical-json.d.ts +3 -5
  234. package/dist/utils/canonical-json.js +3 -5
  235. package/dist/utils/cast-transport.d.ts +5 -17
  236. package/dist/utils/cast-transport.js +6 -19
  237. package/dist/utils/claim-token.js +1 -2
  238. package/dist/utils/comment-avatars.js +4 -6
  239. package/dist/utils/concurrency.js +2 -3
  240. package/dist/utils/content-type.d.ts +7 -6
  241. package/dist/utils/content-type.js +73 -51
  242. package/dist/utils/credential-policy.d.ts +50 -6
  243. package/dist/utils/credential-policy.js +123 -57
  244. package/dist/utils/egress-policy.fixtures.json +1 -1
  245. package/dist/utils/generate-space-name.d.ts +3 -8
  246. package/dist/utils/generate-space-name.js +3 -8
  247. package/dist/utils/grants.d.ts +0 -1
  248. package/dist/utils/grants.js +4 -7
  249. package/dist/utils/gravatar.d.ts +2 -4
  250. package/dist/utils/gravatar.js +6 -12
  251. package/dist/utils/id-hints.js +14 -23
  252. package/dist/utils/idempotency.d.ts +3 -3
  253. package/dist/utils/idempotency.js +6 -7
  254. package/dist/utils/local-space-state.d.ts +15 -15
  255. package/dist/utils/local-space-state.js +34 -23
  256. package/dist/utils/oauth-signed-query.d.ts +3 -5
  257. package/dist/utils/oauth-signed-query.js +6 -9
  258. package/dist/utils/one-shot-replay.d.ts +3 -5
  259. package/dist/utils/one-shot-replay.js +3 -5
  260. package/dist/utils/page-colors.d.ts +4 -10
  261. package/dist/utils/page-colors.js +11 -35
  262. package/dist/utils/page-fonts.js +6 -11
  263. package/dist/utils/page-preview.d.ts +0 -1
  264. package/dist/utils/page-preview.js +0 -1
  265. package/dist/utils/pages.d.ts +22 -11
  266. package/dist/utils/pages.js +70 -30
  267. package/dist/utils/privacy-regions.d.ts +19 -0
  268. package/dist/utils/privacy-regions.js +91 -0
  269. package/dist/utils/publish-form-data.d.ts +4 -5
  270. package/dist/utils/publish-form-data.js +2 -3
  271. package/dist/utils/publish-policy.d.ts +10 -23
  272. package/dist/utils/publish-policy.js +63 -116
  273. package/dist/utils/query-client.d.ts +2 -0
  274. package/dist/utils/query-client.js +10 -1
  275. package/dist/utils/runtime-paths.d.ts +4 -4
  276. package/dist/utils/runtime-paths.js +6 -8
  277. package/dist/utils/runtime-upload.d.ts +4 -0
  278. package/dist/utils/runtime-upload.js +5 -0
  279. package/dist/utils/secure-local-file.d.ts +3 -3
  280. package/dist/utils/secure-local-file.js +18 -24
  281. package/dist/utils/space-config.d.ts +11 -14
  282. package/dist/utils/space-config.js +10 -16
  283. package/dist/utils/static-runtime-policy.d.ts +5 -8
  284. package/dist/utils/static-runtime-policy.generated.d.ts +16 -0
  285. package/dist/utils/static-runtime-policy.generated.js +70 -0
  286. package/dist/utils/static-runtime-policy.js +17 -84
  287. package/dist/utils/storage-policy.js +1 -2
  288. package/dist/utils/upload-session.js +8 -14
  289. package/dist/utils/version-path.js +11 -19
  290. package/dist/utils/wpcom-auth-redirects.d.ts +5 -14
  291. package/dist/utils/wpcom-auth-redirects.js +1 -4
  292. package/dist/vocabulary.d.ts +7 -7
  293. package/dist/vocabulary.js +30 -16
  294. package/package.json +14 -2
  295. package/dist/agents/client-registry.d.ts +0 -22
  296. package/dist/agents/client-registry.js +0 -41
  297. package/dist/docs/agent-handoff-document.d.ts +0 -15
  298. package/dist/docs/agent-handoff-document.js +0 -180
  299. package/dist/docs/agent-solutions.d.ts +0 -110
  300. package/dist/docs/agent-solutions.js +0 -183
  301. package/dist/utils/query-keys.d.ts +0 -84
  302. package/dist/utils/query-keys.js +0 -108
@@ -1,15 +1,16 @@
1
1
  import { z } from "zod";
2
+ import { ApiKeySchema } from "./api-keys.js";
2
3
  import { makeOffsetListSchema } from "./common.js";
3
- import { providerClientStatus, tenantKind, tenantStatus } from "./enums.js";
4
+ import { providerClientStatus, tenantKind, tenantMode, tenantStatus } from "./enums.js";
4
5
  import { superadminPaginationSchema } from "./superadmin.js";
5
- // ProviderClient (`pvc_`) = one WP.Cloud API client identity sites are
6
- // provisioned under (the platform spec "ProviderClient"). Operator-only
7
- // resource. Each row is a tenant-owned BYO account; the first-party client is
8
- // configured separately as the platform context. The API token is write-only;
9
- // responses expose only a masked hint, never the secret.
6
+ // One WP.Cloud API client identity sites are provisioned under. Each row is a
7
+ // tenant-owned BYO account; the first-party client is configured separately.
8
+ // The API token is write-only: responses expose only a masked hint.
10
9
  export const SuperadminProviderClientSchema = z.object({
11
10
  id: z.string().describe("ProviderClient id (`pvc_`)."),
12
- provider: z.literal("wpcloud").describe("Hosting provider this client identity belongs to."),
11
+ provider: z
12
+ .enum(["wpcloud", "simulated"])
13
+ .describe("Hosting provider this client identity belongs to. `simulated` is a linked test tenant's synthetic provider (no real wp.cloud account)."),
13
14
  tenantId: z.string().describe("Tenant that owns this WP.Cloud account."),
14
15
  name: z.string().describe("The WP.Cloud client/account name used as the {client} path param."),
15
16
  label: z.string().describe("Human-readable operator label."),
@@ -66,6 +67,11 @@ export const superadminProviderClientTestResponseSchema = z.object({
66
67
  export const SuperadminTenantSchema = z.object({
67
68
  id: z.string().describe("Tenant id (`ten_`); the main tenant is `ten_main`."),
68
69
  kind: tenantKind,
70
+ mode: tenantMode.describe("`test` for a linked test tenant (a sandbox twin), `live` otherwise."),
71
+ liveTenantId: z
72
+ .string()
73
+ .nullable()
74
+ .describe("For a test tenant, the live tenant it is linked to; null on live tenants."),
69
75
  name: z.string(),
70
76
  status: tenantStatus,
71
77
  servingGraceUntil: z
@@ -104,3 +110,22 @@ export const superadminTenantPatchSchema = z.object({
104
110
  defaultRegion: z.string().trim().min(1).nullable().optional(),
105
111
  metadata: z.record(z.string(), z.string()).nullable().optional(),
106
112
  });
113
+ // A tenant-rooted `partner_admin` credential minted for a partner tenant. This
114
+ // is the one-time bootstrap: the secret is returned here and never again, and
115
+ // the holder can then mint its own scoped keys for its customers.
116
+ export const SuperadminBootstrapKeySchema = ApiKeySchema.describe("A freshly minted tenant-rooted partner_admin API key. Its `secret` is returned once, here only.");
117
+ // One side of a partner pair: the tenant plus its one-time bootstrap key.
118
+ export const SuperadminTenantWithBootstrapKeySchema = z.object({
119
+ tenant: SuperadminTenantSchema,
120
+ bootstrapKey: SuperadminBootstrapKeySchema,
121
+ });
122
+ // Creating a partner mints a live+test PAIR: a live tenant and its linked test
123
+ // twin, each with its own tenant-rooted `partner_admin` bootstrap key. The two
124
+ // secrets are the partner's `sk_live` / `sk_test` separation — returned once,
125
+ // here only. `test.tenant.liveTenantId` points back at `live.tenant.id`.
126
+ export const SuperadminTenantPairSchema = z
127
+ .object({
128
+ live: SuperadminTenantWithBootstrapKeySchema,
129
+ test: SuperadminTenantWithBootstrapKeySchema,
130
+ })
131
+ .describe("A newly onboarded partner: the live tenant and its linked test twin, each with its bootstrap key.");
@@ -10,20 +10,24 @@ export declare const SuperadminAccessSchema: z.ZodObject<{
10
10
  userId: z.ZodNullable<z.ZodString>;
11
11
  role: z.ZodNullable<z.ZodString>;
12
12
  }, z.core.$strip>;
13
+ /**
14
+ * `stattic_auth_user.role` is Better Auth's admin-plugin column: a
15
+ * comma-separated list, so "superadmin" is one role among others rather than a
16
+ * separate grant table.
17
+ */
18
+ export declare const SUPERADMIN_ROLE = "superadmin";
19
+ export declare function parseUserRoles(roleValue: string | null | undefined): string[];
13
20
  export declare const SuperadminUserProfileSchema: z.ZodObject<{
14
21
  tenantId: z.ZodString;
15
22
  analyticsId: z.ZodString;
16
23
  image: z.ZodNullable<z.ZodString>;
17
- username: z.ZodNullable<z.ZodString>;
18
- displayUsername: z.ZodNullable<z.ZodString>;
19
24
  emailVerified: z.ZodBoolean;
20
25
  isAutomattician: z.ZodBoolean;
21
- wpcom: z.ZodBoolean;
26
+ automatticBetaGrant: z.ZodBoolean;
27
+ wpcomLinked: z.ZodBoolean;
22
28
  betaEnrolledAt: z.ZodNullable<z.ZodString>;
23
- stripeCustomerId: z.ZodNullable<z.ZodString>;
24
29
  twoFactorEnabled: z.ZodBoolean;
25
30
  theme: z.ZodString;
26
- wpcomProfileJson: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
27
31
  }, z.core.$strip>;
28
32
  export declare const SuperadminUserTeamSchema: z.ZodObject<{
29
33
  membershipId: z.ZodString;
@@ -49,16 +53,13 @@ export declare const SuperadminUserSchema: z.ZodObject<{
49
53
  tenantId: z.ZodString;
50
54
  analyticsId: z.ZodString;
51
55
  image: z.ZodNullable<z.ZodString>;
52
- username: z.ZodNullable<z.ZodString>;
53
- displayUsername: z.ZodNullable<z.ZodString>;
54
56
  emailVerified: z.ZodBoolean;
55
57
  isAutomattician: z.ZodBoolean;
56
- wpcom: z.ZodBoolean;
58
+ automatticBetaGrant: z.ZodBoolean;
59
+ wpcomLinked: z.ZodBoolean;
57
60
  betaEnrolledAt: z.ZodNullable<z.ZodString>;
58
- stripeCustomerId: z.ZodNullable<z.ZodString>;
59
61
  twoFactorEnabled: z.ZodBoolean;
60
62
  theme: z.ZodString;
61
- wpcomProfileJson: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
62
63
  }, z.core.$strip>;
63
64
  teams: z.ZodArray<z.ZodObject<{
64
65
  membershipId: z.ZodString;
@@ -71,6 +72,87 @@ export declare const SuperadminUserSchema: z.ZodObject<{
71
72
  teamCreatedAt: z.ZodString;
72
73
  }, z.core.$strip>>;
73
74
  }, z.core.$strip>;
75
+ /** One verified address the person owns. Unverified addresses have no row. */
76
+ export declare const SuperadminUserEmailSchema: z.ZodObject<{
77
+ id: z.ZodString;
78
+ email: z.ZodString;
79
+ primary: z.ZodBoolean;
80
+ verifiedAt: z.ZodString;
81
+ verificationMethod: z.ZodString;
82
+ verificationSourceAccountId: z.ZodNullable<z.ZodString>;
83
+ }, z.core.$strip>;
84
+ /** One linked sign-in method. `profileJson` is the provider's own snapshot. */
85
+ export declare const SuperadminUserAccountSchema: z.ZodObject<{
86
+ id: z.ZodString;
87
+ providerId: z.ZodString;
88
+ accountId: z.ZodString;
89
+ emailObserved: z.ZodNullable<z.ZodString>;
90
+ emailVerifiedByProvider: z.ZodNullable<z.ZodBoolean>;
91
+ profileJson: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
92
+ createdAt: z.ZodString;
93
+ }, z.core.$strip>;
94
+ /**
95
+ * Everything the list row carries plus the per-person collections. Kept off the
96
+ * list because provider profile blobs are unbounded.
97
+ */
98
+ export declare const SuperadminUserDetailSchema: z.ZodObject<{
99
+ id: z.ZodString;
100
+ name: z.ZodString;
101
+ email: z.ZodString;
102
+ role: z.ZodNullable<z.ZodString>;
103
+ banned: z.ZodBoolean;
104
+ banReason: z.ZodNullable<z.ZodString>;
105
+ banExpires: z.ZodNullable<z.ZodString>;
106
+ createdAt: z.ZodString;
107
+ updatedAt: z.ZodString;
108
+ profile: z.ZodObject<{
109
+ tenantId: z.ZodString;
110
+ analyticsId: z.ZodString;
111
+ image: z.ZodNullable<z.ZodString>;
112
+ emailVerified: z.ZodBoolean;
113
+ isAutomattician: z.ZodBoolean;
114
+ automatticBetaGrant: z.ZodBoolean;
115
+ wpcomLinked: z.ZodBoolean;
116
+ betaEnrolledAt: z.ZodNullable<z.ZodString>;
117
+ twoFactorEnabled: z.ZodBoolean;
118
+ theme: z.ZodString;
119
+ }, z.core.$strip>;
120
+ teams: z.ZodArray<z.ZodObject<{
121
+ membershipId: z.ZodString;
122
+ membershipRole: z.ZodString;
123
+ membershipCreatedAt: z.ZodString;
124
+ teamId: z.ZodString;
125
+ teamSlug: z.ZodString;
126
+ teamName: z.ZodString;
127
+ teamTenantId: z.ZodString;
128
+ teamCreatedAt: z.ZodString;
129
+ }, z.core.$strip>>;
130
+ emails: z.ZodArray<z.ZodObject<{
131
+ id: z.ZodString;
132
+ email: z.ZodString;
133
+ primary: z.ZodBoolean;
134
+ verifiedAt: z.ZodString;
135
+ verificationMethod: z.ZodString;
136
+ verificationSourceAccountId: z.ZodNullable<z.ZodString>;
137
+ }, z.core.$strip>>;
138
+ accounts: z.ZodArray<z.ZodObject<{
139
+ id: z.ZodString;
140
+ providerId: z.ZodString;
141
+ accountId: z.ZodString;
142
+ emailObserved: z.ZodNullable<z.ZodString>;
143
+ emailVerifiedByProvider: z.ZodNullable<z.ZodBoolean>;
144
+ profileJson: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
145
+ createdAt: z.ZodString;
146
+ }, z.core.$strip>>;
147
+ pendingDeletionAt: z.ZodNullable<z.ZodString>;
148
+ }, z.core.$strip>;
149
+ /**
150
+ * The submitted list replaces the stored one, so the caller carries forward
151
+ * whatever it means to keep, including roles its UI does not know about.
152
+ */
153
+ export declare const superadminUserRoleUpdateSchema: z.ZodObject<{
154
+ roles: z.ZodArray<z.ZodString>;
155
+ }, z.core.$strip>;
74
156
  export declare const superadminUserListQuerySchema: z.ZodObject<{
75
157
  limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
76
158
  offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
@@ -91,16 +173,13 @@ export declare const SuperadminUserListSchema: z.ZodObject<{
91
173
  tenantId: z.ZodString;
92
174
  analyticsId: z.ZodString;
93
175
  image: z.ZodNullable<z.ZodString>;
94
- username: z.ZodNullable<z.ZodString>;
95
- displayUsername: z.ZodNullable<z.ZodString>;
96
176
  emailVerified: z.ZodBoolean;
97
177
  isAutomattician: z.ZodBoolean;
98
- wpcom: z.ZodBoolean;
178
+ automatticBetaGrant: z.ZodBoolean;
179
+ wpcomLinked: z.ZodBoolean;
99
180
  betaEnrolledAt: z.ZodNullable<z.ZodString>;
100
- stripeCustomerId: z.ZodNullable<z.ZodString>;
101
181
  twoFactorEnabled: z.ZodBoolean;
102
182
  theme: z.ZodString;
103
- wpcomProfileJson: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
104
183
  }, z.core.$strip>;
105
184
  teams: z.ZodArray<z.ZodObject<{
106
185
  membershipId: z.ZodString;
@@ -261,8 +340,8 @@ export declare const SuperadminBuildDetailSchema: z.ZodObject<{
261
340
  code: z.ZodString;
262
341
  severity: z.ZodEnum<{
263
342
  info: "info";
264
- error: "error";
265
343
  warning: "warning";
344
+ error: "error";
266
345
  }>;
267
346
  message: z.ZodString;
268
347
  path: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -651,4 +730,7 @@ export declare const SuperadminAnonymousPoolListSchema: z.ZodObject<{
651
730
  }, z.core.$strip>;
652
731
  }, z.core.$strip>;
653
732
  export type SuperadminUser = z.infer<typeof SuperadminUserSchema>;
733
+ export type SuperadminUserDetail = z.infer<typeof SuperadminUserDetailSchema>;
734
+ export type SuperadminUserEmail = z.infer<typeof SuperadminUserEmailSchema>;
735
+ export type SuperadminUserAccount = z.infer<typeof SuperadminUserAccountSchema>;
654
736
  export type SuperadminUserList = z.infer<typeof SuperadminUserListSchema>;
@@ -3,9 +3,10 @@ import { BuildSettingsSchema, BuildTargetSchema } from "./builds.js";
3
3
  import { baseDiagnosticSchema } from "./common.js";
4
4
  import { makeOffsetListSchema } from "./common.js";
5
5
  import { buildStatus } from "./enums.js";
6
+ import { PLAN_CODES } from "./features.js";
6
7
  import { versionLogEntrySchema } from "./spaces.js";
7
- // Operator-only offset pagination. The platform API uses opaque cursors exclusively
8
- // (contracts/common.ts); the superadmin surface is the one sanctioned exception.
8
+ // Operator-only offset pagination. The platform API uses opaque cursors
9
+ // (contracts/common.ts); this is the one exception.
9
10
  export const superadminPaginationSchema = z.object({
10
11
  count: z.number().int().nonnegative(),
11
12
  next: z.number().int().nonnegative().nullable(),
@@ -16,20 +17,33 @@ export const SuperadminAccessSchema = z.object({
16
17
  userId: z.string().nullable(),
17
18
  role: z.string().nullable(),
18
19
  });
20
+ /**
21
+ * `stattic_auth_user.role` is Better Auth's admin-plugin column: a
22
+ * comma-separated list, so "superadmin" is one role among others rather than a
23
+ * separate grant table.
24
+ */
25
+ export const SUPERADMIN_ROLE = "superadmin";
26
+ export function parseUserRoles(roleValue) {
27
+ return (roleValue ?? "").split(",").flatMap((entry) => {
28
+ const role = entry.trim();
29
+ return role ? [role] : [];
30
+ });
31
+ }
19
32
  export const SuperadminUserProfileSchema = z.object({
20
33
  tenantId: z.string(),
21
34
  analyticsId: z.string(),
22
35
  image: z.string().nullable(),
23
- username: z.string().nullable(),
24
- displayUsername: z.string().nullable(),
25
36
  emailVerified: z.boolean(),
26
37
  isAutomattician: z.boolean(),
27
- wpcom: z.boolean(),
38
+ automatticBetaGrant: z.boolean(),
39
+ /**
40
+ * A live linked wp.com account row — distinct from beta-admission
41
+ * provenance, which survives unlinking. Gates the superadmin grant.
42
+ */
43
+ wpcomLinked: z.boolean(),
28
44
  betaEnrolledAt: z.string().datetime().nullable(),
29
- stripeCustomerId: z.string().nullable(),
30
45
  twoFactorEnabled: z.boolean(),
31
46
  theme: z.string(),
32
- wpcomProfileJson: z.record(z.string(), z.unknown()).nullable(),
33
47
  });
34
48
  export const SuperadminUserTeamSchema = z.object({
35
49
  membershipId: z.string(),
@@ -54,6 +68,42 @@ export const SuperadminUserSchema = z.object({
54
68
  profile: SuperadminUserProfileSchema,
55
69
  teams: z.array(SuperadminUserTeamSchema),
56
70
  });
71
+ /** One verified address the person owns. Unverified addresses have no row. */
72
+ export const SuperadminUserEmailSchema = z.object({
73
+ id: z.string(),
74
+ email: z.string(),
75
+ primary: z.boolean(),
76
+ verifiedAt: z.string().datetime(),
77
+ verificationMethod: z.string(),
78
+ verificationSourceAccountId: z.string().nullable(),
79
+ });
80
+ /** One linked sign-in method. `profileJson` is the provider's own snapshot. */
81
+ export const SuperadminUserAccountSchema = z.object({
82
+ id: z.string(),
83
+ providerId: z.string(),
84
+ accountId: z.string(),
85
+ emailObserved: z.string().nullable(),
86
+ emailVerifiedByProvider: z.boolean().nullable(),
87
+ profileJson: z.record(z.string(), z.unknown()).nullable(),
88
+ createdAt: z.string().datetime(),
89
+ });
90
+ /**
91
+ * Everything the list row carries plus the per-person collections. Kept off the
92
+ * list because provider profile blobs are unbounded.
93
+ */
94
+ export const SuperadminUserDetailSchema = SuperadminUserSchema.extend({
95
+ emails: z.array(SuperadminUserEmailSchema),
96
+ accounts: z.array(SuperadminUserAccountSchema),
97
+ /** Non-null while a self-serve close request is queued or running. */
98
+ pendingDeletionAt: z.string().datetime().nullable(),
99
+ });
100
+ /**
101
+ * The submitted list replaces the stored one, so the caller carries forward
102
+ * whatever it means to keep, including roles its UI does not know about.
103
+ */
104
+ export const superadminUserRoleUpdateSchema = z.object({
105
+ roles: z.array(z.string().trim().min(1)).min(1).max(16),
106
+ });
57
107
  export const superadminUserListQuerySchema = z.object({
58
108
  limit: z.coerce.number().int().min(1).max(100).default(25),
59
109
  offset: z.coerce.number().int().min(0).default(0),
@@ -131,11 +181,14 @@ export const SuperadminBuildDetailSchema = z.object({
131
181
  export const SuperadminBuildInventorySchema = z.object({
132
182
  builds: z.array(SuperadminBuildInventoryItemSchema),
133
183
  });
134
- // Superadmin-assigned subscriptions ("plan grants"): operator-issued plan
135
- // entitlements with no payment provider and no transactions behind them.
184
+ // Plan grants: operator-issued plan entitlements with no payment provider and
185
+ // no transactions behind them. `free` is the default every team already has, so
186
+ // there is nothing to grant; the rest of the plan vocabulary comes from the
187
+ // contract rather than a second list.
188
+ const GRANTABLE_PLAN_CODES = PLAN_CODES.filter((code) => code !== "free");
136
189
  export const superadminPlanGrantCreateSchema = z.object({
137
190
  team: z.string().trim().min(1).describe("Team id or slug."),
138
- plan: z.enum(["personal", "work", "enterprise", "internal"]),
191
+ plan: z.enum(GRANTABLE_PLAN_CODES),
139
192
  note: z.string().trim().max(500).optional(),
140
193
  /** Omit for a non-expiring grant. */
141
194
  expiresAt: z.string().datetime().optional(),