@abloatai/transaction 0.56.0 → 0.58.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 (769) hide show
  1. package/CONVENTIONS.md +54 -10
  2. package/README.md +3 -1
  3. package/dist/ai-sdk/modelTools.d.ts +3 -3
  4. package/dist/ai-sdk/modelTools.d.ts.map +1 -1
  5. package/dist/ai-sdk/modelTools.js +1 -1
  6. package/dist/ai-sdk/modelTools.js.map +1 -1
  7. package/dist/ai-sdk/updateTool.d.ts +5 -7
  8. package/dist/ai-sdk/updateTool.d.ts.map +1 -1
  9. package/dist/ai-sdk/updateTool.js +3 -5
  10. package/dist/ai-sdk/updateTool.js.map +1 -1
  11. package/dist/auth/capability.d.ts +5 -0
  12. package/dist/auth/capability.d.ts.map +1 -1
  13. package/dist/auth/capability.js +5 -0
  14. package/dist/auth/capability.js.map +1 -1
  15. package/dist/auth/capabilityLifecycle.d.ts +1 -1
  16. package/dist/auth/capabilityLifecycle.d.ts.map +1 -1
  17. package/dist/auth/credentialPolicy.d.ts +1 -1
  18. package/dist/auth/credentialPolicy.d.ts.map +1 -1
  19. package/dist/auth/identity.d.ts +3 -3
  20. package/dist/auth/identity.d.ts.map +1 -1
  21. package/dist/auth/identity.js +5 -5
  22. package/dist/auth/identity.js.map +1 -1
  23. package/dist/auth/index.d.ts +4 -208
  24. package/dist/auth/index.d.ts.map +1 -1
  25. package/dist/auth/index.js +4 -330
  26. package/dist/auth/index.js.map +1 -1
  27. package/dist/auth/runtime.d.ts +218 -0
  28. package/dist/auth/runtime.d.ts.map +1 -0
  29. package/dist/auth/runtime.js +336 -0
  30. package/dist/auth/runtime.js.map +1 -0
  31. package/dist/auth/sessionMint.d.ts +1 -1
  32. package/dist/auth/sessionMint.d.ts.map +1 -1
  33. package/dist/auth/sessionMint.js +2 -1
  34. package/dist/auth/sessionMint.js.map +1 -1
  35. package/dist/branches.d.ts +25 -21
  36. package/dist/branches.d.ts.map +1 -1
  37. package/dist/branches.js +3 -0
  38. package/dist/branches.js.map +1 -1
  39. package/dist/{coordination/awaitClaimGrant.d.ts → claims/awaitGrant.d.ts} +1 -1
  40. package/dist/claims/awaitGrant.d.ts.map +1 -0
  41. package/dist/{coordination/awaitClaimGrant.js → claims/awaitGrant.js} +4 -4
  42. package/dist/claims/awaitGrant.js.map +1 -0
  43. package/dist/{wire/claims.d.ts → claims/contract.d.ts} +1 -1
  44. package/dist/claims/contract.d.ts.map +1 -0
  45. package/dist/{wire/claims.js → claims/contract.js} +2 -2
  46. package/dist/claims/contract.js.map +1 -0
  47. package/dist/{wire/claimEvent.d.ts → claims/eventContract.d.ts} +1 -1
  48. package/dist/claims/eventContract.d.ts.map +1 -0
  49. package/dist/{wire/claimEvent.js → claims/eventContract.js} +1 -1
  50. package/dist/claims/eventContract.js.map +1 -0
  51. package/dist/{coordination → claims}/events.d.ts +7 -11
  52. package/dist/claims/events.d.ts.map +1 -0
  53. package/dist/claims/events.js +8 -0
  54. package/dist/claims/events.js.map +1 -0
  55. package/dist/{coordination/claimHeartbeatLoop.d.ts → claims/heartbeat.d.ts} +1 -1
  56. package/dist/claims/heartbeat.d.ts.map +1 -0
  57. package/dist/{coordination/claimHeartbeatLoop.js → claims/heartbeat.js} +1 -1
  58. package/dist/claims/heartbeat.js.map +1 -0
  59. package/dist/claims/index.d.ts +17 -0
  60. package/dist/claims/index.d.ts.map +1 -0
  61. package/dist/claims/index.js +16 -0
  62. package/dist/claims/index.js.map +1 -0
  63. package/dist/claims/lifetime.d.ts +26 -0
  64. package/dist/claims/lifetime.d.ts.map +1 -0
  65. package/dist/claims/lifetime.js +62 -0
  66. package/dist/claims/lifetime.js.map +1 -0
  67. package/dist/{coordination → claims}/locator.d.ts +1 -1
  68. package/dist/claims/locator.d.ts.map +1 -0
  69. package/dist/{coordination → claims}/locator.js +2 -2
  70. package/dist/claims/locator.js.map +1 -0
  71. package/dist/{coordination/claimMeta.d.ts → claims/meta.d.ts} +1 -1
  72. package/dist/claims/meta.d.ts.map +1 -0
  73. package/dist/{coordination/claimMeta.js → claims/meta.js} +1 -1
  74. package/dist/claims/meta.js.map +1 -0
  75. package/dist/claims/routes.d.ts +59 -0
  76. package/dist/claims/routes.d.ts.map +1 -0
  77. package/dist/claims/routes.js +69 -0
  78. package/dist/claims/routes.js.map +1 -0
  79. package/dist/claims/targetConflict.d.ts.map +1 -0
  80. package/dist/claims/targetConflict.js.map +1 -0
  81. package/dist/{coordination → claims}/trace.d.ts +2 -2
  82. package/dist/claims/trace.d.ts.map +1 -0
  83. package/dist/{coordination → claims}/trace.js +5 -5
  84. package/dist/claims/trace.js.map +1 -0
  85. package/dist/{ablo.d.ts → client/ablo.d.ts} +6 -15
  86. package/dist/client/ablo.d.ts.map +1 -0
  87. package/dist/{ablo.js → client/ablo.js} +2 -2
  88. package/dist/client/ablo.js.map +1 -0
  89. package/dist/{transactionLayer.d.ts → client/contract.d.ts} +12 -14
  90. package/dist/client/contract.d.ts.map +1 -0
  91. package/dist/{transactionLayer.js → client/contract.js} +4 -5
  92. package/dist/client/contract.js.map +1 -0
  93. package/dist/{headlessClient.d.ts → client/headless.d.ts} +4 -4
  94. package/dist/client/headless.d.ts.map +1 -0
  95. package/dist/{headlessClient.js → client/headless.js} +8 -10
  96. package/dist/{headlessClient.js.map → client/headless.js.map} +1 -1
  97. package/dist/client/index.d.ts +11 -0
  98. package/dist/client/index.d.ts.map +1 -0
  99. package/dist/client/index.js +11 -0
  100. package/dist/client/index.js.map +1 -0
  101. package/dist/{resources → client/resources}/functionalUpdate.d.ts +4 -4
  102. package/dist/client/resources/functionalUpdate.d.ts.map +1 -0
  103. package/dist/{resources → client/resources}/functionalUpdate.js +3 -3
  104. package/dist/client/resources/functionalUpdate.js.map +1 -0
  105. package/dist/{resources → client/resources}/httpResources.d.ts +92 -77
  106. package/dist/client/resources/httpResources.d.ts.map +1 -0
  107. package/dist/client/resources/httpResources.js +94 -0
  108. package/dist/client/resources/httpResources.js.map +1 -0
  109. package/dist/client/resources/modelCreate.d.ts +21 -0
  110. package/dist/client/resources/modelCreate.d.ts.map +1 -0
  111. package/dist/client/resources/modelCreate.js +49 -0
  112. package/dist/client/resources/modelCreate.js.map +1 -0
  113. package/dist/{resources → client/resources}/modelOperations.d.ts +57 -51
  114. package/dist/client/resources/modelOperations.d.ts.map +1 -0
  115. package/dist/{resources → client/resources}/modelOperations.js +1 -1
  116. package/dist/client/resources/modelOperations.js.map +1 -0
  117. package/dist/{resources → client/resources}/mutationOptions.d.ts +4 -17
  118. package/dist/client/resources/mutationOptions.d.ts.map +1 -0
  119. package/dist/client/resources/mutationOptions.js.map +1 -0
  120. package/dist/client/resources/where.d.ts.map +1 -0
  121. package/dist/{resources → client/resources}/where.js +1 -1
  122. package/dist/client/resources/where.js.map +1 -0
  123. package/dist/{resources → client/resources}/writeOptionsSchema.d.ts +16 -35
  124. package/dist/client/resources/writeOptionsSchema.d.ts.map +1 -0
  125. package/dist/{resources → client/resources}/writeOptionsSchema.js +25 -18
  126. package/dist/client/resources/writeOptionsSchema.js.map +1 -0
  127. package/dist/{transactions → commit}/confirmation/commitEnvelope.d.ts +1 -37
  128. package/dist/commit/confirmation/commitEnvelope.d.ts.map +1 -0
  129. package/dist/{transactions → commit}/confirmation/commitEnvelope.js +2 -7
  130. package/dist/commit/confirmation/commitEnvelope.js.map +1 -0
  131. package/dist/commit/confirmation/httpCommitEnvelope.d.ts.map +1 -0
  132. package/dist/{transactions → commit}/confirmation/httpCommitEnvelope.js +1 -1
  133. package/dist/commit/confirmation/httpCommitEnvelope.js.map +1 -0
  134. package/dist/commit/confirmation/idempotencyKey.d.ts.map +1 -0
  135. package/dist/commit/confirmation/idempotencyKey.js.map +1 -0
  136. package/dist/{transactions → commit}/confirmation/pendingWrite.d.ts +2 -33
  137. package/dist/commit/confirmation/pendingWrite.d.ts.map +1 -0
  138. package/dist/{transactions → commit}/confirmation/pendingWrite.js +1 -1
  139. package/dist/commit/confirmation/pendingWrite.js.map +1 -0
  140. package/dist/commit/contract.d.ts +1404 -0
  141. package/dist/commit/contract.d.ts.map +1 -0
  142. package/dist/{wire/commit.js → commit/contract.js} +26 -21
  143. package/dist/commit/contract.js.map +1 -0
  144. package/dist/{durableWrites.d.ts → commit/durableWrites.d.ts} +6 -6
  145. package/dist/commit/durableWrites.d.ts.map +1 -0
  146. package/dist/{durableWrites.js → commit/durableWrites.js} +5 -5
  147. package/dist/commit/durableWrites.js.map +1 -0
  148. package/dist/commit/httpRequest.d.ts +45 -0
  149. package/dist/commit/httpRequest.d.ts.map +1 -0
  150. package/dist/commit/httpRequest.js +66 -0
  151. package/dist/commit/httpRequest.js.map +1 -0
  152. package/dist/commit/index.d.ts +17 -0
  153. package/dist/commit/index.d.ts.map +1 -0
  154. package/dist/commit/index.js +17 -0
  155. package/dist/commit/index.js.map +1 -0
  156. package/dist/{readSetContext.d.ts → commit/readSetContext.d.ts} +7 -15
  157. package/dist/commit/readSetContext.d.ts.map +1 -0
  158. package/dist/{readSetContext.js → commit/readSetContext.js} +18 -28
  159. package/dist/commit/readSetContext.js.map +1 -0
  160. package/dist/{commitRecordRuntime.d.ts → commit/recordRuntime.d.ts} +3 -5
  161. package/dist/commit/recordRuntime.d.ts.map +1 -0
  162. package/dist/{commitRecordRuntime.js → commit/recordRuntime.js} +13 -54
  163. package/dist/commit/recordRuntime.js.map +1 -0
  164. package/dist/coordination/index.d.ts +6 -8
  165. package/dist/coordination/index.d.ts.map +1 -1
  166. package/dist/coordination/index.js +3 -9
  167. package/dist/coordination/index.js.map +1 -1
  168. package/dist/coordination/schema.d.ts +11 -466
  169. package/dist/coordination/schema.d.ts.map +1 -1
  170. package/dist/coordination/schema.js +13 -265
  171. package/dist/coordination/schema.js.map +1 -1
  172. package/dist/errorCodes.d.ts +16 -9
  173. package/dist/errorCodes.d.ts.map +1 -1
  174. package/dist/errorCodes.js +14 -6
  175. package/dist/errorCodes.js.map +1 -1
  176. package/dist/errorObservation.d.ts +2 -2
  177. package/dist/errors.d.ts +3 -2
  178. package/dist/errors.d.ts.map +1 -1
  179. package/dist/errors.js +27 -11
  180. package/dist/errors.js.map +1 -1
  181. package/dist/index.d.ts +7 -7
  182. package/dist/index.d.ts.map +1 -1
  183. package/dist/index.js +3 -3
  184. package/dist/index.js.map +1 -1
  185. package/dist/internal/read-set.d.ts +3 -3
  186. package/dist/internal/read-set.d.ts.map +1 -1
  187. package/dist/internal/read-set.js +2 -2
  188. package/dist/internal/read-set.js.map +1 -1
  189. package/dist/observability.d.ts +4 -4
  190. package/dist/observability.d.ts.map +1 -1
  191. package/dist/observability.js +2 -2
  192. package/dist/{wire/delta.d.ts → observation/contract.d.ts} +8 -8
  193. package/dist/observation/contract.d.ts.map +1 -0
  194. package/dist/{wire/delta.js → observation/contract.js} +3 -3
  195. package/dist/observation/contract.js.map +1 -0
  196. package/dist/{wire/feedCursor.d.ts → observation/cursor.d.ts} +1 -1
  197. package/dist/observation/cursor.d.ts.map +1 -0
  198. package/dist/{wire/feedCursor.js → observation/cursor.js} +1 -1
  199. package/dist/observation/cursor.js.map +1 -0
  200. package/dist/{wire/deltaDelivery.d.ts → observation/deliveryContract.d.ts} +1 -1
  201. package/dist/observation/deliveryContract.d.ts.map +1 -0
  202. package/dist/{wire/deltaDelivery.js → observation/deliveryContract.js} +1 -1
  203. package/dist/observation/deliveryContract.js.map +1 -0
  204. package/dist/{wire/feedEvent.d.ts → observation/feedContract.d.ts} +10 -10
  205. package/dist/observation/feedContract.d.ts.map +1 -0
  206. package/dist/{wire/feedEvent.js → observation/feedContract.js} +4 -4
  207. package/dist/observation/feedContract.js.map +1 -0
  208. package/dist/observation/httpFeed.d.ts +4 -0
  209. package/dist/observation/httpFeed.d.ts.map +1 -0
  210. package/dist/{transport → observation}/httpFeed.js +1 -1
  211. package/dist/{transport → observation}/httpFeed.js.map +1 -1
  212. package/dist/observation/index.d.ts +13 -0
  213. package/dist/observation/index.d.ts.map +1 -0
  214. package/dist/observation/index.js +13 -0
  215. package/dist/observation/index.js.map +1 -0
  216. package/dist/{log → observation/persistence}/syncDeltaRow.d.ts +8 -8
  217. package/dist/observation/persistence/syncDeltaRow.d.ts.map +1 -0
  218. package/dist/{log → observation/persistence}/syncDeltaRow.js +4 -4
  219. package/dist/observation/persistence/syncDeltaRow.js.map +1 -0
  220. package/dist/pricing.d.ts +20 -12
  221. package/dist/pricing.d.ts.map +1 -1
  222. package/dist/pricing.js +46 -26
  223. package/dist/pricing.js.map +1 -1
  224. package/dist/schema/audit.d.ts +15 -0
  225. package/dist/schema/audit.d.ts.map +1 -0
  226. package/dist/schema/audit.js +90 -0
  227. package/dist/schema/audit.js.map +1 -0
  228. package/dist/schema/ddl.d.ts.map +1 -1
  229. package/dist/schema/ddl.js +68 -1
  230. package/dist/schema/ddl.js.map +1 -1
  231. package/dist/schema/index.d.ts +7 -6
  232. package/dist/schema/index.d.ts.map +1 -1
  233. package/dist/schema/index.js +6 -7
  234. package/dist/schema/index.js.map +1 -1
  235. package/dist/schema/model.d.ts +14 -27
  236. package/dist/schema/model.d.ts.map +1 -1
  237. package/dist/schema/model.js +2 -2
  238. package/dist/schema/model.js.map +1 -1
  239. package/dist/schema/openapi.d.ts.map +1 -1
  240. package/dist/schema/openapi.js +149 -8
  241. package/dist/schema/openapi.js.map +1 -1
  242. package/dist/schema/roles.d.ts +27 -0
  243. package/dist/schema/roles.d.ts.map +1 -1
  244. package/dist/schema/roles.js +40 -0
  245. package/dist/schema/roles.js.map +1 -1
  246. package/dist/schema/schema.d.ts +34 -7
  247. package/dist/schema/schema.d.ts.map +1 -1
  248. package/dist/schema/schema.js +39 -3
  249. package/dist/schema/schema.js.map +1 -1
  250. package/dist/schema/serialize.d.ts +5 -5
  251. package/dist/schema/serialize.d.ts.map +1 -1
  252. package/dist/schema/serialize.js +5 -5
  253. package/dist/schema/serialize.js.map +1 -1
  254. package/dist/schema/subject.d.ts +18 -0
  255. package/dist/schema/subject.d.ts.map +1 -0
  256. package/dist/schema/subject.js +27 -0
  257. package/dist/schema/subject.js.map +1 -0
  258. package/dist/schema/tenancy.d.ts +1 -1
  259. package/dist/server/adapter.d.ts +3 -1
  260. package/dist/server/adapter.d.ts.map +1 -1
  261. package/dist/server/commit.d.ts +6 -14
  262. package/dist/server/commit.d.ts.map +1 -1
  263. package/dist/server/index.d.ts +1 -1
  264. package/dist/server/index.d.ts.map +1 -1
  265. package/dist/server/index.js +1 -1
  266. package/dist/server/index.js.map +1 -1
  267. package/dist/server/readConfig.d.ts +3 -0
  268. package/dist/server/readConfig.d.ts.map +1 -1
  269. package/dist/server/readConfig.js +0 -21
  270. package/dist/server/readConfig.js.map +1 -1
  271. package/dist/server/storageMode.d.ts +1 -1
  272. package/dist/source/{adapter.d.ts → adapters/adapter.d.ts} +10 -4
  273. package/dist/source/adapters/adapter.d.ts.map +1 -0
  274. package/dist/source/adapters/adapter.js.map +1 -0
  275. package/dist/source/adapters/adapterFactory.d.ts.map +1 -0
  276. package/dist/source/{adapterFactory.js → adapters/adapterFactory.js} +1 -1
  277. package/dist/source/adapters/adapterFactory.js.map +1 -0
  278. package/dist/source/adapters/adapterProfile.d.ts.map +1 -0
  279. package/dist/source/adapters/adapterProfile.js.map +1 -0
  280. package/dist/source/{conformance.d.ts → adapters/conformance.d.ts} +1 -1
  281. package/dist/source/adapters/conformance.d.ts.map +1 -0
  282. package/dist/source/{conformance.js → adapters/conformance.js} +1 -1
  283. package/dist/source/adapters/conformance.js.map +1 -0
  284. package/dist/source/{contract.d.ts → adapters/contract.d.ts} +20 -75
  285. package/dist/source/adapters/contract.d.ts.map +1 -0
  286. package/dist/source/{contract.js → adapters/contract.js} +20 -55
  287. package/dist/source/adapters/contract.js.map +1 -0
  288. package/dist/source/adapters/drizzle.d.ts +1 -1
  289. package/dist/source/adapters/drizzle.d.ts.map +1 -1
  290. package/dist/source/adapters/drizzle.js +54 -25
  291. package/dist/source/adapters/drizzle.js.map +1 -1
  292. package/dist/source/adapters/idempotency.d.ts.map +1 -0
  293. package/dist/source/{idempotency.js → adapters/idempotency.js} +2 -2
  294. package/dist/source/adapters/idempotency.js.map +1 -0
  295. package/dist/source/adapters/index.d.ts +21 -0
  296. package/dist/source/adapters/index.d.ts.map +1 -0
  297. package/dist/source/adapters/index.js +21 -0
  298. package/dist/source/adapters/index.js.map +1 -0
  299. package/dist/source/adapters/kysely.d.ts +3 -1
  300. package/dist/source/adapters/kysely.d.ts.map +1 -1
  301. package/dist/source/adapters/kysely.js +49 -23
  302. package/dist/source/adapters/kysely.js.map +1 -1
  303. package/dist/source/adapters/kyselyMutationCore.d.ts +6 -3
  304. package/dist/source/adapters/kyselyMutationCore.d.ts.map +1 -1
  305. package/dist/source/adapters/kyselyMutationCore.js +17 -8
  306. package/dist/source/adapters/kyselyMutationCore.js.map +1 -1
  307. package/dist/source/adapters/memory.d.ts +3 -3
  308. package/dist/source/adapters/memory.d.ts.map +1 -1
  309. package/dist/source/adapters/memory.js +20 -7
  310. package/dist/source/adapters/memory.js.map +1 -1
  311. package/dist/source/adapters/migration.d.ts +8 -0
  312. package/dist/source/adapters/migration.d.ts.map +1 -0
  313. package/dist/source/adapters/migration.js +9 -0
  314. package/dist/source/adapters/migration.js.map +1 -0
  315. package/dist/source/{migrations.d.ts → adapters/migrations.d.ts} +3 -4
  316. package/dist/source/adapters/migrations.d.ts.map +1 -0
  317. package/dist/source/{migrations.js → adapters/migrations.js} +4 -31
  318. package/dist/source/adapters/migrations.js.map +1 -0
  319. package/dist/source/adapters/prisma.d.ts +1 -1
  320. package/dist/source/adapters/prisma.d.ts.map +1 -1
  321. package/dist/source/adapters/prisma.js +75 -30
  322. package/dist/source/adapters/prisma.js.map +1 -1
  323. package/dist/source/adapters/subjectAuthorization.d.ts +16 -0
  324. package/dist/source/adapters/subjectAuthorization.d.ts.map +1 -0
  325. package/dist/source/adapters/subjectAuthorization.js +126 -0
  326. package/dist/source/adapters/subjectAuthorization.js.map +1 -0
  327. package/dist/source/{connector.d.ts → connector/client.d.ts} +6 -1
  328. package/dist/source/connector/client.d.ts.map +1 -0
  329. package/dist/source/{connector.js → connector/client.js} +28 -11
  330. package/dist/source/connector/client.js.map +1 -0
  331. package/dist/source/connector/index.d.ts +4 -0
  332. package/dist/source/connector/index.d.ts.map +1 -0
  333. package/dist/source/connector/index.js +4 -0
  334. package/dist/source/connector/index.js.map +1 -0
  335. package/dist/source/{connectorProtocol.d.ts → connector/protocol.d.ts} +8 -1
  336. package/dist/source/connector/protocol.d.ts.map +1 -0
  337. package/dist/source/{connectorProtocol.js → connector/protocol.js} +10 -3
  338. package/dist/source/connector/protocol.js.map +1 -0
  339. package/dist/source/delivery/index.d.ts +3 -0
  340. package/dist/source/delivery/index.d.ts.map +1 -0
  341. package/dist/source/delivery/index.js +3 -0
  342. package/dist/source/delivery/index.js.map +1 -0
  343. package/dist/source/{pushQueue.d.ts → delivery/pushQueue.d.ts} +1 -1
  344. package/dist/source/delivery/pushQueue.d.ts.map +1 -0
  345. package/dist/source/{pushQueue.js → delivery/pushQueue.js} +1 -1
  346. package/dist/source/delivery/pushQueue.js.map +1 -0
  347. package/dist/source/{factory.d.ts → endpoint/factory.d.ts} +9 -3
  348. package/dist/source/endpoint/factory.d.ts.map +1 -0
  349. package/dist/source/{factory.js → endpoint/factory.js} +122 -6
  350. package/dist/source/endpoint/factory.js.map +1 -0
  351. package/dist/source/endpoint/index.d.ts +5 -0
  352. package/dist/source/endpoint/index.d.ts.map +1 -0
  353. package/dist/source/endpoint/index.js +5 -0
  354. package/dist/source/endpoint/index.js.map +1 -0
  355. package/dist/source/{next.d.ts → endpoint/next.d.ts} +2 -2
  356. package/dist/source/endpoint/next.d.ts.map +1 -0
  357. package/dist/source/{next.js → endpoint/next.js} +1 -1
  358. package/dist/source/endpoint/next.js.map +1 -0
  359. package/dist/source/{signing.d.ts → endpoint/signing.d.ts} +1 -1
  360. package/dist/source/endpoint/signing.d.ts.map +1 -0
  361. package/dist/source/{signing.js → endpoint/signing.js} +1 -1
  362. package/dist/source/endpoint/signing.js.map +1 -0
  363. package/dist/source/index.d.ts +15 -12
  364. package/dist/source/index.d.ts.map +1 -1
  365. package/dist/source/index.js +13 -10
  366. package/dist/source/index.js.map +1 -1
  367. package/dist/source/outbox/contract.d.ts +50 -0
  368. package/dist/source/outbox/contract.d.ts.map +1 -0
  369. package/dist/source/outbox/contract.js +50 -0
  370. package/dist/source/outbox/contract.js.map +1 -0
  371. package/dist/source/outbox/envelope.d.ts +9 -0
  372. package/dist/source/outbox/envelope.d.ts.map +1 -0
  373. package/dist/source/outbox/envelope.js +36 -0
  374. package/dist/source/outbox/envelope.js.map +1 -0
  375. package/dist/source/outbox/index.d.ts +11 -0
  376. package/dist/source/outbox/index.d.ts.map +1 -0
  377. package/dist/source/outbox/index.js +11 -0
  378. package/dist/source/outbox/index.js.map +1 -0
  379. package/dist/source/outbox/migrations.d.ts +4 -0
  380. package/dist/source/outbox/migrations.d.ts.map +1 -0
  381. package/dist/source/outbox/migrations.js +67 -0
  382. package/dist/source/outbox/migrations.js.map +1 -0
  383. package/dist/source/outbox/retention.d.ts +3 -0
  384. package/dist/source/outbox/retention.d.ts.map +1 -0
  385. package/dist/source/outbox/retention.js +3 -0
  386. package/dist/source/outbox/retention.js.map +1 -0
  387. package/dist/source/types.d.ts +59 -10
  388. package/dist/source/types.d.ts.map +1 -1
  389. package/dist/source/types.js +2 -0
  390. package/dist/source/types.js.map +1 -1
  391. package/dist/syncLog/contract.d.ts +19 -8
  392. package/dist/syncLog/contract.d.ts.map +1 -1
  393. package/dist/syncLog/contract.js +19 -6
  394. package/dist/syncLog/contract.js.map +1 -1
  395. package/dist/testing/fixtures/httpResponses.d.ts +6 -0
  396. package/dist/testing/fixtures/httpResponses.d.ts.map +1 -1
  397. package/dist/testing/fixtures/httpResponses.js +1 -0
  398. package/dist/testing/fixtures/httpResponses.js.map +1 -1
  399. package/dist/transport/{credentialLifecycle.d.ts → connection/credentialLifecycle.d.ts} +3 -3
  400. package/dist/transport/connection/credentialLifecycle.d.ts.map +1 -0
  401. package/dist/transport/{credentialLifecycle.js → connection/credentialLifecycle.js} +2 -2
  402. package/dist/transport/connection/credentialLifecycle.js.map +1 -0
  403. package/dist/transport/connection/index.d.ts +5 -0
  404. package/dist/transport/connection/index.d.ts.map +1 -0
  405. package/dist/transport/connection/index.js +5 -0
  406. package/dist/transport/connection/index.js.map +1 -0
  407. package/dist/transport/{connectionManager.d.ts → connection/manager.d.ts} +13 -5
  408. package/dist/transport/connection/manager.d.ts.map +1 -0
  409. package/dist/transport/{connectionManager.js → connection/manager.js} +6 -4
  410. package/dist/transport/connection/manager.js.map +1 -0
  411. package/dist/transport/{networkProbe.d.ts → connection/networkProbe.d.ts} +2 -2
  412. package/dist/transport/connection/networkProbe.d.ts.map +1 -0
  413. package/dist/transport/{networkProbe.js → connection/networkProbe.js} +4 -4
  414. package/dist/transport/connection/networkProbe.js.map +1 -0
  415. package/dist/transport/{httpClient.d.ts → http/client.d.ts} +32 -44
  416. package/dist/transport/http/client.d.ts.map +1 -0
  417. package/dist/transport/{httpClient.js → http/client.js} +96 -105
  418. package/dist/transport/http/client.js.map +1 -0
  419. package/dist/transport/http/helpers.d.ts +10 -0
  420. package/dist/transport/http/helpers.d.ts.map +1 -0
  421. package/dist/transport/http/helpers.js +46 -0
  422. package/dist/transport/http/helpers.js.map +1 -0
  423. package/dist/transport/http/index.d.ts +6 -0
  424. package/dist/transport/http/index.d.ts.map +1 -0
  425. package/dist/transport/http/index.js +6 -0
  426. package/dist/transport/http/index.js.map +1 -0
  427. package/dist/transport/{httpOptions.d.ts → http/options.d.ts} +7 -7
  428. package/dist/transport/{httpOptions.d.ts.map → http/options.d.ts.map} +1 -1
  429. package/dist/transport/{httpOptions.js → http/options.js} +1 -1
  430. package/dist/transport/http/options.js.map +1 -0
  431. package/dist/transport/http/subscription.d.ts +16 -0
  432. package/dist/transport/http/subscription.d.ts.map +1 -0
  433. package/dist/transport/http/subscription.js +146 -0
  434. package/dist/transport/http/subscription.js.map +1 -0
  435. package/dist/transport/{httpTransport.d.ts → http/transport.d.ts} +9 -6
  436. package/dist/transport/http/transport.d.ts.map +1 -0
  437. package/dist/transport/{httpTransport.js → http/transport.js} +153 -188
  438. package/dist/transport/http/transport.js.map +1 -0
  439. package/dist/transport/index.d.ts +8 -0
  440. package/dist/transport/index.d.ts.map +1 -0
  441. package/dist/transport/index.js +8 -0
  442. package/dist/transport/index.js.map +1 -0
  443. package/dist/transport/{commitFrames.d.ts → websocket/commitFrames.d.ts} +8 -20
  444. package/dist/transport/websocket/commitFrames.d.ts.map +1 -0
  445. package/dist/transport/{commitFrames.js → websocket/commitFrames.js} +6 -25
  446. package/dist/transport/websocket/commitFrames.js.map +1 -0
  447. package/dist/transport/{wsFrameHandlers.d.ts → websocket/frameHandlers.d.ts} +5 -5
  448. package/dist/transport/websocket/frameHandlers.d.ts.map +1 -0
  449. package/dist/transport/{wsFrameHandlers.js → websocket/frameHandlers.js} +10 -51
  450. package/dist/transport/websocket/frameHandlers.js.map +1 -0
  451. package/dist/transport/{heartbeat.d.ts → websocket/heartbeat.d.ts} +1 -1
  452. package/dist/transport/websocket/heartbeat.d.ts.map +1 -0
  453. package/dist/transport/{heartbeat.js → websocket/heartbeat.js} +2 -2
  454. package/dist/transport/websocket/heartbeat.js.map +1 -0
  455. package/dist/transport/websocket/index.d.ts +6 -0
  456. package/dist/transport/websocket/index.d.ts.map +1 -0
  457. package/dist/transport/websocket/index.js +6 -0
  458. package/dist/transport/websocket/index.js.map +1 -0
  459. package/dist/transport/{wsTransport.d.ts → websocket/transport.d.ts} +13 -25
  460. package/dist/transport/websocket/transport.d.ts.map +1 -0
  461. package/dist/transport/{wsTransport.js → websocket/transport.js} +14 -14
  462. package/dist/transport/websocket/transport.js.map +1 -0
  463. package/dist/types/index.d.ts +1 -1
  464. package/dist/types/index.d.ts.map +1 -1
  465. package/dist/types/streams.d.ts +8 -48
  466. package/dist/types/streams.d.ts.map +1 -1
  467. package/dist/types/streams.js +2 -2
  468. package/dist/wire/accountResponses.d.ts +4 -72
  469. package/dist/wire/accountResponses.d.ts.map +1 -1
  470. package/dist/wire/accountResponses.js +2 -10
  471. package/dist/wire/accountResponses.js.map +1 -1
  472. package/dist/wire/apiLifecycle.d.ts +63 -0
  473. package/dist/wire/apiLifecycle.d.ts.map +1 -0
  474. package/dist/wire/apiLifecycle.js +89 -0
  475. package/dist/wire/apiLifecycle.js.map +1 -0
  476. package/dist/wire/frames.d.ts +6 -83
  477. package/dist/wire/frames.d.ts.map +1 -1
  478. package/dist/wire/frames.js +4 -11
  479. package/dist/wire/frames.js.map +1 -1
  480. package/dist/wire/inboundFrames.d.ts +6 -131
  481. package/dist/wire/inboundFrames.d.ts.map +1 -1
  482. package/dist/wire/inboundFrames.js +3 -3
  483. package/dist/wire/inboundFrames.js.map +1 -1
  484. package/dist/wire/index.d.ts +20 -15
  485. package/dist/wire/index.d.ts.map +1 -1
  486. package/dist/wire/index.js +22 -8
  487. package/dist/wire/index.js.map +1 -1
  488. package/dist/wire/modelMutations.d.ts +1 -32
  489. package/dist/wire/modelMutations.d.ts.map +1 -1
  490. package/dist/wire/modelMutations.js +1 -8
  491. package/dist/wire/modelMutations.js.map +1 -1
  492. package/dist/wire/rateLimit.d.ts +82 -0
  493. package/dist/wire/rateLimit.d.ts.map +1 -0
  494. package/dist/wire/rateLimit.js +142 -0
  495. package/dist/wire/rateLimit.js.map +1 -0
  496. package/package.json +130 -10
  497. package/src/ai-sdk/modelTools.ts +5 -5
  498. package/src/ai-sdk/updateTool.ts +5 -7
  499. package/src/auth/capability.ts +5 -0
  500. package/src/auth/capabilityLifecycle.ts +1 -1
  501. package/src/auth/credentialPolicy.ts +1 -1
  502. package/src/auth/identity.ts +7 -7
  503. package/src/auth/index.ts +4 -663
  504. package/src/auth/runtime.ts +669 -0
  505. package/src/auth/sessionMint.ts +3 -2
  506. package/src/branches.ts +3 -0
  507. package/src/{coordination/awaitClaimGrant.ts → claims/awaitGrant.ts} +4 -4
  508. package/src/{wire/claims.ts → claims/contract.ts} +1 -1
  509. package/src/{coordination → claims}/events.ts +7 -11
  510. package/src/claims/index.ts +21 -0
  511. package/src/claims/lifetime.ts +78 -0
  512. package/src/{coordination → claims}/locator.ts +3 -3
  513. package/src/claims/routes.ts +81 -0
  514. package/src/{coordination → claims}/trace.ts +5 -5
  515. package/src/{ablo.ts → client/ablo.ts} +8 -20
  516. package/src/{transactionLayer.ts → client/contract.ts} +11 -13
  517. package/src/{headlessClient.ts → client/headless.ts} +13 -15
  518. package/src/client/index.ts +10 -0
  519. package/src/{resources → client/resources}/functionalUpdate.ts +4 -4
  520. package/src/{resources → client/resources}/httpResources.ts +163 -92
  521. package/src/client/resources/modelCreate.ts +73 -0
  522. package/src/{resources → client/resources}/modelOperations.ts +73 -55
  523. package/src/{resources → client/resources}/mutationOptions.ts +4 -17
  524. package/src/{resources → client/resources}/where.ts +1 -1
  525. package/src/{resources → client/resources}/writeOptionsSchema.ts +35 -27
  526. package/src/{transactions → commit}/confirmation/commitEnvelope.ts +2 -12
  527. package/src/{transactions → commit}/confirmation/httpCommitEnvelope.ts +1 -1
  528. package/src/{transactions → commit}/confirmation/pendingWrite.ts +1 -1
  529. package/src/{wire/commit.ts → commit/contract.ts} +27 -26
  530. package/src/{durableWrites.ts → commit/durableWrites.ts} +7 -7
  531. package/src/commit/httpRequest.ts +103 -0
  532. package/src/commit/index.ts +16 -0
  533. package/src/{readSetContext.ts → commit/readSetContext.ts} +24 -43
  534. package/src/{commitRecordRuntime.ts → commit/recordRuntime.ts} +12 -67
  535. package/src/coordination/index.ts +4 -54
  536. package/src/coordination/schema.ts +15 -309
  537. package/src/errorCodes.ts +62 -10
  538. package/src/errors.ts +32 -10
  539. package/src/index.ts +8 -8
  540. package/src/internal/read-set.ts +3 -6
  541. package/src/observability.ts +4 -4
  542. package/src/{wire/delta.ts → observation/contract.ts} +2 -2
  543. package/src/{wire/feedEvent.ts → observation/feedContract.ts} +3 -4
  544. package/src/{transport → observation}/httpFeed.ts +3 -3
  545. package/src/observation/index.ts +12 -0
  546. package/src/{log → observation/persistence}/syncDeltaRow.ts +6 -7
  547. package/src/pricing.ts +46 -25
  548. package/src/schema/audit.ts +121 -0
  549. package/src/schema/ddl.ts +71 -1
  550. package/src/schema/index.ts +20 -20
  551. package/src/schema/model.ts +17 -33
  552. package/src/schema/openapi.ts +170 -9
  553. package/src/schema/roles.ts +53 -0
  554. package/src/schema/schema.ts +91 -6
  555. package/src/schema/serialize.ts +8 -9
  556. package/src/schema/subject.ts +43 -0
  557. package/src/server/adapter.ts +3 -1
  558. package/src/server/commit.ts +6 -14
  559. package/src/server/index.ts +1 -1
  560. package/src/server/readConfig.ts +4 -0
  561. package/src/source/{adapter.ts → adapters/adapter.ts} +9 -5
  562. package/src/source/{adapterFactory.ts → adapters/adapterFactory.ts} +1 -1
  563. package/src/source/{conformance.ts → adapters/conformance.ts} +1 -1
  564. package/src/source/{contract.ts → adapters/contract.ts} +24 -61
  565. package/src/source/adapters/drizzle.ts +75 -29
  566. package/src/source/{idempotency.ts → adapters/idempotency.ts} +2 -2
  567. package/src/source/adapters/index.ts +20 -0
  568. package/src/source/adapters/kysely.ts +77 -27
  569. package/src/source/adapters/kyselyMutationCore.ts +23 -11
  570. package/src/source/adapters/memory.ts +26 -9
  571. package/src/source/adapters/migration.ts +11 -0
  572. package/src/source/{migrations.ts → adapters/migrations.ts} +6 -33
  573. package/src/source/adapters/prisma.ts +98 -34
  574. package/src/source/adapters/subjectAuthorization.ts +182 -0
  575. package/src/source/{connector.ts → connector/client.ts} +35 -12
  576. package/src/source/connector/index.ts +3 -0
  577. package/src/source/{connectorProtocol.ts → connector/protocol.ts} +10 -2
  578. package/src/source/delivery/index.ts +2 -0
  579. package/src/source/{pushQueue.ts → delivery/pushQueue.ts} +2 -2
  580. package/src/source/{factory.ts → endpoint/factory.ts} +150 -9
  581. package/src/source/endpoint/index.ts +4 -0
  582. package/src/source/{next.ts → endpoint/next.ts} +2 -2
  583. package/src/source/{signing.ts → endpoint/signing.ts} +1 -1
  584. package/src/source/index.ts +27 -18
  585. package/src/source/outbox/contract.ts +56 -0
  586. package/src/source/outbox/envelope.ts +47 -0
  587. package/src/source/outbox/index.ts +15 -0
  588. package/src/source/outbox/migrations.ts +71 -0
  589. package/src/source/outbox/retention.ts +2 -0
  590. package/src/source/types.ts +64 -10
  591. package/src/syncLog/contract.ts +19 -9
  592. package/src/testing/fixtures/httpResponses.ts +7 -0
  593. package/src/transport/{credentialLifecycle.ts → connection/credentialLifecycle.ts} +3 -3
  594. package/src/transport/connection/index.ts +4 -0
  595. package/src/transport/{connectionManager.ts → connection/manager.ts} +13 -4
  596. package/src/transport/{networkProbe.ts → connection/networkProbe.ts} +4 -4
  597. package/src/transport/{httpClient.ts → http/client.ts} +165 -184
  598. package/src/transport/http/helpers.ts +63 -0
  599. package/src/transport/http/index.ts +5 -0
  600. package/src/transport/{httpOptions.ts → http/options.ts} +6 -6
  601. package/src/transport/http/subscription.ts +174 -0
  602. package/src/transport/{httpTransport.ts → http/transport.ts} +210 -246
  603. package/src/transport/index.ts +7 -0
  604. package/src/transport/{commitFrames.ts → websocket/commitFrames.ts} +14 -46
  605. package/src/transport/{wsFrameHandlers.ts → websocket/frameHandlers.ts} +11 -54
  606. package/src/transport/{heartbeat.ts → websocket/heartbeat.ts} +2 -2
  607. package/src/transport/websocket/index.ts +5 -0
  608. package/src/transport/{wsTransport.ts → websocket/transport.ts} +16 -30
  609. package/src/types/index.ts +2 -6
  610. package/src/types/streams.ts +7 -61
  611. package/src/webhooks/events.ts +1 -1
  612. package/src/wire/accountResponses.ts +3 -12
  613. package/src/wire/apiLifecycle.ts +94 -0
  614. package/src/wire/frames.ts +5 -15
  615. package/src/wire/inboundFrames.ts +3 -3
  616. package/src/wire/index.ts +50 -15
  617. package/src/wire/modelMutations.ts +1 -14
  618. package/src/wire/rateLimit.ts +155 -0
  619. package/dist/ablo.d.ts.map +0 -1
  620. package/dist/ablo.js.map +0 -1
  621. package/dist/commitRecordRuntime.d.ts.map +0 -1
  622. package/dist/commitRecordRuntime.js.map +0 -1
  623. package/dist/coordination/awaitClaimGrant.d.ts.map +0 -1
  624. package/dist/coordination/awaitClaimGrant.js.map +0 -1
  625. package/dist/coordination/claimHeartbeatLoop.d.ts.map +0 -1
  626. package/dist/coordination/claimHeartbeatLoop.js.map +0 -1
  627. package/dist/coordination/claimMeta.d.ts.map +0 -1
  628. package/dist/coordination/claimMeta.js.map +0 -1
  629. package/dist/coordination/events.d.ts.map +0 -1
  630. package/dist/coordination/events.js +0 -8
  631. package/dist/coordination/events.js.map +0 -1
  632. package/dist/coordination/locator.d.ts.map +0 -1
  633. package/dist/coordination/locator.js.map +0 -1
  634. package/dist/coordination/targetConflict.d.ts.map +0 -1
  635. package/dist/coordination/targetConflict.js.map +0 -1
  636. package/dist/coordination/trace.d.ts.map +0 -1
  637. package/dist/coordination/trace.js.map +0 -1
  638. package/dist/durableWrites.d.ts.map +0 -1
  639. package/dist/durableWrites.js.map +0 -1
  640. package/dist/headlessClient.d.ts.map +0 -1
  641. package/dist/log/syncDeltaRow.d.ts.map +0 -1
  642. package/dist/log/syncDeltaRow.js.map +0 -1
  643. package/dist/policy/types.d.ts +0 -226
  644. package/dist/policy/types.d.ts.map +0 -1
  645. package/dist/policy/types.js +0 -127
  646. package/dist/policy/types.js.map +0 -1
  647. package/dist/readSetContext.d.ts.map +0 -1
  648. package/dist/readSetContext.js.map +0 -1
  649. package/dist/resources/functionalUpdate.d.ts.map +0 -1
  650. package/dist/resources/functionalUpdate.js.map +0 -1
  651. package/dist/resources/httpResources.d.ts.map +0 -1
  652. package/dist/resources/httpResources.js +0 -17
  653. package/dist/resources/httpResources.js.map +0 -1
  654. package/dist/resources/modelOperations.d.ts.map +0 -1
  655. package/dist/resources/modelOperations.js.map +0 -1
  656. package/dist/resources/mutationOptions.d.ts.map +0 -1
  657. package/dist/resources/mutationOptions.js.map +0 -1
  658. package/dist/resources/where.d.ts.map +0 -1
  659. package/dist/resources/where.js.map +0 -1
  660. package/dist/resources/writeOptionsSchema.d.ts.map +0 -1
  661. package/dist/resources/writeOptionsSchema.js.map +0 -1
  662. package/dist/schema/coordination.d.ts +0 -113
  663. package/dist/schema/coordination.d.ts.map +0 -1
  664. package/dist/schema/coordination.js +0 -134
  665. package/dist/schema/coordination.js.map +0 -1
  666. package/dist/source/adapter.d.ts.map +0 -1
  667. package/dist/source/adapter.js.map +0 -1
  668. package/dist/source/adapterFactory.d.ts.map +0 -1
  669. package/dist/source/adapterFactory.js.map +0 -1
  670. package/dist/source/adapterProfile.d.ts.map +0 -1
  671. package/dist/source/adapterProfile.js.map +0 -1
  672. package/dist/source/conformance.d.ts.map +0 -1
  673. package/dist/source/conformance.js.map +0 -1
  674. package/dist/source/connector.d.ts.map +0 -1
  675. package/dist/source/connector.js.map +0 -1
  676. package/dist/source/connectorProtocol.d.ts.map +0 -1
  677. package/dist/source/connectorProtocol.js.map +0 -1
  678. package/dist/source/contract.d.ts.map +0 -1
  679. package/dist/source/contract.js.map +0 -1
  680. package/dist/source/drizzle.d.ts +0 -2
  681. package/dist/source/drizzle.d.ts.map +0 -1
  682. package/dist/source/drizzle.js +0 -2
  683. package/dist/source/drizzle.js.map +0 -1
  684. package/dist/source/factory.d.ts.map +0 -1
  685. package/dist/source/factory.js.map +0 -1
  686. package/dist/source/idempotency.d.ts.map +0 -1
  687. package/dist/source/idempotency.js.map +0 -1
  688. package/dist/source/kysely.d.ts +0 -3
  689. package/dist/source/kysely.d.ts.map +0 -1
  690. package/dist/source/kysely.js +0 -3
  691. package/dist/source/kysely.js.map +0 -1
  692. package/dist/source/migrations.d.ts.map +0 -1
  693. package/dist/source/migrations.js.map +0 -1
  694. package/dist/source/next.d.ts.map +0 -1
  695. package/dist/source/next.js.map +0 -1
  696. package/dist/source/pushQueue.d.ts.map +0 -1
  697. package/dist/source/pushQueue.js.map +0 -1
  698. package/dist/source/signing.d.ts.map +0 -1
  699. package/dist/source/signing.js.map +0 -1
  700. package/dist/transactionLayer.d.ts.map +0 -1
  701. package/dist/transactionLayer.js.map +0 -1
  702. package/dist/transactions/confirmation/commitEnvelope.d.ts.map +0 -1
  703. package/dist/transactions/confirmation/commitEnvelope.js.map +0 -1
  704. package/dist/transactions/confirmation/httpCommitEnvelope.d.ts.map +0 -1
  705. package/dist/transactions/confirmation/httpCommitEnvelope.js.map +0 -1
  706. package/dist/transactions/confirmation/idempotencyKey.d.ts.map +0 -1
  707. package/dist/transactions/confirmation/idempotencyKey.js.map +0 -1
  708. package/dist/transactions/confirmation/pendingWrite.d.ts.map +0 -1
  709. package/dist/transactions/confirmation/pendingWrite.js.map +0 -1
  710. package/dist/transport/commitFrames.d.ts.map +0 -1
  711. package/dist/transport/commitFrames.js.map +0 -1
  712. package/dist/transport/connectionManager.d.ts.map +0 -1
  713. package/dist/transport/connectionManager.js.map +0 -1
  714. package/dist/transport/credentialLifecycle.d.ts.map +0 -1
  715. package/dist/transport/credentialLifecycle.js.map +0 -1
  716. package/dist/transport/heartbeat.d.ts.map +0 -1
  717. package/dist/transport/heartbeat.js.map +0 -1
  718. package/dist/transport/httpClient.d.ts.map +0 -1
  719. package/dist/transport/httpClient.js.map +0 -1
  720. package/dist/transport/httpFeed.d.ts +0 -4
  721. package/dist/transport/httpFeed.d.ts.map +0 -1
  722. package/dist/transport/httpOptions.js.map +0 -1
  723. package/dist/transport/httpTransport.d.ts.map +0 -1
  724. package/dist/transport/httpTransport.js.map +0 -1
  725. package/dist/transport/networkProbe.d.ts.map +0 -1
  726. package/dist/transport/networkProbe.js.map +0 -1
  727. package/dist/transport/wsFrameHandlers.d.ts.map +0 -1
  728. package/dist/transport/wsFrameHandlers.js.map +0 -1
  729. package/dist/transport/wsTransport.d.ts.map +0 -1
  730. package/dist/transport/wsTransport.js.map +0 -1
  731. package/dist/wire/claimEvent.d.ts.map +0 -1
  732. package/dist/wire/claimEvent.js.map +0 -1
  733. package/dist/wire/claims.d.ts.map +0 -1
  734. package/dist/wire/claims.js.map +0 -1
  735. package/dist/wire/commit.d.ts +0 -2801
  736. package/dist/wire/commit.d.ts.map +0 -1
  737. package/dist/wire/commit.js.map +0 -1
  738. package/dist/wire/delta.d.ts.map +0 -1
  739. package/dist/wire/delta.js.map +0 -1
  740. package/dist/wire/deltaDelivery.d.ts.map +0 -1
  741. package/dist/wire/deltaDelivery.js.map +0 -1
  742. package/dist/wire/feedCursor.d.ts.map +0 -1
  743. package/dist/wire/feedCursor.js.map +0 -1
  744. package/dist/wire/feedEvent.d.ts.map +0 -1
  745. package/dist/wire/feedEvent.js.map +0 -1
  746. package/src/policy/types.ts +0 -300
  747. package/src/schema/coordination.ts +0 -161
  748. package/src/source/drizzle.ts +0 -1
  749. package/src/source/kysely.ts +0 -2
  750. /package/dist/{coordination → claims}/targetConflict.d.ts +0 -0
  751. /package/dist/{coordination → claims}/targetConflict.js +0 -0
  752. /package/dist/{resources → client/resources}/mutationOptions.js +0 -0
  753. /package/dist/{resources → client/resources}/where.d.ts +0 -0
  754. /package/dist/{transactions → commit}/confirmation/httpCommitEnvelope.d.ts +0 -0
  755. /package/dist/{transactions → commit}/confirmation/idempotencyKey.d.ts +0 -0
  756. /package/dist/{transactions → commit}/confirmation/idempotencyKey.js +0 -0
  757. /package/dist/source/{adapter.js → adapters/adapter.js} +0 -0
  758. /package/dist/source/{adapterFactory.d.ts → adapters/adapterFactory.d.ts} +0 -0
  759. /package/dist/source/{adapterProfile.d.ts → adapters/adapterProfile.d.ts} +0 -0
  760. /package/dist/source/{adapterProfile.js → adapters/adapterProfile.js} +0 -0
  761. /package/dist/source/{idempotency.d.ts → adapters/idempotency.d.ts} +0 -0
  762. /package/src/{wire/claimEvent.ts → claims/eventContract.ts} +0 -0
  763. /package/src/{coordination/claimHeartbeatLoop.ts → claims/heartbeat.ts} +0 -0
  764. /package/src/{coordination/claimMeta.ts → claims/meta.ts} +0 -0
  765. /package/src/{coordination → claims}/targetConflict.ts +0 -0
  766. /package/src/{transactions → commit}/confirmation/idempotencyKey.ts +0 -0
  767. /package/src/{wire/feedCursor.ts → observation/cursor.ts} +0 -0
  768. /package/src/{wire/deltaDelivery.ts → observation/deliveryContract.ts} +0 -0
  769. /package/src/source/{adapterProfile.ts → adapters/adapterProfile.ts} +0 -0
