@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
package/docs/api.md CHANGED
@@ -13,10 +13,10 @@ row, you can optionally `claim` it so they serialize instead of clobbering
13
13
  each other.
14
14
 
15
15
  Two things to know before the method list. **Reads come in two flavors:**
16
- `retrieve({ id })` / `list({ where })` are async — they answer from what is
16
+ `get({ id })` / `list({ where })` are async — they answer from what is
17
17
  already local and fall back to the server. Put `local.` in front of either and
18
18
  you get the same read restricted to what is already here, which is why it can
19
- return a value rather than a promise: `local.retrieve(id)`, `local.list({ where })`,
19
+ return a value rather than a promise: `local.get(id)`, `local.list({ where })`,
20
20
  `local.count({ where })`. Use those in render, after data has synced.
21
21
  **Claims don't lock.** If another writer holds the row, `claim` waits
22
22
  for them, re-reads the fresh row, then hands it to you — so two writers
@@ -38,7 +38,7 @@ const schema = defineSchema({
38
38
  const ablo = Ablo({ schema, apiKey: process.env.ABLO_API_KEY });
39
39
 
40
40
  await ablo.ready();
41
- const report = await ablo.weatherReports.retrieve({ id: 'report_stockholm' });
41
+ const report = await ablo.weatherReports.get({ id: 'report_stockholm' });
42
42
  if (!report) throw new Error('Row not found');
43
43
 
44
44
  await ablo.weatherReports.update({ id: 'report_stockholm', data: { status: 'ready' }, wait: 'confirmed' });
@@ -51,24 +51,24 @@ agents, read the [Integration Guide](./integration-guide.md).
51
51
 
52
52
  Each schema model becomes a typed model on the client:
53
53
 
54
- - `ablo.weatherReports.retrieve({ id })` reads one row asynchronously (server read).
54
+ - `ablo.weatherReports.get({ id })` reads one row asynchronously (server read).
55
55
  - `ablo.weatherReports.list({ where })` reads a collection asynchronously (server read).
56
- - `ablo.weatherReports.local.retrieve(id)` reads one row synchronously from the local graph.
56
+ - `ablo.weatherReports.local.get(id)` reads one row synchronously from the local graph.
57
57
  - `ablo.weatherReports.create({ data })` creates a row.
58
58
  - `ablo.weatherReports.update({ id, data, ...options })` updates a row.
59
59
  - `ablo.weatherReports.delete({ id, ...options })` deletes a row.
60
60
 
61
- `local.` narrows a read to what has already synced. `retrieve({ id })` and
61
+ `local.` narrows a read to what has already synced. `get({ id })` and
62
62
  `list({ where })` answer from the local graph and fall back to IndexedDB and
63
63
  then the network, so reach for them when the row may not be here yet.
64
- `local.retrieve(id)` and `local.list({ where })` are the same reads with the
64
+ `local.get(id)` and `local.list({ where })` are the same reads with the
65
65
  fallback removed — nothing to await, so they return a value.
66
66
 
67
67
  | Method | Returns | Use when |
68
68
  |---|---|---|
69
- | `retrieve({ id })` | `Promise<T \| undefined>` | You need one row, hydrating from local store and server. |
69
+ | `get({ id })` | `Promise<T \| undefined>` | You need one row, hydrating from local store and server. |
70
70
  | `list({ where })` | `Promise<T[]>` | You need to hydrate a collection from local store and server. |
71
- | `local.retrieve(id)` | `T \| undefined` | You want a synchronous snapshot of one local row. |
71
+ | `local.get(id)` | `T \| undefined` | You want a synchronous snapshot of one local row. |
72
72
  | `local.list(options?)` | `T[]` | You want a synchronous snapshot of a local collection. |
73
73
  | `local.count(options?)` | `number` | You want a synchronous count of local rows. |
74
74
  | `create({ data, ...options })` | `Promise<T>` | You want to create through the schema model. |
@@ -120,49 +120,11 @@ blocks), and `ablo.<model>.claim.release({ id })` releases it early. The full
120
120
  coordination surface is `claim.state({ id })` / `claim.queue({ id })` /
121
121
  `claim.release({ id })` / `claim.reorder({ id, order })` hanging off `claim`.
122
122
 
123
- ### The Claim State Object
124
-
125
- | Field | Type | Description |
126
- |---|---|---|
127
- | `object` | `'claim'` | String representing the object's type. |
128
- | `id` | string | Unique identifier for the claim. |
129
- | `status` | `'active' \| 'queued' \| 'committed' \| 'expired' \| 'canceled'` | The whole lifecycle, in one field. `active` is the holder; `queued` is a waiter in the FIFO line behind it. |
130
- | `target` | `{ type, id, field? }` | What is being coordinated. |
131
- | `description` | string | Peer-visible phrase for the work in progress — `'editing'`, `'writing'`, `'reviewing the risk section'`. Defaults to `'editing'`, and rides back in the rejection a blocked writer receives. |
132
- | `heldBy` | string | Participant id holding the claim. |
133
- | `participantKind` | `'user' \| 'agent' \| 'system'` | Who's behind it — a human (`user`), an AI (`agent`), or automated infrastructure (`system`). |
134
- | `createdAt` | number? | Ms-epoch the holder opened it. Optional — derived shapes may omit it. |
135
- | `expiresAt` | number | Ms-epoch at which the server auto-expires it if the holder doesn't finish. |
136
-
137
- ```json
138
- {
139
- "object": "claim",
140
- "id": "claim_3MtwBwLkdIwHu7ix",
141
- "status": "active",
142
- "target": { "type": "weatherReports", "id": "report_stockholm", "field": "status" },
143
- "description": "editing",
144
- "heldBy": "agent:report-writer",
145
- "participantKind": "agent",
146
- "expiresAt": 1716580000000
147
- }
148
- ```
149
-
150
- ### Lifecycle
151
-
152
- ```
153
- claim({ id }) update({ id }) lands
154
- (free) ───────────▶ active ───────────────────────▶ committed
155
-
156
- ┌───────────┴───────────┐
157
- ▼ ▼
158
- canceled expired
159
- (release w/o write) (TTL; holder died)
160
- ```
161
-
162
- A target is free when `ablo.<model>.claim.state({ id })` is `null`. Terminal
163
- states drop out of the live stream, so a present claim is either `active` (the
164
- holder) or `queued` (waiting in the FIFO line behind the holder; see
165
- `claim.queue({ id })`).
123
+ The fields on a claim, its lifecycle diagram, and the full method surface are in
124
+ [Coordination](./coordination.md#the-claim-state-object), which is where that
125
+ object is defined. Note that the entity half of `target` is spelled `model`/`id`
126
+ on the SDK's model surface and `type`/`id` on the claim handle and the wait
127
+ line.
166
128
 
167
129
  ### Reading and claiming
168
130
 
@@ -217,7 +179,7 @@ endpoint documents that model's real field contract instead of a generic blob.
217
179
  |---|---|
218
180
  | `ablo.<model>.create({ data })` | `POST /api/v1/models/{model}` |
219
181
  | `ablo.<model>.list({ where })` | `GET /api/v1/models/{model}` |
220
- | `ablo.<model>.retrieve({ id })` | `GET /api/v1/models/{model}/{id}` |
182
+ | `ablo.<model>.get({ id })` | `GET /api/v1/models/{model}/{id}` |
221
183
  | `ablo.<model>.update({ id, data })` | `PATCH /api/v1/models/{model}/{id}` |
222
184
  | `ablo.<model>.delete({ id })` | `DELETE /api/v1/models/{model}/{id}` |
223
185
  | `ablo.<model>.claim({ id })` | `POST /api/v1/models/{model}/{id}/claim` |
package/docs/audit.md CHANGED
@@ -23,11 +23,12 @@ with which key — and the chain columns that make the log tamper-evident:
23
23
  capabilityId: string | null, // the API key/capability used for the write
24
24
  capabilityLabel: string | null, // its human-readable name, for scanning the log
25
25
  delegationChainRootUserId: string | null, // always points at a human
26
- actionType: string, // e.g. 'weatherReport.update'
27
- modelName: string, // e.g. 'claude-opus-4-8'
26
+ actionType: 'I' | 'U' | 'D', // insert, update, delete
27
+ modelName: string, // the model that changed, e.g. 'orders'
28
+ modelId: string, // the row that changed
28
29
  confirmationState: 'auto' | 'previewed' | 'approved' | 'required_human_approval' | 'auto_historical',
29
30
  diffSummary: unknown,
30
- // chain columns carried on every stored row, checked by verify (below)
31
+ // chain columns, carried on every stored row and checked by verify (below)
31
32
  chainSeq: number,
32
33
  prevHash: string,
33
34
  rowHash: string,
package/docs/cli.md CHANGED
@@ -94,18 +94,18 @@ profiles entirely: it acts in whatever project it was minted for.
94
94
 
95
95
  | Command | What it does | Flags |
96
96
  | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
97
- | `ablo init` | Scaffold `ablo/` (`schema.ts`, client, optional Data Source / agent / component), write `.env`, install the SDK. Offers to log in at the end. | |
98
- | `ablo login` / `logout` / `status` | Authentication & status (above). | |
99
- | `ablo mode [sandbox\|production]` | Switch active environment. | |
97
+ | `ablo init` | Scaffold `ablo/` (`schema.ts`, client, optional Data Source / agent / component), write `.env`, install the SDK. Offers to log in at the end. |: |
98
+ | `ablo login` / `logout` / `status` | Authentication & status (above). |: |
99
+ | `ablo mode [sandbox\|production]` | Switch active environment. |: |
100
100
  | `ablo projects list\|create\|use\|rename` | Manage projects and the active one (see [Projects](#projects)). Each project's keys/schema/data are isolated. | `--name "<display>"` (create/rename) |
101
- | `ablo dev` | **Hosted** push the schema to your test sandbox, then watch `ablo/schema.ts` and re-push on save. | `--no-watch`, `--schema <path>`, `--export <name>`, `--url <url>` |
101
+ | `ablo dev` | **Hosted**: push the schema to your test sandbox, then watch `ablo/schema.ts` and re-push on save. | `--no-watch`, `--schema <path>`, `--export <name>`, `--url <url>` |
102
102
  | `ablo logs` | Tail your scope's commit activity (`stripe logs tail`). Follows by default. | `-n, --tail <N>`, `--since <dur\|ts>`, `--model`, `--op`, `--json`, `--no-follow`, `--mode sandbox\|production` |
103
- | `ablo push` | **Hosted** upload the schema to Ablo; the server diffs, migrates, and activates it. | `--force`, `--rename old:new`, `--backfill model.field=value`, `--schema`, `--export`, `--url` |
104
- | `ablo migrate` | **Direct Postgres** provision just the synced models (plus the adapter's `ablo_outbox` / `ablo_idempotency`) in your own `DATABASE_URL`. Leaves your other tables alone. | `--dry-run`, `--output <file>`, `--schema`, `--export` |
105
- | `ablo pull` | **Direct Postgres** generate `defineSchema(...)` from your existing tables (read-only, like `prisma db pull`). | `--out <path>`, `--app-schema <name>`, `--import <pkg>`, `--force` |
106
- | `ablo check` | **Direct Postgres** verify your _existing_ tables fit the schema (read-only, no schema changes). | `--schema <path>`, `--export <name>`, `--app-schema <name>` |
103
+ | `ablo push` | **Hosted**: upload the schema to Ablo; the server diffs, migrates, and activates it. | `--force`, `--rename old:new`, `--backfill model.field=value`, `--schema`, `--export`, `--url` |
104
+ | `ablo migrate` | **Direct Postgres**: provision just the synced models (plus the adapter's `ablo_outbox` / `ablo_idempotency`) in your own `DATABASE_URL`. Leaves your other tables alone. | `--dry-run`, `--output <file>`, `--schema`, `--export` |
105
+ | `ablo pull` | **Direct Postgres**: generate `defineSchema(...)` from your existing tables (read-only, like `prisma db pull`). | `--out <path>`, `--app-schema <name>`, `--import <pkg>`, `--force` |
106
+ | `ablo check` | **Direct Postgres**: verify your _existing_ tables fit the schema (read-only, no schema changes). | `--schema <path>`, `--export <name>`, `--app-schema <name>` |
107
107
  | `ablo generate` | Emit TypeScript types from the schema. | `--out <path>`, `--schema`, `--export` |
108
- | `ablo docs` | Read these pages for the version you installed offline, no network (see [`ablo docs`](#ablo-docs)). | `--json` |
108
+ | `ablo docs` | Read these pages for the version you installed: offline, no network (see [`ablo docs`](#ablo-docs)). | `--json` |
109
109
 
110
110
  ## `ablo docs`
111
111
 
@@ -241,7 +241,7 @@ The one type map, shared by both paths (there is no second mapping):
241
241
  | Zod | Postgres |
242
242
  | ------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------- |
243
243
  | `z.string()` | `TEXT` |
244
- | `z.number()` | `DOUBLE PRECISION` never `INTEGER`; a Zod number may be fractional, and truncating is silent data loss |
244
+ | `z.number()` | `DOUBLE PRECISION`: never `INTEGER`; a Zod number may be fractional, and truncating is silent data loss |
245
245
  | `z.boolean()` | `BOOLEAN` |
246
246
  | `z.date()` | `TIMESTAMPTZ` |
247
247
  | `z.enum([...])` | `TEXT` + a `CHECK (col IN (...))` constraint |
@@ -296,7 +296,7 @@ migration can't leave clients gated against tables that don't match.
296
296
 
297
297
  | Variable | Purpose | Default |
298
298
  | ------------------------------------- | ------------------------------------------------------------------------ | -------------------------- |
299
- | `ABLO_API_KEY` | Authenticate without `ablo login` (CI). Always overrides the stored key. | |
299
+ | `ABLO_API_KEY` | Authenticate without `ablo login` (CI). Always overrides the stored key. |: |
300
300
  | `ABLO_API_URL` | Control-plane / API host (`push`, `dev`, `status`). | `https://api.abloatai.com` |
301
301
  | `ABLO_AUTH_URL` | Dashboard origin for `ablo login`'s device flow. | `https://abloatai.com` |
302
302
  | `ABLO_CONFIG_DIR` / `XDG_CONFIG_HOME` | Where the credential file lives. | `~/.config/ablo` |
@@ -34,7 +34,7 @@ Common options:
34
34
  | `baseURL` | Override the hosted sync endpoint for staging or private deployments. |
35
35
  | `persistence` | `memory` by default. Use `indexeddb` for a durable browser cache that survives reloads. |
36
36
  | `durableWrites` | Optional crash recovery for unacknowledged agent/worker writes. Independent of the default memory cache; accepts `{ store, namespace? }`. |
37
- | `transport` | `'websocket'` (default) is the live, stateful client a persistent socket, a local synced pool, and `onChange` subscriptions. `'http'` returns the **stateless** client for server-side actors (agents, workers, serverless): the same `ablo.<model>` read/write/claim surface, but each call is one HTTP round-trip with no socket. Under `'http'` the return type narrows to `AbloHttpClient`, so stateful-only methods (the `local` reads, `onChange`, `join`) are compile errors rather than runtime gaps. |
37
+ | `transport` | `'websocket'` (default) is the live, stateful client: a persistent socket, a local synced pool, and `onChange` subscriptions. `'http'` returns the **stateless** client for server-side actors (agents, workers, serverless): the same `ablo.<model>` read/write/claim surface, but each call is one HTTP round-trip with no socket. Under `'http'` the return type narrows to `AbloHttpClient`, so stateful-only methods (the `local` reads, `onChange`, `join`) are compile errors rather than runtime gaps. |
38
38
  | `fetch` | Custom fetch implementation for tests or non-standard runtimes. |
39
39
  | `defaultHeaders` | Extra headers attached to every HTTP request. |
40
40
  | `defaultQuery` | Extra query parameters attached to every HTTP request. |
@@ -53,8 +53,8 @@ Each schema model becomes a typed model:
53
53
  ```ts
54
54
  await ablo.ready();
55
55
 
56
- const report = await ablo.weatherReports.retrieve({ id: 'report_stockholm' });
57
- const local = ablo.weatherReports.local.retrieve('report_stockholm');
56
+ const report = await ablo.weatherReports.get({ id: 'report_stockholm' });
57
+ const local = ablo.weatherReports.local.get('report_stockholm');
58
58
 
59
59
  await ablo.weatherReports.create({ data: { location: 'Stockholm', status: 'pending' } });
60
60
  await ablo.weatherReports.update({ id: 'report_stockholm', data: { status: 'ready' }, wait: 'confirmed' });
@@ -62,7 +62,7 @@ await ablo.weatherReports.delete({ id: 'report_stockholm', wait: 'confirmed' });
62
62
  ```
63
63
 
64
64
  Call `retrieve`/`list` first — they fetch from the server and you `await` them.
65
- After that, `local.retrieve`/`local.list`/`local.count` read the already-synced data instantly with
65
+ After that, `local.get`/`local.list`/`local.count` read the already-synced data instantly with
66
66
  no `await`, and stay reactive in render. Use the async pair to load, the sync trio
67
67
  to read.
68
68
 
@@ -79,7 +79,7 @@ through the same model client path. A human Server Action, a browser view, and a
79
79
  agent worker can all use `ablo.weatherReports`:
80
80
 
81
81
  ```ts
82
- const report = await ablo.weatherReports.retrieve({ id });
82
+ const report = await ablo.weatherReports.get({ id });
83
83
  const snap = ablo.snapshot({ weatherReports: id });
84
84
 
85
85
  await ablo.weatherReports.update({
@@ -93,7 +93,7 @@ await ablo.weatherReports.update({
93
93
 
94
94
  Once the server accepts the write, every other connected client gets the new row
95
95
  automatically — no polling or manual refresh on your side. React clients that use
96
- `useAblo((ablo) => ablo.weatherReports.local.retrieve(id))` receive the new row, and selectors
96
+ `useAblo((ablo) => ablo.weatherReports.local.get(id))` receive the new row, and selectors
97
97
  such as `useAblo((ablo) => ablo.weatherReports.claim.state({ id }))`
98
98
  receive active claim state. There is
99
99
  no extra multiplayer setup beyond routing shared state through Ablo.
@@ -218,8 +218,8 @@ Only these imports are public SemVer surface:
218
218
  - `@abloatai/ablo`
219
219
  - `@abloatai/ablo/schema`
220
220
  - `@abloatai/ablo/react`
221
- - `@abloatai/ablo/testing`
222
221
 
223
222
  `dataSource(...)` is exported from the root package for customer-owned storage
224
- adapters. Everything outside the four import paths is internal to Ablo-owned
225
- apps and infrastructure.
223
+ adapters. Everything outside the three import paths is internal to Ablo-owned
224
+ apps and infrastructure. For adapter authors, `@abloatai/ablo/source/conformance`
225
+ is the suite that proves a storage adapter behaves correctly.
@@ -2,9 +2,9 @@
2
2
 
3
3
  > The governing rule for how Ablo resolves concurrent writes to shared state.
4
4
 
5
- > The governing convention for how Ablo resolves concurrent writes to shared
6
- > state, and the boundaries of that convention. This is the contract; the
7
- > three-layer mechanics live in [`coordination.md`](./coordination.md).
5
+ This page is the contract: the `onStale` dispositions, what a conflict is
6
+ checked against, and where the convention stops. The three-layer mechanics of
7
+ claiming live in [Coordination](./coordination.md).
8
8
 
9
9
  ---
10
10
 
@@ -27,8 +27,8 @@ moments in time:
27
27
 
28
28
  | form | when | mechanism |
29
29
  |---|---|---|
30
- | **Claim** | *prospective* before you act | reserve the row; others queue. Coordinate so the conflict never forms. |
31
- | **Notification** | *in-flight* after a concurrent change | surface the changed value; the actor resolves and re-issues. |
30
+ | **Claim** | *prospective*: before you act | reserve the row; others queue. Coordinate so the conflict never forms. |
31
+ | **Notification** | *in-flight*: after a concurrent change | surface the changed value; the actor resolves and re-issues. |
32
32
 
33
33
  Use a claim when you will hold the row across a slow read→reason→write gap. Use a
34
34
  notification when you didn't, and the premise moved under you.
@@ -42,9 +42,9 @@ when it goes stale. Three modes, split by whether they **force** an outcome:
42
42
 
43
43
  | mode | coercive? | what the engine does | who resolves | use when |
44
44
  |---|---|---|---|---|
45
- | `notify` | **No** surface + delegate | Holds the write (does **not** apply it); returns a `StaleNotification` with the current value. | The actor (agent or human) reconciles and re-issues. | The aligned mode: tell the actor what changed, let it solve. |
46
- | `reject` | **Yes** force-abort | Throws `AbloStaleContextError`; the batch is discarded. | The caller retries from scratch. | Hard invariants; legacy/strict callers. The current default. |
47
- | `overwrite` | **Yes** force-clobber | Overwrites blindly last-writer-wins; **no** signal. | Nobody. | You genuinely own the field and concurrent values are noise. |
45
+ | `notify` | **No**: surface + delegate | Holds the write (does **not** apply it); returns a `StaleNotification` with the current value. | The actor (agent or human) reconciles and re-issues. | The aligned mode: tell the actor what changed, let it solve. |
46
+ | `reject` | **Yes**: force-abort | Throws `AbloStaleContextError`; the batch is discarded. | The caller retries from scratch. | Hard invariants; legacy/strict callers. The current default. |
47
+ | `overwrite` | **Yes**: force-clobber | Overwrites blindly last-writer-wins; **no** signal. | Nobody. | You genuinely own the field and concurrent values are noise. |
48
48
 
49
49
  > `notify` is the convention. `reject` and `overwrite` are escape hatches for the
50
50
  > two ends — "never let this be wrong" and "never bother me." They are not the
@@ -82,9 +82,9 @@ reads: [
82
82
  ]
83
83
  ```
84
84
 
85
- - **Row** did this specific row (optionally these fields) change? The literal
85
+ - **Row:** did this specific row (optionally these fields) change? The literal
86
86
  per-object premise.
87
- - **Group** did *anything* in this sync group change? `group` is a sync-group
87
+ - **Group:** did *anything* in this sync group change? `group` is a sync-group
88
88
  key (`workspace:abc`, `document:s1`, `org:X`) — the same unit a participant **watches
89
89
  and claims**. This is the more Ablo-native granularity.
90
90
 
@@ -108,13 +108,13 @@ Shape (canonical in `coordination/schema.ts`):
108
108
 
109
109
  | field | meaning |
110
110
  |---|---|
111
- | `object` | Stripe-style type tag `'stale_notification'` |
111
+ | `object` | Stripe-style type tag: `'stale_notification'` |
112
112
  | `model`, `id` | the conflicting row (for a group dep, both are the group key) |
113
113
  | `group?` | set when this is a group-scoped notification |
114
114
  | `readAt` | the watermark the committer reasoned against |
115
- | `observedSyncId` | the newest delta on the premise re-read at/after this |
115
+ | `observedSyncId` | the newest delta on the premise: re-read at/after this |
116
116
  | `conflictingFields` | fields that moved (empty for group / whole-entity) |
117
- | `currentValues` | the live values of those fields the premise to reconcile against (empty for group) |
117
+ | `currentValues` | the live values of those fields: the premise to reconcile against (empty for group) |
118
118
  | `writtenBy` | `{ kind, id }` of the concurrent author, reported faithfully |
119
119
 
120
120
  Only `notify` produces a notification (the write was held). `reject` throws and
@@ -169,7 +169,7 @@ What the convention **guarantees**, and where it **stops**:
169
169
  or human) owns the resolution. The engine does not distinguish them — it is
170
170
  actor-neutral by design.
171
171
 
172
- 2. **Truthfulness.** `currentValues` / `observedSyncId` reflect committed state at
172
+ 2. **Truthfulness:** `currentValues` / `observedSyncId` reflect committed state at
173
173
  detection time, inside the same transaction as the write. A notification is
174
174
  never speculative.
175
175
 
@@ -185,13 +185,11 @@ What the convention **guarantees**, and where it **stops**:
185
185
  so they must not be gated by `notify`.
186
186
 
187
187
  5. **Defaults.** A plain write (no `readAt`) is last-writer-wins with **no**
188
- check. A guarded write with `readAt` but no `onStale` defaults to `reject`
189
- (back-compat). *Open decision (§7).*
188
+ check. A guarded write with `readAt` but no `onStale` defaults to `reject`.
190
189
 
191
190
  6. **Policy seam.** Custom `ConflictPolicy` functions see **write-target**
192
191
  conflicts (`stale_context` / `claim_held`). **Batch-premise** conflicts are
193
- currently resolved directly via each entry's `onStale`, not through the policy
194
- seam. *Open decision (§7).*
192
+ resolved directly via each entry's `onStale`, not through the policy seam.
195
193
 
196
194
  7. **Claims win when held.** A non-holder writing to a claimed row is rejected
197
195
  (`AbloClaimedError`) regardless of `readAt` — the prospective form takes
@@ -200,29 +198,17 @@ What the convention **guarantees**, and where it **stops**:
200
198
 
201
199
  ---
202
200
 
203
- ## 7. Open decisions (bounded, not yet made)
201
+ ## 7. What this convention does not cover
204
202
 
205
- These are deliberately left open; they change behavior and are the user's call.
203
+ Three limits worth knowing before you rely on it.
206
204
 
207
- - **Default disposition for agents.** Should an agent-participant guarded write
208
- default to `notify` (philosophy-aligned: surface, don't overwrite) instead of
209
- `reject` (back-compat)? Trade-off: alignment vs. a behavior change for existing
210
- agent callers.
211
- - **Batch premises through the policy seam.** Should premise conflicts also
212
- pass through `ConflictPolicy` (requires a group-aware conflict shape), or stay
213
- on the direct `onStale` mapping?
214
-
215
- ---
216
-
217
- ## 8. Out of scope
218
-
219
- - Irreversible external side-effects (§6.4) — not gated by this convention.
220
- - Cross-object *serializability proof*. A batch premise is a sound check, not
221
- a full precedence-graph guarantee; it catches only what the caller declared.
222
- A caller that declares nothing gets **no check at all** — not write-target
223
- checking, which needs a `readAt` to check against. A plain write is
224
- last-writer-wins, as §6.5 says. The floor is zero, and closing that gap is the
225
- subject of ADR 0018.
226
- - Identity → participant-kind mapping. `writtenBy.kind` reports whatever
227
- authenticated (an `sk_` key resolves to `system`, not `agent`); how identities
228
- map to kinds is a separate concern.
205
+ - **Irreversible external side-effects.** Emails, payments, and third-party
206
+ calls are not gated by this convention (§6.4). The engine cannot hold or undo
207
+ them, so never place one behind `notify`.
208
+ - **A caller that declares nothing gets no check.** The batch premise catches
209
+ only what you declared. Write-target checking needs a `readAt` to compare
210
+ against, so a plain write with neither is last-writer-wins (§6.5). What you
211
+ declare is what is protected.
212
+ - **`writtenBy.kind` reports what authenticated, not what you meant.** An `sk_`
213
+ key resolves to `system`, not `agent`. How identities map to participant kinds
214
+ is a separate concern from this convention.