@sixb/core 0.1.20 → 0.1.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (681) hide show
  1. package/dist/actions/execution.d.ts.map +1 -1
  2. package/dist/actions/index.js +54 -47
  3. package/dist/actions/index.js.map +1 -1
  4. package/dist/actions/request.d.ts.map +1 -1
  5. package/dist/actions/run-authorization.d.ts +9 -0
  6. package/dist/actions/run-authorization.d.ts.map +1 -1
  7. package/dist/activity/connection.d.ts +62 -0
  8. package/dist/activity/connection.d.ts.map +1 -0
  9. package/dist/activity/device.d.ts +8 -0
  10. package/dist/activity/device.d.ts.map +1 -0
  11. package/dist/activity/execution.d.ts +48 -0
  12. package/dist/activity/execution.d.ts.map +1 -0
  13. package/dist/activity/service.d.ts +79 -0
  14. package/dist/activity/service.d.ts.map +1 -0
  15. package/dist/activity/shares.d.ts +24 -0
  16. package/dist/activity/shares.d.ts.map +1 -0
  17. package/dist/activity/timeline.d.ts +96 -0
  18. package/dist/activity/timeline.d.ts.map +1 -0
  19. package/dist/agents/index.d.ts +2 -1
  20. package/dist/agents/index.d.ts.map +1 -1
  21. package/dist/agents/index.js +63 -50
  22. package/dist/agents/index.js.map +1 -1
  23. package/dist/agents/request.d.ts.map +1 -1
  24. package/dist/agents/skills.d.ts.map +1 -1
  25. package/dist/agents/streams/index.js +3 -3
  26. package/dist/agents/streams/internal.js +3 -3
  27. package/dist/agents/types.d.ts +8 -8
  28. package/dist/agents/types.d.ts.map +1 -1
  29. package/dist/agents/validation.d.ts +1 -1
  30. package/dist/agents/validation.d.ts.map +1 -1
  31. package/dist/artifacts/address.d.ts +48 -0
  32. package/dist/artifacts/address.d.ts.map +1 -0
  33. package/dist/artifacts/csv.d.ts +22 -0
  34. package/dist/artifacts/csv.d.ts.map +1 -0
  35. package/dist/artifacts/errors.d.ts +11 -0
  36. package/dist/artifacts/errors.d.ts.map +1 -0
  37. package/dist/artifacts/execution.d.ts +43 -0
  38. package/dist/artifacts/execution.d.ts.map +1 -0
  39. package/dist/artifacts/frames/assets.d.ts +28 -0
  40. package/dist/artifacts/frames/assets.d.ts.map +1 -0
  41. package/dist/artifacts/frames/grants.d.ts +37 -0
  42. package/dist/artifacts/frames/grants.d.ts.map +1 -0
  43. package/dist/artifacts/frames/index.d.ts +10 -0
  44. package/dist/artifacts/frames/index.d.ts.map +1 -0
  45. package/dist/artifacts/frames/index.js +892 -0
  46. package/dist/artifacts/frames/index.js.map +14 -0
  47. package/dist/artifacts/frames/kit.d.ts +66 -0
  48. package/dist/artifacts/frames/kit.d.ts.map +1 -0
  49. package/dist/artifacts/frames/probe.d.ts +41 -0
  50. package/dist/artifacts/frames/probe.d.ts.map +1 -0
  51. package/dist/artifacts/frames/protocol.d.ts +98 -0
  52. package/dist/artifacts/frames/protocol.d.ts.map +1 -0
  53. package/dist/artifacts/frames/runtime.d.ts +13 -0
  54. package/dist/artifacts/frames/runtime.d.ts.map +1 -0
  55. package/dist/artifacts/html.d.ts +6 -0
  56. package/dist/artifacts/html.d.ts.map +1 -0
  57. package/dist/artifacts/ids.d.ts +5 -0
  58. package/dist/artifacts/ids.d.ts.map +1 -0
  59. package/dist/artifacts/index.d.ts +16 -0
  60. package/dist/artifacts/index.d.ts.map +1 -0
  61. package/dist/artifacts/index.js +125 -0
  62. package/dist/artifacts/index.js.map +10 -0
  63. package/dist/artifacts/kinds.d.ts +5 -0
  64. package/dist/artifacts/kinds.d.ts.map +1 -0
  65. package/dist/artifacts/limits.d.ts +28 -0
  66. package/dist/artifacts/limits.d.ts.map +1 -0
  67. package/dist/artifacts/outline.d.ts +44 -0
  68. package/dist/artifacts/outline.d.ts.map +1 -0
  69. package/dist/artifacts/publish/files.d.ts +15 -0
  70. package/dist/artifacts/publish/files.d.ts.map +1 -0
  71. package/dist/artifacts/publish/index.d.ts +5 -0
  72. package/dist/artifacts/publish/index.d.ts.map +1 -0
  73. package/dist/artifacts/publish/index.js +36 -0
  74. package/dist/artifacts/publish/index.js.map +9 -0
  75. package/dist/artifacts/publish/publish.d.ts +52 -0
  76. package/dist/artifacts/publish/publish.d.ts.map +1 -0
  77. package/dist/artifacts/publish/references.d.ts +27 -0
  78. package/dist/artifacts/publish/references.d.ts.map +1 -0
  79. package/dist/artifacts/publish/validate/document.d.ts +17 -0
  80. package/dist/artifacts/publish/validate/document.d.ts.map +1 -0
  81. package/dist/artifacts/publish/validate/file.d.ts +8 -0
  82. package/dist/artifacts/publish/validate/file.d.ts.map +1 -0
  83. package/dist/artifacts/publish/validate/sheet.d.ts +15 -0
  84. package/dist/artifacts/publish/validate/sheet.d.ts.map +1 -0
  85. package/dist/artifacts/publish/validate/slides.d.ts +21 -0
  86. package/dist/artifacts/publish/validate/slides.d.ts.map +1 -0
  87. package/dist/artifacts/references.d.ts +12 -0
  88. package/dist/artifacts/references.d.ts.map +1 -0
  89. package/dist/artifacts/resolve.d.ts +41 -0
  90. package/dist/artifacts/resolve.d.ts.map +1 -0
  91. package/dist/artifacts/theme.d.ts +19 -0
  92. package/dist/artifacts/theme.d.ts.map +1 -0
  93. package/dist/artifacts/warnings.d.ts +11 -0
  94. package/dist/artifacts/warnings.d.ts.map +1 -0
  95. package/dist/artifacts/workbook.d.ts +64 -0
  96. package/dist/artifacts/workbook.d.ts.map +1 -0
  97. package/dist/auth/index.js +10 -10
  98. package/dist/authorization/decision.d.ts +2 -0
  99. package/dist/authorization/decision.d.ts.map +1 -1
  100. package/dist/authorization/grant-kinds.d.ts +2 -2
  101. package/dist/authorization/grant-kinds.d.ts.map +1 -1
  102. package/dist/authorization/index.js +6 -6
  103. package/dist/blob-storage/browser.js +1 -1
  104. package/dist/blob-storage/index.js +2 -2
  105. package/dist/blob-storage/internal.d.ts +1 -1
  106. package/dist/blob-storage/internal.d.ts.map +1 -1
  107. package/dist/blob-storage/internal.js +11 -5
  108. package/dist/blob-storage/internal.js.map +1 -1
  109. package/dist/blob-storage/media-type.d.ts +12 -0
  110. package/dist/blob-storage/media-type.d.ts.map +1 -1
  111. package/dist/bootstrap/index.js +53 -47
  112. package/dist/bootstrap/index.js.map +2 -2
  113. package/dist/{chunk-xfs8x8m9.js → chunk-0bphap9y.js} +5 -5
  114. package/dist/{chunk-1zq2p6g0.js → chunk-1cc1xaf3.js} +3 -3
  115. package/dist/chunk-3jms7je7.js +14 -0
  116. package/dist/chunk-3jms7je7.js.map +10 -0
  117. package/dist/{chunk-s54c868q.js → chunk-3qct2mdc.js} +3 -13
  118. package/dist/chunk-3qct2mdc.js.map +12 -0
  119. package/dist/{chunk-t7x8dmn0.js → chunk-431pyp2c.js} +3 -3
  120. package/dist/{chunk-c85m1hyj.js → chunk-447a5c0p.js} +2 -2
  121. package/dist/chunk-48qjhh6v.js +185 -0
  122. package/dist/chunk-48qjhh6v.js.map +13 -0
  123. package/dist/{chunk-ren4kg2j.js → chunk-561r0yc9.js} +8 -8
  124. package/dist/{chunk-5e43w60z.js → chunk-5948n82c.js} +2 -2
  125. package/dist/{chunk-yzwja0mj.js → chunk-5hx48dnn.js} +2 -2
  126. package/dist/{chunk-x6m907x7.js → chunk-5vems3nx.js} +5 -6
  127. package/dist/{chunk-x6m907x7.js.map → chunk-5vems3nx.js.map} +3 -3
  128. package/dist/{chunk-0rbyz4qy.js → chunk-61y5xs4p.js} +560 -164
  129. package/dist/{chunk-0rbyz4qy.js.map → chunk-61y5xs4p.js.map} +12 -9
  130. package/dist/chunk-65abf64x.js +13 -0
  131. package/dist/chunk-65abf64x.js.map +10 -0
  132. package/dist/{chunk-z3y5kg1x.js → chunk-6eqsgvxk.js} +3 -3
  133. package/dist/{chunk-z3y5kg1x.js.map → chunk-6eqsgvxk.js.map} +2 -2
  134. package/dist/chunk-6rqgmkde.js +2028 -0
  135. package/dist/chunk-6rqgmkde.js.map +29 -0
  136. package/dist/{chunk-d0bqz29d.js → chunk-6vb4st8k.js} +8 -4
  137. package/dist/{chunk-d0bqz29d.js.map → chunk-6vb4st8k.js.map} +3 -3
  138. package/dist/chunk-7q8t23v4.js +467 -0
  139. package/dist/chunk-7q8t23v4.js.map +14 -0
  140. package/dist/{chunk-5j58wjct.js → chunk-858emn8m.js} +6 -6
  141. package/dist/{chunk-hvsb78a1.js → chunk-8frc8a4j.js} +26 -26
  142. package/dist/{chunk-hvsb78a1.js.map → chunk-8frc8a4j.js.map} +2 -2
  143. package/dist/{chunk-3zxk45er.js → chunk-8ncg20rd.js} +3 -68
  144. package/dist/{chunk-3zxk45er.js.map → chunk-8ncg20rd.js.map} +4 -5
  145. package/dist/{chunk-n33z5bjw.js → chunk-918wwnaa.js} +490 -24
  146. package/dist/{chunk-n33z5bjw.js.map → chunk-918wwnaa.js.map} +13 -11
  147. package/dist/{chunk-rrzt8jdy.js → chunk-9j4jw7as.js} +103 -110
  148. package/dist/chunk-9j4jw7as.js.map +14 -0
  149. package/dist/chunk-9kgkfg6v.js +502 -0
  150. package/dist/chunk-9kgkfg6v.js.map +14 -0
  151. package/dist/chunk-a3faa34j.js +74 -0
  152. package/dist/chunk-a3faa34j.js.map +10 -0
  153. package/dist/{chunk-6c6sn0bh.js → chunk-akzryx9h.js} +335 -1167
  154. package/dist/{chunk-6c6sn0bh.js.map → chunk-akzryx9h.js.map} +18 -24
  155. package/dist/chunk-arns890k.js +10 -0
  156. package/dist/chunk-arns890k.js.map +10 -0
  157. package/dist/{chunk-hjzdd750.js → chunk-bk9svbcq.js} +11 -11
  158. package/dist/{chunk-hjzdd750.js.map → chunk-bk9svbcq.js.map} +2 -2
  159. package/dist/{chunk-hkc3jct7.js → chunk-c06hmxyy.js} +2 -10
  160. package/dist/chunk-c06hmxyy.js.map +10 -0
  161. package/dist/{chunk-6p49a5cq.js → chunk-c1rxbz5y.js} +3 -3
  162. package/dist/chunk-cfj9dfbb.js +288 -0
  163. package/dist/chunk-cfj9dfbb.js.map +12 -0
  164. package/dist/{chunk-bx9q3cwv.js → chunk-cn0fwwhy.js} +7 -7
  165. package/dist/{chunk-bx9q3cwv.js.map → chunk-cn0fwwhy.js.map} +1 -1
  166. package/dist/{chunk-gc4ntf7d.js → chunk-cwdzcv37.js} +1 -1
  167. package/dist/{chunk-fa02jy15.js → chunk-cy4mbddw.js} +1 -1
  168. package/dist/{chunk-9w055r5b.js → chunk-d09e3rax.js} +1 -1
  169. package/dist/chunk-d5rjr8c0.js +176 -0
  170. package/dist/chunk-d5rjr8c0.js.map +12 -0
  171. package/dist/{chunk-dk8tkk5f.js → chunk-d7dnxdep.js} +3 -3
  172. package/dist/{chunk-b38szspf.js → chunk-dhcv7yxc.js} +1 -1
  173. package/dist/{chunk-b38szspf.js.map → chunk-dhcv7yxc.js.map} +1 -1
  174. package/dist/{chunk-gsjm1wms.js → chunk-dhdha526.js} +8 -2
  175. package/dist/chunk-dhdha526.js.map +10 -0
  176. package/dist/{chunk-8mx7qw3y.js → chunk-dvd2fp9q.js} +2 -2
  177. package/dist/{chunk-8mx7qw3y.js.map → chunk-dvd2fp9q.js.map} +3 -3
  178. package/dist/{chunk-way52z4h.js → chunk-e17zdm62.js} +6 -12
  179. package/dist/{chunk-way52z4h.js.map → chunk-e17zdm62.js.map} +3 -4
  180. package/dist/{chunk-tpn40322.js → chunk-e6k4thh5.js} +11 -10
  181. package/dist/{chunk-tpn40322.js.map → chunk-e6k4thh5.js.map} +3 -3
  182. package/dist/{chunk-tw03bsmb.js → chunk-eptrvnby.js} +224 -3
  183. package/dist/chunk-eptrvnby.js.map +12 -0
  184. package/dist/{chunk-es1gxsbf.js → chunk-f4pamkt9.js} +8 -10
  185. package/dist/chunk-f4pamkt9.js.map +12 -0
  186. package/dist/chunk-ff5xkv0p.js +211 -0
  187. package/dist/chunk-ff5xkv0p.js.map +10 -0
  188. package/dist/{chunk-d09tj99x.js → chunk-g257jwnc.js} +10 -4
  189. package/dist/{chunk-d09tj99x.js.map → chunk-g257jwnc.js.map} +3 -3
  190. package/dist/chunk-g5bvzyyr.js +32 -0
  191. package/dist/chunk-g5bvzyyr.js.map +10 -0
  192. package/dist/chunk-hke9aeen.js +9 -0
  193. package/dist/chunk-hke9aeen.js.map +10 -0
  194. package/dist/{chunk-1sr8ryzk.js → chunk-hwksyjks.js} +122 -1
  195. package/dist/{chunk-1sr8ryzk.js.map → chunk-hwksyjks.js.map} +3 -3
  196. package/dist/chunk-jcfw4h7m.js +9 -0
  197. package/dist/chunk-jcfw4h7m.js.map +10 -0
  198. package/dist/{chunk-k6q3n2sc.js → chunk-k43ct2ke.js} +20 -11
  199. package/dist/chunk-k43ct2ke.js.map +12 -0
  200. package/dist/{chunk-3t2hgbgd.js → chunk-kge7k6ey.js} +40 -8
  201. package/dist/chunk-kge7k6ey.js.map +15 -0
  202. package/dist/{chunk-tg2cw67r.js → chunk-ky3j490c.js} +2 -2
  203. package/dist/chunk-mjddfa7k.js +129 -0
  204. package/dist/chunk-mjddfa7k.js.map +12 -0
  205. package/dist/{chunk-vpq4shxz.js → chunk-nn5xnx3s.js} +45 -10
  206. package/dist/{chunk-vpq4shxz.js.map → chunk-nn5xnx3s.js.map} +7 -6
  207. package/dist/{chunk-0yh890a4.js → chunk-q5e5tv4b.js} +35 -7
  208. package/dist/{chunk-0yh890a4.js.map → chunk-q5e5tv4b.js.map} +3 -3
  209. package/dist/{chunk-vyf9kfqf.js → chunk-q7gn29y3.js} +1 -1
  210. package/dist/{chunk-yevzdx4y.js → chunk-rmakanzx.js} +10 -12
  211. package/dist/{chunk-yevzdx4y.js.map → chunk-rmakanzx.js.map} +3 -4
  212. package/dist/{chunk-v9xd5wzd.js → chunk-s7jg7pmn.js} +1 -1
  213. package/dist/chunk-tbc1ngpd.js +642 -0
  214. package/dist/chunk-tbc1ngpd.js.map +18 -0
  215. package/dist/chunk-twe4dx8p.js +676 -0
  216. package/dist/chunk-twe4dx8p.js.map +15 -0
  217. package/dist/{chunk-9dmt152s.js → chunk-vf57cr4t.js} +2 -2
  218. package/dist/{chunk-9ybhtmg4.js → chunk-vvxtn22d.js} +1 -1
  219. package/dist/{chunk-jhm3zsa7.js → chunk-wkv3h3q7.js} +64 -2
  220. package/dist/{chunk-jhm3zsa7.js.map → chunk-wkv3h3q7.js.map} +3 -3
  221. package/dist/chunk-x0v3jd47.js +124 -0
  222. package/dist/chunk-x0v3jd47.js.map +10 -0
  223. package/dist/{chunk-7t429e3f.js → chunk-xvsc5m8n.js} +1 -1
  224. package/dist/{chunk-z4m0yz8c.js → chunk-y5tah2kf.js} +1 -1
  225. package/dist/{chunk-fkgc1wt8.js → chunk-z58tm0hm.js} +2 -2
  226. package/dist/datasets/builders.d.ts +15 -2
  227. package/dist/datasets/builders.d.ts.map +1 -1
  228. package/dist/datasets/column-index.d.ts +7 -0
  229. package/dist/datasets/column-index.d.ts.map +1 -0
  230. package/dist/datasets/execution.d.ts +3 -2
  231. package/dist/datasets/execution.d.ts.map +1 -1
  232. package/dist/datasets/write.js +8 -8
  233. package/dist/error-reporting/internal.js +4 -4
  234. package/dist/errors/internal.d.ts +1 -0
  235. package/dist/errors/internal.d.ts.map +1 -1
  236. package/dist/errors/internal.js +7 -4
  237. package/dist/errors/internal.js.map +1 -1
  238. package/dist/events/execution.d.ts +12 -2
  239. package/dist/events/execution.d.ts.map +1 -1
  240. package/dist/events/index.js +4 -4
  241. package/dist/execution/agent.js +56 -49
  242. package/dist/execution/agent.js.map +1 -1
  243. package/dist/execution/authorized-object-reader.d.ts +52 -11
  244. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  245. package/dist/execution/object-reader-clearance.d.ts +41 -0
  246. package/dist/execution/object-reader-clearance.d.ts.map +1 -0
  247. package/dist/execution/object-reader-ontology.d.ts +12 -0
  248. package/dist/execution/object-reader-ontology.d.ts.map +1 -0
  249. package/dist/execution/object-reader-security.d.ts +45 -0
  250. package/dist/execution/object-reader-security.d.ts.map +1 -0
  251. package/dist/execution/primitive.js +54 -47
  252. package/dist/execution/primitive.js.map +1 -1
  253. package/dist/execution/request.js +48 -41
  254. package/dist/execution/request.js.map +2 -2
  255. package/dist/http/api-routes.d.ts.map +1 -1
  256. package/dist/http/index.js +1 -1
  257. package/dist/index.d.ts +20 -4
  258. package/dist/index.d.ts.map +1 -1
  259. package/dist/index.js +112 -97
  260. package/dist/index.js.map +1 -1
  261. package/dist/lake-storage/in-memory.d.ts +1 -0
  262. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  263. package/dist/lake-storage/index.d.ts +6 -3
  264. package/dist/lake-storage/index.d.ts.map +1 -1
  265. package/dist/lake-storage/index.js +21 -13
  266. package/dist/lake-storage/index.js.map +1 -1
  267. package/dist/lake-storage/lineage.d.ts +94 -0
  268. package/dist/lake-storage/lineage.d.ts.map +1 -0
  269. package/dist/lake-storage/sql-transforms.d.ts +45 -0
  270. package/dist/lake-storage/sql-transforms.d.ts.map +1 -1
  271. package/dist/lake-storage/types.d.ts +55 -1
  272. package/dist/lake-storage/types.d.ts.map +1 -1
  273. package/dist/lake-storage/version-inputs.d.ts +14 -3
  274. package/dist/lake-storage/version-inputs.d.ts.map +1 -1
  275. package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
  276. package/dist/materializer/index.js +31 -30
  277. package/dist/materializer/index.js.map +1 -1
  278. package/dist/models/execution/index.js +25 -24
  279. package/dist/models/execution/index.js.map +1 -1
  280. package/dist/objects/clearance-redaction.d.ts +27 -0
  281. package/dist/objects/clearance-redaction.d.ts.map +1 -0
  282. package/dist/objects/index.js +54 -47
  283. package/dist/objects/index.js.map +1 -1
  284. package/dist/objects/link/authorization.d.ts +8 -5
  285. package/dist/objects/link/authorization.d.ts.map +1 -1
  286. package/dist/objects/link/upsert-batch.d.ts.map +1 -1
  287. package/dist/objects/object/delete.d.ts.map +1 -1
  288. package/dist/objects/object/upsert-batch.d.ts.map +1 -1
  289. package/dist/objects/object/upsert.d.ts.map +1 -1
  290. package/dist/objects/property-clearance.d.ts +47 -24
  291. package/dist/objects/property-clearance.d.ts.map +1 -1
  292. package/dist/objects/query/clearance-admission.d.ts +10 -0
  293. package/dist/objects/query/clearance-admission.d.ts.map +1 -0
  294. package/dist/objects/query/index.js +29 -28
  295. package/dist/objects/query/index.js.map +1 -1
  296. package/dist/objects/query/link-query-clearance.d.ts +21 -0
  297. package/dist/objects/query/link-query-clearance.d.ts.map +1 -0
  298. package/dist/ontology/builders.d.ts.map +1 -1
  299. package/dist/ontology/docs-markdown.d.ts +1 -1
  300. package/dist/ontology/docs-markdown.d.ts.map +1 -1
  301. package/dist/ontology/index.js +7 -7
  302. package/dist/ontology/internal.js +4 -4
  303. package/dist/ontology/internal.js.map +1 -1
  304. package/dist/pipelines/index.d.ts +2 -0
  305. package/dist/pipelines/index.d.ts.map +1 -1
  306. package/dist/pipelines/index.js +47 -35
  307. package/dist/pipelines/index.js.map +1 -1
  308. package/dist/pipelines/lineage.d.ts +17 -0
  309. package/dist/pipelines/lineage.d.ts.map +1 -0
  310. package/dist/projections/internal.d.ts +2 -2
  311. package/dist/projections/internal.js +30 -29
  312. package/dist/projections/internal.js.map +1 -1
  313. package/dist/runtime/create.d.ts +3 -0
  314. package/dist/runtime/create.d.ts.map +1 -1
  315. package/dist/runtime/host.d.ts +6 -0
  316. package/dist/runtime/host.d.ts.map +1 -1
  317. package/dist/runtime/internal.d.ts +2 -0
  318. package/dist/runtime/internal.d.ts.map +1 -1
  319. package/dist/runtime/internal.js +46 -42
  320. package/dist/runtime/internal.js.map +1 -1
  321. package/dist/runtime/ontology-mutations.d.ts +2 -0
  322. package/dist/runtime/ontology-mutations.d.ts.map +1 -1
  323. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  324. package/dist/runtime/sixb.d.ts +8 -0
  325. package/dist/runtime/sixb.d.ts.map +1 -1
  326. package/dist/sandboxes/auth.d.ts +16 -0
  327. package/dist/sandboxes/auth.d.ts.map +1 -1
  328. package/dist/sandboxes/config.d.ts.map +1 -1
  329. package/dist/sandboxes/configuration.d.ts +26 -0
  330. package/dist/sandboxes/configuration.d.ts.map +1 -1
  331. package/dist/sandboxes/index.d.ts +1 -1
  332. package/dist/sandboxes/index.d.ts.map +1 -1
  333. package/dist/sandboxes/index.js +14 -13
  334. package/dist/sandboxes/index.js.map +1 -1
  335. package/dist/sandboxes/sandbox.d.ts +28 -5
  336. package/dist/sandboxes/sandbox.d.ts.map +1 -1
  337. package/dist/security/applied-markings-contribution.d.ts +58 -0
  338. package/dist/security/applied-markings-contribution.d.ts.map +1 -0
  339. package/dist/security/applied-markings-host.d.ts +10 -0
  340. package/dist/security/applied-markings-host.d.ts.map +1 -0
  341. package/dist/security/applied-markings-snapshot.d.ts +67 -0
  342. package/dist/security/applied-markings-snapshot.d.ts.map +1 -0
  343. package/dist/security/applied-markings.d.ts +73 -0
  344. package/dist/security/applied-markings.d.ts.map +1 -0
  345. package/dist/security/dataset-version-markings.d.ts +47 -0
  346. package/dist/security/dataset-version-markings.d.ts.map +1 -0
  347. package/dist/security/grants.d.ts +3 -2
  348. package/dist/security/grants.d.ts.map +1 -1
  349. package/dist/security/index.d.ts +2 -1
  350. package/dist/security/index.d.ts.map +1 -1
  351. package/dist/security/internal.d.ts +15 -0
  352. package/dist/security/internal.d.ts.map +1 -0
  353. package/dist/security/internal.js +135 -0
  354. package/dist/security/internal.js.map +10 -0
  355. package/dist/security/marking-propagation.d.ts +62 -0
  356. package/dist/security/marking-propagation.d.ts.map +1 -0
  357. package/dist/security/marking-sets.d.ts +14 -0
  358. package/dist/security/marking-sets.d.ts.map +1 -0
  359. package/dist/security/markings.d.ts +6 -3
  360. package/dist/security/markings.d.ts.map +1 -1
  361. package/dist/security/pipeline-markings.d.ts +20 -0
  362. package/dist/security/pipeline-markings.d.ts.map +1 -0
  363. package/dist/security/project.d.ts +4 -0
  364. package/dist/security/project.d.ts.map +1 -0
  365. package/dist/security/projection-markings.d.ts +71 -0
  366. package/dist/security/projection-markings.d.ts.map +1 -0
  367. package/dist/security/public.js +2 -2
  368. package/dist/security/redactions.d.ts +4 -1
  369. package/dist/security/redactions.d.ts.map +1 -1
  370. package/dist/security/types.d.ts +22 -2
  371. package/dist/security/types.d.ts.map +1 -1
  372. package/dist/security/validation.d.ts.map +1 -1
  373. package/dist/shares/internal.js +24 -23
  374. package/dist/shares/internal.js.map +2 -2
  375. package/dist/storage/action-runs/failure.js +3 -3
  376. package/dist/storage/action-runs/in-memory.d.ts +4 -0
  377. package/dist/storage/action-runs/in-memory.d.ts.map +1 -1
  378. package/dist/storage/action-runs/types.d.ts +8 -0
  379. package/dist/storage/action-runs/types.d.ts.map +1 -1
  380. package/dist/storage/activity/in-memory.d.ts +55 -0
  381. package/dist/storage/activity/in-memory.d.ts.map +1 -0
  382. package/dist/storage/activity/index.d.ts +3 -0
  383. package/dist/storage/activity/index.d.ts.map +1 -0
  384. package/dist/storage/activity/policy.d.ts +96 -0
  385. package/dist/storage/activity/policy.d.ts.map +1 -0
  386. package/dist/storage/activity/types.d.ts +191 -0
  387. package/dist/storage/activity/types.d.ts.map +1 -0
  388. package/dist/storage/agents/in-memory.d.ts +4 -0
  389. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  390. package/dist/storage/agents/provider.d.ts.map +1 -1
  391. package/dist/storage/agents/provider.js +2 -5
  392. package/dist/storage/agents/provider.js.map +1 -1
  393. package/dist/storage/agents/types.d.ts +9 -8
  394. package/dist/storage/agents/types.d.ts.map +1 -1
  395. package/dist/storage/ai-limits/enforcement.js +3 -3
  396. package/dist/storage/artifacts/errors.d.ts +8 -0
  397. package/dist/storage/artifacts/errors.d.ts.map +1 -0
  398. package/dist/storage/artifacts/in-memory.d.ts +34 -0
  399. package/dist/storage/artifacts/in-memory.d.ts.map +1 -0
  400. package/dist/storage/artifacts/index.d.ts +5 -0
  401. package/dist/storage/artifacts/index.d.ts.map +1 -0
  402. package/dist/storage/artifacts/record.d.ts +17 -0
  403. package/dist/storage/artifacts/record.d.ts.map +1 -0
  404. package/dist/storage/artifacts/types.d.ts +184 -0
  405. package/dist/storage/artifacts/types.d.ts.map +1 -0
  406. package/dist/storage/auth/in-memory/sessions.d.ts +2 -1
  407. package/dist/storage/auth/in-memory/sessions.d.ts.map +1 -1
  408. package/dist/storage/auth/index.d.ts +1 -1
  409. package/dist/storage/auth/index.d.ts.map +1 -1
  410. package/dist/storage/auth/types.d.ts +19 -0
  411. package/dist/storage/auth/types.d.ts.map +1 -1
  412. package/dist/storage/connector-connections/provider.js +2 -2
  413. package/dist/storage/executions/in-memory.d.ts +2 -1
  414. package/dist/storage/executions/in-memory.d.ts.map +1 -1
  415. package/dist/storage/executions/index.d.ts +1 -1
  416. package/dist/storage/executions/index.d.ts.map +1 -1
  417. package/dist/storage/executions/provider.d.ts +2 -0
  418. package/dist/storage/executions/provider.d.ts.map +1 -1
  419. package/dist/storage/executions/provider.js +9 -223
  420. package/dist/storage/executions/provider.js.map +3 -4
  421. package/dist/storage/executions/types.d.ts +31 -0
  422. package/dist/storage/executions/types.d.ts.map +1 -1
  423. package/dist/storage/file-upload-sessions/provider.js +11 -11
  424. package/dist/storage/in-memory/index.d.ts +8 -0
  425. package/dist/storage/in-memory/index.d.ts.map +1 -1
  426. package/dist/storage/index.d.ts +6 -4
  427. package/dist/storage/index.d.ts.map +1 -1
  428. package/dist/storage/index.js +54 -53
  429. package/dist/storage/index.js.map +1 -1
  430. package/dist/storage/internal.d.ts +3 -0
  431. package/dist/storage/internal.d.ts.map +1 -1
  432. package/dist/storage/internal.js +66 -16
  433. package/dist/storage/internal.js.map +1 -1
  434. package/dist/storage/ontology/in-memory/sources.d.ts +2 -1
  435. package/dist/storage/ontology/in-memory/sources.d.ts.map +1 -1
  436. package/dist/storage/ontology/index.d.ts +1 -1
  437. package/dist/storage/ontology/index.d.ts.map +1 -1
  438. package/dist/storage/ontology/sources.d.ts +15 -0
  439. package/dist/storage/ontology/sources.d.ts.map +1 -1
  440. package/dist/storage/projection-runs/provider.js +3 -3
  441. package/dist/storage/share-grants/in-memory.d.ts +2 -1
  442. package/dist/storage/share-grants/in-memory.d.ts.map +1 -1
  443. package/dist/storage/share-grants/index.d.ts +1 -1
  444. package/dist/storage/share-grants/index.d.ts.map +1 -1
  445. package/dist/storage/share-grants/types.d.ts +6 -0
  446. package/dist/storage/share-grants/types.d.ts.map +1 -1
  447. package/dist/storage/types.d.ts +4 -0
  448. package/dist/storage/types.d.ts.map +1 -1
  449. package/dist/storage/workflow-runs/in-memory.d.ts +4 -0
  450. package/dist/storage/workflow-runs/in-memory.d.ts.map +1 -1
  451. package/dist/storage/workflow-runs/provider.js +13 -12
  452. package/dist/storage/workflow-runs/provider.js.map +1 -1
  453. package/dist/storage/workflow-runs/types.d.ts +5 -0
  454. package/dist/storage/workflow-runs/types.d.ts.map +1 -1
  455. package/dist/syncs/index.js +35 -34
  456. package/dist/syncs/index.js.map +1 -1
  457. package/dist/testing/action-run-storage-contract.d.ts.map +1 -1
  458. package/dist/testing/activity-storage-contract.d.ts +14 -0
  459. package/dist/testing/activity-storage-contract.d.ts.map +1 -0
  460. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  461. package/dist/testing/artifact-storage-contract.d.ts +13 -0
  462. package/dist/testing/artifact-storage-contract.d.ts.map +1 -0
  463. package/dist/testing/auth-storage-contract.d.ts.map +1 -1
  464. package/dist/testing/execution-storage-contract.d.ts.map +1 -1
  465. package/dist/testing/index.d.ts +2 -0
  466. package/dist/testing/index.d.ts.map +1 -1
  467. package/dist/testing/index.js +4488 -3137
  468. package/dist/testing/index.js.map +14 -12
  469. package/dist/testing/lake-merge-storage-contract.d.ts.map +1 -1
  470. package/dist/testing/lake-storage-contract.d.ts +2 -0
  471. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  472. package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
  473. package/dist/testing/share-grant-storage-contract.d.ts.map +1 -1
  474. package/dist/webhooks/internal.js +27 -26
  475. package/dist/webhooks/internal.js.map +2 -2
  476. package/dist/workers/index.js +2 -2
  477. package/dist/workflows/builders.d.ts.map +1 -1
  478. package/dist/workflows/index.js +57 -51
  479. package/dist/workflows/index.js.map +1 -1
  480. package/dist/workflows/types.d.ts +9 -0
  481. package/dist/workflows/types.d.ts.map +1 -1
  482. package/dist/workflows/validation.d.ts +7 -0
  483. package/dist/workflows/validation.d.ts.map +1 -1
  484. package/package.json +25 -1
  485. package/src/actions/execution.ts +18 -13
  486. package/src/actions/request.ts +18 -3
  487. package/src/actions/run-authorization.ts +23 -0
  488. package/src/activity/README.md +155 -0
  489. package/src/activity/connection.ts +217 -0
  490. package/src/activity/device.ts +41 -0
  491. package/src/activity/execution.ts +210 -0
  492. package/src/activity/service.ts +274 -0
  493. package/src/activity/shares.ts +62 -0
  494. package/src/activity/timeline.ts +424 -0
  495. package/src/agents/index.ts +8 -3
  496. package/src/agents/request.ts +5 -0
  497. package/src/agents/skills.ts +6 -0
  498. package/src/agents/types.ts +8 -8
  499. package/src/agents/validation.ts +2 -0
  500. package/src/artifacts/address.ts +132 -0
  501. package/src/artifacts/csv.ts +108 -0
  502. package/src/artifacts/errors.ts +21 -0
  503. package/src/artifacts/execution.ts +153 -0
  504. package/src/artifacts/frames/assets.ts +88 -0
  505. package/src/artifacts/frames/grants.ts +124 -0
  506. package/src/artifacts/frames/index.ts +15 -0
  507. package/src/artifacts/frames/kit.ts +392 -0
  508. package/src/artifacts/frames/probe.ts +309 -0
  509. package/src/artifacts/frames/protocol.ts +174 -0
  510. package/src/artifacts/frames/runtime.ts +213 -0
  511. package/src/artifacts/html.ts +25 -0
  512. package/src/artifacts/ids.ts +18 -0
  513. package/src/artifacts/index.ts +61 -0
  514. package/src/artifacts/kinds.ts +8 -0
  515. package/src/artifacts/limits.ts +27 -0
  516. package/src/artifacts/outline.ts +62 -0
  517. package/src/artifacts/publish/files.ts +87 -0
  518. package/src/artifacts/publish/index.ts +12 -0
  519. package/src/artifacts/publish/publish.ts +250 -0
  520. package/src/artifacts/publish/references.ts +130 -0
  521. package/src/artifacts/publish/validate/document.ts +114 -0
  522. package/src/artifacts/publish/validate/file.ts +19 -0
  523. package/src/artifacts/publish/validate/sheet.ts +251 -0
  524. package/src/artifacts/publish/validate/slides.ts +134 -0
  525. package/src/artifacts/references.ts +11 -0
  526. package/src/artifacts/resolve.ts +97 -0
  527. package/src/artifacts/theme.ts +116 -0
  528. package/src/artifacts/warnings.ts +10 -0
  529. package/src/artifacts/workbook.ts +315 -0
  530. package/src/authorization/decision.ts +5 -0
  531. package/src/authorization/grant-kinds.ts +14 -2
  532. package/src/blob-storage/internal.ts +1 -1
  533. package/src/blob-storage/media-type.ts +69 -0
  534. package/src/datasets/builders.ts +66 -2
  535. package/src/datasets/column-index.ts +19 -0
  536. package/src/datasets/execution.ts +23 -9
  537. package/src/errors/internal.ts +1 -0
  538. package/src/events/execution.ts +134 -21
  539. package/src/execution/authorized-object-reader.ts +270 -256
  540. package/src/execution/object-reader-clearance.ts +91 -0
  541. package/src/execution/object-reader-ontology.ts +63 -0
  542. package/src/execution/object-reader-security.ts +146 -0
  543. package/src/http/api-routes.ts +125 -0
  544. package/src/index.ts +71 -3
  545. package/src/lake-storage/in-memory.ts +26 -3
  546. package/src/lake-storage/index.ts +13 -1
  547. package/src/lake-storage/lineage.ts +385 -0
  548. package/src/lake-storage/sql-transforms.ts +45 -0
  549. package/src/lake-storage/types.ts +59 -1
  550. package/src/lake-storage/version-inputs.ts +35 -6
  551. package/src/maintenance/ontology-maintenance.ts +15 -0
  552. package/src/objects/clearance-redaction.ts +138 -0
  553. package/src/objects/link/authorization.ts +27 -7
  554. package/src/objects/link/remove.ts +2 -2
  555. package/src/objects/link/upsert-batch.ts +7 -5
  556. package/src/objects/link/upsert.ts +2 -2
  557. package/src/objects/object/delete.ts +2 -0
  558. package/src/objects/object/upsert-batch.ts +2 -4
  559. package/src/objects/object/upsert.ts +2 -3
  560. package/src/objects/property-clearance.ts +171 -152
  561. package/src/objects/query/clearance-admission.ts +112 -0
  562. package/src/objects/query/link-query-clearance.ts +73 -0
  563. package/src/ontology/builders.ts +12 -1
  564. package/src/ontology/docs-markdown.ts +1 -1
  565. package/src/pipelines/index.ts +2 -0
  566. package/src/pipelines/lineage.ts +45 -0
  567. package/src/projections/internal.ts +2 -2
  568. package/src/runtime/create.ts +4 -0
  569. package/src/runtime/host.ts +55 -0
  570. package/src/runtime/internal.ts +2 -0
  571. package/src/runtime/ontology-mutations.ts +19 -4
  572. package/src/runtime/resolve-definitions.ts +66 -3
  573. package/src/runtime/sixb.ts +18 -1
  574. package/src/sandboxes/README.md +29 -7
  575. package/src/sandboxes/auth.ts +16 -0
  576. package/src/sandboxes/config.ts +2 -7
  577. package/src/sandboxes/configuration.ts +61 -7
  578. package/src/sandboxes/index.ts +1 -0
  579. package/src/sandboxes/sandbox.ts +27 -5
  580. package/src/security/applied-markings-contribution.ts +277 -0
  581. package/src/security/applied-markings-host.ts +41 -0
  582. package/src/security/applied-markings-snapshot.ts +235 -0
  583. package/src/security/applied-markings.ts +405 -0
  584. package/src/security/dataset-version-markings.ts +163 -0
  585. package/src/security/grants.ts +39 -4
  586. package/src/security/index.ts +3 -0
  587. package/src/security/internal.ts +18 -0
  588. package/src/security/marking-propagation.ts +255 -0
  589. package/src/security/marking-sets.ts +42 -0
  590. package/src/security/markings.ts +29 -178
  591. package/src/security/pipeline-markings.ts +175 -0
  592. package/src/security/project.ts +8 -0
  593. package/src/security/projection-markings.ts +421 -0
  594. package/src/security/redactions.ts +7 -2
  595. package/src/security/types.ts +20 -2
  596. package/src/security/validation.ts +11 -4
  597. package/src/storage/action-runs/in-memory.ts +18 -0
  598. package/src/storage/action-runs/types.ts +8 -0
  599. package/src/storage/activity/in-memory.ts +374 -0
  600. package/src/storage/activity/index.ts +27 -0
  601. package/src/storage/activity/policy.ts +430 -0
  602. package/src/storage/activity/types.ts +211 -0
  603. package/src/storage/agents/in-memory.ts +10 -0
  604. package/src/storage/agents/provider.ts +2 -13
  605. package/src/storage/agents/types.ts +9 -16
  606. package/src/storage/artifacts/errors.ts +16 -0
  607. package/src/storage/artifacts/in-memory.ts +240 -0
  608. package/src/storage/artifacts/index.ts +30 -0
  609. package/src/storage/artifacts/record.ts +200 -0
  610. package/src/storage/artifacts/types.ts +209 -0
  611. package/src/storage/auth/in-memory/sessions.ts +21 -0
  612. package/src/storage/auth/index.ts +2 -0
  613. package/src/storage/auth/types.ts +18 -0
  614. package/src/storage/executions/in-memory.ts +61 -1
  615. package/src/storage/executions/index.ts +3 -0
  616. package/src/storage/executions/provider.ts +12 -0
  617. package/src/storage/executions/types.ts +30 -0
  618. package/src/storage/in-memory/index.ts +16 -0
  619. package/src/storage/index.ts +63 -0
  620. package/src/storage/internal.ts +30 -0
  621. package/src/storage/ontology/in-memory/sources.ts +23 -0
  622. package/src/storage/ontology/index.ts +2 -0
  623. package/src/storage/ontology/sources.ts +17 -0
  624. package/src/storage/share-grants/in-memory.ts +8 -0
  625. package/src/storage/share-grants/index.ts +1 -0
  626. package/src/storage/share-grants/types.ts +8 -0
  627. package/src/storage/types.ts +4 -0
  628. package/src/storage/workflow-runs/in-memory.ts +16 -0
  629. package/src/storage/workflow-runs/types.ts +5 -0
  630. package/src/testing/action-run-storage-contract.ts +25 -0
  631. package/src/testing/activity-storage-contract.ts +840 -0
  632. package/src/testing/agent-storage-contract.ts +22 -21
  633. package/src/testing/artifact-storage-contract.ts +517 -0
  634. package/src/testing/auth-storage-contract.ts +47 -0
  635. package/src/testing/execution-storage-contract.ts +147 -1
  636. package/src/testing/index.ts +9 -0
  637. package/src/testing/lake-merge-storage-contract.ts +38 -0
  638. package/src/testing/lake-storage-contract.ts +247 -2
  639. package/src/testing/materializer-storage-contract.ts +1 -0
  640. package/src/testing/ontology-storage-contract.ts +57 -2
  641. package/src/testing/share-grant-storage-contract.ts +15 -0
  642. package/src/workflows/builders.ts +14 -0
  643. package/src/workflows/types.ts +9 -0
  644. package/src/workflows/validation.ts +72 -0
  645. package/dist/chunk-1k89ecfr.js +0 -85
  646. package/dist/chunk-1k89ecfr.js.map +0 -10
  647. package/dist/chunk-3t2hgbgd.js.map +0 -15
  648. package/dist/chunk-4vyr1j8f.js +0 -128
  649. package/dist/chunk-4vyr1j8f.js.map +0 -11
  650. package/dist/chunk-9gyp8hg1.js +0 -363
  651. package/dist/chunk-9gyp8hg1.js.map +0 -14
  652. package/dist/chunk-es1gxsbf.js.map +0 -13
  653. package/dist/chunk-gsjm1wms.js.map +0 -10
  654. package/dist/chunk-hkc3jct7.js.map +0 -10
  655. package/dist/chunk-k6q3n2sc.js.map +0 -12
  656. package/dist/chunk-rrzt8jdy.js.map +0 -14
  657. package/dist/chunk-s16apyk9.js +0 -256
  658. package/dist/chunk-s16apyk9.js.map +0 -16
  659. package/dist/chunk-s54c868q.js.map +0 -12
  660. package/dist/chunk-tw03bsmb.js.map +0 -11
  661. /package/dist/{chunk-xfs8x8m9.js.map → chunk-0bphap9y.js.map} +0 -0
  662. /package/dist/{chunk-1zq2p6g0.js.map → chunk-1cc1xaf3.js.map} +0 -0
  663. /package/dist/{chunk-t7x8dmn0.js.map → chunk-431pyp2c.js.map} +0 -0
  664. /package/dist/{chunk-c85m1hyj.js.map → chunk-447a5c0p.js.map} +0 -0
  665. /package/dist/{chunk-ren4kg2j.js.map → chunk-561r0yc9.js.map} +0 -0
  666. /package/dist/{chunk-5e43w60z.js.map → chunk-5948n82c.js.map} +0 -0
  667. /package/dist/{chunk-yzwja0mj.js.map → chunk-5hx48dnn.js.map} +0 -0
  668. /package/dist/{chunk-5j58wjct.js.map → chunk-858emn8m.js.map} +0 -0
  669. /package/dist/{chunk-6p49a5cq.js.map → chunk-c1rxbz5y.js.map} +0 -0
  670. /package/dist/{chunk-gc4ntf7d.js.map → chunk-cwdzcv37.js.map} +0 -0
  671. /package/dist/{chunk-fa02jy15.js.map → chunk-cy4mbddw.js.map} +0 -0
  672. /package/dist/{chunk-9w055r5b.js.map → chunk-d09e3rax.js.map} +0 -0
  673. /package/dist/{chunk-dk8tkk5f.js.map → chunk-d7dnxdep.js.map} +0 -0
  674. /package/dist/{chunk-tg2cw67r.js.map → chunk-ky3j490c.js.map} +0 -0
  675. /package/dist/{chunk-vyf9kfqf.js.map → chunk-q7gn29y3.js.map} +0 -0
  676. /package/dist/{chunk-v9xd5wzd.js.map → chunk-s7jg7pmn.js.map} +0 -0
  677. /package/dist/{chunk-9dmt152s.js.map → chunk-vf57cr4t.js.map} +0 -0
  678. /package/dist/{chunk-9ybhtmg4.js.map → chunk-vvxtn22d.js.map} +0 -0
  679. /package/dist/{chunk-7t429e3f.js.map → chunk-xvsc5m8n.js.map} +0 -0
  680. /package/dist/{chunk-z4m0yz8c.js.map → chunk-y5tah2kf.js.map} +0 -0
  681. /package/dist/{chunk-fkgc1wt8.js.map → chunk-z58tm0hm.js.map} +0 -0
