@abloatai/ablo 0.35.0 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (622) hide show
  1. package/AGENTS.md +2 -2
  2. package/CHANGELOG.md +71 -1929
  3. package/NOTICE +2 -2
  4. package/README.md +23 -532
  5. package/assets/banner.png +0 -0
  6. package/dist/auth.d.ts +2 -0
  7. package/dist/auth.d.ts.map +1 -0
  8. package/dist/auth.js +2 -0
  9. package/dist/auth.js.map +1 -0
  10. package/dist/client.d.ts +3 -0
  11. package/dist/client.d.ts.map +1 -0
  12. package/dist/client.js +3 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/coordination.d.ts +2 -0
  15. package/dist/coordination.d.ts.map +1 -0
  16. package/dist/coordination.js +2 -0
  17. package/dist/coordination.js.map +1 -0
  18. package/dist/index.d.ts +3 -112
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +3 -161
  21. package/dist/index.js.map +1 -0
  22. package/dist/react.d.ts +4 -0
  23. package/dist/react.d.ts.map +1 -0
  24. package/dist/react.js +3 -0
  25. package/dist/react.js.map +1 -0
  26. package/dist/schema.d.ts +2 -0
  27. package/dist/schema.d.ts.map +1 -0
  28. package/dist/schema.js +2 -0
  29. package/dist/schema.js.map +1 -0
  30. package/dist/server.d.ts +2 -0
  31. package/dist/server.d.ts.map +1 -0
  32. package/dist/server.js +2 -0
  33. package/dist/server.js.map +1 -0
  34. package/dist/source-conformance.d.ts +2 -0
  35. package/dist/source-conformance.d.ts.map +1 -0
  36. package/dist/source-conformance.js +2 -0
  37. package/dist/source-conformance.js.map +1 -0
  38. package/dist/source-drizzle.d.ts +2 -0
  39. package/dist/source-drizzle.d.ts.map +1 -0
  40. package/dist/source-drizzle.js +2 -0
  41. package/dist/source-drizzle.js.map +1 -0
  42. package/dist/source-kysely.d.ts +2 -0
  43. package/dist/source-kysely.d.ts.map +1 -0
  44. package/dist/source-kysely.js +2 -0
  45. package/dist/source-kysely.js.map +1 -0
  46. package/dist/source-next.d.ts +2 -0
  47. package/dist/source-next.d.ts.map +1 -0
  48. package/dist/source-next.js +2 -0
  49. package/dist/source-next.js.map +1 -0
  50. package/dist/source.d.ts +2 -0
  51. package/dist/source.d.ts.map +1 -0
  52. package/dist/source.js +2 -0
  53. package/dist/source.js.map +1 -0
  54. package/dist/wire.d.ts +2 -0
  55. package/dist/wire.d.ts.map +1 -0
  56. package/dist/wire.js +2 -0
  57. package/dist/wire.js.map +1 -0
  58. package/docs/agents.md +2 -2
  59. package/docs/api-keys.md +13 -12
  60. package/docs/api.md +15 -53
  61. package/docs/audit.md +4 -3
  62. package/docs/cli.md +11 -11
  63. package/docs/client-behavior.md +9 -9
  64. package/docs/concurrency-convention.md +28 -42
  65. package/docs/coordination.md +228 -86
  66. package/docs/data-sources.md +5 -5
  67. package/docs/debugging.md +34 -12
  68. package/docs/deployment.md +8 -8
  69. package/docs/examples/agent-human.md +4 -4
  70. package/docs/examples/ai-sdk-tool.md +1 -1
  71. package/docs/examples/existing-python-backend.md +15 -4
  72. package/docs/examples/nextjs.md +27 -6
  73. package/docs/examples/scoped-agent.md +3 -3
  74. package/docs/examples/server-agent.md +2 -2
  75. package/docs/groups.md +57 -3
  76. package/docs/guarantees.md +37 -10
  77. package/docs/how-it-works.md +32 -8
  78. package/docs/idempotency.md +6 -6
  79. package/docs/identity.md +24 -24
  80. package/docs/index.md +8 -8
  81. package/docs/integration-guide.md +38 -16
  82. package/docs/internal/README.md +18 -0
  83. package/docs/internal/agent-fleet-coordination-design.md +171 -0
  84. package/docs/internal/agent-orchestration.md +58 -0
  85. package/docs/internal/commit-identifiers.md +91 -0
  86. package/docs/internal/concurrency-open-decisions.md +37 -0
  87. package/docs/internal/data-source-reverse-channel.md +150 -0
  88. package/docs/internal/per-field-conflict-detection.md +165 -0
  89. package/docs/internal/postgres-replication.md +64 -0
  90. package/docs/internal/serializable-schema.md +119 -0
  91. package/docs/internal/structure.md +32 -0
  92. package/docs/mcp.md +9 -9
  93. package/docs/migration.md +37 -18
  94. package/docs/projects.md +1 -1
  95. package/docs/quickstart.md +2 -2
  96. package/docs/react.md +24 -13
  97. package/docs/schema-contract.md +3 -3
  98. package/docs/sessions.md +91 -37
  99. package/docs/webhooks.md +9 -9
  100. package/examples/README.md +2 -2
  101. package/examples/data-source/README.md +1 -1
  102. package/examples/data-source/ablo-driver.ts +1 -1
  103. package/examples/data-source/customer-server.ts +1 -1
  104. package/examples/data-source/run.ts +1 -1
  105. package/examples/data-source/schema.ts +1 -1
  106. package/examples/quickstart.ts +2 -2
  107. package/llms.txt +12 -12
  108. package/package.json +64 -174
  109. package/dist/BaseSyncedStore.d.ts +0 -823
  110. package/dist/BaseSyncedStore.js +0 -1955
  111. package/dist/Database.d.ts +0 -335
  112. package/dist/Database.js +0 -1500
  113. package/dist/InstanceCache.d.ts +0 -233
  114. package/dist/InstanceCache.js +0 -1164
  115. package/dist/LazyReferenceCollection.d.ts +0 -177
  116. package/dist/LazyReferenceCollection.js +0 -461
  117. package/dist/Model.d.ts +0 -444
  118. package/dist/Model.js +0 -909
  119. package/dist/ModelRegistry.d.ts +0 -221
  120. package/dist/ModelRegistry.js +0 -537
  121. package/dist/NetworkMonitor.d.ts +0 -26
  122. package/dist/NetworkMonitor.js +0 -77
  123. package/dist/RuntimeContext.d.ts +0 -52
  124. package/dist/RuntimeContext.js +0 -80
  125. package/dist/SyncClient.d.ts +0 -551
  126. package/dist/SyncClient.js +0 -2199
  127. package/dist/adapters/alwaysOnline.d.ts +0 -14
  128. package/dist/adapters/alwaysOnline.js +0 -17
  129. package/dist/adapters/inMemoryStorage.d.ts +0 -31
  130. package/dist/adapters/inMemoryStorage.js +0 -110
  131. package/dist/ai-sdk/coordinatedTool.d.ts +0 -120
  132. package/dist/ai-sdk/coordinatedTool.js +0 -134
  133. package/dist/ai-sdk/coordinationContext.d.ts +0 -46
  134. package/dist/ai-sdk/coordinationContext.js +0 -106
  135. package/dist/ai-sdk/index.d.ts +0 -121
  136. package/dist/ai-sdk/index.js +0 -121
  137. package/dist/ai-sdk/wrap.d.ts +0 -65
  138. package/dist/ai-sdk/wrap.js +0 -39
  139. package/dist/auth/index.d.ts +0 -1
  140. package/dist/auth/index.js +0 -8
  141. package/dist/batching/index.d.ts +0 -55
  142. package/dist/batching/index.js +0 -147
  143. package/dist/cli.cjs +0 -288600
  144. package/dist/client/Ablo.d.ts +0 -231
  145. package/dist/client/Ablo.js +0 -149
  146. package/dist/client/abloClient.d.ts +0 -309
  147. package/dist/client/abloClient.js +0 -13
  148. package/dist/client/clientPrelude.d.ts +0 -52
  149. package/dist/client/clientPrelude.js +0 -60
  150. package/dist/client/consoleLogger.d.ts +0 -35
  151. package/dist/client/consoleLogger.js +0 -44
  152. package/dist/client/coreClient.d.ts +0 -60
  153. package/dist/client/coreClient.js +0 -118
  154. package/dist/client/createInternalComponents.d.ts +0 -46
  155. package/dist/client/createInternalComponents.js +0 -92
  156. package/dist/client/createModelProxy.d.ts +0 -228
  157. package/dist/client/createModelProxy.js +0 -818
  158. package/dist/client/humans.d.ts +0 -48
  159. package/dist/client/humans.js +0 -52
  160. package/dist/client/modelRegistration.d.ts +0 -10
  161. package/dist/client/modelRegistration.js +0 -312
  162. package/dist/client/options.d.ts +0 -461
  163. package/dist/client/options.js +0 -7
  164. package/dist/client/reactiveEngine.d.ts +0 -48
  165. package/dist/client/reactiveEngine.js +0 -910
  166. package/dist/client/resourceTypes.d.ts +0 -12
  167. package/dist/client/resourceTypes.js +0 -10
  168. package/dist/client/schemaConfig.d.ts +0 -44
  169. package/dist/client/schemaConfig.js +0 -185
  170. package/dist/client/validateAbloOptions.d.ts +0 -42
  171. package/dist/client/validateAbloOptions.js +0 -43
  172. package/dist/client/wsMutationExecutor.d.ts +0 -27
  173. package/dist/client/wsMutationExecutor.js +0 -72
  174. package/dist/context.d.ts +0 -29
  175. package/dist/context.js +0 -58
  176. package/dist/coordination/ClaimLog.d.ts +0 -26
  177. package/dist/coordination/ClaimLog.js +0 -32
  178. package/dist/coordination/index.d.ts +0 -1
  179. package/dist/coordination/index.js +0 -8
  180. package/dist/core/DatabaseManager.d.ts +0 -105
  181. package/dist/core/DatabaseManager.js +0 -387
  182. package/dist/core/QueryProcessor.d.ts +0 -75
  183. package/dist/core/QueryProcessor.js +0 -255
  184. package/dist/core/QueryView.d.ts +0 -79
  185. package/dist/core/QueryView.js +0 -218
  186. package/dist/core/StoreManager.d.ts +0 -112
  187. package/dist/core/StoreManager.js +0 -302
  188. package/dist/core/ViewRegistry.d.ts +0 -20
  189. package/dist/core/ViewRegistry.js +0 -55
  190. package/dist/core/index.d.ts +0 -33
  191. package/dist/core/index.js +0 -48
  192. package/dist/core/openIDBWithTimeout.d.ts +0 -65
  193. package/dist/core/openIDBWithTimeout.js +0 -153
  194. package/dist/core/queryUtils.d.ts +0 -45
  195. package/dist/core/queryUtils.js +0 -69
  196. package/dist/core/storeContract.d.ts +0 -145
  197. package/dist/core/storeContract.js +0 -12
  198. package/dist/docs/catalog.d.ts +0 -72
  199. package/dist/docs/catalog.js +0 -227
  200. package/dist/docs/index.d.ts +0 -10
  201. package/dist/docs/index.js +0 -10
  202. package/dist/environment.d.ts +0 -1
  203. package/dist/environment.js +0 -8
  204. package/dist/interfaces/index.d.ts +0 -311
  205. package/dist/interfaces/index.js +0 -9
  206. package/dist/keys/index.d.ts +0 -1
  207. package/dist/keys/index.js +0 -8
  208. package/dist/mutators/RecordingMutation.d.ts +0 -36
  209. package/dist/mutators/RecordingMutation.js +0 -182
  210. package/dist/mutators/Transaction.d.ts +0 -40
  211. package/dist/mutators/Transaction.js +0 -58
  212. package/dist/mutators/UndoManager.d.ts +0 -258
  213. package/dist/mutators/UndoManager.js +0 -658
  214. package/dist/mutators/defineMutators.d.ts +0 -60
  215. package/dist/mutators/defineMutators.js +0 -18
  216. package/dist/mutators/inverseOp.d.ts +0 -126
  217. package/dist/mutators/inverseOp.js +0 -71
  218. package/dist/mutators/mutateActions.d.ts +0 -45
  219. package/dist/mutators/mutateActions.js +0 -105
  220. package/dist/mutators/readerActions.d.ts +0 -33
  221. package/dist/mutators/readerActions.js +0 -57
  222. package/dist/mutators/undoApply.d.ts +0 -51
  223. package/dist/mutators/undoApply.js +0 -117
  224. package/dist/policy/index.d.ts +0 -21
  225. package/dist/policy/index.js +0 -20
  226. package/dist/query/client.d.ts +0 -61
  227. package/dist/query/client.js +0 -137
  228. package/dist/query/types.d.ts +0 -85
  229. package/dist/query/types.js +0 -16
  230. package/dist/react/AbloProvider.d.ts +0 -230
  231. package/dist/react/AbloProvider.js +0 -455
  232. package/dist/react/ClientSideSuspense.d.ts +0 -36
  233. package/dist/react/ClientSideSuspense.js +0 -17
  234. package/dist/react/DefaultFallback.d.ts +0 -24
  235. package/dist/react/DefaultFallback.js +0 -43
  236. package/dist/react/context.d.ts +0 -55
  237. package/dist/react/context.js +0 -29
  238. package/dist/react/index.d.ts +0 -61
  239. package/dist/react/index.js +0 -66
  240. package/dist/react/internalContext.d.ts +0 -33
  241. package/dist/react/internalContext.js +0 -3
  242. package/dist/react/useAblo.d.ts +0 -75
  243. package/dist/react/useAblo.js +0 -102
  244. package/dist/react/useCurrentUserId.d.ts +0 -22
  245. package/dist/react/useCurrentUserId.js +0 -34
  246. package/dist/react/useErrorListener.d.ts +0 -20
  247. package/dist/react/useErrorListener.js +0 -38
  248. package/dist/react/useMutationFailureListener.d.ts +0 -26
  249. package/dist/react/useMutationFailureListener.js +0 -38
  250. package/dist/react/useMutators.d.ts +0 -56
  251. package/dist/react/useMutators.js +0 -84
  252. package/dist/react/useReactive.d.ts +0 -35
  253. package/dist/react/useReactive.js +0 -123
  254. package/dist/react/useSyncStatus.d.ts +0 -59
  255. package/dist/react/useSyncStatus.js +0 -76
  256. package/dist/react/useUndoScope.d.ts +0 -34
  257. package/dist/react/useUndoScope.js +0 -81
  258. package/dist/schema/coordination.d.ts +0 -112
  259. package/dist/schema/coordination.js +0 -129
  260. package/dist/schema/ddl.d.ts +0 -97
  261. package/dist/schema/ddl.js +0 -491
  262. package/dist/schema/ddlLock.d.ts +0 -35
  263. package/dist/schema/ddlLock.js +0 -46
  264. package/dist/schema/diff.d.ts +0 -225
  265. package/dist/schema/diff.js +0 -289
  266. package/dist/schema/generate.d.ts +0 -19
  267. package/dist/schema/generate.js +0 -86
  268. package/dist/schema/index.d.ts +0 -41
  269. package/dist/schema/index.js +0 -76
  270. package/dist/schema/queries.d.ts +0 -201
  271. package/dist/schema/queries.js +0 -144
  272. package/dist/schema/select.d.ts +0 -40
  273. package/dist/schema/select.js +0 -87
  274. package/dist/schema/serialize.d.ts +0 -115
  275. package/dist/schema/serialize.js +0 -262
  276. package/dist/schema/sugar.d.ts +0 -109
  277. package/dist/schema/sugar.js +0 -83
  278. package/dist/schema/syncDeltaRow.d.ts +0 -6
  279. package/dist/schema/syncDeltaRow.js +0 -6
  280. package/dist/server/adapter.d.ts +0 -173
  281. package/dist/server/adapter.js +0 -18
  282. package/dist/server/commit.d.ts +0 -107
  283. package/dist/server/commit.js +0 -1
  284. package/dist/server/index.d.ts +0 -14
  285. package/dist/server/index.js +0 -2
  286. package/dist/server/readConfig.d.ts +0 -80
  287. package/dist/server/readConfig.js +0 -8
  288. package/dist/server/storageMode.d.ts +0 -23
  289. package/dist/server/storageMode.js +0 -17
  290. package/dist/source/adapter.d.ts +0 -81
  291. package/dist/source/adapter.js +0 -22
  292. package/dist/source/adapters/drizzle.d.ts +0 -48
  293. package/dist/source/adapters/drizzle.js +0 -219
  294. package/dist/source/adapters/kysely.d.ts +0 -42
  295. package/dist/source/adapters/kysely.js +0 -205
  296. package/dist/source/adapters/kyselyMutationCore.d.ts +0 -76
  297. package/dist/source/adapters/kyselyMutationCore.js +0 -125
  298. package/dist/source/adapters/memory.d.ts +0 -13
  299. package/dist/source/adapters/memory.js +0 -130
  300. package/dist/source/adapters/prisma.d.ts +0 -63
  301. package/dist/source/adapters/prisma.js +0 -202
  302. package/dist/source/conformance.d.ts +0 -37
  303. package/dist/source/conformance.js +0 -215
  304. package/dist/source/connector.d.ts +0 -95
  305. package/dist/source/connector.js +0 -266
  306. package/dist/source/connectorProtocol.d.ts +0 -154
  307. package/dist/source/connectorProtocol.js +0 -163
  308. package/dist/source/contract.d.ts +0 -195
  309. package/dist/source/contract.js +0 -164
  310. package/dist/source/factory.d.ts +0 -92
  311. package/dist/source/factory.js +0 -286
  312. package/dist/source/footprint.d.ts +0 -111
  313. package/dist/source/footprint.js +0 -0
  314. package/dist/source/idempotency.d.ts +0 -61
  315. package/dist/source/idempotency.js +0 -144
  316. package/dist/source/index.d.ts +0 -23
  317. package/dist/source/index.js +0 -30
  318. package/dist/source/migrations.d.ts +0 -21
  319. package/dist/source/migrations.js +0 -103
  320. package/dist/source/next.d.ts +0 -32
  321. package/dist/source/next.js +0 -25
  322. package/dist/source/pushQueue.d.ts +0 -134
  323. package/dist/source/pushQueue.js +0 -256
  324. package/dist/source/signing.d.ts +0 -92
  325. package/dist/source/signing.js +0 -162
  326. package/dist/source/types.d.ts +0 -401
  327. package/dist/source/types.js +0 -59
  328. package/dist/stores/ObjectStore.d.ts +0 -115
  329. package/dist/stores/ObjectStore.js +0 -393
  330. package/dist/stores/ObjectStoreContract.d.ts +0 -38
  331. package/dist/stores/ObjectStoreContract.js +0 -1
  332. package/dist/stores/SyncActionStore.d.ts +0 -97
  333. package/dist/stores/SyncActionStore.js +0 -504
  334. package/dist/stores/syncAction.d.ts +0 -26
  335. package/dist/stores/syncAction.js +0 -16
  336. package/dist/surface.d.ts +0 -36
  337. package/dist/surface.js +0 -75
  338. package/dist/sync/BootstrapFetcher.d.ts +0 -280
  339. package/dist/sync/BootstrapFetcher.js +0 -962
  340. package/dist/sync/ConnectionManager.d.ts +0 -8
  341. package/dist/sync/ConnectionManager.js +0 -8
  342. package/dist/sync/OnDemandLoader.d.ts +0 -228
  343. package/dist/sync/OnDemandLoader.js +0 -742
  344. package/dist/sync/SubscriptionManager.d.ts +0 -159
  345. package/dist/sync/SubscriptionManager.js +0 -243
  346. package/dist/sync/SyncWebSocket.d.ts +0 -173
  347. package/dist/sync/SyncWebSocket.js +0 -438
  348. package/dist/sync/awaitClaimGrant.d.ts +0 -6
  349. package/dist/sync/awaitClaimGrant.js +0 -6
  350. package/dist/sync/bootstrapApply.d.ts +0 -70
  351. package/dist/sync/bootstrapApply.js +0 -73
  352. package/dist/sync/commitFrames.d.ts +0 -8
  353. package/dist/sync/commitFrames.js +0 -8
  354. package/dist/sync/contextPorts.d.ts +0 -18
  355. package/dist/sync/contextPorts.js +0 -31
  356. package/dist/sync/createClaimStream.d.ts +0 -7
  357. package/dist/sync/createClaimStream.js +0 -7
  358. package/dist/sync/createPresenceStream.d.ts +0 -69
  359. package/dist/sync/createPresenceStream.js +0 -200
  360. package/dist/sync/createSnapshot.d.ts +0 -29
  361. package/dist/sync/createSnapshot.js +0 -118
  362. package/dist/sync/credentialLifecycle.d.ts +0 -7
  363. package/dist/sync/credentialLifecycle.js +0 -7
  364. package/dist/sync/deltaPipeline.d.ts +0 -113
  365. package/dist/sync/deltaPipeline.js +0 -261
  366. package/dist/sync/groupChange.d.ts +0 -113
  367. package/dist/sync/groupChange.js +0 -242
  368. package/dist/sync/participants.d.ts +0 -115
  369. package/dist/sync/participants.js +0 -344
  370. package/dist/sync/persistedPrefix.d.ts +0 -12
  371. package/dist/sync/persistedPrefix.js +0 -22
  372. package/dist/sync/schemaDrift.d.ts +0 -55
  373. package/dist/sync/schemaDrift.js +0 -53
  374. package/dist/sync/schemas.d.ts +0 -70
  375. package/dist/sync/schemas.js +0 -94
  376. package/dist/sync/syncCursor.d.ts +0 -40
  377. package/dist/sync/syncCursor.js +0 -55
  378. package/dist/sync/syncPlan.d.ts +0 -54
  379. package/dist/sync/syncPlan.js +0 -50
  380. package/dist/sync/wsFrameHandlers.d.ts +0 -8
  381. package/dist/sync/wsFrameHandlers.js +0 -8
  382. package/dist/testing/fixtures/bootstrap.d.ts +0 -49
  383. package/dist/testing/fixtures/bootstrap.js +0 -59
  384. package/dist/testing/fixtures/deltas.d.ts +0 -83
  385. package/dist/testing/fixtures/deltas.js +0 -136
  386. package/dist/testing/fixtures/httpResponses.d.ts +0 -70
  387. package/dist/testing/fixtures/httpResponses.js +0 -90
  388. package/dist/testing/fixtures/models.d.ts +0 -83
  389. package/dist/testing/fixtures/models.js +0 -272
  390. package/dist/testing/helpers/reactWrapper.d.ts +0 -69
  391. package/dist/testing/helpers/reactWrapper.js +0 -67
  392. package/dist/testing/helpers/syncEngineHarness.d.ts +0 -54
  393. package/dist/testing/helpers/syncEngineHarness.js +0 -73
  394. package/dist/testing/helpers/wait.d.ts +0 -30
  395. package/dist/testing/helpers/wait.js +0 -49
  396. package/dist/testing/index.d.ts +0 -23
  397. package/dist/testing/index.js +0 -33
  398. package/dist/testing/mocks/FakeDatabase.d.ts +0 -18
  399. package/dist/testing/mocks/FakeDatabase.js +0 -10
  400. package/dist/testing/mocks/MockMutationExecutor.d.ts +0 -87
  401. package/dist/testing/mocks/MockMutationExecutor.js +0 -186
  402. package/dist/testing/mocks/MockNetworkMonitor.d.ts +0 -20
  403. package/dist/testing/mocks/MockNetworkMonitor.js +0 -46
  404. package/dist/testing/mocks/MockSyncContext.d.ts +0 -51
  405. package/dist/testing/mocks/MockSyncContext.js +0 -72
  406. package/dist/testing/mocks/MockSyncStore.d.ts +0 -88
  407. package/dist/testing/mocks/MockSyncStore.js +0 -171
  408. package/dist/testing/mocks/MockWebSocket.d.ts +0 -71
  409. package/dist/testing/mocks/MockWebSocket.js +0 -118
  410. package/dist/transaction/ablo.d.ts +0 -88
  411. package/dist/transaction/ablo.js +0 -33
  412. package/dist/transaction/auth/apiKey.d.ts +0 -152
  413. package/dist/transaction/auth/apiKey.js +0 -419
  414. package/dist/transaction/auth/bootstrapScope.d.ts +0 -15
  415. package/dist/transaction/auth/bootstrapScope.js +0 -1
  416. package/dist/transaction/auth/capability.d.ts +0 -177
  417. package/dist/transaction/auth/capability.js +0 -199
  418. package/dist/transaction/auth/credentialEndpoint.d.ts +0 -61
  419. package/dist/transaction/auth/credentialEndpoint.js +0 -86
  420. package/dist/transaction/auth/credentialPolicy.d.ts +0 -148
  421. package/dist/transaction/auth/credentialPolicy.js +0 -125
  422. package/dist/transaction/auth/credentialSource.d.ts +0 -30
  423. package/dist/transaction/auth/credentialSource.js +0 -55
  424. package/dist/transaction/auth/hostedEndpoints.d.ts +0 -21
  425. package/dist/transaction/auth/hostedEndpoints.js +0 -21
  426. package/dist/transaction/auth/identity.d.ts +0 -55
  427. package/dist/transaction/auth/identity.js +0 -210
  428. package/dist/transaction/auth/index.d.ts +0 -162
  429. package/dist/transaction/auth/index.js +0 -304
  430. package/dist/transaction/auth/schemas.d.ts +0 -59
  431. package/dist/transaction/auth/schemas.js +0 -85
  432. package/dist/transaction/auth/sessionMint.d.ts +0 -28
  433. package/dist/transaction/auth/sessionMint.js +0 -85
  434. package/dist/transaction/coordination/awaitClaimGrant.d.ts +0 -49
  435. package/dist/transaction/coordination/awaitClaimGrant.js +0 -112
  436. package/dist/transaction/coordination/claimHeartbeatLoop.d.ts +0 -50
  437. package/dist/transaction/coordination/claimHeartbeatLoop.js +0 -88
  438. package/dist/transaction/coordination/claimMeta.d.ts +0 -49
  439. package/dist/transaction/coordination/claimMeta.js +0 -52
  440. package/dist/transaction/coordination/createClaimStream.d.ts +0 -64
  441. package/dist/transaction/coordination/createClaimStream.js +0 -475
  442. package/dist/transaction/coordination/events.d.ts +0 -74
  443. package/dist/transaction/coordination/events.js +0 -7
  444. package/dist/transaction/coordination/index.d.ts +0 -19
  445. package/dist/transaction/coordination/index.js +0 -44
  446. package/dist/transaction/coordination/locator.d.ts +0 -83
  447. package/dist/transaction/coordination/locator.js +0 -82
  448. package/dist/transaction/coordination/schema.d.ts +0 -1473
  449. package/dist/transaction/coordination/schema.js +0 -1013
  450. package/dist/transaction/coordination/targetConflict.d.ts +0 -2
  451. package/dist/transaction/coordination/targetConflict.js +0 -103
  452. package/dist/transaction/coordination/trace.d.ts +0 -78
  453. package/dist/transaction/coordination/trace.js +0 -138
  454. package/dist/transaction/durableWrites.d.ts +0 -62
  455. package/dist/transaction/durableWrites.js +0 -71
  456. package/dist/transaction/environment.d.ts +0 -105
  457. package/dist/transaction/environment.js +0 -108
  458. package/dist/transaction/errorCodes.d.ts +0 -403
  459. package/dist/transaction/errorCodes.js +0 -480
  460. package/dist/transaction/errors.d.ts +0 -428
  461. package/dist/transaction/errors.js +0 -686
  462. package/dist/transaction/index.d.ts +0 -20
  463. package/dist/transaction/index.js +0 -20
  464. package/dist/transaction/keys/index.d.ts +0 -87
  465. package/dist/transaction/keys/index.js +0 -207
  466. package/dist/transaction/log/syncDeltaRow.d.ts +0 -158
  467. package/dist/transaction/log/syncDeltaRow.js +0 -95
  468. package/dist/transaction/logPosition.d.ts +0 -97
  469. package/dist/transaction/logPosition.js +0 -125
  470. package/dist/transaction/logger.d.ts +0 -16
  471. package/dist/transaction/logger.js +0 -7
  472. package/dist/transaction/observability.d.ts +0 -53
  473. package/dist/transaction/observability.js +0 -19
  474. package/dist/transaction/persistence.d.ts +0 -12
  475. package/dist/transaction/persistence.js +0 -11
  476. package/dist/transaction/plugin.d.ts +0 -192
  477. package/dist/transaction/plugin.js +0 -87
  478. package/dist/transaction/policy/types.d.ts +0 -217
  479. package/dist/transaction/policy/types.js +0 -126
  480. package/dist/transaction/resources/functionalUpdate.d.ts +0 -79
  481. package/dist/transaction/resources/functionalUpdate.js +0 -87
  482. package/dist/transaction/resources/httpResources.d.ts +0 -266
  483. package/dist/transaction/resources/httpResources.js +0 -7
  484. package/dist/transaction/resources/modelOperations.d.ts +0 -319
  485. package/dist/transaction/resources/modelOperations.js +0 -12
  486. package/dist/transaction/resources/mutationOptions.d.ts +0 -66
  487. package/dist/transaction/resources/mutationOptions.js +0 -9
  488. package/dist/transaction/resources/where.d.ts +0 -85
  489. package/dist/transaction/resources/where.js +0 -70
  490. package/dist/transaction/resources/writeOptionsSchema.d.ts +0 -47
  491. package/dist/transaction/resources/writeOptionsSchema.js +0 -73
  492. package/dist/transaction/schema/field.d.ts +0 -126
  493. package/dist/transaction/schema/field.js +0 -265
  494. package/dist/transaction/schema/loadStrategy.d.ts +0 -45
  495. package/dist/transaction/schema/loadStrategy.js +0 -46
  496. package/dist/transaction/schema/model.d.ts +0 -379
  497. package/dist/transaction/schema/model.js +0 -123
  498. package/dist/transaction/schema/openapi.d.ts +0 -57
  499. package/dist/transaction/schema/openapi.js +0 -340
  500. package/dist/transaction/schema/relation.d.ts +0 -199
  501. package/dist/transaction/schema/relation.js +0 -104
  502. package/dist/transaction/schema/residency.d.ts +0 -29
  503. package/dist/transaction/schema/residency.js +0 -25
  504. package/dist/transaction/schema/roles.d.ts +0 -249
  505. package/dist/transaction/schema/roles.js +0 -230
  506. package/dist/transaction/schema/schema.d.ts +0 -324
  507. package/dist/transaction/schema/schema.js +0 -305
  508. package/dist/transaction/schema/tenancy.d.ts +0 -139
  509. package/dist/transaction/schema/tenancy.js +0 -190
  510. package/dist/transaction/transactionLayer.d.ts +0 -82
  511. package/dist/transaction/transactionLayer.js +0 -24
  512. package/dist/transaction/transactions/settlement/commitEnvelope.d.ts +0 -143
  513. package/dist/transaction/transactions/settlement/commitEnvelope.js +0 -161
  514. package/dist/transaction/transactions/settlement/httpCommitEnvelope.d.ts +0 -53
  515. package/dist/transaction/transactions/settlement/httpCommitEnvelope.js +0 -207
  516. package/dist/transaction/transactions/settlement/idempotencyKey.d.ts +0 -10
  517. package/dist/transaction/transactions/settlement/idempotencyKey.js +0 -9
  518. package/dist/transaction/transactions/settlement/pendingWrite.d.ts +0 -112
  519. package/dist/transaction/transactions/settlement/pendingWrite.js +0 -20
  520. package/dist/transaction/transport/commitFrames.d.ts +0 -90
  521. package/dist/transaction/transport/commitFrames.js +0 -134
  522. package/dist/transaction/transport/connectionManager.d.ts +0 -215
  523. package/dist/transaction/transport/connectionManager.js +0 -673
  524. package/dist/transaction/transport/credentialLifecycle.d.ts +0 -177
  525. package/dist/transaction/transport/credentialLifecycle.js +0 -324
  526. package/dist/transaction/transport/heartbeat.d.ts +0 -65
  527. package/dist/transaction/transport/heartbeat.js +0 -93
  528. package/dist/transaction/transport/httpClient.d.ts +0 -123
  529. package/dist/transaction/transport/httpClient.js +0 -145
  530. package/dist/transaction/transport/httpOptions.d.ts +0 -33
  531. package/dist/transaction/transport/httpOptions.js +0 -12
  532. package/dist/transaction/transport/httpTransport.d.ts +0 -8
  533. package/dist/transaction/transport/httpTransport.js +0 -1276
  534. package/dist/transaction/transport/networkProbe.d.ts +0 -84
  535. package/dist/transaction/transport/networkProbe.js +0 -207
  536. package/dist/transaction/transport/wsFrameHandlers.d.ts +0 -128
  537. package/dist/transaction/transport/wsFrameHandlers.js +0 -429
  538. package/dist/transaction/transport/wsTransport.d.ts +0 -576
  539. package/dist/transaction/transport/wsTransport.js +0 -1017
  540. package/dist/transaction/types/assertExact.d.ts +0 -17
  541. package/dist/transaction/types/assertExact.js +0 -1
  542. package/dist/transaction/types/global.d.ts +0 -107
  543. package/dist/transaction/types/global.js +0 -40
  544. package/dist/transaction/types/index.d.ts +0 -205
  545. package/dist/transaction/types/index.js +0 -56
  546. package/dist/transaction/types/modelData.d.ts +0 -10
  547. package/dist/transaction/types/modelData.js +0 -9
  548. package/dist/transaction/types/participant.d.ts +0 -20
  549. package/dist/transaction/types/participant.js +0 -10
  550. package/dist/transaction/types/streams.d.ts +0 -540
  551. package/dist/transaction/types/streams.js +0 -11
  552. package/dist/transaction/utils/asyncIterator.d.ts +0 -34
  553. package/dist/transaction/utils/asyncIterator.js +0 -135
  554. package/dist/transaction/utils/duration.d.ts +0 -25
  555. package/dist/transaction/utils/duration.js +0 -45
  556. package/dist/transaction/utils/json.d.ts +0 -57
  557. package/dist/transaction/utils/json.js +0 -276
  558. package/dist/transaction/wire/accountResponses.d.ts +0 -351
  559. package/dist/transaction/wire/accountResponses.js +0 -255
  560. package/dist/transaction/wire/auth.d.ts +0 -49
  561. package/dist/transaction/wire/auth.js +0 -57
  562. package/dist/transaction/wire/bootstrapReason.d.ts +0 -9
  563. package/dist/transaction/wire/bootstrapReason.js +0 -8
  564. package/dist/transaction/wire/claimEvent.d.ts +0 -76
  565. package/dist/transaction/wire/claimEvent.js +0 -73
  566. package/dist/transaction/wire/claims.d.ts +0 -463
  567. package/dist/transaction/wire/claims.js +0 -229
  568. package/dist/transaction/wire/commit.d.ts +0 -603
  569. package/dist/transaction/wire/commit.js +0 -321
  570. package/dist/transaction/wire/delta.d.ts +0 -250
  571. package/dist/transaction/wire/delta.js +0 -147
  572. package/dist/transaction/wire/errorEnvelope.d.ts +0 -72
  573. package/dist/transaction/wire/errorEnvelope.js +0 -123
  574. package/dist/transaction/wire/feedCursor.d.ts +0 -60
  575. package/dist/transaction/wire/feedCursor.js +0 -82
  576. package/dist/transaction/wire/feedEvent.d.ts +0 -177
  577. package/dist/transaction/wire/feedEvent.js +0 -39
  578. package/dist/transaction/wire/frames.d.ts +0 -194
  579. package/dist/transaction/wire/frames.js +0 -50
  580. package/dist/transaction/wire/inboundFrames.d.ts +0 -552
  581. package/dist/transaction/wire/inboundFrames.js +0 -116
  582. package/dist/transaction/wire/index.d.ts +0 -50
  583. package/dist/transaction/wire/index.js +0 -74
  584. package/dist/transaction/wire/listEnvelope.d.ts +0 -37
  585. package/dist/transaction/wire/listEnvelope.js +0 -42
  586. package/dist/transaction/wire/modelResponses.d.ts +0 -85
  587. package/dist/transaction/wire/modelResponses.js +0 -43
  588. package/dist/transaction/wire/protocol.d.ts +0 -38
  589. package/dist/transaction/wire/protocol.js +0 -38
  590. package/dist/transaction/wire/protocolVersion.d.ts +0 -73
  591. package/dist/transaction/wire/protocolVersion.js +0 -83
  592. package/dist/transactions/mutations/MutationQueue.d.ts +0 -655
  593. package/dist/transactions/mutations/MutationQueue.js +0 -2797
  594. package/dist/transactions/mutations/MutationStore.d.ts +0 -20
  595. package/dist/transactions/mutations/MutationStore.js +0 -53
  596. package/dist/transactions/mutations/UnconfirmedWrites.d.ts +0 -82
  597. package/dist/transactions/mutations/UnconfirmedWrites.js +0 -104
  598. package/dist/transactions/mutations/coalesceRules.d.ts +0 -58
  599. package/dist/transactions/mutations/coalesceRules.js +0 -140
  600. package/dist/transactions/mutations/commitLatency.d.ts +0 -52
  601. package/dist/transactions/mutations/commitLatency.js +0 -130
  602. package/dist/transactions/mutations/commitOutboxStore.d.ts +0 -28
  603. package/dist/transactions/mutations/commitOutboxStore.js +0 -26
  604. package/dist/transactions/mutations/commitPayload.d.ts +0 -164
  605. package/dist/transactions/mutations/commitPayload.js +0 -152
  606. package/dist/transactions/mutations/deltaConfirmation.d.ts +0 -59
  607. package/dist/transactions/mutations/deltaConfirmation.js +0 -233
  608. package/dist/transactions/mutations/durableWriteStore.d.ts +0 -14
  609. package/dist/transactions/mutations/durableWriteStore.js +0 -12
  610. package/dist/transactions/mutations/optimisticApply.d.ts +0 -49
  611. package/dist/transactions/mutations/optimisticApply.js +0 -65
  612. package/dist/transactions/mutations/replayValidation.d.ts +0 -186
  613. package/dist/transactions/mutations/replayValidation.js +0 -163
  614. package/dist/utils/mobxSetup.d.ts +0 -53
  615. package/dist/utils/mobxSetup.js +0 -330
  616. package/dist/webhooks/events.d.ts +0 -43
  617. package/dist/webhooks/events.js +0 -42
  618. package/dist/webhooks/index.d.ts +0 -8
  619. package/dist/webhooks/index.js +0 -8
  620. package/dist/wire/index.d.ts +0 -1
  621. package/dist/wire/index.js +0 -8
  622. package/docs/interaction-model.md +0 -99
