@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
@@ -565,6 +565,20 @@ export function runAgentStorageContractSuite<TStorage extends AgentStorageContra
565
565
  })
566
566
  })
567
567
 
568
+ test("reads several threads at once, in the order asked", async () => {
569
+ await withStorage(async (storage) => {
570
+ const first = await storage.threads.create(threadInput())
571
+ const second = await storage.threads.create(threadInput({ id: "thr_2" }))
572
+ await storage.threads.create(threadInput({ id: "thr_3", projectId: otherProjectId }))
573
+
574
+ await expect(
575
+ storage.threads.getByIds({ projectId, ids: ["thr_2", "missing", "thr_1", "thr_2"] })
576
+ ).resolves.toEqual([second, first])
577
+ await expect(storage.threads.getByIds({ projectId, ids: ["thr_3"] })).resolves.toEqual([])
578
+ await expect(storage.threads.getByIds({ projectId, ids: [] })).resolves.toEqual([])
579
+ })
580
+ })
581
+
568
582
  test("lists threads with filters, ordering, and pagination", async () => {
569
583
  await withStorage(async (storage) => {
570
584
  await storage.threads.create(
@@ -861,23 +875,12 @@ export function runAgentStorageContractSuite<TStorage extends AgentStorageContra
861
875
  id: "child_1",
862
876
  executionToken: "child_token",
863
877
  status: "succeeded",
864
- result: {},
878
+ result: { text: " " },
865
879
  }),
866
880
  "invalid_input"
867
881
  )
868
882
 
869
- const result = {
870
- text: "Three open orders.",
871
- files: [
872
- {
873
- blobId: `blob_${"a".repeat(64)}`,
874
- digest: `sha256:${"a".repeat(64)}` as const,
875
- fileName: "orders.csv",
876
- mediaType: "text/csv",
877
- sizeBytes: 42,
878
- },
879
- ],
880
- }
883
+ const result = { text: "Three open orders." }
881
884
  const completed = await storage.runs.finish({
882
885
  projectId,
883
886
  id: "child_1",
@@ -1087,11 +1090,10 @@ export function runAgentStorageContractSuite<TStorage extends AgentStorageContra
1087
1090
  finishReason: "stop",
1088
1091
  diagnostics: [
1089
1092
  {
1090
- code: "output_file_too_large",
1093
+ code: "step_limit_reached",
1091
1094
  severity: "warning",
1092
- scope: "output",
1093
- path: "reports/full.csv",
1094
- message: "This generated file was skipped.",
1095
+ scope: "run",
1096
+ message: "The Agent reached its 100-step limit before producing a final answer.",
1095
1097
  },
1096
1098
  ],
1097
1099
  completedAt: at("2026-06-23T10:07:00.000Z"),
@@ -1103,11 +1105,10 @@ export function runAgentStorageContractSuite<TStorage extends AgentStorageContra
1103
1105
  })
1104
1106
  expect(finished.diagnostics).toEqual([
1105
1107
  {
1106
- code: "output_file_too_large",
1108
+ code: "step_limit_reached",
1107
1109
  severity: "warning",
1108
- scope: "output",
1109
- path: "reports/full.csv",
1110
- message: "This generated file was skipped.",
1110
+ scope: "run",
1111
+ message: "The Agent reached its 100-step limit before producing a final answer.",
1111
1112
  },
1112
1113
  ])
1113
1114
  await expect(
@@ -0,0 +1,517 @@
1
+ import { describe, expect, test } from "bun:test"
2
+ import type { Principal } from "../auth"
3
+ import type { FileRef } from "../blob-storage"
4
+ import {
5
+ type ArtifactFrameGrantRecord,
6
+ type ArtifactStorage,
7
+ ArtifactStorageError,
8
+ type ArtifactStorageErrorCode,
9
+ type ArtifactVersionInput,
10
+ type CreateArtifactInput,
11
+ } from "../storage/artifacts"
12
+ import type { Storage } from "../storage/types"
13
+
14
+ export interface ArtifactStorageContractStorage extends Pick<Storage, "transaction"> {
15
+ readonly artifacts: ArtifactStorage
16
+ }
17
+
18
+ export interface ArtifactStorageContractSuiteOptions<
19
+ TStorage extends ArtifactStorageContractStorage = ArtifactStorageContractStorage,
20
+ > {
21
+ /** Returns a fresh, empty storage bundle for every test. */
22
+ readonly createStorage: () => TStorage | Promise<TStorage>
23
+ readonly teardown?: (storage: TStorage) => void | Promise<void>
24
+ }
25
+
26
+ const projectId = "artifact-contract"
27
+ const otherProjectId = "artifact-contract-other"
28
+ const owner: Principal = { type: "user", id: "usr_owner" }
29
+ const otherOwner: Principal = { type: "user", id: "usr_other" }
30
+ const agentRun = { threadId: "thr_1", runId: "run_1" }
31
+ const t0 = new Date("2026-10-17T10:00:00.000Z")
32
+ const minute = 60 * 1000
33
+
34
+ /** Provider-neutral persistence contract for artifacts and their versions. */
35
+ export function runArtifactStorageContractSuite<TStorage extends ArtifactStorageContractStorage>(
36
+ label: string,
37
+ options: ArtifactStorageContractSuiteOptions<TStorage>
38
+ ): void {
39
+ const withStorage = async (
40
+ run: (artifacts: ArtifactStorage, storage: TStorage) => Promise<void>
41
+ ): Promise<void> => {
42
+ const storage = await options.createStorage()
43
+ try {
44
+ await run(storage.artifacts, storage)
45
+ } finally {
46
+ await options.teardown?.(storage)
47
+ }
48
+ }
49
+
50
+ describe(label, () => {
51
+ test("creates an artifact with its first version and reads both back", async () => {
52
+ await withStorage(async (artifacts) => {
53
+ const created = await artifacts.create(createInput())
54
+
55
+ expect(created.artifact).toEqual({
56
+ projectId,
57
+ id: "art_report",
58
+ kind: "document",
59
+ title: "Q3 report",
60
+ owner,
61
+ latestVersion: 1,
62
+ createdAt: t0,
63
+ updatedAt: t0,
64
+ })
65
+ expect(created.version).toEqual({
66
+ projectId,
67
+ artifactId: "art_report",
68
+ version: 1,
69
+ ...versionInput(),
70
+ })
71
+ expect(await artifacts.get({ projectId, id: "art_report" })).toEqual(created.artifact)
72
+ expect(
73
+ await artifacts.getVersion({ projectId, artifactId: "art_report", version: 1 })
74
+ ).toEqual(created.version)
75
+ })
76
+ })
77
+
78
+ test("rejects a second artifact with the same id in the same project", async () => {
79
+ await withStorage(async (artifacts) => {
80
+ await artifacts.create(createInput())
81
+
82
+ await expectArtifactError(artifacts.create(createInput()), "artifact_exists")
83
+ await artifacts.create(createInput({ projectId: otherProjectId }))
84
+ })
85
+ })
86
+
87
+ test("numbers versions in order and makes the newest the latest", async () => {
88
+ await withStorage(async (artifacts) => {
89
+ await artifacts.create(createInput())
90
+ const second = await artifacts.publish(
91
+ publishInput({ title: "Q3 report, revised", createdAt: at(1) })
92
+ )
93
+ const third = await artifacts.publish(publishInput({ createdAt: at(2) }))
94
+
95
+ expect(second.version.version).toBe(2)
96
+ expect(third.version.version).toBe(3)
97
+ expect(third.artifact).toMatchObject({ latestVersion: 3, updatedAt: at(2), createdAt: t0 })
98
+ expect(second.artifact.title).toBe("Q3 report, revised")
99
+ expect((await artifacts.get({ projectId, id: "art_report" }))?.title).toBe("Q3 report")
100
+ })
101
+ })
102
+
103
+ test("keeps the kind fixed and refuses versions for a missing artifact", async () => {
104
+ await withStorage(async (artifacts) => {
105
+ await artifacts.create(createInput())
106
+
107
+ await expectArtifactError(
108
+ artifacts.publish({ ...publishInput(), kind: "slides" }),
109
+ "artifact_kind_mismatch"
110
+ )
111
+ await expectArtifactError(
112
+ artifacts.publish({ ...publishInput(), artifactId: "art_missing" }),
113
+ "artifact_not_found"
114
+ )
115
+ await expectArtifactError(
116
+ artifacts.publish({ ...publishInput(), projectId: otherProjectId }),
117
+ "artifact_not_found"
118
+ )
119
+ expect((await artifacts.get({ projectId, id: "art_report" }))?.latestVersion).toBe(1)
120
+ })
121
+ })
122
+
123
+ test("stores a version's files, outline, references, and origin exactly", async () => {
124
+ await withStorage(async (artifacts) => {
125
+ const version = versionInput({
126
+ entry: "index.html",
127
+ files: [
128
+ { path: "index.html", file: fileRef("a", "text/html") },
129
+ { path: "img/fleet one.jpg", file: fileRef("b", "image/jpeg") },
130
+ ],
131
+ outline: { kind: "slides", slides: [{ title: "Q3 review" }, {}] },
132
+ references: [
133
+ {
134
+ address: "artifact:art_numbers#chart=revenue",
135
+ as: "embed",
136
+ at: "3",
137
+ resolvedVersion: 2,
138
+ },
139
+ { address: "artifact:art_report#methodology", as: "link", at: "5", resolvedVersion: 1 },
140
+ ],
141
+ origin: undefined,
142
+ })
143
+ const created = await artifacts.create(createInput({ kind: "slides", version }))
144
+
145
+ expect(created.version).not.toHaveProperty("origin")
146
+ expect(
147
+ await artifacts.getVersion({ projectId, artifactId: "art_report", version: 1 })
148
+ ).toEqual({ projectId, artifactId: "art_report", version: 1, ...version })
149
+ })
150
+ })
151
+
152
+ test("lists the latest versions that refer to an artifact, at any version, file, or part", async () => {
153
+ await withStorage(async (artifacts) => {
154
+ const refer = (address: string) => ({
155
+ address,
156
+ as: "embed" as const,
157
+ at: "",
158
+ resolvedVersion: 1,
159
+ })
160
+ const create = (id: string, addresses: string[], project = projectId) =>
161
+ artifacts.create(
162
+ createInput({
163
+ projectId: project,
164
+ id,
165
+ version: versionInput({ references: addresses.map(refer) }),
166
+ })
167
+ )
168
+ await create("art_numbers", [])
169
+ await create("art_whole", ["artifact:art_numbers"])
170
+ await create("art_pinned", ["artifact:art_numbers@1/figures/a.svg"])
171
+ await create("art_chart", ["artifact:art_numbers#chart=revenue"])
172
+ // A longer id that starts with the same letters is another artifact.
173
+ await create("art_longer", ["artifact:art_numbersx#chart=revenue"])
174
+ await create("art_elsewhere", ["artifact:art_numbers"], otherProjectId)
175
+ // Only the latest version counts: this one dropped its reference.
176
+ await create("art_dropped", ["artifact:art_numbers#Summary"])
177
+ await artifacts.publish(publishInput({ createdAt: at(1) }, "art_dropped"))
178
+
179
+ const referencing = await artifacts.listReferencingVersions({
180
+ projectId,
181
+ artifactId: "art_numbers",
182
+ })
183
+ // In artifact id order, whatever order they were published in. To see this fail, drop the
184
+ // sort in `InMemoryArtifactStorage.listReferencingVersions`.
185
+ expect(referencing.map((version) => version.artifactId)).toEqual([
186
+ "art_chart",
187
+ "art_pinned",
188
+ "art_whole",
189
+ ])
190
+ expect(
191
+ referencing.find((version) => version.artifactId === "art_chart")?.references
192
+ ).toEqual([refer("artifact:art_numbers#chart=revenue")])
193
+ })
194
+ })
195
+
196
+ test("stores frame grants by token hash, expires them in batches, and drops them with the artifact", async () => {
197
+ await withStorage(async (artifacts) => {
198
+ await artifacts.create(createInput())
199
+ const grant = (seed: string, expiresInMinutes: number) =>
200
+ frameGrant(seed, { expiresAt: at(expiresInMinutes) })
201
+ await artifacts.createFrameGrant(grant("a", 60))
202
+ await artifacts.createFrameGrant(grant("b", 5))
203
+ await artifacts.createFrameGrant(grant("c", 10))
204
+
205
+ expect(await artifacts.findFrameGrant({ projectId, tokenHash: "a".repeat(64) })).toEqual(
206
+ grant("a", 60)
207
+ )
208
+ expect(
209
+ await artifacts.findFrameGrant({ projectId: otherProjectId, tokenHash: "a".repeat(64) })
210
+ ).toBeNull()
211
+ await expectArtifactError(
212
+ artifacts.createFrameGrant({ ...grant("d", 60), artifactId: "art_missing" }),
213
+ "artifact_not_found"
214
+ )
215
+
216
+ // Expired before minute 30: b and c, one at a time.
217
+ const expiredBefore = at(30)
218
+ expect(
219
+ await artifacts.deleteExpiredFrameGrants({ projectId, expiredBefore, limit: 1 })
220
+ ).toBe(1)
221
+ expect(
222
+ await artifacts.deleteExpiredFrameGrants({ projectId, expiredBefore, limit: 10 })
223
+ ).toBe(1)
224
+ expect(await artifacts.findFrameGrant({ projectId, tokenHash: "b".repeat(64) })).toBeNull()
225
+ expect(
226
+ await artifacts.findFrameGrant({ projectId, tokenHash: "a".repeat(64) })
227
+ ).not.toBeNull()
228
+
229
+ await artifacts.delete({ projectId, id: "art_report" })
230
+ expect(await artifacts.findFrameGrant({ projectId, tokenHash: "a".repeat(64) })).toBeNull()
231
+ })
232
+ })
233
+
234
+ test("lists the latest of each artifact, most recently updated first", async () => {
235
+ await withStorage(async (artifacts) => {
236
+ await artifacts.create(createInput({ id: "art_a" }))
237
+ await artifacts.create(
238
+ createInput({ id: "art_b", version: versionInput({ createdAt: at(1) }) })
239
+ )
240
+ await artifacts.create(
241
+ createInput({ id: "art_c", version: versionInput({ createdAt: at(2) }) })
242
+ )
243
+ await artifacts.publish(publishInput({ createdAt: at(3) }, "art_a"))
244
+
245
+ const all = await artifacts.list({ projectId })
246
+ expect(all.artifacts.map((artifact) => artifact.id)).toEqual(["art_a", "art_c", "art_b"])
247
+ expect(all).toMatchObject({ total: 3, hasMore: false })
248
+
249
+ const page = await artifacts.list({ projectId, limit: 2, offset: 1 })
250
+ expect(page.artifacts.map((artifact) => artifact.id)).toEqual(["art_c", "art_b"])
251
+ expect(page).toMatchObject({ total: 3, hasMore: false })
252
+ expect((await artifacts.list({ projectId, limit: 1 })).hasMore).toBe(true)
253
+ })
254
+ })
255
+
256
+ test("lists one kind, counting only that kind", async () => {
257
+ await withStorage(async (artifacts) => {
258
+ await artifacts.create(createInput({ id: "art_doc" }))
259
+ await artifacts.create(createInput({ id: "art_deck_a", kind: "slides" }))
260
+ await artifacts.create(
261
+ createInput({
262
+ id: "art_deck_b",
263
+ kind: "slides",
264
+ version: versionInput({ createdAt: at(1) }),
265
+ })
266
+ )
267
+ const decks = await artifacts.list({ projectId, kind: "slides", limit: 1 })
268
+ expect(decks.artifacts.map((artifact) => artifact.id)).toEqual(["art_deck_b"])
269
+ expect(decks).toMatchObject({ total: 2, hasMore: true })
270
+ expect((await artifacts.list({ projectId, kind: "sheet" })).total).toBe(0)
271
+ })
272
+ })
273
+
274
+ test("lists by owner, by the thread a version came from, and only within the project", async () => {
275
+ await withStorage(async (artifacts) => {
276
+ await artifacts.create(createInput({ id: "art_mine" }))
277
+ await artifacts.create(
278
+ createInput({
279
+ id: "art_theirs",
280
+ owner: otherOwner,
281
+ version: versionInput({
282
+ author: otherOwner,
283
+ origin: { threadId: "thr_2", runId: "run_2" },
284
+ }),
285
+ })
286
+ )
287
+ await artifacts.create(
288
+ createInput({ id: "art_api", version: versionInput({ origin: undefined }) })
289
+ )
290
+ await artifacts.publish(
291
+ publishInput(
292
+ { origin: { threadId: "thr_3", runId: "run_3" }, createdAt: at(1) },
293
+ "art_api"
294
+ )
295
+ )
296
+ await artifacts.create(createInput({ projectId: otherProjectId, id: "art_elsewhere" }))
297
+
298
+ const ids = async (input: Parameters<ArtifactStorage["list"]>[0]) =>
299
+ (await artifacts.list(input)).artifacts.map((artifact) => artifact.id).sort()
300
+
301
+ expect(await ids({ projectId, owner })).toEqual(["art_api", "art_mine"])
302
+ expect(await ids({ projectId, owner: otherOwner })).toEqual(["art_theirs"])
303
+ expect(await ids({ projectId, originThreadId: "thr_1" })).toEqual(["art_mine"])
304
+ expect(await ids({ projectId, originThreadId: "thr_3" })).toEqual(["art_api"])
305
+ expect(await ids({ projectId, owner, originThreadId: "thr_2" })).toEqual([])
306
+ expect(await ids({ projectId: otherProjectId })).toEqual(["art_elsewhere"])
307
+ })
308
+ })
309
+
310
+ test("lists versions newest first, a page at a time", async () => {
311
+ await withStorage(async (artifacts) => {
312
+ await artifacts.create(createInput())
313
+ await artifacts.publish(publishInput({ createdAt: at(1) }))
314
+ await artifacts.publish(publishInput({ createdAt: at(2) }))
315
+
316
+ const all = await artifacts.listVersions({ projectId, artifactId: "art_report" })
317
+ expect(all.versions.map((version) => version.version)).toEqual([3, 2, 1])
318
+ expect(all).toMatchObject({ total: 3, hasMore: false })
319
+
320
+ const page = await artifacts.listVersions({
321
+ projectId,
322
+ artifactId: "art_report",
323
+ limit: 1,
324
+ offset: 1,
325
+ })
326
+ expect(page.versions.map((version) => version.version)).toEqual([2])
327
+ expect(page).toMatchObject({ total: 3, hasMore: true })
328
+ expect(await artifacts.listVersions({ projectId, artifactId: "art_missing" })).toEqual({
329
+ versions: [],
330
+ hasMore: false,
331
+ total: 0,
332
+ })
333
+ })
334
+ })
335
+
336
+ test("deletes an artifact with every version", async () => {
337
+ await withStorage(async (artifacts) => {
338
+ await artifacts.create(createInput())
339
+ await artifacts.publish(publishInput({ createdAt: at(1) }))
340
+
341
+ expect(await artifacts.delete({ projectId: otherProjectId, id: "art_report" })).toBe(false)
342
+ expect(await artifacts.delete({ projectId, id: "art_report" })).toBe(true)
343
+ expect(await artifacts.get({ projectId, id: "art_report" })).toBeNull()
344
+ expect(
345
+ await artifacts.getVersion({ projectId, artifactId: "art_report", version: 1 })
346
+ ).toBeNull()
347
+ expect(await artifacts.delete({ projectId, id: "art_report" })).toBe(false)
348
+
349
+ // The id is free again, and numbering starts over for the new artifact.
350
+ expect((await artifacts.create(createInput())).version.version).toBe(1)
351
+ })
352
+ })
353
+
354
+ test("deletes a run's versions, repoints latest, and never reuses a number", async () => {
355
+ await withStorage(async (artifacts) => {
356
+ await artifacts.create(
357
+ createInput({ version: versionInput({ origin: { threadId: "thr_1", runId: "run_0" } }) })
358
+ )
359
+ await artifacts.publish(
360
+ publishInput({
361
+ title: "Kept",
362
+ createdAt: at(1),
363
+ origin: { threadId: "thr_1", runId: "run_0" },
364
+ })
365
+ )
366
+ await artifacts.publish(publishInput({ title: "Retried", createdAt: at(2) }))
367
+ await artifacts.create(
368
+ createInput({ id: "art_new_in_run", version: versionInput({ createdAt: at(2) }) })
369
+ )
370
+ await artifacts.create(
371
+ createInput({
372
+ id: "art_other_run",
373
+ version: versionInput({ origin: { threadId: "thr_1", runId: "run_9" } }),
374
+ })
375
+ )
376
+ await artifacts.createFrameGrant(frameGrant("a"))
377
+ await artifacts.createFrameGrant(frameGrant("b", { artifactId: "art_new_in_run" }))
378
+
379
+ expect(
380
+ await artifacts.deleteVersionsByOrigin({ projectId: otherProjectId, runId: "run_1" })
381
+ ).toBe(0)
382
+ expect(await artifacts.deleteVersionsByOrigin({ projectId, runId: "run_1" })).toBe(2)
383
+
384
+ expect(await artifacts.get({ projectId, id: "art_report" })).toMatchObject({
385
+ title: "Kept",
386
+ latestVersion: 2,
387
+ updatedAt: at(1),
388
+ })
389
+ expect(
390
+ await artifacts.getVersion({ projectId, artifactId: "art_report", version: 3 })
391
+ ).toBeNull()
392
+ expect(await artifacts.get({ projectId, id: "art_new_in_run" })).toBeNull()
393
+ expect(await artifacts.get({ projectId, id: "art_other_run" })).not.toBeNull()
394
+ // A deleted artifact's frame grants go with it; a kept one's stay. To see this fail, delete
395
+ // the artifact from the map alone in `InMemoryArtifactStorage.deleteVersionsByOrigin`.
396
+ expect(await artifacts.findFrameGrant({ projectId, tokenHash: "b".repeat(64) })).toBeNull()
397
+ expect(
398
+ await artifacts.findFrameGrant({ projectId, tokenHash: "a".repeat(64) })
399
+ ).not.toBeNull()
400
+
401
+ // Version 3 belonged to the retried run; the next one is 4, so an address pinned to @3
402
+ // can never land on different content.
403
+ expect((await artifacts.publish(publishInput({ createdAt: at(3) }))).version.version).toBe(
404
+ 4
405
+ )
406
+ })
407
+ })
408
+
409
+ test("rolls back with its containing storage transaction", async () => {
410
+ await withStorage(async (artifacts, storage) => {
411
+ await artifacts.create(createInput())
412
+ const rollback = new Error("rollback artifact publish")
413
+
414
+ await expect(
415
+ storage.transaction(async (tx) => {
416
+ if (!tx.artifacts) throw new Error("Expected artifact storage in the transaction.")
417
+ await tx.artifacts.publish(publishInput({ createdAt: at(1) }))
418
+ await tx.artifacts.create(createInput({ id: "art_rolled_back" }))
419
+ await tx.artifacts.createFrameGrant(frameGrant("a"))
420
+ expect((await tx.artifacts.get({ projectId, id: "art_report" }))?.latestVersion).toBe(2)
421
+ throw rollback
422
+ })
423
+ ).rejects.toBe(rollback)
424
+
425
+ expect((await artifacts.get({ projectId, id: "art_report" }))?.latestVersion).toBe(1)
426
+ expect(await artifacts.get({ projectId, id: "art_rolled_back" })).toBeNull()
427
+ // To see this fail, leave frame grants out of `InMemoryArtifactStorage.restore`.
428
+ expect(await artifacts.findFrameGrant({ projectId, tokenHash: "a".repeat(64) })).toBeNull()
429
+ expect((await artifacts.publish(publishInput({ createdAt: at(2) }))).version.version).toBe(
430
+ 2
431
+ )
432
+ })
433
+ })
434
+ })
435
+ }
436
+
437
+ async function expectArtifactError(
438
+ promise: Promise<unknown>,
439
+ code: ArtifactStorageErrorCode
440
+ ): Promise<void> {
441
+ const error = await promise.then(
442
+ () => null,
443
+ (caught: unknown) => caught
444
+ )
445
+ expect(error).toBeInstanceOf(ArtifactStorageError)
446
+ expect((error as ArtifactStorageError).code).toBe(code)
447
+ }
448
+
449
+ function createInput(overrides: Partial<CreateArtifactInput> = {}): CreateArtifactInput {
450
+ return {
451
+ projectId,
452
+ id: "art_report",
453
+ kind: "document",
454
+ owner,
455
+ version: versionInput(),
456
+ ...overrides,
457
+ }
458
+ }
459
+
460
+ function publishInput(overrides: Partial<ArtifactVersionInput> = {}, artifactId = "art_report") {
461
+ return {
462
+ projectId,
463
+ artifactId,
464
+ kind: "document" as const,
465
+ version: versionInput({ origin: agentRun, ...overrides }),
466
+ }
467
+ }
468
+
469
+ function versionInput(overrides: Partial<ArtifactVersionInput> = {}): ArtifactVersionInput {
470
+ const input: ArtifactVersionInput = {
471
+ title: "Q3 report",
472
+ entry: "document.md",
473
+ files: [{ path: "document.md", file: fileRef("d", "text/markdown") }],
474
+ outline: { kind: "document", headings: [{ depth: 2, text: "Revenue", slug: "revenue" }] },
475
+ references: [],
476
+ author: owner,
477
+ origin: agentRun,
478
+ createdAt: t0,
479
+ ...overrides,
480
+ }
481
+ if (input.origin) return input
482
+ const { origin: _origin, ...withoutOrigin } = input
483
+ return withoutOrigin
484
+ }
485
+
486
+ function frameGrant(
487
+ seed: string,
488
+ overrides: Partial<ArtifactFrameGrantRecord> = {}
489
+ ): ArtifactFrameGrantRecord {
490
+ return {
491
+ projectId,
492
+ tokenHash: seed.repeat(64).slice(0, 64),
493
+ artifactId: "art_report",
494
+ version: 1,
495
+ targets: [
496
+ { address: "artifact:art_other/figures/revenue.svg", artifactId: "art_other", version: 3 },
497
+ ],
498
+ createdAt: t0,
499
+ expiresAt: at(60),
500
+ ...overrides,
501
+ }
502
+ }
503
+
504
+ function fileRef(seed: string, mediaType: string): FileRef {
505
+ const hex = seed.repeat(64).slice(0, 64)
506
+ return {
507
+ blobId: `blob_${hex}`,
508
+ digest: `sha256:${hex}`,
509
+ sizeBytes: 42,
510
+ fileName: `${seed}.bin`,
511
+ mediaType,
512
+ }
513
+ }
514
+
515
+ function at(minutes: number): Date {
516
+ return new Date(t0.getTime() + minutes * minute)
517
+ }