@evalops/maestro 0.10.18 → 0.10.20

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 (922) hide show
  1. package/README.md +56 -1
  2. package/dist/agent/action-approval.d.ts +12 -2
  3. package/dist/agent/action-approval.d.ts.map +1 -1
  4. package/dist/agent/action-approval.js +19 -32
  5. package/dist/agent/action-approval.js.map +1 -1
  6. package/dist/agent/agent.d.ts +1 -0
  7. package/dist/agent/agent.d.ts.map +1 -1
  8. package/dist/agent/agent.js +26 -0
  9. package/dist/agent/agent.js.map +1 -1
  10. package/dist/agent/compaction.d.ts +2 -0
  11. package/dist/agent/compaction.d.ts.map +1 -1
  12. package/dist/agent/compaction.js +4 -2
  13. package/dist/agent/compaction.js.map +1 -1
  14. package/dist/agent/index.d.ts +1 -1
  15. package/dist/agent/index.d.ts.map +1 -1
  16. package/dist/agent/index.js +1 -1
  17. package/dist/agent/index.js.map +1 -1
  18. package/dist/agent/modes.d.ts +56 -4
  19. package/dist/agent/modes.d.ts.map +1 -1
  20. package/dist/agent/modes.js +163 -2
  21. package/dist/agent/modes.js.map +1 -1
  22. package/dist/agent/prompt-recovery.d.ts.map +1 -1
  23. package/dist/agent/prompt-recovery.js +1 -3
  24. package/dist/agent/prompt-recovery.js.map +1 -1
  25. package/dist/agent/providers/anthropic.d.ts.map +1 -1
  26. package/dist/agent/providers/anthropic.js +9 -1
  27. package/dist/agent/providers/anthropic.js.map +1 -1
  28. package/dist/agent/providers/codex-app-server.d.ts +12 -0
  29. package/dist/agent/providers/codex-app-server.d.ts.map +1 -0
  30. package/dist/agent/providers/codex-app-server.js +788 -0
  31. package/dist/agent/providers/codex-app-server.js.map +1 -0
  32. package/dist/agent/providers/google-gemini-cli.js +14 -3
  33. package/dist/agent/providers/google.js +22 -3
  34. package/dist/agent/providers/scripted.d.ts +11 -0
  35. package/dist/agent/providers/scripted.d.ts.map +1 -0
  36. package/dist/agent/providers/scripted.js +399 -0
  37. package/dist/agent/providers/scripted.js.map +1 -0
  38. package/dist/agent/providers/vertex.js +14 -3
  39. package/dist/agent/scenario-source.d.ts +19 -0
  40. package/dist/agent/scenario-source.d.ts.map +1 -0
  41. package/dist/agent/scenario-source.js +112 -0
  42. package/dist/agent/scenario-source.js.map +1 -0
  43. package/dist/agent/subagent-specs.d.ts +1 -1
  44. package/dist/agent/subagent-specs.js +1 -1
  45. package/dist/agent/subagent-specs.js.map +1 -1
  46. package/dist/agent/swarm/executor.d.ts +25 -0
  47. package/dist/agent/swarm/executor.d.ts.map +1 -1
  48. package/dist/agent/swarm/executor.js +795 -20
  49. package/dist/agent/swarm/executor.js.map +1 -1
  50. package/dist/agent/swarm/runtime-events.d.ts +11 -0
  51. package/dist/agent/swarm/runtime-events.d.ts.map +1 -0
  52. package/dist/agent/swarm/runtime-events.js +26 -0
  53. package/dist/agent/swarm/runtime-events.js.map +1 -0
  54. package/dist/agent/swarm/types.d.ts +78 -0
  55. package/dist/agent/swarm/types.d.ts.map +1 -1
  56. package/dist/agent/swarm/types.js.map +1 -1
  57. package/dist/agent/tracing.d.ts +1 -1
  58. package/dist/agent/tracing.d.ts.map +1 -1
  59. package/dist/agent/tracing.js +17 -9
  60. package/dist/agent/tracing.js.map +1 -1
  61. package/dist/agent/transport/create-provider-stream.d.ts.map +1 -1
  62. package/dist/agent/transport/create-provider-stream.js +14 -0
  63. package/dist/agent/transport/create-provider-stream.js.map +1 -1
  64. package/dist/agent/transport/stable-stringify.d.ts +2 -0
  65. package/dist/agent/transport/stable-stringify.d.ts.map +1 -0
  66. package/dist/agent/transport/stable-stringify.js +14 -0
  67. package/dist/agent/transport/stable-stringify.js.map +1 -0
  68. package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -1
  69. package/dist/agent/transport/tool-execution-bridge.js +2 -15
  70. package/dist/agent/transport/tool-execution-bridge.js.map +1 -1
  71. package/dist/agent/transport/tool-safety-pipeline.d.ts +5 -1
  72. package/dist/agent/transport/tool-safety-pipeline.d.ts.map +1 -1
  73. package/dist/agent/transport/tool-safety-pipeline.js +184 -36
  74. package/dist/agent/transport/tool-safety-pipeline.js.map +1 -1
  75. package/dist/agent/transport.d.ts +8 -0
  76. package/dist/agent/transport.d.ts.map +1 -1
  77. package/dist/agent/transport.js +1613 -68
  78. package/dist/agent/transport.js.map +1 -1
  79. package/dist/agent/types.d.ts +170 -2
  80. package/dist/agent/types.d.ts.map +1 -1
  81. package/dist/agent/types.js.map +1 -1
  82. package/dist/api/enterprise-routes.d.ts.map +1 -1
  83. package/dist/api/enterprise-routes.js +34 -3
  84. package/dist/api/enterprise-routes.js.map +1 -1
  85. package/dist/app-server/in-process-client.d.ts +32 -0
  86. package/dist/app-server/in-process-client.d.ts.map +1 -0
  87. package/dist/app-server/in-process-client.js +73 -0
  88. package/dist/app-server/in-process-client.js.map +1 -0
  89. package/dist/app-server/session-api.d.ts +36 -0
  90. package/dist/app-server/session-api.d.ts.map +1 -0
  91. package/dist/app-server/session-api.js +713 -0
  92. package/dist/app-server/session-api.js.map +1 -0
  93. package/dist/approvals/platform-action-approval.d.ts +3 -1
  94. package/dist/approvals/platform-action-approval.d.ts.map +1 -1
  95. package/dist/approvals/platform-action-approval.js +16 -9
  96. package/dist/approvals/platform-action-approval.js.map +1 -1
  97. package/dist/approvals/service-client.d.ts.map +1 -1
  98. package/dist/approvals/service-client.js +7 -7
  99. package/dist/approvals/service-client.js.map +1 -1
  100. package/dist/audit/logger.d.ts +4 -4
  101. package/dist/bootstrap/agent-creation-setup.d.ts +4 -0
  102. package/dist/bootstrap/agent-creation-setup.d.ts.map +1 -1
  103. package/dist/bootstrap/agent-creation-setup.js +3 -1
  104. package/dist/bootstrap/agent-creation-setup.js.map +1 -1
  105. package/dist/bootstrap/auth-setup.js +1 -1
  106. package/dist/bootstrap/auth-setup.js.map +1 -1
  107. package/dist/bootstrap/event-subscriptions-setup.d.ts +6 -0
  108. package/dist/bootstrap/event-subscriptions-setup.d.ts.map +1 -1
  109. package/dist/bootstrap/event-subscriptions-setup.js +26 -2
  110. package/dist/bootstrap/event-subscriptions-setup.js.map +1 -1
  111. package/dist/bootstrap/model-resolution-setup.d.ts.map +1 -1
  112. package/dist/bootstrap/model-resolution-setup.js +4 -1
  113. package/dist/bootstrap/model-resolution-setup.js.map +1 -1
  114. package/dist/bootstrap/tools-setup.d.ts +2 -1
  115. package/dist/bootstrap/tools-setup.d.ts.map +1 -1
  116. package/dist/bootstrap/tools-setup.js +5 -1
  117. package/dist/bootstrap/tools-setup.js.map +1 -1
  118. package/dist/cli/args.d.ts +9 -1
  119. package/dist/cli/args.d.ts.map +1 -1
  120. package/dist/cli/args.js +130 -5
  121. package/dist/cli/args.js.map +1 -1
  122. package/dist/cli/commands/a2a.d.ts +9 -0
  123. package/dist/cli/commands/a2a.d.ts.map +1 -0
  124. package/dist/cli/commands/a2a.js +1714 -0
  125. package/dist/cli/commands/a2a.js.map +1 -0
  126. package/dist/cli/commands/agents.d.ts +16 -2
  127. package/dist/cli/commands/agents.d.ts.map +1 -1
  128. package/dist/cli/commands/agents.js +223 -35
  129. package/dist/cli/commands/agents.js.map +1 -1
  130. package/dist/cli/commands/codex.d.ts +1 -1
  131. package/dist/cli/commands/codex.d.ts.map +1 -1
  132. package/dist/cli/commands/codex.js +145 -39
  133. package/dist/cli/commands/codex.js.map +1 -1
  134. package/dist/cli/commands/context.d.ts +10 -0
  135. package/dist/cli/commands/context.d.ts.map +1 -0
  136. package/dist/cli/commands/context.js +176 -0
  137. package/dist/cli/commands/context.js.map +1 -0
  138. package/dist/cli/commands/hosted-runner.d.ts +1 -0
  139. package/dist/cli/commands/hosted-runner.d.ts.map +1 -1
  140. package/dist/cli/commands/hosted-runner.js +9 -1
  141. package/dist/cli/commands/hosted-runner.js.map +1 -1
  142. package/dist/cli/commands/modes.d.ts +8 -0
  143. package/dist/cli/commands/modes.d.ts.map +1 -0
  144. package/dist/cli/commands/modes.js +151 -0
  145. package/dist/cli/commands/modes.js.map +1 -0
  146. package/dist/cli/commands/operating-plane.d.ts +14 -0
  147. package/dist/cli/commands/operating-plane.d.ts.map +1 -0
  148. package/dist/cli/commands/operating-plane.js +160 -0
  149. package/dist/cli/commands/operating-plane.js.map +1 -0
  150. package/dist/cli/commands/run.d.ts +87 -0
  151. package/dist/cli/commands/run.d.ts.map +1 -0
  152. package/dist/cli/commands/run.js +356 -0
  153. package/dist/cli/commands/run.js.map +1 -0
  154. package/dist/cli/commands/scenario.d.ts +7 -0
  155. package/dist/cli/commands/scenario.d.ts.map +1 -0
  156. package/dist/cli/commands/scenario.js +195 -0
  157. package/dist/cli/commands/scenario.js.map +1 -0
  158. package/dist/cli/commands/skill.d.ts +7 -0
  159. package/dist/cli/commands/skill.d.ts.map +1 -0
  160. package/dist/cli/commands/skill.js +286 -0
  161. package/dist/cli/commands/skill.js.map +1 -0
  162. package/dist/cli/headless-protocol.d.ts +55 -1
  163. package/dist/cli/headless-protocol.d.ts.map +1 -1
  164. package/dist/cli/headless-protocol.js +446 -7
  165. package/dist/cli/headless-protocol.js.map +1 -1
  166. package/dist/cli/headless-runtime-selection.d.ts +38 -0
  167. package/dist/cli/headless-runtime-selection.d.ts.map +1 -0
  168. package/dist/cli/headless-runtime-selection.js +48 -0
  169. package/dist/cli/headless-runtime-selection.js.map +1 -0
  170. package/dist/cli/headless.d.ts +5 -1
  171. package/dist/cli/headless.d.ts.map +1 -1
  172. package/dist/cli/headless.js +11 -1
  173. package/dist/cli/headless.js.map +1 -1
  174. package/dist/cli/help.d.ts +3 -1
  175. package/dist/cli/help.d.ts.map +1 -1
  176. package/dist/cli/help.js +135 -30
  177. package/dist/cli/help.js.map +1 -1
  178. package/dist/cli/system-prompt.d.ts +22 -4
  179. package/dist/cli/system-prompt.d.ts.map +1 -1
  180. package/dist/cli/system-prompt.js +224 -127
  181. package/dist/cli/system-prompt.js.map +1 -1
  182. package/dist/cli-tui/commands/a2a-handlers.d.ts +7 -0
  183. package/dist/cli-tui/commands/a2a-handlers.d.ts.map +1 -0
  184. package/dist/cli-tui/commands/a2a-handlers.js +160 -0
  185. package/dist/cli-tui/commands/a2a-handlers.js.map +1 -0
  186. package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -1
  187. package/dist/cli-tui/commands/command-catalog.js +15 -0
  188. package/dist/cli-tui/commands/command-catalog.js.map +1 -1
  189. package/dist/cli-tui/commands/command-registry-adapter.js +10 -1
  190. package/dist/cli-tui/commands/command-registry-adapter.js.map +1 -1
  191. package/dist/cli-tui/commands/handlers/mode-handler.d.ts.map +1 -1
  192. package/dist/cli-tui/commands/handlers/mode-handler.js +22 -10
  193. package/dist/cli-tui/commands/handlers/mode-handler.js.map +1 -1
  194. package/dist/cli-tui/commands/mcp-handlers.d.ts.map +1 -1
  195. package/dist/cli-tui/commands/mcp-handlers.js +6 -5
  196. package/dist/cli-tui/commands/mcp-handlers.js.map +1 -1
  197. package/dist/cli-tui/commands/types.d.ts +1 -0
  198. package/dist/cli-tui/commands/types.d.ts.map +1 -1
  199. package/dist/cli-tui/commands/types.js.map +1 -1
  200. package/dist/cli-tui/commands/utility-handlers.d.ts +4 -0
  201. package/dist/cli-tui/commands/utility-handlers.d.ts.map +1 -1
  202. package/dist/cli-tui/commands/utility-handlers.js +45 -6
  203. package/dist/cli-tui/commands/utility-handlers.js.map +1 -1
  204. package/dist/cli-tui/run/run-shell-command.d.ts.map +1 -1
  205. package/dist/cli-tui/run/run-shell-command.js +14 -5
  206. package/dist/cli-tui/run/run-shell-command.js.map +1 -1
  207. package/dist/cli-tui/run/streaming-shell-command.d.ts.map +1 -1
  208. package/dist/cli-tui/run/streaming-shell-command.js +14 -5
  209. package/dist/cli-tui/run/streaming-shell-command.js.map +1 -1
  210. package/dist/cli-tui/selectors/model-selector.d.ts +1 -0
  211. package/dist/cli-tui/selectors/model-selector.d.ts.map +1 -1
  212. package/dist/cli-tui/selectors/model-selector.js +6 -2
  213. package/dist/cli-tui/selectors/model-selector.js.map +1 -1
  214. package/dist/cli-tui/tui-renderer/command-registry-options.d.ts.map +1 -1
  215. package/dist/cli-tui/tui-renderer/command-registry-options.js +5 -0
  216. package/dist/cli-tui/tui-renderer/command-registry-options.js.map +1 -1
  217. package/dist/cli-tui/utils/commands/review-prompt.d.ts +1 -1
  218. package/dist/cli-tui/utils/commands/review-prompt.d.ts.map +1 -1
  219. package/dist/cli-tui/utils/commands/review-prompt.js +8 -3
  220. package/dist/cli-tui/utils/commands/review-prompt.js.map +1 -1
  221. package/dist/cli-tui/utils/runtime-badges.d.ts +1 -0
  222. package/dist/cli-tui/utils/runtime-badges.d.ts.map +1 -1
  223. package/dist/cli-tui/utils/runtime-badges.js +7 -0
  224. package/dist/cli-tui/utils/runtime-badges.js.map +1 -1
  225. package/dist/cli-tui/utils/text-formatting.d.ts +1 -0
  226. package/dist/cli-tui/utils/text-formatting.d.ts.map +1 -1
  227. package/dist/cli-tui/utils/text-formatting.js +5 -0
  228. package/dist/cli-tui/utils/text-formatting.js.map +1 -1
  229. package/dist/cli.js +49158 -26161
  230. package/dist/cli.js.map +1 -1
  231. package/dist/codex/app-server-client.d.ts +139 -0
  232. package/dist/codex/app-server-client.d.ts.map +1 -0
  233. package/dist/codex/app-server-client.js +352 -0
  234. package/dist/codex/app-server-client.js.map +1 -0
  235. package/dist/codex/compatibility.d.ts +48 -0
  236. package/dist/codex/compatibility.d.ts.map +1 -0
  237. package/dist/codex/compatibility.js +344 -0
  238. package/dist/codex/compatibility.js.map +1 -0
  239. package/dist/codex/subagent-dispatch-table.d.ts +66 -0
  240. package/dist/codex/subagent-dispatch-table.d.ts.map +1 -0
  241. package/dist/codex/subagent-dispatch-table.js +127 -0
  242. package/dist/codex/subagent-dispatch-table.js.map +1 -0
  243. package/dist/codex/subagent-workgraph.d.ts +56 -0
  244. package/dist/codex/subagent-workgraph.d.ts.map +1 -0
  245. package/dist/codex/subagent-workgraph.js +89 -0
  246. package/dist/codex/subagent-workgraph.js.map +1 -0
  247. package/dist/config/constants.d.ts +3 -1
  248. package/dist/config/constants.d.ts.map +1 -1
  249. package/dist/config/constants.js +9 -0
  250. package/dist/config/constants.js.map +1 -1
  251. package/dist/config/feature-flags.d.ts +10 -1
  252. package/dist/config/feature-flags.d.ts.map +1 -1
  253. package/dist/config/feature-flags.js +17 -6
  254. package/dist/config/feature-flags.js.map +1 -1
  255. package/dist/config/index.d.ts +1 -1
  256. package/dist/config/index.d.ts.map +1 -1
  257. package/dist/config/index.js +1 -1
  258. package/dist/config/index.js.map +1 -1
  259. package/dist/config/toml-config.d.ts +32 -0
  260. package/dist/config/toml-config.d.ts.map +1 -1
  261. package/dist/config/toml-config.js +152 -43
  262. package/dist/config/toml-config.js.map +1 -1
  263. package/dist/connectors/service-client.d.ts.map +1 -1
  264. package/dist/connectors/service-client.js +4 -7
  265. package/dist/connectors/service-client.js.map +1 -1
  266. package/dist/context/manifest-types.d.ts +59 -0
  267. package/dist/context/manifest-types.d.ts.map +1 -0
  268. package/dist/context/manifest-types.js +2 -0
  269. package/dist/context/manifest-types.js.map +1 -0
  270. package/dist/context/manifest.d.ts +16 -0
  271. package/dist/context/manifest.d.ts.map +1 -0
  272. package/dist/context/manifest.js +503 -0
  273. package/dist/context/manifest.js.map +1 -0
  274. package/dist/db/schema.d.ts +10 -1
  275. package/dist/db/schema.d.ts.map +1 -1
  276. package/dist/db/schema.js.map +1 -1
  277. package/dist/evalops/env-aliases.d.ts +13 -0
  278. package/dist/evalops/env-aliases.d.ts.map +1 -0
  279. package/dist/evalops/env-aliases.js +60 -0
  280. package/dist/evalops/env-aliases.js.map +1 -0
  281. package/dist/evalops/managed-context.d.ts.map +1 -1
  282. package/dist/evalops/managed-context.js +28 -62
  283. package/dist/evalops/managed-context.js.map +1 -1
  284. package/dist/guardian/config.d.ts.map +1 -1
  285. package/dist/guardian/config.js +1 -0
  286. package/dist/guardian/config.js.map +1 -1
  287. package/dist/guardian/runner.d.ts +2 -0
  288. package/dist/guardian/runner.d.ts.map +1 -1
  289. package/dist/guardian/runner.js +105 -2
  290. package/dist/guardian/runner.js.map +1 -1
  291. package/dist/guardian/types.d.ts +1 -0
  292. package/dist/guardian/types.d.ts.map +1 -1
  293. package/dist/guardian/types.js.map +1 -1
  294. package/dist/index.d.ts +5 -1
  295. package/dist/index.d.ts.map +1 -1
  296. package/dist/index.js +5 -1
  297. package/dist/index.js.map +1 -1
  298. package/dist/main.d.ts.map +1 -1
  299. package/dist/main.js +267 -55
  300. package/dist/main.js.map +1 -1
  301. package/dist/mcp/config.d.ts.map +1 -1
  302. package/dist/mcp/config.js +89 -7
  303. package/dist/mcp/config.js.map +1 -1
  304. package/dist/mcp/manager.d.ts +5 -1
  305. package/dist/mcp/manager.d.ts.map +1 -1
  306. package/dist/mcp/manager.js +159 -4
  307. package/dist/mcp/manager.js.map +1 -1
  308. package/dist/mcp/platform-plugin.d.ts.map +1 -1
  309. package/dist/mcp/platform-plugin.js +9 -26
  310. package/dist/mcp/platform-plugin.js.map +1 -1
  311. package/dist/mcp/schema.d.ts +15 -0
  312. package/dist/mcp/schema.d.ts.map +1 -1
  313. package/dist/mcp/schema.js +24 -0
  314. package/dist/mcp/schema.js.map +1 -1
  315. package/dist/mcp/tool-bridge.d.ts +39 -10
  316. package/dist/mcp/tool-bridge.d.ts.map +1 -1
  317. package/dist/mcp/tool-bridge.js +101 -24
  318. package/dist/mcp/tool-bridge.js.map +1 -1
  319. package/dist/mcp/types.d.ts +27 -0
  320. package/dist/mcp/types.d.ts.map +1 -1
  321. package/dist/mcp/types.js.map +1 -1
  322. package/dist/mcp/workspace-trust.d.ts +10 -0
  323. package/dist/mcp/workspace-trust.d.ts.map +1 -0
  324. package/dist/mcp/workspace-trust.js +295 -0
  325. package/dist/mcp/workspace-trust.js.map +1 -0
  326. package/dist/memory/service-client.d.ts +1 -0
  327. package/dist/memory/service-client.d.ts.map +1 -1
  328. package/dist/memory/service-client.js +194 -9
  329. package/dist/memory/service-client.js.map +1 -1
  330. package/dist/models/builtin.d.ts.map +1 -1
  331. package/dist/models/builtin.js +66 -25
  332. package/dist/models/builtin.js.map +1 -1
  333. package/dist/models/config-loader.d.ts +10 -10
  334. package/dist/models/config-loader.d.ts.map +1 -1
  335. package/dist/models/config-loader.js +2 -0
  336. package/dist/models/config-loader.js.map +1 -1
  337. package/dist/models/registry.d.ts +1 -0
  338. package/dist/models/registry.d.ts.map +1 -1
  339. package/dist/models/registry.js +1 -0
  340. package/dist/models/registry.js.map +1 -1
  341. package/dist/oauth/device-identity.d.ts.map +1 -1
  342. package/dist/oauth/device-identity.js +1 -3
  343. package/dist/oauth/device-identity.js.map +1 -1
  344. package/dist/oauth/evalops.d.ts.map +1 -1
  345. package/dist/oauth/evalops.js +2 -5
  346. package/dist/oauth/evalops.js.map +1 -1
  347. package/dist/opentelemetry.d.ts.map +1 -1
  348. package/dist/opentelemetry.js +12 -12
  349. package/dist/opentelemetry.js.map +1 -1
  350. package/dist/package-version.d.ts +2 -0
  351. package/dist/package-version.d.ts.map +1 -0
  352. package/dist/package-version.js +11 -0
  353. package/dist/package-version.js.map +1 -0
  354. package/dist/packages/constants.d.ts +3 -0
  355. package/dist/packages/constants.d.ts.map +1 -0
  356. package/dist/packages/constants.js +3 -0
  357. package/dist/packages/constants.js.map +1 -0
  358. package/dist/packages/inspection.d.ts.map +1 -1
  359. package/dist/packages/inspection.js +2 -1
  360. package/dist/packages/inspection.js.map +1 -1
  361. package/dist/packages/search.d.ts.map +1 -1
  362. package/dist/packages/search.js +1 -1
  363. package/dist/packages/search.js.map +1 -1
  364. package/dist/platform/a2a-capability-market.d.ts +21 -0
  365. package/dist/platform/a2a-capability-market.d.ts.map +1 -0
  366. package/dist/platform/a2a-capability-market.js +176 -0
  367. package/dist/platform/a2a-capability-market.js.map +1 -0
  368. package/dist/platform/a2a-client.d.ts +119 -0
  369. package/dist/platform/a2a-client.d.ts.map +1 -1
  370. package/dist/platform/a2a-client.js +413 -24
  371. package/dist/platform/a2a-client.js.map +1 -1
  372. package/dist/platform/a2a-fleet.d.ts +41 -0
  373. package/dist/platform/a2a-fleet.d.ts.map +1 -0
  374. package/dist/platform/a2a-fleet.js +109 -0
  375. package/dist/platform/a2a-fleet.js.map +1 -0
  376. package/dist/platform/a2a-maestro-peer.d.ts +20 -0
  377. package/dist/platform/a2a-maestro-peer.d.ts.map +1 -0
  378. package/dist/platform/a2a-maestro-peer.js +176 -0
  379. package/dist/platform/a2a-maestro-peer.js.map +1 -0
  380. package/dist/platform/a2a-peer-pairing.d.ts +107 -0
  381. package/dist/platform/a2a-peer-pairing.d.ts.map +1 -0
  382. package/dist/platform/a2a-peer-pairing.js +489 -0
  383. package/dist/platform/a2a-peer-pairing.js.map +1 -0
  384. package/dist/platform/a2a-peer-registry.d.ts +68 -0
  385. package/dist/platform/a2a-peer-registry.d.ts.map +1 -0
  386. package/dist/platform/a2a-peer-registry.js +320 -0
  387. package/dist/platform/a2a-peer-registry.js.map +1 -0
  388. package/dist/platform/a2a-task-ledger.d.ts +86 -0
  389. package/dist/platform/a2a-task-ledger.d.ts.map +1 -0
  390. package/dist/platform/a2a-task-ledger.js +546 -0
  391. package/dist/platform/a2a-task-ledger.js.map +1 -0
  392. package/dist/platform/a2a-work-graph.d.ts +43 -0
  393. package/dist/platform/a2a-work-graph.d.ts.map +1 -0
  394. package/dist/platform/a2a-work-graph.js +267 -0
  395. package/dist/platform/a2a-work-graph.js.map +1 -0
  396. package/dist/platform/agent-registry-client.d.ts +327 -0
  397. package/dist/platform/agent-registry-client.d.ts.map +1 -0
  398. package/dist/platform/agent-registry-client.js +803 -0
  399. package/dist/platform/agent-registry-client.js.map +1 -0
  400. package/dist/platform/agent-runtime-client.d.ts +135 -1
  401. package/dist/platform/agent-runtime-client.d.ts.map +1 -1
  402. package/dist/platform/agent-runtime-client.js +467 -10
  403. package/dist/platform/agent-runtime-client.js.map +1 -1
  404. package/dist/platform/cerebro-facts-client.d.ts.map +1 -1
  405. package/dist/platform/cerebro-facts-client.js +4 -7
  406. package/dist/platform/cerebro-facts-client.js.map +1 -1
  407. package/dist/platform/client.d.ts.map +1 -1
  408. package/dist/platform/client.js +3 -12
  409. package/dist/platform/client.js.map +1 -1
  410. package/dist/platform/core-services.d.ts +68 -0
  411. package/dist/platform/core-services.d.ts.map +1 -1
  412. package/dist/platform/core-services.js +68 -0
  413. package/dist/platform/core-services.js.map +1 -1
  414. package/dist/platform/fermata-eval-client.d.ts +195 -0
  415. package/dist/platform/fermata-eval-client.d.ts.map +1 -0
  416. package/dist/platform/fermata-eval-client.js +146 -0
  417. package/dist/platform/fermata-eval-client.js.map +1 -0
  418. package/dist/platform/fermata-scenario-suite.d.ts +99 -0
  419. package/dist/platform/fermata-scenario-suite.d.ts.map +1 -0
  420. package/dist/platform/fermata-scenario-suite.js +459 -0
  421. package/dist/platform/fermata-scenario-suite.js.map +1 -0
  422. package/dist/platform/maestro-timeline-client.d.ts.map +1 -1
  423. package/dist/platform/maestro-timeline-client.js +5 -11
  424. package/dist/platform/maestro-timeline-client.js.map +1 -1
  425. package/dist/platform/operating-plane-client.d.ts +156 -0
  426. package/dist/platform/operating-plane-client.d.ts.map +1 -0
  427. package/dist/platform/operating-plane-client.js +131 -0
  428. package/dist/platform/operating-plane-client.js.map +1 -0
  429. package/dist/platform/operating-plane-summary.d.ts +47 -0
  430. package/dist/platform/operating-plane-summary.d.ts.map +1 -0
  431. package/dist/platform/operating-plane-summary.js +209 -0
  432. package/dist/platform/operating-plane-summary.js.map +1 -0
  433. package/dist/platform/tool-execution-client.d.ts.map +1 -1
  434. package/dist/platform/tool-execution-client.js +4 -11
  435. package/dist/platform/tool-execution-client.js.map +1 -1
  436. package/dist/prompts/service-client.d.ts.map +1 -1
  437. package/dist/prompts/service-client.js +3 -5
  438. package/dist/prompts/service-client.js.map +1 -1
  439. package/dist/prompts/system-prompt.d.ts +3 -0
  440. package/dist/prompts/system-prompt.d.ts.map +1 -1
  441. package/dist/prompts/system-prompt.js +13 -3
  442. package/dist/prompts/system-prompt.js.map +1 -1
  443. package/dist/prompts/types.d.ts +2 -0
  444. package/dist/prompts/types.d.ts.map +1 -1
  445. package/dist/prompts/types.js.map +1 -1
  446. package/dist/providers/api-keys.d.ts +1 -1
  447. package/dist/providers/api-keys.d.ts.map +1 -1
  448. package/dist/providers/api-keys.js +2 -1
  449. package/dist/providers/api-keys.js.map +1 -1
  450. package/dist/providers/auth.d.ts.map +1 -1
  451. package/dist/providers/auth.js +48 -25
  452. package/dist/providers/auth.js.map +1 -1
  453. package/dist/remote-runner/attach-client.d.ts.map +1 -1
  454. package/dist/remote-runner/attach-client.js +1 -0
  455. package/dist/remote-runner/attach-client.js.map +1 -1
  456. package/dist/remote-runner/client.d.ts.map +1 -1
  457. package/dist/remote-runner/client.js +4 -7
  458. package/dist/remote-runner/client.js.map +1 -1
  459. package/dist/rpc/rpc-types.d.ts.map +1 -1
  460. package/dist/rpc/rpc-types.js +1 -0
  461. package/dist/rpc/rpc-types.js.map +1 -1
  462. package/dist/safety/action-firewall.d.ts.map +1 -1
  463. package/dist/safety/action-firewall.js +69 -6
  464. package/dist/safety/action-firewall.js.map +1 -1
  465. package/dist/safety/attack-patterns.d.ts.map +1 -1
  466. package/dist/safety/attack-patterns.js +31 -14
  467. package/dist/safety/attack-patterns.js.map +1 -1
  468. package/dist/safety/bash-parser.d.ts.map +1 -1
  469. package/dist/safety/bash-parser.js +4 -3
  470. package/dist/safety/bash-parser.js.map +1 -1
  471. package/dist/safety/execpolicy.d.ts +15 -3
  472. package/dist/safety/execpolicy.d.ts.map +1 -1
  473. package/dist/safety/execpolicy.js +248 -37
  474. package/dist/safety/execpolicy.js.map +1 -1
  475. package/dist/safety/governance-service-client.d.ts.map +1 -1
  476. package/dist/safety/governance-service-client.js +4 -7
  477. package/dist/safety/governance-service-client.js.map +1 -1
  478. package/dist/safety/guarded-files.d.ts +34 -0
  479. package/dist/safety/guarded-files.d.ts.map +1 -0
  480. package/dist/safety/guarded-files.js +372 -0
  481. package/dist/safety/guarded-files.js.map +1 -0
  482. package/dist/safety/loop-detector.d.ts.map +1 -1
  483. package/dist/safety/loop-detector.js +6 -1
  484. package/dist/safety/loop-detector.js.map +1 -1
  485. package/dist/safety/permission-profile.d.ts +47 -0
  486. package/dist/safety/permission-profile.d.ts.map +1 -0
  487. package/dist/safety/permission-profile.js +349 -0
  488. package/dist/safety/permission-profile.js.map +1 -0
  489. package/dist/safety/safety-middleware.d.ts +5 -1
  490. package/dist/safety/safety-middleware.d.ts.map +1 -1
  491. package/dist/safety/safety-middleware.js +3 -2
  492. package/dist/safety/safety-middleware.js.map +1 -1
  493. package/dist/safety/suspicious-patterns.d.ts.map +1 -1
  494. package/dist/safety/suspicious-patterns.js +12 -7
  495. package/dist/safety/suspicious-patterns.js.map +1 -1
  496. package/dist/safety/tool-categorization.js +1 -1
  497. package/dist/safety/tool-categorization.js.map +1 -1
  498. package/dist/safety/validators/path-policy-validator.d.ts.map +1 -1
  499. package/dist/safety/validators/path-policy-validator.js +7 -0
  500. package/dist/safety/validators/path-policy-validator.js.map +1 -1
  501. package/dist/sandbox/index.d.ts +6 -1
  502. package/dist/sandbox/index.d.ts.map +1 -1
  503. package/dist/sandbox/index.js +30 -4
  504. package/dist/sandbox/index.js.map +1 -1
  505. package/dist/sandbox/native-sandbox.d.ts +3 -0
  506. package/dist/sandbox/native-sandbox.d.ts.map +1 -1
  507. package/dist/sandbox/native-sandbox.js +139 -18
  508. package/dist/sandbox/native-sandbox.js.map +1 -1
  509. package/dist/sentry.d.ts +17 -0
  510. package/dist/sentry.d.ts.map +1 -0
  511. package/dist/sentry.js +91 -0
  512. package/dist/sentry.js.map +1 -0
  513. package/dist/server/agent-runtime-ledger.d.ts +141 -0
  514. package/dist/server/agent-runtime-ledger.d.ts.map +1 -0
  515. package/dist/server/agent-runtime-ledger.js +334 -0
  516. package/dist/server/agent-runtime-ledger.js.map +1 -0
  517. package/dist/server/agent-trajectory-inspection.d.ts +104 -0
  518. package/dist/server/agent-trajectory-inspection.d.ts.map +1 -0
  519. package/dist/server/agent-trajectory-inspection.js +168 -0
  520. package/dist/server/agent-trajectory-inspection.js.map +1 -0
  521. package/dist/server/agent-trajectory-replay.d.ts +56 -0
  522. package/dist/server/agent-trajectory-replay.d.ts.map +1 -0
  523. package/dist/server/agent-trajectory-replay.js +214 -0
  524. package/dist/server/agent-trajectory-replay.js.map +1 -0
  525. package/dist/server/agent-trajectory-scenarios.d.ts +109 -0
  526. package/dist/server/agent-trajectory-scenarios.d.ts.map +1 -0
  527. package/dist/server/agent-trajectory-scenarios.js +822 -0
  528. package/dist/server/agent-trajectory-scenarios.js.map +1 -0
  529. package/dist/server/agent-trajectory-scorers.d.ts +61 -0
  530. package/dist/server/agent-trajectory-scorers.d.ts.map +1 -0
  531. package/dist/server/agent-trajectory-scorers.js +162 -0
  532. package/dist/server/agent-trajectory-scorers.js.map +1 -0
  533. package/dist/server/agent-trajectory-validation.d.ts +7 -0
  534. package/dist/server/agent-trajectory-validation.d.ts.map +1 -0
  535. package/dist/server/agent-trajectory-validation.js +101 -0
  536. package/dist/server/agent-trajectory-validation.js.map +1 -0
  537. package/dist/server/agent-trajectory.d.ts +50 -0
  538. package/dist/server/agent-trajectory.d.ts.map +1 -0
  539. package/dist/server/agent-trajectory.js +159 -0
  540. package/dist/server/agent-trajectory.js.map +1 -0
  541. package/dist/server/app-context.d.ts +18 -0
  542. package/dist/server/app-context.d.ts.map +1 -1
  543. package/dist/server/app-context.js.map +1 -1
  544. package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
  545. package/dist/server/handlers/headless-sessions.js +64 -27
  546. package/dist/server/handlers/headless-sessions.js.map +1 -1
  547. package/dist/server/handlers/health.d.ts +6 -0
  548. package/dist/server/handlers/health.d.ts.map +1 -1
  549. package/dist/server/handlers/health.js +6 -0
  550. package/dist/server/handlers/health.js.map +1 -1
  551. package/dist/server/handlers/hosted-runner-drain.d.ts +69 -1
  552. package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -1
  553. package/dist/server/handlers/hosted-runner-drain.js +309 -18
  554. package/dist/server/handlers/hosted-runner-drain.js.map +1 -1
  555. package/dist/server/handlers/hosted-runner-identity.d.ts +16 -0
  556. package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -1
  557. package/dist/server/handlers/hosted-runner-identity.js +43 -0
  558. package/dist/server/handlers/hosted-runner-identity.js.map +1 -1
  559. package/dist/server/handlers/mode.d.ts.map +1 -1
  560. package/dist/server/handlers/mode.js +3 -1
  561. package/dist/server/handlers/mode.js.map +1 -1
  562. package/dist/server/handlers/pending-requests.d.ts.map +1 -1
  563. package/dist/server/handlers/pending-requests.js +336 -51
  564. package/dist/server/handlers/pending-requests.js.map +1 -1
  565. package/dist/server/handlers/platform-a2a-push.d.ts +6 -0
  566. package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -0
  567. package/dist/server/handlers/platform-a2a-push.js +136 -0
  568. package/dist/server/handlers/platform-a2a-push.js.map +1 -0
  569. package/dist/server/handlers/sessions.d.ts.map +1 -1
  570. package/dist/server/handlers/sessions.js +21 -1
  571. package/dist/server/handlers/sessions.js.map +1 -1
  572. package/dist/server/headless-runtime-service.d.ts +9 -2
  573. package/dist/server/headless-runtime-service.d.ts.map +1 -1
  574. package/dist/server/headless-runtime-service.js +39 -0
  575. package/dist/server/headless-runtime-service.js.map +1 -1
  576. package/dist/server/hosted-agent-runtime-progress.d.ts +144 -0
  577. package/dist/server/hosted-agent-runtime-progress.d.ts.map +1 -0
  578. package/dist/server/hosted-agent-runtime-progress.js +1650 -0
  579. package/dist/server/hosted-agent-runtime-progress.js.map +1 -0
  580. package/dist/server/hosted-runner-lease.d.ts +41 -0
  581. package/dist/server/hosted-runner-lease.d.ts.map +1 -0
  582. package/dist/server/hosted-runner-lease.js +140 -0
  583. package/dist/server/hosted-runner-lease.js.map +1 -0
  584. package/dist/server/hosted-session-manager.d.ts +16 -8
  585. package/dist/server/hosted-session-manager.d.ts.map +1 -1
  586. package/dist/server/hosted-session-manager.js +98 -76
  587. package/dist/server/hosted-session-manager.js.map +1 -1
  588. package/dist/server/junit-xml.d.ts +2 -0
  589. package/dist/server/junit-xml.d.ts.map +1 -0
  590. package/dist/server/junit-xml.js +9 -0
  591. package/dist/server/junit-xml.js.map +1 -0
  592. package/dist/server/routes.d.ts.map +1 -1
  593. package/dist/server/routes.js +6 -0
  594. package/dist/server/routes.js.map +1 -1
  595. package/dist/server/scenario-recorder.d.ts +56 -0
  596. package/dist/server/scenario-recorder.d.ts.map +1 -0
  597. package/dist/server/scenario-recorder.js +109 -0
  598. package/dist/server/scenario-recorder.js.map +1 -0
  599. package/dist/server/scripted-scenario-runner.d.ts +46 -0
  600. package/dist/server/scripted-scenario-runner.d.ts.map +1 -0
  601. package/dist/server/scripted-scenario-runner.js +190 -0
  602. package/dist/server/scripted-scenario-runner.js.map +1 -0
  603. package/dist/server/server-middlewares.d.ts +6 -2
  604. package/dist/server/server-middlewares.d.ts.map +1 -1
  605. package/dist/server/server-middlewares.js +8 -2
  606. package/dist/server/server-middlewares.js.map +1 -1
  607. package/dist/server/server-request-manager.d.ts +9 -1
  608. package/dist/server/server-request-manager.d.ts.map +1 -1
  609. package/dist/server/server-request-manager.js +49 -4
  610. package/dist/server/server-request-manager.js.map +1 -1
  611. package/dist/services/intelligent-router/service.d.ts +2 -0
  612. package/dist/services/intelligent-router/service.d.ts.map +1 -1
  613. package/dist/services/intelligent-router/service.js +4 -0
  614. package/dist/services/intelligent-router/service.js.map +1 -1
  615. package/dist/services/service-authority.d.ts +25 -0
  616. package/dist/services/service-authority.d.ts.map +1 -0
  617. package/dist/services/service-authority.js +143 -0
  618. package/dist/services/service-authority.js.map +1 -0
  619. package/dist/services/workspace-config/service.d.ts +2 -0
  620. package/dist/services/workspace-config/service.d.ts.map +1 -1
  621. package/dist/services/workspace-config/service.js +4 -0
  622. package/dist/services/workspace-config/service.js.map +1 -1
  623. package/dist/session/manager.d.ts +8 -2
  624. package/dist/session/manager.d.ts.map +1 -1
  625. package/dist/session/manager.js +19 -4
  626. package/dist/session/manager.js.map +1 -1
  627. package/dist/session/session-branch.d.ts.map +1 -1
  628. package/dist/session/session-branch.js +5 -1
  629. package/dist/session/session-branch.js.map +1 -1
  630. package/dist/session/session-catalog.d.ts +7 -2
  631. package/dist/session/session-catalog.d.ts.map +1 -1
  632. package/dist/session/session-catalog.js +13 -2
  633. package/dist/session/session-catalog.js.map +1 -1
  634. package/dist/session/session-context.d.ts +6 -2
  635. package/dist/session/session-context.d.ts.map +1 -1
  636. package/dist/session/session-context.js +44 -4
  637. package/dist/session/session-context.js.map +1 -1
  638. package/dist/session/session-graph-projection.d.ts +32 -0
  639. package/dist/session/session-graph-projection.d.ts.map +1 -0
  640. package/dist/session/session-graph-projection.js +133 -0
  641. package/dist/session/session-graph-projection.js.map +1 -0
  642. package/dist/session/types.d.ts +18 -0
  643. package/dist/session/types.d.ts.map +1 -1
  644. package/dist/session/types.js +8 -0
  645. package/dist/session/types.js.map +1 -1
  646. package/dist/session/wire-format.generated.d.ts +3 -0
  647. package/dist/session/wire-format.generated.d.ts.map +1 -1
  648. package/dist/session/wire-format.generated.js +20 -0
  649. package/dist/session/wire-format.generated.js.map +1 -1
  650. package/dist/skills/eval-harness.d.ts +38 -0
  651. package/dist/skills/eval-harness.d.ts.map +1 -0
  652. package/dist/skills/eval-harness.js +112 -0
  653. package/dist/skills/eval-harness.js.map +1 -0
  654. package/dist/skills/index.d.ts +5 -1
  655. package/dist/skills/index.d.ts.map +1 -1
  656. package/dist/skills/index.js +5 -1
  657. package/dist/skills/index.js.map +1 -1
  658. package/dist/skills/linter.d.ts +36 -0
  659. package/dist/skills/linter.d.ts.map +1 -0
  660. package/dist/skills/linter.js +398 -0
  661. package/dist/skills/linter.js.map +1 -0
  662. package/dist/skills/loader.d.ts +36 -6
  663. package/dist/skills/loader.d.ts.map +1 -1
  664. package/dist/skills/loader.js +169 -86
  665. package/dist/skills/loader.js.map +1 -1
  666. package/dist/skills/package-contract.d.ts +45 -0
  667. package/dist/skills/package-contract.d.ts.map +1 -0
  668. package/dist/skills/package-contract.js +153 -0
  669. package/dist/skills/package-contract.js.map +1 -0
  670. package/dist/skills/runtime-activation.d.ts +68 -0
  671. package/dist/skills/runtime-activation.d.ts.map +1 -0
  672. package/dist/skills/runtime-activation.js +228 -0
  673. package/dist/skills/runtime-activation.js.map +1 -0
  674. package/dist/skills/service-client.d.ts.map +1 -1
  675. package/dist/skills/service-client.js +3 -4
  676. package/dist/skills/service-client.js.map +1 -1
  677. package/dist/skills/tool.d.ts.map +1 -1
  678. package/dist/skills/tool.js +2 -0
  679. package/dist/skills/tool.js.map +1 -1
  680. package/dist/skills/types.d.ts +14 -0
  681. package/dist/skills/types.d.ts.map +1 -1
  682. package/dist/skills/types.js.map +1 -1
  683. package/dist/telemetry/agent-operating-plane-context.d.ts +24 -0
  684. package/dist/telemetry/agent-operating-plane-context.d.ts.map +1 -0
  685. package/dist/telemetry/agent-operating-plane-context.js +54 -0
  686. package/dist/telemetry/agent-operating-plane-context.js.map +1 -0
  687. package/dist/telemetry/beacon.d.ts +24 -0
  688. package/dist/telemetry/beacon.d.ts.map +1 -0
  689. package/dist/telemetry/beacon.js +115 -0
  690. package/dist/telemetry/beacon.js.map +1 -0
  691. package/dist/telemetry/cli-command-aggregator.d.ts +36 -0
  692. package/dist/telemetry/cli-command-aggregator.d.ts.map +1 -0
  693. package/dist/telemetry/cli-command-aggregator.js +251 -0
  694. package/dist/telemetry/cli-command-aggregator.js.map +1 -0
  695. package/dist/telemetry/cli-startup.d.ts +21 -0
  696. package/dist/telemetry/cli-startup.d.ts.map +1 -0
  697. package/dist/telemetry/cli-startup.js +83 -0
  698. package/dist/telemetry/cli-startup.js.map +1 -0
  699. package/dist/telemetry/disablement.d.ts +13 -0
  700. package/dist/telemetry/disablement.d.ts.map +1 -0
  701. package/dist/telemetry/disablement.js +19 -0
  702. package/dist/telemetry/disablement.js.map +1 -0
  703. package/dist/telemetry/index.d.ts +6 -2
  704. package/dist/telemetry/index.d.ts.map +1 -1
  705. package/dist/telemetry/index.js +6 -2
  706. package/dist/telemetry/index.js.map +1 -1
  707. package/dist/telemetry/maestro-event-bus.d.ts +52 -0
  708. package/dist/telemetry/maestro-event-bus.d.ts.map +1 -1
  709. package/dist/telemetry/maestro-event-bus.js +179 -3
  710. package/dist/telemetry/maestro-event-bus.js.map +1 -1
  711. package/dist/telemetry/maestro-event-catalog.d.ts +3 -1
  712. package/dist/telemetry/maestro-event-catalog.d.ts.map +1 -1
  713. package/dist/telemetry/maestro-event-catalog.js +2 -0
  714. package/dist/telemetry/maestro-event-catalog.js.map +1 -1
  715. package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -1
  716. package/dist/telemetry/maestro-platform-replay-fixture.js +74 -9
  717. package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -1
  718. package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts +1 -1
  719. package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts.map +1 -1
  720. package/dist/telemetry/maestro-publisher-conformance-fixture.js +46 -11
  721. package/dist/telemetry/maestro-publisher-conformance-fixture.js.map +1 -1
  722. package/dist/telemetry/mcp-beacon.d.ts +20 -0
  723. package/dist/telemetry/mcp-beacon.d.ts.map +1 -0
  724. package/dist/telemetry/mcp-beacon.js +54 -0
  725. package/dist/telemetry/mcp-beacon.js.map +1 -0
  726. package/dist/telemetry/metadata-normalization.d.ts +7 -0
  727. package/dist/telemetry/metadata-normalization.d.ts.map +1 -0
  728. package/dist/telemetry/metadata-normalization.js +189 -0
  729. package/dist/telemetry/metadata-normalization.js.map +1 -0
  730. package/dist/telemetry/meter-service-client.d.ts.map +1 -1
  731. package/dist/telemetry/meter-service-client.js +5 -10
  732. package/dist/telemetry/meter-service-client.js.map +1 -1
  733. package/dist/telemetry/metrics.d.ts +123 -0
  734. package/dist/telemetry/metrics.d.ts.map +1 -0
  735. package/dist/telemetry/metrics.js +184 -0
  736. package/dist/telemetry/metrics.js.map +1 -0
  737. package/dist/telemetry/turn-tracker.d.ts +1 -0
  738. package/dist/telemetry/turn-tracker.d.ts.map +1 -1
  739. package/dist/telemetry/turn-tracker.js +22 -1
  740. package/dist/telemetry/turn-tracker.js.map +1 -1
  741. package/dist/telemetry/wide-events.d.ts +31 -1
  742. package/dist/telemetry/wide-events.d.ts.map +1 -1
  743. package/dist/telemetry/wide-events.js +229 -1
  744. package/dist/telemetry/wide-events.js.map +1 -1
  745. package/dist/telemetry.d.ts +39 -3
  746. package/dist/telemetry.d.ts.map +1 -1
  747. package/dist/telemetry.js +160 -3
  748. package/dist/telemetry.js.map +1 -1
  749. package/dist/testing/test-verification-hook.d.ts.map +1 -1
  750. package/dist/testing/test-verification-hook.js +34 -21
  751. package/dist/testing/test-verification-hook.js.map +1 -1
  752. package/dist/tools/apply-patch-parser.d.ts +26 -0
  753. package/dist/tools/apply-patch-parser.d.ts.map +1 -0
  754. package/dist/tools/apply-patch-parser.js +146 -0
  755. package/dist/tools/apply-patch-parser.js.map +1 -0
  756. package/dist/tools/apply-patch.d.ts +42 -0
  757. package/dist/tools/apply-patch.d.ts.map +1 -0
  758. package/dist/tools/apply-patch.js +648 -0
  759. package/dist/tools/apply-patch.js.map +1 -0
  760. package/dist/tools/ask-user.d.ts +1 -0
  761. package/dist/tools/ask-user.d.ts.map +1 -1
  762. package/dist/tools/background/tool-handler.d.ts +1 -0
  763. package/dist/tools/background/tool-handler.d.ts.map +1 -1
  764. package/dist/tools/bash.d.ts +1 -0
  765. package/dist/tools/bash.d.ts.map +1 -1
  766. package/dist/tools/codesearch.d.ts +1 -0
  767. package/dist/tools/codesearch.d.ts.map +1 -1
  768. package/dist/tools/conductor-client.d.ts +1 -0
  769. package/dist/tools/conductor-client.d.ts.map +1 -1
  770. package/dist/tools/conductor-client.js +63 -0
  771. package/dist/tools/conductor-client.js.map +1 -1
  772. package/dist/tools/diff.d.ts +1 -0
  773. package/dist/tools/diff.d.ts.map +1 -1
  774. package/dist/tools/edit.d.ts +1 -0
  775. package/dist/tools/edit.d.ts.map +1 -1
  776. package/dist/tools/extract-document.d.ts +1 -0
  777. package/dist/tools/extract-document.d.ts.map +1 -1
  778. package/dist/tools/find.d.ts +10 -0
  779. package/dist/tools/find.d.ts.map +1 -1
  780. package/dist/tools/find.js +236 -27
  781. package/dist/tools/find.js.map +1 -1
  782. package/dist/tools/gh.d.ts +3 -0
  783. package/dist/tools/gh.d.ts.map +1 -1
  784. package/dist/tools/index.d.ts +50 -0
  785. package/dist/tools/index.d.ts.map +1 -1
  786. package/dist/tools/index.js +4 -0
  787. package/dist/tools/index.js.map +1 -1
  788. package/dist/tools/list.d.ts +1 -0
  789. package/dist/tools/list.d.ts.map +1 -1
  790. package/dist/tools/notebook.d.ts +1 -0
  791. package/dist/tools/notebook.d.ts.map +1 -1
  792. package/dist/tools/oracle.d.ts +1 -0
  793. package/dist/tools/oracle.d.ts.map +1 -1
  794. package/dist/tools/oracle.js +17 -32
  795. package/dist/tools/oracle.js.map +1 -1
  796. package/dist/tools/parallel-execution.d.ts +13 -2
  797. package/dist/tools/parallel-execution.d.ts.map +1 -1
  798. package/dist/tools/parallel-execution.js +178 -7
  799. package/dist/tools/parallel-execution.js.map +1 -1
  800. package/dist/tools/parallel-ripgrep.d.ts +1 -0
  801. package/dist/tools/parallel-ripgrep.d.ts.map +1 -1
  802. package/dist/tools/pipeline.d.ts +4 -0
  803. package/dist/tools/pipeline.d.ts.map +1 -1
  804. package/dist/tools/read.d.ts +1 -0
  805. package/dist/tools/read.d.ts.map +1 -1
  806. package/dist/tools/search.d.ts +1 -0
  807. package/dist/tools/search.d.ts.map +1 -1
  808. package/dist/tools/status.d.ts +1 -0
  809. package/dist/tools/status.d.ts.map +1 -1
  810. package/dist/tools/todo.d.ts +1 -0
  811. package/dist/tools/todo.d.ts.map +1 -1
  812. package/dist/tools/tool-dsl.d.ts +5 -1
  813. package/dist/tools/tool-dsl.d.ts.map +1 -1
  814. package/dist/tools/tool-dsl.js +1 -0
  815. package/dist/tools/tool-dsl.js.map +1 -1
  816. package/dist/tools/tool-result-cache.d.ts.map +1 -1
  817. package/dist/tools/tool-result-cache.js +1 -0
  818. package/dist/tools/tool-result-cache.js.map +1 -1
  819. package/dist/tools/typebox-tool.d.ts.map +1 -1
  820. package/dist/tools/typebox-tool.js +3 -0
  821. package/dist/tools/typebox-tool.js.map +1 -1
  822. package/dist/tools/webfetch.d.ts +1 -0
  823. package/dist/tools/webfetch.d.ts.map +1 -1
  824. package/dist/tools/websearch.d.ts +1 -0
  825. package/dist/tools/websearch.d.ts.map +1 -1
  826. package/dist/tools/write.d.ts +1 -0
  827. package/dist/tools/write.d.ts.map +1 -1
  828. package/dist/utils/abort-error.d.ts +2 -0
  829. package/dist/utils/abort-error.d.ts.map +1 -0
  830. package/dist/utils/abort-error.js +7 -0
  831. package/dist/utils/abort-error.js.map +1 -0
  832. package/dist/utils/downstream.d.ts.map +1 -1
  833. package/dist/utils/downstream.js +4 -0
  834. package/dist/utils/downstream.js.map +1 -1
  835. package/dist/utils/logger.d.ts +3 -0
  836. package/dist/utils/logger.d.ts.map +1 -1
  837. package/dist/utils/logger.js +14 -3
  838. package/dist/utils/logger.js.map +1 -1
  839. package/dist/utils/path-containment.d.ts +2 -0
  840. package/dist/utils/path-containment.d.ts.map +1 -0
  841. package/dist/utils/path-containment.js +14 -0
  842. package/dist/utils/path-containment.js.map +1 -0
  843. package/dist/utils/prompt-safe-text.d.ts +7 -0
  844. package/dist/utils/prompt-safe-text.d.ts.map +1 -0
  845. package/dist/utils/prompt-safe-text.js +44 -0
  846. package/dist/utils/prompt-safe-text.js.map +1 -0
  847. package/dist/version.json +2 -2
  848. package/dist/web-server.d.ts.map +1 -1
  849. package/dist/web-server.js +32 -7
  850. package/dist/web-server.js.map +1 -1
  851. package/dist/workspace/root-resolver.d.ts +4 -1
  852. package/dist/workspace/root-resolver.d.ts.map +1 -1
  853. package/dist/workspace/root-resolver.js +16 -6
  854. package/dist/workspace/root-resolver.js.map +1 -1
  855. package/node_modules/@evalops/contracts/dist/advisor-effort.d.ts +8 -0
  856. package/node_modules/@evalops/contracts/dist/advisor-effort.d.ts.map +1 -0
  857. package/node_modules/@evalops/contracts/dist/advisor-effort.js +35 -0
  858. package/node_modules/@evalops/contracts/dist/advisor-effort.js.map +1 -0
  859. package/node_modules/@evalops/contracts/dist/delegation-prompt.d.ts +10 -0
  860. package/node_modules/@evalops/contracts/dist/delegation-prompt.d.ts.map +1 -0
  861. package/node_modules/@evalops/contracts/dist/delegation-prompt.js +48 -0
  862. package/node_modules/@evalops/contracts/dist/delegation-prompt.js.map +1 -0
  863. package/node_modules/@evalops/contracts/dist/guarded-files-settings.d.ts +20 -0
  864. package/node_modules/@evalops/contracts/dist/guarded-files-settings.d.ts.map +1 -0
  865. package/node_modules/@evalops/contracts/dist/guarded-files-settings.js +147 -0
  866. package/node_modules/@evalops/contracts/dist/guarded-files-settings.js.map +1 -0
  867. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.d.ts +2 -0
  868. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.d.ts.map +1 -1
  869. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.js +1 -0
  870. package/node_modules/@evalops/contracts/dist/headless-protocol-generated.js.map +1 -1
  871. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts +280 -5
  872. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts.map +1 -1
  873. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js +36 -1
  874. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js.map +1 -1
  875. package/node_modules/@evalops/contracts/dist/index.d.ts +15 -1
  876. package/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
  877. package/node_modules/@evalops/contracts/dist/index.js +6 -0
  878. package/node_modules/@evalops/contracts/dist/index.js.map +1 -1
  879. package/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +593 -0
  880. package/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -0
  881. package/node_modules/@evalops/contracts/dist/maestro-app-server.js +218 -0
  882. package/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -0
  883. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts +91 -0
  884. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts.map +1 -1
  885. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js +92 -61
  886. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js.map +1 -1
  887. package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts +3 -0
  888. package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts.map +1 -1
  889. package/node_modules/@evalops/contracts/dist/runtime-constraints.d.ts +28 -0
  890. package/node_modules/@evalops/contracts/dist/runtime-constraints.d.ts.map +1 -0
  891. package/node_modules/@evalops/contracts/dist/runtime-constraints.js +71 -0
  892. package/node_modules/@evalops/contracts/dist/runtime-constraints.js.map +1 -0
  893. package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts +7 -0
  894. package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts.map +1 -1
  895. package/node_modules/@evalops/contracts/dist/runtime-server-request.js +2 -0
  896. package/node_modules/@evalops/contracts/dist/runtime-server-request.js.map +1 -1
  897. package/node_modules/@evalops/contracts/dist/scenario.d.ts +191 -0
  898. package/node_modules/@evalops/contracts/dist/scenario.d.ts.map +1 -0
  899. package/node_modules/@evalops/contracts/dist/scenario.js +4 -0
  900. package/node_modules/@evalops/contracts/dist/scenario.js.map +1 -0
  901. package/node_modules/@evalops/contracts/dist/schemas.d.ts +17 -3
  902. package/node_modules/@evalops/contracts/dist/schemas.d.ts.map +1 -1
  903. package/node_modules/@evalops/contracts/dist/schemas.js +16 -0
  904. package/node_modules/@evalops/contracts/dist/schemas.js.map +1 -1
  905. package/node_modules/@evalops/contracts/package.json +1 -1
  906. package/node_modules/@evalops/tui/package.json +1 -1
  907. package/package.json +41 -7
  908. package/skills/incident-triage/SKILL.md +40 -0
  909. package/skills/incident-triage/mcp.json +14 -0
  910. package/skills/incident-triage/reference/triage.md +20 -0
  911. package/skills/incident-triage/toolbox/incident-timeline +22 -0
  912. package/skills/incident-triage/toolbox/incident-timeline.cmd +16 -0
  913. package/skills/pr-review/SKILL.md +40 -0
  914. package/skills/pr-review/mcp.json +14 -0
  915. package/skills/pr-review/reference/rubric.md +20 -0
  916. package/skills/pr-review/toolbox/review-summary +20 -0
  917. package/skills/pr-review/toolbox/review-summary.cmd +14 -0
  918. package/skills/release-verification/SKILL.md +40 -0
  919. package/skills/release-verification/mcp.json +15 -0
  920. package/skills/release-verification/reference/checklist.md +21 -0
  921. package/skills/release-verification/toolbox/release-readiness +18 -0
  922. package/skills/release-verification/toolbox/release-readiness.cmd +12 -0
