@sixb/core 0.1.7 → 0.1.9

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 (999) hide show
  1. package/dist/actions/delegated-admission.d.ts +24 -0
  2. package/dist/actions/delegated-admission.d.ts.map +1 -0
  3. package/dist/actions/descriptor.d.ts +29 -0
  4. package/dist/actions/descriptor.d.ts.map +1 -0
  5. package/dist/actions/execution.d.ts +5 -5
  6. package/dist/actions/execution.d.ts.map +1 -1
  7. package/dist/actions/index.js +78 -84
  8. package/dist/actions/index.js.map +1 -1
  9. package/dist/actions/request.d.ts.map +1 -1
  10. package/dist/actions/run-authorization.d.ts +20 -0
  11. package/dist/actions/run-authorization.d.ts.map +1 -0
  12. package/dist/actions/run-dispatch.d.ts +3 -1
  13. package/dist/actions/run-dispatch.d.ts.map +1 -1
  14. package/dist/actions/types/context.d.ts +2 -0
  15. package/dist/actions/types/context.d.ts.map +1 -1
  16. package/dist/actions/validation.d.ts +1 -1
  17. package/dist/actions/validation.d.ts.map +1 -1
  18. package/dist/actions/worker.js +33 -37
  19. package/dist/actions/worker.js.map +2 -2
  20. package/dist/agents/adapters.d.ts +8 -125
  21. package/dist/agents/adapters.d.ts.map +1 -1
  22. package/dist/agents/authority.d.ts +1 -1
  23. package/dist/agents/authority.d.ts.map +1 -1
  24. package/dist/agents/{context.d.ts → context/entries.d.ts} +3 -3
  25. package/dist/agents/context/entries.d.ts.map +1 -0
  26. package/dist/agents/context/index.d.ts +4 -0
  27. package/dist/agents/context/index.d.ts.map +1 -0
  28. package/dist/agents/context/index.js +19 -0
  29. package/dist/agents/{streams.js.map → context/index.js.map} +1 -1
  30. package/dist/agents/context-model.d.ts +1 -1
  31. package/dist/agents/context-model.d.ts.map +1 -1
  32. package/dist/agents/context-resolution.d.ts +1 -1
  33. package/dist/agents/context-resolution.d.ts.map +1 -1
  34. package/dist/agents/errors.d.ts +0 -9
  35. package/dist/agents/errors.d.ts.map +1 -1
  36. package/dist/agents/execution.d.ts.map +1 -1
  37. package/dist/agents/identity.d.ts +3 -0
  38. package/dist/agents/identity.d.ts.map +1 -0
  39. package/dist/agents/index.d.ts +7 -7
  40. package/dist/agents/index.d.ts.map +1 -1
  41. package/dist/agents/index.js +193 -205
  42. package/dist/agents/index.js.map +1 -1
  43. package/dist/agents/message.d.ts +5 -6
  44. package/dist/agents/message.d.ts.map +1 -1
  45. package/dist/agents/model-loop.d.ts +4 -0
  46. package/dist/agents/model-loop.d.ts.map +1 -1
  47. package/dist/agents/request.d.ts +1 -1
  48. package/dist/agents/request.d.ts.map +1 -1
  49. package/dist/agents/streams/index.d.ts +4 -0
  50. package/dist/agents/streams/index.d.ts.map +1 -0
  51. package/dist/agents/streams/index.js +20 -0
  52. package/dist/{chunk-y64skrwp.js.map → agents/streams/index.js.map} +1 -1
  53. package/dist/agents/streams/internal.d.ts +3 -0
  54. package/dist/agents/streams/internal.d.ts.map +1 -0
  55. package/dist/agents/streams/internal.js +40 -0
  56. package/dist/agents/{context.js.map → streams/internal.js.map} +1 -1
  57. package/dist/agents/{streams.d.ts → streams/protocol.d.ts} +5 -5
  58. package/dist/agents/streams/protocol.d.ts.map +1 -0
  59. package/dist/agents/tool-definition.d.ts +0 -1
  60. package/dist/agents/tool-definition.d.ts.map +1 -1
  61. package/dist/agents/types.d.ts +1 -1
  62. package/dist/agents/types.d.ts.map +1 -1
  63. package/dist/agents/validation.d.ts +0 -4
  64. package/dist/agents/validation.d.ts.map +1 -1
  65. package/dist/ai-usage/execution.d.ts.map +1 -1
  66. package/dist/auth/index.d.ts +0 -1
  67. package/dist/auth/index.d.ts.map +1 -1
  68. package/dist/auth/index.js +96 -105
  69. package/dist/auth/index.js.map +1 -1
  70. package/dist/auth/strategy.js +8 -9
  71. package/dist/auth/strategy.js.map +1 -1
  72. package/dist/authorization/decision.d.ts +10 -2
  73. package/dist/authorization/decision.d.ts.map +1 -1
  74. package/dist/authorization/grant-kinds.d.ts +2 -1
  75. package/dist/authorization/grant-kinds.d.ts.map +1 -1
  76. package/dist/authorization/index.d.ts +1 -1
  77. package/dist/authorization/index.d.ts.map +1 -1
  78. package/dist/authorization/index.js +51 -53
  79. package/dist/authorization/index.js.map +1 -1
  80. package/dist/blob-storage/browser.js +15 -17
  81. package/dist/blob-storage/browser.js.map +1 -1
  82. package/dist/blob-storage/index.js +36 -38
  83. package/dist/blob-storage/index.js.map +1 -1
  84. package/dist/bootstrap/discovery.d.ts +20 -1
  85. package/dist/bootstrap/discovery.d.ts.map +1 -1
  86. package/dist/bootstrap/index.d.ts +2 -2
  87. package/dist/bootstrap/index.d.ts.map +1 -1
  88. package/dist/bootstrap/index.js +79 -81
  89. package/dist/bootstrap/index.js.map +1 -1
  90. package/dist/bootstrap/ontology-type-manifest.d.ts.map +1 -1
  91. package/dist/broker/index.js +8 -10
  92. package/dist/broker/index.js.map +1 -1
  93. package/dist/{chunk-k34z5rvh.js → chunk-0rdrecsb.js} +18 -18
  94. package/dist/{chunk-k34z5rvh.js.map → chunk-0rdrecsb.js.map} +2 -2
  95. package/dist/{chunk-3fqt22c4.js → chunk-0w35wavj.js} +360 -168
  96. package/dist/chunk-0w35wavj.js.map +14 -0
  97. package/dist/chunk-0y39rgsb.js +43 -0
  98. package/dist/{chunk-c15dr03f.js.map → chunk-0y39rgsb.js.map} +2 -2
  99. package/dist/{chunk-hdz94br2.js → chunk-17kfctj6.js} +23 -13
  100. package/dist/chunk-17kfctj6.js.map +10 -0
  101. package/dist/{chunk-e4rvtvpw.js → chunk-1enhpacz.js} +418 -233
  102. package/dist/chunk-1enhpacz.js.map +34 -0
  103. package/dist/{chunk-5gd7tpv6.js → chunk-2c4j899j.js} +4 -4
  104. package/dist/{chunk-5gd7tpv6.js.map → chunk-2c4j899j.js.map} +2 -2
  105. package/dist/{chunk-7ds9620f.js → chunk-38zv5rkr.js} +24 -8
  106. package/dist/chunk-38zv5rkr.js.map +10 -0
  107. package/dist/{chunk-w3e09qqk.js → chunk-39tqv9hz.js} +24 -24
  108. package/dist/{chunk-w3e09qqk.js.map → chunk-39tqv9hz.js.map} +2 -2
  109. package/dist/{chunk-04b07a9q.js → chunk-3bh94gbw.js} +13 -13
  110. package/dist/{chunk-04b07a9q.js.map → chunk-3bh94gbw.js.map} +2 -2
  111. package/dist/{chunk-8m5ejdpn.js → chunk-3f7veca0.js} +4 -4
  112. package/dist/{chunk-8m5ejdpn.js.map → chunk-3f7veca0.js.map} +2 -2
  113. package/dist/chunk-3frsnm7x.js +32 -0
  114. package/dist/chunk-3frsnm7x.js.map +11 -0
  115. package/dist/{chunk-n2w475r0.js → chunk-3tgwrcyh.js} +81 -81
  116. package/dist/{chunk-n2w475r0.js.map → chunk-3tgwrcyh.js.map} +2 -2
  117. package/dist/{chunk-qv38twt8.js → chunk-52hbv0ak.js} +192 -171
  118. package/dist/{chunk-qv38twt8.js.map → chunk-52hbv0ak.js.map} +6 -6
  119. package/dist/{chunk-nf4r78r4.js → chunk-5a4a52tq.js} +4 -4
  120. package/dist/{chunk-nf4r78r4.js.map → chunk-5a4a52tq.js.map} +2 -2
  121. package/dist/{chunk-rte5sm3z.js → chunk-5hz0fnca.js} +23 -23
  122. package/dist/{chunk-rte5sm3z.js.map → chunk-5hz0fnca.js.map} +2 -2
  123. package/dist/chunk-653vwrzr.js +39 -0
  124. package/dist/chunk-653vwrzr.js.map +10 -0
  125. package/dist/{chunk-qw9gvjv5.js → chunk-72w2pxk7.js} +13 -13
  126. package/dist/{chunk-qw9gvjv5.js.map → chunk-72w2pxk7.js.map} +2 -2
  127. package/dist/chunk-7apz6hg4.js +50 -0
  128. package/dist/{chunk-jq43kdvk.js.map → chunk-7apz6hg4.js.map} +2 -2
  129. package/dist/chunk-7bs40fe1.js +218 -0
  130. package/dist/{chunk-08twe8m6.js.map → chunk-7bs40fe1.js.map} +3 -3
  131. package/dist/chunk-7zgecwy1.js +113 -0
  132. package/dist/chunk-7zgecwy1.js.map +10 -0
  133. package/dist/{chunk-tn7xcs2n.js → chunk-860dwwy0.js} +93 -30
  134. package/dist/chunk-860dwwy0.js.map +14 -0
  135. package/dist/chunk-8vj0rjgs.js +165 -0
  136. package/dist/chunk-8vj0rjgs.js.map +15 -0
  137. package/dist/{chunk-7y0f6rf1.js → chunk-92vk7gta.js} +58 -58
  138. package/dist/chunk-92vk7gta.js.map +10 -0
  139. package/dist/{chunk-gbrpsx4m.js → chunk-93csa55g.js} +72 -16
  140. package/dist/chunk-93csa55g.js.map +11 -0
  141. package/dist/{chunk-d8qkxt2v.js → chunk-98cw09sw.js} +7 -7
  142. package/dist/chunk-98cw09sw.js.map +10 -0
  143. package/dist/chunk-9qsh3p5y.js +111 -0
  144. package/dist/chunk-9qsh3p5y.js.map +11 -0
  145. package/dist/{chunk-4a849fr1.js → chunk-9tc8dxmn.js} +1 -1
  146. package/dist/{chunk-z2sery1b.js → chunk-9vx5e9g1.js} +68 -28
  147. package/dist/chunk-9vx5e9g1.js.map +11 -0
  148. package/dist/{chunk-9aehf39w.js → chunk-an5tt9y0.js} +353 -353
  149. package/dist/{chunk-9aehf39w.js.map → chunk-an5tt9y0.js.map} +2 -2
  150. package/dist/{chunk-x0qhkqje.js → chunk-ap0g1g74.js} +37 -37
  151. package/dist/{chunk-x0qhkqje.js.map → chunk-ap0g1g74.js.map} +2 -2
  152. package/dist/chunk-awbhdqyc.js +252 -0
  153. package/dist/chunk-awbhdqyc.js.map +10 -0
  154. package/dist/{chunk-ka3a2ft3.js → chunk-b19g04jk.js} +12 -12
  155. package/dist/{chunk-ka3a2ft3.js.map → chunk-b19g04jk.js.map} +2 -2
  156. package/dist/chunk-br3k6qbf.js +436 -0
  157. package/dist/chunk-br3k6qbf.js.map +12 -0
  158. package/dist/{chunk-dbc80ad7.js → chunk-c5rkjrgp.js} +28 -28
  159. package/dist/{chunk-dbc80ad7.js.map → chunk-c5rkjrgp.js.map} +2 -2
  160. package/dist/{chunk-dktq02ne.js → chunk-cqr3acm1.js} +4 -4
  161. package/dist/{chunk-dktq02ne.js.map → chunk-cqr3acm1.js.map} +2 -2
  162. package/dist/chunk-d62kjtbg.js +7 -0
  163. package/dist/{chunk-zcnhxkvd.js.map → chunk-d62kjtbg.js.map} +2 -2
  164. package/dist/{chunk-74drx9gd.js → chunk-dfm066qg.js} +10 -10
  165. package/dist/{chunk-74drx9gd.js.map → chunk-dfm066qg.js.map} +2 -2
  166. package/dist/{chunk-atmkaf60.js → chunk-dmn70ztd.js} +30 -34
  167. package/dist/chunk-dmn70ztd.js.map +11 -0
  168. package/dist/chunk-dz5h08xv.js +1887 -0
  169. package/dist/chunk-dz5h08xv.js.map +25 -0
  170. package/dist/{chunk-p2vqaxkc.js → chunk-e0d1rzef.js} +27 -22
  171. package/dist/{chunk-p2vqaxkc.js.map → chunk-e0d1rzef.js.map} +3 -3
  172. package/dist/{chunk-5sz8ta9r.js → chunk-e1c18xjx.js} +52 -52
  173. package/dist/{chunk-5sz8ta9r.js.map → chunk-e1c18xjx.js.map} +2 -2
  174. package/dist/{chunk-ha58tjtt.js → chunk-emyyk7dx.js} +59 -55
  175. package/dist/{chunk-ha58tjtt.js.map → chunk-emyyk7dx.js.map} +3 -3
  176. package/dist/{chunk-3kv70xwp.js → chunk-ey1nk510.js} +18 -2
  177. package/dist/chunk-ey1nk510.js.map +10 -0
  178. package/dist/chunk-f0rwz2vh.js +152 -0
  179. package/dist/chunk-f0rwz2vh.js.map +11 -0
  180. package/dist/{chunk-2xns679x.js → chunk-f4w3yp4f.js} +171 -36
  181. package/dist/chunk-f4w3yp4f.js.map +12 -0
  182. package/dist/{chunk-979ww6b3.js → chunk-fb3feg1e.js} +29 -29
  183. package/dist/{chunk-979ww6b3.js.map → chunk-fb3feg1e.js.map} +2 -2
  184. package/dist/{chunk-rre42skh.js → chunk-g00bfdq6.js} +729 -296
  185. package/dist/{chunk-rre42skh.js.map → chunk-g00bfdq6.js.map} +11 -7
  186. package/dist/{chunk-p03r0h5s.js → chunk-g53f0e4j.js} +76 -202
  187. package/dist/chunk-g53f0e4j.js.map +15 -0
  188. package/dist/chunk-g6cke204.js +124 -0
  189. package/dist/chunk-g6cke204.js.map +10 -0
  190. package/dist/{chunk-51fjndv0.js → chunk-gfdh9kqa.js} +4 -4
  191. package/dist/{chunk-51fjndv0.js.map → chunk-gfdh9kqa.js.map} +2 -2
  192. package/dist/chunk-h1gfhhbh.js +602 -0
  193. package/dist/chunk-h1gfhhbh.js.map +18 -0
  194. package/dist/chunk-h3v76ams.js +32 -0
  195. package/dist/{chunk-08m3b6w8.js.map → chunk-h3v76ams.js.map} +2 -2
  196. package/dist/chunk-hpr1r6av.js +4006 -0
  197. package/dist/chunk-hpr1r6av.js.map +44 -0
  198. package/dist/{chunk-jecn6t54.js → chunk-jgwb25gc.js} +74 -74
  199. package/dist/{chunk-jecn6t54.js.map → chunk-jgwb25gc.js.map} +2 -2
  200. package/dist/{chunk-rp1mvzb4.js → chunk-jjy0fhrn.js} +40 -35
  201. package/dist/{chunk-rp1mvzb4.js.map → chunk-jjy0fhrn.js.map} +3 -3
  202. package/dist/{chunk-4nxeacx7.js → chunk-jmfet9r4.js} +6 -6
  203. package/dist/{chunk-4nxeacx7.js.map → chunk-jmfet9r4.js.map} +2 -2
  204. package/dist/{chunk-64sr682n.js → chunk-k3cqkkn2.js} +61 -55
  205. package/dist/chunk-k3cqkkn2.js.map +12 -0
  206. package/dist/{chunk-s5y30bc9.js → chunk-kxwa347f.js} +51 -49
  207. package/dist/{chunk-s5y30bc9.js.map → chunk-kxwa347f.js.map} +4 -4
  208. package/dist/{chunk-2ab72m2h.js → chunk-m2ca93my.js} +3 -3
  209. package/dist/{chunk-2ab72m2h.js.map → chunk-m2ca93my.js.map} +2 -2
  210. package/dist/{chunk-qjycjdj6.js → chunk-m3z3x9v0.js} +106 -65
  211. package/dist/{chunk-qjycjdj6.js.map → chunk-m3z3x9v0.js.map} +3 -3
  212. package/dist/{chunk-6ed5bwnd.js → chunk-mjbk2djy.js} +2092 -1714
  213. package/dist/chunk-mjbk2djy.js.map +57 -0
  214. package/dist/{chunk-5jcdmjam.js → chunk-mmagke4x.js} +6 -6
  215. package/dist/{chunk-5jcdmjam.js.map → chunk-mmagke4x.js.map} +2 -2
  216. package/dist/chunk-mrp7k0pw.js +147 -0
  217. package/dist/chunk-mrp7k0pw.js.map +10 -0
  218. package/dist/{chunk-d63tybny.js → chunk-ms2tmn1k.js} +139 -139
  219. package/dist/{chunk-d63tybny.js.map → chunk-ms2tmn1k.js.map} +2 -2
  220. package/dist/{chunk-xdpwpkha.js → chunk-ppytyr6w.js} +156 -179
  221. package/dist/{chunk-xdpwpkha.js.map → chunk-ppytyr6w.js.map} +3 -5
  222. package/dist/{chunk-trxxmgnf.js → chunk-pqajwytd.js} +10 -10
  223. package/dist/{chunk-trxxmgnf.js.map → chunk-pqajwytd.js.map} +3 -3
  224. package/dist/{chunk-qjzp9xyb.js → chunk-pr2h4bv4.js} +33 -35
  225. package/dist/chunk-pr2h4bv4.js.map +12 -0
  226. package/dist/{chunk-xwnf87e1.js → chunk-q5gz3g2j.js} +64 -64
  227. package/dist/{chunk-xwnf87e1.js.map → chunk-q5gz3g2j.js.map} +2 -2
  228. package/dist/{chunk-agsvg9ar.js → chunk-qf954wje.js} +6 -6
  229. package/dist/{chunk-agsvg9ar.js.map → chunk-qf954wje.js.map} +2 -2
  230. package/dist/{chunk-wjgm6jjt.js → chunk-qhcpj9wc.js} +166 -132
  231. package/dist/chunk-qhcpj9wc.js.map +14 -0
  232. package/dist/{chunk-tpnd31c1.js → chunk-r29fxdhn.js} +12 -12
  233. package/dist/{chunk-tpnd31c1.js.map → chunk-r29fxdhn.js.map} +2 -2
  234. package/dist/{chunk-b49dgvsj.js → chunk-r2y23egw.js} +3 -3
  235. package/dist/{chunk-b49dgvsj.js.map → chunk-r2y23egw.js.map} +2 -2
  236. package/dist/{chunk-2b5qtban.js → chunk-r4tfx1sf.js} +142 -89
  237. package/dist/chunk-r4tfx1sf.js.map +15 -0
  238. package/dist/{chunk-4rh2m6zg.js → chunk-rb1xx120.js} +13 -13
  239. package/dist/{chunk-4rh2m6zg.js.map → chunk-rb1xx120.js.map} +2 -2
  240. package/dist/chunk-s3csryxe.js +152 -0
  241. package/dist/chunk-s3csryxe.js.map +11 -0
  242. package/dist/chunk-s670k14v.js +60 -0
  243. package/dist/{chunk-407j3msh.js.map → chunk-s670k14v.js.map} +2 -2
  244. package/dist/chunk-skz0hst3.js +788 -0
  245. package/dist/chunk-skz0hst3.js.map +19 -0
  246. package/dist/chunk-v4jbb3rs.js +403 -0
  247. package/dist/chunk-v4jbb3rs.js.map +10 -0
  248. package/dist/{chunk-d2ndstdf.js → chunk-vf691g1r.js} +61 -59
  249. package/dist/{chunk-d2ndstdf.js.map → chunk-vf691g1r.js.map} +2 -2
  250. package/dist/{chunk-1kamz6j0.js → chunk-vsj3mdfj.js} +8 -8
  251. package/dist/{chunk-1kamz6j0.js.map → chunk-vsj3mdfj.js.map} +2 -2
  252. package/dist/{chunk-9dzba0f2.js → chunk-wjasrj67.js} +8 -8
  253. package/dist/{chunk-9dzba0f2.js.map → chunk-wjasrj67.js.map} +2 -2
  254. package/dist/{chunk-1evzqhks.js → chunk-wr8qp979.js} +6 -6
  255. package/dist/{chunk-1evzqhks.js.map → chunk-wr8qp979.js.map} +2 -2
  256. package/dist/{chunk-n6jxh8sw.js → chunk-wy0qdqfm.js} +18 -18
  257. package/dist/{chunk-n6jxh8sw.js.map → chunk-wy0qdqfm.js.map} +2 -2
  258. package/dist/{chunk-8tsf6dmc.js → chunk-x57ycxq0.js} +204 -204
  259. package/dist/{chunk-8tsf6dmc.js.map → chunk-x57ycxq0.js.map} +2 -2
  260. package/dist/chunk-x9v4cx1d.js +139 -0
  261. package/dist/chunk-x9v4cx1d.js.map +10 -0
  262. package/dist/{chunk-kt81c11h.js → chunk-xfbydgzy.js} +27 -27
  263. package/dist/{chunk-kt81c11h.js.map → chunk-xfbydgzy.js.map} +2 -2
  264. package/dist/{chunk-vjjv9mrb.js → chunk-xyr8kppc.js} +22 -22
  265. package/dist/{chunk-vjjv9mrb.js.map → chunk-xyr8kppc.js.map} +3 -3
  266. package/dist/chunk-ypbtykv6.js +1537 -0
  267. package/dist/chunk-ypbtykv6.js.map +19 -0
  268. package/dist/{chunk-ry24jbr1.js → chunk-yv79ncbv.js} +10 -10
  269. package/dist/{chunk-ry24jbr1.js.map → chunk-yv79ncbv.js.map} +2 -2
  270. package/dist/{chunk-xc7hq65b.js → chunk-z30bv4ga.js} +80 -33
  271. package/dist/chunk-z30bv4ga.js.map +11 -0
  272. package/dist/{chunk-8ydjhh27.js → chunk-z3y411fq.js} +11 -7
  273. package/dist/{chunk-8ydjhh27.js.map → chunk-z3y411fq.js.map} +3 -3
  274. package/dist/{chunk-9t8f5xfx.js → chunk-z5rnrmz1.js} +10 -10
  275. package/dist/{chunk-9t8f5xfx.js.map → chunk-z5rnrmz1.js.map} +2 -2
  276. package/dist/{chunk-96swp2wd.js → chunk-z667z3sg.js} +3 -3
  277. package/dist/{chunk-96swp2wd.js.map → chunk-z667z3sg.js.map} +2 -2
  278. package/dist/chunk-z8fx5cgb.js +159 -0
  279. package/dist/chunk-z8fx5cgb.js.map +11 -0
  280. package/dist/{chunk-xhy826cz.js → chunk-zcnq6105.js} +7 -7
  281. package/dist/{chunk-xhy826cz.js.map → chunk-zcnq6105.js.map} +2 -2
  282. package/dist/{chunk-yt8wphsx.js → chunk-zvx7h87b.js} +3 -3
  283. package/dist/{chunk-yt8wphsx.js.map → chunk-zvx7h87b.js.map} +2 -2
  284. package/dist/connectors/connections/internal.js +9 -10
  285. package/dist/connectors/connections/internal.js.map +1 -1
  286. package/dist/datasets/builders.d.ts +11 -2
  287. package/dist/datasets/builders.d.ts.map +1 -1
  288. package/dist/datasets/changes.d.ts +14 -4
  289. package/dist/datasets/changes.d.ts.map +1 -1
  290. package/dist/datasets/execution.d.ts +15 -1
  291. package/dist/datasets/execution.d.ts.map +1 -1
  292. package/dist/datasets/index.d.ts +1 -0
  293. package/dist/datasets/index.d.ts.map +1 -1
  294. package/dist/datasets/sequence.d.ts +7 -0
  295. package/dist/datasets/sequence.d.ts.map +1 -0
  296. package/dist/datasets/types.d.ts +1 -0
  297. package/dist/datasets/types.d.ts.map +1 -1
  298. package/dist/datasets/validation.d.ts.map +1 -1
  299. package/dist/datasets/write.d.ts +37 -0
  300. package/dist/datasets/write.d.ts.map +1 -0
  301. package/dist/datasets/write.js +13 -0
  302. package/dist/datasets/write.js.map +9 -0
  303. package/dist/edits/index.js +7 -8
  304. package/dist/edits/index.js.map +1 -1
  305. package/dist/error-reporting/internal.js +22 -24
  306. package/dist/error-reporting/internal.js.map +1 -1
  307. package/dist/errors/internal.d.ts +1 -1
  308. package/dist/errors/internal.d.ts.map +1 -1
  309. package/dist/errors/internal.js +22 -24
  310. package/dist/errors/internal.js.map +1 -1
  311. package/dist/errors/redaction.d.ts +8 -0
  312. package/dist/errors/redaction.d.ts.map +1 -0
  313. package/dist/errors/types.d.ts +4 -0
  314. package/dist/errors/types.d.ts.map +1 -1
  315. package/dist/events/execution.d.ts.map +1 -1
  316. package/dist/events/index.js +60 -63
  317. package/dist/events/index.js.map +1 -1
  318. package/dist/events/scope.js +4 -5
  319. package/dist/events/scope.js.map +1 -1
  320. package/dist/events/selectors/index.js +9 -10
  321. package/dist/events/selectors/index.js.map +1 -1
  322. package/dist/events/types/datasets.d.ts +2 -6
  323. package/dist/events/types/datasets.d.ts.map +1 -1
  324. package/dist/execution/agent.d.ts +3 -3
  325. package/dist/execution/agent.d.ts.map +1 -1
  326. package/dist/execution/agent.js +70 -75
  327. package/dist/execution/agent.js.map +1 -1
  328. package/dist/execution/authorization.d.ts +58 -20
  329. package/dist/execution/authorization.d.ts.map +1 -1
  330. package/dist/execution/authorized-object-reader.d.ts +69 -0
  331. package/dist/execution/authorized-object-reader.d.ts.map +1 -0
  332. package/dist/execution/durable.d.ts +1 -0
  333. package/dist/execution/durable.d.ts.map +1 -1
  334. package/dist/execution/index.d.ts +1 -1
  335. package/dist/execution/index.d.ts.map +1 -1
  336. package/dist/execution/primitive.d.ts +2 -0
  337. package/dist/execution/primitive.d.ts.map +1 -1
  338. package/dist/execution/primitive.js +63 -64
  339. package/dist/execution/primitive.js.map +3 -3
  340. package/dist/execution/request.d.ts +12 -0
  341. package/dist/execution/request.d.ts.map +1 -1
  342. package/dist/execution/request.js +97 -71
  343. package/dist/execution/request.js.map +3 -3
  344. package/dist/execution/scopes.d.ts +16 -0
  345. package/dist/execution/scopes.d.ts.map +1 -1
  346. package/dist/execution/types.d.ts +9 -0
  347. package/dist/execution/types.d.ts.map +1 -1
  348. package/dist/http/api-routes.d.ts +2 -0
  349. package/dist/http/api-routes.d.ts.map +1 -1
  350. package/dist/http/index.js +10 -11
  351. package/dist/http/index.js.map +1 -1
  352. package/dist/index.d.ts +21 -14
  353. package/dist/index.d.ts.map +1 -1
  354. package/dist/index.js +455 -463
  355. package/dist/index.js.map +1 -1
  356. package/dist/lake-storage/definition-updates.d.ts.map +1 -1
  357. package/dist/lake-storage/errors.d.ts +5 -1
  358. package/dist/lake-storage/errors.d.ts.map +1 -1
  359. package/dist/lake-storage/in-memory.d.ts +1 -0
  360. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  361. package/dist/lake-storage/index.d.ts +6 -1
  362. package/dist/lake-storage/index.d.ts.map +1 -1
  363. package/dist/lake-storage/index.js +40 -27
  364. package/dist/lake-storage/index.js.map +1 -1
  365. package/dist/lake-storage/merge-validation.d.ts.map +1 -1
  366. package/dist/lake-storage/merge.d.ts +13 -2
  367. package/dist/lake-storage/merge.d.ts.map +1 -1
  368. package/dist/lake-storage/source-ordering.d.ts +19 -0
  369. package/dist/lake-storage/source-ordering.d.ts.map +1 -0
  370. package/dist/lake-storage/sql-transforms.d.ts +2 -1
  371. package/dist/lake-storage/sql-transforms.d.ts.map +1 -1
  372. package/dist/lake-storage/types.d.ts +10 -5
  373. package/dist/lake-storage/types.d.ts.map +1 -1
  374. package/dist/lake-storage/version-inputs.d.ts +4 -0
  375. package/dist/lake-storage/version-inputs.d.ts.map +1 -0
  376. package/dist/logging/index.d.ts +3 -4
  377. package/dist/logging/index.d.ts.map +1 -1
  378. package/dist/logging/index.js +18 -40
  379. package/dist/logging/index.js.map +1 -1
  380. package/dist/logging/internal.d.ts +5 -0
  381. package/dist/logging/internal.d.ts.map +1 -0
  382. package/dist/logging/internal.js +43 -0
  383. package/dist/logging/internal.js.map +9 -0
  384. package/dist/materialization/index.js +46 -49
  385. package/dist/materialization/index.js.map +1 -1
  386. package/dist/materializer/index.js +137 -142
  387. package/dist/materializer/index.js.map +1 -1
  388. package/dist/models/errors.d.ts +4 -0
  389. package/dist/models/errors.d.ts.map +1 -1
  390. package/dist/models/execution/binding.d.ts +9 -0
  391. package/dist/models/execution/binding.d.ts.map +1 -0
  392. package/dist/models/execution/errors.d.ts +9 -0
  393. package/dist/models/execution/errors.d.ts.map +1 -0
  394. package/dist/models/execution/index.d.ts +11 -0
  395. package/dist/models/execution/index.d.ts.map +1 -0
  396. package/dist/models/execution/index.js +55 -0
  397. package/dist/models/execution/index.js.map +9 -0
  398. package/dist/models/execution/model-call-accounting.d.ts +17 -0
  399. package/dist/models/execution/model-call-accounting.d.ts.map +1 -0
  400. package/dist/models/execution/model-call-admission.d.ts +47 -0
  401. package/dist/models/execution/model-call-admission.d.ts.map +1 -0
  402. package/dist/models/execution/model-call-limits.d.ts +15 -0
  403. package/dist/models/execution/model-call-limits.d.ts.map +1 -0
  404. package/dist/models/execution/model-call-recorder.d.ts +40 -0
  405. package/dist/models/execution/model-call-recorder.d.ts.map +1 -0
  406. package/dist/models/execution/model-call-recovery.d.ts +12 -0
  407. package/dist/models/execution/model-call-recovery.d.ts.map +1 -0
  408. package/dist/models/execution/recovery-queue.d.ts +5 -0
  409. package/dist/models/execution/recovery-queue.d.ts.map +1 -0
  410. package/dist/models/execution/types.d.ts +44 -0
  411. package/dist/models/execution/types.d.ts.map +1 -0
  412. package/dist/models/execution/usage.d.ts +5 -0
  413. package/dist/models/execution/usage.d.ts.map +1 -0
  414. package/dist/models/execution.d.ts +6 -0
  415. package/dist/models/execution.d.ts.map +1 -0
  416. package/dist/models/generation-types.d.ts +40 -0
  417. package/dist/models/generation-types.d.ts.map +1 -0
  418. package/dist/models/index.d.ts +1 -0
  419. package/dist/models/index.d.ts.map +1 -1
  420. package/dist/models/index.js +42 -43
  421. package/dist/models/index.js.map +1 -1
  422. package/dist/models/language-model.d.ts +3 -0
  423. package/dist/models/language-model.d.ts.map +1 -1
  424. package/dist/models/output.d.ts +5 -0
  425. package/dist/models/output.d.ts.map +1 -0
  426. package/dist/models/resolve.d.ts +4 -0
  427. package/dist/models/resolve.d.ts.map +1 -0
  428. package/dist/objects/authorized-ontology-view.d.ts +25 -0
  429. package/dist/objects/authorized-ontology-view.d.ts.map +1 -0
  430. package/dist/objects/execution.d.ts +1 -1
  431. package/dist/objects/execution.d.ts.map +1 -1
  432. package/dist/objects/index.js +75 -84
  433. package/dist/objects/index.js.map +1 -1
  434. package/dist/objects/link/authorization.d.ts +2 -7
  435. package/dist/objects/link/authorization.d.ts.map +1 -1
  436. package/dist/objects/query/executor.d.ts +4 -2
  437. package/dist/objects/query/executor.d.ts.map +1 -1
  438. package/dist/objects/query/index.js +67 -73
  439. package/dist/objects/query/index.js.map +1 -1
  440. package/dist/objects/query/links.d.ts +22 -1
  441. package/dist/objects/query/links.d.ts.map +1 -1
  442. package/dist/objects/query/selected-read-admission.d.ts +27 -0
  443. package/dist/objects/query/selected-read-admission.d.ts.map +1 -0
  444. package/dist/objects/query/validate.d.ts +60 -2
  445. package/dist/objects/query/validate.d.ts.map +1 -1
  446. package/dist/objects/sdk/object-handle.d.ts.map +1 -1
  447. package/dist/objects/sdk/object-set.d.ts.map +1 -1
  448. package/dist/objects/sdk/runtime-query-executor.d.ts +2 -7
  449. package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
  450. package/dist/objects/sdk/telemetry-channel.d.ts.map +1 -1
  451. package/dist/objects/service/list-service.d.ts +2 -3
  452. package/dist/objects/service/list-service.d.ts.map +1 -1
  453. package/dist/objects/telemetry/history.d.ts +8 -6
  454. package/dist/objects/telemetry/history.d.ts.map +1 -1
  455. package/dist/objects/telemetry/index.d.ts +2 -2
  456. package/dist/objects/telemetry/index.d.ts.map +1 -1
  457. package/dist/objects/telemetry/workload.d.ts +11 -0
  458. package/dist/objects/telemetry/workload.d.ts.map +1 -0
  459. package/dist/ontology/index.d.ts +2 -2
  460. package/dist/ontology/index.d.ts.map +1 -1
  461. package/dist/ontology/index.js +61 -111
  462. package/dist/ontology/index.js.map +1 -1
  463. package/dist/ontology/inference/index.d.ts +2 -1
  464. package/dist/ontology/inference/index.d.ts.map +1 -1
  465. package/dist/ontology/internal.d.ts +7 -1
  466. package/dist/ontology/internal.d.ts.map +1 -1
  467. package/dist/ontology/internal.js +65 -121
  468. package/dist/ontology/internal.js.map +3 -4
  469. package/dist/ontology/json-schema.d.ts +10 -6
  470. package/dist/ontology/json-schema.d.ts.map +1 -1
  471. package/dist/ontology/link-path-selection.d.ts +35 -0
  472. package/dist/ontology/link-path-selection.d.ts.map +1 -0
  473. package/dist/ontology/refs.d.ts +2 -0
  474. package/dist/ontology/refs.d.ts.map +1 -1
  475. package/dist/ontology/tokens.d.ts +2 -1
  476. package/dist/ontology/tokens.d.ts.map +1 -1
  477. package/dist/pipelines/execution.d.ts.map +1 -1
  478. package/dist/pipelines/index.js +57 -63
  479. package/dist/pipelines/index.js.map +1 -1
  480. package/dist/pipelines/request.d.ts.map +1 -1
  481. package/dist/projections/execution.d.ts.map +1 -1
  482. package/dist/projections/internal.js +58 -64
  483. package/dist/projections/internal.js.map +1 -1
  484. package/dist/projections/run-dispatch.d.ts.map +1 -1
  485. package/dist/query.d.ts +0 -1
  486. package/dist/query.d.ts.map +1 -1
  487. package/dist/query.js +11 -15
  488. package/dist/query.js.map +1 -1
  489. package/dist/queues/index.d.ts +2 -1
  490. package/dist/queues/index.d.ts.map +1 -1
  491. package/dist/queues/index.js +6 -7
  492. package/dist/queues/index.js.map +1 -1
  493. package/dist/queues/types.d.ts +3 -20
  494. package/dist/queues/types.d.ts.map +1 -1
  495. package/dist/rules/execution.d.ts.map +1 -1
  496. package/dist/rules/internal.js +4 -5
  497. package/dist/rules/internal.js.map +1 -1
  498. package/dist/runtime/create.d.ts +6 -2
  499. package/dist/runtime/create.d.ts.map +1 -1
  500. package/dist/runtime/definitions.d.ts +2 -0
  501. package/dist/runtime/definitions.d.ts.map +1 -1
  502. package/dist/runtime/host.d.ts +4 -1
  503. package/dist/runtime/host.d.ts.map +1 -1
  504. package/dist/runtime/internal.d.ts +1 -0
  505. package/dist/runtime/internal.d.ts.map +1 -1
  506. package/dist/runtime/internal.js +13 -14
  507. package/dist/runtime/internal.js.map +1 -1
  508. package/dist/runtime/resolve-definitions.d.ts +2 -0
  509. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  510. package/dist/runtime/sixb.d.ts +6 -0
  511. package/dist/runtime/sixb.d.ts.map +1 -1
  512. package/dist/runtime/types.d.ts +3 -0
  513. package/dist/runtime/types.d.ts.map +1 -1
  514. package/dist/sandboxes/errors.d.ts +4 -0
  515. package/dist/sandboxes/errors.d.ts.map +1 -1
  516. package/dist/sandboxes/index.d.ts +2 -2
  517. package/dist/sandboxes/index.d.ts.map +1 -1
  518. package/dist/sandboxes/index.js +14 -13
  519. package/dist/sandboxes/index.js.map +1 -1
  520. package/dist/sandboxes/sandbox.d.ts +35 -7
  521. package/dist/sandboxes/sandbox.d.ts.map +1 -1
  522. package/dist/scheduler/index.js +9 -10
  523. package/dist/scheduler/index.js.map +1 -1
  524. package/dist/schedules/execution.d.ts +2 -1
  525. package/dist/schedules/execution.d.ts.map +1 -1
  526. package/dist/schedules/index.js +31 -33
  527. package/dist/schedules/index.js.map +1 -1
  528. package/dist/security/every.d.ts +4 -1
  529. package/dist/security/every.d.ts.map +1 -1
  530. package/dist/security/grants.d.ts +7 -2
  531. package/dist/security/grants.d.ts.map +1 -1
  532. package/dist/security/index.d.ts +1 -1
  533. package/dist/security/index.d.ts.map +1 -1
  534. package/dist/security/registry.d.ts +1 -0
  535. package/dist/security/registry.d.ts.map +1 -1
  536. package/dist/security/types.d.ts +7 -1
  537. package/dist/security/types.d.ts.map +1 -1
  538. package/dist/security/validation.d.ts +2 -0
  539. package/dist/security/validation.d.ts.map +1 -1
  540. package/dist/shares/access-plan.d.ts +22 -0
  541. package/dist/shares/access-plan.d.ts.map +1 -0
  542. package/dist/shares/builders.d.ts +14 -0
  543. package/dist/shares/builders.d.ts.map +1 -0
  544. package/dist/shares/compiler.d.ts +14 -0
  545. package/dist/shares/compiler.d.ts.map +1 -0
  546. package/dist/shares/errors.d.ts +4 -0
  547. package/dist/shares/errors.d.ts.map +1 -0
  548. package/dist/shares/execution.d.ts +57 -0
  549. package/dist/shares/execution.d.ts.map +1 -0
  550. package/dist/shares/index.d.ts +10 -0
  551. package/dist/shares/index.d.ts.map +1 -0
  552. package/dist/shares/internal.d.ts +3 -0
  553. package/dist/shares/internal.d.ts.map +1 -0
  554. package/dist/shares/internal.js +231 -0
  555. package/dist/shares/internal.js.map +10 -0
  556. package/dist/shares/intersection.d.ts +9 -0
  557. package/dist/shares/intersection.d.ts.map +1 -0
  558. package/dist/shares/session-protocol.d.ts +41 -0
  559. package/dist/shares/session-protocol.d.ts.map +1 -0
  560. package/dist/shares/types.d.ts +51 -0
  561. package/dist/shares/types.d.ts.map +1 -0
  562. package/dist/shares/validation.d.ts +11 -0
  563. package/dist/shares/validation.d.ts.map +1 -0
  564. package/dist/storage/action-runs/failure.js +7 -9
  565. package/dist/storage/action-runs/failure.js.map +1 -1
  566. package/dist/storage/action-runs/provider.js +4 -8
  567. package/dist/storage/action-runs/provider.js.map +1 -1
  568. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  569. package/dist/storage/agents/provider.js +26 -30
  570. package/dist/storage/agents/provider.js.map +1 -1
  571. package/dist/storage/agents/types.d.ts +0 -3
  572. package/dist/storage/agents/types.d.ts.map +1 -1
  573. package/dist/storage/ai-cost/attribution.d.ts +4 -0
  574. package/dist/storage/ai-cost/attribution.d.ts.map +1 -0
  575. package/dist/storage/ai-cost/groups.d.ts +3 -0
  576. package/dist/storage/ai-cost/groups.d.ts.map +1 -1
  577. package/dist/storage/ai-cost/provider.d.ts +1 -0
  578. package/dist/storage/ai-cost/provider.d.ts.map +1 -1
  579. package/dist/storage/ai-cost/provider.js +30 -143
  580. package/dist/storage/ai-cost/provider.js.map +3 -4
  581. package/dist/storage/ai-cost/types.d.ts +15 -0
  582. package/dist/storage/ai-cost/types.d.ts.map +1 -1
  583. package/dist/storage/ai-limits/enforcement.js +14 -16
  584. package/dist/storage/ai-limits/enforcement.js.map +1 -1
  585. package/dist/storage/ai-limits/provider.js +56 -57
  586. package/dist/storage/ai-limits/provider.js.map +1 -1
  587. package/dist/storage/auth/in-memory.d.ts +1 -1
  588. package/dist/storage/auth/in-memory.d.ts.map +1 -1
  589. package/dist/storage/connector-connections/provider.js +34 -36
  590. package/dist/storage/connector-connections/provider.js.map +2 -2
  591. package/dist/storage/executions/in-memory.d.ts +3 -0
  592. package/dist/storage/executions/in-memory.d.ts.map +1 -1
  593. package/dist/storage/executions/provider.d.ts +6 -2
  594. package/dist/storage/executions/provider.d.ts.map +1 -1
  595. package/dist/storage/executions/provider.js +35 -12
  596. package/dist/storage/executions/provider.js.map +3 -3
  597. package/dist/storage/executions/run-link.d.ts +7 -0
  598. package/dist/storage/executions/run-link.d.ts.map +1 -1
  599. package/dist/storage/executions/types.d.ts +6 -2
  600. package/dist/storage/executions/types.d.ts.map +1 -1
  601. package/dist/storage/executions/validation.d.ts +8 -0
  602. package/dist/storage/executions/validation.d.ts.map +1 -1
  603. package/dist/storage/in-memory/index.d.ts +8 -0
  604. package/dist/storage/in-memory/index.d.ts.map +1 -1
  605. package/dist/storage/index.d.ts +14 -9
  606. package/dist/storage/index.d.ts.map +1 -1
  607. package/dist/storage/index.js +221 -227
  608. package/dist/storage/index.js.map +1 -1
  609. package/dist/storage/internal.d.ts +10 -0
  610. package/dist/storage/internal.d.ts.map +1 -0
  611. package/dist/storage/internal.js +47 -0
  612. package/dist/storage/internal.js.map +9 -0
  613. package/dist/storage/objects/execution-limits.d.ts +25 -0
  614. package/dist/storage/objects/execution-limits.d.ts.map +1 -0
  615. package/dist/storage/objects/guard.d.ts +16 -0
  616. package/dist/storage/objects/guard.d.ts.map +1 -0
  617. package/dist/storage/objects/in-memory/index.d.ts +3 -0
  618. package/dist/storage/objects/in-memory/index.d.ts.map +1 -0
  619. package/dist/storage/objects/in-memory/keys.d.ts +10 -0
  620. package/dist/storage/objects/in-memory/keys.d.ts.map +1 -0
  621. package/dist/storage/objects/in-memory/query.d.ts +31 -0
  622. package/dist/storage/objects/in-memory/query.d.ts.map +1 -0
  623. package/dist/storage/objects/in-memory/read-scope.d.ts +18 -0
  624. package/dist/storage/objects/in-memory/read-scope.d.ts.map +1 -0
  625. package/dist/storage/objects/in-memory/read-source.d.ts +10 -0
  626. package/dist/storage/objects/in-memory/read-source.d.ts.map +1 -0
  627. package/dist/storage/objects/in-memory/selected-reader.d.ts +9 -0
  628. package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -0
  629. package/dist/storage/objects/{in-memory.d.ts → in-memory/storage.d.ts} +13 -10
  630. package/dist/storage/objects/in-memory/storage.d.ts.map +1 -0
  631. package/dist/storage/objects/index.d.ts +4 -1
  632. package/dist/storage/objects/index.d.ts.map +1 -1
  633. package/dist/storage/objects/keys.d.ts +1 -1
  634. package/dist/storage/objects/keys.d.ts.map +1 -1
  635. package/dist/storage/objects/read-scope.d.ts +25 -0
  636. package/dist/storage/objects/read-scope.d.ts.map +1 -0
  637. package/dist/storage/objects/types.d.ts +114 -22
  638. package/dist/storage/objects/types.d.ts.map +1 -1
  639. package/dist/storage/ontology/provider.js +105 -109
  640. package/dist/storage/ontology/provider.js.map +1 -1
  641. package/dist/storage/operation-scope.d.ts +3 -0
  642. package/dist/storage/operation-scope.d.ts.map +1 -1
  643. package/dist/storage/operation-scope.js +18 -17
  644. package/dist/storage/operation-scope.js.map +1 -1
  645. package/dist/storage/pipeline-runs/provider.js +4 -6
  646. package/dist/storage/pipeline-runs/provider.js.map +1 -1
  647. package/dist/storage/projection-runs/provider.js +66 -70
  648. package/dist/storage/projection-runs/provider.js.map +1 -1
  649. package/dist/storage/share-grants/errors.d.ts +8 -0
  650. package/dist/storage/share-grants/errors.d.ts.map +1 -0
  651. package/dist/storage/share-grants/in-memory.d.ts +11 -0
  652. package/dist/storage/share-grants/in-memory.d.ts.map +1 -0
  653. package/dist/storage/share-grants/index.d.ts +5 -0
  654. package/dist/storage/share-grants/index.d.ts.map +1 -0
  655. package/dist/storage/share-grants/provider.d.ts +4 -0
  656. package/dist/storage/share-grants/provider.d.ts.map +1 -0
  657. package/dist/storage/share-grants/provider.js +22 -0
  658. package/dist/storage/share-grants/provider.js.map +9 -0
  659. package/dist/storage/share-grants/record.d.ts +11 -0
  660. package/dist/storage/share-grants/record.d.ts.map +1 -0
  661. package/dist/storage/share-grants/types.d.ts +97 -0
  662. package/dist/storage/share-grants/types.d.ts.map +1 -0
  663. package/dist/storage/share-sessions/errors.d.ts +8 -0
  664. package/dist/storage/share-sessions/errors.d.ts.map +1 -0
  665. package/dist/storage/share-sessions/in-memory.d.ts +14 -0
  666. package/dist/storage/share-sessions/in-memory.d.ts.map +1 -0
  667. package/dist/storage/share-sessions/index.d.ts +5 -0
  668. package/dist/storage/share-sessions/index.d.ts.map +1 -0
  669. package/dist/storage/share-sessions/provider.d.ts +3 -0
  670. package/dist/storage/share-sessions/provider.d.ts.map +1 -0
  671. package/dist/storage/share-sessions/provider.js +19 -0
  672. package/dist/storage/share-sessions/provider.js.map +9 -0
  673. package/dist/storage/share-sessions/record.d.ts +8 -0
  674. package/dist/storage/share-sessions/record.d.ts.map +1 -0
  675. package/dist/storage/share-sessions/types.d.ts +50 -0
  676. package/dist/storage/share-sessions/types.d.ts.map +1 -0
  677. package/dist/storage/sync-runs/provider.js +4 -6
  678. package/dist/storage/sync-runs/provider.js.map +1 -1
  679. package/dist/storage/transaction.d.ts +2 -1
  680. package/dist/storage/transaction.d.ts.map +1 -1
  681. package/dist/storage/types.d.ts +8 -0
  682. package/dist/storage/types.d.ts.map +1 -1
  683. package/dist/storage/webhook-runs/provider.js +4 -6
  684. package/dist/storage/webhook-runs/provider.js.map +1 -1
  685. package/dist/storage/workflow-runs/in-memory.d.ts.map +1 -1
  686. package/dist/storage/workflow-runs/provider.js +13 -18
  687. package/dist/storage/workflow-runs/provider.js.map +1 -1
  688. package/dist/storage/workflow-runs/types.d.ts +0 -3
  689. package/dist/storage/workflow-runs/types.d.ts.map +1 -1
  690. package/dist/syncs/execution.d.ts.map +1 -1
  691. package/dist/syncs/index.js +55 -62
  692. package/dist/syncs/index.js.map +1 -1
  693. package/dist/syncs/request.d.ts.map +1 -1
  694. package/dist/testing/action-execution.d.ts +4 -1
  695. package/dist/testing/action-execution.d.ts.map +1 -1
  696. package/dist/testing/agent-execution.d.ts +1 -0
  697. package/dist/testing/agent-execution.d.ts.map +1 -1
  698. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  699. package/dist/testing/ai-model-call-groups-contract.d.ts.map +1 -1
  700. package/dist/testing/dataset-sequence-contract.d.ts +4 -0
  701. package/dist/testing/dataset-sequence-contract.d.ts.map +1 -0
  702. package/dist/testing/effective-storage-contract.d.ts.map +1 -1
  703. package/dist/testing/execution-storage-contract.d.ts +4 -0
  704. package/dist/testing/execution-storage-contract.d.ts.map +1 -1
  705. package/dist/testing/execution.d.ts +1 -0
  706. package/dist/testing/execution.d.ts.map +1 -1
  707. package/dist/testing/index.d.ts +3 -0
  708. package/dist/testing/index.d.ts.map +1 -1
  709. package/dist/testing/index.js +3087 -1328
  710. package/dist/testing/index.js.map +17 -13
  711. package/dist/testing/lake-merge-storage-contract.d.ts +1 -0
  712. package/dist/testing/lake-merge-storage-contract.d.ts.map +1 -1
  713. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  714. package/dist/testing/object-read-scope-contract.d.ts +22 -0
  715. package/dist/testing/object-read-scope-contract.d.ts.map +1 -0
  716. package/dist/testing/share-grant-storage-contract.d.ts +10 -0
  717. package/dist/testing/share-grant-storage-contract.d.ts.map +1 -0
  718. package/dist/testing/share-session-storage-contract.d.ts +9 -0
  719. package/dist/testing/share-session-storage-contract.d.ts.map +1 -0
  720. package/dist/testing/workflow-execution.d.ts +1 -0
  721. package/dist/testing/workflow-execution.d.ts.map +1 -1
  722. package/dist/webhooks/internal.js +51 -56
  723. package/dist/webhooks/internal.js.map +2 -2
  724. package/dist/workers/index.js +11 -13
  725. package/dist/workers/index.js.map +2 -2
  726. package/dist/workflows/execution.d.ts.map +1 -1
  727. package/dist/workflows/failure.d.ts +2 -0
  728. package/dist/workflows/failure.d.ts.map +1 -1
  729. package/dist/workflows/index.js +135 -140
  730. package/dist/workflows/index.js.map +1 -1
  731. package/dist/workflows/request.d.ts.map +1 -1
  732. package/dist/workflows/run-dispatch.d.ts +0 -1
  733. package/dist/workflows/run-dispatch.d.ts.map +1 -1
  734. package/dist/workflows/types.d.ts +2 -0
  735. package/dist/workflows/types.d.ts.map +1 -1
  736. package/package.json +72 -30
  737. package/src/actions/delegated-admission.ts +72 -0
  738. package/src/actions/descriptor.ts +58 -0
  739. package/src/actions/execution.ts +99 -24
  740. package/src/actions/request.ts +136 -19
  741. package/src/actions/run-authorization.ts +53 -0
  742. package/src/actions/run-dispatch.ts +10 -7
  743. package/src/actions/types/context.ts +2 -0
  744. package/src/actions/validation.ts +2 -1
  745. package/src/agents/adapters.ts +34 -429
  746. package/src/agents/authority.ts +3 -4
  747. package/src/agents/{context.ts → context/entries.ts} +4 -4
  748. package/src/agents/context/index.ts +15 -0
  749. package/src/agents/context-model.ts +1 -1
  750. package/src/agents/context-resolution.ts +2 -5
  751. package/src/agents/errors.ts +0 -10
  752. package/src/agents/execution.ts +13 -5
  753. package/src/agents/identity.ts +4 -0
  754. package/src/agents/index.ts +5 -24
  755. package/src/agents/message.ts +5 -6
  756. package/src/agents/model-loop.ts +62 -6
  757. package/src/agents/request.ts +27 -29
  758. package/src/agents/streams/index.ts +18 -0
  759. package/src/agents/streams/internal.ts +19 -0
  760. package/src/agents/{streams.ts → streams/protocol.ts} +5 -5
  761. package/src/agents/tool-definition.ts +0 -19
  762. package/src/agents/types.ts +1 -1
  763. package/src/agents/validation.ts +9 -72
  764. package/src/ai-usage/execution.ts +4 -11
  765. package/src/auth/index.ts +0 -1
  766. package/src/authorization/decision.ts +29 -14
  767. package/src/authorization/grant-kinds.ts +10 -0
  768. package/src/authorization/index.ts +1 -0
  769. package/src/bootstrap/discovery.ts +84 -24
  770. package/src/bootstrap/index.ts +8 -1
  771. package/src/bootstrap/ontology-type-manifest.ts +12 -6
  772. package/src/datasets/builders.ts +23 -2
  773. package/src/datasets/changes.ts +16 -4
  774. package/src/datasets/execution.ts +76 -5
  775. package/src/datasets/index.ts +1 -0
  776. package/src/datasets/sequence.ts +77 -0
  777. package/src/datasets/types.ts +1 -0
  778. package/src/datasets/validation.ts +26 -0
  779. package/src/datasets/write.ts +240 -0
  780. package/src/errors/internal.ts +90 -10
  781. package/src/errors/redaction.ts +98 -0
  782. package/src/errors/types.ts +4 -0
  783. package/src/events/execution.ts +57 -7
  784. package/src/events/types/datasets.ts +2 -6
  785. package/src/execution/agent.ts +6 -7
  786. package/src/execution/authorization.ts +470 -90
  787. package/src/execution/authorized-object-reader.ts +695 -0
  788. package/src/execution/durable.ts +21 -3
  789. package/src/execution/index.ts +1 -0
  790. package/src/execution/primitive.ts +5 -1
  791. package/src/execution/request.ts +66 -13
  792. package/src/execution/scopes.ts +36 -6
  793. package/src/execution/types.ts +8 -0
  794. package/src/http/api-routes.ts +45 -0
  795. package/src/index.ts +56 -33
  796. package/src/lake-storage/definition-updates.ts +9 -0
  797. package/src/lake-storage/errors.ts +6 -1
  798. package/src/lake-storage/in-memory.ts +53 -17
  799. package/src/lake-storage/index.ts +10 -1
  800. package/src/lake-storage/merge-validation.ts +12 -2
  801. package/src/lake-storage/merge.ts +40 -2
  802. package/src/lake-storage/source-ordering.ts +95 -0
  803. package/src/lake-storage/sql-transforms.ts +2 -1
  804. package/src/lake-storage/types.ts +10 -5
  805. package/src/lake-storage/version-inputs.ts +14 -0
  806. package/src/logging/index.ts +2 -33
  807. package/src/logging/internal.ts +43 -0
  808. package/src/models/errors.ts +12 -0
  809. package/src/models/execution/binding.ts +29 -0
  810. package/src/models/execution/errors.ts +18 -0
  811. package/src/models/execution/index.ts +26 -0
  812. package/src/models/execution/model-call-accounting.ts +211 -0
  813. package/src/models/execution/model-call-admission.ts +127 -0
  814. package/src/models/execution/model-call-limits.ts +135 -0
  815. package/src/models/execution/model-call-recorder.ts +235 -0
  816. package/src/models/execution/model-call-recovery.ts +125 -0
  817. package/src/models/execution/recovery-queue.ts +31 -0
  818. package/src/models/execution/types.ts +58 -0
  819. package/src/models/execution/usage.ts +23 -0
  820. package/src/models/execution.ts +207 -0
  821. package/src/models/generation-types.ts +50 -0
  822. package/src/models/index.ts +8 -0
  823. package/src/models/language-model.ts +3 -0
  824. package/src/models/output.ts +45 -0
  825. package/src/models/resolve.ts +27 -0
  826. package/src/objects/authorized-ontology-view.ts +512 -0
  827. package/src/objects/execution.ts +99 -144
  828. package/src/objects/link/authorization.ts +3 -2
  829. package/src/objects/query/executor.ts +45 -34
  830. package/src/objects/query/links.ts +84 -25
  831. package/src/objects/query/selected-read-admission.ts +310 -0
  832. package/src/objects/query/validate.ts +353 -36
  833. package/src/objects/sdk/object-handle.ts +2 -8
  834. package/src/objects/sdk/object-set.ts +10 -11
  835. package/src/objects/sdk/runtime-query-executor.ts +8 -28
  836. package/src/objects/sdk/telemetry-channel.ts +11 -7
  837. package/src/objects/service/list-service.ts +15 -29
  838. package/src/objects/telemetry/history.ts +297 -17
  839. package/src/objects/telemetry/index.ts +2 -2
  840. package/src/objects/telemetry/workload.ts +79 -0
  841. package/src/ontology/index.ts +7 -2
  842. package/src/ontology/inference/index.ts +4 -1
  843. package/src/ontology/internal.ts +35 -1
  844. package/src/ontology/json-schema.ts +13 -12
  845. package/src/ontology/link-path-selection.ts +193 -0
  846. package/src/ontology/refs.ts +19 -0
  847. package/src/ontology/tokens.ts +15 -8
  848. package/src/pipelines/execution.ts +30 -7
  849. package/src/pipelines/request.ts +5 -0
  850. package/src/projections/execution.ts +72 -11
  851. package/src/projections/run-dispatch.ts +7 -12
  852. package/src/query.ts +0 -1
  853. package/src/queues/index.ts +4 -2
  854. package/src/queues/types.ts +6 -25
  855. package/src/rules/execution.ts +20 -8
  856. package/src/runtime/create.ts +7 -2
  857. package/src/runtime/definitions.ts +2 -0
  858. package/src/runtime/host.ts +27 -7
  859. package/src/runtime/internal.ts +1 -0
  860. package/src/runtime/resolve-definitions.ts +9 -0
  861. package/src/runtime/sixb.ts +27 -2
  862. package/src/runtime/types.ts +3 -0
  863. package/src/sandboxes/errors.ts +5 -0
  864. package/src/sandboxes/index.ts +3 -0
  865. package/src/sandboxes/sandbox.ts +35 -7
  866. package/src/schedules/execution.ts +24 -2
  867. package/src/security/every.ts +4 -0
  868. package/src/security/grants.ts +45 -3
  869. package/src/security/index.ts +1 -0
  870. package/src/security/registry.ts +3 -0
  871. package/src/security/types.ts +8 -0
  872. package/src/security/validation.ts +3 -0
  873. package/src/shares/access-plan.ts +225 -0
  874. package/src/shares/builders.ts +381 -0
  875. package/src/shares/compiler.ts +359 -0
  876. package/src/shares/errors.ts +3 -0
  877. package/src/shares/execution.ts +394 -0
  878. package/src/shares/index.ts +28 -0
  879. package/src/shares/internal.ts +9 -0
  880. package/src/shares/intersection.ts +178 -0
  881. package/src/shares/session-protocol.ts +258 -0
  882. package/src/shares/types.ts +76 -0
  883. package/src/shares/validation.ts +40 -0
  884. package/src/storage/agents/in-memory.ts +0 -3
  885. package/src/storage/agents/types.ts +0 -3
  886. package/src/storage/ai-cost/analytics.ts +1 -1
  887. package/src/storage/ai-cost/attribution.ts +15 -0
  888. package/src/storage/ai-cost/groups.ts +5 -1
  889. package/src/storage/ai-cost/provider.ts +1 -0
  890. package/src/storage/ai-cost/types.ts +7 -0
  891. package/src/storage/auth/in-memory.ts +1 -1
  892. package/src/storage/executions/in-memory.ts +13 -10
  893. package/src/storage/executions/provider.ts +34 -1
  894. package/src/storage/executions/run-link.ts +29 -0
  895. package/src/storage/executions/types.ts +6 -2
  896. package/src/storage/executions/validation.ts +78 -1
  897. package/src/storage/in-memory/index.ts +37 -3
  898. package/src/storage/index.ts +54 -29
  899. package/src/storage/internal.ts +20 -0
  900. package/src/storage/objects/execution-limits.ts +283 -0
  901. package/src/storage/objects/guard.ts +55 -0
  902. package/src/storage/objects/in-memory/index.ts +2 -0
  903. package/src/storage/objects/in-memory/keys.ts +46 -0
  904. package/src/storage/objects/in-memory/query.ts +754 -0
  905. package/src/storage/objects/in-memory/read-scope.ts +211 -0
  906. package/src/storage/objects/in-memory/read-source.ts +10 -0
  907. package/src/storage/objects/in-memory/selected-reader.ts +252 -0
  908. package/src/storage/objects/in-memory/storage.ts +589 -0
  909. package/src/storage/objects/index.ts +21 -0
  910. package/src/storage/objects/keys.ts +1 -1
  911. package/src/storage/objects/read-scope.ts +672 -0
  912. package/src/storage/objects/types.ts +123 -19
  913. package/src/storage/operation-scope.ts +16 -0
  914. package/src/storage/share-grants/errors.ts +14 -0
  915. package/src/storage/share-grants/in-memory.ts +107 -0
  916. package/src/storage/share-grants/index.ts +14 -0
  917. package/src/storage/share-grants/provider.ts +11 -0
  918. package/src/storage/share-grants/record.ts +347 -0
  919. package/src/storage/share-grants/types.ts +112 -0
  920. package/src/storage/share-sessions/errors.ts +14 -0
  921. package/src/storage/share-sessions/in-memory.ts +105 -0
  922. package/src/storage/share-sessions/index.ts +11 -0
  923. package/src/storage/share-sessions/provider.ts +9 -0
  924. package/src/storage/share-sessions/record.ts +176 -0
  925. package/src/storage/share-sessions/types.ts +57 -0
  926. package/src/storage/transaction.ts +14 -2
  927. package/src/storage/types.ts +27 -0
  928. package/src/storage/workflow-runs/in-memory.ts +0 -2
  929. package/src/storage/workflow-runs/types.ts +0 -3
  930. package/src/syncs/execution.ts +25 -5
  931. package/src/syncs/request.ts +5 -0
  932. package/src/testing/action-execution.ts +9 -2
  933. package/src/testing/agent-execution.ts +3 -0
  934. package/src/testing/agent-storage-contract.ts +0 -5
  935. package/src/testing/ai-model-call-groups-contract.ts +74 -2
  936. package/src/testing/dataset-sequence-contract.ts +373 -0
  937. package/src/testing/effective-storage-contract.ts +34 -0
  938. package/src/testing/execution-storage-contract.ts +138 -1
  939. package/src/testing/execution.ts +6 -0
  940. package/src/testing/index.ts +16 -0
  941. package/src/testing/lake-merge-storage-contract.ts +3 -0
  942. package/src/testing/lake-storage-contract.ts +58 -0
  943. package/src/testing/object-read-scope-contract.ts +939 -0
  944. package/src/testing/share-grant-storage-contract.ts +325 -0
  945. package/src/testing/share-session-storage-contract.ts +235 -0
  946. package/src/testing/workflow-execution.ts +4 -0
  947. package/src/workflows/execution.ts +53 -14
  948. package/src/workflows/failure.ts +62 -1
  949. package/src/workflows/request.ts +5 -9
  950. package/src/workflows/run-dispatch.ts +0 -3
  951. package/src/workflows/types.ts +2 -0
  952. package/src/workflows/validation.ts +1 -1
  953. package/dist/agents/context.d.ts.map +0 -1
  954. package/dist/agents/context.js +0 -23
  955. package/dist/agents/streams.d.ts.map +0 -1
  956. package/dist/agents/streams.js +0 -55
  957. package/dist/chunk-08m3b6w8.js +0 -32
  958. package/dist/chunk-08twe8m6.js +0 -218
  959. package/dist/chunk-2b5qtban.js.map +0 -14
  960. package/dist/chunk-2xns679x.js.map +0 -11
  961. package/dist/chunk-37wk412q.js +0 -1370
  962. package/dist/chunk-37wk412q.js.map +0 -23
  963. package/dist/chunk-3fqt22c4.js.map +0 -14
  964. package/dist/chunk-3kv70xwp.js.map +0 -10
  965. package/dist/chunk-407j3msh.js +0 -60
  966. package/dist/chunk-64sr682n.js.map +0 -12
  967. package/dist/chunk-6ed5bwnd.js.map +0 -57
  968. package/dist/chunk-7ds9620f.js.map +0 -10
  969. package/dist/chunk-7y0f6rf1.js.map +0 -10
  970. package/dist/chunk-atmkaf60.js.map +0 -11
  971. package/dist/chunk-c15dr03f.js +0 -43
  972. package/dist/chunk-d8qkxt2v.js.map +0 -10
  973. package/dist/chunk-dqn23610.js +0 -72
  974. package/dist/chunk-dqn23610.js.map +0 -11
  975. package/dist/chunk-e4rvtvpw.js.map +0 -34
  976. package/dist/chunk-gbrpsx4m.js.map +0 -11
  977. package/dist/chunk-h0knpbz5.js +0 -2486
  978. package/dist/chunk-h0knpbz5.js.map +0 -38
  979. package/dist/chunk-hdz94br2.js.map +0 -10
  980. package/dist/chunk-jq43kdvk.js +0 -50
  981. package/dist/chunk-n2arzn6e.js +0 -1745
  982. package/dist/chunk-n2arzn6e.js.map +0 -20
  983. package/dist/chunk-p03r0h5s.js.map +0 -16
  984. package/dist/chunk-qjzp9xyb.js.map +0 -12
  985. package/dist/chunk-tn7xcs2n.js.map +0 -13
  986. package/dist/chunk-wjgm6jjt.js.map +0 -13
  987. package/dist/chunk-xc7hq65b.js.map +0 -10
  988. package/dist/chunk-y35ma3mj.js +0 -551
  989. package/dist/chunk-y35ma3mj.js.map +0 -15
  990. package/dist/chunk-y64skrwp.js +0 -19
  991. package/dist/chunk-z2sery1b.js.map +0 -11
  992. package/dist/chunk-zcnhxkvd.js +0 -7
  993. package/dist/logging/types.js +0 -27
  994. package/dist/logging/types.js.map +0 -9
  995. package/dist/storage/objects/in-memory.d.ts.map +0 -1
  996. package/src/storage/objects/in-memory.ts +0 -1241
  997. /package/dist/{chunk-zqqz8052.js → chunk-7n30ybym.js} +0 -0
  998. /package/dist/{chunk-zqqz8052.js.map → chunk-7n30ybym.js.map} +0 -0
  999. /package/dist/{chunk-4a849fr1.js.map → chunk-9tc8dxmn.js.map} +0 -0
