@namzu/sdk 46.0.0 → 48.1.0

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 (768) hide show
  1. package/CHANGELOG.md +351 -8
  2. package/README.md +7 -8
  3. package/dist/advisory/history.d.ts.map +1 -1
  4. package/dist/advisory/history.js +21 -1
  5. package/dist/advisory/history.js.map +1 -1
  6. package/dist/advisory/index.d.ts +1 -1
  7. package/dist/advisory/index.d.ts.map +1 -1
  8. package/dist/advisory/index.js +1 -1
  9. package/dist/advisory/index.js.map +1 -1
  10. package/dist/advisory/registry.d.ts +17 -0
  11. package/dist/advisory/registry.d.ts.map +1 -1
  12. package/dist/advisory/registry.js +26 -0
  13. package/dist/advisory/registry.js.map +1 -1
  14. package/dist/agents/PipelineAgent.d.ts +2 -46
  15. package/dist/agents/PipelineAgent.d.ts.map +1 -1
  16. package/dist/agents/PipelineAgent.js +2 -242
  17. package/dist/agents/PipelineAgent.js.map +1 -1
  18. package/dist/agents/QueryAgent.d.ts +21 -0
  19. package/dist/agents/QueryAgent.d.ts.map +1 -0
  20. package/dist/agents/QueryAgent.js +214 -0
  21. package/dist/agents/QueryAgent.js.map +1 -0
  22. package/dist/agents/ReactiveAgent.d.ts +4 -16
  23. package/dist/agents/ReactiveAgent.d.ts.map +1 -1
  24. package/dist/agents/ReactiveAgent.js +4 -183
  25. package/dist/agents/ReactiveAgent.js.map +1 -1
  26. package/dist/agents/RouterAgent.d.ts +2 -20
  27. package/dist/agents/RouterAgent.d.ts.map +1 -1
  28. package/dist/agents/RouterAgent.js +2 -266
  29. package/dist/agents/RouterAgent.js.map +1 -1
  30. package/dist/agents/SupervisorAgent.d.ts +3 -43
  31. package/dist/agents/SupervisorAgent.d.ts.map +1 -1
  32. package/dist/agents/SupervisorAgent.js +3 -418
  33. package/dist/agents/SupervisorAgent.js.map +1 -1
  34. package/dist/agents/defineAgent.d.ts +2 -1
  35. package/dist/agents/defineAgent.d.ts.map +1 -1
  36. package/dist/agents/defineAgent.js +6 -1
  37. package/dist/agents/defineAgent.js.map +1 -1
  38. package/dist/agents/examples/PipelineAgent.d.ts +46 -0
  39. package/dist/agents/examples/PipelineAgent.d.ts.map +1 -0
  40. package/dist/agents/examples/PipelineAgent.js +242 -0
  41. package/dist/agents/examples/PipelineAgent.js.map +1 -0
  42. package/dist/agents/examples/RouterAgent.d.ts +22 -0
  43. package/dist/agents/examples/RouterAgent.d.ts.map +1 -0
  44. package/dist/agents/examples/RouterAgent.js +268 -0
  45. package/dist/agents/examples/RouterAgent.js.map +1 -0
  46. package/dist/agents/examples/SupervisorAgent.d.ts +45 -0
  47. package/dist/agents/examples/SupervisorAgent.d.ts.map +1 -0
  48. package/dist/agents/examples/SupervisorAgent.js +406 -0
  49. package/dist/agents/examples/SupervisorAgent.js.map +1 -0
  50. package/dist/agents/explore.d.ts +6 -3
  51. package/dist/agents/explore.d.ts.map +1 -1
  52. package/dist/agents/explore.js +6 -3
  53. package/dist/agents/explore.js.map +1 -1
  54. package/dist/agents/forward-options.d.ts +11 -0
  55. package/dist/agents/forward-options.d.ts.map +1 -0
  56. package/dist/agents/forward-options.js +15 -0
  57. package/dist/agents/forward-options.js.map +1 -0
  58. package/dist/agents/index.d.ts +1 -0
  59. package/dist/agents/index.d.ts.map +1 -1
  60. package/dist/agents/index.js +2 -0
  61. package/dist/agents/index.js.map +1 -1
  62. package/dist/agents/runAgent.d.ts +19 -8
  63. package/dist/agents/runAgent.d.ts.map +1 -1
  64. package/dist/agents/runAgent.js +99 -29
  65. package/dist/agents/runAgent.js.map +1 -1
  66. package/dist/authorization/command-line.d.ts +2 -0
  67. package/dist/authorization/command-line.d.ts.map +1 -1
  68. package/dist/authorization/command-line.js +2 -2
  69. package/dist/authorization/command-line.js.map +1 -1
  70. package/dist/authorization/gate.d.ts +8 -0
  71. package/dist/authorization/gate.d.ts.map +1 -1
  72. package/dist/authorization/gate.js +12 -1
  73. package/dist/authorization/gate.js.map +1 -1
  74. package/dist/authorization/program.d.ts +151 -0
  75. package/dist/authorization/program.d.ts.map +1 -0
  76. package/dist/authorization/program.js +713 -0
  77. package/dist/authorization/program.js.map +1 -0
  78. package/dist/authorization/reexec-wrapper.d.ts +106 -0
  79. package/dist/authorization/reexec-wrapper.d.ts.map +1 -0
  80. package/dist/authorization/reexec-wrapper.js +532 -0
  81. package/dist/authorization/reexec-wrapper.js.map +1 -0
  82. package/dist/authorization/rules.d.ts +9 -0
  83. package/dist/authorization/rules.d.ts.map +1 -1
  84. package/dist/authorization/rules.js +8 -1
  85. package/dist/authorization/rules.js.map +1 -1
  86. package/dist/authorization/shell-lexer.d.ts +19 -4
  87. package/dist/authorization/shell-lexer.d.ts.map +1 -1
  88. package/dist/authorization/shell-lexer.js +91 -65
  89. package/dist/authorization/shell-lexer.js.map +1 -1
  90. package/dist/bridge/sse/mapper.d.ts.map +1 -1
  91. package/dist/bridge/sse/mapper.js +6 -0
  92. package/dist/bridge/sse/mapper.js.map +1 -1
  93. package/dist/capabilities/index.d.ts +54 -0
  94. package/dist/capabilities/index.d.ts.map +1 -0
  95. package/dist/capabilities/index.js +92 -0
  96. package/dist/capabilities/index.js.map +1 -0
  97. package/dist/config/registry.d.ts +2 -1
  98. package/dist/config/registry.d.ts.map +1 -1
  99. package/dist/config/registry.js +3 -2
  100. package/dist/config/registry.js.map +1 -1
  101. package/dist/connector/index.d.ts +4 -4
  102. package/dist/connector/index.d.ts.map +1 -1
  103. package/dist/connector/index.js +3 -3
  104. package/dist/connector/index.js.map +1 -1
  105. package/dist/connector/mcp/adapter.d.ts +16 -1
  106. package/dist/connector/mcp/adapter.d.ts.map +1 -1
  107. package/dist/connector/mcp/adapter.js +71 -4
  108. package/dist/connector/mcp/adapter.js.map +1 -1
  109. package/dist/connector/mcp/client.d.ts +32 -4
  110. package/dist/connector/mcp/client.d.ts.map +1 -1
  111. package/dist/connector/mcp/client.js +383 -5
  112. package/dist/connector/mcp/client.js.map +1 -1
  113. package/dist/connector/mcp/discovery.d.ts +24 -1
  114. package/dist/connector/mcp/discovery.d.ts.map +1 -1
  115. package/dist/connector/mcp/discovery.js +44 -0
  116. package/dist/connector/mcp/discovery.js.map +1 -1
  117. package/dist/connector/mcp/era.d.ts.map +1 -1
  118. package/dist/connector/mcp/era.js +7 -0
  119. package/dist/connector/mcp/era.js.map +1 -1
  120. package/dist/connector/mcp/index.d.ts +2 -0
  121. package/dist/connector/mcp/index.d.ts.map +1 -1
  122. package/dist/connector/mcp/index.js +11 -0
  123. package/dist/connector/mcp/index.js.map +1 -1
  124. package/dist/connector/mcp/mcp-toolset.d.ts +133 -0
  125. package/dist/connector/mcp/mcp-toolset.d.ts.map +1 -0
  126. package/dist/connector/mcp/mcp-toolset.js +399 -0
  127. package/dist/connector/mcp/mcp-toolset.js.map +1 -0
  128. package/dist/connector/mcp/streamable-http.d.ts +15 -0
  129. package/dist/connector/mcp/streamable-http.d.ts.map +1 -1
  130. package/dist/connector/mcp/streamable-http.js +281 -6
  131. package/dist/connector/mcp/streamable-http.js.map +1 -1
  132. package/dist/connector/tools/index.d.ts +2 -2
  133. package/dist/connector/tools/index.d.ts.map +1 -1
  134. package/dist/connector/tools/index.js +1 -1
  135. package/dist/connector/tools/index.js.map +1 -1
  136. package/dist/connector/tools/router.d.ts +15 -13
  137. package/dist/connector/tools/router.d.ts.map +1 -1
  138. package/dist/connector/tools/router.js +30 -51
  139. package/dist/connector/tools/router.js.map +1 -1
  140. package/dist/contracts/a2a.d.ts +2 -2
  141. package/dist/directory/derive-supervisor.d.ts +2 -2
  142. package/dist/directory/derive-supervisor.d.ts.map +1 -1
  143. package/dist/directory/derive-supervisor.js +6 -7
  144. package/dist/directory/derive-supervisor.js.map +1 -1
  145. package/dist/directory/derive.d.ts.map +1 -1
  146. package/dist/directory/derive.js +5 -5
  147. package/dist/directory/derive.js.map +1 -1
  148. package/dist/execution/code-runtime/types.d.ts +2 -2
  149. package/dist/execution/code-runtime/types.js +1 -1
  150. package/dist/invariants/index.d.ts +2 -1
  151. package/dist/invariants/index.d.ts.map +1 -1
  152. package/dist/invariants/index.js +3 -2
  153. package/dist/invariants/index.js.map +1 -1
  154. package/dist/manager/agent/lifecycle.d.ts +1 -0
  155. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  156. package/dist/manager/agent/lifecycle.js +146 -18
  157. package/dist/manager/agent/lifecycle.js.map +1 -1
  158. package/dist/manager/connector/environment.d.ts +6 -0
  159. package/dist/manager/connector/environment.d.ts.map +1 -1
  160. package/dist/manager/connector/environment.js +11 -4
  161. package/dist/manager/connector/environment.js.map +1 -1
  162. package/dist/manager/connector/index.d.ts +2 -2
  163. package/dist/manager/connector/index.d.ts.map +1 -1
  164. package/dist/manager/connector/index.js +2 -2
  165. package/dist/manager/connector/index.js.map +1 -1
  166. package/dist/manager/connector/tenant.d.ts +6 -0
  167. package/dist/manager/connector/tenant.d.ts.map +1 -1
  168. package/dist/manager/connector/tenant.js +11 -4
  169. package/dist/manager/connector/tenant.js.map +1 -1
  170. package/dist/manager/index.d.ts +2 -2
  171. package/dist/manager/index.d.ts.map +1 -1
  172. package/dist/manager/index.js +2 -2
  173. package/dist/manager/index.js.map +1 -1
  174. package/dist/manager/resident/initiative.d.ts +6 -6
  175. package/dist/manager/resident/learning-observation.d.ts +4 -4
  176. package/dist/manager/resident/learning.d.ts +36 -36
  177. package/dist/manager/resident/outbox.d.ts +4 -4
  178. package/dist/manager/session/attribution.d.ts +22 -0
  179. package/dist/manager/session/attribution.d.ts.map +1 -0
  180. package/dist/manager/session/attribution.js +64 -0
  181. package/dist/manager/session/attribution.js.map +1 -0
  182. package/dist/manager/session/turn-recorder.d.ts +14 -0
  183. package/dist/manager/session/turn-recorder.d.ts.map +1 -1
  184. package/dist/manager/session/turn-recorder.js +208 -55
  185. package/dist/manager/session/turn-recorder.js.map +1 -1
  186. package/dist/peers/address.d.ts +36 -0
  187. package/dist/peers/address.d.ts.map +1 -0
  188. package/dist/peers/address.js +52 -0
  189. package/dist/peers/address.js.map +1 -0
  190. package/dist/peers/client.d.ts +47 -0
  191. package/dist/peers/client.d.ts.map +1 -0
  192. package/dist/peers/client.js +132 -0
  193. package/dist/peers/client.js.map +1 -0
  194. package/dist/peers/dir.d.ts +88 -0
  195. package/dist/peers/dir.d.ts.map +1 -0
  196. package/dist/peers/dir.js +139 -0
  197. package/dist/peers/dir.js.map +1 -0
  198. package/dist/peers/endpoint.d.ts +144 -0
  199. package/dist/peers/endpoint.d.ts.map +1 -0
  200. package/dist/peers/endpoint.js +420 -0
  201. package/dist/peers/endpoint.js.map +1 -0
  202. package/dist/peers/envelope.d.ts +42 -0
  203. package/dist/peers/envelope.d.ts.map +1 -0
  204. package/dist/peers/envelope.js +110 -0
  205. package/dist/peers/envelope.js.map +1 -0
  206. package/dist/peers/index.d.ts +30 -0
  207. package/dist/peers/index.d.ts.map +1 -0
  208. package/dist/peers/index.js +22 -0
  209. package/dist/peers/index.js.map +1 -0
  210. package/dist/peers/protocol.d.ts +645 -0
  211. package/dist/peers/protocol.d.ts.map +1 -0
  212. package/dist/peers/protocol.js +151 -0
  213. package/dist/peers/protocol.js.map +1 -0
  214. package/dist/peers/record.d.ts +71 -0
  215. package/dist/peers/record.d.ts.map +1 -0
  216. package/dist/peers/record.js +45 -0
  217. package/dist/peers/record.js.map +1 -0
  218. package/dist/peers/registry.d.ts +54 -0
  219. package/dist/peers/registry.d.ts.map +1 -0
  220. package/dist/peers/registry.js +213 -0
  221. package/dist/peers/registry.js.map +1 -0
  222. package/dist/plugin/define.d.ts +24 -0
  223. package/dist/plugin/define.d.ts.map +1 -0
  224. package/dist/plugin/define.js +42 -0
  225. package/dist/plugin/define.js.map +1 -0
  226. package/dist/plugin/index.d.ts +2 -0
  227. package/dist/plugin/index.d.ts.map +1 -1
  228. package/dist/plugin/index.js +1 -0
  229. package/dist/plugin/index.js.map +1 -1
  230. package/dist/plugin/lifecycle.d.ts +27 -3
  231. package/dist/plugin/lifecycle.d.ts.map +1 -1
  232. package/dist/plugin/lifecycle.js +242 -92
  233. package/dist/plugin/lifecycle.js.map +1 -1
  234. package/dist/plugin/resolver.d.ts +2 -2
  235. package/dist/plugin/resolver.d.ts.map +1 -1
  236. package/dist/plugin/resolver.js.map +1 -1
  237. package/dist/plugin/shell-hook.d.ts.map +1 -1
  238. package/dist/plugin/shell-hook.js +17 -3
  239. package/dist/plugin/shell-hook.js.map +1 -1
  240. package/dist/probe/errors.d.ts +2 -1
  241. package/dist/probe/errors.d.ts.map +1 -1
  242. package/dist/probe/errors.js +3 -2
  243. package/dist/probe/errors.js.map +1 -1
  244. package/dist/prompt/coding-agent-doctrine.d.ts +18 -7
  245. package/dist/prompt/coding-agent-doctrine.d.ts.map +1 -1
  246. package/dist/prompt/coding-agent-doctrine.js +11 -6
  247. package/dist/prompt/coding-agent-doctrine.js.map +1 -1
  248. package/dist/prompt/contributions.d.ts +4 -1
  249. package/dist/prompt/contributions.d.ts.map +1 -1
  250. package/dist/prompt/contributions.js +7 -2
  251. package/dist/prompt/contributions.js.map +1 -1
  252. package/dist/prompt/index.d.ts +1 -1
  253. package/dist/prompt/index.d.ts.map +1 -1
  254. package/dist/prompt/index.js +1 -1
  255. package/dist/prompt/index.js.map +1 -1
  256. package/dist/provider/collect-chat-completion.d.ts +6 -1
  257. package/dist/provider/collect-chat-completion.d.ts.map +1 -1
  258. package/dist/provider/collect-chat-completion.js +88 -10
  259. package/dist/provider/collect-chat-completion.js.map +1 -1
  260. package/dist/provider/mock.d.ts.map +1 -1
  261. package/dist/provider/mock.js +23 -6
  262. package/dist/provider/mock.js.map +1 -1
  263. package/dist/provider/registry.d.ts +2 -1
  264. package/dist/provider/registry.d.ts.map +1 -1
  265. package/dist/provider/registry.js +3 -2
  266. package/dist/provider/registry.js.map +1 -1
  267. package/dist/provider/tool-call-framing.d.ts +164 -0
  268. package/dist/provider/tool-call-framing.d.ts.map +1 -0
  269. package/dist/provider/tool-call-framing.js +163 -0
  270. package/dist/provider/tool-call-framing.js.map +1 -0
  271. package/dist/public-runtime.d.ts +24 -11
  272. package/dist/public-runtime.d.ts.map +1 -1
  273. package/dist/public-runtime.js +45 -9
  274. package/dist/public-runtime.js.map +1 -1
  275. package/dist/public-tools.d.ts +6 -4
  276. package/dist/public-tools.d.ts.map +1 -1
  277. package/dist/public-tools.js +8 -3
  278. package/dist/public-tools.js.map +1 -1
  279. package/dist/public-types.d.ts +13 -2
  280. package/dist/public-types.d.ts.map +1 -1
  281. package/dist/read-model/registry.d.ts +2 -1
  282. package/dist/read-model/registry.d.ts.map +1 -1
  283. package/dist/read-model/registry.js +3 -2
  284. package/dist/read-model/registry.js.map +1 -1
  285. package/dist/registry/ManagedRegistry.d.ts +30 -0
  286. package/dist/registry/ManagedRegistry.d.ts.map +1 -1
  287. package/dist/registry/ManagedRegistry.js +45 -6
  288. package/dist/registry/ManagedRegistry.js.map +1 -1
  289. package/dist/registry/collision.d.ts +57 -0
  290. package/dist/registry/collision.d.ts.map +1 -0
  291. package/dist/registry/collision.js +41 -0
  292. package/dist/registry/collision.js.map +1 -0
  293. package/dist/registry/command/index.d.ts +5 -3
  294. package/dist/registry/command/index.d.ts.map +1 -1
  295. package/dist/registry/command/index.js +6 -4
  296. package/dist/registry/command/index.js.map +1 -1
  297. package/dist/registry/index.d.ts +3 -4
  298. package/dist/registry/index.d.ts.map +1 -1
  299. package/dist/registry/index.js +2 -2
  300. package/dist/registry/index.js.map +1 -1
  301. package/dist/registry/plugin/index.d.ts.map +1 -1
  302. package/dist/registry/plugin/index.js +14 -1
  303. package/dist/registry/plugin/index.js.map +1 -1
  304. package/dist/registry/tool/callable.d.ts +7 -7
  305. package/dist/registry/tool/callable.d.ts.map +1 -1
  306. package/dist/registry/tool/callable.js +6 -7
  307. package/dist/registry/tool/callable.js.map +1 -1
  308. package/dist/registry/tool/execute.d.ts +14 -77
  309. package/dist/registry/tool/execute.d.ts.map +1 -1
  310. package/dist/registry/tool/execute.js +15 -727
  311. package/dist/registry/tool/execute.js.map +1 -1
  312. package/dist/registry/tool/portable.d.ts +25 -0
  313. package/dist/registry/tool/portable.d.ts.map +1 -1
  314. package/dist/registry/tool/portable.js +50 -0
  315. package/dist/registry/tool/portable.js.map +1 -1
  316. package/dist/registry/tool/presentation.d.ts +6 -5
  317. package/dist/registry/tool/presentation.d.ts.map +1 -1
  318. package/dist/registry/tool/presentation.js +3 -3
  319. package/dist/registry/tool/presentation.js.map +1 -1
  320. package/dist/runtime/bidi/session.d.ts +5 -4
  321. package/dist/runtime/bidi/session.d.ts.map +1 -1
  322. package/dist/runtime/bidi/session.js +18 -1
  323. package/dist/runtime/bidi/session.js.map +1 -1
  324. package/dist/runtime/query/executor/tool-call-admission.d.ts +45 -2
  325. package/dist/runtime/query/executor/tool-call-admission.d.ts.map +1 -1
  326. package/dist/runtime/query/executor/tool-call-admission.js +189 -5
  327. package/dist/runtime/query/executor/tool-call-admission.js.map +1 -1
  328. package/dist/runtime/query/executor.d.ts +33 -3
  329. package/dist/runtime/query/executor.d.ts.map +1 -1
  330. package/dist/runtime/query/executor.js +86 -10
  331. package/dist/runtime/query/executor.js.map +1 -1
  332. package/dist/runtime/query/file-evidence-replay.d.ts +1 -1
  333. package/dist/runtime/query/file-evidence-replay.d.ts.map +1 -1
  334. package/dist/runtime/query/file-evidence-replay.js +8 -7
  335. package/dist/runtime/query/file-evidence-replay.js.map +1 -1
  336. package/dist/runtime/query/fork/prepare.d.ts +4 -1
  337. package/dist/runtime/query/fork/prepare.d.ts.map +1 -1
  338. package/dist/runtime/query/fork/prepare.js +4 -0
  339. package/dist/runtime/query/fork/prepare.js.map +1 -1
  340. package/dist/runtime/query/guardrail-presets.d.ts +4 -3
  341. package/dist/runtime/query/guardrail-presets.d.ts.map +1 -1
  342. package/dist/runtime/query/guardrail-presets.js +4 -3
  343. package/dist/runtime/query/guardrail-presets.js.map +1 -1
  344. package/dist/runtime/query/index.d.ts +23 -10
  345. package/dist/runtime/query/index.d.ts.map +1 -1
  346. package/dist/runtime/query/index.js +149 -70
  347. package/dist/runtime/query/index.js.map +1 -1
  348. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  349. package/dist/runtime/query/iteration/index.js +8 -1
  350. package/dist/runtime/query/iteration/index.js.map +1 -1
  351. package/dist/runtime/query/iteration/phases/compaction.js +1 -1
  352. package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
  353. package/dist/runtime/query/iteration/phases/context.d.ts +2 -2
  354. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  355. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  356. package/dist/runtime/query/iteration/phases/tool-review.js +55 -2
  357. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  358. package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
  359. package/dist/runtime/query/iteration/stream-turn.js +342 -116
  360. package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
  361. package/dist/runtime/query/iteration/tool-input.d.ts +79 -0
  362. package/dist/runtime/query/iteration/tool-input.d.ts.map +1 -0
  363. package/dist/runtime/query/iteration/tool-input.js +291 -0
  364. package/dist/runtime/query/iteration/tool-input.js.map +1 -0
  365. package/dist/runtime/query/observation-context.d.ts +2 -2
  366. package/dist/runtime/query/observation-context.d.ts.map +1 -1
  367. package/dist/runtime/query/observation-context.js.map +1 -1
  368. package/dist/runtime/query/prelude-lease.d.ts +18 -0
  369. package/dist/runtime/query/prelude-lease.d.ts.map +1 -0
  370. package/dist/runtime/query/prelude-lease.js +121 -0
  371. package/dist/runtime/query/prelude-lease.js.map +1 -0
  372. package/dist/runtime/query/prepare-turn.d.ts.map +1 -1
  373. package/dist/runtime/query/prepare-turn.js +386 -187
  374. package/dist/runtime/query/prepare-turn.js.map +1 -1
  375. package/dist/runtime/query/prompt-cache.d.ts +2 -2
  376. package/dist/runtime/query/prompt-cache.d.ts.map +1 -1
  377. package/dist/runtime/query/prompt.d.ts +2 -2
  378. package/dist/runtime/query/prompt.d.ts.map +1 -1
  379. package/dist/runtime/query/prompt.js +1 -1
  380. package/dist/runtime/query/prompt.js.map +1 -1
  381. package/dist/runtime/query/resume-session.d.ts.map +1 -1
  382. package/dist/runtime/query/resume-session.js +37 -2
  383. package/dist/runtime/query/resume-session.js.map +1 -1
  384. package/dist/runtime/query/review-policy.d.ts +22 -3
  385. package/dist/runtime/query/review-policy.d.ts.map +1 -1
  386. package/dist/runtime/query/review-policy.js +84 -6
  387. package/dist/runtime/query/review-policy.js.map +1 -1
  388. package/dist/runtime/query/tooling.d.ts +3 -2
  389. package/dist/runtime/query/tooling.d.ts.map +1 -1
  390. package/dist/runtime/query/tooling.js.map +1 -1
  391. package/dist/runtime/query/turn-state.d.ts.map +1 -1
  392. package/dist/runtime/query/turn-state.js +5 -0
  393. package/dist/runtime/query/turn-state.js.map +1 -1
  394. package/dist/runtime/system-events.d.ts +112 -0
  395. package/dist/runtime/system-events.d.ts.map +1 -0
  396. package/dist/runtime/system-events.js +183 -0
  397. package/dist/runtime/system-events.js.map +1 -0
  398. package/dist/scheduler/delegating.d.ts +2 -1
  399. package/dist/scheduler/delegating.d.ts.map +1 -1
  400. package/dist/scheduler/delegating.js +3 -2
  401. package/dist/scheduler/delegating.js.map +1 -1
  402. package/dist/scheduler/local.d.ts.map +1 -1
  403. package/dist/scheduler/local.js +2 -0
  404. package/dist/scheduler/local.js.map +1 -1
  405. package/dist/session/retention/archive.js +1 -1
  406. package/dist/session/retention/archive.js.map +1 -1
  407. package/dist/skills/index.d.ts +1 -1
  408. package/dist/skills/index.d.ts.map +1 -1
  409. package/dist/skills/index.js +1 -1
  410. package/dist/skills/index.js.map +1 -1
  411. package/dist/skills/registry.d.ts +12 -0
  412. package/dist/skills/registry.d.ts.map +1 -1
  413. package/dist/skills/registry.js +19 -0
  414. package/dist/skills/registry.js.map +1 -1
  415. package/dist/store/evidence/index-page.d.ts +2 -2
  416. package/dist/store/session/disk.d.ts.map +1 -1
  417. package/dist/store/session/disk.js +2 -0
  418. package/dist/store/session/disk.js.map +1 -1
  419. package/dist/store/session-log/conformance.d.ts +1 -1
  420. package/dist/store/session-log/conformance.d.ts.map +1 -1
  421. package/dist/store/session-log/conformance.js +49 -8
  422. package/dist/store/session-log/conformance.js.map +1 -1
  423. package/dist/store/session-log/core.d.ts +8 -3
  424. package/dist/store/session-log/core.d.ts.map +1 -1
  425. package/dist/store/session-log/core.js +2 -1
  426. package/dist/store/session-log/core.js.map +1 -1
  427. package/dist/store/session-log/fold.d.ts +12 -0
  428. package/dist/store/session-log/fold.d.ts.map +1 -1
  429. package/dist/store/session-log/fold.js +57 -7
  430. package/dist/store/session-log/fold.js.map +1 -1
  431. package/dist/store/session-log/index.d.ts +2 -2
  432. package/dist/store/session-log/index.d.ts.map +1 -1
  433. package/dist/store/session-log/index.js +1 -1
  434. package/dist/store/session-log/index.js.map +1 -1
  435. package/dist/test-support/toolset.d.ts +19 -0
  436. package/dist/test-support/toolset.d.ts.map +1 -0
  437. package/dist/test-support/toolset.js +20 -0
  438. package/dist/test-support/toolset.js.map +1 -0
  439. package/dist/tools/builtins/bash.d.ts +29 -0
  440. package/dist/tools/builtins/bash.d.ts.map +1 -1
  441. package/dist/tools/builtins/bash.js +19 -9
  442. package/dist/tools/builtins/bash.js.map +1 -1
  443. package/dist/tools/builtins/browser-url.d.ts +1 -1
  444. package/dist/tools/builtins/browser-url.js +1 -1
  445. package/dist/tools/builtins/browser.d.ts +6 -6
  446. package/dist/tools/builtins/browser.js +2 -2
  447. package/dist/tools/builtins/browser.js.map +1 -1
  448. package/dist/tools/builtins/computer-use.d.ts.map +1 -1
  449. package/dist/tools/builtins/computer-use.js +19 -11
  450. package/dist/tools/builtins/computer-use.js.map +1 -1
  451. package/dist/tools/builtins/edit.d.ts.map +1 -1
  452. package/dist/tools/builtins/edit.js +9 -1
  453. package/dist/tools/builtins/edit.js.map +1 -1
  454. package/dist/tools/builtins/json-string-hint.d.ts +15 -0
  455. package/dist/tools/builtins/json-string-hint.d.ts.map +1 -0
  456. package/dist/tools/builtins/json-string-hint.js +17 -0
  457. package/dist/tools/builtins/json-string-hint.js.map +1 -0
  458. package/dist/tools/builtins/search-tools.d.ts.map +1 -1
  459. package/dist/tools/builtins/search-tools.js +7 -15
  460. package/dist/tools/builtins/search-tools.js.map +1 -1
  461. package/dist/tools/builtins/write-file.d.ts.map +1 -1
  462. package/dist/tools/builtins/write-file.js +11 -0
  463. package/dist/tools/builtins/write-file.js.map +1 -1
  464. package/dist/tools/command-shell.d.ts +10 -0
  465. package/dist/tools/command-shell.d.ts.map +1 -1
  466. package/dist/tools/command-shell.js +45 -1
  467. package/dist/tools/command-shell.js.map +1 -1
  468. package/dist/tools/coordinator/agent.d.ts.map +1 -1
  469. package/dist/tools/coordinator/agent.js +5 -0
  470. package/dist/tools/coordinator/agent.js.map +1 -1
  471. package/dist/tools/coordinator/ask-user-question.d.ts.map +1 -1
  472. package/dist/tools/coordinator/ask-user-question.js +26 -13
  473. package/dist/tools/coordinator/ask-user-question.js.map +1 -1
  474. package/dist/tools/coordinator/index.d.ts.map +1 -1
  475. package/dist/tools/coordinator/index.js +5 -0
  476. package/dist/tools/coordinator/index.js.map +1 -1
  477. package/dist/tools/coordinator/question-options.d.ts +78 -0
  478. package/dist/tools/coordinator/question-options.d.ts.map +1 -0
  479. package/dist/tools/coordinator/question-options.js +153 -0
  480. package/dist/tools/coordinator/question-options.js.map +1 -0
  481. package/dist/tools/defineTool.d.ts +10 -0
  482. package/dist/tools/defineTool.d.ts.map +1 -1
  483. package/dist/tools/defineTool.js +17 -0
  484. package/dist/tools/defineTool.js.map +1 -1
  485. package/dist/tools/memory/search.d.ts.map +1 -1
  486. package/dist/tools/memory/search.js +4 -1
  487. package/dist/tools/memory/search.js.map +1 -1
  488. package/dist/tools/memory/update.d.ts.map +1 -1
  489. package/dist/tools/memory/update.js +8 -5
  490. package/dist/tools/memory/update.js.map +1 -1
  491. package/dist/tools/render-nonce.d.ts +47 -0
  492. package/dist/tools/render-nonce.d.ts.map +1 -0
  493. package/dist/tools/render-nonce.js +63 -0
  494. package/dist/tools/render-nonce.js.map +1 -0
  495. package/dist/tools/roster.d.ts +46 -19
  496. package/dist/tools/roster.d.ts.map +1 -1
  497. package/dist/tools/roster.js +63 -33
  498. package/dist/tools/roster.js.map +1 -1
  499. package/dist/tools/schedules/schedule-tool.d.ts.map +1 -1
  500. package/dist/tools/schedules/schedule-tool.js +94 -14
  501. package/dist/tools/schedules/schedule-tool.js.map +1 -1
  502. package/dist/tools/schedules/types.d.ts +52 -6
  503. package/dist/tools/schedules/types.d.ts.map +1 -1
  504. package/dist/tools/trusted-read-only.d.ts +9 -5
  505. package/dist/tools/trusted-read-only.d.ts.map +1 -1
  506. package/dist/tools/trusted-read-only.js +14 -10
  507. package/dist/tools/trusted-read-only.js.map +1 -1
  508. package/dist/tools/untrusted-envelope.d.ts +67 -28
  509. package/dist/tools/untrusted-envelope.d.ts.map +1 -1
  510. package/dist/tools/untrusted-envelope.js +108 -59
  511. package/dist/tools/untrusted-envelope.js.map +1 -1
  512. package/dist/toolsets/combine.d.ts +44 -0
  513. package/dist/toolsets/combine.d.ts.map +1 -0
  514. package/dist/toolsets/combine.js +153 -0
  515. package/dist/toolsets/combine.js.map +1 -0
  516. package/dist/toolsets/manager.d.ts +201 -0
  517. package/dist/toolsets/manager.d.ts.map +1 -0
  518. package/dist/toolsets/manager.js +837 -0
  519. package/dist/toolsets/manager.js.map +1 -0
  520. package/dist/toolsets/source-glob.d.ts +15 -0
  521. package/dist/toolsets/source-glob.d.ts.map +1 -0
  522. package/dist/toolsets/source-glob.js +23 -0
  523. package/dist/toolsets/source-glob.js.map +1 -0
  524. package/dist/toolsets/toolset.d.ts +20 -0
  525. package/dist/toolsets/toolset.d.ts.map +1 -0
  526. package/dist/toolsets/toolset.js +28 -0
  527. package/dist/toolsets/toolset.js.map +1 -0
  528. package/dist/toolsets/types.d.ts +128 -0
  529. package/dist/toolsets/types.d.ts.map +1 -0
  530. package/dist/toolsets/types.js +33 -0
  531. package/dist/toolsets/types.js.map +1 -0
  532. package/dist/toolsets/wrappers.d.ts +59 -0
  533. package/dist/toolsets/wrappers.d.ts.map +1 -0
  534. package/dist/toolsets/wrappers.js +165 -0
  535. package/dist/toolsets/wrappers.js.map +1 -0
  536. package/dist/types/agent/base.d.ts +27 -16
  537. package/dist/types/agent/base.d.ts.map +1 -1
  538. package/dist/types/agent/index.d.ts +1 -0
  539. package/dist/types/agent/index.d.ts.map +1 -1
  540. package/dist/types/agent/index.js +1 -0
  541. package/dist/types/agent/index.js.map +1 -1
  542. package/dist/types/agent/pipeline.d.ts +2 -0
  543. package/dist/types/agent/pipeline.d.ts.map +1 -1
  544. package/dist/types/agent/query.d.ts +117 -0
  545. package/dist/types/agent/query.d.ts.map +1 -0
  546. package/dist/types/agent/query.js +2 -0
  547. package/dist/types/agent/query.js.map +1 -0
  548. package/dist/types/agent/reactive.d.ts +2 -129
  549. package/dist/types/agent/reactive.d.ts.map +1 -1
  550. package/dist/types/agent/router.d.ts +2 -0
  551. package/dist/types/agent/router.d.ts.map +1 -1
  552. package/dist/types/agent/scheduler.d.ts +6 -1
  553. package/dist/types/agent/scheduler.d.ts.map +1 -1
  554. package/dist/types/agent/supervisor.d.ts +5 -2
  555. package/dist/types/agent/supervisor.d.ts.map +1 -1
  556. package/dist/types/agent/task.d.ts +19 -1
  557. package/dist/types/agent/task.d.ts.map +1 -1
  558. package/dist/types/agent/task.js.map +1 -1
  559. package/dist/types/authorization/index.d.ts +49 -12
  560. package/dist/types/authorization/index.d.ts.map +1 -1
  561. package/dist/types/authorization/index.js +6 -0
  562. package/dist/types/authorization/index.js.map +1 -1
  563. package/dist/types/connector/mcp.d.ts +45 -0
  564. package/dist/types/connector/mcp.d.ts.map +1 -1
  565. package/dist/types/errors/index.d.ts +15 -0
  566. package/dist/types/errors/index.d.ts.map +1 -1
  567. package/dist/types/errors/index.js.map +1 -1
  568. package/dist/types/hitl/index.d.ts +57 -0
  569. package/dist/types/hitl/index.d.ts.map +1 -1
  570. package/dist/types/hitl/index.js.map +1 -1
  571. package/dist/types/message/index.d.ts +130 -9
  572. package/dist/types/message/index.d.ts.map +1 -1
  573. package/dist/types/message/index.js +4 -1
  574. package/dist/types/message/index.js.map +1 -1
  575. package/dist/types/plugin/index.d.ts +22 -4
  576. package/dist/types/plugin/index.d.ts.map +1 -1
  577. package/dist/types/plugin/index.js +1 -0
  578. package/dist/types/plugin/index.js.map +1 -1
  579. package/dist/types/provider/chat.d.ts +5 -0
  580. package/dist/types/provider/chat.d.ts.map +1 -1
  581. package/dist/types/provider/config.d.ts +8 -3
  582. package/dist/types/provider/config.d.ts.map +1 -1
  583. package/dist/types/provider/stream.d.ts +39 -0
  584. package/dist/types/provider/stream.d.ts.map +1 -1
  585. package/dist/types/sandbox/index.d.ts +1 -1
  586. package/dist/types/session/events.d.ts +14 -3
  587. package/dist/types/session/events.d.ts.map +1 -1
  588. package/dist/types/session/events.js.map +1 -1
  589. package/dist/types/session/sub-session.d.ts +2 -0
  590. package/dist/types/session/sub-session.d.ts.map +1 -1
  591. package/dist/types/tool/index.d.ts +152 -91
  592. package/dist/types/tool/index.d.ts.map +1 -1
  593. package/dist/types/tool/index.js.map +1 -1
  594. package/dist/types/toolset/index.d.ts +10 -40
  595. package/dist/types/toolset/index.d.ts.map +1 -1
  596. package/package.json +1 -1
  597. package/src/advisory/history.ts +27 -2
  598. package/src/advisory/index.ts +1 -1
  599. package/src/advisory/registry.ts +33 -0
  600. package/src/agents/AGENTS.md +14 -7
  601. package/src/agents/PipelineAgent.ts +2 -303
  602. package/src/agents/QueryAgent.ts +269 -0
  603. package/src/agents/ReactiveAgent.ts +6 -216
  604. package/src/agents/RouterAgent.ts +2 -337
  605. package/src/agents/SupervisorAgent.ts +3 -476
  606. package/src/agents/defineAgent.ts +13 -2
  607. package/src/agents/examples/PipelineAgent.ts +302 -0
  608. package/src/agents/examples/RouterAgent.ts +338 -0
  609. package/src/agents/examples/SupervisorAgent.ts +472 -0
  610. package/src/agents/explore.ts +6 -3
  611. package/src/agents/forward-options.ts +37 -0
  612. package/src/agents/index.ts +2 -0
  613. package/src/agents/runAgent.ts +144 -37
  614. package/src/authorization/command-line.ts +2 -2
  615. package/src/authorization/gate.ts +21 -1
  616. package/src/authorization/program.ts +773 -0
  617. package/src/authorization/reexec-wrapper.ts +589 -0
  618. package/src/authorization/rules.ts +18 -1
  619. package/src/authorization/shell-lexer.ts +104 -59
  620. package/src/bridge/sse/mapper.ts +6 -0
  621. package/src/capabilities/index.ts +157 -0
  622. package/src/config/registry.ts +4 -1
  623. package/src/connector/index.ts +9 -2
  624. package/src/connector/mcp/adapter.ts +73 -3
  625. package/src/connector/mcp/client.ts +425 -6
  626. package/src/connector/mcp/discovery.ts +60 -0
  627. package/src/connector/mcp/era.ts +7 -0
  628. package/src/connector/mcp/index.ts +13 -0
  629. package/src/connector/mcp/mcp-toolset.ts +515 -0
  630. package/src/connector/mcp/streamable-http.ts +302 -5
  631. package/src/connector/tools/index.ts +2 -2
  632. package/src/connector/tools/router.ts +35 -58
  633. package/src/directory/derive-supervisor.ts +12 -8
  634. package/src/directory/derive.ts +8 -5
  635. package/src/execution/code-runtime/types.ts +2 -2
  636. package/src/invariants/index.ts +4 -1
  637. package/src/manager/agent/lifecycle.ts +167 -19
  638. package/src/manager/connector/environment.ts +17 -4
  639. package/src/manager/connector/index.ts +2 -2
  640. package/src/manager/connector/tenant.ts +17 -4
  641. package/src/manager/index.ts +2 -2
  642. package/src/manager/session/attribution.ts +79 -0
  643. package/src/manager/session/turn-recorder.ts +211 -55
  644. package/src/peers/address.ts +58 -0
  645. package/src/peers/client.ts +202 -0
  646. package/src/peers/dir.ts +176 -0
  647. package/src/peers/endpoint.ts +564 -0
  648. package/src/peers/envelope.ts +121 -0
  649. package/src/peers/index.ts +96 -0
  650. package/src/peers/protocol.ts +196 -0
  651. package/src/peers/record.ts +56 -0
  652. package/src/peers/registry.ts +241 -0
  653. package/src/plugin/define.ts +68 -0
  654. package/src/plugin/index.ts +2 -0
  655. package/src/plugin/lifecycle.ts +286 -106
  656. package/src/plugin/resolver.ts +6 -3
  657. package/src/plugin/shell-hook.ts +21 -5
  658. package/src/probe/errors.ts +4 -1
  659. package/src/prompt/coding-agent-doctrine.ts +22 -10
  660. package/src/prompt/contributions.ts +12 -2
  661. package/src/prompt/index.ts +1 -0
  662. package/src/provider/collect-chat-completion.ts +96 -11
  663. package/src/provider/mock.ts +24 -6
  664. package/src/provider/registry.ts +4 -1
  665. package/src/provider/tool-call-framing.ts +226 -0
  666. package/src/public-runtime.ts +136 -7
  667. package/src/public-tools.ts +24 -4
  668. package/src/public-types.ts +60 -6
  669. package/src/read-model/registry.ts +7 -2
  670. package/src/registry/ManagedRegistry.ts +57 -6
  671. package/src/registry/collision.ts +64 -0
  672. package/src/registry/command/index.ts +7 -3
  673. package/src/registry/index.ts +3 -9
  674. package/src/registry/plugin/index.ts +14 -1
  675. package/src/registry/tool/callable.ts +8 -9
  676. package/src/registry/tool/execute.ts +16 -846
  677. package/src/registry/tool/portable.ts +59 -0
  678. package/src/registry/tool/presentation.ts +6 -5
  679. package/src/runtime/bidi/session.ts +24 -5
  680. package/src/runtime/query/executor/tool-call-admission.ts +228 -6
  681. package/src/runtime/query/executor.ts +110 -12
  682. package/src/runtime/query/file-evidence-replay.ts +8 -7
  683. package/src/runtime/query/fork/prepare.ts +6 -1
  684. package/src/runtime/query/guardrail-presets.ts +4 -3
  685. package/src/runtime/query/index.ts +199 -101
  686. package/src/runtime/query/iteration/index.ts +13 -3
  687. package/src/runtime/query/iteration/phases/compaction.ts +1 -1
  688. package/src/runtime/query/iteration/phases/context.ts +2 -2
  689. package/src/runtime/query/iteration/phases/tool-review.ts +59 -2
  690. package/src/runtime/query/iteration/stream-turn.ts +390 -136
  691. package/src/runtime/query/iteration/tool-input.ts +284 -0
  692. package/src/runtime/query/observation-context.ts +2 -2
  693. package/src/runtime/query/prelude-lease.ts +132 -0
  694. package/src/runtime/query/prepare-turn.ts +477 -198
  695. package/src/runtime/query/prompt-cache.ts +2 -2
  696. package/src/runtime/query/prompt.ts +4 -4
  697. package/src/runtime/query/resume-session.ts +42 -3
  698. package/src/runtime/query/review-policy.ts +87 -9
  699. package/src/runtime/query/tooling.ts +3 -6
  700. package/src/runtime/query/turn-state.ts +4 -0
  701. package/src/runtime/system-events.ts +246 -0
  702. package/src/scheduler/delegating.ts +7 -2
  703. package/src/scheduler/local.ts +2 -0
  704. package/src/session/retention/archive.ts +1 -1
  705. package/src/skills/index.ts +1 -1
  706. package/src/skills/registry.ts +25 -0
  707. package/src/store/session/disk.ts +3 -0
  708. package/src/store/session-log/conformance.ts +51 -8
  709. package/src/store/session-log/core.ts +10 -4
  710. package/src/store/session-log/fold.ts +33 -7
  711. package/src/store/session-log/index.ts +2 -0
  712. package/src/test-support/toolset.ts +23 -0
  713. package/src/tools/builtins/bash.ts +27 -10
  714. package/src/tools/builtins/browser-url.ts +1 -1
  715. package/src/tools/builtins/browser.ts +2 -2
  716. package/src/tools/builtins/computer-use.ts +21 -11
  717. package/src/tools/builtins/edit.ts +12 -2
  718. package/src/tools/builtins/json-string-hint.ts +16 -0
  719. package/src/tools/builtins/search-tools.ts +7 -20
  720. package/src/tools/builtins/write-file.ts +12 -0
  721. package/src/tools/command-shell.ts +46 -1
  722. package/src/tools/coordinator/agent.ts +6 -0
  723. package/src/tools/coordinator/ask-user-question.ts +29 -15
  724. package/src/tools/coordinator/index.ts +6 -0
  725. package/src/tools/coordinator/question-options.ts +195 -0
  726. package/src/tools/defineTool.ts +28 -0
  727. package/src/tools/memory/search.ts +4 -1
  728. package/src/tools/memory/update.ts +8 -5
  729. package/src/tools/render-nonce.ts +69 -0
  730. package/src/tools/roster.ts +84 -33
  731. package/src/tools/schedules/schedule-tool.ts +107 -14
  732. package/src/tools/schedules/types.ts +52 -6
  733. package/src/tools/trusted-read-only.ts +19 -10
  734. package/src/tools/untrusted-envelope.ts +121 -57
  735. package/src/toolsets/combine.ts +181 -0
  736. package/src/toolsets/manager.ts +996 -0
  737. package/src/toolsets/source-glob.ts +22 -0
  738. package/src/toolsets/toolset.ts +31 -0
  739. package/src/toolsets/types.ts +154 -0
  740. package/src/toolsets/wrappers.ts +191 -0
  741. package/src/types/agent/base.ts +29 -16
  742. package/src/types/agent/index.ts +1 -0
  743. package/src/types/agent/pipeline.ts +2 -0
  744. package/src/types/agent/query.ts +129 -0
  745. package/src/types/agent/reactive.ts +5 -142
  746. package/src/types/agent/router.ts +2 -0
  747. package/src/types/agent/scheduler.ts +6 -1
  748. package/src/types/agent/supervisor.ts +5 -2
  749. package/src/types/agent/task.ts +21 -1
  750. package/src/types/authorization/index.ts +12 -0
  751. package/src/types/connector/mcp.ts +46 -0
  752. package/src/types/errors/index.ts +15 -0
  753. package/src/types/hitl/index.ts +57 -0
  754. package/src/types/message/index.ts +135 -7
  755. package/src/types/plugin/index.ts +44 -21
  756. package/src/types/provider/chat.ts +5 -0
  757. package/src/types/provider/config.ts +8 -3
  758. package/src/types/provider/stream.ts +39 -0
  759. package/src/types/sandbox/index.ts +1 -1
  760. package/src/types/session/events.ts +14 -3
  761. package/src/types/session/sub-session.ts +2 -0
  762. package/src/types/tool/index.ts +154 -105
  763. package/src/types/toolset/index.ts +10 -47
  764. package/dist/registry/toolset/catalog.d.ts +0 -42
  765. package/dist/registry/toolset/catalog.d.ts.map +0 -1
  766. package/dist/registry/toolset/catalog.js +0 -234
  767. package/dist/registry/toolset/catalog.js.map +0 -1
  768. package/src/registry/toolset/catalog.ts +0 -308
