@sixb/core 0.1.11 → 0.1.13

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 (910) 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.d.ts +2 -2
  4. package/dist/actions/index.d.ts.map +1 -1
  5. package/dist/actions/index.js +33 -30
  6. package/dist/actions/index.js.map +1 -1
  7. package/dist/actions/read-facade.d.ts +14 -16
  8. package/dist/actions/read-facade.d.ts.map +1 -1
  9. package/dist/actions/request.d.ts.map +1 -1
  10. package/dist/actions/run-dispatch.d.ts +2 -0
  11. package/dist/actions/run-dispatch.d.ts.map +1 -1
  12. package/dist/actions/types/context.d.ts +18 -31
  13. package/dist/actions/types/context.d.ts.map +1 -1
  14. package/dist/actions/types/params.d.ts +11 -44
  15. package/dist/actions/types/params.d.ts.map +1 -1
  16. package/dist/actions/validation.d.ts.map +1 -1
  17. package/dist/actions/worker.js +3 -2
  18. package/dist/actions/worker.js.map +2 -2
  19. package/dist/agents/errors.d.ts +1 -1
  20. package/dist/agents/errors.d.ts.map +1 -1
  21. package/dist/agents/execution.d.ts +15 -9
  22. package/dist/agents/execution.d.ts.map +1 -1
  23. package/dist/agents/ids.d.ts +2 -0
  24. package/dist/agents/ids.d.ts.map +1 -1
  25. package/dist/agents/index.d.ts +1 -1
  26. package/dist/agents/index.d.ts.map +1 -1
  27. package/dist/agents/index.js +52 -44
  28. package/dist/agents/index.js.map +1 -1
  29. package/dist/agents/request.d.ts.map +1 -1
  30. package/dist/agents/sandbox.d.ts +5 -0
  31. package/dist/agents/sandbox.d.ts.map +1 -0
  32. package/dist/agents/streams/index.js +4 -3
  33. package/dist/agents/streams/index.js.map +1 -1
  34. package/dist/agents/streams/internal.js +4 -3
  35. package/dist/agents/streams/internal.js.map +1 -1
  36. package/dist/agents/validation.d.ts.map +1 -1
  37. package/dist/assert-never.d.ts +6 -0
  38. package/dist/assert-never.d.ts.map +1 -0
  39. package/dist/auth/client-address.d.ts +3 -0
  40. package/dist/auth/client-address.d.ts.map +1 -0
  41. package/dist/auth/csrf.d.ts +5 -1
  42. package/dist/auth/csrf.d.ts.map +1 -1
  43. package/dist/auth/index.d.ts +3 -2
  44. package/dist/auth/index.d.ts.map +1 -1
  45. package/dist/auth/index.js +15 -7
  46. package/dist/auth/index.js.map +1 -1
  47. package/dist/auth/runtime.d.ts +58 -41
  48. package/dist/auth/runtime.d.ts.map +1 -1
  49. package/dist/auth/session-cache.d.ts +10 -3
  50. package/dist/auth/session-cache.d.ts.map +1 -1
  51. package/dist/auth/sessions.d.ts +12 -0
  52. package/dist/auth/sessions.d.ts.map +1 -1
  53. package/dist/auth/strategy.js +1 -1
  54. package/dist/auth/types.d.ts +8 -15
  55. package/dist/auth/types.d.ts.map +1 -1
  56. package/dist/authorization/index.js +5 -4
  57. package/dist/authorization/index.js.map +1 -1
  58. package/dist/bootstrap/index.d.ts +1 -1
  59. package/dist/bootstrap/index.d.ts.map +1 -1
  60. package/dist/bootstrap/index.js +54 -48
  61. package/dist/bootstrap/index.js.map +1 -1
  62. package/dist/bootstrap/ontology-type-manifest.d.ts +8 -0
  63. package/dist/bootstrap/ontology-type-manifest.d.ts.map +1 -1
  64. package/dist/{chunk-q5gz3g2j.js → chunk-0321g649.js} +2 -16
  65. package/dist/{chunk-q5gz3g2j.js.map → chunk-0321g649.js.map} +2 -2
  66. package/dist/{chunk-d63nnr5b.js → chunk-04h4t2b5.js} +39 -53
  67. package/dist/{chunk-d63nnr5b.js.map → chunk-04h4t2b5.js.map} +5 -6
  68. package/dist/chunk-2fv8sajb.js +84 -0
  69. package/dist/chunk-2fv8sajb.js.map +10 -0
  70. package/dist/{chunk-1yefycb1.js → chunk-2hbhn1ff.js} +2 -2
  71. package/dist/{chunk-ap0g1g74.js → chunk-3nx8vj5a.js} +43 -6
  72. package/dist/chunk-3nx8vj5a.js.map +12 -0
  73. package/dist/{chunk-wjasrj67.js → chunk-3qpcrcj8.js} +1 -1
  74. package/dist/{chunk-0y39rgsb.js → chunk-4tnrzqqh.js} +1 -1
  75. package/dist/chunk-58geavnf.js +29 -0
  76. package/dist/chunk-58geavnf.js.map +10 -0
  77. package/dist/{chunk-01kj2pbh.js → chunk-63fp9x3q.js} +97 -67
  78. package/dist/chunk-63fp9x3q.js.map +20 -0
  79. package/dist/{chunk-7bs40fe1.js → chunk-69266efg.js} +83 -2
  80. package/dist/chunk-69266efg.js.map +12 -0
  81. package/dist/{chunk-sepyxgpc.js → chunk-693f3zn8.js} +70 -28
  82. package/dist/chunk-693f3zn8.js.map +15 -0
  83. package/dist/{chunk-7zgecwy1.js → chunk-6x0pqh32.js} +12 -1
  84. package/dist/{chunk-7zgecwy1.js.map → chunk-6x0pqh32.js.map} +3 -3
  85. package/dist/{chunk-c5rkjrgp.js → chunk-7ytf06d3.js} +1 -1
  86. package/dist/{chunk-a0e6x5hd.js → chunk-898y24dd.js} +165 -90
  87. package/dist/chunk-898y24dd.js.map +15 -0
  88. package/dist/{chunk-mrp7k0pw.js → chunk-91kcnbf0.js} +9 -14
  89. package/dist/chunk-91kcnbf0.js.map +10 -0
  90. package/dist/{chunk-z0s4axeh.js → chunk-91wthfwe.js} +97 -21
  91. package/dist/{chunk-z0s4axeh.js.map → chunk-91wthfwe.js.map} +8 -7
  92. package/dist/{chunk-yv79ncbv.js → chunk-96yw3pwd.js} +3 -3
  93. package/dist/chunk-96yw3pwd.js.map +10 -0
  94. package/dist/chunk-98cw09sw.js.map +2 -2
  95. package/dist/{chunk-g00bfdq6.js → chunk-9pfw47qx.js} +318 -257
  96. package/dist/chunk-9pfw47qx.js.map +44 -0
  97. package/dist/{chunk-5hz0fnca.js → chunk-a0073121.js} +64 -60
  98. package/dist/chunk-a0073121.js.map +12 -0
  99. package/dist/{chunk-cfvakeax.js → chunk-a69fkrtr.js} +5 -5
  100. package/dist/{chunk-72w2pxk7.js → chunk-bdhfn0ww.js} +11 -3
  101. package/dist/{chunk-72w2pxk7.js.map → chunk-bdhfn0ww.js.map} +3 -3
  102. package/dist/chunk-bep5rrdq.js +81 -0
  103. package/dist/chunk-bep5rrdq.js.map +10 -0
  104. package/dist/chunk-bxx3ms5t.js +29 -0
  105. package/dist/chunk-bxx3ms5t.js.map +10 -0
  106. package/dist/{chunk-v2vcg0w6.js → chunk-cbn96bve.js} +2 -2
  107. package/dist/{chunk-860dwwy0.js → chunk-cd234ba4.js} +22 -12
  108. package/dist/chunk-cd234ba4.js.map +14 -0
  109. package/dist/{chunk-gq8vhakp.js → chunk-cvrbhvtr.js} +292 -104
  110. package/dist/chunk-cvrbhvtr.js.map +46 -0
  111. package/dist/{chunk-ms2tmn1k.js → chunk-d8yes9yx.js} +355 -100
  112. package/dist/chunk-d8yes9yx.js.map +20 -0
  113. package/dist/{chunk-pr2h4bv4.js → chunk-darm7eeg.js} +9 -9
  114. package/dist/{chunk-pr2h4bv4.js.map → chunk-darm7eeg.js.map} +3 -3
  115. package/dist/chunk-dmn70ztd.js.map +2 -2
  116. package/dist/chunk-drz59ve0.js +57 -0
  117. package/dist/chunk-drz59ve0.js.map +10 -0
  118. package/dist/{chunk-skz0hst3.js → chunk-dsfw1bdr.js} +6 -86
  119. package/dist/{chunk-skz0hst3.js.map → chunk-dsfw1bdr.js.map} +3 -3
  120. package/dist/{chunk-g6cke204.js → chunk-f85hpqnm.js} +1 -1
  121. package/dist/{chunk-vsj3mdfj.js → chunk-fc5zfxy1.js} +1 -1
  122. package/dist/chunk-ffwvdgk1.js +85 -0
  123. package/dist/chunk-ffwvdgk1.js.map +10 -0
  124. package/dist/chunk-gbcrz0gr.js +552 -0
  125. package/dist/chunk-gbcrz0gr.js.map +17 -0
  126. package/dist/{chunk-gqm76kse.js → chunk-gc226ten.js} +434 -177
  127. package/dist/chunk-gc226ten.js.map +62 -0
  128. package/dist/{chunk-awbhdqyc.js → chunk-gmt22nxx.js} +10 -16
  129. package/dist/chunk-gmt22nxx.js.map +10 -0
  130. package/dist/chunk-h89wz928.js +42 -0
  131. package/dist/chunk-h89wz928.js.map +10 -0
  132. package/dist/{chunk-aa6z4a19.js → chunk-hgqpcmyr.js} +2 -1
  133. package/dist/chunk-hgqpcmyr.js.map +12 -0
  134. package/dist/{chunk-gqh45d2n.js → chunk-ht4a7mjg.js} +76 -6
  135. package/dist/chunk-ht4a7mjg.js.map +15 -0
  136. package/dist/{chunk-x9m9x2eq.js → chunk-jhyc777j.js} +3 -3
  137. package/dist/{chunk-fh8kgex1.js → chunk-jmwy25mf.js} +76 -58
  138. package/dist/{chunk-fh8kgex1.js.map → chunk-jmwy25mf.js.map} +3 -3
  139. package/dist/{chunk-rb1xx120.js → chunk-k4kkp58d.js} +25 -8
  140. package/dist/chunk-k4kkp58d.js.map +11 -0
  141. package/dist/{chunk-jsy70480.js → chunk-ky7zpbtt.js} +366 -98
  142. package/dist/chunk-ky7zpbtt.js.map +19 -0
  143. package/dist/chunk-m4ehq95f.js +9 -0
  144. package/dist/chunk-m4ehq95f.js.map +10 -0
  145. package/dist/{chunk-17kfctj6.js → chunk-m8zkvep1.js} +2 -2
  146. package/dist/{chunk-z0271qkp.js → chunk-mdnw7nj8.js} +8 -6
  147. package/dist/chunk-mdnw7nj8.js.map +15 -0
  148. package/dist/{chunk-4zhmdsx6.js → chunk-mf6hwpzh.js} +121 -28
  149. package/dist/{chunk-4zhmdsx6.js.map → chunk-mf6hwpzh.js.map} +6 -6
  150. package/dist/{chunk-z30bv4ga.js → chunk-mr60an99.js} +5 -3
  151. package/dist/{chunk-z30bv4ga.js.map → chunk-mr60an99.js.map} +3 -3
  152. package/dist/chunk-n33e8dz8.js +191 -0
  153. package/dist/chunk-n33e8dz8.js.map +11 -0
  154. package/dist/chunk-p1683c0v.js +104 -0
  155. package/dist/chunk-p1683c0v.js.map +11 -0
  156. package/dist/{chunk-9qsh3p5y.js → chunk-rb143ggb.js} +1 -1
  157. package/dist/{chunk-653vwrzr.js → chunk-rdghfsss.js} +1 -1
  158. package/dist/chunk-rdghfsss.js.map +10 -0
  159. package/dist/{chunk-ftv470j8.js → chunk-rqtdtm43.js} +365 -67
  160. package/dist/chunk-rqtdtm43.js.map +50 -0
  161. package/dist/{chunk-dz5h08xv.js → chunk-rzcjp5m2.js} +28 -9
  162. package/dist/chunk-rzcjp5m2.js.map +25 -0
  163. package/dist/{chunk-f4w3yp4f.js → chunk-rzkr70gr.js} +108 -21
  164. package/dist/chunk-rzkr70gr.js.map +13 -0
  165. package/dist/{chunk-3ckk0xfj.js → chunk-s24qbp32.js} +18 -13
  166. package/dist/{chunk-3ckk0xfj.js.map → chunk-s24qbp32.js.map} +3 -3
  167. package/dist/{chunk-f0rwz2vh.js → chunk-t6f3tdnr.js} +2 -54
  168. package/dist/chunk-t6f3tdnr.js.map +10 -0
  169. package/dist/{chunk-93csa55g.js → chunk-tw03bsmb.js} +11 -5
  170. package/dist/chunk-tw03bsmb.js.map +11 -0
  171. package/dist/chunk-vef6qa14.js +363 -0
  172. package/dist/chunk-vef6qa14.js.map +14 -0
  173. package/dist/{chunk-92vk7gta.js → chunk-vn3yh259.js} +1 -1
  174. package/dist/{chunk-g91qxjj0.js → chunk-w9bp61e7.js} +5 -5
  175. package/dist/{chunk-b19g04jk.js → chunk-xgptywp0.js} +4 -3
  176. package/dist/chunk-xgptywp0.js.map +11 -0
  177. package/dist/{chunk-g53f0e4j.js → chunk-xnx96gfy.js} +45 -17
  178. package/dist/{chunk-g53f0e4j.js.map → chunk-xnx96gfy.js.map} +3 -3
  179. package/dist/{chunk-1824gssz.js → chunk-y487ywrv.js} +4 -4
  180. package/dist/{chunk-7apz6hg4.js → chunk-y6vnvayj.js} +8 -4
  181. package/dist/chunk-y6vnvayj.js.map +10 -0
  182. package/dist/{chunk-wf88w4kp.js → chunk-ypj2wqtj.js} +3 -6
  183. package/dist/{chunk-wf88w4kp.js.map → chunk-ypj2wqtj.js.map} +4 -4
  184. package/dist/chunk-z3y5kg1x.js +14 -0
  185. package/dist/chunk-z3y5kg1x.js.map +10 -0
  186. package/dist/{chunk-38zv5rkr.js → chunk-z9h698s8.js} +1 -1
  187. package/dist/{chunk-38zv5rkr.js.map → chunk-z9h698s8.js.map} +2 -2
  188. package/dist/{chunk-8vj0rjgs.js → chunk-zdkcdshk.js} +3 -36
  189. package/dist/{chunk-8vj0rjgs.js.map → chunk-zdkcdshk.js.map} +3 -4
  190. package/dist/{chunk-358caqf5.js → chunk-znw0zvy4.js} +2 -2
  191. package/dist/datasets/validation.d.ts +4 -0
  192. package/dist/datasets/validation.d.ts.map +1 -1
  193. package/dist/datasets/write.d.ts.map +1 -1
  194. package/dist/datasets/write.js +5 -4
  195. package/dist/datasets/write.js.map +1 -1
  196. package/dist/edits/types.d.ts +19 -19
  197. package/dist/edits/types.d.ts.map +1 -1
  198. package/dist/error-reporting/capability.d.ts +3 -2
  199. package/dist/error-reporting/capability.d.ts.map +1 -1
  200. package/dist/error-reporting/internal.js +5 -4
  201. package/dist/error-reporting/internal.js.map +1 -1
  202. package/dist/error-reporting/reports.d.ts +10 -0
  203. package/dist/error-reporting/reports.d.ts.map +1 -1
  204. package/dist/error-reporting/types.d.ts +10 -2
  205. package/dist/error-reporting/types.d.ts.map +1 -1
  206. package/dist/errors/catalog.d.ts +16 -0
  207. package/dist/errors/catalog.d.ts.map +1 -1
  208. package/dist/errors/failure-message.d.ts +8 -0
  209. package/dist/errors/failure-message.d.ts.map +1 -0
  210. package/dist/errors/internal.d.ts.map +1 -1
  211. package/dist/errors/internal.js +3 -2
  212. package/dist/errors/internal.js.map +1 -1
  213. package/dist/events/envelope.d.ts +0 -12
  214. package/dist/events/envelope.d.ts.map +1 -1
  215. package/dist/events/index.d.ts +1 -1
  216. package/dist/events/index.d.ts.map +1 -1
  217. package/dist/events/index.js +5 -4
  218. package/dist/events/index.js.map +1 -1
  219. package/dist/events/service.d.ts +1 -2
  220. package/dist/events/service.d.ts.map +1 -1
  221. package/dist/events/toStoredEvent.d.ts +1 -2
  222. package/dist/events/toStoredEvent.d.ts.map +1 -1
  223. package/dist/events/types/index.d.ts +2 -1
  224. package/dist/events/types/index.d.ts.map +1 -1
  225. package/dist/execution/agent.d.ts +1 -2
  226. package/dist/execution/agent.d.ts.map +1 -1
  227. package/dist/execution/agent.js +48 -43
  228. package/dist/execution/agent.js.map +1 -1
  229. package/dist/execution/authorization.d.ts.map +1 -1
  230. package/dist/execution/authorized-object-reader.d.ts +3 -0
  231. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  232. package/dist/execution/kernel-operation.d.ts +4 -0
  233. package/dist/execution/kernel-operation.d.ts.map +1 -0
  234. package/dist/execution/primitive.d.ts +1 -2
  235. package/dist/execution/primitive.d.ts.map +1 -1
  236. package/dist/execution/primitive.js +47 -42
  237. package/dist/execution/primitive.js.map +3 -3
  238. package/dist/execution/request.d.ts +1 -2
  239. package/dist/execution/request.d.ts.map +1 -1
  240. package/dist/execution/request.js +48 -43
  241. package/dist/execution/request.js.map +3 -3
  242. package/dist/execution/types.d.ts +6 -0
  243. package/dist/execution/types.d.ts.map +1 -1
  244. package/dist/index.d.ts +20 -10
  245. package/dist/index.d.ts.map +1 -1
  246. package/dist/index.js +77 -62
  247. package/dist/index.js.map +1 -1
  248. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  249. package/dist/lake-storage/index.js +5 -4
  250. package/dist/lake-storage/index.js.map +1 -1
  251. package/dist/maintenance/ontology-maintenance.d.ts +11 -1
  252. package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
  253. package/dist/materialization/errors.d.ts +4 -2
  254. package/dist/materialization/errors.d.ts.map +1 -1
  255. package/dist/materialization/events.d.ts +27 -2
  256. package/dist/materialization/events.d.ts.map +1 -1
  257. package/dist/materialization/index.d.ts +1 -0
  258. package/dist/materialization/index.d.ts.map +1 -1
  259. package/dist/materialization/index.js +3 -3
  260. package/dist/materialization/model.d.ts +2 -0
  261. package/dist/materialization/model.d.ts.map +1 -1
  262. package/dist/materialization/vectors.d.ts +19 -0
  263. package/dist/materialization/vectors.d.ts.map +1 -0
  264. package/dist/materializer/context.d.ts.map +1 -1
  265. package/dist/materializer/edits/commit.d.ts.map +1 -1
  266. package/dist/materializer/edits/operations.d.ts +2 -1
  267. package/dist/materializer/edits/operations.d.ts.map +1 -1
  268. package/dist/materializer/edits/plan.d.ts +2 -2
  269. package/dist/materializer/edits/plan.d.ts.map +1 -1
  270. package/dist/materializer/edits/user-refs.d.ts +30 -0
  271. package/dist/materializer/edits/user-refs.d.ts.map +1 -0
  272. package/dist/materializer/edits/vector-authority.d.ts +6 -0
  273. package/dist/materializer/edits/vector-authority.d.ts.map +1 -0
  274. package/dist/materializer/edits/vectors.d.ts +6 -0
  275. package/dist/materializer/edits/vectors.d.ts.map +1 -0
  276. package/dist/materializer/effective/build-events.d.ts +2 -2
  277. package/dist/materializer/effective/build-events.d.ts.map +1 -1
  278. package/dist/materializer/effective/validate.d.ts.map +1 -1
  279. package/dist/materializer/effective/vector-indexing.d.ts +7 -0
  280. package/dist/materializer/effective/vector-indexing.d.ts.map +1 -0
  281. package/dist/materializer/effective/vectors.d.ts +6 -0
  282. package/dist/materializer/effective/vectors.d.ts.map +1 -0
  283. package/dist/materializer/execution/scope.d.ts +11 -3
  284. package/dist/materializer/execution/scope.d.ts.map +1 -1
  285. package/dist/materializer/execution/work-executor.d.ts +2 -1
  286. package/dist/materializer/execution/work-executor.d.ts.map +1 -1
  287. package/dist/materializer/index.js +30 -27
  288. package/dist/materializer/index.js.map +1 -1
  289. package/dist/materializer/projections/replacement-plan.d.ts +2 -0
  290. package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
  291. package/dist/materializer/shared/normalize.d.ts.map +1 -1
  292. package/dist/materializer/telemetry/plan.d.ts +2 -2
  293. package/dist/materializer/telemetry/plan.d.ts.map +1 -1
  294. package/dist/models/catalog-index.d.ts +15 -0
  295. package/dist/models/catalog-index.d.ts.map +1 -0
  296. package/dist/models/catalog.d.ts +27 -6
  297. package/dist/models/catalog.d.ts.map +1 -1
  298. package/dist/models/decision/catalog.d.ts +12 -0
  299. package/dist/models/decision/catalog.d.ts.map +1 -0
  300. package/dist/models/decision/errors.d.ts +7 -0
  301. package/dist/models/decision/errors.d.ts.map +1 -0
  302. package/dist/models/decision/output.d.ts +50 -0
  303. package/dist/models/decision/output.d.ts.map +1 -0
  304. package/dist/models/decision/questions.d.ts +14 -0
  305. package/dist/models/decision/questions.d.ts.map +1 -0
  306. package/dist/models/decision/runtime.d.ts +7 -0
  307. package/dist/models/decision/runtime.d.ts.map +1 -0
  308. package/dist/models/decision/types.d.ts +92 -0
  309. package/dist/models/decision/types.d.ts.map +1 -0
  310. package/dist/models/decision/validation.d.ts +7 -0
  311. package/dist/models/decision/validation.d.ts.map +1 -0
  312. package/dist/models/definitions.d.ts +1 -1
  313. package/dist/models/definitions.d.ts.map +1 -1
  314. package/dist/models/embedding-model.d.ts +60 -0
  315. package/dist/models/embedding-model.d.ts.map +1 -0
  316. package/dist/models/execution/binding.d.ts +2 -0
  317. package/dist/models/execution/binding.d.ts.map +1 -1
  318. package/dist/models/execution/embedding.d.ts +5 -0
  319. package/dist/models/execution/embedding.d.ts.map +1 -0
  320. package/dist/models/execution/index.js +32 -27
  321. package/dist/models/execution/index.js.map +1 -1
  322. package/dist/models/execution/model-call-recorder.d.ts +5 -1
  323. package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
  324. package/dist/models/execution/session.d.ts +21 -0
  325. package/dist/models/execution/session.d.ts.map +1 -0
  326. package/dist/models/execution.d.ts.map +1 -1
  327. package/dist/models/generation-types.d.ts +2 -0
  328. package/dist/models/generation-types.d.ts.map +1 -1
  329. package/dist/models/index.d.ts +9 -1
  330. package/dist/models/index.d.ts.map +1 -1
  331. package/dist/models/index.js +17 -7
  332. package/dist/models/index.js.map +1 -1
  333. package/dist/models/pricing.d.ts +3 -2
  334. package/dist/models/pricing.d.ts.map +1 -1
  335. package/dist/objects/authorized-ontology-view.d.ts.map +1 -1
  336. package/dist/objects/execution.d.ts +21 -26
  337. package/dist/objects/execution.d.ts.map +1 -1
  338. package/dist/objects/index.js +33 -30
  339. package/dist/objects/index.js.map +1 -1
  340. package/dist/objects/query/executor.d.ts +3 -0
  341. package/dist/objects/query/executor.d.ts.map +1 -1
  342. package/dist/objects/query/index.d.ts +2 -0
  343. package/dist/objects/query/index.d.ts.map +1 -1
  344. package/dist/objects/query/index.js +42 -30
  345. package/dist/objects/query/index.js.map +1 -1
  346. package/dist/objects/query/ir.d.ts +14 -3
  347. package/dist/objects/query/ir.d.ts.map +1 -1
  348. package/dist/objects/query/normalize.d.ts.map +1 -1
  349. package/dist/objects/query/scalar-values.d.ts.map +1 -1
  350. package/dist/objects/query/validate.d.ts.map +1 -1
  351. package/dist/objects/sdk/object-handle.d.ts +6 -2
  352. package/dist/objects/sdk/object-handle.d.ts.map +1 -1
  353. package/dist/objects/sdk/object-set.d.ts +2 -3
  354. package/dist/objects/sdk/object-set.d.ts.map +1 -1
  355. package/dist/objects/sdk/query-builder.d.ts +8 -10
  356. package/dist/objects/sdk/query-builder.d.ts.map +1 -1
  357. package/dist/objects/sdk/query-executor.d.ts +2 -0
  358. package/dist/objects/sdk/query-executor.d.ts.map +1 -1
  359. package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
  360. package/dist/objects/sdk/telemetry-channel.d.ts +1 -2
  361. package/dist/objects/sdk/telemetry-channel.d.ts.map +1 -1
  362. package/dist/objects/sdk/where.d.ts +2 -3
  363. package/dist/objects/sdk/where.d.ts.map +1 -1
  364. package/dist/objects/vectors/handle.d.ts +4 -0
  365. package/dist/objects/vectors/handle.d.ts.map +1 -0
  366. package/dist/objects/vectors/indexing-batch.d.ts +6 -0
  367. package/dist/objects/vectors/indexing-batch.d.ts.map +1 -0
  368. package/dist/objects/vectors/indexing-generate.d.ts +11 -0
  369. package/dist/objects/vectors/indexing-generate.d.ts.map +1 -0
  370. package/dist/objects/vectors/indexing-runtime.d.ts +7 -0
  371. package/dist/objects/vectors/indexing-runtime.d.ts.map +1 -0
  372. package/dist/objects/vectors/indexing-shared.d.ts +17 -0
  373. package/dist/objects/vectors/indexing-shared.d.ts.map +1 -0
  374. package/dist/objects/vectors/indexing-single.d.ts +4 -0
  375. package/dist/objects/vectors/indexing-single.d.ts.map +1 -0
  376. package/dist/objects/vectors/indexing-store-batch.d.ts +6 -0
  377. package/dist/objects/vectors/indexing-store-batch.d.ts.map +1 -0
  378. package/dist/objects/vectors/indexing.d.ts +7 -0
  379. package/dist/objects/vectors/indexing.d.ts.map +1 -0
  380. package/dist/objects/vectors/profile.d.ts +13 -0
  381. package/dist/objects/vectors/profile.d.ts.map +1 -0
  382. package/dist/objects/vectors/query.d.ts +5 -0
  383. package/dist/objects/vectors/query.d.ts.map +1 -0
  384. package/dist/objects/vectors/resolve-query.d.ts +6 -0
  385. package/dist/objects/vectors/resolve-query.d.ts.map +1 -0
  386. package/dist/objects/vectors/types.d.ts +11 -0
  387. package/dist/objects/vectors/types.d.ts.map +1 -0
  388. package/dist/ontology/builders.d.ts +11 -10
  389. package/dist/ontology/builders.d.ts.map +1 -1
  390. package/dist/ontology/index.d.ts +5 -2
  391. package/dist/ontology/index.d.ts.map +1 -1
  392. package/dist/ontology/index.js +7 -5
  393. package/dist/ontology/index.js.map +1 -1
  394. package/dist/ontology/inference/index.d.ts +34 -22
  395. package/dist/ontology/inference/index.d.ts.map +1 -1
  396. package/dist/ontology/internal.d.ts +1 -0
  397. package/dist/ontology/internal.d.ts.map +1 -1
  398. package/dist/ontology/internal.js +10 -7
  399. package/dist/ontology/internal.js.map +1 -1
  400. package/dist/ontology/primitives.d.ts +38 -0
  401. package/dist/ontology/primitives.d.ts.map +1 -0
  402. package/dist/ontology/query-capabilities.d.ts +38 -0
  403. package/dist/ontology/query-capabilities.d.ts.map +1 -0
  404. package/dist/ontology/refs.d.ts +23 -2
  405. package/dist/ontology/refs.d.ts.map +1 -1
  406. package/dist/ontology/registered.d.ts +16 -0
  407. package/dist/ontology/registered.d.ts.map +1 -0
  408. package/dist/ontology/registry.d.ts.map +1 -1
  409. package/dist/ontology/tokens.d.ts +35 -1
  410. package/dist/ontology/tokens.d.ts.map +1 -1
  411. package/dist/ontology/types.d.ts +26 -13
  412. package/dist/ontology/types.d.ts.map +1 -1
  413. package/dist/ontology/user-ref.d.ts +35 -0
  414. package/dist/ontology/user-ref.d.ts.map +1 -0
  415. package/dist/ontology/validation/definition.d.ts +3 -0
  416. package/dist/ontology/validation/definition.d.ts.map +1 -0
  417. package/dist/ontology/validation/index.d.ts +1 -1
  418. package/dist/ontology/validation/index.d.ts.map +1 -1
  419. package/dist/ontology/validation/normalize.d.ts.map +1 -1
  420. package/dist/ontology/validation/properties.d.ts +6 -1
  421. package/dist/ontology/validation/properties.d.ts.map +1 -1
  422. package/dist/ontology/validation/query.d.ts.map +1 -1
  423. package/dist/ontology/validation/schema.d.ts +1 -1
  424. package/dist/ontology/validation/schema.d.ts.map +1 -1
  425. package/dist/ontology/vector-profiles.d.ts +4 -0
  426. package/dist/ontology/vector-profiles.d.ts.map +1 -0
  427. package/dist/pipelines/index.js +32 -29
  428. package/dist/pipelines/index.js.map +1 -1
  429. package/dist/predicates/types.d.ts +53 -3
  430. package/dist/predicates/types.d.ts.map +1 -1
  431. package/dist/projections/builders.d.ts +19 -1
  432. package/dist/projections/builders.d.ts.map +1 -1
  433. package/dist/projections/internal.js +28 -25
  434. package/dist/projections/internal.js.map +1 -1
  435. package/dist/projections/validation.d.ts.map +1 -1
  436. package/dist/query.js +2 -2
  437. package/dist/queues/in-memory.d.ts +3 -2
  438. package/dist/queues/in-memory.d.ts.map +1 -1
  439. package/dist/queues/index.d.ts +1 -1
  440. package/dist/queues/index.d.ts.map +1 -1
  441. package/dist/queues/index.js +1 -1
  442. package/dist/queues/types.d.ts +5 -0
  443. package/dist/queues/types.d.ts.map +1 -1
  444. package/dist/runtime/create.d.ts +4 -3
  445. package/dist/runtime/create.d.ts.map +1 -1
  446. package/dist/runtime/host.d.ts +10 -7
  447. package/dist/runtime/host.d.ts.map +1 -1
  448. package/dist/runtime/index.d.ts +1 -1
  449. package/dist/runtime/index.d.ts.map +1 -1
  450. package/dist/runtime/internal.d.ts +3 -0
  451. package/dist/runtime/internal.d.ts.map +1 -1
  452. package/dist/runtime/internal.js +49 -1
  453. package/dist/runtime/internal.js.map +1 -1
  454. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  455. package/dist/runtime/sixb.d.ts +11 -6
  456. package/dist/runtime/sixb.d.ts.map +1 -1
  457. package/dist/runtime/types.d.ts +182 -187
  458. package/dist/runtime/types.d.ts.map +1 -1
  459. package/dist/sandboxes/auth.d.ts +16 -0
  460. package/dist/sandboxes/auth.d.ts.map +1 -0
  461. package/dist/sandboxes/config.d.ts +5 -0
  462. package/dist/sandboxes/config.d.ts.map +1 -0
  463. package/dist/sandboxes/configuration.d.ts +41 -0
  464. package/dist/sandboxes/configuration.d.ts.map +1 -0
  465. package/dist/sandboxes/environment.d.ts +13 -0
  466. package/dist/sandboxes/environment.d.ts.map +1 -0
  467. package/dist/sandboxes/errors.d.ts +1 -1
  468. package/dist/sandboxes/errors.d.ts.map +1 -1
  469. package/dist/sandboxes/index.d.ts +6 -1
  470. package/dist/sandboxes/index.d.ts.map +1 -1
  471. package/dist/sandboxes/index.js +16 -3
  472. package/dist/sandboxes/index.js.map +1 -1
  473. package/dist/sandboxes/sandbox.d.ts +39 -4
  474. package/dist/sandboxes/sandbox.d.ts.map +1 -1
  475. package/dist/shared/params/builders.d.ts +25 -0
  476. package/dist/shared/params/builders.d.ts.map +1 -0
  477. package/dist/shared/params/types.d.ts +48 -0
  478. package/dist/shared/params/types.d.ts.map +1 -0
  479. package/dist/shared/params/user-refs.d.ts +19 -0
  480. package/dist/shared/params/user-refs.d.ts.map +1 -0
  481. package/dist/shared/params/validation.d.ts +15 -0
  482. package/dist/shared/params/validation.d.ts.map +1 -0
  483. package/dist/shares/compiler.d.ts.map +1 -1
  484. package/dist/shares/internal.js +29 -26
  485. package/dist/shares/internal.js.map +2 -2
  486. package/dist/storage/action-runs/failure.js +4 -3
  487. package/dist/storage/action-runs/failure.js.map +1 -1
  488. package/dist/storage/action-runs/provider.js +1 -1
  489. package/dist/storage/action-runs/types.d.ts +1 -1
  490. package/dist/storage/action-runs/types.d.ts.map +1 -1
  491. package/dist/storage/agents/in-memory.d.ts +2 -1
  492. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  493. package/dist/storage/agents/index.d.ts +1 -1
  494. package/dist/storage/agents/index.d.ts.map +1 -1
  495. package/dist/storage/agents/provider.d.ts +5 -1
  496. package/dist/storage/agents/provider.d.ts.map +1 -1
  497. package/dist/storage/agents/provider.js +8 -4
  498. package/dist/storage/agents/provider.js.map +1 -1
  499. package/dist/storage/agents/types.d.ts +49 -0
  500. package/dist/storage/agents/types.d.ts.map +1 -1
  501. package/dist/storage/ai-cost/analytics.d.ts +1 -0
  502. package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
  503. package/dist/storage/ai-cost/index.d.ts +1 -1
  504. package/dist/storage/ai-cost/index.d.ts.map +1 -1
  505. package/dist/storage/ai-cost/provider.js +2 -2
  506. package/dist/storage/ai-cost/types.d.ts +14 -2
  507. package/dist/storage/ai-cost/types.d.ts.map +1 -1
  508. package/dist/storage/ai-limits/enforcement.js +4 -3
  509. package/dist/storage/ai-limits/enforcement.js.map +1 -1
  510. package/dist/storage/auth/in-memory/access-tokens.d.ts.map +1 -1
  511. package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
  512. package/dist/storage/auth/in-memory/device-authorizations.d.ts.map +1 -1
  513. package/dist/storage/auth/in-memory/sessions.d.ts +8 -1
  514. package/dist/storage/auth/in-memory/sessions.d.ts.map +1 -1
  515. package/dist/storage/auth/in-memory/shared.d.ts.map +1 -1
  516. package/dist/storage/auth/index.d.ts +1 -1
  517. package/dist/storage/auth/index.d.ts.map +1 -1
  518. package/dist/storage/auth/types.d.ts +62 -13
  519. package/dist/storage/auth/types.d.ts.map +1 -1
  520. package/dist/storage/connector-connections/provider.js +3 -2
  521. package/dist/storage/connector-connections/provider.js.map +2 -2
  522. package/dist/storage/executions/provider.d.ts +3 -3
  523. package/dist/storage/executions/provider.d.ts.map +1 -1
  524. package/dist/storage/executions/provider.js +13 -11
  525. package/dist/storage/executions/provider.js.map +3 -3
  526. package/dist/storage/executions/types.d.ts +3 -0
  527. package/dist/storage/executions/types.d.ts.map +1 -1
  528. package/dist/storage/executions/validation.d.ts.map +1 -1
  529. package/dist/storage/file-upload-sessions/in-memory.d.ts +9 -18
  530. package/dist/storage/file-upload-sessions/in-memory.d.ts.map +1 -1
  531. package/dist/storage/file-upload-sessions/index.d.ts +1 -1
  532. package/dist/storage/file-upload-sessions/index.d.ts.map +1 -1
  533. package/dist/storage/file-upload-sessions/provider.d.ts +52 -0
  534. package/dist/storage/file-upload-sessions/provider.d.ts.map +1 -0
  535. package/dist/storage/file-upload-sessions/provider.js +24 -0
  536. package/dist/storage/file-upload-sessions/provider.js.map +9 -0
  537. package/dist/storage/file-upload-sessions/types.d.ts +19 -1
  538. package/dist/storage/file-upload-sessions/types.d.ts.map +1 -1
  539. package/dist/storage/file-upload-sessions/utils.d.ts +8 -2
  540. package/dist/storage/file-upload-sessions/utils.d.ts.map +1 -1
  541. package/dist/storage/index.d.ts +8 -6
  542. package/dist/storage/index.d.ts.map +1 -1
  543. package/dist/storage/index.js +37 -30
  544. package/dist/storage/index.js.map +1 -1
  545. package/dist/storage/internal.js +11 -9
  546. package/dist/storage/internal.js.map +1 -1
  547. package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
  548. package/dist/storage/objects/in-memory/read-source.d.ts +5 -0
  549. package/dist/storage/objects/in-memory/read-source.d.ts.map +1 -1
  550. package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
  551. package/dist/storage/objects/in-memory/storage.d.ts +7 -0
  552. package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
  553. package/dist/storage/objects/types.d.ts +2 -0
  554. package/dist/storage/objects/types.d.ts.map +1 -1
  555. package/dist/storage/ontology/commits.d.ts +7 -2
  556. package/dist/storage/ontology/commits.d.ts.map +1 -1
  557. package/dist/storage/ontology/in-memory/index.d.ts +4 -0
  558. package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
  559. package/dist/storage/ontology/in-memory/materializations.d.ts +2 -0
  560. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
  561. package/dist/storage/ontology/in-memory/shared-state.d.ts +7 -0
  562. package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
  563. package/dist/storage/ontology/in-memory/vector-indexing.d.ts +44 -0
  564. package/dist/storage/ontology/in-memory/vector-indexing.d.ts.map +1 -0
  565. package/dist/storage/ontology/in-memory/vectors.d.ts +31 -0
  566. package/dist/storage/ontology/in-memory/vectors.d.ts.map +1 -0
  567. package/dist/storage/ontology/index.d.ts +6 -0
  568. package/dist/storage/ontology/index.d.ts.map +1 -1
  569. package/dist/storage/ontology/provider-work.d.ts.map +1 -1
  570. package/dist/storage/ontology/provider.d.ts +14 -1
  571. package/dist/storage/ontology/provider.d.ts.map +1 -1
  572. package/dist/storage/ontology/provider.js +9 -3
  573. package/dist/storage/ontology/provider.js.map +1 -1
  574. package/dist/storage/ontology/vector-indexing.d.ts +94 -0
  575. package/dist/storage/ontology/vector-indexing.d.ts.map +1 -0
  576. package/dist/storage/ontology/vectors.d.ts +56 -0
  577. package/dist/storage/ontology/vectors.d.ts.map +1 -0
  578. package/dist/storage/operation-scope.d.ts.map +1 -1
  579. package/dist/storage/operation-scope.js +1 -1
  580. package/dist/storage/projection-runs/provider.js +4 -3
  581. package/dist/storage/projection-runs/provider.js.map +1 -1
  582. package/dist/storage/types.d.ts +2 -2
  583. package/dist/storage/types.d.ts.map +1 -1
  584. package/dist/storage/workflow-interventions/index.d.ts +1 -1
  585. package/dist/storage/workflow-interventions/index.d.ts.map +1 -1
  586. package/dist/storage/workflow-interventions/types.d.ts +5 -8
  587. package/dist/storage/workflow-interventions/types.d.ts.map +1 -1
  588. package/dist/storage/workflow-runs/provider.js +10 -8
  589. package/dist/storage/workflow-runs/provider.js.map +1 -1
  590. package/dist/syncs/index.js +33 -30
  591. package/dist/syncs/index.js.map +1 -1
  592. package/dist/testing/action-execution.d.ts +4 -0
  593. package/dist/testing/action-execution.d.ts.map +1 -1
  594. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  595. package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
  596. package/dist/testing/auth-storage-contract.d.ts.map +1 -1
  597. package/dist/testing/execution.d.ts +1 -2
  598. package/dist/testing/execution.d.ts.map +1 -1
  599. package/dist/testing/file-upload-session-storage-contract.d.ts +12 -0
  600. package/dist/testing/file-upload-session-storage-contract.d.ts.map +1 -0
  601. package/dist/testing/index.d.ts +2 -0
  602. package/dist/testing/index.d.ts.map +1 -1
  603. package/dist/testing/index.js +2351 -1263
  604. package/dist/testing/index.js.map +19 -17
  605. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  606. package/dist/testing/object-query-contract.d.ts.map +1 -1
  607. package/dist/testing/object-read-scope-contract.d.ts.map +1 -1
  608. package/dist/testing/ontology-contract-fixture.d.ts +8 -0
  609. package/dist/testing/ontology-contract-fixture.d.ts.map +1 -1
  610. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  611. package/dist/testing/queues-contract.d.ts.map +1 -1
  612. package/dist/testing/sandboxes-contract.d.ts.map +1 -1
  613. package/dist/testing/workflow-intervention-storage-contract.d.ts +8 -0
  614. package/dist/testing/workflow-intervention-storage-contract.d.ts.map +1 -0
  615. package/dist/webhooks/internal.js +29 -26
  616. package/dist/webhooks/internal.js.map +2 -2
  617. package/dist/webhooks/types.d.ts +2 -2
  618. package/dist/webhooks/types.d.ts.map +1 -1
  619. package/dist/workers/index.js +3 -2
  620. package/dist/workers/index.js.map +2 -2
  621. package/dist/workflows/failure.d.ts.map +1 -1
  622. package/dist/workflows/index.js +51 -45
  623. package/dist/workflows/index.js.map +1 -1
  624. package/dist/workflows/run-dispatch.d.ts.map +1 -1
  625. package/dist/workflows/types.d.ts +2 -2
  626. package/dist/workflows/types.d.ts.map +1 -1
  627. package/package.json +7 -1
  628. package/src/actions/builders/params.ts +1 -48
  629. package/src/actions/index.ts +0 -3
  630. package/src/actions/read-facade.ts +102 -62
  631. package/src/actions/request.ts +13 -0
  632. package/src/actions/run-dispatch.ts +3 -0
  633. package/src/actions/types/context.ts +17 -65
  634. package/src/actions/types/params.ts +16 -75
  635. package/src/actions/validation.ts +7 -84
  636. package/src/agents/authority.ts +1 -1
  637. package/src/agents/errors.ts +3 -0
  638. package/src/agents/execution.ts +67 -15
  639. package/src/agents/ids.ts +8 -0
  640. package/src/agents/index.ts +1 -0
  641. package/src/agents/request.ts +11 -0
  642. package/src/agents/sandbox.ts +44 -0
  643. package/src/agents/validation.ts +2 -108
  644. package/src/assert-never.ts +7 -0
  645. package/src/auth/client-address.ts +12 -0
  646. package/src/auth/csrf.ts +14 -5
  647. package/src/auth/index.ts +3 -2
  648. package/src/auth/runtime.ts +299 -277
  649. package/src/auth/session-cache.ts +18 -6
  650. package/src/auth/sessions.ts +30 -0
  651. package/src/auth/types.ts +7 -17
  652. package/src/bootstrap/index.ts +1 -0
  653. package/src/bootstrap/ontology-type-manifest.ts +112 -60
  654. package/src/datasets/validation.ts +40 -11
  655. package/src/datasets/write.ts +8 -11
  656. package/src/edits/types.ts +47 -63
  657. package/src/error-reporting/capability.ts +11 -0
  658. package/src/error-reporting/reports.ts +23 -0
  659. package/src/error-reporting/types.ts +12 -1
  660. package/src/errors/catalog.ts +16 -0
  661. package/src/errors/failure-message.ts +15 -0
  662. package/src/errors/internal.ts +57 -25
  663. package/src/events/envelope.ts +0 -13
  664. package/src/events/index.ts +1 -1
  665. package/src/events/service.ts +1 -11
  666. package/src/events/toStoredEvent.ts +1 -3
  667. package/src/events/types/index.ts +1 -1
  668. package/src/execution/agent.ts +1 -2
  669. package/src/execution/authorization.ts +12 -5
  670. package/src/execution/authorized-object-reader.ts +42 -9
  671. package/src/execution/kernel-operation.ts +27 -0
  672. package/src/execution/primitive.ts +1 -2
  673. package/src/execution/request.ts +1 -2
  674. package/src/execution/scopes.ts +2 -0
  675. package/src/execution/types.ts +4 -4
  676. package/src/index.ts +68 -8
  677. package/src/lake-storage/in-memory.ts +5 -3
  678. package/src/maintenance/ontology-maintenance.ts +77 -1
  679. package/src/materialization/errors.ts +4 -2
  680. package/src/materialization/events.ts +27 -2
  681. package/src/materialization/index.ts +1 -0
  682. package/src/materialization/model.ts +2 -0
  683. package/src/materialization/vectors.ts +18 -0
  684. package/src/materializer/README.md +16 -0
  685. package/src/materializer/context.ts +10 -0
  686. package/src/materializer/edits/commit.ts +29 -13
  687. package/src/materializer/edits/operations.ts +32 -4
  688. package/src/materializer/edits/plan.ts +4 -5
  689. package/src/materializer/edits/user-refs.ts +115 -0
  690. package/src/materializer/edits/vector-authority.ts +108 -0
  691. package/src/materializer/edits/vectors.ts +100 -0
  692. package/src/materializer/effective/build-events.ts +4 -5
  693. package/src/materializer/effective/validate.ts +10 -3
  694. package/src/materializer/effective/vector-indexing.ts +84 -0
  695. package/src/materializer/effective/vectors.ts +47 -0
  696. package/src/materializer/execution/scope.ts +40 -7
  697. package/src/materializer/execution/work-executor.ts +11 -3
  698. package/src/materializer/projections/replace.ts +3 -1
  699. package/src/materializer/projections/replacement-plan.ts +4 -0
  700. package/src/materializer/shared/normalize.ts +11 -0
  701. package/src/materializer/telemetry/append.ts +5 -13
  702. package/src/materializer/telemetry/plan.ts +4 -5
  703. package/src/models/catalog-index.ts +38 -0
  704. package/src/models/catalog.ts +66 -38
  705. package/src/models/decision/catalog.ts +32 -0
  706. package/src/models/decision/errors.ts +18 -0
  707. package/src/models/decision/output.ts +101 -0
  708. package/src/models/decision/questions.ts +29 -0
  709. package/src/models/decision/runtime.ts +188 -0
  710. package/src/models/decision/types.ts +109 -0
  711. package/src/models/decision/validation.ts +335 -0
  712. package/src/models/definitions.ts +1 -1
  713. package/src/models/embedding-model.ts +129 -0
  714. package/src/models/execution/README.md +63 -0
  715. package/src/models/execution/binding.ts +2 -0
  716. package/src/models/execution/embedding.ts +133 -0
  717. package/src/models/execution/model-call-recorder.ts +42 -30
  718. package/src/models/execution/session.ts +81 -0
  719. package/src/models/execution.ts +10 -52
  720. package/src/models/generation-types.ts +2 -0
  721. package/src/models/index.ts +37 -0
  722. package/src/models/pricing.ts +1 -2
  723. package/src/objects/authorized-ontology-view.ts +12 -8
  724. package/src/objects/execution.ts +34 -61
  725. package/src/objects/query/executor.ts +25 -7
  726. package/src/objects/query/explain.ts +7 -2
  727. package/src/objects/query/index.ts +2 -0
  728. package/src/objects/query/ir.ts +13 -2
  729. package/src/objects/query/normalize.ts +5 -1
  730. package/src/objects/query/planner.ts +1 -0
  731. package/src/objects/query/scalar-values.ts +19 -0
  732. package/src/objects/query/validate.ts +129 -117
  733. package/src/objects/sdk/object-handle.ts +11 -8
  734. package/src/objects/sdk/object-set.ts +9 -15
  735. package/src/objects/sdk/query-builder.ts +66 -72
  736. package/src/objects/sdk/query-executor.ts +2 -1
  737. package/src/objects/sdk/runtime-query-executor.ts +6 -2
  738. package/src/objects/sdk/telemetry-channel.ts +6 -7
  739. package/src/objects/sdk/where.ts +6 -13
  740. package/src/objects/vectors/README.md +59 -0
  741. package/src/objects/vectors/handle.ts +91 -0
  742. package/src/objects/vectors/indexing-batch.ts +163 -0
  743. package/src/objects/vectors/indexing-generate.ts +184 -0
  744. package/src/objects/vectors/indexing-runtime.ts +17 -0
  745. package/src/objects/vectors/indexing-shared.ts +188 -0
  746. package/src/objects/vectors/indexing-single.ts +51 -0
  747. package/src/objects/vectors/indexing-store-batch.ts +62 -0
  748. package/src/objects/vectors/indexing.ts +23 -0
  749. package/src/objects/vectors/profile.ts +64 -0
  750. package/src/objects/vectors/query.ts +16 -0
  751. package/src/objects/vectors/resolve-query.ts +89 -0
  752. package/src/objects/vectors/types.ts +10 -0
  753. package/src/ontology/builders.ts +15 -11
  754. package/src/ontology/index.ts +6 -0
  755. package/src/ontology/inference/index.ts +56 -36
  756. package/src/ontology/internal.ts +1 -0
  757. package/src/ontology/json-schema.ts +12 -0
  758. package/src/ontology/primitives.ts +91 -0
  759. package/src/ontology/query-capabilities.ts +136 -0
  760. package/src/ontology/refs.ts +33 -6
  761. package/src/ontology/registered.ts +22 -0
  762. package/src/ontology/registry.ts +14 -3
  763. package/src/ontology/tokens.ts +41 -2
  764. package/src/ontology/types.ts +28 -12
  765. package/src/ontology/user-ref.ts +120 -0
  766. package/src/ontology/validation/definition.ts +93 -0
  767. package/src/ontology/validation/index.ts +1 -0
  768. package/src/ontology/validation/normalize.ts +39 -3
  769. package/src/ontology/validation/properties.ts +109 -23
  770. package/src/ontology/validation/query.ts +44 -92
  771. package/src/ontology/validation/schema.ts +101 -23
  772. package/src/ontology/vector-profiles.ts +35 -0
  773. package/src/predicates/types.ts +43 -33
  774. package/src/projections/builders.ts +24 -3
  775. package/src/projections/validation.ts +15 -1
  776. package/src/queues/in-memory.ts +5 -0
  777. package/src/queues/index.ts +1 -0
  778. package/src/queues/types.ts +10 -0
  779. package/src/runtime/create.ts +7 -6
  780. package/src/runtime/host.ts +44 -10
  781. package/src/runtime/index.ts +3 -2
  782. package/src/runtime/internal.ts +3 -0
  783. package/src/runtime/resolve-definitions.ts +19 -1
  784. package/src/runtime/sixb.ts +25 -17
  785. package/src/runtime/types.ts +288 -478
  786. package/src/sandboxes/README.md +41 -0
  787. package/src/sandboxes/auth.ts +17 -0
  788. package/src/sandboxes/config.ts +37 -0
  789. package/src/sandboxes/configuration.ts +268 -0
  790. package/src/sandboxes/environment.ts +107 -0
  791. package/src/sandboxes/errors.ts +1 -1
  792. package/src/sandboxes/index.ts +15 -0
  793. package/src/sandboxes/sandbox.ts +42 -4
  794. package/src/shared/params/builders.ts +50 -0
  795. package/src/shared/params/types.ts +85 -0
  796. package/src/shared/params/user-refs.ts +48 -0
  797. package/src/shared/params/validation.ts +114 -0
  798. package/src/shares/compiler.ts +6 -16
  799. package/src/storage/action-runs/types.ts +1 -0
  800. package/src/storage/agents/in-memory.ts +25 -1
  801. package/src/storage/agents/index.ts +3 -0
  802. package/src/storage/agents/provider.ts +105 -0
  803. package/src/storage/agents/types.ts +54 -0
  804. package/src/storage/ai-cost/analytics.ts +59 -21
  805. package/src/storage/ai-cost/index.ts +1 -0
  806. package/src/storage/ai-cost/types.ts +19 -2
  807. package/src/storage/auth/in-memory/access-tokens.ts +5 -2
  808. package/src/storage/auth/in-memory/auth-storage.ts +5 -8
  809. package/src/storage/auth/in-memory/device-authorizations.ts +0 -2
  810. package/src/storage/auth/in-memory/sessions.ts +69 -1
  811. package/src/storage/auth/in-memory/shared.ts +13 -7
  812. package/src/storage/auth/index.ts +2 -1
  813. package/src/storage/auth/types.ts +57 -13
  814. package/src/storage/executions/provider.ts +24 -12
  815. package/src/storage/executions/types.ts +1 -0
  816. package/src/storage/executions/validation.ts +8 -4
  817. package/src/storage/file-upload-sessions/in-memory.ts +64 -113
  818. package/src/storage/file-upload-sessions/index.ts +1 -0
  819. package/src/storage/file-upload-sessions/provider.ts +258 -0
  820. package/src/storage/file-upload-sessions/types.ts +20 -1
  821. package/src/storage/file-upload-sessions/utils.ts +25 -9
  822. package/src/storage/index.ts +18 -3
  823. package/src/storage/objects/in-memory/query.ts +38 -14
  824. package/src/storage/objects/in-memory/read-scope.ts +9 -2
  825. package/src/storage/objects/in-memory/read-source.ts +5 -0
  826. package/src/storage/objects/in-memory/selected-reader.ts +5 -1
  827. package/src/storage/objects/in-memory/storage.ts +19 -1
  828. package/src/storage/objects/types.ts +2 -0
  829. package/src/storage/ontology/commits.ts +7 -2
  830. package/src/storage/ontology/in-memory/index.ts +20 -0
  831. package/src/storage/ontology/in-memory/materializations.ts +19 -34
  832. package/src/storage/ontology/in-memory/shared-state.ts +9 -0
  833. package/src/storage/ontology/in-memory/vector-indexing.ts +179 -0
  834. package/src/storage/ontology/in-memory/vectors.ts +73 -0
  835. package/src/storage/ontology/index.ts +14 -0
  836. package/src/storage/ontology/provider-header-validation.ts +57 -0
  837. package/src/storage/ontology/provider-work.ts +15 -3
  838. package/src/storage/ontology/provider.ts +59 -1
  839. package/src/storage/ontology/vector-indexing.ts +98 -0
  840. package/src/storage/ontology/vectors.ts +48 -0
  841. package/src/storage/operation-scope.ts +2 -0
  842. package/src/storage/types.ts +3 -1
  843. package/src/storage/workflow-interventions/index.ts +0 -1
  844. package/src/storage/workflow-interventions/types.ts +5 -9
  845. package/src/testing/action-execution.ts +13 -3
  846. package/src/testing/agent-storage-contract.ts +246 -0
  847. package/src/testing/ai-cost-storage-contract.ts +134 -0
  848. package/src/testing/auth-storage-contract.ts +149 -62
  849. package/src/testing/execution-storage-contract.ts +1 -2
  850. package/src/testing/execution.ts +4 -7
  851. package/src/testing/file-upload-session-storage-contract.ts +335 -0
  852. package/src/testing/index.ts +8 -0
  853. package/src/testing/materializer-storage-contract.ts +86 -4
  854. package/src/testing/object-query-contract.ts +162 -27
  855. package/src/testing/object-read-scope-contract.ts +1 -5
  856. package/src/testing/ontology-contract-fixture.ts +23 -3
  857. package/src/testing/ontology-storage-contract.ts +58 -0
  858. package/src/testing/queues-contract.ts +31 -0
  859. package/src/testing/sandboxes-contract.ts +27 -0
  860. package/src/testing/workflow-intervention-storage-contract.ts +203 -0
  861. package/src/webhooks/types.ts +2 -2
  862. package/src/workflows/failure.ts +10 -4
  863. package/src/workflows/run-dispatch.ts +12 -1
  864. package/src/workflows/snapshot.ts +16 -7
  865. package/src/workflows/types.ts +2 -2
  866. package/src/workflows/validation.ts +2 -2
  867. package/dist/chunk-01kj2pbh.js.map +0 -19
  868. package/dist/chunk-5hz0fnca.js.map +0 -12
  869. package/dist/chunk-653vwrzr.js.map +0 -10
  870. package/dist/chunk-7apz6hg4.js.map +0 -10
  871. package/dist/chunk-7bs40fe1.js.map +0 -12
  872. package/dist/chunk-860dwwy0.js.map +0 -14
  873. package/dist/chunk-93csa55g.js.map +0 -11
  874. package/dist/chunk-a0e6x5hd.js.map +0 -14
  875. package/dist/chunk-aa6z4a19.js.map +0 -12
  876. package/dist/chunk-ap0g1g74.js.map +0 -11
  877. package/dist/chunk-awbhdqyc.js.map +0 -10
  878. package/dist/chunk-b19g04jk.js.map +0 -11
  879. package/dist/chunk-dz5h08xv.js.map +0 -25
  880. package/dist/chunk-f0rwz2vh.js.map +0 -11
  881. package/dist/chunk-f4w3yp4f.js.map +0 -12
  882. package/dist/chunk-ftv470j8.js.map +0 -45
  883. package/dist/chunk-g00bfdq6.js.map +0 -43
  884. package/dist/chunk-gq8vhakp.js.map +0 -44
  885. package/dist/chunk-gqh45d2n.js.map +0 -15
  886. package/dist/chunk-gqm76kse.js.map +0 -58
  887. package/dist/chunk-jsy70480.js.map +0 -15
  888. package/dist/chunk-mrp7k0pw.js.map +0 -10
  889. package/dist/chunk-ms2tmn1k.js.map +0 -17
  890. package/dist/chunk-rb1xx120.js.map +0 -11
  891. package/dist/chunk-sepyxgpc.js.map +0 -15
  892. package/dist/chunk-yv79ncbv.js.map +0 -10
  893. package/dist/chunk-z0271qkp.js.map +0 -15
  894. package/dist/chunk-z3y411fq.js +0 -99
  895. package/dist/chunk-z3y411fq.js.map +0 -11
  896. /package/dist/{chunk-1yefycb1.js.map → chunk-2hbhn1ff.js.map} +0 -0
  897. /package/dist/{chunk-wjasrj67.js.map → chunk-3qpcrcj8.js.map} +0 -0
  898. /package/dist/{chunk-0y39rgsb.js.map → chunk-4tnrzqqh.js.map} +0 -0
  899. /package/dist/{chunk-c5rkjrgp.js.map → chunk-7ytf06d3.js.map} +0 -0
  900. /package/dist/{chunk-cfvakeax.js.map → chunk-a69fkrtr.js.map} +0 -0
  901. /package/dist/{chunk-v2vcg0w6.js.map → chunk-cbn96bve.js.map} +0 -0
  902. /package/dist/{chunk-g6cke204.js.map → chunk-f85hpqnm.js.map} +0 -0
  903. /package/dist/{chunk-vsj3mdfj.js.map → chunk-fc5zfxy1.js.map} +0 -0
  904. /package/dist/{chunk-x9m9x2eq.js.map → chunk-jhyc777j.js.map} +0 -0
  905. /package/dist/{chunk-17kfctj6.js.map → chunk-m8zkvep1.js.map} +0 -0
  906. /package/dist/{chunk-9qsh3p5y.js.map → chunk-rb143ggb.js.map} +0 -0
  907. /package/dist/{chunk-92vk7gta.js.map → chunk-vn3yh259.js.map} +0 -0
  908. /package/dist/{chunk-g91qxjj0.js.map → chunk-w9bp61e7.js.map} +0 -0
  909. /package/dist/{chunk-1824gssz.js.map → chunk-y487ywrv.js.map} +0 -0
  910. /package/dist/{chunk-358caqf5.js.map → chunk-znw0zvy4.js.map} +0 -0