@@ -1 +1 @@
1
- {"version":3,"file":"tool-bridge.js","sourceRoot":"","sources":["../../src/mcp/tool-bridge.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Tool as McpTool } from \"@modelcontextprotocol/sdk/types.js\";\nimport { type TSchema, Type } from \"@sinclair/typebox\";\nimport type { AgentTool } from \"../agent/types.js\";\nimport {\n\ttrackToolApprovalRequired,\n\ttrackToolBlocked,\n} from \"../telemetry/security-events.js\";\nimport { createTool } from \"../tools/tool-dsl.js\";\nimport { mcpManager } from \"./manager.js\";\nimport type { McpToolCallResult } from \"./manager.js\";\nimport { buildMcpToolName } from \"./names.js\";\n\ninterface McpToolDetails {\n\tserver: string;\n\ttool: string;\n\tcontent: unknown[];\n\tstructuredContent?: unknown;\n\tisError?: boolean;\n\tgovernedOutcome?: McpGovernedOutcome;\n}\n\ninterface McpGovernedOutcome {\n\tclassification:\n\t\t| \"approval_required\"\n\t\t| \"approval_pending\"\n\t\t| \"authentication_required\"\n\t\t| \"denied\"\n\t\t| \"rate_limited\";\n\tdecision?: string;\n\triskLevel?: string;\n\treasons?: string[];\n\tapprovalRequestId?: string;\n\tmatchedRules?: string[];\n\tmessage?: string;\n\tcode?: string;\n\tstate?: string;\n\tretryAfterMs?: number;\n\tretryAfterSeconds?: number;\n}\n\nfunction normalizeObject(value: unknown): Record<string, unknown> | null {\n\treturn value && typeof value === \"object\" && !Array.isArray(value)\n\t\t? (value as Record<string, unknown>)\n\t\t: null;\n}\n\nfunction firstString(\n\tvalue: Record<string, unknown>,\n\t...keys: string[]\n): string | undefined {\n\tfor (const key of keys) {\n\t\tconst candidate = value[key];\n\t\tif (typeof candidate === \"string\" && candidate.trim().length > 0) {\n\t\t\treturn candidate.trim();\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction firstNumber(\n\tvalue: Record<string, unknown>,\n\t...keys: string[]\n): number | undefined {\n\tfor (const key of keys) {\n\t\tconst candidate = value[key];\n\t\tif (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n\t\t\treturn candidate;\n\t\t}\n\t\tif (typeof candidate === \"string\" && candidate.trim().length > 0) {\n\t\t\tconst parsed = Number(candidate);\n\t\t\tif (Number.isFinite(parsed)) {\n\t\t\t\treturn parsed;\n\t\t\t}\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction toStringArray(value: unknown): string[] | undefined {\n\tif (!Array.isArray(value)) {\n\t\treturn undefined;\n\t}\n\tconst entries = value\n\t\t.filter((item): item is string => typeof item === \"string\")\n\t\t.map((item) => item.trim())\n\t\t.filter(Boolean);\n\treturn entries.length > 0 ? entries : undefined;\n}\n\nfunction extractMcpTextContent(\n\tcontent: McpToolCallResult[\"content\"],\n): string | undefined {\n\tconst text = content\n\t\t.filter((item) => item.type === \"text\" && typeof item.text === \"string\")\n\t\t.map((item) => item.text as string)\n\t\t.join(\"\\n\")\n\t\t.trim();\n\treturn text.length > 0 ? text : undefined;\n}\n\nfunction parseJsonObjectFromText(\n\ttext: string | undefined,\n): Record<string, unknown> | null {\n\tif (!text) {\n\t\treturn null;\n\t}\n\tconst trimmed = text.trim();\n\tif (!(trimmed.startsWith(\"{\") && trimmed.endsWith(\"}\"))) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn normalizeObject(JSON.parse(trimmed));\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction resolveGovernedPayload(\n\tresult: McpToolCallResult,\n): Record<string, unknown> | null {\n\treturn (\n\t\tnormalizeObject(result.structuredContent) ??\n\t\tparseJsonObjectFromText(extractMcpTextContent(result.content))\n\t);\n}\n\nfunction classifyGovernedOutcome(\n\tpayload: Record<string, unknown> | null,\n): McpGovernedOutcome | undefined {\n\tif (!payload) {\n\t\treturn undefined;\n\t}\n\n\tconst decision = firstString(payload, \"decision\")?.toLowerCase();\n\tconst code = firstString(payload, \"code\", \"error_code\")?.toLowerCase();\n\tconst state = firstString(payload, \"state\")?.toLowerCase();\n\tconst status = firstNumber(payload, \"status\", \"status_code\");\n\tconst approvalRequestId = firstString(\n\t\tpayload,\n\t\t\"approval_id\",\n\t\t\"approvalId\",\n\t\t\"approval_request_id\",\n\t\t\"approvalRequestId\",\n\t);\n\tconst reasons = toStringArray(payload.reasons);\n\tconst matchedRules = toStringArray(\n\t\tpayload.matched_rules ?? payload.matchedRules,\n\t);\n\tconst outcome: Omit<McpGovernedOutcome, \"classification\"> = {\n\t\tdecision,\n\t\triskLevel: firstString(payload, \"risk_level\", \"riskLevel\"),\n\t\treasons,\n\t\tapprovalRequestId,\n\t\tmatchedRules,\n\t\tmessage: firstString(payload, \"message\", \"detail\", \"error\"),\n\t\tcode,\n\t\tstate,\n\t\tretryAfterMs: firstNumber(payload, \"retry_after_ms\", \"retryAfterMs\"),\n\t\tretryAfterSeconds: firstNumber(\n\t\t\tpayload,\n\t\t\t\"retry_after_seconds\",\n\t\t\t\"retryAfterSeconds\",\n\t\t),\n\t};\n\n\tif (decision === \"require_approval\" || code?.includes(\"approval_required\")) {\n\t\treturn { classification: \"approval_required\", ...outcome };\n\t}\n\tif (state === \"pending\" && approvalRequestId) {\n\t\treturn { classification: \"approval_pending\", ...outcome };\n\t}\n\tif (\n\t\tcode?.includes(\"rate_limit\") ||\n\t\tcode?.includes(\"too_many_requests\") ||\n\t\tstatus === 429\n\t) {\n\t\treturn { classification: \"rate_limited\", ...outcome };\n\t}\n\tif (\n\t\tcode?.includes(\"authentication_required\") ||\n\t\tcode?.includes(\"unauthorized\") ||\n\t\tstatus === 401\n\t) {\n\t\treturn { classification: \"authentication_required\", ...outcome };\n\t}\n\tif (\n\t\tdecision === \"deny\" ||\n\t\tcode?.includes(\"denied\") ||\n\t\tcode?.includes(\"forbidden\") ||\n\t\tstatus === 403\n\t) {\n\t\treturn { classification: \"denied\", ...outcome };\n\t}\n\treturn undefined;\n}\n\nfunction formatGovernedOutcomeSummary(\n\toutcome: McpGovernedOutcome | undefined,\n): string | undefined {\n\tif (!outcome) {\n\t\treturn undefined;\n\t}\n\n\tconst lines: string[] = [];\n\tswitch (outcome.classification) {\n\t\tcase \"approval_required\":\n\t\t\tlines.push(\"Approval required.\");\n\t\t\tbreak;\n\t\tcase \"approval_pending\":\n\t\t\tlines.push(\"Approval pending.\");\n\t\t\tbreak;\n\t\tcase \"authentication_required\":\n\t\t\tlines.push(\"Authentication required.\");\n\t\t\tbreak;\n\t\tcase \"rate_limited\":\n\t\t\tlines.push(\"Rate limit reached.\");\n\t\t\tbreak;\n\t\tcase \"denied\":\n\t\t\tlines.push(\"Action denied.\");\n\t\t\tbreak;\n\t}\n\n\tif (outcome.message) {\n\t\tlines.push(outcome.message);\n\t}\n\tif (outcome.reasons?.length) {\n\t\tlines.push(`Reasons: ${outcome.reasons.join(\"; \")}`);\n\t}\n\tif (outcome.approvalRequestId) {\n\t\tlines.push(`Approval request: ${outcome.approvalRequestId}`);\n\t}\n\tif (outcome.state && outcome.classification !== \"approval_pending\") {\n\t\tlines.push(`State: ${outcome.state}`);\n\t}\n\tif (outcome.riskLevel) {\n\t\tlines.push(`Risk level: ${outcome.riskLevel}`);\n\t}\n\tif (typeof outcome.retryAfterSeconds === \"number\") {\n\t\tlines.push(`Retry after: ${outcome.retryAfterSeconds} seconds`);\n\t} else if (typeof outcome.retryAfterMs === \"number\") {\n\t\tlines.push(`Retry after: ${outcome.retryAfterMs} ms`);\n\t}\n\n\treturn lines.join(\"\\n\");\n}\n\nfunction emitGovernedOutcomeTelemetry(\n\ttoolName: string,\n\toutcome: McpGovernedOutcome | undefined,\n): void {\n\tif (!outcome) {\n\t\treturn;\n\t}\n\n\tconst reason =\n\t\toutcome.message ??\n\t\toutcome.reasons?.join(\"; \") ??\n\t\toutcome.code ??\n\t\t\"policy event\";\n\n\tif (\n\t\toutcome.classification === \"approval_required\" ||\n\t\toutcome.classification === \"approval_pending\"\n\t) {\n\t\ttrackToolApprovalRequired({\n\t\t\ttoolName,\n\t\t\treason,\n\t\t\tsource: \"policy\",\n\t\t});\n\t\treturn;\n\t}\n\n\ttrackToolBlocked({\n\t\ttoolName,\n\t\treason,\n\t\tsource: \"policy\",\n\t\tseverity:\n\t\t\toutcome.classification === \"authentication_required\" ? \"medium\" : \"high\",\n\t});\n}\n\nfunction convertJsonSchemaToTypebox(schema: unknown): TSchema {\n\tif (!schema || typeof schema !== \"object\") {\n\t\treturn Type.Unknown();\n\t}\n\n\tconst s = schema as Record<string, unknown>;\n\tconst type = s.type as string | undefined;\n\n\tswitch (type) {\n\t\tcase \"string\":\n\t\t\treturn Type.String({ description: s.description as string | undefined });\n\t\tcase \"number\":\n\t\tcase \"integer\":\n\t\t\treturn Type.Number({ description: s.description as string | undefined });\n\t\tcase \"boolean\":\n\t\t\treturn Type.Boolean({ description: s.description as string | undefined });\n\t\tcase \"array\":\n\t\t\treturn Type.Array(convertJsonSchemaToTypebox(s.items), {\n\t\t\t\tdescription: s.description as string | undefined,\n\t\t\t});\n\t\tcase \"object\": {\n\t\t\tconst properties = s.properties as Record<string, unknown> | undefined;\n\t\t\tif (!properties) {\n\t\t\t\treturn Type.Record(Type.String(), Type.Unknown());\n\t\t\t}\n\t\t\tconst required = (s.required as string[]) ?? [];\n\t\t\tconst props: Record<string, TSchema> = {};\n\t\t\tfor (const [key, value] of Object.entries(properties)) {\n\t\t\t\tconst converted = convertJsonSchemaToTypebox(value);\n\t\t\t\tprops[key] = required.includes(key)\n\t\t\t\t\t? converted\n\t\t\t\t\t: Type.Optional(converted);\n\t\t\t}\n\t\t\treturn Type.Object(props, {\n\t\t\t\tdescription: s.description as string | undefined,\n\t\t\t});\n\t\t}\n\t\tdefault:\n\t\t\treturn Type.Unknown({ description: s.description as string | undefined });\n\t}\n}\n\nexport function createMcpToolWrapper(serverName: string, mcpTool: McpTool) {\n\tconst toolName = buildMcpToolName(serverName, mcpTool.name);\n\tconst schema = mcpTool.inputSchema\n\t\t? convertJsonSchemaToTypebox(mcpTool.inputSchema)\n\t\t: Type.Object({});\n\n\t// Extract MCP tool annotations for approval decisions\n\tconst mcpAnnotations = mcpTool.annotations as\n\t\t| {\n\t\t\t\treadOnlyHint?: boolean;\n\t\t\t\tdestructiveHint?: boolean;\n\t\t\t\tidempotentHint?: boolean;\n\t\t\t\topenWorldHint?: boolean;\n\t\t }\n\t\t| undefined;\n\n\treturn createTool<typeof schema, McpToolDetails>({\n\t\tname: toolName,\n\t\tlabel: `${serverName}/${mcpTool.name}`,\n\t\tdescription:\n\t\t\tmcpTool.description ?? `MCP tool from ${serverName}: ${mcpTool.name}`,\n\t\tschema,\n\t\tannotations: mcpAnnotations\n\t\t\t? {\n\t\t\t\t\treadOnlyHint: mcpAnnotations.readOnlyHint,\n\t\t\t\t\tdestructiveHint: mcpAnnotations.destructiveHint,\n\t\t\t\t\tidempotentHint: mcpAnnotations.idempotentHint,\n\t\t\t\t\topenWorldHint: mcpAnnotations.openWorldHint,\n\t\t\t\t}\n\t\t\t: undefined,\n\t\tasync run(params, { respond }) {\n\t\t\tconst result = await mcpManager.callTool(\n\t\t\t\tserverName,\n\t\t\t\tmcpTool.name,\n\t\t\t\tparams as Record<string, unknown>,\n\t\t\t);\n\t\t\tconst governedOutcome = classifyGovernedOutcome(\n\t\t\t\tresolveGovernedPayload(result),\n\t\t\t);\n\t\t\temitGovernedOutcomeTelemetry(mcpTool.name, governedOutcome);\n\n\t\t\tconst output =\n\t\t\t\tformatGovernedOutcomeSummary(governedOutcome) ??\n\t\t\t\textractMcpTextContent(result.content) ??\n\t\t\t\tJSON.stringify(result.structuredContent ?? result.content, null, 2);\n\n\t\t\tconst response = result.isError\n\t\t\t\t? respond.error(output)\n\t\t\t\t: respond.text(output);\n\t\t\treturn response.detail({\n\t\t\t\tserver: serverName,\n\t\t\t\ttool: mcpTool.name,\n\t\t\t\tcontent: result.content,\n\t\t\t\tstructuredContent: result.structuredContent,\n\t\t\t\tisError: result.isError,\n\t\t\t\tgovernedOutcome,\n\t\t\t});\n\t\t},\n\t});\n}\n\nexport function getAllMcpTools(): AgentTool[] {\n\tconst mcpTools = mcpManager.getAllTools();\n\treturn [\n\t\t...mcpTools.map(({ server, tool }) => createMcpToolWrapper(server, tool)),\n\t\t...getMcpHelperTools(),\n\t];\n}\n\nexport function getMcpToolMap(): Map<string, AgentTool> {\n\tconst map = new Map<string, AgentTool>();\n\tconst mcpTools = mcpManager.getAllTools();\n\n\tfor (const tool of getMcpHelperTools()) {\n\t\tmap.set(tool.name, tool);\n\t}\n\n\tfor (const { server, tool } of mcpTools) {\n\t\tconst wrapper = createMcpToolWrapper(server, tool);\n\t\tmap.set(wrapper.name, wrapper);\n\t}\n\n\treturn map;\n}\n\n// ─────────────────────────────────────────────────────────────\n// MCP Resource Tools (inspired by Claude Code's ListMcpResources/ReadMcpResource)\n// ─────────────────────────────────────────────────────────────\n\ninterface McpResourceListDetails {\n\tservers: Array<{\n\t\tname: string;\n\t\tresources: string[];\n\t}>;\n}\n\nconst listMcpResourcesSchema = Type.Object({\n\tserver: Type.Optional(\n\t\tType.String({\n\t\t\tdescription:\n\t\t\t\t\"Optional server name to filter resources. If omitted, lists resources from all servers.\",\n\t\t}),\n\t),\n});\n\n/**\n * Tool to list available MCP resources across all connected servers.\n */\nexport const listMcpResourcesTool = createTool<\n\ttypeof listMcpResourcesSchema,\n\tMcpResourceListDetails\n>({\n\tname: \"mcp_list_resources\",\n\tdescription:\n\t\t\"List available resources from MCP servers. Resources are data sources that can be read (files, configs, etc.).\",\n\tschema: listMcpResourcesSchema,\n\tannotations: {\n\t\treadOnlyHint: true,\n\t},\n\tasync run(params, { respond }) {\n\t\tconst status = mcpManager.getStatus();\n\t\tconst result: Array<{ name: string; resources: string[] }> = [];\n\n\t\tfor (const server of status.servers) {\n\t\t\tif (params.server && server.name !== params.server) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (server.connected && server.resources.length > 0) {\n\t\t\t\tresult.push({\n\t\t\t\t\tname: server.name,\n\t\t\t\t\tresources: server.resources,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (result.length === 0) {\n\t\t\treturn respond\n\t\t\t\t.text(\n\t\t\t\t\t\"No MCP resources available. Either no servers are connected or they don't expose resources.\",\n\t\t\t\t)\n\t\t\t\t.detail({ servers: [] });\n\t\t}\n\n\t\tconst lines: string[] = [\"# Available MCP Resources\\n\"];\n\t\tfor (const server of result) {\n\t\t\tlines.push(`## ${server.name}`);\n\t\t\tfor (const uri of server.resources) {\n\t\t\t\tlines.push(`- ${uri}`);\n\t\t\t}\n\t\t\tlines.push(\"\");\n\t\t}\n\n\t\treturn respond.text(lines.join(\"\\n\")).detail({ servers: result });\n\t},\n});\n\ninterface McpResourceReadDetails {\n\tserver: string;\n\turi: string;\n\tcontents: Array<{\n\t\turi: string;\n\t\ttext?: string;\n\t\tmimeType?: string;\n\t}>;\n}\n\nconst readMcpResourceSchema = Type.Object({\n\tserver: Type.String({\n\t\tdescription: \"Name of the MCP server that hosts the resource\",\n\t}),\n\turi: Type.String({\n\t\tdescription: \"URI of the resource to read\",\n\t}),\n});\n\n/**\n * Tool to read a specific MCP resource.\n */\nexport const readMcpResourceTool = createTool<\n\ttypeof readMcpResourceSchema,\n\tMcpResourceReadDetails\n>({\n\tname: \"mcp_read_resource\",\n\tdescription:\n\t\t\"Read the contents of an MCP resource by URI. Use mcp_list_resources first to discover available resources.\",\n\tschema: readMcpResourceSchema,\n\tannotations: {\n\t\treadOnlyHint: true,\n\t},\n\tasync run(params, { respond }) {\n\t\tconst { server, uri } = params;\n\n\t\ttry {\n\t\t\tconst result = await mcpManager.readResource(server, uri);\n\n\t\t\tif (result.contents.length === 0) {\n\t\t\t\treturn respond.text(`Resource '${uri}' is empty.`).detail({\n\t\t\t\t\tserver,\n\t\t\t\t\turi,\n\t\t\t\t\tcontents: [],\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Format output based on content type\n\t\t\tconst textContents = result.contents\n\t\t\t\t.filter((c) => c.text !== undefined)\n\t\t\t\t.map((c) => c.text)\n\t\t\t\t.join(\"\\n---\\n\");\n\n\t\t\tconst output = textContents || JSON.stringify(result.contents, null, 2);\n\n\t\t\treturn respond.text(output).detail({\n\t\t\t\tserver,\n\t\t\t\turi,\n\t\t\t\tcontents: result.contents.map((c) => ({\n\t\t\t\t\turi: c.uri,\n\t\t\t\t\ttext: c.text,\n\t\t\t\t\tmimeType: c.mimeType,\n\t\t\t\t})),\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\treturn respond.error(`Failed to read resource: ${message}`);\n\t\t}\n\t},\n});\n\ninterface McpPromptListDetails {\n\tservers: Array<{\n\t\tname: string;\n\t\tprompts: string[];\n\t}>;\n}\n\nconst listMcpPromptsSchema = Type.Object({\n\tserver: Type.Optional(\n\t\tType.String({\n\t\t\tdescription:\n\t\t\t\t\"Optional server name to filter prompts. If omitted, lists prompts from all servers.\",\n\t\t}),\n\t),\n});\n\n/**\n * Tool to list available MCP prompts across all connected servers.\n */\nexport const listMcpPromptsTool = createTool<\n\ttypeof listMcpPromptsSchema,\n\tMcpPromptListDetails\n>({\n\tname: \"mcp_list_prompts\",\n\tdescription:\n\t\t\"List available prompts from MCP servers. Prompts are reusable prompt templates exposed by servers.\",\n\tschema: listMcpPromptsSchema,\n\tannotations: {\n\t\treadOnlyHint: true,\n\t},\n\tasync run(params, { respond }) {\n\t\tconst status = mcpManager.getStatus();\n\t\tconst result: Array<{ name: string; prompts: string[] }> = [];\n\n\t\tfor (const server of status.servers) {\n\t\t\tif (params.server && server.name !== params.server) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (server.connected && server.prompts.length > 0) {\n\t\t\t\tresult.push({\n\t\t\t\t\tname: server.name,\n\t\t\t\t\tprompts: server.prompts,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (result.length === 0) {\n\t\t\treturn respond\n\t\t\t\t.text(\n\t\t\t\t\t\"No MCP prompts available. Either no servers are connected or they don't expose prompts.\",\n\t\t\t\t)\n\t\t\t\t.detail({ servers: [] });\n\t\t}\n\n\t\tconst lines: string[] = [\"# Available MCP Prompts\\n\"];\n\t\tfor (const server of result) {\n\t\t\tlines.push(`## ${server.name}`);\n\t\t\tfor (const prompt of server.prompts) {\n\t\t\t\tlines.push(`- ${prompt}`);\n\t\t\t}\n\t\t\tlines.push(\"\");\n\t\t}\n\n\t\treturn respond.text(lines.join(\"\\n\")).detail({ servers: result });\n\t},\n});\n\ninterface McpPromptDetails {\n\tserver: string;\n\tname: string;\n\tdescription?: string;\n\tmessages: Array<{ role: string; content: string }>;\n}\n\nconst getMcpPromptSchema = Type.Object({\n\tserver: Type.String({\n\t\tdescription: \"Name of the MCP server that hosts the prompt\",\n\t}),\n\tname: Type.String({\n\t\tdescription: \"Name of the prompt to fetch\",\n\t}),\n\targs: Type.Optional(\n\t\tType.Record(\n\t\t\tType.String(),\n\t\t\tType.String({\n\t\t\t\tdescription: \"Optional string arguments passed to the prompt\",\n\t\t\t}),\n\t\t),\n\t),\n});\n\n/**\n * Tool to fetch a specific MCP prompt.\n */\nexport const getMcpPromptTool = createTool<\n\ttypeof getMcpPromptSchema,\n\tMcpPromptDetails\n>({\n\tname: \"mcp_get_prompt\",\n\tdescription:\n\t\t\"Fetch an MCP prompt by name. Use mcp_list_prompts first to discover available prompts.\",\n\tschema: getMcpPromptSchema,\n\tannotations: {\n\t\treadOnlyHint: true,\n\t},\n\tasync run(params, { respond }) {\n\t\tconst { server, name, args } = params;\n\n\t\ttry {\n\t\t\tconst result = await mcpManager.getPrompt(server, name, args);\n\t\t\tconst lines: string[] = [`Prompt: ${name}`];\n\n\t\t\tif (result.description) {\n\t\t\t\tlines.push(`Description: ${result.description}`);\n\t\t\t}\n\n\t\t\tif (result.messages.length === 0) {\n\t\t\t\tlines.push(\"\");\n\t\t\t\tlines.push(\"No prompt messages returned.\");\n\t\t\t} else {\n\t\t\t\tlines.push(\"\");\n\t\t\t\tfor (const message of result.messages) {\n\t\t\t\t\tlines.push(`[${message.role}]`);\n\t\t\t\t\tlines.push(message.content);\n\t\t\t\t\tlines.push(\"\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn respond.text(lines.join(\"\\n\").trimEnd()).detail({\n\t\t\t\tserver,\n\t\t\t\tname,\n\t\t\t\tdescription: result.description,\n\t\t\t\tmessages: result.messages,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\treturn respond.error(`Failed to get prompt: ${message}`);\n\t\t}\n\t},\n});\n\n/**\n * Get all MCP resource tools.\n */\nexport function getMcpResourceTools() {\n\treturn [listMcpResourcesTool, readMcpResourceTool];\n}\n\nfunction getMcpHelperTools() {\n\treturn [\n\t\tlistMcpResourcesTool,\n\t\treadMcpResourceTool,\n\t\tlistMcpPromptsTool,\n\t\tgetMcpPromptTool,\n\t];\n}\n"]}
1
+ {"version":3,"file":"tool-bridge.js","sourceRoot":"","sources":["../../src/mcp/tool-bridge.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Tool as McpTool } from \"@modelcontextprotocol/sdk/types.js\";\nimport { type TSchema, Type } from \"@sinclair/typebox\";\nimport type {\n\tAgentTool,\n\tToolAnnotations,\n\tToolSourceMetadata,\n} from \"../agent/types.js\";\nimport {\n\ttrackToolApprovalRequired,\n\ttrackToolBlocked,\n} from \"../telemetry/security-events.js\";\nimport { createTool } from \"../tools/tool-dsl.js\";\nimport { promptSafeText } from \"../utils/prompt-safe-text.js\";\nimport { mcpManager } from \"./manager.js\";\nimport type { McpToolCallResult } from \"./manager.js\";\nimport { buildMcpToolName } from \"./names.js\";\nimport type { McpToolParallelSafety } from \"./types.js\";\n\ninterface McpToolDetails {\n\tserver: string;\n\ttool: string;\n\tcontent: unknown[];\n\tstructuredContent?: unknown;\n\tisError?: boolean;\n\tgovernedOutcome?: McpGovernedOutcome;\n\ttoolExecutionState?: McpGovernedToolExecutionState;\n}\n\nexport const MCP_GOVERNED_TOOL_EXECUTION_SCHEMA =\n\t\"evalops.maestro.mcp-governed-tool-execution.v1\";\n\nexport type McpGovernedClassification =\n\t| \"approval_required\"\n\t| \"approval_pending\"\n\t| \"authentication_required\"\n\t| \"denied\"\n\t| \"rate_limited\";\n\nexport type McpGovernedToolExecutionStateKind =\n\t| \"waiting_approval\"\n\t| \"blocked_authentication\"\n\t| \"blocked_retry_later\"\n\t| \"denied\";\n\nexport interface McpGovernedToolExecutionState {\n\tschemaVersion: typeof MCP_GOVERNED_TOOL_EXECUTION_SCHEMA;\n\tauthority: \"mcp_result_adapter\";\n\tstate: McpGovernedToolExecutionStateKind;\n\tterminal: boolean;\n\tclassification: McpGovernedClassification;\n\tapprovalRequestId?: string;\n\tretryAfterMs?: number;\n\tmessage?: string;\n\treasons?: string[];\n\tcode?: string;\n\triskLevel?: string;\n}\n\nexport interface McpGovernedOutcome {\n\tclassification:\n\t\t| \"approval_required\"\n\t\t| \"approval_pending\"\n\t\t| \"authentication_required\"\n\t\t| \"denied\"\n\t\t| \"rate_limited\";\n\tdecision?: string;\n\triskLevel?: string;\n\treasons?: string[];\n\tapprovalRequestId?: string;\n\tmatchedRules?: string[];\n\tmessage?: string;\n\tcode?: string;\n\tstate?: string;\n\tretryAfterMs?: number;\n\tretryAfterSeconds?: number;\n}\n\nexport function normalizeMcpGovernedToolExecution(\n\toutcome: McpGovernedOutcome | undefined,\n): McpGovernedToolExecutionState | undefined {\n\tif (!outcome) {\n\t\treturn undefined;\n\t}\n\tlet state: McpGovernedToolExecutionStateKind;\n\tlet terminal = true;\n\tswitch (outcome.classification) {\n\t\tcase \"approval_required\":\n\t\tcase \"approval_pending\":\n\t\t\tstate = \"waiting_approval\";\n\t\t\tterminal = false;\n\t\t\tbreak;\n\t\tcase \"authentication_required\":\n\t\t\tstate = \"blocked_authentication\";\n\t\t\tbreak;\n\t\tcase \"rate_limited\":\n\t\t\tstate = \"blocked_retry_later\";\n\t\t\tbreak;\n\t\tcase \"denied\":\n\t\t\tstate = \"denied\";\n\t\t\tbreak;\n\t}\n\tconst retryAfterMs =\n\t\toutcome.retryAfterMs ??\n\t\t(outcome.retryAfterSeconds !== undefined\n\t\t\t? outcome.retryAfterSeconds * 1000\n\t\t\t: undefined);\n\treturn {\n\t\tschemaVersion: MCP_GOVERNED_TOOL_EXECUTION_SCHEMA,\n\t\tauthority: \"mcp_result_adapter\",\n\t\tstate,\n\t\tterminal,\n\t\tclassification: outcome.classification,\n\t\t...(outcome.approvalRequestId\n\t\t\t? { approvalRequestId: outcome.approvalRequestId }\n\t\t\t: {}),\n\t\t...(retryAfterMs !== undefined ? { retryAfterMs } : {}),\n\t\t...(outcome.message ? { message: outcome.message } : {}),\n\t\t...(outcome.reasons ? { reasons: outcome.reasons } : {}),\n\t\t...(outcome.code ? { code: outcome.code } : {}),\n\t\t...(outcome.riskLevel ? { riskLevel: outcome.riskLevel } : {}),\n\t};\n}\n\nfunction normalizeObject(value: unknown): Record<string, unknown> | null {\n\treturn value && typeof value === \"object\" && !Array.isArray(value)\n\t\t? (value as Record<string, unknown>)\n\t\t: null;\n}\n\nfunction firstString(\n\tvalue: Record<string, unknown>,\n\t...keys: string[]\n): string | undefined {\n\tfor (const key of keys) {\n\t\tconst candidate = value[key];\n\t\tif (typeof candidate === \"string\" && candidate.trim().length > 0) {\n\t\t\treturn candidate.trim();\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction firstNumber(\n\tvalue: Record<string, unknown>,\n\t...keys: string[]\n): number | undefined {\n\tfor (const key of keys) {\n\t\tconst candidate = value[key];\n\t\tif (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n\t\t\treturn candidate;\n\t\t}\n\t\tif (typeof candidate === \"string\" && candidate.trim().length > 0) {\n\t\t\tconst parsed = Number(candidate);\n\t\t\tif (Number.isFinite(parsed)) {\n\t\t\t\treturn parsed;\n\t\t\t}\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction toStringArray(value: unknown): string[] | undefined {\n\tif (!Array.isArray(value)) {\n\t\treturn undefined;\n\t}\n\tconst entries = value\n\t\t.filter((item): item is string => typeof item === \"string\")\n\t\t.map((item) => item.trim())\n\t\t.filter(Boolean);\n\treturn entries.length > 0 ? entries : undefined;\n}\n\nfunction extractMcpTextContent(\n\tcontent: McpToolCallResult[\"content\"],\n): string | undefined {\n\tconst text = content\n\t\t.filter((item) => item.type === \"text\" && typeof item.text === \"string\")\n\t\t.map((item) => item.text as string)\n\t\t.join(\"\\n\")\n\t\t.trim();\n\treturn text.length > 0 ? text : undefined;\n}\n\nfunction parseJsonObjectFromText(\n\ttext: string | undefined,\n): Record<string, unknown> | null {\n\tif (!text) {\n\t\treturn null;\n\t}\n\tconst trimmed = text.trim();\n\tif (!(trimmed.startsWith(\"{\") && trimmed.endsWith(\"}\"))) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn normalizeObject(JSON.parse(trimmed));\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction resolveGovernedPayload(\n\tresult: McpToolCallResult,\n): Record<string, unknown> | null {\n\treturn (\n\t\tnormalizeObject(result.structuredContent) ??\n\t\tparseJsonObjectFromText(extractMcpTextContent(result.content))\n\t);\n}\n\nfunction classifyGovernedOutcome(\n\tpayload: Record<string, unknown> | null,\n): McpGovernedOutcome | undefined {\n\tif (!payload) {\n\t\treturn undefined;\n\t}\n\n\tconst decision = firstString(payload, \"decision\")?.toLowerCase();\n\tconst code = firstString(payload, \"code\", \"error_code\")?.toLowerCase();\n\tconst state = firstString(payload, \"state\")?.toLowerCase();\n\tconst status = firstNumber(payload, \"status\", \"status_code\");\n\tconst approvalRequestId = firstString(\n\t\tpayload,\n\t\t\"approval_id\",\n\t\t\"approvalId\",\n\t\t\"approval_request_id\",\n\t\t\"approvalRequestId\",\n\t);\n\tconst reasons = toStringArray(payload.reasons);\n\tconst matchedRules = toStringArray(\n\t\tpayload.matched_rules ?? payload.matchedRules,\n\t);\n\tconst outcome: Omit<McpGovernedOutcome, \"classification\"> = {\n\t\tdecision,\n\t\triskLevel: firstString(payload, \"risk_level\", \"riskLevel\"),\n\t\treasons,\n\t\tapprovalRequestId,\n\t\tmatchedRules,\n\t\tmessage: firstString(payload, \"message\", \"detail\", \"error\"),\n\t\tcode,\n\t\tstate,\n\t\tretryAfterMs: firstNumber(payload, \"retry_after_ms\", \"retryAfterMs\"),\n\t\tretryAfterSeconds: firstNumber(\n\t\t\tpayload,\n\t\t\t\"retry_after_seconds\",\n\t\t\t\"retryAfterSeconds\",\n\t\t),\n\t};\n\n\tif (decision === \"require_approval\" || code?.includes(\"approval_required\")) {\n\t\treturn { classification: \"approval_required\", ...outcome };\n\t}\n\tif (state === \"pending\" && approvalRequestId) {\n\t\treturn { classification: \"approval_pending\", ...outcome };\n\t}\n\tif (\n\t\tcode?.includes(\"rate_limit\") ||\n\t\tcode?.includes(\"too_many_requests\") ||\n\t\tstatus === 429\n\t) {\n\t\treturn { classification: \"rate_limited\", ...outcome };\n\t}\n\tif (\n\t\tcode?.includes(\"authentication_required\") ||\n\t\tcode?.includes(\"unauthorized\") ||\n\t\tstatus === 401\n\t) {\n\t\treturn { classification: \"authentication_required\", ...outcome };\n\t}\n\tif (\n\t\tdecision === \"deny\" ||\n\t\tcode?.includes(\"denied\") ||\n\t\tcode?.includes(\"forbidden\") ||\n\t\tstatus === 403\n\t) {\n\t\treturn { classification: \"denied\", ...outcome };\n\t}\n\treturn undefined;\n}\n\nfunction formatGovernedOutcomeSummary(\n\toutcome: McpGovernedOutcome | undefined,\n\ttoolExecutionState: McpGovernedToolExecutionState | undefined,\n): string | undefined {\n\tif (!outcome) {\n\t\treturn undefined;\n\t}\n\n\tconst lines: string[] = [];\n\tswitch (outcome.classification) {\n\t\tcase \"approval_required\":\n\t\t\tlines.push(\"Approval required.\");\n\t\t\tbreak;\n\t\tcase \"approval_pending\":\n\t\t\tlines.push(\"Approval pending.\");\n\t\t\tbreak;\n\t\tcase \"authentication_required\":\n\t\t\tlines.push(\"Authentication required.\");\n\t\t\tbreak;\n\t\tcase \"rate_limited\":\n\t\t\tlines.push(\"Rate limit reached.\");\n\t\t\tbreak;\n\t\tcase \"denied\":\n\t\t\tlines.push(\"Action denied.\");\n\t\t\tbreak;\n\t}\n\n\tif (outcome.message) {\n\t\tlines.push(outcome.message);\n\t}\n\tif (outcome.reasons?.length) {\n\t\tlines.push(`Reasons: ${outcome.reasons.join(\"; \")}`);\n\t}\n\tif (outcome.approvalRequestId) {\n\t\tlines.push(`Approval request: ${outcome.approvalRequestId}`);\n\t}\n\tif (toolExecutionState) {\n\t\tlines.push(\n\t\t\t`ToolExecution state: ${toolExecutionState.state} (${toolExecutionState.authority}).`,\n\t\t);\n\t}\n\tif (outcome.state && outcome.classification !== \"approval_pending\") {\n\t\tlines.push(`State: ${outcome.state}`);\n\t}\n\tif (outcome.riskLevel) {\n\t\tlines.push(`Risk level: ${outcome.riskLevel}`);\n\t}\n\tif (typeof outcome.retryAfterSeconds === \"number\") {\n\t\tlines.push(`Retry after: ${outcome.retryAfterSeconds} seconds`);\n\t} else if (typeof outcome.retryAfterMs === \"number\") {\n\t\tlines.push(`Retry after: ${outcome.retryAfterMs} ms`);\n\t}\n\n\treturn lines.join(\"\\n\");\n}\n\nfunction emitGovernedOutcomeTelemetry(\n\ttoolName: string,\n\toutcome: McpGovernedOutcome | undefined,\n): void {\n\tif (!outcome) {\n\t\treturn;\n\t}\n\n\tconst reason =\n\t\toutcome.message ??\n\t\toutcome.reasons?.join(\"; \") ??\n\t\toutcome.code ??\n\t\t\"policy event\";\n\n\tif (\n\t\toutcome.classification === \"approval_required\" ||\n\t\toutcome.classification === \"approval_pending\"\n\t) {\n\t\ttrackToolApprovalRequired({\n\t\t\ttoolName,\n\t\t\treason,\n\t\t\tsource: \"policy\",\n\t\t});\n\t\treturn;\n\t}\n\n\ttrackToolBlocked({\n\t\ttoolName,\n\t\treason,\n\t\tsource: \"policy\",\n\t\tseverity:\n\t\t\toutcome.classification === \"authentication_required\" ? \"medium\" : \"high\",\n\t});\n}\n\nfunction convertJsonSchemaToTypebox(schema: unknown): TSchema {\n\tif (!schema || typeof schema !== \"object\") {\n\t\treturn Type.Unknown();\n\t}\n\n\tconst s = schema as Record<string, unknown>;\n\tconst type = s.type as string | undefined;\n\tconst description =\n\t\ttypeof s.description === \"string\"\n\t\t\t? (promptSafeText(s.description) ?? undefined)\n\t\t\t: undefined;\n\n\tswitch (type) {\n\t\tcase \"string\":\n\t\t\treturn Type.String({ description });\n\t\tcase \"number\":\n\t\tcase \"integer\":\n\t\t\treturn Type.Number({ description });\n\t\tcase \"boolean\":\n\t\t\treturn Type.Boolean({ description });\n\t\tcase \"array\":\n\t\t\treturn Type.Array(convertJsonSchemaToTypebox(s.items), {\n\t\t\t\tdescription,\n\t\t\t});\n\t\tcase \"object\": {\n\t\t\tconst properties = s.properties as Record<string, unknown> | undefined;\n\t\t\tif (!properties) {\n\t\t\t\treturn Type.Record(Type.String(), Type.Unknown());\n\t\t\t}\n\t\t\tconst required = (s.required as string[]) ?? [];\n\t\t\tconst props: Record<string, TSchema> = {};\n\t\t\tfor (const [key, value] of Object.entries(properties)) {\n\t\t\t\tconst converted = convertJsonSchemaToTypebox(value);\n\t\t\t\tprops[key] = required.includes(key)\n\t\t\t\t\t? converted\n\t\t\t\t\t: Type.Optional(converted);\n\t\t\t}\n\t\t\treturn Type.Object(props, {\n\t\t\t\tdescription,\n\t\t\t});\n\t\t}\n\t\tdefault:\n\t\t\treturn Type.Unknown({ description });\n\t}\n}\n\nexport function createMcpToolWrapper(\n\tserverName: string,\n\tmcpTool: McpTool,\n\toptions?: {\n\t\tsupportsParallelToolCalls?: boolean;\n\t\tparallelSafety?: McpToolParallelSafety;\n\t},\n) {\n\tconst toolName = buildMcpToolName(serverName, mcpTool.name);\n\tconst schema = mcpTool.inputSchema\n\t\t? convertJsonSchemaToTypebox(mcpTool.inputSchema)\n\t\t: Type.Object({});\n\n\t// Extract MCP tool annotations for approval decisions\n\tconst mcpAnnotations = mcpTool.annotations as\n\t\t| {\n\t\t\t\treadOnlyHint?: boolean;\n\t\t\t\tdestructiveHint?: boolean;\n\t\t\t\tidempotentHint?: boolean;\n\t\t\t\topenWorldHint?: boolean;\n\t\t }\n\t\t| undefined;\n\tconst supportsParallelToolCalls =\n\t\toptions?.parallelSafety?.supportsParallelToolCalls === true ||\n\t\toptions?.supportsParallelToolCalls === true;\n\tconst parallelSafetyProvenance =\n\t\toptions?.parallelSafety?.provenance ??\n\t\t(options?.supportsParallelToolCalls === true ? \"static_config\" : \"none\");\n\tconst parallelMaxConcurrency = options?.parallelSafety?.maxConcurrency;\n\tconst advertisedParallelReadOnly =\n\t\tsupportsParallelToolCalls && options?.parallelSafety?.readOnlyHint === true;\n\tconst annotations: ToolAnnotations | undefined =\n\t\tmcpAnnotations || advertisedParallelReadOnly\n\t\t\t? {\n\t\t\t\t\treadOnlyHint:\n\t\t\t\t\t\tmcpAnnotations?.readOnlyHint ??\n\t\t\t\t\t\t(advertisedParallelReadOnly ? true : undefined),\n\t\t\t\t\tdestructiveHint: mcpAnnotations?.destructiveHint,\n\t\t\t\t\tidempotentHint: mcpAnnotations?.idempotentHint,\n\t\t\t\t\topenWorldHint: mcpAnnotations?.openWorldHint,\n\t\t\t\t}\n\t\t\t: undefined;\n\tconst source: ToolSourceMetadata = {\n\t\ttype: \"mcp\",\n\t\tserver: serverName,\n\t\ttool: mcpTool.name,\n\t\tsupportsParallelToolCalls,\n\t\tparallelSafetyProvenance,\n\t\t...(parallelMaxConcurrency ? { parallelMaxConcurrency } : {}),\n\t};\n\n\treturn createTool<typeof schema, McpToolDetails>({\n\t\tname: toolName,\n\t\tlabel: `${serverName}/${mcpTool.name}`,\n\t\tdescription:\n\t\t\tpromptSafeText(mcpTool.description) ??\n\t\t\t`MCP tool from ${serverName}: ${mcpTool.name}`,\n\t\tschema,\n\t\tannotations,\n\t\tsource,\n\t\tasync run(params, { respond }) {\n\t\t\tconst result = await mcpManager.callTool(\n\t\t\t\tserverName,\n\t\t\t\tmcpTool.name,\n\t\t\t\tparams as Record<string, unknown>,\n\t\t\t);\n\t\t\tconst governedOutcome = classifyGovernedOutcome(\n\t\t\t\tresolveGovernedPayload(result),\n\t\t\t);\n\t\t\tconst toolExecutionState =\n\t\t\t\tnormalizeMcpGovernedToolExecution(governedOutcome);\n\t\t\temitGovernedOutcomeTelemetry(mcpTool.name, governedOutcome);\n\n\t\t\tconst output =\n\t\t\t\tformatGovernedOutcomeSummary(governedOutcome, toolExecutionState) ??\n\t\t\t\textractMcpTextContent(result.content) ??\n\t\t\t\tJSON.stringify(result.structuredContent ?? result.content, null, 2);\n\n\t\t\tconst response = result.isError\n\t\t\t\t? respond.error(output)\n\t\t\t\t: respond.text(output);\n\t\t\treturn response.detail({\n\t\t\t\tserver: serverName,\n\t\t\t\ttool: mcpTool.name,\n\t\t\t\tcontent: result.content,\n\t\t\t\tstructuredContent: result.structuredContent,\n\t\t\t\tisError: result.isError,\n\t\t\t\tgovernedOutcome,\n\t\t\t\ttoolExecutionState,\n\t\t\t});\n\t\t},\n\t});\n}\n\nexport function getAllMcpTools(): AgentTool[] {\n\tconst mcpTools = mcpManager.getAllTools();\n\treturn [\n\t\t...mcpTools.map(\n\t\t\t({ server, tool, supportsParallelToolCalls, parallelSafety }) =>\n\t\t\t\tcreateMcpToolWrapper(server, tool, {\n\t\t\t\t\tsupportsParallelToolCalls,\n\t\t\t\t\tparallelSafety,\n\t\t\t\t}),\n\t\t),\n\t\t...getMcpHelperTools(),\n\t];\n}\n\nexport function getMcpToolMap(): Map<string, AgentTool> {\n\tconst map = new Map<string, AgentTool>();\n\tconst mcpTools = mcpManager.getAllTools();\n\n\tfor (const tool of getMcpHelperTools()) {\n\t\tmap.set(tool.name, tool);\n\t}\n\n\tfor (const {\n\t\tserver,\n\t\ttool,\n\t\tsupportsParallelToolCalls,\n\t\tparallelSafety,\n\t} of mcpTools) {\n\t\tconst wrapper = createMcpToolWrapper(server, tool, {\n\t\t\tsupportsParallelToolCalls,\n\t\t\tparallelSafety,\n\t\t});\n\t\tmap.set(wrapper.name, wrapper);\n\t}\n\n\treturn map;\n}\n\n// ─────────────────────────────────────────────────────────────\n// MCP Resource Tools (inspired by Claude Code's ListMcpResources/ReadMcpResource)\n// ─────────────────────────────────────────────────────────────\n\ninterface McpResourceListDetails {\n\tservers: Array<{\n\t\tname: string;\n\t\tresources: string[];\n\t}>;\n}\n\nconst listMcpResourcesSchema = Type.Object({\n\tserver: Type.Optional(\n\t\tType.String({\n\t\t\tdescription:\n\t\t\t\t\"Optional server name to filter resources. If omitted, lists resources from all servers.\",\n\t\t}),\n\t),\n});\n\n/**\n * Tool to list available MCP resources across all connected servers.\n */\nexport const listMcpResourcesTool = createTool<\n\ttypeof listMcpResourcesSchema,\n\tMcpResourceListDetails\n>({\n\tname: \"mcp_list_resources\",\n\tdescription:\n\t\t\"List available resources from MCP servers. Resources are data sources that can be read (files, configs, etc.).\",\n\tschema: listMcpResourcesSchema,\n\tannotations: {\n\t\treadOnlyHint: true,\n\t},\n\tasync run(params, { respond }) {\n\t\tconst status = mcpManager.getStatus();\n\t\tconst result: Array<{ name: string; resources: string[] }> = [];\n\n\t\tfor (const server of status.servers) {\n\t\t\tif (params.server && server.name !== params.server) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (server.connected && server.resources.length > 0) {\n\t\t\t\tresult.push({\n\t\t\t\t\tname: server.name,\n\t\t\t\t\tresources: server.resources,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (result.length === 0) {\n\t\t\treturn respond\n\t\t\t\t.text(\n\t\t\t\t\t\"No MCP resources available. Either no servers are connected or they don't expose resources.\",\n\t\t\t\t)\n\t\t\t\t.detail({ servers: [] });\n\t\t}\n\n\t\tconst lines: string[] = [\"# Available MCP Resources\\n\"];\n\t\tfor (const server of result) {\n\t\t\tlines.push(`## ${server.name}`);\n\t\t\tfor (const uri of server.resources) {\n\t\t\t\tlines.push(`- ${uri}`);\n\t\t\t}\n\t\t\tlines.push(\"\");\n\t\t}\n\n\t\treturn respond.text(lines.join(\"\\n\")).detail({ servers: result });\n\t},\n});\n\ninterface McpResourceReadDetails {\n\tserver: string;\n\turi: string;\n\tcontents: Array<{\n\t\turi: string;\n\t\ttext?: string;\n\t\tmimeType?: string;\n\t}>;\n}\n\nconst readMcpResourceSchema = Type.Object({\n\tserver: Type.String({\n\t\tdescription: \"Name of the MCP server that hosts the resource\",\n\t}),\n\turi: Type.String({\n\t\tdescription: \"URI of the resource to read\",\n\t}),\n});\n\n/**\n * Tool to read a specific MCP resource.\n */\nexport const readMcpResourceTool = createTool<\n\ttypeof readMcpResourceSchema,\n\tMcpResourceReadDetails\n>({\n\tname: \"mcp_read_resource\",\n\tdescription:\n\t\t\"Read the contents of an MCP resource by URI. Use mcp_list_resources first to discover available resources.\",\n\tschema: readMcpResourceSchema,\n\tannotations: {\n\t\treadOnlyHint: true,\n\t},\n\tasync run(params, { respond }) {\n\t\tconst { server, uri } = params;\n\n\t\ttry {\n\t\t\tconst result = await mcpManager.readResource(server, uri);\n\n\t\t\tif (result.contents.length === 0) {\n\t\t\t\treturn respond.text(`Resource '${uri}' is empty.`).detail({\n\t\t\t\t\tserver,\n\t\t\t\t\turi,\n\t\t\t\t\tcontents: [],\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Format output based on content type\n\t\t\tconst textContents = result.contents\n\t\t\t\t.filter((c) => c.text !== undefined)\n\t\t\t\t.map((c) => c.text)\n\t\t\t\t.join(\"\\n---\\n\");\n\n\t\t\tconst output = textContents || JSON.stringify(result.contents, null, 2);\n\n\t\t\treturn respond.text(output).detail({\n\t\t\t\tserver,\n\t\t\t\turi,\n\t\t\t\tcontents: result.contents.map((c) => ({\n\t\t\t\t\turi: c.uri,\n\t\t\t\t\ttext: c.text,\n\t\t\t\t\tmimeType: c.mimeType,\n\t\t\t\t})),\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\treturn respond.error(`Failed to read resource: ${message}`);\n\t\t}\n\t},\n});\n\ninterface McpPromptListDetails {\n\tservers: Array<{\n\t\tname: string;\n\t\tprompts: string[];\n\t}>;\n}\n\nconst listMcpPromptsSchema = Type.Object({\n\tserver: Type.Optional(\n\t\tType.String({\n\t\t\tdescription:\n\t\t\t\t\"Optional server name to filter prompts. If omitted, lists prompts from all servers.\",\n\t\t}),\n\t),\n});\n\n/**\n * Tool to list available MCP prompts across all connected servers.\n */\nexport const listMcpPromptsTool = createTool<\n\ttypeof listMcpPromptsSchema,\n\tMcpPromptListDetails\n>({\n\tname: \"mcp_list_prompts\",\n\tdescription:\n\t\t\"List available prompts from MCP servers. Prompts are reusable prompt templates exposed by servers.\",\n\tschema: listMcpPromptsSchema,\n\tannotations: {\n\t\treadOnlyHint: true,\n\t},\n\tasync run(params, { respond }) {\n\t\tconst status = mcpManager.getStatus();\n\t\tconst result: Array<{ name: string; prompts: string[] }> = [];\n\n\t\tfor (const server of status.servers) {\n\t\t\tif (params.server && server.name !== params.server) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (server.connected && server.prompts.length > 0) {\n\t\t\t\tresult.push({\n\t\t\t\t\tname: server.name,\n\t\t\t\t\tprompts: server.prompts,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (result.length === 0) {\n\t\t\treturn respond\n\t\t\t\t.text(\n\t\t\t\t\t\"No MCP prompts available. Either no servers are connected or they don't expose prompts.\",\n\t\t\t\t)\n\t\t\t\t.detail({ servers: [] });\n\t\t}\n\n\t\tconst lines: string[] = [\"# Available MCP Prompts\\n\"];\n\t\tfor (const server of result) {\n\t\t\tlines.push(`## ${server.name}`);\n\t\t\tfor (const prompt of server.prompts) {\n\t\t\t\tlines.push(`- ${prompt}`);\n\t\t\t}\n\t\t\tlines.push(\"\");\n\t\t}\n\n\t\treturn respond.text(lines.join(\"\\n\")).detail({ servers: result });\n\t},\n});\n\ninterface McpPromptDetails {\n\tserver: string;\n\tname: string;\n\tdescription?: string;\n\tmessages: Array<{ role: string; content: string }>;\n}\n\nconst getMcpPromptSchema = Type.Object({\n\tserver: Type.String({\n\t\tdescription: \"Name of the MCP server that hosts the prompt\",\n\t}),\n\tname: Type.String({\n\t\tdescription: \"Name of the prompt to fetch\",\n\t}),\n\targs: Type.Optional(\n\t\tType.Record(\n\t\t\tType.String(),\n\t\t\tType.String({\n\t\t\t\tdescription: \"Optional string arguments passed to the prompt\",\n\t\t\t}),\n\t\t),\n\t),\n});\n\n/**\n * Tool to fetch a specific MCP prompt.\n */\nexport const getMcpPromptTool = createTool<\n\ttypeof getMcpPromptSchema,\n\tMcpPromptDetails\n>({\n\tname: \"mcp_get_prompt\",\n\tdescription:\n\t\t\"Fetch an MCP prompt by name. Use mcp_list_prompts first to discover available prompts.\",\n\tschema: getMcpPromptSchema,\n\tannotations: {\n\t\treadOnlyHint: true,\n\t},\n\tasync run(params, { respond }) {\n\t\tconst { server, name, args } = params;\n\n\t\ttry {\n\t\t\tconst result = await mcpManager.getPrompt(server, name, args);\n\t\t\tconst lines: string[] = [`Prompt: ${name}`];\n\t\t\tconst description = promptSafeText(result.description);\n\n\t\t\tif (description) {\n\t\t\t\tlines.push(`Description: ${description}`);\n\t\t\t}\n\n\t\t\tif (result.messages.length === 0) {\n\t\t\t\tlines.push(\"\");\n\t\t\t\tlines.push(\"No prompt messages returned.\");\n\t\t\t} else {\n\t\t\t\tlines.push(\"\");\n\t\t\t\tfor (const message of result.messages) {\n\t\t\t\t\tlines.push(`[${message.role}]`);\n\t\t\t\t\tlines.push(message.content);\n\t\t\t\t\tlines.push(\"\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn respond.text(lines.join(\"\\n\").trimEnd()).detail({\n\t\t\t\tserver,\n\t\t\t\tname,\n\t\t\t\tdescription: description ?? undefined,\n\t\t\t\tmessages: result.messages,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\treturn respond.error(`Failed to get prompt: ${message}`);\n\t\t}\n\t},\n});\n\n/**\n * Get all MCP resource tools.\n */\nexport function getMcpResourceTools() {\n\treturn [listMcpResourcesTool, readMcpResourceTool];\n}\n\nfunction getMcpHelperTools() {\n\treturn [\n\t\tlistMcpResourcesTool,\n\t\treadMcpResourceTool,\n\t\tlistMcpPromptsTool,\n\t\tgetMcpPromptTool,\n\t];\n}\n"]}
@@ -38,6 +38,17 @@ export type McpScope = "enterprise" | "plugin" | "project" | "local" | "user";
38
38
  export type McpRemoteTrust = "official" | "custom" | "unknown";
