@sixb/core 0.1.19 → 0.1.21

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 (765) hide show
  1. package/dist/actions/execution.d.ts.map +1 -1
  2. package/dist/actions/index.js +54 -47
  3. package/dist/actions/index.js.map +1 -1
  4. package/dist/actions/request.d.ts.map +1 -1
  5. package/dist/actions/run-authorization.d.ts +9 -0
  6. package/dist/actions/run-authorization.d.ts.map +1 -1
  7. package/dist/activity/connection.d.ts +62 -0
  8. package/dist/activity/connection.d.ts.map +1 -0
  9. package/dist/activity/device.d.ts +8 -0
  10. package/dist/activity/device.d.ts.map +1 -0
  11. package/dist/activity/execution.d.ts +48 -0
  12. package/dist/activity/execution.d.ts.map +1 -0
  13. package/dist/activity/service.d.ts +79 -0
  14. package/dist/activity/service.d.ts.map +1 -0
  15. package/dist/activity/shares.d.ts +24 -0
  16. package/dist/activity/shares.d.ts.map +1 -0
  17. package/dist/activity/timeline.d.ts +96 -0
  18. package/dist/activity/timeline.d.ts.map +1 -0
  19. package/dist/agents/index.d.ts +2 -1
  20. package/dist/agents/index.d.ts.map +1 -1
  21. package/dist/agents/index.js +63 -50
  22. package/dist/agents/index.js.map +1 -1
  23. package/dist/agents/request.d.ts.map +1 -1
  24. package/dist/agents/skills.d.ts.map +1 -1
  25. package/dist/agents/streams/index.js +3 -3
  26. package/dist/agents/streams/internal.js +3 -3
  27. package/dist/agents/types.d.ts +8 -8
  28. package/dist/agents/types.d.ts.map +1 -1
  29. package/dist/agents/validation.d.ts +1 -1
  30. package/dist/agents/validation.d.ts.map +1 -1
  31. package/dist/artifacts/address.d.ts +48 -0
  32. package/dist/artifacts/address.d.ts.map +1 -0
  33. package/dist/artifacts/csv.d.ts +22 -0
  34. package/dist/artifacts/csv.d.ts.map +1 -0
  35. package/dist/artifacts/errors.d.ts +11 -0
  36. package/dist/artifacts/errors.d.ts.map +1 -0
  37. package/dist/artifacts/execution.d.ts +43 -0
  38. package/dist/artifacts/execution.d.ts.map +1 -0
  39. package/dist/artifacts/frames/assets.d.ts +28 -0
  40. package/dist/artifacts/frames/assets.d.ts.map +1 -0
  41. package/dist/artifacts/frames/grants.d.ts +37 -0
  42. package/dist/artifacts/frames/grants.d.ts.map +1 -0
  43. package/dist/artifacts/frames/index.d.ts +10 -0
  44. package/dist/artifacts/frames/index.d.ts.map +1 -0
  45. package/dist/artifacts/frames/index.js +892 -0
  46. package/dist/artifacts/frames/index.js.map +14 -0
  47. package/dist/artifacts/frames/kit.d.ts +66 -0
  48. package/dist/artifacts/frames/kit.d.ts.map +1 -0
  49. package/dist/artifacts/frames/probe.d.ts +41 -0
  50. package/dist/artifacts/frames/probe.d.ts.map +1 -0
  51. package/dist/artifacts/frames/protocol.d.ts +98 -0
  52. package/dist/artifacts/frames/protocol.d.ts.map +1 -0
  53. package/dist/artifacts/frames/runtime.d.ts +13 -0
  54. package/dist/artifacts/frames/runtime.d.ts.map +1 -0
  55. package/dist/artifacts/html.d.ts +6 -0
  56. package/dist/artifacts/html.d.ts.map +1 -0
  57. package/dist/artifacts/ids.d.ts +5 -0
  58. package/dist/artifacts/ids.d.ts.map +1 -0
  59. package/dist/artifacts/index.d.ts +16 -0
  60. package/dist/artifacts/index.d.ts.map +1 -0
  61. package/dist/artifacts/index.js +125 -0
  62. package/dist/artifacts/index.js.map +10 -0
  63. package/dist/artifacts/kinds.d.ts +5 -0
  64. package/dist/artifacts/kinds.d.ts.map +1 -0
  65. package/dist/artifacts/limits.d.ts +28 -0
  66. package/dist/artifacts/limits.d.ts.map +1 -0
  67. package/dist/artifacts/outline.d.ts +44 -0
  68. package/dist/artifacts/outline.d.ts.map +1 -0
  69. package/dist/artifacts/publish/files.d.ts +15 -0
  70. package/dist/artifacts/publish/files.d.ts.map +1 -0
  71. package/dist/artifacts/publish/index.d.ts +5 -0
  72. package/dist/artifacts/publish/index.d.ts.map +1 -0
  73. package/dist/artifacts/publish/index.js +36 -0
  74. package/dist/artifacts/publish/index.js.map +9 -0
  75. package/dist/artifacts/publish/publish.d.ts +52 -0
  76. package/dist/artifacts/publish/publish.d.ts.map +1 -0
  77. package/dist/artifacts/publish/references.d.ts +27 -0
  78. package/dist/artifacts/publish/references.d.ts.map +1 -0
  79. package/dist/artifacts/publish/validate/document.d.ts +17 -0
  80. package/dist/artifacts/publish/validate/document.d.ts.map +1 -0
  81. package/dist/artifacts/publish/validate/file.d.ts +8 -0
  82. package/dist/artifacts/publish/validate/file.d.ts.map +1 -0
  83. package/dist/artifacts/publish/validate/sheet.d.ts +15 -0
  84. package/dist/artifacts/publish/validate/sheet.d.ts.map +1 -0
  85. package/dist/artifacts/publish/validate/slides.d.ts +21 -0
  86. package/dist/artifacts/publish/validate/slides.d.ts.map +1 -0
  87. package/dist/artifacts/references.d.ts +12 -0
  88. package/dist/artifacts/references.d.ts.map +1 -0
  89. package/dist/artifacts/resolve.d.ts +41 -0
  90. package/dist/artifacts/resolve.d.ts.map +1 -0
  91. package/dist/artifacts/theme.d.ts +19 -0
  92. package/dist/artifacts/theme.d.ts.map +1 -0
  93. package/dist/artifacts/warnings.d.ts +11 -0
  94. package/dist/artifacts/warnings.d.ts.map +1 -0
  95. package/dist/artifacts/workbook.d.ts +64 -0
  96. package/dist/artifacts/workbook.d.ts.map +1 -0
  97. package/dist/auth/cookies.d.ts +2 -4
  98. package/dist/auth/cookies.d.ts.map +1 -1
  99. package/dist/auth/index.d.ts +0 -2
  100. package/dist/auth/index.d.ts.map +1 -1
  101. package/dist/auth/index.js +14 -20
  102. package/dist/auth/index.js.map +1 -1
  103. package/dist/auth/runtime.d.ts +8 -10
  104. package/dist/auth/runtime.d.ts.map +1 -1
  105. package/dist/auth/session-cache.d.ts +1 -5
  106. package/dist/auth/session-cache.d.ts.map +1 -1
  107. package/dist/auth/strategy.js +1 -1
  108. package/dist/auth/types.d.ts +4 -8
  109. package/dist/auth/types.d.ts.map +1 -1
  110. package/dist/auth/validation.d.ts +0 -1
  111. package/dist/auth/validation.d.ts.map +1 -1
  112. package/dist/authorization/decision.d.ts +2 -4
  113. package/dist/authorization/decision.d.ts.map +1 -1
  114. package/dist/authorization/grant-kinds.d.ts +6 -8
  115. package/dist/authorization/grant-kinds.d.ts.map +1 -1
  116. package/dist/authorization/index.d.ts +0 -1
  117. package/dist/authorization/index.d.ts.map +1 -1
  118. package/dist/authorization/index.js +7 -11
  119. package/dist/authorization/index.js.map +1 -1
  120. package/dist/authorization/resolve.d.ts +1 -1
  121. package/dist/authorization/resolve.d.ts.map +1 -1
  122. package/dist/blob-storage/browser.js +1 -1
  123. package/dist/blob-storage/index.js +2 -2
  124. package/dist/blob-storage/internal.d.ts +1 -1
  125. package/dist/blob-storage/internal.d.ts.map +1 -1
  126. package/dist/blob-storage/internal.js +11 -5
  127. package/dist/blob-storage/internal.js.map +1 -1
  128. package/dist/blob-storage/media-type.d.ts +12 -0
  129. package/dist/blob-storage/media-type.d.ts.map +1 -1
  130. package/dist/bootstrap/index.js +54 -48
  131. package/dist/bootstrap/index.js.map +2 -2
  132. package/dist/{chunk-t6vq7bff.js → chunk-0bphap9y.js} +5 -5
  133. package/dist/{chunk-7mbzgd9m.js → chunk-1cc1xaf3.js} +3 -3
  134. package/dist/chunk-3jms7je7.js +14 -0
  135. package/dist/chunk-3jms7je7.js.map +10 -0
  136. package/dist/{chunk-s54c868q.js → chunk-3qct2mdc.js} +3 -13
  137. package/dist/chunk-3qct2mdc.js.map +12 -0
  138. package/dist/{chunk-6gmfggss.js → chunk-431pyp2c.js} +3 -3
  139. package/dist/{chunk-c85m1hyj.js → chunk-447a5c0p.js} +2 -2
  140. package/dist/chunk-48qjhh6v.js +185 -0
  141. package/dist/chunk-48qjhh6v.js.map +13 -0
  142. package/dist/{chunk-80mc0971.js → chunk-561r0yc9.js} +8 -8
  143. package/dist/{chunk-5e43w60z.js → chunk-5948n82c.js} +2 -2
  144. package/dist/{chunk-yzwja0mj.js → chunk-5hx48dnn.js} +2 -2
  145. package/dist/{chunk-tjb1mk5t.js → chunk-5vems3nx.js} +5 -6
  146. package/dist/{chunk-tjb1mk5t.js.map → chunk-5vems3nx.js.map} +3 -3
  147. package/dist/{chunk-aff7cyea.js → chunk-61y5xs4p.js} +563 -167
  148. package/dist/{chunk-aff7cyea.js.map → chunk-61y5xs4p.js.map} +12 -9
  149. package/dist/chunk-65abf64x.js +13 -0
  150. package/dist/chunk-65abf64x.js.map +10 -0
  151. package/dist/{chunk-z3y5kg1x.js → chunk-6eqsgvxk.js} +3 -3
  152. package/dist/{chunk-z3y5kg1x.js.map → chunk-6eqsgvxk.js.map} +2 -2
  153. package/dist/chunk-6rqgmkde.js +2028 -0
  154. package/dist/chunk-6rqgmkde.js.map +29 -0
  155. package/dist/{chunk-y7rqfrgg.js → chunk-6vb4st8k.js} +29 -38
  156. package/dist/chunk-6vb4st8k.js.map +23 -0
  157. package/dist/chunk-7q8t23v4.js +467 -0
  158. package/dist/chunk-7q8t23v4.js.map +14 -0
  159. package/dist/{chunk-kyzq4wy9.js → chunk-858emn8m.js} +17 -17
  160. package/dist/chunk-858emn8m.js.map +18 -0
  161. package/dist/{chunk-hvsb78a1.js → chunk-8frc8a4j.js} +26 -26
  162. package/dist/{chunk-hvsb78a1.js.map → chunk-8frc8a4j.js.map} +2 -2
  163. package/dist/{chunk-3zxk45er.js → chunk-8ncg20rd.js} +3 -68
  164. package/dist/{chunk-3zxk45er.js.map → chunk-8ncg20rd.js.map} +4 -5
  165. package/dist/{chunk-j2bp5ryw.js → chunk-918wwnaa.js} +495 -28
  166. package/dist/{chunk-j2bp5ryw.js.map → chunk-918wwnaa.js.map} +14 -12
  167. package/dist/{chunk-1f7wpmyp.js → chunk-9j4jw7as.js} +103 -110
  168. package/dist/chunk-9j4jw7as.js.map +14 -0
  169. package/dist/chunk-9kgkfg6v.js +502 -0
  170. package/dist/chunk-9kgkfg6v.js.map +14 -0
  171. package/dist/chunk-a3faa34j.js +74 -0
  172. package/dist/chunk-a3faa34j.js.map +10 -0
  173. package/dist/{chunk-ey3pyej1.js → chunk-akzryx9h.js} +347 -1174
  174. package/dist/{chunk-ey3pyej1.js.map → chunk-akzryx9h.js.map} +19 -25
  175. package/dist/chunk-arns890k.js +10 -0
  176. package/dist/chunk-arns890k.js.map +10 -0
  177. package/dist/{chunk-zrmy8zvw.js → chunk-bk9svbcq.js} +11 -11
  178. package/dist/{chunk-zrmy8zvw.js.map → chunk-bk9svbcq.js.map} +2 -2
  179. package/dist/{chunk-hkc3jct7.js → chunk-c06hmxyy.js} +2 -10
  180. package/dist/chunk-c06hmxyy.js.map +10 -0
  181. package/dist/{chunk-q1vkr2ys.js → chunk-c1rxbz5y.js} +3 -3
  182. package/dist/chunk-cfj9dfbb.js +288 -0
  183. package/dist/chunk-cfj9dfbb.js.map +12 -0
  184. package/dist/{chunk-4tcx876c.js → chunk-cn0fwwhy.js} +19 -19
  185. package/dist/{chunk-4tcx876c.js.map → chunk-cn0fwwhy.js.map} +1 -1
  186. package/dist/{chunk-gc4ntf7d.js → chunk-cwdzcv37.js} +1 -1
  187. package/dist/{chunk-fa02jy15.js → chunk-cy4mbddw.js} +1 -1
  188. package/dist/{chunk-7kg3k1m9.js → chunk-d09e3rax.js} +1 -1
  189. package/dist/chunk-d5rjr8c0.js +176 -0
  190. package/dist/chunk-d5rjr8c0.js.map +12 -0
  191. package/dist/{chunk-rhg02hxq.js → chunk-d7dnxdep.js} +3 -3
  192. package/dist/{chunk-b38szspf.js → chunk-dhcv7yxc.js} +1 -1
  193. package/dist/{chunk-b38szspf.js.map → chunk-dhcv7yxc.js.map} +1 -1
  194. package/dist/{chunk-enpsx8k5.js → chunk-dhdha526.js} +23 -21
  195. package/dist/chunk-dhdha526.js.map +10 -0
  196. package/dist/{chunk-8mx7qw3y.js → chunk-dvd2fp9q.js} +2 -2
  197. package/dist/{chunk-8mx7qw3y.js.map → chunk-dvd2fp9q.js.map} +3 -3
  198. package/dist/{chunk-bwjcehza.js → chunk-e17zdm62.js} +6 -12
  199. package/dist/{chunk-bwjcehza.js.map → chunk-e17zdm62.js.map} +3 -4
  200. package/dist/{chunk-tpn40322.js → chunk-e6k4thh5.js} +11 -10
  201. package/dist/{chunk-tpn40322.js.map → chunk-e6k4thh5.js.map} +3 -3
  202. package/dist/{chunk-tw03bsmb.js → chunk-eptrvnby.js} +224 -3
  203. package/dist/chunk-eptrvnby.js.map +12 -0
  204. package/dist/{chunk-xt1zt7gv.js → chunk-f4pamkt9.js} +30 -23
  205. package/dist/chunk-f4pamkt9.js.map +12 -0
  206. package/dist/chunk-ff5xkv0p.js +211 -0
  207. package/dist/chunk-ff5xkv0p.js.map +10 -0
  208. package/dist/{chunk-bpgy64fw.js → chunk-g257jwnc.js} +10 -4
  209. package/dist/{chunk-bpgy64fw.js.map → chunk-g257jwnc.js.map} +3 -3
  210. package/dist/chunk-g5bvzyyr.js +32 -0
  211. package/dist/chunk-g5bvzyyr.js.map +10 -0
  212. package/dist/{chunk-2jntasmh.js → chunk-hcbyfxbe.js} +25 -49
  213. package/dist/chunk-hcbyfxbe.js.map +12 -0
  214. package/dist/chunk-hke9aeen.js +9 -0
  215. package/dist/chunk-hke9aeen.js.map +10 -0
  216. package/dist/{chunk-1sr8ryzk.js → chunk-hwksyjks.js} +122 -1
  217. package/dist/{chunk-1sr8ryzk.js.map → chunk-hwksyjks.js.map} +3 -3
  218. package/dist/chunk-jcfw4h7m.js +9 -0
  219. package/dist/chunk-jcfw4h7m.js.map +10 -0
  220. package/dist/{chunk-85yvv5n0.js → chunk-k43ct2ke.js} +20 -11
  221. package/dist/chunk-k43ct2ke.js.map +12 -0
  222. package/dist/{chunk-dnmadg9k.js → chunk-kge7k6ey.js} +40 -8
  223. package/dist/chunk-kge7k6ey.js.map +15 -0
  224. package/dist/{chunk-wz0xs816.js → chunk-ky3j490c.js} +2 -2
  225. package/dist/chunk-mjddfa7k.js +129 -0
  226. package/dist/chunk-mjddfa7k.js.map +12 -0
  227. package/dist/{chunk-3gnrh4ve.js → chunk-nn5xnx3s.js} +86 -111
  228. package/dist/chunk-nn5xnx3s.js.map +40 -0
  229. package/dist/{chunk-rz53yb4v.js → chunk-q5e5tv4b.js} +35 -7
  230. package/dist/{chunk-rz53yb4v.js.map → chunk-q5e5tv4b.js.map} +3 -3
  231. package/dist/{chunk-vyf9kfqf.js → chunk-q7gn29y3.js} +1 -1
  232. package/dist/{chunk-d2ync1v3.js → chunk-rmakanzx.js} +10 -12
  233. package/dist/{chunk-d2ync1v3.js.map → chunk-rmakanzx.js.map} +3 -4
  234. package/dist/{chunk-v9xd5wzd.js → chunk-s7jg7pmn.js} +1 -1
  235. package/dist/chunk-tbc1ngpd.js +642 -0
  236. package/dist/chunk-tbc1ngpd.js.map +18 -0
  237. package/dist/chunk-twe4dx8p.js +676 -0
  238. package/dist/chunk-twe4dx8p.js.map +15 -0
  239. package/dist/{chunk-nre82s12.js → chunk-vf57cr4t.js} +2 -2
  240. package/dist/{chunk-9ybhtmg4.js → chunk-vvxtn22d.js} +1 -1
  241. package/dist/{chunk-jhm3zsa7.js → chunk-wkv3h3q7.js} +64 -2
  242. package/dist/{chunk-jhm3zsa7.js.map → chunk-wkv3h3q7.js.map} +3 -3
  243. package/dist/chunk-x0v3jd47.js +124 -0
  244. package/dist/chunk-x0v3jd47.js.map +10 -0
  245. package/dist/{chunk-7t429e3f.js → chunk-xvsc5m8n.js} +1 -1
  246. package/dist/{chunk-kg5j6fct.js → chunk-y5tah2kf.js} +1 -1
  247. package/dist/{chunk-52bk93x8.js → chunk-z58tm0hm.js} +2 -2
  248. package/dist/datasets/builders.d.ts +15 -2
  249. package/dist/datasets/builders.d.ts.map +1 -1
  250. package/dist/datasets/column-index.d.ts +7 -0
  251. package/dist/datasets/column-index.d.ts.map +1 -0
  252. package/dist/datasets/execution.d.ts +3 -2
  253. package/dist/datasets/execution.d.ts.map +1 -1
  254. package/dist/datasets/write.js +8 -8
  255. package/dist/deploy/internal.js +4 -3
  256. package/dist/deploy/internal.js.map +4 -4
  257. package/dist/deploy/services.d.ts.map +1 -1
  258. package/dist/deploy/types.d.ts +1 -2
  259. package/dist/deploy/types.d.ts.map +1 -1
  260. package/dist/error-reporting/internal.js +4 -4
  261. package/dist/errors/internal.d.ts +1 -0
  262. package/dist/errors/internal.d.ts.map +1 -1
  263. package/dist/errors/internal.js +7 -4
  264. package/dist/errors/internal.js.map +1 -1
  265. package/dist/events/execution.d.ts +12 -2
  266. package/dist/events/execution.d.ts.map +1 -1
  267. package/dist/events/index.js +4 -4
  268. package/dist/execution/agent.js +56 -49
  269. package/dist/execution/agent.js.map +1 -1
  270. package/dist/execution/authorization.d.ts.map +1 -1
  271. package/dist/execution/authorized-object-reader.d.ts +52 -11
  272. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  273. package/dist/execution/object-reader-clearance.d.ts +41 -0
  274. package/dist/execution/object-reader-clearance.d.ts.map +1 -0
  275. package/dist/execution/object-reader-ontology.d.ts +12 -0
  276. package/dist/execution/object-reader-ontology.d.ts.map +1 -0
  277. package/dist/execution/object-reader-security.d.ts +45 -0
  278. package/dist/execution/object-reader-security.d.ts.map +1 -0
  279. package/dist/execution/primitive.js +54 -47
  280. package/dist/execution/primitive.js.map +1 -1
  281. package/dist/execution/request.js +49 -42
  282. package/dist/execution/request.js.map +2 -2
  283. package/dist/http/api-routes.d.ts.map +1 -1
  284. package/dist/http/index.js +1 -1
  285. package/dist/index.d.ts +23 -7
  286. package/dist/index.d.ts.map +1 -1
  287. package/dist/index.js +111 -109
  288. package/dist/index.js.map +1 -1
  289. package/dist/lake-storage/in-memory.d.ts +1 -0
  290. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  291. package/dist/lake-storage/index.d.ts +6 -3
  292. package/dist/lake-storage/index.d.ts.map +1 -1
  293. package/dist/lake-storage/index.js +21 -13
  294. package/dist/lake-storage/index.js.map +1 -1
  295. package/dist/lake-storage/lineage.d.ts +94 -0
  296. package/dist/lake-storage/lineage.d.ts.map +1 -0
  297. package/dist/lake-storage/sql-transforms.d.ts +45 -0
  298. package/dist/lake-storage/sql-transforms.d.ts.map +1 -1
  299. package/dist/lake-storage/types.d.ts +55 -1
  300. package/dist/lake-storage/types.d.ts.map +1 -1
  301. package/dist/lake-storage/version-inputs.d.ts +14 -3
  302. package/dist/lake-storage/version-inputs.d.ts.map +1 -1
  303. package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
  304. package/dist/materializer/index.js +31 -30
  305. package/dist/materializer/index.js.map +1 -1
  306. package/dist/models/execution/index.js +26 -25
  307. package/dist/models/execution/index.js.map +1 -1
  308. package/dist/objects/clearance-redaction.d.ts +27 -0
  309. package/dist/objects/clearance-redaction.d.ts.map +1 -0
  310. package/dist/objects/index.js +54 -47
  311. package/dist/objects/index.js.map +1 -1
  312. package/dist/objects/link/authorization.d.ts +8 -5
  313. package/dist/objects/link/authorization.d.ts.map +1 -1
  314. package/dist/objects/link/upsert-batch.d.ts.map +1 -1
  315. package/dist/objects/object/delete.d.ts.map +1 -1
  316. package/dist/objects/object/upsert-batch.d.ts.map +1 -1
  317. package/dist/objects/object/upsert.d.ts.map +1 -1
  318. package/dist/objects/property-clearance.d.ts +47 -24
  319. package/dist/objects/property-clearance.d.ts.map +1 -1
  320. package/dist/objects/query/clearance-admission.d.ts +10 -0
  321. package/dist/objects/query/clearance-admission.d.ts.map +1 -0
  322. package/dist/objects/query/index.js +29 -28
  323. package/dist/objects/query/index.js.map +1 -1
  324. package/dist/objects/query/link-query-clearance.d.ts +21 -0
  325. package/dist/objects/query/link-query-clearance.d.ts.map +1 -0
  326. package/dist/objects/vectors/handle.d.ts.map +1 -1
  327. package/dist/objects/vectors/profile.d.ts +5 -0
  328. package/dist/objects/vectors/profile.d.ts.map +1 -1
  329. package/dist/ontology/builders.d.ts.map +1 -1
  330. package/dist/ontology/docs-markdown.d.ts +1 -1
  331. package/dist/ontology/docs-markdown.d.ts.map +1 -1
  332. package/dist/ontology/index.js +7 -7
  333. package/dist/ontology/internal.js +4 -4
  334. package/dist/ontology/internal.js.map +1 -1
  335. package/dist/pipelines/index.d.ts +2 -0
  336. package/dist/pipelines/index.d.ts.map +1 -1
  337. package/dist/pipelines/index.js +47 -35
  338. package/dist/pipelines/index.js.map +1 -1
  339. package/dist/pipelines/lineage.d.ts +17 -0
  340. package/dist/pipelines/lineage.d.ts.map +1 -0
  341. package/dist/projections/internal.d.ts +2 -2
  342. package/dist/projections/internal.js +30 -29
  343. package/dist/projections/internal.js.map +1 -1
  344. package/dist/runtime/create.d.ts +3 -0
  345. package/dist/runtime/create.d.ts.map +1 -1
  346. package/dist/runtime/host.d.ts +6 -0
  347. package/dist/runtime/host.d.ts.map +1 -1
  348. package/dist/runtime/internal.d.ts +2 -0
  349. package/dist/runtime/internal.d.ts.map +1 -1
  350. package/dist/runtime/internal.js +46 -42
  351. package/dist/runtime/internal.js.map +1 -1
  352. package/dist/runtime/ontology-mutations.d.ts +2 -0
  353. package/dist/runtime/ontology-mutations.d.ts.map +1 -1
  354. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  355. package/dist/runtime/sixb.d.ts +8 -0
  356. package/dist/runtime/sixb.d.ts.map +1 -1
  357. package/dist/sandboxes/auth.d.ts +16 -0
  358. package/dist/sandboxes/auth.d.ts.map +1 -1
  359. package/dist/sandboxes/config.d.ts.map +1 -1
  360. package/dist/sandboxes/configuration.d.ts +26 -0
  361. package/dist/sandboxes/configuration.d.ts.map +1 -1
  362. package/dist/sandboxes/index.d.ts +1 -1
  363. package/dist/sandboxes/index.d.ts.map +1 -1
  364. package/dist/sandboxes/index.js +14 -13
  365. package/dist/sandboxes/index.js.map +1 -1
  366. package/dist/sandboxes/sandbox.d.ts +28 -5
  367. package/dist/sandboxes/sandbox.d.ts.map +1 -1
  368. package/dist/security/applied-markings-contribution.d.ts +58 -0
  369. package/dist/security/applied-markings-contribution.d.ts.map +1 -0
  370. package/dist/security/applied-markings-host.d.ts +10 -0
  371. package/dist/security/applied-markings-host.d.ts.map +1 -0
  372. package/dist/security/applied-markings-snapshot.d.ts +67 -0
  373. package/dist/security/applied-markings-snapshot.d.ts.map +1 -0
  374. package/dist/security/applied-markings.d.ts +73 -0
  375. package/dist/security/applied-markings.d.ts.map +1 -0
  376. package/dist/security/builders.d.ts.map +1 -1
  377. package/dist/security/dataset-version-markings.d.ts +47 -0
  378. package/dist/security/dataset-version-markings.d.ts.map +1 -0
  379. package/dist/security/every.d.ts +1 -4
  380. package/dist/security/every.d.ts.map +1 -1
  381. package/dist/security/grants.d.ts +4 -5
  382. package/dist/security/grants.d.ts.map +1 -1
  383. package/dist/security/index.d.ts +2 -2
  384. package/dist/security/index.d.ts.map +1 -1
  385. package/dist/security/internal.d.ts +15 -0
  386. package/dist/security/internal.d.ts.map +1 -0
  387. package/dist/security/internal.js +135 -0
  388. package/dist/security/internal.js.map +10 -0
  389. package/dist/security/marking-propagation.d.ts +62 -0
  390. package/dist/security/marking-propagation.d.ts.map +1 -0
  391. package/dist/security/marking-sets.d.ts +14 -0
  392. package/dist/security/marking-sets.d.ts.map +1 -0
  393. package/dist/security/markings.d.ts +6 -3
  394. package/dist/security/markings.d.ts.map +1 -1
  395. package/dist/security/membership-policies.d.ts.map +1 -1
  396. package/dist/security/pipeline-markings.d.ts +20 -0
  397. package/dist/security/pipeline-markings.d.ts.map +1 -0
  398. package/dist/security/project.d.ts +4 -0
  399. package/dist/security/project.d.ts.map +1 -0
  400. package/dist/security/projection-markings.d.ts +71 -0
  401. package/dist/security/projection-markings.d.ts.map +1 -0
  402. package/dist/security/public.d.ts +10 -0
  403. package/dist/security/public.d.ts.map +1 -0
  404. package/dist/security/public.js +10 -0
  405. package/dist/security/public.js.map +9 -0
  406. package/dist/security/redactions.d.ts +4 -1
  407. package/dist/security/redactions.d.ts.map +1 -1
  408. package/dist/security/registry.d.ts +0 -1
  409. package/dist/security/registry.d.ts.map +1 -1
  410. package/dist/security/types.d.ts +34 -19
  411. package/dist/security/types.d.ts.map +1 -1
  412. package/dist/security/validation.d.ts +0 -6
  413. package/dist/security/validation.d.ts.map +1 -1
  414. package/dist/shares/internal.js +25 -24
  415. package/dist/shares/internal.js.map +2 -2
  416. package/dist/storage/action-runs/failure.js +3 -3
  417. package/dist/storage/action-runs/in-memory.d.ts +4 -0
  418. package/dist/storage/action-runs/in-memory.d.ts.map +1 -1
  419. package/dist/storage/action-runs/types.d.ts +8 -0
  420. package/dist/storage/action-runs/types.d.ts.map +1 -1
  421. package/dist/storage/activity/in-memory.d.ts +55 -0
  422. package/dist/storage/activity/in-memory.d.ts.map +1 -0
  423. package/dist/storage/activity/index.d.ts +3 -0
  424. package/dist/storage/activity/index.d.ts.map +1 -0
  425. package/dist/storage/activity/policy.d.ts +96 -0
  426. package/dist/storage/activity/policy.d.ts.map +1 -0
  427. package/dist/storage/activity/types.d.ts +191 -0
  428. package/dist/storage/activity/types.d.ts.map +1 -0
  429. package/dist/storage/agents/in-memory.d.ts +4 -0
  430. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  431. package/dist/storage/agents/provider.d.ts.map +1 -1
  432. package/dist/storage/agents/provider.js +2 -5
  433. package/dist/storage/agents/provider.js.map +1 -1
  434. package/dist/storage/agents/types.d.ts +10 -9
  435. package/dist/storage/agents/types.d.ts.map +1 -1
  436. package/dist/storage/ai-limits/enforcement.js +3 -3
  437. package/dist/storage/artifacts/errors.d.ts +8 -0
  438. package/dist/storage/artifacts/errors.d.ts.map +1 -0
  439. package/dist/storage/artifacts/in-memory.d.ts +34 -0
  440. package/dist/storage/artifacts/in-memory.d.ts.map +1 -0
  441. package/dist/storage/artifacts/index.d.ts +5 -0
  442. package/dist/storage/artifacts/index.d.ts.map +1 -0
  443. package/dist/storage/artifacts/record.d.ts +17 -0
  444. package/dist/storage/artifacts/record.d.ts.map +1 -0
  445. package/dist/storage/artifacts/types.d.ts +184 -0
  446. package/dist/storage/artifacts/types.d.ts.map +1 -0
  447. package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
  448. package/dist/storage/auth/in-memory/magic-links.d.ts.map +1 -1
  449. package/dist/storage/auth/in-memory/oidc-attempts.d.ts.map +1 -1
  450. package/dist/storage/auth/in-memory/sessions.d.ts +2 -11
  451. package/dist/storage/auth/in-memory/sessions.d.ts.map +1 -1
  452. package/dist/storage/auth/in-memory/shared.d.ts +1 -2
  453. package/dist/storage/auth/in-memory/shared.d.ts.map +1 -1
  454. package/dist/storage/auth/index.d.ts +1 -1
  455. package/dist/storage/auth/index.d.ts.map +1 -1
  456. package/dist/storage/auth/types.d.ts +20 -17
  457. package/dist/storage/auth/types.d.ts.map +1 -1
  458. package/dist/storage/connector-connections/provider.js +2 -2
  459. package/dist/storage/executions/in-memory.d.ts +2 -1
  460. package/dist/storage/executions/in-memory.d.ts.map +1 -1
  461. package/dist/storage/executions/index.d.ts +1 -1
  462. package/dist/storage/executions/index.d.ts.map +1 -1
  463. package/dist/storage/executions/provider.d.ts +2 -0
  464. package/dist/storage/executions/provider.d.ts.map +1 -1
  465. package/dist/storage/executions/provider.js +9 -223
  466. package/dist/storage/executions/provider.js.map +3 -4
  467. package/dist/storage/executions/types.d.ts +31 -0
  468. package/dist/storage/executions/types.d.ts.map +1 -1
  469. package/dist/storage/file-upload-sessions/provider.js +12 -12
  470. package/dist/storage/in-memory/index.d.ts +8 -0
  471. package/dist/storage/in-memory/index.d.ts.map +1 -1
  472. package/dist/storage/index.d.ts +6 -4
  473. package/dist/storage/index.d.ts.map +1 -1
  474. package/dist/storage/index.js +47 -46
  475. package/dist/storage/index.js.map +1 -1
  476. package/dist/storage/internal.d.ts +3 -0
  477. package/dist/storage/internal.d.ts.map +1 -1
  478. package/dist/storage/internal.js +66 -16
  479. package/dist/storage/internal.js.map +1 -1
  480. package/dist/storage/ontology/in-memory/sources.d.ts +2 -1
  481. package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
  482. package/dist/storage/ontology/index.d.ts +1 -1
  483. package/dist/storage/ontology/index.d.ts.map +1 -1
  484. package/dist/storage/ontology/sources.d.ts +15 -0
  485. package/dist/storage/ontology/sources.d.ts.map +1 -1
  486. package/dist/storage/projection-runs/provider.js +3 -3
  487. package/dist/storage/share-grants/in-memory.d.ts +2 -1
  488. package/dist/storage/share-grants/in-memory.d.ts.map +1 -1
  489. package/dist/storage/share-grants/index.d.ts +1 -1
  490. package/dist/storage/share-grants/index.d.ts.map +1 -1
  491. package/dist/storage/share-grants/types.d.ts +6 -0
  492. package/dist/storage/share-grants/types.d.ts.map +1 -1
  493. package/dist/storage/types.d.ts +4 -0
  494. package/dist/storage/types.d.ts.map +1 -1
  495. package/dist/storage/workflow-runs/in-memory.d.ts +4 -0
  496. package/dist/storage/workflow-runs/in-memory.d.ts.map +1 -1
  497. package/dist/storage/workflow-runs/provider.js +14 -13
  498. package/dist/storage/workflow-runs/provider.js.map +1 -1
  499. package/dist/storage/workflow-runs/types.d.ts +5 -0
  500. package/dist/storage/workflow-runs/types.d.ts.map +1 -1
  501. package/dist/syncs/index.js +35 -34
  502. package/dist/syncs/index.js.map +1 -1
  503. package/dist/testing/action-run-storage-contract.d.ts.map +1 -1
  504. package/dist/testing/activity-storage-contract.d.ts +14 -0
  505. package/dist/testing/activity-storage-contract.d.ts.map +1 -0
  506. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  507. package/dist/testing/artifact-storage-contract.d.ts +13 -0
  508. package/dist/testing/artifact-storage-contract.d.ts.map +1 -0
  509. package/dist/testing/auth-storage-contract.d.ts.map +1 -1
  510. package/dist/testing/execution-storage-contract.d.ts.map +1 -1
  511. package/dist/testing/index.d.ts +2 -0
  512. package/dist/testing/index.d.ts.map +1 -1
  513. package/dist/testing/index.js +4493 -3225
  514. package/dist/testing/index.js.map +14 -12
  515. package/dist/testing/lake-merge-storage-contract.d.ts.map +1 -1
  516. package/dist/testing/lake-storage-contract.d.ts +2 -0
  517. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  518. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  519. package/dist/testing/share-grant-storage-contract.d.ts.map +1 -1
  520. package/dist/webhooks/internal.js +28 -27
  521. package/dist/webhooks/internal.js.map +2 -2
  522. package/dist/workers/index.js +2 -2
  523. package/dist/workflows/builders.d.ts.map +1 -1
  524. package/dist/workflows/index.js +57 -51
  525. package/dist/workflows/index.js.map +1 -1
  526. package/dist/workflows/types.d.ts +9 -0
  527. package/dist/workflows/types.d.ts.map +1 -1
  528. package/dist/workflows/validation.d.ts +7 -0
  529. package/dist/workflows/validation.d.ts.map +1 -1
  530. package/package.json +32 -2
  531. package/src/actions/execution.ts +18 -13
  532. package/src/actions/request.ts +18 -3
  533. package/src/actions/run-authorization.ts +23 -0
  534. package/src/activity/README.md +155 -0
  535. package/src/activity/connection.ts +217 -0
  536. package/src/activity/device.ts +41 -0
  537. package/src/activity/execution.ts +210 -0
  538. package/src/activity/service.ts +274 -0
  539. package/src/activity/shares.ts +62 -0
  540. package/src/activity/timeline.ts +424 -0
  541. package/src/agents/index.ts +8 -3
  542. package/src/agents/request.ts +5 -0
  543. package/src/agents/skills.ts +6 -0
  544. package/src/agents/types.ts +8 -8
  545. package/src/agents/validation.ts +2 -0
  546. package/src/artifacts/address.ts +132 -0
  547. package/src/artifacts/csv.ts +108 -0
  548. package/src/artifacts/errors.ts +21 -0
  549. package/src/artifacts/execution.ts +153 -0
  550. package/src/artifacts/frames/assets.ts +88 -0
  551. package/src/artifacts/frames/grants.ts +124 -0
  552. package/src/artifacts/frames/index.ts +15 -0
  553. package/src/artifacts/frames/kit.ts +392 -0
  554. package/src/artifacts/frames/probe.ts +309 -0
  555. package/src/artifacts/frames/protocol.ts +174 -0
  556. package/src/artifacts/frames/runtime.ts +213 -0
  557. package/src/artifacts/html.ts +25 -0
  558. package/src/artifacts/ids.ts +18 -0
  559. package/src/artifacts/index.ts +61 -0
  560. package/src/artifacts/kinds.ts +8 -0
  561. package/src/artifacts/limits.ts +27 -0
  562. package/src/artifacts/outline.ts +62 -0
  563. package/src/artifacts/publish/files.ts +87 -0
  564. package/src/artifacts/publish/index.ts +12 -0
  565. package/src/artifacts/publish/publish.ts +250 -0
  566. package/src/artifacts/publish/references.ts +130 -0
  567. package/src/artifacts/publish/validate/document.ts +114 -0
  568. package/src/artifacts/publish/validate/file.ts +19 -0
  569. package/src/artifacts/publish/validate/sheet.ts +251 -0
  570. package/src/artifacts/publish/validate/slides.ts +134 -0
  571. package/src/artifacts/references.ts +11 -0
  572. package/src/artifacts/resolve.ts +97 -0
  573. package/src/artifacts/theme.ts +116 -0
  574. package/src/artifacts/warnings.ts +10 -0
  575. package/src/artifacts/workbook.ts +315 -0
  576. package/src/auth/cookies.ts +3 -20
  577. package/src/auth/index.ts +0 -6
  578. package/src/auth/runtime.ts +59 -76
  579. package/src/auth/session-cache.ts +2 -9
  580. package/src/auth/types.ts +4 -8
  581. package/src/auth/validation.ts +0 -2
  582. package/src/authorization/decision.ts +13 -23
  583. package/src/authorization/grant-kinds.ts +33 -28
  584. package/src/authorization/index.ts +0 -1
  585. package/src/authorization/resolve.ts +10 -6
  586. package/src/blob-storage/internal.ts +1 -1
  587. package/src/blob-storage/media-type.ts +69 -0
  588. package/src/datasets/builders.ts +66 -2
  589. package/src/datasets/column-index.ts +19 -0
  590. package/src/datasets/execution.ts +23 -9
  591. package/src/deploy/services.ts +0 -1
  592. package/src/deploy/types.ts +1 -2
  593. package/src/deploy/validation.ts +3 -1
  594. package/src/errors/internal.ts +1 -0
  595. package/src/events/execution.ts +134 -21
  596. package/src/execution/authorization.ts +11 -5
  597. package/src/execution/authorized-object-reader.ts +270 -256
  598. package/src/execution/object-reader-clearance.ts +91 -0
  599. package/src/execution/object-reader-ontology.ts +63 -0
  600. package/src/execution/object-reader-security.ts +146 -0
  601. package/src/http/api-routes.ts +125 -0
  602. package/src/index.ts +72 -17
  603. package/src/lake-storage/in-memory.ts +26 -3
  604. package/src/lake-storage/index.ts +13 -1
  605. package/src/lake-storage/lineage.ts +385 -0
  606. package/src/lake-storage/sql-transforms.ts +45 -0
  607. package/src/lake-storage/types.ts +59 -1
  608. package/src/lake-storage/version-inputs.ts +35 -6
  609. package/src/maintenance/ontology-maintenance.ts +15 -0
  610. package/src/models/execution/embedding.ts +6 -6
  611. package/src/objects/clearance-redaction.ts +138 -0
  612. package/src/objects/link/authorization.ts +27 -7
  613. package/src/objects/link/remove.ts +2 -2
  614. package/src/objects/link/upsert-batch.ts +7 -5
  615. package/src/objects/link/upsert.ts +2 -2
  616. package/src/objects/object/delete.ts +2 -0
  617. package/src/objects/object/upsert-batch.ts +2 -4
  618. package/src/objects/object/upsert.ts +2 -3
  619. package/src/objects/property-clearance.ts +171 -152
  620. package/src/objects/query/clearance-admission.ts +112 -0
  621. package/src/objects/query/link-query-clearance.ts +73 -0
  622. package/src/objects/vectors/README.md +4 -0
  623. package/src/objects/vectors/handle.ts +11 -2
  624. package/src/objects/vectors/indexing-generate.ts +2 -2
  625. package/src/objects/vectors/profile.ts +5 -0
  626. package/src/ontology/builders.ts +12 -1
  627. package/src/ontology/docs-markdown.ts +1 -1
  628. package/src/pipelines/index.ts +2 -0
  629. package/src/pipelines/lineage.ts +45 -0
  630. package/src/projections/internal.ts +2 -2
  631. package/src/runtime/create.ts +4 -0
  632. package/src/runtime/host.ts +55 -0
  633. package/src/runtime/internal.ts +2 -0
  634. package/src/runtime/ontology-mutations.ts +19 -4
  635. package/src/runtime/resolve-definitions.ts +66 -3
  636. package/src/runtime/sixb.ts +18 -1
  637. package/src/sandboxes/README.md +29 -7
  638. package/src/sandboxes/auth.ts +16 -0
  639. package/src/sandboxes/config.ts +2 -7
  640. package/src/sandboxes/configuration.ts +61 -7
  641. package/src/sandboxes/index.ts +1 -0
  642. package/src/sandboxes/sandbox.ts +27 -5
  643. package/src/security/applied-markings-contribution.ts +277 -0
  644. package/src/security/applied-markings-host.ts +41 -0
  645. package/src/security/applied-markings-snapshot.ts +235 -0
  646. package/src/security/applied-markings.ts +405 -0
  647. package/src/security/builders.ts +7 -2
  648. package/src/security/dataset-version-markings.ts +163 -0
  649. package/src/security/every.ts +0 -4
  650. package/src/security/grants.ts +42 -27
  651. package/src/security/index.ts +3 -3
  652. package/src/security/internal.ts +18 -0
  653. package/src/security/marking-propagation.ts +255 -0
  654. package/src/security/marking-sets.ts +42 -0
  655. package/src/security/markings.ts +29 -178
  656. package/src/security/membership-policies.ts +3 -1
  657. package/src/security/pipeline-markings.ts +175 -0
  658. package/src/security/project.ts +8 -0
  659. package/src/security/projection-markings.ts +421 -0
  660. package/src/security/public.ts +10 -0
  661. package/src/security/redactions.ts +7 -2
  662. package/src/security/registry.ts +0 -8
  663. package/src/security/types.ts +38 -26
  664. package/src/security/validation.ts +28 -19
  665. package/src/storage/action-runs/in-memory.ts +18 -0
  666. package/src/storage/action-runs/types.ts +8 -0
  667. package/src/storage/activity/in-memory.ts +374 -0
  668. package/src/storage/activity/index.ts +27 -0
  669. package/src/storage/activity/policy.ts +430 -0
  670. package/src/storage/activity/types.ts +211 -0
  671. package/src/storage/agents/in-memory.ts +10 -0
  672. package/src/storage/agents/provider.ts +2 -13
  673. package/src/storage/agents/types.ts +10 -17
  674. package/src/storage/artifacts/errors.ts +16 -0
  675. package/src/storage/artifacts/in-memory.ts +240 -0
  676. package/src/storage/artifacts/index.ts +30 -0
  677. package/src/storage/artifacts/record.ts +200 -0
  678. package/src/storage/artifacts/types.ts +209 -0
  679. package/src/storage/auth/in-memory/auth-storage.ts +0 -18
  680. package/src/storage/auth/in-memory/magic-links.ts +0 -3
  681. package/src/storage/auth/in-memory/oidc-attempts.ts +0 -3
  682. package/src/storage/auth/in-memory/sessions.ts +22 -25
  683. package/src/storage/auth/in-memory/shared.ts +1 -10
  684. package/src/storage/auth/index.ts +2 -0
  685. package/src/storage/auth/types.ts +20 -18
  686. package/src/storage/executions/in-memory.ts +61 -1
  687. package/src/storage/executions/index.ts +3 -0
  688. package/src/storage/executions/provider.ts +12 -0
  689. package/src/storage/executions/types.ts +30 -0
  690. package/src/storage/in-memory/index.ts +16 -0
  691. package/src/storage/index.ts +63 -0
  692. package/src/storage/internal.ts +30 -0
  693. package/src/storage/ontology/in-memory/sources.ts +23 -0
  694. package/src/storage/ontology/index.ts +2 -0
  695. package/src/storage/ontology/sources.ts +17 -0
  696. package/src/storage/share-grants/in-memory.ts +8 -0
  697. package/src/storage/share-grants/index.ts +1 -0
  698. package/src/storage/share-grants/types.ts +8 -0
  699. package/src/storage/types.ts +4 -0
  700. package/src/storage/workflow-runs/in-memory.ts +16 -0
  701. package/src/storage/workflow-runs/types.ts +5 -0
  702. package/src/testing/action-run-storage-contract.ts +25 -0
  703. package/src/testing/activity-storage-contract.ts +840 -0
  704. package/src/testing/agent-storage-contract.ts +22 -21
  705. package/src/testing/artifact-storage-contract.ts +517 -0
  706. package/src/testing/auth-storage-contract.ts +61 -107
  707. package/src/testing/execution-storage-contract.ts +147 -3
  708. package/src/testing/index.ts +9 -0
  709. package/src/testing/lake-merge-storage-contract.ts +38 -0
  710. package/src/testing/lake-storage-contract.ts +247 -2
  711. package/src/testing/materializer-storage-contract.ts +1 -0
  712. package/src/testing/ontology-storage-contract.ts +57 -2
  713. package/src/testing/share-grant-storage-contract.ts +15 -0
  714. package/src/workflows/builders.ts +14 -0
  715. package/src/workflows/types.ts +9 -0
  716. package/src/workflows/validation.ts +72 -0
  717. package/dist/auth/audience.d.ts +0 -8
  718. package/dist/auth/audience.d.ts.map +0 -1
  719. package/dist/authorization/application-access.d.ts +0 -18
  720. package/dist/authorization/application-access.d.ts.map +0 -1
  721. package/dist/chunk-1f7wpmyp.js.map +0 -14
  722. package/dist/chunk-1k89ecfr.js +0 -85
  723. package/dist/chunk-1k89ecfr.js.map +0 -10
  724. package/dist/chunk-2jntasmh.js.map +0 -13
  725. package/dist/chunk-3gnrh4ve.js.map +0 -40
  726. package/dist/chunk-85yvv5n0.js.map +0 -12
  727. package/dist/chunk-9gyp8hg1.js +0 -363
  728. package/dist/chunk-9gyp8hg1.js.map +0 -14
  729. package/dist/chunk-dnmadg9k.js.map +0 -15
  730. package/dist/chunk-enpsx8k5.js.map +0 -10
  731. package/dist/chunk-hkc3jct7.js.map +0 -10
  732. package/dist/chunk-kyzq4wy9.js.map +0 -18
  733. package/dist/chunk-s16apyk9.js +0 -256
  734. package/dist/chunk-s16apyk9.js.map +0 -16
  735. package/dist/chunk-s54c868q.js.map +0 -12
  736. package/dist/chunk-tw03bsmb.js.map +0 -11
  737. package/dist/chunk-wwdfe68s.js +0 -128
  738. package/dist/chunk-wwdfe68s.js.map +0 -11
  739. package/dist/chunk-xt1zt7gv.js.map +0 -13
  740. package/dist/chunk-y7rqfrgg.js.map +0 -24
  741. package/dist/security/applications.d.ts +0 -15
  742. package/dist/security/applications.d.ts.map +0 -1
  743. package/src/auth/audience.ts +0 -28
  744. package/src/authorization/application-access.ts +0 -34
  745. package/src/security/applications.ts +0 -11
  746. /package/dist/{chunk-t6vq7bff.js.map → chunk-0bphap9y.js.map} +0 -0
  747. /package/dist/{chunk-7mbzgd9m.js.map → chunk-1cc1xaf3.js.map} +0 -0
  748. /package/dist/{chunk-6gmfggss.js.map → chunk-431pyp2c.js.map} +0 -0
  749. /package/dist/{chunk-c85m1hyj.js.map → chunk-447a5c0p.js.map} +0 -0
  750. /package/dist/{chunk-80mc0971.js.map → chunk-561r0yc9.js.map} +0 -0
  751. /package/dist/{chunk-5e43w60z.js.map → chunk-5948n82c.js.map} +0 -0
  752. /package/dist/{chunk-yzwja0mj.js.map → chunk-5hx48dnn.js.map} +0 -0
  753. /package/dist/{chunk-q1vkr2ys.js.map → chunk-c1rxbz5y.js.map} +0 -0
  754. /package/dist/{chunk-gc4ntf7d.js.map → chunk-cwdzcv37.js.map} +0 -0
  755. /package/dist/{chunk-fa02jy15.js.map → chunk-cy4mbddw.js.map} +0 -0
  756. /package/dist/{chunk-7kg3k1m9.js.map → chunk-d09e3rax.js.map} +0 -0
  757. /package/dist/{chunk-rhg02hxq.js.map → chunk-d7dnxdep.js.map} +0 -0
  758. /package/dist/{chunk-wz0xs816.js.map → chunk-ky3j490c.js.map} +0 -0
  759. /package/dist/{chunk-vyf9kfqf.js.map → chunk-q7gn29y3.js.map} +0 -0
  760. /package/dist/{chunk-v9xd5wzd.js.map → chunk-s7jg7pmn.js.map} +0 -0
  761. /package/dist/{chunk-nre82s12.js.map → chunk-vf57cr4t.js.map} +0 -0
  762. /package/dist/{chunk-9ybhtmg4.js.map → chunk-vvxtn22d.js.map} +0 -0
  763. /package/dist/{chunk-7t429e3f.js.map → chunk-xvsc5m8n.js.map} +0 -0
  764. /package/dist/{chunk-kg5j6fct.js.map → chunk-y5tah2kf.js.map} +0 -0
  765. /package/dist/{chunk-52bk93x8.js.map → chunk-z58tm0hm.js.map} +0 -0
