@abloatai/ablo 0.25.0 → 0.27.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 (425) hide show
  1. package/AGENTS.md +5 -3
  2. package/CHANGELOG.md +34 -0
  3. package/README.md +104 -88
  4. package/dist/BaseSyncedStore.d.ts +140 -266
  5. package/dist/BaseSyncedStore.js +338 -739
  6. package/dist/Database.d.ts +62 -77
  7. package/dist/Database.js +106 -127
  8. package/dist/{ObjectPool.d.ts → InstanceCache.d.ts} +10 -13
  9. package/dist/{ObjectPool.js → InstanceCache.js} +91 -83
  10. package/dist/LazyReferenceCollection.d.ts +11 -15
  11. package/dist/LazyReferenceCollection.js +16 -15
  12. package/dist/Model.d.ts +37 -52
  13. package/dist/Model.js +52 -69
  14. package/dist/ModelRegistry.d.ts +46 -25
  15. package/dist/ModelRegistry.js +32 -30
  16. package/dist/NetworkMonitor.d.ts +5 -6
  17. package/dist/NetworkMonitor.js +6 -7
  18. package/dist/SyncClient.d.ts +119 -109
  19. package/dist/SyncClient.js +303 -224
  20. package/dist/SyncEngineContext.d.ts +1 -3
  21. package/dist/SyncEngineContext.js +1 -2
  22. package/dist/adapters/alwaysOnline.d.ts +6 -8
  23. package/dist/adapters/alwaysOnline.js +6 -8
  24. package/dist/adapters/inMemoryStorage.d.ts +9 -9
  25. package/dist/adapters/inMemoryStorage.js +9 -9
  26. package/dist/agent/Agent.d.ts +39 -31
  27. package/dist/agent/Agent.js +35 -23
  28. package/dist/agent/index.d.ts +4 -4
  29. package/dist/agent/index.js +5 -5
  30. package/dist/agent/session.d.ts +47 -44
  31. package/dist/agent/session.js +37 -48
  32. package/dist/agent/types.d.ts +26 -31
  33. package/dist/agent/types.js +6 -7
  34. package/dist/ai-sdk/coordinatedTool.d.ts +108 -0
  35. package/dist/ai-sdk/{coordinated-tool.js → coordinatedTool.js} +44 -38
  36. package/dist/ai-sdk/coordinationContext.d.ts +46 -0
  37. package/dist/ai-sdk/{coordination-context.js → coordinationContext.js} +30 -31
  38. package/dist/ai-sdk/index.d.ts +25 -22
  39. package/dist/ai-sdk/index.js +25 -22
  40. package/dist/ai-sdk/wrap.d.ts +7 -8
  41. package/dist/ai-sdk/wrap.js +2 -2
  42. package/dist/auth/credentialPolicy.d.ts +74 -71
  43. package/dist/auth/credentialPolicy.js +51 -56
  44. package/dist/auth/credentialSource.d.ts +7 -18
  45. package/dist/auth/credentialSource.js +10 -18
  46. package/dist/auth/index.d.ts +59 -58
  47. package/dist/auth/index.js +34 -40
  48. package/dist/auth/schemas.d.ts +5 -4
  49. package/dist/auth/schemas.js +5 -4
  50. package/dist/batching/index.d.ts +19 -21
  51. package/dist/batching/index.js +14 -17
  52. package/dist/cli.cjs +483 -369
  53. package/dist/client/Ablo.d.ts +107 -836
  54. package/dist/client/Ablo.js +174 -833
  55. package/dist/client/ApiClient.d.ts +44 -20
  56. package/dist/client/ApiClient.js +193 -44
  57. package/dist/client/auth.d.ts +51 -60
  58. package/dist/client/auth.js +137 -110
  59. package/dist/client/claimHeartbeatLoop.d.ts +50 -0
  60. package/dist/client/claimHeartbeatLoop.js +88 -0
  61. package/dist/client/consoleLogger.d.ts +35 -0
  62. package/dist/client/consoleLogger.js +44 -0
  63. package/dist/client/createInternalComponents.d.ts +14 -17
  64. package/dist/client/createInternalComponents.js +26 -31
  65. package/dist/client/createModelProxy.d.ts +130 -120
  66. package/dist/client/createModelProxy.js +158 -124
  67. package/dist/client/credentialEndpoint.d.ts +61 -0
  68. package/dist/client/credentialEndpoint.js +86 -0
  69. package/dist/client/functionalUpdate.d.ts +29 -27
  70. package/dist/client/functionalUpdate.js +21 -21
  71. package/dist/client/hostedEndpoints.d.ts +21 -0
  72. package/dist/client/hostedEndpoints.js +21 -0
  73. package/dist/client/httpClient.d.ts +58 -54
  74. package/dist/client/httpClient.js +29 -31
  75. package/dist/client/identity.d.ts +15 -20
  76. package/dist/client/identity.js +49 -59
  77. package/dist/client/modelRegistration.d.ts +10 -0
  78. package/dist/client/modelRegistration.js +301 -0
  79. package/dist/client/options.d.ts +373 -0
  80. package/dist/client/options.js +6 -0
  81. package/dist/client/registerDataSource.d.ts +9 -9
  82. package/dist/client/registerDataSource.js +15 -16
  83. package/dist/client/resourceTypes.d.ts +333 -0
  84. package/dist/client/resourceTypes.js +7 -0
  85. package/dist/client/schemaConfig.d.ts +44 -0
  86. package/dist/client/schemaConfig.js +176 -0
  87. package/dist/client/sessionMint.d.ts +17 -13
  88. package/dist/client/sessionMint.js +26 -31
  89. package/dist/client/validateAbloOptions.d.ts +12 -14
  90. package/dist/client/validateAbloOptions.js +9 -10
  91. package/dist/client/writeOptionsSchema.d.ts +18 -16
  92. package/dist/client/writeOptionsSchema.js +23 -20
  93. package/dist/client/wsMutationExecutor.d.ts +28 -0
  94. package/dist/client/wsMutationExecutor.js +71 -0
  95. package/dist/context.d.ts +6 -4
  96. package/dist/context.js +6 -7
  97. package/dist/coordination/index.d.ts +13 -4
  98. package/dist/coordination/index.js +29 -4
  99. package/dist/coordination/schema.d.ts +176 -128
  100. package/dist/coordination/schema.js +197 -133
  101. package/dist/coordination/trace.d.ts +9 -11
  102. package/dist/coordination/trace.js +13 -15
  103. package/dist/core/DatabaseManager.d.ts +5 -8
  104. package/dist/core/DatabaseManager.js +38 -40
  105. package/dist/core/QueryProcessor.d.ts +7 -9
  106. package/dist/core/QueryProcessor.js +27 -34
  107. package/dist/core/QueryView.d.ts +17 -5
  108. package/dist/core/QueryView.js +6 -7
  109. package/dist/core/StoreManager.d.ts +14 -16
  110. package/dist/core/StoreManager.js +26 -25
  111. package/dist/core/ViewRegistry.d.ts +5 -5
  112. package/dist/core/ViewRegistry.js +4 -4
  113. package/dist/core/index.d.ts +18 -13
  114. package/dist/core/index.js +32 -26
  115. package/dist/core/openIDBWithTimeout.d.ts +38 -36
  116. package/dist/core/openIDBWithTimeout.js +57 -54
  117. package/dist/core/queryUtils.d.ts +45 -0
  118. package/dist/core/queryUtils.js +69 -0
  119. package/dist/core/storeContract.d.ts +145 -0
  120. package/dist/core/storeContract.js +12 -0
  121. package/dist/environment.d.ts +28 -0
  122. package/dist/environment.js +21 -0
  123. package/dist/errorCodes.d.ts +118 -101
  124. package/dist/errorCodes.js +277 -260
  125. package/dist/errors.d.ts +170 -165
  126. package/dist/errors.js +161 -151
  127. package/dist/index.d.ts +30 -27
  128. package/dist/index.js +90 -82
  129. package/dist/interfaces/index.d.ts +108 -133
  130. package/dist/interfaces/index.js +5 -4
  131. package/dist/keys/index.d.ts +27 -29
  132. package/dist/keys/index.js +59 -49
  133. package/dist/mutators/RecordingTransaction.d.ts +16 -16
  134. package/dist/mutators/RecordingTransaction.js +31 -37
  135. package/dist/mutators/Transaction.d.ts +18 -26
  136. package/dist/mutators/Transaction.js +14 -20
  137. package/dist/mutators/UndoManager.d.ts +122 -131
  138. package/dist/mutators/UndoManager.js +149 -155
  139. package/dist/mutators/defineMutators.d.ts +24 -37
  140. package/dist/mutators/defineMutators.js +14 -20
  141. package/dist/mutators/inverseOp.d.ts +12 -15
  142. package/dist/mutators/inverseOp.js +12 -15
  143. package/dist/mutators/mutateActions.d.ts +10 -9
  144. package/dist/mutators/mutateActions.js +1 -1
  145. package/dist/mutators/readerActions.d.ts +9 -8
  146. package/dist/mutators/readerActions.js +2 -2
  147. package/dist/mutators/undoApply.d.ts +31 -27
  148. package/dist/mutators/undoApply.js +26 -24
  149. package/dist/policy/index.d.ts +5 -3
  150. package/dist/policy/index.js +5 -3
  151. package/dist/policy/types.d.ts +105 -101
  152. package/dist/policy/types.js +67 -66
  153. package/dist/query/client.d.ts +32 -16
  154. package/dist/query/client.js +103 -72
  155. package/dist/query/types.d.ts +37 -60
  156. package/dist/query/types.js +13 -33
  157. package/dist/react/AbloProvider.d.ts +7 -11
  158. package/dist/react/AbloProvider.js +24 -17
  159. package/dist/react/context.d.ts +27 -146
  160. package/dist/react/context.js +9 -10
  161. package/dist/react/index.d.ts +41 -42
  162. package/dist/react/index.js +37 -38
  163. package/dist/react/internalContext.d.ts +17 -19
  164. package/dist/react/useAblo.d.ts +23 -22
  165. package/dist/react/useAblo.js +17 -15
  166. package/dist/react/useCurrentUserId.d.ts +8 -7
  167. package/dist/react/useCurrentUserId.js +8 -7
  168. package/dist/react/useErrorListener.d.ts +7 -7
  169. package/dist/react/useErrorListener.js +11 -12
  170. package/dist/react/useMutationFailureListener.d.ts +8 -8
  171. package/dist/react/useMutationFailureListener.js +9 -9
  172. package/dist/react/useMutators.d.ts +11 -11
  173. package/dist/react/useMutators.js +10 -4
  174. package/dist/react/useReactive.js +2 -3
  175. package/dist/react/useSyncStatus.d.ts +4 -6
  176. package/dist/react/useUndoScope.d.ts +7 -9
  177. package/dist/react/useUndoScope.js +3 -3
  178. package/dist/schema/coordination.d.ts +21 -25
  179. package/dist/schema/coordination.js +21 -25
  180. package/dist/schema/ddl.d.ts +43 -39
  181. package/dist/schema/ddl.js +75 -68
  182. package/dist/schema/ddlLock.d.ts +35 -0
  183. package/dist/schema/ddlLock.js +46 -0
  184. package/dist/schema/diff.d.ts +99 -61
  185. package/dist/schema/diff.js +43 -34
  186. package/dist/schema/field.d.ts +37 -42
  187. package/dist/schema/field.js +36 -49
  188. package/dist/schema/generate.d.ts +12 -12
  189. package/dist/schema/generate.js +12 -12
  190. package/dist/schema/index.d.ts +5 -4
  191. package/dist/schema/index.js +29 -21
  192. package/dist/schema/model.d.ts +121 -146
  193. package/dist/schema/model.js +24 -35
  194. package/dist/schema/openapi.d.ts +10 -9
  195. package/dist/schema/openapi.js +7 -1
  196. package/dist/schema/queries.d.ts +30 -32
  197. package/dist/schema/queries.js +24 -25
  198. package/dist/schema/relation.d.ts +89 -99
  199. package/dist/schema/relation.js +13 -13
  200. package/dist/schema/residency.d.ts +38 -0
  201. package/dist/schema/residency.js +30 -0
  202. package/dist/schema/roles.d.ts +45 -27
  203. package/dist/schema/roles.js +52 -21
  204. package/dist/schema/schema.d.ts +36 -45
  205. package/dist/schema/schema.js +42 -39
  206. package/dist/schema/select.d.ts +13 -13
  207. package/dist/schema/select.js +13 -13
  208. package/dist/schema/serialize.d.ts +36 -39
  209. package/dist/schema/serialize.js +27 -31
  210. package/dist/schema/sugar.d.ts +17 -32
  211. package/dist/schema/sugar.js +14 -29
  212. package/dist/schema/{sync-delta-row.d.ts → syncDeltaRow.d.ts} +27 -50
  213. package/dist/schema/syncDeltaRow.js +89 -0
  214. package/dist/schema/tenancy.d.ts +44 -46
  215. package/dist/schema/tenancy.js +46 -48
  216. package/dist/server/adapter.d.ts +58 -58
  217. package/dist/server/adapter.js +13 -14
  218. package/dist/server/commit.d.ts +60 -64
  219. package/dist/server/index.d.ts +9 -10
  220. package/dist/server/index.js +1 -1
  221. package/dist/server/readConfig.d.ts +70 -0
  222. package/dist/server/readConfig.js +8 -0
  223. package/dist/server/storageMode.d.ts +23 -0
  224. package/dist/server/storageMode.js +17 -0
  225. package/dist/source/adapter.d.ts +31 -26
  226. package/dist/source/adapter.js +10 -10
  227. package/dist/source/adapters/drizzle.d.ts +28 -23
  228. package/dist/source/adapters/drizzle.js +34 -28
  229. package/dist/source/adapters/kysely.d.ts +27 -25
  230. package/dist/source/adapters/kysely.js +28 -26
  231. package/dist/source/adapters/memory.d.ts +8 -7
  232. package/dist/source/adapters/memory.js +10 -9
  233. package/dist/source/adapters/prisma.d.ts +13 -12
  234. package/dist/source/adapters/prisma.js +27 -29
  235. package/dist/source/conformance.d.ts +18 -11
  236. package/dist/source/conformance.js +27 -19
  237. package/dist/source/connector.d.ts +31 -32
  238. package/dist/source/connector.js +30 -28
  239. package/dist/source/connectorProtocol.d.ts +160 -0
  240. package/dist/source/connectorProtocol.js +162 -0
  241. package/dist/source/contract.d.ts +26 -27
  242. package/dist/source/contract.js +28 -29
  243. package/dist/source/factory.d.ts +94 -0
  244. package/dist/source/factory.js +268 -0
  245. package/dist/source/index.d.ts +10 -462
  246. package/dist/source/index.js +17 -421
  247. package/dist/source/migrations.d.ts +9 -9
  248. package/dist/source/migrations.js +9 -9
  249. package/dist/source/next.d.ts +10 -11
  250. package/dist/source/next.js +7 -8
  251. package/dist/source/pushQueue.d.ts +70 -48
  252. package/dist/source/pushQueue.js +36 -29
  253. package/dist/source/signing.d.ts +88 -0
  254. package/dist/source/signing.js +159 -0
  255. package/dist/source/types.d.ts +351 -0
  256. package/dist/source/types.js +43 -0
  257. package/dist/stores/ObjectStore.d.ts +11 -12
  258. package/dist/stores/ObjectStore.js +34 -35
  259. package/dist/stores/ObjectStoreContract.d.ts +12 -15
  260. package/dist/stores/SyncActionStore.d.ts +8 -12
  261. package/dist/stores/SyncActionStore.js +77 -46
  262. package/dist/surface.d.ts +28 -21
  263. package/dist/surface.js +28 -20
  264. package/dist/sync/{BootstrapHelper.d.ts → BootstrapFetcher.d.ts} +37 -45
  265. package/dist/sync/{BootstrapHelper.js → BootstrapFetcher.js} +101 -80
  266. package/dist/sync/ConnectionManager.d.ts +47 -50
  267. package/dist/sync/ConnectionManager.js +74 -70
  268. package/dist/sync/NetworkProbe.d.ts +27 -31
  269. package/dist/sync/NetworkProbe.js +67 -72
  270. package/dist/sync/{HydrationCoordinator.d.ts → OnDemandLoader.d.ts} +49 -36
  271. package/dist/sync/{HydrationCoordinator.js → OnDemandLoader.js} +79 -54
  272. package/dist/sync/{AreaOfInterestManager.d.ts → SubscriptionManager.d.ts} +45 -59
  273. package/dist/sync/{AreaOfInterestManager.js → SubscriptionManager.js} +44 -52
  274. package/dist/sync/SyncWebSocket.d.ts +175 -250
  275. package/dist/sync/SyncWebSocket.js +431 -769
  276. package/dist/sync/awaitClaimGrant.d.ts +18 -18
  277. package/dist/sync/awaitClaimGrant.js +38 -30
  278. package/dist/sync/bootstrapApply.d.ts +70 -0
  279. package/dist/sync/bootstrapApply.js +73 -0
  280. package/dist/sync/commitFrames.d.ts +44 -0
  281. package/dist/sync/commitFrames.js +94 -0
  282. package/dist/sync/createClaimStream.d.ts +23 -22
  283. package/dist/sync/createClaimStream.js +108 -25
  284. package/dist/sync/createPresenceStream.d.ts +19 -18
  285. package/dist/sync/createPresenceStream.js +25 -26
  286. package/dist/sync/createSnapshot.d.ts +13 -17
  287. package/dist/sync/createSnapshot.js +20 -26
  288. package/dist/sync/credentialLifecycle.d.ts +175 -0
  289. package/dist/sync/credentialLifecycle.js +322 -0
  290. package/dist/sync/deltaPipeline.d.ts +113 -0
  291. package/dist/sync/deltaPipeline.js +261 -0
  292. package/dist/sync/groupChange.d.ts +113 -0
  293. package/dist/sync/groupChange.js +242 -0
  294. package/dist/sync/heartbeat.d.ts +63 -0
  295. package/dist/sync/heartbeat.js +91 -0
  296. package/dist/sync/participants.d.ts +27 -27
  297. package/dist/sync/schemas.d.ts +3 -2
  298. package/dist/sync/schemas.js +14 -10
  299. package/dist/sync/syncCursor.d.ts +40 -0
  300. package/dist/sync/syncCursor.js +55 -0
  301. package/dist/sync/syncPlan.d.ts +54 -0
  302. package/dist/sync/syncPlan.js +50 -0
  303. package/dist/sync/syncPosition.d.ts +54 -49
  304. package/dist/sync/syncPosition.js +57 -52
  305. package/dist/sync/wsFrameHandlers.d.ts +116 -0
  306. package/dist/sync/wsFrameHandlers.js +374 -0
  307. package/dist/testing/fixtures/bootstrap.d.ts +21 -17
  308. package/dist/testing/fixtures/bootstrap.js +12 -6
  309. package/dist/testing/fixtures/deltas.d.ts +31 -34
  310. package/dist/testing/fixtures/deltas.js +30 -33
  311. package/dist/testing/fixtures/models.d.ts +11 -10
  312. package/dist/testing/fixtures/models.js +12 -10
  313. package/dist/testing/helpers/{react-wrapper.d.ts → reactWrapper.d.ts} +13 -10
  314. package/dist/testing/helpers/{react-wrapper.js → reactWrapper.js} +15 -12
  315. package/dist/testing/helpers/{sync-engine-harness.d.ts → syncEngineHarness.d.ts} +17 -18
  316. package/dist/testing/helpers/{sync-engine-harness.js → syncEngineHarness.js} +14 -11
  317. package/dist/testing/helpers/wait.d.ts +13 -8
  318. package/dist/testing/helpers/wait.js +13 -8
  319. package/dist/testing/index.d.ts +4 -4
  320. package/dist/testing/index.js +3 -3
  321. package/dist/testing/mocks/MockMutationExecutor.d.ts +18 -17
  322. package/dist/testing/mocks/MockMutationExecutor.js +15 -14
  323. package/dist/testing/mocks/MockNetworkMonitor.d.ts +8 -8
  324. package/dist/testing/mocks/MockNetworkMonitor.js +8 -8
  325. package/dist/testing/mocks/MockSyncContext.d.ts +21 -34
  326. package/dist/testing/mocks/MockSyncContext.js +16 -45
  327. package/dist/testing/mocks/MockSyncStore.d.ts +14 -14
  328. package/dist/testing/mocks/MockSyncStore.js +11 -11
  329. package/dist/testing/mocks/MockWebSocket.d.ts +28 -24
  330. package/dist/testing/mocks/MockWebSocket.js +22 -21
  331. package/dist/transactions/TransactionQueue.d.ts +190 -221
  332. package/dist/transactions/TransactionQueue.js +424 -822
  333. package/dist/transactions/TransactionStore.d.ts +20 -0
  334. package/dist/transactions/TransactionStore.js +53 -0
  335. package/dist/transactions/UnconfirmedWrites.d.ts +82 -0
  336. package/dist/transactions/UnconfirmedWrites.js +104 -0
  337. package/dist/transactions/coalesceRules.d.ts +58 -0
  338. package/dist/transactions/coalesceRules.js +140 -0
  339. package/dist/transactions/commitPayload.d.ts +130 -0
  340. package/dist/transactions/commitPayload.js +143 -0
  341. package/dist/transactions/deltaConfirmation.d.ts +58 -0
  342. package/dist/transactions/deltaConfirmation.js +215 -0
  343. package/dist/transactions/optimisticApply.d.ts +49 -0
  344. package/dist/transactions/optimisticApply.js +65 -0
  345. package/dist/transactions/replayValidation.d.ts +99 -0
  346. package/dist/transactions/replayValidation.js +111 -0
  347. package/dist/types/global.d.ts +46 -41
  348. package/dist/types/global.js +20 -19
  349. package/dist/types/index.d.ts +74 -80
  350. package/dist/types/index.js +22 -27
  351. package/dist/types/modelData.d.ts +10 -0
  352. package/dist/types/modelData.js +9 -0
  353. package/dist/types/participant.d.ts +20 -0
  354. package/dist/types/participant.js +10 -0
  355. package/dist/types/streams.d.ts +216 -209
  356. package/dist/types/streams.js +7 -7
  357. package/dist/utils/asyncIterator.d.ts +25 -32
  358. package/dist/utils/asyncIterator.js +25 -32
  359. package/dist/utils/duration.d.ts +12 -15
  360. package/dist/utils/duration.js +12 -15
  361. package/dist/utils/mobxSetup.d.ts +53 -0
  362. package/dist/utils/{mobx-setup.js → mobxSetup.js} +44 -100
  363. package/dist/webhooks/events.d.ts +21 -16
  364. package/dist/webhooks/events.js +10 -8
  365. package/dist/webhooks/index.d.ts +5 -7
  366. package/dist/webhooks/index.js +5 -7
  367. package/dist/{schema/sync-delta-wire.d.ts → wire/delta.d.ts} +58 -41
  368. package/dist/wire/delta.js +114 -0
  369. package/dist/wire/errorEnvelope.d.ts +35 -27
  370. package/dist/wire/errorEnvelope.js +38 -32
  371. package/dist/wire/frames.d.ts +150 -67
  372. package/dist/wire/frames.js +48 -1
  373. package/dist/wire/index.d.ts +18 -13
  374. package/dist/wire/index.js +36 -13
  375. package/dist/wire/listEnvelope.d.ts +16 -23
  376. package/dist/wire/listEnvelope.js +7 -6
  377. package/dist/wire/protocol.d.ts +38 -0
  378. package/dist/wire/protocol.js +38 -0
  379. package/dist/wire/protocolVersion.d.ts +60 -0
  380. package/dist/wire/protocolVersion.js +67 -0
  381. package/docs/api-keys.md +4 -3
  382. package/docs/coordination.md +59 -0
  383. package/docs/examples/existing-python-backend.md +3 -3
  384. package/docs/identity.md +4 -4
  385. package/docs/integration-guide.md +1 -1
  386. package/docs/react.md +1 -1
  387. package/docs/sessions.md +5 -7
  388. package/package.json +24 -21
  389. package/dist/ai-sdk/coordinated-tool.d.ts +0 -101
  390. package/dist/ai-sdk/coordination-context.d.ts +0 -52
  391. package/dist/client/index.d.ts +0 -36
  392. package/dist/client/index.js +0 -33
  393. package/dist/config/index.d.ts +0 -10
  394. package/dist/config/index.js +0 -12
  395. package/dist/core/query-utils.d.ts +0 -34
  396. package/dist/core/query-utils.js +0 -59
  397. package/dist/interfaces/headless.d.ts +0 -95
  398. package/dist/interfaces/headless.js +0 -41
  399. package/dist/query/index.d.ts +0 -6
  400. package/dist/query/index.js +0 -5
  401. package/dist/realtime/index.d.ts +0 -10
  402. package/dist/realtime/index.js +0 -9
  403. package/dist/schema/plane.d.ts +0 -23
  404. package/dist/schema/plane.js +0 -19
  405. package/dist/schema/sync-delta-row.js +0 -103
  406. package/dist/schema/sync-delta-wire.js +0 -102
  407. package/dist/server/next.d.ts +0 -51
  408. package/dist/server/next.js +0 -47
  409. package/dist/server/read-config.d.ts +0 -67
  410. package/dist/server/read-config.js +0 -8
  411. package/dist/server/storage-mode.d.ts +0 -1
  412. package/dist/server/storage-mode.js +0 -18
  413. package/dist/source/connector-protocol.d.ts +0 -159
  414. package/dist/source/connector-protocol.js +0 -161
  415. package/dist/sync/OfflineFlush.d.ts +0 -9
  416. package/dist/sync/OfflineFlush.js +0 -22
  417. package/dist/sync/OfflineTransactionStore.d.ts +0 -37
  418. package/dist/sync/OfflineTransactionStore.js +0 -263
  419. package/dist/transactions/OptimisticEchoTracker.d.ts +0 -82
  420. package/dist/transactions/OptimisticEchoTracker.js +0 -104
  421. package/dist/transactions/index.d.ts +0 -16
  422. package/dist/transactions/index.js +0 -7
  423. package/dist/transactions/mutation-error-handler.d.ts +0 -5
  424. package/dist/transactions/mutation-error-handler.js +0 -39
  425. package/dist/utils/mobx-setup.d.ts +0 -42