@@ -17,14 +17,15 @@
17
17
  * routing private; application code gets the same `client.<model>` surface the
18
18
  * stateful client offers.
19
19
  */
20
- import { createHttpTransport, } from './httpTransport.js';
21
- import { modelWireNames } from '../auth/capability.js';
22
- import { modelList } from '../resources/httpResources.js';
23
- import { omittedModelError } from '../schema/select.js';
24
- import { reconcileFunctionalUpdate, } from '../resources/functionalUpdate.js';
25
- import { AbloConnectionError, AbloValidationError } from '../errors.js';
26
- import { abortReadSetCommit, capturePointRead, createReadSetContext, consumeReadSet, kReadEvidence, prepareReadSet, } from '../readSetContext.js';
27
- import { recordHttpCommitReceipt } from '../commitRecordRuntime.js';
20
+ import { createHttpTransport, } from './transport.js';
21
+ import { modelWireNames } from '../../auth/capability.js';
22
+ import { collectModelList, modelList } from '../../client/resources/httpResources.js';
23
+ import { resolveCreateId } from '../../client/resources/modelCreate.js';
24
+ import { omittedModelError } from '../../schema/select.js';
25
+ import { reconcileFunctionalUpdate, } from '../../client/resources/functionalUpdate.js';
26
+ import { AbloConnectionError, AbloValidationError } from '../../errors.js';
27
+ import { capturePointRead, createReadSetContext, kReadEvidence, prepareReadSet, } from '../../commit/readSetContext.js';
28
+ import { recordHttpCommitReceipt } from '../../commit/recordRuntime.js';
28
29
  /**
29
30
  * Private transport members that pass straight through the facade. Everything
30
31
  * else must be a declared schema model; there is no dynamic fallback namespace.
@@ -52,7 +53,7 @@ function isProtocolMember(prop) {
52
53
  */
