@spacefast/common 0.0.24 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/brand-assets/LICENSE-Haskoy.txt +93 -0
  2. package/brand-assets/haskoy-latin-variable.woff2 +0 -0
  3. package/brand-assets/spacefast-favicon.svg +4 -4
  4. package/brand-assets/spacefast-sf-full-bleed.svg +3 -3
  5. package/brand-assets/spacefast-wordmark.svg +2 -4
  6. package/dist/agents/connect-targets.d.ts +6 -146
  7. package/dist/agents/connect-targets.js +63 -295
  8. package/dist/agents/private-key-oauth.d.ts +31 -2
  9. package/dist/agents/private-key-oauth.js +166 -92
  10. package/dist/agents/registry/core.d.ts +292 -0
  11. package/dist/agents/registry/core.js +1388 -0
  12. package/dist/agents/registry/deeplink-probes.d.ts +23 -0
  13. package/dist/agents/registry/deeplink-probes.js +18 -0
  14. package/dist/agents/registry/node.d.ts +56 -0
  15. package/dist/agents/registry/node.js +339 -0
  16. package/dist/brand-assets-build.js +3 -6
  17. package/dist/brand-assets.d.ts +5 -15
  18. package/dist/brand-assets.js +12 -14
  19. package/dist/brand.d.ts +17 -0
  20. package/dist/brand.js +24 -4
  21. package/dist/config/domains.d.ts +79 -12
  22. package/dist/config/domains.js +128 -29
  23. package/dist/config/index.js +1 -2
  24. package/dist/contracts/abuse.js +9 -24
  25. package/dist/contracts/access-profiles.d.ts +86 -0
  26. package/dist/contracts/access-profiles.js +89 -0
  27. package/dist/contracts/access.d.ts +24 -30
  28. package/dist/contracts/access.js +33 -64
  29. package/dist/contracts/activity.d.ts +18 -1
  30. package/dist/contracts/activity.js +72 -26
  31. package/dist/contracts/analytics.js +8 -10
  32. package/dist/contracts/api-keys.d.ts +77 -52
  33. package/dist/contracts/api-keys.js +44 -24
  34. package/dist/contracts/application-journal.d.ts +216 -0
  35. package/dist/contracts/application-journal.js +167 -0
  36. package/dist/contracts/auth.d.ts +90 -17
  37. package/dist/contracts/auth.js +86 -17
  38. package/dist/contracts/beta.d.ts +9 -4
  39. package/dist/contracts/beta.js +20 -16
  40. package/dist/contracts/billing.d.ts +2 -1
  41. package/dist/contracts/billing.js +37 -11
  42. package/dist/contracts/bootstrap.d.ts +791 -0
  43. package/dist/contracts/bootstrap.js +51 -0
  44. package/dist/contracts/builds.d.ts +209 -18
  45. package/dist/contracts/builds.js +93 -27
  46. package/dist/contracts/channels.d.ts +43 -0
  47. package/dist/contracts/channels.js +25 -9
  48. package/dist/contracts/cli.d.ts +7 -0
  49. package/dist/contracts/cli.js +6 -0
  50. package/dist/contracts/collab-public.d.ts +1 -1
  51. package/dist/contracts/collab-public.js +5 -8
  52. package/dist/contracts/comments.d.ts +44 -34
  53. package/dist/contracts/comments.js +107 -77
  54. package/dist/contracts/commerce.d.ts +165 -0
  55. package/dist/contracts/commerce.js +146 -0
  56. package/dist/contracts/common.d.ts +3 -3
  57. package/dist/contracts/common.js +20 -31
  58. package/dist/contracts/content-contract-verification.d.ts +521 -0
  59. package/dist/contracts/content-contract-verification.js +320 -0
  60. package/dist/contracts/content-platform-fixture.d.ts +1278 -0
  61. package/dist/contracts/content-platform-fixture.js +44 -0
  62. package/dist/contracts/content-program.d.ts +994 -0
  63. package/dist/contracts/content-program.js +658 -0
  64. package/dist/contracts/content-sync.d.ts +290 -0
  65. package/dist/contracts/content-sync.js +167 -0
  66. package/dist/contracts/content.d.ts +432 -0
  67. package/dist/contracts/content.js +303 -0
  68. package/dist/contracts/continuation.d.ts +17 -1
  69. package/dist/contracts/continuation.js +23 -23
  70. package/dist/contracts/countries.js +3 -4
  71. package/dist/contracts/crons.d.ts +52 -0
  72. package/dist/contracts/crons.js +60 -0
  73. package/dist/contracts/dashboard-prefs.d.ts +56 -0
  74. package/dist/contracts/dashboard-prefs.js +51 -0
  75. package/dist/contracts/device-auth.d.ts +234 -37
  76. package/dist/contracts/device-auth.js +267 -53
  77. package/dist/contracts/docs.d.ts +1 -5
  78. package/dist/contracts/docs.js +7 -15
  79. package/dist/contracts/domains.d.ts +501 -93
  80. package/dist/contracts/domains.js +193 -55
  81. package/dist/contracts/email-preferences.d.ts +3 -3
  82. package/dist/contracts/email-preferences.js +6 -7
  83. package/dist/contracts/enums.d.ts +27 -26
  84. package/dist/contracts/enums.js +68 -61
  85. package/dist/contracts/error-code-meta.d.ts +283 -7
  86. package/dist/contracts/error-code-meta.js +97 -5
  87. package/dist/contracts/error-codes.d.ts +5 -5
  88. package/dist/contracts/error-codes.js +82 -17
  89. package/dist/contracts/events.d.ts +100 -20
  90. package/dist/contracts/events.js +107 -20
  91. package/dist/contracts/execution.d.ts +48 -64
  92. package/dist/contracts/execution.js +52 -62
  93. package/dist/contracts/feature-lifecycle.d.ts +73 -27
  94. package/dist/contracts/feature-lifecycle.js +86 -26
  95. package/dist/contracts/features.d.ts +68 -19
  96. package/dist/contracts/features.js +42 -41
  97. package/dist/contracts/fixtures/content-platform-v1.json +1108 -0
  98. package/dist/contracts/frame-session.d.ts +192 -0
  99. package/dist/contracts/frame-session.js +164 -0
  100. package/dist/contracts/functions.d.ts +338 -164
  101. package/dist/contracts/functions.js +367 -198
  102. package/dist/contracts/git.d.ts +27 -33
  103. package/dist/contracts/git.js +10 -11
  104. package/dist/contracts/grant-copy.d.ts +43 -0
  105. package/dist/contracts/grant-copy.js +44 -0
  106. package/dist/contracts/grants.d.ts +62 -54
  107. package/dist/contracts/grants.js +124 -23
  108. package/dist/contracts/ids.d.ts +4 -1
  109. package/dist/contracts/ids.js +6 -3
  110. package/dist/contracts/internal.d.ts +8 -18
  111. package/dist/contracts/internal.js +13 -14
  112. package/dist/contracts/mcp.d.ts +28 -0
  113. package/dist/contracts/mcp.js +28 -0
  114. package/dist/contracts/me.d.ts +6 -1
  115. package/dist/contracts/me.js +12 -6
  116. package/dist/contracts/notifications.d.ts +27 -29
  117. package/dist/contracts/notifications.js +9 -4
  118. package/dist/contracts/oauth-resources.d.ts +112 -10
  119. package/dist/contracts/oauth-resources.js +116 -11
  120. package/dist/contracts/oauth-scope-actions.d.ts +90 -0
  121. package/dist/contracts/oauth-scope-actions.js +126 -0
  122. package/dist/contracts/operations.d.ts +27 -4
  123. package/dist/contracts/operations.js +12 -6
  124. package/dist/contracts/pages.d.ts +31 -7
  125. package/dist/contracts/pages.js +22 -5
  126. package/dist/contracts/partner-notifications.d.ts +3 -0
  127. package/dist/contracts/partner-notifications.js +65 -0
  128. package/dist/contracts/{platform.d.ts → partner.d.ts} +29 -42
  129. package/dist/contracts/{platform.js → partner.js} +27 -40
  130. package/dist/contracts/plan-policy.js +1 -1
  131. package/dist/contracts/principal-assertion.d.ts +43 -0
  132. package/dist/contracts/principal-assertion.js +67 -0
  133. package/dist/contracts/principals.d.ts +73 -0
  134. package/dist/contracts/principals.js +59 -0
  135. package/dist/contracts/privacy.d.ts +11 -0
  136. package/dist/contracts/privacy.js +17 -0
  137. package/dist/contracts/problem-document.js +3 -4
  138. package/dist/contracts/publish-archive.d.ts +269 -161
  139. package/dist/contracts/publish-archive.js +11 -1
  140. package/dist/contracts/push-new.d.ts +8 -8
  141. package/dist/contracts/quotas.js +5 -5
  142. package/dist/contracts/realtime.d.ts +52 -0
  143. package/dist/contracts/realtime.js +54 -0
  144. package/dist/contracts/repository-connections.d.ts +44 -31
  145. package/dist/contracts/repository-connections.js +17 -5
  146. package/dist/contracts/resources.d.ts +105 -14
  147. package/dist/contracts/resources.js +150 -26
  148. package/dist/contracts/route-inventory.d.ts +358 -0
  149. package/dist/contracts/route-inventory.js +141 -0
  150. package/dist/contracts/runtime-api.d.ts +206 -82
  151. package/dist/contracts/runtime-api.js +131 -70
  152. package/dist/contracts/runtime-app.d.ts +13 -23
  153. package/dist/contracts/runtime-app.js +39 -24
  154. package/dist/contracts/runtime-components.d.ts +143 -0
  155. package/dist/contracts/runtime-components.js +199 -0
  156. package/dist/contracts/runtime-db.d.ts +49 -23
  157. package/dist/contracts/runtime-db.js +87 -22
  158. package/dist/contracts/runtime-purge.d.ts +8 -0
  159. package/dist/contracts/runtime-purge.js +5 -0
  160. package/dist/contracts/runtime-services.d.ts +43 -75
  161. package/dist/contracts/runtime-services.js +29 -49
  162. package/dist/contracts/runtime-storage.d.ts +15 -14
  163. package/dist/contracts/runtime-storage.js +30 -14
  164. package/dist/contracts/sf-config-v1.d.ts +48 -14
  165. package/dist/contracts/slugs.js +13 -4
  166. package/dist/contracts/space-config.d.ts +283 -19
  167. package/dist/contracts/space-config.js +430 -80
  168. package/dist/contracts/spaces.d.ts +376 -290
  169. package/dist/contracts/spaces.js +200 -135
  170. package/dist/contracts/superadmin-activity.d.ts +3 -43
  171. package/dist/contracts/superadmin-activity.js +6 -30
  172. package/dist/contracts/superadmin-emails.d.ts +1 -0
  173. package/dist/contracts/superadmin-emails.js +17 -1
  174. package/dist/contracts/superadmin-runtime.d.ts +199 -0
  175. package/dist/contracts/superadmin-runtime.js +141 -0
  176. package/dist/contracts/superadmin-search.d.ts +22 -2
  177. package/dist/contracts/superadmin-search.js +14 -6
  178. package/dist/contracts/superadmin-spaces.d.ts +438 -189
  179. package/dist/contracts/superadmin-spaces.js +131 -25
  180. package/dist/contracts/superadmin-teams.d.ts +5 -2
  181. package/dist/contracts/superadmin-teams.js +1 -2
  182. package/dist/contracts/superadmin-tenants.d.ts +627 -12
  183. package/dist/contracts/superadmin-tenants.js +32 -13
  184. package/dist/contracts/superadmin.d.ts +232 -37
  185. package/dist/contracts/superadmin.js +106 -22
  186. package/dist/contracts/tags.d.ts +85 -58
  187. package/dist/contracts/tags.js +47 -37
  188. package/dist/contracts/teams.d.ts +86 -26
  189. package/dist/contracts/teams.js +90 -31
  190. package/dist/contracts/tenants.d.ts +135 -0
  191. package/dist/contracts/tenants.js +120 -0
  192. package/dist/contracts/test-triggers.d.ts +70 -0
  193. package/dist/contracts/test-triggers.js +116 -0
  194. package/dist/contracts/theme-json.js +3 -8
  195. package/dist/contracts/transfers.d.ts +1 -0
  196. package/dist/contracts/transfers.js +3 -2
  197. package/dist/contracts/usage.d.ts +209 -0
  198. package/dist/contracts/usage.js +124 -12
  199. package/dist/contracts/variables.d.ts +2 -2
  200. package/dist/contracts/variables.js +9 -13
  201. package/dist/contracts/webhooks.d.ts +13 -5
  202. package/dist/contracts/webhooks.js +3 -1
  203. package/dist/contracts/zero.d.ts +72 -81
  204. package/dist/contracts/zero.js +80 -78
  205. package/dist/dashboard-paths/index.d.ts +24 -21
  206. package/dist/dashboard-paths/index.js +35 -47
  207. package/dist/dashboard-paths/route-reservations.generated.d.ts +2 -0
  208. package/dist/dashboard-paths/route-reservations.generated.js +36 -0
  209. package/dist/docs/agent-arrival.d.ts +92 -0
  210. package/dist/docs/agent-arrival.js +227 -0
  211. package/dist/docs/agent-output-policy.d.ts +6 -0
  212. package/dist/docs/agent-output-policy.js +22 -0
  213. package/dist/docs/agent-prose.d.ts +12 -18
  214. package/dist/docs/agent-prose.js +73 -51
  215. package/dist/docs/agent-setup.d.ts +72 -41
  216. package/dist/docs/agent-setup.js +339 -436
  217. package/dist/docs/catalog.d.ts +153 -95
  218. package/dist/docs/catalog.js +163 -48
  219. package/dist/docs/error-docs.d.ts +2098 -1
  220. package/dist/docs/error-docs.js +421 -144
  221. package/dist/docs/index-build.d.ts +0 -1
  222. package/dist/docs/index-build.js +2 -3
  223. package/dist/docs/page-context-prompt.d.ts +77 -0
  224. package/dist/docs/page-context-prompt.js +131 -0
  225. package/dist/docs/reference-urls.d.ts +46 -0
  226. package/dist/docs/reference-urls.js +79 -0
  227. package/dist/docs/search.d.ts +6 -8
  228. package/dist/docs/search.js +10 -13
  229. package/dist/docs/skill-distribution.d.ts +4 -1
  230. package/dist/docs/skill-distribution.js +10 -5
  231. package/dist/docs/skills.d.ts +120 -120
  232. package/dist/docs/skills.js +121 -73
  233. package/dist/docs/start-prompts.d.ts +45 -0
  234. package/dist/docs/start-prompts.js +62 -0
  235. package/dist/domain-exploration.js +9 -13
  236. package/dist/og-template.d.ts +56 -0
  237. package/dist/og-template.js +56 -0
  238. package/dist/slug-policy/index.js +5 -11
  239. package/dist/test-helpers/fetch-stub.js +1 -0
  240. package/dist/utils/browser-credential.d.ts +13 -6
  241. package/dist/utils/browser-credential.js +14 -7
  242. package/dist/utils/build-settings.d.ts +21 -1
  243. package/dist/utils/build-settings.js +133 -15
  244. package/dist/utils/canonical-json.d.ts +3 -5
  245. package/dist/utils/canonical-json.js +4 -5
  246. package/dist/utils/cast-transport.d.ts +5 -17
  247. package/dist/utils/cast-transport.js +6 -19
  248. package/dist/utils/claim-token.js +1 -2
  249. package/dist/utils/comment-avatars.js +4 -6
  250. package/dist/utils/concurrency.js +3 -3
  251. package/dist/utils/content-type.d.ts +7 -6
  252. package/dist/utils/content-type.js +73 -51
  253. package/dist/utils/credential-policy.d.ts +50 -6
  254. package/dist/utils/credential-policy.js +126 -59
  255. package/dist/utils/dns-instructions.js +9 -9
  256. package/dist/utils/egress-policy.fixtures.json +1 -1
  257. package/dist/utils/error-code.js +1 -0
  258. package/dist/utils/generate-space-name.d.ts +3 -8
  259. package/dist/utils/generate-space-name.js +3 -8
  260. package/dist/utils/grant-decision.fixtures.json +2 -2
  261. package/dist/utils/grants.d.ts +0 -1
  262. package/dist/utils/grants.js +7 -8
  263. package/dist/utils/gravatar.d.ts +2 -4
  264. package/dist/utils/gravatar.js +6 -12
  265. package/dist/utils/id-hints.js +14 -23
  266. package/dist/utils/idempotency.d.ts +3 -3
  267. package/dist/utils/idempotency.js +6 -7
  268. package/dist/utils/local-space-state.d.ts +23 -26
  269. package/dist/utils/local-space-state.js +46 -46
  270. package/dist/utils/oauth-signed-query.d.ts +3 -5
  271. package/dist/utils/oauth-signed-query.js +6 -9
  272. package/dist/utils/one-shot-replay.d.ts +7 -6
  273. package/dist/utils/one-shot-replay.js +3 -5
  274. package/dist/utils/page-colors.d.ts +15 -19
  275. package/dist/utils/page-colors.js +23 -45
  276. package/dist/utils/page-fonts.d.ts +1 -1
  277. package/dist/utils/page-fonts.js +8 -20
  278. package/dist/utils/page-preview.d.ts +0 -1
  279. package/dist/utils/page-preview.js +0 -1
  280. package/dist/utils/pages.d.ts +33 -3
  281. package/dist/utils/pages.js +83 -30
  282. package/dist/utils/privacy-regions.d.ts +19 -0
  283. package/dist/utils/privacy-regions.js +91 -0
  284. package/dist/utils/publish-form-data.d.ts +4 -5
  285. package/dist/utils/publish-form-data.js +2 -3
  286. package/dist/utils/publish-policy.d.ts +11 -17
  287. package/dist/utils/publish-policy.fixtures.json +11 -5
  288. package/dist/utils/publish-policy.js +65 -110
  289. package/dist/utils/query-client.d.ts +2 -0
  290. package/dist/utils/query-client.js +10 -1
  291. package/dist/utils/runtime-paths.d.ts +4 -4
  292. package/dist/utils/runtime-paths.js +6 -8
  293. package/dist/utils/runtime-upload.d.ts +9 -0
  294. package/dist/utils/runtime-upload.js +12 -0
  295. package/dist/utils/secure-local-file.d.ts +3 -3
  296. package/dist/utils/secure-local-file.js +23 -40
  297. package/dist/utils/space-config.d.ts +12 -15
  298. package/dist/utils/space-config.js +13 -16
  299. package/dist/utils/static-runtime-policy.d.ts +10 -7
  300. package/dist/utils/static-runtime-policy.fixtures.json +38 -41
  301. package/dist/utils/static-runtime-policy.generated.d.ts +16 -0
  302. package/dist/utils/static-runtime-policy.generated.js +70 -0
  303. package/dist/utils/static-runtime-policy.js +31 -132
  304. package/dist/utils/storage-policy.js +1 -2
  305. package/dist/utils/upload-session.d.ts +4 -1
  306. package/dist/utils/upload-session.js +41 -19
  307. package/dist/utils/version-path.js +11 -19
  308. package/dist/utils/wpcom-auth-redirects.d.ts +5 -14
  309. package/dist/utils/wpcom-auth-redirects.js +1 -4
  310. package/dist/vocabulary.d.ts +13 -13
  311. package/dist/vocabulary.js +52 -27
  312. package/package.json +15 -18
  313. package/dist/agents/client-registry.d.ts +0 -22
  314. package/dist/agents/client-registry.js +0 -41
  315. package/dist/docs/agent-handoff-document.d.ts +0 -15
  316. package/dist/docs/agent-handoff-document.js +0 -180
  317. package/dist/docs/agent-solutions.d.ts +0 -110
  318. package/dist/docs/agent-solutions.js +0 -183
  319. package/dist/utils/query-keys.d.ts +0 -84
  320. package/dist/utils/query-keys.js +0 -108