@@ -1,5 +1,6 @@
1
1
  import { resolve } from "node:path"
2
2
  import type { ActionDefinition } from "../actions"
3
+ import type { ActivityOptions } from "../activity/service"
3
4
  import type { AgentToolDefinition } from "../agents"
4
5
  import { assertNoAgentDefinitions } from "../agents/retired-config"
5
6
  import type { SixbAuthConfig } from "../auth"
@@ -59,6 +60,8 @@ export interface CreateSixbOptions<in out TParams extends ParamsConfig = ParamsC
59
60
  logger?: LoggerProvider
60
61
  /** Broker capture controls, independent from the output provider. */
61
62
  observability?: ObservabilityOptions
63
+ /** Records visits and page views in the project's app. Off by default. */
64
+ activity?: ActivityOptions
62
65
  /** Observes runtime failures without changing their outcome. */
63
66
  onError?: SixbErrorHandler
64
67
  /** Recovery and retention settings. The runtime constructor never starts maintenance timers. */
@@ -135,6 +138,7 @@ export async function createSixb<const TParams extends ParamsConfig = ParamsConf
135
138
  sandboxes: options.sandboxes,
136
139
  logger: options.logger,
137
140
  observability: options.observability,
141
+ activity: options.activity,
138
142
  onError: options.onError,