53
54
  function createHttpModelClient(protocol, modelName, clientIdentity, readSetContext) {
54
55
  async function readRow(id) {
55
- const read = await protocol.get({ id });
56
+ const read = await protocol.read({ id });
56
57
  capturePointRead(readSetContext, clientIdentity, modelName, id, read.data, read.stamp);
57
58
  return read.data;
58
59
  }
@@ -75,19 +76,14 @@ function createHttpModelClient(protocol, modelName, clientIdentity, readSetConte
75
76
  };
76
77
  }
77
78
  function preparedMutation(params) {
78
- const prepared = prepareReadSet(readSetContext, clientIdentity, params.readAt, params.onStale, params.idempotencyKey, params.reads);
79
+ const prepared = prepareReadSet(readSetContext, clientIdentity, params.readAt, params.idempotencyKey, params.reads);
79
80
  return {
80
- options: {
81
- ...mutationOptions(params),
82
- ...(prepared.readAt !== undefined ? { readAt: prepared.readAt } : {}),
83
- ...(prepared.onStale !== undefined ? { onStale: prepared.onStale } : {}),
84
- ...(prepared.reads !== undefined ? { reads: prepared.reads } : {}),
85
- ...(prepared.idempotencyKey !== undefined
86
- ? { idempotencyKey: prepared.idempotencyKey }
87
- : {}),
88
- },
89
- consumed: prepared.consumed,
90
- automaticCommit: prepared.automaticCommit,
81
+ ...mutationOptions(params),
82
+ ...(prepared.readAt !== undefined ? { readAt: prepared.readAt } : {}),
83
+ ...(prepared.reads !== undefined ? { reads: prepared.reads } : {}),
84
+ ...(prepared.idempotencyKey !== undefined
85
+ ? { idempotencyKey: prepared.idempotencyKey }
86
+ : {}),
91
87
  };
92
88
  }
