@sixb/core 0.1.19 → 0.1.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (765) hide show
  1. package/dist/actions/execution.d.ts.map +1 -1
  2. package/dist/actions/index.js +54 -47
  3. package/dist/actions/index.js.map +1 -1
  4. package/dist/actions/request.d.ts.map +1 -1
  5. package/dist/actions/run-authorization.d.ts +9 -0
  6. package/dist/actions/run-authorization.d.ts.map +1 -1
  7. package/dist/activity/connection.d.ts +62 -0
  8. package/dist/activity/connection.d.ts.map +1 -0
  9. package/dist/activity/device.d.ts +8 -0
  10. package/dist/activity/device.d.ts.map +1 -0
  11. package/dist/activity/execution.d.ts +48 -0
  12. package/dist/activity/execution.d.ts.map +1 -0
  13. package/dist/activity/service.d.ts +79 -0
  14. package/dist/activity/service.d.ts.map +1 -0
  15. package/dist/activity/shares.d.ts +24 -0
  16. package/dist/activity/shares.d.ts.map +1 -0
  17. package/dist/activity/timeline.d.ts +96 -0
  18. package/dist/activity/timeline.d.ts.map +1 -0
  19. package/dist/agents/index.d.ts +2 -1
  20. package/dist/agents/index.d.ts.map +1 -1
  21. package/dist/agents/index.js +63 -50
  22. package/dist/agents/index.js.map +1 -1
  23. package/dist/agents/request.d.ts.map +1 -1
  24. package/dist/agents/skills.d.ts.map +1 -1
  25. package/dist/agents/streams/index.js +3 -3
  26. package/dist/agents/streams/internal.js +3 -3
  27. package/dist/agents/types.d.ts +8 -8
  28. package/dist/agents/types.d.ts.map +1 -1
  29. package/dist/agents/validation.d.ts +1 -1
  30. package/dist/agents/validation.d.ts.map +1 -1
  31. package/dist/artifacts/address.d.ts +48 -0
  32. package/dist/artifacts/address.d.ts.map +1 -0
  33. package/dist/artifacts/csv.d.ts +22 -0
  34. package/dist/artifacts/csv.d.ts.map +1 -0
  35. package/dist/artifacts/errors.d.ts +11 -0
  36. package/dist/artifacts/errors.d.ts.map +1 -0
  37. package/dist/artifacts/execution.d.ts +43 -0
  38. package/dist/artifacts/execution.d.ts.map +1 -0
  39. package/dist/artifacts/frames/assets.d.ts +28 -0
  40. package/dist/artifacts/frames/assets.d.ts.map +1 -0
  41. package/dist/artifacts/frames/grants.d.ts +37 -0
  42. package/dist/artifacts/frames/grants.d.ts.map +1 -0
  43. package/dist/artifacts/frames/index.d.ts +10 -0
  44. package/dist/artifacts/frames/index.d.ts.map +1 -0
  45. package/dist/artifacts/frames/index.js +892 -0
  46. package/dist/artifacts/frames/index.js.map +14 -0
  47. package/dist/artifacts/frames/kit.d.ts +66 -0
  48. package/dist/artifacts/frames/kit.d.ts.map +1 -0
  49. package/dist/artifacts/frames/probe.d.ts +41 -0
  50. package/dist/artifacts/frames/probe.d.ts.map +1 -0
  51. package/dist/artifacts/frames/protocol.d.ts +98 -0
  52. package/dist/artifacts/frames/protocol.d.ts.map +1 -0
  53. package/dist/artifacts/frames/runtime.d.ts +13 -0
  54. package/dist/artifacts/frames/runtime.d.ts.map +1 -0
  55. package/dist/artifacts/html.d.ts +6 -0
  56. package/dist/artifacts/html.d.ts.map +1 -0
  57. package/dist/artifacts/ids.d.ts +5 -0
  58. package/dist/artifacts/ids.d.ts.map +1 -0
  59. package/dist/artifacts/index.d.ts +16 -0
  60. package/dist/artifacts/index.d.ts.map +1 -0
  61. package/dist/artifacts/index.js +125 -0
  62. package/dist/artifacts/index.js.map +10 -0
  63. package/dist/artifacts/kinds.d.ts +5 -0
  64. package/dist/artifacts/kinds.d.ts.map +1 -0
  65. package/dist/artifacts/limits.d.ts +28 -0
  66. package/dist/artifacts/limits.d.ts.map +1 -0
  67. package/dist/artifacts/outline.d.ts +44 -0
  68. package/dist/artifacts/outline.d.ts.map +1 -0
  69. package/dist/artifacts/publish/files.d.ts +15 -0
  70. package/dist/artifacts/publish/files.d.ts.map +1 -0
  71. package/dist/artifacts/publish/index.d.ts +5 -0
  72. package/dist/artifacts/publish/index.d.ts.map +1 -0
  73. package/dist/artifacts/publish/index.js +36 -0
  74. package/dist/artifacts/publish/index.js.map +9 -0
  75. package/dist/artifacts/publish/publish.d.ts +52 -0
  76. package/dist/artifacts/publish/publish.d.ts.map +1 -0
  77. package/dist/artifacts/publish/references.d.ts +27 -0
  78. package/dist/artifacts/publish/references.d.ts.map +1 -0
  79. package/dist/artifacts/publish/validate/document.d.ts +17 -0
  80. package/dist/artifacts/publish/validate/document.d.ts.map +1 -0
  81. package/dist/artifacts/publish/validate/file.d.ts +8 -0
  82. package/dist/artifacts/publish/validate/file.d.ts.map +1 -0
  83. package/dist/artifacts/publish/validate/sheet.d.ts +15 -0
  84. package/dist/artifacts/publish/validate/sheet.d.ts.map +1 -0
  85. package/dist/artifacts/publish/validate/slides.d.ts +21 -0
  86. package/dist/artifacts/publish/validate/slides.d.ts.map +1 -0
  87. package/dist/artifacts/references.d.ts +12 -0
  88. package/dist/artifacts/references.d.ts.map +1 -0
  89. package/dist/artifacts/resolve.d.ts +41 -0
  90. package/dist/artifacts/resolve.d.ts.map +1 -0
  91. package/dist/artifacts/theme.d.ts +19 -0
  92. package/dist/artifacts/theme.d.ts.map +1 -0
  93. package/dist/artifacts/warnings.d.ts +11 -0
  94. package/dist/artifacts/warnings.d.ts.map +1 -0
  95. package/dist/artifacts/workbook.d.ts +64 -0
  96. package/dist/artifacts/workbook.d.ts.map +1 -0
  97. package/dist/auth/cookies.d.ts +2 -4
  98. package/dist/auth/cookies.d.ts.map +1 -1
  99. package/dist/auth/index.d.ts +0 -2
  100. package/dist/auth/index.d.ts.map +1 -1
  101. package/dist/auth/index.js +14 -20
  102. package/dist/auth/index.js.map +1 -1
  103. package/dist/auth/runtime.d.ts +8 -10
  104. package/dist/auth/runtime.d.ts.map +1 -1
  105. package/dist/auth/session-cache.d.ts +1 -5
  106. package/dist/auth/session-cache.d.ts.map +1 -1
  107. package/dist/auth/strategy.js +1 -1
  108. package/dist/auth/types.d.ts +4 -8
  109. package/dist/auth/types.d.ts.map +1 -1
  110. package/dist/auth/validation.d.ts +0 -1
  111. package/dist/auth/validation.d.ts.map +1 -1
  112. package/dist/authorization/decision.d.ts +2 -4
  113. package/dist/authorization/decision.d.ts.map +1 -1
  114. package/dist/authorization/grant-kinds.d.ts +6 -8
  115. package/dist/authorization/grant-kinds.d.ts.map +1 -1
  116. package/dist/authorization/index.d.ts +0 -1
  117. package/dist/authorization/index.d.ts.map +1 -1
  118. package/dist/authorization/index.js +7 -11
  119. package/dist/authorization/index.js.map +1 -1
  120. package/dist/authorization/resolve.d.ts +1 -1
  121. package/dist/authorization/resolve.d.ts.map +1 -1
  122. package/dist/blob-storage/browser.js +1 -1
  123. package/dist/blob-storage/index.js +2 -2
  124. package/dist/blob-storage/internal.d.ts +1 -1
  125. package/dist/blob-storage/internal.d.ts.map +1 -1
  126. package/dist/blob-storage/internal.js +11 -5
  127. package/dist/blob-storage/internal.js.map +1 -1
  128. package/dist/blob-storage/media-type.d.ts +12 -0
  129. package/dist/blob-storage/media-type.d.ts.map +1 -1
  130. package/dist/bootstrap/index.js +54 -48
  131. package/dist/bootstrap/index.js.map +2 -2
  132. package/dist/{chunk-t6vq7bff.js → chunk-0bphap9y.js} +5 -5
  133. package/dist/{chunk-7mbzgd9m.js → chunk-1cc1xaf3.js} +3 -3
  134. package/dist/chunk-3jms7je7.js +14 -0
  135. package/dist/chunk-3jms7je7.js.map +10 -0
  136. package/dist/{chunk-s54c868q.js → chunk-3qct2mdc.js} +3 -13
  137. package/dist/chunk-3qct2mdc.js.map +12 -0
  138. package/dist/{chunk-6gmfggss.js → chunk-431pyp2c.js} +3 -3
  139. package/dist/{chunk-c85m1hyj.js → chunk-447a5c0p.js} +2 -2
  140. package/dist/chunk-48qjhh6v.js +185 -0
  141. package/dist/chunk-48qjhh6v.js.map +13 -0
  142. package/dist/{chunk-80mc0971.js → chunk-561r0yc9.js} +8 -8
  143. package/dist/{chunk-5e43w60z.js → chunk-5948n82c.js} +2 -2
  144. package/dist/{chunk-yzwja0mj.js → chunk-5hx48dnn.js} +2 -2
  145. package/dist/{chunk-tjb1mk5t.js → chunk-5vems3nx.js} +5 -6
  146. package/dist/{chunk-tjb1mk5t.js.map → chunk-5vems3nx.js.map} +3 -3
  147. package/dist/{chunk-aff7cyea.js → chunk-61y5xs4p.js} +563 -167
  148. package/dist/{chunk-aff7cyea.js.map → chunk-61y5xs4p.js.map} +12 -9
  149. package/dist/chunk-65abf64x.js +13 -0
  150. package/dist/chunk-65abf64x.js.map +10 -0
  151. package/dist/{chunk-z3y5kg1x.js → chunk-6eqsgvxk.js} +3 -3
  152. package/dist/{chunk-z3y5kg1x.js.map → chunk-6eqsgvxk.js.map} +2 -2
  153. package/dist/chunk-6rqgmkde.js +2028 -0
  154. package/dist/chunk-6rqgmkde.js.map +29 -0
  155. package/dist/{chunk-y7rqfrgg.js → chunk-6vb4st8k.js} +29 -38
  156. package/dist/chunk-6vb4st8k.js.map +23 -0
  157. package/dist/chunk-7q8t23v4.js +467 -0
  158. package/dist/chunk-7q8t23v4.js.map +14 -0
  159. package/dist/{chunk-kyzq4wy9.js → chunk-858emn8m.js} +17 -17
  160. package/dist/chunk-858emn8m.js.map +18 -0
  161. package/dist/{chunk-hvsb78a1.js → chunk-8frc8a4j.js} +26 -26
  162. package/dist/{chunk-hvsb78a1.js.map → chunk-8frc8a4j.js.map} +2 -2
  163. package/dist/{chunk-3zxk45er.js → chunk-8ncg20rd.js} +3 -68
  164. package/dist/{chunk-3zxk45er.js.map → chunk-8ncg20rd.js.map} +4 -5
  165. package/dist/{chunk-j2bp5ryw.js → chunk-918wwnaa.js} +495 -28
  166. package/dist/{chunk-j2bp5ryw.js.map → chunk-918wwnaa.js.map} +14 -12
  167. package/dist/{chunk-1f7wpmyp.js → chunk-9j4jw7as.js} +103 -110
  168. package/dist/chunk-9j4jw7as.js.map +14 -0
  169. package/dist/chunk-9kgkfg6v.js +502 -0
  170. package/dist/chunk-9kgkfg6v.js.map +14 -0
  171. package/dist/chunk-a3faa34j.js +74 -0
  172. package/dist/chunk-a3faa34j.js.map +10 -0
  173. package/dist/{chunk-ey3pyej1.js → chunk-akzryx9h.js} +347 -1174
  174. package/dist/{chunk-ey3pyej1.js.map → chunk-akzryx9h.js.map} +19 -25
  175. package/dist/chunk-arns890k.js +10 -0
  176. package/dist/chunk-arns890k.js.map +10 -0
  177. package/dist/{chunk-zrmy8zvw.js → chunk-bk9svbcq.js} +11 -11
  178. package/dist/{chunk-zrmy8zvw.js.map → chunk-bk9svbcq.js.map} +2 -2
  179. package/dist/{chunk-hkc3jct7.js → chunk-c06hmxyy.js} +2 -10
  180. package/dist/chunk-c06hmxyy.js.map +10 -0
  181. package/dist/{chunk-q1vkr2ys.js → chunk-c1rxbz5y.js} +3 -3
  182. package/dist/chunk-cfj9dfbb.js +288 -0
  183. package/dist/chunk-cfj9dfbb.js.map +12 -0
  184. package/dist/{chunk-4tcx876c.js → chunk-cn0fwwhy.js} +19 -19
  185. package/dist/{chunk-4tcx876c.js.map → chunk-cn0fwwhy.js.map} +1 -1
  186. package/dist/{chunk-gc4ntf7d.js → chunk-cwdzcv37.js} +1 -1
  187. package/dist/{chunk-fa02jy15.js → chunk-cy4mbddw.js} +1 -1
  188. package/dist/{chunk-7kg3k1m9.js → chunk-d09e3rax.js} +1 -1
  189. package/dist/chunk-d5rjr8c0.js +176 -0
  190. package/dist/chunk-d5rjr8c0.js.map +12 -0
  191. package/dist/{chunk-rhg02hxq.js → chunk-d7dnxdep.js} +3 -3
  192. package/dist/{chunk-b38szspf.js → chunk-dhcv7yxc.js} +1 -1
  193. package/dist/{chunk-b38szspf.js.map → chunk-dhcv7yxc.js.map} +1 -1
  194. package/dist/{chunk-enpsx8k5.js → chunk-dhdha526.js} +23 -21
  195. package/dist/chunk-dhdha526.js.map +10 -0
  196. package/dist/{chunk-8mx7qw3y.js → chunk-dvd2fp9q.js} +2 -2
  197. package/dist/{chunk-8mx7qw3y.js.map → chunk-dvd2fp9q.js.map} +3 -3
  198. package/dist/{chunk-bwjcehza.js → chunk-e17zdm62.js} +6 -12
  199. package/dist/{chunk-bwjcehza.js.map → chunk-e17zdm62.js.map} +3 -4
  200. package/dist/{chunk-tpn40322.js → chunk-e6k4thh5.js} +11 -10
  201. package/dist/{chunk-tpn40322.js.map → chunk-e6k4thh5.js.map} +3 -3
  202. package/dist/{chunk-tw03bsmb.js → chunk-eptrvnby.js} +224 -3
  203. package/dist/chunk-eptrvnby.js.map +12 -0
  204. package/dist/{chunk-xt1zt7gv.js → chunk-f4pamkt9.js} +30 -23
  205. package/dist/chunk-f4pamkt9.js.map +12 -0
  206. package/dist/chunk-ff5xkv0p.js +211 -0
  207. package/dist/chunk-ff5xkv0p.js.map +10 -0
  208. package/dist/{chunk-bpgy64fw.js → chunk-g257jwnc.js} +10 -4
  209. package/dist/{chunk-bpgy64fw.js.map → chunk-g257jwnc.js.map} +3 -3
  210. package/dist/chunk-g5bvzyyr.js +32 -0
  211. package/dist/chunk-g5bvzyyr.js.map +10 -0
  212. package/dist/{chunk-2jntasmh.js → chunk-hcbyfxbe.js} +25 -49
  213. package/dist/chunk-hcbyfxbe.js.map +12 -0
  214. package/dist/chunk-hke9aeen.js +9 -0
  215. package/dist/chunk-hke9aeen.js.map +10 -0
  216. package/dist/{chunk-1sr8ryzk.js → chunk-hwksyjks.js} +122 -1
  217. package/dist/{chunk-1sr8ryzk.js.map → chunk-hwksyjks.js.map} +3 -3
  218. package/dist/chunk-jcfw4h7m.js +9 -0
  219. package/dist/chunk-jcfw4h7m.js.map +10 -0
  220. package/dist/{chunk-85yvv5n0.js → chunk-k43ct2ke.js} +20 -11
  221. package/dist/chunk-k43ct2ke.js.map +12 -0
  222. package/dist/{chunk-dnmadg9k.js → chunk-kge7k6ey.js} +40 -8
  223. package/dist/chunk-kge7k6ey.js.map +15 -0
  224. package/dist/{chunk-wz0xs816.js → chunk-ky3j490c.js} +2 -2
  225. package/dist/chunk-mjddfa7k.js +129 -0
  226. package/dist/chunk-mjddfa7k.js.map +12 -0
  227. package/dist/{chunk-3gnrh4ve.js → chunk-nn5xnx3s.js} +86 -111
  228. package/dist/chunk-nn5xnx3s.js.map +40 -0
  229. package/dist/{chunk-rz53yb4v.js → chunk-q5e5tv4b.js} +35 -7
  230. package/dist/{chunk-rz53yb4v.js.map → chunk-q5e5tv4b.js.map} +3 -3
  231. package/dist/{chunk-vyf9kfqf.js → chunk-q7gn29y3.js} +1 -1
  232. package/dist/{chunk-d2ync1v3.js → chunk-rmakanzx.js} +10 -12
  233. package/dist/{chunk-d2ync1v3.js.map → chunk-rmakanzx.js.map} +3 -4
  234. package/dist/{chunk-v9xd5wzd.js → chunk-s7jg7pmn.js} +1 -1
  235. package/dist/chunk-tbc1ngpd.js +642 -0
  236. package/dist/chunk-tbc1ngpd.js.map +18 -0
  237. package/dist/chunk-twe4dx8p.js +676 -0
  238. package/dist/chunk-twe4dx8p.js.map +15 -0
  239. package/dist/{chunk-nre82s12.js → chunk-vf57cr4t.js} +2 -2
  240. package/dist/{chunk-9ybhtmg4.js → chunk-vvxtn22d.js} +1 -1
  241. package/dist/{chunk-jhm3zsa7.js → chunk-wkv3h3q7.js} +64 -2
  242. package/dist/{chunk-jhm3zsa7.js.map → chunk-wkv3h3q7.js.map} +3 -3
  243. package/dist/chunk-x0v3jd47.js +124 -0
  244. package/dist/chunk-x0v3jd47.js.map +10 -0
  245. package/dist/{chunk-7t429e3f.js → chunk-xvsc5m8n.js} +1 -1
  246. package/dist/{chunk-kg5j6fct.js → chunk-y5tah2kf.js} +1 -1
  247. package/dist/{chunk-52bk93x8.js → chunk-z58tm0hm.js} +2 -2
  248. package/dist/datasets/builders.d.ts +15 -2
  249. package/dist/datasets/builders.d.ts.map +1 -1
  250. package/dist/datasets/column-index.d.ts +7 -0
  251. package/dist/datasets/column-index.d.ts.map +1 -0
  252. package/dist/datasets/execution.d.ts +3 -2
  253. package/dist/datasets/execution.d.ts.map +1 -1
  254. package/dist/datasets/write.js +8 -8
  255. package/dist/deploy/internal.js +4 -3
  256. package/dist/deploy/internal.js.map +4 -4
  257. package/dist/deploy/services.d.ts.map +1 -1
  258. package/dist/deploy/types.d.ts +1 -2
  259. package/dist/deploy/types.d.ts.map +1 -1
  260. package/dist/error-reporting/internal.js +4 -4
  261. package/dist/errors/internal.d.ts +1 -0
  262. package/dist/errors/internal.d.ts.map +1 -1
  263. package/dist/errors/internal.js +7 -4
  264. package/dist/errors/internal.js.map +1 -1
  265. package/dist/events/execution.d.ts +12 -2
  266. package/dist/events/execution.d.ts.map +1 -1
  267. package/dist/events/index.js +4 -4
  268. package/dist/execution/agent.js +56 -49
  269. package/dist/execution/agent.js.map +1 -1
  270. package/dist/execution/authorization.d.ts.map +1 -1
  271. package/dist/execution/authorized-object-reader.d.ts +52 -11
  272. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  273. package/dist/execution/object-reader-clearance.d.ts +41 -0
  274. package/dist/execution/object-reader-clearance.d.ts.map +1 -0
  275. package/dist/execution/object-reader-ontology.d.ts +12 -0
  276. package/dist/execution/object-reader-ontology.d.ts.map +1 -0
  277. package/dist/execution/object-reader-security.d.ts +45 -0
  278. package/dist/execution/object-reader-security.d.ts.map +1 -0
  279. package/dist/execution/primitive.js +54 -47
  280. package/dist/execution/primitive.js.map +1 -1
  281. package/dist/execution/request.js +49 -42
  282. package/dist/execution/request.js.map +2 -2
  283. package/dist/http/api-routes.d.ts.map +1 -1
  284. package/dist/http/index.js +1 -1
  285. package/dist/index.d.ts +23 -7
  286. package/dist/index.d.ts.map +1 -1
  287. package/dist/index.js +111 -109
  288. package/dist/index.js.map +1 -1
  289. package/dist/lake-storage/in-memory.d.ts +1 -0
  290. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  291. package/dist/lake-storage/index.d.ts +6 -3
  292. package/dist/lake-storage/index.d.ts.map +1 -1
  293. package/dist/lake-storage/index.js +21 -13
  294. package/dist/lake-storage/index.js.map +1 -1
  295. package/dist/lake-storage/lineage.d.ts +94 -0
  296. package/dist/lake-storage/lineage.d.ts.map +1 -0
  297. package/dist/lake-storage/sql-transforms.d.ts +45 -0
  298. package/dist/lake-storage/sql-transforms.d.ts.map +1 -1
  299. package/dist/lake-storage/types.d.ts +55 -1
  300. package/dist/lake-storage/types.d.ts.map +1 -1
  301. package/dist/lake-storage/version-inputs.d.ts +14 -3
  302. package/dist/lake-storage/version-inputs.d.ts.map +1 -1
  303. package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
  304. package/dist/materializer/index.js +31 -30
  305. package/dist/materializer/index.js.map +1 -1
  306. package/dist/models/execution/index.js +26 -25
  307. package/dist/models/execution/index.js.map +1 -1
  308. package/dist/objects/clearance-redaction.d.ts +27 -0
  309. package/dist/objects/clearance-redaction.d.ts.map +1 -0
  310. package/dist/objects/index.js +54 -47
  311. package/dist/objects/index.js.map +1 -1
  312. package/dist/objects/link/authorization.d.ts +8 -5
  313. package/dist/objects/link/authorization.d.ts.map +1 -1
  314. package/dist/objects/link/upsert-batch.d.ts.map +1 -1
  315. package/dist/objects/object/delete.d.ts.map +1 -1
  316. package/dist/objects/object/upsert-batch.d.ts.map +1 -1
  317. package/dist/objects/object/upsert.d.ts.map +1 -1
  318. package/dist/objects/property-clearance.d.ts +47 -24
  319. package/dist/objects/property-clearance.d.ts.map +1 -1
  320. package/dist/objects/query/clearance-admission.d.ts +10 -0
  321. package/dist/objects/query/clearance-admission.d.ts.map +1 -0
  322. package/dist/objects/query/index.js +29 -28
  323. package/dist/objects/query/index.js.map +1 -1
  324. package/dist/objects/query/link-query-clearance.d.ts +21 -0
  325. package/dist/objects/query/link-query-clearance.d.ts.map +1 -0
  326. package/dist/objects/vectors/handle.d.ts.map +1 -1
  327. package/dist/objects/vectors/profile.d.ts +5 -0
  328. package/dist/objects/vectors/profile.d.ts.map +1 -1
  329. package/dist/ontology/builders.d.ts.map +1 -1
  330. package/dist/ontology/docs-markdown.d.ts +1 -1
  331. package/dist/ontology/docs-markdown.d.ts.map +1 -1
  332. package/dist/ontology/index.js +7 -7
  333. package/dist/ontology/internal.js +4 -4
  334. package/dist/ontology/internal.js.map +1 -1
  335. package/dist/pipelines/index.d.ts +2 -0
  336. package/dist/pipelines/index.d.ts.map +1 -1
  337. package/dist/pipelines/index.js +47 -35
  338. package/dist/pipelines/index.js.map +1 -1
  339. package/dist/pipelines/lineage.d.ts +17 -0
  340. package/dist/pipelines/lineage.d.ts.map +1 -0
  341. package/dist/projections/internal.d.ts +2 -2
  342. package/dist/projections/internal.js +30 -29
  343. package/dist/projections/internal.js.map +1 -1
  344. package/dist/runtime/create.d.ts +3 -0
  345. package/dist/runtime/create.d.ts.map +1 -1
  346. package/dist/runtime/host.d.ts +6 -0
  347. package/dist/runtime/host.d.ts.map +1 -1
  348. package/dist/runtime/internal.d.ts +2 -0
  349. package/dist/runtime/internal.d.ts.map +1 -1
  350. package/dist/runtime/internal.js +46 -42
  351. package/dist/runtime/internal.js.map +1 -1
  352. package/dist/runtime/ontology-mutations.d.ts +2 -0
  353. package/dist/runtime/ontology-mutations.d.ts.map +1 -1
  354. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  355. package/dist/runtime/sixb.d.ts +8 -0
  356. package/dist/runtime/sixb.d.ts.map +1 -1
  357. package/dist/sandboxes/auth.d.ts +16 -0
  358. package/dist/sandboxes/auth.d.ts.map +1 -1
  359. package/dist/sandboxes/config.d.ts.map +1 -1
  360. package/dist/sandboxes/configuration.d.ts +26 -0
  361. package/dist/sandboxes/configuration.d.ts.map +1 -1
  362. package/dist/sandboxes/index.d.ts +1 -1
  363. package/dist/sandboxes/index.d.ts.map +1 -1
  364. package/dist/sandboxes/index.js +14 -13
  365. package/dist/sandboxes/index.js.map +1 -1
  366. package/dist/sandboxes/sandbox.d.ts +28 -5
  367. package/dist/sandboxes/sandbox.d.ts.map +1 -1
  368. package/dist/security/applied-markings-contribution.d.ts +58 -0
  369. package/dist/security/applied-markings-contribution.d.ts.map +1 -0
  370. package/dist/security/applied-markings-host.d.ts +10 -0
  371. package/dist/security/applied-markings-host.d.ts.map +1 -0
  372. package/dist/security/applied-markings-snapshot.d.ts +67 -0
  373. package/dist/security/applied-markings-snapshot.d.ts.map +1 -0
  374. package/dist/security/applied-markings.d.ts +73 -0
  375. package/dist/security/applied-markings.d.ts.map +1 -0
  376. package/dist/security/builders.d.ts.map +1 -1
  377. package/dist/security/dataset-version-markings.d.ts +47 -0
  378. package/dist/security/dataset-version-markings.d.ts.map +1 -0
  379. package/dist/security/every.d.ts +1 -4
  380. package/dist/security/every.d.ts.map +1 -1
  381. package/dist/security/grants.d.ts +4 -5
  382. package/dist/security/grants.d.ts.map +1 -1
  383. package/dist/security/index.d.ts +2 -2
  384. package/dist/security/index.d.ts.map +1 -1
  385. package/dist/security/internal.d.ts +15 -0
  386. package/dist/security/internal.d.ts.map +1 -0
  387. package/dist/security/internal.js +135 -0
  388. package/dist/security/internal.js.map +10 -0
  389. package/dist/security/marking-propagation.d.ts +62 -0
  390. package/dist/security/marking-propagation.d.ts.map +1 -0
  391. package/dist/security/marking-sets.d.ts +14 -0
  392. package/dist/security/marking-sets.d.ts.map +1 -0
  393. package/dist/security/markings.d.ts +6 -3
  394. package/dist/security/markings.d.ts.map +1 -1
  395. package/dist/security/membership-policies.d.ts.map +1 -1
  396. package/dist/security/pipeline-markings.d.ts +20 -0
  397. package/dist/security/pipeline-markings.d.ts.map +1 -0
  398. package/dist/security/project.d.ts +4 -0
  399. package/dist/security/project.d.ts.map +1 -0
  400. package/dist/security/projection-markings.d.ts +71 -0
  401. package/dist/security/projection-markings.d.ts.map +1 -0
  402. package/dist/security/public.d.ts +10 -0
  403. package/dist/security/public.d.ts.map +1 -0
  404. package/dist/security/public.js +10 -0
  405. package/dist/security/public.js.map +9 -0
  406. package/dist/security/redactions.d.ts +4 -1
  407. package/dist/security/redactions.d.ts.map +1 -1
  408. package/dist/security/registry.d.ts +0 -1
  409. package/dist/security/registry.d.ts.map +1 -1
  410. package/dist/security/types.d.ts +34 -19
  411. package/dist/security/types.d.ts.map +1 -1
  412. package/dist/security/validation.d.ts +0 -6
  413. package/dist/security/validation.d.ts.map +1 -1
  414. package/dist/shares/internal.js +25 -24
  415. package/dist/shares/internal.js.map +2 -2
  416. package/dist/storage/action-runs/failure.js +3 -3
  417. package/dist/storage/action-runs/in-memory.d.ts +4 -0
  418. package/dist/storage/action-runs/in-memory.d.ts.map +1 -1
  419. package/dist/storage/action-runs/types.d.ts +8 -0
  420. package/dist/storage/action-runs/types.d.ts.map +1 -1
  421. package/dist/storage/activity/in-memory.d.ts +55 -0
  422. package/dist/storage/activity/in-memory.d.ts.map +1 -0
  423. package/dist/storage/activity/index.d.ts +3 -0
  424. package/dist/storage/activity/index.d.ts.map +1 -0
  425. package/dist/storage/activity/policy.d.ts +96 -0
  426. package/dist/storage/activity/policy.d.ts.map +1 -0
  427. package/dist/storage/activity/types.d.ts +191 -0
  428. package/dist/storage/activity/types.d.ts.map +1 -0
  429. package/dist/storage/agents/in-memory.d.ts +4 -0
  430. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  431. package/dist/storage/agents/provider.d.ts.map +1 -1
  432. package/dist/storage/agents/provider.js +2 -5
  433. package/dist/storage/agents/provider.js.map +1 -1
  434. package/dist/storage/agents/types.d.ts +10 -9
  435. package/dist/storage/agents/types.d.ts.map +1 -1
  436. package/dist/storage/ai-limits/enforcement.js +3 -3
  437. package/dist/storage/artifacts/errors.d.ts +8 -0
  438. package/dist/storage/artifacts/errors.d.ts.map +1 -0
  439. package/dist/storage/artifacts/in-memory.d.ts +34 -0
  440. package/dist/storage/artifacts/in-memory.d.ts.map +1 -0
  441. package/dist/storage/artifacts/index.d.ts +5 -0
  442. package/dist/storage/artifacts/index.d.ts.map +1 -0
  443. package/dist/storage/artifacts/record.d.ts +17 -0
  444. package/dist/storage/artifacts/record.d.ts.map +1 -0
  445. package/dist/storage/artifacts/types.d.ts +184 -0
  446. package/dist/storage/artifacts/types.d.ts.map +1 -0
  447. package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
  448. package/dist/storage/auth/in-memory/magic-links.d.ts.map +1 -1
  449. package/dist/storage/auth/in-memory/oidc-attempts.d.ts.map +1 -1
  450. package/dist/storage/auth/in-memory/sessions.d.ts +2 -11
  451. package/dist/storage/auth/in-memory/sessions.d.ts.map +1 -1
  452. package/dist/storage/auth/in-memory/shared.d.ts +1 -2
  453. package/dist/storage/auth/in-memory/shared.d.ts.map +1 -1
  454. package/dist/storage/auth/index.d.ts +1 -1
  455. package/dist/storage/auth/index.d.ts.map +1 -1
  456. package/dist/storage/auth/types.d.ts +20 -17
  457. package/dist/storage/auth/types.d.ts.map +1 -1
  458. package/dist/storage/connector-connections/provider.js +2 -2
  459. package/dist/storage/executions/in-memory.d.ts +2 -1
  460. package/dist/storage/executions/in-memory.d.ts.map +1 -1
  461. package/dist/storage/executions/index.d.ts +1 -1
  462. package/dist/storage/executions/index.d.ts.map +1 -1
  463. package/dist/storage/executions/provider.d.ts +2 -0
  464. package/dist/storage/executions/provider.d.ts.map +1 -1
  465. package/dist/storage/executions/provider.js +9 -223
  466. package/dist/storage/executions/provider.js.map +3 -4
  467. package/dist/storage/executions/types.d.ts +31 -0
  468. package/dist/storage/executions/types.d.ts.map +1 -1
  469. package/dist/storage/file-upload-sessions/provider.js +12 -12
  470. package/dist/storage/in-memory/index.d.ts +8 -0
  471. package/dist/storage/in-memory/index.d.ts.map +1 -1
  472. package/dist/storage/index.d.ts +6 -4
  473. package/dist/storage/index.d.ts.map +1 -1
  474. package/dist/storage/index.js +47 -46
  475. package/dist/storage/index.js.map +1 -1
  476. package/dist/storage/internal.d.ts +3 -0
  477. package/dist/storage/internal.d.ts.map +1 -1
  478. package/dist/storage/internal.js +66 -16
  479. package/dist/storage/internal.js.map +1 -1
  480. package/dist/storage/ontology/in-memory/sources.d.ts +2 -1
  481. package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
  482. package/dist/storage/ontology/index.d.ts +1 -1
  483. package/dist/storage/ontology/index.d.ts.map +1 -1
  484. package/dist/storage/ontology/sources.d.ts +15 -0
  485. package/dist/storage/ontology/sources.d.ts.map +1 -1
  486. package/dist/storage/projection-runs/provider.js +3 -3
  487. package/dist/storage/share-grants/in-memory.d.ts +2 -1
  488. package/dist/storage/share-grants/in-memory.d.ts.map +1 -1
  489. package/dist/storage/share-grants/index.d.ts +1 -1
  490. package/dist/storage/share-grants/index.d.ts.map +1 -1
  491. package/dist/storage/share-grants/types.d.ts +6 -0
  492. package/dist/storage/share-grants/types.d.ts.map +1 -1
  493. package/dist/storage/types.d.ts +4 -0
  494. package/dist/storage/types.d.ts.map +1 -1
  495. package/dist/storage/workflow-runs/in-memory.d.ts +4 -0
  496. package/dist/storage/workflow-runs/in-memory.d.ts.map +1 -1
  497. package/dist/storage/workflow-runs/provider.js +14 -13
  498. package/dist/storage/workflow-runs/provider.js.map +1 -1
  499. package/dist/storage/workflow-runs/types.d.ts +5 -0
  500. package/dist/storage/workflow-runs/types.d.ts.map +1 -1
  501. package/dist/syncs/index.js +35 -34
  502. package/dist/syncs/index.js.map +1 -1
  503. package/dist/testing/action-run-storage-contract.d.ts.map +1 -1
  504. package/dist/testing/activity-storage-contract.d.ts +14 -0
  505. package/dist/testing/activity-storage-contract.d.ts.map +1 -0
  506. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  507. package/dist/testing/artifact-storage-contract.d.ts +13 -0
  508. package/dist/testing/artifact-storage-contract.d.ts.map +1 -0
  509. package/dist/testing/auth-storage-contract.d.ts.map +1 -1
  510. package/dist/testing/execution-storage-contract.d.ts.map +1 -1
  511. package/dist/testing/index.d.ts +2 -0
  512. package/dist/testing/index.d.ts.map +1 -1
  513. package/dist/testing/index.js +4493 -3225
  514. package/dist/testing/index.js.map +14 -12
  515. package/dist/testing/lake-merge-storage-contract.d.ts.map +1 -1
  516. package/dist/testing/lake-storage-contract.d.ts +2 -0
  517. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  518. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  519. package/dist/testing/share-grant-storage-contract.d.ts.map +1 -1
  520. package/dist/webhooks/internal.js +28 -27
  521. package/dist/webhooks/internal.js.map +2 -2
  522. package/dist/workers/index.js +2 -2
  523. package/dist/workflows/builders.d.ts.map +1 -1
  524. package/dist/workflows/index.js +57 -51
  525. package/dist/workflows/index.js.map +1 -1
  526. package/dist/workflows/types.d.ts +9 -0
  527. package/dist/workflows/types.d.ts.map +1 -1
  528. package/dist/workflows/validation.d.ts +7 -0
  529. package/dist/workflows/validation.d.ts.map +1 -1
  530. package/package.json +32 -2
  531. package/src/actions/execution.ts +18 -13
  532. package/src/actions/request.ts +18 -3
  533. package/src/actions/run-authorization.ts +23 -0
  534. package/src/activity/README.md +155 -0
  535. package/src/activity/connection.ts +217 -0
  536. package/src/activity/device.ts +41 -0
  537. package/src/activity/execution.ts +210 -0
  538. package/src/activity/service.ts +274 -0
  539. package/src/activity/shares.ts +62 -0
  540. package/src/activity/timeline.ts +424 -0
  541. package/src/agents/index.ts +8 -3
  542. package/src/agents/request.ts +5 -0
  543. package/src/agents/skills.ts +6 -0
  544. package/src/agents/types.ts +8 -8
  545. package/src/agents/validation.ts +2 -0
  546. package/src/artifacts/address.ts +132 -0
  547. package/src/artifacts/csv.ts +108 -0
  548. package/src/artifacts/errors.ts +21 -0
  549. package/src/artifacts/execution.ts +153 -0
  550. package/src/artifacts/frames/assets.ts +88 -0
  551. package/src/artifacts/frames/grants.ts +124 -0
  552. package/src/artifacts/frames/index.ts +15 -0
  553. package/src/artifacts/frames/kit.ts +392 -0
  554. package/src/artifacts/frames/probe.ts +309 -0
  555. package/src/artifacts/frames/protocol.ts +174 -0
  556. package/src/artifacts/frames/runtime.ts +213 -0
  557. package/src/artifacts/html.ts +25 -0
  558. package/src/artifacts/ids.ts +18 -0
  559. package/src/artifacts/index.ts +61 -0
  560. package/src/artifacts/kinds.ts +8 -0
  561. package/src/artifacts/limits.ts +27 -0
  562. package/src/artifacts/outline.ts +62 -0
  563. package/src/artifacts/publish/files.ts +87 -0
  564. package/src/artifacts/publish/index.ts +12 -0
  565. package/src/artifacts/publish/publish.ts +250 -0
  566. package/src/artifacts/publish/references.ts +130 -0
  567. package/src/artifacts/publish/validate/document.ts +114 -0
  568. package/src/artifacts/publish/validate/file.ts +19 -0
  569. package/src/artifacts/publish/validate/sheet.ts +251 -0
  570. package/src/artifacts/publish/validate/slides.ts +134 -0
  571. package/src/artifacts/references.ts +11 -0
  572. package/src/artifacts/resolve.ts +97 -0
  573. package/src/artifacts/theme.ts +116 -0
  574. package/src/artifacts/warnings.ts +10 -0
  575. package/src/artifacts/workbook.ts +315 -0
  576. package/src/auth/cookies.ts +3 -20
  577. package/src/auth/index.ts +0 -6
  578. package/src/auth/runtime.ts +59 -76
  579. package/src/auth/session-cache.ts +2 -9
  580. package/src/auth/types.ts +4 -8
  581. package/src/auth/validation.ts +0 -2
  582. package/src/authorization/decision.ts +13 -23
  583. package/src/authorization/grant-kinds.ts +33 -28
  584. package/src/authorization/index.ts +0 -1
  585. package/src/authorization/resolve.ts +10 -6
  586. package/src/blob-storage/internal.ts +1 -1
  587. package/src/blob-storage/media-type.ts +69 -0
  588. package/src/datasets/builders.ts +66 -2
  589. package/src/datasets/column-index.ts +19 -0
  590. package/src/datasets/execution.ts +23 -9
  591. package/src/deploy/services.ts +0 -1
  592. package/src/deploy/types.ts +1 -2
  593. package/src/deploy/validation.ts +3 -1
  594. package/src/errors/internal.ts +1 -0
  595. package/src/events/execution.ts +134 -21
  596. package/src/execution/authorization.ts +11 -5
  597. package/src/execution/authorized-object-reader.ts +270 -256
  598. package/src/execution/object-reader-clearance.ts +91 -0
  599. package/src/execution/object-reader-ontology.ts +63 -0
  600. package/src/execution/object-reader-security.ts +146 -0
  601. package/src/http/api-routes.ts +125 -0
  602. package/src/index.ts +72 -17
  603. package/src/lake-storage/in-memory.ts +26 -3
  604. package/src/lake-storage/index.ts +13 -1
  605. package/src/lake-storage/lineage.ts +385 -0
  606. package/src/lake-storage/sql-transforms.ts +45 -0
  607. package/src/lake-storage/types.ts +59 -1
  608. package/src/lake-storage/version-inputs.ts +35 -6
  609. package/src/maintenance/ontology-maintenance.ts +15 -0
  610. package/src/models/execution/embedding.ts +6 -6
  611. package/src/objects/clearance-redaction.ts +138 -0
  612. package/src/objects/link/authorization.ts +27 -7
  613. package/src/objects/link/remove.ts +2 -2
  614. package/src/objects/link/upsert-batch.ts +7 -5
  615. package/src/objects/link/upsert.ts +2 -2
  616. package/src/objects/object/delete.ts +2 -0
  617. package/src/objects/object/upsert-batch.ts +2 -4
  618. package/src/objects/object/upsert.ts +2 -3
  619. package/src/objects/property-clearance.ts +171 -152
  620. package/src/objects/query/clearance-admission.ts +112 -0
  621. package/src/objects/query/link-query-clearance.ts +73 -0
  622. package/src/objects/vectors/README.md +4 -0
  623. package/src/objects/vectors/handle.ts +11 -2
  624. package/src/objects/vectors/indexing-generate.ts +2 -2
  625. package/src/objects/vectors/profile.ts +5 -0
  626. package/src/ontology/builders.ts +12 -1
  627. package/src/ontology/docs-markdown.ts +1 -1
  628. package/src/pipelines/index.ts +2 -0
  629. package/src/pipelines/lineage.ts +45 -0
  630. package/src/projections/internal.ts +2 -2
  631. package/src/runtime/create.ts +4 -0
  632. package/src/runtime/host.ts +55 -0
  633. package/src/runtime/internal.ts +2 -0
  634. package/src/runtime/ontology-mutations.ts +19 -4
  635. package/src/runtime/resolve-definitions.ts +66 -3
  636. package/src/runtime/sixb.ts +18 -1
  637. package/src/sandboxes/README.md +29 -7
  638. package/src/sandboxes/auth.ts +16 -0
  639. package/src/sandboxes/config.ts +2 -7
  640. package/src/sandboxes/configuration.ts +61 -7
  641. package/src/sandboxes/index.ts +1 -0
  642. package/src/sandboxes/sandbox.ts +27 -5
  643. package/src/security/applied-markings-contribution.ts +277 -0
  644. package/src/security/applied-markings-host.ts +41 -0
  645. package/src/security/applied-markings-snapshot.ts +235 -0
  646. package/src/security/applied-markings.ts +405 -0
  647. package/src/security/builders.ts +7 -2
  648. package/src/security/dataset-version-markings.ts +163 -0
  649. package/src/security/every.ts +0 -4
  650. package/src/security/grants.ts +42 -27
  651. package/src/security/index.ts +3 -3
  652. package/src/security/internal.ts +18 -0
  653. package/src/security/marking-propagation.ts +255 -0
  654. package/src/security/marking-sets.ts +42 -0
  655. package/src/security/markings.ts +29 -178
  656. package/src/security/membership-policies.ts +3 -1
  657. package/src/security/pipeline-markings.ts +175 -0
  658. package/src/security/project.ts +8 -0
  659. package/src/security/projection-markings.ts +421 -0
  660. package/src/security/public.ts +10 -0
  661. package/src/security/redactions.ts +7 -2
  662. package/src/security/registry.ts +0 -8
  663. package/src/security/types.ts +38 -26
  664. package/src/security/validation.ts +28 -19
  665. package/src/storage/action-runs/in-memory.ts +18 -0
  666. package/src/storage/action-runs/types.ts +8 -0
  667. package/src/storage/activity/in-memory.ts +374 -0
  668. package/src/storage/activity/index.ts +27 -0
  669. package/src/storage/activity/policy.ts +430 -0
  670. package/src/storage/activity/types.ts +211 -0
  671. package/src/storage/agents/in-memory.ts +10 -0
  672. package/src/storage/agents/provider.ts +2 -13
  673. package/src/storage/agents/types.ts +10 -17
  674. package/src/storage/artifacts/errors.ts +16 -0
  675. package/src/storage/artifacts/in-memory.ts +240 -0
  676. package/src/storage/artifacts/index.ts +30 -0
  677. package/src/storage/artifacts/record.ts +200 -0
  678. package/src/storage/artifacts/types.ts +209 -0
  679. package/src/storage/auth/in-memory/auth-storage.ts +0 -18
  680. package/src/storage/auth/in-memory/magic-links.ts +0 -3
  681. package/src/storage/auth/in-memory/oidc-attempts.ts +0 -3
  682. package/src/storage/auth/in-memory/sessions.ts +22 -25
  683. package/src/storage/auth/in-memory/shared.ts +1 -10
  684. package/src/storage/auth/index.ts +2 -0
  685. package/src/storage/auth/types.ts +20 -18
  686. package/src/storage/executions/in-memory.ts +61 -1
  687. package/src/storage/executions/index.ts +3 -0
  688. package/src/storage/executions/provider.ts +12 -0
  689. package/src/storage/executions/types.ts +30 -0
  690. package/src/storage/in-memory/index.ts +16 -0
  691. package/src/storage/index.ts +63 -0
  692. package/src/storage/internal.ts +30 -0
  693. package/src/storage/ontology/in-memory/sources.ts +23 -0
  694. package/src/storage/ontology/index.ts +2 -0
  695. package/src/storage/ontology/sources.ts +17 -0
  696. package/src/storage/share-grants/in-memory.ts +8 -0
  697. package/src/storage/share-grants/index.ts +1 -0
  698. package/src/storage/share-grants/types.ts +8 -0
  699. package/src/storage/types.ts +4 -0
  700. package/src/storage/workflow-runs/in-memory.ts +16 -0
  701. package/src/storage/workflow-runs/types.ts +5 -0
  702. package/src/testing/action-run-storage-contract.ts +25 -0
  703. package/src/testing/activity-storage-contract.ts +840 -0
  704. package/src/testing/agent-storage-contract.ts +22 -21
  705. package/src/testing/artifact-storage-contract.ts +517 -0
  706. package/src/testing/auth-storage-contract.ts +61 -107
  707. package/src/testing/execution-storage-contract.ts +147 -3
  708. package/src/testing/index.ts +9 -0
  709. package/src/testing/lake-merge-storage-contract.ts +38 -0
  710. package/src/testing/lake-storage-contract.ts +247 -2
  711. package/src/testing/materializer-storage-contract.ts +1 -0
  712. package/src/testing/ontology-storage-contract.ts +57 -2
  713. package/src/testing/share-grant-storage-contract.ts +15 -0
  714. package/src/workflows/builders.ts +14 -0
  715. package/src/workflows/types.ts +9 -0
  716. package/src/workflows/validation.ts +72 -0
  717. package/dist/auth/audience.d.ts +0 -8
  718. package/dist/auth/audience.d.ts.map +0 -1
  719. package/dist/authorization/application-access.d.ts +0 -18
  720. package/dist/authorization/application-access.d.ts.map +0 -1
  721. package/dist/chunk-1f7wpmyp.js.map +0 -14
  722. package/dist/chunk-1k89ecfr.js +0 -85
  723. package/dist/chunk-1k89ecfr.js.map +0 -10
  724. package/dist/chunk-2jntasmh.js.map +0 -13
  725. package/dist/chunk-3gnrh4ve.js.map +0 -40
  726. package/dist/chunk-85yvv5n0.js.map +0 -12
  727. package/dist/chunk-9gyp8hg1.js +0 -363
  728. package/dist/chunk-9gyp8hg1.js.map +0 -14
  729. package/dist/chunk-dnmadg9k.js.map +0 -15
  730. package/dist/chunk-enpsx8k5.js.map +0 -10
  731. package/dist/chunk-hkc3jct7.js.map +0 -10
  732. package/dist/chunk-kyzq4wy9.js.map +0 -18
  733. package/dist/chunk-s16apyk9.js +0 -256
  734. package/dist/chunk-s16apyk9.js.map +0 -16
  735. package/dist/chunk-s54c868q.js.map +0 -12
  736. package/dist/chunk-tw03bsmb.js.map +0 -11
  737. package/dist/chunk-wwdfe68s.js +0 -128
  738. package/dist/chunk-wwdfe68s.js.map +0 -11
  739. package/dist/chunk-xt1zt7gv.js.map +0 -13
  740. package/dist/chunk-y7rqfrgg.js.map +0 -24
  741. package/dist/security/applications.d.ts +0 -15
  742. package/dist/security/applications.d.ts.map +0 -1
  743. package/src/auth/audience.ts +0 -28
  744. package/src/authorization/application-access.ts +0 -34
  745. package/src/security/applications.ts +0 -11
  746. /package/dist/{chunk-t6vq7bff.js.map → chunk-0bphap9y.js.map} +0 -0
  747. /package/dist/{chunk-7mbzgd9m.js.map → chunk-1cc1xaf3.js.map} +0 -0
  748. /package/dist/{chunk-6gmfggss.js.map → chunk-431pyp2c.js.map} +0 -0
  749. /package/dist/{chunk-c85m1hyj.js.map → chunk-447a5c0p.js.map} +0 -0
  750. /package/dist/{chunk-80mc0971.js.map → chunk-561r0yc9.js.map} +0 -0
  751. /package/dist/{chunk-5e43w60z.js.map → chunk-5948n82c.js.map} +0 -0
  752. /package/dist/{chunk-yzwja0mj.js.map → chunk-5hx48dnn.js.map} +0 -0
  753. /package/dist/{chunk-q1vkr2ys.js.map → chunk-c1rxbz5y.js.map} +0 -0
  754. /package/dist/{chunk-gc4ntf7d.js.map → chunk-cwdzcv37.js.map} +0 -0
  755. /package/dist/{chunk-fa02jy15.js.map → chunk-cy4mbddw.js.map} +0 -0
  756. /package/dist/{chunk-7kg3k1m9.js.map → chunk-d09e3rax.js.map} +0 -0
  757. /package/dist/{chunk-rhg02hxq.js.map → chunk-d7dnxdep.js.map} +0 -0
  758. /package/dist/{chunk-wz0xs816.js.map → chunk-ky3j490c.js.map} +0 -0
  759. /package/dist/{chunk-vyf9kfqf.js.map → chunk-q7gn29y3.js.map} +0 -0
  760. /package/dist/{chunk-v9xd5wzd.js.map → chunk-s7jg7pmn.js.map} +0 -0
  761. /package/dist/{chunk-nre82s12.js.map → chunk-vf57cr4t.js.map} +0 -0
  762. /package/dist/{chunk-9ybhtmg4.js.map → chunk-vvxtn22d.js.map} +0 -0
  763. /package/dist/{chunk-7t429e3f.js.map → chunk-xvsc5m8n.js.map} +0 -0
  764. /package/dist/{chunk-kg5j6fct.js.map → chunk-y5tah2kf.js.map} +0 -0
  765. /package/dist/{chunk-52bk93x8.js.map → chunk-z58tm0hm.js.map} +0 -0
