@namzu/sdk 46.0.0 → 48.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (768) hide show
  1. package/CHANGELOG.md +351 -8
  2. package/README.md +7 -8
  3. package/dist/advisory/history.d.ts.map +1 -1
  4. package/dist/advisory/history.js +21 -1
  5. package/dist/advisory/history.js.map +1 -1
  6. package/dist/advisory/index.d.ts +1 -1
  7. package/dist/advisory/index.d.ts.map +1 -1
  8. package/dist/advisory/index.js +1 -1
  9. package/dist/advisory/index.js.map +1 -1
  10. package/dist/advisory/registry.d.ts +17 -0
  11. package/dist/advisory/registry.d.ts.map +1 -1
  12. package/dist/advisory/registry.js +26 -0
  13. package/dist/advisory/registry.js.map +1 -1
  14. package/dist/agents/PipelineAgent.d.ts +2 -46
  15. package/dist/agents/PipelineAgent.d.ts.map +1 -1
  16. package/dist/agents/PipelineAgent.js +2 -242
  17. package/dist/agents/PipelineAgent.js.map +1 -1
  18. package/dist/agents/QueryAgent.d.ts +21 -0
  19. package/dist/agents/QueryAgent.d.ts.map +1 -0
  20. package/dist/agents/QueryAgent.js +214 -0
  21. package/dist/agents/QueryAgent.js.map +1 -0
  22. package/dist/agents/ReactiveAgent.d.ts +4 -16
  23. package/dist/agents/ReactiveAgent.d.ts.map +1 -1
  24. package/dist/agents/ReactiveAgent.js +4 -183
  25. package/dist/agents/ReactiveAgent.js.map +1 -1
  26. package/dist/agents/RouterAgent.d.ts +2 -20
  27. package/dist/agents/RouterAgent.d.ts.map +1 -1
  28. package/dist/agents/RouterAgent.js +2 -266
  29. package/dist/agents/RouterAgent.js.map +1 -1
  30. package/dist/agents/SupervisorAgent.d.ts +3 -43
  31. package/dist/agents/SupervisorAgent.d.ts.map +1 -1
  32. package/dist/agents/SupervisorAgent.js +3 -418
  33. package/dist/agents/SupervisorAgent.js.map +1 -1
  34. package/dist/agents/defineAgent.d.ts +2 -1
  35. package/dist/agents/defineAgent.d.ts.map +1 -1
  36. package/dist/agents/defineAgent.js +6 -1
  37. package/dist/agents/defineAgent.js.map +1 -1
  38. package/dist/agents/examples/PipelineAgent.d.ts +46 -0
  39. package/dist/agents/examples/PipelineAgent.d.ts.map +1 -0
  40. package/dist/agents/examples/PipelineAgent.js +242 -0
  41. package/dist/agents/examples/PipelineAgent.js.map +1 -0
  42. package/dist/agents/examples/RouterAgent.d.ts +22 -0
  43. package/dist/agents/examples/RouterAgent.d.ts.map +1 -0
  44. package/dist/agents/examples/RouterAgent.js +268 -0
  45. package/dist/agents/examples/RouterAgent.js.map +1 -0
  46. package/dist/agents/examples/SupervisorAgent.d.ts +45 -0
  47. package/dist/agents/examples/SupervisorAgent.d.ts.map +1 -0
  48. package/dist/agents/examples/SupervisorAgent.js +406 -0
  49. package/dist/agents/examples/SupervisorAgent.js.map +1 -0
  50. package/dist/agents/explore.d.ts +6 -3
  51. package/dist/agents/explore.d.ts.map +1 -1
  52. package/dist/agents/explore.js +6 -3
  53. package/dist/agents/explore.js.map +1 -1
  54. package/dist/agents/forward-options.d.ts +11 -0
  55. package/dist/agents/forward-options.d.ts.map +1 -0
  56. package/dist/agents/forward-options.js +15 -0
  57. package/dist/agents/forward-options.js.map +1 -0
  58. package/dist/agents/index.d.ts +1 -0
  59. package/dist/agents/index.d.ts.map +1 -1
  60. package/dist/agents/index.js +2 -0
  61. package/dist/agents/index.js.map +1 -1
  62. package/dist/agents/runAgent.d.ts +19 -8
  63. package/dist/agents/runAgent.d.ts.map +1 -1
  64. package/dist/agents/runAgent.js +99 -29
  65. package/dist/agents/runAgent.js.map +1 -1
  66. package/dist/authorization/command-line.d.ts +2 -0
  67. package/dist/authorization/command-line.d.ts.map +1 -1
  68. package/dist/authorization/command-line.js +2 -2
  69. package/dist/authorization/command-line.js.map +1 -1
  70. package/dist/authorization/gate.d.ts +8 -0
  71. package/dist/authorization/gate.d.ts.map +1 -1
  72. package/dist/authorization/gate.js +12 -1
  73. package/dist/authorization/gate.js.map +1 -1
  74. package/dist/authorization/program.d.ts +151 -0
  75. package/dist/authorization/program.d.ts.map +1 -0
  76. package/dist/authorization/program.js +713 -0
  77. package/dist/authorization/program.js.map +1 -0
  78. package/dist/authorization/reexec-wrapper.d.ts +106 -0
  79. package/dist/authorization/reexec-wrapper.d.ts.map +1 -0
  80. package/dist/authorization/reexec-wrapper.js +532 -0
  81. package/dist/authorization/reexec-wrapper.js.map +1 -0
  82. package/dist/authorization/rules.d.ts +9 -0
  83. package/dist/authorization/rules.d.ts.map +1 -1
  84. package/dist/authorization/rules.js +8 -1
  85. package/dist/authorization/rules.js.map +1 -1
  86. package/dist/authorization/shell-lexer.d.ts +19 -4
  87. package/dist/authorization/shell-lexer.d.ts.map +1 -1
  88. package/dist/authorization/shell-lexer.js +91 -65
  89. package/dist/authorization/shell-lexer.js.map +1 -1
  90. package/dist/bridge/sse/mapper.d.ts.map +1 -1
  91. package/dist/bridge/sse/mapper.js +6 -0
  92. package/dist/bridge/sse/mapper.js.map +1 -1
  93. package/dist/capabilities/index.d.ts +54 -0
  94. package/dist/capabilities/index.d.ts.map +1 -0
  95. package/dist/capabilities/index.js +92 -0
  96. package/dist/capabilities/index.js.map +1 -0
  97. package/dist/config/registry.d.ts +2 -1
  98. package/dist/config/registry.d.ts.map +1 -1
  99. package/dist/config/registry.js +3 -2
  100. package/dist/config/registry.js.map +1 -1
  101. package/dist/connector/index.d.ts +4 -4
  102. package/dist/connector/index.d.ts.map +1 -1
  103. package/dist/connector/index.js +3 -3
  104. package/dist/connector/index.js.map +1 -1
  105. package/dist/connector/mcp/adapter.d.ts +16 -1
  106. package/dist/connector/mcp/adapter.d.ts.map +1 -1
  107. package/dist/connector/mcp/adapter.js +71 -4
  108. package/dist/connector/mcp/adapter.js.map +1 -1
  109. package/dist/connector/mcp/client.d.ts +32 -4
  110. package/dist/connector/mcp/client.d.ts.map +1 -1
  111. package/dist/connector/mcp/client.js +383 -5
  112. package/dist/connector/mcp/client.js.map +1 -1
  113. package/dist/connector/mcp/discovery.d.ts +24 -1
  114. package/dist/connector/mcp/discovery.d.ts.map +1 -1
  115. package/dist/connector/mcp/discovery.js +44 -0
  116. package/dist/connector/mcp/discovery.js.map +1 -1
  117. package/dist/connector/mcp/era.d.ts.map +1 -1
  118. package/dist/connector/mcp/era.js +7 -0
  119. package/dist/connector/mcp/era.js.map +1 -1
  120. package/dist/connector/mcp/index.d.ts +2 -0
  121. package/dist/connector/mcp/index.d.ts.map +1 -1
  122. package/dist/connector/mcp/index.js +11 -0
  123. package/dist/connector/mcp/index.js.map +1 -1
  124. package/dist/connector/mcp/mcp-toolset.d.ts +133 -0
  125. package/dist/connector/mcp/mcp-toolset.d.ts.map +1 -0
  126. package/dist/connector/mcp/mcp-toolset.js +399 -0
  127. package/dist/connector/mcp/mcp-toolset.js.map +1 -0
  128. package/dist/connector/mcp/streamable-http.d.ts +15 -0
  129. package/dist/connector/mcp/streamable-http.d.ts.map +1 -1
  130. package/dist/connector/mcp/streamable-http.js +281 -6
  131. package/dist/connector/mcp/streamable-http.js.map +1 -1
  132. package/dist/connector/tools/index.d.ts +2 -2
  133. package/dist/connector/tools/index.d.ts.map +1 -1
  134. package/dist/connector/tools/index.js +1 -1
  135. package/dist/connector/tools/index.js.map +1 -1
  136. package/dist/connector/tools/router.d.ts +15 -13
  137. package/dist/connector/tools/router.d.ts.map +1 -1
  138. package/dist/connector/tools/router.js +30 -51
  139. package/dist/connector/tools/router.js.map +1 -1
  140. package/dist/contracts/a2a.d.ts +2 -2
  141. package/dist/directory/derive-supervisor.d.ts +2 -2
  142. package/dist/directory/derive-supervisor.d.ts.map +1 -1
  143. package/dist/directory/derive-supervisor.js +6 -7
  144. package/dist/directory/derive-supervisor.js.map +1 -1
  145. package/dist/directory/derive.d.ts.map +1 -1
  146. package/dist/directory/derive.js +5 -5
  147. package/dist/directory/derive.js.map +1 -1
  148. package/dist/execution/code-runtime/types.d.ts +2 -2
  149. package/dist/execution/code-runtime/types.js +1 -1
  150. package/dist/invariants/index.d.ts +2 -1
  151. package/dist/invariants/index.d.ts.map +1 -1
  152. package/dist/invariants/index.js +3 -2
  153. package/dist/invariants/index.js.map +1 -1
  154. package/dist/manager/agent/lifecycle.d.ts +1 -0
  155. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  156. package/dist/manager/agent/lifecycle.js +146 -18
  157. package/dist/manager/agent/lifecycle.js.map +1 -1
  158. package/dist/manager/connector/environment.d.ts +6 -0
  159. package/dist/manager/connector/environment.d.ts.map +1 -1
  160. package/dist/manager/connector/environment.js +11 -4
  161. package/dist/manager/connector/environment.js.map +1 -1
  162. package/dist/manager/connector/index.d.ts +2 -2
  163. package/dist/manager/connector/index.d.ts.map +1 -1
  164. package/dist/manager/connector/index.js +2 -2
  165. package/dist/manager/connector/index.js.map +1 -1
  166. package/dist/manager/connector/tenant.d.ts +6 -0
  167. package/dist/manager/connector/tenant.d.ts.map +1 -1
  168. package/dist/manager/connector/tenant.js +11 -4
  169. package/dist/manager/connector/tenant.js.map +1 -1
  170. package/dist/manager/index.d.ts +2 -2
  171. package/dist/manager/index.d.ts.map +1 -1
  172. package/dist/manager/index.js +2 -2
  173. package/dist/manager/index.js.map +1 -1
  174. package/dist/manager/resident/initiative.d.ts +6 -6
  175. package/dist/manager/resident/learning-observation.d.ts +4 -4
  176. package/dist/manager/resident/learning.d.ts +36 -36
  177. package/dist/manager/resident/outbox.d.ts +4 -4
  178. package/dist/manager/session/attribution.d.ts +22 -0
  179. package/dist/manager/session/attribution.d.ts.map +1 -0
  180. package/dist/manager/session/attribution.js +64 -0
  181. package/dist/manager/session/attribution.js.map +1 -0
  182. package/dist/manager/session/turn-recorder.d.ts +14 -0
  183. package/dist/manager/session/turn-recorder.d.ts.map +1 -1
  184. package/dist/manager/session/turn-recorder.js +208 -55
  185. package/dist/manager/session/turn-recorder.js.map +1 -1
  186. package/dist/peers/address.d.ts +36 -0
  187. package/dist/peers/address.d.ts.map +1 -0
  188. package/dist/peers/address.js +52 -0
  189. package/dist/peers/address.js.map +1 -0
  190. package/dist/peers/client.d.ts +47 -0
  191. package/dist/peers/client.d.ts.map +1 -0
  192. package/dist/peers/client.js +132 -0
  193. package/dist/peers/client.js.map +1 -0
  194. package/dist/peers/dir.d.ts +88 -0
  195. package/dist/peers/dir.d.ts.map +1 -0
  196. package/dist/peers/dir.js +139 -0
  197. package/dist/peers/dir.js.map +1 -0
  198. package/dist/peers/endpoint.d.ts +144 -0
  199. package/dist/peers/endpoint.d.ts.map +1 -0
  200. package/dist/peers/endpoint.js +420 -0
  201. package/dist/peers/endpoint.js.map +1 -0
  202. package/dist/peers/envelope.d.ts +42 -0
  203. package/dist/peers/envelope.d.ts.map +1 -0
  204. package/dist/peers/envelope.js +110 -0
  205. package/dist/peers/envelope.js.map +1 -0
  206. package/dist/peers/index.d.ts +30 -0
  207. package/dist/peers/index.d.ts.map +1 -0
  208. package/dist/peers/index.js +22 -0
  209. package/dist/peers/index.js.map +1 -0
  210. package/dist/peers/protocol.d.ts +645 -0
  211. package/dist/peers/protocol.d.ts.map +1 -0
  212. package/dist/peers/protocol.js +151 -0
  213. package/dist/peers/protocol.js.map +1 -0
  214. package/dist/peers/record.d.ts +71 -0
  215. package/dist/peers/record.d.ts.map +1 -0
  216. package/dist/peers/record.js +45 -0
  217. package/dist/peers/record.js.map +1 -0
  218. package/dist/peers/registry.d.ts +54 -0
  219. package/dist/peers/registry.d.ts.map +1 -0
  220. package/dist/peers/registry.js +213 -0
  221. package/dist/peers/registry.js.map +1 -0
  222. package/dist/plugin/define.d.ts +24 -0
  223. package/dist/plugin/define.d.ts.map +1 -0
  224. package/dist/plugin/define.js +42 -0
  225. package/dist/plugin/define.js.map +1 -0
  226. package/dist/plugin/index.d.ts +2 -0
  227. package/dist/plugin/index.d.ts.map +1 -1
  228. package/dist/plugin/index.js +1 -0
  229. package/dist/plugin/index.js.map +1 -1
  230. package/dist/plugin/lifecycle.d.ts +27 -3
  231. package/dist/plugin/lifecycle.d.ts.map +1 -1
  232. package/dist/plugin/lifecycle.js +242 -92
  233. package/dist/plugin/lifecycle.js.map +1 -1
  234. package/dist/plugin/resolver.d.ts +2 -2
  235. package/dist/plugin/resolver.d.ts.map +1 -1
  236. package/dist/plugin/resolver.js.map +1 -1
  237. package/dist/plugin/shell-hook.d.ts.map +1 -1
  238. package/dist/plugin/shell-hook.js +17 -3
  239. package/dist/plugin/shell-hook.js.map +1 -1
  240. package/dist/probe/errors.d.ts +2 -1
  241. package/dist/probe/errors.d.ts.map +1 -1
  242. package/dist/probe/errors.js +3 -2
  243. package/dist/probe/errors.js.map +1 -1
  244. package/dist/prompt/coding-agent-doctrine.d.ts +18 -7
  245. package/dist/prompt/coding-agent-doctrine.d.ts.map +1 -1
  246. package/dist/prompt/coding-agent-doctrine.js +11 -6
  247. package/dist/prompt/coding-agent-doctrine.js.map +1 -1
  248. package/dist/prompt/contributions.d.ts +4 -1
  249. package/dist/prompt/contributions.d.ts.map +1 -1
  250. package/dist/prompt/contributions.js +7 -2
  251. package/dist/prompt/contributions.js.map +1 -1
  252. package/dist/prompt/index.d.ts +1 -1
  253. package/dist/prompt/index.d.ts.map +1 -1
  254. package/dist/prompt/index.js +1 -1
  255. package/dist/prompt/index.js.map +1 -1
  256. package/dist/provider/collect-chat-completion.d.ts +6 -1
  257. package/dist/provider/collect-chat-completion.d.ts.map +1 -1
  258. package/dist/provider/collect-chat-completion.js +88 -10
  259. package/dist/provider/collect-chat-completion.js.map +1 -1
  260. package/dist/provider/mock.d.ts.map +1 -1
  261. package/dist/provider/mock.js +23 -6
  262. package/dist/provider/mock.js.map +1 -1
  263. package/dist/provider/registry.d.ts +2 -1
  264. package/dist/provider/registry.d.ts.map +1 -1
  265. package/dist/provider/registry.js +3 -2
  266. package/dist/provider/registry.js.map +1 -1
  267. package/dist/provider/tool-call-framing.d.ts +164 -0
  268. package/dist/provider/tool-call-framing.d.ts.map +1 -0
  269. package/dist/provider/tool-call-framing.js +163 -0
  270. package/dist/provider/tool-call-framing.js.map +1 -0
  271. package/dist/public-runtime.d.ts +24 -11
  272. package/dist/public-runtime.d.ts.map +1 -1
  273. package/dist/public-runtime.js +45 -9
  274. package/dist/public-runtime.js.map +1 -1
  275. package/dist/public-tools.d.ts +6 -4
  276. package/dist/public-tools.d.ts.map +1 -1
  277. package/dist/public-tools.js +8 -3
  278. package/dist/public-tools.js.map +1 -1
  279. package/dist/public-types.d.ts +13 -2
  280. package/dist/public-types.d.ts.map +1 -1
  281. package/dist/read-model/registry.d.ts +2 -1
  282. package/dist/read-model/registry.d.ts.map +1 -1
  283. package/dist/read-model/registry.js +3 -2
  284. package/dist/read-model/registry.js.map +1 -1
  285. package/dist/registry/ManagedRegistry.d.ts +30 -0
  286. package/dist/registry/ManagedRegistry.d.ts.map +1 -1
  287. package/dist/registry/ManagedRegistry.js +45 -6
  288. package/dist/registry/ManagedRegistry.js.map +1 -1
  289. package/dist/registry/collision.d.ts +57 -0
  290. package/dist/registry/collision.d.ts.map +1 -0
  291. package/dist/registry/collision.js +41 -0
  292. package/dist/registry/collision.js.map +1 -0
  293. package/dist/registry/command/index.d.ts +5 -3
  294. package/dist/registry/command/index.d.ts.map +1 -1
  295. package/dist/registry/command/index.js +6 -4
  296. package/dist/registry/command/index.js.map +1 -1
  297. package/dist/registry/index.d.ts +3 -4
  298. package/dist/registry/index.d.ts.map +1 -1
  299. package/dist/registry/index.js +2 -2
  300. package/dist/registry/index.js.map +1 -1
  301. package/dist/registry/plugin/index.d.ts.map +1 -1
  302. package/dist/registry/plugin/index.js +14 -1
  303. package/dist/registry/plugin/index.js.map +1 -1
  304. package/dist/registry/tool/callable.d.ts +7 -7
  305. package/dist/registry/tool/callable.d.ts.map +1 -1
  306. package/dist/registry/tool/callable.js +6 -7
  307. package/dist/registry/tool/callable.js.map +1 -1
  308. package/dist/registry/tool/execute.d.ts +14 -77
  309. package/dist/registry/tool/execute.d.ts.map +1 -1
  310. package/dist/registry/tool/execute.js +15 -727
  311. package/dist/registry/tool/execute.js.map +1 -1
  312. package/dist/registry/tool/portable.d.ts +25 -0
  313. package/dist/registry/tool/portable.d.ts.map +1 -1
  314. package/dist/registry/tool/portable.js +50 -0
  315. package/dist/registry/tool/portable.js.map +1 -1
  316. package/dist/registry/tool/presentation.d.ts +6 -5
  317. package/dist/registry/tool/presentation.d.ts.map +1 -1
  318. package/dist/registry/tool/presentation.js +3 -3
  319. package/dist/registry/tool/presentation.js.map +1 -1
  320. package/dist/runtime/bidi/session.d.ts +5 -4
  321. package/dist/runtime/bidi/session.d.ts.map +1 -1
  322. package/dist/runtime/bidi/session.js +18 -1
  323. package/dist/runtime/bidi/session.js.map +1 -1
  324. package/dist/runtime/query/executor/tool-call-admission.d.ts +45 -2
  325. package/dist/runtime/query/executor/tool-call-admission.d.ts.map +1 -1
  326. package/dist/runtime/query/executor/tool-call-admission.js +189 -5
  327. package/dist/runtime/query/executor/tool-call-admission.js.map +1 -1
  328. package/dist/runtime/query/executor.d.ts +33 -3
  329. package/dist/runtime/query/executor.d.ts.map +1 -1
  330. package/dist/runtime/query/executor.js +86 -10
  331. package/dist/runtime/query/executor.js.map +1 -1
  332. package/dist/runtime/query/file-evidence-replay.d.ts +1 -1
  333. package/dist/runtime/query/file-evidence-replay.d.ts.map +1 -1
  334. package/dist/runtime/query/file-evidence-replay.js +8 -7
  335. package/dist/runtime/query/file-evidence-replay.js.map +1 -1
  336. package/dist/runtime/query/fork/prepare.d.ts +4 -1
  337. package/dist/runtime/query/fork/prepare.d.ts.map +1 -1
  338. package/dist/runtime/query/fork/prepare.js +4 -0
  339. package/dist/runtime/query/fork/prepare.js.map +1 -1
  340. package/dist/runtime/query/guardrail-presets.d.ts +4 -3
  341. package/dist/runtime/query/guardrail-presets.d.ts.map +1 -1
  342. package/dist/runtime/query/guardrail-presets.js +4 -3
  343. package/dist/runtime/query/guardrail-presets.js.map +1 -1
  344. package/dist/runtime/query/index.d.ts +23 -10
  345. package/dist/runtime/query/index.d.ts.map +1 -1
  346. package/dist/runtime/query/index.js +149 -70
  347. package/dist/runtime/query/index.js.map +1 -1
  348. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  349. package/dist/runtime/query/iteration/index.js +8 -1
  350. package/dist/runtime/query/iteration/index.js.map +1 -1
  351. package/dist/runtime/query/iteration/phases/compaction.js +1 -1
  352. package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
  353. package/dist/runtime/query/iteration/phases/context.d.ts +2 -2
  354. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  355. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  356. package/dist/runtime/query/iteration/phases/tool-review.js +55 -2
  357. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  358. package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
  359. package/dist/runtime/query/iteration/stream-turn.js +342 -116
  360. package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
  361. package/dist/runtime/query/iteration/tool-input.d.ts +79 -0
  362. package/dist/runtime/query/iteration/tool-input.d.ts.map +1 -0
  363. package/dist/runtime/query/iteration/tool-input.js +291 -0
  364. package/dist/runtime/query/iteration/tool-input.js.map +1 -0
  365. package/dist/runtime/query/observation-context.d.ts +2 -2
  366. package/dist/runtime/query/observation-context.d.ts.map +1 -1
  367. package/dist/runtime/query/observation-context.js.map +1 -1
  368. package/dist/runtime/query/prelude-lease.d.ts +18 -0
  369. package/dist/runtime/query/prelude-lease.d.ts.map +1 -0
  370. package/dist/runtime/query/prelude-lease.js +121 -0
  371. package/dist/runtime/query/prelude-lease.js.map +1 -0
  372. package/dist/runtime/query/prepare-turn.d.ts.map +1 -1
  373. package/dist/runtime/query/prepare-turn.js +386 -187
  374. package/dist/runtime/query/prepare-turn.js.map +1 -1
  375. package/dist/runtime/query/prompt-cache.d.ts +2 -2
  376. package/dist/runtime/query/prompt-cache.d.ts.map +1 -1
  377. package/dist/runtime/query/prompt.d.ts +2 -2
  378. package/dist/runtime/query/prompt.d.ts.map +1 -1
  379. package/dist/runtime/query/prompt.js +1 -1
  380. package/dist/runtime/query/prompt.js.map +1 -1
  381. package/dist/runtime/query/resume-session.d.ts.map +1 -1
  382. package/dist/runtime/query/resume-session.js +37 -2
  383. package/dist/runtime/query/resume-session.js.map +1 -1
  384. package/dist/runtime/query/review-policy.d.ts +22 -3
  385. package/dist/runtime/query/review-policy.d.ts.map +1 -1
  386. package/dist/runtime/query/review-policy.js +84 -6
  387. package/dist/runtime/query/review-policy.js.map +1 -1
  388. package/dist/runtime/query/tooling.d.ts +3 -2
  389. package/dist/runtime/query/tooling.d.ts.map +1 -1
  390. package/dist/runtime/query/tooling.js.map +1 -1
  391. package/dist/runtime/query/turn-state.d.ts.map +1 -1
  392. package/dist/runtime/query/turn-state.js +5 -0
  393. package/dist/runtime/query/turn-state.js.map +1 -1
  394. package/dist/runtime/system-events.d.ts +112 -0
  395. package/dist/runtime/system-events.d.ts.map +1 -0
  396. package/dist/runtime/system-events.js +183 -0
  397. package/dist/runtime/system-events.js.map +1 -0
  398. package/dist/scheduler/delegating.d.ts +2 -1
  399. package/dist/scheduler/delegating.d.ts.map +1 -1
  400. package/dist/scheduler/delegating.js +3 -2
  401. package/dist/scheduler/delegating.js.map +1 -1
  402. package/dist/scheduler/local.d.ts.map +1 -1
  403. package/dist/scheduler/local.js +2 -0
  404. package/dist/scheduler/local.js.map +1 -1
  405. package/dist/session/retention/archive.js +1 -1
  406. package/dist/session/retention/archive.js.map +1 -1
  407. package/dist/skills/index.d.ts +1 -1
  408. package/dist/skills/index.d.ts.map +1 -1
  409. package/dist/skills/index.js +1 -1
  410. package/dist/skills/index.js.map +1 -1
  411. package/dist/skills/registry.d.ts +12 -0
  412. package/dist/skills/registry.d.ts.map +1 -1
  413. package/dist/skills/registry.js +19 -0
  414. package/dist/skills/registry.js.map +1 -1
  415. package/dist/store/evidence/index-page.d.ts +2 -2
  416. package/dist/store/session/disk.d.ts.map +1 -1
  417. package/dist/store/session/disk.js +2 -0
  418. package/dist/store/session/disk.js.map +1 -1
  419. package/dist/store/session-log/conformance.d.ts +1 -1
  420. package/dist/store/session-log/conformance.d.ts.map +1 -1
  421. package/dist/store/session-log/conformance.js +49 -8
  422. package/dist/store/session-log/conformance.js.map +1 -1
  423. package/dist/store/session-log/core.d.ts +8 -3
  424. package/dist/store/session-log/core.d.ts.map +1 -1
  425. package/dist/store/session-log/core.js +2 -1
  426. package/dist/store/session-log/core.js.map +1 -1
  427. package/dist/store/session-log/fold.d.ts +12 -0
  428. package/dist/store/session-log/fold.d.ts.map +1 -1
  429. package/dist/store/session-log/fold.js +57 -7
  430. package/dist/store/session-log/fold.js.map +1 -1
  431. package/dist/store/session-log/index.d.ts +2 -2
  432. package/dist/store/session-log/index.d.ts.map +1 -1
  433. package/dist/store/session-log/index.js +1 -1
  434. package/dist/store/session-log/index.js.map +1 -1
  435. package/dist/test-support/toolset.d.ts +19 -0
  436. package/dist/test-support/toolset.d.ts.map +1 -0
  437. package/dist/test-support/toolset.js +20 -0
  438. package/dist/test-support/toolset.js.map +1 -0
  439. package/dist/tools/builtins/bash.d.ts +29 -0
  440. package/dist/tools/builtins/bash.d.ts.map +1 -1
  441. package/dist/tools/builtins/bash.js +19 -9
  442. package/dist/tools/builtins/bash.js.map +1 -1
  443. package/dist/tools/builtins/browser-url.d.ts +1 -1
  444. package/dist/tools/builtins/browser-url.js +1 -1
  445. package/dist/tools/builtins/browser.d.ts +6 -6
  446. package/dist/tools/builtins/browser.js +2 -2
  447. package/dist/tools/builtins/browser.js.map +1 -1
  448. package/dist/tools/builtins/computer-use.d.ts.map +1 -1
  449. package/dist/tools/builtins/computer-use.js +19 -11
  450. package/dist/tools/builtins/computer-use.js.map +1 -1
  451. package/dist/tools/builtins/edit.d.ts.map +1 -1
  452. package/dist/tools/builtins/edit.js +9 -1
  453. package/dist/tools/builtins/edit.js.map +1 -1
  454. package/dist/tools/builtins/json-string-hint.d.ts +15 -0
  455. package/dist/tools/builtins/json-string-hint.d.ts.map +1 -0
  456. package/dist/tools/builtins/json-string-hint.js +17 -0
  457. package/dist/tools/builtins/json-string-hint.js.map +1 -0
  458. package/dist/tools/builtins/search-tools.d.ts.map +1 -1
  459. package/dist/tools/builtins/search-tools.js +7 -15
  460. package/dist/tools/builtins/search-tools.js.map +1 -1
  461. package/dist/tools/builtins/write-file.d.ts.map +1 -1
  462. package/dist/tools/builtins/write-file.js +11 -0
  463. package/dist/tools/builtins/write-file.js.map +1 -1
  464. package/dist/tools/command-shell.d.ts +10 -0
  465. package/dist/tools/command-shell.d.ts.map +1 -1
  466. package/dist/tools/command-shell.js +45 -1
  467. package/dist/tools/command-shell.js.map +1 -1
  468. package/dist/tools/coordinator/agent.d.ts.map +1 -1
  469. package/dist/tools/coordinator/agent.js +5 -0
  470. package/dist/tools/coordinator/agent.js.map +1 -1
  471. package/dist/tools/coordinator/ask-user-question.d.ts.map +1 -1
  472. package/dist/tools/coordinator/ask-user-question.js +26 -13
  473. package/dist/tools/coordinator/ask-user-question.js.map +1 -1
  474. package/dist/tools/coordinator/index.d.ts.map +1 -1
  475. package/dist/tools/coordinator/index.js +5 -0
  476. package/dist/tools/coordinator/index.js.map +1 -1
  477. package/dist/tools/coordinator/question-options.d.ts +78 -0
  478. package/dist/tools/coordinator/question-options.d.ts.map +1 -0
  479. package/dist/tools/coordinator/question-options.js +153 -0
  480. package/dist/tools/coordinator/question-options.js.map +1 -0
  481. package/dist/tools/defineTool.d.ts +10 -0
  482. package/dist/tools/defineTool.d.ts.map +1 -1
  483. package/dist/tools/defineTool.js +17 -0
  484. package/dist/tools/defineTool.js.map +1 -1
  485. package/dist/tools/memory/search.d.ts.map +1 -1
  486. package/dist/tools/memory/search.js +4 -1
  487. package/dist/tools/memory/search.js.map +1 -1
  488. package/dist/tools/memory/update.d.ts.map +1 -1
  489. package/dist/tools/memory/update.js +8 -5
  490. package/dist/tools/memory/update.js.map +1 -1
  491. package/dist/tools/render-nonce.d.ts +47 -0
  492. package/dist/tools/render-nonce.d.ts.map +1 -0
  493. package/dist/tools/render-nonce.js +63 -0
  494. package/dist/tools/render-nonce.js.map +1 -0
  495. package/dist/tools/roster.d.ts +46 -19
  496. package/dist/tools/roster.d.ts.map +1 -1
  497. package/dist/tools/roster.js +63 -33
  498. package/dist/tools/roster.js.map +1 -1
  499. package/dist/tools/schedules/schedule-tool.d.ts.map +1 -1
  500. package/dist/tools/schedules/schedule-tool.js +94 -14
  501. package/dist/tools/schedules/schedule-tool.js.map +1 -1
  502. package/dist/tools/schedules/types.d.ts +52 -6
  503. package/dist/tools/schedules/types.d.ts.map +1 -1
  504. package/dist/tools/trusted-read-only.d.ts +9 -5
  505. package/dist/tools/trusted-read-only.d.ts.map +1 -1
  506. package/dist/tools/trusted-read-only.js +14 -10
  507. package/dist/tools/trusted-read-only.js.map +1 -1
  508. package/dist/tools/untrusted-envelope.d.ts +67 -28
  509. package/dist/tools/untrusted-envelope.d.ts.map +1 -1
  510. package/dist/tools/untrusted-envelope.js +108 -59
  511. package/dist/tools/untrusted-envelope.js.map +1 -1
  512. package/dist/toolsets/combine.d.ts +44 -0
  513. package/dist/toolsets/combine.d.ts.map +1 -0
  514. package/dist/toolsets/combine.js +153 -0
  515. package/dist/toolsets/combine.js.map +1 -0
  516. package/dist/toolsets/manager.d.ts +201 -0
  517. package/dist/toolsets/manager.d.ts.map +1 -0
  518. package/dist/toolsets/manager.js +837 -0
  519. package/dist/toolsets/manager.js.map +1 -0
  520. package/dist/toolsets/source-glob.d.ts +15 -0
  521. package/dist/toolsets/source-glob.d.ts.map +1 -0
  522. package/dist/toolsets/source-glob.js +23 -0
  523. package/dist/toolsets/source-glob.js.map +1 -0
  524. package/dist/toolsets/toolset.d.ts +20 -0
  525. package/dist/toolsets/toolset.d.ts.map +1 -0
  526. package/dist/toolsets/toolset.js +28 -0
  527. package/dist/toolsets/toolset.js.map +1 -0
  528. package/dist/toolsets/types.d.ts +128 -0
  529. package/dist/toolsets/types.d.ts.map +1 -0
  530. package/dist/toolsets/types.js +33 -0
  531. package/dist/toolsets/types.js.map +1 -0
  532. package/dist/toolsets/wrappers.d.ts +59 -0
  533. package/dist/toolsets/wrappers.d.ts.map +1 -0
  534. package/dist/toolsets/wrappers.js +165 -0
  535. package/dist/toolsets/wrappers.js.map +1 -0
  536. package/dist/types/agent/base.d.ts +27 -16
  537. package/dist/types/agent/base.d.ts.map +1 -1
  538. package/dist/types/agent/index.d.ts +1 -0
  539. package/dist/types/agent/index.d.ts.map +1 -1
  540. package/dist/types/agent/index.js +1 -0
  541. package/dist/types/agent/index.js.map +1 -1
  542. package/dist/types/agent/pipeline.d.ts +2 -0
  543. package/dist/types/agent/pipeline.d.ts.map +1 -1
  544. package/dist/types/agent/query.d.ts +117 -0
  545. package/dist/types/agent/query.d.ts.map +1 -0
  546. package/dist/types/agent/query.js +2 -0
  547. package/dist/types/agent/query.js.map +1 -0
  548. package/dist/types/agent/reactive.d.ts +2 -129
  549. package/dist/types/agent/reactive.d.ts.map +1 -1
  550. package/dist/types/agent/router.d.ts +2 -0
  551. package/dist/types/agent/router.d.ts.map +1 -1
  552. package/dist/types/agent/scheduler.d.ts +6 -1
  553. package/dist/types/agent/scheduler.d.ts.map +1 -1
  554. package/dist/types/agent/supervisor.d.ts +5 -2
  555. package/dist/types/agent/supervisor.d.ts.map +1 -1
  556. package/dist/types/agent/task.d.ts +19 -1
  557. package/dist/types/agent/task.d.ts.map +1 -1
  558. package/dist/types/agent/task.js.map +1 -1
  559. package/dist/types/authorization/index.d.ts +49 -12
  560. package/dist/types/authorization/index.d.ts.map +1 -1
  561. package/dist/types/authorization/index.js +6 -0
  562. package/dist/types/authorization/index.js.map +1 -1
  563. package/dist/types/connector/mcp.d.ts +45 -0
  564. package/dist/types/connector/mcp.d.ts.map +1 -1
  565. package/dist/types/errors/index.d.ts +15 -0
  566. package/dist/types/errors/index.d.ts.map +1 -1
  567. package/dist/types/errors/index.js.map +1 -1
  568. package/dist/types/hitl/index.d.ts +57 -0
  569. package/dist/types/hitl/index.d.ts.map +1 -1
  570. package/dist/types/hitl/index.js.map +1 -1
  571. package/dist/types/message/index.d.ts +130 -9
  572. package/dist/types/message/index.d.ts.map +1 -1
  573. package/dist/types/message/index.js +4 -1
  574. package/dist/types/message/index.js.map +1 -1
  575. package/dist/types/plugin/index.d.ts +22 -4
  576. package/dist/types/plugin/index.d.ts.map +1 -1
  577. package/dist/types/plugin/index.js +1 -0
  578. package/dist/types/plugin/index.js.map +1 -1
  579. package/dist/types/provider/chat.d.ts +5 -0
  580. package/dist/types/provider/chat.d.ts.map +1 -1
  581. package/dist/types/provider/config.d.ts +8 -3
  582. package/dist/types/provider/config.d.ts.map +1 -1
  583. package/dist/types/provider/stream.d.ts +39 -0
  584. package/dist/types/provider/stream.d.ts.map +1 -1
  585. package/dist/types/sandbox/index.d.ts +1 -1
  586. package/dist/types/session/events.d.ts +14 -3
  587. package/dist/types/session/events.d.ts.map +1 -1
  588. package/dist/types/session/events.js.map +1 -1
  589. package/dist/types/session/sub-session.d.ts +2 -0
  590. package/dist/types/session/sub-session.d.ts.map +1 -1
  591. package/dist/types/tool/index.d.ts +152 -91
  592. package/dist/types/tool/index.d.ts.map +1 -1
  593. package/dist/types/tool/index.js.map +1 -1
  594. package/dist/types/toolset/index.d.ts +10 -40
  595. package/dist/types/toolset/index.d.ts.map +1 -1
  596. package/package.json +1 -1
  597. package/src/advisory/history.ts +27 -2
  598. package/src/advisory/index.ts +1 -1
  599. package/src/advisory/registry.ts +33 -0
  600. package/src/agents/AGENTS.md +14 -7
  601. package/src/agents/PipelineAgent.ts +2 -303
  602. package/src/agents/QueryAgent.ts +269 -0
  603. package/src/agents/ReactiveAgent.ts +6 -216
  604. package/src/agents/RouterAgent.ts +2 -337
  605. package/src/agents/SupervisorAgent.ts +3 -476
  606. package/src/agents/defineAgent.ts +13 -2
  607. package/src/agents/examples/PipelineAgent.ts +302 -0
  608. package/src/agents/examples/RouterAgent.ts +338 -0
  609. package/src/agents/examples/SupervisorAgent.ts +472 -0
  610. package/src/agents/explore.ts +6 -3
  611. package/src/agents/forward-options.ts +37 -0
  612. package/src/agents/index.ts +2 -0
  613. package/src/agents/runAgent.ts +144 -37
  614. package/src/authorization/command-line.ts +2 -2
  615. package/src/authorization/gate.ts +21 -1
  616. package/src/authorization/program.ts +773 -0
  617. package/src/authorization/reexec-wrapper.ts +589 -0
  618. package/src/authorization/rules.ts +18 -1
  619. package/src/authorization/shell-lexer.ts +104 -59
  620. package/src/bridge/sse/mapper.ts +6 -0
  621. package/src/capabilities/index.ts +157 -0
  622. package/src/config/registry.ts +4 -1
  623. package/src/connector/index.ts +9 -2
  624. package/src/connector/mcp/adapter.ts +73 -3
  625. package/src/connector/mcp/client.ts +425 -6
  626. package/src/connector/mcp/discovery.ts +60 -0
  627. package/src/connector/mcp/era.ts +7 -0
  628. package/src/connector/mcp/index.ts +13 -0
  629. package/src/connector/mcp/mcp-toolset.ts +515 -0
  630. package/src/connector/mcp/streamable-http.ts +302 -5
  631. package/src/connector/tools/index.ts +2 -2
  632. package/src/connector/tools/router.ts +35 -58
  633. package/src/directory/derive-supervisor.ts +12 -8
  634. package/src/directory/derive.ts +8 -5
  635. package/src/execution/code-runtime/types.ts +2 -2
  636. package/src/invariants/index.ts +4 -1
  637. package/src/manager/agent/lifecycle.ts +167 -19
  638. package/src/manager/connector/environment.ts +17 -4
  639. package/src/manager/connector/index.ts +2 -2
  640. package/src/manager/connector/tenant.ts +17 -4
  641. package/src/manager/index.ts +2 -2
  642. package/src/manager/session/attribution.ts +79 -0
  643. package/src/manager/session/turn-recorder.ts +211 -55
  644. package/src/peers/address.ts +58 -0
  645. package/src/peers/client.ts +202 -0
  646. package/src/peers/dir.ts +176 -0
  647. package/src/peers/endpoint.ts +564 -0
  648. package/src/peers/envelope.ts +121 -0
  649. package/src/peers/index.ts +96 -0
  650. package/src/peers/protocol.ts +196 -0
  651. package/src/peers/record.ts +56 -0
  652. package/src/peers/registry.ts +241 -0
  653. package/src/plugin/define.ts +68 -0
  654. package/src/plugin/index.ts +2 -0
  655. package/src/plugin/lifecycle.ts +286 -106
  656. package/src/plugin/resolver.ts +6 -3
  657. package/src/plugin/shell-hook.ts +21 -5
  658. package/src/probe/errors.ts +4 -1
  659. package/src/prompt/coding-agent-doctrine.ts +22 -10
  660. package/src/prompt/contributions.ts +12 -2
  661. package/src/prompt/index.ts +1 -0
  662. package/src/provider/collect-chat-completion.ts +96 -11
  663. package/src/provider/mock.ts +24 -6
  664. package/src/provider/registry.ts +4 -1
  665. package/src/provider/tool-call-framing.ts +226 -0
  666. package/src/public-runtime.ts +136 -7
  667. package/src/public-tools.ts +24 -4
  668. package/src/public-types.ts +60 -6
  669. package/src/read-model/registry.ts +7 -2
  670. package/src/registry/ManagedRegistry.ts +57 -6
  671. package/src/registry/collision.ts +64 -0
  672. package/src/registry/command/index.ts +7 -3
  673. package/src/registry/index.ts +3 -9
  674. package/src/registry/plugin/index.ts +14 -1
  675. package/src/registry/tool/callable.ts +8 -9
  676. package/src/registry/tool/execute.ts +16 -846
  677. package/src/registry/tool/portable.ts +59 -0
  678. package/src/registry/tool/presentation.ts +6 -5
  679. package/src/runtime/bidi/session.ts +24 -5
  680. package/src/runtime/query/executor/tool-call-admission.ts +228 -6
  681. package/src/runtime/query/executor.ts +110 -12
  682. package/src/runtime/query/file-evidence-replay.ts +8 -7
  683. package/src/runtime/query/fork/prepare.ts +6 -1
  684. package/src/runtime/query/guardrail-presets.ts +4 -3
  685. package/src/runtime/query/index.ts +199 -101
  686. package/src/runtime/query/iteration/index.ts +13 -3
  687. package/src/runtime/query/iteration/phases/compaction.ts +1 -1
  688. package/src/runtime/query/iteration/phases/context.ts +2 -2
  689. package/src/runtime/query/iteration/phases/tool-review.ts +59 -2
  690. package/src/runtime/query/iteration/stream-turn.ts +390 -136
  691. package/src/runtime/query/iteration/tool-input.ts +284 -0
  692. package/src/runtime/query/observation-context.ts +2 -2
  693. package/src/runtime/query/prelude-lease.ts +132 -0
  694. package/src/runtime/query/prepare-turn.ts +477 -198
  695. package/src/runtime/query/prompt-cache.ts +2 -2
  696. package/src/runtime/query/prompt.ts +4 -4
  697. package/src/runtime/query/resume-session.ts +42 -3
  698. package/src/runtime/query/review-policy.ts +87 -9
  699. package/src/runtime/query/tooling.ts +3 -6
  700. package/src/runtime/query/turn-state.ts +4 -0
  701. package/src/runtime/system-events.ts +246 -0
  702. package/src/scheduler/delegating.ts +7 -2
  703. package/src/scheduler/local.ts +2 -0
  704. package/src/session/retention/archive.ts +1 -1
  705. package/src/skills/index.ts +1 -1
  706. package/src/skills/registry.ts +25 -0
  707. package/src/store/session/disk.ts +3 -0
  708. package/src/store/session-log/conformance.ts +51 -8
  709. package/src/store/session-log/core.ts +10 -4
  710. package/src/store/session-log/fold.ts +33 -7
  711. package/src/store/session-log/index.ts +2 -0
  712. package/src/test-support/toolset.ts +23 -0
  713. package/src/tools/builtins/bash.ts +27 -10
  714. package/src/tools/builtins/browser-url.ts +1 -1
  715. package/src/tools/builtins/browser.ts +2 -2
  716. package/src/tools/builtins/computer-use.ts +21 -11
  717. package/src/tools/builtins/edit.ts +12 -2
  718. package/src/tools/builtins/json-string-hint.ts +16 -0
  719. package/src/tools/builtins/search-tools.ts +7 -20
  720. package/src/tools/builtins/write-file.ts +12 -0
  721. package/src/tools/command-shell.ts +46 -1
  722. package/src/tools/coordinator/agent.ts +6 -0
  723. package/src/tools/coordinator/ask-user-question.ts +29 -15
  724. package/src/tools/coordinator/index.ts +6 -0
  725. package/src/tools/coordinator/question-options.ts +195 -0
  726. package/src/tools/defineTool.ts +28 -0
  727. package/src/tools/memory/search.ts +4 -1
  728. package/src/tools/memory/update.ts +8 -5
  729. package/src/tools/render-nonce.ts +69 -0
  730. package/src/tools/roster.ts +84 -33
  731. package/src/tools/schedules/schedule-tool.ts +107 -14
  732. package/src/tools/schedules/types.ts +52 -6
  733. package/src/tools/trusted-read-only.ts +19 -10
  734. package/src/tools/untrusted-envelope.ts +121 -57
  735. package/src/toolsets/combine.ts +181 -0
  736. package/src/toolsets/manager.ts +996 -0
  737. package/src/toolsets/source-glob.ts +22 -0
  738. package/src/toolsets/toolset.ts +31 -0
  739. package/src/toolsets/types.ts +154 -0
  740. package/src/toolsets/wrappers.ts +191 -0
  741. package/src/types/agent/base.ts +29 -16
  742. package/src/types/agent/index.ts +1 -0
  743. package/src/types/agent/pipeline.ts +2 -0
  744. package/src/types/agent/query.ts +129 -0
  745. package/src/types/agent/reactive.ts +5 -142
  746. package/src/types/agent/router.ts +2 -0
  747. package/src/types/agent/scheduler.ts +6 -1
  748. package/src/types/agent/supervisor.ts +5 -2
  749. package/src/types/agent/task.ts +21 -1
  750. package/src/types/authorization/index.ts +12 -0
  751. package/src/types/connector/mcp.ts +46 -0
  752. package/src/types/errors/index.ts +15 -0
  753. package/src/types/hitl/index.ts +57 -0
  754. package/src/types/message/index.ts +135 -7
  755. package/src/types/plugin/index.ts +44 -21
  756. package/src/types/provider/chat.ts +5 -0
  757. package/src/types/provider/config.ts +8 -3
  758. package/src/types/provider/stream.ts +39 -0
  759. package/src/types/sandbox/index.ts +1 -1
  760. package/src/types/session/events.ts +14 -3
  761. package/src/types/session/sub-session.ts +2 -0
  762. package/src/types/tool/index.ts +154 -105
  763. package/src/types/toolset/index.ts +10 -47
  764. package/dist/registry/toolset/catalog.d.ts +0 -42
  765. package/dist/registry/toolset/catalog.d.ts.map +0 -1
  766. package/dist/registry/toolset/catalog.js +0 -234
  767. package/dist/registry/toolset/catalog.js.map +0 -1
  768. package/src/registry/toolset/catalog.ts +0 -308
