@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,12 +0,0 @@
1
- /**
2
- * The public resource-type surface.
3
- *
4
- * The transport-facing half of these types moved down into the settlement core
5
- * (ADR 0016). This module keeps the
6
- * consumer-facing import path intact and rejoins it with the model-proxy types
7
- * that stay here — `ModelOperations` chief among them, because it returns the
8
- * live participant handle.
9
- */
10
- export * from '../transaction/resources/httpResources.js';
11
- export type { LocalCountOptions, LocalReadOptions, ModelListScope, ServerReadOptions, ModelRetrieveParams, ModelCreateParams, ModelUpdateParams, ModelDeleteParams, ClaimOptions, ClaimParams, ClaimLookupParams, ClaimReorderParams, Claim, ClaimHeartbeat, ClaimHeartbeatOptions, HeldClaim, HeldLease, } from '../transaction/resources/modelOperations.js';
12
- export type { ModelOperations } from './createModelProxy.js';
@@ -1,10 +0,0 @@
1
- /**
2
- * The public resource-type surface.
3
- *
4
- * The transport-facing half of these types moved down into the settlement core
5
- * (ADR 0016). This module keeps the
6
- * consumer-facing import path intact and rejoins it with the model-proxy types
7
- * that stay here — `ModelOperations` chief among them, because it returns the
8
- * live participant handle.
9
- */
10
- export * from '../transaction/resources/httpResources.js';
@@ -1,44 +0,0 @@
1
- /**
2
- * Derives engine configuration from a schema. This module holds two pure
3
- * functions: {@link computeFKDepthPriority} works out a safe row-insertion
4
- * order from the schema's foreign-key relations, and
5
- * {@link deriveConfigFromSchema} packages that ordering, together with a few
6
- * defaults, into the {@link RuntimeConfig} a client uses at startup. Both
7
- * are deterministic transforms of the schema and hold no engine state.
8
- */
9
- import type { Schema } from '../transaction/schema/schema.js';
10
- import type { RuntimeConfig } from '../interfaces/index.js';
11
- /**
12
- * Computes a create-priority map that gives the engine a safe order for
13
- * inserting rows, so a child row is never written before the parent its
14
- * foreign key references.
15
- *
16
- * Every `belongsTo` relation is an edge from a child model to its parent. This
17
- * function runs Tarjan's strongly-connected-components algorithm over that
18
- * graph, which does two things at once: it groups any models that reference
19
- * each other in a cycle into a single component, and it produces those
20
- * components in an order where parents come before children. Each model then
21
- * gets a numeric priority from that order, where a lower number means "insert
22
- * earlier". Top-level models with no parent — an organization or a theme, say —
23
- * come first, and the deepest descendants come last.
24
- *
25
- * Models in the same cycle share a priority, so within a cycle the order rows
26
- * were queued in breaks the tie. To break a cycle deterministically instead,
27
- * mark one side of it with `belongsTo(target, fk, { defer: true })`. A deferred
28
- * edge is left out of the graph, which turns the cycle into a chain and gives
29
- * the deferred child a strictly higher priority than its parent. Pair it with a
30
- * Postgres `DEFERRABLE INITIALLY DEFERRED` constraint if you also want the
31
- * database to relax its check. See {@link BelongsToOptions.defer}.
32
- *
33
- * The returned map is keyed by each model's wire type name
34
- * ({@link ModelDef.typename}, falling back to the schema key), because that is
35
- * the name the engine looks up at commit time. Keying by the schema key would
36
- * miss that lookup, and every model would fall back to the default priority.
37
- *
38
- * The result does not depend on which model the walk starts from, and the
39
- * algorithm runs in time linear in the number of models plus relations.
40
- * Reference: Tarjan, R. (1972), "Depth-first search and linear graph
41
- * algorithms."
42
- */
43
- export declare function computeFKDepthPriority(schema: Schema): ReadonlyMap<string, number>;
44
- export declare function deriveConfigFromSchema(schema: Schema): RuntimeConfig;
@@ -1,185 +0,0 @@
1
- /**
2
- * Derives engine configuration from a schema. This module holds two pure
3
- * functions: {@link computeFKDepthPriority} works out a safe row-insertion
4
- * order from the schema's foreign-key relations, and
5
- * {@link deriveConfigFromSchema} packages that ordering, together with a few
6
- * defaults, into the {@link RuntimeConfig} a client uses at startup. Both
7
- * are deterministic transforms of the schema and hold no engine state.
8
- */
9
- import { schemaHash, modelHash, toSchemaJSON } from '../schema/serialize.js';
10
- // ── Config derivation from schema ─────────────────────────────────────────
11
- /**
12
- * Computes a create-priority map that gives the engine a safe order for
13
- * inserting rows, so a child row is never written before the parent its
14
- * foreign key references.
15
- *
16
- * Every `belongsTo` relation is an edge from a child model to its parent. This
17
- * function runs Tarjan's strongly-connected-components algorithm over that
18
- * graph, which does two things at once: it groups any models that reference
19
- * each other in a cycle into a single component, and it produces those
20
- * components in an order where parents come before children. Each model then
21
- * gets a numeric priority from that order, where a lower number means "insert
22
- * earlier". Top-level models with no parent — an organization or a theme, say —
23
- * come first, and the deepest descendants come last.
24
- *
25
- * Models in the same cycle share a priority, so within a cycle the order rows
26
- * were queued in breaks the tie. To break a cycle deterministically instead,
27
- * mark one side of it with `belongsTo(target, fk, { defer: true })`. A deferred
28
- * edge is left out of the graph, which turns the cycle into a chain and gives
29
- * the deferred child a strictly higher priority than its parent. Pair it with a
30
- * Postgres `DEFERRABLE INITIALLY DEFERRED` constraint if you also want the
31
- * database to relax its check. See {@link BelongsToOptions.defer}.
32
- *
33
- * The returned map is keyed by each model's wire type name
34
- * ({@link ModelDef.typename}, falling back to the schema key), because that is
35
- * the name the engine looks up at commit time. Keying by the schema key would
36
- * miss that lookup, and every model would fall back to the default priority.
37
- *
38
- * The result does not depend on which model the walk starts from, and the
39
- * algorithm runs in time linear in the number of models plus relations.
40
- * Reference: Tarjan, R. (1972), "Depth-first search and linear graph
41
- * algorithms."
42
- */
43
- export function computeFKDepthPriority(schema) {
44
- // schemaKey → typename (wire name used at transaction time)
45
- const keyToTypename = new Map();
46
- for (const [key, def] of Object.entries(schema.models)) {
47
- keyToTypename.set(key, def.typename ?? key);
48
- }
49
- // Adjacency: schemaKey → parent schema keys pulled from `belongsTo`.
50
- // Parents not in the schema (e.g. external types) are dropped so the
51
- // graph stays closed. Edges marked `{ defer: true }` are also
52
- // dropped — the schema author has declared this side of a cycle to
53
- // be the "soft" one (insert with null FK, patch later), so the
54
- // dependency-graph walker treats it as if the edge weren't there.
55
- // That breaks the cycle deterministically and lets the other side
56
- // become a strict topological predecessor.
57
- const parentsOf = new Map();
58
- for (const [key, def] of Object.entries(schema.models)) {
59
- const out = [];
60
- for (const rel of Object.values(def.relations)) {
61
- if (rel.type !== 'belongsTo')
62
- continue;
63
- if (!keyToTypename.has(rel.target))
64
- continue;
65
- if (rel.options?.defer === true)
66
- continue;
67
- out.push(rel.target);
68
- }
69
- parentsOf.set(key, out);
70
- }
71
- // Tarjan SCC bookkeeping
72
- const dfsIndex = new Map();
73
- const lowlink = new Map();
74
- const onStack = new Set();
75
- const stack = [];
76
- const sccs = [];
77
- let counter = 0;
78
- function strongconnect(v) {
79
- dfsIndex.set(v, counter);
80
- lowlink.set(v, counter);
81
- counter++;
82
- stack.push(v);
83
- onStack.add(v);
84
- for (const w of parentsOf.get(v) ?? []) {
85
- if (!dfsIndex.has(w)) {
86
- strongconnect(w);
87
- lowlink.set(v, Math.min(lowlink.get(v), lowlink.get(w)));
88
- }
89
- else if (onStack.has(w)) {
90
- // Back-edge into the active DFS path — w is in the same SCC as v.
91
- lowlink.set(v, Math.min(lowlink.get(v), dfsIndex.get(w)));
92
- }
93
- }
94
- // v is the root of an SCC: pop everything down to v inclusive.
95
- if (lowlink.get(v) === dfsIndex.get(v)) {
96
- const component = [];
97
- let w;
98
- do {
99
- w = stack.pop();
100
- onStack.delete(w);
101
- component.push(w);
102
- } while (w !== v);
103
- sccs.push(component);
104
- }
105
- }
106
- for (const key of keyToTypename.keys()) {
107
- if (!dfsIndex.has(key))
108
- strongconnect(key);
109
- }
110
- // Tarjan emits SCCs in reverse topological order of the condensation.
111
- // In our edge convention (child→parent), reverse-topo of the
112
- // condensation means root-SCCs (no outgoing edges = no parents)
113
- // first, leaf-SCCs (deepest descendants) last. We could just use
114
- // emit-order as the priority — but that gives independent sibling
115
- // SCCs different priorities, which is semantically wrong: siblings
116
- // don't depend on each other and shouldn't be ordered relative to
117
- // each other.
118
- //
119
- // Instead, do one more pass to compute *longest-path depth* on the
120
- // condensation DAG: depth(SCC) = max(depth(parent SCC)) + 1, or 0
121
- // for SCCs with no in-schema parents. SCCs at the same depth get
122
- // the same priority — siblings stay tied, insertion order in the
123
- // queue breaks the tie. Priority = (depth + 1) * 10.
124
- //
125
- // We can compute this in a single pass over the SCCs because
126
- // Tarjan's emit-order *is* a valid topological order of the
127
- // condensation: when we process sccs[i], every parent SCC has
128
- // already been assigned a depth.
129
- const nodeToSccIdx = new Map();
130
- sccs.forEach((scc, i) => {
131
- for (const node of scc)
132
- nodeToSccIdx.set(node, i);
133
- });
134
- const sccDepth = new Map();
135
- sccs.forEach((scc, i) => {
136
- let maxParentDepth = -1;
137
- for (const node of scc) {
138
- for (const parent of parentsOf.get(node) ?? []) {
139
- const parentSccIdx = nodeToSccIdx.get(parent);
140
- if (parentSccIdx === undefined)
141
- continue;
142
- if (parentSccIdx === i)
143
- continue; // intra-SCC edge — not a dep
144
- const d = sccDepth.get(parentSccIdx);
145
- if (d !== undefined && d > maxParentDepth)
146
- maxParentDepth = d;
147
- }
148
- }
149
- sccDepth.set(i, maxParentDepth + 1);
150
- });
151
- const out = new Map();
152
- sccs.forEach((scc, i) => {
153
- const priority = (sccDepth.get(i) + 1) * 10;
154
- for (const key of scc) {
155
- out.set(keyToTypename.get(key), priority);
156
- }
157
- });
158
- return out;
159
- }
160
- export function deriveConfigFromSchema(schema) {
161
- // Field-level serialization for commits happens in the transaction queue,
162
- // which reads each model's declared fields from the model registry at commit
163
- // time. There is no per-field metadata to configure here, so these maps stay
164
- // empty.
165
- return {
166
- modelCreatePriority: computeFKDepthPriority(schema),
167
- defaultCreatePriority: 40,
168
- defaultNonCreatePriority: 50,
169
- essentialFields: {},
170
- classNameFallbackMap: {},
171
- // Hash this schema once, so startup can detect when it has drifted from the
172
- // schema the server currently has active. The server and the `ablo push`
173
- // command compute this same hash.
174
- expectedSchemaHash: schemaHash(schema),
175
- // Per-model hashes for the SEMANTIC drift check: on a whole-hash mismatch
176
- // the client compares only the models it declares, so an additive server
177
- // change stays silent and a real divergence names the exact models.
178
- expectedModelHashes: Object.fromEntries(Object.entries(toSchemaJSON(schema).models).map(([key, model]) => [key, modelHash(model)])),
179
- // For a projection (`selectModels`/`omitModels`), also carry the full source
180
- // schema's hash. The drift check accepts a server match on either hash, so a
181
- // subset client stays quiet against a server running its full source schema.
182
- // Undefined for a directly-authored schema — plain equality applies there.
183
- expectedSourceSchemaHash: schema.sourceSchemaHash,
184
- };
185
- }
@@ -1,42 +0,0 @@
1
- /**
2
- * Validates the options passed when constructing a client, before any
3
- * connection is attempted. Returns the first problem it finds as an
4
- * {@link AbloError}, or null when every check passes. The caller records that
5
- * error on the client's sync status, so a misconfiguration surfaces through the
6
- * normal status channel rather than throwing at the call site.
7
- *
8
- * The order of checks matters: a missing `url` is reported before any identity
9
- * problem, because the identity error messages mention the URL and would
10
- * mislead if the URL were the thing actually missing.
11
- */
12
- import { AbloError } from '../transaction/errors.js';
13
- import type { ParticipantKind } from '../transaction/types/participant.js';
14
- /**
15
- * The subset of client options this validator reads. It is declared as its own
16
- * interface, structurally compatible with the full options type, so a real
17
- * options object satisfies it without the validator having to depend on the
18
- * complete type.
19
- */
20
- export interface ValidatableAbloOptions {
21
- readonly schema?: {
22
- readonly models?: Record<string, unknown>;
23
- } | null;
24
- readonly kind?: ParticipantKind;
25
- readonly user?: {
26
- readonly id?: string;
27
- } | undefined;
28
- readonly agentId?: string | undefined;
29
- readonly capabilityToken?: string | undefined;
30
- }
31
- export interface ValidateAbloOptionsInput {
32
- readonly options: ValidatableAbloOptions;
33
- readonly url: string;
34
- /**
35
- * Truthy when an API key was supplied (string or callable). The
36
- * validator only inspects presence, never the value, so the input
37
- * shape stays loose to accept whatever the caller resolved.
38
- */
39
- readonly configuredApiKey: unknown;
40
- readonly configuredAuthToken: unknown;
41
- }
42
- export declare function validateAbloOptions(input: ValidateAbloOptionsInput): AbloError | null;
@@ -1,43 +0,0 @@
1
- /**
2
- * Validates the options passed when constructing a client, before any
3
- * connection is attempted. Returns the first problem it finds as an
4
- * {@link AbloError}, or null when every check passes. The caller records that
5
- * error on the client's sync status, so a misconfiguration surfaces through the
6
- * normal status channel rather than throwing at the call site.
7
- *
8
- * The order of checks matters: a missing `url` is reported before any identity
9
- * problem, because the identity error messages mention the URL and would
10
- * mislead if the URL were the thing actually missing.
11
- */
12
- import { AbloError, AbloValidationError } from '../transaction/errors.js';
13
- export function validateAbloOptions(input) {
14
- const { options, url, configuredApiKey, configuredAuthToken } = input;
15
- const kind = options.kind ?? 'user';
16
- if (!url) {
17
- return new AbloValidationError('Ablo: `url` is required. Pass the sync server URL, e.g. ' +
18
- `Ablo({ baseURL: 'wss://api.abloatai.com', schema, user })`, { code: 'base_url_missing' });
19
- }
20
- if (!options.schema?.models) {
21
- return new AbloValidationError('Ablo: `schema` is required. Define it once and access models as `ablo.<model>`.', { code: 'invalid_options', param: 'schema' });
22
- }
23
- if (!configuredApiKey &&
24
- !configuredAuthToken &&
25
- !options.capabilityToken &&
26
- kind === 'user' &&
27
- options.user &&
28
- !options.user.id) {
29
- return new AbloValidationError('Ablo: `user.id` must be a non-empty string when `user` is provided.', { code: 'invalid_options', param: 'user.id' });
30
- }
31
- if (!configuredApiKey && !configuredAuthToken && kind === 'agent' && !options.agentId) {
32
- return new AbloValidationError('Ablo: provide either `apiKey` or `agentId` for `kind: "agent"`. ' +
33
- 'Hosted-cloud consumers pass `apiKey` and the server derives the ' +
34
- 'agent identity from its scope; self-hosted passes `agentId` + ' +
35
- '`capabilityToken` directly.', { code: 'invalid_options', param: 'agentId' });
36
- }
37
- if (!configuredApiKey && !configuredAuthToken && kind === 'agent' && !options.capabilityToken) {
38
- return new AbloValidationError('Ablo: provide either `apiKey` (hosted cloud — SDK exchanges internally) ' +
39
- 'or `capabilityToken` (self-hosted — your auth layer mints + hands in). ' +
40
- 'See https://abloatai.com/docs/api-keys for the full pattern.', { code: 'invalid_options', param: 'capabilityToken' });
41
- }
42
- return null;
43
- }
@@ -1,27 +0,0 @@
1
- /**
2
- * The default {@link MutationExecutor}. It sends each change as a `commit`
3
- * frame over the sync engine's own WebSocket, resolving that socket lazily at
4
- * commit time because it does not exist yet when the executor is created. A
5
- * client wires this up automatically unless you supply your own executor.
6
- */
7
- import type { ReadDependency, TrackDependency } from '../transaction/coordination/schema.js';
8
- import type { MutationExecutor, MutationOperation } from '../interfaces/index.js';
9
- import type { CommitAck } from '../sync/commitFrames.js';
10
- /**
11
- * Creates the default mutation executor, which sends each change as a `commit`
12
- * frame over the sync engine's own WebSocket. The engine owns its socket, so
13
- * you pass a URL and credentials rather than transport callbacks.
14
- *
15
- * The factory takes a `getWs` accessor instead of a socket directly because the
16
- * socket is created later during client startup and does not exist yet when
17
- * this executor is constructed. The accessor is called at commit time to reach
18
- * the ready socket.
19
- *
20
- * When set, `options.idempotencyKey` is sent as the wire-level `clientTxId`, so
21
- * retrying a call with the same key is safe. MutationQueue always supplies
22
- * this key before its first attempt and owns reuse across retries. The fallback
23
- * generation below exists only for direct, one-shot executor consumers.
24
- */
25
- export declare function createDefaultMutationExecutor(getWs: () => {
26
- sendCommit?: (operations: readonly MutationOperation[], clientTxId: string, timeoutMs?: number, reads?: readonly ReadDependency[] | null, track?: readonly TrackDependency[] | null) => Promise<CommitAck>;
27
- } | null): MutationExecutor;
@@ -1,72 +0,0 @@
1
- /**
2
- * The default {@link MutationExecutor}. It sends each change as a `commit`
3
- * frame over the sync engine's own WebSocket, resolving that socket lazily at
4
- * commit time because it does not exist yet when the executor is created. A
5
- * client wires this up automatically unless you supply your own executor.
6
- */
7
- import { AbloError, AbloConnectionError } from '../transaction/errors.js';
8
- // ── Default mutation executor (wire: `commit` frame over WebSocket) ──────
9
- /**
10
- * Creates the default mutation executor, which sends each change as a `commit`
11
- * frame over the sync engine's own WebSocket. The engine owns its socket, so
12
- * you pass a URL and credentials rather than transport callbacks.
13
- *
14
- * The factory takes a `getWs` accessor instead of a socket directly because the
15
- * socket is created later during client startup and does not exist yet when
16
- * this executor is constructed. The accessor is called at commit time to reach
17
- * the ready socket.
18
- *
19
- * When set, `options.idempotencyKey` is sent as the wire-level `clientTxId`, so
20
- * retrying a call with the same key is safe. MutationQueue always supplies
21
- * this key before its first attempt and owns reuse across retries. The fallback
22
- * generation below exists only for direct, one-shot executor consumers.
23
- */
24
- export function createDefaultMutationExecutor(getWs) {
25
- async function commit(operations, options) {
26
- const ws = getWs();
27
- if (!ws?.sendCommit) {
28
- throw new AbloConnectionError('SyncWebSocket not ready for commit. The engine must finish bootstrap ' +
29
- 'before mutations can be sent.', { code: 'ws_not_ready' });
30
- }
31
- const clientTxId = options?.idempotencyKey ??
32
- (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function'
33
- ? crypto.randomUUID()
34
- : `tx_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`);
35
- try {
36
- return await ws.sendCommit(operations, clientTxId, undefined, // use sendCommit's built-in 15s default; no per-call override
37
- options?.reads, options?.track);
38
- }
39
- catch (err) {
40
- // Wrap transport-level failures as connection errors so the transaction
41
- // queue's retry classifier treats them as transient and retries them.
42
- if (err instanceof AbloError)
43
- throw err;
44
- if (err instanceof Error) {
45
- if (/not connected|timed out|connection|ECONN/i.test(err.message)) {
46
- const wrapped = new AbloConnectionError(err.message, { cause: err });
47
- // Preserve any `diagnostics` snapshot the underlying SyncWebSocket
48
- // attached to the rejection. Without this, the wrapped error
49
- // bottoms out at "AbloConnectionError: not connected" with no
50
- // attribution to which close code / heartbeat trip / session
51
- // error caused it. See SyncWebSocket.notConnectedError().
52
- if (err &&
53
- typeof err === 'object' &&
54
- 'diagnostics' in err &&
55
- err.diagnostics) {
56
- wrapped.diagnostics = err.diagnostics;
57
- }
58
- throw wrapped;
59
- }
60
- }
61
- throw err;
62
- }
63
- }
64
- return {
65
- commit,
66
- executeCreate: (model, id, input, _txId, options) => commit([{ type: 'CREATE', model: model.toLowerCase(), id, input }], options).then(() => { }),
67
- executeUpdate: (model, id, data, _txId, options) => commit([{ type: 'UPDATE', model: model.toLowerCase(), id, input: data }], options),
68
- executeDelete: (model, id, _txId, options) => commit([{ type: 'DELETE', model: model.toLowerCase(), id }], options).then(() => { }),
69
- executeArchive: (model, id, _txId, options) => commit([{ type: 'ARCHIVE', model: model.toLowerCase(), id }], options).then(() => { }),
70
- executeUnarchive: (model, id, _txId, options) => commit([{ type: 'UNARCHIVE', model: model.toLowerCase(), id }], options).then(() => { }),
71
- };
72
- }
package/dist/context.d.ts DELETED
@@ -1,29 +0,0 @@
1
- /**
2
- * Module-level accessor for the sync engine's runtime context.
3
- *
4
- * The context is set once, during initialization, by {@link initRuntime}.
5
- * Code throughout the package reaches its shared dependencies — logger,
6
- * observability, online-status detector, configuration, and the mutation
7
- * executor — through {@link getContext} instead of receiving them through every
8
- * constructor.
9
- */
10
- import type { RuntimeContext } from './RuntimeContext.js';
11
- /**
12
- * Install the caller-provided runtime dependencies. Must be called before any
13
- * operation that reaches {@link getContext}.
14
- */
15
- export declare function initRuntime(context: RuntimeContext): void;
16
- /**
17
- * Get the current sync engine context.
18
- * Returns a safe fallback with no-op implementations if not yet initialized,
19
- * so SDK files can import at module load time without crashing.
20
- */
21
- export declare function getContext(): RuntimeContext;
22
- /**
23
- * Check if the sync engine has been initialized.
24
- */
25
- export declare function isRuntimeInitialized(): boolean;
26
- /**
27
- * Reset context (for testing or cleanup).
28
- */
29
- export declare function resetRuntime(): void;
package/dist/context.js DELETED
@@ -1,58 +0,0 @@
1
- /**
2
- * Module-level accessor for the sync engine's runtime context.
3
- *
4
- * The context is set once, during initialization, by {@link initRuntime}.
5
- * Code throughout the package reaches its shared dependencies — logger,
6
- * observability, online-status detector, configuration, and the mutation
7
- * executor — through {@link getContext} instead of receiving them through every
8
- * constructor.
9
- */
10
- import { noopLogger, noopObservability, browserOnlineStatus, defaultSessionErrorDetector, emptyConfig, } from './RuntimeContext.js';
11
- let _context = null;
12
- /**
13
- * Install the caller-provided runtime dependencies. Must be called before any
14
- * operation that reaches {@link getContext}.
15
- */
16
- export function initRuntime(context) {
17
- _context = context;
18
- }
19
- /**
20
- * Get the current sync engine context.
21
- * Returns a safe fallback with no-op implementations if not yet initialized,
22
- * so SDK files can import at module load time without crashing.
23
- */
24
- export function getContext() {
25
- if (!_context) {
26
- return _fallback;
27
- }
28
- return _context;
29
- }
30
- /**
31
- * Check if the sync engine has been initialized.
32
- */
33
- export function isRuntimeInitialized() {
34
- return _context !== null;
35
- }
36
- /**
37
- * Reset context (for testing or cleanup).
38
- */
39
- export function resetRuntime() {
40
- _context = null;
41
- }
42
- /** Fallback context with no-op implementations */
43
- const _fallback = {
44
- logger: noopLogger,
45
- observability: noopObservability,
46
- onlineStatus: browserOnlineStatus,
47
- sessionErrorDetector: defaultSessionErrorDetector,
48
- config: emptyConfig,
49
- getModelMetadata: () => undefined,
50
- mutationExecutor: {
51
- commit: () => Promise.resolve({ lastSyncId: 0, status: 'confirmed' }),
52
- executeCreate: () => Promise.resolve(),
53
- executeUpdate: () => Promise.resolve(null),
54
- executeDelete: () => Promise.resolve(),
55
- executeArchive: () => Promise.resolve(),
56
- executeUnarchive: () => Promise.resolve(),
57
- },
58
- };
@@ -1,26 +0,0 @@
1
- /**
2
- * Sync-engine compatibility adapter for the transaction layer's narrow claim
3
- * log. The core log knows only claim/conflict events; this subclass supplies
4
- * inert implementations for the client lifecycle hooks required by
5
- * `ObservabilityProvider`, preserving `Ablo({ observability: new ClaimLog() })`
6
- * without leaking bootstrap, storage, or WebSocket vocabulary into the core.
7
- */
8
- import { ClaimLog as CoordinationClaimLog } from '../transaction/coordination/trace.js';
9
- import type { ObservabilityProvider } from '../interfaces/index.js';
10
- export { formatClaim, formatConflict } from '../transaction/coordination/trace.js';
11
- export type { ClaimLogEntry } from '../transaction/coordination/trace.js';
12
- export declare class ClaimLog extends CoordinationClaimLog implements ObservabilityProvider {
13
- setContext(): void;
14
- setConnectionState(): void;
15
- breadcrumb(): void;
16
- captureRollback(): void;
17
- captureMutationFailure(): void;
18
- captureBootstrapFailure(): void;
19
- captureReconciliation(): void;
20
- captureDeltaRetryExhausted(): void;
21
- captureWebSocketError(): void;
22
- captureSelfHealing(): void;
23
- captureCommitZeroSyncId(): void;
24
- startSpan<T>(_name: string, _op: string, fn: () => T): T;
25
- startSpanAsync<T>(_name: string, _op: string, fn: () => Promise<T>): Promise<T>;
26
- }
@@ -1,32 +0,0 @@
1
- /**
2
- * Sync-engine compatibility adapter for the transaction layer's narrow claim
3
- * log. The core log knows only claim/conflict events; this subclass supplies
4
- * inert implementations for the client lifecycle hooks required by
5
- * `ObservabilityProvider`, preserving `Ablo({ observability: new ClaimLog() })`
6
- * without leaking bootstrap, storage, or WebSocket vocabulary into the core.
7
- */
8
- import { ClaimLog as CoordinationClaimLog } from '../transaction/coordination/trace.js';
9
- export { formatClaim, formatConflict } from '../transaction/coordination/trace.js';
10
- export class ClaimLog extends CoordinationClaimLog {
11
- // Client-lifecycle hooks the claim log has no notion of. Every body below is
12
- // deliberately inert: the log records claims and conflicts, nothing else.
13
- setContext() { }
14
- setConnectionState() { }
15
- breadcrumb() { }
16
- captureRollback() { }
17
- captureMutationFailure() { }
18
- captureBootstrapFailure() { }
19
- captureReconciliation() { }
20
- captureDeltaRetryExhausted() { }
21
- captureWebSocketError() { }
22
- captureSelfHealing() { }
23
- captureCommitZeroSyncId() { }
24
- // Spans run their body untimed; the trailing `attributes` argument callers
25
- // pass has nowhere to go here, so it is left off the signature.
26
- startSpan(_name, _op, fn) {
27
- return fn();
28
- }
29
- startSpanAsync(_name, _op, fn) {
30
- return fn();
31
- }
32
- }
@@ -1 +0,0 @@
1
- export * from '../transaction/coordination/index.js';
@@ -1,8 +0,0 @@
1
- // Moved to @ablo/transaction (ADR 0013 — the settlement core extraction).
2
- // This shim re-exports it at the original path so in-package importers of
3
- // `coordination/index.js` keep working; rewire to `@ablo/transaction/coordination`
4
- // and delete this shim once the core package is fully wired.
5
- //
6
- // Line comments on purpose: tsc copies a leading JSDoc block into the
7
- // published `.d.ts`, and this note names a package npm has never heard of.
8
- export * from '../transaction/coordination/index.js';