@sixb/core 0.1.5 → 0.1.7

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 (564) hide show
  1. package/dist/actions/index.js +37 -33
  2. package/dist/actions/index.js.map +1 -1
  3. package/dist/actions/types/definitions.d.ts +8 -2
  4. package/dist/actions/types/definitions.d.ts.map +1 -1
  5. package/dist/actions/worker.js +3 -3
  6. package/dist/agents/adapters.d.ts +33 -76
  7. package/dist/agents/adapters.d.ts.map +1 -1
  8. package/dist/agents/authority.d.ts +22 -6
  9. package/dist/agents/authority.d.ts.map +1 -1
  10. package/dist/agents/builders.d.ts +3 -11
  11. package/dist/agents/builders.d.ts.map +1 -1
  12. package/dist/agents/context.js +2 -2
  13. package/dist/agents/dispatch.d.ts +9 -1
  14. package/dist/agents/dispatch.d.ts.map +1 -1
  15. package/dist/agents/errors.d.ts +2 -2
  16. package/dist/agents/errors.d.ts.map +1 -1
  17. package/dist/agents/execution.d.ts +9 -10
  18. package/dist/agents/execution.d.ts.map +1 -1
  19. package/dist/agents/ids.d.ts +4 -0
  20. package/dist/agents/ids.d.ts.map +1 -1
  21. package/dist/agents/index.d.ts +13 -9
  22. package/dist/agents/index.d.ts.map +1 -1
  23. package/dist/agents/index.js +80 -68
  24. package/dist/agents/index.js.map +1 -1
  25. package/dist/agents/message.d.ts +17 -10
  26. package/dist/agents/message.d.ts.map +1 -1
  27. package/dist/agents/model-loop.d.ts +56 -0
  28. package/dist/agents/model-loop.d.ts.map +1 -0
  29. package/dist/agents/reference.d.ts +4 -0
  30. package/dist/agents/reference.d.ts.map +1 -0
  31. package/dist/agents/request.d.ts +10 -8
  32. package/dist/agents/request.d.ts.map +1 -1
  33. package/dist/agents/retired-config.d.ts +4 -0
  34. package/dist/agents/retired-config.d.ts.map +1 -0
  35. package/dist/agents/streams.d.ts +13 -8
  36. package/dist/agents/streams.d.ts.map +1 -1
  37. package/dist/agents/streams.js +7 -5
  38. package/dist/agents/streams.js.map +1 -1
  39. package/dist/agents/tool-catalog.d.ts +9 -0
  40. package/dist/agents/tool-catalog.d.ts.map +1 -0
  41. package/dist/agents/tool-definition.d.ts +1 -0
  42. package/dist/agents/tool-definition.d.ts.map +1 -1
  43. package/dist/agents/types.d.ts +31 -68
  44. package/dist/agents/types.d.ts.map +1 -1
  45. package/dist/agents/validation.d.ts +4 -10
  46. package/dist/agents/validation.d.ts.map +1 -1
  47. package/dist/ai-usage/execution.d.ts +53 -0
  48. package/dist/ai-usage/execution.d.ts.map +1 -0
  49. package/dist/ai-usage/index.d.ts +3 -0
  50. package/dist/ai-usage/index.d.ts.map +1 -0
  51. package/dist/auth/index.d.ts +1 -1
  52. package/dist/auth/index.d.ts.map +1 -1
  53. package/dist/auth/index.js +7 -7
  54. package/dist/auth/runtime.d.ts.map +1 -1
  55. package/dist/auth/strategy.d.ts +1 -1
  56. package/dist/auth/strategy.d.ts.map +1 -1
  57. package/dist/auth/types.d.ts +13 -0
  58. package/dist/auth/types.d.ts.map +1 -1
  59. package/dist/authorization/decision.d.ts +5 -2
  60. package/dist/authorization/decision.d.ts.map +1 -1
  61. package/dist/authorization/grant-kinds.d.ts +24 -8
  62. package/dist/authorization/grant-kinds.d.ts.map +1 -1
  63. package/dist/authorization/index.d.ts +1 -1
  64. package/dist/authorization/index.d.ts.map +1 -1
  65. package/dist/authorization/index.js +8 -6
  66. package/dist/authorization/index.js.map +1 -1
  67. package/dist/authorization/resolve.d.ts +3 -3
  68. package/dist/authorization/resolve.d.ts.map +1 -1
  69. package/dist/authorization/types.d.ts +7 -5
  70. package/dist/authorization/types.d.ts.map +1 -1
  71. package/dist/blob-storage/browser.js +2 -2
  72. package/dist/blob-storage/index.js +3 -3
  73. package/dist/bootstrap/discovery.d.ts +1 -7
  74. package/dist/bootstrap/discovery.d.ts.map +1 -1
  75. package/dist/bootstrap/index.js +52 -48
  76. package/dist/bootstrap/index.js.map +1 -1
  77. package/dist/broker/index.js +2 -2
  78. package/dist/{chunk-zqysyfjt.js → chunk-08m3b6w8.js} +1 -1
  79. package/dist/{chunk-xdf9yswn.js → chunk-08twe8m6.js} +93 -8
  80. package/dist/chunk-08twe8m6.js.map +12 -0
  81. package/dist/{chunk-xkthy56g.js → chunk-1kamz6j0.js} +1 -1
  82. package/dist/{chunk-h6h91mfy.js → chunk-2b5qtban.js} +12 -12
  83. package/dist/{chunk-h6h91mfy.js.map → chunk-2b5qtban.js.map} +3 -3
  84. package/dist/{chunk-0172wgm9.js → chunk-2xns679x.js} +10 -2
  85. package/dist/{chunk-0172wgm9.js.map → chunk-2xns679x.js.map} +3 -3
  86. package/dist/{chunk-f83ka50g.js → chunk-37wk412q.js} +86 -28
  87. package/dist/{chunk-f83ka50g.js.map → chunk-37wk412q.js.map} +8 -8
  88. package/dist/{chunk-6d5xdj1q.js → chunk-3fqt22c4.js} +4 -4
  89. package/dist/{chunk-t9xghkva.js → chunk-3kv70xwp.js} +3 -2
  90. package/dist/{chunk-t9xghkva.js.map → chunk-3kv70xwp.js.map} +3 -3
  91. package/dist/{chunk-z3zp0bj1.js → chunk-407j3msh.js} +1 -1
  92. package/dist/{chunk-rhrbz7d4.js → chunk-4a849fr1.js} +1 -1
  93. package/dist/{chunk-62c7t4jc.js → chunk-4nxeacx7.js} +1 -1
  94. package/dist/{chunk-cy0n5dms.js → chunk-5jcdmjam.js} +1 -1
  95. package/dist/{chunk-819wnjz8.js → chunk-64sr682n.js} +7 -7
  96. package/dist/{chunk-v0egge8b.js → chunk-6ed5bwnd.js} +666 -81
  97. package/dist/chunk-6ed5bwnd.js.map +57 -0
  98. package/dist/{chunk-x2yw73hy.js → chunk-7ds9620f.js} +1 -1
  99. package/dist/{chunk-dm72y8wt.js → chunk-7y0f6rf1.js} +29 -16
  100. package/dist/chunk-7y0f6rf1.js.map +10 -0
  101. package/dist/{chunk-72q2y8hn.js → chunk-8tsf6dmc.js} +2 -2
  102. package/dist/{chunk-72q2y8hn.js.map → chunk-8tsf6dmc.js.map} +3 -3
  103. package/dist/{chunk-tbv03sx2.js → chunk-9aehf39w.js} +7 -7
  104. package/dist/{chunk-ezake7g1.js → chunk-agsvg9ar.js} +1 -1
  105. package/dist/{chunk-rdeagz6b.js → chunk-atmkaf60.js} +1 -1
  106. package/dist/{chunk-rdeagz6b.js.map → chunk-atmkaf60.js.map} +2 -2
  107. package/dist/chunk-c15dr03f.js +43 -0
  108. package/dist/chunk-c15dr03f.js.map +10 -0
  109. package/dist/{chunk-78c6xvyr.js → chunk-d2ndstdf.js} +8 -6
  110. package/dist/{chunk-78c6xvyr.js.map → chunk-d2ndstdf.js.map} +2 -2
  111. package/dist/{chunk-rnshztfq.js → chunk-d63tybny.js} +2 -2
  112. package/dist/{chunk-t0jjkep3.js → chunk-d8qkxt2v.js} +4 -2
  113. package/dist/chunk-d8qkxt2v.js.map +10 -0
  114. package/dist/{chunk-vybf6pkp.js → chunk-dbc80ad7.js} +1 -1
  115. package/dist/{chunk-4gz41why.js → chunk-dqn23610.js} +1 -1
  116. package/dist/{chunk-z3ga9q5m.js → chunk-e4rvtvpw.js} +13 -11
  117. package/dist/{chunk-z3ga9q5m.js.map → chunk-e4rvtvpw.js.map} +2 -2
  118. package/dist/{chunk-h9kxd41f.js → chunk-gbrpsx4m.js} +19 -6
  119. package/dist/chunk-gbrpsx4m.js.map +11 -0
  120. package/dist/{chunk-84h6qhmp.js → chunk-h0knpbz5.js} +468 -1236
  121. package/dist/chunk-h0knpbz5.js.map +38 -0
  122. package/dist/{chunk-zp2v2rv6.js → chunk-ha58tjtt.js} +6 -6
  123. package/dist/{chunk-f6erf2vv.js → chunk-hdz94br2.js} +2 -2
  124. package/dist/chunk-jecn6t54.js +307 -0
  125. package/dist/chunk-jecn6t54.js.map +12 -0
  126. package/dist/{chunk-dsrkgtnh.js → chunk-jq43kdvk.js} +1 -1
  127. package/dist/{chunk-wtmzkcht.js → chunk-k34z5rvh.js} +1 -1
  128. package/dist/{chunk-htq0qh7z.js → chunk-ka3a2ft3.js} +2 -2
  129. package/dist/{chunk-4h947jd8.js → chunk-kt81c11h.js} +2 -2
  130. package/dist/chunk-n2arzn6e.js +1745 -0
  131. package/dist/chunk-n2arzn6e.js.map +20 -0
  132. package/dist/{chunk-f2rt4vkh.js → chunk-n2w475r0.js} +3 -3
  133. package/dist/{chunk-t8t39h7v.js → chunk-n6jxh8sw.js} +10 -2
  134. package/dist/chunk-n6jxh8sw.js.map +10 -0
  135. package/dist/{chunk-drjqm1aa.js → chunk-p03r0h5s.js} +310 -28
  136. package/dist/chunk-p03r0h5s.js.map +16 -0
  137. package/dist/chunk-p2vqaxkc.js +528 -0
  138. package/dist/chunk-p2vqaxkc.js.map +15 -0
  139. package/dist/{chunk-gadsm794.js → chunk-qjycjdj6.js} +84 -11
  140. package/dist/chunk-qjycjdj6.js.map +12 -0
  141. package/dist/chunk-qjzp9xyb.js +286 -0
  142. package/dist/chunk-qjzp9xyb.js.map +12 -0
  143. package/dist/{chunk-am6eczah.js → chunk-qv38twt8.js} +50 -69
  144. package/dist/{chunk-am6eczah.js.map → chunk-qv38twt8.js.map} +8 -8
  145. package/dist/{chunk-bhxaq2nn.js → chunk-qw9gvjv5.js} +1 -1
  146. package/dist/{chunk-r0rry8dn.js → chunk-rp1mvzb4.js} +6 -6
  147. package/dist/{chunk-tkdscva6.js → chunk-rre42skh.js} +187 -18
  148. package/dist/chunk-rre42skh.js.map +39 -0
  149. package/dist/{chunk-ghteq96b.js → chunk-s5y30bc9.js} +2 -2
  150. package/dist/{chunk-a31h57d5.js → chunk-tn7xcs2n.js} +2 -2
  151. package/dist/{chunk-6gjqgd3d.js → chunk-tpnd31c1.js} +2 -1
  152. package/dist/chunk-tpnd31c1.js.map +11 -0
  153. package/dist/chunk-trxxmgnf.js +68 -0
  154. package/dist/chunk-trxxmgnf.js.map +11 -0
  155. package/dist/{chunk-ea73pzk7.js → chunk-vjjv9mrb.js} +2 -2
  156. package/dist/{chunk-8b55ygje.js → chunk-w3e09qqk.js} +1 -1
  157. package/dist/{chunk-ckxfnx7f.js → chunk-wjgm6jjt.js} +2 -2
  158. package/dist/{chunk-3j7573mj.js → chunk-x0qhkqje.js} +2 -2
  159. package/dist/{chunk-dysw7nsm.js → chunk-xdpwpkha.js} +2 -2
  160. package/dist/{chunk-1q02e95s.js → chunk-y35ma3mj.js} +11 -16
  161. package/dist/{chunk-1q02e95s.js.map → chunk-y35ma3mj.js.map} +3 -4
  162. package/dist/{chunk-qewtks41.js → chunk-z2sery1b.js} +64 -1
  163. package/dist/{chunk-qewtks41.js.map → chunk-z2sery1b.js.map} +3 -3
  164. package/dist/error-reporting/internal.js +4 -4
  165. package/dist/error-reporting/types.d.ts +7 -2
  166. package/dist/error-reporting/types.d.ts.map +1 -1
  167. package/dist/errors/catalog.d.ts +8 -0
  168. package/dist/errors/catalog.d.ts.map +1 -1
  169. package/dist/errors/internal.js +2 -2
  170. package/dist/events/index.js +4 -4
  171. package/dist/execution/agent.d.ts +18 -9
  172. package/dist/execution/agent.d.ts.map +1 -1
  173. package/dist/execution/agent.js +52 -43
  174. package/dist/execution/agent.js.map +1 -1
  175. package/dist/execution/authorization.d.ts +14 -4
  176. package/dist/execution/authorization.d.ts.map +1 -1
  177. package/dist/execution/primitive.js +45 -43
  178. package/dist/execution/primitive.js.map +2 -2
  179. package/dist/execution/request.d.ts +3 -1
  180. package/dist/execution/request.d.ts.map +1 -1
  181. package/dist/execution/request.js +46 -44
  182. package/dist/execution/request.js.map +3 -3
  183. package/dist/execution/types.d.ts +1 -1
  184. package/dist/execution/types.d.ts.map +1 -1
  185. package/dist/http/api-routes.d.ts.map +1 -1
  186. package/dist/http/index.js +1 -1
  187. package/dist/index.d.ts +9 -6
  188. package/dist/index.d.ts.map +1 -1
  189. package/dist/index.js +82 -77
  190. package/dist/index.js.map +1 -1
  191. package/dist/json.d.ts +2 -0
  192. package/dist/json.d.ts.map +1 -1
  193. package/dist/lake-storage/index.js +5 -5
  194. package/dist/logging/index.js +3 -3
  195. package/dist/logging/types.js +2 -2
  196. package/dist/materialization/index.js +2 -2
  197. package/dist/materializer/index.js +33 -29
  198. package/dist/materializer/index.js.map +1 -1
  199. package/dist/models/catalog.d.ts +40 -0
  200. package/dist/models/catalog.d.ts.map +1 -0
  201. package/dist/models/definitions.d.ts +25 -0
  202. package/dist/models/definitions.d.ts.map +1 -0
  203. package/dist/models/errors.d.ts +52 -0
  204. package/dist/models/errors.d.ts.map +1 -0
  205. package/dist/models/events.d.ts +192 -0
  206. package/dist/models/events.d.ts.map +1 -0
  207. package/dist/models/index.d.ts +17 -39
  208. package/dist/models/index.d.ts.map +1 -1
  209. package/dist/models/index.js +50 -0
  210. package/dist/models/index.js.map +9 -0
  211. package/dist/models/language-model.d.ts +90 -0
  212. package/dist/models/language-model.d.ts.map +1 -0
  213. package/dist/models/messages.d.ts +74 -0
  214. package/dist/models/messages.d.ts.map +1 -0
  215. package/dist/models/pricing.d.ts +69 -0
  216. package/dist/models/pricing.d.ts.map +1 -0
  217. package/dist/models/rate-card.d.ts +24 -0
  218. package/dist/models/rate-card.d.ts.map +1 -0
  219. package/dist/models/tools.d.ts +24 -0
  220. package/dist/models/tools.d.ts.map +1 -0
  221. package/dist/objects/index.js +38 -34
  222. package/dist/objects/index.js.map +1 -1
  223. package/dist/objects/query/index.js +32 -28
  224. package/dist/objects/query/index.js.map +1 -1
  225. package/dist/ontology/index.js +5 -5
  226. package/dist/ontology/internal.js +4 -4
  227. package/dist/pipelines/index.js +37 -35
  228. package/dist/pipelines/index.js.map +1 -1
  229. package/dist/projections/internal.js +35 -31
  230. package/dist/projections/internal.js.map +1 -1
  231. package/dist/queues/in-memory.d.ts +3 -2
  232. package/dist/queues/in-memory.d.ts.map +1 -1
  233. package/dist/queues/index.d.ts +3 -1
  234. package/dist/queues/index.d.ts.map +1 -1
  235. package/dist/queues/index.js +1 -1
  236. package/dist/queues/types.d.ts +15 -3
  237. package/dist/queues/types.d.ts.map +1 -1
  238. package/dist/runtime/create.d.ts +4 -4
  239. package/dist/runtime/create.d.ts.map +1 -1
  240. package/dist/runtime/definitions.d.ts +2 -2
  241. package/dist/runtime/definitions.d.ts.map +1 -1
  242. package/dist/runtime/host.d.ts +3 -2
  243. package/dist/runtime/host.d.ts.map +1 -1
  244. package/dist/runtime/resolve-definitions.d.ts +2 -2
  245. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  246. package/dist/runtime/sixb.d.ts +4 -2
  247. package/dist/runtime/sixb.d.ts.map +1 -1
  248. package/dist/security/every.d.ts +1 -4
  249. package/dist/security/every.d.ts.map +1 -1
  250. package/dist/security/grants.d.ts +6 -5
  251. package/dist/security/grants.d.ts.map +1 -1
  252. package/dist/security/index.d.ts +1 -1
  253. package/dist/security/index.d.ts.map +1 -1
  254. package/dist/security/registry.d.ts +1 -1
  255. package/dist/security/registry.d.ts.map +1 -1
  256. package/dist/security/types.d.ts +13 -5
  257. package/dist/security/types.d.ts.map +1 -1
  258. package/dist/security/validation.d.ts +4 -2
  259. package/dist/security/validation.d.ts.map +1 -1
  260. package/dist/storage/action-runs/failure.js +3 -3
  261. package/dist/storage/action-runs/provider.js +2 -2
  262. package/dist/storage/agents/errors.d.ts +1 -1
  263. package/dist/storage/agents/errors.d.ts.map +1 -1
  264. package/dist/storage/agents/in-memory.d.ts +3 -2
  265. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  266. package/dist/storage/agents/index.d.ts +1 -1
  267. package/dist/storage/agents/index.d.ts.map +1 -1
  268. package/dist/storage/agents/provider.d.ts +11 -4
  269. package/dist/storage/agents/provider.d.ts.map +1 -1
  270. package/dist/storage/agents/provider.js +18 -15
  271. package/dist/storage/agents/provider.js.map +1 -1
  272. package/dist/storage/agents/types.d.ts +65 -17
  273. package/dist/storage/agents/types.d.ts.map +1 -1
  274. package/dist/storage/ai-cost/analytics.d.ts +2 -1
  275. package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
  276. package/dist/storage/ai-cost/codec.d.ts +3 -2
  277. package/dist/storage/ai-cost/codec.d.ts.map +1 -1
  278. package/dist/storage/ai-cost/groups.d.ts +51 -0
  279. package/dist/storage/ai-cost/groups.d.ts.map +1 -0
  280. package/dist/storage/ai-cost/in-memory.d.ts +11 -1
  281. package/dist/storage/ai-cost/in-memory.d.ts.map +1 -1
  282. package/dist/storage/ai-cost/index.d.ts +1 -1
  283. package/dist/storage/ai-cost/index.d.ts.map +1 -1
  284. package/dist/storage/ai-cost/provider.d.ts +2 -0
  285. package/dist/storage/ai-cost/provider.d.ts.map +1 -1
  286. package/dist/storage/ai-cost/provider.js +29 -13
  287. package/dist/storage/ai-cost/provider.js.map +3 -3
  288. package/dist/storage/ai-cost/types.d.ts +64 -15
  289. package/dist/storage/ai-cost/types.d.ts.map +1 -1
  290. package/dist/storage/ai-cost/validation.d.ts +2 -1
  291. package/dist/storage/ai-cost/validation.d.ts.map +1 -1
  292. package/dist/storage/ai-limits/enforcement.d.ts +14 -0
  293. package/dist/storage/ai-limits/enforcement.d.ts.map +1 -0
  294. package/dist/storage/ai-limits/enforcement.js +21 -0
  295. package/dist/storage/ai-limits/enforcement.js.map +9 -0
  296. package/dist/storage/ai-limits/errors.d.ts +8 -0
  297. package/dist/storage/ai-limits/errors.d.ts.map +1 -0
  298. package/dist/storage/ai-limits/in-memory.d.ts +78 -0
  299. package/dist/storage/ai-limits/in-memory.d.ts.map +1 -0
  300. package/dist/storage/ai-limits/index.d.ts +7 -0
  301. package/dist/storage/ai-limits/index.d.ts.map +1 -0
  302. package/dist/storage/ai-limits/period.d.ts +4 -0
  303. package/dist/storage/ai-limits/period.d.ts.map +1 -0
  304. package/dist/storage/ai-limits/provider.d.ts +85 -0
  305. package/dist/storage/ai-limits/provider.d.ts.map +1 -0
  306. package/dist/storage/ai-limits/provider.js +62 -0
  307. package/dist/storage/ai-limits/provider.js.map +9 -0
  308. package/dist/storage/ai-limits/types.d.ts +175 -0
  309. package/dist/storage/ai-limits/types.d.ts.map +1 -0
  310. package/dist/storage/ai-usage/in-memory.d.ts +4 -0
  311. package/dist/storage/ai-usage/in-memory.d.ts.map +1 -1
  312. package/dist/storage/ai-usage/record.d.ts.map +1 -1
  313. package/dist/storage/ai-usage/types.d.ts +6 -2
  314. package/dist/storage/ai-usage/types.d.ts.map +1 -1
  315. package/dist/storage/auth/errors.d.ts +1 -1
  316. package/dist/storage/auth/errors.d.ts.map +1 -1
  317. package/dist/storage/auth/in-memory/auth-storage.d.ts +4 -1
  318. package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
  319. package/dist/storage/auth/in-memory/device-authorizations.d.ts +29 -0
  320. package/dist/storage/auth/in-memory/device-authorizations.d.ts.map +1 -0
  321. package/dist/storage/auth/in-memory/shared.d.ts +3 -1
  322. package/dist/storage/auth/in-memory/shared.d.ts.map +1 -1
  323. package/dist/storage/auth/index.d.ts +2 -1
  324. package/dist/storage/auth/index.d.ts.map +1 -1
  325. package/dist/storage/auth/types.d.ts +66 -0
  326. package/dist/storage/auth/types.d.ts.map +1 -1
  327. package/dist/storage/connector-connections/provider.js +2 -2
  328. package/dist/storage/executions/provider.js +1 -1
  329. package/dist/storage/executions/run-link.d.ts +7 -2
  330. package/dist/storage/executions/run-link.d.ts.map +1 -1
  331. package/dist/storage/executions/validation.d.ts.map +1 -1
  332. package/dist/storage/in-memory/index.d.ts +4 -0
  333. package/dist/storage/in-memory/index.d.ts.map +1 -1
  334. package/dist/storage/index.d.ts +8 -5
  335. package/dist/storage/index.d.ts.map +1 -1
  336. package/dist/storage/index.js +51 -38
  337. package/dist/storage/index.js.map +1 -1
  338. package/dist/storage/ontology/in-memory/materializations.d.ts +4 -3
  339. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
  340. package/dist/storage/ontology/index.d.ts +1 -1
  341. package/dist/storage/ontology/index.d.ts.map +1 -1
  342. package/dist/storage/ontology/materializations.d.ts +7 -3
  343. package/dist/storage/ontology/materializations.d.ts.map +1 -1
  344. package/dist/storage/ontology/provider.d.ts +2 -2
  345. package/dist/storage/ontology/provider.d.ts.map +1 -1
  346. package/dist/storage/ontology/provider.js +3 -3
  347. package/dist/storage/pipeline-runs/provider.js +2 -2
  348. package/dist/storage/projection-runs/provider.js +4 -4
  349. package/dist/storage/sync-runs/provider.js +2 -2
  350. package/dist/storage/types.d.ts +5 -1
  351. package/dist/storage/types.d.ts.map +1 -1
  352. package/dist/storage/webhook-runs/provider.js +2 -2
  353. package/dist/storage/workflow-runs/provider.d.ts +1 -1
  354. package/dist/storage/workflow-runs/provider.js +10 -11
  355. package/dist/storage/workflow-runs/provider.js.map +1 -1
  356. package/dist/storage/workflow-runs/types.d.ts +5 -4
  357. package/dist/storage/workflow-runs/types.d.ts.map +1 -1
  358. package/dist/syncs/index.js +37 -35
  359. package/dist/syncs/index.js.map +1 -1
  360. package/dist/testing/agent-execution.d.ts +3 -1
  361. package/dist/testing/agent-execution.d.ts.map +1 -1
  362. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  363. package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
  364. package/dist/testing/ai-limit-storage-contract.d.ts +18 -0
  365. package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -0
  366. package/dist/testing/ai-model-call-groups-contract.d.ts +6 -0
  367. package/dist/testing/ai-model-call-groups-contract.d.ts.map +1 -0
  368. package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
  369. package/dist/testing/auth-storage-contract.d.ts.map +1 -1
  370. package/dist/testing/index.d.ts +2 -0
  371. package/dist/testing/index.d.ts.map +1 -1
  372. package/dist/testing/index.js +3758 -1945
  373. package/dist/testing/index.js.map +15 -13
  374. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  375. package/dist/testing/queues-contract.d.ts.map +1 -1
  376. package/dist/webhooks/internal.js +32 -28
  377. package/dist/webhooks/internal.js.map +2 -2
  378. package/dist/workers/index.js +2 -2
  379. package/dist/workflows/agent-step-identity.d.ts +3 -0
  380. package/dist/workflows/agent-step-identity.d.ts.map +1 -0
  381. package/dist/workflows/builders.d.ts +2 -3
  382. package/dist/workflows/builders.d.ts.map +1 -1
  383. package/dist/workflows/execution.d.ts +1 -1
  384. package/dist/workflows/execution.d.ts.map +1 -1
  385. package/dist/workflows/failure.d.ts +1 -1
  386. package/dist/workflows/failure.d.ts.map +1 -1
  387. package/dist/workflows/index.d.ts +3 -2
  388. package/dist/workflows/index.d.ts.map +1 -1
  389. package/dist/workflows/index.js +53 -45
  390. package/dist/workflows/index.js.map +1 -1
  391. package/dist/workflows/types.d.ts +26 -11
  392. package/dist/workflows/types.d.ts.map +1 -1
  393. package/dist/workflows/validation.d.ts +7 -1
  394. package/dist/workflows/validation.d.ts.map +1 -1
  395. package/package.json +19 -4
  396. package/src/actions/types/definitions.ts +24 -2
  397. package/src/agents/adapters.ts +109 -115
  398. package/src/agents/authority.ts +214 -32
  399. package/src/agents/builders.ts +3 -50
  400. package/src/agents/context-compaction.ts +4 -0
  401. package/src/agents/dispatch.ts +59 -2
  402. package/src/agents/errors.ts +5 -2
  403. package/src/agents/execution.ts +53 -52
  404. package/src/agents/ids.ts +16 -1
  405. package/src/agents/index.ts +23 -11
  406. package/src/agents/message.ts +18 -9
  407. package/src/agents/model-loop.ts +1023 -0
  408. package/src/agents/reference.ts +7 -0
  409. package/src/agents/request.ts +141 -74
  410. package/src/agents/retired-config.ts +20 -0
  411. package/src/agents/streams.ts +45 -19
  412. package/src/agents/tool-catalog.ts +21 -0
  413. package/src/agents/tool-definition.ts +23 -0
  414. package/src/agents/types.ts +39 -81
  415. package/src/agents/validation.ts +34 -180
  416. package/src/ai-usage/execution.ts +196 -0
  417. package/src/ai-usage/index.ts +15 -0
  418. package/src/auth/index.ts +1 -0
  419. package/src/auth/runtime.ts +8 -0
  420. package/src/auth/strategy.ts +1 -0
  421. package/src/auth/types.ts +14 -0
  422. package/src/authorization/decision.ts +27 -10
  423. package/src/authorization/grant-kinds.ts +62 -15
  424. package/src/authorization/index.ts +1 -0
  425. package/src/authorization/resolve.ts +12 -5
  426. package/src/authorization/types.ts +7 -5
  427. package/src/bootstrap/discovery.ts +0 -3
  428. package/src/error-reporting/types.ts +4 -2
  429. package/src/errors/catalog.ts +8 -0
  430. package/src/execution/agent.ts +129 -22
  431. package/src/execution/authorization.ts +48 -18
  432. package/src/execution/request.ts +4 -1
  433. package/src/execution/types.ts +1 -1
  434. package/src/http/api-routes.ts +63 -0
  435. package/src/index.ts +36 -7
  436. package/src/json.ts +9 -0
  437. package/src/models/catalog.ts +137 -0
  438. package/src/models/definitions.ts +202 -0
  439. package/src/models/errors.ts +83 -0
  440. package/src/models/events.ts +198 -0
  441. package/src/models/index.ts +89 -71
  442. package/src/models/language-model.ts +143 -0
  443. package/src/models/messages.ts +78 -0
  444. package/src/models/pricing.ts +390 -0
  445. package/src/models/rate-card.ts +101 -0
  446. package/src/models/tools.ts +29 -0
  447. package/src/queues/in-memory.ts +5 -0
  448. package/src/queues/index.ts +11 -0
  449. package/src/queues/types.ts +20 -3
  450. package/src/runtime/create.ts +7 -5
  451. package/src/runtime/definitions.ts +2 -2
  452. package/src/runtime/host.ts +3 -2
  453. package/src/runtime/resolve-definitions.ts +13 -36
  454. package/src/runtime/sixb.ts +6 -8
  455. package/src/security/every.ts +0 -4
  456. package/src/security/grants.ts +55 -11
  457. package/src/security/index.ts +2 -0
  458. package/src/security/registry.ts +6 -5
  459. package/src/security/types.ts +15 -4
  460. package/src/security/validation.ts +30 -9
  461. package/src/storage/agents/errors.ts +1 -0
  462. package/src/storage/agents/in-memory.ts +121 -11
  463. package/src/storage/agents/index.ts +7 -0
  464. package/src/storage/agents/provider.ts +150 -6
  465. package/src/storage/agents/types.ts +73 -16
  466. package/src/storage/ai-cost/analytics.ts +63 -6
  467. package/src/storage/ai-cost/codec.ts +37 -12
  468. package/src/storage/ai-cost/groups.ts +248 -0
  469. package/src/storage/ai-cost/in-memory.ts +42 -0
  470. package/src/storage/ai-cost/index.ts +6 -0
  471. package/src/storage/ai-cost/provider.ts +7 -0
  472. package/src/storage/ai-cost/types.ts +76 -14
  473. package/src/storage/ai-cost/validation.ts +147 -17
  474. package/src/storage/ai-limits/enforcement.ts +68 -0
  475. package/src/storage/ai-limits/errors.ts +23 -0
  476. package/src/storage/ai-limits/in-memory.ts +671 -0
  477. package/src/storage/ai-limits/index.ts +31 -0
  478. package/src/storage/ai-limits/period.ts +11 -0
  479. package/src/storage/ai-limits/provider.ts +430 -0
  480. package/src/storage/ai-limits/types.ts +195 -0
  481. package/src/storage/ai-usage/in-memory.ts +13 -0
  482. package/src/storage/ai-usage/record.ts +17 -0
  483. package/src/storage/ai-usage/types.ts +6 -2
  484. package/src/storage/auth/errors.ts +6 -0
  485. package/src/storage/auth/in-memory/auth-storage.ts +69 -0
  486. package/src/storage/auth/in-memory/device-authorizations.ts +145 -0
  487. package/src/storage/auth/in-memory/shared.ts +7 -0
  488. package/src/storage/auth/index.ts +7 -0
  489. package/src/storage/auth/types.ts +73 -0
  490. package/src/storage/executions/run-link.ts +16 -6
  491. package/src/storage/executions/validation.ts +36 -6
  492. package/src/storage/in-memory/index.ts +48 -4
  493. package/src/storage/index.ts +52 -1
  494. package/src/storage/ontology/in-memory/materializations.ts +34 -22
  495. package/src/storage/ontology/index.ts +1 -0
  496. package/src/storage/ontology/materializations.ts +8 -3
  497. package/src/storage/ontology/provider.ts +2 -2
  498. package/src/storage/types.ts +37 -0
  499. package/src/storage/workflow-runs/in-memory.ts +3 -3
  500. package/src/storage/workflow-runs/provider.ts +2 -2
  501. package/src/storage/workflow-runs/types.ts +6 -3
  502. package/src/testing/agent-execution.ts +40 -28
  503. package/src/testing/agent-storage-contract.ts +249 -28
  504. package/src/testing/ai-cost-storage-contract.ts +96 -8
  505. package/src/testing/ai-limit-storage-contract.ts +1134 -0
  506. package/src/testing/ai-model-call-groups-contract.ts +353 -0
  507. package/src/testing/ai-usage-storage-contract.ts +31 -0
  508. package/src/testing/auth-storage-contract.ts +85 -0
  509. package/src/testing/execution-storage-contract.ts +2 -2
  510. package/src/testing/index.ts +10 -0
  511. package/src/testing/materializer-storage-contract.ts +170 -2
  512. package/src/testing/queues-contract.ts +36 -1
  513. package/src/workflows/agent-step-identity.ts +4 -0
  514. package/src/workflows/builders.ts +95 -9
  515. package/src/workflows/execution.ts +2 -2
  516. package/src/workflows/failure.ts +2 -2
  517. package/src/workflows/index.ts +3 -0
  518. package/src/workflows/types.ts +23 -11
  519. package/src/workflows/validation.ts +100 -7
  520. package/dist/chunk-6gjqgd3d.js.map +0 -11
  521. package/dist/chunk-84h6qhmp.js.map +0 -46
  522. package/dist/chunk-a09jx26t.js +0 -55
  523. package/dist/chunk-a09jx26t.js.map +0 -11
  524. package/dist/chunk-dm72y8wt.js.map +0 -10
  525. package/dist/chunk-drjqm1aa.js.map +0 -15
  526. package/dist/chunk-gadsm794.js.map +0 -11
  527. package/dist/chunk-h9kxd41f.js.map +0 -11
  528. package/dist/chunk-nzw7sm3b.js +0 -137
  529. package/dist/chunk-nzw7sm3b.js.map +0 -10
  530. package/dist/chunk-t0jjkep3.js.map +0 -10
  531. package/dist/chunk-t8t39h7v.js.map +0 -10
  532. package/dist/chunk-tkdscva6.js.map +0 -37
  533. package/dist/chunk-v0egge8b.js.map +0 -56
  534. package/dist/chunk-xdf9yswn.js.map +0 -11
  535. /package/dist/{chunk-zqysyfjt.js.map → chunk-08m3b6w8.js.map} +0 -0
  536. /package/dist/{chunk-xkthy56g.js.map → chunk-1kamz6j0.js.map} +0 -0
  537. /package/dist/{chunk-6d5xdj1q.js.map → chunk-3fqt22c4.js.map} +0 -0
  538. /package/dist/{chunk-z3zp0bj1.js.map → chunk-407j3msh.js.map} +0 -0
  539. /package/dist/{chunk-rhrbz7d4.js.map → chunk-4a849fr1.js.map} +0 -0
  540. /package/dist/{chunk-62c7t4jc.js.map → chunk-4nxeacx7.js.map} +0 -0
  541. /package/dist/{chunk-cy0n5dms.js.map → chunk-5jcdmjam.js.map} +0 -0
  542. /package/dist/{chunk-819wnjz8.js.map → chunk-64sr682n.js.map} +0 -0
  543. /package/dist/{chunk-x2yw73hy.js.map → chunk-7ds9620f.js.map} +0 -0
  544. /package/dist/{chunk-tbv03sx2.js.map → chunk-9aehf39w.js.map} +0 -0
  545. /package/dist/{chunk-ezake7g1.js.map → chunk-agsvg9ar.js.map} +0 -0
  546. /package/dist/{chunk-rnshztfq.js.map → chunk-d63tybny.js.map} +0 -0
  547. /package/dist/{chunk-vybf6pkp.js.map → chunk-dbc80ad7.js.map} +0 -0
  548. /package/dist/{chunk-4gz41why.js.map → chunk-dqn23610.js.map} +0 -0
  549. /package/dist/{chunk-zp2v2rv6.js.map → chunk-ha58tjtt.js.map} +0 -0
  550. /package/dist/{chunk-f6erf2vv.js.map → chunk-hdz94br2.js.map} +0 -0
  551. /package/dist/{chunk-dsrkgtnh.js.map → chunk-jq43kdvk.js.map} +0 -0
  552. /package/dist/{chunk-wtmzkcht.js.map → chunk-k34z5rvh.js.map} +0 -0
  553. /package/dist/{chunk-htq0qh7z.js.map → chunk-ka3a2ft3.js.map} +0 -0
  554. /package/dist/{chunk-4h947jd8.js.map → chunk-kt81c11h.js.map} +0 -0
  555. /package/dist/{chunk-f2rt4vkh.js.map → chunk-n2w475r0.js.map} +0 -0
  556. /package/dist/{chunk-bhxaq2nn.js.map → chunk-qw9gvjv5.js.map} +0 -0
  557. /package/dist/{chunk-r0rry8dn.js.map → chunk-rp1mvzb4.js.map} +0 -0
  558. /package/dist/{chunk-ghteq96b.js.map → chunk-s5y30bc9.js.map} +0 -0
  559. /package/dist/{chunk-a31h57d5.js.map → chunk-tn7xcs2n.js.map} +0 -0
  560. /package/dist/{chunk-ea73pzk7.js.map → chunk-vjjv9mrb.js.map} +0 -0
  561. /package/dist/{chunk-8b55ygje.js.map → chunk-w3e09qqk.js.map} +0 -0
  562. /package/dist/{chunk-ckxfnx7f.js.map → chunk-wjgm6jjt.js.map} +0 -0
  563. /package/dist/{chunk-3j7573mj.js.map → chunk-x0qhkqje.js.map} +0 -0
  564. /package/dist/{chunk-dysw7nsm.js.map → chunk-xdpwpkha.js.map} +0 -0
