@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,75 @@
1
+ /**
2
+ * What a model is made of — its fields and its edges.
3
+ *
4
+ * These shapes travel twice: they are what `ablo push` serializes into the
5
+ * schema artifact, and what `GET /api/schema` reports back about the artifact
6
+ * that is deployed. Two crossings, one definition, and the definition lives
7
+ * here because `wire/` is the leaf every other layer may depend on.
8
+ *
9
+ * They were TypeScript interfaces, so the schema-read route could not send them
10
+ * without hand-writing a second copy of the record it was refusing to send — the
11
+ * shadow type wearing the fix's clothes. Declared as Zod and derived back into
12
+ * TypeScript, there is nowhere for a second copy to live.
13
+ *
14
+ * **Vocabulary ownership.** `type` is a CLOSED enum: the engine owns the set of
15
+ * types it can store and serialize, so a value outside it is a bug, not an
16
+ * extension. `enumValues` is an OPEN list: the values belong to the application
17
+ * that declared them, and the protocol never interprets one.
18
+ */
19
+ import { z } from 'zod';
20
+ /**
21
+ * The engine's type vocabulary — closed, and owned by the engine.
22
+ *
23
+ * Each member maps to storage and serialization behaviour, so this is the whole
24
+ * set by construction. A schema's own richer types (a `z.email()`, a branded id)
25
+ * narrow one of these; they do not add a member.
26
+ */
27
+ export const fieldTypeSchema = z.enum([
28
+ 'string',
29
+ 'number',
30
+ 'boolean',
31
+ 'date',
32
+ 'enum',
33
+ 'json',
34
+ ]);
35
+ /** One field of a model, as the schema artifact records it. */
36
+ export const fieldMetaSchema = z.object({
37
+ /** Sync-engine type tag, which maps to storage and serialization hints. */
38
+ type: fieldTypeSchema,
39
+ /** Whether the field was marked optional via `.optional()` or `.nullable()`. */
40
+ isOptional: z.boolean(),
41
+ /** Whether the field was marked indexed via `.indexed()`. */
42
+ isIndexed: z.boolean(),
43
+ /**
44
+ * Physical database column name override. When absent, SQL layers derive the
45
+ * column from the field name using the active casing convention.
46
+ */
47
+ column: z.string().optional(),
48
+ /**
49
+ * For enums: the allowed values.
50
+ *
51
+ * The application's vocabulary, carried verbatim — an open list, because the
52
+ * protocol has no opinion about what a caller's statuses are called.
53
+ */
54
+ enumValues: z.array(z.string()).readonly().optional(),
55
+ });
56
+ /**
57
+ * How one model points at another. Closed, like {@link fieldTypeSchema}: the
58
+ * engine resolves exactly these three when it plans a read.
59
+ */
60
+ export const relationTypeSchema = z.enum(['belongsTo', 'hasMany', 'hasOne']);
61
+ /**
62
+ * One edge of a model — what a caller may expand, and what it expands into.
63
+ *
64
+ * Reported alongside the fields because half the answer is not an answer: an
65
+ * agent asking what a model looks like wants its shape AND its edges, and
66
+ * shipping only the scalars invites the second question immediately.
67
+ */
68
+ export const relationMetaSchema = z.object({
69
+ type: relationTypeSchema,
70
+ /** The schema key of the model on the other end. */
71
+ target: z.string(),
72
+ /** The field on the owning side that carries the link. */
73
+ foreignKey: z.string(),
74
+ });
75
+ //# sourceMappingURL=modelShape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelShape.js","sourceRoot":"","sources":["../../src/wire/modelShape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IACpC,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,MAAM;IACN,MAAM;IACN,MAAM;CACP,CAAC,CAAC;AAGH,+DAA+D;AAC/D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,2EAA2E;IAC3E,IAAI,EAAE,eAAe;IACrB,gFAAgF;IAChF,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;IACvB,6DAA6D;IAC7D,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB;;;OAGG;IACH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B;;;;;OAKG;IACH,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACtD,CAAC,CAAC;AAGH;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,kBAAkB;IACxB,oDAAoD;IACpD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,0DAA0D;IAC1D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * The timing constants both sides of the protocol must agree on: the ping
3
+ * cadence and the lease window derived from it. Defining them here once keeps
4
+ * the client and the server from skewing apart — a change to the ping interval
5
+ * that did not also move the lease window would make claim expiry and presence
6
+ * timeouts disagree between the two.
7
+ *
8
+ * {@link PING_INTERVAL_MS} is how often the connection pings to prove it is
9
+ * alive. {@link LEASE_TTL_MS} is how long a claim or presence entry stays valid
10
+ * without a renewing ping. On the client, these set the heartbeat cadence and
11
+ * the fallback expiry for a claim taken without an explicit lease. On the
12
+ * server, they set the keepalive interval, the lease granted per keepalive, and
13
+ * the presence-entry lifetime, so a silently disconnected client drops off the
14
+ * roster within one lease window.
15
+ *
16
+ * The lease is three ping intervals long and is renewed on every ping, so a
17
+ * live holder always has at least two intervals of runway and a silent one
18
+ * lapses about two missed pings after it stops renewing. The window measures
19
+ * liveness, not how long a task may run: widening the lease without also
20
+ * widening the ping makes holders flap, and neither value should be redefined
21
+ * anywhere else.
22
+ */
23
+ export declare const PING_INTERVAL_MS = 30000;
24
+ export declare const LEASE_TTL_MS: number;
25
+ /**
26
+ * The WebSocket subprotocols that carry the bearer credential out of the URL.
27
+ *
28
+ * A browser cannot set an `Authorization` header on a WebSocket, so the client
29
+ * offers the token as a `Sec-WebSocket-Protocol` value — `ablo.bearer.<token>` —
30
+ * alongside the real `ablo.sync.v1` protocol the server selects. This keeps the
31
+ * credential out of the query string, which access logs, proxies, and browser
32
+ * history would otherwise capture. The server reads the token from the
33
+ * subprotocol and echoes back only `ablo.sync.v1`, never the token-bearing
34
+ * value. Both the client and the server import these constants, so the
35
+ * handshake format cannot drift.
36
+ */
37
+ export declare const WS_BEARER_SUBPROTOCOL_PREFIX = "ablo.bearer.";
38
+ export declare const WS_SYNC_SUBPROTOCOL = "ablo.sync.v1";
39
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/wire/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,gBAAgB,QAAS,CAAC;AACvC,eAAO,MAAM,YAAY,QAAuB,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,4BAA4B,iBAAiB,CAAC;AAC3D,eAAO,MAAM,mBAAmB,iBAAiB,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * The timing constants both sides of the protocol must agree on: the ping
3
+ * cadence and the lease window derived from it. Defining them here once keeps
4
+ * the client and the server from skewing apart — a change to the ping interval
5
+ * that did not also move the lease window would make claim expiry and presence
6
+ * timeouts disagree between the two.
7
+ *
8
+ * {@link PING_INTERVAL_MS} is how often the connection pings to prove it is
9
+ * alive. {@link LEASE_TTL_MS} is how long a claim or presence entry stays valid
10
+ * without a renewing ping. On the client, these set the heartbeat cadence and
11
+ * the fallback expiry for a claim taken without an explicit lease. On the
12
+ * server, they set the keepalive interval, the lease granted per keepalive, and
13
+ * the presence-entry lifetime, so a silently disconnected client drops off the
14
+ * roster within one lease window.
15
+ *
16
+ * The lease is three ping intervals long and is renewed on every ping, so a
17
+ * live holder always has at least two intervals of runway and a silent one
18
+ * lapses about two missed pings after it stops renewing. The window measures
19
+ * liveness, not how long a task may run: widening the lease without also
20
+ * widening the ping makes holders flap, and neither value should be redefined
21
+ * anywhere else.
22
+ */
23
+ export const PING_INTERVAL_MS = 30_000;
24
+ export const LEASE_TTL_MS = 3 * PING_INTERVAL_MS;
25
+ /**
26
+ * The WebSocket subprotocols that carry the bearer credential out of the URL.
27
+ *
28
+ * A browser cannot set an `Authorization` header on a WebSocket, so the client
29
+ * offers the token as a `Sec-WebSocket-Protocol` value — `ablo.bearer.<token>` —
30
+ * alongside the real `ablo.sync.v1` protocol the server selects. This keeps the
31
+ * credential out of the query string, which access logs, proxies, and browser
32
+ * history would otherwise capture. The server reads the token from the
33
+ * subprotocol and echoes back only `ablo.sync.v1`, never the token-bearing
34
+ * value. Both the client and the server import these constants, so the
35
+ * handshake format cannot drift.
36
+ */
37
+ export const WS_BEARER_SUBPROTOCOL_PREFIX = 'ablo.bearer.';
38
+ export const WS_SYNC_SUBPROTOCOL = 'ablo.sync.v1';
39
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/wire/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAG,gBAAgB,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,cAAc,CAAC;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAc,CAAC"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * The sync protocol version — a single integer, increasing over time, that
3
+ * covers everything the client and server must agree on to talk to each other:
4
+ * the WebSocket frame shapes, the HTTP request and response envelopes, and the
5
+ * delta encodings a client replays. It is separate from the advisory
6
+ * app-schema hash, which diagnoses data-model drift; this version selects a
7
+ * concrete transport codec.
8
+ *
9
+ * Deploy ordering: the server is deployed first. It accepts every version in
10
+ * {@link SUPPORTED_PROTOCOL_VERSIONS}, and a client is never expected to connect
11
+ * to a server older than itself. If that does happen — for example a partial
12
+ * server rollback — {@link protocolVersionProblem} reports it as `too_new` so
13
+ * the mismatch is visible rather than undefined.
14
+ *
15
+ * To change the protocol:
16
+ * 1. Make the change backward-tolerant where you can. The server ignores
17
+ * unknown payload keys, so an additive field usually needs no version bump.
18
+ * 2. For a breaking change, bump {@link PROTOCOL_VERSION}, add its codec to
19
+ * {@link SUPPORTED_PROTOCOL_VERSIONS}, and add a changelog entry below.
20
+ * 3. Keep {@link MIN_SUPPORTED_PROTOCOL_VERSION} low enough to cover every
21
+ * client still in use; raise it only after a deprecation window.
22
+ * 4. The protocol contract tests fail on a version without a codec and on any
23
+ * unreviewed bump — update them in the same change, deliberately.
24
+ *
25
+ * Changelog
26
+ * v1 (2026-07-03) — the protocol as of this field's introduction: the
27
+ * sync-request frame (`cursor`, `lastSyncId`, `capabilities`, optional
28
+ * `protocolVersion`), the commit, claim, release, ack, and
29
+ * presence-update frames, the bootstrap and delta batches, and the HTTP
30
+ * error and list envelopes. A client that predates this field sends no
31
+ * `protocolVersion` and is treated as v1, since introducing the field
32
+ * changed no behavior.
33
+ */
34
+ export declare const PROTOCOL_VERSION = 1;
35
+ /**
36
+ * The oldest client protocol version this build still serves. Raising it cuts
37
+ * off clients that have not upgraded, so do it only after a deprecation window
38
+ * and with a changelog entry.
39
+ */
40
+ export declare const MIN_SUPPORTED_PROTOCOL_VERSION = 1;
41
+ /** The version used by clients from before the version field existed. */
42
+ export declare const DEFAULT_PROTOCOL_VERSION = 1;
43
+ /**
44
+ * Every wire version this build can actually decode. This is intentionally an
45
+ * explicit manifest rather than a computed numeric range: a version is not
46
+ * supported merely because its number falls between two constants. Server
47
+ * codec registries use {@link SupportedProtocolVersion} as their key type, so
48
+ * adding a version here makes a missing decoder a compile error.
49
+ */
50
+ export declare const SUPPORTED_PROTOCOL_VERSIONS: readonly [1];
51
+ export type SupportedProtocolVersion = (typeof SUPPORTED_PROTOCOL_VERSIONS)[number];
52
+ export type ProtocolVersionProblem = 'too_old' | 'too_new' | 'codec_missing';
53
+ /**
54
+ * The WebSocket close code the server sends to reject a protocol-version
55
+ * mismatch. It sits alongside the other application close codes (4001 for a
56
+ * credential problem), and its reason string is the
57
+ * error code `protocol_version_unsupported`. A client should treat this close
58
+ * as terminal: reconnecting cannot heal a version mismatch, but upgrading the
59
+ * client or rolling the server forward can.
60
+ */
61
+ export declare const WS_CLOSE_PROTOCOL_VERSION = 4010;
62
+ /**
63
+ * Classifies a peer's announced protocol version against what this build
64
+ * supports, returning `'too_old'`, `'too_new'`, or `null` when the versions are
65
+ * compatible. An `undefined` version — a client from before versioning existed
66
+ * — counts as v1. A non-integer value is treated as `'too_old'` so the check
67
+ * fails closed and visibly.
68
+ */
69
+ export declare function protocolVersionProblem(announced: number | undefined): ProtocolVersionProblem | null;
70
+ /** Resolve an announced value to a version that has a concrete codec. */
71
+ export declare function resolveProtocolVersion(announced: number | undefined): SupportedProtocolVersion | null;
72
+ /** The HTTP request header a client uses to announce its protocol version. */
73
+ export declare const PROTOCOL_VERSION_HEADER = "Ablo-Protocol-Version";
74
+ //# sourceMappingURL=protocolVersion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocolVersion.d.ts","sourceRoot":"","sources":["../../src/wire/protocolVersion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD,yEAAyE;AACzE,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,cAAe,CAAC;AAExD,MAAM,MAAM,wBAAwB,GAClC,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/C,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,SAAS,GAAG,eAAe,CAAC;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,sBAAsB,GAAG,IAAI,CAO/B;AAED,yEAAyE;AACzE,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,wBAAwB,GAAG,IAAI,CAGjC;AAED,8EAA8E;AAC9E,eAAO,MAAM,uBAAuB,0BAA0B,CAAC"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * The sync protocol version — a single integer, increasing over time, that
3
+ * covers everything the client and server must agree on to talk to each other:
4
+ * the WebSocket frame shapes, the HTTP request and response envelopes, and the
5
+ * delta encodings a client replays. It is separate from the advisory
6
+ * app-schema hash, which diagnoses data-model drift; this version selects a
7
+ * concrete transport codec.
8
+ *
9
+ * Deploy ordering: the server is deployed first. It accepts every version in
10
+ * {@link SUPPORTED_PROTOCOL_VERSIONS}, and a client is never expected to connect
11
+ * to a server older than itself. If that does happen — for example a partial
12
+ * server rollback — {@link protocolVersionProblem} reports it as `too_new` so
13
+ * the mismatch is visible rather than undefined.
14
+ *
15
+ * To change the protocol:
16
+ * 1. Make the change backward-tolerant where you can. The server ignores
17
+ * unknown payload keys, so an additive field usually needs no version bump.
18
+ * 2. For a breaking change, bump {@link PROTOCOL_VERSION}, add its codec to
19
+ * {@link SUPPORTED_PROTOCOL_VERSIONS}, and add a changelog entry below.
20
+ * 3. Keep {@link MIN_SUPPORTED_PROTOCOL_VERSION} low enough to cover every
21
+ * client still in use; raise it only after a deprecation window.
22
+ * 4. The protocol contract tests fail on a version without a codec and on any
23
+ * unreviewed bump — update them in the same change, deliberately.
24
+ *
25
+ * Changelog
26
+ * v1 (2026-07-03) — the protocol as of this field's introduction: the
27
+ * sync-request frame (`cursor`, `lastSyncId`, `capabilities`, optional
28
+ * `protocolVersion`), the commit, claim, release, ack, and
29
+ * presence-update frames, the bootstrap and delta batches, and the HTTP
30
+ * error and list envelopes. A client that predates this field sends no
31
+ * `protocolVersion` and is treated as v1, since introducing the field
32
+ * changed no behavior.
33
+ */
34
+ export const PROTOCOL_VERSION = 1;
35
+ /**
36
+ * The oldest client protocol version this build still serves. Raising it cuts
37
+ * off clients that have not upgraded, so do it only after a deprecation window
38
+ * and with a changelog entry.
39
+ */
40
+ export const MIN_SUPPORTED_PROTOCOL_VERSION = 1;
41
+ /** The version used by clients from before the version field existed. */
42
+ export const DEFAULT_PROTOCOL_VERSION = 1;
43
+ /**
44
+ * Every wire version this build can actually decode. This is intentionally an
45
+ * explicit manifest rather than a computed numeric range: a version is not
46
+ * supported merely because its number falls between two constants. Server
47
+ * codec registries use {@link SupportedProtocolVersion} as their key type, so
48
+ * adding a version here makes a missing decoder a compile error.
49
+ */
50
+ export const SUPPORTED_PROTOCOL_VERSIONS = [1];
51
+ /**
52
+ * The WebSocket close code the server sends to reject a protocol-version
53
+ * mismatch. It sits alongside the other application close codes (4001 for a
54
+ * credential problem), and its reason string is the
55
+ * error code `protocol_version_unsupported`. A client should treat this close
56
+ * as terminal: reconnecting cannot heal a version mismatch, but upgrading the
57
+ * client or rolling the server forward can.
58
+ */
59
+ export const WS_CLOSE_PROTOCOL_VERSION = 4010;
60
+ /**
61
+ * Classifies a peer's announced protocol version against what this build
62
+ * supports, returning `'too_old'`, `'too_new'`, or `null` when the versions are
63
+ * compatible. An `undefined` version — a client from before versioning existed
64
+ * — counts as v1. A non-integer value is treated as `'too_old'` so the check
65
+ * fails closed and visibly.
66
+ */
67
+ export function protocolVersionProblem(announced) {
68
+ const v = announced ?? DEFAULT_PROTOCOL_VERSION;
69
+ if (!Number.isInteger(v) || v < MIN_SUPPORTED_PROTOCOL_VERSION)
70
+ return 'too_old';
71
+ if (v > PROTOCOL_VERSION)
72
+ return 'too_new';
73
+ return SUPPORTED_PROTOCOL_VERSIONS.some((candidate) => candidate === v)
74
+ ? null
75
+ : 'codec_missing';
76
+ }
77
+ /** Resolve an announced value to a version that has a concrete codec. */
78
+ export function resolveProtocolVersion(announced) {
79
+ const version = announced ?? DEFAULT_PROTOCOL_VERSION;
80
+ return SUPPORTED_PROTOCOL_VERSIONS.find((candidate) => candidate === version) ?? null;
81
+ }
82
+ /** The HTTP request header a client uses to announce its protocol version. */
83
+ export const PROTOCOL_VERSION_HEADER = 'Ablo-Protocol-Version';
84
+ //# sourceMappingURL=protocolVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocolVersion.js","sourceRoot":"","sources":["../../src/wire/protocolVersion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAEhD,yEAAyE;AACzE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,CAAU,CAAC;AAOxD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,SAA6B;IAE7B,MAAM,CAAC,GAAG,SAAS,IAAI,wBAAwB,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,8BAA8B;QAAE,OAAO,SAAS,CAAC;IACjF,IAAI,CAAC,GAAG,gBAAgB;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,2BAA2B,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC;QACrE,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,eAAe,CAAC;AACtB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,sBAAsB,CACpC,SAA6B;IAE7B,MAAM,OAAO,GAAG,SAAS,IAAI,wBAAwB,CAAC;IACtD,OAAO,2BAA2B,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC;AACxF,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,MAAM,uBAAuB,GAAG,uBAAuB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,187 @@
1
+ {
2
+ "name": "@abloatai/transaction",
3
+ "version": "0.37.0",
4
+ "description": "The headless Ablo transaction client and canonical contracts for reads, commits, settlement, claims, and durable observation.",
5
+ "license": "Apache-2.0",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "default": "./dist/index.js"
14
+ },
15
+ "./errorCodes": {
16
+ "types": "./dist/errorCodes.d.ts",
17
+ "import": "./dist/errorCodes.js",
18
+ "default": "./dist/errorCodes.js"
19
+ },
20
+ "./environment": {
21
+ "types": "./dist/environment.d.ts",
22
+ "import": "./dist/environment.js",
23
+ "default": "./dist/environment.js"
24
+ },
25
+ "./coordination": {
26
+ "types": "./dist/coordination/index.d.ts",
27
+ "import": "./dist/coordination/index.js",
28
+ "default": "./dist/coordination/index.js"
29
+ },
30
+ "./wire": {
31
+ "types": "./dist/wire/index.d.ts",
32
+ "import": "./dist/wire/index.js",
33
+ "default": "./dist/wire/index.js"
34
+ },
35
+ "./types": {
36
+ "types": "./dist/types/index.d.ts",
37
+ "import": "./dist/types/index.js",
38
+ "default": "./dist/types/index.js"
39
+ },
40
+ "./auth": {
41
+ "types": "./dist/auth/index.d.ts",
42
+ "import": "./dist/auth/index.js",
43
+ "default": "./dist/auth/index.js"
44
+ },
45
+ "./keys": {
46
+ "types": "./dist/keys/index.d.ts",
47
+ "import": "./dist/keys/index.js",
48
+ "default": "./dist/keys/index.js"
49
+ },
50
+ "./schema": {
51
+ "types": "./dist/schema/index.d.ts",
52
+ "import": "./dist/schema/index.js",
53
+ "default": "./dist/schema/index.js"
54
+ },
55
+ "./schema/*": {
56
+ "types": "./dist/schema/*.d.ts",
57
+ "import": "./dist/schema/*.js",
58
+ "default": "./dist/schema/*.js"
59
+ },
60
+ "./source": {
61
+ "types": "./dist/source/index.d.ts",
62
+ "import": "./dist/source/index.js",
63
+ "default": "./dist/source/index.js"
64
+ },
65
+ "./source/*": {
66
+ "types": "./dist/source/*.d.ts",
67
+ "import": "./dist/source/*.js",
68
+ "default": "./dist/source/*.js"
69
+ },
70
+ "./server": {
71
+ "types": "./dist/server/index.d.ts",
72
+ "import": "./dist/server/index.js",
73
+ "default": "./dist/server/index.js"
74
+ },
75
+ "./server/*": {
76
+ "types": "./dist/server/*.d.ts",
77
+ "import": "./dist/server/*.js",
78
+ "default": "./dist/server/*.js"
79
+ },
80
+ "./batching": {
81
+ "types": "./dist/batching/index.d.ts",
82
+ "import": "./dist/batching/index.js",
83
+ "default": "./dist/batching/index.js"
84
+ },
85
+ "./ai-sdk": {
86
+ "types": "./dist/ai-sdk/index.d.ts",
87
+ "import": "./dist/ai-sdk/index.js",
88
+ "default": "./dist/ai-sdk/index.js"
89
+ },
90
+ "./ai-sdk/*": {
91
+ "types": "./dist/ai-sdk/*.d.ts",
92
+ "import": "./dist/ai-sdk/*.js",
93
+ "default": "./dist/ai-sdk/*.js"
94
+ },
95
+ "./webhooks": {
96
+ "types": "./dist/webhooks/index.d.ts",
97
+ "import": "./dist/webhooks/index.js",
98
+ "default": "./dist/webhooks/index.js"
99
+ },
100
+ "./webhooks/*": {
101
+ "types": "./dist/webhooks/*.d.ts",
102
+ "import": "./dist/webhooks/*.js",
103
+ "default": "./dist/webhooks/*.js"
104
+ },
105
+ "./syncLog/*": {
106
+ "types": "./dist/syncLog/*.d.ts",
107
+ "import": "./dist/syncLog/*.js",
108
+ "default": "./dist/syncLog/*.js"
109
+ },
110
+ "./syncLog": {
111
+ "types": "./dist/syncLog/index.d.ts",
112
+ "import": "./dist/syncLog/index.js",
113
+ "default": "./dist/syncLog/index.js"
114
+ },
115
+ "./docs": {
116
+ "types": "./dist/docs/index.d.ts",
117
+ "import": "./dist/docs/index.js",
118
+ "default": "./dist/docs/index.js"
119
+ },
120
+ "./docs/*": {
121
+ "types": "./dist/docs/*.d.ts",
122
+ "import": "./dist/docs/*.js",
123
+ "default": "./dist/docs/*.js"
124
+ },
125
+ "./*": {
126
+ "types": "./dist/*.d.ts",
127
+ "import": "./dist/*.js",
128
+ "default": "./dist/*.js"
129
+ }
130
+ },
131
+ "files": [
132
+ "dist",
133
+ "src",
134
+ "!src/**/__tests__/**",
135
+ "!src/**/*.test.ts",
136
+ "README.md",
137
+ "CONVENTIONS.md"
138
+ ],
139
+ "publishConfig": {
140
+ "access": "public",
141
+ "provenance": true,
142
+ "registry": "https://registry.npmjs.org"
143
+ },
144
+ "repository": {
145
+ "type": "git",
146
+ "url": "git+https://github.com/Abloatai/ablo.git",
147
+ "directory": "packages/transaction"
148
+ },
149
+ "scripts": {
150
+ "clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
151
+ "build": "npm run clean && tsc -p tsconfig.build.json",
152
+ "prepack": "npm run build && node ../ablo/scripts/strip-source-condition.mjs",
153
+ "postpack": "node ../ablo/scripts/restore-source-condition.mjs",
154
+ "pack:check": "node ../ablo/scripts/pack-check.mjs",
155
+ "lint:pkg": "publint",
156
+ "test": "vitest run src/headlessClient.test.ts && jest",
157
+ "typecheck": "tsc --noEmit && tsc -p typetests/tsconfig.json"
158
+ },
159
+ "dependencies": {
160
+ "uuid": "^11.1.0",
161
+ "zod": "^4.4.3"
162
+ },
163
+ "peerDependencies": {
164
+ "ai": "^6.0.0",
165
+ "drizzle-orm": ">=0.44.0"
166
+ },
167
+ "peerDependenciesMeta": {
168
+ "ai": {
169
+ "optional": true
170
+ },
171
+ "drizzle-orm": {
172
+ "optional": true
173
+ }
174
+ },
175
+ "devDependencies": {
176
+ "@ablo/tsconfig": "*",
177
+ "@jest/globals": "^30.2.0",
178
+ "@types/jest": "^30.0.0",
179
+ "ai": "^6.0.0",
180
+ "jest": "^30.2.0",
181
+ "jest-environment-node": "^30.2.0",
182
+ "publint": "^0.3.17",
183
+ "ts-jest": "^29.4.5",
184
+ "typescript": "npm:@typescript/typescript6@^6.0.2",
185
+ "vitest": "^4.1.4"
186
+ }
187
+ }
package/src/ablo.ts ADDED
@@ -0,0 +1,139 @@
1
+ /**
2
+ * `Ablo` — the entry point to the coordination layer.
3
+ *
4
+ * The factory constructs the stateless client: typed model resources, commits,
5
+ * claims, and session minting over request/response HTTP. It holds no socket,
6
+ * no store, and no local copy of anything — the bearer credential is the
7
+ * identity and the server resolves it on every request. This is the client a
8
+ * server-side actor installs: an agent, a worker, a cron job, a route handler.
9
+ *
10
+ * ```ts
11
+ * import { Ablo } from '@abloatai/ablo';
12
+ * import { schema } from './schema';
13
+ *
14
+ * const ablo = Ablo({ schema, apiKey: process.env.ABLO_API_KEY, transport: 'http' });
15
+ * await ablo.tasks.update({ id: taskId, data: { status: 'done' } });
16
+ * ```
17
+ *
18
+ * The reactive materialiser — local store, live queries, presence rendering —
19
+ * is provided by `@abloatai/humans`, which layers
20
+ * above this one and shares the same `ablo.<model>` surface (ADR 0016).
21
+ */
22
+
23
+ import {
24
+ createAbloHttpClient,
25
+ type AbloHttpClient,
26
+ type AbloHttpClientOptions,
27
+ } from './transport/httpClient.js';
28
+ import type { SchemaRecord } from './schema/schema.js';
29
+ import type * as _Streams from './types/streams.js';
30
+ import type * as _SchemaTypes from './schema/schema.js';
31
+ import type * as _Global from './types/global.js';
32
+ import type * as _Policy from './policy/types.js';
33
+ import type * as _Http from './resources/httpResources.js';
34
+
35
+ /**
36
+ * Create a coordination-layer client in one call.
37
+ *
38
+ * The core carries one transport today — request/response HTTP — so
39
+ * `transport: 'http'` is accepted for symmetry with the reactive package's
40
+ * factory and may be omitted. The duplex transport joins this slot when the
41
+ * socket carve lands (ADR 0016, follow-up 3a).
42
+ */
43
+ export function Ablo<const S extends SchemaRecord>(
44
+ options: AbloHttpClientOptions<S> & { transport?: 'http' },
45
+ ): AbloHttpClient<S> {
46
+ return createAbloHttpClient(options);
47
+ }
48
+
49
+ // ─────────────────────────────────────────────────────────────────────
50
+ // Ablo namespace — type access via namespace dots for stateless callers
51
+ // ─────────────────────────────────────────────────────────────────────
52
+ //
53
+ // The stateless subset of the type namespace the reactive package hangs off
54
+ // its own `Ablo` export: every entry a consumer of THIS client would write
55
+ // out (`Ablo.Activity`, `Ablo.Commit.Receipt`, and so on), and nothing that
56
+ // needs a store or a socket behind it. The
57
+ // types live in their canonical homes (`types/streams`, `policy/types`,
58
+ // `resources/httpResources`, `schema/schema`); the namespace is a convenience
59
+ // path, not a second definition.
60
+ // eslint-disable-next-line @typescript-eslint/no-namespace
61
+ export namespace Ablo {
62
+ // ── Entity pointers (flat — input shapes used everywhere) ─────────
63
+ export type ClaimTarget = _Streams.ClaimTarget;
64
+ export type PresenceTarget = _Streams.PresenceTarget;
65
+ export type Duration = _Streams.Duration;
66
+
67
+ // ── Coordination (flat — the surface a contending caller reads) ───
68
+ export type Peer = _Streams.Peer;
69
+ export type Activity = _Streams.Activity;
70
+ export type Claim = _Streams.Claim;
71
+ export type ClaimHeartbeat = _Streams.ClaimHeartbeat;
72
+ export type ClaimHeartbeatOptions = _Streams.ClaimHeartbeatOptions;
73
+
74
+ // ── Claim (sub-namespace — the durable-lease cohort) ──────────────
75
+ // eslint-disable-next-line @typescript-eslint/no-namespace
76
+ export namespace Claim {
77
+ export type Held<
78
+ T = Record<string, unknown>,
79
+ M = _Global.ResolveClaimMeta,
80
+ > = _Streams.HeldClaim<T, M>;
81
+ export type WaitOptions = _Streams.ClaimWaitOptions;
82
+ export type LeaseOptions = _Streams.ClaimLeaseOptions;
83
+ }
84
+
85
+ // ── Schema (type + sub-namespace via declaration merge) ───────────
86
+ export type Schema<S extends _SchemaTypes.SchemaRecord = _SchemaTypes.SchemaRecord> =
87
+ _SchemaTypes.Schema<S>;
88
+ /**
89
+ * The schema this program has registered via `interface Register { Schema }`
90
+ * (falls back to a loose shape when unregistered). Use it where shared code
91
+ * needs "this app's schema" without importing a specific one.
92
+ */
93
+ export type ResolveSchema = _Global.ResolveSchema;
94
+ /**
95
+ * The claim metadata shape this program has registered via
96
+ * `interface Register { ClaimMeta }` (falls back to a loose record when
97
+ * unregistered). Every claim surface reads `target.meta` as this.
98
+ */
99
+ export type ResolveClaimMeta = _Global.ResolveClaimMeta;
100
+ // eslint-disable-next-line @typescript-eslint/no-namespace
101
+ export namespace Schema {
102
+ export type Model<
103
+ S extends _SchemaTypes.Schema,
104
+ K extends keyof S['models'],
105
+ > = _SchemaTypes.Model<S, K>;
106
+ export type InferCreate<
107
+ S extends _SchemaTypes.Schema,
108
+ K extends keyof S['models'],
109
+ > = _SchemaTypes.InferCreate<S, K>;
110
+ export type InferRow<
111
+ S extends _SchemaTypes.Schema,
112
+ K extends keyof S['models'],
113
+ > = _SchemaTypes.InferRow<S, K>;
114
+ export type InferModelNames<S extends _SchemaTypes.Schema> =
115
+ _SchemaTypes.InferModelNames<S>;
116
+ }
117
+
118
+ // ── Conflict (type + sub-namespace via declaration merge) ─────────
119
+ export type Conflict = _Policy.Conflict;
120
+ // eslint-disable-next-line @typescript-eslint/no-namespace
121
+ export namespace Conflict {
122
+ export type Kind = _Policy.ConflictKind;
123
+ export type Operation = _Policy.ConflictOperation;
124
+ export type Decision = _Policy.ConflictDecision;
125
+ export type Policy = _Policy.ConflictPolicy;
126
+ export type Axis = _Policy.ConflictAxis;
127
+ }
128
+
129
+ // ── Commit (sub-namespace — write-side cohort) ────────────────────
130
+ // eslint-disable-next-line @typescript-eslint/no-namespace
131
+ export namespace Commit {
132
+ export type Wait = _Http.CommitWait;
133
+ export type OperationAction = _Http.ModelOperationAction;
134
+ export type OperationInput = _Http.CommitOperationInput;
135
+ export type CreateOptions = _Http.CommitCreateOptions;
136
+ export type Receipt = _Http.CommitReceipt;
137
+ export type Client = _Http.CommitResource;
138
+ }
139
+ }