39
39
  export type McpProjectApprovalDecision = "approved" | "denied";
40
40
  export type McpProjectApprovalStatus = "pending" | McpProjectApprovalDecision;
41
+ export type McpWorkspaceTrustMode = "trusted" | "ask" | "blocked" | "untrusted";
42
+ export type McpWorkspaceTrustDefault = "trusted" | "ask" | "untrusted";
43
+ export interface McpWorkspaceTrustEntry {
44
+ workspaceUri: string;
45
+ mode: Exclude<McpWorkspaceTrustMode, "untrusted">;
46
+ serverFingerprint?: string;
47
+ grantedBy?: string;
48
+ grantedAt?: string;
49
+ expiresAt?: string;
50
+ reason?: string;
51
+ }
41
52
  export interface McpOfficialRegistryInfo {
42
53
  displayName?: string;
43
54
  directoryUrl?: string;
@@ -92,12 +103,22 @@ export interface McpServerConfig {
92
103
  enabled?: boolean;
93
104
  disabled?: boolean;
94
105
  timeout?: number;
106
+ supportsParallelToolCalls?: boolean;
95
107
  scope?: McpScope;
96
108
  }
109
+ export type McpParallelSafetyProvenance = "static_config" | "server_capability" | "none";
110
+ export interface McpToolParallelSafety {
111
+ supportsParallelToolCalls: boolean;
112
+ provenance: McpParallelSafetyProvenance;
113
+ maxConcurrency?: number;
114
+ readOnlyHint?: boolean;
115
+ }
97
116
  export interface McpConfig {
98
117
  servers: McpServerConfig[];
99
118
  authPresets: McpAuthPresetConfig[];
100
119
  projectRoot?: string;
120
+ trustedWorkspaces?: Record<string, McpWorkspaceTrustEntry[]>;
121
+ workspaceTrustDefault?: McpWorkspaceTrustDefault;
101
122
  envLimits?: Record<string, {
102
123
  effective: number;
103
124
  status: string;
@@ -124,6 +145,12 @@ export interface McpServerStatus {
124
145
  headersHelper?: string;
125
146
  authPreset?: string;
126
147
  timeout?: number;
148
+ supportsParallelToolCalls?: boolean;
149
+ parallelSafety?: {
150
+ supportsParallelToolCalls: boolean;
151
+ provenance: McpParallelSafetyProvenance;
152
+ maxConcurrency?: number;
153
+ };
127
154
  remoteTrust?: McpRemoteTrust;
128
155
  officialRegistry?: McpOfficialRegistryInfo;
129
156
  projectApproval?: McpProjectApprovalStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG","sourcesContent":["/**\n * MCP Types - Model Context Protocol Type Definitions\n *\n * This module defines the core types used throughout the MCP (Model Context\n * Protocol) integration. These types represent server configurations, connection\n * states, and status information.\n *\n * ## Transport Types\n *\n * | Transport | Description |\n * |-----------|------------------------------------------|\n * | stdio | Subprocess communication via stdin/stdout|\n * | http | HTTP-based REST transport |\n * | sse | Server-Sent Events for streaming |\n *\n * ## Configuration Scopes\n *\n * | Scope | Precedence | Description |\n * |------------|------------|------------------------------------|\n * | enterprise | Highest | Organization-wide settings |\n * | plugin | High | Programmatically provided |\n * | project | Medium | Per-project .maestro/mcp.json |\n * | local | Low | Local overrides (git-ignored) |\n * | user | Lowest | User's global settings |\n *\n * ## Server Status\n *\n * The `McpServerStatus` interface tracks:\n * - Connection state (connected/disconnected)\n * - Available tools, resources, and prompts\n * - Error messages if connection failed\n *\n * @module mcp/types\n */\n\nimport type { Tool as McpTool } from \"@modelcontextprotocol/sdk/types.js\";\n\nexport type McpTransport = \"stdio\" | \"http\" | \"sse\";\nexport type McpScope = \"enterprise\" | \"plugin\" | \"project\" | \"local\" | \"user\";\nexport type McpRemoteTrust = \"official\" | \"custom\" | \"unknown\";\nexport type McpProjectApprovalDecision = \"approved\" | \"denied\";\nexport type McpProjectApprovalStatus = \"pending\" | McpProjectApprovalDecision;\n\nexport interface McpOfficialRegistryInfo {\n\tdisplayName?: string;\n\tdirectoryUrl?: string;\n\tdocumentationUrl?: string;\n\tpermissions?: string;\n\tauthorName?: string;\n\turl?: string;\n}\n\nexport interface McpOfficialRegistryUrlOption {\n\turl: string;\n\tlabel?: string;\n\tdescription?: string;\n}\n\nexport interface McpOfficialRegistryEntry extends McpOfficialRegistryInfo {\n\tslug?: string;\n\tserverName?: string;\n\toneLiner?: string;\n\ttransport?: McpTransport;\n\turlOptions?: McpOfficialRegistryUrlOption[];\n\turlRegex?: string;\n\ttoolCount?: number;\n\tpromptCount?: number;\n}\n\nexport interface McpPromptArgument {\n\tname: string;\n\tdescription?: string;\n\trequired?: boolean;\n}\n\nexport interface McpPromptDefinition {\n\tname: string;\n\ttitle?: string;\n\tdescription?: string;\n\targuments?: McpPromptArgument[];\n}\n\nexport interface McpAuthPresetConfig {\n\tname: string;\n\theaders?: Record<string, string>;\n\theadersHelper?: string;\n\tscope?: McpScope;\n}\n\nexport interface McpServerConfig {\n\tname: string;\n\ttransport: McpTransport;\n\t// For stdio transport\n\tcommand?: string;\n\targs?: string[];\n\tenv?: Record<string, string>;\n\tcwd?: string;\n\t// For http/sse transport\n\turl?: string;\n\theaders?: Record<string, string>;\n\theadersHelper?: string;\n\tauthPreset?: string;\n\t// Common options\n\tenabled?: boolean;\n\tdisabled?: boolean;\n\ttimeout?: number;\n\tscope?: McpScope;\n}\n\nexport interface McpConfig {\n\tservers: McpServerConfig[];\n\tauthPresets: McpAuthPresetConfig[];\n\tprojectRoot?: string;\n\tenvLimits?: Record<\n\t\tstring,\n\t\t{ effective: number; status: string; message?: string }\n\t>;\n}\n\nexport interface McpServerStatus {\n\tname: string;\n\tconnected: boolean;\n\terror?: string;\n\tscope?: McpScope;\n\ttransport: McpTransport;\n\ttools: McpTool[];\n\tresources: string[];\n\tprompts: string[];\n\tpromptDetails?: McpPromptDefinition[];\n\tcommand?: string;\n\targs?: string[];\n\tcwd?: string;\n\tenvKeys?: string[];\n\tremoteUrl?: string;\n\tremoteHost?: string;\n\theaderKeys?: string[];\n\theadersHelper?: string;\n\tauthPreset?: string;\n\ttimeout?: number;\n\tremoteTrust?: McpRemoteTrust;\n\tofficialRegistry?: McpOfficialRegistryInfo;\n\tprojectApproval?: McpProjectApprovalStatus;\n}\n\nexport interface McpAuthPresetStatus {\n\tname: string;\n\tscope?: McpScope;\n\theaderKeys: string[];\n\theadersHelper?: string;\n}\n\nexport interface McpManagerStatus {\n\tservers: McpServerStatus[];\n\tauthPresets: McpAuthPresetStatus[];\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG","sourcesContent":["/**\n * MCP Types - Model Context Protocol Type Definitions\n *\n * This module defines the core types used throughout the MCP (Model Context\n * Protocol) integration. These types represent server configurations, connection\n * states, and status information.\n *\n * ## Transport Types\n *\n * | Transport | Description |\n * |-----------|------------------------------------------|\n * | stdio | Subprocess communication via stdin/stdout|\n * | http | HTTP-based REST transport |\n * | sse | Server-Sent Events for streaming |\n *\n * ## Configuration Scopes\n *\n * | Scope | Precedence | Description |\n * |------------|------------|------------------------------------|\n * | enterprise | Highest | Organization-wide settings |\n * | plugin | High | Programmatically provided |\n * | project | Medium | Per-project .maestro/mcp.json |\n * | local | Low | Local overrides (git-ignored) |\n * | user | Lowest | User's global settings |\n *\n * ## Server Status\n *\n * The `McpServerStatus` interface tracks:\n * - Connection state (connected/disconnected)\n * - Available tools, resources, and prompts\n * - Error messages if connection failed\n *\n * @module mcp/types\n */\n\nimport type { Tool as McpTool } from \"@modelcontextprotocol/sdk/types.js\";\n\nexport type McpTransport = \"stdio\" | \"http\" | \"sse\";\nexport type McpScope = \"enterprise\" | \"plugin\" | \"project\" | \"local\" | \"user\";\nexport type McpRemoteTrust = \"official\" | \"custom\" | \"unknown\";\nexport type McpProjectApprovalDecision = \"approved\" | \"denied\";\nexport type McpProjectApprovalStatus = \"pending\" | McpProjectApprovalDecision;\nexport type McpWorkspaceTrustMode = \"trusted\" | \"ask\" | \"blocked\" | \"untrusted\";\nexport type McpWorkspaceTrustDefault = \"trusted\" | \"ask\" | \"untrusted\";\n\nexport interface McpWorkspaceTrustEntry {\n\tworkspaceUri: string;\n\tmode: Exclude<McpWorkspaceTrustMode, \"untrusted\">;\n\tserverFingerprint?: string;\n\tgrantedBy?: string;\n\tgrantedAt?: string;\n\texpiresAt?: string;\n\treason?: string;\n}\n\nexport interface McpOfficialRegistryInfo {\n\tdisplayName?: string;\n\tdirectoryUrl?: string;\n\tdocumentationUrl?: string;\n\tpermissions?: string;\n\tauthorName?: string;\n\turl?: string;\n}\n\nexport interface McpOfficialRegistryUrlOption {\n\turl: string;\n\tlabel?: string;\n\tdescription?: string;\n}\n\nexport interface McpOfficialRegistryEntry extends McpOfficialRegistryInfo {\n\tslug?: string;\n\tserverName?: string;\n\toneLiner?: string;\n\ttransport?: McpTransport;\n\turlOptions?: McpOfficialRegistryUrlOption[];\n\turlRegex?: string;\n\ttoolCount?: number;\n\tpromptCount?: number;\n}\n\nexport interface McpPromptArgument {\n\tname: string;\n\tdescription?: string;\n\trequired?: boolean;\n}\n\nexport interface McpPromptDefinition {\n\tname: string;\n\ttitle?: string;\n\tdescription?: string;\n\targuments?: McpPromptArgument[];\n}\n\nexport interface McpAuthPresetConfig {\n\tname: string;\n\theaders?: Record<string, string>;\n\theadersHelper?: string;\n\tscope?: McpScope;\n}\n\nexport interface McpServerConfig {\n\tname: string;\n\ttransport: McpTransport;\n\t// For stdio transport\n\tcommand?: string;\n\targs?: string[];\n\tenv?: Record<string, string>;\n\tcwd?: string;\n\t// For http/sse transport\n\turl?: string;\n\theaders?: Record<string, string>;\n\theadersHelper?: string;\n\tauthPreset?: string;\n\t// Common options\n\tenabled?: boolean;\n\tdisabled?: boolean;\n\ttimeout?: number;\n\tsupportsParallelToolCalls?: boolean;\n\tscope?: McpScope;\n}\n\nexport type McpParallelSafetyProvenance =\n\t| \"static_config\"\n\t| \"server_capability\"\n\t| \"none\";\n\nexport interface McpToolParallelSafety {\n\tsupportsParallelToolCalls: boolean;\n\tprovenance: McpParallelSafetyProvenance;\n\tmaxConcurrency?: number;\n\treadOnlyHint?: boolean;\n}\n\nexport interface McpConfig {\n\tservers: McpServerConfig[];\n\tauthPresets: McpAuthPresetConfig[];\n\tprojectRoot?: string;\n\ttrustedWorkspaces?: Record<string, McpWorkspaceTrustEntry[]>;\n\tworkspaceTrustDefault?: McpWorkspaceTrustDefault;\n\tenvLimits?: Record<\n\t\tstring,\n\t\t{ effective: number; status: string; message?: string }\n\t>;\n}\n\nexport interface McpServerStatus {\n\tname: string;\n\tconnected: boolean;\n\terror?: string;\n\tscope?: McpScope;\n\ttransport: McpTransport;\n\ttools: McpTool[];\n\tresources: string[];\n\tprompts: string[];\n\tpromptDetails?: McpPromptDefinition[];\n\tcommand?: string;\n\targs?: string[];\n\tcwd?: string;\n\tenvKeys?: string[];\n\tremoteUrl?: string;\n\tremoteHost?: string;\n\theaderKeys?: string[];\n\theadersHelper?: string;\n\tauthPreset?: string;\n\ttimeout?: number;\n\tsupportsParallelToolCalls?: boolean;\n\tparallelSafety?: {\n\t\tsupportsParallelToolCalls: boolean;\n\t\tprovenance: McpParallelSafetyProvenance;\n\t\tmaxConcurrency?: number;\n\t};\n\tremoteTrust?: McpRemoteTrust;\n\tofficialRegistry?: McpOfficialRegistryInfo;\n\tprojectApproval?: McpProjectApprovalStatus;\n}\n\nexport interface McpAuthPresetStatus {\n\tname: string;\n\tscope?: McpScope;\n\theaderKeys: string[];\n\theadersHelper?: string;\n}\n\nexport interface McpManagerStatus {\n\tservers: McpServerStatus[];\n\tauthPresets: McpAuthPresetStatus[];\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import type { ClientToolExecutionService } from "../agent/transport.js";
2
+ import type { McpConfig, McpServerConfig } from "./types.js";
3
+ export declare function resolveMcpWorkspaceUri(workspaceRoot?: string): Promise<string>;
4
+ export declare function ensureMcpWorkspaceTrusted(options: {
5
+ config: McpConfig;
6
+ server: McpServerConfig;
7
+ toolName: string;
8
+ clientToolService?: ClientToolExecutionService;
9
+ }): Promise<void>;
10
+ //# sourceMappingURL=workspace-trust.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-trust.d.ts","sourceRoot":"","sources":["../../src/mcp/workspace-trust.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAIxE,OAAO,KAAK,EACX,SAAS,EACT,eAAe,EAGf,MAAM,YAAY,CAAC;AAgNpB,wBAAsB,sBAAsB,CAC3C,aAAa,SAAgB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAoBjB;AA6DD,wBAAsB,yBAAyB,CAAC,OAAO,EAAE;IACxD,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,0BAA0B,CAAC;CAC/C,GAAG,OAAO,CAAC,IAAI,CAAC,CA0FhB"}
@@ -0,0 +1,295 @@
1
+ import { execFile } from "node:child_process";
2
+ import { createHash, randomUUID } from "node:crypto";
3
+ import { resolve } from "node:path";
4
+ import { promisify } from "node:util";
5
+ import { PATHS } from "../config/constants.js";
6
+ import { readJsonFile, writeJsonFile } from "../utils/fs.js";
7
+ const execFileAsync = promisify(execFile);
8
+ function emptyStore() {
9
+ return {
10
+ version: 1,
11
+ servers: {},
12
+ };
13
+ }
14
+ function isRecord(value) {
15
+ return !!value && typeof value === "object" && !Array.isArray(value);
16
+ }
17
+ function normalizeTrustEntry(value) {
18
+ if (!isRecord(value)) {
19
+ return null;
20
+ }
21
+ const workspaceUri = value.workspaceUri;
22
+ const mode = value.mode;
23
+ if (typeof workspaceUri !== "string" ||
24
+ workspaceUri.trim().length === 0 ||
25
+ (mode !== "trusted" && mode !== "ask" && mode !== "blocked")) {
26
+ return null;
27
+ }
28
+ return {
29
+ workspaceUri: canonicalizeWorkspaceUri(workspaceUri),
30
+ mode,
31
+ serverFingerprint: typeof value.serverFingerprint === "string"
32
+ ? value.serverFingerprint
33
+ : undefined,
34
+ grantedBy: typeof value.grantedBy === "string" ? value.grantedBy : undefined,
35
+ grantedAt: typeof value.grantedAt === "string" ? value.grantedAt : undefined,
36
+ expiresAt: typeof value.expiresAt === "string" ? value.expiresAt : undefined,
37
+ reason: typeof value.reason === "string" ? value.reason : undefined,
38
+ };
39
+ }
40
+ function normalizeStore(value) {
41
+ if (!isRecord(value) || value.version !== 1 || !isRecord(value.servers)) {
42
+ return emptyStore();
43
+ }
44
+ const servers = {};
45
+ for (const [serverName, entries] of Object.entries(value.servers)) {
46
+ if (!Array.isArray(entries)) {
47
+ continue;
48
+ }
49
+ const normalized = entries
50
+ .map(normalizeTrustEntry)
51
+ .filter((entry) => !!entry);
52
+ if (normalized.length > 0) {
53
+ servers[serverName] = normalized;
54
+ }
55
+ }
56
+ return { version: 1, servers };
57
+ }
58
+ function readStore() {
59
+ return normalizeStore(readJsonFile(PATHS.MCP_WORKSPACE_TRUST_FILE, {
60
+ fallback: emptyStore(),
61
+ }));
62
+ }
63
+ function writeStore(store) {
64
+ writeJsonFile(PATHS.MCP_WORKSPACE_TRUST_FILE, store);
65
+ }
66
+ function isExpired(entry, now = Date.now()) {
67
+ if (!entry.expiresAt) {
68
+ return false;
69
+ }
70
+ const expiresAt = Date.parse(entry.expiresAt);
71
+ return !Number.isFinite(expiresAt) || expiresAt <= now;
72
+ }
73
+ function latestMatchingEntry(entries, workspaceUri, options = {}) {
74
+ if (!entries) {
75
+ return undefined;
76
+ }
77
+ const canonicalWorkspaceUri = canonicalizeWorkspaceUri(workspaceUri);
78
+ for (let index = entries.length - 1; index >= 0; index -= 1) {
79
+ const entry = entries[index];
80
+ if (!entry || isExpired(entry)) {
81
+ continue;
82
+ }
83
+ if (canonicalizeWorkspaceUri(entry.workspaceUri) !== canonicalWorkspaceUri) {
84
+ continue;
85
+ }
86
+ if (options.serverFingerprint &&
87
+ entry.serverFingerprint !== options.serverFingerprint) {
88
+ if (entry.serverFingerprint || entry.mode === "trusted") {
89
+ continue;
90
+ }
91
+ }
92
+ return entry;
93
+ }
94
+ return undefined;
95
+ }
96
+ function resolveConfiguredMcpWorkspaceTrust(options) {
97
+ const configuredEntries = options.config.trustedWorkspaces?.[options.serverName];
98
+ const configured = latestMatchingEntry(configuredEntries, options.workspaceUri);
99
+ if (configured) {
100
+ return configured.mode;
101
+ }
102
+ if (options.config.workspaceTrustDefault === "untrusted") {
103
+ return "untrusted";
104
+ }
105
+ const stored = latestMatchingEntry(options.storedTrust?.[options.serverName], options.workspaceUri, { serverFingerprint: options.serverFingerprint });
106
+ if (stored) {
107
+ return stored.mode;
108
+ }
109
+ if (!options.config.workspaceTrustDefault && !configuredEntries?.length) {
110
+ return "trusted";
111
+ }
112
+ return options.config.workspaceTrustDefault ?? "ask";
113
+ }
114
+ function canonicalizeWorkspaceUri(workspaceUri) {
115
+ const trimmed = workspaceUri.trim();
116
+ if (trimmed.startsWith("git:")) {
117
+ return `git:${sanitizeGitRemote(trimmed.slice("git:".length))}`;
118
+ }
119
+ return trimmed;
120
+ }
121
+ function sanitizeGitRemote(remote) {
122
+ const trimmed = remote.trim();
123
+ try {
124
+ const url = new URL(trimmed);
125
+ url.username = "";
126
+ url.password = "";
127
+ url.search = "";
128
+ url.hash = "";
129
+ return url.toString();
130
+ }
131
+ catch {
132
+ return trimmed
133
+ .replace(/^[^/@\s]+@(?=[^/:]+[:/])/, "")
134
+ .replace(/[?#].*$/, "");
135
+ }
136
+ }
137
+ function normalizeFingerprintValue(value) {
138
+ if (Array.isArray(value)) {
139
+ return value.map(normalizeFingerprintValue);
140
+ }
141
+ if (isRecord(value)) {
142
+ return Object.fromEntries(Object.entries(value)
143
+ .filter(([, entryValue]) => entryValue !== undefined)
144
+ .sort(([left], [right]) => left.localeCompare(right))
145
+ .map(([key, entryValue]) => [
146
+ key,
147
+ normalizeFingerprintValue(entryValue),
148
+ ]));
149
+ }
150
+ return value;
151
+ }
152
+ function fingerprintMcpServer(server) {
153
+ const identity = { ...server };
154
+ delete identity.disabled;
155
+ delete identity.enabled;
156
+ delete identity.scope;
157
+ return createHash("sha256")
158
+ .update(JSON.stringify(normalizeFingerprintValue(identity)))
159
+ .digest("hex");
160
+ }
161
+ export async function resolveMcpWorkspaceUri(workspaceRoot = process.cwd()) {
162
+ const root = resolve(workspaceRoot);
163
+ try {
164
+ const { stdout } = await execFileAsync("git", ["-C", root, "config", "--get", "remote.origin.url"], {
165
+ timeout: 1000,
166
+ windowsHide: true,
167
+ encoding: "utf8",
168
+ });
169
+ const remote = stdout.trim();
170
+ if (remote.length > 0) {
171
+ return `git:${sanitizeGitRemote(remote)}`;
172
+ }
173
+ }
174
+ catch {
175
+ // Non-git workspaces fall back to a canonical local path.
176
+ }
177
+ return `file:${root}`;
178
+ }
179
+ function setMcpWorkspaceTrust(options) {
180
+ const store = readStore();
181
+ const workspaceUri = canonicalizeWorkspaceUri(options.workspaceUri);
182
+ const entries = (store.servers[options.serverName] ?? []).filter((entry) => canonicalizeWorkspaceUri(entry.workspaceUri) !== workspaceUri ||
183
+ entry.serverFingerprint !== options.serverFingerprint);
184
+ entries.push({
185
+ workspaceUri,
186
+ mode: options.mode,
187
+ serverFingerprint: options.serverFingerprint,
188
+ grantedBy: options.grantedBy,
189
+ grantedAt: new Date().toISOString(),
190
+ reason: options.reason,
191
+ });
192
+ store.servers[options.serverName] = entries;
193
+ writeStore(store);
194
+ }
195
+ function getDecision(content) {
196
+ const text = content.find((item) => item.type === "text" && typeof item.text === "string")?.text;
197
+ if (!text) {
198
+ return "cancel";
199
+ }
200
+ try {
201
+ const parsed = JSON.parse(text);
202
+ if (!isRecord(parsed)) {
203
+ return "cancel";
204
+ }
205
+ if (parsed.action === "decline" || parsed.action === "cancel") {
206
+ return "cancel";
207
+ }
208
+ const payload = isRecord(parsed.content) ? parsed.content : parsed;
209
+ const candidate = payload.decision ?? payload.choice ?? payload.action;
210
+ if (candidate === "trust_once" ||
211
+ candidate === "trust_always" ||
212
+ candidate === "block" ||
213
+ candidate === "cancel") {
214
+ return candidate;
215
+ }
216
+ }
217
+ catch {
218
+ return "cancel";
219
+ }
220
+ return "cancel";
221
+ }
222
+ export async function ensureMcpWorkspaceTrusted(options) {
223
+ const storedTrust = readStore().servers;
224
+ if (!options.config.workspaceTrustDefault &&
225
+ !options.config.trustedWorkspaces?.[options.server.name]?.length &&
226
+ !storedTrust[options.server.name]?.length) {
227
+ return;
228
+ }
229
+ const workspaceUri = await resolveMcpWorkspaceUri(options.config.projectRoot);
230
+ const serverFingerprint = fingerprintMcpServer(options.server);
231
+ const mode = resolveConfiguredMcpWorkspaceTrust({
232
+ config: options.config,
233
+ serverName: options.server.name,
234
+ workspaceUri,
235
+ serverFingerprint,
236
+ storedTrust,
237
+ });
238
+ if (mode === "trusted") {
239
+ return;
240
+ }
241
+ if (mode === "blocked" || mode === "untrusted") {
242
+ throw new Error(`MCP server "${options.server.name}" is not trusted for workspace ${workspaceUri}.`);
243
+ }
244
+ if (!options.clientToolService) {
245
+ throw new Error(`MCP server "${options.server.name}" requires workspace trust before invoking "${options.toolName}", but no MCP elicitation client is connected.`);
246
+ }
247
+ const requestId = `mcp_trust:${options.server.name}:${options.toolName}:${randomUUID()}`;
248
+ const result = await options.clientToolService.requestExecution(requestId, "mcp_elicitation", {
249
+ serverName: options.server.name,
250
+ requestId,
251
+ mode: "form",
252
+ message: `Trust MCP server "${options.server.name}" for workspace ${workspaceUri} before calling tool "${options.toolName}"?`,
253
+ requestedSchema: {
254
+ type: "object",
255
+ properties: {
256
+ decision: {
257
+ type: "string",
258
+ title: "Decision",
259
+ enum: ["trust_once", "trust_always", "block", "cancel"],
260
+ },
261
+ },
262
+ required: ["decision"],
263
+ },
264
+ });
265
+ if (result.isError) {
266
+ throw new Error(`MCP trust prompt failed for server "${options.server.name}".`);
267
+ }
268
+ const decision = getDecision(result.content);
269
+ if (decision === "trust_once") {
270
+ return;
271
+ }
272
+ if (decision === "trust_always") {
273
+ setMcpWorkspaceTrust({
274
+ serverName: options.server.name,
275
+ workspaceUri,
276
+ mode: "trusted",
277
+ serverFingerprint,
278
+ grantedBy: "user",
279
+ reason: `Accepted MCP tool invocation for ${options.toolName}`,
280
+ });
281
+ return;
282
+ }
283
+ if (decision === "block") {
284
+ setMcpWorkspaceTrust({
285
+ serverName: options.server.name,
286
+ workspaceUri,
287
+ mode: "blocked",
288
+ serverFingerprint,
289
+ grantedBy: "user",
290
+ reason: `Blocked MCP tool invocation for ${options.toolName}`,
291
+ });
292
+ }
293
+ throw new Error(`MCP server "${options.server.name}" was not trusted for workspace ${workspaceUri}.`);
294
+ }
295
+ //# sourceMappingURL=workspace-trust.js.map