@sixb/core 0.1.20 → 0.1.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (681) hide show
  1. package/dist/actions/execution.d.ts.map +1 -1
  2. package/dist/actions/index.js +54 -47
  3. package/dist/actions/index.js.map +1 -1
  4. package/dist/actions/request.d.ts.map +1 -1
  5. package/dist/actions/run-authorization.d.ts +9 -0
  6. package/dist/actions/run-authorization.d.ts.map +1 -1
  7. package/dist/activity/connection.d.ts +62 -0
  8. package/dist/activity/connection.d.ts.map +1 -0
  9. package/dist/activity/device.d.ts +8 -0
  10. package/dist/activity/device.d.ts.map +1 -0
  11. package/dist/activity/execution.d.ts +48 -0
  12. package/dist/activity/execution.d.ts.map +1 -0
  13. package/dist/activity/service.d.ts +79 -0
  14. package/dist/activity/service.d.ts.map +1 -0
  15. package/dist/activity/shares.d.ts +24 -0
  16. package/dist/activity/shares.d.ts.map +1 -0
  17. package/dist/activity/timeline.d.ts +96 -0
  18. package/dist/activity/timeline.d.ts.map +1 -0
  19. package/dist/agents/index.d.ts +2 -1
  20. package/dist/agents/index.d.ts.map +1 -1
  21. package/dist/agents/index.js +63 -50
  22. package/dist/agents/index.js.map +1 -1
  23. package/dist/agents/request.d.ts.map +1 -1
  24. package/dist/agents/skills.d.ts.map +1 -1
  25. package/dist/agents/streams/index.js +3 -3
  26. package/dist/agents/streams/internal.js +3 -3
  27. package/dist/agents/types.d.ts +8 -8
  28. package/dist/agents/types.d.ts.map +1 -1
  29. package/dist/agents/validation.d.ts +1 -1
  30. package/dist/agents/validation.d.ts.map +1 -1
  31. package/dist/artifacts/address.d.ts +48 -0
  32. package/dist/artifacts/address.d.ts.map +1 -0
  33. package/dist/artifacts/csv.d.ts +22 -0
  34. package/dist/artifacts/csv.d.ts.map +1 -0
  35. package/dist/artifacts/errors.d.ts +11 -0
  36. package/dist/artifacts/errors.d.ts.map +1 -0
  37. package/dist/artifacts/execution.d.ts +43 -0
  38. package/dist/artifacts/execution.d.ts.map +1 -0
  39. package/dist/artifacts/frames/assets.d.ts +28 -0
  40. package/dist/artifacts/frames/assets.d.ts.map +1 -0
  41. package/dist/artifacts/frames/grants.d.ts +37 -0
  42. package/dist/artifacts/frames/grants.d.ts.map +1 -0
  43. package/dist/artifacts/frames/index.d.ts +10 -0
  44. package/dist/artifacts/frames/index.d.ts.map +1 -0
  45. package/dist/artifacts/frames/index.js +892 -0
  46. package/dist/artifacts/frames/index.js.map +14 -0
  47. package/dist/artifacts/frames/kit.d.ts +66 -0
  48. package/dist/artifacts/frames/kit.d.ts.map +1 -0
  49. package/dist/artifacts/frames/probe.d.ts +41 -0
  50. package/dist/artifacts/frames/probe.d.ts.map +1 -0
  51. package/dist/artifacts/frames/protocol.d.ts +98 -0
  52. package/dist/artifacts/frames/protocol.d.ts.map +1 -0
  53. package/dist/artifacts/frames/runtime.d.ts +13 -0
  54. package/dist/artifacts/frames/runtime.d.ts.map +1 -0
  55. package/dist/artifacts/html.d.ts +6 -0
  56. package/dist/artifacts/html.d.ts.map +1 -0
  57. package/dist/artifacts/ids.d.ts +5 -0
  58. package/dist/artifacts/ids.d.ts.map +1 -0
  59. package/dist/artifacts/index.d.ts +16 -0
  60. package/dist/artifacts/index.d.ts.map +1 -0
  61. package/dist/artifacts/index.js +125 -0
  62. package/dist/artifacts/index.js.map +10 -0
  63. package/dist/artifacts/kinds.d.ts +5 -0
  64. package/dist/artifacts/kinds.d.ts.map +1 -0
  65. package/dist/artifacts/limits.d.ts +28 -0
  66. package/dist/artifacts/limits.d.ts.map +1 -0
  67. package/dist/artifacts/outline.d.ts +44 -0
  68. package/dist/artifacts/outline.d.ts.map +1 -0
  69. package/dist/artifacts/publish/files.d.ts +15 -0
  70. package/dist/artifacts/publish/files.d.ts.map +1 -0
  71. package/dist/artifacts/publish/index.d.ts +5 -0
  72. package/dist/artifacts/publish/index.d.ts.map +1 -0
  73. package/dist/artifacts/publish/index.js +36 -0
  74. package/dist/artifacts/publish/index.js.map +9 -0
  75. package/dist/artifacts/publish/publish.d.ts +52 -0
  76. package/dist/artifacts/publish/publish.d.ts.map +1 -0
  77. package/dist/artifacts/publish/references.d.ts +27 -0
  78. package/dist/artifacts/publish/references.d.ts.map +1 -0
  79. package/dist/artifacts/publish/validate/document.d.ts +17 -0
  80. package/dist/artifacts/publish/validate/document.d.ts.map +1 -0
  81. package/dist/artifacts/publish/validate/file.d.ts +8 -0
  82. package/dist/artifacts/publish/validate/file.d.ts.map +1 -0
  83. package/dist/artifacts/publish/validate/sheet.d.ts +15 -0
  84. package/dist/artifacts/publish/validate/sheet.d.ts.map +1 -0
  85. package/dist/artifacts/publish/validate/slides.d.ts +21 -0
  86. package/dist/artifacts/publish/validate/slides.d.ts.map +1 -0
  87. package/dist/artifacts/references.d.ts +12 -0
  88. package/dist/artifacts/references.d.ts.map +1 -0
  89. package/dist/artifacts/resolve.d.ts +41 -0
  90. package/dist/artifacts/resolve.d.ts.map +1 -0
  91. package/dist/artifacts/theme.d.ts +19 -0
  92. package/dist/artifacts/theme.d.ts.map +1 -0
  93. package/dist/artifacts/warnings.d.ts +11 -0
  94. package/dist/artifacts/warnings.d.ts.map +1 -0
  95. package/dist/artifacts/workbook.d.ts +64 -0
  96. package/dist/artifacts/workbook.d.ts.map +1 -0
  97. package/dist/auth/index.js +10 -10
  98. package/dist/authorization/decision.d.ts +2 -0
  99. package/dist/authorization/decision.d.ts.map +1 -1
  100. package/dist/authorization/grant-kinds.d.ts +2 -2
  101. package/dist/authorization/grant-kinds.d.ts.map +1 -1
  102. package/dist/authorization/index.js +6 -6
  103. package/dist/blob-storage/browser.js +1 -1
  104. package/dist/blob-storage/index.js +2 -2
  105. package/dist/blob-storage/internal.d.ts +1 -1
  106. package/dist/blob-storage/internal.d.ts.map +1 -1
  107. package/dist/blob-storage/internal.js +11 -5
  108. package/dist/blob-storage/internal.js.map +1 -1
  109. package/dist/blob-storage/media-type.d.ts +12 -0
  110. package/dist/blob-storage/media-type.d.ts.map +1 -1
  111. package/dist/bootstrap/index.js +53 -47
  112. package/dist/bootstrap/index.js.map +2 -2
  113. package/dist/{chunk-xfs8x8m9.js → chunk-0bphap9y.js} +5 -5
  114. package/dist/{chunk-1zq2p6g0.js → chunk-1cc1xaf3.js} +3 -3
  115. package/dist/chunk-3jms7je7.js +14 -0
  116. package/dist/chunk-3jms7je7.js.map +10 -0
  117. package/dist/{chunk-s54c868q.js → chunk-3qct2mdc.js} +3 -13
  118. package/dist/chunk-3qct2mdc.js.map +12 -0
  119. package/dist/{chunk-t7x8dmn0.js → chunk-431pyp2c.js} +3 -3
  120. package/dist/{chunk-c85m1hyj.js → chunk-447a5c0p.js} +2 -2
  121. package/dist/chunk-48qjhh6v.js +185 -0
  122. package/dist/chunk-48qjhh6v.js.map +13 -0
  123. package/dist/{chunk-ren4kg2j.js → chunk-561r0yc9.js} +8 -8
  124. package/dist/{chunk-5e43w60z.js → chunk-5948n82c.js} +2 -2
  125. package/dist/{chunk-yzwja0mj.js → chunk-5hx48dnn.js} +2 -2
  126. package/dist/{chunk-x6m907x7.js → chunk-5vems3nx.js} +5 -6
  127. package/dist/{chunk-x6m907x7.js.map → chunk-5vems3nx.js.map} +3 -3
  128. package/dist/{chunk-0rbyz4qy.js → chunk-61y5xs4p.js} +560 -164
  129. package/dist/{chunk-0rbyz4qy.js.map → chunk-61y5xs4p.js.map} +12 -9
  130. package/dist/chunk-65abf64x.js +13 -0
  131. package/dist/chunk-65abf64x.js.map +10 -0
  132. package/dist/{chunk-z3y5kg1x.js → chunk-6eqsgvxk.js} +3 -3
  133. package/dist/{chunk-z3y5kg1x.js.map → chunk-6eqsgvxk.js.map} +2 -2
  134. package/dist/chunk-6rqgmkde.js +2028 -0
  135. package/dist/chunk-6rqgmkde.js.map +29 -0
  136. package/dist/{chunk-d0bqz29d.js → chunk-6vb4st8k.js} +8 -4
  137. package/dist/{chunk-d0bqz29d.js.map → chunk-6vb4st8k.js.map} +3 -3
  138. package/dist/chunk-7q8t23v4.js +467 -0
  139. package/dist/chunk-7q8t23v4.js.map +14 -0
  140. package/dist/{chunk-5j58wjct.js → chunk-858emn8m.js} +6 -6
  141. package/dist/{chunk-hvsb78a1.js → chunk-8frc8a4j.js} +26 -26
  142. package/dist/{chunk-hvsb78a1.js.map → chunk-8frc8a4j.js.map} +2 -2
  143. package/dist/{chunk-3zxk45er.js → chunk-8ncg20rd.js} +3 -68
  144. package/dist/{chunk-3zxk45er.js.map → chunk-8ncg20rd.js.map} +4 -5
  145. package/dist/{chunk-n33z5bjw.js → chunk-918wwnaa.js} +490 -24
  146. package/dist/{chunk-n33z5bjw.js.map → chunk-918wwnaa.js.map} +13 -11
  147. package/dist/{chunk-rrzt8jdy.js → chunk-9j4jw7as.js} +103 -110
  148. package/dist/chunk-9j4jw7as.js.map +14 -0
  149. package/dist/chunk-9kgkfg6v.js +502 -0
  150. package/dist/chunk-9kgkfg6v.js.map +14 -0
  151. package/dist/chunk-a3faa34j.js +74 -0
  152. package/dist/chunk-a3faa34j.js.map +10 -0
  153. package/dist/{chunk-6c6sn0bh.js → chunk-akzryx9h.js} +335 -1167
  154. package/dist/{chunk-6c6sn0bh.js.map → chunk-akzryx9h.js.map} +18 -24
  155. package/dist/chunk-arns890k.js +10 -0
  156. package/dist/chunk-arns890k.js.map +10 -0
  157. package/dist/{chunk-hjzdd750.js → chunk-bk9svbcq.js} +11 -11
  158. package/dist/{chunk-hjzdd750.js.map → chunk-bk9svbcq.js.map} +2 -2
  159. package/dist/{chunk-hkc3jct7.js → chunk-c06hmxyy.js} +2 -10
  160. package/dist/chunk-c06hmxyy.js.map +10 -0
  161. package/dist/{chunk-6p49a5cq.js → chunk-c1rxbz5y.js} +3 -3
  162. package/dist/chunk-cfj9dfbb.js +288 -0
  163. package/dist/chunk-cfj9dfbb.js.map +12 -0
  164. package/dist/{chunk-bx9q3cwv.js → chunk-cn0fwwhy.js} +7 -7
  165. package/dist/{chunk-bx9q3cwv.js.map → chunk-cn0fwwhy.js.map} +1 -1
  166. package/dist/{chunk-gc4ntf7d.js → chunk-cwdzcv37.js} +1 -1
  167. package/dist/{chunk-fa02jy15.js → chunk-cy4mbddw.js} +1 -1
  168. package/dist/{chunk-9w055r5b.js → chunk-d09e3rax.js} +1 -1
  169. package/dist/chunk-d5rjr8c0.js +176 -0
  170. package/dist/chunk-d5rjr8c0.js.map +12 -0
  171. package/dist/{chunk-dk8tkk5f.js → chunk-d7dnxdep.js} +3 -3
  172. package/dist/{chunk-b38szspf.js → chunk-dhcv7yxc.js} +1 -1
  173. package/dist/{chunk-b38szspf.js.map → chunk-dhcv7yxc.js.map} +1 -1
  174. package/dist/{chunk-gsjm1wms.js → chunk-dhdha526.js} +8 -2
  175. package/dist/chunk-dhdha526.js.map +10 -0
  176. package/dist/{chunk-8mx7qw3y.js → chunk-dvd2fp9q.js} +2 -2
  177. package/dist/{chunk-8mx7qw3y.js.map → chunk-dvd2fp9q.js.map} +3 -3
  178. package/dist/{chunk-way52z4h.js → chunk-e17zdm62.js} +6 -12
  179. package/dist/{chunk-way52z4h.js.map → chunk-e17zdm62.js.map} +3 -4
  180. package/dist/{chunk-tpn40322.js → chunk-e6k4thh5.js} +11 -10
  181. package/dist/{chunk-tpn40322.js.map → chunk-e6k4thh5.js.map} +3 -3
  182. package/dist/{chunk-tw03bsmb.js → chunk-eptrvnby.js} +224 -3
  183. package/dist/chunk-eptrvnby.js.map +12 -0
  184. package/dist/{chunk-es1gxsbf.js → chunk-f4pamkt9.js} +8 -10
  185. package/dist/chunk-f4pamkt9.js.map +12 -0
  186. package/dist/chunk-ff5xkv0p.js +211 -0
  187. package/dist/chunk-ff5xkv0p.js.map +10 -0
  188. package/dist/{chunk-d09tj99x.js → chunk-g257jwnc.js} +10 -4
  189. package/dist/{chunk-d09tj99x.js.map → chunk-g257jwnc.js.map} +3 -3
  190. package/dist/chunk-g5bvzyyr.js +32 -0
  191. package/dist/chunk-g5bvzyyr.js.map +10 -0
  192. package/dist/chunk-hke9aeen.js +9 -0
  193. package/dist/chunk-hke9aeen.js.map +10 -0
  194. package/dist/{chunk-1sr8ryzk.js → chunk-hwksyjks.js} +122 -1
  195. package/dist/{chunk-1sr8ryzk.js.map → chunk-hwksyjks.js.map} +3 -3
  196. package/dist/chunk-jcfw4h7m.js +9 -0
  197. package/dist/chunk-jcfw4h7m.js.map +10 -0
  198. package/dist/{chunk-k6q3n2sc.js → chunk-k43ct2ke.js} +20 -11
  199. package/dist/chunk-k43ct2ke.js.map +12 -0
  200. package/dist/{chunk-3t2hgbgd.js → chunk-kge7k6ey.js} +40 -8
  201. package/dist/chunk-kge7k6ey.js.map +15 -0
  202. package/dist/{chunk-tg2cw67r.js → chunk-ky3j490c.js} +2 -2
  203. package/dist/chunk-mjddfa7k.js +129 -0
  204. package/dist/chunk-mjddfa7k.js.map +12 -0
  205. package/dist/{chunk-vpq4shxz.js → chunk-nn5xnx3s.js} +45 -10
  206. package/dist/{chunk-vpq4shxz.js.map → chunk-nn5xnx3s.js.map} +7 -6
  207. package/dist/{chunk-0yh890a4.js → chunk-q5e5tv4b.js} +35 -7
  208. package/dist/{chunk-0yh890a4.js.map → chunk-q5e5tv4b.js.map} +3 -3
  209. package/dist/{chunk-vyf9kfqf.js → chunk-q7gn29y3.js} +1 -1
  210. package/dist/{chunk-yevzdx4y.js → chunk-rmakanzx.js} +10 -12
  211. package/dist/{chunk-yevzdx4y.js.map → chunk-rmakanzx.js.map} +3 -4
  212. package/dist/{chunk-v9xd5wzd.js → chunk-s7jg7pmn.js} +1 -1
  213. package/dist/chunk-tbc1ngpd.js +642 -0
  214. package/dist/chunk-tbc1ngpd.js.map +18 -0
  215. package/dist/chunk-twe4dx8p.js +676 -0
  216. package/dist/chunk-twe4dx8p.js.map +15 -0
  217. package/dist/{chunk-9dmt152s.js → chunk-vf57cr4t.js} +2 -2
  218. package/dist/{chunk-9ybhtmg4.js → chunk-vvxtn22d.js} +1 -1
  219. package/dist/{chunk-jhm3zsa7.js → chunk-wkv3h3q7.js} +64 -2
  220. package/dist/{chunk-jhm3zsa7.js.map → chunk-wkv3h3q7.js.map} +3 -3
  221. package/dist/chunk-x0v3jd47.js +124 -0
  222. package/dist/chunk-x0v3jd47.js.map +10 -0
  223. package/dist/{chunk-7t429e3f.js → chunk-xvsc5m8n.js} +1 -1
  224. package/dist/{chunk-z4m0yz8c.js → chunk-y5tah2kf.js} +1 -1
  225. package/dist/{chunk-fkgc1wt8.js → chunk-z58tm0hm.js} +2 -2
  226. package/dist/datasets/builders.d.ts +15 -2
  227. package/dist/datasets/builders.d.ts.map +1 -1
  228. package/dist/datasets/column-index.d.ts +7 -0
  229. package/dist/datasets/column-index.d.ts.map +1 -0
  230. package/dist/datasets/execution.d.ts +3 -2
  231. package/dist/datasets/execution.d.ts.map +1 -1
  232. package/dist/datasets/write.js +8 -8
  233. package/dist/error-reporting/internal.js +4 -4
  234. package/dist/errors/internal.d.ts +1 -0
  235. package/dist/errors/internal.d.ts.map +1 -1
  236. package/dist/errors/internal.js +7 -4
  237. package/dist/errors/internal.js.map +1 -1
  238. package/dist/events/execution.d.ts +12 -2
  239. package/dist/events/execution.d.ts.map +1 -1
  240. package/dist/events/index.js +4 -4
  241. package/dist/execution/agent.js +56 -49
  242. package/dist/execution/agent.js.map +1 -1
  243. package/dist/execution/authorized-object-reader.d.ts +52 -11
  244. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  245. package/dist/execution/object-reader-clearance.d.ts +41 -0
  246. package/dist/execution/object-reader-clearance.d.ts.map +1 -0
  247. package/dist/execution/object-reader-ontology.d.ts +12 -0
  248. package/dist/execution/object-reader-ontology.d.ts.map +1 -0
  249. package/dist/execution/object-reader-security.d.ts +45 -0
  250. package/dist/execution/object-reader-security.d.ts.map +1 -0
  251. package/dist/execution/primitive.js +54 -47
  252. package/dist/execution/primitive.js.map +1 -1
  253. package/dist/execution/request.js +48 -41
  254. package/dist/execution/request.js.map +2 -2
  255. package/dist/http/api-routes.d.ts.map +1 -1
  256. package/dist/http/index.js +1 -1
  257. package/dist/index.d.ts +20 -4
  258. package/dist/index.d.ts.map +1 -1
  259. package/dist/index.js +112 -97
  260. package/dist/index.js.map +1 -1
  261. package/dist/lake-storage/in-memory.d.ts +1 -0
  262. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  263. package/dist/lake-storage/index.d.ts +6 -3
  264. package/dist/lake-storage/index.d.ts.map +1 -1
  265. package/dist/lake-storage/index.js +21 -13
  266. package/dist/lake-storage/index.js.map +1 -1
  267. package/dist/lake-storage/lineage.d.ts +94 -0
  268. package/dist/lake-storage/lineage.d.ts.map +1 -0
  269. package/dist/lake-storage/sql-transforms.d.ts +45 -0
  270. package/dist/lake-storage/sql-transforms.d.ts.map +1 -1
  271. package/dist/lake-storage/types.d.ts +55 -1
  272. package/dist/lake-storage/types.d.ts.map +1 -1
  273. package/dist/lake-storage/version-inputs.d.ts +14 -3
  274. package/dist/lake-storage/version-inputs.d.ts.map +1 -1
  275. package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
  276. package/dist/materializer/index.js +31 -30
  277. package/dist/materializer/index.js.map +1 -1
  278. package/dist/models/execution/index.js +25 -24
  279. package/dist/models/execution/index.js.map +1 -1
  280. package/dist/objects/clearance-redaction.d.ts +27 -0
  281. package/dist/objects/clearance-redaction.d.ts.map +1 -0
  282. package/dist/objects/index.js +54 -47
  283. package/dist/objects/index.js.map +1 -1
  284. package/dist/objects/link/authorization.d.ts +8 -5
  285. package/dist/objects/link/authorization.d.ts.map +1 -1
  286. package/dist/objects/link/upsert-batch.d.ts.map +1 -1
  287. package/dist/objects/object/delete.d.ts.map +1 -1
  288. package/dist/objects/object/upsert-batch.d.ts.map +1 -1
  289. package/dist/objects/object/upsert.d.ts.map +1 -1
  290. package/dist/objects/property-clearance.d.ts +47 -24
  291. package/dist/objects/property-clearance.d.ts.map +1 -1
  292. package/dist/objects/query/clearance-admission.d.ts +10 -0
  293. package/dist/objects/query/clearance-admission.d.ts.map +1 -0
  294. package/dist/objects/query/index.js +29 -28
  295. package/dist/objects/query/index.js.map +1 -1
  296. package/dist/objects/query/link-query-clearance.d.ts +21 -0
  297. package/dist/objects/query/link-query-clearance.d.ts.map +1 -0
  298. package/dist/ontology/builders.d.ts.map +1 -1
  299. package/dist/ontology/docs-markdown.d.ts +1 -1
  300. package/dist/ontology/docs-markdown.d.ts.map +1 -1
  301. package/dist/ontology/index.js +7 -7
  302. package/dist/ontology/internal.js +4 -4
  303. package/dist/ontology/internal.js.map +1 -1
  304. package/dist/pipelines/index.d.ts +2 -0
  305. package/dist/pipelines/index.d.ts.map +1 -1
  306. package/dist/pipelines/index.js +47 -35
  307. package/dist/pipelines/index.js.map +1 -1
  308. package/dist/pipelines/lineage.d.ts +17 -0
  309. package/dist/pipelines/lineage.d.ts.map +1 -0
  310. package/dist/projections/internal.d.ts +2 -2
  311. package/dist/projections/internal.js +30 -29
  312. package/dist/projections/internal.js.map +1 -1
  313. package/dist/runtime/create.d.ts +3 -0
  314. package/dist/runtime/create.d.ts.map +1 -1
  315. package/dist/runtime/host.d.ts +6 -0
  316. package/dist/runtime/host.d.ts.map +1 -1
  317. package/dist/runtime/internal.d.ts +2 -0
  318. package/dist/runtime/internal.d.ts.map +1 -1
  319. package/dist/runtime/internal.js +46 -42
  320. package/dist/runtime/internal.js.map +1 -1
  321. package/dist/runtime/ontology-mutations.d.ts +2 -0
  322. package/dist/runtime/ontology-mutations.d.ts.map +1 -1
  323. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  324. package/dist/runtime/sixb.d.ts +8 -0
  325. package/dist/runtime/sixb.d.ts.map +1 -1
  326. package/dist/sandboxes/auth.d.ts +16 -0
  327. package/dist/sandboxes/auth.d.ts.map +1 -1
  328. package/dist/sandboxes/config.d.ts.map +1 -1
  329. package/dist/sandboxes/configuration.d.ts +26 -0
  330. package/dist/sandboxes/configuration.d.ts.map +1 -1
  331. package/dist/sandboxes/index.d.ts +1 -1
  332. package/dist/sandboxes/index.d.ts.map +1 -1
  333. package/dist/sandboxes/index.js +14 -13
  334. package/dist/sandboxes/index.js.map +1 -1
  335. package/dist/sandboxes/sandbox.d.ts +28 -5
  336. package/dist/sandboxes/sandbox.d.ts.map +1 -1
  337. package/dist/security/applied-markings-contribution.d.ts +58 -0
  338. package/dist/security/applied-markings-contribution.d.ts.map +1 -0
  339. package/dist/security/applied-markings-host.d.ts +10 -0
  340. package/dist/security/applied-markings-host.d.ts.map +1 -0
  341. package/dist/security/applied-markings-snapshot.d.ts +67 -0
  342. package/dist/security/applied-markings-snapshot.d.ts.map +1 -0
  343. package/dist/security/applied-markings.d.ts +73 -0
  344. package/dist/security/applied-markings.d.ts.map +1 -0
  345. package/dist/security/dataset-version-markings.d.ts +47 -0
  346. package/dist/security/dataset-version-markings.d.ts.map +1 -0
  347. package/dist/security/grants.d.ts +3 -2
  348. package/dist/security/grants.d.ts.map +1 -1
  349. package/dist/security/index.d.ts +2 -1
  350. package/dist/security/index.d.ts.map +1 -1
  351. package/dist/security/internal.d.ts +15 -0
  352. package/dist/security/internal.d.ts.map +1 -0
  353. package/dist/security/internal.js +135 -0
  354. package/dist/security/internal.js.map +10 -0
  355. package/dist/security/marking-propagation.d.ts +62 -0
  356. package/dist/security/marking-propagation.d.ts.map +1 -0
  357. package/dist/security/marking-sets.d.ts +14 -0
  358. package/dist/security/marking-sets.d.ts.map +1 -0
  359. package/dist/security/markings.d.ts +6 -3
  360. package/dist/security/markings.d.ts.map +1 -1
  361. package/dist/security/pipeline-markings.d.ts +20 -0
  362. package/dist/security/pipeline-markings.d.ts.map +1 -0
  363. package/dist/security/project.d.ts +4 -0
  364. package/dist/security/project.d.ts.map +1 -0
  365. package/dist/security/projection-markings.d.ts +71 -0
  366. package/dist/security/projection-markings.d.ts.map +1 -0
  367. package/dist/security/public.js +2 -2
  368. package/dist/security/redactions.d.ts +4 -1
  369. package/dist/security/redactions.d.ts.map +1 -1
  370. package/dist/security/types.d.ts +22 -2
  371. package/dist/security/types.d.ts.map +1 -1
  372. package/dist/security/validation.d.ts.map +1 -1
  373. package/dist/shares/internal.js +24 -23
  374. package/dist/shares/internal.js.map +2 -2
  375. package/dist/storage/action-runs/failure.js +3 -3
  376. package/dist/storage/action-runs/in-memory.d.ts +4 -0
  377. package/dist/storage/action-runs/in-memory.d.ts.map +1 -1
  378. package/dist/storage/action-runs/types.d.ts +8 -0
  379. package/dist/storage/action-runs/types.d.ts.map +1 -1
  380. package/dist/storage/activity/in-memory.d.ts +55 -0
  381. package/dist/storage/activity/in-memory.d.ts.map +1 -0
  382. package/dist/storage/activity/index.d.ts +3 -0
  383. package/dist/storage/activity/index.d.ts.map +1 -0
  384. package/dist/storage/activity/policy.d.ts +96 -0
  385. package/dist/storage/activity/policy.d.ts.map +1 -0
  386. package/dist/storage/activity/types.d.ts +191 -0
  387. package/dist/storage/activity/types.d.ts.map +1 -0
  388. package/dist/storage/agents/in-memory.d.ts +4 -0
  389. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  390. package/dist/storage/agents/provider.d.ts.map +1 -1
  391. package/dist/storage/agents/provider.js +2 -5
  392. package/dist/storage/agents/provider.js.map +1 -1
  393. package/dist/storage/agents/types.d.ts +9 -8
  394. package/dist/storage/agents/types.d.ts.map +1 -1
  395. package/dist/storage/ai-limits/enforcement.js +3 -3
  396. package/dist/storage/artifacts/errors.d.ts +8 -0
  397. package/dist/storage/artifacts/errors.d.ts.map +1 -0
  398. package/dist/storage/artifacts/in-memory.d.ts +34 -0
  399. package/dist/storage/artifacts/in-memory.d.ts.map +1 -0
  400. package/dist/storage/artifacts/index.d.ts +5 -0
  401. package/dist/storage/artifacts/index.d.ts.map +1 -0
  402. package/dist/storage/artifacts/record.d.ts +17 -0
  403. package/dist/storage/artifacts/record.d.ts.map +1 -0
  404. package/dist/storage/artifacts/types.d.ts +184 -0
  405. package/dist/storage/artifacts/types.d.ts.map +1 -0
  406. package/dist/storage/auth/in-memory/sessions.d.ts +2 -1
  407. package/dist/storage/auth/in-memory/sessions.d.ts.map +1 -1
  408. package/dist/storage/auth/index.d.ts +1 -1
  409. package/dist/storage/auth/index.d.ts.map +1 -1
  410. package/dist/storage/auth/types.d.ts +19 -0
  411. package/dist/storage/auth/types.d.ts.map +1 -1
  412. package/dist/storage/connector-connections/provider.js +2 -2
  413. package/dist/storage/executions/in-memory.d.ts +2 -1
  414. package/dist/storage/executions/in-memory.d.ts.map +1 -1
  415. package/dist/storage/executions/index.d.ts +1 -1
  416. package/dist/storage/executions/index.d.ts.map +1 -1
  417. package/dist/storage/executions/provider.d.ts +2 -0
  418. package/dist/storage/executions/provider.d.ts.map +1 -1
  419. package/dist/storage/executions/provider.js +9 -223
  420. package/dist/storage/executions/provider.js.map +3 -4
  421. package/dist/storage/executions/types.d.ts +31 -0
  422. package/dist/storage/executions/types.d.ts.map +1 -1
  423. package/dist/storage/file-upload-sessions/provider.js +11 -11
  424. package/dist/storage/in-memory/index.d.ts +8 -0
  425. package/dist/storage/in-memory/index.d.ts.map +1 -1
  426. package/dist/storage/index.d.ts +6 -4
  427. package/dist/storage/index.d.ts.map +1 -1
  428. package/dist/storage/index.js +54 -53
  429. package/dist/storage/index.js.map +1 -1
  430. package/dist/storage/internal.d.ts +3 -0
  431. package/dist/storage/internal.d.ts.map +1 -1
  432. package/dist/storage/internal.js +66 -16
  433. package/dist/storage/internal.js.map +1 -1
  434. package/dist/storage/ontology/in-memory/sources.d.ts +2 -1
  435. package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
  436. package/dist/storage/ontology/index.d.ts +1 -1
  437. package/dist/storage/ontology/index.d.ts.map +1 -1
  438. package/dist/storage/ontology/sources.d.ts +15 -0
  439. package/dist/storage/ontology/sources.d.ts.map +1 -1
  440. package/dist/storage/projection-runs/provider.js +3 -3
  441. package/dist/storage/share-grants/in-memory.d.ts +2 -1
  442. package/dist/storage/share-grants/in-memory.d.ts.map +1 -1
  443. package/dist/storage/share-grants/index.d.ts +1 -1
  444. package/dist/storage/share-grants/index.d.ts.map +1 -1
  445. package/dist/storage/share-grants/types.d.ts +6 -0
  446. package/dist/storage/share-grants/types.d.ts.map +1 -1
  447. package/dist/storage/types.d.ts +4 -0
  448. package/dist/storage/types.d.ts.map +1 -1
  449. package/dist/storage/workflow-runs/in-memory.d.ts +4 -0
  450. package/dist/storage/workflow-runs/in-memory.d.ts.map +1 -1
  451. package/dist/storage/workflow-runs/provider.js +13 -12
  452. package/dist/storage/workflow-runs/provider.js.map +1 -1
  453. package/dist/storage/workflow-runs/types.d.ts +5 -0
  454. package/dist/storage/workflow-runs/types.d.ts.map +1 -1
  455. package/dist/syncs/index.js +35 -34
  456. package/dist/syncs/index.js.map +1 -1
  457. package/dist/testing/action-run-storage-contract.d.ts.map +1 -1
  458. package/dist/testing/activity-storage-contract.d.ts +14 -0
  459. package/dist/testing/activity-storage-contract.d.ts.map +1 -0
  460. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  461. package/dist/testing/artifact-storage-contract.d.ts +13 -0
  462. package/dist/testing/artifact-storage-contract.d.ts.map +1 -0
  463. package/dist/testing/auth-storage-contract.d.ts.map +1 -1
  464. package/dist/testing/execution-storage-contract.d.ts.map +1 -1
  465. package/dist/testing/index.d.ts +2 -0
  466. package/dist/testing/index.d.ts.map +1 -1
  467. package/dist/testing/index.js +4488 -3137
  468. package/dist/testing/index.js.map +14 -12
  469. package/dist/testing/lake-merge-storage-contract.d.ts.map +1 -1
  470. package/dist/testing/lake-storage-contract.d.ts +2 -0
  471. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  472. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  473. package/dist/testing/share-grant-storage-contract.d.ts.map +1 -1
  474. package/dist/webhooks/internal.js +27 -26
  475. package/dist/webhooks/internal.js.map +2 -2
  476. package/dist/workers/index.js +2 -2
  477. package/dist/workflows/builders.d.ts.map +1 -1
  478. package/dist/workflows/index.js +57 -51
  479. package/dist/workflows/index.js.map +1 -1
  480. package/dist/workflows/types.d.ts +9 -0
  481. package/dist/workflows/types.d.ts.map +1 -1
  482. package/dist/workflows/validation.d.ts +7 -0
  483. package/dist/workflows/validation.d.ts.map +1 -1
  484. package/package.json +25 -1
  485. package/src/actions/execution.ts +18 -13
  486. package/src/actions/request.ts +18 -3
  487. package/src/actions/run-authorization.ts +23 -0
  488. package/src/activity/README.md +155 -0
  489. package/src/activity/connection.ts +217 -0
  490. package/src/activity/device.ts +41 -0
  491. package/src/activity/execution.ts +210 -0
  492. package/src/activity/service.ts +274 -0
  493. package/src/activity/shares.ts +62 -0
  494. package/src/activity/timeline.ts +424 -0
  495. package/src/agents/index.ts +8 -3
  496. package/src/agents/request.ts +5 -0
  497. package/src/agents/skills.ts +6 -0
  498. package/src/agents/types.ts +8 -8
  499. package/src/agents/validation.ts +2 -0
  500. package/src/artifacts/address.ts +132 -0
  501. package/src/artifacts/csv.ts +108 -0
  502. package/src/artifacts/errors.ts +21 -0
  503. package/src/artifacts/execution.ts +153 -0
  504. package/src/artifacts/frames/assets.ts +88 -0
  505. package/src/artifacts/frames/grants.ts +124 -0
  506. package/src/artifacts/frames/index.ts +15 -0
  507. package/src/artifacts/frames/kit.ts +392 -0
  508. package/src/artifacts/frames/probe.ts +309 -0
  509. package/src/artifacts/frames/protocol.ts +174 -0
  510. package/src/artifacts/frames/runtime.ts +213 -0
  511. package/src/artifacts/html.ts +25 -0
  512. package/src/artifacts/ids.ts +18 -0
  513. package/src/artifacts/index.ts +61 -0
  514. package/src/artifacts/kinds.ts +8 -0
  515. package/src/artifacts/limits.ts +27 -0
  516. package/src/artifacts/outline.ts +62 -0
  517. package/src/artifacts/publish/files.ts +87 -0
  518. package/src/artifacts/publish/index.ts +12 -0
  519. package/src/artifacts/publish/publish.ts +250 -0
  520. package/src/artifacts/publish/references.ts +130 -0
  521. package/src/artifacts/publish/validate/document.ts +114 -0
  522. package/src/artifacts/publish/validate/file.ts +19 -0
  523. package/src/artifacts/publish/validate/sheet.ts +251 -0
  524. package/src/artifacts/publish/validate/slides.ts +134 -0
  525. package/src/artifacts/references.ts +11 -0
  526. package/src/artifacts/resolve.ts +97 -0
  527. package/src/artifacts/theme.ts +116 -0
  528. package/src/artifacts/warnings.ts +10 -0
  529. package/src/artifacts/workbook.ts +315 -0
  530. package/src/authorization/decision.ts +5 -0
  531. package/src/authorization/grant-kinds.ts +14 -2
  532. package/src/blob-storage/internal.ts +1 -1
  533. package/src/blob-storage/media-type.ts +69 -0
  534. package/src/datasets/builders.ts +66 -2
  535. package/src/datasets/column-index.ts +19 -0
  536. package/src/datasets/execution.ts +23 -9
  537. package/src/errors/internal.ts +1 -0
  538. package/src/events/execution.ts +134 -21
  539. package/src/execution/authorized-object-reader.ts +270 -256
  540. package/src/execution/object-reader-clearance.ts +91 -0
  541. package/src/execution/object-reader-ontology.ts +63 -0
  542. package/src/execution/object-reader-security.ts +146 -0
  543. package/src/http/api-routes.ts +125 -0
  544. package/src/index.ts +71 -3
  545. package/src/lake-storage/in-memory.ts +26 -3
  546. package/src/lake-storage/index.ts +13 -1
  547. package/src/lake-storage/lineage.ts +385 -0
  548. package/src/lake-storage/sql-transforms.ts +45 -0
  549. package/src/lake-storage/types.ts +59 -1
  550. package/src/lake-storage/version-inputs.ts +35 -6
  551. package/src/maintenance/ontology-maintenance.ts +15 -0
  552. package/src/objects/clearance-redaction.ts +138 -0
  553. package/src/objects/link/authorization.ts +27 -7
  554. package/src/objects/link/remove.ts +2 -2
  555. package/src/objects/link/upsert-batch.ts +7 -5
  556. package/src/objects/link/upsert.ts +2 -2
  557. package/src/objects/object/delete.ts +2 -0
  558. package/src/objects/object/upsert-batch.ts +2 -4
  559. package/src/objects/object/upsert.ts +2 -3
  560. package/src/objects/property-clearance.ts +171 -152
  561. package/src/objects/query/clearance-admission.ts +112 -0
  562. package/src/objects/query/link-query-clearance.ts +73 -0
  563. package/src/ontology/builders.ts +12 -1
  564. package/src/ontology/docs-markdown.ts +1 -1
  565. package/src/pipelines/index.ts +2 -0
  566. package/src/pipelines/lineage.ts +45 -0
  567. package/src/projections/internal.ts +2 -2
  568. package/src/runtime/create.ts +4 -0
  569. package/src/runtime/host.ts +55 -0
  570. package/src/runtime/internal.ts +2 -0
  571. package/src/runtime/ontology-mutations.ts +19 -4
  572. package/src/runtime/resolve-definitions.ts +66 -3
  573. package/src/runtime/sixb.ts +18 -1
  574. package/src/sandboxes/README.md +29 -7
  575. package/src/sandboxes/auth.ts +16 -0
  576. package/src/sandboxes/config.ts +2 -7
  577. package/src/sandboxes/configuration.ts +61 -7
  578. package/src/sandboxes/index.ts +1 -0
  579. package/src/sandboxes/sandbox.ts +27 -5
  580. package/src/security/applied-markings-contribution.ts +277 -0
  581. package/src/security/applied-markings-host.ts +41 -0
  582. package/src/security/applied-markings-snapshot.ts +235 -0
  583. package/src/security/applied-markings.ts +405 -0
  584. package/src/security/dataset-version-markings.ts +163 -0
  585. package/src/security/grants.ts +39 -4
  586. package/src/security/index.ts +3 -0
  587. package/src/security/internal.ts +18 -0
  588. package/src/security/marking-propagation.ts +255 -0
  589. package/src/security/marking-sets.ts +42 -0
  590. package/src/security/markings.ts +29 -178
  591. package/src/security/pipeline-markings.ts +175 -0
  592. package/src/security/project.ts +8 -0
  593. package/src/security/projection-markings.ts +421 -0
  594. package/src/security/redactions.ts +7 -2
  595. package/src/security/types.ts +20 -2
  596. package/src/security/validation.ts +11 -4
  597. package/src/storage/action-runs/in-memory.ts +18 -0
  598. package/src/storage/action-runs/types.ts +8 -0
  599. package/src/storage/activity/in-memory.ts +374 -0
  600. package/src/storage/activity/index.ts +27 -0
  601. package/src/storage/activity/policy.ts +430 -0
  602. package/src/storage/activity/types.ts +211 -0
  603. package/src/storage/agents/in-memory.ts +10 -0
  604. package/src/storage/agents/provider.ts +2 -13
  605. package/src/storage/agents/types.ts +9 -16
  606. package/src/storage/artifacts/errors.ts +16 -0
  607. package/src/storage/artifacts/in-memory.ts +240 -0
  608. package/src/storage/artifacts/index.ts +30 -0
  609. package/src/storage/artifacts/record.ts +200 -0
  610. package/src/storage/artifacts/types.ts +209 -0
  611. package/src/storage/auth/in-memory/sessions.ts +21 -0
  612. package/src/storage/auth/index.ts +2 -0
  613. package/src/storage/auth/types.ts +18 -0
  614. package/src/storage/executions/in-memory.ts +61 -1
  615. package/src/storage/executions/index.ts +3 -0
  616. package/src/storage/executions/provider.ts +12 -0
  617. package/src/storage/executions/types.ts +30 -0
  618. package/src/storage/in-memory/index.ts +16 -0
  619. package/src/storage/index.ts +63 -0
  620. package/src/storage/internal.ts +30 -0
  621. package/src/storage/ontology/in-memory/sources.ts +23 -0
  622. package/src/storage/ontology/index.ts +2 -0
  623. package/src/storage/ontology/sources.ts +17 -0
  624. package/src/storage/share-grants/in-memory.ts +8 -0
  625. package/src/storage/share-grants/index.ts +1 -0
  626. package/src/storage/share-grants/types.ts +8 -0
  627. package/src/storage/types.ts +4 -0
  628. package/src/storage/workflow-runs/in-memory.ts +16 -0
  629. package/src/storage/workflow-runs/types.ts +5 -0
  630. package/src/testing/action-run-storage-contract.ts +25 -0
  631. package/src/testing/activity-storage-contract.ts +840 -0
  632. package/src/testing/agent-storage-contract.ts +22 -21
  633. package/src/testing/artifact-storage-contract.ts +517 -0
  634. package/src/testing/auth-storage-contract.ts +47 -0
  635. package/src/testing/execution-storage-contract.ts +147 -1
  636. package/src/testing/index.ts +9 -0
  637. package/src/testing/lake-merge-storage-contract.ts +38 -0
  638. package/src/testing/lake-storage-contract.ts +247 -2
  639. package/src/testing/materializer-storage-contract.ts +1 -0
  640. package/src/testing/ontology-storage-contract.ts +57 -2
  641. package/src/testing/share-grant-storage-contract.ts +15 -0
  642. package/src/workflows/builders.ts +14 -0
  643. package/src/workflows/types.ts +9 -0
  644. package/src/workflows/validation.ts +72 -0
  645. package/dist/chunk-1k89ecfr.js +0 -85
  646. package/dist/chunk-1k89ecfr.js.map +0 -10
  647. package/dist/chunk-3t2hgbgd.js.map +0 -15
  648. package/dist/chunk-4vyr1j8f.js +0 -128
  649. package/dist/chunk-4vyr1j8f.js.map +0 -11
  650. package/dist/chunk-9gyp8hg1.js +0 -363
  651. package/dist/chunk-9gyp8hg1.js.map +0 -14
  652. package/dist/chunk-es1gxsbf.js.map +0 -13
  653. package/dist/chunk-gsjm1wms.js.map +0 -10
  654. package/dist/chunk-hkc3jct7.js.map +0 -10
  655. package/dist/chunk-k6q3n2sc.js.map +0 -12
  656. package/dist/chunk-rrzt8jdy.js.map +0 -14
  657. package/dist/chunk-s16apyk9.js +0 -256
  658. package/dist/chunk-s16apyk9.js.map +0 -16
  659. package/dist/chunk-s54c868q.js.map +0 -12
  660. package/dist/chunk-tw03bsmb.js.map +0 -11
  661. /package/dist/{chunk-xfs8x8m9.js.map → chunk-0bphap9y.js.map} +0 -0
  662. /package/dist/{chunk-1zq2p6g0.js.map → chunk-1cc1xaf3.js.map} +0 -0
  663. /package/dist/{chunk-t7x8dmn0.js.map → chunk-431pyp2c.js.map} +0 -0
  664. /package/dist/{chunk-c85m1hyj.js.map → chunk-447a5c0p.js.map} +0 -0
  665. /package/dist/{chunk-ren4kg2j.js.map → chunk-561r0yc9.js.map} +0 -0
  666. /package/dist/{chunk-5e43w60z.js.map → chunk-5948n82c.js.map} +0 -0
  667. /package/dist/{chunk-yzwja0mj.js.map → chunk-5hx48dnn.js.map} +0 -0
  668. /package/dist/{chunk-5j58wjct.js.map → chunk-858emn8m.js.map} +0 -0
  669. /package/dist/{chunk-6p49a5cq.js.map → chunk-c1rxbz5y.js.map} +0 -0
  670. /package/dist/{chunk-gc4ntf7d.js.map → chunk-cwdzcv37.js.map} +0 -0
  671. /package/dist/{chunk-fa02jy15.js.map → chunk-cy4mbddw.js.map} +0 -0
  672. /package/dist/{chunk-9w055r5b.js.map → chunk-d09e3rax.js.map} +0 -0
  673. /package/dist/{chunk-dk8tkk5f.js.map → chunk-d7dnxdep.js.map} +0 -0
  674. /package/dist/{chunk-tg2cw67r.js.map → chunk-ky3j490c.js.map} +0 -0
  675. /package/dist/{chunk-vyf9kfqf.js.map → chunk-q7gn29y3.js.map} +0 -0
  676. /package/dist/{chunk-v9xd5wzd.js.map → chunk-s7jg7pmn.js.map} +0 -0
  677. /package/dist/{chunk-9dmt152s.js.map → chunk-vf57cr4t.js.map} +0 -0
  678. /package/dist/{chunk-9ybhtmg4.js.map → chunk-vvxtn22d.js.map} +0 -0
  679. /package/dist/{chunk-7t429e3f.js.map → chunk-xvsc5m8n.js.map} +0 -0
  680. /package/dist/{chunk-z4m0yz8c.js.map → chunk-y5tah2kf.js.map} +0 -0
  681. /package/dist/{chunk-fkgc1wt8.js.map → chunk-z58tm0hm.js.map} +0 -0
