@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
@@ -63,7 +63,6 @@ declare const InternalBuildInputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
63
63
  ref: z.ZodString;
64
64
  commit: z.ZodOptional<z.ZodString>;
65
65
  branch: z.ZodOptional<z.ZodString>;
66
- pullRequestNumber: z.ZodOptional<z.ZodNumber>;
67
66
  repository: z.ZodOptional<z.ZodObject<{
68
67
  provider: z.ZodString;
69
68
  repositoryId: z.ZodNullable<z.ZodString>;
@@ -96,7 +95,6 @@ export declare const BuildCreateInputSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
96
95
  ref: z.ZodOptional<z.ZodString>;
97
96
  commit: z.ZodOptional<z.ZodString>;
98
97
  branch: z.ZodOptional<z.ZodString>;
99
- pullRequestNumber: z.ZodOptional<z.ZodNumber>;
100
98
  }, z.core.$strip>], "kind">;
101
99
  declare const buildExecutionLaunchSchema: z.ZodObject<{
102
100
  state: z.ZodEnum<{
@@ -125,6 +123,12 @@ declare const InternalBuildExecutionSchema: z.ZodObject<{
125
123
  command: "command";
126
124
  timeout: "timeout";
127
125
  }>>;
126
+ observedCliError: z.ZodOptional<z.ZodObject<{
127
+ code: z.ZodString;
128
+ message: z.ZodString;
129
+ retryable: z.ZodOptional<z.ZodBoolean>;
130
+ recovery: z.ZodOptional<z.ZodString>;
131
+ }, z.core.$strip>>;
128
132
  artifactDeadlineAt: z.ZodOptional<z.ZodString>;
129
133
  launch: z.ZodOptional<z.ZodObject<{
130
134
  state: z.ZodEnum<{
@@ -253,7 +257,6 @@ export declare const buildCreateRequestSchema: z.ZodObject<{
253
257
  ref: z.ZodOptional<z.ZodString>;
254
258
  commit: z.ZodOptional<z.ZodString>;
255
259
  branch: z.ZodOptional<z.ZodString>;
256
- pullRequestNumber: z.ZodOptional<z.ZodNumber>;
257
260
  }, z.core.$strip>], "kind">;
258
261
  settings: z.ZodOptional<z.ZodObject<{
259
262
  rootDirectory: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -322,7 +325,6 @@ export declare const spaceBuildCreateRequestSchema: z.ZodDiscriminatedUnion<[z.Z
322
325
  ref: z.ZodOptional<z.ZodString>;
323
326
  commit: z.ZodOptional<z.ZodString>;
324
327
  branch: z.ZodOptional<z.ZodString>;
325
- pullRequestNumber: z.ZodOptional<z.ZodNumber>;
326
328
  }, z.core.$strip>], "kind">;
327
329
  settings: z.ZodOptional<z.ZodObject<{
328
330
  rootDirectory: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -402,6 +404,15 @@ export declare const buildSourceArchiveUploadSchema: z.ZodObject<{
402
404
  sha256: z.ZodOptional<z.ZodString>;
403
405
  contentType: z.ZodOptional<z.ZodString>;
404
406
  }, z.core.$strip>>>;
407
+ bulk: z.ZodOptional<z.ZodObject<{
408
+ kind: z.ZodLiteral<"zip-cas-v1">;
409
+ method: z.ZodLiteral<"PUT">;
410
+ url: z.ZodUnion<[z.ZodString, z.ZodString]>;
411
+ headers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
412
+ maxCompressedBytes: z.ZodNumber;
413
+ maxExpandedBytes: z.ZodNumber;
414
+ maxBlobs: z.ZodNumber;
415
+ }, z.core.$strip>>;
405
416
  links: z.ZodObject<{
406
417
  refresh: z.ZodString;
407
418
  resume: z.ZodOptional<z.ZodString>;
@@ -563,6 +574,15 @@ export declare const buildCreateResponseSchema: z.ZodObject<{
563
574
  sha256: z.ZodOptional<z.ZodString>;
564
575
  contentType: z.ZodOptional<z.ZodString>;
565
576
  }, z.core.$strip>>>;
577
+ bulk: z.ZodOptional<z.ZodObject<{
578
+ kind: z.ZodLiteral<"zip-cas-v1">;
579
+ method: z.ZodLiteral<"PUT">;
580
+ url: z.ZodUnion<[z.ZodString, z.ZodString]>;
581
+ headers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
582
+ maxCompressedBytes: z.ZodNumber;
583
+ maxExpandedBytes: z.ZodNumber;
584
+ maxBlobs: z.ZodNumber;
585
+ }, z.core.$strip>>;
566
586
  links: z.ZodObject<{
567
587
  refresh: z.ZodString;
568
588
  resume: z.ZodOptional<z.ZodString>;
@@ -103,7 +103,6 @@ const InternalBuildInputSchema = z
103
103
  ref: z.string().describe("Branch, tag, or ref to build."),
104
104
  commit: z.string().optional().describe("Exact commit built, once resolved."),
105
105
  branch: z.string().optional().describe("Branch name when the ref is a commit SHA."),
106
- pullRequestNumber: z.number().int().positive().optional(),
107
106
  repository: z
108
107
  .object({
109
108
  provider: z.string(),
@@ -161,7 +160,6 @@ export const BuildCreateInputSchema = z
161
160
  ref: z.string().optional().describe("Branch, tag, or ref to build."),
162
161
  commit: z.string().optional().describe("Exact commit built, once resolved."),
163
162
  branch: z.string().optional().describe("Branch name when the ref is a commit SHA."),
164
- pullRequestNumber: z.number().int().positive().optional(),
165
163
  }),
166
164
  ])
167
165
  .describe("What a new build should run against.");
@@ -184,6 +182,12 @@ const buildExecutionSupervisionSchema = z.object({
184
182
  owner: z.string().min(1),
185
183
  leaseExpiresAt: z.string().datetime(),
186
184
  });
185
+ const buildExecutionObservedCliErrorSchema = z.object({
186
+ code: z.string().min(1).max(128),
187
+ message: z.string().min(1).max(8_192),
188
+ retryable: z.boolean().optional(),
189
+ recovery: z.string().min(1).max(8_192).optional(),
190
+ });
187
191
  const InternalBuildExecutionSchema = z
188
192
  .object({
189
193
  runner: z.string().nullable().default(null),
@@ -193,6 +197,9 @@ const InternalBuildExecutionSchema = z
193
197
  logOffset: z.number().int().nonnegative().optional(),
194
198
  exitCode: z.number().int().min(0).max(255).optional(),
195
199
  terminationReason: z.enum(["command", "timeout"]).optional(),
200
+ observedCliError: buildExecutionObservedCliErrorSchema
201
+ .optional()
202
+ .describe("The observer stores the latest structured CLI error with the remote log cursor."),
196
203
  artifactDeadlineAt: z
197
204
  .string()
198
205
  .datetime()
@@ -240,12 +247,17 @@ export const buildCreateRequestSchema = z
240
247
  .object({
241
248
  input: BuildCreateInputSchema,
242
249
  settings: BuildSettingsOverrideSchema.optional().describe("Per-run settings overrides, persisted as `settingsSnapshot` after resolution."),
243
- target: BuildTargetSchema.partial().optional(),
250
+ target: BuildTargetSchema.partial()
251
+ .optional()
252
+ .describe("Omit to use the Space's channel mapping for the repository ref. Send channel: null or preview: true to prevent automatic promotion. An empty target object also prevents promotion."),
244
253
  diagnostics: z
245
254
  .array(baseDiagnosticSchema)
246
255
  .optional()
247
256
  .describe("Diagnostics already known before the build is queued."),
248
- wait: z.boolean().default(false),
257
+ wait: z
258
+ .boolean()
259
+ .default(false)
260
+ .describe("Wait for the build to finish before this request returns. Agents must keep this false and poll the build status. Synchronous clients can set it to true."),
249
261
  })
250
262
  // Strict so a typo is a validation failure instead of a silently dropped
251
263
  // field, and so a body that names a managed `source` can never be read as a
@@ -1,4 +1,16 @@
1
1
  import { z } from "zod";
2
+ export declare const channelPromotionPolicySchema: z.ZodEnum<{
3
+ auto: "auto";
4
+ manual: "manual";
5
+ }>;
6
+ export type ChannelPromotionPolicy = z.infer<typeof channelPromotionPolicySchema>;
7
+ export declare const channelUpdateSchema: z.ZodObject<{
8
+ promotion: z.ZodEnum<{
9
+ auto: "auto";
10
+ manual: "manual";
11
+ }>;
12
+ }, z.core.$strip>;
13
+ export type ChannelUpdateInput = z.infer<typeof channelUpdateSchema>;
2
14
  export declare const channelChangeKindSchema: z.ZodEnum<{
3
15
  publish: "publish";
4
16
  rollback: "rollback";
@@ -19,6 +31,10 @@ export declare const channelListItemSchema: z.ZodObject<{
19
31
  currentVersionId: z.ZodNullable<z.ZodString>;
20
32
  currentDeploymentUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
21
33
  previousVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
34
+ promotion: z.ZodEnum<{
35
+ auto: "auto";
36
+ manual: "manual";
37
+ }>;
22
38
  updatedAt: z.ZodString;
23
39
  lastChange: z.ZodOptional<z.ZodNullable<z.ZodObject<{
24
40
  kind: z.ZodNullable<z.ZodEnum<{
@@ -37,6 +53,7 @@ export declare const channelHistoryEntrySchema: z.ZodObject<{
37
53
  actorType: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
38
54
  system: "system";
39
55
  user: "user";
56
+ visitor: "visitor";
40
57
  api_key: "api_key";
41
58
  partner_token: "partner_token";
42
59
  oauth_client: "oauth_client";
@@ -57,6 +74,10 @@ export declare const channelListResponseSchema: z.ZodObject<{
57
74
  currentVersionId: z.ZodNullable<z.ZodString>;
58
75
  currentDeploymentUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
59
76
  previousVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
77
+ promotion: z.ZodEnum<{
78
+ auto: "auto";
79
+ manual: "manual";
80
+ }>;
60
81
  updatedAt: z.ZodString;
61
82
  lastChange: z.ZodOptional<z.ZodNullable<z.ZodObject<{
62
83
  kind: z.ZodNullable<z.ZodEnum<{
@@ -68,6 +89,27 @@ export declare const channelListResponseSchema: z.ZodObject<{
68
89
  }, z.core.$strip>>>;
69
90
  }, z.core.$strip>>;
70
91
  }, z.core.$strip>;
92
+ export declare const channelUpdateResponseSchema: z.ZodObject<{
93
+ data: z.ZodObject<{
94
+ name: z.ZodString;
95
+ currentVersionId: z.ZodNullable<z.ZodString>;
96
+ currentDeploymentUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
97
+ previousVersionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
98
+ promotion: z.ZodEnum<{
99
+ auto: "auto";
100
+ manual: "manual";
101
+ }>;
102
+ updatedAt: z.ZodString;
103
+ lastChange: z.ZodOptional<z.ZodNullable<z.ZodObject<{
104
+ kind: z.ZodNullable<z.ZodEnum<{
105
+ publish: "publish";
106
+ rollback: "rollback";
107
+ promote: "promote";
108
+ }>>;
109
+ at: z.ZodString;
110
+ }, z.core.$strip>>>;
111
+ }, z.core.$strip>;
112
+ }, z.core.$strip>;
71
113
  export declare const channelHistoryResponseSchema: z.ZodObject<{
72
114
  data: z.ZodArray<z.ZodObject<{
73
115
  versionId: z.ZodString;
@@ -76,6 +118,7 @@ export declare const channelHistoryResponseSchema: z.ZodObject<{
76
118
  actorType: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
77
119
  system: "system";
78
120
  user: "user";
121
+ visitor: "visitor";
79
122
  api_key: "api_key";
80
123
  partner_token: "partner_token";
81
124
  oauth_client: "oauth_client";
@@ -1,7 +1,17 @@
1
1
  import { z } from "zod";
2
- // Channels READ surface (the platform spec "Channels"): a projection over the
3
- // `channels` table and the `channel.promoted` activity log. No writes:
4
- // promotion stays owned by the publish/version lifecycle.
2
+ import { activityActorTypeSchema } from "./activity.js";
3
+ // Channels surface (the platform spec "Channels"): a projection over the
4
+ // `channels` table and the `channel.promoted` activity log. The promotion
5
+ // policy is the one write; pointer moves stay owned by the publish/version
6
+ // lifecycle.
7
+ // Publication policy for a channel: "auto" lets implicit paths (publish
8
+ // finalize, build auto-promote) move the pointer; "manual" holds every
9
+ // implicit promotion — only the explicit promote endpoint flips. The
10
+ // trigger side (what builds) lives on the repository connection.
11
+ export const channelPromotionPolicySchema = z.enum(["auto", "manual"]);
12
+ export const channelUpdateSchema = z.object({
13
+ promotion: channelPromotionPolicySchema.describe("Whether implicit promotion paths may move this channel's pointer."),
14
+ });
5
15
  // How a channel pointer moved: a fresh publish going live, a forward promote,
6
16
  // or a rollback to an older version. Recorded on the `channel.promoted` event
7
17
  // at write time; null on events that predate kind recording.
@@ -30,7 +40,11 @@ export const channelListItemSchema = z.object({
30
40
  .nullable()
31
41
  .optional()
32
42
  .describe("Last version this channel served before the current pointer (rollback target)."),
33
- updatedAt: z.string().datetime().describe("Instant when this channel pointer last moved."),
43
+ promotion: channelPromotionPolicySchema.describe("auto: publishes and green builds go live; manual: only explicit promotion moves the pointer."),
44
+ updatedAt: z
45
+ .string()
46
+ .datetime()
47
+ .describe("Instant this channel last changed: a pointer move or a promotion policy change. `lastChange.at` is the pointer-move instant alone."),
34
48
  lastChange: channelLastChangeSchema
35
49
  .nullable()
36
50
  .optional()
@@ -46,8 +60,7 @@ export const channelHistoryEntrySchema = z.object({
46
60
  .nullable()
47
61
  .optional()
48
62
  .describe("Version the channel served immediately before this promotion."),
49
- actorType: z
50
- .enum(["user", "api_key", "partner_token", "oauth_client", "anonymous_claim", "system"])
63
+ actorType: activityActorTypeSchema
51
64
  .nullable()
52
65
  .optional()
53
66
  .describe("Kind of actor that performed the promotion."),
@@ -61,6 +74,9 @@ export const channelHistoryEntrySchema = z.object({
61
74
  export const channelListResponseSchema = z.object({
62
75
  data: z.array(channelListItemSchema),
63
76
  });
77
+ export const channelUpdateResponseSchema = z.object({
78
+ data: channelListItemSchema,
79
+ });
64
80
  export const channelHistoryResponseSchema = z.object({
65
81
  data: z.array(channelHistoryEntrySchema),
66
82
  });
@@ -300,6 +300,55 @@ export declare const commentAuthorSchema: z.ZodObject<{
300
300
  color: z.ZodNullable<z.ZodString>;
301
301
  }, z.core.$strip>;
302
302
  export declare const commentTargetSchema: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
303
+ /**
304
+ * Where a comment's anchor was captured. Mirrors `AnchorSource` in
305
+ * `@spacefast/collab-sdk` — snake_case because this is the stored shape, not a
306
+ * platform resource.
307
+ */
308
+ export declare const commentAnchorSourceSchema: z.ZodObject<{
309
+ space_id: z.ZodString;
310
+ version_id: z.ZodNullable<z.ZodString>;
311
+ canonical_path: z.ZodString;
312
+ url: z.ZodString;
313
+ }, z.core.$strip>;
314
+ /**
315
+ * A comment anchored to a file, rather than to something a page rendered.
316
+ *
317
+ * The wire `target` stays free-form: Cast stores whatever the producer sent and
318
+ * the API passes it through unread. THIS is what producers build and consumers
319
+ * parse, so "is this thread about a file, and which lines" is one answer with
320
+ * one shape instead of a guess per reader.
321
+ *
322
+ * Lines are inclusive and 1-based, the coordinates a diff, a stack trace and a
323
+ * `path:line` link already use.
324
+ */
325
+ export declare const commentFileAnchorSchema: z.ZodObject<{
326
+ v: z.ZodLiteral<2>;
327
+ resolver_version: z.ZodNumber;
328
+ type: z.ZodLiteral<"file">;
329
+ source: z.ZodObject<{
330
+ space_id: z.ZodString;
331
+ version_id: z.ZodNullable<z.ZodString>;
332
+ canonical_path: z.ZodString;
333
+ url: z.ZodString;
334
+ }, z.core.$strip>;
335
+ file: z.ZodObject<{
336
+ path: z.ZodString;
337
+ lines: z.ZodOptional<z.ZodObject<{
338
+ start: z.ZodNumber;
339
+ end: z.ZodNumber;
340
+ }, z.core.$strip>>;
341
+ }, z.core.$strip>;
342
+ }, z.core.$strip>;
343
+ export type CommentFileAnchor = z.infer<typeof commentFileAnchorSchema>;
344
+ /**
345
+ * The file a target names, or null when it is not a file anchor.
346
+ *
347
+ * Total on purpose: every reader of `target` faces free-form JSON, and this is
348
+ * the one place that decides whether it is a file anchor. A malformed one is
349
+ * "not a file anchor", never a throw.
350
+ */
351
+ export declare function commentFileAnchorPath(target: unknown): string | null;
303
352
  /**
304
353
  * How many attachments one thread or reply may carry. Mirrors Cast's
305
354
  * `@attachment_limit`: Cast enforces it on write, this is what REST readers get.
@@ -348,6 +348,58 @@ export const commentAuthorSchema = z.object({
348
348
  color: z.string().max(64).nullable(),
349
349
  });
350
350
  export const commentTargetSchema = z.record(z.string(), z.unknown()).nullable();
351
+ /**
352
+ * Where a comment's anchor was captured. Mirrors `AnchorSource` in
353
+ * `@spacefast/collab-sdk` — snake_case because this is the stored shape, not a
354
+ * platform resource.
355
+ */
356
+ export const commentAnchorSourceSchema = z.object({
357
+ space_id: z.string().min(1),
358
+ version_id: z.string().min(1).nullable(),
359
+ canonical_path: z.string().max(COMMENT_PAGE_PATH_MAX_LENGTH),
360
+ url: z.string().max(2_048),
361
+ });
362
+ /**
363
+ * A comment anchored to a file, rather than to something a page rendered.
364
+ *
365
+ * The wire `target` stays free-form: Cast stores whatever the producer sent and
366
+ * the API passes it through unread. THIS is what producers build and consumers
367
+ * parse, so "is this thread about a file, and which lines" is one answer with
368
+ * one shape instead of a guess per reader.
369
+ *
370
+ * Lines are inclusive and 1-based, the coordinates a diff, a stack trace and a
371
+ * `path:line` link already use.
372
+ */
373
+ export const commentFileAnchorSchema = z.object({
374
+ v: z.literal(2),
375
+ resolver_version: z.number().int().positive(),
376
+ type: z.literal("file"),
377
+ source: commentAnchorSourceSchema,
378
+ file: z.object({
379
+ path: z.string().min(1).max(COMMENT_PAGE_PATH_MAX_LENGTH),
380
+ lines: z
381
+ .object({
382
+ start: z.number().int().min(1),
383
+ end: z.number().int().min(1),
384
+ })
385
+ .refine((lines) => lines.end >= lines.start, {
386
+ message: "Line ranges must end at or after they start.",
387
+ })
388
+ .optional(),
389
+ }),
390
+ });
391
+ /**
392
+ * The file a target names, or null when it is not a file anchor.
393
+ *
394
+ * Total on purpose: every reader of `target` faces free-form JSON, and this is
395
+ * the one place that decides whether it is a file anchor. A malformed one is
396
+ * "not a file anchor", never a throw.
397
+ */
398
+ // oxlint-disable-next-line anti-slop/no-unknown-parameters -- the wire target is deliberately free-form; deciding what it is is this function's whole job.
399
+ export function commentFileAnchorPath(target) {
400
+ const parsed = commentFileAnchorSchema.safeParse(target);
401
+ return parsed.success ? parsed.data.file.path : null;
402
+ }
351
403
  /**
352
404
  * How many attachments one thread or reply may carry. Mirrors Cast's
353
405
  * `@attachment_limit`: Cast enforces it on write, this is what REST readers get.
@@ -454,9 +506,16 @@ export const commentListQuerySchema = cursorListQuerySchema.extend({
454
506
  .describe("Return only threads that have unread comments for the caller."),
455
507
  });
456
508
  export const commentCreateSchema = z.object({
457
- pagePath: z.string().min(1).max(COMMENT_PAGE_PATH_MAX_LENGTH).default("/"),
509
+ pagePath: z
510
+ .string()
511
+ .min(1)
512
+ .max(COMMENT_PAGE_PATH_MAX_LENGTH)
513
+ .default("/")
514
+ .describe("Page the thread is anchored to. Ignored when `target` is a file anchor: that anchor's `file.path` is the page path, so the thread is always filed under the file it is about."),
458
515
  body: z.string().min(1).max(16_000),
459
- target: commentTargetSchema.optional(),
516
+ target: commentTargetSchema
517
+ .optional()
518
+ .describe("Where in the page or file this thread points. Stored and returned unread, so producers and consumers agree on its shape between themselves; a file anchor is the one shape the API itself recognizes."),
460
519
  idempotencyKey: z.string().min(1).max(320).optional(),
461
520
  });
462
521
  export const commentReplySchema = z.object({
@@ -32,13 +32,16 @@ export declare const PLAN_CATALOG_CAPS: {
32
32
  };
33
33
  export declare const QUOTA_ENFORCEMENT_POLICIES: readonly ["warn", "block"];
34
34
  export declare const quotaEnforcementPolicySchema: z.ZodEnum<{
35
- warn: "warn";
36
35
  block: "block";
36
+ warn: "warn";
37
37
  }>;
38
38
  export type QuotaEnforcementPolicy = z.infer<typeof quotaEnforcementPolicySchema>;
39
39
  export declare const planCatalogEntrySchema: z.ZodObject<{
40
40
  features: z.ZodArray<z.ZodEnum<{
41
+ connectors: "connectors";
41
42
  zero: "zero";
43
+ tags: "tags";
44
+ functions: "functions";
42
45
  "plans.paid.available": "plans.paid.available";
43
46
  "anonymous.publishing": "anonymous.publishing";
44
47
  "beta.enrollment_gate": "beta.enrollment_gate";
@@ -51,11 +54,10 @@ export declare const planCatalogEntrySchema: z.ZodObject<{
51
54
  "collab.notices": "collab.notices";
52
55
  "collab.comments": "collab.comments";
53
56
  "content.managed": "content.managed";
54
- "sites.dedicated_runtime": "sites.dedicated_runtime";
55
57
  "collab.drawing": "collab.drawing";
56
- tags: "tags";
57
- functions: "functions";
58
+ "sites.jetpack": "sites.jetpack";
58
59
  "spaces.slug_rename": "spaces.slug_rename";
60
+ "content.users": "content.users";
59
61
  "pages.templates": "pages.templates";
60
62
  "branding.hide": "branding.hide";
61
63
  }>>;
@@ -66,14 +68,17 @@ export declare const planCatalogEntrySchema: z.ZodObject<{
66
68
  customDomains: z.ZodOptional<z.ZodNumber>;
67
69
  }, z.core.$strict>;
68
70
  quotaPolicy: z.ZodOptional<z.ZodEnum<{
69
- warn: "warn";
70
71
  block: "block";
72
+ warn: "warn";
71
73
  }>>;
72
74
  }, z.core.$strict>;
73
75
  export type PlanCatalogEntry = z.infer<typeof planCatalogEntrySchema>;
74
76
  export declare const planCatalogSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
75
77
  features: z.ZodArray<z.ZodEnum<{
78
+ connectors: "connectors";
76
79
  zero: "zero";
80
+ tags: "tags";
81
+ functions: "functions";
77
82
  "plans.paid.available": "plans.paid.available";
78
83
  "anonymous.publishing": "anonymous.publishing";
79
84
  "beta.enrollment_gate": "beta.enrollment_gate";
@@ -86,11 +91,10 @@ export declare const planCatalogSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
86
91
  "collab.notices": "collab.notices";
87
92
  "collab.comments": "collab.comments";
88
93
  "content.managed": "content.managed";
89
- "sites.dedicated_runtime": "sites.dedicated_runtime";
90
94
  "collab.drawing": "collab.drawing";
91
- tags: "tags";
92
- functions: "functions";
95
+ "sites.jetpack": "sites.jetpack";
93
96
  "spaces.slug_rename": "spaces.slug_rename";
97
+ "content.users": "content.users";
94
98
  "pages.templates": "pages.templates";
95
99
  "branding.hide": "branding.hide";
96
100
  }>>;
@@ -101,8 +105,8 @@ export declare const planCatalogSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
101
105
  customDomains: z.ZodOptional<z.ZodNumber>;
102
106
  }, z.core.$strict>;
103
107
  quotaPolicy: z.ZodOptional<z.ZodEnum<{
104
- warn: "warn";
105
108
  block: "block";
109
+ warn: "warn";
106
110
  }>>;
107
111
  }, z.core.$strict>>;
108
112
  export type PlanCatalog = z.infer<typeof planCatalogSchema>;
@@ -110,7 +114,10 @@ export declare const defaultPlanNameSchema: z.ZodString;
110
114
  export declare const materializedPlanCatalogSchema: z.ZodObject<{
111
115
  plans: z.ZodRecord<z.ZodString, z.ZodObject<{
112
116
  features: z.ZodArray<z.ZodEnum<{
117
+ connectors: "connectors";
113
118
  zero: "zero";
119
+ tags: "tags";
120
+ functions: "functions";
114
121
  "plans.paid.available": "plans.paid.available";
115
122
  "anonymous.publishing": "anonymous.publishing";
116
123
  "beta.enrollment_gate": "beta.enrollment_gate";
@@ -123,11 +130,10 @@ export declare const materializedPlanCatalogSchema: z.ZodObject<{
123
130
  "collab.notices": "collab.notices";
124
131
  "collab.comments": "collab.comments";
125
132
  "content.managed": "content.managed";
126
- "sites.dedicated_runtime": "sites.dedicated_runtime";
127
133
  "collab.drawing": "collab.drawing";
128
- tags: "tags";
129
- functions: "functions";
134
+ "sites.jetpack": "sites.jetpack";
130
135
  "spaces.slug_rename": "spaces.slug_rename";
136
+ "content.users": "content.users";
131
137
  "pages.templates": "pages.templates";
132
138
  "branding.hide": "branding.hide";
133
139
  }>>;
@@ -138,8 +144,8 @@ export declare const materializedPlanCatalogSchema: z.ZodObject<{
138
144
  customDomains: z.ZodOptional<z.ZodNumber>;
139
145
  }, z.core.$strict>;
140
146
  quotaPolicy: z.ZodOptional<z.ZodEnum<{
141
- warn: "warn";
142
147
  block: "block";
148
+ warn: "warn";
143
149
  }>>;
144
150
  }, z.core.$strict>>;
145
151
  defaultPlan: z.ZodNullable<z.ZodString>;
@@ -0,0 +1,28 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * ACCESS narrowing for connectors, stored on the credential (api key row /
4
+ * auth grant). Absent (null) means the default derivation applies: a credential
5
+ * holding `connectors:*` scopes may use the team's shared connections plus —
6
+ * when a human subject is attached — that member's own personal connections.
7
+ *
8
+ * `explicit` narrows a credential to specific connections; it is how a
9
+ * third-party OAuth client or a narrow agent token is granted "this Linear and
10
+ * nothing else". Enforcement happens at credential resolution inside the
11
+ * connectors module, never in route handlers.
12
+ */
13
+ export declare const ConnectorAccessScopeSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
14
+ kind: z.ZodLiteral<"all">;
15
+ }, z.core.$strip>, z.ZodObject<{
16
+ kind: z.ZodLiteral<"explicit">;
17
+ connectionIds: z.ZodArray<z.ZodString>;
18
+ }, z.core.$strip>], "kind">;
19
+ export type ConnectorAccessScope = z.infer<typeof ConnectorAccessScopeSchema>;
20
+ /** PATCH body fragment for credentials that can carry connector access. */
21
+ export declare const connectorAccessPatchSchema: z.ZodObject<{
22
+ connectorAccess: z.ZodOptional<z.ZodNullable<z.ZodDiscriminatedUnion<[z.ZodObject<{
23
+ kind: z.ZodLiteral<"all">;
24
+ }, z.core.$strip>, z.ZodObject<{
25
+ kind: z.ZodLiteral<"explicit">;
26
+ connectionIds: z.ZodArray<z.ZodString>;
27
+ }, z.core.$strip>], "kind">>>;
28
+ }, z.core.$strip>;
@@ -0,0 +1,31 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * ACCESS narrowing for connectors, stored on the credential (api key row /
4
+ * auth grant). Absent (null) means the default derivation applies: a credential
5
+ * holding `connectors:*` scopes may use the team's shared connections plus —
6
+ * when a human subject is attached — that member's own personal connections.
7
+ *
8
+ * `explicit` narrows a credential to specific connections; it is how a
9
+ * third-party OAuth client or a narrow agent token is granted "this Linear and
10
+ * nothing else". Enforcement happens at credential resolution inside the
11
+ * connectors module, never in route handlers.
12
+ */
13
+ export const ConnectorAccessScopeSchema = z.discriminatedUnion("kind", [
14
+ z
15
+ .object({ kind: z.literal("all") })
16
+ .describe("Team connections plus the caller's own personal connections."),
17
+ z.object({
18
+ kind: z.literal("explicit"),
19
+ connectionIds: z
20
+ .array(z.string())
21
+ .min(1)
22
+ .max(200)
23
+ .describe("Connection ids (`cxn_`) this credential may use. Nothing else resolves."),
24
+ }),
25
+ ]);
26
+ /** PATCH body fragment for credentials that can carry connector access. */
27
+ export const connectorAccessPatchSchema = z.object({
28
+ connectorAccess: ConnectorAccessScopeSchema.nullable()
29
+ .optional()
30
+ .describe("Connector ACCESS narrowing. Null restores the default derivation."),
31
+ });