@abloatai/ablo 0.35.0 → 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 (622) hide show
  1. package/AGENTS.md +2 -2
  2. package/CHANGELOG.md +71 -1929
  3. package/NOTICE +2 -2
  4. package/README.md +23 -532
  5. package/assets/banner.png +0 -0
  6. package/dist/auth.d.ts +2 -0
  7. package/dist/auth.d.ts.map +1 -0
  8. package/dist/auth.js +2 -0
  9. package/dist/auth.js.map +1 -0
  10. package/dist/client.d.ts +3 -0
  11. package/dist/client.d.ts.map +1 -0
  12. package/dist/client.js +3 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/coordination.d.ts +2 -0
  15. package/dist/coordination.d.ts.map +1 -0
  16. package/dist/coordination.js +2 -0
  17. package/dist/coordination.js.map +1 -0
  18. package/dist/index.d.ts +3 -112
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +3 -161
  21. package/dist/index.js.map +1 -0
  22. package/dist/react.d.ts +4 -0
  23. package/dist/react.d.ts.map +1 -0
  24. package/dist/react.js +3 -0
  25. package/dist/react.js.map +1 -0
  26. package/dist/schema.d.ts +2 -0
  27. package/dist/schema.d.ts.map +1 -0
  28. package/dist/schema.js +2 -0
  29. package/dist/schema.js.map +1 -0
  30. package/dist/server.d.ts +2 -0
  31. package/dist/server.d.ts.map +1 -0
  32. package/dist/server.js +2 -0
  33. package/dist/server.js.map +1 -0
  34. package/dist/source-conformance.d.ts +2 -0
  35. package/dist/source-conformance.d.ts.map +1 -0
  36. package/dist/source-conformance.js +2 -0
  37. package/dist/source-conformance.js.map +1 -0
  38. package/dist/source-drizzle.d.ts +2 -0
  39. package/dist/source-drizzle.d.ts.map +1 -0
  40. package/dist/source-drizzle.js +2 -0
  41. package/dist/source-drizzle.js.map +1 -0
  42. package/dist/source-kysely.d.ts +2 -0
  43. package/dist/source-kysely.d.ts.map +1 -0
  44. package/dist/source-kysely.js +2 -0
  45. package/dist/source-kysely.js.map +1 -0
  46. package/dist/source-next.d.ts +2 -0
  47. package/dist/source-next.d.ts.map +1 -0
  48. package/dist/source-next.js +2 -0
  49. package/dist/source-next.js.map +1 -0
  50. package/dist/source.d.ts +2 -0
  51. package/dist/source.d.ts.map +1 -0
  52. package/dist/source.js +2 -0
  53. package/dist/source.js.map +1 -0
  54. package/dist/wire.d.ts +2 -0
  55. package/dist/wire.d.ts.map +1 -0
  56. package/dist/wire.js +2 -0
  57. package/dist/wire.js.map +1 -0
  58. package/docs/agents.md +2 -2
  59. package/docs/api-keys.md +13 -12
  60. package/docs/api.md +15 -53
  61. package/docs/audit.md +4 -3
  62. package/docs/cli.md +11 -11
  63. package/docs/client-behavior.md +9 -9
  64. package/docs/concurrency-convention.md +28 -42
  65. package/docs/coordination.md +228 -86
  66. package/docs/data-sources.md +5 -5
  67. package/docs/debugging.md +34 -12
  68. package/docs/deployment.md +8 -8
  69. package/docs/examples/agent-human.md +4 -4
  70. package/docs/examples/ai-sdk-tool.md +1 -1
  71. package/docs/examples/existing-python-backend.md +15 -4
  72. package/docs/examples/nextjs.md +27 -6
  73. package/docs/examples/scoped-agent.md +3 -3
  74. package/docs/examples/server-agent.md +2 -2
  75. package/docs/groups.md +57 -3
  76. package/docs/guarantees.md +37 -10
  77. package/docs/how-it-works.md +32 -8
  78. package/docs/idempotency.md +6 -6
  79. package/docs/identity.md +24 -24
  80. package/docs/index.md +8 -8
  81. package/docs/integration-guide.md +38 -16
  82. package/docs/internal/README.md +18 -0
  83. package/docs/internal/agent-fleet-coordination-design.md +171 -0
  84. package/docs/internal/agent-orchestration.md +58 -0
  85. package/docs/internal/commit-identifiers.md +91 -0
  86. package/docs/internal/concurrency-open-decisions.md +37 -0
  87. package/docs/internal/data-source-reverse-channel.md +150 -0
  88. package/docs/internal/per-field-conflict-detection.md +165 -0
  89. package/docs/internal/postgres-replication.md +64 -0
  90. package/docs/internal/serializable-schema.md +119 -0
  91. package/docs/internal/structure.md +32 -0
  92. package/docs/mcp.md +9 -9
  93. package/docs/migration.md +37 -18
  94. package/docs/projects.md +1 -1
  95. package/docs/quickstart.md +2 -2
  96. package/docs/react.md +24 -13
  97. package/docs/schema-contract.md +3 -3
  98. package/docs/sessions.md +91 -37
  99. package/docs/webhooks.md +9 -9
  100. package/examples/README.md +2 -2
  101. package/examples/data-source/README.md +1 -1
  102. package/examples/data-source/ablo-driver.ts +1 -1
  103. package/examples/data-source/customer-server.ts +1 -1
  104. package/examples/data-source/run.ts +1 -1
  105. package/examples/data-source/schema.ts +1 -1
  106. package/examples/quickstart.ts +2 -2
  107. package/llms.txt +12 -12
  108. package/package.json +64 -174
  109. package/dist/BaseSyncedStore.d.ts +0 -823
  110. package/dist/BaseSyncedStore.js +0 -1955
  111. package/dist/Database.d.ts +0 -335
  112. package/dist/Database.js +0 -1500
  113. package/dist/InstanceCache.d.ts +0 -233
  114. package/dist/InstanceCache.js +0 -1164
  115. package/dist/LazyReferenceCollection.d.ts +0 -177
  116. package/dist/LazyReferenceCollection.js +0 -461
  117. package/dist/Model.d.ts +0 -444
  118. package/dist/Model.js +0 -909
  119. package/dist/ModelRegistry.d.ts +0 -221
  120. package/dist/ModelRegistry.js +0 -537
  121. package/dist/NetworkMonitor.d.ts +0 -26
  122. package/dist/NetworkMonitor.js +0 -77
  123. package/dist/RuntimeContext.d.ts +0 -52
  124. package/dist/RuntimeContext.js +0 -80
  125. package/dist/SyncClient.d.ts +0 -551
  126. package/dist/SyncClient.js +0 -2199
  127. package/dist/adapters/alwaysOnline.d.ts +0 -14
  128. package/dist/adapters/alwaysOnline.js +0 -17
  129. package/dist/adapters/inMemoryStorage.d.ts +0 -31
  130. package/dist/adapters/inMemoryStorage.js +0 -110
  131. package/dist/ai-sdk/coordinatedTool.d.ts +0 -120
  132. package/dist/ai-sdk/coordinatedTool.js +0 -134
  133. package/dist/ai-sdk/coordinationContext.d.ts +0 -46
  134. package/dist/ai-sdk/coordinationContext.js +0 -106
  135. package/dist/ai-sdk/index.d.ts +0 -121
  136. package/dist/ai-sdk/index.js +0 -121
  137. package/dist/ai-sdk/wrap.d.ts +0 -65
  138. package/dist/ai-sdk/wrap.js +0 -39
  139. package/dist/auth/index.d.ts +0 -1
  140. package/dist/auth/index.js +0 -8
  141. package/dist/batching/index.d.ts +0 -55
  142. package/dist/batching/index.js +0 -147
  143. package/dist/cli.cjs +0 -288600
  144. package/dist/client/Ablo.d.ts +0 -231
  145. package/dist/client/Ablo.js +0 -149
  146. package/dist/client/abloClient.d.ts +0 -309
  147. package/dist/client/abloClient.js +0 -13
  148. package/dist/client/clientPrelude.d.ts +0 -52
  149. package/dist/client/clientPrelude.js +0 -60
  150. package/dist/client/consoleLogger.d.ts +0 -35
  151. package/dist/client/consoleLogger.js +0 -44
  152. package/dist/client/coreClient.d.ts +0 -60
  153. package/dist/client/coreClient.js +0 -118
  154. package/dist/client/createInternalComponents.d.ts +0 -46
  155. package/dist/client/createInternalComponents.js +0 -92
  156. package/dist/client/createModelProxy.d.ts +0 -228
  157. package/dist/client/createModelProxy.js +0 -818
  158. package/dist/client/humans.d.ts +0 -48
  159. package/dist/client/humans.js +0 -52
  160. package/dist/client/modelRegistration.d.ts +0 -10
  161. package/dist/client/modelRegistration.js +0 -312
  162. package/dist/client/options.d.ts +0 -461
  163. package/dist/client/options.js +0 -7
  164. package/dist/client/reactiveEngine.d.ts +0 -48
  165. package/dist/client/reactiveEngine.js +0 -910
  166. package/dist/client/resourceTypes.d.ts +0 -12
  167. package/dist/client/resourceTypes.js +0 -10
  168. package/dist/client/schemaConfig.d.ts +0 -44
  169. package/dist/client/schemaConfig.js +0 -185
  170. package/dist/client/validateAbloOptions.d.ts +0 -42
  171. package/dist/client/validateAbloOptions.js +0 -43
  172. package/dist/client/wsMutationExecutor.d.ts +0 -27
  173. package/dist/client/wsMutationExecutor.js +0 -72
  174. package/dist/context.d.ts +0 -29
  175. package/dist/context.js +0 -58
  176. package/dist/coordination/ClaimLog.d.ts +0 -26
  177. package/dist/coordination/ClaimLog.js +0 -32
  178. package/dist/coordination/index.d.ts +0 -1
  179. package/dist/coordination/index.js +0 -8
  180. package/dist/core/DatabaseManager.d.ts +0 -105
  181. package/dist/core/DatabaseManager.js +0 -387
  182. package/dist/core/QueryProcessor.d.ts +0 -75
  183. package/dist/core/QueryProcessor.js +0 -255
  184. package/dist/core/QueryView.d.ts +0 -79
  185. package/dist/core/QueryView.js +0 -218
  186. package/dist/core/StoreManager.d.ts +0 -112
  187. package/dist/core/StoreManager.js +0 -302
  188. package/dist/core/ViewRegistry.d.ts +0 -20
  189. package/dist/core/ViewRegistry.js +0 -55
  190. package/dist/core/index.d.ts +0 -33
  191. package/dist/core/index.js +0 -48
  192. package/dist/core/openIDBWithTimeout.d.ts +0 -65
  193. package/dist/core/openIDBWithTimeout.js +0 -153
  194. package/dist/core/queryUtils.d.ts +0 -45
  195. package/dist/core/queryUtils.js +0 -69
  196. package/dist/core/storeContract.d.ts +0 -145
  197. package/dist/core/storeContract.js +0 -12
  198. package/dist/docs/catalog.d.ts +0 -72
  199. package/dist/docs/catalog.js +0 -227
  200. package/dist/docs/index.d.ts +0 -10
  201. package/dist/docs/index.js +0 -10
  202. package/dist/environment.d.ts +0 -1
  203. package/dist/environment.js +0 -8
  204. package/dist/interfaces/index.d.ts +0 -311
  205. package/dist/interfaces/index.js +0 -9
  206. package/dist/keys/index.d.ts +0 -1
  207. package/dist/keys/index.js +0 -8
  208. package/dist/mutators/RecordingMutation.d.ts +0 -36
  209. package/dist/mutators/RecordingMutation.js +0 -182
  210. package/dist/mutators/Transaction.d.ts +0 -40
  211. package/dist/mutators/Transaction.js +0 -58
  212. package/dist/mutators/UndoManager.d.ts +0 -258
  213. package/dist/mutators/UndoManager.js +0 -658
  214. package/dist/mutators/defineMutators.d.ts +0 -60
  215. package/dist/mutators/defineMutators.js +0 -18
  216. package/dist/mutators/inverseOp.d.ts +0 -126
  217. package/dist/mutators/inverseOp.js +0 -71
  218. package/dist/mutators/mutateActions.d.ts +0 -45
  219. package/dist/mutators/mutateActions.js +0 -105
  220. package/dist/mutators/readerActions.d.ts +0 -33
  221. package/dist/mutators/readerActions.js +0 -57
  222. package/dist/mutators/undoApply.d.ts +0 -51
  223. package/dist/mutators/undoApply.js +0 -117
  224. package/dist/policy/index.d.ts +0 -21
  225. package/dist/policy/index.js +0 -20
  226. package/dist/query/client.d.ts +0 -61
  227. package/dist/query/client.js +0 -137
  228. package/dist/query/types.d.ts +0 -85
  229. package/dist/query/types.js +0 -16
  230. package/dist/react/AbloProvider.d.ts +0 -230
  231. package/dist/react/AbloProvider.js +0 -455
  232. package/dist/react/ClientSideSuspense.d.ts +0 -36
  233. package/dist/react/ClientSideSuspense.js +0 -17
  234. package/dist/react/DefaultFallback.d.ts +0 -24
  235. package/dist/react/DefaultFallback.js +0 -43
  236. package/dist/react/context.d.ts +0 -55
  237. package/dist/react/context.js +0 -29
  238. package/dist/react/index.d.ts +0 -61
  239. package/dist/react/index.js +0 -66
  240. package/dist/react/internalContext.d.ts +0 -33
  241. package/dist/react/internalContext.js +0 -3
  242. package/dist/react/useAblo.d.ts +0 -75
  243. package/dist/react/useAblo.js +0 -102
  244. package/dist/react/useCurrentUserId.d.ts +0 -22
  245. package/dist/react/useCurrentUserId.js +0 -34
  246. package/dist/react/useErrorListener.d.ts +0 -20
  247. package/dist/react/useErrorListener.js +0 -38
  248. package/dist/react/useMutationFailureListener.d.ts +0 -26
  249. package/dist/react/useMutationFailureListener.js +0 -38
  250. package/dist/react/useMutators.d.ts +0 -56
  251. package/dist/react/useMutators.js +0 -84
  252. package/dist/react/useReactive.d.ts +0 -35
  253. package/dist/react/useReactive.js +0 -123
  254. package/dist/react/useSyncStatus.d.ts +0 -59
  255. package/dist/react/useSyncStatus.js +0 -76
  256. package/dist/react/useUndoScope.d.ts +0 -34
  257. package/dist/react/useUndoScope.js +0 -81
  258. package/dist/schema/coordination.d.ts +0 -112
  259. package/dist/schema/coordination.js +0 -129
  260. package/dist/schema/ddl.d.ts +0 -97
  261. package/dist/schema/ddl.js +0 -491
  262. package/dist/schema/ddlLock.d.ts +0 -35
  263. package/dist/schema/ddlLock.js +0 -46
  264. package/dist/schema/diff.d.ts +0 -225
  265. package/dist/schema/diff.js +0 -289
  266. package/dist/schema/generate.d.ts +0 -19
  267. package/dist/schema/generate.js +0 -86
  268. package/dist/schema/index.d.ts +0 -41
  269. package/dist/schema/index.js +0 -76
  270. package/dist/schema/queries.d.ts +0 -201
  271. package/dist/schema/queries.js +0 -144
  272. package/dist/schema/select.d.ts +0 -40
  273. package/dist/schema/select.js +0 -87
  274. package/dist/schema/serialize.d.ts +0 -115
  275. package/dist/schema/serialize.js +0 -262
  276. package/dist/schema/sugar.d.ts +0 -109
  277. package/dist/schema/sugar.js +0 -83
  278. package/dist/schema/syncDeltaRow.d.ts +0 -6
  279. package/dist/schema/syncDeltaRow.js +0 -6
  280. package/dist/server/adapter.d.ts +0 -173
  281. package/dist/server/adapter.js +0 -18
  282. package/dist/server/commit.d.ts +0 -107
  283. package/dist/server/commit.js +0 -1
  284. package/dist/server/index.d.ts +0 -14
  285. package/dist/server/index.js +0 -2
  286. package/dist/server/readConfig.d.ts +0 -80
  287. package/dist/server/readConfig.js +0 -8
  288. package/dist/server/storageMode.d.ts +0 -23
  289. package/dist/server/storageMode.js +0 -17
  290. package/dist/source/adapter.d.ts +0 -81
  291. package/dist/source/adapter.js +0 -22
  292. package/dist/source/adapters/drizzle.d.ts +0 -48
  293. package/dist/source/adapters/drizzle.js +0 -219
  294. package/dist/source/adapters/kysely.d.ts +0 -42
  295. package/dist/source/adapters/kysely.js +0 -205
  296. package/dist/source/adapters/kyselyMutationCore.d.ts +0 -76
  297. package/dist/source/adapters/kyselyMutationCore.js +0 -125
  298. package/dist/source/adapters/memory.d.ts +0 -13
  299. package/dist/source/adapters/memory.js +0 -130
  300. package/dist/source/adapters/prisma.d.ts +0 -63
  301. package/dist/source/adapters/prisma.js +0 -202
  302. package/dist/source/conformance.d.ts +0 -37
  303. package/dist/source/conformance.js +0 -215
  304. package/dist/source/connector.d.ts +0 -95
  305. package/dist/source/connector.js +0 -266
  306. package/dist/source/connectorProtocol.d.ts +0 -154
  307. package/dist/source/connectorProtocol.js +0 -163
  308. package/dist/source/contract.d.ts +0 -195
  309. package/dist/source/contract.js +0 -164
  310. package/dist/source/factory.d.ts +0 -92
  311. package/dist/source/factory.js +0 -286
  312. package/dist/source/footprint.d.ts +0 -111
  313. package/dist/source/footprint.js +0 -0
  314. package/dist/source/idempotency.d.ts +0 -61
  315. package/dist/source/idempotency.js +0 -144
  316. package/dist/source/index.d.ts +0 -23
  317. package/dist/source/index.js +0 -30
  318. package/dist/source/migrations.d.ts +0 -21
  319. package/dist/source/migrations.js +0 -103
  320. package/dist/source/next.d.ts +0 -32
  321. package/dist/source/next.js +0 -25
  322. package/dist/source/pushQueue.d.ts +0 -134
  323. package/dist/source/pushQueue.js +0 -256
  324. package/dist/source/signing.d.ts +0 -92
  325. package/dist/source/signing.js +0 -162
  326. package/dist/source/types.d.ts +0 -401
  327. package/dist/source/types.js +0 -59
  328. package/dist/stores/ObjectStore.d.ts +0 -115
  329. package/dist/stores/ObjectStore.js +0 -393
  330. package/dist/stores/ObjectStoreContract.d.ts +0 -38
  331. package/dist/stores/ObjectStoreContract.js +0 -1
  332. package/dist/stores/SyncActionStore.d.ts +0 -97
  333. package/dist/stores/SyncActionStore.js +0 -504
  334. package/dist/stores/syncAction.d.ts +0 -26
  335. package/dist/stores/syncAction.js +0 -16
  336. package/dist/surface.d.ts +0 -36
  337. package/dist/surface.js +0 -75
  338. package/dist/sync/BootstrapFetcher.d.ts +0 -280
  339. package/dist/sync/BootstrapFetcher.js +0 -962
  340. package/dist/sync/ConnectionManager.d.ts +0 -8
  341. package/dist/sync/ConnectionManager.js +0 -8
  342. package/dist/sync/OnDemandLoader.d.ts +0 -228
  343. package/dist/sync/OnDemandLoader.js +0 -742
  344. package/dist/sync/SubscriptionManager.d.ts +0 -159
  345. package/dist/sync/SubscriptionManager.js +0 -243
  346. package/dist/sync/SyncWebSocket.d.ts +0 -173
  347. package/dist/sync/SyncWebSocket.js +0 -438
  348. package/dist/sync/awaitClaimGrant.d.ts +0 -6
  349. package/dist/sync/awaitClaimGrant.js +0 -6
  350. package/dist/sync/bootstrapApply.d.ts +0 -70
  351. package/dist/sync/bootstrapApply.js +0 -73
  352. package/dist/sync/commitFrames.d.ts +0 -8
  353. package/dist/sync/commitFrames.js +0 -8
  354. package/dist/sync/contextPorts.d.ts +0 -18
  355. package/dist/sync/contextPorts.js +0 -31
  356. package/dist/sync/createClaimStream.d.ts +0 -7
  357. package/dist/sync/createClaimStream.js +0 -7
  358. package/dist/sync/createPresenceStream.d.ts +0 -69
  359. package/dist/sync/createPresenceStream.js +0 -200
  360. package/dist/sync/createSnapshot.d.ts +0 -29
  361. package/dist/sync/createSnapshot.js +0 -118
  362. package/dist/sync/credentialLifecycle.d.ts +0 -7
  363. package/dist/sync/credentialLifecycle.js +0 -7
  364. package/dist/sync/deltaPipeline.d.ts +0 -113
  365. package/dist/sync/deltaPipeline.js +0 -261
  366. package/dist/sync/groupChange.d.ts +0 -113
  367. package/dist/sync/groupChange.js +0 -242
  368. package/dist/sync/participants.d.ts +0 -115
  369. package/dist/sync/participants.js +0 -344
  370. package/dist/sync/persistedPrefix.d.ts +0 -12
  371. package/dist/sync/persistedPrefix.js +0 -22
  372. package/dist/sync/schemaDrift.d.ts +0 -55
  373. package/dist/sync/schemaDrift.js +0 -53
  374. package/dist/sync/schemas.d.ts +0 -70
  375. package/dist/sync/schemas.js +0 -94
  376. package/dist/sync/syncCursor.d.ts +0 -40
  377. package/dist/sync/syncCursor.js +0 -55
  378. package/dist/sync/syncPlan.d.ts +0 -54
  379. package/dist/sync/syncPlan.js +0 -50
  380. package/dist/sync/wsFrameHandlers.d.ts +0 -8
  381. package/dist/sync/wsFrameHandlers.js +0 -8
  382. package/dist/testing/fixtures/bootstrap.d.ts +0 -49
  383. package/dist/testing/fixtures/bootstrap.js +0 -59
  384. package/dist/testing/fixtures/deltas.d.ts +0 -83
  385. package/dist/testing/fixtures/deltas.js +0 -136
  386. package/dist/testing/fixtures/httpResponses.d.ts +0 -70
  387. package/dist/testing/fixtures/httpResponses.js +0 -90
  388. package/dist/testing/fixtures/models.d.ts +0 -83
  389. package/dist/testing/fixtures/models.js +0 -272
  390. package/dist/testing/helpers/reactWrapper.d.ts +0 -69
  391. package/dist/testing/helpers/reactWrapper.js +0 -67
  392. package/dist/testing/helpers/syncEngineHarness.d.ts +0 -54
  393. package/dist/testing/helpers/syncEngineHarness.js +0 -73
  394. package/dist/testing/helpers/wait.d.ts +0 -30
  395. package/dist/testing/helpers/wait.js +0 -49
  396. package/dist/testing/index.d.ts +0 -23
  397. package/dist/testing/index.js +0 -33
  398. package/dist/testing/mocks/FakeDatabase.d.ts +0 -18
  399. package/dist/testing/mocks/FakeDatabase.js +0 -10
  400. package/dist/testing/mocks/MockMutationExecutor.d.ts +0 -87
  401. package/dist/testing/mocks/MockMutationExecutor.js +0 -186
  402. package/dist/testing/mocks/MockNetworkMonitor.d.ts +0 -20
  403. package/dist/testing/mocks/MockNetworkMonitor.js +0 -46
  404. package/dist/testing/mocks/MockSyncContext.d.ts +0 -51
  405. package/dist/testing/mocks/MockSyncContext.js +0 -72
  406. package/dist/testing/mocks/MockSyncStore.d.ts +0 -88
  407. package/dist/testing/mocks/MockSyncStore.js +0 -171
  408. package/dist/testing/mocks/MockWebSocket.d.ts +0 -71
  409. package/dist/testing/mocks/MockWebSocket.js +0 -118
  410. package/dist/transaction/ablo.d.ts +0 -88
  411. package/dist/transaction/ablo.js +0 -33
  412. package/dist/transaction/auth/apiKey.d.ts +0 -152
  413. package/dist/transaction/auth/apiKey.js +0 -419
  414. package/dist/transaction/auth/bootstrapScope.d.ts +0 -15
  415. package/dist/transaction/auth/bootstrapScope.js +0 -1
  416. package/dist/transaction/auth/capability.d.ts +0 -177
  417. package/dist/transaction/auth/capability.js +0 -199
  418. package/dist/transaction/auth/credentialEndpoint.d.ts +0 -61
  419. package/dist/transaction/auth/credentialEndpoint.js +0 -86
  420. package/dist/transaction/auth/credentialPolicy.d.ts +0 -148
  421. package/dist/transaction/auth/credentialPolicy.js +0 -125
  422. package/dist/transaction/auth/credentialSource.d.ts +0 -30
  423. package/dist/transaction/auth/credentialSource.js +0 -55
  424. package/dist/transaction/auth/hostedEndpoints.d.ts +0 -21
  425. package/dist/transaction/auth/hostedEndpoints.js +0 -21
  426. package/dist/transaction/auth/identity.d.ts +0 -55
  427. package/dist/transaction/auth/identity.js +0 -210
  428. package/dist/transaction/auth/index.d.ts +0 -162
  429. package/dist/transaction/auth/index.js +0 -304
  430. package/dist/transaction/auth/schemas.d.ts +0 -59
  431. package/dist/transaction/auth/schemas.js +0 -85
  432. package/dist/transaction/auth/sessionMint.d.ts +0 -28
  433. package/dist/transaction/auth/sessionMint.js +0 -85
  434. package/dist/transaction/coordination/awaitClaimGrant.d.ts +0 -49
  435. package/dist/transaction/coordination/awaitClaimGrant.js +0 -112
  436. package/dist/transaction/coordination/claimHeartbeatLoop.d.ts +0 -50
  437. package/dist/transaction/coordination/claimHeartbeatLoop.js +0 -88
  438. package/dist/transaction/coordination/claimMeta.d.ts +0 -49
  439. package/dist/transaction/coordination/claimMeta.js +0 -52
  440. package/dist/transaction/coordination/createClaimStream.d.ts +0 -64
  441. package/dist/transaction/coordination/createClaimStream.js +0 -475
  442. package/dist/transaction/coordination/events.d.ts +0 -74
  443. package/dist/transaction/coordination/events.js +0 -7
  444. package/dist/transaction/coordination/index.d.ts +0 -19
  445. package/dist/transaction/coordination/index.js +0 -44
  446. package/dist/transaction/coordination/locator.d.ts +0 -83
  447. package/dist/transaction/coordination/locator.js +0 -82
  448. package/dist/transaction/coordination/schema.d.ts +0 -1473
  449. package/dist/transaction/coordination/schema.js +0 -1013
  450. package/dist/transaction/coordination/targetConflict.d.ts +0 -2
  451. package/dist/transaction/coordination/targetConflict.js +0 -103
  452. package/dist/transaction/coordination/trace.d.ts +0 -78
  453. package/dist/transaction/coordination/trace.js +0 -138
  454. package/dist/transaction/durableWrites.d.ts +0 -62
  455. package/dist/transaction/durableWrites.js +0 -71
  456. package/dist/transaction/environment.d.ts +0 -105
  457. package/dist/transaction/environment.js +0 -108
  458. package/dist/transaction/errorCodes.d.ts +0 -403
  459. package/dist/transaction/errorCodes.js +0 -480
  460. package/dist/transaction/errors.d.ts +0 -428
  461. package/dist/transaction/errors.js +0 -686
  462. package/dist/transaction/index.d.ts +0 -20
  463. package/dist/transaction/index.js +0 -20
  464. package/dist/transaction/keys/index.d.ts +0 -87
  465. package/dist/transaction/keys/index.js +0 -207
  466. package/dist/transaction/log/syncDeltaRow.d.ts +0 -158
  467. package/dist/transaction/log/syncDeltaRow.js +0 -95
  468. package/dist/transaction/logPosition.d.ts +0 -97
  469. package/dist/transaction/logPosition.js +0 -125
  470. package/dist/transaction/logger.d.ts +0 -16
  471. package/dist/transaction/logger.js +0 -7
  472. package/dist/transaction/observability.d.ts +0 -53
  473. package/dist/transaction/observability.js +0 -19
  474. package/dist/transaction/persistence.d.ts +0 -12
  475. package/dist/transaction/persistence.js +0 -11
  476. package/dist/transaction/plugin.d.ts +0 -192
  477. package/dist/transaction/plugin.js +0 -87
  478. package/dist/transaction/policy/types.d.ts +0 -217
  479. package/dist/transaction/policy/types.js +0 -126
  480. package/dist/transaction/resources/functionalUpdate.d.ts +0 -79
  481. package/dist/transaction/resources/functionalUpdate.js +0 -87
  482. package/dist/transaction/resources/httpResources.d.ts +0 -266
  483. package/dist/transaction/resources/httpResources.js +0 -7
  484. package/dist/transaction/resources/modelOperations.d.ts +0 -319
  485. package/dist/transaction/resources/modelOperations.js +0 -12
  486. package/dist/transaction/resources/mutationOptions.d.ts +0 -66
  487. package/dist/transaction/resources/mutationOptions.js +0 -9
  488. package/dist/transaction/resources/where.d.ts +0 -85
  489. package/dist/transaction/resources/where.js +0 -70
  490. package/dist/transaction/resources/writeOptionsSchema.d.ts +0 -47
  491. package/dist/transaction/resources/writeOptionsSchema.js +0 -73
  492. package/dist/transaction/schema/field.d.ts +0 -126
  493. package/dist/transaction/schema/field.js +0 -265
  494. package/dist/transaction/schema/loadStrategy.d.ts +0 -45
  495. package/dist/transaction/schema/loadStrategy.js +0 -46
  496. package/dist/transaction/schema/model.d.ts +0 -379
  497. package/dist/transaction/schema/model.js +0 -123
  498. package/dist/transaction/schema/openapi.d.ts +0 -57
  499. package/dist/transaction/schema/openapi.js +0 -340
  500. package/dist/transaction/schema/relation.d.ts +0 -199
  501. package/dist/transaction/schema/relation.js +0 -104
  502. package/dist/transaction/schema/residency.d.ts +0 -29
  503. package/dist/transaction/schema/residency.js +0 -25
  504. package/dist/transaction/schema/roles.d.ts +0 -249
  505. package/dist/transaction/schema/roles.js +0 -230
  506. package/dist/transaction/schema/schema.d.ts +0 -324
  507. package/dist/transaction/schema/schema.js +0 -305
  508. package/dist/transaction/schema/tenancy.d.ts +0 -139
  509. package/dist/transaction/schema/tenancy.js +0 -190
  510. package/dist/transaction/transactionLayer.d.ts +0 -82
  511. package/dist/transaction/transactionLayer.js +0 -24
  512. package/dist/transaction/transactions/settlement/commitEnvelope.d.ts +0 -143
  513. package/dist/transaction/transactions/settlement/commitEnvelope.js +0 -161
  514. package/dist/transaction/transactions/settlement/httpCommitEnvelope.d.ts +0 -53
  515. package/dist/transaction/transactions/settlement/httpCommitEnvelope.js +0 -207
  516. package/dist/transaction/transactions/settlement/idempotencyKey.d.ts +0 -10
  517. package/dist/transaction/transactions/settlement/idempotencyKey.js +0 -9
  518. package/dist/transaction/transactions/settlement/pendingWrite.d.ts +0 -112
  519. package/dist/transaction/transactions/settlement/pendingWrite.js +0 -20
  520. package/dist/transaction/transport/commitFrames.d.ts +0 -90
  521. package/dist/transaction/transport/commitFrames.js +0 -134
  522. package/dist/transaction/transport/connectionManager.d.ts +0 -215
  523. package/dist/transaction/transport/connectionManager.js +0 -673
  524. package/dist/transaction/transport/credentialLifecycle.d.ts +0 -177
  525. package/dist/transaction/transport/credentialLifecycle.js +0 -324
  526. package/dist/transaction/transport/heartbeat.d.ts +0 -65
  527. package/dist/transaction/transport/heartbeat.js +0 -93
  528. package/dist/transaction/transport/httpClient.d.ts +0 -123
  529. package/dist/transaction/transport/httpClient.js +0 -145
  530. package/dist/transaction/transport/httpOptions.d.ts +0 -33
  531. package/dist/transaction/transport/httpOptions.js +0 -12
  532. package/dist/transaction/transport/httpTransport.d.ts +0 -8
  533. package/dist/transaction/transport/httpTransport.js +0 -1276
  534. package/dist/transaction/transport/networkProbe.d.ts +0 -84
  535. package/dist/transaction/transport/networkProbe.js +0 -207
  536. package/dist/transaction/transport/wsFrameHandlers.d.ts +0 -128
  537. package/dist/transaction/transport/wsFrameHandlers.js +0 -429
  538. package/dist/transaction/transport/wsTransport.d.ts +0 -576
  539. package/dist/transaction/transport/wsTransport.js +0 -1017
  540. package/dist/transaction/types/assertExact.d.ts +0 -17
  541. package/dist/transaction/types/assertExact.js +0 -1
  542. package/dist/transaction/types/global.d.ts +0 -107
  543. package/dist/transaction/types/global.js +0 -40
  544. package/dist/transaction/types/index.d.ts +0 -205
  545. package/dist/transaction/types/index.js +0 -56
  546. package/dist/transaction/types/modelData.d.ts +0 -10
  547. package/dist/transaction/types/modelData.js +0 -9
  548. package/dist/transaction/types/participant.d.ts +0 -20
  549. package/dist/transaction/types/participant.js +0 -10
  550. package/dist/transaction/types/streams.d.ts +0 -540
  551. package/dist/transaction/types/streams.js +0 -11
  552. package/dist/transaction/utils/asyncIterator.d.ts +0 -34
  553. package/dist/transaction/utils/asyncIterator.js +0 -135
  554. package/dist/transaction/utils/duration.d.ts +0 -25
  555. package/dist/transaction/utils/duration.js +0 -45
  556. package/dist/transaction/utils/json.d.ts +0 -57
  557. package/dist/transaction/utils/json.js +0 -276
  558. package/dist/transaction/wire/accountResponses.d.ts +0 -351
  559. package/dist/transaction/wire/accountResponses.js +0 -255
  560. package/dist/transaction/wire/auth.d.ts +0 -49
  561. package/dist/transaction/wire/auth.js +0 -57
  562. package/dist/transaction/wire/bootstrapReason.d.ts +0 -9
  563. package/dist/transaction/wire/bootstrapReason.js +0 -8
  564. package/dist/transaction/wire/claimEvent.d.ts +0 -76
  565. package/dist/transaction/wire/claimEvent.js +0 -73
  566. package/dist/transaction/wire/claims.d.ts +0 -463
  567. package/dist/transaction/wire/claims.js +0 -229
  568. package/dist/transaction/wire/commit.d.ts +0 -603
  569. package/dist/transaction/wire/commit.js +0 -321
  570. package/dist/transaction/wire/delta.d.ts +0 -250
  571. package/dist/transaction/wire/delta.js +0 -147
  572. package/dist/transaction/wire/errorEnvelope.d.ts +0 -72
  573. package/dist/transaction/wire/errorEnvelope.js +0 -123
  574. package/dist/transaction/wire/feedCursor.d.ts +0 -60
  575. package/dist/transaction/wire/feedCursor.js +0 -82
  576. package/dist/transaction/wire/feedEvent.d.ts +0 -177
  577. package/dist/transaction/wire/feedEvent.js +0 -39
  578. package/dist/transaction/wire/frames.d.ts +0 -194
  579. package/dist/transaction/wire/frames.js +0 -50
  580. package/dist/transaction/wire/inboundFrames.d.ts +0 -552
  581. package/dist/transaction/wire/inboundFrames.js +0 -116
  582. package/dist/transaction/wire/index.d.ts +0 -50
  583. package/dist/transaction/wire/index.js +0 -74
  584. package/dist/transaction/wire/listEnvelope.d.ts +0 -37
  585. package/dist/transaction/wire/listEnvelope.js +0 -42
  586. package/dist/transaction/wire/modelResponses.d.ts +0 -85
  587. package/dist/transaction/wire/modelResponses.js +0 -43
  588. package/dist/transaction/wire/protocol.d.ts +0 -38
  589. package/dist/transaction/wire/protocol.js +0 -38
  590. package/dist/transaction/wire/protocolVersion.d.ts +0 -73
  591. package/dist/transaction/wire/protocolVersion.js +0 -83
  592. package/dist/transactions/mutations/MutationQueue.d.ts +0 -655
  593. package/dist/transactions/mutations/MutationQueue.js +0 -2797
  594. package/dist/transactions/mutations/MutationStore.d.ts +0 -20
  595. package/dist/transactions/mutations/MutationStore.js +0 -53
  596. package/dist/transactions/mutations/UnconfirmedWrites.d.ts +0 -82
  597. package/dist/transactions/mutations/UnconfirmedWrites.js +0 -104
  598. package/dist/transactions/mutations/coalesceRules.d.ts +0 -58
  599. package/dist/transactions/mutations/coalesceRules.js +0 -140
  600. package/dist/transactions/mutations/commitLatency.d.ts +0 -52
  601. package/dist/transactions/mutations/commitLatency.js +0 -130
  602. package/dist/transactions/mutations/commitOutboxStore.d.ts +0 -28
  603. package/dist/transactions/mutations/commitOutboxStore.js +0 -26
  604. package/dist/transactions/mutations/commitPayload.d.ts +0 -164
  605. package/dist/transactions/mutations/commitPayload.js +0 -152
  606. package/dist/transactions/mutations/deltaConfirmation.d.ts +0 -59
  607. package/dist/transactions/mutations/deltaConfirmation.js +0 -233
  608. package/dist/transactions/mutations/durableWriteStore.d.ts +0 -14
  609. package/dist/transactions/mutations/durableWriteStore.js +0 -12
  610. package/dist/transactions/mutations/optimisticApply.d.ts +0 -49
  611. package/dist/transactions/mutations/optimisticApply.js +0 -65
  612. package/dist/transactions/mutations/replayValidation.d.ts +0 -186
  613. package/dist/transactions/mutations/replayValidation.js +0 -163
  614. package/dist/utils/mobxSetup.d.ts +0 -53
  615. package/dist/utils/mobxSetup.js +0 -330
  616. package/dist/webhooks/events.d.ts +0 -43
  617. package/dist/webhooks/events.js +0 -42
  618. package/dist/webhooks/index.d.ts +0 -8
  619. package/dist/webhooks/index.js +0 -8
  620. package/dist/wire/index.d.ts +0 -1
  621. package/dist/wire/index.js +0 -8
  622. package/docs/interaction-model.md +0 -99