@@ -0,0 +1,15 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/security/projection-markings.ts", "../src/security/marking-propagation.ts", "../src/security/applied-markings-contribution.ts", "../src/security/applied-markings-host.ts", "../src/security/marking-sets.ts", "../src/security/dataset-version-markings.ts"],
4
+ "sourcesContent": [
5
+ "import type { DatasetVersion } from \"../lake-storage/types\"\nimport type { OntologyDefinitionCatalog } from \"../ontology/registry\"\nimport type { ObjectType } from \"../ontology/types\"\nimport type { ProjectionDefinitionCatalog } from \"../projections/registry\"\nimport type {\n LinkProjectionDefinition,\n ObjectProjectionDefinition,\n ProjectionDefinition,\n TelemetryProjectionDefinition,\n} from \"../projections/types\"\nimport type { VersionClassification } from \"./dataset-version-markings\"\nimport { SecurityValidationError } from \"./errors\"\nimport type { ColumnMarkingOrigins, DatasetMarkings, MarkingOrigin } from \"./marking-propagation\"\n\ntype OntologyLookup = Pick<OntologyDefinitionCatalog, \"getObjectTypeById\">\n\n/** Markings of one column of the projection's dataset. */\ntype ColumnMarkingsLookup = (column: string) => readonly string[]\n\n/** What a marked key column makes unreadable: the objects it identifies, or the link it keys. */\nexport type ProjectionKeyTarget =\n | { readonly kind: \"type\"; readonly objectTypeId: string }\n | {\n readonly kind: \"link\"\n readonly objectTypeId: string\n readonly linkId: string\n readonly targetObjectTypeId: string\n }\n\n/** A marking rule a projection breaks. */\ntype ProjectionMarkingViolation =\n | {\n readonly kind: \"undeclared\"\n readonly property: string\n readonly objectTypeId: string\n readonly propertyId: string\n readonly column: string\n readonly missing: readonly string[]\n }\n | {\n readonly kind: \"markedKeyColumn\"\n readonly column: string\n readonly role: string\n readonly targets: readonly ProjectionKeyTarget[]\n /** The property the column fills, when the key is a property. */\n readonly property?: { readonly objectTypeId: string; readonly propertyId: string }\n }\n | { readonly kind: \"markedKeyProperty\"; readonly property: string; readonly role: string }\n | { readonly kind: \"telemetry\"; readonly column: string }\n\n/**\n * Objects are read through the ontology, so each projected property declares the markings of its\n * column: the ontology stays the reviewed contract of what each reader receives. Values that\n * identify objects or key links are returned wherever the object or link is, and telemetry does\n * not enforce markings yet, so those columns cannot carry markings.\n *\n * Startup checks it with the markings columns declare or inherit through `run` steps, and the\n * pipeline preflight with the markings SQL steps derive as well.\n */\nexport function validateProjectionMarkings(\n projections: ProjectionDefinitionCatalog,\n ontology: OntologyLookup,\n markings: DatasetMarkings\n): void {\n const all = [\n ...projections.listObjects(),\n ...projections.listLinks(),\n ...projections.listTelemetry(),\n ]\n\n for (const projection of all) {\n const originsOf = (column: string) => markings.of({ datasetId: projection.datasetId, column })\n const violation = firstViolation(projection, ontology, (column) => [\n ...originsOf(column).keys(),\n ])\n if (!violation) continue\n\n const carries = (column: string): CarriedMarkings => {\n const origins = originsOf(column)\n return {\n text: describeOrigins(origins, `${projection.datasetId}.${column}`),\n inherited: [...origins.values()].some((origin) => origin.steps.length > 0),\n }\n }\n\n throw new SecurityValidationError(\n violationMessage(\n `[Sixb] Projection '${projection.id}'`,\n projection.datasetId,\n violation,\n carries\n )\n )\n }\n}\n\n/**\n * Refuse to project a dataset version whose columns carry more markings than the projection\n * allows. A version keeps the markings of the code that produced it, so a version written before\n * the current code can carry markings startup did not see. Call it once per version, before\n * reading its rows; it reads nothing, so what it throws is a refusal that no retry changes.\n */\nexport function assertProjectionVersionMarkings(input: {\n readonly projection: ProjectionDefinition\n readonly ontology: OntologyLookup\n readonly version: DatasetVersion\n readonly classification: VersionClassification\n}): void {\n const { projection, version, classification } = input\n const markingsOf = (column: string) => [...(classification.columns.get(column) ?? [])].sort()\n const violation = firstViolation(projection, input.ontology, markingsOf)\n if (!violation) return\n\n const subject = `[Sixb] Projection '${projection.id}' cannot read version '${version.versionId}' of dataset '${version.datasetId}'`\n const carries = (column: string): CarriedMarkings => ({\n text: `${markingList(markingsOf(column))} in this version`,\n inherited: true,\n })\n const conservative =\n classification.conservative === undefined\n ? \"\"\n : ` The version was classified with every marking its sources could hold, because ${classification.conservative}.`\n const rerun = `If the code that writes '${version.datasetId}' no longer derives these markings, rerun its pipeline.`\n\n throw new Error(\n `${violationMessage(subject, version.datasetId, violation, carries)}${conservative} ${rerun}`\n )\n}\n\n/** Markings an applied version gives a projection's targets beyond what the ontology declares. */\nexport interface ProjectionSurplus {\n /** Markings a mapped column carries that its property does not declare. */\n readonly properties: readonly {\n readonly objectTypeId: string\n readonly propertyId: string\n readonly column: string\n readonly markings: readonly string[]\n }[]\n /** Marked key columns, with what each one makes unreadable and why. */\n readonly keys: readonly {\n readonly target: ProjectionKeyTarget\n readonly column: string\n readonly role: string\n readonly markings: readonly string[]\n }[]\n}\n\n/**\n * What a projection's targets carry beyond their declarations when read from columns with these\n * markings: every rule it breaks, as markings to add to properties and to key targets. A property\n * that keys a link keeps its markings on the property as well.\n */\nexport function projectionSurplus(\n projection: ProjectionDefinition,\n ontology: OntologyLookup,\n markingsOf: ColumnMarkingsLookup\n): ProjectionSurplus {\n const properties: ProjectionSurplus[\"properties\"][number][] = []\n const keys: ProjectionSurplus[\"keys\"][number][] = []\n\n for (const violation of projectionMarkingViolations(projection, ontology, markingsOf)) {\n switch (violation.kind) {\n case \"undeclared\":\n properties.push({\n objectTypeId: violation.objectTypeId,\n propertyId: violation.propertyId,\n column: violation.column,\n markings: violation.missing,\n })\n break\n case \"markedKeyColumn\": {\n const markings = markingsOf(violation.column)\n for (const target of violation.targets) {\n keys.push({ target, column: violation.column, role: violation.role, markings })\n }\n\n const property = violation.property\n if (property && violation.targets.some((target) => target.kind === \"link\")) {\n properties.push({ ...property, column: violation.column, markings })\n }\n break\n }\n // Startup refuses a marked key property and a marked telemetry column from the code alone.\n case \"markedKeyProperty\":\n case \"telemetry\":\n break\n }\n }\n\n return { properties, keys }\n}\n\n// ── Rules ───────────────────────────────────────────────────\n\nfunction firstViolation(\n projection: ProjectionDefinition,\n ontology: OntologyLookup,\n markingsOf: ColumnMarkingsLookup\n): ProjectionMarkingViolation | null {\n const first = projectionMarkingViolations(projection, ontology, markingsOf).next()\n return first.done ? null : first.value\n}\n\n/** Every marking rule the projection breaks, the first one being the one messages report. */\nfunction* projectionMarkingViolations(\n projection: ProjectionDefinition,\n ontology: OntologyLookup,\n markingsOf: ColumnMarkingsLookup\n): Generator<ProjectionMarkingViolation> {\n switch (projection._tag) {\n case \"ObjectProjectionDefinition\": {\n const objectType = ontology.getObjectTypeById(projection.objectTypeId)\n if (objectType) yield* objectProjectionViolations(projection, objectType, markingsOf)\n return\n }\n case \"LinkProjectionDefinition\":\n yield* linkProjectionViolations(projection, markingsOf)\n return\n case \"TelemetryProjectionDefinition\":\n yield* telemetryProjectionViolations(projection, markingsOf)\n return\n }\n}\n\nfunction* objectProjectionViolations(\n projection: ObjectProjectionDefinition,\n objectType: ObjectType,\n markingsOf: ColumnMarkingsLookup\n): Generator<ProjectionMarkingViolation> {\n const keyRoles = objectProjectionKeyRoles(projection, objectType)\n\n for (const [propertyId, column] of Object.entries(projection.properties)) {\n const property = objectType.properties.find((candidate) => candidate.id === propertyId)\n const path = `${objectType.id}.${propertyId}`\n const keyRole = keyRoles.get(propertyId)\n\n if (keyRole) {\n if (markingsOf(column).length > 0) {\n yield {\n kind: \"markedKeyColumn\",\n column,\n role: keyRole.role,\n targets: keyRole.targets,\n property: { objectTypeId: objectType.id, propertyId },\n }\n } else if (property?.markings) {\n yield { kind: \"markedKeyProperty\", property: path, role: keyRole.role }\n }\n continue\n }\n\n const declared = new Set(property?.markings ?? [])\n const missing = markingsOf(column).filter((markingId) => !declared.has(markingId))\n if (missing.length > 0) {\n yield {\n kind: \"undeclared\",\n property: path,\n objectTypeId: objectType.id,\n propertyId,\n column,\n missing,\n }\n }\n }\n\n for (const [linkId, link] of Object.entries(projection.links)) {\n if (link.sourceField === undefined) continue\n\n const role = `keys link '${objectType.id}.${linkId}'`\n const target = linkTarget(objectType.id, linkId, link.targetObjectTypeId)\n yield* markedKeyColumn(link.sourceField, role, [target], markingsOf)\n }\n\n // The timestamp decides whether the source value or an app edit wins, which reveals how they\n // compare.\n const conflictResolution = projection.conflictResolution\n if (conflictResolution?.strategy === \"mostRecent\") {\n const role = \"decides which value wins under 'mostRecent'\"\n const target: ProjectionKeyTarget = { kind: \"type\", objectTypeId: objectType.id }\n yield* markedKeyColumn(conflictResolution.sourceTimestamp, role, [target], markingsOf)\n }\n}\n\nfunction* linkProjectionViolations(\n projection: LinkProjectionDefinition,\n markingsOf: ColumnMarkingsLookup\n): Generator<ProjectionMarkingViolation> {\n const role = `keys link '${projection.sourceObjectTypeId}.${projection.linkId}'`\n const targets = [\n linkTarget(projection.sourceObjectTypeId, projection.linkId, projection.targetObjectTypeId),\n ]\n yield* markedKeyColumn(projection.sourceField, role, targets, markingsOf)\n yield* markedKeyColumn(projection.targetField, role, targets, markingsOf)\n}\n\nfunction* telemetryProjectionViolations(\n projection: TelemetryProjectionDefinition,\n markingsOf: ColumnMarkingsLookup\n): Generator<ProjectionMarkingViolation> {\n const columns = [\n projection.objectIdField,\n projection.atField,\n ...Object.values(projection.properties).flatMap((mapping) =>\n mapping.unitField === undefined\n ? [mapping.valueField]\n : [mapping.valueField, mapping.unitField]\n ),\n ]\n\n for (const column of columns) {\n if (markingsOf(column).length > 0) yield { kind: \"telemetry\", column }\n }\n}\n\ninterface KeyRole {\n readonly role: string\n readonly targets: readonly ProjectionKeyTarget[]\n}\n\n/** Properties whose value becomes an object id or a link key, with the role they play. */\nfunction objectProjectionKeyRoles(\n projection: ObjectProjectionDefinition,\n objectType: ObjectType\n): ReadonlyMap<string, KeyRole> {\n const roles = new Map<string, KeyRole>()\n\n for (const property of objectType.properties) {\n if (!property.primary) continue\n roles.set(property.id, {\n role: `becomes the id of '${objectType.id}'`,\n targets: [{ kind: \"type\", objectTypeId: objectType.id }],\n })\n }\n\n for (const [linkId, link] of Object.entries(projection.links)) {\n if (link.sourcePropertyId === undefined) continue\n // An id that also keys a link plays both roles; messages name the link.\n roles.set(link.sourcePropertyId, {\n role: `keys link '${objectType.id}.${linkId}'`,\n targets: [\n ...(roles.get(link.sourcePropertyId)?.targets ?? []),\n linkTarget(objectType.id, linkId, link.targetObjectTypeId),\n ],\n })\n }\n\n return roles\n}\n\nfunction linkTarget(\n objectTypeId: string,\n linkId: string,\n targetObjectTypeId: string\n): ProjectionKeyTarget {\n return { kind: \"link\", objectTypeId, linkId, targetObjectTypeId }\n}\n\nfunction* markedKeyColumn(\n column: string,\n role: string,\n targets: readonly ProjectionKeyTarget[],\n markingsOf: ColumnMarkingsLookup\n): Generator<ProjectionMarkingViolation> {\n if (markingsOf(column).length > 0) yield { kind: \"markedKeyColumn\", column, role, targets }\n}\n\n// ── Messages ────────────────────────────────────────────────\n\n/** What a column carries, for messages, and whether any of it comes from elsewhere. */\ninterface CarriedMarkings {\n readonly text: string\n readonly inherited: boolean\n}\n\nfunction violationMessage(\n subject: string,\n datasetId: string,\n violation: ProjectionMarkingViolation,\n carries: (column: string) => CarriedMarkings\n): string {\n const path = (column: string) => `${datasetId}.${column}`\n\n switch (violation.kind) {\n case \"undeclared\":\n return `${subject}: property '${violation.property}' is projected from column '${path(violation.column)}', which carries ${carries(violation.column).text}. Add markings: ${markingList(violation.missing)} to the property.`\n case \"markedKeyColumn\": {\n const carried = carries(violation.column)\n const inherited = carried.inherited ? `, but carries ${carried.text}` : \"\"\n return `${subject}: column '${path(violation.column)}' ${violation.role} and cannot carry markings${inherited}.`\n }\n case \"markedKeyProperty\":\n return `${subject}: property '${violation.property}' ${violation.role} and cannot carry markings.`\n case \"telemetry\":\n return `${subject}: column '${path(violation.column)}' carries ${carries(violation.column).text}, and telemetry projections cannot read marked columns yet.`\n }\n}\n\n/**\n * `[financial] from 'raw_invoices.amount' through step 'invoices/normalize'`: each marking with one\n * path it arrived by. Markings the column declares itself have no path.\n */\nexport function describeOrigins(origins: ColumnMarkingOrigins, columnPath: string): string {\n const groups = new Map<string, string[]>()\n for (const [markingId, origin] of origins) {\n const path = originPath(origin, columnPath)\n groups.set(path, [...(groups.get(path) ?? []), markingId])\n }\n return [...groups].map(([path, markingIds]) => `${markingList(markingIds)}${path}`).join(\" and \")\n}\n\nfunction originPath(origin: MarkingOrigin, columnPath: string): string {\n const source = `${origin.column.datasetId}.${origin.column.column}`\n if (origin.steps.length === 0 && source === columnPath) return \"\"\n\n const steps = origin.steps.map((step) => `'${step}'`).join(\", \")\n return ` from '${source}' through ${origin.steps.length === 1 ? \"step\" : \"steps\"} ${steps}`\n}\n\nfunction markingList(markings: readonly string[]): string {\n return `[${markings.join(\", \")}]`\n}\n",
6
+ "import type { DatasetDefinition } from \"../datasets/types\"\nimport { lineageColumn } from \"../lake-storage/lineage\"\nimport type { DatasetColumnLineage, DatasetColumnRef } from \"../lake-storage/types\"\nimport { runStepLineage, stepReadColumns } from \"../pipelines/lineage\"\nimport type { PipelineDefinition, PipelineStepDefinition } from \"../pipelines/types\"\n\n/** A step of a registered pipeline. A step reused by two pipelines is two registered steps. */\nexport interface RegisteredStep {\n readonly pipelineId: string\n readonly step: PipelineStepDefinition\n}\n\n/** The column that declares a marking, and the steps it went through to reach a column. */\nexport interface MarkingOrigin {\n readonly column: DatasetColumnRef\n /** `pipeline/step`, upstream first. Empty when the column declares the marking itself. */\n readonly steps: readonly string[]\n}\n\n/** Each marking a column carries, with one path it arrived by. */\nexport type ColumnMarkingOrigins = ReadonlyMap<string, MarkingOrigin>\n\n/** Markings of every column of every registered dataset, derived from the definitions. */\nexport interface DatasetMarkings {\n /** Empty for a column without markings or that is not registered. */\n of(column: DatasetColumnRef): ColumnMarkingOrigins\n}\n\nexport function registeredSteps(\n pipelines: readonly PipelineDefinition[]\n): readonly RegisteredStep[] {\n return pipelines.flatMap((pipeline) =>\n pipeline.graph.nodes.map(({ step }) => ({ pipelineId: pipeline.id, step }))\n )\n}\n\n/** Lineage of each `run` step, built once per step object; undefined for other steps. */\nexport function runStepLineages(\n datasetsById: ReadonlyMap<string, DatasetDefinition>\n): (entry: RegisteredStep) => DatasetColumnLineage | undefined {\n const lineages = new Map<PipelineStepDefinition, DatasetColumnLineage>()\n\n return ({ step }) => {\n if (step.executor.kind !== \"run\") return undefined\n\n let lineage = lineages.get(step)\n if (!lineage) {\n lineage = runStepLineage(step, datasetsById)\n lineages.set(step, lineage)\n }\n\n return lineage\n }\n}\n\nexport function stepLabel(entry: RegisteredStep): string {\n return `${entry.pipelineId}/${entry.step.id}`\n}\n\ntype MutableOrigins = Map<string, MarkingOrigin>\n\nconst NO_MARKINGS: ColumnMarkingOrigins = new Map()\n\ninterface KnownLineage {\n readonly lineage: DatasetColumnLineage\n /** What a column the lineage does not list depends on. */\n readonly reads: readonly DatasetColumnRef[]\n}\n\n/**\n * Markings each column carries according to the registered definitions: the ones it declares, and\n * the ones each step derives from the columns it depends on, once that step's lineage is known.\n *\n * What decided the rows of a step's inputs decides the rows of its output, whether or not the step\n * reads a column of that input: `SELECT count(*) FROM rich` reveals which rows `rich` holds. So\n * each dataset also keeps the markings of its row dependencies, and every output column of a step\n * carries those of every input it reads, as the lineage each version records does.\n *\n * A step may read its own output and a dataset may have several producers, so a step whose output\n * gains a marking queues the steps that read that output, until nothing changes. Lineage can be\n * added in rounds: each round only revisits what the new lineage reaches.\n */\nexport class MarkingPropagation implements DatasetMarkings {\n private readonly datasetsById: ReadonlyMap<string, DatasetDefinition>\n /** Marked columns only, by dataset, built when a dataset is first looked at. */\n private readonly markings = new Map<string, Map<string, MutableOrigins>>()\n /** Markings of what decides each dataset's rows, for datasets a step writes. */\n private readonly rowMarkings = new Map<string, MutableOrigins>()\n private readonly ordered: readonly RegisteredStep[]\n private readonly readers = new Map<string, RegisteredStep[]>()\n private readonly known = new Map<RegisteredStep, KnownLineage>()\n private readonly queue = new Set<RegisteredStep>()\n\n constructor(\n datasetsById: ReadonlyMap<string, DatasetDefinition>,\n steps: readonly RegisteredStep[]\n ) {\n this.datasetsById = datasetsById\n this.ordered = inDependencyOrder(steps)\n\n for (const entry of steps) {\n for (const input of new Set(Object.values(entry.step.inputs).map((dataset) => dataset.id))) {\n appendTo(this.readers, input, entry)\n }\n }\n }\n\n of(ref: DatasetColumnRef): ColumnMarkingOrigins {\n return this.markedColumns(ref.datasetId).get(ref.column) ?? NO_MARKINGS\n }\n\n /**\n * Derive markings through every step `lineageOf` knows the lineage of. A step it returns null\n * for derives nothing until a later call knows it.\n */\n derive(lineageOf: (entry: RegisteredStep) => DatasetColumnLineage | null): this {\n for (const entry of this.ordered) {\n if (this.known.has(entry)) continue\n\n const lineage = lineageOf(entry)\n if (!lineage) continue\n\n this.known.set(entry, { lineage, reads: stepReadColumns(entry.step) })\n this.queue.add(entry)\n }\n\n for (const entry of this.queue) {\n this.queue.delete(entry)\n const known = this.known.get(entry)\n if (!known || !this.apply(entry, known)) continue\n\n // Entries added while iterating a Set are visited, so the queue drains in this loop.\n for (const reader of this.readers.get(entry.step.output.id) ?? []) {\n if (this.known.has(reader)) this.queue.add(reader)\n }\n }\n\n return this\n }\n\n /** Whether the output's rows or any output column gained a marking. */\n private apply(entry: RegisteredStep, { lineage, reads }: KnownLineage): boolean {\n const label = stepLabel(entry)\n const rows = this.union(lineage.rows)\n\n for (const input of new Set(Object.values(entry.step.inputs).map((dataset) => dataset.id))) {\n for (const [markingId, origin] of this.rowMarkings.get(input) ?? []) {\n if (!rows.has(markingId)) rows.set(markingId, origin)\n }\n }\n\n let everyRead: ReadonlyMap<string, MarkingOrigin> | undefined\n let changed = false\n\n const outputId = entry.step.output.id\n let outputRows = this.rowMarkings.get(outputId)\n\n for (const [markingId, origin] of rows) {\n if (outputRows?.has(markingId)) continue\n if (!outputRows) {\n outputRows = new Map()\n this.rowMarkings.set(outputId, outputRows)\n }\n\n outputRows.set(markingId, { column: origin.column, steps: [...origin.steps, label] })\n changed = true\n }\n\n const marked = this.markedColumns(outputId)\n for (const { name: column } of this.datasetsById.get(outputId)?.schema.columns ?? []) {\n const values = lineageColumn(lineage, column)\n const valueSource = values ? this.union(values) : (everyRead ?? this.union(reads))\n if (!values) everyRead = valueSource\n\n for (const source of [rows, valueSource]) {\n for (const [markingId, origin] of source) {\n let origins = marked.get(column)\n if (origins?.has(markingId)) continue\n if (!origins) {\n origins = new Map()\n marked.set(column, origins)\n }\n\n origins.set(markingId, { column: origin.column, steps: [...origin.steps, label] })\n changed = true\n }\n }\n }\n\n return changed\n }\n\n private markedColumns(datasetId: string): Map<string, MutableOrigins> {\n let columns = this.markings.get(datasetId)\n if (!columns) {\n columns = new Map()\n for (const column of this.datasetsById.get(datasetId)?.schema.columns ?? []) {\n if (!column.markings?.length) continue\n\n const origin = { column: { datasetId, column: column.name }, steps: [] }\n columns.set(column.name, new Map(column.markings.map((id) => [id, origin])))\n }\n\n this.markings.set(datasetId, columns)\n }\n\n return columns\n }\n\n /** Every marking of these columns, each with the first origin found. */\n private union(columns: readonly DatasetColumnRef[]): MutableOrigins {\n const union: MutableOrigins = new Map()\n for (const column of columns) {\n for (const [markingId, origin] of this.of(column)) {\n if (!union.has(markingId)) union.set(markingId, origin)\n }\n }\n return union\n }\n}\n\n/** Producers before consumers, so most markings arrive by their shortest path. */\nfunction inDependencyOrder(steps: readonly RegisteredStep[]): readonly RegisteredStep[] {\n const producers = producersByDataset(steps)\n const ordered: RegisteredStep[] = []\n const visited = new Set<RegisteredStep>()\n\n const visit = (entry: RegisteredStep): void => {\n if (visited.has(entry)) return\n\n visited.add(entry)\n for (const input of Object.values(entry.step.inputs)) {\n for (const producer of producers.get(input.id) ?? []) visit(producer)\n }\n\n ordered.push(entry)\n }\n\n for (const entry of steps) visit(entry)\n return ordered\n}\n\nfunction producersByDataset(\n steps: readonly RegisteredStep[]\n): ReadonlyMap<string, readonly RegisteredStep[]> {\n const producers = new Map<string, RegisteredStep[]>()\n for (const entry of steps) appendTo(producers, entry.step.output.id, entry)\n return producers\n}\n\nfunction appendTo<TValue>(map: Map<string, TValue[]>, key: string, value: TValue): void {\n const values = map.get(key)\n if (values) values.push(value)\n else map.set(key, [value])\n}\n",
7
+ "import type { ProjectionEventOrigin } from \"../events/envelope\"\nimport type { DatasetVersion } from \"../lake-storage/types\"\nimport type { OntologyDefinitionCatalog } from \"../ontology/registry\"\nimport type { PipelineDefinition } from \"../pipelines/types\"\nimport type { LinkProjectionDefinition, ObjectProjectionDefinition } from \"../projections/types\"\nimport type { ActiveOntologySource } from \"../storage/ontology\"\nimport { type AppliedContribution, NO_CONTRIBUTION } from \"./applied-markings-snapshot\"\nimport type { VersionClassification } from \"./dataset-version-markings\"\nimport { registeredSteps } from \"./marking-propagation\"\nimport { type ProjectionKeyTarget, projectionSurplus } from \"./projection-markings\"\n\nexport type SourceProjection = ObjectProjectionDefinition | LinkProjectionDefinition\n\n/** What reading a projection's applied version from the lake gave. */\nexport type AppliedVersionRead =\n | {\n readonly kind: \"read\"\n readonly version: DatasetVersion\n readonly classification: VersionClassification\n }\n | { readonly kind: \"missing\" }\n | { readonly kind: \"failed\"; readonly error: unknown }\n\nexport interface AppliedContributionContext {\n readonly ontology: Pick<OntologyDefinitionCatalog, \"getObjectTypeById\">\n /** The revision of a projection's current definition. */\n readonly revisionOf: (projectionId: string) => string\n /** What a version that cannot be read may carry. */\n readonly everyMarking: ReadonlySet<string>\n /** The pipeline that writes a dataset in the current code, for messages. */\n readonly pipelineOf: (datasetId: string) => string | undefined\n}\n\n/**\n * What one projection's applied version adds to the code's markings, with the notice that explains\n * it. It reads nothing: the caller reads and classifies the version.\n *\n * - A version that could not be read seals the projection's target with every marking.\n * - Objects written by an earlier definition, which may have mapped any column, seal it with every\n * marking of the version.\n * - Otherwise a property keeps the markings its column carries beyond its declaration, and a key\n * column that carries markings seals what it keys.\n */\nexport function appliedContribution(\n projection: SourceProjection,\n source: ActiveOntologySource,\n read: AppliedVersionRead,\n context: AppliedContributionContext\n): AppliedContribution {\n const { datasetId, versionId } = source.datasetVersion\n const subject = `version '${versionId}' of '${datasetId}'`\n const target = projectionTarget(projection)\n const hint = rerunHint(datasetId, read.kind === \"read\" ? read.version : undefined, context)\n const every = [...context.everyMarking].sort()\n\n if (read.kind === \"failed\") {\n return sealed(projection.id, target, every, hint, {\n reason: `the ${subject} it applied, which could not be read from the lake,`,\n detail: `applied ${subject}, which could not be read from the lake: ${sentence(errorMessage(read.error))}`,\n })\n }\n\n if (read.kind === \"missing\") {\n return sealed(projection.id, target, every, hint, {\n reason: `the ${subject} it applied, which the lake no longer has,`,\n detail: `applied ${subject}, which the lake no longer has.`,\n })\n }\n\n const { columns, conservative } = read.classification\n const because =\n conservative === undefined\n ? \"\"\n : ` The version was classified with every marking its sources could hold, because ${conservative}.`\n\n if (\n datasetId !== projection.datasetId ||\n source.projectionRevision !== context.revisionOf(projection.id)\n ) {\n const markings = appliedVersionMarkings(read, context.everyMarking)\n return sealed(projection.id, target, markings, hint, {\n reason: `the ${subject} it applied under an earlier definition of the projection`,\n detail: `applied ${subject} under an earlier definition of the projection, and that version carries ${markingList(markings)}.${because}`,\n })\n }\n\n const markingsOf = (column: string) => [...(columns.get(column) ?? [])].sort()\n const surplus = projectionSurplus(projection, context.ontology, markingsOf)\n if (surplus.properties.length === 0 && surplus.keys.length === 0) return NO_CONTRIBUTION\n\n const column = (name: string) => `'${datasetId}.${name}'`\n const seals = surplus.keys.map((key) => ({\n target: key.target,\n seal: {\n projectionId: projection.id,\n markings: key.markings,\n reason: `in the version '${versionId}' it applied, column ${column(key.column)}, which ${key.role},`,\n },\n }))\n\n const details = [\n ...surplus.keys.map(\n (key) => `column ${column(key.column)} ${key.role} and carries ${markingList(key.markings)}`\n ),\n ...surplus.properties.map(\n (property) =>\n `property '${property.objectTypeId}.${property.propertyId}' is projected from column ${column(property.column)}, which carries ${markingList(property.markings)}`\n ),\n ]\n\n const consequences: string[] = []\n if (seals.length > 0) {\n const markings = [...new Set(seals.flatMap(({ seal }) => seal.markings))].sort()\n consequences.push(\n `${describeTargets(seals.map(({ target }) => target))} cannot be read without clearance for ${markingList(markings)}`\n )\n }\n\n if (surplus.properties.length > 0) {\n const names = surplus.properties.map((p) => `'${p.objectTypeId}.${p.propertyId}'`)\n const verb = surplus.properties.length === 1 ? \"keeps\" : \"keep\"\n consequences.push(`${describeNames(names)} ${verb} these markings`)\n }\n\n return {\n properties: surplus.properties.map(({ objectTypeId, propertyId, markings }) => ({\n objectTypeId,\n propertyId,\n markings,\n })),\n seals,\n notice: {\n projectionId: projection.id,\n sealed: seals.length > 0,\n message: `[Sixb] Projection '${projection.id}' applied ${subject}, in which ${details.join(\"; \")}.${because} ${capitalize(consequences.join(\", and \"))} until the projection applies a version the code allows. ${hint}`,\n },\n }\n}\n\n/** Every marking the version carries in any column; every marking when it could not be read. */\nexport function appliedVersionMarkings(\n read: AppliedVersionRead,\n everyMarking: ReadonlySet<string>\n): readonly string[] {\n if (read.kind !== \"read\") return [...everyMarking].sort()\n\n const { columns } = read.classification\n return [...new Set([...columns.values()].flatMap((set) => [...set]))].sort()\n}\n\n/** An object event a projection emitted: the version its values came from, and its type. */\nexport type EventOriginRef = Pick<\n ProjectionEventOrigin,\n \"projectionId\" | \"datasetId\" | \"datasetVersionId\"\n> & { readonly objectTypeId: string }\n\n/**\n * The markings an object event's origin version carries on each property its projection maps.\n * When the projection now maps another dataset or type, or the version cannot be read, every\n * property but the primary one carries every marking it could, as objects written under an\n * earlier definition do.\n */\nexport function eventOriginMarkings(\n projection: ObjectProjectionDefinition,\n origin: EventOriginRef,\n read: AppliedVersionRead,\n context: Pick<AppliedContributionContext, \"ontology\" | \"everyMarking\">\n): AppliedContribution[\"properties\"] {\n const { objectTypeId } = origin\n\n if (\n read.kind === \"read\" &&\n projection.datasetId === origin.datasetId &&\n projection.objectTypeId === objectTypeId\n ) {\n const { columns } = read.classification\n return Object.entries(projection.properties).flatMap(([propertyId, column]) => {\n const markings = [...(columns.get(column) ?? [])].sort()\n return markings.length === 0 ? [] : [{ objectTypeId, propertyId, markings }]\n })\n }\n\n const markings = appliedVersionMarkings(read, context.everyMarking)\n if (markings.length === 0) return []\n\n return (context.ontology.getObjectTypeById(objectTypeId)?.properties ?? [])\n .filter((property) => !property.primary)\n .map((property) => ({ objectTypeId, propertyId: property.id, markings }))\n}\n\n/** The pipeline that writes each dataset in the current code. */\nexport function producingPipelines(\n pipelines: readonly PipelineDefinition[]\n): (datasetId: string) => string | undefined {\n const byDataset = new Map<string, string>()\n for (const { pipelineId, step } of registeredSteps(pipelines)) {\n if (!byDataset.has(step.output.id)) byDataset.set(step.output.id, pipelineId)\n }\n\n return (datasetId) => byDataset.get(datasetId)\n}\n\n/** Seal the projection's whole target: its object type, or its link. */\nfunction sealed(\n projectionId: string,\n target: ProjectionKeyTarget,\n markings: readonly string[],\n hint: string,\n text: { readonly reason: string; readonly detail: string }\n): AppliedContribution {\n if (markings.length === 0) return NO_CONTRIBUTION\n return {\n properties: [],\n seals: [{ target, seal: { projectionId, markings, reason: text.reason } }],\n notice: {\n projectionId,\n sealed: true,\n message: `[Sixb] Projection '${projectionId}' ${text.detail} ${describeTargets([target])} cannot be read without clearance for ${markingList(markings)} until the projection applies a version the code allows. ${hint}`,\n },\n }\n}\n\nfunction projectionTarget(projection: SourceProjection): ProjectionKeyTarget {\n return projection._tag === \"ObjectProjectionDefinition\"\n ? { kind: \"type\", objectTypeId: projection.objectTypeId }\n : {\n kind: \"link\",\n objectTypeId: projection.sourceObjectTypeId,\n linkId: projection.linkId,\n targetObjectTypeId: projection.targetObjectTypeId,\n }\n}\n\nfunction rerunHint(\n datasetId: string,\n version: DatasetVersion | undefined,\n context: AppliedContributionContext\n): string {\n const pipelineId =\n context.pipelineOf(datasetId) ??\n (version?.producer?.kind === \"pipeline\" ? version.producer.id : undefined)\n return pipelineId === undefined\n ? `Write a new version of '${datasetId}' to replace it.`\n : `Rerun pipeline '${pipelineId}' to replace it.`\n}\n\nfunction describeTargets(targets: readonly ProjectionKeyTarget[]): string {\n return describeNames(\n targets.map((target) =>\n target.kind === \"type\"\n ? `'${target.objectTypeId}'`\n : `link '${target.objectTypeId}.${target.linkId}'`\n )\n )\n}\n\nfunction describeNames(names: readonly string[]): string {\n const unique = [...new Set(names)]\n const last = unique.pop() ?? \"\"\n return unique.length === 0 ? last : `${unique.join(\", \")} and ${last}`\n}\n\nfunction capitalize(text: string): string {\n return text.charAt(0).toUpperCase() + text.slice(1)\n}\n\nexport function sentence(text: string): string {\n return text.endsWith(\".\") ? text : `${text}.`\n}\n\nfunction markingList(markings: readonly string[]): string {\n return `[${markings.join(\", \")}]`\n}\n\nexport function errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n}\n",
8
+ "import type { AppliedMarkings } from \"./applied-markings\"\nimport { errorMessage } from \"./applied-markings-contribution\"\n\nconst appliedMarkingsKey: unique symbol = Symbol(\"sixb.appliedMarkings\")\n\ninterface AppliedMarkingsOwner {\n readonly [appliedMarkingsKey]?: AppliedMarkings\n}\n\n/** One snapshot per host, so every reader shares it and its resolved clearances. */\nexport function registerAppliedMarkings(owner: object, markings: AppliedMarkings): void {\n const registered = (owner as AppliedMarkingsOwner)[appliedMarkingsKey]\n if (registered && registered !== markings) {\n throw new Error(\"[Sixb] Applied markings are already registered for this owner.\")\n }\n\n Object.defineProperty(owner, appliedMarkingsKey, {\n configurable: false,\n enumerable: false,\n value: markings,\n writable: false,\n })\n}\n\nexport function getAppliedMarkings(owner: object): AppliedMarkings {\n const markings = (owner as AppliedMarkingsOwner)[appliedMarkingsKey]\n if (markings) return markings\n throw new Error(\"[Sixb] Applied markings are not registered for this runtime.\")\n}\n\n/**\n * Read the applied versions ahead of the first request that needs them. A failure is only\n * reported here: that request reads them again, and fails closed if it cannot.\n */\nexport function warmAppliedMarkings(owner: object): void {\n getAppliedMarkings(owner)\n .current()\n .catch((error: unknown) => {\n console.warn(errorMessage(error))\n })\n}\n",
9
+ "/**\n * Shared, immutable sets of marking ids.\n *\n * Every column of every resolved version holds one of a handful of distinct sets, so each distinct\n * set is created once and compared by identity.\n */\nexport class MarkingSets {\n readonly empty: ReadonlySet<string> = new Set()\n private readonly sets = new Map<string, ReadonlySet<string>>([[\"\", this.empty]])\n\n of(markingIds: Iterable<string> | undefined): ReadonlySet<string> {\n // Most columns carry no marking.\n if (markingIds === undefined || (Array.isArray(markingIds) && markingIds.length === 0)) {\n return this.empty\n }\n\n const sorted = [...new Set(markingIds)].sort()\n const key = sorted.join(\"\\u0000\")\n\n let set = this.sets.get(key)\n if (!set) {\n set = new Set(sorted)\n this.sets.set(key, set)\n }\n\n return set\n }\n\n /** The union of sets this instance created. */\n union(sets: Iterable<ReadonlySet<string> | undefined>): ReadonlySet<string> {\n let single: ReadonlySet<string> | undefined\n const ids: string[] = []\n\n for (const set of sets) {\n if (!set || set.size === 0) continue\n single = single === undefined && ids.length === 0 ? set : undefined\n ids.push(...set)\n }\n\n return single ?? this.of(ids)\n }\n}\n",
10
+ "import type { DatasetDefinition } from \"../datasets/types\"\nimport { isUnknownLineage, lineageColumn, versionLineage } from \"../lake-storage/lineage\"\nimport type { DatasetColumnRef, DatasetVersion, LakeStorage } from \"../lake-storage/types\"\nimport { MarkingSets } from \"./marking-sets\"\n\n/** Markings of each column of one dataset version. A column without markings has an empty set. */\nexport type VersionColumnMarkings = ReadonlyMap<string, ReadonlySet<string>>\n\nexport interface VersionClassification {\n readonly columns: VersionColumnMarkings\n /**\n * Why part of the version was classified conservatively, with every marking it could hold.\n * Absent when every column was classified from its lineage.\n */\n readonly conservative?: string\n}\n\n/**\n * Markings each version of a dataset carries.\n *\n * Markings are never stored. A column carries the markings its registered dataset declares, and\n * those every column its lineage lists declares. The version records that lineage resolved across\n * every upstream step and every row it keeps (`DatasetVersion.lineage`), so a version keeps the\n * classification of the code that produced it, and classifying it reads no other version.\n *\n * Wherever the record does not say what a column holds (no lineage on a pipeline version, or on\n * any version of a provider that does not declare `recordsLineage`, an unknown history, a column\n * it does not list, a dataset no longer registered) the column is classified with every marking\n * the project declares.\n */\nexport interface DatasetVersionMarkings {\n classify(version: DatasetVersion): VersionClassification\n /**\n * Every marking declared on a registered column. Every classification, conservative ones\n * included, is drawn from it, so a reader cleared for all of it needs no classification. Empty\n * when the project declares no column markings.\n */\n everyMarking(): ReadonlySet<string>\n}\n\nexport interface DatasetVersionMarkingsOptions {\n readonly datasets: { list(): readonly DatasetDefinition[] }\n /** The lake the versions are read from: whether it records lineage on every version. */\n readonly lakeStorage: Pick<LakeStorage, \"recordsLineage\">\n}\n\nexport function createDatasetVersionMarkings(\n options: DatasetVersionMarkingsOptions\n): DatasetVersionMarkings {\n const sets = new MarkingSets()\n\n // Built on first use: a host that never classifies a version pays nothing for it.\n let declared: ReadonlyMap<string, ReadonlyMap<string, ReadonlySet<string>>> | undefined\n const declaredByDataset = () =>\n (declared ??= new Map(\n options.datasets\n .list()\n .map((dataset) => [\n dataset.id,\n new Map(dataset.schema.columns.map((column) => [column.name, sets.of(column.markings)])),\n ])\n ))\n\n /**\n * Every marking a registered column declares: what a column may hold where its record does not\n * say. The pipelines that wrote it may have read datasets the current code no longer reads, so\n * nothing narrower is safe.\n */\n let every: ReadonlySet<string> | undefined\n const everyMarking = () =>\n (every ??= sets.union(\n [...declaredByDataset().values()].flatMap((columns) => [...columns.values()])\n ))\n\n const classify = (version: DatasetVersion): VersionClassification => {\n const subject = `version '${version.versionId}' of '${version.datasetId}'`\n const own = declaredByDataset().get(version.datasetId)\n\n // No definition says what its columns declare: they may hold anything a column declares.\n if (!own) return conservatively(version, `dataset '${version.datasetId}' is not registered`)\n\n const lineage = versionLineage(version, options.lakeStorage)\n if (isUnknownLineage(lineage)) {\n // A reason core derived names this version. A recorded one names where the lineage was\n // lost: upstream, or, for a provider that could not decode it, this version's own record.\n return conservatively(\n version,\n lineage === version.lineage\n ? `the lineage of ${subject} is unknown: ${lineage.unknown}`\n : lineage.unknown\n )\n }\n\n let conservative: string | undefined\n const markingsOf = (ref: DatasetColumnRef): ReadonlySet<string> | undefined => {\n const columns = declaredByDataset().get(ref.datasetId)\n if (columns) return columns.get(ref.column)\n conservative ??= `dataset '${ref.datasetId}' is not registered`\n return everyMarking()\n }\n\n const rows = sets.union(lineage.rows.map(markingsOf))\n const columns = new Map(\n version.schema.columns.map(({ name }) => {\n const values = lineageColumn(lineage, name)\n if (!values) {\n conservative ??= `${subject} recorded no lineage for column '${name}'`\n return [name, everyMarking()]\n }\n\n return [name, sets.union([own.get(name), rows, ...values.map(markingsOf)])]\n })\n )\n\n return { columns, ...(conservative === undefined ? {} : { conservative }) }\n }\n\n const conservatively = (version: DatasetVersion, reason: string): VersionClassification => {\n const markings = everyMarking()\n return {\n columns: new Map(version.schema.columns.map(({ name }) => [name, markings])),\n conservative: reason,\n }\n }\n\n return { classify, everyMarking }\n}\n\n// ── Host capability ─────────────────────────────────────────\n\nconst datasetVersionMarkingsKey: unique symbol = Symbol(\"sixb.datasetVersionMarkings\")\n\ninterface DatasetVersionMarkingsOwner {\n readonly [datasetVersionMarkingsKey]?: DatasetVersionMarkings\n}\n\n/** One classifier per host, so every reader shares the markings it reads from the definitions. */\nexport function registerDatasetVersionMarkings(\n owner: object,\n markings: DatasetVersionMarkings\n): void {\n const registered = (owner as DatasetVersionMarkingsOwner)[datasetVersionMarkingsKey]\n if (registered && registered !== markings) {\n throw new Error(\"[Sixb] Dataset version markings are already registered for this owner.\")\n }\n\n Object.defineProperty(owner, datasetVersionMarkingsKey, {\n configurable: false,\n enumerable: false,\n value: markings,\n writable: false,\n })\n}\n\nexport function getDatasetVersionMarkings(owner: object): DatasetVersionMarkings {\n const markings = (owner as DatasetVersionMarkingsOwner)[datasetVersionMarkingsKey]\n if (markings) return markings\n throw new Error(\"[Sixb] Dataset version markings are not registered for this runtime.\")\n}\n\nexport function shareDatasetVersionMarkings(source: object, target: object): void {\n registerDatasetVersionMarkings(target, getDatasetVersionMarkings(source))\n}\n"
11
+ ],
12
+ "mappings": "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",
13
+ "debugId": "BCFE94079FF12A1E64756E2164756E21",
14
+ "names": []
15
+ }
@@ -3,10 +3,10 @@ import {
3
3
  createTrustedPrimitiveRuntimeAuthorization,
4
4
  getAuthorizationRef,
5
5
  resolveExecutionScopeAuthorization
6
- } from "./chunk-y7rqfrgg.js";
6
+ } from "./chunk-6vb4st8k.js";
7
7
  import {
8
8
  ExecutionStorageError2
9
- } from "./chunk-tw03bsmb.js";
9
+ } from "./chunk-eptrvnby.js";
10
10
 