@@ -0,0 +1,1887 @@
1
+ // @bun
2
+ import {
3
+ createSixbError2
4
+ } from "./chunk-f4w3yp4f.js";
5
+ import {
6
+ compileSelectedObjectReadScope2
7
+ } from "./chunk-v4jbb3rs.js";
8
+ import {
9
+ resolveSemanticType2
10
+ } from "./chunk-ms2tmn1k.js";
11
+ import {
12
+ compareStrings
13
+ } from "./chunk-wy0qdqfm.js";
14
+
15
+ // src/execution/authorization.ts
16
+ import { isDeepStrictEqual } from "util";
17
+
18
+ // src/agents/identity.ts
19
+ function agentServiceAccountId2(actorId) {
20
+ return `svc_agent_${actorId}`;
21
+ }
22
+
23
+ // src/authorization/grant-kinds.ts
24
+ var GRANT_KINDS = {
25
+ "access:application": {
26
+ universeKey: "applicationIds",
27
+ subject: "application",
28
+ fix: "Use an application exported from '@sixb/core'."
29
+ },
30
+ "view:object": {
31
+ universeKey: "objectTypeIds",
32
+ subject: "object type",
33
+ fix: "Register it in 'ontology/' or pass it to createSixb({ ontologies }).",
34
+ expandsSubtypes: true
35
+ },
36
+ "view:dataset": {
37
+ universeKey: "datasetIds",
38
+ subject: "dataset",
39
+ fix: "Add it to 'datasets/' or pass it to createSixb({ datasets })."
40
+ },
41
+ "edit:object": {
42
+ universeKey: "objectTypeIds",
43
+ subject: "object type",
44
+ fix: "Register it in 'ontology/' or pass it to createSixb({ ontologies })."
45
+ },
46
+ "append:telemetry": {
47
+ universeKey: "objectTypeIds",
48
+ subject: "object type",
49
+ fix: "Register it in 'ontology/' or pass it to createSixb({ ontologies })."
50
+ },
51
+ "apply:action": {
52
+ universeKey: "actionIds",
53
+ subject: "action",
54
+ fix: "Add it to 'actions/' or pass it to createSixb({ actions })."
55
+ },
56
+ "share:share": {
57
+ universeKey: "shareIds",
58
+ subject: "share",
59
+ fix: "Add it to 'shares/' or pass it to createSixb({ shares })."
60
+ },
61
+ "run:workflow": {
62
+ universeKey: "workflowIds",
63
+ subject: "workflow",
64
+ fix: "Add it to 'workflows/' or pass it to createSixb({ workflows })."
65
+ },
66
+ "run:sync": {
67
+ universeKey: "syncIds",
68
+ subject: "sync",
69
+ fix: "Add it to 'syncs/' or pass it to createSixb({ syncs })."
70
+ },
71
+ "run:pipeline": {
72
+ universeKey: "pipelineIds",
73
+ subject: "pipeline",
74
+ fix: "Add it to 'pipelines/' or pass it to createSixb({ pipelines })."
75
+ },
76
+ "run:agent": {
77
+ singleton: true,
78
+ subject: "agent",
79
+ fix: "Configure models.language and use the exported agent reference in can.run(agent)."
80
+ },
81
+ "observe:logs": {
82
+ universeKey: "observableIds",
83
+ subject: "observability surface",
84
+ fix: 'Use can.observe("logs").'
85
+ },
86
+ "observe:aiUsage": {
87
+ universeKey: "observableIds",
88
+ subject: "observability surface",
89
+ fix: "Use can.observe(agent.usage)."
90
+ },
91
+ "manage:connector": {
92
+ universeKey: "connectorIds",
93
+ subject: "connector",
94
+ fix: "Add it to 'connectors/' or pass it to createSixb({ connectors })."
95
+ },
96
+ "manage:aiUsage": {
97
+ universeKey: "manageableIds",
98
+ subject: "management surface",
99
+ fix: "Use can.manage(agent.usage)."
100
+ }
101
+ };
102
+ var GRANT_KIND_KEYS = Object.keys(GRANT_KINDS);
103
+ var TARGETED_GRANT_KIND_KEYS = GRANT_KIND_KEYS.filter((kind) => kind !== "run:agent");
104
+ function grantKindOf(grant) {
105
+ switch (grant.capability) {
106
+ case "access":
107
+ return "access:application";
108
+ case "view":
109
+ return `view:${grant.target}`;
110
+ case "edit":
111
+ return "edit:object";
112
+ case "append":
113
+ return "append:telemetry";
114
+ case "apply":
115
+ return "apply:action";
116
+ case "share":
117
+ return "share:share";
118
+ case "run":
119
+ return `run:${grant.target}`;
120
+ case "observe":
121
+ return `observe:${grant.target}`;
122
+ case "manage":
123
+ return `manage:${grant.target}`;
124
+ }
125
+ }
126
+ function emptyGrantSets() {
127
+ return {
128
+ "access:application": new Set,
129
+ "view:object": new Set,
130
+ "view:dataset": new Set,
131
+ "edit:object": new Set,
132
+ "append:telemetry": new Set,
133
+ "apply:action": new Set,
134
+ "share:share": new Set,
135
+ "run:workflow": new Set,
136
+ "run:sync": new Set,
137
+ "run:pipeline": new Set,
138
+ "run:agent": false,
139
+ "observe:logs": new Set,
140
+ "observe:aiUsage": new Set,
141
+ "manage:connector": new Set,
142
+ "manage:aiUsage": new Set
143
+ };
144
+ }
145
+
146
+ // src/storage/objects/execution-limits.ts
147
+ var MAX_OBJECT_READ_FACETS2 = 16;
148
+ var MAX_OUTPUT_JSON_DEPTH = 64;
149
+
150
+ class ObjectReadLimitExceededError2 extends Error {
151
+ metric;
152
+ limit;
153
+ name = "ObjectReadLimitExceededError";
154
+ code = "object_read_limit_exceeded";
155
+ constructor(metric, limit) {
156
+ super(`[Sixb] Object read exceeded its ${metric} limit (${limit}).`);
157
+ this.metric = metric;
158
+ this.limit = limit;
159
+ }
160
+ }
161
+ function snapshotObjectReadExecutionLimits2(limits) {
162
+ if (typeof limits !== "object" || limits === null) {
163
+ throw new Error("[Sixb] Object read execution limits must be provided.");
164
+ }
165
+ return Object.freeze({
166
+ maxTraversalFacts: positiveSafeInteger(limits.maxTraversalFacts, "maxTraversalFacts"),
167
+ maxOutputJsonBytes: positiveSafeInteger(limits.maxOutputJsonBytes, "maxOutputJsonBytes")
168
+ });
169
+ }
170
+ function assertObjectReadFacetCount2(count) {
171
+ if (!Number.isSafeInteger(count) || count < 0 || count > MAX_OBJECT_READ_FACETS2) {
172
+ throw new Error(`[Sixb] An object read supports between 0 and ${MAX_OBJECT_READ_FACETS2} facets.`);
173
+ }
174
+ }
175
+ function assertObjectReadOutputWithinLimit2(value, limits) {
176
+ const fail = () => {
177
+ throw new ObjectReadLimitExceededError2("outputJsonBytes", limits.maxOutputJsonBytes);
178
+ };
179
+ const stack = [];
180
+ let bytes = 0;
181
+ const addBytes = (count) => {
182
+ bytes += count;
183
+ if (bytes > limits.maxOutputJsonBytes)
184
+ fail();
185
+ };
186
+ const addPrimitiveBytes = (primitive) => {
187
+ switch (typeof primitive) {
188
+ case "string":
189
+ addBytes(jsonStringUtf8Length(primitive));
190
+ break;
191
+ case "number":
192
+ addBytes(Number.isFinite(primitive) ? Object.is(primitive, -0) ? 1 : String(primitive).length : 4);
193
+ break;
194
+ case "boolean":
195
+ addBytes(primitive ? 4 : 5);
196
+ break;
197
+ }
198
+ };
199
+ try {
200
+ JSON.stringify(value, function(key, current) {
201
+ const parent = isObject(this) ? this : undefined;
202
+ let parentFrameIndex = -1;
203
+ if (parent) {
204
+ for (let index = stack.length - 1;index >= 0; index -= 1) {
205
+ if (stack[index]?.value === parent) {
206
+ parentFrameIndex = index;
207
+ break;
208
+ }
209
+ }
210
+ }
211
+ const isRoot = parentFrameIndex === -1;
212
+ if (isRoot) {
213
+ stack.length = 0;
214
+ } else {
215
+ stack.length = parentFrameIndex + 1;
216
+ }
217
+ const parentFrame = isRoot ? undefined : stack[parentFrameIndex];
218
+ const parentIsArray = Array.isArray(parent);
219
+ const unsupported = current === undefined || typeof current === "function" || typeof current === "symbol";
220
+ if (!isRoot) {
221
+ if (!parentIsArray && unsupported)
222
+ return current;
223
+ if (!parentFrame)
224
+ return fail();
225
+ if (parentFrame.serializedChildren > 0)
226
+ addBytes(1);
227
+ parentFrame.serializedChildren += 1;
228
+ if (!parentIsArray)
229
+ addBytes(jsonStringUtf8Length(key) + 1);
230
+ } else if (unsupported) {
231
+ return current;
232
+ }
233
+ if (parentIsArray && unsupported) {
234
+ addBytes(4);
235
+ return current;
236
+ }
237
+ if (isObject(current)) {
238
+ const special = inspectJsonSpecialObject(current);
239
+ switch (special.kind) {
240
+ case "primitive":
241
+ addPrimitiveBytes(special.value);
242
+ return special.value;
243
+ case "bigint":
244
+ throw new TypeError("BigInt is not JSON serializable");
245
+ case "raw":
246
+ addBytes(rawJsonUtf8Length(special.value));
247
+ return current;
248
+ case "ordinary":
249
+ break;
250
+ }
251
+ }
252
+ switch (typeof current) {
253
+ case "string":
254
+ addPrimitiveBytes(current);
255
+ break;
256
+ case "number":
257
+ addPrimitiveBytes(current);
258
+ break;
259
+ case "boolean":
260
+ addPrimitiveBytes(current);
261
+ break;
262
+ case "bigint":
263
+ throw new TypeError("BigInt is not JSON serializable");
264
+ case "object":
265
+ if (current === null) {
266
+ addBytes(4);
267
+ break;
268
+ }
269
+ if (stack.some((frame) => frame.value === current)) {
270
+ throw new TypeError("Cyclic object value");
271
+ }
272
+ if (stack.length + 1 > MAX_OUTPUT_JSON_DEPTH)
273
+ fail();
274
+ addBytes(2);
275
+ stack.push({ value: current, serializedChildren: 0 });
276
+ break;
277
+ }
278
+ return current;
279
+ });
280
+ } catch (error) {
281
+ if (error instanceof ObjectReadLimitExceededError2)
282
+ throw error;
283
+ if (error instanceof RangeError || error instanceof TypeError)
284
+ fail();
285
+ throw error;
286
+ }
287
+ }
288
+ var jsonWithRawJson = JSON;
289
+ var isRawJson = jsonWithRawJson.isRawJSON?.bind(jsonWithRawJson);
290
+ var booleanValueOf = bindValueOf(Boolean.prototype.valueOf);
291
+ var numberValueOf = bindValueOf(Number.prototype.valueOf);
292
+ var stringValueOf = bindValueOf(String.prototype.valueOf);
293
+ var bigintValueOf = bindValueOf(BigInt.prototype.valueOf);
294
+ var toStringValue = String;
295
+ function inspectJsonSpecialObject(value) {
296
+ if (isRawJson?.(value)) {
297
+ const raw = value.rawJSON;
298
+ if (typeof raw !== "string")
299
+ return { kind: "ordinary" };
300
+ return { kind: "raw", value: raw };
301
+ }
302
+ const boolean = unbox(value, booleanValueOf);
303
+ if (boolean.matched)
304
+ return { kind: "primitive", value: boolean.value };
305
+ const number = unbox(value, numberValueOf);
306
+ if (number.matched)
307
+ return { kind: "primitive", value: +value };
308
+ const string = unbox(value, stringValueOf);
309
+ if (string.matched)
310
+ return { kind: "primitive", value: toStringValue(value) };
311
+ if (unbox(value, bigintValueOf).matched)
312
+ return { kind: "bigint" };
313
+ return { kind: "ordinary" };
314
+ }
315
+ function bindValueOf(unboxer) {
316
+ return Function.prototype.call.bind(unboxer);
317
+ }
318
+ function unbox(value, unboxer) {
319
+ try {
320
+ return { matched: true, value: unboxer(value) };
321
+ } catch {
322
+ return { matched: false };
323
+ }
324
+ }
325
+ function rawJsonUtf8Length(value) {
326
+ let bytes = 0;
327
+ for (let index = 0;index < value.length; index += 1) {
328
+ const code = value.charCodeAt(index);
329
+ if (code <= 127) {
330
+ bytes += 1;
331
+ } else if (code <= 2047) {
332
+ bytes += 2;
333
+ } else if (code >= 55296 && code <= 56319) {
334
+ const next = value.charCodeAt(index + 1);
335
+ if (next >= 56320 && next <= 57343) {
336
+ bytes += 4;
337
+ index += 1;
338
+ } else {
339
+ bytes += 3;
340
+ }
341
+ } else {
342
+ bytes += 3;
343
+ }
344
+ }
345
+ return bytes;
346
+ }
347
+ function jsonStringUtf8Length(value) {
348
+ let bytes = 2;
349
+ for (let index = 0;index < value.length; index += 1) {
350
+ const code = value.charCodeAt(index);
351
+ if (code === 34 || code === 92) {
352
+ bytes += 2;
353
+ } else if (code <= 31) {
354
+ bytes += code === 8 || code === 9 || code === 10 || code === 12 || code === 13 ? 2 : 6;
355
+ } else if (code <= 127) {
356
+ bytes += 1;
357
+ } else if (code <= 2047) {
358
+ bytes += 2;
359
+ } else if (code >= 55296 && code <= 56319) {
360
+ const next = value.charCodeAt(index + 1);
361
+ if (next >= 56320 && next <= 57343) {
362
+ bytes += 4;
363
+ index += 1;
364
+ } else {
365
+ bytes += 6;
366
+ }
367
+ } else if (code >= 56320 && code <= 57343) {
368
+ bytes += 6;
369
+ } else {
370
+ bytes += 3;
371
+ }
372
+ }
373
+ return bytes;
374
+ }
375
+ function isObject(value) {
376
+ return typeof value === "object" && value !== null;
377
+ }
378
+ function positiveSafeInteger(value, name) {
379
+ if (typeof value !== "number" || !Number.isSafeInteger(value) || value <= 0) {
380
+ throw new Error(`[Sixb] ${name} must be a positive safe integer.`);
381
+ }
382
+ return value;
383
+ }
384
+
385
+ // src/execution/types.ts
386
+ class RuntimeAuthorizationCapability {
387
+ #runtimeAuthorization = true;
388
+ constructor() {}
389
+ static create() {
390
+ const capability = new RuntimeAuthorizationCapability;
391
+ Object.freeze(capability);
392
+ return capability;
393
+ }
394
+ static is(value) {
395
+ return typeof value === "object" && value !== null && #runtimeAuthorization in value;
396
+ }
397
+ }
398
+ function createRuntimeAuthorizationCapability() {
399
+ return RuntimeAuthorizationCapability.create();
400
+ }
401
+ function isRuntimeAuthorizationCapability(value) {
402
+ return RuntimeAuthorizationCapability.is(value);
403
+ }
404
+
405
+ // src/execution/authorization.ts
406
+ var registeredAuthorizations = new WeakMap;
407
+ var MAX_DELEGATED_ACTION_APPLY_TARGETS = 4096;
408
+ var MAX_DELEGATED_ACTION_IDENTIFIER_CHARACTERS = 1e6;
409
+ function createPrincipalRuntimeAuthorization(input) {
410
+ if (input.execution.executor.type !== "request") {
411
+ throw new Error("[Sixb] Principal runtime authorization requires a request execution.");
412
+ }
413
+ return createRegisteredPrincipalAuthorization(input);
414
+ }
415
+ function createAgentRuntimeAuthorization(input) {
416
+ if (input.execution.executor.type !== "agent") {
417
+ throw new Error("[Sixb] Agent runtime authorization requires an Agent execution.");
418
+ }
419
+ if (input.authority.type === "principal") {
420
+ return createRegisteredPrincipalAuthorization({
421
+ execution: input.execution,
422
+ context: input.authority.context,
423
+ ...input.authority.credential === undefined ? {} : { credential: input.authority.credential }
424
+ });
425
+ }
426
+ return register(input.execution, {
427
+ type: "unrestricted",
428
+ projectId: input.execution.projectId,
429
+ ref: Object.freeze({ type: "disabled" })
430
+ });
431
+ }
432
+ function createRegisteredPrincipalAuthorization(input) {
433
+ const context = snapshotAuthorizationContext(input.context);
434
+ const credential = input.credential ? snapshotCredential(input.credential) : undefined;
435
+ assertCredentialMatchesContext(context, credential);
436
+ const ref = Object.freeze({
437
+ type: "principal",
438
+ principal: context.principal,
439
+ ...credential === undefined ? {} : { credential }
440
+ });
441
+ return register(input.execution, {
442
+ type: "principal",
443
+ projectId: input.execution.projectId,
444
+ context,
445
+ ref
446
+ });
447
+ }
448
+ function createDisabledRuntimeAuthorization(execution) {
449
+ return register(execution, {
450
+ type: "unrestricted",
451
+ projectId: execution.projectId,
452
+ ref: Object.freeze({ type: "disabled" })
453
+ });
454
+ }
455
+ function createDelegatedRuntimeAuthorization(input) {
456
+ const execution = input.execution;
457
+ const objectReadInput = input.objectRead;
458
+ const actionApplyInput = input.actionApply;
459
+ const delegationInput = input.delegation;
460
+ const delegation = delegationInput === undefined ? undefined : snapshotSharedDelegation(delegationInput);
461
+ if (execution.executor.type !== "request" || execution.requestedBy !== undefined) {
462
+ throw new Error("[Sixb] Delegated runtime authorization requires a request execution without a principal.");
463
+ }
464
+ const objectRead = Object.freeze({
465
+ scope: compileSelectedObjectReadScope2(objectReadInput.selection),
466
+ limits: snapshotObjectReadExecutionLimits2(objectReadInput.limits)
467
+ });
468
+ return register(execution, {
469
+ type: "delegated",
470
+ projectId: execution.projectId,
471
+ objectRead,
472
+ actionApply: snapshotDelegatedActionApply(actionApplyInput ?? []),
473
+ ...delegation === undefined ? {} : { delegation }
474
+ });
475
+ }
476
+ function createTrustedPrimitiveRuntimeAuthorization(input) {
477
+ const primitive = snapshotTrustedPrimitive(input.primitive);
478
+ return register(input.execution, {
479
+ type: "unrestricted",
480
+ projectId: input.execution.projectId,
481
+ ref: Object.freeze({ type: "trustedPrimitive", primitive })
482
+ });
483
+ }
484
+ function resolveRuntimeAuthorization(authorization) {
485
+ if (!isRuntimeAuthorizationCapability(authorization)) {
486
+ return { type: "denied" };
487
+ }
488
+ return registeredAuthorizations.get(authorization)?.resolved ?? { type: "denied" };
489
+ }
490
+ function resolveRuntimeAuthorizationForProject(input) {
491
+ const resolved = resolveRuntimeAuthorization(input.runtimeAuthorization);
492
+ if (resolved.type === "denied" || typeof input.projectId !== "string" || resolved.projectId !== input.projectId) {
493
+ return { type: "denied" };
494
+ }
495
+ return resolved;
496
+ }
497
+ function getAuthorizationRef(authorization) {
498
+ const resolved = resolveRuntimeAuthorization(authorization);
499
+ if (resolved.type === "denied") {
500
+ throw new Error("[Sixb] Runtime authorization is not a registered Core capability.");
501
+ }
502
+ if (resolved.type === "delegated") {
503
+ if (resolved.delegation) {
504
+ return { type: "delegated", delegation: { ...resolved.delegation } };
505
+ }
506
+ throw new Error("[Sixb] Delegated runtime authorization cannot cross a durable execution boundary.");
507
+ }
508
+ return cloneAuthorizationRef(resolved.ref);
509
+ }
510
+ function snapshotSharedDelegation(input) {
511
+ const kind = input.kind;
512
+ const grantId = input.grantId;
513
+ const sessionId = input.sessionId;
514
+ if (kind !== "share")
515
+ throw new Error("[Sixb] Unknown delegated authority provenance.");
516
+ assertNonEmpty(grantId, "Share grant id");
517
+ assertNonEmpty(sessionId, "Share session id");
518
+ return Object.freeze({ kind, grantId, sessionId });
519
+ }
520
+ function assertExecutionScopeProject(projectId, scope) {
521
+ assertNonEmpty(projectId, "Project id");
522
+ if (scope.execution.projectId !== projectId) {
523
+ throw createSixbError2("internal.unexpected", `[Sixb] Execution scope belongs to project '${scope.execution.projectId}', not '${projectId}'.`, {
524
+ details: {
525
+ executionId: scope.execution.id,
526
+ expectedProjectId: projectId,
527
+ scopeProjectId: scope.execution.projectId
528
+ }
529
+ });
530
+ }
531
+ const resolved = resolveRuntimeAuthorization(scope.authorization);
532
+ if (resolved.type === "denied") {
533
+ throw createSixbError2("internal.unexpected", "[Sixb] Execution scope carries unregistered runtime authorization.", { details: { executionId: scope.execution.id, projectId } });
534
+ }
535
+ if (resolved.projectId !== projectId) {
536
+ throw createSixbError2("internal.unexpected", `[Sixb] Execution authorization belongs to project '${resolved.projectId}', not '${projectId}'.`, {
537
+ details: {
538
+ authorizationProjectId: resolved.projectId,
539
+ executionId: scope.execution.id,
540
+ expectedProjectId: projectId
541
+ }
542
+ });
543
+ }
544
+ }
545
+ function captureExecutionScope(scope) {
546
+ const execution = scope.execution;
547
+ const authorization = scope.authorization;
548
+ return Object.freeze({ execution, authorization });
549
+ }
550
+ function resolveExecutionScopeAuthorization(projectId, scope) {
551
+ const capturedScope = captureExecutionScope(scope);
552
+ assertExecutionScopeProject(projectId, capturedScope);
553
+ const resolved = resolveRuntimeAuthorization(capturedScope.authorization);
554
+ if (resolved.type === "denied") {
555
+ throw createSixbError2("internal.unexpected", "[Sixb] Execution scope carries unregistered runtime authorization.", { details: { executionId: capturedScope.execution.id, projectId } });
556
+ }
557
+ const registration = registeredAuthorizations.get(capturedScope.authorization);
558
+ if (!registration || !executionMatchesBinding(registration.execution, capturedScope.execution)) {
559
+ throw invalidExecutionAuthority(capturedScope.execution.id, "authority is bound to different execution provenance");
560
+ }
561
+ assertResolvedAuthorizationMatchesExecution(resolved, capturedScope.execution);
562
+ return resolved;
563
+ }
564
+ function assertResolvedAuthorizationMatchesExecution(resolved, execution) {
565
+ switch (execution.executor.type) {
566
+ case "request":
567
+ if (execution.source.type !== "http" || execution.source.requestId !== execution.executor.requestId) {
568
+ throw invalidExecutionAuthority(execution.id, "request source does not match its executor");
569
+ }
570
+ if (resolved.type === "principal") {
571
+ if (!principalsEqual(execution.requestedBy, resolved.ref.principal)) {
572
+ throw invalidExecutionAuthority(execution.id, "request authority does not match its requested-by principal");
573
+ }
574
+ return;
575
+ }
576
+ if (resolved.type === "unrestricted" && resolved.ref.type === "disabled" && execution.requestedBy === undefined) {
577
+ return;
578
+ }
579
+ if (resolved.type === "delegated" && execution.requestedBy === undefined)
580
+ return;
581
+ throw invalidExecutionAuthority(execution.id, "request execution requires principal, delegated, or explicitly disabled authority");
582
+ case "primitive":
583
+ if (resolved.type !== "unrestricted" || resolved.ref.type !== "trustedPrimitive" || resolved.ref.primitive.kind !== execution.executor.kind || resolved.ref.primitive.id !== execution.executor.id || resolved.ref.primitive.runId !== execution.executor.runId) {
584
+ throw invalidExecutionAuthority(execution.id, "trusted primitive authority does not match its executor");
585
+ }
586
+ return;
587
+ case "agent":
588
+ if (execution.source.type !== "execution") {
589
+ throw invalidExecutionAuthority(execution.id, "agent execution requires an execution source");
590
+ }
591
+ if (resolved.type === "principal" && resolved.ref.type === "principal") {
592
+ if (resolved.ref.principal.type === "serviceAccount") {
593
+ const actorId = execution.executor.actorId;
594
+ if (actorId === undefined || resolved.ref.principal.id !== agentServiceAccountId2(actorId) || resolved.ref.credential !== undefined) {
595
+ throw invalidExecutionAuthority(execution.id, "agent authority must reference its managed service account");
596
+ }
597
+ } else if (resolved.ref.credential === undefined) {
598
+ throw invalidExecutionAuthority(execution.id, "inherited user agent authority requires a credential");
599
+ }
600
+ return;
601
+ }
602
+ if (resolved.type === "unrestricted" && resolved.ref.type === "disabled")
603
+ return;
604
+ throw invalidExecutionAuthority(execution.id, "agent authority must be principal or explicitly disabled");
605
+ case "kernel":
606
+ if (resolved.type !== "unrestricted" || resolved.ref.type !== "kernel" || execution.requestedBy !== undefined || resolved.ref.operation.type !== execution.executor.operation.type || resolved.ref.operation.recoveryId !== execution.executor.operation.recoveryId) {
607
+ throw invalidExecutionAuthority(execution.id, "kernel authority does not match its executor");
608
+ }
609
+ return;
610
+ }
611
+ }
612
+ function principalsEqual(left, right) {
613
+ return left?.type === right?.type && left?.id === right?.id;
614
+ }
615
+ function invalidExecutionAuthority(executionId, reason) {
616
+ return createSixbError2("internal.unexpected", `[Sixb] Execution '${executionId}' is incompatible with its authority: ${reason}.`, { details: { executionId, reason } });
617
+ }
618
+ function register(execution, input) {
619
+ assertNonEmpty(input.projectId, "Authorization project id");
620
+ const executionBinding = snapshotExecutionContext(execution);
621
+ if (input.projectId !== executionBinding.projectId) {
622
+ throw new Error(`[Sixb] Runtime authorization belongs to project '${input.projectId}', not execution project '${executionBinding.projectId}'.`);
623
+ }
624
+ assertResolvedAuthorizationMatchesExecution(input, executionBinding);
625
+ const authorization = createRuntimeAuthorizationCapability();
626
+ registeredAuthorizations.set(authorization, Object.freeze({ resolved: Object.freeze(input), execution: executionBinding }));
627
+ return authorization;
628
+ }
629
+ function executionMatchesBinding(binding, execution) {
630
+ try {
631
+ return isDeepStrictEqual(binding, snapshotExecutionContext(execution));
632
+ } catch {
633
+ return false;
634
+ }
635
+ }
636
+ function snapshotExecutionContext(execution) {
637
+ assertNonEmpty(execution.id, "Execution id");
638
+ assertNonEmpty(execution.projectId, "Execution project id");
639
+ assertNonEmpty(execution.correlationId, "Execution correlation id");
640
+ return Object.freeze({
641
+ id: execution.id,
642
+ projectId: execution.projectId,
643
+ ...execution.requestedBy === undefined ? {} : { requestedBy: snapshotAuthorizablePrincipal(execution.requestedBy) },
644
+ executor: snapshotExecutionExecutor(execution.executor),
645
+ source: snapshotExecutionSource(execution.source),
646
+ correlationId: execution.correlationId
647
+ });
648
+ }
649
+ function snapshotExecutionExecutor(executor) {
650
+ switch (executor.type) {
651
+ case "request":
652
+ assertNonEmpty(executor.requestId, "Execution request id");
653
+ return Object.freeze({ type: "request", requestId: executor.requestId });
654
+ case "primitive": {
655
+ const primitive = snapshotTrustedPrimitive(executor);
656
+ return Object.freeze({ type: "primitive", ...primitive });
657
+ }
658
+ case "agent":
659
+ if (executor.actorId !== undefined)
660
+ assertNonEmpty(executor.actorId, "Execution Agent actor id");
661
+ assertNonEmpty(executor.runId, "Execution Agent run id");
662
+ return Object.freeze({
663
+ type: "agent",
664
+ ...executor.actorId === undefined ? {} : { actorId: executor.actorId },
665
+ runId: executor.runId
666
+ });
667
+ case "kernel":
668
+ return Object.freeze({
669
+ type: "kernel",
670
+ operation: snapshotKernelOperation(executor.operation)
671
+ });
672
+ }
673
+ throw new Error(`[Sixb] Unknown execution executor type '${String(executor.type)}'.`);
674
+ }
675
+ function snapshotExecutionSource(source) {
676
+ switch (source.type) {
677
+ case "http":
678
+ assertNonEmpty(source.requestId, "Execution source request id");
679
+ return Object.freeze({ type: "http", requestId: source.requestId });
680
+ case "webhook":
681
+ assertNonEmpty(source.deliveryId, "Execution source delivery id");
682
+ return Object.freeze({ type: "webhook", deliveryId: source.deliveryId });
683
+ case "schedule":
684
+ case "event":
685
+ assertNonEmpty(source.eventId, "Execution source event id");
686
+ return Object.freeze({ type: source.type, eventId: source.eventId });
687
+ case "datasetVersion":
688
+ assertNonEmpty(source.datasetId, "Execution source dataset id");
689
+ assertNonEmpty(source.versionId, "Execution source dataset version id");
690
+ return Object.freeze({
691
+ type: "datasetVersion",
692
+ datasetId: source.datasetId,
693
+ versionId: source.versionId
694
+ });
695
+ case "execution":
696
+ assertNonEmpty(source.executionId, "Execution source execution id");
697
+ return Object.freeze({ type: "execution", executionId: source.executionId });
698
+ }
699
+ throw new Error(`[Sixb] Unknown execution source type '${String(source.type)}'.`);
700
+ }
701
+ function snapshotAuthorizationContext(context) {
702
+ const principal = snapshotAuthorizablePrincipal(context.principal);
703
+ const grants = {};
704
+ for (const kind of TARGETED_GRANT_KIND_KEYS) {
705
+ grants[kind] = new ImmutableGrantSet(context.grants[kind]);
706
+ }
707
+ const frozenGrants = Object.freeze({
708
+ ...grants,
709
+ "run:agent": context.grants["run:agent"]
710
+ });
711
+ return Object.freeze({
712
+ principal,
713
+ ...context.sessionId === undefined ? {} : { sessionId: context.sessionId },
714
+ groupIds: Object.freeze([...context.groupIds]),
715
+ roleIds: Object.freeze([...context.roleIds]),
716
+ grants: frozenGrants
717
+ });
718
+ }
719
+
720
+ class ImmutableGrantSet {
721
+ #values;
722
+ [Symbol.toStringTag] = "Set";
723
+ constructor(values) {
724
+ this.#values = new Set(values);
725
+ Object.freeze(this);
726
+ }
727
+ get size() {
728
+ return this.#values.size;
729
+ }
730
+ has(value) {
731
+ return this.#values.has(value);
732
+ }
733
+ entries() {
734
+ return this.#values.entries();
735
+ }
736
+ keys() {
737
+ return this.#values.keys();
738
+ }
739
+ values() {
740
+ return this.#values.values();
741
+ }
742
+ [Symbol.iterator]() {
743
+ return this.#values[Symbol.iterator]();
744
+ }
745
+ forEach(callback, thisArg) {
746
+ for (const value of this.#values) {
747
+ callback.call(thisArg, value, value, this);
748
+ }
749
+ }
750
+ add(_value) {
751
+ throw immutableGrantSetMutation();
752
+ }
753
+ delete(_value) {
754
+ throw immutableGrantSetMutation();
755
+ }
756
+ clear() {
757
+ throw immutableGrantSetMutation();
758
+ }
759
+ }
760
+ Object.freeze(ImmutableGrantSet.prototype);
761
+ function immutableGrantSetMutation() {
762
+ return new Error("[Sixb] Runtime authorization grants are immutable.");
763
+ }
764
+ function snapshotAuthorizablePrincipal(principal) {
765
+ if (principal.type !== "user" && principal.type !== "serviceAccount") {
766
+ throw new Error(`[Sixb] Principal type '${principal.type}' cannot hold runtime authorization.`);
767
+ }
768
+ assertNonEmpty(principal.id, "Authorization principal id");
769
+ return Object.freeze({ type: principal.type, id: principal.id });
770
+ }
771
+ function snapshotCredential(credential) {
772
+ assertNonEmpty(credential.id, "Authorization credential id");
773
+ if (credential.type !== "session" && credential.type !== "accessToken") {
774
+ const credentialType = credential.type;
775
+ throw new Error(`[Sixb] Unknown authorization credential type '${credentialType}'.`);
776
+ }
777
+ return Object.freeze({ type: credential.type, id: credential.id });
778
+ }
779
+ function assertCredentialMatchesContext(context, credential) {
780
+ if (credential?.type === "session") {
781
+ if (context.sessionId !== credential.id) {
782
+ throw new Error("[Sixb] Session credential id must match the authorization context session id.");
783
+ }
784
+ return;
785
+ }
786
+ if (context.sessionId !== undefined) {
787
+ throw new Error("[Sixb] Authorization context session requires a matching session credential.");
788
+ }
789
+ }
790
+ function snapshotTrustedPrimitive(primitive) {
791
+ if (!isTrustedPrimitiveKind(primitive.kind)) {
792
+ throw new Error(`[Sixb] Unknown trusted primitive kind '${primitive.kind}'.`);
793
+ }
794
+ assertNonEmpty(primitive.id, "Trusted primitive id");
795
+ assertNonEmpty(primitive.runId, "Trusted primitive run id");
796
+ return Object.freeze({ kind: primitive.kind, id: primitive.id, runId: primitive.runId });
797
+ }
798
+ function snapshotKernelOperation(operation) {
799
+ if (operation.type !== "ontology.recover") {
800
+ throw new Error(`[Sixb] Unknown kernel operation '${operation.type}'.`);
801
+ }
802
+ assertNonEmpty(operation.recoveryId, "Kernel recovery id");
803
+ return Object.freeze({ type: operation.type, recoveryId: operation.recoveryId });
804
+ }
805
+ function snapshotDelegatedActionApply(input) {
806
+ if (!Array.isArray(input)) {
807
+ throw new Error("[Sixb] Delegated Action targets must be an array.");
808
+ }
809
+ const targetCount = input.length;
810
+ if (targetCount > MAX_DELEGATED_ACTION_APPLY_TARGETS) {
811
+ throw new Error(`[Sixb] Delegated authority exceeds the maximum of ${MAX_DELEGATED_ACTION_APPLY_TARGETS} Action targets.`);
812
+ }
813
+ let identifierCharacters = 0;
814
+ const targets = [];
815
+ for (let index = 0;index < targetCount; index += 1) {
816
+ const authoredTarget = input[index];
817
+ if (!isRecord(authoredTarget)) {
818
+ throw new Error(`[Sixb] Delegated Action target ${index} must be an object.`);
819
+ }
820
+ const authoredActionId = authoredTarget.actionId;
821
+ const authoredSubject = authoredTarget.subject;
822
+ if (!isRecord(authoredSubject)) {
823
+ throw new Error(`[Sixb] Delegated Action target ${index} subject must be an ObjectRef.`);
824
+ }
825
+ const actionId = delegatedActionIdentifier(authoredActionId, `Delegated Action target ${index} action id`);
826
+ const objectTypeId = delegatedActionIdentifier(authoredSubject.objectTypeId, `Delegated Action target ${index} subject object type id`);
827
+ const primaryId = delegatedActionIdentifier(authoredSubject.primaryId, `Delegated Action target ${index} subject primary id`);
828
+ identifierCharacters += actionId.length + objectTypeId.length + primaryId.length;
829
+ if (identifierCharacters > MAX_DELEGATED_ACTION_IDENTIFIER_CHARACTERS) {
830
+ throw new Error(`[Sixb] Delegated authority exceeds the maximum of ${MAX_DELEGATED_ACTION_IDENTIFIER_CHARACTERS} Action identifier characters.`);
831
+ }
832
+ targets.push(Object.freeze({
833
+ actionId,
834
+ subject: Object.freeze({ objectTypeId, primaryId })
835
+ }));
836
+ }
837
+ return Object.freeze(targets);
838
+ }
839
+ function delegatedActionIdentifier(value, label) {
840
+ if (typeof value !== "string" || !value.trim()) {
841
+ throw new Error(`[Sixb] ${label} must not be empty.`);
842
+ }
843
+ return value;
844
+ }
845
+ function isRecord(value) {
846
+ return typeof value === "object" && value !== null && !Array.isArray(value);
847
+ }
848
+ function cloneAuthorizationRef(ref) {
849
+ switch (ref.type) {
850
+ case "principal":
851
+ return {
852
+ type: "principal",
853
+ principal: { ...ref.principal },
854
+ ...ref.credential === undefined ? {} : { credential: { ...ref.credential } }
855
+ };
856
+ case "trustedPrimitive":
857
+ return { type: "trustedPrimitive", primitive: { ...ref.primitive } };
858
+ case "delegated":
859
+ return { type: "delegated", delegation: { ...ref.delegation } };
860
+ case "kernel":
861
+ return { type: "kernel", operation: { ...ref.operation } };
862
+ case "disabled":
863
+ return { type: "disabled" };
864
+ }
865
+ }
866
+ function isTrustedPrimitiveKind(value) {
867
+ return value === "action" || value === "pipeline" || value === "projection" || value === "rule" || value === "sync" || value === "webhook" || value === "workflow";
868
+ }
869
+ function assertNonEmpty(value, label) {
870
+ if (!value.trim()) {
871
+ throw new Error(`[Sixb] ${label} must not be empty.`);
872
+ }
873
+ }
874
+
875
+ // src/authorization/errors.ts
876
+ class AuthorizationError2 extends Error {
877
+ grantKey;
878
+ name = "AuthorizationError";
879
+ constructor(grantKey, message) {
880
+ super(message);
881
+ this.grantKey = grantKey;
882
+ }
883
+ }
884
+
885
+ // src/authorization/decision.ts
886
+ function atomsFor(request) {
887
+ switch (request.kind) {
888
+ case "application.access":
889
+ return [{ kind: "access:application", id: request.audience }];
890
+ case "object.view":
891
+ return [{ kind: "view:object", id: request.objectTypeId }];
892
+ case "dataset.view":
893
+ return [{ kind: "view:dataset", id: request.datasetId }];
894
+ case "object.edit":
895
+ return [{ kind: "edit:object", id: request.objectTypeId }];
896
+ case "telemetry.append":
897
+ return [{ kind: "append:telemetry", id: request.objectTypeId }];
898
+ case "action.apply":
899
+ return [{ kind: "apply:action", id: request.actionId }];
900
+ case "share.manage":
901
+ return [{ kind: "share:share", id: request.shareId }];
902
+ case "workflow.run":
903
+ return [{ kind: "run:workflow", id: request.workflowId }];
904
+ case "sync.run":
905
+ return [{ kind: "run:sync", id: request.syncId }];
906
+ case "pipeline.run":
907
+ return [{ kind: "run:pipeline", id: request.pipelineId }];
908
+ case "agent.run":
909
+ return [{ kind: "run:agent" }];
910
+ case "logs.observe":
911
+ return [{ kind: "observe:logs", id: "logs" }];
912
+ case "aiUsage.observe":
913
+ return [{ kind: "observe:aiUsage", id: "aiUsage" }];
914
+ case "aiUsage.manage":
915
+ return [{ kind: "manage:aiUsage", id: "aiUsage" }];
916
+ case "connector.manage":
917
+ return [{ kind: "manage:connector", id: request.connectorId }];
918
+ case "object.query":
919
+ return request.touchedObjectTypeIds.map((id) => ({ kind: "view:object", id }));
920
+ }
921
+ }
922
+ function atomKey(atom) {
923
+ if (atom.kind === "run:agent")
924
+ return atom.kind;
925
+ if (atom.kind === "observe:logs" || atom.kind === "observe:aiUsage" || atom.kind === "manage:aiUsage") {
926
+ return atom.kind;
927
+ }
928
+ return `${atom.kind}:${atom.id}`;
929
+ }
930
+ function holds(grants, atom) {
931
+ if (atom.kind === "run:agent")
932
+ return grants[atom.kind];
933
+ return grants[atom.kind].has(atom.id);
934
+ }
935
+ function evaluate2(authorization, request) {
936
+ const atoms = atomsFor(request);
937
+ const requirements = atoms.map(atomKey);
938
+ const missing = authorization ? atoms.filter((atom) => !holds(authorization.grants, atom)).map(atomKey) : [];
939
+ return { allowed: missing.length === 0, requirements, missing };
940
+ }
941
+ function isAllowed2(authorization, request) {
942
+ return evaluate2(authorization, request).allowed;
943
+ }
944
+ function assertAuthorized2(runtime, request) {
945
+ const resolved = assertRuntimeAuthorizationBound2(runtime);
946
+ if (resolved.type === "delegated") {
947
+ throw new AuthorizationError2(`delegated:${request.kind}`, `[Sixb] Operation '${request.kind}' is not covered by delegated authorization.`);
948
+ }
949
+ const authorization = resolved.type === "principal" ? resolved.context : undefined;
950
+ const decision = evaluate2(authorization, request);
951
+ if (decision.allowed) {
952
+ return;
953
+ }
954
+ throw new AuthorizationError2(decision.missing[0] ?? request.kind, deniedMessage(authorization, request));
955
+ }
956
+ function isRuntimeAllowed2(runtime, request) {
957
+ const authority = resolveRuntimeAuthorizationForProject(runtime);
958
+ if (authority.type === "denied" || authority.type === "delegated")
959
+ return false;
960
+ return authority.type === "unrestricted" || isAllowed2(authority.context, request);
961
+ }
962
+ function assertRuntimeAuthorizationBound2(runtime) {
963
+ const resolved = resolveRuntimeAuthorizationForProject(runtime);
964
+ if (resolved.type === "denied") {
965
+ throw new AuthorizationError2("runtime:unbound", "[Sixb] Protected operations require a registered execution scope.");
966
+ }
967
+ return resolved;
968
+ }
969
+ function assertCanEdit2(runtime, objectTypeId) {
970
+ assertAuthorized2(runtime, { kind: "object.view", objectTypeId });
971
+ assertAuthorized2(runtime, { kind: "object.edit", objectTypeId });
972
+ }
973
+ function assertCanAppendTelemetry2(runtime, objectTypeId) {
974
+ assertAuthorized2(runtime, { kind: "telemetry.append", objectTypeId });
975
+ }
976
+ function assertCanManageConnector2(runtime, connectorId) {
977
+ assertAuthorized2(runtime, { kind: "connector.manage", connectorId });
978
+ }
979
+ function assertPrivileged2(runtime, operation) {
980
+ const resolved = assertRuntimeAuthorizationBound2(runtime);
981
+ if (resolved.type === "unrestricted") {
982
+ return;
983
+ }
984
+ throw new AuthorizationError2(`privileged:${operation}`, `[Sixb] Operation '${operation}' is not covered by scoped authorization grants.`);
985
+ }
986
+ function assertProviderAccess2(runtime, execution, operation) {
987
+ const resolved = resolveExecutionScopeAuthorization(runtime.projectId, {
988
+ execution,
989
+ authorization: runtime.runtimeAuthorization
990
+ });
991
+ if (resolved.type === "unrestricted") {
992
+ return;
993
+ }
994
+ if (execution.executor.type === "agent") {
995
+ return;
996
+ }
997
+ throw new AuthorizationError2(`privileged:${operation}`, `[Sixb] Operation '${operation}' is not covered by scoped authorization grants.`);
998
+ }
999
+ function deniedMessage(authorization, request) {
1000
+ const principalId = authorization?.principal.id ?? "unknown";
1001
+ switch (request.kind) {
1002
+ case "application.access":
1003
+ return `[Sixb] Principal '${principalId}' is not allowed to access application '${request.audience}'.`;
1004
+ case "object.view":
1005
+ return `[Sixb] Principal '${principalId}' is not allowed to view object type '${request.objectTypeId}'.`;
1006
+ case "dataset.view":
1007
+ return `[Sixb] Principal '${principalId}' is not allowed to view dataset '${request.datasetId}'.`;
1008
+ case "object.edit":
1009
+ return `[Sixb] Principal '${principalId}' is not allowed to write object type '${request.objectTypeId}'.`;
1010
+ case "telemetry.append":
1011
+ return `[Sixb] Principal '${principalId}' is not allowed to append telemetry for object type '${request.objectTypeId}'.`;
1012
+ case "action.apply":
1013
+ return `[Sixb] Principal '${principalId}' is not allowed to apply action '${request.actionId}'.`;
1014
+ case "share.manage":
1015
+ return `[Sixb] Principal '${principalId}' is not allowed to manage Share '${request.shareId}'.`;
1016
+ case "workflow.run":
1017
+ return `[Sixb] Principal '${principalId}' is not allowed to run workflow '${request.workflowId}'.`;
1018
+ case "sync.run":
1019
+ return `[Sixb] Principal '${principalId}' is not allowed to run sync '${request.syncId}'.`;
1020
+ case "pipeline.run":
1021
+ return `[Sixb] Principal '${principalId}' is not allowed to run pipeline '${request.pipelineId}'.`;
1022
+ case "agent.run":
1023
+ return `[Sixb] Principal '${principalId}' is not allowed to run the project Agent.`;
1024
+ case "logs.observe":
1025
+ return `[Sixb] Principal '${principalId}' is not allowed to observe project logs.`;
1026
+ case "aiUsage.observe":
1027
+ return `[Sixb] Principal '${principalId}' is not allowed to observe project AI usage.`;
1028
+ case "aiUsage.manage":
1029
+ return `[Sixb] Principal '${principalId}' is not allowed to manage project AI usage limits.`;
1030
+ case "connector.manage":
1031
+ return `[Sixb] Principal '${principalId}' is not allowed to manage connector '${request.connectorId}'.`;
1032
+ case "object.query": {
1033
+ const blocked = request.touchedObjectTypeIds.find((objectTypeId) => !isAllowed2(authorization, { kind: "object.view", objectTypeId }));
1034
+ return `[Sixb] Principal '${principalId}' is not allowed to view object type '${blocked}'.`;
1035
+ }
1036
+ }
1037
+ }
1038
+
1039
+ // src/authorization/application-access.ts
1040
+ function isApplicationAccessControlled2(roles, audience) {
1041
+ return roles.some((role) => role.grants["access:application"].has(audience));
1042
+ }
1043
+ function canAccessApplication2(authorization, roles, audience) {
1044
+ return !isApplicationAccessControlled2(roles, audience) || isAllowed2(authorization, { kind: "application.access", audience });
1045
+ }
1046
+ // src/authorization/event-visibility.ts
1047
+ function canViewEvent2(authorization, event) {
1048
+ if (!authorization) {
1049
+ return true;
1050
+ }
1051
+ switch (event.topic) {
1052
+ case "objects":
1053
+ case "telemetry":
1054
+ return isAllowed2(authorization, {
1055
+ kind: "object.view",
1056
+ objectTypeId: event.payload.objectTypeId
1057
+ });
1058
+ case "links":
1059
+ return isAllowed2(authorization, {
1060
+ kind: "object.view",
1061
+ objectTypeId: event.payload.sourceTypeId
1062
+ }) && isAllowed2(authorization, { kind: "object.view", objectTypeId: event.payload.targetTypeId });
1063
+ case "actions": {
1064
+ if (!isAllowed2(authorization, { kind: "action.apply", actionId: event.payload.actionId })) {
1065
+ return false;
1066
+ }
1067
+ const subject = event.payload.subject;
1068
+ return subject.kind === "object" ? isAllowed2(authorization, { kind: "object.view", objectTypeId: subject.objectTypeId }) : true;
1069
+ }
1070
+ case "workflows":
1071
+ return isAllowed2(authorization, {
1072
+ kind: "workflow.run",
1073
+ workflowId: event.payload.workflowId
1074
+ });
1075
+ case "rules":
1076
+ return isAllowed2(authorization, {
1077
+ kind: "object.view",
1078
+ objectTypeId: event.payload.subject.objectTypeId
1079
+ });
1080
+ case "syncs":
1081
+ return isAllowed2(authorization, {
1082
+ kind: "sync.run",
1083
+ syncId: event.payload.syncId
1084
+ });
1085
+ case "pipelines":
1086
+ return isAllowed2(authorization, {
1087
+ kind: "pipeline.run",
1088
+ pipelineId: event.payload.pipelineId
1089
+ });
1090
+ case "schedules":
1091
+ return true;
1092
+ case "datasets":
1093
+ return isAllowed2(authorization, {
1094
+ kind: "dataset.view",
1095
+ datasetId: event.payload.datasetId
1096
+ });
1097
+ default:
1098
+ return false;
1099
+ }
1100
+ }
1101
+ // src/authorization/resolve.ts
1102
+ function resolveRoleGrants2(role, universe) {
1103
+ const grants = emptyGrantSets();
1104
+ for (const grant of role.grants) {
1105
+ if (grant.capability === "run" && grant.target === "agent") {
1106
+ grants["run:agent"] = true;
1107
+ continue;
1108
+ }
1109
+ const kind = grantKindOf(grant);
1110
+ const spec = GRANT_KINDS[kind];
1111
+ expandSelection(grant.selection, universe[spec.universeKey], grants[kind], spec.expandsSubtypes ? universe.getSubTypes : undefined);
1112
+ }
1113
+ return grants;
1114
+ }
1115
+ function expandSelection(selection, universe, into, expand) {
1116
+ if (selection.all) {
1117
+ const except = new Set(selection.except);
1118
+ for (const id of universe) {
1119
+ if (!except.has(id)) {
1120
+ into.add(id);
1121
+ }
1122
+ }
1123
+ return;
1124
+ }
1125
+ for (const id of selection.ids) {
1126
+ into.add(id);
1127
+ if (expand) {
1128
+ for (const subTypeId of expand(id)) {
1129
+ into.add(subTypeId);
1130
+ }
1131
+ }
1132
+ }
1133
+ }
1134
+ function resolveAuthorizationContext2(input) {
1135
+ const memberGroupIds = new Set(input.groupIds);
1136
+ const roleIds = [];
1137
+ const grants = emptyGrantSets();
1138
+ for (const role of input.roles) {
1139
+ if (!role.grantedToGroupIds.some((groupId) => memberGroupIds.has(groupId))) {
1140
+ continue;
1141
+ }
1142
+ roleIds.push(role.id);
1143
+ if (role.grants["run:agent"]) {
1144
+ grants["run:agent"] = true;
1145
+ }
1146
+ for (const kind of TARGETED_GRANT_KIND_KEYS) {
1147
+ for (const id of role.grants[kind]) {
1148
+ grants[kind].add(id);
1149
+ }
1150
+ }
1151
+ }
1152
+ return {
1153
+ principal: input.principal,
1154
+ ...input.sessionId !== undefined ? { sessionId: input.sessionId } : {},
1155
+ groupIds: input.groupIds,
1156
+ roleIds,
1157
+ grants
1158
+ };
1159
+ }
1160
+ // src/projections/errors.ts
1161
+ class ProjectionValidationError2 extends Error {
1162
+ name = "ProjectionValidationError";
1163
+ }
1164
+
1165
+ // src/projections/ownership.ts
1166
+ function computeProjectionOwnership2(projection, ontology) {
1167
+ if (projection._tag === "ObjectProjectionDefinition") {
1168
+ const primaryId = ontology.getPrimaryPropertyId(projection.objectTypeId);
1169
+ return freezeOwnership({
1170
+ objects: [
1171
+ {
1172
+ objectTypeId: projection.objectTypeId,
1173
+ existence: true,
1174
+ propertyIds: Object.keys(projection.properties).filter((propertyId) => propertyId !== primaryId).sort(compareStrings)
1175
+ }
1176
+ ],
1177
+ links: Object.keys(projection.links).sort(compareStrings).map((linkId) => ({ sourceObjectTypeId: projection.objectTypeId, linkId })),
1178
+ telemetry: []
1179
+ });
1180
+ }
1181
+ if (projection._tag === "LinkProjectionDefinition") {
1182
+ return freezeOwnership({
1183
+ objects: [],
1184
+ links: [
1185
+ {
1186
+ sourceObjectTypeId: projection.sourceObjectTypeId,
1187
+ linkId: projection.linkId
1188
+ }
1189
+ ],
1190
+ telemetry: []
1191
+ });
1192
+ }
1193
+ return freezeOwnership({
1194
+ objects: [],
1195
+ links: [],
1196
+ telemetry: Object.keys(projection.properties).sort(compareStrings).map((propertyId) => ({
1197
+ objectTypeId: projection.objectTypeId,
1198
+ propertyId
1199
+ }))
1200
+ });
1201
+ }
1202
+ function validateProjectionOwnership2(projections) {
1203
+ const existenceOwners = new Map;
1204
+ const propertyOwners = new Map;
1205
+ const linkOwners = new Map;
1206
+ const telemetryOwners = new Map;
1207
+ for (const { definition, ownership } of projections) {
1208
+ for (const object of ownership.objects) {
1209
+ if (object.existence) {
1210
+ registerOwner(existenceOwners, object.objectTypeId, definition.id, `object type '${object.objectTypeId}' existence`);
1211
+ }
1212
+ for (const propertyId of object.propertyIds) {
1213
+ registerOwner(propertyOwners, JSON.stringify([object.objectTypeId, propertyId]), definition.id, `property '${object.objectTypeId}.${propertyId}'`);
1214
+ }
1215
+ }
1216
+ for (const link of ownership.links) {
1217
+ registerOwner(linkOwners, JSON.stringify([link.sourceObjectTypeId, link.linkId]), definition.id, `link scope '${link.sourceObjectTypeId}.${link.linkId}'`);
1218
+ }
1219
+ for (const telemetry of ownership.telemetry) {
1220
+ registerOwner(telemetryOwners, JSON.stringify([telemetry.objectTypeId, telemetry.propertyId]), definition.id, `telemetry source '${telemetry.objectTypeId}.${telemetry.propertyId}'`);
1221
+ }
1222
+ }
1223
+ }
1224
+ function registerOwner(owners, key, projectionId, description) {
1225
+ const existing = owners.get(key);
1226
+ if (existing !== undefined) {
1227
+ throw new ProjectionValidationError2(`[Sixb] Projection '${projectionId}' overlaps ${description} owned by projection '${existing}'.`);
1228
+ }
1229
+ owners.set(key, projectionId);
1230
+ }
1231
+ function freezeOwnership(ownership) {
1232
+ return Object.freeze({
1233
+ objects: Object.freeze(ownership.objects.map((object) => Object.freeze({ ...object, propertyIds: Object.freeze([...object.propertyIds]) }))),
1234
+ links: Object.freeze(ownership.links.map((link) => Object.freeze({ ...link }))),
1235
+ telemetry: Object.freeze(ownership.telemetry.map((telemetry) => Object.freeze({ ...telemetry })))
1236
+ });
1237
+ }
1238
+
1239
+ // src/projections/validation.ts
1240
+ function validatePropertyMapping(objectType, mapping) {
1241
+ const propertyIds = new Set(objectType.properties.map((p) => p.id));
1242
+ const mappingKeys = Object.keys(mapping);
1243
+ for (const key of mappingKeys) {
1244
+ if (!propertyIds.has(key)) {
1245
+ const available = [...propertyIds].sort().join(", ");
1246
+ throw new ProjectionValidationError2(`Property '${key}' does not exist on object type '${objectType.id}'. ` + `Available properties: ${available}`);
1247
+ }
1248
+ }
1249
+ const primaryProperties = objectType.properties.filter((p) => p.primary === true);
1250
+ if (primaryProperties.length !== 1) {
1251
+ throw new ProjectionValidationError2(`Object type '${objectType.id}' must have exactly one primary property, ` + `found ${primaryProperties.length}.`);
1252
+ }
1253
+ const primaryId = primaryProperties[0].id;
1254
+ if (!(primaryId in mapping)) {
1255
+ throw new ProjectionValidationError2(`Primary property '${primaryId}' of object type '${objectType.id}' ` + `must be included in the property mapping.`);
1256
+ }
1257
+ }
1258
+ function validateAndLowerLinkMapping(objectType, linkMapping, propertyMapping) {
1259
+ const linkIds = new Set(objectType.links.map((l) => l.id));
1260
+ const linksById = new Map(objectType.links.map((l) => [l.id, l]));
1261
+ const propertyIds = new Set(objectType.properties.map((p) => p.id));
1262
+ for (const [key, descriptor] of Object.entries(linkMapping)) {
1263
+ if (!linkIds.has(key)) {
1264
+ const available = [...linkIds].sort().join(", ");
1265
+ throw new ProjectionValidationError2(`Link '${key}' does not exist on object type '${objectType.id}'. ` + `Available links: ${available}`);
1266
+ }
1267
+ if (key !== descriptor.linkId) {
1268
+ throw new ProjectionValidationError2(`Link mapping key '${key}' does not match descriptor linkId '${descriptor.linkId}'.`);
1269
+ }
1270
+ const link = linksById.get(key);
1271
+ if (Array.isArray(link.targetObjectTypeId)) {
1272
+ throw new ProjectionValidationError2(`Link '${key}' on object type '${objectType.id}' has a polymorphic target. ` + `FK projection of polymorphic links is not yet supported.`);
1273
+ }
1274
+ if (link.targetObjectTypeId === "*") {
1275
+ throw new ProjectionValidationError2(`Link '${key}' on object type '${objectType.id}' has a wildcard target. ` + `FK projection of wildcard links is not supported.`);
1276
+ }
1277
+ const sourcePropertyId = descriptor.sourcePropertyId;
1278
+ const sourceField = descriptor.sourceField;
1279
+ if (sourcePropertyId && sourceField) {
1280
+ throw new ProjectionValidationError2(`FK link '${key}' must use either sourceProperty or sourceField, not both.`);
1281
+ }
1282
+ if (!sourcePropertyId && !sourceField) {
1283
+ throw new ProjectionValidationError2(`FK link '${key}' must declare sourceProperty or sourceField.`);
1284
+ }
1285
+ if (!sourcePropertyId) {
1286
+ continue;
1287
+ }
1288
+ if (!propertyIds.has(sourcePropertyId)) {
1289
+ const available = [...propertyIds].sort().join(", ");
1290
+ throw new ProjectionValidationError2(`Source property '${sourcePropertyId}' does not exist on ` + `object type '${objectType.id}'. Available properties: ${available}`);
1291
+ }
1292
+ if (!(sourcePropertyId in propertyMapping)) {
1293
+ throw new ProjectionValidationError2(`Source property '${sourcePropertyId}' for link '${key}' ` + `must be included in the property mapping.`);
1294
+ }
1295
+ }
1296
+ return Object.fromEntries(Object.entries(linkMapping).map(([linkId, descriptor]) => [
1297
+ linkId,
1298
+ {
1299
+ linkId: descriptor.linkId,
1300
+ ...descriptor.sourcePropertyId !== undefined ? { sourcePropertyId: descriptor.sourcePropertyId } : {},
1301
+ ...descriptor.sourceField !== undefined ? { sourceField: descriptor.sourceField } : {},
1302
+ targetObjectTypeId: descriptor.targetObjectTypeId
1303
+ }
1304
+ ]));
1305
+ }
1306
+ function validateLinkProjectionTarget(linkToken) {
1307
+ if (Array.isArray(linkToken.targetObjectTypeId)) {
1308
+ throw new ProjectionValidationError2(`Link '${linkToken.id}' has a polymorphic target. ` + `Link projection of polymorphic links is not yet supported.`);
1309
+ }
1310
+ if (linkToken.targetObjectTypeId === "*") {
1311
+ throw new ProjectionValidationError2(`Link '${linkToken.id}' has a wildcard target. ` + `Link projection of wildcard links is not supported.`);
1312
+ }
1313
+ }
1314
+ function validateTelemetryProjectionFieldMapping2(projection, objectType, datasetColumnNames, valueTypesById, prefix) {
1315
+ const mappedProperties = Object.entries(projection.properties);
1316
+ if (mappedProperties.length === 0) {
1317
+ throw new ProjectionValidationError2(`${prefix}: must map at least one telemetry property`);
1318
+ }
1319
+ const mappedFields = [
1320
+ ["objectId", projection.objectIdField],
1321
+ ["at", projection.atField]
1322
+ ];
1323
+ for (const [fieldRole, columnName] of mappedFields) {
1324
+ if (!datasetColumnNames.has(columnName)) {
1325
+ throw new ProjectionValidationError2(`${prefix}: ${fieldRole} field "${columnName}" references unknown dataset column ` + `on dataset "${projection.datasetId}"`);
1326
+ }
1327
+ }
1328
+ const propertiesById = new Map(objectType.properties.map((property) => [property.id, property]));
1329
+ const resolvedProperties = new Map;
1330
+ for (const [propertyId, mapping] of mappedProperties) {
1331
+ const property = propertiesById.get(propertyId);
1332
+ if (!property) {
1333
+ throw new ProjectionValidationError2(`${prefix}: unknown property "${propertyId}" on type "${projection.objectTypeId}"`);
1334
+ }
1335
+ if (property.mode !== "telemetry") {
1336
+ throw new ProjectionValidationError2(`${prefix}: property "${propertyId}" on type "${projection.objectTypeId}" must be telemetry-enabled`);
1337
+ }
1338
+ for (const [fieldRole, columnName] of [
1339
+ ["value", mapping.valueField],
1340
+ ...mapping.unitField !== undefined ? [["unit", mapping.unitField]] : []
1341
+ ]) {
1342
+ if (!datasetColumnNames.has(columnName)) {
1343
+ throw new ProjectionValidationError2(`${prefix}: property "${propertyId}" ${fieldRole} field "${columnName}" references ` + `unknown dataset column on dataset "${projection.datasetId}"`);
1344
+ }
1345
+ }
1346
+ const semanticType = resolveSemanticType2(property, valueTypesById);
1347
+ if (semanticType !== undefined && mapping.unitField === undefined) {
1348
+ throw new ProjectionValidationError2(`${prefix}: property "${propertyId}" requires a unit field because it uses semantic type "${semanticType}"`);
1349
+ }
1350
+ if (semanticType === undefined && mapping.unitField !== undefined) {
1351
+ throw new ProjectionValidationError2(`${prefix}: property "${propertyId}" cannot map a unit field because it has no semantic type`);
1352
+ }
1353
+ resolvedProperties.set(propertyId, property);
1354
+ }
1355
+ return resolvedProperties;
1356
+ }
1357
+ function validateProjectionsAtStartup(projections, ontology, datasetsById) {
1358
+ const { objectProjections, linkProjections, telemetryProjections } = projections;
1359
+ const objectTypesById = ontology.getObjectTypesById();
1360
+ const primaryByTypeId = ontology.getPrimaryByTypeId();
1361
+ const validatedObjectProjections = [];
1362
+ const validatedLinkProjections = [];
1363
+ const validatedTelemetryProjections = [];
1364
+ validateMaterializationOntologyConstraints(ontology);
1365
+ for (const projection of objectProjections) {
1366
+ const prefix = `Projection "${projection.id}"`;
1367
+ const dataset = datasetsById.get(projection.datasetId);
1368
+ if (!dataset) {
1369
+ throw new ProjectionValidationError2(`${prefix}: unknown dataset "${projection.datasetId}". ` + `Add it to 'datasets' in createSixb() or export it from 'datasets/'.`);
1370
+ }
1371
+ const objectType = objectTypesById.get(projection.objectTypeId);
1372
+ if (!objectType) {
1373
+ throw new ProjectionValidationError2(`${prefix}: unknown object type "${projection.objectTypeId}"`);
1374
+ }
1375
+ const datasetColumnNames = new Set(dataset.schema.columns.map((column) => column.name));
1376
+ const conflictResolution = projection.conflictResolution ?? { strategy: "editsWin" };
1377
+ if (conflictResolution.strategy === "mostRecent") {
1378
+ const sourceTimestamp = dataset.schema.columns.find((column) => column.name === conflictResolution.sourceTimestamp);
1379
+ if (!sourceTimestamp) {
1380
+ throw new ProjectionValidationError2(`${prefix}: source timestamp "${conflictResolution.sourceTimestamp}" references unknown ` + `dataset column on dataset "${projection.datasetId}"`);
1381
+ }
1382
+ if (sourceTimestamp.type !== "timestamp") {
1383
+ throw new ProjectionValidationError2(`${prefix}: source timestamp "${conflictResolution.sourceTimestamp}" must reference a ` + `timestamp dataset column`);
1384
+ }
1385
+ if (sourceTimestamp.nullable === true) {
1386
+ throw new ProjectionValidationError2(`${prefix}: source timestamp "${conflictResolution.sourceTimestamp}" must reference a ` + `non-null timestamp dataset column`);
1387
+ }
1388
+ }
1389
+ const propertyIds = new Set(objectType.properties.map((p) => p.id));
1390
+ for (const [propId, columnName] of Object.entries(projection.properties)) {
1391
+ if (!propertyIds.has(propId)) {
1392
+ throw new ProjectionValidationError2(`${prefix}: unknown property "${propId}" on type "${projection.objectTypeId}"`);
1393
+ }
1394
+ if (!datasetColumnNames.has(columnName)) {
1395
+ throw new ProjectionValidationError2(`${prefix}: property "${propId}" references unknown dataset column "${columnName}" ` + `on dataset "${projection.datasetId}"`);
1396
+ }
1397
+ const property = objectType.properties.find((candidate) => candidate.id === propId);
1398
+ if (property?.mode === "telemetry") {
1399
+ throw new ProjectionValidationError2(`[Sixb] ${prefix}: source mappings cannot own telemetry property "${projection.objectTypeId}.${propId}"`);
1400
+ }
1401
+ }
1402
+ const primaryId = primaryByTypeId.get(projection.objectTypeId);
1403
+ if (!(primaryId in projection.properties)) {
1404
+ throw new ProjectionValidationError2(`${prefix}: primary property "${primaryId}" must be in property mapping`);
1405
+ }
1406
+ const linkIds = new Set(objectType.links.map((l) => l.id));
1407
+ for (const [linkId, fk] of Object.entries(projection.links)) {
1408
+ if (!linkIds.has(linkId)) {
1409
+ throw new ProjectionValidationError2(`${prefix}: FK link "${linkId}" references unknown link on type "${projection.objectTypeId}"`);
1410
+ }
1411
+ if (fk.linkId !== linkId) {
1412
+ throw new ProjectionValidationError2(`${prefix}: FK link mapping key "${linkId}" does not match descriptor linkId "${fk.linkId}"`);
1413
+ }
1414
+ const sourcePropertyId = fk.sourcePropertyId;
1415
+ const sourceField = fk.sourceField;
1416
+ if (sourcePropertyId && sourceField) {
1417
+ throw new ProjectionValidationError2(`${prefix}: FK link "${linkId}" must use either sourcePropertyId or sourceField, not both`);
1418
+ }
1419
+ if (!sourcePropertyId && !sourceField) {
1420
+ throw new ProjectionValidationError2(`${prefix}: FK link "${linkId}" must declare sourcePropertyId or sourceField`);
1421
+ }
1422
+ if (sourcePropertyId && !propertyIds.has(sourcePropertyId)) {
1423
+ throw new ProjectionValidationError2(`${prefix}: FK link "${linkId}" source property "${sourcePropertyId}" does not exist on type "${projection.objectTypeId}"`);
1424
+ }
1425
+ if (sourcePropertyId && !(sourcePropertyId in projection.properties)) {
1426
+ throw new ProjectionValidationError2(`${prefix}: FK link "${linkId}" source property "${sourcePropertyId}" must be in property mapping`);
1427
+ }
1428
+ if (sourceField && !datasetColumnNames.has(sourceField)) {
1429
+ throw new ProjectionValidationError2(`${prefix}: FK link "${linkId}" source field "${sourceField}" references unknown dataset column on dataset "${projection.datasetId}"`);
1430
+ }
1431
+ if (!objectTypesById.has(fk.targetObjectTypeId)) {
1432
+ throw new ProjectionValidationError2(`${prefix}: FK link "${linkId}" target type "${fk.targetObjectTypeId}" is unknown`);
1433
+ }
1434
+ if (!primaryByTypeId.has(fk.targetObjectTypeId)) {
1435
+ throw new ProjectionValidationError2(`${prefix}: FK link "${linkId}" target type "${fk.targetObjectTypeId}" has no primary property`);
1436
+ }
1437
+ const link = objectType.links.find((candidate) => candidate.id === linkId);
1438
+ if (!ontology.isValidLinkTarget(link.targetObjectTypeId, fk.targetObjectTypeId)) {
1439
+ throw new ProjectionValidationError2(`${prefix}: FK link "${linkId}" target type "${fk.targetObjectTypeId}" is not compatible with its declared target`);
1440
+ }
1441
+ }
1442
+ validatedObjectProjections.push({
1443
+ definition: projection,
1444
+ dataset,
1445
+ ownership: computeProjectionOwnership2(projection, ontology)
1446
+ });
1447
+ }
1448
+ for (const projection of linkProjections) {
1449
+ const prefix = `Projection "${projection.id}"`;
1450
+ const dataset = datasetsById.get(projection.datasetId);
1451
+ if (!dataset) {
1452
+ throw new ProjectionValidationError2(`${prefix}: unknown dataset "${projection.datasetId}". ` + `Add it to 'datasets' in createSixb() or export it from 'datasets/'.`);
1453
+ }
1454
+ if (!objectTypesById.has(projection.sourceObjectTypeId)) {
1455
+ throw new ProjectionValidationError2(`${prefix}: unknown source type "${projection.sourceObjectTypeId}"`);
1456
+ }
1457
+ if (!objectTypesById.has(projection.targetObjectTypeId)) {
1458
+ throw new ProjectionValidationError2(`${prefix}: unknown target type "${projection.targetObjectTypeId}"`);
1459
+ }
1460
+ const sourceType = objectTypesById.get(projection.sourceObjectTypeId);
1461
+ const link = sourceType.links.find((candidate) => candidate.id === projection.linkId);
1462
+ if (!link) {
1463
+ throw new ProjectionValidationError2(`${prefix}: link "${projection.linkId}" does not exist on source type "${projection.sourceObjectTypeId}"`);
1464
+ }
1465
+ if (!ontology.isValidLinkTarget(link.targetObjectTypeId, projection.targetObjectTypeId)) {
1466
+ throw new ProjectionValidationError2(`${prefix}: target type "${projection.targetObjectTypeId}" is not compatible with link "${projection.linkId}"`);
1467
+ }
1468
+ const datasetColumnNames = new Set(dataset.schema.columns.map((column) => column.name));
1469
+ if (!datasetColumnNames.has(projection.sourceField)) {
1470
+ throw new ProjectionValidationError2(`${prefix}: source field "${projection.sourceField}" references unknown dataset column ` + `on dataset "${projection.datasetId}"`);
1471
+ }
1472
+ if (!datasetColumnNames.has(projection.targetField)) {
1473
+ throw new ProjectionValidationError2(`${prefix}: target field "${projection.targetField}" references unknown dataset column ` + `on dataset "${projection.datasetId}"`);
1474
+ }
1475
+ if (!primaryByTypeId.has(projection.sourceObjectTypeId)) {
1476
+ throw new ProjectionValidationError2(`${prefix}: source type "${projection.sourceObjectTypeId}" has no primary property`);
1477
+ }
1478
+ if (!primaryByTypeId.has(projection.targetObjectTypeId)) {
1479
+ throw new ProjectionValidationError2(`${prefix}: target type "${projection.targetObjectTypeId}" has no primary property`);
1480
+ }
1481
+ validatedLinkProjections.push({
1482
+ definition: projection,
1483
+ dataset,
1484
+ ownership: computeProjectionOwnership2(projection, ontology)
1485
+ });
1486
+ }
1487
+ for (const projection of telemetryProjections) {
1488
+ const prefix = `Projection "${projection.id}"`;
1489
+ const dataset = datasetsById.get(projection.datasetId);
1490
+ if (!dataset) {
1491
+ throw new ProjectionValidationError2(`${prefix}: unknown dataset "${projection.datasetId}". ` + `Add it to 'datasets' in createSixb() or export it from 'datasets/'.`);
1492
+ }
1493
+ const objectType = objectTypesById.get(projection.objectTypeId);
1494
+ if (!objectType) {
1495
+ throw new ProjectionValidationError2(`${prefix}: unknown object type "${projection.objectTypeId}"`);
1496
+ }
1497
+ const datasetColumnNames = new Set(dataset.schema.columns.map((column) => column.name));
1498
+ validateTelemetryProjectionFieldMapping2(projection, objectType, datasetColumnNames, ontology.getValueTypesById(), prefix);
1499
+ validatedTelemetryProjections.push({
1500
+ definition: projection,
1501
+ dataset,
1502
+ ownership: computeProjectionOwnership2(projection, ontology)
1503
+ });
1504
+ }
1505
+ const validatedProjections = [
1506
+ ...validatedObjectProjections,
1507
+ ...validatedLinkProjections,
1508
+ ...validatedTelemetryProjections
1509
+ ];
1510
+ validateProjectionOwnership2(validatedProjections);
1511
+ return {
1512
+ objectProjections: validatedObjectProjections,
1513
+ linkProjections: validatedLinkProjections,
1514
+ telemetryProjections: validatedTelemetryProjections
1515
+ };
1516
+ }
1517
+ function validateMaterializationOntologyConstraints(ontology) {
1518
+ for (const objectType of ontology.getObjectTypesById().values()) {
1519
+ for (const property of objectType.properties) {
1520
+ if (property.mode === "telemetry" && property.required === true) {
1521
+ throw new ProjectionValidationError2(`[Sixb] Telemetry property '${objectType.id}.${property.id}' cannot be required.`);
1522
+ }
1523
+ }
1524
+ for (const link of objectType.links) {
1525
+ for (const property of link.properties ?? []) {
1526
+ if (property.mode === "telemetry") {
1527
+ throw new ProjectionValidationError2(`[Sixb] Link property '${objectType.id}.${link.id}.${property.id}' cannot use telemetry mode.`);
1528
+ }
1529
+ }
1530
+ }
1531
+ }
1532
+ }
1533
+
1534
+ // src/projections/builders.ts
1535
+ function assertNonEmpty2(value, field) {
1536
+ if (!value.trim()) {
1537
+ throw new ProjectionValidationError2(`Projection ${field} must not be empty.`);
1538
+ }
1539
+ }
1540
+ function assertProjectionDataset(dataset) {
1541
+ if (!dataset || dataset.kind !== "dataset" || typeof dataset.id !== "string") {
1542
+ throw new ProjectionValidationError2("Projection dataset must be a dataset definition.");
1543
+ }
1544
+ assertNonEmpty2(dataset.id, "dataset id");
1545
+ }
1546
+ function isRecord2(value) {
1547
+ return typeof value === "object" && value !== null && !Array.isArray(value);
1548
+ }
1549
+ function lowerForeignKeyMapping(mapping) {
1550
+ const lowered = {};
1551
+ for (const [linkId, descriptor] of Object.entries(mapping)) {
1552
+ if (!descriptor)
1553
+ continue;
1554
+ lowered[linkId] = isForeignKeyDescriptor(descriptor) ? descriptor : fromForeignKey2(descriptor);
1555
+ }
1556
+ return lowered;
1557
+ }
1558
+ function isForeignKeyDescriptor(value) {
1559
+ return isRecord2(value) && typeof value.linkId === "string";
1560
+ }
1561
+ function defineProjection2(id, target) {
1562
+ if ("link" in target)
1563
+ return buildLinkProjection(id, target);
1564
+ if ("property" in target)
1565
+ return buildTelemetryProjection(id, target);
1566
+ return buildObjectTypeProjection(id, target);
1567
+ }
1568
+ function buildObjectTypeProjection(id, objectType) {
1569
+ assertNonEmpty2(id, "id");
1570
+ return {
1571
+ fromDataset(dataset) {
1572
+ assertProjectionDataset(dataset);
1573
+ const datasetId = dataset.id;
1574
+ return {
1575
+ properties(mapping) {
1576
+ const propertyMapping = mapping;
1577
+ validatePropertyMapping(objectType, propertyMapping);
1578
+ return objectProjectionBuilder({
1579
+ id,
1580
+ objectType,
1581
+ datasetId,
1582
+ propertyMapping,
1583
+ links: {},
1584
+ conflictResolution: { strategy: "editsWin" }
1585
+ });
1586
+ },
1587
+ points(mapping) {
1588
+ const pointMapping = lowerTelemetryPropertiesPointMapping(objectType, mapping);
1589
+ return {
1590
+ _tag: "TelemetryProjectionDefinition",
1591
+ id,
1592
+ objectTypeId: objectType.id,
1593
+ datasetId,
1594
+ objectIdField: pointMapping.objectId,
1595
+ atField: pointMapping.at,
1596
+ properties: pointMapping.properties
1597
+ };
1598
+ }
1599
+ };
1600
+ }
1601
+ };
1602
+ }
1603
+ function objectProjectionBuilder(input) {
1604
+ const definition = {
1605
+ _tag: "ObjectProjectionDefinition",
1606
+ id: input.id,
1607
+ objectTypeId: input.objectType.id,
1608
+ datasetId: input.datasetId,
1609
+ properties: { ...input.propertyMapping },
1610
+ links: { ...input.links },
1611
+ conflictResolution: { ...input.conflictResolution }
1612
+ };
1613
+ return Object.assign(definition, {
1614
+ withLinks(linkMapping) {
1615
+ const loweredLinkMapping = lowerForeignKeyMapping(linkMapping);
1616
+ const validatedLinks = validateAndLowerLinkMapping(input.objectType, loweredLinkMapping, input.propertyMapping);
1617
+ return objectProjectionBuilder({ ...input, links: validatedLinks });
1618
+ },
1619
+ resolveConflicts(resolution) {
1620
+ validateConflictResolution(resolution);
1621
+ return objectProjectionBuilder({
1622
+ ...input,
1623
+ conflictResolution: resolution
1624
+ });
1625
+ }
1626
+ });
1627
+ }
1628
+ function validateConflictResolution(resolution) {
1629
+ if (resolution.strategy === "editsWin")
1630
+ return;
1631
+ assertNonEmpty2(resolution.sourceTimestamp, "source timestamp field");
1632
+ }
1633
+ function buildTelemetryProjection(id, propertyToken) {
1634
+ assertNonEmpty2(id, "id");
1635
+ validateTelemetryProjectionProperty(propertyToken);
1636
+ return {
1637
+ fromDataset(dataset) {
1638
+ assertProjectionDataset(dataset);
1639
+ const datasetId = dataset.id;
1640
+ return {
1641
+ points(mapping) {
1642
+ const pointMapping = lowerTelemetryPointMapping(mapping);
1643
+ return {
1644
+ _tag: "TelemetryProjectionDefinition",
1645
+ id,
1646
+ objectTypeId: propertyToken.objectTypeId,
1647
+ datasetId,
1648
+ objectIdField: pointMapping.objectId,
1649
+ atField: pointMapping.at,
1650
+ properties: {
1651
+ [propertyToken.id]: {
1652
+ valueField: pointMapping.value,
1653
+ ...pointMapping.unit !== undefined ? { unitField: pointMapping.unit } : {}
1654
+ }
1655
+ }
1656
+ };
1657
+ }
1658
+ };
1659
+ }
1660
+ };
1661
+ }
1662
+ function validateTelemetryProjectionProperty(propertyToken) {
1663
+ if (propertyToken.property.mode !== "telemetry") {
1664
+ throw new ProjectionValidationError2(`Projection property '${propertyToken.objectTypeId}.${propertyToken.id}' must be telemetry-enabled.`);
1665
+ }
1666
+ }
1667
+ function lowerTelemetryPointMapping(mapping) {
1668
+ const allowedKeys = new Set(["objectId", "at", "value", "unit"]);
1669
+ for (const key of Object.keys(mapping)) {
1670
+ if (!allowedKeys.has(key)) {
1671
+ throw new ProjectionValidationError2(`Telemetry projection point mapping contains unknown key '${key}'.`);
1672
+ }
1673
+ }
1674
+ if (mapping.objectId === undefined) {
1675
+ throw new ProjectionValidationError2("Telemetry projection point mapping requires objectId.");
1676
+ }
1677
+ if (mapping.at === undefined) {
1678
+ throw new ProjectionValidationError2("Telemetry projection point mapping requires at.");
1679
+ }
1680
+ if (mapping.value === undefined) {
1681
+ throw new ProjectionValidationError2("Telemetry projection point mapping requires value.");
1682
+ }
1683
+ assertNonEmpty2(mapping.objectId, "objectId field");
1684
+ assertNonEmpty2(mapping.at, "at field");
1685
+ assertNonEmpty2(mapping.value, "value field");
1686
+ if (mapping.unit !== undefined) {
1687
+ assertNonEmpty2(mapping.unit, "unit field");
1688
+ }
1689
+ return {
1690
+ objectId: mapping.objectId,
1691
+ at: mapping.at,
1692
+ value: mapping.value,
1693
+ ...mapping.unit !== undefined ? { unit: mapping.unit } : {}
1694
+ };
1695
+ }
1696
+ function lowerTelemetryPropertiesPointMapping(objectType, mapping) {
1697
+ const allowedKeys = new Set(["objectId", "at", "properties"]);
1698
+ for (const key of Object.keys(mapping)) {
1699
+ if (!allowedKeys.has(key)) {
1700
+ throw new ProjectionValidationError2(`Telemetry projection point mapping contains unknown key '${key}'.`);
1701
+ }
1702
+ }
1703
+ if (mapping.objectId === undefined) {
1704
+ throw new ProjectionValidationError2("Telemetry projection point mapping requires objectId.");
1705
+ }
1706
+ if (mapping.at === undefined) {
1707
+ throw new ProjectionValidationError2("Telemetry projection point mapping requires at.");
1708
+ }
1709
+ if (mapping.properties === undefined) {
1710
+ throw new ProjectionValidationError2("Telemetry projection point mapping requires properties.");
1711
+ }
1712
+ if (!isRecord2(mapping.properties)) {
1713
+ throw new ProjectionValidationError2("Telemetry projection point mapping properties must be an object.");
1714
+ }
1715
+ assertNonEmpty2(mapping.objectId, "objectId field");
1716
+ assertNonEmpty2(mapping.at, "at field");
1717
+ const propertyEntries = Object.entries(mapping.properties);
1718
+ if (propertyEntries.length === 0) {
1719
+ throw new ProjectionValidationError2("Telemetry projection point mapping requires at least one property.");
1720
+ }
1721
+ const propertiesById = new Map(objectType.properties.map((property) => [property.id, property]));
1722
+ const properties = {};
1723
+ for (const [propertyId, input] of propertyEntries) {
1724
+ const property = propertiesById.get(propertyId);
1725
+ if (!property) {
1726
+ throw new ProjectionValidationError2(`Property '${propertyId}' does not exist on object type '${objectType.id}'.`);
1727
+ }
1728
+ if (property.mode !== "telemetry") {
1729
+ throw new ProjectionValidationError2(`Projection property '${objectType.id}.${propertyId}' must be telemetry-enabled.`);
1730
+ }
1731
+ properties[propertyId] = lowerTelemetryPropertyMapping(propertyId, input);
1732
+ }
1733
+ return { objectId: mapping.objectId, at: mapping.at, properties };
1734
+ }
1735
+ function lowerTelemetryPropertyMapping(propertyId, input) {
1736
+ if (typeof input === "string") {
1737
+ assertNonEmpty2(input, `property '${propertyId}' value field`);
1738
+ return { valueField: input };
1739
+ }
1740
+ if (!isRecord2(input)) {
1741
+ throw new ProjectionValidationError2(`Telemetry projection property '${propertyId}' must map a value column or value/unit columns.`);
1742
+ }
1743
+ const allowedKeys = new Set(["value", "unit"]);
1744
+ for (const key of Object.keys(input)) {
1745
+ if (!allowedKeys.has(key)) {
1746
+ throw new ProjectionValidationError2(`Telemetry projection property '${propertyId}' contains unknown key '${key}'.`);
1747
+ }
1748
+ }
1749
+ if (typeof input.value !== "string") {
1750
+ throw new ProjectionValidationError2(`Telemetry projection property '${propertyId}' requires a value field.`);
1751
+ }
1752
+ if (typeof input.unit !== "string") {
1753
+ throw new ProjectionValidationError2(`Telemetry projection property '${propertyId}' requires a unit field.`);
1754
+ }
1755
+ assertNonEmpty2(input.value, `property '${propertyId}' value field`);
1756
+ assertNonEmpty2(input.unit, `property '${propertyId}' unit field`);
1757
+ return { valueField: input.value, unitField: input.unit };
1758
+ }
1759
+ function fromForeignKey2(input) {
1760
+ validateLinkProjectionTarget(input.link);
1761
+ if (input.sourceProperty) {
1762
+ return {
1763
+ linkId: input.link.id,
1764
+ sourcePropertyId: input.sourceProperty.id,
1765
+ targetObjectTypeId: input.target.id
1766
+ };
1767
+ }
1768
+ if (input.sourceField === undefined) {
1769
+ throw new ProjectionValidationError2("Foreign key sourceField is required.");
1770
+ }
1771
+ assertNonEmpty2(input.sourceField, "source field");
1772
+ return {
1773
+ linkId: input.link.id,
1774
+ sourceField: input.sourceField,
1775
+ targetObjectTypeId: input.target.id
1776
+ };
1777
+ }
1778
+ function buildLinkProjection(id, linkToken) {
1779
+ assertNonEmpty2(id, "id");
1780
+ validateLinkProjectionTarget(linkToken);
1781
+ return {
1782
+ fromDataset(dataset) {
1783
+ assertProjectionDataset(dataset);
1784
+ const datasetId = dataset.id;
1785
+ return {
1786
+ sourceField(columnName) {
1787
+ assertNonEmpty2(columnName, "source field");
1788
+ return {
1789
+ targetField(targetColumnName) {
1790
+ assertNonEmpty2(targetColumnName, "target field");
1791
+ return {
1792
+ _tag: "LinkProjectionDefinition",
1793
+ id,
1794
+ linkId: linkToken.id,
1795
+ sourceObjectTypeId: linkToken.objectTypeId,
1796
+ targetObjectTypeId: linkToken.targetObjectTypeId,
1797
+ datasetId,
1798
+ sourceField: columnName,
1799
+ targetField: targetColumnName
1800
+ };
1801
+ }
1802
+ };
1803
+ }
1804
+ };
1805
+ }
1806
+ };
1807
+ }
1808
+ function isObjectProjectionDefinition2(value) {
1809
+ if (!isRecord2(value))
1810
+ return false;
1811
+ return value._tag === "ObjectProjectionDefinition" && typeof value.id === "string" && typeof value.objectTypeId === "string" && typeof value.datasetId === "string" && isRecord2(value.properties) && isRecord2(value.links) && isSourceEditConflictResolution(value.conflictResolution);
1812
+ }
1813
+ function isSourceEditConflictResolution(value) {
1814
+ if (value === undefined)
1815
+ return true;
1816
+ if (!isRecord2(value) || typeof value.strategy !== "string")
1817
+ return false;
1818
+ if (value.strategy === "editsWin")
1819
+ return value.sourceTimestamp === undefined;
1820
+ return value.strategy === "mostRecent" && typeof value.sourceTimestamp === "string";
1821
+ }
1822
+ function isLinkProjectionDefinition2(value) {
1823
+ if (!isRecord2(value))
1824
+ return false;
1825
+ return value._tag === "LinkProjectionDefinition" && typeof value.id === "string" && typeof value.linkId === "string" && typeof value.sourceObjectTypeId === "string" && typeof value.targetObjectTypeId === "string" && typeof value.datasetId === "string" && typeof value.sourceField === "string" && typeof value.targetField === "string";
1826
+ }
1827
+ function isTelemetryProjectionDefinition2(value) {
1828
+ if (!isRecord2(value))
1829
+ return false;
1830
+ return value._tag === "TelemetryProjectionDefinition" && typeof value.id === "string" && typeof value.objectTypeId === "string" && typeof value.datasetId === "string" && typeof value.objectIdField === "string" && typeof value.atField === "string" && isTelemetryProjectionProperties(value.properties);
1831
+ }
1832
+ function isTelemetryProjectionProperties(value) {
1833
+ if (!isRecord2(value) || Object.keys(value).length === 0)
1834
+ return false;
1835
+ return Object.values(value).every((mapping) => isRecord2(mapping) && typeof mapping.valueField === "string" && (mapping.unitField === undefined || typeof mapping.unitField === "string"));
1836
+ }
1837
+ function isProjectionDefinition2(value) {
1838
+ return isObjectProjectionDefinition2(value) || isLinkProjectionDefinition2(value) || isTelemetryProjectionDefinition2(value);
1839
+ }
1840
+ function projectionTargetOf2(projection) {
1841
+ return projection._tag === "LinkProjectionDefinition" ? {
1842
+ sourceObjectTypeId: projection.sourceObjectTypeId,
1843
+ targetObjectTypeId: projection.targetObjectTypeId
1844
+ } : { objectTypeId: projection.objectTypeId };
1845
+ }
1846
+
1847
+ // src/authorization/run-visibility.ts
1848
+ function canViewActionRun2(authorization, run) {
1849
+ if (!authorization) {
1850
+ return true;
1851
+ }
1852
+ if (!isAllowed2(authorization, { kind: "action.apply", actionId: run.actionId })) {
1853
+ return false;
1854
+ }
1855
+ return run.subject.kind !== "object" ? true : isAllowed2(authorization, {
1856
+ kind: "object.view",
1857
+ objectTypeId: run.subject.objectTypeId
1858
+ });
1859
+ }
1860
+ function canViewWorkflowRun2(authorization, run) {
1861
+ return !authorization || isAllowed2(authorization, { kind: "workflow.run", workflowId: run.workflowId });
1862
+ }
1863
+ function canViewWorkflowIntervention2(authorization, intervention) {
1864
+ return !authorization || isAllowed2(authorization, { kind: "workflow.run", workflowId: intervention.workflowId });
1865
+ }
1866
+ function canViewPipelineRun2(authorization, run) {
1867
+ return !authorization || isAllowed2(authorization, { kind: "pipeline.run", pipelineId: run.pipelineId });
1868
+ }
1869
+ function canViewProjectionRun2(authorization, target) {
1870
+ if (!authorization)
1871
+ return true;
1872
+ const canView = (objectTypeId) => isAllowed2(authorization, { kind: "object.view", objectTypeId });
1873
+ if ("sourceObjectTypeId" in target) {
1874
+ return canView(target.sourceObjectTypeId) && canView(target.targetObjectTypeId);
1875
+ }
1876
+ return canView(target.objectTypeId);
1877
+ }
1878
+ function canViewProjection2(authorization, projection) {
1879
+ return canViewProjectionRun2(authorization, projectionTargetOf2(projection));
1880
+ }
1881
+ // src/authorization/types.ts
1882
+ function emptyGrantIndex2() {
1883
+ return emptyGrantSets();
1884
+ }
1885
+ export { ProjectionValidationError2, computeProjectionOwnership2, validateProjectionOwnership2, validateTelemetryProjectionFieldMapping2, validateProjectionsAtStartup, defineProjection2, fromForeignKey2, isObjectProjectionDefinition2, isLinkProjectionDefinition2, isTelemetryProjectionDefinition2, isProjectionDefinition2, projectionTargetOf2, agentServiceAccountId2, GRANT_KINDS, grantKindOf, MAX_OBJECT_READ_FACETS2, ObjectReadLimitExceededError2, snapshotObjectReadExecutionLimits2, assertObjectReadFacetCount2, assertObjectReadOutputWithinLimit2, createPrincipalRuntimeAuthorization, createAgentRuntimeAuthorization, createDisabledRuntimeAuthorization, createDelegatedRuntimeAuthorization, createTrustedPrimitiveRuntimeAuthorization, resolveRuntimeAuthorizationForProject, getAuthorizationRef, captureExecutionScope, resolveExecutionScopeAuthorization, AuthorizationError2, evaluate2, isAllowed2, assertAuthorized2, isRuntimeAllowed2, assertRuntimeAuthorizationBound2, assertCanEdit2, assertCanAppendTelemetry2, assertCanManageConnector2, assertPrivileged2, assertProviderAccess2, isApplicationAccessControlled2, canAccessApplication2, canViewEvent2, resolveRoleGrants2, resolveAuthorizationContext2, canViewActionRun2, canViewWorkflowRun2, canViewWorkflowIntervention2, canViewPipelineRun2, canViewProjectionRun2, canViewProjection2, emptyGrantIndex2 };
1886
+
1887
+ //# debugId=C7649C713C108F6A64756E2164756E21