@@ -1,266 +0,0 @@
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 { OnStaleMode, ReadDependency, TrackDependency } from '../coordination/schema.js';
8
- import type { ClientCommitReceipt, CommitWait } from '../wire/commit.js';
9
- export type { CommitWait };
10
- import type { ModelTarget, ModelClaim } from '../coordination/schema.js';
11
- export type { ModelTarget, ModelClaim };
12
- import type { ResolveClaimMeta } from '../types/global.js';
13
- import type { SchemaRecord } from '../schema/schema.js';
14
- import type { SyncGroupInput } from '../schema/roles.js';
15
- import type { CapabilityCan, CapabilityOperation, CapabilityScope } from '../auth/capability.js';
16
- import type { Claim, ClaimStream, ClaimWaitOptions, Duration, HeldClaim } from '../types/streams.js';
17
- import type { ClaimOptions, ClaimParams, ClaimReadApi, AwaitedClaimMethod } from './modelOperations.js';
18
- /**
19
- * The operations available on each model in the sync engine:
20
- * `retrieve({ id })` — an async single-row server read
21
- * `list({ where })` — an async collection server read
22
- * `local.retrieve(id)` / `local.list(...)` / `local.count(...)` — synchronous local reads
23
- * `create({ data })` / `update({ id, data })` / `delete({ id })` — writes
24
- * `claim({ id })` — a durable claim handle for coordinated writes
25
- */
26
- export type ModelOperationAction = 'create' | 'update' | 'delete' | 'archive' | 'unarchive';
27
- export type IfClaimedPolicy = 'return' | 'fail';
28
- export interface ClaimedOptions {
29
- /**
30
- * What to do when another participant has claimed the target: `return` lets
31
- * the read proceed; `fail` throws `AbloClaimedError`. Inspect claim state via
32
- * `ablo.<model>.claim.state({ id })`. Waiting is a claim-side concern — take
33
- * `ablo.<model>.claim({ id })` (it queues fairly); reads never block.
34
- */
35
- readonly ifClaimed?: IfClaimedPolicy;
36
- }
37
- export type { ClaimWaitOptions } from '../types/streams.js';
38
- export interface ModelReadOptions extends ClaimedOptions {
39
- }
40
- /**
41
- * The target a caller names when creating a claim: {@link ModelTarget} with its
42
- * one caller-authored member typed — `meta` is the shape declared on
43
- * `Register`'s `ClaimMeta` slot, the same declaration every reader of the claim
44
- * is given back.
45
- *
46
- * Derived rather than restated, and narrowed only here: `modelTargetSchema`
47
- * keeps parsing `meta` as an open record, because a peer on a newer build must
48
- * still be understood. The wire stays permissive; the DTO the caller writes
49
- * does not.
50
- */
51
- export type ModelTargetInput = Omit<ModelTarget, 'meta'> & {
52
- readonly meta?: ResolveClaimMeta;
53
- };
54
- export interface ClaimCreateOptions {
55
- readonly target: ModelTargetInput;
56
- /** Peer-visible description of the work — the same field on every claim
57
- * surface. Defaults to `'editing'` when omitted. */
58
- readonly description?: string;
59
- readonly ttl?: Duration;
60
- /**
61
- * Join the server's fair FIFO queue when the target is already claimed,
62
- * rather than failing immediately. `create` then resolves only once the
63
- * lease is actually ours (the server pushes `claim_acquired` if the target
64
- * was free, or `claim_granted` when we reach the head of the line). Without
65
- * this, a contended claim throws. Used by `ablo.<model>.claim` so writers
66
- * serialize instead of racing.
67
- */
68
- readonly queue?: boolean;
69
- /** Cap on how long to wait for a queued grant before rejecting. */
70
- readonly waitTimeoutMs?: number;
71
- /**
72
- * Backpressure: reject with `AbloClaimedError('queue_too_deep')` instead of
73
- * waiting if the queue is already `>= maxQueueDepth` when we join.
74
- */
75
- readonly maxQueueDepth?: number;
76
- }
77
- export interface CommitOperationInput {
78
- readonly action: ModelOperationAction;
79
- /** The model name — matches `ablo.<model>` and the schema's `model()`. */
80
- readonly model: string;
81
- readonly id?: string | null;
82
- readonly data?: Record<string, unknown> | null;
83
- readonly transactionId?: string | null;
84
- readonly readAt?: number | null;
85
- readonly onStale?: OnStaleMode | null;
86
- /** Fencing token (Option B) from the batch's claim handle; server-validated. */
87
- readonly fenceToken?: number | null;
88
- }
89
- export interface CommitCreateOptions {
90
- readonly idempotencyKey?: string | null;
91
- readonly readAt?: number | null;
92
- readonly onStale?: OnStaleMode | null;
93
- /**
94
- * A claim handle from `ablo.<model>.claim({ id })` (or the HTTP claim
95
- * surface). Same vocabulary as the per-model writes: the handle's
96
- * snapshot watermark becomes the batch `readAt` default and `onStale`
97
- * defaults to `'reject'`, so a commit that follows a claim is guarded
98
- * against concurrent edits without re-stating the watermark by hand.
99
- * Explicit `readAt`/`onStale` on the options win.
100
- */
101
- readonly claim?: Claim | null;
102
- /** One atomic batch. Use a one-element array for a single operation. */
103
- readonly operations: readonly CommitOperationInput[];
104
- readonly wait?: CommitWait;
105
- /**
106
- * The batch premise — the "did anything I looked at change?" guard.
107
- * Declare the rows (`{ model, id, readAt, fields? }`) or sync groups
108
- * (`{ group, readAt }`, for example `report:abc`) this batch was premised on; the
109
- * server checks that none moved since `readAt` and fires the entry's `onStale`
110
- * over the batch. This is distinct from the write-target `readAt`: it guards what
111
- * you read, not what you write.
112
- */
113
- readonly reads?: readonly ReadDependency[] | null;
114
- /**
115
- * Durable premises to register as part of this batch — the persisted
116
- * sibling of `reads`. Where `reads` guards only this commit, a `track` entry
117
- * (`{ model, id, readAt? }` for a row or `{ group, readAt? }` for a sync group)
118
- * lives on past it: a later matching change rides back on a future receipt's
119
- * `notifications`. A track-only batch (just `track`, an empty `operations`) is
120
- * the batch form of `ablo.<model>.track()`.
121
- */
122
- readonly track?: readonly TrackDependency[] | null;
123
- }
124
- /** Public projection inferred from the canonical runtime schema. */
125
- export type CommitReceipt = ClientCommitReceipt;
126
- export interface CommitResource {
127
- create(options: CommitCreateOptions): Promise<CommitReceipt>;
128
- }
129
- export interface ClaimResource extends ClaimStream {
130
- create(options: ClaimCreateOptions): Promise<Claim>;
131
- list(target?: Partial<ModelTarget>): readonly ModelClaim[];
132
- waitFor(target: Partial<ModelTarget>, options?: ClaimWaitOptions): Promise<void>;
133
- }
134
- export interface ModelMutationOptions extends ClaimedOptions {
135
- readonly claimRef?: string | {
136
- readonly id: string;
137
- } | null;
138
- readonly idempotencyKey?: string | null;
139
- readonly readAt?: number | null;
140
- readonly onStale?: OnStaleMode | null;
141
- readonly wait?: CommitWait;
142
- readonly claim?: Claim | ClaimOptions | null;
143
- /** Fencing token (Option B) from the claim; server-validated at commit. */
144
- readonly fenceToken?: number | null;
145
- }
146
- /**
147
- * The stateless HTTP claim surface. Most code puts a `claim` directly on the write
148
- * (`update({ id, data, claim })`) and lets the SDK release it; reach for this
149
- * namespace for multi-step handles and coordination screens.
150
- *
151
- * It is the same surface as the reactive claim API, but because every read is a
152
- * server round-trip, `state`, `queue`, and `reorder` are awaited here. The
153
- * WebSocket client resolves those synchronously from its local cache, which is what
154
- * lets it read a claim's state inside a React render; a stateless client has no
155
- * cache to read, so the promise is unavoidable.
156
- *
157
- * It is derived from `ClaimReadApi` through {@link AwaitedClaimMethod} so the two
158
- * transports cannot drift: the only difference is the promise wrapper that
159
- * statelessness forces. `claim({ id })` is identical on both (already async);
160
- * `state`, `queue`, `reorder`, and `release` are the awaited form.
161
- */
162
- export type HttpClaimApi<T = Record<string, unknown>> = ((params: ClaimParams<T>) => Promise<HeldClaim<T>>) & {
163
- [K in keyof ClaimReadApi<T>]: AwaitedClaimMethod<ClaimReadApi<T>[K]>;
164
- };
165
- /** A single data operation a scoped **agent** session may perform on a model.
166
- * The SDK-facing name for {@link CapabilityOperation}; the vocabulary itself is
167
- * declared once, as a schema, in `auth/capability.ts`. */
168
- export type SessionOperation = CapabilityOperation;
169
- /** Parameters for minting an end-user session — full data authority within the
170
- * organization. Mints an `ek_` token. `user.id` is your end user's id from your
171
- * own identity provider and becomes the session's `participantId`; Ablo does not
172
- * model your users, so it is treated as an opaque string at the trust boundary. */
173
- export interface CreateUserSessionParams {
174
- /** Your end user. `id` becomes the token's `participantId`. */
175
- user: {
176
- id: string;
177
- };
178
- /** Mint the session into this organization instead of the key's own — for a
179
- * platform that serves many tenants from one backend. Requires the `sk_` key to
180
- * carry the `ephemeral:mint-any-org` scope; omit it for the normal
181
- * single-tenant case. */
182
- organizationId?: string;
183
- /** Sync groups this session may subscribe to — typed (`'default'` or
184
- * `<namespace>:<id>`; build with `syncGroup(kind, id)` from
185
- * `@abloatai/ablo/schema`). Omit for the server default:
186
- * `[org:<your org>, user:<user.id>]`. */
187
- syncGroups?: readonly SyncGroupInput[];
188
- /** Token lifetime in seconds. Defaults to 900 (15 minutes). */
189
- ttlSeconds?: number;
190
- /** Opaque identity blob echoed back to the client as `ablo.user`. */
191
- userMeta?: Record<string, unknown>;
192
- agent?: never;
193
- can?: never;
194
- }
195
- /** Mint params for a scoped **agent** session — mints a restricted `rk_` token
196
- * gated to exactly the operations named in `can`. `can` is typed off your
197
- * schema (no magic `'task.update'` strings): `{ Task: ['update'], Report: ['read'] }`
198
- * — the SDK serializes each entry to the wire allowlist (`task.update`). */
199
- export interface CreateAgentSessionParams<S extends SchemaRecord> {
200
- /** Your agent. `id` becomes the token's `participantId`. */
201
- agent: {
202
- id: string;
203
- };
204
- /** Per-model operation allowlist, typed against the schema's model names. */
205
- can: CapabilityCan<S>;
206
- /** Sync groups this session may subscribe to — typed (`'default'` or
207
- * `<namespace>:<id>`; build with `syncGroup(kind, id)` from
208
- * `@abloatai/ablo/schema`). Omit for the server default: the org
209
- * anchor (`org:<your org>`) + the agent's own anchor. */
210
- syncGroups?: readonly SyncGroupInput[];
211
- /** Token lifetime in seconds. Defaults to 900 (15 minutes). */
212
- ttlSeconds?: number;
213
- /** Opaque identity blob echoed back to the client as `ablo.agent`. */
214
- userMeta?: Record<string, unknown>;
215
- user?: never;
216
- }
217
- /** Params for {@link Ablo.sessions}.create — a discriminated union: pass
218
- * `{ user }` for a full-authority end-user session (`ek_`) or `{ agent, can }`
219
- * for a scoped agent session (`rk_`). */
220
- export type CreateSessionParams<S extends SchemaRecord> = CreateUserSessionParams | CreateAgentSessionParams<S>;
221
- /** Params for {@link Ablo.agents}.create — a flattened agent descriptor (no
222
- * `{ agent }` discriminator: `agents.create` only ever mints an agent). Unlike
223
- * {@link CreateSessionParams} it resolves to a connected, scoped {@link Ablo}
224
- * client rather than a raw token. */
225
- export interface CreateAgentClientParams<S extends SchemaRecord> {
226
- /** The wire participant identity (`agent:<id>`) that claim exclusion and the
227
- * FIFO queue gate on. Omit it to get a fresh random id — a distinct, independent
228
- * participant, which is the default and what you want for concurrent agents.
229
- * Pass a stable string only when one logical agent must re-attach to its own
230
- * held claims across reconnects or restarts. */
231
- id?: string;
232
- /** A human-readable label for logs and attribution (carried in `userMeta.name`).
233
- * It is independent of `id`: two agents that share a `name` still receive
234
- * distinct ids and coordinate as separate participants — `name` never derives or
235
- * collapses identity. */
236
- name?: string;
237
- /** Per-model operation allowlist, typed against the schema's model names. */
238
- can: CapabilityCan<S>;
239
- /** Sync groups this agent may subscribe to — typed (`'default'` or
240
- * `<namespace>:<id>`). Omit for the server default (org anchor + the
241
- * agent's own anchor). */
242
- syncGroups?: readonly SyncGroupInput[];
243
- /** Token lifetime in seconds. Defaults to 900 (15 minutes); the returned client
244
- * re-mints before expiry, so a long-running agent never handles rotation
245
- * itself. */
246
- ttlSeconds?: number;
247
- /** Extra opaque identity blob echoed on the session scope. Merged with
248
- * `name` (the `name` param wins if you also set `userMeta.name`). */
249
- userMeta?: Record<string, unknown>;
250
- }
251
- /** A minted session. `token` is the secret the holder presents as its bearer. */
252
- export interface AbloSession {
253
- object: 'session';
254
- /** Stable id of the minted credential (for revocation). */
255
- id: string;
256
- /** The short-lived session token — `ek_` for a `{ user }` session, `rk_`
257
- * for an `{ agent }` session. Hand this to the participant's runtime. */
258
- token: string;
259
- /** ISO-8601 expiry. */
260
- expiresAt: string;
261
- organizationId: string;
262
- /** The grant this token carries, on both axes — the same shape the key row
263
- * stores and the gates enforce. */
264
- scope: CapabilityScope;
265
- userMeta: Record<string, unknown>;
266
- }
@@ -1,7 +0,0 @@
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 {};
@@ -1,319 +0,0 @@
1
- /**
2
- * The request contract for `ablo.<model>` — the option and parameter shapes a
3
- * caller passes to a read, a write, or a claim.
4
- *
5
- * These types describe the *change or the query being requested*, never a local
6
- * copy of the rows it touches, so they sit in the settlement core and are shared
7
- * by every transport and every caller (ADR 0013 §4, ADR 0016). The factory that
8
- * binds them to reactive model instances — `createModelProxy` — stays with the
9
- * reactive consumer, along with `ModelOperations` and `ModelCollaboration`,
10
- * which reference the live participant handle.
11
- */
12
- import type { ModelScope } from '../types/index.js';
13
- import type { ResolveClaimMeta } from '../types/global.js';
14
- import type { AbloClaimedError } from '../errors.js';
15
- import type { StaleNotification, TrackDependency } from '../coordination/schema.js';
16
- import type { Duration } from '../utils/duration.js';
17
- import type { Claim, ClaimHeartbeat, ClaimHeartbeatOptions, HeldClaim, HeldLease, TargetRange } from '../types/streams.js';
18
- import type { MutationOptions } from './mutationOptions.js';
19
- import type { LoadWhere } from './where.js';
20
- /**
21
- * A lifecycle filter, accepted either as the enum or as its bare string. The
22
- * string arm is a template projection of the enum rather than a second list, so
23
- * a scope added to {@link ModelScope} is spellable both ways at once.
24
- */
25
- export type ModelListScope = ModelScope | `${ModelScope}`;
26
- /**
27
- * Options for `track({ id })` — register a durable premise on a row.
28
- *
29
- * Derived from the wire's row-form {@link TrackDependency} rather than restated
30
- * beside it: the caller names the row and, optionally, the watermark it is
31
- * premised on, while `model` comes from the proxy the call was made on. Adding
32
- * a field to the dependency therefore reaches this surface automatically, and
33
- * removing one stops the callers compiling.
34
- *
35
- * On `readAt`: omit it to baseline at the current head — "tell me about
36
- * anything from here on". Pass a known watermark (the one you read the row at)
37
- * to also catch a change that landed between that read and this call.
38
- */
39
- export type ModelTrackParams = Omit<Extract<TrackDependency, {
40
- model: string;
41
- }>, 'model'>;
42
- /** The result of `track({ id })`. */
43
- export interface ModelTrackResult {
44
- /**
45
- * Tracks that had ALREADY fired at registration time — a change matching an
46
- * open track that landed before this call. Present only when something was
47
- * already stale; the ongoing signal arrives on the receipts of later commits.
48
- */
49
- notifications?: StaleNotification[];
50
- }
51
- /** Options for the synchronous local-graph reads `local.list` and `onChange` —
52
- * a JavaScript `filter`, an equality `where`, and a lifecycle `state`. This is
53
- * the local, reactive axis; contrast {@link ServerReadOptions}, the
54
- * asynchronous server axis. */
55
- export interface LocalReadOptions<T> {
56
- where?: Partial<T>;
57
- /** Arbitrary local predicate. Applied after `where`. */
58
- filter?: (entity: T) => boolean;
59
- orderBy?: {
60
- [K in keyof T]?: 'asc' | 'desc';
61
- };
62
- limit?: number;
63
- offset?: number;
64
- /** Lifecycle filter — `live` (the default), `archived`, or `all`. Named
65
- * `state` so it does not collide with the sync-group `scope`. */
66
- state?: ModelListScope;
67
- }
68
- export type LocalCountOptions<T> = Pick<LocalReadOptions<T>, 'where' | 'filter' | 'state'>;
69
- /** Options for the asynchronous server reads `retrieve` and `list` — the
70
- * operator `where` filter, `type`, and `expand`. This is the server axis;
71
- * contrast {@link LocalReadOptions}, the local, reactive axis. */
72
- export interface ServerReadOptions<T> {
73
- /**
74
- * Filter for the lookup. Accepts two forms:
75
- * - object form — `{ name: 'foo' }`: equality, where an array value means `IN`
76
- * - tuple form — `[['name', 'ILIKE', '%Goldman%']]`: explicit operators
77
- *
78
- * See {@link LoadWhere} for the full grammar. The wire protocol matches on AND
79
- * only; for OR semantics, run two `list()` calls and union the results.
80
- */
81
- where?: LoadWhere<T>;
82
- orderBy?: {
83
- [K in keyof T]?: 'asc' | 'desc';
84
- };
85
- limit?: number;
86
- /**
87
- * `complete` waits for the server. `unknown` returns whatever is local
88
- * immediately and refreshes in the background.
89
- */
90
- type?: 'complete' | 'unknown';
91
- /**
92
- * Schema-declared relation names to hydrate alongside the primary
93
- * rows. The server's compiler resolves each name via the schema's
94
- * relation metadata (`relation.belongsTo` / `relation.hasMany`)
95
- * and emits the JOIN.
96
- */
97
- expand?: readonly string[];
98
- }
99
- /** Options for the single-row async server read `retrieve({ id })`. A subset of
100
- * {@link ServerReadOptions} — `where`/`limit`/`orderBy` are fixed by the id. */
101
- export type ServerRetrieveOptions = Pick<ServerReadOptions<unknown>, 'type' | 'expand'>;
102
- export interface ClaimTargetOptions<T = Record<string, unknown>> {
103
- /** Peer-visible description of the work being performed — the sentence a
104
- * contending participant reads to decide whether to wait, work elsewhere, or
105
- * move on. Defaults to `'editing'`. The same field on every claim surface. */
106
- description?: string;
107
- /** Field-level target, for fine-grained claimed-state badges. */
108
- field?: string;
109
- /**
110
- * Several named parts of the row at once. Claims conflict where their sets
111
- * intersect, so two holders on disjoint parts do not wait for each other.
112
- * Prefer this to packing names into `field`, which compares as one opaque
113
- * string and lets overlapping sets both be granted.
114
- */
115
- fields?: readonly string[];
116
- /** Optional path for document/file-like targets. */
117
- path?: string;
118
- /** Optional range for document/file-like targets. */
119
- range?: TargetRange;
120
- /**
121
- * App-defined structured metadata, carried verbatim to every participant
122
- * that observes the claim. Declare its shape once, on `Register`'s
123
- * `ClaimMeta` slot, and what you write here is what every reader is typed to
124
- * find — the write side and the read side are the same declaration.
125
- */
126
- meta?: ResolveClaimMeta;
127
- /** Crash-cleanup TTL — the claim auto-releases if the holder dies. */
128
- ttl?: Duration;
129
- /**
130
- * Behavior under contention. `true` (the default) queues behind the current
131
- * holder and resolves once the row is yours. `false` is fail-fast: if another
132
- * participant already holds the row, it rejects immediately with
133
- * {@link AbloClaimedError} instead of waiting. Use `false` to deduplicate
134
- * distributed work ("if someone else has this job, skip it"), where waiting
135
- * would mean double-processing.
136
- *
137
- * The high-level typed claim defaults this on because it serializes writers;
138
- * the low-level lease and the HTTP client default it off, since they resolve
139
- * immediately and cannot transparently wait for a grant.
140
- */
141
- queue?: boolean;
142
- /**
143
- * Backpressure: queue, but not behind too many others. If the server reports a
144
- * position at or beyond `maxQueueDepth` when the client joins the line, it
145
- * rejects with {@link AbloClaimedError} (`queue_too_deep`) instead of waiting.
146
- * Omit to wait however deep the queue is.
147
- */
148
- maxQueueDepth?: number;
149
- /**
150
- * Keep the lease alive for the duration of real work by beating on a
151
- * cadence — the pattern for background workers whose task outlives the
152
- * crash-cleanup TTL. `true` beats every third of the TTL (so two beats can
153
- * fail before the lease is at risk, and a crashed worker's lease still
154
- * lapses within one beat window); a duration such as `'2m'` sets the
155
- * cadence explicitly. The loop stops on release. A beat answered with a
156
- * definitive loss stops the loop and calls {@link onHeartbeatLost}; you can
157
- * also beat manually with `held.heartbeat()`.
158
- */
159
- heartbeat?: true | Duration;
160
- /**
161
- * Called once if the auto-heartbeat learns the lease is no longer yours
162
- * (expired and possibly granted onward). The loop has already stopped;
163
- * abandon the work or re-claim. Any write attempted under the old lease is
164
- * independently rejected by its `readAt` guard.
165
- */
166
- onHeartbeatLost?: (error: AbloClaimedError) => void;
167
- /**
168
- * Called after every successful beat (manual or auto) with the server's
169
- * answer — chiefly `queueDepth`, the number of participants waiting in
170
- * line behind this lease. A worker that can checkpoint may read pressure
171
- * here and release early when others wait.
172
- */
173
- onHeartbeat?(beat: ClaimHeartbeat): void;
174
- }
175
- /** Options for `claim({ id, ... })`. */
176
- export interface ClaimParams<T = Record<string, unknown>> extends ClaimTargetOptions<T> {
177
- readonly id: string;
178
- }
179
- export interface ClaimLookupParams<T = Record<string, unknown>> {
180
- readonly id: string;
181
- readonly field?: string;
182
- }
183
- export interface ClaimReorderParams<T = Record<string, unknown>> extends ClaimLookupParams<T> {
184
- readonly order: readonly Claim[];
185
- }
186
- /**
187
- * A claim handle: the held entity data plus an explicit release hook.
188
- *
189
- * ```ts
190
- * const claim = await ablo.weatherReports.claim({
191
- * id: 'report_stockholm',
192
- * description: 'Fetching current weather before writing the forecast.',
193
- * });
194
- * try {
195
- * await ablo.weatherReports.update({
196
- * id: claim.target.id,
197
- * data: { status: 'ready' },
198
- * claim,
199
- * });
200
- * } finally {
201
- * await claim.release();
202
- * }
203
- * ```
204
- *
205
- * `data` is a snapshot taken after the lease is held. Write through the flat
206
- * `ablo.<model>.update({ id, data, claim })` verb — the handle carries the
207
- * lease id and snapshot watermark for attribution and stale-write protection.
208
- */
209
- export type { Claim, ClaimHeartbeat, ClaimHeartbeatOptions, HeldClaim, HeldLease };
210
- export type ClaimOptions<T = Record<string, unknown>> = ClaimTargetOptions<T>;
211
- /**
212
- * The coordination surface for a model, exposed as a callable namespace.
213
- *
214
- * Most callers do not need this namespace directly. Put `claim: { ... }` on a
215
- * write and the SDK acquires/releases around that one mutation:
216
- *
217
- * ```ts
218
- * await ablo.tasks.update({
219
- * id,
220
- * data: { title },
221
- * claim: {
222
- * field: 'title',
223
- * description: 'Renaming the task to match the project brief.',
224
- * },
225
- * });
226
- * ```
227
- *
228
- * Use `claim({ id, ... })` when a tool spans multiple writes and needs one
229
- * handle. `state`, `queue`, and `reorder` are coordination reads/scheduler
230
- * controls for UI and operators.
231
- */
232
- /**
233
- * The coordination reads and scheduler controls on a claim namespace, in their
234
- * reactive (synchronous) form: `state`, `queue`, and `reorder` resolve against
235
- * the local pool with no round-trip, which is what lets a reactive selector read
236
- * coordination state inside a React render.
237
- *
238
- * This is the single source of truth for the claim read surface. The stateless
239
- * HTTP client exposes the awaited projection of exactly these methods (derived
240
- * via {@link AwaitedClaimMethod}), so the two transports cannot drift — change a
241
- * signature here and the HTTP surface follows.
242
- */
243
- export interface ClaimReadApi<T = Record<string, unknown>> {
244
- /**
245
- * Current holder for a row, or `null` when free. Use this for UI badges and
246
- * preflight checks, not for the normal write path.
247
- *
248
- * `target.meta` reads as the shape declared on `Register`'s `ClaimMeta`
249
- * slot, so no read of it needs a guard. Pass `M` only to override that
250
- * declaration for one call — `state<OtherMeta>({ id })` — which a program
251
- * carrying more than one meta shape occasionally needs.
252
- */
253
- state<M = ResolveClaimMeta>(params: ClaimLookupParams<T>): Claim<Record<string, unknown>, M> | null;
254
- /**
255
- * FIFO wait line behind the current holder. Advanced: useful for operator
256
- * UIs and schedulers. Takes the same `meta` parameter as
257
- * {@link ClaimReadApi.state}.
258
- */
259
- queue<M = ResolveClaimMeta>(params: ClaimLookupParams<T>): {
260
- readonly object: 'list';
261
- readonly data: readonly Claim<Record<string, unknown>, M>[];
262
- };
263
- /**
264
- * Re-rank the wait line. Advanced and permission-gated.
265
- */
266
- reorder(params: ClaimReorderParams<T>): void;
267
- /** Release a manual claim handle early. Single-write claims auto-release. */
268
- release(params: ClaimLookupParams<T> | Claim<T>): Promise<void>;
269
- }
270
- /**
271
- * The awaited form of a claim method: a synchronous return becomes a `Promise`,
272
- * an already-async one (`release`) is left untouched. Used to derive the
273
- * stateless HTTP claim surface from the reactive {@link ClaimReadApi}.
274
- */
275
- export type AwaitedClaimMethod<F> = F extends (...args: infer A) => infer R ? R extends Promise<unknown> ? (...args: A) => R : (...args: A) => Promise<R> : F;
276
- export interface ClaimApi<T> extends ClaimReadApi<T> {
277
- /**
278
- * Takes a claim and returns an explicit held-work handle — a {@link HeldClaim}.
279
- * `data`, `release`, `revoke`, and the async disposer are always present (this
280
- * call re-reads the row under the lease), so callers can use `handle.data`
281
- * directly and `await using` works without a guard.
282
- */
283
- (params: ClaimParams<T>): Promise<HeldClaim<T>>;
284
- /**
285
- * Takes a claim by id alone, for a row that lives only in the customer's own
286
- * database — Ablo has never seen it, so there is nothing to re-read. Returns a
287
- * {@link HeldLease}: the same lease controls as {@link HeldClaim}
288
- * (`release`, `revoke`, `heartbeat`, `await using`) but no `.data`. Locking a
289
- * key you know by id is exactly this — serialize writers without first
290
- * syncing the row into Ablo.
291
- */
292
- (id: string, opts?: ClaimOptions<T>): Promise<HeldLease>;
293
- }
294
- export interface ModelRetrieveParams extends ServerRetrieveOptions {
295
- readonly id: string;
296
- }
297
- export interface ModelCreateParams<T, CreateInput> extends MutationOptions {
298
- readonly data: CreateInput;
299
- readonly id?: string | null;
300
- readonly claim?: Claim<T> | ClaimTargetOptions<T> | null;
301
- }
302
- export interface ModelUpdateParams<T> extends MutationOptions {
303
- readonly id: string;
304
- readonly data: Partial<T>;
305
- readonly claim?: Claim<T> | ClaimTargetOptions<T> | null;
306
- }
307
- export interface ModelDeleteParams<T> extends MutationOptions {
308
- readonly id: string;
309
- readonly claim?: Claim<T> | ClaimTargetOptions<T> | null;
310
- }
311
- /** Options for the WebSocket-only `ablo.<model>.join(ids, options?)`. */
312
- export interface JoinOptions {
313
- /**
314
- * Lease TTL for the underlying presence claim — the participant
315
- * auto-releases after this if the holder dies. Compact duration string
316
- * (`'5m'`) or ms number, mirroring the claim `ttl`.
317
- */
318
- ttl?: Duration;
319
- }
@@ -1,12 +0,0 @@
1
- /**
2
- * The request contract for `ablo.<model>` — the option and parameter shapes a
3
- * caller passes to a read, a write, or a claim.
4
- *
5
- * These types describe the *change or the query being requested*, never a local
6
- * copy of the rows it touches, so they sit in the settlement core and are shared
7
- * by every transport and every caller (ADR 0013 §4, ADR 0016). The factory that
8
- * binds them to reactive model instances — `createModelProxy` — stays with the
9
- * reactive consumer, along with `ModelOperations` and `ModelCollaboration`,
10
- * which reference the live participant handle.
11
- */
12
- export {};
@@ -1,66 +0,0 @@
1
- /**
2
- * Per-call options accepted by any mutation.
3
- *
4
- * Every field here defines, orders, settles, or authorises *the change itself*
5
- * — request identity, commit disposition, fencing, and the premise it rests on.
6
- * None of it touches a local copy of rows, so it belongs with the settlement
7
- * core rather than the reactive consumer (ADR 0013 §4, ADR 0016).
8
- */
9
- import type { CommitWait } from '../wire/commit.js';
10
- import type { OnStaleMode, ReadDependency, TrackDependency } from '../coordination/schema.js';
11
- /**
12
- * Per-call options accepted by any mutation, passed as the last argument.
13
- * Every field is optional; omitted fields fall back to sensible defaults.
14
- *
15
- * - `idempotencyKey` — when set, the server caches the response for 24 hours and
16
- * returns the cached result on any retry using the same key. When omitted, the
17
- * SDK generates a fresh UUID per mutation, so every call is retry-safe by
18
- * default. `null` is retained for source compatibility and is treated like
19
- * omission; write retries never opt out of request identity.
20
- * - `label` — a human-readable tag recorded with the mutation for debugging, such
21
- * as "nightly cleanup" or "user click".
22
- */
23
- export interface MutationOptions {
24
- idempotencyKey?: string | null;
25
- label?: string;
26
- wait?: CommitWait;
27
- readAt?: number | null;
28
- onStale?: OnStaleMode | null;
29
- /**
30
- * The fencing token (Option B) of the held claim this write belongs to. The
31
- * server validates it against the entity's persisted high-water and rejects a
32
- * stale token. Sourced from the claim handle, never set by hand.
33
- */
34
- fenceToken?: number | null;
35
- /** The id (or `{ id }`) of the claim this write belongs to. This is the
36
- * low-level reference the commit carries so the write is attributed to a claim
37
- * and can pass the holder's own lock. It is distinct from the `claim` handle on
38
- * the model write parameters, which is the higher-level object you usually pass. */
39
- claimRef?: string | {
40
- readonly id: string;
41
- } | null;
42
- /**
43
- * The batch premise — the answer to "did anything I looked at change?" Each
44
- * entry is a row (`{ model, id, readAt, fields? }`) or a sync group
45
- * (`{ group, readAt }`) that this write was premised on. The server checks
46
- * that none of them moved since their `readAt` and applies the entry's
47
- * `onStale` behavior to the whole batch. This is distinct from the per-operation
48
- * `readAt`, which guards only the row being written.
49
- *
50
- * See `packages/sync-engine/docs/concurrency-convention.md` (§3 the two
51
- * premises, §4 the batch premise) for the governing convention.
52
- */
53
- reads?: ReadDependency[] | null;
54
- /**
55
- * Durable premises — what this write (or the record it produces) should
56
- * keep watching. Unlike `reads`, which is checked once at commit and discarded,
57
- * each `track` entry is persisted and re-checked against every future delta; a
58
- * later matching change opens a `StaleNotification` for the tracking participant,
59
- * delivered at their next commit or live to a held claim. Each entry is a row
60
- * (`{ model, id }`) or a sync group (`{ group }`), optionally pinned to a `readAt`
61
- * baseline (defaults to this commit's watermark).
62
- *
63
- * See `packages/sync-engine/docs/groups.md` for how `track` drives propagation.
64
- */
65
- track?: TrackDependency[] | null;
66
- }