@@ -1,9 +1,10 @@
1
1
  /**
2
- * Schema Field Helpers
3
- *
4
- * Thin wrappers around Zod that add sync-engine metadata (type tag, indexed).
5
- * Metadata is stored in `z.describe()` as a JSON-encoded string so it
6
- * survives `.optional()`, `.nullable()`, and `.default()` chain calls.
2
+ * Field builders for schema definitions. Each helper — {@link field}.string(),
3
+ * .number(), .enum(), and so on — returns an ordinary Zod schema with a little
4
+ * sync-engine metadata attached (its type tag and whether it is indexed) plus a
5
+ * couple of chainable methods. The metadata is tucked into the schema's description
6
+ * as a JSON string so it survives `.optional()`, `.nullable()`, and `.default()`
7
+ * chaining, and {@link resolveFieldMeta} reads it back out as a {@link FieldMeta}.
7
8
  *
8
9
  * Usage:
9
10
  * import { field } from '@abloatai/ablo/schema';
@@ -42,7 +43,7 @@ function encodeMeta(meta) {
42
43
  return META_PREFIX + JSON.stringify(meta);
43
44
  }
44
45
  function decodeMeta(description) {
45
- if (!description || !description.startsWith(META_PREFIX))
46
+ if (!description?.startsWith(META_PREFIX))
46
47
  return null;
47
48
  try {
48
49
  return JSON.parse(description.slice(META_PREFIX.length));
@@ -92,17 +93,11 @@ export function getFieldMeta(schema) {
92
93
  return { ...base, isOptional };
93
94
  }
94
95
  /**
95
- * Fallback: infer FieldMeta directly from a raw Zod schema when no
96
- * `field.*()` metadata was attached.
97
- *
98
- * Walks through `.optional()` / `.nullable()` / `.default()` wrappers
99
- * to find the inner primitive, then maps Zod's `_def.typeName` to
100
- * the sync-engine type tag. Used by `resolveFieldMeta` and by
101
- * `model()` / `query()` at definition time.
102
- *
103
- * Kept as an internal helper rather than exported directly — the
104
- * public API is `resolveFieldMeta`, which combines this fallback
105
- * with the `getFieldMeta` fast path.
96
+ * Infers a {@link FieldMeta} from a plain Zod schema that carries no field-builder
97
+ * metadata — for example a bare `z.string()`. It unwraps `.optional()`,
98
+ * `.nullable()`, and `.default()` to reach the inner type, then maps that Zod type
99
+ * to a sync-engine type tag. Most callers should use {@link resolveFieldMeta}
100
+ * instead, which tries the attached metadata first and falls back to this.
106
101
  */
