@sixb/core 0.1.20 → 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 (681) 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/index.js +10 -10
  98. package/dist/authorization/decision.d.ts +2 -0
  99. package/dist/authorization/decision.d.ts.map +1 -1
  100. package/dist/authorization/grant-kinds.d.ts +2 -2
  101. package/dist/authorization/grant-kinds.d.ts.map +1 -1
  102. package/dist/authorization/index.js +6 -6
  103. package/dist/blob-storage/browser.js +1 -1
  104. package/dist/blob-storage/index.js +2 -2
  105. package/dist/blob-storage/internal.d.ts +1 -1
  106. package/dist/blob-storage/internal.d.ts.map +1 -1
  107. package/dist/blob-storage/internal.js +11 -5
  108. package/dist/blob-storage/internal.js.map +1 -1
  109. package/dist/blob-storage/media-type.d.ts +12 -0
  110. package/dist/blob-storage/media-type.d.ts.map +1 -1
  111. package/dist/bootstrap/index.js +53 -47
  112. package/dist/bootstrap/index.js.map +2 -2
  113. package/dist/{chunk-xfs8x8m9.js → chunk-0bphap9y.js} +5 -5
  114. package/dist/{chunk-1zq2p6g0.js → chunk-1cc1xaf3.js} +3 -3
  115. package/dist/chunk-3jms7je7.js +14 -0
  116. package/dist/chunk-3jms7je7.js.map +10 -0
  117. package/dist/{chunk-s54c868q.js → chunk-3qct2mdc.js} +3 -13
  118. package/dist/chunk-3qct2mdc.js.map +12 -0
  119. package/dist/{chunk-t7x8dmn0.js → chunk-431pyp2c.js} +3 -3
  120. package/dist/{chunk-c85m1hyj.js → chunk-447a5c0p.js} +2 -2
  121. package/dist/chunk-48qjhh6v.js +185 -0
  122. package/dist/chunk-48qjhh6v.js.map +13 -0
  123. package/dist/{chunk-ren4kg2j.js → chunk-561r0yc9.js} +8 -8
  124. package/dist/{chunk-5e43w60z.js → chunk-5948n82c.js} +2 -2
  125. package/dist/{chunk-yzwja0mj.js → chunk-5hx48dnn.js} +2 -2
  126. package/dist/{chunk-x6m907x7.js → chunk-5vems3nx.js} +5 -6
  127. package/dist/{chunk-x6m907x7.js.map → chunk-5vems3nx.js.map} +3 -3
  128. package/dist/{chunk-0rbyz4qy.js → chunk-61y5xs4p.js} +560 -164
  129. package/dist/{chunk-0rbyz4qy.js.map → chunk-61y5xs4p.js.map} +12 -9
  130. package/dist/chunk-65abf64x.js +13 -0
  131. package/dist/chunk-65abf64x.js.map +10 -0
  132. package/dist/{chunk-z3y5kg1x.js → chunk-6eqsgvxk.js} +3 -3
  133. package/dist/{chunk-z3y5kg1x.js.map → chunk-6eqsgvxk.js.map} +2 -2
  134. package/dist/chunk-6rqgmkde.js +2028 -0
  135. package/dist/chunk-6rqgmkde.js.map +29 -0
  136. package/dist/{chunk-d0bqz29d.js → chunk-6vb4st8k.js} +8 -4
  137. package/dist/{chunk-d0bqz29d.js.map → chunk-6vb4st8k.js.map} +3 -3
  138. package/dist/chunk-7q8t23v4.js +467 -0
  139. package/dist/chunk-7q8t23v4.js.map +14 -0
  140. package/dist/{chunk-5j58wjct.js → chunk-858emn8m.js} +6 -6
  141. package/dist/{chunk-hvsb78a1.js → chunk-8frc8a4j.js} +26 -26
  142. package/dist/{chunk-hvsb78a1.js.map → chunk-8frc8a4j.js.map} +2 -2
  143. package/dist/{chunk-3zxk45er.js → chunk-8ncg20rd.js} +3 -68
  144. package/dist/{chunk-3zxk45er.js.map → chunk-8ncg20rd.js.map} +4 -5
  145. package/dist/{chunk-n33z5bjw.js → chunk-918wwnaa.js} +490 -24
  146. package/dist/{chunk-n33z5bjw.js.map → chunk-918wwnaa.js.map} +13 -11
  147. package/dist/{chunk-rrzt8jdy.js → chunk-9j4jw7as.js} +103 -110
  148. package/dist/chunk-9j4jw7as.js.map +14 -0
  149. package/dist/chunk-9kgkfg6v.js +502 -0
  150. package/dist/chunk-9kgkfg6v.js.map +14 -0
  151. package/dist/chunk-a3faa34j.js +74 -0
  152. package/dist/chunk-a3faa34j.js.map +10 -0
  153. package/dist/{chunk-6c6sn0bh.js → chunk-akzryx9h.js} +335 -1167
  154. package/dist/{chunk-6c6sn0bh.js.map → chunk-akzryx9h.js.map} +18 -24
  155. package/dist/chunk-arns890k.js +10 -0
  156. package/dist/chunk-arns890k.js.map +10 -0
  157. package/dist/{chunk-hjzdd750.js → chunk-bk9svbcq.js} +11 -11
  158. package/dist/{chunk-hjzdd750.js.map → chunk-bk9svbcq.js.map} +2 -2
  159. package/dist/{chunk-hkc3jct7.js → chunk-c06hmxyy.js} +2 -10
  160. package/dist/chunk-c06hmxyy.js.map +10 -0
  161. package/dist/{chunk-6p49a5cq.js → chunk-c1rxbz5y.js} +3 -3
  162. package/dist/chunk-cfj9dfbb.js +288 -0
  163. package/dist/chunk-cfj9dfbb.js.map +12 -0
  164. package/dist/{chunk-bx9q3cwv.js → chunk-cn0fwwhy.js} +7 -7
  165. package/dist/{chunk-bx9q3cwv.js.map → chunk-cn0fwwhy.js.map} +1 -1
  166. package/dist/{chunk-gc4ntf7d.js → chunk-cwdzcv37.js} +1 -1
  167. package/dist/{chunk-fa02jy15.js → chunk-cy4mbddw.js} +1 -1
  168. package/dist/{chunk-9w055r5b.js → chunk-d09e3rax.js} +1 -1
  169. package/dist/chunk-d5rjr8c0.js +176 -0
  170. package/dist/chunk-d5rjr8c0.js.map +12 -0
  171. package/dist/{chunk-dk8tkk5f.js → chunk-d7dnxdep.js} +3 -3
  172. package/dist/{chunk-b38szspf.js → chunk-dhcv7yxc.js} +1 -1
  173. package/dist/{chunk-b38szspf.js.map → chunk-dhcv7yxc.js.map} +1 -1
  174. package/dist/{chunk-gsjm1wms.js → chunk-dhdha526.js} +8 -2
  175. package/dist/chunk-dhdha526.js.map +10 -0
  176. package/dist/{chunk-8mx7qw3y.js → chunk-dvd2fp9q.js} +2 -2
  177. package/dist/{chunk-8mx7qw3y.js.map → chunk-dvd2fp9q.js.map} +3 -3
  178. package/dist/{chunk-way52z4h.js → chunk-e17zdm62.js} +6 -12
  179. package/dist/{chunk-way52z4h.js.map → chunk-e17zdm62.js.map} +3 -4
  180. package/dist/{chunk-tpn40322.js → chunk-e6k4thh5.js} +11 -10
  181. package/dist/{chunk-tpn40322.js.map → chunk-e6k4thh5.js.map} +3 -3
  182. package/dist/{chunk-tw03bsmb.js → chunk-eptrvnby.js} +224 -3
  183. package/dist/chunk-eptrvnby.js.map +12 -0
  184. package/dist/{chunk-es1gxsbf.js → chunk-f4pamkt9.js} +8 -10
  185. package/dist/chunk-f4pamkt9.js.map +12 -0
  186. package/dist/chunk-ff5xkv0p.js +211 -0
  187. package/dist/chunk-ff5xkv0p.js.map +10 -0
  188. package/dist/{chunk-d09tj99x.js → chunk-g257jwnc.js} +10 -4
  189. package/dist/{chunk-d09tj99x.js.map → chunk-g257jwnc.js.map} +3 -3
  190. package/dist/chunk-g5bvzyyr.js +32 -0
  191. package/dist/chunk-g5bvzyyr.js.map +10 -0
  192. package/dist/chunk-hke9aeen.js +9 -0
  193. package/dist/chunk-hke9aeen.js.map +10 -0
  194. package/dist/{chunk-1sr8ryzk.js → chunk-hwksyjks.js} +122 -1
  195. package/dist/{chunk-1sr8ryzk.js.map → chunk-hwksyjks.js.map} +3 -3
  196. package/dist/chunk-jcfw4h7m.js +9 -0
  197. package/dist/chunk-jcfw4h7m.js.map +10 -0
  198. package/dist/{chunk-k6q3n2sc.js → chunk-k43ct2ke.js} +20 -11
  199. package/dist/chunk-k43ct2ke.js.map +12 -0
  200. package/dist/{chunk-3t2hgbgd.js → chunk-kge7k6ey.js} +40 -8
  201. package/dist/chunk-kge7k6ey.js.map +15 -0
  202. package/dist/{chunk-tg2cw67r.js → chunk-ky3j490c.js} +2 -2
  203. package/dist/chunk-mjddfa7k.js +129 -0
  204. package/dist/chunk-mjddfa7k.js.map +12 -0
  205. package/dist/{chunk-vpq4shxz.js → chunk-nn5xnx3s.js} +45 -10
  206. package/dist/{chunk-vpq4shxz.js.map → chunk-nn5xnx3s.js.map} +7 -6
  207. package/dist/{chunk-0yh890a4.js → chunk-q5e5tv4b.js} +35 -7
  208. package/dist/{chunk-0yh890a4.js.map → chunk-q5e5tv4b.js.map} +3 -3
  209. package/dist/{chunk-vyf9kfqf.js → chunk-q7gn29y3.js} +1 -1
  210. package/dist/{chunk-yevzdx4y.js → chunk-rmakanzx.js} +10 -12
  211. package/dist/{chunk-yevzdx4y.js.map → chunk-rmakanzx.js.map} +3 -4
  212. package/dist/{chunk-v9xd5wzd.js → chunk-s7jg7pmn.js} +1 -1
  213. package/dist/chunk-tbc1ngpd.js +642 -0
  214. package/dist/chunk-tbc1ngpd.js.map +18 -0
  215. package/dist/chunk-twe4dx8p.js +676 -0
  216. package/dist/chunk-twe4dx8p.js.map +15 -0
  217. package/dist/{chunk-9dmt152s.js → chunk-vf57cr4t.js} +2 -2
  218. package/dist/{chunk-9ybhtmg4.js → chunk-vvxtn22d.js} +1 -1
  219. package/dist/{chunk-jhm3zsa7.js → chunk-wkv3h3q7.js} +64 -2
  220. package/dist/{chunk-jhm3zsa7.js.map → chunk-wkv3h3q7.js.map} +3 -3
  221. package/dist/chunk-x0v3jd47.js +124 -0
  222. package/dist/chunk-x0v3jd47.js.map +10 -0
  223. package/dist/{chunk-7t429e3f.js → chunk-xvsc5m8n.js} +1 -1
  224. package/dist/{chunk-z4m0yz8c.js → chunk-y5tah2kf.js} +1 -1
  225. package/dist/{chunk-fkgc1wt8.js → chunk-z58tm0hm.js} +2 -2
  226. package/dist/datasets/builders.d.ts +15 -2
  227. package/dist/datasets/builders.d.ts.map +1 -1
  228. package/dist/datasets/column-index.d.ts +7 -0
  229. package/dist/datasets/column-index.d.ts.map +1 -0
  230. package/dist/datasets/execution.d.ts +3 -2
  231. package/dist/datasets/execution.d.ts.map +1 -1
  232. package/dist/datasets/write.js +8 -8
  233. package/dist/error-reporting/internal.js +4 -4
  234. package/dist/errors/internal.d.ts +1 -0
  235. package/dist/errors/internal.d.ts.map +1 -1
  236. package/dist/errors/internal.js +7 -4
  237. package/dist/errors/internal.js.map +1 -1
  238. package/dist/events/execution.d.ts +12 -2
  239. package/dist/events/execution.d.ts.map +1 -1
  240. package/dist/events/index.js +4 -4
  241. package/dist/execution/agent.js +56 -49
  242. package/dist/execution/agent.js.map +1 -1
  243. package/dist/execution/authorized-object-reader.d.ts +52 -11
  244. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  245. package/dist/execution/object-reader-clearance.d.ts +41 -0
  246. package/dist/execution/object-reader-clearance.d.ts.map +1 -0
  247. package/dist/execution/object-reader-ontology.d.ts +12 -0
  248. package/dist/execution/object-reader-ontology.d.ts.map +1 -0
  249. package/dist/execution/object-reader-security.d.ts +45 -0
  250. package/dist/execution/object-reader-security.d.ts.map +1 -0
  251. package/dist/execution/primitive.js +54 -47
  252. package/dist/execution/primitive.js.map +1 -1
  253. package/dist/execution/request.js +48 -41
  254. package/dist/execution/request.js.map +2 -2
  255. package/dist/http/api-routes.d.ts.map +1 -1
  256. package/dist/http/index.js +1 -1
  257. package/dist/index.d.ts +20 -4
  258. package/dist/index.d.ts.map +1 -1
  259. package/dist/index.js +112 -97
  260. package/dist/index.js.map +1 -1
  261. package/dist/lake-storage/in-memory.d.ts +1 -0
  262. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  263. package/dist/lake-storage/index.d.ts +6 -3
  264. package/dist/lake-storage/index.d.ts.map +1 -1
  265. package/dist/lake-storage/index.js +21 -13
  266. package/dist/lake-storage/index.js.map +1 -1
  267. package/dist/lake-storage/lineage.d.ts +94 -0
  268. package/dist/lake-storage/lineage.d.ts.map +1 -0
  269. package/dist/lake-storage/sql-transforms.d.ts +45 -0
  270. package/dist/lake-storage/sql-transforms.d.ts.map +1 -1
  271. package/dist/lake-storage/types.d.ts +55 -1
  272. package/dist/lake-storage/types.d.ts.map +1 -1
  273. package/dist/lake-storage/version-inputs.d.ts +14 -3
  274. package/dist/lake-storage/version-inputs.d.ts.map +1 -1
  275. package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
  276. package/dist/materializer/index.js +31 -30
  277. package/dist/materializer/index.js.map +1 -1
  278. package/dist/models/execution/index.js +25 -24
  279. package/dist/models/execution/index.js.map +1 -1
  280. package/dist/objects/clearance-redaction.d.ts +27 -0
  281. package/dist/objects/clearance-redaction.d.ts.map +1 -0
  282. package/dist/objects/index.js +54 -47
  283. package/dist/objects/index.js.map +1 -1
  284. package/dist/objects/link/authorization.d.ts +8 -5
  285. package/dist/objects/link/authorization.d.ts.map +1 -1
  286. package/dist/objects/link/upsert-batch.d.ts.map +1 -1
  287. package/dist/objects/object/delete.d.ts.map +1 -1
  288. package/dist/objects/object/upsert-batch.d.ts.map +1 -1
  289. package/dist/objects/object/upsert.d.ts.map +1 -1
  290. package/dist/objects/property-clearance.d.ts +47 -24
  291. package/dist/objects/property-clearance.d.ts.map +1 -1
  292. package/dist/objects/query/clearance-admission.d.ts +10 -0
  293. package/dist/objects/query/clearance-admission.d.ts.map +1 -0
  294. package/dist/objects/query/index.js +29 -28
  295. package/dist/objects/query/index.js.map +1 -1
  296. package/dist/objects/query/link-query-clearance.d.ts +21 -0
  297. package/dist/objects/query/link-query-clearance.d.ts.map +1 -0
  298. package/dist/ontology/builders.d.ts.map +1 -1
  299. package/dist/ontology/docs-markdown.d.ts +1 -1
  300. package/dist/ontology/docs-markdown.d.ts.map +1 -1
  301. package/dist/ontology/index.js +7 -7
  302. package/dist/ontology/internal.js +4 -4
  303. package/dist/ontology/internal.js.map +1 -1
  304. package/dist/pipelines/index.d.ts +2 -0
  305. package/dist/pipelines/index.d.ts.map +1 -1
  306. package/dist/pipelines/index.js +47 -35
  307. package/dist/pipelines/index.js.map +1 -1
  308. package/dist/pipelines/lineage.d.ts +17 -0
  309. package/dist/pipelines/lineage.d.ts.map +1 -0
  310. package/dist/projections/internal.d.ts +2 -2
  311. package/dist/projections/internal.js +30 -29
  312. package/dist/projections/internal.js.map +1 -1
  313. package/dist/runtime/create.d.ts +3 -0
  314. package/dist/runtime/create.d.ts.map +1 -1
  315. package/dist/runtime/host.d.ts +6 -0
  316. package/dist/runtime/host.d.ts.map +1 -1
  317. package/dist/runtime/internal.d.ts +2 -0
  318. package/dist/runtime/internal.d.ts.map +1 -1
  319. package/dist/runtime/internal.js +46 -42
  320. package/dist/runtime/internal.js.map +1 -1
  321. package/dist/runtime/ontology-mutations.d.ts +2 -0
  322. package/dist/runtime/ontology-mutations.d.ts.map +1 -1
  323. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  324. package/dist/runtime/sixb.d.ts +8 -0
  325. package/dist/runtime/sixb.d.ts.map +1 -1
  326. package/dist/sandboxes/auth.d.ts +16 -0
  327. package/dist/sandboxes/auth.d.ts.map +1 -1
  328. package/dist/sandboxes/config.d.ts.map +1 -1
  329. package/dist/sandboxes/configuration.d.ts +26 -0
  330. package/dist/sandboxes/configuration.d.ts.map +1 -1
  331. package/dist/sandboxes/index.d.ts +1 -1
  332. package/dist/sandboxes/index.d.ts.map +1 -1
  333. package/dist/sandboxes/index.js +14 -13
  334. package/dist/sandboxes/index.js.map +1 -1
  335. package/dist/sandboxes/sandbox.d.ts +28 -5
  336. package/dist/sandboxes/sandbox.d.ts.map +1 -1
  337. package/dist/security/applied-markings-contribution.d.ts +58 -0
  338. package/dist/security/applied-markings-contribution.d.ts.map +1 -0
  339. package/dist/security/applied-markings-host.d.ts +10 -0
  340. package/dist/security/applied-markings-host.d.ts.map +1 -0
  341. package/dist/security/applied-markings-snapshot.d.ts +67 -0
  342. package/dist/security/applied-markings-snapshot.d.ts.map +1 -0
  343. package/dist/security/applied-markings.d.ts +73 -0
  344. package/dist/security/applied-markings.d.ts.map +1 -0
  345. package/dist/security/dataset-version-markings.d.ts +47 -0
  346. package/dist/security/dataset-version-markings.d.ts.map +1 -0
  347. package/dist/security/grants.d.ts +3 -2
  348. package/dist/security/grants.d.ts.map +1 -1
  349. package/dist/security/index.d.ts +2 -1
  350. package/dist/security/index.d.ts.map +1 -1
  351. package/dist/security/internal.d.ts +15 -0
  352. package/dist/security/internal.d.ts.map +1 -0
  353. package/dist/security/internal.js +135 -0
  354. package/dist/security/internal.js.map +10 -0
  355. package/dist/security/marking-propagation.d.ts +62 -0
  356. package/dist/security/marking-propagation.d.ts.map +1 -0
  357. package/dist/security/marking-sets.d.ts +14 -0
  358. package/dist/security/marking-sets.d.ts.map +1 -0
  359. package/dist/security/markings.d.ts +6 -3
  360. package/dist/security/markings.d.ts.map +1 -1
  361. package/dist/security/pipeline-markings.d.ts +20 -0
  362. package/dist/security/pipeline-markings.d.ts.map +1 -0
  363. package/dist/security/project.d.ts +4 -0
  364. package/dist/security/project.d.ts.map +1 -0
  365. package/dist/security/projection-markings.d.ts +71 -0
  366. package/dist/security/projection-markings.d.ts.map +1 -0
  367. package/dist/security/public.js +2 -2
  368. package/dist/security/redactions.d.ts +4 -1
  369. package/dist/security/redactions.d.ts.map +1 -1
  370. package/dist/security/types.d.ts +22 -2
  371. package/dist/security/types.d.ts.map +1 -1
  372. package/dist/security/validation.d.ts.map +1 -1
  373. package/dist/shares/internal.js +24 -23
  374. package/dist/shares/internal.js.map +2 -2
  375. package/dist/storage/action-runs/failure.js +3 -3
  376. package/dist/storage/action-runs/in-memory.d.ts +4 -0
  377. package/dist/storage/action-runs/in-memory.d.ts.map +1 -1
  378. package/dist/storage/action-runs/types.d.ts +8 -0
  379. package/dist/storage/action-runs/types.d.ts.map +1 -1
  380. package/dist/storage/activity/in-memory.d.ts +55 -0
  381. package/dist/storage/activity/in-memory.d.ts.map +1 -0
  382. package/dist/storage/activity/index.d.ts +3 -0
  383. package/dist/storage/activity/index.d.ts.map +1 -0
  384. package/dist/storage/activity/policy.d.ts +96 -0
  385. package/dist/storage/activity/policy.d.ts.map +1 -0
  386. package/dist/storage/activity/types.d.ts +191 -0
  387. package/dist/storage/activity/types.d.ts.map +1 -0
  388. package/dist/storage/agents/in-memory.d.ts +4 -0
  389. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  390. package/dist/storage/agents/provider.d.ts.map +1 -1
  391. package/dist/storage/agents/provider.js +2 -5
  392. package/dist/storage/agents/provider.js.map +1 -1
  393. package/dist/storage/agents/types.d.ts +9 -8
  394. package/dist/storage/agents/types.d.ts.map +1 -1
  395. package/dist/storage/ai-limits/enforcement.js +3 -3
  396. package/dist/storage/artifacts/errors.d.ts +8 -0
  397. package/dist/storage/artifacts/errors.d.ts.map +1 -0
  398. package/dist/storage/artifacts/in-memory.d.ts +34 -0
  399. package/dist/storage/artifacts/in-memory.d.ts.map +1 -0
  400. package/dist/storage/artifacts/index.d.ts +5 -0
  401. package/dist/storage/artifacts/index.d.ts.map +1 -0
  402. package/dist/storage/artifacts/record.d.ts +17 -0
  403. package/dist/storage/artifacts/record.d.ts.map +1 -0
  404. package/dist/storage/artifacts/types.d.ts +184 -0
  405. package/dist/storage/artifacts/types.d.ts.map +1 -0
  406. package/dist/storage/auth/in-memory/sessions.d.ts +2 -1
  407. package/dist/storage/auth/in-memory/sessions.d.ts.map +1 -1
  408. package/dist/storage/auth/index.d.ts +1 -1
  409. package/dist/storage/auth/index.d.ts.map +1 -1
  410. package/dist/storage/auth/types.d.ts +19 -0
  411. package/dist/storage/auth/types.d.ts.map +1 -1
  412. package/dist/storage/connector-connections/provider.js +2 -2
  413. package/dist/storage/executions/in-memory.d.ts +2 -1
  414. package/dist/storage/executions/in-memory.d.ts.map +1 -1
  415. package/dist/storage/executions/index.d.ts +1 -1
  416. package/dist/storage/executions/index.d.ts.map +1 -1
  417. package/dist/storage/executions/provider.d.ts +2 -0
  418. package/dist/storage/executions/provider.d.ts.map +1 -1
  419. package/dist/storage/executions/provider.js +9 -223
  420. package/dist/storage/executions/provider.js.map +3 -4
  421. package/dist/storage/executions/types.d.ts +31 -0
  422. package/dist/storage/executions/types.d.ts.map +1 -1
  423. package/dist/storage/file-upload-sessions/provider.js +11 -11
  424. package/dist/storage/in-memory/index.d.ts +8 -0
  425. package/dist/storage/in-memory/index.d.ts.map +1 -1
  426. package/dist/storage/index.d.ts +6 -4
  427. package/dist/storage/index.d.ts.map +1 -1
  428. package/dist/storage/index.js +54 -53
  429. package/dist/storage/index.js.map +1 -1
  430. package/dist/storage/internal.d.ts +3 -0
  431. package/dist/storage/internal.d.ts.map +1 -1
  432. package/dist/storage/internal.js +66 -16
  433. package/dist/storage/internal.js.map +1 -1
  434. package/dist/storage/ontology/in-memory/sources.d.ts +2 -1
  435. package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
  436. package/dist/storage/ontology/index.d.ts +1 -1
  437. package/dist/storage/ontology/index.d.ts.map +1 -1
  438. package/dist/storage/ontology/sources.d.ts +15 -0
  439. package/dist/storage/ontology/sources.d.ts.map +1 -1
  440. package/dist/storage/projection-runs/provider.js +3 -3
  441. package/dist/storage/share-grants/in-memory.d.ts +2 -1
  442. package/dist/storage/share-grants/in-memory.d.ts.map +1 -1
  443. package/dist/storage/share-grants/index.d.ts +1 -1
  444. package/dist/storage/share-grants/index.d.ts.map +1 -1
  445. package/dist/storage/share-grants/types.d.ts +6 -0
  446. package/dist/storage/share-grants/types.d.ts.map +1 -1
  447. package/dist/storage/types.d.ts +4 -0
  448. package/dist/storage/types.d.ts.map +1 -1
  449. package/dist/storage/workflow-runs/in-memory.d.ts +4 -0
  450. package/dist/storage/workflow-runs/in-memory.d.ts.map +1 -1
  451. package/dist/storage/workflow-runs/provider.js +13 -12
  452. package/dist/storage/workflow-runs/provider.js.map +1 -1
  453. package/dist/storage/workflow-runs/types.d.ts +5 -0
  454. package/dist/storage/workflow-runs/types.d.ts.map +1 -1
  455. package/dist/syncs/index.js +35 -34
  456. package/dist/syncs/index.js.map +1 -1
  457. package/dist/testing/action-run-storage-contract.d.ts.map +1 -1
  458. package/dist/testing/activity-storage-contract.d.ts +14 -0
  459. package/dist/testing/activity-storage-contract.d.ts.map +1 -0
  460. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  461. package/dist/testing/artifact-storage-contract.d.ts +13 -0
  462. package/dist/testing/artifact-storage-contract.d.ts.map +1 -0
  463. package/dist/testing/auth-storage-contract.d.ts.map +1 -1
  464. package/dist/testing/execution-storage-contract.d.ts.map +1 -1
  465. package/dist/testing/index.d.ts +2 -0
  466. package/dist/testing/index.d.ts.map +1 -1
  467. package/dist/testing/index.js +4488 -3137
  468. package/dist/testing/index.js.map +14 -12
  469. package/dist/testing/lake-merge-storage-contract.d.ts.map +1 -1
  470. package/dist/testing/lake-storage-contract.d.ts +2 -0
  471. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  472. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  473. package/dist/testing/share-grant-storage-contract.d.ts.map +1 -1
  474. package/dist/webhooks/internal.js +27 -26
  475. package/dist/webhooks/internal.js.map +2 -2
  476. package/dist/workers/index.js +2 -2
  477. package/dist/workflows/builders.d.ts.map +1 -1
  478. package/dist/workflows/index.js +57 -51
  479. package/dist/workflows/index.js.map +1 -1
  480. package/dist/workflows/types.d.ts +9 -0
  481. package/dist/workflows/types.d.ts.map +1 -1
  482. package/dist/workflows/validation.d.ts +7 -0
  483. package/dist/workflows/validation.d.ts.map +1 -1
  484. package/package.json +25 -1
  485. package/src/actions/execution.ts +18 -13
  486. package/src/actions/request.ts +18 -3
  487. package/src/actions/run-authorization.ts +23 -0
  488. package/src/activity/README.md +155 -0
  489. package/src/activity/connection.ts +217 -0
  490. package/src/activity/device.ts +41 -0
  491. package/src/activity/execution.ts +210 -0
  492. package/src/activity/service.ts +274 -0
  493. package/src/activity/shares.ts +62 -0
  494. package/src/activity/timeline.ts +424 -0
  495. package/src/agents/index.ts +8 -3
  496. package/src/agents/request.ts +5 -0
  497. package/src/agents/skills.ts +6 -0
  498. package/src/agents/types.ts +8 -8
  499. package/src/agents/validation.ts +2 -0
  500. package/src/artifacts/address.ts +132 -0
  501. package/src/artifacts/csv.ts +108 -0
  502. package/src/artifacts/errors.ts +21 -0
  503. package/src/artifacts/execution.ts +153 -0
  504. package/src/artifacts/frames/assets.ts +88 -0
  505. package/src/artifacts/frames/grants.ts +124 -0
  506. package/src/artifacts/frames/index.ts +15 -0
  507. package/src/artifacts/frames/kit.ts +392 -0
  508. package/src/artifacts/frames/probe.ts +309 -0
  509. package/src/artifacts/frames/protocol.ts +174 -0
  510. package/src/artifacts/frames/runtime.ts +213 -0
  511. package/src/artifacts/html.ts +25 -0
  512. package/src/artifacts/ids.ts +18 -0
  513. package/src/artifacts/index.ts +61 -0
  514. package/src/artifacts/kinds.ts +8 -0
  515. package/src/artifacts/limits.ts +27 -0
  516. package/src/artifacts/outline.ts +62 -0
  517. package/src/artifacts/publish/files.ts +87 -0
  518. package/src/artifacts/publish/index.ts +12 -0
  519. package/src/artifacts/publish/publish.ts +250 -0
  520. package/src/artifacts/publish/references.ts +130 -0
  521. package/src/artifacts/publish/validate/document.ts +114 -0
  522. package/src/artifacts/publish/validate/file.ts +19 -0
  523. package/src/artifacts/publish/validate/sheet.ts +251 -0
  524. package/src/artifacts/publish/validate/slides.ts +134 -0
  525. package/src/artifacts/references.ts +11 -0
  526. package/src/artifacts/resolve.ts +97 -0
  527. package/src/artifacts/theme.ts +116 -0
  528. package/src/artifacts/warnings.ts +10 -0
  529. package/src/artifacts/workbook.ts +315 -0
  530. package/src/authorization/decision.ts +5 -0
  531. package/src/authorization/grant-kinds.ts +14 -2
  532. package/src/blob-storage/internal.ts +1 -1
  533. package/src/blob-storage/media-type.ts +69 -0
  534. package/src/datasets/builders.ts +66 -2
  535. package/src/datasets/column-index.ts +19 -0
  536. package/src/datasets/execution.ts +23 -9
  537. package/src/errors/internal.ts +1 -0
  538. package/src/events/execution.ts +134 -21
  539. package/src/execution/authorized-object-reader.ts +270 -256
  540. package/src/execution/object-reader-clearance.ts +91 -0
  541. package/src/execution/object-reader-ontology.ts +63 -0
  542. package/src/execution/object-reader-security.ts +146 -0
  543. package/src/http/api-routes.ts +125 -0
  544. package/src/index.ts +71 -3
  545. package/src/lake-storage/in-memory.ts +26 -3
  546. package/src/lake-storage/index.ts +13 -1
  547. package/src/lake-storage/lineage.ts +385 -0
  548. package/src/lake-storage/sql-transforms.ts +45 -0
  549. package/src/lake-storage/types.ts +59 -1
  550. package/src/lake-storage/version-inputs.ts +35 -6
  551. package/src/maintenance/ontology-maintenance.ts +15 -0
  552. package/src/objects/clearance-redaction.ts +138 -0
  553. package/src/objects/link/authorization.ts +27 -7
  554. package/src/objects/link/remove.ts +2 -2
  555. package/src/objects/link/upsert-batch.ts +7 -5
  556. package/src/objects/link/upsert.ts +2 -2
  557. package/src/objects/object/delete.ts +2 -0
  558. package/src/objects/object/upsert-batch.ts +2 -4
  559. package/src/objects/object/upsert.ts +2 -3
  560. package/src/objects/property-clearance.ts +171 -152
  561. package/src/objects/query/clearance-admission.ts +112 -0
  562. package/src/objects/query/link-query-clearance.ts +73 -0
  563. package/src/ontology/builders.ts +12 -1
  564. package/src/ontology/docs-markdown.ts +1 -1
  565. package/src/pipelines/index.ts +2 -0
  566. package/src/pipelines/lineage.ts +45 -0
  567. package/src/projections/internal.ts +2 -2
  568. package/src/runtime/create.ts +4 -0
  569. package/src/runtime/host.ts +55 -0
  570. package/src/runtime/internal.ts +2 -0
  571. package/src/runtime/ontology-mutations.ts +19 -4
  572. package/src/runtime/resolve-definitions.ts +66 -3
  573. package/src/runtime/sixb.ts +18 -1
  574. package/src/sandboxes/README.md +29 -7
  575. package/src/sandboxes/auth.ts +16 -0
  576. package/src/sandboxes/config.ts +2 -7
  577. package/src/sandboxes/configuration.ts +61 -7
  578. package/src/sandboxes/index.ts +1 -0
  579. package/src/sandboxes/sandbox.ts +27 -5
  580. package/src/security/applied-markings-contribution.ts +277 -0
  581. package/src/security/applied-markings-host.ts +41 -0
  582. package/src/security/applied-markings-snapshot.ts +235 -0
  583. package/src/security/applied-markings.ts +405 -0
  584. package/src/security/dataset-version-markings.ts +163 -0
  585. package/src/security/grants.ts +39 -4
  586. package/src/security/index.ts +3 -0
  587. package/src/security/internal.ts +18 -0
  588. package/src/security/marking-propagation.ts +255 -0
  589. package/src/security/marking-sets.ts +42 -0
  590. package/src/security/markings.ts +29 -178
  591. package/src/security/pipeline-markings.ts +175 -0
  592. package/src/security/project.ts +8 -0
  593. package/src/security/projection-markings.ts +421 -0
  594. package/src/security/redactions.ts +7 -2
  595. package/src/security/types.ts +20 -2
  596. package/src/security/validation.ts +11 -4
  597. package/src/storage/action-runs/in-memory.ts +18 -0
  598. package/src/storage/action-runs/types.ts +8 -0
  599. package/src/storage/activity/in-memory.ts +374 -0
  600. package/src/storage/activity/index.ts +27 -0
  601. package/src/storage/activity/policy.ts +430 -0
  602. package/src/storage/activity/types.ts +211 -0
  603. package/src/storage/agents/in-memory.ts +10 -0
  604. package/src/storage/agents/provider.ts +2 -13
  605. package/src/storage/agents/types.ts +9 -16
  606. package/src/storage/artifacts/errors.ts +16 -0
  607. package/src/storage/artifacts/in-memory.ts +240 -0
  608. package/src/storage/artifacts/index.ts +30 -0
  609. package/src/storage/artifacts/record.ts +200 -0
  610. package/src/storage/artifacts/types.ts +209 -0
  611. package/src/storage/auth/in-memory/sessions.ts +21 -0
  612. package/src/storage/auth/index.ts +2 -0
  613. package/src/storage/auth/types.ts +18 -0
  614. package/src/storage/executions/in-memory.ts +61 -1
  615. package/src/storage/executions/index.ts +3 -0
  616. package/src/storage/executions/provider.ts +12 -0
  617. package/src/storage/executions/types.ts +30 -0
  618. package/src/storage/in-memory/index.ts +16 -0
  619. package/src/storage/index.ts +63 -0
  620. package/src/storage/internal.ts +30 -0
  621. package/src/storage/ontology/in-memory/sources.ts +23 -0
  622. package/src/storage/ontology/index.ts +2 -0
  623. package/src/storage/ontology/sources.ts +17 -0
  624. package/src/storage/share-grants/in-memory.ts +8 -0
  625. package/src/storage/share-grants/index.ts +1 -0
  626. package/src/storage/share-grants/types.ts +8 -0
  627. package/src/storage/types.ts +4 -0
  628. package/src/storage/workflow-runs/in-memory.ts +16 -0
  629. package/src/storage/workflow-runs/types.ts +5 -0
  630. package/src/testing/action-run-storage-contract.ts +25 -0
  631. package/src/testing/activity-storage-contract.ts +840 -0
  632. package/src/testing/agent-storage-contract.ts +22 -21
  633. package/src/testing/artifact-storage-contract.ts +517 -0
  634. package/src/testing/auth-storage-contract.ts +47 -0
  635. package/src/testing/execution-storage-contract.ts +147 -1
  636. package/src/testing/index.ts +9 -0
  637. package/src/testing/lake-merge-storage-contract.ts +38 -0
  638. package/src/testing/lake-storage-contract.ts +247 -2
  639. package/src/testing/materializer-storage-contract.ts +1 -0
  640. package/src/testing/ontology-storage-contract.ts +57 -2
  641. package/src/testing/share-grant-storage-contract.ts +15 -0
  642. package/src/workflows/builders.ts +14 -0
  643. package/src/workflows/types.ts +9 -0
  644. package/src/workflows/validation.ts +72 -0
  645. package/dist/chunk-1k89ecfr.js +0 -85
  646. package/dist/chunk-1k89ecfr.js.map +0 -10
  647. package/dist/chunk-3t2hgbgd.js.map +0 -15
  648. package/dist/chunk-4vyr1j8f.js +0 -128
  649. package/dist/chunk-4vyr1j8f.js.map +0 -11
  650. package/dist/chunk-9gyp8hg1.js +0 -363
  651. package/dist/chunk-9gyp8hg1.js.map +0 -14
  652. package/dist/chunk-es1gxsbf.js.map +0 -13
  653. package/dist/chunk-gsjm1wms.js.map +0 -10
  654. package/dist/chunk-hkc3jct7.js.map +0 -10
  655. package/dist/chunk-k6q3n2sc.js.map +0 -12
  656. package/dist/chunk-rrzt8jdy.js.map +0 -14
  657. package/dist/chunk-s16apyk9.js +0 -256
  658. package/dist/chunk-s16apyk9.js.map +0 -16
  659. package/dist/chunk-s54c868q.js.map +0 -12
  660. package/dist/chunk-tw03bsmb.js.map +0 -11
  661. /package/dist/{chunk-xfs8x8m9.js.map → chunk-0bphap9y.js.map} +0 -0
  662. /package/dist/{chunk-1zq2p6g0.js.map → chunk-1cc1xaf3.js.map} +0 -0
  663. /package/dist/{chunk-t7x8dmn0.js.map → chunk-431pyp2c.js.map} +0 -0
  664. /package/dist/{chunk-c85m1hyj.js.map → chunk-447a5c0p.js.map} +0 -0
  665. /package/dist/{chunk-ren4kg2j.js.map → chunk-561r0yc9.js.map} +0 -0
  666. /package/dist/{chunk-5e43w60z.js.map → chunk-5948n82c.js.map} +0 -0
  667. /package/dist/{chunk-yzwja0mj.js.map → chunk-5hx48dnn.js.map} +0 -0
  668. /package/dist/{chunk-5j58wjct.js.map → chunk-858emn8m.js.map} +0 -0
  669. /package/dist/{chunk-6p49a5cq.js.map → chunk-c1rxbz5y.js.map} +0 -0
  670. /package/dist/{chunk-gc4ntf7d.js.map → chunk-cwdzcv37.js.map} +0 -0
  671. /package/dist/{chunk-fa02jy15.js.map → chunk-cy4mbddw.js.map} +0 -0
  672. /package/dist/{chunk-9w055r5b.js.map → chunk-d09e3rax.js.map} +0 -0
  673. /package/dist/{chunk-dk8tkk5f.js.map → chunk-d7dnxdep.js.map} +0 -0
  674. /package/dist/{chunk-tg2cw67r.js.map → chunk-ky3j490c.js.map} +0 -0
  675. /package/dist/{chunk-vyf9kfqf.js.map → chunk-q7gn29y3.js.map} +0 -0
  676. /package/dist/{chunk-v9xd5wzd.js.map → chunk-s7jg7pmn.js.map} +0 -0
  677. /package/dist/{chunk-9dmt152s.js.map → chunk-vf57cr4t.js.map} +0 -0
  678. /package/dist/{chunk-9ybhtmg4.js.map → chunk-vvxtn22d.js.map} +0 -0
  679. /package/dist/{chunk-7t429e3f.js.map → chunk-xvsc5m8n.js.map} +0 -0
  680. /package/dist/{chunk-z4m0yz8c.js.map → chunk-y5tah2kf.js.map} +0 -0
  681. /package/dist/{chunk-fkgc1wt8.js.map → chunk-z58tm0hm.js.map} +0 -0
