@abloatai/ablo 0.34.1 → 0.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (536) hide show
  1. package/AGENTS.md +2 -1
  2. package/CHANGELOG.md +758 -5
  3. package/README.md +56 -502
  4. package/bin/ablo.cjs +39 -0
  5. package/dist/BaseSyncedStore.d.ts +176 -48
  6. package/dist/BaseSyncedStore.js +346 -214
  7. package/dist/Database.d.ts +17 -44
  8. package/dist/Database.js +96 -79
  9. package/dist/InstanceCache.d.ts +31 -6
  10. package/dist/InstanceCache.js +65 -30
  11. package/dist/LazyReferenceCollection.d.ts +3 -3
  12. package/dist/LazyReferenceCollection.js +4 -4
  13. package/dist/Model.d.ts +23 -13
  14. package/dist/Model.js +27 -17
  15. package/dist/ModelRegistry.d.ts +8 -4
  16. package/dist/ModelRegistry.js +20 -18
  17. package/dist/NetworkMonitor.d.ts +3 -1
  18. package/dist/NetworkMonitor.js +7 -5
  19. package/dist/{SyncEngineContext.d.ts → RuntimeContext.d.ts} +20 -13
  20. package/dist/{SyncEngineContext.js → RuntimeContext.js} +11 -12
  21. package/dist/SyncClient.d.ts +47 -47
  22. package/dist/SyncClient.js +215 -156
  23. package/dist/ai-sdk/coordinatedTool.d.ts +2 -2
  24. package/dist/ai-sdk/coordinatedTool.js +1 -1
  25. package/dist/ai-sdk/coordinationContext.d.ts +2 -2
  26. package/dist/ai-sdk/coordinationContext.js +1 -1
  27. package/dist/ai-sdk/wrap.d.ts +3 -3
  28. package/dist/ai-sdk/wrap.js +2 -2
  29. package/dist/auth/index.d.ts +1 -156
  30. package/dist/auth/index.js +8 -301
  31. package/dist/client/Ablo.d.ts +42 -287
  32. package/dist/client/Ablo.js +129 -963
  33. package/dist/client/abloClient.d.ts +309 -0
  34. package/dist/client/abloClient.js +13 -0
  35. package/dist/client/clientPrelude.d.ts +52 -0
  36. package/dist/client/clientPrelude.js +60 -0
  37. package/dist/client/consoleLogger.d.ts +2 -2
  38. package/dist/client/coreClient.d.ts +60 -0
  39. package/dist/client/coreClient.js +118 -0
  40. package/dist/client/createInternalComponents.d.ts +8 -4
  41. package/dist/client/createInternalComponents.js +17 -10
  42. package/dist/client/createModelProxy.d.ts +98 -373
  43. package/dist/client/createModelProxy.js +233 -139
  44. package/dist/client/humans.d.ts +69 -0
  45. package/dist/client/humans.js +78 -0
  46. package/dist/client/modelRegistration.d.ts +1 -1
  47. package/dist/client/modelRegistration.js +9 -9
  48. package/dist/client/options.d.ts +73 -17
  49. package/dist/client/reactiveEngine.d.ts +53 -0
  50. package/dist/client/reactiveEngine.js +688 -0
  51. package/dist/client/resourceTypes.d.ts +9 -250
  52. package/dist/client/resourceTypes.js +8 -5
  53. package/dist/client/schemaConfig.d.ts +4 -4
  54. package/dist/client/schemaConfig.js +6 -2
  55. package/dist/client/storeCluster.d.ts +47 -0
  56. package/dist/client/storeCluster.js +118 -0
  57. package/dist/client/storeLifecycle.d.ts +61 -0
  58. package/dist/client/storeLifecycle.js +231 -0
  59. package/dist/client/validateAbloOptions.d.ts +3 -2
  60. package/dist/client/validateAbloOptions.js +1 -1
  61. package/dist/client/wsMutationExecutor.d.ts +3 -3
  62. package/dist/client/wsMutationExecutor.js +3 -3
  63. package/dist/context.d.ts +22 -9
  64. package/dist/context.js +33 -9
  65. package/dist/coordination/ClaimLog.d.ts +26 -0
  66. package/dist/coordination/ClaimLog.js +32 -0
  67. package/dist/coordination/index.d.ts +1 -15
  68. package/dist/coordination/index.js +8 -31
  69. package/dist/core/index.d.ts +3 -3
  70. package/dist/core/index.js +2 -2
  71. package/dist/docs/catalog.d.ts +72 -0
  72. package/dist/docs/catalog.js +230 -0
  73. package/dist/docs/index.d.ts +10 -0
  74. package/dist/docs/index.js +10 -0
  75. package/dist/environment.d.ts +1 -40
  76. package/dist/environment.js +8 -37
  77. package/dist/index.d.ts +44 -36
  78. package/dist/index.js +30 -22
  79. package/dist/interfaces/index.d.ts +44 -134
  80. package/dist/keys/index.d.ts +1 -77
  81. package/dist/keys/index.js +8 -190
  82. package/dist/mutators/{RecordingTransaction.d.ts → RecordingMutation.d.ts} +4 -4
  83. package/dist/mutators/{RecordingTransaction.js → RecordingMutation.js} +2 -2
  84. package/dist/mutators/Transaction.d.ts +1 -1
  85. package/dist/mutators/Transaction.js +1 -1
  86. package/dist/mutators/UndoManager.d.ts +6 -6
  87. package/dist/mutators/UndoManager.js +5 -5
  88. package/dist/mutators/defineMutators.d.ts +3 -3
  89. package/dist/mutators/defineMutators.js +1 -1
  90. package/dist/mutators/inverseOp.js +2 -2
  91. package/dist/mutators/mutateActions.d.ts +3 -3
  92. package/dist/mutators/mutateActions.js +1 -1
  93. package/dist/mutators/readerActions.d.ts +1 -1
  94. package/dist/mutators/undoApply.d.ts +1 -1
  95. package/dist/mutators/undoApply.js +1 -1
  96. package/dist/policy/index.d.ts +2 -2
  97. package/dist/policy/index.js +1 -1
  98. package/dist/query/client.d.ts +5 -2
  99. package/dist/query/client.js +10 -9
  100. package/dist/query/types.d.ts +6 -41
  101. package/dist/query/types.js +2 -2
  102. package/dist/react/AbloProvider.d.ts +18 -8
  103. package/dist/react/AbloProvider.js +10 -9
  104. package/dist/react/context.d.ts +3 -3
  105. package/dist/react/context.js +1 -1
  106. package/dist/react/createAbloReact.d.ts +56 -0
  107. package/dist/react/createAbloReact.js +51 -0
  108. package/dist/react/index.d.ts +6 -5
  109. package/dist/react/index.js +6 -3
  110. package/dist/react/internalContext.d.ts +1 -1
  111. package/dist/react/useAblo.d.ts +12 -5
  112. package/dist/react/useAblo.js +26 -8
  113. package/dist/react/useCurrentUserId.js +1 -1
  114. package/dist/react/useErrorListener.js +1 -1
  115. package/dist/react/useMutationFailureListener.d.ts +2 -2
  116. package/dist/react/useMutationFailureListener.js +1 -1
  117. package/dist/react/useMutators.d.ts +3 -3
  118. package/dist/react/useMutators.js +3 -3
  119. package/dist/react/useUndoScope.d.ts +5 -5
  120. package/dist/react/useUndoScope.js +1 -1
  121. package/dist/schema/coordination.d.ts +69 -10
  122. package/dist/schema/coordination.js +90 -9
  123. package/dist/schema/ddl.js +2 -2
  124. package/dist/schema/diff.d.ts +1 -1
  125. package/dist/schema/generate.js +1 -1
  126. package/dist/schema/index.d.ts +11 -10
  127. package/dist/schema/index.js +22 -18
  128. package/dist/schema/queries.d.ts +27 -27
  129. package/dist/schema/queries.js +23 -23
  130. package/dist/schema/select.d.ts +3 -3
  131. package/dist/schema/select.js +6 -3
  132. package/dist/schema/serialize.d.ts +15 -6
  133. package/dist/schema/serialize.js +20 -3
  134. package/dist/schema/sugar.d.ts +6 -7
  135. package/dist/schema/sugar.js +9 -12
  136. package/dist/schema/syncDeltaRow.d.ts +4 -152
  137. package/dist/schema/syncDeltaRow.js +4 -105
  138. package/dist/server/adapter.d.ts +18 -1
  139. package/dist/server/commit.d.ts +10 -16
  140. package/dist/server/index.d.ts +1 -1
  141. package/dist/server/index.js +1 -1
  142. package/dist/server/readConfig.d.ts +1 -1
  143. package/dist/source/adapter.d.ts +7 -5
  144. package/dist/source/adapter.js +7 -5
  145. package/dist/source/adapters/drizzle.d.ts +1 -1
  146. package/dist/source/adapters/drizzle.js +2 -2
  147. package/dist/source/adapters/kysely.d.ts +1 -1
  148. package/dist/source/adapters/kysely.js +1 -1
  149. package/dist/source/adapters/kyselyMutationCore.d.ts +1 -1
  150. package/dist/source/adapters/kyselyMutationCore.js +2 -2
  151. package/dist/source/adapters/memory.js +1 -1
  152. package/dist/source/adapters/prisma.d.ts +8 -3
  153. package/dist/source/adapters/prisma.js +1 -1
  154. package/dist/source/connector.js +1 -1
  155. package/dist/source/connectorProtocol.d.ts +2 -8
  156. package/dist/source/connectorProtocol.js +3 -2
  157. package/dist/source/contract.d.ts +29 -17
  158. package/dist/source/contract.js +27 -22
  159. package/dist/source/factory.d.ts +1 -1
  160. package/dist/source/idempotency.js +2 -2
  161. package/dist/source/index.d.ts +1 -0
  162. package/dist/source/index.js +3 -0
  163. package/dist/source/next.d.ts +1 -1
  164. package/dist/source/signing.d.ts +9 -2
  165. package/dist/source/signing.js +4 -1
  166. package/dist/source/types.d.ts +6 -4
  167. package/dist/source/types.js +1 -1
  168. package/dist/{core/storeContract.d.ts → storeContract.d.ts} +6 -6
  169. package/dist/{core → stores}/DatabaseManager.d.ts +3 -1
  170. package/dist/{core → stores}/DatabaseManager.js +14 -13
  171. package/dist/stores/ObjectStore.d.ts +1 -1
  172. package/dist/{core → stores}/StoreManager.d.ts +9 -26
  173. package/dist/{core → stores}/StoreManager.js +29 -77
  174. package/dist/stores/SyncActionStore.d.ts +4 -2
  175. package/dist/stores/SyncActionStore.js +11 -17
  176. package/dist/stores/syncAction.d.ts +26 -0
  177. package/dist/stores/syncAction.js +16 -0
  178. package/dist/surface.d.ts +3 -3
  179. package/dist/surface.js +6 -4
  180. package/dist/sync/BootstrapFetcher.d.ts +127 -6
  181. package/dist/sync/BootstrapFetcher.js +511 -83
  182. package/dist/sync/ConnectionManager.d.ts +6 -198
  183. package/dist/sync/ConnectionManager.js +6 -677
  184. package/dist/sync/OnDemandLoader.d.ts +5 -2
  185. package/dist/sync/OnDemandLoader.js +61 -21
  186. package/dist/sync/SubscriptionManager.d.ts +13 -2
  187. package/dist/sync/SubscriptionManager.js +23 -5
  188. package/dist/sync/SyncWebSocket.d.ts +27 -510
  189. package/dist/sync/SyncWebSocket.js +76 -954
  190. package/dist/sync/awaitClaimGrant.d.ts +4 -44
  191. package/dist/sync/awaitClaimGrant.js +4 -109
  192. package/dist/sync/bootstrapApply.d.ts +3 -0
  193. package/dist/sync/bootstrapApply.js +2 -2
  194. package/dist/sync/commitFrames.d.ts +6 -40
  195. package/dist/sync/commitFrames.js +6 -97
  196. package/dist/sync/contextPorts.d.ts +18 -0
  197. package/dist/sync/contextPorts.js +31 -0
  198. package/dist/sync/createClaimStream.d.ts +5 -49
  199. package/dist/sync/createClaimStream.js +5 -469
  200. package/dist/sync/createPresenceStream.d.ts +26 -4
  201. package/dist/sync/createPresenceStream.js +28 -20
  202. package/dist/sync/createSnapshot.d.ts +2 -2
  203. package/dist/sync/createSnapshot.js +1 -1
  204. package/dist/sync/credentialLifecycle.d.ts +5 -173
  205. package/dist/sync/credentialLifecycle.js +5 -320
  206. package/dist/sync/deltaPipeline.d.ts +13 -12
  207. package/dist/sync/deltaPipeline.js +21 -4
  208. package/dist/sync/groupChange.d.ts +3 -0
  209. package/dist/sync/groupChange.js +16 -14
  210. package/dist/sync/participants.d.ts +24 -6
  211. package/dist/sync/participants.js +32 -23
  212. package/dist/sync/schemaDrift.d.ts +55 -0
  213. package/dist/sync/schemaDrift.js +53 -0
  214. package/dist/sync/schemas.d.ts +23 -33
  215. package/dist/sync/schemas.js +29 -20
  216. package/dist/sync/syncPlan.d.ts +3 -3
  217. package/dist/sync/wsFrameHandlers.d.ts +6 -114
  218. package/dist/sync/wsFrameHandlers.js +6 -392
  219. package/dist/syncLog/contract.d.ts +20 -0
  220. package/dist/syncLog/contract.js +19 -0
  221. package/dist/syncLog/index.d.ts +1 -0
  222. package/dist/syncLog/index.js +1 -0
  223. package/dist/transaction/ablo.d.ts +88 -0
  224. package/dist/transaction/ablo.js +33 -0
  225. package/dist/{client/auth.d.ts → transaction/auth/apiKey.d.ts} +43 -8
  226. package/dist/{client/auth.js → transaction/auth/apiKey.js} +19 -0
  227. package/dist/transaction/auth/bootstrapScope.d.ts +15 -0
  228. package/dist/transaction/auth/bootstrapScope.js +1 -0
  229. package/dist/transaction/auth/capability.d.ts +212 -0
  230. package/dist/transaction/auth/capability.js +224 -0
  231. package/dist/{auth → transaction/auth}/credentialSource.d.ts +8 -1
  232. package/dist/{client → transaction/auth}/identity.d.ts +8 -7
  233. package/dist/{client → transaction/auth}/identity.js +1 -1
  234. package/dist/transaction/auth/index.d.ts +162 -0
  235. package/dist/transaction/auth/index.js +304 -0
  236. package/dist/{auth → transaction/auth}/schemas.d.ts +1 -1
  237. package/dist/{auth → transaction/auth}/schemas.js +13 -13
  238. package/dist/{client → transaction/auth}/sessionMint.d.ts +8 -8
  239. package/dist/{client → transaction/auth}/sessionMint.js +4 -7
  240. package/dist/transaction/coordination/awaitClaimGrant.d.ts +56 -0
  241. package/dist/transaction/coordination/awaitClaimGrant.js +124 -0
  242. package/dist/{client → transaction/coordination}/claimHeartbeatLoop.d.ts +34 -0
  243. package/dist/{client → transaction/coordination}/claimHeartbeatLoop.js +20 -0
  244. package/dist/transaction/coordination/claimMeta.d.ts +49 -0
  245. package/dist/transaction/coordination/claimMeta.js +52 -0
  246. package/dist/transaction/coordination/createClaimStream.d.ts +64 -0
  247. package/dist/transaction/coordination/createClaimStream.js +475 -0
  248. package/dist/transaction/coordination/events.d.ts +74 -0
  249. package/dist/transaction/coordination/events.js +7 -0
  250. package/dist/transaction/coordination/index.d.ts +19 -0
  251. package/dist/transaction/coordination/index.js +45 -0
  252. package/dist/transaction/coordination/locator.d.ts +104 -0
  253. package/dist/transaction/coordination/locator.js +102 -0
  254. package/dist/transaction/coordination/schema.d.ts +1536 -0
  255. package/dist/transaction/coordination/schema.js +1177 -0
  256. package/dist/transaction/coordination/targetConflict.d.ts +2 -0
  257. package/dist/transaction/coordination/targetConflict.js +107 -0
  258. package/dist/{coordination → transaction/coordination}/trace.d.ts +7 -18
  259. package/dist/{coordination → transaction/coordination}/trace.js +18 -25
  260. package/dist/transaction/durableWrites.d.ts +62 -0
  261. package/dist/{client → transaction}/durableWrites.js +28 -3
  262. package/dist/transaction/environment.d.ts +105 -0
  263. package/dist/transaction/environment.js +108 -0
  264. package/dist/{errorCodes.d.ts → transaction/errorCodes.d.ts} +12 -12
  265. package/dist/{errorCodes.js → transaction/errorCodes.js} +45 -18
  266. package/dist/{errors.d.ts → transaction/errors.d.ts} +37 -13
  267. package/dist/{errors.js → transaction/errors.js} +85 -16
  268. package/dist/transaction/footprint.d.ts +111 -0
  269. package/dist/transaction/footprint.js +0 -0
  270. package/dist/transaction/index.d.ts +20 -0
  271. package/dist/transaction/index.js +20 -0
  272. package/dist/transaction/keys/index.d.ts +87 -0
  273. package/dist/transaction/keys/index.js +207 -0
  274. package/dist/transaction/log/syncDeltaRow.d.ts +158 -0
  275. package/dist/transaction/log/syncDeltaRow.js +95 -0
  276. package/dist/{sync/syncPosition.d.ts → transaction/logPosition.d.ts} +22 -8
  277. package/dist/{sync/syncPosition.js → transaction/logPosition.js} +15 -6
  278. package/dist/transaction/logger.d.ts +16 -0
  279. package/dist/transaction/logger.js +7 -0
  280. package/dist/transaction/observability.d.ts +53 -0
  281. package/dist/transaction/observability.js +19 -0
  282. package/dist/transaction/plugin.d.ts +285 -0
  283. package/dist/transaction/plugin.js +106 -0
  284. package/dist/{policy → transaction/policy}/types.d.ts +3 -3
  285. package/dist/{policy → transaction/policy}/types.js +2 -0
  286. package/dist/transaction/resources/httpResources.d.ts +321 -0
  287. package/dist/transaction/resources/httpResources.js +7 -0
  288. package/dist/transaction/resources/modelOperations.d.ts +427 -0
  289. package/dist/transaction/resources/modelOperations.js +12 -0
  290. package/dist/transaction/resources/mutationOptions.d.ts +66 -0
  291. package/dist/transaction/resources/mutationOptions.js +9 -0
  292. package/dist/transaction/resources/where.d.ts +101 -0
  293. package/dist/transaction/resources/where.js +115 -0
  294. package/dist/{client → transaction/resources}/writeOptionsSchema.d.ts +2 -6
  295. package/dist/{client → transaction/resources}/writeOptionsSchema.js +9 -5
  296. package/dist/{schema → transaction/schema}/field.d.ts +17 -23
  297. package/dist/{schema → transaction/schema}/field.js +5 -5
  298. package/dist/transaction/schema/fieldRef.d.ts +38 -0
  299. package/dist/transaction/schema/fieldRef.js +11 -0
  300. package/dist/transaction/schema/loadStrategy.d.ts +45 -0
  301. package/dist/transaction/schema/loadStrategy.js +46 -0
  302. package/dist/{schema → transaction/schema}/model.d.ts +50 -35
  303. package/dist/{schema → transaction/schema}/model.js +30 -20
  304. package/dist/transaction/schema/openapi.d.ts +58 -0
  305. package/dist/transaction/schema/openapi.js +501 -0
  306. package/dist/{schema → transaction/schema}/relation.d.ts +21 -16
  307. package/dist/{schema → transaction/schema}/relation.js +7 -7
  308. package/dist/{schema → transaction/schema}/residency.d.ts +0 -9
  309. package/dist/{schema → transaction/schema}/residency.js +0 -5
  310. package/dist/{schema → transaction/schema}/roles.d.ts +5 -5
  311. package/dist/{schema → transaction/schema}/roles.js +5 -5
  312. package/dist/{schema → transaction/schema}/schema.d.ts +39 -10
  313. package/dist/{schema → transaction/schema}/schema.js +24 -3
  314. package/dist/{schema → transaction/schema}/tenancy.d.ts +1 -1
  315. package/dist/{schema → transaction/schema}/tenancy.js +7 -4
  316. package/dist/transaction/transactionLayer.d.ts +82 -0
  317. package/dist/transaction/transactionLayer.js +24 -0
  318. package/dist/{transactions → transaction/transactions/settlement}/commitEnvelope.d.ts +5 -6
  319. package/dist/{transactions → transaction/transactions/settlement}/commitEnvelope.js +9 -13
  320. package/dist/{transactions → transaction/transactions/settlement}/httpCommitEnvelope.d.ts +9 -2
  321. package/dist/{transactions → transaction/transactions/settlement}/httpCommitEnvelope.js +5 -9
  322. package/dist/{transactions/durableWriteStore.d.ts → transaction/transactions/settlement/pendingWrite.d.ts} +11 -37
  323. package/dist/transaction/transactions/settlement/pendingWrite.js +20 -0
  324. package/dist/transaction/transport/commitFrames.d.ts +90 -0
  325. package/dist/transaction/transport/commitFrames.js +134 -0
  326. package/dist/transaction/transport/connectionManager.d.ts +215 -0
  327. package/dist/transaction/transport/connectionManager.js +673 -0
  328. package/dist/transaction/transport/credentialLifecycle.d.ts +177 -0
  329. package/dist/transaction/transport/credentialLifecycle.js +324 -0
  330. package/dist/{sync → transaction/transport}/heartbeat.d.ts +3 -1
  331. package/dist/{sync → transaction/transport}/heartbeat.js +6 -4
  332. package/dist/transaction/transport/httpClient.d.ts +131 -0
  333. package/dist/{client → transaction/transport}/httpClient.js +6 -5
  334. package/dist/transaction/transport/httpOptions.d.ts +33 -0
  335. package/dist/transaction/transport/httpOptions.js +12 -0
  336. package/dist/{client → transaction/transport}/httpTransport.js +295 -97
  337. package/dist/{sync/NetworkProbe.d.ts → transaction/transport/networkProbe.d.ts} +7 -4
  338. package/dist/{sync/NetworkProbe.js → transaction/transport/networkProbe.js} +14 -13
  339. package/dist/transaction/transport/wsFrameHandlers.d.ts +128 -0
  340. package/dist/transaction/transport/wsFrameHandlers.js +429 -0
  341. package/dist/transaction/transport/wsTransport.d.ts +574 -0
  342. package/dist/transaction/transport/wsTransport.js +1023 -0
  343. package/dist/transaction/types/assertExact.d.ts +17 -0
  344. package/dist/transaction/types/assertExact.js +1 -0
  345. package/dist/{types → transaction/types}/global.d.ts +17 -2
  346. package/dist/{types → transaction/types}/global.js +2 -1
  347. package/dist/{types → transaction/types}/index.d.ts +14 -46
  348. package/dist/{types → transaction/types}/index.js +7 -16
  349. package/dist/{types → transaction/types}/streams.d.ts +73 -45
  350. package/dist/transaction/utils/duration.d.ts +50 -0
  351. package/dist/{utils → transaction/utils}/duration.js +32 -0
  352. package/dist/{utils → transaction/utils}/json.d.ts +18 -0
  353. package/dist/transaction/utils/json.js +276 -0
  354. package/dist/transaction/wire/accountResponses.d.ts +420 -0
  355. package/dist/transaction/wire/accountResponses.js +290 -0
  356. package/dist/transaction/wire/auth.d.ts +56 -0
  357. package/dist/transaction/wire/auth.js +63 -0
  358. package/dist/transaction/wire/claimEvent.d.ts +76 -0
  359. package/dist/transaction/wire/claimEvent.js +73 -0
  360. package/dist/transaction/wire/claims.d.ts +530 -0
  361. package/dist/transaction/wire/claims.js +327 -0
  362. package/dist/{wire → transaction/wire}/commit.d.ts +125 -193
  363. package/dist/{wire → transaction/wire}/commit.js +68 -47
  364. package/dist/{wire → transaction/wire}/delta.d.ts +66 -17
  365. package/dist/{wire → transaction/wire}/delta.js +37 -13
  366. package/dist/transaction/wire/errorEnvelope.d.ts +72 -0
  367. package/dist/{wire → transaction/wire}/errorEnvelope.js +36 -5
  368. package/dist/transaction/wire/feedCursor.d.ts +60 -0
  369. package/dist/transaction/wire/feedCursor.js +82 -0
  370. package/dist/transaction/wire/feedEvent.d.ts +204 -0
  371. package/dist/transaction/wire/feedEvent.js +65 -0
  372. package/dist/transaction/wire/frames.d.ts +194 -0
  373. package/dist/transaction/wire/frames.js +50 -0
  374. package/dist/transaction/wire/inboundFrames.d.ts +562 -0
  375. package/dist/transaction/wire/inboundFrames.js +116 -0
  376. package/dist/transaction/wire/index.d.ts +54 -0
  377. package/dist/transaction/wire/index.js +83 -0
  378. package/dist/{wire → transaction/wire}/listEnvelope.d.ts +13 -14
  379. package/dist/transaction/wire/listEnvelope.js +42 -0
  380. package/dist/transaction/wire/modelMutations.d.ts +31 -0
  381. package/dist/transaction/wire/modelMutations.js +52 -0
  382. package/dist/transaction/wire/modelResponses.d.ts +85 -0
  383. package/dist/transaction/wire/modelResponses.js +43 -0
  384. package/dist/transaction/wire/modelShape.d.ts +78 -0
  385. package/dist/transaction/wire/modelShape.js +74 -0
  386. package/dist/transactions/{TransactionQueue.d.ts → mutations/MutationQueue.d.ts} +85 -38
  387. package/dist/transactions/{TransactionQueue.js → mutations/MutationQueue.js} +141 -80
  388. package/dist/transactions/{TransactionStore.d.ts → mutations/MutationStore.d.ts} +8 -8
  389. package/dist/transactions/{TransactionStore.js → mutations/MutationStore.js} +2 -2
  390. package/dist/transactions/{coalesceRules.d.ts → mutations/coalesceRules.d.ts} +10 -10
  391. package/dist/transactions/{coalesceRules.js → mutations/coalesceRules.js} +1 -1
  392. package/dist/transactions/mutations/commitLatency.d.ts +52 -0
  393. package/dist/transactions/mutations/commitLatency.js +130 -0
  394. package/dist/transactions/{commitOutboxStore.d.ts → mutations/commitOutboxStore.d.ts} +1 -5
  395. package/dist/transactions/{commitOutboxStore.js → mutations/commitOutboxStore.js} +1 -1
  396. package/dist/transactions/{commitPayload.d.ts → mutations/commitPayload.d.ts} +18 -16
  397. package/dist/transactions/{commitPayload.js → mutations/commitPayload.js} +15 -15
  398. package/dist/transactions/{deltaConfirmation.d.ts → mutations/deltaConfirmation.d.ts} +15 -11
  399. package/dist/transactions/{deltaConfirmation.js → mutations/deltaConfirmation.js} +14 -12
  400. package/dist/transactions/mutations/durableWriteStore.d.ts +14 -0
  401. package/dist/transactions/mutations/durableWriteStore.js +12 -0
  402. package/dist/transactions/{optimisticApply.d.ts → mutations/optimisticApply.d.ts} +7 -7
  403. package/dist/transactions/{replayValidation.d.ts → mutations/replayValidation.d.ts} +4 -3
  404. package/dist/transactions/{replayValidation.js → mutations/replayValidation.js} +7 -5
  405. package/dist/utils/mobxSetup.d.ts +1 -1
  406. package/dist/utils/mobxSetup.js +5 -2
  407. package/dist/{core → views}/QueryView.d.ts +2 -2
  408. package/dist/{core → views}/QueryView.js +2 -2
  409. package/dist/{core → views}/ViewRegistry.d.ts +1 -1
  410. package/dist/{core/queryUtils.d.ts → views/incrementalView.d.ts} +6 -6
  411. package/dist/{core/queryUtils.js → views/incrementalView.js} +6 -6
  412. package/dist/webhooks/events.d.ts +2 -2
  413. package/dist/wire/index.d.ts +1 -34
  414. package/dist/wire/index.js +8 -49
  415. package/docs/agent-messaging.md +3 -3
  416. package/docs/agents.md +20 -13
  417. package/docs/api-keys.md +14 -10
  418. package/docs/api.md +27 -61
  419. package/docs/audit.md +6 -3
  420. package/docs/cli.md +41 -13
  421. package/docs/client-behavior.md +11 -9
  422. package/docs/concurrency-convention.md +49 -57
  423. package/docs/coordination.md +283 -121
  424. package/docs/data-sources.md +7 -5
  425. package/docs/debugging.md +39 -15
  426. package/docs/deployment.md +267 -0
  427. package/docs/examples/agent-human.md +49 -42
  428. package/docs/examples/ai-sdk-tool.md +69 -44
  429. package/docs/examples/existing-python-backend.md +8 -6
  430. package/docs/examples/nextjs.md +129 -47
  431. package/docs/examples/scoped-agent.md +46 -45
  432. package/docs/examples/server-agent.md +46 -26
  433. package/docs/groups.md +87 -30
  434. package/docs/guarantees.md +41 -12
  435. package/docs/how-it-works.md +38 -12
  436. package/docs/idempotency.md +126 -0
  437. package/docs/identity.md +77 -74
  438. package/docs/index.md +172 -86
  439. package/docs/integration-guide.md +31 -19
  440. package/docs/mcp.md +46 -21
  441. package/docs/migration.md +95 -18
  442. package/docs/operating-on-your-database.md +3 -1
  443. package/docs/projects.md +3 -1
  444. package/docs/quickstart.md +22 -5
  445. package/docs/react.md +31 -18
  446. package/docs/schema-contract.md +5 -3
  447. package/docs/session-settings.md +108 -0
  448. package/docs/sessions.md +4 -2
  449. package/docs/webhooks.md +12 -10
  450. package/llms.txt +48 -18
  451. package/package.json +21 -26
  452. package/dist/agent/Agent.d.ts +0 -366
  453. package/dist/agent/Agent.js +0 -514
  454. package/dist/agent/index.d.ts +0 -115
  455. package/dist/agent/index.js +0 -128
  456. package/dist/agent/session.d.ts +0 -93
  457. package/dist/agent/session.js +0 -149
  458. package/dist/agent/types.d.ts +0 -68
  459. package/dist/agent/types.js +0 -9
  460. package/dist/cli.cjs +0 -286329
  461. package/dist/client/durableWrites.d.ts +0 -21
  462. package/dist/client/httpClient.d.ts +0 -80
  463. package/dist/coordination/schema.d.ts +0 -722
  464. package/dist/coordination/schema.js +0 -578
  465. package/dist/schema/openapi.d.ts +0 -29
  466. package/dist/schema/openapi.js +0 -124
  467. package/dist/testing/fixtures/bootstrap.d.ts +0 -49
  468. package/dist/testing/fixtures/bootstrap.js +0 -59
  469. package/dist/testing/fixtures/deltas.d.ts +0 -83
  470. package/dist/testing/fixtures/deltas.js +0 -136
  471. package/dist/testing/fixtures/models.d.ts +0 -83
  472. package/dist/testing/fixtures/models.js +0 -272
  473. package/dist/testing/helpers/reactWrapper.d.ts +0 -69
  474. package/dist/testing/helpers/reactWrapper.js +0 -67
  475. package/dist/testing/helpers/syncEngineHarness.d.ts +0 -54
  476. package/dist/testing/helpers/syncEngineHarness.js +0 -73
  477. package/dist/testing/helpers/wait.d.ts +0 -30
  478. package/dist/testing/helpers/wait.js +0 -49
  479. package/dist/testing/index.d.ts +0 -23
  480. package/dist/testing/index.js +0 -33
  481. package/dist/testing/mocks/FakeDatabase.d.ts +0 -18
  482. package/dist/testing/mocks/FakeDatabase.js +0 -10
  483. package/dist/testing/mocks/MockMutationExecutor.d.ts +0 -87
  484. package/dist/testing/mocks/MockMutationExecutor.js +0 -192
  485. package/dist/testing/mocks/MockNetworkMonitor.d.ts +0 -20
  486. package/dist/testing/mocks/MockNetworkMonitor.js +0 -46
  487. package/dist/testing/mocks/MockSyncContext.d.ts +0 -51
  488. package/dist/testing/mocks/MockSyncContext.js +0 -71
  489. package/dist/testing/mocks/MockSyncStore.d.ts +0 -88
  490. package/dist/testing/mocks/MockSyncStore.js +0 -171
  491. package/dist/testing/mocks/MockWebSocket.d.ts +0 -71
  492. package/dist/testing/mocks/MockWebSocket.js +0 -118
  493. package/dist/transactions/durableWriteStore.js +0 -30
  494. package/dist/utils/duration.d.ts +0 -25
  495. package/dist/utils/json.js +0 -88
  496. package/dist/wire/errorEnvelope.d.ts +0 -55
  497. package/dist/wire/frames.d.ts +0 -197
  498. package/dist/wire/frames.js +0 -49
  499. package/dist/wire/listEnvelope.js +0 -18
  500. package/docs/interaction-model.md +0 -97
  501. /package/dist/{core → query}/QueryProcessor.d.ts +0 -0
  502. /package/dist/{core → query}/QueryProcessor.js +0 -0
  503. /package/dist/{core/storeContract.js → storeContract.js} +0 -0
  504. /package/dist/{core → stores}/openIDBWithTimeout.d.ts +0 -0
  505. /package/dist/{core → stores}/openIDBWithTimeout.js +0 -0
  506. /package/dist/{client → transaction/auth}/credentialEndpoint.d.ts +0 -0
  507. /package/dist/{client → transaction/auth}/credentialEndpoint.js +0 -0
  508. /package/dist/{auth → transaction/auth}/credentialPolicy.d.ts +0 -0
  509. /package/dist/{auth → transaction/auth}/credentialPolicy.js +0 -0
  510. /package/dist/{auth → transaction/auth}/credentialSource.js +0 -0
  511. /package/dist/{client → transaction/auth}/hostedEndpoints.d.ts +0 -0
  512. /package/dist/{client → transaction/auth}/hostedEndpoints.js +0 -0
  513. /package/dist/{client → transaction}/persistence.d.ts +0 -0
  514. /package/dist/{client → transaction}/persistence.js +0 -0
  515. /package/dist/{client → transaction/resources}/functionalUpdate.d.ts +0 -0
  516. /package/dist/{client → transaction/resources}/functionalUpdate.js +0 -0
  517. /package/dist/{transactions → transaction/transactions/settlement}/idempotencyKey.d.ts +0 -0
  518. /package/dist/{transactions → transaction/transactions/settlement}/idempotencyKey.js +0 -0
  519. /package/dist/{client → transaction/transport}/httpTransport.d.ts +0 -0
  520. /package/dist/{types → transaction/types}/modelData.d.ts +0 -0
  521. /package/dist/{types → transaction/types}/modelData.js +0 -0
  522. /package/dist/{types → transaction/types}/participant.d.ts +0 -0
  523. /package/dist/{types → transaction/types}/participant.js +0 -0
  524. /package/dist/{types → transaction/types}/streams.js +0 -0
  525. /package/dist/{utils → transaction/utils}/asyncIterator.d.ts +0 -0
  526. /package/dist/{utils → transaction/utils}/asyncIterator.js +0 -0
  527. /package/dist/{wire → transaction/wire}/bootstrapReason.d.ts +0 -0
  528. /package/dist/{wire → transaction/wire}/bootstrapReason.js +0 -0
  529. /package/dist/{wire → transaction/wire}/protocol.d.ts +0 -0
  530. /package/dist/{wire → transaction/wire}/protocol.js +0 -0
  531. /package/dist/{wire → transaction/wire}/protocolVersion.d.ts +0 -0
  532. /package/dist/{wire → transaction/wire}/protocolVersion.js +0 -0
  533. /package/dist/transactions/{UnconfirmedWrites.d.ts → mutations/UnconfirmedWrites.d.ts} +0 -0
  534. /package/dist/transactions/{UnconfirmedWrites.js → mutations/UnconfirmedWrites.js} +0 -0
  535. /package/dist/transactions/{optimisticApply.js → mutations/optimisticApply.js} +0 -0
  536. /package/dist/{core → views}/ViewRegistry.js +0 -0
