@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
@@ -59,7 +59,7 @@ export declare const functionUsagePushSchema: z.ZodObject<{
59
59
  observedAt: z.ZodString;
60
60
  }, z.core.$strip>;
61
61
  export type FunctionUsagePush = z.infer<typeof functionUsagePushSchema>;
62
- export declare const USAGE_DIMENSIONS: readonly ["data_transfer_bytes", "served_requests", "stored_byte_hours", "build_minutes", "build_count", "custom_domain_days", "space_days"];
62
+ export declare const USAGE_DIMENSIONS: readonly ["data_transfer_bytes", "served_requests", "stored_byte_hours", "build_minutes", "build_count", "custom_domain_days", "space_days", "connector_runs"];
63
63
  export declare const usageDimensionSchema: z.ZodEnum<{
64
64
  data_transfer_bytes: "data_transfer_bytes";
65
65
  served_requests: "served_requests";
@@ -68,6 +68,7 @@ export declare const usageDimensionSchema: z.ZodEnum<{
68
68
  build_count: "build_count";
69
69
  custom_domain_days: "custom_domain_days";
70
70
  space_days: "space_days";
71
+ connector_runs: "connector_runs";
71
72
  }>;
72
73
  export type UsageDimension = z.infer<typeof usageDimensionSchema>;
73
74
  export declare const usageQuantitySchema: z.ZodString;
@@ -95,6 +96,7 @@ export declare const usageRecordSchema: z.ZodObject<{
95
96
  build_count: "build_count";
96
97
  custom_domain_days: "custom_domain_days";
97
98
  space_days: "space_days";
99
+ connector_runs: "connector_runs";
98
100
  }>;
99
101
  measuredQuantity: z.ZodString;
100
102
  billableQuantity: z.ZodString;
@@ -122,6 +124,7 @@ export declare const usageListQuerySchema: z.ZodObject<{
122
124
  build_count: "build_count";
123
125
  custom_domain_days: "custom_domain_days";
124
126
  space_days: "space_days";
127
+ connector_runs: "connector_runs";
125
128
  }>>;
126
129
  granularity: z.ZodDefault<z.ZodLiteral<"hour">>;
127
130
  }, z.core.$strict>;
@@ -151,6 +154,7 @@ export declare const usageListResponseSchema: z.ZodObject<{
151
154
  build_count: "build_count";
152
155
  custom_domain_days: "custom_domain_days";
153
156
  space_days: "space_days";
157
+ connector_runs: "connector_runs";
154
158
  }>;
155
159
  measuredQuantity: z.ZodString;
156
160
  billableQuantity: z.ZodString;
@@ -175,6 +179,7 @@ export declare const usagePeriodTotalsSchema: z.ZodObject<{
175
179
  build_count: z.ZodOptional<z.ZodString>;
176
180
  custom_domain_days: z.ZodOptional<z.ZodString>;
177
181
  space_days: z.ZodOptional<z.ZodString>;
182
+ connector_runs: z.ZodOptional<z.ZodString>;
178
183
  }, z.core.$strict>;
179
184
  export declare const usagePeriodSchema: z.ZodObject<{
180
185
  id: z.ZodString;
@@ -197,6 +202,7 @@ export declare const usagePeriodSchema: z.ZodObject<{
197
202
  build_count: z.ZodOptional<z.ZodString>;
198
203
  custom_domain_days: z.ZodOptional<z.ZodString>;
199
204
  space_days: z.ZodOptional<z.ZodString>;
205
+ connector_runs: z.ZodOptional<z.ZodString>;
200
206
  }, z.core.$strict>;
201
207
  checksum: z.ZodNullable<z.ZodString>;
202
208
  finalizedAt: z.ZodNullable<z.ZodString>;
@@ -232,6 +238,7 @@ export declare const usagePeriodListResponseSchema: z.ZodObject<{
232
238
  build_count: z.ZodOptional<z.ZodString>;
233
239
  custom_domain_days: z.ZodOptional<z.ZodString>;
234
240
  space_days: z.ZodOptional<z.ZodString>;
241
+ connector_runs: z.ZodOptional<z.ZodString>;
235
242
  }, z.core.$strict>;
236
243
  checksum: z.ZodNullable<z.ZodString>;
237
244
  finalizedAt: z.ZodNullable<z.ZodString>;
@@ -263,6 +270,7 @@ export declare const usagePeriodResponseSchema: z.ZodObject<{
263
270
  build_count: z.ZodOptional<z.ZodString>;
264
271
  custom_domain_days: z.ZodOptional<z.ZodString>;
265
272
  space_days: z.ZodOptional<z.ZodString>;
273
+ connector_runs: z.ZodOptional<z.ZodString>;
266
274
  }, z.core.$strict>;
267
275
  checksum: z.ZodNullable<z.ZodString>;
268
276
  finalizedAt: z.ZodNullable<z.ZodString>;
@@ -66,6 +66,7 @@ export const USAGE_DIMENSIONS = [
66
66
  "build_count",
67
67
  "custom_domain_days",
68
68
  "space_days",
69
+ "connector_runs",
69
70
  ];
70
71
  export const usageDimensionSchema = z
71
72
  .enum(USAGE_DIMENSIONS)
@@ -143,6 +144,7 @@ export const usagePeriodTotalsSchema = z
143
144
  build_count: usageQuantitySchema.optional(),
144
145
  custom_domain_days: usageQuantitySchema.optional(),
145
146
  space_days: usageQuantitySchema.optional(),
147
+ connector_runs: usageQuantitySchema.optional(),
146
148
  })
