@namzu/sdk 46.0.0 → 48.0.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 (732) hide show
  1. package/CHANGELOG.md +325 -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 +60 -4
  108. package/dist/connector/mcp/adapter.js.map +1 -1
  109. package/dist/connector/mcp/client.d.ts +13 -4
  110. package/dist/connector/mcp/client.d.ts.map +1 -1
  111. package/dist/connector/mcp/client.js +20 -3
  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/index.d.ts +2 -0
  118. package/dist/connector/mcp/index.d.ts.map +1 -1
  119. package/dist/connector/mcp/index.js +11 -0
  120. package/dist/connector/mcp/index.js.map +1 -1
  121. package/dist/connector/mcp/mcp-toolset.d.ts +133 -0
  122. package/dist/connector/mcp/mcp-toolset.d.ts.map +1 -0
  123. package/dist/connector/mcp/mcp-toolset.js +399 -0
  124. package/dist/connector/mcp/mcp-toolset.js.map +1 -0
  125. package/dist/connector/tools/index.d.ts +2 -2
  126. package/dist/connector/tools/index.d.ts.map +1 -1
  127. package/dist/connector/tools/index.js +1 -1
  128. package/dist/connector/tools/index.js.map +1 -1
  129. package/dist/connector/tools/router.d.ts +15 -13
  130. package/dist/connector/tools/router.d.ts.map +1 -1
  131. package/dist/connector/tools/router.js +30 -51
  132. package/dist/connector/tools/router.js.map +1 -1
  133. package/dist/contracts/a2a.d.ts +2 -2
  134. package/dist/directory/derive-supervisor.d.ts +2 -2
  135. package/dist/directory/derive-supervisor.d.ts.map +1 -1
  136. package/dist/directory/derive-supervisor.js +6 -7
  137. package/dist/directory/derive-supervisor.js.map +1 -1
  138. package/dist/directory/derive.d.ts.map +1 -1
  139. package/dist/directory/derive.js +5 -5
  140. package/dist/directory/derive.js.map +1 -1
  141. package/dist/execution/code-runtime/types.d.ts +2 -2
  142. package/dist/execution/code-runtime/types.js +1 -1
  143. package/dist/invariants/index.d.ts +2 -1
  144. package/dist/invariants/index.d.ts.map +1 -1
  145. package/dist/invariants/index.js +3 -2
  146. package/dist/invariants/index.js.map +1 -1
  147. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  148. package/dist/manager/agent/lifecycle.js +9 -0
  149. package/dist/manager/agent/lifecycle.js.map +1 -1
  150. package/dist/manager/connector/environment.d.ts +6 -0
  151. package/dist/manager/connector/environment.d.ts.map +1 -1
  152. package/dist/manager/connector/environment.js +11 -4
  153. package/dist/manager/connector/environment.js.map +1 -1
  154. package/dist/manager/connector/index.d.ts +2 -2
  155. package/dist/manager/connector/index.d.ts.map +1 -1
  156. package/dist/manager/connector/index.js +2 -2
  157. package/dist/manager/connector/index.js.map +1 -1
  158. package/dist/manager/connector/tenant.d.ts +6 -0
  159. package/dist/manager/connector/tenant.d.ts.map +1 -1
  160. package/dist/manager/connector/tenant.js +11 -4
  161. package/dist/manager/connector/tenant.js.map +1 -1
  162. package/dist/manager/index.d.ts +2 -2
  163. package/dist/manager/index.d.ts.map +1 -1
  164. package/dist/manager/index.js +2 -2
  165. package/dist/manager/index.js.map +1 -1
  166. package/dist/manager/resident/learning-observation.d.ts +4 -4
  167. package/dist/manager/resident/learning.d.ts +36 -36
  168. package/dist/manager/session/attribution.d.ts +22 -0
  169. package/dist/manager/session/attribution.d.ts.map +1 -0
  170. package/dist/manager/session/attribution.js +64 -0
  171. package/dist/manager/session/attribution.js.map +1 -0
  172. package/dist/manager/session/turn-recorder.d.ts +14 -0
  173. package/dist/manager/session/turn-recorder.d.ts.map +1 -1
  174. package/dist/manager/session/turn-recorder.js +208 -55
  175. package/dist/manager/session/turn-recorder.js.map +1 -1
  176. package/dist/peers/address.d.ts +36 -0
  177. package/dist/peers/address.d.ts.map +1 -0
  178. package/dist/peers/address.js +52 -0
  179. package/dist/peers/address.js.map +1 -0
  180. package/dist/peers/client.d.ts +47 -0
  181. package/dist/peers/client.d.ts.map +1 -0
  182. package/dist/peers/client.js +132 -0
  183. package/dist/peers/client.js.map +1 -0
  184. package/dist/peers/dir.d.ts +88 -0
  185. package/dist/peers/dir.d.ts.map +1 -0
  186. package/dist/peers/dir.js +139 -0
  187. package/dist/peers/dir.js.map +1 -0
  188. package/dist/peers/endpoint.d.ts +144 -0
  189. package/dist/peers/endpoint.d.ts.map +1 -0
  190. package/dist/peers/endpoint.js +420 -0
  191. package/dist/peers/endpoint.js.map +1 -0
  192. package/dist/peers/envelope.d.ts +42 -0
  193. package/dist/peers/envelope.d.ts.map +1 -0
  194. package/dist/peers/envelope.js +110 -0
  195. package/dist/peers/envelope.js.map +1 -0
  196. package/dist/peers/index.d.ts +30 -0
  197. package/dist/peers/index.d.ts.map +1 -0
  198. package/dist/peers/index.js +22 -0
  199. package/dist/peers/index.js.map +1 -0
  200. package/dist/peers/protocol.d.ts +645 -0
  201. package/dist/peers/protocol.d.ts.map +1 -0
  202. package/dist/peers/protocol.js +151 -0
  203. package/dist/peers/protocol.js.map +1 -0
  204. package/dist/peers/record.d.ts +71 -0
  205. package/dist/peers/record.d.ts.map +1 -0
  206. package/dist/peers/record.js +45 -0
  207. package/dist/peers/record.js.map +1 -0
  208. package/dist/peers/registry.d.ts +54 -0
  209. package/dist/peers/registry.d.ts.map +1 -0
  210. package/dist/peers/registry.js +213 -0
  211. package/dist/peers/registry.js.map +1 -0
  212. package/dist/plugin/define.d.ts +24 -0
  213. package/dist/plugin/define.d.ts.map +1 -0
  214. package/dist/plugin/define.js +42 -0
  215. package/dist/plugin/define.js.map +1 -0
  216. package/dist/plugin/index.d.ts +2 -0
  217. package/dist/plugin/index.d.ts.map +1 -1
  218. package/dist/plugin/index.js +1 -0
  219. package/dist/plugin/index.js.map +1 -1
  220. package/dist/plugin/lifecycle.d.ts +27 -3
  221. package/dist/plugin/lifecycle.d.ts.map +1 -1
  222. package/dist/plugin/lifecycle.js +242 -92
  223. package/dist/plugin/lifecycle.js.map +1 -1
  224. package/dist/plugin/resolver.d.ts +2 -2
  225. package/dist/plugin/resolver.d.ts.map +1 -1
  226. package/dist/plugin/resolver.js.map +1 -1
  227. package/dist/plugin/shell-hook.d.ts.map +1 -1
  228. package/dist/plugin/shell-hook.js +17 -3
  229. package/dist/plugin/shell-hook.js.map +1 -1
  230. package/dist/probe/errors.d.ts +2 -1
  231. package/dist/probe/errors.d.ts.map +1 -1
  232. package/dist/probe/errors.js +3 -2
  233. package/dist/probe/errors.js.map +1 -1
  234. package/dist/prompt/coding-agent-doctrine.d.ts +18 -7
  235. package/dist/prompt/coding-agent-doctrine.d.ts.map +1 -1
  236. package/dist/prompt/coding-agent-doctrine.js +11 -6
  237. package/dist/prompt/coding-agent-doctrine.js.map +1 -1
  238. package/dist/prompt/contributions.d.ts +4 -1
  239. package/dist/prompt/contributions.d.ts.map +1 -1
  240. package/dist/prompt/contributions.js +7 -2
  241. package/dist/prompt/contributions.js.map +1 -1
  242. package/dist/prompt/index.d.ts +1 -1
  243. package/dist/prompt/index.d.ts.map +1 -1
  244. package/dist/prompt/index.js +1 -1
  245. package/dist/prompt/index.js.map +1 -1
  246. package/dist/provider/collect-chat-completion.d.ts +6 -1
  247. package/dist/provider/collect-chat-completion.d.ts.map +1 -1
  248. package/dist/provider/collect-chat-completion.js +88 -10
  249. package/dist/provider/collect-chat-completion.js.map +1 -1
  250. package/dist/provider/mock.d.ts.map +1 -1
  251. package/dist/provider/mock.js +23 -6
  252. package/dist/provider/mock.js.map +1 -1
  253. package/dist/provider/registry.d.ts +2 -1
  254. package/dist/provider/registry.d.ts.map +1 -1
  255. package/dist/provider/registry.js +3 -2
  256. package/dist/provider/registry.js.map +1 -1
  257. package/dist/provider/tool-call-framing.d.ts +164 -0
  258. package/dist/provider/tool-call-framing.d.ts.map +1 -0
  259. package/dist/provider/tool-call-framing.js +163 -0
  260. package/dist/provider/tool-call-framing.js.map +1 -0
  261. package/dist/public-runtime.d.ts +24 -11
  262. package/dist/public-runtime.d.ts.map +1 -1
  263. package/dist/public-runtime.js +45 -9
  264. package/dist/public-runtime.js.map +1 -1
  265. package/dist/public-tools.d.ts +6 -4
  266. package/dist/public-tools.d.ts.map +1 -1
  267. package/dist/public-tools.js +8 -3
  268. package/dist/public-tools.js.map +1 -1
  269. package/dist/public-types.d.ts +13 -2
  270. package/dist/public-types.d.ts.map +1 -1
  271. package/dist/read-model/registry.d.ts +2 -1
  272. package/dist/read-model/registry.d.ts.map +1 -1
  273. package/dist/read-model/registry.js +3 -2
  274. package/dist/read-model/registry.js.map +1 -1
  275. package/dist/registry/ManagedRegistry.d.ts +30 -0
  276. package/dist/registry/ManagedRegistry.d.ts.map +1 -1
  277. package/dist/registry/ManagedRegistry.js +45 -6
  278. package/dist/registry/ManagedRegistry.js.map +1 -1
  279. package/dist/registry/collision.d.ts +57 -0
  280. package/dist/registry/collision.d.ts.map +1 -0
  281. package/dist/registry/collision.js +41 -0
  282. package/dist/registry/collision.js.map +1 -0
  283. package/dist/registry/command/index.d.ts +5 -3
  284. package/dist/registry/command/index.d.ts.map +1 -1
  285. package/dist/registry/command/index.js +6 -4
  286. package/dist/registry/command/index.js.map +1 -1
  287. package/dist/registry/index.d.ts +3 -4
  288. package/dist/registry/index.d.ts.map +1 -1
  289. package/dist/registry/index.js +2 -2
  290. package/dist/registry/index.js.map +1 -1
  291. package/dist/registry/plugin/index.d.ts.map +1 -1
  292. package/dist/registry/plugin/index.js +14 -1
  293. package/dist/registry/plugin/index.js.map +1 -1
  294. package/dist/registry/tool/callable.d.ts +7 -7
  295. package/dist/registry/tool/callable.d.ts.map +1 -1
  296. package/dist/registry/tool/callable.js +6 -7
  297. package/dist/registry/tool/callable.js.map +1 -1
  298. package/dist/registry/tool/execute.d.ts +14 -77
  299. package/dist/registry/tool/execute.d.ts.map +1 -1
  300. package/dist/registry/tool/execute.js +15 -727
  301. package/dist/registry/tool/execute.js.map +1 -1
  302. package/dist/registry/tool/portable.d.ts +25 -0
  303. package/dist/registry/tool/portable.d.ts.map +1 -1
  304. package/dist/registry/tool/portable.js +50 -0
  305. package/dist/registry/tool/portable.js.map +1 -1
  306. package/dist/registry/tool/presentation.d.ts +6 -5
  307. package/dist/registry/tool/presentation.d.ts.map +1 -1
  308. package/dist/registry/tool/presentation.js +3 -3
  309. package/dist/registry/tool/presentation.js.map +1 -1
  310. package/dist/runtime/bidi/session.d.ts +5 -4
  311. package/dist/runtime/bidi/session.d.ts.map +1 -1
  312. package/dist/runtime/bidi/session.js +18 -1
  313. package/dist/runtime/bidi/session.js.map +1 -1
  314. package/dist/runtime/query/executor/tool-call-admission.d.ts +45 -2
  315. package/dist/runtime/query/executor/tool-call-admission.d.ts.map +1 -1
  316. package/dist/runtime/query/executor/tool-call-admission.js +189 -5
  317. package/dist/runtime/query/executor/tool-call-admission.js.map +1 -1
  318. package/dist/runtime/query/executor.d.ts +33 -3
  319. package/dist/runtime/query/executor.d.ts.map +1 -1
  320. package/dist/runtime/query/executor.js +86 -10
  321. package/dist/runtime/query/executor.js.map +1 -1
  322. package/dist/runtime/query/file-evidence-replay.d.ts +1 -1
  323. package/dist/runtime/query/file-evidence-replay.d.ts.map +1 -1
  324. package/dist/runtime/query/file-evidence-replay.js +8 -7
  325. package/dist/runtime/query/file-evidence-replay.js.map +1 -1
  326. package/dist/runtime/query/fork/prepare.d.ts +4 -1
  327. package/dist/runtime/query/fork/prepare.d.ts.map +1 -1
  328. package/dist/runtime/query/fork/prepare.js +4 -0
  329. package/dist/runtime/query/fork/prepare.js.map +1 -1
  330. package/dist/runtime/query/guardrail-presets.d.ts +4 -3
  331. package/dist/runtime/query/guardrail-presets.d.ts.map +1 -1
  332. package/dist/runtime/query/guardrail-presets.js +4 -3
  333. package/dist/runtime/query/guardrail-presets.js.map +1 -1
  334. package/dist/runtime/query/index.d.ts +23 -10
  335. package/dist/runtime/query/index.d.ts.map +1 -1
  336. package/dist/runtime/query/index.js +149 -70
  337. package/dist/runtime/query/index.js.map +1 -1
  338. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  339. package/dist/runtime/query/iteration/index.js +8 -1
  340. package/dist/runtime/query/iteration/index.js.map +1 -1
  341. package/dist/runtime/query/iteration/phases/compaction.js +1 -1
  342. package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
  343. package/dist/runtime/query/iteration/phases/context.d.ts +2 -2
  344. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  345. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  346. package/dist/runtime/query/iteration/phases/tool-review.js +55 -2
  347. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  348. package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
  349. package/dist/runtime/query/iteration/stream-turn.js +342 -116
  350. package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
  351. package/dist/runtime/query/iteration/tool-input.d.ts +79 -0
  352. package/dist/runtime/query/iteration/tool-input.d.ts.map +1 -0
  353. package/dist/runtime/query/iteration/tool-input.js +291 -0
  354. package/dist/runtime/query/iteration/tool-input.js.map +1 -0
  355. package/dist/runtime/query/observation-context.d.ts +2 -2
  356. package/dist/runtime/query/observation-context.d.ts.map +1 -1
  357. package/dist/runtime/query/observation-context.js.map +1 -1
  358. package/dist/runtime/query/prelude-lease.d.ts +18 -0
  359. package/dist/runtime/query/prelude-lease.d.ts.map +1 -0
  360. package/dist/runtime/query/prelude-lease.js +121 -0
  361. package/dist/runtime/query/prelude-lease.js.map +1 -0
  362. package/dist/runtime/query/prepare-turn.d.ts.map +1 -1
  363. package/dist/runtime/query/prepare-turn.js +386 -187
  364. package/dist/runtime/query/prepare-turn.js.map +1 -1
  365. package/dist/runtime/query/prompt-cache.d.ts +2 -2
  366. package/dist/runtime/query/prompt-cache.d.ts.map +1 -1
  367. package/dist/runtime/query/prompt.d.ts +2 -2
  368. package/dist/runtime/query/prompt.d.ts.map +1 -1
  369. package/dist/runtime/query/prompt.js +1 -1
  370. package/dist/runtime/query/prompt.js.map +1 -1
  371. package/dist/runtime/query/resume-session.d.ts.map +1 -1
  372. package/dist/runtime/query/resume-session.js +37 -2
  373. package/dist/runtime/query/resume-session.js.map +1 -1
  374. package/dist/runtime/query/review-policy.d.ts +22 -3
  375. package/dist/runtime/query/review-policy.d.ts.map +1 -1
  376. package/dist/runtime/query/review-policy.js +84 -6
  377. package/dist/runtime/query/review-policy.js.map +1 -1
  378. package/dist/runtime/query/tooling.d.ts +3 -2
  379. package/dist/runtime/query/tooling.d.ts.map +1 -1
  380. package/dist/runtime/query/tooling.js.map +1 -1
  381. package/dist/runtime/query/turn-state.d.ts.map +1 -1
  382. package/dist/runtime/query/turn-state.js +5 -0
  383. package/dist/runtime/query/turn-state.js.map +1 -1
  384. package/dist/runtime/system-events.d.ts +112 -0
  385. package/dist/runtime/system-events.d.ts.map +1 -0
  386. package/dist/runtime/system-events.js +183 -0
  387. package/dist/runtime/system-events.js.map +1 -0
  388. package/dist/scheduler/delegating.d.ts +2 -1
  389. package/dist/scheduler/delegating.d.ts.map +1 -1
  390. package/dist/scheduler/delegating.js +3 -2
  391. package/dist/scheduler/delegating.js.map +1 -1
  392. package/dist/skills/index.d.ts +1 -1
  393. package/dist/skills/index.d.ts.map +1 -1
  394. package/dist/skills/index.js +1 -1
  395. package/dist/skills/index.js.map +1 -1
  396. package/dist/skills/registry.d.ts +12 -0
  397. package/dist/skills/registry.d.ts.map +1 -1
  398. package/dist/skills/registry.js +19 -0
  399. package/dist/skills/registry.js.map +1 -1
  400. package/dist/store/evidence/index-page.d.ts +2 -2
  401. package/dist/store/session-log/conformance.d.ts +1 -1
  402. package/dist/store/session-log/conformance.d.ts.map +1 -1
  403. package/dist/store/session-log/conformance.js +49 -8
  404. package/dist/store/session-log/conformance.js.map +1 -1
  405. package/dist/store/session-log/core.d.ts +8 -3
  406. package/dist/store/session-log/core.d.ts.map +1 -1
  407. package/dist/store/session-log/core.js +2 -1
  408. package/dist/store/session-log/core.js.map +1 -1
  409. package/dist/store/session-log/fold.d.ts +12 -0
  410. package/dist/store/session-log/fold.d.ts.map +1 -1
  411. package/dist/store/session-log/fold.js +57 -7
  412. package/dist/store/session-log/fold.js.map +1 -1
  413. package/dist/store/session-log/index.d.ts +2 -2
  414. package/dist/store/session-log/index.d.ts.map +1 -1
  415. package/dist/store/session-log/index.js +1 -1
  416. package/dist/store/session-log/index.js.map +1 -1
  417. package/dist/test-support/toolset.d.ts +19 -0
  418. package/dist/test-support/toolset.d.ts.map +1 -0
  419. package/dist/test-support/toolset.js +20 -0
  420. package/dist/test-support/toolset.js.map +1 -0
  421. package/dist/tools/builtins/bash.d.ts +29 -0
  422. package/dist/tools/builtins/bash.d.ts.map +1 -1
  423. package/dist/tools/builtins/bash.js +19 -9
  424. package/dist/tools/builtins/bash.js.map +1 -1
  425. package/dist/tools/builtins/browser-url.d.ts +1 -1
  426. package/dist/tools/builtins/browser-url.js +1 -1
  427. package/dist/tools/builtins/browser.d.ts +6 -6
  428. package/dist/tools/builtins/computer-use.d.ts.map +1 -1
  429. package/dist/tools/builtins/computer-use.js +19 -11
  430. package/dist/tools/builtins/computer-use.js.map +1 -1
  431. package/dist/tools/builtins/edit.d.ts.map +1 -1
  432. package/dist/tools/builtins/edit.js +9 -1
  433. package/dist/tools/builtins/edit.js.map +1 -1
  434. package/dist/tools/builtins/json-string-hint.d.ts +15 -0
  435. package/dist/tools/builtins/json-string-hint.d.ts.map +1 -0
  436. package/dist/tools/builtins/json-string-hint.js +17 -0
  437. package/dist/tools/builtins/json-string-hint.js.map +1 -0
  438. package/dist/tools/builtins/search-tools.d.ts.map +1 -1
  439. package/dist/tools/builtins/search-tools.js +7 -15
  440. package/dist/tools/builtins/search-tools.js.map +1 -1
  441. package/dist/tools/builtins/write-file.d.ts.map +1 -1
  442. package/dist/tools/builtins/write-file.js +11 -0
  443. package/dist/tools/builtins/write-file.js.map +1 -1
  444. package/dist/tools/command-shell.d.ts +10 -0
  445. package/dist/tools/command-shell.d.ts.map +1 -1
  446. package/dist/tools/command-shell.js +45 -1
  447. package/dist/tools/command-shell.js.map +1 -1
  448. package/dist/tools/coordinator/agent.d.ts.map +1 -1
  449. package/dist/tools/coordinator/agent.js +5 -0
  450. package/dist/tools/coordinator/agent.js.map +1 -1
  451. package/dist/tools/coordinator/ask-user-question.d.ts.map +1 -1
  452. package/dist/tools/coordinator/ask-user-question.js +26 -13
  453. package/dist/tools/coordinator/ask-user-question.js.map +1 -1
  454. package/dist/tools/coordinator/index.d.ts.map +1 -1
  455. package/dist/tools/coordinator/index.js +5 -0
  456. package/dist/tools/coordinator/index.js.map +1 -1
  457. package/dist/tools/coordinator/question-options.d.ts +78 -0
  458. package/dist/tools/coordinator/question-options.d.ts.map +1 -0
  459. package/dist/tools/coordinator/question-options.js +153 -0
  460. package/dist/tools/coordinator/question-options.js.map +1 -0
  461. package/dist/tools/defineTool.d.ts +10 -0
  462. package/dist/tools/defineTool.d.ts.map +1 -1
  463. package/dist/tools/defineTool.js +17 -0
  464. package/dist/tools/defineTool.js.map +1 -1
  465. package/dist/tools/memory/search.d.ts.map +1 -1
  466. package/dist/tools/memory/search.js +4 -1
  467. package/dist/tools/memory/search.js.map +1 -1
  468. package/dist/tools/memory/update.d.ts.map +1 -1
  469. package/dist/tools/memory/update.js +8 -5
  470. package/dist/tools/memory/update.js.map +1 -1
  471. package/dist/tools/render-nonce.d.ts +47 -0
  472. package/dist/tools/render-nonce.d.ts.map +1 -0
  473. package/dist/tools/render-nonce.js +63 -0
  474. package/dist/tools/render-nonce.js.map +1 -0
  475. package/dist/tools/roster.d.ts +46 -19
  476. package/dist/tools/roster.d.ts.map +1 -1
  477. package/dist/tools/roster.js +63 -33
  478. package/dist/tools/roster.js.map +1 -1
  479. package/dist/tools/schedules/schedule-tool.d.ts.map +1 -1
  480. package/dist/tools/schedules/schedule-tool.js +94 -14
  481. package/dist/tools/schedules/schedule-tool.js.map +1 -1
  482. package/dist/tools/schedules/types.d.ts +52 -6
  483. package/dist/tools/schedules/types.d.ts.map +1 -1
  484. package/dist/tools/trusted-read-only.d.ts +9 -5
  485. package/dist/tools/trusted-read-only.d.ts.map +1 -1
  486. package/dist/tools/trusted-read-only.js +14 -10
  487. package/dist/tools/trusted-read-only.js.map +1 -1
  488. package/dist/tools/untrusted-envelope.d.ts +67 -28
  489. package/dist/tools/untrusted-envelope.d.ts.map +1 -1
  490. package/dist/tools/untrusted-envelope.js +108 -59
  491. package/dist/tools/untrusted-envelope.js.map +1 -1
  492. package/dist/toolsets/combine.d.ts +44 -0
  493. package/dist/toolsets/combine.d.ts.map +1 -0
  494. package/dist/toolsets/combine.js +153 -0
  495. package/dist/toolsets/combine.js.map +1 -0
  496. package/dist/toolsets/manager.d.ts +201 -0
  497. package/dist/toolsets/manager.d.ts.map +1 -0
  498. package/dist/toolsets/manager.js +837 -0
  499. package/dist/toolsets/manager.js.map +1 -0
  500. package/dist/toolsets/source-glob.d.ts +15 -0
  501. package/dist/toolsets/source-glob.d.ts.map +1 -0
  502. package/dist/toolsets/source-glob.js +23 -0
  503. package/dist/toolsets/source-glob.js.map +1 -0
  504. package/dist/toolsets/toolset.d.ts +20 -0
  505. package/dist/toolsets/toolset.d.ts.map +1 -0
  506. package/dist/toolsets/toolset.js +28 -0
  507. package/dist/toolsets/toolset.js.map +1 -0
  508. package/dist/toolsets/types.d.ts +128 -0
  509. package/dist/toolsets/types.d.ts.map +1 -0
  510. package/dist/toolsets/types.js +33 -0
  511. package/dist/toolsets/types.js.map +1 -0
  512. package/dist/toolsets/wrappers.d.ts +59 -0
  513. package/dist/toolsets/wrappers.d.ts.map +1 -0
  514. package/dist/toolsets/wrappers.js +165 -0
  515. package/dist/toolsets/wrappers.js.map +1 -0
  516. package/dist/types/agent/base.d.ts +27 -16
  517. package/dist/types/agent/base.d.ts.map +1 -1
  518. package/dist/types/agent/index.d.ts +1 -0
  519. package/dist/types/agent/index.d.ts.map +1 -1
  520. package/dist/types/agent/index.js +1 -0
  521. package/dist/types/agent/index.js.map +1 -1
  522. package/dist/types/agent/pipeline.d.ts +2 -0
  523. package/dist/types/agent/pipeline.d.ts.map +1 -1
  524. package/dist/types/agent/query.d.ts +117 -0
  525. package/dist/types/agent/query.d.ts.map +1 -0
  526. package/dist/types/agent/query.js +2 -0
  527. package/dist/types/agent/query.js.map +1 -0
  528. package/dist/types/agent/reactive.d.ts +2 -129
  529. package/dist/types/agent/reactive.d.ts.map +1 -1
  530. package/dist/types/agent/router.d.ts +2 -0
  531. package/dist/types/agent/router.d.ts.map +1 -1
  532. package/dist/types/agent/supervisor.d.ts +5 -2
  533. package/dist/types/agent/supervisor.d.ts.map +1 -1
  534. package/dist/types/authorization/index.d.ts +49 -12
  535. package/dist/types/authorization/index.d.ts.map +1 -1
  536. package/dist/types/authorization/index.js +6 -0
  537. package/dist/types/authorization/index.js.map +1 -1
  538. package/dist/types/connector/mcp.d.ts +32 -0
  539. package/dist/types/connector/mcp.d.ts.map +1 -1
  540. package/dist/types/errors/index.d.ts +15 -0
  541. package/dist/types/errors/index.d.ts.map +1 -1
  542. package/dist/types/errors/index.js.map +1 -1
  543. package/dist/types/hitl/index.d.ts +57 -0
  544. package/dist/types/hitl/index.d.ts.map +1 -1
  545. package/dist/types/hitl/index.js.map +1 -1
  546. package/dist/types/message/index.d.ts +130 -9
  547. package/dist/types/message/index.d.ts.map +1 -1
  548. package/dist/types/message/index.js +4 -1
  549. package/dist/types/message/index.js.map +1 -1
  550. package/dist/types/plugin/index.d.ts +22 -4
  551. package/dist/types/plugin/index.d.ts.map +1 -1
  552. package/dist/types/plugin/index.js +1 -0
  553. package/dist/types/plugin/index.js.map +1 -1
  554. package/dist/types/provider/chat.d.ts +5 -0
  555. package/dist/types/provider/chat.d.ts.map +1 -1
  556. package/dist/types/provider/config.d.ts +8 -3
  557. package/dist/types/provider/config.d.ts.map +1 -1
  558. package/dist/types/provider/stream.d.ts +39 -0
  559. package/dist/types/provider/stream.d.ts.map +1 -1
  560. package/dist/types/sandbox/index.d.ts +1 -1
  561. package/dist/types/session/events.d.ts +14 -3
  562. package/dist/types/session/events.d.ts.map +1 -1
  563. package/dist/types/session/events.js.map +1 -1
  564. package/dist/types/tool/index.d.ts +152 -91
  565. package/dist/types/tool/index.d.ts.map +1 -1
  566. package/dist/types/tool/index.js.map +1 -1
  567. package/dist/types/toolset/index.d.ts +10 -40
  568. package/dist/types/toolset/index.d.ts.map +1 -1
  569. package/package.json +1 -1
  570. package/src/advisory/history.ts +27 -2
  571. package/src/advisory/index.ts +1 -1
  572. package/src/advisory/registry.ts +33 -0
  573. package/src/agents/AGENTS.md +14 -7
  574. package/src/agents/PipelineAgent.ts +2 -303
  575. package/src/agents/QueryAgent.ts +269 -0
  576. package/src/agents/ReactiveAgent.ts +6 -216
  577. package/src/agents/RouterAgent.ts +2 -337
  578. package/src/agents/SupervisorAgent.ts +3 -476
  579. package/src/agents/defineAgent.ts +13 -2
  580. package/src/agents/examples/PipelineAgent.ts +302 -0
  581. package/src/agents/examples/RouterAgent.ts +338 -0
  582. package/src/agents/examples/SupervisorAgent.ts +472 -0
  583. package/src/agents/explore.ts +6 -3
  584. package/src/agents/forward-options.ts +37 -0
  585. package/src/agents/index.ts +2 -0
  586. package/src/agents/runAgent.ts +144 -37
  587. package/src/authorization/command-line.ts +2 -2
  588. package/src/authorization/gate.ts +21 -1
  589. package/src/authorization/program.ts +773 -0
  590. package/src/authorization/reexec-wrapper.ts +589 -0
  591. package/src/authorization/rules.ts +18 -1
  592. package/src/authorization/shell-lexer.ts +104 -59
  593. package/src/bridge/sse/mapper.ts +6 -0
  594. package/src/capabilities/index.ts +157 -0
  595. package/src/config/registry.ts +4 -1
  596. package/src/connector/index.ts +9 -2
  597. package/src/connector/mcp/adapter.ts +58 -3
  598. package/src/connector/mcp/client.ts +20 -4
  599. package/src/connector/mcp/discovery.ts +60 -0
  600. package/src/connector/mcp/index.ts +13 -0
  601. package/src/connector/mcp/mcp-toolset.ts +515 -0
  602. package/src/connector/tools/index.ts +2 -2
  603. package/src/connector/tools/router.ts +35 -58
  604. package/src/directory/derive-supervisor.ts +12 -8
  605. package/src/directory/derive.ts +8 -5
  606. package/src/execution/code-runtime/types.ts +2 -2
  607. package/src/invariants/index.ts +4 -1
  608. package/src/manager/agent/lifecycle.ts +9 -0
  609. package/src/manager/connector/environment.ts +17 -4
  610. package/src/manager/connector/index.ts +2 -2
  611. package/src/manager/connector/tenant.ts +17 -4
  612. package/src/manager/index.ts +2 -2
  613. package/src/manager/session/attribution.ts +79 -0
  614. package/src/manager/session/turn-recorder.ts +211 -55
  615. package/src/peers/address.ts +58 -0
  616. package/src/peers/client.ts +202 -0
  617. package/src/peers/dir.ts +176 -0
  618. package/src/peers/endpoint.ts +564 -0
  619. package/src/peers/envelope.ts +121 -0
  620. package/src/peers/index.ts +96 -0
  621. package/src/peers/protocol.ts +196 -0
  622. package/src/peers/record.ts +56 -0
  623. package/src/peers/registry.ts +241 -0
  624. package/src/plugin/define.ts +68 -0
  625. package/src/plugin/index.ts +2 -0
  626. package/src/plugin/lifecycle.ts +286 -106
  627. package/src/plugin/resolver.ts +6 -3
  628. package/src/plugin/shell-hook.ts +21 -5
  629. package/src/probe/errors.ts +4 -1
  630. package/src/prompt/coding-agent-doctrine.ts +22 -10
  631. package/src/prompt/contributions.ts +12 -2
  632. package/src/prompt/index.ts +1 -0
  633. package/src/provider/collect-chat-completion.ts +96 -11
  634. package/src/provider/mock.ts +24 -6
  635. package/src/provider/registry.ts +4 -1
  636. package/src/provider/tool-call-framing.ts +226 -0
  637. package/src/public-runtime.ts +136 -7
  638. package/src/public-tools.ts +24 -4
  639. package/src/public-types.ts +60 -6
  640. package/src/read-model/registry.ts +7 -2
  641. package/src/registry/ManagedRegistry.ts +57 -6
  642. package/src/registry/collision.ts +64 -0
  643. package/src/registry/command/index.ts +7 -3
  644. package/src/registry/index.ts +3 -9
  645. package/src/registry/plugin/index.ts +14 -1
  646. package/src/registry/tool/callable.ts +8 -9
  647. package/src/registry/tool/execute.ts +16 -846
  648. package/src/registry/tool/portable.ts +59 -0
  649. package/src/registry/tool/presentation.ts +6 -5
  650. package/src/runtime/bidi/session.ts +24 -5
  651. package/src/runtime/query/executor/tool-call-admission.ts +228 -6
  652. package/src/runtime/query/executor.ts +110 -12
  653. package/src/runtime/query/file-evidence-replay.ts +8 -7
  654. package/src/runtime/query/fork/prepare.ts +6 -1
  655. package/src/runtime/query/guardrail-presets.ts +4 -3
  656. package/src/runtime/query/index.ts +199 -101
  657. package/src/runtime/query/iteration/index.ts +13 -3
  658. package/src/runtime/query/iteration/phases/compaction.ts +1 -1
  659. package/src/runtime/query/iteration/phases/context.ts +2 -2
  660. package/src/runtime/query/iteration/phases/tool-review.ts +59 -2
  661. package/src/runtime/query/iteration/stream-turn.ts +390 -136
  662. package/src/runtime/query/iteration/tool-input.ts +284 -0
  663. package/src/runtime/query/observation-context.ts +2 -2
  664. package/src/runtime/query/prelude-lease.ts +132 -0
  665. package/src/runtime/query/prepare-turn.ts +477 -198
  666. package/src/runtime/query/prompt-cache.ts +2 -2
  667. package/src/runtime/query/prompt.ts +4 -4
  668. package/src/runtime/query/resume-session.ts +42 -3
  669. package/src/runtime/query/review-policy.ts +87 -9
  670. package/src/runtime/query/tooling.ts +3 -6
  671. package/src/runtime/query/turn-state.ts +4 -0
  672. package/src/runtime/system-events.ts +246 -0
  673. package/src/scheduler/delegating.ts +7 -2
  674. package/src/skills/index.ts +1 -1
  675. package/src/skills/registry.ts +25 -0
  676. package/src/store/session-log/conformance.ts +51 -8
  677. package/src/store/session-log/core.ts +10 -4
  678. package/src/store/session-log/fold.ts +33 -7
  679. package/src/store/session-log/index.ts +2 -0
  680. package/src/test-support/toolset.ts +23 -0
  681. package/src/tools/builtins/bash.ts +27 -10
  682. package/src/tools/builtins/browser-url.ts +1 -1
  683. package/src/tools/builtins/computer-use.ts +21 -11
  684. package/src/tools/builtins/edit.ts +12 -2
  685. package/src/tools/builtins/json-string-hint.ts +16 -0
  686. package/src/tools/builtins/search-tools.ts +7 -20
  687. package/src/tools/builtins/write-file.ts +12 -0
  688. package/src/tools/command-shell.ts +46 -1
  689. package/src/tools/coordinator/agent.ts +6 -0
  690. package/src/tools/coordinator/ask-user-question.ts +29 -15
  691. package/src/tools/coordinator/index.ts +6 -0
  692. package/src/tools/coordinator/question-options.ts +195 -0
  693. package/src/tools/defineTool.ts +28 -0
  694. package/src/tools/memory/search.ts +4 -1
  695. package/src/tools/memory/update.ts +8 -5
  696. package/src/tools/render-nonce.ts +69 -0
  697. package/src/tools/roster.ts +84 -33
  698. package/src/tools/schedules/schedule-tool.ts +107 -14
  699. package/src/tools/schedules/types.ts +52 -6
  700. package/src/tools/trusted-read-only.ts +19 -10
  701. package/src/tools/untrusted-envelope.ts +121 -57
  702. package/src/toolsets/combine.ts +181 -0
  703. package/src/toolsets/manager.ts +996 -0
  704. package/src/toolsets/source-glob.ts +22 -0
  705. package/src/toolsets/toolset.ts +31 -0
  706. package/src/toolsets/types.ts +154 -0
  707. package/src/toolsets/wrappers.ts +191 -0
  708. package/src/types/agent/base.ts +29 -16
  709. package/src/types/agent/index.ts +1 -0
  710. package/src/types/agent/pipeline.ts +2 -0
  711. package/src/types/agent/query.ts +129 -0
  712. package/src/types/agent/reactive.ts +5 -142
  713. package/src/types/agent/router.ts +2 -0
  714. package/src/types/agent/supervisor.ts +5 -2
  715. package/src/types/authorization/index.ts +12 -0
  716. package/src/types/connector/mcp.ts +32 -0
  717. package/src/types/errors/index.ts +15 -0
  718. package/src/types/hitl/index.ts +57 -0
  719. package/src/types/message/index.ts +135 -7
  720. package/src/types/plugin/index.ts +44 -21
  721. package/src/types/provider/chat.ts +5 -0
  722. package/src/types/provider/config.ts +8 -3
  723. package/src/types/provider/stream.ts +39 -0
  724. package/src/types/sandbox/index.ts +1 -1
  725. package/src/types/session/events.ts +14 -3
  726. package/src/types/tool/index.ts +154 -105
  727. package/src/types/toolset/index.ts +10 -47
  728. package/dist/registry/toolset/catalog.d.ts +0 -42
  729. package/dist/registry/toolset/catalog.d.ts.map +0 -1
  730. package/dist/registry/toolset/catalog.js +0 -234
  731. package/dist/registry/toolset/catalog.js.map +0 -1
  732. package/src/registry/toolset/catalog.ts +0 -308