@@ -1,15 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/runtime/errors.ts", "../src/models/definitions.ts", "../src/models/catalog.ts", "../src/models/errors.ts", "../src/models/pricing.ts", "../src/models/rate-card.ts"],
4
- "sourcesContent": [
5
- "/**\n * Thrown for runtime setup, lifecycle, and internal invariant failures\n * that are not validation errors (e.g., duplicate registrations, missing\n * bootstrap resources, failed event appends, module load failures).\n */\nexport class RuntimeError extends Error {\n readonly name = \"RuntimeError\"\n}\n",
6
- "import {\n MODEL_REASONING_EFFORTS,\n type ModelCapabilities,\n type ModelReasoningBudgetCapabilities,\n type ModelReasoningCapabilities,\n} from \"./language-model\"\n\nexport type ModelKind = \"language\" | \"image\" | \"video\" | \"embedding\"\n\n/** Common catalog identity shared by every present and future model runtime. */\nexport interface ModelDefinition {\n readonly kind: ModelKind\n readonly providerId: string\n readonly modelId: string\n readonly name?: string\n readonly description?: string\n /** Model author for display; does not change the provider/model routing identity. */\n readonly publisher?: { readonly id: string; readonly name: string }\n /** Hosting service label, when the model is offered through an intermediary. */\n readonly via?: string\n readonly family?: string\n readonly tags?: readonly string[]\n readonly releaseDate?: string\n}\n\n/** Serializable facts about one concrete model offering from one provider. */\nexport interface LanguageModelDefinition extends ModelDefinition {\n readonly kind: \"language\"\n readonly knowledgeCutoff?: string\n readonly contextWindow?: number\n /** Maximum input tokens, distinct from a shared input/output context window. */\n readonly maxInputTokens?: number\n readonly maxOutputTokens?: number\n readonly capabilities: ModelCapabilities\n}\n\nexport function defineLanguageModel(definition: LanguageModelDefinition): LanguageModelDefinition {\n if (definition.kind !== \"language\") {\n throw new TypeError(\"[Sixb] Language model definitions must use kind 'language'.\")\n }\n assertModelId(definition.providerId, \"providerId\")\n assertModelId(definition.modelId, \"modelId\")\n assertOptionalString(definition.name, \"name\")\n assertOptionalString(definition.description, \"description\")\n assertOptionalString(definition.via, \"via\")\n if (definition.via !== undefined && !definition.via.trim())\n throw new TypeError(\"[Sixb] Model via must not be empty.\")\n const publisher = definition.publisher\n if (publisher !== undefined) {\n assertRecord(publisher, \"publisher\")\n for (const [field, value] of Object.entries({ id: publisher.id, name: publisher.name })) {\n if (typeof value !== \"string\" || !value.trim() || value !== value.trim())\n throw new TypeError(`[Sixb] Model publisher.${field} must be a nonempty trimmed string.`)\n }\n }\n assertOptionalString(definition.family, \"family\")\n assertOptionalString(definition.releaseDate, \"releaseDate\")\n assertOptionalString(definition.knowledgeCutoff, \"knowledgeCutoff\")\n const tags = freezeStrings(definition.tags, \"tags\")\n const capabilities = defineModelCapabilities(definition.capabilities)\n assertOptionalPositiveInteger(definition.contextWindow, \"contextWindow\")\n assertOptionalPositiveInteger(definition.maxInputTokens, \"maxInputTokens\")\n assertOptionalPositiveInteger(definition.maxOutputTokens, \"maxOutputTokens\")\n return Object.freeze({\n kind: \"language\",\n providerId: definition.providerId,\n modelId: definition.modelId,\n ...(definition.name === undefined ? {} : { name: definition.name }),\n ...(definition.description === undefined ? {} : { description: definition.description }),\n ...(publisher === undefined\n ? {}\n : { publisher: Object.freeze({ id: publisher.id, name: publisher.name }) }),\n ...(definition.via === undefined ? {} : { via: definition.via }),\n ...(definition.family === undefined ? {} : { family: definition.family }),\n ...(tags === undefined ? {} : { tags }),\n ...(definition.releaseDate === undefined ? {} : { releaseDate: definition.releaseDate }),\n ...(definition.knowledgeCutoff === undefined\n ? {}\n : { knowledgeCutoff: definition.knowledgeCutoff }),\n ...(definition.contextWindow === undefined ? {} : { contextWindow: definition.contextWindow }),\n ...(definition.maxInputTokens === undefined\n ? {}\n : { maxInputTokens: definition.maxInputTokens }),\n ...(definition.maxOutputTokens === undefined\n ? {}\n : { maxOutputTokens: definition.maxOutputTokens }),\n capabilities,\n })\n}\n\nfunction defineModelCapabilities(capabilities: unknown): ModelCapabilities {\n assertRecord(capabilities, \"capabilities\")\n const inputMediaTypes =\n capabilities.inputMediaTypes === \"any\"\n ? \"any\"\n : freezeStrings(capabilities.inputMediaTypes, \"capabilities.inputMediaTypes\")\n for (const [field, value] of Object.entries(capabilities)) {\n if (field === \"inputMediaTypes\" || field === \"reasoning\") continue\n if (value !== undefined && typeof value !== \"boolean\") {\n throw new TypeError(`[Sixb] Model capability '${field}' must be boolean.`)\n }\n }\n const reasoning = freezeReasoningCapabilities(capabilities.reasoning)\n const flags: {\n localTools?: boolean\n parallelToolCalls?: boolean\n nativeStructuredOutput?: boolean\n providerExecutedTools?: boolean\n } = {}\n for (const key of [\n \"localTools\",\n \"parallelToolCalls\",\n \"nativeStructuredOutput\",\n \"providerExecutedTools\",\n ] as const) {\n const value = capabilities[key]\n if (typeof value === \"boolean\") flags[key] = value\n }\n return Object.freeze({\n ...(inputMediaTypes === undefined ? {} : { inputMediaTypes }),\n ...(reasoning === undefined ? {} : { reasoning }),\n ...flags,\n })\n}\n\nfunction freezeReasoningCapabilities(reasoning: unknown): ModelCapabilities[\"reasoning\"] {\n if (reasoning === undefined || reasoning === false) return reasoning\n assertRecord(reasoning, \"reasoning\")\n if (reasoning.canDisable !== undefined && typeof reasoning.canDisable !== \"boolean\") {\n throw new TypeError(\"[Sixb] Model reasoning capability 'canDisable' must be boolean.\")\n }\n const efforts = freezeReasoningEfforts(reasoning.efforts)\n const budgetTokens = freezeReasoningBudgetCapabilities(reasoning.budgetTokens)\n return Object.freeze({\n ...(reasoning.canDisable === undefined ? {} : { canDisable: reasoning.canDisable }),\n ...(efforts === undefined ? {} : { efforts }),\n ...(budgetTokens === undefined ? {} : { budgetTokens }),\n } satisfies ModelReasoningCapabilities)\n}\n\nfunction freezeReasoningEfforts(\n efforts: unknown\n): readonly (typeof MODEL_REASONING_EFFORTS)[number][] | undefined {\n if (efforts === undefined) return undefined\n if (!Array.isArray(efforts)) {\n throw new TypeError(\"[Sixb] Model reasoning capability 'efforts' must be an array.\")\n }\n const seen = new Set<string>()\n return Object.freeze(\n efforts.map((value: unknown) => {\n const effort = MODEL_REASONING_EFFORTS.find((allowed) => allowed === value)\n if (effort === undefined) {\n throw new TypeError(`[Sixb] Model reasoning effort '${String(value)}' is invalid.`)\n }\n if (seen.has(effort)) {\n throw new TypeError(`[Sixb] Model reasoning effort '${effort}' is duplicated.`)\n }\n seen.add(effort)\n return effort\n })\n )\n}\n\nfunction freezeReasoningBudgetCapabilities(\n budget: unknown\n): ModelReasoningBudgetCapabilities | undefined {\n if (budget === undefined) return undefined\n assertRecord(budget, \"reasoning budgetTokens\")\n assertOptionalNonnegativeInteger(budget.min, \"capabilities.reasoning.budgetTokens.min\")\n assertOptionalNonnegativeInteger(budget.max, \"capabilities.reasoning.budgetTokens.max\")\n if (budget.min !== undefined && budget.max !== undefined && budget.max < budget.min) {\n throw new TypeError(\n \"[Sixb] Model reasoning token budget maximum must not be below its minimum.\"\n )\n }\n return Object.freeze({\n ...(budget.min === undefined ? {} : { min: budget.min }),\n ...(budget.max === undefined ? {} : { max: budget.max }),\n })\n}\n\nfunction assertModelId(value: string, field: string): void {\n if (!value.trim()) throw new TypeError(`[Sixb] Model ${field} must not be empty.`)\n}\n\nfunction assertOptionalPositiveInteger(value: number | undefined, field: string): void {\n if (value !== undefined && (!Number.isSafeInteger(value) || value <= 0)) {\n throw new TypeError(`[Sixb] Model ${field} must be a positive safe integer.`)\n }\n}\n\nfunction assertOptionalNonnegativeInteger(\n value: unknown,\n field: string\n): asserts value is number | undefined {\n if (\n value !== undefined &&\n (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < 0)\n ) {\n throw new TypeError(`[Sixb] Model ${field} must be a nonnegative safe integer.`)\n }\n}\n\nfunction assertOptionalString(value: string | undefined, field: string): void {\n if (value !== undefined && typeof value !== \"string\") {\n throw new TypeError(`[Sixb] Model ${field} must be a string.`)\n }\n}\n\nfunction freezeStrings(value: unknown, field: string): readonly string[] | undefined {\n if (value === undefined) return undefined\n if (!Array.isArray(value) || value.some((entry) => typeof entry !== \"string\" || !entry.trim())) {\n throw new TypeError(`[Sixb] Model ${field} must contain nonempty strings.`)\n }\n return Object.freeze([...value])\n}\n\nfunction assertRecord(value: unknown, field: string): asserts value is Record<string, unknown> {\n if (value === null || typeof value !== \"object\" || Array.isArray(value))\n throw new TypeError(`[Sixb] Model ${field} must be an object.`)\n}\n",
7
- "import { RuntimeError } from \"../runtime/errors\"\nimport {\n defineLanguageModel,\n type LanguageModelDefinition,\n type ModelDefinition,\n} from \"./definitions\"\nimport type { LanguageModel } from \"./language-model\"\n\n/** Stable identity of one configured language-model binding. */\nexport interface LanguageModelRef {\n readonly provider: string\n readonly modelId: string\n}\n\n/** The configured language models, with the project default. */\nexport interface LanguageModelCatalog {\n readonly default: LanguageModelEntry\n list(): readonly LanguageModelEntry[]\n getByRef(ref: LanguageModelRef): LanguageModelEntry | null\n}\n\n/**\n * One configured language model.\n *\n * The identity describes the configured binding, not only a vendor model. For example,\n * A gateway binding and a direct provider binding for the same vendor model are distinct because their\n * `provider` values differ.\n */\nexport interface LanguageModelEntry extends LanguageModelRef {\n readonly model: LanguageModel\n}\n\n/** Models a project allows Sixb to use, organized by technical model kind. */\nexport interface ModelCatalog {\n readonly language: LanguageModelCatalog\n}\n\nexport interface ModelCatalogInput {\n /** Ordered; the first entry is the project default. */\n readonly language: readonly LanguageModel[]\n}\n\n/** Build the immutable project model catalog. Rejects invalid, duplicate, and empty catalogs. */\nexport function createModelCatalog(input: ModelCatalogInput): ModelCatalog {\n if (!Array.isArray(input?.language)) {\n throw new RuntimeError(\"[Sixb] 'models.language' must be an array of Sixb language models.\")\n }\n\n const entries: LanguageModelEntry[] = []\n const byProvider = new Map<string, Map<string, LanguageModelEntry>>()\n\n for (const [index, model] of input.language.entries()) {\n assertLanguageModel(model, index)\n\n let byModelId = byProvider.get(model.providerId)\n if (byModelId === undefined) {\n byModelId = new Map()\n byProvider.set(model.providerId, byModelId)\n }\n if (byModelId.has(model.modelId)) {\n throw new RuntimeError(\n `[Sixb] Duplicate language model '${model.providerId}/${model.modelId}' in 'models'. Each provider and model id pair may be configured once.`\n )\n }\n\n const entry = Object.freeze({\n provider: model.providerId,\n modelId: model.modelId,\n model,\n })\n byModelId.set(model.modelId, entry)\n entries.push(entry)\n }\n\n const [defaultEntry] = entries\n if (defaultEntry === undefined) {\n throw new RuntimeError(\n \"[Sixb] 'models.language' needs at least one model. Configure one or omit 'models' from createSixb().\"\n )\n }\n\n const listed = Object.freeze(entries.slice())\n const language: LanguageModelCatalog = Object.freeze({\n default: defaultEntry,\n list: () => listed,\n getByRef: (ref: LanguageModelRef) => byProvider.get(ref.provider)?.get(ref.modelId) ?? null,\n })\n\n return Object.freeze({ language })\n}\n\nfunction assertLanguageModel(model: unknown, index: number): asserts model is LanguageModel {\n if ((typeof model !== \"object\" && typeof model !== \"function\") || model === null) {\n throw invalidLanguageModel(index, \"expected a Sixb LanguageModel instance\")\n }\n\n const candidate = model as Record<string, unknown>\n assertModelIdentifier(candidate.providerId, \"provider\", index)\n assertModelIdentifier(candidate.modelId, \"modelId\", index)\n if (typeof candidate.stream !== \"function\") {\n throw invalidLanguageModel(index, \"expected 'stream' to be a function\")\n }\n try {\n const definition = defineLanguageModel(candidate.definition as LanguageModelDefinition)\n if (\n definition.providerId !== candidate.providerId ||\n definition.modelId !== candidate.modelId\n ) {\n throw new Error(\"definition identity does not match the binding\")\n }\n } catch (error) {\n throw invalidLanguageModel(index, error instanceof Error ? error.message : \"invalid definition\")\n }\n}\n\nfunction assertModelIdentifier(value: unknown, field: \"provider\" | \"modelId\", index: number): void {\n if (typeof value !== \"string\" || value.length === 0) {\n throw invalidLanguageModel(index, `expected '${field}' to be a non-empty string`)\n }\n if (value.trim() !== value) {\n throw invalidLanguageModel(index, `expected '${field}' not to have surrounding whitespace`)\n }\n}\n\nfunction invalidLanguageModel(index: number, detail: string): RuntimeError {\n return new RuntimeError(\n `[Sixb] Invalid language model at 'models.language[${index}]': ${detail}.`\n )\n}\n\n/** Provider-owned metadata lookup, independent from the project's configured bindings. */\nexport interface ModelDefinitionCatalog<TDefinition extends ModelDefinition = ModelDefinition> {\n get(modelId: string): Promise<TDefinition | undefined>\n list(): Promise<readonly TDefinition[]>\n}\n\nexport type LanguageModelDefinitionCatalog = ModelDefinitionCatalog<LanguageModelDefinition>\n",
8
- "import type { ModelFinishReason, ModelUsage } from \"./events\"\nimport type { ModelCallCost } from \"./pricing\"\n\n/** Catalog transport/access failed; callers may use local metadata without masking invalid definitions. */\nexport class ModelCatalogUnavailableError extends Error {\n readonly name = \"ModelCatalogUnavailableError\"\n}\n\n/** A provider or provider protocol rejected a model request. */\nexport class ModelProviderError extends Error {\n readonly name = \"ModelProviderError\"\n\n constructor(\n message: string,\n readonly providerId: string,\n readonly modelId: string,\n options?: ErrorOptions & {\n readonly status?: number\n readonly code?: string\n readonly requestId?: string\n readonly retryAfterMs?: number\n readonly retryable?: boolean\n }\n ) {\n super(message, options)\n this.status = options?.status\n this.code = options?.code\n this.requestId = options?.requestId\n this.retryAfterMs = options?.retryAfterMs\n this.retryable = options?.retryable ?? false\n }\n\n readonly status?: number\n readonly code?: string\n readonly requestId?: string\n readonly retryAfterMs?: number\n readonly retryable: boolean\n}\n\nexport class ModelStreamError extends Error {\n readonly name = \"ModelStreamError\"\n}\n\nexport class UnsupportedModelFeatureError extends Error {\n readonly name = \"UnsupportedModelFeatureError\"\n\n constructor(\n message?: string,\n options?: ErrorOptions & {\n readonly reason?: \"unsupported-model\" | \"unsupported-schema\"\n }\n ) {\n super(message, options)\n this.reason = options?.reason\n }\n\n readonly reason?: \"unsupported-model\" | \"unsupported-schema\"\n}\n\nexport class StructuredOutputError extends Error {\n readonly name = \"StructuredOutputError\"\n\n constructor(\n message: string,\n options?: ErrorOptions & {\n readonly text?: string\n readonly providerId?: string\n readonly modelId?: string\n readonly responseId?: string\n readonly responseModelId?: string\n readonly finishReason?: ModelFinishReason\n readonly usage?: ModelUsage\n readonly cost?: ModelCallCost\n }\n ) {\n super(message, options)\n this.text = options?.text\n this.providerId = options?.providerId\n this.modelId = options?.modelId\n this.responseId = options?.responseId\n this.responseModelId = options?.responseModelId\n this.finishReason = options?.finishReason\n this.usage = options?.usage\n this.cost = options?.cost\n }\n\n readonly text?: string\n readonly providerId?: string\n readonly modelId?: string\n readonly responseId?: string\n readonly responseModelId?: string\n readonly finishReason?: ModelFinishReason\n readonly usage?: ModelUsage\n readonly cost?: ModelCallCost\n}\n",
9
- "import type { ModelRoute, ModelUsage } from \"./events\"\nimport type { LanguageModel } from \"./language-model\"\nimport type { LanguageModelRateCard, ModelTokenPrice } from \"./rate-card\"\n\n/** Optional local financial enrichment cannot discard a completed, billable call. */\nexport function estimateModelCall(\n model: LanguageModel,\n input: Parameters<ModelCostEstimator[\"estimate\"]>[0]\n): ModelCostEstimate {\n try {\n return model.costEstimator?.estimate(input) ?? rateModelCall({ usage: input.usage })\n } catch {\n console.warn(\n \"[Sixb] Model cost estimation failed; preserving usage and available provider cost.\"\n )\n return { status: \"unpriceable\", reason: \"missing-rate-card\" }\n }\n}\n\nexport interface ModelMoney {\n readonly currency: \"USD\"\n /** Billionths of one currency unit, serialized as an integer string. */\n readonly amountNanos: string\n}\n\nexport interface ModelReportedCost {\n readonly money: ModelMoney\n readonly providerId?: string\n}\n\n/** A local estimate is never a provider-reported charge. No financial API is required to run. */\nexport type ModelCostEstimate = Exclude<ModelCallCost, { status: \"reported\" }>\n\nexport interface ModelCostEstimator {\n /** Conservative token-cost reservation, including cache writes and pricing tiers.\n * Return undefined when routing or non-token charges prevent a safe local estimate. */\n estimateReservation?(input: {\n readonly inputTokens: number\n readonly outputTokens: number\n }): ModelMoney | undefined\n\n estimate(input: {\n readonly usage: ModelUsage\n readonly route?: ModelRoute\n readonly responseModelId?: string\n }): ModelCostEstimate\n}\n\nexport type ModelCostMeter =\n | \"tokens.input.total\"\n | \"tokens.input.uncached\"\n | \"tokens.input.cacheRead\"\n | \"tokens.input.cacheWrite\"\n | \"tokens.input.cacheWrite5m\"\n | \"tokens.input.cacheWrite1h\"\n | \"tokens.output.total\"\n\nexport interface ModelCostComponent {\n readonly meter: ModelCostMeter\n readonly quantity: string\n readonly rateAmountNanosPerMillion: string\n readonly chargeAmountNanos: string\n}\n\nexport type ModelCallCost =\n | { readonly status: \"reported\"; readonly money: ModelMoney; readonly providerId?: string }\n | {\n readonly status: \"rated\"\n readonly money: ModelMoney\n readonly components: readonly ModelCostComponent[]\n }\n | {\n readonly status: \"unpriceable\"\n readonly reason: \"missing-rate-card\" | \"missing-usage\" | \"inconsistent-usage\"\n readonly missingMeters?: readonly ModelCostMeter[]\n }\n\n/** Reserve at the highest configured token rates, before cache usage and the final tier are known. */\nexport function estimateModelReservation(input: {\n readonly inputTokens: number\n readonly outputTokens: number\n readonly rateCard?: LanguageModelRateCard\n}): ModelMoney | undefined {\n if (!input.rateCard) return undefined\n if (![input.inputTokens, input.outputTokens].every((n) => Number.isSafeInteger(n) && n >= 0)) {\n throw new TypeError(\n \"[Sixb] Model reservation token estimates must be nonnegative safe integers.\"\n )\n }\n const maxRate = (prices: readonly (ModelTokenPrice | undefined)[]) => {\n const rates = prices.flatMap((price) =>\n price === undefined\n ? []\n : typeof price === \"string\"\n ? [price]\n : [price.default, ...price.tiers.map((tier) => tier.price)]\n )\n return rates.reduce((max, price) => {\n const rate = decimalDollarsToNanos(price)\n return rate > max ? rate : max\n }, 0n)\n }\n const card = input.rateCard\n const inputRate = maxRate([\n card.input,\n card.cacheReadInput,\n card.cacheWriteInput,\n card.cacheWriteInput5m,\n card.cacheWriteInput1h,\n ])\n const outputRate = maxRate([card.output])\n const charge = (tokens: number, rate: bigint) => (BigInt(tokens) * rate + 999_999n) / 1_000_000n\n return {\n currency: \"USD\",\n amountNanos: (\n charge(input.inputTokens, inputRate) + charge(input.outputTokens, outputRate)\n ).toString(),\n }\n}\n\n/** Prefer the provider's bill over rate-card estimates, then rate complete token meters locally. */\nexport function rateModelCall(input: {\n readonly usage: ModelUsage\n readonly rateCard?: LanguageModelRateCard\n readonly reported?: undefined\n}): ModelCostEstimate\nexport function rateModelCall(input: {\n readonly usage: ModelUsage\n readonly rateCard?: LanguageModelRateCard\n readonly reported?: ModelReportedCost\n}): ModelCallCost\nexport function rateModelCall(input: {\n readonly usage: ModelUsage\n readonly rateCard?: LanguageModelRateCard\n readonly reported?: ModelReportedCost\n}): ModelCallCost {\n if (input.reported) {\n assertAmountNanos(input.reported.money.amountNanos)\n return {\n status: \"reported\",\n money: input.reported.money,\n ...(input.reported.providerId === undefined ? {} : { providerId: input.reported.providerId }),\n }\n }\n if (!input.rateCard) return { status: \"unpriceable\", reason: \"missing-rate-card\" }\n const { usage, rateCard } = input\n if (!validUsageCounters(usage)) {\n return { status: \"unpriceable\", reason: \"inconsistent-usage\" }\n }\n if (usage.inputTokens === undefined || usage.outputTokens === undefined) {\n return {\n status: \"unpriceable\",\n reason: \"missing-usage\",\n missingMeters: [\n ...(usage.inputTokens === undefined ? ([\"tokens.input.total\"] as const) : []),\n ...(usage.outputTokens === undefined ? ([\"tokens.output.total\"] as const) : []),\n ],\n }\n }\n\n const partitioned = partitionInputUsage(usage, rateCard)\n if (partitioned.status !== \"rated\") return partitioned\n\n const components: ModelCostComponent[] = []\n if (!partitioned.partitioned) {\n components.push(\n component(\"tokens.input.total\", usage.inputTokens, rateCard.input, usage.inputTokens)\n )\n } else {\n components.push(\n component(\"tokens.input.uncached\", partitioned.uncached, rateCard.input, usage.inputTokens)\n )\n if (partitioned.cacheRead !== undefined) {\n components.push(\n component(\n \"tokens.input.cacheRead\",\n partitioned.cacheRead,\n rateCard.cacheReadInput!,\n usage.inputTokens\n )\n )\n }\n if (partitioned.cacheWrite !== undefined) {\n components.push(\n component(\n \"tokens.input.cacheWrite\",\n partitioned.cacheWrite,\n rateCard.cacheWriteInput!,\n usage.inputTokens\n )\n )\n }\n if (partitioned.cacheWrite5m !== undefined) {\n components.push(\n component(\n \"tokens.input.cacheWrite5m\",\n partitioned.cacheWrite5m,\n rateCard.cacheWriteInput5m ?? rateCard.cacheWriteInput!,\n usage.inputTokens\n )\n )\n }\n if (partitioned.cacheWrite1h !== undefined) {\n components.push(\n component(\n \"tokens.input.cacheWrite1h\",\n partitioned.cacheWrite1h,\n rateCard.cacheWriteInput1h ?? rateCard.cacheWriteInput!,\n usage.inputTokens\n )\n )\n }\n }\n components.push(\n component(\"tokens.output.total\", usage.outputTokens, rateCard.output, usage.inputTokens)\n )\n const total = components.reduce((sum, entry) => sum + BigInt(entry.chargeAmountNanos), 0n)\n return {\n status: \"rated\",\n money: { currency: rateCard.currency, amountNanos: total.toString() },\n components,\n }\n}\n\ntype PartitionResult =\n | { readonly status: \"rated\"; readonly partitioned: false }\n | {\n readonly status: \"rated\"\n readonly partitioned: true\n readonly uncached: number\n readonly cacheRead?: number\n readonly cacheWrite?: number\n readonly cacheWrite5m?: number\n readonly cacheWrite1h?: number\n }\n | Extract<ModelCallCost, { status: \"unpriceable\" }>\n\nfunction partitionInputUsage(usage: ModelUsage, rateCard: LanguageModelRateCard): PartitionResult {\n const hasSpecificWrites =\n usage.cacheWrite5mInputTokens !== undefined || usage.cacheWrite1hInputTokens !== undefined\n const cacheWriteSpecific =\n (usage.cacheWrite5mInputTokens ?? 0) + (usage.cacheWrite1hInputTokens ?? 0)\n if (\n hasSpecificWrites &&\n usage.cacheWriteInputTokens !== undefined &&\n usage.cacheWriteInputTokens !== cacheWriteSpecific\n ) {\n return { status: \"unpriceable\", reason: \"inconsistent-usage\" }\n }\n\n const partitioned =\n usage.uncachedInputTokens !== undefined ||\n usage.cacheReadInputTokens !== undefined ||\n usage.cacheWriteInputTokens !== undefined ||\n hasSpecificWrites ||\n rateCard.cacheReadInput !== undefined ||\n rateCard.cacheWriteInput !== undefined ||\n rateCard.cacheWriteInput5m !== undefined ||\n rateCard.cacheWriteInput1h !== undefined\n if (!partitioned) return { status: \"rated\", partitioned: false }\n\n const cacheRead = usage.cacheReadInputTokens ?? 0\n const totalWrite = usage.cacheWriteInputTokens ?? cacheWriteSpecific\n if (usage.inputTokens !== undefined && cacheRead + totalWrite > usage.inputTokens) {\n return { status: \"unpriceable\", reason: \"inconsistent-usage\" }\n }\n\n const missing: ModelCostMeter[] = []\n if (usage.uncachedInputTokens === undefined) missing.push(\"tokens.input.uncached\")\n if (rateCard.cacheReadInput !== undefined && usage.cacheReadInputTokens === undefined) {\n missing.push(\"tokens.input.cacheRead\")\n }\n if (\n rateCard.cacheWriteInput !== undefined &&\n rateCard.cacheWriteInput5m === undefined &&\n rateCard.cacheWriteInput1h === undefined &&\n usage.cacheWriteInputTokens === undefined\n ) {\n missing.push(\"tokens.input.cacheWrite\")\n }\n if (rateCard.cacheWriteInput5m !== undefined && usage.cacheWrite5mInputTokens === undefined) {\n missing.push(\"tokens.input.cacheWrite5m\")\n }\n if (rateCard.cacheWriteInput1h !== undefined && usage.cacheWrite1hInputTokens === undefined) {\n missing.push(\"tokens.input.cacheWrite1h\")\n }\n if (missing.length > 0) {\n return { status: \"unpriceable\", reason: \"missing-usage\", missingMeters: missing }\n }\n if (cacheRead > 0 && rateCard.cacheReadInput === undefined) {\n return {\n status: \"unpriceable\",\n reason: \"missing-rate-card\",\n missingMeters: [\"tokens.input.cacheRead\"],\n }\n }\n if (!hasSpecificWrites && totalWrite > 0 && rateCard.cacheWriteInput === undefined) {\n return {\n status: \"unpriceable\",\n reason: \"missing-rate-card\",\n missingMeters: [\"tokens.input.cacheWrite\"],\n }\n }\n if (\n (usage.cacheWrite5mInputTokens ?? 0) > 0 &&\n rateCard.cacheWriteInput5m === undefined &&\n rateCard.cacheWriteInput === undefined\n ) {\n return {\n status: \"unpriceable\",\n reason: \"missing-rate-card\",\n missingMeters: [\"tokens.input.cacheWrite5m\"],\n }\n }\n if (\n (usage.cacheWrite1hInputTokens ?? 0) > 0 &&\n rateCard.cacheWriteInput1h === undefined &&\n rateCard.cacheWriteInput === undefined\n ) {\n return {\n status: \"unpriceable\",\n reason: \"missing-rate-card\",\n missingMeters: [\"tokens.input.cacheWrite1h\"],\n }\n }\n\n const uncached = usage.uncachedInputTokens!\n if (uncached + cacheRead + totalWrite !== usage.inputTokens) {\n return { status: \"unpriceable\", reason: \"inconsistent-usage\" }\n }\n return {\n status: \"rated\",\n partitioned: true,\n uncached,\n ...(rateCard.cacheReadInput === undefined ? {} : { cacheRead }),\n ...(hasSpecificWrites\n ? {\n ...(rateCard.cacheWriteInput5m !== undefined || rateCard.cacheWriteInput !== undefined\n ? { cacheWrite5m: usage.cacheWrite5mInputTokens ?? 0 }\n : {}),\n ...(rateCard.cacheWriteInput1h !== undefined || rateCard.cacheWriteInput !== undefined\n ? { cacheWrite1h: usage.cacheWrite1hInputTokens ?? 0 }\n : {}),\n }\n : rateCard.cacheWriteInput === undefined\n ? {}\n : { cacheWrite: totalWrite }),\n }\n}\n\nfunction validUsageCounters(usage: ModelUsage): boolean {\n return Object.entries(usage)\n .filter(([key]) => key !== \"raw\")\n .every(([, value]) => value === undefined || (Number.isSafeInteger(value) && value >= 0))\n}\n\nfunction component(\n meter: ModelCostMeter,\n quantity: number,\n price: ModelTokenPrice,\n tierTokens: number\n): ModelCostComponent {\n const rate = decimalDollarsToNanos(resolvePrice(price, tierTokens))\n const charge = (BigInt(quantity) * rate + 500_000n) / 1_000_000n\n return {\n meter,\n quantity: quantity.toString(),\n rateAmountNanosPerMillion: rate.toString(),\n chargeAmountNanos: charge.toString(),\n }\n}\n\nfunction resolvePrice(price: ModelTokenPrice, tokens: number): string {\n if (typeof price === \"string\") return price\n return (\n price.tiers.find(\n (tier) =>\n tokens >= tier.minTokens && (tier.maxTokens === undefined || tokens < tier.maxTokens)\n )?.price ?? price.default\n )\n}\n\nfunction decimalDollarsToNanos(value: string): bigint {\n const [whole = \"0\", fraction = \"\"] = value.split(\".\")\n const nanos = fraction.slice(0, 9).padEnd(9, \"0\")\n const roundUp = Number(fraction[9] ?? \"0\") >= 5\n return BigInt(whole) * 1_000_000_000n + BigInt(nanos) + (roundUp ? 1n : 0n)\n}\n\nfunction assertAmountNanos(value: string): void {\n if (!/^(?:0|[1-9]\\d*)$/.test(value)) {\n throw new TypeError(\"[Sixb] Provider-reported model cost must use nonnegative amountNanos.\")\n }\n}\n",
10
- "/** Decimal USD per million tokens. Strings keep provider prices exact. */\nexport type ModelUnitPrice = string\n\nexport interface ModelPricingTier {\n readonly minTokens: number\n readonly maxTokens?: number\n readonly price: ModelUnitPrice\n}\n\nexport type ModelTokenPrice =\n | ModelUnitPrice\n | { readonly default: ModelUnitPrice; readonly tiers: readonly ModelPricingTier[] }\n\nexport interface LanguageModelRateCard {\n readonly currency: \"USD\"\n readonly unit: \"million-tokens\"\n readonly input: ModelTokenPrice\n readonly output: ModelTokenPrice\n readonly cacheReadInput?: ModelTokenPrice\n readonly cacheWriteInput?: ModelTokenPrice\n readonly cacheWriteInput5m?: ModelTokenPrice\n readonly cacheWriteInput1h?: ModelTokenPrice\n}\n\n/** Validate and snapshot provider-owned pricing independently of operational metadata. */\nexport function defineModelRateCard(rateCard: LanguageModelRateCard): LanguageModelRateCard {\n assertRecord(rateCard, \"rate card\")\n if (rateCard.currency !== \"USD\" || rateCard.unit !== \"million-tokens\") {\n throw new TypeError(\"[Sixb] Model rate cards must use USD per million tokens.\")\n }\n return Object.freeze({\n currency: \"USD\",\n unit: \"million-tokens\",\n input: tokenPrice(rateCard.input),\n output: tokenPrice(rateCard.output),\n ...(rateCard.cacheReadInput === undefined\n ? {}\n : { cacheReadInput: tokenPrice(rateCard.cacheReadInput) }),\n ...(rateCard.cacheWriteInput === undefined\n ? {}\n : { cacheWriteInput: tokenPrice(rateCard.cacheWriteInput) }),\n ...(rateCard.cacheWriteInput5m === undefined\n ? {}\n : { cacheWriteInput5m: tokenPrice(rateCard.cacheWriteInput5m) }),\n ...(rateCard.cacheWriteInput1h === undefined\n ? {}\n : { cacheWriteInput1h: tokenPrice(rateCard.cacheWriteInput1h) }),\n })\n}\n\nfunction tokenPrice(value: ModelTokenPrice): ModelTokenPrice {\n if (typeof value === \"string\") return price(value)\n assertRecord(value, \"token price\")\n if (!Array.isArray(value.tiers)) throw new TypeError(\"[Sixb] Model price tiers must be an array.\")\n let previousMax = 0\n return Object.freeze({\n default: price(value.default),\n tiers: Object.freeze(\n value.tiers.map((tier, index) => {\n assertRecord(tier, \"price tier\")\n if (\n typeof tier.minTokens !== \"number\" ||\n !Number.isSafeInteger(tier.minTokens) ||\n tier.minTokens < 0\n ) {\n throw new TypeError(\"[Sixb] Model price tier has an invalid minimum.\")\n }\n if (index > 0 && tier.minTokens < previousMax) {\n throw new TypeError(\"[Sixb] Model price tiers must be ordered and nonoverlapping.\")\n }\n if (\n tier.maxTokens !== undefined &&\n (typeof tier.maxTokens !== \"number\" ||\n !Number.isSafeInteger(tier.maxTokens) ||\n tier.maxTokens <= tier.minTokens)\n ) {\n throw new TypeError(\"[Sixb] Model price tier has an invalid maximum.\")\n }\n previousMax = tier.maxTokens ?? Number.POSITIVE_INFINITY\n return Object.freeze({\n minTokens: tier.minTokens,\n ...(tier.maxTokens === undefined ? {} : { maxTokens: tier.maxTokens }),\n price: price(tier.price),\n })\n })\n ),\n })\n}\n\nfunction price(value: unknown): string {\n if (typeof value !== \"string\" || !/^(?:0|[1-9]\\d*)(?:\\.\\d+)?$/.test(value)) {\n throw new TypeError(\"[Sixb] Model price must be a nonnegative decimal string.\")\n }\n return value\n}\n\nfunction assertRecord(value: unknown, field: string): asserts value is Record<string, unknown> {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) {\n throw new TypeError(`[Sixb] Model ${field} must be an object.`)\n }\n}\n"
11
- ],
12
- "mappings": "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",
13
- "debugId": "2E4C0EA051E48B7564756E2164756E21",
14
- "names": []
15
- }
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/datasets/write.ts"],
4
- "sourcesContent": [
5
- "import type { BlobStorage, FileRef } from \"../blob-storage\"\nimport { isFileRef } from \"../blob-storage\"\nimport { isPlainRecord } from \"../json\"\nimport type { DatasetMergeCommitResult } from \"../lake-storage/merge\"\nimport { getDatasetMergeChangeValidationError } from \"../lake-storage/merge-validation\"\nimport type {\n DatasetProducer,\n DatasetRow,\n DatasetWriteMode,\n LakeStorage,\n} from \"../lake-storage/types\"\nimport type { MergeChange } from \"./changes\"\nimport type { DatasetDefinition } from \"./types\"\nimport { getDatasetRowValidationError } from \"./validation\"\n\nexport interface DatasetWriteValue {\n readonly value: unknown\n}\n\nexport interface WriteDatasetInput<TValue extends DatasetWriteValue = DatasetWriteValue> {\n readonly lakeStorage: LakeStorage\n readonly blobStorage: Pick<BlobStorage, \"stat\">\n readonly dataset: DatasetDefinition\n readonly mode: DatasetWriteMode | \"merge\"\n readonly signal: AbortSignal\n /** Lazy so a merge's latest-version guard is checked before fetching source data. */\n readValues(): Promise<Iterable<TValue> | AsyncIterable<TValue>>\n readonly producer?: DatasetProducer\n readonly expectedLatestVersionId?: string\n readonly commitMessage?: string\n /** Diagnostic label for the caller, including its component prefix. */\n readonly sourceLabel?: string\n /** Progress includes validated values even if the operation subsequently fails. */\n onRead?(rowsRead: number): void\n /** Attach caller-owned source provenance to a validation failure. */\n mapValidationError?(error: unknown, value: TValue, itemIndex: number): unknown\n}\n\nexport type WriteDatasetResult = DatasetMergeCommitResult & { readonly rowsRead: number }\n\n/**\n * Validate, stage, and commit one dataset write using existing lake sessions.\n *\n * The caller owns fetching/cancelling its source, execution bookkeeping, and publishing the\n * dataset-update notification for a `created` result. This operation returns immediately after\n * the lake commit; it does not wait for downstream pipelines or projections.\n */\nexport async function writeDataset<TValue extends DatasetWriteValue>(\n input: WriteDatasetInput<TValue>\n): Promise<WriteDatasetResult> {\n const { lakeStorage, dataset, signal } = input\n let abortWrite: (() => Promise<void>) | undefined\n let rowsRead = 0\n const onRead = () => {\n rowsRead += 1\n input.onRead?.(rowsRead)\n }\n\n throwIfAborted(signal)\n await lakeStorage.createDataset(dataset)\n try {\n throwIfAborted(signal)\n const reconcileSnapshot = dataset.sequenceBy !== undefined && input.mode === \"snapshot\"\n if (input.mode === \"merge\" || reconcileSnapshot) {\n const session = await lakeStorage.beginMerge({\n dataset,\n expectedLatestVersionId: input.expectedLatestVersionId,\n producer: input.producer,\n })\n abortWrite = () => session.abort()\n throwIfAborted(signal)\n const values = await input.readValues()\n throwIfAborted(signal)\n await session.writeChanges(\n validatedValues(\n input,\n values,\n async (value, itemIndex) =>\n reconcileSnapshot\n ? { kind: \"upsert\" as const, row: await validateRow(value, input, itemIndex) }\n : validateMergeChange(value, input, itemIndex),\n onRead\n )\n )\n throwIfAborted(signal)\n const result = await session.commit({\n commitMessage: input.commitMessage,\n createInitialVersion: reconcileSnapshot,\n retryOnConflict: dataset.sequenceBy !== undefined,\n signal,\n })\n return { ...result, rowsRead }\n }\n\n const values = await input.readValues()\n throwIfAborted(signal)\n const session = await lakeStorage.beginWrite({\n dataset,\n mode: input.mode,\n producer: input.producer,\n })\n abortWrite = () => session.abort()\n await session.writeRows(\n validatedValues(\n input,\n values,\n (value, itemIndex) => validateRow(value, input, itemIndex),\n onRead\n )\n )\n throwIfAborted(signal)\n\n // Preserve sync semantics: an empty append must not invent an initial dataset version.\n if (rowsRead === 0 && input.mode === \"append\") {\n const version = await lakeStorage.getLatestVersion(dataset.id)\n await session.abort()\n return { outcome: \"unchanged\", version, rowsRead }\n }\n\n const { outcome, ...version } = await session.commit({\n expectedLatestVersionId: input.expectedLatestVersionId,\n commitMessage: input.commitMessage,\n })\n return { outcome, version, rowsRead }\n } catch (error) {\n // Cleanup must not replace the source, validation, cancellation, or commit failure.\n await abortWrite?.().catch(() => {})\n throw error\n }\n}\n\nasync function* validatedValues<TValue extends DatasetWriteValue, TResult>(\n input: WriteDatasetInput<TValue>,\n values: Iterable<TValue> | AsyncIterable<TValue>,\n validate: (value: unknown, itemIndex: number) => Promise<TResult>,\n onRead: () => void\n): AsyncIterable<TResult> {\n let itemIndex = 0\n for await (const sourceValue of values) {\n throwIfAborted(input.signal)\n itemIndex += 1\n let value: TResult\n try {\n value = await validate(sourceValue.value, itemIndex)\n } catch (error) {\n throw input.mapValidationError\n ? input.mapValidationError(error, sourceValue, itemIndex)\n : error\n }\n onRead()\n yield value\n }\n}\n\nfunction sourceLabel(input: Pick<WriteDatasetInput, \"dataset\" | \"sourceLabel\">): string {\n return input.sourceLabel ?? `[Sixb] Dataset '${input.dataset.id}' writer`\n}\n\nasync function validateRow(\n value: unknown,\n input: WriteDatasetInput,\n itemIndex: number\n): Promise<DatasetRow> {\n if (!isPlainRecord(value)) {\n throw new Error(\n `${sourceLabel(input)} returned an invalid row at item ${itemIndex}. Dataset rows must be plain objects.`\n )\n }\n const validationError = getDatasetRowValidationError(value, input.dataset)\n if (validationError) {\n throw new Error(\n `${sourceLabel(input)} returned an invalid row at item ${itemIndex}. ${validationError}`\n )\n }\n await verifyRowFileRefs(value, input, itemIndex)\n return value\n}\n\nasync function validateMergeChange(\n value: unknown,\n input: WriteDatasetInput,\n itemIndex: number\n): Promise<MergeChange<DatasetRow, DatasetRow>> {\n const validationError = getDatasetMergeChangeValidationError(value, input.dataset)\n if (validationError) {\n throw new Error(\n `${sourceLabel(input)} returned an invalid merge change at item ${itemIndex}. ${validationError}`\n )\n }\n const change = value as MergeChange<DatasetRow, DatasetRow>\n if (change.kind === \"upsert\") await verifyRowFileRefs(change.row, input, itemIndex)\n return change\n}\n\nasync function verifyRowFileRefs(\n row: DatasetRow,\n input: WriteDatasetInput,\n itemIndex: number\n): Promise<void> {\n for (const column of input.dataset.schema.columns) {\n if (column.type !== \"fileRef\") continue\n const value = row[column.name]\n if (isFileRef(value)) await verifyFileRef(value, input, column.name, itemIndex)\n }\n}\n\nasync function verifyFileRef(\n fileRef: FileRef,\n input: WriteDatasetInput,\n columnName: string,\n itemIndex: number\n): Promise<void> {\n const blobInfo = await input.blobStorage.stat(fileRef.blobId)\n const context = `${sourceLabel(input)} returned row ${itemIndex} with dataset '${input.dataset.id}' column '${columnName}'`\n if (!blobInfo) {\n throw new Error(`${context} referencing unknown blob '${fileRef.blobId}'.`)\n }\n if (blobInfo.digest !== fileRef.digest) {\n throw new Error(\n `${context} referencing blob '${fileRef.blobId}' with digest '${fileRef.digest}', but blob storage has '${blobInfo.digest}'.`\n )\n }\n if (blobInfo.sizeBytes !== fileRef.sizeBytes) {\n throw new Error(\n `${context} referencing blob '${fileRef.blobId}' with size ${fileRef.sizeBytes}, but blob storage has ${blobInfo.sizeBytes}.`\n )\n }\n}\n\nfunction throwIfAborted(signal: AbortSignal): void {\n if (!signal.aborted) return\n if (signal.reason instanceof Error) throw signal.reason\n const error = new Error(\n typeof signal.reason === \"string\" && signal.reason.length > 0\n ? signal.reason\n : \"[Sixb] Dataset write was cancelled.\"\n )\n error.name = \"AbortError\"\n throw error\n}\n"
6
- ],
7
- "mappings": "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",
8
- "debugId": "403BB5EF31615BCA64756E2164756E21",
9
- "names": []
10
- }
@@ -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
- }