@sixb/core 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (564) hide show
  1. package/dist/actions/index.js +37 -33
  2. package/dist/actions/index.js.map +1 -1
  3. package/dist/actions/types/definitions.d.ts +8 -2
  4. package/dist/actions/types/definitions.d.ts.map +1 -1
  5. package/dist/actions/worker.js +3 -3
  6. package/dist/agents/adapters.d.ts +33 -76
  7. package/dist/agents/adapters.d.ts.map +1 -1
  8. package/dist/agents/authority.d.ts +22 -6
  9. package/dist/agents/authority.d.ts.map +1 -1
  10. package/dist/agents/builders.d.ts +3 -11
  11. package/dist/agents/builders.d.ts.map +1 -1
  12. package/dist/agents/context.js +2 -2
  13. package/dist/agents/dispatch.d.ts +9 -1
  14. package/dist/agents/dispatch.d.ts.map +1 -1
  15. package/dist/agents/errors.d.ts +2 -2
  16. package/dist/agents/errors.d.ts.map +1 -1
  17. package/dist/agents/execution.d.ts +9 -10
  18. package/dist/agents/execution.d.ts.map +1 -1
  19. package/dist/agents/ids.d.ts +4 -0
  20. package/dist/agents/ids.d.ts.map +1 -1
  21. package/dist/agents/index.d.ts +13 -9
  22. package/dist/agents/index.d.ts.map +1 -1
  23. package/dist/agents/index.js +80 -68
  24. package/dist/agents/index.js.map +1 -1
  25. package/dist/agents/message.d.ts +17 -10
  26. package/dist/agents/message.d.ts.map +1 -1
  27. package/dist/agents/model-loop.d.ts +56 -0
  28. package/dist/agents/model-loop.d.ts.map +1 -0
  29. package/dist/agents/reference.d.ts +4 -0
  30. package/dist/agents/reference.d.ts.map +1 -0
  31. package/dist/agents/request.d.ts +10 -8
  32. package/dist/agents/request.d.ts.map +1 -1
  33. package/dist/agents/retired-config.d.ts +4 -0
  34. package/dist/agents/retired-config.d.ts.map +1 -0
  35. package/dist/agents/streams.d.ts +13 -8
  36. package/dist/agents/streams.d.ts.map +1 -1
  37. package/dist/agents/streams.js +7 -5
  38. package/dist/agents/streams.js.map +1 -1
  39. package/dist/agents/tool-catalog.d.ts +9 -0
  40. package/dist/agents/tool-catalog.d.ts.map +1 -0
  41. package/dist/agents/tool-definition.d.ts +1 -0
  42. package/dist/agents/tool-definition.d.ts.map +1 -1
  43. package/dist/agents/types.d.ts +31 -68
  44. package/dist/agents/types.d.ts.map +1 -1
  45. package/dist/agents/validation.d.ts +4 -10
  46. package/dist/agents/validation.d.ts.map +1 -1
  47. package/dist/ai-usage/execution.d.ts +53 -0
  48. package/dist/ai-usage/execution.d.ts.map +1 -0
  49. package/dist/ai-usage/index.d.ts +3 -0
  50. package/dist/ai-usage/index.d.ts.map +1 -0
  51. package/dist/auth/index.d.ts +1 -1
  52. package/dist/auth/index.d.ts.map +1 -1
  53. package/dist/auth/index.js +7 -7
  54. package/dist/auth/runtime.d.ts.map +1 -1
  55. package/dist/auth/strategy.d.ts +1 -1
  56. package/dist/auth/strategy.d.ts.map +1 -1
  57. package/dist/auth/types.d.ts +13 -0
  58. package/dist/auth/types.d.ts.map +1 -1
  59. package/dist/authorization/decision.d.ts +5 -2
  60. package/dist/authorization/decision.d.ts.map +1 -1
  61. package/dist/authorization/grant-kinds.d.ts +24 -8
  62. package/dist/authorization/grant-kinds.d.ts.map +1 -1
  63. package/dist/authorization/index.d.ts +1 -1
  64. package/dist/authorization/index.d.ts.map +1 -1
  65. package/dist/authorization/index.js +8 -6
  66. package/dist/authorization/index.js.map +1 -1
  67. package/dist/authorization/resolve.d.ts +3 -3
  68. package/dist/authorization/resolve.d.ts.map +1 -1
  69. package/dist/authorization/types.d.ts +7 -5
  70. package/dist/authorization/types.d.ts.map +1 -1
  71. package/dist/blob-storage/browser.js +2 -2
  72. package/dist/blob-storage/index.js +3 -3
  73. package/dist/bootstrap/discovery.d.ts +1 -7
  74. package/dist/bootstrap/discovery.d.ts.map +1 -1
  75. package/dist/bootstrap/index.js +52 -48
  76. package/dist/bootstrap/index.js.map +1 -1
  77. package/dist/broker/index.js +2 -2
  78. package/dist/{chunk-zqysyfjt.js → chunk-08m3b6w8.js} +1 -1
  79. package/dist/{chunk-xdf9yswn.js → chunk-08twe8m6.js} +93 -8
  80. package/dist/chunk-08twe8m6.js.map +12 -0
  81. package/dist/{chunk-xkthy56g.js → chunk-1kamz6j0.js} +1 -1
  82. package/dist/{chunk-h6h91mfy.js → chunk-2b5qtban.js} +12 -12
  83. package/dist/{chunk-h6h91mfy.js.map → chunk-2b5qtban.js.map} +3 -3
  84. package/dist/{chunk-0172wgm9.js → chunk-2xns679x.js} +10 -2
  85. package/dist/{chunk-0172wgm9.js.map → chunk-2xns679x.js.map} +3 -3
  86. package/dist/{chunk-f83ka50g.js → chunk-37wk412q.js} +86 -28
  87. package/dist/{chunk-f83ka50g.js.map → chunk-37wk412q.js.map} +8 -8
  88. package/dist/{chunk-6d5xdj1q.js → chunk-3fqt22c4.js} +4 -4
  89. package/dist/{chunk-t9xghkva.js → chunk-3kv70xwp.js} +3 -2
  90. package/dist/{chunk-t9xghkva.js.map → chunk-3kv70xwp.js.map} +3 -3
  91. package/dist/{chunk-z3zp0bj1.js → chunk-407j3msh.js} +1 -1
  92. package/dist/{chunk-rhrbz7d4.js → chunk-4a849fr1.js} +1 -1
  93. package/dist/{chunk-62c7t4jc.js → chunk-4nxeacx7.js} +1 -1
  94. package/dist/{chunk-cy0n5dms.js → chunk-5jcdmjam.js} +1 -1
  95. package/dist/{chunk-819wnjz8.js → chunk-64sr682n.js} +7 -7
  96. package/dist/{chunk-v0egge8b.js → chunk-6ed5bwnd.js} +666 -81
  97. package/dist/chunk-6ed5bwnd.js.map +57 -0
  98. package/dist/{chunk-x2yw73hy.js → chunk-7ds9620f.js} +1 -1
  99. package/dist/{chunk-dm72y8wt.js → chunk-7y0f6rf1.js} +29 -16
  100. package/dist/chunk-7y0f6rf1.js.map +10 -0
  101. package/dist/{chunk-72q2y8hn.js → chunk-8tsf6dmc.js} +2 -2
  102. package/dist/{chunk-72q2y8hn.js.map → chunk-8tsf6dmc.js.map} +3 -3
  103. package/dist/{chunk-tbv03sx2.js → chunk-9aehf39w.js} +7 -7
  104. package/dist/{chunk-ezake7g1.js → chunk-agsvg9ar.js} +1 -1
  105. package/dist/{chunk-rdeagz6b.js → chunk-atmkaf60.js} +1 -1
  106. package/dist/{chunk-rdeagz6b.js.map → chunk-atmkaf60.js.map} +2 -2
  107. package/dist/chunk-c15dr03f.js +43 -0
  108. package/dist/chunk-c15dr03f.js.map +10 -0
  109. package/dist/{chunk-78c6xvyr.js → chunk-d2ndstdf.js} +8 -6
  110. package/dist/{chunk-78c6xvyr.js.map → chunk-d2ndstdf.js.map} +2 -2
  111. package/dist/{chunk-rnshztfq.js → chunk-d63tybny.js} +2 -2
  112. package/dist/{chunk-t0jjkep3.js → chunk-d8qkxt2v.js} +4 -2
  113. package/dist/chunk-d8qkxt2v.js.map +10 -0
  114. package/dist/{chunk-vybf6pkp.js → chunk-dbc80ad7.js} +1 -1
  115. package/dist/{chunk-4gz41why.js → chunk-dqn23610.js} +1 -1
  116. package/dist/{chunk-z3ga9q5m.js → chunk-e4rvtvpw.js} +13 -11
  117. package/dist/{chunk-z3ga9q5m.js.map → chunk-e4rvtvpw.js.map} +2 -2
  118. package/dist/{chunk-h9kxd41f.js → chunk-gbrpsx4m.js} +19 -6
  119. package/dist/chunk-gbrpsx4m.js.map +11 -0
  120. package/dist/{chunk-84h6qhmp.js → chunk-h0knpbz5.js} +468 -1236
  121. package/dist/chunk-h0knpbz5.js.map +38 -0
  122. package/dist/{chunk-zp2v2rv6.js → chunk-ha58tjtt.js} +6 -6
  123. package/dist/{chunk-f6erf2vv.js → chunk-hdz94br2.js} +2 -2
  124. package/dist/chunk-jecn6t54.js +307 -0
  125. package/dist/chunk-jecn6t54.js.map +12 -0
  126. package/dist/{chunk-dsrkgtnh.js → chunk-jq43kdvk.js} +1 -1
  127. package/dist/{chunk-wtmzkcht.js → chunk-k34z5rvh.js} +1 -1
  128. package/dist/{chunk-htq0qh7z.js → chunk-ka3a2ft3.js} +2 -2
  129. package/dist/{chunk-4h947jd8.js → chunk-kt81c11h.js} +2 -2
  130. package/dist/chunk-n2arzn6e.js +1745 -0
  131. package/dist/chunk-n2arzn6e.js.map +20 -0
  132. package/dist/{chunk-f2rt4vkh.js → chunk-n2w475r0.js} +3 -3
  133. package/dist/{chunk-t8t39h7v.js → chunk-n6jxh8sw.js} +10 -2
  134. package/dist/chunk-n6jxh8sw.js.map +10 -0
  135. package/dist/{chunk-drjqm1aa.js → chunk-p03r0h5s.js} +310 -28
  136. package/dist/chunk-p03r0h5s.js.map +16 -0
  137. package/dist/chunk-p2vqaxkc.js +528 -0
  138. package/dist/chunk-p2vqaxkc.js.map +15 -0
  139. package/dist/{chunk-gadsm794.js → chunk-qjycjdj6.js} +84 -11
  140. package/dist/chunk-qjycjdj6.js.map +12 -0
  141. package/dist/chunk-qjzp9xyb.js +286 -0
  142. package/dist/chunk-qjzp9xyb.js.map +12 -0
  143. package/dist/{chunk-am6eczah.js → chunk-qv38twt8.js} +50 -69
  144. package/dist/{chunk-am6eczah.js.map → chunk-qv38twt8.js.map} +8 -8
  145. package/dist/{chunk-bhxaq2nn.js → chunk-qw9gvjv5.js} +1 -1
  146. package/dist/{chunk-r0rry8dn.js → chunk-rp1mvzb4.js} +6 -6
  147. package/dist/{chunk-tkdscva6.js → chunk-rre42skh.js} +187 -18
  148. package/dist/chunk-rre42skh.js.map +39 -0
  149. package/dist/{chunk-ghteq96b.js → chunk-s5y30bc9.js} +2 -2
  150. package/dist/{chunk-a31h57d5.js → chunk-tn7xcs2n.js} +2 -2
  151. package/dist/{chunk-6gjqgd3d.js → chunk-tpnd31c1.js} +2 -1
  152. package/dist/chunk-tpnd31c1.js.map +11 -0
  153. package/dist/chunk-trxxmgnf.js +68 -0
  154. package/dist/chunk-trxxmgnf.js.map +11 -0
  155. package/dist/{chunk-ea73pzk7.js → chunk-vjjv9mrb.js} +2 -2
  156. package/dist/{chunk-8b55ygje.js → chunk-w3e09qqk.js} +1 -1
  157. package/dist/{chunk-ckxfnx7f.js → chunk-wjgm6jjt.js} +2 -2
  158. package/dist/{chunk-3j7573mj.js → chunk-x0qhkqje.js} +2 -2
  159. package/dist/{chunk-dysw7nsm.js → chunk-xdpwpkha.js} +2 -2
  160. package/dist/{chunk-1q02e95s.js → chunk-y35ma3mj.js} +11 -16
  161. package/dist/{chunk-1q02e95s.js.map → chunk-y35ma3mj.js.map} +3 -4
  162. package/dist/{chunk-qewtks41.js → chunk-z2sery1b.js} +64 -1
  163. package/dist/{chunk-qewtks41.js.map → chunk-z2sery1b.js.map} +3 -3
  164. package/dist/error-reporting/internal.js +4 -4
  165. package/dist/error-reporting/types.d.ts +7 -2
  166. package/dist/error-reporting/types.d.ts.map +1 -1
  167. package/dist/errors/catalog.d.ts +8 -0
  168. package/dist/errors/catalog.d.ts.map +1 -1
  169. package/dist/errors/internal.js +2 -2
  170. package/dist/events/index.js +4 -4
  171. package/dist/execution/agent.d.ts +18 -9
  172. package/dist/execution/agent.d.ts.map +1 -1
  173. package/dist/execution/agent.js +52 -43
  174. package/dist/execution/agent.js.map +1 -1
  175. package/dist/execution/authorization.d.ts +14 -4
  176. package/dist/execution/authorization.d.ts.map +1 -1
  177. package/dist/execution/primitive.js +45 -43
  178. package/dist/execution/primitive.js.map +2 -2
  179. package/dist/execution/request.d.ts +3 -1
  180. package/dist/execution/request.d.ts.map +1 -1
  181. package/dist/execution/request.js +46 -44
  182. package/dist/execution/request.js.map +3 -3
  183. package/dist/execution/types.d.ts +1 -1
  184. package/dist/execution/types.d.ts.map +1 -1
  185. package/dist/http/api-routes.d.ts.map +1 -1
  186. package/dist/http/index.js +1 -1
  187. package/dist/index.d.ts +9 -6
  188. package/dist/index.d.ts.map +1 -1
  189. package/dist/index.js +82 -77
  190. package/dist/index.js.map +1 -1
  191. package/dist/json.d.ts +2 -0
  192. package/dist/json.d.ts.map +1 -1
  193. package/dist/lake-storage/index.js +5 -5
  194. package/dist/logging/index.js +3 -3
  195. package/dist/logging/types.js +2 -2
  196. package/dist/materialization/index.js +2 -2
  197. package/dist/materializer/index.js +33 -29
  198. package/dist/materializer/index.js.map +1 -1
  199. package/dist/models/catalog.d.ts +40 -0
  200. package/dist/models/catalog.d.ts.map +1 -0
  201. package/dist/models/definitions.d.ts +25 -0
  202. package/dist/models/definitions.d.ts.map +1 -0
  203. package/dist/models/errors.d.ts +52 -0
  204. package/dist/models/errors.d.ts.map +1 -0
  205. package/dist/models/events.d.ts +192 -0
  206. package/dist/models/events.d.ts.map +1 -0
  207. package/dist/models/index.d.ts +17 -39
  208. package/dist/models/index.d.ts.map +1 -1
  209. package/dist/models/index.js +50 -0
  210. package/dist/models/index.js.map +9 -0
  211. package/dist/models/language-model.d.ts +90 -0
  212. package/dist/models/language-model.d.ts.map +1 -0
  213. package/dist/models/messages.d.ts +74 -0
  214. package/dist/models/messages.d.ts.map +1 -0
  215. package/dist/models/pricing.d.ts +69 -0
  216. package/dist/models/pricing.d.ts.map +1 -0
  217. package/dist/models/rate-card.d.ts +24 -0
  218. package/dist/models/rate-card.d.ts.map +1 -0
  219. package/dist/models/tools.d.ts +24 -0
  220. package/dist/models/tools.d.ts.map +1 -0
  221. package/dist/objects/index.js +38 -34
  222. package/dist/objects/index.js.map +1 -1
  223. package/dist/objects/query/index.js +32 -28
  224. package/dist/objects/query/index.js.map +1 -1
  225. package/dist/ontology/index.js +5 -5
  226. package/dist/ontology/internal.js +4 -4
  227. package/dist/pipelines/index.js +37 -35
  228. package/dist/pipelines/index.js.map +1 -1
  229. package/dist/projections/internal.js +35 -31
  230. package/dist/projections/internal.js.map +1 -1
  231. package/dist/queues/in-memory.d.ts +3 -2
  232. package/dist/queues/in-memory.d.ts.map +1 -1
  233. package/dist/queues/index.d.ts +3 -1
  234. package/dist/queues/index.d.ts.map +1 -1
  235. package/dist/queues/index.js +1 -1
  236. package/dist/queues/types.d.ts +15 -3
  237. package/dist/queues/types.d.ts.map +1 -1
  238. package/dist/runtime/create.d.ts +4 -4
  239. package/dist/runtime/create.d.ts.map +1 -1
  240. package/dist/runtime/definitions.d.ts +2 -2
  241. package/dist/runtime/definitions.d.ts.map +1 -1
  242. package/dist/runtime/host.d.ts +3 -2
  243. package/dist/runtime/host.d.ts.map +1 -1
  244. package/dist/runtime/resolve-definitions.d.ts +2 -2
  245. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  246. package/dist/runtime/sixb.d.ts +4 -2
  247. package/dist/runtime/sixb.d.ts.map +1 -1
  248. package/dist/security/every.d.ts +1 -4
  249. package/dist/security/every.d.ts.map +1 -1
  250. package/dist/security/grants.d.ts +6 -5
  251. package/dist/security/grants.d.ts.map +1 -1
  252. package/dist/security/index.d.ts +1 -1
  253. package/dist/security/index.d.ts.map +1 -1
  254. package/dist/security/registry.d.ts +1 -1
  255. package/dist/security/registry.d.ts.map +1 -1
  256. package/dist/security/types.d.ts +13 -5
  257. package/dist/security/types.d.ts.map +1 -1
  258. package/dist/security/validation.d.ts +4 -2
  259. package/dist/security/validation.d.ts.map +1 -1
  260. package/dist/storage/action-runs/failure.js +3 -3
  261. package/dist/storage/action-runs/provider.js +2 -2
  262. package/dist/storage/agents/errors.d.ts +1 -1
  263. package/dist/storage/agents/errors.d.ts.map +1 -1
  264. package/dist/storage/agents/in-memory.d.ts +3 -2
  265. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  266. package/dist/storage/agents/index.d.ts +1 -1
  267. package/dist/storage/agents/index.d.ts.map +1 -1
  268. package/dist/storage/agents/provider.d.ts +11 -4
  269. package/dist/storage/agents/provider.d.ts.map +1 -1
  270. package/dist/storage/agents/provider.js +18 -15
  271. package/dist/storage/agents/provider.js.map +1 -1
  272. package/dist/storage/agents/types.d.ts +65 -17
  273. package/dist/storage/agents/types.d.ts.map +1 -1
  274. package/dist/storage/ai-cost/analytics.d.ts +2 -1
  275. package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
  276. package/dist/storage/ai-cost/codec.d.ts +3 -2
  277. package/dist/storage/ai-cost/codec.d.ts.map +1 -1
  278. package/dist/storage/ai-cost/groups.d.ts +51 -0
  279. package/dist/storage/ai-cost/groups.d.ts.map +1 -0
  280. package/dist/storage/ai-cost/in-memory.d.ts +11 -1
  281. package/dist/storage/ai-cost/in-memory.d.ts.map +1 -1
  282. package/dist/storage/ai-cost/index.d.ts +1 -1
  283. package/dist/storage/ai-cost/index.d.ts.map +1 -1
  284. package/dist/storage/ai-cost/provider.d.ts +2 -0
  285. package/dist/storage/ai-cost/provider.d.ts.map +1 -1
  286. package/dist/storage/ai-cost/provider.js +29 -13
  287. package/dist/storage/ai-cost/provider.js.map +3 -3
  288. package/dist/storage/ai-cost/types.d.ts +64 -15
  289. package/dist/storage/ai-cost/types.d.ts.map +1 -1
  290. package/dist/storage/ai-cost/validation.d.ts +2 -1
  291. package/dist/storage/ai-cost/validation.d.ts.map +1 -1
  292. package/dist/storage/ai-limits/enforcement.d.ts +14 -0
  293. package/dist/storage/ai-limits/enforcement.d.ts.map +1 -0
  294. package/dist/storage/ai-limits/enforcement.js +21 -0
  295. package/dist/storage/ai-limits/enforcement.js.map +9 -0
  296. package/dist/storage/ai-limits/errors.d.ts +8 -0
  297. package/dist/storage/ai-limits/errors.d.ts.map +1 -0
  298. package/dist/storage/ai-limits/in-memory.d.ts +78 -0
  299. package/dist/storage/ai-limits/in-memory.d.ts.map +1 -0
  300. package/dist/storage/ai-limits/index.d.ts +7 -0
  301. package/dist/storage/ai-limits/index.d.ts.map +1 -0
  302. package/dist/storage/ai-limits/period.d.ts +4 -0
  303. package/dist/storage/ai-limits/period.d.ts.map +1 -0
  304. package/dist/storage/ai-limits/provider.d.ts +85 -0
  305. package/dist/storage/ai-limits/provider.d.ts.map +1 -0
  306. package/dist/storage/ai-limits/provider.js +62 -0
  307. package/dist/storage/ai-limits/provider.js.map +9 -0
  308. package/dist/storage/ai-limits/types.d.ts +175 -0
  309. package/dist/storage/ai-limits/types.d.ts.map +1 -0
  310. package/dist/storage/ai-usage/in-memory.d.ts +4 -0
  311. package/dist/storage/ai-usage/in-memory.d.ts.map +1 -1
  312. package/dist/storage/ai-usage/record.d.ts.map +1 -1
  313. package/dist/storage/ai-usage/types.d.ts +6 -2
  314. package/dist/storage/ai-usage/types.d.ts.map +1 -1
  315. package/dist/storage/auth/errors.d.ts +1 -1
  316. package/dist/storage/auth/errors.d.ts.map +1 -1
  317. package/dist/storage/auth/in-memory/auth-storage.d.ts +4 -1
  318. package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
  319. package/dist/storage/auth/in-memory/device-authorizations.d.ts +29 -0
  320. package/dist/storage/auth/in-memory/device-authorizations.d.ts.map +1 -0
  321. package/dist/storage/auth/in-memory/shared.d.ts +3 -1
  322. package/dist/storage/auth/in-memory/shared.d.ts.map +1 -1
  323. package/dist/storage/auth/index.d.ts +2 -1
  324. package/dist/storage/auth/index.d.ts.map +1 -1
  325. package/dist/storage/auth/types.d.ts +66 -0
  326. package/dist/storage/auth/types.d.ts.map +1 -1
  327. package/dist/storage/connector-connections/provider.js +2 -2
  328. package/dist/storage/executions/provider.js +1 -1
  329. package/dist/storage/executions/run-link.d.ts +7 -2
  330. package/dist/storage/executions/run-link.d.ts.map +1 -1
  331. package/dist/storage/executions/validation.d.ts.map +1 -1
  332. package/dist/storage/in-memory/index.d.ts +4 -0
  333. package/dist/storage/in-memory/index.d.ts.map +1 -1
  334. package/dist/storage/index.d.ts +8 -5
  335. package/dist/storage/index.d.ts.map +1 -1
  336. package/dist/storage/index.js +51 -38
  337. package/dist/storage/index.js.map +1 -1
  338. package/dist/storage/ontology/in-memory/materializations.d.ts +4 -3
  339. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
  340. package/dist/storage/ontology/index.d.ts +1 -1
  341. package/dist/storage/ontology/index.d.ts.map +1 -1
  342. package/dist/storage/ontology/materializations.d.ts +7 -3
  343. package/dist/storage/ontology/materializations.d.ts.map +1 -1
  344. package/dist/storage/ontology/provider.d.ts +2 -2
  345. package/dist/storage/ontology/provider.d.ts.map +1 -1
  346. package/dist/storage/ontology/provider.js +3 -3
  347. package/dist/storage/pipeline-runs/provider.js +2 -2
  348. package/dist/storage/projection-runs/provider.js +4 -4
  349. package/dist/storage/sync-runs/provider.js +2 -2
  350. package/dist/storage/types.d.ts +5 -1
  351. package/dist/storage/types.d.ts.map +1 -1
  352. package/dist/storage/webhook-runs/provider.js +2 -2
  353. package/dist/storage/workflow-runs/provider.d.ts +1 -1
  354. package/dist/storage/workflow-runs/provider.js +10 -11
  355. package/dist/storage/workflow-runs/provider.js.map +1 -1
  356. package/dist/storage/workflow-runs/types.d.ts +5 -4
  357. package/dist/storage/workflow-runs/types.d.ts.map +1 -1
  358. package/dist/syncs/index.js +37 -35
  359. package/dist/syncs/index.js.map +1 -1
  360. package/dist/testing/agent-execution.d.ts +3 -1
  361. package/dist/testing/agent-execution.d.ts.map +1 -1
  362. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  363. package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
  364. package/dist/testing/ai-limit-storage-contract.d.ts +18 -0
  365. package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -0
  366. package/dist/testing/ai-model-call-groups-contract.d.ts +6 -0
  367. package/dist/testing/ai-model-call-groups-contract.d.ts.map +1 -0
  368. package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
  369. package/dist/testing/auth-storage-contract.d.ts.map +1 -1
  370. package/dist/testing/index.d.ts +2 -0
  371. package/dist/testing/index.d.ts.map +1 -1
  372. package/dist/testing/index.js +3758 -1945
  373. package/dist/testing/index.js.map +15 -13
  374. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  375. package/dist/testing/queues-contract.d.ts.map +1 -1
  376. package/dist/webhooks/internal.js +32 -28
  377. package/dist/webhooks/internal.js.map +2 -2
  378. package/dist/workers/index.js +2 -2
  379. package/dist/workflows/agent-step-identity.d.ts +3 -0
  380. package/dist/workflows/agent-step-identity.d.ts.map +1 -0
  381. package/dist/workflows/builders.d.ts +2 -3
  382. package/dist/workflows/builders.d.ts.map +1 -1
  383. package/dist/workflows/execution.d.ts +1 -1
  384. package/dist/workflows/execution.d.ts.map +1 -1
  385. package/dist/workflows/failure.d.ts +1 -1
  386. package/dist/workflows/failure.d.ts.map +1 -1
  387. package/dist/workflows/index.d.ts +3 -2
  388. package/dist/workflows/index.d.ts.map +1 -1
  389. package/dist/workflows/index.js +53 -45
  390. package/dist/workflows/index.js.map +1 -1
  391. package/dist/workflows/types.d.ts +26 -11
  392. package/dist/workflows/types.d.ts.map +1 -1
  393. package/dist/workflows/validation.d.ts +7 -1
  394. package/dist/workflows/validation.d.ts.map +1 -1
  395. package/package.json +19 -4
  396. package/src/actions/types/definitions.ts +24 -2
  397. package/src/agents/adapters.ts +109 -115
  398. package/src/agents/authority.ts +214 -32
  399. package/src/agents/builders.ts +3 -50
  400. package/src/agents/context-compaction.ts +4 -0
  401. package/src/agents/dispatch.ts +59 -2
  402. package/src/agents/errors.ts +5 -2
  403. package/src/agents/execution.ts +53 -52
  404. package/src/agents/ids.ts +16 -1
  405. package/src/agents/index.ts +23 -11
  406. package/src/agents/message.ts +18 -9
  407. package/src/agents/model-loop.ts +1023 -0
  408. package/src/agents/reference.ts +7 -0
  409. package/src/agents/request.ts +141 -74
  410. package/src/agents/retired-config.ts +20 -0
  411. package/src/agents/streams.ts +45 -19
  412. package/src/agents/tool-catalog.ts +21 -0
  413. package/src/agents/tool-definition.ts +23 -0
  414. package/src/agents/types.ts +39 -81
  415. package/src/agents/validation.ts +34 -180
  416. package/src/ai-usage/execution.ts +196 -0
  417. package/src/ai-usage/index.ts +15 -0
  418. package/src/auth/index.ts +1 -0
  419. package/src/auth/runtime.ts +8 -0
  420. package/src/auth/strategy.ts +1 -0
  421. package/src/auth/types.ts +14 -0
  422. package/src/authorization/decision.ts +27 -10
  423. package/src/authorization/grant-kinds.ts +62 -15
  424. package/src/authorization/index.ts +1 -0
  425. package/src/authorization/resolve.ts +12 -5
  426. package/src/authorization/types.ts +7 -5
  427. package/src/bootstrap/discovery.ts +0 -3
  428. package/src/error-reporting/types.ts +4 -2
  429. package/src/errors/catalog.ts +8 -0
  430. package/src/execution/agent.ts +129 -22
  431. package/src/execution/authorization.ts +48 -18
  432. package/src/execution/request.ts +4 -1
  433. package/src/execution/types.ts +1 -1
  434. package/src/http/api-routes.ts +63 -0
  435. package/src/index.ts +36 -7
  436. package/src/json.ts +9 -0
  437. package/src/models/catalog.ts +137 -0
  438. package/src/models/definitions.ts +202 -0
  439. package/src/models/errors.ts +83 -0
  440. package/src/models/events.ts +198 -0
  441. package/src/models/index.ts +89 -71
  442. package/src/models/language-model.ts +143 -0
  443. package/src/models/messages.ts +78 -0
  444. package/src/models/pricing.ts +390 -0
  445. package/src/models/rate-card.ts +101 -0
  446. package/src/models/tools.ts +29 -0
  447. package/src/queues/in-memory.ts +5 -0
  448. package/src/queues/index.ts +11 -0
  449. package/src/queues/types.ts +20 -3
  450. package/src/runtime/create.ts +7 -5
  451. package/src/runtime/definitions.ts +2 -2
  452. package/src/runtime/host.ts +3 -2
  453. package/src/runtime/resolve-definitions.ts +13 -36
  454. package/src/runtime/sixb.ts +6 -8
  455. package/src/security/every.ts +0 -4
  456. package/src/security/grants.ts +55 -11
  457. package/src/security/index.ts +2 -0
  458. package/src/security/registry.ts +6 -5
  459. package/src/security/types.ts +15 -4
  460. package/src/security/validation.ts +30 -9
  461. package/src/storage/agents/errors.ts +1 -0
  462. package/src/storage/agents/in-memory.ts +121 -11
  463. package/src/storage/agents/index.ts +7 -0
  464. package/src/storage/agents/provider.ts +150 -6
  465. package/src/storage/agents/types.ts +73 -16
  466. package/src/storage/ai-cost/analytics.ts +63 -6
  467. package/src/storage/ai-cost/codec.ts +37 -12
  468. package/src/storage/ai-cost/groups.ts +248 -0
  469. package/src/storage/ai-cost/in-memory.ts +42 -0
  470. package/src/storage/ai-cost/index.ts +6 -0
  471. package/src/storage/ai-cost/provider.ts +7 -0
  472. package/src/storage/ai-cost/types.ts +76 -14
  473. package/src/storage/ai-cost/validation.ts +147 -17
  474. package/src/storage/ai-limits/enforcement.ts +68 -0
  475. package/src/storage/ai-limits/errors.ts +23 -0
  476. package/src/storage/ai-limits/in-memory.ts +671 -0
  477. package/src/storage/ai-limits/index.ts +31 -0
  478. package/src/storage/ai-limits/period.ts +11 -0
  479. package/src/storage/ai-limits/provider.ts +430 -0
  480. package/src/storage/ai-limits/types.ts +195 -0
  481. package/src/storage/ai-usage/in-memory.ts +13 -0
  482. package/src/storage/ai-usage/record.ts +17 -0
  483. package/src/storage/ai-usage/types.ts +6 -2
  484. package/src/storage/auth/errors.ts +6 -0
  485. package/src/storage/auth/in-memory/auth-storage.ts +69 -0
  486. package/src/storage/auth/in-memory/device-authorizations.ts +145 -0
  487. package/src/storage/auth/in-memory/shared.ts +7 -0
  488. package/src/storage/auth/index.ts +7 -0
  489. package/src/storage/auth/types.ts +73 -0
  490. package/src/storage/executions/run-link.ts +16 -6
  491. package/src/storage/executions/validation.ts +36 -6
  492. package/src/storage/in-memory/index.ts +48 -4
  493. package/src/storage/index.ts +52 -1
  494. package/src/storage/ontology/in-memory/materializations.ts +34 -22
  495. package/src/storage/ontology/index.ts +1 -0
  496. package/src/storage/ontology/materializations.ts +8 -3
  497. package/src/storage/ontology/provider.ts +2 -2
  498. package/src/storage/types.ts +37 -0
  499. package/src/storage/workflow-runs/in-memory.ts +3 -3
  500. package/src/storage/workflow-runs/provider.ts +2 -2
  501. package/src/storage/workflow-runs/types.ts +6 -3
  502. package/src/testing/agent-execution.ts +40 -28
  503. package/src/testing/agent-storage-contract.ts +249 -28
  504. package/src/testing/ai-cost-storage-contract.ts +96 -8
  505. package/src/testing/ai-limit-storage-contract.ts +1134 -0
  506. package/src/testing/ai-model-call-groups-contract.ts +353 -0
  507. package/src/testing/ai-usage-storage-contract.ts +31 -0
  508. package/src/testing/auth-storage-contract.ts +85 -0
  509. package/src/testing/execution-storage-contract.ts +2 -2
  510. package/src/testing/index.ts +10 -0
  511. package/src/testing/materializer-storage-contract.ts +170 -2
  512. package/src/testing/queues-contract.ts +36 -1
  513. package/src/workflows/agent-step-identity.ts +4 -0
  514. package/src/workflows/builders.ts +95 -9
  515. package/src/workflows/execution.ts +2 -2
  516. package/src/workflows/failure.ts +2 -2
  517. package/src/workflows/index.ts +3 -0
  518. package/src/workflows/types.ts +23 -11
  519. package/src/workflows/validation.ts +100 -7
  520. package/dist/chunk-6gjqgd3d.js.map +0 -11
  521. package/dist/chunk-84h6qhmp.js.map +0 -46
  522. package/dist/chunk-a09jx26t.js +0 -55
  523. package/dist/chunk-a09jx26t.js.map +0 -11
  524. package/dist/chunk-dm72y8wt.js.map +0 -10
  525. package/dist/chunk-drjqm1aa.js.map +0 -15
  526. package/dist/chunk-gadsm794.js.map +0 -11
  527. package/dist/chunk-h9kxd41f.js.map +0 -11
  528. package/dist/chunk-nzw7sm3b.js +0 -137
  529. package/dist/chunk-nzw7sm3b.js.map +0 -10
  530. package/dist/chunk-t0jjkep3.js.map +0 -10
  531. package/dist/chunk-t8t39h7v.js.map +0 -10
  532. package/dist/chunk-tkdscva6.js.map +0 -37
  533. package/dist/chunk-v0egge8b.js.map +0 -56
  534. package/dist/chunk-xdf9yswn.js.map +0 -11
  535. /package/dist/{chunk-zqysyfjt.js.map → chunk-08m3b6w8.js.map} +0 -0
  536. /package/dist/{chunk-xkthy56g.js.map → chunk-1kamz6j0.js.map} +0 -0
  537. /package/dist/{chunk-6d5xdj1q.js.map → chunk-3fqt22c4.js.map} +0 -0
  538. /package/dist/{chunk-z3zp0bj1.js.map → chunk-407j3msh.js.map} +0 -0
  539. /package/dist/{chunk-rhrbz7d4.js.map → chunk-4a849fr1.js.map} +0 -0
  540. /package/dist/{chunk-62c7t4jc.js.map → chunk-4nxeacx7.js.map} +0 -0
  541. /package/dist/{chunk-cy0n5dms.js.map → chunk-5jcdmjam.js.map} +0 -0
  542. /package/dist/{chunk-819wnjz8.js.map → chunk-64sr682n.js.map} +0 -0
  543. /package/dist/{chunk-x2yw73hy.js.map → chunk-7ds9620f.js.map} +0 -0
  544. /package/dist/{chunk-tbv03sx2.js.map → chunk-9aehf39w.js.map} +0 -0
  545. /package/dist/{chunk-ezake7g1.js.map → chunk-agsvg9ar.js.map} +0 -0
  546. /package/dist/{chunk-rnshztfq.js.map → chunk-d63tybny.js.map} +0 -0
  547. /package/dist/{chunk-vybf6pkp.js.map → chunk-dbc80ad7.js.map} +0 -0
  548. /package/dist/{chunk-4gz41why.js.map → chunk-dqn23610.js.map} +0 -0
  549. /package/dist/{chunk-zp2v2rv6.js.map → chunk-ha58tjtt.js.map} +0 -0
  550. /package/dist/{chunk-f6erf2vv.js.map → chunk-hdz94br2.js.map} +0 -0
  551. /package/dist/{chunk-dsrkgtnh.js.map → chunk-jq43kdvk.js.map} +0 -0
  552. /package/dist/{chunk-wtmzkcht.js.map → chunk-k34z5rvh.js.map} +0 -0
  553. /package/dist/{chunk-htq0qh7z.js.map → chunk-ka3a2ft3.js.map} +0 -0
  554. /package/dist/{chunk-4h947jd8.js.map → chunk-kt81c11h.js.map} +0 -0
  555. /package/dist/{chunk-f2rt4vkh.js.map → chunk-n2w475r0.js.map} +0 -0
  556. /package/dist/{chunk-bhxaq2nn.js.map → chunk-qw9gvjv5.js.map} +0 -0
  557. /package/dist/{chunk-r0rry8dn.js.map → chunk-rp1mvzb4.js.map} +0 -0
  558. /package/dist/{chunk-ghteq96b.js.map → chunk-s5y30bc9.js.map} +0 -0
  559. /package/dist/{chunk-a31h57d5.js.map → chunk-tn7xcs2n.js.map} +0 -0
  560. /package/dist/{chunk-ea73pzk7.js.map → chunk-vjjv9mrb.js.map} +0 -0
  561. /package/dist/{chunk-8b55ygje.js.map → chunk-w3e09qqk.js.map} +0 -0
  562. /package/dist/{chunk-ckxfnx7f.js.map → chunk-wjgm6jjt.js.map} +0 -0
  563. /package/dist/{chunk-3j7573mj.js.map → chunk-x0qhkqje.js.map} +0 -0
  564. /package/dist/{chunk-dysw7nsm.js.map → chunk-xdpwpkha.js.map} +0 -0