@@ -37,11 +37,12 @@ import {
37
37
  import { getTracer } from '../../telemetry/runtime-accessors.js'
38
38
  import { buildAdvisoryTools } from '../../tools/advisory/index.js'
39
39
  import { SearchToolsTool } from '../../tools/builtins/search-tools.js'
40
- import {
41
- STRUCTURED_OUTPUT_TOOL_NAME,
42
- createStructuredOutputTool,
43
- } from '../../tools/builtins/structuredOutput.js'
40
+ import { createStructuredOutputTool } from '../../tools/builtins/structuredOutput.js'
44
41
  import { buildTaskTools } from '../../tools/task/index.js'
42
+ import { ToolManager } from '../../toolsets/manager.js'
43
+ import { toolset } from '../../toolsets/toolset.js'
44
+ import { type Toolset, toolsetIsReady } from '../../toolsets/types.js'
45
+ import { deferred } from '../../toolsets/wrappers.js'
45
46
  import type { AdvisoryConfig } from '../../types/advisory/index.js'
46
47
  import type { AgentRuntimeContext, RuntimeToolOverrides } from '../../types/agent/base.js'
47
48
  import type { AgentContextLevel } from '../../types/agent/factory.js'
@@ -91,7 +92,7 @@ import type { PromoteMemory } from '../../types/session/memory-promotion.js'
91
92
  import type { Skill } from '../../types/skills/index.js'
92
93
  import type { StructuredOutputConfig } from '../../types/structured-output/index.js'
93
94
  import type { TaskStore } from '../../types/task/index.js'
94
- import type { ToolRegistryContract } from '../../types/tool/index.js'
95
+ import type { ToolDefinition, ToolTierConfig } from '../../types/tool/index.js'
95
96
  import type { RepairToolCall } from '../../types/tool/repair.js'
96
97
  import type { BackoffPolicy } from '../../utils/backoff.js'
97
98
  import type { ModelPricing } from '../../utils/cost.js'
@@ -332,19 +333,20 @@ export interface QueryParams {
332
333
  */
333
334
  maxToolOutputChars?: number
334
335
  /**
335
- * Screens to run against every tool result, where the registry was not
336
- * built with its own.
337
- *
338
- * This is the turn's half of a boundary whose only other door is the
339
- * registry constructor — and a registry is usually the HOST's, assembled
340
- * before the turn exists, so a turn-config option is the only way a turn
341
- * screens a registry it did not build. A registry built WITH
342
- * `resultGuardrails` states its own policy and wins, `[]` included.
336
+ * Screens to run against every tool result. The turn builds its manager
337
+ * from `toolsets` and gives it this policy.
343
338
  *
344
339
  * Absent installs {@link DEFAULT_TOOL_RESULT_GUARDRAILS}; an empty array
345
340
  * installs none, which is how a caller turns the default off.
346
341
  */
347
342
  toolResultGuardrails?: readonly import('../../types/guardrail/index.js').ToolResultGuardrailSpec[]
343
+ /**
344
+ * Tier labels/guidance for the `ToolManager` this turn builds. Absent
345
+ * means no tier legend and no `[label]` prefix on any tool's description
346
+ * — the same as before this existed. A tier is still a static
347
+ * `defineTool` field; this only configures how the manager renders it.
348
+ */
349
+ tierConfig?: ToolTierConfig
348
350
  /**
349
351
  * Smaller preview for text that exceeded maxToolOutputChars, after its full
350
352
  * host output and integrity manifest have been saved. Unset/0 keeps the old
@@ -472,7 +474,18 @@ export interface QueryParams {
472
474
  * `guardrail_triggered` event.
473
475
  */
474
476
  outputGuardrails?: readonly OutputGuardrailSpec[]
475
- tools: ToolRegistryContract
477
+ /**
478
+ * Every tool this turn may see comes from one of these (`toolsets/types.ts`).
479
+ *
480
+ * `query()` never mutates what is passed here: its own generated tools
481
+ * (task tools, `search_tools`, the structured-output tool, advisory
482
+ * tools) are combined with these into the `ToolManager` it builds for
483
+ * itself, once, at the top of the turn — see `buildRuntimeToolset`
484
+ * below. A toolset here that contributes a name `query()` also generates
485
+ * is refused at construction (`ToolsetConflictError`, naming both
486
+ * sources), the same mechanism a plain toolset collision uses.
487
+ */
488
+ toolsets: readonly Toolset[]
476
489
  turnConfig: TurnConfig
477
490
  allowedTools?: string[]
478
491
  agentId: string
@@ -974,6 +987,7 @@ export async function* query(params: QueryParams): AsyncGenerator<SessionEvent,
974
987
  // provider lacks, a sandbox mode it does not offer); the lease the
975
988
  // prelude took is given back on the way out.
976
989
  let unsubscribeChildSessions: (() => void) | undefined
990
+ let disposeToolManager: (() => void) | undefined
977
991
  try {
978
992
  const unsubscribeTaskStore = params.taskStore
979
993
  ? eventTranslator.wireTaskStore(params.taskStore, ctx.sessionId)
@@ -995,6 +1009,77 @@ export async function* query(params: QueryParams): AsyncGenerator<SessionEvent,
995
1009
  })
996
1010
  })
