@abloatai/transaction 0.37.0

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 (723) hide show
  1. package/CONVENTIONS.md +83 -0
  2. package/README.md +48 -0
  3. package/dist/ablo.d.ts +90 -0
  4. package/dist/ablo.d.ts.map +1 -0
  5. package/dist/ablo.js +34 -0
  6. package/dist/ablo.js.map +1 -0
  7. package/dist/ai-sdk/coordinatedTool.d.ts +123 -0
  8. package/dist/ai-sdk/coordinatedTool.d.ts.map +1 -0
  9. package/dist/ai-sdk/coordinatedTool.js +135 -0
  10. package/dist/ai-sdk/coordinatedTool.js.map +1 -0
  11. package/dist/ai-sdk/index.d.ts +2 -0
  12. package/dist/ai-sdk/index.d.ts.map +1 -0
  13. package/dist/ai-sdk/index.js +2 -0
  14. package/dist/ai-sdk/index.js.map +1 -0
  15. package/dist/auth/apiKey.d.ts +154 -0
  16. package/dist/auth/apiKey.d.ts.map +1 -0
  17. package/dist/auth/apiKey.js +408 -0
  18. package/dist/auth/apiKey.js.map +1 -0
  19. package/dist/auth/bootstrapScope.d.ts +16 -0
  20. package/dist/auth/bootstrapScope.d.ts.map +1 -0
  21. package/dist/auth/bootstrapScope.js +2 -0
  22. package/dist/auth/bootstrapScope.js.map +1 -0
  23. package/dist/auth/browserCredentialSafety.d.ts +7 -0
  24. package/dist/auth/browserCredentialSafety.d.ts.map +1 -0
  25. package/dist/auth/browserCredentialSafety.js +29 -0
  26. package/dist/auth/browserCredentialSafety.js.map +1 -0
  27. package/dist/auth/capability.d.ts +241 -0
  28. package/dist/auth/capability.d.ts.map +1 -0
  29. package/dist/auth/capability.js +253 -0
  30. package/dist/auth/capability.js.map +1 -0
  31. package/dist/auth/capabilityLifecycle.d.ts +47 -0
  32. package/dist/auth/capabilityLifecycle.d.ts.map +1 -0
  33. package/dist/auth/capabilityLifecycle.js +108 -0
  34. package/dist/auth/capabilityLifecycle.js.map +1 -0
  35. package/dist/auth/credentialEndpoint.d.ts +10 -0
  36. package/dist/auth/credentialEndpoint.d.ts.map +1 -0
  37. package/dist/auth/credentialEndpoint.js +58 -0
  38. package/dist/auth/credentialEndpoint.js.map +1 -0
  39. package/dist/auth/credentialEndpointProtocol.d.ts +24 -0
  40. package/dist/auth/credentialEndpointProtocol.d.ts.map +1 -0
  41. package/dist/auth/credentialEndpointProtocol.js +34 -0
  42. package/dist/auth/credentialEndpointProtocol.js.map +1 -0
  43. package/dist/auth/credentialKind.d.ts +4 -0
  44. package/dist/auth/credentialKind.d.ts.map +1 -0
  45. package/dist/auth/credentialKind.js +15 -0
  46. package/dist/auth/credentialKind.js.map +1 -0
  47. package/dist/auth/credentialPolicy.d.ts +141 -0
  48. package/dist/auth/credentialPolicy.d.ts.map +1 -0
  49. package/dist/auth/credentialPolicy.js +113 -0
  50. package/dist/auth/credentialPolicy.js.map +1 -0
  51. package/dist/auth/credentialResult.d.ts +7 -0
  52. package/dist/auth/credentialResult.d.ts.map +1 -0
  53. package/dist/auth/credentialResult.js +9 -0
  54. package/dist/auth/credentialResult.js.map +1 -0
  55. package/dist/auth/credentialSource.d.ts +31 -0
  56. package/dist/auth/credentialSource.d.ts.map +1 -0
  57. package/dist/auth/credentialSource.js +56 -0
  58. package/dist/auth/credentialSource.js.map +1 -0
  59. package/dist/auth/hostedEndpoints.d.ts +22 -0
  60. package/dist/auth/hostedEndpoints.d.ts.map +1 -0
  61. package/dist/auth/hostedEndpoints.js +22 -0
  62. package/dist/auth/hostedEndpoints.js.map +1 -0
  63. package/dist/auth/identity.d.ts +62 -0
  64. package/dist/auth/identity.d.ts.map +1 -0
  65. package/dist/auth/identity.js +224 -0
  66. package/dist/auth/identity.js.map +1 -0
  67. package/dist/auth/index.d.ts +189 -0
  68. package/dist/auth/index.d.ts.map +1 -0
  69. package/dist/auth/index.js +312 -0
  70. package/dist/auth/index.js.map +1 -0
  71. package/dist/auth/schemas.d.ts +41 -0
  72. package/dist/auth/schemas.d.ts.map +1 -0
  73. package/dist/auth/schemas.js +69 -0
  74. package/dist/auth/schemas.js.map +1 -0
  75. package/dist/auth/sessionMint.d.ts +29 -0
  76. package/dist/auth/sessionMint.d.ts.map +1 -0
  77. package/dist/auth/sessionMint.js +92 -0
  78. package/dist/auth/sessionMint.js.map +1 -0
  79. package/dist/auth/token.d.ts +4 -0
  80. package/dist/auth/token.d.ts.map +1 -0
  81. package/dist/auth/token.js +4 -0
  82. package/dist/auth/token.js.map +1 -0
  83. package/dist/batching/index.d.ts +56 -0
  84. package/dist/batching/index.d.ts.map +1 -0
  85. package/dist/batching/index.js +148 -0
  86. package/dist/batching/index.js.map +1 -0
  87. package/dist/coordination/awaitClaimGrant.d.ts +57 -0
  88. package/dist/coordination/awaitClaimGrant.d.ts.map +1 -0
  89. package/dist/coordination/awaitClaimGrant.js +138 -0
  90. package/dist/coordination/awaitClaimGrant.js.map +1 -0
  91. package/dist/coordination/claimHeartbeatLoop.d.ts +85 -0
  92. package/dist/coordination/claimHeartbeatLoop.d.ts.map +1 -0
  93. package/dist/coordination/claimHeartbeatLoop.js +109 -0
  94. package/dist/coordination/claimHeartbeatLoop.js.map +1 -0
  95. package/dist/coordination/claimMeta.d.ts +50 -0
  96. package/dist/coordination/claimMeta.d.ts.map +1 -0
  97. package/dist/coordination/claimMeta.js +53 -0
  98. package/dist/coordination/claimMeta.js.map +1 -0
  99. package/dist/coordination/events.d.ts +75 -0
  100. package/dist/coordination/events.d.ts.map +1 -0
  101. package/dist/coordination/events.js +8 -0
  102. package/dist/coordination/events.js.map +1 -0
  103. package/dist/coordination/index.d.ts +20 -0
  104. package/dist/coordination/index.d.ts.map +1 -0
  105. package/dist/coordination/index.js +46 -0
  106. package/dist/coordination/index.js.map +1 -0
  107. package/dist/coordination/locator.d.ts +106 -0
  108. package/dist/coordination/locator.d.ts.map +1 -0
  109. package/dist/coordination/locator.js +110 -0
  110. package/dist/coordination/locator.js.map +1 -0
  111. package/dist/coordination/schema.d.ts +1332 -0
  112. package/dist/coordination/schema.d.ts.map +1 -0
  113. package/dist/coordination/schema.js +1137 -0
  114. package/dist/coordination/schema.js.map +1 -0
  115. package/dist/coordination/targetConflict.d.ts +3 -0
  116. package/dist/coordination/targetConflict.d.ts.map +1 -0
  117. package/dist/coordination/targetConflict.js +74 -0
  118. package/dist/coordination/targetConflict.js.map +1 -0
  119. package/dist/coordination/trace.d.ts +79 -0
  120. package/dist/coordination/trace.d.ts.map +1 -0
  121. package/dist/coordination/trace.js +139 -0
  122. package/dist/coordination/trace.js.map +1 -0
  123. package/dist/docs/catalog.d.ts +73 -0
  124. package/dist/docs/catalog.d.ts.map +1 -0
  125. package/dist/docs/catalog.js +231 -0
  126. package/dist/docs/catalog.js.map +1 -0
  127. package/dist/docs/index.d.ts +11 -0
  128. package/dist/docs/index.d.ts.map +1 -0
  129. package/dist/docs/index.js +11 -0
  130. package/dist/docs/index.js.map +1 -0
  131. package/dist/durableWrites.d.ts +63 -0
  132. package/dist/durableWrites.d.ts.map +1 -0
  133. package/dist/durableWrites.js +72 -0
  134. package/dist/durableWrites.js.map +1 -0
  135. package/dist/environment.d.ts +106 -0
  136. package/dist/environment.d.ts.map +1 -0
  137. package/dist/environment.js +109 -0
  138. package/dist/environment.js.map +1 -0
  139. package/dist/errorCodes.d.ts +411 -0
  140. package/dist/errorCodes.d.ts.map +1 -0
  141. package/dist/errorCodes.js +500 -0
  142. package/dist/errorCodes.js.map +1 -0
  143. package/dist/errors.d.ts +429 -0
  144. package/dist/errors.d.ts.map +1 -0
  145. package/dist/errors.js +687 -0
  146. package/dist/errors.js.map +1 -0
  147. package/dist/footprint.d.ts +112 -0
  148. package/dist/footprint.d.ts.map +1 -0
  149. package/dist/footprint.js +0 -0
  150. package/dist/footprint.js.map +1 -0
  151. package/dist/headlessClient.d.ts +10 -0
  152. package/dist/headlessClient.d.ts.map +1 -0
  153. package/dist/headlessClient.js +114 -0
  154. package/dist/headlessClient.js.map +1 -0
  155. package/dist/index.d.ts +21 -0
  156. package/dist/index.d.ts.map +1 -0
  157. package/dist/index.js +21 -0
  158. package/dist/index.js.map +1 -0
  159. package/dist/keys/index.d.ts +88 -0
  160. package/dist/keys/index.d.ts.map +1 -0
  161. package/dist/keys/index.js +208 -0
  162. package/dist/keys/index.js.map +1 -0
  163. package/dist/log/syncDeltaRow.d.ts +159 -0
  164. package/dist/log/syncDeltaRow.d.ts.map +1 -0
  165. package/dist/log/syncDeltaRow.js +96 -0
  166. package/dist/log/syncDeltaRow.js.map +1 -0
  167. package/dist/logger.d.ts +17 -0
  168. package/dist/logger.d.ts.map +1 -0
  169. package/dist/logger.js +8 -0
  170. package/dist/logger.js.map +1 -0
  171. package/dist/observability.d.ts +54 -0
  172. package/dist/observability.d.ts.map +1 -0
  173. package/dist/observability.js +20 -0
  174. package/dist/observability.js.map +1 -0
  175. package/dist/policy/types.d.ts +218 -0
  176. package/dist/policy/types.d.ts.map +1 -0
  177. package/dist/policy/types.js +127 -0
  178. package/dist/policy/types.js.map +1 -0
  179. package/dist/resources/functionalUpdate.d.ts +80 -0
  180. package/dist/resources/functionalUpdate.d.ts.map +1 -0
  181. package/dist/resources/functionalUpdate.js +88 -0
  182. package/dist/resources/functionalUpdate.js.map +1 -0
  183. package/dist/resources/httpResources.d.ts +449 -0
  184. package/dist/resources/httpResources.d.ts.map +1 -0
  185. package/dist/resources/httpResources.js +8 -0
  186. package/dist/resources/httpResources.js.map +1 -0
  187. package/dist/resources/modelOperations.d.ts +380 -0
  188. package/dist/resources/modelOperations.d.ts.map +1 -0
  189. package/dist/resources/modelOperations.js +13 -0
  190. package/dist/resources/modelOperations.js.map +1 -0
  191. package/dist/resources/mutationOptions.d.ts +67 -0
  192. package/dist/resources/mutationOptions.d.ts.map +1 -0
  193. package/dist/resources/mutationOptions.js +10 -0
  194. package/dist/resources/mutationOptions.js.map +1 -0
  195. package/dist/resources/where.d.ts +102 -0
  196. package/dist/resources/where.d.ts.map +1 -0
  197. package/dist/resources/where.js +116 -0
  198. package/dist/resources/where.js.map +1 -0
  199. package/dist/resources/writeOptionsSchema.d.ts +48 -0
  200. package/dist/resources/writeOptionsSchema.d.ts.map +1 -0
  201. package/dist/resources/writeOptionsSchema.js +74 -0
  202. package/dist/resources/writeOptionsSchema.js.map +1 -0
  203. package/dist/schema/coordination.d.ts +113 -0
  204. package/dist/schema/coordination.d.ts.map +1 -0
  205. package/dist/schema/coordination.js +134 -0
  206. package/dist/schema/coordination.js.map +1 -0
  207. package/dist/schema/ddl.d.ts +98 -0
  208. package/dist/schema/ddl.d.ts.map +1 -0
  209. package/dist/schema/ddl.js +492 -0
  210. package/dist/schema/ddl.js.map +1 -0
  211. package/dist/schema/ddlLock.d.ts +36 -0
  212. package/dist/schema/ddlLock.d.ts.map +1 -0
  213. package/dist/schema/ddlLock.js +47 -0
  214. package/dist/schema/ddlLock.js.map +1 -0
  215. package/dist/schema/diff.d.ts +226 -0
  216. package/dist/schema/diff.d.ts.map +1 -0
  217. package/dist/schema/diff.js +290 -0
  218. package/dist/schema/diff.js.map +1 -0
  219. package/dist/schema/field.d.ts +121 -0
  220. package/dist/schema/field.d.ts.map +1 -0
  221. package/dist/schema/field.js +266 -0
  222. package/dist/schema/field.js.map +1 -0
  223. package/dist/schema/fieldRef.d.ts +58 -0
  224. package/dist/schema/fieldRef.d.ts.map +1 -0
  225. package/dist/schema/fieldRef.js +26 -0
  226. package/dist/schema/fieldRef.js.map +1 -0
  227. package/dist/schema/generate.d.ts +20 -0
  228. package/dist/schema/generate.d.ts.map +1 -0
  229. package/dist/schema/generate.js +87 -0
  230. package/dist/schema/generate.js.map +1 -0
  231. package/dist/schema/index.d.ts +43 -0
  232. package/dist/schema/index.d.ts.map +1 -0
  233. package/dist/schema/index.js +81 -0
  234. package/dist/schema/index.js.map +1 -0
  235. package/dist/schema/loadStrategy.d.ts +46 -0
  236. package/dist/schema/loadStrategy.d.ts.map +1 -0
  237. package/dist/schema/loadStrategy.js +47 -0
  238. package/dist/schema/loadStrategy.js.map +1 -0
  239. package/dist/schema/model.d.ts +380 -0
  240. package/dist/schema/model.d.ts.map +1 -0
  241. package/dist/schema/model.js +124 -0
  242. package/dist/schema/model.js.map +1 -0
  243. package/dist/schema/openapi.d.ts +59 -0
  244. package/dist/schema/openapi.d.ts.map +1 -0
  245. package/dist/schema/openapi.js +508 -0
  246. package/dist/schema/openapi.js.map +1 -0
  247. package/dist/schema/queries.d.ts +202 -0
  248. package/dist/schema/queries.d.ts.map +1 -0
  249. package/dist/schema/queries.js +144 -0
  250. package/dist/schema/queries.js.map +1 -0
  251. package/dist/schema/relation.d.ts +205 -0
  252. package/dist/schema/relation.d.ts.map +1 -0
  253. package/dist/schema/relation.js +105 -0
  254. package/dist/schema/relation.js.map +1 -0
  255. package/dist/schema/residency.d.ts +30 -0
  256. package/dist/schema/residency.d.ts.map +1 -0
  257. package/dist/schema/residency.js +26 -0
  258. package/dist/schema/residency.js.map +1 -0
  259. package/dist/schema/roles.d.ts +250 -0
  260. package/dist/schema/roles.d.ts.map +1 -0
  261. package/dist/schema/roles.js +231 -0
  262. package/dist/schema/roles.js.map +1 -0
  263. package/dist/schema/schema.d.ts +352 -0
  264. package/dist/schema/schema.d.ts.map +1 -0
  265. package/dist/schema/schema.js +326 -0
  266. package/dist/schema/schema.js.map +1 -0
  267. package/dist/schema/select.d.ts +41 -0
  268. package/dist/schema/select.d.ts.map +1 -0
  269. package/dist/schema/select.js +91 -0
  270. package/dist/schema/select.js.map +1 -0
  271. package/dist/schema/serialize.d.ts +116 -0
  272. package/dist/schema/serialize.d.ts.map +1 -0
  273. package/dist/schema/serialize.js +278 -0
  274. package/dist/schema/serialize.js.map +1 -0
  275. package/dist/schema/sugar.d.ts +110 -0
  276. package/dist/schema/sugar.d.ts.map +1 -0
  277. package/dist/schema/sugar.js +84 -0
  278. package/dist/schema/sugar.js.map +1 -0
  279. package/dist/schema/tenancy.d.ts +140 -0
  280. package/dist/schema/tenancy.d.ts.map +1 -0
  281. package/dist/schema/tenancy.js +191 -0
  282. package/dist/schema/tenancy.js.map +1 -0
  283. package/dist/server/adapter.d.ts +174 -0
  284. package/dist/server/adapter.d.ts.map +1 -0
  285. package/dist/server/adapter.js +19 -0
  286. package/dist/server/adapter.js.map +1 -0
  287. package/dist/server/commit.d.ts +108 -0
  288. package/dist/server/commit.d.ts.map +1 -0
  289. package/dist/server/commit.js +2 -0
  290. package/dist/server/commit.js.map +1 -0
  291. package/dist/server/index.d.ts +15 -0
  292. package/dist/server/index.d.ts.map +1 -0
  293. package/dist/server/index.js +3 -0
  294. package/dist/server/index.js.map +1 -0
  295. package/dist/server/readConfig.d.ts +81 -0
  296. package/dist/server/readConfig.d.ts.map +1 -0
  297. package/dist/server/readConfig.js +9 -0
  298. package/dist/server/readConfig.js.map +1 -0
  299. package/dist/server/storageMode.d.ts +24 -0
  300. package/dist/server/storageMode.d.ts.map +1 -0
  301. package/dist/server/storageMode.js +18 -0
  302. package/dist/server/storageMode.js.map +1 -0
  303. package/dist/source/adapter.d.ts +84 -0
  304. package/dist/source/adapter.d.ts.map +1 -0
  305. package/dist/source/adapter.js +25 -0
  306. package/dist/source/adapter.js.map +1 -0
  307. package/dist/source/adapters/drizzle.d.ts +49 -0
  308. package/dist/source/adapters/drizzle.d.ts.map +1 -0
  309. package/dist/source/adapters/drizzle.js +220 -0
  310. package/dist/source/adapters/drizzle.js.map +1 -0
  311. package/dist/source/adapters/kysely.d.ts +43 -0
  312. package/dist/source/adapters/kysely.d.ts.map +1 -0
  313. package/dist/source/adapters/kysely.js +206 -0
  314. package/dist/source/adapters/kysely.js.map +1 -0
  315. package/dist/source/adapters/kyselyMutationCore.d.ts +77 -0
  316. package/dist/source/adapters/kyselyMutationCore.d.ts.map +1 -0
  317. package/dist/source/adapters/kyselyMutationCore.js +126 -0
  318. package/dist/source/adapters/kyselyMutationCore.js.map +1 -0
  319. package/dist/source/adapters/memory.d.ts +14 -0
  320. package/dist/source/adapters/memory.d.ts.map +1 -0
  321. package/dist/source/adapters/memory.js +131 -0
  322. package/dist/source/adapters/memory.js.map +1 -0
  323. package/dist/source/adapters/prisma.d.ts +64 -0
  324. package/dist/source/adapters/prisma.d.ts.map +1 -0
  325. package/dist/source/adapters/prisma.js +203 -0
  326. package/dist/source/adapters/prisma.js.map +1 -0
  327. package/dist/source/conformance.d.ts +38 -0
  328. package/dist/source/conformance.d.ts.map +1 -0
  329. package/dist/source/conformance.js +216 -0
  330. package/dist/source/conformance.js.map +1 -0
  331. package/dist/source/connector.d.ts +96 -0
  332. package/dist/source/connector.d.ts.map +1 -0
  333. package/dist/source/connector.js +267 -0
  334. package/dist/source/connector.js.map +1 -0
  335. package/dist/source/connectorProtocol.d.ts +155 -0
  336. package/dist/source/connectorProtocol.d.ts.map +1 -0
  337. package/dist/source/connectorProtocol.js +164 -0
  338. package/dist/source/connectorProtocol.js.map +1 -0
  339. package/dist/source/contract.d.ts +196 -0
  340. package/dist/source/contract.d.ts.map +1 -0
  341. package/dist/source/contract.js +165 -0
  342. package/dist/source/contract.js.map +1 -0
  343. package/dist/source/drizzle.d.ts +2 -0
  344. package/dist/source/drizzle.d.ts.map +1 -0
  345. package/dist/source/drizzle.js +2 -0
  346. package/dist/source/drizzle.js.map +1 -0
  347. package/dist/source/factory.d.ts +93 -0
  348. package/dist/source/factory.d.ts.map +1 -0
  349. package/dist/source/factory.js +287 -0
  350. package/dist/source/factory.js.map +1 -0
  351. package/dist/source/idempotency.d.ts +62 -0
  352. package/dist/source/idempotency.d.ts.map +1 -0
  353. package/dist/source/idempotency.js +145 -0
  354. package/dist/source/idempotency.js.map +1 -0
  355. package/dist/source/index.d.ts +24 -0
  356. package/dist/source/index.d.ts.map +1 -0
  357. package/dist/source/index.js +29 -0
  358. package/dist/source/index.js.map +1 -0
  359. package/dist/source/kysely.d.ts +3 -0
  360. package/dist/source/kysely.d.ts.map +1 -0
  361. package/dist/source/kysely.js +3 -0
  362. package/dist/source/kysely.js.map +1 -0
  363. package/dist/source/migrations.d.ts +22 -0
  364. package/dist/source/migrations.d.ts.map +1 -0
  365. package/dist/source/migrations.js +104 -0
  366. package/dist/source/migrations.js.map +1 -0
  367. package/dist/source/next.d.ts +33 -0
  368. package/dist/source/next.d.ts.map +1 -0
  369. package/dist/source/next.js +26 -0
  370. package/dist/source/next.js.map +1 -0
  371. package/dist/source/pushQueue.d.ts +135 -0
  372. package/dist/source/pushQueue.d.ts.map +1 -0
  373. package/dist/source/pushQueue.js +257 -0
  374. package/dist/source/pushQueue.js.map +1 -0
  375. package/dist/source/signing.d.ts +93 -0
  376. package/dist/source/signing.d.ts.map +1 -0
  377. package/dist/source/signing.js +163 -0
  378. package/dist/source/signing.js.map +1 -0
  379. package/dist/source/types.d.ts +402 -0
  380. package/dist/source/types.d.ts.map +1 -0
  381. package/dist/source/types.js +60 -0
  382. package/dist/source/types.js.map +1 -0
  383. package/dist/syncLog/contract.d.ts +21 -0
  384. package/dist/syncLog/contract.d.ts.map +1 -0
  385. package/dist/syncLog/contract.js +20 -0
  386. package/dist/syncLog/contract.js.map +1 -0
  387. package/dist/syncLog/index.d.ts +2 -0
  388. package/dist/syncLog/index.d.ts.map +1 -0
  389. package/dist/syncLog/index.js +2 -0
  390. package/dist/syncLog/index.js.map +1 -0
  391. package/dist/testing/fixtures/httpResponses.d.ts +74 -0
  392. package/dist/testing/fixtures/httpResponses.d.ts.map +1 -0
  393. package/dist/testing/fixtures/httpResponses.js +102 -0
  394. package/dist/testing/fixtures/httpResponses.js.map +1 -0
  395. package/dist/transactionLayer.d.ts +110 -0
  396. package/dist/transactionLayer.d.ts.map +1 -0
  397. package/dist/transactionLayer.js +25 -0
  398. package/dist/transactionLayer.js.map +1 -0
  399. package/dist/transactions/settlement/commitEnvelope.d.ts +144 -0
  400. package/dist/transactions/settlement/commitEnvelope.d.ts.map +1 -0
  401. package/dist/transactions/settlement/commitEnvelope.js +162 -0
  402. package/dist/transactions/settlement/commitEnvelope.js.map +1 -0
  403. package/dist/transactions/settlement/httpCommitEnvelope.d.ts +54 -0
  404. package/dist/transactions/settlement/httpCommitEnvelope.d.ts.map +1 -0
  405. package/dist/transactions/settlement/httpCommitEnvelope.js +208 -0
  406. package/dist/transactions/settlement/httpCommitEnvelope.js.map +1 -0
  407. package/dist/transactions/settlement/idempotencyKey.d.ts +11 -0
  408. package/dist/transactions/settlement/idempotencyKey.d.ts.map +1 -0
  409. package/dist/transactions/settlement/idempotencyKey.js +10 -0
  410. package/dist/transactions/settlement/idempotencyKey.js.map +1 -0
  411. package/dist/transactions/settlement/pendingWrite.d.ts +113 -0
  412. package/dist/transactions/settlement/pendingWrite.d.ts.map +1 -0
  413. package/dist/transactions/settlement/pendingWrite.js +21 -0
  414. package/dist/transactions/settlement/pendingWrite.js.map +1 -0
  415. package/dist/transport/commitFrames.d.ts +91 -0
  416. package/dist/transport/commitFrames.d.ts.map +1 -0
  417. package/dist/transport/commitFrames.js +135 -0
  418. package/dist/transport/commitFrames.js.map +1 -0
  419. package/dist/transport/connectionManager.d.ts +216 -0
  420. package/dist/transport/connectionManager.d.ts.map +1 -0
  421. package/dist/transport/connectionManager.js +674 -0
  422. package/dist/transport/connectionManager.js.map +1 -0
  423. package/dist/transport/credentialLifecycle.d.ts +178 -0
  424. package/dist/transport/credentialLifecycle.d.ts.map +1 -0
  425. package/dist/transport/credentialLifecycle.js +324 -0
  426. package/dist/transport/credentialLifecycle.js.map +1 -0
  427. package/dist/transport/heartbeat.d.ts +66 -0
  428. package/dist/transport/heartbeat.d.ts.map +1 -0
  429. package/dist/transport/heartbeat.js +94 -0
  430. package/dist/transport/heartbeat.js.map +1 -0
  431. package/dist/transport/httpClient.d.ts +143 -0
  432. package/dist/transport/httpClient.d.ts.map +1 -0
  433. package/dist/transport/httpClient.js +150 -0
  434. package/dist/transport/httpClient.js.map +1 -0
  435. package/dist/transport/httpFeed.d.ts +4 -0
  436. package/dist/transport/httpFeed.d.ts.map +1 -0
  437. package/dist/transport/httpFeed.js +94 -0
  438. package/dist/transport/httpFeed.js.map +1 -0
  439. package/dist/transport/httpOptions.d.ts +34 -0
  440. package/dist/transport/httpOptions.d.ts.map +1 -0
  441. package/dist/transport/httpOptions.js +13 -0
  442. package/dist/transport/httpOptions.js.map +1 -0
  443. package/dist/transport/httpTransport.d.ts +68 -0
  444. package/dist/transport/httpTransport.d.ts.map +1 -0
  445. package/dist/transport/httpTransport.js +1433 -0
  446. package/dist/transport/httpTransport.js.map +1 -0
  447. package/dist/transport/networkProbe.d.ts +85 -0
  448. package/dist/transport/networkProbe.d.ts.map +1 -0
  449. package/dist/transport/networkProbe.js +208 -0
  450. package/dist/transport/networkProbe.js.map +1 -0
  451. package/dist/transport/wsFrameHandlers.d.ts +129 -0
  452. package/dist/transport/wsFrameHandlers.d.ts.map +1 -0
  453. package/dist/transport/wsFrameHandlers.js +429 -0
  454. package/dist/transport/wsFrameHandlers.js.map +1 -0
  455. package/dist/transport/wsTransport.d.ts +575 -0
  456. package/dist/transport/wsTransport.d.ts.map +1 -0
  457. package/dist/transport/wsTransport.js +1024 -0
  458. package/dist/transport/wsTransport.js.map +1 -0
  459. package/dist/types/assertExact.d.ts +18 -0
  460. package/dist/types/assertExact.d.ts.map +1 -0
  461. package/dist/types/assertExact.js +2 -0
  462. package/dist/types/assertExact.js.map +1 -0
  463. package/dist/types/global.d.ts +108 -0
  464. package/dist/types/global.d.ts.map +1 -0
  465. package/dist/types/global.js +41 -0
  466. package/dist/types/global.js.map +1 -0
  467. package/dist/types/index.d.ts +206 -0
  468. package/dist/types/index.d.ts.map +1 -0
  469. package/dist/types/index.js +57 -0
  470. package/dist/types/index.js.map +1 -0
  471. package/dist/types/modelData.d.ts +11 -0
  472. package/dist/types/modelData.d.ts.map +1 -0
  473. package/dist/types/modelData.js +10 -0
  474. package/dist/types/modelData.js.map +1 -0
  475. package/dist/types/participant.d.ts +21 -0
  476. package/dist/types/participant.d.ts.map +1 -0
  477. package/dist/types/participant.js +11 -0
  478. package/dist/types/participant.js.map +1 -0
  479. package/dist/types/streams.d.ts +545 -0
  480. package/dist/types/streams.d.ts.map +1 -0
  481. package/dist/types/streams.js +12 -0
  482. package/dist/types/streams.js.map +1 -0
  483. package/dist/utils/asyncIterator.d.ts +35 -0
  484. package/dist/utils/asyncIterator.d.ts.map +1 -0
  485. package/dist/utils/asyncIterator.js +136 -0
  486. package/dist/utils/asyncIterator.js.map +1 -0
  487. package/dist/utils/duration.d.ts +51 -0
  488. package/dist/utils/duration.d.ts.map +1 -0
  489. package/dist/utils/duration.js +78 -0
  490. package/dist/utils/duration.js.map +1 -0
  491. package/dist/utils/json.d.ts +58 -0
  492. package/dist/utils/json.d.ts.map +1 -0
  493. package/dist/utils/json.js +277 -0
  494. package/dist/utils/json.js.map +1 -0
  495. package/dist/webhooks/events.d.ts +44 -0
  496. package/dist/webhooks/events.d.ts.map +1 -0
  497. package/dist/webhooks/events.js +43 -0
  498. package/dist/webhooks/events.js.map +1 -0
  499. package/dist/webhooks/index.d.ts +9 -0
  500. package/dist/webhooks/index.d.ts.map +1 -0
  501. package/dist/webhooks/index.js +9 -0
  502. package/dist/webhooks/index.js.map +1 -0
  503. package/dist/wire/accountResponses.d.ts +463 -0
  504. package/dist/wire/accountResponses.d.ts.map +1 -0
  505. package/dist/wire/accountResponses.js +294 -0
  506. package/dist/wire/accountResponses.js.map +1 -0
  507. package/dist/wire/auth.d.ts +57 -0
  508. package/dist/wire/auth.d.ts.map +1 -0
  509. package/dist/wire/auth.js +71 -0
  510. package/dist/wire/auth.js.map +1 -0
  511. package/dist/wire/bootstrapReason.d.ts +10 -0
  512. package/dist/wire/bootstrapReason.d.ts.map +1 -0
  513. package/dist/wire/bootstrapReason.js +9 -0
  514. package/dist/wire/bootstrapReason.js.map +1 -0
  515. package/dist/wire/claimEvent.d.ts +70 -0
  516. package/dist/wire/claimEvent.d.ts.map +1 -0
  517. package/dist/wire/claimEvent.js +74 -0
  518. package/dist/wire/claimEvent.js.map +1 -0
  519. package/dist/wire/claims.d.ts +475 -0
  520. package/dist/wire/claims.d.ts.map +1 -0
  521. package/dist/wire/claims.js +326 -0
  522. package/dist/wire/claims.js.map +1 -0
  523. package/dist/wire/commit.d.ts +604 -0
  524. package/dist/wire/commit.d.ts.map +1 -0
  525. package/dist/wire/commit.js +322 -0
  526. package/dist/wire/commit.js.map +1 -0
  527. package/dist/wire/delta.d.ts +251 -0
  528. package/dist/wire/delta.d.ts.map +1 -0
  529. package/dist/wire/delta.js +148 -0
  530. package/dist/wire/delta.js.map +1 -0
  531. package/dist/wire/errorEnvelope.d.ts +73 -0
  532. package/dist/wire/errorEnvelope.d.ts.map +1 -0
  533. package/dist/wire/errorEnvelope.js +124 -0
  534. package/dist/wire/errorEnvelope.js.map +1 -0
  535. package/dist/wire/feedCursor.d.ts +61 -0
  536. package/dist/wire/feedCursor.d.ts.map +1 -0
  537. package/dist/wire/feedCursor.js +83 -0
  538. package/dist/wire/feedCursor.js.map +1 -0
  539. package/dist/wire/feedEvent.d.ts +264 -0
  540. package/dist/wire/feedEvent.d.ts.map +1 -0
  541. package/dist/wire/feedEvent.js +66 -0
  542. package/dist/wire/feedEvent.js.map +1 -0
  543. package/dist/wire/frames.d.ts +195 -0
  544. package/dist/wire/frames.d.ts.map +1 -0
  545. package/dist/wire/frames.js +51 -0
  546. package/dist/wire/frames.js.map +1 -0
  547. package/dist/wire/inboundFrames.d.ts +490 -0
  548. package/dist/wire/inboundFrames.d.ts.map +1 -0
  549. package/dist/wire/inboundFrames.js +117 -0
  550. package/dist/wire/inboundFrames.js.map +1 -0
  551. package/dist/wire/index.d.ts +55 -0
  552. package/dist/wire/index.d.ts.map +1 -0
  553. package/dist/wire/index.js +84 -0
  554. package/dist/wire/index.js.map +1 -0
  555. package/dist/wire/listEnvelope.d.ts +38 -0
  556. package/dist/wire/listEnvelope.d.ts.map +1 -0
  557. package/dist/wire/listEnvelope.js +43 -0
  558. package/dist/wire/listEnvelope.js.map +1 -0
  559. package/dist/wire/modelMutations.d.ts +32 -0
  560. package/dist/wire/modelMutations.d.ts.map +1 -0
  561. package/dist/wire/modelMutations.js +53 -0
  562. package/dist/wire/modelMutations.js.map +1 -0
  563. package/dist/wire/modelResponses.d.ts +79 -0
  564. package/dist/wire/modelResponses.d.ts.map +1 -0
  565. package/dist/wire/modelResponses.js +44 -0
  566. package/dist/wire/modelResponses.js.map +1 -0
  567. package/dist/wire/modelShape.d.ts +79 -0
  568. package/dist/wire/modelShape.d.ts.map +1 -0
  569. package/dist/wire/modelShape.js +75 -0
  570. package/dist/wire/modelShape.js.map +1 -0
  571. package/dist/wire/protocol.d.ts +39 -0
  572. package/dist/wire/protocol.d.ts.map +1 -0
  573. package/dist/wire/protocol.js +39 -0
  574. package/dist/wire/protocol.js.map +1 -0
  575. package/dist/wire/protocolVersion.d.ts +74 -0
  576. package/dist/wire/protocolVersion.d.ts.map +1 -0
  577. package/dist/wire/protocolVersion.js +84 -0
  578. package/dist/wire/protocolVersion.js.map +1 -0
  579. package/package.json +187 -0
  580. package/src/ablo.ts +139 -0
  581. package/src/ai-sdk/coordinatedTool.ts +214 -0
  582. package/src/ai-sdk/index.ts +7 -0
  583. package/src/auth/apiKey.ts +540 -0
  584. package/src/auth/bootstrapScope.ts +15 -0
  585. package/src/auth/browserCredentialSafety.ts +48 -0
  586. package/src/auth/capability.ts +326 -0
  587. package/src/auth/capabilityLifecycle.ts +174 -0
  588. package/src/auth/credentialEndpoint.ts +79 -0
  589. package/src/auth/credentialEndpointProtocol.ts +51 -0
  590. package/src/auth/credentialKind.ts +20 -0
  591. package/src/auth/credentialPolicy.ts +244 -0
  592. package/src/auth/credentialResult.ts +23 -0
  593. package/src/auth/credentialSource.ts +99 -0
  594. package/src/auth/hostedEndpoints.ts +24 -0
  595. package/src/auth/identity.ts +330 -0
  596. package/src/auth/index.ts +592 -0
  597. package/src/auth/schemas.ts +94 -0
  598. package/src/auth/sessionMint.ts +126 -0
  599. package/src/auth/token.ts +4 -0
  600. package/src/batching/index.ts +200 -0
  601. package/src/coordination/awaitClaimGrant.ts +243 -0
  602. package/src/coordination/claimHeartbeatLoop.ts +165 -0
  603. package/src/coordination/claimMeta.ts +56 -0
  604. package/src/coordination/events.ts +86 -0
  605. package/src/coordination/index.ts +181 -0
  606. package/src/coordination/locator.ts +200 -0
  607. package/src/coordination/schema.ts +1346 -0
  608. package/src/coordination/targetConflict.ts +85 -0
  609. package/src/coordination/trace.ts +173 -0
  610. package/src/docs/catalog.ts +274 -0
  611. package/src/docs/index.ts +18 -0
  612. package/src/durableWrites.ts +134 -0
  613. package/src/environment.ts +132 -0
  614. package/src/errorCodes.ts +1591 -0
  615. package/src/errors.ts +918 -0
  616. package/src/footprint.ts +0 -0
  617. package/src/headlessClient.ts +161 -0
  618. package/src/index.ts +52 -0
  619. package/src/keys/index.ts +254 -0
  620. package/src/log/syncDeltaRow.ts +119 -0
  621. package/src/logger.ts +22 -0
  622. package/src/observability.ts +85 -0
  623. package/src/policy/types.ts +292 -0
  624. package/src/resources/functionalUpdate.ts +151 -0
  625. package/src/resources/httpResources.ts +520 -0
  626. package/src/resources/modelOperations.ts +444 -0
  627. package/src/resources/mutationOptions.ts +66 -0
  628. package/src/resources/where.ts +160 -0
  629. package/src/resources/writeOptionsSchema.ts +91 -0
  630. package/src/schema/coordination.ts +161 -0
  631. package/src/schema/ddl.ts +593 -0
  632. package/src/schema/ddlLock.ts +53 -0
  633. package/src/schema/diff.ts +489 -0
  634. package/src/schema/field.ts +321 -0
  635. package/src/schema/fieldRef.ts +88 -0
  636. package/src/schema/generate.ts +95 -0
  637. package/src/schema/index.ts +278 -0
  638. package/src/schema/loadStrategy.ts +52 -0
  639. package/src/schema/model.ts +476 -0
  640. package/src/schema/openapi.ts +658 -0
  641. package/src/schema/queries.ts +273 -0
  642. package/src/schema/relation.ts +291 -0
  643. package/src/schema/residency.ts +30 -0
  644. package/src/schema/roles.ts +325 -0
  645. package/src/schema/schema.ts +825 -0
  646. package/src/schema/select.ts +115 -0
  647. package/src/schema/serialize.ts +373 -0
  648. package/src/schema/sugar.ts +194 -0
  649. package/src/schema/tenancy.ts +221 -0
  650. package/src/server/adapter.ts +203 -0
  651. package/src/server/commit.ts +109 -0
  652. package/src/server/index.ts +26 -0
  653. package/src/server/readConfig.ts +82 -0
  654. package/src/server/storageMode.ts +20 -0
  655. package/src/source/adapter.ts +85 -0
  656. package/src/source/adapters/drizzle.ts +291 -0
  657. package/src/source/adapters/kysely.ts +346 -0
  658. package/src/source/adapters/kyselyMutationCore.ts +220 -0
  659. package/src/source/adapters/memory.ts +154 -0
  660. package/src/source/adapters/prisma.ts +282 -0
  661. package/src/source/conformance.ts +287 -0
  662. package/src/source/connector.ts +394 -0
  663. package/src/source/connectorProtocol.ts +189 -0
  664. package/src/source/contract.ts +221 -0
  665. package/src/source/drizzle.ts +1 -0
  666. package/src/source/factory.ts +444 -0
  667. package/src/source/idempotency.ts +189 -0
  668. package/src/source/index.ts +182 -0
  669. package/src/source/kysely.ts +2 -0
  670. package/src/source/migrations.ts +109 -0
  671. package/src/source/next.ts +38 -0
  672. package/src/source/pushQueue.ts +368 -0
  673. package/src/source/signing.ts +279 -0
  674. package/src/source/types.ts +502 -0
  675. package/src/syncLog/contract.ts +32 -0
  676. package/src/syncLog/index.ts +1 -0
  677. package/src/testing/fixtures/httpResponses.ts +155 -0
  678. package/src/transactionLayer.ts +122 -0
  679. package/src/transactions/settlement/commitEnvelope.ts +192 -0
  680. package/src/transactions/settlement/httpCommitEnvelope.ts +250 -0
  681. package/src/transactions/settlement/idempotencyKey.ts +11 -0
  682. package/src/transactions/settlement/pendingWrite.ts +24 -0
  683. package/src/transport/commitFrames.ts +225 -0
  684. package/src/transport/connectionManager.ts +856 -0
  685. package/src/transport/credentialLifecycle.ts +389 -0
  686. package/src/transport/heartbeat.ts +118 -0
  687. package/src/transport/httpClient.ts +354 -0
  688. package/src/transport/httpFeed.ts +111 -0
  689. package/src/transport/httpOptions.ts +41 -0
  690. package/src/transport/httpTransport.ts +1976 -0
  691. package/src/transport/networkProbe.ts +249 -0
  692. package/src/transport/wsFrameHandlers.ts +619 -0
  693. package/src/transport/wsTransport.ts +1491 -0
  694. package/src/types/assertExact.ts +17 -0
  695. package/src/types/global.ts +123 -0
  696. package/src/types/index.ts +270 -0
  697. package/src/types/modelData.ts +11 -0
  698. package/src/types/participant.ts +22 -0
  699. package/src/types/streams.ts +702 -0
  700. package/src/utils/asyncIterator.ts +141 -0
  701. package/src/utils/duration.ts +88 -0
  702. package/src/utils/json.ts +281 -0
  703. package/src/webhooks/events.ts +96 -0
  704. package/src/webhooks/index.ts +12 -0
  705. package/src/wire/accountResponses.ts +328 -0
  706. package/src/wire/auth.ts +86 -0
  707. package/src/wire/bootstrapReason.ts +10 -0
  708. package/src/wire/claimEvent.ts +85 -0
  709. package/src/wire/claims.ts +370 -0
  710. package/src/wire/commit.ts +379 -0
  711. package/src/wire/delta.ts +173 -0
  712. package/src/wire/errorEnvelope.ts +133 -0
  713. package/src/wire/feedCursor.ts +91 -0
  714. package/src/wire/feedEvent.ts +74 -0
  715. package/src/wire/frames.ts +77 -0
  716. package/src/wire/inboundFrames.ts +182 -0
  717. package/src/wire/index.ts +328 -0
  718. package/src/wire/listEnvelope.ts +51 -0
  719. package/src/wire/modelMutations.ts +55 -0
  720. package/src/wire/modelResponses.ts +48 -0
  721. package/src/wire/modelShape.ts +83 -0
  722. package/src/wire/protocol.ts +39 -0
  723. package/src/wire/protocolVersion.ts +97 -0