11
11
  // src/execution/durable.ts
12
12
  import { isDeepStrictEqual } from "util";
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  parseSixbFailure2
4
- } from "./chunk-8mx7qw3y.js";
4
+ } from "./chunk-dvd2fp9q.js";
5
5
  import {
6
6
  PROJECTION_RUN_FAILURE_CODES2,
7
7
  PROJECTION_RUN_PROGRESS_KEYS2,
@@ -30,6 +30,68 @@ function canonicalMediaType2(value) {
30
30
  }
31
31
  return canonical;
32
32
  }
33
+ function sniffFileMediaType2(bytes) {
34
+ if (startsWith(bytes, [137, 80, 78, 71, 13, 10, 26, 10]))
35
+ return "image/png";
36
+ if (startsWith(bytes, [255, 216, 255]))
37
+ return "image/jpeg";
38
+ if (asciiAt(bytes, 0, "GIF87a") || asciiAt(bytes, 0, "GIF89a"))
39
+ return "image/gif";
40
+ if (asciiAt(bytes, 0, "RIFF") && asciiAt(bytes, 8, "WEBP"))
41
+ return "image/webp";
42
+ if (asciiAt(bytes, 0, "%PDF-"))
43
+ return "application/pdf";
44
+ return;
45
+ }
46
+ function inferFileMediaType2(fileName, bytes) {
47
+ const sniffed = bytes === undefined ? undefined : sniffFileMediaType2(bytes);
48
+ if (sniffed)
49
+ return sniffed;
50
+ const dot = fileName.lastIndexOf(".");
51
+ const extension = dot < 0 ? "" : fileName.slice(dot).toLowerCase();
52
+ return EXTENSION_MEDIA_TYPES[extension] ?? "application/octet-stream";
53
+ }
54
+ var EXTENSION_MEDIA_TYPES = {
55
+ ".bmp": "image/bmp",
56
+ ".css": "text/css",
57
+ ".csv": "text/csv",
58
+ ".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
59
+ ".gif": "image/gif",
60
+ ".htm": "text/html",
61
+ ".html": "text/html",
62
+ ".jpeg": "image/jpeg",
63
+ ".jpg": "image/jpeg",
64
+ ".js": "application/javascript",
65
+ ".json": "application/json",
66
+ ".jsonl": "application/x-ndjson",
67
+ ".markdown": "text/markdown",
68
+ ".md": "text/markdown",
69
+ ".mjs": "application/javascript",
70
+ ".pdf": "application/pdf",
71
+ ".png": "image/png",
72
+ ".pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
73
+ ".svg": "image/svg+xml",
74
+ ".tsv": "text/tab-separated-values",
75
+ ".txt": "text/plain",
76
+ ".webp": "image/webp",
77
+ ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
78
+ ".xml": "application/xml",
79
+ ".yaml": "application/yaml",
80
+ ".yml": "application/yaml",
81
+ ".zip": "application/zip"
82
+ };
83
+ function startsWith(bytes, signature) {
84
+ return signature.every((byte, index) => bytes[index] === byte);
85
+ }
86
+ function asciiAt(bytes, offset, value) {
87
+ if (bytes.byteLength < offset + value.length)
88
+ return false;
89
+ for (let index = 0;index < value.length; index += 1) {
90
+ if (bytes[offset + index] !== value.charCodeAt(index))
91
+ return false;
92
+ }
93
+ return true;
94
+ }
33
95
 
