@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
@@ -0,0 +1,20 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/ontology/user-ref.ts", "../src/ontology/validation/schema.ts", "../src/ontology/validation/normalize.ts", "../src/ontology/primitives.ts", "../src/ontology/validation/properties.ts", "../src/ontology/validation/links.ts", "../src/ontology/query-capabilities.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 type { Principal } from \"../auth/types\"\nimport type { UserStatus } from \"../storage/auth/types\"\nimport { OntologyValidationError } from \"./errors\"\nimport type { Schema, ValueType } from \"./types\"\n\n/**\n * Value of a `ref.user()` (`\"userRef\"`) schema: the principal shape, narrowed to users.\n *\n * It carries no display data on purpose: a name or avatar supplied by the writer would be\n * spoofable. It grants or restricts nothing by itself either; only an explicit policy gives it a\n * security meaning.\n */\nexport type UserRef = Extract<Principal, { readonly type: \"user\" }>\n\n/**\n * Build a reference to one user, for writes and query predicates:\n * `where(({ p }) => p.assignee.eq(userRef(userId)))`.\n */\nexport function userRef(id: string): UserRef {\n if (typeof id !== \"string\" || !id.trim()) {\n throw new OntologyValidationError(\"[Sixb] User reference id must not be empty.\")\n }\n return Object.freeze({ type: \"user\" as const, id })\n}\n\n/** Exactly `{ type: \"user\", id }` with a nonblank id and no other field. */\nexport function isUserRef(value: unknown): value is UserRef {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return false\n const record = value as Record<string, unknown>\n return (\n Object.keys(record).every((key) => key === \"type\" || key === \"id\") &&\n record.type === \"user\" &&\n typeof record.id === \"string\" &&\n record.id.trim().length > 0\n )\n}\n\n/**\n * Collect the user ids a value holds at `userRef` positions of its schema, however deeply nested.\n *\n * Positions whose value does not match the schema are skipped: shape validation reports them.\n */\nexport function collectUserRefIds(\n schema: Schema,\n value: unknown,\n valueTypesById: ReadonlyMap<string, ValueType>,\n into: Set<string>,\n seenValueTypeIds: ReadonlySet<string> = new Set()\n): Set<string> {\n if (value === null || value === undefined) return into\n if (typeof schema === \"string\") {\n if (schema === \"userRef\" && isUserRef(value)) into.add(value.id)\n return into\n }\n switch (schema.type) {\n case \"array\":\n if (Array.isArray(value)) {\n for (const item of value) {\n collectUserRefIds(schema.items, item, valueTypesById, into, seenValueTypeIds)\n }\n }\n return into\n case \"map\":\n if (isRecord(value)) {\n for (const item of Object.values(value)) {\n collectUserRefIds(schema.valueSchema, item, valueTypesById, into, seenValueTypeIds)\n }\n }\n return into\n case \"object\":\n if (isRecord(value)) {\n for (const [fieldId, field] of Object.entries(schema.properties)) {\n collectUserRefIds(field.schema, value[fieldId], valueTypesById, into, seenValueTypeIds)\n }\n }\n return into\n case \"valueTypeRef\": {\n if (seenValueTypeIds.has(schema.valueTypeId)) return into\n const resolved = schema._resolved ?? valueTypesById.get(schema.valueTypeId)?.schema\n if (!resolved) return into\n return collectUserRefIds(\n resolved,\n value,\n valueTypesById,\n into,\n new Set([...seenValueTypeIds, schema.valueTypeId])\n )\n }\n case \"enum\":\n return into\n }\n}\n\n/**\n * Why `path` cannot newly reference user `id`, or `undefined` when it can.\n *\n * `status` is the user's status, `null` for an unknown id, or `\"unverifiable\"` without auth\n * storage. Unknown and suspended users get distinct messages: the writer already holds the id, and\n * telling \"wrong id\" from \"suspended member\" is what makes the error actionable.\n */\nexport function userReferenceProblem(\n path: string,\n id: string,\n status: UserStatus | null | \"unverifiable\"\n): string | undefined {\n switch (status) {\n case \"active\":\n return undefined\n case null:\n return `[Sixb] ${path} references user '${id}', which does not exist.`\n case \"unverifiable\":\n return `[Sixb] ${path} references user '${id}', but this runtime has no auth storage to verify users. Configure storage with auth to write user references.`\n default:\n return `[Sixb] ${path} references user '${id}', who is ${status}. Only active users can be newly referenced; existing references are kept.`\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n}\n",
6
+ "import { isFileRef } from \"../../blob-storage/validation\"\nimport { withFailureMessage } from \"../../errors/failure-message\"\nimport type { ObjectFieldSchema, Schema, ValueType, ValueTypeRefSchema } from \"..\"\nimport { isDecimalString } from \"../decimal\"\nimport { OntologyValidationError } from \"../errors\"\nimport { isUserRef } from \"../user-ref\"\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 diagnosticPath = path\n): void {\n if (typeof schema === \"string\") {\n switch (schema) {\n case \"string\":\n case \"uuid\": {\n if (typeof value !== \"string\") {\n throw withFailureMessage(\n new OntologyValidationError(`[Sixb] Property ${path} must be a string`),\n `Property ${diagnosticPath} must be a string.`\n )\n }\n return\n }\n case \"boolean\": {\n if (typeof value !== \"boolean\") {\n throw withFailureMessage(\n new OntologyValidationError(`[Sixb] Property ${path} must be a boolean`),\n `Property ${diagnosticPath} must be a boolean.`\n )\n }\n return\n }\n case \"integer\": {\n if (typeof value !== \"number\" || !Number.isInteger(value)) {\n throw withFailureMessage(\n new OntologyValidationError(`[Sixb] Property ${path} must be an integer`),\n `Property ${diagnosticPath} must be an integer.`\n )\n }\n return\n }\n case \"double\": {\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n throw withFailureMessage(\n new OntologyValidationError(`[Sixb] Property ${path} must be numeric`),\n `Property ${diagnosticPath} must be numeric.`\n )\n }\n return\n }\n case \"decimal\": {\n if (!isDecimalString(value)) {\n throw withFailureMessage(\n new OntologyValidationError(`[Sixb] Property ${path} must be an exact decimal string`),\n `Property ${diagnosticPath} 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 withFailureMessage(\n new OntologyValidationError(`[Sixb] Property ${path} must be a Date or ISO string`),\n `Property ${diagnosticPath} must be a Date or ISO string.`\n )\n }\n return\n }\n case \"fileRef\": {\n if (!isFileRef(value)) {\n throw withFailureMessage(\n new OntologyValidationError(`[Sixb] Property ${path} must be a fileRef`),\n `Property ${diagnosticPath} must be a fileRef.`\n )\n }\n return\n }\n case \"userRef\": {\n if (!isUserRef(value)) {\n throw withFailureMessage(\n new OntologyValidationError(\n `[Sixb] Property ${path} must be a user reference { type: \"user\", id }`\n ),\n `Property ${diagnosticPath} must be a user reference.`\n )\n }\n return\n }\n default:\n // Every primitive validates its values above. Untyped definitions can still carry an\n // unknown string; it keeps falling through without a check.\n schema satisfies never\n }\n }\n\n if (schema.type === \"enum\") {\n if (!schema.values.includes(value as never)) {\n throw withFailureMessage(\n new OntologyValidationError(\n `[Sixb] Property ${path} must be one of: ${schema.values.join(\", \")}`\n ),\n `Property ${diagnosticPath} must match a declared enum value.`\n )\n }\n return\n }\n\n if (schema.type === \"array\") {\n if (!Array.isArray(value)) {\n throw withFailureMessage(\n new OntologyValidationError(`[Sixb] Property ${path} must be an array`),\n `Property ${diagnosticPath} must be an array.`\n )\n }\n for (let index = 0; index < value.length; index += 1) {\n validateSchemaValue(\n schema.items,\n value[index],\n `${path}[${index}]`,\n valueTypesById,\n `${diagnosticPath}[${index}]`\n )\n }\n return\n }\n\n if (schema.type === \"map\") {\n if (!isRecord(value)) {\n throw withFailureMessage(\n new OntologyValidationError(`[Sixb] Property ${path} must be an object map`),\n `Property ${diagnosticPath} must be an object map.`\n )\n }\n for (const [key, entry] of Object.entries(value)) {\n validateSchemaValue(\n schema.valueSchema,\n entry,\n `${path}.${key}`,\n valueTypesById,\n `${diagnosticPath}.*`\n )\n }\n return\n }\n\n if (schema.type === \"object\") {\n if (!isRecord(value)) {\n throw withFailureMessage(\n new OntologyValidationError(`[Sixb] Property ${path} must be an object`),\n `Property ${diagnosticPath} must be an object.`\n )\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 withFailureMessage(\n new OntologyValidationError(`[Sixb] Unknown field '${path}.${fieldId}'`),\n `Object ${diagnosticPath} contains an undeclared field.`\n )\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 withFailureMessage(\n new OntologyValidationError(`[Sixb] Missing required field '${path}.${fieldId}'`),\n `Missing required field '${diagnosticPath}.${fieldId}'.`\n )\n }\n continue\n }\n\n validateFieldValue(\n field,\n fieldValue,\n `${path}.${fieldId}`,\n valueTypesById,\n `${diagnosticPath}.${fieldId}`\n )\n }\n return\n }\n\n if (schema.type === \"valueTypeRef\") {\n validateSchemaValue(\n resolveValueTypeSchema(schema, valueTypesById, path),\n value,\n path,\n valueTypesById,\n diagnosticPath\n )\n }\n}\n\nfunction validateFieldValue(\n field: ObjectFieldSchema,\n value: unknown,\n path: string,\n valueTypesById: ReadonlyMap<string, ValueType>,\n diagnosticPath = path\n): void {\n if (value === null) {\n if (field.nullable) {\n return\n }\n throw withFailureMessage(\n new OntologyValidationError(`[Sixb] Field ${path} cannot be null`),\n `Field ${diagnosticPath} cannot be null.`\n )\n }\n\n validateSchemaValue(field.schema, value, path, valueTypesById, diagnosticPath)\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",
7
+ "import { assertJsonValue, cloneJsonValue, type JsonValue } from \"../../json\"\nimport type { ObjectFieldSchema, Property, Schema, ValueType } from \"..\"\nimport { normalizeDecimalValue } from \"../decimal\"\nimport { OntologyValidationError } from \"../errors\"\nimport { isUserRef } from \"../user-ref\"\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 case \"string\":\n case \"uuid\":\n case \"integer\":\n case \"double\":\n case \"boolean\":\n case \"fileRef\":\n assertJsonValue(value, path)\n return cloneJsonValue(value)\n case \"userRef\":\n return normalizeUserRef(value, path)\n default:\n // Untyped definitions can still carry an unknown string; it keeps the JSON pass-through.\n schema satisfies never\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\n/** Rebuilds the reference in canonical field order so stored JSON compares and groups stably. */\nfunction normalizeUserRef(value: unknown, path: string): JsonValue {\n if (!isUserRef(value)) {\n throw new OntologyValidationError(\n `[Sixb] Property ${path} must be a user reference { type: \"user\", id }`\n )\n }\n return { type: \"user\", id: value.id }\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 switch (schema) {\n case \"date\":\n case \"timestamp\":\n return value instanceof Date ? value : new Date(String(value))\n case \"string\":\n case \"uuid\":\n case \"integer\":\n case \"double\":\n case \"decimal\":\n case \"boolean\":\n case \"fileRef\":\n case \"userRef\":\n return value\n default:\n schema satisfies never\n return value\n }\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",
8
+ "import type { QueryScalarKind } from \"../objects/query/ir\"\nimport type { PrimitiveSchema } from \"./types\"\n\n/**\n * Yes/no decisions a primitive schema makes for rules that several modules share.\n *\n * Every primitive states every decision: adding one to `PrimitiveSchema` fails to compile until it\n * has a row here, instead of inheriting string-like behavior from a denylist. Per-type behavior\n * (value validation, normalization, JSON Schema, inference) stays in exhaustive switches next to\n * the code that performs it.\n */\nexport interface PrimitiveTraits {\n /** Scalar kind object queries compare values with; `undefined` when values are not comparable. */\n readonly queryScalarKind: QueryScalarKind | undefined\n /** Exact matching: `eq`/`neq`/`in`/`exists` predicates and `query.filterable`. */\n readonly exact: boolean\n /** Exact-match search profile: `query.exact` and `search.exact`, matched against search input. */\n readonly exactSearch: boolean\n /** Ordering: range predicates and `query.sortable`. */\n readonly sortable: boolean\n /** Keyword search: `query.text`, search titles, and vector sources. */\n readonly text: boolean\n /** Substring `contains` predicates. */\n readonly contains: boolean\n /** Facet buckets: `query.facet`. */\n readonly facet: boolean\n /** Allowed anywhere inside a telemetry property's schema. */\n readonly telemetry: boolean\n /** Allowed anywhere inside a shared Action parameter's schema. */\n readonly shareableParam: boolean\n}\n\nconst comparable = {\n exact: true,\n exactSearch: true,\n sortable: true,\n text: false,\n contains: false,\n facet: true,\n telemetry: true,\n shareableParam: true,\n} as const\n\nconst PRIMITIVE_TRAITS = {\n string: { ...comparable, queryScalarKind: \"string\", text: true, contains: true },\n uuid: { ...comparable, queryScalarKind: \"uuid\", contains: true },\n integer: { ...comparable, queryScalarKind: \"integer\" },\n double: { ...comparable, queryScalarKind: \"double\" },\n decimal: { ...comparable, queryScalarKind: \"decimal\" },\n date: { ...comparable, queryScalarKind: \"date\" },\n timestamp: { ...comparable, queryScalarKind: \"timestamp\" },\n boolean: { ...comparable, queryScalarKind: \"boolean\", sortable: false },\n // Blob references are resolved through the object that holds them, never compared.\n fileRef: {\n queryScalarKind: undefined,\n exact: false,\n exactSearch: false,\n sortable: false,\n text: false,\n contains: false,\n facet: false,\n telemetry: false,\n shareableParam: false,\n },\n // User references match by identity, never against typed search input. They are not text, carry\n // no order, and stay out of telemetry and shared sessions, which cannot disclose who they point to.\n userRef: {\n queryScalarKind: \"userRef\",\n exact: true,\n exactSearch: false,\n sortable: false,\n text: false,\n contains: false,\n facet: true,\n telemetry: false,\n shareableParam: false,\n },\n} as const satisfies Record<PrimitiveSchema, PrimitiveTraits>\n\nexport function isPrimitiveSchema(schema: unknown): schema is PrimitiveSchema {\n return typeof schema === \"string\" && Object.hasOwn(PRIMITIVE_TRAITS, schema)\n}\n\n/**\n * Traits for a primitive schema. Property schemas are not shape-validated at registration, so an\n * untyped definition can still carry a string outside `PrimitiveSchema`: it gets `undefined`, and\n * callers treat it as supporting no query feature.\n */\nexport function primitiveTraits(schema: PrimitiveSchema): PrimitiveTraits | undefined {\n return isPrimitiveSchema(schema) ? PRIMITIVE_TRAITS[schema] : undefined\n}\n",
9
+ "import { withFailureMessage } from \"../../errors/failure-message\"\nimport type { ObjectLink, ObjectType, PrimitiveSchema, Property, Schema, ValueType } from \"..\"\nimport { OntologyValidationError } from \"../errors\"\nimport { primitiveTraits } from \"../primitives\"\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 withFailureMessage(\n new OntologyValidationError(\n `[Sixb] Missing required property '${property.id}' for object type '${objectType.id}'`\n ),\n `Missing required property '${objectType.id}.${property.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 assertNoObjectRefSchema(property, `Property '${typeId}.${property.id}'`, valueTypesById)\n if (property.mode !== \"telemetry\") continue\n // Telemetry stores time-series samples, not references, even when the reference is nested.\n const primitive = findPrimitiveSchema(\n property.schema,\n valueTypesById,\n (schema) => primitiveTraits(schema)?.telemetry === false\n )\n if (primitive) {\n throw new OntologyValidationError(\n `[Sixb] Telemetry property '${property.id}' on '${typeId}' cannot use ${primitive}`\n )\n }\n }\n for (const link of objectType.links) {\n for (const property of link.properties ?? []) {\n const path = `Link property '${typeId}.${link.id}.${property.id}'`\n assertNoObjectRefSchema(property, path, valueTypesById)\n // Link edits do not check that referenced users exist and are active.\n if (\n findPrimitiveSchema(property.schema, valueTypesById, (schema) => schema === \"userRef\")\n ) {\n throw new OntologyValidationError(\n `[Sixb] ${path} cannot use ref.user(). User references are supported on object properties only.`\n )\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 withFailureMessage(\n new OntologyValidationError(`[Sixb] Property ${path} cannot be undefined`),\n `Property ${path} cannot be undefined.`\n )\n }\n\n if (value === null) {\n if (property.nullable) {\n return\n }\n throw withFailureMessage(\n new OntologyValidationError(`[Sixb] Property ${path} cannot be null`),\n `Property ${path} cannot be null.`\n )\n }\n\n validateSchemaValue(property.schema, value, path, valueTypesById)\n}\n\n/**\n * First primitive anywhere inside `schema`, through arrays, maps, object fields, and value types,\n * that `matches` accepts.\n */\nexport function findPrimitiveSchema(\n schema: Schema,\n valueTypesById: ReadonlyMap<string, ValueType>,\n matches: (schema: PrimitiveSchema) => boolean,\n seenValueTypeIds = new Set<string>()\n): PrimitiveSchema | undefined {\n if (typeof schema === \"string\") {\n return matches(schema) ? schema : undefined\n }\n\n if (schema.type === \"array\") {\n return findPrimitiveSchema(schema.items, valueTypesById, matches, seenValueTypeIds)\n }\n\n if (schema.type === \"map\") {\n return findPrimitiveSchema(schema.valueSchema, valueTypesById, matches, seenValueTypeIds)\n }\n\n if (schema.type === \"object\") {\n for (const field of Object.values(schema.properties)) {\n const primitive = findPrimitiveSchema(field.schema, valueTypesById, matches, seenValueTypeIds)\n if (primitive) return primitive\n }\n return undefined\n }\n\n if (schema.type === \"valueTypeRef\") {\n if (seenValueTypeIds.has(schema.valueTypeId)) {\n return undefined\n }\n\n seenValueTypeIds.add(schema.valueTypeId)\n const resolved = schema._resolved ?? valueTypesById.get(schema.valueTypeId)?.schema\n return resolved\n ? findPrimitiveSchema(resolved, valueTypesById, matches, seenValueTypeIds)\n : undefined\n }\n\n return undefined\n}\n\n/**\n * `ref(ObjectType)` is a parameter schema. Untyped definitions can still pass it to `prop()`,\n * where it would be stored as an opaque record instead of a traversable relationship.\n */\nfunction assertNoObjectRefSchema(\n property: Property,\n path: string,\n valueTypesById: ReadonlyMap<string, ValueType>\n): void {\n if (!containsObjectRefSchema(property.schema, valueTypesById)) return\n throw new OntologyValidationError(\n `[Sixb] ${path} uses ref(ObjectType), which is only for Action and Workflow parameters. Point to another object with link(\"${property.id}\", ObjectType) instead.`\n )\n}\n\nfunction containsObjectRefSchema(\n schema: unknown,\n valueTypesById: ReadonlyMap<string, ValueType>,\n seen = new Set<unknown>()\n): boolean {\n if (typeof schema !== \"object\" || schema === null || seen.has(schema)) return false\n seen.add(schema)\n const node = schema as Record<string, unknown>\n switch (node.type) {\n case \"objectRef\":\n return true\n case \"array\":\n return containsObjectRefSchema(node.items, valueTypesById, seen)\n case \"map\":\n return containsObjectRefSchema(node.valueSchema, valueTypesById, seen)\n case \"object\":\n return (\n typeof node.properties === \"object\" &&\n node.properties !== null &&\n Object.values(node.properties).some((field) =>\n containsObjectRefSchema((field as { schema?: unknown })?.schema, valueTypesById, seen)\n )\n )\n case \"valueTypeRef\":\n return containsObjectRefSchema(\n node._resolved ?? valueTypesById.get(String(node.valueTypeId))?.schema,\n valueTypesById,\n seen\n )\n default:\n return false\n }\n}\n",
10
+ "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",
11
+ "/**\n * Query rules for a schema whose `valueTypeRef`s are already resolved. Registration uses them to\n * accept declared `query` flags, query validation to accept operators, and the ontology API to\n * report both, so the three cannot drift.\n */\nimport type { QueryScalarKind } from \"../objects/query/ir\"\nimport { primitiveTraits } from \"./primitives\"\nimport type { Property, Schema, ValueType } from \"./types\"\n\n/** `eq`/`neq`/`in`/`exists` predicates. */\nexport function isExactSchema(schema: Schema): boolean {\n if (typeof schema === \"string\") return primitiveTraits(schema)?.exact === true\n return schema.type === \"enum\"\n}\n\n/** `query.exact`, and through it `search.exact`: matched against search input. */\nexport function isExactSearchSchema(schema: Schema): boolean {\n if (typeof schema === \"string\") return primitiveTraits(schema)?.exactSearch === true\n return schema.type === \"enum\"\n}\n\n/** `query.filterable`: exact matching, or `contains` over a collection. */\nexport function isFilterableSchema(schema: Schema): boolean {\n return (\n isExactSchema(schema) ||\n (typeof schema !== \"string\" && (schema.type === \"array\" || schema.type === \"map\"))\n )\n}\n\n/** Range predicates and `query.sortable`. */\nexport function isSortableSchema(schema: Schema): boolean {\n if (typeof schema === \"string\") return primitiveTraits(schema)?.sortable === true\n return schema.type === \"enum\"\n}\n\n/** Keyword search. */\nexport function isTextSchema(schema: Schema): boolean {\n if (typeof schema === \"string\") return primitiveTraits(schema)?.text === true\n return schema.type === \"enum\" && schema.valueType === \"string\"\n}\n\n/** `contains`: substring for scalars, item for arrays, key for maps. */\nexport function isContainsSchema(schema: Schema): boolean {\n if (typeof schema === \"string\") return primitiveTraits(schema)?.contains === true\n return schema.type === \"array\" || schema.type === \"map\"\n}\n\n/** `query.facet`. */\nexport function isFacetSchema(schema: Schema): boolean {\n if (typeof schema === \"string\") return primitiveTraits(schema)?.facet === true\n return schema.type === \"enum\"\n}\n\nexport function queryScalarKindForSchema(schema: Schema): QueryScalarKind | undefined {\n if (typeof schema === \"string\") return primitiveTraits(schema)?.queryScalarKind\n if (schema.type === \"enum\") return schema.valueType === \"integer\" ? \"integer\" : \"string\"\n return undefined\n}\n\n/** Predicate operators a property may use in an object query. */\nexport type PropertyQueryOperator =\n | \"eq\"\n | \"neq\"\n | \"lt\"\n | \"lte\"\n | \"gt\"\n | \"gte\"\n | \"in\"\n | \"exists\"\n | \"contains\"\n\n/** What an object query can do with one property, resolved from its schema and `query` flags. */\nexport interface PropertyQueryCapabilities {\n readonly operators: readonly PropertyQueryOperator[]\n readonly sortable: boolean\n readonly facet: boolean\n readonly text: boolean\n}\n\nconst PRIMARY_OPERATORS: readonly PropertyQueryOperator[] = [\"eq\", \"in\"]\nconst EXACT_OPERATORS: readonly PropertyQueryOperator[] = [\"eq\", \"neq\", \"in\", \"exists\"]\nconst RANGE_OPERATORS: readonly PropertyQueryOperator[] = [\"lt\", \"lte\", \"gt\", \"gte\"]\nconst OPERATOR_ORDER: readonly PropertyQueryOperator[] = [\n \"eq\",\n \"neq\",\n \"lt\",\n \"lte\",\n \"gt\",\n \"gte\",\n \"in\",\n \"contains\",\n \"exists\",\n]\n\n/**\n * Resolve what object queries accept for a property, applying the same rules as query validation:\n * primary ids always accept `eq`/`in`; other predicates, sorting, faceting, and keyword search need\n * `query.searchable` plus the matching flag and a schema that supports it.\n */\nexport function resolvePropertyQueryCapabilities(\n property: Property,\n valueTypesById: ReadonlyMap<string, ValueType>\n): PropertyQueryCapabilities {\n const query = property.query?.searchable === true ? property.query : undefined\n const schema = resolveQuerySchema(property.schema, valueTypesById)\n const operators = new Set<PropertyQueryOperator>(property.primary ? PRIMARY_OPERATORS : [])\n\n if (query?.filterable === true && schema) {\n if (isExactSchema(schema)) for (const op of EXACT_OPERATORS) operators.add(op)\n if (isSortableSchema(schema)) for (const op of RANGE_OPERATORS) operators.add(op)\n if (isContainsSchema(schema)) operators.add(\"contains\")\n }\n\n return {\n operators: OPERATOR_ORDER.filter((op) => operators.has(op)),\n sortable: query?.sortable === true && schema !== undefined && isSortableSchema(schema),\n facet: query?.facet === true && schema !== undefined && isFacetSchema(schema),\n text:\n query?.text === true &&\n property.mode !== \"telemetry\" &&\n schema !== undefined &&\n isTextSchema(schema),\n }\n}\n\nfunction resolveQuerySchema(\n schema: Schema,\n valueTypesById: ReadonlyMap<string, ValueType>,\n seen = new Set<string>()\n): Schema | undefined {\n if (typeof schema === \"string\" || schema.type !== \"valueTypeRef\") return schema\n if (seen.has(schema.valueTypeId)) return undefined\n seen.add(schema.valueTypeId)\n const resolved = schema._resolved ?? valueTypesById.get(schema.valueTypeId)?.schema\n return resolved ? resolveQuerySchema(resolved, valueTypesById, seen) : undefined\n}\n",
12
+ "import { assertEmbeddingModelRef } from \"../../models/embedding-model\"\nimport type { ObjectType, Property, Schema, ValueType } from \"..\"\nimport { OntologyValidationError } from \"../errors\"\nimport {\n isExactSearchSchema,\n isFacetSchema,\n isFilterableSchema,\n isSortableSchema,\n isTextSchema,\n} from \"../query-capabilities\"\n\ntype QueryFeature = \"filterable\" | \"sortable\" | \"text\" | \"exact\" | \"facet\"\n\nconst queryFeatures: readonly QueryFeature[] = [\"filterable\", \"sortable\", \"text\", \"exact\", \"facet\"]\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 if (\"vector\" in query) {\n throw new OntologyValidationError(\n `[Sixb] Property '${property.id}' on '${ownerPath}' uses removed query.vector metadata. Declare search.vectors on the object type instead.`\n )\n }\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 && !isTextSchema(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 && !isExactSearchSchema(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\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 if (\"vector\" in search) {\n throw new OntologyValidationError(\n `[Sixb] Object type '${typeId}' uses removed search.vector metadata. Declare named profiles in search.vectors instead.`\n )\n }\n\n for (const [name, profile] of Object.entries(search.vectors ?? {})) {\n if (!/^[a-zA-Z][a-zA-Z0-9_]*$/.test(name))\n throw new OntologyValidationError(`[Sixb] Invalid vector profile name ${name}`)\n assertEmbeddingModelRef(profile.model)\n if (\n !Array.isArray(profile.source) ||\n profile.source.length === 0 ||\n new Set(profile.source).size !== profile.source.length\n ) {\n throw new OntologyValidationError(\n `[Sixb] Vector profile ${name} requires unique, nonempty source fields.`\n )\n }\n for (const id of profile.source) {\n const property = requireObjectProperty(typeId, objectType, id, `search.vectors.${name}`)\n assertStaticSearchProfileProperty(typeId, property, `search.vectors.${name}`)\n if (!isTextSchema(resolveQueryableSchema(property, typeId, valueTypesById))) {\n throw new OntologyValidationError(`[Sixb] Vector source must be text: ${typeId}.${id}`)\n }\n }\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 (!isTextSchema(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\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",
13
+ "/**\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",
14
+ "/**\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",
15
+ "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"
16
+ ],
17
+ "mappings": "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",
18
+ "debugId": "65AF2C96D9900E0264756E2164756E21",
19
+ "names": []
20
+ }
@@ -1,16 +1,16 @@
1
1
  // @bun
