@sixb/core 0.1.7 → 0.1.8

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 (612) hide show
  1. package/dist/actions/delegated-admission.d.ts +24 -0
  2. package/dist/actions/delegated-admission.d.ts.map +1 -0
  3. package/dist/actions/descriptor.d.ts +29 -0
  4. package/dist/actions/descriptor.d.ts.map +1 -0
  5. package/dist/actions/execution.d.ts +5 -5
  6. package/dist/actions/execution.d.ts.map +1 -1
  7. package/dist/actions/index.js +36 -30
  8. package/dist/actions/index.js.map +1 -1
  9. package/dist/actions/request.d.ts.map +1 -1
  10. package/dist/actions/run-authorization.d.ts +20 -0
  11. package/dist/actions/run-authorization.d.ts.map +1 -0
  12. package/dist/actions/run-dispatch.d.ts +3 -1
  13. package/dist/actions/run-dispatch.d.ts.map +1 -1
  14. package/dist/actions/worker.js +3 -3
  15. package/dist/actions/worker.js.map +1 -1
  16. package/dist/agents/adapters.d.ts +5 -122
  17. package/dist/agents/adapters.d.ts.map +1 -1
  18. package/dist/agents/authority.d.ts +1 -1
  19. package/dist/agents/authority.d.ts.map +1 -1
  20. package/dist/agents/context-resolution.d.ts.map +1 -1
  21. package/dist/agents/context.js +1 -1
  22. package/dist/agents/errors.d.ts +0 -9
  23. package/dist/agents/errors.d.ts.map +1 -1
  24. package/dist/agents/execution.d.ts.map +1 -1
  25. package/dist/agents/identity.d.ts +3 -0
  26. package/dist/agents/identity.d.ts.map +1 -0
  27. package/dist/agents/index.d.ts +3 -3
  28. package/dist/agents/index.d.ts.map +1 -1
  29. package/dist/agents/index.js +43 -43
  30. package/dist/agents/index.js.map +1 -1
  31. package/dist/agents/message.d.ts +4 -5
  32. package/dist/agents/message.d.ts.map +1 -1
  33. package/dist/agents/model-loop.d.ts +2 -0
  34. package/dist/agents/model-loop.d.ts.map +1 -1
  35. package/dist/agents/request.d.ts.map +1 -1
  36. package/dist/agents/tool-definition.d.ts +0 -1
  37. package/dist/agents/tool-definition.d.ts.map +1 -1
  38. package/dist/agents/validation.d.ts +0 -4
  39. package/dist/agents/validation.d.ts.map +1 -1
  40. package/dist/ai-usage/execution.d.ts.map +1 -1
  41. package/dist/auth/index.js +8 -5
  42. package/dist/auth/index.js.map +1 -1
  43. package/dist/authorization/decision.d.ts +10 -2
  44. package/dist/authorization/decision.d.ts.map +1 -1
  45. package/dist/authorization/grant-kinds.d.ts +2 -1
  46. package/dist/authorization/grant-kinds.d.ts.map +1 -1
  47. package/dist/authorization/index.d.ts +1 -1
  48. package/dist/authorization/index.d.ts.map +1 -1
  49. package/dist/authorization/index.js +7 -4
  50. package/dist/authorization/index.js.map +1 -1
  51. package/dist/bootstrap/discovery.d.ts +7 -1
  52. package/dist/bootstrap/discovery.d.ts.map +1 -1
  53. package/dist/bootstrap/index.js +46 -39
  54. package/dist/bootstrap/index.js.map +1 -1
  55. package/dist/bootstrap/ontology-type-manifest.d.ts.map +1 -1
  56. package/dist/chunk-19jp6g9d.js +131 -0
  57. package/dist/chunk-19jp6g9d.js.map +11 -0
  58. package/dist/{chunk-x0qhkqje.js → chunk-2dw777qw.js} +50 -5
  59. package/dist/{chunk-x0qhkqje.js.map → chunk-2dw777qw.js.map} +4 -3
  60. package/dist/chunk-359jm1jw.js +147 -0
  61. package/dist/chunk-359jm1jw.js.map +10 -0
  62. package/dist/{chunk-2b5qtban.js → chunk-3xep5cjx.js} +56 -21
  63. package/dist/chunk-3xep5cjx.js.map +15 -0
  64. package/dist/{chunk-qjycjdj6.js → chunk-3z1qec12.js} +6 -8
  65. package/dist/{chunk-qjycjdj6.js.map → chunk-3z1qec12.js.map} +2 -2
  66. package/dist/{chunk-5jcdmjam.js → chunk-4jjp5k14.js} +1 -1
  67. package/dist/{chunk-n2arzn6e.js → chunk-4qfkag59.js} +44 -221
  68. package/dist/chunk-4qfkag59.js.map +20 -0
  69. package/dist/{chunk-rre42skh.js → chunk-4sm0aznx.js} +515 -80
  70. package/dist/{chunk-rre42skh.js.map → chunk-4sm0aznx.js.map} +11 -7
  71. package/dist/chunk-4yqmp43v.js +159 -0
  72. package/dist/chunk-4yqmp43v.js.map +11 -0
  73. package/dist/{chunk-atmkaf60.js → chunk-5e3pq99w.js} +2 -6
  74. package/dist/{chunk-atmkaf60.js.map → chunk-5e3pq99w.js.map} +3 -3
  75. package/dist/{chunk-agsvg9ar.js → chunk-5ntny1qx.js} +1 -1
  76. package/dist/{chunk-z2sery1b.js → chunk-9nbmsvn5.js} +60 -20
  77. package/dist/chunk-9nbmsvn5.js.map +11 -0
  78. package/dist/{chunk-e4rvtvpw.js → chunk-aa2pen2v.js} +250 -78
  79. package/dist/chunk-aa2pen2v.js.map +34 -0
  80. package/dist/{chunk-64sr682n.js → chunk-ajnan18g.js} +11 -8
  81. package/dist/chunk-ajnan18g.js.map +12 -0
  82. package/dist/{chunk-9aehf39w.js → chunk-f26bck4t.js} +4 -4
  83. package/dist/{chunk-7ds9620f.js → chunk-fvt9rjsa.js} +23 -7
  84. package/dist/chunk-fvt9rjsa.js.map +10 -0
  85. package/dist/{chunk-kt81c11h.js → chunk-gbejpkex.js} +5 -5
  86. package/dist/{chunk-kt81c11h.js.map → chunk-gbejpkex.js.map} +1 -1
  87. package/dist/{chunk-vjjv9mrb.js → chunk-gzasd5b6.js} +5 -5
  88. package/dist/{chunk-vjjv9mrb.js.map → chunk-gzasd5b6.js.map} +3 -3
  89. package/dist/{chunk-d63tybny.js → chunk-h0k55pc7.js} +4 -4
  90. package/dist/{chunk-d63tybny.js.map → chunk-h0k55pc7.js.map} +1 -1
  91. package/dist/chunk-h5vqbfmd.js +1537 -0
  92. package/dist/chunk-h5vqbfmd.js.map +19 -0
  93. package/dist/{chunk-3kv70xwp.js → chunk-j1sbhm7p.js} +18 -2
  94. package/dist/chunk-j1sbhm7p.js.map +10 -0
  95. package/dist/{chunk-hdz94br2.js → chunk-k522z7v6.js} +10 -5
  96. package/dist/chunk-k522z7v6.js.map +10 -0
  97. package/dist/{chunk-wjgm6jjt.js → chunk-mth82m8t.js} +128 -94
  98. package/dist/chunk-mth82m8t.js.map +14 -0
  99. package/dist/{chunk-qv38twt8.js → chunk-mwsxn98e.js} +46 -25
  100. package/dist/{chunk-qv38twt8.js.map → chunk-mwsxn98e.js.map} +6 -6
  101. package/dist/chunk-n4khvw9n.js +111 -0
  102. package/dist/chunk-n4khvw9n.js.map +11 -0
  103. package/dist/{chunk-qjzp9xyb.js → chunk-nn0tekr1.js} +6 -8
  104. package/dist/chunk-nn0tekr1.js.map +12 -0
  105. package/dist/chunk-nx7k8tpr.js +436 -0
  106. package/dist/chunk-nx7k8tpr.js.map +12 -0
  107. package/dist/{chunk-08twe8m6.js → chunk-p1rzczbt.js} +1 -1
  108. package/dist/{chunk-37wk412q.js → chunk-p1x242ad.js} +587 -70
  109. package/dist/chunk-p1x242ad.js.map +25 -0
  110. package/dist/{chunk-tn7xcs2n.js → chunk-pc7ys28c.js} +68 -5
  111. package/dist/chunk-pc7ys28c.js.map +14 -0
  112. package/dist/{chunk-3fqt22c4.js → chunk-q0k9nc5a.js} +280 -88
  113. package/dist/chunk-q0k9nc5a.js.map +14 -0
  114. package/dist/chunk-r8jrnexe.js +403 -0
  115. package/dist/chunk-r8jrnexe.js.map +10 -0
  116. package/dist/{chunk-gbrpsx4m.js → chunk-rafagrwr.js} +30 -2
  117. package/dist/chunk-rafagrwr.js.map +11 -0
  118. package/dist/{chunk-xdpwpkha.js → chunk-rv2hkwwa.js} +1 -1
  119. package/dist/{chunk-6ed5bwnd.js → chunk-sbzzr4kx.js} +1203 -691
  120. package/dist/{chunk-6ed5bwnd.js.map → chunk-sbzzr4kx.js.map} +15 -9
  121. package/dist/{chunk-d2ndstdf.js → chunk-v1xppd0y.js} +13 -11
  122. package/dist/{chunk-d2ndstdf.js.map → chunk-v1xppd0y.js.map} +2 -2
  123. package/dist/chunk-v4en4jc2.js +252 -0
  124. package/dist/chunk-v4en4jc2.js.map +10 -0
  125. package/dist/{chunk-1kamz6j0.js → chunk-w1tvjszy.js} +1 -1
  126. package/dist/{chunk-rp1mvzb4.js → chunk-w9tg6yyb.js} +11 -6
  127. package/dist/{chunk-rp1mvzb4.js.map → chunk-w9tg6yyb.js.map} +3 -3
  128. package/dist/{chunk-4nxeacx7.js → chunk-wdage1eb.js} +1 -1
  129. package/dist/{chunk-ha58tjtt.js → chunk-wtf06et8.js} +9 -5
  130. package/dist/{chunk-ha58tjtt.js.map → chunk-wtf06et8.js.map} +3 -3
  131. package/dist/{chunk-h0knpbz5.js → chunk-xajtptbw.js} +782 -211
  132. package/dist/chunk-xajtptbw.js.map +40 -0
  133. package/dist/{chunk-xc7hq65b.js → chunk-yp8ee62z.js} +49 -2
  134. package/dist/chunk-yp8ee62z.js.map +11 -0
  135. package/dist/chunk-z4ccwbkz.js +139 -0
  136. package/dist/chunk-z4ccwbkz.js.map +10 -0
  137. package/dist/datasets/builders.d.ts +11 -2
  138. package/dist/datasets/builders.d.ts.map +1 -1
  139. package/dist/datasets/changes.d.ts +14 -4
  140. package/dist/datasets/changes.d.ts.map +1 -1
  141. package/dist/datasets/execution.d.ts +15 -1
  142. package/dist/datasets/execution.d.ts.map +1 -1
  143. package/dist/datasets/index.d.ts +1 -0
  144. package/dist/datasets/index.d.ts.map +1 -1
  145. package/dist/datasets/sequence.d.ts +7 -0
  146. package/dist/datasets/sequence.d.ts.map +1 -0
  147. package/dist/datasets/types.d.ts +1 -0
  148. package/dist/datasets/types.d.ts.map +1 -1
  149. package/dist/datasets/validation.d.ts.map +1 -1
  150. package/dist/datasets/write.d.ts +37 -0
  151. package/dist/datasets/write.d.ts.map +1 -0
  152. package/dist/datasets/write.js +17 -0
  153. package/dist/datasets/write.js.map +9 -0
  154. package/dist/events/execution.d.ts.map +1 -1
  155. package/dist/events/types/datasets.d.ts +2 -6
  156. package/dist/events/types/datasets.d.ts.map +1 -1
  157. package/dist/execution/agent.d.ts.map +1 -1
  158. package/dist/execution/agent.js +39 -32
  159. package/dist/execution/agent.js.map +1 -1
  160. package/dist/execution/authorization.d.ts +58 -20
  161. package/dist/execution/authorization.d.ts.map +1 -1
  162. package/dist/execution/authorized-object-reader.d.ts +69 -0
  163. package/dist/execution/authorized-object-reader.d.ts.map +1 -0
  164. package/dist/execution/durable.d.ts.map +1 -1
  165. package/dist/execution/index.d.ts +1 -1
  166. package/dist/execution/index.d.ts.map +1 -1
  167. package/dist/execution/primitive.js +39 -32
  168. package/dist/execution/primitive.js.map +2 -2
  169. package/dist/execution/request.d.ts +11 -0
  170. package/dist/execution/request.d.ts.map +1 -1
  171. package/dist/execution/request.js +76 -40
  172. package/dist/execution/request.js.map +3 -3
  173. package/dist/execution/scopes.d.ts +16 -0
  174. package/dist/execution/scopes.d.ts.map +1 -1
  175. package/dist/execution/types.d.ts +9 -0
  176. package/dist/execution/types.d.ts.map +1 -1
  177. package/dist/http/api-routes.d.ts +2 -0
  178. package/dist/http/api-routes.d.ts.map +1 -1
  179. package/dist/http/index.js +1 -1
  180. package/dist/index.d.ts +8 -5
  181. package/dist/index.d.ts.map +1 -1
  182. package/dist/index.js +92 -78
  183. package/dist/index.js.map +1 -1
  184. package/dist/lake-storage/definition-updates.d.ts.map +1 -1
  185. package/dist/lake-storage/errors.d.ts +5 -1
  186. package/dist/lake-storage/errors.d.ts.map +1 -1
  187. package/dist/lake-storage/in-memory.d.ts +1 -0
  188. package/dist/lake-storage/in-memory.d.ts.map +1 -1
  189. package/dist/lake-storage/index.d.ts +6 -1
  190. package/dist/lake-storage/index.d.ts.map +1 -1
  191. package/dist/lake-storage/index.js +24 -7
  192. package/dist/lake-storage/index.js.map +1 -1
  193. package/dist/lake-storage/merge-validation.d.ts.map +1 -1
  194. package/dist/lake-storage/merge.d.ts +13 -2
  195. package/dist/lake-storage/merge.d.ts.map +1 -1
  196. package/dist/lake-storage/source-ordering.d.ts +19 -0
  197. package/dist/lake-storage/source-ordering.d.ts.map +1 -0
  198. package/dist/lake-storage/sql-transforms.d.ts +2 -1
  199. package/dist/lake-storage/sql-transforms.d.ts.map +1 -1
  200. package/dist/lake-storage/types.d.ts +10 -5
  201. package/dist/lake-storage/types.d.ts.map +1 -1
  202. package/dist/lake-storage/version-inputs.d.ts +4 -0
  203. package/dist/lake-storage/version-inputs.d.ts.map +1 -0
  204. package/dist/materializer/index.js +25 -22
  205. package/dist/materializer/index.js.map +1 -1
  206. package/dist/objects/authorized-ontology-view.d.ts +25 -0
  207. package/dist/objects/authorized-ontology-view.d.ts.map +1 -0
  208. package/dist/objects/execution.d.ts +1 -1
  209. package/dist/objects/execution.d.ts.map +1 -1
  210. package/dist/objects/index.js +29 -26
  211. package/dist/objects/index.js.map +1 -1
  212. package/dist/objects/link/authorization.d.ts +2 -7
  213. package/dist/objects/link/authorization.d.ts.map +1 -1
  214. package/dist/objects/query/executor.d.ts +4 -2
  215. package/dist/objects/query/executor.d.ts.map +1 -1
  216. package/dist/objects/query/index.js +24 -21
  217. package/dist/objects/query/index.js.map +1 -1
  218. package/dist/objects/query/links.d.ts +22 -1
  219. package/dist/objects/query/links.d.ts.map +1 -1
  220. package/dist/objects/query/selected-read-admission.d.ts +27 -0
  221. package/dist/objects/query/selected-read-admission.d.ts.map +1 -0
  222. package/dist/objects/query/validate.d.ts +60 -2
  223. package/dist/objects/query/validate.d.ts.map +1 -1
  224. package/dist/objects/sdk/object-handle.d.ts.map +1 -1
  225. package/dist/objects/sdk/object-set.d.ts.map +1 -1
  226. package/dist/objects/sdk/runtime-query-executor.d.ts +2 -7
  227. package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
  228. package/dist/objects/sdk/telemetry-channel.d.ts.map +1 -1
  229. package/dist/objects/service/list-service.d.ts +2 -3
  230. package/dist/objects/service/list-service.d.ts.map +1 -1
  231. package/dist/objects/telemetry/history.d.ts +8 -6
  232. package/dist/objects/telemetry/history.d.ts.map +1 -1
  233. package/dist/objects/telemetry/index.d.ts +2 -2
  234. package/dist/objects/telemetry/index.d.ts.map +1 -1
  235. package/dist/objects/telemetry/workload.d.ts +11 -0
  236. package/dist/objects/telemetry/workload.d.ts.map +1 -0
  237. package/dist/ontology/index.d.ts +2 -1
  238. package/dist/ontology/index.d.ts.map +1 -1
  239. package/dist/ontology/index.js +13 -12
  240. package/dist/ontology/index.js.map +1 -1
  241. package/dist/ontology/inference/index.d.ts +2 -1
  242. package/dist/ontology/inference/index.d.ts.map +1 -1
  243. package/dist/ontology/internal.d.ts +0 -1
  244. package/dist/ontology/internal.d.ts.map +1 -1
  245. package/dist/ontology/internal.js +5 -10
  246. package/dist/ontology/internal.js.map +3 -3
  247. package/dist/ontology/json-schema.d.ts +10 -6
  248. package/dist/ontology/json-schema.d.ts.map +1 -1
  249. package/dist/ontology/link-path-selection.d.ts +35 -0
  250. package/dist/ontology/link-path-selection.d.ts.map +1 -0
  251. package/dist/ontology/refs.d.ts +2 -0
  252. package/dist/ontology/refs.d.ts.map +1 -1
  253. package/dist/ontology/tokens.d.ts +2 -1
  254. package/dist/ontology/tokens.d.ts.map +1 -1
  255. package/dist/pipelines/execution.d.ts.map +1 -1
  256. package/dist/pipelines/index.js +27 -24
  257. package/dist/pipelines/index.js.map +1 -1
  258. package/dist/pipelines/request.d.ts.map +1 -1
  259. package/dist/projections/execution.d.ts.map +1 -1
  260. package/dist/projections/internal.js +25 -22
  261. package/dist/projections/internal.js.map +1 -1
  262. package/dist/projections/run-dispatch.d.ts.map +1 -1
  263. package/dist/rules/execution.d.ts.map +1 -1
  264. package/dist/runtime/create.d.ts +4 -1
  265. package/dist/runtime/create.d.ts.map +1 -1
  266. package/dist/runtime/definitions.d.ts +2 -0
  267. package/dist/runtime/definitions.d.ts.map +1 -1
  268. package/dist/runtime/host.d.ts +2 -0
  269. package/dist/runtime/host.d.ts.map +1 -1
  270. package/dist/runtime/internal.d.ts +1 -0
  271. package/dist/runtime/internal.d.ts.map +1 -1
  272. package/dist/runtime/resolve-definitions.d.ts +2 -0
  273. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  274. package/dist/runtime/sixb.d.ts +4 -0
  275. package/dist/runtime/sixb.d.ts.map +1 -1
  276. package/dist/runtime/types.d.ts +3 -0
  277. package/dist/runtime/types.d.ts.map +1 -1
  278. package/dist/schedules/execution.d.ts +2 -1
  279. package/dist/schedules/execution.d.ts.map +1 -1
  280. package/dist/security/every.d.ts +4 -1
  281. package/dist/security/every.d.ts.map +1 -1
  282. package/dist/security/grants.d.ts +7 -2
  283. package/dist/security/grants.d.ts.map +1 -1
  284. package/dist/security/index.d.ts +1 -1
  285. package/dist/security/index.d.ts.map +1 -1
  286. package/dist/security/registry.d.ts +1 -0
  287. package/dist/security/registry.d.ts.map +1 -1
  288. package/dist/security/types.d.ts +7 -1
  289. package/dist/security/types.d.ts.map +1 -1
  290. package/dist/security/validation.d.ts +2 -0
  291. package/dist/security/validation.d.ts.map +1 -1
  292. package/dist/shares/access-plan.d.ts +22 -0
  293. package/dist/shares/access-plan.d.ts.map +1 -0
  294. package/dist/shares/builders.d.ts +14 -0
  295. package/dist/shares/builders.d.ts.map +1 -0
  296. package/dist/shares/compiler.d.ts +14 -0
  297. package/dist/shares/compiler.d.ts.map +1 -0
  298. package/dist/shares/errors.d.ts +4 -0
  299. package/dist/shares/errors.d.ts.map +1 -0
  300. package/dist/shares/execution.d.ts +57 -0
  301. package/dist/shares/execution.d.ts.map +1 -0
  302. package/dist/shares/index.d.ts +10 -0
  303. package/dist/shares/index.d.ts.map +1 -0
  304. package/dist/shares/internal.d.ts +3 -0
  305. package/dist/shares/internal.d.ts.map +1 -0
  306. package/dist/shares/internal.js +239 -0
  307. package/dist/shares/internal.js.map +10 -0
  308. package/dist/shares/intersection.d.ts +9 -0
  309. package/dist/shares/intersection.d.ts.map +1 -0
  310. package/dist/shares/session-protocol.d.ts +41 -0
  311. package/dist/shares/session-protocol.d.ts.map +1 -0
  312. package/dist/shares/types.d.ts +51 -0
  313. package/dist/shares/types.d.ts.map +1 -0
  314. package/dist/shares/validation.d.ts +11 -0
  315. package/dist/shares/validation.d.ts.map +1 -0
  316. package/dist/storage/action-runs/provider.js +2 -2
  317. package/dist/storage/agents/provider.js +2 -2
  318. package/dist/storage/executions/in-memory.d.ts +3 -0
  319. package/dist/storage/executions/in-memory.d.ts.map +1 -1
  320. package/dist/storage/executions/provider.d.ts +4 -1
  321. package/dist/storage/executions/provider.d.ts.map +1 -1
  322. package/dist/storage/executions/provider.js +23 -3
  323. package/dist/storage/executions/provider.js.map +3 -3
  324. package/dist/storage/executions/run-link.d.ts +7 -0
  325. package/dist/storage/executions/run-link.d.ts.map +1 -1
  326. package/dist/storage/executions/validation.d.ts +6 -0
  327. package/dist/storage/executions/validation.d.ts.map +1 -1
  328. package/dist/storage/in-memory/index.d.ts +8 -0
  329. package/dist/storage/in-memory/index.d.ts.map +1 -1
  330. package/dist/storage/index.d.ts +8 -2
  331. package/dist/storage/index.d.ts.map +1 -1
  332. package/dist/storage/index.js +65 -36
  333. package/dist/storage/index.js.map +1 -1
  334. package/dist/storage/objects/execution-limits.d.ts +25 -0
  335. package/dist/storage/objects/execution-limits.d.ts.map +1 -0
  336. package/dist/storage/objects/guard.d.ts +16 -0
  337. package/dist/storage/objects/guard.d.ts.map +1 -0
  338. package/dist/storage/objects/in-memory/index.d.ts +3 -0
  339. package/dist/storage/objects/in-memory/index.d.ts.map +1 -0
  340. package/dist/storage/objects/in-memory/keys.d.ts +10 -0
  341. package/dist/storage/objects/in-memory/keys.d.ts.map +1 -0
  342. package/dist/storage/objects/in-memory/query.d.ts +31 -0
  343. package/dist/storage/objects/in-memory/query.d.ts.map +1 -0
  344. package/dist/storage/objects/in-memory/read-scope.d.ts +18 -0
  345. package/dist/storage/objects/in-memory/read-scope.d.ts.map +1 -0
  346. package/dist/storage/objects/in-memory/read-source.d.ts +10 -0
  347. package/dist/storage/objects/in-memory/read-source.d.ts.map +1 -0
  348. package/dist/storage/objects/in-memory/selected-reader.d.ts +9 -0
  349. package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -0
  350. package/dist/storage/objects/{in-memory.d.ts → in-memory/storage.d.ts} +13 -10
  351. package/dist/storage/objects/in-memory/storage.d.ts.map +1 -0
  352. package/dist/storage/objects/index.d.ts +4 -1
  353. package/dist/storage/objects/index.d.ts.map +1 -1
  354. package/dist/storage/objects/keys.d.ts +1 -1
  355. package/dist/storage/objects/keys.d.ts.map +1 -1
  356. package/dist/storage/objects/read-scope.d.ts +25 -0
  357. package/dist/storage/objects/read-scope.d.ts.map +1 -0
  358. package/dist/storage/objects/types.d.ts +114 -22
  359. package/dist/storage/objects/types.d.ts.map +1 -1
  360. package/dist/storage/operation-scope.d.ts +3 -0
  361. package/dist/storage/operation-scope.d.ts.map +1 -1
  362. package/dist/storage/operation-scope.js +4 -2
  363. package/dist/storage/operation-scope.js.map +1 -1
  364. package/dist/storage/pipeline-runs/provider.js +2 -2
  365. package/dist/storage/projection-runs/provider.js +2 -2
  366. package/dist/storage/share-grants/errors.d.ts +8 -0
  367. package/dist/storage/share-grants/errors.d.ts.map +1 -0
  368. package/dist/storage/share-grants/in-memory.d.ts +11 -0
  369. package/dist/storage/share-grants/in-memory.d.ts.map +1 -0
  370. package/dist/storage/share-grants/index.d.ts +5 -0
  371. package/dist/storage/share-grants/index.d.ts.map +1 -0
  372. package/dist/storage/share-grants/provider.d.ts +4 -0
  373. package/dist/storage/share-grants/provider.d.ts.map +1 -0
  374. package/dist/storage/share-grants/provider.js +24 -0
  375. package/dist/storage/share-grants/provider.js.map +9 -0
  376. package/dist/storage/share-grants/record.d.ts +11 -0
  377. package/dist/storage/share-grants/record.d.ts.map +1 -0
  378. package/dist/storage/share-grants/types.d.ts +97 -0
  379. package/dist/storage/share-grants/types.d.ts.map +1 -0
  380. package/dist/storage/share-sessions/errors.d.ts +8 -0
  381. package/dist/storage/share-sessions/errors.d.ts.map +1 -0
  382. package/dist/storage/share-sessions/in-memory.d.ts +14 -0
  383. package/dist/storage/share-sessions/in-memory.d.ts.map +1 -0
  384. package/dist/storage/share-sessions/index.d.ts +5 -0
  385. package/dist/storage/share-sessions/index.d.ts.map +1 -0
  386. package/dist/storage/share-sessions/provider.d.ts +3 -0
  387. package/dist/storage/share-sessions/provider.d.ts.map +1 -0
  388. package/dist/storage/share-sessions/provider.js +20 -0
  389. package/dist/storage/share-sessions/provider.js.map +9 -0
  390. package/dist/storage/share-sessions/record.d.ts +8 -0
  391. package/dist/storage/share-sessions/record.d.ts.map +1 -0
  392. package/dist/storage/share-sessions/types.d.ts +50 -0
  393. package/dist/storage/share-sessions/types.d.ts.map +1 -0
  394. package/dist/storage/sync-runs/provider.js +2 -2
  395. package/dist/storage/transaction.d.ts +2 -1
  396. package/dist/storage/transaction.d.ts.map +1 -1
  397. package/dist/storage/types.d.ts +8 -0
  398. package/dist/storage/types.d.ts.map +1 -1
  399. package/dist/storage/webhook-runs/provider.js +2 -2
  400. package/dist/storage/workflow-runs/provider.js +10 -7
  401. package/dist/storage/workflow-runs/provider.js.map +1 -1
  402. package/dist/syncs/execution.d.ts.map +1 -1
  403. package/dist/syncs/index.js +27 -24
  404. package/dist/syncs/index.js.map +1 -1
  405. package/dist/syncs/request.d.ts.map +1 -1
  406. package/dist/testing/dataset-sequence-contract.d.ts +4 -0
  407. package/dist/testing/dataset-sequence-contract.d.ts.map +1 -0
  408. package/dist/testing/effective-storage-contract.d.ts.map +1 -1
  409. package/dist/testing/execution-storage-contract.d.ts +4 -0
  410. package/dist/testing/execution-storage-contract.d.ts.map +1 -1
  411. package/dist/testing/index.d.ts +3 -0
  412. package/dist/testing/index.d.ts.map +1 -1
  413. package/dist/testing/index.js +2555 -908
  414. package/dist/testing/index.js.map +11 -7
  415. package/dist/testing/lake-merge-storage-contract.d.ts +1 -0
  416. package/dist/testing/lake-merge-storage-contract.d.ts.map +1 -1
  417. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  418. package/dist/testing/object-read-scope-contract.d.ts +22 -0
  419. package/dist/testing/object-read-scope-contract.d.ts.map +1 -0
  420. package/dist/testing/share-grant-storage-contract.d.ts +10 -0
  421. package/dist/testing/share-grant-storage-contract.d.ts.map +1 -0
  422. package/dist/testing/share-session-storage-contract.d.ts +9 -0
  423. package/dist/testing/share-session-storage-contract.d.ts.map +1 -0
  424. package/dist/webhooks/internal.js +24 -21
  425. package/dist/webhooks/internal.js.map +2 -2
  426. package/dist/workflows/execution.d.ts.map +1 -1
  427. package/dist/workflows/index.js +42 -35
  428. package/dist/workflows/index.js.map +1 -1
  429. package/dist/workflows/request.d.ts.map +1 -1
  430. package/package.json +25 -1
  431. package/src/actions/delegated-admission.ts +72 -0
  432. package/src/actions/descriptor.ts +58 -0
  433. package/src/actions/execution.ts +99 -24
  434. package/src/actions/request.ts +136 -19
  435. package/src/actions/run-authorization.ts +53 -0
  436. package/src/actions/run-dispatch.ts +8 -1
  437. package/src/agents/adapters.ts +30 -420
  438. package/src/agents/authority.ts +3 -4
  439. package/src/agents/context-resolution.ts +1 -4
  440. package/src/agents/errors.ts +0 -10
  441. package/src/agents/execution.ts +13 -5
  442. package/src/agents/identity.ts +4 -0
  443. package/src/agents/index.ts +1 -20
  444. package/src/agents/message.ts +4 -5
  445. package/src/agents/model-loop.ts +54 -6
  446. package/src/agents/request.ts +16 -3
  447. package/src/agents/tool-definition.ts +0 -19
  448. package/src/agents/validation.ts +6 -65
  449. package/src/ai-usage/execution.ts +4 -11
  450. package/src/authorization/decision.ts +29 -14
  451. package/src/authorization/grant-kinds.ts +10 -0
  452. package/src/authorization/index.ts +1 -0
  453. package/src/bootstrap/discovery.ts +3 -0
  454. package/src/bootstrap/ontology-type-manifest.ts +12 -6
  455. package/src/datasets/builders.ts +23 -2
  456. package/src/datasets/changes.ts +16 -4
  457. package/src/datasets/execution.ts +76 -5
  458. package/src/datasets/index.ts +1 -0
  459. package/src/datasets/sequence.ts +77 -0
  460. package/src/datasets/types.ts +1 -0
  461. package/src/datasets/validation.ts +26 -0
  462. package/src/datasets/write.ts +240 -0
  463. package/src/events/execution.ts +57 -7
  464. package/src/events/types/datasets.ts +2 -6
  465. package/src/execution/agent.ts +1 -4
  466. package/src/execution/authorization.ts +470 -90
  467. package/src/execution/authorized-object-reader.ts +695 -0
  468. package/src/execution/durable.ts +10 -2
  469. package/src/execution/index.ts +1 -0
  470. package/src/execution/request.ts +63 -13
  471. package/src/execution/scopes.ts +36 -6
  472. package/src/execution/types.ts +8 -0
  473. package/src/http/api-routes.ts +45 -0
  474. package/src/index.ts +36 -15
  475. package/src/lake-storage/definition-updates.ts +9 -0
  476. package/src/lake-storage/errors.ts +6 -1
  477. package/src/lake-storage/in-memory.ts +53 -17
  478. package/src/lake-storage/index.ts +10 -1
  479. package/src/lake-storage/merge-validation.ts +12 -2
  480. package/src/lake-storage/merge.ts +40 -2
  481. package/src/lake-storage/source-ordering.ts +95 -0
  482. package/src/lake-storage/sql-transforms.ts +2 -1
  483. package/src/lake-storage/types.ts +10 -5
  484. package/src/lake-storage/version-inputs.ts +14 -0
  485. package/src/objects/authorized-ontology-view.ts +512 -0
  486. package/src/objects/execution.ts +98 -143
  487. package/src/objects/link/authorization.ts +3 -2
  488. package/src/objects/query/executor.ts +45 -34
  489. package/src/objects/query/links.ts +84 -25
  490. package/src/objects/query/selected-read-admission.ts +310 -0
  491. package/src/objects/query/validate.ts +353 -36
  492. package/src/objects/sdk/object-handle.ts +2 -8
  493. package/src/objects/sdk/object-set.ts +10 -11
  494. package/src/objects/sdk/runtime-query-executor.ts +8 -28
  495. package/src/objects/sdk/telemetry-channel.ts +11 -7
  496. package/src/objects/service/list-service.ts +15 -29
  497. package/src/objects/telemetry/history.ts +297 -17
  498. package/src/objects/telemetry/index.ts +2 -2
  499. package/src/objects/telemetry/workload.ts +79 -0
  500. package/src/ontology/index.ts +7 -1
  501. package/src/ontology/inference/index.ts +4 -1
  502. package/src/ontology/internal.ts +0 -1
  503. package/src/ontology/json-schema.ts +13 -12
  504. package/src/ontology/link-path-selection.ts +193 -0
  505. package/src/ontology/refs.ts +19 -0
  506. package/src/ontology/tokens.ts +15 -8
  507. package/src/pipelines/execution.ts +30 -7
  508. package/src/pipelines/request.ts +5 -0
  509. package/src/projections/execution.ts +72 -11
  510. package/src/projections/run-dispatch.ts +6 -12
  511. package/src/rules/execution.ts +20 -8
  512. package/src/runtime/create.ts +5 -1
  513. package/src/runtime/definitions.ts +2 -0
  514. package/src/runtime/host.ts +25 -6
  515. package/src/runtime/internal.ts +1 -0
  516. package/src/runtime/resolve-definitions.ts +9 -0
  517. package/src/runtime/sixb.ts +23 -2
  518. package/src/runtime/types.ts +3 -0
  519. package/src/schedules/execution.ts +24 -2
  520. package/src/security/every.ts +4 -0
  521. package/src/security/grants.ts +45 -3
  522. package/src/security/index.ts +1 -0
  523. package/src/security/registry.ts +3 -0
  524. package/src/security/types.ts +8 -0
  525. package/src/security/validation.ts +3 -0
  526. package/src/shares/access-plan.ts +225 -0
  527. package/src/shares/builders.ts +381 -0
  528. package/src/shares/compiler.ts +359 -0
  529. package/src/shares/errors.ts +3 -0
  530. package/src/shares/execution.ts +394 -0
  531. package/src/shares/index.ts +28 -0
  532. package/src/shares/internal.ts +9 -0
  533. package/src/shares/intersection.ts +178 -0
  534. package/src/shares/session-protocol.ts +258 -0
  535. package/src/shares/types.ts +76 -0
  536. package/src/shares/validation.ts +40 -0
  537. package/src/storage/executions/in-memory.ts +9 -1
  538. package/src/storage/executions/provider.ts +30 -1
  539. package/src/storage/executions/run-link.ts +29 -0
  540. package/src/storage/executions/validation.ts +46 -1
  541. package/src/storage/in-memory/index.ts +21 -2
  542. package/src/storage/index.ts +51 -0
  543. package/src/storage/objects/execution-limits.ts +283 -0
  544. package/src/storage/objects/guard.ts +55 -0
  545. package/src/storage/objects/in-memory/index.ts +2 -0
  546. package/src/storage/objects/in-memory/keys.ts +46 -0
  547. package/src/storage/objects/in-memory/query.ts +754 -0
  548. package/src/storage/objects/in-memory/read-scope.ts +211 -0
  549. package/src/storage/objects/in-memory/read-source.ts +10 -0
  550. package/src/storage/objects/in-memory/selected-reader.ts +252 -0
  551. package/src/storage/objects/in-memory/storage.ts +589 -0
  552. package/src/storage/objects/index.ts +21 -0
  553. package/src/storage/objects/keys.ts +1 -1
  554. package/src/storage/objects/read-scope.ts +672 -0
  555. package/src/storage/objects/types.ts +123 -19
  556. package/src/storage/operation-scope.ts +16 -0
  557. package/src/storage/share-grants/errors.ts +14 -0
  558. package/src/storage/share-grants/in-memory.ts +107 -0
  559. package/src/storage/share-grants/index.ts +14 -0
  560. package/src/storage/share-grants/provider.ts +11 -0
  561. package/src/storage/share-grants/record.ts +347 -0
  562. package/src/storage/share-grants/types.ts +112 -0
  563. package/src/storage/share-sessions/errors.ts +14 -0
  564. package/src/storage/share-sessions/in-memory.ts +105 -0
  565. package/src/storage/share-sessions/index.ts +11 -0
  566. package/src/storage/share-sessions/provider.ts +9 -0
  567. package/src/storage/share-sessions/record.ts +176 -0
  568. package/src/storage/share-sessions/types.ts +57 -0
  569. package/src/storage/transaction.ts +14 -2
  570. package/src/storage/types.ts +27 -0
  571. package/src/syncs/execution.ts +25 -5
  572. package/src/syncs/request.ts +5 -0
  573. package/src/testing/dataset-sequence-contract.ts +373 -0
  574. package/src/testing/effective-storage-contract.ts +34 -0
  575. package/src/testing/execution-storage-contract.ts +79 -0
  576. package/src/testing/index.ts +16 -0
  577. package/src/testing/lake-merge-storage-contract.ts +3 -0
  578. package/src/testing/lake-storage-contract.ts +58 -0
  579. package/src/testing/object-read-scope-contract.ts +939 -0
  580. package/src/testing/share-grant-storage-contract.ts +325 -0
  581. package/src/testing/share-session-storage-contract.ts +235 -0
  582. package/src/workflows/execution.ts +53 -14
  583. package/src/workflows/request.ts +5 -0
  584. package/dist/chunk-2b5qtban.js.map +0 -14
  585. package/dist/chunk-37wk412q.js.map +0 -23
  586. package/dist/chunk-3fqt22c4.js.map +0 -14
  587. package/dist/chunk-3kv70xwp.js.map +0 -10
  588. package/dist/chunk-64sr682n.js.map +0 -12
  589. package/dist/chunk-7ds9620f.js.map +0 -10
  590. package/dist/chunk-dqn23610.js +0 -72
  591. package/dist/chunk-dqn23610.js.map +0 -11
  592. package/dist/chunk-e4rvtvpw.js.map +0 -34
  593. package/dist/chunk-gbrpsx4m.js.map +0 -11
  594. package/dist/chunk-h0knpbz5.js.map +0 -38
  595. package/dist/chunk-hdz94br2.js.map +0 -10
  596. package/dist/chunk-n2arzn6e.js.map +0 -20
  597. package/dist/chunk-qjzp9xyb.js.map +0 -12
  598. package/dist/chunk-tn7xcs2n.js.map +0 -13
  599. package/dist/chunk-wjgm6jjt.js.map +0 -13
  600. package/dist/chunk-xc7hq65b.js.map +0 -10
  601. package/dist/chunk-y35ma3mj.js +0 -551
  602. package/dist/chunk-y35ma3mj.js.map +0 -15
  603. package/dist/chunk-z2sery1b.js.map +0 -11
  604. package/dist/storage/objects/in-memory.d.ts.map +0 -1
  605. package/src/storage/objects/in-memory.ts +0 -1241
  606. /package/dist/{chunk-5jcdmjam.js.map → chunk-4jjp5k14.js.map} +0 -0
  607. /package/dist/{chunk-agsvg9ar.js.map → chunk-5ntny1qx.js.map} +0 -0
  608. /package/dist/{chunk-9aehf39w.js.map → chunk-f26bck4t.js.map} +0 -0
  609. /package/dist/{chunk-08twe8m6.js.map → chunk-p1rzczbt.js.map} +0 -0
  610. /package/dist/{chunk-xdpwpkha.js.map → chunk-rv2hkwwa.js.map} +0 -0
  611. /package/dist/{chunk-1kamz6j0.js.map → chunk-w1tvjszy.js.map} +0 -0
  612. /package/dist/{chunk-4nxeacx7.js.map → chunk-wdage1eb.js.map} +0 -0
