@sixb/core 0.1.6 → 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 (535) hide show
  1. package/dist/actions/index.js +37 -33
  2. package/dist/actions/index.js.map +1 -1
  3. package/dist/actions/worker.js +3 -3
  4. package/dist/agents/adapters.d.ts +33 -76
  5. package/dist/agents/adapters.d.ts.map +1 -1
  6. package/dist/agents/authority.d.ts +22 -6
  7. package/dist/agents/authority.d.ts.map +1 -1
  8. package/dist/agents/builders.d.ts +3 -11
  9. package/dist/agents/builders.d.ts.map +1 -1
  10. package/dist/agents/context.js +2 -2
  11. package/dist/agents/dispatch.d.ts +9 -1
  12. package/dist/agents/dispatch.d.ts.map +1 -1
  13. package/dist/agents/errors.d.ts +2 -2
  14. package/dist/agents/errors.d.ts.map +1 -1
  15. package/dist/agents/execution.d.ts +9 -10
  16. package/dist/agents/execution.d.ts.map +1 -1
  17. package/dist/agents/ids.d.ts +4 -0
  18. package/dist/agents/ids.d.ts.map +1 -1
  19. package/dist/agents/index.d.ts +13 -9
  20. package/dist/agents/index.d.ts.map +1 -1
  21. package/dist/agents/index.js +80 -68
  22. package/dist/agents/index.js.map +1 -1
  23. package/dist/agents/message.d.ts +17 -10
  24. package/dist/agents/message.d.ts.map +1 -1
  25. package/dist/agents/model-loop.d.ts +56 -0
  26. package/dist/agents/model-loop.d.ts.map +1 -0
  27. package/dist/agents/reference.d.ts +4 -0
  28. package/dist/agents/reference.d.ts.map +1 -0
  29. package/dist/agents/request.d.ts +10 -8
  30. package/dist/agents/request.d.ts.map +1 -1
  31. package/dist/agents/retired-config.d.ts +4 -0
  32. package/dist/agents/retired-config.d.ts.map +1 -0
  33. package/dist/agents/streams.d.ts +13 -8
  34. package/dist/agents/streams.d.ts.map +1 -1
  35. package/dist/agents/streams.js +7 -5
  36. package/dist/agents/streams.js.map +1 -1
  37. package/dist/agents/tool-catalog.d.ts +9 -0
  38. package/dist/agents/tool-catalog.d.ts.map +1 -0
  39. package/dist/agents/tool-definition.d.ts +1 -0
  40. package/dist/agents/tool-definition.d.ts.map +1 -1
  41. package/dist/agents/types.d.ts +31 -68
  42. package/dist/agents/types.d.ts.map +1 -1
  43. package/dist/agents/validation.d.ts +4 -10
  44. package/dist/agents/validation.d.ts.map +1 -1
  45. package/dist/ai-usage/execution.d.ts +53 -0
  46. package/dist/ai-usage/execution.d.ts.map +1 -0
  47. package/dist/ai-usage/index.d.ts +3 -0
  48. package/dist/ai-usage/index.d.ts.map +1 -0
  49. package/dist/auth/index.js +7 -7
  50. package/dist/authorization/decision.d.ts +5 -2
  51. package/dist/authorization/decision.d.ts.map +1 -1
  52. package/dist/authorization/grant-kinds.d.ts +24 -8
  53. package/dist/authorization/grant-kinds.d.ts.map +1 -1
  54. package/dist/authorization/index.d.ts +1 -1
  55. package/dist/authorization/index.d.ts.map +1 -1
  56. package/dist/authorization/index.js +8 -6
  57. package/dist/authorization/index.js.map +1 -1
  58. package/dist/authorization/resolve.d.ts +3 -3
  59. package/dist/authorization/resolve.d.ts.map +1 -1
  60. package/dist/authorization/types.d.ts +7 -5
  61. package/dist/authorization/types.d.ts.map +1 -1
  62. package/dist/blob-storage/browser.js +2 -2
  63. package/dist/blob-storage/index.js +3 -3
  64. package/dist/bootstrap/discovery.d.ts +1 -7
  65. package/dist/bootstrap/discovery.d.ts.map +1 -1
  66. package/dist/bootstrap/index.js +52 -48
  67. package/dist/bootstrap/index.js.map +1 -1
  68. package/dist/broker/index.js +2 -2
  69. package/dist/{chunk-zqysyfjt.js → chunk-08m3b6w8.js} +1 -1
  70. package/dist/{chunk-1g8negke.js → chunk-08twe8m6.js} +93 -8
  71. package/dist/chunk-08twe8m6.js.map +12 -0
  72. package/dist/{chunk-xkthy56g.js → chunk-1kamz6j0.js} +1 -1
  73. package/dist/{chunk-dy311asx.js → chunk-2b5qtban.js} +12 -12
  74. package/dist/{chunk-dy311asx.js.map → chunk-2b5qtban.js.map} +3 -3
  75. package/dist/{chunk-0172wgm9.js → chunk-2xns679x.js} +10 -2
  76. package/dist/{chunk-0172wgm9.js.map → chunk-2xns679x.js.map} +3 -3
  77. package/dist/{chunk-f83ka50g.js → chunk-37wk412q.js} +86 -28
  78. package/dist/{chunk-f83ka50g.js.map → chunk-37wk412q.js.map} +8 -8
  79. package/dist/{chunk-md8k0r54.js → chunk-3fqt22c4.js} +4 -4
  80. package/dist/{chunk-t9xghkva.js → chunk-3kv70xwp.js} +3 -2
  81. package/dist/{chunk-t9xghkva.js.map → chunk-3kv70xwp.js.map} +3 -3
  82. package/dist/{chunk-z3zp0bj1.js → chunk-407j3msh.js} +1 -1
  83. package/dist/{chunk-rhrbz7d4.js → chunk-4a849fr1.js} +1 -1
  84. package/dist/{chunk-62c7t4jc.js → chunk-4nxeacx7.js} +1 -1
  85. package/dist/{chunk-cy0n5dms.js → chunk-5jcdmjam.js} +1 -1
  86. package/dist/{chunk-819wnjz8.js → chunk-64sr682n.js} +7 -7
  87. package/dist/{chunk-t624af60.js → chunk-6ed5bwnd.js} +646 -67
  88. package/dist/{chunk-t624af60.js.map → chunk-6ed5bwnd.js.map} +10 -9
  89. package/dist/{chunk-x2yw73hy.js → chunk-7ds9620f.js} +1 -1
  90. package/dist/{chunk-dm72y8wt.js → chunk-7y0f6rf1.js} +29 -16
  91. package/dist/chunk-7y0f6rf1.js.map +10 -0
  92. package/dist/{chunk-72q2y8hn.js → chunk-8tsf6dmc.js} +2 -2
  93. package/dist/{chunk-nkbfrt0c.js → chunk-9aehf39w.js} +7 -7
  94. package/dist/{chunk-ezake7g1.js → chunk-agsvg9ar.js} +1 -1
  95. package/dist/{chunk-rdeagz6b.js → chunk-atmkaf60.js} +1 -1
  96. package/dist/{chunk-rdeagz6b.js.map → chunk-atmkaf60.js.map} +2 -2
  97. package/dist/chunk-c15dr03f.js +43 -0
  98. package/dist/chunk-c15dr03f.js.map +10 -0
  99. package/dist/{chunk-0hc5j867.js → chunk-d2ndstdf.js} +8 -6
  100. package/dist/{chunk-0hc5j867.js.map → chunk-d2ndstdf.js.map} +2 -2
  101. package/dist/{chunk-rnshztfq.js → chunk-d63tybny.js} +2 -2
  102. package/dist/{chunk-t0jjkep3.js → chunk-d8qkxt2v.js} +4 -2
  103. package/dist/chunk-d8qkxt2v.js.map +10 -0
  104. package/dist/{chunk-vybf6pkp.js → chunk-dbc80ad7.js} +1 -1
  105. package/dist/{chunk-4gz41why.js → chunk-dqn23610.js} +1 -1
  106. package/dist/{chunk-5sxb1168.js → chunk-e4rvtvpw.js} +13 -11
  107. package/dist/{chunk-5sxb1168.js.map → chunk-e4rvtvpw.js.map} +2 -2
  108. package/dist/{chunk-h9kxd41f.js → chunk-gbrpsx4m.js} +19 -6
  109. package/dist/chunk-gbrpsx4m.js.map +11 -0
  110. package/dist/{chunk-nva1xkjz.js → chunk-h0knpbz5.js} +468 -1236
  111. package/dist/chunk-h0knpbz5.js.map +38 -0
  112. package/dist/{chunk-tg5mee00.js → chunk-ha58tjtt.js} +6 -6
  113. package/dist/{chunk-f6erf2vv.js → chunk-hdz94br2.js} +2 -2
  114. package/dist/chunk-jecn6t54.js +307 -0
  115. package/dist/chunk-jecn6t54.js.map +12 -0
  116. package/dist/{chunk-dsrkgtnh.js → chunk-jq43kdvk.js} +1 -1
  117. package/dist/{chunk-wtmzkcht.js → chunk-k34z5rvh.js} +1 -1
  118. package/dist/{chunk-htq0qh7z.js → chunk-ka3a2ft3.js} +2 -2
  119. package/dist/{chunk-znagycq7.js → chunk-kt81c11h.js} +2 -2
  120. package/dist/chunk-n2arzn6e.js +1745 -0
  121. package/dist/chunk-n2arzn6e.js.map +20 -0
  122. package/dist/{chunk-f2rt4vkh.js → chunk-n2w475r0.js} +3 -3
  123. package/dist/{chunk-t8t39h7v.js → chunk-n6jxh8sw.js} +10 -2
  124. package/dist/chunk-n6jxh8sw.js.map +10 -0
  125. package/dist/{chunk-drjqm1aa.js → chunk-p03r0h5s.js} +310 -28
  126. package/dist/chunk-p03r0h5s.js.map +16 -0
  127. package/dist/chunk-p2vqaxkc.js +528 -0
  128. package/dist/chunk-p2vqaxkc.js.map +15 -0
  129. package/dist/{chunk-n4spznws.js → chunk-qjycjdj6.js} +84 -11
  130. package/dist/chunk-qjycjdj6.js.map +12 -0
  131. package/dist/chunk-qjzp9xyb.js +286 -0
  132. package/dist/chunk-qjzp9xyb.js.map +12 -0
  133. package/dist/{chunk-5gynx4xn.js → chunk-qv38twt8.js} +50 -69
  134. package/dist/{chunk-5gynx4xn.js.map → chunk-qv38twt8.js.map} +8 -8
  135. package/dist/{chunk-bhxaq2nn.js → chunk-qw9gvjv5.js} +1 -1
  136. package/dist/{chunk-8gv5z0zm.js → chunk-rp1mvzb4.js} +6 -6
  137. package/dist/{chunk-1e8m6yn3.js → chunk-rre42skh.js} +182 -18
  138. package/dist/chunk-rre42skh.js.map +39 -0
  139. package/dist/{chunk-ghteq96b.js → chunk-s5y30bc9.js} +2 -2
  140. package/dist/{chunk-a31h57d5.js → chunk-tn7xcs2n.js} +2 -2
  141. package/dist/{chunk-6gjqgd3d.js → chunk-tpnd31c1.js} +2 -1
  142. package/dist/chunk-tpnd31c1.js.map +11 -0
  143. package/dist/chunk-trxxmgnf.js +68 -0
  144. package/dist/chunk-trxxmgnf.js.map +11 -0
  145. package/dist/{chunk-e42bc6m3.js → chunk-vjjv9mrb.js} +2 -2
  146. package/dist/{chunk-8b55ygje.js → chunk-w3e09qqk.js} +1 -1
  147. package/dist/{chunk-ckxfnx7f.js → chunk-wjgm6jjt.js} +2 -2
  148. package/dist/{chunk-3j7573mj.js → chunk-x0qhkqje.js} +2 -2
  149. package/dist/{chunk-dysw7nsm.js → chunk-xdpwpkha.js} +2 -2
  150. package/dist/{chunk-a44d5zgd.js → chunk-y35ma3mj.js} +11 -16
  151. package/dist/{chunk-a44d5zgd.js.map → chunk-y35ma3mj.js.map} +3 -4
  152. package/dist/{chunk-qewtks41.js → chunk-z2sery1b.js} +64 -1
  153. package/dist/{chunk-qewtks41.js.map → chunk-z2sery1b.js.map} +3 -3
  154. package/dist/error-reporting/internal.js +4 -4
  155. package/dist/error-reporting/types.d.ts +7 -2
  156. package/dist/error-reporting/types.d.ts.map +1 -1
  157. package/dist/errors/catalog.d.ts +8 -0
  158. package/dist/errors/catalog.d.ts.map +1 -1
  159. package/dist/errors/internal.js +2 -2
  160. package/dist/events/index.js +4 -4
  161. package/dist/execution/agent.d.ts +18 -9
  162. package/dist/execution/agent.d.ts.map +1 -1
  163. package/dist/execution/agent.js +52 -43
  164. package/dist/execution/agent.js.map +1 -1
  165. package/dist/execution/authorization.d.ts +14 -4
  166. package/dist/execution/authorization.d.ts.map +1 -1
  167. package/dist/execution/primitive.js +45 -43
  168. package/dist/execution/primitive.js.map +2 -2
  169. package/dist/execution/request.d.ts +3 -1
  170. package/dist/execution/request.d.ts.map +1 -1
  171. package/dist/execution/request.js +46 -44
  172. package/dist/execution/request.js.map +3 -3
  173. package/dist/execution/types.d.ts +1 -1
  174. package/dist/execution/types.d.ts.map +1 -1
  175. package/dist/http/api-routes.d.ts.map +1 -1
  176. package/dist/http/index.js +1 -1
  177. package/dist/index.d.ts +9 -6
  178. package/dist/index.d.ts.map +1 -1
  179. package/dist/index.js +82 -77
  180. package/dist/index.js.map +1 -1
  181. package/dist/json.d.ts +2 -0
  182. package/dist/json.d.ts.map +1 -1
  183. package/dist/lake-storage/index.js +5 -5
  184. package/dist/logging/index.js +3 -3
  185. package/dist/logging/types.js +2 -2
  186. package/dist/materialization/index.js +2 -2
  187. package/dist/materializer/index.js +33 -29
  188. package/dist/materializer/index.js.map +1 -1
  189. package/dist/models/catalog.d.ts +40 -0
  190. package/dist/models/catalog.d.ts.map +1 -0
  191. package/dist/models/definitions.d.ts +25 -0
  192. package/dist/models/definitions.d.ts.map +1 -0
  193. package/dist/models/errors.d.ts +52 -0
  194. package/dist/models/errors.d.ts.map +1 -0
  195. package/dist/models/events.d.ts +192 -0
  196. package/dist/models/events.d.ts.map +1 -0
  197. package/dist/models/index.d.ts +17 -39
  198. package/dist/models/index.d.ts.map +1 -1
  199. package/dist/models/index.js +50 -0
  200. package/dist/models/index.js.map +9 -0
  201. package/dist/models/language-model.d.ts +90 -0
  202. package/dist/models/language-model.d.ts.map +1 -0
  203. package/dist/models/messages.d.ts +74 -0
  204. package/dist/models/messages.d.ts.map +1 -0
  205. package/dist/models/pricing.d.ts +69 -0
  206. package/dist/models/pricing.d.ts.map +1 -0
  207. package/dist/models/rate-card.d.ts +24 -0
  208. package/dist/models/rate-card.d.ts.map +1 -0
  209. package/dist/models/tools.d.ts +24 -0
  210. package/dist/models/tools.d.ts.map +1 -0
  211. package/dist/objects/index.js +38 -34
  212. package/dist/objects/index.js.map +1 -1
  213. package/dist/objects/query/index.js +32 -28
  214. package/dist/objects/query/index.js.map +1 -1
  215. package/dist/ontology/index.js +5 -5
  216. package/dist/ontology/internal.js +4 -4
  217. package/dist/pipelines/index.js +37 -35
  218. package/dist/pipelines/index.js.map +1 -1
  219. package/dist/projections/internal.js +35 -31
  220. package/dist/projections/internal.js.map +1 -1
  221. package/dist/queues/in-memory.d.ts +3 -2
  222. package/dist/queues/in-memory.d.ts.map +1 -1
  223. package/dist/queues/index.d.ts +3 -1
  224. package/dist/queues/index.d.ts.map +1 -1
  225. package/dist/queues/index.js +1 -1
  226. package/dist/queues/types.d.ts +15 -3
  227. package/dist/queues/types.d.ts.map +1 -1
  228. package/dist/runtime/create.d.ts +4 -4
  229. package/dist/runtime/create.d.ts.map +1 -1
  230. package/dist/runtime/definitions.d.ts +2 -2
  231. package/dist/runtime/definitions.d.ts.map +1 -1
  232. package/dist/runtime/host.d.ts +3 -2
  233. package/dist/runtime/host.d.ts.map +1 -1
  234. package/dist/runtime/resolve-definitions.d.ts +2 -2
  235. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  236. package/dist/runtime/sixb.d.ts +4 -2
  237. package/dist/runtime/sixb.d.ts.map +1 -1
  238. package/dist/security/every.d.ts +1 -4
  239. package/dist/security/every.d.ts.map +1 -1
  240. package/dist/security/grants.d.ts +6 -5
  241. package/dist/security/grants.d.ts.map +1 -1
  242. package/dist/security/index.d.ts +1 -1
  243. package/dist/security/index.d.ts.map +1 -1
  244. package/dist/security/registry.d.ts +1 -1
  245. package/dist/security/registry.d.ts.map +1 -1
  246. package/dist/security/types.d.ts +13 -5
  247. package/dist/security/types.d.ts.map +1 -1
  248. package/dist/security/validation.d.ts +4 -2
  249. package/dist/security/validation.d.ts.map +1 -1
  250. package/dist/storage/action-runs/failure.js +3 -3
  251. package/dist/storage/action-runs/provider.js +2 -2
  252. package/dist/storage/agents/errors.d.ts +1 -1
  253. package/dist/storage/agents/errors.d.ts.map +1 -1
  254. package/dist/storage/agents/in-memory.d.ts +3 -2
  255. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  256. package/dist/storage/agents/index.d.ts +1 -1
  257. package/dist/storage/agents/index.d.ts.map +1 -1
  258. package/dist/storage/agents/provider.d.ts +11 -4
  259. package/dist/storage/agents/provider.d.ts.map +1 -1
  260. package/dist/storage/agents/provider.js +18 -15
  261. package/dist/storage/agents/provider.js.map +1 -1
  262. package/dist/storage/agents/types.d.ts +65 -17
  263. package/dist/storage/agents/types.d.ts.map +1 -1
  264. package/dist/storage/ai-cost/analytics.d.ts +2 -1
  265. package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
  266. package/dist/storage/ai-cost/codec.d.ts +3 -2
  267. package/dist/storage/ai-cost/codec.d.ts.map +1 -1
  268. package/dist/storage/ai-cost/groups.d.ts +51 -0
  269. package/dist/storage/ai-cost/groups.d.ts.map +1 -0
  270. package/dist/storage/ai-cost/in-memory.d.ts +11 -1
  271. package/dist/storage/ai-cost/in-memory.d.ts.map +1 -1
  272. package/dist/storage/ai-cost/index.d.ts +1 -1
  273. package/dist/storage/ai-cost/index.d.ts.map +1 -1
  274. package/dist/storage/ai-cost/provider.d.ts +2 -0
  275. package/dist/storage/ai-cost/provider.d.ts.map +1 -1
  276. package/dist/storage/ai-cost/provider.js +29 -13
  277. package/dist/storage/ai-cost/provider.js.map +3 -3
  278. package/dist/storage/ai-cost/types.d.ts +64 -15
  279. package/dist/storage/ai-cost/types.d.ts.map +1 -1
  280. package/dist/storage/ai-cost/validation.d.ts +2 -1
  281. package/dist/storage/ai-cost/validation.d.ts.map +1 -1
  282. package/dist/storage/ai-limits/enforcement.d.ts +14 -0
  283. package/dist/storage/ai-limits/enforcement.d.ts.map +1 -0
  284. package/dist/storage/ai-limits/enforcement.js +21 -0
  285. package/dist/storage/ai-limits/enforcement.js.map +9 -0
  286. package/dist/storage/ai-limits/errors.d.ts +8 -0
  287. package/dist/storage/ai-limits/errors.d.ts.map +1 -0
  288. package/dist/storage/ai-limits/in-memory.d.ts +78 -0
  289. package/dist/storage/ai-limits/in-memory.d.ts.map +1 -0
  290. package/dist/storage/ai-limits/index.d.ts +7 -0
  291. package/dist/storage/ai-limits/index.d.ts.map +1 -0
  292. package/dist/storage/ai-limits/period.d.ts +4 -0
  293. package/dist/storage/ai-limits/period.d.ts.map +1 -0
  294. package/dist/storage/ai-limits/provider.d.ts +85 -0
  295. package/dist/storage/ai-limits/provider.d.ts.map +1 -0
  296. package/dist/storage/ai-limits/provider.js +62 -0
  297. package/dist/storage/ai-limits/provider.js.map +9 -0
  298. package/dist/storage/ai-limits/types.d.ts +175 -0
  299. package/dist/storage/ai-limits/types.d.ts.map +1 -0
  300. package/dist/storage/ai-usage/in-memory.d.ts +4 -0
  301. package/dist/storage/ai-usage/in-memory.d.ts.map +1 -1
  302. package/dist/storage/ai-usage/record.d.ts.map +1 -1
  303. package/dist/storage/ai-usage/types.d.ts +6 -2
  304. package/dist/storage/ai-usage/types.d.ts.map +1 -1
  305. package/dist/storage/auth/errors.d.ts +1 -1
  306. package/dist/storage/auth/errors.d.ts.map +1 -1
  307. package/dist/storage/auth/in-memory/auth-storage.d.ts +4 -1
  308. package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
  309. package/dist/storage/auth/in-memory/device-authorizations.d.ts +29 -0
  310. package/dist/storage/auth/in-memory/device-authorizations.d.ts.map +1 -0
  311. package/dist/storage/auth/in-memory/shared.d.ts +3 -1
  312. package/dist/storage/auth/in-memory/shared.d.ts.map +1 -1
  313. package/dist/storage/auth/index.d.ts +2 -1
  314. package/dist/storage/auth/index.d.ts.map +1 -1
  315. package/dist/storage/auth/types.d.ts +66 -0
  316. package/dist/storage/auth/types.d.ts.map +1 -1
  317. package/dist/storage/connector-connections/provider.js +2 -2
  318. package/dist/storage/executions/provider.js +1 -1
  319. package/dist/storage/executions/run-link.d.ts +7 -2
  320. package/dist/storage/executions/run-link.d.ts.map +1 -1
  321. package/dist/storage/executions/validation.d.ts.map +1 -1
  322. package/dist/storage/in-memory/index.d.ts +4 -0
  323. package/dist/storage/in-memory/index.d.ts.map +1 -1
  324. package/dist/storage/index.d.ts +7 -4
  325. package/dist/storage/index.d.ts.map +1 -1
  326. package/dist/storage/index.js +51 -38
  327. package/dist/storage/index.js.map +1 -1
  328. package/dist/storage/ontology/provider.js +3 -3
  329. package/dist/storage/pipeline-runs/provider.js +2 -2
  330. package/dist/storage/projection-runs/provider.js +4 -4
  331. package/dist/storage/sync-runs/provider.js +2 -2
  332. package/dist/storage/types.d.ts +5 -1
  333. package/dist/storage/types.d.ts.map +1 -1
  334. package/dist/storage/webhook-runs/provider.js +2 -2
  335. package/dist/storage/workflow-runs/provider.d.ts +1 -1
  336. package/dist/storage/workflow-runs/provider.js +10 -11
  337. package/dist/storage/workflow-runs/provider.js.map +1 -1
  338. package/dist/storage/workflow-runs/types.d.ts +5 -4
  339. package/dist/storage/workflow-runs/types.d.ts.map +1 -1
  340. package/dist/syncs/index.js +37 -35
  341. package/dist/syncs/index.js.map +1 -1
  342. package/dist/testing/agent-execution.d.ts +3 -1
  343. package/dist/testing/agent-execution.d.ts.map +1 -1
  344. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  345. package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
  346. package/dist/testing/ai-limit-storage-contract.d.ts +18 -0
  347. package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -0
  348. package/dist/testing/ai-model-call-groups-contract.d.ts +6 -0
  349. package/dist/testing/ai-model-call-groups-contract.d.ts.map +1 -0
  350. package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
  351. package/dist/testing/auth-storage-contract.d.ts.map +1 -1
  352. package/dist/testing/index.d.ts +2 -0
  353. package/dist/testing/index.d.ts.map +1 -1
  354. package/dist/testing/index.js +3637 -1962
  355. package/dist/testing/index.js.map +14 -12
  356. package/dist/testing/queues-contract.d.ts.map +1 -1
  357. package/dist/webhooks/internal.js +32 -28
  358. package/dist/webhooks/internal.js.map +2 -2
  359. package/dist/workers/index.js +2 -2
  360. package/dist/workflows/agent-step-identity.d.ts +3 -0
  361. package/dist/workflows/agent-step-identity.d.ts.map +1 -0
  362. package/dist/workflows/builders.d.ts +2 -3
  363. package/dist/workflows/builders.d.ts.map +1 -1
  364. package/dist/workflows/execution.d.ts +1 -1
  365. package/dist/workflows/execution.d.ts.map +1 -1
  366. package/dist/workflows/failure.d.ts +1 -1
  367. package/dist/workflows/failure.d.ts.map +1 -1
  368. package/dist/workflows/index.d.ts +3 -2
  369. package/dist/workflows/index.d.ts.map +1 -1
  370. package/dist/workflows/index.js +53 -45
  371. package/dist/workflows/index.js.map +1 -1
  372. package/dist/workflows/types.d.ts +26 -11
  373. package/dist/workflows/types.d.ts.map +1 -1
  374. package/dist/workflows/validation.d.ts +7 -1
  375. package/dist/workflows/validation.d.ts.map +1 -1
  376. package/package.json +19 -4
  377. package/src/agents/adapters.ts +109 -115
  378. package/src/agents/authority.ts +214 -32
  379. package/src/agents/builders.ts +3 -50
  380. package/src/agents/context-compaction.ts +4 -0
  381. package/src/agents/dispatch.ts +59 -2
  382. package/src/agents/errors.ts +5 -2
  383. package/src/agents/execution.ts +53 -52
  384. package/src/agents/ids.ts +16 -1
  385. package/src/agents/index.ts +23 -11
  386. package/src/agents/message.ts +18 -9
  387. package/src/agents/model-loop.ts +1023 -0
  388. package/src/agents/reference.ts +7 -0
  389. package/src/agents/request.ts +141 -74
  390. package/src/agents/retired-config.ts +20 -0
  391. package/src/agents/streams.ts +45 -19
  392. package/src/agents/tool-catalog.ts +21 -0
  393. package/src/agents/tool-definition.ts +23 -0
  394. package/src/agents/types.ts +39 -81
  395. package/src/agents/validation.ts +34 -180
  396. package/src/ai-usage/execution.ts +196 -0
  397. package/src/ai-usage/index.ts +15 -0
  398. package/src/authorization/decision.ts +27 -10
  399. package/src/authorization/grant-kinds.ts +62 -15
  400. package/src/authorization/index.ts +1 -0
  401. package/src/authorization/resolve.ts +12 -5
  402. package/src/authorization/types.ts +7 -5
  403. package/src/bootstrap/discovery.ts +0 -3
  404. package/src/error-reporting/types.ts +4 -2
  405. package/src/errors/catalog.ts +8 -0
  406. package/src/execution/agent.ts +129 -22
  407. package/src/execution/authorization.ts +48 -18
  408. package/src/execution/request.ts +4 -1
  409. package/src/execution/types.ts +1 -1
  410. package/src/http/api-routes.ts +63 -0
  411. package/src/index.ts +36 -7
  412. package/src/json.ts +9 -0
  413. package/src/models/catalog.ts +137 -0
  414. package/src/models/definitions.ts +202 -0
  415. package/src/models/errors.ts +83 -0
  416. package/src/models/events.ts +198 -0
  417. package/src/models/index.ts +89 -71
  418. package/src/models/language-model.ts +143 -0
  419. package/src/models/messages.ts +78 -0
  420. package/src/models/pricing.ts +390 -0
  421. package/src/models/rate-card.ts +101 -0
  422. package/src/models/tools.ts +29 -0
  423. package/src/queues/in-memory.ts +5 -0
  424. package/src/queues/index.ts +11 -0
  425. package/src/queues/types.ts +20 -3
  426. package/src/runtime/create.ts +7 -5
  427. package/src/runtime/definitions.ts +2 -2
  428. package/src/runtime/host.ts +3 -2
  429. package/src/runtime/resolve-definitions.ts +13 -36
  430. package/src/runtime/sixb.ts +6 -8
  431. package/src/security/every.ts +0 -4
  432. package/src/security/grants.ts +55 -11
  433. package/src/security/index.ts +2 -0
  434. package/src/security/registry.ts +6 -5
  435. package/src/security/types.ts +15 -4
  436. package/src/security/validation.ts +30 -9
  437. package/src/storage/agents/errors.ts +1 -0
  438. package/src/storage/agents/in-memory.ts +121 -11
  439. package/src/storage/agents/index.ts +7 -0
  440. package/src/storage/agents/provider.ts +150 -6
  441. package/src/storage/agents/types.ts +73 -16
  442. package/src/storage/ai-cost/analytics.ts +63 -6
  443. package/src/storage/ai-cost/codec.ts +37 -12
  444. package/src/storage/ai-cost/groups.ts +248 -0
  445. package/src/storage/ai-cost/in-memory.ts +42 -0
  446. package/src/storage/ai-cost/index.ts +6 -0
  447. package/src/storage/ai-cost/provider.ts +7 -0
  448. package/src/storage/ai-cost/types.ts +76 -14
  449. package/src/storage/ai-cost/validation.ts +147 -17
  450. package/src/storage/ai-limits/enforcement.ts +68 -0
  451. package/src/storage/ai-limits/errors.ts +23 -0
  452. package/src/storage/ai-limits/in-memory.ts +671 -0
  453. package/src/storage/ai-limits/index.ts +31 -0
  454. package/src/storage/ai-limits/period.ts +11 -0
  455. package/src/storage/ai-limits/provider.ts +430 -0
  456. package/src/storage/ai-limits/types.ts +195 -0
  457. package/src/storage/ai-usage/in-memory.ts +13 -0
  458. package/src/storage/ai-usage/record.ts +17 -0
  459. package/src/storage/ai-usage/types.ts +6 -2
  460. package/src/storage/auth/errors.ts +6 -0
  461. package/src/storage/auth/in-memory/auth-storage.ts +69 -0
  462. package/src/storage/auth/in-memory/device-authorizations.ts +145 -0
  463. package/src/storage/auth/in-memory/shared.ts +7 -0
  464. package/src/storage/auth/index.ts +7 -0
  465. package/src/storage/auth/types.ts +73 -0
  466. package/src/storage/executions/run-link.ts +16 -6
  467. package/src/storage/executions/validation.ts +36 -6
  468. package/src/storage/in-memory/index.ts +48 -4
  469. package/src/storage/index.ts +51 -1
  470. package/src/storage/types.ts +37 -0
  471. package/src/storage/workflow-runs/in-memory.ts +3 -3
  472. package/src/storage/workflow-runs/provider.ts +2 -2
  473. package/src/storage/workflow-runs/types.ts +6 -3
  474. package/src/testing/agent-execution.ts +40 -28
  475. package/src/testing/agent-storage-contract.ts +249 -28
  476. package/src/testing/ai-cost-storage-contract.ts +96 -8
  477. package/src/testing/ai-limit-storage-contract.ts +1134 -0
  478. package/src/testing/ai-model-call-groups-contract.ts +353 -0
  479. package/src/testing/ai-usage-storage-contract.ts +31 -0
  480. package/src/testing/auth-storage-contract.ts +85 -0
  481. package/src/testing/execution-storage-contract.ts +2 -2
  482. package/src/testing/index.ts +10 -0
  483. package/src/testing/queues-contract.ts +36 -1
  484. package/src/workflows/agent-step-identity.ts +4 -0
  485. package/src/workflows/builders.ts +95 -9
  486. package/src/workflows/execution.ts +2 -2
  487. package/src/workflows/failure.ts +2 -2
  488. package/src/workflows/index.ts +3 -0
  489. package/src/workflows/types.ts +23 -11
  490. package/src/workflows/validation.ts +100 -7
  491. package/dist/chunk-1e8m6yn3.js.map +0 -37
  492. package/dist/chunk-1g8negke.js.map +0 -11
  493. package/dist/chunk-6gjqgd3d.js.map +0 -11
  494. package/dist/chunk-dm72y8wt.js.map +0 -10
  495. package/dist/chunk-drjqm1aa.js.map +0 -15
  496. package/dist/chunk-fe5ev6mr.js +0 -55
  497. package/dist/chunk-fe5ev6mr.js.map +0 -11
  498. package/dist/chunk-h9kxd41f.js.map +0 -11
  499. package/dist/chunk-hceck7dq.js +0 -137
  500. package/dist/chunk-hceck7dq.js.map +0 -10
  501. package/dist/chunk-n4spznws.js.map +0 -11
  502. package/dist/chunk-nva1xkjz.js.map +0 -46
  503. package/dist/chunk-t0jjkep3.js.map +0 -10
  504. package/dist/chunk-t8t39h7v.js.map +0 -10
  505. /package/dist/{chunk-zqysyfjt.js.map → chunk-08m3b6w8.js.map} +0 -0
  506. /package/dist/{chunk-xkthy56g.js.map → chunk-1kamz6j0.js.map} +0 -0
  507. /package/dist/{chunk-md8k0r54.js.map → chunk-3fqt22c4.js.map} +0 -0
  508. /package/dist/{chunk-z3zp0bj1.js.map → chunk-407j3msh.js.map} +0 -0
  509. /package/dist/{chunk-rhrbz7d4.js.map → chunk-4a849fr1.js.map} +0 -0
  510. /package/dist/{chunk-62c7t4jc.js.map → chunk-4nxeacx7.js.map} +0 -0
  511. /package/dist/{chunk-cy0n5dms.js.map → chunk-5jcdmjam.js.map} +0 -0
  512. /package/dist/{chunk-819wnjz8.js.map → chunk-64sr682n.js.map} +0 -0
  513. /package/dist/{chunk-x2yw73hy.js.map → chunk-7ds9620f.js.map} +0 -0
  514. /package/dist/{chunk-72q2y8hn.js.map → chunk-8tsf6dmc.js.map} +0 -0
  515. /package/dist/{chunk-nkbfrt0c.js.map → chunk-9aehf39w.js.map} +0 -0
  516. /package/dist/{chunk-ezake7g1.js.map → chunk-agsvg9ar.js.map} +0 -0
  517. /package/dist/{chunk-rnshztfq.js.map → chunk-d63tybny.js.map} +0 -0
  518. /package/dist/{chunk-vybf6pkp.js.map → chunk-dbc80ad7.js.map} +0 -0
  519. /package/dist/{chunk-4gz41why.js.map → chunk-dqn23610.js.map} +0 -0
  520. /package/dist/{chunk-tg5mee00.js.map → chunk-ha58tjtt.js.map} +0 -0
  521. /package/dist/{chunk-f6erf2vv.js.map → chunk-hdz94br2.js.map} +0 -0
  522. /package/dist/{chunk-dsrkgtnh.js.map → chunk-jq43kdvk.js.map} +0 -0
  523. /package/dist/{chunk-wtmzkcht.js.map → chunk-k34z5rvh.js.map} +0 -0
  524. /package/dist/{chunk-htq0qh7z.js.map → chunk-ka3a2ft3.js.map} +0 -0
  525. /package/dist/{chunk-znagycq7.js.map → chunk-kt81c11h.js.map} +0 -0
  526. /package/dist/{chunk-f2rt4vkh.js.map → chunk-n2w475r0.js.map} +0 -0
  527. /package/dist/{chunk-bhxaq2nn.js.map → chunk-qw9gvjv5.js.map} +0 -0
  528. /package/dist/{chunk-8gv5z0zm.js.map → chunk-rp1mvzb4.js.map} +0 -0
  529. /package/dist/{chunk-ghteq96b.js.map → chunk-s5y30bc9.js.map} +0 -0
  530. /package/dist/{chunk-a31h57d5.js.map → chunk-tn7xcs2n.js.map} +0 -0
  531. /package/dist/{chunk-e42bc6m3.js.map → chunk-vjjv9mrb.js.map} +0 -0
  532. /package/dist/{chunk-8b55ygje.js.map → chunk-w3e09qqk.js.map} +0 -0
  533. /package/dist/{chunk-ckxfnx7f.js.map → chunk-wjgm6jjt.js.map} +0 -0
  534. /package/dist/{chunk-3j7573mj.js.map → chunk-x0qhkqje.js.map} +0 -0
  535. /package/dist/{chunk-dysw7nsm.js.map → chunk-xdpwpkha.js.map} +0 -0