139
143
  ontologyMaintenance: options.ontologyMaintenance,
140
144
  projectRoot,
@@ -8,6 +8,7 @@
8
8
  import { resolve } from "node:path"
9
9
  import { ActionRunExecutor, registerActionRunExecutor } from "../actions/run/executor"
10
10
  import type { ActionDefinition } from "../actions/types"
11
+ import { type ActivityOptions, ActivityService } from "../activity/service"
11
12
  import type { AgentDefinitionsInput, AgentToolDefinition } from "../agents"
12
13
  import {
13
14
  AuthRuntime,
@@ -70,7 +71,9 @@ import {
70
71
  createSandboxDefinition,
71
72
  type InferSandboxParams,
72
73
  type SandboxDefinition,
74
+ sandboxCredentialIssue,
73
75
  } from "../sandboxes/configuration"
76
+ import { SandboxError } from "../sandboxes/errors"
74
77
  import { type SchedulerController, SchedulerRuntime } from "../scheduler"
75
78
  import type { ScheduleDefinition } from "../schedules"
76
79
  import type {
@@ -80,6 +83,13 @@ import type {
80
83
  RoleDefinition,
81
84
  SecurityDefinitionCatalog,
82
85
  } from "../security"
86
+ import { type AppliedMarkings, createAppliedMarkings } from "../security/applied-markings"
87
+ import { registerAppliedMarkings } from "../security/applied-markings-host"
88
+ import {
89
+ createDatasetVersionMarkings,
90
+ type DatasetVersionMarkings,
91
+ registerDatasetVersionMarkings,
92
+ } from "../security/dataset-version-markings"
83
93
  import type { ParamsConfig } from "../shared/params/types"
84
94
  import type { ShareDefinition } from "../shares"
85
95
  import type { Storage } from "../storage"
@@ -122,6 +132,8 @@ export interface SixbHostOptions<in out TParams extends ParamsConfig = ParamsCon
122
132
  logger?: LoggerProvider
123
133
  /** Broker capture controls, independent from the output provider. */
124
134
  observability?: ObservabilityOptions
135
+ /** Records visits and page views in the project's app. Off by default. */
136
+ activity?: ActivityOptions
125
137
  /** Observes runtime failures without changing their outcome. */
126
138
  onError?: SixbErrorHandler
127
139
  /** Recovery and retention settings. The runtime constructor never starts maintenance timers. */
@@ -170,11 +182,14 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
170
182
  private readonly storageReadiness: StorageReadiness
171
183
  private readonly connectorService: ConnectorService
172
184
  private readonly materializer: OntologyMaterializerContract
185
+ private readonly datasetVersionMarkings: DatasetVersionMarkings
186
+ private readonly appliedMarkings: AppliedMarkings
173
187
  readonly sandboxDefinition?: SandboxDefinition
174
188
  readonly definitions: SixbDefinitions
175
189
  readonly broker: Broker
176
190
  readonly events: DomainEventLog
177
191
  readonly logging: LoggingService
192
+ readonly activity: ActivityService
178
193
  readonly storage: Storage
179
194
  readonly lakeStorage: LakeStorage
180
195
  readonly blobStorage: BlobStorage
@@ -203,6 +218,7 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
203
218
  observability: options.observability?.logs,
204
219
  })
