@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
@@ -1,6 +1,22 @@
1
1
  import { BaseRegistry } from '../registry/BaseRegistry.js'
2
+ import { RegistryCollisionError } from '../registry/collision.js'
2
3
  import type { AdvisorDefinition } from '../types/advisory/index.js'
3
4
 
5
+ /** Two advisors claiming one id. */
6
+ export class AdvisorCollisionError extends RegistryCollisionError {
7
+ readonly advisorId: string
8
+
9
+ constructor(advisorId: string) {
10
+ super(
11
+ 'AdvisorRegistry',
12
+ advisorId,
13
+ `Advisor "${advisorId}" is already registered. Two advisors picked the same id, or the same advisor was registered twice — pick a different id, or find the second registration.`,
14
+ )
15
+ this.name = 'AdvisorCollisionError'
16
+ this.advisorId = advisorId
17
+ }
18
+ }
19
+
4
20
  export class AdvisorRegistry extends BaseRegistry<AdvisorDefinition> {
5
21
  private readonly defaultId: string | undefined
6
22
 
@@ -12,6 +28,23 @@ export class AdvisorRegistry extends BaseRegistry<AdvisorDefinition> {
12
28
  this.defaultId = defaultId
13
29
  }
14
30
 
31
+ /**
32
+ * A second advisor claiming an id an earlier one already holds used to
33
+ * overwrite in total silence (see
34
+ * `gaps/critic-registry-collision-idiom-inconsistency.md`). Every SDK
35
+ * registry now throws on a duplicate id by default (see
36
+ * `registry/collision.ts`), and this one had no exception to name, so it
37
+ * converges too: two advisors sharing an id is a configuration mistake,
38
+ * not a supersession, and the loser vanishing silently is exactly the
39
+ * failure this now refuses instead of logging.
40
+ */
41
+ override register(id: string, advisor: AdvisorDefinition): void {
42
+ if (this.has(id)) {
43
+ throw new AdvisorCollisionError(id)
44
+ }
45
+ super.register(id, advisor)
46
+ }
47
+
15
48
  /**
16
49
  * Resolves the advisor for a given request.
17
50
  *
@@ -13,12 +13,19 @@ folklore.
13
13
 
14
14
  ## What lives here
15
15
 
16
- Orchestration primitives, all **developer-authored**.
16
+ The `Agent` contract, `runAgent`/`query` entry points, and an optional
17
+ `QueryAgent` adapter are SDK infrastructure. Applications own their agent
18
+ identity and orchestration. The CLI's delegated agent lives in
19
+ `packages/cli/src/integrations/subagents/NamzuCliAgent.ts`.
17
20
 
18
- - **`PipelineAgent.ts`** — a fixed step list the developer wrote. The steps
21
+ `examples/` holds developer-authored orchestration patterns. Their former
22
+ exports remain as deprecated compatibility names; they do not define a closed
23
+ list of agent kinds.
24
+
25
+ - **`examples/PipelineAgent.ts`** — a fixed step list the developer wrote. The steps
19
26
  run with **zero model turns between them**: the control flow is code, and
20
27
  the model is called only where a step calls it.
21
- - **`SupervisorAgent.ts`** — delegation driven by the model emitting
28
+ - **`examples/SupervisorAgent.ts`** — delegation driven by the model emitting
22
29
  `create_task` tool calls. Note what this already does: **N `create_task`
23
30
  blocks in one assistant turn run concurrently**, so fan-out costs one turn
24
31
  for N children, not N turns. The mechanism, checked rather than assumed:
@@ -82,10 +89,10 @@ first one got lost.
82
89
 
83
90
  ## Working here
84
91
 
85
- - An agent's capabilities are **declared** on its metadata and honoured by the
86
- runtime. Adding a capability means declaring it and driving it in the same
87
- change; a declared capability nothing reads is the
88
- `declared-but-undriven` defect this repo has a convention page about.
92
+ - `AgentCapabilities` is descriptive metadata. The manager does not enforce
93
+ its booleans. A host enforces tool access, subagent admission and concurrency
94
+ through its toolsets, authorization gate, manager and per-instance locking.
95
+ Do not treat a declared capability as permission or claim it is a runtime gate.
89
96
  - `AbstractAgent` takes an injected `Logger`. Do not reach for
90
97
  `getRootLogger()` here — see the log-standard gate,
91
98
  which counts every call site.
@@ -1,303 +1,2 @@
1
- /**
2
- * A developer-authored step list, and deliberately not a model-authored
3
- * one.
4
- *
5
- * This distinction has been attributed to a `packages/sdk/src/agents/
6
- * AGENTS.md` that does not exist, so it is written here instead. The
7
- * proposal it answers is a model that emits an orchestration SCRIPT --
8
- * `agent()`, `parallel()`, `pipeline()` as globals -- executed in an
9
- * isolate, so that control flow between steps costs no model turns.
10
- *
11
- * The saving is real and this class already realises most of it: the steps
12
- * below run with zero model turns between them, and `SupervisorAgent`
13
- * delegates without one. What a script would add is orchestration a
14
- * developer did not anticipate, invented at runtime -- which is also the
15
- * case where a wrong one is hardest to review before it runs.
16
- *
17
- * The blocking question is the trust boundary, not the value. `bash` from
18
- * a model is mediated by `packages/sandbox` because code from a model is
19
- * untrusted; a model-authored script is the same input through another
20
- * door, and a strictly more powerful one, since it can call back into the
21
- * agent surface. Running it in-process would leave the kernel's one clear
22
- * confinement boundary covering the weaker case and not the stronger. So
23
- * an isolate is mandatory rather than an optimisation, and the capability
24
- * costs a second execution surface to secure, audit and version.
25
- *
26
- * That is the bar a reopen has to clear.
27
- */
28
-
29
- import { withTokenBudget } from '../provider/token-budget.js'
30
- import type { SessionTokenBudget } from '../store/budget/index.js'
31
- import type {
32
- AgentInput,
33
- AgentMetadata,
34
- PipelineAgentConfig,
35
- PipelineAgentResult,
36
- PipelineStepResult,
37
- StepContext,
38
- } from '../types/agent/index.js'
39
- import type { SessionId, TurnId } from '../types/ids/index.js'
40
- import type { SessionEvent, SessionEventListener } from '../types/session/events.js'
41
- import type { TurnSettlement } from '../types/session/turn.js'
42
- import { ZERO_COST } from '../utils/cost.js'
43
- import { toErrorMessage } from '../utils/error.js'
44
- import { generateMessageId } from '../utils/id.js'
45
- import type { Logger } from '../utils/logger.js'
46
- import { AbstractAgent } from './AbstractAgent.js'
47
- import { resolveAgentBudget } from './budget.js'
48
-
49
- export class PipelineAgent extends AbstractAgent<PipelineAgentConfig, PipelineAgentResult> {
50
- readonly type = 'pipeline' as const
51
-
52
- constructor(metadata: Omit<AgentMetadata, 'type' | 'capabilities'>, log?: Logger) {
53
- super(
54
- {
55
- ...metadata,
56
- type: 'pipeline',
57
- capabilities: {
58
- supportsTools: false,
59
- supportsStreaming: false,
60
- supportsConcurrency: false,
61
- supportsSubAgents: false,
62
- },
63
- },
64
- log,
65
- )
66
- }
67
-
68
- /**
69
- * One turn at a time per instance.
70
- *
71
- * `abortController` and `currentSessionId` are instance state, so two
72
- * overlapping turns share one abort controller — cancelling either kills
73
- * both — and the second clobbers the first's session, so a later
74
- * `cancel()` cancels the wrong children. Neither failure announces itself.
75
- * A host that wants parallelism constructs a second instance.
76
- */
77
- async run(
78
- input: AgentInput,
79
- config: PipelineAgentConfig,
80
- listener?: SessionEventListener,
81
- ): Promise<PipelineAgentResult> {
82
- return await this.underIdempotencyKey(config.idempotencyKey, () =>
83
- this.underInvocationLock(() => this.runExclusive(input, config, listener)),
84
- )
85
- }
86
-
87
- private async runExclusive(
88
- input: AgentInput,
89
- config: PipelineAgentConfig,
90
- listener?: SessionEventListener,
91
- ): Promise<PipelineAgentResult> {
92
- if (config.sandbox) {
93
- throw new Error(
94
- 'PipelineAgent cannot enforce a turn-level sandbox around developer-authored step callbacks. Configure confinement inside each step or use a tool-running agent.',
95
- )
96
- }
97
- const startTime = Date.now()
98
- const sessionId = this.resolveSessionId(config.sessionId)
99
- const turnId = this.createTurnId()
100
- this.bindTurn(sessionId, turnId, config.logger)
101
- const budget = await resolveAgentBudget(input, config, { sessionId, turnId })
102
- const settlement = (status: TurnSettlement['status'], iterations: number): TurnSettlement => ({
103
- status,
104
- iterations,
105
- usage: budget.ownUsage,
106
- cost: { ...ZERO_COST, unpricedTokens: budget.ownTokens },
107
- durationMs: Date.now() - startTime,
108
- resultSource: 'model',
109
- abandonedTaskIds: [],
110
- abandonedJobIds: [],
111
- })
112
- const provider = config.provider ? withTokenBudget(config.provider, budget) : undefined
113
- try {
114
- const stepResults: PipelineStepResult[] = []
115
- const previousResults = new Map<string, unknown>()
116
- let completedSteps = 0
117
-
118
- await this.emitEvent(turnStarted(sessionId, turnId, config, budget), listener)
119
-
120
- let currentInput: unknown = input.messages
121
- .filter((m) => m.role === 'user')
122
- .map((m) => m.content)
123
- .filter((c): c is string => c !== null)
124
- .join('\n')
125
-
126
- for (let i = 0; i < config.steps.length; i++) {
127
- const step = config.steps[i]
128
- if (!step) throw new Error(`Pipeline step at index ${i} is undefined`)
129
- const stepStart = Date.now()
130
-
131
- if (this.abortController.signal.aborted) {
132
- stepResults.push({
133
- stepName: step.name,
134
- status: 'skipped',
135
- durationMs: 0,
136
- })
137
- continue
138
- }
139
-
140
- await this.emitEvent(
141
- { type: 'iteration_started', sessionId, turnId, iteration: i + 1 },
142
- listener,
143
- )
144
-
145
- const context: StepContext = {
146
- sessionId,
147
- turnId,
148
- stepIndex: i,
149
- totalSteps: config.steps.length,
150
- previousResults,
151
- provider,
152
- budget,
153
- signal: this.abortController.signal,
154
- env: config.env ?? {},
155
- }
156
-
157
- try {
158
- if (step.validate && !step.validate(currentInput)) {
159
- throw new Error(`Validation failed for step "${step.name}"`)
160
- }
161
-
162
- const output = await step.execute(currentInput, context)
163
- previousResults.set(step.name, output)
164
- currentInput = output
165
- completedSteps++
166
-
167
- stepResults.push({
168
- stepName: step.name,
169
- status: 'completed',
170
- output,
171
- durationMs: Date.now() - stepStart,
172
- })
173
- } catch (err) {
174
- const errorMsg = toErrorMessage(err)
175
-
176
- stepResults.push({
177
- stepName: step.name,
178
- status: 'failed',
179
- error: errorMsg,
180
- durationMs: Date.now() - stepStart,
181
- })
182
-
183
- if (step.rollback) {
184
- try {
185
- await step.rollback(currentInput, context)
186
- } catch (rollbackErr) {
187
- this.log.error('Rollback failed for a step', {
188
- 'namzu.pipeline.step_name': step.name,
189
- 'exception.message': toErrorMessage(rollbackErr),
190
- })
191
- }
192
- }
193
-
194
- if (!config.continueOnError) {
195
- await this.emitEvent(
196
- {
197
- type: 'turn_failed',
198
- sessionId,
199
- turnId,
200
- error: errorMsg,
201
- budget: budget.summary(),
202
- settlement: settlement('failed', i + 1),
203
- },
204
- listener,
205
- )
206
-
207
- return {
208
- sessionId,
209
- turnId,
210
- status: 'failed',
211
- stopReason: 'error',
212
- usage: budget.ownUsage,
213
- budget: budget.summary(),
214
- cost: { ...ZERO_COST, unpricedTokens: budget.ownTokens },
215
- iterations: i + 1,
216
- durationMs: Date.now() - startTime,
217
- messages: input.messages,
218
- lastError: errorMsg,
219
- stepResults,
220
- completedSteps,
221
- totalSteps: config.steps.length,
222
- }
223
- }
224
- }
225
- }
226
-
227
- const finalStatus = completedSteps === config.steps.length ? 'completed' : 'failed'
228
- const lastOutput = stepResults[stepResults.length - 1]?.output
229
-
230
- const result = typeof lastOutput === 'string' ? lastOutput : JSON.stringify(lastOutput)
231
-
232
- // A pipeline that finished with failed steps (under `continueOnError`)
233
- // did not complete its turn, so it settles as `turn_failed`: the
234
- // terminal verdict is the event type (spec §2.10).
235
- await this.emitEvent(
236
- finalStatus === 'completed'
237
- ? {
238
- type: 'turn_completed',
239
- sessionId,
240
- turnId,
241
- budget: budget.summary(),
242
- result,
243
- stopReason: 'end_turn',
244
- settlement: settlement('completed', config.steps.length),
245
- }
246
- : {
247
- type: 'turn_failed',
248
- sessionId,
249
- turnId,
250
- budget: budget.summary(),
251
- error: `${config.steps.length - completedSteps} of ${config.steps.length} pipeline steps failed`,
252
- settlement: settlement('failed', config.steps.length),
253
- },
254
- listener,
255
- )
256
-
257
- return {
258
- sessionId,
259
- turnId,
260
- status: finalStatus,
261
- stopReason: 'end_turn',
262
- usage: budget.ownUsage,
263
- budget: budget.summary(),
264
- cost: { ...ZERO_COST, unpricedTokens: budget.ownTokens },
265
- iterations: config.steps.length,
266
- durationMs: Date.now() - startTime,
267
- messages: input.messages,
268
- result,
269
- stepResults,
270
- completedSteps,
271
- totalSteps: config.steps.length,
272
- }
273
- } finally {
274
- budget.settle()
275
- await budget.flush()
276
- }
277
- }
278
- }
279
-
280
- /**
281
- * The turn a pipeline runs, announced the way `query()` announces one. The
282
- * user message id names the input the steps were handed; nothing is written
283
- * to a session log, because the steps are callbacks, not model calls.
284
- */
285
- function turnStarted(
286
- sessionId: SessionId,
287
- turnId: TurnId,
288
- config: PipelineAgentConfig,
289
- budget: SessionTokenBudget,
290
- ): SessionEvent {
291
- return {
292
- type: 'turn_started',
293
- sessionId,
294
- turnId,
295
- userMessageId: generateMessageId(),
296
- config: {
297
- model: config.model,
298
- tokenBudget: config.tokenBudget,
299
- timeoutMs: config.timeoutMs,
300
- },
301
- ...(budget.binding ? { budget: budget.binding } : {}),
302
- }
303
- }
1
+ /** @deprecated Example agent. Define application agents with the SDK Agent contract. */
2
+ export { PipelineAgent } from './examples/PipelineAgent.js'
@@ -0,0 +1,269 @@
1
+ import { drainQuery } from '../runtime/query/index.js'
2
+ import type {
3
+ AgentInvocationScope,
4
+ AgentMetadata,
5
+ ManagedAgentInput,
6
+ QueryAgentConfig,
7
+ QueryAgentResult,
8
+ } from '../types/agent/index.js'
9
+ import type { AssistantMessage } from '../types/message/index.js'
10
+ import type { TurnConfig } from '../types/session/config.js'
11
+ import type { SessionEventListener } from '../types/session/events.js'
12
+ import type { Logger } from '../utils/logger.js'
13
+ import { AbstractAgent } from './AbstractAgent.js'
14
+ import { pickRoutedOptions } from './forward-options.js'
15
+
16
+ /** Every config field has one destination, or a deliberately explicit transform. */
17
+ const configRoutes = {
18
+ model: 'turn',
19
+ tokenBudget: 'turn',
20
+ budget: 'query',
21
+ timeoutMs: 'turn',
22
+ streamIdleTimeoutMs: 'turn',
23
+ maxRequestRichContentBytes: 'turn',
24
+ attachmentResolveTimeoutMs: 'query',
25
+ maxIterations: 'turn',
26
+ temperature: 'turn',
27
+ maxResponseTokens: 'turn',
28
+ costLimitUsd: 'turn',
29
+ permissionMode: 'turn',
30
+ pruneKeepLast: 'turn',
31
+ paths: 'query',
32
+ sessionLog: 'query',
33
+ checkpointStore: 'query',
34
+ sandbox: 'turn',
35
+ inboundMessages: 'query',
36
+ projectInstructionContext: 'query',
37
+ allowedTools: 'special',
38
+ toolResultGuardrails: 'query',
39
+ deniedTools: 'special',
40
+ persona: 'query',
41
+ logger: 'special',
42
+ env: 'turn',
43
+ thinking: 'turn',
44
+ effort: 'turn',
45
+ idempotencyKey: 'special',
46
+ projectId: 'special',
47
+ topicId: 'special',
48
+ sessionId: 'special',
49
+ tenantId: 'special',
50
+ parentSessionId: 'query',
51
+ parentTurnId: 'query',
52
+ depth: 'query',
53
+ contextLevel: 'query',
54
+ invocationState: 'query',
55
+ parentSpan: 'query',
56
+ resumeHandler: 'query',
57
+ reviewAllowedCalls: 'query',
58
+ systemPrompt: 'query',
59
+ webSearch: 'turn',
60
+ steering: 'query',
61
+ skills: 'query',
62
+ basePrompt: 'query',
63
+ provider: 'query',
64
+ toolsets: 'query',
65
+ advisory: 'query',
66
+ authorizationGate: 'query',
67
+ sandboxProvider: 'query',
68
+ sandboxTeardownTimeoutMs: 'query',
69
+ outsideRootAccess: 'query',
70
+ sandboxEscape: 'query',
71
+ compactionConfig: 'query',
72
+ workingMemoryProvider: 'query',
73
+ retry: 'query',
74
+ toolTimeoutMs: 'query',
75
+ toolRetryBackoff: 'query',
76
+ maxToolConcurrency: 'query',
77
+ maxToolOutputChars: 'query',
78
+ retainedToolPreviewChars: 'query',
79
+ maxToolContentBytes: 'query',
80
+ repairToolCall: 'query',
81
+ stopWhen: 'query',
82
+ onStepFinish: 'query',
83
+ prepareStep: 'query',
84
+ beforeStep: 'query',
85
+ structuredOutput: 'query',
86
+ inputGuardrails: 'query',
87
+ outputGuardrails: 'query',
88
+ } as const satisfies { readonly [K in keyof QueryAgentConfig]: 'query' | 'turn' | 'special' }
89
+
90
+ type RoutedKeys<TDestination extends 'query' | 'turn'> = {
91
+ [K in keyof typeof configRoutes]: (typeof configRoutes)[K] extends TDestination ? K : never
92
+ }[keyof typeof configRoutes]
93
+
94
+ type QueryFields = Pick<Parameters<typeof drainQuery>[0], RoutedKeys<'query'>>
95
+ type TurnFields = Pick<TurnConfig, RoutedKeys<'turn'>>
96
+
97
+ const SCOPE_FIELDS = ['sessionId', 'topicId', 'projectId', 'tenantId'] as const
98
+
99
+ function invocationScope(input: ManagedAgentInput, config: QueryAgentConfig): AgentInvocationScope {
100
+ if (input.managedScope !== undefined) {
101
+ const scope = input.managedScope
102
+ if (
103
+ typeof scope !== 'object' ||
104
+ scope === null ||
105
+ Array.isArray(scope) ||
106
+ scope.kind !== 'managed'
107
+ ) {
108
+ throw new Error('QueryAgent requires a managed invocation scope.')
109
+ }
110
+ const missing = SCOPE_FIELDS.filter(
111
+ (field) => typeof scope[field] !== 'string' || scope[field].trim().length === 0,
112
+ )
113
+ if (missing.length > 0) {
114
+ throw new Error(`QueryAgent: input.managedScope is missing: ${missing.join(', ')}.`)
115
+ }
116
+ const conflicts = SCOPE_FIELDS.filter(
117
+ (field) => config[field] !== undefined && config[field] !== scope[field],
118
+ )
119
+ if (conflicts.length > 0) {
120
+ throw new Error(
121
+ `QueryAgent: input.managedScope conflicts with legacy config fields: ${conflicts.join(', ')}.`,
122
+ )
123
+ }
124
+ return scope
125
+ }
126
+ if (!config.sessionId || !config.topicId || !config.projectId || !config.tenantId) {
127
+ throw new Error(
128
+ 'QueryAgent requires sessionId, topicId, projectId, and tenantId in input.managedScope or legacy config.',
129
+ )
130
+ }
131
+ const invalid = SCOPE_FIELDS.filter((field) => {
132
+ const value = config[field]
133
+ return typeof value !== 'string' || value.trim().length === 0
134
+ })
135
+ if (invalid.length > 0) {
136
+ throw new Error(`QueryAgent: legacy config has invalid scope fields: ${invalid.join(', ')}.`)
137
+ }
138
+ return {
139
+ kind: 'managed',
140
+ sessionId: config.sessionId,
141
+ topicId: config.topicId,
142
+ projectId: config.projectId,
143
+ tenantId: config.tenantId,
144
+ }
145
+ }
146
+
147
+ export class QueryAgent extends AbstractAgent<QueryAgentConfig, QueryAgentResult> {
148
+ readonly type: string
149
+
150
+ constructor(metadata: Omit<AgentMetadata, 'capabilities'>, log?: Logger) {
151
+ super(
152
+ {
153
+ ...metadata,
154
+ type: metadata.type,
155
+ capabilities: {
156
+ supportsTools: true,
157
+ supportsStreaming: true,
158
+ supportsConcurrency: false,
159
+ supportsSubAgents: false,
160
+ },
161
+ },
162
+ log,
163
+ )
164
+ this.type = metadata.type
165
+ }
166
+
167
+ /**
168
+ * One turn at a time per instance.
169
+ *
170
+ * `abortController` and `currentSessionId` are instance state, so two
171
+ * overlapping turns share one abort controller — cancelling either kills
172
+ * both — and the second clobbers the first's session, so a later
173
+ * `cancel()` cancels the wrong children. Neither failure announces itself.
174
+ * A host that wants parallelism constructs a second instance.
175
+ */
176
+ async run(
177
+ input: ManagedAgentInput,
178
+ config: QueryAgentConfig,
179
+ listener?: SessionEventListener,
180
+ ): Promise<QueryAgentResult> {
181
+ // Resolve before deduplication: an invalid or conflicting scope must never
182
+ // receive another caller's in-flight result under the same raw key.
183
+ const scope = invocationScope(input, config)
184
+ const scopedKey = config.idempotencyKey
185
+ ? JSON.stringify([
186
+ scope.kind,
187
+ scope.tenantId,
188
+ scope.projectId,
189
+ scope.topicId,
190
+ scope.sessionId,
191
+ config.idempotencyKey,
192
+ ])
193
+ : undefined
194
+ return await this.underIdempotencyKey(scopedKey, () =>
195
+ this.underInvocationLock(() => this.runExclusive(input, config, scope, listener)),
196
+ )
197
+ }
198
+
199
+ private async runExclusive(
200
+ input: ManagedAgentInput,
201
+ config: QueryAgentConfig,
202
+ scope: AgentInvocationScope,
203
+ listener?: SessionEventListener,
204
+ ): Promise<QueryAgentResult> {
205
+ const startTime = Date.now()
206
+ const turnId = this.createTurnId()
207
+ this.bindTurn(scope.sessionId, turnId, config.logger)
208
+ const queryFields: QueryFields = pickRoutedOptions(config, configRoutes, 'query')
209
+ const turnFields: TurnFields = pickRoutedOptions(config, configRoutes, 'turn')
210
+
211
+ const turn = await drainQuery(
212
+ {
213
+ ...queryFields,
214
+ ...(input.attachmentStore ? { attachmentStore: input.attachmentStore } : {}),
215
+ ...(config.allowedTools ? { allowedTools: [...config.allowedTools] } : {}),
216
+ ...(config.deniedTools ? { deniedTools: [...config.deniedTools] } : {}),
217
+ turnConfig: {
218
+ ...turnFields,
219
+ logger: this.log,
220
+ },
221
+ agentId: this.metadata.id,
222
+ agentName: this.metadata.name,
223
+ workingDirectory: input.workingDirectory,
224
+ sessionId: scope.sessionId,
225
+ topicId: scope.topicId,
226
+ projectId: scope.projectId,
227
+ tenantId: scope.tenantId,
228
+ turnId,
229
+ messages: input.messages,
230
+ signal: input.signal,
231
+ taskStore: input.taskStore,
232
+ runtimeToolOverrides: input.runtimeToolOverrides,
233
+ runtimeContext: input.runtimeContext,
234
+ },
235
+ listener,
236
+ )
237
+
238
+ let toolCallCount = 0
239
+ for (const msg of turn.messages) {
240
+ if (msg.role === 'assistant') {
241
+ const assistantMsg = msg as AssistantMessage
242
+ if (assistantMsg.toolCalls) {
243
+ toolCallCount += assistantMsg.toolCalls.length
244
+ }
245
+ }
246
+ }
247
+
248
+ return {
249
+ sessionId: turn.sessionId,
250
+ turnId: turn.id,
251
+ status: turn.status,
252
+ stopReason: turn.stopReason,
253
+ usage: turn.tokenUsage,
254
+ ...(turn.budget ? { budget: turn.budget } : {}),
255
+ cost: turn.costInfo,
256
+ iterations: turn.currentIteration,
257
+ durationMs: Date.now() - startTime,
258
+ messages: turn.messages,
259
+ result: turn.result,
260
+ structuredOutput: turn.structuredOutput,
261
+ lastError: turn.lastError,
262
+ toolCallCount,
263
+ }
264
+ }
265
+
266
+ override async cancel(): Promise<void> {
267
+ this.abortController.abort()
268
+ }
269
+ }