@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,5 +1,10 @@
1
1
  import { canViewActionRun, isAllowed } from "../authorization"
2
2
  import type { ExecutionContext } from "../execution"
3
+ import { resolveRuntimeAuthorizationForProject } from "../execution/authorization"
4
+ import {
5
+ assertAuthorizedObjectReaderBinding,
6
+ getAuthorizedOntologyView,
7
+ } from "../execution/authorized-object-reader"
3
8
  import type { ObjectType } from "../ontology"
4
9
  import type { SixbRuntimeContext } from "../runtime/types"
5
10
  import type {
@@ -7,6 +12,8 @@ import type {
7
12
  ListActionRunsInput,
8
13
  ListActionRunsResult,
9
14
  } from "../storage/action-runs"
15
+ import { assertObjectReadOutputWithinLimit } from "../storage/objects/execution-limits"
16
+ import { type ActionDescriptor, snapshotActionDescriptor } from "./descriptor"
10
17
  import {
11
18
  type RequestActionAndWaitInput,
12
19
  type RequestActionInput,
@@ -14,6 +21,7 @@ import {
14
21
  requestAction,
15
22
  requestActionAndWait,
16
23
  } from "./request"
24
+ import { canDelegationAccessActionRun } from "./run-authorization"
17
25
  import type { ActionDefinition } from "./types"
18
26
 
19
27
  export interface ActionRunsRuntime {
@@ -24,10 +32,10 @@ export interface ActionRunsRuntime {
24
32
  }
25
33
 
26
34
  export interface ActionsRuntime {
27
- list(): readonly ActionDefinition[]
28
- getById(actionId: string): ActionDefinition | null
29
- listGlobal(): readonly ActionDefinition[]
30
- listForType(objectType: ObjectType): readonly ActionDefinition[]
35
+ list(): readonly ActionDescriptor[]
36
+ getById(actionId: string): ActionDescriptor | null
37
+ listGlobal(): readonly ActionDescriptor[]
38
+ listForType(objectType: ObjectType): readonly ActionDescriptor[]
31
39
  request(input: RequestActionInput): Promise<RequestActionResult>
32
40
  requestAndWait(input: RequestActionAndWaitInput): Promise<ActionRunRecord>
33
41
  readonly runs: ActionRunsRuntime
@@ -37,45 +45,112 @@ export function createActionsRuntime(
37
45
  runtime: SixbRuntimeContext,
38
46
  execution: ExecutionContext
39
47
  ): ActionsRuntime {
40
- const canList = (action: ActionDefinition) =>
41
- isAllowed(runtime.authorization, { kind: "action.apply", actionId: action.id }) &&
42
- (action.binding.kind === "global" ||
43
- isAllowed(runtime.authorization, {
44
- kind: "object.view",
45
- objectTypeId: action.binding.objectType.id,
46
- }))
48
+ const projectId = runtime.projectId
49
+ const runtimeAuthorization = runtime.runtimeAuthorization
50
+ const objectReader = runtime.objectReader
51
+ assertAuthorizedObjectReaderBinding({
52
+ reader: objectReader,
53
+ scope: { execution, authorization: runtimeAuthorization },
54
+ })
55
+ const authorization = resolveRuntimeAuthorizationForProject({
56
+ projectId,
57
+ runtimeAuthorization,
58
+ })
59
+ const canList = (action: ActionDefinition) => {
60
+ if (authorization.type === "denied") return false
61
+ if (authorization.type === "delegated") {
62
+ const binding = action.binding
63
+ return (
64
+ binding.kind === "object" &&
65
+ authorization.actionApply.some(
66
+ (target) =>
67
+ target.actionId === action.id && target.subject.objectTypeId === binding.objectType.id
68
+ ) &&
69
+ getAuthorizedOntologyView(objectReader).getObjectTypeById(binding.objectType.id) !== null
70
+ )
71
+ }
72
+ if (authorization.type === "unrestricted") return true
73
+ return (
74
+ isAllowed(authorization.context, { kind: "action.apply", actionId: action.id }) &&
75
+ (action.binding.kind === "global" ||
76
+ isAllowed(authorization.context, {
77
+ kind: "object.view",
78
+ objectTypeId: action.binding.objectType.id,
79
+ }))
80
+ )
81
+ }
82
+
83
+ const release = <T>(value: T): T => {
84
+ if (authorization.type === "delegated") {
85
+ assertObjectReadOutputWithinLimit(value, authorization.objectRead.limits)
86
+ }
87
+ return value
88
+ }
89
+ const describeAll = (actions: readonly ActionDefinition[]) =>
90
+ release(actions.filter(canList).map(snapshotActionDescriptor))
47
91
 
48
92
  return {
49
- list: () => runtime.actionRegistry.list().filter(canList),
93
+ list: () => describeAll(runtime.actionRegistry.list()),
50
94
  getById: (actionId) => {
51
95
  const action = runtime.actionRegistry.getById(actionId)
52
- return action && canList(action) ? action : null
96
+ return release(action && canList(action) ? snapshotActionDescriptor(action) : null)
53
97
  },
54
- listGlobal: () => runtime.actionRegistry.listGlobal().filter(canList),
55
- listForType: (objectType) => runtime.actionRegistry.listForType(objectType).filter(canList),
98
+ listGlobal: () => describeAll(runtime.actionRegistry.listGlobal()),
99
+ listForType: (objectType) =>
100
+ describeAll(
101
+ runtime.actionRegistry
102
+ .listForType(objectType)
103
+ .filter(
104
+ (action) =>
105
+ authorization.type !== "delegated" ||
106
+ (action.binding.kind === "object" && action.binding.objectType.id === objectType.id)
107
+ )
108
+ ),
56
109
  request: (input) => requestAction(runtime, execution, input),
57
110
  requestAndWait: (input) => requestActionAndWait(runtime, execution, input),
58
111
  runs: {
59
112
  getById: async (runId) => {
113
+ if (
114
+ authorization.type === "denied" ||
115
+ (authorization.type === "delegated" &&
116
+ (!authorization.delegation || authorization.actionApply.length === 0))
117
+ )
118
+ return null
60
119
  const run =
61
120
  (await runtime.storage.actionRuns?.getById({
62
- projectId: runtime.projectId,
121
+ projectId,
63
122
  id: runId,
64
123
  })) ?? null
65
- return run && canViewActionRun(runtime.authorization, run) ? run : null
124
+ return run &&
125
+ (authorization.type === "unrestricted" ||
126
+ (authorization.type === "principal" && canViewActionRun(authorization.context, run)) ||
127
+ (authorization.type === "delegated" &&
128
+ (await canDelegationAccessActionRun({
129
+ storage: runtime.storage,
130
+ projectId,
131
+ authority: authorization,
132
+ run,
133
+ }))))
134
+ ? release(run)
135
+ : null
66
136
  },
67
137
  list: (input = {}) => {
138
+ if (authorization.type === "denied" || authorization.type === "delegated") {
139
+ return Promise.resolve({ runs: [], hasMore: false, total: 0 })
140
+ }
68
141
  const storage = runtime.storage.actionRuns
69
142
  if (!storage) return Promise.resolve({ runs: [], hasMore: false, total: 0 })
70
143
  return storage.list({
71
- projectId: runtime.projectId,
72
144
  ...input,
73
- actionIds: runtime.authorization
74
- ? [...runtime.authorization.grants["apply:action"]]
75
- : undefined,
76
- objectTypeIds: runtime.authorization
77
- ? [...runtime.authorization.grants["view:object"]]
78
- : undefined,
145
+ projectId,
146
+ actionIds:
147
+ authorization.type === "principal"
148
+ ? [...authorization.context.grants["apply:action"]]
149
+ : undefined,
150
+ objectTypeIds:
151
+ authorization.type === "principal"
152
+ ? [...authorization.context.grants["view:object"]]
153
+ : undefined,
79
154
  })
80
155
  },
81
156
  },
@@ -1,4 +1,9 @@
1
- import { assertAuthorized } from "../authorization"
1
+ import { AuthorizationError, assertAuthorized, canViewActionRun } from "../authorization"
2
+ import {
3
+ getAuthorizationRef,
4
+ resolveExecutionScopeAuthorization,
5
+ resolveRuntimeAuthorizationForProject,
6
+ } from "../execution/authorization"
2
7
  import {
3
8
  createPrimitiveExecutionRecord,
4
9
  ensureExecutionRecord,
@@ -15,6 +20,9 @@ import {
15
20
  type ActionRunStorage,
16
21
  isTerminalActionRun,
17
22
  } from "../storage"
23
+ import { assertObjectReadOutputWithinLimit } from "../storage/objects/execution-limits"
24
+ import { admitDelegatedObjectAction, assertDelegatedActionTarget } from "./delegated-admission"
25
+ import { actionRunBelongsToShareGrant, canDelegationAccessActionRun } from "./run-authorization"
18
26
  import { dispatchActionRun } from "./run-dispatch"
19
27
  import { createActionRunId } from "./run-id"
20
28
  import type { ActionDefinition, ActionSubject } from "./types"
@@ -83,16 +91,46 @@ export async function requestAction(
83
91
  execution: ExecutionContext,
84
92
  input: RequestActionInput
85
93
  ): Promise<RequestActionResult> {
86
- requireActionRunStorage(runtime)
87
- const action = getActionDefinition(runtime, input.actionId)
94
+ // Capture the three process-local capabilities before caller-owned request getters can run.
95
+ const projectId = runtime.projectId
96
+ const runtimeAuthorization = runtime.runtimeAuthorization
97
+ const objectReader = runtime.objectReader
98
+ const request = snapshotActionRequest(input)
99
+ const authorization = resolveExecutionScopeAuthorization(projectId, {
100
+ execution,
101
+ authorization: runtimeAuthorization,
102
+ })
103
+ const subject = request.subject
104
+ const delegatedSubject =
105
+ authorization.type === "delegated"
106
+ ? assertDelegatedActionTarget({
107
+ authorization,
108
+ actionId: request.actionId,
109
+ subject,
110
+ })
111
+ : undefined
112
+ const action = getActionDefinition(runtime, request.actionId)
88
113
  const actionId = action.id
89
- const rawParams: Record<string, unknown> = input.params ?? {}
90
- const subject: ActionSubject = input.subject ?? { kind: "none" }
91
-
92
- assertAuthorized(runtime, { kind: "action.apply", actionId })
93
- if (action.binding.kind === "object") {
114
+ const rawParams = request.params
115
+
116
+ if (authorization.type === "delegated") {
117
+ await admitDelegatedObjectAction({
118
+ objectReader,
119
+ runtimeAuthorization,
120
+ execution,
121
+ authorization,
122
+ action,
123
+ subject: delegatedSubject!,
124
+ })
125
+ } else {
126
+ assertAuthorized({ projectId, runtimeAuthorization }, { kind: "action.apply", actionId })
127
+ }
128
+ if (authorization.type !== "delegated" && action.binding.kind === "object") {
94
129
  // Object actions also require visibility of the subject's object type.
95
- assertAuthorized(runtime, { kind: "object.view", objectTypeId: action.binding.objectType.id })
130
+ assertAuthorized(
131
+ { projectId, runtimeAuthorization },
132
+ { kind: "object.view", objectTypeId: action.binding.objectType.id }
133
+ )
96
134
  }
97
135
 
98
136
  validateActionSubject(action, subject)
@@ -107,22 +145,49 @@ export async function requestAction(
107
145
 
108
146
  const actionParams = normalizeActionParams(runtime, action.params, rawParams, pathPrefix)
109
147
 
148
+ // `dispatchActionRun` checks an existing run id before creating its durable execution. Keep
149
+ // process-local delegation outside that oracle unless it carries durable grant provenance.
150
+ void getAuthorizationRef(runtimeAuthorization)
151
+
110
152
  return dispatchActionRun({
111
153
  errorReporterHost: runtime,
112
- projectId: runtime.projectId,
154
+ projectId,
113
155
  storage: runtime.storage,
114
156
  queue: runtime.queues.actions,
115
157
  events: runtime.events,
116
158
  actionId,
117
159
  subject,
118
160
  params: actionParams,
119
- runId: input.runId,
161
+ runId: request.runId,
162
+ ...(authorization.type === "delegated"
163
+ ? {
164
+ assertCanReuseExisting: async (
165
+ storage: SixbRuntimeContext["storage"],
166
+ existing: ActionRunRecord
167
+ ) => {
168
+ if (
169
+ !authorization.delegation ||
170
+ !(await actionRunBelongsToShareGrant({
171
+ storage,
172
+ projectId,
173
+ run: existing,
174
+ grantId: authorization.delegation.grantId,
175
+ }))
176
+ ) {
177
+ throw new AuthorizationError(
178
+ `apply:action:${actionId}`,
179
+ "[Sixb] Delegated authority cannot reuse this Action run."
180
+ )
181
+ }
182
+ },
183
+ }
184
+ : {}),
120
185
  createExecution: async (executionId, runId) => {
121
186
  const caller = await ensureExecutionRecord(
122
187
  runtime.storage.executions,
123
188
  executionRecordInputFromRuntime({
124
189
  execution,
125
- runtimeAuthorization: runtime.runtimeAuthorization,
190
+ runtimeAuthorization,
126
191
  })
127
192
  )
128
193
  return createPrimitiveExecutionRecord({
@@ -134,6 +199,24 @@ export async function requestAction(
134
199
  })
135
200
  }
136
201
 
202
+ function snapshotActionRequest(input: RequestActionInput): {
203
+ readonly actionId: string
204
+ readonly subject: ActionSubject
205
+ readonly params: Record<string, unknown>
206
+ readonly runId?: string
207
+ } {
208
+ const actionId = input.actionId
209
+ const subject = input.subject
210
+ const params = input.params
211
+ const runId = input.runId
212
+ return structuredClone({
213
+ actionId,
214
+ subject: subject ?? { kind: "none" },
215
+ params: params ?? {},
216
+ ...(runId === undefined ? {} : { runId }),
217
+ })
218
+ }
219
+
137
220
  export async function requestActionAndWait(
138
221
  runtime: SixbRuntimeContext,
139
222
  execution: ExecutionContext,
@@ -158,9 +241,28 @@ export async function waitForActionRun(
158
241
  runtime: SixbRuntimeContext,
159
242
  input: WaitForActionRunInput
160
243
  ): Promise<ActionRunRecord> {
244
+ const projectId = runtime.projectId
245
+ const runtimeAuthorization = runtime.runtimeAuthorization
246
+ const request = {
247
+ runId: input.runId,
248
+ timeoutMs: input.timeoutMs,
249
+ signal: input.signal,
250
+ }
251
+ const authorization = resolveRuntimeAuthorizationForProject({
252
+ projectId,
253
+ runtimeAuthorization,
254
+ })
255
+ if (authorization.type === "denied") {
256
+ throw new AuthorizationError(
257
+ "runtime:unbound",
258
+ "[Sixb] Protected operations require registered runtime authorization for this project."
259
+ )
260
+ }
261
+ // Process-local delegation cannot poll durable runs without originating grant provenance.
262
+ if (authorization.type === "delegated") void getAuthorizationRef(runtimeAuthorization)
161
263
  const actionRuns = requireActionRunStorage(runtime)
162
- const timeoutMs = input.timeoutMs ?? DEFAULT_ACTION_WAIT_TIMEOUT_MS
163
- const signal = input.signal
264
+ const timeoutMs = request.timeoutMs ?? DEFAULT_ACTION_WAIT_TIMEOUT_MS
265
+ const signal = request.signal
164
266
  const startedAt = Date.now()
165
267
 
166
268
  if (signal?.aborted) {
@@ -213,10 +315,25 @@ export async function waitForActionRun(
213
315
  checking = true
214
316
  try {
215
317
  const record = await actionRuns.getById({
216
- projectId: runtime.projectId,
217
- id: input.runId,
318
+ projectId,
319
+ id: request.runId,
218
320
  })
219
- if (record && isTerminalActionRun(record)) {
321
+ const visible =
322
+ record &&
323
+ (authorization.type === "unrestricted" ||
324
+ (authorization.type === "principal" &&
325
+ canViewActionRun(authorization.context, record)) ||
326
+ (authorization.type === "delegated" &&
327
+ (await canDelegationAccessActionRun({
328
+ storage: runtime.storage,
329
+ projectId,
330
+ authority: authorization,
331
+ run: record,
332
+ }))))
333
+ if (visible && isTerminalActionRun(record)) {
334
+ if (authorization.type === "delegated") {
335
+ assertObjectReadOutputWithinLimit(record, authorization.objectRead.limits)
336
+ }
220
337
  cleanup()
221
338
  resolve(record)
222
339
  return
@@ -235,7 +352,7 @@ export async function waitForActionRun(
235
352
 
236
353
  timer = setTimeout(
237
354
  () => {
238
- rejectWith(new ActionRunTimeoutError({ runId: input.runId, timeoutMs }))
355
+ rejectWith(new ActionRunTimeoutError({ runId: request.runId, timeoutMs }))
239
356
  },
240
357
  Math.max(0, timeoutMs - (Date.now() - startedAt))
241
358
  )
@@ -250,7 +367,7 @@ export async function waitForActionRun(
250
367
  events.some(
251
368
  (event) =>
252
369
  (event.type === "action.completed" || event.type === "action.failed") &&
253
- event.payload.runId === input.runId
370
+ event.payload.runId === request.runId
254
371
  )
255
372
  ) {
256
373
  void check()
@@ -0,0 +1,53 @@
1
+ import type { ResolvedRuntimeAuthorization } from "../execution/authorization"
2
+ import type { Storage } from "../storage"
3
+ import type { ActionRunRecord } from "../storage/action-runs"
4
+ import { findPrimitiveParentRequestExecution } from "../storage/executions/run-link"
5
+
6
+ /** Check both current grant scope and immutable request provenance for a delegated Action run. */
7
+ export async function canDelegationAccessActionRun(input: {
8
+ readonly storage: Storage
9
+ readonly projectId: string
10
+ readonly authority: Extract<ResolvedRuntimeAuthorization, { readonly type: "delegated" }>
11
+ readonly run: ActionRunRecord
12
+ }): Promise<boolean> {
13
+ const subject = input.run.subject
14
+ if (
15
+ !input.authority.delegation ||
16
+ subject.kind !== "object" ||
17
+ !input.authority.actionApply.some(
18
+ (target) =>
19
+ target.actionId === input.run.actionId &&
20
+ target.subject.objectTypeId === subject.objectTypeId &&
21
+ target.subject.primaryId === subject.primaryId
22
+ )
23
+ ) {
24
+ return false
25
+ }
26
+ return actionRunBelongsToShareGrant({
27
+ storage: input.storage,
28
+ projectId: input.projectId,
29
+ run: input.run,
30
+ grantId: input.authority.delegation.grantId,
31
+ })
32
+ }
33
+
34
+ /** Session ids remain audit provenance; the issued grant is the durable capability identity. */
35
+ export async function actionRunBelongsToShareGrant(input: {
36
+ readonly storage: Storage
37
+ readonly projectId: string
38
+ readonly run: ActionRunRecord
39
+ readonly grantId: string
40
+ }): Promise<boolean> {
41
+ const parent = await findPrimitiveParentRequestExecution({
42
+ executions: input.storage.executions,
43
+ projectId: input.projectId,
44
+ executionId: input.run.executionId,
45
+ primitive: { kind: "action", id: input.run.actionId, runId: input.run.id },
46
+ })
47
+ const authorization = parent?.authorizationRef
48
+ return (
49
+ authorization?.type === "delegated" &&
50
+ authorization.delegation.kind === "share" &&
51
+ authorization.delegation.grantId === input.grantId
52
+ )
53
+ }
@@ -32,6 +32,8 @@ interface DispatchActionRunInput {
32
32
  readonly params: ActionRunParams
33
33
  readonly runId?: string
34
34
  readonly createExecution: (executionId: string, runId: string) => Promise<CreateExecutionInput>
35
+ /** Runs before payload comparison or retry so an existing run cannot cross authority owners. */
36
+ readonly assertCanReuseExisting?: (storage: Storage, run: ActionRunRecord) => void | Promise<void>
35
37
  }
36
38
 
37
39
  interface PreparedActionRun {
@@ -73,7 +75,10 @@ async function persistActionRun(
73
75
  ): Promise<PersistedActionRun> {
74
76
  const actionRuns = requireActionRunStorage(input.storage)
75
77
  const existing = await actionRuns.getById({ projectId: input.projectId, id: request.runId })
76
- if (existing) return reuseActionRun(input, existing)
78
+ if (existing) {
79
+ await input.assertCanReuseExisting?.(input.storage, existing)
80
+ return reuseActionRun(input, existing)
81
+ }
77
82
 
78
83
  const execution = await input.createExecution(`exec_${randomUUID()}`, request.runId)
79
84
  const queuedAt = new Date()
@@ -86,6 +91,7 @@ async function persistActionRun(
86
91
  id: request.runId,
87
92
  })
88
93
  if (raced) {
94
+ await input.assertCanReuseExisting?.(tx, raced)
89
95
  assertExistingRunMatchesRequest(raced, input)
90
96
  return { publish: false, run: raced }
91
97
  }
@@ -109,6 +115,7 @@ async function persistActionRun(
109
115
  if (!(error instanceof ActionRunError)) throw error
110
116
  const raced = await actionRuns.getById({ projectId: input.projectId, id: request.runId })
111
117
  if (!raced) throw error
118
+ await input.assertCanReuseExisting?.(input.storage, raced)
112
119
  assertExistingRunMatchesRequest(raced, input)
113
120
  return { publish: false, run: raced }
114
121
  }