205
220
  this.storage = options.storage
221
+ this.activity = new ActivityService(this.projectId, this.storage.activity, options.activity)
206
222
  this.storageReadiness = new StorageReadiness(this.storage)
207
223
  this.lakeStorage = options.lakeStorage
208
224
  this.blobStorage = options.blobStorage
@@ -216,8 +232,28 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
216
232
  options.sandboxes?.configuration === undefined
217
233
  ? undefined
218
234
  : createSandboxDefinition(options.sandboxes.configuration, definitions.ontology)
235
+ assertSandboxCredentials(options.sandboxes)
219
236
  registerProjectionRegistry(this, definitions.projections)
220
237
 
238
+ this.datasetVersionMarkings = createDatasetVersionMarkings({
239
+ datasets: definitions.datasets,
240
+ lakeStorage: this.lakeStorage,
241
+ })
242
+ registerDatasetVersionMarkings(this, this.datasetVersionMarkings)
243
+
244
+ this.appliedMarkings = createAppliedMarkings({
245
+ projectId: this.projectId,
246
+ ontology: definitions.ontology,
247
+ projections: definitions.projections,
248
+ revisionOf: (projectionId) =>
249
+ definitions.projections.resolveDispatch(projectionId).projectionRevision,
250
+ pipelines: definitions.pipelines.list(),
251
+ versionMarkings: this.datasetVersionMarkings,
252
+ lakeStorage: this.lakeStorage,
253
+ sources: this.storage.ontology.sources,
254
+ })
255
+ registerAppliedMarkings(this, this.appliedMarkings)
256
+
221
257
  this.auth = new AuthRuntime({
222
258
  projectId: this.projectId,
223
259
  storage: this.storage,
@@ -330,6 +366,7 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
330
366
  objectStorage: this.storage.objects,
331
367
  embeddingModels,
332
368
  rerankingModels,
369
+ appliedMarkings: this.appliedMarkings,
333
370
  })
