@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,174 @@
1
+ import { ARTIFACT_LIMITS } from "../limits"
2
+ import { ARTIFACT_THEME_TOKENS } from "../theme"
3
+
4
+ /**
5
+ * Messages between the app and a deck in its sandboxed frame. The app asks; the frame answers
6
+ * each request by its id, and tells the app what happened inside it as events. Later abilities
7
+ * are new methods and events, not a new protocol.
8
+ */
9
+ export const FRAME_PROTOCOL = "sixb-frame/1"
10
+
11
+ /**
12
+ * A deck shows one slide scaled to fit on its stage, every slide in a grid, or one slide filling
13
+ * the page to present it.
14
+ */
15
+ export type DeckMode = "slide" | "overview" | "present"
16
+
17
+ /**
18
+ * How a frame opens, set in its URL so the first paint is right: at a slide, and with `fill`, that
19
+ * slide alone filling the frame with no stage around it, as a thumbnail or an embed shows it.
20
+ */
21
+ export interface FrameStart {
22
+ readonly slide?: number
23
+ readonly fill?: boolean
24
+ }
25
+
26
+ /** The fragment that carries a frame's start: `#sixb-slide=3&sixb-fill`. */
27
+ export function frameStartHash(start: FrameStart): string {
28
+ const params: string[] = []
29
+ if (start.slide !== undefined && start.slide > 1)
30
+ params.push(`sixb-slide=${Math.round(start.slide)}`)
31
+ if (start.fill) params.push("sixb-fill")
32
+ return params.length > 0 ? `#${params.join("&")}` : ""
33
+ }
34
+
35
+ /** What the app asks of the frame. */
36
+ export type FrameRequest =
37
+ | FrameRequestOf<
38
+ "theme",
39
+ { readonly tokens: Readonly<Record<string, string>>; readonly dark: boolean }
40
+ >
41
+ | FrameRequestOf<"goto", { readonly slide: number }>
42
+ | FrameRequestOf<"mode", { readonly mode: DeckMode }>
43
+
44
+ interface FrameRequestOf<Method extends string, Params> {
45
+ readonly protocol: typeof FRAME_PROTOCOL
46
+ readonly id: number
47
+ readonly method: Method
48
+ readonly params: Params
49
+ }
50
+
51
+ /** The frame's answer to one request. */
52
+ export interface FrameResponse {
53
+ readonly protocol: typeof FRAME_PROTOCOL
54
+ readonly id: number
55
+ readonly error?: string
56
+ }
57
+
58
+ /** What happened inside the frame. */
59
+ export type FrameEvent =
60
+ | FrameEventOf<"ready", { readonly slides: number }>
61
+ /** The reader picked a slide in the overview. */
62
+ | FrameEventOf<"select", { readonly slide: number }>
63
+ /** A key the app handles, pressed while the frame had focus. */
64
+ | FrameEventOf<"key", { readonly key: string }>
65
+ /** A link to another artifact, which opens where the reader is. */
66
+ | FrameEventOf<"open", { readonly address: string }>
67
+ /**
68
+ * Where the shown slide's `<sixb-embed>` boxes are, for the app to draw each over the frame: in
69
+ * the frame's pixels, with the scale the slide is drawn at. Empty in the overview, where an
70
+ * embed stays a placeholder, as it does in a filled frame, which never reports.
71
+ */
72
+ | FrameEventOf<"embeds", { readonly embeds: readonly FrameEmbed[] }>
73
+
74
+ /** One `<sixb-embed>` on the shown slide. */
75
+ export interface FrameEmbed {
76
+ readonly address: string
77
+ readonly rect: {
78
+ readonly x: number
79
+ readonly y: number
80
+ readonly width: number
81
+ readonly height: number
82
+ }
83
+ /** The slide's scale: the embed is drawn at `rect / scale`, then scaled with the slide. */
84
+ readonly scale: number
85
+ }
86
+
87
+ interface FrameEventOf<Event extends string, Params> {
88
+ readonly protocol: typeof FRAME_PROTOCOL
89
+ readonly event: Event
90
+ readonly params: Params
91
+ }
92
+
93
+ /** Keys the frame passes to the app, so a deck navigates the same with focus in it or not. */
94
+ export const DECK_KEYS = [
95
+ "ArrowLeft",
96
+ "ArrowRight",
97
+ "ArrowUp",
98
+ "ArrowDown",
99
+ "PageUp",
100
+ "PageDown",
101
+ "Home",
102
+ "End",
103
+ " ",
104
+ "Escape",
105
+ ] as const
106
+
107
+ /**
108
+ * The theme tokens the app sends into a frame, read from the viewer as it is themed: the ones an
109
+ * artifact's theme may set.
110
+ */
111
+ export const FRAME_THEME_TOKENS = ARTIFACT_THEME_TOKENS
112
+
113
+ /**
114
+ * A message from a frame as an event, or null when it is not one this protocol sends. A deck runs
115
+ * its own scripts, so anything it posts is checked for the shape the app relies on: whole slide
116
+ * numbers, a key the app handles, finite boxes, and no more embeds than a version may record.
117
+ */
118
+ export function parseFrameEvent(data: unknown): FrameEvent | null {
119
+ if (!isRecord(data) || data.protocol !== FRAME_PROTOCOL || !isRecord(data.params)) return null
120
+ const { params } = data
121
+ switch (data.event) {
122
+ case "ready":
123
+ return isCount(params.slides) ? event("ready", { slides: params.slides }) : null
124
+ case "select":
125
+ return isCount(params.slide) && params.slide > 0
126
+ ? event("select", { slide: params.slide })
127
+ : null
128
+ case "key":
129
+ return typeof params.key === "string" && (DECK_KEYS as readonly string[]).includes(params.key)
130
+ ? event("key", { key: params.key })
131
+ : null
132
+ case "open":
133
+ return isAddress(params.address) ? event("open", { address: params.address }) : null
134
+ case "embeds": {
135
+ const { embeds } = params
136
+ if (!Array.isArray(embeds) || embeds.length > ARTIFACT_LIMITS.maxReferences) return null
137
+ const parsed: FrameEmbed[] = []
138
+ for (const embed of embeds) {
139
+ if (!isRecord(embed) || !isAddress(embed.address) || !isRecord(embed.rect)) return null
140
+ const { x, y, width, height } = embed.rect
141
+ if (![x, y, width, height, embed.scale].every(Number.isFinite)) return null
142
+ if (Number(width) < 0 || Number(height) < 0 || Number(embed.scale) <= 0) return null
143
+ parsed.push({
144
+ address: embed.address,
145
+ rect: { x: Number(x), y: Number(y), width: Number(width), height: Number(height) },
146
+ scale: Number(embed.scale),
147
+ })
148
+ }
149
+ return event("embeds", { embeds: parsed })
150
+ }
151
+ default:
152
+ return null
153
+ }
154
+ }
155
+
156
+ function event<Name extends FrameEvent["event"]>(
157
+ name: Name,
158
+ params: Extract<FrameEvent, { event: Name }>["params"]
159
+ ): FrameEvent {
160
+ return { protocol: FRAME_PROTOCOL, event: name, params } as FrameEvent
161
+ }
162
+
163
+ function isRecord(value: unknown): value is Record<string, unknown> {
164
+ return typeof value === "object" && value !== null
165
+ }
166
+
167
+ function isCount(value: unknown): value is number {
168
+ return Number.isSafeInteger(value) && Number(value) >= 0
169
+ }
170
+
171
+ /** Long enough for any address a version can record; the app resolves it before using it. */
172
+ function isAddress(value: unknown): value is string {
173
+ return typeof value === "string" && value.length <= 2048
174
+ }
@@ -0,0 +1,213 @@
1
+ /**
2
+ * The runtime the frame injects into a deck before anything else in its `<head>`. It is served as
3
+ * this function's own source, `(${frameRuntime})()`, so it imports nothing and names nothing
4
+ * outside itself: the protocol string and the keys repeat what `protocol.ts` declares, and a test
5
+ * holds the two together.
6
+ *
7
+ * It lays the deck out: every `section.slide` is a 1280×720 slide, shown one at a time scaled to
8
+ * fit, or all at once in a grid. The URL's fragment can open it at a slide, and with `sixb-fill`
9
+ * show that slide alone filling the frame, as a thumbnail or an embed does. It applies the theme the app sends, answers the app's requests,
10
+ * and tells the app about keys, picks in the overview, and links to other artifacts.
11
+ */
12
+ export function frameRuntime(): void {
13
+ const PROTOCOL = "sixb-frame/1"
14
+ const WIDTH = 1280
15
+ const HEIGHT = 720
16
+ const KEYS = [
17
+ "ArrowLeft",
18
+ "ArrowRight",
19
+ "ArrowUp",
20
+ "ArrowDown",
21
+ "PageUp",
22
+ "PageDown",
23
+ "Home",
24
+ "End",
25
+ " ",
26
+ "Escape",
27
+ ]
28
+ const root = document.documentElement
29
+ const start = new URLSearchParams(window.location.hash.slice(1))
30
+ root.classList.add("sixb-deck")
31
+ root.dataset.mode = start.has("sixb-fill") ? "fill" : "slide"
32
+ let current = Number(start.get("sixb-slide")) || 1
33
+
34
+ const slides = (): HTMLElement[] =>
35
+ Array.from(document.querySelectorAll<HTMLElement>("section.slide"))
36
+ const post = (message: Record<string, unknown>) =>
37
+ window.parent.postMessage({ protocol: PROTOCOL, ...message }, "*")
38
+
39
+ /** The scale that fits a slide in the window, and the one that fits a column of the grid. */
40
+ const fit = () => {
41
+ const columns = window.innerWidth < 720 ? 2 : window.innerWidth < 1100 ? 3 : 4
42
+ const gap = 16
43
+ // A slide keeps a margin around it, so its edge reads against the stage; filled or presented,
44
+ // it has none.
45
+ const margin =
46
+ root.dataset.mode === "fill" || root.dataset.mode === "present"
47
+ ? 0
48
+ : Math.min(32, window.innerWidth * 0.04)
49
+ root.style.setProperty(
50
+ "--sixb-scale",
51
+ String(
52
+ Math.min(
53
+ (window.innerWidth - margin * 2) / WIDTH,
54
+ (window.innerHeight - margin * 2) / HEIGHT
55
+ )
56
+ )
57
+ )
58
+ root.style.setProperty("--sixb-columns", String(columns))
59
+ root.style.setProperty(
60
+ "--sixb-overview-scale",
61
+ String((window.innerWidth - gap * (columns + 1)) / columns / WIDTH)
62
+ )
63
+ }
64
+
65
+ /** The shown slide's embeds, for the app to draw over the frame; once a frame, when they move. */
66
+ let reported = ""
67
+ let reporting = false
68
+ const reportEmbeds = () => {
69
+ if (reporting || root.dataset.mode === "fill") return
70
+ reporting = true
71
+ requestAnimationFrame(() => {
72
+ reporting = false
73
+ const scale = Number(root.style.getPropertyValue("--sixb-scale")) || 1
74
+ const slide = root.dataset.mode === "overview" ? undefined : slides()[current - 1]
75
+ const embeds = Array.from(slide?.querySelectorAll("sixb-embed[src]") ?? []).map((element) => {
76
+ const rect = element.getBoundingClientRect()
77
+ return {
78
+ address: (element.getAttribute("src") ?? "").trim(),
79
+ rect: { x: rect.left, y: rect.top, width: rect.width, height: rect.height },
80
+ scale,
81
+ }
82
+ })
83
+ const next = JSON.stringify(embeds)
84
+ if (next === reported) return
85
+ reported = next
86
+ post({ event: "embeds", params: { embeds } })
87
+ })
88
+ }
89
+
90
+ const show = (slide: number) => {
91
+ const all = slides()
92
+ current = Math.min(Math.max(1, Math.round(slide) || 1), Math.max(1, all.length))
93
+ all.forEach((element, index) => {
94
+ element.toggleAttribute("data-current", index + 1 === current)
95
+ })
96
+ if (root.dataset.mode === "overview") {
97
+ all[current - 1]?.scrollIntoView({ block: "nearest" })
98
+ }
99
+ reportEmbeds()
100
+ }
101
+
102
+ const handle = (method: string, params: Record<string, unknown>) => {
103
+ switch (method) {
104
+ case "theme": {
105
+ // In the theme's layer, not inline: the deck's own CSS, unlayered, still wins.
106
+ const tokens = (params.tokens ?? {}) as Record<string, string>
107
+ const declarations = Object.entries(tokens)
108
+ .filter(
109
+ ([name, value]) =>
110
+ /^--[a-z0-9-]+$/.test(name) && typeof value === "string" && !/[;{}<]/.test(value)
111
+ )
112
+ .map(([name, value]) => `${name}: ${value};`)
113
+ // The stage is the app's, in the app's colors, whatever a deck makes of its own tokens.
114
+ for (const [stage, token] of [
115
+ ["--sixb-stage", "--muted"],
116
+ ["--sixb-stage-border", "--border"],
117
+ ["--sixb-stage-foreground", "--foreground"],
118
+ ]) {
119
+ const value = declarations.find((declaration) => declaration.startsWith(`${token}:`))
120
+ if (value) declarations.push(`${stage}${value.slice(token.length)}`)
121
+ }
122
+ let style = document.getElementById("sixb-theme")
123
+ if (!style) {
124
+ style = document.createElement("style")
125
+ style.id = "sixb-theme"
126
+ document.head.append(style)
127
+ }
128
+ style.textContent = `@layer sixb-theme { :root { ${declarations.join(" ")} color-scheme: ${params.dark === true ? "dark" : "light"}; } }`
129
+ root.classList.toggle("dark", params.dark === true)
130
+ return
131
+ }
132
+ case "goto":
133
+ show(Number(params.slide))
134
+ return
135
+ case "mode":
136
+ if (root.dataset.mode === "fill") return
137
+ root.dataset.mode =
138
+ params.mode === "overview" || params.mode === "present" ? params.mode : "slide"
139
+ fit()
140
+ show(current)
141
+ return
142
+ default:
143
+ throw new Error(`Unknown method '${method}'.`)
144
+ }
145
+ }
146
+
147
+ window.addEventListener("message", (event) => {
148
+ if (event.source !== window.parent) return
149
+ const data = event.data as Record<string, unknown> | null
150
+ // Requests only: at the top level, as in the layout check, the frame's own answers come back
151
+ // to it, and answering an answer would trade error messages with itself for good.
152
+ if (!data || data.protocol !== PROTOCOL || typeof data.id !== "number") return
153
+ if (typeof data.method !== "string") return
154
+ try {
155
+ handle(String(data.method), (data.params ?? {}) as Record<string, unknown>)
156
+ post({ id: data.id })
157
+ } catch (error) {
158
+ post({ id: data.id, error: error instanceof Error ? error.message : String(error) })
159
+ }
160
+ })
161
+
162
+ window.addEventListener("keydown", (event) => {
163
+ if (event.metaKey || event.ctrlKey || event.altKey) return
164
+ const target = event.target as HTMLElement | null
165
+ if (target?.closest("input, textarea, select, [contenteditable]")) return
166
+ if (!KEYS.includes(event.key)) return
167
+ event.preventDefault()
168
+ post({ event: "key", params: { key: event.key } })
169
+ })
170
+
171
+ document.addEventListener("click", (event) => {
172
+ const target = event.target as HTMLElement | null
173
+ const link = target?.closest<HTMLAnchorElement>("a[href]")
174
+ if (link) {
175
+ const href = link.getAttribute("href") ?? ""
176
+ if (/^artifact:/i.test(href.trim())) {
177
+ event.preventDefault()
178
+ post({ event: "open", params: { address: href.trim() } })
179
+ } else if (!href.startsWith("#")) {
180
+ // Outside the frame: a link opens in its own tab.
181
+ link.target = "_blank"
182
+ link.rel = "noopener noreferrer"
183
+ }
184
+ return
185
+ }
186
+ if (root.dataset.mode !== "overview") return
187
+ const slide = target?.closest<HTMLElement>("section.slide")
188
+ if (!slide) return
189
+ post({ event: "select", params: { slide: slides().indexOf(slide) + 1 } })
190
+ })
191
+
192
+ window.addEventListener("resize", () => {
193
+ fit()
194
+ reportEmbeds()
195
+ })
196
+ const ready = () => {
197
+ slides().forEach((element, index) => {
198
+ element.dataset.number = String(index + 1)
199
+ })
200
+ fit()
201
+ show(current)
202
+ post({ event: "ready", params: { slides: slides().length } })
203
+ // Fonts and images that arrive later move what is laid out after them.
204
+ const resized = new ResizeObserver(reportEmbeds)
205
+ for (const element of Array.from(document.querySelectorAll("section.slide > *, sixb-embed"))) {
206
+ resized.observe(element)
207
+ }
208
+ window.addEventListener("load", reportEmbeds)
209
+ document.fonts?.ready.then(reportEmbeds)
210
+ }
211
+ if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", ready)
212
+ else ready()
213
+ }
@@ -0,0 +1,25 @@
1
+ const NAMED_ENTITIES: Readonly<Record<string, string>> = {
2
+ amp: "&",
3
+ lt: "<",
4
+ gt: ">",
5
+ quot: '"',
6
+ apos: "'",
7
+ nbsp: String.fromCharCode(0xa0),
8
+ }
9
+
10
+ /**
11
+ * Text or an attribute as the browser reads it. HTMLRewriter hands both over as written in the
12
+ * HTML, entities included, so `artifact:…#Q3%20&amp;%20Q4` must read `&` before it is resolved.
13
+ */
14
+ export function decodeHtmlEntities(value: string): string {
15
+ return value.replace(/&(#x[\da-f]+|#\d+|[a-z]+);/gi, (match, entity: string) => {
16
+ if (entity[0] !== "#") return NAMED_ENTITIES[entity.toLowerCase()] ?? match
17
+ const codePoint =
18
+ entity[1]?.toLowerCase() === "x"
19
+ ? Number.parseInt(entity.slice(2), 16)
20
+ : Number(entity.slice(1))
21
+ return Number.isInteger(codePoint) && codePoint >= 0 && codePoint <= 0x10ffff
22
+ ? String.fromCodePoint(codePoint)
23
+ : match
24
+ })
25
+ }
@@ -0,0 +1,18 @@
1
+ // Lowercase base32 without the letters easiest to misread. Ten characters is 50 bits: short enough
2
+ // for the Agent to write in an address, and the store refuses the rare collision.
3
+ const ALPHABET = "0123456789abcdefghjkmnpqrstvwxyz"
4
+
5
+ /** A new artifact id, such as `art_k3m9q2x7tp`. */
6
+ export function createArtifactId(): string {
7
+ const bytes = crypto.getRandomValues(new Uint8Array(10))
8
+ let id = "art_"
9
+ for (const byte of bytes) id += ALPHABET[byte % ALPHABET.length]
10
+ return id
11
+ }
12
+
13
+ const ARTIFACT_ID = new RegExp(`^art_[${ALPHABET}]{10}$`)
14
+
15
+ /** Whether `value` has the shape of an artifact id; whether that artifact exists is another matter. */
16
+ export function isArtifactId(value: string): boolean {
17
+ return ARTIFACT_ID.test(value)
18
+ }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * What a client needs to show an artifact the way publishing read it: the kinds and what each
3
+ * holds, the slugs its headings get, its theme, a sheet's workbook and CSV, the limits a version
4
+ * keeps within, the `artifact:` addresses that point into it, and the messages a viewer and a
5
+ * deck's frame exchange, versioned as `sixb-frame/1`. Browser-safe: no storage, no Bun APIs.
6
+ */
7
+
8
+ export {
9
+ type ArtifactAddress,
10
+ type CellRange,
11
+ formatArtifactAddress,
12
+ isArtifactAddress,
13
+ parseArtifactAddress,
14
+ parseSheetPart,
15
+ type SheetPart,
16
+ } from "./address"
17
+ export { CsvParseError, type CsvTable, parseCsv } from "./csv"
18
+ export {
19
+ type DeckMode,
20
+ FRAME_PROTOCOL,
21
+ FRAME_THEME_TOKENS,
22
+ type FrameEmbed,
23
+ type FrameEvent,
24
+ type FrameRequest,
25
+ type FrameResponse,
26
+ type FrameStart,
27
+ frameStartHash,
28
+ parseFrameEvent,
29
+ } from "./frames/protocol"
30
+ export { ARTIFACT_KINDS, type ArtifactKind } from "./kinds"
31
+ export { ARTIFACT_LIMITS } from "./limits"
32
+ export {
33
+ type ArtifactOutline,
34
+ createHeadingSlugger,
35
+ type DocumentHeading,
36
+ type DocumentOutline,
37
+ type FileOutline,
38
+ type SheetOutline,
39
+ type SheetSummary,
40
+ type SlidesOutline,
41
+ } from "./outline"
42
+ export {
43
+ type ArtifactAddressTarget,
44
+ type ResolvedArtifactPart,
45
+ resolveArtifactAddress,
46
+ } from "./resolve"
47
+ export { ARTIFACT_THEME_FILE, type ArtifactTheme, parseArtifactTheme } from "./theme"
48
+ export {
49
+ NUMERIC_COLUMN_TYPES,
50
+ parseSheetDate,
51
+ parseSheetNumber,
52
+ parseWorkbook,
53
+ type SheetChartType,
54
+ type SheetColumnFormat,
55
+ type SheetColumnType,
56
+ sheetFilePath,
57
+ WORKBOOK_FILE,
58
+ type Workbook,
59
+ type WorkbookChart,
60
+ type WorkbookSheet,
61
+ } from "./workbook"
@@ -0,0 +1,8 @@
1
+ /** The kinds of artifact Sixb renders. An artifact's kind is fixed when it is created. */
2
+ export const ARTIFACT_KINDS = ["document", "sheet", "slides", "file"] as const
3
+
4
+ export type ArtifactKind = (typeof ARTIFACT_KINDS)[number]
5
+
6
+ export function isArtifactKind(value: unknown): value is ArtifactKind {
7
+ return typeof value === "string" && (ARTIFACT_KINDS as readonly string[]).includes(value)
8
+ }
@@ -0,0 +1,27 @@
1
+ /** What one version may hold. Publishing refuses a version over any of these. */
2
+ export const ARTIFACT_LIMITS = {
3
+ maxFiles: 200,
4
+ maxFileBytes: 25 * 1024 * 1024,
5
+ maxVersionBytes: 100 * 1024 * 1024,
6
+ maxPathLength: 512,
7
+ maxTitleLength: 200,
8
+ /** A document's Markdown is parsed whole when it is published. */
9
+ maxDocumentBytes: 2 * 1024 * 1024,
10
+ maxThemeBytes: 4 * 1024,
11
+ maxWorkbookBytes: 256 * 1024,
12
+ /** A sheet's limits keep the grid quick and its charts readable. */
13
+ maxSheets: 20,
14
+ maxSheetRows: 100_000,
15
+ /** The viewer reads a sheet whole, and reads at most this much. */
16
+ maxSheetFileBytes: 5 * 1024 * 1024,
17
+ maxSheetColumns: 200,
18
+ maxCharts: 10,
19
+ maxChartSeries: 5,
20
+ /** One slice per theme chart color, so no two slices share one. */
21
+ maxPieSlices: 5,
22
+ /** A deck's `index.html` is parsed whole when it is published. */
23
+ maxDeckBytes: 2 * 1024 * 1024,
24
+ maxSlides: 100,
25
+ /** `artifact:` addresses one version may use. */
26
+ maxReferences: 200,
27
+ } as const
@@ -0,0 +1,62 @@
1
+ /**
2
+ * What a version contains, read from its files when it is published. Addresses resolve against
3
+ * it, and previews and hover cards show it without opening the files.
4
+ */
5
+ export type ArtifactOutline = DocumentOutline | SheetOutline | SlidesOutline | FileOutline
6
+
7
+ export interface DocumentOutline {
8
+ readonly kind: "document"
9
+ readonly headings: readonly DocumentHeading[]
10
+ }
11
+
12
+ export interface DocumentHeading {
13
+ readonly depth: number
14
+ readonly text: string
15
+ /** What `#part` names in an address to this section. */
16
+ readonly slug: string
17
+ }
18
+
19
+ export interface SheetOutline {
20
+ readonly kind: "sheet"
21
+ readonly sheets: readonly SheetSummary[]
22
+ /** The names of the charts declared in the workbook. */
23
+ readonly charts: readonly string[]
24
+ }
25
+
26
+ export interface SheetSummary {
27
+ readonly name: string
28
+ readonly rows: number
29
+ readonly columns: readonly string[]
30
+ }
31
+
32
+ export interface SlidesOutline {
33
+ readonly kind: "slides"
34
+ /** One entry per slide, in order; the title is the slide's first heading. */
35
+ readonly slides: readonly { readonly title?: string }[]
36
+ }
37
+
38
+ export interface FileOutline {
39
+ readonly kind: "file"
40
+ readonly mediaType: string
41
+ }
42
+
43
+ /**
44
+ * Turns a document's heading texts, in order, into their section slugs: lowercase, punctuation
45
+ * dropped, spaces as hyphens, and `-1`, `-2` after a repeat. Publishing and the renderer both name
46
+ * sections with it, so an address to a section finds the heading the reader sees.
47
+ */
48
+ export function createHeadingSlugger(): (text: string) => string {
49
+ const used = new Set<string>()
50
+ return (text) => {
51
+ const base =
52
+ text
53
+ .trim()
54
+ .toLowerCase()
55
+ .replace(/[^\p{L}\p{N}\s_-]/gu, "")
56
+ .replace(/\s+/g, "-") || "section"
57
+ let slug = base
58
+ for (let repeat = 1; used.has(slug); repeat += 1) slug = `${base}-${repeat}`
59
+ used.add(slug)
60
+ return slug
61
+ }
62
+ }
@@ -0,0 +1,87 @@
1
+ import { statFileRef } from "../../blob-storage/file-content"
2
+ import type { BlobStorage } from "../../blob-storage/types"
3
+ import { isValidFileRef } from "../../blob-storage/validation"
4
+ import type { ArtifactFile } from "../../storage/artifacts/types"
5
+ import { ArtifactRequestError } from "../errors"
6
+ import { ARTIFACT_LIMITS } from "../limits"
7
+
8
+ export type ArtifactBlobStorage = Pick<BlobStorage, "stat" | "open">
9
+
10
+ /**
11
+ * Checks a version's files before anything reads them: safe unique paths, the per-version limits,
12
+ * and stored bytes that match each reference.
13
+ */
14
+ export async function checkArtifactFiles(
15
+ blobStorage: ArtifactBlobStorage,
16
+ files: readonly ArtifactFile[]
17
+ ): Promise<void> {
18
+ if (files.length === 0) throw invalidArtifact("A version needs at least one file.")
19
+ if (files.length > ARTIFACT_LIMITS.maxFiles) {
20
+ throw invalidArtifact(
21
+ `A version holds at most ${ARTIFACT_LIMITS.maxFiles} files; this one has ${files.length}.`
22
+ )
23
+ }
24
+
25
+ const paths = new Set<string>()
26
+ let totalBytes = 0
27
+ for (const entry of files) {
28
+ if (!isArtifactPath(entry.path)) {
29
+ throw invalidArtifact(
30
+ `'${entry.path}' is not a usable file path: use a relative path with / separators, no . or .. segments, and at most ${ARTIFACT_LIMITS.maxPathLength} characters.`
31
+ )
32
+ }
33
+ if (paths.has(entry.path)) throw invalidArtifact(`'${entry.path}' appears twice.`)
34
+ paths.add(entry.path)
35
+ if (!isValidFileRef(entry.file)) {
36
+ throw invalidArtifact(`'${entry.path}' does not have a valid file reference.`)
37
+ }
38
+ if (entry.file.sizeBytes > ARTIFACT_LIMITS.maxFileBytes) {
39
+ throw invalidArtifact(
40
+ `'${entry.path}' is ${entry.file.sizeBytes} bytes; a file may be at most ${ARTIFACT_LIMITS.maxFileBytes}.`
41
+ )
42
+ }
43
+ totalBytes += entry.file.sizeBytes
44
+ }
45
+ if (totalBytes > ARTIFACT_LIMITS.maxVersionBytes) {
46
+ throw invalidArtifact(
47
+ `The files total ${totalBytes} bytes; a version may hold at most ${ARTIFACT_LIMITS.maxVersionBytes}.`
48
+ )
49
+ }
50
+
51
+ const stored = await Promise.all(files.map((entry) => statFileRef(blobStorage, entry.file)))
52
+ const missing = files.find((_, index) => !stored[index])
53
+ if (missing) throw invalidArtifact(`'${missing.path}' refers to a file that is not stored.`)
54
+ }
55
+
56
+ /** The file at `path`, read as UTF-8 text when it is no larger than `maxBytes`. */
57
+ export async function readArtifactText(
58
+ blobStorage: ArtifactBlobStorage,
59
+ file: ArtifactFile,
60
+ maxBytes: number
61
+ ): Promise<string> {
62
+ if (file.file.sizeBytes > maxBytes) {
63
+ throw invalidArtifact(
64
+ `'${file.path}' is ${file.file.sizeBytes} bytes; it may be at most ${maxBytes}.`
65
+ )
66
+ }
67
+ const text = await new Response(await blobStorage.open(file.file.blobId)).text()
68
+ // A byte-order mark is not part of the text.
69
+ return text.charCodeAt(0) === 0xfeff ? text.slice(1) : text
70
+ }
71
+
72
+ /** Relative, `/`-separated, no empty, `.`, or `..` segment, no backslash or control character. */
73
+ export function isArtifactPath(path: string): boolean {
74
+ return (
75
+ typeof path === "string" &&
76
+ path.length > 0 &&
77
+ path.length <= ARTIFACT_LIMITS.maxPathLength &&
78
+ !path.startsWith("/") &&
79
+ !path.includes("\\") &&
80
+ !/[\u0000-\u001f\u007f]/.test(path) &&
81
+ path.split("/").every((segment) => segment.length > 0 && segment !== "." && segment !== "..")
82
+ )
83
+ }
84
+
85
+ export function invalidArtifact(message: string): ArtifactRequestError {
86
+ return new ArtifactRequestError("invalid_artifact", `[Sixb] ${message}`)
87
+ }