package/dist/index.d.ts CHANGED
@@ -1,112 +1,3 @@
1
- /**
2
- * @abloatai/ablo the collaboration layer for AI agents and people.
3
- *
4
- * ```ts
5
- * import Ablo from '@abloatai/ablo';
6
- *
7
- * const ablo = Ablo({ schema, apiKey: process.env.ABLO_API_KEY });
8
- * const report = await ablo.weatherReports.retrieve({ id: 'report_stockholm' });
9
- * await ablo.weatherReports.update({
10
- * id: 'report_stockholm',
11
- * data: { status: 'ready' },
12
- * });
13
- *
14
- * type Entry = Ablo.Peer;
15
- * ```
16
- *
17
- * `Ablo({ schema, apiKey })` returns typed model clients. Server-side agents,
18
- * MCP route handlers, and workers select `transport: 'http'`; both transports
19
- * keep the same `ablo.<model>` application surface.
20
- *
21
- * The whole package reaches you through one name: `Ablo` is at once a factory
22
- * function, a type, and a namespace. You call model clients with dot access on
23
- * the instance (`ablo.reports.retrieve(...)`) and reach every supporting type
24
- * through the namespace (`Ablo.Peer`, `Ablo.Claim`).
25
- *
26
- * Related surfaces live on their own import subpaths:
27
- * @abloatai/ablo/schema — defineSchema, model, z (Zod)
28
- * @abloatai/ablo/react — <AbloProvider>, useQuery, useMutate
29
- * @abloatai/ablo/testing — test harnesses and fixtures
30
- *
31
- * Reads come in two flavors, distinguished by where the data is fetched from.
32
- * `ablo.<model>.retrieve({ id })` and `.list({ where })` are asynchronous reads
33
- * that consult the local cache first and fall back to the network, de-duplicating
34
- * concurrent requests for the same row. They are the default, and the right
35
- * choice for stateless callers whose local graph starts empty.
36
- * `ablo.<model>.local.retrieve(id)`, `.local.list(...)`, and `.local.count(...)` are synchronous
37
- * snapshots of the already-loaded local graph with no network round-trip — use
38
- * them in reactive React selectors (`useAblo((ablo) => ablo.<model>.get(id))`)
39
- * once the graph is warm.
40
- *
41
- * What to import, in short:
42
- * • `Ablo` (the default export), `AbloOptions`, and the `Model*Params` option
43
- * bags cover what most applications and agents ever need.
44
- * • the `Ablo*Error` classes let you discriminate failures in catch blocks.
45
- *
46
- * A handful of exports are for advanced use and are marked "Advanced" at their
47
- * declaration below, each with the one situation it is for:
48
- * • `dataSource` — when your own database stays canonical.
49
- * • `defaultPolicy` — when you customize conflict resolution.
50
- * • `defineMutators` / `createTransaction` — when you write custom mutators.
51
- * If you don't recognize one of these, you don't need it.
52
- */
53
- export { Ablo } from './client/Ablo.js';
54
- export { humans } from './client/humans.js';
55
- export type { HumansSurface } from './client/humans.js';
56
- export type { AbloCoreClient } from './client/coreClient.js';
57
- export type { AbloPlugin, PipelineStage, TransportCapabilities } from './transaction/plugin.js';
58
- export type { MutationExecutor } from './interfaces/index.js';
59
- export type { ModelUpdater, ContentionOptions } from './transaction/resources/functionalUpdate.js';
60
- export { DEFAULT_CONTENTION_RETRIES } from './transaction/resources/functionalUpdate.js';
61
- export type { AbloReads } from './client/abloClient.js';
62
- export { type AbloHttpClientOptions, type AbloHttpClient, type HttpModelClient, } from './transaction/transport/httpClient.js';
63
- export { ABLO_DEFAULT_BASE_URL, ABLO_HOSTED_API_DOMAIN, ABLO_HOSTED_HTTP_BASE_URL, normalizeAbloHostedBaseUrl, } from './transaction/auth/apiKey.js';
64
- export type { AbloOptions } from './client/Ablo.js';
65
- export type { LocalCountOptions, LocalReadOptions, ModelListScope, ServerReadOptions, ModelRetrieveParams, ModelCreateParams, ModelUpdateParams, ModelDeleteParams, } from './client/resourceTypes.js';
66
- /**
67
- * @deprecated Use `Ablo.Claim.Held`. This compatibility export remains until
68
- * the next major release because it was explicitly documented in 0.20.1.
69
- */
70
- export type { HeldClaim } from './client/resourceTypes.js';
71
- /** The resolved value of the row-free `ablo.<model>.claim(id)` overload — a
72
- * held lease on a key whose row Ablo does not hold (a {@link HeldClaim} with
73
- * no `.data`). */
74
- export type { HeldLease } from './client/resourceTypes.js';
75
- export type { AbloPersistence } from './transaction/persistence.js';
76
- export { durableWritesConfigSchema, durableWriteStoreSchema, pendingWriteSchema, } from './transactions/mutations/durableWriteStore.js';
77
- export type { DurableWritesConfig, DurableWriteStore, PendingWrite, } from './transactions/mutations/durableWriteStore.js';
78
- export { durableCommitEnvelopeSchema, } from './transaction/transactions/settlement/commitEnvelope.js';
79
- export type { CommitOutboxScope, DurableCommitEnvelope, } from './transaction/transactions/settlement/commitEnvelope.js';
80
- export { durableHttpCommitEnvelopeSchema, } from './transaction/transactions/settlement/httpCommitEnvelope.js';
81
- export type { DurableHttpCommitEnvelope, } from './transaction/transactions/settlement/httpCommitEnvelope.js';
82
- import { Ablo } from './client/Ablo.js';
83
- export default Ablo;
84
- export { dataSource, sourceEventForOperation, signAbloSourceRequest, verifyAbloSourceRequest, } from './source/index.js';
85
- export { createSourceConnector, type SourceConnector, type SourceConnectorOptions, type ConnectorStatus, } from './source/connector.js';
86
- export { defaultPolicy, capabilityPreemptPolicy, interpretConflictAxis } from './policy/index.js';
87
- export { AbloSessionError, SyncSessionError, AbloError, AbloAuthenticationError, AbloPermissionError, AbloRateLimitError, AbloIdempotencyError, AbloConnectionError, AbloValidationError, AbloNotFoundError, AbloServerError, AbloStaleContextError, AbloClaimedError, AbloContentionError, CapabilityError, translateHttpError, hasWireCode, errorFromWire, toAbloError, ERROR_CODES, ERROR_CONTRACT_VERSION, errorCodeSpec, isRetryableCode, classifyRecovery, recoveryClassSchema, RECOVERY_CLASSES, } from './transaction/errors.js';
88
- export type { RequiredCapability } from './transaction/errors.js';
89
- export type { ErrorCode, WireErrorCode, ErrorCategory, ErrorCodeSpec, RecoveryClass } from './transaction/errors.js';
90
- export { errorEnvelope, statusForType } from './transaction/wire/errorEnvelope.js';
91
- export type { ErrorEnvelope } from './transaction/wire/errorEnvelope.js';
92
- export { WS_BEARER_SUBPROTOCOL_PREFIX, WS_SYNC_SUBPROTOCOL } from './transaction/auth/credentialSource.js';
93
- export { ENVIRONMENTS, environmentSchema, normalizeEnvironment, environmentFromKeyPrefix, environmentToKeyPrefix, isSandboxEnvironment, } from './transaction/environment.js';
94
- export type { Environment, KeyPrefixEnvironment } from './transaction/environment.js';
95
- export { writeOptionsSchema, onStaleModeSchema, assertWriteOptions, } from './transaction/resources/writeOptionsSchema.js';
96
- export type { WriteOptionsInput } from './transaction/resources/writeOptionsSchema.js';
97
- export type { OnStaleMode } from './transaction/coordination/schema.js';
98
- export type { WriteOptions, MutationOptions } from './interfaces/index.js';
99
- export { staleNotificationSchema, readDependencySchema } from './transaction/coordination/schema.js';
100
- export type { StaleNotification, ReadDependency } from './transaction/coordination/schema.js';
101
- export { ClaimLog, formatClaim, formatConflict } from './coordination/ClaimLog.js';
102
- export type { ClaimLogEntry } from './coordination/ClaimLog.js';
103
- export type { ClaimEvent, ConflictEvent, SyncObservabilityProvider, } from './interfaces/index.js';
104
- export { noopObservability } from './RuntimeContext.js';
105
- export { IDBOpenTimeoutError, isStorageOpenTimeout } from './core/openIDBWithTimeout.js';
106
- export type { CommitLatencySample } from './transactions/mutations/commitLatency.js';
107
- export { PUBLIC_MODEL_VERBS, PUBLIC_LIST_OPTION_KEYS, PUBLIC_ABLO_OPTION_KEYS, } from './surface.js';
108
- export type { ModelVerb, ListOptionKey, AbloOptionKey } from './surface.js';
109
- export type { Register, DefaultSyncShape } from './transaction/types/global.js';
110
- export { defineMutators } from './mutators/defineMutators.js';
111
- export { createTransaction, type Transaction } from './mutators/Transaction.js';
112
- export { deepEqual, stableStringify } from './transaction/utils/json.js';
1
+ export * from '@abloatai/transaction';
2
+ export { Ablo as default } from '@abloatai/transaction';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -1,161 +1,3 @@
1
- /**
2
- * @abloatai/ablo the collaboration layer for AI agents and people.
3
- *
4
- * ```ts
5
- * import Ablo from '@abloatai/ablo';
6
- *
7
- * const ablo = Ablo({ schema, apiKey: process.env.ABLO_API_KEY });
8
- * const report = await ablo.weatherReports.retrieve({ id: 'report_stockholm' });
9
- * await ablo.weatherReports.update({
10
- * id: 'report_stockholm',
11
- * data: { status: 'ready' },
12
- * });
13
- *
14
- * type Entry = Ablo.Peer;
15
- * ```
16
- *
17
- * `Ablo({ schema, apiKey })` returns typed model clients. Server-side agents,
18
- * MCP route handlers, and workers select `transport: 'http'`; both transports
19
- * keep the same `ablo.<model>` application surface.
20
- *
21
- * The whole package reaches you through one name: `Ablo` is at once a factory
22
- * function, a type, and a namespace. You call model clients with dot access on
23
- * the instance (`ablo.reports.retrieve(...)`) and reach every supporting type
24
- * through the namespace (`Ablo.Peer`, `Ablo.Claim`).
25
- *
26
- * Related surfaces live on their own import subpaths:
27
- * @abloatai/ablo/schema — defineSchema, model, z (Zod)
28
- * @abloatai/ablo/react — <AbloProvider>, useQuery, useMutate
29
- * @abloatai/ablo/testing — test harnesses and fixtures
30
- *
31
- * Reads come in two flavors, distinguished by where the data is fetched from.
32
- * `ablo.<model>.retrieve({ id })` and `.list({ where })` are asynchronous reads
33
- * that consult the local cache first and fall back to the network, de-duplicating
34
- * concurrent requests for the same row. They are the default, and the right
35
- * choice for stateless callers whose local graph starts empty.
36
- * `ablo.<model>.local.retrieve(id)`, `.local.list(...)`, and `.local.count(...)` are synchronous
37
- * snapshots of the already-loaded local graph with no network round-trip — use
38
- * them in reactive React selectors (`useAblo((ablo) => ablo.<model>.get(id))`)
39
- * once the graph is warm.
40
- *
41
- * What to import, in short:
42
- * • `Ablo` (the default export), `AbloOptions`, and the `Model*Params` option
43
- * bags cover what most applications and agents ever need.
44
- * • the `Ablo*Error` classes let you discriminate failures in catch blocks.
45
- *
46
- * A handful of exports are for advanced use and are marked "Advanced" at their
47
- * declaration below, each with the one situation it is for:
48
- * • `dataSource` — when your own database stays canonical.
49
- * • `defaultPolicy` — when you customize conflict resolution.
50
- * • `defineMutators` / `createTransaction` — when you write custom mutators.
51
- * If you don't recognize one of these, you don't need it.
52
- */
53
- // ── Consumer API ──────────────────────────────────────────────────────────
54
- // These are the only symbols external consumers should need from this path.
55
- // Everything else is in a subpath.
56
- // The primary surface. `Ablo` is a function, a type, and a namespace sharing
57
- // one name. It is the default export, so `import Ablo from '@abloatai/ablo'`
58
- // works, and a named export, so `import { Ablo }` compiles too.
59
- export { Ablo } from './client/Ablo.js';
60
- // The reactive materialiser as a declared capability (ADR 0016): installed by
61
- // default on the socket client, named explicitly when the list is written out.
62
- // `AbloPlugin` is the one uniform shape every capability declares.
63
- export { humans } from './client/humans.js';
64
- export { DEFAULT_CONTENTION_RETRIES } from './transaction/resources/functionalUpdate.js';
65
- // The stateless HTTP client is constructed through `Ablo({ transport: 'http' })`.
66
- // There is no separate constructor to import; annotate values with the
67
- // `AbloHttpClient` type, which is the return type of that call.
68
- export {} from './transaction/transport/httpClient.js';
69
- export { ABLO_DEFAULT_BASE_URL, ABLO_HOSTED_API_DOMAIN, ABLO_HOSTED_HTTP_BASE_URL, normalizeAbloHostedBaseUrl, } from './transaction/auth/apiKey.js';
70
- export { durableWritesConfigSchema, durableWriteStoreSchema, pendingWriteSchema, } from './transactions/mutations/durableWriteStore.js';
71
- export { durableCommitEnvelopeSchema, } from './transaction/transactions/settlement/commitEnvelope.js';
72
- export { durableHttpCommitEnvelopeSchema, } from './transaction/transactions/settlement/httpCommitEnvelope.js';
73
- // Participant types live under `Ablo.Participant.*` —
74
- // `Ablo.Participant.Joined`, `Ablo.Participant.Manager`,
75
- // `Ablo.Participant.JoinOptions`, etc. Same dot-access shape as
76
- // `Ablo.Peer`, `Ablo.Claim`. No flat re-exports.
77
- import { Ablo } from './client/Ablo.js';
78
- export default Ablo;
79
- // Advanced, and rarely imported. The storage adapter for Data Source mode,
80
- // where Ablo coordinates state while the canonical rows stay in your own
81
- // database. The default is Ablo-managed storage; reach for this only when you
82
- // have deliberately chosen to keep your database canonical. The matching types
83
- // live under `Ablo.Source.*` (`Ablo.Source.Operation`, `Ablo.Source.Commit.Params`).
84
- export { dataSource, sourceEventForOperation, signAbloSourceRequest, verifyAbloSourceRequest, } from './source/index.js';
85
- // Serves the Data Source `commit`, `load`, and `list` operations over an
86
- // outbound WebSocket, so a database with no public inbound URL (running on a
87
- // developer's machine or inside a locked-down network) can still be reached by
88
- // dialing out to Ablo rather than accepting an inbound connection.
89
- export { createSourceConnector, } from './source/connector.js';
90
- // Schema DSL is intentionally published from `@abloatai/ablo/schema`.
91
- // Keeping it out of the root import preserves one clean runtime surface:
92
- // `import Ablo from '@abloatai/ablo'`.
93
- // Advanced, and rarely imported. The default conflict policy rejects writes
94
- // premised on stale data and is already applied on the server, so import
95
- // `defaultPolicy` only to build a custom policy on top of it. Leave it be and
96
- // stale writes are rejected safely. The matching types live under `Ablo.Conflict.*`.
97
- export { defaultPolicy, capabilityPreemptPolicy, interpretConflictAxis } from './policy/index.js';
98
- // The typed error hierarchy. One import brings in every class you need to
99
- // tell failures apart — by `e instanceof AbloX` or `e.type === 'AbloX'` — along
100
- // with the helper that translates an HTTP response into the right class.
101
- export { AbloSessionError,
102
- // Deprecated alias, removed in 0.36.0. The barrel keeps re-exporting it until
103
- // then so consumers don't lose the name a version early.
104
- // eslint-disable-next-line @typescript-eslint/no-deprecated
105
- SyncSessionError, AbloError, AbloAuthenticationError, AbloPermissionError, AbloRateLimitError, AbloIdempotencyError, AbloConnectionError, AbloValidationError, AbloNotFoundError, AbloServerError, AbloStaleContextError, AbloClaimedError, AbloContentionError, CapabilityError, translateHttpError, hasWireCode, errorFromWire, toAbloError, ERROR_CODES, ERROR_CONTRACT_VERSION, errorCodeSpec, isRetryableCode, classifyRecovery, recoveryClassSchema, RECOVERY_CLASSES, } from './transaction/errors.js';
106
- // The wire contract for errors, with no dependencies: the JSON envelope shape
107
- // plus the table mapping each AbloError subclass to an HTTP status. A server
108
- // that returns Ablo errors can assert against these so its responses never
109
- // drift from what the client expects.
110
- export { errorEnvelope, statusForType } from './transaction/wire/errorEnvelope.js';
111
- export { WS_BEARER_SUBPROTOCOL_PREFIX, WS_SYNC_SUBPROTOCOL } from './transaction/auth/credentialSource.js';
112
- export { ENVIRONMENTS, environmentSchema, normalizeEnvironment, environmentFromKeyPrefix, environmentToKeyPrefix, isSandboxEnvironment, } from './transaction/environment.js';
113
- // The write-options contract: the single Zod schema for the option bag every
114
- // write accepts (`ablo.<model>.create/update/delete`, `commits.create`, and the
115
- // HTTP model routes). The SDK validates against it at each boundary, and it is
116
- // exported so you can validate or assemble options before a call — for example,
117
- // as the input schema of an agent tool. It is the runtime counterpart of the
118
- // `MutationOptions` type.
119
- export { writeOptionsSchema, onStaleModeSchema, assertWriteOptions, } from './transaction/resources/writeOptionsSchema.js';
120
- // The value handed back to a writer whose change hit a stale-context conflict
121
- // under `onStale: 'notify'`. Instead of throwing, the commit succeeds and
122
- // returns this notification so the caller can reconcile against the current
123
- // value and retry rather than discard its work.
124
- export { staleNotificationSchema, readDependencySchema } from './transaction/coordination/schema.js';
125
- // Collects claim events and stale-write collisions into an ordered list you can
126
- // print to inspect coordination, or read through `collisions()` to assert on in
127
- // tests. Pass `new ClaimLog()` as `Ablo({ observability })`.
128
- export { ClaimLog, formatClaim, formatConflict } from './coordination/ClaimLog.js';
129
- // Spread this to provide a custom `observability` that overrides only the hooks
130
- // you care about (e.g. captureClaim) and no-ops the rest.
131
- export { noopObservability } from './RuntimeContext.js';
132
- // Detects a stuck local store: use these to recognize when the browser's
133
- // IndexedDB backing store fails to open in time, so your app can show a
134
- // recovery screen instead of hanging.
135
- export { IDBOpenTimeoutError, isStorageOpenTimeout } from './core/openIDBWithTimeout.js';
136
- // A machine-readable manifest of the SDK's public verb and option names, bound
137
- // at compile time to the real types so the lists can never name a method or
138
- // option the API doesn't have. Useful for generating documentation or tooling
139
- // that needs to enumerate the surface.
140
- export { PUBLIC_MODEL_VERBS, PUBLIC_LIST_OPTION_KEYS, PUBLIC_ABLO_OPTION_KEYS, } from './surface.js';
141
- // Advanced, and rarely imported. Custom mutators. Ordinary writes go through
142
- // `ablo.<model>.create/update/delete`; reach for `defineMutators` only when you
143
- // need a named, multi-step mutation with its own undo behavior. The matching
144
- // types live under the `Ablo` namespace:
145
- // Ablo.Mutator.Fn, Ablo.Mutator.Transaction
146
- // Ablo.Mutator.UndoEntry, Ablo.Mutator.UndoScope, Ablo.Mutator.InverseOp
147
- export { defineMutators } from './mutators/defineMutators.js';
148
- // `createTransaction` lets callers outside React — server-side workers, agent
149
- // runtimes — run custom mutators without the `useMutators` hook. Build a
150
- // transaction from the client's schema, store, and organization id, then pass
151
- // it to your mutator function as `{ tx, args }`.
152
- export { createTransaction } from './mutators/Transaction.js';
153
- // Undo runtime is intentionally not part of the public root surface. App code
154
- // uses `useUndoScope` from `@abloatai/ablo/react`.
155
- // JSON comparison helpers. A `field.json()` value stored in a Postgres `jsonb`
156
- // column can come back with its object keys reordered, because jsonb does not
157
- // preserve key order. A naive `JSON.stringify(a) === JSON.stringify(b)` check
158
- // then reports a difference that isn't real — a common trap when reconciling an
159
- // Ablo row against external editor state. These compare independent of key
160
- // order, so use them instead.
161
- export { deepEqual, stableStringify } from './transaction/utils/json.js';
1
+ export * from '@abloatai/transaction';
2
+ export { Ablo as default } from '@abloatai/transaction';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { Ablo, humans } from '@abloatai/humans';
2
+ export type { AbloOptions, AbloReads, HumansSurface } from '@abloatai/humans';
3
+ export * from '@abloatai/humans/react';
4
+ //# sourceMappingURL=react.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC9E,cAAc,wBAAwB,CAAC"}
package/dist/react.js ADDED
@@ -0,0 +1,3 @@
1
+ export { Ablo, humans } from '@abloatai/humans';
2
+ export * from '@abloatai/humans/react';
3
+ //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEhD,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@abloatai/transaction/schema';
2
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
package/dist/schema.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from '@abloatai/transaction/schema';
2
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@abloatai/transaction/server';
2
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
package/dist/server.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from '@abloatai/transaction/server';
2
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@abloatai/transaction/source/conformance';
2
+ //# sourceMappingURL=source-conformance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-conformance.d.ts","sourceRoot":"","sources":["../src/source-conformance.ts"],"names":[],"mappings":"AAAA,cAAc,0CAA0C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@abloatai/transaction/source/conformance';
2
+ //# sourceMappingURL=source-conformance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-conformance.js","sourceRoot":"","sources":["../src/source-conformance.ts"],"names":[],"mappings":"AAAA,cAAc,0CAA0C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@abloatai/transaction/source/drizzle';
2
+ //# sourceMappingURL=source-drizzle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-drizzle.d.ts","sourceRoot":"","sources":["../src/source-drizzle.ts"],"names":[],"mappings":"AAAA,cAAc,sCAAsC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@abloatai/transaction/source/drizzle';
2
+ //# sourceMappingURL=source-drizzle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-drizzle.js","sourceRoot":"","sources":["../src/source-drizzle.ts"],"names":[],"mappings":"AAAA,cAAc,sCAAsC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@abloatai/transaction/source/kysely';
2
+ //# sourceMappingURL=source-kysely.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-kysely.d.ts","sourceRoot":"","sources":["../src/source-kysely.ts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@abloatai/transaction/source/kysely';
2
+ //# sourceMappingURL=source-kysely.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-kysely.js","sourceRoot":"","sources":["../src/source-kysely.ts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@abloatai/transaction/source/next';
2
+ //# sourceMappingURL=source-next.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-next.d.ts","sourceRoot":"","sources":["../src/source-next.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@abloatai/transaction/source/next';
2
+ //# sourceMappingURL=source-next.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-next.js","sourceRoot":"","sources":["../src/source-next.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from '@abloatai/transaction/source';
2
+ //# sourceMappingURL=source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
package/dist/source.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from '@abloatai/transaction/source';
2
+ //# sourceMappingURL=source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
package/dist/wire.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from '@abloatai/transaction/wire';
2
+ //# sourceMappingURL=wire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC"}
package/dist/wire.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from '@abloatai/transaction/wire';
2
+ //# sourceMappingURL=wire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.js","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC"}
package/docs/agents.md CHANGED
@@ -34,7 +34,7 @@ const ablo = Ablo({ schema, apiKey: process.env.ABLO_API_KEY, transport: "http"
34
34
  // `retrieve` resolves to the row, or `undefined` when none matches.
35
35
  const open = await ablo.tasks.list({ where: { status: "todo" } });
36
36
 
37
- const task = await ablo.tasks.retrieve({ id: open[0].id });
37
+ const task = await ablo.tasks.get({ id: open[0].id });
38
38
  if (!task) throw new Error("task not found");
39
39
 
40
40
  console.log(task.title);
@@ -47,7 +47,7 @@ and `claim`. It does **not** expose the stateful-only surface (`get` /
47
47
  live connection, so with `transport: 'http'` the return type narrows and they
48
48
  are a *compile error*, not a runtime surprise.
49
49
 
50
- ## Coordination claim, queue, reorder
50
+ ## Coordination: claim, queue, reorder
51
51
 
52
52
  The differentiator. A claim is a **durable lease + FIFO wait-line** on a row —
53
53
  "who's working on this, who's waiting" — and it's request/response, so an agent
package/docs/api-keys.md CHANGED
@@ -21,9 +21,9 @@ Pick your row:
21
21
 
22
22
  | Where your code runs | What to pass | Example |
23
23
  |---|---|---|
24
- | **Server / worker / CLI** (can hold a secret) | your secret `sk_` it defaults to `ABLO_API_KEY`, so usually pass **nothing** | `Ablo({ schema })` |
25
- | **Browser read-only** | a publishable `pk_` (safe to ship, like a Stripe `pk_`) | `Ablo({ schema, apiKey: process.env.NEXT_PUBLIC_ABLO_PUBLISHABLE_KEY })` |
26
- | **Browser writing as the signed-in user** | `authEndpoint` the route on your own backend that mints a short-lived per-user token | `Ablo({ schema, authEndpoint: '/api/ablo-session' })` |
24
+ | **Server / worker / CLI** (can hold a secret) | your secret `sk_`: it defaults to `ABLO_API_KEY`, so usually pass **nothing** | `Ablo({ schema })` |
25
+ | **Browser: read-only** | a publishable `pk_` (safe to ship, like a Stripe `pk_`) | `Ablo({ schema, apiKey: process.env.NEXT_PUBLIC_ABLO_PUBLISHABLE_KEY })` |
26
+ | **Browser: writing as the signed-in user** | `authEndpoint`: the route on your own backend that mints a short-lived per-user token | `Ablo({ schema, authEndpoint: '/api/ablo-session' })` |
27
27
 
28
28
  That's the whole story: one knob, filled by audience.
29
29
 
@@ -31,10 +31,10 @@ That's the whole story: one knob, filled by audience.
31
31
 
32
32
  | Stripe | Ablo | Where it goes |
33
33
  |---|---|---|
34
- | publishable `pk_` (client-safe) | `pk_` | browser read-only |
35
- | secret `sk_` (server, full) | `sk_` | server full authority |
36
- | restricted `rk_` (granular) | `rk_` | scoped agent sessions (`sessions.create({ agent, can })`) |
37
- | ephemeral key (client, customer-scoped) | `ek_` | per-user browser sessions (`sessions.create({ user })`) |
34
+ | publishable `pk_` (client-safe) | `pk_` | browser: read-only |
35
+ | secret `sk_` (server, full) | `sk_` | server: full authority |
36
+ | restricted `rk_` (granular) | `rk_` | scoped agents (`agents.create({ can })`) |
37
+ | ephemeral key (client, customer-scoped) | `ek_` | per-user browser sessions (`sessions.create({ user, can })`) |
38
38
 
39
39
  Mode lives in the prefix too — `sk_test_` / `sk_live_` — exactly like Stripe. The
40
40
  `apiKey` resolver fetching an `ek_` is Ablo's ephemeral-key flow: server mints, client holds.
@@ -42,7 +42,7 @@ Mode lives in the prefix too — `sk_test_` / `sk_live_` — exactly like Stripe
42
42
  **Why a function for browser writes?** Anything you ship to a browser must be public, and a
43
43
  public `pk_` is **read-only** — it can't carry one specific user's write authority. So when
44
44
  the browser writes *as the logged-in user*, your backend (which holds the secret `sk_` and
45
- knows who's signed in) mints a short-lived per-user token with `sessions.create({ user })`,
45
+ knows who's signed in) mints a short-lived per-user token with `sessions.create({ user, can })`,
46
46
  and the browser's `apiKey` function fetches it. You don't manage refresh — the SDK calls the
47
47
  function once before connecting and then keeps the token fresh (re-mint before expiry, and on
48
48
  tab-focus / network-online / device-wake). This is the Stripe ephemeral-key / Supabase
@@ -58,10 +58,11 @@ knobs, and you set exactly one.
58
58
 
59
59
  | Mint | Call | Result |
60
60
  |---|---|---|
61
- | Human end-user session | `await server.sessions.create({ user: { id } })` | `ek_` (full user authority) |
62
- | Scoped delegated agent | `await server.sessions.create({ agent: { id }, can: { Task: ['update'] } })` | `rk_` (scoped to `can`) |
61
+ | Human end-user session | `await server.sessions.create({ user: { id }, can: { tasks: ['read'] } })` | `ek_` (scoped to `can`) |
62
+ | Ready agent client | `await server.agents.create({ can: { tasks: ['update'] } })` | Auto-refreshing client scoped to `can` |
63
+ | Raw delegated agent token | `await server.sessions.create({ agent: { id }, can: { tasks: ['update'] } })` | `rk_` for another runtime |
63
64
 
64
- The principal kind comes from *which* shape you pass — `{ user }` → `user`, `{ agent, can }` → `agent`.
65
+ The principal kind comes from *which* shape you pass — `{ user, can }` → `user`, `{ agent, can }` → `agent`.
65
66
 
66
67
  ## Server-Side API Keys
67
68
 
@@ -74,7 +75,7 @@ Use API keys from trusted (server-side) runtimes:
74
75
 
75
76
  Never ship a secret API key to a browser bundle.
76
77
 
77
- ## Publishable key (`pk_`) browser-safe, read-only
78
+ ## Publishable key (`pk_`): browser-safe, read-only
78
79
 
79
80
  For a read-only browser experience, a publishable key is safe to ship in the
80
81
  bundle. Like a Stripe `pk_` or a Supabase anon key, it is long-lived,