@@ -3,13 +3,13 @@
3
3
  * browser — one per registered model — alongside the single
4
4
  * {@link SyncActionStore} for pending changes. It creates each store from the
5
5
  * model's metadata, tracks readiness, and provisions the underlying IndexedDB
6
- * object stores. A model's load strategy (instant, lazy, or partial) decides
7
- * how and when its data is loaded.
6
+ * object stores. A model's load strategy instant or lazy decides how and
7
+ * when its data is loaded.
8
8
  */
9
9
  import { ModelRegistry } from '../ModelRegistry.js';
10
- import { ObjectStore } from '../stores/ObjectStore.js';
11
- import { SyncActionStore } from '../stores/SyncActionStore.js';
12
- import { LoadStrategy } from '../types/index.js';
10
+ import { ObjectStore } from './ObjectStore.js';
11
+ import { SyncActionStore } from './SyncActionStore.js';
12
+ import { LoadStrategy } from '../transaction/types/index.js';
13
13
  /**
14
14
  * StoreManager - Central manager for all ObjectStore instances
15
15
  *
@@ -20,6 +20,7 @@ import { LoadStrategy } from '../types/index.js';
20
20
  * - Handles store-specific optimizations based on load strategies
21
21
  */
22
22
  export declare class StoreManager {
23
+ private readonly runtime;
23
24
  private stores;
24
25
  /** Strict-durability wrapper for the client write journal and commit outbox. */
25
26
  private transactionStore;
@@ -27,7 +28,7 @@ export declare class StoreManager {
27
28
  private db;
28
29
  private isInitialized;
29
30
  private modelRegistry;
30
- constructor(modelRegistry: ModelRegistry);
31
+ constructor(modelRegistry: ModelRegistry, runtime?: RuntimeContext);
31
32
  /**
32
33
  * Initialize all stores for registered models
33
34
  */
@@ -39,7 +40,7 @@ export declare class StoreManager {
39
40
  /**
40
41
  * Create stores (tables) in IndexedDB
41
42
  */
42
- createStores(db: IDBDatabase, transaction: IDBTransaction): Promise<void>;
43
+ createStores(db: IDBDatabase): Promise<void>;
43
44
  /**
44
45
  * Create special tables (sync_action_table, model_table, model_table_partial, __meta, __transactions)
45
46
  */
@@ -74,25 +75,10 @@ export declare class StoreManager {
74
75
  * than scanning them all, and returns true as soon as one has records.
75
76
  */
76
77
  hasAnyData(): Promise<boolean>;
77
- /**
78
- * Get store type distribution for debugging
79
- */
80
- getStoreTypeDistribution(): {
81
- full: number;
82
- partial: number;
83
- };
84
78
  /**
85
79
  * Get stores by load strategy
86
80
  */
87
81
  getStoresByStrategy(strategy: LoadStrategy): ObjectStore[];
88
- /**
89
- * Get models to load for bootstrapping
90
- */
91
- getModelsToLoad(): {
92
- instant: string[];
93
- lazy: string[];
94
- partial: string[];
95
- };
96
82
  /**
97
83
  * Perform maintenance on all stores
98
84
  */
@@ -111,10 +97,6 @@ export declare class StoreManager {
111
97
  */
112
98
  getComprehensiveStats(): Promise<{
113
99
  totalStores: number;
114
- storeTypes: {
115
- full: number;
116
- partial: number;
117
- };
118
100
  readiness: {
119
101
  ready: number;
120
102
  notReady: number;
@@ -129,3 +111,4 @@ export declare class StoreManager {
129
111
  }[];
130
112
  }>;
131
113
  }
114
+ import type { RuntimeContext } from '../RuntimeContext.js';
@@ -3,14 +3,14 @@
3
3
  * browser — one per registered model — alongside the single
4
4
  * {@link SyncActionStore} for pending changes. It creates each store from the
5
5
  * model's metadata, tracks readiness, and provisions the underlying IndexedDB
6
- * object stores. A model's load strategy (instant, lazy, or partial) decides
7
- * how and when its data is loaded.
6
+ * object stores. A model's load strategy instant or lazy decides how and
7
+ * when its data is loaded.
8
8
  */
9
9
  import { ModelRegistry } from '../ModelRegistry.js';
10
- import { ObjectStore } from '../stores/ObjectStore.js';
11
- import { SyncActionStore } from '../stores/SyncActionStore.js';
12
- import { LoadStrategy } from '../types/index.js';
13
- import { AbloValidationError } from '../errors.js';
10
+ import { ObjectStore } from './ObjectStore.js';
11
+ import { SyncActionStore } from './SyncActionStore.js';
12
+ import { LoadStrategy } from '../transaction/types/index.js';
13
+ import { AbloValidationError } from '../transaction/errors.js';
14
14
  /**
15
15
  * StoreManager - Central manager for all ObjectStore instances
16
16
  *
@@ -21,6 +21,7 @@ import { AbloValidationError } from '../errors.js';
21
21
  * - Handles store-specific optimizations based on load strategies
22
22
  */
23
23
  export class StoreManager {
24
+ runtime;
24
25
  stores = new Map();
25
26
  /** Strict-durability wrapper for the client write journal and commit outbox. */
26
27
  transactionStore = null;
@@ -28,7 +29,8 @@ export class StoreManager {
28
29
  db = null;
29
30
  isInitialized = false;
30
31
  modelRegistry;
31
- constructor(modelRegistry) {
32
+ constructor(modelRegistry, runtime = globalRuntime) {
33
+ this.runtime = runtime;
32
34
  this.modelRegistry = modelRegistry;
33
35
  }
34
36
  /**
@@ -38,10 +40,10 @@ export class StoreManager {
38
40
  this.db = db;
39
41
  if (this.isInitialized) {
40
42
  // Idempotent re-entry — harmless, nothing for the consumer to act on → debug.
41
- getContext().logger.debug('StoreManager already initialized');
43
+ this.runtime.logger.debug('StoreManager already initialized');
42
44
  return;
43
45
  }
44
- getContext().logger.info('Initializing ObjectStore instances for all models');
46
+ this.runtime.logger.info('Initializing ObjectStore instances for all models');
45
47
  const startTime = performance.now();
46
48
  // Get all registered models
47
49
  const allModels = this.modelRegistry.getRegisteredModelNames();
@@ -55,17 +57,14 @@ export class StoreManager {
55
57
  // mode.
56
58
  this.transactionStore = new ObjectStore(this.db, '__transactions', '__transactions', { loadStrategy: LoadStrategy.instant }, 'strict');
57
59
  // Initialize SyncactionStore
58
- this.syncactionStore = new SyncActionStore(this.db);
60
+ this.syncactionStore = new SyncActionStore(this.db, this.runtime);
59
61
  await this.syncactionStore.initialize();
60
62
  this.isInitialized = true;
61
63
  const duration = performance.now() - startTime;
62
- getContext().logger.info('Initialized ObjectStores and SyncactionStore', {
64
+ this.runtime.logger.info('Initialized ObjectStores and SyncactionStore', {
63
65
  count: this.stores.size,
64
66
  ms: duration.toFixed(2),
65
67
  });
66
- // Log store distribution
67
- const storeTypes = this.getStoreTypeDistribution();
68
- getContext().logger.debug('Store distribution', storeTypes);
69
68
  }
70
69
  /**
71
70
  * Create ObjectStore for a specific model
@@ -86,16 +85,15 @@ export class StoreManager {
86
85
  /**
87
86
  * Create stores (tables) in IndexedDB
88
87
  */
89
- async createStores(db, transaction) {
90
- getContext().logger.info('Creating tables for all registered models');
88
+ async createStores(db) {
89
+ this.runtime.logger.info('Creating tables for all registered models');
91
90
  for (const modelName of this.modelRegistry.getRegisteredModelNames()) {
92
91
  const storeName = modelName;
93
- const metadata = this.modelRegistry.getMetadata(modelName);
94
92
  // Skip if store already exists
95
93
  if (db.objectStoreNames.contains(storeName)) {
96
94
  continue;
97
95
  }
98
- getContext().logger.debug('Creating table', { storeName, modelName });
96
+ this.runtime.logger.debug('Creating table', { storeName, modelName });
99
97
  // Create object store with id as keyPath
100
98
  const store = db.createObjectStore(storeName, { keyPath: 'id' });
101
99
  // Create indexes for indexed properties
@@ -103,18 +101,14 @@ export class StoreManager {
103
101
  for (const propName of indexedProperties) {
104
102
  try {
105
103
  store.createIndex(propName, propName, { unique: false });
106
- getContext().logger.debug('Created index', { store: storeName, prop: propName });
104
+ this.runtime.logger.debug('Created index', { store: storeName, prop: propName });
107
105
  }
108
106
  catch (error) {
109
107
  // Internal IndexedDB index setup — a miss only affects local query
110
108
  // speed and isn't consumer-actionable → debug.
111
- getContext().logger.debug('Failed to create index', { store: storeName, prop: propName, error });
109
+ this.runtime.logger.debug('Failed to create index', { store: storeName, prop: propName, error });
112
110
  }
113
111
  }
114
- // For partial load strategy models, we'll create additional partial index database later
115
- if (metadata?.loadStrategy === LoadStrategy.partial) {
116
- getContext().logger.debug('Model will have additional partial index database', { modelName });
117
- }
118
112
  }
119
113
  // Create special tables
120
114
  this.createSpecialTables(db);
@@ -127,12 +121,12 @@ export class StoreManager {
127
121
  if (!db.objectStoreNames.contains('sync_action_table')) {
128
122
  const syncActionStore = db.createObjectStore('sync_action_table', { keyPath: 'id' });
129
123
  syncActionStore.createIndex('syncId', 'id');
130
- getContext().logger.debug('Created sync_action_table');
124
+ this.runtime.logger.debug('Created sync_action_table');
131
125
  }
132
126
  // Create __meta table for model persistence state and database metadata
133
127
  if (!db.objectStoreNames.contains('__meta')) {
134
128
  db.createObjectStore('__meta');
135
- getContext().logger.debug('Created __meta table');
129
+ this.runtime.logger.debug('Created __meta table');
136
130
  }
137
131
  // Create __transactions table for unsent transactions
138
132
  if (!db.objectStoreNames.contains('__transactions')) {
@@ -143,7 +137,7 @@ export class StoreManager {
143
137
  // Create indexes for transaction queries
144
138
  transactionStore.createIndex('timestamp', 'timestamp');
145
139
  transactionStore.createIndex('status', 'status');
146
- getContext().logger.debug('Created __transactions table');
140
+ this.runtime.logger.debug('Created __transactions table');
147
141
  }
148
142
  }
149
143
  /**
@@ -183,7 +177,7 @@ export class StoreManager {
183
177
  }
184
178
  }
185
179
  const allReady = notReadyStores.length === 0;
186
- getContext().logger.debug('Store readiness', {
180
+ this.runtime.logger.debug('Store readiness', {
187
181
  ready: readyStores.length,
188
182
  total: this.stores.size,
189
183
  notReady: notReadyStores,
@@ -223,23 +217,6 @@ export class StoreManager {
223
217
  }
224
218
  return false;
225
219
  }
226
- /**
227
- * Get store type distribution for debugging
228
- */
229
- getStoreTypeDistribution() {
230
- let full = 0;
231
- let partial = 0;
232
- for (const [modelName] of Array.from(this.stores)) {
233
- const metadata = this.modelRegistry.getMetadata(modelName);
234
- if (metadata?.loadStrategy === LoadStrategy.partial) {
235
- partial++;
236
- }
237
- else {
238
- full++;
239
- }
240
- }
241
- return { full, partial };
242
- }
243
220
  /**
244
221
  * Get stores by load strategy
245
222
  */
@@ -253,38 +230,14 @@ export class StoreManager {
253
230
  }
254
231
  return stores;
255
232
  }
256
- /**
257
- * Get models to load for bootstrapping
258
- */
259
- getModelsToLoad() {
260
- const instant = [];
261
- const lazy = [];
262
- const partial = [];
263
- for (const [modelName] of Array.from(this.stores)) {
264
- const metadata = this.modelRegistry.getMetadata(modelName);
265
- switch (metadata?.loadStrategy) {
266
- case LoadStrategy.instant:
267
- instant.push(modelName);
268
- break;
269
- case LoadStrategy.lazy:
270
- lazy.push(modelName);
271
- break;
272
- case LoadStrategy.partial:
273
- partial.push(modelName);
274
- break;
275
- // Skip explicitlyRequested and local
276
- }
277
- }
278
- return { instant, lazy, partial };
279
- }
280
233
  /**
281
234
  * Perform maintenance on all stores
282
235
  */
283
236
  async performMaintenance() {
284
- getContext().logger.info('Performing maintenance on all stores');
237
+ this.runtime.logger.info('Performing maintenance on all stores');
285
238
  const promises = Array.from(this.stores.values()).map((store) => store.performMaintenance());
286
239
  await Promise.all(promises);
287
- getContext().logger.info('Store maintenance completed');
240
+ this.runtime.logger.info('Store maintenance completed');
288
241
  }
289
242
  /**
290
243
  * Clear all stores
@@ -292,17 +245,17 @@ export class StoreManager {
292
245
  async clearAllStores() {
293
246
  // Lifecycle chatter (logout / identity switch / reset), not a warning.
294
247
  // Logged at `debug` so it stays silent under the default `warn` threshold.
295
- getContext().logger.debug('Clearing all stores');
248
+ this.runtime.logger.debug('Clearing all stores');
296
249
  const promises = Array.from(this.stores.values()).map((store) => store.clear());
297
250
  await Promise.all(promises);
298
- getContext().logger.info('All stores cleared');
251
+ this.runtime.logger.info('All stores cleared');
299
252
  }
300
253
  /**
301
254
  * Mark all stores as closing to prevent new operations
302
255
  * Called before database connection is closed
303
256
  */
304
257
  markAllStoresAsClosing() {
305
- getContext().logger.debug('Marking all stores as closing');
258
+ this.runtime.logger.debug('Marking all stores as closing');
306
259
  for (const store of this.stores.values()) {
307
260
  store.markAsClosing();
308
261
  }
@@ -312,7 +265,7 @@ export class StoreManager {
312
265
  // If closing-state coordination is ever needed for sync actions, add it
313
266
  // explicitly to SyncActionStore rather than casting to reach a method that
314
267
  // may not exist.
315
- getContext().logger.debug('All stores marked as closing');
268
+ this.runtime.logger.debug('All stores marked as closing');
316
269
  }
317
270
  /**
318
271
  * Get comprehensive statistics
@@ -339,7 +292,6 @@ export class StoreManager {
339
292
  }
340
293
  return {
341
294
  totalStores: this.stores.size,
342
- storeTypes: this.getStoreTypeDistribution(),
343
295
  readiness: {
344
296
  ready: readyCount,
345
297
  notReady: this.stores.size - readyCount,
@@ -349,4 +301,4 @@ export class StoreManager {
349
301
  };
350
302
  }
351
303
  }
352
- import { getContext } from '../context.js';
304
+ import { globalRuntime } from '../context.js';
@@ -2,7 +2,8 @@
2
2
  * A local, IndexedDB-backed store for the sync actions (change deltas) the
3
3
  * server sends. See {@link SyncActionStore}.
4
4
  */
5
- import type { SyncAction } from '../types/index.js';
5
+ import type { RuntimeContext } from '../RuntimeContext.js';
6
+ import { type SyncAction } from './syncAction.js';
6
7
  /**
7
8
  * Stores the sync actions (the change deltas) the server sends, keyed by
8
9
  * their sync id, and tracks which ones have been applied. It keeps a
@@ -11,11 +12,12 @@ import type { SyncAction } from '../types/index.js';
11
12
  * replayed while resolving a conflict.
12
13
  */
13
14
  export declare class SyncActionStore {
15
+ private readonly runtime;
14
16
  private db;
15
17
  private storeName;
16
18
  private lastAppliedSyncId;
17
19
  private pendingActions;
18
- constructor(db: IDBDatabase);
20
+ constructor(db: IDBDatabase, runtime?: RuntimeContext);
19
21
  /**
20
22
  * Initialize store (create if needed)
21
23
  */
@@ -3,8 +3,8 @@
3
3
  * server sends. See {@link SyncActionStore}.
4
4
  */
5
5
  // Uses native IndexedDB for maximum performance
6
- import { z } from 'zod';
7
- import { getContext } from '../context.js';
6
+ import { globalRuntime } from '../context.js';
7
+ import { syncActionSchema } from './syncAction.js';
8
8
  /**
9
9
  * The validation boundary for rows read back from the store. A row may have
10
10
  * been written by an earlier session, so this build cannot assume its shape.
@@ -13,19 +13,11 @@ import { getContext } from '../context.js';
13
13
  * {@link SyncAction}. A row that fails to parse is dropped and logged rather
14
14
  * than replayed as a malformed delta.
15
15
  */
16
- const storedSyncActionSchema = z.object({
17
- id: z.number(),
18
- modelName: z.string(),
19
- modelId: z.string(),
20
- action: z.enum(['I', 'U', 'A', 'D', 'C', 'G', 'S', 'V']),
21
- data: z.unknown(),
22
- __class: z.literal('SyncAction').default('SyncAction'),
23
- });
24
16
  /** Parse one stored row into a SyncAction, or `null` (dropped + logged). */
25
- function toSyncAction(row) {
26
- const parsed = storedSyncActionSchema.safeParse(row);
17
+ function toSyncAction(row, runtime) {
18
+ const parsed = syncActionSchema.safeParse(row);
27
19
  if (!parsed.success) {
28
- getContext().logger.debug('[SyncActionStore] Dropping malformed stored sync action', {
20
+ runtime.logger.debug('[SyncActionStore] Dropping malformed stored sync action', {
29
21
  issues: parsed.error.issues.map((i) => i.path.join('.')).join(', '),
30
22
  });
31
23
  return null;
@@ -40,11 +32,13 @@ function toSyncAction(row) {
40
32
  * replayed while resolving a conflict.
41
33
  */
42
34
  export class SyncActionStore {
35
+ runtime;
43
36
  db;
44
37
  storeName = 'sync_action_table';
45
38
  lastAppliedSyncId = 0;
46
39
  pendingActions = new Map();
47
- constructor(db) {
40
+ constructor(db, runtime = globalRuntime) {
41
+ this.runtime = runtime;
48
42
  this.db = db;
49
43
  }
50
44
  /**
@@ -129,7 +123,7 @@ export class SyncActionStore {
129
123
  resolve(undefined);
130
124
  return;
131
125
  }
132
- resolve(toSyncAction(data) ?? undefined);
126
+ resolve(toSyncAction(data, this.runtime) ?? undefined);
133
127
  };
134
128
  request.onerror = () => { reject(request.error); };
135
129
  });
@@ -147,7 +141,7 @@ export class SyncActionStore {
147
141
  request.onsuccess = () => {
148
142
  const allData = request.result;
149
143
  const actions = allData
150
- .map(toSyncAction)
144
+ .map((row) => toSyncAction(row, this.runtime))
151
145
  .filter((action) => action !== null);
152
146
  resolve(actions);
153
147
  };
@@ -496,7 +490,7 @@ export class SyncActionStore {
496
490
  try {
497
491
  await this.updateLastSyncId(this.lastAppliedSyncId);
498
492
  const result = actionsToRewind
499
- .map(toSyncAction)
493
+ .map((row) => toSyncAction(row, this.runtime))
500
494
  .filter((action) => action !== null);
501
495
  resolve(result);
502
496
  }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * The persisted local action record consumed by `SyncActionStore`. It is a
3
+ * client materialization artifact, not a transaction-layer wire shape: the
4
+ * authoritative broadcast vocabulary is the settlement core's delta wire
5
+ * schema, while this one adds the local `__class` discriminator IndexedDB uses.
6
+ */
7
+ import { z } from 'zod';
8
+ export declare const syncActionSchema: z.ZodObject<{
9
+ id: z.ZodNumber;
10
+ modelName: z.ZodString;
11
+ modelId: z.ZodString;
12
+ action: z.ZodEnum<{
13
+ I: "I";
14
+ U: "U";
15
+ D: "D";
16
+ A: "A";
17
+ V: "V";
18
+ C: "C";
19
+ G: "G";
20
+ S: "S";
21
+ }>;
22
+ data: z.ZodUnknown;
23
+ __class: z.ZodDefault<z.ZodLiteral<"SyncAction">>;
24
+ }, z.core.$strip>;
25
+ export type SyncAction = z.infer<typeof syncActionSchema>;
26
+ export type SyncActionType = SyncAction['action'];
@@ -0,0 +1,16 @@
1
+ /**
2
+ * The persisted local action record consumed by `SyncActionStore`. It is a
3
+ * client materialization artifact, not a transaction-layer wire shape: the
4
+ * authoritative broadcast vocabulary is the settlement core's delta wire
5
+ * schema, while this one adds the local `__class` discriminator IndexedDB uses.
6
+ */
7
+ import { z } from 'zod';
8
+ import { syncDeltaActionSchema } from '../transaction/wire/delta.js';
9
+ export const syncActionSchema = z.object({
10
+ id: z.number(),
11
+ modelName: z.string(),
12
+ modelId: z.string(),
13
+ action: syncDeltaActionSchema,
14
+ data: z.unknown(),
15
+ __class: z.literal('SyncAction').default('SyncAction'),
16
+ });
package/dist/surface.d.ts CHANGED
@@ -19,9 +19,9 @@
19
19
  * tuple, so it is the one list of model-verb names a generated summary can
20
20
  * describe.
21
21
  */
22
- export declare const PUBLIC_MODEL_VERBS: readonly ["retrieve", "list", "get", "getAll", "getCount", "create", "update", "delete", "claim", "track", "join", "onChange"];
22
+ export declare const PUBLIC_MODEL_VERBS: readonly ["retrieve", "list", "local", "create", "update", "delete", "claim", "track", "join", "onChange"];
23
23
  /**
24
- * The option keys accepted by `list`, `getAll`, and `onChange`, matching the
24
+ * The option keys accepted by `local.list` and `onChange`, matching the
25
25
  * keys of {@link LocalReadOptions}. Note that the lifecycle filter is named
26
26
  * `state`, not `scope`.
27
27
  */
@@ -30,7 +30,7 @@ export declare const PUBLIC_LIST_OPTION_KEYS: readonly ["where", "filter", "orde
30
30
  * The keys of the client constructor options, {@link AbloOptions}. Only
31
31
  * `schema` is required; every other key is optional.
32
32
  */
33
- export declare const PUBLIC_ABLO_OPTION_KEYS: readonly ["schema", "apiKey", "authEndpoint", "persistence", "durableWrites", "commitOutbox", "commitOutboxScope", "transport", "debug", "logLevel", "authToken", "baseURL", "fetch", "defaultHeaders", "defaultQuery", "dangerouslyAllowBrowser"];
33
+ export declare const PUBLIC_ABLO_OPTION_KEYS: readonly ["schema", "apiKey", "authEndpoint", "persistence", "durableWrites", "commitOutbox", "commitOutboxScope", "transport", "debug", "logLevel", "logger", "authToken", "baseURL", "fetch", "defaultHeaders", "defaultQuery", "dangerouslyAllowBrowser", "collaborationEvents", "plugins", "wait"];
34
34
  export type ModelVerb = (typeof PUBLIC_MODEL_VERBS)[number];
35
35
  export type ListOptionKey = (typeof PUBLIC_LIST_OPTION_KEYS)[number];
36
36
  export type AbloOptionKey = (typeof PUBLIC_ABLO_OPTION_KEYS)[number];
package/dist/surface.js CHANGED
@@ -23,9 +23,7 @@
23
23
  export const PUBLIC_MODEL_VERBS = [
24
24
  'retrieve',
25
25
  'list',
26
- 'get',
27
- 'getAll',
28
- 'getCount',
26
+ 'local',
29
27
  'create',
30
28
  'update',
31
29
  'delete',
@@ -36,7 +34,7 @@ export const PUBLIC_MODEL_VERBS = [
36
34
  ];
37
35
  // ── the read/list query option surface ─────────────────────────────────────
38
36
  /**
39
- * The option keys accepted by `list`, `getAll`, and `onChange`, matching the
37
+ * The option keys accepted by `local.list` and `onChange`, matching the
40
38
  * keys of {@link LocalReadOptions}. Note that the lifecycle filter is named
41
39
  * `state`, not `scope`.
42
40
  */
@@ -64,10 +62,14 @@ export const PUBLIC_ABLO_OPTION_KEYS = [
64
62
  'transport',
65
63
  'debug',
66
64
  'logLevel',
65
+ 'logger',
67
66
  'authToken',
68
67
  'baseURL',
69
68
  'fetch',
70
69
  'defaultHeaders',
71
70
  'defaultQuery',
72
71
  'dangerouslyAllowBrowser',
72
+ 'collaborationEvents',
73
+ 'plugins',
74
+ 'wait',
73
75
  ];