@@ -1,4 +1,5 @@
1
- import { rm } from 'node:fs/promises'
1
+ import { realpath, rm, stat } from 'node:fs/promises'
2
+ import { isAbsolute, relative, resolve, sep } from 'node:path'
2
3
  import { AGENT_MANAGER_DEFAULTS } from '../../constants/agent/index.js'
3
4
  import { EMPTY_TOKEN_USAGE } from '../../constants/limits.js'
4
5
  import { GENAI } from '../../constants/telemetry/index.js'
@@ -9,6 +10,7 @@ import {
9
10
  } from '../../session/handoff/capacity.js'
10
11
  import type { SessionLocator, SessionPaths } from '../../session/paths.js'
11
12
  import type { SessionSummaryMaterializer } from '../../session/summary/materialize.js'
13
+ import type { WorkspaceBackendDriver } from '../../session/workspace/driver.js'
12
14
  import type { WorkspaceBackendRegistry } from '../../session/workspace/registry.js'
13
15
  import {
14
16
  DiskSessionLog,
@@ -151,6 +153,7 @@ interface ChildSpawnRecord {
151
153
  /** Removes the child's log from the process-local lookup. */
152
154
  releaseLog?: () => void
153
155
  workspaceRef?: WorkspaceRef
156
+ workspaceRetention?: 'retain'
154
157
  /**
155
158
  * What this child was actually granted, after the ancestor union.
156
159
  *
@@ -180,6 +183,81 @@ function mergeEnv(
180
183
  return { ...base, ...override }
181
184
  }
182
185
 
186
+ /** A requested isolated child must never resolve to its caller's directory. */
187
+ async function requireIsolatedWorktreePath(
188
+ ref: WorkspaceRef | undefined,
189
+ callerCwd?: string,
190
+ subdirectory?: string,
191
+ ): Promise<string> {
192
+ const meta = ref?.meta
193
+ if (
194
+ typeof ref?.id !== 'string' ||
195
+ ref.id.length === 0 ||
196
+ meta?.backend !== 'git-worktree' ||
197
+ typeof meta.repoRoot !== 'string' ||
198
+ !isAbsolute(meta.repoRoot) ||
199
+ typeof meta.branch !== 'string' ||
200
+ meta.branch.length === 0 ||
201
+ typeof meta.worktreePath !== 'string' ||
202
+ !isAbsolute(meta.worktreePath) ||
203
+ resolve(meta.worktreePath) === resolve(callerCwd ?? process.cwd())
204
+ ) {
205
+ throw new Error('Isolated git-worktree driver returned an invalid workspace ref or path')
206
+ }
207
+ // A custom driver can return a different absolute spelling of the same
208
+ // directory (for example, a symlink to the caller). Both paths must exist
209
+ // before the child is admitted, and their physical roots must differ.
210
+ let physicalPaths: [string, string]
211
+ try {
212
+ physicalPaths = await Promise.all([
213
+ realpath(meta.worktreePath),
214
+ realpath(resolve(callerCwd ?? process.cwd())),
215
+ ])
216
+ if (!(await stat(physicalPaths[0])).isDirectory()) {
217
+ throw new Error('The worktree path is not a directory')
218
+ }
219
+ } catch (cause) {
220
+ throw new Error('Isolated git-worktree driver returned an invalid workspace ref or path', {
221
+ cause,
222
+ })
223
+ }
224
+ if (physicalPaths[0] === physicalPaths[1]) {
225
+ throw new Error('Isolated git-worktree driver returned an invalid workspace ref or path')
226
+ }
227
+ if (subdirectory === undefined) return meta.worktreePath
228
+ if (typeof subdirectory !== 'string' || subdirectory.length === 0 || isAbsolute(subdirectory)) {
229
+ throw new Error('Isolated workspace subdirectory must be a nonempty relative path')
230
+ }
231
+ const lexicalChild = resolve(meta.worktreePath, subdirectory)
232
+ const lexicalRelative = relative(resolve(meta.worktreePath), lexicalChild)
233
+ if (
234
+ isAbsolute(lexicalRelative) ||
235
+ lexicalRelative === '..' ||
236
+ lexicalRelative.startsWith(`..${sep}`)
237
+ ) {
238
+ throw new Error('Isolated workspace subdirectory escapes the worktree')
239
+ }
240
+ let physicalChild: string
241
+ try {
242
+ physicalChild = await realpath(lexicalChild)
243
+ if (!(await stat(physicalChild)).isDirectory()) {
244
+ throw new Error('The selected worktree path is not a directory')
245
+ }
246
+ } catch (cause) {
247
+ throw new Error('Isolated workspace subdirectory is missing or not a directory', { cause })
248
+ }
249
+ const physicalRelative = relative(physicalPaths[0], physicalChild)
250
+ if (
251
+ physicalRelative === '' ||
252
+ isAbsolute(physicalRelative) ||
253
+ physicalRelative === '..' ||
254
+ physicalRelative.startsWith(`..${sep}`)
255
+ ) {
256
+ throw new Error('Isolated workspace subdirectory resolves outside its worktree')
257
+ }
258
+ return physicalChild
259
+ }
260
+
183
261
  /**
184
262
  * One `reviewAllowedCalls` that answers `true` when any of `sources` does.
185
263
  *
@@ -283,7 +361,9 @@ export class AgentManager {
283
361
  if (task.context === context || context.parentAbortController.signal.aborted)
284
362
  this.cancel(task.taskId, 'parent')
285
363
  }
286
- task.childAbortController.signal.addEventListener('abort', onAbort, { once: true })
364
+ task.childAbortController.signal.addEventListener('abort', onAbort, {
365
+ once: true,
366
+ })
287
367
  const entry: PendingSpawn = {
288
368
  ready: false,
289
369
  task,
@@ -522,9 +602,25 @@ export class AgentManager {
522
602
  await childBudget.flush()
523
603
  throw error
524
604
  }
605
+ let childOptions: SendMessageOptions = options
525
606
  let childAbortController: AbortController | undefined
526
607
  let agentTask: AgentTask | undefined
527
608
  try {
609
+ // Explicit isolation is the child's execution root, not a side
610
+ // resource. Keep validation in this rollback envelope too.
611
+ if (options.workspace?.mode === 'isolated') {
612
+ childOptions = {
613
+ ...options,
614
+ input: {
615
+ ...options.input,
616
+ workingDirectory: await requireIsolatedWorktreePath(
617
+ spawnRecord.workspaceRef,
618
+ options.input.workingDirectory,
619
+ options.workspace.subdirectory,
620
+ ),
621
+ },
622
+ }
623
+ }
528
624
  childAbortController =
529
625
  queuedTask?.childAbortController ??
530
626
  createChildAbortController(context.parentAbortController)
@@ -599,6 +695,7 @@ export class AgentManager {
599
695
  state: 'pending',
600
696
  pendingMessages: queuedTask?.pendingMessages ?? [],
601
697
  createdAt: queuedTask?.createdAt ?? Date.now(),
698
+ workspace: options.workspace?.mode === 'isolated' ? spawnRecord.workspaceRef : undefined,
602
699
  sessionEventListener: listener,
603
700
  } satisfies AgentTask)
604
701
 
@@ -676,6 +773,7 @@ export class AgentManager {
676
773
  ...(context.factoryOptions ?? {}),
677
774
  tokenBudget: allocatedTokens,
678
775
  timeoutMs: options.budgetAllocation?.timeoutMs ?? this.config.childTimeoutMs,
776
+ workingDirectory: childOptions.input.workingDirectory,
679
777
  sessionId: spawnRecord.childSessionId,
680
778
  parentSessionId: spawnRecord.parentSessionId,
681
779
  parentTurnId: spawnRecord.parentTurnId,
@@ -872,11 +970,11 @@ export class AgentManager {
872
970
  spawnRecord,
873
971
  childConfig,
874
972
  context,
875
- options,
973
+ childOptions,
876
974
  taskId,
877
975
  )
878
976
  if (childLog) {
879
- await this.startChildSessionLog(childLog, spawnRecord, context, options, taskId, {
977
+ await this.startChildSessionLog(childLog, spawnRecord, context, childOptions, taskId, {
880
978
  id: agent.metadata.id,
881
979
  name: agent.metadata.name,
882
980
  })
@@ -903,7 +1001,7 @@ export class AgentManager {
903
1001
  childAbortController.signal.throwIfAborted()
904
1002
  this.executingTasks.add(taskId)
905
1003
  const runningTask = agentTask
906
- this.runChild(runningTask, options, childConfig, listener)
1004
+ this.runChild(runningTask, childOptions, childConfig, listener)
907
1005
  .catch(async (err) => {
908
1006
  // A thrown invocation supplied no final usage receipt. Keep its
909
1007
  // reservation, including when its task handle was canceled or evicted.
@@ -999,6 +1097,9 @@ export class AgentManager {
999
1097
  this.scheduleEviction(agentTask.taskId)
1000
1098
  } else this.instances.delete(agentTask.taskId)
1001
1099
  this.dropSpawnRecord(agentTask.taskId)
1100
+ // Admission never completed. The checkout is rollback-owned, not a
1101
+ // retained result that a terminal handle may advertise.
1102
+ agentTask.workspace = undefined
1002
1103
  this.resolveCompletionCallbacks(agentTask.taskId)
1003
1104
  await this.rollbackSpawnResources(spawnRecord)
1004
1105
  }
@@ -1015,7 +1116,7 @@ export class AgentManager {
1015
1116
  }),
1016
1117
  )
1017
1118
  }
1018
- await this.disposeChildWorkspace(spawnRecord)
1119
+ await this.disposeChildWorkspace({ ...spawnRecord, workspaceRetention: undefined })
1019
1120
  try {
1020
1121
  // The edge must be removed before its child: stores reject deletion
1021
1122
  // of a session that still has a subsession reference.
@@ -1135,7 +1236,10 @@ export class AgentManager {
1135
1236
  taskId: TaskId,
1136
1237
  agent: { readonly id: string; readonly name: string },
1137
1238
  ): Promise<void> {
1138
- const lease = await log.claim({ holder: `namzu:agent-manager:${taskId}`, ttlMs: 30_000 })
1239
+ const lease = await log.claim({
1240
+ holder: `namzu:agent-manager:${taskId}`,
1241
+ ttlMs: 30_000,
1242
+ })
1139
1243
  if (lease === null) {
1140
1244
  throw new Error(`Child session ${spawnRecord.childSessionId} is already leased`)
1141
1245
  }
@@ -1459,6 +1563,7 @@ export class AgentManager {
1459
1563
  // parent but counted against `maxDelegationWidth`.
1460
1564
  let subSession: Awaited<ReturnType<typeof store.createSubSession>> | undefined
1461
1565
  let workspaceRef: WorkspaceRef | undefined
1566
+ let workspaceDriver: WorkspaceBackendDriver | undefined
1462
1567
  try {
1463
1568
  // Flip to 'active' so the materializer's atomic write + status flip
1464
1569
  // lands on terminal — §5.3: pending→active→idle.
@@ -1483,10 +1588,30 @@ export class AgentManager {
1483
1588
  // provisioning: an unregistered backend leaves `workspaceRef:
1484
1589
  // undefined` on the spawn record, not a hard error — the registry
1485
1590
  // is the capability surface.
1486
- const backend = options.workspaceBackend ?? 'git-worktree'
1487
- if (this.deps.workspaceRegistry.has(backend)) {
1591
+ const request = options.workspace
1592
+ const backend =
1593
+ request?.mode === 'shared'
1594
+ ? undefined
1595
+ : request?.mode === 'isolated'
1596
+ ? request.backend
1597
+ : (options.workspaceBackend ??
1598
+ (this.config.workspaceDefault === 'shared' ? undefined : 'git-worktree'))
1599
+ if (request?.mode === 'isolated' && !this.deps.workspaceRegistry.has(request.backend)) {
1600
+ throw new Error(`Isolated workspace backend ${request.backend} is unavailable`)
1601
+ }
1602
+ if (backend && this.deps.workspaceRegistry.has(backend)) {
1488
1603
  const driver = this.deps.workspaceRegistry.get(backend)
1489
- workspaceRef = await driver.create({ label: subSession.id })
1604
+ workspaceDriver = driver
1605
+ workspaceRef = await driver.create({
1606
+ label: subSession.id,
1607
+ ...(request?.mode === 'isolated' && request.baseRef ? { baseRef: request.baseRef } : {}),
1608
+ })
1609
+ if (request?.mode === 'isolated')
1610
+ await requireIsolatedWorktreePath(
1611
+ workspaceRef,
1612
+ options.input.workingDirectory,
1613
+ request.subdirectory,
1614
+ )
1490
1615
 
1491
1616
  // Write the workspace onto the record that outlives this process.
1492
1617
  //
@@ -1503,16 +1628,23 @@ export class AgentManager {
1503
1628
  // exist before the record it is named after. Inside the try, so
1504
1629
  // the compensating rollback below covers it like every other
1505
1630
  // mutation here.
1506
- subSession = { ...subSession, workspaceId: workspaceRef.id }
1631
+ subSession = {
1632
+ ...subSession,
1633
+ workspaceId: workspaceRef.id,
1634
+ ...(request?.mode === 'isolated' && request.retention === 'retain'
1635
+ ? { workspaceRetention: 'retain' as const }
1636
+ : {}),
1637
+ }
1507
1638
  await store.updateSubSession(subSession, context.tenantId)
1508
1639
  }
1509
1640
  } catch (err) {
1510
- if (workspaceRef && subSession) {
1511
- await this.disposeChildWorkspace({
1512
- workspaceRef,
1513
- subSessionId: subSession.id,
1514
- })
1515
- }
1641
+ if (workspaceRef && workspaceDriver)
1642
+ await workspaceDriver.dispose(workspaceRef).catch((disposeErr) =>
1643
+ this.log.warn('Unstarted workspace dispose failed', {
1644
+ 'namzu.sub_session.id': subSession?.id,
1645
+ 'exception.message': toErrorMessage(disposeErr),
1646
+ }),
1647
+ )
1516
1648
  // Compensating rollback order is mandated by the store's
1517
1649
  // deny-by-default cascade policy (Convention #5): `deleteSession`
1518
1650
  // throws when any subsession still references it, so the subsession
@@ -1540,6 +1672,9 @@ export class AgentManager {
1540
1672
  ancestry: parentAncestry,
1541
1673
  childDepth,
1542
1674
  workspaceRef,
1675
+ ...(options.workspace?.mode === 'isolated' && options.workspace.retention === 'retain'
1676
+ ? { workspaceRetention: 'retain' as const }
1677
+ : {}),
1543
1678
  }
1544
1679
  }
1545
1680
 
@@ -1555,6 +1690,15 @@ export class AgentManager {
1555
1690
  const input = {
1556
1691
  ...options.input,
1557
1692
  signal: agentTask.childAbortController.signal,
1693
+ // The admitted child session is the authority. A caller-supplied input
1694
+ // cannot redirect its turn to another tenant, project, topic or session.
1695
+ managedScope: {
1696
+ kind: 'managed' as const,
1697
+ sessionId: agentTask.context.sessionId,
1698
+ topicId: agentTask.context.topicId,
1699
+ projectId: agentTask.context.projectId,
1700
+ tenantId: agentTask.context.tenantId,
1701
+ },
1558
1702
  }
1559
1703
 
1560
1704
  const spawnRecord = this.spawnRecords.get(agentTask.taskId)
@@ -1760,7 +1904,10 @@ export class AgentManager {
1760
1904
  status: 'failed',
1761
1905
  usage: agentTask.context.budget.ownUsage,
1762
1906
  budget: agentTask.context.budget.summary(),
1763
- cost: { ...ZERO_COST, unpricedTokens: agentTask.context.budget.ownTokens },
1907
+ cost: {
1908
+ ...ZERO_COST,
1909
+ unpricedTokens: agentTask.context.budget.ownTokens,
1910
+ },
1764
1911
  iterations: 0,
1765
1912
  durationMs: Date.now() - agentTask.createdAt,
1766
1913
  messages: [],
@@ -1826,8 +1973,9 @@ export class AgentManager {
1826
1973
  * removed is an operator's problem and silence is how it stays one.
1827
1974
  */
1828
1975
  private async disposeChildWorkspace(
1829
- spawnRecord: Pick<ChildSpawnRecord, 'workspaceRef' | 'subSessionId'>,
1976
+ spawnRecord: Pick<ChildSpawnRecord, 'workspaceRef' | 'workspaceRetention' | 'subSessionId'>,
1830
1977
  ): Promise<void> {
1978
+ if (spawnRecord.workspaceRetention === 'retain') return
1831
1979
  if (!spawnRecord.workspaceRef) return
1832
1980
  const backend = spawnRecord.workspaceRef.meta.backend
1833
1981
  if (!this.deps.workspaceRegistry.has(backend)) return
@@ -1,6 +1,7 @@
1
1
  import type { BaseConnector } from '../../connector/BaseConnector.js'
2
2
  import type { BaseExecutionContext } from '../../execution/base.js'
3
3
  import { ExecutionContextFactory } from '../../execution/factory.js'
4
+ import { RegistryCollisionError } from '../../registry/collision.js'
4
5
  import type { ConnectorRegistry } from '../../registry/connector/definitions.js'
5
6
  import type { ScopedConnectorRegistry } from '../../registry/connector/scoped.js'
6
7
  import type {
@@ -43,6 +44,21 @@ export interface EnvironmentConnectorManagerConfig {
43
44
  log?: Logger
44
45
  }
45
46
 
47
+ /** Two environments claiming one id. */
48
+ export class EnvironmentCollisionError extends RegistryCollisionError {
49
+ readonly environmentId: string
50
+
51
+ constructor(environmentId: string) {
52
+ super(
53
+ 'EnvironmentConnectorManager',
54
+ environmentId,
55
+ `Environment "${environmentId}" is already registered. Unregister it first via unregisterEnvironment(), or pick a different id.`,
56
+ )
57
+ this.name = 'EnvironmentCollisionError'
58
+ this.environmentId = environmentId
59
+ }
60
+ }
61
+
46
62
  interface EnvironmentState {
47
63
  descriptor: EnvironmentDescriptor
48
64
  scopeChain: ScopeChain
@@ -71,10 +87,7 @@ export class EnvironmentConnectorManager {
71
87
  registerEnvironment(setup: EnvironmentConnectorSetup): void {
72
88
  const envId = setup.environment.id
73
89
  if (this.environments.has(envId)) {
74
- this.log.warn('Environment already registered, skipping', {
75
- 'namzu.environment.id': envId,
76
- })
77
- return
90
+ throw new EnvironmentCollisionError(envId)
78
91
  }
79
92
 
80
93
  const manager = new ConnectorManager({ registry: this.connectorRegistry, log: this.log })
@@ -1,10 +1,10 @@
1
1
  export { ConnectorManager } from './lifecycle.js'
2
2
  export type { ConnectorManagerConfig } from './lifecycle.js'
3
3
 
4
- export { TenantConnectorManager } from './tenant.js'
4
+ export { TenantCollisionError, TenantConnectorManager } from './tenant.js'
5
5
  export type { TenantConnectorManagerConfig } from './tenant.js'
6
6
 
7
- export { EnvironmentConnectorManager } from './environment.js'
7
+ export { EnvironmentCollisionError, EnvironmentConnectorManager } from './environment.js'
8
8
  export type {
9
9
  EnvironmentConnectorSetup,
10
10
  EnvironmentConnectorManagerConfig,
@@ -1,5 +1,6 @@
1
1
  import type { BaseConnector } from '../../connector/BaseConnector.js'
2
2
  import { NAMZU } from '../../constants/telemetry/index.js'
3
+ import { RegistryCollisionError } from '../../registry/collision.js'
3
4
  import type { ConnectorRegistry } from '../../registry/connector/definitions.js'
4
5
  import type {
5
6
  AuthConfig,
@@ -47,6 +48,21 @@ export interface TenantConnectorManagerConfig {
47
48
  log?: Logger
48
49
  }
49
50
 
51
+ /** Two tenants claiming one id. */
52
+ export class TenantCollisionError extends RegistryCollisionError {
53
+ readonly tenantId: string
54
+
55
+ constructor(tenantId: string) {
56
+ super(
57
+ 'TenantConnectorManager',
58
+ tenantId,
59
+ `Tenant "${tenantId}" is already registered. Unregister it first via unregisterTenant(), or pick a different id.`,
60
+ )
61
+ this.name = 'TenantCollisionError'
62
+ this.tenantId = tenantId
63
+ }
64
+ }
65
+
50
66
  interface TenantState {
51
67
  descriptor: TenantDescriptor
52
68
  manager: ConnectorManager
@@ -73,10 +89,7 @@ export class TenantConnectorManager {
73
89
 
74
90
  registerTenant(descriptor: TenantDescriptor, rateLimit?: TenantRateLimitConfig): void {
75
91
  if (this.tenants.has(descriptor.id)) {
76
- this.log.warn('Tenant already registered, skipping', {
77
- [NAMZU.TENANT_ID]: descriptor.id,
78
- })
79
- return
92
+ throw new TenantCollisionError(descriptor.id)
80
93
  }
81
94
 
82
95
  const tenantLog = this.log.child({ [NAMZU.TENANT_ID]: descriptor.id })
@@ -3,10 +3,10 @@ export { TurnRecorder } from './session/turn-recorder.js'
3
3
  export { ConnectorManager } from './connector/lifecycle.js'
4
4
  export type { ConnectorManagerConfig } from './connector/lifecycle.js'
5
5
 
6
- export { TenantConnectorManager } from './connector/tenant.js'
6
+ export { TenantCollisionError, TenantConnectorManager } from './connector/tenant.js'
7
7
  export type { TenantConnectorManagerConfig } from './connector/tenant.js'
8
8
 
9
- export { EnvironmentConnectorManager } from './connector/environment.js'
9
+ export { EnvironmentCollisionError, EnvironmentConnectorManager } from './connector/environment.js'
10
10
  export type {
11
11
  EnvironmentConnectorSetup,
12
12
  EnvironmentConnectorManagerConfig,
@@ -0,0 +1,79 @@
1
+ import type { SessionLog } from '../../store/session-log/index.js'
2
+ import { NamzuError } from '../../types/errors/index.js'
3
+ import type { ProjectId, SessionId, TenantId, TopicId } from '../../types/ids/index.js'
4
+
5
+ /** The complete owner a caller says a session log has. */
6
+ export interface SessionLogAttribution {
7
+ readonly sessionId: SessionId
8
+ readonly projectId: ProjectId
9
+ readonly tenantId: TenantId
10
+ readonly topicId: TopicId
11
+ }
12
+
13
+ /**
14
+ * Refuse a session owned by another scope before reading its history or
15
+ * checkpoints. Call again while holding its writer lease before a new turn:
16
+ * an empty log seen before the claim may have been opened by another writer.
17
+ *
18
+ * Older logs can omit tenantId/topicId in their schema. They remain readable,
19
+ * but cannot be continued or forked under a guessed owner.
20
+ * Returns false for an unopened log when `requireStarted` is not set.
21
+ */
22
+ export async function assertSessionLogAttribution(
23
+ log: SessionLog,
24
+ scope: SessionLogAttribution,
25
+ options: { readonly requireStarted?: boolean } = {},
26
+ ): Promise<boolean> {
27
+ const requiredFields = ['sessionId', 'projectId', 'tenantId', 'topicId'] as const
28
+ const missingFields = requiredFields.filter(
29
+ (field) => typeof scope[field] !== 'string' || scope[field] === '',
30
+ )
31
+ if (missingFields.length > 0) {
32
+ throw new NamzuError({
33
+ code: 'invalid_config',
34
+ message: `A session owner scope requires ${missingFields.join(', ')}.`,
35
+ details: { fields: missingFields },
36
+ })
37
+ }
38
+ if (log.sessionId !== scope.sessionId) {
39
+ throw new NamzuError({
40
+ code: 'invalid_config',
41
+ message: `The session log belongs to session ${log.sessionId}, not ${scope.sessionId}.`,
42
+ details: { fields: ['sessionId'] },
43
+ })
44
+ }
45
+
46
+ const opened = (await log.readAll({ throughSeq: 1 })).entries[0]?.record
47
+ if (!opened && !options.requireStarted) return false
48
+ if (!opened) {
49
+ throw new NamzuError({
50
+ code: 'invalid_config',
51
+ message: `Session ${scope.sessionId} has no session_started owner record.`,
52
+ details: { fields: ['sessionId'] },
53
+ })
54
+ }
55
+ if (opened.type !== 'session_started') {
56
+ throw new NamzuError({
57
+ code: 'invalid_config',
58
+ message: `Session ${scope.sessionId} has no session_started owner record.`,
59
+ details: { fields: ['sessionId'] },
60
+ })
61
+ }
62
+
63
+ const fields: string[] = []
64
+ if (opened.sessionId !== scope.sessionId) fields.push('sessionId')
65
+ if (opened.projectId !== scope.projectId) fields.push('projectId')
66
+ if (opened.tenantId === undefined || opened.tenantId !== scope.tenantId) {
67
+ fields.push('tenantId')
68
+ }
69
+ if (opened.topicId === undefined || opened.topicId !== scope.topicId) {
70
+ fields.push('topicId')
71
+ }
72
+ if (fields.length === 0) return true
73
+
74
+ throw new NamzuError({
75
+ code: 'invalid_config',
76
+ message: `Session ${scope.sessionId} is not opened under the supplied ${fields.join(', ')} scope.`,
77
+ details: { fields },
78
+ })
79
+ }