@@ -326,26 +326,41 @@ export function assertPluginHookResult(result: PluginHookResult): asserts result
326
326
  }
327
327
  }
328
328
 
329
- export interface PluginHookDefinition {
330
- readonly event: PluginHookEvent
331
- readonly handler: (context: PluginHookContext) => Promise<PluginHookResult>
332
- /**
333
- * Lower runs first. Default 100.
334
- *
335
- * Order was install order, which is neither declared nor stable — it
336
- * depends on when each plugin happened to be installed. That is fine
337
- * for hooks that only observe, and wrong for the ones that decide:
338
- * `executeHooks` SHORT-CIRCUITS on `skip` and `error`, so a hook that
339
- * denies a dangerous command only gets to deny it if it runs before
340
- * whatever else stops the chain. A guard that fires depending on
341
- * installation history is not a guard.
342
- *
343
- * Ties keep registration order, so plugins that never set a priority
344
- * behave exactly as before. Convention: guards below 100, observers
345
- * above.
346
- */
347
- readonly priority?: number
348
- }
329
+ /** Actions the query can interpret for a particular hook event. */
330
+ export type PluginHookResultFor<E extends PluginHookEvent> = E extends 'user_prompt_submit'
331
+ ? Extract<PluginHookResult, { action: 'continue' | 'annotate' | 'skip' | 'error' }>
332
+ : E extends 'pre_tool_use'
333
+ ? Extract<PluginHookResult, { action: 'continue' | 'skip' | 'modify' | 'error' }>
334
+ : E extends 'post_tool_use'
335
+ ? Extract<PluginHookResult, { action: 'continue' | 'replace' | 'retry' | 'error' }>
336
+ : E extends 'turn_interrupt' | 'session_start' | 'session_end'
337
+ ? Extract<PluginHookResult, { action: 'continue' }>
338
+ : Extract<PluginHookResult, { action: 'continue' | 'error' }>
339
+
340
+ /** The event and its handler verdict stay correlated, including in hook arrays. */
341
+ export type PluginHookDefinition<E extends PluginHookEvent = PluginHookEvent> =
342
+ E extends PluginHookEvent
343
+ ? {
344
+ readonly event: E
345
+ readonly handler: (context: PluginHookContext) => Promise<PluginHookResultFor<E>>
346
+ /**
347
+ * Lower runs first. Default 100.
348
+ *
349
+ * Order was install order, which is neither declared nor stable — it
350
+ * depends on when each plugin happened to be installed. That is fine
351
+ * for hooks that only observe, and wrong for the ones that decide:
352
+ * `executeHooks` SHORT-CIRCUITS on `skip` and `error`, so a hook that
353
+ * denies a dangerous command only gets to deny it if it runs before
354
+ * whatever else stops the chain. A guard that fires depending on
355
+ * installation history is not a guard.
356
+ *
357
+ * Ties keep registration order, so plugins that never set a priority
358
+ * behave exactly as before. Convention: guards below 100, observers
359
+ * above.
360
+ */
361
+ readonly priority?: number
362
+ }
363
+ : never
349
364
 
