@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,520 @@
1
+ /**
2
+ * Shared resource types for the typed clients and private HTTP transport.
3
+ * the commit and claim shapes, the session-mint params and resource, and the
4
+ * {@link HttpClaimApi} derivation. This module holds only types and has no runtime
5
+ * imports.
6
+ */
7
+
8
+ import type {
9
+ ClaimHeartbeatAckPayload,
10
+ OnStaleMode,
11
+ ReadDependency,
12
+ TrackDependency,
13
+ } from '../coordination/schema.js';
14
+ import type { ClaimHeartbeatReply, ClaimState } from '../wire/claims.js';
15
+ import type {
16
+ ClientCommitReceipt,
17
+ CommitWait,
18
+ } from '../wire/commit.js';
19
+ import type { LogListResponse, LogQuery } from '../wire/feedEvent.js';
20
+ // Re-exported, not redeclared. `wire/commit.ts` owns the settlement vocabulary
21
+ // and derives the waitable subset from it; this module serves that name to SDK
22
+ // consumers. Restating the subset here as its own union produced a type that
23
+ // matched the canonical one only by both happening to list the same two
24
+ // strings — and would have silently disagreed with the runtime `wait`
25
+ // validator the moment a third settlement state existed.
26
+ export type { CommitWait };
27
+ // `ModelTarget` (the `model` and `id` locator) and `ModelClaim` (the resolved
28
+ // claim view) are defined in `../coordination/schema`, derived from a single
29
+ // schema so the client, the HTTP client, and the server share one definition.
30
+ // They are re-exported here so the resource types live behind one import.
31
+ import type { ModelTarget, ModelClaim } from '../coordination/schema.js';
32
+ export type { ModelTarget, ModelClaim };
33
+ import type { ResolveClaimMeta } from '../types/global.js';
34
+ import type { ParticipantKind } from '../types/participant.js';
35
+ import type { SchemaRecord } from '../schema/schema.js';
36
+ import type { SyncGroupInput } from '../schema/roles.js';
37
+ // The capability vocabulary — `auth/capability.ts` owns what a grant is on both
38
+ // axes, and these params are the surface a developer declares it through.
39
+ import type {
40
+ CapabilityCan,
41
+ CapabilityOperation,
42
+ CapabilityScope,
43
+ } from '../auth/capability.js';
44
+ import type {
45
+ Claim,
46
+ ClaimStream,
47
+ ClaimWaitOptions,
48
+ Duration,
49
+ HeldClaim,
50
+ } from '../types/streams.js';
51
+ import type { ModelUpdater, ContentionOptions } from './functionalUpdate.js';
52
+ import type {
53
+ ClaimOptions,
54
+ ClaimParams,
55
+ ClaimReadApi,
56
+ AwaitedClaimMethod,
57
+ ModelTrackParams,
58
+ ModelTrackResult,
59
+ ServerReadOptions,
60
+ } from './modelOperations.js';
61
+
62
+ // ── Model proxy types ─────────────────────────────────────────────────────
63
+
64
+ /**
65
+ * The operations available on each model in the sync engine:
66
+ * `get({ id })` — an async single-row server read
67
+ * `list({ where })` — an async collection server read
68
+ * `local.get(id)` / `local.list(...)` / `local.count(...)` — synchronous local reads
69
+ * `create({ data })` / `update({ id, data })` / `delete({ id })` — writes
70
+ * `claim({ id })` — a durable claim handle for coordinated writes
71
+ */
72
+
73
+ export type ModelOperationAction =
74
+ | 'create'
75
+ | 'update'
76
+ | 'delete'
77
+ | 'archive'
78
+ | 'unarchive';
79
+
80
+
81
+ /** @internal Transport envelope; the public typed client returns the row. */
82
+ export interface HttpTransportRead<T = Record<string, unknown>> {
83
+ /**
84
+ * The row, or `undefined` when no row matched the id (or it's outside the
85
+ * caller's scope). A miss is data-absence, not an error — `get` never
86
+ * throws "not found". This envelope stays inside the HTTP transport; the
87
+ * public typed client unwraps it to the WebSocket client's `T | undefined`.
88
+ */
89
+ readonly data: T | undefined;
90
+ readonly stamp: number;
91
+ readonly claims: readonly ModelClaim[];
92
+ }
93
+
94
+ export type IfClaimedPolicy = 'return' | 'fail';
95
+
96
+ export interface ClaimedOptions {
97
+ /**
98
+ * What to do when another participant has claimed the target: `return` lets
99
+ * the read proceed; `fail` throws `AbloClaimedError`. Inspect claim state via
100
+ * `ablo.<model>.claim.state({ id })`. Waiting is a claim-side concern — take
101
+ * `ablo.<model>.claim({ id })` (it queues fairly); reads never block.
102
+ */
103
+ readonly ifClaimed?: IfClaimedPolicy;
104
+ }
105
+
106
+ export type { ClaimWaitOptions } from '../types/streams.js';
107
+
108
+ export interface ModelReadOptions extends ClaimedOptions {}
109
+
110
+ /**
111
+ * The target a caller names when creating a claim: {@link ModelTarget} with its
112
+ * one caller-authored member typed — `meta` is the shape declared on
113
+ * `Register`'s `ClaimMeta` slot, the same declaration every reader of the claim
114
+ * is given back.
115
+ *
116
+ * Derived rather than restated, and narrowed only here: `modelTargetSchema`
117
+ * keeps parsing `meta` as an open record, because a peer on a newer build must
118
+ * still be understood. The wire stays permissive; the DTO the caller writes
119
+ * does not.
120
+ */
121
+ export type ModelTargetInput = Omit<ModelTarget, 'meta'> & {
122
+ readonly meta?: ResolveClaimMeta;
123
+ };
124
+
125
+ export interface ClaimCreateOptions {
126
+ readonly target: ModelTargetInput;
127
+ /** Peer-visible description of the work — the same field on every claim
128
+ * surface. Defaults to `'editing'` when omitted. */
129
+ readonly description?: string;
130
+ readonly ttl?: Duration;
131
+ /**
132
+ * Join the server's fair FIFO queue when the target is already claimed,
133
+ * rather than failing immediately. `create` then resolves only once the
134
+ * lease is actually ours (the server pushes `claim_acquired` if the target
135
+ * was free, or `claim_granted` when we reach the head of the line). Without
136
+ * this, a contended claim throws. Used by `ablo.<model>.claim` so writers
137
+ * serialize instead of racing.
138
+ */
139
+ readonly queue?: boolean;
140
+ /** Cap on how long to wait for a queued grant before rejecting. */
141
+ readonly waitTimeoutMs?: number;
142
+ /** Abort a pending wait from outside — rejects with `claim_wait_aborted`.
143
+ * Ignored once the grant has arrived. */
144
+ readonly signal?: AbortSignal;
145
+ /**
146
+ * Backpressure: reject with `AbloClaimedError('queue_too_deep')` instead of
147
+ * waiting if the queue is already `>= maxQueueDepth` when we join.
148
+ */
149
+ readonly maxQueueDepth?: number;
150
+ }
151
+
152
+ export interface CommitOperationInput {
153
+ readonly action: ModelOperationAction;
154
+ /** The model name — matches `ablo.<model>` and the schema's `model()`. */
155
+ readonly model: string;
156
+ readonly id?: string | null;
157
+ readonly data?: Record<string, unknown> | null;
158
+ readonly transactionId?: string | null;
159
+ readonly readAt?: number | null;
160
+ readonly onStale?: OnStaleMode | null;
161
+ /** Fencing token (Option B) from the batch's claim handle; server-validated. */
162
+ readonly fenceToken?: number | null;
163
+ }
164
+
165
+ export interface CommitCreateOptions {
166
+ readonly idempotencyKey?: string | null;
167
+ readonly readAt?: number | null;
168
+ readonly onStale?: OnStaleMode | null;
169
+ /**
170
+ * A claim handle from `ablo.<model>.claim({ id })` (or the HTTP claim
171
+ * surface). Same vocabulary as the per-model writes: the handle's
172
+ * snapshot watermark becomes the batch `readAt` default and `onStale`
173
+ * defaults to `'reject'`, so a commit that follows a claim is guarded
174
+ * against concurrent edits without re-stating the watermark by hand.
175
+ * Explicit `readAt`/`onStale` on the options win.
176
+ */
177
+ readonly claim?: Claim | null;
178
+ /** One atomic batch. Use a one-element array for a single operation. */
179
+ readonly operations: readonly CommitOperationInput[];
180
+ readonly wait?: CommitWait;
181
+ /**
182
+ * The batch premise — the "did anything I looked at change?" guard.
183
+ * Declare the rows (`{ model, id, readAt, fields? }`) or sync groups
184
+ * (`{ group, readAt }`, for example `report:abc`) this batch was premised on; the
185
+ * server checks that none moved since `readAt` and fires the entry's `onStale`
186
+ * over the batch. This is distinct from the write-target `readAt`: it guards what
187
+ * you read, not what you write.
188
+ */
189
+ readonly reads?: readonly ReadDependency[] | null;
190
+ /**
191
+ * Durable premises to register as part of this batch — the persisted
192
+ * sibling of `reads`. Where `reads` guards only this commit, a `track` entry
193
+ * (`{ model, id, readAt? }` for a row or `{ group, readAt? }` for a sync group)
194
+ * lives on past it: a later matching change rides back on a future receipt's
195
+ * `notifications`. A track-only batch (just `track`, an empty `operations`) is
196
+ * the batch form of `ablo.<model>.track()`.
197
+ */
198
+ readonly track?: readonly TrackDependency[] | null;
199
+ }
200
+
201
+ /** Public projection inferred from the canonical runtime schema. */
202
+ export type CommitReceipt = ClientCommitReceipt;
203
+
204
+ export interface CommitResource {
205
+ create(options: CommitCreateOptions): Promise<CommitReceipt>;
206
+ }
207
+
208
+ export interface HttpLogListOptions
209
+ extends Omit<LogQuery, 'limit'> {
210
+ readonly limit?: number;
211
+ readonly signal?: AbortSignal;
212
+ }
213
+
214
+ export interface HttpLogsResource {
215
+ list(options?: HttpLogListOptions): Promise<LogListResponse>;
216
+ }
217
+
218
+ export interface ClaimResource extends ClaimStream {
219
+ create(options: ClaimCreateOptions): Promise<Claim>;
220
+ list(target?: Partial<ModelTarget>): readonly ModelClaim[];
221
+ waitFor(target: Partial<ModelTarget>, options?: ClaimWaitOptions): Promise<void>;
222
+ }
223
+
224
+ /**
225
+ * The claim-ticket surface of the stateless HTTP client — the operations a
226
+ * caller performs holding only a `claimId`, which is what a queued acquire
227
+ * leaves in its hand (`AbloClaimedError('claim_queued')` carries it on
228
+ * `error.claims`). The WebSocket client never needs these: it awaits the grant
229
+ * on its socket.
230
+ *
231
+ * All three shapes are the wire's own — `claimStateSchema`,
232
+ * `claimHeartbeatReplySchema`, and the batch ack — so this surface cannot
233
+ * describe a response the server does not send.
234
+ */
235
+ export interface HttpClaimsResource {
236
+ /**
237
+ * The claim's current state, by its id — `GET /v1/claims/{claimId}`. The
238
+ * poll half of the queued-grant handover: a queued caller polls until
239
+ * `status` is `'active'`, at which point `fenceToken` is present and the
240
+ * work can begin. `position` is advisory (a privileged caller can reorder
241
+ * the line, so it may go up); only `status` is authoritative.
242
+ */
243
+ retrieve(params: { readonly claimId: string }): Promise<ClaimState>;
244
+ /**
245
+ * One beat on the named lease — `POST /v1/claims/{claimId}/heartbeat`. On a
246
+ * held lease it extends the TTL; on a queued ticket it refreshes the
247
+ * waiter's slot in the line and reports `{ status: 'queued', position }`.
248
+ */
249
+ heartbeat(params: {
250
+ readonly claimId: string;
251
+ readonly ttl?: string | number;
252
+ }): Promise<ClaimHeartbeatReply>;
253
+ /**
254
+ * One beat for every lease this identity holds — `POST /v1/claims/heartbeat`,
255
+ * one ack per extended lease. The socketless twin of the realtime
256
+ * keepalive, for a stateless worker holding many rows.
257
+ */
258
+ heartbeatAll(options?: {
259
+ readonly ttl?: string | number;
260
+ }): Promise<readonly ClaimHeartbeatAckPayload[]>;
261
+ /**
262
+ * Give the ticket back — `DELETE /v1/claims/{claimId}`. On a held lease this
263
+ * releases it and promotes the head of the queue; on a queued ticket it
264
+ * leaves the line, so the waiters behind move up instead of waiting out
265
+ * your slot's TTL. Idempotent: releasing an already-ended claim is a no-op.
266
+ */
267
+ release(params: { readonly claimId: string }): Promise<void>;
268
+ }
269
+
270
+ export interface ModelMutationOptions extends ClaimedOptions {
271
+ readonly claimRef?: string | { readonly id: string } | null;
272
+ readonly idempotencyKey?: string | null;
273
+ readonly readAt?: number | null;
274
+ readonly onStale?: OnStaleMode | null;
275
+ readonly wait?: CommitWait;
276
+ readonly claim?: Claim | ClaimOptions | null;
277
+ /** Fencing token (Option B) from the claim; server-validated at commit. */
278
+ readonly fenceToken?: number | null;
279
+ }
280
+
281
+ /**
282
+ * The stateless HTTP claim surface. Most code puts a `claim` directly on the write
283
+ * (`update({ id, data, claim })`) and lets the SDK release it; reach for this
284
+ * namespace for multi-step handles and coordination screens.
285
+ *
286
+ * It is the same surface as the reactive claim API, but because every read is a
287
+ * server round-trip, `state`, `queue`, and `reorder` are awaited here. The
288
+ * WebSocket client resolves those synchronously from its local cache, which is what
289
+ * lets it read a claim's state inside a React render; a stateless client has no
290
+ * cache to read, so the promise is unavoidable.
291
+ *
292
+ * It is derived from `ClaimReadApi` through {@link AwaitedClaimMethod} so the two
293
+ * transports cannot drift: the only difference is the promise wrapper that
294
+ * statelessness forces. `claim({ id })` is identical on both (already async);
295
+ * `state`, `queue`, `reorder`, and `release` are the awaited form.
296
+ */
297
+ export type HttpClaimApi<
298
+ T = Record<string, unknown>,
299
+ Fields = T,
300
+ > =
301
+ // The try-claim first: `queue: false` resolves `null` on a held target —
302
+ // an expected outcome, not an error — while the queued default always
303
+ // resolves a held claim or rejects with a queue error.
304
+ ((params: ClaimParams<Fields> & { queue: false }) => Promise<HeldClaim<T> | null>) &
305
+ ((params: ClaimParams<Fields>) => Promise<HeldClaim<T>>) & {
306
+ [K in keyof ClaimReadApi<T>]: AwaitedClaimMethod<ClaimReadApi<T>[K]>;
307
+ };
308
+
309
+ /** @internal String-keyed model routing owned by the private HTTP transport. */
310
+ export interface HttpTransportModel<
311
+ T = Record<string, unknown>,
312
+ Fields = T,
313
+ > {
314
+ /**
315
+ * Single-row read over HTTP. **Returns an envelope, not the bare row** — the
316
+ * row is on `.data`, alongside the `.stamp` watermark (for stale-context
317
+ * guards on the following write) and any active `.claims`. This is the
318
+ * schema-agnostic protocol surface; the typed HTTP facade unwraps it to the
319
+ * same `T | undefined` shape as the WebSocket client.
320
+ *
321
+ * Public callers never see this shape; `createAbloHttpClient` unwraps it.
322
+ */
323
+ /** Canonical point lookup for the schema-agnostic transport. */
324
+ get(params: ModelReadOptions & { readonly id: string }): Promise<HttpTransportRead<T>>;
325
+ /** @deprecated Use `get({ id })`; retained for the private transport compatibility seam. */
326
+ retrieve(params: ModelReadOptions & { readonly id: string }): Promise<HttpTransportRead<T>>;
327
+ /**
328
+ * Collection read over HTTP (server round-trip). Equality `where`, `orderBy`,
329
+ * and `limit`. The typed public client always exposes `ablo.<model>.list`;
330
+ * this protocol shape is private transport machinery.
331
+ */
332
+ list(options?: ServerReadOptions<T>): Promise<T[]>;
333
+ /**
334
+ * Creates a row and returns the confirmed server row, including framework
335
+ * defaults such as `createdAt` and `createdBy`. Matches the stateful client's
336
+ * `create`. Passing an id that already exists is idempotent: the existing row is
337
+ * returned, not the input.
338
+ */
339
+ create(params: ModelMutationOptions & { readonly data: Record<string, unknown>; readonly id?: string | null }): Promise<T>;
340
+ update(params: ModelMutationOptions & { readonly id: string; readonly data: Record<string, unknown> }): Promise<CommitReceipt>;
341
+ /**
342
+ * Update under contention with a function of the latest state —
343
+ * `update(id, current => next)`, the `setState(prev => next)` of the data
344
+ * layer. The SDK reads the freshest row, runs your updater, writes it as a
345
+ * compare-and-swap against the row's watermark, and re-reads + re-runs on any
346
+ * concurrent write. No claim, no identity, no conflict codes surface: the
347
+ * write either lands or throws {@link AbloContentionError} once its reconcile
348
+ * budget is spent. Return `null`/`undefined` from the updater to skip the
349
+ * write (resolves to `undefined`).
350
+ */
351
+ update(
352
+ id: string,
353
+ updater: ModelUpdater<T>,
354
+ options?: ContentionOptions,
355
+ ): Promise<CommitReceipt | undefined>;
356
+ delete(params: ModelMutationOptions & { readonly id: string }): Promise<CommitReceipt>;
357
+ /**
358
+ * Durable lease + FIFO wait-line over HTTP — coordination without a socket.
359
+ * The typed public clients expose this through `ablo.<model>.claim`. This
360
+ * schema-agnostic shape stays inside the HTTP transport.
361
+ */
362
+ claim: HttpClaimApi<T, Fields>;
363
+ /**
364
+ * Registers a durable premise on a row — request/response, no socket. A track
365
+ * declares what a caller is watching; it keeps no local copy of the row, so it
366
+ * belongs to every transport rather than to the reactive client (ADR 0013 §4).
367
+ * The typed public clients expose it as `ablo.<model>.track`.
368
+ */
369
+ track(params: ModelTrackParams): Promise<ModelTrackResult>;
370
+ }
371
+
372
+ /** A single data operation a scoped **agent** session may perform on a model.
373
+ * The SDK-facing name for {@link CapabilityOperation}; the vocabulary itself is
374
+ * declared once, as a schema, in `auth/capability.ts`. */
375
+ export type SessionOperation = CapabilityOperation;
376
+
377
+ /** Parameters for minting an end-user session. Mints an `ek_` token.
378
+ * `user.id` is your end user's id from your
379
+ * own identity provider and becomes the session's `participantId`; Ablo does not
380
+ * model your users, so it is treated as an opaque string at the trust boundary. */
381
+ export interface CreateUserSessionParams<S extends SchemaRecord> {
382
+ /** Your end user. `id` becomes the token's `participantId`. */
383
+ user: { id: string };
384
+ /** Mint the session into this organization instead of the key's own — for a
385
+ * platform that serves many tenants from one backend. Requires the `sk_` key to
386
+ * carry the `ephemeral:mint-any-org` scope; omit it for the normal
387
+ * single-tenant case. */
388
+ organizationId?: string;
389
+ /** Sync groups this session may subscribe to — typed (`'default'` or
390
+ * `<namespace>:<id>`; build with `syncGroup(kind, id)` from
391
+ * `@abloatai/transaction/schema`). Omit for the server default:
392
+ * `[org:<your org>, user:<user.id>]`. */
393
+ syncGroups?: readonly SyncGroupInput[];
394
+ /** Required least-privilege grant. */
395
+ can: CapabilityCan<S>;
396
+ /** Token lifetime in seconds. Defaults to 900 (15 minutes). */
397
+ ttlSeconds?: number;
398
+ /** Opaque identity blob echoed back to the client as `ablo.user`. */
399
+ userMeta?: Record<string, unknown>;
400
+ agent?: never;
401
+ }
402
+
403
+ /** Mint params for a scoped **agent** session — mints a restricted `rk_` token
404
+ * gated to exactly the operations named in `can`. `can` is typed off your
405
+ * schema (no magic `'task.update'` strings): `{ Task: ['update'], Report: ['read'] }`
406
+ * — the SDK serializes each entry to the wire allowlist (`task.update`). */
407
+ export interface CreateAgentSessionParams<S extends SchemaRecord> {
408
+ /** Your agent. `id` becomes the token's `participantId`. */
409
+ agent: { id: string };
410
+ /** Per-model operation allowlist, typed against the schema's model names. */
411
+ can: CapabilityCan<S>;
412
+ /** Sync groups this session may subscribe to — typed (`'default'` or
413
+ * `<namespace>:<id>`; build with `syncGroup(kind, id)` from
414
+ * `@abloatai/transaction/schema`). Omit for the server default: the org
415
+ * anchor (`org:<your org>`) + the agent's own anchor. */
416
+ syncGroups?: readonly SyncGroupInput[];
417
+ /** Token lifetime in seconds. Defaults to 900 (15 minutes). */
418
+ ttlSeconds?: number;
419
+ /** Opaque identity blob echoed back to the client as `ablo.agent`. */
420
+ userMeta?: Record<string, unknown>;
421
+ user?: never;
422
+ }
423
+
424
+ /** Params for {@link Ablo.sessions}.create — a discriminated union: pass
425
+ * `{ user, can }` for an end-user session (`ek_`) or `{ agent, can }`
426
+ * for a scoped agent session (`rk_`). */
427
+ export type CreateSessionParams<S extends SchemaRecord> =
428
+ | CreateUserSessionParams<S>
429
+ | CreateAgentSessionParams<S>;
430
+
431
+ /** Params for {@link Ablo.agents}.create — a flattened agent descriptor (no
432
+ * `{ agent }` discriminator: `agents.create` only ever mints an agent). Unlike
433
+ * {@link CreateSessionParams} it resolves to a connected, scoped {@link Ablo}
434
+ * client rather than a raw token. */
435
+ export interface CreateAgentClientParams<S extends SchemaRecord> {
436
+ /** The wire participant identity (`agent:<id>`) that claim exclusion and the
437
+ * FIFO queue gate on. Omit it to get a fresh random id — a distinct, independent
438
+ * participant, which is the default and what you want for concurrent agents.
439
+ * Pass a stable string only when one logical agent must re-attach to its own
440
+ * held claims across reconnects or restarts. */
441
+ id?: string;
442
+ /** A human-readable label for logs and attribution (carried in `userMeta.name`).
443
+ * It is independent of `id`: two agents that share a `name` still receive
444
+ * distinct ids and coordinate as separate participants — `name` never derives or
445
+ * collapses identity. */
446
+ name?: string;
447
+ /** Per-model operation allowlist, typed against the schema's model names. */
448
+ can: CapabilityCan<S>;
449
+ /** Sync groups this agent may subscribe to — typed (`'default'` or
450
+ * `<namespace>:<id>`). Omit for the server default (org anchor + the
451
+ * agent's own anchor). */
452
+ syncGroups?: readonly SyncGroupInput[];
453
+ /** Token lifetime in seconds. Defaults to 900 (15 minutes); the returned client
454
+ * re-mints before expiry, so a long-running agent never handles rotation
455
+ * itself. */
456
+ ttlSeconds?: number;
457
+ /** Extra opaque identity blob echoed on the session scope. Merged with
458
+ * `name` (the `name` param wins if you also set `userMeta.name`). */
459
+ userMeta?: Record<string, unknown>;
460
+ }
461
+
462
+ /** A minted session. `token` is the secret the holder presents as its bearer. */
463
+ export interface AbloSession {
464
+ object: 'session';
465
+ /** Stable id of the minted credential (for revocation). */
466
+ id: string;
467
+ /** The short-lived session token — `ek_` for a `{ user }` session, `rk_`
468
+ * for an `{ agent }` session. Hand this to the participant's runtime. */
469
+ token: string;
470
+ /** ISO-8601 expiry. */
471
+ expiresAt: string;
472
+ organizationId: string;
473
+ /** The grant this token carries, on both axes — the same shape the key row
474
+ * stores and the gates enforce. */
475
+ scope: CapabilityScope;
476
+ userMeta: Record<string, unknown>;
477
+ }
478
+
479
+ /** Result of revoking a user or agent session. */
480
+ export interface SessionRevocation {
481
+ id: string;
482
+ deleted: true;
483
+ activeSessionsClosed: number;
484
+ }
485
+
486
+ /** Rotation-with-overlap result for an agent session. */
487
+ export interface SessionRotation {
488
+ id: string;
489
+ token: string;
490
+ expiresAt: string | null;
491
+ organizationId: string;
492
+ scope: CapabilityScope;
493
+ rotatedFrom: {
494
+ id: string;
495
+ expiresAt: string;
496
+ };
497
+ }
498
+
499
+ export interface RevokeSessionParams {
500
+ id: string;
501
+ }
502
+
503
+ export interface RotateSessionParams {
504
+ id: string;
505
+ /** How long the previous token remains valid. Defaults to 24 hours. */
506
+ graceSeconds?: number;
507
+ /** Optional lifetime for the replacement token. */
508
+ ttlSeconds?: number;
509
+ }
510
+
511
+ export interface SessionResource<S extends SchemaRecord> {
512
+ create(params: CreateSessionParams<S>): Promise<AbloSession>;
513
+ /** Immediately revoke an `ek_` or `rk_` session and close live connections. */
514
+ revoke(params: RevokeSessionParams): Promise<SessionRevocation>;
515
+ /**
516
+ * Rotate an agent `rk_` session with an overlap window. Browser `ek_`
517
+ * sessions rotate through their `authEndpoint` instead.
518
+ */
519
+ rotate(params: RotateSessionParams): Promise<SessionRotation>;
520
+ }