@@ -1,15 +1,32 @@
1
- import { SYSTEM_PRINCIPAL } from "../auth"
1
+ import { principalsEqual, SYSTEM_PRINCIPAL } from "../auth"
2
2
  import type { AuthorizationContext } from "../authorization"
3
3
  import { resolveAuthorizationContext } from "../authorization"
4
+ import { createSixbError } from "../errors/internal"
4
5
  import type { AuthorizablePrincipal, AuthorizationRef } from "../execution"
5
6
  import type { SecurityDefinitionCatalog } from "../security"
6
7
  import type {
8
+ AccessTokenRecord,
7
9
  AuthStorage,
8
10
  ServiceAccountGroupMembershipRecord,
9
11
  ServiceAccountRecord,
12
+ SessionRecord,
13
+ UserRecord,
10
14
  } from "../storage/auth"
11
15
  import { AuthStorageError } from "../storage/auth"
12
- import type { AgentDefinition } from "./types"
16
+
17
+ export type AgentExecutionAuthorization =
18
+ | { readonly type: "principal"; readonly context: AuthorizationContext }
19
+ | { readonly type: "disabled" }
20
+
21
+ type UserCredentialRef = NonNullable<
22
+ Extract<AuthorizationRef, { readonly type: "principal" }>["credential"]
23
+ >
24
+
25
+ interface CredentialedUserAuthorizationRef {
26
+ readonly type: "principal"
27
+ readonly principal: Extract<AuthorizablePrincipal, { readonly type: "user" }>
28
+ readonly credential: UserCredentialRef
29
+ }
13
30
 