107
102
  export function inferFieldMetaFromZod(schema) {
108
103
  let current = schema;
@@ -144,33 +139,24 @@ export function inferFieldMetaFromZod(schema) {
144
139
  current instanceof z.ZodRecord ||
145
140
  current instanceof z.ZodUnion ||
146
141
  current instanceof z.ZodUnknown ||
147
- // `z.custom<T>()` is an opaque, structurally-uninspectable blob
148
- // by construction the engine can't see its shape, which is exactly
149
- // the JSON-blob pattern (ProseMirror docs, LayerData/LayerStyle maps,
150
- // chart specs). Classifying it as `'string'` (the fallthrough default)
151
- // gave these fields deep MobX observability instead of the intended
152
- // `observable.ref` (see Ablo.ts registerProperty), producing the
153
- // microtask-storm + nested-reactivity-drift bug on live updates.
142
+ // `z.custom<T>()` is opaque its shape cannot be inspected so it is treated
143
+ // as a JSON blob rather than falling through to the `'string'` default. The type
144
+ // tag drives how the runtime observes the field, and an opaque custom value
145
+ // should be tracked by reference rather than deeply.
154
146
  current instanceof z.ZodCustom) {
155
147
  type = 'json';
156
148
  }
157
149
  return { type, isOptional, isIndexed: false, enumValues };
158
150
  }