93
89
  async function update(arg, updater, options) {
@@ -99,83 +95,80 @@ function createHttpModelClient(protocol, modelName, clientIdentity, readSetConte
99
95
  model: modelName,
100
96
  id: arg,
101
97
  readFresh: async () => {
102
- const read = await protocol.get({ id: arg });
98
+ const read = await protocol.read({ id: arg });
103
99
  capturePointRead(readSetContext, clientIdentity, modelName, arg, read.data, read.stamp);
104
100
  return { data: read.data, stamp: read.stamp };
105
101
  },
106
102
  writeNext: async (patch, readAt) => {
107
- const prepared = preparedMutation({
103
+ const opts = preparedMutation({
108
104
  readAt,
109
- onStale: 'reject',
110
105
  reads: options?.reads,
111
106
  });
112
- try {
113
- const result = await protocol.update({
114
- ...prepared.options,
115
- id: arg,
116
- data: patch,
117
- });
118
- consumeReadSet(readSetContext, clientIdentity, prepared.consumed, prepared.automaticCommit);
119
- return result;
120
- }
121
- catch (error) {
122
- abortReadSetCommit(readSetContext, prepared.automaticCommit);
123
- throw error;
124
- }
107
+ return await protocol.update({
108
+ ...opts,
109
+ id: arg,
110
+ data: patch,
111
+ });
125
112
  },
126
113
  });
127
114
  return receipt === undefined ? undefined : requireUpdatedRow(arg);
128
115
  }
129
- const prepared = preparedMutation(arg);
130
- try {
131
- await protocol.update({
132
- ...prepared.options,
133
- id: arg.id,
134
- data: arg.data,
135
- });
136
- }
137
- catch (error) {
138
- abortReadSetCommit(readSetContext, prepared.automaticCommit);
139
- throw error;
140
- }
141
- consumeReadSet(readSetContext, clientIdentity, prepared.consumed, prepared.automaticCommit);
116
+ await protocol.update({
117
+ ...preparedMutation(arg),
118
+ id: arg.id,
119
+ data: arg.data,
120
+ });
142
121
  return requireUpdatedRow(arg.id);
143
122
  }
