@abloatai/ablo 0.36.0 → 0.37.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (597) hide show
  1. package/AGENTS.md +2 -2
  2. package/CHANGELOG.md +55 -2014
  3. package/NOTICE +2 -2
  4. package/README.md +45 -63
  5. package/assets/banner.png +0 -0
  6. package/dist/auth.d.ts +2 -0
  7. package/dist/auth.d.ts.map +1 -0
  8. package/dist/auth.js +2 -0
  9. package/dist/auth.js.map +1 -0
  10. package/dist/client.d.ts +3 -0
  11. package/dist/client.d.ts.map +1 -0
  12. package/dist/client.js +3 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/coordination.d.ts +2 -0
  15. package/dist/coordination.d.ts.map +1 -0
  16. package/dist/coordination.js +2 -0
  17. package/dist/coordination.js.map +1 -0
  18. package/dist/index.d.ts +3 -114
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +3 -163
  21. package/dist/index.js.map +1 -0
  22. package/dist/react.d.ts +4 -0
  23. package/dist/react.d.ts.map +1 -0
  24. package/dist/react.js +3 -0
  25. package/dist/react.js.map +1 -0
  26. package/dist/schema.d.ts +2 -0
  27. package/dist/schema.d.ts.map +1 -0
  28. package/dist/schema.js +2 -0
  29. package/dist/schema.js.map +1 -0
  30. package/dist/server.d.ts +2 -0
  31. package/dist/server.d.ts.map +1 -0
  32. package/dist/server.js +2 -0
  33. package/dist/server.js.map +1 -0
  34. package/dist/source-conformance.d.ts +2 -0
  35. package/dist/source-conformance.d.ts.map +1 -0
  36. package/dist/source-conformance.js +2 -0
  37. package/dist/source-conformance.js.map +1 -0
  38. package/dist/source-drizzle.d.ts +2 -0
  39. package/dist/source-drizzle.d.ts.map +1 -0
  40. package/dist/source-drizzle.js +2 -0
  41. package/dist/source-drizzle.js.map +1 -0
  42. package/dist/source-kysely.d.ts +2 -0
  43. package/dist/source-kysely.d.ts.map +1 -0
  44. package/dist/source-kysely.js +2 -0
  45. package/dist/source-kysely.js.map +1 -0
  46. package/dist/source-next.d.ts +2 -0
  47. package/dist/source-next.d.ts.map +1 -0
  48. package/dist/source-next.js +2 -0
  49. package/dist/source-next.js.map +1 -0
  50. package/dist/source.d.ts +2 -0
  51. package/dist/source.d.ts.map +1 -0
  52. package/dist/source.js +2 -0
  53. package/dist/source.js.map +1 -0
  54. package/dist/wire.d.ts +2 -0
  55. package/dist/wire.d.ts.map +1 -0
  56. package/dist/wire.js +2 -0
  57. package/dist/wire.js.map +1 -0
  58. package/docs/agents.md +1 -1
  59. package/docs/api-keys.md +7 -6
  60. package/docs/api.md +10 -10
  61. package/docs/client-behavior.md +5 -5
  62. package/docs/coordination.md +52 -62
  63. package/docs/data-sources.md +1 -1
  64. package/docs/examples/agent-human.md +4 -4
  65. package/docs/examples/ai-sdk-tool.md +1 -1
  66. package/docs/examples/existing-python-backend.md +15 -4
  67. package/docs/examples/nextjs.md +27 -6
  68. package/docs/examples/server-agent.md +2 -2
  69. package/docs/how-it-works.md +4 -4
  70. package/docs/identity.md +2 -1
  71. package/docs/integration-guide.md +24 -13
  72. package/docs/internal/README.md +18 -0
  73. package/docs/internal/agent-fleet-coordination-design.md +171 -0
  74. package/docs/internal/agent-orchestration.md +58 -0
  75. package/docs/internal/commit-identifiers.md +91 -0
  76. package/docs/internal/concurrency-open-decisions.md +37 -0
  77. package/docs/internal/data-source-reverse-channel.md +150 -0
  78. package/docs/internal/per-field-conflict-detection.md +165 -0
  79. package/docs/internal/postgres-replication.md +64 -0
  80. package/docs/internal/serializable-schema.md +119 -0
  81. package/docs/internal/structure.md +32 -0
  82. package/docs/mcp.md +2 -2
  83. package/docs/migration.md +3 -3
  84. package/docs/quickstart.md +2 -2
  85. package/docs/react.md +5 -5
  86. package/docs/schema-contract.md +3 -3
  87. package/docs/sessions.md +91 -37
  88. package/examples/README.md +2 -2
  89. package/examples/data-source/README.md +1 -1
  90. package/examples/data-source/ablo-driver.ts +1 -1
  91. package/examples/data-source/customer-server.ts +1 -1
  92. package/examples/data-source/run.ts +1 -1
  93. package/examples/data-source/schema.ts +1 -1
  94. package/examples/quickstart.ts +2 -2
  95. package/llms.txt +8 -8
  96. package/package.json +63 -166
  97. package/bin/ablo.cjs +0 -39
  98. package/dist/BaseSyncedStore.d.ts +0 -843
  99. package/dist/BaseSyncedStore.js +0 -1971
  100. package/dist/Database.d.ts +0 -323
  101. package/dist/Database.js +0 -1502
  102. package/dist/InstanceCache.d.ts +0 -237
  103. package/dist/InstanceCache.js +0 -1166
  104. package/dist/LazyReferenceCollection.d.ts +0 -177
  105. package/dist/LazyReferenceCollection.js +0 -461
  106. package/dist/Model.d.ts +0 -454
  107. package/dist/Model.js +0 -919
  108. package/dist/ModelRegistry.d.ts +0 -225
  109. package/dist/ModelRegistry.js +0 -539
  110. package/dist/NetworkMonitor.d.ts +0 -28
  111. package/dist/NetworkMonitor.js +0 -79
  112. package/dist/RuntimeContext.d.ts +0 -52
  113. package/dist/RuntimeContext.js +0 -80
  114. package/dist/SyncClient.d.ts +0 -541
  115. package/dist/SyncClient.js +0 -2202
  116. package/dist/adapters/alwaysOnline.d.ts +0 -14
  117. package/dist/adapters/alwaysOnline.js +0 -17
  118. package/dist/adapters/inMemoryStorage.d.ts +0 -31
  119. package/dist/adapters/inMemoryStorage.js +0 -110
  120. package/dist/ai-sdk/coordinatedTool.d.ts +0 -120
  121. package/dist/ai-sdk/coordinatedTool.js +0 -134
  122. package/dist/ai-sdk/coordinationContext.d.ts +0 -46
  123. package/dist/ai-sdk/coordinationContext.js +0 -106
  124. package/dist/ai-sdk/index.d.ts +0 -121
  125. package/dist/ai-sdk/index.js +0 -121
  126. package/dist/ai-sdk/wrap.d.ts +0 -65
  127. package/dist/ai-sdk/wrap.js +0 -39
  128. package/dist/auth/index.d.ts +0 -1
  129. package/dist/auth/index.js +0 -8
  130. package/dist/batching/index.d.ts +0 -55
  131. package/dist/batching/index.js +0 -147
  132. package/dist/client/Ablo.d.ts +0 -231
  133. package/dist/client/Ablo.js +0 -160
  134. package/dist/client/abloClient.d.ts +0 -309
  135. package/dist/client/abloClient.js +0 -13
  136. package/dist/client/clientPrelude.d.ts +0 -52
  137. package/dist/client/clientPrelude.js +0 -60
  138. package/dist/client/consoleLogger.d.ts +0 -35
  139. package/dist/client/consoleLogger.js +0 -44
  140. package/dist/client/coreClient.d.ts +0 -60
  141. package/dist/client/coreClient.js +0 -118
  142. package/dist/client/createInternalComponents.d.ts +0 -50
  143. package/dist/client/createInternalComponents.js +0 -98
  144. package/dist/client/createModelProxy.d.ts +0 -248
  145. package/dist/client/createModelProxy.js +0 -884
  146. package/dist/client/humans.d.ts +0 -69
  147. package/dist/client/humans.js +0 -78
  148. package/dist/client/modelRegistration.d.ts +0 -10
  149. package/dist/client/modelRegistration.js +0 -312
  150. package/dist/client/options.d.ts +0 -461
  151. package/dist/client/options.js +0 -7
  152. package/dist/client/reactiveEngine.d.ts +0 -53
  153. package/dist/client/reactiveEngine.js +0 -688
  154. package/dist/client/resourceTypes.d.ts +0 -12
  155. package/dist/client/resourceTypes.js +0 -10
  156. package/dist/client/schemaConfig.d.ts +0 -44
  157. package/dist/client/schemaConfig.js +0 -185
  158. package/dist/client/storeCluster.d.ts +0 -47
  159. package/dist/client/storeCluster.js +0 -118
  160. package/dist/client/storeLifecycle.d.ts +0 -61
  161. package/dist/client/storeLifecycle.js +0 -231
  162. package/dist/client/validateAbloOptions.d.ts +0 -42
  163. package/dist/client/validateAbloOptions.js +0 -43
  164. package/dist/client/wsMutationExecutor.d.ts +0 -27
  165. package/dist/client/wsMutationExecutor.js +0 -72
  166. package/dist/context.d.ts +0 -42
  167. package/dist/context.js +0 -81
  168. package/dist/coordination/ClaimLog.d.ts +0 -26
  169. package/dist/coordination/ClaimLog.js +0 -32
  170. package/dist/coordination/index.d.ts +0 -1
  171. package/dist/coordination/index.js +0 -8
  172. package/dist/core/index.d.ts +0 -33
  173. package/dist/core/index.js +0 -48
  174. package/dist/docs/catalog.d.ts +0 -72
  175. package/dist/docs/catalog.js +0 -230
  176. package/dist/docs/index.d.ts +0 -10
  177. package/dist/docs/index.js +0 -10
  178. package/dist/environment.d.ts +0 -1
  179. package/dist/environment.js +0 -8
  180. package/dist/interfaces/index.d.ts +0 -311
  181. package/dist/interfaces/index.js +0 -9
  182. package/dist/keys/index.d.ts +0 -1
  183. package/dist/keys/index.js +0 -8
  184. package/dist/mutators/RecordingMutation.d.ts +0 -36
  185. package/dist/mutators/RecordingMutation.js +0 -182
  186. package/dist/mutators/Transaction.d.ts +0 -40
  187. package/dist/mutators/Transaction.js +0 -58
  188. package/dist/mutators/UndoManager.d.ts +0 -258
  189. package/dist/mutators/UndoManager.js +0 -658
  190. package/dist/mutators/defineMutators.d.ts +0 -60
  191. package/dist/mutators/defineMutators.js +0 -18
  192. package/dist/mutators/inverseOp.d.ts +0 -126
  193. package/dist/mutators/inverseOp.js +0 -71
  194. package/dist/mutators/mutateActions.d.ts +0 -45
  195. package/dist/mutators/mutateActions.js +0 -105
  196. package/dist/mutators/readerActions.d.ts +0 -33
  197. package/dist/mutators/readerActions.js +0 -57
  198. package/dist/mutators/undoApply.d.ts +0 -51
  199. package/dist/mutators/undoApply.js +0 -117
  200. package/dist/policy/index.d.ts +0 -21
  201. package/dist/policy/index.js +0 -20
  202. package/dist/query/QueryProcessor.d.ts +0 -75
  203. package/dist/query/QueryProcessor.js +0 -255
  204. package/dist/query/client.d.ts +0 -64
  205. package/dist/query/client.js +0 -138
  206. package/dist/query/types.d.ts +0 -85
  207. package/dist/query/types.js +0 -16
  208. package/dist/react/AbloProvider.d.ts +0 -242
  209. package/dist/react/AbloProvider.js +0 -458
  210. package/dist/react/ClientSideSuspense.d.ts +0 -36
  211. package/dist/react/ClientSideSuspense.js +0 -17
  212. package/dist/react/DefaultFallback.d.ts +0 -24
  213. package/dist/react/DefaultFallback.js +0 -43
  214. package/dist/react/context.d.ts +0 -55
  215. package/dist/react/context.js +0 -29
  216. package/dist/react/createAbloReact.d.ts +0 -56
  217. package/dist/react/createAbloReact.js +0 -51
  218. package/dist/react/index.d.ts +0 -62
  219. package/dist/react/index.js +0 -69
  220. package/dist/react/internalContext.d.ts +0 -33
  221. package/dist/react/internalContext.js +0 -3
  222. package/dist/react/useAblo.d.ts +0 -82
  223. package/dist/react/useAblo.js +0 -120
  224. package/dist/react/useCurrentUserId.d.ts +0 -22
  225. package/dist/react/useCurrentUserId.js +0 -34
  226. package/dist/react/useErrorListener.d.ts +0 -20
  227. package/dist/react/useErrorListener.js +0 -38
  228. package/dist/react/useMutationFailureListener.d.ts +0 -26
  229. package/dist/react/useMutationFailureListener.js +0 -38
  230. package/dist/react/useMutators.d.ts +0 -56
  231. package/dist/react/useMutators.js +0 -84
  232. package/dist/react/useReactive.d.ts +0 -35
  233. package/dist/react/useReactive.js +0 -123
  234. package/dist/react/useSyncStatus.d.ts +0 -59
  235. package/dist/react/useSyncStatus.js +0 -76
  236. package/dist/react/useUndoScope.d.ts +0 -34
  237. package/dist/react/useUndoScope.js +0 -81
  238. package/dist/schema/coordination.d.ts +0 -112
  239. package/dist/schema/coordination.js +0 -133
  240. package/dist/schema/ddl.d.ts +0 -97
  241. package/dist/schema/ddl.js +0 -491
  242. package/dist/schema/ddlLock.d.ts +0 -35
  243. package/dist/schema/ddlLock.js +0 -46
  244. package/dist/schema/diff.d.ts +0 -225
  245. package/dist/schema/diff.js +0 -289
  246. package/dist/schema/generate.d.ts +0 -19
  247. package/dist/schema/generate.js +0 -86
  248. package/dist/schema/index.d.ts +0 -42
  249. package/dist/schema/index.js +0 -80
  250. package/dist/schema/queries.d.ts +0 -201
  251. package/dist/schema/queries.js +0 -144
  252. package/dist/schema/select.d.ts +0 -40
  253. package/dist/schema/select.js +0 -90
  254. package/dist/schema/serialize.d.ts +0 -115
  255. package/dist/schema/serialize.js +0 -265
  256. package/dist/schema/sugar.d.ts +0 -109
  257. package/dist/schema/sugar.js +0 -83
  258. package/dist/schema/syncDeltaRow.d.ts +0 -6
  259. package/dist/schema/syncDeltaRow.js +0 -6
  260. package/dist/server/adapter.d.ts +0 -173
  261. package/dist/server/adapter.js +0 -18
  262. package/dist/server/commit.d.ts +0 -107
  263. package/dist/server/commit.js +0 -1
  264. package/dist/server/index.d.ts +0 -14
  265. package/dist/server/index.js +0 -2
  266. package/dist/server/readConfig.d.ts +0 -80
  267. package/dist/server/readConfig.js +0 -8
  268. package/dist/server/storageMode.d.ts +0 -23
  269. package/dist/server/storageMode.js +0 -17
  270. package/dist/source/adapter.d.ts +0 -83
  271. package/dist/source/adapter.js +0 -24
  272. package/dist/source/adapters/drizzle.d.ts +0 -48
  273. package/dist/source/adapters/drizzle.js +0 -219
  274. package/dist/source/adapters/kysely.d.ts +0 -42
  275. package/dist/source/adapters/kysely.js +0 -205
  276. package/dist/source/adapters/kyselyMutationCore.d.ts +0 -76
  277. package/dist/source/adapters/kyselyMutationCore.js +0 -125
  278. package/dist/source/adapters/memory.d.ts +0 -13
  279. package/dist/source/adapters/memory.js +0 -130
  280. package/dist/source/adapters/prisma.d.ts +0 -63
  281. package/dist/source/adapters/prisma.js +0 -202
  282. package/dist/source/conformance.d.ts +0 -37
  283. package/dist/source/conformance.js +0 -215
  284. package/dist/source/connector.d.ts +0 -95
  285. package/dist/source/connector.js +0 -266
  286. package/dist/source/connectorProtocol.d.ts +0 -154
  287. package/dist/source/connectorProtocol.js +0 -163
  288. package/dist/source/contract.d.ts +0 -195
  289. package/dist/source/contract.js +0 -164
  290. package/dist/source/factory.d.ts +0 -92
  291. package/dist/source/factory.js +0 -286
  292. package/dist/source/idempotency.d.ts +0 -61
  293. package/dist/source/idempotency.js +0 -144
  294. package/dist/source/index.d.ts +0 -23
  295. package/dist/source/index.js +0 -30
  296. package/dist/source/migrations.d.ts +0 -21
  297. package/dist/source/migrations.js +0 -103
  298. package/dist/source/next.d.ts +0 -32
  299. package/dist/source/next.js +0 -25
  300. package/dist/source/pushQueue.d.ts +0 -134
  301. package/dist/source/pushQueue.js +0 -256
  302. package/dist/source/signing.d.ts +0 -92
  303. package/dist/source/signing.js +0 -162
  304. package/dist/source/types.d.ts +0 -401
  305. package/dist/source/types.js +0 -59
  306. package/dist/storeContract.d.ts +0 -145
  307. package/dist/storeContract.js +0 -12
  308. package/dist/stores/DatabaseManager.d.ts +0 -107
  309. package/dist/stores/DatabaseManager.js +0 -388
  310. package/dist/stores/ObjectStore.d.ts +0 -115
  311. package/dist/stores/ObjectStore.js +0 -393
  312. package/dist/stores/ObjectStoreContract.d.ts +0 -38
  313. package/dist/stores/ObjectStoreContract.js +0 -1
  314. package/dist/stores/StoreManager.d.ts +0 -114
  315. package/dist/stores/StoreManager.js +0 -304
  316. package/dist/stores/SyncActionStore.d.ts +0 -99
  317. package/dist/stores/SyncActionStore.js +0 -506
  318. package/dist/stores/openIDBWithTimeout.d.ts +0 -65
  319. package/dist/stores/openIDBWithTimeout.js +0 -153
  320. package/dist/stores/syncAction.d.ts +0 -26
  321. package/dist/stores/syncAction.js +0 -16
  322. package/dist/surface.d.ts +0 -36
  323. package/dist/surface.js +0 -75
  324. package/dist/sync/BootstrapFetcher.d.ts +0 -284
  325. package/dist/sync/BootstrapFetcher.js +0 -964
  326. package/dist/sync/ConnectionManager.d.ts +0 -8
  327. package/dist/sync/ConnectionManager.js +0 -8
  328. package/dist/sync/OnDemandLoader.d.ts +0 -231
  329. package/dist/sync/OnDemandLoader.js +0 -743
  330. package/dist/sync/SubscriptionManager.d.ts +0 -159
  331. package/dist/sync/SubscriptionManager.js +0 -243
  332. package/dist/sync/SyncWebSocket.d.ts +0 -173
  333. package/dist/sync/SyncWebSocket.js +0 -438
  334. package/dist/sync/awaitClaimGrant.d.ts +0 -6
  335. package/dist/sync/awaitClaimGrant.js +0 -6
  336. package/dist/sync/bootstrapApply.d.ts +0 -73
  337. package/dist/sync/bootstrapApply.js +0 -73
  338. package/dist/sync/commitFrames.d.ts +0 -8
  339. package/dist/sync/commitFrames.js +0 -8
  340. package/dist/sync/contextPorts.d.ts +0 -18
  341. package/dist/sync/contextPorts.js +0 -31
  342. package/dist/sync/createClaimStream.d.ts +0 -7
  343. package/dist/sync/createClaimStream.js +0 -7
  344. package/dist/sync/createPresenceStream.d.ts +0 -69
  345. package/dist/sync/createPresenceStream.js +0 -200
  346. package/dist/sync/createSnapshot.d.ts +0 -29
  347. package/dist/sync/createSnapshot.js +0 -118
  348. package/dist/sync/credentialLifecycle.d.ts +0 -7
  349. package/dist/sync/credentialLifecycle.js +0 -7
  350. package/dist/sync/deltaPipeline.d.ts +0 -114
  351. package/dist/sync/deltaPipeline.js +0 -278
  352. package/dist/sync/groupChange.d.ts +0 -116
  353. package/dist/sync/groupChange.js +0 -244
  354. package/dist/sync/participants.d.ts +0 -132
  355. package/dist/sync/participants.js +0 -346
  356. package/dist/sync/persistedPrefix.d.ts +0 -12
  357. package/dist/sync/persistedPrefix.js +0 -22
  358. package/dist/sync/schemaDrift.d.ts +0 -55
  359. package/dist/sync/schemaDrift.js +0 -53
  360. package/dist/sync/schemas.d.ts +0 -71
  361. package/dist/sync/schemas.js +0 -94
  362. package/dist/sync/syncCursor.d.ts +0 -40
  363. package/dist/sync/syncCursor.js +0 -55
  364. package/dist/sync/syncPlan.d.ts +0 -54
  365. package/dist/sync/syncPlan.js +0 -50
  366. package/dist/sync/wsFrameHandlers.d.ts +0 -8
  367. package/dist/sync/wsFrameHandlers.js +0 -8
  368. package/dist/syncLog/contract.d.ts +0 -20
  369. package/dist/syncLog/contract.js +0 -19
  370. package/dist/syncLog/index.d.ts +0 -1
  371. package/dist/syncLog/index.js +0 -1
  372. package/dist/transaction/ablo.d.ts +0 -88
  373. package/dist/transaction/ablo.js +0 -33
  374. package/dist/transaction/auth/apiKey.d.ts +0 -152
  375. package/dist/transaction/auth/apiKey.js +0 -419
  376. package/dist/transaction/auth/bootstrapScope.d.ts +0 -15
  377. package/dist/transaction/auth/bootstrapScope.js +0 -1
  378. package/dist/transaction/auth/capability.d.ts +0 -212
  379. package/dist/transaction/auth/capability.js +0 -224
  380. package/dist/transaction/auth/credentialEndpoint.d.ts +0 -61
  381. package/dist/transaction/auth/credentialEndpoint.js +0 -86
  382. package/dist/transaction/auth/credentialPolicy.d.ts +0 -148
  383. package/dist/transaction/auth/credentialPolicy.js +0 -125
  384. package/dist/transaction/auth/credentialSource.d.ts +0 -30
  385. package/dist/transaction/auth/credentialSource.js +0 -55
  386. package/dist/transaction/auth/hostedEndpoints.d.ts +0 -21
  387. package/dist/transaction/auth/hostedEndpoints.js +0 -21
  388. package/dist/transaction/auth/identity.d.ts +0 -55
  389. package/dist/transaction/auth/identity.js +0 -210
  390. package/dist/transaction/auth/index.d.ts +0 -162
  391. package/dist/transaction/auth/index.js +0 -304
  392. package/dist/transaction/auth/schemas.d.ts +0 -59
  393. package/dist/transaction/auth/schemas.js +0 -85
  394. package/dist/transaction/auth/sessionMint.d.ts +0 -28
  395. package/dist/transaction/auth/sessionMint.js +0 -85
  396. package/dist/transaction/coordination/awaitClaimGrant.d.ts +0 -56
  397. package/dist/transaction/coordination/awaitClaimGrant.js +0 -124
  398. package/dist/transaction/coordination/claimHeartbeatLoop.d.ts +0 -84
  399. package/dist/transaction/coordination/claimHeartbeatLoop.js +0 -108
  400. package/dist/transaction/coordination/claimMeta.d.ts +0 -49
  401. package/dist/transaction/coordination/claimMeta.js +0 -52
  402. package/dist/transaction/coordination/createClaimStream.d.ts +0 -64
  403. package/dist/transaction/coordination/createClaimStream.js +0 -475
  404. package/dist/transaction/coordination/events.d.ts +0 -74
  405. package/dist/transaction/coordination/events.js +0 -7
  406. package/dist/transaction/coordination/index.d.ts +0 -19
  407. package/dist/transaction/coordination/index.js +0 -45
  408. package/dist/transaction/coordination/locator.d.ts +0 -104
  409. package/dist/transaction/coordination/locator.js +0 -102
  410. package/dist/transaction/coordination/schema.d.ts +0 -1536
  411. package/dist/transaction/coordination/schema.js +0 -1177
  412. package/dist/transaction/coordination/targetConflict.d.ts +0 -2
  413. package/dist/transaction/coordination/targetConflict.js +0 -107
  414. package/dist/transaction/coordination/trace.d.ts +0 -78
  415. package/dist/transaction/coordination/trace.js +0 -138
  416. package/dist/transaction/durableWrites.d.ts +0 -62
  417. package/dist/transaction/durableWrites.js +0 -71
  418. package/dist/transaction/environment.d.ts +0 -105
  419. package/dist/transaction/environment.js +0 -108
  420. package/dist/transaction/errorCodes.d.ts +0 -403
  421. package/dist/transaction/errorCodes.js +0 -484
  422. package/dist/transaction/errors.d.ts +0 -428
  423. package/dist/transaction/errors.js +0 -686
  424. package/dist/transaction/footprint.d.ts +0 -111
  425. package/dist/transaction/footprint.js +0 -0
  426. package/dist/transaction/index.d.ts +0 -20
  427. package/dist/transaction/index.js +0 -20
  428. package/dist/transaction/keys/index.d.ts +0 -87
  429. package/dist/transaction/keys/index.js +0 -207
  430. package/dist/transaction/log/syncDeltaRow.d.ts +0 -158
  431. package/dist/transaction/log/syncDeltaRow.js +0 -95
  432. package/dist/transaction/logPosition.d.ts +0 -97
  433. package/dist/transaction/logPosition.js +0 -125
  434. package/dist/transaction/logger.d.ts +0 -16
  435. package/dist/transaction/logger.js +0 -7
  436. package/dist/transaction/observability.d.ts +0 -53
  437. package/dist/transaction/observability.js +0 -19
  438. package/dist/transaction/persistence.d.ts +0 -12
  439. package/dist/transaction/persistence.js +0 -11
  440. package/dist/transaction/plugin.d.ts +0 -285
  441. package/dist/transaction/plugin.js +0 -106
  442. package/dist/transaction/policy/types.d.ts +0 -217
  443. package/dist/transaction/policy/types.js +0 -126
  444. package/dist/transaction/resources/functionalUpdate.d.ts +0 -79
  445. package/dist/transaction/resources/functionalUpdate.js +0 -87
  446. package/dist/transaction/resources/httpResources.d.ts +0 -321
  447. package/dist/transaction/resources/httpResources.js +0 -7
  448. package/dist/transaction/resources/modelOperations.d.ts +0 -427
  449. package/dist/transaction/resources/modelOperations.js +0 -12
  450. package/dist/transaction/resources/mutationOptions.d.ts +0 -66
  451. package/dist/transaction/resources/mutationOptions.js +0 -9
  452. package/dist/transaction/resources/where.d.ts +0 -101
  453. package/dist/transaction/resources/where.js +0 -115
  454. package/dist/transaction/resources/writeOptionsSchema.d.ts +0 -47
  455. package/dist/transaction/resources/writeOptionsSchema.js +0 -73
  456. package/dist/transaction/schema/field.d.ts +0 -120
  457. package/dist/transaction/schema/field.js +0 -265
  458. package/dist/transaction/schema/fieldRef.d.ts +0 -38
  459. package/dist/transaction/schema/fieldRef.js +0 -11
  460. package/dist/transaction/schema/loadStrategy.d.ts +0 -45
  461. package/dist/transaction/schema/loadStrategy.js +0 -46
  462. package/dist/transaction/schema/model.d.ts +0 -379
  463. package/dist/transaction/schema/model.js +0 -123
  464. package/dist/transaction/schema/openapi.d.ts +0 -58
  465. package/dist/transaction/schema/openapi.js +0 -501
  466. package/dist/transaction/schema/relation.d.ts +0 -204
  467. package/dist/transaction/schema/relation.js +0 -104
  468. package/dist/transaction/schema/residency.d.ts +0 -29
  469. package/dist/transaction/schema/residency.js +0 -25
  470. package/dist/transaction/schema/roles.d.ts +0 -249
  471. package/dist/transaction/schema/roles.js +0 -230
  472. package/dist/transaction/schema/schema.d.ts +0 -351
  473. package/dist/transaction/schema/schema.js +0 -325
  474. package/dist/transaction/schema/tenancy.d.ts +0 -139
  475. package/dist/transaction/schema/tenancy.js +0 -190
  476. package/dist/transaction/transactionLayer.d.ts +0 -82
  477. package/dist/transaction/transactionLayer.js +0 -24
  478. package/dist/transaction/transactions/settlement/commitEnvelope.d.ts +0 -143
  479. package/dist/transaction/transactions/settlement/commitEnvelope.js +0 -161
  480. package/dist/transaction/transactions/settlement/httpCommitEnvelope.d.ts +0 -53
  481. package/dist/transaction/transactions/settlement/httpCommitEnvelope.js +0 -207
  482. package/dist/transaction/transactions/settlement/idempotencyKey.d.ts +0 -10
  483. package/dist/transaction/transactions/settlement/idempotencyKey.js +0 -9
  484. package/dist/transaction/transactions/settlement/pendingWrite.d.ts +0 -112
  485. package/dist/transaction/transactions/settlement/pendingWrite.js +0 -20
  486. package/dist/transaction/transport/commitFrames.d.ts +0 -90
  487. package/dist/transaction/transport/commitFrames.js +0 -134
  488. package/dist/transaction/transport/connectionManager.d.ts +0 -215
  489. package/dist/transaction/transport/connectionManager.js +0 -673
  490. package/dist/transaction/transport/credentialLifecycle.d.ts +0 -177
  491. package/dist/transaction/transport/credentialLifecycle.js +0 -324
  492. package/dist/transaction/transport/heartbeat.d.ts +0 -65
  493. package/dist/transaction/transport/heartbeat.js +0 -93
  494. package/dist/transaction/transport/httpClient.d.ts +0 -131
  495. package/dist/transaction/transport/httpClient.js +0 -146
  496. package/dist/transaction/transport/httpOptions.d.ts +0 -33
  497. package/dist/transaction/transport/httpOptions.js +0 -12
  498. package/dist/transaction/transport/httpTransport.d.ts +0 -8
  499. package/dist/transaction/transport/httpTransport.js +0 -1388
  500. package/dist/transaction/transport/networkProbe.d.ts +0 -84
  501. package/dist/transaction/transport/networkProbe.js +0 -207
  502. package/dist/transaction/transport/wsFrameHandlers.d.ts +0 -128
  503. package/dist/transaction/transport/wsFrameHandlers.js +0 -429
  504. package/dist/transaction/transport/wsTransport.d.ts +0 -574
  505. package/dist/transaction/transport/wsTransport.js +0 -1023
  506. package/dist/transaction/types/assertExact.d.ts +0 -17
  507. package/dist/transaction/types/assertExact.js +0 -1
  508. package/dist/transaction/types/global.d.ts +0 -107
  509. package/dist/transaction/types/global.js +0 -40
  510. package/dist/transaction/types/index.d.ts +0 -205
  511. package/dist/transaction/types/index.js +0 -56
  512. package/dist/transaction/types/modelData.d.ts +0 -10
  513. package/dist/transaction/types/modelData.js +0 -9
  514. package/dist/transaction/types/participant.d.ts +0 -20
  515. package/dist/transaction/types/participant.js +0 -10
  516. package/dist/transaction/types/streams.d.ts +0 -550
  517. package/dist/transaction/types/streams.js +0 -11
  518. package/dist/transaction/utils/asyncIterator.d.ts +0 -34
  519. package/dist/transaction/utils/asyncIterator.js +0 -135
  520. package/dist/transaction/utils/duration.d.ts +0 -50
  521. package/dist/transaction/utils/duration.js +0 -77
  522. package/dist/transaction/utils/json.d.ts +0 -57
  523. package/dist/transaction/utils/json.js +0 -276
  524. package/dist/transaction/wire/accountResponses.d.ts +0 -420
  525. package/dist/transaction/wire/accountResponses.js +0 -290
  526. package/dist/transaction/wire/auth.d.ts +0 -56
  527. package/dist/transaction/wire/auth.js +0 -63
  528. package/dist/transaction/wire/bootstrapReason.d.ts +0 -9
  529. package/dist/transaction/wire/bootstrapReason.js +0 -8
  530. package/dist/transaction/wire/claimEvent.d.ts +0 -76
  531. package/dist/transaction/wire/claimEvent.js +0 -73
  532. package/dist/transaction/wire/claims.d.ts +0 -530
  533. package/dist/transaction/wire/claims.js +0 -327
  534. package/dist/transaction/wire/commit.d.ts +0 -603
  535. package/dist/transaction/wire/commit.js +0 -321
  536. package/dist/transaction/wire/delta.d.ts +0 -250
  537. package/dist/transaction/wire/delta.js +0 -147
  538. package/dist/transaction/wire/errorEnvelope.d.ts +0 -72
  539. package/dist/transaction/wire/errorEnvelope.js +0 -123
  540. package/dist/transaction/wire/feedCursor.d.ts +0 -60
  541. package/dist/transaction/wire/feedCursor.js +0 -82
  542. package/dist/transaction/wire/feedEvent.d.ts +0 -204
  543. package/dist/transaction/wire/feedEvent.js +0 -65
  544. package/dist/transaction/wire/frames.d.ts +0 -194
  545. package/dist/transaction/wire/frames.js +0 -50
  546. package/dist/transaction/wire/inboundFrames.d.ts +0 -562
  547. package/dist/transaction/wire/inboundFrames.js +0 -116
  548. package/dist/transaction/wire/index.d.ts +0 -54
  549. package/dist/transaction/wire/index.js +0 -83
  550. package/dist/transaction/wire/listEnvelope.d.ts +0 -37
  551. package/dist/transaction/wire/listEnvelope.js +0 -42
  552. package/dist/transaction/wire/modelMutations.d.ts +0 -31
  553. package/dist/transaction/wire/modelMutations.js +0 -52
  554. package/dist/transaction/wire/modelResponses.d.ts +0 -85
  555. package/dist/transaction/wire/modelResponses.js +0 -43
  556. package/dist/transaction/wire/modelShape.d.ts +0 -78
  557. package/dist/transaction/wire/modelShape.js +0 -74
  558. package/dist/transaction/wire/protocol.d.ts +0 -38
  559. package/dist/transaction/wire/protocol.js +0 -38
  560. package/dist/transaction/wire/protocolVersion.d.ts +0 -73
  561. package/dist/transaction/wire/protocolVersion.js +0 -83
  562. package/dist/transactions/mutations/MutationQueue.d.ts +0 -661
  563. package/dist/transactions/mutations/MutationQueue.js +0 -2807
  564. package/dist/transactions/mutations/MutationStore.d.ts +0 -20
  565. package/dist/transactions/mutations/MutationStore.js +0 -53
  566. package/dist/transactions/mutations/UnconfirmedWrites.d.ts +0 -82
  567. package/dist/transactions/mutations/UnconfirmedWrites.js +0 -104
  568. package/dist/transactions/mutations/coalesceRules.d.ts +0 -58
  569. package/dist/transactions/mutations/coalesceRules.js +0 -140
  570. package/dist/transactions/mutations/commitLatency.d.ts +0 -52
  571. package/dist/transactions/mutations/commitLatency.js +0 -130
  572. package/dist/transactions/mutations/commitOutboxStore.d.ts +0 -28
  573. package/dist/transactions/mutations/commitOutboxStore.js +0 -26
  574. package/dist/transactions/mutations/commitPayload.d.ts +0 -165
  575. package/dist/transactions/mutations/commitPayload.js +0 -152
  576. package/dist/transactions/mutations/deltaConfirmation.d.ts +0 -63
  577. package/dist/transactions/mutations/deltaConfirmation.js +0 -235
  578. package/dist/transactions/mutations/durableWriteStore.d.ts +0 -14
  579. package/dist/transactions/mutations/durableWriteStore.js +0 -12
  580. package/dist/transactions/mutations/optimisticApply.d.ts +0 -49
  581. package/dist/transactions/mutations/optimisticApply.js +0 -65
  582. package/dist/transactions/mutations/replayValidation.d.ts +0 -187
  583. package/dist/transactions/mutations/replayValidation.js +0 -164
  584. package/dist/utils/mobxSetup.d.ts +0 -53
  585. package/dist/utils/mobxSetup.js +0 -330
  586. package/dist/views/QueryView.d.ts +0 -79
  587. package/dist/views/QueryView.js +0 -218
  588. package/dist/views/ViewRegistry.d.ts +0 -20
  589. package/dist/views/ViewRegistry.js +0 -55
  590. package/dist/views/incrementalView.d.ts +0 -45
  591. package/dist/views/incrementalView.js +0 -69
  592. package/dist/webhooks/events.d.ts +0 -43
  593. package/dist/webhooks/events.js +0 -42
  594. package/dist/webhooks/index.d.ts +0 -8
  595. package/dist/webhooks/index.js +0 -8
  596. package/dist/wire/index.d.ts +0 -1
  597. package/dist/wire/index.js +0 -8