34
96
  // src/blob-storage/validation.ts
35
97
  function isBlobDigest2(value) {
@@ -50,6 +112,6 @@ function supportsRangeRead2(storage) {
50
112
  return typeof candidate.openRange === "function";
51
113
  }
52
114
 
53
- export { blobDigestHex2, blobIdFromDigest2, canonicalMediaType2, isBlobDigest2, isFileRef2, isValidFileRef, supportsDirectUpload2, supportsRangeRead2 };
115
+ export { blobDigestHex2, blobIdFromDigest2, canonicalMediaType2, sniffFileMediaType2, inferFileMediaType2, isBlobDigest2, isFileRef2, isValidFileRef, supportsDirectUpload2, supportsRangeRead2 };
54
116
 
55
- //# debugId=91CB77087AB7E2E164756E2164756E21
117
+ //# debugId=04A3170175DBD12C64756E2164756E21
@@ -3,10 +3,10 @@
3
3
  "sources": ["../src/blob-storage/derive.ts", "../src/blob-storage/media-type.ts", "../src/blob-storage/validation.ts"],
4
4
  "sourcesContent": [
5
5
  "import type { BlobDigest } from \"./types\"\n\n// Pure, crypto-free derivations of blob identity from a digest. Kept out of\n// `utils.ts` (which imports `node:crypto`) so the browser-safe `./browser`\n// barrel can reuse them without dragging Node crypto into the client bundle.\n\nexport function blobDigestHex(digest: BlobDigest): string {\n return digest.slice(\"sha256:\".length)\n}\n\nexport function blobIdFromDigest(digest: BlobDigest): string {\n return `blob_${blobDigestHex(digest)}`\n}\n",
6
- "// One media type as RFC 9110 defines it: `type/subtype`, each a token, then optional\n// `;name=value` parameters whose value is a token or a quoted string. Stricter than the RFC where\n// leniency only invites a second reading: no surrounding whitespace, no empty parameters, no\n// escapes, and no comma anywhere. Browsers read a comma-separated value as a list of types and\n// use the last valid one, so a value with a comma can mean something other than its first type.\nconst TOKEN = \"[!#$%&'*+.^_`|~0-9A-Za-z-]+\"\nconst QUOTED_STRING = '\"[\\\\t\\\\x20\\\\x21\\\\x23-\\\\x2b\\\\x2d-\\\\x5b\\\\x5d-\\\\x7e]*\"'\nconst PARAMETER = `[\\\\t ]*;[\\\\t ]*(${TOKEN})=(${TOKEN}|${QUOTED_STRING})`\nconst MEDIA_TYPE_PATTERN = new RegExp(`^(${TOKEN})/(${TOKEN})((?:${PARAMETER})*)$`)\nconst PARAMETER_PATTERN = new RegExp(PARAMETER, \"g\")\n\n/**\n * The canonical form of a single well-formed media type, or `null` for anything else.\n *\n * Type, subtype, and parameter names are case-insensitive, so they are lowercased; parameter\n * values keep their case. `\"Text/Plain; Charset=UTF-8\"` becomes `\"text/plain;charset=UTF-8\"`.\n */\nexport function canonicalMediaType(value: unknown): string | null {\n if (typeof value !== \"string\") return null\n const match = MEDIA_TYPE_PATTERN.exec(value)\n if (!match) return null\n\n const [, type, subtype, parameters] = match\n let canonical = `${type.toLowerCase()}/${subtype.toLowerCase()}`\n for (const [, name, parameterValue] of parameters.matchAll(PARAMETER_PATTERN)) {\n canonical += `;${name.toLowerCase()}=${parameterValue}`\n }\n return canonical\n}\n",
6
+ "// One media type as RFC 9110 defines it: `type/subtype`, each a token, then optional\n// `;name=value` parameters whose value is a token or a quoted string. Stricter than the RFC where\n// leniency only invites a second reading: no surrounding whitespace, no empty parameters, no\n// escapes, and no comma anywhere. Browsers read a comma-separated value as a list of types and\n// use the last valid one, so a value with a comma can mean something other than its first type.\nconst TOKEN = \"[!#$%&'*+.^_`|~0-9A-Za-z-]+\"\nconst QUOTED_STRING = '\"[\\\\t\\\\x20\\\\x21\\\\x23-\\\\x2b\\\\x2d-\\\\x5b\\\\x5d-\\\\x7e]*\"'\nconst PARAMETER = `[\\\\t ]*;[\\\\t ]*(${TOKEN})=(${TOKEN}|${QUOTED_STRING})`\nconst MEDIA_TYPE_PATTERN = new RegExp(`^(${TOKEN})/(${TOKEN})((?:${PARAMETER})*)$`)\nconst PARAMETER_PATTERN = new RegExp(PARAMETER, \"g\")\n\n/**\n * The canonical form of a single well-formed media type, or `null` for anything else.\n *\n * Type, subtype, and parameter names are case-insensitive, so they are lowercased; parameter\n * values keep their case. `\"Text/Plain; Charset=UTF-8\"` becomes `\"text/plain;charset=UTF-8\"`.\n */\nexport function canonicalMediaType(value: unknown): string | null {\n if (typeof value !== \"string\") return null\n const match = MEDIA_TYPE_PATTERN.exec(value)\n if (!match) return null\n\n const [, type, subtype, parameters] = match\n let canonical = `${type.toLowerCase()}/${subtype.toLowerCase()}`\n for (const [, name, parameterValue] of parameters.matchAll(PARAMETER_PATTERN)) {\n canonical += `;${name.toLowerCase()}=${parameterValue}`\n }\n return canonical\n}\n\n/**\n * The media type a file's bytes declare by their leading signature, or `undefined` when they carry\n * none this function knows. Only formats with an unambiguous signature are recognized; text formats\n * have none and are left to the file name.\n */\nexport function sniffFileMediaType(bytes: Uint8Array): string | undefined {\n if (startsWith(bytes, [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a])) return \"image/png\"\n if (startsWith(bytes, [0xff, 0xd8, 0xff])) return \"image/jpeg\"\n if (asciiAt(bytes, 0, \"GIF87a\") || asciiAt(bytes, 0, \"GIF89a\")) return \"image/gif\"\n if (asciiAt(bytes, 0, \"RIFF\") && asciiAt(bytes, 8, \"WEBP\")) return \"image/webp\"\n if (asciiAt(bytes, 0, \"%PDF-\")) return \"application/pdf\"\n return undefined\n}\n\n/**\n * The media type of a file handed over without one: its bytes' signature when they have one, else\n * its extension, else `application/octet-stream`. Every place that classifies a sandbox or tool file\n * goes through this one table, so the same file gets the same type wherever it comes from.\n */\nexport function inferFileMediaType(fileName: string, bytes?: Uint8Array): string {\n const sniffed = bytes === undefined ? undefined : sniffFileMediaType(bytes)\n if (sniffed) return sniffed\n const dot = fileName.lastIndexOf(\".\")\n const extension = dot < 0 ? \"\" : fileName.slice(dot).toLowerCase()\n return EXTENSION_MEDIA_TYPES[extension] ?? \"application/octet-stream\"\n}\n\nconst EXTENSION_MEDIA_TYPES: Readonly<Record<string, string>> = {\n \".bmp\": \"image/bmp\",\n \".css\": \"text/css\",\n \".csv\": \"text/csv\",\n \".docx\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n \".gif\": \"image/gif\",\n \".htm\": \"text/html\",\n \".html\": \"text/html\",\n \".jpeg\": \"image/jpeg\",\n \".jpg\": \"image/jpeg\",\n \".js\": \"application/javascript\",\n \".json\": \"application/json\",\n \".jsonl\": \"application/x-ndjson\",\n \".markdown\": \"text/markdown\",\n \".md\": \"text/markdown\",\n \".mjs\": \"application/javascript\",\n \".pdf\": \"application/pdf\",\n \".png\": \"image/png\",\n \".pptx\": \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n \".svg\": \"image/svg+xml\",\n \".tsv\": \"text/tab-separated-values\",\n \".txt\": \"text/plain\",\n \".webp\": \"image/webp\",\n \".xlsx\": \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n \".xml\": \"application/xml\",\n \".yaml\": \"application/yaml\",\n \".yml\": \"application/yaml\",\n \".zip\": \"application/zip\",\n}\n\nfunction startsWith(bytes: Uint8Array, signature: readonly number[]): boolean {\n return signature.every((byte, index) => bytes[index] === byte)\n}\n\nfunction asciiAt(bytes: Uint8Array, offset: number, value: string): boolean {\n if (bytes.byteLength < offset + value.length) return false\n for (let index = 0; index < value.length; index += 1) {\n if (bytes[offset + index] !== value.charCodeAt(index)) return false\n }\n return true\n}\n",
7
7
  "import { isPlainRecord } from \"../json\"\nimport { blobIdFromDigest } from \"./derive\"\nimport { canonicalMediaType } from \"./media-type\"\nimport type {\n BlobDigest,\n BlobStorage,\n DirectUploadBlobStorage,\n FileRef,\n RangeReadableBlobStorage,\n} from \"./types\"\n\nexport function isBlobDigest(value: unknown): value is BlobDigest {\n return typeof value === \"string\" && value.startsWith(\"sha256:\") && value.length > \"sha256:\".length\n}\n\nexport function isFileRef(value: unknown): value is FileRef {\n return (\n isPlainRecord(value) &&\n typeof value.blobId === \"string\" &&\n value.blobId.trim().length > 0 &&\n isBlobDigest(value.digest) &&\n // Blob identity is content-addressed: the id must be derivable from the digest.\n // Rejecting a mismatch guards against tampered or malformed references.\n value.blobId === blobIdFromDigest(value.digest) &&\n typeof value.sizeBytes === \"number\" &&\n Number.isInteger(value.sizeBytes) &&\n value.sizeBytes >= 0 &&\n (value.fileName === undefined || typeof value.fileName === \"string\") &&\n (value.mediaType === undefined || typeof value.mediaType === \"string\") &&\n (value.logicalPath === undefined || typeof value.logicalPath === \"string\")\n )\n}\n\n/**\n * `isFileRef`, plus a `mediaType` that, when present, is exactly one media type. Paths that store\n * a reference a caller hands them use this. Reads keep `isFileRef`, so references stored before\n * the rule still load; file routes re-parse the type before serving it.\n */\nexport function isValidFileRef(value: unknown): value is FileRef {\n return (\n isFileRef(value) &&\n (value.mediaType === undefined || canonicalMediaType(value.mediaType) !== null)\n )\n}\n\nexport function supportsDirectUpload(\n storage: BlobStorage\n): storage is BlobStorage & DirectUploadBlobStorage {\n const candidate = storage as Partial<DirectUploadBlobStorage>\n return (\n typeof candidate.createUpload === \"function\" &&\n typeof candidate.signUploadPart === \"function\" &&\n typeof candidate.completeUpload === \"function\" &&\n typeof candidate.abortUpload === \"function\"\n )\n}\n\nexport function supportsRangeRead(\n storage: BlobStorage\n): storage is BlobStorage & RangeReadableBlobStorage {\n const candidate = storage as Partial<RangeReadableBlobStorage>\n return typeof candidate.openRange === \"function\"\n}\n"
8
8
  ],
9
- "mappings": ";;;;;;AAMO,SAAS,cAAa,CAAC,QAA4B;AAAA,EACxD,OAAO,OAAO,MAAM,UAAU,MAAM;AAAA;AAG/B,SAAS,iBAAgB,CAAC,QAA4B;AAAA,EAC3D,OAAO,QAAQ,eAAc,MAAM;AAAA;;;ACNrC,IAAM,QAAQ;AACd,IAAM,gBAAgB;AACtB,IAAM,YAAY,mBAAmB,WAAW,SAAS;AACzD,IAAM,qBAAqB,IAAI,OAAO,KAAK,WAAW,aAAa,eAAe;AAClF,IAAM,oBAAoB,IAAI,OAAO,WAAW,GAAG;AAQ5C,SAAS,mBAAkB,CAAC,OAA+B;AAAA,EAChE,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EACtC,MAAM,QAAQ,mBAAmB,KAAK,KAAK;AAAA,EAC3C,IAAI,CAAC;AAAA,IAAO,OAAO;AAAA,EAEnB,SAAS,MAAM,SAAS,cAAc;AAAA,EACtC,IAAI,YAAY,GAAG,KAAK,YAAY,KAAK,QAAQ,YAAY;AAAA,EAC7D,cAAc,MAAM,mBAAmB,WAAW,SAAS,iBAAiB,GAAG;AAAA,IAC7E,aAAa,IAAI,KAAK,YAAY,KAAK;AAAA,EACzC;AAAA,EACA,OAAO;AAAA;;;AChBF,SAAS,aAAY,CAAC,OAAqC;AAAA,EAChE,OAAO,OAAO,UAAU,YAAY,MAAM,WAAW,SAAS,KAAK,MAAM,SAAS,UAAU;AAAA;AAGvF,SAAS,UAAS,CAAC,OAAkC;AAAA,EAC1D,OACE,cAAc,KAAK,KACnB,OAAO,MAAM,WAAW,YACxB,MAAM,OAAO,KAAK,EAAE,SAAS,KAC7B,cAAa,MAAM,MAAM,KAGzB,MAAM,WAAW,kBAAiB,MAAM,MAAM,KAC9C,OAAO,MAAM,cAAc,YAC3B,OAAO,UAAU,MAAM,SAAS,KAChC,MAAM,aAAa,MAClB,MAAM,aAAa,aAAa,OAAO,MAAM,aAAa,cAC1D,MAAM,cAAc,aAAa,OAAO,MAAM,cAAc,cAC5D,MAAM,gBAAgB,aAAa,OAAO,MAAM,gBAAgB;AAAA;AAS9D,SAAS,cAAc,CAAC,OAAkC;AAAA,EAC/D,OACE,WAAU,KAAK,MACd,MAAM,cAAc,aAAa,oBAAmB,MAAM,SAAS,MAAM;AAAA;AAIvE,SAAS,qBAAoB,CAClC,SACkD;AAAA,EAClD,MAAM,YAAY;AAAA,EAClB,OACE,OAAO,UAAU,iBAAiB,cAClC,OAAO,UAAU,mBAAmB,cACpC,OAAO,UAAU,mBAAmB,cACpC,OAAO,UAAU,gBAAgB;AAAA;AAI9B,SAAS,kBAAiB,CAC/B,SACmD;AAAA,EACnD,MAAM,YAAY;AAAA,EAClB,OAAO,OAAO,UAAU,cAAc;AAAA;",
10
- "debugId": "91CB77087AB7E2E164756E2164756E21",
9
+ "mappings": "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",
10
+ "debugId": "04A3170175DBD12C64756E2164756E21",
11
11
  "names": []
12
12
  }
