@abloatai/ablo 0.35.0 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (622) hide show
  1. package/AGENTS.md +2 -2
  2. package/CHANGELOG.md +71 -1929
  3. package/NOTICE +2 -2
  4. package/README.md +23 -532
  5. package/assets/banner.png +0 -0
  6. package/dist/auth.d.ts +2 -0
  7. package/dist/auth.d.ts.map +1 -0
  8. package/dist/auth.js +2 -0
  9. package/dist/auth.js.map +1 -0
  10. package/dist/client.d.ts +3 -0
  11. package/dist/client.d.ts.map +1 -0
  12. package/dist/client.js +3 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/coordination.d.ts +2 -0
  15. package/dist/coordination.d.ts.map +1 -0
  16. package/dist/coordination.js +2 -0
  17. package/dist/coordination.js.map +1 -0
  18. package/dist/index.d.ts +3 -112
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +3 -161
  21. package/dist/index.js.map +1 -0
  22. package/dist/react.d.ts +4 -0
  23. package/dist/react.d.ts.map +1 -0
  24. package/dist/react.js +3 -0
  25. package/dist/react.js.map +1 -0
  26. package/dist/schema.d.ts +2 -0
  27. package/dist/schema.d.ts.map +1 -0
  28. package/dist/schema.js +2 -0
  29. package/dist/schema.js.map +1 -0
  30. package/dist/server.d.ts +2 -0
  31. package/dist/server.d.ts.map +1 -0
  32. package/dist/server.js +2 -0
  33. package/dist/server.js.map +1 -0
  34. package/dist/source-conformance.d.ts +2 -0
  35. package/dist/source-conformance.d.ts.map +1 -0
  36. package/dist/source-conformance.js +2 -0
  37. package/dist/source-conformance.js.map +1 -0
  38. package/dist/source-drizzle.d.ts +2 -0
  39. package/dist/source-drizzle.d.ts.map +1 -0
  40. package/dist/source-drizzle.js +2 -0
  41. package/dist/source-drizzle.js.map +1 -0
  42. package/dist/source-kysely.d.ts +2 -0
  43. package/dist/source-kysely.d.ts.map +1 -0
  44. package/dist/source-kysely.js +2 -0
  45. package/dist/source-kysely.js.map +1 -0
  46. package/dist/source-next.d.ts +2 -0
  47. package/dist/source-next.d.ts.map +1 -0
  48. package/dist/source-next.js +2 -0
  49. package/dist/source-next.js.map +1 -0
  50. package/dist/source.d.ts +2 -0
  51. package/dist/source.d.ts.map +1 -0
  52. package/dist/source.js +2 -0
  53. package/dist/source.js.map +1 -0
  54. package/dist/wire.d.ts +2 -0
  55. package/dist/wire.d.ts.map +1 -0
  56. package/dist/wire.js +2 -0
  57. package/dist/wire.js.map +1 -0
  58. package/docs/agents.md +2 -2
  59. package/docs/api-keys.md +13 -12
  60. package/docs/api.md +15 -53
  61. package/docs/audit.md +4 -3
  62. package/docs/cli.md +11 -11
  63. package/docs/client-behavior.md +9 -9
  64. package/docs/concurrency-convention.md +28 -42
  65. package/docs/coordination.md +228 -86
  66. package/docs/data-sources.md +5 -5
  67. package/docs/debugging.md +34 -12
  68. package/docs/deployment.md +8 -8
  69. package/docs/examples/agent-human.md +4 -4
  70. package/docs/examples/ai-sdk-tool.md +1 -1
  71. package/docs/examples/existing-python-backend.md +15 -4
  72. package/docs/examples/nextjs.md +27 -6
  73. package/docs/examples/scoped-agent.md +3 -3
  74. package/docs/examples/server-agent.md +2 -2
  75. package/docs/groups.md +57 -3
  76. package/docs/guarantees.md +37 -10
  77. package/docs/how-it-works.md +32 -8
  78. package/docs/idempotency.md +6 -6
  79. package/docs/identity.md +24 -24
  80. package/docs/index.md +8 -8
  81. package/docs/integration-guide.md +38 -16
  82. package/docs/internal/README.md +18 -0
  83. package/docs/internal/agent-fleet-coordination-design.md +171 -0
  84. package/docs/internal/agent-orchestration.md +58 -0
  85. package/docs/internal/commit-identifiers.md +91 -0
  86. package/docs/internal/concurrency-open-decisions.md +37 -0
  87. package/docs/internal/data-source-reverse-channel.md +150 -0
  88. package/docs/internal/per-field-conflict-detection.md +165 -0
  89. package/docs/internal/postgres-replication.md +64 -0
  90. package/docs/internal/serializable-schema.md +119 -0
  91. package/docs/internal/structure.md +32 -0
  92. package/docs/mcp.md +9 -9
  93. package/docs/migration.md +37 -18
  94. package/docs/projects.md +1 -1
  95. package/docs/quickstart.md +2 -2
  96. package/docs/react.md +24 -13
  97. package/docs/schema-contract.md +3 -3
  98. package/docs/sessions.md +91 -37
  99. package/docs/webhooks.md +9 -9
  100. package/examples/README.md +2 -2
  101. package/examples/data-source/README.md +1 -1
  102. package/examples/data-source/ablo-driver.ts +1 -1
  103. package/examples/data-source/customer-server.ts +1 -1
  104. package/examples/data-source/run.ts +1 -1
  105. package/examples/data-source/schema.ts +1 -1
  106. package/examples/quickstart.ts +2 -2
  107. package/llms.txt +12 -12
  108. package/package.json +64 -174
  109. package/dist/BaseSyncedStore.d.ts +0 -823
  110. package/dist/BaseSyncedStore.js +0 -1955
  111. package/dist/Database.d.ts +0 -335
  112. package/dist/Database.js +0 -1500
  113. package/dist/InstanceCache.d.ts +0 -233
  114. package/dist/InstanceCache.js +0 -1164
  115. package/dist/LazyReferenceCollection.d.ts +0 -177
  116. package/dist/LazyReferenceCollection.js +0 -461
  117. package/dist/Model.d.ts +0 -444
  118. package/dist/Model.js +0 -909
  119. package/dist/ModelRegistry.d.ts +0 -221
  120. package/dist/ModelRegistry.js +0 -537
  121. package/dist/NetworkMonitor.d.ts +0 -26
  122. package/dist/NetworkMonitor.js +0 -77
  123. package/dist/RuntimeContext.d.ts +0 -52
  124. package/dist/RuntimeContext.js +0 -80
  125. package/dist/SyncClient.d.ts +0 -551
  126. package/dist/SyncClient.js +0 -2199
  127. package/dist/adapters/alwaysOnline.d.ts +0 -14
  128. package/dist/adapters/alwaysOnline.js +0 -17
  129. package/dist/adapters/inMemoryStorage.d.ts +0 -31
  130. package/dist/adapters/inMemoryStorage.js +0 -110
  131. package/dist/ai-sdk/coordinatedTool.d.ts +0 -120
  132. package/dist/ai-sdk/coordinatedTool.js +0 -134
  133. package/dist/ai-sdk/coordinationContext.d.ts +0 -46
  134. package/dist/ai-sdk/coordinationContext.js +0 -106
  135. package/dist/ai-sdk/index.d.ts +0 -121
  136. package/dist/ai-sdk/index.js +0 -121
  137. package/dist/ai-sdk/wrap.d.ts +0 -65
  138. package/dist/ai-sdk/wrap.js +0 -39
  139. package/dist/auth/index.d.ts +0 -1
  140. package/dist/auth/index.js +0 -8
  141. package/dist/batching/index.d.ts +0 -55
  142. package/dist/batching/index.js +0 -147
  143. package/dist/cli.cjs +0 -288600
  144. package/dist/client/Ablo.d.ts +0 -231
  145. package/dist/client/Ablo.js +0 -149
  146. package/dist/client/abloClient.d.ts +0 -309
  147. package/dist/client/abloClient.js +0 -13
  148. package/dist/client/clientPrelude.d.ts +0 -52
  149. package/dist/client/clientPrelude.js +0 -60
  150. package/dist/client/consoleLogger.d.ts +0 -35
  151. package/dist/client/consoleLogger.js +0 -44
  152. package/dist/client/coreClient.d.ts +0 -60
  153. package/dist/client/coreClient.js +0 -118
  154. package/dist/client/createInternalComponents.d.ts +0 -46
  155. package/dist/client/createInternalComponents.js +0 -92
  156. package/dist/client/createModelProxy.d.ts +0 -228
  157. package/dist/client/createModelProxy.js +0 -818
  158. package/dist/client/humans.d.ts +0 -48
  159. package/dist/client/humans.js +0 -52
  160. package/dist/client/modelRegistration.d.ts +0 -10
  161. package/dist/client/modelRegistration.js +0 -312
  162. package/dist/client/options.d.ts +0 -461
  163. package/dist/client/options.js +0 -7
  164. package/dist/client/reactiveEngine.d.ts +0 -48
  165. package/dist/client/reactiveEngine.js +0 -910
  166. package/dist/client/resourceTypes.d.ts +0 -12
  167. package/dist/client/resourceTypes.js +0 -10
  168. package/dist/client/schemaConfig.d.ts +0 -44
  169. package/dist/client/schemaConfig.js +0 -185
  170. package/dist/client/validateAbloOptions.d.ts +0 -42
  171. package/dist/client/validateAbloOptions.js +0 -43
  172. package/dist/client/wsMutationExecutor.d.ts +0 -27
  173. package/dist/client/wsMutationExecutor.js +0 -72
  174. package/dist/context.d.ts +0 -29
  175. package/dist/context.js +0 -58
  176. package/dist/coordination/ClaimLog.d.ts +0 -26
  177. package/dist/coordination/ClaimLog.js +0 -32
  178. package/dist/coordination/index.d.ts +0 -1
  179. package/dist/coordination/index.js +0 -8
  180. package/dist/core/DatabaseManager.d.ts +0 -105
  181. package/dist/core/DatabaseManager.js +0 -387
  182. package/dist/core/QueryProcessor.d.ts +0 -75
  183. package/dist/core/QueryProcessor.js +0 -255
  184. package/dist/core/QueryView.d.ts +0 -79
  185. package/dist/core/QueryView.js +0 -218
  186. package/dist/core/StoreManager.d.ts +0 -112
  187. package/dist/core/StoreManager.js +0 -302
  188. package/dist/core/ViewRegistry.d.ts +0 -20
  189. package/dist/core/ViewRegistry.js +0 -55
  190. package/dist/core/index.d.ts +0 -33
  191. package/dist/core/index.js +0 -48
  192. package/dist/core/openIDBWithTimeout.d.ts +0 -65
  193. package/dist/core/openIDBWithTimeout.js +0 -153
  194. package/dist/core/queryUtils.d.ts +0 -45
  195. package/dist/core/queryUtils.js +0 -69
  196. package/dist/core/storeContract.d.ts +0 -145
  197. package/dist/core/storeContract.js +0 -12
  198. package/dist/docs/catalog.d.ts +0 -72
  199. package/dist/docs/catalog.js +0 -227
  200. package/dist/docs/index.d.ts +0 -10
  201. package/dist/docs/index.js +0 -10
  202. package/dist/environment.d.ts +0 -1
  203. package/dist/environment.js +0 -8
  204. package/dist/interfaces/index.d.ts +0 -311
  205. package/dist/interfaces/index.js +0 -9
  206. package/dist/keys/index.d.ts +0 -1
  207. package/dist/keys/index.js +0 -8
  208. package/dist/mutators/RecordingMutation.d.ts +0 -36
  209. package/dist/mutators/RecordingMutation.js +0 -182
  210. package/dist/mutators/Transaction.d.ts +0 -40
  211. package/dist/mutators/Transaction.js +0 -58
  212. package/dist/mutators/UndoManager.d.ts +0 -258
  213. package/dist/mutators/UndoManager.js +0 -658
  214. package/dist/mutators/defineMutators.d.ts +0 -60
  215. package/dist/mutators/defineMutators.js +0 -18
  216. package/dist/mutators/inverseOp.d.ts +0 -126
  217. package/dist/mutators/inverseOp.js +0 -71
  218. package/dist/mutators/mutateActions.d.ts +0 -45
  219. package/dist/mutators/mutateActions.js +0 -105
  220. package/dist/mutators/readerActions.d.ts +0 -33
  221. package/dist/mutators/readerActions.js +0 -57
  222. package/dist/mutators/undoApply.d.ts +0 -51
  223. package/dist/mutators/undoApply.js +0 -117
  224. package/dist/policy/index.d.ts +0 -21
  225. package/dist/policy/index.js +0 -20
  226. package/dist/query/client.d.ts +0 -61
  227. package/dist/query/client.js +0 -137
  228. package/dist/query/types.d.ts +0 -85
  229. package/dist/query/types.js +0 -16
  230. package/dist/react/AbloProvider.d.ts +0 -230
  231. package/dist/react/AbloProvider.js +0 -455
  232. package/dist/react/ClientSideSuspense.d.ts +0 -36
  233. package/dist/react/ClientSideSuspense.js +0 -17
  234. package/dist/react/DefaultFallback.d.ts +0 -24
  235. package/dist/react/DefaultFallback.js +0 -43
  236. package/dist/react/context.d.ts +0 -55
  237. package/dist/react/context.js +0 -29
  238. package/dist/react/index.d.ts +0 -61
  239. package/dist/react/index.js +0 -66
  240. package/dist/react/internalContext.d.ts +0 -33
  241. package/dist/react/internalContext.js +0 -3
  242. package/dist/react/useAblo.d.ts +0 -75
  243. package/dist/react/useAblo.js +0 -102
  244. package/dist/react/useCurrentUserId.d.ts +0 -22
  245. package/dist/react/useCurrentUserId.js +0 -34
  246. package/dist/react/useErrorListener.d.ts +0 -20
  247. package/dist/react/useErrorListener.js +0 -38
  248. package/dist/react/useMutationFailureListener.d.ts +0 -26
  249. package/dist/react/useMutationFailureListener.js +0 -38
  250. package/dist/react/useMutators.d.ts +0 -56
  251. package/dist/react/useMutators.js +0 -84
  252. package/dist/react/useReactive.d.ts +0 -35
  253. package/dist/react/useReactive.js +0 -123
  254. package/dist/react/useSyncStatus.d.ts +0 -59
  255. package/dist/react/useSyncStatus.js +0 -76
  256. package/dist/react/useUndoScope.d.ts +0 -34
  257. package/dist/react/useUndoScope.js +0 -81
  258. package/dist/schema/coordination.d.ts +0 -112
  259. package/dist/schema/coordination.js +0 -129
  260. package/dist/schema/ddl.d.ts +0 -97
  261. package/dist/schema/ddl.js +0 -491
  262. package/dist/schema/ddlLock.d.ts +0 -35
  263. package/dist/schema/ddlLock.js +0 -46
  264. package/dist/schema/diff.d.ts +0 -225
  265. package/dist/schema/diff.js +0 -289
  266. package/dist/schema/generate.d.ts +0 -19
  267. package/dist/schema/generate.js +0 -86
  268. package/dist/schema/index.d.ts +0 -41
  269. package/dist/schema/index.js +0 -76
  270. package/dist/schema/queries.d.ts +0 -201
  271. package/dist/schema/queries.js +0 -144
  272. package/dist/schema/select.d.ts +0 -40
  273. package/dist/schema/select.js +0 -87
  274. package/dist/schema/serialize.d.ts +0 -115
  275. package/dist/schema/serialize.js +0 -262
  276. package/dist/schema/sugar.d.ts +0 -109
  277. package/dist/schema/sugar.js +0 -83
  278. package/dist/schema/syncDeltaRow.d.ts +0 -6
  279. package/dist/schema/syncDeltaRow.js +0 -6
  280. package/dist/server/adapter.d.ts +0 -173
  281. package/dist/server/adapter.js +0 -18
  282. package/dist/server/commit.d.ts +0 -107
  283. package/dist/server/commit.js +0 -1
  284. package/dist/server/index.d.ts +0 -14
  285. package/dist/server/index.js +0 -2
  286. package/dist/server/readConfig.d.ts +0 -80
  287. package/dist/server/readConfig.js +0 -8
  288. package/dist/server/storageMode.d.ts +0 -23
  289. package/dist/server/storageMode.js +0 -17
  290. package/dist/source/adapter.d.ts +0 -81
  291. package/dist/source/adapter.js +0 -22
  292. package/dist/source/adapters/drizzle.d.ts +0 -48
  293. package/dist/source/adapters/drizzle.js +0 -219
  294. package/dist/source/adapters/kysely.d.ts +0 -42
  295. package/dist/source/adapters/kysely.js +0 -205
  296. package/dist/source/adapters/kyselyMutationCore.d.ts +0 -76
  297. package/dist/source/adapters/kyselyMutationCore.js +0 -125
  298. package/dist/source/adapters/memory.d.ts +0 -13
  299. package/dist/source/adapters/memory.js +0 -130
  300. package/dist/source/adapters/prisma.d.ts +0 -63
  301. package/dist/source/adapters/prisma.js +0 -202
  302. package/dist/source/conformance.d.ts +0 -37
  303. package/dist/source/conformance.js +0 -215
  304. package/dist/source/connector.d.ts +0 -95
  305. package/dist/source/connector.js +0 -266
  306. package/dist/source/connectorProtocol.d.ts +0 -154
  307. package/dist/source/connectorProtocol.js +0 -163
  308. package/dist/source/contract.d.ts +0 -195
  309. package/dist/source/contract.js +0 -164
  310. package/dist/source/factory.d.ts +0 -92
  311. package/dist/source/factory.js +0 -286
  312. package/dist/source/footprint.d.ts +0 -111
  313. package/dist/source/footprint.js +0 -0
  314. package/dist/source/idempotency.d.ts +0 -61
  315. package/dist/source/idempotency.js +0 -144
  316. package/dist/source/index.d.ts +0 -23
  317. package/dist/source/index.js +0 -30
  318. package/dist/source/migrations.d.ts +0 -21
  319. package/dist/source/migrations.js +0 -103
  320. package/dist/source/next.d.ts +0 -32
  321. package/dist/source/next.js +0 -25
  322. package/dist/source/pushQueue.d.ts +0 -134
  323. package/dist/source/pushQueue.js +0 -256
  324. package/dist/source/signing.d.ts +0 -92
  325. package/dist/source/signing.js +0 -162
  326. package/dist/source/types.d.ts +0 -401
  327. package/dist/source/types.js +0 -59
  328. package/dist/stores/ObjectStore.d.ts +0 -115
  329. package/dist/stores/ObjectStore.js +0 -393
  330. package/dist/stores/ObjectStoreContract.d.ts +0 -38
  331. package/dist/stores/ObjectStoreContract.js +0 -1
  332. package/dist/stores/SyncActionStore.d.ts +0 -97
  333. package/dist/stores/SyncActionStore.js +0 -504
  334. package/dist/stores/syncAction.d.ts +0 -26
  335. package/dist/stores/syncAction.js +0 -16
  336. package/dist/surface.d.ts +0 -36
  337. package/dist/surface.js +0 -75
  338. package/dist/sync/BootstrapFetcher.d.ts +0 -280
  339. package/dist/sync/BootstrapFetcher.js +0 -962
  340. package/dist/sync/ConnectionManager.d.ts +0 -8
  341. package/dist/sync/ConnectionManager.js +0 -8
  342. package/dist/sync/OnDemandLoader.d.ts +0 -228
  343. package/dist/sync/OnDemandLoader.js +0 -742
  344. package/dist/sync/SubscriptionManager.d.ts +0 -159
  345. package/dist/sync/SubscriptionManager.js +0 -243
  346. package/dist/sync/SyncWebSocket.d.ts +0 -173
  347. package/dist/sync/SyncWebSocket.js +0 -438
  348. package/dist/sync/awaitClaimGrant.d.ts +0 -6
  349. package/dist/sync/awaitClaimGrant.js +0 -6
  350. package/dist/sync/bootstrapApply.d.ts +0 -70
  351. package/dist/sync/bootstrapApply.js +0 -73
  352. package/dist/sync/commitFrames.d.ts +0 -8
  353. package/dist/sync/commitFrames.js +0 -8
  354. package/dist/sync/contextPorts.d.ts +0 -18
  355. package/dist/sync/contextPorts.js +0 -31
  356. package/dist/sync/createClaimStream.d.ts +0 -7
  357. package/dist/sync/createClaimStream.js +0 -7
  358. package/dist/sync/createPresenceStream.d.ts +0 -69
  359. package/dist/sync/createPresenceStream.js +0 -200
  360. package/dist/sync/createSnapshot.d.ts +0 -29
  361. package/dist/sync/createSnapshot.js +0 -118
  362. package/dist/sync/credentialLifecycle.d.ts +0 -7
  363. package/dist/sync/credentialLifecycle.js +0 -7
  364. package/dist/sync/deltaPipeline.d.ts +0 -113
  365. package/dist/sync/deltaPipeline.js +0 -261
  366. package/dist/sync/groupChange.d.ts +0 -113
  367. package/dist/sync/groupChange.js +0 -242
  368. package/dist/sync/participants.d.ts +0 -115
  369. package/dist/sync/participants.js +0 -344
  370. package/dist/sync/persistedPrefix.d.ts +0 -12
  371. package/dist/sync/persistedPrefix.js +0 -22
  372. package/dist/sync/schemaDrift.d.ts +0 -55
  373. package/dist/sync/schemaDrift.js +0 -53
  374. package/dist/sync/schemas.d.ts +0 -70
  375. package/dist/sync/schemas.js +0 -94
  376. package/dist/sync/syncCursor.d.ts +0 -40
  377. package/dist/sync/syncCursor.js +0 -55
  378. package/dist/sync/syncPlan.d.ts +0 -54
  379. package/dist/sync/syncPlan.js +0 -50
  380. package/dist/sync/wsFrameHandlers.d.ts +0 -8
  381. package/dist/sync/wsFrameHandlers.js +0 -8
  382. package/dist/testing/fixtures/bootstrap.d.ts +0 -49
  383. package/dist/testing/fixtures/bootstrap.js +0 -59
  384. package/dist/testing/fixtures/deltas.d.ts +0 -83
  385. package/dist/testing/fixtures/deltas.js +0 -136
  386. package/dist/testing/fixtures/httpResponses.d.ts +0 -70
  387. package/dist/testing/fixtures/httpResponses.js +0 -90
  388. package/dist/testing/fixtures/models.d.ts +0 -83
  389. package/dist/testing/fixtures/models.js +0 -272
  390. package/dist/testing/helpers/reactWrapper.d.ts +0 -69
  391. package/dist/testing/helpers/reactWrapper.js +0 -67
  392. package/dist/testing/helpers/syncEngineHarness.d.ts +0 -54
  393. package/dist/testing/helpers/syncEngineHarness.js +0 -73
  394. package/dist/testing/helpers/wait.d.ts +0 -30
  395. package/dist/testing/helpers/wait.js +0 -49
  396. package/dist/testing/index.d.ts +0 -23
  397. package/dist/testing/index.js +0 -33
  398. package/dist/testing/mocks/FakeDatabase.d.ts +0 -18
  399. package/dist/testing/mocks/FakeDatabase.js +0 -10
  400. package/dist/testing/mocks/MockMutationExecutor.d.ts +0 -87
  401. package/dist/testing/mocks/MockMutationExecutor.js +0 -186
  402. package/dist/testing/mocks/MockNetworkMonitor.d.ts +0 -20
  403. package/dist/testing/mocks/MockNetworkMonitor.js +0 -46
  404. package/dist/testing/mocks/MockSyncContext.d.ts +0 -51
  405. package/dist/testing/mocks/MockSyncContext.js +0 -72
  406. package/dist/testing/mocks/MockSyncStore.d.ts +0 -88
  407. package/dist/testing/mocks/MockSyncStore.js +0 -171
  408. package/dist/testing/mocks/MockWebSocket.d.ts +0 -71
  409. package/dist/testing/mocks/MockWebSocket.js +0 -118
  410. package/dist/transaction/ablo.d.ts +0 -88
  411. package/dist/transaction/ablo.js +0 -33
  412. package/dist/transaction/auth/apiKey.d.ts +0 -152
  413. package/dist/transaction/auth/apiKey.js +0 -419
  414. package/dist/transaction/auth/bootstrapScope.d.ts +0 -15
  415. package/dist/transaction/auth/bootstrapScope.js +0 -1
  416. package/dist/transaction/auth/capability.d.ts +0 -177
  417. package/dist/transaction/auth/capability.js +0 -199
  418. package/dist/transaction/auth/credentialEndpoint.d.ts +0 -61
  419. package/dist/transaction/auth/credentialEndpoint.js +0 -86
  420. package/dist/transaction/auth/credentialPolicy.d.ts +0 -148
  421. package/dist/transaction/auth/credentialPolicy.js +0 -125
  422. package/dist/transaction/auth/credentialSource.d.ts +0 -30
  423. package/dist/transaction/auth/credentialSource.js +0 -55
  424. package/dist/transaction/auth/hostedEndpoints.d.ts +0 -21
  425. package/dist/transaction/auth/hostedEndpoints.js +0 -21
  426. package/dist/transaction/auth/identity.d.ts +0 -55
  427. package/dist/transaction/auth/identity.js +0 -210
  428. package/dist/transaction/auth/index.d.ts +0 -162
  429. package/dist/transaction/auth/index.js +0 -304
  430. package/dist/transaction/auth/schemas.d.ts +0 -59
  431. package/dist/transaction/auth/schemas.js +0 -85
  432. package/dist/transaction/auth/sessionMint.d.ts +0 -28
  433. package/dist/transaction/auth/sessionMint.js +0 -85
  434. package/dist/transaction/coordination/awaitClaimGrant.d.ts +0 -49
  435. package/dist/transaction/coordination/awaitClaimGrant.js +0 -112
  436. package/dist/transaction/coordination/claimHeartbeatLoop.d.ts +0 -50
  437. package/dist/transaction/coordination/claimHeartbeatLoop.js +0 -88
  438. package/dist/transaction/coordination/claimMeta.d.ts +0 -49
  439. package/dist/transaction/coordination/claimMeta.js +0 -52
  440. package/dist/transaction/coordination/createClaimStream.d.ts +0 -64
  441. package/dist/transaction/coordination/createClaimStream.js +0 -475
  442. package/dist/transaction/coordination/events.d.ts +0 -74
  443. package/dist/transaction/coordination/events.js +0 -7
  444. package/dist/transaction/coordination/index.d.ts +0 -19
  445. package/dist/transaction/coordination/index.js +0 -44
  446. package/dist/transaction/coordination/locator.d.ts +0 -83
  447. package/dist/transaction/coordination/locator.js +0 -82
  448. package/dist/transaction/coordination/schema.d.ts +0 -1473
  449. package/dist/transaction/coordination/schema.js +0 -1013
  450. package/dist/transaction/coordination/targetConflict.d.ts +0 -2
  451. package/dist/transaction/coordination/targetConflict.js +0 -103
  452. package/dist/transaction/coordination/trace.d.ts +0 -78
  453. package/dist/transaction/coordination/trace.js +0 -138
  454. package/dist/transaction/durableWrites.d.ts +0 -62
  455. package/dist/transaction/durableWrites.js +0 -71
  456. package/dist/transaction/environment.d.ts +0 -105
  457. package/dist/transaction/environment.js +0 -108
  458. package/dist/transaction/errorCodes.d.ts +0 -403
  459. package/dist/transaction/errorCodes.js +0 -480
  460. package/dist/transaction/errors.d.ts +0 -428
  461. package/dist/transaction/errors.js +0 -686
  462. package/dist/transaction/index.d.ts +0 -20
  463. package/dist/transaction/index.js +0 -20
  464. package/dist/transaction/keys/index.d.ts +0 -87
  465. package/dist/transaction/keys/index.js +0 -207
  466. package/dist/transaction/log/syncDeltaRow.d.ts +0 -158
  467. package/dist/transaction/log/syncDeltaRow.js +0 -95
  468. package/dist/transaction/logPosition.d.ts +0 -97
  469. package/dist/transaction/logPosition.js +0 -125
  470. package/dist/transaction/logger.d.ts +0 -16
  471. package/dist/transaction/logger.js +0 -7
  472. package/dist/transaction/observability.d.ts +0 -53
  473. package/dist/transaction/observability.js +0 -19
  474. package/dist/transaction/persistence.d.ts +0 -12
  475. package/dist/transaction/persistence.js +0 -11
  476. package/dist/transaction/plugin.d.ts +0 -192
  477. package/dist/transaction/plugin.js +0 -87
  478. package/dist/transaction/policy/types.d.ts +0 -217
  479. package/dist/transaction/policy/types.js +0 -126
  480. package/dist/transaction/resources/functionalUpdate.d.ts +0 -79
  481. package/dist/transaction/resources/functionalUpdate.js +0 -87
  482. package/dist/transaction/resources/httpResources.d.ts +0 -266
  483. package/dist/transaction/resources/httpResources.js +0 -7
  484. package/dist/transaction/resources/modelOperations.d.ts +0 -319
  485. package/dist/transaction/resources/modelOperations.js +0 -12
  486. package/dist/transaction/resources/mutationOptions.d.ts +0 -66
  487. package/dist/transaction/resources/mutationOptions.js +0 -9
  488. package/dist/transaction/resources/where.d.ts +0 -85
  489. package/dist/transaction/resources/where.js +0 -70
  490. package/dist/transaction/resources/writeOptionsSchema.d.ts +0 -47
  491. package/dist/transaction/resources/writeOptionsSchema.js +0 -73
  492. package/dist/transaction/schema/field.d.ts +0 -126
  493. package/dist/transaction/schema/field.js +0 -265
  494. package/dist/transaction/schema/loadStrategy.d.ts +0 -45
  495. package/dist/transaction/schema/loadStrategy.js +0 -46
  496. package/dist/transaction/schema/model.d.ts +0 -379
  497. package/dist/transaction/schema/model.js +0 -123
  498. package/dist/transaction/schema/openapi.d.ts +0 -57
  499. package/dist/transaction/schema/openapi.js +0 -340
  500. package/dist/transaction/schema/relation.d.ts +0 -199
  501. package/dist/transaction/schema/relation.js +0 -104
  502. package/dist/transaction/schema/residency.d.ts +0 -29
  503. package/dist/transaction/schema/residency.js +0 -25
  504. package/dist/transaction/schema/roles.d.ts +0 -249
  505. package/dist/transaction/schema/roles.js +0 -230
  506. package/dist/transaction/schema/schema.d.ts +0 -324
  507. package/dist/transaction/schema/schema.js +0 -305
  508. package/dist/transaction/schema/tenancy.d.ts +0 -139
  509. package/dist/transaction/schema/tenancy.js +0 -190
  510. package/dist/transaction/transactionLayer.d.ts +0 -82
  511. package/dist/transaction/transactionLayer.js +0 -24
  512. package/dist/transaction/transactions/settlement/commitEnvelope.d.ts +0 -143
  513. package/dist/transaction/transactions/settlement/commitEnvelope.js +0 -161
  514. package/dist/transaction/transactions/settlement/httpCommitEnvelope.d.ts +0 -53
  515. package/dist/transaction/transactions/settlement/httpCommitEnvelope.js +0 -207
  516. package/dist/transaction/transactions/settlement/idempotencyKey.d.ts +0 -10
  517. package/dist/transaction/transactions/settlement/idempotencyKey.js +0 -9
  518. package/dist/transaction/transactions/settlement/pendingWrite.d.ts +0 -112
  519. package/dist/transaction/transactions/settlement/pendingWrite.js +0 -20
  520. package/dist/transaction/transport/commitFrames.d.ts +0 -90
  521. package/dist/transaction/transport/commitFrames.js +0 -134
  522. package/dist/transaction/transport/connectionManager.d.ts +0 -215
  523. package/dist/transaction/transport/connectionManager.js +0 -673
  524. package/dist/transaction/transport/credentialLifecycle.d.ts +0 -177
  525. package/dist/transaction/transport/credentialLifecycle.js +0 -324
  526. package/dist/transaction/transport/heartbeat.d.ts +0 -65
  527. package/dist/transaction/transport/heartbeat.js +0 -93
  528. package/dist/transaction/transport/httpClient.d.ts +0 -123
  529. package/dist/transaction/transport/httpClient.js +0 -145
  530. package/dist/transaction/transport/httpOptions.d.ts +0 -33
  531. package/dist/transaction/transport/httpOptions.js +0 -12
  532. package/dist/transaction/transport/httpTransport.d.ts +0 -8
  533. package/dist/transaction/transport/httpTransport.js +0 -1276
  534. package/dist/transaction/transport/networkProbe.d.ts +0 -84
  535. package/dist/transaction/transport/networkProbe.js +0 -207
  536. package/dist/transaction/transport/wsFrameHandlers.d.ts +0 -128
  537. package/dist/transaction/transport/wsFrameHandlers.js +0 -429
  538. package/dist/transaction/transport/wsTransport.d.ts +0 -576
  539. package/dist/transaction/transport/wsTransport.js +0 -1017
  540. package/dist/transaction/types/assertExact.d.ts +0 -17
  541. package/dist/transaction/types/assertExact.js +0 -1
  542. package/dist/transaction/types/global.d.ts +0 -107
  543. package/dist/transaction/types/global.js +0 -40
  544. package/dist/transaction/types/index.d.ts +0 -205
  545. package/dist/transaction/types/index.js +0 -56
  546. package/dist/transaction/types/modelData.d.ts +0 -10
  547. package/dist/transaction/types/modelData.js +0 -9
  548. package/dist/transaction/types/participant.d.ts +0 -20
  549. package/dist/transaction/types/participant.js +0 -10
  550. package/dist/transaction/types/streams.d.ts +0 -540
  551. package/dist/transaction/types/streams.js +0 -11
  552. package/dist/transaction/utils/asyncIterator.d.ts +0 -34
  553. package/dist/transaction/utils/asyncIterator.js +0 -135
  554. package/dist/transaction/utils/duration.d.ts +0 -25
  555. package/dist/transaction/utils/duration.js +0 -45
  556. package/dist/transaction/utils/json.d.ts +0 -57
  557. package/dist/transaction/utils/json.js +0 -276
  558. package/dist/transaction/wire/accountResponses.d.ts +0 -351
  559. package/dist/transaction/wire/accountResponses.js +0 -255
  560. package/dist/transaction/wire/auth.d.ts +0 -49
  561. package/dist/transaction/wire/auth.js +0 -57
  562. package/dist/transaction/wire/bootstrapReason.d.ts +0 -9
  563. package/dist/transaction/wire/bootstrapReason.js +0 -8
  564. package/dist/transaction/wire/claimEvent.d.ts +0 -76
  565. package/dist/transaction/wire/claimEvent.js +0 -73
  566. package/dist/transaction/wire/claims.d.ts +0 -463
  567. package/dist/transaction/wire/claims.js +0 -229
  568. package/dist/transaction/wire/commit.d.ts +0 -603
  569. package/dist/transaction/wire/commit.js +0 -321
  570. package/dist/transaction/wire/delta.d.ts +0 -250
  571. package/dist/transaction/wire/delta.js +0 -147
  572. package/dist/transaction/wire/errorEnvelope.d.ts +0 -72
  573. package/dist/transaction/wire/errorEnvelope.js +0 -123
  574. package/dist/transaction/wire/feedCursor.d.ts +0 -60
  575. package/dist/transaction/wire/feedCursor.js +0 -82
  576. package/dist/transaction/wire/feedEvent.d.ts +0 -177
  577. package/dist/transaction/wire/feedEvent.js +0 -39
  578. package/dist/transaction/wire/frames.d.ts +0 -194
  579. package/dist/transaction/wire/frames.js +0 -50
  580. package/dist/transaction/wire/inboundFrames.d.ts +0 -552
  581. package/dist/transaction/wire/inboundFrames.js +0 -116
  582. package/dist/transaction/wire/index.d.ts +0 -50
  583. package/dist/transaction/wire/index.js +0 -74
  584. package/dist/transaction/wire/listEnvelope.d.ts +0 -37
  585. package/dist/transaction/wire/listEnvelope.js +0 -42
  586. package/dist/transaction/wire/modelResponses.d.ts +0 -85
  587. package/dist/transaction/wire/modelResponses.js +0 -43
  588. package/dist/transaction/wire/protocol.d.ts +0 -38
  589. package/dist/transaction/wire/protocol.js +0 -38
  590. package/dist/transaction/wire/protocolVersion.d.ts +0 -73
  591. package/dist/transaction/wire/protocolVersion.js +0 -83
  592. package/dist/transactions/mutations/MutationQueue.d.ts +0 -655
  593. package/dist/transactions/mutations/MutationQueue.js +0 -2797
  594. package/dist/transactions/mutations/MutationStore.d.ts +0 -20
  595. package/dist/transactions/mutations/MutationStore.js +0 -53
  596. package/dist/transactions/mutations/UnconfirmedWrites.d.ts +0 -82
  597. package/dist/transactions/mutations/UnconfirmedWrites.js +0 -104
  598. package/dist/transactions/mutations/coalesceRules.d.ts +0 -58
  599. package/dist/transactions/mutations/coalesceRules.js +0 -140
  600. package/dist/transactions/mutations/commitLatency.d.ts +0 -52
  601. package/dist/transactions/mutations/commitLatency.js +0 -130
  602. package/dist/transactions/mutations/commitOutboxStore.d.ts +0 -28
  603. package/dist/transactions/mutations/commitOutboxStore.js +0 -26
  604. package/dist/transactions/mutations/commitPayload.d.ts +0 -164
  605. package/dist/transactions/mutations/commitPayload.js +0 -152
  606. package/dist/transactions/mutations/deltaConfirmation.d.ts +0 -59
  607. package/dist/transactions/mutations/deltaConfirmation.js +0 -233
  608. package/dist/transactions/mutations/durableWriteStore.d.ts +0 -14
  609. package/dist/transactions/mutations/durableWriteStore.js +0 -12
  610. package/dist/transactions/mutations/optimisticApply.d.ts +0 -49
  611. package/dist/transactions/mutations/optimisticApply.js +0 -65
  612. package/dist/transactions/mutations/replayValidation.d.ts +0 -186
  613. package/dist/transactions/mutations/replayValidation.js +0 -163
  614. package/dist/utils/mobxSetup.d.ts +0 -53
  615. package/dist/utils/mobxSetup.js +0 -330
  616. package/dist/webhooks/events.d.ts +0 -43
  617. package/dist/webhooks/events.js +0 -42
  618. package/dist/webhooks/index.d.ts +0 -8
  619. package/dist/webhooks/index.js +0 -8
  620. package/dist/wire/index.d.ts +0 -1
  621. package/dist/wire/index.js +0 -8
  622. package/docs/interaction-model.md +0 -99
