@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
@@ -0,0 +1,7 @@
1
+ import type { AgentReference } from "./types"
2
+
3
+ /** Project Agent capability used in security grants such as `can.run(agent)`. */
4
+ export const agent: AgentReference = Object.freeze({
5
+ kind: "agent",
6
+ usage: Object.freeze({ kind: "aiUsage" }),
7
+ })
@@ -4,30 +4,40 @@ import { SYSTEM_PRINCIPAL } from "../auth"
4
4
  import { snapshotRequesterGroupIds } from "../auth/attribution"
5
5
  import { assertAuthorized } from "../authorization"
6
6
  import type { FileRef } from "../blob-storage"
7
- import { createAgentExecutionRecord } from "../execution/agent"
7
+ import {
8
+ canInheritAgentRequestAuthorization,
9
+ createInheritedAgentExecutionRecord,
10
+ } from "../execution/agent"
8
11
  import { ensureExecutionRecord, executionRecordInputFromRuntime } from "../execution/durable"
9
12
  import type { ExecutionContext } from "../execution/types"
13
+ import type { LanguageModelCatalog, LanguageModelRef } from "../models"
14
+ import { isModelReasoning } from "../models/language-model"
10
15
  import type { SixbRuntimeContext } from "../runtime/types"
11
- import type { SecurityDefinitionCatalog } from "../security"
12
16
  import {
13
- type AgentRunRecord,
14
17
  type AgentStorage,
15
18
  AgentStorageError,
16
19
  type AgentThreadRecord,
20
+ type ConversationAgentRunRecord,
21
+ type ConversationAgentRunSpec,
17
22
  } from "../storage/agents"
23
+ import {
24
+ aiLimitSubjectsFromAttribution,
25
+ aiUsageLimitExceededError,
26
+ aiUsageLimitUnavailableError,
27
+ applicableAiLimitPolicyStatuses,
28
+ } from "../storage/ai-limits/enforcement"
29
+ import type { AiLimitPolicyStatus } from "../storage/ai-limits/types"
18
30
  import type { CreateExecutionInput } from "../storage/executions"
19
- import { ensureAgentExecutionIdentity, resolveAgentExecutionAuthorization } from "./authority"
20
31
  import type { AgentContextEntryInput } from "./context"
21
32
  import { resolveAgentContextParts } from "./context-resolution"
22
33
  import { dispatchQueuedAgentRuns } from "./dispatch"
23
34
  import { AgentRequestError } from "./errors"
24
35
  import { createAgentMessageId, createAgentRunId, createAgentThreadId } from "./ids"
36
+ import { assertNoAgentSelector } from "./retired-config"
25
37
  import { publishAgentRunActivity } from "./streams"
26
- import type { AgentDefinition } from "./types"
38
+ import { AGENT_REASONING_LEVELS, type AgentReasoningLevel } from "./types"
27
39
 