@@ -0,0 +1,405 @@
1
+ import type { LakeStorage } from "../lake-storage/types"
2
+ import type { OntologyDefinitionCatalog } from "../ontology/registry"
3
+ import type { PipelineDefinition } from "../pipelines/types"
4
+ import type { ProjectionDefinitionCatalog } from "../projections/registry"
5
+ import type { OntologySourceStorage } from "../storage/ontology"
6
+ import {
7
+ type AppliedVersionRead,
8
+ appliedContribution,
9
+ type EventOriginRef,
10
+ errorMessage,
11
+ eventOriginMarkings,
12
+ producingPipelines,
13
+ type SourceProjection,
14
+ sentence,
15
+ } from "./applied-markings-contribution"
16
+ import {
17
+ type AppliedContribution,
18
+ type AppliedMarkingsSnapshot,
19
+ assembleAppliedMarkings,
20
+ NO_APPLIED_MARKINGS,
21
+ NO_CONTRIBUTION,
22
+ withPropertyMarkings,
23
+ } from "./applied-markings-snapshot"
24
+ import type { DatasetVersionMarkings } from "./dataset-version-markings"
25
+
26
+ /**
27
+ * Objects keep the markings of the dataset version they were projected from.
28
+ *
29
+ * Startup checks the code: each projected property declares the markings its column carries. The
30
+ * objects a projection applied may predate that code. When a property stops declaring a marking
31
+ * its applied version still carries on the column, the objects still hold those values. Until the
32
+ * projection applies a version the code allows, each such property keeps the marking (its
33
+ * surplus), and an object type or link whose key column carries markings is unreadable to readers
34
+ * lacking them, like a type they have no view grant for.
35
+ *
36
+ * Lifecycle: the snapshot is read when a read needs it, with no background work.
37
+ * - A read reads it with one storage query for the projections' active sources; only projections
38
+ * whose applied version or definition changed are classified again. A project whose columns
39
+ * carry no marking reads nothing.
40
+ * - A read uses a snapshot younger than {@link APPLIED_MARKINGS_FRESH_MS}. An older one, up to
41
+ * {@link APPLIED_MARKINGS_MAX_AGE_MS}, is used while one refresh runs behind the read. Past that
42
+ * age, or before any snapshot, the read waits for a refresh and fails if it fails or hangs past
43
+ * the same bound. Other servers so see a newly applied version within seconds.
44
+ * - A host that applies a projection invalidates the snapshot, so its next read refreshes first:
45
+ * `sixb dev` sees a version at once.
46
+ */
47
+ export interface AppliedMarkings {
48
+ /** Whether readers with these clearances can be denied anything the code alone allows. */
49
+ affects(clearances: ReadonlySet<string>): boolean
50
+ /** The current snapshot, refreshed on demand. */
51
+ current(): Promise<AppliedMarkingsSnapshot>
52
+ /** A projection applied a version in this process: the next read refreshes first. */
53
+ invalidate(): void
54
+ /**
55
+ * The snapshot with the markings an object event's origin version carries on the properties
56
+ * its projection maps: the event holds that version's values, whatever version the projection
57
+ * applied since. Reads each version once, keeping the last few.
58
+ */
59
+ forEventOrigin(
60
+ snapshot: AppliedMarkingsSnapshot,
61
+ origin: EventOriginRef
62
+ ): Promise<AppliedMarkingsSnapshot>
63
+ /**
64
+ * The snapshot with every marking a column declares on each property a projection maps to this
65
+ * type: what an object event's earlier values read under. They are the values an update or a
66
+ * deletion replaced, and the projected values an action or a direct write recorded. They came
67
+ * from versions projections applied before, which no event records, so they read like a version
68
+ * that cannot be read. Like the objects they wrote, a projection the code no longer declares
69
+ * marks nothing.
70
+ */
71
+ forEarlierValues(snapshot: AppliedMarkingsSnapshot, objectTypeId: string): AppliedMarkingsSnapshot
72
+ }
73
+
74
+ export interface AppliedMarkingsOptions {
75
+ readonly projectId: string
76
+ readonly ontology: Pick<OntologyDefinitionCatalog, "getObjectTypeById">
77
+ readonly projections: Pick<ProjectionDefinitionCatalog, "listObjects" | "listLinks">
78
+ /** The revision of a projection's current definition. */
79
+ readonly revisionOf: (projectionId: string) => string
80
+ readonly pipelines: readonly PipelineDefinition[]
81
+ readonly versionMarkings: DatasetVersionMarkings
82
+ readonly lakeStorage: Pick<LakeStorage, "getVersion">
83
+ readonly sources: Pick<OntologySourceStorage, "listActive">
84
+ /** A monotonic clock in milliseconds. */
85
+ readonly now?: () => number
86
+ /** For this repo's tests: the bound past which a read waits, and a refresh fails. */
87
+ readonly maxAgeMs?: number
88
+ }
89
+
90
+ /** Origin versions, and snapshots combined with them, kept for the events read next. */
91
+ const EVENT_ORIGINS_KEPT = 64
92
+
93
+ /** A read uses a snapshot younger than this as it is. */
94
+ export const APPLIED_MARKINGS_FRESH_MS = 5_000
95
+ /** A read waits for a snapshot older than this, and a refresh that takes longer fails. */
96
+ export const APPLIED_MARKINGS_MAX_AGE_MS = 10_000
97
+
98
+ interface ProjectionState {
99
+ /** The applied version and revision the contribution was computed for. */
100
+ readonly key: string
101
+ /** The version could not be read: seal now, read it again on the next refresh. */
102
+ readonly retry: boolean
103
+ readonly contribution: AppliedContribution
104
+ }
105
+
106
+ export function createAppliedMarkings(options: AppliedMarkingsOptions): AppliedMarkings {
107
+ const maxAgeMs = options.maxAgeMs ?? APPLIED_MARKINGS_MAX_AGE_MS
108
+ const freshMs = Math.min(APPLIED_MARKINGS_FRESH_MS, maxAgeMs / 2)
109
+ const now = options.now ?? (() => performance.now())
110
+ const versionMarkings = options.versionMarkings
111
+ let pipelineOf: ((datasetId: string) => string | undefined) | undefined
112
+
113
+ let snapshot: AppliedMarkingsSnapshot | undefined
114
+ let fingerprint: string | undefined
115
+ let refreshedAt = 0
116
+ let states = new Map<string, ProjectionState>()
117
+ let generation = 0
118
+ let refreshedGeneration = -1
119
+ let inflight: Promise<void> | undefined
120
+
121
+ // Only the latest refresh may publish: one past its deadline is abandoned.
122
+ let latestRun = 0
123
+ let failing = false
124
+ const warned = new Set<string>()
125
+
126
+ const refresh = (): Promise<void> => {
127
+ if (inflight) return inflight
128
+
129
+ latestRun += 1
130
+ const run = latestRun
131
+
132
+ let timer: ReturnType<typeof setTimeout> | undefined
133
+ const deadline = new Promise<never>((_resolve, reject) => {
134
+ timer = setTimeout(() => {
135
+ latestRun += 1
136
+ reject(
137
+ new Error(
138
+ `[Sixb] Reading the dataset versions projections applied took longer than ${maxAgeMs / 1000}s.`
139
+ )
140
+ )
141
+ }, maxAgeMs)
142
+ timer.unref?.()
143
+ })
144
+
145
+ const work = read(run)
146
+ // The deadline may settle first; the abandoned read must not report an unhandled rejection.
147
+ work.catch(() => {})
148
+
149
+ inflight = Promise.race([work, deadline]).finally(() => {
150
+ clearTimeout(timer)
151
+ inflight = undefined
152
+ })
153
+
154
+ return inflight
155
+ }
156
+
157
+ const read = async (run: number) => {
158
+ const startedAt = now()
159
+ const startedGeneration = generation
160
+
161
+ const active = await options.sources.listActive({ projectId: options.projectId })
162
+ const applied = new Map(active.map((source) => [source.source.projectionId, source]))
163
+ const projections: readonly SourceProjection[] = [
164
+ ...options.projections.listObjects(),
165
+ ...options.projections.listLinks(),
166
+ ]
167
+
168
+ const next = new Map<string, ProjectionState>()
169
+ await Promise.all(
170
+ projections.map(async (projection) => {
171
+ const projectionId = projection.id
172
+
173
+ // A source the code no longer declares is read under the code's markings.
174
+ const source = applied.get(projectionId)
175
+ if (!source) return
176
+
177
+ const key = JSON.stringify([
178
+ source.datasetVersion.datasetId,
179
+ source.datasetVersion.versionId,
180
+ source.projectionRevision,
181
+ ])
182
+
183
+ const previous = states.get(projectionId)
184
+ if (previous && previous.key === key && !previous.retry) {
185
+ next.set(projectionId, previous)
186
+ return
187
+ }
188
+
189
+ const version = await readVersion(source.datasetVersion)
190
+ pipelineOf ??= producingPipelines(options.pipelines)
191
+ const contribution = appliedContribution(projection, source, version, {
192
+ ontology: options.ontology,
193
+ revisionOf: options.revisionOf,
194
+ everyMarking: versionMarkings.everyMarking(),
195
+ pipelineOf,
196
+ })
197
+
198
+ next.set(projectionId, { key, retry: version.kind !== "read", contribution })
199
+ })
200
+ )
201
+
202
+ if (run !== latestRun) return
203
+
204
+ states = next
205
+ failing = false
206
+ publish(next)
207
+ refreshedAt = startedAt
208
+ refreshedGeneration = startedGeneration
209
+ }
210
+
211
+ /** Read and classify a version; a version that cannot be read is sealed, then read again. */
212
+ const readVersion = async (ref: {
213
+ readonly datasetId: string
214
+ readonly versionId: string
215
+ }): Promise<AppliedVersionRead> => {
216
+ try {
217
+ const version = await options.lakeStorage.getVersion(ref.datasetId, ref.versionId)
218
+ if (!version) return { kind: "missing" }
219
+ return { kind: "read", version, classification: versionMarkings.classify(version) }
220
+ } catch (error) {
221
+ return { kind: "failed", error }
222
+ }
223
+ }
224
+
225
+ const publish = (next: ReadonlyMap<string, ProjectionState>) => {
226
+ const contributions = [...next]
227
+ .sort(([left], [right]) => (left < right ? -1 : left > right ? 1 : 0))
228
+ .flatMap(([, state]) => (state.contribution === NO_CONTRIBUTION ? [] : [state.contribution]))
229
+ const nextFingerprint = JSON.stringify(contributions)
230
+
231
+ // Equal content keeps the same object, so clearances resolved for it stay cached.
232
+ if (snapshot && nextFingerprint === fingerprint) return
233
+
234
+ snapshot = assembleAppliedMarkings(contributions)
235
+ fingerprint = nextFingerprint
236
+
237
+ const sealed = new Set(
238
+ snapshot.notices.filter((notice) => notice.sealed).map((notice) => notice.projectionId)
239
+ )
240
+
241
+ // A projection sealed again after it was cleared warns again.
242
+ for (const projectionId of warned) if (!sealed.has(projectionId)) warned.delete(projectionId)
243
+
244
+ for (const notice of snapshot.notices) {
245
+ if (!notice.sealed || warned.has(notice.projectionId)) continue
246
+ warned.add(notice.projectionId)
247
+ console.warn(notice.message)
248
+ }
249
+ }
250
+
251
+ /** One refresh behind reads that keep using the snapshot; a failure is reported once a streak. */
252
+ const refreshBehind = () => {
253
+ if (inflight) return
254
+ refresh().catch((error: unknown) => {
255
+ if (failing) return
256
+ failing = true
257
+ console.warn(
258
+ `[Sixb] Could not read the dataset versions projections applied: ${sentence(errorMessage(error))} Reads keep the markings read before for up to ${maxAgeMs / 1000}s, then fail until it succeeds.`
259
+ )
260
+ })
261
+ }
262
+
263
+ const current = async (): Promise<AppliedMarkingsSnapshot> => {
264
+ if (versionMarkings.everyMarking().size === 0) return NO_APPLIED_MARKINGS
265
+
266
+ // An invalidation during a refresh is only covered by a refresh that starts after it.
267
+ for (let attempt = 0; attempt < 3; attempt += 1) {
268
+ if (snapshot && refreshedGeneration === generation) {
269
+ const age = now() - refreshedAt
270
+ if (age < freshMs) return snapshot
271
+ if (age <= maxAgeMs) {
272
+ refreshBehind()
273
+ return snapshot
274
+ }
275
+ }
276
+
277
+ try {
278
+ await refresh()
279
+ } catch (error) {
280
+ if (snapshot && now() - refreshedAt <= maxAgeMs) return snapshot
281
+ throw new Error(
282
+ `[Sixb] Cannot read the dataset versions projections applied, so markings cannot be enforced: ${errorMessage(error)}`,
283
+ { cause: error }
284
+ )
285
+ }
286
+ }
287
+
288
+ if (!snapshot) throw new Error("[Sixb] Applied markings were not read.")
289
+ return snapshot
290
+ }
291
+
292
+ // A version's classification never changes. One that could not be read is read again.
293
+ const originVersions = new Map<string, Promise<AppliedVersionRead>>()
294
+ const readOriginVersion = (origin: EventOriginRef): Promise<AppliedVersionRead> => {
295
+ const key = JSON.stringify([origin.datasetId, origin.datasetVersionId])
296
+ let version = originVersions.get(key)
297
+
298
+ if (version) {
299
+ originVersions.delete(key)
300
+ } else {
301
+ const read = readVersion({ datasetId: origin.datasetId, versionId: origin.datasetVersionId })
302
+ void read.then((result) => {
303
+ if (result.kind === "failed" && originVersions.get(key) === read) originVersions.delete(key)
304
+ })
305
+ version = read
306
+ }
307
+
308
+ keep(originVersions, key, version)
309
+ return version
310
+ }
311
+
312
+ const combined = new WeakMap<AppliedMarkingsSnapshot, Map<string, AppliedMarkingsSnapshot>>()
313
+ const forEventOrigin = async (snapshot: AppliedMarkingsSnapshot, origin: EventOriginRef) => {
314
+ const projection = options.projections
315
+ .listObjects()
316
+ .find((candidate) => candidate.id === origin.projectionId)
317
+
318
+ // Like the objects it wrote, an event of a projection the code no longer declares is read
319
+ // under the markings the code declares.
320
+ if (!projection) return snapshot
321
+
322
+ const read = await readOriginVersion(origin)
323
+ const key = JSON.stringify([
324
+ origin.projectionId,
325
+ origin.datasetId,
326
+ origin.datasetVersionId,
327
+ origin.objectTypeId,
328
+ read.kind,
329
+ ])
330
+
331
+ let bySnapshot = combined.get(snapshot)
332
+ const cached = bySnapshot?.get(key)
333
+ if (cached) return cached
334
+
335
+ const result = withPropertyMarkings(
336
+ snapshot,
337
+ eventOriginMarkings(projection, origin, read, {
338
+ ontology: options.ontology,
339
+ everyMarking: versionMarkings.everyMarking(),
340
+ })
341
+ )
342
+
343
+ // Equal snapshots share resolved clearances; a failed read is not kept.
344
+ if (read.kind !== "failed") {
345
+ bySnapshot ??= new Map()
346
+ combined.set(snapshot, bySnapshot)
347
+ keep(bySnapshot, key, result)
348
+ }
349
+
350
+ return result
351
+ }
352
+
353
+ const earlier = new WeakMap<AppliedMarkingsSnapshot, Map<string, AppliedMarkingsSnapshot>>()
354
+ const forEarlierValues = (snapshot: AppliedMarkingsSnapshot, objectTypeId: string) => {
355
+ let byType = earlier.get(snapshot)
356
+ const cached = byType?.get(objectTypeId)
357
+ if (cached) return cached
358
+
359
+ const primary = options.ontology
360
+ .getObjectTypeById(objectTypeId)
361
+ ?.properties.find((property) => property.primary)?.id
362
+ const projected = options.projections
363
+ .listObjects()
364
+ .filter((projection) => projection.objectTypeId === objectTypeId)
365
+ .flatMap((projection) => Object.keys(projection.properties))
366
+
367
+ const markings = [...versionMarkings.everyMarking()].sort()
368
+ const result = withPropertyMarkings(
369
+ snapshot,
370
+ [...new Set(projected)]
371
+ .filter((propertyId) => propertyId !== primary)
372
+ .map((propertyId) => ({ objectTypeId, propertyId, markings }))
373
+ )
374
+
375
+ byType ??= new Map()
376
+ earlier.set(snapshot, byType)
377
+ keep(byType, objectTypeId, result)
378
+ return result
379
+ }
380
+
381
+ return {
382
+ forEventOrigin,
383
+ forEarlierValues,
384
+ affects: (clearances) => {
385
+ for (const markingId of versionMarkings.everyMarking()) {
386
+ if (!clearances.has(markingId)) return true
387
+ }
388
+ return false
389
+ },
390
+ current,
391
+ // Also before the first snapshot: a read in flight may have listed the sources before it.
392
+ invalidate: () => {
393
+ generation += 1
394
+ },
395
+ }
396
+ }
397
+
398
+ /** Insert as the newest entry, dropping the oldest past the bound. */
399
+ function keep<TValue>(map: Map<string, TValue>, key: string, value: TValue): void {
400
+ map.set(key, value)
401
+ if (map.size <= EVENT_ORIGINS_KEPT) return
402
+
403
+ const oldest = map.keys().next().value
404
+ if (oldest !== undefined) map.delete(oldest)
405
+ }
@@ -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
+ }
@@ -37,6 +37,7 @@ import type {
37
37
  EditGrant,
38
38
  ManageGrant,
39
39
  ObserveGrant,
40
+ ProjectSurfaceReference,
40
41
  RunGrant,
41
42
  Selection,
42
43
  ShareGrant,
@@ -258,11 +259,45 @@ function isAgentUsageReference(input: unknown): input is AgentUsageReference {
258
259
  )
259
260
  }
