@abloatai/ablo 0.36.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 (597) hide show
  1. package/AGENTS.md +2 -2
  2. package/CHANGELOG.md +71 -2013
  3. package/NOTICE +2 -2
  4. package/README.md +25 -71
  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 -114
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +3 -163
  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 +1 -1
  59. package/docs/api-keys.md +7 -6
  60. package/docs/api.md +10 -10
  61. package/docs/client-behavior.md +5 -5
  62. package/docs/coordination.md +52 -62
  63. package/docs/data-sources.md +1 -1
  64. package/docs/examples/agent-human.md +4 -4
  65. package/docs/examples/ai-sdk-tool.md +1 -1
  66. package/docs/examples/existing-python-backend.md +15 -4
  67. package/docs/examples/nextjs.md +27 -6
  68. package/docs/examples/server-agent.md +2 -2
  69. package/docs/how-it-works.md +4 -4
  70. package/docs/identity.md +2 -1
  71. package/docs/integration-guide.md +24 -13
  72. package/docs/internal/README.md +18 -0
  73. package/docs/internal/agent-fleet-coordination-design.md +171 -0
  74. package/docs/internal/agent-orchestration.md +58 -0
  75. package/docs/internal/commit-identifiers.md +91 -0
  76. package/docs/internal/concurrency-open-decisions.md +37 -0
  77. package/docs/internal/data-source-reverse-channel.md +150 -0
  78. package/docs/internal/per-field-conflict-detection.md +165 -0
  79. package/docs/internal/postgres-replication.md +64 -0
  80. package/docs/internal/serializable-schema.md +119 -0
  81. package/docs/internal/structure.md +32 -0
  82. package/docs/mcp.md +2 -2
  83. package/docs/migration.md +3 -3
  84. package/docs/quickstart.md +2 -2
  85. package/docs/react.md +5 -5
  86. package/docs/schema-contract.md +3 -3
  87. package/docs/sessions.md +91 -37
  88. package/examples/README.md +2 -2
  89. package/examples/data-source/README.md +1 -1
  90. package/examples/data-source/ablo-driver.ts +1 -1
  91. package/examples/data-source/customer-server.ts +1 -1
  92. package/examples/data-source/run.ts +1 -1
  93. package/examples/data-source/schema.ts +1 -1
  94. package/examples/quickstart.ts +2 -2
  95. package/llms.txt +8 -8
  96. package/package.json +63 -166
  97. package/bin/ablo.cjs +0 -39
  98. package/dist/BaseSyncedStore.d.ts +0 -843
  99. package/dist/BaseSyncedStore.js +0 -1971
  100. package/dist/Database.d.ts +0 -323
  101. package/dist/Database.js +0 -1502
  102. package/dist/InstanceCache.d.ts +0 -237
  103. package/dist/InstanceCache.js +0 -1166
  104. package/dist/LazyReferenceCollection.d.ts +0 -177
  105. package/dist/LazyReferenceCollection.js +0 -461
  106. package/dist/Model.d.ts +0 -454
  107. package/dist/Model.js +0 -919
  108. package/dist/ModelRegistry.d.ts +0 -225
  109. package/dist/ModelRegistry.js +0 -539
  110. package/dist/NetworkMonitor.d.ts +0 -28
  111. package/dist/NetworkMonitor.js +0 -79
  112. package/dist/RuntimeContext.d.ts +0 -52
  113. package/dist/RuntimeContext.js +0 -80
  114. package/dist/SyncClient.d.ts +0 -541
  115. package/dist/SyncClient.js +0 -2202
  116. package/dist/adapters/alwaysOnline.d.ts +0 -14
  117. package/dist/adapters/alwaysOnline.js +0 -17
  118. package/dist/adapters/inMemoryStorage.d.ts +0 -31
  119. package/dist/adapters/inMemoryStorage.js +0 -110
  120. package/dist/ai-sdk/coordinatedTool.d.ts +0 -120
  121. package/dist/ai-sdk/coordinatedTool.js +0 -134
  122. package/dist/ai-sdk/coordinationContext.d.ts +0 -46
  123. package/dist/ai-sdk/coordinationContext.js +0 -106
  124. package/dist/ai-sdk/index.d.ts +0 -121
  125. package/dist/ai-sdk/index.js +0 -121
  126. package/dist/ai-sdk/wrap.d.ts +0 -65
  127. package/dist/ai-sdk/wrap.js +0 -39
  128. package/dist/auth/index.d.ts +0 -1
  129. package/dist/auth/index.js +0 -8
  130. package/dist/batching/index.d.ts +0 -55
  131. package/dist/batching/index.js +0 -147
  132. package/dist/client/Ablo.d.ts +0 -231
  133. package/dist/client/Ablo.js +0 -160
  134. package/dist/client/abloClient.d.ts +0 -309
  135. package/dist/client/abloClient.js +0 -13
  136. package/dist/client/clientPrelude.d.ts +0 -52
  137. package/dist/client/clientPrelude.js +0 -60
  138. package/dist/client/consoleLogger.d.ts +0 -35
  139. package/dist/client/consoleLogger.js +0 -44
  140. package/dist/client/coreClient.d.ts +0 -60
  141. package/dist/client/coreClient.js +0 -118
  142. package/dist/client/createInternalComponents.d.ts +0 -50
  143. package/dist/client/createInternalComponents.js +0 -98
  144. package/dist/client/createModelProxy.d.ts +0 -248
  145. package/dist/client/createModelProxy.js +0 -884
  146. package/dist/client/humans.d.ts +0 -69
  147. package/dist/client/humans.js +0 -78
  148. package/dist/client/modelRegistration.d.ts +0 -10
  149. package/dist/client/modelRegistration.js +0 -312
  150. package/dist/client/options.d.ts +0 -461
  151. package/dist/client/options.js +0 -7
  152. package/dist/client/reactiveEngine.d.ts +0 -53
  153. package/dist/client/reactiveEngine.js +0 -688
  154. package/dist/client/resourceTypes.d.ts +0 -12
  155. package/dist/client/resourceTypes.js +0 -10
  156. package/dist/client/schemaConfig.d.ts +0 -44
  157. package/dist/client/schemaConfig.js +0 -185
  158. package/dist/client/storeCluster.d.ts +0 -47
  159. package/dist/client/storeCluster.js +0 -118
  160. package/dist/client/storeLifecycle.d.ts +0 -61
  161. package/dist/client/storeLifecycle.js +0 -231
  162. package/dist/client/validateAbloOptions.d.ts +0 -42
  163. package/dist/client/validateAbloOptions.js +0 -43
  164. package/dist/client/wsMutationExecutor.d.ts +0 -27
  165. package/dist/client/wsMutationExecutor.js +0 -72
  166. package/dist/context.d.ts +0 -42
  167. package/dist/context.js +0 -81
  168. package/dist/coordination/ClaimLog.d.ts +0 -26
  169. package/dist/coordination/ClaimLog.js +0 -32
  170. package/dist/coordination/index.d.ts +0 -1
  171. package/dist/coordination/index.js +0 -8
  172. package/dist/core/index.d.ts +0 -33
  173. package/dist/core/index.js +0 -48
  174. package/dist/docs/catalog.d.ts +0 -72
  175. package/dist/docs/catalog.js +0 -230
  176. package/dist/docs/index.d.ts +0 -10
  177. package/dist/docs/index.js +0 -10
  178. package/dist/environment.d.ts +0 -1
  179. package/dist/environment.js +0 -8
  180. package/dist/interfaces/index.d.ts +0 -311
  181. package/dist/interfaces/index.js +0 -9
  182. package/dist/keys/index.d.ts +0 -1
  183. package/dist/keys/index.js +0 -8
  184. package/dist/mutators/RecordingMutation.d.ts +0 -36
  185. package/dist/mutators/RecordingMutation.js +0 -182
  186. package/dist/mutators/Transaction.d.ts +0 -40
  187. package/dist/mutators/Transaction.js +0 -58
  188. package/dist/mutators/UndoManager.d.ts +0 -258
  189. package/dist/mutators/UndoManager.js +0 -658
  190. package/dist/mutators/defineMutators.d.ts +0 -60
  191. package/dist/mutators/defineMutators.js +0 -18
  192. package/dist/mutators/inverseOp.d.ts +0 -126
  193. package/dist/mutators/inverseOp.js +0 -71
  194. package/dist/mutators/mutateActions.d.ts +0 -45
  195. package/dist/mutators/mutateActions.js +0 -105
  196. package/dist/mutators/readerActions.d.ts +0 -33
  197. package/dist/mutators/readerActions.js +0 -57
  198. package/dist/mutators/undoApply.d.ts +0 -51
  199. package/dist/mutators/undoApply.js +0 -117
  200. package/dist/policy/index.d.ts +0 -21
  201. package/dist/policy/index.js +0 -20
  202. package/dist/query/QueryProcessor.d.ts +0 -75
  203. package/dist/query/QueryProcessor.js +0 -255
  204. package/dist/query/client.d.ts +0 -64
  205. package/dist/query/client.js +0 -138
  206. package/dist/query/types.d.ts +0 -85
  207. package/dist/query/types.js +0 -16
  208. package/dist/react/AbloProvider.d.ts +0 -242
  209. package/dist/react/AbloProvider.js +0 -458
  210. package/dist/react/ClientSideSuspense.d.ts +0 -36
  211. package/dist/react/ClientSideSuspense.js +0 -17
  212. package/dist/react/DefaultFallback.d.ts +0 -24
  213. package/dist/react/DefaultFallback.js +0 -43
  214. package/dist/react/context.d.ts +0 -55
  215. package/dist/react/context.js +0 -29
  216. package/dist/react/createAbloReact.d.ts +0 -56
  217. package/dist/react/createAbloReact.js +0 -51
  218. package/dist/react/index.d.ts +0 -62
  219. package/dist/react/index.js +0 -69
  220. package/dist/react/internalContext.d.ts +0 -33
  221. package/dist/react/internalContext.js +0 -3
  222. package/dist/react/useAblo.d.ts +0 -82
  223. package/dist/react/useAblo.js +0 -120
  224. package/dist/react/useCurrentUserId.d.ts +0 -22
  225. package/dist/react/useCurrentUserId.js +0 -34
  226. package/dist/react/useErrorListener.d.ts +0 -20
  227. package/dist/react/useErrorListener.js +0 -38
  228. package/dist/react/useMutationFailureListener.d.ts +0 -26
  229. package/dist/react/useMutationFailureListener.js +0 -38
  230. package/dist/react/useMutators.d.ts +0 -56
  231. package/dist/react/useMutators.js +0 -84
  232. package/dist/react/useReactive.d.ts +0 -35
  233. package/dist/react/useReactive.js +0 -123
  234. package/dist/react/useSyncStatus.d.ts +0 -59
  235. package/dist/react/useSyncStatus.js +0 -76
  236. package/dist/react/useUndoScope.d.ts +0 -34
  237. package/dist/react/useUndoScope.js +0 -81
  238. package/dist/schema/coordination.d.ts +0 -112
  239. package/dist/schema/coordination.js +0 -133
  240. package/dist/schema/ddl.d.ts +0 -97
  241. package/dist/schema/ddl.js +0 -491
  242. package/dist/schema/ddlLock.d.ts +0 -35
  243. package/dist/schema/ddlLock.js +0 -46
  244. package/dist/schema/diff.d.ts +0 -225
  245. package/dist/schema/diff.js +0 -289
  246. package/dist/schema/generate.d.ts +0 -19
  247. package/dist/schema/generate.js +0 -86
  248. package/dist/schema/index.d.ts +0 -42
  249. package/dist/schema/index.js +0 -80
  250. package/dist/schema/queries.d.ts +0 -201
  251. package/dist/schema/queries.js +0 -144
  252. package/dist/schema/select.d.ts +0 -40
  253. package/dist/schema/select.js +0 -90
  254. package/dist/schema/serialize.d.ts +0 -115
  255. package/dist/schema/serialize.js +0 -265
  256. package/dist/schema/sugar.d.ts +0 -109
  257. package/dist/schema/sugar.js +0 -83
  258. package/dist/schema/syncDeltaRow.d.ts +0 -6
  259. package/dist/schema/syncDeltaRow.js +0 -6
  260. package/dist/server/adapter.d.ts +0 -173
  261. package/dist/server/adapter.js +0 -18
  262. package/dist/server/commit.d.ts +0 -107
  263. package/dist/server/commit.js +0 -1
  264. package/dist/server/index.d.ts +0 -14
  265. package/dist/server/index.js +0 -2
  266. package/dist/server/readConfig.d.ts +0 -80
  267. package/dist/server/readConfig.js +0 -8
  268. package/dist/server/storageMode.d.ts +0 -23
  269. package/dist/server/storageMode.js +0 -17
  270. package/dist/source/adapter.d.ts +0 -83
  271. package/dist/source/adapter.js +0 -24
  272. package/dist/source/adapters/drizzle.d.ts +0 -48
  273. package/dist/source/adapters/drizzle.js +0 -219
  274. package/dist/source/adapters/kysely.d.ts +0 -42
  275. package/dist/source/adapters/kysely.js +0 -205
  276. package/dist/source/adapters/kyselyMutationCore.d.ts +0 -76
  277. package/dist/source/adapters/kyselyMutationCore.js +0 -125
  278. package/dist/source/adapters/memory.d.ts +0 -13
  279. package/dist/source/adapters/memory.js +0 -130
  280. package/dist/source/adapters/prisma.d.ts +0 -63
  281. package/dist/source/adapters/prisma.js +0 -202
  282. package/dist/source/conformance.d.ts +0 -37
  283. package/dist/source/conformance.js +0 -215
  284. package/dist/source/connector.d.ts +0 -95
  285. package/dist/source/connector.js +0 -266
  286. package/dist/source/connectorProtocol.d.ts +0 -154
  287. package/dist/source/connectorProtocol.js +0 -163
  288. package/dist/source/contract.d.ts +0 -195
  289. package/dist/source/contract.js +0 -164
  290. package/dist/source/factory.d.ts +0 -92
  291. package/dist/source/factory.js +0 -286
  292. package/dist/source/idempotency.d.ts +0 -61
  293. package/dist/source/idempotency.js +0 -144
  294. package/dist/source/index.d.ts +0 -23
  295. package/dist/source/index.js +0 -30
  296. package/dist/source/migrations.d.ts +0 -21
  297. package/dist/source/migrations.js +0 -103
  298. package/dist/source/next.d.ts +0 -32
  299. package/dist/source/next.js +0 -25
  300. package/dist/source/pushQueue.d.ts +0 -134
  301. package/dist/source/pushQueue.js +0 -256
  302. package/dist/source/signing.d.ts +0 -92
  303. package/dist/source/signing.js +0 -162
  304. package/dist/source/types.d.ts +0 -401
  305. package/dist/source/types.js +0 -59
  306. package/dist/storeContract.d.ts +0 -145
  307. package/dist/storeContract.js +0 -12
  308. package/dist/stores/DatabaseManager.d.ts +0 -107
  309. package/dist/stores/DatabaseManager.js +0 -388
  310. package/dist/stores/ObjectStore.d.ts +0 -115
  311. package/dist/stores/ObjectStore.js +0 -393
  312. package/dist/stores/ObjectStoreContract.d.ts +0 -38
  313. package/dist/stores/ObjectStoreContract.js +0 -1
  314. package/dist/stores/StoreManager.d.ts +0 -114
  315. package/dist/stores/StoreManager.js +0 -304
  316. package/dist/stores/SyncActionStore.d.ts +0 -99
  317. package/dist/stores/SyncActionStore.js +0 -506
  318. package/dist/stores/openIDBWithTimeout.d.ts +0 -65
  319. package/dist/stores/openIDBWithTimeout.js +0 -153
  320. package/dist/stores/syncAction.d.ts +0 -26
  321. package/dist/stores/syncAction.js +0 -16
  322. package/dist/surface.d.ts +0 -36
  323. package/dist/surface.js +0 -75
  324. package/dist/sync/BootstrapFetcher.d.ts +0 -284
  325. package/dist/sync/BootstrapFetcher.js +0 -964
  326. package/dist/sync/ConnectionManager.d.ts +0 -8
  327. package/dist/sync/ConnectionManager.js +0 -8
  328. package/dist/sync/OnDemandLoader.d.ts +0 -231
  329. package/dist/sync/OnDemandLoader.js +0 -743
  330. package/dist/sync/SubscriptionManager.d.ts +0 -159
  331. package/dist/sync/SubscriptionManager.js +0 -243
  332. package/dist/sync/SyncWebSocket.d.ts +0 -173
  333. package/dist/sync/SyncWebSocket.js +0 -438
  334. package/dist/sync/awaitClaimGrant.d.ts +0 -6
  335. package/dist/sync/awaitClaimGrant.js +0 -6
  336. package/dist/sync/bootstrapApply.d.ts +0 -73
  337. package/dist/sync/bootstrapApply.js +0 -73
  338. package/dist/sync/commitFrames.d.ts +0 -8
  339. package/dist/sync/commitFrames.js +0 -8
  340. package/dist/sync/contextPorts.d.ts +0 -18
  341. package/dist/sync/contextPorts.js +0 -31
  342. package/dist/sync/createClaimStream.d.ts +0 -7
  343. package/dist/sync/createClaimStream.js +0 -7
  344. package/dist/sync/createPresenceStream.d.ts +0 -69
  345. package/dist/sync/createPresenceStream.js +0 -200
  346. package/dist/sync/createSnapshot.d.ts +0 -29
  347. package/dist/sync/createSnapshot.js +0 -118
  348. package/dist/sync/credentialLifecycle.d.ts +0 -7
  349. package/dist/sync/credentialLifecycle.js +0 -7
  350. package/dist/sync/deltaPipeline.d.ts +0 -114
  351. package/dist/sync/deltaPipeline.js +0 -278
  352. package/dist/sync/groupChange.d.ts +0 -116
  353. package/dist/sync/groupChange.js +0 -244
  354. package/dist/sync/participants.d.ts +0 -132
  355. package/dist/sync/participants.js +0 -346
  356. package/dist/sync/persistedPrefix.d.ts +0 -12
  357. package/dist/sync/persistedPrefix.js +0 -22
  358. package/dist/sync/schemaDrift.d.ts +0 -55
  359. package/dist/sync/schemaDrift.js +0 -53
  360. package/dist/sync/schemas.d.ts +0 -71
  361. package/dist/sync/schemas.js +0 -94
  362. package/dist/sync/syncCursor.d.ts +0 -40
  363. package/dist/sync/syncCursor.js +0 -55
  364. package/dist/sync/syncPlan.d.ts +0 -54
  365. package/dist/sync/syncPlan.js +0 -50
  366. package/dist/sync/wsFrameHandlers.d.ts +0 -8
  367. package/dist/sync/wsFrameHandlers.js +0 -8
  368. package/dist/syncLog/contract.d.ts +0 -20
  369. package/dist/syncLog/contract.js +0 -19
  370. package/dist/syncLog/index.d.ts +0 -1
  371. package/dist/syncLog/index.js +0 -1
  372. package/dist/transaction/ablo.d.ts +0 -88
  373. package/dist/transaction/ablo.js +0 -33
  374. package/dist/transaction/auth/apiKey.d.ts +0 -152
  375. package/dist/transaction/auth/apiKey.js +0 -419
  376. package/dist/transaction/auth/bootstrapScope.d.ts +0 -15
  377. package/dist/transaction/auth/bootstrapScope.js +0 -1
  378. package/dist/transaction/auth/capability.d.ts +0 -212
  379. package/dist/transaction/auth/capability.js +0 -224
  380. package/dist/transaction/auth/credentialEndpoint.d.ts +0 -61
  381. package/dist/transaction/auth/credentialEndpoint.js +0 -86
  382. package/dist/transaction/auth/credentialPolicy.d.ts +0 -148
  383. package/dist/transaction/auth/credentialPolicy.js +0 -125
  384. package/dist/transaction/auth/credentialSource.d.ts +0 -30
  385. package/dist/transaction/auth/credentialSource.js +0 -55
  386. package/dist/transaction/auth/hostedEndpoints.d.ts +0 -21
  387. package/dist/transaction/auth/hostedEndpoints.js +0 -21
  388. package/dist/transaction/auth/identity.d.ts +0 -55
  389. package/dist/transaction/auth/identity.js +0 -210
  390. package/dist/transaction/auth/index.d.ts +0 -162
  391. package/dist/transaction/auth/index.js +0 -304
  392. package/dist/transaction/auth/schemas.d.ts +0 -59
  393. package/dist/transaction/auth/schemas.js +0 -85
  394. package/dist/transaction/auth/sessionMint.d.ts +0 -28
  395. package/dist/transaction/auth/sessionMint.js +0 -85
  396. package/dist/transaction/coordination/awaitClaimGrant.d.ts +0 -56
  397. package/dist/transaction/coordination/awaitClaimGrant.js +0 -124
  398. package/dist/transaction/coordination/claimHeartbeatLoop.d.ts +0 -84
  399. package/dist/transaction/coordination/claimHeartbeatLoop.js +0 -108
  400. package/dist/transaction/coordination/claimMeta.d.ts +0 -49
  401. package/dist/transaction/coordination/claimMeta.js +0 -52
  402. package/dist/transaction/coordination/createClaimStream.d.ts +0 -64
  403. package/dist/transaction/coordination/createClaimStream.js +0 -475
  404. package/dist/transaction/coordination/events.d.ts +0 -74
  405. package/dist/transaction/coordination/events.js +0 -7
  406. package/dist/transaction/coordination/index.d.ts +0 -19
  407. package/dist/transaction/coordination/index.js +0 -45
  408. package/dist/transaction/coordination/locator.d.ts +0 -104
  409. package/dist/transaction/coordination/locator.js +0 -102
  410. package/dist/transaction/coordination/schema.d.ts +0 -1536
  411. package/dist/transaction/coordination/schema.js +0 -1177
  412. package/dist/transaction/coordination/targetConflict.d.ts +0 -2
  413. package/dist/transaction/coordination/targetConflict.js +0 -107
  414. package/dist/transaction/coordination/trace.d.ts +0 -78
  415. package/dist/transaction/coordination/trace.js +0 -138
  416. package/dist/transaction/durableWrites.d.ts +0 -62
  417. package/dist/transaction/durableWrites.js +0 -71
  418. package/dist/transaction/environment.d.ts +0 -105
  419. package/dist/transaction/environment.js +0 -108
  420. package/dist/transaction/errorCodes.d.ts +0 -403
  421. package/dist/transaction/errorCodes.js +0 -484
  422. package/dist/transaction/errors.d.ts +0 -428
  423. package/dist/transaction/errors.js +0 -686
  424. package/dist/transaction/footprint.d.ts +0 -111
  425. package/dist/transaction/footprint.js +0 -0
  426. package/dist/transaction/index.d.ts +0 -20
  427. package/dist/transaction/index.js +0 -20
  428. package/dist/transaction/keys/index.d.ts +0 -87
  429. package/dist/transaction/keys/index.js +0 -207
  430. package/dist/transaction/log/syncDeltaRow.d.ts +0 -158
  431. package/dist/transaction/log/syncDeltaRow.js +0 -95
  432. package/dist/transaction/logPosition.d.ts +0 -97
  433. package/dist/transaction/logPosition.js +0 -125
  434. package/dist/transaction/logger.d.ts +0 -16
  435. package/dist/transaction/logger.js +0 -7
  436. package/dist/transaction/observability.d.ts +0 -53
  437. package/dist/transaction/observability.js +0 -19
  438. package/dist/transaction/persistence.d.ts +0 -12
  439. package/dist/transaction/persistence.js +0 -11
  440. package/dist/transaction/plugin.d.ts +0 -285
  441. package/dist/transaction/plugin.js +0 -106
  442. package/dist/transaction/policy/types.d.ts +0 -217
  443. package/dist/transaction/policy/types.js +0 -126
  444. package/dist/transaction/resources/functionalUpdate.d.ts +0 -79
  445. package/dist/transaction/resources/functionalUpdate.js +0 -87
  446. package/dist/transaction/resources/httpResources.d.ts +0 -321
  447. package/dist/transaction/resources/httpResources.js +0 -7
  448. package/dist/transaction/resources/modelOperations.d.ts +0 -427
  449. package/dist/transaction/resources/modelOperations.js +0 -12
  450. package/dist/transaction/resources/mutationOptions.d.ts +0 -66
  451. package/dist/transaction/resources/mutationOptions.js +0 -9
  452. package/dist/transaction/resources/where.d.ts +0 -101
  453. package/dist/transaction/resources/where.js +0 -115
  454. package/dist/transaction/resources/writeOptionsSchema.d.ts +0 -47
  455. package/dist/transaction/resources/writeOptionsSchema.js +0 -73
  456. package/dist/transaction/schema/field.d.ts +0 -120
  457. package/dist/transaction/schema/field.js +0 -265
  458. package/dist/transaction/schema/fieldRef.d.ts +0 -38
  459. package/dist/transaction/schema/fieldRef.js +0 -11
  460. package/dist/transaction/schema/loadStrategy.d.ts +0 -45
  461. package/dist/transaction/schema/loadStrategy.js +0 -46
  462. package/dist/transaction/schema/model.d.ts +0 -379
  463. package/dist/transaction/schema/model.js +0 -123
  464. package/dist/transaction/schema/openapi.d.ts +0 -58
  465. package/dist/transaction/schema/openapi.js +0 -501
  466. package/dist/transaction/schema/relation.d.ts +0 -204
  467. package/dist/transaction/schema/relation.js +0 -104
  468. package/dist/transaction/schema/residency.d.ts +0 -29
  469. package/dist/transaction/schema/residency.js +0 -25
  470. package/dist/transaction/schema/roles.d.ts +0 -249
  471. package/dist/transaction/schema/roles.js +0 -230
  472. package/dist/transaction/schema/schema.d.ts +0 -351
  473. package/dist/transaction/schema/schema.js +0 -325
  474. package/dist/transaction/schema/tenancy.d.ts +0 -139
  475. package/dist/transaction/schema/tenancy.js +0 -190
  476. package/dist/transaction/transactionLayer.d.ts +0 -82
  477. package/dist/transaction/transactionLayer.js +0 -24
  478. package/dist/transaction/transactions/settlement/commitEnvelope.d.ts +0 -143
  479. package/dist/transaction/transactions/settlement/commitEnvelope.js +0 -161
  480. package/dist/transaction/transactions/settlement/httpCommitEnvelope.d.ts +0 -53
  481. package/dist/transaction/transactions/settlement/httpCommitEnvelope.js +0 -207
  482. package/dist/transaction/transactions/settlement/idempotencyKey.d.ts +0 -10
  483. package/dist/transaction/transactions/settlement/idempotencyKey.js +0 -9
  484. package/dist/transaction/transactions/settlement/pendingWrite.d.ts +0 -112
  485. package/dist/transaction/transactions/settlement/pendingWrite.js +0 -20
  486. package/dist/transaction/transport/commitFrames.d.ts +0 -90
  487. package/dist/transaction/transport/commitFrames.js +0 -134
  488. package/dist/transaction/transport/connectionManager.d.ts +0 -215
  489. package/dist/transaction/transport/connectionManager.js +0 -673
  490. package/dist/transaction/transport/credentialLifecycle.d.ts +0 -177
  491. package/dist/transaction/transport/credentialLifecycle.js +0 -324
  492. package/dist/transaction/transport/heartbeat.d.ts +0 -65
  493. package/dist/transaction/transport/heartbeat.js +0 -93
  494. package/dist/transaction/transport/httpClient.d.ts +0 -131
  495. package/dist/transaction/transport/httpClient.js +0 -146
  496. package/dist/transaction/transport/httpOptions.d.ts +0 -33
  497. package/dist/transaction/transport/httpOptions.js +0 -12
  498. package/dist/transaction/transport/httpTransport.d.ts +0 -8
  499. package/dist/transaction/transport/httpTransport.js +0 -1388
  500. package/dist/transaction/transport/networkProbe.d.ts +0 -84
  501. package/dist/transaction/transport/networkProbe.js +0 -207
  502. package/dist/transaction/transport/wsFrameHandlers.d.ts +0 -128
  503. package/dist/transaction/transport/wsFrameHandlers.js +0 -429
  504. package/dist/transaction/transport/wsTransport.d.ts +0 -574
  505. package/dist/transaction/transport/wsTransport.js +0 -1023
  506. package/dist/transaction/types/assertExact.d.ts +0 -17
  507. package/dist/transaction/types/assertExact.js +0 -1
  508. package/dist/transaction/types/global.d.ts +0 -107
  509. package/dist/transaction/types/global.js +0 -40
  510. package/dist/transaction/types/index.d.ts +0 -205
  511. package/dist/transaction/types/index.js +0 -56
  512. package/dist/transaction/types/modelData.d.ts +0 -10
  513. package/dist/transaction/types/modelData.js +0 -9
  514. package/dist/transaction/types/participant.d.ts +0 -20
  515. package/dist/transaction/types/participant.js +0 -10
  516. package/dist/transaction/types/streams.d.ts +0 -550
  517. package/dist/transaction/types/streams.js +0 -11
  518. package/dist/transaction/utils/asyncIterator.d.ts +0 -34
  519. package/dist/transaction/utils/asyncIterator.js +0 -135
  520. package/dist/transaction/utils/duration.d.ts +0 -50
  521. package/dist/transaction/utils/duration.js +0 -77
  522. package/dist/transaction/utils/json.d.ts +0 -57
  523. package/dist/transaction/utils/json.js +0 -276
  524. package/dist/transaction/wire/accountResponses.d.ts +0 -420
  525. package/dist/transaction/wire/accountResponses.js +0 -290
  526. package/dist/transaction/wire/auth.d.ts +0 -56
  527. package/dist/transaction/wire/auth.js +0 -63
  528. package/dist/transaction/wire/bootstrapReason.d.ts +0 -9
  529. package/dist/transaction/wire/bootstrapReason.js +0 -8
  530. package/dist/transaction/wire/claimEvent.d.ts +0 -76
  531. package/dist/transaction/wire/claimEvent.js +0 -73
  532. package/dist/transaction/wire/claims.d.ts +0 -530
  533. package/dist/transaction/wire/claims.js +0 -327
  534. package/dist/transaction/wire/commit.d.ts +0 -603
  535. package/dist/transaction/wire/commit.js +0 -321
  536. package/dist/transaction/wire/delta.d.ts +0 -250
  537. package/dist/transaction/wire/delta.js +0 -147
  538. package/dist/transaction/wire/errorEnvelope.d.ts +0 -72
  539. package/dist/transaction/wire/errorEnvelope.js +0 -123
  540. package/dist/transaction/wire/feedCursor.d.ts +0 -60
  541. package/dist/transaction/wire/feedCursor.js +0 -82
  542. package/dist/transaction/wire/feedEvent.d.ts +0 -204
  543. package/dist/transaction/wire/feedEvent.js +0 -65
  544. package/dist/transaction/wire/frames.d.ts +0 -194
  545. package/dist/transaction/wire/frames.js +0 -50
  546. package/dist/transaction/wire/inboundFrames.d.ts +0 -562
  547. package/dist/transaction/wire/inboundFrames.js +0 -116
  548. package/dist/transaction/wire/index.d.ts +0 -54
  549. package/dist/transaction/wire/index.js +0 -83
  550. package/dist/transaction/wire/listEnvelope.d.ts +0 -37
  551. package/dist/transaction/wire/listEnvelope.js +0 -42
  552. package/dist/transaction/wire/modelMutations.d.ts +0 -31
  553. package/dist/transaction/wire/modelMutations.js +0 -52
  554. package/dist/transaction/wire/modelResponses.d.ts +0 -85
  555. package/dist/transaction/wire/modelResponses.js +0 -43
  556. package/dist/transaction/wire/modelShape.d.ts +0 -78
  557. package/dist/transaction/wire/modelShape.js +0 -74
  558. package/dist/transaction/wire/protocol.d.ts +0 -38
  559. package/dist/transaction/wire/protocol.js +0 -38
  560. package/dist/transaction/wire/protocolVersion.d.ts +0 -73
  561. package/dist/transaction/wire/protocolVersion.js +0 -83
  562. package/dist/transactions/mutations/MutationQueue.d.ts +0 -661
  563. package/dist/transactions/mutations/MutationQueue.js +0 -2807
  564. package/dist/transactions/mutations/MutationStore.d.ts +0 -20
  565. package/dist/transactions/mutations/MutationStore.js +0 -53
  566. package/dist/transactions/mutations/UnconfirmedWrites.d.ts +0 -82
  567. package/dist/transactions/mutations/UnconfirmedWrites.js +0 -104
  568. package/dist/transactions/mutations/coalesceRules.d.ts +0 -58
  569. package/dist/transactions/mutations/coalesceRules.js +0 -140
  570. package/dist/transactions/mutations/commitLatency.d.ts +0 -52
  571. package/dist/transactions/mutations/commitLatency.js +0 -130
  572. package/dist/transactions/mutations/commitOutboxStore.d.ts +0 -28
  573. package/dist/transactions/mutations/commitOutboxStore.js +0 -26
  574. package/dist/transactions/mutations/commitPayload.d.ts +0 -165
  575. package/dist/transactions/mutations/commitPayload.js +0 -152
  576. package/dist/transactions/mutations/deltaConfirmation.d.ts +0 -63
  577. package/dist/transactions/mutations/deltaConfirmation.js +0 -235
  578. package/dist/transactions/mutations/durableWriteStore.d.ts +0 -14
  579. package/dist/transactions/mutations/durableWriteStore.js +0 -12
  580. package/dist/transactions/mutations/optimisticApply.d.ts +0 -49
  581. package/dist/transactions/mutations/optimisticApply.js +0 -65
  582. package/dist/transactions/mutations/replayValidation.d.ts +0 -187
  583. package/dist/transactions/mutations/replayValidation.js +0 -164
  584. package/dist/utils/mobxSetup.d.ts +0 -53
  585. package/dist/utils/mobxSetup.js +0 -330
  586. package/dist/views/QueryView.d.ts +0 -79
  587. package/dist/views/QueryView.js +0 -218
  588. package/dist/views/ViewRegistry.d.ts +0 -20
  589. package/dist/views/ViewRegistry.js +0 -55
  590. package/dist/views/incrementalView.d.ts +0 -45
  591. package/dist/views/incrementalView.js +0 -69
  592. package/dist/webhooks/events.d.ts +0 -43
  593. package/dist/webhooks/events.js +0 -42
  594. package/dist/webhooks/index.d.ts +0 -8
  595. package/dist/webhooks/index.js +0 -8
  596. package/dist/wire/index.d.ts +0 -1
  597. package/dist/wire/index.js +0 -8