@@ -1,461 +0,0 @@
1
- /**
2
- * The option types for the {@link Ablo} client: the public {@link AbloOptions}
3
- * bag callers pass, and the fuller monorepo-only {@link InternalAbloOptions}
4
- * construction surface exposed through `@abloatai/ablo/core`.
5
- * This module holds only types and has no runtime imports.
6
- */
7
- import type { Schema, SchemaRecord } from '../transaction/schema/schema.js';
8
- import type { RuntimeConfig, Logger, MutationExecutor, ObservabilityProvider, Analytics, SessionErrorDetector, OnlineStatusProvider } from '../interfaces/index.js';
9
- import type { AbloPersistence } from '../transaction/persistence.js';
10
- import type { DurableWriteStore, DurableWritesConfig } from '../transaction/durableWrites.js';
11
- import type { CommitOutboxScope } from '../transaction/transactions/settlement/commitEnvelope.js';
12
- /**
13
- * An async function that resolves an apiKey at request time. Use it for credential
14
- * rotation — read from a vault, refresh from session storage, or pull from an
15
- * existing auth session. The canonical definition lives in `./auth`; it is
16
- * re-exported here for convenience.
17
- */
18
- export type { ApiKeySetter } from '../transaction/auth/apiKey.js';
19
- import type { ApiKeySetter } from '../transaction/auth/apiKey.js';
20
- import type { AbloPlugin } from '../transaction/plugin.js';
21
- import type { ParticipantKind } from '../transaction/types/participant.js';
22
- /**
23
- * Options for the {@link Ablo} client.
24
- *
25
- * The only required field is `schema`. Because `apiKey` defaults to the
26
- * `ABLO_API_KEY` environment variable, most server setups need nothing more:
27
- *
28
- * ```ts
29
- * const ablo = Ablo({ schema, apiKey: process.env.ABLO_API_KEY });
30
- * ```
31
- *
32
- * Every other field is optional tuning — timeouts, retries, a custom fetch,
33
- * persistence. If you are unsure whether you need one, you do not.
34
- *
35
- * @see https://docs.abloatai.com — full option reference
36
- */
37
- export interface AbloOptions<S extends SchemaRecord = SchemaRecord> {
38
- /**
39
- * TypeScript schema defined with `defineSchema()`. Required — it's what
40
- * makes `ablo.weatherReports.update(...)` typed. This is the one field you must
41
- * pass; start here.
42
- */
43
- schema: Schema<S>;
44
- /**
45
- * The capabilities installed on this client. Each plugin appears once in
46
- * the list; a duplicate, or a plugin the chosen transport cannot carry,
47
- * fails while the client is being constructed with an error naming the
48
- * plugin. Omitted, the client installs `humans()` — today's default.
49
- */
50
- plugins?: readonly AbloPlugin[];
51
- /**
52
- * The API key — the auth field most apps set. It accepts three shapes:
53
- *
54
- * - **A key string** (server): your secret `sk_` key. Defaults to the
55
- * `ABLO_API_KEY` environment variable, so you usually pass nothing. A
56
- * long-lived key needs no refresh; the client uses it as-is.
57
- *
58
- * - **An endpoint path or URL** — for example `apiKey: '/api/ablo-session'`.
59
- * The client owns the whole exchange: it POSTs the endpoint (same-origin,
60
- * cookies included), reads the minted short-lived token, and keeps it fresh
61
- * with a refresh timer ahead of expiry, a re-mint after the machine wakes
62
- * from sleep, and a re-mint when the server reports the token stale. You
63
- * never call a refresh method yourself. The shape is detected by prefix (`/`,
64
- * `http://`, or `https://`); key strings start with `sk_`/`ek_`/`rk_`, so the
65
- * two cannot be confused. A long-lived server client should pass an absolute
66
- * URL, which also enables pre-expiry renewal on hosts that never sleep.
67
- *
68
- * - **An async resolver** `() => Promise<string | null>` — the escape hatch for
69
- * when the exchange needs custom headers, a request body, or a non-HTTP mint
70
- * (vault rotation, a cloud token service, an existing auth session). It uses
71
- * the same renewal machinery as the endpoint form.
72
- *
73
- * The endpoint and resolver forms share one contract: return a token; return
74
- * `null` when the login itself is gone (terminal — the client signs out and
75
- * fails `ready()` with `session_expired`); or throw on a transient failure, which
76
- * backs off and retries without signing out. The endpoint form maps HTTP onto
77
- * this for you: 401 and 403 mean signed out, any other failure is transient.
78
- */
79
- apiKey?: string | ApiKeySetter | null | undefined;
80
- /**
81
- * The session-mint endpoint — the browser-side auth field, and the named
82
- * counterpart to the endpoint-string form of {@link AbloOptions.apiKey}. Point it
83
- * at the route that mints the signed-in user's short-lived token:
84
- *
85
- * ```ts
86
- * const ablo = Ablo({ schema, authEndpoint: '/api/ablo-session' });
87
- * ```
88
- *
89
- * The client owns the whole exchange: it POSTs the route (same-origin, cookies
90
- * included), reads `{ token }`, keeps it fresh ahead of expiry, and re-mints when
91
- * the server reports the token stale. A 401 or 403 from the route means signed
92
- * out; any other failure is retried rather than treated as a sign-out. It also
93
- * accepts an async resolver `() => Promise<string | null>` when the exchange
94
- * needs custom headers or a body — the same contract as the resolver form of
95
- * `apiKey`.
96
- *
97
- * Mutually exclusive with `apiKey`: a server holds a key, a browser holds a mint
98
- * route, and passing both is a validation error.
99
- */
100
- authEndpoint?: string | ApiKeySetter | null | undefined;
101
- /**
102
- * Local persistence mode. Pass `indexeddb` only when you want offline
103
- * queueing and a reload-surviving browser cache.
104
- *
105
- * @default 'memory'
106
- */
107
- persistence?: AbloPersistence;
108
- /**
109
- * Makes `create`, `update`, and `delete` survive process restarts and
110
- * ambiguous network responses. Server-side agents and workers inject a
111
- * workflow-, SQLite-, or filesystem-backed store; authenticated identity is
112
- * used to fence replay to the actor that originally made the write.
113
- *
114
- * Most clients leave this unset and use Ablo's default in-memory cache.
115
- * `durableWrites` is independent of that cache: it is the optional outbound
116
- * write journal for workers that must recover automatically after a crash.
117
- * Browsers only use IndexedDB when `persistence: 'indexeddb'` is explicitly
118
- * enabled for offline/reload behavior.
119
- *
120
- * @example
121
- * ```ts
122
- * Ablo({
123
- * schema,
124
- * apiKey,
125
- * durableWrites: { store, namespace: 'agent-worker' },
126
- * })
127
- * ```
128
- */
129
- /**
130
- * Wire message types to surface as collaboration events, e.g.
131
- * `['document:selection', 'document:cursor']`.
132
- *
133
- * These name your application's own concepts, so the SDK ships no default —
134
- * a schema with no documents should never receive document events. Declare
135
- * the ones you broadcast.
136
- */
137
- collaborationEvents?: readonly string[];
138
- durableWrites?: DurableWritesConfig;
139
- /**
140
- * @deprecated Use `durableWrites: { store, namespace }`.
141
- * Retained as a compatibility alias through the next major release.
142
- */
143
- commitOutbox?: DurableWriteStore;
144
- /**
145
- * @deprecated Actor identity is resolved from authentication. Use
146
- * `durableWrites.namespace` only when shared storage needs separate workflow
147
- * or deployment lanes.
148
- *
149
- * Stable actor/server scope for an injected HTTP `commitOutbox`.
150
- * Omit it to resolve `organizationId` and `participantId` from the authenticated
151
- * `/auth/identity` endpoint. Supplying it avoids that one setup request in
152
- * trusted worker environments; `namespace` distinguishes deployments or
153
- * workflow lanes that share the same actor identity.
154
- */
155
- commitOutboxScope?: CommitOutboxScope;
156
- /**
157
- * Selects the transport. `'websocket'` (the default) is the live client: a
158
- * persistent socket, a local synced cache, and `onChange` subscriptions. `'http'`
159
- * returns the stateless client for server-side actors — agents, workers, and
160
- * serverless handlers. It offers the same `ablo.<model>` surface and coordination
161
- * plane, but every call is a single HTTP round-trip, identity rides the bearer
162
- * credential, and no socket is opened. With `'http'` the return type narrows to
163
- * {@link AbloHttpClient}, so stateful-only capabilities such as the `local`
164
- * reads and `onChange` become compile errors instead of runtime gaps.
165
- *
166
- * Session minting through `sessions.create` is available on both transports.
167
- *
168
- * @default 'websocket'
169
- */
170
- transport?: 'websocket' | 'http' | undefined;
171
- /**
172
- * Turns Ablo's diagnostic logging on or off. `true` surfaces the `[Ablo]`
173
- * coordination trace — claims requested, queued, granted, and released, agent
174
- * handovers, and connection state — so you can watch the coordination between
175
- * agents and people while debugging. Omitting it, or `false`, keeps the quiet
176
- * default of warnings and errors only. For a middle ground use {@link logLevel}.
177
- * The `ABLO_LOG_LEVEL` environment variable overrides it, and a custom logger
178
- * takes precedence.
179
- */
180
- debug?: boolean | undefined;
181
- /**
182
- * Route Ablo's log lines through your own logger (pino, winston, a test spy)
183
- * instead of the default console `[Ablo]` logger. Supplying one bypasses
184
- * {@link debug}/{@link logLevel} — your logger owns the thresholds.
185
- */
186
- logger?: Logger;
187
- /**
188
- * The log threshold for the default `[Ablo]` logger; takes precedence over
189
- * {@link debug}. `'info'` shows coordination and connection events without the
190
- * per-model registration detail, `'debug'` shows everything, `'warn'` (the
191
- * default) shows warnings and errors only, and `'silent'` shows nothing. The
192
- * `ABLO_LOG_LEVEL` environment variable overrides it.
193
- */
194
- logLevel?: 'debug' | 'info' | 'warn' | 'error' | 'silent' | undefined;
195
- /**
196
- * Bearer auth token. Hosted-cloud consumers pass `apiKey`; self-hosted
197
- * deployments may pass a bearer token minted by their own auth layer.
198
- */
199
- authToken?: string | null | undefined;
200
- /**
201
- * Override the Ablo API base URL. Defaults to hosted production.
202
- */
203
- baseURL?: string | null | undefined;
204
- /** Custom fetch implementation for tests, proxies, or non-standard runtimes. */
205
- fetch?: typeof fetch | undefined;
206
- /** Default headers sent with every API request. */
207
- defaultHeaders?: Record<string, string | null | undefined> | undefined;
208
- /** Default query parameters sent with every API request. */
209
- defaultQuery?: Record<string, string | undefined> | undefined;
210
- /**
211
- * Client-side use is disabled by default because private API keys should
212
- * not ship to browsers. Set this only when the browser holds a minted
213
- * session token (`ek_`/`rk_`) or you route through a controlled server proxy.
214
- */
215
- dangerouslyAllowBrowser?: boolean | undefined;
216
- /**
217
- * How far a write goes before its promise settles, for every model write on
218
- * this client. The same word each write already takes per call
219
- * (`create({ …, wait: 'confirmed' })`); setting it here makes it the default
220
- * instead of repeating it.
221
- *
222
- * A write resolves as soon as it is applied locally and queued. That is what
223
- * makes the UI immediate, and it is right for most writes — but it means a
224
- * write the server later REFUSES has no caller left to tell. The rejection
225
- * reverts the local row and reaches `ablo.onMutationFailure(…)`, and an
226
- * application that subscribes to neither shows the change, then loses it,
227
- * with nothing thrown anywhere.
228
- *
229
- * ```ts
230
- * const ablo = new Ablo({ schema, apiKey, wait: 'confirmed' });
231
- * try {
232
- * await ablo.documents.update({ id, data }); // throws if refused
233
- * } catch (err) {
234
- * if (err instanceof AbloError) show(err.message);
235
- * }
236
- * ```
237
- *
238
- * The cost is real: each write now waits for the server's answer, so it is a
239
- * choice between immediacy and certainty rather than a strict improvement.
240
- * A per-call `wait` still wins over this.
241
- */
242
- wait?: 'queued' | 'confirmed' | undefined;
243
- }
244
- export interface InternalAbloOptions<S extends SchemaRecord = SchemaRecord> {
245
- /**
246
- * The API key used for authentication.
247
- *
248
- * Accepts a static string (`sk_live_...`) or an async function that resolves to
249
- * one. Defaults to the `ABLO_API_KEY` environment variable.
250
- *
251
- * When a function is provided, it is invoked before each request, so you can
252
- * rotate or refresh credentials at runtime. It must return a non-empty string, or
253
- * an `AbloAuthenticationError` is thrown; if it throws, the error is wrapped with
254
- * the original available as `cause`.
255
- */
256
- apiKey?: string | ApiKeySetter | null | undefined;
257
- /**
258
- * Session-mint endpoint (string or async resolver) — see
259
- * {@link AbloOptions.authEndpoint}. Mutually exclusive with `apiKey`.
260
- */
261
- authEndpoint?: string | ApiKeySetter | null | undefined;
262
- /**
263
- * A bearer auth token, sent as `Authorization: Bearer <token>` on every request.
264
- *
265
- * Use it for self-hosted deployments where your own auth layer mints capability
266
- * tokens directly. Hosted-cloud consumers pass `apiKey` instead and let the
267
- * server mint the capability token.
268
- */
269
- authToken?: string | null | undefined;
270
- /**
271
- * Override the default base URL. Defaults to
272
- * `wss://api.abloatai.com` for hosted production; pass an explicit
273
- * URL for self-hosted or private deployments.
274
- */
275
- baseURL?: string | null | undefined;
276
- /**
277
- * Custom `fetch` implementation. Defaults to `globalThis.fetch`.
278
- * Override for testing, custom transports, or runtime shims.
279
- */
280
- fetch?: typeof fetch | undefined;
281
- /**
282
- * Default headers to include with every request to the API.
283
- * Removed per-request by setting the header to `null` in request
284
- * options.
285
- */
286
- defaultHeaders?: Record<string, string | null | undefined> | undefined;
287
- /**
288
- * Default query parameters to include with every request.
289
- * Removed per-request by setting the param to `undefined`.
290
- */
291
- defaultQuery?: Record<string, string | undefined> | undefined;
292
- /**
293
- * Client-side use of this SDK is disabled by default — your apiKey
294
- * would ship to every visitor's network tab. Only set this to
295
- * `true` if you've understood the risk and have appropriate
296
- * mitigations (a minted session token, a server-side proxy, etc).
297
- */
298
- dangerouslyAllowBrowser?: boolean | undefined;
299
- /**
300
- * TypeScript schema defined with `defineSchema()`.
301
- *
302
- * Required on every public `Ablo(...)` construction. It produces typed model
303
- * clients such as `ablo.weatherReports.update(...)`; schema-agnostic routing
304
- * exists only inside the private HTTP transport.
305
- */
306
- schema: Schema<S>;
307
- /**
308
- * @deprecated The server derives the participant kind from the apiKey's scope.
309
- * Pass `apiKey` only.
310
- */
311
- kind?: ParticipantKind;
312
- /**
313
- * @deprecated The server derives user identity from the apiKey's scope, or from
314
- * the `Ablo-Acting-User` request header for multi-tenant setups. Pass `apiKey`
315
- * only.
316
- */
317
- user?: {
318
- id: string;
319
- teamIds?: string[];
320
- };
321
- /**
322
- * @deprecated The server derives agent identity from the apiKey's scope. Pass
323
- * `apiKey` only.
324
- */
325
- agentId?: string;
326
- /**
327
- * @deprecated Pass `apiKey` only; the server issues the capability token.
328
- */
329
- capabilityToken?: string;
330
- /** Custom logger (default: console). Supplying one bypasses {@link debug}/{@link logLevel}. */
331
- logger?: Logger;
332
- /**
333
- * Turns Ablo's diagnostic logging on or off. `true` surfaces the `[Ablo]`
334
- * coordination trace — claims acquired, queued, granted, and released, agent
335
- * handovers, and connection state — along with internal lifecycle events, so you
336
- * can watch the coordination between agents and people. Omitting it, or `false`,
337
- * keeps the quiet default of warnings and errors only. For a middle ground use
338
- * {@link logLevel}. The `ABLO_LOG_LEVEL` environment variable overrides it, and a
339
- * custom {@link logger} takes precedence.
340
- */
341
- debug?: boolean;
342
- /**
343
- * The log threshold for the default `[Ablo]` logger; takes precedence over
344
- * {@link debug}. `'info'` shows coordination and connection events without the
345
- * per-model registration detail, `'debug'` shows everything, `'warn'` (the
346
- * default) shows warnings and errors only, and `'silent'` shows nothing. The
347
- * `ABLO_LOG_LEVEL` environment variable overrides it.
348
- */
349
- logLevel?: 'debug' | 'info' | 'warn' | 'error' | 'silent';
350
- /** InstanceCache size limit (default: 10000) */
351
- maxPoolSize?: number;
352
- /**
353
- * Local persistence mode. Defaults to `memory`, keeping the local cache in
354
- * process rather than adding IndexedDB durability to every browser consumer.
355
- *
356
- * Pass `persistence: 'indexeddb'` only when you want offline queueing and a
357
- * reload-surviving local cache in a browser.
358
- */
359
- persistence?: AbloPersistence;
360
- /** Internal mirror of {@link AbloOptions.durableWrites}. */
361
- /** Wire message types to surface as collaboration events. Empty unless declared. */
362
- collaborationEvents?: readonly string[];
363
- durableWrites?: DurableWritesConfig;
364
- /** @deprecated Internal mirror of {@link AbloOptions.commitOutbox}. */
365
- commitOutbox?: DurableWriteStore;
366
- /** @deprecated Internal mirror of {@link AbloOptions.commitOutboxScope}. */
367
- commitOutboxScope?: CommitOutboxScope;
368
- /** @deprecated Use `persistence: 'indexeddb'` for durable browser storage. */
369
- offline?: boolean;
370
- /**
371
- * @deprecated Internal/testing escape hatch. Use `persistence` in
372
- * production code. `true` maps to `memory`; `false` maps to
373
- * `indexeddb` in browsers.
374
- */
375
- inMemory?: boolean;
376
- /**
377
- * When `true`, initialization starts immediately in the background, so reads work
378
- * once `await ready()` resolves.
379
- *
380
- * When `false` (the default), you must call `await ready()` before using the
381
- * engine; any query before that returns empty results. The explicit default
382
- * guards against silent initialization failures.
383
- */
384
- autoStart?: boolean;
385
- /**
386
- * How much baseline state this client pulls at startup.
387
- *
388
- * - `'full'`: pull every delta in the configured sync groups before `ready()`
389
- * resolves. The default for user clients.
390
- * - `'none'`: open the socket and process live deltas only, with no baseline
391
- * fetch. Reads round-trip through `retrieve`, and subscriptions fill the local
392
- * cache lazily. The default for agent clients, which do not need a local
393
- * replica of the organization's data.
394
- */
395
- bootstrapMode?: 'full' | 'none';
396
- /**
397
- * Custom observability provider (Sentry, Honeycomb, OTel, etc.).
398
- * Default: a noop implementation that drops all breadcrumbs and spans.
399
- */
400
- observability?: ObservabilityProvider;
401
- /**
402
- * Custom analytics provider (PostHog, Amplitude, Segment, etc.).
403
- * Default: a noop implementation that drops all events.
404
- */
405
- analytics?: Analytics;
406
- /**
407
- * Detect whether an error from a mutation/bootstrap response means the
408
- * user's session has expired. Used to surface re-auth prompts. Default:
409
- * heuristic that matches `401 Unauthorized` and a few common error shapes.
410
- */
411
- sessionErrorDetector?: SessionErrorDetector;
412
- /**
413
- * Detect whether the browser is currently online. Default: reads
414
- * `navigator.onLine` and listens to the `online`/`offline` events.
415
- */
416
- onlineStatus?: OnlineStatusProvider;
417
- /**
418
- * Replace the built-in `MutationExecutor` (which posts a hardcoded
419
- * `commit` method against `${url}/graphql`) with one that uses your own
420
- * GraphQL client, auth headers, retry policy, and observability hooks.
421
- *
422
- * Default: a fetch-based executor that targets `${url}/graphql` and sends
423
- * the configured bearer (`apiKey` / backend-minted token) as `Authorization`.
424
- */
425
- mutationExecutor?: MutationExecutor;
426
- /**
427
- * Partial overrides for the auto-derived `RuntimeConfig`. Merged on
428
- * top of `deriveConfigFromSchema(schema)`. Use this when you need
429
- * specific `modelCreatePriority`, `batchableModels`, or
430
- * `essentialFields` settings that the schema cannot express.
431
- */
432
- configOverrides?: Partial<RuntimeConfig>;
433
- /**
434
- * The sync groups (entity scopes) this client subscribes to. Normally the server
435
- * derives these from the apiKey's scope; pass them explicitly when the key does
436
- * not resolve them, otherwise the client fans out nothing and logs a `degenerate
437
- * syncGroups` warning. Build values with `syncGroup(kind, id)` from
438
- * `@abloatai/ablo/schema`.
439
- */
440
- syncGroups?: string[];
441
- /**
442
- * Override the bootstrap endpoint base URL. Use this when your sync
443
- * server's HTTP API lives on a different host than the WebSocket URL.
444
- *
445
- * Must include the `/api` prefix — `BootstrapFetcher` appends
446
- * `/sync/bootstrap` directly. Example:
447
- * `'http://api.example.com/api'` → `http://api.example.com/api/sync/bootstrap`.
448
- *
449
- * Default: `${url.replace(/^ws/, 'http')}/api`.
450
- */
451
- bootstrapBaseUrl?: string;
452
- /**
453
- * The account scope. Supply it together with a user or agent id to resolve
454
- * identity locally without a server round-trip; without it, the client resolves
455
- * identity from the token through the identity endpoint instead.
456
- */
457
- organizationId?: string;
458
- /** The client-wide write default — see {@link AbloOptions.wait}. Projected
459
- * from the public option rather than restated, so the two cannot diverge. */
460
- wait?: AbloOptions['wait'];
461
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * The option types for the {@link Ablo} client: the public {@link AbloOptions}
3
- * bag callers pass, and the fuller monorepo-only {@link InternalAbloOptions}
4
- * construction surface exposed through `@abloatai/ablo/core`.
5
- * This module holds only types and has no runtime imports.
6
- */
7
- export {};
@@ -1,48 +0,0 @@
1
- /**
2
- * The reactive engine build — everything `humans()` means at construction
3
- * time (ADR 0016). `Ablo({ ... })` resolves auth and capabilities, then hands
4
- * this module the prelude; from here on it is all materialisation: the
5
- * runtime context, the internal components, the store and its credential
6
- * lifecycle, presence and claim streams, the typed model proxies, and the
7
- * commit/claim/session resources — assembled into the reactive client.
8
- *
9
- * Extracted from the factory so the composition root stays a root: resolve,
10
- * dispatch, return. The construction moves behind `humans().init` proper when
11
- * the plugin context can carry these inputs — until then the factory calls
12
- * this directly for the humans-installed path.
13
- */
14
- import type { SchemaRecord } from '../transaction/schema/schema.js';
15
- import type { MutationExecutor } from '../interfaces/index.js';
16
- import type { SyncWebSocket } from '../sync/SyncWebSocket.js';
17
- import type { AttachablePresenceStream } from '../sync/createPresenceStream.js';
18
- import type { AbloOptions } from './options.js';
19
- import type { ClientPrelude } from './clientPrelude.js';
20
- import type { Ablo } from './Ablo.js';
21
- /**
22
- * What the reactive build is fed: the factory's pass over the options bag
23
- * ({@link ClientPrelude} — auth, url, logging, identity, shared with the other
24
- * client shapes), plus the four things that must exist before the store does.
25
- *
26
- * The prelude half is extended, never restated. A second copy of those fields
27
- * would drift the moment one side gained a resolver the other did not.
28
- */
29
- export interface ReactiveEngineInputs<S extends SchemaRecord> extends ClientPrelude<S> {
30
- options: AbloOptions<S>;
31
- executor: MutationExecutor;
32
- /**
33
- * The connection, constructed by the factory before the plugin list
34
- * resolved — the same instance `PluginContext.transport` carries. The
35
- * store takes it as a dependency and owns the lifecycle.
36
- */
37
- transport: SyncWebSocket;
38
- /** The humans() plugin's contribution — built by its `init`, already
39
- * attached to the connection the context carried. */
40
- presence: AttachablePresenceStream;
41
- /**
42
- * Constructs a sibling client (`ablo.agents.create(...)` mints a scoped key
43
- * and builds a second engine with it). Injected by the factory — a direct
44
- * import back into it would close a runtime cycle.
45
- */
46
- createSibling: (options: AbloOptions<S>) => Ablo<S>;
47
- }
48
- export declare function buildReactiveEngine<const S extends SchemaRecord>(inputs: ReactiveEngineInputs<S>): Ablo<S>;