@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,11 +1,10 @@
1
- import type { LanguageModelV4, LanguageModelV4CallOptions } from "@ai-sdk/provider"
2
1
  import type { BlobBody, FileRef } from "../blob-storage"
3
2
  import type { ConnectorRuntime } from "../connectors"
4
3
  import type { JsonPrimitive, JsonValue, ReadonlyJsonValue } from "../json"
5
4
  import type { Logger } from "../logging"
5
+ import { type LanguageModelRef, MODEL_REASONING_LEVELS, type ModelReasoning } from "../models"
6
6
  import type { InferSchema } from "../ontology/inference"
7
7
  import type { Schema } from "../ontology/types"
8
- import type { GroupDefinition } from "../security"
9
8
 
10
9
  export type {
11
10
  AgentContextEntryInput,
@@ -14,41 +13,30 @@ export type {
14
13
  AgentContextPart,
15
14
  } from "./context"
16
15
 
17
- export type AgentReasoningLevel = NonNullable<LanguageModelV4CallOptions["reasoning"]>
18
-
19
- export const AGENT_REASONING_LEVELS = [
20
- "provider-default",
21
- "none",
22
- "minimal",
23
- "low",
24
- "medium",
25
- "high",
26
- "xhigh",
27
- ] as const satisfies readonly AgentReasoningLevel[]
28
-
29
- export interface AgentContextConfig {
30
- /** Override the provider context-window size inferred by the agent worker. */
31
- readonly windowTokens?: number
32
- /** Tokens reserved for the next response and compaction work. */
33
- readonly reserveTokens?: number
34
- /** Approximate recent-message budget retained verbatim after compaction. */
35
- readonly keepRecentTokens?: number
16
+ /** Public capability reference used by security grants such as `can.run(agent)`. */
17
+ export interface AgentReference {
18
+ readonly kind: "agent"
19
+ readonly usage: AgentUsageReference
36
20
  }
37
21
 
38
- /**
39
- * Loop / stop controls for an agent run.
40
- *
41
- * Consumed by the agent worker when it executes a run.
42
- */
43
- export interface AgentLoopConfig {
44
- readonly stopWhen?: {
45
- readonly maxSteps?: number
46
- }
47
- readonly context?: AgentContextConfig
48
- /** Automatic provider prompt caching. Defaults to `auto`; use `off` to opt out. */
49
- readonly caching?: "auto" | "off"
22
+ /** Project-wide AI accounting and limit capability, independent of permission to run the Agent. */
23
+ export interface AgentUsageReference {
24
+ readonly kind: "aiUsage"
25
+ }
26
+
27
+ /** Public metadata for the project's conversational Agent. */
28
+ export interface AgentDescriptor {
29
+ readonly name: string
30
+ readonly model: LanguageModelRef
50
31
  }
51
32
 
33
+ export type AgentReasoning = ModelReasoning
34
+
35
+ /** @deprecated Use {@link AgentReasoning}. */
36
+ export type AgentReasoningLevel = AgentReasoning
37
+
38
+ export const AGENT_REASONING_LEVELS = MODEL_REASONING_LEVELS
39
+
52
40
  type Simplify<T> = { [K in keyof T]: T[K] } & {}
53
41
  type JsonifyAgentToolInput<T> = unknown extends T
54
42
  ? ReadonlyJsonValue
@@ -73,12 +61,24 @@ export type InferAgentToolInputSchema<TInput extends AgentToolInputSchema> =
73
61
  readonly [K in keyof TInput]: JsonifyAgentToolInput<InferSchema<TInput[K]>>
74
62
  }>
75
63
 
76
- /** Identifies the agent execution that invoked a tool. */
77
- export interface AgentToolRunInfo {
78
- readonly id: string
79
- readonly agentId: string
80
- readonly threadId?: string
81
- }
64
+ /** Identifies the conversational, workflow, or child Agent execution that invoked a tool. */
65
+ export type AgentToolRunInfo =
66
+ | {
67
+ readonly kind: "conversation"
68
+ readonly id: string
69
+ readonly threadId: string
70
+ }
71
+ | {
72
+ readonly kind: "subagent"
73
+ readonly id: string
74
+ readonly parentRunId: string
75
+ }
76
+ | {
77
+ readonly kind: "workflow"
78
+ readonly id: string
79
+ readonly workflowId: string
80
+ readonly stepId: string
81
+ }
82
82
 
83
83
  /** Input accepted by the run-scoped artifact publisher exposed to agent tools. */
84
84
  export interface AgentToolArtifactPutInput {
@@ -183,45 +183,3 @@ export interface AgentToolInputBuilder<TName extends string> {
183
183
  export interface AgentToolDescriptionBuilder<TName extends string> {
184
184
  description(description: string): AgentToolInputBuilder<TName>
185
185
  }
186
-
187
- /**
188
- * Declarative config accepted by {@link defineAgent}.
189
- *
190
- * Every field is a static value. `instructions` is a plain string; widening it to
191
- * `string | (ctx) => string` later would be backwards-compatible.
192
- */
193
- export interface DefineAgentConfig {
194
- readonly name: string
195
- readonly description?: string
196
- readonly model: LanguageModelV4
197
- readonly reasoning?: AgentReasoningLevel
198
- readonly providerOptions?: LanguageModelV4CallOptions["providerOptions"]
199
- readonly instructions: string
200
- readonly groups?: readonly GroupDefinition[]
201
- /** Reusable tools this agent is explicitly allowed to call. */
202
- readonly tools?: readonly AgentToolDefinition[]
203
- readonly loop?: AgentLoopConfig
204
- }
205
-
206
- /**
207
- * Agent definition registered with Sixb.
208
- *
209
- * Definitions are safe to export from `agents/` modules; the runtime loads and
210
- * registers them. The agent worker runs them as streaming turns. The `model` is an
211
- * AI SDK language model instance and is therefore not serialisable — the worker
212
- * resolves a definition from its own discovery rather than over the wire.
213
- */
214
- export interface AgentDefinition<TId extends string = string> {
215
- readonly kind: "agent"
216
- readonly id: TId
217
- readonly name: string
218
- readonly description?: string
219
- readonly model: LanguageModelV4
220
- readonly reasoning?: AgentReasoningLevel
221
- readonly providerOptions?: LanguageModelV4CallOptions["providerOptions"]
222
- readonly instructions: string
223
- readonly groupIds: readonly string[]
224
- /** Selected tool definitions, normalized to an empty array when omitted. */
225
- readonly tools: readonly AgentToolDefinition[]
226
- readonly loop?: AgentLoopConfig
227
- }
@@ -6,18 +6,9 @@ import {
6
6
  type ValueType,
7
7
  validateSchemaValue,
8
8
  } from "../ontology"
9
- import type { GroupDefinition, SecurityDefinitionCatalog } from "../security"
9
+ import type { GroupDefinition } from "../security"
10
10
  import { AgentDefinitionError } from "./errors"
11
- import {
12
- AGENT_REASONING_LEVELS,
13
- type AgentContextConfig,
14
- type AgentDefinition,
15
- type AgentLoopConfig,
16
- type AgentReasoningLevel,
17
- type AgentToolDefinition,
18
- type AgentToolInputSchema,
19
- type DefineAgentConfig,
20
- } from "./types"
11
+ import type { AgentToolDefinition, AgentToolInputSchema } from "./types"
21
12
 
22
13
  const AGENT_TOOL_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_-]{0,63}$/
23
14
  const AGENT_TOOL_PRIMITIVE_SCHEMAS = new Set([
@@ -32,7 +23,13 @@ const AGENT_TOOL_PRIMITIVE_SCHEMAS = new Set([
32
23
  "fileRef",
33
24
  ])
34
25
 
35
- export const AGENT_RESERVED_TOOL_NAMES = ["bash", "read", "view_file"] as const
26
+ export const AGENT_RESERVED_TOOL_NAMES = [
27
+ "bash",
28
+ "read",
29
+ "view_file",
30
+ "spawn_agent",
31
+ "wait_agent",
32
+ ] as const
36
33
 
37
34
  export function assertNonEmpty(value: string, field: string): void {
38
35
  if (!value.trim()) {
@@ -40,20 +37,6 @@ export function assertNonEmpty(value: string, field: string): void {
40
37
  }
41
38
  }
42
39
 
43
- export function isAgentDefinition(value: unknown): value is AgentDefinition {
44
- return (
45
- isRecord(value) &&
46
- value.kind === "agent" &&
47
- typeof value.id === "string" &&
48
- typeof value.name === "string" &&
49
- typeof value.instructions === "string" &&
50
- (value.reasoning === undefined || isAgentReasoningLevel(value.reasoning)) &&
51
- (value.providerOptions === undefined || isProviderOptions(value.providerOptions)) &&
52
- Array.isArray(value.groupIds) &&
53
- isAgentToolDefinitionArray(value.tools)
54
- )
55
- }
56
-
57
40
  export function isAgentToolDefinition(value: unknown): value is AgentToolDefinition {
58
41
  return (
59
42
  isRecord(value) &&
@@ -143,108 +126,6 @@ export function validateAndNormalizeAgentToolInput(
143
126
  )
144
127
  }
145
128
 
146
- /** Revalidate and lock tool definitions supplied directly to the runtime. */
147
- export function validateAgentToolsAtStartup(agents: readonly AgentDefinition[]): void {
148
- for (const agent of agents) {
149
- if (!isAgentDefinition(agent)) {
150
- throw new AgentDefinitionError("[Sixb] Agents must contain only valid agent definitions.")
151
- }
152
-
153
- assertValidAgentToolDefinitions(agent.id, agent.tools)
154
- for (const tool of agent.tools) {
155
- deepFreeze(tool.input)
156
- Object.freeze(tool)
157
- }
158
- Object.freeze(agent.tools)
159
- Object.freeze(agent)
160
- }
161
- }
162
-
163
- export function resolveAgentLoopConfig(
164
- loop: AgentLoopConfig | undefined
165
- ): AgentLoopConfig | undefined {
166
- if (loop === undefined) return undefined
167
-
168
- const maxSteps = loop?.stopWhen?.maxSteps
169
- if (maxSteps !== undefined && (!Number.isSafeInteger(maxSteps) || maxSteps <= 0)) {
170
- throw new AgentDefinitionError(
171
- "[Sixb] Agent loop.stopWhen.maxSteps must be a positive safe integer."
172
- )
173
- }
174
- if (loop.caching !== undefined && loop.caching !== "auto" && loop.caching !== "off") {
175
- throw new AgentDefinitionError("[Sixb] Agent loop.caching must be 'auto' or 'off'.")
176
- }
177
-
178
- const context = loop.context ? snapshotAgentContextConfig(loop.context) : undefined
179
- return Object.freeze({
180
- ...(loop.stopWhen === undefined
181
- ? {}
182
- : { stopWhen: Object.freeze({ ...(maxSteps === undefined ? {} : { maxSteps }) }) }),
183
- ...(context === undefined ? {} : { context }),
184
- ...(loop.caching === undefined ? {} : { caching: loop.caching }),
185
- })
186
- }
187
-
188
- function snapshotAgentContextConfig(context: AgentContextConfig): AgentContextConfig {
189
- const snapshot: Record<string, number> = {}
190
- for (const field of ["windowTokens", "reserveTokens", "keepRecentTokens"] as const) {
191
- const value = context[field]
192
- if (value === undefined) continue
193
- assertPositiveSafeInteger(value, field)
194
- snapshot[field] = value
195
- }
196
-
197
- return Object.freeze(snapshot)
198
- }
199
-
200
- function assertPositiveSafeInteger(value: unknown, field: string): asserts value is number {
201
- if (typeof value !== "number" || !Number.isSafeInteger(value) || value <= 0) {
202
- throw new AgentDefinitionError(
203
- `[Sixb] Agent loop.context.${field} must be a positive safe integer.`
204
- )
205
- }
206
- }
207
-
208
- export function assertValidReasoningLevel(reasoning: AgentReasoningLevel | undefined): void {
209
- if (reasoning === undefined) {
210
- return
211
- }
212
- if (!isAgentReasoningLevel(reasoning)) {
213
- throw new AgentDefinitionError(
214
- `[Sixb] Agent reasoning must be one of: ${AGENT_REASONING_LEVELS.join(", ")}.`
215
- )
216
- }
217
- }
218
-
219
- export function assertValidProviderOptions(
220
- providerOptions: DefineAgentConfig["providerOptions"]
221
- ): void {
222
- if (providerOptions === undefined) {
223
- return
224
- }
225
-
226
- const reason = getInvalidJsonValueReason(providerOptions, "providerOptions")
227
- if (!isRecord(providerOptions) || reason) {
228
- throw new AgentDefinitionError(
229
- `[Sixb] Agent providerOptions must be a provider-keyed JSON object${reason ? `; ${reason}` : "."}`
230
- )
231
- }
232
-
233
- for (const [provider, options] of Object.entries(providerOptions)) {
234
- if (!provider.trim()) {
235
- throw new AgentDefinitionError(
236
- "[Sixb] Agent providerOptions provider names must not be empty."
237
- )
238
- }
239
- const optionsReason = getInvalidJsonValueReason(options, `providerOptions.${provider}`)
240
- if (!isRecord(options) || optionsReason) {
241
- throw new AgentDefinitionError(
242
- `[Sixb] Agent providerOptions.${provider} must be a JSON object${optionsReason ? `; ${optionsReason}` : "."}`
243
- )
244
- }
245
- }
246
- }
247
-
248
129
  export function groupIdsFromDefinitions(
249
130
  agentId: string,
250
131
  groups: readonly GroupDefinition[] | undefined
@@ -264,22 +145,6 @@ export function groupIdsFromDefinitions(
264
145
  return Object.freeze(groupIds)
265
146
  }
266
147
 
267
- export function validateAgentGroupReferences(
268
- agents: readonly AgentDefinition[],
269
- security: SecurityDefinitionCatalog
270
- ): void {
271
- for (const agent of agents) {
272
- assertNoDuplicateGroupIds(agent.id, agent.groupIds)
273
- for (const groupId of agent.groupIds) {
274
- if (!security.getGroupById(groupId)) {
275
- throw new AgentDefinitionError(
276
- `[Sixb] Agent '${agent.id}' groups references unknown group '${groupId}'. Add it to 'security/groups/' or pass it to createSixb({ groups }).`
277
- )
278
- }
279
- }
280
- }
281
- }
282
-
283
148
  function assertNoDuplicateGroupIds(agentId: string, groupIds: readonly string[]): void {
284
149
  const seen = new Set<string>()
285
150
  for (const groupId of groupIds) {
@@ -293,24 +158,6 @@ function assertNoDuplicateGroupIds(agentId: string, groupIds: readonly string[])
293
158
  }
294
159
  }
295
160
 
296
- function isAgentReasoningLevel(value: unknown): value is AgentReasoningLevel {
297
- return typeof value === "string" && (AGENT_REASONING_LEVELS as readonly string[]).includes(value)
298
- }
299
-
300
- function isProviderOptions(
301
- value: unknown
302
- ): value is NonNullable<DefineAgentConfig["providerOptions"]> {
303
- if (!isRecord(value) || getInvalidJsonValueReason(value) !== undefined) {
304
- return false
305
- }
306
- return Object.entries(value).every(
307
- ([provider, options]) =>
308
- provider.trim().length > 0 &&
309
- isRecord(options) &&
310
- getInvalidJsonValueReason(options) === undefined
311
- )
312
- }
313
-
314
161
  function assertValidAgentToolSchema(
315
162
  toolName: string,
316
163
  schema: unknown,
@@ -391,38 +238,45 @@ function invalidAgentToolSchema(toolName: string, path: string): AgentDefinition
391
238
  )
392
239
  }
393
240
 
394
- function isAgentToolDefinitionArray(value: unknown): value is readonly AgentToolDefinition[] {
395
- if (!Array.isArray(value)) {
396
- return false
397
- }
398
- for (let index = 0; index < value.length; index += 1) {
399
- if (!Object.hasOwn(value, index) || !isAgentToolDefinition(value[index])) {
400
- return false
401
- }
402
- }
403
- return true
404
- }
405
-
406
241
  export function assertValidAgentToolDefinitions(
407
242
  agentId: string,
408
243
  tools: readonly AgentToolDefinition[]
244
+ ): void {
245
+ assertValidAgentToolDefinitionList(tools, {
246
+ invalidDefinitions: `[Sixb] Agent '${agentId}' tools must contain only agent tool definitions.`,
247
+ duplicateName: (name) =>
248
+ `[Sixb] Agent '${agentId}' tools contains duplicate tool name '${name}'.`,
249
+ })
250
+ }
251
+
252
+ export function assertValidProjectAgentToolDefinitions(
253
+ tools: readonly AgentToolDefinition[]
254
+ ): void {
255
+ assertValidAgentToolDefinitionList(tools, {
256
+ invalidDefinitions: "[Sixb] Project tools must contain only agent tool definitions.",
257
+ duplicateName: (name) => `[Sixb] Project tools contain duplicate tool name '${name}'.`,
258
+ })
259
+ }
260
+
261
+ function assertValidAgentToolDefinitionList(
262
+ tools: readonly AgentToolDefinition[],
263
+ messages: {
264
+ readonly invalidDefinitions: string
265
+ readonly duplicateName: (name: string) => string
266
+ }
409
267
  ): void {
410
268
  const seen = new Set<string>()
411
269
  for (let index = 0; index < tools.length; index += 1) {
412
270
  const tool = tools[index]
413
271
  if (!Object.hasOwn(tools, index) || !isAgentToolDefinition(tool)) {
414
- throw new AgentDefinitionError(
415
- `[Sixb] Agent '${agentId}' tools must contain only agent tool definitions.`
416
- )
272
+ throw new AgentDefinitionError(messages.invalidDefinitions)
417
273
  }
418
274
 
419
275
  assertValidAgentToolName(tool.name)
420
276
  assertValidAgentToolDescription(tool.name, tool.description)
421
277
  assertValidAgentToolInput(tool.name, tool.input)
422
278
  if (seen.has(tool.name)) {
423
- throw new AgentDefinitionError(
424
- `[Sixb] Agent '${agentId}' tools contains duplicate tool name '${tool.name}'.`
425
- )
279
+ throw new AgentDefinitionError(messages.duplicateName(tool.name))
426
280
  }
427
281
  seen.add(tool.name)
428
282
  }
@@ -0,0 +1,196 @@
1
+ import { randomUUID } from "node:crypto"
2
+ import { assertAuthorized, assertRuntimeAuthorizationBound, isAllowed } from "../authorization"
3
+ import type { SixbRuntimeContext } from "../runtime/types"
4
+ import type { SecurityDefinitionCatalog } from "../security"
5
+ import type {
6
+ AiAccountingOverview,
7
+ AiLimitPolicy,
8
+ AiLimitPolicyStatus,
9
+ CreateAiLimitPolicyInput,
10
+ ListAiLimitPoliciesInput,
11
+ ListAiLimitPolicyStatusesInput,
12
+ ListAiModelCallAccountingInput,
13
+ ListAiModelCallAccountingResult,
14
+ ListAiModelCallGroupsInput,
15
+ ListAiModelCallGroupsResult,
16
+ QueryAiAccountingOverviewInput,
17
+ ServiceAccountStatus,
18
+ UpdateAiLimitPolicyInput,
19
+ UserStatus,
20
+ } from "../storage"
21
+
22
+ export type QueryAiUsageOverviewInput = Omit<QueryAiAccountingOverviewInput, "projectId">
23
+ export type ListAiUsageModelCallsInput = Omit<ListAiModelCallAccountingInput, "projectId">
24
+ export type ListAiUsageModelCallGroupsInput = Omit<ListAiModelCallGroupsInput, "projectId">
25
+ export type ListAiUsageLimitPoliciesInput = Omit<ListAiLimitPoliciesInput, "projectId">
26
+ export type ListAiUsageLimitStatusesInput = Omit<
27
+ ListAiLimitPolicyStatusesInput,
28
+ "projectId" | "existingGroupIds" | "at"
29
+ >
30
+ export type CreateAiUsageLimitPolicyInput = Omit<
31
+ CreateAiLimitPolicyInput,
32
+ "id" | "projectId" | "createdAt"
33
+ > & { readonly id?: string }
34
+ export type UpdateAiUsageLimitPolicyInput = Omit<
35
+ UpdateAiLimitPolicyInput,
36
+ "projectId" | "updatedAt"
37
+ >
38
+
39
+ export interface AiUsageLimitGroupOption {
40
+ readonly id: string
41
+ readonly label?: string
42
+ readonly description?: string
43
+ }
44
+
45
+ export interface AiUsageLimitUserOption {
46
+ readonly id: string
47
+ readonly email: string
48
+ readonly displayName?: string
49
+ readonly status: UserStatus
50
+ }
51
+
52
+ export interface AiUsageLimitServiceAccountOption {
53
+ readonly id: string
54
+ readonly name: string
55
+ readonly description?: string
56
+ readonly status: ServiceAccountStatus
57
+ }
58
+
59
+ export interface AiUsageLimitSubjectOptions {
60
+ readonly groups: readonly AiUsageLimitGroupOption[]
61
+ readonly users: readonly AiUsageLimitUserOption[]
62
+ readonly serviceAccounts: readonly AiUsageLimitServiceAccountOption[]
63
+ }
64
+
65
+ /** Project AI accounting and limit controls bound to one execution's authority. */
66
+ export interface AiUsageRuntime {
67
+ readonly accountingConfigured: boolean
68
+ readonly limitsConfigured: boolean
69
+ assertObservable(): void
70
+ assertManageable(): void
71
+ canManageLimits(): boolean
72
+ queryOverview(input: QueryAiUsageOverviewInput): Promise<AiAccountingOverview>
73
+ listModelCalls(input: ListAiUsageModelCallsInput): Promise<ListAiModelCallAccountingResult>
74
+ listModelCallGroups(input: ListAiUsageModelCallGroupsInput): Promise<ListAiModelCallGroupsResult>
75
+ listLimitPolicies(input?: ListAiUsageLimitPoliciesInput): Promise<readonly AiLimitPolicy[]>
76
+ listLimitStatuses(input?: ListAiUsageLimitStatusesInput): Promise<readonly AiLimitPolicyStatus[]>
77
+ listLimitSubjectOptions(): Promise<AiUsageLimitSubjectOptions>
78
+ createLimitPolicy(input: CreateAiUsageLimitPolicyInput): Promise<AiLimitPolicy>
79
+ updateLimitPolicy(input: UpdateAiUsageLimitPolicyInput): Promise<AiLimitPolicy>
80
+ deleteLimitPolicy(id: string): Promise<boolean>
81
+ }
82
+
83
+ export function createAiUsageRuntime(
84
+ runtime: SixbRuntimeContext,
85
+ security: SecurityDefinitionCatalog
86
+ ): AiUsageRuntime {
87
+ const assertObservable = () => assertAuthorized(runtime, { kind: "aiUsage.observe" })
88
+ const assertManageable = () => assertAuthorized(runtime, { kind: "aiUsage.manage" })
89
+ const assertPolicyReadable = () => {
90
+ const resolved = assertRuntimeAuthorizationBound(runtime)
91
+ if (
92
+ resolved.type === "principal" &&
93
+ !isAllowed(resolved.context, { kind: "aiUsage.observe" }) &&
94
+ !isAllowed(resolved.context, { kind: "aiUsage.manage" })
95
+ ) {
96
+ assertObservable()
97
+ }
98
+ }
99
+ const requireCosts = () => {
100
+ if (!runtime.storage.aiCosts) {
101
+ throw new Error("[Sixb] AI cost storage is not configured.")
102
+ }
103
+ return runtime.storage.aiCosts
104
+ }
105
+ const requireLimits = () => {
106
+ if (!runtime.storage.aiLimits) {
107
+ throw new Error("[Sixb] AI limit storage is not configured.")
108
+ }
109
+ return runtime.storage.aiLimits
110
+ }
111
+
112
+ return {
113
+ accountingConfigured: runtime.storage.aiCosts !== undefined,
114
+ limitsConfigured: runtime.storage.aiLimits !== undefined,
115
+ assertObservable,
116
+ assertManageable,
117
+ canManageLimits: () => {
118
+ const resolved = assertRuntimeAuthorizationBound(runtime)
119
+ return (
120
+ resolved.type !== "principal" || isAllowed(resolved.context, { kind: "aiUsage.manage" })
121
+ )
122
+ },
123
+ queryOverview: (input) => {
124
+ assertObservable()
125
+ return requireCosts().queryProjectOverview({ ...input, projectId: runtime.projectId })
126
+ },
127
+ listModelCalls: (input) => {
128
+ assertObservable()
129
+ return requireCosts().listModelCalls({ ...input, projectId: runtime.projectId })
130
+ },
131
+ listModelCallGroups: (input) => {
132
+ assertObservable()
133
+ return requireCosts().listModelCallGroups({ ...input, projectId: runtime.projectId })
134
+ },
135
+ listLimitPolicies: (input = {}) => {
136
+ assertPolicyReadable()
137
+ return requireLimits().listPolicies({ ...input, projectId: runtime.projectId })
138
+ },
139
+ listLimitStatuses: (input = {}) => {
140
+ assertObservable()
141
+ return requireLimits().listPolicyStatuses({
142
+ ...(input.includeDisabled === undefined ? {} : { includeDisabled: input.includeDisabled }),
143
+ projectId: runtime.projectId,
144
+ existingGroupIds: security.listGroups().map((group) => group.id),
145
+ })
146
+ },
147
+ listLimitSubjectOptions: async () => {
148
+ assertManageable()
149
+ const groups = security.listGroups().map((group) => ({
150
+ id: group.id,
151
+ ...(group.label === undefined ? {} : { label: group.label }),
152
+ ...(group.description === undefined ? {} : { description: group.description }),
153
+ }))
154
+ const auth = runtime.storage.auth
155
+ if (!auth) return { groups, users: [], serviceAccounts: [] }
156
+
157
+ const [users, serviceAccounts] = await Promise.all([
158
+ auth.users.list({ projectId: runtime.projectId, order: "asc" }),
159
+ auth.serviceAccounts.list({ projectId: runtime.projectId, order: "asc" }),
160
+ ])
161
+ return {
162
+ groups,
163
+ users: users.users.map((user) => ({
164
+ id: user.id,
165
+ email: user.email,
166
+ ...(user.displayName === undefined ? {} : { displayName: user.displayName }),
167
+ status: user.status,
168
+ })),
169
+ serviceAccounts: serviceAccounts.serviceAccounts.map((serviceAccount) => ({
170
+ id: serviceAccount.id,
171
+ name: serviceAccount.name,
172
+ ...(serviceAccount.description === undefined
173
+ ? {}
174
+ : { description: serviceAccount.description }),
175
+ status: serviceAccount.status,
176
+ })),
177
+ }
178
+ },
179
+ createLimitPolicy: (input) => {
180
+ assertManageable()
181
+ return requireLimits().createPolicy({
182
+ ...input,
183
+ id: input.id ?? `ailim_${randomUUID()}`,
184
+ projectId: runtime.projectId,
185
+ })
186
+ },
187
+ updateLimitPolicy: (input) => {
188
+ assertManageable()
189
+ return requireLimits().updatePolicy({ ...input, projectId: runtime.projectId })
190
+ },
191
+ deleteLimitPolicy: (id) => {
192
+ assertManageable()
193
+ return requireLimits().deletePolicy({ id, projectId: runtime.projectId })
194
+ },
195
+ }
196
+ }
@@ -0,0 +1,15 @@
1
+ export type {
2
+ AiUsageLimitGroupOption,
3
+ AiUsageLimitServiceAccountOption,
4
+ AiUsageLimitSubjectOptions,
5
+ AiUsageLimitUserOption,
6
+ AiUsageRuntime,
7
+ CreateAiUsageLimitPolicyInput,
8
+ ListAiUsageLimitPoliciesInput,
9
+ ListAiUsageLimitStatusesInput,
10
+ ListAiUsageModelCallGroupsInput,
11
+ ListAiUsageModelCallsInput,
12
+ QueryAiUsageOverviewInput,
13
+ UpdateAiUsageLimitPolicyInput,
14
+ } from "./execution"
15
+ export { createAiUsageRuntime } from "./execution"
package/src/auth/index.ts CHANGED
@@ -127,6 +127,7 @@ export type {
127
127
  ReactivateMemberInput,
128
128
  ReactivateMemberResult,
129
129
  ResolvedAuthConfig,
130
+ RevealedInvitationLink,
130
131
  RevokeAccessTokenResult,
131
132
  RevokeInvitationInput,
132
133
  RevokeInvitationResult,
@@ -1242,6 +1242,7 @@ export class AuthRuntime {
1242
1242
  audience: deliveryAudience,
1243
1243
  returnTo: options.delivery?.returnTo ?? sanitizeReturnTo(input.returnTo),
1244
1244
  requestOrigin: options.delivery?.requestOrigin ?? new URL(request.url).origin,
1245
+ revealLink: input.revealLink,
1245
1246
  now,
1246
1247
  })
1247
1248
  } catch (error) {
@@ -1249,6 +1250,13 @@ export class AuthRuntime {
1249
1250
  throw error
1250
1251
  }
1251
1252
 
1253
+ // The runtime owns the disclosure boundary even for third-party strategies. A strategy that
1254
+ // accidentally returns a link must not expose it unless the caller opted in explicitly.
1255
+ delivery = {
1256
+ status: delivery.status,
1257
+ ...(input.revealLink && delivery.link ? { link: delivery.link } : {}),
1258
+ }
1259
+
1252
1260
  if (delivery.status === "not_supported") {
1253
1261
  return { invitation, delivery }
1254
1262
  }
@@ -38,6 +38,7 @@ export type {
38
38
  OidcCallbackResult,
39
39
  OidcStartSignInInput,
40
40
  OidcStartSignInResult,
41
+ RevealedInvitationLink,
41
42
  } from "./types"
42
43
  export {
43
44
  isInvitationDeliveryAuthStrategy,