334
371
 
335
372
  const runtime: SixbRuntimeContext = {
@@ -349,6 +386,8 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
349
386
  this.committedFacts.notify()
350
387
  this.vectorIndexing?.notify()
351
388
  },
389
+ // A projection this process applies is visible to its next read.
390
+ onProjectionApplied: () => this.appliedMarkings.invalidate(),
352
391
  })
353
392
  )
354
393
  return createBoundSixb<InferSandboxParams<TParams>>(
@@ -417,6 +456,7 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
417
456
  supportsPersistence: typeof this.sandboxes?.resume === "function",
418
457
  },
419
458
  logging: this.logging,
459
+ activity: this.activity,
420
460
  connectorService: this.connectorService,
421
461
  ...(this.connectorService.connectionProcess === undefined
422
462
  ? {}
@@ -424,6 +464,7 @@ export class SixbHost<in out TParams extends ParamsConfig = ParamsConfig> {
424
464
  blobStorage: this.blobStorage,
425
465
  apiPublicOrigin: () => getApiPublicOrigin(this),
426
466
  lakeStorage: this.lakeStorage,
467
+ datasetVersionMarkings: this.datasetVersionMarkings,
427
468
  }
428
469
  }
429
470
  }
@@ -494,3 +535,17 @@ function assertWebhookRunStorage(
494
535
  }