@@ -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 {
@@ -1,8 +1,11 @@
1
1
  import { isActionDefinition } from "../actions"
2
- import { isAgentDefinition } from "../agents"
2
+ import type { AgentToolCatalog } from "../agents"
3
+ import type { ModelCatalog } from "../models"
4
+ import { isModelReasoning } from "../models/language-model"
3
5
  import type { SchemaOrRef, ValueType } from "../ontology"
4
6
  import { validateSchemaOrRefValue } from "../ontology"
5
7
  import type { ScheduleDefinition } from "../schedules"
8
+ import type { SecurityDefinitionCatalog } from "../security"
6
9
  import { WorkflowDefinitionError, WorkflowValidationError } from "./errors"
7
10
  import type {
8
11
  AgentStepDefinition,
@@ -45,7 +48,11 @@ export function isAgentStepDefinition(value: unknown): value is AgentStepDefinit
45
48
  isRecord(value) &&
46
49
  value.kind === "agentStep" &&
47
50
  typeof value.id === "string" &&
48
- isAgentDefinition(value.agent) &&
51
+ (value.model === undefined || isLanguageModel(value.model)) &&
52
+ (value.reasoning === undefined || isModelReasoning(value.reasoning)) &&
53
+ typeof value.instructions === "string" &&
54
+ isStringArray(value.groupIds) &&
55
+ isStringArray(value.toolNames) &&
49
56
  isRecord(value.input) &&
50
57
  isRecord(value.output) &&
51
58
  typeof value.prompt === "function"
@@ -111,7 +118,8 @@ export function validateWorkflowsAtStartup(options: {
111
118
  workflows: readonly WorkflowDefinition[]
112
119
  registeredSchedules: ReadonlyMap<string, ScheduleDefinition>
113
120
  registeredActionIds: ReadonlySet<string>
114
- registeredAgentIds: ReadonlySet<string>
121
+ models?: ModelCatalog
122
+ tools: AgentToolCatalog
115
123
  }): readonly WorkflowDefinition[] {
116
124
  for (const workflow of options.workflows) {
117
125
  validateWorkflowDefinition(workflow)
@@ -131,10 +139,8 @@ export function validateWorkflowsAtStartup(options: {
131
139
  `Workflow "${workflow.id}" references unknown action "${node.action.id}". Add it to 'actions' in createSixb() or export it from 'actions/'.`
132
140
  )
133
141
  }
134
- if (node.type === "agent" && !options.registeredAgentIds.has(node.agentStep.agent.id)) {
135
- throw new WorkflowDefinitionError(
136
- `Workflow "${workflow.id}" references unknown agent "${node.agentStep.agent.id}". Add it to 'agents' in createSixb() or export it from 'agents/'.`
137
- )
142
+ if (node.type === "agent") {
143
+ validateWorkflowAgentStepRuntimeReferences(workflow.id, node.agentStep, options)
138
144
  }
139
145
  }
140
146
  }
@@ -142,6 +148,52 @@ export function validateWorkflowsAtStartup(options: {
142
148
  return options.workflows
143
149
  }
144
150
 
151
+ /** Validate workflow task memberships once the security catalog has been composed. */
152
+ export function validateWorkflowAgentStepGroupReferences(
153
+ workflows: readonly WorkflowDefinition[],
154
+ security: SecurityDefinitionCatalog
155
+ ): void {
156
+ for (const workflow of workflows) {
157
+ for (const node of workflow.nodes) {
158
+ if (node.type !== "agent") continue
159
+ for (const groupId of node.agentStep.groupIds) {
160
+ if (!security.getGroupById(groupId)) {
161
+ throw new WorkflowDefinitionError(
162
+ `Workflow "${workflow.id}" agent step "${node.id}" references unknown group "${groupId}". Add it to 'security/groups/' or pass it to createSixb({ groups }).`
163
+ )
164
+ }
165
+ }
166
+ }
167
+ }
168
+ }
169
+
170
+ function validateWorkflowAgentStepRuntimeReferences(
171
+ workflowId: string,
172
+ step: AgentStepDefinition,
173
+ options: { readonly models?: ModelCatalog; readonly tools: AgentToolCatalog }
174
+ ): void {
175
+ if (step.model === undefined && options.models === undefined) {
176
+ throw new WorkflowDefinitionError(
177
+ `Workflow "${workflowId}" agent step "${step.id}" needs a model. Configure 'models.language' or pass 'model' to defineAgentStep().`
178
+ )
179
+ }
180
+ if (step.model !== undefined && options.models !== undefined) {
181
+ const ref = { provider: step.model.providerId, modelId: step.model.modelId }
182
+ if (options.models.language.getByRef(ref) === null) {
183
+ throw new WorkflowDefinitionError(
184
+ `Workflow "${workflowId}" agent step "${step.id}" uses unknown language model "${ref.provider}/${ref.modelId}". Add it to 'models.language' in createSixb().`
185
+ )
186
+ }
187
+ }
188
+ for (const toolName of step.toolNames) {
189
+ if (options.tools.getByName(toolName) === null) {
190
+ throw new WorkflowDefinitionError(
191
+ `Workflow "${workflowId}" agent step "${step.id}" uses unknown project tool "${toolName}". Add it to 'tools' in createSixb().`
192
+ )
193
+ }
194
+ }
195
+ }
196
+
145
197
  export function validateWorkflowInput(params: {
146
198
  readonly workflow: WorkflowDefinition
147
199
  readonly value: unknown
@@ -326,6 +378,13 @@ function validateAgentNodeDefinition(workflowId: string, node: WorkflowAgentNode
326
378
  `Workflow "${workflowId}" agent node id "${node.id}" does not match agent step definition id "${node.agentStep.id}".`
327
379
  )
328
380
  }
381
+ if (!node.agentStep.instructions.trim()) {
382
+ throw new WorkflowDefinitionError(
383
+ `Workflow "${workflowId}" agent step "${node.id}" instructions must not be empty.`
384
+ )
385
+ }
386
+ assertUniqueNonEmptyAgentStepValues(workflowId, node.id, "group", node.agentStep.groupIds)
387
+ assertUniqueNonEmptyAgentStepValues(workflowId, node.id, "tool", node.agentStep.toolNames)
329
388
  if (node.mapper !== undefined && typeof node.mapper !== "function") {
330
389
  throw new WorkflowDefinitionError(
331
390
  `Workflow "${workflowId}" agent node "${node.id}" mapper must be a function.`
@@ -333,6 +392,40 @@ function validateAgentNodeDefinition(workflowId: string, node: WorkflowAgentNode
333
392
  }
334
393
  }
335
394
 
395
+ function assertUniqueNonEmptyAgentStepValues(
396
+ workflowId: string,
397
+ stepId: string,
398
+ kind: "group" | "tool",
399
+ values: readonly string[]
400
+ ): void {
401
+ const seen = new Set<string>()
402
+ for (const value of values) {
403
+ if (!value.trim()) {
404
+ throw new WorkflowDefinitionError(
405
+ `Workflow "${workflowId}" agent step "${stepId}" has an empty ${kind} id.`
406
+ )
407
+ }
408
+ if (seen.has(value)) {
409
+ throw new WorkflowDefinitionError(
410
+ `Workflow "${workflowId}" agent step "${stepId}" has duplicate ${kind} '${value}'.`
411
+ )
412
+ }
413
+ seen.add(value)
414
+ }
415
+ }
416
+
417
+ function isLanguageModel(value: unknown): boolean {
418
+ return (typeof value === "object" || typeof value === "function") && value !== null
419
+ }
420
+
421
+ function isStringArray(value: unknown): value is readonly string[] {
422
+ if (!Array.isArray(value)) return false
423
+ for (let index = 0; index < value.length; index += 1) {
424
+ if (!Object.hasOwn(value, index) || typeof value[index] !== "string") return false
425
+ }
426
+ return true
427
+ }
428
+
336
429
  export function validateWorkflowAgentStepInput(params: {
337
430
  readonly workflowId: string
338
431
  readonly agentStep: AgentStepDefinition