28
40
  export interface RequestAgentRunInput {
29
- /** The agent to run. */
30
- readonly agentId: string
31
41
  /** The user's message that triggers the turn. */
32
42
  readonly text: string
33
43
  /** Blob-backed files attached to the trigger message. */
@@ -36,6 +46,10 @@ export interface RequestAgentRunInput {
36
46
  readonly context?: readonly AgentContextEntryInput[]
37
47
  /** Continue an existing thread. Omitted → a fresh thread is created for this agent. */
38
48
  readonly threadId?: string
49
+ /** Configured language model selected for this turn. Omitted uses the agent default. */
50
+ readonly model?: LanguageModelRef
51
+ /** Provider-neutral reasoning effort selected for this turn. */
52
+ readonly reasoning?: AgentReasoningLevel
39
53
  /** Title to stamp on the thread when one is created. */
40
54
  readonly title?: string
41
55
  /** Explicit id for the trigger (user) message. Defaults to a generated id. */
@@ -46,7 +60,7 @@ export interface RequestAgentRunInput {
46
60
 
47
61
  export interface RequestAgentRunResult {
48
62
  /** The durable queued run exactly as it was created (`status: "queued"`, attempt 0). */
49
- readonly run: AgentRunRecord
63
+ readonly run: ConversationAgentRunRecord
50
64
  /** The enqueued job id, when the queue returns one. */
51
65
  readonly jobId?: string
52
66
  /** Whether this call created the thread. */
@@ -64,11 +78,13 @@ export interface RequestAgentRunResult {
64
78
  export async function requestAgentRun(
65
79
  runtime: SixbRuntimeContext,
66
80
  execution: ExecutionContext,
67
- security: SecurityDefinitionCatalog,
68
- agent: AgentDefinition,
81
+ models: LanguageModelCatalog | undefined,
69
82
  input: RequestAgentRunInput
70
83
  ): Promise<RequestAgentRunResult> {
71
- assertAuthorized(runtime, { kind: "agent.run", agentId: agent.id })
84
+ assertNoAgentSelector(input)
85
+ assertAuthorized(runtime, { kind: "agent.run" })
86
+ assertRequestAuthorityCanRunAgent(runtime)
87
+ const spec = resolveConversationRunSpec({ models, input })
72
88
 
73
89
  // Resolve context before creating a thread: invalid or inaccessible references must not leave an
74
90
  // empty conversation behind. The resulting parts are the exact snapshot persisted below.
@@ -79,9 +95,19 @@ export async function requestAgentRun(
79
95
  // A scoped runtime is authoritative for caller identity. `input.principal` remains available to
80
96
  // privileged server integrations that have already authenticated their request.
81
97
  const principal = runtime.authorization?.principal ?? input.principal ?? SYSTEM_PRINCIPAL
98
+ const runId = createAgentRunId()
99
+ const durableExecution = await prepareDurableAgentExecution(runtime, execution, runId)
100
+ const requesterGroupIds = durableExecution.requestedBy
101
+ ? await snapshotRequesterGroupIds({
102
+ auth: runtime.storage.auth,
103
+ projectId,
104
+ principal: durableExecution.requestedBy,
105
+ })
106
+ : []
107
+ await assertAiLimitPreflight(runtime, durableExecution, requesterGroupIds)
108
+
82
109
  const { thread, createdThread } = await resolveThread(agents, {
83
110
  projectId,
84
- agentId: agent.id,
85
111
  threadId: input.threadId,
86
112
  title: input.title,
87
113
  principal,
@@ -94,24 +120,8 @@ export async function requestAgentRun(
94
120
  `[Sixb] Agent thread '${thread.id}' already has an active run '${thread.activeRunId}'.`
95
121
  )
96
122
  }
97
-
98
- const runId = createAgentRunId()
99
- const durableExecution = await prepareDurableAgentExecution(
100
- runtime,
101
- execution,
102
- security,
103
- agent,
104
- runId
105
- )
106
- const requesterGroupIds = durableExecution.requestedBy
107
- ? await snapshotRequesterGroupIds({
108
- auth: runtime.storage.auth,
109
- projectId,
110
- principal: durableExecution.requestedBy,
111
- })
112
- : []
113
123
  const triggerMessageId = input.messageId ?? createAgentMessageId()
114
- let run: AgentRunRecord
124
+ let run: ConversationAgentRunRecord
115
125
  try {
116
126
  run = await runtime.storage.transaction(async (tx) => {
117
127
  const agents = tx.agents
@@ -140,8 +150,8 @@ export async function requestAgentRun(
140
150
  projectId,
141
151
  executionId: durableExecution.id,
142
152
  threadId: thread.id,
143
- agentId: agent.id,
144
153
  triggerMessageId,
154
+ spec,
145
155
  requesterGroupIds,
146
156
  })
147
157
  })
@@ -166,17 +176,11 @@ export async function requestAgentRun(
166
176
  export async function retryAgentRun(
167
177
  runtime: SixbRuntimeContext,
168
178
  execution: ExecutionContext,
169
- security: SecurityDefinitionCatalog,
170
- agent: AgentDefinition,
171
- failedRun: AgentRunRecord
179
+ models: LanguageModelCatalog | undefined,
180
+ failedRun: ConversationAgentRunRecord
172
181
  ): Promise<RequestAgentRunResult> {
173
- assertAuthorized(runtime, { kind: "agent.run", agentId: agent.id })
174
- if (failedRun.agentId !== agent.id) {
175
- throw new AgentRequestError(
176
- "agent_not_found",
177
- `[Sixb] Agent run '${failedRun.id}' does not belong to agent '${agent.id}'.`
178
- )
179
- }
182
+ assertAuthorized(runtime, { kind: "agent.run" })
183
+ assertRequestAuthorityCanRunAgent(runtime)
180
184
  if (failedRun.status !== "failed") {
181
185
  throw new AgentRequestError(
182
186
  "run_not_retryable",
@@ -185,14 +189,18 @@ export async function retryAgentRun(
185
189
  }
186
190
 
187
191
  const agents = requireAgentStorage(runtime)
192
+ const thread = await agents.threads.getById({
193
+ projectId: runtime.projectId,
194
+ id: failedRun.threadId,
195
+ })
196
+ if (!thread) {
197
+ throw new AgentRequestError(
198
+ "thread_not_found",
199
+ `[Sixb] Agent thread '${failedRun.threadId}' was not found.`
200
+ )
201
+ }
188
202
  const runId = createAgentRunId()
189
- const durableExecution = await prepareDurableAgentExecution(
190
- runtime,
191
- execution,
192
- security,
193
- agent,
194
- runId
195
- )
203
+ const durableExecution = await prepareDurableAgentExecution(runtime, execution, runId)
196
204
  const requesterGroupIds = durableExecution.requestedBy
197
205
  ? await snapshotRequesterGroupIds({
198
206
  auth: runtime.storage.auth,
@@ -200,6 +208,7 @@ export async function retryAgentRun(
200
208
  principal: durableExecution.requestedBy,
201
209
  })
202
210
  : []
211
+ await assertAiLimitPreflight(runtime, durableExecution, requesterGroupIds)
203
212
  const run = await runtime.storage.transaction(async (tx) => {
204
213
  const agents = tx.agents
205
214
  if (!agents) {
@@ -216,8 +225,13 @@ export async function retryAgentRun(
216
225
  projectId: runtime.projectId,
217
226
  executionId: durableExecution.id,
218
227
  threadId: failedRun.threadId,
219
- agentId: agent.id,
220
228
  triggerMessageId: failedRun.triggerMessageId,
229
+ spec:
230
+ failedRun.spec ??
231
+ resolveConversationRunSpec({
232
+ models,
233
+ input: {},
234
+ }),
221
235
  requesterGroupIds,
222
236
  })
223
237
  })
@@ -226,25 +240,76 @@ export async function retryAgentRun(
226
240
  return { run, ...(jobId ? { jobId } : {}), createdThread: false }
227
241
  }
228
242
 
243
+ async function assertAiLimitPreflight(
244
+ runtime: SixbRuntimeContext,
245
+ execution: CreateExecutionInput,
246
+ requesterGroupIds: readonly string[]
247
+ ): Promise<void> {
248
+ const limits = runtime.storage.aiLimits
249
+ if (!limits) throw aiUsageLimitUnavailableError(["limitStorageUnavailable"])
250
+
251
+ const subjects = aiLimitSubjectsFromAttribution(execution.requestedBy, requesterGroupIds)
252
+ let applicable: readonly AiLimitPolicyStatus[]
253
+ try {
254
+ applicable = applicableAiLimitPolicyStatuses(
255
+ await limits.listPolicyStatuses({ projectId: runtime.projectId }),
256
+ subjects
257
+ )
258
+ } catch {
259
+ throw aiUsageLimitUnavailableError(["limitStorageUnavailable"])
260
+ }
261
+
262
+ const unavailable = applicable.filter((status) => status.accountingStatus === "unavailable")
263
+ if (unavailable.length > 0) {
264
+ throw aiUsageLimitUnavailableError(["incompleteAccounting"])
265
+ }
266
+ const exhausted = applicable.filter((status) => status.exhausted)
267
+ if (exhausted.length > 0) {
268
+ const resetAt = new Date(
269
+ Math.min(...exhausted.map((status) => status.period.resetAt.getTime()))
270
+ )
271
+ throw aiUsageLimitExceededError(resetAt)
272
+ }
273
+ }
274
+
275
+ function resolveConversationRunSpec(input: {
276
+ readonly models?: LanguageModelCatalog
277
+ readonly input: Pick<RequestAgentRunInput, "model" | "reasoning">
278
+ }): ConversationAgentRunSpec {
279
+ if (!input.models) {
280
+ throw new AgentRequestError(
281
+ "model_not_found",
282
+ "[Sixb] Configure models.language before starting the Agent."
283
+ )
284
+ }
285
+ const selected = input.input.model ?? input.models.default
286
+ const model = input.models.getByRef(selected)
287
+ if (model === null) {
288
+ throw new AgentRequestError(
289
+ "model_not_found",
290
+ `[Sixb] Language model '${selected.provider}/${selected.modelId}' is not in the project model catalog.`
291
+ )
292
+ }
293
+
294
+ const reasoning = input.input.reasoning
295
+ if (reasoning !== undefined && !isModelReasoning(reasoning)) {
296
+ throw new AgentRequestError(
297
+ "invalid_model_selection",
298
+ `[Sixb] Agent reasoning must be one of: ${AGENT_REASONING_LEVELS.join(", ")}, or a nonnegative budgetTokens object.`
299
+ )
300
+ }
301
+
302
+ return Object.freeze({
303
+ model: Object.freeze({ provider: selected.provider, modelId: selected.modelId }),
304
+ ...(reasoning === undefined ? {} : { reasoning }),
305
+ })
306
+ }
307
+
229
308
  async function prepareDurableAgentExecution(
230
309
  runtime: SixbRuntimeContext,
231
310
  execution: ExecutionContext,
232
- security: SecurityDefinitionCatalog,
233
- agent: AgentDefinition,
234
311
  runId: string
235
312
  ): Promise<CreateExecutionInput> {
236
- const identity = await ensureAgentExecutionIdentity({
237
- auth: runtime.storage.auth,
238
- projectId: runtime.projectId,
239
- agent,
240
- })
241
- const resolved = await resolveAgentExecutionAuthorization({
242
- auth: runtime.storage.auth,
243
- projectId: runtime.projectId,
244
- agentId: agent.id,
245
- authorizationRef: { type: "principal", principal: identity.principal },
246
- security,
247
- })
248
313
  const parent = await ensureExecutionRecord(
249
314
  runtime.storage.executions,
250
315
  executionRecordInputFromRuntime({
@@ -252,15 +317,22 @@ async function prepareDurableAgentExecution(
252
317
  runtimeAuthorization: runtime.runtimeAuthorization,
253
318
  })
254
319
  )
255
- return createAgentExecutionRecord({
320
+ return createInheritedAgentExecutionRecord({
256
321
  id: `exec_${randomUUID()}`,
257
322
  parent,
258
- agentId: agent.id,
259
323
  runId,
260
- principal: resolved.identity.principal,
261
324
  })
262
325
  }
263
326
 
327
+ function assertRequestAuthorityCanRunAgent(runtime: SixbRuntimeContext): void {
328
+ if (!canInheritAgentRequestAuthorization(runtime.runtimeAuthorization)) {
329
+ throw new AgentRequestError(
330
+ "authority_not_inheritable",
331
+ "[Sixb] The Agent requires an authenticated user request or disabled authorization."
332
+ )
333
+ }
334
+ }
335
+
264
336
  async function dispatchAgentRun(
265
337
  runtime: SixbRuntimeContext,
266
338
  agents: AgentStorage,
@@ -290,7 +362,10 @@ async function dispatchAgentRun(
290
362
  }
291
363
 
292
364
  /** Activity delivery is observational: durable run admission remains successful if the feed is down. */
293
- async function publishRunActivity(runtime: SixbRuntimeContext, run: AgentRunRecord): Promise<void> {
365
+ async function publishRunActivity(
366
+ runtime: SixbRuntimeContext,
367
+ run: ConversationAgentRunRecord
368
+ ): Promise<void> {
294
369
  try {
295
370
  await publishAgentRunActivity(runtime.broker, run)
296
371
  } catch (error) {
@@ -302,7 +377,6 @@ async function resolveThread(
302
377
  agents: AgentStorage,
303
378
  params: {
304
379
  readonly projectId: string
305
- readonly agentId: string
306
380
  readonly threadId?: string
307
381
  readonly title?: string
308
382
  readonly principal: Principal
@@ -314,12 +388,6 @@ async function resolveThread(
314
388
  id: params.threadId,
315
389
  })
316
390
  if (existing) {
317
- if (existing.agentId !== params.agentId) {
318
- throw new AgentRequestError(
319
- "thread_agent_mismatch",
320
- `[Sixb] Agent thread '${existing.id}' belongs to agent '${existing.agentId}', not '${params.agentId}'.`
321
- )
322
- }
323
391
  return { thread: existing, createdThread: false }
324
392
  }
325
393
  }
@@ -327,7 +395,6 @@ async function resolveThread(
327
395
  const thread = await agents.threads.create({
328
396
  id: params.threadId ?? createAgentThreadId(),
329
397
  projectId: params.projectId,
330
- agentId: params.agentId,
331
398
  ownerPrincipal: params.principal,
332
399
  ...(params.title === undefined ? {} : { title: params.title }),
333
400
  })
@@ -0,0 +1,20 @@
1
+ import { RuntimeError } from "../runtime/errors"
2
+ import { AgentRequestError } from "./errors"
3
+
4
+ /** Reject JavaScript callers too: old configuration must not silently change authority. */
5
+ export function assertNoAgentDefinitions(input: object): void {
6
+ if ("agents" in input) {
7
+ throw new RuntimeError(
8
+ "[Sixb] Agent definitions are no longer supported. Configure 'models' and 'tools' on createSixb() instead."
9
+ )
10
+ }
11
+ }
12
+
13
+ export function assertNoAgentSelector(input: object): void {
14
+ if ("agentId" in input || "agentIds" in input) {
15
+ throw new AgentRequestError(
16
+ "agent_selector_removed",
17
+ "[Sixb] There is one project Agent. Remove the agentId selector and use sixb.agent."
18
+ )
19
+ }
20
+ }
@@ -7,6 +7,7 @@ import {
7
7
  type AgentContextCheckpointReason,
8
8
  type AgentRunFailureCode,
9
9
  type AgentRunRecord,
10
+ type ConversationAgentRunRecord,
10
11
  } from "../storage/agents/types"
11
12
 
12
13
  export const AGENT_RUN_STREAM_SCHEMA_VERSION = 1 as const
@@ -28,7 +29,6 @@ export interface AgentRunActivityEvent {
28
29
  readonly projectId: string
29
30
  readonly runId: string
30
31
  readonly threadId: string
31
- readonly agentId: string
32
32
  readonly status: AgentRunRecord["status"]
33
33
  readonly attempt: number
34
34
  readonly occurredAt: string
@@ -42,7 +42,7 @@ export function agentActivityStreamDefinition(): BrokerStreamDefinition {
42
42
  }
43
43
 
44
44
  export function agentRunActivityEvent(
45
- run: AgentRunRecord,
45
+ run: ConversationAgentRunRecord,
46
46
  occurredAt: Date = new Date()
47
47
  ): AgentRunActivityEvent {
48
48
  return {
@@ -51,7 +51,6 @@ export function agentRunActivityEvent(
51
51
  projectId: run.projectId,
52
52
  runId: run.id,
53
53
  threadId: run.threadId,
54
- agentId: run.agentId,
55
54
  status: run.status,
56
55
  attempt: run.attempt,
57
56
  occurredAt: occurredAt.toISOString(),
@@ -66,7 +65,6 @@ export function isAgentRunActivityEvent(value: unknown): value is AgentRunActivi
66
65
  typeof value.projectId === "string" &&
67
66
  typeof value.runId === "string" &&
68
67
  typeof value.threadId === "string" &&
69
- typeof value.agentId === "string" &&
70
68
  isAgentRunStatus(value.status) &&
71
69
  typeof value.attempt === "number" &&
72
70
  Number.isFinite(value.attempt) &&
@@ -74,7 +72,10 @@ export function isAgentRunActivityEvent(value: unknown): value is AgentRunActivi
74
72
  )
75
73
  }
76
74
 
77
- export async function publishAgentRunActivity(broker: Broker, run: AgentRunRecord): Promise<void> {
75
+ export async function publishAgentRunActivity(
76
+ broker: Broker,
77
+ run: ConversationAgentRunRecord
78
+ ): Promise<void> {
78
79
  const event = agentRunActivityEvent(run)
79
80
  await broker.ensureStream({
80
81
  projectId: run.projectId,
@@ -108,15 +109,22 @@ export function agentRunStreamDefinition(runId: string): BrokerStreamDefinition
108
109
  }
109
110
  }
110
111
 
111
- interface AgentRunStreamEventBase {
112
+ type AgentRunStreamEventBase = {
112
113
  readonly schemaVersion: typeof AGENT_RUN_STREAM_SCHEMA_VERSION
113
114
  readonly projectId: string
114
115
  readonly runId: string
115
- readonly threadId: string
116
- readonly agentId: string
117
116
  readonly attempt: number
118
117
  readonly occurredAt: string
119
- }
118
+ } & (
119
+ | {
120
+ readonly threadId: string
121
+ readonly parentRunId?: never
122
+ }
123
+ | {
124
+ readonly parentRunId: string
125
+ readonly threadId?: never
126
+ }
127
+ )
120
128
 
121
129
  // ── Control stream (worker-inbound) ─────────────────────────────────────────────────────────────
122
130
  //
@@ -157,7 +165,12 @@ export async function publishAgentRunCancel(
157
165
  projectId: params.projectId,
158
166
  streamId: agentRunControlStreamId(params.runId),
159
167
  records: [
160
- { name: AGENT_RUN_CANCEL_RECORD, key: params.runId, payload: { runId: params.runId } },
168
+ {
169
+ name: AGENT_RUN_CANCEL_RECORD,
170
+ key: params.runId,
171
+ payload: { runId: params.runId },
172
+ idempotencyKey: `${params.runId}:cancel`,
173
+ },
161
174
  ],
162
175
  })
163
176
  }
@@ -254,18 +267,29 @@ export function agentRunFinishedEvent(
254
267
  )
255
268
  }
256
269
  return {
257
- schemaVersion: AGENT_RUN_STREAM_SCHEMA_VERSION,
270
+ ...agentRunStreamEventBase(run, occurredAt),
258
271
  type: "agent.run.finished",
259
- projectId: run.projectId,
260
- runId: run.id,
261
- threadId: run.threadId,
262
- agentId: run.agentId,
263
- attempt: run.attempt,
264
272
  status: run.status,
265
273
  ...(run.finishReason === undefined ? {} : { finishReason: run.finishReason }),
266
274
  ...(run.error === undefined ? {} : { error: run.error }),
275
+ }
276
+ }
277
+
278
+ /** Shared lineage for stream records emitted by conversational and headless runs. */
279
+ export function agentRunStreamEventBase(
280
+ run: AgentRunRecord,
281
+ occurredAt: Date = new Date()
282
+ ): AgentRunStreamEventBase {
283
+ const common = {
284
+ schemaVersion: AGENT_RUN_STREAM_SCHEMA_VERSION,
285
+ projectId: run.projectId,
286
+ runId: run.id,
287
+ attempt: run.attempt,
267
288
  occurredAt: occurredAt.toISOString(),
268
289
  }
290
+ return run.kind === "conversation"
291
+ ? { ...common, threadId: run.threadId }
292
+ : { ...common, parentRunId: run.parentRunId }
269
293
  }
270
294
 
271
295
  /** Validate an Agent stream payload using the same contract its producers use. */
@@ -275,8 +299,6 @@ export function isAgentRunStreamEvent(value: unknown): value is AgentRunStreamEv
275
299
  value.schemaVersion !== AGENT_RUN_STREAM_SCHEMA_VERSION ||
276
300
  typeof value.projectId !== "string" ||
277
301
  typeof value.runId !== "string" ||
278
- typeof value.threadId !== "string" ||
279
- typeof value.agentId !== "string" ||
280
302
  typeof value.attempt !== "number" ||
281
303
  !Number.isFinite(value.attempt) ||
282
304
  typeof value.occurredAt !== "string" ||
@@ -284,6 +306,10 @@ export function isAgentRunStreamEvent(value: unknown): value is AgentRunStreamEv
284
306
  ) {
285
307
  return false
286
308
  }
309
+ const hasConversationLineage =
310
+ typeof value.threadId === "string" && value.parentRunId === undefined
311
+ const hasSubagentLineage = typeof value.parentRunId === "string" && value.threadId === undefined
312
+ if (!hasConversationLineage && !hasSubagentLineage) return false
287
313
 
288
314
  switch (value.type) {
289
315
  case "agent.run.started":
@@ -393,5 +419,5 @@ export async function publishAgentRunFinished(broker: Broker, run: AgentRunRecor
393
419
  },
394
420
  ],
395
421
  })
396
- await publishAgentRunActivity(broker, run)
422
+ if (run.kind === "conversation") await publishAgentRunActivity(broker, run)
397
423
  }
@@ -0,0 +1,21 @@
1
+ import { toolsFromProjectConfig } from "./tool-definition"
2
+ import type { AgentToolDefinition } from "./types"
3
+
4
+ /** Immutable catalog of project tools registered with a Sixb host. */
5
+ export interface AgentToolCatalog {
6
+ list(): readonly AgentToolDefinition[]
7
+ getByName(name: string): AgentToolDefinition | null
8
+ }
9
+
10
+ /** Validate, normalize, and index the tools supplied through `createSixb({ tools })`. */
11
+ export function createAgentToolCatalog(
12
+ definitions: readonly AgentToolDefinition[] | undefined
13
+ ): AgentToolCatalog {
14
+ const tools = toolsFromProjectConfig(definitions)
15
+ const toolsByName = new Map(tools.map((tool) => [tool.name, tool]))
16
+
17
+ return Object.freeze({
18
+ list: () => tools,
19
+ getByName: (name: string) => toolsByName.get(name) ?? null,
20
+ })
21
+ }
@@ -16,6 +16,7 @@ import {
16
16
  assertValidAgentToolDefinitions,
17
17
  assertValidAgentToolDescription,
18
18
  assertValidAgentToolName,
19
+ assertValidProjectAgentToolDefinitions,
19
20
  validateAndSnapshotAgentToolInput,
20
21
  } from "./validation"
21
22
 
@@ -87,6 +88,28 @@ export function toolsFromDefinitions(
87
88
 
88
89
  assertValidAgentToolDefinitions(agentId, tools)
89
90
 
91
+ return normalizeAgentToolDefinitions(tools)
92
+ }
93
+
94
+ export function toolsFromProjectConfig(
95
+ tools: readonly AgentToolDefinition[] | undefined
96
+ ): readonly AgentToolDefinition[] {
97
+ if (tools === undefined) {
98
+ return EMPTY_AGENT_TOOLS
99
+ }
100
+ if (!Array.isArray(tools)) {
101
+ throw new AgentDefinitionError(
102
+ "[Sixb] Project tools must be an array of agent tool definitions."
103
+ )
104
+ }
105
+
106
+ assertValidProjectAgentToolDefinitions(tools)
107
+ return normalizeAgentToolDefinitions(tools)
108
+ }
109
+
110
+ function normalizeAgentToolDefinitions(
111
+ tools: readonly AgentToolDefinition[]
112
+ ): readonly AgentToolDefinition[] {
90
113
  const normalized: AgentToolDefinition[] = []
91
114
  for (const tool of tools) {
92
115
  normalized.push(normalizeAgentToolDefinition(tool))