@@ -0,0 +1,124 @@
1
+ // @bun
2
+ // src/security/applied-markings-snapshot.ts
3
+ function appliedLinkKey(objectTypeId, linkId) {
4
+ return `${objectTypeId}\x00${linkId}`;
5
+ }
6
+ var NO_CONTRIBUTION = Object.freeze({
7
+ properties: Object.freeze([]),
8
+ seals: Object.freeze([])
9
+ });
10
+ var NO_APPLIED_MARKINGS = Object.freeze({
11
+ properties: readonlyMap(new Map),
12
+ types: readonlyMap(new Map),
13
+ links: readonlyMap(new Map),
14
+ markings: readonlySet(new Set),
15
+ notices: Object.freeze([])
16
+ });
17
+ function assembleAppliedMarkings(contributions) {
18
+ if (contributions.length === 0)
19
+ return NO_APPLIED_MARKINGS;
20
+ const properties = new Map;
21
+ const types = new Map;
22
+ const links = new Map;
23
+ const markings = new Set;
24
+ const notices = [];
25
+ for (const contribution of contributions) {
26
+ for (const { objectTypeId, propertyId, markings: added } of contribution.properties) {
27
+ const byProperty = properties.get(objectTypeId) ?? new Map;
28
+ properties.set(objectTypeId, byProperty);
29
+ const set = byProperty.get(propertyId) ?? new Set;
30
+ byProperty.set(propertyId, set);
31
+ for (const markingId of added) {
32
+ set.add(markingId);
33
+ markings.add(markingId);
34
+ }
35
+ }
36
+ for (const { target, seal: data } of contribution.seals) {
37
+ const seal = Object.freeze({
38
+ ...data,
39
+ markings: readonlySet(new Set(data.markings))
40
+ });
41
+ for (const markingId of data.markings)
42
+ markings.add(markingId);
43
+ if (target.kind === "type") {
44
+ types.set(target.objectTypeId, [...types.get(target.objectTypeId) ?? [], seal]);
45
+ continue;
46
+ }
47
+ const key = appliedLinkKey(target.objectTypeId, target.linkId);
48
+ const existing = links.get(key);
49
+ if (existing)
50
+ existing.seals.push(seal);
51
+ else {
52
+ links.set(key, {
53
+ objectTypeId: target.objectTypeId,
54
+ linkId: target.linkId,
55
+ targetObjectTypeId: target.targetObjectTypeId,
56
+ seals: [seal]
57
+ });
58
+ }
59
+ }
60
+ if (contribution.notice)
61
+ notices.push(Object.freeze({ ...contribution.notice }));
62
+ }
63
+ return Object.freeze({
64
+ properties: readonlyMap(new Map([...properties].map(([objectTypeId, byProperty]) => [
65
+ objectTypeId,
66
+ readonlyMap(new Map([...byProperty].map(([propertyId, set]) => [propertyId, readonlySet(set)])))
67
+ ]))),
68
+ types: readonlyMap(new Map([...types].map(([objectTypeId, seals]) => [objectTypeId, Object.freeze(seals)]))),
69
+ links: readonlyMap(new Map([...links].map(([key, link]) => [
70
+ key,
71
+ Object.freeze({ ...link, seals: Object.freeze(link.seals) })
72
+ ]))),
73
+ markings: readonlySet(markings),
74
+ notices: Object.freeze(notices)
75
+ });
76
+ }
77
+ function withPropertyMarkings(snapshot, added) {
78
+ if (added.length === 0)
79
+ return snapshot;
80
+ const properties = new Map([...snapshot.properties].map(([objectTypeId, byProperty]) => [
81
+ objectTypeId,
82
+ new Map([...byProperty].map(([propertyId, set]) => [propertyId, new Set(set)]))
83
+ ]));
84
+ const markings = new Set(snapshot.markings);
85
+ for (const { objectTypeId, propertyId, markings: ids } of added) {
86
+ const byProperty = properties.get(objectTypeId) ?? new Map;
87
+ properties.set(objectTypeId, byProperty);
88
+ const set = byProperty.get(propertyId) ?? new Set;
89
+ byProperty.set(propertyId, set);
90
+ for (const markingId of ids) {
91
+ set.add(markingId);
92
+ markings.add(markingId);
93
+ }
94
+ }
95
+ return Object.freeze({
96
+ ...snapshot,
97
+ properties: readonlyMap(new Map([...properties].map(([objectTypeId, byProperty]) => [
98
+ objectTypeId,
99
+ readonlyMap(new Map([...byProperty].map(([propertyId, set]) => [propertyId, readonlySet(set)])))
100
+ ]))),
101
+ markings: readonlySet(markings)
102
+ });
103
+ }
104
+ function readonlyMap(map) {
105
+ return Object.freeze(Object.defineProperties(map, {
106
+ set: { value: refuseWrite },
107
+ delete: { value: refuseWrite },
108
+ clear: { value: refuseWrite }
109
+ }));
110
+ }
111
+ function readonlySet(set) {
112
+ return Object.freeze(Object.defineProperties(set, {
113
+ add: { value: refuseWrite },
114
+ delete: { value: refuseWrite },
115
+ clear: { value: refuseWrite }
116
+ }));
117
+ }
118
+ function refuseWrite() {
119
+ throw new TypeError("[Sixb] Applied markings are immutable.");
120
+ }
121
+
122
+ export { appliedLinkKey, NO_CONTRIBUTION, NO_APPLIED_MARKINGS, assembleAppliedMarkings, withPropertyMarkings };
123
+
124
+ //# debugId=DB55591ADC59310F64756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/security/applied-markings-snapshot.ts"],
4
+ "sourcesContent": [
5
+ "import type { ProjectionKeyTarget } from \"./projection-markings\"\n\n/** Why readers lacking some markings cannot read an object type or a link. */\nexport interface AppliedSeal {\n readonly projectionId: string\n readonly markings: ReadonlySet<string>\n /** What carries the marking, completed by \"carries marking 'm'\" in messages. */\n readonly reason: string\n}\n\nexport interface AppliedLinkSeals {\n readonly objectTypeId: string\n readonly linkId: string\n readonly targetObjectTypeId: string\n readonly seals: readonly AppliedSeal[]\n}\n\nexport interface AppliedMarkingsNotice {\n readonly projectionId: string\n /** Whether the projection makes an object type or a link unreadable, not only properties. */\n readonly sealed: boolean\n readonly message: string\n}\n\n/**\n * What the applied versions add to the ontology's markings.\n *\n * Every reader of a host shares one snapshot and the clearances resolved for it, so a snapshot is\n * immutable all the way down: its maps and sets refuse writes.\n */\nexport interface AppliedMarkingsSnapshot {\n /** Surplus markings by object type, then property. */\n readonly properties: ReadonlyMap<string, ReadonlyMap<string, ReadonlySet<string>>>\n /** Object types readers lacking a seal's markings cannot read. */\n readonly types: ReadonlyMap<string, readonly AppliedSeal[]>\n /** Links, by {@link appliedLinkKey}, readers lacking a seal's markings cannot read. */\n readonly links: ReadonlyMap<string, AppliedLinkSeals>\n /** Every marking above: a reader cleared for all of them reads what the code allows. */\n readonly markings: ReadonlySet<string>\n /** One per projection whose applied version adds markings, for diagnostics. */\n readonly notices: readonly AppliedMarkingsNotice[]\n}\n\nexport function appliedLinkKey(objectTypeId: string, linkId: string): string {\n return `${objectTypeId}\\0${linkId}`\n}\n\n/** What one applied version adds, as plain data so that equal results serialize equally. */\nexport interface AppliedContribution {\n readonly properties: readonly {\n readonly objectTypeId: string\n readonly propertyId: string\n readonly markings: readonly string[]\n }[]\n readonly seals: readonly {\n readonly target: ProjectionKeyTarget\n readonly seal: {\n readonly projectionId: string\n readonly markings: readonly string[]\n readonly reason: string\n }\n }[]\n readonly notice?: AppliedMarkingsNotice\n}\n\n/** An applied version that adds nothing. */\nexport const NO_CONTRIBUTION: AppliedContribution = Object.freeze({\n properties: Object.freeze([]),\n seals: Object.freeze([]),\n})\n\nexport const NO_APPLIED_MARKINGS: AppliedMarkingsSnapshot = Object.freeze({\n properties: readonlyMap(new Map()),\n types: readonlyMap(new Map()),\n links: readonlyMap(new Map()),\n markings: readonlySet(new Set<string>()),\n notices: Object.freeze([]),\n})\n\n/** One snapshot from the contributions of every applied version, in projection order. */\nexport function assembleAppliedMarkings(\n contributions: readonly AppliedContribution[]\n): AppliedMarkingsSnapshot {\n if (contributions.length === 0) return NO_APPLIED_MARKINGS\n\n const properties = new Map<string, Map<string, Set<string>>>()\n const types = new Map<string, AppliedSeal[]>()\n const links = new Map<string, AppliedLinkSeals & { seals: AppliedSeal[] }>()\n const markings = new Set<string>()\n const notices: AppliedMarkingsNotice[] = []\n\n for (const contribution of contributions) {\n for (const { objectTypeId, propertyId, markings: added } of contribution.properties) {\n const byProperty = properties.get(objectTypeId) ?? new Map<string, Set<string>>()\n properties.set(objectTypeId, byProperty)\n\n const set = byProperty.get(propertyId) ?? new Set<string>()\n byProperty.set(propertyId, set)\n\n for (const markingId of added) {\n set.add(markingId)\n markings.add(markingId)\n }\n }\n\n for (const { target, seal: data } of contribution.seals) {\n const seal: AppliedSeal = Object.freeze({\n ...data,\n markings: readonlySet(new Set(data.markings)),\n })\n\n for (const markingId of data.markings) markings.add(markingId)\n\n if (target.kind === \"type\") {\n types.set(target.objectTypeId, [...(types.get(target.objectTypeId) ?? []), seal])\n continue\n }\n\n const key = appliedLinkKey(target.objectTypeId, target.linkId)\n const existing = links.get(key)\n if (existing) existing.seals.push(seal)\n else {\n links.set(key, {\n objectTypeId: target.objectTypeId,\n linkId: target.linkId,\n targetObjectTypeId: target.targetObjectTypeId,\n seals: [seal],\n })\n }\n }\n\n if (contribution.notice) notices.push(Object.freeze({ ...contribution.notice }))\n }\n\n return Object.freeze({\n properties: readonlyMap(\n new Map(\n [...properties].map(([objectTypeId, byProperty]) => [\n objectTypeId,\n readonlyMap(\n new Map([...byProperty].map(([propertyId, set]) => [propertyId, readonlySet(set)]))\n ),\n ])\n )\n ),\n types: readonlyMap(\n new Map([...types].map(([objectTypeId, seals]) => [objectTypeId, Object.freeze(seals)]))\n ),\n links: readonlyMap(\n new Map(\n [...links].map(([key, link]) => [\n key,\n Object.freeze({ ...link, seals: Object.freeze(link.seals) }),\n ])\n )\n ),\n markings: readonlySet(markings),\n notices: Object.freeze(notices),\n })\n}\n\n/**\n * The snapshot with these properties' markings added: what an object event reads under, given the\n * markings its origin version carries on them.\n */\nexport function withPropertyMarkings(\n snapshot: AppliedMarkingsSnapshot,\n added: AppliedContribution[\"properties\"]\n): AppliedMarkingsSnapshot {\n if (added.length === 0) return snapshot\n\n const properties = new Map<string, Map<string, Set<string>>>(\n [...snapshot.properties].map(([objectTypeId, byProperty]) => [\n objectTypeId,\n new Map([...byProperty].map(([propertyId, set]) => [propertyId, new Set(set)])),\n ])\n )\n\n const markings = new Set(snapshot.markings)\n for (const { objectTypeId, propertyId, markings: ids } of added) {\n const byProperty = properties.get(objectTypeId) ?? new Map<string, Set<string>>()\n properties.set(objectTypeId, byProperty)\n\n const set = byProperty.get(propertyId) ?? new Set<string>()\n byProperty.set(propertyId, set)\n\n for (const markingId of ids) {\n set.add(markingId)\n markings.add(markingId)\n }\n }\n\n return Object.freeze({\n ...snapshot,\n properties: readonlyMap(\n new Map(\n [...properties].map(([objectTypeId, byProperty]) => [\n objectTypeId,\n readonlyMap(\n new Map([...byProperty].map(([propertyId, set]) => [propertyId, readonlySet(set)]))\n ),\n ])\n )\n ),\n markings: readonlySet(markings),\n })\n}\n\n/**\n * A map that refuses writes. `Object.freeze` alone leaves a map's entries writable through its\n * methods, so they are shadowed by ones that throw, and then frozen.\n */\nfunction readonlyMap<TKey, TValue>(map: Map<TKey, TValue>): ReadonlyMap<TKey, TValue> {\n return Object.freeze(\n Object.defineProperties(map, {\n set: { value: refuseWrite },\n delete: { value: refuseWrite },\n clear: { value: refuseWrite },\n })\n )\n}\n\nfunction readonlySet<TValue>(set: Set<TValue>): ReadonlySet<TValue> {\n return Object.freeze(\n Object.defineProperties(set, {\n add: { value: refuseWrite },\n delete: { value: refuseWrite },\n clear: { value: refuseWrite },\n })\n )\n}\n\nfunction refuseWrite(): never {\n throw new TypeError(\"[Sixb] Applied markings are immutable.\")\n}\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "DB55591ADC59310F64756E2164756E21",
9
+ "names": []
10
+ }
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  captureSixbFailure2
4
- } from "./chunk-8mx7qw3y.js";
4
+ } from "./chunk-dvd2fp9q.js";
5
5
 