@@ -0,0 +1,290 @@
1
+ import { z } from "zod";
2
+ export declare const syncLedgerV1Schema: z.ZodObject<{
3
+ version: z.ZodLiteral<1>;
4
+ bindingId: z.core.$ZodBranded<z.ZodString, "ContentSyncBindingId", "out">;
5
+ source: z.ZodString;
6
+ baseMarkdown: z.ZodString;
7
+ markdownDigest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
8
+ blocksDigest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
9
+ wordpressRevisionId: z.ZodNumber;
10
+ serializerVersion: z.ZodLiteral<1>;
11
+ revision: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
12
+ lastDirection: z.ZodEnum<{
13
+ push: "push";
14
+ pull: "pull";
15
+ }>;
16
+ }, z.core.$strict>;
17
+ export type SyncLedgerV1 = z.infer<typeof syncLedgerV1Schema>;
18
+ export declare const syncReconcileInputV1Schema: z.ZodDiscriminatedUnion<[z.ZodObject<{
19
+ state: z.ZodLiteral<"initial">;
20
+ bindingId: z.core.$ZodBranded<z.ZodString, "ContentSyncBindingId", "out">;
21
+ source: z.ZodString;
22
+ markdown: z.ZodString;
23
+ observedSourceRevision: z.ZodString;
24
+ operationId: z.ZodTemplateLiteral<`op_${string}`>;
25
+ }, z.core.$strict>, z.ZodObject<{
26
+ state: z.ZodLiteral<"bound">;
27
+ baseRevision: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
28
+ bindingId: z.core.$ZodBranded<z.ZodString, "ContentSyncBindingId", "out">;
29
+ source: z.ZodString;
30
+ markdown: z.ZodString;
31
+ observedSourceRevision: z.ZodString;
32
+ operationId: z.ZodTemplateLiteral<`op_${string}`>;
33
+ }, z.core.$strict>], "state">;
34
+ export type SyncReconcileInputV1 = z.infer<typeof syncReconcileInputV1Schema>;
35
+ export declare const syncReceiptV1Schema: z.ZodDiscriminatedUnion<[z.ZodObject<{
36
+ status: z.ZodLiteral<"created">;
37
+ format: z.ZodLiteral<"spacefast.markdown-sync">;
38
+ version: z.ZodLiteral<1>;
39
+ operationId: z.ZodTemplateLiteral<`op_${string}`>;
40
+ ledger: z.ZodObject<{
41
+ version: z.ZodLiteral<1>;
42
+ bindingId: z.core.$ZodBranded<z.ZodString, "ContentSyncBindingId", "out">;
43
+ source: z.ZodString;
44
+ baseMarkdown: z.ZodString;
45
+ markdownDigest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
46
+ blocksDigest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
47
+ wordpressRevisionId: z.ZodNumber;
48
+ serializerVersion: z.ZodLiteral<1>;
49
+ revision: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
50
+ lastDirection: z.ZodEnum<{
51
+ push: "push";
52
+ pull: "pull";
53
+ }>;
54
+ }, z.core.$strict>;
55
+ }, z.core.$strict>, z.ZodObject<{
56
+ status: z.ZodLiteral<"unchanged">;
57
+ format: z.ZodLiteral<"spacefast.markdown-sync">;
58
+ version: z.ZodLiteral<1>;
59
+ operationId: z.ZodTemplateLiteral<`op_${string}`>;
60
+ ledger: z.ZodObject<{
61
+ version: z.ZodLiteral<1>;
62
+ bindingId: z.core.$ZodBranded<z.ZodString, "ContentSyncBindingId", "out">;
63
+ source: z.ZodString;
64
+ baseMarkdown: z.ZodString;
65
+ markdownDigest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
66
+ blocksDigest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
67
+ wordpressRevisionId: z.ZodNumber;
68
+ serializerVersion: z.ZodLiteral<1>;
69
+ revision: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
70
+ lastDirection: z.ZodEnum<{
71
+ push: "push";
72
+ pull: "pull";
73
+ }>;
74
+ }, z.core.$strict>;
75
+ }, z.core.$strict>, z.ZodObject<{
76
+ status: z.ZodLiteral<"pushed">;
77
+ format: z.ZodLiteral<"spacefast.markdown-sync">;
78
+ version: z.ZodLiteral<1>;
79
+ operationId: z.ZodTemplateLiteral<`op_${string}`>;
80
+ ledger: z.ZodObject<{
81
+ version: z.ZodLiteral<1>;
82
+ bindingId: z.core.$ZodBranded<z.ZodString, "ContentSyncBindingId", "out">;
83
+ source: z.ZodString;
84
+ baseMarkdown: z.ZodString;
85
+ markdownDigest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
86
+ blocksDigest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
87
+ wordpressRevisionId: z.ZodNumber;
88
+ serializerVersion: z.ZodLiteral<1>;
89
+ revision: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
90
+ lastDirection: z.ZodEnum<{
91
+ push: "push";
92
+ pull: "pull";
93
+ }>;
94
+ }, z.core.$strict>;
95
+ }, z.core.$strict>, z.ZodObject<{
96
+ status: z.ZodLiteral<"pulled">;
97
+ sourceWrite: z.ZodObject<{
98
+ state: z.ZodLiteral<"prepared">;
99
+ source: z.ZodString;
100
+ expectedSourceRevision: z.ZodString;
101
+ markdown: z.ZodString;
102
+ markdownDigest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
103
+ }, z.core.$strict>;
104
+ format: z.ZodLiteral<"spacefast.markdown-sync">;
105
+ version: z.ZodLiteral<1>;
106
+ operationId: z.ZodTemplateLiteral<`op_${string}`>;
107
+ ledger: z.ZodObject<{
108
+ version: z.ZodLiteral<1>;
109
+ bindingId: z.core.$ZodBranded<z.ZodString, "ContentSyncBindingId", "out">;
110
+ source: z.ZodString;
111
+ baseMarkdown: z.ZodString;
112
+ markdownDigest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
113
+ blocksDigest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
114
+ wordpressRevisionId: z.ZodNumber;
115
+ serializerVersion: z.ZodLiteral<1>;
116
+ revision: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
117
+ lastDirection: z.ZodEnum<{
118
+ push: "push";
119
+ pull: "pull";
120
+ }>;
121
+ }, z.core.$strict>;
122
+ }, z.core.$strict>], "status">;
123
+ export type SyncReceiptV1 = z.infer<typeof syncReceiptV1Schema>;
124
+ export declare const syncReconciliationExchangeV1Schema: z.ZodObject<{
125
+ request: z.ZodDiscriminatedUnion<[z.ZodObject<{
126
+ state: z.ZodLiteral<"initial">;
127
+ bindingId: z.core.$ZodBranded<z.ZodString, "ContentSyncBindingId", "out">;
128
+ source: z.ZodString;
129
+ markdown: z.ZodString;
130
+ observedSourceRevision: z.ZodString;
131
+ operationId: z.ZodTemplateLiteral<`op_${string}`>;
132
+ }, z.core.$strict>, z.ZodObject<{
133
+ state: z.ZodLiteral<"bound">;
134
+ baseRevision: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
135
+ bindingId: z.core.$ZodBranded<z.ZodString, "ContentSyncBindingId", "out">;
136
+ source: z.ZodString;
137
+ markdown: z.ZodString;
138
+ observedSourceRevision: z.ZodString;
139
+ operationId: z.ZodTemplateLiteral<`op_${string}`>;
140
+ }, z.core.$strict>], "state">;
141
+ receipt: z.ZodDiscriminatedUnion<[z.ZodObject<{
142
+ status: z.ZodLiteral<"created">;
143
+ format: z.ZodLiteral<"spacefast.markdown-sync">;
144
+ version: z.ZodLiteral<1>;
145
+ operationId: z.ZodTemplateLiteral<`op_${string}`>;
146
+ ledger: z.ZodObject<{
147
+ version: z.ZodLiteral<1>;
148
+ bindingId: z.core.$ZodBranded<z.ZodString, "ContentSyncBindingId", "out">;
149
+ source: z.ZodString;
150
+ baseMarkdown: z.ZodString;
151
+ markdownDigest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
152
+ blocksDigest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
153
+ wordpressRevisionId: z.ZodNumber;
154
+ serializerVersion: z.ZodLiteral<1>;
155
+ revision: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
156
+ lastDirection: z.ZodEnum<{
157
+ push: "push";
158
+ pull: "pull";
159
+ }>;
160
+ }, z.core.$strict>;
161
+ }, z.core.$strict>, z.ZodObject<{
162
+ status: z.ZodLiteral<"unchanged">;
163
+ format: z.ZodLiteral<"spacefast.markdown-sync">;
164
+ version: z.ZodLiteral<1>;
165
+ operationId: z.ZodTemplateLiteral<`op_${string}`>;
166
+ ledger: z.ZodObject<{
167
+ version: z.ZodLiteral<1>;
168
+ bindingId: z.core.$ZodBranded<z.ZodString, "ContentSyncBindingId", "out">;
169
+ source: z.ZodString;
170
+ baseMarkdown: z.ZodString;
171
+ markdownDigest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
172
+ blocksDigest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
173
+ wordpressRevisionId: z.ZodNumber;
174
+ serializerVersion: z.ZodLiteral<1>;
175
+ revision: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
176
+ lastDirection: z.ZodEnum<{
177
+ push: "push";
178
+ pull: "pull";
179
+ }>;
180
+ }, z.core.$strict>;
181
+ }, z.core.$strict>, z.ZodObject<{
182
+ status: z.ZodLiteral<"pushed">;
183
+ format: z.ZodLiteral<"spacefast.markdown-sync">;
184
+ version: z.ZodLiteral<1>;
185
+ operationId: z.ZodTemplateLiteral<`op_${string}`>;
186
+ ledger: z.ZodObject<{
187
+ version: z.ZodLiteral<1>;
188
+ bindingId: z.core.$ZodBranded<z.ZodString, "ContentSyncBindingId", "out">;
189
+ source: z.ZodString;
190
+ baseMarkdown: z.ZodString;
191
+ markdownDigest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
192
+ blocksDigest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
193
+ wordpressRevisionId: z.ZodNumber;
194
+ serializerVersion: z.ZodLiteral<1>;
195
+ revision: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
196
+ lastDirection: z.ZodEnum<{
197
+ push: "push";
198
+ pull: "pull";
199
+ }>;
200
+ }, z.core.$strict>;
201
+ }, z.core.$strict>, z.ZodObject<{
202
+ status: z.ZodLiteral<"pulled">;
203
+ sourceWrite: z.ZodObject<{
204
+ state: z.ZodLiteral<"prepared">;
205
+ source: z.ZodString;
206
+ expectedSourceRevision: z.ZodString;
207
+ markdown: z.ZodString;
208
+ markdownDigest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
209
+ }, z.core.$strict>;
210
+ format: z.ZodLiteral<"spacefast.markdown-sync">;
211
+ version: z.ZodLiteral<1>;
212
+ operationId: z.ZodTemplateLiteral<`op_${string}`>;
213
+ ledger: z.ZodObject<{
214
+ version: z.ZodLiteral<1>;
215
+ bindingId: z.core.$ZodBranded<z.ZodString, "ContentSyncBindingId", "out">;
216
+ source: z.ZodString;
217
+ baseMarkdown: z.ZodString;
218
+ markdownDigest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
219
+ blocksDigest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
220
+ wordpressRevisionId: z.ZodNumber;
221
+ serializerVersion: z.ZodLiteral<1>;
222
+ revision: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
223
+ lastDirection: z.ZodEnum<{
224
+ push: "push";
225
+ pull: "pull";
226
+ }>;
227
+ }, z.core.$strict>;
228
+ }, z.core.$strict>], "status">;
229
+ }, z.core.$strict>;
230
+ export type SyncReconciliationExchangeV1 = z.infer<typeof syncReconciliationExchangeV1Schema>;
231
+ export declare const syncSourceAcknowledgementV1Schema: z.ZodObject<{
232
+ format: z.ZodLiteral<"spacefast.markdown-sync-ack">;
233
+ version: z.ZodLiteral<1>;
234
+ bindingId: z.core.$ZodBranded<z.ZodString, "ContentSyncBindingId", "out">;
235
+ operationId: z.ZodTemplateLiteral<`op_${string}`>;
236
+ sourceRevision: z.ZodString;
237
+ baseRevision: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
238
+ }, z.core.$strict>;
239
+ export type SyncSourceAcknowledgementV1 = z.infer<typeof syncSourceAcknowledgementV1Schema>;
240
+ export declare const contentMarkdownConflictDetailsSchema: z.ZodObject<{
241
+ bindingId: z.core.$ZodBranded<z.ZodString, "ContentSyncBindingId", "out">;
242
+ base: z.ZodObject<{
243
+ markdown: z.ZodString;
244
+ digest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
245
+ revision: z.ZodString;
246
+ }, z.core.$strict>;
247
+ source: z.ZodObject<{
248
+ markdown: z.ZodString;
249
+ digest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
250
+ revision: z.ZodString;
251
+ }, z.core.$strict>;
252
+ wordpress: z.ZodObject<{
253
+ markdown: z.ZodString;
254
+ digest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
255
+ revision: z.ZodString;
256
+ wordpressRevisionId: z.ZodNumber;
257
+ }, z.core.$strict>;
258
+ }, z.core.$strict>;
259
+ export type ContentMarkdownConflictDetails = z.infer<typeof contentMarkdownConflictDetailsSchema>;
260
+ export declare const contentMarkdownConflictProblemSchema: z.ZodObject<{
261
+ type: z.ZodString;
262
+ title: z.ZodString;
263
+ detail: z.ZodString;
264
+ pointer: z.ZodOptional<z.ZodString>;
265
+ suggestions: z.ZodOptional<z.ZodArray<z.ZodString>>;
266
+ next: z.ZodOptional<z.ZodArray<z.ZodString>>;
267
+ requestId: z.ZodString;
268
+ status: z.ZodLiteral<409>;
269
+ code: z.ZodLiteral<"content_markdown_conflict">;
270
+ details: z.ZodObject<{
271
+ bindingId: z.core.$ZodBranded<z.ZodString, "ContentSyncBindingId", "out">;
272
+ base: z.ZodObject<{
273
+ markdown: z.ZodString;
274
+ digest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
275
+ revision: z.ZodString;
276
+ }, z.core.$strict>;
277
+ source: z.ZodObject<{
278
+ markdown: z.ZodString;
279
+ digest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
280
+ revision: z.ZodString;
281
+ }, z.core.$strict>;
282
+ wordpress: z.ZodObject<{
283
+ markdown: z.ZodString;
284
+ digest: z.core.$ZodBranded<z.ZodString, "ContentProgramSha256", "out">;
285
+ revision: z.ZodString;
286
+ wordpressRevisionId: z.ZodNumber;
287
+ }, z.core.$strict>;
288
+ }, z.core.$strict>;
289
+ }, z.core.$strip>;
290
+ export type ContentMarkdownConflictProblem = z.infer<typeof contentMarkdownConflictProblemSchema>;
@@ -0,0 +1,167 @@
1
+ import { z } from "zod";
2
+ import { ProblemDetailsSchema } from "./common.js";
3
+ import { contentProgramSha256Schema, contentSyncBindingIdSchema, contentSyncSourcePathSchema, } from "./content-program.js";
4
+ import { registeredIdSchema } from "./ids.js";
5
+ const syncMarkdownSchema = z.string().max(1_000_000);
6
+ const contentSyncSourceRevisionSchema = z.string().min(1).max(512);
7
+ export const syncLedgerV1Schema = z
8
+ .object({
9
+ version: z.literal(1),
10
+ bindingId: contentSyncBindingIdSchema,
11
+ source: contentSyncSourcePathSchema,
12
+ baseMarkdown: syncMarkdownSchema,
13
+ markdownDigest: contentProgramSha256Schema,
14
+ blocksDigest: contentProgramSha256Schema,
15
+ wordpressRevisionId: z.number().int().positive(),
16
+ serializerVersion: z.literal(1),
17
+ revision: contentProgramSha256Schema,
18
+ lastDirection: z.enum(["push", "pull"]),
19
+ })
20
+ .strict();
21
+ const syncReconcileInputFields = {
22
+ bindingId: contentSyncBindingIdSchema,
23
+ source: contentSyncSourcePathSchema,
24
+ markdown: syncMarkdownSchema,
25
+ observedSourceRevision: contentSyncSourceRevisionSchema,
26
+ operationId: registeredIdSchema("op"),
27
+ };
28
+ export const syncReconcileInputV1Schema = z.discriminatedUnion("state", [
29
+ z.object({ ...syncReconcileInputFields, state: z.literal("initial") }).strict(),
30
+ z
31
+ .object({
32
+ ...syncReconcileInputFields,
33
+ state: z.literal("bound"),
34
+ baseRevision: contentProgramSha256Schema,
35
+ })
36
+ .strict(),
37
+ ]);
38
+ const syncReceiptFields = {
39
+ format: z.literal("spacefast.markdown-sync"),
40
+ version: z.literal(1),
41
+ operationId: registeredIdSchema("op"),
42
+ ledger: syncLedgerV1Schema,
43
+ };
44
+ export const syncReceiptV1Schema = z
45
+ .discriminatedUnion("status", [
46
+ z.object({ ...syncReceiptFields, status: z.literal("created") }).strict(),
47
+ z.object({ ...syncReceiptFields, status: z.literal("unchanged") }).strict(),
48
+ z.object({ ...syncReceiptFields, status: z.literal("pushed") }).strict(),
49
+ z
50
+ .object({
51
+ ...syncReceiptFields,
52
+ status: z.literal("pulled"),
53
+ sourceWrite: z
54
+ .object({
55
+ state: z.literal("prepared"),
56
+ source: contentSyncSourcePathSchema,
57
+ expectedSourceRevision: contentSyncSourceRevisionSchema,
58
+ markdown: syncMarkdownSchema,
59
+ markdownDigest: contentProgramSha256Schema,
60
+ })
61
+ .strict(),
62
+ })
63
+ .strict(),
64
+ ])
65
+ .superRefine((receipt, context) => {
66
+ if ((receipt.status === "pushed" && receipt.ledger.lastDirection !== "push") ||
67
+ (receipt.status === "pulled" && receipt.ledger.lastDirection !== "pull")) {
68
+ context.addIssue({
69
+ code: "custom",
70
+ path: ["ledger", "lastDirection"],
71
+ message: `${receipt.status} receipts require a ${receipt.status === "pushed" ? "push" : "pull"} ledger direction`,
72
+ });
73
+ }
74
+ if (receipt.status !== "pulled")
75
+ return;
76
+ if (receipt.sourceWrite.source !== receipt.ledger.source) {
77
+ context.addIssue({
78
+ code: "custom",
79
+ path: ["sourceWrite", "source"],
80
+ message: "prepared source write must target the ledger source",
81
+ });
82
+ }
83
+ if (receipt.sourceWrite.markdown !== receipt.ledger.baseMarkdown) {
84
+ context.addIssue({
85
+ code: "custom",
86
+ path: ["sourceWrite", "markdown"],
87
+ message: "prepared source write must contain the reconciled ledger markdown",
88
+ });
89
+ }
90
+ if (receipt.sourceWrite.markdownDigest !== receipt.ledger.markdownDigest) {
91
+ context.addIssue({
92
+ code: "custom",
93
+ path: ["sourceWrite", "markdownDigest"],
94
+ message: "prepared source write digest must match the ledger markdown digest",
95
+ });
96
+ }
97
+ });
98
+ export const syncReconciliationExchangeV1Schema = z
99
+ .object({
100
+ request: syncReconcileInputV1Schema,
101
+ receipt: syncReceiptV1Schema,
102
+ })
103
+ .strict()
104
+ .superRefine((exchange, context) => {
105
+ if (exchange.receipt.operationId !== exchange.request.operationId) {
106
+ context.addIssue({
107
+ code: "custom",
108
+ path: ["receipt", "operationId"],
109
+ message: "sync receipt must bind the request operation",
110
+ });
111
+ }
112
+ if (exchange.receipt.ledger.bindingId !== exchange.request.bindingId) {
113
+ context.addIssue({
114
+ code: "custom",
115
+ path: ["receipt", "ledger", "bindingId"],
116
+ message: "sync receipt must bind the requested document",
117
+ });
118
+ }
119
+ if (exchange.receipt.ledger.source !== exchange.request.source) {
120
+ context.addIssue({
121
+ code: "custom",
122
+ path: ["receipt", "ledger", "source"],
123
+ message: "sync receipt ledger must bind the requested source",
124
+ });
125
+ }
126
+ if (exchange.receipt.status === "pulled" &&
127
+ exchange.receipt.sourceWrite.expectedSourceRevision !==
128
+ exchange.request.observedSourceRevision) {
129
+ context.addIssue({
130
+ code: "custom",
131
+ path: ["receipt", "sourceWrite", "expectedSourceRevision"],
132
+ message: "prepared source writes must compare-and-swap the observed source revision",
133
+ });
134
+ }
135
+ });
136
+ export const syncSourceAcknowledgementV1Schema = z
137
+ .object({
138
+ format: z.literal("spacefast.markdown-sync-ack"),
139
+ version: z.literal(1),
140
+ bindingId: contentSyncBindingIdSchema,
141
+ operationId: registeredIdSchema("op"),
142
+ sourceRevision: contentSyncSourceRevisionSchema,
143
+ baseRevision: contentProgramSha256Schema,
144
+ })
145
+ .strict();
146
+ const syncConflictRepresentationSchema = z
147
+ .object({
148
+ markdown: syncMarkdownSchema,
149
+ digest: contentProgramSha256Schema,
150
+ revision: z.string().min(1).max(512),
151
+ })
152
+ .strict();
153
+ export const contentMarkdownConflictDetailsSchema = z
154
+ .object({
155
+ bindingId: contentSyncBindingIdSchema,
156
+ base: syncConflictRepresentationSchema,
157
+ source: syncConflictRepresentationSchema,
158
+ wordpress: syncConflictRepresentationSchema.extend({
159
+ wordpressRevisionId: z.number().int().positive(),
160
+ }),
161
+ })
162
+ .strict();
163
+ export const contentMarkdownConflictProblemSchema = ProblemDetailsSchema.extend({
164
+ status: z.literal(409),
165
+ code: z.literal("content_markdown_conflict"),
166
+ details: contentMarkdownConflictDetailsSchema,
167
+ });