159
151
  /**
160
- * Resolve FieldMeta for any Zod schema whether it was built with
161
- * `field.*()` (which attaches sync-engine metadata) or with raw Zod
162
- * (which requires fallback inference from `_def.typeName`).
163
- *
164
- * This is the single public entry point for "given a Zod field, tell
165
- * me its sync-engine type tag and optionality." Both `model()` and
166
- * `query()` use it to populate their `fields` / `inputFields` maps at
167
- * definition time, and the schema serializer reads those maps at
168
- * serialization time.
152
+ * Resolves a {@link FieldMeta} for any Zod schema, whether it was built with a
153
+ * {@link field} builder (which attaches metadata) or with plain Zod (which needs
154
+ * inference). This is the single entry point for "given a Zod field, tell me its
155
+ * sync-engine type tag and whether it is optional"; the model and query builders use
156
+ * it to populate their field maps, and the serializer reads those maps.
169
157
  *
170
- * Contract: always returns a value. Never returns null. Unknown Zod
171
- * types fall through to `'string'` this is intentional and matches
172
- * the existing behavior that was previously duplicated in
173
- * `model.ts:inferMetaFromZod`.
158
+ * It always returns a value and never returns null. A Zod type it does not recognize
159
+ * falls through to the `string` tag by design.
174
160
  */