@@ -0,0 +1,235 @@
1
+ import type { ProjectionKeyTarget } from "./projection-markings"
2
+
3
+ /** Why readers lacking some markings cannot read an object type or a link. */
4
+ export interface AppliedSeal {
5
+ readonly projectionId: string
6
+ readonly markings: ReadonlySet<string>
7
+ /** What carries the marking, completed by "carries marking 'm'" in messages. */
8
+ readonly reason: string
9
+ }
10
+
11
+ export interface AppliedLinkSeals {
12
+ readonly objectTypeId: string
13
+ readonly linkId: string
14
+ readonly targetObjectTypeId: string
15
+ readonly seals: readonly AppliedSeal[]
16
+ }
17
+
18
+ export interface AppliedMarkingsNotice {
19
+ readonly projectionId: string
20
+ /** Whether the projection makes an object type or a link unreadable, not only properties. */
21
+ readonly sealed: boolean
22
+ readonly message: string
23
+ }
24
+
25
+ /**
26
+ * What the applied versions add to the ontology's markings.
27
+ *
28
+ * Every reader of a host shares one snapshot and the clearances resolved for it, so a snapshot is
29
+ * immutable all the way down: its maps and sets refuse writes.
30
+ */
31
+ export interface AppliedMarkingsSnapshot {
32
+ /** Surplus markings by object type, then property. */
33
+ readonly properties: ReadonlyMap<string, ReadonlyMap<string, ReadonlySet<string>>>
34
+ /** Object types readers lacking a seal's markings cannot read. */
35
+ readonly types: ReadonlyMap<string, readonly AppliedSeal[]>
36
+ /** Links, by {@link appliedLinkKey}, readers lacking a seal's markings cannot read. */
37
+ readonly links: ReadonlyMap<string, AppliedLinkSeals>
38
+ /** Every marking above: a reader cleared for all of them reads what the code allows. */
39
+ readonly markings: ReadonlySet<string>
40
+ /** One per projection whose applied version adds markings, for diagnostics. */
41
+ readonly notices: readonly AppliedMarkingsNotice[]
42
+ }
43
+
44
+ export function appliedLinkKey(objectTypeId: string, linkId: string): string {
45
+ return `${objectTypeId}\0${linkId}`
46
+ }
47
+
48
+ /** What one applied version adds, as plain data so that equal results serialize equally. */
49
+ export interface AppliedContribution {
50
+ readonly properties: readonly {
51
+ readonly objectTypeId: string
52
+ readonly propertyId: string
53
+ readonly markings: readonly string[]
54
+ }[]
55
+ readonly seals: readonly {
56
+ readonly target: ProjectionKeyTarget
57
+ readonly seal: {
58
+ readonly projectionId: string
59
+ readonly markings: readonly string[]
60
+ readonly reason: string
61
+ }
62
+ }[]
63
+ readonly notice?: AppliedMarkingsNotice
64
+ }
65
+
66
+ /** An applied version that adds nothing. */
67
+ export const NO_CONTRIBUTION: AppliedContribution = Object.freeze({
68
+ properties: Object.freeze([]),
69
+ seals: Object.freeze([]),
70
+ })
71
+
72
+ export const NO_APPLIED_MARKINGS: AppliedMarkingsSnapshot = Object.freeze({
73
+ properties: readonlyMap(new Map()),
74
+ types: readonlyMap(new Map()),
75
+ links: readonlyMap(new Map()),
76
+ markings: readonlySet(new Set<string>()),
77
+ notices: Object.freeze([]),
78
+ })
79
+
80
+ /** One snapshot from the contributions of every applied version, in projection order. */
81
+ export function assembleAppliedMarkings(
82
+ contributions: readonly AppliedContribution[]
83
+ ): AppliedMarkingsSnapshot {
84
+ if (contributions.length === 0) return NO_APPLIED_MARKINGS
85
+
86
+ const properties = new Map<string, Map<string, Set<string>>>()
87
+ const types = new Map<string, AppliedSeal[]>()
88
+ const links = new Map<string, AppliedLinkSeals & { seals: AppliedSeal[] }>()
89
+ const markings = new Set<string>()
90
+ const notices: AppliedMarkingsNotice[] = []
91
+
92
+ for (const contribution of contributions) {
93
+ for (const { objectTypeId, propertyId, markings: added } of contribution.properties) {
94
+ const byProperty = properties.get(objectTypeId) ?? new Map<string, Set<string>>()
95
+ properties.set(objectTypeId, byProperty)
96
+
97
+ const set = byProperty.get(propertyId) ?? new Set<string>()
98
+ byProperty.set(propertyId, set)
99
+
100
+ for (const markingId of added) {
101
+ set.add(markingId)
102
+ markings.add(markingId)
103
+ }
104
+ }
105
+
106
+ for (const { target, seal: data } of contribution.seals) {
107
+ const seal: AppliedSeal = Object.freeze({
108
+ ...data,
109
+ markings: readonlySet(new Set(data.markings)),
110
+ })
111
+
112
+ for (const markingId of data.markings) markings.add(markingId)
113
+
114
+ if (target.kind === "type") {
115
+ types.set(target.objectTypeId, [...(types.get(target.objectTypeId) ?? []), seal])
116
+ continue
117
+ }
118
+
119
+ const key = appliedLinkKey(target.objectTypeId, target.linkId)
120
+ const existing = links.get(key)
121
+ if (existing) existing.seals.push(seal)
122
+ else {
123
+ links.set(key, {
124
+ objectTypeId: target.objectTypeId,
125
+ linkId: target.linkId,
126
+ targetObjectTypeId: target.targetObjectTypeId,
127
+ seals: [seal],
128
+ })
129
+ }
130
+ }
131
+
132
+ if (contribution.notice) notices.push(Object.freeze({ ...contribution.notice }))
133
+ }
134
+
135
+ return Object.freeze({
136
+ properties: readonlyMap(
137
+ new Map(
138
+ [...properties].map(([objectTypeId, byProperty]) => [
139
+ objectTypeId,
140
+ readonlyMap(
141
+ new Map([...byProperty].map(([propertyId, set]) => [propertyId, readonlySet(set)]))
142
+ ),
143
+ ])
144
+ )
145
+ ),
146
+ types: readonlyMap(
147
+ new Map([...types].map(([objectTypeId, seals]) => [objectTypeId, Object.freeze(seals)]))
148
+ ),
149
+ links: readonlyMap(
150
+ new Map(
151
+ [...links].map(([key, link]) => [
152
+ key,
153
+ Object.freeze({ ...link, seals: Object.freeze(link.seals) }),
154
+ ])
155
+ )
156
+ ),
157
+ markings: readonlySet(markings),
158
+ notices: Object.freeze(notices),
159
+ })
160
+ }
161
+
162
+ /**
163
+ * The snapshot with these properties' markings added: what an object event reads under, given the
164
+ * markings its origin version carries on them.
165
+ */
166
+ export function withPropertyMarkings(
167
+ snapshot: AppliedMarkingsSnapshot,
168
+ added: AppliedContribution["properties"]
169
+ ): AppliedMarkingsSnapshot {
170
+ if (added.length === 0) return snapshot
171
+
172
+ const properties = new Map<string, Map<string, Set<string>>>(
173
+ [...snapshot.properties].map(([objectTypeId, byProperty]) => [
174
+ objectTypeId,
175
+ new Map([...byProperty].map(([propertyId, set]) => [propertyId, new Set(set)])),
176
+ ])
177
+ )
178
+
179
+ const markings = new Set(snapshot.markings)
180
+ for (const { objectTypeId, propertyId, markings: ids } of added) {
181
+ const byProperty = properties.get(objectTypeId) ?? new Map<string, Set<string>>()
182
+ properties.set(objectTypeId, byProperty)
183
+
184
+ const set = byProperty.get(propertyId) ?? new Set<string>()
185
+ byProperty.set(propertyId, set)
186
+
187
+ for (const markingId of ids) {
188
+ set.add(markingId)
189
+ markings.add(markingId)
190
+ }
191
+ }
192
+
193
+ return Object.freeze({
194
+ ...snapshot,
195
+ properties: readonlyMap(
196
+ new Map(
197
+ [...properties].map(([objectTypeId, byProperty]) => [
198
+ objectTypeId,
199
+ readonlyMap(
200
+ new Map([...byProperty].map(([propertyId, set]) => [propertyId, readonlySet(set)]))
201
+ ),
202
+ ])
203
+ )
204
+ ),
205
+ markings: readonlySet(markings),
206
+ })
207
+ }
208
+
209
+ /**
210
+ * A map that refuses writes. `Object.freeze` alone leaves a map's entries writable through its
211
+ * methods, so they are shadowed by ones that throw, and then frozen.
212
+ */
213
+ function readonlyMap<TKey, TValue>(map: Map<TKey, TValue>): ReadonlyMap<TKey, TValue> {
214
+ return Object.freeze(
215
+ Object.defineProperties(map, {
216
+ set: { value: refuseWrite },
217
+ delete: { value: refuseWrite },
218
+ clear: { value: refuseWrite },
219
+ })
220
+ )
221
+ }
222
+
223
+ function readonlySet<TValue>(set: Set<TValue>): ReadonlySet<TValue> {
224
+ return Object.freeze(
225
+ Object.defineProperties(set, {
226
+ add: { value: refuseWrite },
227
+ delete: { value: refuseWrite },
228
+ clear: { value: refuseWrite },
229
+ })
230
+ )
231
+ }
232
+
233
+ function refuseWrite(): never {
234
+ throw new TypeError("[Sixb] Applied markings are immutable.")
235
+ }
@@ -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
+ }
@@ -39,7 +39,12 @@ export interface DefineMembershipPolicyOptions {
39
39
  readonly can: readonly MembershipOperation[]
40
40
  }
41
41
 
42
- const MEMBERSHIP_OPERATIONS = new Set<MembershipOperation>(["invite", "assignGroups", "suspend"])
42
+ const MEMBERSHIP_OPERATIONS = new Set<MembershipOperation>([
43
+ "invite",
44
+ "assignGroups",
45
+ "suspend",
46
+ "serviceAccounts",
47
+ ])
43
48
 
44
49
  function assertNonEmptyArray<T>(value: readonly T[], field: string): void {
45
50
  if (value.length === 0) {
@@ -65,7 +70,7 @@ function membershipOperationsFrom(
65
70
  return operations.map((operation) => {
66
71
  if (!MEMBERSHIP_OPERATIONS.has(operation)) {
67
72
  throw new SecurityValidationError(
68
- `[Sixb] ${field} must contain only membership operations: invite, assignGroups, suspend.`
73
+ `[Sixb] ${field} must contain only membership operations: invite, assignGroups, suspend, serviceAccounts.`
69
74
  )
70
75
  }
71
76