350
365
  // ---------------------------------------------------------------------------
351
366
  // Plugin MCP server config
@@ -367,6 +382,8 @@ export interface PluginManifest {
367
382
  readonly version: string
368
383
  readonly description: string
369
384
  readonly author?: string
385
+ /** Plugin-authored request context, present only while this plugin is enabled. */
386
+ readonly instructions?: string
370
387
  readonly tools?: readonly string[]
371
388
  readonly skills?: readonly string[]
372
389
  readonly hooks?: readonly string[]
@@ -391,6 +408,7 @@ export const PluginManifestSchema = z.object({
391
408
  version: z.string().min(1),
392
409
  description: z.string().min(1),
393
410
  author: z.string().optional(),
411
+ instructions: z.string().min(1).optional(),
394
412
  tools: z.array(z.string()).max(MAX_TOOLS_PER_PLUGIN).optional(),
395
413
  skills: z.array(z.string()).max(MAX_SKILLS_PER_PLUGIN).optional(),
396
414
  hooks: z.array(z.string()).max(MAX_HOOKS_PER_PLUGIN).optional(),
@@ -419,7 +437,12 @@ export interface PluginDefinition {
419
437
  // ---------------------------------------------------------------------------
420
438
 
421
439
  export type PluginLifecycleEvent =
422
- | { type: 'plugin_installed'; pluginId: PluginId; name: string; scope: PluginScope }
440
+ | {
441
+ type: 'plugin_installed'
442
+ pluginId: PluginId
443
+ name: string
444
+ scope: PluginScope
445
+ }
423
446
  | { type: 'plugin_enabled'; pluginId: PluginId; name: string }
424
447
  | { type: 'plugin_disabled'; pluginId: PluginId; name: string }
425
448
  | { type: 'plugin_uninstalled'; pluginId: PluginId; name: string }
@@ -193,5 +193,10 @@ export interface ChatCompletionResponse {
193
193
  citations?: readonly import('../message/index.js').Citation[]
194
194
  }
195
195
  finishReason: 'stop' | 'tool_calls' | 'length' | 'content_filter'
196
+ /**
197
+ * `'context_window'` when a `'length'` finish was the model's context
198
+ * window rather than the output token limit; see `StreamChunk.finishDetail`.
199
+ */
200
+ finishDetail?: 'context_window'
196
201
  usage: TokenUsage
197
202
  }
@@ -38,9 +38,14 @@ export interface MockToolCall {
38
38
  /** Fragment size for the argument JSON; smaller exercises more buffering. */
39
39
  argChunkSize?: number
40
40
  /**
41
- * Omit the block-close signal and stop mid-JSON, reproducing the
42
- * provider cutting a tool call off at `max_tokens`. The consumer should
43
- * mark the call `inputTruncated` rather than crashing on a parse.
41
+ * Send only the first half of the arguments, omit the block-close signal
42
+ * and finish with `'length'` (unless the turn sets `finishReason`),
43
+ * reproducing the provider cutting a tool call off at `max_tokens`. The
44
+ * response ends at this call, as an output limit ends it: later calls in
45
+ * the turn's `toolCalls` are not streamed. The consumer should mark the
46
+ * call `inputTruncated` with a `truncated` `inputError` rather than
47
+ * crashing on a parse; under a scripted `finishReason` of `'stop'` or
48
+ * `'tool_calls'` it is `malformed` instead.
44
49
  */
45
50
  truncateArguments?: boolean
46
51
  /**
@@ -29,8 +29,28 @@ export interface StreamChunk {
29
29
  }
30
30
 
31
31
  content?: string
32
+ /**
33
+ * Who wrote {@link content}. Absent means the model. `'driver'` marks
34
+ * text a driver adds of its own after the model's output, such as a
35
+ * list of the sources a hosted search used. It is shown and kept in
36
+ * the message like any other text, but it is not output the model
37
+ * produced: the turn loop does not read it as the model moving on from
38
+ * its last tool call, which would turn a call the output limit cut
39
+ * off into a malformed one.
40
+ */
41
+ contentOrigin?: 'driver'
32
42
  /** Identity and phase of this content fragment, when the provider supplies them. */
33
43
  textPart?: Omit<import('../message/index.js').AssistantTextPart, 'text'>
44
+ /**
45
+ * Fragments of tool calls. `index` is what groups them: every fragment
46
+ * of one call carries the same index, and no other call in the
47
+ * response uses it. The call's `id` and `function.name` may arrive on
48
+ * any of its fragments, including after arguments; arguments that
49
+ * arrive first are kept for the call at their index. The turn loop gives
50
+ * a call whose id never arrives, here or on `toolCallEnd`, an id of its
51
+ * own. A second id on an index another call holds is refused, by the
52
+ * turn loop and by `collectChatCompletion`.
53
+ */
34
54
  toolCalls?: Array<{
35
55
  index: number
36
56
  id?: string
@@ -52,6 +72,12 @@ export interface StreamChunk {
52
72
  * leave this undefined; the orchestrator infers from
53
73
  * end-of-stream instead.
54
74
  *
75
+ * `id` fills in the call's id when no fragment carried one. The
76
+ * completion always carries the id the call was announced with, and
77
+ * follows the announcement: a close with an empty `id` for a call no
78
+ * fragment named, or for a call whose name has not arrived, is
79
+ * settled when the stream ends instead.
80
+ *
55
81
  * Added 2026-05-01 (ses_001-tool-stream-events A9).
56
82
  */
57
83
  toolCallEnd?: {
@@ -93,6 +119,19 @@ export interface StreamChunk {
93
119
  citation?: import('../message/index.js').Citation
94
120
  }
95
121
  finishReason?: 'stop' | 'tool_calls' | 'length' | 'content_filter'
122
+ /**
123
+ * Which limit a `'length'` finish reached, when it was not the output
124
+ * token limit: `'context_window'` when the response filled the model's
125
+ * context window (a stop reason such as `model_context_window_exceeded`
126
+ * or `model_length`).
127
+ *
128
+ * Both stop the output where it stands, so both are `'length'`, and a
129
+ * tool call either one cut off is truncated. They differ in what can
130
+ * follow: after the output limit the turn loop asks the model to continue
131
+ * a reply it cut off mid-text, and after the context window there is no
132
+ * room to continue into. Set only with `finishReason: 'length'`.
133
+ */
134
+ finishDetail?: 'context_window'
96
135
  usage?: TokenUsage
97
136
  error?: string
98
137
 
@@ -466,7 +466,7 @@ export interface SandboxDestroyOptions {
466
466
  * - `azureFileShare` — mount an Azure Files SMB share into the
467
467
  * container. Used by managed Azure Container Instances (incl.
468
468
  * Standby Pool) which have no host filesystem to bind from; the
469
- * Vandal-side host provisions a per-task share before claim and
469
+ * host provisions a per-task share before claim and
470
470
  * the ACI backend translates this variant to ACI's `volume +
471
471
  * azureFile` shape.
472
472
  */
@@ -1096,11 +1096,22 @@ type CoreSessionEvent =
1096
1096
  toolUseId: ToolUseId
1097
1097
  input: unknown
1098
1098
  /**
1099
- * True when the provider stream ended before the tool JSON
1100
- * arguments closed. `input` stays a sanitized object so public
1101
- * consumers never receive internal recovery sentinels.
1099
+ * True when the streamed arguments could not be read, whether the
1100
+ * response stopped before they closed or they were not valid JSON;
1101
+ * {@link inputError} says which. `input` is then `{}`, a sanitized
1102
+ * object, so public consumers never receive internal recovery
1103
+ * sentinels.
1102
1104
  */
1103
1105
  inputTruncated?: boolean
1106
+ /** Why the arguments could not be read. Present exactly when `inputTruncated` is. */
1107
+ inputError?: import('../message/index.js').ToolInputError
1108
+ /**
1109
+ * The arguments as they arrived, when they could not be read: at most
1110
+ * the first 16 384 characters, with `inputError.length` saying how many
1111
+ * there were. The whole text stays on the assistant message, as
1112
+ * `ToolCall.metadata.partialArguments`.
1113
+ */
1114
+ partialArguments?: string
1104
1115
  }
1105
1116
 
1106
1117
  /**
@@ -1,5 +1,4 @@
1
1
  import type { z } from 'zod'
2
- import type { Logger } from '../../utils/logger.js'
3
2
  import type { CodeNavigationProvider } from '../code-navigation/index.js'
4
3
  // Type-only, and circular by design: a tool-result guardrail is described in
5
4
  // terms of the tool that produced the result, and the registry that holds
@@ -12,18 +11,27 @@ import type { PermissionMode } from '../permission/index.js'
12
11
  import type { Sandbox } from '../sandbox/index.js'
13
12
  import type { ToolPresentation } from './presentation.js'
14
13
 
15
- export interface ToolRegistryRef {
16
- searchDeferred(query: string): ToolDefinition[]
17
- /** Ranked active matches, when this registry supports active-tool discovery. */
18
- searchActive?(query: string): ToolDefinition[]
19
- activate(names: string[]): void
20
- getAvailability(name: string): ToolAvailability
14
+ /**
15
+ * The read-only slice of a `ToolManager` (`toolsets/manager.ts`) a running
16
+ * tool's own `execute()` body is given, through {@link ToolContext.toolRegistry}.
17
+ *
18
+ * Replaces the old `ToolRegistryRef`, which also carried `activate` (a
19
+ * mutation) and an optional `searchActive`. Availability is derived, not
20
+ * mutated (see `ToolManager.availability`), so there is nothing left for a
21
+ * tool body to activate: a tool that wants to make more of the catalogue
22
+ * callable returns `ToolResult.reveals` instead, and the manager derives the
23
+ * effect from that result once it is persisted onto the tool message.
24
+ */
25
+ export interface ToolsView {
26
+ has(name: string): boolean
27
+ availability(name: string): ToolAvailability
28
+ searchDeferred(query: string, limit?: number): readonly ToolDefinition[]
21
29
  }
22
30
 
23
31
  /**
24
32
  * The slice of the skills registry a tool is given.
25
33
  *
26
- * Structural for the reason `ToolRegistryRef` is: this file is imported by
34
+ * Structural for the reason `ToolsView` is: this file is imported by
27
35
  * everything, and naming `SkillRegistry` here would drag the skill loader's
28
36
  * filesystem imports into every consumer's type graph.
29
37
  */
@@ -98,7 +106,7 @@ export interface SkillRegistryRef {
98
106
  * The slice of the background job registry a tool is given.
99
107
  *
100
108
  * A structural reference rather than the class, for the reason
101
- * `ToolRegistryRef` exists: this type file is imported by everything, and
109
+ * `ToolsView` exists: this type file is imported by everything, and
102
110
  * naming the implementation here would drag a `node:child_process` module
103
111
  * into every consumer's type graph. `owner` is not on this surface at all —
104
112
  * the executor binds it to the turn, so a tool cannot start a job that
@@ -400,7 +408,7 @@ export interface ToolContext {
400
408
 
401
409
  invocationState?: InvocationState
402
410
 
403
- toolRegistry?: ToolRegistryRef
411
+ toolRegistry?: ToolsView
404
412
  /**
405
413
  * The names this turn may call, if the turn was narrowed.
406
414
  *
@@ -550,7 +558,7 @@ export interface ToolContext {
550
558
  * option alone is the host's to write and the kernel's default reaches
551
559
  * nobody.
552
560
  *
553
- * The registry's own {@link ToolRegistryConfig.resultGuardrails} WIN when
561
+ * The registry's own {@link ToolManagerConfig.resultGuardrails} (`toolsets/manager.ts`) WIN when
554
562
  * the registry was built with them — including an empty array, which means
555
563
  * none — because a registry that stated its policy has stated it. These
556
564
  * apply to a registry that declared none, which is the ordinary case: a
@@ -566,7 +574,7 @@ export interface ToolContext {
566
574
  * Run another tool through the same dispatch this call came through.
567
575
  *
568
576
  * For `run_code`, whose whole purpose is calling tools in a loop. NOT
569
- * added to {@link ToolRegistryRef}: that ref is about discovering and
577
+ * added to {@link ToolsView}: that ref is about discovering and
570
578
  * activating tools, and putting `execute` on it would make "can dispatch"
571
579
  * a property of holding a registry reference rather than a capability a
572
580
  * host wired deliberately.
@@ -722,6 +730,20 @@ export interface ToolResult {
722
730
  * must not lose: what its controls do, where things are, what failed.
723
731
  */
724
732
  workingState?: readonly import('../../compaction/types.js').WorkingStatePin[]
733
+ /**
734
+ * Names of deferred tool schemas this successful result loads, like
735
+ * `search_tools`. This is a discovery receipt, not proof that an external
736
+ * connection or capability is ready. Use `readyWhen(toolset, check)` for
737
+ * a host-owned prerequisite; search cannot satisfy that check.
738
+ *
739
+ * Only a name currently `'deferred'` in the manager is loaded, and
740
+ * only when it is also inside `ToolContext.allowedTools` when that turn
741
+ * is narrowed to an allow-list. Every other name — unknown, already
742
+ * active, suspended, or outside the allow-list — is silently ignored:
743
+ * this can never throw, resurrect a tool a host marked unready, or
744
+ * widen what a narrowed turn may call.
745
+ */
746
+ reveals?: readonly string[]
725
747
  /**
726
748
  * This result needs a person before the turn can go on — a sign-in page,
727
749
  * a CAPTCHA, a second factor, anything the model must not try to answer
@@ -779,8 +801,59 @@ export interface ToolDefinition<TInput = unknown> extends ToolPresentation<TInpu
779
801
  * Concise, model-readable recovery guidance appended when inputSchema
780
802
  * rejects a call. Use for conditional schemas whose required shapes
781
803
  * cannot be reconstructed from JSON Schema's top-level `required` list.
804
+ *
805
+ * Also appended when a call's arguments were malformed, not valid JSON,
806
+ * and the tool declares no {@link malformedInputHint}: a model that could
807
+ * not write this tool's arguments as JSON needs the same shape.
782
808
  */
783
809
  validationErrorHint?: string
810
+ /**
811
+ * Concise, model-readable advice appended when a call to this tool was cut
812
+ * off before its arguments closed and the call itself has to carry less:
813
+ * how this tool takes long input in parts. It follows the size budget the
814
+ * model is given (see {@link largeStringArguments}).
815
+ *
816
+ * That is a cut-off by the stream ending, or by the output limit when the
817
+ * call was at least half of the response. When most of the response went
818
+ * to what came before the call, the model is told to send less before it
819
+ * instead, and this is not appended. Nor after a content filter's stop,
820
+ * which sending less does not get past, nor for a malformed call, since
821
+ * size does not fix JSON: that is {@link malformedInputHint}.
822
+ */
823
+ truncatedInputHint?: string
824
+ /**
825
+ * Concise, model-readable advice appended when a call to this tool is
826
+ * answered as malformed: its arguments were not valid JSON, so the call
827
+ * never reached {@link inputSchema}. For example, how to escape a file
828
+ * body inside a JSON string. When it is absent,
829
+ * {@link validationErrorHint} is appended instead, so a tool that states
830
+ * its required shape there need not state it twice; one that declares
831
+ * both and wants the shape shown includes it here.
832
+ *
833
+ * Every unreadable call is malformed except the one the response stopped
834
+ * on, when it stopped early: at the output limit (`finishReason:
835
+ * 'length'`), at a content filter, or with no finish reason at all. That
836
+ * call was cut off, and gets {@link truncatedInputHint} instead. A call
837
+ * the model followed with more text, reasoning or another call is
838
+ * malformed whatever the finish reason, the output limit included. See
839
+ * `ToolInputError`.
840
+ */
841
+ malformedInputHint?: string
842
+ /**
843
+ * The arguments that carry long free-form text — a file body, a
844
+ * replacement, a delegated assignment — each with the number of characters
845
+ * one call should keep it under, e.g. `{ content: 12_000 }`.
846
+ *
847
+ * Read only when a call to this tool is cut off before its arguments
848
+ * close and the call itself has to carry less (see
849
+ * {@link truncatedInputHint} for when that is): the model is told to keep
850
+ * these arguments under their budgets, each lowered to half of what
851
+ * arrived after an output limit. A tool that declares none is still told,
852
+ * after an output limit, to keep its arguments as a whole under half of
853
+ * what arrived. Declaring them names the arguments the model should
854
+ * shorten, and gives a budget after a stream that ended as well.
855
+ */
856
+ largeStringArguments?: Readonly<Record<string, number>>
784
857
 
785
858
  /**
786
859
  * The shape this tool returns, as JSON Schema, appended to the
@@ -947,6 +1020,52 @@ export interface ToolDefinition<TInput = unknown> extends ToolPresentation<TInpu
947
1020
  */
948
1021
  capturesScreen?(input: TInput): boolean
949
1022
 
1023
+ /**
1024
+ * This call always needs a person's approval, whatever the host's rules
1025
+ * say and whatever mode the turn is running in.
1026
+ *
1027
+ * Distinct from {@link isDestructive}, and stronger. A destructive call
1028
+ * is still let through by a gate `allow` rule (`allow_by_name`,
1029
+ * `allow_by_category`, …) and by `auto` mode or an unattended turn — the
1030
+ * rule and the mode both outrank it. This flag cannot be outranked either
1031
+ * way: it survives an `allow` rule the same way an escalation does (the
1032
+ * decision is forced back to review before the rule's `allow` ever
1033
+ * settles anything), and it is asked about, or refused when nobody can
1034
+ * be asked, in every mode — `auto` and a remembered "approve all"
1035
+ * included — the same way a sandbox escape or a path outside the turn's
1036
+ * roots is. No grant, skill grant or `accept-edits` exemption covers it.
1037
+ * A `deny` rule still wins: this flag can only ADD a review, never open
1038
+ * one a rule closed.
1039
+ *
1040
+ * For a call that is sensitive for a reason other than being
1041
+ * destructive — it costs money, it leaves an audit trail somewhere else,
1042
+ * it is policy-sensitive — rather than a tool author reaching for
1043
+ * `isDestructive` on a call that does not destroy anything, just to get
1044
+ * the review a host might not otherwise configure. See
1045
+ * `docs/sdk/review-policy.md`.
1046
+ *
1047
+ * Never populated from a connected server's own wire annotations
1048
+ * (`mcpToolToToolDefinition` does not set it): a server cannot demand,
1049
+ * or waive, its own review requirement. It is host/plugin-trust-boundary
1050
+ * metadata, like {@link capturesScreen}.
1051
+ */
1052
+ requiresApproval?(input: TInput): boolean
1053
+
1054
+ /**
1055
+ * Free-form, tool-author-declared data for filtering and behaviour
1056
+ * customization — never a classification the runtime itself reads.
1057
+ *
1058
+ * Not sent to the model: unlike {@link outputSchema}, which is shown in
1059
+ * the description precisely so the model can act on it, this is for a
1060
+ * host, a capability or a toolset wrapper to read back, with
1061
+ * `matchesToolSelector` (`tools/roster.ts`) or by hand. A connected
1062
+ * server's own annotations that have nowhere else to land — its
1063
+ * `title`, `idempotentHint`, `openWorldHint`, and any `_meta` it
1064
+ * attached — arrive here (`mcpToolToToolDefinition`); `isReadOnly` and
1065
+ * `isDestructive` keep the two hints that already have a typed home.
1066
+ */
1067
+ metadata?: Readonly<Record<string, unknown>>
1068
+
950
1069
  /**
951
1070
  * Opt-in ordering boundary in a direct model tool-call batch. Earlier
952
1071
  * calls settle before this call starts; later calls wait for this call
@@ -958,24 +1077,18 @@ export interface ToolDefinition<TInput = unknown> extends ToolPresentation<TInpu
958
1077
  * their external effects have stopped, and does not imply success.
959
1078
  */
960
1079
  executionBarrier?: boolean
961
-
962
- /**
963
- * Where this tool came from, when it did not come from here.
964
- *
965
- * Absent means host-defined: this process, code the operator installed,
966
- * no untrusted party in the chain. Present means a connected server
967
- * supplied both the tool and its own description of what the tool does
968
- * — including whether it is read-only, which three separate gates were
969
- * treating as a fact rather than as the hint the wire calls it.
970
- *
971
- * See {@link isTrustedReadOnly}. This field exists so a gate can tell
972
- * the two apart; `isReadOnly` keeps reporting faithfully what the
973
- * server said, because the outbound re-export and the destructive
974
- * label shown to a human both need the server's own answer.
975
- */
976
- provenance?: ToolProvenance
977
1080
  }
978
1081
 
1082
+ /**
1083
+ * A tool's owning source's read-only trust decision, as `screenToolResult`
1084
+ * reads it off a call's `ToolContext`/result plumbing.
1085
+ *
1086
+ * Where a tool once carried this on itself (`ToolDefinition.provenance`,
1087
+ * removed — plan.md v3 §3), it now comes from the `ToolManager`'s
1088
+ * `sourceOf(name)` for the call in progress: a definition cannot claim its
1089
+ * own source, only the toolset that contributed it can. See
1090
+ * `toolsets/types.ts`'s `ToolSourceRef` and `tools/trusted-read-only.ts`.
1091
+ */
979
1092
  export interface ToolProvenance {
980
1093
  /** The connected server this tool came from, named as configured. */
981
1094
  readonly server: string
@@ -1006,6 +1119,12 @@ export interface LLMToolSchema {
1006
1119
  }
1007
1120
  }
1008
1121
 
1122
+ /**
1123
+ * `'suspended'` means the owning toolset's host-owned readiness check is
1124
+ * false. Such tools are excluded from discovery and execution even if a
1125
+ * deferred-schema receipt exists. `RuntimeToolOverrides` still does not
1126
+ * implement session-level suspension.
1127
+ */
1009
1128
  export type ToolAvailability = 'deferred' | 'active' | 'suspended'
1010
1129
 
1011
1130
  export type ZodToJsonSchema = (schema: z.ZodType) => Record<string, unknown>
@@ -1023,36 +1142,22 @@ export interface ToolTierConfig {
1023
1142
  labelInDescription?: boolean
1024
1143
  }
1025
1144
 
1026
- export interface ToolRegistryConfig {
1027
- logger?: Logger
1028
- tierConfig?: ToolTierConfig
1029
- /**
1030
- * Screens run against every tool result before anything downstream
1031
- * reads it — the output budget, compaction, and the model itself are
1032
- * all past this point.
1033
- *
1034
- * Absent means no screening, which is what shipped before this existed:
1035
- * a connected server's text reached the model unexamined. See
1036
- * {@link ToolResultGuardrailSpec}.
1037
- */
1038
- resultGuardrails?: readonly ToolResultGuardrailSpec[]
1039
- }
1040
-
1041
1145
  export interface ToolExecutionResult extends ToolResult {
1042
1146
  permissionDenied?: boolean
1043
1147
  permissionMessage?: string
1044
1148
  }
1045
1149
 
1046
1150
  /**
1047
- * An input decoded exactly once by its owning tool registry.
1151
+ * An input decoded exactly once by its owning `ToolManager`.
1048
1152
  *
1049
1153
  * `input` is the detached, deeply frozen JSON review projection:
1050
1154
  * authorization, approval UI, probes and audit all inspect this value. The
1051
- * registry privately retains a separate detached copy that
1052
- * {@link ToolRegistryContract.executePrepared} gives the tool. Caller-owned
1053
- * aliases therefore cannot change either side after preparation. A
1054
- * preparation is registry-owned and cannot be executed by a different
1055
- * registry or after that tool registration is replaced.
1155
+ * manager privately retains a separate detached copy that
1156
+ * `ToolManager.executePrepared` (`toolsets/manager.ts`) gives the tool.
1157
+ * Caller-owned aliases therefore cannot change either side after
1158
+ * preparation. A preparation is owned by the manager that made it and
1159
+ * cannot be executed by a different one, or after its tool's definition
1160
+ * changed identity (a live toolset's own update).
1056
1161
  */
1057
1162
  export interface PreparedToolExecution {
1058
1163
  readonly toolName: string
@@ -1064,62 +1169,6 @@ export type ToolPreparationResult =
1064
1169
  | { readonly success: true; readonly prepared: PreparedToolExecution }
1065
1170
  | { readonly success: false; readonly result: ToolExecutionResult }
1066
1171
 
1067
- /**
1068
- * Full tool registry contract — registration, lookup, execution, prompt generation.
1069
- * Concrete implementation: `ToolRegistry` in `registry/tool/execute.ts`.
1070
- */
1071
- export interface ToolRegistryContract {
1072
- register(id: string, tool: ToolDefinition): void
1073
- register(tool: ToolDefinition, initialState?: ToolAvailability): void
1074
- register(tools: ToolDefinition[], initialState?: ToolAvailability): void
1075
-
1076
- unregister(id: string): boolean
1077
- clear(): void
1078
-
1079
- get(name: string): ToolDefinition | undefined
1080
- getOrThrow(name: string): ToolDefinition
1081
- has(name: string): boolean
1082
- getAll(): ToolDefinition[]
1083
- listIds(): string[]
1084
- listNames(): string[]
1085
-
1086
- getAvailability(name: string): ToolAvailability
1087
- activate(names: string[]): void
1088
- defer(names: string[]): void
1089
- suspendAll(): void
1090
- hasSuspended(): boolean
1091
- searchDeferred(query: string): ToolDefinition[]
1092
- /** Ranked active matches, when this registry supports active-tool discovery. */
1093
- searchActive?(query: string): ToolDefinition[]
1094
- getCallableTools(toolNames?: string[]): ToolDefinition[]
1095
-
1096
- /**
1097
- * Decode/transform an input once, before authorization or human review.
1098
- *
1099
- * The returned preparation is opaque registry authority. Implementations
1100
- * must not run tool code here. They must detach both the executable value
1101
- * and `prepared.input` from caller/schema aliases, and make the latter a
1102
- * deeply immutable JSON projection of the exact value retained for
1103
- * execution. Unsupported mutable/exotic graphs fail closed.
1104
- */
1105
- prepareExecution(toolName: string, rawInput: unknown): ToolPreparationResult
1106
-
1107
- /** Execute the exact value retained by `prepareExecution`, without parsing again. */
1108
- executePrepared(
1109
- prepared: PreparedToolExecution,
1110
- context: ToolContext,
1111
- ): Promise<ToolExecutionResult>
1112
-
1113
- execute(toolName: string, rawInput: unknown, context: ToolContext): Promise<ToolExecutionResult>
1114
-
1115
- size(): number
1116
-
1117
- toLLMTools(toolNames?: string[]): LLMToolSchema[]
1118
- toPromptSection(toolNames?: string[]): string
1119
- toTierGuidance(): string | null
1120
- assignTiers(mapping: Record<string, string>): void
1121
- }
1122
-
1123
1172
  export * from './repair.js'
1124
1173
 
1125
1174
  export type {
@@ -1,5 +1,3 @@
1
- import type { LLMToolSchema, ToolDefinition, ToolPermission } from '../tool/index.js'
2
-
3
1
  export type ToolSourceKind =
4
2
  | 'host_tool'
5
3
  | 'provider_builtin'
@@ -8,8 +6,6 @@ export type ToolSourceKind =
8
6
  | 'plugin'
9
7
  | 'connector'
10
8
 
11
- export type ToolLoadingMode = 'eager' | 'deferred' | 'disabled' | 'suspended'
12
-
13
9
  export interface ToolSource {
14
10
  readonly id: string
15
11
  readonly kind: ToolSourceKind
@@ -21,6 +17,16 @@ export interface ToolSource {
21
17
  readonly url?: string
22
18
  readonly transport?: 'streamable_http' | 'sse' | 'stdio'
23
19
  readonly authorizationRef?: string
20
+ /**
21
+ * The operator marked this connected server's read-only claims
22
+ * trustworthy (plan.md §4's `readOnlyHintTrusted` option). Absent or
23
+ * `false` means untrusted — an unmarked server's `isReadOnly` claim
24
+ * raises the plan-mode bar but never lowers it on its own; see
25
+ * `toToolSourceRef` and `tools/trusted-read-only.ts`. One value per
26
+ * server, not per tool: every tool an `mcpToolset` contributes for a
27
+ * given server carries the same trust decision.
28
+ */
29
+ readonly readOnlyHintTrusted?: boolean
24
30
  }
25
31
  readonly providerTool?: {
26
32
  readonly type: string
@@ -34,46 +40,3 @@ export interface ToolSource {
34
40
  }
35
41
  readonly metadata?: Record<string, unknown>
36
42
  }
37
-
38
- export interface ToolsetPolicy {
39
- readonly enabled?: boolean
40
- readonly loading?: ToolLoadingMode
41
- readonly preferred?: boolean
42
- readonly providerConfig?: Record<string, unknown>
43
- }
44
-
45
- export interface ToolsetDefinition {
46
- readonly id: string
47
- readonly sourceId: string
48
- readonly name: string
49
- readonly description?: string
50
- readonly defaultPolicy?: ToolsetPolicy
51
- readonly metadata?: Record<string, unknown>
52
- }
53
-
54
- export interface ToolCatalogEntry {
55
- readonly name: string
56
- readonly description: string
57
- readonly sourceId: string
58
- readonly toolsetId: string
59
- readonly policy: ToolsetPolicy
60
- readonly definition?: ToolDefinition
61
- readonly llmSchema?: LLMToolSchema
62
- readonly permissions?: readonly ToolPermission[]
63
- readonly category?: ToolDefinition['category']
64
- readonly metadata?: Record<string, unknown>
65
- }
66
-
67
- export interface ToolCatalogSearchResult {
68
- readonly tool: ToolCatalogEntry
69
- readonly source: ToolSource
70
- readonly toolset: ToolsetDefinition
71
- readonly score: number
72
- readonly matched: readonly string[]
73
- }
74
-
75
- export interface ToolCatalogSnapshot {
76
- readonly sources: readonly ToolSource[]
77
- readonly toolsets: readonly ToolsetDefinition[]
78
- readonly tools: readonly ToolCatalogEntry[]
79
- }