@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,392 @@
1
+ const FONTS = {
2
+ "--font-sans":
3
+ '"SF Pro Text", "SF Pro Display", "Segoe UI Variable Text", "Segoe UI", system-ui, sans-serif',
4
+ "--font-serif": 'ui-serif, Georgia, Cambria, "Times New Roman", Times, serif',
5
+ "--font-mono": '"SF Mono", "Geist Mono", "JetBrains Mono", ui-monospace, monospace',
6
+ } as const
7
+
8
+ /**
9
+ * Sixb's default theme, light and dark: the values `@sixb/ui`'s globals.css gives the tokens the
10
+ * app sends into a frame, which an artifact's theme may set. The kit starts from the light one
11
+ * until the app's arrive, and the layout check measures a deck in both, since a deck follows the
12
+ * app's mode and the project's own theme is out of the sandbox's reach.
13
+ */
14
+ export const FRAME_DEFAULT_THEMES = {
15
+ light: {
16
+ dark: false,
17
+ tokens: {
18
+ "--background": "#fafafa",
19
+ "--foreground": "#101010",
20
+ "--card": "#ffffff",
21
+ "--card-foreground": "#101010",
22
+ "--muted": "#f4f4f4",
23
+ "--muted-foreground": "#5f5f5f",
24
+ "--primary": "#0a0a0a",
25
+ "--primary-foreground": "#ffffff",
26
+ "--accent": "#f0f0f0",
27
+ "--accent-foreground": "#202020",
28
+ "--border": "#e2e2e2",
29
+ "--chart-1": "#101010",
30
+ "--chart-2": "#404040",
31
+ "--chart-3": "#737373",
32
+ "--chart-4": "#a3a3a3",
33
+ "--chart-5": "#d4d4d4",
34
+ ...FONTS,
35
+ "--radius": "0.5rem",
36
+ },
37
+ },
38
+ dark: {
39
+ dark: true,
40
+ tokens: {
41
+ "--background": "#0a0a0a",
42
+ "--foreground": "#f4f4f4",
43
+ "--card": "#141414",
44
+ "--card-foreground": "#f4f4f4",
45
+ "--muted": "#1c1c1c",
46
+ "--muted-foreground": "#8a8a8a",
47
+ "--primary": "#f4f4f4",
48
+ "--primary-foreground": "#0a0a0a",
49
+ "--accent": "#1c1c1c",
50
+ "--accent-foreground": "#f4f4f4",
51
+ "--border": "#262626",
52
+ "--chart-1": "#f4f4f4",
53
+ "--chart-2": "#c4c4c4",
54
+ "--chart-3": "#8a8a8a",
55
+ "--chart-4": "#5f5f5f",
56
+ "--chart-5": "#404040",
57
+ ...FONTS,
58
+ // `.dark` keeps the light radius.
59
+ "--radius": "0.5rem",
60
+ },
61
+ },
62
+ } as const
63
+
64
+ const LIGHT = FRAME_DEFAULT_THEMES.light.tokens
65
+
66
+ /**
67
+ * The kit the frame injects into a deck: the stage that shows one slide or all of them, the slide
68
+ * type scale, the layouts a slide picks by class, the slide chrome, and a few components. It reads
69
+ * the app's theme tokens, which the app sends into the frame, with the light defaults until they
70
+ * arrive. Everything sits in cascade layers, so the deck's own CSS, unlayered, always wins.
71
+ */
72
+ export const FRAME_KIT_CSS = `
73
+ @layer sixb-kit, sixb-theme;
74
+
75
+ @layer sixb-kit {
76
+ :root {
77
+ ${Object.entries(LIGHT)
78
+ .map(([name, value]) => ` ${name}: ${value};`)
79
+ .join("\n")}
80
+ --sixb-scale: 1;
81
+ --sixb-overview-scale: 0.25;
82
+ --sixb-columns: 4;
83
+ --sixb-stage: ${LIGHT["--muted"]};
84
+ --sixb-stage-border: ${LIGHT["--border"]};
85
+ --sixb-stage-foreground: ${LIGHT["--foreground"]};
86
+ }
87
+
88
+ *, *::before, *::after { box-sizing: border-box; }
89
+ html, body { margin: 0; padding: 0; }
90
+ body {
91
+ background: var(--muted);
92
+ color: var(--foreground);
93
+ font-family: var(--font-sans);
94
+ -webkit-font-smoothing: antialiased;
95
+ }
96
+
97
+ /*
98
+ * The stage: a slide's size and scale, which slides show, and the stage around them, in the
99
+ * app's colors (--sixb-stage and its kin, which only the app's theme sets). A deck's own CSS, unlayered,
100
+ * wins over everything else in the kit, so these alone are important: an important declaration
101
+ * in a layer wins over every unlayered one, a deck's own important ones included. Otherwise a
102
+ * deck that sets display on its closing slide shows it under every other, and one that sets its
103
+ * body's background repaints the stage.
104
+ */
105
+ html.sixb-deck section.slide { width: 1280px !important; height: 720px !important; flex: none !important; }
106
+
107
+ /* One slide at a time, scaled to fit and centered on the stage. */
108
+ html.sixb-deck:not([data-mode="overview"]),
109
+ html.sixb-deck:not([data-mode="overview"]) body { height: 100% !important; overflow: hidden !important; }
110
+ html.sixb-deck:not([data-mode="overview"]) body {
111
+ margin: 0 !important;
112
+ padding: 0 !important;
113
+ display: grid !important;
114
+ place-items: center !important;
115
+ background: var(--sixb-stage) !important;
116
+ }
117
+ html.sixb-deck:not([data-mode="overview"]) section.slide { zoom: var(--sixb-scale) !important; }
118
+ html.sixb-deck:not([data-mode="overview"]) section.slide:not([data-current]) { display: none !important; }
119
+ html.sixb-deck[data-mode="slide"] section.slide {
120
+ border-radius: calc(10px / var(--sixb-scale)) !important;
121
+ box-shadow: 0 0 0 calc(1px / var(--sixb-scale)) var(--sixb-stage-border) !important;
122
+ }
123
+ /* Filled, the slide is the whole frame, as a thumbnail or an embed shows it; presented, it
124
+ fills the page on black. */
125
+ html.sixb-deck:is([data-mode="fill"], [data-mode="present"]) section.slide {
126
+ border-radius: 0 !important;
127
+ box-shadow: none !important;
128
+ }
129
+ html.sixb-deck[data-mode="present"] body { background: #000 !important; }
130
+
131
+ /* Every slide in a grid. */
132
+ html.sixb-deck[data-mode="overview"],
133
+ html.sixb-deck[data-mode="overview"] body { height: 100% !important; overflow: auto !important; }
134
+ html.sixb-deck[data-mode="overview"] body {
135
+ margin: 0 !important;
136
+ display: grid !important;
137
+ grid-template-columns: repeat(var(--sixb-columns), max-content) !important;
138
+ justify-content: center !important;
139
+ align-content: start !important;
140
+ gap: 16px !important;
141
+ padding: 16px !important;
142
+ background: var(--sixb-stage) !important;
143
+ }
144
+ html.sixb-deck[data-mode="overview"] section.slide {
145
+ zoom: var(--sixb-overview-scale) !important;
146
+ cursor: pointer;
147
+ border-radius: calc(6px / var(--sixb-overview-scale)) !important;
148
+ box-shadow: 0 0 0 calc(1px / var(--sixb-overview-scale)) var(--sixb-stage-border) !important;
149
+ }
150
+ html.sixb-deck[data-mode="overview"] section.slide[data-current] {
151
+ box-shadow: 0 0 0 calc(1px / var(--sixb-overview-scale)) var(--sixb-stage-foreground) !important;
152
+ outline: calc(2px / var(--sixb-overview-scale)) solid var(--sixb-stage-foreground) !important;
153
+ outline-offset: calc(2px / var(--sixb-overview-scale)) !important;
154
+ }
155
+
156
+ /*
157
+ * A slide: 1280×720. Its footer, a rule with the source and the slide's number, sits in the
158
+ * bottom padding, so content never runs into it.
159
+ */
160
+ section.slide {
161
+ position: relative;
162
+ display: flex;
163
+ flex-direction: column;
164
+ gap: 28px;
165
+ width: 1280px;
166
+ height: 720px;
167
+ flex: none;
168
+ padding: 72px 96px 140px;
169
+ overflow: hidden;
170
+ background: var(--background);
171
+ color: var(--foreground);
172
+ font-size: 28px;
173
+ line-height: 1.4;
174
+ }
175
+
176
+ /* Type: nothing on a slide is smaller than 18px. */
177
+ section.slide :is(h1, h2, h3) { margin: 0; text-wrap: balance; }
178
+ section.slide h1 { font-size: 72px; line-height: 1; font-weight: 650; letter-spacing: -0.035em; }
179
+ section.slide h2 { max-width: 1000px; font-size: 46px; line-height: 1.08; font-weight: 600; letter-spacing: -0.025em; }
180
+ section.slide h3 { font-size: 30px; line-height: 1.2; font-weight: 600; letter-spacing: -0.01em; }
181
+ section.slide p { margin: 0; max-width: 34em; }
182
+ section.slide :is(ul, ol) {
183
+ margin: 0;
184
+ padding-left: 30px;
185
+ display: flex;
186
+ flex-direction: column;
187
+ gap: 22px;
188
+ font-size: 30px;
189
+ line-height: 1.35;
190
+ letter-spacing: -0.01em;
191
+ }
192
+ section.slide li { padding-left: 6px; }
193
+ section.slide li::marker { color: var(--muted-foreground); }
194
+ section.slide strong { font-weight: 600; }
195
+ section.slide a { color: inherit; text-decoration-thickness: 2px; text-underline-offset: 5px; }
196
+ section.slide small, section.slide .note { font-size: 20px; color: var(--muted-foreground); }
197
+ section.slide img, section.slide svg, section.slide video { max-width: 100%; max-height: 100%; }
198
+ /* A figure's default 40px margins would squeeze a chart and its labels below the type floor. */
199
+ section.slide figure { margin: 0; }
200
+ section.slide code { font-family: var(--font-mono); font-size: 0.85em; }
201
+
202
+ /* Chrome: a label above the heading (two spans sit at either end), and the footer. */
203
+ section.slide .eyebrow {
204
+ display: flex;
205
+ justify-content: space-between;
206
+ gap: 24px;
207
+ margin: 0;
208
+ max-width: none;
209
+ font-size: 20px;
210
+ line-height: 1.3;
211
+ letter-spacing: 0.01em;
212
+ color: var(--muted-foreground);
213
+ }
214
+ section.slide .eyebrow + :is(h1, h2) { margin-top: -12px; }
215
+ section.slide::after {
216
+ content: attr(data-number);
217
+ position: absolute;
218
+ left: 96px;
219
+ right: 96px;
220
+ bottom: 64px;
221
+ padding-top: 22px;
222
+ border-top: 1px solid var(--border);
223
+ text-align: right;
224
+ font-size: 18px;
225
+ line-height: 1.4;
226
+ font-variant-numeric: tabular-nums;
227
+ color: var(--muted-foreground);
228
+ }
229
+ section.slide.no-number::after { content: ""; }
230
+ section.slide.no-number:not(:has(.source))::after { display: none; }
231
+ section.slide .source {
232
+ position: absolute;
233
+ left: 96px;
234
+ right: calc(96px + 3em);
235
+ bottom: 64px;
236
+ z-index: 1;
237
+ max-width: none;
238
+ overflow: hidden;
239
+ white-space: nowrap;
240
+ text-overflow: ellipsis;
241
+ font-size: 18px;
242
+ line-height: 1.4;
243
+ font-variant-numeric: tabular-nums;
244
+ color: var(--muted-foreground);
245
+ }
246
+
247
+ /* Layouts. */
248
+ section.slide.title > .eyebrow { margin-bottom: auto; }
249
+ section.slide.title h1 { margin-top: 0; font-size: 132px; line-height: 0.92; letter-spacing: -0.04em; max-width: 9em; }
250
+ section.slide.title > p:not(.eyebrow, .source) { font-size: 36px; line-height: 1.25; letter-spacing: -0.01em; color: var(--muted-foreground); max-width: 24em; text-wrap: balance; }
251
+
252
+ section.slide.section { justify-content: flex-end; }
253
+ section.slide.section h2 { font-size: 72px; line-height: 1; letter-spacing: -0.035em; max-width: 13em; }
254
+
255
+ section.slide.split {
256
+ display: grid;
257
+ grid-template-columns: 5fr 6fr;
258
+ grid-template-rows: auto 1fr;
259
+ column-gap: 80px;
260
+ row-gap: 28px;
261
+ }
262
+ section.slide.split:has(> .eyebrow) { grid-template-rows: auto auto 1fr; }
263
+ section.slide.split > :is(h1, h2, .eyebrow) { grid-column: 1 / -1; }
264
+ section.slide.split > * { min-width: 0; min-height: 0; }
265
+ section.slide.split > :not(h1, h2, .eyebrow) { align-self: center; }
266
+
267
+ section.slide.stat > .value { margin-top: auto; }
268
+ section.slide.stat .value {
269
+ font-size: 144px;
270
+ line-height: 0.9;
271
+ font-weight: 600;
272
+ letter-spacing: -0.045em;
273
+ font-variant-numeric: tabular-nums;
274
+ color: var(--primary);
275
+ }
276
+ section.slide.stat .label { font-size: 26px; line-height: 1.35; color: var(--muted-foreground); }
277
+ section.slide.stat .stats {
278
+ margin-top: auto;
279
+ display: grid;
280
+ grid-auto-flow: column;
281
+ grid-auto-columns: minmax(0, 1fr);
282
+ gap: 64px;
283
+ padding-bottom: 16px;
284
+ }
285
+ section.slide.stat .stats > * {
286
+ display: flex;
287
+ flex-direction: column;
288
+ gap: 14px;
289
+ padding-top: 28px;
290
+ border-top: 2px solid var(--foreground);
291
+ }
292
+ section.slide.stat .stats:has(> :nth-child(3)) .value { font-size: 96px; }
293
+ section.slide.stat .stats:has(> :nth-child(4)) .value { font-size: 80px; }
294
+
295
+ section.slide.quote { justify-content: center; }
296
+ section.slide.quote blockquote {
297
+ margin: 0;
298
+ font-family: var(--font-serif);
299
+ font-size: 52px;
300
+ line-height: 1.2;
301
+ letter-spacing: -0.01em;
302
+ max-width: 22em;
303
+ text-wrap: balance;
304
+ }
305
+ section.slide.quote cite { font-style: normal; font-size: 24px; color: var(--muted-foreground); }
306
+
307
+ section.slide.image > :is(img, figure) { flex: 1; min-height: 0; margin: 0; object-fit: contain; }
308
+ section.slide.image.bleed { padding: 0; }
309
+ section.slide.image.bleed > img { width: 100%; height: 100%; object-fit: cover; }
310
+ section.slide.image.bleed::after, section.slide.image.bleed .source { display: none; }
311
+
312
+ section.slide.chart > :is(figure, svg, img, .chart) { flex: 1; min-height: 0; margin: 0; }
313
+ section.slide.chart figure { display: flex; flex-direction: column; gap: 20px; }
314
+ section.slide.chart figure > :is(svg, img) { flex: 1; min-height: 0; width: 100%; }
315
+ section.slide figcaption { font-size: 20px; color: var(--muted-foreground); }
316
+
317
+ section.slide.table table { width: 100%; border-collapse: collapse; font-size: 26px; font-variant-numeric: tabular-nums; }
318
+ section.slide.table :is(th, td) { padding: 14px 16px; border-bottom: 1px solid var(--border); text-align: left; }
319
+ section.slide.table :is(th, td):first-child { padding-left: 0; }
320
+ section.slide.table :is(th, td):last-child { padding-right: 0; }
321
+ section.slide.table th { font-size: 20px; font-weight: 500; color: var(--muted-foreground); }
322
+ section.slide.table :is(th, td).num, section.slide.table :is(th, td)[data-numeric] { text-align: right; }
323
+
324
+ /*
325
+ * Another artifact on the slide: the app draws it over this box, sized by the deck's CSS like
326
+ * any block. Until it does, and in a thumbnail, the box shows where it goes.
327
+ */
328
+ sixb-embed {
329
+ display: block;
330
+ position: relative;
331
+ width: 100%;
332
+ min-width: 0;
333
+ aspect-ratio: 16 / 9;
334
+ border-radius: 12px;
335
+ background: color-mix(in oklab, var(--muted) 80%, transparent);
336
+ }
337
+ sixb-embed[title]::after {
338
+ content: attr(title);
339
+ position: absolute;
340
+ inset: auto 24px 20px;
341
+ font-size: 20px;
342
+ color: var(--muted-foreground);
343
+ }
344
+ section.slide.chart > sixb-embed,
345
+ section.slide.chart figure > sixb-embed { flex: 1; min-height: 0; aspect-ratio: auto; }
346
+ /* An image from another artifact its reader cannot see. */
347
+ section.slide img[data-sixb-ref="unavailable"] {
348
+ display: block;
349
+ min-width: 160px;
350
+ min-height: 90px;
351
+ border-radius: 12px;
352
+ background: var(--muted);
353
+ }
354
+
355
+ /* Components. */
356
+ section.slide .legend {
357
+ display: flex;
358
+ flex-direction: row;
359
+ flex-wrap: wrap;
360
+ gap: 8px 24px;
361
+ margin: 0;
362
+ padding: 0;
363
+ list-style: none;
364
+ font-size: 20px;
365
+ line-height: 1.3;
366
+ letter-spacing: 0;
367
+ color: var(--muted-foreground);
368
+ }
369
+ section.slide .legend > * { display: flex; align-items: center; gap: 8px; padding: 0; }
370
+ section.slide .legend > *::before {
371
+ content: "";
372
+ width: 0.8em;
373
+ height: 0.8em;
374
+ border-radius: 2px;
375
+ background: var(--swatch, var(--chart-1));
376
+ }
377
+ section.slide .callout {
378
+ padding: 24px 28px;
379
+ border-radius: var(--radius);
380
+ background: var(--muted);
381
+ font-size: 26px;
382
+ }
383
+ section.slide .tag {
384
+ display: inline-block;
385
+ padding: 4px 12px;
386
+ border-radius: 999px;
387
+ background: var(--muted);
388
+ font-size: 18px;
389
+ font-weight: 600;
390
+ }
391
+ }
392
+ `
@@ -0,0 +1,309 @@
1
+ /** A problem the layout probe found on a slide, where it is on the slide, and its text. */
2
+ export interface LayoutProblem {
3
+ readonly code:
4
+ | "outside"
5
+ | "footer"
6
+ | "overlap"
7
+ | "clipped"
8
+ | "small_text"
9
+ | "contrast"
10
+ | "broken_image"
11
+ /** In the slide's 1280×720 pixels. */
12
+ readonly rect: {
13
+ readonly x: number
14
+ readonly y: number
15
+ readonly width: number
16
+ readonly height: number
17
+ }
18
+ /** The element's text, shortened, or its tag when it has none. */
19
+ readonly text: string
20
+ /** The element as CSS names it, `p.eyebrow`: the same problem on many slides shares it. */
21
+ readonly selector: string
22
+ /** `small_text`: its size in pixels. `contrast`: the ratio, and the two colors. */
23
+ readonly size?: number
24
+ /** `overlap`: the text it overlaps. */
25
+ readonly other?: string
26
+ readonly ratio?: number
27
+ readonly colors?: readonly [string, string]
28
+ }
29
+
30
+ /**
31
+ * Measures the slide the frame shows, laid out at its own size (`sixb-fill`), and returns what a
32
+ * reader would find wrong with it. Run in the page as its own source, `(${layoutProbe})(3)`, so it
33
+ * names nothing outside itself.
34
+ *
35
+ * - `outside`: text or an image past the slide's edge, which the slide cuts off.
36
+ * - `footer`: text or an image over the footer's rule, the source, or the number.
37
+ * - `overlap`: text drawn over other text, line box on line box.
38
+ * - `clipped`: text its own box cuts off.
39
+ * - `small_text`: text under 18px as drawn, an SVG's scaled with it.
40
+ * - `contrast`: text under WCAG AA against the solid colors painted under it, its own box's,
41
+ * any box it overlaps, and an SVG shape's fill (4.5:1, or 3:1 from 24px, or 18.66px bold); text
42
+ * over an image or a gradient is not judged.
43
+ * - `broken_image`: an image of the deck's own that did not load.
44
+ *
45
+ * Another artifact's chart or image is a box here, sized as the deck sizes it: it is measured as
46
+ * one, and its content is the app's.
47
+ */
48
+ export function layoutProbe(slideNumber: number): LayoutProblem[] {
49
+ const MAX_PER_CODE = 8
50
+ const slide = document.querySelectorAll<HTMLElement>("section.slide")[slideNumber - 1]
51
+ if (!slide) return []
52
+ const box = slide.getBoundingClientRect()
53
+ const problems: LayoutProblem[] = []
54
+ const counts = new Map<string, number>()
55
+ const selector = (element: Element) =>
56
+ element instanceof SVGElement && element.tagName.toLowerCase() !== "svg"
57
+ ? `svg ${element.tagName.toLowerCase()}`
58
+ : [element.tagName.toLowerCase(), ...Array.from(element.classList).slice(0, 2)].join(".")
59
+ const report = (
60
+ code: LayoutProblem["code"],
61
+ element: Element,
62
+ details: Pick<LayoutProblem, "size" | "ratio" | "colors" | "other"> & { text?: string } = {}
63
+ ) => {
64
+ const count = counts.get(code) ?? 0
65
+ if (count >= MAX_PER_CODE) return
66
+ counts.set(code, count + 1)
67
+ problems.push({
68
+ code,
69
+ rect: at(element.getBoundingClientRect()),
70
+ selector: selector(element),
71
+ ...details,
72
+ text: details.text ?? describe(element),
73
+ })
74
+ }
75
+ const at = (rect: DOMRect) => ({
76
+ x: Math.round(rect.left - box.left),
77
+ y: Math.round(rect.top - box.top),
78
+ width: Math.round(rect.width),
79
+ height: Math.round(rect.height),
80
+ })
81
+ // The text as a reader sees it: a line break separates words.
82
+ const describe = (element: Element) =>
83
+ (element instanceof HTMLElement ? element.innerText : (element.textContent ?? ""))
84
+ .replace(/\s+/g, " ")
85
+ .trim()
86
+ .slice(0, 60) || element.tagName.toLowerCase()
87
+ const shown = (element: Element) => {
88
+ const style = getComputedStyle(element)
89
+ if (style.display === "none" || style.visibility === "hidden" || style.opacity === "0") {
90
+ return false
91
+ }
92
+ const rect = element.getBoundingClientRect()
93
+ return rect.width > 0 && rect.height > 0
94
+ }
95
+ const ownText = (element: Element) =>
96
+ Array.from(element.childNodes).some(
97
+ (node) => node.nodeType === Node.TEXT_NODE && (node.textContent ?? "").trim() !== ""
98
+ )
99
+ const media = (element: Element) =>
100
+ /^(img|svg|canvas|video|picture|table|sixb-embed)$/i.test(element.tagName)
101
+
102
+ // What a reader sees: elements with text of their own, and media. Each judged once.
103
+ const elements = Array.from(slide.querySelectorAll("*")).filter(
104
+ (element) => !element.closest("svg *, .source") && shown(element)
105
+ )
106
+ const content = elements.filter((element) => ownText(element) || media(element))
107
+ const svgText = Array.from(slide.querySelectorAll<SVGTextContentElement>("svg text")).filter(
108
+ (element) => (element.textContent ?? "").trim() !== "" && shown(element)
109
+ )
110
+
111
+ // Past the slide's edge, or over the footer. The outermost offender stands for what it holds.
112
+ const footer = getComputedStyle(slide, "::after")
113
+ const footerTop =
114
+ footer.content === "none" || footer.display === "none"
115
+ ? Number.POSITIVE_INFINITY
116
+ : box.bottom -
117
+ Number.parseFloat(footer.bottom) -
118
+ Number.parseFloat(footer.paddingTop) -
119
+ Number.parseFloat(footer.lineHeight) -
120
+ Number.parseFloat(footer.borderTopWidth)
121
+ const outside: Element[] = []
122
+ for (const element of content) {
123
+ if (outside.some((parent) => parent.contains(element))) continue
124
+ const rect = element.getBoundingClientRect()
125
+ if (
126
+ rect.left < box.left - 1 ||
127
+ rect.top < box.top - 1 ||
128
+ rect.right > box.right + 1 ||
129
+ rect.bottom > box.bottom + 1
130
+ ) {
131
+ outside.push(element)
132
+ report("outside", element)
133
+ } else if (rect.bottom > footerTop + 1 && rect.top < box.bottom) {
134
+ outside.push(element)
135
+ report("footer", element)
136
+ }
137
+ }
138
+
139
+ // Text over text: the lines each element's own text draws, against every other's. A range's
140
+ // rectangle spans the font's whole ascent and descent, which a tight line-height (a stat's
141
+ // number) leaves well outside its line: each is cut to its line-height around its middle.
142
+ const lines = content
143
+ .filter((element) => ownText(element) && !outside.some((parent) => parent.contains(element)))
144
+ .map((element) => {
145
+ const lineHeight = Number.parseFloat(getComputedStyle(element).lineHeight)
146
+ const rects: DOMRect[] = []
147
+ for (const node of Array.from(element.childNodes)) {
148
+ if (node.nodeType !== Node.TEXT_NODE || (node.textContent ?? "").trim() === "") continue
149
+ const range = document.createRange()
150
+ range.selectNodeContents(node)
151
+ for (const rect of Array.from(range.getClientRects())) {
152
+ if (rect.width === 0) continue
153
+ const inset =
154
+ Number.isFinite(lineHeight) && rect.height > lineHeight
155
+ ? (rect.height - lineHeight) / 2
156
+ : 0
157
+ rects.push(new DOMRect(rect.x, rect.y + inset, rect.width, rect.height - inset * 2))
158
+ }
159
+ }
160
+ return { element, rects }
161
+ })
162
+ const crosses = (a: DOMRect, b: DOMRect) =>
163
+ Math.min(a.right, b.right) - Math.max(a.left, b.left) > 3 &&
164
+ Math.min(a.bottom, b.bottom) - Math.max(a.top, b.top) > 3
165
+ const overlapping = new Set<Element>()
166
+ for (const [index, a] of lines.entries()) {
167
+ for (const b of lines.slice(index + 1)) {
168
+ if (overlapping.has(a.element) || overlapping.has(b.element)) continue
169
+ if (a.rects.some((rectA) => b.rects.some((rectB) => crosses(rectA, rectB)))) {
170
+ overlapping.add(a.element)
171
+ overlapping.add(b.element)
172
+ report("overlap", b.element, { other: describe(a.element) })
173
+ }
174
+ }
175
+ }
176
+
177
+ // Cut off by its own box.
178
+ for (const element of elements) {
179
+ if (outside.some((parent) => parent.contains(element) || element.contains(parent))) continue
180
+ const style = getComputedStyle(element)
181
+ const clips = /hidden|clip/.test(`${style.overflowX} ${style.overflowY}`)
182
+ if (!clips || (element.textContent ?? "").trim() === "") continue
183
+ const wraps = style.textOverflow === "ellipsis" && style.whiteSpace === "nowrap"
184
+ if (
185
+ !wraps &&
186
+ (element.scrollHeight > element.clientHeight + 2 ||
187
+ element.scrollWidth > element.clientWidth + 2)
188
+ ) {
189
+ report("clipped", element)
190
+ }
191
+ }
192
+
193
+ // Colors as the screen shows them: any CSS color, through a canvas pixel.
194
+ const canvas = document.createElement("canvas")
195
+ canvas.width = 1
196
+ canvas.height = 1
197
+ const context = canvas.getContext("2d", { willReadFrequently: true })
198
+ const rgba = (color: string): [number, number, number, number] | null => {
199
+ if (!context) return null
200
+ context.clearRect(0, 0, 1, 1)
201
+ context.fillStyle = "rgba(0, 0, 0, 0)"
202
+ context.fillStyle = color
203
+ context.fillRect(0, 0, 1, 1)
204
+ const [r = 0, g = 0, b = 0, a = 0] = context.getImageData(0, 0, 1, 1).data
205
+ return [r, g, b, a / 255]
206
+ }
207
+ const over = (
208
+ top: [number, number, number, number],
209
+ under: [number, number, number, number]
210
+ ): [number, number, number, number] => [
211
+ top[0] * top[3] + under[0] * (1 - top[3]),
212
+ top[1] * top[3] + under[1] * (1 - top[3]),
213
+ top[2] * top[3] + under[2] * (1 - top[3]),
214
+ 1,
215
+ ]
216
+ /**
217
+ * The solid color painted under an element's text, or null over an image or a gradient: every
218
+ * box under its center, top to bottom, its own and its ancestors' and any it overlaps, until an
219
+ * opaque one.
220
+ */
221
+ const background = (element: Element): [number, number, number, number] | null => {
222
+ const layers: [number, number, number, number][] = []
223
+ const rect = element.getBoundingClientRect()
224
+ const stack = document.elementsFromPoint(rect.left + rect.width / 2, rect.top + rect.height / 2)
225
+ // An SVG's text is not hit between its glyphs: then everything under the point counts.
226
+ const start = Math.max(0, stack.indexOf(element))
227
+ const under = stack.slice(start)
228
+ // A photo or a video paints colors no style names.
229
+ const pictures = under.filter((node) => /^(img|picture|video|canvas)$/i.test(node.tagName))
230
+ for (const node of under) {
231
+ if (pictures.includes(node)) return null
232
+ // A box holding the picture paints under it, though its ::before, a scrim over the photo,
233
+ // puts it above the picture in the stack.
234
+ if (pictures.some((picture) => node.contains(picture))) continue
235
+ const style = getComputedStyle(node)
236
+ // An SVG shape paints with its fill: a chart's label sits on its bar.
237
+ const shape = node instanceof SVGGeometryElement
238
+ const paint = shape ? style.fill : style.backgroundColor
239
+ if ((!shape && style.backgroundImage !== "none") || paint.startsWith("url(")) return null
240
+ const color = rgba(paint)
241
+ if (color && shape) color[3] *= Number.parseFloat(style.fillOpacity) || 0
242
+ if (color && color[3] > 0) {
243
+ layers.push(color)
244
+ if (color[3] >= 0.99) break
245
+ }
246
+ }
247
+ return layers.reduceRight<[number, number, number, number]>(
248
+ (under, top) => over(top, under),
249
+ [255, 255, 255, 1]
250
+ )
251
+ }
252
+ const luminance = ([r, g, b]: readonly number[]) => {
253
+ const channel = (value = 0) => {
254
+ const c = value / 255
255
+ return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4
256
+ }
257
+ return 0.2126 * channel(r) + 0.7152 * channel(g) + 0.0722 * channel(b)
258
+ }
259
+ const hex = (color: readonly number[]) =>
260
+ `#${color
261
+ .slice(0, 3)
262
+ .map((value) => Math.round(value).toString(16).padStart(2, "0"))
263
+ .join("")}`
264
+
265
+ // Text: its size as drawn, and its contrast.
266
+ const texts: { element: Element; size: number; ink: string }[] = [
267
+ ...content
268
+ .filter((element) => ownText(element))
269
+ .map((element) => {
270
+ const style = getComputedStyle(element)
271
+ return { element, size: Number.parseFloat(style.fontSize), ink: style.color }
272
+ }),
273
+ ...svgText.map((element) => {
274
+ const style = getComputedStyle(element)
275
+ const scale = element.getScreenCTM()?.a ?? 1
276
+ return { element, size: Number.parseFloat(style.fontSize) * scale, ink: style.fill }
277
+ }),
278
+ ]
279
+ for (const { element, size, ink } of texts) {
280
+ if (outside.some((parent) => parent.contains(element))) continue
281
+ if (size < 17.5) {
282
+ report("small_text", element, { size: Math.round(size * 10) / 10 })
283
+ }
284
+ const color = rgba(ink)
285
+ const behind = background(element)
286
+ if (!color || color[3] === 0 || !behind) continue
287
+ const solid = over(color, behind)
288
+ const [light, dark] = [luminance(solid), luminance(behind)].sort((a, b) => b - a)
289
+ const ratio = ((light ?? 0) + 0.05) / ((dark ?? 0) + 0.05)
290
+ const bold = Number.parseInt(getComputedStyle(element).fontWeight, 10) >= 700
291
+ const needed = size >= 24 || (bold && size >= 18.66) ? 3 : 4.5
292
+ if (ratio < needed) {
293
+ report("contrast", element, {
294
+ ratio: Math.round(ratio * 100) / 100,
295
+ colors: [hex(solid), hex(behind)],
296
+ })
297
+ }
298
+ }
299
+
300
+ // An image from another artifact is the app's to load, not the deck's.
301
+ for (const image of Array.from(
302
+ slide.querySelectorAll<HTMLImageElement>("img:not([data-sixb-ref])")
303
+ )) {
304
+ if (image.getAttribute("src") && image.complete && image.naturalWidth === 0) {
305
+ report("broken_image", image, { text: image.getAttribute("src") ?? "img" })
306
+ }
307
+ }
308
+ return problems
309
+ }