997
1011
 
1012
+ // ─── Advisors: constructed early because their agent-tool forms (if
1013
+ // any) join the runtime toolset below, before the ToolManager exists.
1014
+ // `setCallContextProvider` — which needs `workingStateManager`,
1015
+ // `effectiveAllowedTools` and `iterationOrchestrator`, none of which
1016
+ // exist yet — is configured later, in its historical spot; a closure
1017
+ // reading those is fine to define before they do, as long as nothing
1018
+ // CALLS it before they exist, and nothing does. ───
1019
+ let advisoryCtx: AdvisoryContext | undefined
1020
+ let advisoryToolDefs: ReturnType<typeof buildAdvisoryTools> = []
1021
+ if (params.advisory && params.advisory.advisors.length > 0) {
1022
+ // Advisors are model calls owned by this turn even when they use a
1023
+ // different provider. Sending the raw definitions into the registry
1024
+ // lets a triggered or model-requested consultation bypass both the
1025
+ // finite stream-silence bound and Stop. Bind every advisor provider at
1026
+ // the query boundary, where the effective timeout and run signal are
1027
+ // already known; standalone AdvisoryExecutor callers retain their
1028
+ // explicitly chosen provider/cancellation policy.
1029
+ const boundedAdvisors = params.advisory.advisors.map((advisor) => ({
1030
+ ...advisor,
1031
+ provider: withTokenBudget(
1032
+ withStreamIdleTimeout(advisor.provider, {
1033
+ idleTimeoutMs: streamIdleTimeoutMs,
1034
+ log: ctx.log,
1035
+ }),
1036
+ budget,
1037
+ ),
1038
+ }))
1039
+ const advisorRegistry = new AdvisorRegistry(boundedAdvisors, params.advisory.defaultAdvisorId)
1040
+ // A budget the runtime cannot measure is refused here rather than
1041
+ // silently ignored for the length of the turn.
1042
+ assertBudgetEnforceable(params.advisory)
1043
+ const advisoryExecutor = new AdvisoryExecutor(
1044
+ ctx.log,
1045
+ params.advisory.budget,
1046
+ ctx.abortController.signal,
1047
+ )
1048
+ const triggerEvaluator = new TriggerEvaluator(
1049
+ params.advisory.triggers ?? [],
1050
+ params.advisory.budget,
1051
+ )
1052
+ advisoryCtx = new AdvisoryContext(
1053
+ advisorRegistry,
1054
+ advisoryExecutor,
1055
+ triggerEvaluator,
1056
+ params.advisory.budget,
1057
+ )
1058
+ if (params.advisory.enableAgentTool) {
1059
+ advisoryToolDefs = buildAdvisoryTools({ advisoryCtx })
1060
+ }
1061
+ }
1062
+
1063
+ // ─── query()'s own tools: never mutate the caller's toolsets. Task
1064
+ // tools, `search_tools`, the structured-output tool and any advisory
1065
+ // tools are gathered here and combined into one `runtime` toolset
1066
+ // (plan.md v3 §2), which the `ToolManager` below resolves alongside
1067
+ // `params.toolsets`. A name a caller's own toolset already contributes
1068
+ // is refused at construction — `ToolsetConflictError`, naming both
1069
+ // sources — the same mechanism any two colliding toolsets hit; this
1070
+ // generalises `SupervisorAgent`'s old hand-written coordinator-name
1071
+ // refusal, which is gone (its coordinator tools are just another
1072
+ // toolset in `params.toolsets` now). ───
1073
+ const runtimeToolOverrides = params.runtimeToolOverrides
1074
+ const runtimeActiveTools: ToolDefinition[] = []
1075
+ const runtimeDeferredTools: ToolDefinition[] = []
1076
+ const addRuntimeTool = (tool: ToolDefinition, defaultAvailability: 'active' | 'deferred') => {
1077
+ const override = runtimeToolOverrides?.[tool.name]
1078
+ if (override === 'disabled') return
1079
+ const availability = override ?? defaultAvailability
1080
+ ;(availability === 'active' ? runtimeActiveTools : runtimeDeferredTools).push(tool)
1081
+ }
1082
+
998
1083
  if (params.taskStore) {
999
1084
  const taskTools = buildTaskTools(params.taskStore, {
1000
1085
  sessionId: ctx.sessionId,
@@ -1007,43 +1092,88 @@ export async function* query(params: QueryParams): AsyncGenerator<SessionEvent,
1007
1092
  ? await recordedTurnStart(ctx.recorder.log, ctx.turnId)
1008
1093
  : undefined) ?? ctx.recorder.getTurn().startedAt,
1009
1094
  })
