@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,163 @@
1
+ import type { DatasetDefinition } from "../datasets/types"
2
+ import { isUnknownLineage, lineageColumn, versionLineage } from "../lake-storage/lineage"
3
+ import type { DatasetColumnRef, DatasetVersion, LakeStorage } from "../lake-storage/types"
4
+ import { MarkingSets } from "./marking-sets"
5
+
6
+ /** Markings of each column of one dataset version. A column without markings has an empty set. */
7
+ export type VersionColumnMarkings = ReadonlyMap<string, ReadonlySet<string>>
8
+
9
+ export interface VersionClassification {
10
+ readonly columns: VersionColumnMarkings
11
+ /**
12
+ * Why part of the version was classified conservatively, with every marking it could hold.
13
+ * Absent when every column was classified from its lineage.
14
+ */
15
+ readonly conservative?: string
16
+ }
17
+
18
+ /**
19
+ * Markings each version of a dataset carries.
20
+ *
21
+ * Markings are never stored. A column carries the markings its registered dataset declares, and
22
+ * those every column its lineage lists declares. The version records that lineage resolved across
23
+ * every upstream step and every row it keeps (`DatasetVersion.lineage`), so a version keeps the
24
+ * classification of the code that produced it, and classifying it reads no other version.
25
+ *
26
+ * Wherever the record does not say what a column holds (no lineage on a pipeline version, or on
27
+ * any version of a provider that does not declare `recordsLineage`, an unknown history, a column
28
+ * it does not list, a dataset no longer registered) the column is classified with every marking
29
+ * the project declares.
30
+ */
31
+ export interface DatasetVersionMarkings {
32
+ classify(version: DatasetVersion): VersionClassification
33
+ /**
34
+ * Every marking declared on a registered column. Every classification, conservative ones
35
+ * included, is drawn from it, so a reader cleared for all of it needs no classification. Empty
36
+ * when the project declares no column markings.
37
+ */
38
+ everyMarking(): ReadonlySet<string>
39
+ }
40
+
41
+ export interface DatasetVersionMarkingsOptions {
42
+ readonly datasets: { list(): readonly DatasetDefinition[] }
43
+ /** The lake the versions are read from: whether it records lineage on every version. */
44
+ readonly lakeStorage: Pick<LakeStorage, "recordsLineage">
45
+ }
46
+
47
+ export function createDatasetVersionMarkings(
48
+ options: DatasetVersionMarkingsOptions
49
+ ): DatasetVersionMarkings {
50
+ const sets = new MarkingSets()
51
+
52
+ // Built on first use: a host that never classifies a version pays nothing for it.
53
+ let declared: ReadonlyMap<string, ReadonlyMap<string, ReadonlySet<string>>> | undefined
54
+ const declaredByDataset = () =>
55
+ (declared ??= new Map(
56
+ options.datasets
57
+ .list()
58
+ .map((dataset) => [
59
+ dataset.id,
60
+ new Map(dataset.schema.columns.map((column) => [column.name, sets.of(column.markings)])),
61
+ ])
62
+ ))
63
+
64
+ /**
65
+ * Every marking a registered column declares: what a column may hold where its record does not
66
+ * say. The pipelines that wrote it may have read datasets the current code no longer reads, so
67
+ * nothing narrower is safe.
68
+ */
69
+ let every: ReadonlySet<string> | undefined
70
+ const everyMarking = () =>
71
+ (every ??= sets.union(
72
+ [...declaredByDataset().values()].flatMap((columns) => [...columns.values()])
73
+ ))
74
+
75
+ const classify = (version: DatasetVersion): VersionClassification => {
76
+ const subject = `version '${version.versionId}' of '${version.datasetId}'`
77
+ const own = declaredByDataset().get(version.datasetId)
78
+
79
+ // No definition says what its columns declare: they may hold anything a column declares.
80
+ if (!own) return conservatively(version, `dataset '${version.datasetId}' is not registered`)
81
+
82
+ const lineage = versionLineage(version, options.lakeStorage)
83
+ if (isUnknownLineage(lineage)) {
84
+ // A reason core derived names this version. A recorded one names where the lineage was
85
+ // lost: upstream, or, for a provider that could not decode it, this version's own record.
86
+ return conservatively(
87
+ version,
88
+ lineage === version.lineage
89
+ ? `the lineage of ${subject} is unknown: ${lineage.unknown}`
90
+ : lineage.unknown
91
+ )
92
+ }
93
+
94
+ let conservative: string | undefined
95
+ const markingsOf = (ref: DatasetColumnRef): ReadonlySet<string> | undefined => {
96
+ const columns = declaredByDataset().get(ref.datasetId)
97
+ if (columns) return columns.get(ref.column)
98
+ conservative ??= `dataset '${ref.datasetId}' is not registered`
99
+ return everyMarking()
100
+ }
101
+
102
+ const rows = sets.union(lineage.rows.map(markingsOf))
103
+ const columns = new Map(
104
+ version.schema.columns.map(({ name }) => {
105
+ const values = lineageColumn(lineage, name)
106
+ if (!values) {
107
+ conservative ??= `${subject} recorded no lineage for column '${name}'`
108
+ return [name, everyMarking()]
109
+ }
110
+
111
+ return [name, sets.union([own.get(name), rows, ...values.map(markingsOf)])]
112
+ })
113
+ )
114
+
115
+ return { columns, ...(conservative === undefined ? {} : { conservative }) }
116
+ }
117
+
118
+ const conservatively = (version: DatasetVersion, reason: string): VersionClassification => {
119
+ const markings = everyMarking()
120
+ return {
121
+ columns: new Map(version.schema.columns.map(({ name }) => [name, markings])),
122
+ conservative: reason,
123
+ }
124
+ }
125
+
126
+ return { classify, everyMarking }
127
+ }
128
+
129
+ // ── Host capability ─────────────────────────────────────────
130
+
131
+ const datasetVersionMarkingsKey: unique symbol = Symbol("sixb.datasetVersionMarkings")
132
+
133
+ interface DatasetVersionMarkingsOwner {
134
+ readonly [datasetVersionMarkingsKey]?: DatasetVersionMarkings
135
+ }
136
+
137
+ /** One classifier per host, so every reader shares the markings it reads from the definitions. */
138
+ export function registerDatasetVersionMarkings(
139
+ owner: object,
140
+ markings: DatasetVersionMarkings
141
+ ): void {
142
+ const registered = (owner as DatasetVersionMarkingsOwner)[datasetVersionMarkingsKey]
143
+ if (registered && registered !== markings) {
144
+ throw new Error("[Sixb] Dataset version markings are already registered for this owner.")
145
+ }
146
+
147
+ Object.defineProperty(owner, datasetVersionMarkingsKey, {
148
+ configurable: false,
149
+ enumerable: false,
150
+ value: markings,
151
+ writable: false,
152
+ })
153
+ }
154
+
155
+ export function getDatasetVersionMarkings(owner: object): DatasetVersionMarkings {
156
+ const markings = (owner as DatasetVersionMarkingsOwner)[datasetVersionMarkingsKey]
157
+ if (markings) return markings
158
+ throw new Error("[Sixb] Dataset version markings are not registered for this runtime.")
159
+ }
160
+
161
+ export function shareDatasetVersionMarkings(source: object, target: object): void {
162
+ registerDatasetVersionMarkings(target, getDatasetVersionMarkings(source))
163
+ }
@@ -20,7 +20,6 @@ import type { ShareDefinition } from "../shares"
20
20
  import type { SyncDefinition } from "../syncs"