@@ -0,0 +1,429 @@
1
+ /**
2
+ * Routes each inbound frame from the sync WebSocket to the handler for its
3
+ * type. Handlers work against a minimal {@link WsSession} interface — only
4
+ * the members they actually touch, rather than the transport object itself,
5
+ * which keeps this module free of an import cycle. Reading a message off the
6
+ * socket, parsing its JSON, and tracking heartbeats all happen before this
7
+ * point; every parsed frame then passes through {@link dispatchWsFrame}.
8
+ */
9
+ import { AbloConnectionError, CapabilityError, errorFromWire, } from '../errors.js';
10
+ import { commitAckSchema, commitReceiptSchema } from '../wire/commit.js';
11
+ import { subscriptionAckPayloadSchema } from '../coordination/schema.js';
12
+ import { WS_INBOUND_FRAMES, isKnownInboundFrame, isSchemaValidatedFrame, wsInboundEnvelopeSchema, } from '../wire/inboundFrames.js';
13
+ import { formatConflict } from '../coordination/trace.js';
14
+ import { parseNotifications, recordClaim } from './commitFrames.js';
15
+ /** Narrow arbitrary wire data to a plain string-keyed record. */
16
+ export function isRecord(value) {
17
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
18
+ }
19
+ /**
20
+ * Read the envelope off an inbound message, or `null` when it is not one —
21
+ * anything that is not an object, or whose `type` is not a string. The payload
22
+ * is not checked here; that belongs to the frame's own schema, applied at
23
+ * dispatch.
24
+ */
25
+ export function readWsInboundFrame(value) {
26
+ const parsed = wsInboundEnvelopeSchema.safeParse(value);
27
+ return parsed.success ? parsed.data : null;
28
+ }
29
+ /**
30
+ * Handles the acknowledgement of a `commit` request. The canonical wire
31
+ * shape is `MutationResultMessage`. The payload is parsed defensively
32
+ * rather than cast, since it is untrusted and may be malformed or sent by
33
+ * an older server.
34
+ */
35
+ const handleMutationResult = (session, message) => {
36
+ const p = (message.payload ?? message);
37
+ const { clientTxId, success, error } = p;
38
+ // Defensive: validate notifications against the canonical schema —
39
+ // untrusted wire data from a possibly-older/newer server.
40
+ const notifications = parseNotifications(p?.notifications);
41
+ const missingIds = Array.isArray(p.missingIds)
42
+ ? [
43
+ ...new Set(p.missingIds.filter((id) => typeof id === 'string' && id.length > 0)),
44
+ ]
45
+ : undefined;
46
+ const pending = typeof clientTxId === 'string'
47
+ ? session.pendingMutations.get(clientTxId)
48
+ : undefined;
49
+ if (!pending)
50
+ return;
51
+ clearTimeout(pending.timeout);
52
+ // `pending` exists ⇒ clientTxId was a string key (the guard above).
53
+ session.pendingMutations.delete(clientTxId);
54
+ if (success) {
55
+ const parsedReceipt = commitReceiptSchema.safeParse({
56
+ ...p,
57
+ notifications,
58
+ missingIds,
59
+ });
60
+ if (!parsedReceipt.success) {
61
+ pending.reject(new AbloConnectionError('The sync server returned an invalid commit receipt; its outcome remains pending and is safe to retry.', { code: 'commit_no_result', cause: parsedReceipt.error }));
62
+ return;
63
+ }
64
+ const receipt = parsedReceipt.data;
65
+ // The write succeeded, but a guarded premise shifted underneath it.
66
+ // Emit the advisory signal so a caller can react, and still resolve
67
+ // the receipt, since the commit itself went through.
68
+ if (receipt.notifications && receipt.notifications.length > 0) {
69
+ const txId = receipt.clientTxId;
70
+ const event = {
71
+ clientTxId: txId,
72
+ rows: receipt.notifications.map((n) => ({
73
+ model: n.model,
74
+ id: n.id,
75
+ fields: n.conflictingFields,
76
+ writtenBy: n.writtenBy.kind,
77
+ })),
78
+ };
79
+ const message = formatConflict(event);
80
+ session.logger.warn(message);
81
+ session.observability.breadcrumb(message, 'sync.coordination', 'warning');
82
+ session.observability.captureConflict(event);
83
+ session.emit('conflict:notified', {
84
+ clientTxId: txId,
85
+ notifications: receipt.notifications,
86
+ });
87
+ }
88
+ pending.resolve(commitAckSchema.parse({
89
+ status: receipt.status,
90
+ ...(receipt.correlationId
91
+ ? { correlationId: receipt.correlationId }
92
+ : {}),
93
+ lastSyncId: receipt.lastSyncId,
94
+ ...(receipt.notifications && receipt.notifications.length > 0
95
+ ? { notifications: receipt.notifications }
96
+ : {}),
97
+ ...(receipt.missingIds && receipt.missingIds.length > 0
98
+ ? { missingIds: receipt.missingIds }
99
+ : {}),
100
+ }));
101
+ }
102
+ else {
103
+ // Capture the full server error so the caller can see what actually
104
+ // rejected the mutation, rather than a generic "mutation failed on
105
+ // server". Object errors are stringified so structured server payloads,
106
+ // such as validation issues, survive being wrapped in an Error.
107
+ let errorMessage;
108
+ let errorCode;
109
+ let requiredCapability;
110
+ if (typeof error === 'string') {
111
+ errorMessage = error;
112
+ }
113
+ else if (error != null && typeof error === 'object') {
114
+ const obj = error;
115
+ if (typeof obj.code === 'string')
116
+ errorCode = obj.code;
117
+ if (typeof obj.message === 'string') {
118
+ errorMessage = obj.message;
119
+ }
120
+ else {
121
+ try {
122
+ errorMessage = JSON.stringify(error);
123
+ }
124
+ catch {
125
+ errorMessage = String(error);
126
+ }
127
+ }
128
+ if (obj.requiredCapability != null &&
129
+ typeof obj.requiredCapability === 'object' &&
130
+ typeof obj.requiredCapability.scope === 'string') {
131
+ requiredCapability = obj.requiredCapability;
132
+ }
133
+ }
134
+ else {
135
+ errorMessage = 'mutation failed on server';
136
+ }
137
+ // A stale-context rejection (the write read state that has since
138
+ // changed) or a foreign-claim conflict is a coordination collision.
139
+ // The success-with-notifications path above records the conflict, and a
140
+ // hard rejection must record it too, or the collision count would miss
141
+ // every rejected write. The conflicting rows ride along on the typed
142
+ // error's `conflicts` detail.
143
+ if (errorCode === 'stale_context' ||
144
+ errorCode === 'claim_conflict' ||
145
+ errorCode === 'entity_claimed' ||
146
+ errorCode?.startsWith('policy:') === true) {
147
+ const rawConflicts = error != null &&
148
+ typeof error === 'object' &&
149
+ Array.isArray(error.conflicts)
150
+ ? error
151
+ .conflicts
152
+ : [];
153
+ const conflictEvent = {
154
+ clientTxId: typeof clientTxId === 'string' ? clientTxId : '',
155
+ rows: rawConflicts.map((r) => ({
156
+ model: typeof r.model === 'string' ? r.model : 'unknown',
157
+ id: typeof r.id === 'string' ? r.id : 'unknown',
158
+ fields: [],
159
+ })),
160
+ };
161
+ session.observability.breadcrumb(formatConflict(conflictEvent), 'sync.coordination', 'warning');
162
+ session.observability.captureConflict(conflictEvent);
163
+ }
164
+ // Build the proper typed AbloError from the wire code via the
165
+ // shared factory — the same code→class mapping the HTTP commit
166
+ // path uses (`translateHttpError`). This keeps rejected commits
167
+ // inside the typed hierarchy (capability denials →
168
+ // CapabilityError with `.requiredCapability`; foreign-claim
169
+ // conflicts → AbloClaimedError; everything else → the subclass
170
+ // its registry `httpStatus` implies) instead of a hand-rolled
171
+ // `new Error`, so callers can `instanceof`/`e.type` it and
172
+ // downstream retry logic can read the contract's retryability.
173
+ pending.reject(errorFromWire(errorMessage, {
174
+ code: errorCode,
175
+ requiredCapability,
176
+ }));
177
+ }
178
+ };
179
+ /**
180
+ * Handles the acknowledgement of a `claim` request. The frame has the shape
181
+ * `{ type: 'claim_ack', payload: { claimId, success, syncGroups?,
182
+ * ttlSeconds?, error? } }`.
183
+ */
184
+ const handleClaimAck = (session, message) => {
185
+ const p = (message.payload ?? {});
186
+ const { claimId, success, syncGroups, ttlSeconds, error } = p;
187
+ const pending = typeof claimId === 'string'
188
+ ? session.pendingClaims.get(claimId)
189
+ : undefined;
190
+ if (!pending)
191
+ return;
192
+ clearTimeout(pending.timeout);
193
+ // `pending` exists ⇒ claimId was a string key (the guard above).
194
+ session.pendingClaims.delete(claimId);
195
+ if (success) {
196
+ pending.resolve({
197
+ syncGroups: Array.isArray(syncGroups) ? syncGroups : [],
198
+ ttlSeconds: typeof ttlSeconds === 'number' ? ttlSeconds : undefined,
199
+ });
200
+ }
201
+ else {
202
+ const err = error;
203
+ const code = err?.code && typeof err.code === 'string'
204
+ ? err.code
205
+ : 'claim_rejected';
206
+ const msg = err?.message && typeof err.message === 'string'
207
+ ? err.message
208
+ : 'claim rejected by server';
209
+ // Capability denials get the typed CapabilityError so
210
+ // callers can read `.requiredCapability` and attenuate-
211
+ // and-retry the claim with a narrower token.
212
+ if (code === 'capability_scope_denied' ||
213
+ code === 'capability_invalid') {
214
+ const rc = error
215
+ ?.requiredCapability;
216
+ const requiredCapability = rc != null &&
217
+ typeof rc === 'object' &&
218
+ typeof rc.scope === 'string'
219
+ ? rc
220
+ : undefined;
221
+ pending.reject(new CapabilityError(code, msg, requiredCapability));
222
+ }
223
+ else {
224
+ // Route through the shared factory so a failed claim_ack is a
225
+ // typed AbloError (registry code → right subclass), symmetric
226
+ // with the commit `mutation_result` path — never a bare Error.
227
+ pending.reject(errorFromWire(msg, { code }));
228
+ }
229
+ }
230
+ };
231
+ /**
232
+ * Handles the acknowledgement of an `update_subscription` request. The wire
233
+ * carries no correlation id, so the ack is matched to the oldest pending
234
+ * request in first-in, first-out order, since the server applies and
235
+ * acknowledges subscription updates in the order it receives them. The
236
+ * payload is validated against its canonical schema before use.
237
+ */
238
+ const handleSubscriptionAck = (session, message) => {
239
+ const pending = session.shiftPendingSubscription();
240
+ if (!pending)
241
+ return;
242
+ clearTimeout(pending.timeout);
243
+ const parsed = subscriptionAckPayloadSchema.safeParse(message.payload);
244
+ if (!parsed.success) {
245
+ // Unreadable ack — resolve the pending request as a failure
246
+ // rather than hang it until timeout.
247
+ pending.reject(errorFromWire('malformed subscription_ack from server', {
248
+ code: 'malformed_subscription',
249
+ }));
250
+ return;
251
+ }
252
+ const ack = parsed.data;
253
+ if (ack.success) {
254
+ // Keep the reconnect URL aligned with current interest: a
255
+ // reconnect re-subscribes from `this.options.syncGroups`.
256
+ session.options.syncGroups = ack.syncGroups;
257
+ pending.resolve({ syncGroups: ack.syncGroups });
258
+ }
259
+ else {
260
+ pending.reject(errorFromWire(ack.error?.message ?? 'update_subscription rejected by server', { code: ack.error?.code ?? 'malformed_subscription' }));
261
+ }
262
+ };
263
+ /**
264
+ * Handles a `delta` frame, which carries either a single delta or a
265
+ * `{ deltas: [...] }` batch. This only tells the two shapes apart; each
266
+ * delta is validated once downstream, so batch elements are passed along
267
+ * raw rather than parsed here.
268
+ */
269
+ const handleDeltaFrame = (session, message) => {
270
+ const p = message.payload;
271
+ if (!isRecord(p))
272
+ return;
273
+ if (p.actionType || p.modelName) {
274
+ session.handleDelta(p);
275
+ }
276
+ else if (Array.isArray(p.deltas)) {
277
+ for (const d of p.deltas) {
278
+ session.handleDelta(d);
279
+ }
280
+ // `p.newVersions` from older servers is ignored; `sync_id` is the
281
+ // causality token.
282
+ }
283
+ };
284
+ /** The reporting ports of one session, in the shape {@link recordClaim} takes. */
285
+ function tracePorts(session) {
286
+ return { logger: session.logger, observability: session.observability };
287
+ }
288
+ /**
289
+ * Maps each frame type to its handler. Every named server frame this
290
+ * package understands is dispatched from this table; anything else falls
291
+ * through to the collaboration-event and unknown-type path in
292
+ * {@link dispatchWsFrame}.
293
+ */
294
+ export const wsFrameHandlers = {
295
+ sync_response: (session, message) => { session.handleSyncResponse(message.payload); },
296
+ bootstrap_response: (session, message) => { session.handleBootstrapResponse(message.payload); },
297
+ presence_update: (session, message) => { session.handlePresenceUpdate(message); },
298
+ mutation_result: handleMutationResult,
299
+ claim_ack: handleClaimAck,
300
+ subscription_ack: handleSubscriptionAck,
301
+ delta: handleDeltaFrame,
302
+ };
303
+ /**
304
+ * Binds a handler to the schema that validates its input.
305
+ *
306
+ * The two are paired here, at the declaration, so the payload type is inferred
307
+ * from the schema rather than restated — and the frame's validation cannot be
308
+ * changed without the handler's parameter type following it. The bound function
309
+ * accepts `unknown`, which is what lets the dispatcher call any of them from a
310
+ * lookup without an assertion.
311
+ */
312
+ function validating(schema, frameType, run) {
313
+ return (session, payload) => {
314
+ const parsed = schema.safeParse(payload ?? {});
315
+ if (!parsed.success) {
316
+ throw new AbloConnectionError(`The sync server sent a ${frameType} frame that does not match the protocol; it was not applied.`, { code: 'malformed_response', cause: parsed.error });
317
+ }
318
+ run(session, parsed.data);
319
+ };
320
+ }
321
+ /**
322
+ * Handlers for the frames the protocol validates before dispatch. Each takes
323
+ * the parsed payload, typed by the registry's own schema — which is why none of
324
+ * them narrows, defaults, or casts. The record's key type makes the table
325
+ * exhaustive: adding a `validation: 'schema'` frame to the registry without
326
+ * adding it here is a compile error.
327
+ */
328
+ const validatedFrameHandlers = {
329
+ presence_update: validating(WS_INBOUND_FRAMES.presence_update.payload, 'presence_update', (session, payload) => {
330
+ session.handlePresenceUpdate({ payload });
331
+ }),
332
+ claim_expired: validating(WS_INBOUND_FRAMES.claim_expired.payload, 'claim_expired', (session, payload) => {
333
+ // Server-initiated expiry. The claim is already inactive by the time
334
+ // this arrives, so a consumer either re-claims with a fresh credential
335
+ // or accepts the drop.
336
+ recordClaim(tracePorts(session), 'expired', payload);
337
+ session.emit('claim_expired', payload);
338
+ }),
339
+ claim_rejected: validating(WS_INBOUND_FRAMES.claim_rejected.payload, 'claim_rejected', (session, payload) => {
340
+ // The target is held by another participant and this claim did not opt
341
+ // into the wait line.
342
+ recordClaim(tracePorts(session), 'rejected', payload);
343
+ session.emit('claim_rejected', payload);
344
+ }),
345
+ claim_acquired: validating(WS_INBOUND_FRAMES.claim_acquired.payload, 'claim_acquired', (session, payload) => {
346
+ // The target was free: the lease is ours without waiting.
347
+ recordClaim(tracePorts(session), 'acquired', payload);
348
+ session.emit('claim_acquired', payload);
349
+ }),
350
+ claim_queued: validating(WS_INBOUND_FRAMES.claim_queued.payload, 'claim_queued', (session, payload) => {
351
+ // Opt-in fair queue: our claim waits in line, carrying its position.
352
+ recordClaim(tracePorts(session), 'queued', payload);
353
+ session.emit('claim_queued', payload);
354
+ }),
355
+ claim_granted: validating(WS_INBOUND_FRAMES.claim_granted.payload, 'claim_granted', (session, payload) => {
356
+ // Our queued claim reached the head — the lease is now ours.
357
+ recordClaim(tracePorts(session), 'granted', payload);
358
+ session.emit('claim_granted', payload);
359
+ }),
360
+ claim_lost: validating(WS_INBOUND_FRAMES.claim_lost.payload, 'claim_lost', (session, payload) => {
361
+ // A held or granted lease was taken from us (TTL lapse, preemption).
362
+ recordClaim(tracePorts(session), 'lost', payload);
363
+ session.emit('claim_lost', payload);
364
+ }),
365
+ claim_queue: validating(WS_INBOUND_FRAMES.claim_queue.payload, 'claim_queue', (session, payload) => {
366
+ // Per-entity wait-line snapshot backing the reactive `queue(id)` read.
367
+ // Not logged: the per-claim queued/granted events tell that story.
368
+ session.emit('claim_queue', payload);
369
+ }),
370
+ claim_heartbeat_ack: validating(WS_INBOUND_FRAMES.claim_heartbeat_ack.payload, 'claim_heartbeat_ack', (session, payload) => {
371
+ // Reply to our `claim_heartbeat`; the claim stream correlates it back to
372
+ // the awaiting caller by claimId. Not logged per-frame — a heartbeat is
373
+ // a cadence, and the transition that matters (lost) surfaces as an error.
374
+ session.emit('claim_heartbeat_ack', payload);
375
+ }),
376
+ };
377
+ /**
378
+ * Routes one inbound frame to its handler, validating the payload first.
379
+ *
380
+ * A frame the protocol declares with a payload schema is parsed here, so its
381
+ * handler works on a proven shape. A frame the protocol does not declare is
382
+ * rejected: the server and this package ship together, so an unrecognised type
383
+ * means the two have drifted, and a change nobody validated should not reach a
384
+ * local store. The one exception is an application's own collaboration events,
385
+ * which the consumer registers at construction and the protocol knows nothing
386
+ * about.
387
+ *
388
+ * Throwing is the reporting channel. The transport's message loop catches and
389
+ * reports through `captureWebSocketError`, so a bad frame surfaces as a
390
+ * captured error and the connection survives.
391
+ */
392
+ export function dispatchWsFrame(session, message) {
393
+ if (message.type === 'pong' || message.type === 'ping') {
394
+ // Ignore keepalive messages
395
+ session.logger.debug('Received keepalive', { type: message.type });
396
+ return;
397
+ }
398
+ if (message.type === undefined) {
399
+ // A bare delta, validated downstream like every other delta.
400
+ if (message.actionType || message.modelName) {
401
+ session.handleDelta(message);
402
+ }
403
+ return;
404
+ }
405
+ const frameType = message.type;
406
+ if (isKnownInboundFrame(frameType)) {
407
+ if (isSchemaValidatedFrame(frameType)) {
408
+ // Validated on the way in — see `validating`, which pairs each handler
409
+ // with the registry schema its parameter type is inferred from.
410
+ validatedFrameHandlers[frameType](session, message.payload);
411
+ return;
412
+ }
413
+ // `validation: 'handler'` — the check lives inside, cited by the registry.
414
+ const handler = wsFrameHandlers[frameType];
415
+ if (handler) {
416
+ handler(session, message);
417
+ return;
418
+ }
419
+ }
420
+ // Collaboration events use underscore wire format (e.g., 'section_selection')
421
+ // Convert to colon format for the event map (e.g., 'section:selection')
422
+ const eventKey = frameType.replace(/_/g, ':');
423
+ if (session.collaborationEventTypes.has(eventKey)) {
424
+ session.emit(eventKey, message.payload);
425
+ return;
426
+ }
427
+ throw new AbloConnectionError(`The sync server sent an unrecognised frame type "${frameType}". This client and the server have drifted; the frame was not applied.`, { code: 'malformed_response' });
428
+ }
429
+ //# sourceMappingURL=wsFrameHandlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wsFrameHandlers.js","sourceRoot":"","sources":["../../src/transport/wsFrameHandlers.ts"],"names":[],"mappings":"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"}