6
6
  // src/error-reporting/normalize.ts
7
7
  function safeString(value) {
@@ -3,7 +3,7 @@ import {
3
3
  createPrincipalRuntimeAuthorization,
4
4
  createDisabledRuntimeAuthorization,
5
5
  createDelegatedRuntimeAuthorization
6
- } from "./chunk-y7rqfrgg.js";
6
+ } from "./chunk-6vb4st8k.js";
7
7
 
8
8
  // src/execution/scopes.ts
9
9
  import { randomUUID } from "crypto";
@@ -2,11 +2,11 @@
2
2
  import {
3
3
  isPrimitiveSchema,
4
4
  primitiveTraits
5
- } from "./chunk-hvsb78a1.js";
5
+ } from "./chunk-8frc8a4j.js";
6
6
  import {
7
7
  ShareDefinitionError2,
8
8
  snapshotShareDefinition
9
- } from "./chunk-3gnrh4ve.js";
9
+ } from "./chunk-nn5xnx3s.js";
10
10
  import {
11
11
  snapshotShareAccessPlan
12
12
  } from "./chunk-br3k6qbf.js";
@@ -48,6 +48,14 @@ type SequenceColumnNameOf<TColumns extends readonly DatasetColumnDefinition[]> =
48
48
  } ? never : TName : never;