21
21
  import type { WorkflowDefinition } from "../workflows/types"
22
22
  import { SecurityValidationError } from "./errors"
23
- import type { ApplicationDefinition } from "./types"
24
23
 
25
24
  /** Capability targets a breadth selector can range over. */
26
25
  export const BREADTH_TARGETS = [
@@ -30,7 +29,6 @@ export const BREADTH_TARGETS = [
30
29
  "workflow",
31
30
  "sync",
32
31
  "pipeline",
33
- "application",
34
32
  "connector",
35
33
  "share",
36
34
  ] as const
@@ -44,7 +42,6 @@ interface BreadthTargetInput {
44
42
  workflow: WorkflowDefinition
45
43
  sync: SyncDefinition
46
44
  pipeline: PipelineDefinition
47
- application: ApplicationDefinition
48
45
  connector: ConnectorDefinition
49
46
  share: ShareDefinition
50
47
  }
@@ -106,7 +103,6 @@ export const every = {
106
103
  workflow: (): BreadthSelector<"workflow"> => all("workflow"),
107
104
  sync: (): BreadthSelector<"sync"> => all("sync"),
108
105
  pipeline: (): BreadthSelector<"pipeline"> => all("pipeline"),
109
- application: (): BreadthSelector<"application"> => all("application"),
110
106
  connector: (): BreadthSelector<"connector"> => all("connector"),
111
107
  share: (): BreadthSelector<"share"> => all("share"),
112
108
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Grant builders for role definitions.
3
3
  *
4
- * Grants are plain data referencing application and runtime definitions
4
+ * Grants are plain data referencing runtime definitions
5
5
  * by id. They carry no enforcement logic — the authorization engine expands
6
6
  * each grant's selection into per-principal id sets at startup, so runtime
7
7
  * checks stay simple `set.has(id)` lookups.
@@ -31,14 +31,13 @@ import {
31
31
  isBreadthSelector,
32
32
  } from "./every"
33
33
  import type {
34
- AccessGrant,
35
34
  AgentRunGrant,
36
35
  AppendGrant,
37
- ApplicationDefinition,
38
36
  ApplyGrant,
39
37
  EditGrant,
40
38
  ManageGrant,
41
39
  ObserveGrant,
40
+ ProjectSurfaceReference,
42
41
  RunGrant,
43
42
  Selection,
44
43
  ShareGrant,
@@ -54,7 +53,7 @@ const VIEW_TARGETS = ["object", "dataset"] as const
54
53
  const RUN_TARGETS = ["workflow", "sync", "pipeline"] as const
55
54
 
56
55
  /**
57
- * Seven of the nine targets carry a `kind` discriminant naming themselves. The other two — an
56
+ * Six of the eight targets carry a `kind` discriminant naming themselves. The other two — an
58
57
  * `ObjectType` and an `ActionDefinition` — carry none, and each appears in exactly one builder that
59
58
  * allows no other undiscriminated target, so the allowed set names them unambiguously.
60
59
  */
@@ -63,7 +62,6 @@ const TARGET_BY_DEFINITION_KIND: Readonly<Partial<Record<string, BreadthTarget>>
63
62
  sync: "sync",
64
63
  pipeline: "pipeline",
65
64
  workflow: "workflow",
66
- application: "application",
67
65
  connector: "connector",
68
66
  share: "share",
69
67
  }
@@ -82,7 +80,7 @@ function targetOfDefinition<TTarget extends BreadthTarget>(
82
80
  // `spec.universeKey` with a `TypeError` naming neither the role nor the definition.
83
81
  if (discriminated) {
84
82
  if (!isAllowedTarget(discriminated, allowedTargets)) {
85
- // "one targeting x", not "a x definition": four of the eight targets start with a vowel, and
83
+ // "one targeting x", not "a x definition": object and action start with a vowel, and
86
84
  // this string ships in a release. Same reason the selector branch below writes no article.
87
85
  throw new SecurityValidationError(
88
86
  `[Sixb] ${label} accepts ${allowedTargets.join(" or ")} definitions, but received one targeting ${discriminated}.`
@@ -158,11 +156,6 @@ function resolveGrant<TDefinition extends { readonly id?: unknown }, TTarget ext
158
156
  return { target, selection: { all: false, ids } }
159
157
  }
160
158
 
161
- function access(input: GrantInput<ApplicationDefinition, "application">): AccessGrant {
162
- const { selection } = resolveGrant(input, "can.access", ["application"])
163
- return { kind: "grant", capability: "access", target: "application", selection }
164
- }
165
-
166
159
  function view<const TObjectTypeId extends string>(
167
160
  input: ShareTarget<TObjectTypeId>
168
161
  ): ShareViewGrantBuilder<TObjectTypeId>
@@ -266,17 +259,45 @@ function isAgentUsageReference(input: unknown): input is AgentUsageReference {
266
259
  )
267
260
  }
268
261
 
269
- function observe(input: "logs" | AgentUsageReference): ObserveGrant {
270
- if (input !== "logs" && !isAgentUsageReference(input)) {
271
- throw new SecurityValidationError('[Sixb] can.observe accepts "logs" or agent.usage.')
262
+ type ObservableReference = ProjectSurfaceReference | AgentUsageReference
263
+
264
+ /**
265
+ * Every reference `can.observe` accepts, keyed by its `kind`, which is also its grant target. The
266
+ * full `Record` is what stops a new `project` member from compiling until it is listed here.
267
+ */
268
+ const OBSERVABLE_REFERENCES: Readonly<Record<ObservableReference["kind"], string>> = {
269
+ logs: "project.logs",
270
+ activity: "project.activity",
271
+ aiUsage: "agent.usage",
272
+ }
273
+
274
+ function isObservableReference(input: unknown): input is ObservableReference {
275
+ return (
276
+ typeof input === "object" &&
277
+ input !== null &&
278
+ "kind" in input &&
279
+ typeof input.kind === "string" &&
280
+ Object.hasOwn(OBSERVABLE_REFERENCES, input.kind)
281
+ )
282
+ }
283
+
284
+ function observe(input: ObservableReference): ObserveGrant {
285
+ const value: unknown = input
286
+
287
+ // Older role files pass the string form. Point them at the reference instead of only rejecting
288
+ // the input.
289
+ if (value === "logs") {
290
+ throw new SecurityValidationError(
291
+ '[Sixb] can.observe("logs") is now can.observe(project.logs), imported from "@sixb/core".'
292
+ )
272
293
  }
273
- const target = input === "logs" ? "logs" : "aiUsage"
274
- return {
275
- kind: "grant",
276
- capability: "observe",
277
- target,
278
- selection: { all: false, ids: [target] },
294
+
295
+ if (!isObservableReference(value)) {
296
+ const accepted = Object.values(OBSERVABLE_REFERENCES).join(" or ")
297
+ throw new SecurityValidationError(`[Sixb] can.observe accepts ${accepted}.`)
279
298
  }
299
+
300
+ return { kind: "grant", capability: "observe", target: value.kind }
280
301
  }
281
302
 
282
303
  function manage(input: GrantInput<ConnectorDefinition, "connector">): ManageGrant<"connector">
@@ -285,12 +306,7 @@ function manage(
285
306
  input: GrantInput<ConnectorDefinition, "connector"> | AgentUsageReference
286
307
  ): ManageGrant {
287
308
  if (isAgentUsageReference(input)) {
288
- return {
289
- kind: "grant",
290
- capability: "manage",
291
- target: "aiUsage",
292
- selection: { all: false, ids: ["aiUsage"] },
293
- }
309
+ return { kind: "grant", capability: "manage", target: "aiUsage" }
294
310
  }
295
311
  return {
296
312
  kind: "grant",
@@ -301,7 +317,6 @@ function manage(
301
317
  }
302
318
 
303
319
  export const can = {
304
- access,
305
320
  view,
306
321
  edit,
307
322
  append,
@@ -1,4 +1,3 @@
1
- export { applications } from "./applications"
2
1
  export type {
3
2
  DefineGroupOptions,
4
3
  DefineMarkingOptions,
@@ -17,13 +16,12 @@ export {
17
16
  missingMembershipGroupIds,
18
17
  resolveMembershipPolicyScope,
19
18
  } from "./membership-policies"
19
+ export { project } from "./project"
20
20
  export type { SecurityDefinitionCatalog, SecurityRegistryOptions } from "./registry"
21
21
  export { SecurityRegistry } from "./registry"
22
22
  export type {
23
- AccessGrant,
24
23
  AgentRunGrant,
25
24
  AppendGrant,
26
- ApplicationDefinition,
27
25
  ApplyGrant,
28
26
  EditGrant,
29
27
  GrantCapability,
@@ -37,6 +35,8 @@ export type {
37
35
  MembershipPolicyDefinition,
38
36
  ObserveGrant,
39
37
  ObserveGrantTarget,
38
+ ProjectReference,
39
+ ProjectSurfaceReference,
40
40
  RedactionReason,
41
41
  Redactions,
42
42
  RegisteredSecurityDefinitions,
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Marking plumbing for this repo's hosts and workers, not for app authors.
3
+ *
4
+ * `checkPipelineMarkings` is the SQL preflight the API server and CLI run before serving. The
5
+ * projection worker shares the host's version classifier with `shareDatasetVersionMarkings`, then
6
+ * classifies each pinned version and refuses one with `assertProjectionVersionMarkings`. The API
7
+ * server reads the versions projections applied ahead of its first request with
8
+ * `warmAppliedMarkings`, and the CLI reports what they add with `getAppliedMarkings`.
9
+ */
10
+ export { getAppliedMarkings, warmAppliedMarkings } from "./applied-markings-host"
11
+ export type {
12
+ DatasetVersionMarkings,
13
+ VersionClassification,
14
+ VersionColumnMarkings,
15
+ } from "./dataset-version-markings"
16
+ export { getDatasetVersionMarkings, shareDatasetVersionMarkings } from "./dataset-version-markings"
17
+ export { checkPipelineMarkings } from "./pipeline-markings"
18
+ export { assertProjectionVersionMarkings } from "./projection-markings"
@@ -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
+ }