@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
@@ -0,0 +1,40 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/actions/descriptor.ts", "../src/actions/execution.ts", "../src/runtime/ai-cost.ts", "../src/runtime/ai-usage.ts", "../src/agents/ids.ts", "../src/agents/request.ts", "../src/agents/context-resolution.ts", "../src/agents/dispatch.ts", "../src/agents/retired-config.ts", "../src/agents/execution.ts", "../src/ai-usage/execution.ts", "../src/blob-storage/execution.ts", "../src/connectors/connections/execution.ts", "../src/datasets/execution.ts", "../src/events/execution.ts", "../src/logging/execution.ts", "../src/objects/execution.ts", "../src/pipelines/execution.ts", "../src/projections/execution.ts", "../src/rules/execution.ts", "../src/schedules/execution.ts", "../src/shares/execution.ts", "../src/syncs/execution.ts", "../src/workflows/errors.ts", "../src/workflows/run-dispatch.ts", "../src/workflows/validation.ts", "../src/workflows/snapshot.ts", "../src/workflows/request.ts", "../src/workflows/execution.ts", "../src/runtime/sixb.ts", "../src/execution/agent.ts"],
4
+ "sourcesContent": [
5
+ "import type { ActionDefinition, ActionParamsConfig } from \"./types\"\n\ntype DeepReadonly<T> = T extends object ? { readonly [TKey in keyof T]: DeepReadonly<T[TKey]> } : T\n\nexport type ActionDescriptorBinding =\n | { readonly kind: \"global\" }\n | { readonly kind: \"object\"; readonly objectTypeId: string }\n\nexport type ActionParamDescriptor = DeepReadonly<ActionParamsConfig[string]>\n\nexport interface ActionPhaseDescriptor {\n readonly validate: boolean\n readonly writeback: boolean\n readonly edits: boolean\n readonly effects: boolean\n}\n\n/** Immutable metadata exposed by the execution-bound Actions catalog. */\nexport interface ActionDescriptor<TId extends string = string> {\n readonly id: TId\n readonly description?: string\n readonly binding: ActionDescriptorBinding\n readonly params: Readonly<Record<string, ActionParamDescriptor>>\n readonly phases: ActionPhaseDescriptor\n}\n\n/** Project an executable definition into inert, detached public metadata. */\nexport function snapshotActionDescriptor(action: ActionDefinition): ActionDescriptor {\n const params = Object.fromEntries(\n Object.entries(action.params).map(([id, config]) => [id, structuredClone(config)])\n ) as Record<string, ActionParamDescriptor>\n\n return deepFreeze({\n id: action.id,\n ...(action.description === undefined ? {} : { description: action.description }),\n binding:\n action.binding.kind === \"global\"\n ? { kind: \"global\" as const }\n : { kind: \"object\" as const, objectTypeId: action.binding.objectType.id },\n params,\n phases: {\n validate: action.phases.validate.length > 0,\n writeback: action.phases.writeback !== undefined,\n edits: action.phases.edits !== undefined,\n effects: action.phases.effects !== undefined,\n },\n })\n}\n\nfunction deepFreeze<T>(value: T, seen: Set<object> = new Set()): T {\n if (typeof value !== \"object\" || value === null || seen.has(value)) return value\n seen.add(value)\n for (const key of Reflect.ownKeys(value)) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key)\n if (descriptor && \"value\" in descriptor) deepFreeze(descriptor.value, seen)\n }\n return Object.freeze(value)\n}\n",
6
+ "import { canViewActionRun, isAllowed } from \"../authorization\"\nimport type { ExecutionContext } from \"../execution\"\nimport { resolveRuntimeAuthorizationForProject } from \"../execution/authorization\"\nimport {\n assertAuthorizedObjectReaderBinding,\n getAuthorizedOntologyView,\n} from \"../execution/authorized-object-reader\"\nimport type { ObjectType } from \"../ontology\"\nimport type { SixbRuntimeContext } from \"../runtime/types\"\nimport type {\n ActionRunRecord,\n ListActionRunsInput,\n ListActionRunsResult,\n} from \"../storage/action-runs\"\nimport { assertObjectReadOutputWithinLimit } from \"../storage/objects/execution-limits\"\nimport { type ActionDescriptor, snapshotActionDescriptor } from \"./descriptor\"\nimport {\n type RequestActionAndWaitInput,\n type RequestActionInput,\n type RequestActionResult,\n requestAction,\n requestActionAndWait,\n} from \"./request\"\nimport { canDelegationAccessActionRun } from \"./run-authorization\"\nimport type { ActionDefinition } from \"./types\"\n\nexport interface ActionRunsRuntime {\n getById(runId: string): Promise<ActionRunRecord | null>\n list(\n input?: Omit<ListActionRunsInput, \"projectId\" | \"actionIds\" | \"objectTypeIds\">\n ): Promise<ListActionRunsResult>\n}\n\nexport interface ActionsRuntime {\n list(): readonly ActionDescriptor[]\n getById(actionId: string): ActionDescriptor | null\n listGlobal(): readonly ActionDescriptor[]\n listForType(objectType: ObjectType): readonly ActionDescriptor[]\n request(input: RequestActionInput): Promise<RequestActionResult>\n requestAndWait(input: RequestActionAndWaitInput): Promise<ActionRunRecord>\n readonly runs: ActionRunsRuntime\n}\n\nexport function createActionsRuntime(\n runtime: SixbRuntimeContext,\n execution: ExecutionContext\n): ActionsRuntime {\n const projectId = runtime.projectId\n const runtimeAuthorization = runtime.runtimeAuthorization\n const objectReader = runtime.objectReader\n assertAuthorizedObjectReaderBinding({\n reader: objectReader,\n scope: { execution, authorization: runtimeAuthorization },\n })\n const authorization = resolveRuntimeAuthorizationForProject({\n projectId,\n runtimeAuthorization,\n })\n const canList = (action: ActionDefinition) => {\n if (authorization.type === \"denied\") return false\n if (authorization.type === \"delegated\") {\n const binding = action.binding\n return (\n binding.kind === \"object\" &&\n authorization.actionApply.some(\n (target) =>\n target.actionId === action.id && target.subject.objectTypeId === binding.objectType.id\n ) &&\n getAuthorizedOntologyView(objectReader).getObjectTypeById(binding.objectType.id) !== null\n )\n }\n if (authorization.type === \"unrestricted\") return true\n return (\n isAllowed(authorization.context, { kind: \"action.apply\", actionId: action.id }) &&\n (action.binding.kind === \"global\" ||\n isAllowed(authorization.context, {\n kind: \"object.view\",\n objectTypeId: action.binding.objectType.id,\n }))\n )\n }\n\n const release = <T>(value: T): T => {\n if (authorization.type === \"delegated\") {\n assertObjectReadOutputWithinLimit(value, authorization.objectRead.limits)\n }\n return value\n }\n const describeAll = (actions: readonly ActionDefinition[]) =>\n release(actions.filter(canList).map(snapshotActionDescriptor))\n\n return {\n list: () => describeAll(runtime.actionRegistry.list()),\n getById: (actionId) => {\n const action = runtime.actionRegistry.getById(actionId)\n return release(action && canList(action) ? snapshotActionDescriptor(action) : null)\n },\n listGlobal: () => describeAll(runtime.actionRegistry.listGlobal()),\n listForType: (objectType) =>\n describeAll(\n runtime.actionRegistry\n .listForType(objectType)\n .filter(\n (action) =>\n authorization.type !== \"delegated\" ||\n (action.binding.kind === \"object\" && action.binding.objectType.id === objectType.id)\n )\n ),\n request: (input) => requestAction(runtime, execution, input),\n requestAndWait: (input) => requestActionAndWait(runtime, execution, input),\n runs: {\n getById: async (runId) => {\n if (\n authorization.type === \"denied\" ||\n (authorization.type === \"delegated\" &&\n (!authorization.delegation || authorization.actionApply.length === 0))\n )\n return null\n const run =\n (await runtime.storage.actionRuns?.getById({\n projectId,\n id: runId,\n })) ?? null\n return run &&\n (authorization.type === \"unrestricted\" ||\n (authorization.type === \"principal\" && canViewActionRun(authorization.context, run)) ||\n (authorization.type === \"delegated\" &&\n (await canDelegationAccessActionRun({\n storage: runtime.storage,\n projectId,\n authority: authorization,\n run,\n }))))\n ? release(run)\n : null\n },\n list: (input = {}) => {\n if (authorization.type === \"denied\" || authorization.type === \"delegated\") {\n return Promise.resolve({ runs: [], hasMore: false, total: 0 })\n }\n const storage = runtime.storage.actionRuns\n if (!storage) return Promise.resolve({ runs: [], hasMore: false, total: 0 })\n return storage.list({\n ...input,\n projectId,\n actionIds:\n authorization.type === \"principal\"\n ? [...authorization.context.grants[\"apply:action\"]]\n : undefined,\n objectTypeIds:\n authorization.type === \"principal\"\n ? [...authorization.context.grants[\"view:object\"]]\n : undefined,\n })\n },\n },\n }\n}\n",
7
+ "import type { AiCostStorage, AiCostSummary } from \"../storage/ai-cost\"\n\n/** Resolve preferred cost summaries in input order without inventing unavailable accounting. */\nexport async function resolveExecutionCosts(input: {\n readonly storage: AiCostStorage | undefined\n readonly projectId: string\n readonly executionIds: readonly string[]\n}): Promise<readonly (AiCostSummary | undefined)[]> {\n if (input.executionIds.length === 0) return []\n if (!input.storage) return input.executionIds.map(() => undefined)\n return input.storage.summarizeExecutions({\n projectId: input.projectId,\n executionIds: input.executionIds,\n })\n}\n",
8
+ "import type { AiModelCallUsage, AiUsageStorage } from \"../storage/ai-usage\"\n\n/** Resolve execution usage for runtime views without exposing the accounting provider. */\nexport async function resolveExecutionUsage(input: {\n readonly storage: AiUsageStorage | undefined\n readonly projectId: string\n readonly executionIds: readonly string[]\n}): Promise<readonly (AiModelCallUsage | undefined)[]> {\n if (input.executionIds.length === 0) return []\n if (!input.storage) return input.executionIds.map(() => undefined)\n\n const summaries = await input.storage.summarizeExecutions({\n projectId: input.projectId,\n executionIds: input.executionIds,\n })\n return summaries.map((summary) => (summary.modelCallCount === 0 ? undefined : summary.usage))\n}\n",
9
+ "import { createHash, randomUUID } from \"node:crypto\"\n\n/**\n * Id helpers for agent persistence. Threads, the run id, and the user (trigger) message are minted\n * by the trigger; the queued run is persisted with the user message, and the assistant message id\n * is minted when the turn finalizes. Prefixes make ids self-describing in logs.\n */\n\nexport function createAgentThreadId(): string {\n return `agt_thr_${randomUUID()}`\n}\n\nexport function createAgentRunId(): string {\n return `agt_run_${randomUUID()}`\n}\n\n/** One stable child identity per parent-selected spawn key. */\nexport function createSubagentRunId(parentRunId: string, spawnKey: string): string {\n const digest = createHash(\"sha256\")\n .update(parentRunId)\n .update(\"\\0\")\n .update(spawnKey)\n .digest(\"hex\")\n return `agt_run_child_${digest}`\n}\n\n/** Stable execution identity paired with a deterministic child run. */\nexport function createSubagentExecutionId(runId: string): string {\n return `exec_${runId}`\n}\n\nexport function createAgentMessageId(): string {\n return `agt_msg_${randomUUID()}`\n}\n\n/** One deterministic context-checkpoint identity per conversational run. */\nexport function agentContextCheckpointId(runId: string): string {\n return `agt_ctx_${runId}`\n}\n\n/** A queue delivery's fencing token for writes to an `agent_runs` record. */\nexport function createAgentRunExecutionToken(): string {\n return `agt_exec_${randomUUID()}`\n}\n",
10
+ "import { randomUUID } from \"node:crypto\"\nimport type { Principal } from \"../auth\"\nimport { SYSTEM_PRINCIPAL } from \"../auth\"\nimport { snapshotRequesterGroupIds } from \"../auth/attribution\"\nimport { assertAuthorized } from \"../authorization\"\nimport type { FileRef } from \"../blob-storage\"\nimport {\n canInheritAgentRequestAuthorization,\n createInheritedAgentExecutionRecord,\n} from \"../execution/agent\"\nimport { resolveExecutionScopeAuthorization } from \"../execution/authorization\"\nimport { ensureExecutionRecord, executionRecordInputFromRuntime } from \"../execution/durable\"\nimport type { ExecutionContext } from \"../execution/types\"\nimport type { LanguageModelCatalog, LanguageModelRef } from \"../models\"\nimport { isModelReasoning } from \"../models/language-model\"\nimport type { SixbRuntimeContext } from \"../runtime/types\"\nimport {\n type AgentStorage,\n AgentStorageError,\n type AgentThreadRecord,\n type ConversationAgentRunRecord,\n type ConversationAgentRunSpec,\n} from \"../storage/agents\"\nimport {\n aiLimitSubjectsFromAttribution,\n aiUsageLimitExceededError,\n aiUsageLimitUnavailableError,\n applicableAiLimitPolicyStatuses,\n} from \"../storage/ai-limits/enforcement\"\nimport type { AiLimitPolicyStatus } from \"../storage/ai-limits/types\"\nimport type { CreateExecutionInput } from \"../storage/executions\"\nimport type { AgentContextEntryInput } from \"./context\"\nimport { resolveAgentContextParts } from \"./context-resolution\"\nimport { dispatchQueuedAgentRuns } from \"./dispatch\"\nimport { AgentRequestError } from \"./errors\"\nimport { createAgentMessageId, createAgentRunId, createAgentThreadId } from \"./ids\"\nimport { assertNoAgentSelector } from \"./retired-config\"\nimport { publishAgentRunActivity } from \"./streams\"\nimport { AGENT_REASONING_LEVELS, type AgentReasoningLevel } from \"./types\"\n\nexport interface RequestAgentRunInput {\n /** The user's message that triggers the turn. */\n readonly text: string\n /** Blob-backed files attached to the trigger message. */\n readonly attachments?: readonly FileRef[]\n /** Structured page/object context snapshotted onto the triggering user message. */\n readonly context?: readonly AgentContextEntryInput[]\n /** Continue an existing thread. Omitted → a fresh thread is created for this agent. */\n readonly threadId?: string\n /** Configured language model selected for this turn. Omitted uses the agent default. */\n readonly model?: LanguageModelRef\n /** Provider-neutral reasoning effort selected for this turn. */\n readonly reasoning?: AgentReasoningLevel\n /** Title to stamp on the thread when one is created. */\n readonly title?: string\n /** Explicit id for the trigger (user) message. Defaults to a generated id. */\n readonly messageId?: string\n /** Caller principal for privileged integrations; scoped runtimes use their authorization principal. */\n readonly principal?: Principal\n}\n\nexport interface RequestAgentRunResult {\n /** The durable queued run exactly as it was created (`status: \"queued\"`, attempt 0). */\n readonly run: ConversationAgentRunRecord\n /** The enqueued job id, when the queue returns one. */\n readonly jobId?: string\n /** Whether this call created the thread. */\n readonly createdThread: boolean\n}\n\n/**\n * Trigger an agent turn.\n *\n * The user message and a `queued` run are persisted atomically before the queue intent is\n * published. This makes accepted work visible immediately and lets refresh reconstruct queue state.\n * The run's thread claim is the single-flight authority; a second request receives\n * `active_run_exists` before it can leave an orphan message.\n */\nexport async function requestAgentRun(\n runtime: SixbRuntimeContext,\n execution: ExecutionContext,\n models: LanguageModelCatalog | undefined,\n input: RequestAgentRunInput\n): Promise<RequestAgentRunResult> {\n const authority = resolveExecutionScopeAuthorization(runtime.projectId, {\n execution,\n authorization: runtime.runtimeAuthorization,\n })\n assertNoAgentSelector(input)\n assertAuthorized(runtime, { kind: \"agent.run\" })\n assertRequestAuthorityCanRunAgent(runtime)\n const spec = resolveConversationRunSpec({ models, input })\n\n // Resolve context before creating a thread: invalid or inaccessible references must not leave an\n // empty conversation behind. The resulting parts are the exact snapshot persisted below.\n const contextParts = await resolveAgentContextParts(runtime, input.context)\n\n const agents = requireAgentStorage(runtime)\n const projectId = runtime.projectId\n // Attribution comes from the exact capability/execution pair, never the optional context cache\n // on the runtime. `input.principal` remains available to unrestricted server integrations that\n // have already authenticated their request.\n const principal =\n authority.type === \"principal\"\n ? authority.context.principal\n : (input.principal ?? SYSTEM_PRINCIPAL)\n const runId = createAgentRunId()\n const durableExecution = await prepareDurableAgentExecution(runtime, execution, runId)\n const requesterGroupIds = durableExecution.requestedBy\n ? await snapshotRequesterGroupIds({\n auth: runtime.storage.auth,\n projectId,\n principal: durableExecution.requestedBy,\n })\n : []\n await assertAiLimitPreflight(runtime, durableExecution, requesterGroupIds)\n\n const { thread, createdThread } = await resolveThread(agents, {\n projectId,\n threadId: input.threadId,\n title: input.title,\n principal,\n })\n\n // Fast single-flight check for a clear error. `runs.create` below is the atomic authority.\n if (thread.activeRunId !== null) {\n throw new AgentRequestError(\n \"active_run_exists\",\n `[Sixb] Agent thread '${thread.id}' already has an active run '${thread.activeRunId}'.`\n )\n }\n const triggerMessageId = input.messageId ?? createAgentMessageId()\n let run: ConversationAgentRunRecord\n try {\n run = await runtime.storage.transaction(async (tx) => {\n const agents = tx.agents\n if (!agents) {\n throw new AgentRequestError(\n \"storage_unavailable\",\n \"[Sixb] Agent storage is not configured.\"\n )\n }\n await tx.executions.create(durableExecution)\n await agents.messages.append({\n id: triggerMessageId,\n projectId,\n threadId: thread.id,\n runId: null,\n role: \"user\",\n parts: [\n ...contextParts,\n { type: \"text\", text: input.text },\n ...(input.attachments ?? []).map((fileRef) => ({ type: \"file\" as const, fileRef })),\n ],\n authorPrincipal: principal,\n })\n return agents.runs.create({\n id: runId,\n projectId,\n executionId: durableExecution.id,\n threadId: thread.id,\n triggerMessageId,\n spec,\n requesterGroupIds,\n })\n })\n } catch (error) {\n if (error instanceof AgentStorageError && error.code === \"active_run_exists\") {\n throw new AgentRequestError(\"active_run_exists\", error.message)\n }\n throw error\n }\n\n await publishRunActivity(runtime, run)\n const jobId = await dispatchAgentRun(runtime, agents, runId)\n\n return {\n run,\n ...(jobId ? { jobId } : {}),\n createdThread,\n }\n}\n\n/** Retry a failed turn as a new child execution while reusing its immutable trigger message. */\nexport async function retryAgentRun(\n runtime: SixbRuntimeContext,\n execution: ExecutionContext,\n models: LanguageModelCatalog | undefined,\n failedRun: ConversationAgentRunRecord\n): Promise<RequestAgentRunResult> {\n resolveExecutionScopeAuthorization(runtime.projectId, {\n execution,\n authorization: runtime.runtimeAuthorization,\n })\n assertAuthorized(runtime, { kind: \"agent.run\" })\n assertRequestAuthorityCanRunAgent(runtime)\n if (failedRun.status !== \"failed\") {\n throw new AgentRequestError(\n \"run_not_retryable\",\n `[Sixb] Only failed Agent runs can be retried.`\n )\n }\n\n const agents = requireAgentStorage(runtime)\n const thread = await agents.threads.getById({\n projectId: runtime.projectId,\n id: failedRun.threadId,\n })\n if (!thread) {\n throw new AgentRequestError(\n \"thread_not_found\",\n `[Sixb] Agent thread '${failedRun.threadId}' was not found.`\n )\n }\n const runId = createAgentRunId()\n const durableExecution = await prepareDurableAgentExecution(runtime, execution, runId)\n const requesterGroupIds = durableExecution.requestedBy\n ? await snapshotRequesterGroupIds({\n auth: runtime.storage.auth,\n projectId: runtime.projectId,\n principal: durableExecution.requestedBy,\n })\n : []\n await assertAiLimitPreflight(runtime, durableExecution, requesterGroupIds)\n const run = await runtime.storage.transaction(async (tx) => {\n const agents = tx.agents\n if (!agents) {\n throw new AgentRequestError(\"storage_unavailable\", \"[Sixb] Agent storage is not configured.\")\n }\n await agents.messages.deleteByRunId({\n projectId: runtime.projectId,\n threadId: failedRun.threadId,\n runId: failedRun.id,\n })\n await tx.executions.create(durableExecution)\n return agents.runs.create({\n id: runId,\n projectId: runtime.projectId,\n executionId: durableExecution.id,\n threadId: failedRun.threadId,\n triggerMessageId: failedRun.triggerMessageId,\n spec:\n failedRun.spec ??\n resolveConversationRunSpec({\n models,\n input: {},\n }),\n requesterGroupIds,\n })\n })\n await publishRunActivity(runtime, run)\n const jobId = await dispatchAgentRun(runtime, agents, runId)\n return { run, ...(jobId ? { jobId } : {}), createdThread: false }\n}\n\nasync function assertAiLimitPreflight(\n runtime: SixbRuntimeContext,\n execution: CreateExecutionInput,\n requesterGroupIds: readonly string[]\n): Promise<void> {\n const limits = runtime.storage.aiLimits\n if (!limits) throw aiUsageLimitUnavailableError([\"limitStorageUnavailable\"])\n\n const subjects = aiLimitSubjectsFromAttribution(execution.requestedBy, requesterGroupIds)\n let applicable: readonly AiLimitPolicyStatus[]\n try {\n applicable = applicableAiLimitPolicyStatuses(\n await limits.listPolicyStatuses({ projectId: runtime.projectId }),\n subjects\n )\n } catch {\n throw aiUsageLimitUnavailableError([\"limitStorageUnavailable\"])\n }\n\n const unavailable = applicable.filter((status) => status.accountingStatus === \"unavailable\")\n if (unavailable.length > 0) {\n throw aiUsageLimitUnavailableError([\"incompleteAccounting\"])\n }\n const exhausted = applicable.filter((status) => status.exhausted)\n if (exhausted.length > 0) {\n const resetAt = new Date(\n Math.min(...exhausted.map((status) => status.period.resetAt.getTime()))\n )\n throw aiUsageLimitExceededError(resetAt)\n }\n}\n\nfunction resolveConversationRunSpec(input: {\n readonly models?: LanguageModelCatalog\n readonly input: Pick<RequestAgentRunInput, \"model\" | \"reasoning\">\n}): ConversationAgentRunSpec {\n if (!input.models) {\n throw new AgentRequestError(\n \"model_not_found\",\n \"[Sixb] Configure models.language before starting the Agent.\"\n )\n }\n const selected = input.input.model ?? input.models.default\n const model = input.models.getByRef(selected)\n if (model === null) {\n throw new AgentRequestError(\n \"model_not_found\",\n `[Sixb] Language model '${selected.provider}/${selected.modelId}' is not in the project model catalog.`\n )\n }\n\n const reasoning = input.input.reasoning\n if (reasoning !== undefined && !isModelReasoning(reasoning)) {\n throw new AgentRequestError(\n \"invalid_model_selection\",\n `[Sixb] Agent reasoning must be one of: ${AGENT_REASONING_LEVELS.join(\", \")}, or a nonnegative budgetTokens object.`\n )\n }\n\n return Object.freeze({\n model: Object.freeze({ provider: selected.provider, modelId: selected.modelId }),\n ...(reasoning === undefined ? {} : { reasoning }),\n })\n}\n\nasync function prepareDurableAgentExecution(\n runtime: SixbRuntimeContext,\n execution: ExecutionContext,\n runId: string\n): Promise<CreateExecutionInput> {\n const parent = await ensureExecutionRecord(\n runtime.storage.executions,\n executionRecordInputFromRuntime({\n execution,\n runtimeAuthorization: runtime.runtimeAuthorization,\n })\n )\n return createInheritedAgentExecutionRecord({\n id: `exec_${randomUUID()}`,\n parent,\n runId,\n })\n}\n\nfunction assertRequestAuthorityCanRunAgent(runtime: SixbRuntimeContext): void {\n if (!canInheritAgentRequestAuthorization(runtime.runtimeAuthorization)) {\n throw new AgentRequestError(\n \"authority_not_inheritable\",\n \"[Sixb] The Agent requires an authenticated user request or disabled authorization.\"\n )\n }\n}\n\nasync function dispatchAgentRun(\n runtime: SixbRuntimeContext,\n agents: AgentStorage,\n runId: string\n): Promise<string | undefined> {\n // The queued run is the durable dispatch intent. Publication is best-effort; workers reconcile\n // it with the same deterministic queue job id if the queue is temporarily unavailable.\n try {\n const dispatch = await dispatchQueuedAgentRuns({\n projectId: runtime.projectId,\n storage: agents,\n queue: runtime.queues.agents,\n runIds: [runId],\n })\n const failure = dispatch.failures[0]\n if (failure) {\n console.error(\n `[Sixb] Could not dispatch queued agent run '${runId}'; retrying later.`,\n failure.error\n )\n }\n return dispatch.dispatched[0]?.jobId\n } catch (error) {\n console.error(`[Sixb] Could not dispatch queued agent run '${runId}'; retrying later.`, error)\n return undefined\n }\n}\n\n/** Activity delivery is observational: durable run admission remains successful if the feed is down. */\nasync function publishRunActivity(\n runtime: SixbRuntimeContext,\n run: ConversationAgentRunRecord\n): Promise<void> {\n try {\n await publishAgentRunActivity(runtime.broker, run)\n } catch (error) {\n console.error(`[Sixb] Agent run '${run.id}' activity stream publish failed:`, error)\n }\n}\n\nasync function resolveThread(\n agents: AgentStorage,\n params: {\n readonly projectId: string\n readonly threadId?: string\n readonly title?: string\n readonly principal: Principal\n }\n): Promise<{ thread: AgentThreadRecord; createdThread: boolean }> {\n if (params.threadId) {\n const existing = await agents.threads.getById({\n projectId: params.projectId,\n id: params.threadId,\n })\n if (existing) {\n return { thread: existing, createdThread: false }\n }\n }\n\n const thread = await agents.threads.create({\n id: params.threadId ?? createAgentThreadId(),\n projectId: params.projectId,\n ownerPrincipal: params.principal,\n ...(params.title === undefined ? {} : { title: params.title }),\n })\n return { thread, createdThread: true }\n}\n\nfunction requireAgentStorage(runtime: SixbRuntimeContext): AgentStorage {\n const agents = runtime.storage.agents\n if (!agents) {\n throw new AgentRequestError(\"storage_unavailable\", \"[Sixb] Agent storage is not configured.\")\n }\n return agents\n}\n",
11
+ "import type { SixbRuntimeContext } from \"../runtime/types\"\nimport {\n type AgentContextEntryInput,\n type AgentContextPart,\n normalizeAgentContextEntries,\n} from \"./context\"\nimport { AgentRequestError } from \"./errors\"\n\n/** Resolve the exact context parts that will be persisted with the triggering user message. */\nexport async function resolveAgentContextParts(\n runtime: SixbRuntimeContext,\n input: readonly AgentContextEntryInput[] | undefined\n): Promise<readonly AgentContextPart[]> {\n const entries = normalizeAgentContextEntries(input)\n\n for (const entry of entries) {\n if (entry.context.kind !== \"object\") continue\n const { objectTypeId, primaryId } = entry.context.ref\n\n try {\n runtime.ontology.resolveObjectType(objectTypeId)\n } catch {\n invalidContext(`context references an unknown object type '${objectTypeId}'`)\n }\n\n const object = await runtime.objectReader.getByPrimaryId({\n objectTypeId,\n primaryId,\n })\n if (!object) {\n invalidContext(`context references an unknown object '${objectTypeId}:${primaryId}'`)\n }\n }\n\n return entries.map((entry) => ({ type: \"context\", ...entry }))\n}\n\nfunction invalidContext(message: string): never {\n throw new AgentRequestError(\"invalid_context\", `[Sixb] Invalid agent context: ${message}.`)\n}\n",
12
+ "import type { AgentQueueJob, Queue, SubagentQueueJob } from \"../queues\"\nimport type { AgentStorage } from \"../storage/agents\"\n\nexport interface DispatchQueuedAgentRunsInput {\n readonly projectId: string\n readonly storage: AgentStorage\n readonly queue: Queue<AgentQueueJob>\n /** Dispatch only these runs. Omitted scans the oldest queued runs. */\n readonly runIds?: readonly string[]\n readonly limit?: number\n}\n\nexport interface DispatchedAgentRun {\n readonly runId: string\n readonly jobId: string\n}\n\nexport interface AgentRunDispatchFailure {\n readonly runId: string\n readonly error: unknown\n}\n\nexport interface DispatchQueuedAgentRunsResult {\n readonly scanned: number\n readonly dispatched: readonly DispatchedAgentRun[]\n readonly failures: readonly AgentRunDispatchFailure[]\n}\n\n/** Stable queue identity: repeated publication of one durable run is idempotent. */\nexport function agentRunQueueJobId(runId: string): string {\n return `agt_job_${runId}`\n}\n\nexport function subagentRunQueueJobId(runId: string): string {\n return `agt_child_job_${runId}`\n}\n\n/** Stable queue identity shared by workflow dispatch and agent reconciliation. */\nexport function workflowAgentNodeQueueJobId(nodeRunId: string): string {\n return `wfa_job_${nodeRunId}`\n}\n\n/**\n * Publish durable queued runs to the agent queue.\n *\n * The queued run is the dispatch intent, so no parallel outbox record is needed. Callers may run\n * this concurrently: the deterministic queue job id collapses repeated publication to one active\n * job, while the worker's queued→running transition remains the execution authority.\n */\nexport async function dispatchQueuedAgentRuns(\n input: DispatchQueuedAgentRunsInput\n): Promise<DispatchQueuedAgentRunsResult> {\n const limit = normalizeLimit(input.limit)\n const runs = input.runIds\n ? await input.storage.runs.getByIds({\n projectId: input.projectId,\n ids: [...new Set(input.runIds)].slice(0, limit),\n })\n : (\n await input.storage.runs.list({\n projectId: input.projectId,\n kinds: [\"conversation\"],\n statuses: [\"queued\"],\n order: \"asc\",\n limit,\n })\n ).runs\n\n const queued = runs.filter((run) => run.kind === \"conversation\" && run.status === \"queued\")\n if (queued.length === 0) {\n return { scanned: 0, dispatched: [], failures: [] }\n }\n\n try {\n const jobs = await input.queue.enqueue({\n projectId: input.projectId,\n jobs: queued.map((run) => ({\n id: agentRunQueueJobId(run.id),\n type: \"agent.run.requested\" as const,\n payload: { runId: run.id },\n })),\n })\n const jobsById = new Map(jobs.map((job) => [job.id, job]))\n const dispatched = queued.map((run) => {\n const jobId = agentRunQueueJobId(run.id)\n if (!jobsById.has(jobId)) {\n throw new Error(`[Sixb] Agent queue did not return job '${jobId}'.`)\n }\n return { runId: run.id, jobId }\n })\n return { scanned: queued.length, dispatched, failures: [] }\n } catch (error) {\n return {\n scanned: queued.length,\n dispatched: [],\n failures: queued.map((run) => ({ runId: run.id, error })),\n }\n }\n}\n\nexport async function dispatchQueuedSubagentRuns(input: {\n readonly projectId: string\n readonly storage: AgentStorage\n readonly queue: Queue<SubagentQueueJob>\n readonly runIds?: readonly string[]\n readonly limit?: number\n}): Promise<DispatchQueuedAgentRunsResult> {\n const limit = normalizeLimit(input.limit)\n const runs = input.runIds\n ? await input.storage.runs.getByIds({\n projectId: input.projectId,\n ids: [...new Set(input.runIds)].slice(0, limit),\n })\n : (\n await input.storage.runs.list({\n projectId: input.projectId,\n kinds: [\"subagent\"],\n statuses: [\"queued\"],\n order: \"asc\",\n limit,\n })\n ).runs\n const queued = runs.filter((run) => run.kind === \"subagent\" && run.status === \"queued\")\n if (queued.length === 0) return { scanned: 0, dispatched: [], failures: [] }\n\n try {\n const jobs = await input.queue.enqueue({\n projectId: input.projectId,\n jobs: queued.map((run) => ({\n id: subagentRunQueueJobId(run.id),\n type: \"agent.subagent-run.requested\" as const,\n payload: { runId: run.id },\n })),\n })\n const jobsById = new Set(jobs.map((job) => job.id))\n const dispatched = queued.map((run) => {\n const jobId = subagentRunQueueJobId(run.id)\n if (!jobsById.has(jobId)) {\n throw new Error(`[Sixb] Subagent queue did not return job '${jobId}'.`)\n }\n return { runId: run.id, jobId }\n })\n return { scanned: queued.length, dispatched, failures: [] }\n } catch (error) {\n return {\n scanned: queued.length,\n dispatched: [],\n failures: queued.map((run) => ({ runId: run.id, error })),\n }\n }\n}\n\nfunction normalizeLimit(value: number | undefined): number {\n if (value === undefined) return 100\n if (!Number.isFinite(value) || value < 1) {\n throw new Error(\"[Sixb] Agent dispatch limit must be at least 1.\")\n }\n return Math.floor(value)\n}\n",
13
+ "import { RuntimeError } from \"../runtime/errors\"\nimport { AgentRequestError } from \"./errors\"\n\n/** Reject JavaScript callers too: old configuration must not silently change authority. */\nexport function assertNoAgentDefinitions(input: object): void {\n if (\"agents\" in input) {\n throw new RuntimeError(\n \"[Sixb] Agent definitions are no longer supported. Configure 'models' and 'tools' on createSixb() instead.\"\n )\n }\n}\n\nexport function assertNoAgentSelector(input: object): void {\n if (\"agentId\" in input || \"agentIds\" in input) {\n throw new AgentRequestError(\n \"agent_selector_removed\",\n \"[Sixb] There is one project Agent. Remove the agentId selector and use sixb.agent.\"\n )\n }\n}\n",
14
+ "import { principalsEqual, SYSTEM_PRINCIPAL } from \"../auth\"\nimport { assertAuthorized, isRuntimeAllowed } from \"../authorization\"\nimport type { AuthorizablePrincipal, ExecutionContext } from \"../execution\"\nimport { resolveRuntimeAuthorizationForProject } from \"../execution/authorization\"\nimport type { ModelCatalog } from \"../models\"\nimport { resolveExecutionCosts } from \"../runtime/ai-cost\"\nimport { resolveExecutionUsage } from \"../runtime/ai-usage\"\nimport type { SixbRuntimeContext } from \"../runtime/types\"\nimport type {\n AgentThreadRecord,\n ConversationAgentRunRecord,\n ListAgentRunsInput,\n ListAgentRunsResult,\n ListAgentThreadsInput,\n ListAgentThreadsResult,\n} from \"../storage/agents\"\nimport type { AiCostSummary } from \"../storage/ai-cost\"\nimport type { AiModelCallUsage } from \"../storage/ai-usage\"\nimport { AgentRequestError } from \"./errors\"\nimport { createAgentThreadId } from \"./ids\"\nimport {\n type RequestAgentRunInput,\n type RequestAgentRunResult,\n requestAgentRun,\n retryAgentRun,\n} from \"./request\"\nimport { assertNoAgentSelector } from \"./retired-config\"\nimport type { AgentDescriptor } from \"./types\"\n\nexport type ExecutionAgentRequestInput = Omit<RequestAgentRunInput, \"principal\">\nexport type ListExecutionAgentThreadsInput = Omit<\n ListAgentThreadsInput,\n \"projectId\" | \"ownerPrincipal\"\n>\n\nexport interface CreateExecutionAgentThreadInput {\n readonly id?: string\n readonly title?: string\n}\n\nexport interface AgentThreadsRuntime {\n create(input: CreateExecutionAgentThreadInput): Promise<AgentThreadRecord>\n getById(threadId: string): Promise<AgentThreadRecord | null>\n list(input?: ListExecutionAgentThreadsInput): Promise<ListAgentThreadsResult>\n}\n\nexport interface AgentRunsRuntime {\n request(input: ExecutionAgentRequestInput): Promise<ExecutionAgentRunResult>\n retry(runId: string): Promise<ExecutionAgentRunResult>\n getById(runId: string): Promise<AgentRunView | null>\n listForThread(\n threadId: string,\n input?: Omit<ListAgentRunsInput, \"projectId\" | \"threadId\">\n ): Promise<AgentRunListResult | null>\n}\n\n/** Execution-facing run view with provenance resolved from the immutable execution ledger. */\nexport interface AgentRunView extends ConversationAgentRunRecord {\n readonly requestedBy?: AuthorizablePrincipal\n /** Derived from the model-call ledger; never persisted on the Agent run row. */\n readonly usage?: AiModelCallUsage\n /** Preferred valuation; omitted when there are no calls or cost storage is unavailable. */\n readonly cost?: AiCostSummary\n}\n\nexport interface AgentRunListResult extends Omit<ListAgentRunsResult, \"runs\"> {\n readonly runs: readonly AgentRunView[]\n}\n\nexport interface ExecutionAgentRunResult extends Omit<RequestAgentRunResult, \"run\"> {\n readonly run: AgentRunView\n}\n\nexport interface AgentRuntime {\n /** Null when no language models are configured or the caller cannot run the Agent. */\n get(): AgentDescriptor | null\n readonly threads: AgentThreadsRuntime\n readonly runs: AgentRunsRuntime\n}\n\nexport function createAgentRuntime(\n runtime: SixbRuntimeContext,\n execution: ExecutionContext,\n models?: ModelCatalog\n): AgentRuntime {\n const authority = resolveRuntimeAuthorizationForProject(runtime)\n const principal = authority.type === \"principal\" ? authority.context.principal : SYSTEM_PRINCIPAL\n const allowed = () => isRuntimeAllowed(runtime, { kind: \"agent.run\" })\n\n const getVisibleThreadRecord = async (threadId: string): Promise<AgentThreadRecord | null> => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") return null\n const thread =\n (await runtime.storage.agents?.threads.getById({\n projectId: runtime.projectId,\n id: threadId,\n })) ?? null\n if (!thread || !allowed()) return null\n return authority.type === \"principal\" && !principalsEqual(principal, thread.ownerPrincipal)\n ? null\n : thread\n }\n\n const getAgent = (): AgentDescriptor | null => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") return null\n const model = models?.language.default\n if (!model || !allowed()) return null\n return {\n name: \"Sixb\",\n model: { provider: model.provider, modelId: model.modelId },\n }\n }\n\n const getVisibleRunRecord = async (runId: string): Promise<ConversationAgentRunRecord | null> => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") return null\n const run =\n (await runtime.storage.agents?.runs.getById({\n projectId: runtime.projectId,\n id: runId,\n })) ?? null\n if (!run || run.kind !== \"conversation\") return null\n const thread = await getVisibleThreadRecord(run.threadId)\n return thread ? run : null\n }\n\n const getRun = async (runId: string): Promise<AgentRunView | null> => {\n const run = await getVisibleRunRecord(runId)\n return run ? attachRunView(runtime, run) : null\n }\n\n return {\n get: getAgent,\n threads: {\n create: async (input) => {\n assertNoAgentSelector(input)\n const agent = getAgent()\n if (!agent) {\n throw new AgentRequestError(\"agent_not_found\", \"[Sixb] The project Agent is unavailable.\")\n }\n const storage = runtime.storage.agents\n if (!storage) {\n throw new AgentRequestError(\n \"storage_unavailable\",\n \"[Sixb] Agent storage is not configured.\"\n )\n }\n return storage.threads.create({\n id: input.id ?? createAgentThreadId(),\n projectId: runtime.projectId,\n ownerPrincipal: principal,\n ...(input.title === undefined ? {} : { title: input.title }),\n })\n },\n getById: getVisibleThreadRecord,\n list: async (input = {}) => {\n assertNoAgentSelector(input)\n if (authority.type === \"denied\" || authority.type === \"delegated\") {\n return { threads: [], hasMore: false, total: 0 }\n }\n const storage = runtime.storage.agents\n if (!storage || !allowed()) return { threads: [], hasMore: false, total: 0 }\n return storage.threads.list({\n ...input,\n projectId: runtime.projectId,\n ownerPrincipal: authority.type === \"principal\" ? principal : undefined,\n })\n },\n },\n runs: {\n request: async (input) => {\n assertNoAgentSelector(input)\n const agent = getAgent()\n if (!agent) {\n throw new AgentRequestError(\"agent_not_found\", \"[Sixb] The project Agent is unavailable.\")\n }\n assertAuthorized(runtime, { kind: \"agent.run\" })\n if (input.threadId && !(await getVisibleThreadRecord(input.threadId))) {\n throw new AgentRequestError(\n \"thread_not_found\",\n `[Sixb] Agent thread '${input.threadId}' not found.`\n )\n }\n const result = await requestAgentRun(runtime, execution, models?.language, {\n ...input,\n principal,\n })\n return { ...result, run: await attachRunView(runtime, result.run) }\n },\n retry: async (runId) => {\n const failedRun = await getVisibleRunRecord(runId)\n if (!failedRun) {\n throw new AgentRequestError(\"run_not_found\", `[Sixb] Agent run '${runId}' was not found.`)\n }\n const agent = getAgent()\n if (!agent) {\n throw new AgentRequestError(\"agent_not_found\", \"[Sixb] The project Agent is unavailable.\")\n }\n const result = await retryAgentRun(runtime, execution, models?.language, failedRun)\n return { ...result, run: await attachRunView(runtime, result.run) }\n },\n getById: getRun,\n listForThread: async (threadId, input = {}) => {\n assertNoAgentSelector(input)\n const storage = runtime.storage.agents\n if (!storage || !(await getVisibleThreadRecord(threadId))) return null\n const result = await storage.runs.list({\n ...input,\n projectId: runtime.projectId,\n threadId,\n })\n return {\n ...result,\n runs: await attachRunViews(\n runtime,\n result.runs.filter((run) => run.kind === \"conversation\")\n ),\n }\n },\n },\n }\n}\n\nasync function attachRunView(\n runtime: SixbRuntimeContext,\n run: ConversationAgentRunRecord\n): Promise<AgentRunView> {\n const [view] = await attachRunViews(runtime, [run])\n if (!view) throw new Error(`[Sixb] Could not build Agent run '${run.id}' view.`)\n return view\n}\n\nasync function attachRunViews(\n runtime: SixbRuntimeContext,\n runs: readonly ConversationAgentRunRecord[]\n): Promise<readonly AgentRunView[]> {\n const executionIds = runs.map((run) => run.executionId)\n const [executions, usages, costs] = await Promise.all([\n Promise.all(\n runs.map((run) =>\n runtime.storage.executions.getById({\n projectId: runtime.projectId,\n id: run.executionId,\n })\n )\n ),\n resolveExecutionUsage({\n storage: runtime.storage.aiUsage,\n projectId: runtime.projectId,\n executionIds,\n }),\n resolveExecutionCosts({\n storage: runtime.storage.aiCosts,\n projectId: runtime.projectId,\n executionIds,\n }),\n ])\n\n return runs.map((run, index) => {\n const execution = executions[index]\n if (!execution) {\n throw new Error(\n `[Sixb] Agent run '${run.id}' references missing execution '${run.executionId}'.`\n )\n }\n const usage = usages[index]\n const cost = usage === undefined ? undefined : costs[index]\n return {\n ...run,\n ...(execution.requestedBy === undefined\n ? {}\n : { requestedBy: structuredClone(execution.requestedBy) }),\n ...(usage === undefined ? {} : { usage }),\n ...(cost === undefined ? {} : { cost }),\n }\n })\n}\n",
15
+ "import { randomUUID } from \"node:crypto\"\nimport { assertAuthorized, isRuntimeAllowed } from \"../authorization\"\nimport type { SixbRuntimeContext } from \"../runtime/types\"\nimport type { SecurityDefinitionCatalog } from \"../security\"\nimport type {\n AiAccountingOverview,\n AiLimitPolicy,\n AiLimitPolicyStatus,\n CreateAiLimitPolicyInput,\n ListAiLimitPoliciesInput,\n ListAiLimitPolicyStatusesInput,\n ListAiModelCallAccountingInput,\n ListAiModelCallAccountingResult,\n ListAiModelCallGroupsInput,\n ListAiModelCallGroupsResult,\n QueryAiAccountingOverviewInput,\n ServiceAccountStatus,\n UpdateAiLimitPolicyInput,\n UserStatus,\n} from \"../storage\"\n\nexport type QueryAiUsageOverviewInput = Omit<QueryAiAccountingOverviewInput, \"projectId\">\nexport type ListAiUsageModelCallsInput = Omit<ListAiModelCallAccountingInput, \"projectId\">\nexport type ListAiUsageModelCallGroupsInput = Omit<ListAiModelCallGroupsInput, \"projectId\">\nexport type ListAiUsageLimitPoliciesInput = Omit<ListAiLimitPoliciesInput, \"projectId\">\nexport type ListAiUsageLimitStatusesInput = Omit<\n ListAiLimitPolicyStatusesInput,\n \"projectId\" | \"existingGroupIds\" | \"at\"\n>\nexport type CreateAiUsageLimitPolicyInput = Omit<\n CreateAiLimitPolicyInput,\n \"id\" | \"projectId\" | \"createdAt\"\n> & { readonly id?: string }\nexport type UpdateAiUsageLimitPolicyInput = Omit<\n UpdateAiLimitPolicyInput,\n \"projectId\" | \"updatedAt\"\n>\n\nexport interface AiUsageLimitGroupOption {\n readonly id: string\n readonly label?: string\n readonly description?: string\n}\n\nexport interface AiUsageLimitUserOption {\n readonly id: string\n readonly email: string\n readonly displayName?: string\n readonly status: UserStatus\n}\n\nexport interface AiUsageLimitServiceAccountOption {\n readonly id: string\n readonly name: string\n readonly description?: string\n readonly status: ServiceAccountStatus\n}\n\nexport interface AiUsageLimitSubjectOptions {\n readonly groups: readonly AiUsageLimitGroupOption[]\n readonly users: readonly AiUsageLimitUserOption[]\n readonly serviceAccounts: readonly AiUsageLimitServiceAccountOption[]\n}\n\n/** Project AI accounting and limit controls bound to one execution's authority. */\nexport interface AiUsageRuntime {\n readonly accountingConfigured: boolean\n readonly limitsConfigured: boolean\n assertObservable(): void\n assertManageable(): void\n canManageLimits(): boolean\n queryOverview(input: QueryAiUsageOverviewInput): Promise<AiAccountingOverview>\n listModelCalls(input: ListAiUsageModelCallsInput): Promise<ListAiModelCallAccountingResult>\n listModelCallGroups(input: ListAiUsageModelCallGroupsInput): Promise<ListAiModelCallGroupsResult>\n listLimitPolicies(input?: ListAiUsageLimitPoliciesInput): Promise<readonly AiLimitPolicy[]>\n listLimitStatuses(input?: ListAiUsageLimitStatusesInput): Promise<readonly AiLimitPolicyStatus[]>\n listLimitSubjectOptions(): Promise<AiUsageLimitSubjectOptions>\n createLimitPolicy(input: CreateAiUsageLimitPolicyInput): Promise<AiLimitPolicy>\n updateLimitPolicy(input: UpdateAiUsageLimitPolicyInput): Promise<AiLimitPolicy>\n deleteLimitPolicy(id: string): Promise<boolean>\n}\n\nexport function createAiUsageRuntime(\n runtime: SixbRuntimeContext,\n security: SecurityDefinitionCatalog\n): AiUsageRuntime {\n const assertObservable = () => assertAuthorized(runtime, { kind: \"aiUsage.observe\" })\n const assertManageable = () => assertAuthorized(runtime, { kind: \"aiUsage.manage\" })\n const assertPolicyReadable = () => {\n if (\n !isRuntimeAllowed(runtime, { kind: \"aiUsage.observe\" }) &&\n !isRuntimeAllowed(runtime, { kind: \"aiUsage.manage\" })\n ) {\n assertObservable()\n }\n }\n const requireCosts = () => {\n if (!runtime.storage.aiCosts) {\n throw new Error(\"[Sixb] AI cost storage is not configured.\")\n }\n return runtime.storage.aiCosts\n }\n const requireLimits = () => {\n if (!runtime.storage.aiLimits) {\n throw new Error(\"[Sixb] AI limit storage is not configured.\")\n }\n return runtime.storage.aiLimits\n }\n\n return {\n accountingConfigured: runtime.storage.aiCosts !== undefined,\n limitsConfigured: runtime.storage.aiLimits !== undefined,\n assertObservable,\n assertManageable,\n canManageLimits: () => isRuntimeAllowed(runtime, { kind: \"aiUsage.manage\" }),\n queryOverview: (input) => {\n assertObservable()\n return requireCosts().queryProjectOverview({ ...input, projectId: runtime.projectId })\n },\n listModelCalls: (input) => {\n assertObservable()\n return requireCosts().listModelCalls({ ...input, projectId: runtime.projectId })\n },\n listModelCallGroups: (input) => {\n assertObservable()\n return requireCosts().listModelCallGroups({ ...input, projectId: runtime.projectId })\n },\n listLimitPolicies: (input = {}) => {\n assertPolicyReadable()\n return requireLimits().listPolicies({ ...input, projectId: runtime.projectId })\n },\n listLimitStatuses: (input = {}) => {\n assertObservable()\n return requireLimits().listPolicyStatuses({\n ...(input.includeDisabled === undefined ? {} : { includeDisabled: input.includeDisabled }),\n projectId: runtime.projectId,\n existingGroupIds: security.listGroups().map((group) => group.id),\n })\n },\n listLimitSubjectOptions: async () => {\n assertManageable()\n const groups = security.listGroups().map((group) => ({\n id: group.id,\n ...(group.label === undefined ? {} : { label: group.label }),\n ...(group.description === undefined ? {} : { description: group.description }),\n }))\n const auth = runtime.storage.auth\n if (!auth) return { groups, users: [], serviceAccounts: [] }\n\n const [users, serviceAccounts] = await Promise.all([\n auth.users.list({ projectId: runtime.projectId, order: \"asc\" }),\n auth.serviceAccounts.list({ projectId: runtime.projectId, order: \"asc\" }),\n ])\n return {\n groups,\n users: users.users.map((user) => ({\n id: user.id,\n email: user.email,\n ...(user.displayName === undefined ? {} : { displayName: user.displayName }),\n status: user.status,\n })),\n serviceAccounts: serviceAccounts.serviceAccounts.map((serviceAccount) => ({\n id: serviceAccount.id,\n name: serviceAccount.name,\n ...(serviceAccount.description === undefined\n ? {}\n : { description: serviceAccount.description }),\n status: serviceAccount.status,\n })),\n }\n },\n createLimitPolicy: (input) => {\n assertManageable()\n return requireLimits().createPolicy({\n ...input,\n id: input.id ?? `ailim_${randomUUID()}`,\n projectId: runtime.projectId,\n })\n },\n updateLimitPolicy: (input) => {\n assertManageable()\n return requireLimits().updatePolicy({ ...input, projectId: runtime.projectId })\n },\n deleteLimitPolicy: (id) => {\n assertManageable()\n return requireLimits().deletePolicy({ id, projectId: runtime.projectId })\n },\n }\n}\n",
16
+ "import { assertProviderAccess } from \"../authorization\"\nimport type { ExecutionContext } from \"../execution\"\nimport type { SixbRuntimeContext } from \"../runtime/types\"\nimport type {\n AbortBlobUploadInput,\n BlobByteRange,\n BlobInfo,\n BlobStorage,\n BlobUploadSession,\n CompleteBlobUploadInput,\n CreateBlobUploadInput,\n FileRef,\n PutBlobInput,\n SignBlobUploadPartInput,\n SignedBlobUploadPart,\n} from \"./types\"\nimport { supportsDirectUpload, supportsRangeRead } from \"./validation\"\n\n/** Blob operations bound to one execution. Provider lifecycle is deliberately host-only. */\nexport interface BlobsRuntime {\n put(input: PutBlobInput): Promise<FileRef>\n open(blobId: string): Promise<ReadableStream<Uint8Array>>\n stat(blobId: string): Promise<BlobInfo | null>\n openRange?(blobId: string, range: BlobByteRange): Promise<ReadableStream<Uint8Array>>\n createUpload?(input: CreateBlobUploadInput): Promise<BlobUploadSession>\n signUploadPart?(input: SignBlobUploadPartInput): Promise<SignedBlobUploadPart>\n completeUpload?(input: CompleteBlobUploadInput): Promise<FileRef>\n abortUpload?(input: AbortBlobUploadInput): Promise<void>\n}\n\nexport function createBlobsRuntime(\n runtime: SixbRuntimeContext,\n execution: ExecutionContext,\n blobStorage: BlobStorage\n): BlobsRuntime {\n const assertAccess = () => assertProviderAccess(runtime, execution, \"blobs.access\")\n const executionBlobs: BlobsRuntime = {\n put: (input) => {\n assertAccess()\n return blobStorage.put(input)\n },\n open: (blobId) => {\n assertAccess()\n return blobStorage.open(blobId)\n },\n stat: (blobId) => {\n assertAccess()\n return blobStorage.stat(blobId)\n },\n }\n\n if (supportsRangeRead(blobStorage)) {\n executionBlobs.openRange = (blobId, range) => {\n assertAccess()\n return blobStorage.openRange(blobId, range)\n }\n }\n if (supportsDirectUpload(blobStorage)) {\n executionBlobs.createUpload = (input) => {\n assertAccess()\n return blobStorage.createUpload(input)\n }\n executionBlobs.signUploadPart = (input) => {\n assertAccess()\n return blobStorage.signUploadPart(input)\n }\n executionBlobs.completeUpload = (input) => {\n assertAccess()\n return blobStorage.completeUpload(input)\n }\n executionBlobs.abortUpload = (input) => {\n assertAccess()\n return blobStorage.abortUpload(input)\n }\n }\n\n return Object.freeze(executionBlobs)\n}\n",
17
+ "import { AuthorizationError, assertCanManageConnector } from \"../../authorization\"\nimport { resolveExecutionScopeAuthorization } from \"../../execution/authorization\"\nimport { executionRecordInputFromRuntime } from \"../../execution/durable\"\nimport type { ExecutionContext } from \"../../execution/types\"\nimport type { SixbRuntimeContext } from \"../../runtime/types\"\nimport type {\n AddConnectorConnectionInput,\n CompleteConnectorAuthorizationInput,\n CompleteConnectorAuthorizationResult,\n ConnectorConnectionCommandContext,\n ConnectorConnectionProcess,\n ConnectorConnectionRunView,\n ConnectorConnectionView,\n RevokeConnectorAuthorizationResult,\n SelectConnectorAccountInput,\n SelectConnectorConnectionRunAccountInput,\n StartConnectorAuthorizationInput,\n StartConnectorAuthorizationResult,\n StartConnectorConnectionRunInput,\n StartConnectorConnectionRunResult,\n} from \"./contracts\"\n\n/** Internal connector-connection lifecycle API bound to one authenticated request execution. */\nexport interface ConnectorConnectionsRuntime {\n listConnections(connectorId: string): Promise<readonly ConnectorConnectionView[]>\n startConnectionRun(\n connectorId: string,\n input: StartConnectorConnectionRunInput\n ): Promise<StartConnectorConnectionRunResult>\n addConnection(\n connectorId: string,\n input: AddConnectorConnectionInput\n ): Promise<ConnectorConnectionRunView>\n getConnectionRun(connectorId: string, runId: string): Promise<ConnectorConnectionRunView | null>\n selectConnectionRunAccount(\n connectorId: string,\n input: SelectConnectorConnectionRunAccountInput\n ): Promise<ConnectorConnectionRunView>\n startReauthorization(\n connectorId: string,\n connectionId: string,\n input: Pick<StartConnectorConnectionRunInput, \"redirectUri\" | \"returnTo\">\n ): Promise<StartConnectorConnectionRunResult>\n revokeConnection(\n connectorId: string,\n connectionId: string\n ): Promise<RevokeConnectorAuthorizationResult>\n startAuthorization(\n connectorId: string,\n input: StartConnectorAuthorizationInput\n ): Promise<StartConnectorAuthorizationResult>\n completeAuthorization(\n connectorId: string,\n input: CompleteConnectorAuthorizationInput\n ): Promise<CompleteConnectorAuthorizationResult>\n selectAccount(\n connectorId: string,\n input: SelectConnectorAccountInput\n ): Promise<ConnectorConnectionView>\n disconnect(connectorId: string, connectionId: string): Promise<ConnectorConnectionView | null>\n revokeAuthorization(\n connectorId: string,\n authorizationId: string\n ): Promise<RevokeConnectorAuthorizationResult>\n}\n\nexport function createConnectorConnectionsRuntime(\n runtime: SixbRuntimeContext,\n execution: ExecutionContext,\n process: ConnectorConnectionProcess\n): ConnectorConnectionsRuntime {\n const contextFor = (connectorId: string) => commandContext(runtime, execution, connectorId)\n\n const connections: ConnectorConnectionsRuntime = {\n listConnections: (connectorId) => process.listConnections(contextFor(connectorId), connectorId),\n startConnectionRun: (connectorId, input) =>\n process.startConnectionRun(contextFor(connectorId), connectorId, input),\n addConnection: (connectorId, input) =>\n process.addConnection(contextFor(connectorId), connectorId, input),\n getConnectionRun: (connectorId, runId) =>\n process.getConnectionRun(contextFor(connectorId), connectorId, runId),\n selectConnectionRunAccount: (connectorId, input) =>\n process.selectConnectionRunAccount(contextFor(connectorId), connectorId, input),\n startReauthorization: (connectorId, connectionId, input) =>\n process.startReauthorization(contextFor(connectorId), connectorId, connectionId, input),\n revokeConnection: (connectorId, connectionId) =>\n process.revokeConnection(contextFor(connectorId), connectorId, connectionId),\n startAuthorization: (connectorId, input) =>\n process.startAuthorization(contextFor(connectorId), connectorId, input),\n completeAuthorization: (connectorId, input) =>\n process.completeAuthorization(contextFor(connectorId), connectorId, input),\n selectAccount: (connectorId, input) =>\n process.selectAccount(contextFor(connectorId), connectorId, input),\n disconnect: (connectorId, connectionId) =>\n process.disconnect(contextFor(connectorId), connectorId, connectionId),\n revokeAuthorization: (connectorId, authorizationId) =>\n process.revokeAuthorization(contextFor(connectorId), connectorId, authorizationId),\n }\n return Object.freeze(connections)\n}\n\nfunction commandContext(\n runtime: SixbRuntimeContext,\n execution: ExecutionContext,\n connectorId: string\n): ConnectorConnectionCommandContext {\n const resolved = resolveExecutionScopeAuthorization(runtime.projectId, {\n execution,\n authorization: runtime.runtimeAuthorization,\n })\n\n if (\n execution.executor.type !== \"request\" ||\n resolved.type !== \"principal\" ||\n resolved.ref.type !== \"principal\"\n ) {\n throw new AuthorizationError(\n `manage:connector:${connectorId}`,\n \"[Sixb] Connector connections can only be managed by an authenticated request.\"\n )\n }\n if (!resolved.ref.credential) {\n throw new AuthorizationError(\n `manage:connector:${connectorId}`,\n \"[Sixb] Connector connection management requires a session or access token.\"\n )\n }\n\n assertCanManageConnector(runtime, connectorId)\n return Object.freeze({\n execution: Object.freeze(\n executionRecordInputFromRuntime({\n execution,\n runtimeAuthorization: runtime.runtimeAuthorization,\n })\n ),\n })\n}\n",
18
+ "import { assertPrivileged, isRuntimeAllowed } from \"../authorization\"\nimport type { BlobStorage } from \"../blob-storage\"\nimport type { ExecutionContext } from \"../execution\"\nimport { resolveRuntimeAuthorizationForProject } from \"../execution/authorization\"\nimport type { DatasetMergeCommitResult } from \"../lake-storage/merge\"\nimport { getDatasetPrimaryKeyColumns } from \"../lake-storage/merge-validation\"\nimport type { DatasetRow, LakeStorage } from \"../lake-storage/types\"\nimport type { SixbRuntimeContext } from \"../runtime/types\"\nimport type { MergeChange } from \"./changes\"\nimport type { DatasetDefinition } from \"./types\"\nimport { writeDataset } from \"./write\"\n\nexport interface DatasetIngestInput {\n readonly changes:\n | Iterable<MergeChange<DatasetRow, DatasetRow>>\n | AsyncIterable<MergeChange<DatasetRow, DatasetRow>>\n readonly signal?: AbortSignal\n}\n\n/** Source commit result; downstream pipelines and projections run asynchronously. */\nexport type DatasetIngestResult = DatasetMergeCommitResult & { readonly rowsRead: number }\n\nexport interface DatasetsRuntime {\n list(): readonly DatasetDefinition[]\n getById(datasetId: string): DatasetDefinition | null\n ingest(dataset: DatasetDefinition, input: DatasetIngestInput): Promise<DatasetIngestResult>\n}\n\nexport function createDatasetsRuntime(\n runtime: SixbRuntimeContext,\n execution: ExecutionContext,\n source: Pick<DatasetsRuntime, \"list\" | \"getById\">,\n lakeStorage: LakeStorage,\n blobStorage: Pick<BlobStorage, \"stat\">\n): DatasetsRuntime {\n const authority = resolveRuntimeAuthorizationForProject(runtime)\n const allowed = (datasetId: string) =>\n isRuntimeAllowed(runtime, { kind: \"dataset.view\", datasetId })\n\n return {\n list: () =>\n authority.type === \"denied\" || authority.type === \"delegated\"\n ? []\n : source.list().filter((dataset) => allowed(dataset.id)),\n getById: (datasetId) => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") return null\n const dataset = source.getById(datasetId)\n return dataset && allowed(datasetId) ? dataset : null\n },\n async ingest(dataset, input) {\n assertPrivileged(runtime, \"datasets.ingest\")\n const registered = source.getById(dataset.id)\n if (!registered) throw new Error(`[Sixb] Dataset '${dataset.id}' is not registered.`)\n if (getDatasetPrimaryKeyColumns(registered) === null) {\n throw new Error(`[Sixb] Dataset '${dataset.id}' must define a primaryKey before ingestion.`)\n }\n if (typeof lakeStorage.beginMerge !== \"function\") {\n throw new Error(\"[Sixb] Dataset ingestion requires a lake provider with merge support.\")\n }\n const producer = { kind: \"ingest\" as const, id: execution.id }\n const result = await writeDataset({\n lakeStorage,\n blobStorage,\n dataset: registered,\n mode: \"merge\",\n signal: input.signal ?? new AbortController().signal,\n producer,\n readValues: async () =>\n (async function* () {\n for await (const value of input.changes) yield { value }\n })(),\n })\n if (result.outcome === \"created\") {\n await runtime.events.emit(\n {\n events: [\n {\n type: \"dataset.version.committed\",\n payload: {\n datasetId: registered.id,\n versionId: result.version.versionId,\n createdAt: result.version.createdAt.toISOString(),\n producer,\n },\n },\n ],\n correlationId: execution.correlationId,\n },\n { source: \"SixbDatasets\" }\n )\n }\n return result\n },\n }\n}\n",
19
+ "import { assertPrivileged, canViewEvent } from \"../authorization\"\nimport { resolveRuntimeAuthorizationForProject } from \"../execution/authorization\"\nimport type { SixbRuntimeContext } from \"../runtime/types\"\nimport type {\n EventsAppendInput,\n EventsEmitOptions,\n EventsReadInput,\n EventsSubscribeInput,\n} from \"./service\"\nimport type { StoredDomainEvent } from \"./types\"\n\nexport interface EventsRuntime {\n canRead(event: StoredDomainEvent): boolean\n append(input: EventsAppendInput): Promise<readonly StoredDomainEvent[]>\n emit(input: EventsAppendInput, options: EventsEmitOptions): Promise<void>\n read(input?: EventsReadInput): Promise<readonly StoredDomainEvent[]>\n latestCursor(): Promise<string | undefined>\n subscribe(\n input: EventsSubscribeInput,\n handler: (events: readonly StoredDomainEvent[]) => void\n ): Promise<() => void>\n}\n\nexport function createEventsRuntime(runtime: SixbRuntimeContext): EventsRuntime {\n const authority = resolveRuntimeAuthorizationForProject(runtime)\n const visibleEvents = (events: readonly StoredDomainEvent[]): readonly StoredDomainEvent[] => {\n switch (authority.type) {\n case \"denied\":\n case \"delegated\":\n return []\n case \"principal\":\n return events.filter((event) => canViewEvent(authority.context, event))\n case \"unrestricted\":\n return [...events]\n }\n }\n\n return {\n canRead: (event) => {\n switch (authority.type) {\n case \"denied\":\n case \"delegated\":\n return false\n case \"principal\":\n return canViewEvent(authority.context, event)\n case \"unrestricted\":\n return true\n }\n },\n append: (input) => {\n assertPrivileged(runtime, \"events.append\")\n return runtime.events.append(input)\n },\n emit: (input, options) => {\n assertPrivileged(runtime, \"events.emit\")\n return runtime.events.emit(input, options)\n },\n read: async (input) => {\n switch (authority.type) {\n case \"denied\":\n case \"delegated\":\n return []\n case \"principal\":\n case \"unrestricted\":\n break\n }\n const events = await runtime.events.read(input)\n return visibleEvents(events)\n },\n latestCursor: () => {\n switch (authority.type) {\n case \"denied\":\n case \"delegated\":\n return Promise.resolve(undefined)\n case \"principal\":\n case \"unrestricted\":\n return runtime.events.latestCursor()\n }\n },\n subscribe: (input, handler) => {\n switch (authority.type) {\n case \"denied\":\n case \"delegated\":\n return Promise.resolve(() => {})\n case \"principal\":\n case \"unrestricted\":\n break\n }\n return runtime.events.subscribe(input, (events) => {\n const visible = visibleEvents(events)\n if (visible.length > 0) handler(visible)\n })\n },\n }\n}\n",
20
+ "import { assertAuthorized } from \"../authorization\"\nimport type { SixbRuntimeContext } from \"../runtime/types\"\nimport type { LoggingService, LogsPage, LogsReadInput, LogsTailInput } from \"./service\"\n\nexport interface LogsRuntime {\n assertObservable(): void\n read(input?: LogsReadInput): Promise<LogsPage>\n tail(input?: LogsTailInput): Promise<LogsPage>\n}\n\nexport function createLogsRuntime(\n runtime: SixbRuntimeContext,\n source: LoggingService\n): LogsRuntime {\n const assertObservable = () => assertAuthorized(runtime, { kind: \"logs.observe\" })\n\n return {\n assertObservable,\n read: (input) => {\n assertObservable()\n return source.read(input)\n },\n tail: (input) => {\n assertObservable()\n return source.tail(input)\n },\n }\n}\n",
21
+ "import { shareSixbErrorReporter } from \"../error-reporting/capability\"\nimport type { ExecutionContext } from \"../execution\"\nimport {\n assertAuthorizedObjectReaderBinding,\n getAuthorizedOntologyView,\n} from \"../execution/authorized-object-reader\"\nimport type { ValueType } from \"../ontology\"\nimport { assertObjectTypeRegistered } from \"../ontology\"\nimport type { ObjectTypeWithPropertyTokens } from \"../ontology/tokens\"\nimport { shareOntologyMutationRuntime } from \"../runtime/ontology-mutations\"\nimport type {\n ListResult,\n ObjectByIdHandle,\n ObjectSet,\n OntologySource,\n RegisteredObjectType,\n RegisteredValueTypes,\n SixbRuntimeContext,\n} from \"../runtime/types\"\nimport type {\n LinkDirection,\n ObjectLinkRow,\n ObjectRow,\n TimeseriesHistoryBatchInput,\n TimeseriesHistoryBatchResult,\n TimeseriesPoint,\n} from \"../storage\"\nimport type {\n ExecuteObjectCountInput,\n ExecuteObjectCountResult,\n ExecuteObjectExistsInput,\n ExecuteObjectExistsResult,\n ExecuteObjectFacetsInput,\n ExecuteObjectFacetsResult,\n ExecuteObjectQueryInput,\n ExecuteObjectQueryLinksInput,\n ExecuteObjectQueryLinksResult,\n ExecuteObjectQueryResult,\n} from \"./query\"\nimport { createObjectSet } from \"./sdk\"\nimport type { ListObjectsParams } from \"./service\"\nimport * as objectService from \"./service\"\nimport { getLatestTelemetryPoint, getTelemetryHistoryBatch } from \"./telemetry\"\n\nexport interface ExecutionObjectOperations {\n listTypes(): readonly ObjectTypeWithPropertyTokens[]\n getTypeById(objectTypeId: string): ObjectTypeWithPropertyTokens | null\n resolveType(objectTypeId: string): ObjectTypeWithPropertyTokens\n getValueTypesById(): ReturnType<SixbRuntimeContext[\"ontology\"][\"getValueTypesById\"]>\n getPrimaryPropertyId(objectTypeId: string): string\n listSubTypes(objectTypeId: string): string[]\n isValidLinkTarget(expected: string | string[], actual: string): boolean\n get(objectTypeId: string, primaryId: string): Promise<ObjectRow | null>\n list(params: ListObjectsParams): Promise<ListResult<ObjectRow>>\n upsert(objectTypeId: string, properties: Record<string, unknown>): Promise<ObjectRow>\n upsertBatch(\n objectTypeId: string,\n items: readonly { properties: Record<string, unknown> }[]\n ): ReturnType<typeof objectService.upsertObjectBatch>\n appendTelemetry(\n objectTypeId: string,\n items: readonly { id: string; properties: Record<string, unknown>; at?: Date }[]\n ): Promise<void>\n upsertLink(\n objectTypeId: string,\n sourceId: string,\n linkId: string,\n target: { targetTypeId: string; targetId: string; properties?: Record<string, unknown> }\n ): Promise<void>\n upsertLinkBatch(\n items: readonly {\n objectTypeId: string\n sourceId: string\n linkId: string\n target: { targetTypeId: string; targetId: string; properties?: Record<string, unknown> }\n }[]\n ): ReturnType<typeof objectService.upsertLinkBatch>\n removeLink(\n objectTypeId: string,\n sourceId: string,\n linkId: string,\n target: { targetTypeId: string; targetId: string }\n ): Promise<void>\n}\n\nexport interface ExecutionObjectByIdHandle<\n TObjectType extends ObjectTypeWithPropertyTokens,\n TValueTypes extends readonly ValueType[],\n> {\n get: ObjectByIdHandle<TObjectType, TValueTypes>[\"get\"]\n listLinks: ObjectByIdHandle<TObjectType, TValueTypes>[\"listLinks\"]\n requestAction: ObjectByIdHandle<TObjectType, TValueTypes>[\"requestAction\"]\n requestActionAndWait: ObjectByIdHandle<TObjectType, TValueTypes>[\"requestActionAndWait\"]\n link: ObjectByIdHandle<TObjectType, TValueTypes>[\"link\"]\n unlink: ObjectByIdHandle<TObjectType, TValueTypes>[\"unlink\"]\n delete: ObjectByIdHandle<TObjectType, TValueTypes>[\"delete\"]\n restore: ObjectByIdHandle<TObjectType, TValueTypes>[\"restore\"]\n telemetry: ObjectByIdHandle<TObjectType, TValueTypes>[\"telemetry\"]\n}\n\nexport interface ExecutionObjectSet<\n TObjectType extends ObjectTypeWithPropertyTokens,\n TValueTypes extends readonly ValueType[],\n TRegisteredObjectTypes extends ObjectTypeWithPropertyTokens = TObjectType,\n> {\n get: ObjectSet<TObjectType, TValueTypes, TRegisteredObjectTypes>[\"get\"]\n list: ObjectSet<TObjectType, TValueTypes, TRegisteredObjectTypes>[\"list\"]\n query: ObjectSet<TObjectType, TValueTypes, TRegisteredObjectTypes>[\"query\"]\n requestAction: ObjectSet<TObjectType, TValueTypes, TRegisteredObjectTypes>[\"requestAction\"]\n requestActionAndWait: ObjectSet<\n TObjectType,\n TValueTypes,\n TRegisteredObjectTypes\n >[\"requestActionAndWait\"]\n upsert: ObjectSet<TObjectType, TValueTypes, TRegisteredObjectTypes>[\"upsert\"]\n upsertLink: ObjectSet<TObjectType, TValueTypes, TRegisteredObjectTypes>[\"upsertLink\"]\n removeLink: ObjectSet<TObjectType, TValueTypes, TRegisteredObjectTypes>[\"removeLink\"]\n appendTelemetryBatch: ObjectSet<\n TObjectType,\n TValueTypes,\n TRegisteredObjectTypes\n >[\"appendTelemetryBatch\"]\n\n byId(id: string): ExecutionObjectByIdHandle<TObjectType, TValueTypes>\n}\n\n/** Public input for querying physical links incident to an object query result. */\nexport type ObjectQueryLinksInput = Omit<ExecuteObjectQueryLinksInput, \"projectId\">\n\n/** Public result returned by {@link ObjectsRuntime.queryLinks}. */\nexport type ObjectQueryLinksResult = ExecuteObjectQueryLinksResult\n\nexport interface ObjectsRuntime<TOntologySources extends readonly OntologySource[]>\n extends ExecutionObjectOperations {\n <TObjectType extends RegisteredObjectType<TOntologySources>>(\n objectType: TObjectType\n ): ExecutionObjectSet<\n TObjectType,\n RegisteredValueTypes<TOntologySources>,\n RegisteredObjectType<TOntologySources>\n >\n executeQuery(input: Omit<ExecuteObjectQueryInput, \"projectId\">): Promise<ExecuteObjectQueryResult>\n queryLinks(input: ObjectQueryLinksInput): Promise<ObjectQueryLinksResult>\n count(input: Omit<ExecuteObjectCountInput, \"projectId\">): Promise<ExecuteObjectCountResult>\n exists(input: Omit<ExecuteObjectExistsInput, \"projectId\">): Promise<ExecuteObjectExistsResult>\n facet(input: Omit<ExecuteObjectFacetsInput, \"projectId\">): Promise<ExecuteObjectFacetsResult>\n listLinks(input: {\n readonly objectTypeId: string\n readonly objectId: string\n readonly linkId?: string\n readonly direction?: LinkDirection\n }): Promise<readonly ObjectLinkRow[]>\n getTelemetryHistoryBatch(\n input: Omit<TimeseriesHistoryBatchInput, \"projectId\">\n ): Promise<readonly TimeseriesHistoryBatchResult[]>\n getTelemetryHistory(input: {\n readonly objectTypeId: string\n readonly objectId: string\n readonly propertyId: string\n readonly from?: Date\n readonly to?: Date\n readonly limit?: number\n readonly order?: \"asc\" | \"desc\"\n }): Promise<readonly TimeseriesPoint[]>\n getLatestTelemetry(input: {\n readonly objectTypeId: string\n readonly objectId: string\n readonly propertyId: string\n }): Promise<TimeseriesPoint | null>\n}\n\nexport function createObjectsRuntime<TOntologySources extends readonly OntologySource[]>(\n runtime: SixbRuntimeContext,\n execution: ExecutionContext\n): ObjectsRuntime<TOntologySources> {\n const runtimeAuthorization = runtime.runtimeAuthorization\n const objectReader = runtime.objectReader\n assertAuthorizedObjectReaderBinding({\n reader: objectReader,\n scope: { execution, authorization: runtimeAuthorization },\n })\n const authorization = runtime.authorization\n const capturedRuntime: SixbRuntimeContext = {\n projectId: runtime.projectId,\n broker: runtime.broker,\n ontology: runtime.ontology,\n actionRegistry: runtime.actionRegistry,\n events: runtime.events,\n storage: runtime.storage,\n queues: runtime.queues,\n runtimeAuthorization,\n objectReader,\n ...(authorization === undefined ? {} : { authorization }),\n }\n shareOntologyMutationRuntime(runtime, capturedRuntime)\n shareSixbErrorReporter(runtime, capturedRuntime)\n Object.freeze(capturedRuntime)\n const ontologyView = () => getAuthorizedOntologyView(objectReader)\n const objects = Object.assign(\n <TObjectType extends RegisteredObjectType<TOntologySources>>(objectType: TObjectType) => {\n assertObjectTypeRegistered(capturedRuntime.ontology.getObjectTypesById(), objectType)\n return createObjectSet<\n TObjectType,\n RegisteredObjectType<TOntologySources>,\n RegisteredValueTypes<TOntologySources>\n >({ ...capturedRuntime, execution, objectType }) as ExecutionObjectSet<\n TObjectType,\n RegisteredValueTypes<TOntologySources>,\n RegisteredObjectType<TOntologySources>\n >\n },\n {\n listTypes: () => ontologyView().listObjectTypes(),\n getTypeById: (objectTypeId: string) => ontologyView().getObjectTypeById(objectTypeId),\n resolveType: (objectTypeId: string) => ontologyView().resolveObjectType(objectTypeId),\n getValueTypesById: () => ontologyView().getValueTypesById(),\n listSubTypes: (objectTypeId: string) => ontologyView().listSubTypes(objectTypeId),\n isValidLinkTarget: (expected: string | string[], actual: string) =>\n ontologyView().isValidLinkTarget(expected, actual),\n executeQuery: (input: Omit<ExecuteObjectQueryInput, \"projectId\">) =>\n objectReader.executeQuery(input),\n queryLinks: (input: ObjectQueryLinksInput) => objectReader.queryLinks(input),\n count: (input: Omit<ExecuteObjectCountInput, \"projectId\">) => objectReader.count(input),\n exists: (input: Omit<ExecuteObjectExistsInput, \"projectId\">) => objectReader.exists(input),\n facet: (input: Omit<ExecuteObjectFacetsInput, \"projectId\">) => objectReader.facet(input),\n listLinks: async (input: {\n objectTypeId: string\n objectId: string\n linkId?: string\n direction?: LinkDirection\n }) => {\n return objectReader.listLinks(input)\n },\n getTelemetryHistoryBatch: (input: Omit<TimeseriesHistoryBatchInput, \"projectId\">) => {\n const timeseries = capturedRuntime.storage.timeseries\n return getTelemetryHistoryBatch(input, { storage: timeseries, objectReader })\n },\n getTelemetryHistory: async (input: {\n objectTypeId: string\n objectId: string\n propertyId: string\n from?: Date\n to?: Date\n limit?: number\n order?: \"asc\" | \"desc\"\n }) => {\n const timeseries = capturedRuntime.storage.timeseries\n const objectTypeId = input.objectTypeId\n const objectId = input.objectId\n const propertyId = input.propertyId\n const from = input.from\n const to = input.to\n const limit = input.limit\n const order = input.order\n const [result] = await getTelemetryHistoryBatch(\n {\n series: [{ objectTypeId, objectId, propertyId }],\n ...(from === undefined ? {} : { from }),\n ...(to === undefined ? {} : { to }),\n ...(limit === undefined ? {} : { limitPerSeries: limit }),\n ...(order === undefined ? {} : { order }),\n },\n { storage: timeseries, objectReader }\n )\n return result?.points ?? []\n },\n getLatestTelemetry: async (input: {\n objectTypeId: string\n objectId: string\n propertyId: string\n }) => {\n const timeseries = capturedRuntime.storage.timeseries\n const objectTypeId = input.objectTypeId\n const objectId = input.objectId\n const propertyId = input.propertyId\n return getLatestTelemetryPoint(\n { objectTypeId, objectId, propertyId },\n { storage: timeseries, objectReader }\n )\n },\n list: (params: ListObjectsParams) => objectService.listObjects(capturedRuntime, params),\n get: (objectTypeId: string, primaryId: string) =>\n objectReader.getByPrimaryId({ objectTypeId, primaryId }),\n getPrimaryPropertyId: (objectTypeId: string) => {\n return ontologyView().getPrimaryPropertyId(objectTypeId)\n },\n upsert: (objectTypeId: string, properties: Record<string, unknown>) =>\n objectService.upsertObject(capturedRuntime, objectTypeId, properties),\n upsertBatch: (\n objectTypeId: string,\n items: readonly { properties: Record<string, unknown> }[]\n ) => objectService.upsertObjectBatch(capturedRuntime, objectTypeId, items),\n upsertLink: (\n objectTypeId: string,\n sourceId: string,\n linkId: string,\n target: { targetTypeId: string; targetId: string; properties?: Record<string, unknown> }\n ) => objectService.upsertLink(capturedRuntime, objectTypeId, sourceId, linkId, target),\n upsertLinkBatch: (\n items: readonly {\n objectTypeId: string\n sourceId: string\n linkId: string\n target: { targetTypeId: string; targetId: string; properties?: Record<string, unknown> }\n }[]\n ) => objectService.upsertLinkBatch(capturedRuntime, items),\n removeLink: (\n objectTypeId: string,\n sourceId: string,\n linkId: string,\n target: { targetTypeId: string; targetId: string }\n ) => objectService.removeLink(capturedRuntime, objectTypeId, sourceId, linkId, target),\n appendTelemetry: (\n objectTypeId: string,\n items: readonly { id: string; properties: Record<string, unknown>; at?: Date }[]\n ) => objectService.appendTelemetry(capturedRuntime, objectTypeId, items),\n }\n )\n\n return objects as ObjectsRuntime<TOntologySources>\n}\n",
22
+ "import { assertAuthorized, canViewPipelineRun, isRuntimeAllowed } from \"../authorization\"\nimport type { ExecutionContext } from \"../execution\"\nimport { resolveRuntimeAuthorizationForProject } from \"../execution/authorization\"\nimport type { SixbRuntimeContext } from \"../runtime/types\"\nimport type {\n ListLatestPipelineRunsResult,\n ListPipelineRunsInput,\n ListPipelineRunsResult,\n ListPipelineStepRunsInput,\n ListPipelineStepRunsResult,\n PipelineRunRecord,\n} from \"../storage/pipeline-runs\"\nimport { PipelineError } from \"./errors\"\nimport {\n type PipelineRunRequestResult,\n type RequestPipelineRunInput,\n requestPipelineRun,\n} from \"./request\"\nimport type { PipelineDefinition } from \"./types\"\n\nexport interface PipelineRunsRuntime {\n getById(runId: string): Promise<PipelineRunRecord | null>\n list(\n input?: Omit<ListPipelineRunsInput, \"projectId\" | \"pipelineIds\">\n ): Promise<ListPipelineRunsResult>\n listLatest(pipelineIds: readonly string[]): Promise<ListLatestPipelineRunsResult>\n listSteps(\n runId: string,\n input?: Omit<ListPipelineStepRunsInput, \"projectId\" | \"pipelineRunId\">\n ): Promise<ListPipelineStepRunsResult | null>\n}\n\nexport interface PipelinesRuntime {\n list(): readonly PipelineDefinition[]\n getById(pipelineId: string): PipelineDefinition | null\n request(input: RequestPipelineRunInput): Promise<PipelineRunRequestResult>\n readonly runs: PipelineRunsRuntime\n}\n\nexport function createPipelinesRuntime(\n runtime: SixbRuntimeContext,\n execution: ExecutionContext,\n source: Pick<PipelinesRuntime, \"list\" | \"getById\">\n): PipelinesRuntime {\n const authority = resolveRuntimeAuthorizationForProject(runtime)\n const allowed = (pipelineId: string) =>\n isRuntimeAllowed(runtime, { kind: \"pipeline.run\", pipelineId })\n const visibleIds = () =>\n source\n .list()\n .filter((pipeline) => allowed(pipeline.id))\n .map((pipeline) => pipeline.id)\n const historyFilterIds = () =>\n authority.type === \"unrestricted\"\n ? undefined\n : authority.type === \"principal\"\n ? visibleIds()\n : []\n\n const getRun = async (runId: string) => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") return null\n const run =\n (await runtime.storage.pipelineRuns?.getById({\n projectId: runtime.projectId,\n id: runId,\n })) ?? null\n if (!run) return null\n return authority.type === \"unrestricted\" || canViewPipelineRun(authority.context, run)\n ? run\n : null\n }\n\n return {\n list: () =>\n authority.type === \"denied\" || authority.type === \"delegated\"\n ? []\n : source.list().filter((pipeline) => allowed(pipeline.id)),\n getById: (pipelineId) => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") return null\n const pipeline = source.getById(pipelineId)\n return pipeline && allowed(pipelineId) ? pipeline : null\n },\n request: async (input) => {\n assertAuthorized(runtime, { kind: \"pipeline.run\", pipelineId: input.pipelineId })\n const pipeline = source.getById(input.pipelineId)\n if (!pipeline) throw new PipelineError(`[Sixb] Unknown pipeline '${input.pipelineId}'`)\n return requestPipelineRun(runtime, execution, pipeline, input)\n },\n runs: {\n getById: getRun,\n list: (input = {}) => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") {\n return Promise.resolve({ runs: [], hasMore: false, total: 0 })\n }\n const storage = runtime.storage.pipelineRuns\n if (!storage) return Promise.resolve({ runs: [], hasMore: false, total: 0 })\n return storage.list({\n ...input,\n pipelineIds: historyFilterIds(),\n projectId: runtime.projectId,\n })\n },\n listLatest: (pipelineIds) => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") {\n return Promise.resolve({ runs: [] })\n }\n const storage = runtime.storage.pipelineRuns\n if (!storage || pipelineIds.length === 0) return Promise.resolve({ runs: [] })\n const allowedIds = pipelineIds.filter(allowed)\n return allowedIds.length === 0\n ? Promise.resolve({ runs: [] })\n : storage.listLatestByPipelineIds({\n projectId: runtime.projectId,\n pipelineIds: allowedIds,\n })\n },\n listSteps: async (runId, input = {}) => {\n const storage = runtime.storage.pipelineRuns\n if (!storage || !(await getRun(runId))) return null\n return storage.listSteps({\n ...input,\n pipelineRunId: runId,\n projectId: runtime.projectId,\n })\n },\n },\n }\n}\n",
23
+ "import { canViewProjection, canViewProjectionRun } from \"../authorization\"\nimport { resolveRuntimeAuthorizationForProject } from \"../execution/authorization\"\nimport type { SixbRuntimeContext } from \"../runtime/types\"\nimport type {\n ListLatestProjectionRunsResult,\n ListProjectionRunsInput,\n ListProjectionRunsResult,\n ProjectionRunRecord,\n} from \"../storage/projection-runs\"\nimport type { ProjectionDefinitionCatalog } from \"./registry\"\nimport type {\n LinkProjectionDefinition,\n ObjectProjectionDefinition,\n ProjectionDefinition,\n TelemetryProjectionDefinition,\n} from \"./types\"\n\nexport interface ProjectionRunsRuntime {\n getById(runId: string): Promise<ProjectionRunRecord | null>\n list(\n input?: Omit<ListProjectionRunsInput, \"projectId\" | \"objectTypeIds\">\n ): Promise<ListProjectionRunsResult>\n listLatest(projectionIds: readonly string[]): Promise<ListLatestProjectionRunsResult>\n}\n\nexport interface ProjectionsRuntime {\n list(): readonly ProjectionDefinition[]\n listObjects(): readonly ObjectProjectionDefinition[]\n listLinks(): readonly LinkProjectionDefinition[]\n listTelemetry(): readonly TelemetryProjectionDefinition[]\n getById(projectionId: string): ProjectionDefinition | null\n readonly runs: ProjectionRunsRuntime\n}\n\nexport function createProjectionsRuntime(\n runtime: SixbRuntimeContext,\n source: ProjectionDefinitionCatalog\n): ProjectionsRuntime {\n const authority = resolveRuntimeAuthorizationForProject(runtime)\n const listVisible = <TProjection extends ProjectionDefinition>(\n list: () => readonly TProjection[]\n ): readonly TProjection[] => {\n switch (authority.type) {\n case \"denied\":\n case \"delegated\":\n return []\n case \"principal\":\n return list().filter((projection) => canViewProjection(authority.context, projection))\n case \"unrestricted\":\n return [...list()]\n }\n }\n const visible = (projection: ProjectionDefinition) => {\n switch (authority.type) {\n case \"denied\":\n case \"delegated\":\n return false\n case \"principal\":\n return canViewProjection(authority.context, projection)\n case \"unrestricted\":\n return true\n }\n }\n const visibleIds = (projectionIds: readonly string[]) =>\n projectionIds.filter((projectionId) => {\n const projection = source.getById(projectionId)\n return projection !== null && visible(projection)\n })\n\n return {\n list: () => listVisible(() => source.list()),\n listObjects: () => listVisible(() => source.listObjects()),\n listLinks: () => listVisible(() => source.listLinks()),\n listTelemetry: () => listVisible(() => source.listTelemetry()),\n getById: (projectionId) => {\n switch (authority.type) {\n case \"denied\":\n case \"delegated\":\n return null\n case \"principal\":\n case \"unrestricted\":\n break\n }\n const projection = source.getById(projectionId)\n return projection && visible(projection) ? projection : null\n },\n runs: {\n getById: async (runId) => {\n switch (authority.type) {\n case \"denied\":\n case \"delegated\":\n return null\n case \"principal\":\n case \"unrestricted\":\n break\n }\n const run =\n (await runtime.storage.projectionRuns?.getById({\n projectId: runtime.projectId,\n id: runId,\n })) ?? null\n if (!run) return null\n return authority.type === \"unrestricted\" ||\n canViewProjectionRun(authority.context, run.target)\n ? run\n : null\n },\n list: (input = {}) => {\n switch (authority.type) {\n case \"denied\":\n case \"delegated\":\n return Promise.resolve({ runs: [], hasMore: false, total: 0 })\n case \"principal\":\n case \"unrestricted\":\n break\n }\n const storage = runtime.storage.projectionRuns\n if (!storage) return Promise.resolve({ runs: [], hasMore: false, total: 0 })\n return storage.list({\n ...input,\n objectTypeIds:\n authority.type === \"principal\"\n ? [...authority.context.grants[\"view:object\"]]\n : undefined,\n projectId: runtime.projectId,\n })\n },\n listLatest: (projectionIds) => {\n switch (authority.type) {\n case \"denied\":\n case \"delegated\":\n return Promise.resolve({ runs: [] })\n case \"principal\":\n case \"unrestricted\":\n break\n }\n const storage = runtime.storage.projectionRuns\n if (!storage || projectionIds.length === 0) return Promise.resolve({ runs: [] })\n const ids = visibleIds(projectionIds)\n return ids.length === 0\n ? Promise.resolve({ runs: [] })\n : storage.listLatestByProjectionIds({ projectId: runtime.projectId, projectionIds: ids })\n },\n },\n }\n}\n",
24
+ "import { isRuntimeAllowed } from \"../authorization\"\nimport { resolveRuntimeAuthorizationForProject } from \"../execution/authorization\"\nimport type { DefinitionCatalog } from \"../runtime/definitions\"\nimport type { SixbRuntimeContext } from \"../runtime/types\"\nimport type { ListActiveRuleStatesInput, ListActiveRuleStatesResult } from \"../storage/rules\"\nimport type { RuleDefinition } from \"./types\"\n\nexport interface RuleStatesRuntime {\n list(\n input?: Omit<ListActiveRuleStatesInput, \"projectId\" | \"objectTypeIds\">\n ): Promise<ListActiveRuleStatesResult>\n}\n\nexport interface RulesRuntime {\n list(): readonly RuleDefinition[]\n getById(ruleId: string): RuleDefinition | null\n readonly states: RuleStatesRuntime\n}\n\nexport function createRulesRuntime(\n runtime: SixbRuntimeContext,\n source: DefinitionCatalog<RuleDefinition>\n): RulesRuntime {\n const authority = resolveRuntimeAuthorizationForProject(runtime)\n const visible = (rule: RuleDefinition) => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") return false\n return isRuntimeAllowed(runtime, {\n kind: \"object.view\",\n objectTypeId: rule.subject.objectTypeId,\n })\n }\n\n return {\n list: () =>\n authority.type === \"denied\" || authority.type === \"delegated\"\n ? []\n : source.list().filter(visible),\n getById: (ruleId) => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") return null\n const rule = source.getById(ruleId)\n return rule && visible(rule) ? rule : null\n },\n states: {\n list: (input = {}) => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") {\n return Promise.resolve({ states: [], hasMore: false, total: 0 })\n }\n const storage = runtime.storage.rules\n if (!storage) return Promise.resolve({ states: [], hasMore: false, total: 0 })\n return storage.listActive({\n ...input,\n objectTypeIds:\n authority.type === \"principal\"\n ? [...authority.context.grants[\"view:object\"]]\n : undefined,\n projectId: runtime.projectId,\n })\n },\n },\n }\n}\n",
25
+ "import { resolveRuntimeAuthorizationForProject } from \"../execution/authorization\"\nimport type { DefinitionCatalog } from \"../runtime/definitions\"\nimport type { SixbRuntimeContext } from \"../runtime/types\"\nimport type { ScheduleDefinition } from \"./types\"\n\n/** Schedule definitions visible to an execution; process lifecycle remains on the host. */\nexport type SchedulesRuntime = DefinitionCatalog<ScheduleDefinition>\n\nexport function createSchedulesRuntime(\n runtime: SixbRuntimeContext,\n schedules: DefinitionCatalog<ScheduleDefinition>\n): SchedulesRuntime {\n const authority = resolveRuntimeAuthorizationForProject(runtime)\n return {\n list: () => {\n switch (authority.type) {\n case \"denied\":\n case \"delegated\":\n return []\n case \"principal\":\n case \"unrestricted\":\n return schedules.list()\n }\n },\n getById: (scheduleId) => {\n switch (authority.type) {\n case \"denied\":\n case \"delegated\":\n return null\n case \"principal\":\n case \"unrestricted\":\n return schedules.getById(scheduleId)\n }\n },\n }\n}\n",
26
+ "import { createHash, randomBytes, randomUUID } from \"node:crypto\"\nimport { assertAuthorized, isRuntimeAllowed } from \"../authorization\"\nimport type { AuthorizablePrincipal, ExecutionContext } from \"../execution\"\nimport { resolveExecutionScopeAuthorization } from \"../execution/authorization\"\nimport type { ObjectRef } from \"../ontology\"\nimport type { DefinitionCatalog } from \"../runtime/definitions\"\nimport type { SixbRuntimeContext } from \"../runtime/types\"\nimport { ObjectNotFoundError, type ShareGrantRecord, ShareGrantStorageError } from \"../storage\"\nimport { compileShareAccessPlan } from \"./compiler\"\nimport type { ShareDefinition } from \"./types\"\n\nconst MAX_CREATE_ATTEMPTS = 5\n\nexport type ShareErrorReason =\n | \"invalid_input\"\n | \"not_found\"\n | \"unauthenticated\"\n | \"storage_unavailable\"\n | \"storage_failure\"\n\nexport class ShareError extends Error {\n readonly name = \"ShareError\"\n\n constructor(\n readonly reason: ShareErrorReason,\n message: string,\n options?: ErrorOptions\n ) {\n super(message, options)\n }\n}\n\ntype ShareTargetObjectTypeId<TDefinition extends ShareDefinition> =\n TDefinition[\"target\"][\"objectTypeId\"]\n\n/** Public lifecycle view. Durable secrets and authority internals never cross this boundary. */\nexport type SharedAccessGrant = Omit<\n ShareGrantRecord,\n \"projectId\" | \"authoritySnapshot\" | \"authorityDigest\" | \"tokenHash\"\n>\n\nexport interface SharedAccessInvitation {\n readonly grant: SharedAccessGrant\n /** Returned once. Storage retains only its SHA-256 digest. */\n readonly secret: string\n}\n\nexport interface IssueSharedAccessInput<TDefinition extends ShareDefinition = ShareDefinition> {\n readonly target: ObjectRef<NoInfer<ShareTargetObjectTypeId<TDefinition>>>\n readonly destinationPath: string\n readonly expiresAt: Date\n}\n\nexport interface IssueSharedAccessByIdInput extends IssueSharedAccessInput {\n readonly definitionId: string\n}\n\nexport interface ListSharedAccessInput<TDefinition extends ShareDefinition = ShareDefinition> {\n readonly target?: ObjectRef<NoInfer<ShareTargetObjectTypeId<TDefinition>>>\n readonly includeRevoked?: boolean\n readonly includeExpired?: boolean\n readonly limit?: number\n readonly offset?: number\n}\n\nexport interface ListSharedAccessByIdInput extends Omit<ListSharedAccessInput, \"target\"> {\n readonly definitionId: string\n /** Filter within the definition's target Object Type. */\n readonly primaryId?: string\n}\n\nexport interface SharedAccessGrantListResult {\n readonly grants: readonly SharedAccessGrant[]\n readonly total: number\n readonly hasMore: boolean\n}\n\nexport interface SharesRuntime {\n listDefinitions(): readonly ShareDefinition[]\n getDefinitionById(definitionId: string): ShareDefinition | null\n issue<const TDefinition extends ShareDefinition>(\n definition: TDefinition,\n input: IssueSharedAccessInput<TDefinition>\n ): Promise<SharedAccessInvitation>\n issueById(input: IssueSharedAccessByIdInput): Promise<SharedAccessInvitation>\n list<const TDefinition extends ShareDefinition>(\n definition: TDefinition,\n input?: ListSharedAccessInput<TDefinition>\n ): Promise<SharedAccessGrantListResult>\n listById(input: ListSharedAccessByIdInput): Promise<SharedAccessGrantListResult>\n revoke(grantId: string): Promise<SharedAccessGrant | null>\n}\n\nexport function createSharesRuntime(\n runtime: SixbRuntimeContext,\n execution: ExecutionContext,\n definitions: DefinitionCatalog<ShareDefinition>\n): SharesRuntime {\n const managementPrincipal = (): AuthorizablePrincipal => {\n const authority = resolveExecutionScopeAuthorization(runtime.projectId, {\n execution,\n authorization: runtime.runtimeAuthorization,\n })\n if (authority.type !== \"principal\" || authority.context.principal.type === \"system\") {\n throw new ShareError(\n \"unauthenticated\",\n \"[Sixb] Shared access grants require user or service-account authority.\"\n )\n }\n return {\n type: authority.context.principal.type,\n id: authority.context.principal.id,\n }\n }\n\n const canManage = (shareId: string): boolean => {\n try {\n managementPrincipal()\n return isRuntimeAllowed(runtime, { kind: \"share.manage\", shareId })\n } catch {\n return false\n }\n }\n\n const resolveManageableDefinition = (definitionId: unknown): ShareDefinition => {\n const id = validDefinitionId(definitionId)\n managementPrincipal()\n // Authorize the opaque id before resolving it so callers without `can.share` cannot use the\n // 403/404 distinction as a Share-definition existence oracle.\n assertCanManage(runtime, id)\n return resolveDefinition(definitions, id)\n }\n\n const issueByDefinition = async (\n definition: ShareDefinition,\n input: IssueSharedAccessInput\n ): Promise<SharedAccessInvitation> => {\n assertInputObject(input, \"Shared access issue input\")\n const issuer = managementPrincipal()\n assertCanManage(runtime, definition.id)\n const storage = requireShareStorage(runtime)\n const createdAt = new Date()\n const expiresAt = validFutureDate(input.expiresAt, createdAt)\n const target = exactTarget(definition, input.target)\n\n // This canonical read checks both the caller's current object authority and target existence.\n const object = await runtime.objectReader.getByPrimaryId({\n objectTypeId: target.objectTypeId,\n primaryId: target.primaryId,\n })\n if (!object) {\n throw new ObjectNotFoundError(target.objectTypeId, target.primaryId, \"Share target not found\")\n }\n\n const authoritySnapshot = {\n version: 1 as const,\n access: compileShareAccessPlan({\n share: definition,\n target,\n ontology: runtime.ontology,\n actions: runtime.actionRegistry,\n }),\n }\n\n for (let attempt = 0; attempt < MAX_CREATE_ATTEMPTS; attempt += 1) {\n const secret = randomBytes(32).toString(\"base64url\")\n try {\n const grant = await storage.create({\n id: `shr_${randomUUID()}`,\n projectId: runtime.projectId,\n definitionId: definition.id,\n target,\n issuedBy: issuer,\n authoritySnapshot,\n tokenHash: sha256(secret),\n destinationPath: input.destinationPath,\n createdAt,\n expiresAt,\n })\n return { grant: publicGrant(grant), secret }\n } catch (error) {\n if (error instanceof ShareGrantStorageError && error.code === \"invalid_input\") {\n throw new ShareError(\"invalid_input\", error.message, { cause: error })\n }\n if (\n !(error instanceof ShareGrantStorageError) ||\n error.code !== \"duplicate\" ||\n attempt === MAX_CREATE_ATTEMPTS - 1\n ) {\n throw storageFailure(\"issue\", error)\n }\n }\n }\n\n throw storageFailure(\"issue\")\n }\n\n const listByDefinition = async (\n definition: ShareDefinition,\n input: ListSharedAccessInput = {}\n ): Promise<SharedAccessGrantListResult> => {\n assertInputObject(input, \"Shared access list input\")\n managementPrincipal()\n assertCanManage(runtime, definition.id)\n const storage = requireShareStorage(runtime)\n const target = input.target === undefined ? undefined : exactTarget(definition, input.target)\n try {\n const result = await storage.list({\n projectId: runtime.projectId,\n definitionId: definition.id,\n ...(target === undefined ? {} : { target }),\n includeRevoked: input.includeRevoked,\n includeExpired: input.includeExpired,\n now: new Date(),\n limit: input.limit,\n offset: input.offset,\n })\n return { ...result, grants: result.grants.map(publicGrant) }\n } catch (error) {\n if (error instanceof ShareGrantStorageError && error.code === \"invalid_input\") {\n throw new ShareError(\"invalid_input\", error.message, { cause: error })\n }\n throw storageFailure(\"list\", error)\n }\n }\n\n return {\n listDefinitions: () => definitions.list().filter((definition) => canManage(definition.id)),\n getDefinitionById: (definitionId) => {\n const definition = definitions.getById(definitionId)\n return definition && canManage(definition.id) ? definition : null\n },\n async issue(definition, input) {\n return issueByDefinition(\n resolveManageableDefinition(definitionIdFromReference(definition)),\n input\n )\n },\n async issueById(input) {\n assertInputObject(input, \"Shared access issue input\")\n return issueByDefinition(resolveManageableDefinition(input.definitionId), input)\n },\n async list(definition, input) {\n return listByDefinition(\n resolveManageableDefinition(definitionIdFromReference(definition)),\n input\n )\n },\n async listById(input) {\n assertInputObject(input, \"Shared access list input\")\n const definition = resolveManageableDefinition(input.definitionId)\n const { primaryId, includeRevoked, includeExpired, limit, offset } = input\n return listByDefinition(definition, {\n ...(primaryId === undefined\n ? {}\n : {\n target: {\n objectTypeId: definition.target.objectTypeId,\n primaryId,\n },\n }),\n includeRevoked,\n includeExpired,\n limit,\n offset,\n })\n },\n revoke: async (grantId) => {\n const actor = managementPrincipal()\n const storage = requireShareStorage(runtime)\n if (typeof grantId !== \"string\" || !grantId.trim()) {\n throw new ShareError(\"invalid_input\", \"[Sixb] Shared access grant id must not be empty.\")\n }\n let current: ShareGrantRecord | null\n try {\n current = await storage.getById({ projectId: runtime.projectId, id: grantId })\n } catch (error) {\n throw storageFailure(\"load for revocation\", error)\n }\n if (!current) return null\n // Do not turn grant ids into an existence oracle. Missing definitions and grants outside the\n // caller's management authority are indistinguishable from missing grants.\n if (!definitions.getById(current.definitionId) || !canManage(current.definitionId)) {\n return null\n }\n try {\n const revoked = await storage.revoke({\n projectId: runtime.projectId,\n id: grantId,\n revokedAt: new Date(),\n revokedBy: actor,\n })\n return revoked ? publicGrant(revoked) : null\n } catch (error) {\n throw storageFailure(\"revoke\", error)\n }\n },\n }\n}\n\nfunction definitionIdFromReference(value: unknown): unknown {\n return typeof value === \"object\" && value !== null\n ? (value as { readonly id?: unknown }).id\n : undefined\n}\n\nfunction assertInputObject(value: unknown, label: string): asserts value is object {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new ShareError(\"invalid_input\", `[Sixb] ${label} must be an object.`)\n }\n}\n\nfunction resolveDefinition(\n definitions: DefinitionCatalog<ShareDefinition>,\n definitionId: unknown\n): ShareDefinition {\n const id = validDefinitionId(definitionId)\n const definition = definitions.getById(id)\n if (!definition) {\n throw new ShareError(\"not_found\", `[Sixb] Unknown Share definition '${id}'.`)\n }\n return definition\n}\n\nfunction validDefinitionId(value: unknown): string {\n if (typeof value !== \"string\" || !value.trim()) {\n throw new ShareError(\"invalid_input\", \"[Sixb] Share definition id must not be empty.\")\n }\n return value\n}\n\nfunction assertCanManage(runtime: SixbRuntimeContext, shareId: string): void {\n assertAuthorized(runtime, { kind: \"share.manage\", shareId })\n}\n\nfunction requireShareStorage(runtime: SixbRuntimeContext) {\n const storage = runtime.storage.shareGrants\n if (!storage) {\n throw new ShareError(\n \"storage_unavailable\",\n \"[Sixb] Share grant storage is not configured on this runtime.\"\n )\n }\n return storage\n}\n\nfunction exactTarget(definition: ShareDefinition, value: unknown): ObjectRef {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new ShareError(\"invalid_input\", \"[Sixb] Share target must be an exact object reference.\")\n }\n const objectTypeId = (value as { readonly objectTypeId?: unknown }).objectTypeId\n const primaryId = (value as { readonly primaryId?: unknown }).primaryId\n if (typeof objectTypeId !== \"string\" || typeof primaryId !== \"string\" || !primaryId.trim()) {\n throw new ShareError(\"invalid_input\", \"[Sixb] Share target must be an exact object reference.\")\n }\n if (objectTypeId !== definition.target.objectTypeId) {\n throw new ShareError(\n \"invalid_input\",\n `[Sixb] Share '${definition.id}' targets '${definition.target.objectTypeId}', not '${objectTypeId}'.`\n )\n }\n return Object.freeze({ objectTypeId, primaryId })\n}\n\nfunction validFutureDate(value: unknown, now: Date): Date {\n if (!(value instanceof Date) || !Number.isFinite(value.getTime()) || value <= now) {\n throw new ShareError(\n \"invalid_input\",\n \"[Sixb] Shared access expiry must be a valid future date.\"\n )\n }\n return new Date(value)\n}\n\nfunction sha256(value: string): string {\n return createHash(\"sha256\").update(value).digest(\"hex\")\n}\n\nfunction publicGrant(record: ShareGrantRecord): SharedAccessGrant {\n const {\n projectId: _projectId,\n authoritySnapshot: _authoritySnapshot,\n authorityDigest: _authorityDigest,\n tokenHash: _tokenHash,\n ...grant\n } = record\n return structuredClone(grant)\n}\n\nfunction storageFailure(operation: string, cause?: unknown): ShareError {\n return new ShareError(\"storage_failure\", `[Sixb] Share grant storage failed to ${operation}.`, {\n cause,\n })\n}\n",
27
+ "import { assertAuthorized, isRuntimeAllowed } from \"../authorization\"\nimport type { ExecutionContext } from \"../execution\"\nimport { resolveRuntimeAuthorizationForProject } from \"../execution/authorization\"\nimport type { SixbRuntimeContext } from \"../runtime/types\"\nimport type {\n ListLatestSyncRunsResult,\n ListSyncRunsInput,\n ListSyncRunsResult,\n SyncRunRecord,\n} from \"../storage/sync-runs\"\nimport { SyncValidationError } from \"./errors\"\nimport { type RequestSyncRunInput, requestSyncRun, type SyncRunRequestResult } from \"./request\"\nimport type { SyncDefinition } from \"./types\"\n\nexport interface SyncRunsRuntime {\n getById(runId: string): Promise<SyncRunRecord | null>\n list(input?: Omit<ListSyncRunsInput, \"projectId\" | \"syncIds\">): Promise<ListSyncRunsResult>\n listLatest(syncIds: readonly string[]): Promise<ListLatestSyncRunsResult>\n}\n\nexport interface SyncsRuntime {\n list(): readonly SyncDefinition[]\n getById(syncId: string): SyncDefinition | null\n request(input: RequestSyncRunInput): Promise<SyncRunRequestResult>\n readonly runs: SyncRunsRuntime\n}\n\nexport function createSyncsRuntime(\n runtime: SixbRuntimeContext,\n execution: ExecutionContext,\n source: Pick<SyncsRuntime, \"list\" | \"getById\">\n): SyncsRuntime {\n const authority = resolveRuntimeAuthorizationForProject(runtime)\n const allowed = (syncId: string) => isRuntimeAllowed(runtime, { kind: \"sync.run\", syncId })\n const visibleIds = () =>\n source\n .list()\n .filter((sync) => allowed(sync.id))\n .map((sync) => sync.id)\n const historyFilterIds = () =>\n authority.type === \"unrestricted\"\n ? undefined\n : authority.type === \"principal\"\n ? visibleIds()\n : []\n\n return {\n list: () =>\n authority.type === \"denied\" || authority.type === \"delegated\"\n ? []\n : source.list().filter((sync) => allowed(sync.id)),\n getById: (syncId) => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") return null\n const sync = source.getById(syncId)\n return sync && allowed(syncId) ? sync : null\n },\n request: async (input) => {\n assertAuthorized(runtime, { kind: \"sync.run\", syncId: input.syncId })\n const sync = source.getById(input.syncId)\n if (!sync) throw new SyncValidationError(`[Sixb] Unknown sync '${input.syncId}'`)\n return requestSyncRun(runtime, execution, sync, input)\n },\n runs: {\n getById: async (runId) => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") return null\n const run =\n (await runtime.storage.syncRuns?.getById({\n projectId: runtime.projectId,\n id: runId,\n })) ?? null\n return run && allowed(run.syncId) ? run : null\n },\n list: (input = {}) => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") {\n return Promise.resolve({ runs: [], hasMore: false, total: 0 })\n }\n const storage = runtime.storage.syncRuns\n if (!storage) return Promise.resolve({ runs: [], hasMore: false, total: 0 })\n return storage.list({\n ...input,\n syncIds: historyFilterIds(),\n projectId: runtime.projectId,\n })\n },\n listLatest: (syncIds) => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") {\n return Promise.resolve({ runs: [] })\n }\n const storage = runtime.storage.syncRuns\n if (!storage || syncIds.length === 0) return Promise.resolve({ runs: [] })\n const allowedIds = syncIds.filter(allowed)\n return allowedIds.length === 0\n ? Promise.resolve({ runs: [] })\n : storage.listLatestBySyncIds({ projectId: runtime.projectId, syncIds: allowedIds })\n },\n },\n }\n}\n",
28
+ "export class WorkflowDefinitionError extends Error {\n readonly name = \"WorkflowDefinitionError\"\n}\n\nexport class WorkflowValidationError extends Error {\n readonly name = \"WorkflowValidationError\"\n override readonly cause?: unknown\n\n constructor(message: string, options?: { readonly cause?: unknown }) {\n super(message)\n this.cause = options?.cause\n }\n}\n",
29
+ "import { randomUUID } from \"node:crypto\"\nimport { isDeepStrictEqual } from \"node:util\"\nimport { SYSTEM_PRINCIPAL } from \"../auth\"\nimport { reportRunFailure } from \"../error-reporting/capability\"\nimport { captureSixbFailure } from \"../errors/internal\"\nimport type { DomainEventLog } from \"../events\"\nimport type { RunDispatcher } from \"../execution/dispatch\"\nimport { createPrimitiveExecutionRecord } from \"../execution/durable\"\nimport type { ValueType } from \"../ontology\"\nimport type { Queues } from \"../queues\"\nimport type { SixbDefinitions } from \"../runtime/definitions\"\nimport type { CreateExecutionInput, Storage, WorkflowRunRecord } from \"../storage\"\nimport { WORKFLOW_RUN_FAILURE_CODES, WorkflowRunError } from \"../storage\"\nimport { WorkflowValidationError } from \"./errors\"\nimport type { WorkflowRunRequestResult } from \"./request\"\nimport { snapshotWorkflowInput } from \"./snapshot\"\nimport type { WorkflowDefinition, WorkflowIOSnapshot, WorkflowRunSource } from \"./types\"\n\nexport type AutomaticWorkflowExecutionSource =\n | { readonly type: \"schedule\"; readonly eventId: string }\n | { readonly type: \"event\"; readonly eventId: string }\n\n/** One automatic match already resolved to a stable workflow run identity by the orchestrator. */\nexport interface AutomaticWorkflowRunDispatchInput {\n readonly workflowId: string\n readonly runId: string\n readonly input?: Readonly<Record<string, unknown>>\n readonly scheduleId: string\n readonly source: AutomaticWorkflowExecutionSource\n readonly correlationId: string\n readonly metadata?: Readonly<Record<string, string>>\n}\n\nexport type WorkflowRunDispatchPort = RunDispatcher<\n AutomaticWorkflowRunDispatchInput,\n WorkflowRunRequestResult\n>\n\nexport interface WorkflowRunDispatcherDependencies {\n readonly id: string\n readonly definitions: Pick<SixbDefinitions, \"ontology\" | \"workflows\">\n readonly storage: Storage\n readonly queues: Pick<Queues, \"workflows\">\n readonly events: DomainEventLog\n}\n\ninterface DispatchWorkflowRunInput {\n readonly errorReporterHost: object\n readonly projectId: string\n readonly workflow: WorkflowDefinition\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n readonly storage: Storage\n readonly queue: Queues[\"workflows\"]\n readonly events: DomainEventLog\n readonly runId?: string\n readonly input?: Readonly<Record<string, unknown>>\n readonly source?: WorkflowRunSource\n readonly requesterGroupIds: readonly string[]\n readonly metadata?: Readonly<Record<string, string>>\n readonly queueJobId?: string\n readonly createExecution: (executionId: string, runId: string) => Promise<CreateExecutionInput>\n}\n\ninterface PreparedWorkflowRun {\n readonly runId: string\n readonly snapshot: WorkflowIOSnapshot\n}\n\ntype PersistedWorkflowRun =\n | {\n readonly created: false\n readonly run: WorkflowRunRecord\n }\n | {\n readonly created: true\n readonly run: WorkflowRunRecord\n readonly execution: CreateExecutionInput\n readonly queuedAt: Date\n }\n\n/** Core-owned durable dispatch boundary used by automatic trigger runtimes. */\nexport class WorkflowRunDispatcher implements WorkflowRunDispatchPort {\n constructor(private readonly dependencies: WorkflowRunDispatcherDependencies) {}\n\n async dispatch(input: AutomaticWorkflowRunDispatchInput): Promise<WorkflowRunRequestResult> {\n assertAutomaticDispatchInput(input)\n const workflow = this.dependencies.definitions.workflows.getById(input.workflowId)\n if (!workflow) {\n throw new WorkflowValidationError(`[Sixb] Unknown workflow '${input.workflowId}'`)\n }\n\n const result = await dispatchWorkflowRun({\n errorReporterHost: this.dependencies,\n projectId: this.dependencies.id,\n workflow,\n valueTypesById: this.dependencies.definitions.ontology.getValueTypesById(),\n storage: this.dependencies.storage,\n queue: this.dependencies.queues.workflows,\n events: this.dependencies.events,\n runId: input.runId,\n input: input.input,\n source: {\n type: \"schedule\",\n scheduleId: input.scheduleId,\n eventId: input.source.eventId,\n principal: SYSTEM_PRINCIPAL,\n },\n requesterGroupIds: [],\n metadata: input.metadata,\n queueJobId: input.runId,\n createExecution: async (executionId, runId) =>\n createPrimitiveExecutionRecord({\n id: executionId,\n primitive: { kind: \"workflow\", id: workflow.id, runId },\n origin: {\n type: \"automatic\",\n projectId: this.dependencies.id,\n source: input.source,\n correlationId: input.correlationId,\n },\n }),\n })\n if (!result.created) {\n await assertAutomaticExecutionIdentity(this.dependencies, input, result.runId)\n }\n return result\n }\n}\n\n/** Persist a workflow execution and run before publishing its queue job. */\nexport async function dispatchWorkflowRun(\n input: DispatchWorkflowRunInput\n): Promise<WorkflowRunRequestResult> {\n const request = prepareWorkflowRun(input)\n const persisted = await persistWorkflowRun(input, request)\n if (!persisted.created) return existingWorkflowRunResult(persisted.run)\n return publishWorkflowRun(input, persisted)\n}\n\nfunction prepareWorkflowRun(input: DispatchWorkflowRunInput): PreparedWorkflowRun {\n const value = input.input ?? {}\n return {\n runId: resolveWorkflowRunId(input.runId),\n snapshot: snapshotWorkflowInput({\n workflow: input.workflow,\n value,\n valueTypesById: input.valueTypesById,\n }),\n }\n}\n\nasync function persistWorkflowRun(\n input: DispatchWorkflowRunInput,\n request: PreparedWorkflowRun\n): Promise<PersistedWorkflowRun> {\n const workflowRuns = input.storage.workflowRuns\n if (!workflowRuns) {\n throw new WorkflowValidationError(\"[Sixb] Workflow run storage is not configured.\")\n }\n\n const existing = await workflowRuns.getById({\n projectId: input.projectId,\n id: request.runId,\n })\n if (existing) {\n assertExistingWorkflowRun(existing, input.workflow.id, request.snapshot)\n return { run: existing, created: false }\n }\n\n const execution = await input.createExecution(`exec_${randomUUID()}`, request.runId)\n const queuedAt = new Date()\n try {\n return await input.storage.transaction(\n async (tx): Promise<PersistedWorkflowRun> => {\n const raced = await tx.workflowRuns?.getById({\n projectId: input.projectId,\n id: request.runId,\n })\n if (raced) {\n assertExistingWorkflowRun(raced, input.workflow.id, request.snapshot)\n return { run: raced, created: false }\n }\n if (!tx.workflowRuns) {\n throw new WorkflowValidationError(\"[Sixb] Workflow run storage is not configured.\")\n }\n\n await tx.executions.create(execution)\n const run = await tx.workflowRuns.queue({\n projectId: input.projectId,\n id: request.runId,\n executionId: execution.id,\n workflowId: input.workflow.id,\n input: request.snapshot,\n queuedAt,\n requesterGroupIds: input.requesterGroupIds,\n })\n return { run, execution, queuedAt, created: true }\n },\n { isolation: \"serializable\" }\n )\n } catch (error) {\n if (!(error instanceof WorkflowRunError)) throw error\n const raced = await workflowRuns.getById({\n projectId: input.projectId,\n id: request.runId,\n })\n if (!raced) throw error\n assertExistingWorkflowRun(raced, input.workflow.id, request.snapshot)\n return { run: raced, created: false }\n }\n}\n\nasync function publishWorkflowRun(\n input: DispatchWorkflowRunInput,\n persisted: Extract<PersistedWorkflowRun, { readonly created: true }>\n): Promise<WorkflowRunRequestResult> {\n let job: Awaited<ReturnType<Queues[\"workflows\"][\"enqueue\"]>>[number] | undefined\n try {\n const jobs = await input.queue.enqueue({\n projectId: input.projectId,\n jobs: [\n {\n ...(input.queueJobId === undefined ? {} : { id: input.queueJobId }),\n type: \"workflow.run.requested\",\n payload: { runId: persisted.run.id },\n ...(input.metadata === undefined ? {} : { metadata: input.metadata }),\n },\n ],\n })\n job = jobs[0]\n } catch (error) {\n await failWorkflowRunPublication(input, persisted.run, error)\n throw error\n }\n\n await input.events.emit(\n {\n events: [\n {\n type: \"workflow.run.queued\",\n payload: {\n workflowId: persisted.run.workflowId,\n runId: persisted.run.id,\n queuedAt: persisted.queuedAt.toISOString(),\n ...(job?.id ? { jobId: job.id } : {}),\n ...(input.source === undefined ? {} : { source: input.source }),\n },\n },\n ],\n correlationId: persisted.execution.correlationId,\n },\n { source: \"Sixb\" }\n )\n\n return {\n workflowId: persisted.run.workflowId,\n runId: persisted.run.id,\n queuedAt: persisted.queuedAt.toISOString(),\n jobId: job?.id,\n created: true,\n }\n}\n\nasync function failWorkflowRunPublication(\n input: DispatchWorkflowRunInput,\n run: WorkflowRunRecord,\n error: unknown\n): Promise<void> {\n const workflowRuns = input.storage.workflowRuns\n if (!workflowRuns) {\n throw new WorkflowValidationError(\"[Sixb] Workflow run storage is not configured.\")\n }\n const failure = captureSixbFailure(error, {\n allowedCodes: WORKFLOW_RUN_FAILURE_CODES,\n defaultCode: \"internal.unexpected\",\n details: { workflowId: run.workflowId, runId: run.id },\n })\n await workflowRuns.finish({\n projectId: input.projectId,\n id: run.id,\n status: \"failed\",\n error: failure,\n })\n reportRunFailure(input.errorReporterHost, error, {\n projectId: input.projectId,\n runKind: \"workflow\",\n run: { runId: run.id, workflowId: run.workflowId },\n failure,\n })\n}\n\nfunction resolveWorkflowRunId(runId: string | undefined): string {\n if (runId === undefined) return `run_${randomUUID()}`\n if (!runId.trim()) {\n throw new WorkflowValidationError(\"[Sixb] Workflow run id must not be empty\")\n }\n return runId\n}\n\nfunction assertExistingWorkflowRun(\n existing: WorkflowRunRecord,\n workflowId: string,\n input: WorkflowRunRecord[\"input\"]\n): void {\n if (existing.workflowId !== workflowId || !isDeepStrictEqual(existing.input, input)) {\n throw new WorkflowValidationError(\n `[Sixb] Workflow run '${existing.id}' already exists with a different request payload.`\n )\n }\n}\n\nfunction existingWorkflowRunResult(existing: WorkflowRunRecord): WorkflowRunRequestResult {\n return {\n workflowId: existing.workflowId,\n runId: existing.id,\n queuedAt: (existing.queuedAt ?? existing.startedAt).toISOString(),\n created: false,\n }\n}\n\nfunction assertAutomaticDispatchInput(input: AutomaticWorkflowRunDispatchInput): void {\n assertNonBlank(input.workflowId, \"Workflow id\")\n assertNonBlank(input.runId, \"Workflow run id\")\n assertNonBlank(input.scheduleId, \"Workflow schedule id\")\n assertNonBlank(input.source.eventId, \"Workflow source event id\")\n assertNonBlank(input.correlationId, \"Workflow correlation id\")\n}\n\nasync function assertAutomaticExecutionIdentity(\n dependencies: WorkflowRunDispatcherDependencies,\n input: AutomaticWorkflowRunDispatchInput,\n runId: string\n): Promise<void> {\n const run = await dependencies.storage.workflowRuns?.getById({\n projectId: dependencies.id,\n id: runId,\n })\n const execution = run\n ? await dependencies.storage.executions.getById({\n projectId: dependencies.id,\n id: run.executionId,\n })\n : null\n if (\n !execution ||\n execution.source.type !== input.source.type ||\n execution.source.eventId !== input.source.eventId ||\n execution.correlationId !== input.correlationId ||\n execution.requestedBy !== undefined\n ) {\n throw new WorkflowValidationError(\n `[Sixb] Workflow run '${runId}' already exists with different automatic provenance.`\n )\n }\n}\n\nfunction assertNonBlank(value: string, label: string): void {\n if (!value.trim()) throw new WorkflowValidationError(`[Sixb] ${label} must not be empty.`)\n}\n",
30
+ "import { isActionDefinition } from \"../actions\"\nimport type { AgentToolCatalog } from \"../agents\"\nimport type { ModelCatalog } from \"../models\"\nimport { isModelReasoning } from \"../models/language-model\"\nimport type { SchemaOrRef, ValueType } from \"../ontology\"\nimport { validateSchemaOrRefValue } from \"../ontology\"\nimport type { ScheduleDefinition } from \"../schedules\"\nimport type { SecurityDefinitionCatalog } from \"../security\"\nimport { WorkflowDefinitionError, WorkflowValidationError } from \"./errors\"\nimport type {\n AgentStepDefinition,\n InterventionDefinition,\n InterventionFieldConfig,\n InterventionResponseConfig,\n StepDefinition,\n WorkflowActionNodeDefinition,\n WorkflowAgentNodeDefinition,\n WorkflowDefinition,\n WorkflowInterventionNodeDefinition,\n WorkflowNodeDefinition,\n WorkflowStepNodeDefinition,\n WorkflowTriggerDefinition,\n} from \"./types\"\n\nexport function assertNonEmpty(\n value: string,\n subject: \"Step\" | \"Agent step\" | \"Workflow\" | \"Intervention\",\n field: string\n): void {\n if (!value.trim()) {\n throw new WorkflowDefinitionError(`${subject} ${field} must not be empty.`)\n }\n}\n\nexport function isStepDefinition(value: unknown): value is StepDefinition {\n return (\n isRecord(value) &&\n value.kind === \"step\" &&\n typeof value.id === \"string\" &&\n isRecord(value.input) &&\n isRecord(value.output) &&\n typeof value.handler === \"function\"\n )\n}\n\nexport function isAgentStepDefinition(value: unknown): value is AgentStepDefinition {\n return (\n isRecord(value) &&\n value.kind === \"agentStep\" &&\n typeof value.id === \"string\" &&\n (value.model === undefined || isLanguageModel(value.model)) &&\n (value.reasoning === undefined || isModelReasoning(value.reasoning)) &&\n typeof value.instructions === \"string\" &&\n isStringArray(value.groupIds) &&\n isStringArray(value.toolNames) &&\n isRecord(value.input) &&\n isRecord(value.output) &&\n typeof value.prompt === \"function\"\n )\n}\n\nexport function isInterventionDefinition(value: unknown): value is InterventionDefinition {\n return (\n isRecord(value) &&\n value.kind === \"intervention\" &&\n typeof value.id === \"string\" &&\n isRecord(value.input) &&\n isRecord(value.response) &&\n (value.defaults === undefined || typeof value.defaults === \"function\")\n )\n}\n\nexport function isWorkflowDefinition(value: unknown): value is WorkflowDefinition {\n return (\n isRecord(value) &&\n value.kind === \"workflow\" &&\n typeof value.id === \"string\" &&\n isRecord(value.input) &&\n Array.isArray(value.triggers) &&\n Array.isArray(value.nodes)\n )\n}\n\nexport function validateWorkflowDefinition(value: unknown): asserts value is WorkflowDefinition {\n if (!isWorkflowDefinition(value)) {\n throw new WorkflowDefinitionError(\"Invalid workflow definition.\")\n }\n\n assertNonEmpty(value.id, \"Workflow\", \"id\")\n\n if (value.nodes.length === 0) {\n throw new WorkflowDefinitionError(`Workflow \"${value.id}\" must contain at least one node.`)\n }\n\n const nodeIds = new Set<string>()\n const nodeKeys = new Set<string>()\n\n for (const node of value.nodes) {\n validateWorkflowNodeDefinition(value.id, node)\n\n if (nodeIds.has(node.id)) {\n throw new WorkflowDefinitionError(\n `Duplicate workflow node id \"${node.id}\" in workflow \"${value.id}\".`\n )\n }\n nodeIds.add(node.id)\n\n if (nodeKeys.has(node.key)) {\n throw new WorkflowDefinitionError(\n `Duplicate workflow node key \"${node.key}\" in workflow \"${value.id}\".`\n )\n }\n nodeKeys.add(node.key)\n }\n}\n\nexport function validateWorkflowsAtStartup(options: {\n workflows: readonly WorkflowDefinition[]\n registeredSchedules: ReadonlyMap<string, ScheduleDefinition>\n registeredActionIds: ReadonlySet<string>\n models?: ModelCatalog\n tools: AgentToolCatalog\n}): readonly WorkflowDefinition[] {\n for (const workflow of options.workflows) {\n validateWorkflowDefinition(workflow)\n\n for (const trigger of workflow.triggers) {\n validateWorkflowTriggerAtStartup(\n workflow.id,\n trigger,\n options.registeredSchedules,\n Object.keys(workflow.input)\n )\n }\n\n for (const node of workflow.nodes) {\n if (node.type === \"action\" && !options.registeredActionIds.has(node.action.id)) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflow.id}\" references unknown action \"${node.action.id}\". Add it to 'actions' in createSixb() or export it from 'actions/'.`\n )\n }\n if (node.type === \"agent\") {\n validateWorkflowAgentStepRuntimeReferences(workflow.id, node.agentStep, options)\n }\n }\n }\n\n return options.workflows\n}\n\n/** Validate workflow task memberships once the security catalog has been composed. */\nexport function validateWorkflowAgentStepGroupReferences(\n workflows: readonly WorkflowDefinition[],\n security: SecurityDefinitionCatalog\n): void {\n for (const workflow of workflows) {\n for (const node of workflow.nodes) {\n if (node.type !== \"agent\") continue\n for (const groupId of node.agentStep.groupIds) {\n if (!security.getGroupById(groupId)) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflow.id}\" agent step \"${node.id}\" references unknown group \"${groupId}\". Add it to 'security/groups/' or pass it to createSixb({ groups }).`\n )\n }\n }\n }\n }\n}\n\nfunction validateWorkflowAgentStepRuntimeReferences(\n workflowId: string,\n step: AgentStepDefinition,\n options: { readonly models?: ModelCatalog; readonly tools: AgentToolCatalog }\n): void {\n if (step.model === undefined && options.models === undefined) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" agent step \"${step.id}\" needs a model. Configure 'models.language' or pass 'model' to defineAgentStep().`\n )\n }\n if (step.model !== undefined && options.models !== undefined) {\n const ref = { provider: step.model.providerId, modelId: step.model.modelId }\n if (options.models.language.getByRef(ref) === null) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" agent step \"${step.id}\" uses unknown language model \"${ref.provider}/${ref.modelId}\". Add it to 'models.language' in createSixb().`\n )\n }\n }\n for (const toolName of step.toolNames) {\n if (options.tools.getByName(toolName) === null) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" agent step \"${step.id}\" uses unknown project tool \"${toolName}\". Add it to 'tools' in createSixb().`\n )\n }\n }\n}\n\nexport function validateWorkflowInput(params: {\n readonly workflow: WorkflowDefinition\n readonly value: unknown\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): Readonly<Record<string, unknown>> {\n return validateWorkflowContractRecord({\n shape: params.workflow.input,\n value: params.value,\n path: `Workflow \"${params.workflow.id}\" input`,\n valueTypesById: params.valueTypesById,\n })\n}\n\nexport function validateWorkflowStepInput(params: {\n readonly workflowId: string\n readonly step: StepDefinition\n readonly value: unknown\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): Readonly<Record<string, unknown>> {\n return validateWorkflowContractRecord({\n shape: params.step.input,\n value: params.value,\n path: `Workflow \"${params.workflowId}\" step \"${params.step.id}\" input`,\n valueTypesById: params.valueTypesById,\n })\n}\n\nexport function validateWorkflowStepOutput(params: {\n readonly workflowId: string\n readonly step: StepDefinition\n readonly value: unknown\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): Readonly<Record<string, unknown>> {\n return validateWorkflowContractRecord({\n shape: params.step.output,\n value: params.value,\n path: `Workflow \"${params.workflowId}\" step \"${params.step.id}\" output`,\n valueTypesById: params.valueTypesById,\n })\n}\n\nexport function validateWorkflowInterventionInput(params: {\n readonly workflowId: string\n readonly intervention: InterventionDefinition\n readonly value: unknown\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): Readonly<Record<string, unknown>> {\n return validateWorkflowContractRecord({\n shape: params.intervention.input,\n value: params.value,\n path: `Workflow \"${params.workflowId}\" intervention \"${params.intervention.id}\" input`,\n valueTypesById: params.valueTypesById,\n })\n}\n\nexport function validateWorkflowInterventionResponse(params: {\n readonly workflowId: string\n readonly intervention: InterventionDefinition\n readonly value: unknown\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): Readonly<Record<string, unknown>> {\n return validateWorkflowInterventionResponseRecord({\n response: params.intervention.response,\n value: params.value,\n path: `Workflow \"${params.workflowId}\" intervention \"${params.intervention.id}\" response`,\n partial: false,\n valueTypesById: params.valueTypesById,\n })\n}\n\nexport function validateWorkflowInterventionDefaultResponse(params: {\n readonly workflowId: string\n readonly intervention: InterventionDefinition\n readonly value: unknown\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): Readonly<Record<string, unknown>> {\n return validateWorkflowInterventionResponseRecord({\n response: params.intervention.response,\n value: params.value,\n path: `Workflow \"${params.workflowId}\" intervention \"${params.intervention.id}\" defaultResponse`,\n partial: true,\n valueTypesById: params.valueTypesById,\n })\n}\n\nfunction validateWorkflowTriggerAtStartup(\n workflowId: string,\n trigger: WorkflowTriggerDefinition,\n registeredSchedules: ReadonlyMap<string, ScheduleDefinition>,\n inputFields: readonly string[]\n): void {\n if (!isRecord(trigger) || trigger.type !== \"schedule\") {\n throw new WorkflowDefinitionError(`Workflow \"${workflowId}\" contains an unsupported trigger.`)\n }\n validateScheduleWorkflowTrigger(workflowId, trigger, registeredSchedules, inputFields)\n}\n\nfunction validateScheduleWorkflowTrigger(\n workflowId: string,\n trigger: Extract<WorkflowTriggerDefinition, { readonly type: \"schedule\" }>,\n registeredSchedules: ReadonlyMap<string, ScheduleDefinition>,\n inputFields: readonly string[]\n): void {\n if (typeof trigger.scheduleId !== \"string\" || !trigger.scheduleId.trim()) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" contains a schedule trigger with an empty schedule id.`\n )\n }\n\n const schedule = registeredSchedules.get(trigger.scheduleId)\n if (!schedule) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" references unknown schedule \"${trigger.scheduleId}\". Add it to 'schedules' in createSixb() or export it from 'schedules/'.`\n )\n }\n\n if (trigger.mapper !== undefined && typeof trigger.mapper !== \"function\") {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" schedule \"${trigger.scheduleId}\" mapper must be a function.`\n )\n }\n\n if (trigger.mapper !== undefined && schedule.trigger.type !== \"event\") {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" cron schedule \"${trigger.scheduleId}\" does not accept a mapper.`\n )\n }\n\n if (trigger.mapper === undefined && inputFields.length > 0) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" schedule \"${trigger.scheduleId}\" requires a mapper because workflow input is not empty: ${inputFields.join(\", \")}.`\n )\n }\n}\n\nfunction validateWorkflowNodeDefinition(workflowId: string, node: WorkflowNodeDefinition): void {\n if (!isRecord(node)) {\n throw new WorkflowDefinitionError(`Workflow \"${workflowId}\" contains an invalid node.`)\n }\n\n if (node.type === \"step\") {\n validateStepNodeDefinition(workflowId, node)\n return\n }\n\n if (node.type === \"agent\") {\n validateAgentNodeDefinition(workflowId, node)\n return\n }\n\n if (node.type === \"intervention\") {\n validateInterventionNodeDefinition(workflowId, node)\n return\n }\n\n if (node.type === \"action\") {\n validateActionNodeDefinition(workflowId, node)\n return\n }\n\n throw new WorkflowDefinitionError(`Workflow \"${workflowId}\" contains an unsupported node type.`)\n}\n\nfunction validateAgentNodeDefinition(workflowId: string, node: WorkflowAgentNodeDefinition): void {\n if (typeof node.id !== \"string\" || !node.id.trim()) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" contains an agent step with an empty id.`\n )\n }\n if (typeof node.key !== \"string\" || !node.key.trim()) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" contains agent step \"${node.id}\" with an empty derived key.`\n )\n }\n if (!isAgentStepDefinition(node.agentStep)) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" contains an invalid agent node \"${node.id}\".`\n )\n }\n if (node.id !== node.agentStep.id) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" agent node id \"${node.id}\" does not match agent step definition id \"${node.agentStep.id}\".`\n )\n }\n if (!node.agentStep.instructions.trim()) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" agent step \"${node.id}\" instructions must not be empty.`\n )\n }\n assertUniqueNonEmptyAgentStepValues(workflowId, node.id, \"group\", node.agentStep.groupIds)\n assertUniqueNonEmptyAgentStepValues(workflowId, node.id, \"tool\", node.agentStep.toolNames)\n if (node.mapper !== undefined && typeof node.mapper !== \"function\") {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" agent node \"${node.id}\" mapper must be a function.`\n )\n }\n}\n\nfunction assertUniqueNonEmptyAgentStepValues(\n workflowId: string,\n stepId: string,\n kind: \"group\" | \"tool\",\n values: readonly string[]\n): void {\n const seen = new Set<string>()\n for (const value of values) {\n if (!value.trim()) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" agent step \"${stepId}\" has an empty ${kind} id.`\n )\n }\n if (seen.has(value)) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" agent step \"${stepId}\" has duplicate ${kind} '${value}'.`\n )\n }\n seen.add(value)\n }\n}\n\nfunction isLanguageModel(value: unknown): boolean {\n return (typeof value === \"object\" || typeof value === \"function\") && value !== null\n}\n\nfunction isStringArray(value: unknown): value is readonly string[] {\n if (!Array.isArray(value)) return false\n for (let index = 0; index < value.length; index += 1) {\n if (!Object.hasOwn(value, index) || typeof value[index] !== \"string\") return false\n }\n return true\n}\n\nexport function validateWorkflowAgentStepInput(params: {\n readonly workflowId: string\n readonly agentStep: AgentStepDefinition\n readonly value: unknown\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): Readonly<Record<string, unknown>> {\n return validateWorkflowContractRecord({\n shape: params.agentStep.input,\n value: params.value,\n path: `Workflow \"${params.workflowId}\" agent step \"${params.agentStep.id}\" input`,\n valueTypesById: params.valueTypesById,\n })\n}\n\nexport function validateWorkflowAgentStepOutput(params: {\n readonly workflowId: string\n readonly agentStep: AgentStepDefinition\n readonly value: unknown\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): Readonly<Record<string, unknown>> {\n return validateWorkflowContractRecord({\n shape: params.agentStep.output,\n value: params.value,\n path: `Workflow \"${params.workflowId}\" agent step \"${params.agentStep.id}\" output`,\n valueTypesById: params.valueTypesById,\n })\n}\n\nfunction validateStepNodeDefinition(workflowId: string, node: WorkflowStepNodeDefinition): void {\n if (typeof node.id !== \"string\" || !node.id.trim()) {\n throw new WorkflowDefinitionError(`Workflow \"${workflowId}\" contains a step with an empty id.`)\n }\n\n if (typeof node.key !== \"string\" || !node.key.trim()) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" contains step \"${node.id}\" with an empty derived key.`\n )\n }\n\n if (!isStepDefinition(node.step)) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" contains an invalid step node \"${node.id}\".`\n )\n }\n\n if (node.id !== node.step.id) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" step node id \"${node.id}\" does not match step definition id \"${node.step.id}\".`\n )\n }\n\n if (node.mapper !== undefined && typeof node.mapper !== \"function\") {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" step node \"${node.id}\" mapper must be a function.`\n )\n }\n}\n\nfunction validateInterventionNodeDefinition(\n workflowId: string,\n node: WorkflowInterventionNodeDefinition\n): void {\n if (typeof node.id !== \"string\" || !node.id.trim()) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" contains an intervention with an empty id.`\n )\n }\n\n if (typeof node.key !== \"string\" || !node.key.trim()) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" contains intervention \"${node.id}\" with an empty derived key.`\n )\n }\n\n if (!isInterventionDefinition(node.intervention)) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" contains an invalid intervention node \"${node.id}\".`\n )\n }\n\n if (node.id !== node.intervention.id) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" intervention node id \"${node.id}\" does not match intervention definition id \"${node.intervention.id}\".`\n )\n }\n\n if (node.mapper !== undefined && typeof node.mapper !== \"function\") {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" intervention node \"${node.id}\" mapper must be a function.`\n )\n }\n}\n\nfunction validateActionNodeDefinition(\n workflowId: string,\n node: WorkflowActionNodeDefinition\n): void {\n if (typeof node.id !== \"string\" || !node.id.trim()) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" contains an action with an empty id.`\n )\n }\n\n if (typeof node.key !== \"string\" || !node.key.trim()) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" contains action \"${node.id}\" with an empty derived key.`\n )\n }\n\n if (!isActionDefinition(node.action)) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" contains an invalid action node \"${node.id}\".`\n )\n }\n\n if (node.id !== node.action.id) {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" action node id \"${node.id}\" does not match action definition id \"${node.action.id}\".`\n )\n }\n\n if (node.mapper !== undefined && typeof node.mapper !== \"function\") {\n throw new WorkflowDefinitionError(\n `Workflow \"${workflowId}\" action node \"${node.id}\" mapper must be a function.`\n )\n }\n}\n\nfunction validateWorkflowContractRecord(params: {\n readonly shape: Readonly<Record<string, unknown>>\n readonly value: unknown\n readonly path: string\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): Readonly<Record<string, unknown>> {\n if (!isRecord(params.value)) {\n throw new WorkflowValidationError(`[Sixb] ${params.path} must be an object`)\n }\n\n const fieldIds = new Set(Object.keys(params.shape))\n for (const fieldId of Object.keys(params.value)) {\n if (!fieldIds.has(fieldId)) {\n throw new WorkflowValidationError(`[Sixb] Unknown field '${params.path}.${fieldId}'`)\n }\n }\n\n for (const [fieldId, schema] of Object.entries(params.shape)) {\n const fieldValue = params.value[fieldId]\n if (fieldValue === undefined) {\n throw new WorkflowValidationError(`[Sixb] Missing required field '${params.path}.${fieldId}'`)\n }\n\n try {\n validateSchemaOrRefValue(\n schema as SchemaOrRef,\n fieldValue,\n `${params.path}.${fieldId}`,\n params.valueTypesById\n )\n } catch (error) {\n throw toWorkflowValidationError(error)\n }\n }\n\n return params.value\n}\n\nfunction validateWorkflowInterventionResponseRecord(params: {\n readonly response: InterventionResponseConfig\n readonly value: unknown\n readonly path: string\n readonly partial: boolean\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): Readonly<Record<string, unknown>> {\n if (!isRecord(params.value)) {\n throw new WorkflowValidationError(`[Sixb] ${params.path} must be an object`)\n }\n\n const fieldIds = new Set(Object.keys(params.response))\n for (const fieldId of Object.keys(params.value)) {\n if (!fieldIds.has(fieldId)) {\n throw new WorkflowValidationError(`[Sixb] Unknown field '${params.path}.${fieldId}'`)\n }\n }\n\n for (const [fieldId, field] of Object.entries(params.response)) {\n const fieldValue = params.value[fieldId]\n if (fieldValue === undefined) {\n if (!params.partial && isInterventionResponseFieldRequired(field)) {\n throw new WorkflowValidationError(\n `[Sixb] Missing required field '${params.path}.${fieldId}'`\n )\n }\n continue\n }\n\n try {\n validateSchemaOrRefValue(\n interventionResponseFieldSchema(field),\n fieldValue,\n `${params.path}.${fieldId}`,\n params.valueTypesById\n )\n } catch (error) {\n throw toWorkflowValidationError(error)\n }\n }\n\n return params.value\n}\n\nexport function isInterventionFieldConfig(value: unknown): value is InterventionFieldConfig {\n return isRecord(value) && \"schema\" in value\n}\n\nexport function interventionResponseFieldSchema(field: unknown): SchemaOrRef {\n return (isInterventionFieldConfig(field) ? field.schema : field) as SchemaOrRef\n}\n\nexport function isInterventionResponseFieldRequired(field: unknown): boolean {\n return !isInterventionFieldConfig(field) || field.required !== false\n}\n\nfunction toWorkflowValidationError(error: unknown): WorkflowValidationError {\n if (error instanceof WorkflowValidationError) {\n return error\n }\n\n if (error instanceof Error) {\n return new WorkflowValidationError(error.message, { cause: error })\n }\n\n return new WorkflowValidationError(String(error), { cause: error })\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n}\n",
31
+ "import type { ActionSubject } from \"../actions\"\nimport { isPlainRecord, type JsonValue } from \"../json\"\nimport { isObjectRefSchema, type Schema, type SchemaOrRef, type ValueType } from \"../ontology\"\nimport { WorkflowValidationError } from \"./errors\"\nimport type {\n AgentStepDefinition,\n InterventionDefinition,\n InterventionResponseConfig,\n StepDefinition,\n WorkflowDefinition,\n WorkflowIOSnapshot,\n} from \"./types\"\nimport {\n interventionResponseFieldSchema,\n validateWorkflowAgentStepInput,\n validateWorkflowAgentStepOutput,\n validateWorkflowInput,\n validateWorkflowInterventionDefaultResponse,\n validateWorkflowInterventionInput,\n validateWorkflowInterventionResponse,\n validateWorkflowStepInput,\n validateWorkflowStepOutput,\n} from \"./validation\"\n\nexport function snapshotWorkflowAgentStepInput(params: {\n readonly workflowId: string\n readonly agentStep: AgentStepDefinition\n readonly value: unknown\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): WorkflowIOSnapshot {\n const value = validateWorkflowAgentStepInput(params)\n return snapshotWorkflowContractRecord({\n shape: params.agentStep.input as Readonly<Record<string, SchemaOrRef>>,\n value,\n path: `Workflow \"${params.workflowId}\" agent step \"${params.agentStep.id}\" input`,\n valueTypesById: params.valueTypesById,\n })\n}\n\nexport function snapshotWorkflowAgentStepOutput(params: {\n readonly workflowId: string\n readonly agentStep: AgentStepDefinition\n readonly value: unknown\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): WorkflowIOSnapshot {\n const value = validateWorkflowAgentStepOutput(params)\n return snapshotWorkflowContractRecord({\n shape: params.agentStep.output as Readonly<Record<string, SchemaOrRef>>,\n value,\n path: `Workflow \"${params.workflowId}\" agent step \"${params.agentStep.id}\" output`,\n valueTypesById: params.valueTypesById,\n })\n}\n\nexport function snapshotWorkflowInput(params: {\n readonly workflow: WorkflowDefinition\n readonly value: unknown\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): WorkflowIOSnapshot {\n const value = validateWorkflowInput(params)\n return snapshotWorkflowContractRecord({\n shape: params.workflow.input as Readonly<Record<string, SchemaOrRef>>,\n value,\n path: `Workflow \"${params.workflow.id}\" input`,\n valueTypesById: params.valueTypesById,\n })\n}\n\nexport function snapshotWorkflowStepInput(params: {\n readonly workflowId: string\n readonly step: StepDefinition\n readonly value: unknown\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): WorkflowIOSnapshot {\n const value = validateWorkflowStepInput(params)\n return snapshotWorkflowContractRecord({\n shape: params.step.input as Readonly<Record<string, SchemaOrRef>>,\n value,\n path: `Workflow \"${params.workflowId}\" step \"${params.step.id}\" input`,\n valueTypesById: params.valueTypesById,\n })\n}\n\nexport function snapshotWorkflowStepOutput(params: {\n readonly workflowId: string\n readonly step: StepDefinition\n readonly value: unknown\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): WorkflowIOSnapshot {\n const value = validateWorkflowStepOutput(params)\n return snapshotWorkflowContractRecord({\n shape: params.step.output as Readonly<Record<string, SchemaOrRef>>,\n value,\n path: `Workflow \"${params.workflowId}\" step \"${params.step.id}\" output`,\n valueTypesById: params.valueTypesById,\n })\n}\n\nexport function snapshotWorkflowInterventionInput(params: {\n readonly workflowId: string\n readonly intervention: InterventionDefinition\n readonly value: unknown\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): WorkflowIOSnapshot {\n const value = validateWorkflowInterventionInput(params)\n return snapshotWorkflowContractRecord({\n shape: params.intervention.input as Readonly<Record<string, SchemaOrRef>>,\n value,\n path: `Workflow \"${params.workflowId}\" intervention \"${params.intervention.id}\" input`,\n valueTypesById: params.valueTypesById,\n })\n}\n\nexport function snapshotWorkflowInterventionResponse(params: {\n readonly workflowId: string\n readonly intervention: InterventionDefinition\n readonly value: unknown\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): WorkflowIOSnapshot {\n const value = validateWorkflowInterventionResponse(params)\n return snapshotWorkflowInterventionResponseRecord({\n response: params.intervention.response,\n value,\n path: `Workflow \"${params.workflowId}\" intervention \"${params.intervention.id}\" response`,\n valueTypesById: params.valueTypesById,\n })\n}\n\nexport function snapshotWorkflowInterventionDefaultResponse(params: {\n readonly workflowId: string\n readonly intervention: InterventionDefinition\n readonly value: unknown\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): WorkflowIOSnapshot {\n const value = validateWorkflowInterventionDefaultResponse(params)\n return snapshotWorkflowInterventionResponseRecord({\n response: params.intervention.response,\n value,\n path: `Workflow \"${params.workflowId}\" intervention \"${params.intervention.id}\" defaultResponse`,\n valueTypesById: params.valueTypesById,\n })\n}\n\nexport function snapshotWorkflowActionInput(params: {\n readonly subject?: ActionSubject\n readonly params: Readonly<Record<string, unknown>>\n}): WorkflowIOSnapshot {\n const snapshot: Record<string, JsonValue> = {\n params: snapshotJsonValue(params.params, \"Workflow action params\"),\n }\n\n if (params.subject && params.subject.kind !== \"none\") {\n snapshot.subject = snapshotJsonValue(params.subject, \"Workflow action subject\")\n }\n\n return snapshot\n}\n\nfunction snapshotWorkflowContractRecord(params: {\n readonly shape: Readonly<Record<string, SchemaOrRef>>\n readonly value: Readonly<Record<string, unknown>>\n readonly path: string\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): WorkflowIOSnapshot {\n const snapshot: Record<string, JsonValue> = {}\n\n for (const [fieldId, schema] of Object.entries(params.shape)) {\n snapshot[fieldId] = snapshotSchemaOrRefValue({\n schema,\n value: params.value[fieldId],\n path: `${params.path}.${fieldId}`,\n valueTypesById: params.valueTypesById,\n })\n }\n\n return snapshot\n}\n\nfunction snapshotWorkflowInterventionResponseRecord(params: {\n readonly response: InterventionResponseConfig\n readonly value: Readonly<Record<string, unknown>>\n readonly path: string\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): WorkflowIOSnapshot {\n const snapshot: Record<string, JsonValue> = {}\n\n for (const [fieldId, value] of Object.entries(params.value)) {\n if (value === undefined) {\n continue\n }\n\n snapshot[fieldId] = snapshotSchemaOrRefValue({\n schema: interventionResponseFieldSchema(params.response[fieldId]),\n value,\n path: `${params.path}.${fieldId}`,\n valueTypesById: params.valueTypesById,\n })\n }\n\n return snapshot\n}\n\nfunction snapshotSchemaOrRefValue(params: {\n readonly schema: SchemaOrRef\n readonly value: unknown\n readonly path: string\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): JsonValue {\n if (isObjectRefSchema(params.schema)) {\n if (!isRecord(params.value)) {\n throw cannotSerialize(params.path)\n }\n\n return {\n objectTypeId: String(params.value.objectTypeId),\n primaryId: String(params.value.primaryId),\n }\n }\n\n return snapshotSchemaValue({\n schema: params.schema,\n value: params.value,\n path: params.path,\n valueTypesById: params.valueTypesById,\n })\n}\n\nfunction snapshotSchemaValue(params: {\n readonly schema: Schema\n readonly value: unknown\n readonly path: string\n readonly valueTypesById: ReadonlyMap<string, ValueType>\n}): JsonValue {\n const { schema, value, path, valueTypesById } = params\n\n if (typeof schema === \"string\") {\n if (schema === \"date\" || schema === \"timestamp\") {\n if (value instanceof Date) {\n return snapshotDate(value, path)\n }\n return snapshotJsonValue(value, path)\n }\n\n return snapshotJsonValue(value, path)\n }\n\n if (schema.type === \"enum\") {\n return snapshotJsonValue(value, path)\n }\n\n if (schema.type === \"array\") {\n if (!Array.isArray(value)) {\n throw cannotSerialize(path)\n }\n\n return value.map((item, index) =>\n snapshotSchemaValue({\n schema: schema.items,\n value: item,\n path: `${path}[${index}]`,\n valueTypesById,\n })\n )\n }\n\n if (schema.type === \"map\") {\n if (!isRecord(value)) {\n throw cannotSerialize(path)\n }\n\n const snapshot: Record<string, JsonValue> = {}\n for (const [key, entry] of Object.entries(value)) {\n snapshot[key] = snapshotSchemaValue({\n schema: schema.valueSchema,\n value: entry,\n path: `${path}.${key}`,\n valueTypesById,\n })\n }\n return snapshot\n }\n\n if (schema.type === \"object\") {\n if (!isRecord(value)) {\n throw cannotSerialize(path)\n }\n\n const snapshot: Record<string, JsonValue> = {}\n for (const [fieldId, field] of Object.entries(schema.properties)) {\n const fieldValue = value[fieldId]\n if (fieldValue === undefined) {\n continue\n }\n\n if (fieldValue === null) {\n snapshot[fieldId] = null\n continue\n }\n\n snapshot[fieldId] = snapshotSchemaValue({\n schema: field.schema,\n value: fieldValue,\n path: `${path}.${fieldId}`,\n valueTypesById,\n })\n }\n return snapshot\n }\n\n if (schema.type === \"valueTypeRef\") {\n const valueType = valueTypesById.get(schema.valueTypeId)\n if (!valueType) {\n throw new WorkflowValidationError(\n `[Sixb] Unknown valueTypeRef '${schema.valueTypeId}' at ${path}`\n )\n }\n\n return snapshotSchemaValue({\n schema: valueType.schema,\n value,\n path,\n valueTypesById,\n })\n }\n\n return snapshotJsonValue(value, path)\n}\n\nfunction snapshotJsonValue(value: unknown, path: string): JsonValue {\n if (value === null || typeof value === \"string\" || typeof value === \"boolean\") {\n return value\n }\n\n if (typeof value === \"number\") {\n if (!Number.isFinite(value)) {\n throw cannotSerialize(path)\n }\n return value\n }\n\n if (value instanceof Date) {\n return snapshotDate(value, path)\n }\n\n if (Array.isArray(value)) {\n return value.map((item, index) => snapshotJsonValue(item, `${path}[${index}]`))\n }\n\n if (isPlainRecord(value)) {\n const snapshot: Record<string, JsonValue> = {}\n for (const [key, entry] of Object.entries(value)) {\n snapshot[key] = snapshotJsonValue(entry, `${path}.${key}`)\n }\n return snapshot\n }\n\n throw cannotSerialize(path)\n}\n\nfunction snapshotDate(value: Date, path: string): string {\n if (Number.isNaN(value.getTime())) {\n throw cannotSerialize(path)\n }\n\n return value.toISOString()\n}\n\nfunction cannotSerialize(path: string): WorkflowValidationError {\n return new WorkflowValidationError(`[Sixb] ${path} cannot be serialized as workflow IO`)\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n}\n",
32
+ "import { snapshotRequesterGroupIds } from \"../auth/attribution\"\nimport { assertAuthorized } from \"../authorization\"\nimport { resolveExecutionScopeAuthorization } from \"../execution/authorization\"\nimport {\n createPrimitiveExecutionRecord,\n ensureExecutionRecord,\n executionRecordInputFromRuntime,\n} from \"../execution/durable\"\nimport type { ExecutionContext } from \"../execution/types\"\nimport type { SixbRuntimeContext } from \"../runtime/types\"\nimport { dispatchWorkflowRun } from \"./run-dispatch\"\nimport type { WorkflowDefinition, WorkflowRunSource } from \"./types\"\n\nexport interface WorkflowRunRequestOptions {\n readonly input?: Readonly<Record<string, unknown>>\n readonly runId?: string\n readonly source?: WorkflowRunSource\n}\n\nexport interface RequestWorkflowRunInput extends WorkflowRunRequestOptions {\n readonly workflowId: string\n}\n\nexport interface WorkflowRunRequestResult {\n readonly workflowId: string\n readonly runId: string\n readonly queuedAt: string\n readonly jobId?: string\n /**\n * `false` when a deterministic `runId` already existed for the same workflow,\n * so no second queue job was enqueued.\n */\n readonly created: boolean\n}\n\n/**\n * Validate, snapshot, persist, queue, and announce a workflow run request.\n *\n * Operates on an already-resolved workflow definition and the shared runtime\n * context, so it stays decoupled from how workflows are registered or looked up.\n */\nexport async function requestWorkflowRun(\n runtime: SixbRuntimeContext,\n execution: ExecutionContext,\n workflow: WorkflowDefinition,\n options: WorkflowRunRequestOptions = {}\n): Promise<WorkflowRunRequestResult> {\n resolveExecutionScopeAuthorization(runtime.projectId, {\n execution,\n authorization: runtime.runtimeAuthorization,\n })\n assertAuthorized(runtime, { kind: \"workflow.run\", workflowId: workflow.id })\n const requesterGroupIds = execution.requestedBy\n ? await snapshotRequesterGroupIds({\n auth: runtime.storage.auth,\n projectId: runtime.projectId,\n principal: execution.requestedBy,\n })\n : []\n return dispatchWorkflowRun({\n errorReporterHost: runtime,\n projectId: runtime.projectId,\n workflow,\n valueTypesById: runtime.ontology.getValueTypesById(),\n storage: runtime.storage,\n queue: runtime.queues.workflows,\n events: runtime.events,\n runId: options.runId,\n input: options.input,\n source: options.source,\n requesterGroupIds,\n createExecution: async (executionId, runId) => {\n const caller = await ensureExecutionRecord(\n runtime.storage.executions,\n executionRecordInputFromRuntime({\n execution,\n runtimeAuthorization: runtime.runtimeAuthorization,\n })\n )\n return createPrimitiveExecutionRecord({\n id: executionId,\n primitive: { kind: \"workflow\", id: workflow.id, runId },\n origin: { type: \"execution\", parent: caller },\n })\n },\n })\n}\n",
33
+ "import {\n assertAuthorized,\n canViewWorkflowIntervention,\n canViewWorkflowRun,\n isRuntimeAllowed,\n} from \"../authorization\"\nimport type { AuthorizablePrincipal, ExecutionContext } from \"../execution\"\nimport { resolveRuntimeAuthorizationForProject } from \"../execution/authorization\"\nimport { resolveExecutionCosts } from \"../runtime/ai-cost\"\nimport { resolveExecutionUsage } from \"../runtime/ai-usage\"\nimport type { SixbRuntimeContext } from \"../runtime/types\"\nimport type { AiCostSummary } from \"../storage/ai-cost\"\nimport type { AiModelCallUsage } from \"../storage/ai-usage\"\nimport type {\n ListWorkflowInterventionsInput,\n ListWorkflowInterventionsResult,\n WorkflowInterventionRecord,\n} from \"../storage/workflow-interventions\"\nimport type {\n ListLatestWorkflowRunsResult,\n ListWorkflowNodeRunsInput,\n ListWorkflowNodeRunsResult,\n ListWorkflowRunsInput,\n ListWorkflowRunsResult,\n WorkflowAgentNodeRunRecord,\n WorkflowNodeRunRecord,\n WorkflowRunRecord,\n WorkflowRunStorage,\n} from \"../storage/workflow-runs\"\nimport { WorkflowValidationError } from \"./errors\"\nimport {\n type RequestWorkflowRunInput,\n requestWorkflowRun,\n type WorkflowRunRequestOptions,\n type WorkflowRunRequestResult,\n} from \"./request\"\nimport type { WorkflowDefinition } from \"./types\"\n\nexport interface WorkflowRunsRuntime {\n getById(runId: string): Promise<WorkflowRunView | null>\n list(\n input?: Omit<ListWorkflowRunsInput, \"projectId\" | \"workflowIds\">\n ): Promise<WorkflowRunListResult>\n listLatest(workflowIds: readonly string[]): Promise<LatestWorkflowRunListResult>\n listNodes(\n runId: string,\n input?: ListWorkflowRunNodesInput\n ): Promise<WorkflowNodeRunListResult | null>\n}\n\n/** Execution-facing run view with provenance resolved from the immutable execution ledger. */\nexport interface WorkflowRunView extends WorkflowRunRecord {\n readonly requestedBy?: AuthorizablePrincipal\n}\n\nexport interface WorkflowRunListResult extends Omit<ListWorkflowRunsResult, \"runs\"> {\n readonly runs: readonly WorkflowRunView[]\n}\n\nexport interface LatestWorkflowRunListResult extends Omit<ListLatestWorkflowRunsResult, \"runs\"> {\n readonly runs: readonly WorkflowRunView[]\n}\n\nexport type ListWorkflowRunNodesInput = Omit<\n ListWorkflowNodeRunsInput,\n \"projectId\" | \"workflowRunId\" | \"workflowId\"\n>\n\n/** Execution-facing Agent node view derived from its run row and model-call ledger. */\nexport interface WorkflowAgentNodeRunView\n extends Omit<WorkflowAgentNodeRunRecord, \"execution\" | \"actorId\"> {\n readonly usage?: AiModelCallUsage\n /** Preferred valuation; omitted when there are no calls or cost storage is unavailable. */\n readonly cost?: AiCostSummary\n}\n\n/** Execution-facing workflow node view with optional Agent execution details. */\nexport interface WorkflowNodeRunView extends WorkflowNodeRunRecord {\n readonly agentExecution?: WorkflowAgentNodeRunView\n}\n\nexport interface WorkflowNodeRunListResult extends Omit<ListWorkflowNodeRunsResult, \"nodes\"> {\n readonly nodes: readonly WorkflowNodeRunView[]\n}\n\nexport interface WorkflowInterventionsRuntime {\n getById(interventionId: string): Promise<WorkflowInterventionRecord | null>\n list(\n input?: Omit<ListWorkflowInterventionsInput, \"projectId\" | \"workflowIds\">\n ): Promise<ListWorkflowInterventionsResult>\n}\n\nexport interface WorkflowsRuntime {\n list(): readonly WorkflowDefinition[]\n getById(workflowId: string): WorkflowDefinition | null\n request(\n workflow: WorkflowDefinition,\n options?: WorkflowRunRequestOptions\n ): Promise<WorkflowRunRequestResult>\n requestById(input: RequestWorkflowRunInput): Promise<WorkflowRunRequestResult>\n readonly runs: WorkflowRunsRuntime\n readonly interventions: WorkflowInterventionsRuntime\n}\n\nexport function createWorkflowsRuntime(\n runtime: SixbRuntimeContext,\n execution: ExecutionContext,\n source: Pick<WorkflowsRuntime, \"list\" | \"getById\">\n): WorkflowsRuntime {\n const authority = resolveRuntimeAuthorizationForProject(runtime)\n const allowed = (workflowId: string) =>\n isRuntimeAllowed(runtime, { kind: \"workflow.run\", workflowId })\n const canAccessHistory = (workflowId: string) => {\n switch (authority.type) {\n case \"denied\":\n case \"delegated\":\n return false\n case \"unrestricted\":\n return true\n case \"principal\":\n return allowed(workflowId) && source.getById(workflowId) !== null\n }\n }\n const visibleIds = () =>\n source\n .list()\n .filter((workflow) => allowed(workflow.id))\n .map((workflow) => workflow.id)\n const historyFilterIds = () =>\n authority.type === \"unrestricted\"\n ? undefined\n : authority.type === \"principal\"\n ? visibleIds()\n : []\n const getVisibleRunRecord = async (runId: string): Promise<WorkflowRunRecord | null> => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") return null\n const run =\n (await runtime.storage.workflowRuns?.getById({\n projectId: runtime.projectId,\n id: runId,\n })) ?? null\n if (!run || !canAccessHistory(run.workflowId)) return null\n return authority.type === \"unrestricted\" || canViewWorkflowRun(authority.context, run)\n ? run\n : null\n }\n const getRun = async (runId: string): Promise<WorkflowRunView | null> => {\n const run = await getVisibleRunRecord(runId)\n return run ? attachRequestedBy(runtime, run) : null\n }\n const listNodes = async (\n runId: string,\n input: ListWorkflowRunNodesInput = {}\n ): Promise<WorkflowNodeRunListResult | null> => {\n const storage = runtime.storage.workflowRuns\n if (!storage || !(await getVisibleRunRecord(runId))) return null\n const result = await storage.nodes.list({\n ...input,\n workflowRunId: runId,\n projectId: runtime.projectId,\n })\n return {\n ...result,\n nodes: await attachWorkflowNodeViews(runtime, storage, result.nodes),\n }\n }\n\n return {\n list: () =>\n authority.type === \"denied\" || authority.type === \"delegated\"\n ? []\n : source.list().filter((workflow) => allowed(workflow.id)),\n getById: (workflowId) => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") return null\n const workflow = source.getById(workflowId)\n return workflow && allowed(workflowId) ? workflow : null\n },\n request: (workflow, options) => requestWorkflowRun(runtime, execution, workflow, options),\n requestById: async (input) => {\n assertAuthorized(runtime, { kind: \"workflow.run\", workflowId: input.workflowId })\n const workflow = source.getById(input.workflowId)\n if (!workflow) {\n throw new WorkflowValidationError(`[Sixb] Unknown workflow '${input.workflowId}'`)\n }\n return requestWorkflowRun(runtime, execution, workflow, input)\n },\n runs: {\n getById: getRun,\n list: async (input = {}) => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") {\n return { runs: [], hasMore: false, total: 0 }\n }\n const storage = runtime.storage.workflowRuns\n if (!storage) return { runs: [], hasMore: false, total: 0 }\n const result = await storage.list({\n ...input,\n workflowIds: historyFilterIds(),\n projectId: runtime.projectId,\n })\n return {\n ...result,\n runs: await Promise.all(result.runs.map((run) => attachRequestedBy(runtime, run))),\n }\n },\n listLatest: async (workflowIds) => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") {\n return { runs: [] }\n }\n const storage = runtime.storage.workflowRuns\n if (!storage || workflowIds.length === 0) return { runs: [] }\n const allowedIds = workflowIds.filter(canAccessHistory)\n if (allowedIds.length === 0) return { runs: [] }\n const result = await storage.listLatestByWorkflowIds({\n projectId: runtime.projectId,\n workflowIds: allowedIds,\n })\n return {\n runs: await Promise.all(result.runs.map((run) => attachRequestedBy(runtime, run))),\n }\n },\n listNodes,\n },\n interventions: {\n getById: async (interventionId) => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") return null\n const intervention =\n (await runtime.storage.workflowInterventions?.getById({\n projectId: runtime.projectId,\n id: interventionId,\n })) ?? null\n if (!intervention || !canAccessHistory(intervention.workflowId)) return null\n return authority.type === \"unrestricted\" ||\n canViewWorkflowIntervention(authority.context, intervention)\n ? intervention\n : null\n },\n list: (input = {}) => {\n if (authority.type === \"denied\" || authority.type === \"delegated\") {\n return Promise.resolve({ interventions: [], hasMore: false, total: 0 })\n }\n const storage = runtime.storage.workflowInterventions\n if (!storage) return Promise.resolve({ interventions: [], hasMore: false, total: 0 })\n return storage.list({\n ...input,\n workflowIds: historyFilterIds(),\n projectId: runtime.projectId,\n })\n },\n },\n }\n}\n\nasync function attachWorkflowNodeViews(\n runtime: SixbRuntimeContext,\n storage: WorkflowRunStorage,\n nodes: readonly WorkflowNodeRunRecord[]\n): Promise<readonly WorkflowNodeRunView[]> {\n const executions = await Promise.all(\n nodes.map((node) =>\n node.nodeType === \"agent\"\n ? storage.agentNodes.getByNodeRunId({\n projectId: runtime.projectId,\n nodeRunId: node.id,\n })\n : null\n )\n )\n const agentExecutions = executions.filter(\n (execution): execution is WorkflowAgentNodeRunRecord => execution !== null\n )\n if (agentExecutions.length === 0) return nodes\n\n const executionIds = agentExecutions.map((execution) => execution.executionId)\n const [usages, costs] = await Promise.all([\n resolveExecutionUsage({\n storage: runtime.storage.aiUsage,\n projectId: runtime.projectId,\n executionIds,\n }),\n resolveExecutionCosts({\n storage: runtime.storage.aiCosts,\n projectId: runtime.projectId,\n executionIds,\n }),\n ])\n const accountingByExecutionId = new Map(\n agentExecutions.map((execution, index) => [\n execution.executionId,\n { usage: usages[index], cost: costs[index] },\n ])\n )\n\n return nodes.map((node, index) => {\n const execution = executions[index]\n if (!execution) return node\n const accounting = accountingByExecutionId.get(execution.executionId)\n return {\n ...node,\n agentExecution: toWorkflowAgentNodeRunView(\n execution,\n accounting?.usage,\n accounting?.usage === undefined ? undefined : accounting.cost\n ),\n }\n })\n}\n\nfunction toWorkflowAgentNodeRunView(\n execution: WorkflowAgentNodeRunRecord,\n usage: AiModelCallUsage | undefined,\n cost: AiCostSummary | undefined\n): WorkflowAgentNodeRunView {\n return {\n projectId: execution.projectId,\n nodeRunId: execution.nodeRunId,\n executionId: execution.executionId,\n status: execution.status,\n prompt: execution.prompt,\n modelId: execution.modelId,\n finishReason: execution.finishReason,\n trace: execution.trace,\n diagnostics: execution.diagnostics,\n error: execution.error,\n attempt: execution.attempt,\n createdAt: execution.createdAt,\n startedAt: execution.startedAt,\n completedAt: execution.completedAt,\n ...(usage === undefined ? {} : { usage }),\n ...(usage === undefined || cost === undefined ? {} : { cost }),\n }\n}\n\nasync function attachRequestedBy(\n runtime: SixbRuntimeContext,\n run: WorkflowRunRecord\n): Promise<WorkflowRunView> {\n const execution = await runtime.storage.executions.getById({\n projectId: runtime.projectId,\n id: run.executionId,\n })\n if (!execution) {\n throw new Error(\n `[Sixb] Workflow run '${run.id}' references missing execution '${run.executionId}'.`\n )\n }\n return {\n ...run,\n ...(execution.requestedBy === undefined\n ? {}\n : { requestedBy: structuredClone(execution.requestedBy) }),\n }\n}\n",
34
+ "import { type ActionsRuntime, createActionsRuntime } from \"../actions/execution\"\nimport { type AgentRuntime, createAgentRuntime } from \"../agents/execution\"\nimport { type AiUsageRuntime, createAiUsageRuntime } from \"../ai-usage\"\nimport { type BlobsRuntime, createBlobsRuntime } from \"../blob-storage/execution\"\nimport type { BlobStorage } from \"../blob-storage/types\"\nimport { registerConnectorConnectionsRuntime } from \"../connectors/connections/capability\"\nimport type { ConnectorConnectionProcess } from \"../connectors/connections/contracts\"\nimport { createConnectorConnectionsRuntime } from \"../connectors/connections/execution\"\nimport { type ConnectorRuntime, createConnectorRuntime } from \"../connectors/execution\"\nimport type { ConnectorService } from \"../connectors/service\"\nimport { createDatasetsRuntime, type DatasetsRuntime } from \"../datasets/execution\"\nimport { createEventsRuntime, type EventsRuntime } from \"../events/execution\"\nimport type { ExecutionContext } from \"../execution\"\nimport { resolveExecutionScopeAuthorization } from \"../execution/authorization\"\nimport { assertAuthorizedObjectReaderBinding } from \"../execution/authorized-object-reader\"\nimport type { LakeStorage } from \"../lake-storage/types\"\nimport { createLogsRuntime, type LogsRuntime } from \"../logging/execution\"\nimport type { LoggingService } from \"../logging/service\"\nimport { createObjectsRuntime, type ObjectsRuntime } from \"../objects/execution\"\nimport { createPipelinesRuntime, type PipelinesRuntime } from \"../pipelines/execution\"\nimport { createProjectionsRuntime, type ProjectionsRuntime } from \"../projections/execution\"\nimport { createRulesRuntime, type RulesRuntime } from \"../rules/execution\"\nimport { createSchedulesRuntime, type SchedulesRuntime } from \"../schedules/execution\"\nimport { createSharesRuntime, type SharesRuntime } from \"../shares/execution\"\nimport { createSyncsRuntime, type SyncsRuntime } from \"../syncs/execution\"\nimport { createWorkflowsRuntime, type WorkflowsRuntime } from \"../workflows/execution\"\nimport type { SixbDefinitions } from \"./definitions\"\nimport { shareOntologyMutationRuntime } from \"./ontology-mutations\"\nimport type { OntologySource, SixbRuntimeContext } from \"./types\"\n\n/** Domain SDK bound to one immutable execution and one registered runtime authority. */\nexport interface Sixb<\n TOntologySources extends readonly OntologySource[] = readonly OntologySource[],\n> {\n readonly execution: ExecutionContext\n readonly objects: ObjectsRuntime<TOntologySources>\n readonly actions: ActionsRuntime\n readonly datasets: DatasetsRuntime\n readonly workflows: WorkflowsRuntime\n readonly syncs: SyncsRuntime\n readonly pipelines: PipelinesRuntime\n readonly projections: ProjectionsRuntime\n readonly rules: RulesRuntime\n readonly agent: AgentRuntime\n readonly aiUsage: AiUsageRuntime\n readonly events: EventsRuntime\n readonly logs: LogsRuntime\n readonly schedules: SchedulesRuntime\n readonly shares: SharesRuntime\n readonly connector: ConnectorRuntime\n readonly blobs: BlobsRuntime\n}\n\nconst boundSixbInstances = new WeakSet<object>()\n\nexport interface SixbDependencies {\n readonly definitions: SixbDefinitions\n readonly logging: LoggingService\n readonly connectorService: ConnectorService\n readonly connectorConnections?: ConnectorConnectionProcess\n readonly blobStorage: BlobStorage\n readonly lakeStorage: LakeStorage\n}\n\nexport function createBoundSixb<TOntologySources extends readonly OntologySource[]>(\n runtime: SixbRuntimeContext,\n dependencies: SixbDependencies,\n execution: ExecutionContext\n): Sixb<TOntologySources> {\n resolveExecutionScopeAuthorization(runtime.projectId, {\n execution,\n authorization: runtime.runtimeAuthorization,\n })\n assertAuthorizedObjectReaderBinding({\n reader: runtime.objectReader,\n scope: { execution, authorization: runtime.runtimeAuthorization },\n })\n const sixb: Sixb<TOntologySources> = {\n execution,\n ...createExecutionFacades<TOntologySources>(runtime, execution, dependencies),\n }\n shareOntologyMutationRuntime(runtime, sixb)\n if (dependencies.connectorConnections) {\n registerConnectorConnectionsRuntime(\n sixb,\n createConnectorConnectionsRuntime(runtime, execution, dependencies.connectorConnections)\n )\n }\n boundSixbInstances.add(sixb)\n return sixb\n}\n\n/** Internal nominal guard for execution boundaries that accept a narrow structural host. */\nexport function isBoundSixb<\n TOntologySources extends readonly OntologySource[] = readonly OntologySource[],\n>(value: unknown): value is Sixb<TOntologySources> {\n return typeof value === \"object\" && value !== null && boundSixbInstances.has(value)\n}\n\nfunction createExecutionFacades<TOntologySources extends readonly OntologySource[]>(\n runtime: SixbRuntimeContext,\n execution: ExecutionContext,\n dependencies: SixbDependencies\n): Omit<Sixb<TOntologySources>, \"execution\"> {\n return {\n objects: createObjectsRuntime<TOntologySources>(runtime, execution),\n actions: createActionsRuntime(runtime, execution),\n datasets: createDatasetsRuntime(\n runtime,\n execution,\n dependencies.definitions.datasets,\n dependencies.lakeStorage,\n dependencies.blobStorage\n ),\n workflows: createWorkflowsRuntime(runtime, execution, dependencies.definitions.workflows),\n syncs: createSyncsRuntime(runtime, execution, dependencies.definitions.syncs),\n pipelines: createPipelinesRuntime(runtime, execution, dependencies.definitions.pipelines),\n projections: createProjectionsRuntime(runtime, dependencies.definitions.projections),\n rules: createRulesRuntime(runtime, dependencies.definitions.rules),\n agent: createAgentRuntime(runtime, execution, dependencies.definitions.models),\n aiUsage: createAiUsageRuntime(runtime, dependencies.definitions.security),\n events: createEventsRuntime(runtime),\n logs: createLogsRuntime(runtime, dependencies.logging),\n schedules: createSchedulesRuntime(runtime, dependencies.definitions.schedules),\n shares: createSharesRuntime(runtime, execution, dependencies.definitions.shares),\n connector: createConnectorRuntime(runtime, execution, dependencies.connectorService),\n blobs: createBlobsRuntime(runtime, execution, dependencies.blobStorage),\n }\n}\n",
35
+ "import { type AgentExecutionAuthorization, agentServiceAccountId } from \"../agents/authority\"\nimport type { OntologySource } from \"../ontology\"\nimport { isBoundSixb, type Sixb } from \"../runtime/sixb\"\nimport type { CreateExecutionInput, ExecutionRecord } from \"../storage/executions\"\nimport { ExecutionStorageError } from \"../storage/executions\"\n\nexport { ensureExecutionRecord } from \"./durable\"\n\nimport { createAgentRuntimeAuthorization, getAuthorizationRef } from \"./authorization\"\nimport type {\n AuthorizablePrincipal,\n ExecutionContext,\n ExecutionScope,\n RuntimeAuthorization,\n} from \"./types\"\n\n/** Minimal host boundary required by agent workers. */\nexport interface AgentExecutionHost {\n readonly id: string\n withScope(scope: ExecutionScope): object\n}\n\n/** Whether a conversational Agent run can durably restore this request authority without widening it. */\nexport function canInheritAgentRequestAuthorization(authorization: RuntimeAuthorization): boolean {\n const ref = getAuthorizationRef(authorization)\n return (\n ref.type === \"disabled\" ||\n (ref.type === \"principal\" && ref.principal.type === \"user\" && ref.credential !== undefined)\n )\n}\n\n/** Build the immutable child execution owned by one direct or Workflow Agent run. */\nexport function createAgentExecutionRecord(input: {\n readonly id: string\n readonly parent: ExecutionRecord\n readonly actorId: string\n readonly runId: string\n readonly principal: Extract<AuthorizablePrincipal, { readonly type: \"serviceAccount\" }>\n}): CreateExecutionInput {\n assertAgentPrincipal(input.actorId, input.principal)\n return {\n id: input.id,\n projectId: input.parent.projectId,\n ...(input.parent.requestedBy === undefined\n ? {}\n : { requestedBy: structuredClone(input.parent.requestedBy) }),\n executor: { type: \"agent\", runId: input.runId },\n source: { type: \"execution\", executionId: input.parent.id },\n correlationId: input.parent.correlationId,\n authorizationRef: {\n type: \"principal\",\n principal: structuredClone(input.principal),\n },\n }\n}\n\n/** Build an Agent execution that carries its parent's exact durable authority reference. */\nexport function createInheritedAgentExecutionRecord(input: {\n readonly id: string\n readonly parent: ExecutionRecord\n readonly runId: string\n}): CreateExecutionInput {\n const authority = input.parent.authorizationRef\n if (\n authority.type !== \"disabled\" &&\n !(\n authority.type === \"principal\" &&\n authority.principal.type === \"user\" &&\n authority.credential !== undefined\n )\n ) {\n throw new ExecutionStorageError(\n \"invalid_input\",\n `[Sixb] Agent run '${input.runId}' requires inheritable user or auth-disabled authority.`\n )\n }\n\n return {\n id: input.id,\n projectId: input.parent.projectId,\n ...(input.parent.requestedBy === undefined\n ? {}\n : { requestedBy: structuredClone(input.parent.requestedBy) }),\n executor: { type: \"agent\", runId: input.runId },\n source: { type: \"execution\", executionId: input.parent.id },\n correlationId: input.parent.correlationId,\n authorizationRef: structuredClone(authority),\n }\n}\n\n/** Bind a worker to the immutable execution already owned by its durable Agent run. */\nexport function bindDurableAgentExecution(\n host: AgentExecutionHost,\n input: {\n readonly execution: ExecutionRecord\n readonly actorId?: string\n readonly runId: string\n readonly authorization: AgentExecutionAuthorization\n }\n): Sixb<readonly OntologySource[]> {\n const scope = restoreAgentExecutionScope(input)\n const sixb = host.withScope(scope)\n if (!isBoundSixb(sixb)) {\n throw new Error(\"[Sixb] Agent execution host returned an invalid bound SDK.\")\n }\n return sixb\n}\n\n/** Restore one provider-validated Agent execution with its currently resolved grants. */\nexport function restoreAgentExecutionScope(input: {\n readonly execution: ExecutionRecord\n readonly actorId?: string\n readonly runId: string\n readonly authorization: AgentExecutionAuthorization\n}): ExecutionScope {\n assertAgentExecutionRecord(input)\n const context: ExecutionContext = Object.freeze({\n id: input.execution.id,\n projectId: input.execution.projectId,\n ...(input.execution.requestedBy === undefined\n ? {}\n : { requestedBy: Object.freeze(structuredClone(input.execution.requestedBy)) }),\n executor: Object.freeze({\n type: \"agent\",\n ...(input.actorId === undefined ? {} : { actorId: input.actorId }),\n runId: input.runId,\n }),\n source: Object.freeze(structuredClone(input.execution.source)),\n correlationId: input.execution.correlationId,\n })\n return Object.freeze({\n execution: context,\n authorization: createAgentRuntimeAuthorization({\n execution: context,\n authority:\n input.authorization.type === \"principal\"\n ? {\n type: \"principal\",\n context: input.authorization.context,\n ...(input.execution.authorizationRef.type === \"principal\" &&\n input.execution.authorizationRef.credential !== undefined\n ? { credential: input.execution.authorizationRef.credential }\n : {}),\n }\n : { type: \"disabled\" },\n }),\n })\n}\n\n/** Validate that a durable record belongs to the exact resolved Agent execution. */\nexport function assertAgentExecutionRecord(input: {\n readonly execution: ExecutionRecord\n readonly actorId?: string\n readonly runId: string\n readonly authorization: AgentExecutionAuthorization\n}): void {\n const authority = input.execution.authorizationRef\n if (\n input.execution.executor.type !== \"agent\" ||\n input.execution.executor.runId !== input.runId ||\n input.execution.source.type !== \"execution\"\n ) {\n invalidAgentExecution(input.execution.id, input.runId)\n }\n\n if (\n input.authorization.type === \"disabled\" ||\n input.authorization.context.principal.type === \"user\"\n ) {\n assertInheritedAgentAuthority(input.execution, input.runId, input.authorization)\n return\n }\n\n if (\n input.authorization.type !== \"principal\" ||\n authority.type !== \"principal\" ||\n authority.principal.type !== \"serviceAccount\" ||\n input.authorization.context.principal.type !== \"serviceAccount\" ||\n authority.principal.id !== input.authorization.context.principal.id ||\n authority.credential !== undefined\n ) {\n invalidAgentExecution(input.execution.id, input.runId)\n }\n if (input.actorId === undefined) {\n invalidAgentExecution(input.execution.id, input.runId)\n }\n assertAgentPrincipal(input.actorId, authority.principal)\n}\n\nfunction assertInheritedAgentAuthority(\n execution: ExecutionRecord,\n runId: string,\n authorization: AgentExecutionAuthorization\n): void {\n const authority = execution.authorizationRef\n if (authorization.type === \"disabled\") {\n if (authority.type !== \"disabled\") invalidAgentExecution(execution.id, runId)\n return\n }\n\n const principal = authorization.context.principal\n if (\n authority.type !== \"principal\" ||\n authority.principal.type !== \"user\" ||\n principal.type !== \"user\" ||\n authority.principal.id !== principal.id ||\n authority.credential === undefined ||\n (authority.credential.type === \"session\"\n ? authorization.context.sessionId !== authority.credential.id\n : authorization.context.sessionId !== undefined)\n ) {\n invalidAgentExecution(execution.id, runId)\n }\n}\n\nfunction assertAgentPrincipal(\n actorId: string,\n principal: Extract<AuthorizablePrincipal, { readonly type: \"serviceAccount\" }>\n): void {\n const expectedId = agentServiceAccountId(actorId)\n if (principal.id !== expectedId) {\n throw new ExecutionStorageError(\n \"invalid_input\",\n `[Sixb] Agent '${actorId}' execution authority must reference service account '${expectedId}'.`\n )\n }\n}\n\nfunction invalidAgentExecution(executionId: string, runId: string): never {\n throw new ExecutionStorageError(\n \"invalid_input\",\n `[Sixb] Execution '${executionId}' does not authorize Agent run '${runId}'.`\n )\n}\n"
36
+ ],
37
+ "mappings": "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",
38
+ "debugId": "3C841C41C07F660564756E2164756E21",
39
+ "names": []
40
+ }