@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
@@ -0,0 +1,101 @@
1
+ /** Decimal USD per million tokens. Strings keep provider prices exact. */
2
+ export type ModelUnitPrice = string
3
+
4
+ export interface ModelPricingTier {
5
+ readonly minTokens: number
6
+ readonly maxTokens?: number
7
+ readonly price: ModelUnitPrice
8
+ }
9
+
10
+ export type ModelTokenPrice =
11
+ | ModelUnitPrice
12
+ | { readonly default: ModelUnitPrice; readonly tiers: readonly ModelPricingTier[] }
13
+
14
+ export interface LanguageModelRateCard {
15
+ readonly currency: "USD"
16
+ readonly unit: "million-tokens"
17
+ readonly input: ModelTokenPrice
18
+ readonly output: ModelTokenPrice
19
+ readonly cacheReadInput?: ModelTokenPrice
20
+ readonly cacheWriteInput?: ModelTokenPrice
21
+ readonly cacheWriteInput5m?: ModelTokenPrice
22
+ readonly cacheWriteInput1h?: ModelTokenPrice
23
+ }
24
+
25
+ /** Validate and snapshot provider-owned pricing independently of operational metadata. */
26
+ export function defineModelRateCard(rateCard: LanguageModelRateCard): LanguageModelRateCard {
27
+ assertRecord(rateCard, "rate card")
28
+ if (rateCard.currency !== "USD" || rateCard.unit !== "million-tokens") {
29
+ throw new TypeError("[Sixb] Model rate cards must use USD per million tokens.")
30
+ }
31
+ return Object.freeze({
32
+ currency: "USD",
33
+ unit: "million-tokens",
34
+ input: tokenPrice(rateCard.input),
35
+ output: tokenPrice(rateCard.output),
36
+ ...(rateCard.cacheReadInput === undefined
37
+ ? {}
38
+ : { cacheReadInput: tokenPrice(rateCard.cacheReadInput) }),
39
+ ...(rateCard.cacheWriteInput === undefined
40
+ ? {}
41
+ : { cacheWriteInput: tokenPrice(rateCard.cacheWriteInput) }),
42
+ ...(rateCard.cacheWriteInput5m === undefined
43
+ ? {}
44
+ : { cacheWriteInput5m: tokenPrice(rateCard.cacheWriteInput5m) }),
45
+ ...(rateCard.cacheWriteInput1h === undefined
46
+ ? {}
47
+ : { cacheWriteInput1h: tokenPrice(rateCard.cacheWriteInput1h) }),
48
+ })
49
+ }
50
+
51
+ function tokenPrice(value: ModelTokenPrice): ModelTokenPrice {
52
+ if (typeof value === "string") return price(value)
53
+ assertRecord(value, "token price")
54
+ if (!Array.isArray(value.tiers)) throw new TypeError("[Sixb] Model price tiers must be an array.")
55
+ let previousMax = 0
56
+ return Object.freeze({
57
+ default: price(value.default),
58
+ tiers: Object.freeze(
59
+ value.tiers.map((tier, index) => {
60
+ assertRecord(tier, "price tier")
61
+ if (
62
+ typeof tier.minTokens !== "number" ||
63
+ !Number.isSafeInteger(tier.minTokens) ||
64
+ tier.minTokens < 0
65
+ ) {
66
+ throw new TypeError("[Sixb] Model price tier has an invalid minimum.")
67
+ }
68
+ if (index > 0 && tier.minTokens < previousMax) {
69
+ throw new TypeError("[Sixb] Model price tiers must be ordered and nonoverlapping.")
70
+ }
71
+ if (
72
+ tier.maxTokens !== undefined &&
73
+ (typeof tier.maxTokens !== "number" ||
74
+ !Number.isSafeInteger(tier.maxTokens) ||
75
+ tier.maxTokens <= tier.minTokens)
76
+ ) {
77
+ throw new TypeError("[Sixb] Model price tier has an invalid maximum.")
78
+ }
79
+ previousMax = tier.maxTokens ?? Number.POSITIVE_INFINITY
80
+ return Object.freeze({
81
+ minTokens: tier.minTokens,
82
+ ...(tier.maxTokens === undefined ? {} : { maxTokens: tier.maxTokens }),
83
+ price: price(tier.price),
84
+ })
85
+ })
86
+ ),
87
+ })
88
+ }
89
+
90
+ function price(value: unknown): string {
91
+ if (typeof value !== "string" || !/^(?:0|[1-9]\d*)(?:\.\d+)?$/.test(value)) {
92
+ throw new TypeError("[Sixb] Model price must be a nonnegative decimal string.")
93
+ }
94
+ return value
95
+ }
96
+
97
+ function assertRecord(value: unknown, field: string): asserts value is Record<string, unknown> {
98
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
99
+ throw new TypeError(`[Sixb] Model ${field} must be an object.`)
100
+ }
101
+ }
@@ -0,0 +1,29 @@
1
+ import type { JsonObject, JsonValue } from "../json"
2
+ import type { ModelToolOutput } from "./messages"
3
+
4
+ export interface ModelToolExecutionContext {
5
+ readonly signal: AbortSignal
6
+ readonly callId: string
7
+ readonly toolCallId: string
8
+ }
9
+
10
+ export interface ModelTool<TInput = unknown, TOutput extends JsonValue = JsonValue> {
11
+ readonly name: string
12
+ readonly description: string
13
+ readonly inputSchema: JsonObject
14
+ parseInput(value: unknown): TInput
15
+ execute(input: TInput, context: ModelToolExecutionContext): Promise<TOutput>
16
+ /** Project a durable output into provider-safe model content without changing the stored result. */
17
+ toModelOutput?(
18
+ output: TOutput,
19
+ context: ModelToolExecutionContext
20
+ ): ModelToolOutput | Promise<ModelToolOutput>
21
+ errorText(error: unknown): string
22
+ }
23
+
24
+ export interface ModelOutput<TOutput> {
25
+ readonly name: string
26
+ readonly description?: string
27
+ readonly schema: JsonObject
28
+ validate(value: unknown): TOutput
29
+ }
@@ -16,6 +16,7 @@ import type {
16
16
  QueueJob,
17
17
  QueueJobFailure,
18
18
  Queues,
19
+ SubagentQueueJob,
19
20
  SyncQueueJobFailureCode,
20
21
  SyncRunRequestedQueueJob,
21
22
  WorkflowQueueJob,
@@ -382,6 +383,10 @@ export class InMemoryQueues implements Queues {
382
383
  this.store,
383
384
  "agent.runs"
384
385
  )
386
+ readonly agentChildren = new InMemoryQueue<SubagentQueueJob, AgentQueueJobFailureCode>(
387
+ this.store,
388
+ "agent.children"
389
+ )
385
390
 
386
391
  /** Nothing to reach: the store is a field of this object. */
387
392
  health(): Promise<void> {
@@ -1,3 +1,12 @@
1
+ export type {
2
+ ModelCallCost,
3
+ ModelCostComponent,
4
+ ModelCostEstimate,
5
+ ModelCostMeter,
6
+ ModelMoney,
7
+ ModelRoute,
8
+ } from "../models"
9
+ export type { ModelProviderIds } from "../models/events"
1
10
  export type { ProviderScope } from "../provider-scope"
2
11
  export { QueueError } from "./errors"
3
12
  export { InMemoryQueues } from "./in-memory"
@@ -22,6 +31,8 @@ export type {
22
31
  QueueJobEnvelope,
23
32
  QueueJobFailure,
24
33
  Queues,
34
+ SubagentQueueJob,
35
+ SubagentRunRequestedQueueJob,
25
36
  SyncQueueJobFailureCode,
26
37
  SyncRunRequestedQueueJob,
27
38
  WorkflowQueueJob,
@@ -1,10 +1,10 @@
1
1
  import type { SixbErrorCode, SixbFailure } from "../errors/types"
2
2
  import type { JsonValue } from "../json"
3
+ import type { ModelCallCost, ModelCostEstimate, ModelRoute } from "../models"
3
4
  import type { ProjectionRunFailureCode } from "../projections/types"
4
5
  import type { ProviderScope } from "../provider-scope"
5
6
  import type { ActionRunFailureCode } from "../storage/action-runs/types"
6
7
  import type { AgentRunFailureCode } from "../storage/agents/types"
7
- import type { AiPricingContext } from "../storage/ai-cost/types"
8
8
  import type { RecordAiModelCallInput } from "../storage/ai-usage"
9
9
  import type { PipelineRunFailureCode } from "../storage/pipeline-runs/types"
10
10
  import type { SyncRunFailureCode } from "../storage/sync-runs/types"
@@ -191,6 +191,17 @@ export interface AgentRunRequestedQueueJob
191
191
  }
192
192
  > {}
193
193
 
194
+ /** A headless child run uses a reserved lane so waiting parents cannot consume its capacity. */
195
+ export interface SubagentRunRequestedQueueJob
196
+ extends QueueJob<
197
+ "agent.subagent-run.requested",
198
+ {
199
+ readonly runId: string
200
+ }
201
+ > {}
202
+
203
+ export type SubagentQueueJob = SubagentRunRequestedQueueJob
204
+
194
205
  export interface AgentWorkflowNodeRequestedQueueJob
195
206
  extends QueueJob<
196
207
  "agent.workflow-node.requested",
@@ -211,8 +222,12 @@ export type AgentAiUsageRecordPayload = Omit<
211
222
  }
212
223
 
213
224
  export interface AgentAiUsageAccountingPayload {
214
- readonly pricingContext: AiPricingContext
225
+ readonly estimate?: ModelCostEstimate
226
+ readonly cost: ModelCallCost
227
+ readonly route?: ModelRoute
215
228
  readonly ratedAt: string
229
+ /** Absent on pre-limit jobs; those model calls did not create a reservation. */
230
+ readonly reconcileLimitReservation?: boolean
216
231
  }
217
232
 
218
233
  export interface AgentAiUsageRecordRequestedQueueJob
@@ -220,7 +235,7 @@ export interface AgentAiUsageRecordRequestedQueueJob
220
235
  "agent.ai-usage.record.requested",
221
236
  {
222
237
  readonly record: AgentAiUsageRecordPayload
223
- /** Absent on Phase 1 jobs; recovery then uses an empty pricing context. */
238
+ /** Absent only on legacy jobs that predate atomic valuation recovery. */
224
239
  readonly accounting?: AgentAiUsageAccountingPayload
225
240
  }
226
241
  > {}
@@ -237,6 +252,8 @@ export interface Queues {
237
252
  readonly workflows: Queue<WorkflowQueueJob, WorkflowQueueJobFailureCode>
238
253
  readonly actions: Queue<ActionRunRequestedQueueJob, ActionQueueJobFailureCode>
239
254
  readonly agents: Queue<AgentQueueJob, AgentQueueJobFailureCode>
255
+ /** Internal capacity reserved for headless child runs. */
256
+ readonly agentChildren: Queue<SubagentQueueJob, AgentQueueJobFailureCode>
240
257
 
241
258
  /**
242
259
  * Whether these queues can be shared across processes.
@@ -1,6 +1,7 @@
1
1
  import { resolve } from "node:path"
2
2
  import type { ActionDefinition } from "../actions"
3
- import type { AgentDefinition } from "../agents"
3
+ import type { AgentToolDefinition } from "../agents"
4
+ import { assertNoAgentDefinitions } from "../agents/retired-config"
4
5
  import type { SixbAuthConfig } from "../auth"
5
6
  import type { BlobStorage } from "../blob-storage"
6
7
  import { discoverOntologySources, discoverProjectDefinitions } from "../bootstrap"
@@ -44,10 +45,10 @@ export interface CreateSixbOptions {
44
45
  ontologyMaintenance?: OntologyMaintenanceOptions
45
46
  ontologies?: readonly OntologySource[]
46
47
  actions?: readonly ActionDefinition[]
47
- /** Agent definitions to register in addition to auto-discovered `agents/` exports. */
48
- agents?: readonly AgentDefinition[]
49
48
  /** Models this project allows Sixb to use. The first of each kind is the default. */
50
49
  models?: ModelCatalogInput
50
+ /** Project tools available to Agent runtimes. */
51
+ tools?: readonly AgentToolDefinition[]
51
52
  datasets?: readonly DatasetDefinition[]
52
53
  /** Connector definitions to register in addition to auto-discovered `connectors/` exports. */
53
54
  connectors?: readonly ConnectorDefinition[]
@@ -71,12 +72,13 @@ export interface CreateSixbOptions {
71
72
  *
72
73
  * The host auto-discovers exported definitions from `ontology/`, `actions/`, `datasets/`,
73
74
  * `connectors/`, `syncs/`, `schedules/`, `pipelines/`, `projections/`,
74
- * `rules/`, `workflows/`, `agents/`, and `security/{groups,roles,policies}/`
75
+ * `rules/`, `workflows/`, and `security/{groups,roles,policies}/`
75
76
  * relative to `projectRoot`.
76
77
  */
77
78
  export async function createSixb(
78
79
  options: CreateSixbOptions
79
80
  ): Promise<SixbHost<readonly OntologySource[]>> {
81
+ assertNoAgentDefinitions(options)
80
82
  const projectRoot = resolve(options.projectRoot ?? process.cwd())
81
83
 
82
84
  const discoveredOntology = await discoverOntologySources(projectRoot)
@@ -120,8 +122,8 @@ export async function createSixb(
120
122
  groups: [...(options.groups ?? []), ...definitions.groups],
121
123
  roles: [...(options.roles ?? []), ...definitions.roles],
122
124
  membershipPolicies: [...(options.membershipPolicies ?? []), ...definitions.membershipPolicies],
123
- agents: [...(options.agents ?? []), ...definitions.agents],
124
125
  models: options.models,
126
+ tools: options.tools,
125
127
  auth: options.auth,
126
128
  })
127
129
  }
@@ -1,5 +1,5 @@
1
1
  import type { ActionDefinitionCatalog } from "../actions"
2
- import type { AgentDefinition } from "../agents"
2
+ import type { AgentToolCatalog } from "../agents"
3
3
  import type { ConnectorDefinition } from "../connectors"
4
4
  import type { DatasetDefinition } from "../datasets"
5
5
  import type { ModelCatalog } from "../models"
@@ -22,7 +22,7 @@ export interface DefinitionCatalog<TDefinition> {
22
22
  export interface SixbDefinitions {
23
23
  readonly ontology: OntologyDefinitionCatalog
24
24
  readonly actions: ActionDefinitionCatalog
25
- readonly agents: DefinitionCatalog<AgentDefinition>
25
+ readonly tools: AgentToolCatalog
26
26
  readonly connectors: DefinitionCatalog<ConnectorDefinition>
27
27
  readonly datasets: DefinitionCatalog<DatasetDefinition>
28
28
  /** Absent until a project configures `models` in createSixb(). */
@@ -7,7 +7,7 @@
7
7
 
8
8
  import { resolve } from "node:path"
9
9
  import type { ActionDefinition } from "../actions/types"
10
- import type { AgentDefinition } from "../agents"
10
+ import type { AgentToolDefinition } from "../agents"
11
11
  import {
12
12
  AuthRuntime,
13
13
  AuthRuntimeError,
@@ -108,8 +108,9 @@ export interface SixbHostOptions<TOntologySources extends readonly OntologySourc
108
108
  projections?: readonly ProjectionDefinition[]
109
109
  rules?: readonly RuleDefinition[]
110
110
  workflows?: readonly WorkflowDefinition[]
111
- agents?: readonly AgentDefinition[]
112
111
  models?: ModelCatalogInput
112
+ /** Project tools available to Agent runtimes. */
113
+ tools?: readonly AgentToolDefinition[]
113
114
  groups?: readonly GroupDefinition[]
114
115
  roles?: readonly RoleDefinition[]
115
116
  membershipPolicies?: readonly MembershipPolicyDefinition[]
@@ -1,11 +1,12 @@
1
1
  import { ActionRegistry } from "../actions"
2
2
  import type { ActionDefinition } from "../actions/types"
3
- import type { AgentDefinition } from "../agents"
4
- import { validateAgentGroupReferences, validateAgentToolsAtStartup } from "../agents"
3
+ import type { AgentToolDefinition } from "../agents"
4
+ import { assertNoAgentDefinitions } from "../agents/retired-config"
5
+ import { createAgentToolCatalog } from "../agents/tool-catalog"
5
6
  import type { ConnectorDefinition } from "../connectors"
6
7
  import type { DatasetDefinition } from "../datasets/types"
7
8
  import { assertDatasetDefinition } from "../datasets/validation"
8
- import { createModelCatalog, type ModelCatalog, type ModelCatalogInput, modelRef } from "../models"
9
+ import { createModelCatalog, type ModelCatalogInput } from "../models"
9
10
  import { OntologyRegistry } from "../ontology"
10
11
  import type { PipelineDefinition } from "../pipelines/types"
11
12
  import { ProjectionRegistry } from "../projections"
@@ -24,7 +25,7 @@ import {
24
25
  validateMergeSyncProjectionSafety,
25
26
  } from "../syncs/validation"
26
27
  import type { WorkflowDefinition } from "../workflows"
27
- import { validateWorkflowsAtStartup } from "../workflows"
28
+ import { validateWorkflowAgentStepGroupReferences, validateWorkflowsAtStartup } from "../workflows"
28
29
  import { createDefinitionCatalog, type SixbDefinitions } from "./definitions"
29
30
  import { RuntimeError } from "./errors"
30
31
  import type { OntologySource } from "./types"
@@ -40,7 +41,7 @@ interface DefinitionOptions {
40
41
  readonly projections?: readonly ProjectionDefinition[]
41
42
  readonly rules?: readonly RuleDefinition[]
42
43
  readonly workflows?: readonly WorkflowDefinition[]
43
- readonly agents?: readonly AgentDefinition[]
44
+ readonly tools?: readonly AgentToolDefinition[]
44
45
  readonly models?: ModelCatalogInput
45
46
  readonly groups?: readonly GroupDefinition[]
46
47
  readonly roles?: readonly RoleDefinition[]
@@ -56,15 +57,13 @@ interface ResolvedDefinitions extends SixbDefinitions {
56
57
 
57
58
  /** Resolve and cross-validate every registered definition before runtime services are composed. */
58
59
  export function resolveDefinitions(options: DefinitionOptions): ResolvedDefinitions {
60
+ assertNoAgentDefinitions(options)
59
61
  const ontology = new OntologyRegistry({ sources: options.ontology })
60
62
  const actionRegistry = new ActionRegistry({ actions: options.actions ?? [], ontology })
61
63
  const registeredActionIds = new Set(actionRegistry.list().map((action) => action.id))
62
64
 
63
- const agents = options.agents ?? []
64
- validateAgentToolsAtStartup(agents)
65
65
  const models = options.models === undefined ? undefined : createModelCatalog(options.models)
66
- validateAgentModelReferences(agents, models)
67
- const agentsById = indexUniqueDefinitions("agent", agents)
66
+ const tools = createAgentToolCatalog(options.tools)
68
67
  const connectorsById = indexUniqueDefinitions("connector", options.connectors ?? [])
69
68
 
70
69
  // Datasets resolve first because syncs, pipelines, projections, and security depend on them.
@@ -126,7 +125,8 @@ export function resolveDefinitions(options: DefinitionOptions): ResolvedDefiniti
126
125
  workflows: options.workflows ?? [],
127
126
  registeredSchedules: schedulesById,
128
127
  registeredActionIds,
129
- registeredAgentIds: new Set(agentsById.keys()),
128
+ ...(models === undefined ? {} : { models }),
129
+ tools,
130
130
  })
131
131
  const workflowsById = indexUniqueDefinitions("workflow", workflows)
132
132
 
@@ -140,11 +140,11 @@ export function resolveDefinitions(options: DefinitionOptions): ResolvedDefiniti
140
140
  workflowIds: new Set(workflowsById.keys()),
141
141
  syncIds: new Set(syncsById.keys()),
142
142
  pipelineIds: new Set(pipelinesById.keys()),
143
- agentIds: new Set(agentsById.keys()),
143
+ agentAvailable: models !== undefined,
144
144
  connectorIds: new Set(connectorsById.keys()),
145
145
  getSubTypes: (objectTypeId) => ontology.listSubTypes(objectTypeId),
146
146
  })
147
- validateAgentGroupReferences(agents, security)
147
+ validateWorkflowAgentStepGroupReferences(workflows, security)
148
148
 
149
149
  const projectionRegistry = new ProjectionRegistry({
150
150
  projections: options.projections ?? [],
@@ -159,7 +159,7 @@ export function resolveDefinitions(options: DefinitionOptions): ResolvedDefiniti
159
159
  return Object.freeze({
160
160
  ontology,
161
161
  actions: actionRegistry,
162
- agents: createDefinitionCatalog(agentsById),
162
+ tools,
163
163
  connectors: createDefinitionCatalog(connectorsById),
164
164
  datasets: createDefinitionCatalog(datasetsById),
165
165
  ...(models === undefined ? {} : { models }),
@@ -241,26 +241,3 @@ function validateScheduleReferences(
241
241
  }
242
242
  }
243
243
  }
244
-
245
- /**
246
- * Keep every agent on a model the project actually allows.
247
- *
248
- * Only enforced once a project configures `models`; without a catalog an agent's model is its own
249
- * declaration, which is the pre-catalog behavior.
250
- */
251
- function validateAgentModelReferences(
252
- agents: readonly AgentDefinition[],
253
- models: ModelCatalog | undefined
254
- ): void {
255
- if (models === undefined) {
256
- return
257
- }
258
- for (const agent of agents) {
259
- const ref = modelRef(agent.model)
260
- if (models.language.getById(ref) === null) {
261
- throw new RuntimeError(
262
- `[Sixb] Agent '${agent.id}' uses unknown language model '${ref}'. Add it to 'models.language' in createSixb().`
263
- )
264
- }
265
- }
266
- }
@@ -1,5 +1,6 @@
1
1
  import { type ActionsRuntime, createActionsRuntime } from "../actions/execution"
2
- import { type AgentsRuntime, createAgentsRuntime } from "../agents/execution"
2
+ import { type AgentRuntime, createAgentRuntime } from "../agents/execution"
3
+ import { type AiUsageRuntime, createAiUsageRuntime } from "../ai-usage"
3
4
  import { type BlobsRuntime, createBlobsRuntime } from "../blob-storage/execution"
4
5
  import type { BlobStorage } from "../blob-storage/types"
5
6
  import { registerConnectorConnectionsRuntime } from "../connectors/connections/capability"
@@ -36,7 +37,8 @@ export interface Sixb<
36
37
  readonly pipelines: PipelinesRuntime
37
38
  readonly projections: ProjectionsRuntime
38
39
  readonly rules: RulesRuntime
39
- readonly agents: AgentsRuntime
40
+ readonly agent: AgentRuntime
41
+ readonly aiUsage: AiUsageRuntime
40
42
  readonly events: EventsRuntime
41
43
  readonly logs: LogsRuntime
42
44
  readonly schedules: SchedulesRuntime
@@ -95,12 +97,8 @@ function createExecutionFacades<TOntologySources extends readonly OntologySource
95
97
  pipelines: createPipelinesRuntime(runtime, execution, dependencies.definitions.pipelines),
96
98
  projections: createProjectionsRuntime(runtime, dependencies.definitions.projections),
97
99
  rules: createRulesRuntime(runtime, dependencies.definitions.rules),
98
- agents: createAgentsRuntime(
99
- runtime,
100
- execution,
101
- dependencies.definitions.agents,
102
- dependencies.definitions.security
103
- ),
100
+ agent: createAgentRuntime(runtime, execution, dependencies.definitions.models),
101
+ aiUsage: createAiUsageRuntime(runtime, dependencies.definitions.security),
104
102
  events: createEventsRuntime(runtime),
105
103
  logs: createLogsRuntime(runtime, dependencies.logging),
106
104
  schedules: createSchedulesRuntime(dependencies.definitions.schedules),
@@ -12,7 +12,6 @@
12
12
  */
13
13
 
14
14
  import type { ActionDefinition } from "../actions/types"
15
- import type { AgentDefinition } from "../agents/types"
16
15
  import type { ConnectorDefinition } from "../connectors"
17
16
  import type { DatasetDefinition } from "../datasets"
18
17
  import type { ObjectType } from "../ontology"
@@ -30,7 +29,6 @@ export const BREADTH_TARGETS = [
30
29
  "workflow",
31
30
  "sync",
32
31
  "pipeline",
33
- "agent",
34
32
  "application",
35
33
  "connector",
36
34
  ] as const
@@ -44,7 +42,6 @@ interface BreadthTargetInput {
44
42
  workflow: WorkflowDefinition
45
43
  sync: SyncDefinition
46
44
  pipeline: PipelineDefinition
47
- agent: AgentDefinition
48
45
  application: ApplicationDefinition
49
46
  connector: ConnectorDefinition
50
47
  }
@@ -106,7 +103,6 @@ export const every = {
106
103
  workflow: (): BreadthSelector<"workflow"> => all("workflow"),
107
104
  sync: (): BreadthSelector<"sync"> => all("sync"),
108
105
  pipeline: (): BreadthSelector<"pipeline"> => all("pipeline"),
109
- agent: (): BreadthSelector<"agent"> => all("agent"),
110
106
  application: (): BreadthSelector<"application"> => all("application"),
111
107
  connector: (): BreadthSelector<"connector"> => all("connector"),
112
108
  }
@@ -8,7 +8,7 @@
8
8
  */
9
9
 
10
10
  import type { ActionDefinition } from "../actions/types"
11
- import type { AgentDefinition } from "../agents/types"
11
+ import type { AgentReference, AgentUsageReference } from "../agents/types"
12
12
  import type { ConnectorDefinition } from "../connectors"
13
13
  import type { DatasetDefinition } from "../datasets"
14
14
  import type { ObjectType } from "../ontology"
@@ -24,6 +24,7 @@ import {
24
24
  } from "./every"
25
25
  import type {
26
26
  AccessGrant,
27
+ AgentRunGrant,
27
28
  AppendGrant,
28
29
  ApplicationDefinition,
29
30
  ApplyGrant,
@@ -41,7 +42,7 @@ type GrantInput<TDefinition, TTarget extends BreadthTarget> =
41
42
  | BreadthSelector<TTarget>
42
43
 
43
44
  const VIEW_TARGETS = ["object", "dataset"] as const
44
- const RUN_TARGETS = ["workflow", "sync", "pipeline", "agent"] as const
45
+ const RUN_TARGETS = ["workflow", "sync", "pipeline"] as const
45
46
 
46
47
  /**
47
48
  * Seven of the nine targets carry a `kind` discriminant naming themselves. The other two — an
@@ -52,7 +53,6 @@ const TARGET_BY_DEFINITION_KIND: Readonly<Partial<Record<string, BreadthTarget>>
52
53
  dataset: "dataset",
53
54
  sync: "sync",
54
55
  pipeline: "pipeline",
55
- agent: "agent",
56
56
  workflow: "workflow",
57
57
  application: "application",
58
58
  connector: "connector",
@@ -187,18 +187,49 @@ function apply(input: GrantInput<ActionDefinition, "action">): ApplyGrant {
187
187
  function run(input: GrantInput<WorkflowDefinition, "workflow">): RunGrant<"workflow">
188
188
  function run(input: GrantInput<SyncDefinition, "sync">): RunGrant<"sync">
189
189
  function run(input: GrantInput<PipelineDefinition, "pipeline">): RunGrant<"pipeline">
190
- function run(input: GrantInput<AgentDefinition, "agent">): RunGrant<"agent">
190
+ function run(input: AgentReference): AgentRunGrant
191
191
  function run(
192
- input: GrantInput<
193
- WorkflowDefinition | SyncDefinition | PipelineDefinition | AgentDefinition,
194
- "workflow" | "sync" | "pipeline" | "agent"
195
- >
196
- ): RunGrant {
192
+ input:
193
+ | AgentReference
194
+ | GrantInput<
195
+ WorkflowDefinition | SyncDefinition | PipelineDefinition,
196
+ "workflow" | "sync" | "pipeline"
197
+ >
198
+ ): RunGrant | AgentRunGrant {
199
+ if (isAgentReference(input)) {
200
+ return { kind: "grant", capability: "run", target: "agent" }
201
+ }
197
202
  const { target, selection } = resolveGrant(input, "can.run", RUN_TARGETS)
198
203
  return { kind: "grant", capability: "run", target, selection }
199
204
  }
200
205
 
201
- function observe(target: "logs"): ObserveGrant {
206
+ function isAgentReference(input: unknown): input is AgentReference {
207
+ return (
208
+ typeof input === "object" &&
209
+ input !== null &&
210
+ !Array.isArray(input) &&
211
+ !isBreadthSelector(input) &&
212
+ "kind" in input &&
213
+ input.kind === "agent"
214
+ )
215
+ }
216
+
217
+ function isAgentUsageReference(input: unknown): input is AgentUsageReference {
218
+ return (
219
+ typeof input === "object" &&
220
+ input !== null &&
221
+ !Array.isArray(input) &&
222
+ !isBreadthSelector(input) &&
223
+ "kind" in input &&
224
+ input.kind === "aiUsage"
225
+ )
226
+ }
227
+
228
+ function observe(input: "logs" | AgentUsageReference): ObserveGrant {
229
+ if (input !== "logs" && !isAgentUsageReference(input)) {
230
+ throw new SecurityValidationError('[Sixb] can.observe accepts "logs" or agent.usage.')
231
+ }
232
+ const target = input === "logs" ? "logs" : "aiUsage"
202
233
  return {
203
234
  kind: "grant",
204
235
  capability: "observe",
@@ -207,10 +238,23 @@ function observe(target: "logs"): ObserveGrant {
207
238
  }
208
239
  }
209
240
 
210
- function manage(input: GrantInput<ConnectorDefinition, "connector">): ManageGrant {
241
+ function manage(input: GrantInput<ConnectorDefinition, "connector">): ManageGrant<"connector">
242
+ function manage(input: AgentUsageReference): ManageGrant<"aiUsage">
243
+ function manage(
244
+ input: GrantInput<ConnectorDefinition, "connector"> | AgentUsageReference
245
+ ): ManageGrant {
246
+ if (isAgentUsageReference(input)) {
247
+ return {
248
+ kind: "grant",
249
+ capability: "manage",
250
+ target: "aiUsage",
251
+ selection: { all: false, ids: ["aiUsage"] },
252
+ }
253
+ }
211
254
  return {
212
255
  kind: "grant",
213
256
  capability: "manage",
257
+ target: "connector",
214
258
  selection: resolveGrant(input, "can.manage", ["connector"]).selection,
215
259
  }
216
260
  }
@@ -20,6 +20,7 @@ export type { SecurityDefinitionCatalog, SecurityRegistryOptions } from "./regis
20
20
  export { SecurityRegistry } from "./registry"
21
21
  export type {
22
22
  AccessGrant,
23
+ AgentRunGrant,
23
24
  AppendGrant,
24
25
  ApplicationDefinition,
25
26
  ApplyGrant,
@@ -29,6 +30,7 @@ export type {
29
30
  GroupDefinition,
30
31
  GroupReference,
31
32
  ManageGrant,
33
+ ManageGrantTarget,
32
34
  MembershipOperation,
33
35
  MembershipPolicyDefinition,
34
36
  ObserveGrant,
@@ -25,7 +25,7 @@ export interface SecurityRegistryOptions {
25
25
  readonly workflowIds?: ReadonlySet<string>
26
26
  readonly syncIds?: ReadonlySet<string>
27
27
  readonly pipelineIds?: ReadonlySet<string>
28
- readonly agentIds?: ReadonlySet<string>
28
+ readonly agentAvailable?: boolean
29
29
  readonly connectorIds?: ReadonlySet<string>
30
30
  readonly getSubTypes?: (objectTypeId: string) => readonly string[]
31
31
  }
@@ -48,9 +48,10 @@ export class SecurityRegistry implements SecurityDefinitionCatalog {
48
48
  workflowIds: input.workflowIds,
49
49
  syncIds: input.syncIds,
50
50
  pipelineIds: input.pipelineIds,
51
- agentIds: input.agentIds,
51
+ agentAvailable: input.agentAvailable,
52
52
  connectorIds: input.connectorIds,
53
- observableIds: new Set(["logs"]),
53
+ observableIds: new Set(["logs", "aiUsage"]),
54
+ manageableIds: new Set(["aiUsage"]),
54
55
  })
55
56
 
56
57
  const universe = {
@@ -61,9 +62,9 @@ export class SecurityRegistry implements SecurityDefinitionCatalog {
61
62
  workflowIds: input.workflowIds ?? new Set<string>(),
62
63
  syncIds: input.syncIds ?? new Set<string>(),
63
64
  pipelineIds: input.pipelineIds ?? new Set<string>(),
64
- agentIds: input.agentIds ?? new Set<string>(),
65
65
  connectorIds: input.connectorIds ?? new Set<string>(),
66
- observableIds: new Set(["logs"]),
66
+ observableIds: new Set(["logs", "aiUsage"]),
67
+ manageableIds: new Set(["aiUsage"]),
67
68
  getSubTypes: input.getSubTypes ?? (() => []),
68
69
  }
69
70