@spacefast/common 0.0.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 (202) hide show
  1. package/README.md +42 -0
  2. package/dist/brand.d.ts +15 -0
  3. package/dist/brand.js +24 -0
  4. package/dist/config/domains.d.ts +30 -0
  5. package/dist/config/domains.js +75 -0
  6. package/dist/config/index.d.ts +1 -0
  7. package/dist/config/index.js +3 -0
  8. package/dist/contracts/abuse.d.ts +93 -0
  9. package/dist/contracts/abuse.js +50 -0
  10. package/dist/contracts/access.d.ts +409 -0
  11. package/dist/contracts/access.js +396 -0
  12. package/dist/contracts/account.d.ts +28 -0
  13. package/dist/contracts/account.js +54 -0
  14. package/dist/contracts/activity.d.ts +118 -0
  15. package/dist/contracts/activity.js +180 -0
  16. package/dist/contracts/analytics.d.ts +56 -0
  17. package/dist/contracts/analytics.js +91 -0
  18. package/dist/contracts/annotations.d.ts +327 -0
  19. package/dist/contracts/annotations.js +234 -0
  20. package/dist/contracts/api-keys.d.ts +517 -0
  21. package/dist/contracts/api-keys.js +235 -0
  22. package/dist/contracts/archives.d.ts +332 -0
  23. package/dist/contracts/archives.js +120 -0
  24. package/dist/contracts/auth.d.ts +86 -0
  25. package/dist/contracts/auth.js +82 -0
  26. package/dist/contracts/beta.d.ts +106 -0
  27. package/dist/contracts/beta.js +104 -0
  28. package/dist/contracts/billing.d.ts +328 -0
  29. package/dist/contracts/billing.js +203 -0
  30. package/dist/contracts/builds.d.ts +504 -0
  31. package/dist/contracts/builds.js +248 -0
  32. package/dist/contracts/channels.d.ts +49 -0
  33. package/dist/contracts/channels.js +51 -0
  34. package/dist/contracts/common.d.ts +238 -0
  35. package/dist/contracts/common.js +175 -0
  36. package/dist/contracts/deployments.d.ts +574 -0
  37. package/dist/contracts/deployments.js +97 -0
  38. package/dist/contracts/device-auth.d.ts +194 -0
  39. package/dist/contracts/device-auth.js +162 -0
  40. package/dist/contracts/domains.d.ts +6115 -0
  41. package/dist/contracts/domains.js +1435 -0
  42. package/dist/contracts/enums.d.ts +196 -0
  43. package/dist/contracts/enums.js +211 -0
  44. package/dist/contracts/error-code-meta.d.ts +1560 -0
  45. package/dist/contracts/error-code-meta.js +400 -0
  46. package/dist/contracts/error-codes.d.ts +13 -0
  47. package/dist/contracts/error-codes.js +416 -0
  48. package/dist/contracts/events.d.ts +398 -0
  49. package/dist/contracts/events.js +320 -0
  50. package/dist/contracts/fast-domain-search.d.ts +19 -0
  51. package/dist/contracts/fast-domain-search.js +22 -0
  52. package/dist/contracts/features.d.ts +240 -0
  53. package/dist/contracts/features.js +406 -0
  54. package/dist/contracts/git.d.ts +288 -0
  55. package/dist/contracts/git.js +116 -0
  56. package/dist/contracts/ids.d.ts +35 -0
  57. package/dist/contracts/ids.js +45 -0
  58. package/dist/contracts/intercom.d.ts +6 -0
  59. package/dist/contracts/intercom.js +5 -0
  60. package/dist/contracts/internal.d.ts +103 -0
  61. package/dist/contracts/internal.js +92 -0
  62. package/dist/contracts/mcp.d.ts +788 -0
  63. package/dist/contracts/mcp.js +161 -0
  64. package/dist/contracts/me.d.ts +81 -0
  65. package/dist/contracts/me.js +104 -0
  66. package/dist/contracts/oauth-resources.d.ts +30 -0
  67. package/dist/contracts/oauth-resources.js +61 -0
  68. package/dist/contracts/operations.d.ts +54 -0
  69. package/dist/contracts/operations.js +14 -0
  70. package/dist/contracts/plan-policy.d.ts +85 -0
  71. package/dist/contracts/plan-policy.js +75 -0
  72. package/dist/contracts/platform.d.ts +359 -0
  73. package/dist/contracts/platform.js +216 -0
  74. package/dist/contracts/push-new.d.ts +156 -0
  75. package/dist/contracts/push-new.js +52 -0
  76. package/dist/contracts/quotas.d.ts +16 -0
  77. package/dist/contracts/quotas.js +36 -0
  78. package/dist/contracts/repository-connections.d.ts +231 -0
  79. package/dist/contracts/repository-connections.js +106 -0
  80. package/dist/contracts/resources.d.ts +529 -0
  81. package/dist/contracts/resources.js +209 -0
  82. package/dist/contracts/routes.d.ts +45 -0
  83. package/dist/contracts/routes.js +31 -0
  84. package/dist/contracts/runtime-api.d.ts +449 -0
  85. package/dist/contracts/runtime-api.js +513 -0
  86. package/dist/contracts/sites.d.ts +393 -0
  87. package/dist/contracts/sites.js +121 -0
  88. package/dist/contracts/slugs.d.ts +31 -0
  89. package/dist/contracts/slugs.js +47 -0
  90. package/dist/contracts/space-config.d.ts +216 -0
  91. package/dist/contracts/space-config.js +237 -0
  92. package/dist/contracts/space-theme.d.ts +25 -0
  93. package/dist/contracts/space-theme.js +49 -0
  94. package/dist/contracts/spaces.d.ts +2760 -0
  95. package/dist/contracts/spaces.js +589 -0
  96. package/dist/contracts/superadmin-activity.d.ts +205 -0
  97. package/dist/contracts/superadmin-activity.js +107 -0
  98. package/dist/contracts/superadmin-emails.d.ts +212 -0
  99. package/dist/contracts/superadmin-emails.js +112 -0
  100. package/dist/contracts/superadmin-queues.d.ts +414 -0
  101. package/dist/contracts/superadmin-queues.js +202 -0
  102. package/dist/contracts/superadmin-runtime.d.ts +27 -0
  103. package/dist/contracts/superadmin-runtime.js +38 -0
  104. package/dist/contracts/superadmin-spaces.d.ts +429 -0
  105. package/dist/contracts/superadmin-spaces.js +82 -0
  106. package/dist/contracts/superadmin-tenants.d.ts +180 -0
  107. package/dist/contracts/superadmin-tenants.js +117 -0
  108. package/dist/contracts/superadmin.d.ts +654 -0
  109. package/dist/contracts/superadmin.js +309 -0
  110. package/dist/contracts/tags.d.ts +1140 -0
  111. package/dist/contracts/tags.js +1050 -0
  112. package/dist/contracts/teams.d.ts +233 -0
  113. package/dist/contracts/teams.js +174 -0
  114. package/dist/contracts/telemetry.d.ts +2 -0
  115. package/dist/contracts/telemetry.js +1 -0
  116. package/dist/contracts/transfers.d.ts +105 -0
  117. package/dist/contracts/transfers.js +48 -0
  118. package/dist/contracts/variables.d.ts +189 -0
  119. package/dist/contracts/variables.js +82 -0
  120. package/dist/contracts/webhooks.d.ts +159 -0
  121. package/dist/contracts/webhooks.js +59 -0
  122. package/dist/contracts/zero.d.ts +1538 -0
  123. package/dist/contracts/zero.js +755 -0
  124. package/dist/docs/agent-prose.d.ts +35 -0
  125. package/dist/docs/agent-prose.js +153 -0
  126. package/dist/docs/agent-setup.d.ts +6 -0
  127. package/dist/docs/agent-setup.js +164 -0
  128. package/dist/docs/agent-solutions.d.ts +110 -0
  129. package/dist/docs/agent-solutions.js +181 -0
  130. package/dist/docs/error-docs.d.ts +12 -0
  131. package/dist/docs/error-docs.js +1601 -0
  132. package/dist/docs/skill-distribution.d.ts +12 -0
  133. package/dist/docs/skill-distribution.js +18 -0
  134. package/dist/domain-exploration.d.ts +108 -0
  135. package/dist/domain-exploration.js +488 -0
  136. package/dist/domain-normalize.d.ts +1 -0
  137. package/dist/domain-normalize.js +14 -0
  138. package/dist/domain-zones.d.ts +1 -0
  139. package/dist/domain-zones.js +5272 -0
  140. package/dist/index.d.ts +1 -0
  141. package/dist/index.js +1 -0
  142. package/dist/utils/access-policy.d.ts +39 -0
  143. package/dist/utils/access-policy.js +232 -0
  144. package/dist/utils/api.d.ts +4 -0
  145. package/dist/utils/api.js +13 -0
  146. package/dist/utils/auth-redirect.d.ts +1 -0
  147. package/dist/utils/auth-redirect.js +48 -0
  148. package/dist/utils/auth.d.ts +5 -0
  149. package/dist/utils/auth.js +13 -0
  150. package/dist/utils/build-settings.d.ts +49 -0
  151. package/dist/utils/build-settings.js +366 -0
  152. package/dist/utils/claim-token.d.ts +1 -0
  153. package/dist/utils/claim-token.js +9 -0
  154. package/dist/utils/collections.d.ts +1 -0
  155. package/dist/utils/collections.js +5 -0
  156. package/dist/utils/concurrency.d.ts +1 -0
  157. package/dist/utils/concurrency.js +18 -0
  158. package/dist/utils/content-type.d.ts +10 -0
  159. package/dist/utils/content-type.js +145 -0
  160. package/dist/utils/error-display.d.ts +7 -0
  161. package/dist/utils/error-display.js +42 -0
  162. package/dist/utils/error.d.ts +1 -0
  163. package/dist/utils/error.js +3 -0
  164. package/dist/utils/generate-space-name.d.ts +14 -0
  165. package/dist/utils/generate-space-name.js +95 -0
  166. package/dist/utils/git-repository.d.ts +5 -0
  167. package/dist/utils/git-repository.js +99 -0
  168. package/dist/utils/guards.d.ts +1 -0
  169. package/dist/utils/guards.js +3 -0
  170. package/dist/utils/publish-detection.d.ts +10 -0
  171. package/dist/utils/publish-detection.js +118 -0
  172. package/dist/utils/publish-policy.d.ts +69 -0
  173. package/dist/utils/publish-policy.js +429 -0
  174. package/dist/utils/query-client.d.ts +7 -0
  175. package/dist/utils/query-client.js +21 -0
  176. package/dist/utils/query-keys.d.ts +75 -0
  177. package/dist/utils/query-keys.js +78 -0
  178. package/dist/utils/runtime-paths.d.ts +7 -0
  179. package/dist/utils/runtime-paths.js +28 -0
  180. package/dist/utils/runtime-upload.d.ts +19 -0
  181. package/dist/utils/runtime-upload.js +27 -0
  182. package/dist/utils/slug.d.ts +5 -0
  183. package/dist/utils/slug.js +13 -0
  184. package/dist/utils/space-config.d.ts +75 -0
  185. package/dist/utils/space-config.js +415 -0
  186. package/dist/utils/space-theme.d.ts +16 -0
  187. package/dist/utils/space-theme.js +89 -0
  188. package/dist/utils/static-runtime-policy.d.ts +17 -0
  189. package/dist/utils/static-runtime-policy.js +103 -0
  190. package/dist/utils/upload-session.d.ts +34 -0
  191. package/dist/utils/upload-session.js +69 -0
  192. package/dist/utils/urls.d.ts +2 -0
  193. package/dist/utils/urls.js +7 -0
  194. package/dist/utils/version-path.d.ts +6 -0
  195. package/dist/utils/version-path.js +51 -0
  196. package/dist/utils/wpcom-auth-redirects.d.ts +14 -0
  197. package/dist/utils/wpcom-auth-redirects.js +49 -0
  198. package/dist/utils/zero-realtime-signature.d.ts +12 -0
  199. package/dist/utils/zero-realtime-signature.js +45 -0
  200. package/dist/vocabulary.d.ts +230 -0
  201. package/dist/vocabulary.js +218 -0
  202. package/package.json +58 -0
