@evalops/maestro 0.10.8 → 0.10.11

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 (1009) hide show
  1. package/README.md +3 -1
  2. package/dist/agent/action-approval.d.ts +6 -0
  3. package/dist/agent/action-approval.d.ts.map +1 -1
  4. package/dist/agent/action-approval.js.map +1 -1
  5. package/dist/agent/agent.d.ts +13 -1
  6. package/dist/agent/agent.d.ts.map +1 -1
  7. package/dist/agent/agent.js +368 -1
  8. package/dist/agent/agent.js.map +1 -1
  9. package/dist/agent/auto-compaction.d.ts +4 -4
  10. package/dist/agent/auto-compaction.d.ts.map +1 -1
  11. package/dist/agent/auto-compaction.js.map +1 -1
  12. package/dist/agent/compaction-cleanup.d.ts +2 -0
  13. package/dist/agent/compaction-cleanup.d.ts.map +1 -1
  14. package/dist/agent/compaction-cleanup.js +17 -2
  15. package/dist/agent/compaction-cleanup.js.map +1 -1
  16. package/dist/agent/compaction.d.ts +3 -1
  17. package/dist/agent/compaction.d.ts.map +1 -1
  18. package/dist/agent/compaction.js +10 -2
  19. package/dist/agent/compaction.js.map +1 -1
  20. package/dist/agent/context-manager.d.ts +4 -0
  21. package/dist/agent/context-manager.d.ts.map +1 -1
  22. package/dist/agent/context-manager.js +8 -0
  23. package/dist/agent/context-manager.js.map +1 -1
  24. package/dist/agent/context-providers.d.ts +2 -0
  25. package/dist/agent/context-providers.d.ts.map +1 -1
  26. package/dist/agent/context-providers.js +3 -2
  27. package/dist/agent/context-providers.js.map +1 -1
  28. package/dist/agent/providers/google-gemini-cli.js +17 -5
  29. package/dist/agent/providers/google.js +174 -144
  30. package/dist/agent/providers/openai-codex-responses.d.ts +4 -0
  31. package/dist/agent/providers/openai-codex-responses.d.ts.map +1 -0
  32. package/dist/agent/providers/openai-codex-responses.js +637 -0
  33. package/dist/agent/providers/openai-codex-responses.js.map +1 -0
  34. package/dist/agent/providers/openai-codex-session.d.ts +18 -0
  35. package/dist/agent/providers/openai-codex-session.d.ts.map +1 -0
  36. package/dist/agent/providers/openai-codex-session.js +53 -0
  37. package/dist/agent/providers/openai-codex-session.js.map +1 -0
  38. package/dist/agent/providers/openai-responses-sdk.d.ts.map +1 -1
  39. package/dist/agent/providers/openai-responses-sdk.js +16 -6
  40. package/dist/agent/providers/openai-responses-sdk.js.map +1 -1
  41. package/dist/agent/providers/openai-shared.d.ts +12 -5
  42. package/dist/agent/providers/openai-shared.d.ts.map +1 -1
  43. package/dist/agent/providers/openai-shared.js +291 -2
  44. package/dist/agent/providers/openai-shared.js.map +1 -1
  45. package/dist/agent/providers/openai.d.ts +1 -1
  46. package/dist/agent/providers/openai.d.ts.map +1 -1
  47. package/dist/agent/providers/openai.js +48 -20
  48. package/dist/agent/providers/openai.js.map +1 -1
  49. package/dist/agent/providers/vertex.js +7 -0
  50. package/dist/agent/tracing.d.ts +16 -5
  51. package/dist/agent/tracing.d.ts.map +1 -1
  52. package/dist/agent/tracing.js +44 -2
  53. package/dist/agent/tracing.js.map +1 -1
  54. package/dist/agent/transport/create-provider-stream.d.ts.map +1 -1
  55. package/dist/agent/transport/create-provider-stream.js +9 -0
  56. package/dist/agent/transport/create-provider-stream.js.map +1 -1
  57. package/dist/agent/transport/tool-execution-bridge.d.ts +86 -0
  58. package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -0
  59. package/dist/agent/transport/tool-execution-bridge.js +665 -0
  60. package/dist/agent/transport/tool-execution-bridge.js.map +1 -0
  61. package/dist/agent/transport/tool-execution.d.ts +3 -0
  62. package/dist/agent/transport/tool-execution.d.ts.map +1 -1
  63. package/dist/agent/transport/tool-execution.js +16 -1
  64. package/dist/agent/transport/tool-execution.js.map +1 -1
  65. package/dist/agent/transport/tool-safety-pipeline.d.ts +7 -1
  66. package/dist/agent/transport/tool-safety-pipeline.d.ts.map +1 -1
  67. package/dist/agent/transport/tool-safety-pipeline.js +207 -40
  68. package/dist/agent/transport/tool-safety-pipeline.js.map +1 -1
  69. package/dist/agent/transport/tool-update-queue.d.ts +2 -0
  70. package/dist/agent/transport/tool-update-queue.d.ts.map +1 -1
  71. package/dist/agent/transport/tool-update-queue.js.map +1 -1
  72. package/dist/agent/transport.d.ts +3 -0
  73. package/dist/agent/transport.d.ts.map +1 -1
  74. package/dist/agent/transport.js +96 -16
  75. package/dist/agent/transport.js.map +1 -1
  76. package/dist/agent/types.d.ts +50 -2
  77. package/dist/agent/types.d.ts.map +1 -1
  78. package/dist/agent/types.js.map +1 -1
  79. package/dist/approvals/platform-action-approval.d.ts +32 -0
  80. package/dist/approvals/platform-action-approval.d.ts.map +1 -0
  81. package/dist/approvals/platform-action-approval.js +210 -0
  82. package/dist/approvals/platform-action-approval.js.map +1 -0
  83. package/dist/approvals/service-client.d.ts +56 -0
  84. package/dist/approvals/service-client.d.ts.map +1 -0
  85. package/dist/approvals/service-client.js +316 -0
  86. package/dist/approvals/service-client.js.map +1 -0
  87. package/dist/audit/logger.d.ts +4 -4
  88. package/dist/bootstrap/auth-setup.d.ts +2 -2
  89. package/dist/bootstrap/auth-setup.d.ts.map +1 -1
  90. package/dist/bootstrap/auth-setup.js +4 -7
  91. package/dist/bootstrap/auth-setup.js.map +1 -1
  92. package/dist/cli/args.d.ts +2 -0
  93. package/dist/cli/args.d.ts.map +1 -1
  94. package/dist/cli/args.js +29 -0
  95. package/dist/cli/args.js.map +1 -1
  96. package/dist/cli/commands/codex.d.ts +2 -0
  97. package/dist/cli/commands/codex.d.ts.map +1 -0
  98. package/dist/cli/commands/codex.js +65 -0
  99. package/dist/cli/commands/codex.js.map +1 -0
  100. package/dist/cli/commands/config.js +1 -1
  101. package/dist/cli/commands/config.js.map +1 -1
  102. package/dist/cli/commands/evalops.d.ts +2 -0
  103. package/dist/cli/commands/evalops.d.ts.map +1 -0
  104. package/dist/cli/commands/evalops.js +74 -0
  105. package/dist/cli/commands/evalops.js.map +1 -0
  106. package/dist/cli/commands/hosted-runner.d.ts +23 -0
  107. package/dist/cli/commands/hosted-runner.d.ts.map +1 -0
  108. package/dist/cli/commands/hosted-runner.js +241 -0
  109. package/dist/cli/commands/hosted-runner.js.map +1 -0
  110. package/dist/cli/commands/init.d.ts +4 -0
  111. package/dist/cli/commands/init.d.ts.map +1 -0
  112. package/dist/cli/commands/init.js +140 -0
  113. package/dist/cli/commands/init.js.map +1 -0
  114. package/dist/cli/commands/memory.d.ts.map +1 -1
  115. package/dist/cli/commands/memory.js +23 -30
  116. package/dist/cli/commands/memory.js.map +1 -1
  117. package/dist/cli/commands/remote.d.ts +3 -0
  118. package/dist/cli/commands/remote.d.ts.map +1 -0
  119. package/dist/cli/commands/remote.js +631 -0
  120. package/dist/cli/commands/remote.js.map +1 -0
  121. package/dist/cli/commands/stats.d.ts +7 -0
  122. package/dist/cli/commands/stats.d.ts.map +1 -0
  123. package/dist/cli/commands/stats.js +167 -0
  124. package/dist/cli/commands/stats.js.map +1 -0
  125. package/dist/cli/headless-protocol.d.ts +16 -1
  126. package/dist/cli/headless-protocol.d.ts.map +1 -1
  127. package/dist/cli/headless-protocol.js +60 -4
  128. package/dist/cli/headless-protocol.js.map +1 -1
  129. package/dist/cli/headless.d.ts.map +1 -1
  130. package/dist/cli/headless.js +1 -0
  131. package/dist/cli/headless.js.map +1 -1
  132. package/dist/cli/help.d.ts.map +1 -1
  133. package/dist/cli/help.js +44 -1
  134. package/dist/cli/help.js.map +1 -1
  135. package/dist/cli/jsonl-writer.d.ts.map +1 -1
  136. package/dist/cli/jsonl-writer.js +19 -6
  137. package/dist/cli/jsonl-writer.js.map +1 -1
  138. package/dist/cli-tui/client-tools/client-tool-controller.d.ts.map +1 -1
  139. package/dist/cli-tui/client-tools/client-tool-controller.js +17 -1
  140. package/dist/cli-tui/client-tools/client-tool-controller.js.map +1 -1
  141. package/dist/cli-tui/commands/access-command.js +1 -1
  142. package/dist/cli-tui/commands/access-command.js.map +1 -1
  143. package/dist/cli-tui/commands/audit-command.js +1 -1
  144. package/dist/cli-tui/commands/audit-command.js.map +1 -1
  145. package/dist/cli-tui/commands/command-catalog.d.ts +29 -0
  146. package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -0
  147. package/dist/cli-tui/commands/command-catalog.js +645 -0
  148. package/dist/cli-tui/commands/command-catalog.js.map +1 -0
  149. package/dist/cli-tui/commands/command-registry-adapter.d.ts +12 -0
  150. package/dist/cli-tui/commands/command-registry-adapter.d.ts.map +1 -0
  151. package/dist/cli-tui/commands/command-registry-adapter.js +120 -0
  152. package/dist/cli-tui/commands/command-registry-adapter.js.map +1 -0
  153. package/dist/cli-tui/commands/command-suite-catalog.d.ts +14 -0
  154. package/dist/cli-tui/commands/command-suite-catalog.d.ts.map +1 -0
  155. package/dist/cli-tui/commands/command-suite-catalog.js +147 -0
  156. package/dist/cli-tui/commands/command-suite-catalog.js.map +1 -0
  157. package/dist/cli-tui/commands/{grouped-command-handlers.d.ts → command-suite-handlers.d.ts} +27 -26
  158. package/dist/cli-tui/commands/command-suite-handlers.d.ts.map +1 -0
  159. package/dist/cli-tui/commands/command-suite-handlers.js +110 -0
  160. package/dist/cli-tui/commands/command-suite-handlers.js.map +1 -0
  161. package/dist/cli-tui/commands/hotkeys-command.d.ts +1 -1
  162. package/dist/cli-tui/commands/hotkeys-command.d.ts.map +1 -1
  163. package/dist/cli-tui/commands/hotkeys-command.js +2 -2
  164. package/dist/cli-tui/commands/hotkeys-command.js.map +1 -1
  165. package/dist/cli-tui/commands/limits-command.js +1 -1
  166. package/dist/cli-tui/commands/limits-command.js.map +1 -1
  167. package/dist/cli-tui/commands/pii-command.js +1 -1
  168. package/dist/cli-tui/commands/pii-command.js.map +1 -1
  169. package/dist/cli-tui/commands/registry.d.ts +1 -1
  170. package/dist/cli-tui/commands/registry.d.ts.map +1 -1
  171. package/dist/cli-tui/commands/registry.js +29 -921
  172. package/dist/cli-tui/commands/registry.js.map +1 -1
  173. package/dist/cli-tui/commands/{grouped → subcommands}/auth-commands.d.ts +2 -1
  174. package/dist/cli-tui/commands/subcommands/auth-commands.d.ts.map +1 -0
  175. package/dist/cli-tui/commands/{grouped → subcommands}/auth-commands.js +22 -6
  176. package/dist/cli-tui/commands/subcommands/auth-commands.js.map +1 -0
  177. package/dist/cli-tui/commands/{grouped → subcommands}/config-commands.d.ts +0 -1
  178. package/dist/cli-tui/commands/subcommands/config-commands.d.ts.map +1 -0
  179. package/dist/cli-tui/commands/{grouped → subcommands}/config-commands.js +2 -2
  180. package/dist/cli-tui/commands/subcommands/config-commands.js.map +1 -0
  181. package/dist/cli-tui/commands/{grouped → subcommands}/diag-commands.d.ts +1 -2
  182. package/dist/cli-tui/commands/subcommands/diag-commands.d.ts.map +1 -0
  183. package/dist/cli-tui/commands/{grouped → subcommands}/diag-commands.js +5 -7
  184. package/dist/cli-tui/commands/subcommands/diag-commands.js.map +1 -0
  185. package/dist/cli-tui/commands/{grouped → subcommands}/git-commands.d.ts +0 -2
  186. package/dist/cli-tui/commands/subcommands/git-commands.d.ts.map +1 -0
  187. package/dist/cli-tui/commands/{grouped → subcommands}/git-commands.js +2 -2
  188. package/dist/cli-tui/commands/subcommands/git-commands.js.map +1 -0
  189. package/dist/cli-tui/commands/{grouped → subcommands}/index.d.ts +2 -2
  190. package/dist/cli-tui/commands/subcommands/index.d.ts.map +1 -0
  191. package/dist/cli-tui/commands/{grouped → subcommands}/index.js +2 -2
  192. package/dist/cli-tui/commands/subcommands/index.js.map +1 -0
  193. package/dist/cli-tui/commands/{grouped → subcommands}/safety-commands.d.ts +0 -1
  194. package/dist/cli-tui/commands/subcommands/safety-commands.d.ts.map +1 -0
  195. package/dist/cli-tui/commands/{grouped → subcommands}/safety-commands.js +12 -12
  196. package/dist/cli-tui/commands/subcommands/safety-commands.js.map +1 -0
  197. package/dist/cli-tui/commands/{grouped → subcommands}/session-commands.d.ts +1 -2
  198. package/dist/cli-tui/commands/subcommands/session-commands.d.ts.map +1 -0
  199. package/dist/cli-tui/commands/{grouped → subcommands}/session-commands.js +3 -3
  200. package/dist/cli-tui/commands/subcommands/session-commands.js.map +1 -0
  201. package/dist/cli-tui/commands/{grouped → subcommands}/tools-commands.d.ts +0 -1
  202. package/dist/cli-tui/commands/subcommands/tools-commands.d.ts.map +1 -0
  203. package/dist/cli-tui/commands/{grouped → subcommands}/tools-commands.js +2 -2
  204. package/dist/cli-tui/commands/subcommands/tools-commands.js.map +1 -0
  205. package/dist/cli-tui/commands/{grouped → subcommands}/ui-commands.d.ts +0 -1
  206. package/dist/cli-tui/commands/subcommands/ui-commands.d.ts.map +1 -0
  207. package/dist/cli-tui/commands/{grouped → subcommands}/ui-commands.js +5 -5
  208. package/dist/cli-tui/commands/subcommands/ui-commands.js.map +1 -0
  209. package/dist/cli-tui/commands/{grouped → subcommands}/undo-commands.d.ts +1 -2
  210. package/dist/cli-tui/commands/subcommands/undo-commands.d.ts.map +1 -0
  211. package/dist/cli-tui/commands/{grouped → subcommands}/undo-commands.js +6 -6
  212. package/dist/cli-tui/commands/subcommands/undo-commands.js.map +1 -0
  213. package/dist/cli-tui/commands/subcommands/usage-commands.d.ts.map +1 -0
  214. package/dist/cli-tui/commands/{grouped → subcommands}/usage-commands.js +2 -2
  215. package/dist/cli-tui/commands/subcommands/usage-commands.js.map +1 -0
  216. package/dist/cli-tui/commands/{grouped → subcommands}/utils.d.ts +15 -15
  217. package/dist/cli-tui/commands/subcommands/utils.d.ts.map +1 -0
  218. package/dist/cli-tui/commands/{grouped → subcommands}/utils.js +13 -8
  219. package/dist/cli-tui/commands/subcommands/utils.js.map +1 -0
  220. package/dist/cli-tui/commands/types.d.ts +3 -3
  221. package/dist/cli-tui/commands/types.d.ts.map +1 -1
  222. package/dist/cli-tui/commands/types.js.map +1 -1
  223. package/dist/cli-tui/editor-view.d.ts +1 -1
  224. package/dist/cli-tui/editor-view.d.ts.map +1 -1
  225. package/dist/cli-tui/editor-view.js +1 -1
  226. package/dist/cli-tui/editor-view.js.map +1 -1
  227. package/dist/cli-tui/oauth/oauth-flow-controller.d.ts +4 -0
  228. package/dist/cli-tui/oauth/oauth-flow-controller.d.ts.map +1 -1
  229. package/dist/cli-tui/oauth/oauth-flow-controller.js +76 -5
  230. package/dist/cli-tui/oauth/oauth-flow-controller.js.map +1 -1
  231. package/dist/cli-tui/run/run-controller.d.ts +2 -2
  232. package/dist/cli-tui/run/run-controller.d.ts.map +1 -1
  233. package/dist/cli-tui/run/run-controller.js +3 -2
  234. package/dist/cli-tui/run/run-controller.js.map +1 -1
  235. package/dist/cli-tui/run/run-shell-command.d.ts.map +1 -1
  236. package/dist/cli-tui/run/run-shell-command.js +11 -3
  237. package/dist/cli-tui/run/run-shell-command.js.map +1 -1
  238. package/dist/cli-tui/run/streaming-shell-command.d.ts.map +1 -1
  239. package/dist/cli-tui/run/streaming-shell-command.js +11 -3
  240. package/dist/cli-tui/run/streaming-shell-command.js.map +1 -1
  241. package/dist/cli-tui/selectors/model-selector.d.ts.map +1 -1
  242. package/dist/cli-tui/selectors/model-selector.js +1 -0
  243. package/dist/cli-tui/selectors/model-selector.js.map +1 -1
  244. package/dist/cli-tui/tui-renderer/agent-event-bridge.d.ts +8 -0
  245. package/dist/cli-tui/tui-renderer/agent-event-bridge.d.ts.map +1 -1
  246. package/dist/cli-tui/tui-renderer/agent-event-bridge.js +23 -2
  247. package/dist/cli-tui/tui-renderer/agent-event-bridge.js.map +1 -1
  248. package/dist/cli-tui/tui-renderer/command-registry-options.d.ts +3 -3
  249. package/dist/cli-tui/tui-renderer/command-registry-options.d.ts.map +1 -1
  250. package/dist/cli-tui/tui-renderer/command-registry-options.js +12 -2
  251. package/dist/cli-tui/tui-renderer/command-registry-options.js.map +1 -1
  252. package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts +32 -0
  253. package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts.map +1 -0
  254. package/dist/cli-tui/tui-renderer/command-suite-wiring.js +108 -0
  255. package/dist/cli-tui/tui-renderer/command-suite-wiring.js.map +1 -0
  256. package/dist/cli-tui/tui-renderer/input-controller.d.ts +2 -2
  257. package/dist/cli-tui/tui-renderer/input-controller.d.ts.map +1 -1
  258. package/dist/cli-tui/tui-renderer/input-controller.js +2 -2
  259. package/dist/cli-tui/tui-renderer/input-controller.js.map +1 -1
  260. package/dist/cli-tui/tui-renderer/ui-state-controller.d.ts +1 -1
  261. package/dist/cli-tui/tui-renderer/ui-state-controller.js +1 -1
  262. package/dist/cli-tui/tui-renderer/ui-state-controller.js.map +1 -1
  263. package/dist/cli-tui/tui-renderer.d.ts +1 -3
  264. package/dist/cli-tui/tui-renderer.d.ts.map +1 -1
  265. package/dist/cli-tui/tui-renderer.js +37 -83
  266. package/dist/cli-tui/tui-renderer.js.map +1 -1
  267. package/dist/cli-tui/utils/runtime-badges.d.ts +8 -0
  268. package/dist/cli-tui/utils/runtime-badges.d.ts.map +1 -1
  269. package/dist/cli-tui/utils/runtime-badges.js +58 -0
  270. package/dist/cli-tui/utils/runtime-badges.js.map +1 -1
  271. package/dist/cli.js +42555 -23133
  272. package/dist/cli.js.map +1 -1
  273. package/dist/config/env-vars.d.ts +4 -0
  274. package/dist/config/env-vars.d.ts.map +1 -1
  275. package/dist/config/env-vars.js +4 -0
  276. package/dist/config/env-vars.js.map +1 -1
  277. package/dist/config/feature-flags.d.ts +44 -0
  278. package/dist/config/feature-flags.d.ts.map +1 -1
  279. package/dist/config/feature-flags.js +214 -0
  280. package/dist/config/feature-flags.js.map +1 -1
  281. package/dist/connectors/service-client.d.ts +98 -0
  282. package/dist/connectors/service-client.d.ts.map +1 -0
  283. package/dist/connectors/service-client.js +459 -0
  284. package/dist/connectors/service-client.js.map +1 -0
  285. package/dist/conversation/render-model.d.ts.map +1 -1
  286. package/dist/conversation/render-model.js +53 -3
  287. package/dist/conversation/render-model.js.map +1 -1
  288. package/dist/db/health.d.ts +8 -0
  289. package/dist/db/health.d.ts.map +1 -0
  290. package/dist/db/health.js +64 -0
  291. package/dist/db/health.js.map +1 -0
  292. package/dist/db/migrate.d.ts +301 -0
  293. package/dist/db/migrate.d.ts.map +1 -1
  294. package/dist/db/migrate.js +186 -0
  295. package/dist/db/migrate.js.map +1 -1
  296. package/dist/db/migrations/0000_initial.sql +308 -0
  297. package/dist/db/migrations/0001_shared_sessions.sql +18 -0
  298. package/dist/db/migrations/0002_usage_metrics.sql +28 -0
  299. package/dist/db/migrations/0003_execution_traces.sql +18 -0
  300. package/dist/db/migrations/0004_workspace_config.sql +11 -0
  301. package/dist/db/migrations/0005_revenue_attribution.sql +31 -0
  302. package/dist/db/migrations/0006_hosted_session_storage.sql +51 -0
  303. package/dist/db/migrations/0007_reconcile_legacy_audit_hash_cache.sql +24 -0
  304. package/dist/db/migrations/0008_reconcile_legacy_webhook_deliveries.sql +290 -0
  305. package/dist/db/migrations/meta/0000_snapshot.json +2438 -0
  306. package/dist/db/migrations/meta/_journal.json +69 -0
  307. package/dist/db/schema.d.ts +2232 -844
  308. package/dist/db/schema.d.ts.map +1 -1
  309. package/dist/db/schema.js +187 -1
  310. package/dist/db/schema.js.map +1 -1
  311. package/dist/evalops/agent-bootstrap.d.ts +73 -0
  312. package/dist/evalops/agent-bootstrap.d.ts.map +1 -0
  313. package/dist/evalops/agent-bootstrap.js +380 -0
  314. package/dist/evalops/agent-bootstrap.js.map +1 -0
  315. package/dist/export-html.d.ts.map +1 -1
  316. package/dist/export-html.js +7 -4
  317. package/dist/export-html.js.map +1 -1
  318. package/dist/headless/utility-command-manager.d.ts +2 -1
  319. package/dist/headless/utility-command-manager.d.ts.map +1 -1
  320. package/dist/headless/utility-command-manager.js +12 -6
  321. package/dist/headless/utility-command-manager.js.map +1 -1
  322. package/dist/headless/utility-file-read.d.ts +1 -0
  323. package/dist/headless/utility-file-read.d.ts.map +1 -1
  324. package/dist/headless/utility-file-read.js +5 -1
  325. package/dist/headless/utility-file-read.js.map +1 -1
  326. package/dist/headless/utility-file-search.d.ts +1 -0
  327. package/dist/headless/utility-file-search.d.ts.map +1 -1
  328. package/dist/headless/utility-file-search.js +4 -1
  329. package/dist/headless/utility-file-search.js.map +1 -1
  330. package/dist/headless/utility-file-watch-manager.d.ts +2 -1
  331. package/dist/headless/utility-file-watch-manager.d.ts.map +1 -1
  332. package/dist/headless/utility-file-watch-manager.js +6 -2
  333. package/dist/headless/utility-file-watch-manager.js.map +1 -1
  334. package/dist/headless/workspace-root.d.ts +8 -0
  335. package/dist/headless/workspace-root.d.ts.map +1 -0
  336. package/dist/headless/workspace-root.js +74 -0
  337. package/dist/headless/workspace-root.js.map +1 -0
  338. package/dist/hooks/notification-hooks.d.ts +5 -0
  339. package/dist/hooks/notification-hooks.d.ts.map +1 -1
  340. package/dist/hooks/notification-hooks.js +4 -0
  341. package/dist/hooks/notification-hooks.js.map +1 -1
  342. package/dist/lsp/diagnostic-deltas.d.ts +20 -0
  343. package/dist/lsp/diagnostic-deltas.d.ts.map +1 -0
  344. package/dist/lsp/diagnostic-deltas.js +92 -0
  345. package/dist/lsp/diagnostic-deltas.js.map +1 -0
  346. package/dist/lsp/diagnostic-repair.d.ts +48 -0
  347. package/dist/lsp/diagnostic-repair.d.ts.map +1 -0
  348. package/dist/lsp/diagnostic-repair.js +143 -0
  349. package/dist/lsp/diagnostic-repair.js.map +1 -0
  350. package/dist/main.d.ts.map +1 -1
  351. package/dist/main.js +127 -37
  352. package/dist/main.js.map +1 -1
  353. package/dist/mcp/config.d.ts +4 -2
  354. package/dist/mcp/config.d.ts.map +1 -1
  355. package/dist/mcp/config.js +58 -14
  356. package/dist/mcp/config.js.map +1 -1
  357. package/dist/mcp/index.d.ts +1 -0
  358. package/dist/mcp/index.d.ts.map +1 -1
  359. package/dist/mcp/index.js +1 -0
  360. package/dist/mcp/index.js.map +1 -1
  361. package/dist/mcp/manager.d.ts +1 -0
  362. package/dist/mcp/manager.d.ts.map +1 -1
  363. package/dist/mcp/manager.js +1 -0
  364. package/dist/mcp/manager.js.map +1 -1
  365. package/dist/mcp/platform-plugin.d.ts +3 -0
  366. package/dist/mcp/platform-plugin.d.ts.map +1 -0
  367. package/dist/mcp/platform-plugin.js +117 -0
  368. package/dist/mcp/platform-plugin.js.map +1 -0
  369. package/dist/mcp/tool-bridge.d.ts +15 -0
  370. package/dist/mcp/tool-bridge.d.ts.map +1 -1
  371. package/dist/mcp/tool-bridge.js +194 -6
  372. package/dist/mcp/tool-bridge.js.map +1 -1
  373. package/dist/memory/platform-memory-client.d.ts +130 -0
  374. package/dist/memory/platform-memory-client.d.ts.map +1 -0
  375. package/dist/memory/platform-memory-client.js +330 -0
  376. package/dist/memory/platform-memory-client.js.map +1 -0
  377. package/dist/memory/service-client.d.ts.map +1 -1
  378. package/dist/memory/service-client.js +1 -2
  379. package/dist/memory/service-client.js.map +1 -1
  380. package/dist/models/builtin.d.ts.map +1 -1
  381. package/dist/models/builtin.js +137 -0
  382. package/dist/models/builtin.js.map +1 -1
  383. package/dist/models/config-loader.d.ts +10 -10
  384. package/dist/models/config-loader.d.ts.map +1 -1
  385. package/dist/models/config-loader.js +1 -0
  386. package/dist/models/config-loader.js.map +1 -1
  387. package/dist/models/registry.d.ts +1 -0
  388. package/dist/models/registry.d.ts.map +1 -1
  389. package/dist/models/registry.js +1 -0
  390. package/dist/models/registry.js.map +1 -1
  391. package/dist/oauth/connectors.d.ts +25 -0
  392. package/dist/oauth/connectors.d.ts.map +1 -0
  393. package/dist/oauth/connectors.js +253 -0
  394. package/dist/oauth/connectors.js.map +1 -0
  395. package/dist/oauth/device-identity.d.ts +18 -0
  396. package/dist/oauth/device-identity.d.ts.map +1 -0
  397. package/dist/oauth/device-identity.js +193 -0
  398. package/dist/oauth/device-identity.js.map +1 -0
  399. package/dist/oauth/evalops.d.ts.map +1 -1
  400. package/dist/oauth/evalops.js +74 -15
  401. package/dist/oauth/evalops.js.map +1 -1
  402. package/dist/oauth/index.d.ts +1 -1
  403. package/dist/oauth/index.d.ts.map +1 -1
  404. package/dist/oauth/index.js +31 -1
  405. package/dist/oauth/index.js.map +1 -1
  406. package/dist/oauth/openai-codex.d.ts +16 -0
  407. package/dist/oauth/openai-codex.d.ts.map +1 -0
  408. package/dist/oauth/openai-codex.js +300 -0
  409. package/dist/oauth/openai-codex.js.map +1 -0
  410. package/dist/opentelemetry.d.ts.map +1 -1
  411. package/dist/opentelemetry.js +9 -2
  412. package/dist/opentelemetry.js.map +1 -1
  413. package/dist/platform/agent-runtime-client.d.ts +279 -0
  414. package/dist/platform/agent-runtime-client.d.ts.map +1 -0
  415. package/dist/platform/agent-runtime-client.js +515 -0
  416. package/dist/platform/agent-runtime-client.js.map +1 -0
  417. package/dist/platform/cerebro-facts-client.d.ts +56 -0
  418. package/dist/platform/cerebro-facts-client.d.ts.map +1 -0
  419. package/dist/platform/cerebro-facts-client.js +297 -0
  420. package/dist/platform/cerebro-facts-client.js.map +1 -0
  421. package/dist/platform/client.d.ts +2 -1
  422. package/dist/platform/client.d.ts.map +1 -1
  423. package/dist/platform/client.js +9 -26
  424. package/dist/platform/client.js.map +1 -1
  425. package/dist/platform/core-services.d.ts +128 -0
  426. package/dist/platform/core-services.d.ts.map +1 -1
  427. package/dist/platform/core-services.js +128 -0
  428. package/dist/platform/core-services.js.map +1 -1
  429. package/dist/platform/maestro-timeline-client.d.ts +22 -0
  430. package/dist/platform/maestro-timeline-client.d.ts.map +1 -0
  431. package/dist/platform/maestro-timeline-client.js +373 -0
  432. package/dist/platform/maestro-timeline-client.js.map +1 -0
  433. package/dist/platform/tool-execution-client.d.ts +104 -0
  434. package/dist/platform/tool-execution-client.d.ts.map +1 -0
  435. package/dist/platform/tool-execution-client.js +284 -0
  436. package/dist/platform/tool-execution-client.js.map +1 -0
  437. package/dist/prompts/service-client.d.ts.map +1 -1
  438. package/dist/prompts/service-client.js +5 -2
  439. package/dist/prompts/service-client.js.map +1 -1
  440. package/dist/providers/anthropic-auth.d.ts.map +1 -1
  441. package/dist/providers/anthropic-auth.js +8 -6
  442. package/dist/providers/anthropic-auth.js.map +1 -1
  443. package/dist/providers/api-keys.d.ts +1 -0
  444. package/dist/providers/api-keys.d.ts.map +1 -1
  445. package/dist/providers/api-keys.js +5 -0
  446. package/dist/providers/api-keys.js.map +1 -1
  447. package/dist/providers/auth.d.ts +2 -1
  448. package/dist/providers/auth.d.ts.map +1 -1
  449. package/dist/providers/auth.js +26 -3
  450. package/dist/providers/auth.js.map +1 -1
  451. package/dist/remote-runner/attach-client.d.ts +41 -0
  452. package/dist/remote-runner/attach-client.d.ts.map +1 -0
  453. package/dist/remote-runner/attach-client.js +692 -0
  454. package/dist/remote-runner/attach-client.js.map +1 -0
  455. package/dist/remote-runner/client.d.ts +205 -0
  456. package/dist/remote-runner/client.d.ts.map +1 -0
  457. package/dist/remote-runner/client.js +633 -0
  458. package/dist/remote-runner/client.js.map +1 -0
  459. package/dist/safety/action-firewall.d.ts +6 -1
  460. package/dist/safety/action-firewall.d.ts.map +1 -1
  461. package/dist/safety/action-firewall.js +62 -26
  462. package/dist/safety/action-firewall.js.map +1 -1
  463. package/dist/safety/governance-service-client.d.ts +36 -0
  464. package/dist/safety/governance-service-client.d.ts.map +1 -0
  465. package/dist/safety/governance-service-client.js +279 -0
  466. package/dist/safety/governance-service-client.js.map +1 -0
  467. package/dist/safety/policy.d.ts +13 -2
  468. package/dist/safety/policy.d.ts.map +1 -1
  469. package/dist/safety/policy.js +474 -52
  470. package/dist/safety/policy.js.map +1 -1
  471. package/dist/sdk-tools.d.ts +21 -0
  472. package/dist/sdk-tools.d.ts.map +1 -1
  473. package/dist/sdk-tools.js +16 -0
  474. package/dist/sdk-tools.js.map +1 -1
  475. package/dist/server/app-context.d.ts +25 -0
  476. package/dist/server/app-context.d.ts.map +1 -1
  477. package/dist/server/app-context.js.map +1 -1
  478. package/dist/server/approval-service.d.ts +7 -8
  479. package/dist/server/approval-service.d.ts.map +1 -1
  480. package/dist/server/approval-service.js +12 -24
  481. package/dist/server/approval-service.js.map +1 -1
  482. package/dist/server/authz.d.ts +23 -2
  483. package/dist/server/authz.d.ts.map +1 -1
  484. package/dist/server/authz.js +153 -17
  485. package/dist/server/authz.js.map +1 -1
  486. package/dist/server/handlers/approvals.d.ts.map +1 -1
  487. package/dist/server/handlers/approvals.js +3 -10
  488. package/dist/server/handlers/approvals.js.map +1 -1
  489. package/dist/server/handlers/branch.d.ts.map +1 -1
  490. package/dist/server/handlers/branch.js +29 -20
  491. package/dist/server/handlers/branch.js.map +1 -1
  492. package/dist/server/handlers/bridge.d.ts.map +1 -1
  493. package/dist/server/handlers/bridge.js +3 -2
  494. package/dist/server/handlers/bridge.js.map +1 -1
  495. package/dist/server/handlers/chat-ws.d.ts.map +1 -1
  496. package/dist/server/handlers/chat-ws.js +23 -31
  497. package/dist/server/handlers/chat-ws.js.map +1 -1
  498. package/dist/server/handlers/chat.d.ts.map +1 -1
  499. package/dist/server/handlers/chat.js +105 -46
  500. package/dist/server/handlers/chat.js.map +1 -1
  501. package/dist/server/handlers/compliance.d.ts +3 -0
  502. package/dist/server/handlers/compliance.d.ts.map +1 -0
  503. package/dist/server/handlers/compliance.js +53 -0
  504. package/dist/server/handlers/compliance.js.map +1 -0
  505. package/dist/server/handlers/context.d.ts.map +1 -1
  506. package/dist/server/handlers/context.js +3 -8
  507. package/dist/server/handlers/context.js.map +1 -1
  508. package/dist/server/handlers/fleet.d.ts +4 -0
  509. package/dist/server/handlers/fleet.d.ts.map +1 -0
  510. package/dist/server/handlers/fleet.js +9 -0
  511. package/dist/server/handlers/fleet.js.map +1 -0
  512. package/dist/server/handlers/headless-sessions.d.ts +4 -0
  513. package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
  514. package/dist/server/handlers/headless-sessions.js +168 -3
  515. package/dist/server/handlers/headless-sessions.js.map +1 -1
  516. package/dist/server/handlers/health.d.ts +31 -2
  517. package/dist/server/handlers/health.d.ts.map +1 -1
  518. package/dist/server/handlers/health.js +82 -8
  519. package/dist/server/handlers/health.js.map +1 -1
  520. package/dist/server/handlers/hosted-runner-drain.d.ts +128 -0
  521. package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -0
  522. package/dist/server/handlers/hosted-runner-drain.js +373 -0
  523. package/dist/server/handlers/hosted-runner-drain.js.map +1 -0
  524. package/dist/server/handlers/hosted-runner-identity.d.ts +17 -0
  525. package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -0
  526. package/dist/server/handlers/hosted-runner-identity.js +39 -0
  527. package/dist/server/handlers/hosted-runner-identity.js.map +1 -0
  528. package/dist/server/handlers/intelligent-router.d.ts +3 -0
  529. package/dist/server/handlers/intelligent-router.d.ts.map +1 -0
  530. package/dist/server/handlers/intelligent-router.js +141 -0
  531. package/dist/server/handlers/intelligent-router.js.map +1 -0
  532. package/dist/server/handlers/models.d.ts.map +1 -1
  533. package/dist/server/handlers/models.js +14 -0
  534. package/dist/server/handlers/models.js.map +1 -1
  535. package/dist/server/handlers/pending-requests.d.ts +8 -0
  536. package/dist/server/handlers/pending-requests.d.ts.map +1 -0
  537. package/dist/server/handlers/pending-requests.js +149 -0
  538. package/dist/server/handlers/pending-requests.js.map +1 -0
  539. package/dist/server/handlers/revenue-attribution.d.ts +3 -0
  540. package/dist/server/handlers/revenue-attribution.d.ts.map +1 -0
  541. package/dist/server/handlers/revenue-attribution.js +45 -0
  542. package/dist/server/handlers/revenue-attribution.js.map +1 -0
  543. package/dist/server/handlers/runtime-app-server-ws.d.ts +10 -0
  544. package/dist/server/handlers/runtime-app-server-ws.d.ts.map +1 -0
  545. package/dist/server/handlers/runtime-app-server-ws.js +206 -0
  546. package/dist/server/handlers/runtime-app-server-ws.js.map +1 -0
  547. package/dist/server/handlers/session-artifacts.js +2 -2
  548. package/dist/server/handlers/session-artifacts.js.map +1 -1
  549. package/dist/server/handlers/session-attachments.js +3 -3
  550. package/dist/server/handlers/session-attachments.js.map +1 -1
  551. package/dist/server/handlers/session-timeline.d.ts +11 -0
  552. package/dist/server/handlers/session-timeline.d.ts.map +1 -0
  553. package/dist/server/handlers/session-timeline.js +77 -0
  554. package/dist/server/handlers/session-timeline.js.map +1 -0
  555. package/dist/server/handlers/sessions.d.ts +11 -0
  556. package/dist/server/handlers/sessions.d.ts.map +1 -1
  557. package/dist/server/handlers/sessions.js +68 -100
  558. package/dist/server/handlers/sessions.js.map +1 -1
  559. package/dist/server/handlers/traces.d.ts +3 -0
  560. package/dist/server/handlers/traces.d.ts.map +1 -0
  561. package/dist/server/handlers/traces.js +60 -0
  562. package/dist/server/handlers/traces.js.map +1 -0
  563. package/dist/server/handlers/usage-analytics.d.ts +3 -0
  564. package/dist/server/handlers/usage-analytics.d.ts.map +1 -0
  565. package/dist/server/handlers/usage-analytics.js +40 -0
  566. package/dist/server/handlers/usage-analytics.js.map +1 -0
  567. package/dist/server/handlers/workspace-config.d.ts +3 -0
  568. package/dist/server/handlers/workspace-config.d.ts.map +1 -0
  569. package/dist/server/handlers/workspace-config.js +62 -0
  570. package/dist/server/handlers/workspace-config.js.map +1 -0
  571. package/dist/server/headless-in-process-host.d.ts +8 -1
  572. package/dist/server/headless-in-process-host.d.ts.map +1 -1
  573. package/dist/server/headless-in-process-host.js +6 -0
  574. package/dist/server/headless-in-process-host.js.map +1 -1
  575. package/dist/server/headless-runtime-service.d.ts +99 -1
  576. package/dist/server/headless-runtime-service.d.ts.map +1 -1
  577. package/dist/server/headless-runtime-service.js +286 -23
  578. package/dist/server/headless-runtime-service.js.map +1 -1
  579. package/dist/server/hosted-session-manager.d.ts +103 -0
  580. package/dist/server/hosted-session-manager.d.ts.map +1 -0
  581. package/dist/server/hosted-session-manager.js +629 -0
  582. package/dist/server/hosted-session-manager.js.map +1 -0
  583. package/dist/server/pending-request-payload.d.ts +4 -0
  584. package/dist/server/pending-request-payload.d.ts.map +1 -0
  585. package/dist/server/pending-request-payload.js +107 -0
  586. package/dist/server/pending-request-payload.js.map +1 -0
  587. package/dist/server/request-context.d.ts +4 -0
  588. package/dist/server/request-context.d.ts.map +1 -1
  589. package/dist/server/request-context.js +9 -0
  590. package/dist/server/request-context.js.map +1 -1
  591. package/dist/server/routes.d.ts.map +1 -1
  592. package/dist/server/routes.js +149 -1
  593. package/dist/server/routes.js.map +1 -1
  594. package/dist/server/runtime-ws-access.d.ts +16 -0
  595. package/dist/server/runtime-ws-access.d.ts.map +1 -0
  596. package/dist/server/runtime-ws-access.js +21 -0
  597. package/dist/server/runtime-ws-access.js.map +1 -0
  598. package/dist/server/server-middlewares.d.ts +1 -1
  599. package/dist/server/server-middlewares.d.ts.map +1 -1
  600. package/dist/server/server-middlewares.js +35 -27
  601. package/dist/server/server-middlewares.js.map +1 -1
  602. package/dist/server/server-request-manager.d.ts +8 -27
  603. package/dist/server/server-request-manager.d.ts.map +1 -1
  604. package/dist/server/server-request-manager.js +7 -0
  605. package/dist/server/server-request-manager.js.map +1 -1
  606. package/dist/server/server-utils.d.ts +2 -1
  607. package/dist/server/server-utils.d.ts.map +1 -1
  608. package/dist/server/server-utils.js +11 -1
  609. package/dist/server/server-utils.js.map +1 -1
  610. package/dist/server/session-event-env.d.ts +2 -0
  611. package/dist/server/session-event-env.d.ts.map +1 -0
  612. package/dist/server/session-event-env.js +8 -0
  613. package/dist/server/session-event-env.js.map +1 -0
  614. package/dist/server/session-initialization.d.ts +25 -4
  615. package/dist/server/session-initialization.d.ts.map +1 -1
  616. package/dist/server/session-initialization.js +22 -5
  617. package/dist/server/session-initialization.js.map +1 -1
  618. package/dist/server/session-scope.d.ts +4 -0
  619. package/dist/server/session-scope.d.ts.map +1 -1
  620. package/dist/server/session-scope.js +44 -4
  621. package/dist/server/session-scope.js.map +1 -1
  622. package/dist/server/session-timeline.d.ts +13 -0
  623. package/dist/server/session-timeline.d.ts.map +1 -0
  624. package/dist/server/session-timeline.js +566 -0
  625. package/dist/server/session-timeline.js.map +1 -0
  626. package/dist/services/compliance/controls.d.ts +6 -0
  627. package/dist/services/compliance/controls.d.ts.map +1 -0
  628. package/dist/services/compliance/controls.js +113 -0
  629. package/dist/services/compliance/controls.js.map +1 -0
  630. package/dist/services/compliance/index.d.ts +6 -0
  631. package/dist/services/compliance/index.d.ts.map +1 -0
  632. package/dist/services/compliance/index.js +5 -0
  633. package/dist/services/compliance/index.js.map +1 -0
  634. package/dist/services/compliance/normalize.d.ts +23 -0
  635. package/dist/services/compliance/normalize.d.ts.map +1 -0
  636. package/dist/services/compliance/normalize.js +226 -0
  637. package/dist/services/compliance/normalize.js.map +1 -0
  638. package/dist/services/compliance/recorder.d.ts +22 -0
  639. package/dist/services/compliance/recorder.d.ts.map +1 -0
  640. package/dist/services/compliance/recorder.js +89 -0
  641. package/dist/services/compliance/recorder.js.map +1 -0
  642. package/dist/services/compliance/service.d.ts +24 -0
  643. package/dist/services/compliance/service.d.ts.map +1 -0
  644. package/dist/services/compliance/service.js +426 -0
  645. package/dist/services/compliance/service.js.map +1 -0
  646. package/dist/services/compliance/types.d.ts +185 -0
  647. package/dist/services/compliance/types.d.ts.map +1 -0
  648. package/dist/services/compliance/types.js +2 -0
  649. package/dist/services/compliance/types.js.map +1 -0
  650. package/dist/services/intelligent-router/index.d.ts +5 -0
  651. package/dist/services/intelligent-router/index.d.ts.map +1 -0
  652. package/dist/services/intelligent-router/index.js +5 -0
  653. package/dist/services/intelligent-router/index.js.map +1 -0
  654. package/dist/services/intelligent-router/normalize.d.ts +9 -0
  655. package/dist/services/intelligent-router/normalize.d.ts.map +1 -0
  656. package/dist/services/intelligent-router/normalize.js +169 -0
  657. package/dist/services/intelligent-router/normalize.js.map +1 -0
  658. package/dist/services/intelligent-router/recorder.d.ts +24 -0
  659. package/dist/services/intelligent-router/recorder.d.ts.map +1 -0
  660. package/dist/services/intelligent-router/recorder.js +98 -0
  661. package/dist/services/intelligent-router/recorder.js.map +1 -0
  662. package/dist/services/intelligent-router/service.d.ts +22 -0
  663. package/dist/services/intelligent-router/service.d.ts.map +1 -0
  664. package/dist/services/intelligent-router/service.js +328 -0
  665. package/dist/services/intelligent-router/service.js.map +1 -0
  666. package/dist/services/intelligent-router/types.d.ts +98 -0
  667. package/dist/services/intelligent-router/types.d.ts.map +1 -0
  668. package/dist/services/intelligent-router/types.js +7 -0
  669. package/dist/services/intelligent-router/types.js.map +1 -0
  670. package/dist/services/revenue-attribution/index.d.ts +4 -0
  671. package/dist/services/revenue-attribution/index.d.ts.map +1 -0
  672. package/dist/services/revenue-attribution/index.js +4 -0
  673. package/dist/services/revenue-attribution/index.js.map +1 -0
  674. package/dist/services/revenue-attribution/normalize.d.ts +13 -0
  675. package/dist/services/revenue-attribution/normalize.d.ts.map +1 -0
  676. package/dist/services/revenue-attribution/normalize.js +155 -0
  677. package/dist/services/revenue-attribution/normalize.js.map +1 -0
  678. package/dist/services/revenue-attribution/service.d.ts +21 -0
  679. package/dist/services/revenue-attribution/service.d.ts.map +1 -0
  680. package/dist/services/revenue-attribution/service.js +248 -0
  681. package/dist/services/revenue-attribution/service.js.map +1 -0
  682. package/dist/services/revenue-attribution/types.d.ts +96 -0
  683. package/dist/services/revenue-attribution/types.d.ts.map +1 -0
  684. package/dist/services/revenue-attribution/types.js +7 -0
  685. package/dist/services/revenue-attribution/types.js.map +1 -0
  686. package/dist/services/traces/index.d.ts +5 -0
  687. package/dist/services/traces/index.d.ts.map +1 -0
  688. package/dist/services/traces/index.js +4 -0
  689. package/dist/services/traces/index.js.map +1 -0
  690. package/dist/services/traces/normalize.d.ts +20 -0
  691. package/dist/services/traces/normalize.d.ts.map +1 -0
  692. package/dist/services/traces/normalize.js +261 -0
  693. package/dist/services/traces/normalize.js.map +1 -0
  694. package/dist/services/traces/otel.d.ts +3 -0
  695. package/dist/services/traces/otel.d.ts.map +1 -0
  696. package/dist/services/traces/otel.js +173 -0
  697. package/dist/services/traces/otel.js.map +1 -0
  698. package/dist/services/traces/service.d.ts +17 -0
  699. package/dist/services/traces/service.d.ts.map +1 -0
  700. package/dist/services/traces/service.js +197 -0
  701. package/dist/services/traces/service.js.map +1 -0
  702. package/dist/services/traces/types.d.ts +130 -0
  703. package/dist/services/traces/types.d.ts.map +1 -0
  704. package/dist/services/traces/types.js +8 -0
  705. package/dist/services/traces/types.js.map +1 -0
  706. package/dist/services/usage-analytics/aggregation.d.ts +18 -0
  707. package/dist/services/usage-analytics/aggregation.d.ts.map +1 -0
  708. package/dist/services/usage-analytics/aggregation.js +130 -0
  709. package/dist/services/usage-analytics/aggregation.js.map +1 -0
  710. package/dist/services/usage-analytics/index.d.ts +5 -0
  711. package/dist/services/usage-analytics/index.d.ts.map +1 -0
  712. package/dist/services/usage-analytics/index.js +4 -0
  713. package/dist/services/usage-analytics/index.js.map +1 -0
  714. package/dist/services/usage-analytics/recorder.d.ts +16 -0
  715. package/dist/services/usage-analytics/recorder.d.ts.map +1 -0
  716. package/dist/services/usage-analytics/recorder.js +128 -0
  717. package/dist/services/usage-analytics/recorder.js.map +1 -0
  718. package/dist/services/usage-analytics/service.d.ts +15 -0
  719. package/dist/services/usage-analytics/service.d.ts.map +1 -0
  720. package/dist/services/usage-analytics/service.js +210 -0
  721. package/dist/services/usage-analytics/service.js.map +1 -0
  722. package/dist/services/usage-analytics/types.d.ts +80 -0
  723. package/dist/services/usage-analytics/types.d.ts.map +1 -0
  724. package/dist/services/usage-analytics/types.js +2 -0
  725. package/dist/services/usage-analytics/types.js.map +1 -0
  726. package/dist/services/workspace-config/index.d.ts +6 -0
  727. package/dist/services/workspace-config/index.d.ts.map +1 -0
  728. package/dist/services/workspace-config/index.js +5 -0
  729. package/dist/services/workspace-config/index.js.map +1 -0
  730. package/dist/services/workspace-config/middleware.d.ts +5 -0
  731. package/dist/services/workspace-config/middleware.d.ts.map +1 -0
  732. package/dist/services/workspace-config/middleware.js +98 -0
  733. package/dist/services/workspace-config/middleware.js.map +1 -0
  734. package/dist/services/workspace-config/normalize.d.ts +17 -0
  735. package/dist/services/workspace-config/normalize.d.ts.map +1 -0
  736. package/dist/services/workspace-config/normalize.js +148 -0
  737. package/dist/services/workspace-config/normalize.js.map +1 -0
  738. package/dist/services/workspace-config/policy.d.ts +16 -0
  739. package/dist/services/workspace-config/policy.d.ts.map +1 -0
  740. package/dist/services/workspace-config/policy.js +77 -0
  741. package/dist/services/workspace-config/policy.js.map +1 -0
  742. package/dist/services/workspace-config/service.d.ts +20 -0
  743. package/dist/services/workspace-config/service.d.ts.map +1 -0
  744. package/dist/services/workspace-config/service.js +162 -0
  745. package/dist/services/workspace-config/service.js.map +1 -0
  746. package/dist/services/workspace-config/types.d.ts +71 -0
  747. package/dist/services/workspace-config/types.d.ts.map +1 -0
  748. package/dist/services/workspace-config/types.js +2 -0
  749. package/dist/services/workspace-config/types.js.map +1 -0
  750. package/dist/session/manager.d.ts.map +1 -1
  751. package/dist/session/manager.js +10 -0
  752. package/dist/session/manager.js.map +1 -1
  753. package/dist/session/migration.d.ts.map +1 -1
  754. package/dist/session/migration.js +2 -1
  755. package/dist/session/migration.js.map +1 -1
  756. package/dist/session/session-memory.d.ts.map +1 -1
  757. package/dist/session/session-memory.js +7 -1
  758. package/dist/session/session-memory.js.map +1 -1
  759. package/dist/session/types.d.ts +1 -2
  760. package/dist/session/types.d.ts.map +1 -1
  761. package/dist/session/types.js +1 -22
  762. package/dist/session/types.js.map +1 -1
  763. package/dist/session/wire-format.d.ts +7 -0
  764. package/dist/session/wire-format.d.ts.map +1 -0
  765. package/dist/session/wire-format.generated.d.ts +95 -0
  766. package/dist/session/wire-format.generated.d.ts.map +1 -0
  767. package/dist/session/wire-format.generated.js +111 -0
  768. package/dist/session/wire-format.generated.js.map +1 -0
  769. package/dist/session/wire-format.js +145 -0
  770. package/dist/session/wire-format.js.map +1 -0
  771. package/dist/shared-memory/client.d.ts.map +1 -1
  772. package/dist/shared-memory/client.js +22 -22
  773. package/dist/shared-memory/client.js.map +1 -1
  774. package/dist/skills/artifact-metadata.d.ts +16 -0
  775. package/dist/skills/artifact-metadata.d.ts.map +1 -0
  776. package/dist/skills/artifact-metadata.js +86 -0
  777. package/dist/skills/artifact-metadata.js.map +1 -0
  778. package/dist/skills/loader.d.ts +2 -2
  779. package/dist/skills/loader.d.ts.map +1 -1
  780. package/dist/skills/loader.js +1 -0
  781. package/dist/skills/loader.js.map +1 -1
  782. package/dist/skills/service-client.d.ts +42 -0
  783. package/dist/skills/service-client.d.ts.map +1 -0
  784. package/dist/skills/service-client.js +258 -0
  785. package/dist/skills/service-client.js.map +1 -0
  786. package/dist/skills/tool.d.ts +3 -0
  787. package/dist/skills/tool.d.ts.map +1 -1
  788. package/dist/skills/tool.js +67 -5
  789. package/dist/skills/tool.js.map +1 -1
  790. package/dist/telemetry/index.d.ts +4 -0
  791. package/dist/telemetry/index.d.ts.map +1 -1
  792. package/dist/telemetry/index.js +5 -0
  793. package/dist/telemetry/index.js.map +1 -1
  794. package/dist/telemetry/maestro-event-bus.d.ts +440 -0
  795. package/dist/telemetry/maestro-event-bus.d.ts.map +1 -0
  796. package/dist/telemetry/maestro-event-bus.js +784 -0
  797. package/dist/telemetry/maestro-event-bus.js.map +1 -0
  798. package/dist/telemetry/maestro-event-catalog.d.ts +48 -0
  799. package/dist/telemetry/maestro-event-catalog.d.ts.map +1 -0
  800. package/dist/telemetry/maestro-event-catalog.js +69 -0
  801. package/dist/telemetry/maestro-event-catalog.js.map +1 -0
  802. package/dist/telemetry/maestro-platform-replay-fixture.d.ts +24 -0
  803. package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -0
  804. package/dist/telemetry/maestro-platform-replay-fixture.js +400 -0
  805. package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -0
  806. package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts +29 -0
  807. package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts.map +1 -0
  808. package/dist/telemetry/maestro-publisher-conformance-fixture.js +240 -0
  809. package/dist/telemetry/maestro-publisher-conformance-fixture.js.map +1 -0
  810. package/dist/telemetry/meter-service-client.d.ts +0 -33
  811. package/dist/telemetry/meter-service-client.d.ts.map +1 -1
  812. package/dist/telemetry/meter-service-client.js +22 -50
  813. package/dist/telemetry/meter-service-client.js.map +1 -1
  814. package/dist/telemetry/turn-tracker.d.ts.map +1 -1
  815. package/dist/telemetry/turn-tracker.js +5 -5
  816. package/dist/telemetry/turn-tracker.js.map +1 -1
  817. package/dist/telemetry/wide-events.d.ts +8 -0
  818. package/dist/telemetry/wide-events.d.ts.map +1 -1
  819. package/dist/telemetry/wide-events.js +28 -0
  820. package/dist/telemetry/wide-events.js.map +1 -1
  821. package/dist/telemetry.d.ts +1 -1
  822. package/dist/telemetry.d.ts.map +1 -1
  823. package/dist/telemetry.js +14 -4
  824. package/dist/telemetry.js.map +1 -1
  825. package/dist/timeline/redaction.d.ts +5 -0
  826. package/dist/timeline/redaction.d.ts.map +1 -0
  827. package/dist/timeline/redaction.js +119 -0
  828. package/dist/timeline/redaction.js.map +1 -0
  829. package/dist/tools/ask-user.d.ts +26 -0
  830. package/dist/tools/ask-user.d.ts.map +1 -1
  831. package/dist/tools/ask-user.js +33 -1
  832. package/dist/tools/ask-user.js.map +1 -1
  833. package/dist/tools/background/task-types.d.ts +1 -1
  834. package/dist/tools/edit.d.ts +2 -0
  835. package/dist/tools/edit.d.ts.map +1 -1
  836. package/dist/tools/edit.js +27 -7
  837. package/dist/tools/edit.js.map +1 -1
  838. package/dist/tools/index.d.ts +9 -0
  839. package/dist/tools/index.d.ts.map +1 -1
  840. package/dist/tools/pipeline.d.ts.map +1 -1
  841. package/dist/tools/pipeline.js +16 -7
  842. package/dist/tools/pipeline.js.map +1 -1
  843. package/dist/tools/write.d.ts +2 -0
  844. package/dist/tools/write.d.ts.map +1 -1
  845. package/dist/tools/write.js +24 -6
  846. package/dist/tools/write.js.map +1 -1
  847. package/dist/tracking/cost-tracker.d.ts +15 -12
  848. package/dist/tracking/cost-tracker.d.ts.map +1 -1
  849. package/dist/tracking/cost-tracker.js +29 -40
  850. package/dist/tracking/cost-tracker.js.map +1 -1
  851. package/dist/utils/checkpoint-profiler.d.ts +29 -0
  852. package/dist/utils/checkpoint-profiler.d.ts.map +1 -0
  853. package/dist/utils/checkpoint-profiler.js +118 -0
  854. package/dist/utils/checkpoint-profiler.js.map +1 -0
  855. package/dist/utils/downstream-http.d.ts +21 -0
  856. package/dist/utils/downstream-http.d.ts.map +1 -0
  857. package/dist/utils/downstream-http.js +151 -0
  858. package/dist/utils/downstream-http.js.map +1 -0
  859. package/dist/utils/downstream.d.ts +18 -0
  860. package/dist/utils/downstream.d.ts.map +1 -0
  861. package/dist/utils/downstream.js +47 -0
  862. package/dist/utils/downstream.js.map +1 -0
  863. package/dist/utils/logger.d.ts +3 -1
  864. package/dist/utils/logger.d.ts.map +1 -1
  865. package/dist/utils/logger.js +12 -1
  866. package/dist/utils/logger.js.map +1 -1
  867. package/dist/utils/oauth-http.d.ts +8 -0
  868. package/dist/utils/oauth-http.d.ts.map +1 -0
  869. package/dist/utils/oauth-http.js +41 -0
  870. package/dist/utils/oauth-http.js.map +1 -0
  871. package/dist/utils/path-utils.d.ts +2 -0
  872. package/dist/utils/path-utils.d.ts.map +1 -0
  873. package/dist/utils/path-utils.js +12 -0
  874. package/dist/utils/path-utils.js.map +1 -0
  875. package/dist/utils/path-validation.d.ts +1 -1
  876. package/dist/utils/path-validation.d.ts.map +1 -1
  877. package/dist/utils/path-validation.js +3 -3
  878. package/dist/utils/path-validation.js.map +1 -1
  879. package/dist/version.json +2 -2
  880. package/dist/web-server.d.ts +7 -1
  881. package/dist/web-server.d.ts.map +1 -1
  882. package/dist/web-server.js +117 -15
  883. package/dist/web-server.js.map +1 -1
  884. package/dist/webhooks/delivery.d.ts.map +1 -1
  885. package/dist/webhooks/delivery.js +9 -12
  886. package/dist/webhooks/delivery.js.map +1 -1
  887. package/node_modules/@bufbuild/protobuf/dist/cjs/descriptors.d.ts +12 -5
  888. package/node_modules/@bufbuild/protobuf/dist/cjs/from-binary.js +7 -7
  889. package/node_modules/@bufbuild/protobuf/dist/cjs/from-json.d.ts +1 -1
  890. package/node_modules/@bufbuild/protobuf/dist/cjs/from-json.js +1 -1
  891. package/node_modules/@bufbuild/protobuf/dist/cjs/reflect/path.d.ts +1 -1
  892. package/node_modules/@bufbuild/protobuf/dist/cjs/registry.js +24 -1
  893. package/node_modules/@bufbuild/protobuf/dist/cjs/to-json.d.ts +1 -1
  894. package/node_modules/@bufbuild/protobuf/dist/cjs/to-json.js +9 -10
  895. package/node_modules/@bufbuild/protobuf/dist/cjs/types.d.ts +1 -1
  896. package/node_modules/@bufbuild/protobuf/dist/cjs/wire/binary-encoding.d.ts +9 -7
  897. package/node_modules/@bufbuild/protobuf/dist/cjs/wire/binary-encoding.js +18 -8
  898. package/node_modules/@bufbuild/protobuf/dist/cjs/wire/text-encoding.d.ts +4 -2
  899. package/node_modules/@bufbuild/protobuf/dist/cjs/wire/text-encoding.js +8 -1
  900. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/api_pb.d.ts +1 -1
  901. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +2 -2
  902. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +37 -23
  903. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.js +1 -1
  904. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.d.ts +32 -36
  905. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/go_features_pb.d.ts +65 -0
  906. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/go_features_pb.js +38 -2
  907. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.d.ts +5 -5
  908. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/gen/google/protobuf/type_pb.d.ts +3 -3
  909. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/wrappers.d.ts +10 -0
  910. package/node_modules/@bufbuild/protobuf/dist/cjs/wkt/wrappers.js +24 -0
  911. package/node_modules/@bufbuild/protobuf/dist/esm/descriptors.d.ts +12 -5
  912. package/node_modules/@bufbuild/protobuf/dist/esm/from-binary.js +7 -7
  913. package/node_modules/@bufbuild/protobuf/dist/esm/from-json.d.ts +1 -1
  914. package/node_modules/@bufbuild/protobuf/dist/esm/from-json.js +2 -2
  915. package/node_modules/@bufbuild/protobuf/dist/esm/reflect/path.d.ts +1 -1
  916. package/node_modules/@bufbuild/protobuf/dist/esm/registry.js +24 -1
  917. package/node_modules/@bufbuild/protobuf/dist/esm/to-json.d.ts +1 -1
  918. package/node_modules/@bufbuild/protobuf/dist/esm/to-json.js +10 -11
  919. package/node_modules/@bufbuild/protobuf/dist/esm/types.d.ts +1 -1
  920. package/node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.d.ts +9 -7
  921. package/node_modules/@bufbuild/protobuf/dist/esm/wire/binary-encoding.js +18 -8
  922. package/node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.d.ts +4 -2
  923. package/node_modules/@bufbuild/protobuf/dist/esm/wire/text-encoding.js +8 -1
  924. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/api_pb.d.ts +1 -1
  925. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +2 -2
  926. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +37 -23
  927. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +1 -1
  928. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/field_mask_pb.d.ts +32 -36
  929. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/go_features_pb.d.ts +65 -0
  930. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/go_features_pb.js +37 -1
  931. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/timestamp_pb.d.ts +5 -5
  932. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/gen/google/protobuf/type_pb.d.ts +3 -3
  933. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/wrappers.d.ts +10 -0
  934. package/node_modules/@bufbuild/protobuf/dist/esm/wkt/wrappers.js +23 -0
  935. package/node_modules/@bufbuild/protobuf/package.json +1 -1
  936. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts +305 -2
  937. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts.map +1 -1
  938. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js +34 -4
  939. package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js.map +1 -1
  940. package/node_modules/@evalops/contracts/dist/index.d.ts +88 -0
  941. package/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
  942. package/node_modules/@evalops/contracts/dist/index.js +2 -0
  943. package/node_modules/@evalops/contracts/dist/index.js.map +1 -1
  944. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts +77 -77
  945. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts.map +1 -1
  946. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js +1 -1
  947. package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js.map +1 -1
  948. package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts +182 -0
  949. package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts.map +1 -0
  950. package/node_modules/@evalops/contracts/dist/runtime-app-server.js +83 -0
  951. package/node_modules/@evalops/contracts/dist/runtime-app-server.js.map +1 -0
  952. package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts +133 -0
  953. package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts.map +1 -0
  954. package/node_modules/@evalops/contracts/dist/runtime-server-request.js +68 -0
  955. package/node_modules/@evalops/contracts/dist/runtime-server-request.js.map +1 -0
  956. package/node_modules/@evalops/contracts/dist/schemas.d.ts +178 -0
  957. package/node_modules/@evalops/contracts/dist/schemas.d.ts.map +1 -1
  958. package/node_modules/@evalops/contracts/dist/schemas.js +165 -0
  959. package/node_modules/@evalops/contracts/dist/schemas.js.map +1 -1
  960. package/node_modules/@evalops/contracts/dist/typebox-utils.d.ts +2 -0
  961. package/node_modules/@evalops/contracts/dist/typebox-utils.d.ts.map +1 -0
  962. package/node_modules/@evalops/contracts/dist/typebox-utils.js +5 -0
  963. package/node_modules/@evalops/contracts/dist/typebox-utils.js.map +1 -0
  964. package/node_modules/@evalops/contracts/dist/validators.d.ts +4 -1
  965. package/node_modules/@evalops/contracts/dist/validators.d.ts.map +1 -1
  966. package/node_modules/@evalops/contracts/dist/validators.js +4 -1
  967. package/node_modules/@evalops/contracts/dist/validators.js.map +1 -1
  968. package/node_modules/@evalops/contracts/package.json +1 -1
  969. package/node_modules/@evalops/tui/package.json +1 -1
  970. package/node_modules/string-width/index.js +93 -9
  971. package/node_modules/string-width/package.json +1 -1
  972. package/package.json +32 -25
  973. package/dist/cli-tui/commands/grouped/auth-commands.d.ts.map +0 -1
  974. package/dist/cli-tui/commands/grouped/auth-commands.js.map +0 -1
  975. package/dist/cli-tui/commands/grouped/config-commands.d.ts.map +0 -1
  976. package/dist/cli-tui/commands/grouped/config-commands.js.map +0 -1
  977. package/dist/cli-tui/commands/grouped/diag-commands.d.ts.map +0 -1
  978. package/dist/cli-tui/commands/grouped/diag-commands.js.map +0 -1
  979. package/dist/cli-tui/commands/grouped/git-commands.d.ts.map +0 -1
  980. package/dist/cli-tui/commands/grouped/git-commands.js.map +0 -1
  981. package/dist/cli-tui/commands/grouped/index.d.ts.map +0 -1
  982. package/dist/cli-tui/commands/grouped/index.js.map +0 -1
  983. package/dist/cli-tui/commands/grouped/safety-commands.d.ts.map +0 -1
  984. package/dist/cli-tui/commands/grouped/safety-commands.js.map +0 -1
  985. package/dist/cli-tui/commands/grouped/session-commands.d.ts.map +0 -1
  986. package/dist/cli-tui/commands/grouped/session-commands.js.map +0 -1
  987. package/dist/cli-tui/commands/grouped/tools-commands.d.ts.map +0 -1
  988. package/dist/cli-tui/commands/grouped/tools-commands.js.map +0 -1
  989. package/dist/cli-tui/commands/grouped/ui-commands.d.ts.map +0 -1
  990. package/dist/cli-tui/commands/grouped/ui-commands.js.map +0 -1
  991. package/dist/cli-tui/commands/grouped/undo-commands.d.ts.map +0 -1
  992. package/dist/cli-tui/commands/grouped/undo-commands.js.map +0 -1
  993. package/dist/cli-tui/commands/grouped/usage-commands.d.ts.map +0 -1
  994. package/dist/cli-tui/commands/grouped/usage-commands.js.map +0 -1
  995. package/dist/cli-tui/commands/grouped/utils.d.ts.map +0 -1
  996. package/dist/cli-tui/commands/grouped/utils.js.map +0 -1
  997. package/dist/cli-tui/commands/grouped-command-handlers.d.ts.map +0 -1
  998. package/dist/cli-tui/commands/grouped-command-handlers.js +0 -135
  999. package/dist/cli-tui/commands/grouped-command-handlers.js.map +0 -1
  1000. package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.d.ts +0 -78
  1001. package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.d.ts.map +0 -1
  1002. package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.js +0 -129
  1003. package/dist/cli-tui/tui-renderer/grouped-handlers-wiring.js.map +0 -1
  1004. package/node_modules/@evalops/memory/dist/client.d.ts +0 -94
  1005. package/node_modules/@evalops/memory/dist/client.js +0 -503
  1006. package/node_modules/@evalops/memory/gen/proto/dist/memory/v1/memory_pb.d.ts +0 -608
  1007. package/node_modules/@evalops/memory/gen/proto/dist/memory/v1/memory_pb.js +0 -187
  1008. package/node_modules/@evalops/memory/package.json +0 -26
  1009. /package/dist/cli-tui/commands/{grouped → subcommands}/usage-commands.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/mcp/manager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * MCP Client Manager - Model Context Protocol integration.\n *\n * This module manages connections to MCP (Model Context Protocol) servers,\n * which provide extended capabilities to the agent through a standardized\n * interface. MCP servers can expose:\n *\n * - **Tools**: Functions the agent can call (e.g., database queries, APIs)\n * - **Resources**: Data the agent can read (e.g., files, configurations)\n * - **Prompts**: Pre-defined prompt templates\n *\n * ## Architecture\n *\n * The McpClientManager maintains connections to multiple MCP servers\n * simultaneously. Each server can use either:\n * - **Stdio transport**: Spawns a subprocess, communicates via stdin/stdout\n * - **SSE transport**: Connects to HTTP server using Server-Sent Events\n *\n * ## Security\n *\n * - Environment variables are NOT passed to MCP server subprocesses\n * - Only essential variables (PATH, HOME, USER, SHELL, TERM) are included\n * - Server-specific env vars must be explicitly configured\n *\n * ## Events\n *\n * The manager emits events for monitoring:\n * - `connected`: Server successfully connected\n * - `disconnected`: Server disconnected\n * - `error`: Connection or operation error\n * - `tools_changed`: Server's tool list updated\n * - `resources_changed`: Server's resource list updated\n * - `prompts_changed`: Server's prompt list updated\n * - `progress`: Progress update from long-running operations\n * - `log`: Log message from server\n */\n\nimport { execFile } from \"node:child_process\";\nimport { EventEmitter } from \"node:events\";\nimport { promisify } from \"node:util\";\nimport { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport { SSEClientTransport } from \"@modelcontextprotocol/sdk/client/sse.js\";\nimport { StdioClientTransport } from \"@modelcontextprotocol/sdk/client/stdio.js\";\nimport { StreamableHTTPClientTransport } from \"@modelcontextprotocol/sdk/client/streamableHttp.js\";\nimport type { Transport } from \"@modelcontextprotocol/sdk/shared/transport.js\";\nimport {\n\tElicitRequestSchema,\n\tLoggingMessageNotificationSchema,\n\ttype Prompt as McpPrompt,\n\ttype Tool as McpTool,\n\tProgressNotificationSchema,\n\tPromptListChangedNotificationSchema,\n\tResourceListChangedNotificationSchema,\n\tToolListChangedNotificationSchema,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport { parseCommandArguments } from \"../tools/shell-utils.js\";\nimport { createLogger } from \"../utils/logger.js\";\nimport { getHomeDir } from \"../utils/path-expansion.js\";\nimport {\n\tbuildMcpElicitationToolCallId,\n\tgetCurrentMcpClientToolService,\n\tnormalizeMcpElicitationArgs,\n\tparseMcpElicitationClientToolResult,\n} from \"./elicitation.js\";\nimport {\n\tgetMcpRemoteHost,\n\tgetOfficialMcpRegistryMatch,\n} from \"./official-registry.js\";\nimport { getProjectMcpServerApprovalStatus } from \"./project-approvals.js\";\nimport type {\n\tMcpAuthPresetConfig,\n\tMcpAuthPresetStatus,\n\tMcpConfig,\n\tMcpManagerStatus,\n\tMcpProjectApprovalStatus,\n\tMcpPromptDefinition,\n\tMcpServerConfig,\n\tMcpServerStatus,\n} from \"./types.js\";\n\nconst logger = createLogger(\"mcp:manager\");\nconst execFileAsync = promisify(execFile);\n\n/**\n * Result from calling an MCP tool.\n * Content can be text, binary data, or other MIME types.\n */\nexport interface McpToolCallResult {\n\tcontent: Array<{\n\t\ttype: string;\n\t\ttext?: string;\n\t\tdata?: string;\n\t\tmimeType?: string;\n\t}>;\n\tisError?: boolean;\n}\n\n// Connection timeout for initial server handshake\nconst DEFAULT_TIMEOUT_MS = 30000;\n\n// Delay between reconnection attempts (doubles each retry)\nconst DEFAULT_RECONNECT_DELAY_MS = 5000;\n\n// Maximum number of automatic reconnection attempts\nconst MAX_RECONNECT_ATTEMPTS = 3;\n\nfunction arraysEqual(\n\tleft: readonly string[] | undefined,\n\tright: readonly string[] | undefined,\n): boolean {\n\tif (left === right) {\n\t\treturn true;\n\t}\n\tif (!left || !right || left.length !== right.length) {\n\t\treturn false;\n\t}\n\treturn left.every((value, index) => value === right[index]);\n}\n\nfunction recordsEqual(\n\tleft: Record<string, string> | undefined,\n\tright: Record<string, string> | undefined,\n): boolean {\n\tif (left === right) {\n\t\treturn true;\n\t}\n\tif (!left || !right) {\n\t\treturn false;\n\t}\n\tconst leftEntries = Object.entries(left).sort(([leftKey], [rightKey]) =>\n\t\tleftKey.localeCompare(rightKey),\n\t);\n\tconst rightEntries = Object.entries(right).sort(([leftKey], [rightKey]) =>\n\t\tleftKey.localeCompare(rightKey),\n\t);\n\tif (leftEntries.length !== rightEntries.length) {\n\t\treturn false;\n\t}\n\treturn leftEntries.every(\n\t\t([leftKey, leftValue], index) =>\n\t\t\tleftKey === rightEntries[index]?.[0] &&\n\t\t\tleftValue === rightEntries[index]?.[1],\n\t);\n}\n\ninterface ResolvedRemoteAuthConfig {\n\theaders?: Record<string, string>;\n\theadersHelper?: string;\n\tpreset?: McpAuthPresetConfig;\n}\n\nfunction buildAuthPresetMap(\n\tauthPresets: readonly McpAuthPresetConfig[],\n): Map<string, McpAuthPresetConfig> {\n\treturn new Map(\n\t\t(authPresets ?? []).map((authPreset) => [authPreset.name, authPreset]),\n\t);\n}\n\nfunction resolveRemoteAuthConfig(\n\tconfig: McpServerConfig,\n\tauthPresetMap: ReadonlyMap<string, McpAuthPresetConfig>,\n): ResolvedRemoteAuthConfig {\n\tif (config.transport !== \"http\" && config.transport !== \"sse\") {\n\t\treturn {\n\t\t\theaders: config.headers,\n\t\t\theadersHelper: config.headersHelper,\n\t\t};\n\t}\n\n\tconst preset = config.authPreset\n\t\t? authPresetMap.get(config.authPreset)\n\t\t: undefined;\n\tconst headers = {\n\t\t...(preset?.headers ?? {}),\n\t\t...(config.headers ?? {}),\n\t};\n\n\treturn {\n\t\theaders: Object.keys(headers).length > 0 ? headers : undefined,\n\t\theadersHelper: config.headersHelper ?? preset?.headersHelper,\n\t\tpreset,\n\t};\n}\n\nfunction buildComparableServerConfig(\n\tconfig: McpServerConfig,\n\tauthPresetMap: ReadonlyMap<string, McpAuthPresetConfig>,\n): McpServerConfig {\n\tconst resolvedAuth = resolveRemoteAuthConfig(config, authPresetMap);\n\treturn {\n\t\t...config,\n\t\theaders: resolvedAuth.headers,\n\t\theadersHelper: resolvedAuth.headersHelper,\n\t};\n}\n\nfunction serverConfigsEqual(\n\tleft: McpServerConfig,\n\tright: McpServerConfig,\n): boolean {\n\treturn (\n\t\tleft.name === right.name &&\n\t\tleft.transport === right.transport &&\n\t\tleft.command === right.command &&\n\t\tarraysEqual(left.args, right.args) &&\n\t\trecordsEqual(left.env, right.env) &&\n\t\tleft.cwd === right.cwd &&\n\t\tleft.url === right.url &&\n\t\trecordsEqual(left.headers, right.headers) &&\n\t\tleft.headersHelper === right.headersHelper &&\n\t\tleft.enabled === right.enabled &&\n\t\tleft.disabled === right.disabled &&\n\t\tleft.timeout === right.timeout &&\n\t\tleft.scope === right.scope\n\t);\n}\n\nfunction buildProjectApprovalMap(\n\tconfig: McpConfig,\n): Map<string, McpProjectApprovalStatus> {\n\tconst approvals = new Map<string, McpProjectApprovalStatus>();\n\tif (!config.projectRoot) {\n\t\treturn approvals;\n\t}\n\tfor (const server of config.servers ?? []) {\n\t\tconst approval = getProjectMcpServerApprovalStatus({\n\t\t\tprojectRoot: config.projectRoot,\n\t\t\tserver,\n\t\t\tauthPresets: config.authPresets ?? [],\n\t\t});\n\t\tif (approval) {\n\t\t\tapprovals.set(server.name, approval);\n\t\t}\n\t}\n\treturn approvals;\n}\n\nfunction canConnectServer(\n\tserver: McpServerConfig,\n\tapprovalMap: ReadonlyMap<string, McpProjectApprovalStatus>,\n): boolean {\n\tconst approval = approvalMap.get(server.name);\n\treturn approval !== \"pending\" && approval !== \"denied\";\n}\n\nfunction buildSafeEnv(\n\texplicitEnv?: Record<string, string>,\n\textraEnv?: Record<string, string>,\n): Record<string, string> {\n\tconst safeBaseEnv: Record<string, string> = {};\n\tif (process.env.PATH) safeBaseEnv.PATH = process.env.PATH;\n\tif (process.env.HOME) {\n\t\tsafeBaseEnv.HOME = process.env.HOME;\n\t} else {\n\t\tconst homeDir = getHomeDir();\n\t\tif (homeDir) safeBaseEnv.HOME = homeDir;\n\t}\n\tif (process.env.USER) {\n\t\tsafeBaseEnv.USER = process.env.USER;\n\t} else if (process.env.USERNAME) {\n\t\tsafeBaseEnv.USER = process.env.USERNAME;\n\t}\n\tif (process.env.SHELL) safeBaseEnv.SHELL = process.env.SHELL;\n\tif (process.env.TERM) safeBaseEnv.TERM = process.env.TERM;\n\n\treturn Object.fromEntries(\n\t\tObject.entries({ ...safeBaseEnv, ...explicitEnv, ...extraEnv }).filter(\n\t\t\t([, value]) => value !== undefined,\n\t\t),\n\t) as Record<string, string>;\n}\n\nasync function resolveHeadersHelper(\n\tconfig: McpServerConfig,\n\theadersHelper = config.headersHelper,\n): Promise<Record<string, string> | undefined> {\n\tif (!headersHelper) {\n\t\treturn undefined;\n\t}\n\n\tlet command: string[];\n\ttry {\n\t\tcommand = parseCommandArguments(headersHelper);\n\t} catch (error) {\n\t\tlogger.warn(\"Invalid MCP headers helper command\", {\n\t\t\tname: config.name,\n\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t});\n\t\treturn undefined;\n\t}\n\n\tif (command.length === 0) {\n\t\tlogger.warn(\"Empty MCP headers helper command\", { name: config.name });\n\t\treturn undefined;\n\t}\n\n\ttry {\n\t\tconst { stdout } = await execFileAsync(command[0]!, command.slice(1), {\n\t\t\tcwd: config.cwd,\n\t\t\tenv: buildSafeEnv(config.env, {\n\t\t\t\tMAESTRO_MCP_SERVER_NAME: config.name,\n\t\t\t\tMAESTRO_MCP_SERVER_URL: config.url ?? \"\",\n\t\t\t}),\n\t\t\ttimeout: config.timeout ?? DEFAULT_TIMEOUT_MS,\n\t\t\tmaxBuffer: 1024 * 1024,\n\t\t\tencoding: \"utf8\",\n\t\t\twindowsHide: true,\n\t\t});\n\n\t\tconst trimmed = stdout.trim();\n\t\tif (!trimmed) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst parsed = JSON.parse(trimmed) as unknown;\n\t\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n\t\t\tthrow new Error(\"headersHelper must return a JSON object\");\n\t\t}\n\n\t\tconst headers: Record<string, string> = {};\n\t\tfor (const [key, value] of Object.entries(parsed)) {\n\t\t\tif (typeof value !== \"string\") {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`headersHelper must return string values for key \"${key}\"`,\n\t\t\t\t);\n\t\t\t}\n\t\t\theaders[key] = value;\n\t\t}\n\n\t\treturn headers;\n\t} catch (error) {\n\t\tlogger.warn(\"Failed to resolve MCP headers helper\", {\n\t\t\tname: config.name,\n\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t});\n\t\treturn undefined;\n\t}\n}\n\nasync function buildRemoteRequestInit(\n\tconfig: McpServerConfig,\n\tauthPresetMap: ReadonlyMap<string, McpAuthPresetConfig>,\n): Promise<RequestInit | undefined> {\n\tconst resolvedAuth = resolveRemoteAuthConfig(config, authPresetMap);\n\tconst helperHeaders = await resolveHeadersHelper(\n\t\tconfig,\n\t\tresolvedAuth.headersHelper,\n\t);\n\tconst headers = {\n\t\t...(resolvedAuth.headers ?? {}),\n\t\t...(helperHeaders ?? {}),\n\t};\n\n\treturn Object.keys(headers).length > 0 ? { headers } : undefined;\n}\n\n/**\n * Internal state for a connected MCP server.\n * Tracks the client, transport, and cached capabilities.\n */\ninterface ConnectedServer {\n\t/** Original configuration */\n\tconfig: McpServerConfig;\n\t/** MCP client instance */\n\tclient: Client;\n\t/** Transport layer (stdio or SSE) */\n\ttransport: Transport;\n\t/** Cached list of available tools */\n\ttools: McpTool[];\n\t/** Cached list of resource URIs */\n\tresources: string[];\n\t/** Cached list of prompt names */\n\tprompts: string[];\n\t/** Cached prompt metadata for structured prompt UIs */\n\tpromptDetails: McpPromptDefinition[];\n\t/** Counter for reconnection attempts */\n\treconnectAttempts: number;\n}\n\nfunction normalizePromptDefinition(prompt: McpPrompt): McpPromptDefinition {\n\treturn {\n\t\tname: prompt.name,\n\t\ttitle: prompt.title,\n\t\tdescription: prompt.description,\n\t\targuments:\n\t\t\tprompt.arguments?.map((argument) => ({\n\t\t\t\tname: argument.name,\n\t\t\t\tdescription: argument.description,\n\t\t\t\trequired: argument.required,\n\t\t\t})) ?? [],\n\t};\n}\n\nfunction getPromptNames(\n\tpromptDetails: readonly McpPromptDefinition[],\n): string[] {\n\treturn promptDetails.map((prompt) => prompt.name);\n}\n\n/**\n * Manager for MCP (Model Context Protocol) server connections.\n *\n * Handles connection lifecycle, tool discovery, and message routing\n * for multiple MCP servers. Supports automatic reconnection on failure.\n */\nexport class McpClientManager extends EventEmitter {\n\t/** Map of server name to connected server state */\n\tprivate servers = new Map<string, ConnectedServer>();\n\n\t/** Map of server name to in-flight connection promise (prevents duplicates) */\n\tprivate connecting = new Map<string, Promise<void>>();\n\n\t/** Map of server name to pending reconnect timer */\n\tprivate reconnectTimers = new Map<string, ReturnType<typeof setTimeout>>();\n\n\t/** Last connection or runtime error reported for each configured server */\n\tprivate lastErrors = new Map<string, string>();\n\n\t/** Current configuration */\n\tprivate config: McpConfig = { servers: [], authPresets: [] };\n\n\t/**\n\t * Apply a new configuration, connecting/disconnecting servers as needed.\n\t *\n\t * Compares old and new configs to determine which servers to add or remove,\n\t * then performs the necessary connect/disconnect operations.\n\t *\n\t * @param config - New MCP configuration with server list\n\t */\n\tasync configure(config: McpConfig): Promise<void> {\n\t\tconst nextConfig: McpConfig = {\n\t\t\tservers: config.servers ?? [],\n\t\t\tauthPresets: config.authPresets ?? [],\n\t\t\tprojectRoot: config.projectRoot,\n\t\t\tenvLimits: config.envLimits,\n\t\t};\n\t\tconst previousAuthPresetMap = buildAuthPresetMap(this.config.authPresets);\n\t\tconst nextAuthPresetMap = buildAuthPresetMap(nextConfig.authPresets);\n\t\tconst previousApprovalMap = buildProjectApprovalMap(this.config);\n\t\tconst nextApprovalMap = buildProjectApprovalMap(nextConfig);\n\t\tconst previousServers = new Map(\n\t\t\tthis.config.servers.map((server) => [server.name, server]),\n\t\t);\n\t\tconst oldServerNames = new Set(previousServers.keys());\n\t\tconst newServerNames = new Set(nextConfig.servers.map((s) => s.name));\n\n\t\t// Find servers to remove (in old but not in new)\n\t\tconst toRemove = [...oldServerNames].filter((n) => !newServerNames.has(n));\n\n\t\t// Reconnect servers whose config changed in place.\n\t\tconst toReconnect = nextConfig.servers.filter((server) => {\n\t\t\tconst previous = previousServers.get(server.name);\n\t\t\treturn (\n\t\t\t\tprevious &&\n\t\t\t\t(!serverConfigsEqual(\n\t\t\t\t\tbuildComparableServerConfig(previous, previousAuthPresetMap),\n\t\t\t\t\tbuildComparableServerConfig(server, nextAuthPresetMap),\n\t\t\t\t) ||\n\t\t\t\t\tcanConnectServer(previous, previousApprovalMap) !==\n\t\t\t\t\t\tcanConnectServer(server, nextApprovalMap))\n\t\t\t);\n\t\t});\n\t\tconst reconnectNames = new Set(toReconnect.map((server) => server.name));\n\n\t\t// Find servers to add (in new but not in old)\n\t\tconst toAdd = nextConfig.servers.filter(\n\t\t\t(server) => !oldServerNames.has(server.name),\n\t\t);\n\n\t\tthis.config = nextConfig;\n\n\t\t// Disconnect removed servers (don't wait for success)\n\t\tawait Promise.allSettled(\n\t\t\ttoRemove.map((name) => this.disconnectServer(name)),\n\t\t);\n\n\t\t// Disconnect and reconnect updated servers so in-place edits take effect.\n\t\tawait Promise.allSettled(\n\t\t\ttoReconnect.map(async (server) => {\n\t\t\t\tconst pendingConnection = this.connecting.get(server.name);\n\t\t\t\tif (pendingConnection) {\n\t\t\t\t\tawait Promise.allSettled([pendingConnection]);\n\t\t\t\t}\n\t\t\t\tawait this.disconnectServer(server.name);\n\t\t\t\tif (canConnectServer(server, nextApprovalMap)) {\n\t\t\t\t\tawait this.connectServer(server);\n\t\t\t\t}\n\t\t\t}),\n\t\t);\n\n\t\t// Connect new servers (don't wait for success)\n\t\tawait Promise.allSettled(\n\t\t\ttoAdd\n\t\t\t\t.filter(\n\t\t\t\t\t(server) =>\n\t\t\t\t\t\t!reconnectNames.has(server.name) &&\n\t\t\t\t\t\tcanConnectServer(server, nextApprovalMap),\n\t\t\t\t)\n\t\t\t\t.map((server) => this.connectServer(server)),\n\t\t);\n\t}\n\n\t/**\n\t * Connect to all configured servers.\n\t * Non-blocking - returns after connection attempts are started.\n\t */\n\tasync connectAll(): Promise<void> {\n\t\tconst approvalMap = buildProjectApprovalMap(this.config);\n\t\tconst promises = this.config.servers\n\t\t\t.filter((server) => canConnectServer(server, approvalMap))\n\t\t\t.map((server) => this.connectServer(server));\n\t\tawait Promise.allSettled(promises);\n\t}\n\n\t/**\n\t * Disconnect from all servers and cancel pending reconnects.\n\t */\n\tasync disconnectAll(): Promise<void> {\n\t\t// Clear all pending reconnect timers first\n\t\tfor (const [name, timer] of this.reconnectTimers) {\n\t\t\tclearTimeout(timer);\n\t\t}\n\t\tthis.reconnectTimers.clear();\n\n\t\t// Disconnect all servers\n\t\tconst promises = Array.from(this.servers.keys()).map((name) =>\n\t\t\tthis.disconnectServer(name),\n\t\t);\n\t\tawait Promise.allSettled(promises);\n\t}\n\n\t/**\n\t * Internal: Connect to a single server.\n\t * Handles deduplication of concurrent connection attempts.\n\t */\n\tprivate async connectServer(config: McpServerConfig): Promise<void> {\n\t\tconst { name } = config;\n\n\t\t// Avoid duplicate connections\n\t\tif (this.servers.has(name)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check for in-flight connection (prevent race conditions)\n\t\tconst existing = this.connecting.get(name);\n\t\tif (existing) {\n\t\t\treturn existing;\n\t\t}\n\n\t\t// Track this connection attempt\n\t\tconst task = this.doConnect(config);\n\t\tthis.connecting.set(name, task);\n\n\t\ttry {\n\t\t\tawait task;\n\t\t} finally {\n\t\t\tthis.connecting.delete(name);\n\t\t}\n\t}\n\n\t/**\n\t * Internal: Perform the actual connection to an MCP server.\n\t *\n\t * Creates the appropriate transport (stdio or SSE), establishes connection,\n\t * fetches server capabilities (tools, resources, prompts), and sets up\n\t * notification handlers.\n\t *\n\t * @param config - Server configuration\n\t * @param isReconnect - Whether this is a reconnection attempt\n\t */\n\tprivate async doConnect(\n\t\tconfig: McpServerConfig,\n\t\tisReconnect = false,\n\t): Promise<void> {\n\t\tconst { name, transport: transportType } = config;\n\n\t\ttry {\n\t\t\tlet transport: Transport;\n\n\t\t\t// Create transport based on configuration\n\t\t\tif (transportType === \"http\" || transportType === \"sse\") {\n\t\t\t\t// HTTP/SSE transport - connect to remote server\n\t\t\t\tif (!config.url) {\n\t\t\t\t\tlogger.warn(\"No URL specified for HTTP server\", { name });\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst requestInit = await buildRemoteRequestInit(\n\t\t\t\t\tconfig,\n\t\t\t\t\tbuildAuthPresetMap(this.config.authPresets),\n\t\t\t\t);\n\t\t\t\tconst transportOptions = requestInit ? { requestInit } : undefined;\n\n\t\t\t\tif (transportType === \"http\") {\n\t\t\t\t\ttransport = new StreamableHTTPClientTransport(\n\t\t\t\t\t\tnew URL(config.url),\n\t\t\t\t\t\ttransportOptions,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\ttransport = new SSEClientTransport(\n\t\t\t\t\t\tnew URL(config.url),\n\t\t\t\t\t\ttransportOptions,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Stdio transport - spawn subprocess\n\t\t\t\tif (!config.command) {\n\t\t\t\t\tlogger.warn(\"No command specified for server\", { name });\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// SECURITY: Only pass essential env vars plus explicit config\n\t\t\t\t// Do NOT pass process.env - this would leak API keys and secrets\n\t\t\t\ttransport = new StdioClientTransport({\n\t\t\t\t\tcommand: config.command,\n\t\t\t\t\targs: config.args,\n\t\t\t\t\tenv: buildSafeEnv(config.env),\n\t\t\t\t\tcwd: config.cwd,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst client = new Client(\n\t\t\t\t{\n\t\t\t\t\tname: \"composer\",\n\t\t\t\t\tversion: \"1.0.0\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcapabilities: {\n\t\t\t\t\t\telicitation: {\n\t\t\t\t\t\t\tform: { applyDefaults: true },\n\t\t\t\t\t\t\turl: {},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tclient.setRequestHandler(ElicitRequestSchema, async (request, extra) => {\n\t\t\t\tconst clientToolService = getCurrentMcpClientToolService();\n\t\t\t\tif (!clientToolService) {\n\t\t\t\t\treturn { action: \"cancel\" };\n\t\t\t\t}\n\n\t\t\t\tconst requestId =\n\t\t\t\t\textra.requestId ??\n\t\t\t\t\t(\"elicitationId\" in request.params\n\t\t\t\t\t\t? request.params.elicitationId\n\t\t\t\t\t\t: \"unknown\");\n\t\t\t\tconst toolCallId = buildMcpElicitationToolCallId(name, requestId);\n\n\t\t\t\ttry {\n\t\t\t\t\tconst result = await clientToolService.requestExecution(\n\t\t\t\t\t\ttoolCallId,\n\t\t\t\t\t\t\"mcp_elicitation\",\n\t\t\t\t\t\tnormalizeMcpElicitationArgs(name, requestId, request.params),\n\t\t\t\t\t\textra.signal,\n\t\t\t\t\t);\n\t\t\t\t\treturn parseMcpElicitationClientToolResult(\n\t\t\t\t\t\tresult.content,\n\t\t\t\t\t\tresult.isError,\n\t\t\t\t\t);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.warn(\"Failed to resolve MCP elicitation request\", {\n\t\t\t\t\t\tname,\n\t\t\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\t\t});\n\t\t\t\t\treturn { action: \"cancel\" };\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tawait client.connect(transport, {\n\t\t\t\ttimeout: config.timeout ?? DEFAULT_TIMEOUT_MS,\n\t\t\t});\n\n\t\t\t// Fetch capabilities\n\t\t\tconst tools = await this.fetchTools(client);\n\t\t\tconst resources = await this.fetchResources(client);\n\t\t\tconst promptDetails = await this.fetchPrompts(client);\n\t\t\tconst prompts = getPromptNames(promptDetails);\n\n\t\t\tthis.servers.set(name, {\n\t\t\t\tconfig,\n\t\t\t\tclient,\n\t\t\t\ttransport,\n\t\t\t\ttools,\n\t\t\t\tresources,\n\t\t\t\tprompts,\n\t\t\t\tpromptDetails,\n\t\t\t\treconnectAttempts: 0,\n\t\t\t});\n\t\t\tthis.lastErrors.delete(name);\n\n\t\t\t// Set up notification handlers after adding to servers map\n\t\t\t// to avoid race condition where notifications arrive before server is tracked\n\t\t\tthis.setupNotificationHandlers(client, name);\n\n\t\t\tthis.emit(\"connected\", { name, tools: tools.length, isReconnect });\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthis.lastErrors.set(name, message);\n\t\t\tlogger.error(\n\t\t\t\t\"Failed to connect to server\",\n\t\t\t\terror instanceof Error ? error : new Error(message),\n\t\t\t\t{ name },\n\t\t\t);\n\t\t\tthis.emit(\"error\", { name, error: message });\n\n\t\t\t// Schedule reconnection for non-reconnect attempts\n\t\t\tif (!isReconnect) {\n\t\t\t\tthis.scheduleReconnect(config, 0);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate scheduleReconnect(config: McpServerConfig, attempt: number): void {\n\t\tif (attempt >= MAX_RECONNECT_ATTEMPTS) {\n\t\t\tlogger.warn(\"Max reconnection attempts reached\", { name: config.name });\n\t\t\treturn;\n\t\t}\n\n\t\t// Clear any existing timer for this server\n\t\tconst existingTimer = this.reconnectTimers.get(config.name);\n\t\tif (existingTimer) {\n\t\t\tclearTimeout(existingTimer);\n\t\t}\n\n\t\tconst delay = DEFAULT_RECONNECT_DELAY_MS * 2 ** attempt;\n\t\tlogger.info(\"Scheduling reconnect\", {\n\t\t\tserver: config.name,\n\t\t\tdelayMs: delay,\n\t\t\tattempt: attempt + 1,\n\t\t\tmaxAttempts: MAX_RECONNECT_ATTEMPTS,\n\t\t});\n\n\t\tconst timeoutId = setTimeout(async () => {\n\t\t\tthis.reconnectTimers.delete(config.name);\n\n\t\t\tif (this.servers.has(config.name)) {\n\t\t\t\treturn; // Already reconnected\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tawait this.doConnect(config, true);\n\t\t\t\t// If doConnect succeeded (server is now connected), we're done\n\t\t\t\tif (!this.servers.has(config.name)) {\n\t\t\t\t\t// Connection failed (doConnect caught the error), schedule retry\n\t\t\t\t\tthis.scheduleReconnect(config, attempt + 1);\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Unexpected error, schedule retry\n\t\t\t\tthis.scheduleReconnect(config, attempt + 1);\n\t\t\t}\n\t\t}, delay);\n\n\t\tthis.reconnectTimers.set(config.name, timeoutId);\n\t}\n\n\t/**\n\t * Manually trigger reconnection for a server\n\t */\n\tasync reconnect(name: string): Promise<boolean> {\n\t\tconst config = this.config.servers.find((s) => s.name === name);\n\t\tif (!config) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!canConnectServer(config, buildProjectApprovalMap(this.config))) {\n\t\t\tawait this.disconnectServer(name);\n\t\t\treturn false;\n\t\t}\n\n\t\tawait this.disconnectServer(name);\n\t\tawait this.doConnect(config, true);\n\t\treturn this.servers.has(name);\n\t}\n\n\tprivate async fetchTools(client: Client): Promise<McpTool[]> {\n\t\ttry {\n\t\t\tconst caps = client.getServerCapabilities();\n\t\t\tif (!caps?.tools) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tconst result = await client.listTools();\n\t\t\treturn result.tools;\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tprivate async fetchResources(client: Client): Promise<string[]> {\n\t\ttry {\n\t\t\tconst caps = client.getServerCapabilities();\n\t\t\tif (!caps?.resources) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tconst result = await client.listResources();\n\t\t\treturn result.resources.map((r) => r.uri);\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tprivate async fetchPrompts(client: Client): Promise<McpPromptDefinition[]> {\n\t\ttry {\n\t\t\tconst caps = client.getServerCapabilities();\n\t\t\tif (!caps?.prompts) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tconst result = await client.listPrompts();\n\t\t\treturn result.prompts.map(normalizePromptDefinition);\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tprivate setupNotificationHandlers(client: Client, serverName: string): void {\n\t\t// Tool list changes - refresh tools when server notifies\n\t\tclient.setNotificationHandler(\n\t\t\tToolListChangedNotificationSchema,\n\t\t\tasync () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst server = this.servers.get(serverName);\n\t\t\t\t\tif (server) {\n\t\t\t\t\t\tserver.tools = await this.fetchTools(client);\n\t\t\t\t\t\tthis.emit(\"tools_changed\", {\n\t\t\t\t\t\t\tname: serverName,\n\t\t\t\t\t\t\ttools: server.tools,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error(\n\t\t\t\t\t\t\"Failed to refresh tools\",\n\t\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\t{ serverName },\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\n\t\t// Resource list changes\n\t\tclient.setNotificationHandler(\n\t\t\tResourceListChangedNotificationSchema,\n\t\t\tasync () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst server = this.servers.get(serverName);\n\t\t\t\t\tif (server) {\n\t\t\t\t\t\tserver.resources = await this.fetchResources(client);\n\t\t\t\t\t\tthis.emit(\"resources_changed\", {\n\t\t\t\t\t\t\tname: serverName,\n\t\t\t\t\t\t\tresources: server.resources,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error(\n\t\t\t\t\t\t\"Failed to refresh resources\",\n\t\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\t{ serverName },\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\n\t\t// Prompt list changes\n\t\tclient.setNotificationHandler(\n\t\t\tPromptListChangedNotificationSchema,\n\t\t\tasync () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst server = this.servers.get(serverName);\n\t\t\t\t\tif (server) {\n\t\t\t\t\t\tserver.promptDetails = await this.fetchPrompts(client);\n\t\t\t\t\t\tserver.prompts = getPromptNames(server.promptDetails);\n\t\t\t\t\t\tthis.emit(\"prompts_changed\", {\n\t\t\t\t\t\t\tname: serverName,\n\t\t\t\t\t\t\tprompts: server.prompts,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error(\n\t\t\t\t\t\t\"Failed to refresh prompts\",\n\t\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\t{ serverName },\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\n\t\t// Progress notifications for long-running operations\n\t\tclient.setNotificationHandler(\n\t\t\tProgressNotificationSchema,\n\t\t\t(notification) => {\n\t\t\t\tthis.emit(\"progress\", {\n\t\t\t\t\tname: serverName,\n\t\t\t\t\tprogressToken: notification.params.progressToken,\n\t\t\t\t\tprogress: notification.params.progress,\n\t\t\t\t\ttotal: notification.params.total,\n\t\t\t\t\tmessage: notification.params.message,\n\t\t\t\t});\n\t\t\t},\n\t\t);\n\n\t\t// Logging messages from MCP servers\n\t\tclient.setNotificationHandler(\n\t\t\tLoggingMessageNotificationSchema,\n\t\t\t(notification) => {\n\t\t\t\tthis.emit(\"log\", {\n\t\t\t\t\tname: serverName,\n\t\t\t\t\tlevel: notification.params.level,\n\t\t\t\t\tlogger: notification.params.logger,\n\t\t\t\t\tdata: notification.params.data,\n\t\t\t\t});\n\t\t\t},\n\t\t);\n\t}\n\n\tprivate async disconnectServer(name: string): Promise<void> {\n\t\t// Clear any pending reconnect timer for this server\n\t\tconst timer = this.reconnectTimers.get(name);\n\t\tif (timer) {\n\t\t\tclearTimeout(timer);\n\t\t\tthis.reconnectTimers.delete(name);\n\t\t}\n\n\t\tconst server = this.servers.get(name);\n\t\tif (!server) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tawait server.client.close();\n\t\t} catch (error) {\n\t\t\tlogger.warn(\"Error closing client\", {\n\t\t\t\tname,\n\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t});\n\t\t}\n\n\t\t// Also close the transport to clean up underlying resources\n\t\ttry {\n\t\t\tawait server.transport.close();\n\t\t} catch (error) {\n\t\t\tlogger.warn(\"Error closing transport\", {\n\t\t\t\tname,\n\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t});\n\t\t}\n\n\t\tthis.servers.delete(name);\n\t\tthis.emit(\"disconnected\", { name });\n\t}\n\n\tasync callTool(\n\t\tserverName: string,\n\t\ttoolName: string,\n\t\targs: Record<string, unknown>,\n\t): Promise<McpToolCallResult> {\n\t\tconst server = this.servers.get(serverName);\n\t\tif (!server) {\n\t\t\tthrow new Error(`MCP server '${serverName}' not connected`);\n\t\t}\n\n\t\tconst result = await server.client.callTool({\n\t\t\tname: toolName,\n\t\t\targuments: args,\n\t\t});\n\n\t\t// Normalize the result to our interface\n\t\tconst content = Array.isArray(result.content)\n\t\t\t? result.content.map((c: Record<string, unknown>) => ({\n\t\t\t\t\ttype: String(c.type ?? \"unknown\"),\n\t\t\t\t\ttext: typeof c.text === \"string\" ? c.text : undefined,\n\t\t\t\t\tdata: typeof c.data === \"string\" ? c.data : undefined,\n\t\t\t\t\tmimeType: typeof c.mimeType === \"string\" ? c.mimeType : undefined,\n\t\t\t\t}))\n\t\t\t: [];\n\n\t\treturn {\n\t\t\tcontent,\n\t\t\tisError: typeof result.isError === \"boolean\" ? result.isError : undefined,\n\t\t};\n\t}\n\n\tgetAllTools(): Array<{ server: string; tool: McpTool }> {\n\t\tconst tools: Array<{ server: string; tool: McpTool }> = [];\n\t\tfor (const [serverName, server] of this.servers) {\n\t\t\tfor (const tool of server.tools) {\n\t\t\t\ttools.push({ server: serverName, tool });\n\t\t\t}\n\t\t}\n\t\treturn tools;\n\t}\n\n\tgetStatus(): McpManagerStatus {\n\t\tconst servers: McpServerStatus[] = [];\n\t\tconst authPresets: McpAuthPresetStatus[] = (\n\t\t\tthis.config.authPresets ?? []\n\t\t).map((authPreset) => ({\n\t\t\tname: authPreset.name,\n\t\t\tscope: authPreset.scope,\n\t\t\theaderKeys: authPreset.headers\n\t\t\t\t? Object.keys(authPreset.headers).sort()\n\t\t\t\t: [],\n\t\t\theadersHelper: authPreset.headersHelper,\n\t\t}));\n\t\tconst authPresetMap = buildAuthPresetMap(this.config.authPresets ?? []);\n\t\tconst approvalMap = buildProjectApprovalMap(this.config);\n\n\t\t// Include configured but not connected servers\n\t\tfor (const config of this.config.servers) {\n\t\t\tconst connected = this.servers.get(config.name);\n\t\t\tconst projectApproval = approvalMap.get(config.name);\n\t\t\tconst resolvedAuth = resolveRemoteAuthConfig(config, authPresetMap);\n\t\t\tconst remoteUrl =\n\t\t\t\tconfig.transport === \"http\" || config.transport === \"sse\"\n\t\t\t\t\t? config.url\n\t\t\t\t\t: undefined;\n\t\t\tconst remoteHost = remoteUrl ? getMcpRemoteHost(remoteUrl) : undefined;\n\t\t\tconst remoteRegistryMatch = remoteUrl\n\t\t\t\t? getOfficialMcpRegistryMatch(remoteUrl)\n\t\t\t\t: undefined;\n\t\t\tservers.push({\n\t\t\t\tname: config.name,\n\t\t\t\tconnected: !!connected,\n\t\t\t\terror:\n\t\t\t\t\tprojectApproval === \"pending\" || projectApproval === \"denied\"\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: this.lastErrors.get(config.name),\n\t\t\t\tscope: config.scope,\n\t\t\t\ttransport: config.transport,\n\t\t\t\ttools: connected?.tools ?? [],\n\t\t\t\tresources: connected?.resources ?? [],\n\t\t\t\tprompts: connected?.prompts ?? [],\n\t\t\t\tpromptDetails:\n\t\t\t\t\tconnected && connected.promptDetails.length > 0\n\t\t\t\t\t\t? connected.promptDetails\n\t\t\t\t\t\t: undefined,\n\t\t\t\tcommand: config.transport === \"stdio\" ? config.command : undefined,\n\t\t\t\targs: config.transport === \"stdio\" ? config.args : undefined,\n\t\t\t\tcwd: config.transport === \"stdio\" ? config.cwd : undefined,\n\t\t\t\tenvKeys: config.env ? Object.keys(config.env).sort() : [],\n\t\t\t\tremoteUrl,\n\t\t\t\tremoteHost,\n\t\t\t\theaderKeys: resolvedAuth.headers\n\t\t\t\t\t? Object.keys(resolvedAuth.headers).sort()\n\t\t\t\t\t: [],\n\t\t\t\theadersHelper: resolvedAuth.headersHelper,\n\t\t\t\tauthPreset: config.authPreset,\n\t\t\t\ttimeout: config.timeout,\n\t\t\t\tremoteTrust: remoteRegistryMatch?.trust,\n\t\t\t\tofficialRegistry: remoteRegistryMatch?.info,\n\t\t\t\tprojectApproval,\n\t\t\t});\n\t\t}\n\n\t\treturn { servers, authPresets };\n\t}\n\n\tgetServer(name: string): ConnectedServer | undefined {\n\t\treturn this.servers.get(name);\n\t}\n\n\tisConnected(name: string): boolean {\n\t\treturn this.servers.has(name);\n\t}\n\n\t/**\n\t * Read a resource from an MCP server\n\t */\n\tasync readResource(\n\t\tserverName: string,\n\t\turi: string,\n\t): Promise<{\n\t\tcontents: Array<{\n\t\t\turi: string;\n\t\t\ttext?: string;\n\t\t\tblob?: string;\n\t\t\tmimeType?: string;\n\t\t}>;\n\t}> {\n\t\tconst server = this.servers.get(serverName);\n\t\tif (!server) {\n\t\t\tthrow new Error(`MCP server '${serverName}' not connected`);\n\t\t}\n\n\t\tconst result = await server.client.readResource({ uri });\n\t\treturn {\n\t\t\tcontents: result.contents.map((c) => ({\n\t\t\t\turi: c.uri,\n\t\t\t\ttext: \"text\" in c ? c.text : undefined,\n\t\t\t\tblob: \"blob\" in c ? c.blob : undefined,\n\t\t\t\tmimeType: c.mimeType,\n\t\t\t})),\n\t\t};\n\t}\n\n\t/**\n\t * Get a prompt from an MCP server\n\t */\n\tasync getPrompt(\n\t\tserverName: string,\n\t\tpromptName: string,\n\t\targs?: Record<string, string>,\n\t): Promise<{\n\t\tdescription?: string;\n\t\tmessages: Array<{ role: string; content: string }>;\n\t}> {\n\t\tconst server = this.servers.get(serverName);\n\t\tif (!server) {\n\t\t\tthrow new Error(`MCP server '${serverName}' not connected`);\n\t\t}\n\n\t\tconst result = await server.client.getPrompt({\n\t\t\tname: promptName,\n\t\t\targuments: args,\n\t\t});\n\t\treturn {\n\t\t\tdescription: result.description,\n\t\t\tmessages: result.messages.map((m) => ({\n\t\t\t\trole: m.role,\n\t\t\t\tcontent:\n\t\t\t\t\ttypeof m.content === \"string\"\n\t\t\t\t\t\t? m.content\n\t\t\t\t\t\t: m.content.type === \"text\"\n\t\t\t\t\t\t\t? m.content.text\n\t\t\t\t\t\t\t: \"[non-text content]\",\n\t\t\t})),\n\t\t};\n\t}\n}\n\n/**\n * Singleton MCP client manager instance.\n *\n * Use this for all MCP operations in the application.\n * Configure with `mcpManager.configure(config)` at startup.\n */\nexport const mcpManager = new McpClientManager();\n"]}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/mcp/manager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * MCP Client Manager - Model Context Protocol integration.\n *\n * This module manages connections to MCP (Model Context Protocol) servers,\n * which provide extended capabilities to the agent through a standardized\n * interface. MCP servers can expose:\n *\n * - **Tools**: Functions the agent can call (e.g., database queries, APIs)\n * - **Resources**: Data the agent can read (e.g., files, configurations)\n * - **Prompts**: Pre-defined prompt templates\n *\n * ## Architecture\n *\n * The McpClientManager maintains connections to multiple MCP servers\n * simultaneously. Each server can use either:\n * - **Stdio transport**: Spawns a subprocess, communicates via stdin/stdout\n * - **SSE transport**: Connects to HTTP server using Server-Sent Events\n *\n * ## Security\n *\n * - Environment variables are NOT passed to MCP server subprocesses\n * - Only essential variables (PATH, HOME, USER, SHELL, TERM) are included\n * - Server-specific env vars must be explicitly configured\n *\n * ## Events\n *\n * The manager emits events for monitoring:\n * - `connected`: Server successfully connected\n * - `disconnected`: Server disconnected\n * - `error`: Connection or operation error\n * - `tools_changed`: Server's tool list updated\n * - `resources_changed`: Server's resource list updated\n * - `prompts_changed`: Server's prompt list updated\n * - `progress`: Progress update from long-running operations\n * - `log`: Log message from server\n */\n\nimport { execFile } from \"node:child_process\";\nimport { EventEmitter } from \"node:events\";\nimport { promisify } from \"node:util\";\nimport { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport { SSEClientTransport } from \"@modelcontextprotocol/sdk/client/sse.js\";\nimport { StdioClientTransport } from \"@modelcontextprotocol/sdk/client/stdio.js\";\nimport { StreamableHTTPClientTransport } from \"@modelcontextprotocol/sdk/client/streamableHttp.js\";\nimport type { Transport } from \"@modelcontextprotocol/sdk/shared/transport.js\";\nimport {\n\tElicitRequestSchema,\n\tLoggingMessageNotificationSchema,\n\ttype Prompt as McpPrompt,\n\ttype Tool as McpTool,\n\tProgressNotificationSchema,\n\tPromptListChangedNotificationSchema,\n\tResourceListChangedNotificationSchema,\n\tToolListChangedNotificationSchema,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport { parseCommandArguments } from \"../tools/shell-utils.js\";\nimport { createLogger } from \"../utils/logger.js\";\nimport { getHomeDir } from \"../utils/path-expansion.js\";\nimport {\n\tbuildMcpElicitationToolCallId,\n\tgetCurrentMcpClientToolService,\n\tnormalizeMcpElicitationArgs,\n\tparseMcpElicitationClientToolResult,\n} from \"./elicitation.js\";\nimport {\n\tgetMcpRemoteHost,\n\tgetOfficialMcpRegistryMatch,\n} from \"./official-registry.js\";\nimport { getProjectMcpServerApprovalStatus } from \"./project-approvals.js\";\nimport type {\n\tMcpAuthPresetConfig,\n\tMcpAuthPresetStatus,\n\tMcpConfig,\n\tMcpManagerStatus,\n\tMcpProjectApprovalStatus,\n\tMcpPromptDefinition,\n\tMcpServerConfig,\n\tMcpServerStatus,\n} from \"./types.js\";\n\nconst logger = createLogger(\"mcp:manager\");\nconst execFileAsync = promisify(execFile);\n\n/**\n * Result from calling an MCP tool.\n * Content can be text, binary data, or other MIME types.\n */\nexport interface McpToolCallResult {\n\tcontent: Array<{\n\t\ttype: string;\n\t\ttext?: string;\n\t\tdata?: string;\n\t\tmimeType?: string;\n\t}>;\n\tstructuredContent?: unknown;\n\tisError?: boolean;\n}\n\n// Connection timeout for initial server handshake\nconst DEFAULT_TIMEOUT_MS = 30000;\n\n// Delay between reconnection attempts (doubles each retry)\nconst DEFAULT_RECONNECT_DELAY_MS = 5000;\n\n// Maximum number of automatic reconnection attempts\nconst MAX_RECONNECT_ATTEMPTS = 3;\n\nfunction arraysEqual(\n\tleft: readonly string[] | undefined,\n\tright: readonly string[] | undefined,\n): boolean {\n\tif (left === right) {\n\t\treturn true;\n\t}\n\tif (!left || !right || left.length !== right.length) {\n\t\treturn false;\n\t}\n\treturn left.every((value, index) => value === right[index]);\n}\n\nfunction recordsEqual(\n\tleft: Record<string, string> | undefined,\n\tright: Record<string, string> | undefined,\n): boolean {\n\tif (left === right) {\n\t\treturn true;\n\t}\n\tif (!left || !right) {\n\t\treturn false;\n\t}\n\tconst leftEntries = Object.entries(left).sort(([leftKey], [rightKey]) =>\n\t\tleftKey.localeCompare(rightKey),\n\t);\n\tconst rightEntries = Object.entries(right).sort(([leftKey], [rightKey]) =>\n\t\tleftKey.localeCompare(rightKey),\n\t);\n\tif (leftEntries.length !== rightEntries.length) {\n\t\treturn false;\n\t}\n\treturn leftEntries.every(\n\t\t([leftKey, leftValue], index) =>\n\t\t\tleftKey === rightEntries[index]?.[0] &&\n\t\t\tleftValue === rightEntries[index]?.[1],\n\t);\n}\n\ninterface ResolvedRemoteAuthConfig {\n\theaders?: Record<string, string>;\n\theadersHelper?: string;\n\tpreset?: McpAuthPresetConfig;\n}\n\nfunction buildAuthPresetMap(\n\tauthPresets: readonly McpAuthPresetConfig[],\n): Map<string, McpAuthPresetConfig> {\n\treturn new Map(\n\t\t(authPresets ?? []).map((authPreset) => [authPreset.name, authPreset]),\n\t);\n}\n\nfunction resolveRemoteAuthConfig(\n\tconfig: McpServerConfig,\n\tauthPresetMap: ReadonlyMap<string, McpAuthPresetConfig>,\n): ResolvedRemoteAuthConfig {\n\tif (config.transport !== \"http\" && config.transport !== \"sse\") {\n\t\treturn {\n\t\t\theaders: config.headers,\n\t\t\theadersHelper: config.headersHelper,\n\t\t};\n\t}\n\n\tconst preset = config.authPreset\n\t\t? authPresetMap.get(config.authPreset)\n\t\t: undefined;\n\tconst headers = {\n\t\t...(preset?.headers ?? {}),\n\t\t...(config.headers ?? {}),\n\t};\n\n\treturn {\n\t\theaders: Object.keys(headers).length > 0 ? headers : undefined,\n\t\theadersHelper: config.headersHelper ?? preset?.headersHelper,\n\t\tpreset,\n\t};\n}\n\nfunction buildComparableServerConfig(\n\tconfig: McpServerConfig,\n\tauthPresetMap: ReadonlyMap<string, McpAuthPresetConfig>,\n): McpServerConfig {\n\tconst resolvedAuth = resolveRemoteAuthConfig(config, authPresetMap);\n\treturn {\n\t\t...config,\n\t\theaders: resolvedAuth.headers,\n\t\theadersHelper: resolvedAuth.headersHelper,\n\t};\n}\n\nfunction serverConfigsEqual(\n\tleft: McpServerConfig,\n\tright: McpServerConfig,\n): boolean {\n\treturn (\n\t\tleft.name === right.name &&\n\t\tleft.transport === right.transport &&\n\t\tleft.command === right.command &&\n\t\tarraysEqual(left.args, right.args) &&\n\t\trecordsEqual(left.env, right.env) &&\n\t\tleft.cwd === right.cwd &&\n\t\tleft.url === right.url &&\n\t\trecordsEqual(left.headers, right.headers) &&\n\t\tleft.headersHelper === right.headersHelper &&\n\t\tleft.enabled === right.enabled &&\n\t\tleft.disabled === right.disabled &&\n\t\tleft.timeout === right.timeout &&\n\t\tleft.scope === right.scope\n\t);\n}\n\nfunction buildProjectApprovalMap(\n\tconfig: McpConfig,\n): Map<string, McpProjectApprovalStatus> {\n\tconst approvals = new Map<string, McpProjectApprovalStatus>();\n\tif (!config.projectRoot) {\n\t\treturn approvals;\n\t}\n\tfor (const server of config.servers ?? []) {\n\t\tconst approval = getProjectMcpServerApprovalStatus({\n\t\t\tprojectRoot: config.projectRoot,\n\t\t\tserver,\n\t\t\tauthPresets: config.authPresets ?? [],\n\t\t});\n\t\tif (approval) {\n\t\t\tapprovals.set(server.name, approval);\n\t\t}\n\t}\n\treturn approvals;\n}\n\nfunction canConnectServer(\n\tserver: McpServerConfig,\n\tapprovalMap: ReadonlyMap<string, McpProjectApprovalStatus>,\n): boolean {\n\tconst approval = approvalMap.get(server.name);\n\treturn approval !== \"pending\" && approval !== \"denied\";\n}\n\nfunction buildSafeEnv(\n\texplicitEnv?: Record<string, string>,\n\textraEnv?: Record<string, string>,\n): Record<string, string> {\n\tconst safeBaseEnv: Record<string, string> = {};\n\tif (process.env.PATH) safeBaseEnv.PATH = process.env.PATH;\n\tif (process.env.HOME) {\n\t\tsafeBaseEnv.HOME = process.env.HOME;\n\t} else {\n\t\tconst homeDir = getHomeDir();\n\t\tif (homeDir) safeBaseEnv.HOME = homeDir;\n\t}\n\tif (process.env.USER) {\n\t\tsafeBaseEnv.USER = process.env.USER;\n\t} else if (process.env.USERNAME) {\n\t\tsafeBaseEnv.USER = process.env.USERNAME;\n\t}\n\tif (process.env.SHELL) safeBaseEnv.SHELL = process.env.SHELL;\n\tif (process.env.TERM) safeBaseEnv.TERM = process.env.TERM;\n\n\treturn Object.fromEntries(\n\t\tObject.entries({ ...safeBaseEnv, ...explicitEnv, ...extraEnv }).filter(\n\t\t\t([, value]) => value !== undefined,\n\t\t),\n\t) as Record<string, string>;\n}\n\nasync function resolveHeadersHelper(\n\tconfig: McpServerConfig,\n\theadersHelper = config.headersHelper,\n): Promise<Record<string, string> | undefined> {\n\tif (!headersHelper) {\n\t\treturn undefined;\n\t}\n\n\tlet command: string[];\n\ttry {\n\t\tcommand = parseCommandArguments(headersHelper);\n\t} catch (error) {\n\t\tlogger.warn(\"Invalid MCP headers helper command\", {\n\t\t\tname: config.name,\n\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t});\n\t\treturn undefined;\n\t}\n\n\tif (command.length === 0) {\n\t\tlogger.warn(\"Empty MCP headers helper command\", { name: config.name });\n\t\treturn undefined;\n\t}\n\n\ttry {\n\t\tconst { stdout } = await execFileAsync(command[0]!, command.slice(1), {\n\t\t\tcwd: config.cwd,\n\t\t\tenv: buildSafeEnv(config.env, {\n\t\t\t\tMAESTRO_MCP_SERVER_NAME: config.name,\n\t\t\t\tMAESTRO_MCP_SERVER_URL: config.url ?? \"\",\n\t\t\t}),\n\t\t\ttimeout: config.timeout ?? DEFAULT_TIMEOUT_MS,\n\t\t\tmaxBuffer: 1024 * 1024,\n\t\t\tencoding: \"utf8\",\n\t\t\twindowsHide: true,\n\t\t});\n\n\t\tconst trimmed = stdout.trim();\n\t\tif (!trimmed) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst parsed = JSON.parse(trimmed) as unknown;\n\t\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n\t\t\tthrow new Error(\"headersHelper must return a JSON object\");\n\t\t}\n\n\t\tconst headers: Record<string, string> = {};\n\t\tfor (const [key, value] of Object.entries(parsed)) {\n\t\t\tif (typeof value !== \"string\") {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`headersHelper must return string values for key \"${key}\"`,\n\t\t\t\t);\n\t\t\t}\n\t\t\theaders[key] = value;\n\t\t}\n\n\t\treturn headers;\n\t} catch (error) {\n\t\tlogger.warn(\"Failed to resolve MCP headers helper\", {\n\t\t\tname: config.name,\n\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t});\n\t\treturn undefined;\n\t}\n}\n\nasync function buildRemoteRequestInit(\n\tconfig: McpServerConfig,\n\tauthPresetMap: ReadonlyMap<string, McpAuthPresetConfig>,\n): Promise<RequestInit | undefined> {\n\tconst resolvedAuth = resolveRemoteAuthConfig(config, authPresetMap);\n\tconst helperHeaders = await resolveHeadersHelper(\n\t\tconfig,\n\t\tresolvedAuth.headersHelper,\n\t);\n\tconst headers = {\n\t\t...(resolvedAuth.headers ?? {}),\n\t\t...(helperHeaders ?? {}),\n\t};\n\n\treturn Object.keys(headers).length > 0 ? { headers } : undefined;\n}\n\n/**\n * Internal state for a connected MCP server.\n * Tracks the client, transport, and cached capabilities.\n */\ninterface ConnectedServer {\n\t/** Original configuration */\n\tconfig: McpServerConfig;\n\t/** MCP client instance */\n\tclient: Client;\n\t/** Transport layer (stdio or SSE) */\n\ttransport: Transport;\n\t/** Cached list of available tools */\n\ttools: McpTool[];\n\t/** Cached list of resource URIs */\n\tresources: string[];\n\t/** Cached list of prompt names */\n\tprompts: string[];\n\t/** Cached prompt metadata for structured prompt UIs */\n\tpromptDetails: McpPromptDefinition[];\n\t/** Counter for reconnection attempts */\n\treconnectAttempts: number;\n}\n\nfunction normalizePromptDefinition(prompt: McpPrompt): McpPromptDefinition {\n\treturn {\n\t\tname: prompt.name,\n\t\ttitle: prompt.title,\n\t\tdescription: prompt.description,\n\t\targuments:\n\t\t\tprompt.arguments?.map((argument) => ({\n\t\t\t\tname: argument.name,\n\t\t\t\tdescription: argument.description,\n\t\t\t\trequired: argument.required,\n\t\t\t})) ?? [],\n\t};\n}\n\nfunction getPromptNames(\n\tpromptDetails: readonly McpPromptDefinition[],\n): string[] {\n\treturn promptDetails.map((prompt) => prompt.name);\n}\n\n/**\n * Manager for MCP (Model Context Protocol) server connections.\n *\n * Handles connection lifecycle, tool discovery, and message routing\n * for multiple MCP servers. Supports automatic reconnection on failure.\n */\nexport class McpClientManager extends EventEmitter {\n\t/** Map of server name to connected server state */\n\tprivate servers = new Map<string, ConnectedServer>();\n\n\t/** Map of server name to in-flight connection promise (prevents duplicates) */\n\tprivate connecting = new Map<string, Promise<void>>();\n\n\t/** Map of server name to pending reconnect timer */\n\tprivate reconnectTimers = new Map<string, ReturnType<typeof setTimeout>>();\n\n\t/** Last connection or runtime error reported for each configured server */\n\tprivate lastErrors = new Map<string, string>();\n\n\t/** Current configuration */\n\tprivate config: McpConfig = { servers: [], authPresets: [] };\n\n\t/**\n\t * Apply a new configuration, connecting/disconnecting servers as needed.\n\t *\n\t * Compares old and new configs to determine which servers to add or remove,\n\t * then performs the necessary connect/disconnect operations.\n\t *\n\t * @param config - New MCP configuration with server list\n\t */\n\tasync configure(config: McpConfig): Promise<void> {\n\t\tconst nextConfig: McpConfig = {\n\t\t\tservers: config.servers ?? [],\n\t\t\tauthPresets: config.authPresets ?? [],\n\t\t\tprojectRoot: config.projectRoot,\n\t\t\tenvLimits: config.envLimits,\n\t\t};\n\t\tconst previousAuthPresetMap = buildAuthPresetMap(this.config.authPresets);\n\t\tconst nextAuthPresetMap = buildAuthPresetMap(nextConfig.authPresets);\n\t\tconst previousApprovalMap = buildProjectApprovalMap(this.config);\n\t\tconst nextApprovalMap = buildProjectApprovalMap(nextConfig);\n\t\tconst previousServers = new Map(\n\t\t\tthis.config.servers.map((server) => [server.name, server]),\n\t\t);\n\t\tconst oldServerNames = new Set(previousServers.keys());\n\t\tconst newServerNames = new Set(nextConfig.servers.map((s) => s.name));\n\n\t\t// Find servers to remove (in old but not in new)\n\t\tconst toRemove = [...oldServerNames].filter((n) => !newServerNames.has(n));\n\n\t\t// Reconnect servers whose config changed in place.\n\t\tconst toReconnect = nextConfig.servers.filter((server) => {\n\t\t\tconst previous = previousServers.get(server.name);\n\t\t\treturn (\n\t\t\t\tprevious &&\n\t\t\t\t(!serverConfigsEqual(\n\t\t\t\t\tbuildComparableServerConfig(previous, previousAuthPresetMap),\n\t\t\t\t\tbuildComparableServerConfig(server, nextAuthPresetMap),\n\t\t\t\t) ||\n\t\t\t\t\tcanConnectServer(previous, previousApprovalMap) !==\n\t\t\t\t\t\tcanConnectServer(server, nextApprovalMap))\n\t\t\t);\n\t\t});\n\t\tconst reconnectNames = new Set(toReconnect.map((server) => server.name));\n\n\t\t// Find servers to add (in new but not in old)\n\t\tconst toAdd = nextConfig.servers.filter(\n\t\t\t(server) => !oldServerNames.has(server.name),\n\t\t);\n\n\t\tthis.config = nextConfig;\n\n\t\t// Disconnect removed servers (don't wait for success)\n\t\tawait Promise.allSettled(\n\t\t\ttoRemove.map((name) => this.disconnectServer(name)),\n\t\t);\n\n\t\t// Disconnect and reconnect updated servers so in-place edits take effect.\n\t\tawait Promise.allSettled(\n\t\t\ttoReconnect.map(async (server) => {\n\t\t\t\tconst pendingConnection = this.connecting.get(server.name);\n\t\t\t\tif (pendingConnection) {\n\t\t\t\t\tawait Promise.allSettled([pendingConnection]);\n\t\t\t\t}\n\t\t\t\tawait this.disconnectServer(server.name);\n\t\t\t\tif (canConnectServer(server, nextApprovalMap)) {\n\t\t\t\t\tawait this.connectServer(server);\n\t\t\t\t}\n\t\t\t}),\n\t\t);\n\n\t\t// Connect new servers (don't wait for success)\n\t\tawait Promise.allSettled(\n\t\t\ttoAdd\n\t\t\t\t.filter(\n\t\t\t\t\t(server) =>\n\t\t\t\t\t\t!reconnectNames.has(server.name) &&\n\t\t\t\t\t\tcanConnectServer(server, nextApprovalMap),\n\t\t\t\t)\n\t\t\t\t.map((server) => this.connectServer(server)),\n\t\t);\n\t}\n\n\t/**\n\t * Connect to all configured servers.\n\t * Non-blocking - returns after connection attempts are started.\n\t */\n\tasync connectAll(): Promise<void> {\n\t\tconst approvalMap = buildProjectApprovalMap(this.config);\n\t\tconst promises = this.config.servers\n\t\t\t.filter((server) => canConnectServer(server, approvalMap))\n\t\t\t.map((server) => this.connectServer(server));\n\t\tawait Promise.allSettled(promises);\n\t}\n\n\t/**\n\t * Disconnect from all servers and cancel pending reconnects.\n\t */\n\tasync disconnectAll(): Promise<void> {\n\t\t// Clear all pending reconnect timers first\n\t\tfor (const [name, timer] of this.reconnectTimers) {\n\t\t\tclearTimeout(timer);\n\t\t}\n\t\tthis.reconnectTimers.clear();\n\n\t\t// Disconnect all servers\n\t\tconst promises = Array.from(this.servers.keys()).map((name) =>\n\t\t\tthis.disconnectServer(name),\n\t\t);\n\t\tawait Promise.allSettled(promises);\n\t}\n\n\t/**\n\t * Internal: Connect to a single server.\n\t * Handles deduplication of concurrent connection attempts.\n\t */\n\tprivate async connectServer(config: McpServerConfig): Promise<void> {\n\t\tconst { name } = config;\n\n\t\t// Avoid duplicate connections\n\t\tif (this.servers.has(name)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Check for in-flight connection (prevent race conditions)\n\t\tconst existing = this.connecting.get(name);\n\t\tif (existing) {\n\t\t\treturn existing;\n\t\t}\n\n\t\t// Track this connection attempt\n\t\tconst task = this.doConnect(config);\n\t\tthis.connecting.set(name, task);\n\n\t\ttry {\n\t\t\tawait task;\n\t\t} finally {\n\t\t\tthis.connecting.delete(name);\n\t\t}\n\t}\n\n\t/**\n\t * Internal: Perform the actual connection to an MCP server.\n\t *\n\t * Creates the appropriate transport (stdio or SSE), establishes connection,\n\t * fetches server capabilities (tools, resources, prompts), and sets up\n\t * notification handlers.\n\t *\n\t * @param config - Server configuration\n\t * @param isReconnect - Whether this is a reconnection attempt\n\t */\n\tprivate async doConnect(\n\t\tconfig: McpServerConfig,\n\t\tisReconnect = false,\n\t): Promise<void> {\n\t\tconst { name, transport: transportType } = config;\n\n\t\ttry {\n\t\t\tlet transport: Transport;\n\n\t\t\t// Create transport based on configuration\n\t\t\tif (transportType === \"http\" || transportType === \"sse\") {\n\t\t\t\t// HTTP/SSE transport - connect to remote server\n\t\t\t\tif (!config.url) {\n\t\t\t\t\tlogger.warn(\"No URL specified for HTTP server\", { name });\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst requestInit = await buildRemoteRequestInit(\n\t\t\t\t\tconfig,\n\t\t\t\t\tbuildAuthPresetMap(this.config.authPresets),\n\t\t\t\t);\n\t\t\t\tconst transportOptions = requestInit ? { requestInit } : undefined;\n\n\t\t\t\tif (transportType === \"http\") {\n\t\t\t\t\ttransport = new StreamableHTTPClientTransport(\n\t\t\t\t\t\tnew URL(config.url),\n\t\t\t\t\t\ttransportOptions,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\ttransport = new SSEClientTransport(\n\t\t\t\t\t\tnew URL(config.url),\n\t\t\t\t\t\ttransportOptions,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Stdio transport - spawn subprocess\n\t\t\t\tif (!config.command) {\n\t\t\t\t\tlogger.warn(\"No command specified for server\", { name });\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// SECURITY: Only pass essential env vars plus explicit config\n\t\t\t\t// Do NOT pass process.env - this would leak API keys and secrets\n\t\t\t\ttransport = new StdioClientTransport({\n\t\t\t\t\tcommand: config.command,\n\t\t\t\t\targs: config.args,\n\t\t\t\t\tenv: buildSafeEnv(config.env),\n\t\t\t\t\tcwd: config.cwd,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst client = new Client(\n\t\t\t\t{\n\t\t\t\t\tname: \"composer\",\n\t\t\t\t\tversion: \"1.0.0\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcapabilities: {\n\t\t\t\t\t\telicitation: {\n\t\t\t\t\t\t\tform: { applyDefaults: true },\n\t\t\t\t\t\t\turl: {},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tclient.setRequestHandler(ElicitRequestSchema, async (request, extra) => {\n\t\t\t\tconst clientToolService = getCurrentMcpClientToolService();\n\t\t\t\tif (!clientToolService) {\n\t\t\t\t\treturn { action: \"cancel\" };\n\t\t\t\t}\n\n\t\t\t\tconst requestId =\n\t\t\t\t\textra.requestId ??\n\t\t\t\t\t(\"elicitationId\" in request.params\n\t\t\t\t\t\t? request.params.elicitationId\n\t\t\t\t\t\t: \"unknown\");\n\t\t\t\tconst toolCallId = buildMcpElicitationToolCallId(name, requestId);\n\n\t\t\t\ttry {\n\t\t\t\t\tconst result = await clientToolService.requestExecution(\n\t\t\t\t\t\ttoolCallId,\n\t\t\t\t\t\t\"mcp_elicitation\",\n\t\t\t\t\t\tnormalizeMcpElicitationArgs(name, requestId, request.params),\n\t\t\t\t\t\textra.signal,\n\t\t\t\t\t);\n\t\t\t\t\treturn parseMcpElicitationClientToolResult(\n\t\t\t\t\t\tresult.content,\n\t\t\t\t\t\tresult.isError,\n\t\t\t\t\t);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.warn(\"Failed to resolve MCP elicitation request\", {\n\t\t\t\t\t\tname,\n\t\t\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\t\t});\n\t\t\t\t\treturn { action: \"cancel\" };\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tawait client.connect(transport, {\n\t\t\t\ttimeout: config.timeout ?? DEFAULT_TIMEOUT_MS,\n\t\t\t});\n\n\t\t\t// Fetch capabilities\n\t\t\tconst tools = await this.fetchTools(client);\n\t\t\tconst resources = await this.fetchResources(client);\n\t\t\tconst promptDetails = await this.fetchPrompts(client);\n\t\t\tconst prompts = getPromptNames(promptDetails);\n\n\t\t\tthis.servers.set(name, {\n\t\t\t\tconfig,\n\t\t\t\tclient,\n\t\t\t\ttransport,\n\t\t\t\ttools,\n\t\t\t\tresources,\n\t\t\t\tprompts,\n\t\t\t\tpromptDetails,\n\t\t\t\treconnectAttempts: 0,\n\t\t\t});\n\t\t\tthis.lastErrors.delete(name);\n\n\t\t\t// Set up notification handlers after adding to servers map\n\t\t\t// to avoid race condition where notifications arrive before server is tracked\n\t\t\tthis.setupNotificationHandlers(client, name);\n\n\t\t\tthis.emit(\"connected\", { name, tools: tools.length, isReconnect });\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthis.lastErrors.set(name, message);\n\t\t\tlogger.error(\n\t\t\t\t\"Failed to connect to server\",\n\t\t\t\terror instanceof Error ? error : new Error(message),\n\t\t\t\t{ name },\n\t\t\t);\n\t\t\tthis.emit(\"error\", { name, error: message });\n\n\t\t\t// Schedule reconnection for non-reconnect attempts\n\t\t\tif (!isReconnect) {\n\t\t\t\tthis.scheduleReconnect(config, 0);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate scheduleReconnect(config: McpServerConfig, attempt: number): void {\n\t\tif (attempt >= MAX_RECONNECT_ATTEMPTS) {\n\t\t\tlogger.warn(\"Max reconnection attempts reached\", { name: config.name });\n\t\t\treturn;\n\t\t}\n\n\t\t// Clear any existing timer for this server\n\t\tconst existingTimer = this.reconnectTimers.get(config.name);\n\t\tif (existingTimer) {\n\t\t\tclearTimeout(existingTimer);\n\t\t}\n\n\t\tconst delay = DEFAULT_RECONNECT_DELAY_MS * 2 ** attempt;\n\t\tlogger.info(\"Scheduling reconnect\", {\n\t\t\tserver: config.name,\n\t\t\tdelayMs: delay,\n\t\t\tattempt: attempt + 1,\n\t\t\tmaxAttempts: MAX_RECONNECT_ATTEMPTS,\n\t\t});\n\n\t\tconst timeoutId = setTimeout(async () => {\n\t\t\tthis.reconnectTimers.delete(config.name);\n\n\t\t\tif (this.servers.has(config.name)) {\n\t\t\t\treturn; // Already reconnected\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tawait this.doConnect(config, true);\n\t\t\t\t// If doConnect succeeded (server is now connected), we're done\n\t\t\t\tif (!this.servers.has(config.name)) {\n\t\t\t\t\t// Connection failed (doConnect caught the error), schedule retry\n\t\t\t\t\tthis.scheduleReconnect(config, attempt + 1);\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// Unexpected error, schedule retry\n\t\t\t\tthis.scheduleReconnect(config, attempt + 1);\n\t\t\t}\n\t\t}, delay);\n\n\t\tthis.reconnectTimers.set(config.name, timeoutId);\n\t}\n\n\t/**\n\t * Manually trigger reconnection for a server\n\t */\n\tasync reconnect(name: string): Promise<boolean> {\n\t\tconst config = this.config.servers.find((s) => s.name === name);\n\t\tif (!config) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!canConnectServer(config, buildProjectApprovalMap(this.config))) {\n\t\t\tawait this.disconnectServer(name);\n\t\t\treturn false;\n\t\t}\n\n\t\tawait this.disconnectServer(name);\n\t\tawait this.doConnect(config, true);\n\t\treturn this.servers.has(name);\n\t}\n\n\tprivate async fetchTools(client: Client): Promise<McpTool[]> {\n\t\ttry {\n\t\t\tconst caps = client.getServerCapabilities();\n\t\t\tif (!caps?.tools) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tconst result = await client.listTools();\n\t\t\treturn result.tools;\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tprivate async fetchResources(client: Client): Promise<string[]> {\n\t\ttry {\n\t\t\tconst caps = client.getServerCapabilities();\n\t\t\tif (!caps?.resources) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tconst result = await client.listResources();\n\t\t\treturn result.resources.map((r) => r.uri);\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tprivate async fetchPrompts(client: Client): Promise<McpPromptDefinition[]> {\n\t\ttry {\n\t\t\tconst caps = client.getServerCapabilities();\n\t\t\tif (!caps?.prompts) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tconst result = await client.listPrompts();\n\t\t\treturn result.prompts.map(normalizePromptDefinition);\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\tprivate setupNotificationHandlers(client: Client, serverName: string): void {\n\t\t// Tool list changes - refresh tools when server notifies\n\t\tclient.setNotificationHandler(\n\t\t\tToolListChangedNotificationSchema,\n\t\t\tasync () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst server = this.servers.get(serverName);\n\t\t\t\t\tif (server) {\n\t\t\t\t\t\tserver.tools = await this.fetchTools(client);\n\t\t\t\t\t\tthis.emit(\"tools_changed\", {\n\t\t\t\t\t\t\tname: serverName,\n\t\t\t\t\t\t\ttools: server.tools,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error(\n\t\t\t\t\t\t\"Failed to refresh tools\",\n\t\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\t{ serverName },\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\n\t\t// Resource list changes\n\t\tclient.setNotificationHandler(\n\t\t\tResourceListChangedNotificationSchema,\n\t\t\tasync () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst server = this.servers.get(serverName);\n\t\t\t\t\tif (server) {\n\t\t\t\t\t\tserver.resources = await this.fetchResources(client);\n\t\t\t\t\t\tthis.emit(\"resources_changed\", {\n\t\t\t\t\t\t\tname: serverName,\n\t\t\t\t\t\t\tresources: server.resources,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error(\n\t\t\t\t\t\t\"Failed to refresh resources\",\n\t\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\t{ serverName },\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\n\t\t// Prompt list changes\n\t\tclient.setNotificationHandler(\n\t\t\tPromptListChangedNotificationSchema,\n\t\t\tasync () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst server = this.servers.get(serverName);\n\t\t\t\t\tif (server) {\n\t\t\t\t\t\tserver.promptDetails = await this.fetchPrompts(client);\n\t\t\t\t\t\tserver.prompts = getPromptNames(server.promptDetails);\n\t\t\t\t\t\tthis.emit(\"prompts_changed\", {\n\t\t\t\t\t\t\tname: serverName,\n\t\t\t\t\t\t\tprompts: server.prompts,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tlogger.error(\n\t\t\t\t\t\t\"Failed to refresh prompts\",\n\t\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\t{ serverName },\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\n\t\t// Progress notifications for long-running operations\n\t\tclient.setNotificationHandler(\n\t\t\tProgressNotificationSchema,\n\t\t\t(notification) => {\n\t\t\t\tthis.emit(\"progress\", {\n\t\t\t\t\tname: serverName,\n\t\t\t\t\tprogressToken: notification.params.progressToken,\n\t\t\t\t\tprogress: notification.params.progress,\n\t\t\t\t\ttotal: notification.params.total,\n\t\t\t\t\tmessage: notification.params.message,\n\t\t\t\t});\n\t\t\t},\n\t\t);\n\n\t\t// Logging messages from MCP servers\n\t\tclient.setNotificationHandler(\n\t\t\tLoggingMessageNotificationSchema,\n\t\t\t(notification) => {\n\t\t\t\tthis.emit(\"log\", {\n\t\t\t\t\tname: serverName,\n\t\t\t\t\tlevel: notification.params.level,\n\t\t\t\t\tlogger: notification.params.logger,\n\t\t\t\t\tdata: notification.params.data,\n\t\t\t\t});\n\t\t\t},\n\t\t);\n\t}\n\n\tprivate async disconnectServer(name: string): Promise<void> {\n\t\t// Clear any pending reconnect timer for this server\n\t\tconst timer = this.reconnectTimers.get(name);\n\t\tif (timer) {\n\t\t\tclearTimeout(timer);\n\t\t\tthis.reconnectTimers.delete(name);\n\t\t}\n\n\t\tconst server = this.servers.get(name);\n\t\tif (!server) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tawait server.client.close();\n\t\t} catch (error) {\n\t\t\tlogger.warn(\"Error closing client\", {\n\t\t\t\tname,\n\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t});\n\t\t}\n\n\t\t// Also close the transport to clean up underlying resources\n\t\ttry {\n\t\t\tawait server.transport.close();\n\t\t} catch (error) {\n\t\t\tlogger.warn(\"Error closing transport\", {\n\t\t\t\tname,\n\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t});\n\t\t}\n\n\t\tthis.servers.delete(name);\n\t\tthis.emit(\"disconnected\", { name });\n\t}\n\n\tasync callTool(\n\t\tserverName: string,\n\t\ttoolName: string,\n\t\targs: Record<string, unknown>,\n\t): Promise<McpToolCallResult> {\n\t\tconst server = this.servers.get(serverName);\n\t\tif (!server) {\n\t\t\tthrow new Error(`MCP server '${serverName}' not connected`);\n\t\t}\n\n\t\tconst result = await server.client.callTool({\n\t\t\tname: toolName,\n\t\t\targuments: args,\n\t\t});\n\n\t\t// Normalize the result to our interface\n\t\tconst content = Array.isArray(result.content)\n\t\t\t? result.content.map((c: Record<string, unknown>) => ({\n\t\t\t\t\ttype: String(c.type ?? \"unknown\"),\n\t\t\t\t\ttext: typeof c.text === \"string\" ? c.text : undefined,\n\t\t\t\t\tdata: typeof c.data === \"string\" ? c.data : undefined,\n\t\t\t\t\tmimeType: typeof c.mimeType === \"string\" ? c.mimeType : undefined,\n\t\t\t\t}))\n\t\t\t: [];\n\n\t\treturn {\n\t\t\tcontent,\n\t\t\tstructuredContent:\n\t\t\t\t\"structuredContent\" in result ? result.structuredContent : undefined,\n\t\t\tisError: typeof result.isError === \"boolean\" ? result.isError : undefined,\n\t\t};\n\t}\n\n\tgetAllTools(): Array<{ server: string; tool: McpTool }> {\n\t\tconst tools: Array<{ server: string; tool: McpTool }> = [];\n\t\tfor (const [serverName, server] of this.servers) {\n\t\t\tfor (const tool of server.tools) {\n\t\t\t\ttools.push({ server: serverName, tool });\n\t\t\t}\n\t\t}\n\t\treturn tools;\n\t}\n\n\tgetStatus(): McpManagerStatus {\n\t\tconst servers: McpServerStatus[] = [];\n\t\tconst authPresets: McpAuthPresetStatus[] = (\n\t\t\tthis.config.authPresets ?? []\n\t\t).map((authPreset) => ({\n\t\t\tname: authPreset.name,\n\t\t\tscope: authPreset.scope,\n\t\t\theaderKeys: authPreset.headers\n\t\t\t\t? Object.keys(authPreset.headers).sort()\n\t\t\t\t: [],\n\t\t\theadersHelper: authPreset.headersHelper,\n\t\t}));\n\t\tconst authPresetMap = buildAuthPresetMap(this.config.authPresets ?? []);\n\t\tconst approvalMap = buildProjectApprovalMap(this.config);\n\n\t\t// Include configured but not connected servers\n\t\tfor (const config of this.config.servers) {\n\t\t\tconst connected = this.servers.get(config.name);\n\t\t\tconst projectApproval = approvalMap.get(config.name);\n\t\t\tconst resolvedAuth = resolveRemoteAuthConfig(config, authPresetMap);\n\t\t\tconst remoteUrl =\n\t\t\t\tconfig.transport === \"http\" || config.transport === \"sse\"\n\t\t\t\t\t? config.url\n\t\t\t\t\t: undefined;\n\t\t\tconst remoteHost = remoteUrl ? getMcpRemoteHost(remoteUrl) : undefined;\n\t\t\tconst remoteRegistryMatch = remoteUrl\n\t\t\t\t? getOfficialMcpRegistryMatch(remoteUrl)\n\t\t\t\t: undefined;\n\t\t\tservers.push({\n\t\t\t\tname: config.name,\n\t\t\t\tconnected: !!connected,\n\t\t\t\terror:\n\t\t\t\t\tprojectApproval === \"pending\" || projectApproval === \"denied\"\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: this.lastErrors.get(config.name),\n\t\t\t\tscope: config.scope,\n\t\t\t\ttransport: config.transport,\n\t\t\t\ttools: connected?.tools ?? [],\n\t\t\t\tresources: connected?.resources ?? [],\n\t\t\t\tprompts: connected?.prompts ?? [],\n\t\t\t\tpromptDetails:\n\t\t\t\t\tconnected && connected.promptDetails.length > 0\n\t\t\t\t\t\t? connected.promptDetails\n\t\t\t\t\t\t: undefined,\n\t\t\t\tcommand: config.transport === \"stdio\" ? config.command : undefined,\n\t\t\t\targs: config.transport === \"stdio\" ? config.args : undefined,\n\t\t\t\tcwd: config.transport === \"stdio\" ? config.cwd : undefined,\n\t\t\t\tenvKeys: config.env ? Object.keys(config.env).sort() : [],\n\t\t\t\tremoteUrl,\n\t\t\t\tremoteHost,\n\t\t\t\theaderKeys: resolvedAuth.headers\n\t\t\t\t\t? Object.keys(resolvedAuth.headers).sort()\n\t\t\t\t\t: [],\n\t\t\t\theadersHelper: resolvedAuth.headersHelper,\n\t\t\t\tauthPreset: config.authPreset,\n\t\t\t\ttimeout: config.timeout,\n\t\t\t\tremoteTrust: remoteRegistryMatch?.trust,\n\t\t\t\tofficialRegistry: remoteRegistryMatch?.info,\n\t\t\t\tprojectApproval,\n\t\t\t});\n\t\t}\n\n\t\treturn { servers, authPresets };\n\t}\n\n\tgetServer(name: string): ConnectedServer | undefined {\n\t\treturn this.servers.get(name);\n\t}\n\n\tisConnected(name: string): boolean {\n\t\treturn this.servers.has(name);\n\t}\n\n\t/**\n\t * Read a resource from an MCP server\n\t */\n\tasync readResource(\n\t\tserverName: string,\n\t\turi: string,\n\t): Promise<{\n\t\tcontents: Array<{\n\t\t\turi: string;\n\t\t\ttext?: string;\n\t\t\tblob?: string;\n\t\t\tmimeType?: string;\n\t\t}>;\n\t}> {\n\t\tconst server = this.servers.get(serverName);\n\t\tif (!server) {\n\t\t\tthrow new Error(`MCP server '${serverName}' not connected`);\n\t\t}\n\n\t\tconst result = await server.client.readResource({ uri });\n\t\treturn {\n\t\t\tcontents: result.contents.map((c) => ({\n\t\t\t\turi: c.uri,\n\t\t\t\ttext: \"text\" in c ? c.text : undefined,\n\t\t\t\tblob: \"blob\" in c ? c.blob : undefined,\n\t\t\t\tmimeType: c.mimeType,\n\t\t\t})),\n\t\t};\n\t}\n\n\t/**\n\t * Get a prompt from an MCP server\n\t */\n\tasync getPrompt(\n\t\tserverName: string,\n\t\tpromptName: string,\n\t\targs?: Record<string, string>,\n\t): Promise<{\n\t\tdescription?: string;\n\t\tmessages: Array<{ role: string; content: string }>;\n\t}> {\n\t\tconst server = this.servers.get(serverName);\n\t\tif (!server) {\n\t\t\tthrow new Error(`MCP server '${serverName}' not connected`);\n\t\t}\n\n\t\tconst result = await server.client.getPrompt({\n\t\t\tname: promptName,\n\t\t\targuments: args,\n\t\t});\n\t\treturn {\n\t\t\tdescription: result.description,\n\t\t\tmessages: result.messages.map((m) => ({\n\t\t\t\trole: m.role,\n\t\t\t\tcontent:\n\t\t\t\t\ttypeof m.content === \"string\"\n\t\t\t\t\t\t? m.content\n\t\t\t\t\t\t: m.content.type === \"text\"\n\t\t\t\t\t\t\t? m.content.text\n\t\t\t\t\t\t\t: \"[non-text content]\",\n\t\t\t})),\n\t\t};\n\t}\n}\n\n/**\n * Singleton MCP client manager instance.\n *\n * Use this for all MCP operations in the application.\n * Configure with `mcpManager.configure(config)` at startup.\n */\nexport const mcpManager = new McpClientManager();\n"]}