260
261
 
261
- function observe(input: "logs" | AgentUsageReference): ObserveGrant {
262
- if (input !== "logs" && !isAgentUsageReference(input)) {
263
- 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
+ )
293
+ }
294
+
295
+ if (!isObservableReference(value)) {
296
+ const accepted = Object.values(OBSERVABLE_REFERENCES).join(" or ")
297
+ throw new SecurityValidationError(`[Sixb] can.observe accepts ${accepted}.`)
264
298
  }
265
- return { kind: "grant", capability: "observe", target: input === "logs" ? "logs" : "aiUsage" }
299
+
300
+ return { kind: "grant", capability: "observe", target: value.kind }
266
301
  }
267
302
 
268
303
  function manage(input: GrantInput<ConnectorDefinition, "connector">): ManageGrant<"connector">
@@ -16,6 +16,7 @@ export {
16
16
  missingMembershipGroupIds,
17
17
  resolveMembershipPolicyScope,
18
18
  } from "./membership-policies"
19
+ export { project } from "./project"
19
20
  export type { SecurityDefinitionCatalog, SecurityRegistryOptions } from "./registry"
20
21
  export { SecurityRegistry } from "./registry"
21
22
  export type {
@@ -34,6 +35,8 @@ export type {
34
35
  MembershipPolicyDefinition,
35
36
  ObserveGrant,
36
37
  ObserveGrantTarget,
38
+ ProjectReference,
39
+ ProjectSurfaceReference,
37
40
  RedactionReason,
38
41
  Redactions,
39
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"