175
161
  export function resolveFieldMeta(schema) {
176
162
  const attached = getFieldMeta(schema);
@@ -197,28 +183,28 @@ function buildField(schema, baseMeta) {
197
183
  return withFieldMethods(schema, { ...baseMeta, isIndexed: false });
198
184
  }
199
185
  export const field = {
200
- /** String field */
186
+ /** Defines a text field. */
201
187
  string() {
202
188
  return buildField(z.string(), { type: 'string' });
203
189
  },
204
- /** Number field */
190
+ /** Defines a numeric field. */
205
191
  number() {
206
192
  return buildField(z.number(), { type: 'number' });
207
193
  },
208
- /** Boolean field */
194
+ /** Defines a true/false field. */
209
195
  boolean() {
210
196
  return buildField(z.boolean(), { type: 'boolean' });
211
197
  },
212
- /** Date field */
198
+ /** Defines a timestamp field, represented as a JavaScript `Date`. */
213
199
  date() {
214
200
  return buildField(z.date(), { type: 'date' });
215
201
  },
216
- /** Enum field with constrained string values */
202
+ /** Defines a field constrained to a fixed set of string values. */
217
203
  enum(values) {
218
204
  return buildField(z.enum(values), { type: 'enum', enumValues: values });
219
205
  },
220
206
  /**
221
- * JSON field. Three call shapes:
207
+ * Defines a JSON field, with three call shapes:
222
208
  *
223
209
  * ```ts
224
210
  * field.json() // unknown JSON blob
@@ -226,9 +212,9 @@ export const field = {
226
212
  * field.json({ icon: z.string().default('default') }) // typed sub-properties with defaults
227
213
  * ```
228
214
  *
229
- * The third form is the key DX feature for metadata fields. It wraps the
230
- * plain object in `z.object()` automatically, and the model runtime generates
231
- * a `${field}Json` getter that parses the JSON string on read, applies Zod
215
+ * The third form is especially handy for metadata fields. It wraps the plain
216
+ * object in `z.object()` automatically, and the model runtime adds a
217
+ * `${field}Json` getter that parses the JSON string on read, applies the Zod
232
218
  * defaults, and caches the result.
233
219
  *
234
220
  * Example:
@@ -261,13 +247,14 @@ export const field = {
261
247
  }
262
248
  return buildField(inner, { type: 'json' });
263
249
  },
264
- /** Indexed string field (shorthand for `field.string().indexed()`). */
250
+ /** Defines an indexed text field shorthand for `field.string().indexed()`. */
265
251
  id() {
266
252
  return field.string().indexed();
267
253
  },
268
254
  };
269
- // ── Legacy function form (kept for backward compat) ──────────────────────
270
- /** Mark a Zod schema as indexed for fast lookups (function form). */
255
+ // ── Function form ────────────────────────────────────────────────────────
256
+ /** Marks a Zod schema as indexed so lookups on it use a database index. This is the
257
+ * standalone-function form of the `.indexed()` chain method. */
271
258
  export function indexed(schema) {
272
259
  // Try to preserve existing metadata type tag if present.
273
260
  const meta = decodeMeta(schema.description);
@@ -1,18 +1,18 @@
1
1
  /**
2
- * Schema TypeScript type emission the `generate` half of the loop (the
3
- * counterpart to `diff`/migrate). Lowers a serialized schema to a `.ts` file of
4
- * row interfaces + an `AbloSchema` map, so a consumer's app is typed against the
5
- * exact schema that the database and sync layer enforce. Pure (returns source
6
- * text); the CLI writes it to disk.
2
+ * Generates TypeScript types from a serialized schema. Given the schema, it produces
3
+ * the source text of a `.ts` module containing one row interface per model plus an
4
+ * `AbloSchema` map, so an app is typed against the same schema the database and sync
5
+ * layer enforce. This function is pure and returns the source as a string; the
6
+ * command-line tool writes it to disk.
7
7
  *
8
- * This is the SDK's front door: the developer writes ONE `defineSchema`, pushes
9
- * it (which migrates the DB), and generates types FROM the same schema — so the
10
- * types they code against, the rows the DB stores, and the entities sync moves
11
- * are provably the same thing.
8
+ * It is the counterpart to the migration planner in {@link diffSchema}: you write one
9
+ * schema definition, push it (which migrates the database), and generate types from
10
+ * that same schema, so the types you code against, the rows the database stores, and
11
+ * the entities the sync layer moves all describe the same thing.
12
12
  *
13
- * v1 emits the row shape (base columns + declared fields, enums as literal
14
- * unions). Relations are resolved by the runtime SDK's typed accessors and are
15
- * not expanded here.
13
+ * The generated interface covers the base columns plus each declared field, with
14
+ * enums emitted as string-literal unions. Relations are not expanded here the
15
+ * runtime SDK resolves those through its typed accessors.
16
16
  */
17
17
  import type { SchemaJSON } from './serialize.js';
18
18
  /** Emit a TypeScript module of row interfaces + the `AbloSchema` map. */
@@ -1,18 +1,18 @@
1
1
  /**
2
- * Schema TypeScript type emission the `generate` half of the loop (the
3
- * counterpart to `diff`/migrate). Lowers a serialized schema to a `.ts` file of
4
- * row interfaces + an `AbloSchema` map, so a consumer's app is typed against the
5
- * exact schema that the database and sync layer enforce. Pure (returns source
6
- * text); the CLI writes it to disk.
2
+ * Generates TypeScript types from a serialized schema. Given the schema, it produces
3
+ * the source text of a `.ts` module containing one row interface per model plus an
4
+ * `AbloSchema` map, so an app is typed against the same schema the database and sync
5
+ * layer enforce. This function is pure and returns the source as a string; the
6
+ * command-line tool writes it to disk.
7
7
  *
8
- * This is the SDK's front door: the developer writes ONE `defineSchema`, pushes
9
- * it (which migrates the DB), and generates types FROM the same schema — so the
10
- * types they code against, the rows the DB stores, and the entities sync moves
11
- * are provably the same thing.
8
+ * It is the counterpart to the migration planner in {@link diffSchema}: you write one
9
+ * schema definition, push it (which migrates the database), and generate types from
10
+ * that same schema, so the types you code against, the rows the database stores, and
11
+ * the entities the sync layer moves all describe the same thing.
12
12
  *
13
- * v1 emits the row shape (base columns + declared fields, enums as literal
14
- * unions). Relations are resolved by the runtime SDK's typed accessors and are
15
- * not expanded here.
13
+ * The generated interface covers the base columns plus each declared field, with
14
+ * enums emitted as string-literal unions. Relations are not expanded here the
15
+ * runtime SDK resolves those through its typed accessors.
16
16
  */
17
17
  import { BASE_FIELDS } from './schema.js';
18
18
  function tsType(meta) {
@@ -24,16 +24,17 @@ export { z } from 'zod';
24
24
  export { field, indexed, getFieldMeta, type FieldBuilder, type FieldMeta } from './field.js';
25
25
  export { relation, type RelationDef, type RelationType } from './relation.js';
26
26
  export { tenancySchema, scopedViaRefSchema, policyInputSchema, resolvePolicy, resolveTenancy, tenancyColumn, DEFAULT_ORG_COLUMN, type Tenancy, type ScopedViaRef, type PolicyInput, } from './tenancy.js';
27
- export { planeSchema, DEFAULT_PLANE, type SchemaPlane } from './plane.js';
28
- export { syncDeltaCoreSchema, deltaAttributionSchema, deltaProvenanceSchema, syncDeltaRowSchema, participantKindSchema, confirmationStateSchema, backfillProvenanceSchema, DELTA_PLANES, type SyncDeltaCore, type DeltaAttribution, type DeltaProvenance, type SyncDeltaRow, type ParticipantKind, type ConfirmationState, type BackfillProvenance, } from './sync-delta-row.js';
29
- export { syncDeltaActionSchema, wireDeltaDataSchema, participantRefSchema, syncDeltaWireCoreSchema, clientSyncDeltaSchema, serverSyncDeltaSchema, type SyncDeltaAction, type WireDeltaData, type ParticipantRef, type SyncDeltaWireCore, type ClientSyncDelta, type ServerSyncDelta, } from './sync-delta-wire.js';
27
+ export { residencySchema, DEFAULT_RESIDENCY, type ModelResidency, planeSchema, DEFAULT_PLANE, type SchemaPlane, } from './residency.js';
28
+ export { syncDeltaCoreSchema, deltaAttributionSchema, deltaProvenanceSchema, syncDeltaRowSchema, participantKindSchema, confirmationStateSchema, backfillProvenanceSchema, DELTA_RESIDENCY, type SyncDeltaCore, type DeltaAttribution, type DeltaProvenance, type SyncDeltaRow, type ParticipantKind, type ConfirmationState, type BackfillProvenance, } from './syncDeltaRow.js';
29
+ export { syncDeltaActionSchema, wireDeltaDataSchema, participantRefSchema, syncDeltaWireCoreSchema, clientSyncDeltaSchema, serverSyncDeltaSchema, type SyncDeltaAction, type WireDeltaData, type ParticipantRef, type SyncDeltaWireCore, type ClientSyncDelta, type ServerSyncDelta, } from '../wire/delta.js';
30
30
  export { model, scopeKindOf, type ModelDef, type ModelOptions, type LoadStrategy, type PersistOptions, type RelationRecord, type GrantsRef, type ConflictAxis, } from './model.js';
31
31
  export { coordination, humansOverwrite, humansReject, humansNotify, agentsOverwrite, agentsReject, agentsNotify, systemOverwrite, systemReject, systemNotify, type ConflictRule, } from './coordination.js';
32
32
  export { mutable, readOnly, type SugarOptions } from './sugar.js';
33
- export { defineSchema, composeIdentitySyncGroups, type Schema, type SchemaRecord, type Model, type InferModel, type InferCreate, type InferModelNames, type BaseModelFields, type InsertValue, type UpsertValue, type UpdateValue, type DeleteId, type DefineSchemaOptions, type Casing, type CasingConvention, type CasingFn, composeEntitySyncGroups, type IdentityRole, type IdentityContext, type IdentityRoleSource, type EntityRole, type EntityContext, type EntityRoleSource, type RoleSource, type RoleContext, type SyncGroup, type SyncGroupInput, identityRole, entityRole, extractIdentityIds, extractEntityIds, syncGroup, syncGroupSchema, syncGroupInputSchema, isSyncGroupInput, identityRoleSchema, entityRoleSchema, roleSchema, roleSourceSchema, scopeSchema, grantsRefSchema, groupsInputSchema, type GroupsInput, } from './schema.js';
33
+ export { defineSchema, composeIdentitySyncGroups, type Schema, type SchemaRecord, type Model, type InferModel, type InferCreate, type InferModelNames, type BaseModelFields, type InsertValue, type UpsertValue, type UpdateValue, type DeleteId, type DefineSchemaOptions, type Casing, type CasingConvention, type CasingFn, composeEntitySyncGroups, intersectRequestedWithAllowed, type IdentityRole, type IdentityContext, type IdentityRoleSource, type EntityRole, type EntityContext, type EntityRoleSource, type RoleSource, type RoleContext, type SyncGroup, type SyncGroupInput, identityRole, entityRole, extractIdentityIds, extractEntityIds, syncGroup, syncGroupSchema, syncGroupInputSchema, isSyncGroupInput, identityRoleSchema, entityRoleSchema, roleSchema, roleSourceSchema, scopeSchema, grantsRefSchema, groupsInputSchema, type GroupsInput, } from './schema.js';
34
34
  export { serializeSchema, parseSchema, toSchemaJSON, fromSchemaJSON, schemaHash, type SchemaJSON, type ModelJSON, type RelationJSON, } from './serialize.js';
35
35
  export { selectModels } from './select.js';
36
36
  export { generateProvisionPlan, generateMigrationPlan, appSchemaName, camelToSnake, snakeToCamel, q, sqlType, type ProvisionPlan, type MigrationPlan, } from './ddl.js';
37
+ export { PG_LOCK_NOT_AVAILABLE, resolveDdlLockTimeout, resolveDdlMaxLockAttempts, ddlLockRetryBackoffMs, type DdlLockEnv, } from './ddlLock.js';
37
38
  export { diffSchema, classifyMigration, classifyCast, isAutoApplicable, isBlockerResolved, unresolvedBlockers, type BackfillValue, type MigrationStep, type FieldChanges, type FieldColumnChange, type FieldTypeChange, type NullabilityChange, type EnumValuesChange, type IndexChange, type CastSafety, type FieldType, type RenameHints, type MigrationSignal, type MigrationClassification, type WarningCode, type BlockerCode, } from './diff.js';
38
39
  export { generateTypes } from './generate.js';
39
40
  export { query, defineQueries, type QueryDef, type QueryRecord, type Queries, type InferQueryInput, type InferQueryResult, } from './queries.js';
@@ -28,37 +28,45 @@ export { field, indexed, getFieldMeta } from './field.js';
28
28
  export { relation } from './relation.js';
29
29
  // Tenancy — the single source of truth for how a model's rows are tenant-scoped.
30
30
  export { tenancySchema, scopedViaRefSchema, policyInputSchema, resolvePolicy, resolveTenancy, tenancyColumn, DEFAULT_ORG_COLUMN, } from './tenancy.js';
31
- // Database plane — which DB a model's rows live in (`tenant` portable to a BYO
32
- // customer DB, `control` = Ablo's own). Sibling axis to `tenancy`.
33
- export { planeSchema, DEFAULT_PLANE } from './plane.js';
34
- // Decomposed sync-delta storage row (P0 of the control/tenant plane split —
35
- // see docs/plans/sync-delta-zod-decomposition.md). Describes the existing
36
- // `sync_deltas` columns as Zod schemas grouped by subsystem + database plane.
37
- export { syncDeltaCoreSchema, deltaAttributionSchema, deltaProvenanceSchema, syncDeltaRowSchema, participantKindSchema, confirmationStateSchema, backfillProvenanceSchema, DELTA_PLANES, } from './sync-delta-row.js';
38
- // Canonical WIRE delta contract — the broadcast (server→client) projection of
39
- // the stored row. The SDK client and the sync-server both derive their
40
- // `SyncDelta` type from these via `z.infer` so the contract cannot drift.
41
- export { syncDeltaActionSchema, wireDeltaDataSchema, participantRefSchema, syncDeltaWireCoreSchema, clientSyncDeltaSchema, serverSyncDeltaSchema, } from './sync-delta-wire.js';
31
+ // Model residency — which database a model's rows live in (`tenant` can be a
32
+ // customer's own database, `control` is Ablo's). A sibling axis to `tenancy`.
33
+ export { residencySchema, DEFAULT_RESIDENCY,
34
+ // Deliberate back-compat re-export of the deprecated aliases:
35
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
36
+ planeSchema,
37
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
38
+ DEFAULT_PLANE, } from './residency.js';
39
+ // The stored `sync_deltas` row, described as Zod schemas grouped by subsystem and by
40
+ // which database the columns live in.
41
+ export { syncDeltaCoreSchema, deltaAttributionSchema, deltaProvenanceSchema, syncDeltaRowSchema, participantKindSchema, confirmationStateSchema, backfillProvenanceSchema, DELTA_RESIDENCY, } from './syncDeltaRow.js';
42
+ // The wire delta contract — the server-to-client projection of the stored row.
43
+ // Both the client SDK and the server derive their `SyncDelta` type from these with
44
+ // `z.infer`, so the two ends cannot drift apart.
45
+ export { syncDeltaActionSchema, wireDeltaDataSchema, participantRefSchema, syncDeltaWireCoreSchema, clientSyncDeltaSchema, serverSyncDeltaSchema, } from '../wire/delta.js';
42
46
  // Model builder
43
47
  export { model, scopeKindOf, } from './model.js';
44
- // Axis 3 — coordination authoring helpers for the `conflict` axis (composable
45
- // disposition fns + a `cn`-style combinator).
48
+ // Coordination authoring helpers for the `conflict` axis composable disposition
49
+ // functions plus a combinator that merges them.
46
50
  export { coordination, humansOverwrite, humansReject, humansNotify, agentsOverwrite, agentsReject, agentsNotify, systemOverwrite, systemReject, systemNotify, } from './coordination.js';
47
- // Claim-first shorthand: `mutable.lazy({...})` and friends. Read the
48
- // safety posture and load shape off the verb tokens; everything else
49
- // falls back to sensible defaults. See sugar.ts for the full pattern.
51
+ // Claim-first shorthand for common model options: `mutable.lazy({...})` and friends
52
+ // encode a model's write-safety and load strategy in the verb, and fall back to
53
+ // sensible defaults for everything else.
50
54
  export { mutable, readOnly } from './sugar.js';
51
55
  // Schema definition + type inference
52
- export { defineSchema, composeIdentitySyncGroups, composeEntitySyncGroups, identityRole, entityRole, extractIdentityIds, extractEntityIds, syncGroup, syncGroupSchema, syncGroupInputSchema, isSyncGroupInput, identityRoleSchema, entityRoleSchema, roleSchema, roleSourceSchema, scopeSchema, grantsRefSchema, groupsInputSchema, } from './schema.js';
53
- // Schema ⇄ JSON (control-plane transport for hosted multi-tenant)
56
+ export { defineSchema, composeIdentitySyncGroups, composeEntitySyncGroups, intersectRequestedWithAllowed, identityRole, entityRole, extractIdentityIds, extractEntityIds, syncGroup, syncGroupSchema, syncGroupInputSchema, isSyncGroupInput, identityRoleSchema, entityRoleSchema, roleSchema, roleSourceSchema, scopeSchema, grantsRefSchema, groupsInputSchema, } from './schema.js';
57
+ // Schema ⇄ JSON serialize a schema for transport and rebuild it on the far side.
54
58
  export { serializeSchema, parseSchema, toSchemaJSON, fromSchemaJSON, schemaHash, } from './serialize.js';
55
59
  // Schema projection — derive an app's subset from one canonical schema.
56
60
  export { selectModels } from './select.js';
57
- // Schema → Postgres DDL (pure; shared by the hosted server and the CLI)
61
+ // Schema → Postgres DDL shared by the host implementation and the command-line tools.
58
62
  export { generateProvisionPlan, generateMigrationPlan, appSchemaName, camelToSnake, snakeToCamel, q, sqlType, } from './ddl.js';
59
- // Schema diff + migration planning (pure; SQL emission lowered by ddl.ts)
63
+ // Safe-DDL locking knobs (lock_timeout plus a bounded retry on lock contention),
64
+ // shared by `ablo migrate` and the host that applies a schema push, so tuning the
65
+ // ABLO_SCHEMA_LOCK_* variables changes both paths the same way.
66
+ export { PG_LOCK_NOT_AVAILABLE, resolveDdlLockTimeout, resolveDdlMaxLockAttempts, ddlLockRetryBackoffMs, } from './ddlLock.js';
67
+ // Schema diff + migration planning — produces the plan the DDL layer turns into SQL.
60
68
  export { diffSchema, classifyMigration, classifyCast, isAutoApplicable, isBlockerResolved, unresolvedBlockers, } from './diff.js';
61
- // Schema → TypeScript type emission (the `generate` half; pure)
69
+ // Schema → TypeScript type emission.
62
70
  export { generateTypes } from './generate.js';
63
71
  // Query definition DSL + type inference
64
72
  export { query, defineQueries, } from './queries.js';