1010
- const overrides = params.runtimeToolOverrides
1011
- for (const tool of taskTools) {
1012
- const override = overrides?.[tool.name]
1013
- if (override === 'disabled') continue
1014
- params.tools.register(tool, override ?? 'deferred')
1015
- }
1095
+ for (const tool of taskTools) addRuntimeTool(tool, 'deferred')
1016
1096
  }
1017
1097
 
1018
- if (!params.tools.has(SearchToolsTool.name)) {
1019
- const hasDeferred = params.tools
1020
- .listNames()
1021
- .some((n) => params.tools.getAvailability(n) === 'deferred')
1022
- if (hasDeferred) {
1023
- params.tools.register(SearchToolsTool)
1024
- }
1098
+ // `search_tools` is added only when something could actually be
1099
+ // deferred — one of the runtime tools above, or a caller toolset that
1100
+ // declared itself `deferred(...)`. Nothing deferred means nothing for
1101
+ // a search to load, so it is never added at all. And only when the
1102
+ // caller does not already provide a tool under that name: a caller
1103
+ // that mounts its OWN discovery tool (a connector named `search_tools`,
1104
+ // deliberately) owns that name, and adding a second contributor here
1105
+ // would be a `ToolsetConflictError` naming both sources for a name
1106
+ // query() itself introduced, not the caller's honest collision.
1107
+ const callerHasDeferredToolset = params.toolsets.some(
1108
+ (ts) => (ts.availability ?? 'active') === 'deferred' && ts.tools().length > 0,
1109
+ )
1110
+ const callerSearchToolset = params.toolsets.find((ts) =>
1111
+ ts.tools().some((tool) => tool.name === SearchToolsTool.name),
1112
+ )
1113
+ const callerHasSearchTools = callerSearchToolset !== undefined
1114
+ if (
1115
+ (runtimeDeferredTools.length > 0 || callerHasDeferredToolset) &&
1116
+ callerSearchToolset &&
1117
+ (callerSearchToolset.availability === 'deferred' || !toolsetIsReady(callerSearchToolset))
1118
+ ) {
1119
+ throw new Error(
1120
+ 'A caller-provided search_tools must be active and ready when deferred tools are present.',
1121
+ )
1122
+ }
1123
+ if (
1124
+ (runtimeDeferredTools.length > 0 || callerHasDeferredToolset) &&
1125
+ !callerHasSearchTools &&
1126
+ ['deferred', 'suspended'].includes(runtimeToolOverrides?.[SearchToolsTool.name] ?? '')
1127
+ ) {
1128
+ throw new Error(
1129
+ 'runtimeToolOverrides.search_tools must be active or disabled when deferred tools are present.',
1130
+ )
1131
+ }
1132
+ if ((runtimeDeferredTools.length > 0 || callerHasDeferredToolset) && !callerHasSearchTools) {
1133
+ addRuntimeTool(SearchToolsTool, 'active')
1025
1134
  }
1026
1135
 
1027
- // Registered HERE, before the first turn, not when the model is nearly
1136
+ // Added HERE, before the first turn, not when the model is nearly
1028
1137
  // done. Tools render at prefix position 0, so injecting one late would
1029
1138
  // invalidate the whole prompt cache for the rest of the turn — the same
1030
1139
  // reason the forced-final turn keeps its tools array and uses
1031
1140
  // `toolChoice: 'none'` instead of dropping it.
1032
- if (
1033
- params.structuredOutput &&
1034
- params.structuredOutput.mode !== 'native' &&
1035
- !params.tools.has(STRUCTURED_OUTPUT_TOOL_NAME)
1036
- ) {
1037
- params.tools.register(createStructuredOutputTool(params.structuredOutput.schema))
1141
+ if (params.structuredOutput && params.structuredOutput.mode !== 'native') {
1142
+ addRuntimeTool(createStructuredOutputTool(params.structuredOutput.schema), 'active')
1038
1143
  }
1039
1144
 
1145
+ for (const tool of advisoryToolDefs) addRuntimeTool(tool, 'active')
1146
+
1147
+ // Two SEPARATE entries, not `combineToolsets`'d into one: `Toolset.availability`
1148
+ // is a single value for the whole toolset, and `ToolManager` derives each
1149
+ // name's default availability from whichever ARRAY ENTRY served it — a
1150
+ // merged toolset has no one availability to report, so every tool
1151
+ // inside it (both halves) would read back as the untyped default,
1152
+ // `'active'`, silently dropping every override this turn just computed.
1153
+ const toolManager = new ToolManager({
1154
+ toolsets: [
1155
+ ...params.toolsets,
1156
+ toolset('runtime:active', runtimeActiveTools),
1157
+ deferred(toolset('runtime:deferred', runtimeDeferredTools)),
1158
+ ],
1159
+ ...(params.toolResultGuardrails !== undefined
1160
+ ? { resultGuardrails: params.toolResultGuardrails }
1161
+ : {}),
1162
+ ...(params.tierConfig !== undefined ? { tierConfig: params.tierConfig } : {}),
1163
+ // Read fresh on every `availability()` call, not captured once: see
1164
+ // `ToolManager.availability` — derived from the turn's own
1165
+ // post-compaction history, which grows as the turn proceeds.
1166
+ messages: () => ctx.recorder.messages,
1167
+ })
1168
+ disposeToolManager = () => toolManager.dispose()
1169
+
1040
1170
  // ─── Provider capability negotiation (before tooling bootstrap) ────────
1041
1171
  // Compare what the request asks for with what the DRIVER declared it
1042
1172
  // does. Undeclared capabilities resolve permissively (today's behavior
1043
1173
  // for third-party providers); declared gaps degrade loudly instead of
1044
1174
  // silently.
1045
1175
  const capabilities = resolveProviderCapabilities(params.provider)
1046
- const registeredToolCount = params.tools.listNames().length
1176
+ const registeredToolCount = toolManager.listNames().length
1047
1177
  const stripToolSurfaces = !capabilities.supportsTools && registeredToolCount > 0
1048
1178
  // Counted separately because they are separate wire shapes: a driver can
1049
1179
  // map images and drop documents, and a vision warning would send the
@@ -1126,7 +1256,7 @@ export async function* query(params: QueryParams): AsyncGenerator<SessionEvent,
1126
1256
  // shows the model fewer tools and lets it call any of them by name.
1127
1257
  const allowedBeforeDenial = stripToolSurfaces
1128
1258
  ? []
1129
- : withDeferredDiscoveryTool(params.tools, params.allowedTools)
1259
+ : withDeferredDiscoveryTool(toolManager, params.allowedTools)
1130
1260
  const denied = new Set(params.deniedTools ?? [])
1131
1261
  const effectiveAllowedTools: string[] | undefined =
1132
1262
  denied.size === 0
@@ -1136,7 +1266,7 @@ export async function* query(params: QueryParams): AsyncGenerator<SessionEvent,
1136
1266
  // here — otherwise the subtraction would be from an empty list
1137
1267
  // and would deny nothing, which is the shape a delegated child
1138
1268
  // arrives in.
1139
- [...(allowedBeforeDenial ?? params.tools.listNames())].filter((name) => !denied.has(name))
1269
+ [...(allowedBeforeDenial ?? toolManager.listNames())].filter((name) => !denied.has(name))
1140
1270
 
1141
1271
  // The two halves of a durable pause, owned by the TURN when the host
1142
1272
  // does not own them.
@@ -1205,7 +1335,7 @@ export async function* query(params: QueryParams): AsyncGenerator<SessionEvent,
1205
1335
  const toolExecutor = ToolingBootstrap.init(
1206
1336
  {
1207
1337
  skillGrants,
1208
- tools: params.tools,
1338
+ tools: toolManager,
1209
1339
  sessionId: ctx.sessionId,
1210
1340
  turnId: ctx.turnId,
1211
1341
  workingDirectory: ctx.cwd,
@@ -1331,7 +1461,7 @@ export async function* query(params: QueryParams): AsyncGenerator<SessionEvent,
1331
1461
  persona: params.persona,
1332
1462
  skills: params.skills,
1333
1463
  basePrompt: params.basePrompt,
1334
- tools: params.tools,
1464
+ tools: toolManager,
1335
1465
  allowedTools: effectiveAllowedTools,
1336
1466
  runtimeContext: params.runtimeContext,
1337
1467
  contributions: promptContributions,
@@ -1381,45 +1511,12 @@ export async function* query(params: QueryParams): AsyncGenerator<SessionEvent,
1381
1511
  signal: ctx.abortController.signal,
1382
1512
  })
1383
1513
 
1384
- let advisoryCtx: AdvisoryContext | undefined
1385
- if (params.advisory && params.advisory.advisors.length > 0) {
1386
- // Advisors are model calls owned by this turn even when they use a
1387
- // different provider. Sending the raw definitions into the registry
1388
- // lets a triggered or model-requested consultation bypass both the
1389
- // finite stream-silence bound and Stop. Bind every advisor provider at
1390
- // the query boundary, where the effective timeout and run signal are
1391
- // already known; standalone AdvisoryExecutor callers retain their
1392
- // explicitly chosen provider/cancellation policy.
1393
- const boundedAdvisors = params.advisory.advisors.map((advisor) => ({
1394
- ...advisor,
1395
- provider: withTokenBudget(
1396
- withStreamIdleTimeout(advisor.provider, {
1397
- idleTimeoutMs: streamIdleTimeoutMs,
1398
- log: ctx.log,
1399
- }),
1400
- budget,
1401
- ),
1402
- }))
1403
- const advisorRegistry = new AdvisorRegistry(boundedAdvisors, params.advisory.defaultAdvisorId)
1404
- // A budget the runtime cannot measure is refused here rather than
1405
- // silently ignored for the length of the turn.
1406
- assertBudgetEnforceable(params.advisory)
1407
- const advisoryExecutor = new AdvisoryExecutor(
1408
- ctx.log,
1409
- params.advisory.budget,
1410
- ctx.abortController.signal,
1411
- )
1412
- const triggerEvaluator = new TriggerEvaluator(
1413
- params.advisory.triggers ?? [],
1414
- params.advisory.budget,
1415
- )
1416
- advisoryCtx = new AdvisoryContext(
1417
- advisorRegistry,
1418
- advisoryExecutor,
1419
- triggerEvaluator,
1420
- params.advisory.budget,
1421
- )
1422
-
1514
+ // `advisoryCtx` itself was already built above, before the
1515
+ // `ToolManager`, so its agent-tool form (if any) could join the
1516
+ // `runtime` toolset. What's left is the callback that needs state this
1517
+ // early construction cannot see yet: `workingStateManager`,
1518
+ // `effectiveAllowedTools`, `iterationOrchestrator`.
1519
+ if (advisoryCtx && params.advisory) {
1423
1520
  // What the turn looks like when the MODEL consults an advisor, as
1424
1521
  // opposed to when a trigger does. The trigger path has always passed
1425
1522
  // this; the tool path passed an empty context, so an advisor the model
@@ -1430,7 +1527,8 @@ export async function* query(params: QueryParams): AsyncGenerator<SessionEvent,
1430
1527
  // `AdvisorDefinition` and consulted by nothing, so a host who turned
1431
1528
  // the catalogue off still paid for it in every advisory prompt.
1432
1529
  const advisoryConfig = params.advisory
1433
- advisoryCtx.setCallContextProvider(() => {
1530
+ const boundAdvisoryCtx = advisoryCtx
1531
+ boundAdvisoryCtx.setCallContextProvider(() => {
1434
1532
  const summary =
1435
1533
  workingStateManager && advisoryConfig.advisors.some((a) => a.useCompactedContext)
1436
1534
  ? serializeWorkingState(workingStateManager.getState())
@@ -1440,21 +1538,11 @@ export async function* query(params: QueryParams): AsyncGenerator<SessionEvent,
1440
1538
  turn: iterationOrchestrator.getAdvisoryTurnContext(),
1441
1539
  ...(summary !== undefined ? { workingStateSummary: summary } : {}),
1442
1540
  ...(advisoryConfig.includeToolCatalog
1443
- ? { toolCatalog: params.tools.toLLMTools(effectiveAllowedTools) }
1541
+ ? { toolCatalog: toolManager.toLLMTools(effectiveAllowedTools) }
1444
1542
  : {}),
1445
1543
  iteration: ctx.recorder.currentIteration,
1446
1544
  }
1447
1545
  })
1448
-
1449
- if (params.advisory.enableAgentTool) {
1450
- const advisoryTools = buildAdvisoryTools({ advisoryCtx })
1451
- const overrides = params.runtimeToolOverrides
1452
- for (const tool of advisoryTools) {
1453
- const override = overrides?.[tool.name]
1454
- if (override === 'disabled') continue
1455
- params.tools.register(tool, override ?? 'active')
1456
- }
1457
- }
1458
1546
  }
1459
1547
 
1460
1548
  const iterationOrchestrator = new IterationOrchestrator({
@@ -1477,7 +1565,7 @@ export async function* query(params: QueryParams): AsyncGenerator<SessionEvent,
1477
1565
  ...(params.parkRecordDelayMs !== undefined
1478
1566
  ? { parkRecordDelayMs: params.parkRecordDelayMs }
1479
1567
  : {}),
1480
- tools: params.tools,
1568
+ tools: toolManager,
1481
1569
  allowedTools: effectiveAllowedTools,
1482
1570
  recorder: ctx.recorder,
1483
1571
  toolExecutor,
@@ -1732,7 +1820,7 @@ export async function* query(params: QueryParams): AsyncGenerator<SessionEvent,
1732
1820
  persona: params.persona,
1733
1821
  skills: params.skills,
1734
1822
  basePrompt: contextLevel === 'full' ? params.basePrompt : undefined,
1735
- tools: params.tools,
1823
+ tools: toolManager,
1736
1824
  allowedTools: effectiveAllowedTools,
1737
1825
  runtimeContext: params.runtimeContext,
1738
1826
  contributions: promptContributions,
@@ -2118,7 +2206,11 @@ export async function* query(params: QueryParams): AsyncGenerator<SessionEvent,
2118
2206
  if (params.pluginManager) {
2119
2207
  const hookResults = await params.pluginManager.executeHooks(
2120
2208
  'turn_start',
2121
- { sessionId: ctx.sessionId, turnId: ctx.turnId, signal: ctx.abortController.signal },
2209
+ {
2210
+ sessionId: ctx.sessionId,
2211
+ turnId: ctx.turnId,
2212
+ signal: ctx.abortController.signal,
2213
+ },
2122
2214
  eventTranslator.emitEvent,
2123
2215
  )
2124
2216
  applyLifecycleHookResults('turn_start', hookResults)
@@ -2406,10 +2498,14 @@ export async function* query(params: QueryParams): AsyncGenerator<SessionEvent,
2406
2498
  if (!settled) await settleAbandonedTurn(ctx.recorder, eventTranslator, ctx.log)
2407
2499
  }
2408
2500
  } finally {
2409
- unsubscribeChildSessions?.()
2410
- // The lease `open()` took in the prelude; a caller-supplied lease is the
2411
- // caller's to give back.
2412
- await ctx.recorder.release()
2501
+ try {
2502
+ disposeToolManager?.()
2503
+ } finally {
2504
+ unsubscribeChildSessions?.()
2505
+ // The lease `open()` took in the prelude; a caller-supplied lease is the
2506
+ // caller's to give back.
2507
+ await ctx.recorder.release()
2508
+ }
2413
2509
  }
2414
2510
  }
2415
2511
 
@@ -2440,7 +2536,9 @@ async function settleAbandonedTurn(
2440
2536
  try {
2441
2537
  if (recorder.isClosed || recorder.isPaused || !recorder.isActive) return
2442
2538
  await recorder.flush()
2443
- const parked = await findPendingCheckpoint(recorder.log, { turnId: recorder.turnId })
2539
+ const parked = await findPendingCheckpoint(recorder.log, {
2540
+ turnId: recorder.turnId,
2541
+ })
2444
2542
  if (parked) {
2445
2543
  recorder.setStopReason('paused')
2446
2544
  await eventTranslator.emitEvent({
@@ -2554,19 +2652,19 @@ function assertSelectedResumeAttribution(params: QueryParams, state: SelectedRes
2554
2652
  }
2555
2653
 
2556
2654
  function withDeferredDiscoveryTool(
2557
- tools: ToolRegistryContract,
2655
+ tools: ToolManager,
2558
2656
  allowedTools?: string[],
2559
2657
  ): string[] | undefined {
2560
2658
  if (!allowedTools) return undefined
2561
2659
  if (allowedTools.includes(SearchToolsTool.name)) return allowedTools
2562
2660
 
2563
2661
  const allowedHasDeferred = allowedTools.some(
2564
- (name) => tools.has(name) && tools.getAvailability(name) === 'deferred',
2662
+ (name) => tools.has(name) && tools.availability(name) === 'deferred',
2565
2663
  )
2566
2664
  if (!allowedHasDeferred) return allowedTools
2567
2665
 
2568
2666
  if (!tools.has(SearchToolsTool.name)) return allowedTools
2569
- if (tools.getAvailability(SearchToolsTool.name) !== 'active') return allowedTools
2667
+ if (tools.availability(SearchToolsTool.name) !== 'active') return allowedTools
2570
2668
 
2571
2669
  return [...allowedTools, SearchToolsTool.name]
2572
2670
  }
@@ -21,6 +21,7 @@ import {
21
21
  } from '../../../telemetry/attributes.js'
22
22
  import { getTracer } from '../../../telemetry/runtime-accessors.js'
23
23
  import { STRUCTURED_OUTPUT_TOOL_NAME } from '../../../tools/builtins/structuredOutput.js'
24
+ import type { ToolManager } from '../../../toolsets/manager.js'
24
25
  import type { CostInfo, TokenUsage } from '../../../types/common/index.js'
25
26
  import { NamzuError } from '../../../types/errors/index.js'
26
27
  import type { MessageId } from '../../../types/ids/index.js'
@@ -41,7 +42,7 @@ import type {
41
42
  StepResult,
42
43
  StopReason,
43
44
  } from '../../../types/session/index.js'
44
- import type { LLMToolSchema, ToolRegistryContract } from '../../../types/tool/index.js'
45
+ import type { LLMToolSchema } from '../../../types/tool/index.js'
45
46
  import { toErrorMessage } from '../../../utils/error.js'
46
47
  import { stableDigest } from '../../../utils/hash.js'
47
48
  import { generateMessageId } from '../../../utils/id.js'
@@ -1192,7 +1193,16 @@ export class IterationOrchestrator {
1192
1193
  // never auto-continues — that path is invoked
1193
1194
  // specifically to extract a closing summary.
1194
1195
  // - max_iterations bounds the loop in any case.
1195
- if (!forceFinalize && response.finishReason === 'length' && hasContent) {
1196
+ // - not after the context window: a response that filled
1197
+ // it has no room left to continue into, and the
1198
+ // continuation would only send a longer prompt into
1199
+ // the same full window. The reply stands as it is.
1200
+ if (
1201
+ !forceFinalize &&
1202
+ response.finishReason === 'length' &&
1203
+ response.finishDetail !== 'context_window' &&
1204
+ hasContent
1205
+ ) {
1196
1206
  this.ctx.log.info('LLM hit max_tokens mid-text — auto-continuing', {
1197
1207
  [NAMZU.TURN_ID]: recorder.turnId,
1198
1208
  [NAMZU.ITERATION]: iterationNum,
@@ -2469,7 +2479,7 @@ function round6(n: number): number {
2469
2479
  * next call, not the next process.
2470
2480
  */
2471
2481
  function enforcedModelInputToolNames(
2472
- registry: ToolRegistryContract,
2482
+ registry: ToolManager,
2473
2483
  tools: readonly LLMToolSchema[],
2474
2484
  ): readonly string[] | undefined {
2475
2485
  const names = tools
@@ -814,7 +814,7 @@ async function runCompactionCheckInner(
814
814
 
815
815
  const newMessages = [...preservedSystem, compactionMessage, ...retainedOlder, ...recentMessages]
816
816
 
817
- // OPAQUE survival guard (ses_055 D1): the pinned working-memory slot is a
817
+ // OPAQUE survival guard: the pinned working-memory slot is a
818
818
  // leading system message, so it is kept in `preservedSystem` (the compaction
819
819
  // filter only drops prior `[COMPACTED CONTEXT]` summaries, never the WM slot)
820
820
  // and survives for free — this branch is DEFENSIVE-ONLY, exercised only if a
@@ -12,6 +12,7 @@ import type { ResolvedProviderCapabilities } from '../../../../provider/capabili
12
12
  import type { ServingMember } from '../../../../provider/fallback.js'
13
13
  import type { CompletionInbox } from '../../../../scheduler/completion-inbox.js'
14
14
  import type { ActivityStore } from '../../../../store/activity/memory.js'
15
+ import type { ToolManager } from '../../../../toolsets/manager.js'
15
16
  import type { TaskScheduler } from '../../../../types/agent/scheduler.js'
16
17
  import type { WorkingMemoryProvider } from '../../../../types/agent/working-memory.js'
17
18
  import type { HITLResumeDecision, ResumeHandler } from '../../../../types/hitl/index.js'
@@ -30,7 +31,6 @@ import type {
30
31
  } from '../../../../types/session/index.js'
31
32
  import type { StructuredOutputConfig } from '../../../../types/structured-output/index.js'
32
33
  import type { TaskStore } from '../../../../types/task/index.js'
33
- import type { ToolRegistryContract } from '../../../../types/tool/index.js'
34
34
  import type { Logger } from '../../../../utils/logger.js'
35
35
  import type { AwaitedJobs } from '../../../jobs/awaited-jobs.js'
36
36
  import type { CheckpointManager } from '../../checkpoint.js'
@@ -96,7 +96,7 @@ export interface IterationContext {
96
96
 
97
97
  /** Demand a schema-validated final answer. See QueryParams.structuredOutput. */
98
98
  readonly structuredOutput?: StructuredOutputConfig
99
- readonly tools: ToolRegistryContract
99
+ readonly tools: ToolManager
100
100
  readonly allowedTools?: string[]
101
101
  readonly recorder: TurnRecorder
102
102
  readonly toolExecutor: ToolExecutor