@@ -1,80 +0,0 @@
1
- /**
2
- * @abloatai/ablo/schema — Schema Definition DSL
3
- *
4
- * Define your data models with Zod. Types are inferred automatically.
5
- *
6
- * ```ts
7
- * import { z } from 'zod';
8
- * import { defineSchema, model, relation } from '@abloatai/ablo/schema';
9
- *
10
- * export const schema = defineSchema({
11
- * tasks: model({
12
- * title: z.string(),
13
- * status: z.enum(['todo', 'doing', 'done']).default('todo'),
14
- * projectId: z.string().optional(),
15
- * }, {
16
- * project: relation.belongsTo('projects', 'projectId'),
17
- * }),
18
- * });
19
- *
20
- * type Task = Model<typeof schema, 'tasks'>;
21
- * ```
22
- */
23
- // Re-export Zod for convenience (consumers can also import directly)
24
- export { z } from 'zod';
25
- // Field helpers (optional convenience wrappers around Zod)
26
- export { field, indexed, getFieldMeta } from '../transaction/schema/field.js';
27
- // A field as a value rather than a quoted name — `schema.fields.tasks.status`.
28
- // Surfaces that name a field (claims today) take one of these so a name that
29
- // does not exist stops compiling.
30
- export { isFieldRef } from '../transaction/schema/fieldRef.js';
31
- // Relation builders
32
- export { relation } from '../transaction/schema/relation.js';
33
- // Tenancy — the single source of truth for how a model's rows are tenant-scoped.
34
- export { tenancySchema, scopedViaRefSchema, policyInputSchema, resolvePolicy, resolveTenancy, tenancyColumn, DEFAULT_ORG_COLUMN, } from '../transaction/schema/tenancy.js';
35
- // Model residency — which database a model's rows live in (`tenant` can be a
36
- // customer's own database, `control` is Ablo's). A sibling axis to `tenancy`.
37
- export { residencySchema, DEFAULT_RESIDENCY, } from '../transaction/schema/residency.js';
38
- // The stored `sync_deltas` row, described as Zod schemas grouped by subsystem and by
39
- // which database the columns live in.
40
- export { syncDeltaCoreSchema, deltaAttributionSchema, syncDeltaRowSchema, participantKindSchema, confirmationStateSchema, backfillProvenanceSchema, DELTA_DATA_CLASSIFICATION, DELTA_PHYSICAL_STORAGE, } from './syncDeltaRow.js';
41
- // The wire delta contract — the server-to-client projection of the stored row.
42
- // Both the client SDK and the server derive their `SyncDelta` type from these with
43
- // `z.infer`, so the two ends cannot drift apart.
44
- export { syncDeltaActionSchema, wireDeltaDataSchema, participantRefSchema, syncDeltaWireCoreSchema, clientSyncDeltaSchema, serverSyncDeltaSchema, } from '../transaction/wire/delta.js';
45
- // Model builder
46
- export { model, scopeKindOf,
47
- // Both meanings: the value a tool enumerates to learn the strategies, and the
48
- // type a `load` option is checked against. `loadsAtBootstrap` is the one
49
- // predicate both the client subscription and the server payload ask.
50
- LoadStrategy, DEFAULT_LOAD_STRATEGY, loadsAtBootstrap, } from '../transaction/schema/model.js';
51
- // Coordination authoring helpers for the `conflict` axis — composable disposition
52
- // functions plus a combinator that merges them.
53
- export { coordination, humansOverwrite, humansReject, humansNotify, agentsOverwrite, agentsReject, agentsNotify, systemOverwrite, systemReject, systemNotify, } from './coordination.js';
54
- // Claim-first shorthand for common model options: `mutable.lazy({...})` and friends
55
- // encode a model's write-safety and load strategy in the verb, and fall back to
56
- // sensible defaults for everything else.
57
- export { mutable, readOnly } from './sugar.js';
58
- // Schema definition + type inference
59
- export { defineSchema, composeIdentitySyncGroups, composeEntitySyncGroups, intersectRequestedWithAllowed, identityRole, entityRole, extractIdentityIds, extractEntityIds, syncGroup, syncGroupSchema, syncGroupInputSchema, isSyncGroupInput, identityRoleSchema, entityRoleSchema, roleSchema, roleSourceSchema, scopeSchema, grantsRefSchema, groupsInputSchema, RESERVED_SESSION_SETTINGS, } from '../transaction/schema/schema.js';
60
- // Schema ⇄ JSON — serialize a schema for transport and rebuild it on the far side.
61
- export { serializeSchema, parseSchema, toSchemaJSON, fromSchemaJSON, schemaHash, modelHash, } from './serialize.js';
62
- // Schema projection — derive an app's subset from one canonical schema.
63
- export { selectModels, omitModels } from './select.js';
64
- // Schema → Postgres DDL — shared by the host implementation and the command-line tools.
65
- export { generateProvisionPlan, generateMigrationPlan, appSchemaName, camelToSnake, snakeToCamel, q, sqlType, } from './ddl.js';
66
- // Safe-DDL locking knobs (lock_timeout plus a bounded retry on lock contention),
67
- // shared by `ablo migrate` and the host that applies a schema push, so tuning the
68
- // ABLO_SCHEMA_LOCK_* variables changes both paths the same way.
69
- export { PG_LOCK_NOT_AVAILABLE, resolveDdlLockTimeout, resolveDdlMaxLockAttempts, ddlLockRetryBackoffMs, } from './ddlLock.js';
70
- // Schema diff + migration planning — produces the plan the DDL layer turns into SQL.
71
- export { diffSchema, classifyMigration, classifyCast, isAutoApplicable, isBlockerResolved, unresolvedBlockers, } from './diff.js';
72
- // Schema → TypeScript type emission.
73
- export { generateTypes } from './generate.js';
74
- // Query definition DSL + type inference
75
- export { query, defineQueries, } from './queries.js';
76
- // The OpenAPI generator describes the language-agnostic `/v1` surface — the
77
- // primitive itself, which a Python or Go caller consumes with no TypeScript
78
- // anywhere — so it lives in the settlement core (ADR 0016). Re-exported here so
79
- // the `@abloatai/ablo/schema` import path keeps resolving.
80
- export { abloOpenApi, schemaToOpenApi } from '../transaction/schema/openapi.js';
@@ -1,201 +0,0 @@
1
- /**
2
- * Query definitions for a schema.
3
- *
4
- * A query pairs a Zod input schema with the name of the model it returns.
5
- * Input types flow through `z.infer` and result types through `InferModel`,
6
- * the same inference path `model` and `relation` use, so there is no separate
7
- * type system to learn.
8
- *
9
- * Usage:
10
- * import { z } from 'zod';
11
- * import {
12
- * defineSchema, defineQueries, model, query, relation,
13
- * } from '@abloatai/ablo/schema';
14
- *
15
- * const schema = defineSchema({
16
- * block: model(
17
- * { sectionId: z.string(), type: z.string() },
18
- * { section: relation.belongsTo('sections', 'sectionId') },
19
- * { load: 'lazy', typename: 'Block', persist: {} },
20
- * ),
21
- * });
22
- *
23
- * const queries = defineQueries(schema, {
24
- * blocksByReport: query({
25
- * input: z.object({ reportId: z.string() }),
26
- * returns: 'block', // ← type-checked against schema.models
27
- * }),
28
- * });
29
- *
30
- * type Input = InferQueryInput<typeof queries.queries.blocksByReport>;
31
- * // ^? { reportId: string }
32
- * type Result = InferQueryResult<
33
- * typeof schema,
34
- * typeof queries.queries.blocksByReport
35
- * >;
36
- * // ^? Array<Block>
37
- *
38
- * Design notes:
39
- *
40
- * - `query()` accepts any string for `returns`. The check that the string
41
- * names a real model runs when the query passes through
42
- * `defineQueries(schema, ...)`, the same way
43
- * `relation.belongsTo('projects', 'projectId')` takes a plain string at
44
- * the factory and defers the cross-reference check to schema assembly.
45
- *
46
- * - A query carries no `name` until `defineQueries()` assigns one from its
47
- * record key — the same pattern `defineSchema({ tasks: model(...) })`
48
- * uses, where the model's name is the record key rather than a field on
49
- * the factory.
50
- *
51
- * - Every query returns an array of a single model type. To fetch several
52
- * model types at once, run several queries in one batch rather than
53
- * declaring a combined shape. Each `QueryDef` therefore points at exactly
54
- * one model, and the loader hydrates results through a single
55
- * `schema.models[queryDef.returns]` lookup.
56
- */
57
- import { z } from 'zod';
58
- import type { Schema, InferModel, InferModelNames } from '../transaction/schema/schema.js';
59
- /**
60
- * A single query definition: a zod input shape, the schema key of the
61
- * model it returns, and (after assembly) the name it was registered
62
- * under.
63
- *
64
- * `name` is filled in by `defineQueries()` from the record key. It is
65
- * optional on the type so `query()` can return a value without one —
66
- * downstream code should only read `name` after the query has been
67
- * passed through `defineQueries()`.
68
- */
69
- export interface QueryDef<TInput extends z.ZodType = z.ZodType, TReturns extends string = string> {
70
- /** Zod schema for the query's input arguments. */
71
- readonly input: TInput;
72
- /**
73
- * The schema key of the model this query returns. Narrowed by
74
- * `defineQueries()` to `InferModelNames<S>` via the `Q` generic, so
75
- * a query whose `returns` does not match a known model fails at
76
- * compile time.
77
- */
78
- readonly returns: TReturns;
79
- /**
80
- * The name under which the query is registered. {@link defineQueries}
81
- * fills this in from the record key; you do not set it directly. It lives
82
- * on the definition itself so dispatch and lookup code can read the name
83
- * straight off a {@link QueryDef} without carrying the surrounding
84
- * {@link Queries} object.
85
- */
86
- readonly name?: string;
87
- }
88
- /**
89
- * The raw spec accepted by `query()`. Internal type — consumers never
90
- * reference this directly, they call `query({ input, returns })`.
91
- */
92
- interface QuerySpec<TInput extends z.ZodType, TReturns extends string> {
93
- readonly input: TInput;
94
- readonly returns: TReturns;
95
- }
96
- /**
97
- * Define a query.
98
- *
99
- * `TReturns` is a `const` generic so TypeScript preserves the literal
100
- * type of the `returns` value at call time (e.g., `'block'`
101
- * instead of widening to `string`). This is what lets `defineQueries`
102
- * type-check `returns` against the schema's model keys without
103
- * requiring the consumer to write `as const` manually.
104
- *
105
- * ```ts
106
- * const blocksByReport = query({
107
- * input: z.object({ reportId: z.string() }),
108
- * returns: 'block',
109
- * });
110
- * ```
111
- */
112
- export declare function query<TInput extends z.ZodType, const TReturns extends string>(spec: QuerySpec<TInput, TReturns>): QueryDef<TInput, TReturns>;
113
- /**
114
- * A record of query names → query definitions, parameterized by a
115
- * schema so each query's `returns` must reference a known model.
116
- *
117
- * This is the constraint type used by `defineQueries()` — it's what
118
- * turns "any string" into "a model in this schema" without touching
119
- * the `query()` factory itself.
120
- */
121
- export type QueryRecord<S extends Schema> = Record<string, QueryDef<z.ZodType, InferModelNames<S>>>;
122
- /**
123
- * The object returned by `defineQueries()`. Holds a reference back to
124
- * the schema (so the loader can resolve `queryDef.returns` to
125
- * a `ModelDef` at runtime via `schema.models[def.returns]`) and the
126
- * resolved record of queries, each with its `name` field filled in.
127
- */
128
- export interface Queries<S extends Schema, Q extends QueryRecord<S>> {
129
- readonly schema: S;
130
- readonly queries: Q;
131
- }
132
- /**
133
- * Infer the input type of a query from its zod schema.
134
- *
135
- * ```ts
136
- * type Input = InferQueryInput<typeof queries.queries.blocksByReport>;
137
- * // { reportId: string }
138
- * ```
139
- */
140
- export type InferQueryInput<Q extends QueryDef> = z.infer<Q['input']>;
141
- /**
142
- * Infer the result type of a query by looking up its `returns` model
143
- * in the schema.
144
- *
145
- * Returns `Array<InferModel<S, returns>>` — all queries return a
146
- * collection at this layer. Single-entity fetches use
147
- * `ids: [singleId]` and the caller picks `result[0]`; this avoids a
148
- * second `scope: 'single'` shape in the DSL for a case that can be
149
- * expressed with the collection form.
150
- *
151
- * ```ts
152
- * type Result = InferQueryResult<
153
- * typeof schema,
154
- * typeof queries.queries.blocksByReport
155
- * >;
156
- * // Array<Block>
157
- * ```
158
- */
159
- export type InferQueryResult<S extends Schema, Q extends QueryDef> = Q extends QueryDef<z.ZodType, infer R> ? R extends InferModelNames<S> ? InferModel<S, R>[] : never : never;
160
- /**
161
- * Define a typed query set against a schema.
162
- *
163
- * Each entry's `returns` field is constrained to the schema's model
164
- * names at compile time via the `Q` generic bound to `QueryRecord<S>`.
165
- * A query whose `returns` does not match a known model will fail at
166
- * the `defineQueries` call site with a TypeScript error, not at
167
- * runtime.
168
- *
169
- * The factory also performs a runtime validation of the same
170
- * invariant. This catches the edge case where the schema and the
171
- * queries live in separate modules that drift out of sync — for
172
- * example, when a developer removes a model from the schema without
173
- * updating the queries that referenced it. The runtime error points
174
- * at the specific offending query and lists the available models,
175
- * which is a nicer failure mode than a generic "property does not
176
- * exist" error deep inside the loader.
177
- *
178
- * Each resolved query gets its `name` populated from the record key:
179
- * `queries.blocksByReport.name === 'blocksByReport'`. Dispatch and
180
- * lookup code read `queryDef.name` directly rather than re-deriving it from
181
- * the surrounding record.
182
- *
183
- * ```ts
184
- * const schema = defineSchema({
185
- * block: model(
186
- * { sectionId: z.string() },
187
- * {},
188
- * { load: 'lazy', typename: 'Block', persist: {} },
189
- * ),
190
- * });
191
- *
192
- * const queries = defineQueries(schema, {
193
- * blocksByReport: query({
194
- * input: z.object({ reportId: z.string() }),
195
- * returns: 'block', // ← type-checked
196
- * }),
197
- * });
198
- * ```
199
- */
200
- export declare function defineQueries<S extends Schema, const Q extends QueryRecord<S>>(schema: S, queries: Q): Queries<S, Q>;
201
- export {};
@@ -1,144 +0,0 @@
1
- /**
2
- * Query definitions for a schema.
3
- *
4
- * A query pairs a Zod input schema with the name of the model it returns.
5
- * Input types flow through `z.infer` and result types through `InferModel`,
6
- * the same inference path `model` and `relation` use, so there is no separate
7
- * type system to learn.
8
- *
9
- * Usage:
10
- * import { z } from 'zod';
11
- * import {
12
- * defineSchema, defineQueries, model, query, relation,
13
- * } from '@abloatai/ablo/schema';
14
- *
15
- * const schema = defineSchema({
16
- * block: model(
17
- * { sectionId: z.string(), type: z.string() },
18
- * { section: relation.belongsTo('sections', 'sectionId') },
19
- * { load: 'lazy', typename: 'Block', persist: {} },
20
- * ),
21
- * });
22
- *
23
- * const queries = defineQueries(schema, {
24
- * blocksByReport: query({
25
- * input: z.object({ reportId: z.string() }),
26
- * returns: 'block', // ← type-checked against schema.models
27
- * }),
28
- * });
29
- *
30
- * type Input = InferQueryInput<typeof queries.queries.blocksByReport>;
31
- * // ^? { reportId: string }
32
- * type Result = InferQueryResult<
33
- * typeof schema,
34
- * typeof queries.queries.blocksByReport
35
- * >;
36
- * // ^? Array<Block>
37
- *
38
- * Design notes:
39
- *
40
- * - `query()` accepts any string for `returns`. The check that the string
41
- * names a real model runs when the query passes through
42
- * `defineQueries(schema, ...)`, the same way
43
- * `relation.belongsTo('projects', 'projectId')` takes a plain string at
44
- * the factory and defers the cross-reference check to schema assembly.
45
- *
46
- * - A query carries no `name` until `defineQueries()` assigns one from its
47
- * record key — the same pattern `defineSchema({ tasks: model(...) })`
48
- * uses, where the model's name is the record key rather than a field on
49
- * the factory.
50
- *
51
- * - Every query returns an array of a single model type. To fetch several
52
- * model types at once, run several queries in one batch rather than
53
- * declaring a combined shape. Each `QueryDef` therefore points at exactly
54
- * one model, and the loader hydrates results through a single
55
- * `schema.models[queryDef.returns]` lookup.
56
- */
57
- import { z } from 'zod';
58
- import { AbloValidationError } from '../transaction/errors.js';
59
- // ── query() factory ───────────────────────────────────────────────────────
60
- /**
61
- * Define a query.
62
- *
63
- * `TReturns` is a `const` generic so TypeScript preserves the literal
64
- * type of the `returns` value at call time (e.g., `'block'`
65
- * instead of widening to `string`). This is what lets `defineQueries`
66
- * type-check `returns` against the schema's model keys without
67
- * requiring the consumer to write `as const` manually.
68
- *
69
- * ```ts
70
- * const blocksByReport = query({
71
- * input: z.object({ reportId: z.string() }),
72
- * returns: 'block',
73
- * });
74
- * ```
75
- */
76
- export function query(spec) {
77
- return {
78
- input: spec.input,
79
- returns: spec.returns,
80
- };
81
- }
82
- // ── defineQueries() factory ───────────────────────────────────────────────
83
- /**
84
- * Define a typed query set against a schema.
85
- *
86
- * Each entry's `returns` field is constrained to the schema's model
87
- * names at compile time via the `Q` generic bound to `QueryRecord<S>`.
88
- * A query whose `returns` does not match a known model will fail at
89
- * the `defineQueries` call site with a TypeScript error, not at
90
- * runtime.
91
- *
92
- * The factory also performs a runtime validation of the same
93
- * invariant. This catches the edge case where the schema and the
94
- * queries live in separate modules that drift out of sync — for
95
- * example, when a developer removes a model from the schema without
96
- * updating the queries that referenced it. The runtime error points
97
- * at the specific offending query and lists the available models,
98
- * which is a nicer failure mode than a generic "property does not
99
- * exist" error deep inside the loader.
100
- *
101
- * Each resolved query gets its `name` populated from the record key:
102
- * `queries.blocksByReport.name === 'blocksByReport'`. Dispatch and
103
- * lookup code read `queryDef.name` directly rather than re-deriving it from
104
- * the surrounding record.
105
- *
106
- * ```ts
107
- * const schema = defineSchema({
108
- * block: model(
109
- * { sectionId: z.string() },
110
- * {},
111
- * { load: 'lazy', typename: 'Block', persist: {} },
112
- * ),
113
- * });
114
- *
115
- * const queries = defineQueries(schema, {
116
- * blocksByReport: query({
117
- * input: z.object({ reportId: z.string() }),
118
- * returns: 'block', // ← type-checked
119
- * }),
120
- * });
121
- * ```
122
- */
123
- export function defineQueries(schema, queries) {
124
- // Rebuild the queries record with `name` populated per entry. Same
125
- // shallow-spread strategy `defineSchema` uses for `typename` / `persist`
126
- // defaults — preserves input references, avoids mutating `readonly`
127
- // fields in place, and keeps each resolved `QueryDef` immutable from
128
- // construction onward.
129
- const resolvedQueries = {};
130
- for (const [name, def] of Object.entries(queries)) {
131
- if (!(def.returns in schema.models)) {
132
- throw new AbloValidationError(`defineQueries: query "${name}" declares returns: "${def.returns}", ` +
133
- `which is not a model in the schema. ` +
134
- `Available models: ${Object.keys(schema.models).join(', ') || '(none)'}`, { code: 'query_returns_unknown_model' });
135
- }
136
- resolvedQueries[name] = { ...def, name };
137
- }
138
- return {
139
- schema,
140
- // Cast back to Q: the rebuild only added `name` (already optional on
141
- // QueryDef) to each entry, so the shape is structurally unchanged.
142
- queries: resolvedQueries,
143
- };
144
- }
@@ -1,40 +0,0 @@
1
- /**
2
- * `selectModels` projects a schema down to a subset of its models.
3
- *
4
- * It lets one canonical schema serve several apps, each subscribing only to the
5
- * models it needs. Rather than re-declare a model's fields in a second schema —
6
- * which you would then have to keep identical by hand — an app selects the
7
- * models it wants from the canonical schema. Field shapes, resolved foreign-key
8
- * columns, computed getters, typenames, and identity roles all come from the
9
- * source, so a subset cannot drift from the canonical definition.
10
- *
11
- * ```ts
12
- * import { schema as full } from './schema';
13
- * import { selectModels } from '@abloatai/ablo/schema';
14
- *
15
- * // Subscribe to identity and document content only.
16
- * export const schema = selectModels(full, ['users', 'organizations', 'workspaces', 'folders', 'files']);
17
- * ```
18
- *
19
- * Relations whose target falls outside the selected set are dropped, so the
20
- * subset sees only its own models. Dropping a relation that carries `parent`
21
- * scope-inheritance throws instead, because silently losing it would mis-route
22
- * a record's fan-out — the selected set must be closed under `parent` edges.
23
- */
24
- import type { Schema, SchemaRecord } from '../transaction/schema/schema.js';
25
- export declare function selectModels<S extends SchemaRecord, K extends keyof S & string>(schema: Schema<S>, keys: readonly K[]): Schema<Pick<S, K>>;
26
- /**
27
- * `omitModels` is `selectModels` from the other side: keep every model EXCEPT
28
- * the named ones. Use it when an app is the general case and a separate app
29
- * owns the omitted models — the suite shell drops a specialized store that the
30
- * standalone app selects for itself:
31
- *
32
- * ```ts
33
- * export const schema = omitModels(full, ['reports', 'reportSections']);
34
- * ```
35
- *
36
- * Same validation as `selectModels`: relations into the omitted set are
37
- * dropped, and a dropped `parent` edge throws — so a model whose scope routes
38
- * through an omitted parent cannot be silently kept.
39
- */
40
- export declare function omitModels<S extends SchemaRecord, K extends keyof S & string>(schema: Schema<S>, keys: readonly K[]): Schema<Omit<S, K>>;
@@ -1,90 +0,0 @@
1
- /**
2
- * `selectModels` projects a schema down to a subset of its models.
3
- *
4
- * It lets one canonical schema serve several apps, each subscribing only to the
5
- * models it needs. Rather than re-declare a model's fields in a second schema —
6
- * which you would then have to keep identical by hand — an app selects the
7
- * models it wants from the canonical schema. Field shapes, resolved foreign-key
8
- * columns, computed getters, typenames, and identity roles all come from the
9
- * source, so a subset cannot drift from the canonical definition.
10
- *
11
- * ```ts
12
- * import { schema as full } from './schema';
13
- * import { selectModels } from '@abloatai/ablo/schema';
14
- *
15
- * // Subscribe to identity and document content only.
16
- * export const schema = selectModels(full, ['users', 'organizations', 'workspaces', 'folders', 'files']);
17
- * ```
18
- *
19
- * Relations whose target falls outside the selected set are dropped, so the
20
- * subset sees only its own models. Dropping a relation that carries `parent`
21
- * scope-inheritance throws instead, because silently losing it would mis-route
22
- * a record's fan-out — the selected set must be closed under `parent` edges.
23
- */
24
- import { buildFieldRefs } from '../transaction/schema/schema.js';
25
- import { AbloValidationError } from '../transaction/errors.js';
26
- import { schemaHash } from './serialize.js';
27
- export function selectModels(schema, keys) {
28
- const keep = new Set(keys);
29
- const models = {};
30
- const validators = {};
31
- for (const key of keys) {
32
- const def = schema.models[key];
33
- if (!def) {
34
- throw new AbloValidationError(`selectModels: "${key}" is not a model in the source schema`, { code: 'invalid_schema', param: key });
35
- }
36
- // Prune relations whose target isn't in the selected set. A pruned
37
- // `parent` edge is a routing error, not a silent drop.
38
- const relations = {};
39
- for (const [relName, rel] of Object.entries(def.relations)) {
40
- if (keep.has(rel.target)) {
41
- relations[relName] = rel;
42
- continue;
43
- }
44
- if (rel.options?.parent) {
45
- throw new AbloValidationError(`selectModels: model "${key}" has a parent relation "${relName}" → "${rel.target}", ` +
46
- `which is not in the selected set. Include "${rel.target}" so scope inheritance still routes.`, { code: 'invalid_schema', param: `${key}.${relName}` });
47
- }
48
- }
49
- models[key] = { ...def, relations };
50
- validators[key] = schema.validators[key];
51
- }
52
- return {
53
- models: models,
54
- // References for exactly the models this projection kept.
55
- fields: buildFieldRefs(models),
56
- validators: validators,
57
- identityRoles: schema.identityRoles,
58
- sessionSettings: schema.sessionSettings,
59
- // Record the full source's hash so the drift check can recognize this subset
60
- // as current against a server running that full schema. Prefer the source's
61
- // OWN `sourceSchemaHash` when it is itself a projection, so a subset-of-a-
62
- // subset still points at the original full schema rather than an intermediate
63
- // one. `schemaHash` ignores this field, so re-projecting stays deterministic.
64
- sourceSchemaHash: schema.sourceSchemaHash ?? schemaHash(schema),
65
- };
66
- }
67
- /**
68
- * `omitModels` is `selectModels` from the other side: keep every model EXCEPT
69
- * the named ones. Use it when an app is the general case and a separate app
70
- * owns the omitted models — the suite shell drops a specialized store that the
71
- * standalone app selects for itself:
72
- *
73
- * ```ts
74
- * export const schema = omitModels(full, ['reports', 'reportSections']);
75
- * ```
76
- *
77
- * Same validation as `selectModels`: relations into the omitted set are
78
- * dropped, and a dropped `parent` edge throws — so a model whose scope routes
79
- * through an omitted parent cannot be silently kept.
80
- */
81
- export function omitModels(schema, keys) {
82
- const drop = new Set(keys);
83
- for (const key of keys) {
84
- if (!schema.models[key]) {
85
- throw new AbloValidationError(`omitModels: "${key}" is not a model in the source schema`, { code: 'invalid_schema', param: key });
86
- }
87
- }
88
- const kept = Object.keys(schema.models).filter((k) => !drop.has(k));
89
- return selectModels(schema, kept);
90
- }
@@ -1,115 +0,0 @@
1
- /**
2
- * Schema ⇄ JSON.
3
- *
4
- * A `Schema` is fully serializable apart from its client-only closures — the
5
- * Zod validators and computed getters. {@link serializeSchema} emits the
6
- * plain-data JSON form and {@link parseSchema} reconstructs a working `Schema`
7
- * from it: one `Schema` type with two representations.
8
- *
9
- * A hosted, multi-tenant server loads a tenant's schema with `parseSchema(json)`
10
- * rather than importing it in process. The JSON is what `ablo push` sends and
11
- * what the server stores per tenant and version.
12
- *
13
- * What round-trips:
14
- * - all model routing and scoping metadata: typename, tableName, load,
15
- * mutable, the `tenancy` descriptor, bootstrap hints, scope, grants,
16
- * entityRoles, the `conflict` disposition map, persist, autoFill,
17
- * requiredFields, and lazyObservable. The authoring shorthands (`policy`
18
- * and `groups`) are normalized into these canonical fields when the model
19
- * is built, so only the canonical fields cross here.
20
- * - relations, including the resolved `foreignKeyColumn`
21
- * - field metadata (names and type tags), from which validators are rebuilt
22
- * - identity roles
23
- *
24
- * What does not round-trip, because the server never needs it:
25
- * - computed getters, which are closures and are dropped
26
- * - exact Zod refinements, which are rebuilt as permissive validators from
27
- * {@link FieldMeta}; the server does no field-shape validation
28
- */
29
- import type { FieldMeta } from '../transaction/schema/field.js';
30
- import type { Tenancy } from '../transaction/schema/tenancy.js';
31
- import type { ModelResidency } from '../transaction/schema/residency.js';
32
- import type { GrantsRef, LoadStrategy, PersistOptions, AutoFillRule, ConflictAxis } from '../transaction/schema/model.js';
33
- import type { RelationType } from '../transaction/schema/relation.js';
34
- import { type Schema, type IdentityRole, type EntityRole, type SessionSettings } from '../transaction/schema/schema.js';
35
- /** Current schema-JSON envelope version. Bump this on a breaking change to the
36
- * JSON shape itself — not to a user's schema. */
37
- declare const SCHEMA_JSON_VERSION: 3;
38
- /** A relation in JSON form. Mirrors the serializable members of {@link RelationDef}. */
39
- export interface RelationJSON {
40
- readonly type: RelationType;
41
- readonly target: string;
42
- readonly foreignKey: string;
43
- readonly foreignKeyColumn: string;
44
- readonly options?: Record<string, boolean>;
45
- readonly orderBy?: string;
46
- }
47
- /** A model in JSON form. Everything on {@link ModelDef} except closures. */
48
- export interface ModelJSON {
49
- readonly fields: Record<string, FieldMeta>;
50
- readonly relations: Record<string, RelationJSON>;
51
- readonly load: LoadStrategy;
52
- readonly typename: string;
53
- readonly tableName?: string;
54
- readonly tenancy: Tenancy;
55
- /** The database plane the model's rows live in. Optional for backward
56
- * compatibility: when absent (an artifact written before this field existed)
57
- * it reads as `tenant`, the default. See {@link ModelResidency}. */
58
- readonly plane?: ModelResidency;
59
- readonly scope?: boolean | string;
60
- readonly grants?: GrantsRef;
61
- readonly entityRoles?: readonly EntityRole[];
62
- /** The declared write-conflict disposition per committer kind. When absent,
63
- * the engine falls back to its default. */
64
- readonly conflict?: ConflictAxis;
65
- readonly bootstrapLimit?: number;
66
- readonly bootstrapOrderBy?: string;
67
- readonly mutable?: boolean;
68
- readonly lazyObservable?: boolean;
69
- readonly persist?: PersistOptions;
70
- readonly autoFill?: readonly AutoFillRule[];
71
- readonly requiredFields?: readonly string[];
72
- }
73
- /** The JSON form of a {@link Schema}. The `ablo push` payload. */
74
- export interface SchemaJSON {
75
- readonly v: typeof SCHEMA_JSON_VERSION;
76
- readonly models: Record<string, ModelJSON>;
77
- readonly identityRoles: readonly IdentityRole[];
78
- /** Optional so schemas pushed before ADR 0011 still parse (defaults to `{}`). */
79
- readonly sessionSettings?: SessionSettings;
80
- }
81
- /**
82
- * Project a `Schema` to its JSON form. Drops the client-only closures
83
- * (validators, `computed`); keeps everything the server and a faithful
84
- * rebuild need. The result is plain data — `JSON.stringify`-safe.
85
- */
86
- export declare function toSchemaJSON(schema: Schema): SchemaJSON;
87
- /** Serialize a `Schema` to a JSON string (the `ablo push` payload). */
88
- export declare function serializeSchema(schema: Schema): string;
89
- /**
90
- * Reconstruct a working `Schema` from its JSON form. Validators are rebuilt
91
- * permissively from field metadata (the server never validates field shapes);
92
- * `computed` getters are absent. Everything the server reads — routing,
93
- * scoping, relations, identity roles — is restored exactly.
94
- */
95
- export declare function fromSchemaJSON(json: SchemaJSON): Schema;
96
- /** Parse a `Schema` from a JSON string (inverse of {@link serializeSchema}). */
97
- export declare function parseSchema(json: string): Schema;
98
- /**
99
- * Stable content hash of a `Schema`'s JSON form. FNV-1a over a canonical
100
- * (sorted-key) encoding — deterministic across runs and order-invariant, no
101
- * `crypto` dependency. Used for connect-time version gating: the client sends
102
- * the hash it was built against, the server compares it to the tenant's
103
- * active schema hash. Not a security primitive.
104
- */
105
- export declare function schemaHash(schema: Schema): string;
106
- /**
107
- * Content hash of ONE serialized model — the unit of the semantic drift check.
108
- * Two schemas agree on a model exactly when these match, which is what lets a
109
- * client compare only the models it declares instead of welding itself to the
110
- * whole-schema hash (where any additive push reads as drift). Computed over the
111
- * model's `SchemaJSON` entry with the same canonicalization and hash as
112
- * {@link schemaHash}, on both the client and the server's `GET /api/schema`.
113
- */
114
- export declare function modelHash(modelJson: unknown): string;
115
- export {};