@sixb/core 0.1.11 → 0.1.12

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 (641) hide show
  1. package/dist/actions/builders/params.d.ts +1 -22
  2. package/dist/actions/builders/params.d.ts.map +1 -1
  3. package/dist/actions/index.js +29 -28
  4. package/dist/actions/index.js.map +1 -1
  5. package/dist/actions/types/params.d.ts +10 -44
  6. package/dist/actions/types/params.d.ts.map +1 -1
  7. package/dist/actions/validation.d.ts.map +1 -1
  8. package/dist/actions/worker.js +3 -2
  9. package/dist/actions/worker.js.map +2 -2
  10. package/dist/agents/errors.d.ts +1 -1
  11. package/dist/agents/errors.d.ts.map +1 -1
  12. package/dist/agents/execution.d.ts +15 -9
  13. package/dist/agents/execution.d.ts.map +1 -1
  14. package/dist/agents/ids.d.ts +2 -0
  15. package/dist/agents/ids.d.ts.map +1 -1
  16. package/dist/agents/index.d.ts +1 -1
  17. package/dist/agents/index.d.ts.map +1 -1
  18. package/dist/agents/index.js +48 -42
  19. package/dist/agents/index.js.map +1 -1
  20. package/dist/agents/request.d.ts.map +1 -1
  21. package/dist/agents/sandbox.d.ts +5 -0
  22. package/dist/agents/sandbox.d.ts.map +1 -0
  23. package/dist/agents/streams/index.js +4 -3
  24. package/dist/agents/streams/index.js.map +1 -1
  25. package/dist/agents/streams/internal.js +4 -3
  26. package/dist/agents/streams/internal.js.map +1 -1
  27. package/dist/agents/validation.d.ts.map +1 -1
  28. package/dist/auth/index.js +8 -6
  29. package/dist/auth/index.js.map +1 -1
  30. package/dist/authorization/index.js +5 -4
  31. package/dist/authorization/index.js.map +1 -1
  32. package/dist/bootstrap/index.js +50 -46
  33. package/dist/bootstrap/index.js.map +1 -1
  34. package/dist/{chunk-17kfctj6.js → chunk-0mza4xb2.js} +2 -2
  35. package/dist/{chunk-g00bfdq6.js → chunk-2cxv584m.js} +12 -56
  36. package/dist/{chunk-g00bfdq6.js.map → chunk-2cxv584m.js.map} +3 -3
  37. package/dist/{chunk-jsy70480.js → chunk-2h63nrde.js} +365 -95
  38. package/dist/chunk-2h63nrde.js.map +20 -0
  39. package/dist/{chunk-1yefycb1.js → chunk-3bnt2wna.js} +2 -2
  40. package/dist/{chunk-awbhdqyc.js → chunk-3ghw2t5q.js} +1 -1
  41. package/dist/{chunk-b19g04jk.js → chunk-3h7ctayx.js} +1 -1
  42. package/dist/{chunk-wjasrj67.js → chunk-3qpcrcj8.js} +1 -1
  43. package/dist/{chunk-5hz0fnca.js → chunk-4k53sm9e.js} +6 -2
  44. package/dist/chunk-4k53sm9e.js.map +12 -0
  45. package/dist/chunk-4ph94nhd.js +81 -0
  46. package/dist/chunk-4ph94nhd.js.map +10 -0
  47. package/dist/chunk-58geavnf.js +29 -0
  48. package/dist/chunk-58geavnf.js.map +10 -0
  49. package/dist/{chunk-0y39rgsb.js → chunk-5tetw4hn.js} +1 -1
  50. package/dist/{chunk-7bs40fe1.js → chunk-69266efg.js} +83 -2
  51. package/dist/chunk-69266efg.js.map +12 -0
  52. package/dist/{chunk-a0e6x5hd.js → chunk-6ma8dvzc.js} +121 -53
  53. package/dist/chunk-6ma8dvzc.js.map +15 -0
  54. package/dist/{chunk-skz0hst3.js → chunk-7c2g3sz9.js} +6 -86
  55. package/dist/{chunk-skz0hst3.js.map → chunk-7c2g3sz9.js.map} +3 -3
  56. package/dist/{chunk-z0s4axeh.js → chunk-7qnvhtcd.js} +93 -17
  57. package/dist/{chunk-z0s4axeh.js.map → chunk-7qnvhtcd.js.map} +7 -6
  58. package/dist/{chunk-c5rkjrgp.js → chunk-7ytf06d3.js} +1 -1
  59. package/dist/{chunk-mrp7k0pw.js → chunk-91kcnbf0.js} +9 -14
  60. package/dist/chunk-91kcnbf0.js.map +10 -0
  61. package/dist/{chunk-yv79ncbv.js → chunk-96yw3pwd.js} +3 -3
  62. package/dist/chunk-96yw3pwd.js.map +10 -0
  63. package/dist/chunk-98cw09sw.js.map +2 -2
  64. package/dist/{chunk-93csa55g.js → chunk-axndsymr.js} +10 -4
  65. package/dist/chunk-axndsymr.js.map +11 -0
  66. package/dist/{chunk-4zhmdsx6.js → chunk-b768c93y.js} +61 -23
  67. package/dist/{chunk-4zhmdsx6.js.map → chunk-b768c93y.js.map} +5 -5
  68. package/dist/{chunk-dz5h08xv.js → chunk-bbaa1fet.js} +24 -9
  69. package/dist/{chunk-dz5h08xv.js.map → chunk-bbaa1fet.js.map} +4 -4
  70. package/dist/{chunk-7apz6hg4.js → chunk-bet1rb9h.js} +8 -4
  71. package/dist/chunk-bet1rb9h.js.map +10 -0
  72. package/dist/{chunk-358caqf5.js → chunk-bfjv1adk.js} +2 -2
  73. package/dist/{chunk-g91qxjj0.js → chunk-bg2bs62d.js} +5 -5
  74. package/dist/{chunk-860dwwy0.js → chunk-cd234ba4.js} +22 -12
  75. package/dist/chunk-cd234ba4.js.map +14 -0
  76. package/dist/chunk-dmn70ztd.js.map +2 -2
  77. package/dist/{chunk-d63nnr5b.js → chunk-e1f1sqba.js} +39 -53
  78. package/dist/{chunk-d63nnr5b.js.map → chunk-e1f1sqba.js.map} +5 -6
  79. package/dist/{chunk-ap0g1g74.js → chunk-eyjzgav0.js} +39 -4
  80. package/dist/chunk-eyjzgav0.js.map +12 -0
  81. package/dist/{chunk-rb1xx120.js → chunk-f06sf7rr.js} +9 -5
  82. package/dist/chunk-f06sf7rr.js.map +11 -0
  83. package/dist/{chunk-g6cke204.js → chunk-f85hpqnm.js} +1 -1
  84. package/dist/{chunk-vsj3mdfj.js → chunk-fc5zfxy1.js} +1 -1
  85. package/dist/{chunk-38zv5rkr.js → chunk-g2gezsg5.js} +1 -1
  86. package/dist/{chunk-38zv5rkr.js.map → chunk-g2gezsg5.js.map} +2 -2
  87. package/dist/{chunk-01kj2pbh.js → chunk-g50nxqs5.js} +53 -66
  88. package/dist/chunk-g50nxqs5.js.map +18 -0
  89. package/dist/{chunk-1824gssz.js → chunk-gswwr35f.js} +4 -4
  90. package/dist/{chunk-92vk7gta.js → chunk-gzt6v1ja.js} +1 -1
  91. package/dist/{chunk-aa6z4a19.js → chunk-hgqpcmyr.js} +2 -1
  92. package/dist/chunk-hgqpcmyr.js.map +12 -0
  93. package/dist/{chunk-gqh45d2n.js → chunk-hkw8rykk.js} +2 -2
  94. package/dist/{chunk-f4w3yp4f.js → chunk-hzw7yv5g.js} +104 -21
  95. package/dist/chunk-hzw7yv5g.js.map +13 -0
  96. package/dist/{chunk-cfvakeax.js → chunk-jjwhy3rs.js} +5 -5
  97. package/dist/chunk-kept9cdd.js +29 -0
  98. package/dist/chunk-kept9cdd.js.map +10 -0
  99. package/dist/{chunk-ftv470j8.js → chunk-m7cx05vp.js} +247 -16
  100. package/dist/{chunk-ftv470j8.js.map → chunk-m7cx05vp.js.map} +14 -10
  101. package/dist/{chunk-z0271qkp.js → chunk-mdnw7nj8.js} +8 -6
  102. package/dist/chunk-mdnw7nj8.js.map +15 -0
  103. package/dist/{chunk-gq8vhakp.js → chunk-nzsy3xrp.js} +249 -86
  104. package/dist/{chunk-gq8vhakp.js.map → chunk-nzsy3xrp.js.map} +13 -11
  105. package/dist/chunk-p1683c0v.js +104 -0
  106. package/dist/chunk-p1683c0v.js.map +11 -0
  107. package/dist/chunk-p6r1ex7t.js +93 -0
  108. package/dist/chunk-p6r1ex7t.js.map +10 -0
  109. package/dist/{chunk-sepyxgpc.js → chunk-qm535afa.js} +10 -10
  110. package/dist/{chunk-sepyxgpc.js.map → chunk-qm535afa.js.map} +4 -4
  111. package/dist/chunk-r5zythxp.js +552 -0
  112. package/dist/chunk-r5zythxp.js.map +17 -0
  113. package/dist/{chunk-9qsh3p5y.js → chunk-rb143ggb.js} +1 -1
  114. package/dist/{chunk-653vwrzr.js → chunk-rdghfsss.js} +1 -1
  115. package/dist/{chunk-3ckk0xfj.js → chunk-sfypc7mk.js} +18 -13
  116. package/dist/{chunk-3ckk0xfj.js.map → chunk-sfypc7mk.js.map} +3 -3
  117. package/dist/{chunk-f0rwz2vh.js → chunk-t6f3tdnr.js} +2 -54
  118. package/dist/chunk-t6f3tdnr.js.map +10 -0
  119. package/dist/{chunk-x9m9x2eq.js → chunk-t7dzd1tm.js} +3 -3
  120. package/dist/{chunk-pr2h4bv4.js → chunk-tg4g4zh0.js} +3 -3
  121. package/dist/chunk-vpxss818.js +56 -0
  122. package/dist/chunk-vpxss818.js.map +10 -0
  123. package/dist/{chunk-ms2tmn1k.js → chunk-vsg0g7h9.js} +53 -57
  124. package/dist/chunk-vsg0g7h9.js.map +17 -0
  125. package/dist/{chunk-8vj0rjgs.js → chunk-wjffn5m4.js} +1 -1
  126. package/dist/{chunk-wf88w4kp.js → chunk-x9tmx3fc.js} +2 -2
  127. package/dist/{chunk-fh8kgex1.js → chunk-xn686q2e.js} +8 -8
  128. package/dist/{chunk-g53f0e4j.js → chunk-xnx96gfy.js} +45 -17
  129. package/dist/{chunk-g53f0e4j.js.map → chunk-xnx96gfy.js.map} +3 -3
  130. package/dist/{chunk-v2vcg0w6.js → chunk-xtfryrfb.js} +2 -2
  131. package/dist/chunk-y0v18c2j.js +363 -0
  132. package/dist/chunk-y0v18c2j.js.map +14 -0
  133. package/dist/{chunk-72w2pxk7.js → chunk-y1ahv8b7.js} +11 -3
  134. package/dist/{chunk-72w2pxk7.js.map → chunk-y1ahv8b7.js.map} +3 -3
  135. package/dist/chunk-y3ev53cq.js +84 -0
  136. package/dist/chunk-y3ev53cq.js.map +10 -0
  137. package/dist/{chunk-gqm76kse.js → chunk-ybhz3j9g.js} +342 -41
  138. package/dist/{chunk-gqm76kse.js.map → chunk-ybhz3j9g.js.map} +17 -12
  139. package/dist/{chunk-z30bv4ga.js → chunk-yxb4c62x.js} +3 -2
  140. package/dist/{chunk-z30bv4ga.js.map → chunk-yxb4c62x.js.map} +3 -3
  141. package/dist/chunk-z3y5kg1x.js +14 -0
  142. package/dist/chunk-z3y5kg1x.js.map +10 -0
  143. package/dist/datasets/validation.d.ts +4 -0
  144. package/dist/datasets/validation.d.ts.map +1 -1
  145. package/dist/datasets/write.d.ts.map +1 -1
  146. package/dist/datasets/write.js +5 -4
  147. package/dist/datasets/write.js.map +1 -1
  148. package/dist/error-reporting/capability.d.ts +3 -2
  149. package/dist/error-reporting/capability.d.ts.map +1 -1
  150. package/dist/error-reporting/internal.js +5 -4
  151. package/dist/error-reporting/internal.js.map +1 -1
  152. package/dist/error-reporting/reports.d.ts +10 -0
  153. package/dist/error-reporting/reports.d.ts.map +1 -1
  154. package/dist/error-reporting/types.d.ts +10 -2
  155. package/dist/error-reporting/types.d.ts.map +1 -1
  156. package/dist/errors/catalog.d.ts +12 -0
  157. package/dist/errors/catalog.d.ts.map +1 -1
  158. package/dist/errors/failure-message.d.ts +8 -0
  159. package/dist/errors/failure-message.d.ts.map +1 -0
  160. package/dist/errors/internal.d.ts.map +1 -1
  161. package/dist/errors/internal.js +3 -2
  162. package/dist/errors/internal.js.map +1 -1
  163. package/dist/events/index.js +5 -4
  164. package/dist/events/index.js.map +1 -1
  165. package/dist/execution/agent.js +44 -41
  166. package/dist/execution/agent.js.map +1 -1
  167. package/dist/execution/authorization.d.ts.map +1 -1
  168. package/dist/execution/authorized-object-reader.d.ts +3 -0
  169. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  170. package/dist/execution/kernel-operation.d.ts +4 -0
  171. package/dist/execution/kernel-operation.d.ts.map +1 -0
  172. package/dist/execution/primitive.js +44 -41
  173. package/dist/execution/primitive.js.map +2 -2
  174. package/dist/execution/request.js +45 -42
  175. package/dist/execution/request.js.map +2 -2
  176. package/dist/execution/types.d.ts +6 -0
  177. package/dist/execution/types.d.ts.map +1 -1
  178. package/dist/index.d.ts +15 -5
  179. package/dist/index.d.ts.map +1 -1
  180. package/dist/index.js +68 -59
  181. package/dist/index.js.map +1 -1
  182. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  183. package/dist/lake-storage/index.js +5 -4
  184. package/dist/lake-storage/index.js.map +1 -1
  185. package/dist/materialization/errors.d.ts +1 -1
  186. package/dist/materialization/errors.d.ts.map +1 -1
  187. package/dist/materialization/index.d.ts +1 -0
  188. package/dist/materialization/index.d.ts.map +1 -1
  189. package/dist/materialization/index.js +3 -3
  190. package/dist/materialization/model.d.ts +2 -0
  191. package/dist/materialization/model.d.ts.map +1 -1
  192. package/dist/materialization/vectors.d.ts +19 -0
  193. package/dist/materialization/vectors.d.ts.map +1 -0
  194. package/dist/materializer/context.d.ts.map +1 -1
  195. package/dist/materializer/edits/commit.d.ts.map +1 -1
  196. package/dist/materializer/edits/vector-authority.d.ts +6 -0
  197. package/dist/materializer/edits/vector-authority.d.ts.map +1 -0
  198. package/dist/materializer/edits/vectors.d.ts +6 -0
  199. package/dist/materializer/edits/vectors.d.ts.map +1 -0
  200. package/dist/materializer/effective/validate.d.ts.map +1 -1
  201. package/dist/materializer/effective/vector-indexing.d.ts +7 -0
  202. package/dist/materializer/effective/vector-indexing.d.ts.map +1 -0
  203. package/dist/materializer/effective/vectors.d.ts +6 -0
  204. package/dist/materializer/effective/vectors.d.ts.map +1 -0
  205. package/dist/materializer/execution/work-executor.d.ts +2 -1
  206. package/dist/materializer/execution/work-executor.d.ts.map +1 -1
  207. package/dist/materializer/index.js +26 -25
  208. package/dist/materializer/index.js.map +1 -1
  209. package/dist/materializer/shared/normalize.d.ts.map +1 -1
  210. package/dist/models/catalog-index.d.ts +15 -0
  211. package/dist/models/catalog-index.d.ts.map +1 -0
  212. package/dist/models/catalog.d.ts +27 -6
  213. package/dist/models/catalog.d.ts.map +1 -1
  214. package/dist/models/decision/catalog.d.ts +12 -0
  215. package/dist/models/decision/catalog.d.ts.map +1 -0
  216. package/dist/models/decision/errors.d.ts +7 -0
  217. package/dist/models/decision/errors.d.ts.map +1 -0
  218. package/dist/models/decision/output.d.ts +50 -0
  219. package/dist/models/decision/output.d.ts.map +1 -0
  220. package/dist/models/decision/questions.d.ts +14 -0
  221. package/dist/models/decision/questions.d.ts.map +1 -0
  222. package/dist/models/decision/runtime.d.ts +7 -0
  223. package/dist/models/decision/runtime.d.ts.map +1 -0
  224. package/dist/models/decision/types.d.ts +92 -0
  225. package/dist/models/decision/types.d.ts.map +1 -0
  226. package/dist/models/decision/validation.d.ts +7 -0
  227. package/dist/models/decision/validation.d.ts.map +1 -0
  228. package/dist/models/definitions.d.ts +1 -1
  229. package/dist/models/definitions.d.ts.map +1 -1
  230. package/dist/models/embedding-model.d.ts +60 -0
  231. package/dist/models/embedding-model.d.ts.map +1 -0
  232. package/dist/models/execution/binding.d.ts +2 -0
  233. package/dist/models/execution/binding.d.ts.map +1 -1
  234. package/dist/models/execution/embedding.d.ts +5 -0
  235. package/dist/models/execution/embedding.d.ts.map +1 -0
  236. package/dist/models/execution/index.js +29 -26
  237. package/dist/models/execution/index.js.map +1 -1
  238. package/dist/models/execution/model-call-recorder.d.ts +5 -1
  239. package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
  240. package/dist/models/execution/session.d.ts +21 -0
  241. package/dist/models/execution/session.d.ts.map +1 -0
  242. package/dist/models/execution.d.ts.map +1 -1
  243. package/dist/models/generation-types.d.ts +2 -0
  244. package/dist/models/generation-types.d.ts.map +1 -1
  245. package/dist/models/index.d.ts +9 -1
  246. package/dist/models/index.d.ts.map +1 -1
  247. package/dist/models/index.js +17 -7
  248. package/dist/models/index.js.map +1 -1
  249. package/dist/models/pricing.d.ts +3 -2
  250. package/dist/models/pricing.d.ts.map +1 -1
  251. package/dist/objects/authorized-ontology-view.d.ts.map +1 -1
  252. package/dist/objects/execution.d.ts +1 -0
  253. package/dist/objects/execution.d.ts.map +1 -1
  254. package/dist/objects/index.js +29 -28
  255. package/dist/objects/index.js.map +1 -1
  256. package/dist/objects/query/executor.d.ts +3 -0
  257. package/dist/objects/query/executor.d.ts.map +1 -1
  258. package/dist/objects/query/index.d.ts +2 -0
  259. package/dist/objects/query/index.d.ts.map +1 -1
  260. package/dist/objects/query/index.js +34 -24
  261. package/dist/objects/query/index.js.map +1 -1
  262. package/dist/objects/query/ir.d.ts +6 -2
  263. package/dist/objects/query/ir.d.ts.map +1 -1
  264. package/dist/objects/query/normalize.d.ts.map +1 -1
  265. package/dist/objects/query/validate.d.ts.map +1 -1
  266. package/dist/objects/sdk/object-handle.d.ts +5 -0
  267. package/dist/objects/sdk/object-handle.d.ts.map +1 -1
  268. package/dist/objects/sdk/object-set.d.ts.map +1 -1
  269. package/dist/objects/sdk/query-executor.d.ts +2 -0
  270. package/dist/objects/sdk/query-executor.d.ts.map +1 -1
  271. package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
  272. package/dist/objects/vectors/handle.d.ts +4 -0
  273. package/dist/objects/vectors/handle.d.ts.map +1 -0
  274. package/dist/objects/vectors/indexing-batch.d.ts +6 -0
  275. package/dist/objects/vectors/indexing-batch.d.ts.map +1 -0
  276. package/dist/objects/vectors/indexing-generate.d.ts +11 -0
  277. package/dist/objects/vectors/indexing-generate.d.ts.map +1 -0
  278. package/dist/objects/vectors/indexing-runtime.d.ts +7 -0
  279. package/dist/objects/vectors/indexing-runtime.d.ts.map +1 -0
  280. package/dist/objects/vectors/indexing-shared.d.ts +17 -0
  281. package/dist/objects/vectors/indexing-shared.d.ts.map +1 -0
  282. package/dist/objects/vectors/indexing-single.d.ts +4 -0
  283. package/dist/objects/vectors/indexing-single.d.ts.map +1 -0
  284. package/dist/objects/vectors/indexing-store-batch.d.ts +6 -0
  285. package/dist/objects/vectors/indexing-store-batch.d.ts.map +1 -0
  286. package/dist/objects/vectors/indexing.d.ts +7 -0
  287. package/dist/objects/vectors/indexing.d.ts.map +1 -0
  288. package/dist/objects/vectors/profile.d.ts +13 -0
  289. package/dist/objects/vectors/profile.d.ts.map +1 -0
  290. package/dist/objects/vectors/query.d.ts +5 -0
  291. package/dist/objects/vectors/query.d.ts.map +1 -0
  292. package/dist/objects/vectors/resolve-query.d.ts +6 -0
  293. package/dist/objects/vectors/resolve-query.d.ts.map +1 -0
  294. package/dist/objects/vectors/types.d.ts +11 -0
  295. package/dist/objects/vectors/types.d.ts.map +1 -0
  296. package/dist/ontology/index.d.ts +2 -1
  297. package/dist/ontology/index.d.ts.map +1 -1
  298. package/dist/ontology/index.js +5 -5
  299. package/dist/ontology/index.js.map +1 -1
  300. package/dist/ontology/internal.js +5 -4
  301. package/dist/ontology/internal.js.map +1 -1
  302. package/dist/ontology/registry.d.ts.map +1 -1
  303. package/dist/ontology/types.d.ts +8 -9
  304. package/dist/ontology/types.d.ts.map +1 -1
  305. package/dist/ontology/validation/definition.d.ts +3 -0
  306. package/dist/ontology/validation/definition.d.ts.map +1 -0
  307. package/dist/ontology/validation/properties.d.ts.map +1 -1
  308. package/dist/ontology/validation/query.d.ts.map +1 -1
  309. package/dist/ontology/validation/schema.d.ts +1 -1
  310. package/dist/ontology/validation/schema.d.ts.map +1 -1
  311. package/dist/ontology/vector-profiles.d.ts +4 -0
  312. package/dist/ontology/vector-profiles.d.ts.map +1 -0
  313. package/dist/pipelines/index.js +28 -27
  314. package/dist/pipelines/index.js.map +1 -1
  315. package/dist/projections/internal.js +24 -23
  316. package/dist/projections/internal.js.map +1 -1
  317. package/dist/query.js +2 -2
  318. package/dist/queues/in-memory.d.ts +2 -1
  319. package/dist/queues/in-memory.d.ts.map +1 -1
  320. package/dist/queues/index.d.ts +1 -1
  321. package/dist/queues/index.d.ts.map +1 -1
  322. package/dist/queues/index.js +1 -1
  323. package/dist/queues/types.d.ts +5 -0
  324. package/dist/queues/types.d.ts.map +1 -1
  325. package/dist/runtime/create.d.ts +4 -3
  326. package/dist/runtime/create.d.ts.map +1 -1
  327. package/dist/runtime/host.d.ts +9 -6
  328. package/dist/runtime/host.d.ts.map +1 -1
  329. package/dist/runtime/internal.d.ts +3 -0
  330. package/dist/runtime/internal.d.ts.map +1 -1
  331. package/dist/runtime/internal.js +47 -1
  332. package/dist/runtime/internal.js.map +1 -1
  333. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  334. package/dist/runtime/sixb.d.ts +9 -4
  335. package/dist/runtime/sixb.d.ts.map +1 -1
  336. package/dist/runtime/types.d.ts +15 -3
  337. package/dist/runtime/types.d.ts.map +1 -1
  338. package/dist/sandboxes/auth.d.ts +16 -0
  339. package/dist/sandboxes/auth.d.ts.map +1 -0
  340. package/dist/sandboxes/config.d.ts +5 -0
  341. package/dist/sandboxes/config.d.ts.map +1 -0
  342. package/dist/sandboxes/configuration.d.ts +41 -0
  343. package/dist/sandboxes/configuration.d.ts.map +1 -0
  344. package/dist/sandboxes/environment.d.ts +13 -0
  345. package/dist/sandboxes/environment.d.ts.map +1 -0
  346. package/dist/sandboxes/errors.d.ts +1 -1
  347. package/dist/sandboxes/errors.d.ts.map +1 -1
  348. package/dist/sandboxes/index.d.ts +6 -1
  349. package/dist/sandboxes/index.d.ts.map +1 -1
  350. package/dist/sandboxes/index.js +16 -3
  351. package/dist/sandboxes/index.js.map +1 -1
  352. package/dist/sandboxes/sandbox.d.ts +35 -3
  353. package/dist/sandboxes/sandbox.d.ts.map +1 -1
  354. package/dist/shared/params/builders.d.ts +25 -0
  355. package/dist/shared/params/builders.d.ts.map +1 -0
  356. package/dist/shared/params/types.d.ts +47 -0
  357. package/dist/shared/params/types.d.ts.map +1 -0
  358. package/dist/shared/params/validation.d.ts +15 -0
  359. package/dist/shared/params/validation.d.ts.map +1 -0
  360. package/dist/shares/internal.js +23 -22
  361. package/dist/shares/internal.js.map +2 -2
  362. package/dist/storage/action-runs/failure.js +4 -3
  363. package/dist/storage/action-runs/failure.js.map +1 -1
  364. package/dist/storage/action-runs/provider.js +1 -1
  365. package/dist/storage/agents/in-memory.d.ts +2 -1
  366. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  367. package/dist/storage/agents/index.d.ts +1 -1
  368. package/dist/storage/agents/index.d.ts.map +1 -1
  369. package/dist/storage/agents/provider.d.ts +5 -1
  370. package/dist/storage/agents/provider.d.ts.map +1 -1
  371. package/dist/storage/agents/provider.js +8 -4
  372. package/dist/storage/agents/provider.js.map +1 -1
  373. package/dist/storage/agents/types.d.ts +49 -0
  374. package/dist/storage/agents/types.d.ts.map +1 -1
  375. package/dist/storage/ai-cost/analytics.d.ts +1 -0
  376. package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
  377. package/dist/storage/ai-cost/index.d.ts +1 -1
  378. package/dist/storage/ai-cost/index.d.ts.map +1 -1
  379. package/dist/storage/ai-cost/provider.js +2 -2
  380. package/dist/storage/ai-cost/types.d.ts +14 -2
  381. package/dist/storage/ai-cost/types.d.ts.map +1 -1
  382. package/dist/storage/ai-limits/enforcement.js +4 -3
  383. package/dist/storage/ai-limits/enforcement.js.map +1 -1
  384. package/dist/storage/connector-connections/provider.js +3 -2
  385. package/dist/storage/connector-connections/provider.js.map +2 -2
  386. package/dist/storage/executions/provider.d.ts +3 -3
  387. package/dist/storage/executions/provider.d.ts.map +1 -1
  388. package/dist/storage/executions/provider.js +13 -11
  389. package/dist/storage/executions/provider.js.map +3 -3
  390. package/dist/storage/executions/types.d.ts +3 -0
  391. package/dist/storage/executions/types.d.ts.map +1 -1
  392. package/dist/storage/executions/validation.d.ts.map +1 -1
  393. package/dist/storage/index.d.ts +5 -3
  394. package/dist/storage/index.d.ts.map +1 -1
  395. package/dist/storage/index.js +25 -22
  396. package/dist/storage/index.js.map +1 -1
  397. package/dist/storage/internal.js +2 -2
  398. package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
  399. package/dist/storage/objects/in-memory/read-source.d.ts +5 -0
  400. package/dist/storage/objects/in-memory/read-source.d.ts.map +1 -1
  401. package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
  402. package/dist/storage/objects/in-memory/storage.d.ts +7 -0
  403. package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
  404. package/dist/storage/objects/types.d.ts +2 -0
  405. package/dist/storage/objects/types.d.ts.map +1 -1
  406. package/dist/storage/ontology/commits.d.ts +1 -0
  407. package/dist/storage/ontology/commits.d.ts.map +1 -1
  408. package/dist/storage/ontology/in-memory/index.d.ts +4 -0
  409. package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
  410. package/dist/storage/ontology/in-memory/materializations.d.ts +2 -0
  411. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
  412. package/dist/storage/ontology/in-memory/shared-state.d.ts +7 -0
  413. package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
  414. package/dist/storage/ontology/in-memory/vector-indexing.d.ts +44 -0
  415. package/dist/storage/ontology/in-memory/vector-indexing.d.ts.map +1 -0
  416. package/dist/storage/ontology/in-memory/vectors.d.ts +31 -0
  417. package/dist/storage/ontology/in-memory/vectors.d.ts.map +1 -0
  418. package/dist/storage/ontology/index.d.ts +6 -0
  419. package/dist/storage/ontology/index.d.ts.map +1 -1
  420. package/dist/storage/ontology/provider.js +2 -2
  421. package/dist/storage/ontology/vector-indexing.d.ts +94 -0
  422. package/dist/storage/ontology/vector-indexing.d.ts.map +1 -0
  423. package/dist/storage/ontology/vectors.d.ts +56 -0
  424. package/dist/storage/ontology/vectors.d.ts.map +1 -0
  425. package/dist/storage/operation-scope.d.ts.map +1 -1
  426. package/dist/storage/operation-scope.js +1 -1
  427. package/dist/storage/projection-runs/provider.js +4 -3
  428. package/dist/storage/projection-runs/provider.js.map +1 -1
  429. package/dist/storage/types.d.ts +1 -1
  430. package/dist/storage/types.d.ts.map +1 -1
  431. package/dist/storage/workflow-runs/provider.js +9 -7
  432. package/dist/storage/workflow-runs/provider.js.map +1 -1
  433. package/dist/syncs/index.js +29 -28
  434. package/dist/syncs/index.js.map +1 -1
  435. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  436. package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
  437. package/dist/testing/index.js +448 -69
  438. package/dist/testing/index.js.map +7 -7
  439. package/dist/testing/object-query-contract.d.ts.map +1 -1
  440. package/dist/testing/object-read-scope-contract.d.ts.map +1 -1
  441. package/dist/testing/queues-contract.d.ts.map +1 -1
  442. package/dist/webhooks/internal.js +24 -23
  443. package/dist/webhooks/internal.js.map +2 -2
  444. package/dist/workers/index.js +3 -2
  445. package/dist/workers/index.js.map +2 -2
  446. package/dist/workflows/failure.d.ts.map +1 -1
  447. package/dist/workflows/index.js +47 -43
  448. package/dist/workflows/index.js.map +1 -1
  449. package/package.json +1 -1
  450. package/src/actions/builders/params.ts +1 -48
  451. package/src/actions/types/params.ts +14 -74
  452. package/src/actions/validation.ts +7 -84
  453. package/src/agents/errors.ts +3 -0
  454. package/src/agents/execution.ts +67 -15
  455. package/src/agents/ids.ts +8 -0
  456. package/src/agents/index.ts +1 -0
  457. package/src/agents/request.ts +11 -0
  458. package/src/agents/sandbox.ts +44 -0
  459. package/src/agents/validation.ts +2 -108
  460. package/src/datasets/validation.ts +40 -11
  461. package/src/datasets/write.ts +8 -11
  462. package/src/error-reporting/capability.ts +11 -0
  463. package/src/error-reporting/reports.ts +23 -0
  464. package/src/error-reporting/types.ts +12 -1
  465. package/src/errors/catalog.ts +12 -0
  466. package/src/errors/failure-message.ts +15 -0
  467. package/src/errors/internal.ts +57 -25
  468. package/src/execution/authorization.ts +12 -5
  469. package/src/execution/authorized-object-reader.ts +37 -2
  470. package/src/execution/kernel-operation.ts +27 -0
  471. package/src/execution/scopes.ts +2 -0
  472. package/src/execution/types.ts +4 -4
  473. package/src/index.ts +60 -1
  474. package/src/lake-storage/in-memory.ts +5 -3
  475. package/src/materialization/errors.ts +2 -2
  476. package/src/materialization/index.ts +1 -0
  477. package/src/materialization/model.ts +2 -0
  478. package/src/materialization/vectors.ts +18 -0
  479. package/src/materializer/README.md +14 -0
  480. package/src/materializer/context.ts +10 -0
  481. package/src/materializer/edits/commit.ts +8 -1
  482. package/src/materializer/edits/vector-authority.ts +108 -0
  483. package/src/materializer/edits/vectors.ts +100 -0
  484. package/src/materializer/effective/validate.ts +10 -3
  485. package/src/materializer/effective/vector-indexing.ts +84 -0
  486. package/src/materializer/effective/vectors.ts +47 -0
  487. package/src/materializer/execution/work-executor.ts +11 -3
  488. package/src/materializer/projections/replace.ts +1 -1
  489. package/src/materializer/shared/normalize.ts +11 -0
  490. package/src/materializer/telemetry/append.ts +1 -1
  491. package/src/models/catalog-index.ts +38 -0
  492. package/src/models/catalog.ts +66 -38
  493. package/src/models/decision/catalog.ts +32 -0
  494. package/src/models/decision/errors.ts +18 -0
  495. package/src/models/decision/output.ts +101 -0
  496. package/src/models/decision/questions.ts +29 -0
  497. package/src/models/decision/runtime.ts +188 -0
  498. package/src/models/decision/types.ts +109 -0
  499. package/src/models/decision/validation.ts +335 -0
  500. package/src/models/definitions.ts +1 -1
  501. package/src/models/embedding-model.ts +129 -0
  502. package/src/models/execution/README.md +63 -0
  503. package/src/models/execution/binding.ts +2 -0
  504. package/src/models/execution/embedding.ts +133 -0
  505. package/src/models/execution/model-call-recorder.ts +42 -30
  506. package/src/models/execution/session.ts +81 -0
  507. package/src/models/execution.ts +10 -52
  508. package/src/models/generation-types.ts +2 -0
  509. package/src/models/index.ts +37 -0
  510. package/src/models/pricing.ts +1 -2
  511. package/src/objects/authorized-ontology-view.ts +12 -8
  512. package/src/objects/execution.ts +2 -0
  513. package/src/objects/query/executor.ts +13 -4
  514. package/src/objects/query/explain.ts +7 -2
  515. package/src/objects/query/index.ts +2 -0
  516. package/src/objects/query/ir.ts +6 -2
  517. package/src/objects/query/normalize.ts +5 -1
  518. package/src/objects/query/validate.ts +74 -73
  519. package/src/objects/sdk/object-handle.ts +3 -0
  520. package/src/objects/sdk/object-set.ts +1 -0
  521. package/src/objects/sdk/query-builder.ts +9 -3
  522. package/src/objects/sdk/query-executor.ts +2 -1
  523. package/src/objects/sdk/runtime-query-executor.ts +6 -2
  524. package/src/objects/vectors/README.md +59 -0
  525. package/src/objects/vectors/handle.ts +91 -0
  526. package/src/objects/vectors/indexing-batch.ts +163 -0
  527. package/src/objects/vectors/indexing-generate.ts +184 -0
  528. package/src/objects/vectors/indexing-runtime.ts +17 -0
  529. package/src/objects/vectors/indexing-shared.ts +188 -0
  530. package/src/objects/vectors/indexing-single.ts +51 -0
  531. package/src/objects/vectors/indexing-store-batch.ts +62 -0
  532. package/src/objects/vectors/indexing.ts +23 -0
  533. package/src/objects/vectors/profile.ts +64 -0
  534. package/src/objects/vectors/query.ts +16 -0
  535. package/src/objects/vectors/resolve-query.ts +89 -0
  536. package/src/objects/vectors/types.ts +10 -0
  537. package/src/ontology/index.ts +2 -0
  538. package/src/ontology/registry.ts +8 -0
  539. package/src/ontology/types.ts +9 -9
  540. package/src/ontology/validation/definition.ts +104 -0
  541. package/src/ontology/validation/properties.ts +14 -4
  542. package/src/ontology/validation/query.ts +34 -51
  543. package/src/ontology/validation/schema.ts +85 -23
  544. package/src/ontology/vector-profiles.ts +35 -0
  545. package/src/queues/in-memory.ts +5 -0
  546. package/src/queues/index.ts +1 -0
  547. package/src/queues/types.ts +10 -0
  548. package/src/runtime/create.ts +7 -6
  549. package/src/runtime/host.ts +42 -6
  550. package/src/runtime/internal.ts +3 -0
  551. package/src/runtime/resolve-definitions.ts +19 -1
  552. package/src/runtime/sixb.ts +27 -9
  553. package/src/runtime/types.ts +16 -4
  554. package/src/sandboxes/README.md +41 -0
  555. package/src/sandboxes/auth.ts +17 -0
  556. package/src/sandboxes/config.ts +37 -0
  557. package/src/sandboxes/configuration.ts +268 -0
  558. package/src/sandboxes/environment.ts +107 -0
  559. package/src/sandboxes/errors.ts +1 -1
  560. package/src/sandboxes/index.ts +15 -0
  561. package/src/sandboxes/sandbox.ts +38 -3
  562. package/src/shared/params/builders.ts +50 -0
  563. package/src/shared/params/types.ts +84 -0
  564. package/src/shared/params/validation.ts +114 -0
  565. package/src/storage/agents/in-memory.ts +25 -1
  566. package/src/storage/agents/index.ts +3 -0
  567. package/src/storage/agents/provider.ts +105 -0
  568. package/src/storage/agents/types.ts +54 -0
  569. package/src/storage/ai-cost/analytics.ts +59 -21
  570. package/src/storage/ai-cost/index.ts +1 -0
  571. package/src/storage/ai-cost/types.ts +19 -2
  572. package/src/storage/executions/provider.ts +24 -12
  573. package/src/storage/executions/types.ts +1 -0
  574. package/src/storage/executions/validation.ts +7 -3
  575. package/src/storage/index.ts +15 -1
  576. package/src/storage/objects/in-memory/query.ts +25 -11
  577. package/src/storage/objects/in-memory/read-scope.ts +9 -2
  578. package/src/storage/objects/in-memory/read-source.ts +5 -0
  579. package/src/storage/objects/in-memory/selected-reader.ts +5 -1
  580. package/src/storage/objects/in-memory/storage.ts +19 -1
  581. package/src/storage/objects/types.ts +2 -0
  582. package/src/storage/ontology/commits.ts +1 -0
  583. package/src/storage/ontology/in-memory/index.ts +20 -0
  584. package/src/storage/ontology/in-memory/materializations.ts +13 -0
  585. package/src/storage/ontology/in-memory/shared-state.ts +9 -0
  586. package/src/storage/ontology/in-memory/vector-indexing.ts +179 -0
  587. package/src/storage/ontology/in-memory/vectors.ts +73 -0
  588. package/src/storage/ontology/index.ts +14 -0
  589. package/src/storage/ontology/vector-indexing.ts +98 -0
  590. package/src/storage/ontology/vectors.ts +48 -0
  591. package/src/storage/operation-scope.ts +1 -0
  592. package/src/storage/types.ts +3 -0
  593. package/src/testing/agent-storage-contract.ts +246 -0
  594. package/src/testing/ai-cost-storage-contract.ts +134 -0
  595. package/src/testing/object-query-contract.ts +41 -25
  596. package/src/testing/object-read-scope-contract.ts +1 -5
  597. package/src/testing/queues-contract.ts +31 -0
  598. package/src/workflows/failure.ts +10 -4
  599. package/src/workflows/validation.ts +2 -2
  600. package/dist/chunk-01kj2pbh.js.map +0 -19
  601. package/dist/chunk-5hz0fnca.js.map +0 -12
  602. package/dist/chunk-7apz6hg4.js.map +0 -10
  603. package/dist/chunk-7bs40fe1.js.map +0 -12
  604. package/dist/chunk-860dwwy0.js.map +0 -14
  605. package/dist/chunk-93csa55g.js.map +0 -11
  606. package/dist/chunk-a0e6x5hd.js.map +0 -14
  607. package/dist/chunk-aa6z4a19.js.map +0 -12
  608. package/dist/chunk-ap0g1g74.js.map +0 -11
  609. package/dist/chunk-f0rwz2vh.js.map +0 -11
  610. package/dist/chunk-f4w3yp4f.js.map +0 -12
  611. package/dist/chunk-jsy70480.js.map +0 -15
  612. package/dist/chunk-mrp7k0pw.js.map +0 -10
  613. package/dist/chunk-ms2tmn1k.js.map +0 -17
  614. package/dist/chunk-rb1xx120.js.map +0 -11
  615. package/dist/chunk-yv79ncbv.js.map +0 -10
  616. package/dist/chunk-z0271qkp.js.map +0 -15
  617. package/dist/chunk-z3y411fq.js +0 -99
  618. package/dist/chunk-z3y411fq.js.map +0 -11
  619. /package/dist/{chunk-17kfctj6.js.map → chunk-0mza4xb2.js.map} +0 -0
  620. /package/dist/{chunk-1yefycb1.js.map → chunk-3bnt2wna.js.map} +0 -0
  621. /package/dist/{chunk-awbhdqyc.js.map → chunk-3ghw2t5q.js.map} +0 -0
  622. /package/dist/{chunk-b19g04jk.js.map → chunk-3h7ctayx.js.map} +0 -0
  623. /package/dist/{chunk-wjasrj67.js.map → chunk-3qpcrcj8.js.map} +0 -0
  624. /package/dist/{chunk-0y39rgsb.js.map → chunk-5tetw4hn.js.map} +0 -0
  625. /package/dist/{chunk-c5rkjrgp.js.map → chunk-7ytf06d3.js.map} +0 -0
  626. /package/dist/{chunk-358caqf5.js.map → chunk-bfjv1adk.js.map} +0 -0
  627. /package/dist/{chunk-g91qxjj0.js.map → chunk-bg2bs62d.js.map} +0 -0
  628. /package/dist/{chunk-g6cke204.js.map → chunk-f85hpqnm.js.map} +0 -0
  629. /package/dist/{chunk-vsj3mdfj.js.map → chunk-fc5zfxy1.js.map} +0 -0
  630. /package/dist/{chunk-1824gssz.js.map → chunk-gswwr35f.js.map} +0 -0
  631. /package/dist/{chunk-92vk7gta.js.map → chunk-gzt6v1ja.js.map} +0 -0
  632. /package/dist/{chunk-gqh45d2n.js.map → chunk-hkw8rykk.js.map} +0 -0
  633. /package/dist/{chunk-cfvakeax.js.map → chunk-jjwhy3rs.js.map} +0 -0
  634. /package/dist/{chunk-9qsh3p5y.js.map → chunk-rb143ggb.js.map} +0 -0
  635. /package/dist/{chunk-653vwrzr.js.map → chunk-rdghfsss.js.map} +0 -0
  636. /package/dist/{chunk-x9m9x2eq.js.map → chunk-t7dzd1tm.js.map} +0 -0
  637. /package/dist/{chunk-pr2h4bv4.js.map → chunk-tg4g4zh0.js.map} +0 -0
  638. /package/dist/{chunk-8vj0rjgs.js.map → chunk-wjffn5m4.js.map} +0 -0
  639. /package/dist/{chunk-wf88w4kp.js.map → chunk-x9tmx3fc.js.map} +0 -0
  640. /package/dist/{chunk-fh8kgex1.js.map → chunk-xn686q2e.js.map} +0 -0
  641. /package/dist/{chunk-v2vcg0w6.js.map → chunk-xtfryrfb.js.map} +0 -0