144
123
  const get = async (params) => {
145
- const read = await protocol.get(params);
146
- capturePointRead(readSetContext, clientIdentity, modelName, params.id, read.data, read.stamp);
147
- return read.data;
124
+ const result = await protocol.read(params);
125
+ return result.data;
148
126
  };
127
+ const read = async (params) => {
128
+ const result = await protocol.read(params);
129
+ capturePointRead(readSetContext, clientIdentity, modelName, params.id, result.data, result.stamp);
130
+ return result.data;
131
+ };
132
+ async function createModel(params) {
133
+ const opts = preparedMutation(params);
134
+ // The list form is one atomic commit through the protocol's batch door.
135
+ // Same verb because it is the same act; the argument says how many.
136
+ if (Array.isArray(params.data)) {
137
+ const rows = await protocol.createMany({
138
+ data: params.data,
139
+ ...(opts.idempotencyKey ? { idempotencyKey: opts.idempotencyKey } : {}),
140
+ ...(opts.reads ? { reads: [...opts.reads] } : {}),
141
+ });
142
+ return rows;
143
+ }
144
+ const single = params;
145
+ const resolvedId = resolveCreateId(single.id, single.data);
146
+ const row = await protocol.create({
147
+ ...opts,
148
+ ...(resolvedId !== undefined ? { id: resolvedId } : {}),
149
+ data: single.data,
150
+ });
151
+ return row;
152
+ }
149
153
  const list = async (options) => {
150
154
  const snapshot = await protocol.list(options);
151
- const page = modelList(snapshot.data, snapshot);
152
- const registry = readSetContext?.getStore();
153
- if (!registry)
154
- return page;
155
- if (!snapshot.evidence) {
156
- throw new AbloConnectionError(`${modelName}.list did not return row evidence. Upgrade the Ablo server or use get({ id }).`, { code: 'commit_no_result' });
157
- }
158
- const byId = new Map(snapshot.evidence.map((entry) => [entry.id, entry.stamp]));
159
- for (const row of snapshot.data) {
160
- const id = typeof row === 'object' && row !== null
161
- ? Reflect.get(row, 'id')
162
- : undefined;
163
- const stamp = typeof id === 'string' ? byId.get(id) : undefined;
164
- if (typeof id !== 'string' || stamp === undefined) {
165
- throw new AbloConnectionError(`${modelName}.list returned a row without matching evidence.`, { code: 'commit_no_result' });
166
- }
167
- capturePointRead(readSetContext, clientIdentity, modelName, id, row, stamp);
168
- }
169
- return page;
155
+ return modelList(snapshot.data, snapshot, (cursor) => list({ ...options, cursor }));
156
+ };
157
+ const listAll = async (options = {}) => {
158
+ const { maxPages, signal, ...readOptions } = options;
159
+ signal?.throwIfAborted();
160
+ const first = await list(readOptions);
161
+ return collectModelList(first, { maxPages, signal });
170
162
  };