14
31
  export interface AgentExecutionIdentity {
15
32
  readonly serviceAccount: ServiceAccountRecord
@@ -17,44 +34,49 @@ export interface AgentExecutionIdentity {
17
34
  readonly groupMemberships: readonly ServiceAccountGroupMembershipRecord[]
18
35
  }
19
36
 
20
- export function agentServiceAccountId(agentId: string): string {
21
- return `svc_agent_${agentId}`
37
+ export function agentServiceAccountId(actorId: string): string {
38
+ return `svc_agent_${actorId}`
22
39
  }
23
40
 
24
- /** Ensure the definition-owned service account exists before an Agent execution is admitted. */
25
- export async function ensureAgentExecutionIdentity(input: {
41
+ /** Ensure a framework-managed Agent actor exists with exactly its declared group memberships. */
42
+ export async function ensureManagedAgentExecutionIdentity(input: {
26
43
  readonly auth: AuthStorage | undefined
27
44
  readonly projectId: string
28
- readonly agent: AgentDefinition
45
+ readonly actorId: string
46
+ readonly name: string
47
+ readonly description: string
48
+ readonly groupIds: readonly string[]
29
49
  }): Promise<AgentExecutionIdentity> {
30
50
  const auth = requireAuthStorage(input.auth)
31
- const id = agentServiceAccountId(input.agent.id)
32
- const name = input.agent.name
33
- const description = `Managed service account for agent '${input.agent.id}'.`
51
+ const id = agentServiceAccountId(input.actorId)
34
52
  const now = new Date()
35
53
  const loaded = await loadOrCreateAgentServiceAccount(auth, {
36
54
  id,
37
55
  projectId: input.projectId,
38
- name,
39
- description,
56
+ name: input.name,
57
+ description: input.description,
40
58
  updatedAt: now,
41
59
  })
42
- assertActiveAgentServiceAccount(input.agent.id, loaded)
60
+ assertFrameworkManagedAgentServiceAccount(input.actorId, loaded)
61
+ assertActiveAgentServiceAccount(input.actorId, loaded)
43
62
  const serviceAccount = await updateAgentServiceAccountMetadata(auth, {
44
63
  existing: loaded,
45
- name,
46
- description,
64
+ name: input.name,
65
+ description: input.description,
47
66
  updatedAt: now,
48
67
  })
49
- assertActiveAgentServiceAccount(input.agent.id, serviceAccount)
68
+ assertActiveAgentServiceAccount(input.actorId, serviceAccount)
50
69
 
51
- const groupMemberships = await auth.serviceAccountGroupMemberships.reconcileForServiceAccount({
52
- projectId: input.projectId,
53
- serviceAccountId: id,
54
- groupIds: input.agent.groupIds,
55
- source: "agent",
56
- updatedAt: now,
57
- })
70
+ const groupMemberships = requireDefinitionOwnedGroupMemberships(
71
+ input.actorId,
72
+ await auth.serviceAccountGroupMemberships.reconcileForServiceAccount({
73
+ projectId: input.projectId,
74
+ serviceAccountId: id,
75
+ groupIds: input.groupIds,
76
+ source: "agent",
77
+ updatedAt: now,
78
+ })
79
+ )
58
80
 
59
81
  return {
60
82
  serviceAccount,
@@ -105,31 +127,64 @@ async function loadOrCreateAgentServiceAccount(
105
127
  }
106
128
 
107
129
  function assertActiveAgentServiceAccount(
108
- agentId: string,
130
+ actorId: string,
109
131
  serviceAccount: ServiceAccountRecord
110
132
  ): void {
111
133
  if (serviceAccount.status === "suspended") {
112
134
  throw new Error(
113
- `[Sixb] Agent '${agentId}' service account '${serviceAccount.id}' is suspended.`
135
+ `[Sixb] Agent '${actorId}' service account '${serviceAccount.id}' is suspended.`
136
+ )
137
+ }
138
+ }
139
+
140
+ function assertFrameworkManagedAgentServiceAccount(
141
+ actorId: string,
142
+ serviceAccount: ServiceAccountRecord
143
+ ): void {
144
+ if (
145
+ serviceAccount.createdByPrincipal === undefined ||
146
+ !principalsEqual(serviceAccount.createdByPrincipal, SYSTEM_PRINCIPAL)
147
+ ) {
148
+ throw createSixbError(
149
+ "agent.execution_failed",
150
+ `[Sixb] Agent '${actorId}' cannot use service account '${serviceAccount.id}' because it is not managed by Sixb.`,
151
+ { details: { actorId, serviceAccountId: serviceAccount.id } }
114
152
  )
115
153
  }
116
154
  }
117
155
 
156
+ function requireDefinitionOwnedGroupMemberships(
157
+ actorId: string,
158
+ memberships: readonly ServiceAccountGroupMembershipRecord[]
159
+ ): readonly ServiceAccountGroupMembershipRecord[] {
160
+ const externalGroupIds = memberships
161
+ .filter((membership) => membership.source !== "agent")
162
+ .map((membership) => membership.groupId)
163
+ if (externalGroupIds.length > 0) {
164
+ throw createSixbError(
165
+ "agent.execution_failed",
166
+ `[Sixb] Agent '${actorId}' service account has group memberships not managed by its definition: ${externalGroupIds.join(", ")}.`,
167
+ { details: { actorId, externalGroupIds } }
168
+ )
169
+ }
170
+ return memberships
171
+ }
172
+
118
173
  /** Resolve current grants for the service account referenced by a durable Agent execution. */
119
174
  export async function resolveAgentExecutionAuthorization(input: {
120
175
  readonly auth: AuthStorage | undefined
121
176
  readonly projectId: string
122
- readonly agentId: string
177
+ readonly actorId: string
123
178
  readonly authorizationRef: AuthorizationRef
124
179
  readonly security: SecurityDefinitionCatalog
125
180
  }): Promise<{ readonly identity: AgentExecutionIdentity; readonly context: AuthorizationContext }> {
126
181
  const auth = requireAuthStorage(input.auth)
127
- const expectedId = agentServiceAccountId(input.agentId)
182
+ const expectedId = agentServiceAccountId(input.actorId)
128
183
  const principal =
129
184
  input.authorizationRef.type === "principal" ? input.authorizationRef.principal : null
130
185
  if (principal?.type !== "serviceAccount" || principal.id !== expectedId) {
131
186
  throw new Error(
132
- `[Sixb] Agent '${input.agentId}' execution authority must reference service account '${expectedId}'.`
187
+ `[Sixb] Agent '${input.actorId}' execution authority must reference service account '${expectedId}'.`
133
188
  )
134
189
  }
135
190
 
@@ -140,11 +195,15 @@ export async function resolveAgentExecutionAuthorization(input: {
140
195
  if (!serviceAccount || serviceAccount.status !== "active") {
141
196
  throw new Error(`[Sixb] Agent service account '${principal.id}' is not active.`)
142
197
  }
198
+ assertFrameworkManagedAgentServiceAccount(input.actorId, serviceAccount)
143
199
 
144
- const groupMemberships = await auth.serviceAccountGroupMemberships.listForServiceAccount({
145
- projectId: input.projectId,
146
- serviceAccountId: principal.id,
147
- })
200
+ const groupMemberships = requireDefinitionOwnedGroupMemberships(
201
+ input.actorId,
202
+ await auth.serviceAccountGroupMemberships.listForServiceAccount({
203
+ projectId: input.projectId,
204
+ serviceAccountId: principal.id,
205
+ })
206
+ )
148
207
  const identity: AgentExecutionIdentity = {
149
208
  serviceAccount,
150
209
  principal: { type: "serviceAccount", id: principal.id },
@@ -160,6 +219,129 @@ export async function resolveAgentExecutionAuthorization(input: {
160
219
  }
161
220
  }
162
221
 
222
+ /** Revalidate the durable user authority inherited by a conversational or child Agent. */
223
+ export async function resolveInheritedAgentExecutionAuthorization(input: {
224
+ readonly auth: AuthStorage | undefined
225
+ readonly projectId: string
226
+ readonly authorizationRef: AuthorizationRef
227
+ readonly security: SecurityDefinitionCatalog
228
+ readonly now?: Date
229
+ }): Promise<AgentExecutionAuthorization> {
230
+ if (input.authorizationRef.type === "disabled") return { type: "disabled" }
231
+
232
+ const ref = requireCredentialedUserAuthority(input.authorizationRef)
233
+ const auth = requireAuthStorage(input.auth)
234
+ const now = input.now ?? new Date()
235
+ const user = await requireActiveUser(auth, input.projectId, ref.principal.id)
236
+ const memberships = await auth.groupMemberships.listForUser({
237
+ projectId: input.projectId,
238
+ userId: user.id,
239
+ })
240
+ const credential = await revalidateUserCredential({
241
+ auth,
242
+ projectId: input.projectId,
243
+ userId: user.id,
244
+ credential: ref.credential,
245
+ currentGroupIds: memberships.map((membership) => membership.groupId),
246
+ now,
247
+ })
248
+
249
+ return {
250
+ type: "principal",
251
+ context: resolveAuthorizationContext({
252
+ principal: ref.principal,
253
+ groupIds: credential.groupIds,
254
+ roles: input.security.listResolvedRoles(),
255
+ ...(credential.sessionId === undefined ? {} : { sessionId: credential.sessionId }),
256
+ }),
257
+ }
258
+ }
259
+
260
+ function requireCredentialedUserAuthority(ref: AuthorizationRef): CredentialedUserAuthorizationRef {
261
+ if (ref.type !== "principal" || ref.principal.type !== "user" || ref.credential === undefined) {
262
+ throw invalidInheritedAuthority("the durable reference is not a credentialed user")
263
+ }
264
+ return {
265
+ type: "principal",
266
+ principal: { type: "user", id: ref.principal.id },
267
+ credential: { type: ref.credential.type, id: ref.credential.id },
268
+ }
269
+ }
270
+
271
+ async function requireActiveUser(
272
+ auth: AuthStorage,
273
+ projectId: string,
274
+ userId: string
275
+ ): Promise<UserRecord> {
276
+ const user = await auth.users.getById({ projectId, id: userId })
277
+ if (!user || user.status !== "active") {
278
+ throw invalidInheritedAuthority(`user '${userId}' is not active`)
279
+ }
280
+ return user
281
+ }
282
+
283
+ async function revalidateUserCredential(input: {
284
+ readonly auth: AuthStorage
285
+ readonly projectId: string
286
+ readonly userId: string
287
+ readonly credential: UserCredentialRef
288
+ readonly currentGroupIds: readonly string[]
289
+ readonly now: Date
290
+ }): Promise<{ readonly groupIds: readonly string[]; readonly sessionId?: string }> {
291
+ if (input.credential.type === "session") {
292
+ const session = await input.auth.sessions.getById({
293
+ projectId: input.projectId,
294
+ id: input.credential.id,
295
+ })
296
+ if (!isUsableUserSession(session, input.userId, input.now)) {
297
+ throw invalidInheritedAuthority("the inherited session is no longer valid")
298
+ }
299
+ return { groupIds: input.currentGroupIds, sessionId: session.id }
300
+ }
301
+
302
+ const accessToken = await input.auth.accessTokens.getById({
303
+ projectId: input.projectId,
304
+ id: input.credential.id,
305
+ })
306
+ if (!isUsableUserAccessToken(accessToken, input.userId, input.now)) {
307
+ throw invalidInheritedAuthority("the inherited access token is no longer valid")
308
+ }
309
+ if (accessToken.groupIds === undefined) return { groupIds: input.currentGroupIds }
310
+
311
+ const allowedGroupIds = new Set(accessToken.groupIds)
312
+ return {
313
+ groupIds: input.currentGroupIds.filter((groupId) => allowedGroupIds.has(groupId)),
314
+ }
315
+ }
316
+
317
+ function isUsableUserSession(
318
+ session: SessionRecord | null,
319
+ userId: string,
320
+ now: Date
321
+ ): session is SessionRecord {
322
+ if (!session || session.userId !== userId || session.revokedAt !== undefined) return false
323
+ if (session.expiresAt.getTime() <= now.getTime()) return false
324
+ return (
325
+ session.absoluteExpiresAt === undefined || session.absoluteExpiresAt.getTime() > now.getTime()
326
+ )
327
+ }
328
+
329
+ function isUsableUserAccessToken(
330
+ token: AccessTokenRecord | null,
331
+ userId: string,
332
+ now: Date
333
+ ): token is AccessTokenRecord {
334
+ if (!token || token.subjectType !== "user" || token.subjectId !== userId) return false
335
+ return token.revokedAt === undefined && token.expiresAt.getTime() > now.getTime()
336
+ }
337
+
338
+ function invalidInheritedAuthority(reason: string): Error {
339
+ return createSixbError(
340
+ "agent.execution_failed",
341
+ `[Sixb] The Agent execution cannot restore its inherited authority: ${reason}.`
342
+ )
343
+ }
344
+
163
345
  function requireAuthStorage(auth: AuthStorage | undefined): AuthStorage {
164
346
  if (!auth) {
165
347
  throw new Error("[Sixb] Agent executions require auth storage.")
@@ -1,32 +1,24 @@
1
- import { AgentDefinitionError } from "./errors"
2
- import { createAgentToolDefinition, toolsFromDefinitions } from "./tool-definition"
1
+ import { createAgentToolDefinition } from "./tool-definition"
3
2
  import type {
4
- AgentDefinition,
5
3
  AgentToolDefinition,
6
4
  AgentToolDescriptionBuilder,
7
5
  AgentToolHandler,
8
6
  AgentToolInputBuilder,
9
7
  AgentToolInputSchema,
10
8
  AgentToolRunBuilder,
11
- DefineAgentConfig,
12
9
  InferAgentToolInputSchema,
13
10
  } from "./types"
14
11
  import {
15
- assertNonEmpty,
16
12
  assertValidAgentToolDescription,
17
13
  assertValidAgentToolInput,
18
14
  assertValidAgentToolName,
19
- assertValidProviderOptions,
20
- assertValidReasoningLevel,
21
- groupIdsFromDefinitions,
22
- resolveAgentLoopConfig,
23
15
  } from "./validation"
24
16
 
25
17
  /**
26
- * Define a reusable tool that can be selected explicitly by one or more agents.
18
+ * Define a reusable tool registered through `createSixb({ tools })`.
27
19
  *
28
20
  * The returned definition is inert. The agent worker supplies its run-scoped
29
- * context and executes the handler only when a selected agent calls the tool.
21
+ * context and executes the handler only when a run calls the tool.
30
22
  */
31
23
  export function defineAgentTool<const TName extends string>(
32
24
  name: TName
@@ -55,42 +47,3 @@ export function defineAgentTool<const TName extends string>(
55
47
  },
56
48
  }
57
49
  }
58
-
59
- /**
60
- * Define an agent: a conversational, looping actor auto-discovered from `agents/`.
61
- *
62
- * The returned definition is declarative and can be exported from a project-level
63
- * `agents/` module. The runtime loads and registers it (`sixb.agents`); the agent
64
- * worker executes it as a running, streaming agent.
65
- */
66
- export function defineAgent<const TId extends string>(
67
- id: TId,
68
- config: DefineAgentConfig
69
- ): AgentDefinition<TId> {
70
- assertNonEmpty(id, "id")
71
- assertNonEmpty(config.name, "name")
72
- assertNonEmpty(config.instructions, "instructions")
73
-
74
- if (config.model === undefined || config.model === null) {
75
- throw new AgentDefinitionError("[Sixb] Agent model is required.")
76
- }
77
- assertValidReasoningLevel(config.reasoning)
78
- assertValidProviderOptions(config.providerOptions)
79
- const loop = resolveAgentLoopConfig(config.loop)
80
- const groupIds = groupIdsFromDefinitions(id, config.groups)
81
- const tools = toolsFromDefinitions(id, config.tools)
82
-
83
- return Object.freeze({
84
- kind: "agent",
85
- id,
86
- name: config.name,
87
- model: config.model,
88
- ...(config.reasoning !== undefined ? { reasoning: config.reasoning } : {}),
89
- ...(config.providerOptions !== undefined ? { providerOptions: config.providerOptions } : {}),
90
- instructions: config.instructions,
91
- groupIds,
92
- tools,
93
- ...(config.description !== undefined ? { description: config.description } : {}),
94
- ...(loop !== undefined ? { loop } : {}),
95
- })
96
- }
@@ -147,6 +147,9 @@ function estimateMessageTokens(
147
147
  case "context":
148
148
  tokens += textTokens(stableJsonStringify(part.context))
149
149
  break
150
+ case "provider-state":
151
+ tokens += textTokens(stableJsonStringify(part.data))
152
+ break
150
153
  case "tool-call":
151
154
  tokens +=
152
155
  TOOL_OVERHEAD_TOKENS +
@@ -193,6 +196,7 @@ function serializeSummaryPart(
193
196
  case "text":
194
197
  return [`${indent}<text>${escapeXml(part.text)}</text>`]
195
198
  case "reasoning":
199
+ case "provider-state":
196
200
  case "step-start":
197
201
  return []
198
202
  case "context":
@@ -1,4 +1,4 @@
1
- import type { AgentQueueJob, Queue } from "../queues"
1
+ import type { AgentQueueJob, Queue, SubagentQueueJob } from "../queues"
2
2
  import type { AgentStorage } from "../storage/agents"
3
3
 
4
4
  export interface DispatchQueuedAgentRunsInput {
@@ -31,6 +31,10 @@ export function agentRunQueueJobId(runId: string): string {
31
31
  return `agt_job_${runId}`
32
32
  }
33
33
 
34
+ export function subagentRunQueueJobId(runId: string): string {
35
+ return `agt_child_job_${runId}`
36
+ }
37
+
34
38
  /** Stable queue identity shared by workflow dispatch and agent reconciliation. */
35
39
  export function workflowAgentNodeQueueJobId(nodeRunId: string): string {
36
40
  return `wfa_job_${nodeRunId}`
@@ -55,13 +59,14 @@ export async function dispatchQueuedAgentRuns(
55
59
  : (
56
60
  await input.storage.runs.list({
57
61
  projectId: input.projectId,
62
+ kinds: ["conversation"],
58
63
  statuses: ["queued"],
59
64
  order: "asc",
60
65
  limit,
61
66
  })
62
67
  ).runs
63
68
 
64
- const queued = runs.filter((run) => run.status === "queued")
69
+ const queued = runs.filter((run) => run.kind === "conversation" && run.status === "queued")
65
70
  if (queued.length === 0) {
66
71
  return { scanned: 0, dispatched: [], failures: [] }
67
72
  }
@@ -93,6 +98,58 @@ export async function dispatchQueuedAgentRuns(
93
98
  }
94
99
  }
95
100
 
101
+ export async function dispatchQueuedSubagentRuns(input: {
102
+ readonly projectId: string
103
+ readonly storage: AgentStorage
104
+ readonly queue: Queue<SubagentQueueJob>
105
+ readonly runIds?: readonly string[]
106
+ readonly limit?: number
107
+ }): Promise<DispatchQueuedAgentRunsResult> {
108
+ const limit = normalizeLimit(input.limit)
109
+ const runs = input.runIds
110
+ ? await input.storage.runs.getByIds({
111
+ projectId: input.projectId,
112
+ ids: [...new Set(input.runIds)].slice(0, limit),
113
+ })
114
+ : (
115
+ await input.storage.runs.list({
116
+ projectId: input.projectId,
117
+ kinds: ["subagent"],
118
+ statuses: ["queued"],
119
+ order: "asc",
120
+ limit,
121
+ })
122
+ ).runs
123
+ const queued = runs.filter((run) => run.kind === "subagent" && run.status === "queued")
124
+ if (queued.length === 0) return { scanned: 0, dispatched: [], failures: [] }
125
+
126
+ try {
127
+ const jobs = await input.queue.enqueue({
128
+ projectId: input.projectId,
129
+ jobs: queued.map((run) => ({
130
+ id: subagentRunQueueJobId(run.id),
131
+ type: "agent.subagent-run.requested" as const,
132
+ payload: { runId: run.id },
133
+ })),
134
+ })
135
+ const jobsById = new Set(jobs.map((job) => job.id))
136
+ const dispatched = queued.map((run) => {
137
+ const jobId = subagentRunQueueJobId(run.id)
138
+ if (!jobsById.has(jobId)) {
139
+ throw new Error(`[Sixb] Subagent queue did not return job '${jobId}'.`)
140
+ }
141
+ return { runId: run.id, jobId }
142
+ })
143
+ return { scanned: queued.length, dispatched, failures: [] }
144
+ } catch (error) {
145
+ return {
146
+ scanned: queued.length,
147
+ dispatched: [],
148
+ failures: queued.map((run) => ({ runId: run.id, error })),
149
+ }
150
+ }
151
+ }
152
+
96
153
  function normalizeLimit(value: number | undefined): number {
97
154
  if (value === undefined) return 100
98
155
  if (!Number.isFinite(value) || value < 1) {
@@ -7,7 +7,7 @@ export class AgentDefinitionError extends Error {
7
7
  }
8
8
 
9
9
  /**
10
- * Raised by the message adapters. `fromAiSdk` is **total**: rather than silently dropping a part it
10
+ * Raised by the message adapters. `fromUiMessage` is **total**: rather than silently dropping a part it
11
11
  * cannot model, it throws this — which both prevents data loss and pinpoints exactly when the
12
12
  * {@link AgentMessage} part union must be extended. It also fires on transient/streaming parts that
13
13
  * must never be persisted, and on out-of-contract (non-JSON) payloads.
@@ -39,12 +39,15 @@ export class AgentToolResultValidationError extends Error {
39
39
  }
40
40
 
41
41
  export type AgentRequestErrorCode =
42
+ | "agent_selector_removed"
42
43
  | "agent_not_found"
44
+ | "model_not_found"
45
+ | "invalid_model_selection"
43
46
  | "run_not_found"
44
47
  | "run_not_retryable"
45
48
  | "thread_not_found"
46
- | "thread_agent_mismatch"
47
49
  | "active_run_exists"
50
+ | "authority_not_inheritable"
48
51
  | "invalid_context"
49
52
  | "storage_unavailable"
50
53