@@ -1,17 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/ontology/validation/schema.ts", "../src/ontology/validation/normalize.ts", "../src/ontology/validation/properties.ts", "../src/ontology/validation/links.ts", "../src/ontology/validation/query.ts", "../src/ontology/units/quantitative-types.ts", "../src/ontology/units/index.ts", "../src/ontology/validation/telemetry.ts"],
4
- "sourcesContent": [
5
- "import { isFileRef } from \"../../blob-storage/validation\"\nimport type { ObjectFieldSchema, Schema, ValueType, ValueTypeRefSchema } from \"..\"\nimport { isDecimalString } from \"../decimal\"\nimport { OntologyValidationError } from \"../errors\"\n\n/** Recursive schema validator used by both object and link property validation. */\nexport function validateSchemaValue(\n schema: Schema,\n value: unknown,\n path: string,\n valueTypesById: ReadonlyMap<string, ValueType>\n): void {\n if (typeof schema === \"string\") {\n switch (schema) {\n case \"string\":\n case \"uuid\": {\n if (typeof value !== \"string\") {\n throw new OntologyValidationError(`[Sixb] Property ${path} must be a string`)\n }\n return\n }\n case \"boolean\": {\n if (typeof value !== \"boolean\") {\n throw new OntologyValidationError(`[Sixb] Property ${path} must be a boolean`)\n }\n return\n }\n case \"integer\": {\n if (typeof value !== \"number\" || !Number.isInteger(value)) {\n throw new OntologyValidationError(`[Sixb] Property ${path} must be an integer`)\n }\n return\n }\n case \"double\": {\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n throw new OntologyValidationError(`[Sixb] Property ${path} must be numeric`)\n }\n return\n }\n case \"decimal\": {\n if (!isDecimalString(value)) {\n throw new OntologyValidationError(\n `[Sixb] Property ${path} must be an exact decimal string`\n )\n }\n return\n }\n case \"date\":\n case \"timestamp\": {\n if (!(value instanceof Date) && typeof value !== \"string\") {\n throw new OntologyValidationError(`[Sixb] Property ${path} must be a Date or ISO string`)\n }\n return\n }\n case \"fileRef\": {\n if (!isFileRef(value)) {\n throw new OntologyValidationError(`[Sixb] Property ${path} must be a fileRef`)\n }\n return\n }\n }\n }\n\n if (schema.type === \"enum\") {\n if (!schema.values.includes(value as never)) {\n throw new OntologyValidationError(\n `[Sixb] Property ${path} must be one of: ${schema.values.join(\", \")}`\n )\n }\n return\n }\n\n if (schema.type === \"array\") {\n if (!Array.isArray(value)) {\n throw new OntologyValidationError(`[Sixb] Property ${path} must be an array`)\n }\n for (let index = 0; index < value.length; index += 1) {\n validateSchemaValue(schema.items, value[index], `${path}[${index}]`, valueTypesById)\n }\n return\n }\n\n if (schema.type === \"map\") {\n if (!isRecord(value)) {\n throw new OntologyValidationError(`[Sixb] Property ${path} must be an object map`)\n }\n for (const [key, entry] of Object.entries(value)) {\n validateSchemaValue(schema.valueSchema, entry, `${path}.${key}`, valueTypesById)\n }\n return\n }\n\n if (schema.type === \"object\") {\n if (!isRecord(value)) {\n throw new OntologyValidationError(`[Sixb] Property ${path} must be an object`)\n }\n\n const fields = schema.properties\n const fieldIds = new Set(Object.keys(fields))\n for (const fieldId of Object.keys(value)) {\n if (!fieldIds.has(fieldId)) {\n throw new OntologyValidationError(`[Sixb] Unknown field '${path}.${fieldId}'`)\n }\n }\n\n for (const [fieldId, field] of Object.entries(fields)) {\n const fieldValue = value[fieldId]\n if (fieldValue === undefined) {\n if (field.required) {\n throw new OntologyValidationError(`[Sixb] Missing required field '${path}.${fieldId}'`)\n }\n continue\n }\n\n validateFieldValue(field, fieldValue, `${path}.${fieldId}`, valueTypesById)\n }\n return\n }\n\n if (schema.type === \"valueTypeRef\") {\n validateSchemaValue(\n resolveValueTypeSchema(schema, valueTypesById, path),\n value,\n path,\n valueTypesById\n )\n }\n}\n\nfunction validateFieldValue(\n field: ObjectFieldSchema,\n value: unknown,\n path: string,\n valueTypesById: ReadonlyMap<string, ValueType>\n): void {\n if (value === null) {\n if (field.nullable) {\n return\n }\n throw new OntologyValidationError(`[Sixb] Field ${path} cannot be null`)\n }\n\n validateSchemaValue(field.schema, value, path, valueTypesById)\n}\n\nexport function resolveValueTypeRef(schema: Schema): string | undefined {\n if (typeof schema === \"string\") {\n return undefined\n }\n\n if (schema.type === \"valueTypeRef\") {\n return schema.valueTypeId\n }\n\n return undefined\n}\n\nexport function resolveValueTypeSchema(\n schema: ValueTypeRefSchema,\n valueTypesById: ReadonlyMap<string, ValueType>,\n path: string\n): Schema {\n const resolved = schema._resolved ?? valueTypesById.get(schema.valueTypeId)?.schema\n if (!resolved) {\n throw new OntologyValidationError(\n `[Sixb] Unknown valueTypeRef '${schema.valueTypeId}' at ${path}`\n )\n }\n return resolved\n}\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n}\n",
6
- "import { assertJsonValue, cloneJsonValue, type JsonValue } from \"../../json\"\nimport type { ObjectFieldSchema, Property, Schema, ValueType } from \"..\"\nimport { normalizeDecimalValue } from \"../decimal\"\nimport { OntologyValidationError } from \"../errors\"\nimport { isRecord, resolveValueTypeSchema } from \"./schema\"\n\n/**\n * Normalize a property bag to JSON-safe values using each property's schema —\n * notably converting `Date` to an ISO string for `date`/`timestamp` props.\n * Unknown properties are skipped; `null` passes through unchanged.\n *\n * Shared by the object upsert and edit paths so both emit the same serializable\n * shape; the typed surface accepts `Date | string`, the wire stores strings.\n */\nexport function normalizeObjectProperties(\n definitions: readonly Property[],\n properties: Readonly<Record<string, unknown>>,\n valueTypesById: ReadonlyMap<string, ValueType>,\n path: string\n): Record<string, JsonValue> {\n const normalized: Record<string, JsonValue> = {}\n for (const [propertyId, value] of Object.entries(properties)) {\n const property = definitions.find((candidate) => candidate.id === propertyId)\n if (!property) continue\n normalized[propertyId] =\n value === null\n ? null\n : normalizeSchemaValue(property.schema, value, `${path}.${propertyId}`, valueTypesById)\n }\n return normalized\n}\n\nexport function normalizeSchemaValue(\n schema: Schema,\n value: unknown,\n path: string,\n valueTypesById: ReadonlyMap<string, ValueType>\n): JsonValue {\n if (typeof schema === \"string\") {\n switch (schema) {\n case \"date\":\n return normalizeDateValue(value, path)\n case \"timestamp\":\n return normalizeTimestampValue(value, path)\n case \"decimal\":\n return normalizeDecimal(value, path)\n default:\n assertJsonValue(value, path)\n return cloneJsonValue(value)\n }\n }\n\n if (schema.type === \"valueTypeRef\") {\n return normalizeSchemaValue(\n resolveValueTypeSchema(schema, valueTypesById, path),\n value,\n path,\n valueTypesById\n )\n }\n\n if (schema.type === \"enum\") {\n assertJsonValue(value, path)\n return cloneJsonValue(value)\n }\n\n if (schema.type === \"array\") {\n if (!Array.isArray(value)) {\n throw new OntologyValidationError(`[Sixb] Property ${path} must be an array`)\n }\n return (value as readonly unknown[]).map((entry, index) =>\n normalizeSchemaValue(schema.items, entry, `${path}[${index}]`, valueTypesById)\n )\n }\n\n if (schema.type === \"map\") {\n const record = assertPlainRecord(value, path)\n const entries = Object.entries(record).map(([key, entry]) => [\n key,\n normalizeSchemaValue(schema.valueSchema, entry, `${path}.${key}`, valueTypesById),\n ])\n return Object.fromEntries(entries)\n }\n\n const fields = schema.properties\n const record = assertPlainRecord(value, path)\n const entries: Array<[string, JsonValue]> = []\n for (const [fieldId, field] of Object.entries(fields)) {\n const fieldValue = record[fieldId]\n if (fieldValue === undefined) {\n continue\n }\n entries.push([\n fieldId,\n normalizeObjectFieldValue(field, fieldValue, `${path}.${fieldId}`, valueTypesById),\n ])\n }\n return Object.fromEntries(entries)\n}\n\nfunction normalizeObjectFieldValue(\n field: ObjectFieldSchema,\n value: unknown,\n path: string,\n valueTypesById: ReadonlyMap<string, ValueType>\n): JsonValue {\n if (value === null) {\n return null\n }\n\n return normalizeSchemaValue(field.schema, value, path, valueTypesById)\n}\n\nfunction assertPlainRecord(value: unknown, path: string): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new OntologyValidationError(`[Sixb] Property ${path} must be an object`)\n }\n return value as Record<string, unknown>\n}\n\nfunction normalizeDateValue(value: unknown, path: string): string {\n const date = normalizeDateLike(value, path)\n return date.toISOString().slice(0, 10)\n}\n\nfunction normalizeTimestampValue(value: unknown, path: string): string {\n return normalizeDateLike(value, path).toISOString()\n}\n\nfunction normalizeDecimal(value: unknown, path: string): string {\n if (typeof value !== \"string\") {\n throw new OntologyValidationError(`[Sixb] Property ${path} must be an exact decimal string`)\n }\n\n try {\n return normalizeDecimalValue(value)\n } catch {\n throw new OntologyValidationError(`[Sixb] Property ${path} must be an exact decimal string`)\n }\n}\n\nfunction normalizeDateLike(value: unknown, path: string): Date {\n const date = value instanceof Date ? value : new Date(String(value))\n if (Number.isNaN(date.getTime())) {\n throw new OntologyValidationError(`[Sixb] Property ${path} must be a valid date`)\n }\n return date\n}\n\n/**\n * Inverse of `normalizeSchemaValue` for the handler-facing surface: re-hydrate\n * `date`/`timestamp` values from their stored ISO string back into a `Date`, so\n * a handler receives the `Date` its types promise. Other scalars pass through;\n * arrays, maps, objects, and value-type refs recurse. The input is assumed to be\n * already validated/normalized JSON, so this is permissive and never throws.\n */\nexport function coerceSchemaValueToTyped(\n schema: Schema,\n value: unknown,\n valueTypesById: ReadonlyMap<string, ValueType>\n): unknown {\n if (value === null || value === undefined) {\n return value\n }\n\n if (typeof schema === \"string\") {\n if (schema === \"date\" || schema === \"timestamp\") {\n return value instanceof Date ? value : new Date(String(value))\n }\n return value\n }\n\n if (schema.type === \"valueTypeRef\") {\n return coerceSchemaValueToTyped(\n resolveValueTypeSchema(schema, valueTypesById, \"\"),\n value,\n valueTypesById\n )\n }\n\n if (schema.type === \"enum\") {\n return value\n }\n\n if (schema.type === \"array\") {\n if (!Array.isArray(value)) return value\n return (value as readonly unknown[]).map((entry) =>\n coerceSchemaValueToTyped(schema.items, entry, valueTypesById)\n )\n }\n\n if (schema.type === \"map\") {\n if (!isRecord(value)) return value\n return Object.fromEntries(\n Object.entries(value).map(([key, entry]) => [\n key,\n coerceSchemaValueToTyped(schema.valueSchema, entry, valueTypesById),\n ])\n )\n }\n\n if (!isRecord(value)) return value\n const output: Record<string, unknown> = { ...value }\n for (const [fieldId, field] of Object.entries(schema.properties)) {\n if (value[fieldId] === undefined) continue\n output[fieldId] = coerceSchemaValueToTyped(field.schema, value[fieldId], valueTypesById)\n }\n return output\n}\n",
7
- "import type { ObjectLink, ObjectType, Property, Schema, ValueType } from \"..\"\nimport { OntologyValidationError } from \"../errors\"\nimport type { LinkToken, ObjectTypeWithPropertyTokens, PropertyToken } from \"../tokens\"\nimport { validateSchemaValue } from \"./schema\"\n\nexport function assertObjectTypeRegistered(\n objectTypesById: ReadonlyMap<string, ObjectTypeWithPropertyTokens>,\n objectType: ObjectTypeWithPropertyTokens\n): void {\n if (!objectTypesById.has(objectType.id)) {\n throw new OntologyValidationError(\n `[Sixb] Object type is not registered in this runtime: ${objectType.id}`\n )\n }\n}\n\nexport function assertPropertyTokenBelongsToObjectType(\n objectType: ObjectTypeWithPropertyTokens,\n property: PropertyToken<string, string, Property>\n): void {\n if (property.objectTypeId !== objectType.id) {\n throw new OntologyValidationError(\n `[Sixb] Property token ${property.objectTypeId}.${property.id} cannot be used with ${objectType.id}`\n )\n }\n}\n\nexport function assertLinkTokenBelongsToObjectType(\n objectType: ObjectTypeWithPropertyTokens,\n link: unknown\n): asserts link is LinkToken<string, string, string | readonly string[], ObjectLink> {\n if (!isLinkTokenLike(link)) {\n throw new OntologyValidationError(\n `[Sixb] Expected a link token from ${objectType.id}.l.<linkId>, not a plain link id.`\n )\n }\n\n if (link.objectTypeId !== objectType.id) {\n throw new OntologyValidationError(\n `[Sixb] Link token ${link.objectTypeId}.${link.id} cannot be used with ${objectType.id}`\n )\n }\n}\n\nfunction isLinkTokenLike(\n value: unknown\n): value is LinkToken<string, string, string | readonly string[], ObjectLink> {\n if (typeof value !== \"object\" || value === null) return false\n if (\n !(\"objectTypeId\" in value) ||\n !(\"id\" in value) ||\n !(\"targetObjectTypeId\" in value) ||\n !(\"link\" in value)\n ) {\n return false\n }\n\n return (\n typeof value.objectTypeId === \"string\" &&\n typeof value.id === \"string\" &&\n isLinkTargetTypeId(value.targetObjectTypeId) &&\n typeof value.link === \"object\" &&\n value.link !== null\n )\n}\n\nfunction isLinkTargetTypeId(value: unknown): value is string | readonly string[] {\n return typeof value === \"string\" || (Array.isArray(value) && value.every(isString))\n}\n\nfunction isString(value: unknown): value is string {\n return typeof value === \"string\"\n}\n\nexport function assertKnownProperties(\n objectType: ObjectTypeWithPropertyTokens,\n properties: Record<string, unknown>\n): void {\n const knownIds = new Set(objectType.properties.map((property) => property.id))\n for (const propertyId of Object.keys(properties)) {\n if (!knownIds.has(propertyId)) {\n throw new OntologyValidationError(\n `[Sixb] Unknown property '${propertyId}' for object type '${objectType.id}'`\n )\n }\n }\n}\n\nexport function assertRequiredProperties(\n objectType: ObjectTypeWithPropertyTokens,\n properties: Record<string, unknown>\n): void {\n for (const property of objectType.properties) {\n if (property.required && properties[property.id] === undefined) {\n throw new OntologyValidationError(\n `[Sixb] Missing required property '${property.id}' for object type '${objectType.id}'`\n )\n }\n }\n}\n\n/** Runtime validation protects callers even when TypeScript checks are bypassed. */\nexport function validateObjectProperties(\n objectType: ObjectTypeWithPropertyTokens,\n properties: Record<string, unknown>,\n valueTypesById: ReadonlyMap<string, ValueType>\n): void {\n for (const [propertyId, value] of Object.entries(properties)) {\n const property = objectType.properties.find((candidate) => candidate.id === propertyId)\n if (!property) {\n continue\n }\n validatePropertyValue(property, value, `${objectType.id}.${propertyId}`, valueTypesById)\n }\n}\n\n/**\n * Validate that every registered object type has exactly one primary property\n * that is required and has schema \"string\".\n *\n * Returns a Map<objectTypeId, primaryPropertyId> for runtime derivation.\n */\nexport function validatePrimaryProperties(\n objectTypesById: ReadonlyMap<string, ObjectType>\n): Map<string, string> {\n const result = new Map<string, string>()\n\n for (const [typeId, objectType] of objectTypesById) {\n const primaries = objectType.properties.filter((p) => p.primary)\n\n if (primaries.length === 0) {\n throw new OntologyValidationError(\n `[Sixb] Object type '${typeId}' has no primary property. ` +\n `Define one with prop(\"id\", \"string\", { required: true, primary: true }).`\n )\n }\n if (primaries.length > 1) {\n throw new OntologyValidationError(\n `[Sixb] Object type '${typeId}' has ${primaries.length} primary properties, expected 1`\n )\n }\n\n const primary = primaries[0]\n if (!primary.required) {\n throw new OntologyValidationError(\n `[Sixb] Primary property '${primary.id}' on '${typeId}' must be required`\n )\n }\n if (primary.schema !== \"string\") {\n throw new OntologyValidationError(\n `[Sixb] Primary property '${primary.id}' on '${typeId}' must have schema \"string\", got \"${String(primary.schema)}\"`\n )\n }\n\n result.set(typeId, primary.id)\n }\n\n return result\n}\n\nexport function validatePropertyDefinitions(\n objectTypesById: ReadonlyMap<string, ObjectType>,\n valueTypesById: ReadonlyMap<string, ValueType>\n): void {\n for (const [typeId, objectType] of objectTypesById) {\n for (const property of objectType.properties) {\n // Telemetry stores time-series samples, not blob references, even when fileRef is nested.\n if (property.mode === \"telemetry\" && schemaContainsFileRef(property.schema, valueTypesById)) {\n throw new OntologyValidationError(\n `[Sixb] Telemetry property '${property.id}' on '${typeId}' cannot use fileRef`\n )\n }\n }\n }\n}\n\nexport function validatePropertyValue(\n property: Property,\n value: unknown,\n path: string,\n valueTypesById: ReadonlyMap<string, ValueType>\n): void {\n if (value === undefined) {\n throw new OntologyValidationError(`[Sixb] Property ${path} cannot be undefined`)\n }\n\n if (value === null) {\n if (property.nullable) {\n return\n }\n throw new OntologyValidationError(`[Sixb] Property ${path} cannot be null`)\n }\n\n validateSchemaValue(property.schema, value, path, valueTypesById)\n}\n\nfunction schemaContainsFileRef(\n schema: Schema,\n valueTypesById: ReadonlyMap<string, ValueType>,\n seenValueTypeIds = new Set<string>()\n): boolean {\n if (schema === \"fileRef\") {\n return true\n }\n\n if (typeof schema === \"string\") {\n return false\n }\n\n if (schema.type === \"array\") {\n return schemaContainsFileRef(schema.items, valueTypesById, seenValueTypeIds)\n }\n\n if (schema.type === \"map\") {\n return schemaContainsFileRef(schema.valueSchema, valueTypesById, seenValueTypeIds)\n }\n\n if (schema.type === \"object\") {\n return Object.values(schema.properties).some((field) =>\n schemaContainsFileRef(field.schema, valueTypesById, seenValueTypeIds)\n )\n }\n\n if (schema.type === \"valueTypeRef\") {\n if (seenValueTypeIds.has(schema.valueTypeId)) {\n return false\n }\n\n seenValueTypeIds.add(schema.valueTypeId)\n const resolved = schema._resolved ?? valueTypesById.get(schema.valueTypeId)?.schema\n return resolved ? schemaContainsFileRef(resolved, valueTypesById, seenValueTypeIds) : false\n }\n\n return false\n}\n",
8
- "import type { JsonValue } from \"../../json\"\nimport type { ObjectLink, ValueType } from \"..\"\nimport { OntologyValidationError } from \"../errors\"\nimport type { ObjectTypeWithPropertyTokens } from \"../tokens\"\nimport { normalizeObjectProperties } from \"./normalize\"\nimport { validatePropertyValue } from \"./properties\"\n\n/**\n * Assert that `targetTypeId` is compatible with the link definition's declared target.\n *\n * When `isValidLinkTarget` is provided (e.g. for polymorphic subtype checks),\n * it is used instead of strict equality.\n */\nexport function assertLinkTargetType(\n objectTypeId: string,\n linkId: string,\n linkDefinition: ObjectLink,\n targetTypeId: string,\n isValidLinkTarget?: (expected: string | string[], actual: string) => boolean\n): void {\n const valid = isValidLinkTarget\n ? isValidLinkTarget(linkDefinition.targetObjectTypeId, targetTypeId)\n : targetTypeId === linkDefinition.targetObjectTypeId\n if (!valid) {\n const expected = Array.isArray(linkDefinition.targetObjectTypeId)\n ? linkDefinition.targetObjectTypeId.join(\" | \")\n : linkDefinition.targetObjectTypeId\n throw new OntologyValidationError(\n `[Sixb] Link ${objectTypeId}.${linkId} must target '${expected}', got '${targetTypeId}'`\n )\n }\n}\n\n/**\n * Verify that `actualTarget` is either the same as or a subtype of the\n * link's declared `targetObjectTypeId`. Throws on mismatch.\n */\nexport function assertTargetTypeCompatible(\n getSubTypes: (typeId: string) => string[],\n declaredTarget: string | string[],\n actualTarget: string,\n context: string\n): void {\n if (declaredTarget === \"*\") return\n const types = Array.isArray(declaredTarget) ? declaredTarget : [declaredTarget]\n if (types.includes(\"*\")) return\n for (const type of types) {\n if (actualTarget === type || getSubTypes(type).includes(actualTarget)) return\n }\n const expected = types.join(\" | \")\n throw new OntologyValidationError(\n `[Sixb] ${context}: target type '${actualTarget}' is not compatible with declared target '${expected}'`\n )\n}\n\nexport function normalizeLinkProperties(\n objectType: ObjectTypeWithPropertyTokens,\n link: ObjectLink,\n properties: Readonly<Record<string, unknown>> | undefined,\n valueTypesById: ReadonlyMap<string, ValueType>\n): Record<string, JsonValue> | undefined {\n if (properties === undefined) return undefined\n return normalizeObjectProperties(\n link.properties ?? [],\n properties,\n valueTypesById,\n `${objectType.id}.${link.id}`\n )\n}\n\nexport function validateLinkProperties(\n objectType: ObjectTypeWithPropertyTokens,\n link: ObjectLink,\n properties: Record<string, unknown> | undefined,\n existingProperties: Record<string, unknown> | undefined,\n valueTypesById: ReadonlyMap<string, ValueType>\n): void {\n const linkProperties = link.properties ?? []\n const provided = properties ?? {}\n\n if (linkProperties.length === 0) {\n if (Object.keys(provided).length > 0) {\n throw new OntologyValidationError(\n `[Sixb] Link ${objectType.id}.${link.id} does not define link properties`\n )\n }\n return\n }\n\n const knownPropertyIds = new Set(linkProperties.map((property) => property.id))\n for (const propertyId of Object.keys(provided)) {\n if (!knownPropertyIds.has(propertyId)) {\n throw new OntologyValidationError(\n `[Sixb] Unknown link property '${propertyId}' for link '${objectType.id}.${link.id}'`\n )\n }\n }\n\n for (const [propertyId, value] of Object.entries(provided)) {\n const property = linkProperties.find((candidate) => candidate.id === propertyId)\n if (!property) {\n continue\n }\n\n validatePropertyValue(\n property,\n value,\n `${objectType.id}.${link.id}.${propertyId}`,\n valueTypesById\n )\n }\n\n // Required checks run against merged state so partial link updates are valid.\n const merged = {\n ...(existingProperties ?? {}),\n ...provided,\n }\n\n for (const property of linkProperties) {\n if (property.required && merged[property.id] === undefined) {\n throw new OntologyValidationError(\n `[Sixb] Missing required link property '${property.id}' for link '${objectType.id}.${link.id}'`\n )\n }\n }\n}\n",
9
- "import type { ObjectType, Property, Schema, ValueType } from \"..\"\nimport { OntologyValidationError } from \"../errors\"\n\ntype QueryFeature = \"filterable\" | \"sortable\" | \"text\" | \"exact\" | \"facet\" | \"vector\"\n\nconst queryFeatures: readonly QueryFeature[] = [\n \"filterable\",\n \"sortable\",\n \"text\",\n \"exact\",\n \"facet\",\n \"vector\",\n]\n\nexport function validateQueryMetadata(\n objectTypesById: ReadonlyMap<string, ObjectType>,\n valueTypesById: ReadonlyMap<string, ValueType>\n): void {\n for (const [typeId, objectType] of objectTypesById) {\n validatePropertiesQueryMetadata(typeId, objectType.properties, valueTypesById)\n\n for (const link of objectType.links) {\n if (link.properties) {\n validatePropertiesQueryMetadata(`${typeId}.${link.id}`, link.properties, valueTypesById)\n }\n }\n\n validateObjectSearchMetadata(typeId, objectType, valueTypesById)\n }\n}\n\nfunction validatePropertiesQueryMetadata(\n ownerPath: string,\n properties: readonly Property[],\n valueTypesById: ReadonlyMap<string, ValueType>\n): void {\n for (const property of properties) {\n validatePropertyQueryMetadata(ownerPath, property, valueTypesById)\n }\n}\n\nfunction validatePropertyQueryMetadata(\n ownerPath: string,\n property: Property,\n valueTypesById: ReadonlyMap<string, ValueType>\n): void {\n const query = property.query\n if (!query) return\n\n const enabledFeatures = queryFeatures.filter((feature) => query[feature] === true)\n if ((enabledFeatures.length > 0 || query.weight !== undefined) && query.searchable !== true) {\n throw new OntologyValidationError(\n `[Sixb] Query metadata for property '${property.id}' on '${ownerPath}' must set query.searchable: true before enabling query features`\n )\n }\n\n if (query.weight !== undefined) {\n if (!Number.isFinite(query.weight) || query.weight <= 0) {\n throw new OntologyValidationError(\n `[Sixb] Query metadata for property '${property.id}' on '${ownerPath}' has invalid text weight. Expected a positive finite number.`\n )\n }\n if (query.text !== true) {\n throw new OntologyValidationError(\n `[Sixb] Query metadata for property '${property.id}' on '${ownerPath}' can only set weight when query.text is true`\n )\n }\n }\n\n if (enabledFeatures.length === 0) return\n\n const schema = resolveQueryableSchema(property, ownerPath, valueTypesById)\n\n if (query.text && !isTextSearchableSchema(schema)) {\n throw new OntologyValidationError(\n `[Sixb] Query metadata for property '${property.id}' on '${ownerPath}' enables text search, but its schema is not string-like`\n )\n }\n\n if (query.exact && !isExactSearchableSchema(schema)) {\n throw new OntologyValidationError(\n `[Sixb] Query metadata for property '${property.id}' on '${ownerPath}' enables exact search, but its schema cannot be exact-matched`\n )\n }\n\n if (query.filterable && !isFilterableSchema(schema)) {\n throw new OntologyValidationError(\n `[Sixb] Query metadata for property '${property.id}' on '${ownerPath}' enables filtering, but its schema cannot be filtered`\n )\n }\n\n if (query.sortable && !isSortableSchema(schema)) {\n throw new OntologyValidationError(\n `[Sixb] Query metadata for property '${property.id}' on '${ownerPath}' enables sorting, but its schema is not orderable`\n )\n }\n\n if (query.facet && !isFacetSchema(schema)) {\n throw new OntologyValidationError(\n `[Sixb] Query metadata for property '${property.id}' on '${ownerPath}' enables faceting, but its schema cannot be faceted`\n )\n }\n\n if (query.vector && !isVectorSchema(schema, valueTypesById)) {\n throw new OntologyValidationError(\n `[Sixb] Query metadata for property '${property.id}' on '${ownerPath}' enables vector search, but its schema is not a numeric array`\n )\n }\n}\n\nfunction validateObjectSearchMetadata(\n typeId: string,\n objectType: ObjectType,\n valueTypesById: ReadonlyMap<string, ValueType>\n): void {\n const search = objectType.search\n if (!search) return\n\n const primaryPropertyId = objectType.properties.find((property) => property.primary)?.id\n\n if (search.title) {\n const title = requireObjectProperty(typeId, objectType, search.title, \"search.title\")\n assertStaticSearchProfileProperty(typeId, title, \"search.title\")\n const schema = resolveQueryableSchema(title, typeId, valueTypesById)\n if (!isTextSearchableSchema(schema)) {\n throw new OntologyValidationError(\n `[Sixb] Object type '${typeId}' search.title references '${title.id}', but title fields must be string-like`\n )\n }\n }\n\n for (const propertyId of search.defaultText ?? []) {\n const property = requireObjectProperty(typeId, objectType, propertyId, \"search.defaultText\")\n assertStaticSearchProfileProperty(typeId, property, \"search.defaultText\")\n assertPropertyQueryFlag(typeId, property, \"text\", \"search.defaultText\")\n }\n\n for (const propertyId of search.exact ?? []) {\n const property = requireObjectProperty(typeId, objectType, propertyId, \"search.exact\")\n assertStaticSearchProfileProperty(typeId, property, \"search.exact\")\n if (property.id !== primaryPropertyId) {\n assertPropertyQueryFlag(typeId, property, \"exact\", \"search.exact\")\n }\n }\n\n if (search.vector) {\n const vectorProperty = requireObjectProperty(\n typeId,\n objectType,\n search.vector.property,\n \"search.vector.property\"\n )\n assertStaticSearchProfileProperty(typeId, vectorProperty, \"search.vector.property\")\n assertPropertyQueryFlag(typeId, vectorProperty, \"vector\", \"search.vector.property\")\n\n if (search.vector.source.length === 0) {\n throw new OntologyValidationError(\n `[Sixb] Object type '${typeId}' search.vector.source must include at least one source property`\n )\n }\n\n for (const sourceId of search.vector.source) {\n const sourceProperty = requireObjectProperty(\n typeId,\n objectType,\n sourceId,\n \"search.vector.source\"\n )\n assertStaticSearchProfileProperty(typeId, sourceProperty, \"search.vector.source\")\n assertPropertyQueryFlag(typeId, sourceProperty, \"text\", \"search.vector.source\")\n }\n }\n}\n\nfunction requireObjectProperty(\n typeId: string,\n objectType: ObjectType,\n propertyId: string,\n metadataPath: string\n): Property {\n const property = objectType.properties.find((candidate) => candidate.id === propertyId)\n if (!property) {\n throw new OntologyValidationError(\n `[Sixb] Object type '${typeId}' ${metadataPath} references unknown property '${propertyId}'`\n )\n }\n return property\n}\n\nfunction assertStaticSearchProfileProperty(\n typeId: string,\n property: Property,\n metadataPath: string\n): void {\n if (property.mode === \"telemetry\") {\n throw new OntologyValidationError(\n `[Sixb] Object type '${typeId}' ${metadataPath} references telemetry property '${property.id}'. Search profiles can only reference static properties because telemetry latest values are not object-query indexed.`\n )\n }\n}\n\nfunction assertPropertyQueryFlag(\n typeId: string,\n property: Property,\n flag: QueryFeature,\n metadataPath: string\n): void {\n if (property.query?.searchable === true && property.query[flag] === true) {\n return\n }\n\n throw new OntologyValidationError(\n `[Sixb] Object type '${typeId}' ${metadataPath} references property '${property.id}', but that property must set query.searchable: true and query.${flag}: true`\n )\n}\n\nfunction resolveQueryableSchema(\n property: Property,\n ownerPath: string,\n valueTypesById: ReadonlyMap<string, ValueType>\n): Schema {\n return resolveSchema(property.schema, valueTypesById, `${ownerPath}.${property.id}`)\n}\n\nfunction resolveSchema(\n schema: Schema,\n valueTypesById: ReadonlyMap<string, ValueType>,\n path: string,\n seenValueTypeIds = new Set<string>()\n): Schema {\n if (typeof schema === \"string\") {\n return schema\n }\n\n if (schema.type !== \"valueTypeRef\") {\n return schema\n }\n\n if (seenValueTypeIds.has(schema.valueTypeId)) {\n throw new OntologyValidationError(\n `[Sixb] Circular valueTypeRef '${schema.valueTypeId}' in query metadata at ${path}`\n )\n }\n\n const resolved = schema._resolved ?? valueTypesById.get(schema.valueTypeId)?.schema\n if (!resolved) {\n throw new OntologyValidationError(\n `[Sixb] Query metadata for ${path} references unknown valueTypeRef '${schema.valueTypeId}'`\n )\n }\n\n seenValueTypeIds.add(schema.valueTypeId)\n return resolveSchema(resolved, valueTypesById, path, seenValueTypeIds)\n}\n\nfunction isTextSearchableSchema(schema: Schema): boolean {\n if (schema === \"string\") return true\n return typeof schema !== \"string\" && schema.type === \"enum\" && schema.valueType === \"string\"\n}\n\nfunction isExactSearchableSchema(schema: Schema): boolean {\n if (typeof schema === \"string\") {\n return schema !== \"fileRef\"\n }\n return schema.type === \"enum\"\n}\n\nfunction isFilterableSchema(schema: Schema): boolean {\n return (\n isExactSearchableSchema(schema) ||\n (typeof schema !== \"string\" && (schema.type === \"array\" || schema.type === \"map\"))\n )\n}\n\nfunction isSortableSchema(schema: Schema): boolean {\n if (typeof schema === \"string\") {\n return (\n schema === \"string\" ||\n schema === \"uuid\" ||\n schema === \"integer\" ||\n schema === \"double\" ||\n schema === \"decimal\" ||\n schema === \"date\" ||\n schema === \"timestamp\"\n )\n }\n return schema.type === \"enum\"\n}\n\nfunction isFacetSchema(schema: Schema): boolean {\n return isExactSearchableSchema(schema)\n}\n\nfunction isVectorSchema(schema: Schema, valueTypesById: ReadonlyMap<string, ValueType>): boolean {\n if (typeof schema === \"string\") return false\n if (schema.type !== \"array\") return false\n\n const itemSchema = resolveSchema(schema.items, valueTypesById, \"vector item\")\n return itemSchema === \"integer\" || itemSchema === \"double\" || itemSchema === \"decimal\"\n}\n",
10
- "/**\n * Sixb Quantitative Types registry.\n *\n * A single flat registry of physical quantities. Each entry names a quantity,\n * describes it, and lists its valid units. Where multiple quantities share the\n * same set of units (e.g. Humidity and Density) they reference the same const\n * object — no string-based linking required.\n *\n * Literal-union types are derived automatically via `as const` so developers\n * get full autocomplete without defining anything themselves.\n *\n * Inspired by Azure DTDL QuantitativeTypes v2.\n */\n\nimport type { QuantitativeType, Unit } from \"./types\"\n\n// ═════════════════════════════════════════════════════════════\n// Shared unit sets\n//\n// When several quantities accept the same units, define the set\n// once here and reference it from each quantity entry below.\n// ═════════════════════════════════════════════════════════════\n\nconst angleUnits = {\n degreeOfArc: { name: \"Degree of Arc\", symbol: \"°\" },\n minuteOfArc: { name: \"Minute of Arc\", symbol: \"′\" },\n radian: { name: \"Radian\", symbol: \"rad\" },\n secondOfArc: { name: \"Second of Arc\", symbol: \"″\" },\n turn: { name: \"Turn\", symbol: \"rev\" },\n} as const satisfies Record<string, Unit>\n\nconst densityUnits = {\n gramPerCubicMetre: { name: \"Gram per Cubic Metre\", symbol: \"g/m³\" },\n kilogramPerCubicMetre: { name: \"Kilogram per Cubic Metre\", symbol: \"kg/m³\" },\n microgramPerCubicMetre: { name: \"Microgram per Cubic Metre\", symbol: \"µg/m³\" },\n milligramPerCubicMetre: { name: \"Milligram per Cubic Metre\", symbol: \"mg/m³\" },\n} as const satisfies Record<string, Unit>\n\nconst forceUnits = {\n newton: { name: \"Newton\", symbol: \"N\" },\n ounce: { name: \"Ounce\", symbol: \"oz\" },\n pound: { name: \"Pound\", symbol: \"lbf\" },\n ton: { name: \"Ton\", symbol: \"t\" },\n} as const satisfies Record<string, Unit>\n\nconst lengthUnits = {\n astronomicalUnit: { name: \"Astronomical Unit\", symbol: \"AU\" },\n centimetre: { name: \"Centimetre\", symbol: \"cm\" },\n foot: { name: \"Foot\", symbol: \"ft\" },\n inch: { name: \"Inch\", symbol: \"in\" },\n kilometre: { name: \"Kilometre\", symbol: \"km\" },\n metre: { name: \"Metre\", symbol: \"m\" },\n micrometre: { name: \"Micrometre\", symbol: \"µm\" },\n mile: { name: \"Mile\", symbol: \"mi\" },\n millimetre: { name: \"Millimetre\", symbol: \"mm\" },\n nanometre: { name: \"Nanometre\", symbol: \"nm\" },\n nauticalMile: { name: \"Nautical Mile\", symbol: \"nmi\" },\n} as const satisfies Record<string, Unit>\n\nconst powerUnits = {\n britishThermalUnitPerHour: { name: \"British Thermal Unit per Hour\", symbol: \"BTU/h\" },\n gigajoulePerHour: { name: \"Gigajoule per Hour\", symbol: \"GJ/h\" },\n gigawatt: { name: \"Gigawatt\", symbol: \"GW\" },\n horsepower: { name: \"Horsepower\", symbol: \"hp\" },\n joulePerHour: { name: \"Joule per Hour\", symbol: \"J/h\" },\n joulePerSecond: { name: \"Joule per Second\", symbol: \"J/s\" },\n kiloBritishThermalUnitPerHour: { name: \"Kilo British Thermal Unit per Hour\", symbol: \"kBTU/h\" },\n kilojoulePerHour: { name: \"Kilojoule per Hour\", symbol: \"kJ/h\" },\n kilojoulePerSecond: { name: \"Kilojoule per Second\", symbol: \"kJ/s\" },\n kilowatt: { name: \"Kilowatt\", symbol: \"kW\" },\n kilowattHourPerYear: { name: \"Kilowatt Hour per Year\", symbol: \"kWh/yr\" },\n megajoulePerHour: { name: \"Megajoule per Hour\", symbol: \"MJ/h\" },\n megawatt: { name: \"Megawatt\", symbol: \"MW\" },\n microwatt: { name: \"Microwatt\", symbol: \"µW\" },\n milliwatt: { name: \"Milliwatt\", symbol: \"mW\" },\n tonOfRefrigeration: { name: \"Ton of Refrigeration\", symbol: \"TR\" },\n watt: { name: \"Watt\", symbol: \"W\" },\n} as const satisfies Record<string, Unit>\n\nconst unitlessUnits = {\n partsPerBillion: { name: \"Parts per Billion\", symbol: \"ppb\" },\n partsPerMillion: { name: \"Parts per Million\", symbol: \"ppm\" },\n partsPerQuadrillion: { name: \"Parts per Quadrillion\", symbol: \"ppq\" },\n partsPerTrillion: { name: \"Parts per Trillion\", symbol: \"ppt\" },\n percent: { name: \"Percent\", symbol: \"%\" },\n unity: { name: \"Unity\", symbol: \"\" },\n} as const satisfies Record<string, Unit>\n\n// ═════════════════════════════════════════════════════════════\n// Registry\n// ═════════════════════════════════════════════════════════════\n\n/** Complete registry of quantitative types, keyed by semantic type id. */\nexport const quantitativeTypes = {\n Acceleration: {\n name: \"Acceleration\",\n description: \"Rate of change of velocity.\",\n units: {\n centimetrePerSecondSquared: { name: \"Centimetre per Second Squared\", symbol: \"cm/s²\" },\n gForce: { name: \"G-Force\", symbol: \"g\" },\n metrePerSecondSquared: { name: \"Metre per Second Squared\", symbol: \"m/s²\" },\n },\n },\n Angle: {\n name: \"Angle\",\n description: \"Measure of rotation between two rays.\",\n units: angleUnits,\n },\n AngularAcceleration: {\n name: \"Angular Acceleration\",\n description: \"Rate of change of angular velocity.\",\n units: {\n radianPerSecondSquared: { name: \"Radian per Second Squared\", symbol: \"rad/s²\" },\n },\n },\n AngularVelocity: {\n name: \"Angular Velocity\",\n description: \"Rate of rotation around an axis.\",\n units: {\n degreePerSecond: { name: \"Degree per Second\", symbol: \"°/s\" },\n radianPerSecond: { name: \"Radian per Second\", symbol: \"rad/s\" },\n revolutionPerMinute: { name: \"Revolution per Minute\", symbol: \"rpm\" },\n revolutionPerSecond: { name: \"Revolution per Second\", symbol: \"rps\" },\n },\n },\n ApparentEnergy: {\n name: \"Apparent Energy\",\n description: \"Integral of apparent power over time.\",\n units: {\n gigavoltAmpereHour: { name: \"Gigavolt Ampere Hour\", symbol: \"GVAh\" },\n kilovoltAmpereHour: { name: \"Kilovolt Ampere Hour\", symbol: \"kVAh\" },\n megavoltAmpereHour: { name: \"Megavolt Ampere Hour\", symbol: \"MVAh\" },\n voltAmpereHour: { name: \"Volt Ampere Hour\", symbol: \"VAh\" },\n },\n },\n ApparentPower: {\n name: \"Apparent Power\",\n description: \"Product of RMS voltage and RMS current in an AC circuit.\",\n units: {\n gigavoltAmpere: { name: \"Gigavolt Ampere\", symbol: \"GVA\" },\n kilovoltAmpere: { name: \"Kilovolt Ampere\", symbol: \"kVA\" },\n megavoltAmpere: { name: \"Megavolt Ampere\", symbol: \"MVA\" },\n millivoltAmpere: { name: \"Millivolt Ampere\", symbol: \"mVA\" },\n voltAmpere: { name: \"Volt Ampere\", symbol: \"VA\" },\n },\n },\n Area: {\n name: \"Area\",\n description: \"Extent of a two-dimensional surface.\",\n units: {\n acre: { name: \"Acre\", symbol: \"ac\" },\n hectare: { name: \"Hectare\", symbol: \"ha\" },\n squareCentimetre: { name: \"Square Centimetre\", symbol: \"cm²\" },\n squareFoot: { name: \"Square Foot\", symbol: \"ft²\" },\n squareInch: { name: \"Square Inch\", symbol: \"in²\" },\n squareKilometre: { name: \"Square Kilometre\", symbol: \"km²\" },\n squareMetre: { name: \"Square Metre\", symbol: \"m²\" },\n squareMillimetre: { name: \"Square Millimetre\", symbol: \"mm²\" },\n },\n },\n Capacitance: {\n name: \"Capacitance\",\n description: \"Ability to store an electric charge.\",\n units: {\n farad: { name: \"Farad\", symbol: \"F\" },\n microfarad: { name: \"Microfarad\", symbol: \"µF\" },\n millifarad: { name: \"Millifarad\", symbol: \"mF\" },\n nanofarad: { name: \"Nanofarad\", symbol: \"nF\" },\n picofarad: { name: \"Picofarad\", symbol: \"pF\" },\n },\n },\n Concentration: {\n name: \"Concentration\",\n description: \"Amount of substance per unit volume or mass (dimensionless ratio).\",\n units: unitlessUnits,\n },\n Current: {\n name: \"Current\",\n description: \"Flow of electric charge.\",\n units: {\n ampere: { name: \"Ampere\", symbol: \"A\" },\n kiloampere: { name: \"Kiloampere\", symbol: \"kA\" },\n microampere: { name: \"Microampere\", symbol: \"µA\" },\n milliampere: { name: \"Milliampere\", symbol: \"mA\" },\n },\n },\n DataRate: {\n name: \"Data Rate\",\n description: \"Amount of data transferred per unit time.\",\n units: {\n bitPerSecond: { name: \"Bit per Second\", symbol: \"bps\" },\n bytePerSecond: { name: \"Byte per Second\", symbol: \"B/s\" },\n exbibitPerSecond: { name: \"Exbibit per Second\", symbol: \"Eibit/s\" },\n exbibytePerSecond: { name: \"Exbibyte per Second\", symbol: \"EiB/s\" },\n gibibitPerSecond: { name: \"Gibibit per Second\", symbol: \"Gibit/s\" },\n gibibytePerSecond: { name: \"Gibibyte per Second\", symbol: \"GiB/s\" },\n kibibitPerSecond: { name: \"Kibibit per Second\", symbol: \"Kibit/s\" },\n kibibytePerSecond: { name: \"Kibibyte per Second\", symbol: \"KiB/s\" },\n mebibitPerSecond: { name: \"Mebibit per Second\", symbol: \"Mibit/s\" },\n mebibytePerSecond: { name: \"Mebibyte per Second\", symbol: \"MiB/s\" },\n tebibitPerSecond: { name: \"Tebibit per Second\", symbol: \"Tibit/s\" },\n tebibytePerSecond: { name: \"Tebibyte per Second\", symbol: \"TiB/s\" },\n yobibitPerSecond: { name: \"Yobibit per Second\", symbol: \"Yibit/s\" },\n yobibytePerSecond: { name: \"Yobibyte per Second\", symbol: \"YiB/s\" },\n zebibitPerSecond: { name: \"Zebibit per Second\", symbol: \"Zibit/s\" },\n zebibytePerSecond: { name: \"Zebibyte per Second\", symbol: \"ZiB/s\" },\n },\n },\n DataSize: {\n name: \"Data Size\",\n description: \"Amount of digital information.\",\n units: {\n bit: { name: \"Bit\", symbol: \"bit\" },\n byte: { name: \"Byte\", symbol: \"B\" },\n exbibit: { name: \"Exbibit\", symbol: \"Eibit\" },\n exbibyte: { name: \"Exbibyte\", symbol: \"EiB\" },\n gibibit: { name: \"Gibibit\", symbol: \"Gibit\" },\n gibibyte: { name: \"Gibibyte\", symbol: \"GiB\" },\n kibibit: { name: \"Kibibit\", symbol: \"Kibit\" },\n kibibyte: { name: \"Kibibyte\", symbol: \"KiB\" },\n mebibit: { name: \"Mebibit\", symbol: \"Mibit\" },\n mebibyte: { name: \"Mebibyte\", symbol: \"MiB\" },\n tebibit: { name: \"Tebibit\", symbol: \"Tibit\" },\n tebibyte: { name: \"Tebibyte\", symbol: \"TiB\" },\n yobibit: { name: \"Yobibit\", symbol: \"Yibit\" },\n yobibyte: { name: \"Yobibyte\", symbol: \"YiB\" },\n zebibit: { name: \"Zebibit\", symbol: \"Zibit\" },\n zebibyte: { name: \"Zebibyte\", symbol: \"ZiB\" },\n },\n },\n Density: {\n name: \"Density\",\n description: \"Mass per unit volume.\",\n units: densityUnits,\n },\n Distance: {\n name: \"Distance\",\n description: \"Scalar measure of how far apart two points are.\",\n units: lengthUnits,\n },\n ElectricCharge: {\n name: \"Electric Charge\",\n description: \"Quantity of electric charge.\",\n units: {\n ampereHour: { name: \"Ampere Hour\", symbol: \"Ah\" },\n coulomb: { name: \"Coulomb\", symbol: \"C\" },\n milliampereHour: { name: \"Milliampere Hour\", symbol: \"mAh\" },\n },\n },\n Energy: {\n name: \"Energy\",\n description: \"Capacity to do work.\",\n units: {\n britishThermalUnit: { name: \"British Thermal Unit\", symbol: \"BTU\" },\n electronvolt: { name: \"Electronvolt\", symbol: \"eV\" },\n gigajoule: { name: \"Gigajoule\", symbol: \"GJ\" },\n gigawattHour: { name: \"Gigawatt Hour\", symbol: \"GWh\" },\n joule: { name: \"Joule\", symbol: \"J\" },\n kiloBritishThermalUnit: { name: \"Kilo British Thermal Unit\", symbol: \"kBTU\" },\n kilojoule: { name: \"Kilojoule\", symbol: \"kJ\" },\n kilowattHour: { name: \"Kilowatt Hour\", symbol: \"kWh\" },\n megaelectronvolt: { name: \"Megaelectronvolt\", symbol: \"MeV\" },\n megajoule: { name: \"Megajoule\", symbol: \"MJ\" },\n megawattHour: { name: \"Megawatt Hour\", symbol: \"MWh\" },\n milliwattHour: { name: \"Milliwatt Hour\", symbol: \"mWh\" },\n terawattHour: { name: \"Terawatt Hour\", symbol: \"TWh\" },\n wattHour: { name: \"Watt Hour\", symbol: \"Wh\" },\n },\n },\n EnergyRate: {\n name: \"Energy Rate\",\n description: \"Rate of energy transfer or conversion.\",\n units: powerUnits,\n },\n Force: {\n name: \"Force\",\n description: \"Interaction that changes the motion of an object.\",\n units: forceUnits,\n },\n Frequency: {\n name: \"Frequency\",\n description: \"Number of occurrences per unit time.\",\n units: {\n gigahertz: { name: \"Gigahertz\", symbol: \"GHz\" },\n hertz: { name: \"Hertz\", symbol: \"Hz\" },\n kilohertz: { name: \"Kilohertz\", symbol: \"kHz\" },\n megahertz: { name: \"Megahertz\", symbol: \"MHz\" },\n millihertz: { name: \"Millihertz\", symbol: \"mHz\" },\n },\n },\n Humidity: {\n name: \"Humidity\",\n description: \"Absolute moisture content expressed as mass per volume.\",\n units: densityUnits,\n },\n Illuminance: {\n name: \"Illuminance\",\n description: \"Luminous flux incident on a surface per unit area.\",\n units: {\n footcandle: { name: \"Footcandle\", symbol: \"fc\" },\n lux: { name: \"Lux\", symbol: \"lx\" },\n },\n },\n Inductance: {\n name: \"Inductance\",\n description: \"Property of a conductor to oppose change in current.\",\n units: {\n henry: { name: \"Henry\", symbol: \"H\" },\n microhenry: { name: \"Microhenry\", symbol: \"µH\" },\n millihenry: { name: \"Millihenry\", symbol: \"mH\" },\n },\n },\n IonizingRadiationDose: {\n name: \"Ionizing Radiation Dose\",\n description: \"Absorbed dose of ionizing radiation.\",\n units: {\n gray: { name: \"Gray\", symbol: \"Gy\" },\n microgray: { name: \"Microgray\", symbol: \"µGy\" },\n microsievert: { name: \"Microsievert\", symbol: \"µSv\" },\n milligray: { name: \"Milligray\", symbol: \"mGy\" },\n millisievert: { name: \"Millisievert\", symbol: \"mSv\" },\n sievert: { name: \"Sievert\", symbol: \"Sv\" },\n },\n },\n Irradiance: {\n name: \"Irradiance\",\n description: \"Power of electromagnetic radiation per unit area.\",\n units: {\n wattPerSquareMetre: { name: \"Watt per Square Metre\", symbol: \"W/m²\" },\n },\n },\n Latitude: {\n name: \"Latitude\",\n description: \"Angular distance north or south of the equator.\",\n units: angleUnits,\n },\n Length: {\n name: \"Length\",\n description: \"Measure of a one-dimensional extent.\",\n units: lengthUnits,\n },\n Longitude: {\n name: \"Longitude\",\n description: \"Angular distance east or west of the prime meridian.\",\n units: angleUnits,\n },\n Luminance: {\n name: \"Luminance\",\n description: \"Luminous intensity per unit area of light in a given direction.\",\n units: {\n candelaPerSquareMetre: { name: \"Candela per Square Metre\", symbol: \"cd/m²\" },\n },\n },\n Luminosity: {\n name: \"Luminosity\",\n description: \"Total amount of electromagnetic energy emitted per unit time.\",\n units: powerUnits,\n },\n LuminousFlux: {\n name: \"Luminous Flux\",\n description: \"Total quantity of visible light emitted by a source.\",\n units: {\n lumen: { name: \"Lumen\", symbol: \"lm\" },\n },\n },\n LuminousIntensity: {\n name: \"Luminous Intensity\",\n description: \"Luminous flux emitted per unit solid angle.\",\n units: {\n candela: { name: \"Candela\", symbol: \"cd\" },\n },\n },\n MagneticFlux: {\n name: \"Magnetic Flux\",\n description: \"Total magnetic field passing through an area.\",\n units: {\n maxwell: { name: \"Maxwell\", symbol: \"Mx\" },\n weber: { name: \"Weber\", symbol: \"Wb\" },\n },\n },\n MagneticInduction: {\n name: \"Magnetic Induction\",\n description: \"Magnetic flux density.\",\n units: {\n gauss: { name: \"Gauss\", symbol: \"G\" },\n tesla: { name: \"Tesla\", symbol: \"T\" },\n },\n },\n Mass: {\n name: \"Mass\",\n description: \"Quantity of matter.\",\n units: {\n gram: { name: \"Gram\", symbol: \"g\" },\n kilogram: { name: \"Kilogram\", symbol: \"kg\" },\n massPound: { name: \"Pound (mass)\", symbol: \"lb\" },\n microgram: { name: \"Microgram\", symbol: \"µg\" },\n milligram: { name: \"Milligram\", symbol: \"mg\" },\n slug: { name: \"Slug\", symbol: \"slug\" },\n tonne: { name: \"Tonne\", symbol: \"t\" },\n },\n },\n MassFlowRate: {\n name: \"Mass Flow Rate\",\n description: \"Mass of substance passing a point per unit time.\",\n units: {\n gramPerHour: { name: \"Gram per Hour\", symbol: \"g/h\" },\n gramPerSecond: { name: \"Gram per Second\", symbol: \"g/s\" },\n kilogramPerHour: { name: \"Kilogram per Hour\", symbol: \"kg/h\" },\n kilogramPerSecond: { name: \"Kilogram per Second\", symbol: \"kg/s\" },\n massPoundPerHour: { name: \"Pound per Hour\", symbol: \"lb/h\" },\n },\n },\n Power: {\n name: \"Power\",\n description: \"Rate of energy transfer or work.\",\n units: powerUnits,\n },\n Pressure: {\n name: \"Pressure\",\n description: \"Force applied per unit area.\",\n units: {\n bar: { name: \"Bar\", symbol: \"bar\" },\n decapascal: { name: \"Decapascal\", symbol: \"daPa\" },\n hectopascal: { name: \"Hectopascal\", symbol: \"hPa\" },\n inchesOfMercury: { name: \"Inches of Mercury\", symbol: \"inHg\" },\n inchesOfWater: { name: \"Inches of Water\", symbol: \"inH₂O\" },\n kilopascal: { name: \"Kilopascal\", symbol: \"kPa\" },\n millibar: { name: \"Millibar\", symbol: \"mbar\" },\n millimetresOfMercury: { name: \"Millimetres of Mercury\", symbol: \"mmHg\" },\n pascal: { name: \"Pascal\", symbol: \"Pa\" },\n poundPerSquareInch: { name: \"Pound per Square Inch\", symbol: \"psi\" },\n },\n },\n Radioactivity: {\n name: \"Radioactivity\",\n description: \"Rate of radioactive decay.\",\n units: {\n becquerel: { name: \"Becquerel\", symbol: \"Bq\" },\n gigabecquerel: { name: \"Gigabecquerel\", symbol: \"GBq\" },\n kilobecquerel: { name: \"Kilobecquerel\", symbol: \"kBq\" },\n megabecquerel: { name: \"Megabecquerel\", symbol: \"MBq\" },\n },\n },\n ReactiveEnergy: {\n name: \"Reactive Energy\",\n description: \"Integral of reactive power over time.\",\n units: {\n gigavoltAmpereReactiveHour: { name: \"Gigavolt Ampere Reactive Hour\", symbol: \"GVARh\" },\n kilovoltAmpereReactiveHour: { name: \"Kilovolt Ampere Reactive Hour\", symbol: \"kVARh\" },\n megavoltAmpereReactiveHour: { name: \"Megavolt Ampere Reactive Hour\", symbol: \"MVARh\" },\n voltAmpereReactiveHour: { name: \"Volt Ampere Reactive Hour\", symbol: \"VARh\" },\n },\n },\n ReactivePower: {\n name: \"Reactive Power\",\n description: \"Power oscillating between source and load in an AC circuit.\",\n units: {\n gigavoltAmpereReactive: { name: \"Gigavolt Ampere Reactive\", symbol: \"GVAR\" },\n kilovoltAmpereReactive: { name: \"Kilovolt Ampere Reactive\", symbol: \"kVAR\" },\n megavoltAmpereReactive: { name: \"Megavolt Ampere Reactive\", symbol: \"MVAR\" },\n millivoltAmpereReactive: { name: \"Millivolt Ampere Reactive\", symbol: \"mVAR\" },\n voltAmpereReactive: { name: \"Volt Ampere Reactive\", symbol: \"VAR\" },\n },\n },\n RelativeDensity: {\n name: \"Relative Density\",\n description: \"Ratio of a substance's density to a reference substance.\",\n units: unitlessUnits,\n },\n RelativeHumidity: {\n name: \"Relative Humidity\",\n description: \"Ratio of current moisture content to saturation capacity.\",\n units: unitlessUnits,\n },\n Resistance: {\n name: \"Resistance\",\n description: \"Opposition to flow of electric current.\",\n units: {\n kiloohm: { name: \"Kiloohm\", symbol: \"kΩ\" },\n megaohm: { name: \"Megaohm\", symbol: \"MΩ\" },\n milliohm: { name: \"Milliohm\", symbol: \"mΩ\" },\n ohm: { name: \"Ohm\", symbol: \"Ω\" },\n },\n },\n SoundPressure: {\n name: \"Sound Pressure\",\n description: \"Local pressure deviation from ambient caused by sound.\",\n units: {\n bel: { name: \"Bel\", symbol: \"B\" },\n decibel: { name: \"Decibel\", symbol: \"dB\" },\n },\n },\n Temperature: {\n name: \"Temperature\",\n description: \"Degree of hotness or coldness.\",\n units: {\n degreeCelsius: { name: \"Degree Celsius\", symbol: \"°C\" },\n degreeFahrenheit: { name: \"Degree Fahrenheit\", symbol: \"°F\" },\n kelvin: { name: \"Kelvin\", symbol: \"K\" },\n },\n },\n Thrust: {\n name: \"Thrust\",\n description: \"Reaction force from expelling mass.\",\n units: forceUnits,\n },\n TimeSpan: {\n name: \"Time Span\",\n description: \"Duration of time (numeric, not ISO 8601 calendar duration).\",\n units: {\n day: { name: \"Day\", symbol: \"d\" },\n hour: { name: \"Hour\", symbol: \"h\" },\n microsecond: { name: \"Microsecond\", symbol: \"µs\" },\n millisecond: { name: \"Millisecond\", symbol: \"ms\" },\n minute: { name: \"Minute\", symbol: \"min\" },\n nanosecond: { name: \"Nanosecond\", symbol: \"ns\" },\n second: { name: \"Second\", symbol: \"s\" },\n year: { name: \"Year\", symbol: \"yr\" },\n },\n },\n Torque: {\n name: \"Torque\",\n description: \"Rotational force.\",\n units: {\n newtonMetre: { name: \"Newton Metre\", symbol: \"N·m\" },\n },\n },\n Velocity: {\n name: \"Velocity\",\n description: \"Speed in a given direction.\",\n units: {\n centimetrePerSecond: { name: \"Centimetre per Second\", symbol: \"cm/s\" },\n kilometrePerHour: { name: \"Kilometre per Hour\", symbol: \"km/h\" },\n kilometrePerSecond: { name: \"Kilometre per Second\", symbol: \"km/s\" },\n knot: { name: \"Knot\", symbol: \"kn\" },\n metrePerHour: { name: \"Metre per Hour\", symbol: \"m/h\" },\n metrePerSecond: { name: \"Metre per Second\", symbol: \"m/s\" },\n milePerHour: { name: \"Mile per Hour\", symbol: \"mph\" },\n milePerSecond: { name: \"Mile per Second\", symbol: \"mi/s\" },\n },\n },\n Voltage: {\n name: \"Voltage\",\n description: \"Electric potential difference.\",\n units: {\n kilovolt: { name: \"Kilovolt\", symbol: \"kV\" },\n megavolt: { name: \"Megavolt\", symbol: \"MV\" },\n microvolt: { name: \"Microvolt\", symbol: \"µV\" },\n millivolt: { name: \"Millivolt\", symbol: \"mV\" },\n volt: { name: \"Volt\", symbol: \"V\" },\n },\n },\n Volume: {\n name: \"Volume\",\n description: \"Extent of a three-dimensional space.\",\n units: {\n cubicCentimetre: { name: \"Cubic Centimetre\", symbol: \"cm³\" },\n cubicFoot: { name: \"Cubic Foot\", symbol: \"ft³\" },\n cubicInch: { name: \"Cubic Inch\", symbol: \"in³\" },\n cubicMetre: { name: \"Cubic Metre\", symbol: \"m³\" },\n fluidOunce: { name: \"Fluid Ounce\", symbol: \"fl oz\" },\n gallon: { name: \"Gallon\", symbol: \"gal\" },\n litre: { name: \"Litre\", symbol: \"L\" },\n millilitre: { name: \"Millilitre\", symbol: \"mL\" },\n },\n },\n VolumeFlowRate: {\n name: \"Volume Flow Rate\",\n description: \"Volume of fluid passing a point per unit time.\",\n units: {\n cubicFootPerMinute: { name: \"Cubic Foot per Minute\", symbol: \"cfm\" },\n cubicMetrePerHour: { name: \"Cubic Metre per Hour\", symbol: \"m³/h\" },\n cubicMetrePerMinute: { name: \"Cubic Metre per Minute\", symbol: \"m³/min\" },\n cubicMetrePerSecond: { name: \"Cubic Metre per Second\", symbol: \"m³/s\" },\n gallonPerHour: { name: \"Gallon per Hour\", symbol: \"gal/h\" },\n gallonPerMinute: { name: \"Gallon per Minute\", symbol: \"gal/min\" },\n litrePerHour: { name: \"Litre per Hour\", symbol: \"L/h\" },\n litrePerMinute: { name: \"Litre per Minute\", symbol: \"L/min\" },\n litrePerSecond: { name: \"Litre per Second\", symbol: \"L/s\" },\n millilitrePerHour: { name: \"Millilitre per Hour\", symbol: \"mL/h\" },\n millilitrePerMinute: { name: \"Millilitre per Minute\", symbol: \"mL/min\" },\n millilitrePerSecond: { name: \"Millilitre per Second\", symbol: \"mL/s\" },\n },\n },\n} as const satisfies Record<string, QuantitativeType>\n\n// ═════════════════════════════════════════════════════════════\n// Derived types\n// ═════════════════════════════════════════════════════════════\n\n/** Union of all quantitative type identifiers (semantic type ids). */\nexport type QuantitativeTypeId = keyof typeof quantitativeTypes\n\n/**\n * Extract the unit id union for a given quantitative type.\n *\n * @example\n * ```ts\n * type T = UnitsOf<\"Temperature\">\n * // => \"degreeCelsius\" | \"degreeFahrenheit\" | \"kelvin\"\n * ```\n */\nexport type UnitsOf<Q extends QuantitativeTypeId> = keyof (typeof quantitativeTypes)[Q][\"units\"]\n\n/** Union of every unit id across all quantitative types. */\nexport type UnitId = {\n [Q in QuantitativeTypeId]: UnitsOf<Q>\n}[QuantitativeTypeId]\n",
11
- "/**\n * Sixb Quantitative Types — public API.\n *\n * Two concepts:\n * - **QuantitativeType** — a physical quantity with its valid units.\n * - **Unit** — a specific unit of measurement.\n *\n * ```ts\n * import { quantitativeTypes, getUnit, isValidUnit } from \"@sixb/core\"\n *\n * // Browse what's available\n * quantitativeTypes.Temperature.units.degreeCelsius.symbol // \"°C\"\n *\n * // Validate a unit against a quantity\n * isValidUnit(\"Temperature\", \"degreeCelsius\") // true\n * isValidUnit(\"Temperature\", \"millibar\") // false\n * ```\n */\n\n// ── Core interfaces ─────────────────────────────────────────\n\nexport type { QuantitativeType, Unit } from \"./types\"\n\n// ── Registry + derived types ────────────────────────────────\n\nexport type { QuantitativeTypeId, UnitId, UnitsOf } from \"./quantitative-types\"\nexport { quantitativeTypes } from \"./quantitative-types\"\n\n// ── Helper functions ────────────────────────────────────────\n\nimport type { QuantitativeTypeId, UnitId } from \"./quantitative-types\"\nimport { quantitativeTypes } from \"./quantitative-types\"\nimport type { Unit } from \"./types\"\n\n/** Flat lookup: unit id → { unit data, quantitative type id }. Built once on import. */\nconst unitIndex: Map<string, Unit & { quantitativeTypeId: string }> = new Map()\n\nfor (const [qtId, qt] of Object.entries(quantitativeTypes)) {\n for (const [unitId, unit] of Object.entries(qt.units)) {\n // A unit id may appear under multiple quantities (e.g. densityUnits).\n // Store the first occurrence; the data is identical since they share the\n // same const object.\n if (!unitIndex.has(unitId)) {\n unitIndex.set(unitId, { ...unit, quantitativeTypeId: qtId })\n }\n }\n}\n\n/**\n * Look up a unit by its id.\n *\n * @example\n * ```ts\n * const u = getUnit(\"degreeCelsius\")\n * // => { name: \"Degree Celsius\", symbol: \"°C\", quantitativeTypeId: \"Temperature\" }\n * ```\n */\nexport function getUnit(unitId: string): (Unit & { quantitativeTypeId: string }) | undefined {\n return unitIndex.get(unitId)\n}\n\n/**\n * Get the record of valid units for a quantitative type.\n *\n * @example\n * ```ts\n * const units = getUnitsFor(\"Temperature\")\n * // => { degreeCelsius: { … }, degreeFahrenheit: { … }, kelvin: { … } }\n * ```\n */\nexport function getUnitsFor(quantitativeTypeId: string): Record<string, Unit> | undefined {\n const qt = quantitativeTypes[quantitativeTypeId as QuantitativeTypeId]\n return qt?.units as Record<string, Unit> | undefined\n}\n\n/**\n * Check whether a unit id is valid for a given quantitative type.\n *\n * @example\n * ```ts\n * isValidUnit(\"Temperature\", \"degreeCelsius\") // true\n * isValidUnit(\"Temperature\", \"millibar\") // false\n * ```\n */\nexport function isValidUnit(quantitativeTypeId: string, unitId: string): boolean {\n const units = getUnitsFor(quantitativeTypeId)\n return units != null && unitId in units\n}\n\n/**\n * Get the display symbol for a unit id.\n *\n * @example\n * ```ts\n * getUnitSymbol(\"degreeCelsius\") // \"°C\"\n * getUnitSymbol(\"unknown\") // undefined\n * ```\n */\nexport function getUnitSymbol(unitId: string): string | undefined {\n return unitIndex.get(unitId)?.symbol\n}\n\n/**\n * Type guard: checks if a string is a valid `QuantitativeTypeId`.\n */\nexport function isQuantitativeTypeId(value: string): value is QuantitativeTypeId {\n return value in quantitativeTypes\n}\n\n/**\n * Type guard: checks if a string is a valid `UnitId`.\n */\nexport function isUnitId(value: string): value is UnitId {\n return unitIndex.has(value)\n}\n",
12
- "import type { Property, ValueType } from \"..\"\nimport { OntologyValidationError } from \"../errors\"\nimport type { QuantitativeTypeId } from \"../units\"\nimport { isValidUnit } from \"../units\"\nimport { resolveValueTypeRef } from \"./schema\"\n\nexport function assertTelemetryProperty(property: Property): void {\n if (property.mode !== \"telemetry\") {\n throw new OntologyValidationError(`[Sixb] Property ${property.id} is not telemetry-enabled`)\n }\n}\n\nexport function resolveSemanticType(\n property: Property,\n valueTypesById: ReadonlyMap<string, ValueType>\n): QuantitativeTypeId | undefined {\n if (property.semanticType) {\n return property.semanticType\n }\n\n const valueTypeId = resolveValueTypeRef(property.schema)\n if (!valueTypeId) {\n return undefined\n }\n\n return valueTypesById.get(valueTypeId)?.semanticType\n}\n\n/** Validates that unit is present/absent based on semantic type, and that it's a valid unit. */\nexport function validateTelemetryUnit(\n property: Property,\n propertyPath: string,\n unit: string | undefined,\n valueTypesById: ReadonlyMap<string, ValueType>\n): void {\n const semanticType = resolveSemanticType(property, valueTypesById)\n if (semanticType) {\n if (!unit) {\n throw new OntologyValidationError(\n `[Sixb] Missing unit for telemetry property ${propertyPath}`\n )\n }\n if (!isValidUnit(semanticType, unit)) {\n throw new OntologyValidationError(\n `[Sixb] Invalid unit '${unit}' for ${propertyPath} (${semanticType})`\n )\n }\n } else if (unit) {\n throw new OntologyValidationError(\n `[Sixb] Property ${propertyPath} does not define semanticType and cannot accept a unit`\n )\n }\n}\n"
13
- ],
14
- "mappings": "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",
15
- "debugId": "D0967F53F58A924A64756E2164756E21",
16
- "names": []
17
- }
@@ -1,11 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/objects/sdk/where.ts", "../src/objects/sdk/query-builder.ts"],
4
- "sourcesContent": [
5
- "/**\n * Where-clause builder for typed ObjectSet queries.\n *\n * Provides `createWhereBuilder` (predicate DSL) and `resolveWhere` (evaluator).\n * The builder emits object query IR predicates. Property predicates are created\n * on demand through a Proxy, so no runtime ontology access is required —\n * property names are constrained at compile time and validated server-side.\n */\nimport type { ValueType } from \"../../ontology\"\nimport type { ObjectTypeWithPropertyTokens } from \"../../ontology/tokens\"\nimport type { ObjectWhereBuilder, ObjectWhereClause } from \"../../runtime/types\"\nimport type { ObjectQueryPredicate } from \"../query\"\n\nfunction createPropertyPredicate(propertyId: string) {\n const comparison = (op: \"eq\" | \"neq\" | \"lt\" | \"lte\" | \"gt\" | \"gte\") => {\n return (value: unknown) => ({\n propertyId,\n op,\n value,\n })\n }\n\n return {\n eq: comparison(\"eq\"),\n neq: comparison(\"neq\"),\n lt: comparison(\"lt\"),\n lte: comparison(\"lte\"),\n gt: comparison(\"gt\"),\n gte: comparison(\"gte\"),\n in: (values: readonly unknown[]) => ({\n propertyId,\n op: \"in\",\n values,\n }),\n exists: (value = true) => ({\n propertyId,\n op: \"exists\",\n value,\n }),\n contains: (value: unknown) => ({\n propertyId,\n op: \"contains\",\n value,\n }),\n }\n}\n\nexport function createWhereBuilder<\n TObjectType extends ObjectTypeWithPropertyTokens,\n TValueTypes extends readonly ValueType[],\n>(): ObjectWhereBuilder<TObjectType, TValueTypes> {\n const p = new Proxy(\n {},\n {\n get: (_target, propertyId) =>\n typeof propertyId === \"string\" ? createPropertyPredicate(propertyId) : undefined,\n }\n )\n\n return {\n p,\n and: (...items: readonly ObjectQueryPredicate[]) => ({ op: \"and\", items }),\n or: (...items: readonly ObjectQueryPredicate[]) => ({ op: \"or\", items }),\n not: (item: ObjectQueryPredicate) => ({ op: \"not\", item }),\n } as ObjectWhereBuilder<TObjectType, TValueTypes>\n}\n\nexport function resolveWhere<\n TObjectType extends ObjectTypeWithPropertyTokens,\n TValueTypes extends readonly ValueType[],\n>(\n whereFn?: (\n builder: ObjectWhereBuilder<TObjectType, TValueTypes>\n ) =>\n | ObjectWhereClause<TObjectType, TValueTypes>\n | readonly ObjectWhereClause<TObjectType, TValueTypes>[]\n): ObjectQueryPredicate | undefined {\n if (!whereFn) return undefined\n const whereBuilder = createWhereBuilder<TObjectType, TValueTypes>()\n const whereInput = whereFn(whereBuilder)\n if (!whereInput) return undefined\n const predicates = (\n Array.isArray(whereInput) ? whereInput : [whereInput]\n ) as readonly ObjectQueryPredicate[]\n if (predicates.length === 0) return undefined\n return predicates.length === 1 ? predicates[0] : { op: \"and\", items: predicates }\n}\n",
6
- "/**\n * Fluent ObjectSet query builder.\n *\n * This is the TypeScript authoring layer for object queries. It builds the\n * provider-neutral object query IR and delegates execution to an\n * `ObjectQueryExecutor` — the server runtime executor or the HTTP client\n * executor — so the same builder serves both sides.\n */\nimport type { ValueType } from \"../../ontology\"\nimport { OntologyValidationError } from \"../../ontology/errors\"\nimport type { LinkToken, ObjectTypeWithPropertyTokens, PropertyToken } from \"../../ontology/tokens\"\nimport type {\n ListResult,\n ListResultWithoutTotal,\n ObjectExpandBuilder,\n ObjectExpandOptions,\n ObjectQueryBuilder,\n ObjectQueryFacetInput,\n ObjectQueryFacetResult,\n ObjectQueryListOptions,\n ObjectWhereBuilder,\n ObjectWhereClause,\n TwinObject,\n} from \"../../runtime/types\"\nimport { formatObjectQueryExplanation } from \"../query/explain-format\"\nimport type {\n ObjectExpansion,\n ObjectQuery,\n ObjectQueryDirection,\n ObjectQuerySortDirection,\n ObjectQuerySortField,\n} from \"../query/ir\"\nimport { normalizeObjectQuery } from \"../query/normalize\"\nimport type { ObjectQueryExecutor } from \"./query-executor\"\nimport { resolveWhere } from \"./where\"\n\ntype QueryBuilderParams = {\n query: ObjectQuery\n executor: ObjectQueryExecutor\n}\n\nexport function createObjectQueryBuilder<\n TObjectType extends ObjectTypeWithPropertyTokens,\n TRegisteredObjectTypes extends ObjectTypeWithPropertyTokens,\n TValueTypes extends readonly ValueType[],\n>(\n params: QueryBuilderParams\n): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes> {\n return new ObjectQueryBuilderImpl<TObjectType, TRegisteredObjectTypes, TValueTypes>(\n params\n ) as unknown as ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes>\n}\n\nclass ObjectQueryBuilderImpl<\n TObjectType extends ObjectTypeWithPropertyTokens,\n TRegisteredObjectTypes extends ObjectTypeWithPropertyTokens,\n TValueTypes extends readonly ValueType[],\n> {\n constructor(private readonly params: QueryBuilderParams) {}\n\n get ir(): ObjectQuery {\n return normalizeObjectQuery(this.params.query)\n }\n\n where(\n whereFn: (\n builder: ObjectWhereBuilder<TObjectType, TValueTypes>\n ) =>\n | ObjectWhereClause<TObjectType, TValueTypes>\n | readonly ObjectWhereClause<TObjectType, TValueTypes>[]\n ): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes> {\n const predicate = resolveWhere<TObjectType, TValueTypes>(whereFn)\n if (!predicate)\n return this as unknown as ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes>\n\n return this.withQuery({\n kind: \"filter\",\n input: this.ir,\n predicate,\n })\n }\n\n search(\n query: string,\n options?: { fields?: readonly PropertyToken<TObjectType[\"id\"], string>[] }\n ): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes> {\n return this.withQuery({\n kind: \"text\",\n input: this.ir,\n query,\n fields: options?.fields?.map(propertyTokenToId),\n })\n }\n\n vector(\n property: PropertyToken<TObjectType[\"id\"], string>,\n vector: readonly number[],\n options: { k: number }\n ): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes> {\n return this.withQuery({\n kind: \"vector\",\n input: this.ir,\n propertyId: property.id,\n vector,\n k: options.k,\n })\n }\n\n traverse(\n link: LinkToken<TObjectType[\"id\"], string, string>,\n options?: { direction?: \"outgoing\" }\n ): ObjectQueryBuilder<ObjectTypeWithPropertyTokens, TRegisteredObjectTypes, TValueTypes>\n traverse(\n link: LinkToken<string, string, TObjectType[\"id\"] | readonly TObjectType[\"id\"][]>,\n options: { direction: \"incoming\" }\n ): ObjectQueryBuilder<ObjectTypeWithPropertyTokens, TRegisteredObjectTypes, TValueTypes>\n traverse(\n link: LinkToken,\n options: { direction?: ObjectQueryDirection } = {}\n ): ObjectQueryBuilder<ObjectTypeWithPropertyTokens, TRegisteredObjectTypes, TValueTypes> {\n const direction = options.direction ?? \"outgoing\"\n if (direction === \"outgoing\") {\n requireSingleTargetObjectTypeId(link)\n }\n\n return new ObjectQueryBuilderImpl<\n ObjectTypeWithPropertyTokens,\n TRegisteredObjectTypes,\n TValueTypes\n >({\n ...this.params,\n query: {\n kind: \"traverse\",\n input: this.ir,\n linkId: link.id,\n direction,\n // Several object types can declare a link with the same id. The token\n // names exactly one source type, so incoming traversal pins it —\n // matching the result type the fluent API advertises.\n ...(direction === \"incoming\" ? { sourceObjectTypeId: link.objectTypeId } : {}),\n },\n }) as unknown as ObjectQueryBuilder<\n ObjectTypeWithPropertyTokens,\n TRegisteredObjectTypes,\n TValueTypes\n >\n }\n\n expand(\n link: LinkToken<string, string, string | readonly string[]>,\n optionsOrBuild?: ObjectExpandOptions<ObjectTypeWithPropertyTokens> | NestedExpandBuild,\n build?: NestedExpandBuild\n ): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes> {\n return this.withQuery({\n kind: \"expand\",\n input: this.ir,\n expansions: [buildExpansion(link, optionsOrBuild, build)],\n })\n }\n\n orderBy(\n property: PropertyToken<TObjectType[\"id\"], string>,\n direction?: ObjectQuerySortDirection\n ): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes> {\n return this.withQuery(\n appendSortField(this.ir, {\n kind: \"property\",\n propertyId: property.id,\n direction,\n })\n )\n }\n\n orderByRelevance(\n direction?: ObjectQuerySortDirection\n ): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes> {\n return this.withQuery(\n appendSortField(this.ir, {\n kind: \"relevance\",\n direction,\n })\n )\n }\n\n limit(limit: number): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes> {\n return this.withQuery({\n kind: \"limit\",\n input: this.ir,\n limit,\n })\n }\n\n page(input: {\n pageSize: number\n pageToken?: string\n }): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes> {\n return this.withQuery({\n kind: \"page\",\n input: this.ir,\n pageSize: input.pageSize,\n pageToken: input.pageToken,\n })\n }\n\n validate() {\n if (!this.params.executor.validate) {\n throw new OntologyValidationError(\n \"[Sixb] validate() requires ontology access and is not supported by this query executor. Execute the query to get server-side validation.\"\n )\n }\n return this.params.executor.validate(this.ir)\n }\n\n explain() {\n if (!this.params.executor.explain) {\n throw new OntologyValidationError(\n \"[Sixb] explain() requires ontology access and is not supported by this query executor.\"\n )\n }\n return this.params.executor.explain(this.ir)\n }\n\n formatExplanation(): string {\n return formatObjectQueryExplanation(this.explain())\n }\n\n async list(): Promise<ListResult<TwinObject<TObjectType, TValueTypes>>>\n async list(options: {\n includeTotal: false\n }): Promise<ListResultWithoutTotal<TwinObject<TObjectType, TValueTypes>>>\n async list(options: {\n includeTotal?: true\n }): Promise<ListResult<TwinObject<TObjectType, TValueTypes>>>\n async list(\n options?: ObjectQueryListOptions\n ): Promise<\n | ListResult<TwinObject<TObjectType, TValueTypes>>\n | ListResultWithoutTotal<TwinObject<TObjectType, TValueTypes>>\n > {\n const result = await this.params.executor.list(this.ir, {\n includeTotal: options?.includeTotal,\n })\n const objects = result.objects.map(\n (row) => row as unknown as TwinObject<TObjectType, TValueTypes>\n )\n\n if (options?.includeTotal === false) {\n return {\n objects,\n hasMore: result.hasMore,\n nextPageToken: result.nextPageToken,\n }\n }\n\n return {\n objects,\n hasMore: result.hasMore,\n nextPageToken: result.nextPageToken,\n total: result.total ?? result.objects.length,\n }\n }\n\n async count(): Promise<number> {\n return this.params.executor.count(this.ir)\n }\n\n async exists(): Promise<boolean> {\n return this.params.executor.exists(this.ir)\n }\n\n async facets(\n input: readonly ObjectQueryFacetInput<TObjectType>[]\n ): Promise<ObjectQueryFacetResult[]> {\n return this.params.executor.facets(\n this.ir,\n input.map((facet) => ({\n propertyId: facet.property.id,\n limit: facet.limit,\n }))\n )\n }\n\n async first(): Promise<TwinObject<TObjectType, TValueTypes> | null> {\n const result = await this.params.executor.list({ kind: \"limit\", input: this.ir, limit: 1 })\n const row = result.objects[0]\n return row ? (row as unknown as TwinObject<TObjectType, TValueTypes>) : null\n }\n\n private withQuery(\n query: ObjectQuery\n ): ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes> {\n return new ObjectQueryBuilderImpl<TObjectType, TRegisteredObjectTypes, TValueTypes>({\n ...this.params,\n query,\n }) as unknown as ObjectQueryBuilder<TObjectType, TRegisteredObjectTypes, TValueTypes>\n }\n}\n\ntype AnyExpandBuilder = ObjectExpandBuilder<\n ObjectTypeWithPropertyTokens,\n ObjectTypeWithPropertyTokens\n>\ntype NestedExpandBuild = (nested: AnyExpandBuilder) => AnyExpandBuilder\n\n/**\n * Runtime backing for the nested `.expand(..., (e) => …)` callback. Immutable,\n * mirroring the query builder: each `expand` returns a new instance so the\n * accumulated expansions are never shared between branches.\n */\nclass ObjectExpandBuilderImpl {\n constructor(readonly expansions: readonly ObjectExpansion[] = []) {}\n\n expand(\n link: LinkToken<string, string, string | readonly string[]>,\n optionsOrBuild?: ObjectExpandOptions<ObjectTypeWithPropertyTokens> | NestedExpandBuild,\n build?: NestedExpandBuild\n ): ObjectExpandBuilderImpl {\n return new ObjectExpandBuilderImpl([\n ...this.expansions,\n buildExpansion(link, optionsOrBuild, build),\n ])\n }\n}\n\nfunction buildExpansion(\n link: LinkToken<string, string, string | readonly string[]>,\n optionsOrBuild: ObjectExpandOptions<ObjectTypeWithPropertyTokens> | NestedExpandBuild | undefined,\n build: NestedExpandBuild | undefined\n): ObjectExpansion {\n // `.expand(link, build)` and `.expand(link, options, build)` are both valid:\n // a function in the second slot is the nested builder, otherwise it is options.\n const options = typeof optionsOrBuild === \"function\" ? undefined : optionsOrBuild\n const nestedBuild = typeof optionsOrBuild === \"function\" ? optionsOrBuild : build\n\n let nested: readonly ObjectExpansion[] = []\n if (nestedBuild) {\n const result = nestedBuild(new ObjectExpandBuilderImpl() as unknown as AnyExpandBuilder)\n nested = (result as unknown as ObjectExpandBuilderImpl).expansions\n }\n\n return {\n linkId: link.id,\n direction: \"outgoing\",\n ...(options?.limit !== undefined ? { limit: options.limit } : {}),\n ...(options?.orderBy ? { orderBy: options.orderBy.map(expansionSortToField) } : {}),\n ...(nested.length > 0 ? { expand: nested } : {}),\n }\n}\n\nfunction expansionSortToField(sort: {\n property: PropertyToken\n direction?: ObjectQuerySortDirection\n}): ObjectQuerySortField {\n return { kind: \"property\", propertyId: sort.property.id, direction: sort.direction }\n}\n\nfunction appendSortField(\n query: ObjectQuery,\n field: Extract<ObjectQuery, { kind: \"sort\" }>[\"fields\"][number]\n): ObjectQuery {\n if (query.kind === \"sort\") {\n return {\n ...query,\n fields: [...query.fields, field],\n }\n }\n\n return {\n kind: \"sort\",\n input: query,\n fields: [field],\n }\n}\n\nfunction propertyTokenToId(token: PropertyToken): string {\n return token.id\n}\n\nfunction requireSingleTargetObjectTypeId(link: LinkToken): void {\n const target = link.targetObjectTypeId\n if (target === \"*\" || typeof target !== \"string\") {\n throw new OntologyValidationError(\n \"[Sixb] Object query traverse requires a single concrete outgoing target type\"\n )\n }\n}\n"
7
- ],
8
- "mappings": "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",
9
- "debugId": "AD206E51C59533FD64756E2164756E21",
10
- "names": []
11
- }
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/materialization/errors.ts"],
4
- "sourcesContent": [
5
- "import { OntologyValidationError } from \"../ontology/errors\"\n\nexport type MaterializationConflictKind =\n | \"idempotency\"\n | \"projection-fence\"\n | \"source-materialization\"\n | \"execution-lost\"\n | \"run-correlation\"\n | \"effective-state\"\n | \"timeseries-point\"\n | \"outbox-lease\"\n\nfunction prefixMessage(message: string): string {\n return message.startsWith(\"[Sixb]\") ? message : `[Sixb] ${message}`\n}\n\n/**\n * A validation failure raised inside the Materializer.\n *\n * Extends `OntologyValidationError` because it is the same class of failure a caller already\n * handles: batch writes surface it rewrapped as one, so a single write must not require a second\n * `instanceof` branch to catch the identical error.\n */\nexport class MaterializationValidationError extends OntologyValidationError {\n readonly name: string = \"MaterializationValidationError\"\n\n constructor(message: string) {\n super(prefixMessage(message))\n }\n}\n\n/** Structured missing-object failure raised by Materializer telemetry validation. */\nexport class MaterializationObjectNotFoundError extends MaterializationValidationError {\n override readonly name = \"MaterializationObjectNotFoundError\"\n\n constructor(\n readonly objectTypeId: string,\n readonly primaryId: string\n ) {\n super(`Cannot append telemetry to missing object '${objectTypeId}:${primaryId}'.`)\n }\n}\n\n/**\n * Abort reason for an explicit, terminal cancellation of a materialization.\n *\n * Generic aborts (worker shutdown, delivery loss, timeout) remain retryable and preserve staged\n * source state. Passing this error as an AbortSignal reason authorizes that state to be abandoned.\n */\nexport class MaterializationCancellationError extends Error {\n readonly name = \"AbortError\"\n\n constructor(message = \"Materialization explicitly cancelled.\", options?: ErrorOptions) {\n super(prefixMessage(message), options)\n }\n}\n\nexport class MaterializationConflictError extends Error {\n readonly name: string = \"MaterializationConflictError\"\n\n constructor(\n readonly kind: MaterializationConflictKind,\n message: string\n ) {\n super(prefixMessage(message))\n }\n}\n\nexport function isMaterializationConflictError(\n error: unknown\n): error is MaterializationConflictError {\n return error instanceof MaterializationConflictError\n}\n"
6
- ],
7
- "mappings": ";;;;;;AAYA,SAAS,aAAa,CAAC,SAAyB;AAAA,EAC9C,OAAO,QAAQ,WAAW,QAAQ,IAAI,UAAU,UAAU;AAAA;AAAA;AAUrD,MAAM,wCAAuC,yBAAwB;AAAA,EACjE,OAAe;AAAA,EAExB,WAAW,CAAC,SAAiB;AAAA,IAC3B,MAAM,cAAc,OAAO,CAAC;AAAA;AAEhC;AAAA;AAGO,MAAM,4CAA2C,gCAA+B;AAAA,EAI1E;AAAA,EACA;AAAA,EAJO,OAAO;AAAA,EAEzB,WAAW,CACA,cACA,WACT;AAAA,IACA,MAAM,8CAA8C,gBAAgB,aAAa;AAAA,IAHxE;AAAA,IACA;AAAA;AAIb;AAAA;AAQO,MAAM,0CAAyC,MAAM;AAAA,EACjD,OAAO;AAAA,EAEhB,WAAW,CAAC,UAAU,yCAAyC,SAAwB;AAAA,IACrF,MAAM,cAAc,OAAO,GAAG,OAAO;AAAA;AAEzC;AAAA;AAEO,MAAM,sCAAqC,MAAM;AAAA,EAI3C;AAAA,EAHF,OAAe;AAAA,EAExB,WAAW,CACA,MACT,SACA;AAAA,IACA,MAAM,cAAc,OAAO,CAAC;AAAA,IAHnB;AAAA;AAKb;AAEO,SAAS,+BAA8B,CAC5C,OACuC;AAAA,EACvC,OAAO,iBAAiB;AAAA;",
8
- "debugId": "CB6946FFF6F6411164756E2164756E21",
9
- "names": []
10
- }
@@ -1,15 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/lake-storage/changes.ts", "../src/lake-storage/definition-updates.ts", "../src/lake-storage/in-memory.ts", "../src/lake-storage/merge.ts", "../src/lake-storage/source-ordering.ts", "../src/lake-storage/version-inputs.ts"],
4
- "sourcesContent": [
5
- "import type { DatasetColumnDefinition } from \"../datasets\"\nimport { LakeStorageError } from \"./errors\"\nimport type { DatasetVersion, ReadDatasetChangesInput } from \"./types\"\n\n/** Shared eligibility checks for providers comparing pinned row images. */\nexport function resolveDatasetChangeColumns(\n input: ReadDatasetChangesInput,\n before: DatasetVersion | null,\n after: DatasetVersion | null\n): readonly DatasetColumnDefinition[] | null {\n for (const value of [input.datasetId, input.fromVersionId, input.toVersionId]) {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new LakeStorageError(\n \"[LakeStorage] Change reads require explicit dataset and version ids.\"\n )\n }\n }\n if (\n input.keyColumns.length === 0 ||\n new Set(input.keyColumns).size !== input.keyColumns.length ||\n input.columns.length === 0 ||\n new Set(input.columns).size !== input.columns.length ||\n input.columns.some((column) => typeof column !== \"string\" || column.length === 0) ||\n input.keyColumns.some((column) => !input.columns.includes(column))\n ) {\n throw new LakeStorageError(\n \"[LakeStorage] Change reads require distinct columns including every key column.\"\n )\n }\n if (!before || !after) return null\n const oldColumns = new Map(before.schema.columns.map((column) => [column.name, column]))\n const newColumns = new Map(after.schema.columns.map((column) => [column.name, column]))\n const columns: DatasetColumnDefinition[] = []\n for (const name of input.columns) {\n const previous = oldColumns.get(name)\n const next = newColumns.get(name)\n if (!previous || !next || previous.type !== next.type) return null\n // Projection identities are nonblank strings. Other key types keep the full-read path.\n if (input.keyColumns.includes(name) && next.type !== \"string\") return null\n columns.push(next)\n }\n return columns\n}\n",
6
- "import type { DatasetColumnDefinition, DatasetDefinition } from \"../datasets\"\nimport { assertDatasetDefinition } from \"../datasets/validation\"\nimport { LakeStorageError } from \"./errors\"\nimport type { LakeStorage } from \"./types\"\n\nexport type DatasetSchemaUpdatePlan =\n | { readonly kind: \"none\" }\n | {\n readonly kind: \"addNullableColumns\"\n readonly columns: readonly DatasetColumnDefinition[]\n }\n\nexport interface DatasetMetadataUpdatePlan {\n readonly descriptionChanged: boolean\n readonly partitionByChanged: boolean\n}\n\nexport interface DatasetDefinitionUpdatePlan {\n readonly existing: DatasetDefinition\n readonly requested: DatasetDefinition\n readonly definition: DatasetDefinition\n readonly schema: DatasetSchemaUpdatePlan\n readonly metadata: DatasetMetadataUpdatePlan\n readonly changed: boolean\n}\n\nconst SCHEMA_UPDATE_V1_POLICY =\n \"Dataset definition updates V1 support only adding nullable columns.\"\n\n/**\n * Build a provider-neutral update plan for two versions of the same dataset\n * definition. Core owns the definition diff; storage providers own how much of\n * the plan they can apply.\n */\nexport function planDatasetDefinitionUpdate(\n existing: DatasetDefinition,\n requested: DatasetDefinition\n): DatasetDefinitionUpdatePlan {\n assertSameDataset(existing, requested)\n assertDatasetDefinition(requested, (message) => new LakeStorageError(`[SixbLake] ${message}`))\n if (existing.sequenceBy !== requested.sequenceBy) {\n throw new LakeStorageError(\n `[SixbLake] Dataset '${requested.id}' sequenceBy is immutable. Create a new dataset and backfill to adopt or change source ordering.`\n )\n }\n assertPrimaryKeyUnchanged(existing, requested)\n\n const addedColumns = getAddedColumnsAfterValidatingExistingColumns(existing, requested)\n assertAddedColumnsAreNullable(requested.id, addedColumns)\n\n const schema = toSchemaUpdatePlan(addedColumns)\n const definition = mergeDatasetDefinition(existing, requested, addedColumns)\n const metadata: DatasetMetadataUpdatePlan = {\n descriptionChanged: existing.description !== definition.description,\n partitionByChanged: !areStringArraysEqual(existing.partitionBy, definition.partitionBy),\n }\n\n return {\n existing: structuredClone(existing),\n requested: structuredClone(requested),\n definition,\n schema,\n metadata,\n changed: schema.kind !== \"none\" || metadata.descriptionChanged || metadata.partitionByChanged,\n }\n}\n\n/**\n * Strict providers can use this helper when they do not support schema\n * evolution. Metadata-only compatible additions are still merged.\n */\nexport function mergeStrictDatasetDefinition(options: {\n readonly existing?: DatasetDefinition | null\n readonly next: DatasetDefinition\n}): DatasetDefinition {\n assertDatasetDefinition(options.next, (message) => new LakeStorageError(`[SixbLake] ${message}`))\n if (!options.existing) {\n return structuredClone(options.next)\n }\n\n const plan = planDatasetDefinitionUpdate(options.existing, options.next)\n if (plan.schema.kind !== \"none\") {\n throw new LakeStorageError(\n `[SixbLake] Dataset '${options.next.id}' cannot be redefined with an incompatible schema.`\n )\n }\n\n return structuredClone(plan.definition)\n}\n\nexport interface AssertLakeDatasetDefinitionsCompatibleOptions {\n readonly lakeStorage: LakeStorage\n readonly definitions: readonly DatasetDefinition[]\n}\n\nexport async function assertLakeDatasetDefinitionsCompatible(\n options: AssertLakeDatasetDefinitionsCompatibleOptions\n): Promise<void> {\n await options.lakeStorage.assertDatasetDefinitionsCompatible(options.definitions)\n}\n\nfunction assertSameDataset(existing: DatasetDefinition, requested: DatasetDefinition): void {\n if (existing.id !== requested.id) {\n throw new LakeStorageError(\n `[SixbLake] Cannot update dataset '${existing.id}' with definition for '${requested.id}'.`\n )\n }\n}\n\nfunction assertPrimaryKeyUnchanged(\n existing: DatasetDefinition,\n requested: DatasetDefinition\n): void {\n const existingPrimaryKey = existing.primaryKey\n const requestedPrimaryKey = requested.primaryKey\n const unchanged =\n existingPrimaryKey === undefined || requestedPrimaryKey === undefined\n ? existingPrimaryKey === requestedPrimaryKey\n : areDefinitionValuesEqual(existingPrimaryKey, requestedPrimaryKey)\n\n if (!unchanged) {\n throw new LakeStorageError(\n `[SixbLake] Dataset '${requested.id}' cannot be redefined with an incompatible primaryKey. Primary keys are immutable.`\n )\n }\n}\n\nfunction getAddedColumnsAfterValidatingExistingColumns(\n existing: DatasetDefinition,\n requested: DatasetDefinition\n): readonly DatasetColumnDefinition[] {\n const existingColumns = existing.schema.columns\n const requestedColumnsByName = new Map(\n requested.schema.columns.map((column) => [column.name, column])\n )\n\n // Existing columns are matched by name, not position. Developers can reorder\n // declarations for readability without implying a storage-level schema change.\n for (const existingColumn of existingColumns) {\n const requestedColumn = requestedColumnsByName.get(existingColumn.name)\n if (requestedColumn === undefined) {\n throwUnsupportedSchemaUpdate(\n requested.id,\n `dropping column '${existingColumn.name}' is not supported`\n )\n }\n\n assertExistingColumnUnchanged(requested.id, existingColumn, requestedColumn)\n }\n\n const existingColumnNames = new Set(existingColumns.map((column) => column.name))\n return requested.schema.columns.filter((column) => !existingColumnNames.has(column.name))\n}\n\nfunction assertAddedColumnsAreNullable(\n datasetId: string,\n addedColumns: readonly DatasetColumnDefinition[]\n): void {\n for (const column of addedColumns) {\n // Existing rows have no value for a new column. Until DatasetDefinition\n // supports defaults or backfills, only nullable columns are safe to add.\n if (!isNullable(column)) {\n throwUnsupportedSchemaUpdate(\n datasetId,\n `adding required column '${column.name}' is not supported`\n )\n }\n }\n}\n\nfunction assertExistingColumnUnchanged(\n datasetId: string,\n existing: DatasetColumnDefinition,\n requested: DatasetColumnDefinition\n): void {\n if (existing.type !== requested.type) {\n throwUnsupportedSchemaUpdate(\n datasetId,\n `changing column '${existing.name}' type from '${existing.type}' to '${requested.type}' is not supported`\n )\n }\n\n if (isNullable(existing) !== isNullable(requested)) {\n throwUnsupportedSchemaUpdate(\n datasetId,\n `changing column '${existing.name}' nullability is not supported`\n )\n }\n}\n\nfunction toSchemaUpdatePlan(\n addedColumns: readonly DatasetColumnDefinition[]\n): DatasetSchemaUpdatePlan {\n if (addedColumns.length === 0) {\n return { kind: \"none\" }\n }\n\n return {\n kind: \"addNullableColumns\",\n columns: cloneColumns(addedColumns),\n }\n}\n\nfunction mergeDatasetDefinition(\n existing: DatasetDefinition,\n requested: DatasetDefinition,\n addedColumns: readonly DatasetColumnDefinition[]\n): DatasetDefinition {\n assertCompatibleMetadataField(\n requested.id,\n \"description\",\n existing.description,\n requested.description\n )\n assertCompatibleMetadataField(\n requested.id,\n \"partitionBy\",\n existing.partitionBy,\n requested.partitionBy\n )\n\n const columns = [...cloneColumns(existing.schema.columns), ...cloneColumns(addedColumns)]\n const primaryKey = existing.primaryKey\n const partitionBy = requested.partitionBy ?? existing.partitionBy\n const description = requested.description ?? existing.description\n\n return {\n kind: \"dataset\",\n id: requested.id,\n schema: { columns },\n ...(primaryKey !== undefined ? { primaryKey: structuredClone(primaryKey) } : {}),\n ...(existing.sequenceBy !== undefined ? { sequenceBy: existing.sequenceBy } : {}),\n ...(partitionBy !== undefined ? { partitionBy: [...partitionBy] } : {}),\n ...(description !== undefined ? { description } : {}),\n }\n}\n\nfunction assertCompatibleMetadataField(\n datasetId: string,\n field: \"description\" | \"partitionBy\",\n existing: string | readonly string[] | undefined,\n requested: string | readonly string[] | undefined\n): void {\n if (\n existing === undefined ||\n requested === undefined ||\n areDefinitionValuesEqual(existing, requested)\n ) {\n return\n }\n\n throw new LakeStorageError(\n `[SixbLake] Dataset '${datasetId}' cannot be redefined with an incompatible ${field}.`\n )\n}\n\nfunction areStringArraysEqual(\n left: readonly string[] | undefined,\n right: readonly string[] | undefined\n): boolean {\n if (left === undefined || right === undefined) {\n return left === right\n }\n\n return left.length === right.length && left.every((value, index) => value === right[index])\n}\n\nfunction areDefinitionValuesEqual(\n left: string | readonly string[],\n right: string | readonly string[]\n): boolean {\n if (typeof left === \"string\" || typeof right === \"string\") {\n return left === right\n }\n\n return areStringArraysEqual(left, right)\n}\n\nfunction isNullable(column: DatasetColumnDefinition): boolean {\n return column.nullable === true\n}\n\nfunction cloneColumns(\n columns: readonly DatasetColumnDefinition[]\n): readonly DatasetColumnDefinition[] {\n return columns.map((column) => ({ ...column }))\n}\n\nfunction throwUnsupportedSchemaUpdate(datasetId: string, detail: string): never {\n throw new LakeStorageError(\n `[SixbLake] Dataset '${datasetId}' cannot apply schema update because ${detail}. ${SCHEMA_UPDATE_V1_POLICY}`\n )\n}\n",
7
- "import { randomUUID } from \"node:crypto\"\nimport { isDeepStrictEqual } from \"node:util\"\nimport type { DatasetDefinition, DatasetSchema, MergeChange } from \"../datasets\"\nimport { getDatasetRowValidationError } from \"../datasets/validation\"\nimport { resolveDatasetChangeColumns } from \"./changes\"\nimport { mergeStrictDatasetDefinition } from \"./definition-updates\"\nimport { LakeConcurrencyError, LakeStorageError } from \"./errors\"\nimport type {\n BeginDatasetMergeInput,\n CommitDatasetMergeInput,\n DatasetMergeCommitResult,\n LakeMergeSession,\n} from \"./merge\"\nimport { retryDatasetMergeCommit } from \"./merge\"\nimport {\n cloneDatasetMergeChange,\n encodeDatasetPrimaryKey,\n getDatasetMergeChangeValidationError,\n getDatasetPrimaryKeyColumns,\n} from \"./merge-validation\"\nimport {\n assertUnsequencedDatasetWrite,\n type DatasetSequenceState,\n datasetSequenceChange,\n reconcileDatasetSequences,\n} from \"./source-ordering\"\nimport type {\n BeginDatasetWriteInput,\n CommitDatasetWriteInput,\n DatasetCatalogState,\n DatasetChanges,\n DatasetRow,\n DatasetRowChange,\n DatasetVersion,\n DatasetWriteCommitResult,\n DatasetWriteMode,\n LakeStorage,\n LakeWriteSession,\n ReadDatasetChangesInput,\n ReadDatasetRowsInput,\n} from \"./types\"\nimport { hasDatasetInputChanges } from \"./version-inputs\"\n\nfunction cloneDatasetDefinition(definition: DatasetDefinition): DatasetDefinition {\n return structuredClone(definition)\n}\n\nfunction cloneDatasetVersion(version: DatasetVersion): DatasetVersion {\n return {\n ...structuredClone(version),\n createdAt: new Date(version.createdAt),\n }\n}\n\nfunction cloneRow(row: DatasetRow): DatasetRow {\n return structuredClone(row)\n}\n\nfunction selectColumns(row: DatasetRow, columns?: readonly string[]): DatasetRow {\n if (!columns || columns.length === 0) {\n return cloneRow(row)\n }\n\n const selected: Record<string, unknown> = {}\n for (const column of columns) {\n selected[column] = row[column]\n }\n return selected\n}\n\n// Canonical content key for unchanged-write detection. JSON.stringify\n// serializes Date values via toJSON, matching how rows persist as JSON;\n// missing and undefined nullable values normalize to null. The unchanged-write\n// semantics are pinned by the shared lake-storage contract suite.\nfunction rowContentKey(row: DatasetRow, schema: DatasetSchema): string {\n return JSON.stringify(schema.columns.map((column) => row[column.name] ?? null))\n}\n\n// Order-insensitive multiset equality over canonical row keys.\nfunction sameRowContent(left: readonly string[], right: readonly string[]): boolean {\n if (left.length !== right.length) {\n return false\n }\n\n const sortedLeft = [...left].sort()\n const sortedRight = [...right].sort()\n return sortedLeft.every((key, index) => key === sortedRight[index])\n}\n\nfunction assertDatasetId(datasetId: string): void {\n if (datasetId.trim().length === 0) {\n throw new LakeStorageError(\"[LakeStorage] Dataset id must not be empty\")\n }\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n}\n\nclass InMemoryLakeWriteSession implements LakeWriteSession {\n private readonly rows: DatasetRow[] = []\n private readonly primaryKeys = new Set<string>()\n private closed = false\n\n constructor(\n private readonly storage: InMemoryLakeStorage,\n private readonly input: BeginDatasetWriteInput\n ) {}\n\n async writeRows(rows: Iterable<DatasetRow> | AsyncIterable<DatasetRow>): Promise<void> {\n this.assertOpen()\n\n const stagedRows: DatasetRow[] = []\n const stagedPrimaryKeys = new Set<string>()\n for await (const row of rows) {\n const validationError = getDatasetRowValidationError(row, this.input.dataset)\n if (validationError) {\n throw new LakeStorageError(`[LakeStorage] ${validationError}`)\n }\n\n if (getDatasetPrimaryKeyColumns(this.input.dataset) !== null) {\n const primaryKey = encodeDatasetPrimaryKey(this.input.dataset, row)\n if (this.primaryKeys.has(primaryKey) || stagedPrimaryKeys.has(primaryKey)) {\n throw new LakeStorageError(\n `[LakeStorage] Dataset '${this.input.dataset.id}' write contains duplicate primary key ${primaryKey}.`\n )\n }\n stagedPrimaryKeys.add(primaryKey)\n }\n\n stagedRows.push(cloneRow(row))\n }\n\n this.rows.push(...stagedRows)\n for (const primaryKey of stagedPrimaryKeys) {\n this.primaryKeys.add(primaryKey)\n }\n }\n\n async commit(input?: CommitDatasetWriteInput): Promise<DatasetWriteCommitResult> {\n this.assertOpen()\n this.closed = true\n return this.storage.commitWrite({\n write: this.input,\n rows: this.rows,\n commit: input,\n })\n }\n\n async abort(): Promise<void> {\n this.closed = true\n this.rows.length = 0\n }\n\n private assertOpen(): void {\n if (this.closed) {\n throw new LakeStorageError(\"[LakeStorage] Write session is already closed\")\n }\n }\n}\n\nclass InMemoryLakeMergeSession implements LakeMergeSession {\n private readonly changes: MergeChange<DatasetRow, DatasetRow>[] = []\n private closed = false\n\n constructor(\n private readonly storage: InMemoryLakeStorage,\n private readonly input: BeginDatasetMergeInput,\n private readonly baseVersionId: string | null\n ) {}\n\n async writeChanges(\n changes:\n | Iterable<MergeChange<DatasetRow, DatasetRow>>\n | AsyncIterable<MergeChange<DatasetRow, DatasetRow>>\n ): Promise<void> {\n this.assertOpen()\n\n const stagedChanges: MergeChange<DatasetRow, DatasetRow>[] = []\n for await (const change of changes) {\n const validationError = getDatasetMergeChangeValidationError(change, this.input.dataset)\n if (validationError) {\n throw new LakeStorageError(`[LakeStorage] ${validationError}`)\n }\n stagedChanges.push(cloneDatasetMergeChange(change))\n }\n this.changes.push(...stagedChanges)\n }\n\n async commit(input?: CommitDatasetMergeInput): Promise<DatasetMergeCommitResult> {\n this.assertOpen()\n this.closed = true\n return retryDatasetMergeCommit(this.input, input, async (rebase) =>\n this.storage.commitMerge({\n merge: this.input,\n baseVersionId: rebase\n ? ((await this.storage.getLatestVersion(this.input.dataset.id))?.versionId ?? null)\n : this.baseVersionId,\n changes: this.changes,\n commit: input,\n })\n )\n }\n\n async abort(): Promise<void> {\n this.closed = true\n this.changes.length = 0\n }\n\n private assertOpen(): void {\n if (this.closed) {\n throw new LakeStorageError(\"[LakeStorage] Merge session is already closed\")\n }\n }\n}\n\nexport class InMemoryLakeStorage implements LakeStorage {\n private readonly datasets = new Map<string, DatasetDefinition>()\n private readonly versionsByDataset = new Map<string, DatasetVersion[]>()\n private readonly rowsByVersionId = new Map<string, readonly DatasetRow[]>()\n private readonly sequencesByVersionId = new Map<string, Map<string, DatasetSequenceState>>()\n private readonly latestVersionIdByDataset = new Map<string, string>()\n private readonly commitLocks = new Map<string, Promise<void>>()\n\n async createDataset(definition: DatasetDefinition): Promise<DatasetDefinition> {\n assertDatasetId(definition.id)\n const existing = this.datasets.get(definition.id)\n const stored = mergeStrictDatasetDefinition({\n existing,\n next: definition,\n })\n this.datasets.set(definition.id, stored)\n return cloneDatasetDefinition(stored)\n }\n\n async assertDatasetDefinitionsCompatible(\n definitions: readonly DatasetDefinition[]\n ): Promise<void> {\n const failures: string[] = []\n\n for (const definition of definitions) {\n try {\n assertDatasetId(definition.id)\n const existing = this.datasets.get(definition.id)\n if (!existing) {\n continue\n }\n\n mergeStrictDatasetDefinition({\n existing,\n next: definition,\n })\n } catch (error) {\n failures.push(`- ${definition.id}: ${errorMessage(error)}`)\n }\n }\n\n if (failures.length > 0) {\n const details = failures.join(\"\\n\")\n throw new LakeStorageError(\n `[SixbLake] Lake dataset definition check failed for ${failures.length} dataset(s).\\n${details}`\n )\n }\n }\n\n async getDataset(datasetId: string): Promise<DatasetDefinition | null> {\n const definition = this.datasets.get(datasetId)\n return definition ? cloneDatasetDefinition(definition) : null\n }\n\n async listDatasets(): Promise<readonly DatasetDefinition[]> {\n return [...this.datasets.values()].map((definition) => cloneDatasetDefinition(definition))\n }\n\n async listDatasetCatalogState(\n datasetIds: readonly string[]\n ): Promise<readonly DatasetCatalogState[]> {\n return Promise.all(\n datasetIds.map(async (datasetId) => {\n if (!this.datasets.has(datasetId)) {\n return { datasetId, materialized: false, latestVersion: null }\n }\n\n const latest = await this.getLatestVersion(datasetId)\n return {\n datasetId,\n materialized: true,\n latestVersion: latest\n ? {\n datasetId: latest.datasetId,\n versionId: latest.versionId,\n mode: latest.mode,\n createdAt: latest.createdAt,\n ...(latest.rowCount !== undefined ? { rowCount: latest.rowCount } : {}),\n }\n : null,\n }\n })\n )\n }\n\n async listVersions(datasetId: string, limit?: number): Promise<readonly DatasetVersion[]> {\n const versions = [...(this.versionsByDataset.get(datasetId) ?? [])]\n .sort((left, right) => right.createdAt.getTime() - left.createdAt.getTime())\n .map((version) => cloneDatasetVersion(version))\n\n return limit === undefined ? versions : versions.slice(0, Math.max(0, limit))\n }\n\n async beginWrite(input: BeginDatasetWriteInput): Promise<LakeWriteSession> {\n const definition = await this.getDataset(input.dataset.id)\n if (!definition) {\n throw new LakeStorageError(`[LakeStorage] Unknown dataset '${input.dataset.id}'`)\n }\n\n assertUnsequencedDatasetWrite(definition)\n return new InMemoryLakeWriteSession(this, {\n ...input,\n dataset: definition,\n mode: input.mode ?? \"snapshot\",\n })\n }\n\n async beginMerge(input: BeginDatasetMergeInput): Promise<LakeMergeSession> {\n const definition = await this.getDataset(input.dataset.id)\n if (!definition) {\n throw new LakeStorageError(`[LakeStorage] Unknown dataset '${input.dataset.id}'`)\n }\n if (getDatasetPrimaryKeyColumns(definition) === null) {\n throw new LakeStorageError(\n `[LakeStorage] Dataset '${definition.id}' must define a primaryKey before it can be merged.`\n )\n }\n\n const latestVersion = await this.getLatestVersion(definition.id)\n if (\n input.expectedLatestVersionId !== undefined &&\n latestVersion?.versionId !== input.expectedLatestVersionId\n ) {\n throw new LakeConcurrencyError(\n `[LakeStorage] Optimistic merge start failed for dataset '${definition.id}': expected latest version '${input.expectedLatestVersionId}', found '${latestVersion?.versionId ?? \"none\"}'`\n )\n }\n return new InMemoryLakeMergeSession(\n this,\n {\n ...input,\n dataset: definition,\n },\n latestVersion?.versionId ?? null\n )\n }\n\n async getLatestVersion(datasetId: string): Promise<DatasetVersion | null> {\n const latestVersionId = this.latestVersionIdByDataset.get(datasetId)\n if (!latestVersionId) {\n return null\n }\n\n return this.getVersion(datasetId, latestVersionId)\n }\n\n async getVersion(datasetId: string, versionId: string): Promise<DatasetVersion | null> {\n const versions = this.versionsByDataset.get(datasetId) ?? []\n const version = versions.find((candidate) => candidate.versionId === versionId)\n return version ? cloneDatasetVersion(version) : null\n }\n\n async *readRows(input: ReadDatasetRowsInput): AsyncIterable<DatasetRow> {\n input.signal?.throwIfAborted()\n const definition = this.datasets.get(input.datasetId)\n if (!definition) {\n throw new LakeStorageError(`[LakeStorage] Unknown dataset '${input.datasetId}'`)\n }\n\n const version =\n input.versionId === undefined\n ? await this.getLatestVersion(input.datasetId)\n : await this.getVersion(input.datasetId, input.versionId)\n\n if (!version) {\n throw new LakeStorageError(\n `[LakeStorage] No committed version found for dataset '${input.datasetId}'`\n )\n }\n\n const offset = Math.max(0, input.offset ?? 0)\n const limit = input.limit === undefined ? undefined : Math.max(0, input.limit)\n const rows = this.rowsByVersionId\n .get(version.versionId)\n ?.slice(offset, limit === undefined ? undefined : offset + limit)\n\n for (const row of rows ?? []) {\n input.signal?.throwIfAborted()\n yield selectColumns(row, input.columns)\n }\n }\n\n async readChanges(input: ReadDatasetChangesInput): Promise<DatasetChanges | null> {\n input.signal?.throwIfAborted()\n const before = await this.getVersion(input.datasetId, input.fromVersionId)\n const after = await this.getVersion(input.datasetId, input.toVersionId)\n if (!resolveDatasetChangeColumns(input, before, after)) return null\n const previous = this.rowsByVersionId.get(input.fromVersionId)!\n const next = this.rowsByVersionId.get(input.toVersionId)!\n const index = (rows: readonly DatasetRow[]) => {\n const result = new Map<string, DatasetRow>()\n for (const row of rows) {\n input.signal?.throwIfAborted()\n const values = input.keyColumns.map((column) => row[column])\n if (values.some((value) => typeof value !== \"string\" || value.trim().length === 0))\n return null\n const key = JSON.stringify(values)\n if (result.has(key)) return null\n result.set(key, row)\n }\n return result\n }\n const oldRows = index(previous)\n const newRows = index(next)\n if (!oldRows || !newRows) return null\n let pending: DatasetRowChange[] = []\n for (const [key, row] of oldRows) {\n const newRow = newRows.get(key)\n if (\n !newRow ||\n input.columns.some(\n (column) => !isDeepStrictEqual(row[column] ?? null, newRow[column] ?? null)\n )\n ) {\n pending.push({\n before: selectColumns(row, input.columns),\n after: newRow ? selectColumns(newRow, input.columns) : null,\n })\n }\n }\n for (const [key, row] of newRows) {\n if (!oldRows.has(key))\n pending.push({ before: null, after: selectColumns(row, input.columns) })\n }\n let closed = false\n const changeCount = pending.length\n return {\n fromRowCount: previous.length,\n toRowCount: next.length,\n changeCount,\n changes: (async function* () {\n if (closed) throw new LakeStorageError(\"[LakeStorage] Change reader is closed.\")\n try {\n for (let i = 0; i < changeCount; i++) {\n input.signal?.throwIfAborted()\n if (closed) throw new LakeStorageError(\"[LakeStorage] Change reader is closed.\")\n yield structuredClone(pending[i]!)\n }\n } finally {\n closed = true\n pending = []\n }\n })(),\n async close() {\n closed = true\n pending = []\n },\n }\n }\n\n async commitWrite(options: {\n write: BeginDatasetWriteInput\n rows: readonly DatasetRow[]\n commit?: CommitDatasetWriteInput\n }): Promise<DatasetWriteCommitResult> {\n return this.withDatasetCommitLock(options.write.dataset.id, () =>\n this.commitWriteUnlocked(options)\n )\n }\n\n async commitMerge(options: {\n merge: BeginDatasetMergeInput\n baseVersionId: string | null\n changes: readonly MergeChange<DatasetRow, DatasetRow>[]\n commit?: CommitDatasetMergeInput\n }): Promise<DatasetMergeCommitResult> {\n return this.withDatasetCommitLock(options.merge.dataset.id, async () => {\n const definition = this.datasets.get(options.merge.dataset.id)\n if (!definition) {\n throw new LakeStorageError(`[LakeStorage] Unknown dataset '${options.merge.dataset.id}'`)\n }\n\n const latestVersion = await this.getLatestVersion(options.merge.dataset.id)\n options.commit?.signal?.throwIfAborted()\n const actualVersionId = latestVersion?.versionId ?? null\n if (actualVersionId !== options.baseVersionId) {\n throw new LakeConcurrencyError(\n `[LakeStorage] Optimistic merge commit failed for dataset '${options.merge.dataset.id}': expected latest version '${options.baseVersionId ?? \"none\"}', found '${actualVersionId ?? \"none\"}'`\n )\n }\n\n const previousRows = this.rowsByVersionId.get(latestVersion?.versionId ?? \"\") ?? []\n const previousByKey = this.rowsByPrimaryKey(previousRows, definition)\n const finalChanges = new Map<string, MergeChange<DatasetRow, DatasetRow>>()\n const ordered =\n definition.sequenceBy === undefined\n ? undefined\n : reconcileDatasetSequences(\n definition,\n this.sequencesByVersionId.get(actualVersionId ?? \"\") ?? new Map(),\n options.changes.map((change) => datasetSequenceChange(definition, change))\n )\n if (ordered) {\n for (const [key, index] of ordered.accepted) finalChanges.set(key, options.changes[index]!)\n } else {\n for (const change of options.changes) {\n const value = change.kind === \"upsert\" ? change.row : change.key\n finalChanges.set(encodeDatasetPrimaryKey(definition, value), change)\n }\n }\n\n const nextByKey = new Map(previousByKey)\n for (const [primaryKey, change] of finalChanges) {\n if (change.kind === \"upsert\") {\n nextByKey.set(primaryKey, cloneRow(change.row))\n } else {\n nextByKey.delete(primaryKey)\n }\n }\n\n const createInitialVersion = options.commit?.createInitialVersion && latestVersion === null\n if (\n !createInitialVersion &&\n (ordered\n ? ordered.accepted.size === 0\n : this.sameKeyedRowContent(previousByKey, nextByKey, definition.schema))\n ) {\n return {\n outcome: \"unchanged\",\n version: latestVersion ? cloneDatasetVersion(latestVersion) : null,\n }\n }\n\n const visibleRows = [...nextByKey.values()]\n const versionId = `ver_${randomUUID()}`\n const version: DatasetVersion = {\n datasetId: options.merge.dataset.id,\n versionId,\n parentVersionId: latestVersion?.versionId,\n mode: \"merge\",\n createdAt: new Date(),\n schema: definition.schema,\n producer: options.merge.producer ? structuredClone(options.merge.producer) : undefined,\n inputs: options.merge.inputs ? structuredClone(options.merge.inputs) : undefined,\n rowCount: visibleRows.length,\n sizeBytes: new TextEncoder().encode(\n visibleRows.map((row) => JSON.stringify(row)).join(\"\\n\")\n ).byteLength,\n }\n\n const versions = this.versionsByDataset.get(options.merge.dataset.id) ?? []\n versions.push(version)\n this.versionsByDataset.set(options.merge.dataset.id, versions)\n this.rowsByVersionId.set(\n versionId,\n visibleRows.map((row) => cloneRow(row))\n )\n this.latestVersionIdByDataset.set(options.merge.dataset.id, versionId)\n if (ordered) this.sequencesByVersionId.set(versionId, ordered.states)\n\n return { outcome: \"created\", version: cloneDatasetVersion(version) }\n })\n }\n\n private async commitWriteUnlocked(options: {\n write: BeginDatasetWriteInput\n rows: readonly DatasetRow[]\n commit?: CommitDatasetWriteInput\n }): Promise<DatasetWriteCommitResult> {\n const definition = this.datasets.get(options.write.dataset.id)\n if (!definition) {\n throw new LakeStorageError(`[LakeStorage] Unknown dataset '${options.write.dataset.id}'`)\n }\n\n const mode = options.write.mode ?? \"snapshot\"\n assertUnsequencedDatasetWrite(definition)\n const latestVersion = await this.getLatestVersion(options.write.dataset.id)\n\n if (options.commit?.expectedLatestVersionId !== undefined) {\n const actual = latestVersion?.versionId ?? null\n if (actual !== options.commit.expectedLatestVersionId) {\n throw new LakeConcurrencyError(\n `[LakeStorage] Optimistic commit failed for dataset '${options.write.dataset.id}': expected latest version '${options.commit.expectedLatestVersionId ?? \"none\"}', found '${actual ?? \"none\"}'`\n )\n }\n }\n\n this.assertKeyedWriteIsUnique(mode, options.rows, latestVersion, definition)\n\n // Content-identical snapshots and empty appends reuse the latest version\n // unless explicitly supplied input lineage has changed.\n if (\n latestVersion &&\n !hasDatasetInputChanges(latestVersion.inputs, options.write.inputs) &&\n this.isUnchangedWrite(mode, latestVersion, options.rows, definition.schema)\n ) {\n return { ...latestVersion, outcome: \"unchanged\" }\n }\n\n const versionId = `ver_${randomUUID()}`\n const visibleRows =\n mode === \"append\"\n ? [...(this.rowsByVersionId.get(latestVersion?.versionId ?? \"\") ?? []), ...options.rows]\n : [...options.rows]\n\n const sizeBytes = new TextEncoder().encode(\n visibleRows.map((row) => JSON.stringify(row)).join(\"\\n\")\n ).byteLength\n\n const version: DatasetVersion = {\n datasetId: options.write.dataset.id,\n versionId,\n parentVersionId: mode === \"append\" ? latestVersion?.versionId : undefined,\n mode,\n createdAt: new Date(),\n schema: definition.schema,\n producer: options.write.producer ? structuredClone(options.write.producer) : undefined,\n inputs: options.write.inputs ? structuredClone(options.write.inputs) : undefined,\n rowCount: visibleRows.length,\n sizeBytes,\n }\n\n const versions = this.versionsByDataset.get(options.write.dataset.id) ?? []\n versions.push(version)\n this.versionsByDataset.set(options.write.dataset.id, versions)\n this.rowsByVersionId.set(\n versionId,\n visibleRows.map((row) => cloneRow(row))\n )\n this.latestVersionIdByDataset.set(options.write.dataset.id, versionId)\n\n return { ...cloneDatasetVersion(version), outcome: \"created\" }\n }\n\n private isUnchangedWrite(\n mode: DatasetWriteMode,\n latestVersion: DatasetVersion,\n rows: readonly DatasetRow[],\n schema: DatasetSchema\n ): boolean {\n if (mode === \"append\") {\n return rows.length === 0\n }\n\n const previousRows = this.rowsByVersionId.get(latestVersion.versionId) ?? []\n return sameRowContent(\n rows.map((row) => rowContentKey(row, schema)),\n previousRows.map((row) => rowContentKey(row, schema))\n )\n }\n\n private assertKeyedWriteIsUnique(\n mode: DatasetWriteMode,\n rows: readonly DatasetRow[],\n latestVersion: DatasetVersion | null,\n definition: DatasetDefinition\n ): void {\n if (getDatasetPrimaryKeyColumns(definition) === null) {\n return\n }\n\n const stagedByKey = this.rowsByPrimaryKey(rows, definition)\n if (mode !== \"append\" || latestVersion === null) {\n return\n }\n\n const previousRows = this.rowsByVersionId.get(latestVersion.versionId) ?? []\n const previousByKey = this.rowsByPrimaryKey(previousRows, definition)\n for (const primaryKey of stagedByKey.keys()) {\n if (previousByKey.has(primaryKey)) {\n throw new LakeStorageError(\n `[LakeStorage] Dataset '${definition.id}' append contains duplicate primary key ${primaryKey}.`\n )\n }\n }\n }\n\n private rowsByPrimaryKey(\n rows: readonly DatasetRow[],\n definition: DatasetDefinition\n ): Map<string, DatasetRow> {\n const byKey = new Map<string, DatasetRow>()\n for (const row of rows) {\n const primaryKey = encodeDatasetPrimaryKey(definition, row)\n if (byKey.has(primaryKey)) {\n throw new LakeStorageError(\n `[LakeStorage] Dataset '${definition.id}' contains duplicate primary key ${primaryKey}.`\n )\n }\n byKey.set(primaryKey, row)\n }\n return byKey\n }\n\n private sameKeyedRowContent(\n left: ReadonlyMap<string, DatasetRow>,\n right: ReadonlyMap<string, DatasetRow>,\n schema: DatasetSchema\n ): boolean {\n if (left.size !== right.size) {\n return false\n }\n for (const [primaryKey, leftRow] of left) {\n const rightRow = right.get(primaryKey)\n if (\n rightRow === undefined ||\n rowContentKey(leftRow, schema) !== rowContentKey(rightRow, schema)\n ) {\n return false\n }\n }\n return true\n }\n\n private async withDatasetCommitLock<T>(datasetId: string, run: () => Promise<T>): Promise<T> {\n const previous = this.commitLocks.get(datasetId) ?? Promise.resolve()\n const ready = previous.catch(() => {})\n let release!: () => void\n const next = new Promise<void>((resolve) => {\n release = resolve\n })\n const current = ready.then(() => next)\n this.commitLocks.set(datasetId, current)\n\n await ready\n try {\n return await run()\n } finally {\n release()\n if (this.commitLocks.get(datasetId) === current) {\n this.commitLocks.delete(datasetId)\n }\n }\n }\n}\n",
8
- "import type { DatasetDefinition, MergeChange } from \"../datasets\"\nimport { LakeConcurrencyError } from \"./errors\"\nimport type { DatasetProducer, DatasetRow, DatasetVersion, DatasetVersionRef } from \"./types\"\n\nexport interface BeginDatasetMergeInput {\n /** Stored definition for the keyed dataset whose latest version is captured by `beginMerge`. */\n readonly dataset: DatasetDefinition\n /** Optional caller guard checked against the same latest version captured by the session. */\n readonly expectedLatestVersionId?: string\n readonly producer?: DatasetProducer\n readonly inputs?: readonly DatasetVersionRef[]\n}\n\nexport interface CommitDatasetMergeInput {\n readonly commitMessage?: string\n /** Create an addressable first version even without changes; reuse an existing version on no-op. */\n readonly createInitialVersion?: boolean\n /** Retry sequenced merges up to three times total; ignored when an explicit version guard is set. */\n readonly retryOnConflict?: boolean\n /** Checked before each attempt; a durable commit is never cancelled retroactively. */\n readonly signal?: AbortSignal\n}\n\n/** Providers retain their staging session throughout this bounded commit loop. */\nexport async function retryDatasetMergeCommit(\n merge: BeginDatasetMergeInput,\n commit: CommitDatasetMergeInput | undefined,\n run: (rebase: boolean) => Promise<DatasetMergeCommitResult>\n): Promise<DatasetMergeCommitResult> {\n const attempts =\n commit?.retryOnConflict &&\n merge.dataset.sequenceBy !== undefined &&\n merge.expectedLatestVersionId === undefined\n ? 3\n : 1\n for (let attempt = 0; ; attempt += 1) {\n commit?.signal?.throwIfAborted()\n try {\n return await run(attempt > 0)\n } catch (error) {\n if (!(error instanceof LakeConcurrencyError) || attempts === 1) throw error\n if (attempt + 1 === attempts) {\n throw new LakeConcurrencyError(\n `[SixbLake] Dataset '${merge.dataset.id}' merge exhausted ${attempts} concurrency attempts. No changes from this operation were committed.`,\n { cause: error }\n )\n }\n }\n }\n}\n\n/**\n * A merge can be unchanged before the dataset has a first version, so its result carries the\n * version separately instead of extending `DatasetVersion` like ordinary write commits do.\n */\nexport type DatasetMergeCommitResult =\n | { readonly outcome: \"created\"; readonly version: DatasetVersion }\n | { readonly outcome: \"unchanged\"; readonly version: DatasetVersion | null }\n\nexport interface LakeMergeSession {\n /**\n * Stage ordered complete-row upserts and exact primary-key deletes. With sequenceBy, deletes\n * require a sequence, stale changes are ignored, and conflicting ties abort the whole merge.\n */\n writeChanges(\n changes:\n | Iterable<MergeChange<DatasetRow, DatasetRow>>\n | AsyncIterable<MergeChange<DatasetRow, DatasetRow>>\n ): Promise<void>\n /** Commit against the captured version; opt-in retries rebase sequenced changes on a fresh head. */\n commit(input?: CommitDatasetMergeInput): Promise<DatasetMergeCommitResult>\n abort(): Promise<void>\n}\n",
9
- "import { createHash } from \"node:crypto\"\nimport type { DatasetDefinition, MergeChange } from \"../datasets\"\nimport { datasetSequenceValue } from \"../datasets/sequence\"\nimport { stableJsonStringify } from \"../json\"\nimport { normalizeDecimalValue } from \"../ontology/decimal\"\nimport { LakeStorageError } from \"./errors\"\nimport { encodeDatasetPrimaryKey } from \"./merge-validation\"\nimport type { DatasetRow } from \"./types\"\n\n/** Current source revision; a null content digest is a deletion tombstone. */\nexport interface DatasetSequenceState {\n readonly sequence: string\n readonly content: string | null\n}\n\nexport interface DatasetSequenceChange extends DatasetSequenceState {\n readonly key: string\n}\n\nexport function datasetSequenceChange(\n dataset: DatasetDefinition,\n change: MergeChange<DatasetRow, DatasetRow>\n): DatasetSequenceChange {\n const value = change.kind === \"upsert\" ? change.row[dataset.sequenceBy ?? \"\"] : change.sequence\n return {\n key: encodeDatasetPrimaryKey(dataset, change.kind === \"upsert\" ? change.row : change.key),\n sequence: datasetSequenceValue(dataset, value).toString(),\n content: change.kind === \"delete\" ? null : rowDigest(dataset, change.row),\n }\n}\n\n/** Process in submission order against a private copy; conflicts publish no partial state. */\nexport function reconcileDatasetSequences(\n dataset: DatasetDefinition,\n previous: ReadonlyMap<string, DatasetSequenceState>,\n changes: readonly DatasetSequenceChange[]\n): { states: Map<string, DatasetSequenceState>; accepted: Map<string, number> } {\n const states = new Map(previous)\n const accepted = new Map<string, number>()\n for (const [index, change] of changes.entries()) {\n const current = states.get(change.key)\n if (current) {\n const difference = BigInt(change.sequence) - BigInt(current.sequence)\n if (difference < 0n) continue\n if (difference === 0n) {\n if (current.content !== change.content) {\n throw new LakeStorageError(\n `[SixbLake] Dataset '${dataset.id}' has conflicting content at source sequence '${change.sequence}' for key ${change.key}.`\n )\n }\n continue\n }\n }\n states.set(change.key, { sequence: change.sequence, content: change.content })\n accepted.set(change.key, index)\n }\n return { states, accepted }\n}\n\nfunction rowDigest(dataset: DatasetDefinition, row: DatasetRow): string {\n const content: Record<string, unknown> = Object.create(null)\n for (const column of dataset.schema.columns) {\n const value = row[column.name]\n // Nullable additions and omitted/undefined/null values have identical content.\n if (value == null) continue\n switch (column.type) {\n case \"int64\":\n content[column.name] = BigInt(value as string | number).toString()\n break\n case \"timestamp\":\n content[column.name] = new Date(value as string | Date).toISOString()\n break\n case \"date\":\n content[column.name] = new Date(value as string | Date).toISOString().slice(0, 10)\n break\n case \"decimal\":\n content[column.name] = normalizeDecimalValue(value as string)\n break\n default:\n content[column.name] = value\n }\n }\n return createHash(\"sha256\")\n .update(stableJsonStringify(JSON.parse(JSON.stringify(content))))\n .digest(\"hex\")\n}\n\n/** Until row reconciliation is supported, replacement writes must not erase source history. */\nexport function assertUnsequencedDatasetWrite(dataset: DatasetDefinition): void {\n if (dataset.sequenceBy !== undefined) {\n throw new LakeStorageError(\n `[SixbLake] Dataset '${dataset.id}' declares sequenceBy; use beginMerge with source-ordered changes.`\n )\n }\n}\n",
10
- "import type { DatasetVersionRef } from \"./types\"\n\n/** Input lineage participates in write identity when the caller supplies it. */\nexport function hasDatasetInputChanges(\n previous: readonly DatasetVersionRef[] | undefined,\n next: readonly DatasetVersionRef[] | undefined\n): boolean {\n if (next === undefined) return false\n const keys = (refs: readonly DatasetVersionRef[]) =>\n new Set(refs.map((ref) => JSON.stringify([ref.datasetId, ref.versionId])))\n const before = keys(previous ?? [])\n const after = keys(next)\n return before.size !== after.size || [...after].some((key) => !before.has(key))\n}\n"
11
- ],
12
- "mappings": "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",
13
- "debugId": "621C8EE40606357F64756E2164756E21",
14
- "names": []
15
- }