147
149
  .strict();
148
150
  export const usagePeriodSchema = z
@@ -0,0 +1,448 @@
1
+ import { z } from "zod";
2
+ export declare const VISUAL_REVIEW_TTL_SECONDS = 3600;
3
+ export declare const VISUAL_REVIEW_MAX_BYTES: number;
4
+ export declare const VISUAL_REVIEW_MAX_NOTES = 20;
5
+ export declare const visualReviewHostProfilesSchema: z.ZodArray<z.ZodObject<{
6
+ origin: z.ZodString;
7
+ ancestors: z.ZodArray<z.ZodString>;
8
+ frameDomains: z.ZodArray<z.ZodString>;
9
+ }, z.core.$strip>>;
10
+ export declare function visualReviewFrameAllowed(origin: string, domains: string[]): boolean;
11
+ export declare const visualReviewViewportSchema: z.ZodObject<{
12
+ width: z.ZodNumber;
13
+ height: z.ZodNumber;
14
+ dpr: z.ZodNumber;
15
+ scroll_x: z.ZodNumber;
16
+ scroll_y: z.ZodNumber;
17
+ doc_width: z.ZodNumber;
18
+ doc_height: z.ZodNumber;
19
+ }, z.core.$strip>;
20
+ export declare const visualReviewAnchorSchema: z.ZodObject<{
21
+ v: z.ZodLiteral<2>;
22
+ resolver_version: z.ZodNumber;
23
+ type: z.ZodLiteral<"element">;
24
+ source: z.ZodObject<{
25
+ space_id: z.ZodString;
26
+ version_id: z.ZodNullable<z.ZodString>;
27
+ canonical_path: z.ZodString;
28
+ url: z.ZodString;
29
+ }, z.core.$strip>;
30
+ selectors: z.ZodObject<{
31
+ stable_key: z.ZodOptional<z.ZodString>;
32
+ element_id: z.ZodOptional<z.ZodString>;
33
+ css: z.ZodOptional<z.ZodString>;
34
+ css_variants: z.ZodOptional<z.ZodArray<z.ZodString>>;
35
+ relative_point: z.ZodOptional<z.ZodObject<{
36
+ x: z.ZodNumber;
37
+ y: z.ZodNumber;
38
+ }, z.core.$strip>>;
39
+ capture_box: z.ZodOptional<z.ZodObject<{
40
+ x: z.ZodNumber;
41
+ y: z.ZodNumber;
42
+ width: z.ZodNumber;
43
+ height: z.ZodNumber;
44
+ }, z.core.$strip>>;
45
+ text_quote: z.ZodOptional<z.ZodObject<{
46
+ exact: z.ZodString;
47
+ prefix: z.ZodString;
48
+ suffix: z.ZodString;
49
+ }, z.core.$strip>>;
50
+ fingerprint: z.ZodOptional<z.ZodObject<{
51
+ tag: z.ZodString;
52
+ role: z.ZodNullable<z.ZodString>;
53
+ accessible_name: z.ZodNullable<z.ZodString>;
54
+ own_text: z.ZodNullable<z.ZodString>;
55
+ ancestor_text: z.ZodNullable<z.ZodString>;
56
+ neighbor_texts: z.ZodArray<z.ZodString>;
57
+ attrs: z.ZodRecord<z.ZodString, z.ZodString>;
58
+ }, z.core.$strip>>;
59
+ }, z.core.$strip>;
60
+ viewport: z.ZodObject<{
61
+ width: z.ZodNumber;
62
+ height: z.ZodNumber;
63
+ dpr: z.ZodNumber;
64
+ scroll_x: z.ZodNumber;
65
+ scroll_y: z.ZodNumber;
66
+ doc_width: z.ZodNumber;
67
+ doc_height: z.ZodNumber;
68
+ }, z.core.$strip>;
69
+ }, z.core.$strip>;
70
+ export declare const visualReviewImageSchema: z.ZodObject<{
71
+ mimeType: z.ZodLiteral<"image/png">;
72
+ data: z.ZodString;
73
+ crop: z.ZodObject<{
74
+ x: z.ZodNumber;
75
+ y: z.ZodNumber;
76
+ width: z.ZodNumber;
77
+ height: z.ZodNumber;
78
+ }, z.core.$strip>;
79
+ capturedAt: z.ZodString;
80
+ }, z.core.$strip>;
81
+ export declare const visualReviewNoteSchema: z.ZodObject<{
82
+ id: z.ZodString;
83
+ text: z.ZodString;
84
+ path: z.ZodString;
85
+ viewport: z.ZodObject<{
86
+ width: z.ZodNumber;
87
+ height: z.ZodNumber;
88
+ dpr: z.ZodNumber;
89
+ scroll_x: z.ZodNumber;
90
+ scroll_y: z.ZodNumber;
91
+ doc_width: z.ZodNumber;
92
+ doc_height: z.ZodNumber;
93
+ }, z.core.$strip>;
94
+ anchor: z.ZodNullable<z.ZodObject<{
95
+ v: z.ZodLiteral<2>;
96
+ resolver_version: z.ZodNumber;
97
+ type: z.ZodLiteral<"element">;
98
+ source: z.ZodObject<{
99
+ space_id: z.ZodString;
100
+ version_id: z.ZodNullable<z.ZodString>;
101
+ canonical_path: z.ZodString;
102
+ url: z.ZodString;
103
+ }, z.core.$strip>;
104
+ selectors: z.ZodObject<{
105
+ stable_key: z.ZodOptional<z.ZodString>;
106
+ element_id: z.ZodOptional<z.ZodString>;
107
+ css: z.ZodOptional<z.ZodString>;
108
+ css_variants: z.ZodOptional<z.ZodArray<z.ZodString>>;
109
+ relative_point: z.ZodOptional<z.ZodObject<{
110
+ x: z.ZodNumber;
111
+ y: z.ZodNumber;
112
+ }, z.core.$strip>>;
113
+ capture_box: z.ZodOptional<z.ZodObject<{
114
+ x: z.ZodNumber;
115
+ y: z.ZodNumber;
116
+ width: z.ZodNumber;
117
+ height: z.ZodNumber;
118
+ }, z.core.$strip>>;
119
+ text_quote: z.ZodOptional<z.ZodObject<{
120
+ exact: z.ZodString;
121
+ prefix: z.ZodString;
122
+ suffix: z.ZodString;
123
+ }, z.core.$strip>>;
124
+ fingerprint: z.ZodOptional<z.ZodObject<{
125
+ tag: z.ZodString;
126
+ role: z.ZodNullable<z.ZodString>;
127
+ accessible_name: z.ZodNullable<z.ZodString>;
128
+ own_text: z.ZodNullable<z.ZodString>;
129
+ ancestor_text: z.ZodNullable<z.ZodString>;
130
+ neighbor_texts: z.ZodArray<z.ZodString>;
131
+ attrs: z.ZodRecord<z.ZodString, z.ZodString>;
132
+ }, z.core.$strip>>;
133
+ }, z.core.$strip>;
134
+ viewport: z.ZodObject<{
135
+ width: z.ZodNumber;
136
+ height: z.ZodNumber;
137
+ dpr: z.ZodNumber;
138
+ scroll_x: z.ZodNumber;
139
+ scroll_y: z.ZodNumber;
140
+ doc_width: z.ZodNumber;
141
+ doc_height: z.ZodNumber;
142
+ }, z.core.$strip>;
143
+ }, z.core.$strip>>;
144
+ screenshot: z.ZodNullable<z.ZodObject<{
145
+ mimeType: z.ZodLiteral<"image/png">;
146
+ data: z.ZodString;
147
+ crop: z.ZodObject<{
148
+ x: z.ZodNumber;
149
+ y: z.ZodNumber;
150
+ width: z.ZodNumber;
151
+ height: z.ZodNumber;
152
+ }, z.core.$strip>;
153
+ capturedAt: z.ZodString;
154
+ }, z.core.$strip>>;
155
+ captureStatus: z.ZodEnum<{
156
+ failed: "failed";
157
+ ready: "ready";
158
+ omitted: "omitted";
159
+ }>;
160
+ }, z.core.$strip>;
161
+ export declare const visualReviewBatchSchema: z.ZodObject<{
162
+ submissionId: z.ZodString;
163
+ notes: z.ZodArray<z.ZodObject<{
164
+ id: z.ZodString;
165
+ text: z.ZodString;
166
+ path: z.ZodString;
167
+ viewport: z.ZodObject<{
168
+ width: z.ZodNumber;
169
+ height: z.ZodNumber;
170
+ dpr: z.ZodNumber;
171
+ scroll_x: z.ZodNumber;
172
+ scroll_y: z.ZodNumber;
173
+ doc_width: z.ZodNumber;
174
+ doc_height: z.ZodNumber;
175
+ }, z.core.$strip>;
176
+ anchor: z.ZodNullable<z.ZodObject<{
177
+ v: z.ZodLiteral<2>;
178
+ resolver_version: z.ZodNumber;
179
+ type: z.ZodLiteral<"element">;
180
+ source: z.ZodObject<{
181
+ space_id: z.ZodString;
182
+ version_id: z.ZodNullable<z.ZodString>;
183
+ canonical_path: z.ZodString;
184
+ url: z.ZodString;
185
+ }, z.core.$strip>;
186
+ selectors: z.ZodObject<{
187
+ stable_key: z.ZodOptional<z.ZodString>;
188
+ element_id: z.ZodOptional<z.ZodString>;
189
+ css: z.ZodOptional<z.ZodString>;
190
+ css_variants: z.ZodOptional<z.ZodArray<z.ZodString>>;
191
+ relative_point: z.ZodOptional<z.ZodObject<{
192
+ x: z.ZodNumber;
193
+ y: z.ZodNumber;
194
+ }, z.core.$strip>>;
195
+ capture_box: z.ZodOptional<z.ZodObject<{
196
+ x: z.ZodNumber;
197
+ y: z.ZodNumber;
198
+ width: z.ZodNumber;
199
+ height: z.ZodNumber;
200
+ }, z.core.$strip>>;
201
+ text_quote: z.ZodOptional<z.ZodObject<{
202
+ exact: z.ZodString;
203
+ prefix: z.ZodString;
204
+ suffix: z.ZodString;
205
+ }, z.core.$strip>>;
206
+ fingerprint: z.ZodOptional<z.ZodObject<{
207
+ tag: z.ZodString;
208
+ role: z.ZodNullable<z.ZodString>;
209
+ accessible_name: z.ZodNullable<z.ZodString>;
210
+ own_text: z.ZodNullable<z.ZodString>;
211
+ ancestor_text: z.ZodNullable<z.ZodString>;
212
+ neighbor_texts: z.ZodArray<z.ZodString>;
213
+ attrs: z.ZodRecord<z.ZodString, z.ZodString>;
214
+ }, z.core.$strip>>;
215
+ }, z.core.$strip>;
216
+ viewport: z.ZodObject<{
217
+ width: z.ZodNumber;
218
+ height: z.ZodNumber;
219
+ dpr: z.ZodNumber;
220
+ scroll_x: z.ZodNumber;
221
+ scroll_y: z.ZodNumber;
222
+ doc_width: z.ZodNumber;
223
+ doc_height: z.ZodNumber;
224
+ }, z.core.$strip>;
225
+ }, z.core.$strip>>;
226
+ screenshot: z.ZodNullable<z.ZodObject<{
227
+ mimeType: z.ZodLiteral<"image/png">;
228
+ data: z.ZodString;
229
+ crop: z.ZodObject<{
230
+ x: z.ZodNumber;
231
+ y: z.ZodNumber;
232
+ width: z.ZodNumber;
233
+ height: z.ZodNumber;
234
+ }, z.core.$strip>;
235
+ capturedAt: z.ZodString;
236
+ }, z.core.$strip>>;
237
+ captureStatus: z.ZodEnum<{
238
+ failed: "failed";
239
+ ready: "ready";
240
+ omitted: "omitted";
241
+ }>;
242
+ }, z.core.$strip>>;
243
+ }, z.core.$strip>;
244
+ export declare const visualReviewCreateSchema: z.ZodObject<{
245
+ landingPath: z.ZodDefault<z.ZodString>;
246
+ parentOrigin: z.ZodOptional<z.ZodString>;
247
+ }, z.core.$strip>;
248
+ export declare const visualReviewSessionSchema: z.ZodObject<{
249
+ id: z.ZodString;
250
+ spaceId: z.ZodString;
251
+ versionId: z.ZodString;
252
+ title: z.ZodString;
253
+ sourceCommitSha: z.ZodNullable<z.ZodString>;
254
+ origin: z.ZodString;
255
+ landingPath: z.ZodString;
256
+ expiresAt: z.ZodString;
257
+ status: z.ZodEnum<{
258
+ submitted: "submitted";
259
+ draft: "draft";
260
+ }>;
261
+ submission: z.ZodNullable<z.ZodObject<{
262
+ submissionId: z.ZodString;
263
+ notes: z.ZodArray<z.ZodObject<{
264
+ id: z.ZodString;
265
+ text: z.ZodString;
266
+ path: z.ZodString;
267
+ viewport: z.ZodObject<{
268
+ width: z.ZodNumber;
269
+ height: z.ZodNumber;
270
+ dpr: z.ZodNumber;
271
+ scroll_x: z.ZodNumber;
272
+ scroll_y: z.ZodNumber;
273
+ doc_width: z.ZodNumber;
274
+ doc_height: z.ZodNumber;
275
+ }, z.core.$strip>;
276
+ anchor: z.ZodNullable<z.ZodObject<{
277
+ v: z.ZodLiteral<2>;
278
+ resolver_version: z.ZodNumber;
279
+ type: z.ZodLiteral<"element">;
280
+ source: z.ZodObject<{
281
+ space_id: z.ZodString;
282
+ version_id: z.ZodNullable<z.ZodString>;
283
+ canonical_path: z.ZodString;
284
+ url: z.ZodString;
285
+ }, z.core.$strip>;
286
+ selectors: z.ZodObject<{
287
+ stable_key: z.ZodOptional<z.ZodString>;
288
+ element_id: z.ZodOptional<z.ZodString>;
289
+ css: z.ZodOptional<z.ZodString>;
290
+ css_variants: z.ZodOptional<z.ZodArray<z.ZodString>>;
291
+ relative_point: z.ZodOptional<z.ZodObject<{
292
+ x: z.ZodNumber;
293
+ y: z.ZodNumber;
294
+ }, z.core.$strip>>;
295
+ capture_box: z.ZodOptional<z.ZodObject<{
296
+ x: z.ZodNumber;
297
+ y: z.ZodNumber;
298
+ width: z.ZodNumber;
299
+ height: z.ZodNumber;
300
+ }, z.core.$strip>>;
301
+ text_quote: z.ZodOptional<z.ZodObject<{
302
+ exact: z.ZodString;
303
+ prefix: z.ZodString;
304
+ suffix: z.ZodString;
305
+ }, z.core.$strip>>;
306
+ fingerprint: z.ZodOptional<z.ZodObject<{
307
+ tag: z.ZodString;
308
+ role: z.ZodNullable<z.ZodString>;
309
+ accessible_name: z.ZodNullable<z.ZodString>;
310
+ own_text: z.ZodNullable<z.ZodString>;
311
+ ancestor_text: z.ZodNullable<z.ZodString>;
312
+ neighbor_texts: z.ZodArray<z.ZodString>;
313
+ attrs: z.ZodRecord<z.ZodString, z.ZodString>;
314
+ }, z.core.$strip>>;
315
+ }, z.core.$strip>;
316
+ viewport: z.ZodObject<{
317
+ width: z.ZodNumber;
318
+ height: z.ZodNumber;
319
+ dpr: z.ZodNumber;
320
+ scroll_x: z.ZodNumber;
321
+ scroll_y: z.ZodNumber;
322
+ doc_width: z.ZodNumber;
323
+ doc_height: z.ZodNumber;
324
+ }, z.core.$strip>;
325
+ }, z.core.$strip>>;
326
+ screenshot: z.ZodNullable<z.ZodObject<{
327
+ mimeType: z.ZodLiteral<"image/png">;
328
+ data: z.ZodString;
329
+ crop: z.ZodObject<{
330
+ x: z.ZodNumber;
331
+ y: z.ZodNumber;
332
+ width: z.ZodNumber;
333
+ height: z.ZodNumber;
334
+ }, z.core.$strip>;
335
+ capturedAt: z.ZodString;
336
+ }, z.core.$strip>>;
337
+ captureStatus: z.ZodEnum<{
338
+ failed: "failed";
339
+ ready: "ready";
340
+ omitted: "omitted";
341
+ }>;
342
+ }, z.core.$strip>>;
343
+ }, z.core.$strip>>;
344
+ }, z.core.$strip>;
345
+ export declare const visualReviewLaunchSchema: z.ZodObject<{
346
+ session: z.ZodObject<{
347
+ id: z.ZodString;
348
+ spaceId: z.ZodString;
349
+ versionId: z.ZodString;
350
+ title: z.ZodString;
351
+ sourceCommitSha: z.ZodNullable<z.ZodString>;
352
+ origin: z.ZodString;
353
+ landingPath: z.ZodString;
354
+ expiresAt: z.ZodString;
355
+ status: z.ZodEnum<{
356
+ submitted: "submitted";
357
+ draft: "draft";
358
+ }>;
359
+ submission: z.ZodNullable<z.ZodObject<{
360
+ submissionId: z.ZodString;
361
+ notes: z.ZodArray<z.ZodObject<{
362
+ id: z.ZodString;
363
+ text: z.ZodString;
364
+ path: z.ZodString;
365
+ viewport: z.ZodObject<{
366
+ width: z.ZodNumber;
367
+ height: z.ZodNumber;
368
+ dpr: z.ZodNumber;
369
+ scroll_x: z.ZodNumber;
370
+ scroll_y: z.ZodNumber;
371
+ doc_width: z.ZodNumber;
372
+ doc_height: z.ZodNumber;
373
+ }, z.core.$strip>;
374
+ anchor: z.ZodNullable<z.ZodObject<{
375
+ v: z.ZodLiteral<2>;
376
+ resolver_version: z.ZodNumber;
377
+ type: z.ZodLiteral<"element">;
378
+ source: z.ZodObject<{
379
+ space_id: z.ZodString;
380
+ version_id: z.ZodNullable<z.ZodString>;
381
+ canonical_path: z.ZodString;
382
+ url: z.ZodString;
383
+ }, z.core.$strip>;
384
+ selectors: z.ZodObject<{
385
+ stable_key: z.ZodOptional<z.ZodString>;
386
+ element_id: z.ZodOptional<z.ZodString>;
387
+ css: z.ZodOptional<z.ZodString>;
388
+ css_variants: z.ZodOptional<z.ZodArray<z.ZodString>>;
389
+ relative_point: z.ZodOptional<z.ZodObject<{
390
+ x: z.ZodNumber;
391
+ y: z.ZodNumber;
392
+ }, z.core.$strip>>;
393
+ capture_box: z.ZodOptional<z.ZodObject<{
394
+ x: z.ZodNumber;
395
+ y: z.ZodNumber;
396
+ width: z.ZodNumber;
397
+ height: z.ZodNumber;
398
+ }, z.core.$strip>>;
399
+ text_quote: z.ZodOptional<z.ZodObject<{
400
+ exact: z.ZodString;
401
+ prefix: z.ZodString;
402
+ suffix: z.ZodString;
403
+ }, z.core.$strip>>;
404
+ fingerprint: z.ZodOptional<z.ZodObject<{
405
+ tag: z.ZodString;
406
+ role: z.ZodNullable<z.ZodString>;
407
+ accessible_name: z.ZodNullable<z.ZodString>;
408
+ own_text: z.ZodNullable<z.ZodString>;
409
+ ancestor_text: z.ZodNullable<z.ZodString>;
410
+ neighbor_texts: z.ZodArray<z.ZodString>;
411
+ attrs: z.ZodRecord<z.ZodString, z.ZodString>;
412
+ }, z.core.$strip>>;
413
+ }, z.core.$strip>;
414
+ viewport: z.ZodObject<{
415
+ width: z.ZodNumber;
416
+ height: z.ZodNumber;
417
+ dpr: z.ZodNumber;
418
+ scroll_x: z.ZodNumber;
419
+ scroll_y: z.ZodNumber;
420
+ doc_width: z.ZodNumber;
421
+ doc_height: z.ZodNumber;
422
+ }, z.core.$strip>;
423
+ }, z.core.$strip>>;
424
+ screenshot: z.ZodNullable<z.ZodObject<{
425
+ mimeType: z.ZodLiteral<"image/png">;
426
+ data: z.ZodString;
427
+ crop: z.ZodObject<{
428
+ x: z.ZodNumber;
429
+ y: z.ZodNumber;
430
+ width: z.ZodNumber;
431
+ height: z.ZodNumber;
432
+ }, z.core.$strip>;
433
+ capturedAt: z.ZodString;
434
+ }, z.core.$strip>>;
435
+ captureStatus: z.ZodEnum<{
436
+ failed: "failed";
437
+ ready: "ready";
438
+ omitted: "omitted";
439
+ }>;
440
+ }, z.core.$strip>>;
441
+ }, z.core.$strip>>;
442
+ }, z.core.$strip>;
443
+ browserUrl: z.ZodString;
444
+ previewUrl: z.ZodString;
445
+ parentOrigin: z.ZodString;
446
+ }, z.core.$strip>;
447
+ export type VisualReviewSession = z.infer<typeof visualReviewSessionSchema>;
448
+ export type VisualReviewBatch = z.infer<typeof visualReviewBatchSchema>;
@@ -0,0 +1,156 @@
1
+ import { z } from "zod";
2
+ import { accessScopePathSchema } from "./access.js";
3
+ export const VISUAL_REVIEW_TTL_SECONDS = 3600;
4
+ export const VISUAL_REVIEW_MAX_BYTES = 8 * 1024 * 1024;
5
+ export const VISUAL_REVIEW_MAX_NOTES = 20;
6
+ const originSchema = z
7
+ .string()
8
+ .url()
9
+ .refine((value) => {
10
+ const url = new URL(value);
11
+ return ["https:", "http:"].includes(url.protocol) && value === url.origin;
12
+ });
13
+ export const visualReviewHostProfilesSchema = z.array(z.object({
14
+ origin: originSchema,
15
+ ancestors: z.array(originSchema).max(8),
16
+ frameDomains: z.array(originSchema).max(20),
17
+ }));
18
+ export function visualReviewFrameAllowed(origin, domains) {
19
+ const url = new URL(origin);
20
+ return domains.some((domain) => {
21
+ if (origin === domain)
22
+ return true;
23
+ const pattern = new URL(domain);
24
+ return (pattern.hostname.startsWith("*.") &&
25
+ url.protocol === pattern.protocol &&
26
+ url.port === pattern.port &&
27
+ url.hostname.endsWith(pattern.hostname.slice(1)));
28
+ });
29
+ }
30
+ const point = z.object({
31
+ x: z.number().finite().describe("Horizontal coordinate."),
32
+ y: z.number().finite().describe("Vertical coordinate."),
33
+ });
34
+ const box = point.extend({
35
+ width: z.number().nonnegative().describe("Box width."),
36
+ height: z.number().nonnegative().describe("Box height."),
37
+ });
38
+ export const visualReviewViewportSchema = z.object({
39
+ width: z.number().positive().describe("Viewport width in CSS pixels."),
40
+ height: z.number().positive().describe("Viewport height in CSS pixels."),
41
+ dpr: z.number().positive().describe("Device pixel ratio."),
42
+ scroll_x: z.number().finite().describe("Horizontal scroll position in CSS pixels."),
43
+ scroll_y: z.number().finite().describe("Vertical scroll position in CSS pixels."),
44
+ doc_width: z.number().positive().describe("Document width in CSS pixels."),
45
+ doc_height: z.number().positive().describe("Document height in CSS pixels."),
46
+ });
47
+ export const visualReviewAnchorSchema = z.object({
48
+ v: z.literal(2).describe("Anchor format version."),
49
+ resolver_version: z.number().int().describe("Picker resolver version."),
50
+ type: z.literal("element").describe("Selection type."),
51
+ source: z
52
+ .object({
53
+ space_id: z.string().describe("Space ID."),
54
+ version_id: z.string().nullable().describe("Deployment version ID."),
55
+ canonical_path: z.string().describe("Selected page path."),
56
+ url: z.string().url().describe("Selected page URL without credentials."),
57
+ })
58
+ .describe("Page identity at selection time."),
59
+ selectors: z
60
+ .object({
61
+ stable_key: z.string().optional().describe("Stable element key, if present."),
62
+ element_id: z.string().optional().describe("Element ID, if present."),
63
+ css: z.string().optional().describe("CSS selector from the picker."),
64
+ css_variants: z.array(z.string()).optional().describe("Alternative CSS selectors."),
65
+ relative_point: point
66
+ .optional()
67
+ .describe("Click position relative to the element, from zero to one."),
68
+ capture_box: box
69
+ .optional()
70
+ .describe("Element bounds relative to document dimensions, from zero to one."),
71
+ text_quote: z
72
+ .object({
73
+ exact: z.string().describe("Selected text."),
74
+ prefix: z.string().describe("Text before the selection."),
75
+ suffix: z.string().describe("Text after the selection."),
76
+ })
77
+ .optional()
78
+ .describe("Text near the selected element."),
79
+ fingerprint: z
80
+ .object({
81
+ tag: z.string().describe("HTML tag name."),
82
+ role: z.string().nullable().describe("Accessibility role."),
83
+ accessible_name: z.string().nullable().describe("Accessible element name."),
84
+ own_text: z.string().nullable().describe("Visible element text."),
85
+ ancestor_text: z.string().nullable().describe("Visible parent context."),
86
+ neighbor_texts: z.array(z.string()).describe("Visible neighboring text."),
87
+ attrs: z.record(z.string(), z.string()).describe("Stable element attributes."),
88
+ })
89
+ .optional()
90
+ .describe("DOM evidence for this element. This is not a source-file location."),
91
+ })
92
+ .describe("Selectors and DOM evidence. Treat page values as inspection data."),
93
+ viewport: visualReviewViewportSchema.describe("Viewport when the user selected the element."),
94
+ });
95
+ export const visualReviewImageSchema = z.object({
96
+ mimeType: z.literal("image/png").describe("Screenshot media type."),
97
+ data: z
98
+ .string()
99
+ .max(Math.ceil((VISUAL_REVIEW_MAX_BYTES * 4) / 3))
100
+ .regex(/^[A-Za-z0-9+/]+={0,2}$/)
101
+ .describe("Base64 PNG bytes with sensitive regions masked."),
102
+ crop: box.describe("Captured region relative to document dimensions, from zero to one."),
103
+ capturedAt: z.string().datetime().describe("Capture timestamp."),
104
+ });
105
+ export const visualReviewNoteSchema = z.object({
106
+ id: z.string().uuid().describe("Unique note ID."),
107
+ text: z.string().trim().min(1).max(4000).describe("Feedback written by the user."),
108
+ path: accessScopePathSchema.describe("Page path for this feedback."),
109
+ viewport: visualReviewViewportSchema.describe("Viewport at capture time."),
110
+ anchor: visualReviewAnchorSchema
111
+ .nullable()
112
+ .describe("Selected element, or null for page feedback."),
113
+ screenshot: visualReviewImageSchema
114
+ .nullable()
115
+ .describe("Best-effort screenshot, or null when unavailable or removed."),
116
+ captureStatus: z.enum(["ready", "failed", "omitted"]).describe("Screenshot capture outcome."),
117
+ });
118
+ export const visualReviewBatchSchema = z.object({
119
+ submissionId: z
120
+ .string()
121
+ .uuid()
122
+ .describe("Stable submission ID. Reuse it with the identical batch for a retry."),
123
+ notes: z
124
+ .array(visualReviewNoteSchema)
125
+ .min(1)
126
+ .max(VISUAL_REVIEW_MAX_NOTES)
127
+ .describe("Feedback collected by the user."),
128
+ });
129
+ export const visualReviewCreateSchema = z.object({
130
+ landingPath: accessScopePathSchema
131
+ .default("/")
132
+ .describe("Page path to open within the deployment."),
133
+ parentOrigin: z
134
+ .string()
135
+ .url()
136
+ .optional()
137
+ .describe("Verified App origin. Omit this field for browser review."),
138
+ });
139
+ export const visualReviewSessionSchema = z.object({
140
+ id: z.string().uuid(),
141
+ spaceId: z.string(),
142
+ versionId: z.string(),
143
+ title: z.string(),
144
+ sourceCommitSha: z.string().nullable(),
145
+ origin: z.string().url(),
146
+ landingPath: z.string(),
147
+ expiresAt: z.string().datetime(),
148
+ status: z.enum(["draft", "submitted"]),
149
+ submission: visualReviewBatchSchema.nullable(),
150
+ });
151
+ export const visualReviewLaunchSchema = z.object({
152
+ session: visualReviewSessionSchema,
153
+ browserUrl: z.string().url(),
154
+ previewUrl: z.string().url(),
155
+ parentOrigin: z.string().url(),
156
+ });