@abloatai/ablo 0.34.1 → 0.36.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 (536) hide show
  1. package/AGENTS.md +2 -1
  2. package/CHANGELOG.md +758 -5
  3. package/README.md +56 -502
  4. package/bin/ablo.cjs +39 -0
  5. package/dist/BaseSyncedStore.d.ts +176 -48
  6. package/dist/BaseSyncedStore.js +346 -214
  7. package/dist/Database.d.ts +17 -44
  8. package/dist/Database.js +96 -79
  9. package/dist/InstanceCache.d.ts +31 -6
  10. package/dist/InstanceCache.js +65 -30
  11. package/dist/LazyReferenceCollection.d.ts +3 -3
  12. package/dist/LazyReferenceCollection.js +4 -4
  13. package/dist/Model.d.ts +23 -13
  14. package/dist/Model.js +27 -17
  15. package/dist/ModelRegistry.d.ts +8 -4
  16. package/dist/ModelRegistry.js +20 -18
  17. package/dist/NetworkMonitor.d.ts +3 -1
  18. package/dist/NetworkMonitor.js +7 -5
  19. package/dist/{SyncEngineContext.d.ts → RuntimeContext.d.ts} +20 -13
  20. package/dist/{SyncEngineContext.js → RuntimeContext.js} +11 -12
  21. package/dist/SyncClient.d.ts +47 -47
  22. package/dist/SyncClient.js +215 -156
  23. package/dist/ai-sdk/coordinatedTool.d.ts +2 -2
  24. package/dist/ai-sdk/coordinatedTool.js +1 -1
  25. package/dist/ai-sdk/coordinationContext.d.ts +2 -2
  26. package/dist/ai-sdk/coordinationContext.js +1 -1
  27. package/dist/ai-sdk/wrap.d.ts +3 -3
  28. package/dist/ai-sdk/wrap.js +2 -2
  29. package/dist/auth/index.d.ts +1 -156
  30. package/dist/auth/index.js +8 -301
  31. package/dist/client/Ablo.d.ts +42 -287
  32. package/dist/client/Ablo.js +129 -963
  33. package/dist/client/abloClient.d.ts +309 -0
  34. package/dist/client/abloClient.js +13 -0
  35. package/dist/client/clientPrelude.d.ts +52 -0
  36. package/dist/client/clientPrelude.js +60 -0
  37. package/dist/client/consoleLogger.d.ts +2 -2
  38. package/dist/client/coreClient.d.ts +60 -0
  39. package/dist/client/coreClient.js +118 -0
  40. package/dist/client/createInternalComponents.d.ts +8 -4
  41. package/dist/client/createInternalComponents.js +17 -10
  42. package/dist/client/createModelProxy.d.ts +98 -373
  43. package/dist/client/createModelProxy.js +233 -139
  44. package/dist/client/humans.d.ts +69 -0
  45. package/dist/client/humans.js +78 -0
  46. package/dist/client/modelRegistration.d.ts +1 -1
  47. package/dist/client/modelRegistration.js +9 -9
  48. package/dist/client/options.d.ts +73 -17
  49. package/dist/client/reactiveEngine.d.ts +53 -0
  50. package/dist/client/reactiveEngine.js +688 -0
  51. package/dist/client/resourceTypes.d.ts +9 -250
  52. package/dist/client/resourceTypes.js +8 -5
  53. package/dist/client/schemaConfig.d.ts +4 -4
  54. package/dist/client/schemaConfig.js +6 -2
  55. package/dist/client/storeCluster.d.ts +47 -0
  56. package/dist/client/storeCluster.js +118 -0
  57. package/dist/client/storeLifecycle.d.ts +61 -0
  58. package/dist/client/storeLifecycle.js +231 -0
  59. package/dist/client/validateAbloOptions.d.ts +3 -2
  60. package/dist/client/validateAbloOptions.js +1 -1
  61. package/dist/client/wsMutationExecutor.d.ts +3 -3
  62. package/dist/client/wsMutationExecutor.js +3 -3
  63. package/dist/context.d.ts +22 -9
  64. package/dist/context.js +33 -9
  65. package/dist/coordination/ClaimLog.d.ts +26 -0
  66. package/dist/coordination/ClaimLog.js +32 -0
  67. package/dist/coordination/index.d.ts +1 -15
  68. package/dist/coordination/index.js +8 -31
  69. package/dist/core/index.d.ts +3 -3
  70. package/dist/core/index.js +2 -2
  71. package/dist/docs/catalog.d.ts +72 -0
  72. package/dist/docs/catalog.js +230 -0
  73. package/dist/docs/index.d.ts +10 -0
  74. package/dist/docs/index.js +10 -0
  75. package/dist/environment.d.ts +1 -40
  76. package/dist/environment.js +8 -37
  77. package/dist/index.d.ts +44 -36
  78. package/dist/index.js +30 -22
  79. package/dist/interfaces/index.d.ts +44 -134
  80. package/dist/keys/index.d.ts +1 -77
  81. package/dist/keys/index.js +8 -190
  82. package/dist/mutators/{RecordingTransaction.d.ts → RecordingMutation.d.ts} +4 -4
  83. package/dist/mutators/{RecordingTransaction.js → RecordingMutation.js} +2 -2
  84. package/dist/mutators/Transaction.d.ts +1 -1
  85. package/dist/mutators/Transaction.js +1 -1
  86. package/dist/mutators/UndoManager.d.ts +6 -6
  87. package/dist/mutators/UndoManager.js +5 -5
  88. package/dist/mutators/defineMutators.d.ts +3 -3
  89. package/dist/mutators/defineMutators.js +1 -1
  90. package/dist/mutators/inverseOp.js +2 -2
  91. package/dist/mutators/mutateActions.d.ts +3 -3
  92. package/dist/mutators/mutateActions.js +1 -1
  93. package/dist/mutators/readerActions.d.ts +1 -1
  94. package/dist/mutators/undoApply.d.ts +1 -1
  95. package/dist/mutators/undoApply.js +1 -1
  96. package/dist/policy/index.d.ts +2 -2
  97. package/dist/policy/index.js +1 -1
  98. package/dist/query/client.d.ts +5 -2
  99. package/dist/query/client.js +10 -9
  100. package/dist/query/types.d.ts +6 -41
  101. package/dist/query/types.js +2 -2
  102. package/dist/react/AbloProvider.d.ts +18 -8
  103. package/dist/react/AbloProvider.js +10 -9
  104. package/dist/react/context.d.ts +3 -3
  105. package/dist/react/context.js +1 -1
  106. package/dist/react/createAbloReact.d.ts +56 -0
  107. package/dist/react/createAbloReact.js +51 -0
  108. package/dist/react/index.d.ts +6 -5
  109. package/dist/react/index.js +6 -3
  110. package/dist/react/internalContext.d.ts +1 -1
  111. package/dist/react/useAblo.d.ts +12 -5
  112. package/dist/react/useAblo.js +26 -8
  113. package/dist/react/useCurrentUserId.js +1 -1
  114. package/dist/react/useErrorListener.js +1 -1
  115. package/dist/react/useMutationFailureListener.d.ts +2 -2
  116. package/dist/react/useMutationFailureListener.js +1 -1
  117. package/dist/react/useMutators.d.ts +3 -3
  118. package/dist/react/useMutators.js +3 -3
  119. package/dist/react/useUndoScope.d.ts +5 -5
  120. package/dist/react/useUndoScope.js +1 -1
  121. package/dist/schema/coordination.d.ts +69 -10
  122. package/dist/schema/coordination.js +90 -9
  123. package/dist/schema/ddl.js +2 -2
  124. package/dist/schema/diff.d.ts +1 -1
  125. package/dist/schema/generate.js +1 -1
  126. package/dist/schema/index.d.ts +11 -10
  127. package/dist/schema/index.js +22 -18
  128. package/dist/schema/queries.d.ts +27 -27
  129. package/dist/schema/queries.js +23 -23
  130. package/dist/schema/select.d.ts +3 -3
  131. package/dist/schema/select.js +6 -3
  132. package/dist/schema/serialize.d.ts +15 -6
  133. package/dist/schema/serialize.js +20 -3
  134. package/dist/schema/sugar.d.ts +6 -7
  135. package/dist/schema/sugar.js +9 -12
  136. package/dist/schema/syncDeltaRow.d.ts +4 -152
  137. package/dist/schema/syncDeltaRow.js +4 -105
  138. package/dist/server/adapter.d.ts +18 -1
  139. package/dist/server/commit.d.ts +10 -16
  140. package/dist/server/index.d.ts +1 -1
  141. package/dist/server/index.js +1 -1
  142. package/dist/server/readConfig.d.ts +1 -1
  143. package/dist/source/adapter.d.ts +7 -5
  144. package/dist/source/adapter.js +7 -5
  145. package/dist/source/adapters/drizzle.d.ts +1 -1
  146. package/dist/source/adapters/drizzle.js +2 -2
  147. package/dist/source/adapters/kysely.d.ts +1 -1
  148. package/dist/source/adapters/kysely.js +1 -1
  149. package/dist/source/adapters/kyselyMutationCore.d.ts +1 -1
  150. package/dist/source/adapters/kyselyMutationCore.js +2 -2
  151. package/dist/source/adapters/memory.js +1 -1
  152. package/dist/source/adapters/prisma.d.ts +8 -3
  153. package/dist/source/adapters/prisma.js +1 -1
  154. package/dist/source/connector.js +1 -1
  155. package/dist/source/connectorProtocol.d.ts +2 -8
  156. package/dist/source/connectorProtocol.js +3 -2
  157. package/dist/source/contract.d.ts +29 -17
  158. package/dist/source/contract.js +27 -22
  159. package/dist/source/factory.d.ts +1 -1
  160. package/dist/source/idempotency.js +2 -2
  161. package/dist/source/index.d.ts +1 -0
  162. package/dist/source/index.js +3 -0
  163. package/dist/source/next.d.ts +1 -1
  164. package/dist/source/signing.d.ts +9 -2
  165. package/dist/source/signing.js +4 -1
  166. package/dist/source/types.d.ts +6 -4
  167. package/dist/source/types.js +1 -1
  168. package/dist/{core/storeContract.d.ts → storeContract.d.ts} +6 -6
  169. package/dist/{core → stores}/DatabaseManager.d.ts +3 -1
  170. package/dist/{core → stores}/DatabaseManager.js +14 -13
  171. package/dist/stores/ObjectStore.d.ts +1 -1
  172. package/dist/{core → stores}/StoreManager.d.ts +9 -26
  173. package/dist/{core → stores}/StoreManager.js +29 -77
  174. package/dist/stores/SyncActionStore.d.ts +4 -2
  175. package/dist/stores/SyncActionStore.js +11 -17
  176. package/dist/stores/syncAction.d.ts +26 -0
  177. package/dist/stores/syncAction.js +16 -0
  178. package/dist/surface.d.ts +3 -3
  179. package/dist/surface.js +6 -4
  180. package/dist/sync/BootstrapFetcher.d.ts +127 -6
  181. package/dist/sync/BootstrapFetcher.js +511 -83
  182. package/dist/sync/ConnectionManager.d.ts +6 -198
  183. package/dist/sync/ConnectionManager.js +6 -677
  184. package/dist/sync/OnDemandLoader.d.ts +5 -2
  185. package/dist/sync/OnDemandLoader.js +61 -21
  186. package/dist/sync/SubscriptionManager.d.ts +13 -2
  187. package/dist/sync/SubscriptionManager.js +23 -5
  188. package/dist/sync/SyncWebSocket.d.ts +27 -510
  189. package/dist/sync/SyncWebSocket.js +76 -954
  190. package/dist/sync/awaitClaimGrant.d.ts +4 -44
  191. package/dist/sync/awaitClaimGrant.js +4 -109
  192. package/dist/sync/bootstrapApply.d.ts +3 -0
  193. package/dist/sync/bootstrapApply.js +2 -2
  194. package/dist/sync/commitFrames.d.ts +6 -40
  195. package/dist/sync/commitFrames.js +6 -97
  196. package/dist/sync/contextPorts.d.ts +18 -0
  197. package/dist/sync/contextPorts.js +31 -0
  198. package/dist/sync/createClaimStream.d.ts +5 -49
  199. package/dist/sync/createClaimStream.js +5 -469
  200. package/dist/sync/createPresenceStream.d.ts +26 -4
  201. package/dist/sync/createPresenceStream.js +28 -20
  202. package/dist/sync/createSnapshot.d.ts +2 -2
  203. package/dist/sync/createSnapshot.js +1 -1
  204. package/dist/sync/credentialLifecycle.d.ts +5 -173
  205. package/dist/sync/credentialLifecycle.js +5 -320
  206. package/dist/sync/deltaPipeline.d.ts +13 -12
  207. package/dist/sync/deltaPipeline.js +21 -4
  208. package/dist/sync/groupChange.d.ts +3 -0
  209. package/dist/sync/groupChange.js +16 -14
  210. package/dist/sync/participants.d.ts +24 -6
  211. package/dist/sync/participants.js +32 -23
  212. package/dist/sync/schemaDrift.d.ts +55 -0
  213. package/dist/sync/schemaDrift.js +53 -0
  214. package/dist/sync/schemas.d.ts +23 -33
  215. package/dist/sync/schemas.js +29 -20
  216. package/dist/sync/syncPlan.d.ts +3 -3
  217. package/dist/sync/wsFrameHandlers.d.ts +6 -114
  218. package/dist/sync/wsFrameHandlers.js +6 -392
  219. package/dist/syncLog/contract.d.ts +20 -0
  220. package/dist/syncLog/contract.js +19 -0
  221. package/dist/syncLog/index.d.ts +1 -0
  222. package/dist/syncLog/index.js +1 -0
  223. package/dist/transaction/ablo.d.ts +88 -0
  224. package/dist/transaction/ablo.js +33 -0
  225. package/dist/{client/auth.d.ts → transaction/auth/apiKey.d.ts} +43 -8
  226. package/dist/{client/auth.js → transaction/auth/apiKey.js} +19 -0
  227. package/dist/transaction/auth/bootstrapScope.d.ts +15 -0
  228. package/dist/transaction/auth/bootstrapScope.js +1 -0
  229. package/dist/transaction/auth/capability.d.ts +212 -0
  230. package/dist/transaction/auth/capability.js +224 -0
  231. package/dist/{auth → transaction/auth}/credentialSource.d.ts +8 -1
  232. package/dist/{client → transaction/auth}/identity.d.ts +8 -7
  233. package/dist/{client → transaction/auth}/identity.js +1 -1
  234. package/dist/transaction/auth/index.d.ts +162 -0
  235. package/dist/transaction/auth/index.js +304 -0
  236. package/dist/{auth → transaction/auth}/schemas.d.ts +1 -1
  237. package/dist/{auth → transaction/auth}/schemas.js +13 -13
  238. package/dist/{client → transaction/auth}/sessionMint.d.ts +8 -8
  239. package/dist/{client → transaction/auth}/sessionMint.js +4 -7
  240. package/dist/transaction/coordination/awaitClaimGrant.d.ts +56 -0
  241. package/dist/transaction/coordination/awaitClaimGrant.js +124 -0
  242. package/dist/{client → transaction/coordination}/claimHeartbeatLoop.d.ts +34 -0
  243. package/dist/{client → transaction/coordination}/claimHeartbeatLoop.js +20 -0
  244. package/dist/transaction/coordination/claimMeta.d.ts +49 -0
  245. package/dist/transaction/coordination/claimMeta.js +52 -0
  246. package/dist/transaction/coordination/createClaimStream.d.ts +64 -0
  247. package/dist/transaction/coordination/createClaimStream.js +475 -0
  248. package/dist/transaction/coordination/events.d.ts +74 -0
  249. package/dist/transaction/coordination/events.js +7 -0
  250. package/dist/transaction/coordination/index.d.ts +19 -0
  251. package/dist/transaction/coordination/index.js +45 -0
  252. package/dist/transaction/coordination/locator.d.ts +104 -0
  253. package/dist/transaction/coordination/locator.js +102 -0
  254. package/dist/transaction/coordination/schema.d.ts +1536 -0
  255. package/dist/transaction/coordination/schema.js +1177 -0
  256. package/dist/transaction/coordination/targetConflict.d.ts +2 -0
  257. package/dist/transaction/coordination/targetConflict.js +107 -0
  258. package/dist/{coordination → transaction/coordination}/trace.d.ts +7 -18
  259. package/dist/{coordination → transaction/coordination}/trace.js +18 -25
  260. package/dist/transaction/durableWrites.d.ts +62 -0
  261. package/dist/{client → transaction}/durableWrites.js +28 -3
  262. package/dist/transaction/environment.d.ts +105 -0
  263. package/dist/transaction/environment.js +108 -0
  264. package/dist/{errorCodes.d.ts → transaction/errorCodes.d.ts} +12 -12
  265. package/dist/{errorCodes.js → transaction/errorCodes.js} +45 -18
  266. package/dist/{errors.d.ts → transaction/errors.d.ts} +37 -13
  267. package/dist/{errors.js → transaction/errors.js} +85 -16
  268. package/dist/transaction/footprint.d.ts +111 -0
  269. package/dist/transaction/footprint.js +0 -0
  270. package/dist/transaction/index.d.ts +20 -0
  271. package/dist/transaction/index.js +20 -0
  272. package/dist/transaction/keys/index.d.ts +87 -0
  273. package/dist/transaction/keys/index.js +207 -0
  274. package/dist/transaction/log/syncDeltaRow.d.ts +158 -0
  275. package/dist/transaction/log/syncDeltaRow.js +95 -0
  276. package/dist/{sync/syncPosition.d.ts → transaction/logPosition.d.ts} +22 -8
  277. package/dist/{sync/syncPosition.js → transaction/logPosition.js} +15 -6
  278. package/dist/transaction/logger.d.ts +16 -0
  279. package/dist/transaction/logger.js +7 -0
  280. package/dist/transaction/observability.d.ts +53 -0
  281. package/dist/transaction/observability.js +19 -0
  282. package/dist/transaction/plugin.d.ts +285 -0
  283. package/dist/transaction/plugin.js +106 -0
  284. package/dist/{policy → transaction/policy}/types.d.ts +3 -3
  285. package/dist/{policy → transaction/policy}/types.js +2 -0
  286. package/dist/transaction/resources/httpResources.d.ts +321 -0
  287. package/dist/transaction/resources/httpResources.js +7 -0
  288. package/dist/transaction/resources/modelOperations.d.ts +427 -0
  289. package/dist/transaction/resources/modelOperations.js +12 -0
  290. package/dist/transaction/resources/mutationOptions.d.ts +66 -0
  291. package/dist/transaction/resources/mutationOptions.js +9 -0
  292. package/dist/transaction/resources/where.d.ts +101 -0
  293. package/dist/transaction/resources/where.js +115 -0
  294. package/dist/{client → transaction/resources}/writeOptionsSchema.d.ts +2 -6
  295. package/dist/{client → transaction/resources}/writeOptionsSchema.js +9 -5
  296. package/dist/{schema → transaction/schema}/field.d.ts +17 -23
  297. package/dist/{schema → transaction/schema}/field.js +5 -5
  298. package/dist/transaction/schema/fieldRef.d.ts +38 -0
  299. package/dist/transaction/schema/fieldRef.js +11 -0
  300. package/dist/transaction/schema/loadStrategy.d.ts +45 -0
  301. package/dist/transaction/schema/loadStrategy.js +46 -0
  302. package/dist/{schema → transaction/schema}/model.d.ts +50 -35
  303. package/dist/{schema → transaction/schema}/model.js +30 -20
  304. package/dist/transaction/schema/openapi.d.ts +58 -0
  305. package/dist/transaction/schema/openapi.js +501 -0
  306. package/dist/{schema → transaction/schema}/relation.d.ts +21 -16
  307. package/dist/{schema → transaction/schema}/relation.js +7 -7
  308. package/dist/{schema → transaction/schema}/residency.d.ts +0 -9
  309. package/dist/{schema → transaction/schema}/residency.js +0 -5
  310. package/dist/{schema → transaction/schema}/roles.d.ts +5 -5
  311. package/dist/{schema → transaction/schema}/roles.js +5 -5
  312. package/dist/{schema → transaction/schema}/schema.d.ts +39 -10
  313. package/dist/{schema → transaction/schema}/schema.js +24 -3
  314. package/dist/{schema → transaction/schema}/tenancy.d.ts +1 -1
  315. package/dist/{schema → transaction/schema}/tenancy.js +7 -4
  316. package/dist/transaction/transactionLayer.d.ts +82 -0
  317. package/dist/transaction/transactionLayer.js +24 -0
  318. package/dist/{transactions → transaction/transactions/settlement}/commitEnvelope.d.ts +5 -6
  319. package/dist/{transactions → transaction/transactions/settlement}/commitEnvelope.js +9 -13
  320. package/dist/{transactions → transaction/transactions/settlement}/httpCommitEnvelope.d.ts +9 -2
  321. package/dist/{transactions → transaction/transactions/settlement}/httpCommitEnvelope.js +5 -9
  322. package/dist/{transactions/durableWriteStore.d.ts → transaction/transactions/settlement/pendingWrite.d.ts} +11 -37
  323. package/dist/transaction/transactions/settlement/pendingWrite.js +20 -0
  324. package/dist/transaction/transport/commitFrames.d.ts +90 -0
  325. package/dist/transaction/transport/commitFrames.js +134 -0
  326. package/dist/transaction/transport/connectionManager.d.ts +215 -0
  327. package/dist/transaction/transport/connectionManager.js +673 -0
  328. package/dist/transaction/transport/credentialLifecycle.d.ts +177 -0
  329. package/dist/transaction/transport/credentialLifecycle.js +324 -0
  330. package/dist/{sync → transaction/transport}/heartbeat.d.ts +3 -1
  331. package/dist/{sync → transaction/transport}/heartbeat.js +6 -4
  332. package/dist/transaction/transport/httpClient.d.ts +131 -0
  333. package/dist/{client → transaction/transport}/httpClient.js +6 -5
  334. package/dist/transaction/transport/httpOptions.d.ts +33 -0
  335. package/dist/transaction/transport/httpOptions.js +12 -0
  336. package/dist/{client → transaction/transport}/httpTransport.js +295 -97
  337. package/dist/{sync/NetworkProbe.d.ts → transaction/transport/networkProbe.d.ts} +7 -4
  338. package/dist/{sync/NetworkProbe.js → transaction/transport/networkProbe.js} +14 -13
  339. package/dist/transaction/transport/wsFrameHandlers.d.ts +128 -0
  340. package/dist/transaction/transport/wsFrameHandlers.js +429 -0
  341. package/dist/transaction/transport/wsTransport.d.ts +574 -0
  342. package/dist/transaction/transport/wsTransport.js +1023 -0
  343. package/dist/transaction/types/assertExact.d.ts +17 -0
  344. package/dist/transaction/types/assertExact.js +1 -0
  345. package/dist/{types → transaction/types}/global.d.ts +17 -2
  346. package/dist/{types → transaction/types}/global.js +2 -1
  347. package/dist/{types → transaction/types}/index.d.ts +14 -46
  348. package/dist/{types → transaction/types}/index.js +7 -16
  349. package/dist/{types → transaction/types}/streams.d.ts +73 -45
  350. package/dist/transaction/utils/duration.d.ts +50 -0
  351. package/dist/{utils → transaction/utils}/duration.js +32 -0
  352. package/dist/{utils → transaction/utils}/json.d.ts +18 -0
  353. package/dist/transaction/utils/json.js +276 -0
  354. package/dist/transaction/wire/accountResponses.d.ts +420 -0
  355. package/dist/transaction/wire/accountResponses.js +290 -0
  356. package/dist/transaction/wire/auth.d.ts +56 -0
  357. package/dist/transaction/wire/auth.js +63 -0
  358. package/dist/transaction/wire/claimEvent.d.ts +76 -0
  359. package/dist/transaction/wire/claimEvent.js +73 -0
  360. package/dist/transaction/wire/claims.d.ts +530 -0
  361. package/dist/transaction/wire/claims.js +327 -0
  362. package/dist/{wire → transaction/wire}/commit.d.ts +125 -193
  363. package/dist/{wire → transaction/wire}/commit.js +68 -47
  364. package/dist/{wire → transaction/wire}/delta.d.ts +66 -17
  365. package/dist/{wire → transaction/wire}/delta.js +37 -13
  366. package/dist/transaction/wire/errorEnvelope.d.ts +72 -0
  367. package/dist/{wire → transaction/wire}/errorEnvelope.js +36 -5
  368. package/dist/transaction/wire/feedCursor.d.ts +60 -0
  369. package/dist/transaction/wire/feedCursor.js +82 -0
  370. package/dist/transaction/wire/feedEvent.d.ts +204 -0
  371. package/dist/transaction/wire/feedEvent.js +65 -0
  372. package/dist/transaction/wire/frames.d.ts +194 -0
  373. package/dist/transaction/wire/frames.js +50 -0
  374. package/dist/transaction/wire/inboundFrames.d.ts +562 -0
  375. package/dist/transaction/wire/inboundFrames.js +116 -0
  376. package/dist/transaction/wire/index.d.ts +54 -0
  377. package/dist/transaction/wire/index.js +83 -0
  378. package/dist/{wire → transaction/wire}/listEnvelope.d.ts +13 -14
  379. package/dist/transaction/wire/listEnvelope.js +42 -0
  380. package/dist/transaction/wire/modelMutations.d.ts +31 -0
  381. package/dist/transaction/wire/modelMutations.js +52 -0
  382. package/dist/transaction/wire/modelResponses.d.ts +85 -0
  383. package/dist/transaction/wire/modelResponses.js +43 -0
  384. package/dist/transaction/wire/modelShape.d.ts +78 -0
  385. package/dist/transaction/wire/modelShape.js +74 -0
  386. package/dist/transactions/{TransactionQueue.d.ts → mutations/MutationQueue.d.ts} +85 -38
  387. package/dist/transactions/{TransactionQueue.js → mutations/MutationQueue.js} +141 -80
  388. package/dist/transactions/{TransactionStore.d.ts → mutations/MutationStore.d.ts} +8 -8
  389. package/dist/transactions/{TransactionStore.js → mutations/MutationStore.js} +2 -2
  390. package/dist/transactions/{coalesceRules.d.ts → mutations/coalesceRules.d.ts} +10 -10
  391. package/dist/transactions/{coalesceRules.js → mutations/coalesceRules.js} +1 -1
  392. package/dist/transactions/mutations/commitLatency.d.ts +52 -0
  393. package/dist/transactions/mutations/commitLatency.js +130 -0
  394. package/dist/transactions/{commitOutboxStore.d.ts → mutations/commitOutboxStore.d.ts} +1 -5
  395. package/dist/transactions/{commitOutboxStore.js → mutations/commitOutboxStore.js} +1 -1
  396. package/dist/transactions/{commitPayload.d.ts → mutations/commitPayload.d.ts} +18 -16
  397. package/dist/transactions/{commitPayload.js → mutations/commitPayload.js} +15 -15
  398. package/dist/transactions/{deltaConfirmation.d.ts → mutations/deltaConfirmation.d.ts} +15 -11
  399. package/dist/transactions/{deltaConfirmation.js → mutations/deltaConfirmation.js} +14 -12
  400. package/dist/transactions/mutations/durableWriteStore.d.ts +14 -0
  401. package/dist/transactions/mutations/durableWriteStore.js +12 -0
  402. package/dist/transactions/{optimisticApply.d.ts → mutations/optimisticApply.d.ts} +7 -7
  403. package/dist/transactions/{replayValidation.d.ts → mutations/replayValidation.d.ts} +4 -3
  404. package/dist/transactions/{replayValidation.js → mutations/replayValidation.js} +7 -5
  405. package/dist/utils/mobxSetup.d.ts +1 -1
  406. package/dist/utils/mobxSetup.js +5 -2
  407. package/dist/{core → views}/QueryView.d.ts +2 -2
  408. package/dist/{core → views}/QueryView.js +2 -2
  409. package/dist/{core → views}/ViewRegistry.d.ts +1 -1
  410. package/dist/{core/queryUtils.d.ts → views/incrementalView.d.ts} +6 -6
  411. package/dist/{core/queryUtils.js → views/incrementalView.js} +6 -6
  412. package/dist/webhooks/events.d.ts +2 -2
  413. package/dist/wire/index.d.ts +1 -34
  414. package/dist/wire/index.js +8 -49
  415. package/docs/agent-messaging.md +3 -3
  416. package/docs/agents.md +20 -13
  417. package/docs/api-keys.md +14 -10
  418. package/docs/api.md +27 -61
  419. package/docs/audit.md +6 -3
  420. package/docs/cli.md +41 -13
  421. package/docs/client-behavior.md +11 -9
  422. package/docs/concurrency-convention.md +49 -57
  423. package/docs/coordination.md +283 -121
  424. package/docs/data-sources.md +7 -5
  425. package/docs/debugging.md +39 -15
  426. package/docs/deployment.md +267 -0
  427. package/docs/examples/agent-human.md +49 -42
  428. package/docs/examples/ai-sdk-tool.md +69 -44
  429. package/docs/examples/existing-python-backend.md +8 -6
  430. package/docs/examples/nextjs.md +129 -47
  431. package/docs/examples/scoped-agent.md +46 -45
  432. package/docs/examples/server-agent.md +46 -26
  433. package/docs/groups.md +87 -30
  434. package/docs/guarantees.md +41 -12
  435. package/docs/how-it-works.md +38 -12
  436. package/docs/idempotency.md +126 -0
  437. package/docs/identity.md +77 -74
  438. package/docs/index.md +172 -86
  439. package/docs/integration-guide.md +31 -19
  440. package/docs/mcp.md +46 -21
  441. package/docs/migration.md +95 -18
  442. package/docs/operating-on-your-database.md +3 -1
  443. package/docs/projects.md +3 -1
  444. package/docs/quickstart.md +22 -5
  445. package/docs/react.md +31 -18
  446. package/docs/schema-contract.md +5 -3
  447. package/docs/session-settings.md +108 -0
  448. package/docs/sessions.md +4 -2
  449. package/docs/webhooks.md +12 -10
  450. package/llms.txt +48 -18
  451. package/package.json +21 -26
  452. package/dist/agent/Agent.d.ts +0 -366
  453. package/dist/agent/Agent.js +0 -514
  454. package/dist/agent/index.d.ts +0 -115
  455. package/dist/agent/index.js +0 -128
  456. package/dist/agent/session.d.ts +0 -93
  457. package/dist/agent/session.js +0 -149
  458. package/dist/agent/types.d.ts +0 -68
  459. package/dist/agent/types.js +0 -9
  460. package/dist/cli.cjs +0 -286329
  461. package/dist/client/durableWrites.d.ts +0 -21
  462. package/dist/client/httpClient.d.ts +0 -80
  463. package/dist/coordination/schema.d.ts +0 -722
  464. package/dist/coordination/schema.js +0 -578
  465. package/dist/schema/openapi.d.ts +0 -29
  466. package/dist/schema/openapi.js +0 -124
  467. package/dist/testing/fixtures/bootstrap.d.ts +0 -49
  468. package/dist/testing/fixtures/bootstrap.js +0 -59
  469. package/dist/testing/fixtures/deltas.d.ts +0 -83
  470. package/dist/testing/fixtures/deltas.js +0 -136
  471. package/dist/testing/fixtures/models.d.ts +0 -83
  472. package/dist/testing/fixtures/models.js +0 -272
  473. package/dist/testing/helpers/reactWrapper.d.ts +0 -69
  474. package/dist/testing/helpers/reactWrapper.js +0 -67
  475. package/dist/testing/helpers/syncEngineHarness.d.ts +0 -54
  476. package/dist/testing/helpers/syncEngineHarness.js +0 -73
  477. package/dist/testing/helpers/wait.d.ts +0 -30
  478. package/dist/testing/helpers/wait.js +0 -49
  479. package/dist/testing/index.d.ts +0 -23
  480. package/dist/testing/index.js +0 -33
  481. package/dist/testing/mocks/FakeDatabase.d.ts +0 -18
  482. package/dist/testing/mocks/FakeDatabase.js +0 -10
  483. package/dist/testing/mocks/MockMutationExecutor.d.ts +0 -87
  484. package/dist/testing/mocks/MockMutationExecutor.js +0 -192
  485. package/dist/testing/mocks/MockNetworkMonitor.d.ts +0 -20
  486. package/dist/testing/mocks/MockNetworkMonitor.js +0 -46
  487. package/dist/testing/mocks/MockSyncContext.d.ts +0 -51
  488. package/dist/testing/mocks/MockSyncContext.js +0 -71
  489. package/dist/testing/mocks/MockSyncStore.d.ts +0 -88
  490. package/dist/testing/mocks/MockSyncStore.js +0 -171
  491. package/dist/testing/mocks/MockWebSocket.d.ts +0 -71
  492. package/dist/testing/mocks/MockWebSocket.js +0 -118
  493. package/dist/transactions/durableWriteStore.js +0 -30
  494. package/dist/utils/duration.d.ts +0 -25
  495. package/dist/utils/json.js +0 -88
  496. package/dist/wire/errorEnvelope.d.ts +0 -55
  497. package/dist/wire/frames.d.ts +0 -197
  498. package/dist/wire/frames.js +0 -49
  499. package/dist/wire/listEnvelope.js +0 -18
  500. package/docs/interaction-model.md +0 -97
  501. /package/dist/{core → query}/QueryProcessor.d.ts +0 -0
  502. /package/dist/{core → query}/QueryProcessor.js +0 -0
  503. /package/dist/{core/storeContract.js → storeContract.js} +0 -0
  504. /package/dist/{core → stores}/openIDBWithTimeout.d.ts +0 -0
  505. /package/dist/{core → stores}/openIDBWithTimeout.js +0 -0
  506. /package/dist/{client → transaction/auth}/credentialEndpoint.d.ts +0 -0
  507. /package/dist/{client → transaction/auth}/credentialEndpoint.js +0 -0
  508. /package/dist/{auth → transaction/auth}/credentialPolicy.d.ts +0 -0
  509. /package/dist/{auth → transaction/auth}/credentialPolicy.js +0 -0
  510. /package/dist/{auth → transaction/auth}/credentialSource.js +0 -0
  511. /package/dist/{client → transaction/auth}/hostedEndpoints.d.ts +0 -0
  512. /package/dist/{client → transaction/auth}/hostedEndpoints.js +0 -0
  513. /package/dist/{client → transaction}/persistence.d.ts +0 -0
  514. /package/dist/{client → transaction}/persistence.js +0 -0
  515. /package/dist/{client → transaction/resources}/functionalUpdate.d.ts +0 -0
  516. /package/dist/{client → transaction/resources}/functionalUpdate.js +0 -0
  517. /package/dist/{transactions → transaction/transactions/settlement}/idempotencyKey.d.ts +0 -0
  518. /package/dist/{transactions → transaction/transactions/settlement}/idempotencyKey.js +0 -0
  519. /package/dist/{client → transaction/transport}/httpTransport.d.ts +0 -0
  520. /package/dist/{types → transaction/types}/modelData.d.ts +0 -0
  521. /package/dist/{types → transaction/types}/modelData.js +0 -0
  522. /package/dist/{types → transaction/types}/participant.d.ts +0 -0
  523. /package/dist/{types → transaction/types}/participant.js +0 -0
  524. /package/dist/{types → transaction/types}/streams.js +0 -0
  525. /package/dist/{utils → transaction/utils}/asyncIterator.d.ts +0 -0
  526. /package/dist/{utils → transaction/utils}/asyncIterator.js +0 -0
  527. /package/dist/{wire → transaction/wire}/bootstrapReason.d.ts +0 -0
  528. /package/dist/{wire → transaction/wire}/bootstrapReason.js +0 -0
  529. /package/dist/{wire → transaction/wire}/protocol.d.ts +0 -0
  530. /package/dist/{wire → transaction/wire}/protocol.js +0 -0
  531. /package/dist/{wire → transaction/wire}/protocolVersion.d.ts +0 -0
  532. /package/dist/{wire → transaction/wire}/protocolVersion.js +0 -0
  533. /package/dist/transactions/{UnconfirmedWrites.d.ts → mutations/UnconfirmedWrites.d.ts} +0 -0
  534. /package/dist/transactions/{UnconfirmedWrites.js → mutations/UnconfirmedWrites.js} +0 -0
  535. /package/dist/transactions/{optimisticApply.js → mutations/optimisticApply.js} +0 -0
  536. /package/dist/{core → views}/ViewRegistry.js +0 -0