@@ -1,11 +1,24 @@
1
+ import { isDeepStrictEqual } from "node:util"
2
+ import { agentServiceAccountId } from "../agents/identity"
1
3
  import type { Principal } from "../auth"
2
- import { emptyGrantSets, TARGETED_GRANT_KIND_KEYS } from "../authorization/grant-kinds"
4
+ import { TARGETED_GRANT_KIND_KEYS, type TargetedGrantKind } from "../authorization/grant-kinds"
3
5
  import type { AuthorizationContext, GrantIndex } from "../authorization/types"
4
6
  import { createSixbError } from "../errors/internal"
7
+ import type { ObjectRef } from "../ontology"
8
+ import {
9
+ type ObjectReadExecutionLimits,
10
+ snapshotObjectReadExecutionLimits,
11
+ } from "../storage/objects/execution-limits"
12
+ import { compileSelectedObjectReadScope } from "../storage/objects/read-scope"
13
+ import type {
14
+ CompiledSelectedObjectReadScope,
15
+ SelectedObjectReadScope,
16
+ } from "../storage/objects/types"
5
17
  import {
6
18
  type AuthorizablePrincipal,
7
19
  type AuthorizationRef,
8
20
  createRuntimeAuthorizationCapability,
21
+ type ExecutionContext,
9
22
  type ExecutionScope,
10
23
  isRuntimeAuthorizationCapability,
11
24
  type KernelOperation,
@@ -20,18 +33,33 @@ export type ResolvedRuntimeAuthorization =
20
33
  readonly projectId: string
21
34
  readonly context: AuthorizationContext
22
35
  readonly ref: Extract<AuthorizationRef, { readonly type: "principal" }>
23
- /** Process-local binding used by provider façades that explicitly support agent runs. */
24
- readonly executionBinding?: AgentExecutionBinding
25
36
  }