@@ -15,6 +15,7 @@ import { restoreTrustedPrimitiveExecutionScope } from "../execution/durable"
15
15
  import { createTestingScope } from "../execution/scopes"
16
16
  import type { OntologyMaterializer } from "../materializer"
17
17
  import {
18
+ createLinkScopeFingerprint,
18
19
  createOntologyMaterializer,
19
20
  type OntologyEditOperation,
20
21
  ProjectionRegistry,
@@ -42,7 +43,7 @@ const Device = defineObjectType({
42
43
  prop("name", "string", { required: true }),
43
44
  prop("temperature", "double", { mode: "telemetry" }),
44
45
  ],
45
- links: [link.self("parent", { cardinality: "one" })],
46
+ links: [link.self("parent", { cardinality: "one" }), link.self("peers", { cardinality: "many" })],
46
47
  })
47
48
 
48
49
  const devices = defineDataset("storage_contract_devices", {
@@ -55,6 +56,9 @@ const devices = defineDataset("storage_contract_devices", {
55
56
  const readings = defineDataset("storage_contract_readings", {
56
57
  schema: [col("device_id", "string"), col("at", "timestamp"), col("value", "float64")],
57
58
  })
59
+ const devicePeers = defineDataset("storage_contract_device_peers", {
60
+ schema: [col("source_id", "string"), col("target_id", "string")],
61
+ })
58
62
  const ConflictDevice = defineObjectType({
59
63
  id: "StorageContractConflictDevice",
60
64
  name: "Conflict device",
@@ -88,6 +92,10 @@ const temperatureProjection = defineProjection(
88
92
  )
89
93
  .fromDataset(readings)
90
94
  .points({ objectId: "device_id", at: "at", value: "value" })
95
+ const devicePeersProjection = defineProjection("storage_contract_device_peers", Device.l.peers)
96
+ .fromDataset(devicePeers)
97
+ .sourceField("source_id")
98
+ .targetField("target_id")
91
99
  const conflictDeviceProjection = defineProjection(
92
100
  "storage_contract_conflict_devices",
93
101
  ConflictDevice
@@ -98,11 +106,17 @@ const conflictDeviceProjection = defineProjection(
98
106
 
99
107
  const ontology = new OntologyRegistry({ sources: [Device, ConflictDevice] })
100
108
  const projections = new ProjectionRegistry({
101
- projections: [deviceProjection, temperatureProjection, conflictDeviceProjection],
109
+ projections: [
110
+ deviceProjection,
111
+ temperatureProjection,
112
+ devicePeersProjection,
113
+ conflictDeviceProjection,
114
+ ],
102
115
  ontology,
103
116
  datasetsById: new Map<string, DatasetDefinition>([
104
117
  [devices.id, devices],
105
118
  [readings.id, readings],
119
+ [devicePeers.id, devicePeers],
106
120
  [conflictDevices.id, conflictDevices],
107
121
  ]),
108
122
  })
@@ -561,6 +575,160 @@ export function runMaterializerStorageContractSuite<TStorage extends Storage>(
561
575
  await provider.cleanup?.(createdStorage)
562
576
  }
563
577
  })
578
+
579
+ test(`${name} fences projected cardinality-many link scopes by fingerprint`, async () => {
580
+ const createdStorage = await provider.createStorage()
581
+ const storage = requireContractStorage(createdStorage)
582
+ let materializationOrdinal = 0
583
+ const materializer = createOntologyMaterializer({
584
+ projectId: "materializer-storage-contract",
585
+ ontology,
586
+ projections,
587
+ storage,
588
+ dependencies: {
589
+ batching: { sourceStageRows: 1, statePageRows: 1, planChunkRows: 1 },
590
+ clock: () => new Date("2026-02-01T12:00:00.000Z"),
591
+ materializationId: () => `many-scope-contract-candidate-${++materializationOrdinal}`,
592
+ },
593
+ })
594
+ const runtimeMaterializer = materializer.withScope(runtimeScope())
595
+ const source = { objectTypeId: Device.id, primaryId: "source" }
596
+ const peer = (primaryId: string) => ({ objectTypeId: Device.id, primaryId })
597
+ const linkRef = (targetId: string) => ({
598
+ source,
599
+ linkId: "peers",
600
+ target: peer(targetId),
601
+ })
602
+
603
+ try {
604
+ await runtimeMaterializer.edits.commit({
605
+ mode: "atomic",
606
+ source: { kind: "runtime", requestId: "many-scope-endpoints" },
607
+ operations: ["source", "peer-a", "peer-b", "peer-c"].map((primaryId) => ({
608
+ id: `create-${primaryId}`,
609
+ kind: "object.create" as const,
610
+ ref: peer(primaryId),
611
+ properties: { name: primaryId },
612
+ })),
613
+ expectedObjects: [],
614
+ expectedLinks: [],
615
+ expectedLinkScopes: [],
616
+ })
617
+
618
+ const datasetVersion = {
619
+ datasetId: devicePeers.id,
620
+ versionId: "many-links-v1",
621
+ createdAt: "2026-02-01T00:00:00.000Z",
622
+ }
623
+ const execution = await claim(storage, {
624
+ runId: "many-links-v1",
625
+ projectionId: devicePeersProjection.id,
626
+ protocol: "replacement",
627
+ datasetVersion,
628
+ })
629
+ const projectedLinks = [linkRef("peer-a"), linkRef("peer-b")]
630
+ await (
631
+ await projectionMaterializer(
632
+ materializer,
633
+ storage,
634
+ devicePeersProjection.id,
635
+ "many-links-v1"
636
+ )
637
+ ).projections.replace({
638
+ source: { projectionId: devicePeersProjection.id },
639
+ datasetVersion,
640
+ execution,
641
+ entries: entries(
642
+ projectedLinks.map((ref) => ({
643
+ root: { kind: "link", ref },
644
+ assertions: [{ kind: "link", ref }],
645
+ }))
646
+ ),
647
+ })
648
+
649
+ const observedLinks = await storage.objects.listLinks({
650
+ projectId: "materializer-storage-contract",
651
+ objectTypeId: Device.id,
652
+ objectId: source.primaryId,
653
+ linkId: "peers",
654
+ })
655
+ const fingerprint = createLinkScopeFingerprint(
656
+ observedLinks.map((row) => {
657
+ if (row.lastCommitId === undefined) {
658
+ throw new Error("Projected contract link is missing materializer provenance.")
659
+ }
660
+ return {
661
+ ref: linkRef(row.targetId),
662
+ createdAt: row.createdAt.toISOString(),
663
+ updatedAt: row.updatedAt.toISOString(),
664
+ lastCommitId: row.lastCommitId,
665
+ }
666
+ })
667
+ )
668
+ const commitObservation = async (runId: string, name: string) => {
669
+ await queueTestActionRun(storage, {
670
+ id: runId,
671
+ projectId: "materializer-storage-contract",
672
+ actionId: "observePeers",
673
+ subject: { kind: "object", objectTypeId: Device.id, primaryId: source.primaryId },
674
+ params: {},
675
+ idempotencyKey: runId,
676
+ })
677
+ await storage.actionRuns.start({ id: runId, projectId: "materializer-storage-contract" })
678
+ const actionMaterializer = await primitiveMaterializer(materializer, storage, {
679
+ kind: "action",
680
+ id: "observePeers",
681
+ runId,
682
+ })
683
+ return actionMaterializer.edits.commit({
684
+ mode: "atomic",
685
+ source: { kind: "action", actionId: "observePeers", runId },
686
+ operations: [
687
+ {
688
+ id: `record-${runId}`,
689
+ kind: "object.patch",
690
+ ref: source,
691
+ set: { name },
692
+ unset: [],
693
+ reset: [],
694
+ },
695
+ ],
696
+ expectedObjects: [],
697
+ expectedLinks: [],
698
+ expectedLinkScopes: [{ source, linkId: "peers", fingerprint }],
699
+ })
700
+ }
701
+
702
+ // Regression guard for G-021: make begin() hydrate the expected scope through the
703
+ // cardinality-one slot reader again and this otherwise unrelated Action commit fails before
704
+ // its already-stable fingerprint can be compared.
705
+ await expect(commitObservation("many-scope-action", "observed peers")).resolves.toMatchObject(
706
+ { kind: "edit", created: true }
707
+ )
708
+
709
+ await runtimeMaterializer.edits.commit({
710
+ mode: "atomic",
711
+ source: { kind: "runtime", requestId: "many-scope-change" },
712
+ operations: [{ id: "add-peer", kind: "link.upsert", ref: linkRef("peer-c") }],
713
+ expectedObjects: [],
714
+ expectedLinks: [],
715
+ expectedLinkScopes: [],
716
+ })
717
+
718
+ await expect(commitObservation("stale-many-scope-action", "must not commit")).rejects.toThrow(
719
+ "Expected link scope changed"
720
+ )
721
+ expect(
722
+ await storage.objects.getByPrimaryId({
723
+ projectId: "materializer-storage-contract",
724
+ objectTypeId: Device.id,
725
+ primaryId: source.primaryId,
726
+ })
727
+ ).toMatchObject({ properties: { name: "observed peers" } })
728
+ } finally {
729
+ await provider.cleanup?.(createdStorage)
730
+ }
731
+ })
564
732
  }
565
733
 
566
734
  function runtimeScope() {
@@ -270,7 +270,7 @@ export function runQueueContractSuite(label: string, options: QueueContractSuite
270
270
  })
271
271
  })
272
272
 
273
- test("keeps syncRuns, pipelines, projections, workflows, and actions lanes independent", async () => {
273
+ test("keeps every worker lane independent", async () => {
274
274
  await withQueues(async (queues) => {
275
275
  await queues.syncRuns.enqueue({
276
276
  projectId: "project-a",
@@ -309,6 +309,24 @@ export function runQueueContractSuite(label: string, options: QueueContractSuite
309
309
  },
310
310
  ],
311
311
  })
312
+ await queues.agents.enqueue({
313
+ projectId: "project-a",
314
+ jobs: [
315
+ {
316
+ type: "agent.run.requested",
317
+ payload: { runId: "agent-run-1" },
318
+ },
319
+ ],
320
+ })
321
+ await queues.agentChildren.enqueue({
322
+ projectId: "project-a",
323
+ jobs: [
324
+ {
325
+ type: "agent.subagent-run.requested",
326
+ payload: { runId: "child-run-1" },
327
+ },
328
+ ],
329
+ })
312
330
 
313
331
  const crossLane = await queues.pipelines.claim({
314
332
  projectId: "project-a",
@@ -330,6 +348,16 @@ export function runQueueContractSuite(label: string, options: QueueContractSuite
330
348
  workerId: "action-worker-1",
331
349
  limit: 10,
332
350
  })
351
+ const agentLane = await queues.agents.claim({
352
+ projectId: "project-a",
353
+ workerId: "agent-worker-1",
354
+ limit: 10,
355
+ })
356
+ const childLane = await queues.agentChildren.claim({
357
+ projectId: "project-a",
358
+ workerId: "child-agent-worker-1",
359
+ limit: 10,
360
+ })
333
361
  const sameLane = await queues.syncRuns.claim({
334
362
  projectId: "project-a",
335
363
  workerId: "sync-worker-1",
@@ -344,6 +372,13 @@ export function runQueueContractSuite(label: string, options: QueueContractSuite
344
372
  expect(workflowLane[0]?.job.payload.runId).toBe("workflow-run-1")
345
373
  expect(actionLane).toHaveLength(1)
346
374
  expect(actionLane[0]?.job.payload.runId).toBe("act_1")
375
+ expect(agentLane).toHaveLength(1)
376
+ expect(agentLane[0]?.job).toMatchObject({
377
+ type: "agent.run.requested",
378
+ payload: { runId: "agent-run-1" },
379
+ })
380
+ expect(childLane).toHaveLength(1)
381
+ expect(childLane[0]?.job.payload.runId).toBe("child-run-1")
347
382
  expect(sameLane).toHaveLength(1)
348
383
  })
349
384
  })
@@ -0,0 +1,4 @@
1
+ /** Stable internal actor id for one workflow Agent step. */
2
+ export function workflowAgentStepActorId(workflowId: string, stepId: string): string {
3
+ return `workflow:${encodeURIComponent(workflowId)}:step:${encodeURIComponent(stepId)}`
4
+ }
@@ -1,14 +1,16 @@
1
1
  import type { ActionDefinition } from "../actions"
2
2
  import { isActionDefinition } from "../actions"
3
- import type { AgentDefinition } from "../agents"
4
- import { isAgentDefinition } from "../agents"
3
+ import { AGENT_REASONING_LEVELS, isAgentToolDefinition } from "../agents"
4
+ import { isModelReasoning } from "../models/language-model"
5
5
  import type { SchemaOrRef } from "../ontology"
6
6
  import type { ScheduleDefinition, ScheduleDefinitionForEvent } from "../schedules"
7
7
  import { isScheduleDefinition } from "../schedules"
8
+ import { isGroupDefinition } from "../security"
8
9
  import { WorkflowDefinitionError } from "./errors"
9
10
  import type {
10
11
  AgentStepBuilder,
11
12
  AgentStepDefinition,
13
+ DefineAgentStepConfig,
12
14
  InterventionBuilder,
13
15
  InterventionDefaultsRuntimeHandler,
14
16
  InterventionDefinition,
@@ -115,14 +117,25 @@ export function defineWorkflowStep<const TId extends string>(id: TId): StepBuild
115
117
  } as unknown as StepBuilder<TId>
116
118
  }
117
119
 
118
- export function defineAgentStep<const TId extends string, const TAgent extends AgentDefinition>(
120
+ export function defineAgentStep<const TId extends string>(
119
121
  id: TId,
120
- agent: TAgent
121
- ): AgentStepBuilder<TId, TAgent> {
122
+ config: DefineAgentStepConfig
123
+ ): AgentStepBuilder<TId> {
122
124
  assertNonEmpty(id, "Agent step", "id")
123
- if (!isAgentDefinition(agent)) {
124
- throw new WorkflowDefinitionError(`Agent step "${id}" references an invalid agent.`)
125
+ if (!isRecord(config)) {
126
+ throw new WorkflowDefinitionError(`Agent step "${id}" config must be an object.`)
125
127
  }
128
+ if (typeof config.instructions !== "string" || !config.instructions.trim()) {
129
+ throw new WorkflowDefinitionError(`Agent step "${id}" instructions must not be empty.`)
130
+ }
131
+ if (config.reasoning !== undefined && !isModelReasoning(config.reasoning)) {
132
+ throw new WorkflowDefinitionError(
133
+ `Agent step "${id}" reasoning must be one of: ${AGENT_REASONING_LEVELS.join(", ")}, or a nonnegative budgetTokens object.`
134
+ )
135
+ }
136
+ const { model, reasoning, instructions } = config
137
+ const groupIds = groupIdsFromAgentStepConfig(id, config)
138
+ const toolNames = toolNamesFromAgentStepConfig(id, config)
126
139
 
127
140
  return {
128
141
  input(input: RuntimeWorkflowInput): unknown {
@@ -133,13 +146,82 @@ export function defineAgentStep<const TId extends string, const TAgent extends A
133
146
  if (typeof prompt !== "function") {
134
147
  throw new WorkflowDefinitionError(`Agent step "${id}" prompt must be a function.`)
135
148
  }
136
- return { kind: "agentStep", id, agent, input, output, prompt }
149
+ return {
150
+ kind: "agentStep",
151
+ id,
152
+ ...(model === undefined ? {} : { model }),
153
+ ...(reasoning === undefined ? {} : { reasoning }),
154
+ instructions,
155
+ groupIds,
156
+ toolNames,
157
+ input,
158
+ output,
159
+ prompt,
160
+ }
137
161
  },
138
162
  }
139
163
  },
140
164
  }
141
165
  },
142
- } as unknown as AgentStepBuilder<TId, TAgent>
166
+ } as unknown as AgentStepBuilder<TId>
167
+ }
168
+
169
+ function groupIdsFromAgentStepConfig(
170
+ stepId: string,
171
+ config: DefineAgentStepConfig
172
+ ): readonly string[] {
173
+ if (config.groups !== undefined && !Array.isArray(config.groups)) {
174
+ throw new WorkflowDefinitionError(
175
+ `Agent step "${stepId}" groups must be an array of group definitions.`
176
+ )
177
+ }
178
+ const groupIds = Array.from(config.groups ?? [], (group) => {
179
+ if (!isGroupDefinition(group)) {
180
+ throw new WorkflowDefinitionError(
181
+ `Agent step "${stepId}" groups must contain only group definitions.`
182
+ )
183
+ }
184
+ return group.id
185
+ })
186
+ assertUniqueAgentStepValues(stepId, "group", groupIds)
187
+ return Object.freeze(groupIds)
188
+ }
189
+
190
+ function toolNamesFromAgentStepConfig(
191
+ stepId: string,
192
+ config: DefineAgentStepConfig
193
+ ): readonly string[] {
194
+ if (config.tools !== undefined && !Array.isArray(config.tools)) {
195
+ throw new WorkflowDefinitionError(
196
+ `Agent step "${stepId}" tools must be an array of agent tool definitions.`
197
+ )
198
+ }
199
+ const toolNames = Array.from(config.tools ?? [], (tool) => {
200
+ if (!isAgentToolDefinition(tool)) {
201
+ throw new WorkflowDefinitionError(
202
+ `Agent step "${stepId}" tools must contain only agent tool definitions.`
203
+ )
204
+ }
205
+ return tool.name
206
+ })
207
+ assertUniqueAgentStepValues(stepId, "tool", toolNames)
208
+ return Object.freeze(toolNames)
209
+ }
210
+
211
+ function assertUniqueAgentStepValues(
212
+ stepId: string,
213
+ kind: "group" | "tool",
214
+ values: readonly string[]
215
+ ): void {
216
+ const seen = new Set<string>()
217
+ for (const value of values) {
218
+ if (seen.has(value)) {
219
+ throw new WorkflowDefinitionError(
220
+ `Agent step "${stepId}" ${kind}s contains duplicate ${kind} '${value}'.`
221
+ )
222
+ }
223
+ seen.add(value)
224
+ }
143
225
  }
144
226
 
145
227
  export function defineIntervention<const TId extends string>(
@@ -469,3 +551,7 @@ function isRuntimeWorkflowMapper(value: unknown): value is RuntimeWorkflowMapper
469
551
  function isRuntimeWorkflowScheduleMapper(value: unknown): value is RuntimeWorkflowScheduleMapper {
470
552
  return typeof value === "function"
471
553
  }
554
+
555
+ function isRecord(value: unknown): value is Readonly<Record<string, unknown>> {
556
+ return typeof value === "object" && value !== null && !Array.isArray(value)
557
+ }
@@ -61,7 +61,8 @@ export type ListWorkflowRunNodesInput = Omit<
61
61
  >
62
62
 
63
63
  /** Execution-facing Agent node view derived from its run row and model-call ledger. */
64
- export interface WorkflowAgentNodeRunView extends Omit<WorkflowAgentNodeRunRecord, "execution"> {
64
+ export interface WorkflowAgentNodeRunView
65
+ extends Omit<WorkflowAgentNodeRunRecord, "execution" | "actorId"> {
65
66
  readonly usage?: AiModelCallUsage
66
67
  /** Preferred valuation; omitted when there are no calls or cost storage is unavailable. */
67
68
  readonly cost?: AiCostSummary
@@ -274,7 +275,6 @@ function toWorkflowAgentNodeRunView(
274
275
  projectId: execution.projectId,
275
276
  nodeRunId: execution.nodeRunId,
276
277
  executionId: execution.executionId,
277
- agentId: execution.agentId,
278
278
  status: execution.status,
279
279
  prompt: execution.prompt,
280
280
  modelId: execution.modelId,
@@ -15,7 +15,7 @@ export interface WorkflowNodeFailureIdentity extends WorkflowNodeFailureIdentity
15
15
  readonly actionId: string
16
16
  readonly actionRunId?: string
17
17
  }
18
- | { readonly type: "agent"; readonly agentId: string }
18
+ | { readonly type: "agent"; readonly agentStepId: string }
19
19
  | { readonly type: "intervention"; readonly interventionId: string }
20
20
  }
21
21
 
@@ -56,7 +56,7 @@ function workflowNodeFailureDetails(identity: WorkflowNodeFailureIdentity) {
56
56
  ...(identity.child.actionRunId ? { actionRunId: identity.child.actionRunId } : {}),
57
57
  }
58
58
  case "agent":
59
- return { ...base, agentId: identity.child.agentId }
59
+ return { ...base, agentStepId: identity.child.agentStepId }
60
60
  case "intervention":
61
61
  return { ...base, interventionId: identity.child.interventionId }
62
62
  }
@@ -1,3 +1,4 @@
1
+ export { workflowAgentStepActorId } from "./agent-step-identity"
1
2
  export {
2
3
  defineAgentStep,
3
4
  defineIntervention,
@@ -39,6 +40,7 @@ export type {
39
40
  AgentStepPrompt,
40
41
  AgentStepPromptBuilder,
41
42
  AgentStepPromptContext,
43
+ DefineAgentStepConfig,
42
44
  DerivedWorkflowNodeKey,
43
45
  InferAgentStepInput,
44
46
  InferAgentStepOutput,
@@ -90,6 +92,7 @@ export {
90
92
  isInterventionDefinition,
91
93
  isStepDefinition,
92
94
  isWorkflowDefinition,
95
+ validateWorkflowAgentStepGroupReferences,
93
96
  validateWorkflowAgentStepInput,
94
97
  validateWorkflowAgentStepOutput,
95
98
  validateWorkflowDefinition,
@@ -5,8 +5,8 @@ import type {
5
5
  ObjectActionDefinition,
6
6
  } from "../actions"
7
7
  import type { ActionsRuntime } from "../actions/execution"
8
- import type { AgentsRuntime } from "../agents/execution"
9
- import type { AgentDefinition } from "../agents/types"
8
+ import type { AgentRuntime } from "../agents/execution"
9
+ import type { AgentReasoningLevel, AgentToolDefinition } from "../agents/types"
10
10
  import type { Principal } from "../auth"
11
11
  import type { BlobsRuntime } from "../blob-storage/execution"
12
12
  import type { ConnectorRuntime } from "../connectors/execution"
@@ -15,6 +15,7 @@ import type { EventsRuntime } from "../events/execution"
15
15
  import type { JsonValue } from "../json"
16
16
  import type { Logger } from "../logging"
17
17
  import type { LogsRuntime } from "../logging/execution"
18
+ import type { LanguageModel } from "../models/language-model"
18
19
  import type { ObjectsRuntime } from "../objects/execution"
19
20
  import type { InferSchemaOrRef, ObjectRef, OntologySource, SchemaOrRef } from "../ontology"
20
21
  import type { PipelinesRuntime } from "../pipelines/execution"
@@ -22,6 +23,7 @@ import type { ProjectionsRuntime } from "../projections/execution"
22
23
  import type { RulesRuntime } from "../rules/execution"
23
24
  import type { ScheduleDefinition, ScheduleDefinitionForEvent } from "../schedules"
24
25
  import type { SchedulesRuntime } from "../schedules/execution"
26
+ import type { GroupDefinition } from "../security"
25
27
  import type { SyncsRuntime } from "../syncs/execution"
26
28
  import type { WorkflowsRuntime } from "./execution"
27
29
 
@@ -60,7 +62,7 @@ export interface StepRunContext<TInput extends Record<string, unknown>> {
60
62
  export interface WorkflowRuntimeFacade {
61
63
  readonly objects: ObjectsRuntime<readonly OntologySource[]>
62
64
  readonly actions: ActionsRuntime
63
- readonly agents: AgentsRuntime
65
+ readonly agent: AgentRuntime
64
66
  readonly datasets: DatasetsRuntime
65
67
  readonly workflows: WorkflowsRuntime
66
68
  readonly syncs: SyncsRuntime
@@ -133,9 +135,18 @@ export type AgentStepPrompt<TInput extends Record<string, unknown>> = (
133
135
  ctx: AgentStepPromptContext<TInput>
134
136
  ) => string | Promise<string>
135
137
 
138
+ /** Runtime configuration owned directly by a workflow Agent step. */
139
+ export interface DefineAgentStepConfig {
140
+ readonly model?: LanguageModel
141
+ readonly reasoning?: AgentReasoningLevel
142
+ readonly instructions: string
143
+ readonly groups?: readonly GroupDefinition[]
144
+ /** Project tools this workflow task may call. Defaults to none. */
145
+ readonly tools?: readonly AgentToolDefinition[]
146
+ }
147
+
136
148
  export interface AgentStepDefinition<
137
149
  TId extends string = string,
138
- TAgent extends AgentDefinition = AgentDefinition,
139
150
  TInput extends Record<string, unknown> = Record<string, unknown>,
140
151
  TOutput extends Record<string, unknown> = Record<string, unknown>,
141
152
  TInputValue extends Record<string, unknown> = Record<string, unknown>,
@@ -143,7 +154,11 @@ export interface AgentStepDefinition<
143
154
  > {
144
155
  readonly kind: "agentStep"
145
156
  readonly id: TId
146
- readonly agent: TAgent
157
+ readonly model?: LanguageModel
158
+ readonly reasoning?: AgentReasoningLevel
159
+ readonly instructions: string
160
+ readonly groupIds: readonly string[]
161
+ readonly toolNames: readonly string[]
147
162
  readonly input: TInput
148
163
  readonly output: TOutput
149
164
  readonly prompt: AgentStepPrompt<Record<string, unknown>>
@@ -153,7 +168,6 @@ export interface AgentStepDefinition<
153
168
 
154
169
  export interface AgentStepPromptBuilder<
155
170
  TId extends string,
156
- TAgent extends AgentDefinition,
157
171
  TInput extends Record<string, unknown>,
158
172
  TOutput extends Record<string, unknown>,
159
173
  > {
@@ -161,7 +175,6 @@ export interface AgentStepPromptBuilder<
161
175
  prompt: AgentStepPrompt<InferSchemaOrRefRecord<TInput>>
162
176
  ): AgentStepDefinition<
163
177
  TId,
164
- TAgent,
165
178
  TInput,
166
179
  TOutput,
167
180
  InferSchemaOrRefRecord<TInput>,
@@ -171,18 +184,17 @@ export interface AgentStepPromptBuilder<
171
184
 
172
185
  export interface AgentStepOutputBuilder<
173
186
  TId extends string,
174
- TAgent extends AgentDefinition,
175
187
  TInput extends Record<string, unknown>,
176
188
  > {
177
189
  output<const TOutput extends Record<string, unknown>>(
178
190
  output: TOutput & SchemaOrRefInput<TOutput>
179
- ): AgentStepPromptBuilder<TId, TAgent, TInput, TOutput>
191
+ ): AgentStepPromptBuilder<TId, TInput, TOutput>
180
192
  }
181
193
 
182
- export interface AgentStepBuilder<TId extends string, TAgent extends AgentDefinition> {
194
+ export interface AgentStepBuilder<TId extends string> {
183
195
  input<const TInput extends Record<string, unknown>>(
184
196
  input: TInput & SchemaOrRefInput<TInput>
185
- ): AgentStepOutputBuilder<TId, TAgent, TInput>
197
+ ): AgentStepOutputBuilder<TId, TInput>
186
198
  }
187
199
 
188
200
  export type InferAgentStepInput<TStep extends AgentStepDefinition> = TStep extends {