495
536
  }
496
537
  }
538
+
539
+ /** Reject source access the factory cannot provide: a run checks what `resolve` returns. */
540
+ function assertSandboxCredentials<TParams extends ParamsConfig>(
541
+ sandboxes: SandboxFactory<TParams> | undefined
542
+ ): void {
543
+ if (!sandboxes) return
544
+
545
+ const issue = sandboxCredentialIssue({
546
+ supportsRequestCredentials: sandboxes.supportsRequestCredentials,
547
+ auth: sandboxes.configuration?.auth,
548
+ source: sandboxes.configuration?.source,
549
+ })
550
+ if (issue) throw new SandboxError(`[Sixb] ${issue}`)
551
+ }
@@ -1,3 +1,5 @@
1
+ export type { ActivityCaptureRuntime } from "../activity/execution"
2
+ export { getActivityCaptureRuntime } from "../activity/execution"
1
3
  export { getConnectorConnectionsRuntime } from "../connectors/connections/capability"
2
4
  export type {
3
5
  CompleteConnectorAuthorizationInput,
@@ -56,17 +56,24 @@ export function shareOntologyMutationRuntime(source: object, target: object): vo
56
56
  export function createOntologyMutationRuntime(input: {
57
57
  readonly materializer: BoundOntologyMaterializer
58
58
  readonly notifyCommittedFacts: () => void
59
+ /** Called once a projection may have changed the dataset version its source applied. */
60
+ readonly onProjectionApplied?: () => void
59
61
  }): OntologyMutationRuntime {
62
+ const applied = <TResult>(work: Promise<TResult>): Promise<TResult> =>
63
+ work.finally(() => notifyWithoutAffecting(input.onProjectionApplied))
64
+
60
65
  const runtime: OntologyMutationRuntime = {
61
66
  getProjectionSource: (source) => input.materializer.projections.getActive(source),
62
67
  commitEdits: (command) =>
63
68
  commitAndNotify(() => input.materializer.edits.commit(command), input.notifyCommittedFacts),
64
69
  replaceProjection: (command) =>
65
- commitAndNotify(
66
- () => input.materializer.projections.replace(command),
67
- input.notifyCommittedFacts
70
+ applied(
71
+ commitAndNotify(
72
+ () => input.materializer.projections.replace(command),
73
+ input.notifyCommittedFacts
74
+ )
68
75
  ),
69
- finishProjection: (command) => input.materializer.projections.finishRun(command),
76
+ finishProjection: (command) => applied(input.materializer.projections.finishRun(command)),
70
77
  appendTelemetry: (command) =>
71
78
  commitAndNotify(
72
79
  () => input.materializer.telemetry.append(command),
@@ -94,3 +101,11 @@ function notifyWithoutAffectingCommit(notify: () => void): void {
94
101
  console.error("[Sixb] Failed to wake the ontology outbox dispatcher:", error)
95
102
  }
96
103
  }
104
+
105
+ function notifyWithoutAffecting(notify: (() => void) | undefined): void {
106
+ try {
107
+ notify?.()
108
+ } catch (error) {
109
+ console.error("[Sixb] Failed to report an applied projection:", error)
110
+ }
111
+ }
@@ -5,6 +5,8 @@ import { assertNoAgentDefinitions } from "../agents/retired-config"
5
5
  import { createAgentSkillCatalog } from "../agents/skills"
6
6
  import { createAgentToolCatalog } from "../agents/tool-catalog"
7
7
  import type { ConnectorDefinition } from "../connectors"
8
+ import { isDatasetPick } from "../datasets/builders"
9
+ import { columnsByName } from "../datasets/column-index"
8
10
  import type { DatasetDefinition } from "../datasets/types"
9
11
  import { assertDatasetDefinition } from "../datasets/validation"
10
12
  import { createModelCatalog, type ModelCatalogInput } from "../models"
@@ -116,12 +118,15 @@ export function resolveDefinitions(options: DefinitionOptions): ResolvedDefiniti
116
118
  for (const sync of options.syncs ?? []) {
117
119
  assertUniqueDefinitionId("sync", sync.id, syncsById)
118
120
 
119
- if (!datasetsById.has(sync.target.dataset.id)) {
121
+ const target = datasetsById.get(sync.target.dataset.id)
122
+ if (!target) {
120
123
  throw new RuntimeError(
121
124
  `Sync '${sync.id}' targets unknown dataset '${sync.target.dataset.id}'. Add it to 'datasets' in createSixb() or export it from 'datasets/'.`
122
125
  )
123
126
  }
124
127
 
128
+ assertRegisteredColumns(`Sync '${sync.id}' target '${target.id}'`, sync.target.dataset, target)
129
+
125
130
  syncsById.set(sync.id, sync)
126
131
  }
127
132
 
@@ -265,18 +270,76 @@ function validatePipelineDatasets(
265
270
  stepIds.add(step.id)
266
271
 
267
272
  for (const [inputName, dataset] of Object.entries(step.inputs)) {
268
- if (!datasetsById.has(dataset.id)) {
273
+ const registered = datasetsById.get(dataset.id)
274
+ if (!registered) {
269
275
  throw new RuntimeError(
270
276
  `Pipeline '${pipeline.id}' step '${step.id}' input '${inputName}' references unknown dataset '${dataset.id}'. Add it to 'datasets' in createSixb() or export it from 'datasets/'.`
271
277
  )
272
278
  }
279
+
280
+ assertRegisteredColumns(
281
+ `Pipeline '${pipeline.id}' step '${step.id}' input '${inputName}'`,
282
+ dataset,
283
+ registered,
284
+ { pick: "allowed" }
285
+ )
273
286
  }
274
287
 
275
- if (!datasetsById.has(step.output.id)) {
288
+ const output = datasetsById.get(step.output.id)
289
+ if (!output) {
276
290
  throw new RuntimeError(
277
291
  `Pipeline '${pipeline.id}' step '${step.id}' outputs unknown dataset '${step.output.id}'. Add it to 'datasets' in createSixb() or export it from 'datasets/'.`
278
292
  )
279
293
  }
294
+
295
+ assertRegisteredColumns(
296
+ `Pipeline '${pipeline.id}' step '${step.id}' output '${output.id}'`,
297
+ step.output,
298
+ output
299
+ )
300
+ }
301
+ }
302
+
303
+ /**
304
+ * A definition with a registered id stands for the whole dataset unless `pick()` made it, and only
305
+ * a step input may be a pick. Comparing columns catches a stale copy of a definition, which would
306
+ * read or write other columns than the registered ones.
307
+ */
308
+ function assertRegisteredColumns(
309
+ subject: string,
310
+ dataset: DatasetDefinition,
311
+ registered: DatasetDefinition,
312
+ options: { readonly pick?: "allowed" } = {}
313
+ ): void {
314
+ // The registered definition itself, as almost every step and sync uses.
315
+ if (dataset === registered) return
316
+
317
+ const pick = isDatasetPick(dataset)
318
+ if (pick && options.pick !== "allowed") {
319
+ throw new RuntimeError(`${subject} must be the whole dataset, not a pick.`)
320
+ }
321
+
322
+ const registeredColumns = columnsByName(registered)
323
+ for (const column of dataset.schema.columns) {
324
+ const declared = registeredColumns.get(column.name)
325
+ if (!declared) {
326
+ throw new RuntimeError(
327
+ `${subject} has column '${column.name}', which dataset '${registered.id}' does not declare. Use the registered definition.`
328
+ )
329
+ }
330
+
331
+ if (declared.type !== column.type) {
332
+ throw new RuntimeError(
333
+ `${subject} has column '${column.name}' as '${column.type}', but dataset '${registered.id}' declares it as '${declared.type}'. Use the registered definition.`
334
+ )
335
+ }
336
+ }
337
+
338
+ if (!pick && dataset.schema.columns.length !== registeredColumns.size) {
339
+ const hint = options.pick === "allowed" ? ", or .pick(...) to read some of its columns" : ""
340
+ throw new RuntimeError(
341
+ `${subject} lacks columns of dataset '${registered.id}'. Use the registered definition${hint}.`
342
+ )
280
343
  }
281
344
  }
282
345
 
@@ -1,6 +1,14 @@
1
1
  import { type ActionsRuntime, createActionsRuntime } from "../actions/execution"
2
+ import {
3
+ type ActivityRuntime,
4
+ createActivityCaptureRuntime,
5
+ createActivityRuntime,
6
+ registerActivityCaptureRuntime,
7
+ } from "../activity/execution"
8
+ import type { ActivityService } from "../activity/service"
2
9
  import { type AgentRuntime, createAgentRuntime } from "../agents/execution"
3
10
  import { type AiUsageRuntime, createAiUsageRuntime } from "../ai-usage"
11
+ import { type ArtifactsRuntime, createArtifactsRuntime } from "../artifacts/execution"
4
12
  import { type BlobsRuntime, createBlobsRuntime } from "../blob-storage/execution"
5
13
  import type { BlobStorage } from "../blob-storage/types"
6
14
  import { registerConnectorConnectionsRuntime } from "../connectors/connections/capability"
@@ -24,6 +32,7 @@ import { createProjectionsRuntime, type ProjectionsRuntime } from "../projection
24
32
  import { createRulesRuntime, type RulesRuntime } from "../rules/execution"
25
33
  import type { SandboxDefinition } from "../sandboxes/configuration"
26
34
  import { createSchedulesRuntime, type SchedulesRuntime } from "../schedules/execution"
35
+ import type { DatasetVersionMarkings } from "../security/dataset-version-markings"
27
36
  import { createSharesRuntime, type SharesRuntime } from "../shares/execution"
28
37
  import { createSyncsRuntime, type SyncsRuntime } from "../syncs/execution"
29
38
  import { createWorkflowsRuntime, type WorkflowsRuntime } from "../workflows/execution"
@@ -43,10 +52,12 @@ export interface Sixb<TParams extends Record<string, unknown> = Record<string, u
43
52
  readonly projections: ProjectionsRuntime
44
53
  readonly rules: RulesRuntime
45
54
  readonly agent: AgentRuntime<TParams>
55
+ readonly artifacts: ArtifactsRuntime
46
56
  readonly models: ModelsRuntime
47
57
  readonly aiUsage: AiUsageRuntime
48
58
  readonly events: EventsRuntime
49
59
  readonly logs: LogsRuntime
60
+ readonly activity: ActivityRuntime
50
61
  readonly schedules: SchedulesRuntime
51
62
  readonly shares: SharesRuntime
52
63
  readonly connector: ConnectorRuntime
@@ -62,11 +73,13 @@ export interface SixbDependencies {
62
73
  }
63
74
  readonly definitions: SixbDefinitions
64
75
  readonly logging: LoggingService
76
+ readonly activity: ActivityService
65
77
  readonly connectorService: ConnectorService
66
78
  readonly connectorConnections?: ConnectorConnectionProcess
67
79
  readonly blobStorage: BlobStorage
68
80
  readonly apiPublicOrigin: () => string | undefined
69
81
  readonly lakeStorage: LakeStorage
82
+ readonly datasetVersionMarkings: DatasetVersionMarkings
70
83
  }
71
84
 
72
85
  export function createBoundSixb<TParams extends Record<string, unknown> = Record<string, unknown>>(
@@ -87,6 +100,7 @@ export function createBoundSixb<TParams extends Record<string, unknown> = Record
87
100
  ...createExecutionFacades<TParams>(runtime, execution, dependencies),
88
101
  }
89
102
  shareOntologyMutationRuntime(runtime, sixb)
103
+ registerActivityCaptureRuntime(sixb, createActivityCaptureRuntime(runtime, dependencies.activity))
90
104
  if (dependencies.connectorConnections) {
91
105
  registerConnectorConnectionsRuntime(
92
106
  sixb,
@@ -117,7 +131,8 @@ function createExecutionFacades<TParams extends Record<string, unknown>>(
117
131
  execution,
118
132
  dependencies.definitions.datasets,
119
133
  dependencies.lakeStorage,
120
- dependencies.blobStorage
134
+ dependencies.blobStorage,
135
+ dependencies.datasetVersionMarkings
121
136
  ),
122
137
  workflows: createWorkflowsRuntime(runtime, execution, dependencies.definitions.workflows),
123
138
  syncs: createSyncsRuntime(runtime, execution, dependencies.definitions.syncs),
@@ -130,6 +145,7 @@ function createExecutionFacades<TParams extends Record<string, unknown>>(
130
145
  dependencies.definitions.models,
131
146
  dependencies.sandbox
132
147
  ),
148
+ artifacts: createArtifactsRuntime(runtime, dependencies.blobStorage),
133
149
  models: createModelsRuntime(
134
150
  runtime,
135
151
  execution,
@@ -139,6 +155,7 @@ function createExecutionFacades<TParams extends Record<string, unknown>>(
139
155
  aiUsage: createAiUsageRuntime(runtime, dependencies.definitions.security),
140
156
  events: createEventsRuntime(runtime),
141
157
  logs: createLogsRuntime(runtime, dependencies.logging),
158
+ activity: createActivityRuntime(runtime, dependencies.activity),
142
159
  schedules: createSchedulesRuntime(runtime, dependencies.definitions.schedules),
143
160
  shares: createSharesRuntime(runtime, execution, dependencies.definitions.shares),
144
161
  connector: createConnectorRuntime(runtime, execution, dependencies.connectorService),
@@ -6,8 +6,21 @@ Factories define environments; threads retain immutable parameters; runs provide
6
6
  Dynamic recipes require an execution-resolved environment; providers never invoke resolvers.
7
7
  - Selection and validation happen before provisioning. Initial source access must be allowed by
8
8
  the session network policy. Creation runs setup once; resume never replays it.
9
+ - One rule decides whether source access can work (`sandboxCredentialIssue` in
10
+ [configuration](./configuration.ts)): write access needs `auth`, and `auth` a provider with
11
+ `supportsRequestCredentials`, even for a recipe without a source. `SixbHost` applies it to the
12
+ factory's static recipe at construction. The worker applies it again to each recipe a run
13
+ resolves: `resolve` results are unknown at startup, and a worker host is structural.
9
14
  - Runs without a thread binding explicitly select `{}`; shared env/network defaults remain session
10
15
  settings, not an implicit project binding. Unsupported provider capabilities fail explicitly.
16
+ - The exception is a workflow step's own `sandbox`: its factory's static recipe (source, setup,
17
+ env, network, auth) applies to a fresh ephemeral sandbox per node run. `params`/`resolve`, a
18
+ `none` network and source access that fails `sandboxCredentialIssue` are rejected when the step
19
+ is defined and again at startup. Before the node's terminal write, also when provisioning
20
+ fails, is cancelled or times out, the worker waits for one attempt to remove injection and
21
+ revoke every grant, and destroys the sandbox only after it. A refused revocation is logged and
22
+ does not fail the node: that grant stays valid until it expires. A lost execution records
23
+ nothing, and its failed acquisition or its release still revokes.
11
24
 
12
25
  - [Configuration](./configuration.ts) validates and snapshots recipes, sharing Action parameter
13
26
  schemas. Resolvers receive the execution-scoped SDK. Only parameters are stored in `sandbox_params`.
@@ -24,8 +37,11 @@ Factories define environments; threads retain immutable parameters; runs provide
24
37
  This prevents accidental staging, not deliberate publication with `git add -f`.
25
38
  - Confirmed missing/expired state allows one replacement attempt under the current execution fence.
26
39
  A durable reset timestamp informs subsequent model calls; conversation history is preserved.
27
- - Omitted network policy permits API/source access. Explicit policies are never widened; incompatible
28
- policies fail before provisioning. Guest-readable `env` is not a Git credential channel.
40
+ - Sixb always adds the API, source and auth request origins to a run's network: an omitted policy
41
+ allows only those, a restricted one lists what the project adds. `none` fails before
42
+ provisioning. Guest-readable `env` is not a Git credential channel.
43
+ - Request origins are read from the first grant, so renewals must keep to the same origins: a
44
+ provider rejects a credential for an origin the network does not allow.
29
45
 
30
46
  ## V1 limits
31
47
 
@@ -33,9 +49,15 @@ Vercel requests can outlive their worker: storage fencing cannot cancel provider
33
49
  Uncertain sandboxes stay blocked; explicit recreation uses a new name without deleting old state.
34
50
  Saved files remain subject to provider retention.
35
51
 
36
- Source `auth` stays host-side. Named providers advertising `supportsRequestCredentials` must apply
52
+ Source `auth` stays host-side. Providers advertising `supportsRequestCredentials` must apply
37
53
  execution-prepared credentials; direct create/resume never invoke `auth` implicitly. They apply
38
- initial credentials before setup and expose session-scoped renewal. Unsupported providers reject
39
- credentials before provisioning. During initial provisioning/setup, the worker aborts before token
40
- expiry if no session handle is available yet; renewal begins after acquisition. Normal teardown
41
- removes injection and revokes grants. A crash cannot guarantee immediate revocation.
54
+ initial credentials before setup and expose session-scoped renewal, for ephemeral and named
55
+ sandboxes alike. Unsupported providers reject credentials before provisioning. During initial
56
+ provisioning/setup, the worker aborts before token expiry if no session handle is available yet;
57
+ renewal begins after acquisition. Normal teardown removes injection and revokes grants. A crash
58
+ cannot guarantee immediate revocation.
59
+
60
+ A grant may also carry a guest-readable `env` (identities, placeholders), validated like recipe
61
+ `env` before provisioning; an invalid one fails authentication. It applies on creation and resume
62
+ under the recipe's own `env`. Only the first grant of a run is read: the session environment
63
+ cannot change once acquired, so renewals rotate requests and their `env` is ignored.
@@ -3,13 +3,29 @@ import type { SandboxRequestCredential } from "./sandbox"
3
3
 
4
4
  /** Per-run source access. Never persist these grants or expose them to the guest. */
5
5
  export interface SandboxSourceCredentials {
6
+ /**
7
+ * Sixb opens these origins in the run's network, whether the recipe omits `network` or
8
+ * restricts it, so each must be one exact `https://` origin: a wildcard host is rejected. The
9
+ * network is set from the first grant of a session: return requests for the same origins on
10
+ * renewal.
11
+ */
6
12
  readonly requests: readonly SandboxRequestCredential[]
13
+ /**
14
+ * Guest-readable variables the integration needs in the sandbox, such as identities or the
15
+ * placeholder a tool requires before the host replaces its Authorization header. Never a
16
+ * credential: commands, files and snapshots can read these values.
17
+ *
18
+ * Applied from the first grant of a session; the recipe's own `env` wins on collision. Return
19
+ * the same values on renewal: renewals only rotate `requests`, so later values are ignored.
20
+ */
21
+ readonly env?: Readonly<Record<string, string>>
7
22
  readonly expiresAt: Date
8
23
  revoke(): Promise<void>
9
24
  }
10
25
 
11
26
  /** Integration-owned authentication; grant source.access (read by default), or reject. */
12
27
  export interface SandboxSourceAuth {
28
+ /** A thrown error is reported to onError: it and its causes must never contain a credential. */
13
29
  authorize(input: {
14
30
  readonly source: SandboxSource
15
31
  readonly signal: AbortSignal
@@ -1,5 +1,5 @@
1
1
  import type { ParamsConfig } from "../shared/params/types"
2
- import { captureEnvironment, type SandboxConfig } from "./configuration"
2
+ import { type SandboxConfig, staticSandboxRecipe } from "./configuration"
3
3
  import { SandboxError } from "./errors"
4
4
 
5
5
  /** Extract only the common recipe; provider credentials and infrastructure stay on the factory. */
@@ -22,12 +22,7 @@ export function sandboxConfig<TParams extends ParamsConfig>(
22
22
  ) {
23
23
  throw new SandboxError("[Sixb] Use either static source/setup or resolve, not both.")
24
24
  }
25
- const environment = captureEnvironment({
26
- ...(options.source === undefined ? {} : { source: options.source }),
27
- ...(options.setup === undefined ? {} : { setup: options.setup }),
28
- ...(options.env === undefined ? {} : { env: options.env }),
29
- ...(options.network === undefined ? {} : { network: options.network }),
30
- })
25
+ const environment = staticSandboxRecipe(options)
31
26
  return Object.freeze({
32
27
  ...(authorize ? { auth: Object.freeze({ authorize }) } : {}),
33
28
  ...environment,
@@ -112,12 +112,7 @@ export function createSandboxDefinition<TParams extends ParamsConfig>(
112
112
  }
113
113
  }
114
114
  const params = structuredClone(config.params ?? {}) as ParamsConfig
115
- const environment = captureEnvironment({
116
- ...(config.source === undefined ? {} : { source: config.source }),
117
- ...(config.setup === undefined ? {} : { setup: config.setup }),
118
- ...(config.env === undefined ? {} : { env: config.env }),
119
- ...(config.network === undefined ? {} : { network: config.network }),
120
- })
115
+ const environment = staticSandboxRecipe(config)
121
116
  // Capture the function too: later mutation of application config must not change this host.
122
117
  // Erase inference only after capturing its schema; every invocation validates and coerces below.
123
118
  const resolve = config.resolve as SandboxConfig["resolve"]
@@ -144,6 +139,51 @@ export function createSandboxDefinition<TParams extends ParamsConfig>(
144
139
  })
145
140
  }
146
141
 
142
+ /** What the source access rule reads: the provider's capability and one recipe's source. */
143
+ interface SandboxCredentialRuleInput {
144
+ readonly supportsRequestCredentials?: boolean
145
+ /** The factory's source auth; it applies to every recipe the factory resolves. */
146
+ readonly auth?: unknown
147
+ readonly source?: SandboxSource
148
+ }
149
+
150
+ /**
151
+ * Why a recipe cannot get the source access it declares, as a whole message, or undefined.
152
+ *
153
+ * Write access needs source auth. Source auth needs a provider that injects request credentials
154
+ * outside the sandbox, even for a recipe without a source: auth is the factory's, so startup and
155
+ * every run give the same answer. Source auth without a source is otherwise fine; that recipe
156
+ * does not use it.
157
+ */
158
+ export function sandboxCredentialIssue(input: SandboxCredentialRuleInput): string | undefined {
159
+ const { supportsRequestCredentials, auth, source } = input
160
+
161
+ if (source?.access === "write" && auth === undefined) {
162
+ return 'Sandbox write access needs source auth: add auth to the sandbox factory or use access "read".'
163
+ }
164
+ if (auth !== undefined && !supportsRequestCredentials) {
165
+ return "Sandbox source auth needs a provider that injects request credentials outside the sandbox: use @sixb/sandboxes-vercel, or remove auth."
166
+ }
167
+
168
+ return undefined
169
+ }
170
+
171
+ /** The static part of a recipe, captured: all a run without thread params can apply. */
172
+ export function staticSandboxRecipe(configuration: {
173
+ readonly source?: unknown
174
+ readonly setup?: unknown
175
+ readonly env?: unknown
176
+ readonly network?: unknown
177
+ }): SandboxEnvironment {
178
+ const { source, setup, env, network } = configuration
179
+ return captureEnvironment({
180
+ ...(source === undefined ? {} : { source }),
181
+ ...(setup === undefined ? {} : { setup }),
182
+ ...(env === undefined ? {} : { env }),
183
+ ...(network === undefined ? {} : { network }),
184
+ })
185
+ }
186
+
147
187
  /** Capture declarative data only; never retain caller-owned objects or include values in errors. */
148
188
  export function captureEnvironment(value: unknown): SandboxEnvironment {
149
189
  if (
@@ -177,6 +217,10 @@ function validateSource(source: unknown): void {
177
217
  if (url.protocol !== "https:" || url.username || url.password || url.search || url.hash) {
178
218
  fail("source URL: expected credential-free HTTPS")
179
219
  }
220
+
221
+ // The repository host joins the run's network, where "*" would open every matching domain.
222
+ if (url.hostname.includes("*")) fail("source URL: wildcard hosts are not allowed")
223
+
180
224
  if (
181
225
  source.revision !== undefined &&
182
226
  (typeof source.revision !== "string" ||
@@ -202,7 +246,13 @@ function validateSetup(setup: unknown): void {
202
246
  }
203
247
  }
204
248
 
205
- function validateEnv(env: unknown): void {
249
+ /** Snapshot guest-readable variables under the recipe `env` rules; never include values in errors. */
250
+ export function captureSandboxEnv(value: unknown): Readonly<Record<string, string>> {
251
+ validateEnv(value)
252
+ return structuredClone(value)
253
+ }
254
+
255
+ function validateEnv(env: unknown): asserts env is Record<string, string> {
206
256
  if (
207
257
  !isPlainRecord(env) ||
208
258
  Object.entries(env).some(
@@ -248,6 +298,10 @@ function validateNetworkTarget(target: unknown): void {
248
298
  if (!["http:", "https:"].includes(url.protocol) || url.origin !== target.origin) {
249
299
  fail("network origin")
250
300
  }
301
+
302
+ // Providers such as Vercel read "*" in a domain as a wildcard: one target would open every
303
+ // matching domain. List each domain instead.
304
+ if (url.hostname.includes("*")) fail("network origin: wildcard hosts are not allowed")
251
305
  }
252
306
 
253
307
  function parseUrl(value: string, field: string): URL {
@@ -32,6 +32,7 @@ export type {
32
32
  SandboxNetworkPolicy,
33
33
  SandboxNetworkTarget,
34
34
  SandboxRequestCredential,
35
+ SandboxRequestMethod,
35
36
  SandboxSessionOptions,
36
37
  SandboxStatus,
37
38
  } from "./sandbox"