26
37
  | {
27
38
  readonly type: "unrestricted"
28
39
  readonly projectId: string
29
- readonly ref: Exclude<AuthorizationRef, { readonly type: "principal" }>
30
- /** Process-local binding used by provider façades that explicitly support agent runs. */
31
- readonly executionBinding?: AgentExecutionBinding
40
+ readonly ref: Exclude<AuthorizationRef, { readonly type: "principal" | "delegated" }>
41
+ }
42
+ | {
43
+ readonly type: "delegated"
44
+ readonly projectId: string
45
+ readonly objectRead: DelegatedObjectReadAuthorization
46
+ readonly actionApply: readonly DelegatedActionApplyTarget[]
47
+ readonly delegation?: Extract<AuthorizationRef, { readonly type: "delegated" }>["delegation"]
32
48
  }
33
49
  | { readonly type: "denied" }
34
50
 
51
+ /** Immutable process-local object-read authority. It has no durable representation. */
52
+ export interface DelegatedObjectReadAuthorization {
53
+ readonly scope: CompiledSelectedObjectReadScope
54
+ readonly limits: ObjectReadExecutionLimits
55
+ }
56
+
57
+ /** One exact object-bound Action target carried by process-local delegated authority. */
58
+ export interface DelegatedActionApplyTarget {
59
+ readonly actionId: string
60
+ readonly subject: ObjectRef
61
+ }
62
+
35
63
  type RegisteredRuntimeAuthorization = Exclude<