2
+ import {
3
+ AuthStorageError2,
4
+ SYSTEM_PRINCIPAL2,
5
+ principalsEqual2
6
+ } from "./chunk-9pfw47qx.js";
2
7
  import {
3
8
  agentServiceAccountId2,
4
9
  resolveAuthorizationContext2
5
- } from "./chunk-dz5h08xv.js";
10
+ } from "./chunk-rzcjp5m2.js";
6
11
  import {
7
12
  createSixbError2
8
- } from "./chunk-f4w3yp4f.js";
9
- import {
10
- AuthStorageError2,
11
- SYSTEM_PRINCIPAL2,
12
- principalsEqual2
13
- } from "./chunk-g00bfdq6.js";
13
+ } from "./chunk-rzkr70gr.js";
14
14
  import {
15
15
  findPrimitiveRunExecution,
16
16
  findAgentRunExecution
@@ -210,7 +210,7 @@ function isUsableUserSession(session, userId, now) {
210
210
  return session.absoluteExpiresAt === undefined || session.absoluteExpiresAt.getTime() > now.getTime();
211
211
  }
212
212
  function isUsableUserAccessToken(token, userId, now) {
213
- if (!token || token.subjectType !== "user" || token.subjectId !== userId)
213
+ if (!token || !principalsEqual2(token.subject, { type: "user", id: userId }))
214
214
  return false;
215
215
  return token.revokedAt === undefined && token.expiresAt.getTime() > now.getTime();
216
216
  }
@@ -281,4 +281,4 @@ function invalidExecution(executionId, runId) {
281
281
 
282
282
  export { WorkflowRunError2, ensureManagedAgentExecutionIdentity2, resolveAgentExecutionAuthorization2, resolveInheritedAgentExecutionAuthorization2, assertWorkflowRunExecution2, assertWorkflowAgentNodeRunExecution2 };
283
283
 
284
- //# debugId=E7BAFA86A352672B64756E2164756E21
284
+ //# debugId=F5DA9E9C95A4C18E64756E2164756E21
@@ -2,11 +2,11 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/agents/authority.ts", "../src/storage/workflow-runs/errors.ts", "../src/storage/workflow-runs/provider.ts"],
4
4
  "sourcesContent": [
5
- "import { principalsEqual, SYSTEM_PRINCIPAL } from \"../auth\"\nimport type { AuthorizationContext } from \"../authorization\"\nimport { resolveAuthorizationContext } from \"../authorization\"\nimport { createSixbError } from \"../errors/internal\"\nimport type { AuthorizablePrincipal, AuthorizationRef } from \"../execution\"\nimport type { SecurityDefinitionCatalog } from \"../security\"\nimport type {\n AccessTokenRecord,\n AuthStorage,\n ServiceAccountGroupMembershipRecord,\n ServiceAccountRecord,\n SessionRecord,\n UserRecord,\n} from \"../storage/auth\"\nimport { AuthStorageError } from \"../storage/auth\"\nimport { agentServiceAccountId } from \"./identity\"\n\nexport type AgentExecutionAuthorization =\n | { readonly type: \"principal\"; readonly context: AuthorizationContext }\n | { readonly type: \"disabled\" }\n\ntype UserCredentialRef = NonNullable<\n Extract<AuthorizationRef, { readonly type: \"principal\" }>[\"credential\"]\n>\n\ninterface CredentialedUserAuthorizationRef {\n readonly type: \"principal\"\n readonly principal: Extract<AuthorizablePrincipal, { readonly type: \"user\" }>\n readonly credential: UserCredentialRef\n}\n\nexport { agentServiceAccountId } from \"./identity\"\n\nexport interface AgentExecutionIdentity {\n readonly serviceAccount: ServiceAccountRecord\n readonly principal: Extract<AuthorizablePrincipal, { readonly type: \"serviceAccount\" }>\n readonly groupMemberships: readonly ServiceAccountGroupMembershipRecord[]\n}\n\n/** Ensure a framework-managed Agent actor exists with exactly its declared group memberships. */\nexport async function ensureManagedAgentExecutionIdentity(input: {\n readonly auth: AuthStorage | undefined\n readonly projectId: string\n readonly actorId: string\n readonly name: string\n readonly description: string\n readonly groupIds: readonly string[]\n}): Promise<AgentExecutionIdentity> {\n const auth = requireAuthStorage(input.auth)\n const id = agentServiceAccountId(input.actorId)\n const now = new Date()\n const loaded = await loadOrCreateAgentServiceAccount(auth, {\n id,\n projectId: input.projectId,\n name: input.name,\n description: input.description,\n updatedAt: now,\n })\n assertFrameworkManagedAgentServiceAccount(input.actorId, loaded)\n assertActiveAgentServiceAccount(input.actorId, loaded)\n const serviceAccount = await updateAgentServiceAccountMetadata(auth, {\n existing: loaded,\n name: input.name,\n description: input.description,\n updatedAt: now,\n })\n assertActiveAgentServiceAccount(input.actorId, serviceAccount)\n\n const groupMemberships = requireDefinitionOwnedGroupMemberships(\n input.actorId,\n await auth.serviceAccountGroupMemberships.reconcileForServiceAccount({\n projectId: input.projectId,\n serviceAccountId: id,\n groupIds: input.groupIds,\n source: \"agent\",\n updatedAt: now,\n })\n )\n\n return {\n serviceAccount,\n principal: { type: \"serviceAccount\", id },\n groupMemberships,\n }\n}\n\n/** Load the managed identity, recovering only the expected concurrent-create race. */\nasync function loadOrCreateAgentServiceAccount(\n auth: AuthStorage,\n input: {\n readonly id: string\n readonly projectId: string\n readonly name: string\n readonly description: string\n readonly updatedAt: Date\n }\n): Promise<ServiceAccountRecord> {\n const existing = await auth.serviceAccounts.getById({\n projectId: input.projectId,\n id: input.id,\n })\n if (existing) return existing\n\n try {\n return await auth.serviceAccounts.create({\n id: input.id,\n projectId: input.projectId,\n name: input.name,\n description: input.description,\n status: \"active\",\n createdByPrincipal: SYSTEM_PRINCIPAL,\n createdAt: input.updatedAt,\n updatedAt: input.updatedAt,\n })\n } catch (error) {\n if (!(error instanceof AuthStorageError) || error.code !== \"duplicate_service_account\") {\n throw error\n }\n const concurrent = await auth.serviceAccounts.getById({\n projectId: input.projectId,\n id: input.id,\n })\n if (!concurrent) throw error\n return concurrent\n }\n}\n\nfunction assertActiveAgentServiceAccount(\n actorId: string,\n serviceAccount: ServiceAccountRecord\n): void {\n if (serviceAccount.status === \"suspended\") {\n throw new Error(\n `[Sixb] Agent '${actorId}' service account '${serviceAccount.id}' is suspended.`\n )\n }\n}\n\nfunction assertFrameworkManagedAgentServiceAccount(\n actorId: string,\n serviceAccount: ServiceAccountRecord\n): void {\n if (\n serviceAccount.createdByPrincipal === undefined ||\n !principalsEqual(serviceAccount.createdByPrincipal, SYSTEM_PRINCIPAL)\n ) {\n throw createSixbError(\n \"agent.execution_failed\",\n `[Sixb] Agent '${actorId}' cannot use service account '${serviceAccount.id}' because it is not managed by Sixb.`,\n { details: { actorId, serviceAccountId: serviceAccount.id } }\n )\n }\n}\n\nfunction requireDefinitionOwnedGroupMemberships(\n actorId: string,\n memberships: readonly ServiceAccountGroupMembershipRecord[]\n): readonly ServiceAccountGroupMembershipRecord[] {\n const externalGroupIds = memberships\n .filter((membership) => membership.source !== \"agent\")\n .map((membership) => membership.groupId)\n if (externalGroupIds.length > 0) {\n throw createSixbError(\n \"agent.execution_failed\",\n `[Sixb] Agent '${actorId}' service account has group memberships not managed by its definition: ${externalGroupIds.join(\", \")}.`,\n { details: { actorId, externalGroupIds } }\n )\n }\n return memberships\n}\n\n/** Resolve current grants for the service account referenced by a durable Agent execution. */\nexport async function resolveAgentExecutionAuthorization(input: {\n readonly auth: AuthStorage | undefined\n readonly projectId: string\n readonly actorId: string\n readonly authorizationRef: AuthorizationRef\n readonly security: SecurityDefinitionCatalog\n}): Promise<{ readonly identity: AgentExecutionIdentity; readonly context: AuthorizationContext }> {\n const auth = requireAuthStorage(input.auth)\n const expectedId = agentServiceAccountId(input.actorId)\n const principal =\n input.authorizationRef.type === \"principal\" ? input.authorizationRef.principal : null\n if (principal?.type !== \"serviceAccount\" || principal.id !== expectedId) {\n throw new Error(\n `[Sixb] Agent '${input.actorId}' execution authority must reference service account '${expectedId}'.`\n )\n }\n\n const serviceAccount = await auth.serviceAccounts.getById({\n projectId: input.projectId,\n id: principal.id,\n })\n if (!serviceAccount || serviceAccount.status !== \"active\") {\n throw new Error(`[Sixb] Agent service account '${principal.id}' is not active.`)\n }\n assertFrameworkManagedAgentServiceAccount(input.actorId, serviceAccount)\n\n const groupMemberships = requireDefinitionOwnedGroupMemberships(\n input.actorId,\n await auth.serviceAccountGroupMemberships.listForServiceAccount({\n projectId: input.projectId,\n serviceAccountId: principal.id,\n })\n )\n const identity: AgentExecutionIdentity = {\n serviceAccount,\n principal: { type: \"serviceAccount\", id: principal.id },\n groupMemberships,\n }\n return {\n identity,\n context: resolveAuthorizationContext({\n principal: identity.principal,\n groupIds: groupMemberships.map((membership) => membership.groupId),\n roles: input.security.listResolvedRoles(),\n }),\n }\n}\n\n/** Revalidate the durable user authority inherited by a conversational or child Agent. */\nexport async function resolveInheritedAgentExecutionAuthorization(input: {\n readonly auth: AuthStorage | undefined\n readonly projectId: string\n readonly authorizationRef: AuthorizationRef\n readonly security: SecurityDefinitionCatalog\n readonly now?: Date\n}): Promise<AgentExecutionAuthorization> {\n if (input.authorizationRef.type === \"disabled\") return { type: \"disabled\" }\n\n const ref = requireCredentialedUserAuthority(input.authorizationRef)\n const auth = requireAuthStorage(input.auth)\n const now = input.now ?? new Date()\n const user = await requireActiveUser(auth, input.projectId, ref.principal.id)\n const memberships = await auth.groupMemberships.listForUser({\n projectId: input.projectId,\n userId: user.id,\n })\n const credential = await revalidateUserCredential({\n auth,\n projectId: input.projectId,\n userId: user.id,\n credential: ref.credential,\n currentGroupIds: memberships.map((membership) => membership.groupId),\n now,\n })\n\n return {\n type: \"principal\",\n context: resolveAuthorizationContext({\n principal: ref.principal,\n groupIds: credential.groupIds,\n roles: input.security.listResolvedRoles(),\n ...(credential.sessionId === undefined ? {} : { sessionId: credential.sessionId }),\n }),\n }\n}\n\nfunction requireCredentialedUserAuthority(ref: AuthorizationRef): CredentialedUserAuthorizationRef {\n if (ref.type !== \"principal\" || ref.principal.type !== \"user\" || ref.credential === undefined) {\n throw invalidInheritedAuthority(\"the durable reference is not a credentialed user\")\n }\n return {\n type: \"principal\",\n principal: { type: \"user\", id: ref.principal.id },\n credential: { type: ref.credential.type, id: ref.credential.id },\n }\n}\n\nasync function requireActiveUser(\n auth: AuthStorage,\n projectId: string,\n userId: string\n): Promise<UserRecord> {\n const user = await auth.users.getById({ projectId, id: userId })\n if (!user || user.status !== \"active\") {\n throw invalidInheritedAuthority(`user '${userId}' is not active`)\n }\n return user\n}\n\nasync function revalidateUserCredential(input: {\n readonly auth: AuthStorage\n readonly projectId: string\n readonly userId: string\n readonly credential: UserCredentialRef\n readonly currentGroupIds: readonly string[]\n readonly now: Date\n}): Promise<{ readonly groupIds: readonly string[]; readonly sessionId?: string }> {\n if (input.credential.type === \"session\") {\n const session = await input.auth.sessions.getById({\n projectId: input.projectId,\n id: input.credential.id,\n })\n if (!isUsableUserSession(session, input.userId, input.now)) {\n throw invalidInheritedAuthority(\"the inherited session is no longer valid\")\n }\n return { groupIds: input.currentGroupIds, sessionId: session.id }\n }\n\n const accessToken = await input.auth.accessTokens.getById({\n projectId: input.projectId,\n id: input.credential.id,\n })\n if (!isUsableUserAccessToken(accessToken, input.userId, input.now)) {\n throw invalidInheritedAuthority(\"the inherited access token is no longer valid\")\n }\n if (accessToken.groupIds === undefined) return { groupIds: input.currentGroupIds }\n\n const allowedGroupIds = new Set(accessToken.groupIds)\n return {\n groupIds: input.currentGroupIds.filter((groupId) => allowedGroupIds.has(groupId)),\n }\n}\n\nfunction isUsableUserSession(\n session: SessionRecord | null,\n userId: string,\n now: Date\n): session is SessionRecord {\n if (!session || session.userId !== userId || session.revokedAt !== undefined) return false\n if (session.expiresAt.getTime() <= now.getTime()) return false\n return (\n session.absoluteExpiresAt === undefined || session.absoluteExpiresAt.getTime() > now.getTime()\n )\n}\n\nfunction isUsableUserAccessToken(\n token: AccessTokenRecord | null,\n userId: string,\n now: Date\n): token is AccessTokenRecord {\n if (!token || token.subjectType !== \"user\" || token.subjectId !== userId) return false\n return token.revokedAt === undefined && token.expiresAt.getTime() > now.getTime()\n}\n\nfunction invalidInheritedAuthority(reason: string): Error {\n return createSixbError(\n \"agent.execution_failed\",\n `[Sixb] The Agent execution cannot restore its inherited authority: ${reason}.`\n )\n}\n\nfunction requireAuthStorage(auth: AuthStorage | undefined): AuthStorage {\n if (!auth) {\n throw new Error(\"[Sixb] Agent executions require auth storage.\")\n }\n return auth\n}\n\nasync function updateAgentServiceAccountMetadata(\n auth: AuthStorage,\n input: {\n readonly existing: ServiceAccountRecord\n readonly name: string\n readonly description: string\n readonly updatedAt: Date\n }\n): Promise<ServiceAccountRecord> {\n if (input.existing.name === input.name && input.existing.description === input.description) {\n return input.existing\n }\n return auth.serviceAccounts.update({\n projectId: input.existing.projectId,\n id: input.existing.id,\n name: input.name,\n description: input.description,\n updatedAt: input.updatedAt,\n })\n}\n",
5
+ "import { principalsEqual, SYSTEM_PRINCIPAL } from \"../auth\"\nimport type { AuthorizationContext } from \"../authorization\"\nimport { resolveAuthorizationContext } from \"../authorization\"\nimport { createSixbError } from \"../errors/internal\"\nimport type { AuthorizablePrincipal, AuthorizationRef } from \"../execution\"\nimport type { SecurityDefinitionCatalog } from \"../security\"\nimport type {\n AccessTokenRecord,\n AuthStorage,\n ServiceAccountGroupMembershipRecord,\n ServiceAccountRecord,\n SessionRecord,\n UserRecord,\n} from \"../storage/auth\"\nimport { AuthStorageError } from \"../storage/auth\"\nimport { agentServiceAccountId } from \"./identity\"\n\nexport type AgentExecutionAuthorization =\n | { readonly type: \"principal\"; readonly context: AuthorizationContext }\n | { readonly type: \"disabled\" }\n\ntype UserCredentialRef = NonNullable<\n Extract<AuthorizationRef, { readonly type: \"principal\" }>[\"credential\"]\n>\n\ninterface CredentialedUserAuthorizationRef {\n readonly type: \"principal\"\n readonly principal: Extract<AuthorizablePrincipal, { readonly type: \"user\" }>\n readonly credential: UserCredentialRef\n}\n\nexport { agentServiceAccountId } from \"./identity\"\n\nexport interface AgentExecutionIdentity {\n readonly serviceAccount: ServiceAccountRecord\n readonly principal: Extract<AuthorizablePrincipal, { readonly type: \"serviceAccount\" }>\n readonly groupMemberships: readonly ServiceAccountGroupMembershipRecord[]\n}\n\n/** Ensure a framework-managed Agent actor exists with exactly its declared group memberships. */\nexport async function ensureManagedAgentExecutionIdentity(input: {\n readonly auth: AuthStorage | undefined\n readonly projectId: string\n readonly actorId: string\n readonly name: string\n readonly description: string\n readonly groupIds: readonly string[]\n}): Promise<AgentExecutionIdentity> {\n const auth = requireAuthStorage(input.auth)\n const id = agentServiceAccountId(input.actorId)\n const now = new Date()\n const loaded = await loadOrCreateAgentServiceAccount(auth, {\n id,\n projectId: input.projectId,\n name: input.name,\n description: input.description,\n updatedAt: now,\n })\n assertFrameworkManagedAgentServiceAccount(input.actorId, loaded)\n assertActiveAgentServiceAccount(input.actorId, loaded)\n const serviceAccount = await updateAgentServiceAccountMetadata(auth, {\n existing: loaded,\n name: input.name,\n description: input.description,\n updatedAt: now,\n })\n assertActiveAgentServiceAccount(input.actorId, serviceAccount)\n\n const groupMemberships = requireDefinitionOwnedGroupMemberships(\n input.actorId,\n await auth.serviceAccountGroupMemberships.reconcileForServiceAccount({\n projectId: input.projectId,\n serviceAccountId: id,\n groupIds: input.groupIds,\n source: \"agent\",\n updatedAt: now,\n })\n )\n\n return {\n serviceAccount,\n principal: { type: \"serviceAccount\", id },\n groupMemberships,\n }\n}\n\n/** Load the managed identity, recovering only the expected concurrent-create race. */\nasync function loadOrCreateAgentServiceAccount(\n auth: AuthStorage,\n input: {\n readonly id: string\n readonly projectId: string\n readonly name: string\n readonly description: string\n readonly updatedAt: Date\n }\n): Promise<ServiceAccountRecord> {\n const existing = await auth.serviceAccounts.getById({\n projectId: input.projectId,\n id: input.id,\n })\n if (existing) return existing\n\n try {\n return await auth.serviceAccounts.create({\n id: input.id,\n projectId: input.projectId,\n name: input.name,\n description: input.description,\n status: \"active\",\n createdByPrincipal: SYSTEM_PRINCIPAL,\n createdAt: input.updatedAt,\n updatedAt: input.updatedAt,\n })\n } catch (error) {\n if (!(error instanceof AuthStorageError) || error.code !== \"duplicate_service_account\") {\n throw error\n }\n const concurrent = await auth.serviceAccounts.getById({\n projectId: input.projectId,\n id: input.id,\n })\n if (!concurrent) throw error\n return concurrent\n }\n}\n\nfunction assertActiveAgentServiceAccount(\n actorId: string,\n serviceAccount: ServiceAccountRecord\n): void {\n if (serviceAccount.status === \"suspended\") {\n throw new Error(\n `[Sixb] Agent '${actorId}' service account '${serviceAccount.id}' is suspended.`\n )\n }\n}\n\nfunction assertFrameworkManagedAgentServiceAccount(\n actorId: string,\n serviceAccount: ServiceAccountRecord\n): void {\n if (\n serviceAccount.createdByPrincipal === undefined ||\n !principalsEqual(serviceAccount.createdByPrincipal, SYSTEM_PRINCIPAL)\n ) {\n throw createSixbError(\n \"agent.execution_failed\",\n `[Sixb] Agent '${actorId}' cannot use service account '${serviceAccount.id}' because it is not managed by Sixb.`,\n { details: { actorId, serviceAccountId: serviceAccount.id } }\n )\n }\n}\n\nfunction requireDefinitionOwnedGroupMemberships(\n actorId: string,\n memberships: readonly ServiceAccountGroupMembershipRecord[]\n): readonly ServiceAccountGroupMembershipRecord[] {\n const externalGroupIds = memberships\n .filter((membership) => membership.source !== \"agent\")\n .map((membership) => membership.groupId)\n if (externalGroupIds.length > 0) {\n throw createSixbError(\n \"agent.execution_failed\",\n `[Sixb] Agent '${actorId}' service account has group memberships not managed by its definition: ${externalGroupIds.join(\", \")}.`,\n { details: { actorId, externalGroupIds } }\n )\n }\n return memberships\n}\n\n/** Resolve current grants for the service account referenced by a durable Agent execution. */\nexport async function resolveAgentExecutionAuthorization(input: {\n readonly auth: AuthStorage | undefined\n readonly projectId: string\n readonly actorId: string\n readonly authorizationRef: AuthorizationRef\n readonly security: SecurityDefinitionCatalog\n}): Promise<{ readonly identity: AgentExecutionIdentity; readonly context: AuthorizationContext }> {\n const auth = requireAuthStorage(input.auth)\n const expectedId = agentServiceAccountId(input.actorId)\n const principal =\n input.authorizationRef.type === \"principal\" ? input.authorizationRef.principal : null\n if (principal?.type !== \"serviceAccount\" || principal.id !== expectedId) {\n throw new Error(\n `[Sixb] Agent '${input.actorId}' execution authority must reference service account '${expectedId}'.`\n )\n }\n\n const serviceAccount = await auth.serviceAccounts.getById({\n projectId: input.projectId,\n id: principal.id,\n })\n if (!serviceAccount || serviceAccount.status !== \"active\") {\n throw new Error(`[Sixb] Agent service account '${principal.id}' is not active.`)\n }\n assertFrameworkManagedAgentServiceAccount(input.actorId, serviceAccount)\n\n const groupMemberships = requireDefinitionOwnedGroupMemberships(\n input.actorId,\n await auth.serviceAccountGroupMemberships.listForServiceAccount({\n projectId: input.projectId,\n serviceAccountId: principal.id,\n })\n )\n const identity: AgentExecutionIdentity = {\n serviceAccount,\n principal: { type: \"serviceAccount\", id: principal.id },\n groupMemberships,\n }\n return {\n identity,\n context: resolveAuthorizationContext({\n principal: identity.principal,\n groupIds: groupMemberships.map((membership) => membership.groupId),\n roles: input.security.listResolvedRoles(),\n }),\n }\n}\n\n/** Revalidate the durable user authority inherited by a conversational or child Agent. */\nexport async function resolveInheritedAgentExecutionAuthorization(input: {\n readonly auth: AuthStorage | undefined\n readonly projectId: string\n readonly authorizationRef: AuthorizationRef\n readonly security: SecurityDefinitionCatalog\n readonly now?: Date\n}): Promise<AgentExecutionAuthorization> {\n if (input.authorizationRef.type === \"disabled\") return { type: \"disabled\" }\n\n const ref = requireCredentialedUserAuthority(input.authorizationRef)\n const auth = requireAuthStorage(input.auth)\n const now = input.now ?? new Date()\n const user = await requireActiveUser(auth, input.projectId, ref.principal.id)\n const memberships = await auth.groupMemberships.listForUser({\n projectId: input.projectId,\n userId: user.id,\n })\n const credential = await revalidateUserCredential({\n auth,\n projectId: input.projectId,\n userId: user.id,\n credential: ref.credential,\n currentGroupIds: memberships.map((membership) => membership.groupId),\n now,\n })\n\n return {\n type: \"principal\",\n context: resolveAuthorizationContext({\n principal: ref.principal,\n groupIds: credential.groupIds,\n roles: input.security.listResolvedRoles(),\n ...(credential.sessionId === undefined ? {} : { sessionId: credential.sessionId }),\n }),\n }\n}\n\nfunction requireCredentialedUserAuthority(ref: AuthorizationRef): CredentialedUserAuthorizationRef {\n if (ref.type !== \"principal\" || ref.principal.type !== \"user\" || ref.credential === undefined) {\n throw invalidInheritedAuthority(\"the durable reference is not a credentialed user\")\n }\n return {\n type: \"principal\",\n principal: { type: \"user\", id: ref.principal.id },\n credential: { type: ref.credential.type, id: ref.credential.id },\n }\n}\n\nasync function requireActiveUser(\n auth: AuthStorage,\n projectId: string,\n userId: string\n): Promise<UserRecord> {\n const user = await auth.users.getById({ projectId, id: userId })\n if (!user || user.status !== \"active\") {\n throw invalidInheritedAuthority(`user '${userId}' is not active`)\n }\n return user\n}\n\nasync function revalidateUserCredential(input: {\n readonly auth: AuthStorage\n readonly projectId: string\n readonly userId: string\n readonly credential: UserCredentialRef\n readonly currentGroupIds: readonly string[]\n readonly now: Date\n}): Promise<{ readonly groupIds: readonly string[]; readonly sessionId?: string }> {\n if (input.credential.type === \"session\") {\n const session = await input.auth.sessions.getById({\n projectId: input.projectId,\n id: input.credential.id,\n })\n if (!isUsableUserSession(session, input.userId, input.now)) {\n throw invalidInheritedAuthority(\"the inherited session is no longer valid\")\n }\n return { groupIds: input.currentGroupIds, sessionId: session.id }\n }\n\n const accessToken = await input.auth.accessTokens.getById({\n projectId: input.projectId,\n id: input.credential.id,\n })\n if (!isUsableUserAccessToken(accessToken, input.userId, input.now)) {\n throw invalidInheritedAuthority(\"the inherited access token is no longer valid\")\n }\n if (accessToken.groupIds === undefined) return { groupIds: input.currentGroupIds }\n\n const allowedGroupIds = new Set(accessToken.groupIds)\n return {\n groupIds: input.currentGroupIds.filter((groupId) => allowedGroupIds.has(groupId)),\n }\n}\n\nfunction isUsableUserSession(\n session: SessionRecord | null,\n userId: string,\n now: Date\n): session is SessionRecord {\n if (!session || session.userId !== userId || session.revokedAt !== undefined) return false\n if (session.expiresAt.getTime() <= now.getTime()) return false\n return (\n session.absoluteExpiresAt === undefined || session.absoluteExpiresAt.getTime() > now.getTime()\n )\n}\n\nfunction isUsableUserAccessToken(\n token: AccessTokenRecord | null,\n userId: string,\n now: Date\n): token is AccessTokenRecord {\n if (!token || !principalsEqual(token.subject, { type: \"user\", id: userId })) return false\n return token.revokedAt === undefined && token.expiresAt.getTime() > now.getTime()\n}\n\nfunction invalidInheritedAuthority(reason: string): Error {\n return createSixbError(\n \"agent.execution_failed\",\n `[Sixb] The Agent execution cannot restore its inherited authority: ${reason}.`\n )\n}\n\nfunction requireAuthStorage(auth: AuthStorage | undefined): AuthStorage {\n if (!auth) {\n throw new Error(\"[Sixb] Agent executions require auth storage.\")\n }\n return auth\n}\n\nasync function updateAgentServiceAccountMetadata(\n auth: AuthStorage,\n input: {\n readonly existing: ServiceAccountRecord\n readonly name: string\n readonly description: string\n readonly updatedAt: Date\n }\n): Promise<ServiceAccountRecord> {\n if (input.existing.name === input.name && input.existing.description === input.description) {\n return input.existing\n }\n return auth.serviceAccounts.update({\n projectId: input.existing.projectId,\n id: input.existing.id,\n name: input.name,\n description: input.description,\n updatedAt: input.updatedAt,\n })\n}\n",
6
6
  "/**\n * Base error for workflow-run storage operations.\n */\nexport class WorkflowRunError extends Error {\n readonly name = \"WorkflowRunError\"\n}\n",
7
7
  "import { agentServiceAccountId } from \"../../agents/authority\"\nimport type { ExecutionStorage } from \"../executions\"\nimport { findAgentRunExecution, findPrimitiveRunExecution } from \"../executions/run-link\"\nimport { WorkflowRunError } from \"./errors\"\n\n/** Validate the semantic link between a durable workflow run and its immutable execution. */\nexport async function assertWorkflowRunExecution(input: {\n readonly executions: ExecutionStorage\n readonly projectId: string\n readonly executionId: string\n readonly runId: string\n readonly workflowId: string\n}): Promise<void> {\n const execution = await findPrimitiveRunExecution({\n executions: input.executions,\n projectId: input.projectId,\n executionId: input.executionId,\n primitive: { kind: \"workflow\", id: input.workflowId, runId: input.runId },\n sourceTypes: [\"execution\", \"schedule\", \"event\"],\n })\n if (!execution) {\n invalidExecution(input.executionId, input.runId)\n }\n\n if (execution.source.type === \"schedule\" || execution.source.type === \"event\") {\n if (execution.requestedBy !== undefined) {\n invalidExecution(input.executionId, input.runId)\n }\n return\n }\n\n // ExecutionStorage already validates the immutable parent reference, correlation id, and\n // requested-by propagation. This boundary only owns the workflow-specific source restriction.\n if (execution.source.type !== \"execution\") {\n invalidExecution(input.executionId, input.runId)\n }\n}\n\n/** Validate the semantic link between a Workflow Agent-node run and its child execution. */\nexport async function assertWorkflowAgentNodeRunExecution(input: {\n readonly executions: ExecutionStorage\n readonly projectId: string\n readonly executionId: string\n readonly nodeRunId: string\n readonly actorId: string\n readonly workflowExecutionId: string\n}): Promise<void> {\n const execution = await findAgentRunExecution({\n executions: input.executions,\n projectId: input.projectId,\n executionId: input.executionId,\n runId: input.nodeRunId,\n authority: { type: \"managed\", serviceAccountId: agentServiceAccountId(input.actorId) },\n })\n if (\n !execution ||\n execution.source.type !== \"execution\" ||\n execution.source.executionId !== input.workflowExecutionId\n ) {\n throw new WorkflowRunError(\n `[Sixb] Execution '${input.executionId}' does not authorize Workflow Agent-node run '${input.nodeRunId}'.`\n )\n }\n}\n\nfunction invalidExecution(executionId: string, runId: string): never {\n throw new WorkflowRunError(\n `[Sixb] Execution '${executionId}' does not authorize workflow run '${runId}'.`\n )\n}\n"
8
8
  ],
9
- "mappings": "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",
10
- "debugId": "E7BAFA86A352672B64756E2164756E21",
9
+ "mappings": "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",
10
+ "debugId": "F5DA9E9C95A4C18E64756E2164756E21",
11
11
  "names": []
12
12
  }
@@ -2,10 +2,10 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/agents/errors.ts", "../src/agents/context/entries.ts"],
4
4
  "sourcesContent": [
5
- "/**\n * Base error for the agents module. Specific subclasses extend this so callers\n * can catch any agent-scoped failure with a single `instanceof AgentDefinitionError` check.\n */\nexport class AgentDefinitionError extends Error {\n readonly name: string = \"AgentDefinitionError\"\n}\n\n/**\n * An agent-tool failure whose message is intentionally safe to expose to the model and persist in\n * the durable trace. Tool authors must keep the message free of credentials and internal details;\n * unknown errors remain masked by the worker.\n */\nexport class AgentToolPublicError extends Error {\n readonly name: string = \"AgentToolPublicError\"\n}\n\n/** Raised when an agent tool result cannot cross the durable message boundary. */\nexport class AgentToolResultValidationError extends Error {\n readonly name = \"AgentToolResultValidationError\"\n\n constructor(\n readonly toolName: string,\n readonly reason: string,\n options?: ErrorOptions\n ) {\n super(`[Sixb] Agent tool '${toolName}' returned an invalid result; ${reason}.`, options)\n }\n}\n\nexport type AgentRequestErrorCode =\n | \"agent_selector_removed\"\n | \"agent_not_found\"\n | \"model_not_found\"\n | \"invalid_model_selection\"\n | \"run_not_found\"\n | \"run_not_retryable\"\n | \"thread_not_found\"\n | \"active_run_exists\"\n | \"authority_not_inheritable\"\n | \"invalid_context\"\n | \"storage_unavailable\"\n\n/**\n * Raised by {@link requestAgentRun} (the trigger). Callers branch on `code` rather than message text\n * — e.g. the HTTP layer maps `active_run_exists` to 409 and `agent_not_found` to 404.\n */\nexport class AgentRequestError extends Error {\n readonly name = \"AgentRequestError\"\n\n constructor(\n readonly code: AgentRequestErrorCode,\n message: string\n ) {\n super(message)\n }\n}\n",
5
+ "/**\n * Base error for the agents module. Specific subclasses extend this so callers\n * can catch any agent-scoped failure with a single `instanceof AgentDefinitionError` check.\n */\nexport class AgentDefinitionError extends Error {\n readonly name: string = \"AgentDefinitionError\"\n}\n\n/**\n * An agent-tool failure whose message is intentionally safe to expose to the model and persist in\n * the durable trace. Tool authors must keep the message free of credentials and internal details;\n * unknown errors remain masked by the worker.\n */\nexport class AgentToolPublicError extends Error {\n readonly name: string = \"AgentToolPublicError\"\n}\n\n/** Raised when an agent tool result cannot cross the durable message boundary. */\nexport class AgentToolResultValidationError extends Error {\n readonly name = \"AgentToolResultValidationError\"\n\n constructor(\n readonly toolName: string,\n readonly reason: string,\n options?: ErrorOptions\n ) {\n super(`[Sixb] Agent tool '${toolName}' returned an invalid result; ${reason}.`, options)\n }\n}\n\nexport type AgentRequestErrorCode =\n | \"agent_selector_removed\"\n | \"agent_not_found\"\n | \"model_not_found\"\n | \"invalid_model_selection\"\n | \"run_not_found\"\n | \"run_not_retryable\"\n | \"thread_not_found\"\n | \"active_run_exists\"\n | \"authority_not_inheritable\"\n | \"invalid_context\"\n | \"storage_unavailable\"\n | \"sandbox_not_configured\"\n | \"invalid_sandbox_params\"\n | \"sandbox_execution_unavailable\"\n\n/**\n * Raised by {@link requestAgentRun} (the trigger). Callers branch on `code` rather than message text\n * — e.g. the HTTP layer maps `active_run_exists` to 409 and `agent_not_found` to 404.\n */\nexport class AgentRequestError extends Error {\n readonly name = \"AgentRequestError\"\n\n constructor(\n readonly code: AgentRequestErrorCode,\n message: string\n ) {\n super(message)\n }\n}\n",
6
6
  "import type { JsonValue } from \"../../json\"\nimport { cloneJsonValue, getInvalidJsonValueReason, stableJsonStringify } from \"../../json\"\nimport type { ObjectRef } from \"../../ontology/refs\"\nimport { AgentRequestError } from \"../errors\"\n\nexport type AgentContextInput =\n | { readonly kind: \"object\"; readonly ref: ObjectRef }\n | {\n readonly kind: \"app-state\"\n readonly id: string\n readonly label: string\n readonly description: string\n readonly value: JsonValue\n }\n\nexport type AgentContextOrigin = \"ambient\" | \"explicit\"\n\nexport interface AgentContextEntryInput {\n readonly context: AgentContextInput\n readonly origin: AgentContextOrigin\n}\n\n/** Durable user-message part. Origin is display provenance, never an authorization grant. */\nexport interface AgentContextPart extends AgentContextEntryInput {\n readonly type: \"context\"\n}\n\nexport const MAX_AGENT_CONTEXT_ENTRIES = 12\nexport const MAX_AGENT_APP_STATE_ENTRY_BYTES = 16 * 1024\nexport const MAX_AGENT_APP_STATE_TOTAL_BYTES = 64 * 1024\n\n/** Typed constructors for context values shared by custom apps and agent clients. */\nexport const agentContext = {\n object<const TObjectTypeId extends string>(\n objectType: { readonly id: TObjectTypeId },\n primaryId: string\n ) {\n return {\n kind: \"object\" as const,\n ref: { objectTypeId: objectType.id, primaryId },\n }\n },\n\n appState<const TValue extends JsonValue>(\n id: string,\n input: {\n readonly label: string\n readonly description: string\n readonly value: TValue\n }\n ) {\n return { kind: \"app-state\" as const, id, ...input }\n },\n}\n\n/** Stable identity shared by core deduplication and context-aware clients. */\nexport function agentContextIdentity(context: AgentContextInput): string {\n return context.kind === \"object\"\n ? `object:${encodeURIComponent(context.ref.objectTypeId)}:${encodeURIComponent(context.ref.primaryId)}`\n : `app-state:${encodeURIComponent(context.id)}`\n}\n\n/** Stable semantic key for client-side comparisons. */\nexport function agentContextFingerprint(context: AgentContextInput): string {\n return stableJsonStringify(context)\n}\n\n/**\n * Validate transport-independent context rules and clone mutable app state before it can become\n * durable. Object existence and visibility are resolved separately because they require a runtime.\n */\nexport function normalizeAgentContextEntries(\n input: readonly AgentContextEntryInput[] | undefined\n): readonly AgentContextEntryInput[] {\n if (input === undefined) return []\n if (!Array.isArray(input)) invalidContext(\"context must be an array\")\n if (input.length > MAX_AGENT_CONTEXT_ENTRIES) {\n invalidContext(`context cannot contain more than ${MAX_AGENT_CONTEXT_ENTRIES} entries`)\n }\n\n const entries: AgentContextEntryInput[] = []\n const byIdentity = new Map<string, string>()\n let totalAppStateBytes = 0\n\n for (const [index, rawEntry] of input.entries()) {\n const entry = normalizeEntry(rawEntry, index)\n const identity = agentContextIdentity(entry.context)\n const serialized = stableJsonStringify(entry)\n const existing = byIdentity.get(identity)\n\n if (existing !== undefined) {\n if (existing === serialized) continue\n invalidContext(`context contains conflicting entries for '${identity}'`)\n }\n\n if (entry.context.kind === \"app-state\") {\n const bytes = utf8ByteLength(serialized)\n if (bytes > MAX_AGENT_APP_STATE_ENTRY_BYTES) {\n invalidContext(\n `context entry '${identity}' exceeds the ${MAX_AGENT_APP_STATE_ENTRY_BYTES}-byte limit`\n )\n }\n totalAppStateBytes += bytes\n if (totalAppStateBytes > MAX_AGENT_APP_STATE_TOTAL_BYTES) {\n invalidContext(\n `app-state context exceeds the ${MAX_AGENT_APP_STATE_TOTAL_BYTES}-byte message limit`\n )\n }\n }\n\n byIdentity.set(identity, serialized)\n entries.push(entry)\n }\n\n return entries\n}\n\nfunction normalizeEntry(rawEntry: unknown, index: number): AgentContextEntryInput {\n if (!isRecord(rawEntry)) invalidContext(`context[${index}] must be an object`)\n if (rawEntry.origin !== \"ambient\" && rawEntry.origin !== \"explicit\") {\n invalidContext(`context[${index}].origin must be 'ambient' or 'explicit'`)\n }\n if (!isRecord(rawEntry.context)) invalidContext(`context[${index}].context must be an object`)\n\n const context = rawEntry.context\n if (context.kind === \"object\") {\n if (!isRecord(context.ref)) invalidContext(`context[${index}].context.ref must be an object`)\n const objectTypeId = requireNonEmptyString(\n context.ref.objectTypeId,\n `context[${index}].context.ref.objectTypeId`\n )\n const primaryId = requireNonEmptyString(\n context.ref.primaryId,\n `context[${index}].context.ref.primaryId`\n )\n return {\n context: { kind: \"object\", ref: { objectTypeId, primaryId } },\n origin: rawEntry.origin,\n }\n }\n\n if (context.kind === \"app-state\") {\n const id = requireNonEmptyString(context.id, `context[${index}].context.id`)\n const label = requireNonEmptyString(context.label, `context[${index}].context.label`)\n const description = requireNonEmptyString(\n context.description,\n `context[${index}].context.description`\n )\n const reason = getInvalidJsonValueReason(context.value, `context[${index}].context.value`)\n if (reason) {\n invalidContext(`context[${index}].context.value must be a JSON value; ${reason}`)\n }\n return {\n context: {\n kind: \"app-state\",\n id,\n label,\n description,\n value: cloneJsonValue(context.value as JsonValue),\n },\n origin: rawEntry.origin,\n }\n }\n\n invalidContext(`context[${index}].context.kind must be 'object' or 'app-state'`)\n}\n\nfunction requireNonEmptyString(value: unknown, label: string): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n invalidContext(`${label} must be a non-empty string`)\n }\n return value\n}\n\nfunction utf8ByteLength(value: string): number {\n return new TextEncoder().encode(value).byteLength\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n}\n\nfunction invalidContext(message: string): never {\n throw new AgentRequestError(\"invalid_context\", `[Sixb] Invalid agent context: ${message}.`)\n}\n"
7
7
  ],
8
- "mappings": "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",
8
+ "mappings": "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",
9
9
  "debugId": "20BA4BBDB86CC4AA64756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -0,0 +1,57 @@
1
+ // @bun
2
+ import {
3
+ validateSchemaValue2,
4
+ isRecord2
5
+ } from "./chunk-d8yes9yx.js";
6
+ import {
7
+ OntologyValidationError2
8
+ } from "./chunk-cqr3acm1.js";
9
+
10
+ // src/ontology/refs.ts
11
+ var ref2 = Object.assign((objectType) => ({
12
+ type: "objectRef",
13
+ objectTypeId: objectType.id
14
+ }), {
15
+ user: () => "userRef",
16
+ file: () => "fileRef"
17
+ });
18
+ function objectRef2(objectType, primaryId) {
19
+ if (typeof objectType !== "object" || objectType === null || typeof objectType.id !== "string" || !objectType.id.trim()) {
20
+ throw new OntologyValidationError2("[Sixb] Object reference type must be an object type.");
21
+ }
22
+ if (typeof primaryId !== "string" || !primaryId.trim()) {
23
+ throw new OntologyValidationError2("[Sixb] Object reference primary id must not be empty.");
24
+ }
25
+ return Object.freeze({ objectTypeId: objectType.id, primaryId });
26
+ }
27
+ function isObjectRefSchema2(schema) {
28
+ return typeof schema === "object" && schema !== null && schema.type === "objectRef";
29
+ }
30
+ function validateSchemaOrRefValue2(schema, value, path, valueTypesById) {
31
+ if (isObjectRefSchema2(schema)) {
32
+ validateObjectRefValue(schema, value, path);
33
+ return;
34
+ }
35
+ validateSchemaValue2(schema, value, path, valueTypesById);
36
+ }
37
+ function validateObjectRefValue(schema, value, path) {
38
+ if (!isRecord2(value)) {
39
+ throw new OntologyValidationError2(`[Sixb] Property ${path} must be an objectRef`);
40
+ }
41
+ const allowedFields = new Set(["objectTypeId", "primaryId"]);
42
+ for (const fieldId of Object.keys(value)) {
43
+ if (!allowedFields.has(fieldId)) {
44
+ throw new OntologyValidationError2(`[Sixb] Unknown field '${path}.${fieldId}'`);
45
+ }
46
+ }
47
+ if (value.objectTypeId !== schema.objectTypeId) {
48
+ throw new OntologyValidationError2(`[Sixb] Property ${path}.objectTypeId must be "${schema.objectTypeId}"`);
49
+ }
50
+ if (typeof value.primaryId !== "string") {
51
+ throw new OntologyValidationError2(`[Sixb] Property ${path}.primaryId must be a string`);
52
+ }
53
+ }
54
+
55
+ export { ref2, objectRef2, isObjectRefSchema2, validateSchemaOrRefValue2 };
56
+
57
+ //# debugId=D614EF0CEE8CE16364756E2164756E21