49
49
  }[ColumnNameOf<TColumns>];
50
50
  type PickColumns<TColumns extends readonly DatasetColumnDefinition[], TNames extends readonly ColumnNameOf<TColumns>[]> = TNames extends readonly [infer THead, ...infer TTail] ? THead extends ColumnNameOf<TColumns> ? TTail extends readonly ColumnNameOf<TColumns>[] ? readonly [ColumnDefinitionOf<TColumns, THead>, ...PickColumns<TColumns, TTail>] : never : never : TNames extends readonly [] ? readonly [] : readonly ColumnDefinitionOf<TColumns, TNames[number]>[];
51
+ /** A dataset read through some of its columns: `rawInvoices.pick("id", "title")`. */
52
+ type PickableDataset<TId extends string, TColumns extends readonly DatasetColumnDefinition[]> = {
53
+ /**
54
+ * The same dataset with only these columns, in this order. A pipeline step given it as an input
55
+ * reads nothing else, so its output inherits no other column's markings.
56
+ */
57
+ pick<const TNames extends readonly [ColumnNameOf<TColumns>, ...ColumnNameOf<TColumns>[]]>(...columns: TNames): DatasetDefinition<TId, PickColumns<TColumns, TNames>>;
58
+ };
51
59
  type AddColumns<TColumns extends readonly DatasetColumnDefinition[], TAdd extends readonly DatasetColumnDefinition[]> = readonly [...TColumns, ...TAdd];
