@abloatai/ablo 0.36.0 → 0.37.1

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 +55 -2014
  3. package/NOTICE +2 -2
  4. package/README.md +45 -63
  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,118 +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 { createAbloHttpClient, } from '../transaction/transport/httpClient.js';
16
- import { WsTransport } from '../transaction/transport/wsTransport.js';
17
- import { createClaimStream } from '../sync/createClaimStream.js';
18
- import { AbloConnectionError } from '../transaction/errors.js';
19
- /** How long `connect()` waits before reporting the feed did not come up. */
20
- const CONNECT_TIMEOUT_MS = 10_000;
21
- export function createCoreClient(args) {
22
- const { options } = args;
23
- // The stateless surface — the same construction `transport: 'http'` uses,
24
- // fed the same option slice. The endpoint-form `apiKey` (or the legacy
25
- // `authEndpoint`) mints and renews exactly as it does there.
26
- const http = createAbloHttpClient({
27
- schema: options.schema,
28
- apiKey: options.apiKey ?? options.authEndpoint,
29
- baseURL: args.baseUrl,
30
- fetch: options.fetch,
31
- defaultHeaders: options.defaultHeaders,
32
- defaultQuery: options.defaultQuery,
33
- dangerouslyAllowBrowser: options.dangerouslyAllowBrowser,
34
- observability: args.observability,
35
- durableWrites: options.durableWrites,
36
- // Forwarding the compatibility aliases IS the compatibility: a caller still
37
- // on the old pair reaches the HTTP client only through here, so this hand-off
38
- // has to outlive the deprecation notice. It goes when the aliases do.
39
- // eslint-disable-next-line @typescript-eslint/no-deprecated -- see above
40
- commitOutbox: options.commitOutbox,
41
- // eslint-disable-next-line @typescript-eslint/no-deprecated -- see above
42
- commitOutboxScope: options.commitOutboxScope,
43
- });
44
- // The live feed. Constructed eagerly (a socket object holds no connection
45
- // until `connect()`), with identity riding the bearer — the server never
46
- // reads identity fields from the client.
47
- const socket = new WsTransport({
48
- baseUrl: args.baseUrl,
49
- kind: args.kind,
50
- getAuthToken: args.getAuthToken,
51
- syncGroups: [...args.syncGroups],
52
- collaborationEvents: [...(options.collaborationEvents ?? [])],
53
- logger: args.logger,
54
- observability: args.observability,
55
- });
56
- // Claim push is core coordination: the stream attaches to the socket now
57
- // and starts reporting the moment the feed opens.
58
- const claims = createClaimStream({ participantId: args.participantId, logger: args.logger }, socket);
59
- function connect(opts) {
60
- if (socket.isConnected())
61
- return Promise.resolve();
62
- const timeoutMs = opts?.timeoutMs ?? CONNECT_TIMEOUT_MS;
63
- return new Promise((resolve, reject) => {
64
- const offs = [];
65
- let done = false;
66
- const settle = (fn) => {
67
- if (done)
68
- return;
69
- done = true;
70
- clearTimeout(timer);
71
- for (const off of offs)
72
- off();
73
- fn();
74
- };
75
- offs.push(socket.subscribe('connected', () => { settle(resolve); }));
76
- offs.push(socket.subscribe('handshake_failed', (event) => {
77
- settle(() => {
78
- reject(new AbloConnectionError(`The live feed's connection was refused (close code ${event.code}). ` +
79
- 'Check the credential and the server URL; reads and writes still work without the feed.', { code: 'ws_not_ready' }));
80
- });
81
- }));
82
- offs.push(socket.subscribe('reconnect_failed', ({ attempts }) => {
83
- settle(() => {
84
- reject(new AbloConnectionError(`The live feed did not come up after ${attempts} attempts. ` +
85
- 'Reads and writes still work without it; call connect() again to retry.', { code: 'ws_not_ready' }));
86
- });
87
- }));
88
- const timer = setTimeout(() => {
89
- settle(() => {
90
- reject(new AbloConnectionError(`The live feed did not connect within ${timeoutMs}ms. ` +
91
- 'Reads and writes still work without it; call connect() again to retry.', { code: 'ws_not_ready' }));
92
- });
93
- }, timeoutMs);
94
- socket.connect();
95
- });
96
- }
97
- // The feed members layered over the stateless surface. `dispose` is
98
- // deliberately shadowed: closing the client closes the feed too.
99
- const feed = {
100
- connect,
101
- disconnect: () => { socket.disconnect(); },
102
- isConnected: () => socket.isConnected(),
103
- subscribe: socket.subscribe.bind(socket),
104
- claims,
105
- dispose: async () => {
106
- claims.dispose();
107
- socket.disconnect();
108
- await http.dispose();
109
- },
110
- };
111
- return new Proxy(http, {
112
- get(target, prop, receiver) {
113
- if (typeof prop === 'string' && prop in feed)
114
- return feed[prop];
115
- return Reflect.get(target, prop, receiver);
116
- },
117
- });
118
- }
@@ -1,50 +0,0 @@
1
- /**
2
- * Builds the internal component graph the client runs on.
3
- *
4
- * From the caller's options and schema this wires together the model registry,
5
- * object pool, bootstrap helper, database, sync client, and hydration
6
- * coordinator. Each component depends on the one before it, so construction
7
- * order matters; keeping it here means the client constructor does not have to
8
- * know that order.
9
- */
10
- import { Database } from '../Database.js';
11
- import { ModelRegistry } from '../ModelRegistry.js';
12
- import { InstanceCache } from '../InstanceCache.js';
13
- import { SyncClient } from '../SyncClient.js';
14
- import { OnDemandLoader } from '../sync/OnDemandLoader.js';
15
- import { BootstrapFetcher } from '../sync/BootstrapFetcher.js';
16
- import type { AuthCredentialSource } from '../transaction/auth/credentialSource.js';
17
- import type { Schema, SchemaRecord } from '../transaction/schema/schema.js';
18
- import { type AbloPersistence } from '../transaction/persistence.js';
19
- import type { DurableWriteStore, DurableWritesConfig } from '../transactions/mutations/durableWriteStore.js';
20
- import type { RuntimeContext } from '../RuntimeContext.js';
21
- export interface InternalComponentsInput<S extends SchemaRecord> {
22
- readonly schema: Schema<S>;
23
- /** The WebSocket URL. Used to derive the bootstrap HTTP base URL when the
24
- * caller has not overridden `bootstrapBaseUrl`. */
25
- readonly url: string;
26
- readonly options: {
27
- readonly maxPoolSize?: number;
28
- readonly bootstrapBaseUrl?: string;
29
- readonly syncGroups?: string[];
30
- readonly persistence?: AbloPersistence;
31
- readonly offline?: boolean;
32
- readonly inMemory?: boolean;
33
- readonly durableWrites?: DurableWritesConfig;
34
- /** @deprecated Use `durableWrites`. */
35
- readonly commitOutbox?: DurableWriteStore;
36
- };
37
- readonly auth?: AuthCredentialSource;
38
- /** The owning client's runtime, threaded into every component built here.
39
- * Defaults to the module-global bridge for direct construction. */
40
- readonly runtime?: RuntimeContext;
41
- }
42
- export interface InternalComponents {
43
- readonly modelRegistry: ModelRegistry;
44
- readonly objectPool: InstanceCache;
45
- readonly bootstrapHelper: BootstrapFetcher;
46
- readonly database: Database;
47
- readonly syncClient: SyncClient;
48
- readonly hydration: OnDemandLoader;
49
- }
50
- export declare function createInternalComponents<S extends SchemaRecord>(input: InternalComponentsInput<S>): InternalComponents;
@@ -1,98 +0,0 @@
1
- /**
2
- * Builds the internal component graph the client runs on.
3
- *
4
- * From the caller's options and schema this wires together the model registry,
5
- * object pool, bootstrap helper, database, sync client, and hydration
6
- * coordinator. Each component depends on the one before it, so construction
7
- * order matters; keeping it here means the client constructor does not have to
8
- * know that order.
9
- */
10
- import { Database } from '../Database.js';
11
- import { ModelRegistry, setActiveRegistry } from '../ModelRegistry.js';
12
- import { InstanceCache } from '../InstanceCache.js';
13
- import { SyncClient } from '../SyncClient.js';
14
- import { OnDemandLoader } from '../sync/OnDemandLoader.js';
15
- import { BootstrapFetcher } from '../sync/BootstrapFetcher.js';
16
- import { loadsAtBootstrap } from '../transaction/schema/loadStrategy.js';
17
- import { resolveBootstrapBaseUrl } from '../transaction/auth/apiKey.js';
18
- import { shouldUseInMemoryPersistence } from '../transaction/persistence.js';
19
- import { globalRuntime } from '../context.js';
20
- import { resolveDurableWrites } from '../transaction/durableWrites.js';
21
- export function createInternalComponents(input) {
22
- const { schema, url, options, auth } = input;
23
- const runtime = input.runtime ?? globalRuntime;
24
- // The registry is created here, but model registration happens in the caller,
25
- // which owns the schema-to-class translation.
26
- const modelRegistry = new ModelRegistry({
27
- validateOnRegister: false,
28
- allowLateReferences: true,
29
- runtime,
30
- });
31
- setActiveRegistry(modelRegistry);
32
- const objectPool = new InstanceCache({ maxSize: options.maxPoolSize ?? 10000, runtime }, modelRegistry);
33
- const bootstrapBaseUrl = resolveBootstrapBaseUrl({
34
- url,
35
- bootstrapBaseUrl: options.bootstrapBaseUrl,
36
- });
37
- const bootstrapHelper = new BootstrapFetcher({
38
- baseUrl: bootstrapBaseUrl,
39
- syncGroups: options.syncGroups,
40
- instantModels: deriveInstantModels(schema),
41
- getAuthToken: auth?.getAuthToken,
42
- runtime,
43
- });
44
- const database = new Database(modelRegistry, bootstrapHelper, {
45
- // By default there is no browser-local durable store unless the caller asks
46
- // for one. Node and edge runtimes always use the in-memory store because
47
- // IndexedDB is unavailable there.
48
- inMemory: shouldUseInMemoryPersistence(options),
49
- runtime,
50
- });
51
- const durableWrites = resolveDurableWrites(options);
52
- const syncClient = new SyncClient(objectPool, database, durableWrites.store, durableWrites.namespace ?? url, runtime);
53
- // Lazy-load lane: hydrates the object pool and IndexedDB on demand for
54
- // entities not in scope at bootstrap (`load: 'lazy'` models, or an entity
55
- // reached by deep link before the pool warmed up). Single-flight, with
56
- // write-through to IndexedDB.
57
- const hydration = new OnDemandLoader({
58
- objectPool,
59
- database,
60
- registry: modelRegistry,
61
- schema,
62
- baseUrl: bootstrapBaseUrl,
63
- getAuthToken: auth?.getAuthToken,
64
- runtime,
65
- });
66
- // Drop the lazy-lane hydration ledger on reconnect. While connected, the
67
- // WebSocket delta stream keeps hydrated rows fresh so repeat reads serve
68
- // pure-local with no network; after a drop, deltas may have been missed, so
69
- // the next read of each query must re-confirm with the server once.
70
- syncClient.on('sync:reconnecting', () => { hydration.invalidate(); });
71
- return {
72
- modelRegistry,
73
- objectPool,
74
- bootstrapHelper,
75
- database,
76
- syncClient,
77
- hydration,
78
- };
79
- }
80
- /**
81
- * Derives the set of models to fetch in the initial bootstrap request from each
82
- * model's load strategy. Models declared `load: 'lazy'` are left out of the
83
- * bootstrap and fetched on demand instead. The default strategy is
84
- * `'instant'`, which includes the model.
85
- */
86
- function deriveInstantModels(schema) {
87
- const schemaModels = schema.models ?? schema;
88
- return Object.entries(schemaModels).flatMap(([key, def]) => {
89
- if (!def || typeof def !== 'object' || !('load' in def)) {
90
- return [key]; // no load → the default strategy
91
- }
92
- const load = def.load;
93
- if (loadsAtBootstrap(load)) {
94
- return [def.typename ?? key];
95
- }
96
- return [];
97
- });
98
- }
@@ -1,248 +0,0 @@
1
- /**
2
- * Builds the typed client for a single schema model — the object reached as
3
- * `ablo.<model>`.
4
- *
5
- * Each schema model gets one {@link ModelOperations}: the async server reads
6
- * `retrieve` and `list`, the same verbs restricted to the local graph under
7
- * `local`, the writes `create`, `update`, and `delete`, the coordination
8
- * namespace `claim` (callable as `claim({ id })`, plus `claim.state`,
9
- * `claim.queue`, `claim.release`, and `claim.reorder`), `join`, and `onChange`.
10
- * The factory returns a plain object; the client assembles the `ablo.<model>`
11
- * lookup table from one of these per model.
12
- */
13
- import type { ModelTarget } from '../transaction/coordination/schema.js';
14
- import type { ModelRegistry } from '../ModelRegistry.js';
15
- import type { InstanceCache } from '../InstanceCache.js';
16
- import type { SyncClient } from '../SyncClient.js';
17
- import type { OnDemandLoader } from '../sync/OnDemandLoader.js';
18
- import type { JoinedParticipant } from '../sync/participants.js';
19
- import type { Duration, Claim, ClaimHeartbeat, ClaimHeartbeatOptions, HeldClaim, HeldLease, ClaimWaitOptions, Snapshot } from '../transaction/types/streams.js';
20
- export type { ModelListScope, ModelTrackParams, ModelTrackResult, LocalReadOptions, LocalCountOptions, ServerReadOptions, ServerRetrieveOptions, ClaimTargetOptions, ClaimParams, ClaimLookupParams, ClaimReorderParams, ClaimOptions, ClaimReadApi, AwaitedClaimMethod, ClaimApi, ModelRetrieveParams, ModelCreateParams, ModelUpdateParams, ModelDeleteParams, JoinOptions, } from '../transaction/resources/modelOperations.js';
21
- export type { Claim, ClaimHeartbeat, ClaimHeartbeatOptions, HeldClaim, HeldLease };
22
- import type { ClaimApi, JoinOptions, LocalCountOptions, LocalReadOptions } from '../transaction/resources/modelOperations.js';
23
- import type { HttpModelClient } from '../transaction/transport/httpClient.js';
24
- import type { ParticipantKind } from '../transaction/types/participant.js';
25
- export interface ModelClientMeta {
26
- readonly key: string;
27
- readonly typename: string;
28
- }
29
- export declare function getModelClientMeta(modelClient: unknown): ModelClientMeta | undefined;
30
- /**
31
- * The entity a coordination read names, without the sub-entity narrowing —
32
- * projected from {@link ModelTarget} so the two members are spelled once.
33
- */
34
- type EntityHalf = Pick<ModelTarget, 'model' | 'id'>;
35
- export interface ModelCollaboration {
36
- createClaim(options: {
37
- /**
38
- * The locator, in the spelling the SDK surface and the HTTP routes use.
39
- * The canonical {@link ModelTarget} rather than a shape spelled here: this
40
- * boundary is what a claim's narrowing has to cross, and a member missing
41
- * from it dies before the socket sees it.
42
- */
43
- target: ModelTarget;
44
- /** Peer-visible description of the work (`'rewriting the risk section'`). */
45
- description?: string;
46
- ttl?: Duration;
47
- /**
48
- * Block on the server's fair FIFO queue when the target is held, rather
49
- * than failing. Resolves only once the lease is genuinely ours (the head
50
- * of the line). `takeClaim` sets this so writers serialize on contention.
51
- */
52
- queue?: boolean;
53
- /** Reject (don't wait) if the queue is already this deep when we join. */
54
- maxQueueDepth?: number;
55
- /** Cap on the queued wait before rejecting with `grant_timeout`. */
56
- waitTimeoutMs?: number;
57
- /** Abort the queued wait — rejects with `claim_wait_aborted`. */
58
- signal?: AbortSignal;
59
- }): Promise<Claim>;
60
- createSnapshot(modelKey: string, id: string): Snapshot;
61
- /**
62
- * Current coordination state on a target — who (if anyone) holds it.
63
- * Synchronous reactive snapshot read off the presence/claim stream;
64
- * `null` when the target is free. The wiring site computes it because
65
- * only it knows the local participant id (needed to distinguish "I
66
- * hold it" from "someone else holds it").
67
- *
68
- * Named `state` to match the public `ablo.<model>.claim.state({ id })` read —
69
- * one verb for "who holds this" across every claim surface; the only
70
- * difference is this internal contract takes an explicit `{ model, id }`
71
- * target because it isn't bound to a single model.
72
- */
73
- state(target: EntityHalf): Claim | null;
74
- /**
75
- * Every active claim on a target, not just one. Sub-row claims on disjoint
76
- * parts of a row are all granted, so a row can have several holders at once
77
- * and `state` answers with only the first of them.
78
- */
79
- holders(target: EntityHalf): readonly Claim[];
80
- /**
81
- * The reactive wait queue on a target — the FIFO line of queued claims
82
- * behind the holder. Synchronous snapshot off the synced claim stream.
83
- */
84
- queue(target: EntityHalf): readonly Claim[];
85
- /**
86
- * Re-rank the wait queue on a target (privileged — server-gated). `order` is
87
- * the desired front-of-line ordering, taken from `queue(target)`.
88
- */
89
- reorder(target: EntityHalf, order: readonly Claim[]): void;
90
- /**
91
- * Resolve once no participant holds an active claim on the target.
92
- * The contender's "wait until it's free" — delegates to the claim
93
- * stream's `waitFor`.
94
- */
95
- waitFor(target: EntityHalf, options?: ClaimWaitOptions): Promise<void>;
96
- /**
97
- * The local participant's id. Used to distinguish "I already hold this"
98
- * from "someone else holds it" in `claimOrWait`.
99
- */
100
- readonly selfParticipantId: string;
101
- /**
102
- * The local participant's kind (`'user' | 'agent' | 'system'`). Used to stamp
103
- * the synthesized self-claim returned from `claim.state` when this client
104
- * holds the lease: server presence frames exclude a holder's own claims, so
105
- * the holder builds its own view.
106
- */
107
- readonly selfParticipantKind?: ParticipantKind;
108
- /**
109
- * Subscribes the connection to a scope's sync group(s) — read interest. The
110
- * typed surface calls this on single-entity reads and claim observation so a
111
- * client lands in the same entity-scoped group the holder's claim presence
112
- * fans out on; a peer subscribed only to broader `org:` or `user:` groups
113
- * would otherwise never see claim broadcasts. Fire-and-forget and best-effort:
114
- * read interest must never make a read reject or stall. Optional so minimal
115
- * test doubles can omit it.
116
- */
117
- enterScope?(scope: Record<string, string>): void | Promise<void>;
118
- /**
119
- * Pins a scope's sync group(s) — write intent: a row this client holds an
120
- * active claim on stays subscribed regardless of navigation. Same
121
- * fire-and-forget, best-effort semantics as `enterScope`.
122
- */
123
- pinScope?(scope: Record<string, string>): void | Promise<void>;
124
- /**
125
- * Opens a presence and claim subscription on this model's sync group(s) and
126
- * returns the live participant handle. Backs `ablo.<model>.join(ids)`.
127
- * WebSocket only, since presence needs a live socket; it is absent on other
128
- * client constructions, where the proxy throws a clear error.
129
- */
130
- createJoin?(modelKey: string, ids: string | readonly string[], options?: JoinOptions): Promise<JoinedParticipant>;
131
- }
132
- /**
133
- * The synchronous, local-only reads — reached as `ablo.<model>.local.*`.
134
- *
135
- * Every verb mirrors its asynchronous sibling on the base surface, and the one
136
- * word in front is the whole difference. It is a narrowing, not a claim about
137
- * the other side: `retrieve` consults the local graph and then the network,
138
- * while `local.retrieve` is restricted to what is already resident — which is
139
- * also why it can return a value instead of a promise. There is nothing to
140
- * await.
141
- *
142
- * These reads exist only here. Exposing them at the top level too would undo
143
- * the distinction the namespace draws.
144
- */
145
- export interface LocalReads<T> {
146
- /**
147
- * Snapshot of a single row from the local graph. `undefined` when the row is
148
- * not resident — a graph that is still empty, or a `lazy` model not yet
149
- * loaded. Pairs with reactive selectors:
150
- * `useAblo((ablo) => ablo.<model>.local.retrieve(id))`.
151
- */
152
- retrieve(id: string): T | undefined;
153
- /**
154
- * Snapshot of a filtered collection from the local graph. Empty until
155
- * `retrieve`, `list`, or bootstrap has warmed the graph.
156
- */
157
- list(options?: LocalReadOptions<T>): T[];
158
- /** Count rows in the local graph. */
159
- count(options?: LocalCountOptions<T>): number;
160
- }
161
- /**
162
- * What a reactive client adds on top of the base per-model surface: a live
163
- * graph to read (`local`), the synchronous projection of the claim reads, and
164
- * the two subscriptions a persistent socket makes possible.
165
- *
166
- * `claim` is here rather than inherited because the two transports carry
167
- * deliberately different claim types, and the difference is load-bearing: a
168
- * stateless client has no local copy, so `state`/`queue`/`reorder` must be
169
- * awaited, while a reactive client resolves them synchronously — which is
170
- * precisely what lets a React render read claim state inline. The stateless
171
- * form is *derived* from this one through {@link AwaitedClaimMethod}, so the
172
- * only permitted difference between them is that promise wrapper.
173
- */
174
- interface ReactiveModelSurface<T> {
175
- /** The synchronous local-graph reads. */
176
- local: LocalReads<T>;
177
- /**
178
- * Claim a row so other writers wait or are rejected until you're done, and
179
- * inspect or manage that coordination through the same namespace. Call it to
180
- * take a claim handle; reach for its members to observe and steer the wait line:
181
- *
182
- * - `claim.state({ id })` — who holds the row now, or `null` when free
183
- * - `claim.queue({ id })` — who's lined up behind the holder
184
- * - `claim.release({ id })` — drop a claim early (usually implicit on scope exit)
185
- * - `claim.reorder({ id, order })` — re-rank the wait line
186
- *
187
- * ```ts
188
- * const claim = await ablo.weatherReports.claim({
189
- * id: 'report_stockholm',
190
- * description: 'Fetching fresh weather before updating the report.',
191
- * });
192
- * const weather = await getWeather(claim.data.location);
193
- * await ablo.weatherReports.update({
194
- * id: claim.target.id,
195
- * data: { forecast: weather },
196
- * claim,
197
- * });
198
- * await claim.release();
199
- *
200
- * const holder = ablo.weatherReports.claim.state({ id: 'report_stockholm' });
201
- * ```
202
- */
203
- claim: ClaimApi<T>;
204
- /**
205
- * Joins the sync group(s) for one or more rows of this model and returns a
206
- * live participant handle — presence (`.peers`), the scoped claim stream
207
- * (`.claims`), and `.leave()` / `await using` disposal. This is a presence
208
- * subscription: it reports who else is here and what they hold, not row
209
- * values changing — for the latter, use `onChange`.
210
- *
211
- * WebSocket only: presence needs a live socket, so this is absent on HTTP
212
- * clients and throws on any non-WebSocket construction.
213
- *
214
- * ```ts
215
- * await using participant = await ablo.sections.join(sectionIds, { ttl: '5m' });
216
- * participant.peers; // who else is here
217
- * ```
218
- */
219
- join(ids: string | readonly string[], options?: JoinOptions): Promise<JoinedParticipant>;
220
- /** Subscribe to changes; the callback runs on every change. */
221
- onChange(callback: (entities: T[]) => void, options?: LocalReadOptions<T>): () => void;
222
- }
223
- /**
224
- * Everything reachable as `ablo.<model>` on a reactive client.
225
- *
226
- * The base is not written here — it is the transport-independent per-model
227
- * surface, taken whole. A reactive client is that surface plus what a live
228
- * graph makes possible, so this type states the relationship instead of
229
- * restating the members, and a verb added to the base arrives here on its own.
230
- *
231
- * `claim` is the one member the base cannot supply directly: the two forms
232
- * differ by an awaitedness transform, so it is replaced rather than inherited.
233
- * See {@link ReactiveModelSurface}.
234
- */
235
- export type ModelOperations<T, CreateInput> = Omit<HttpModelClient<T, CreateInput>, 'claim'> & ReactiveModelSurface<T>;
236
- export declare function createModelProxy<T, C>(schemaKey: string, registeredModelName: string, objectPool: InstanceCache, syncClient: SyncClient, registry: ModelRegistry,
237
- /**
238
- * The one thing this factory asks of the loader: fetch rows for a model.
239
- *
240
- * Declared as the slice rather than the whole `OnDemandLoader` because the
241
- * whole is a class, and a parameter typed as a class can only ever be
242
- * satisfied by an instance of it — so every caller that has a narrower
243
- * collaborator, a test most of all, is pushed into a cast through `unknown`
244
- * to supply the one method that is actually read.
245
- */
246
- hydration: Pick<OnDemandLoader, 'fetch'>, collaboration?: ModelCollaboration,
247
- /** The client-wide `wait` default; a per-call `wait` still wins over it. */
248
- defaultWait?: 'queued' | 'confirmed'): ModelOperations<T, C>;