@@ -0,0 +1,321 @@
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
+ import type { ClaimHeartbeatAckPayload, OnStaleMode, ReadDependency, TrackDependency } from '../coordination/schema.js';
8
+ import type { ClaimHeartbeatReply, ClaimState } from '../wire/claims.js';
9
+ import type { ClientCommitReceipt, CommitWait } from '../wire/commit.js';
10
+ export type { CommitWait };
11
+ import type { ModelTarget, ModelClaim } from '../coordination/schema.js';
12
+ export type { ModelTarget, ModelClaim };
13
+ import type { ResolveClaimMeta } from '../types/global.js';
14
+ import type { SchemaRecord } from '../schema/schema.js';
15
+ import type { SyncGroupInput } from '../schema/roles.js';
16
+ import type { CapabilityCan, CapabilityOperation, CapabilityScope } from '../auth/capability.js';
17
+ import type { Claim, ClaimStream, ClaimWaitOptions, Duration, HeldClaim } from '../types/streams.js';
18
+ import type { ClaimOptions, ClaimParams, ClaimReadApi, AwaitedClaimMethod } from './modelOperations.js';
19
+ /**
20
+ * The operations available on each model in the sync engine:
21
+ * `retrieve({ id })` — an async single-row server read
22
+ * `list({ where })` — an async collection server read
23
+ * `local.retrieve(id)` / `local.list(...)` / `local.count(...)` — synchronous local reads
24
+ * `create({ data })` / `update({ id, data })` / `delete({ id })` — writes
25
+ * `claim({ id })` — a durable claim handle for coordinated writes
26
+ */
27
+ export type ModelOperationAction = 'create' | 'update' | 'delete' | 'archive' | 'unarchive';
28
+ export type IfClaimedPolicy = 'return' | 'fail';
29
+ export interface ClaimedOptions {
30
+ /**
31
+ * What to do when another participant has claimed the target: `return` lets
32
+ * the read proceed; `fail` throws `AbloClaimedError`. Inspect claim state via
33
+ * `ablo.<model>.claim.state({ id })`. Waiting is a claim-side concern — take
34
+ * `ablo.<model>.claim({ id })` (it queues fairly); reads never block.
35
+ */
36
+ readonly ifClaimed?: IfClaimedPolicy;
37
+ }
38
+ export type { ClaimWaitOptions } from '../types/streams.js';
39
+ export interface ModelReadOptions extends ClaimedOptions {
40
+ }
41
+ /**
42
+ * The target a caller names when creating a claim: {@link ModelTarget} with its
43
+ * one caller-authored member typed — `meta` is the shape declared on
44
+ * `Register`'s `ClaimMeta` slot, the same declaration every reader of the claim
45
+ * is given back.
46
+ *
47
+ * Derived rather than restated, and narrowed only here: `modelTargetSchema`
48
+ * keeps parsing `meta` as an open record, because a peer on a newer build must
49
+ * still be understood. The wire stays permissive; the DTO the caller writes
50
+ * does not.
51
+ */
52
+ export type ModelTargetInput = Omit<ModelTarget, 'meta'> & {
53
+ readonly meta?: ResolveClaimMeta;
54
+ };
55
+ export interface ClaimCreateOptions {
56
+ readonly target: ModelTargetInput;
57
+ /** Peer-visible description of the work — the same field on every claim
58
+ * surface. Defaults to `'editing'` when omitted. */
59
+ readonly description?: string;
60
+ readonly ttl?: Duration;
61
+ /**
62
+ * Join the server's fair FIFO queue when the target is already claimed,
63
+ * rather than failing immediately. `create` then resolves only once the
64
+ * lease is actually ours (the server pushes `claim_acquired` if the target
65
+ * was free, or `claim_granted` when we reach the head of the line). Without
66
+ * this, a contended claim throws. Used by `ablo.<model>.claim` so writers
67
+ * serialize instead of racing.
68
+ */
69
+ readonly queue?: boolean;
70
+ /** Cap on how long to wait for a queued grant before rejecting. */
71
+ readonly waitTimeoutMs?: number;
72
+ /** Abort a pending wait from outside — rejects with `claim_wait_aborted`.
73
+ * Ignored once the grant has arrived. */
74
+ readonly signal?: AbortSignal;
75
+ /**
76
+ * Backpressure: reject with `AbloClaimedError('queue_too_deep')` instead of
77
+ * waiting if the queue is already `>= maxQueueDepth` when we join.
78
+ */
79
+ readonly maxQueueDepth?: number;
80
+ }
81
+ export interface CommitOperationInput {
82
+ readonly action: ModelOperationAction;
83
+ /** The model name — matches `ablo.<model>` and the schema's `model()`. */
84
+ readonly model: string;
85
+ readonly id?: string | null;
86
+ readonly data?: Record<string, unknown> | null;
87
+ readonly transactionId?: string | null;
88
+ readonly readAt?: number | null;
89
+ readonly onStale?: OnStaleMode | null;
90
+ /** Fencing token (Option B) from the batch's claim handle; server-validated. */
91
+ readonly fenceToken?: number | null;
92
+ }
93
+ export interface CommitCreateOptions {
94
+ readonly idempotencyKey?: string | null;
95
+ readonly readAt?: number | null;
96
+ readonly onStale?: OnStaleMode | null;
97
+ /**
98
+ * A claim handle from `ablo.<model>.claim({ id })` (or the HTTP claim
99
+ * surface). Same vocabulary as the per-model writes: the handle's
100
+ * snapshot watermark becomes the batch `readAt` default and `onStale`
101
+ * defaults to `'reject'`, so a commit that follows a claim is guarded
102
+ * against concurrent edits without re-stating the watermark by hand.
103
+ * Explicit `readAt`/`onStale` on the options win.
104
+ */
105
+ readonly claim?: Claim | null;
106
+ /** One atomic batch. Use a one-element array for a single operation. */
107
+ readonly operations: readonly CommitOperationInput[];
108
+ readonly wait?: CommitWait;
109
+ /**
110
+ * The batch premise — the "did anything I looked at change?" guard.
111
+ * Declare the rows (`{ model, id, readAt, fields? }`) or sync groups
112
+ * (`{ group, readAt }`, for example `report:abc`) this batch was premised on; the
113
+ * server checks that none moved since `readAt` and fires the entry's `onStale`
114
+ * over the batch. This is distinct from the write-target `readAt`: it guards what
115
+ * you read, not what you write.
116
+ */
117
+ readonly reads?: readonly ReadDependency[] | null;
118
+ /**
119
+ * Durable premises to register as part of this batch — the persisted
120
+ * sibling of `reads`. Where `reads` guards only this commit, a `track` entry
121
+ * (`{ model, id, readAt? }` for a row or `{ group, readAt? }` for a sync group)
122
+ * lives on past it: a later matching change rides back on a future receipt's
123
+ * `notifications`. A track-only batch (just `track`, an empty `operations`) is
124
+ * the batch form of `ablo.<model>.track()`.
125
+ */
126
+ readonly track?: readonly TrackDependency[] | null;
127
+ }
128
+ /** Public projection inferred from the canonical runtime schema. */
129
+ export type CommitReceipt = ClientCommitReceipt;
130
+ export interface CommitResource {
131
+ create(options: CommitCreateOptions): Promise<CommitReceipt>;
132
+ }
133
+ export interface ClaimResource extends ClaimStream {
134
+ create(options: ClaimCreateOptions): Promise<Claim>;
135
+ list(target?: Partial<ModelTarget>): readonly ModelClaim[];
136
+ waitFor(target: Partial<ModelTarget>, options?: ClaimWaitOptions): Promise<void>;
137
+ }
138
+ /**
139
+ * The claim-ticket surface of the stateless HTTP client — the operations a
140
+ * caller performs holding only a `claimId`, which is what a queued acquire
141
+ * leaves in its hand (`AbloClaimedError('claim_queued')` carries it on
142
+ * `error.claims`). The WebSocket client never needs these: it awaits the grant
143
+ * on its socket.
144
+ *
145
+ * All three shapes are the wire's own — `claimStateSchema`,
146
+ * `claimHeartbeatReplySchema`, and the batch ack — so this surface cannot
147
+ * describe a response the server does not send.
148
+ */
149
+ export interface HttpClaimsResource {
150
+ /**
151
+ * The claim's current state, by its id — `GET /v1/claims/{claimId}`. The
152
+ * poll half of the queued-grant handover: a queued caller polls until
153
+ * `status` is `'active'`, at which point `fenceToken` is present and the
154
+ * work can begin. `position` is advisory (a privileged caller can reorder
155
+ * the line, so it may go up); only `status` is authoritative.
156
+ */
157
+ retrieve(params: {
158
+ readonly claimId: string;
159
+ }): Promise<ClaimState>;
160
+ /**
161
+ * One beat on the named lease — `POST /v1/claims/{claimId}/heartbeat`. On a
162
+ * held lease it extends the TTL; on a queued ticket it refreshes the
163
+ * waiter's slot in the line and reports `{ status: 'queued', position }`.
164
+ */
165
+ heartbeat(params: {
166
+ readonly claimId: string;
167
+ readonly ttl?: string | number;
168
+ }): Promise<ClaimHeartbeatReply>;
169
+ /**
170
+ * One beat for every lease this identity holds — `POST /v1/claims/heartbeat`,
171
+ * one ack per extended lease. The socketless twin of the realtime
172
+ * keepalive, for a stateless worker holding many rows.
173
+ */
174
+ heartbeatAll(options?: {
175
+ readonly ttl?: string | number;
176
+ }): Promise<readonly ClaimHeartbeatAckPayload[]>;
177
+ /**
178
+ * Give the ticket back — `DELETE /v1/claims/{claimId}`. On a held lease this
179
+ * releases it and promotes the head of the queue; on a queued ticket it
180
+ * leaves the line, so the waiters behind move up instead of waiting out
181
+ * your slot's TTL. Idempotent: releasing an already-ended claim is a no-op.
182
+ */
183
+ release(params: {
184
+ readonly claimId: string;
185
+ }): Promise<void>;
186
+ }
187
+ export interface ModelMutationOptions extends ClaimedOptions {
188
+ readonly claimRef?: string | {
189
+ readonly id: string;
190
+ } | null;
191
+ readonly idempotencyKey?: string | null;
192
+ readonly readAt?: number | null;
193
+ readonly onStale?: OnStaleMode | null;
194
+ readonly wait?: CommitWait;
195
+ readonly claim?: Claim | ClaimOptions | null;
196
+ /** Fencing token (Option B) from the claim; server-validated at commit. */
197
+ readonly fenceToken?: number | null;
198
+ }
199
+ /**
200
+ * The stateless HTTP claim surface. Most code puts a `claim` directly on the write
201
+ * (`update({ id, data, claim })`) and lets the SDK release it; reach for this
202
+ * namespace for multi-step handles and coordination screens.
203
+ *
204
+ * It is the same surface as the reactive claim API, but because every read is a
205
+ * server round-trip, `state`, `queue`, and `reorder` are awaited here. The
206
+ * WebSocket client resolves those synchronously from its local cache, which is what
207
+ * lets it read a claim's state inside a React render; a stateless client has no
208
+ * cache to read, so the promise is unavoidable.
209
+ *
210
+ * It is derived from `ClaimReadApi` through {@link AwaitedClaimMethod} so the two
211
+ * transports cannot drift: the only difference is the promise wrapper that
212
+ * statelessness forces. `claim({ id })` is identical on both (already async);
213
+ * `state`, `queue`, `reorder`, and `release` are the awaited form.
214
+ */
215
+ export type HttpClaimApi<T = Record<string, unknown>> = ((params: ClaimParams<T> & {
216
+ queue: false;
217
+ }) => Promise<HeldClaim<T> | null>) & ((params: ClaimParams<T>) => Promise<HeldClaim<T>>) & {
218
+ [K in keyof ClaimReadApi<T>]: AwaitedClaimMethod<ClaimReadApi<T>[K]>;
219
+ };
220
+ /** A single data operation a scoped **agent** session may perform on a model.
221
+ * The SDK-facing name for {@link CapabilityOperation}; the vocabulary itself is
222
+ * declared once, as a schema, in `auth/capability.ts`. */
223
+ export type SessionOperation = CapabilityOperation;
224
+ /** Parameters for minting an end-user session — full data authority within the
225
+ * organization. Mints an `ek_` token. `user.id` is your end user's id from your
226
+ * own identity provider and becomes the session's `participantId`; Ablo does not
227
+ * model your users, so it is treated as an opaque string at the trust boundary. */
228
+ export interface CreateUserSessionParams {
229
+ /** Your end user. `id` becomes the token's `participantId`. */
230
+ user: {
231
+ id: string;
232
+ };
233
+ /** Mint the session into this organization instead of the key's own — for a
234
+ * platform that serves many tenants from one backend. Requires the `sk_` key to
235
+ * carry the `ephemeral:mint-any-org` scope; omit it for the normal
236
+ * single-tenant case. */
237
+ organizationId?: string;
238
+ /** Sync groups this session may subscribe to — typed (`'default'` or
239
+ * `<namespace>:<id>`; build with `syncGroup(kind, id)` from
240
+ * `@abloatai/ablo/schema`). Omit for the server default:
241
+ * `[org:<your org>, user:<user.id>]`. */
242
+ syncGroups?: readonly SyncGroupInput[];
243
+ /** Token lifetime in seconds. Defaults to 900 (15 minutes). */
244
+ ttlSeconds?: number;
245
+ /** Opaque identity blob echoed back to the client as `ablo.user`. */
246
+ userMeta?: Record<string, unknown>;
247
+ agent?: never;
248
+ can?: never;
249
+ }
250
+ /** Mint params for a scoped **agent** session — mints a restricted `rk_` token
251
+ * gated to exactly the operations named in `can`. `can` is typed off your
252
+ * schema (no magic `'task.update'` strings): `{ Task: ['update'], Report: ['read'] }`
253
+ * — the SDK serializes each entry to the wire allowlist (`task.update`). */
254
+ export interface CreateAgentSessionParams<S extends SchemaRecord> {
255
+ /** Your agent. `id` becomes the token's `participantId`. */
256
+ agent: {
257
+ id: string;
258
+ };
259
+ /** Per-model operation allowlist, typed against the schema's model names. */
260
+ can: CapabilityCan<S>;
261
+ /** Sync groups this session may subscribe to — typed (`'default'` or
262
+ * `<namespace>:<id>`; build with `syncGroup(kind, id)` from
263
+ * `@abloatai/ablo/schema`). Omit for the server default: the org
264
+ * anchor (`org:<your org>`) + the agent's own anchor. */
265
+ syncGroups?: readonly SyncGroupInput[];
266
+ /** Token lifetime in seconds. Defaults to 900 (15 minutes). */
267
+ ttlSeconds?: number;
268
+ /** Opaque identity blob echoed back to the client as `ablo.agent`. */
269
+ userMeta?: Record<string, unknown>;
270
+ user?: never;
271
+ }
272
+ /** Params for {@link Ablo.sessions}.create — a discriminated union: pass
273
+ * `{ user }` for a full-authority end-user session (`ek_`) or `{ agent, can }`
274
+ * for a scoped agent session (`rk_`). */
275
+ export type CreateSessionParams<S extends SchemaRecord> = CreateUserSessionParams | CreateAgentSessionParams<S>;
276
+ /** Params for {@link Ablo.agents}.create — a flattened agent descriptor (no
277
+ * `{ agent }` discriminator: `agents.create` only ever mints an agent). Unlike
278
+ * {@link CreateSessionParams} it resolves to a connected, scoped {@link Ablo}
279
+ * client rather than a raw token. */
280
+ export interface CreateAgentClientParams<S extends SchemaRecord> {
281
+ /** The wire participant identity (`agent:<id>`) that claim exclusion and the
282
+ * FIFO queue gate on. Omit it to get a fresh random id — a distinct, independent
283
+ * participant, which is the default and what you want for concurrent agents.
284
+ * Pass a stable string only when one logical agent must re-attach to its own
285
+ * held claims across reconnects or restarts. */
286
+ id?: string;
287
+ /** A human-readable label for logs and attribution (carried in `userMeta.name`).
288
+ * It is independent of `id`: two agents that share a `name` still receive
289
+ * distinct ids and coordinate as separate participants — `name` never derives or
290
+ * collapses identity. */
291
+ name?: string;
292
+ /** Per-model operation allowlist, typed against the schema's model names. */
293
+ can: CapabilityCan<S>;
294
+ /** Sync groups this agent may subscribe to — typed (`'default'` or
295
+ * `<namespace>:<id>`). Omit for the server default (org anchor + the
296
+ * agent's own anchor). */
297
+ syncGroups?: readonly SyncGroupInput[];
298
+ /** Token lifetime in seconds. Defaults to 900 (15 minutes); the returned client
299
+ * re-mints before expiry, so a long-running agent never handles rotation
300
+ * itself. */
301
+ ttlSeconds?: number;
302
+ /** Extra opaque identity blob echoed on the session scope. Merged with
303
+ * `name` (the `name` param wins if you also set `userMeta.name`). */
304
+ userMeta?: Record<string, unknown>;
305
+ }
306
+ /** A minted session. `token` is the secret the holder presents as its bearer. */
307
+ export interface AbloSession {
308
+ object: 'session';
309
+ /** Stable id of the minted credential (for revocation). */
310
+ id: string;
311
+ /** The short-lived session token — `ek_` for a `{ user }` session, `rk_`
312
+ * for an `{ agent }` session. Hand this to the participant's runtime. */
313
+ token: string;
314
+ /** ISO-8601 expiry. */
315
+ expiresAt: string;
316
+ organizationId: string;
317
+ /** The grant this token carries, on both axes — the same shape the key row
318
+ * stores and the gates enforce. */
319
+ scope: CapabilityScope;
320
+ userMeta: Record<string, unknown>;
321
+ }
@@ -0,0 +1,7 @@
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
+ export {};