@@ -0,0 +1,3 @@
1
+ import type { McpServerConfig } from "./types.js";
2
+ export declare function getPlatformMcpPluginServers(): McpServerConfig[];
3
+ //# sourceMappingURL=platform-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-plugin.d.ts","sourceRoot":"","sources":["../../src/mcp/platform-plugin.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAmHlD,wBAAgB,2BAA2B,IAAI,eAAe,EAAE,CAqB/D"}
@@ -0,0 +1,117 @@
1
+ import { getStoredEvalOpsAgentMcpMetadata } from "../evalops/agent-bootstrap.js";
2
+ import { getEnvValue, normalizeBaseUrl, resolveConfiguredToken, resolveWorkspaceId, } from "../platform/client.js";
3
+ const PLATFORM_MCP_DISABLED_VALUES = new Set(["0", "false", "no", "off"]);
4
+ const PLATFORM_MCP_ENABLED_ENV_VARS = [
5
+ "MAESTRO_PLATFORM_MCP_ENABLED",
6
+ "MAESTRO_AGENT_MCP_ENABLED",
7
+ ];
8
+ const PLATFORM_MCP_NAME_ENV_VARS = [
9
+ "MAESTRO_PLATFORM_MCP_NAME",
10
+ "MAESTRO_AGENT_MCP_NAME",
11
+ ];
12
+ const PLATFORM_MCP_URL_ENV_VARS = [
13
+ "MAESTRO_PLATFORM_MCP_URL",
14
+ "MAESTRO_AGENT_MCP_URL",
15
+ "MAESTRO_EVALOPS_AGENT_MCP_URL",
16
+ ];
17
+ const PLATFORM_MCP_MANIFEST_URL_ENV_VARS = [
18
+ "MAESTRO_PLATFORM_MCP_MANIFEST_URL",
19
+ "MAESTRO_AGENT_MCP_MANIFEST_URL",
20
+ "MAESTRO_EVALOPS_AGENT_MCP_MANIFEST_URL",
21
+ ];
22
+ const PLATFORM_MCP_TOKEN_ENV_VARS = [
23
+ "MAESTRO_PLATFORM_MCP_TOKEN",
24
+ "MAESTRO_AGENT_MCP_TOKEN",
25
+ "MAESTRO_EVALOPS_ACCESS_TOKEN",
26
+ "EVALOPS_TOKEN",
27
+ ];
28
+ const PLATFORM_MCP_WORKSPACE_ENV_VARS = [
29
+ "MAESTRO_WORKSPACE_ID",
30
+ "MAESTRO_EVALOPS_WORKSPACE_ID",
31
+ "MAESTRO_EVALOPS_ORG_ID",
32
+ "EVALOPS_ORGANIZATION_ID",
33
+ "MAESTRO_ENTERPRISE_ORG_ID",
34
+ ];
35
+ const PLATFORM_MCP_AGENT_ID_ENV_VARS = [
36
+ "MAESTRO_AGENT_ID",
37
+ "MAESTRO_EVALOPS_AGENT_ID",
38
+ ];
39
+ const PLATFORM_MCP_SCOPES_ENV_VARS = [
40
+ "MAESTRO_PLATFORM_MCP_SCOPES",
41
+ "MAESTRO_AGENT_MCP_SCOPES",
42
+ "MAESTRO_EVALOPS_AGENT_MCP_SCOPES",
43
+ "MAESTRO_CEREBRO_MCP_SCOPES",
44
+ ];
45
+ const DEFAULT_PLATFORM_MCP_SERVER_NAME = "evalops";
46
+ const AGENT_MCP_MANIFEST_PATH = "/.well-known/evalops/agent-mcp.json";
47
+ const AGENT_MCP_PATH = "/mcp";
48
+ function isPlatformMcpExplicitlyDisabled() {
49
+ const enabled = getEnvValue(PLATFORM_MCP_ENABLED_ENV_VARS);
50
+ if (!enabled) {
51
+ return false;
52
+ }
53
+ return PLATFORM_MCP_DISABLED_VALUES.has(enabled.trim().toLowerCase());
54
+ }
55
+ function buildPlatformMcpHeaders() {
56
+ const stored = getStoredEvalOpsAgentMcpMetadata();
57
+ const token = getEnvValue(PLATFORM_MCP_TOKEN_ENV_VARS) ??
58
+ stored?.apiKey ??
59
+ resolveConfiguredToken(PLATFORM_MCP_TOKEN_ENV_VARS);
60
+ const workspaceId = resolveWorkspaceId(PLATFORM_MCP_WORKSPACE_ENV_VARS) ?? stored?.workspaceId;
61
+ const headers = Object.fromEntries(Object.entries({
62
+ ...(token ? { Authorization: `Bearer ${token}` } : {}),
63
+ "Mcp-Session-Id": getEnvValue(["MAESTRO_SESSION_ID"]),
64
+ "X-EvalOps-Workspace-Id": workspaceId,
65
+ "X-EvalOps-Session-Id": getEnvValue(["MAESTRO_SESSION_ID"]),
66
+ "X-EvalOps-Agent-Id": getEnvValue(PLATFORM_MCP_AGENT_ID_ENV_VARS) ?? stored?.agentId,
67
+ "X-EvalOps-Agent-Run-Id": getEnvValue(["MAESTRO_AGENT_RUN_ID"]) ?? stored?.runId,
68
+ "X-EvalOps-Scopes": getEnvValue(PLATFORM_MCP_SCOPES_ENV_VARS),
69
+ "X-EvalOps-Request-Id": getEnvValue(["MAESTRO_REQUEST_ID"]),
70
+ "X-EvalOps-Trace-Id": getEnvValue(["TRACE_ID", "OTEL_TRACE_ID"]),
71
+ "X-EvalOps-Maestro-Surface": getEnvValue(["MAESTRO_SURFACE"]) ?? "maestro",
72
+ }).filter((entry) => typeof entry[1] === "string" && entry[1].trim().length > 0));
73
+ return Object.keys(headers).length > 0 ? headers : undefined;
74
+ }
75
+ function normalizePlatformMcpEndpoint(url) {
76
+ const normalized = normalizeBaseUrl(url);
77
+ try {
78
+ const parsed = new URL(normalized);
79
+ if (parsed.pathname === "" ||
80
+ parsed.pathname === "/" ||
81
+ parsed.pathname === AGENT_MCP_MANIFEST_PATH) {
82
+ parsed.pathname = AGENT_MCP_PATH;
83
+ parsed.search = "";
84
+ parsed.hash = "";
85
+ return normalizeBaseUrl(parsed.toString());
86
+ }
87
+ }
88
+ catch {
89
+ // Keep the existing permissive behavior for non-standard local test URLs.
90
+ }
91
+ return normalized;
92
+ }
93
+ function resolvePlatformMcpURL() {
94
+ return (getEnvValue(PLATFORM_MCP_URL_ENV_VARS) ??
95
+ getEnvValue(PLATFORM_MCP_MANIFEST_URL_ENV_VARS) ??
96
+ getStoredEvalOpsAgentMcpMetadata()?.endpoint);
97
+ }
98
+ export function getPlatformMcpPluginServers() {
99
+ if (isPlatformMcpExplicitlyDisabled()) {
100
+ return [];
101
+ }
102
+ const url = resolvePlatformMcpURL();
103
+ if (!url) {
104
+ return [];
105
+ }
106
+ return [
107
+ {
108
+ name: getEnvValue(PLATFORM_MCP_NAME_ENV_VARS) ??
109
+ DEFAULT_PLATFORM_MCP_SERVER_NAME,
110
+ transport: "http",
111
+ url: normalizePlatformMcpEndpoint(url),
112
+ headers: buildPlatformMcpHeaders(),
113
+ scope: "plugin",
114
+ },
115
+ ];
116
+ }
117
+ //# sourceMappingURL=platform-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-plugin.js","sourceRoot":"","sources":["../../src/mcp/platform-plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import { getStoredEvalOpsAgentMcpMetadata } from \"../evalops/agent-bootstrap.js\";\nimport {\n\tgetEnvValue,\n\tnormalizeBaseUrl,\n\tresolveConfiguredToken,\n\tresolveWorkspaceId,\n} from \"../platform/client.js\";\nimport type { McpServerConfig } from \"./types.js\";\n\nconst PLATFORM_MCP_DISABLED_VALUES = new Set([\"0\", \"false\", \"no\", \"off\"]);\nconst PLATFORM_MCP_ENABLED_ENV_VARS = [\n\t\"MAESTRO_PLATFORM_MCP_ENABLED\",\n\t\"MAESTRO_AGENT_MCP_ENABLED\",\n] as const;\nconst PLATFORM_MCP_NAME_ENV_VARS = [\n\t\"MAESTRO_PLATFORM_MCP_NAME\",\n\t\"MAESTRO_AGENT_MCP_NAME\",\n] as const;\nconst PLATFORM_MCP_URL_ENV_VARS = [\n\t\"MAESTRO_PLATFORM_MCP_URL\",\n\t\"MAESTRO_AGENT_MCP_URL\",\n\t\"MAESTRO_EVALOPS_AGENT_MCP_URL\",\n] as const;\nconst PLATFORM_MCP_MANIFEST_URL_ENV_VARS = [\n\t\"MAESTRO_PLATFORM_MCP_MANIFEST_URL\",\n\t\"MAESTRO_AGENT_MCP_MANIFEST_URL\",\n\t\"MAESTRO_EVALOPS_AGENT_MCP_MANIFEST_URL\",\n] as const;\nconst PLATFORM_MCP_TOKEN_ENV_VARS = [\n\t\"MAESTRO_PLATFORM_MCP_TOKEN\",\n\t\"MAESTRO_AGENT_MCP_TOKEN\",\n\t\"MAESTRO_EVALOPS_ACCESS_TOKEN\",\n\t\"EVALOPS_TOKEN\",\n] as const;\nconst PLATFORM_MCP_WORKSPACE_ENV_VARS = [\n\t\"MAESTRO_WORKSPACE_ID\",\n\t\"MAESTRO_EVALOPS_WORKSPACE_ID\",\n\t\"MAESTRO_EVALOPS_ORG_ID\",\n\t\"EVALOPS_ORGANIZATION_ID\",\n\t\"MAESTRO_ENTERPRISE_ORG_ID\",\n] as const;\nconst PLATFORM_MCP_AGENT_ID_ENV_VARS = [\n\t\"MAESTRO_AGENT_ID\",\n\t\"MAESTRO_EVALOPS_AGENT_ID\",\n] as const;\nconst PLATFORM_MCP_SCOPES_ENV_VARS = [\n\t\"MAESTRO_PLATFORM_MCP_SCOPES\",\n\t\"MAESTRO_AGENT_MCP_SCOPES\",\n\t\"MAESTRO_EVALOPS_AGENT_MCP_SCOPES\",\n\t\"MAESTRO_CEREBRO_MCP_SCOPES\",\n] as const;\nconst DEFAULT_PLATFORM_MCP_SERVER_NAME = \"evalops\";\nconst AGENT_MCP_MANIFEST_PATH = \"/.well-known/evalops/agent-mcp.json\";\nconst AGENT_MCP_PATH = \"/mcp\";\n\nfunction isPlatformMcpExplicitlyDisabled(): boolean {\n\tconst enabled = getEnvValue(PLATFORM_MCP_ENABLED_ENV_VARS);\n\tif (!enabled) {\n\t\treturn false;\n\t}\n\treturn PLATFORM_MCP_DISABLED_VALUES.has(enabled.trim().toLowerCase());\n}\n\nfunction buildPlatformMcpHeaders(): Record<string, string> | undefined {\n\tconst stored = getStoredEvalOpsAgentMcpMetadata();\n\tconst token =\n\t\tgetEnvValue(PLATFORM_MCP_TOKEN_ENV_VARS) ??\n\t\tstored?.apiKey ??\n\t\tresolveConfiguredToken(PLATFORM_MCP_TOKEN_ENV_VARS);\n\tconst workspaceId =\n\t\tresolveWorkspaceId(PLATFORM_MCP_WORKSPACE_ENV_VARS) ?? stored?.workspaceId;\n\tconst headers = Object.fromEntries(\n\t\tObject.entries({\n\t\t\t...(token ? { Authorization: `Bearer ${token}` } : {}),\n\t\t\t\"Mcp-Session-Id\": getEnvValue([\"MAESTRO_SESSION_ID\"]),\n\t\t\t\"X-EvalOps-Workspace-Id\": workspaceId,\n\t\t\t\"X-EvalOps-Session-Id\": getEnvValue([\"MAESTRO_SESSION_ID\"]),\n\t\t\t\"X-EvalOps-Agent-Id\":\n\t\t\t\tgetEnvValue(PLATFORM_MCP_AGENT_ID_ENV_VARS) ?? stored?.agentId,\n\t\t\t\"X-EvalOps-Agent-Run-Id\":\n\t\t\t\tgetEnvValue([\"MAESTRO_AGENT_RUN_ID\"]) ?? stored?.runId,\n\t\t\t\"X-EvalOps-Scopes\": getEnvValue(PLATFORM_MCP_SCOPES_ENV_VARS),\n\t\t\t\"X-EvalOps-Request-Id\": getEnvValue([\"MAESTRO_REQUEST_ID\"]),\n\t\t\t\"X-EvalOps-Trace-Id\": getEnvValue([\"TRACE_ID\", \"OTEL_TRACE_ID\"]),\n\t\t\t\"X-EvalOps-Maestro-Surface\":\n\t\t\t\tgetEnvValue([\"MAESTRO_SURFACE\"]) ?? \"maestro\",\n\t\t}).filter(\n\t\t\t(entry): entry is [string, string] =>\n\t\t\t\ttypeof entry[1] === \"string\" && entry[1].trim().length > 0,\n\t\t),\n\t);\n\treturn Object.keys(headers).length > 0 ? headers : undefined;\n}\n\nfunction normalizePlatformMcpEndpoint(url: string): string {\n\tconst normalized = normalizeBaseUrl(url);\n\ttry {\n\t\tconst parsed = new URL(normalized);\n\t\tif (\n\t\t\tparsed.pathname === \"\" ||\n\t\t\tparsed.pathname === \"/\" ||\n\t\t\tparsed.pathname === AGENT_MCP_MANIFEST_PATH\n\t\t) {\n\t\t\tparsed.pathname = AGENT_MCP_PATH;\n\t\t\tparsed.search = \"\";\n\t\t\tparsed.hash = \"\";\n\t\t\treturn normalizeBaseUrl(parsed.toString());\n\t\t}\n\t} catch {\n\t\t// Keep the existing permissive behavior for non-standard local test URLs.\n\t}\n\treturn normalized;\n}\n\nfunction resolvePlatformMcpURL(): string | undefined {\n\treturn (\n\t\tgetEnvValue(PLATFORM_MCP_URL_ENV_VARS) ??\n\t\tgetEnvValue(PLATFORM_MCP_MANIFEST_URL_ENV_VARS) ??\n\t\tgetStoredEvalOpsAgentMcpMetadata()?.endpoint\n\t);\n}\n\nexport function getPlatformMcpPluginServers(): McpServerConfig[] {\n\tif (isPlatformMcpExplicitlyDisabled()) {\n\t\treturn [];\n\t}\n\n\tconst url = resolvePlatformMcpURL();\n\tif (!url) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\t{\n\t\t\tname:\n\t\t\t\tgetEnvValue(PLATFORM_MCP_NAME_ENV_VARS) ??\n\t\t\t\tDEFAULT_PLATFORM_MCP_SERVER_NAME,\n\t\t\ttransport: \"http\",\n\t\t\turl: normalizePlatformMcpEndpoint(url),\n\t\t\theaders: buildPlatformMcpHeaders(),\n\t\t\tscope: \"plugin\",\n\t\t},\n\t];\n}\n"]}
@@ -5,7 +5,22 @@ interface McpToolDetails {
5
5
  server: string;
6
6
  tool: string;
7
7
  content: unknown[];
8
+ structuredContent?: unknown;
8
9
  isError?: boolean;
10
+ governedOutcome?: McpGovernedOutcome;
11
+ }
12
+ interface McpGovernedOutcome {
13
+ classification: "approval_required" | "approval_pending" | "authentication_required" | "denied" | "rate_limited";
14
+ decision?: string;
15
+ riskLevel?: string;
16
+ reasons?: string[];
17
+ approvalRequestId?: string;
18
+ matchedRules?: string[];
19
+ message?: string;
20
+ code?: string;
21
+ state?: string;
22
+ retryAfterMs?: number;
23
+ retryAfterSeconds?: number;
9
24
  }
