@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
@@ -5,6 +5,7 @@ import { getDatasetRowValidationFailure } from "../datasets/validation"
5
5
  import { resolveDatasetChangeColumns } from "./changes"
6
6
  import { mergeStrictDatasetDefinition } from "./definition-updates"
7
7
  import { LakeConcurrencyError, LakeStorageError } from "./errors"
8
+ import { lineageAtCommit } from "./lineage"
8
9
  import type {
9
10
  BeginDatasetMergeInput,
10
11
  CommitDatasetMergeInput,
@@ -42,7 +43,7 @@ import type {
42
43
  ReadDatasetChangesInput,
43
44
  ReadDatasetRowsInput,
44
45
  } from "./types"
45
- import { hasDatasetInputChanges } from "./version-inputs"
46
+ import { hasDatasetProvenanceChanges } from "./version-inputs"
46
47
 
47
48
  function cloneDatasetDefinition(definition: DatasetDefinition): DatasetDefinition {
48
49
  return structuredClone(definition)
@@ -230,6 +231,7 @@ class InMemoryLakeMergeSession implements LakeMergeSession {
230
231
  }
231
232
 
232
233
  export class InMemoryLakeStorage implements LakeStorage {
234
+ readonly recordsLineage = true
233
235
  private readonly datasets = new Map<string, DatasetDefinition>()
234
236
  private readonly versionsByDataset = new Map<string, DatasetVersion[]>()
235
237
  private readonly rowsByVersionId = new Map<string, readonly DatasetRow[]>()
@@ -568,6 +570,12 @@ export class InMemoryLakeStorage implements LakeStorage {
568
570
 
569
571
  const visibleRows = [...nextByKey.values()]
570
572
  const versionId = `ver_${randomUUID()}`
573
+ const lineage = lineageAtCommit({
574
+ mode: "merge",
575
+ schema: definition.schema,
576
+ producer: options.merge.producer,
577
+ parent: latestVersion,
578
+ })
571
579
  const version: DatasetVersion = {
572
580
  datasetId: options.merge.dataset.id,
573
581
  versionId,
@@ -577,6 +585,7 @@ export class InMemoryLakeStorage implements LakeStorage {
577
585
  schema: definition.schema,
578
586
  producer: options.merge.producer ? structuredClone(options.merge.producer) : undefined,
579
587
  inputs: options.merge.inputs ? structuredClone(options.merge.inputs) : undefined,
588
+ ...(lineage && { lineage }),
580
589
  rowCount: visibleRows.length,
581
590
  sizeBytes: new TextEncoder().encode(
582
591
  visibleRows.map((row) => JSON.stringify(row)).join("\n")
@@ -623,11 +632,24 @@ export class InMemoryLakeStorage implements LakeStorage {
623
632
 
624
633
  this.assertKeyedWriteIsUnique(mode, options.rows, latestVersion, definition)
625
634
 
635
+ const lineage = lineageAtCommit({
636
+ mode,
637
+ schema: definition.schema,
638
+ producer: options.write.producer,
639
+ written: options.write.lineage,
640
+ parent: latestVersion,
641
+ })
642
+
626
643
  // Content-identical snapshots and empty appends reuse the latest version
627
- // unless explicitly supplied input lineage has changed.
644
+ // unless explicitly supplied provenance has changed.
628
645
  if (
629
646
  latestVersion &&
630
- !hasDatasetInputChanges(latestVersion.inputs, options.write.inputs) &&
647
+ !hasDatasetProvenanceChanges(latestVersion, {
648
+ ...options.write,
649
+ datasetId: definition.id,
650
+ schema: definition.schema,
651
+ lineage,
652
+ }) &&
631
653
  this.isUnchangedWrite(mode, latestVersion, options.rows, definition.schema)
632
654
  ) {
633
655
  return { ...latestVersion, outcome: "unchanged" }
@@ -652,6 +674,7 @@ export class InMemoryLakeStorage implements LakeStorage {
652
674
  schema: definition.schema,
653
675
  producer: options.write.producer ? structuredClone(options.write.producer) : undefined,
654
676
  inputs: options.write.inputs ? structuredClone(options.write.inputs) : undefined,
677
+ ...(lineage && { lineage }),
655
678
  rowCount: visibleRows.length,
656
679
  sizeBytes,
657
680
  }
@@ -21,6 +21,8 @@ export {
21
21
  } from "./definition-updates"
22
22
  export { LakeConcurrencyError, LakeStorageError } from "./errors"
23
23
  export { InMemoryLakeStorage } from "./in-memory"
24
+ export type { LineageAtCommitInput } from "./lineage"
25
+ export { lineageAtCommit, resolveStepLineage } from "./lineage"
24
26
  export type {
25
27
  BeginDatasetMergeInput,
26
28
  CommitDatasetMergeInput,
@@ -41,13 +43,18 @@ export {
41
43
  reconcileDatasetSequences,
42
44
  } from "./source-ordering"
43
45
  export type {
46
+ AnalyzeSqlTransformInput,
47
+ AnalyzeSqlTransformSource,
44
48
  ExecuteSqlTransformInput,
45
49
  LakeSqlExecutor,
46
50
  LakeSqlTransformCapabilities,
47
51
  LakeStorageWithSql,
48
52
  PreviewSqlTransformInput,
49
53
  SqlDialect,
54
+ SqlTransformAnalysis,
50
55
  SqlTransformBody,
56
+ SqlTransformColumnRef,
57
+ SqlTransformLineage,
51
58
  SqlTransformRelation,
52
59
  SqlTransformSource,
53
60
  } from "./sql-transforms"
@@ -56,11 +63,15 @@ export type {
56
63
  CommitDatasetWriteInput,
57
64
  DatasetCatalogState,
58
65
  DatasetChanges,
66
+ DatasetColumnLineage,
67
+ DatasetColumnRef,
59
68
  DatasetLatestVersionSummary,
60
69
  DatasetProducer,
61
70
  DatasetRow,
62
71
  DatasetRowChange,
72
+ DatasetUnknownLineage,
63
73
  DatasetVersion,
74
+ DatasetVersionLineage,
64
75
  DatasetVersionMode,
65
76
  DatasetVersionRef,
66
77
  DatasetWriteCommitResult,
@@ -74,4 +85,5 @@ export type {
74
85
  ReadDatasetChangesInput,
75
86
  ReadDatasetRowsInput,
76
87
  } from "./types"
77
- export { hasDatasetInputChanges } from "./version-inputs"
88
+ export type { DatasetCommitProvenance } from "./version-inputs"
89
+ export { hasDatasetProvenanceChanges } from "./version-inputs"
@@ -0,0 +1,385 @@
1
+ import type { DatasetSchema } from "../datasets"
2
+ import { LakeStorageError } from "./errors"
3
+ import type {
4
+ DatasetColumnLineage,
5
+ DatasetColumnRef,
6
+ DatasetProducer,
7
+ DatasetUnknownLineage,
8
+ DatasetVersion,
9
+ DatasetVersionLineage,
10
+ DatasetVersionMode,
11
+ } from "./types"
12
+
13
+ /**
14
+ * Resolved column lineage: each dataset version records every dataset column its values come
15
+ * from, across every upstream step and every row it keeps from its parent. Classifying a version
16
+ * reads only its own record, so the lake may drop older versions without changing any markings.
17
+ *
18
+ * Writers resolve the lineage of the rows they add (`resolveStepLineage`), and providers merge in
19
+ * what the version keeps of its parent when they commit it (`lineageAtCommit`).
20
+ *
21
+ * A version that records no lineage was written before Sixb recorded it, or by a pipeline write
22
+ * that passed none. Such a pipeline version could hold anything; any other one holds only what its
23
+ * own columns declare. A version computed from, or keeping rows of, a version whose lineage is
24
+ * unknown records `{ unknown }`, naming where it was lost.
25
+ */
26
+
27
+ /** The value dependencies of one column, or undefined when the lineage does not list it. */
28
+ export function lineageColumn(
29
+ lineage: DatasetColumnLineage,
30
+ column: string
31
+ ): readonly DatasetColumnRef[] | undefined {
32
+ // An own-property check: a column named like an Object.prototype member is not listed.
33
+ return Object.hasOwn(lineage.columns, column) ? lineage.columns[column] : undefined
34
+ }
35
+
36
+ export function isUnknownLineage(lineage: DatasetVersionLineage): lineage is DatasetUnknownLineage {
37
+ return "unknown" in lineage
38
+ }
39
+
40
+ /** What a version records about its lineage, before or after it is committed. */
41
+ export type LineageRecord = Pick<
42
+ DatasetVersion,
43
+ "datasetId" | "schema" | "producer" | "lineage"
44
+ > & {
45
+ readonly versionId?: string
46
+ }
47
+
48
+ /**
49
+ * The lineage a version stands for, with the rules for versions that record none applied. A
50
+ * stored value that is not a lineage is unknown: reading it as absent could declassify it.
51
+ *
52
+ * Only a provider that declares `recordsLineage` stores lineage on every version it commits, so
53
+ * only its versions without lineage are known to predate it. Any other provider may have dropped
54
+ * the lineage it was given, and a version of it that records none is unknown, whatever wrote it.
55
+ *
56
+ * Reading no other version is what makes the rules approximate for versions written before
57
+ * Sixb recorded lineage: one written outside a pipeline (a sync, an ingestion, a schema change)
58
+ * on top of a pipeline version holds that version's rows, yet reads as its own columns only.
59
+ * Treating every such version as unknown instead would classify every older sync dataset with
60
+ * every marking, for good, since a merge keeps its parent's rows.
61
+ */
62
+ export function versionLineage(
63
+ version: LineageRecord,
64
+ provider: { readonly recordsLineage?: boolean }
65
+ ): DatasetVersionLineage {
66
+ const stored: unknown = version.lineage
67
+ const subject =
68
+ version.versionId === undefined
69
+ ? `a version of '${version.datasetId}'`
70
+ : `version '${version.versionId}' of '${version.datasetId}'`
71
+
72
+ if (stored === undefined) {
73
+ if (provider.recordsLineage !== true) {
74
+ return {
75
+ unknown: `${subject} recorded no column lineage, and its lake provider does not declare that it records lineage`,
76
+ }
77
+ }
78
+
79
+ return version.producer?.kind === "pipeline"
80
+ ? { unknown: `${subject} recorded no column lineage` }
81
+ : ownColumns(version.schema)
82
+ }
83
+
84
+ return isDatasetVersionLineage(stored)
85
+ ? stored
86
+ : { unknown: `${subject} records a column lineage Sixb cannot read` }
87
+ }
88
+
89
+ /**
90
+ * What a provider committing a version, or a pipeline step resolving the lineage it passes to one,
91
+ * reads its own versions as. Whatever a provider that does not record lineage commits stays
92
+ * without lineage, so it is classified as unknown regardless.
93
+ */
94
+ export const COMMITTING_PROVIDER = { recordsLineage: true } as const
95
+
96
+ export interface LineageAtCommitInput {
97
+ readonly mode: DatasetVersionMode
98
+ /** Columns of the version being committed. */
99
+ readonly schema: DatasetSchema
100
+ readonly producer?: DatasetProducer
101
+ /** The lineage the writer passed, as `BeginDatasetWriteInput.lineage`. */
102
+ readonly written?: DatasetVersionLineage
103
+ /**
104
+ * The dataset's latest version, which an append, a merge, or a schema change keeps the rows of.
105
+ * A snapshot replaces it, so it is ignored for one.
106
+ */
107
+ readonly parent?: Pick<
108
+ DatasetVersion,
109
+ "datasetId" | "versionId" | "schema" | "producer" | "lineage"
110
+ > | null
111
+ }
112
+
113
+ /**
114
+ * The lineage a provider stores on a version it commits. Every provider calls it, with the latest
115
+ * version as `parent`, before it decides whether the commit changes anything
116
+ * (`hasDatasetProvenanceChanges`), and stores the result as `DatasetVersion.lineage`.
117
+ *
118
+ * - A snapshot records what was written.
119
+ * - An append or a merge records what was written and what its parent records, column by column.
120
+ * - A schema change records its parent's lineage. A column it adds holds no value yet.
121
+ *
122
+ * Without written lineage, a pipeline write records none, which classifies the version with every
123
+ * marking; any other write depends on its own columns only. Returns undefined when nothing is to
124
+ * be stored.
125
+ */
126
+ export function lineageAtCommit(input: LineageAtCommitInput): DatasetVersionLineage | undefined {
127
+ const parent = input.mode === "snapshot" ? undefined : (input.parent ?? undefined)
128
+
129
+ if (input.mode === "schema") {
130
+ return parent ? keptLineage(parent, input.schema) : ownColumns(input.schema)
131
+ }
132
+
133
+ const written = writtenLineage(input)
134
+ if (!written || isUnknownLineage(written) || !parent) return written
135
+
136
+ const kept = keptLineage(parent, input.schema)
137
+ if (isUnknownLineage(kept)) return kept
138
+
139
+ return canonicalLineage(
140
+ [...written.rows, ...kept.rows],
141
+ input.schema.columns.flatMap(({ name }) => {
142
+ const writtenColumn = lineageColumn(written, name)
143
+ const keptColumn = lineageColumn(kept, name)
144
+ return writtenColumn && keptColumn ? [[name, [...writtenColumn, ...keptColumn]] as const] : []
145
+ })
146
+ )
147
+ }
148
+
149
+ /**
150
+ * Lineage of a pipeline step's output across every upstream hop: each column a step reads stands
151
+ * for itself and for everything the input version it read records for it.
152
+ *
153
+ * Every output column also depends on the rows of every input version the step read, whether or
154
+ * not it names a column of that input: `SELECT count(*) FROM rich`, or a constant selected from
155
+ * it, reveals which rows `rich` holds, and so what decided them upstream.
156
+ *
157
+ * `step` is the step's own lineage, whose refs name columns of `inputs`, the input versions the
158
+ * step read. The pipeline worker passes it for `run` steps; a SQL provider passes it for the SQL it
159
+ * executes. The result is unknown when an input's lineage is unknown, or when a column it depends
160
+ * on comes from a dataset none of `inputs` is a version of.
161
+ */
162
+ export function resolveStepLineage(
163
+ step: DatasetColumnLineage,
164
+ inputs: readonly DatasetVersion[]
165
+ ): DatasetVersionLineage {
166
+ if (!isDatasetColumnLineage(step)) {
167
+ throw new LakeStorageError("[SixbLake] A pipeline step's column lineage is malformed.")
168
+ }
169
+
170
+ const inputsByDataset = new Map<string, DatasetVersion[]>()
171
+ for (const input of inputs) {
172
+ const versions = inputsByDataset.get(input.datasetId)
173
+ if (versions) versions.push(input)
174
+ else inputsByDataset.set(input.datasetId, [input])
175
+ }
176
+
177
+ const lineages = new Map<DatasetVersion, DatasetVersionLineage>()
178
+ const lineageOf = (version: DatasetVersion) => {
179
+ let lineage = lineages.get(version)
180
+ if (!lineage) {
181
+ lineage = versionLineage(version, COMMITTING_PROVIDER)
182
+ lineages.set(version, lineage)
183
+ }
184
+ return lineage
185
+ }
186
+
187
+ const resolved = new Map<string, readonly DatasetColumnRef[] | { readonly unknown: string }>()
188
+ /** The ref and everything the input versions record for it, or why that is unknown. */
189
+ const resolve = (ref: DatasetColumnRef) => {
190
+ const key = refKey(ref)
191
+ let result = resolved.get(key)
192
+ if (!result) {
193
+ result = resolveRef(ref, inputsByDataset.get(ref.datasetId), lineageOf)
194
+ resolved.set(key, result)
195
+ }
196
+ return result
197
+ }
198
+
199
+ const expand = (refs: readonly DatasetColumnRef[]) => {
200
+ const expanded: DatasetColumnRef[] = []
201
+ for (const ref of refs) {
202
+ const result = resolve(ref)
203
+ if ("unknown" in result) return result
204
+ expanded.push(...result)
205
+ }
206
+ return expanded
207
+ }
208
+
209
+ const rows = expand(step.rows)
210
+ if ("unknown" in rows) return rows
211
+
212
+ for (const input of inputs) {
213
+ const lineage = lineageOf(input)
214
+ if (isUnknownLineage(lineage)) return lineage
215
+ rows.push(...lineage.rows)
216
+ }
217
+
218
+ const columns: (readonly [string, readonly DatasetColumnRef[]])[] = []
219
+ for (const [column, refs] of Object.entries(step.columns)) {
220
+ const values = expand(refs)
221
+ if ("unknown" in values) return values
222
+ columns.push([column, values])
223
+ }
224
+
225
+ return canonicalLineage(rows, columns)
226
+ }
227
+
228
+ function resolveRef(
229
+ ref: DatasetColumnRef,
230
+ versions: readonly DatasetVersion[] | undefined,
231
+ lineageOf: (version: DatasetVersion) => DatasetVersionLineage
232
+ ): readonly DatasetColumnRef[] | { readonly unknown: string } {
233
+ if (!versions) {
234
+ return { unknown: `a pipeline step read '${ref.datasetId}' without recording which version` }
235
+ }
236
+
237
+ const refs = [ref]
238
+ for (const version of versions) {
239
+ const lineage = lineageOf(version)
240
+ if (isUnknownLineage(lineage)) return lineage
241
+
242
+ const values = lineageColumn(lineage, ref.column)
243
+ // A column the input version does not have holds no value; one it does not list, anything.
244
+ if (!values && version.schema.columns.some(({ name }) => name === ref.column)) {
245
+ const subject = `version '${version.versionId}' of '${version.datasetId}'`
246
+ return { unknown: `${subject} recorded no lineage for column '${ref.column}'` }
247
+ }
248
+
249
+ // The input's rows are every output column's dependencies already.
250
+ refs.push(...(values ?? []))
251
+ }
252
+
253
+ return refs
254
+ }
255
+
256
+ /**
257
+ * Whether two lineages classify alike: the same dependencies per column, whatever their order
258
+ * and repetition, or both unknown.
259
+ */
260
+ export function sameLineage(left: DatasetVersionLineage, right: DatasetVersionLineage): boolean {
261
+ return lineageKey(left) === lineageKey(right)
262
+ }
263
+
264
+ function lineageKey(lineage: DatasetVersionLineage): string {
265
+ if (isUnknownLineage(lineage)) return "unknown"
266
+ const canonical = canonicalLineage(lineage.rows, Object.entries(lineage.columns))
267
+ return JSON.stringify([canonical.rows, Object.entries(canonical.columns)])
268
+ }
269
+
270
+ /** What the version keeps of its parent, restricted to the columns it has. */
271
+ function keptLineage(parent: LineageRecord, schema: DatasetSchema): DatasetVersionLineage {
272
+ const lineage = versionLineage(parent, COMMITTING_PROVIDER)
273
+ if (isUnknownLineage(lineage)) return lineage
274
+
275
+ const parentColumns = new Set(parent.schema.columns.map(({ name }) => name))
276
+ return canonicalLineage(
277
+ lineage.rows,
278
+ schema.columns.flatMap(({ name }) => {
279
+ const values = lineageColumn(lineage, name)
280
+ // A column the parent does not have holds no value in the rows it keeps.
281
+ if (values) return [[name, values] as const]
282
+ return parentColumns.has(name) ? [] : [[name, []] as const]
283
+ })
284
+ )
285
+ }
286
+
287
+ function writtenLineage(input: LineageAtCommitInput): DatasetVersionLineage | undefined {
288
+ const { written } = input
289
+
290
+ if (written === undefined) {
291
+ return input.producer?.kind === "pipeline" ? undefined : ownColumns(input.schema)
292
+ }
293
+ if (!isDatasetVersionLineage(written)) {
294
+ throw new LakeStorageError("[SixbLake] The column lineage passed to the write is malformed.")
295
+ }
296
+ if (isUnknownLineage(written)) return { unknown: written.unknown }
297
+
298
+ return canonicalLineage(
299
+ written.rows,
300
+ input.schema.columns.flatMap(({ name }) => {
301
+ const values = lineageColumn(written, name)
302
+ return values ? [[name, values] as const] : []
303
+ })
304
+ )
305
+ }
306
+
307
+ function ownColumns(schema: DatasetSchema): DatasetColumnLineage {
308
+ return { rows: [], columns: Object.fromEntries(schema.columns.map(({ name }) => [name, []])) }
309
+ }
310
+
311
+ /**
312
+ * Refs deduplicated and sorted, columns sorted: equal lineages store and compare alike.
313
+ *
314
+ * Every column depends on `rows`, so a column lists only what it depends on beyond them. Without
315
+ * this, each hop would copy the rows of every input into every column again.
316
+ */
317
+ function canonicalLineage(
318
+ rows: readonly DatasetColumnRef[],
319
+ columns: Iterable<readonly [string, readonly DatasetColumnRef[]]>
320
+ ): DatasetColumnLineage {
321
+ const canonicalRows = canonicalRefs(rows)
322
+ const inRows = new Set(canonicalRows.map(refKey))
323
+ const sortedColumns = [...columns].sort(([left], [right]) => compare(left, right))
324
+
325
+ return {
326
+ rows: canonicalRows,
327
+ columns: Object.fromEntries(
328
+ sortedColumns.map(([column, refs]) => [column, canonicalRefs(refs, inRows)])
329
+ ),
330
+ }
331
+ }
332
+
333
+ function canonicalRefs(
334
+ refs: readonly DatasetColumnRef[],
335
+ exclude?: ReadonlySet<string>
336
+ ): readonly DatasetColumnRef[] {
337
+ if (refs.length === 0) return []
338
+
339
+ const unique = new Map<string, DatasetColumnRef>()
340
+ for (const { datasetId, column } of refs) {
341
+ const key = refKey({ datasetId, column })
342
+ if (!exclude?.has(key)) unique.set(key, { datasetId, column })
343
+ }
344
+
345
+ return [...unique.entries()].sort(([left], [right]) => compare(left, right)).map(([, ref]) => ref)
346
+ }
347
+
348
+ function refKey(ref: DatasetColumnRef): string {
349
+ return `${ref.datasetId}\u0000${ref.column}`
350
+ }
351
+
352
+ function compare(left: string, right: string): number {
353
+ return left < right ? -1 : left > right ? 1 : 0
354
+ }
355
+
356
+ function isDatasetVersionLineage(value: unknown): value is DatasetVersionLineage {
357
+ if (typeof value !== "object" || value === null) return false
358
+ if ("unknown" in value) return typeof value.unknown === "string"
359
+ return isDatasetColumnLineage(value)
360
+ }
361
+
362
+ function isDatasetColumnLineage(value: unknown): value is DatasetColumnLineage {
363
+ if (typeof value !== "object" || value === null) return false
364
+ if (!("rows" in value) || !isRefs(value.rows)) return false
365
+ if (!("columns" in value)) return false
366
+
367
+ const { columns } = value
368
+ if (typeof columns !== "object" || columns === null || Array.isArray(columns)) return false
369
+ return Object.values(columns).every(isRefs)
370
+ }
371
+
372
+ function isRefs(value: unknown): value is readonly DatasetColumnRef[] {
373
+ return (
374
+ Array.isArray(value) &&
375
+ value.every(
376
+ (ref: unknown) =>
377
+ typeof ref === "object" &&
378
+ ref !== null &&
379
+ "datasetId" in ref &&
380
+ typeof ref.datasetId === "string" &&
381
+ "column" in ref &&
382
+ typeof ref.column === "string"
383
+ )
384
+ )
385
+ }
@@ -24,7 +24,21 @@ export interface LakeSqlExecutor<TSqlDialect extends SqlDialect = SqlDialect> {
24
24
  readonly capabilities: LakeSqlTransformCapabilities
25
25
 
26
26
  preview(input: PreviewSqlTransformInput<TSqlDialect>): AsyncIterable<DatasetRow>
27
+ /**
28
+ * Records the resolved lineage of the executed SQL on the committed version, as the writer of a
29
+ * run step passes `BeginDatasetWriteInput.lineage`: the provider analyzes the SQL it executes
30
+ * (as `analyze`), maps that lineage through the source versions it read with
31
+ * `resolveStepLineage`, and stores what `lineageAtCommit` returns for it, which merges in what an
32
+ * append keeps of its parent. SQL it cannot analyze exactly but that reads only its sources
33
+ * depends on every column it reads, as a run step does. Otherwise it passes no lineage, and the
34
+ * version is classified with every marking.
35
+ */
27
36
  execute(input: ExecuteSqlTransformInput<TSqlDialect>): Promise<DatasetWriteCommitResult>
37
+ /**
38
+ * Column lineage of a transform, bound against the sources' column schemas without reading any
39
+ * data. A provider without it cannot run SQL over marked columns.
40
+ */
41
+ analyze?(input: AnalyzeSqlTransformInput<TSqlDialect>): Promise<SqlTransformAnalysis>
28
42
  }
29
43
 
30
44
  export interface LakeSqlTransformCapabilities {
@@ -34,6 +48,7 @@ export interface LakeSqlTransformCapabilities {
34
48
  }
35
49
 
36
50
  export interface ExecuteSqlTransformInput<TSqlDialect extends SqlDialect = SqlDialect> {
51
+ /** The source versions read. The lineage the provider records is resolved through them. */
37
52
  readonly sources: Readonly<Record<string, SqlTransformSource>>
38
53
  readonly sql: SqlTransformBody<TSqlDialect>
39
54
  readonly target: DatasetDefinition
@@ -53,6 +68,36 @@ export interface PreviewSqlTransformInput<TSqlDialect extends SqlDialect = SqlDi
53
68
  export interface SqlTransformSource {
54
69
  readonly dataset: DatasetDefinition
55
70
  readonly versionId?: string
71
+ /** Columns the transform may read, in order. Every column of the dataset when omitted. */
72
+ readonly columns?: readonly string[]
73
+ }
74
+
75
+ export interface AnalyzeSqlTransformInput<TSqlDialect extends SqlDialect = SqlDialect> {
76
+ readonly sources: Readonly<Record<string, AnalyzeSqlTransformSource>>
77
+ readonly sql: SqlTransformBody<TSqlDialect>
78
+ }
79
+
80
+ export interface AnalyzeSqlTransformSource {
81
+ readonly dataset: DatasetDefinition
82
+ /** Columns the transform may read, in order. Every column of the dataset when omitted. */
83
+ readonly columns?: readonly string[]
84
+ }
85
+
86
+ export type SqlTransformAnalysis =
87
+ | { readonly supported: true; readonly lineage: SqlTransformLineage }
88
+ /** The provider could not analyze this SQL exactly; `reason` names the construct. */
89
+ | { readonly supported: false; readonly reason: string }
90
+
91
+ /** Lineage of one transform, by source name. Same semantics as `DatasetColumnLineage`. */
92
+ export interface SqlTransformLineage {
93
+ readonly rows: readonly SqlTransformColumnRef[]
94
+ readonly columns: Readonly<Record<string, readonly SqlTransformColumnRef[]>>
95
+ }
96
+
97
+ export interface SqlTransformColumnRef {
98
+ /** Source name, as passed in `sources`. */
99
+ readonly source: string
100
+ readonly column: string
56
101
  }
57
102
 
58
103
  export interface SqlTransformRelation {
@@ -26,6 +26,37 @@ export interface DatasetProducer {
26
26
  readonly stepId?: string
27
27
  }
28
28
 
29
+ /** A column of a dataset, by dataset id and column name. */
30
+ export interface DatasetColumnRef {
31
+ readonly datasetId: string
32
+ readonly column: string
33
+ }
34
+
35
+ /**
36
+ * Which dataset columns the values of a version, or of one transform, come from.
37
+ *
38
+ * A column depends on the columns `rows` lists and on the ones `columns` lists for it. A column
39
+ * missing from `columns` could depend on anything.
40
+ */
41
+ export interface DatasetColumnLineage {
42
+ /** Columns that decide which rows exist or their order. Every column depends on them. */
43
+ readonly rows: readonly DatasetColumnRef[]
44
+ /** Columns whose values flow into each column. Lists every column. */
45
+ readonly columns: Readonly<Record<string, readonly DatasetColumnRef[]>>
46
+ }
47
+
48
+ /**
49
+ * A version whose rows come, at least in part, from a version whose lineage is unknown, such as
50
+ * a pipeline version written before Sixb recorded lineage. Every column could hold anything.
51
+ */
52
+ export interface DatasetUnknownLineage {
53
+ /** Names the version or write the lineage was lost at, for diagnostics. */
54
+ readonly unknown: string
55
+ }
56
+
57
+ /** What a dataset version records about where everything it holds comes from. */
58
+ export type DatasetVersionLineage = DatasetColumnLineage | DatasetUnknownLineage
59
+
29
60
  export interface DatasetVersion {
30
61
  readonly datasetId: string
31
62
  readonly versionId: string
@@ -35,6 +66,16 @@ export interface DatasetVersion {
35
66
  readonly schema: DatasetSchema
36
67
  readonly producer?: DatasetProducer
37
68
  readonly inputs?: readonly DatasetVersionRef[]
69
+ /**
70
+ * Every dataset column the values of this version come from, across every upstream step, and
71
+ * including the rows it keeps from its parent. Markings are read from it, so classifying a
72
+ * version reads no other version.
73
+ *
74
+ * Providers store the value `lineageAtCommit` returns, and return it as stored: Sixb validates
75
+ * it when it reads it. Absent on a version written before its provider recorded it
76
+ * (`LakeStorage.recordsLineage`), and on a pipeline version whose writer passed none.
77
+ */
78
+ readonly lineage?: DatasetVersionLineage
38
79
  readonly rowCount?: number
39
80
  readonly sizeBytes?: number
40
81
  }
@@ -76,6 +117,13 @@ export interface BeginDatasetWriteInput {
76
117
  readonly mode?: DatasetWriteMode
77
118
  readonly producer?: DatasetProducer
78
119
  readonly inputs?: readonly DatasetVersionRef[]
120
+ /**
121
+ * The resolved lineage of the rows this write adds: for a pipeline step, its own lineage mapped
122
+ * through its input versions with `resolveStepLineage`. The provider merges in what the version
123
+ * keeps of its parent at commit (`lineageAtCommit`). A pipeline write without it is classified
124
+ * with every marking; any other write without it depends on its own columns only.
125
+ */
126
+ readonly lineage?: DatasetVersionLineage
79
127
  }
80
128
 
81
129
  export interface ReadDatasetRowsInput {
@@ -137,7 +185,7 @@ export interface DatasetWriteCommitResult extends DatasetVersion {
137
185
  * Whether this operation created the returned version or reused the
138
186
  * unchanged latest version. When a latest version exists, providers must
139
187
  * report `unchanged` and reuse it for commits that change neither visible
140
- * dataset content nor explicitly supplied input lineage: a snapshot whose
188
+ * dataset content nor provenance (`hasDatasetProvenanceChanges`): a snapshot whose
141
189
  * rows equal the latest visible rows
142
190
  * (order-insensitive, with equal duplicate counts), or an append of zero
143
191
  * rows. Without a latest version, an empty snapshot or append still creates
@@ -156,6 +204,16 @@ export interface LakeWriteSession {
156
204
 
157
205
  export interface LakeStorage {
158
206
  readonly standard?: LakeStandardDescriptor
207
+ /**
208
+ * Whether this provider stores `DatasetVersion.lineage` on every version it commits, as
209
+ * `lineageAtCommit` returns it.
210
+ *
211
+ * A version without lineage from such a provider was committed before it recorded lineage: a
212
+ * pipeline version could hold anything, any other version what its own columns declare. Without
213
+ * this declaration, every version without lineage could hold anything, so a provider that drops
214
+ * the lineage it is given cannot declassify the rows a merge keeps of a pipeline version.
215
+ */
216
+ readonly recordsLineage?: boolean
159
217
 
160
218
  /**
161
219
  * Read-only preflight for hosts that want to fail before serving traffic.