@@ -0,0 +1,175 @@
1
+ import { z } from "zod";
2
+ import { diagnosticProvider, diagnosticSeverity, operationStatus } from "./enums.js";
3
+ export const AnyObjectSchema = z.record(z.string(), z.unknown());
4
+ export const SpaceViewerSchema = z.object({
5
+ title: z.string().nullable(),
6
+ description: z.string().nullable(),
7
+ ogImagePath: z.string().nullable(),
8
+ });
9
+ // The ONE Diagnostic shape (internal-docs/platform.md L1616-1623). Every lifecycle
10
+ // resource (versions, builds, bindings, assignments, exports, imports, transfers)
11
+ // carries `diagnostics: Diagnostic[]` using exactly this vocabulary.
12
+ export const baseDiagnosticSchema = z.object({
13
+ code: z
14
+ .string()
15
+ .describe("Stable snake_case diagnostic code naming the public contract that produced it."),
16
+ severity: diagnosticSeverity.describe("How actionable the diagnostic is: info, warning, error."),
17
+ message: z.string().describe("Human-readable explanation with enough detail to act on."),
18
+ path: z
19
+ .string()
20
+ .nullish()
21
+ .describe('Artifact path the diagnostic points at, e.g. "_headers:12", when one exists.'),
22
+ provider: diagnosticProvider
23
+ .nullish()
24
+ .describe("Upstream system the diagnostic originated from, when not Spacefast itself."),
25
+ details: AnyObjectSchema.nullish().describe("Machine-readable context for the diagnostic code."),
26
+ fix: z
27
+ .string()
28
+ .nullish()
29
+ .describe("Concrete, agent-actionable remediation hint for this diagnostic (react-doctor model), when one can be derived."),
30
+ retryable: z
31
+ .boolean()
32
+ .nullish()
33
+ .describe("Whether retrying the same operation may resolve this diagnostic without the caller changing anything."),
34
+ });
35
+ // Canonical DnsInstruction (internal-docs/platform.md L2500-2506): provider vocabulary
36
+ // never leaks into `purpose`.
37
+ export const DnsInstructionSchema = z.object({
38
+ type: z.enum(["A", "AAAA", "CNAME", "TXT", "ALIAS"]),
39
+ name: z.string().describe("Record name to create, relative to the zone."),
40
+ value: z.string().describe("Exact record value to set."),
41
+ ttl: z.number().int().optional(),
42
+ purpose: z.enum(["verification", "routing", "ssl"]).describe("Why this record is needed."),
43
+ });
44
+ // One shared requiredActions vocabulary (internal-docs/platform.md L2512-2517 + L1807-1811):
45
+ // lifecycle resources expose the concrete user steps that unblock them. New action types are
46
+ // added HERE, never as per-resource variants.
47
+ export const requiredActionSchema = z.discriminatedUnion("type", [
48
+ z
49
+ .object({
50
+ type: z.literal("dns"),
51
+ instructions: z.array(DnsInstructionSchema),
52
+ })
53
+ .describe("Create the listed DNS records at the caller's DNS provider."),
54
+ z
55
+ .object({ type: z.literal("confirm_move"), conflictId: z.string() })
56
+ .describe("Confirm taking the hostname over from the conflicting binding."),
57
+ z
58
+ .object({ type: z.literal("verify_domain"), domainId: z.string() })
59
+ .describe("Complete domain ownership verification."),
60
+ z
61
+ .object({ type: z.literal("renew"), domainId: z.string() })
62
+ .describe("Renew the expired or expiring domain registration."),
63
+ ]);
64
+ export const requiredActionsSchema = z
65
+ .array(requiredActionSchema)
66
+ .describe("Concrete user steps that unblock this resource, using the one shared vocabulary.");
67
+ // The error envelope (internal-docs/platform.md "Global API Conventions"): `docsUrl` is
68
+ // mandatory and derived from `code` (see contracts/error-codes.ts); `param` is a
69
+ // JSON-path-lite pointer into the failing request field on validation failures.
70
+ export const ApiErrorResponseSchema = z.object({
71
+ error: z.object({
72
+ code: z.string().describe("Stable snake_case error code naming the failed public contract."),
73
+ message: z.string().describe("Human-readable failure explanation."),
74
+ param: z
75
+ .string()
76
+ .optional()
77
+ .describe('JSON-path-lite pointer into the failing request field, e.g. "files[37].path", on validation failures.'),
78
+ docsUrl: z
79
+ .string()
80
+ .describe("Always present; derived mechanically from `code` against the docs origin."),
81
+ details: AnyObjectSchema.optional().describe("Machine-readable context for the error code."),
82
+ suggestions: z
83
+ .array(z.string())
84
+ .optional()
85
+ .describe("Actionable recovery steps safe to show in dashboards, SDKs, and CLI output."),
86
+ requestId: z.string().optional().describe("Request id to quote when contacting support."),
87
+ }),
88
+ });
89
+ // Success envelope (internal-docs/platform.md "Global API Conventions"): `{ data: T }` for
90
+ // single resources and mutations, `{ data: T[], pagination }` for lists. Mutations whose work
91
+ // outlives the request also carry `operation` — wrap with `.extend({ operation: ... })`.
92
+ export function dataEnvelope(data) {
93
+ return z.object({ data });
94
+ }
95
+ export const ApiUploadInstructionSchema = z
96
+ .object({
97
+ id: z.string().describe("Upload session id (`upl_…`)."),
98
+ expiresAt: z.string().datetime(),
99
+ method: z.literal("PUT"),
100
+ url: z
101
+ .string()
102
+ .url()
103
+ .or(z.string().startsWith("/"))
104
+ .describe("Absolute or API-relative URL to PUT the bytes to."),
105
+ contentType: z.string().min(1),
106
+ maxBytes: z.number().int().positive(),
107
+ })
108
+ .describe("Generic API upload instruction used by resources that need caller-supplied bytes.");
109
+ export const CursorPaginationSchema = z.object({
110
+ nextCursor: z
111
+ .string()
112
+ .nullable()
113
+ .describe("Opaque cursor for the next page; pass as `?cursor=`. Null on the last page."),
114
+ hasMore: z.boolean().describe("Whether another page exists after this one."),
115
+ });
116
+ // The ONE list query shape (default 20, max 100, opaque cursor, newest-first). Extend with
117
+ // module-specific filters; never redeclare `limit`/`cursor`.
118
+ export const cursorListQuerySchema = z.object({
119
+ limit: z.coerce
120
+ .number()
121
+ .int()
122
+ .min(1)
123
+ .max(100)
124
+ .default(20)
125
+ .describe("Page size: default 20, maximum 100."),
126
+ cursor: z
127
+ .string()
128
+ .min(1)
129
+ .optional()
130
+ .describe("Opaque cursor from a previous page's `pagination.nextCursor`."),
131
+ });
132
+ // The operator-only offset list-response shape (superadmin surfaces): the named
133
+ // items array, plus `total`/`limit`/`offset` and the offset `pagination` block.
134
+ // Callers pass the items key, item schema, and their pagination schema so the
135
+ // emitted object is byte-for-byte the hand-written
136
+ // `z.object({ <key>: z.array(...), total, limit, offset, pagination })`.
137
+ export function makeOffsetListSchema(itemsKey, item, pagination) {
138
+ return z.object({
139
+ [itemsKey]: z.array(item),
140
+ total: z.number().int().nonnegative(),
141
+ limit: z.number().int().positive(),
142
+ offset: z.number().int().nonnegative(),
143
+ pagination,
144
+ });
145
+ }
146
+ export const AsyncOperationProgressSchema = z.object({
147
+ stage: z.string().nullable().optional(),
148
+ message: z.string().nullable().optional(),
149
+ nextCheckAt: z.string().datetime().nullable().optional(),
150
+ });
151
+ export const OperationProgressSchema = z.object({
152
+ total: z.number().int().nonnegative(),
153
+ completed: z.number().int().nonnegative(),
154
+ failed: z.number().int().nonnegative(),
155
+ });
156
+ export const AsyncOperationSchema = z.object({
157
+ id: z.string(),
158
+ kind: z.string(),
159
+ status: operationStatus,
160
+ resources: z.array(z.object({ type: z.string(), id: z.string() })),
161
+ progress: OperationProgressSchema.optional(),
162
+ diagnostics: z.array(baseDiagnosticSchema).optional(),
163
+ createdAt: z.string().datetime(),
164
+ finishedAt: z.string().datetime().optional(),
165
+ });
166
+ // Mutation envelope for async-capable verbs: the post-mutation resource in `data`
167
+ // plus `operation` when work outlives the request (poll the resource or the
168
+ // operation). `operation` is always present and null when the mutation completed
169
+ // synchronously, so the wire shape is deterministic per route.
170
+ export function mutationEnvelope(data) {
171
+ return z.object({
172
+ data,
173
+ operation: AsyncOperationSchema.nullable().describe("Background operation handle when asynchronous work remains after this mutation; null when it completed synchronously."),
174
+ });
175
+ }