10
25
  export declare function createMcpToolWrapper(serverName: string, mcpTool: McpTool): Readonly<{
11
26
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-bridge.d.ts","sourceRoot":"","sources":["../../src/mcp/tool-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,KAAK,OAAO,EAAQ,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKnD,UAAU,cAAc;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AA4CD,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;;;;;;;;;;;;;;;;;;;GAoDxE;AAED,wBAAgB,cAAc,IAAI,SAAS,EAAE,CAM5C;AAED,wBAAgB,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CActD;AAMD,UAAU,sBAAsB;IAC/B,OAAO,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC;CACH;AAWD;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;EA8C/B,CAAC;AAEH,UAAU,sBAAsB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,KAAK,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACH;AAWD;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;EA+C9B,CAAC;AAEH,UAAU,oBAAoB;IAC7B,OAAO,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC,CAAC;CACH;AAWD;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;EA8C7B,CAAC;AAEH,UAAU,gBAAgB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAmBD;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;EA6C3B,CAAC;AAEH;;GAEG;AACH,wBAAgB,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAElC"}
1
+ {"version":3,"file":"tool-bridge.d.ts","sourceRoot":"","sources":["../../src/mcp/tool-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,KAAK,OAAO,EAAQ,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAUnD,UAAU,cAAc;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,kBAAkB,CAAC;CACrC;AAED,UAAU,kBAAkB;IAC3B,cAAc,EACX,mBAAmB,GACnB,kBAAkB,GAClB,yBAAyB,GACzB,QAAQ,GACR,cAAc,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B;AA6RD,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;;;;;;;;;;;;;;;;;;;GA2DxE;AAED,wBAAgB,cAAc,IAAI,SAAS,EAAE,CAM5C;AAED,wBAAgB,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CActD;AAMD,UAAU,sBAAsB;IAC/B,OAAO,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC;CACH;AAWD;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;EA8C/B,CAAC;AAEH,UAAU,sBAAsB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,KAAK,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;CACH;AAWD;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;EA+C9B,CAAC;AAEH,UAAU,oBAAoB;IAC7B,OAAO,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC,CAAC;CACH;AAWD;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;EA8C7B,CAAC;AAEH,UAAU,gBAAgB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAmBD;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;EA6C3B,CAAC;AAEH;;GAEG;AACH,wBAAgB,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAElC"}