52
60
  type DerivedBaseColumns<TParent extends DatasetDefinition, TOptions extends DeriveDatasetOptions<TParent> | undefined> = TOptions extends {
53
61
  readonly pick: infer TPick;
@@ -67,14 +75,19 @@ type DatasetColumnResult<TName extends string, TType extends DatasetColumnType,
67
75
  readonly name: TName;
68
76
  readonly type: TType;
69
77
  } & FieldFromOptions<TOptions, "nullable", boolean> & MarkingsFromOptions<TOptions>;
70
- type DatasetDefinitionResult<TId extends string, TOptions extends DefineDatasetOptions> = Omit<DatasetDefinition<TId, TOptions["schema"]>, "primaryKey" | "sequenceBy" | "partitionBy" | "description"> & FieldFromOptions<TOptions, "sequenceBy", string> & FieldFromOptions<TOptions, "primaryKey", DatasetPrimaryKey> & FieldFromOptions<TOptions, "partitionBy", readonly string[]> & FieldFromOptions<TOptions, "description", string>;
71
- type DerivedDatasetDefinitionResult<TId extends string, TParent extends DatasetDefinition, TOptions extends DeriveDatasetOptions<TParent> | undefined> = Omit<DatasetDefinition<TId, DerivedColumns<TParent, TOptions>>, "primaryKey" | "sequenceBy" | "partitionBy" | "description"> & FieldFromOptions<TOptions, "sequenceBy", string> & FieldFromOptions<TOptions, "primaryKey", DatasetPrimaryKey> & FieldFromOptions<TOptions, "partitionBy", readonly string[]> & FieldFromOptions<TOptions, "description", string>;
78
+ type DatasetDefinitionResult<TId extends string, TOptions extends DefineDatasetOptions> = Omit<DatasetDefinition<TId, TOptions["schema"]>, "primaryKey" | "sequenceBy" | "partitionBy" | "description"> & FieldFromOptions<TOptions, "sequenceBy", string> & FieldFromOptions<TOptions, "primaryKey", DatasetPrimaryKey> & FieldFromOptions<TOptions, "partitionBy", readonly string[]> & FieldFromOptions<TOptions, "description", string> & PickableDataset<TId, TOptions["schema"]>;
79
+ type DerivedDatasetDefinitionResult<TId extends string, TParent extends DatasetDefinition, TOptions extends DeriveDatasetOptions<TParent> | undefined> = Omit<DatasetDefinition<TId, DerivedColumns<TParent, TOptions>>, "primaryKey" | "sequenceBy" | "partitionBy" | "description"> & FieldFromOptions<TOptions, "sequenceBy", string> & FieldFromOptions<TOptions, "primaryKey", DatasetPrimaryKey> & FieldFromOptions<TOptions, "partitionBy", readonly string[]> & FieldFromOptions<TOptions, "description", string> & PickableDataset<TId, DerivedColumns<TParent, TOptions>>;
72
80
  type CheckedDeriveDatasetOptions<TParent extends DatasetDefinition, TOptions extends DeriveDatasetOptions<TParent>> = TOptions & {
73
81
  readonly primaryKey?: DatasetPrimaryKey<PrimaryKeyColumnNameOf<DerivedColumns<TParent, TOptions>>>;
74
82
  readonly sequenceBy?: SequenceColumnNameOf<DerivedColumns<TParent, TOptions>>;
75
83
  };
76
84
  export declare function col<const TName extends string, const TType extends DatasetColumnType>(name: TName, type: TType): DatasetColumnResult<TName, TType, undefined>;
77
85
  export declare function col<const TName extends string, const TType extends DatasetColumnType, const TOptions extends DatasetColumnOptions>(name: TName, type: TType, options: TOptions): DatasetColumnResult<TName, TType, TOptions>;
86
+ /**
87
+ * Whether a definition was made by `pick()`. Only a pick may hold some of a dataset's columns: any
88
+ * other definition with a registered id stands for the whole dataset.
89
+ */
90
+ export declare function isDatasetPick(dataset: DatasetDefinition): boolean;
78
91
  declare function createDatasetDeriveBuilder<TId extends string>(id: TId): {
79
92
  derive: {
80
93
  <const TParent extends DatasetDefinition>(parent: TParent): DerivedDatasetDefinitionResult<TId, TParent, undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/datasets/builders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/datasets/builders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { DatasetColumnDefinition, DatasetDefinition } from "./types";
2
+ /**
3
+ * The columns of a dataset definition by name, built once per definition object. Registered
4
+ * definitions are not changed after startup, so every check and resolver can share one index.
5
+ */
6
+ export declare function columnsByName(dataset: DatasetDefinition): ReadonlyMap<string, DatasetColumnDefinition>;
7
+ //# sourceMappingURL=column-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-index.d.ts","sourceRoot":"","sources":["../../src/datasets/column-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAIzE;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,iBAAiB,GACzB,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAQ9C"}