@@ -1,309 +0,0 @@
1
- /**
2
- * The shape of the reactive client — what `Ablo({ schema, apiKey })` hands back.
3
- *
4
- * This module owns the declaration; `./Ablo.ts` aliases it as `Ablo<S>` so the
5
- * factory, the type, and the `Ablo.*` namespace keep merging under one name.
6
- * The split is what keeps the composition root readable: the contract a caller
7
- * writes against lives here, the wiring that satisfies it lives there.
8
- *
9
- * Type-only, with no runtime imports — the same property that lets `options.ts`
10
- * and `resourceTypes.ts` be referenced from the HTTP client without importing
11
- * the factory back and creating a cycle.
12
- */
13
- import type { Schema, SchemaRecord, Model, InferCreate, InferRow } from '../transaction/schema/schema.js';
14
- import type { PresenceStream, Snapshot } from '../transaction/types/streams.js';
15
- import type { InstanceCache } from '../InstanceCache.js';
16
- import type { SyncStoreContract } from '../react/context.js';
17
- import type { SyncWebSocket, CoreSyncEventMap } from '../sync/SyncWebSocket.js';
18
- import type { SyncStatus } from '../BaseSyncedStore.js';
19
- import type { ModelOperations } from './createModelProxy.js';
20
- import type { AbloSession, CommitResource, CreateAgentClientParams, CreateSessionParams } from './resourceTypes.js';
21
- /** The typed sync engine client — one property per model in the schema */
22
- export type AbloClient<S extends SchemaRecord> = {
23
- readonly [K in keyof S & string]: ModelOperations<Model<Schema<S>, K>, InferCreate<Schema<S>, K>>;
24
- } & {
25
- /**
26
- * Wait for the sync engine to finish its initial bootstrap.
27
- * Resolves once entity data is loaded and the WebSocket is connected.
28
- *
29
- * ```ts
30
- * const sync = Ablo({ schema, user });
31
- * await sync.ready();
32
- * const reports = sync.reports.findMany(); // data is available
33
- * ```
34
- *
35
- * If bootstrap fails, this rejects with the underlying error (unreachable
36
- * server, invalid API key, 500 from bootstrap endpoint, etc.).
37
- *
38
- * Idempotent — calling it multiple times returns the same promise.
39
- */
40
- ready(): Promise<void>;
41
- /**
42
- * Wait for all pending mutations to be confirmed by the server.
43
- *
44
- * Sync engine mutations (`create`/`update`/`delete`) are optimistic and
45
- * resolve immediately. Use this when you need to know the server has
46
- * acknowledged everything before continuing — for example, before
47
- * navigating away, before triggering a server-side workflow, or in tests.
48
- *
49
- * Resolves when `syncStatus.pendingChanges` reaches 0. If the engine is
50
- * offline, this waits until reconnect + flush completes.
51
- *
52
- * ```ts
53
- * await sync.reports.create({ data: { title: 'A' } });
54
- * await sync.reports.create({ data: { title: 'B' } });
55
- * await sync.waitForFlush(); // server has both reports
56
- * ```
57
- *
58
- * @param timeoutMs - Optional timeout. Default: no timeout (wait forever).
59
- * Throws `Error('Flush timeout')` if reached with pending changes.
60
- */
61
- waitForFlush(timeoutMs?: number): Promise<void>;
62
- /** Disconnect and clean up */
63
- dispose(): Promise<void>;
64
- /**
65
- * Replace the bearer token used for the WebSocket upgrade and HTTP requests,
66
- * without tearing down the engine. Use it to push a refreshed short-lived
67
- * access key (an `ek_` or `rk_`) before it expires — the client's `apiKey`
68
- * resolver refresh loop calls this for you. It reuses the same rotation path as
69
- * the internal capability-token refresh and is safe to call before `ready()`.
70
- * It also nudges a parked connection to re-probe with the new token.
71
- */
72
- setAuthToken(token: string): void;
73
- /**
74
- * Resolve the active bearer credential this engine authenticates with — the
75
- * live `ek_` or `rk_` the WebSocket and HTTP transports currently carry (kept
76
- * fresh by the `apiKey` resolver refresh loop), falling back to a configured
77
- * API key. Returns `null` when no credential is set yet. Use it to authenticate
78
- * a side-band request to the same server with the token this client already
79
- * holds, avoiding an extra mint round-trip.
80
- */
81
- getAuthToken(): Promise<string | null>;
82
- /**
83
- * Register a re-mint hook for the short-lived access key. The connection layer
84
- * calls it when it finds the key stale (a `credential_stale` probe) or on an
85
- * external nudge; the hook mints a fresh `ek_` or `rk_` from the still-valid
86
- * login. It follows the same contract as the `apiKey` resolver: resolve a
87
- * token, resolve `null` when the login itself is gone (which signs the user
88
- * out), or throw on a transient failure (which backs off without signing out).
89
- * The client wires this automatically from a function `apiKey`. Safe to call
90
- * before `ready()`.
91
- */
92
- setCredentialRefresher(refresher: (() => Promise<string | null>) | null): void;
93
- /**
94
- * Ask the connection layer to re-probe and reconnect now, using the current
95
- * credential. Idempotent and safe in any state (a no-op while connected).
96
- * Call after an OS-wake signal (Electron `powerMonitor` 'resume') so a
97
- * connection parked since sleep recovers immediately instead of waiting for
98
- * the watchdog.
99
- */
100
- nudgeReconnect(): void;
101
- /**
102
- * Mint a short-lived, scoped session token for one end user. Call this on your
103
- * backend, where the `sk_` secret key lives, then hand the returned `token` to
104
- * that user's browser — typically through a token route the browser's `apiKey`
105
- * resolver fetches. The browser presents the token as its bearer, and the
106
- * server verifies it. The browser must never see the `sk_` key, only the
107
- * per-user session token.
108
- *
109
- * Pass `{ user: { id } }` for a full-authority end-user session, which mints an
110
- * `ek_` and attributes writes to a user (recorded as `actor_kind` on the delta
111
- * row). Pass `{ agent: { id }, can: { tasks: ['update'] } }` for a scoped agent
112
- * session, which mints an `rk_`; `can` is typed against your schema's model
113
- * names. This always authenticates with the original `sk_`, never the client's
114
- * exchanged sync credential.
115
- */
116
- sessions: {
117
- create(params: CreateSessionParams<S>): Promise<AbloSession>;
118
- };
119
- /**
120
- * Mint a scoped **agent identity** and return a ready-to-use client bound to
121
- * it — the `ablo.<resource>.<verb>` shape for the agent use case. One call
122
- * replaces `sessions.create({ agent })` + constructing a second
123
- * `Ablo({ apiKey: token })`:
124
- *
125
- * ```ts
126
- * const agent = await ablo.agents.create({
127
- * name: 'researcher', // readable label (optional)
128
- * can: { documents: ['read', 'update'] },
129
- * // id omitted → a fresh uuid: a distinct, independent participant
130
- * });
131
- * await agent.documents.update({ id, data, claim });
132
- * await agent.dispose(); // when the agent is done
133
- * ```
134
- *
135
- * Server-side only: it requires the `sk_` secret key (like `sessions.create`)
136
- * and throws `AbloAuthenticationError` in the browser. The returned client
137
- * holds its own auto-refreshing `rk_`, so a long run never hits token expiry,
138
- * and the `sk_` never leaves this process. Each call is a distinct participant
139
- * by default (omit `id` for a fresh uuid), so even two agents sharing a `name`
140
- * queue behind one another on a contended row — `name` is display only and
141
- * never collapses identity. Humans don't get a server-built client; ship them a
142
- * token via `sessions.create({ user })`. If you need the raw token for
143
- * revocation, or a stable re-attachable id, use `sessions.create({ agent })`
144
- * or pass `id`.
145
- */
146
- agents: {
147
- create(params: CreateAgentClientParams<S>): Promise<AbloClient<S>>;
148
- };
149
- /**
150
- * The organization this client resolved to — `null` until `ready()`
151
- * completes. Use it instead of scraping CLI output or hardcoding env vars:
152
- *
153
- * ```ts
154
- * await ablo.ready();
155
- * const org = ablo.organizationId; // 'org_…'
156
- * ```
157
- */
158
- readonly organizationId: string | null;
159
- /**
160
- * Destroy every IndexedDB database owned by this engine. Disconnects
161
- * the WebSocket, releases timers, and deletes all `ablo_*` / `ablo-*`
162
- * databases. Use on session expiry or explicit logout. Best-effort.
163
- */
164
- purge(): Promise<void>;
165
- /**
166
- * Subscribe to session-error events (server rejected the session).
167
- * Returns an unsubscribe function. Multiple subscribers supported.
168
- * Typically called by `<AbloProvider>`, which calls `purge()` on fire
169
- * and forwards to the consumer's `onSessionExpired` callback.
170
- */
171
- onSessionError(listener: (error: Error) => void): () => void;
172
- /**
173
- * Subscribe to mutation failures with the full payload (transaction,
174
- * error, permanent flag). Use this for user-visible failure surfaces —
175
- * toasts keyed by `AbloError.type`, route-level "this entity reverted"
176
- * boundaries, telemetry. Fires for both permanent rejections and
177
- * `max_retries_exhausted` rollbacks.
178
- *
179
- * Distinct from `onSessionError` (server killed the session, requires
180
- * re-auth) and from the `tx.isPersisted` per-call promise (call-site
181
- * await, single transaction). This is the app-wide fan-in.
182
- */
183
- onMutationFailure(listener: (payload: {
184
- transaction: import('../transactions/mutations/MutationQueue.js').QueuedMutation;
185
- error: Error;
186
- permanent?: boolean;
187
- }) => void): () => void;
188
- /**
189
- * Subscribe to commit round-trip latency — how long each write takes to
190
- * land, split into the local durable seal (`sealMs`) and the remote
191
- * acknowledgement (`ackMs`). Fires once per completed commit; returns an
192
- * unsubscribe function.
193
- *
194
- * Use this for latency readouts and performance telemetry. It is the only
195
- * measurement of the write path: commits travel over the WebSocket, so
196
- * `fetch`-based instrumentation never observes them.
197
- */
198
- onCommitLatency(listener: (sample: import('../transactions/mutations/commitLatency.js').CommitLatencySample) => void): () => void;
199
- /**
200
- * Wait for the most-recent in-flight transaction for (modelName, modelId)
201
- * to be confirmed by the server. Rejects with the same error that the
202
- * queue's `transaction:failed` event would carry if the mutation is
203
- * permanently rolled back. Resolves immediately when no transaction is
204
- * in flight (already-confirmed or never-staged).
205
- *
206
- * Matches the queue's `'confirmed'` status vocabulary (see also
207
- * `commits.create({wait:'confirmed'})`). Use this for the routing-
208
- * grace-window pattern: stage a write, then
209
- * `Promise.race([ablo.waitForConfirmation(...), gracePromise])` before
210
- * navigating to a route whose URL depends on the optimistic id.
211
- */
212
- waitForConfirmation(modelName: string, modelId: string): Promise<void>;
213
- /**
214
- * Reactive sync status — a MobX observable.
215
- *
216
- * Single source of truth for "what's the sync engine doing?" Contains:
217
- * - `state`: `'idle' | 'syncing' | 'error' | 'offline' | 'reconnecting'`
218
- * - `progress`: 0-100 for bootstrap progress
219
- * - `error?`: Error object when `state === 'error'`
220
- * - `pendingChanges`: Number of unconfirmed mutations in the queue
221
- * - `lastSyncAt?`: Timestamp of the last successful delta processing
222
- * - `offlineSince?`: When the connection dropped
223
- * - `isSessionError`: True when the error requires re-authentication
224
- *
225
- * React components using `observer()` re-render automatically when
226
- * any field changes — no manual subscription or polling needed.
227
- *
228
- * ```tsx
229
- * import { observer } from 'mobx-react-lite';
230
- *
231
- * const SyncIndicator = observer(() => {
232
- * if (sync.syncStatus.state === 'syncing') return <Spinner />;
233
- * if (sync.syncStatus.state === 'error') return <Error msg={sync.syncStatus.error} />;
234
- * if (sync.syncStatus.state === 'offline') return <OfflineBadge />;
235
- * return null;
236
- * });
237
- * ```
238
- */
239
- readonly syncStatus: SyncStatus;
240
- /** The underlying schema */
241
- readonly schema: Schema<S>;
242
- /**
243
- * A real-time presence livestream — who else is connected on this engine's
244
- * sync groups, what they're doing, and a write surface for announcing this
245
- * user's own activity. It rides the engine's existing WebSocket; opening a
246
- * participant for presence does not open a second socket. See
247
- * {@link PresenceStream}.
248
- *
249
- * The reference is stable for the engine's lifetime — the underlying connection
250
- * is rotated on `dispose()`, but this object stays the same.
251
- */
252
- readonly presence: PresenceStream;
253
- /**
254
- * Canonical low-level mutation API. Every untyped model write compiles
255
- * down to `commits.create(...)`.
256
- */
257
- readonly commits: CommitResource;
258
- /**
259
- * Capture a context-staleness watermark over a set of entities.
260
- * Returns a flat snapshot with `stamp` (thread into writes as
261
- * `readAt`), `signal` (aborts on any captured-entity delta), and
262
- * `onChange` (callback form). Reads from the engine's InstanceCache;
263
- * subscription is on the engine's existing transport.
264
- *
265
- * Use before an LLM call to prevent the model from completing
266
- * against now-stale data:
267
- * ```ts
268
- * const snap = engine.snapshot({ sections: report.sectionIds });
269
- * await streamText({ messages, signal: snap.signal });
270
- * ```
271
- */
272
- snapshot<ModelName extends keyof S & string>(entities: Readonly<Record<ModelName, string | readonly string[]>>): Snapshot<Schema<S>, ModelName>;
273
- /**
274
- * Subscribe to pushed frames — deltas, presence updates, claim grants and
275
- * losses, connection changes. Durable: the subscription survives the
276
- * socket being rebuilt across reconnects, and one made before the first
277
- * connection starts delivering when it opens. Returns the unsubscribe
278
- * function. App-specific collaboration events ride the store's own typed
279
- * map — see `_store`.
280
- */
281
- subscribe<K extends keyof CoreSyncEventMap>(event: K, handler: (...args: CoreSyncEventMap[K]) => void): () => void;
282
- /**
283
- * The internal store. It implements {@link SyncStoreContract} — pass it to
284
- * `SyncContext.Provider` so the SDK's `useModel` / `useModels` / `useMutations`
285
- * hooks can reach it.
286
- */
287
- readonly _store: SyncStoreContract;
288
- /** The InstanceCache — for demand loaders and direct pool operations. */
289
- readonly _pool: InstanceCache;
290
- /**
291
- * The SyncWebSocket handle — for collaboration events (selection, cursor
292
- * broadcast). Present for the client's whole lifetime: the connection object
293
- * is built with the store and holds no socket until `connect()`, so there is
294
- * no window in which this is absent and nothing needs to guard for one.
295
- */
296
- readonly _ws: SyncWebSocket;
297
- };
298
- /**
299
- * The reactive-read client a `useAblo` selector receives. The same surface as
300
- * {@link AbloClient}, except model reads are typed as reactive rows
301
- * ({@link InferRow}: data fields + computeds, no relation accessors, no model
302
- * methods) — the shape a reactive read actually delivers after
303
- * `toReactiveSnapshot()`. Reading `row.blocks` off a reactive read is a
304
- * compile error here instead of a silent runtime `undefined`; compose
305
- * relations through selectors or hooks that resolve the pool's instance.
306
- */
307
- export type AbloReads<S extends SchemaRecord> = Omit<AbloClient<S>, keyof S & string> & {
308
- readonly [K in keyof S & string]: ModelOperations<InferRow<Schema<S>, K>, InferCreate<Schema<S>, K>>;
309
- };
@@ -1,13 +0,0 @@
1
- /**
2
- * The shape of the reactive client — what `Ablo({ schema, apiKey })` hands back.
3
- *
4
- * This module owns the declaration; `./Ablo.ts` aliases it as `Ablo<S>` so the
5
- * factory, the type, and the `Ablo.*` namespace keep merging under one name.
6
- * The split is what keeps the composition root readable: the contract a caller
7
- * writes against lives here, the wiring that satisfies it lives there.
8
- *
9
- * Type-only, with no runtime imports — the same property that lets `options.ts`
10
- * and `resourceTypes.ts` be referenced from the HTTP client without importing
11
- * the factory back and creating a cycle.
12
- */
13
- export {};
@@ -1,52 +0,0 @@
1
- /**
2
- * The prelude every socket client resolves before anything is constructed.
3
- *
4
- * One pass over the options bag settles the values the composition root then
5
- * spends: the credential and its refresh resolver, the base URL, the logger,
6
- * and this participant's identity. Nothing here opens a socket, allocates a
7
- * store, or touches IndexedDB — so a misconfiguration (a secret key in the
8
- * browser, the removed `databaseUrl` option, a CLI key pointing at another
9
- * project) fails while the stack still points at the caller's own setup.
10
- *
11
- * `./Ablo.ts` calls this once and hands the result to whichever client the
12
- * plugin list selected.
13
- */
14
- import type { ParticipantKind } from '../transaction/types/participant.js';
15
- import type { Logger } from '../transaction/logger.js';
16
- import type { SchemaRecord } from '../transaction/schema/schema.js';
17
- import { type AuthCredentialSource } from '../transaction/auth/credentialSource.js';
18
- import { type ApiKeySetter } from '../transaction/auth/apiKey.js';
19
- import type { AbloOptions, InternalAbloOptions } from './options.js';
20
- /** What one pass over the options bag settles, for the builders downstream. */
21
- export interface ClientPrelude<S extends SchemaRecord> {
22
- /** The same options, widened to the fields only the SDK's own callers set. */
23
- readonly internalOptions: InternalAbloOptions<S>;
24
- /** The configured key — a literal key string, or a resolver to call. */
25
- readonly configuredApiKey: string | ApiKeySetter | null;
26
- readonly configuredAuthToken: string | null;
27
- /**
28
- * The credential lifecycle's single resolver, or `null` when auth is static.
29
- * It drives both the reactive re-mint (the connection's `credential_stale`
30
- * state) and the proactive refresh timer with its wake/online/focus triggers.
31
- */
32
- readonly credentialResolver: (() => Promise<string | null>) | null;
33
- readonly authCredentials: AuthCredentialSource;
34
- readonly logger: Logger;
35
- readonly url: string;
36
- /**
37
- * Identity routing: agents identify by agentId, users by user.id. The server
38
- * stamps `isAgent` on outbound presence frames from the connection's
39
- * authenticated identity prefix; the local `self` entry uses the kind we know
40
- * at construction.
41
- */
42
- readonly participantId: string;
43
- readonly kind: ParticipantKind;
44
- }
45
- /**
46
- * Resolve the prelude, failing fast on a misconfiguration.
47
- *
48
- * Three checks fire here rather than downstream: a secret key reaching the
49
- * browser, the removed `databaseUrl` option, and a CLI key scoped to a
50
- * different project than the one being addressed (a warning, not a throw).
51
- */
52
- export declare function resolveClientPrelude<S extends SchemaRecord>(options: AbloOptions<S>): ClientPrelude<S>;
@@ -1,60 +0,0 @@
1
- /**
2
- * The prelude every socket client resolves before anything is constructed.
3
- *
4
- * One pass over the options bag settles the values the composition root then
5
- * spends: the credential and its refresh resolver, the base URL, the logger,
6
- * and this participant's identity. Nothing here opens a socket, allocates a
7
- * store, or touches IndexedDB — so a misconfiguration (a secret key in the
8
- * browser, the removed `databaseUrl` option, a CLI key pointing at another
9
- * project) fails while the stack still points at the caller's own setup.
10
- *
11
- * `./Ablo.ts` calls this once and hands the result to whichever client the
12
- * plugin list selected.
13
- */
14
- import { createAuthCredentialSource, } from '../transaction/auth/credentialSource.js';
15
- import { assertBrowserSafety, readProcessEnv, rejectRemovedDatabaseUrlOption, resolveApiKey, resolveAuthToken, resolveBaseURL, resolveCredentialResolver, warnIfCliKeyMismatch, } from '../transaction/auth/apiKey.js';
16
- import { createConsoleLogger, resolveLogLevel } from './consoleLogger.js';
17
- /**
18
- * Resolve the prelude, failing fast on a misconfiguration.
19
- *
20
- * Three checks fire here rather than downstream: a secret key reaching the
21
- * browser, the removed `databaseUrl` option, and a CLI key scoped to a
22
- * different project than the one being addressed (a warning, not a throw).
23
- */
24
- export function resolveClientPrelude(options) {
25
- const internalOptions = options;
26
- const env = readProcessEnv();
27
- const authInput = { options, env };
28
- const configuredApiKey = resolveApiKey(authInput);
29
- const configuredAuthToken = resolveAuthToken(authInput);
30
- const credentialResolver = resolveCredentialResolver(configuredApiKey);
31
- const authCredentials = createAuthCredentialSource(
32
- // eslint-disable-next-line @typescript-eslint/no-deprecated -- load-bearing on the self-hosted path; server-internal cap-mint (Phase 3) not shipped
33
- internalOptions.capabilityToken ?? configuredAuthToken);
34
- rejectRemovedDatabaseUrlOption(options);
35
- assertBrowserSafety({
36
- apiKey: configuredApiKey,
37
- dangerouslyAllowBrowser: options.dangerouslyAllowBrowser,
38
- });
39
- // Custom logger wins; otherwise build the default `[Ablo]` logger at the level
40
- // resolved from `debug`/`logLevel`/`ABLO_LOG_LEVEL` (default `warn`).
41
- const logger = internalOptions.logger ??
42
- createConsoleLogger(resolveLogLevel({ debug: options.debug, logLevel: options.logLevel }));
43
- void warnIfCliKeyMismatch(authInput, (m) => { logger.warn(m); });
44
- const participantId =
45
- // eslint-disable-next-line @typescript-eslint/no-deprecated -- self-hosted identity fallback; hosted path derives identity from the apiKey scope
46
- (internalOptions.kind === 'agent' ? internalOptions.agentId : internalOptions.user?.id) ?? '';
47
- // eslint-disable-next-line @typescript-eslint/no-deprecated -- self-hosted default; hosted path ignores it (server derives kind from the apiKey scope)
48
- const kind = internalOptions.kind ?? 'user';
49
- return {
50
- internalOptions,
51
- configuredApiKey,
52
- configuredAuthToken,
53
- credentialResolver,
54
- authCredentials,
55
- logger,
56
- url: resolveBaseURL(authInput),
57
- participantId,
58
- kind,
59
- };
60
- }
@@ -1,35 +0,0 @@
1
- /**
2
- * The default `[Ablo]` console logger and its level resolution.
3
- *
4
- * These helpers are exported so any entry point that needs a default logger can
5
- * reuse the same level gating rather than hand-rolling a console wrapper.
6
- */
7
- import type { Logger } from '../interfaces/index.js';
8
- /**
9
- * Level threshold for the default console logger.
10
- *
11
- * The SDK emits a `debug` line per model and per property during schema
12
- * registration (see `ModelRegistry`), plus assorted lifecycle chatter. That
13
- * is verbose by design but carries no actionable signal for app consumers, so
14
- * the default threshold is `warn` — `debug`/`info` are dropped unless a
15
- * consumer opts in.
16
- *
17
- * Opt back in with `ABLO_LOG_LEVEL=debug` (or `info`/`warn`/`error`/`silent`).
18
- * Passing a custom `logger` to `Ablo({ logger })` bypasses this entirely.
19
- */
20
- export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'silent';
21
- /**
22
- * Resolve the effective level. Precedence: explicit `logLevel` option →
23
- * `debug: true` (⇒ debug) → `ABLO_LOG_LEVEL` env → default `warn`. `debug: false`
24
- * / omitted just means "don't raise the level" — it falls through to env/default
25
- * rather than force-silencing an ops-set env override.
26
- */
27
- export declare function resolveLogLevel(opts?: {
28
- debug?: boolean;
29
- logLevel?: LogLevel;
30
- }): LogLevel;
31
- /**
32
- * Builds the default logger, gated at `level` and prefixed `[Ablo]` so its lines
33
- * stand out in a console full of other tools' output.
34
- */
35
- export declare function createConsoleLogger(level: LogLevel): Logger;
@@ -1,44 +0,0 @@
1
- /**
2
- * The default `[Ablo]` console logger and its level resolution.
3
- *
4
- * These helpers are exported so any entry point that needs a default logger can
5
- * reuse the same level gating rather than hand-rolling a console wrapper.
6
- */
7
- const LOG_LEVEL_RANK = { debug: 10, info: 20, warn: 30, error: 40, silent: 99 };
8
- /**
9
- * Resolve the effective level. Precedence: explicit `logLevel` option →
10
- * `debug: true` (⇒ debug) → `ABLO_LOG_LEVEL` env → default `warn`. `debug: false`
11
- * / omitted just means "don't raise the level" — it falls through to env/default
12
- * rather than force-silencing an ops-set env override.
13
- */
14
- export function resolveLogLevel(opts) {
15
- if (opts?.logLevel && opts.logLevel in LOG_LEVEL_RANK)
16
- return opts.logLevel;
17
- if (opts?.debug === true)
18
- return 'debug';
19
- // `globalThis.process` guard keeps this safe in browser/edge runtimes that
20
- // have no `process` binding — there we fall through to the default.
21
- const raw = globalThis.process?.env?.ABLO_LOG_LEVEL;
22
- const normalized = raw?.toLowerCase();
23
- if (normalized && normalized in LOG_LEVEL_RANK)
24
- return normalized;
25
- return 'warn';
26
- }
27
- /**
28
- * Builds the default logger, gated at `level` and prefixed `[Ablo]` so its lines
29
- * stand out in a console full of other tools' output.
30
- */
31
- export function createConsoleLogger(level) {
32
- const threshold = LOG_LEVEL_RANK[level];
33
- const emit = (lvl, fn, args) => {
34
- if (typeof console === 'undefined' || LOG_LEVEL_RANK[lvl] < threshold)
35
- return;
36
- fn('[Ablo]', ...args);
37
- };
38
- return {
39
- debug: (...args) => { emit('debug', console.debug, args); },
40
- info: (...args) => { emit('info', console.info, args); },
41
- warn: (...args) => { emit('warn', console.warn, args); },
42
- error: (...args) => { emit('error', console.error, args); },
43
- };
44
- }
@@ -1,60 +0,0 @@
1
- /**
2
- * The core client over the socket: the stateless surface plus the live feed
3
- * (ADR 0016). `Ablo({ ..., plugins: [] })` returns this — the empty list says
4
- * it plainly: nothing beyond the core. Reads and writes travel over
5
- * request-response, exactly as they do for the `transport: 'http'` client;
6
- * the socket adds push — deltas, presence frames, and the claim lifecycle
7
- * (granted, queued, lost) — without a local copy of anything.
8
- *
9
- * This is the membership test made constructible: a caller with no socket
10
- * loses only push, and polls instead; a caller with this client gets the
11
- * push back and still never holds a store it did not ask for. It also
12
- * satisfies the core coordination ports structurally — `awaitClaimGrant`
13
- * needs only `subscribe`, which this client has.
14
- */
15
- import type { SchemaRecord } from '../transaction/schema/schema.js';
16
- import { type AbloHttpClient } from '../transaction/transport/httpClient.js';
17
- import { WsTransport } from '../transaction/transport/wsTransport.js';
18
- import type { ClaimStream } from '../transaction/types/streams.js';
19
- import type { Logger } from '../transaction/logger.js';
20
- import type { ObservabilityProvider } from '../interfaces/index.js';
21
- import type { AbloOptions } from './options.js';
22
- import type { ParticipantKind } from '../transaction/types/participant.js';
23
- /**
24
- * The stateless surface plus the live feed. Everything `transport: 'http'`
25
- * offers — typed model reads and writes, commits, claims, session minting —
26
- * with a duplex connection alongside it for the frames the server initiates.
27
- */
28
- export type AbloCoreClient<S extends SchemaRecord> = AbloHttpClient<S> & {
29
- /**
30
- * Opens the live feed and resolves once the connection is up. Reads and
31
- * writes work before, during, and after — they never depend on the feed.
32
- */
33
- connect(options?: {
34
- timeoutMs?: number;
35
- }): Promise<void>;
36
- /** Closes the live feed. Reads and writes keep working over request-response. */
37
- disconnect(): void;
38
- /** True while the live feed is up. */
39
- isConnected(): boolean;
40
- /**
41
- * Subscribe to pushed frames — deltas, presence updates, claim grants and
42
- * losses. Returns the unsubscribe function.
43
- */
44
- subscribe: WsTransport['subscribe'];
45
- /** Other participants' open claims and the wait queues, kept live off the feed. */
46
- claims: ClaimStream;
47
- };
48
- export interface CoreClientArgs<S extends SchemaRecord> {
49
- options: AbloOptions<S>;
50
- /** The resolved sync-server base URL. */
51
- baseUrl: string;
52
- participantId: string;
53
- kind: ParticipantKind;
54
- syncGroups: readonly string[];
55
- /** The shared credential source's resolver — reconnects read the freshest token. */
56
- getAuthToken: () => string | null | undefined;
57
- logger: Logger;
58
- observability?: ObservabilityProvider;
59
- }
60
- export declare function createCoreClient<S extends SchemaRecord>(args: CoreClientArgs<S>): AbloCoreClient<S>;