171
163
  // Claim acquisition performs its authoritative read only after the grant.
172
164
  // Preserve that exact post-grant watermark while retaining the callable
173
- // namespace and all of its state/queue/release members through the proxy.
165
+ // namespace and all of its state/list/queue/release/reorder members through the proxy.
174
166
  const claim = new Proxy(protocol.claim, {
175
167
  apply(target, thisArg, argArray) {
176
168
  const result = Reflect.apply(target, thisArg, argArray);
177
169
  return result.then((held) => {
178
- if (held && held.readAt !== undefined) {
170
+ // A row-free lease (`claim(id)`) carries no snapshot: nothing to capture.
171
+ if (held && 'data' in held && held.readAt !== undefined) {
179
172
  capturePointRead(readSetContext, clientIdentity, modelName, held.target.id, held.data, held.readAt);
180
173
  }
181
174
  return held;
@@ -184,40 +177,15 @@ function createHttpModelClient(protocol, modelName, clientIdentity, readSetConte
184
177
  });
185
178
  return {
186
179
  get,
187
- retrieve: get,
180
+ read,
188
181
  list,
189
- async create(params) {
190
- const id = params.id ?? '';
191
- const prepared = preparedMutation(params);
192
- let row;
193
- try {
194
- row = await protocol.create({
195
- ...prepared.options,
196
- ...(params.id !== undefined ? { id: params.id } : {}),
197
- data: params.data,
198
- });
199
- }
200
- catch (error) {
201
- abortReadSetCommit(readSetContext, prepared.automaticCommit);
202
- throw error;
203
- }
204
- consumeReadSet(readSetContext, clientIdentity, prepared.consumed, prepared.automaticCommit);
205
- return row;
206
- },
182
+ listAll,
183
+ create: createModel,
207
184
  update,
208
185
  async delete(params) {
209
- const prepared = preparedMutation(params);
210
- try {
211
- await protocol.delete({ ...prepared.options, id: params.id });
212
- }
213
- catch (error) {
214
- abortReadSetCommit(readSetContext, prepared.automaticCommit);
215
- throw error;
216
- }
217
- consumeReadSet(readSetContext, clientIdentity, prepared.consumed, prepared.automaticCommit);
186
+ await protocol.delete({ ...preparedMutation(params), id: params.id });
218
187
  },
219
188
  claim,
220
- track: (params) => protocol.track(params),
221
189
  };
222
190
  }
223
191
  /**
@@ -252,13 +220,36 @@ export function createAbloHttpClient(options) {
252
220
  models.set(name, created);
253
221
  return created;
254
222
  };
223
+ const commits = {
224
+ async create(commitOptions) {
225
+ const prepared = prepareReadSet(readSetContext, clientIdentity, commitOptions.readAt, commitOptions.idempotencyKey, commitOptions.reads);
226
+ return transport.commits.create({
227
+ operations: commitOptions.operations,
228
+ ...(commitOptions.claim !== undefined ? { claim: commitOptions.claim } : {}),
229
+ ...(commitOptions.wait !== undefined ? { wait: commitOptions.wait } : {}),
230
+ ...(prepared.readAt !== undefined ? { readAt: prepared.readAt } : {}),
231
+ ...(prepared.reads !== undefined ? { reads: prepared.reads } : {}),
232
+ ...(prepared.idempotencyKey !== undefined
233
+ ? { idempotencyKey: prepared.idempotencyKey }
234
+ : {}),
235
+ });
236
+ },
237
+ get: (options) => transport.commits.get(options),
238
+ list: (options) => transport.commits.list(options),
239
+ };
255
240
  const facade = new Proxy({}, {
256
241
  get(_target, prop) {
257
242
  if (prop === kReadEvidence) {
258
- return { context: readSetContext, client: clientIdentity };
243
+ return {
244
+ context: readSetContext,
245
+ client: clientIdentity,
246
+ onChange: transport.onChange,
247
+ };
259
248
  }
260
249
  if (typeof prop !== 'string')
261
250
  return undefined;
251
+ if (prop === 'commits')
252
+ return commits;
262
253
  // Real protocol members pass through unchanged.
263
254
  if (isProtocolMember(prop)) {
264
255
  return transport[prop];
@@ -280,4 +271,4 @@ export function createAbloHttpClient(options) {
280
271
  // method on this type is missing at runtime.
281
272
  return facade;
282
273
  }
283
- //# sourceMappingURL=httpClient.js.map
274
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/transport/http/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type CommitReceiptWire } from '../../commit/contract.js';
2
+ import type { ClaimHeartbeatReply } from '../../claims/contract.js';
3
+ import type { ModelClaim } from '../../client/resources/httpResources.js';
4
+ import type { Claim, ClaimHeartbeat } from '../../types/streams.js';
5
+ /** Interpret a heartbeat reply for a lease this handle currently holds. */
6
+ export declare function heldHeartbeatReply(reply: ClaimHeartbeatReply, label: string): ClaimHeartbeat;
7
+ export declare function parseSuccessfulCommitResponse(value: unknown, idempotencyKey: string): CommitReceiptWire;
8
+ /** Decode the HTTP claim DTO into the public Claim shape. */
9
+ export declare function claimFromModelClaim(claim: ModelClaim): Claim;
10
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/transport/http/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AAG1E,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEpE,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,MAAM,GACZ,cAAc,CAWhB;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,EACd,cAAc,EAAE,MAAM,GACrB,iBAAiB,CAcnB;AAED,6DAA6D;AAC7D,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,KAAK,CAiB5D"}
@@ -0,0 +1,46 @@
1
+ import { AbloClaimedError, AbloConnectionError } from '../../errors.js';
2
+ import { commitReceiptSchema } from '../../commit/contract.js';
3
+ import { subTarget, streamTarget } from '../../claims/locator.js';
4
+ import { declaredMeta } from '../../claims/meta.js';
5
+ /** Interpret a heartbeat reply for a lease this handle currently holds. */
6
+ export function heldHeartbeatReply(reply, label) {
7
+ if (reply.status === 'held' && typeof reply.expiresAt === 'number') {
8
+ return {
9
+ expiresAt: reply.expiresAt,
10
+ ...(reply.queueDepth !== undefined ? { queueDepth: reply.queueDepth } : {}),
11
+ };
12
+ }
13
+ throw new AbloClaimedError(`The lease behind ${label} is no longer held — it expired or was granted onward. Re-acquire the claim and retry; a write attempted under the old lease is rejected by its \`readAt\` guard.`, { code: 'claim_lost' });
14
+ }
15
+ export function parseSuccessfulCommitResponse(value, idempotencyKey) {
16
+ const parsed = commitReceiptSchema.safeParse(value);
17
+ if (!parsed.success || parsed.data.clientTxId !== idempotencyKey) {
18
+ throw new AbloConnectionError('The commit endpoint returned an invalid success receipt; its outcome remains pending and is safe to retry.', {
19
+ code: 'commit_no_result',
20
+ cause: parsed.success
21
+ ? new Error('Commit receipt clientTxId did not match its idempotency key')
22
+ : parsed.error,
23
+ });
24
+ }
25
+ return parsed.data;
26
+ }
27
+ /** Decode the HTTP claim DTO into the public Claim shape. */
28
+ export function claimFromModelClaim(claim) {
29
+ const { meta, ...details } = subTarget(claim.target);
30
+ return {
31
+ object: 'claim',
32
+ id: claim.id,
33
+ ...(claim.status ? { status: claim.status } : {}),
34
+ description: claim.description ?? 'editing',
35
+ heldBy: claim.actor,
36
+ participantKind: claim.participantKind,
37
+ expiresAt: claim.expiresAt,
38
+ ...(claim.position !== undefined ? { position: claim.position } : {}),
39
+ target: {
40
+ ...streamTarget(claim.target),
41
+ ...details,
42
+ ...(meta !== undefined ? { meta: declaredMeta(meta) } : {}),
43
+ },
44
+ };
45
+ }
46
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/transport/http/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAA0B,MAAM,0BAA0B,CAAC;AAGvF,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,2EAA2E;AAC3E,MAAM,UAAU,kBAAkB,CAChC,KAA0B,EAC1B,KAAa;IAEb,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACnE,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5E,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,gBAAgB,CACxB,oBAAoB,KAAK,mKAAmK,EAC5L,EAAE,IAAI,EAAE,YAAY,EAAE,CACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,KAAc,EACd,cAAsB;IAEtB,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,cAAc,EAAE,CAAC;QACjE,MAAM,IAAI,mBAAmB,CAC3B,4GAA4G,EAC5G;YACE,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,MAAM,CAAC,OAAO;gBACnB,CAAC,CAAC,IAAI,KAAK,CAAC,6DAA6D,CAAC;gBAC1E,CAAC,CAAC,MAAM,CAAC,KAAK;SACjB,CACF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,mBAAmB,CAAC,KAAiB;IACnD,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO;QACL,MAAM,EAAE,OAAO;QACf,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,SAAS;QAC3C,MAAM,EAAE,KAAK,CAAC,KAAK;QACnB,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,MAAM,EAAE;YACN,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;YAC7B,GAAG,OAAO;YACV,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ /** Stateless HTTP transport boundary. */
2
+ export * from './options.js';
3
+ export * from './client.js';
4
+ export * from './transport.js';
5
+ export * from './helpers.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transport/http/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ /** Stateless HTTP transport boundary. */
2
+ export * from './options.js';
3
+ export * from './client.js';
4
+ export * from './transport.js';
5
+ export * from './helpers.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/transport/http/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
@@ -9,12 +9,12 @@
9
9
  * TypeScript is structural, so a consumer's full options object satisfies this
10
10
  * without declaring `extends`; the composition root keeps owning its own type.
11
11
  */
12
- import type { Schema, SchemaRecord } from '../schema/schema.js';
13
- import type { AuthClientOptions } from '../auth/apiKey.js';
14
- import type { CoordinationObservability } from '../observability.js';
15
- import type { CommitOutboxScope } from '../transactions/confirmation/commitEnvelope.js';
16
- import type { CommitReceiptWire } from '../wire/commit.js';
17
- import type { DurableWriteStore, DurableWritesConfig } from '../durableWrites.js';
12
+ import type { Schema, SchemaRecord } from '../../schema/schema.js';
13
+ import type { AuthClientOptions } from '../../auth/apiKey.js';
14
+ import type { CoordinationObservability } from '../../observability.js';
15
+ import type { CommitOutboxScope } from '../../commit/confirmation/commitEnvelope.js';
16
+ import type { CommitReceiptWire } from '../../commit/contract.js';
17
+ import type { DurableWriteStore, DurableWritesConfig } from '../../commit/durableWrites.js';
18
18
  export interface HttpClientConfig<S extends SchemaRecord = SchemaRecord> extends AuthClientOptions {
19
19
  schema: Schema<S>;
20
20
  /** Overrides where credential exchange and bootstrap are reached. */
@@ -39,4 +39,4 @@ export interface HttpClientConfig<S extends SchemaRecord = SchemaRecord> extends
39
39
  readonly body: unknown;
40
40
  }) => void;
41
41
  }
42
- //# sourceMappingURL=httpOptions.d.ts.map
42
+ //# sourceMappingURL=options.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"httpOptions.d.ts","sourceRoot":"","sources":["../../src/transport/httpOptions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,CAGrE,SAAQ,iBAAiB;IACzB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAClB,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,KAAK,GAAG,SAAS,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IAC9D,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAC1C,iFAAiF;IACjF,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,2DAA2D;IAC3D,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,mEAAmE;IACnE,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,qDAAqD;IACrD,SAAS,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;IAC7C,iFAAiF;IACjF,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE;QAC9B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;QACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;KACxB,KAAK,IAAI,CAAC;CACZ"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/transport/http/options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,CAGrE,SAAQ,iBAAiB;IACzB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAClB,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,KAAK,GAAG,SAAS,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IAC9D,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAC1C,iFAAiF;IACjF,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,2DAA2D;IAC3D,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,mEAAmE;IACnE,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,qDAAqD;IACrD,SAAS,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;IAC7C,iFAAiF;IACjF,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE;QAC9B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;QACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;KACxB,KAAK,IAAI,CAAC;CACZ"}
@@ -10,4 +10,4 @@
10
10
  * without declaring `extends`; the composition root keeps owning its own type.
11
11
  */
12
12
  export {};
13
- //# sourceMappingURL=httpOptions.js.map
13
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/transport/http/options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
@@ -0,0 +1,16 @@
1
+ import type { ReadDependency } from '../../coordination/schema.js';
2
+ import { AbloStaleContextError } from '../../errors.js';
3
+ export interface HttpReadOnChangeDeps {
4
+ readonly fetch: typeof fetch;
5
+ readonly endpoint: () => string;
6
+ readonly authHeaders: () => Promise<Record<string, string>>;
7
+ readonly prepare: () => Promise<void>;
8
+ readonly register: (controller: AbortController) => void;
9
+ readonly unregister: (controller: AbortController) => void;
10
+ }
11
+ export type HttpReadOnChange = (reads: readonly ReadDependency[], listener: (error: AbloStaleContextError) => void) => () => void;
12
+ /** POST the existing reads and consume one `stale_context` SSE event. */
13
+ export declare function createHttpReadOnChange(deps: HttpReadOnChangeDeps): HttpReadOnChange;
14
+ /** Full-jitter reconnect delay; exported only for transport unit tests. */
15
+ export declare function reconnectDelayMs(failures: number, random?: () => number): number;
16
+ //# sourceMappingURL=subscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../../src/transport/http/subscription.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EACL,qBAAqB,EAEtB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,UAAU,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,IAAI,CAAC;CAC5D;AAED,MAAM,MAAM,gBAAgB,GAAG,CAC7B,KAAK,EAAE,SAAS,cAAc,EAAE,EAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,KAC7C,MAAM,IAAI,CAAC;AAKhB,yEAAyE;AACzE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,GAAG,gBAAgB,CA4DnF;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,eAAc,GAAG,MAAM,CAM/E"}
@@ -0,0 +1,146 @@
1
+ import { AbloStaleContextError, translateHttpError, } from '../../errors.js';
2
+ const INITIAL_RECONNECT_CAP_MS = 5_000;
3
+ const MAX_RECONNECT_DELAY_MS = 30_000;
4
+ /** POST the existing reads and consume one `stale_context` SSE event. */
5
+ export function createHttpReadOnChange(deps) {
6
+ return (reads, listener) => {
7
+ if (reads.length === 0)
8
+ return () => undefined;
9
+ const controller = new AbortController();
10
+ deps.register(controller);
11
+ let stopped = false;
12
+ const stop = () => {
13
+ if (stopped)
14
+ return;
15
+ stopped = true;
16
+ controller.abort();
17
+ deps.unregister(controller);
18
+ };
19
+ void (async () => {
20
+ let failures = 0;
21
+ while (!stopped) {
22
+ try {
23
+ await deps.prepare();
24
+ const response = await deps.fetch(deps.endpoint(), {
25
+ method: 'POST',
26
+ headers: {
27
+ ...(await deps.authHeaders()),
28
+ Accept: 'text/event-stream',
29
+ 'Cache-Control': 'no-cache',
30
+ 'Content-Type': 'application/json',
31
+ },
32
+ body: JSON.stringify({ reads }),
33
+ signal: controller.signal,
34
+ });
35
+ if (!response.ok) {
36
+ const body = await parseResponseBody(response);
37
+ throw translateHttpError(response.status, body, response.headers.get('x-request-id') ?? undefined);
38
+ }
39
+ failures = 0;
40
+ const stale = await readStaleContextEvent(response);
41
+ if (stale) {
42
+ stop();
43
+ listener(stale);
44
+ return;
45
+ }
46
+ }
47
+ catch (error) {
48
+ if (stopped || controller.signal.aborted)
49
+ return;
50
+ void error;
51
+ }
52
+ failures += 1;
53
+ await abortableDelay(reconnectDelayMs(failures), controller.signal);
54
+ }
55
+ })().finally(() => deps.unregister(controller));
56
+ return stop;
57
+ };
58
+ }
59
+ /** Full-jitter reconnect delay; exported only for transport unit tests. */
60
+ export function reconnectDelayMs(failures, random = Math.random) {
61
+ const cap = Math.min(MAX_RECONNECT_DELAY_MS, INITIAL_RECONNECT_CAP_MS * 2 ** Math.max(0, failures - 1));
62
+ return random() * cap;
63
+ }
64
+ async function parseResponseBody(response) {
65
+ const text = await response.text();
66
+ if (text === '')
67
+ return null;
68
+ try {
69
+ return JSON.parse(text);
70
+ }
71
+ catch {
72
+ return text;
73
+ }
74
+ }
75
+ async function readStaleContextEvent(response) {
76
+ if (!response.body)
77
+ return undefined;
78
+ const reader = response.body.getReader();
79
+ const decoder = new TextDecoder();
80
+ let buffer = '';
81
+ while (true) {
82
+ const { value, done } = await reader.read();
83
+ buffer += decoder.decode(value, { stream: !done });
84
+ let boundary = eventBoundary(buffer);
85
+ while (boundary) {
86
+ const block = buffer.slice(0, boundary.index);
87
+ buffer = buffer.slice(boundary.index + boundary.length);
88
+ const parsed = parseEventBlock(block);
89
+ if (parsed?.event === 'stale_context') {
90
+ let body;
91
+ try {
92
+ body = JSON.parse(parsed.data);
93
+ }
94
+ catch {
95
+ body = parsed.data;
96
+ }
97
+ const error = translateHttpError(409, body);
98
+ return error instanceof AbloStaleContextError
99
+ ? error
100
+ : new AbloStaleContextError(error.message, {
101
+ code: 'stale_context',
102
+ cause: error,
103
+ });
104
+ }
105
+ boundary = eventBoundary(buffer);
106
+ }
107
+ if (done)
108
+ return undefined;
109
+ }
110
+ }
111
+ function eventBoundary(value) {
112
+ const match = /\r?\n\r?\n/.exec(value);
113
+ return match ? { index: match.index, length: match[0].length } : undefined;
114
+ }
115
+ function parseEventBlock(block) {
116
+ let event = 'message';
117
+ const data = [];
118
+ for (const line of block.split(/\r?\n/)) {
119
+ if (line.startsWith(':'))
120
+ continue;
121
+ const separator = line.indexOf(':');
122
+ const field = separator < 0 ? line : line.slice(0, separator);
123
+ let value = separator < 0 ? '' : line.slice(separator + 1);
124
+ if (value.startsWith(' '))
125
+ value = value.slice(1);
126
+ if (field === 'event')
127
+ event = value;
128
+ if (field === 'data')
129
+ data.push(value);
130
+ }
131
+ return data.length > 0 ? { event, data: data.join('\n') } : undefined;
132
+ }
133
+ async function abortableDelay(ms, signal) {
134
+ if (signal.aborted)
135
+ return;
136
+ await new Promise((resolve) => {
137
+ const timer = setTimeout(done, ms);
138
+ signal.addEventListener('abort', done, { once: true });
139
+ function done() {
140
+ clearTimeout(timer);
141
+ signal.removeEventListener('abort', done);
142
+ resolve();
143
+ }
144
+ });
145
+ }
146
+ //# sourceMappingURL=subscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../../src/transport/http/subscription.ts"],"names":[],"mappings":"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"}