36
64
  ResolvedRuntimeAuthorization,
37
65
  { readonly type: "denied" }
@@ -41,29 +69,33 @@ type PrincipalAuthorizationContext = Omit<AuthorizationContext, "principal"> & {
41
69
  readonly principal: AuthorizablePrincipal
42
70
  }
43
71
 
44
- interface AgentExecutionBinding {
45
- readonly type: "agent"
46
- readonly executionId: string
47
- readonly actorId?: string
48
- readonly runId: string
72
+ interface RuntimeAuthorizationRegistration {
73
+ readonly resolved: RegisteredRuntimeAuthorization
74
+ readonly execution: ExecutionContext
49
75
  }
50
76
 
51
- const registeredAuthorizations = new WeakMap<RuntimeAuthorization, RegisteredRuntimeAuthorization>()
77
+ const registeredAuthorizations = new WeakMap<
78
+ RuntimeAuthorization,
79
+ RuntimeAuthorizationRegistration
80
+ >()
81
+
82
+ const MAX_DELEGATED_ACTION_APPLY_TARGETS = 4_096
83
+ const MAX_DELEGATED_ACTION_IDENTIFIER_CHARACTERS = 1_000_000
52
84
 
53
85
  export function createPrincipalRuntimeAuthorization(input: {
54
- readonly projectId: string
86
+ readonly execution: ExecutionContext
55
87
  readonly context: AuthorizationContext
56
88
  readonly credential?: Extract<AuthorizationRef, { readonly type: "principal" }>["credential"]
57
89
  }): RuntimeAuthorization {
90
+ if (input.execution.executor.type !== "request") {
91
+ throw new Error("[Sixb] Principal runtime authorization requires a request execution.")
92
+ }
58
93
  return createRegisteredPrincipalAuthorization(input)
59
94
  }
60
95
 
61
96
  /** Register restored authority bound to one exact agent run. */
62
97
  export function createAgentRuntimeAuthorization(input: {
63
- readonly projectId: string
64
- readonly executionId: string
65
- readonly actorId?: string
66
- readonly runId: string
98
+ readonly execution: ExecutionContext
67
99
  readonly authority:
68
100
  | {
69
101
  readonly type: "principal"
@@ -75,45 +107,32 @@ export function createAgentRuntimeAuthorization(input: {
75
107
  }
76
108
  | { readonly type: "disabled" }
77
109
  }): RuntimeAuthorization {
78
- assertNonEmpty(input.executionId, "Execution id")
79
- if (input.actorId !== undefined) assertNonEmpty(input.actorId, "Agent actor id")
80
- assertNonEmpty(input.runId, "Agent run id")
81
- const executionBinding: AgentExecutionBinding = {
82
- type: "agent",
83
- executionId: input.executionId,
84
- ...(input.actorId === undefined ? {} : { actorId: input.actorId }),
85
- runId: input.runId,
110
+ if (input.execution.executor.type !== "agent") {
111
+ throw new Error("[Sixb] Agent runtime authorization requires an Agent execution.")
86
112
  }
87
113
 
88
114
  if (input.authority.type === "principal") {
89
- return createRegisteredPrincipalAuthorization(
90
- {
91
- projectId: input.projectId,
92
- context: input.authority.context,
93
- ...(input.authority.credential === undefined
94
- ? {}
95
- : { credential: input.authority.credential }),
96
- },
97
- executionBinding
98
- )
115
+ return createRegisteredPrincipalAuthorization({
116
+ execution: input.execution,
117
+ context: input.authority.context,
118
+ ...(input.authority.credential === undefined
119
+ ? {}
120
+ : { credential: input.authority.credential }),
121
+ })
99
122
  }
100
123
 
101
- return register({
124
+ return register(input.execution, {
102
125
  type: "unrestricted",
103
- projectId: input.projectId,
126
+ projectId: input.execution.projectId,
104
127
  ref: Object.freeze({ type: "disabled" }),
105
- executionBinding: Object.freeze(executionBinding),
106
128
  })
107
129
  }
108
130
 
109
- function createRegisteredPrincipalAuthorization(
110
- input: {
111
- readonly projectId: string
112
- readonly context: AuthorizationContext
113
- readonly credential?: Extract<AuthorizationRef, { readonly type: "principal" }>["credential"]
114
- },
115
- executionBinding?: AgentExecutionBinding
116
- ): RuntimeAuthorization {
131
+ function createRegisteredPrincipalAuthorization(input: {
132
+ readonly execution: ExecutionContext
133
+ readonly context: AuthorizationContext
134
+ readonly credential?: Extract<AuthorizationRef, { readonly type: "principal" }>["credential"]
135
+ }): RuntimeAuthorization {
117
136
  const context = snapshotAuthorizationContext(input.context)
118
137
  const credential = input.credential ? snapshotCredential(input.credential) : undefined
119
138
  assertCredentialMatchesContext(context, credential)
@@ -122,41 +141,79 @@ function createRegisteredPrincipalAuthorization(
122
141
  principal: context.principal,
123
142
  ...(credential === undefined ? {} : { credential }),
124
143
  })
125
- return register({
144
+ return register(input.execution, {
126
145
  type: "principal",
127
- projectId: input.projectId,
146
+ projectId: input.execution.projectId,
128
147
  context,
129
148
  ref,
130
- ...(executionBinding === undefined
131
- ? {}
132
- : { executionBinding: Object.freeze({ ...executionBinding }) }),
133
149
  })
134
150
  }
135
151
 
136
- export function createDisabledRuntimeAuthorization(projectId: string): RuntimeAuthorization {
137
- return register({ type: "unrestricted", projectId, ref: Object.freeze({ type: "disabled" }) })
152
+ export function createDisabledRuntimeAuthorization(
153
+ execution: ExecutionContext
154
+ ): RuntimeAuthorization {
155
+ return register(execution, {
156
+ type: "unrestricted",
157
+ projectId: execution.projectId,
158
+ ref: Object.freeze({ type: "disabled" }),
159
+ })
160
+ }
161
+
162
+ /** Register exact object-read authority without fabricating a principal identity. */
163
+ export function createDelegatedRuntimeAuthorization(input: {
164
+ readonly execution: ExecutionContext
165
+ readonly objectRead: {
166
+ readonly selection: SelectedObjectReadScope
167
+ readonly limits: ObjectReadExecutionLimits
168
+ }
169
+ readonly actionApply?: readonly DelegatedActionApplyTarget[]
170
+ readonly delegation?: Extract<AuthorizationRef, { readonly type: "delegated" }>["delegation"]
171
+ }): RuntimeAuthorization {
172
+ const execution = input.execution
173
+ const objectReadInput = input.objectRead
174
+ const actionApplyInput = input.actionApply
175
+ const delegationInput = input.delegation
176
+ const delegation =
177
+ delegationInput === undefined ? undefined : snapshotSharedDelegation(delegationInput)
178
+ if (execution.executor.type !== "request" || execution.requestedBy !== undefined) {
179
+ throw new Error(
180
+ "[Sixb] Delegated runtime authorization requires a request execution without a principal."
181
+ )
182
+ }
183
+
184
+ const objectRead = Object.freeze({
185
+ scope: compileSelectedObjectReadScope(objectReadInput.selection),
186
+ limits: snapshotObjectReadExecutionLimits(objectReadInput.limits),
187
+ })
188
+ return register(execution, {
189
+ type: "delegated",
190
+ projectId: execution.projectId,
191
+ objectRead,
192
+ actionApply: snapshotDelegatedActionApply(actionApplyInput ?? []),
193
+ ...(delegation === undefined ? {} : { delegation }),
194
+ })
138
195
  }
139
196
 
140
197
  export function createTrustedPrimitiveRuntimeAuthorization(input: {
141
- readonly projectId: string
198
+ readonly execution: ExecutionContext
142
199
  readonly primitive: TrustedPrimitiveRef
143
200
  }): RuntimeAuthorization {
144
201
  const primitive = snapshotTrustedPrimitive(input.primitive)
145
- return register({
202
+ return register(input.execution, {
146
203
  type: "unrestricted",
147
- projectId: input.projectId,
204
+ projectId: input.execution.projectId,
148
205
  ref: Object.freeze({ type: "trustedPrimitive", primitive }),
149
206
  })
150
207
  }
151
208
 
152
209
  export function createKernelRuntimeAuthorization(input: {
153
- readonly projectId: string
210
+ readonly execution: ExecutionContext
154
211
  readonly operation: KernelOperation
155
212
  }): RuntimeAuthorization {
156
213
  const operation = snapshotKernelOperation(input.operation)
157
- return register({
214
+ return register(input.execution, {
158
215
  type: "unrestricted",
159
- projectId: input.projectId,
216
+ projectId: input.execution.projectId,
160
217
  ref: Object.freeze({ type: "kernel", operation }),
161
218
  })
162
219
  }
@@ -165,7 +222,28 @@ export function resolveRuntimeAuthorization(authorization: unknown): ResolvedRun
165
222
  if (!isRuntimeAuthorizationCapability(authorization)) {
166
223
  return { type: "denied" }
167
224
  }
168
- return registeredAuthorizations.get(authorization) ?? { type: "denied" }
225
+ return registeredAuthorizations.get(authorization)?.resolved ?? { type: "denied" }
226
+ }
227
+
228
+ /**
229
+ * Resolve authority from a runtime already admitted by `SixbHost.withScope`.
230
+ *
231
+ * Bound runtime facades carry no second execution value to recombine. Any lower-level boundary
232
+ * that receives an `ExecutionContext` separately must use `resolveExecutionScopeAuthorization`.
233
+ */
234
+ export function resolveRuntimeAuthorizationForProject(input: {
235
+ readonly projectId: unknown
236
+ readonly runtimeAuthorization?: unknown
237
+ }): ResolvedRuntimeAuthorization {
238
+ const resolved = resolveRuntimeAuthorization(input.runtimeAuthorization)
239
+ if (
240
+ resolved.type === "denied" ||
241
+ typeof input.projectId !== "string" ||
242
+ resolved.projectId !== input.projectId
243
+ ) {
244
+ return { type: "denied" }
245
+ }
246
+ return resolved
169
247
  }
170
248
 
171
249
  export function getAuthorizationRef(authorization: RuntimeAuthorization): AuthorizationRef {
@@ -173,9 +251,29 @@ export function getAuthorizationRef(authorization: RuntimeAuthorization): Author
173
251
  if (resolved.type === "denied") {
174
252
  throw new Error("[Sixb] Runtime authorization is not a registered Core capability.")
175
253
  }
254
+ if (resolved.type === "delegated") {
255
+ if (resolved.delegation) {
256
+ return { type: "delegated", delegation: { ...resolved.delegation } }
257
+ }
258
+ throw new Error(
259
+ "[Sixb] Delegated runtime authorization cannot cross a durable execution boundary."
260
+ )
261
+ }
176
262
  return cloneAuthorizationRef(resolved.ref)
177
263
  }
178
264
 
265
+ function snapshotSharedDelegation(
266
+ input: Extract<AuthorizationRef, { readonly type: "delegated" }>["delegation"]
267
+ ): Extract<AuthorizationRef, { readonly type: "delegated" }>["delegation"] {
268
+ const kind = input.kind
269
+ const grantId = input.grantId
270
+ const sessionId = input.sessionId
271
+ if (kind !== "share") throw new Error("[Sixb] Unknown delegated authority provenance.")
272
+ assertNonEmpty(grantId, "Share grant id")
273
+ assertNonEmpty(sessionId, "Share session id")
274
+ return Object.freeze({ kind, grantId, sessionId })
275
+ }
276
+
179
277
  export function assertExecutionScopeProject(projectId: string, scope: ExecutionScope): void {
180
278
  assertNonEmpty(projectId, "Project id")
181
279
  if (scope.execution.projectId !== projectId) {
@@ -215,22 +313,51 @@ export function assertExecutionScopeProject(projectId: string, scope: ExecutionS
215
313
  }
216
314
  }
217
315
 
316
+ /**
317
+ * Capture the two opaque capabilities carried by a scope exactly once.
318
+ *
319
+ * Security-sensitive boundaries must not resolve a caller-owned wrapper and then read it again:
320
+ * accessor-backed inputs could otherwise substitute a different execution or authority between
321
+ * those operations.
322
+ */
323
+ export function captureExecutionScope(scope: ExecutionScope): ExecutionScope {
324
+ const execution = scope.execution
325
+ const authorization = scope.authorization
326
+ return Object.freeze({ execution, authorization })
327
+ }
328
+
218
329
  /** Validate that one registered authority belongs to the exact execution it accompanies. */
219
330
  export function resolveExecutionScopeAuthorization(
220
331
  projectId: string,
221
332
  scope: ExecutionScope
222
333
  ): RegisteredRuntimeAuthorization {
223
- assertExecutionScopeProject(projectId, scope)
224
- const resolved = resolveRuntimeAuthorization(scope.authorization)
334
+ const capturedScope = captureExecutionScope(scope)
335
+ assertExecutionScopeProject(projectId, capturedScope)
336
+ const resolved = resolveRuntimeAuthorization(capturedScope.authorization)
225
337
  if (resolved.type === "denied") {
226
338
  throw createSixbError(
227
339
  "internal.unexpected",
228
340
  "[Sixb] Execution scope carries unregistered runtime authorization.",
229
- { details: { executionId: scope.execution.id, projectId } }
341
+ { details: { executionId: capturedScope.execution.id, projectId } }
342
+ )
343
+ }
344
+
345
+ const registration = registeredAuthorizations.get(capturedScope.authorization)
346
+ if (!registration || !executionMatchesBinding(registration.execution, capturedScope.execution)) {
347
+ throw invalidExecutionAuthority(
348
+ capturedScope.execution.id,
349
+ "authority is bound to different execution provenance"
230
350
  )
231
351
  }
232
352
 
233
- const { execution } = scope
353
+ assertResolvedAuthorizationMatchesExecution(resolved, capturedScope.execution)
354
+ return resolved
355
+ }
356
+
357
+ function assertResolvedAuthorizationMatchesExecution(
358
+ resolved: RegisteredRuntimeAuthorization,
359
+ execution: ExecutionContext
360
+ ): void {
234
361
  switch (execution.executor.type) {
235
362
  case "request":
236
363
  if (
@@ -239,27 +366,31 @@ export function resolveExecutionScopeAuthorization(
239
366
  ) {
240
367
  throw invalidExecutionAuthority(execution.id, "request source does not match its executor")
241
368
  }
242
- if (resolved.ref.type === "principal") {
243
- if (
244
- resolved.type !== "principal" ||
245
- resolved.executionBinding !== undefined ||
246
- !principalsEqual(execution.requestedBy, resolved.ref.principal)
247
- ) {
369
+ if (resolved.type === "principal") {
370
+ if (!principalsEqual(execution.requestedBy, resolved.ref.principal)) {
248
371
  throw invalidExecutionAuthority(
249
372
  execution.id,
250
373
  "request authority does not match its requested-by principal"
251
374
  )
252
375
  }
253
- return resolved
376
+ return
254
377
  }
255
- if (resolved.ref.type === "disabled" && execution.requestedBy === undefined) return resolved
378
+ if (
379
+ resolved.type === "unrestricted" &&
380
+ resolved.ref.type === "disabled" &&
381
+ execution.requestedBy === undefined
382
+ ) {
383
+ return
384
+ }
385
+ if (resolved.type === "delegated" && execution.requestedBy === undefined) return
256
386
  throw invalidExecutionAuthority(
257
387
  execution.id,
258
- "request execution requires principal or explicitly disabled authority"
388
+ "request execution requires principal, delegated, or explicitly disabled authority"
259
389
  )
260
390
 
261
391
  case "primitive":
262
392
  if (
393
+ resolved.type !== "unrestricted" ||
263
394
  resolved.ref.type !== "trustedPrimitive" ||
264
395
  resolved.ref.primitive.kind !== execution.executor.kind ||
265
396
  resolved.ref.primitive.id !== execution.executor.id ||
@@ -270,22 +401,37 @@ export function resolveExecutionScopeAuthorization(
270
401
  "trusted primitive authority does not match its executor"
271
402
  )
272
403
  }
273
- return resolved
404
+ return
274
405
 
275
406
  case "agent":
276
- if (
277
- resolved.executionBinding?.type !== "agent" ||
278
- resolved.executionBinding.executionId !== execution.id ||
279
- resolved.executionBinding.actorId !== execution.executor.actorId ||
280
- resolved.executionBinding.runId !== execution.executor.runId
281
- ) {
407
+ if (execution.source.type !== "execution") {
282
408
  throw invalidExecutionAuthority(
283
409
  execution.id,
284
- "agent authority does not match its execution binding"
410
+ "agent execution requires an execution source"
285
411
  )
286
412
  }
287
- if (resolved.type === "principal" && resolved.ref.type === "principal") return resolved
288
- if (resolved.type === "unrestricted" && resolved.ref.type === "disabled") return resolved
413
+ if (resolved.type === "principal" && resolved.ref.type === "principal") {
414
+ if (resolved.ref.principal.type === "serviceAccount") {
415
+ const actorId = execution.executor.actorId
416
+ if (
417
+ actorId === undefined ||
418
+ resolved.ref.principal.id !== agentServiceAccountId(actorId) ||
419
+ resolved.ref.credential !== undefined
420
+ ) {
421
+ throw invalidExecutionAuthority(
422
+ execution.id,
423
+ "agent authority must reference its managed service account"
424
+ )
425
+ }
426
+ } else if (resolved.ref.credential === undefined) {
427
+ throw invalidExecutionAuthority(
428
+ execution.id,
429
+ "inherited user agent authority requires a credential"
430
+ )
431
+ }
432
+ return
433
+ }
434
+ if (resolved.type === "unrestricted" && resolved.ref.type === "disabled") return
289
435
  throw invalidExecutionAuthority(
290
436
  execution.id,
291
437
  "agent authority must be principal or explicitly disabled"
@@ -293,6 +439,7 @@ export function resolveExecutionScopeAuthorization(
293
439
 
294
440
  case "kernel":
295
441
  if (
442
+ resolved.type !== "unrestricted" ||
296
443
  resolved.ref.type !== "kernel" ||
297
444
  execution.requestedBy !== undefined ||
298
445
  resolved.ref.operation.type !== execution.executor.operation.type ||
@@ -303,7 +450,7 @@ export function resolveExecutionScopeAuthorization(
303
450
  "kernel authority does not match its executor"
304
451
  )
305
452
  }
306
- return resolved
453
+ return
307
454
  }
308
455
  }
309
456
 
@@ -322,23 +469,122 @@ function invalidExecutionAuthority(executionId: string, reason: string): Error {
322
469
  )
323
470
  }
324
471
 
325
- function register(input: RegisteredRuntimeAuthorization): RuntimeAuthorization {
472
+ function register(
473
+ execution: ExecutionContext,
474
+ input: RegisteredRuntimeAuthorization
475
+ ): RuntimeAuthorization {
326
476
  assertNonEmpty(input.projectId, "Authorization project id")
477
+ const executionBinding = snapshotExecutionContext(execution)
478
+ if (input.projectId !== executionBinding.projectId) {
479
+ throw new Error(
480
+ `[Sixb] Runtime authorization belongs to project '${input.projectId}', not execution project '${executionBinding.projectId}'.`
481
+ )
482
+ }
483
+ assertResolvedAuthorizationMatchesExecution(input, executionBinding)
327
484
  const authorization = createRuntimeAuthorizationCapability()
328
- registeredAuthorizations.set(authorization, Object.freeze(input))
485
+ registeredAuthorizations.set(
486
+ authorization,
487
+ Object.freeze({ resolved: Object.freeze(input), execution: executionBinding })
488
+ )
329
489
  return authorization
330
490
  }
331
491
 
492
+ function executionMatchesBinding(binding: ExecutionContext, execution: ExecutionContext): boolean {
493
+ try {
494
+ return isDeepStrictEqual(binding, snapshotExecutionContext(execution))
495
+ } catch {
496
+ return false
497
+ }
498
+ }
499
+
500
+ function snapshotExecutionContext(execution: ExecutionContext): ExecutionContext {
501
+ assertNonEmpty(execution.id, "Execution id")
502
+ assertNonEmpty(execution.projectId, "Execution project id")
503
+ assertNonEmpty(execution.correlationId, "Execution correlation id")
504
+ return Object.freeze({
505
+ id: execution.id,
506
+ projectId: execution.projectId,
507
+ ...(execution.requestedBy === undefined
508
+ ? {}
509
+ : { requestedBy: snapshotAuthorizablePrincipal(execution.requestedBy) }),
510
+ executor: snapshotExecutionExecutor(execution.executor),
511
+ source: snapshotExecutionSource(execution.source),
512
+ correlationId: execution.correlationId,
513
+ })
514
+ }
515
+
516
+ function snapshotExecutionExecutor(
517
+ executor: ExecutionContext["executor"]
518
+ ): ExecutionContext["executor"] {
519
+ switch (executor.type) {
520
+ case "request":
521
+ assertNonEmpty(executor.requestId, "Execution request id")
522
+ return Object.freeze({ type: "request", requestId: executor.requestId })
523
+ case "primitive": {
524
+ const primitive = snapshotTrustedPrimitive(executor)
525
+ return Object.freeze({ type: "primitive", ...primitive })
526
+ }
527
+ case "agent":
528
+ if (executor.actorId !== undefined)
529
+ assertNonEmpty(executor.actorId, "Execution Agent actor id")
530
+ assertNonEmpty(executor.runId, "Execution Agent run id")
531
+ return Object.freeze({
532
+ type: "agent",
533
+ ...(executor.actorId === undefined ? {} : { actorId: executor.actorId }),
534
+ runId: executor.runId,
535
+ })
536
+ case "kernel":
537
+ return Object.freeze({
538
+ type: "kernel",
539
+ operation: snapshotKernelOperation(executor.operation),
540
+ })
541
+ }
542
+ throw new Error(
543
+ `[Sixb] Unknown execution executor type '${String((executor as { type?: unknown }).type)}'.`
544
+ )
545
+ }
546
+
547
+ function snapshotExecutionSource(source: ExecutionContext["source"]): ExecutionContext["source"] {
548
+ switch (source.type) {
549
+ case "http":
550
+ assertNonEmpty(source.requestId, "Execution source request id")
551
+ return Object.freeze({ type: "http", requestId: source.requestId })
552
+ case "webhook":
553
+ assertNonEmpty(source.deliveryId, "Execution source delivery id")
554
+ return Object.freeze({ type: "webhook", deliveryId: source.deliveryId })
555
+ case "schedule":
556
+ case "event":
557
+ assertNonEmpty(source.eventId, "Execution source event id")
558
+ return Object.freeze({ type: source.type, eventId: source.eventId })
559
+ case "datasetVersion":
560
+ assertNonEmpty(source.datasetId, "Execution source dataset id")
561
+ assertNonEmpty(source.versionId, "Execution source dataset version id")
562
+ return Object.freeze({
563
+ type: "datasetVersion",
564
+ datasetId: source.datasetId,
565
+ versionId: source.versionId,
566
+ })
567
+ case "execution":
568
+ assertNonEmpty(source.executionId, "Execution source execution id")
569
+ return Object.freeze({ type: "execution", executionId: source.executionId })
570
+ }
571
+ throw new Error(
572
+ `[Sixb] Unknown execution source type '${String((source as { type?: unknown }).type)}'.`
573
+ )
574
+ }
575
+
332
576
  function snapshotAuthorizationContext(
333
577
  context: AuthorizationContext
334
578
  ): PrincipalAuthorizationContext {
335
579
  const principal = snapshotAuthorizablePrincipal(context.principal)
336
- const grants = emptyGrantSets()
337
- grants["run:agent"] = context.grants["run:agent"]
580
+ const grants = {} as Record<TargetedGrantKind, ReadonlySet<string>>
338
581
  for (const kind of TARGETED_GRANT_KIND_KEYS) {
339
- grants[kind] = new Set(context.grants[kind])
582
+ grants[kind] = new ImmutableGrantSet(context.grants[kind])
340
583
  }
341
- const frozenGrants: GrantIndex = Object.freeze(grants)
584
+ const frozenGrants: GrantIndex = Object.freeze({
585
+ ...grants,
586
+ "run:agent": context.grants["run:agent"],
587
+ })
342
588
  return Object.freeze({
343
589
  principal,
344
590
  ...(context.sessionId === undefined ? {} : { sessionId: context.sessionId }),
@@ -348,6 +594,68 @@ function snapshotAuthorizationContext(
348
594
  })
349
595
  }
350
596
 
597
+ /** Read-only Set semantics with no mutable handle hidden behind the TypeScript interface. */
598
+ class ImmutableGrantSet implements ReadonlySet<string> {
599
+ readonly #values: Set<string>
600
+ readonly [Symbol.toStringTag] = "Set"
601
+
602
+ constructor(values: Iterable<string>) {
603
+ this.#values = new Set(values)
604
+ Object.freeze(this)
605
+ }
606
+
607
+ get size(): number {
608
+ return this.#values.size
609
+ }
610
+
611
+ has(value: string): boolean {
612
+ return this.#values.has(value)
613
+ }
614
+
615
+ entries(): ReturnType<Set<string>["entries"]> {
616
+ return this.#values.entries()
617
+ }
618
+
619
+ keys(): ReturnType<Set<string>["keys"]> {
620
+ return this.#values.keys()
621
+ }
622
+
623
+ values(): ReturnType<Set<string>["values"]> {
624
+ return this.#values.values()
625
+ }
626
+
627
+ [Symbol.iterator](): ReturnType<Set<string>[typeof Symbol.iterator]> {
628
+ return this.#values[Symbol.iterator]()
629
+ }
630
+
631
+ forEach(
632
+ callback: (value: string, valueAgain: string, set: ReadonlySet<string>) => void,
633
+ thisArg?: unknown
634
+ ): void {
635
+ for (const value of this.#values) {
636
+ callback.call(thisArg, value, value, this)
637
+ }
638
+ }
639
+
640
+ add(_value: string): never {
641
+ throw immutableGrantSetMutation()
642
+ }
643
+
644
+ delete(_value: string): never {
645
+ throw immutableGrantSetMutation()
646
+ }
647
+
648
+ clear(): never {
649
+ throw immutableGrantSetMutation()
650
+ }
651
+ }
652
+
653
+ Object.freeze(ImmutableGrantSet.prototype)
654
+
655
+ function immutableGrantSetMutation(): Error {
656
+ return new Error("[Sixb] Runtime authorization grants are immutable.")
657
+ }
658
+
351
659
  function snapshotAuthorizablePrincipal(principal: Principal): AuthorizablePrincipal {
352
660
  if (principal.type !== "user" && principal.type !== "serviceAccount") {
353
661
  throw new Error(`[Sixb] Principal type '${principal.type}' cannot hold runtime authorization.`)
@@ -403,6 +711,76 @@ function snapshotKernelOperation(operation: KernelOperation): KernelOperation {
403
711
  return Object.freeze({ type: operation.type, recoveryId: operation.recoveryId })
404
712
  }
405
713
 
714
+ /** Validate, bound, and detach exact delegated Action targets before registering authority. */
715
+ function snapshotDelegatedActionApply(
716
+ input: readonly DelegatedActionApplyTarget[]
717
+ ): readonly DelegatedActionApplyTarget[] {
718
+ if (!Array.isArray(input)) {
719
+ throw new Error("[Sixb] Delegated Action targets must be an array.")
720
+ }
721
+
722
+ const targetCount = input.length
723
+ if (targetCount > MAX_DELEGATED_ACTION_APPLY_TARGETS) {
724
+ throw new Error(
725
+ `[Sixb] Delegated authority exceeds the maximum of ${MAX_DELEGATED_ACTION_APPLY_TARGETS} Action targets.`
726
+ )
727
+ }
728
+
729
+ let identifierCharacters = 0
730
+ const targets: DelegatedActionApplyTarget[] = []
731
+ for (let index = 0; index < targetCount; index += 1) {
732
+ const authoredTarget = input[index]
733
+ if (!isRecord(authoredTarget)) {
734
+ throw new Error(`[Sixb] Delegated Action target ${index} must be an object.`)
735
+ }
736
+
737
+ const authoredActionId = authoredTarget.actionId
738
+ const authoredSubject = authoredTarget.subject
739
+ if (!isRecord(authoredSubject)) {
740
+ throw new Error(`[Sixb] Delegated Action target ${index} subject must be an ObjectRef.`)
741
+ }
742
+
743
+ const actionId = delegatedActionIdentifier(
744
+ authoredActionId,
745
+ `Delegated Action target ${index} action id`
746
+ )
747
+ const objectTypeId = delegatedActionIdentifier(
748
+ authoredSubject.objectTypeId,
749
+ `Delegated Action target ${index} subject object type id`
750
+ )
751
+ const primaryId = delegatedActionIdentifier(
752
+ authoredSubject.primaryId,
753
+ `Delegated Action target ${index} subject primary id`
754
+ )
755
+ identifierCharacters += actionId.length + objectTypeId.length + primaryId.length
756
+ if (identifierCharacters > MAX_DELEGATED_ACTION_IDENTIFIER_CHARACTERS) {
757
+ throw new Error(
758
+ `[Sixb] Delegated authority exceeds the maximum of ${MAX_DELEGATED_ACTION_IDENTIFIER_CHARACTERS} Action identifier characters.`
759
+ )
760
+ }
761
+
762
+ targets.push(
763
+ Object.freeze({
764
+ actionId,
765
+ subject: Object.freeze({ objectTypeId, primaryId }),
766
+ })
767
+ )
768
+ }
769
+
770
+ return Object.freeze(targets)
771
+ }
772
+
773
+ function delegatedActionIdentifier(value: unknown, label: string): string {
774
+ if (typeof value !== "string" || !value.trim()) {
775
+ throw new Error(`[Sixb] ${label} must not be empty.`)
776
+ }
777
+ return value
778
+ }
779
+
780
+ function isRecord(value: unknown): value is Record<string, unknown> {
781
+ return typeof value === "object" && value !== null && !Array.isArray(value)
782
+ }
783
+
406
784
  function cloneAuthorizationRef(ref: AuthorizationRef): AuthorizationRef {
407
785
  switch (ref.type) {
408
786
  case "principal":
@@ -413,6 +791,8 @@ function cloneAuthorizationRef(ref: AuthorizationRef): AuthorizationRef {
413
791
  }
414
792
  case "trustedPrimitive":
415
793
  return { type: "trustedPrimitive", primitive: { ...ref.primitive } }
794
+ case "delegated":
795
+ return { type: "delegated", delegation: { ...ref.delegation } }
416
796
  case "kernel":
417
797
  return { type: "kernel", operation: { ...ref.operation } }
418
798
  case "disabled":