@@ -0,0 +1,255 @@
1
+ import type { DatasetDefinition } from "../datasets/types"
2
+ import { lineageColumn } from "../lake-storage/lineage"
3
+ import type { DatasetColumnLineage, DatasetColumnRef } from "../lake-storage/types"
4
+ import { runStepLineage, stepReadColumns } from "../pipelines/lineage"
5
+ import type { PipelineDefinition, PipelineStepDefinition } from "../pipelines/types"
6
+
7
+ /** A step of a registered pipeline. A step reused by two pipelines is two registered steps. */
8
+ export interface RegisteredStep {
9
+ readonly pipelineId: string
10
+ readonly step: PipelineStepDefinition
11
+ }
12
+
13
+ /** The column that declares a marking, and the steps it went through to reach a column. */
14
+ export interface MarkingOrigin {
15
+ readonly column: DatasetColumnRef
16
+ /** `pipeline/step`, upstream first. Empty when the column declares the marking itself. */
17
+ readonly steps: readonly string[]
18
+ }
19
+
20
+ /** Each marking a column carries, with one path it arrived by. */
21
+ export type ColumnMarkingOrigins = ReadonlyMap<string, MarkingOrigin>
22
+
23
+ /** Markings of every column of every registered dataset, derived from the definitions. */
24
+ export interface DatasetMarkings {
25
+ /** Empty for a column without markings or that is not registered. */
26
+ of(column: DatasetColumnRef): ColumnMarkingOrigins
27
+ }
28
+
29
+ export function registeredSteps(
30
+ pipelines: readonly PipelineDefinition[]
31
+ ): readonly RegisteredStep[] {
32
+ return pipelines.flatMap((pipeline) =>
33
+ pipeline.graph.nodes.map(({ step }) => ({ pipelineId: pipeline.id, step }))
34
+ )
35
+ }
36
+
37
+ /** Lineage of each `run` step, built once per step object; undefined for other steps. */
38
+ export function runStepLineages(
39
+ datasetsById: ReadonlyMap<string, DatasetDefinition>
40
+ ): (entry: RegisteredStep) => DatasetColumnLineage | undefined {
41
+ const lineages = new Map<PipelineStepDefinition, DatasetColumnLineage>()
42
+
43
+ return ({ step }) => {
44
+ if (step.executor.kind !== "run") return undefined
45
+
46
+ let lineage = lineages.get(step)
47
+ if (!lineage) {
48
+ lineage = runStepLineage(step, datasetsById)
49
+ lineages.set(step, lineage)
50
+ }
51
+
52
+ return lineage
53
+ }
54
+ }
55
+
56
+ export function stepLabel(entry: RegisteredStep): string {
57
+ return `${entry.pipelineId}/${entry.step.id}`
58
+ }
59
+
60
+ type MutableOrigins = Map<string, MarkingOrigin>
61
+
62
+ const NO_MARKINGS: ColumnMarkingOrigins = new Map()
63
+
64
+ interface KnownLineage {
65
+ readonly lineage: DatasetColumnLineage
66
+ /** What a column the lineage does not list depends on. */
67
+ readonly reads: readonly DatasetColumnRef[]
68
+ }
69
+
70
+ /**
71
+ * Markings each column carries according to the registered definitions: the ones it declares, and
72
+ * the ones each step derives from the columns it depends on, once that step's lineage is known.
73
+ *
74
+ * What decided the rows of a step's inputs decides the rows of its output, whether or not the step
75
+ * reads a column of that input: `SELECT count(*) FROM rich` reveals which rows `rich` holds. So
76
+ * each dataset also keeps the markings of its row dependencies, and every output column of a step
77
+ * carries those of every input it reads, as the lineage each version records does.
78
+ *
79
+ * A step may read its own output and a dataset may have several producers, so a step whose output
80
+ * gains a marking queues the steps that read that output, until nothing changes. Lineage can be
81
+ * added in rounds: each round only revisits what the new lineage reaches.
82
+ */
83
+ export class MarkingPropagation implements DatasetMarkings {
84
+ private readonly datasetsById: ReadonlyMap<string, DatasetDefinition>
85
+ /** Marked columns only, by dataset, built when a dataset is first looked at. */
86
+ private readonly markings = new Map<string, Map<string, MutableOrigins>>()
87
+ /** Markings of what decides each dataset's rows, for datasets a step writes. */
88
+ private readonly rowMarkings = new Map<string, MutableOrigins>()
89
+ private readonly ordered: readonly RegisteredStep[]
90
+ private readonly readers = new Map<string, RegisteredStep[]>()
91
+ private readonly known = new Map<RegisteredStep, KnownLineage>()
92
+ private readonly queue = new Set<RegisteredStep>()
93
+
94
+ constructor(
95
+ datasetsById: ReadonlyMap<string, DatasetDefinition>,
96
+ steps: readonly RegisteredStep[]
97
+ ) {
98
+ this.datasetsById = datasetsById
99
+ this.ordered = inDependencyOrder(steps)
100
+
101
+ for (const entry of steps) {
102
+ for (const input of new Set(Object.values(entry.step.inputs).map((dataset) => dataset.id))) {
103
+ appendTo(this.readers, input, entry)
104
+ }
105
+ }
106
+ }
107
+
108
+ of(ref: DatasetColumnRef): ColumnMarkingOrigins {
109
+ return this.markedColumns(ref.datasetId).get(ref.column) ?? NO_MARKINGS
110
+ }
111
+
112
+ /**
113
+ * Derive markings through every step `lineageOf` knows the lineage of. A step it returns null
114
+ * for derives nothing until a later call knows it.
115
+ */
116
+ derive(lineageOf: (entry: RegisteredStep) => DatasetColumnLineage | null): this {
117
+ for (const entry of this.ordered) {
118
+ if (this.known.has(entry)) continue
119
+
120
+ const lineage = lineageOf(entry)
121
+ if (!lineage) continue
122
+
123
+ this.known.set(entry, { lineage, reads: stepReadColumns(entry.step) })
124
+ this.queue.add(entry)
125
+ }
126
+
127
+ for (const entry of this.queue) {
128
+ this.queue.delete(entry)
129
+ const known = this.known.get(entry)
130
+ if (!known || !this.apply(entry, known)) continue
131
+
132
+ // Entries added while iterating a Set are visited, so the queue drains in this loop.
133
+ for (const reader of this.readers.get(entry.step.output.id) ?? []) {
134
+ if (this.known.has(reader)) this.queue.add(reader)
135
+ }
136
+ }
137
+
138
+ return this
139
+ }
140
+
141
+ /** Whether the output's rows or any output column gained a marking. */
142
+ private apply(entry: RegisteredStep, { lineage, reads }: KnownLineage): boolean {
143
+ const label = stepLabel(entry)
144
+ const rows = this.union(lineage.rows)
145
+
146
+ for (const input of new Set(Object.values(entry.step.inputs).map((dataset) => dataset.id))) {
147
+ for (const [markingId, origin] of this.rowMarkings.get(input) ?? []) {
148
+ if (!rows.has(markingId)) rows.set(markingId, origin)
149
+ }
150
+ }
151
+
152
+ let everyRead: ReadonlyMap<string, MarkingOrigin> | undefined
153
+ let changed = false
154
+
155
+ const outputId = entry.step.output.id
156
+ let outputRows = this.rowMarkings.get(outputId)
157
+
158
+ for (const [markingId, origin] of rows) {
159
+ if (outputRows?.has(markingId)) continue
160
+ if (!outputRows) {
161
+ outputRows = new Map()
162
+ this.rowMarkings.set(outputId, outputRows)
163
+ }
164
+
165
+ outputRows.set(markingId, { column: origin.column, steps: [...origin.steps, label] })
166
+ changed = true
167
+ }
168
+
169
+ const marked = this.markedColumns(outputId)
170
+ for (const { name: column } of this.datasetsById.get(outputId)?.schema.columns ?? []) {
171
+ const values = lineageColumn(lineage, column)
172
+ const valueSource = values ? this.union(values) : (everyRead ?? this.union(reads))
173
+ if (!values) everyRead = valueSource
174
+
175
+ for (const source of [rows, valueSource]) {
176
+ for (const [markingId, origin] of source) {
177
+ let origins = marked.get(column)
178
+ if (origins?.has(markingId)) continue
179
+ if (!origins) {
180
+ origins = new Map()
181
+ marked.set(column, origins)
182
+ }
183
+
184
+ origins.set(markingId, { column: origin.column, steps: [...origin.steps, label] })
185
+ changed = true
186
+ }
187
+ }
188
+ }
189
+
190
+ return changed
191
+ }
192
+
193
+ private markedColumns(datasetId: string): Map<string, MutableOrigins> {
194
+ let columns = this.markings.get(datasetId)
195
+ if (!columns) {
196
+ columns = new Map()
197
+ for (const column of this.datasetsById.get(datasetId)?.schema.columns ?? []) {
198
+ if (!column.markings?.length) continue
199
+
200
+ const origin = { column: { datasetId, column: column.name }, steps: [] }
201
+ columns.set(column.name, new Map(column.markings.map((id) => [id, origin])))
202
+ }
203
+
204
+ this.markings.set(datasetId, columns)
205
+ }
206
+
207
+ return columns
208
+ }
209
+
210
+ /** Every marking of these columns, each with the first origin found. */
211
+ private union(columns: readonly DatasetColumnRef[]): MutableOrigins {
212
+ const union: MutableOrigins = new Map()
213
+ for (const column of columns) {
214
+ for (const [markingId, origin] of this.of(column)) {
215
+ if (!union.has(markingId)) union.set(markingId, origin)
216
+ }
217
+ }
218
+ return union
219
+ }
220
+ }
221
+
222
+ /** Producers before consumers, so most markings arrive by their shortest path. */
223
+ function inDependencyOrder(steps: readonly RegisteredStep[]): readonly RegisteredStep[] {
224
+ const producers = producersByDataset(steps)
225
+ const ordered: RegisteredStep[] = []
226
+ const visited = new Set<RegisteredStep>()
227
+
228
+ const visit = (entry: RegisteredStep): void => {
229
+ if (visited.has(entry)) return
230
+
231
+ visited.add(entry)
232
+ for (const input of Object.values(entry.step.inputs)) {
233
+ for (const producer of producers.get(input.id) ?? []) visit(producer)
234
+ }
235
+
236
+ ordered.push(entry)
237
+ }
238
+
239
+ for (const entry of steps) visit(entry)
240
+ return ordered
241
+ }
242
+
243
+ function producersByDataset(
244
+ steps: readonly RegisteredStep[]
245
+ ): ReadonlyMap<string, readonly RegisteredStep[]> {
246
+ const producers = new Map<string, RegisteredStep[]>()
247
+ for (const entry of steps) appendTo(producers, entry.step.output.id, entry)
248
+ return producers
249
+ }
250
+
251
+ function appendTo<TValue>(map: Map<string, TValue[]>, key: string, value: TValue): void {
252
+ const values = map.get(key)
253
+ if (values) values.push(value)
254
+ else map.set(key, [value])
255
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Shared, immutable sets of marking ids.
3
+ *
4
+ * Every column of every resolved version holds one of a handful of distinct sets, so each distinct
5
+ * set is created once and compared by identity.
6
+ */
7
+ export class MarkingSets {
8
+ readonly empty: ReadonlySet<string> = new Set()
9
+ private readonly sets = new Map<string, ReadonlySet<string>>([["", this.empty]])
10
+
11
+ of(markingIds: Iterable<string> | undefined): ReadonlySet<string> {
12
+ // Most columns carry no marking.
13
+ if (markingIds === undefined || (Array.isArray(markingIds) && markingIds.length === 0)) {
14
+ return this.empty
15
+ }
16
+
17
+ const sorted = [...new Set(markingIds)].sort()
18
+ const key = sorted.join("\u0000")
19
+
20
+ let set = this.sets.get(key)
21
+ if (!set) {
22
+ set = new Set(sorted)
23
+ this.sets.set(key, set)
24
+ }
25
+
26
+ return set
27
+ }
28
+
29
+ /** The union of sets this instance created. */
30
+ union(sets: Iterable<ReadonlySet<string> | undefined>): ReadonlySet<string> {
31
+ let single: ReadonlySet<string> | undefined
32
+ const ids: string[] = []
33
+
34
+ for (const set of sets) {
35
+ if (!set || set.size === 0) continue
36
+ single = single === undefined && ids.length === 0 ? set : undefined
37
+ ids.push(...set)
38
+ }
39
+
40
+ return single ?? this.of(ids)
41
+ }
42
+ }
@@ -3,15 +3,19 @@ import type { OntologyDefinitionCatalog } from "../ontology/registry"
3
3
  import type { ObjectType, Property } from "../ontology/types"
4
4
  import type { PipelineDefinition } from "../pipelines/types"
5
5
  import type { ProjectionDefinitionCatalog } from "../projections/registry"
6
- import type { ObjectProjectionDefinition } from "../projections/types"
7
6
  import { SecurityValidationError } from "./errors"
7
+ import { MarkingPropagation, registeredSteps, runStepLineages } from "./marking-propagation"
8
+ import { validateProjectionMarkings } from "./projection-markings"
8
9
 
9
10
  /**
10
11
  * Check every marking once at startup.
11
12
  *
12
- * A marking is enforced at read time from the property or column definition alone, so each rule
13
- * here closes a path that would otherwise return the value unredacted or make enforcement
14
- * ambiguous.
13
+ * A marking is enforced at read time from the property or column definition and the lineage of
14
+ * the version read, so each rule here closes a path that would otherwise return the value
15
+ * unredacted or make enforcement ambiguous.
16
+ *
17
+ * Projections are checked against the markings columns declare or inherit through `run` steps.
18
+ * What SQL steps derive needs the lake provider's analysis, which `checkPipelineMarkings` adds.
15
19
  */
16
20
  export function validateMarkingsAtStartup(input: {
17
21
  readonly markingIds: ReadonlySet<string>
@@ -22,8 +26,14 @@ export function validateMarkingsAtStartup(input: {
22
26
  }): void {
23
27
  validatePropertyMarkings(input.ontology, input.markingIds)
24
28
  validateColumnMarkings(input.datasetsById, input.markingIds)
25
- rejectPipelineStepsOverMarkedColumns(input.pipelines, input.datasetsById)
26
- validateProjectionMarkings(input.projections, input.ontology, input.datasetsById)
29
+
30
+ const runLineageOf = runStepLineages(input.datasetsById)
31
+ const markings = new MarkingPropagation(
32
+ input.datasetsById,
33
+ registeredSteps(input.pipelines)
34
+ ).derive((entry) => runLineageOf(entry) ?? null)
35
+
36
+ validateProjectionMarkings(input.projections, input.ontology, markings)
27
37
  }
28
38
 
29
39
  // ── Declarations ────────────────────────────────────────────
@@ -85,9 +95,20 @@ function assertSubtypeKeepsParentMarkings(
85
95
  const parent = ontology.getObjectTypeById(objectType.extends)
86
96
  if (!parent) return
87
97
 
98
+ // Indexed on the first marked parent property: most parents mark nothing.
99
+ let propertiesById: Map<string, Property> | undefined
88
100
  for (const parentProperty of parent.properties) {
89
- const property = objectType.properties.find((candidate) => candidate.id === parentProperty.id)
90
- const missing = missingMarkings(parentProperty.markings, property?.markings)
101
+ const parentMarkings = parentProperty.markings
102
+ if (!parentMarkings) continue
103
+
104
+ if (!propertiesById) {
105
+ propertiesById = new Map()
106
+ for (const property of objectType.properties) {
107
+ if (!propertiesById.has(property.id)) propertiesById.set(property.id, property)
108
+ }
109
+ }
110
+
111
+ const missing = missingMarkings(parentMarkings, propertiesById.get(parentProperty.id)?.markings)
91
112
  if (missing.length > 0) {
92
113
  throw new SecurityValidationError(
93
114
  `[Sixb] Property '${objectType.id}.${parentProperty.id}' must keep the markings of '${parent.id}.${parentProperty.id}': add ${missing.map((markingId) => `'${markingId}'`).join(", ")}.`
@@ -134,172 +155,6 @@ function assertMarkingList(
134
155
  }
135
156
  }
136
157
 
137
- // ── Propagation ─────────────────────────────────────────────
138
-
139
- /**
140
- * A step's output inherits nothing from its inputs until Sixb can derive each output column's
141
- * markings from the transform. Until then, reading a marked column would declassify it.
142
- */
143
- function rejectPipelineStepsOverMarkedColumns(
144
- pipelines: readonly PipelineDefinition[],
145
- datasetsById: ReadonlyMap<string, DatasetDefinition>
146
- ): void {
147
- for (const pipeline of pipelines) {
148
- for (const { step } of pipeline.graph.nodes) {
149
- for (const input of Object.values(step.inputs)) {
150
- const dataset = datasetsById.get(input.id)
151
- const column = dataset?.schema.columns.find((candidate) => candidate.markings)
152
- if (!dataset || !column) continue
153
- throw new SecurityValidationError(
154
- `[Sixb] Pipeline '${pipeline.id}' step '${step.id}' reads column '${dataset.id}.${column.name}', which carries ${markingList(column.markings)}. Pipeline steps cannot read marked columns yet.`
155
- )
156
- }
157
- }
158
- }
159
- }
160
-
161
- /**
162
- * Objects are read through the ontology, so each projected property declares the markings of its
163
- * column: the ontology stays the reviewed contract of what each reader receives. Values that
164
- * identify objects or key links are returned wherever the object or link is, and telemetry does
165
- * not enforce markings yet, so those columns cannot carry markings.
166
- */
167
- function validateProjectionMarkings(
168
- projections: ProjectionDefinitionCatalog,
169
- ontology: OntologyDefinitionCatalog,
170
- datasetsById: ReadonlyMap<string, DatasetDefinition>
171
- ): void {
172
- for (const projection of projections.listObjects()) {
173
- const objectType = ontology.getObjectTypeById(projection.objectTypeId)
174
- if (objectType) validateObjectProjection(projection, objectType, datasetsById)
175
- }
176
-
177
- for (const projection of projections.listLinks()) {
178
- const role = `keys link '${projection.sourceObjectTypeId}.${projection.linkId}'`
179
- for (const columnName of [projection.sourceField, projection.targetField]) {
180
- assertUnmarkedColumn(projection, sourceColumn(projection, columnName, datasetsById), role)
181
- }
182
- }
183
-
184
- for (const projection of projections.listTelemetry()) {
185
- const columnNames = [
186
- projection.objectIdField,
187
- projection.atField,
188
- ...Object.values(projection.properties).flatMap((mapping) =>
189
- mapping.unitField === undefined
190
- ? [mapping.valueField]
191
- : [mapping.valueField, mapping.unitField]
192
- ),
193
- ]
194
- for (const columnName of columnNames) {
195
- const column = sourceColumn(projection, columnName, datasetsById)
196
- if (!column.markings) continue
197
- throw new SecurityValidationError(
198
- `[Sixb] Projection '${projection.id}' reads column '${column.path}', which carries ${markingList(column.markings)}. Telemetry projections cannot read marked columns yet.`
199
- )
200
- }
201
- }
202
- }
203
-
204
- function validateObjectProjection(
205
- projection: ObjectProjectionDefinition,
206
- objectType: ObjectType,
207
- datasetsById: ReadonlyMap<string, DatasetDefinition>
208
- ): void {
209
- const keyRoles = objectProjectionKeyRoles(projection, objectType)
210
-
211
- for (const [propertyId, columnName] of Object.entries(projection.properties)) {
212
- const column = sourceColumn(projection, columnName, datasetsById)
213
- const property = objectType.properties.find((candidate) => candidate.id === propertyId)
214
- const path = `${objectType.id}.${propertyId}`
215
- const keyRole = keyRoles.get(propertyId)
216
- if (keyRole) {
217
- assertUnmarkedColumn(projection, column, keyRole)
218
- if (property?.markings) {
219
- throw new SecurityValidationError(
220
- `[Sixb] Projection '${projection.id}': property '${path}' ${keyRole} and cannot carry markings.`
221
- )
222
- }
223
- continue
224
- }
225
- const missing = missingMarkings(column.markings, property?.markings)
226
- if (missing.length > 0) {
227
- throw new SecurityValidationError(
228
- `[Sixb] Projection '${projection.id}': property '${path}' is projected from column '${column.path}', which carries ${markingList(column.markings)}. Add markings: ${markingList(missing)} to the property.`
229
- )
230
- }
231
- }
232
-
233
- for (const [linkId, link] of Object.entries(projection.links)) {
234
- if (link.sourceField === undefined) continue
235
- assertUnmarkedColumn(
236
- projection,
237
- sourceColumn(projection, link.sourceField, datasetsById),
238
- `keys link '${objectType.id}.${linkId}'`
239
- )
240
- }
241
-
242
- // The timestamp decides whether the source value or an app edit wins, which reveals how they
243
- // compare.
244
- const conflictResolution = projection.conflictResolution
245
- if (conflictResolution?.strategy === "mostRecent") {
246
- assertUnmarkedColumn(
247
- projection,
248
- sourceColumn(projection, conflictResolution.sourceTimestamp, datasetsById),
249
- "decides which value wins under 'mostRecent'"
250
- )
251
- }
252
- }
253
-
254
- /** Properties whose value becomes an object id or a link key, with the role they play. */
255
- function objectProjectionKeyRoles(
256
- projection: ObjectProjectionDefinition,
257
- objectType: ObjectType
258
- ): ReadonlyMap<string, string> {
259
- const roles = new Map<string, string>()
260
- for (const property of objectType.properties) {
261
- if (property.primary) roles.set(property.id, `becomes the id of '${objectType.id}'`)
262
- }
263
- for (const [linkId, link] of Object.entries(projection.links)) {
264
- if (link.sourcePropertyId === undefined) continue
265
- roles.set(link.sourcePropertyId, `keys link '${objectType.id}.${linkId}'`)
266
- }
267
- return roles
268
- }
269
-
270
- interface SourceColumn {
271
- readonly path: string
272
- readonly markings?: readonly string[]
273
- }
274
-
275
- function sourceColumn(
276
- projection: { readonly id: string; readonly datasetId: string },
277
- columnName: string,
278
- datasetsById: ReadonlyMap<string, DatasetDefinition>
279
- ): SourceColumn {
280
- const column = datasetsById
281
- .get(projection.datasetId)
282
- ?.schema.columns.find((candidate) => candidate.name === columnName)
283
- // Projection validation runs first and resolves every mapped column.
284
- if (!column) {
285
- throw new Error(`[Sixb] Projection '${projection.id}' maps unknown column '${columnName}'.`)
286
- }
287
- return { path: `${projection.datasetId}.${columnName}`, markings: column.markings }
288
- }
289
-
290
- function assertUnmarkedColumn(
291
- projection: { readonly id: string },
292
- column: SourceColumn,
293
- role: string
294
- ): void {
295
- if (!column.markings) return
296
- throw new SecurityValidationError(
297
- `[Sixb] Projection '${projection.id}': column '${column.path}' ${role} and cannot carry markings.`
298
- )
299
- }
300
-
301
- // ── Helpers ─────────────────────────────────────────────────
302
-
303
158
  function missingMarkings(
304
159
  required: readonly string[] | undefined,
305
160
  declared: readonly string[] | undefined
@@ -307,7 +162,3 @@ function missingMarkings(
307
162
  const present = new Set(declared ?? [])
308
163
  return (required ?? []).filter((markingId) => !present.has(markingId))
309
164
  }
310
-
311
- function markingList(markings: readonly string[] | undefined): string {
312
- return `[${(markings ?? []).join(", ")}]`
313
- }