@evalops/maestro 0.10.17 → 0.10.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -1
- package/dist/agent/action-approval.d.ts +12 -2
- package/dist/agent/action-approval.d.ts.map +1 -1
- package/dist/agent/action-approval.js +19 -32
- package/dist/agent/action-approval.js.map +1 -1
- package/dist/agent/agent.d.ts +1 -0
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +26 -0
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/compaction.d.ts +2 -0
- package/dist/agent/compaction.d.ts.map +1 -1
- package/dist/agent/compaction.js +4 -2
- package/dist/agent/compaction.js.map +1 -1
- package/dist/agent/index.d.ts +1 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/modes.d.ts +56 -4
- package/dist/agent/modes.d.ts.map +1 -1
- package/dist/agent/modes.js +163 -2
- package/dist/agent/modes.js.map +1 -1
- package/dist/agent/prompt-recovery.d.ts.map +1 -1
- package/dist/agent/prompt-recovery.js +1 -3
- package/dist/agent/prompt-recovery.js.map +1 -1
- package/dist/agent/providers/anthropic.d.ts.map +1 -1
- package/dist/agent/providers/anthropic.js +9 -1
- package/dist/agent/providers/anthropic.js.map +1 -1
- package/dist/agent/providers/codex-app-server.d.ts +12 -0
- package/dist/agent/providers/codex-app-server.d.ts.map +1 -0
- package/dist/agent/providers/codex-app-server.js +788 -0
- package/dist/agent/providers/codex-app-server.js.map +1 -0
- package/dist/agent/providers/google-gemini-cli.js +14 -3
- package/dist/agent/providers/google.js +22 -3
- package/dist/agent/providers/scripted.d.ts +11 -0
- package/dist/agent/providers/scripted.d.ts.map +1 -0
- package/dist/agent/providers/scripted.js +399 -0
- package/dist/agent/providers/scripted.js.map +1 -0
- package/dist/agent/providers/vertex.js +14 -3
- package/dist/agent/scenario-source.d.ts +19 -0
- package/dist/agent/scenario-source.d.ts.map +1 -0
- package/dist/agent/scenario-source.js +112 -0
- package/dist/agent/scenario-source.js.map +1 -0
- package/dist/agent/subagent-specs.d.ts +1 -1
- package/dist/agent/subagent-specs.js +1 -1
- package/dist/agent/subagent-specs.js.map +1 -1
- package/dist/agent/swarm/executor.d.ts +25 -0
- package/dist/agent/swarm/executor.d.ts.map +1 -1
- package/dist/agent/swarm/executor.js +795 -20
- package/dist/agent/swarm/executor.js.map +1 -1
- package/dist/agent/swarm/runtime-events.d.ts +11 -0
- package/dist/agent/swarm/runtime-events.d.ts.map +1 -0
- package/dist/agent/swarm/runtime-events.js +26 -0
- package/dist/agent/swarm/runtime-events.js.map +1 -0
- package/dist/agent/swarm/types.d.ts +78 -0
- package/dist/agent/swarm/types.d.ts.map +1 -1
- package/dist/agent/swarm/types.js.map +1 -1
- package/dist/agent/tracing.d.ts +1 -1
- package/dist/agent/tracing.d.ts.map +1 -1
- package/dist/agent/tracing.js +17 -9
- package/dist/agent/tracing.js.map +1 -1
- package/dist/agent/transport/create-provider-stream.d.ts.map +1 -1
- package/dist/agent/transport/create-provider-stream.js +14 -0
- package/dist/agent/transport/create-provider-stream.js.map +1 -1
- package/dist/agent/transport/stable-stringify.d.ts +2 -0
- package/dist/agent/transport/stable-stringify.d.ts.map +1 -0
- package/dist/agent/transport/stable-stringify.js +14 -0
- package/dist/agent/transport/stable-stringify.js.map +1 -0
- package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -1
- package/dist/agent/transport/tool-execution-bridge.js +2 -15
- package/dist/agent/transport/tool-execution-bridge.js.map +1 -1
- package/dist/agent/transport/tool-safety-pipeline.d.ts +5 -1
- package/dist/agent/transport/tool-safety-pipeline.d.ts.map +1 -1
- package/dist/agent/transport/tool-safety-pipeline.js +184 -36
- package/dist/agent/transport/tool-safety-pipeline.js.map +1 -1
- package/dist/agent/transport.d.ts +8 -0
- package/dist/agent/transport.d.ts.map +1 -1
- package/dist/agent/transport.js +1613 -68
- package/dist/agent/transport.js.map +1 -1
- package/dist/agent/types.d.ts +170 -2
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/api/enterprise-routes.d.ts.map +1 -1
- package/dist/api/enterprise-routes.js +34 -3
- package/dist/api/enterprise-routes.js.map +1 -1
- package/dist/app-server/in-process-client.d.ts +32 -0
- package/dist/app-server/in-process-client.d.ts.map +1 -0
- package/dist/app-server/in-process-client.js +73 -0
- package/dist/app-server/in-process-client.js.map +1 -0
- package/dist/app-server/session-api.d.ts +36 -0
- package/dist/app-server/session-api.d.ts.map +1 -0
- package/dist/app-server/session-api.js +713 -0
- package/dist/app-server/session-api.js.map +1 -0
- package/dist/approvals/platform-action-approval.d.ts +3 -1
- package/dist/approvals/platform-action-approval.d.ts.map +1 -1
- package/dist/approvals/platform-action-approval.js +16 -9
- package/dist/approvals/platform-action-approval.js.map +1 -1
- package/dist/approvals/service-client.d.ts.map +1 -1
- package/dist/approvals/service-client.js +7 -7
- package/dist/approvals/service-client.js.map +1 -1
- package/dist/audit/logger.d.ts +4 -4
- package/dist/bootstrap/agent-creation-setup.d.ts +4 -0
- package/dist/bootstrap/agent-creation-setup.d.ts.map +1 -1
- package/dist/bootstrap/agent-creation-setup.js +3 -1
- package/dist/bootstrap/agent-creation-setup.js.map +1 -1
- package/dist/bootstrap/auth-setup.js +1 -1
- package/dist/bootstrap/auth-setup.js.map +1 -1
- package/dist/bootstrap/event-subscriptions-setup.d.ts +6 -0
- package/dist/bootstrap/event-subscriptions-setup.d.ts.map +1 -1
- package/dist/bootstrap/event-subscriptions-setup.js +26 -2
- package/dist/bootstrap/event-subscriptions-setup.js.map +1 -1
- package/dist/bootstrap/model-resolution-setup.d.ts.map +1 -1
- package/dist/bootstrap/model-resolution-setup.js +4 -1
- package/dist/bootstrap/model-resolution-setup.js.map +1 -1
- package/dist/bootstrap/tools-setup.d.ts +2 -1
- package/dist/bootstrap/tools-setup.d.ts.map +1 -1
- package/dist/bootstrap/tools-setup.js +5 -1
- package/dist/bootstrap/tools-setup.js.map +1 -1
- package/dist/cli/args.d.ts +9 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +130 -5
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/commands/a2a.d.ts +9 -0
- package/dist/cli/commands/a2a.d.ts.map +1 -0
- package/dist/cli/commands/a2a.js +1714 -0
- package/dist/cli/commands/a2a.js.map +1 -0
- package/dist/cli/commands/agents.d.ts +16 -2
- package/dist/cli/commands/agents.d.ts.map +1 -1
- package/dist/cli/commands/agents.js +223 -35
- package/dist/cli/commands/agents.js.map +1 -1
- package/dist/cli/commands/codex.d.ts +1 -1
- package/dist/cli/commands/codex.d.ts.map +1 -1
- package/dist/cli/commands/codex.js +145 -39
- package/dist/cli/commands/codex.js.map +1 -1
- package/dist/cli/commands/context.d.ts +10 -0
- package/dist/cli/commands/context.d.ts.map +1 -0
- package/dist/cli/commands/context.js +176 -0
- package/dist/cli/commands/context.js.map +1 -0
- package/dist/cli/commands/hosted-runner.d.ts +1 -0
- package/dist/cli/commands/hosted-runner.d.ts.map +1 -1
- package/dist/cli/commands/hosted-runner.js +9 -1
- package/dist/cli/commands/hosted-runner.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +6 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/modes.d.ts +8 -0
- package/dist/cli/commands/modes.d.ts.map +1 -0
- package/dist/cli/commands/modes.js +151 -0
- package/dist/cli/commands/modes.js.map +1 -0
- package/dist/cli/commands/operating-plane.d.ts +14 -0
- package/dist/cli/commands/operating-plane.d.ts.map +1 -0
- package/dist/cli/commands/operating-plane.js +160 -0
- package/dist/cli/commands/operating-plane.js.map +1 -0
- package/dist/cli/commands/run.d.ts +87 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +356 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/scenario.d.ts +7 -0
- package/dist/cli/commands/scenario.d.ts.map +1 -0
- package/dist/cli/commands/scenario.js +195 -0
- package/dist/cli/commands/scenario.js.map +1 -0
- package/dist/cli/commands/skill.d.ts +7 -0
- package/dist/cli/commands/skill.d.ts.map +1 -0
- package/dist/cli/commands/skill.js +286 -0
- package/dist/cli/commands/skill.js.map +1 -0
- package/dist/cli/headless-protocol.d.ts +55 -1
- package/dist/cli/headless-protocol.d.ts.map +1 -1
- package/dist/cli/headless-protocol.js +446 -7
- package/dist/cli/headless-protocol.js.map +1 -1
- package/dist/cli/headless-runtime-selection.d.ts +38 -0
- package/dist/cli/headless-runtime-selection.d.ts.map +1 -0
- package/dist/cli/headless-runtime-selection.js +48 -0
- package/dist/cli/headless-runtime-selection.js.map +1 -0
- package/dist/cli/headless.d.ts +5 -1
- package/dist/cli/headless.d.ts.map +1 -1
- package/dist/cli/headless.js +11 -1
- package/dist/cli/headless.js.map +1 -1
- package/dist/cli/help.d.ts +3 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +136 -30
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/system-prompt.d.ts +22 -4
- package/dist/cli/system-prompt.d.ts.map +1 -1
- package/dist/cli/system-prompt.js +224 -127
- package/dist/cli/system-prompt.js.map +1 -1
- package/dist/cli-tui/commands/a2a-handlers.d.ts +7 -0
- package/dist/cli-tui/commands/a2a-handlers.d.ts.map +1 -0
- package/dist/cli-tui/commands/a2a-handlers.js +160 -0
- package/dist/cli-tui/commands/a2a-handlers.js.map +1 -0
- package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -1
- package/dist/cli-tui/commands/command-catalog.js +15 -0
- package/dist/cli-tui/commands/command-catalog.js.map +1 -1
- package/dist/cli-tui/commands/command-registry-adapter.js +10 -1
- package/dist/cli-tui/commands/command-registry-adapter.js.map +1 -1
- package/dist/cli-tui/commands/handlers/mode-handler.d.ts.map +1 -1
- package/dist/cli-tui/commands/handlers/mode-handler.js +22 -10
- package/dist/cli-tui/commands/handlers/mode-handler.js.map +1 -1
- package/dist/cli-tui/commands/mcp-handlers.d.ts.map +1 -1
- package/dist/cli-tui/commands/mcp-handlers.js +6 -5
- package/dist/cli-tui/commands/mcp-handlers.js.map +1 -1
- package/dist/cli-tui/commands/types.d.ts +1 -0
- package/dist/cli-tui/commands/types.d.ts.map +1 -1
- package/dist/cli-tui/commands/types.js.map +1 -1
- package/dist/cli-tui/commands/utility-handlers.d.ts +4 -0
- package/dist/cli-tui/commands/utility-handlers.d.ts.map +1 -1
- package/dist/cli-tui/commands/utility-handlers.js +45 -6
- package/dist/cli-tui/commands/utility-handlers.js.map +1 -1
- package/dist/cli-tui/run/run-shell-command.d.ts.map +1 -1
- package/dist/cli-tui/run/run-shell-command.js +14 -5
- package/dist/cli-tui/run/run-shell-command.js.map +1 -1
- package/dist/cli-tui/run/streaming-shell-command.d.ts.map +1 -1
- package/dist/cli-tui/run/streaming-shell-command.js +14 -5
- package/dist/cli-tui/run/streaming-shell-command.js.map +1 -1
- package/dist/cli-tui/selectors/model-selector.d.ts +1 -0
- package/dist/cli-tui/selectors/model-selector.d.ts.map +1 -1
- package/dist/cli-tui/selectors/model-selector.js +6 -2
- package/dist/cli-tui/selectors/model-selector.js.map +1 -1
- package/dist/cli-tui/tui-renderer/command-registry-options.d.ts.map +1 -1
- package/dist/cli-tui/tui-renderer/command-registry-options.js +5 -0
- package/dist/cli-tui/tui-renderer/command-registry-options.js.map +1 -1
- package/dist/cli-tui/utils/commands/review-prompt.d.ts +1 -1
- package/dist/cli-tui/utils/commands/review-prompt.d.ts.map +1 -1
- package/dist/cli-tui/utils/commands/review-prompt.js +8 -3
- package/dist/cli-tui/utils/commands/review-prompt.js.map +1 -1
- package/dist/cli-tui/utils/runtime-badges.d.ts +1 -0
- package/dist/cli-tui/utils/runtime-badges.d.ts.map +1 -1
- package/dist/cli-tui/utils/runtime-badges.js +7 -0
- package/dist/cli-tui/utils/runtime-badges.js.map +1 -1
- package/dist/cli-tui/utils/text-formatting.d.ts +1 -0
- package/dist/cli-tui/utils/text-formatting.d.ts.map +1 -1
- package/dist/cli-tui/utils/text-formatting.js +5 -0
- package/dist/cli-tui/utils/text-formatting.js.map +1 -1
- package/dist/cli.js +49209 -26165
- package/dist/cli.js.map +1 -1
- package/dist/codex/app-server-client.d.ts +139 -0
- package/dist/codex/app-server-client.d.ts.map +1 -0
- package/dist/codex/app-server-client.js +352 -0
- package/dist/codex/app-server-client.js.map +1 -0
- package/dist/codex/compatibility.d.ts +48 -0
- package/dist/codex/compatibility.d.ts.map +1 -0
- package/dist/codex/compatibility.js +344 -0
- package/dist/codex/compatibility.js.map +1 -0
- package/dist/codex/subagent-dispatch-table.d.ts +66 -0
- package/dist/codex/subagent-dispatch-table.d.ts.map +1 -0
- package/dist/codex/subagent-dispatch-table.js +127 -0
- package/dist/codex/subagent-dispatch-table.js.map +1 -0
- package/dist/codex/subagent-workgraph.d.ts +56 -0
- package/dist/codex/subagent-workgraph.d.ts.map +1 -0
- package/dist/codex/subagent-workgraph.js +89 -0
- package/dist/codex/subagent-workgraph.js.map +1 -0
- package/dist/config/constants.d.ts +3 -1
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +9 -0
- package/dist/config/constants.js.map +1 -1
- package/dist/config/feature-flags.d.ts +10 -1
- package/dist/config/feature-flags.d.ts.map +1 -1
- package/dist/config/feature-flags.js +17 -6
- package/dist/config/feature-flags.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/toml-config.d.ts +32 -0
- package/dist/config/toml-config.d.ts.map +1 -1
- package/dist/config/toml-config.js +152 -43
- package/dist/config/toml-config.js.map +1 -1
- package/dist/connectors/service-client.d.ts.map +1 -1
- package/dist/connectors/service-client.js +4 -7
- package/dist/connectors/service-client.js.map +1 -1
- package/dist/context/manifest-types.d.ts +59 -0
- package/dist/context/manifest-types.d.ts.map +1 -0
- package/dist/context/manifest-types.js +2 -0
- package/dist/context/manifest-types.js.map +1 -0
- package/dist/context/manifest.d.ts +16 -0
- package/dist/context/manifest.d.ts.map +1 -0
- package/dist/context/manifest.js +503 -0
- package/dist/context/manifest.js.map +1 -0
- package/dist/db/schema.d.ts +10 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js.map +1 -1
- package/dist/evalops/agent-bootstrap.d.ts +1 -0
- package/dist/evalops/agent-bootstrap.d.ts.map +1 -1
- package/dist/evalops/agent-bootstrap.js +41 -1
- package/dist/evalops/agent-bootstrap.js.map +1 -1
- package/dist/evalops/env-aliases.d.ts +13 -0
- package/dist/evalops/env-aliases.d.ts.map +1 -0
- package/dist/evalops/env-aliases.js +60 -0
- package/dist/evalops/env-aliases.js.map +1 -0
- package/dist/evalops/managed-context.d.ts.map +1 -1
- package/dist/evalops/managed-context.js +28 -62
- package/dist/evalops/managed-context.js.map +1 -1
- package/dist/guardian/config.d.ts.map +1 -1
- package/dist/guardian/config.js +1 -0
- package/dist/guardian/config.js.map +1 -1
- package/dist/guardian/runner.d.ts +2 -0
- package/dist/guardian/runner.d.ts.map +1 -1
- package/dist/guardian/runner.js +105 -2
- package/dist/guardian/runner.js.map +1 -1
- package/dist/guardian/types.d.ts +1 -0
- package/dist/guardian/types.d.ts.map +1 -1
- package/dist/guardian/types.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +267 -55
- package/dist/main.js.map +1 -1
- package/dist/mcp/config.d.ts.map +1 -1
- package/dist/mcp/config.js +89 -7
- package/dist/mcp/config.js.map +1 -1
- package/dist/mcp/manager.d.ts +5 -1
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +159 -4
- package/dist/mcp/manager.js.map +1 -1
- package/dist/mcp/platform-plugin.d.ts.map +1 -1
- package/dist/mcp/platform-plugin.js +9 -26
- package/dist/mcp/platform-plugin.js.map +1 -1
- package/dist/mcp/schema.d.ts +15 -0
- package/dist/mcp/schema.d.ts.map +1 -1
- package/dist/mcp/schema.js +24 -0
- package/dist/mcp/schema.js.map +1 -1
- package/dist/mcp/tool-bridge.d.ts +39 -10
- package/dist/mcp/tool-bridge.d.ts.map +1 -1
- package/dist/mcp/tool-bridge.js +101 -24
- package/dist/mcp/tool-bridge.js.map +1 -1
- package/dist/mcp/types.d.ts +27 -0
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/mcp/types.js.map +1 -1
- package/dist/mcp/workspace-trust.d.ts +10 -0
- package/dist/mcp/workspace-trust.d.ts.map +1 -0
- package/dist/mcp/workspace-trust.js +295 -0
- package/dist/mcp/workspace-trust.js.map +1 -0
- package/dist/memory/service-client.d.ts +1 -0
- package/dist/memory/service-client.d.ts.map +1 -1
- package/dist/memory/service-client.js +194 -9
- package/dist/memory/service-client.js.map +1 -1
- package/dist/models/builtin.d.ts.map +1 -1
- package/dist/models/builtin.js +66 -25
- package/dist/models/builtin.js.map +1 -1
- package/dist/models/config-loader.d.ts +10 -10
- package/dist/models/config-loader.d.ts.map +1 -1
- package/dist/models/config-loader.js +2 -0
- package/dist/models/config-loader.js.map +1 -1
- package/dist/models/registry.d.ts +1 -0
- package/dist/models/registry.d.ts.map +1 -1
- package/dist/models/registry.js +1 -0
- package/dist/models/registry.js.map +1 -1
- package/dist/oauth/device-identity.d.ts.map +1 -1
- package/dist/oauth/device-identity.js +1 -3
- package/dist/oauth/device-identity.js.map +1 -1
- package/dist/oauth/evalops.d.ts.map +1 -1
- package/dist/oauth/evalops.js +2 -5
- package/dist/oauth/evalops.js.map +1 -1
- package/dist/opentelemetry.d.ts.map +1 -1
- package/dist/opentelemetry.js +12 -12
- package/dist/opentelemetry.js.map +1 -1
- package/dist/package-version.d.ts +2 -0
- package/dist/package-version.d.ts.map +1 -0
- package/dist/package-version.js +11 -0
- package/dist/package-version.js.map +1 -0
- package/dist/packages/constants.d.ts +3 -0
- package/dist/packages/constants.d.ts.map +1 -0
- package/dist/packages/constants.js +3 -0
- package/dist/packages/constants.js.map +1 -0
- package/dist/packages/inspection.d.ts.map +1 -1
- package/dist/packages/inspection.js +2 -1
- package/dist/packages/inspection.js.map +1 -1
- package/dist/packages/search.d.ts.map +1 -1
- package/dist/packages/search.js +1 -1
- package/dist/packages/search.js.map +1 -1
- package/dist/platform/a2a-capability-market.d.ts +21 -0
- package/dist/platform/a2a-capability-market.d.ts.map +1 -0
- package/dist/platform/a2a-capability-market.js +176 -0
- package/dist/platform/a2a-capability-market.js.map +1 -0
- package/dist/platform/a2a-client.d.ts +217 -0
- package/dist/platform/a2a-client.d.ts.map +1 -0
- package/dist/platform/a2a-client.js +589 -0
- package/dist/platform/a2a-client.js.map +1 -0
- package/dist/platform/a2a-fleet.d.ts +41 -0
- package/dist/platform/a2a-fleet.d.ts.map +1 -0
- package/dist/platform/a2a-fleet.js +109 -0
- package/dist/platform/a2a-fleet.js.map +1 -0
- package/dist/platform/a2a-maestro-peer.d.ts +20 -0
- package/dist/platform/a2a-maestro-peer.d.ts.map +1 -0
- package/dist/platform/a2a-maestro-peer.js +176 -0
- package/dist/platform/a2a-maestro-peer.js.map +1 -0
- package/dist/platform/a2a-peer-pairing.d.ts +107 -0
- package/dist/platform/a2a-peer-pairing.d.ts.map +1 -0
- package/dist/platform/a2a-peer-pairing.js +489 -0
- package/dist/platform/a2a-peer-pairing.js.map +1 -0
- package/dist/platform/a2a-peer-registry.d.ts +68 -0
- package/dist/platform/a2a-peer-registry.d.ts.map +1 -0
- package/dist/platform/a2a-peer-registry.js +320 -0
- package/dist/platform/a2a-peer-registry.js.map +1 -0
- package/dist/platform/a2a-task-ledger.d.ts +86 -0
- package/dist/platform/a2a-task-ledger.d.ts.map +1 -0
- package/dist/platform/a2a-task-ledger.js +546 -0
- package/dist/platform/a2a-task-ledger.js.map +1 -0
- package/dist/platform/a2a-work-graph.d.ts +43 -0
- package/dist/platform/a2a-work-graph.d.ts.map +1 -0
- package/dist/platform/a2a-work-graph.js +267 -0
- package/dist/platform/a2a-work-graph.js.map +1 -0
- package/dist/platform/agent-registry-client.d.ts +327 -0
- package/dist/platform/agent-registry-client.d.ts.map +1 -0
- package/dist/platform/agent-registry-client.js +803 -0
- package/dist/platform/agent-registry-client.js.map +1 -0
- package/dist/platform/agent-runtime-client.d.ts +135 -1
- package/dist/platform/agent-runtime-client.d.ts.map +1 -1
- package/dist/platform/agent-runtime-client.js +467 -10
- package/dist/platform/agent-runtime-client.js.map +1 -1
- package/dist/platform/cerebro-facts-client.d.ts.map +1 -1
- package/dist/platform/cerebro-facts-client.js +4 -7
- package/dist/platform/cerebro-facts-client.js.map +1 -1
- package/dist/platform/client.d.ts +2 -0
- package/dist/platform/client.d.ts.map +1 -1
- package/dist/platform/client.js +7 -14
- package/dist/platform/client.js.map +1 -1
- package/dist/platform/core-services.d.ts +68 -0
- package/dist/platform/core-services.d.ts.map +1 -1
- package/dist/platform/core-services.js +68 -0
- package/dist/platform/core-services.js.map +1 -1
- package/dist/platform/fermata-eval-client.d.ts +195 -0
- package/dist/platform/fermata-eval-client.d.ts.map +1 -0
- package/dist/platform/fermata-eval-client.js +146 -0
- package/dist/platform/fermata-eval-client.js.map +1 -0
- package/dist/platform/fermata-scenario-suite.d.ts +99 -0
- package/dist/platform/fermata-scenario-suite.d.ts.map +1 -0
- package/dist/platform/fermata-scenario-suite.js +459 -0
- package/dist/platform/fermata-scenario-suite.js.map +1 -0
- package/dist/platform/maestro-timeline-client.d.ts.map +1 -1
- package/dist/platform/maestro-timeline-client.js +5 -11
- package/dist/platform/maestro-timeline-client.js.map +1 -1
- package/dist/platform/operating-plane-client.d.ts +156 -0
- package/dist/platform/operating-plane-client.d.ts.map +1 -0
- package/dist/platform/operating-plane-client.js +131 -0
- package/dist/platform/operating-plane-client.js.map +1 -0
- package/dist/platform/operating-plane-summary.d.ts +47 -0
- package/dist/platform/operating-plane-summary.d.ts.map +1 -0
- package/dist/platform/operating-plane-summary.js +209 -0
- package/dist/platform/operating-plane-summary.js.map +1 -0
- package/dist/platform/tool-execution-client.d.ts.map +1 -1
- package/dist/platform/tool-execution-client.js +4 -11
- package/dist/platform/tool-execution-client.js.map +1 -1
- package/dist/prompts/service-client.d.ts.map +1 -1
- package/dist/prompts/service-client.js +3 -5
- package/dist/prompts/service-client.js.map +1 -1
- package/dist/prompts/system-prompt.d.ts +3 -0
- package/dist/prompts/system-prompt.d.ts.map +1 -1
- package/dist/prompts/system-prompt.js +13 -3
- package/dist/prompts/system-prompt.js.map +1 -1
- package/dist/prompts/types.d.ts +2 -0
- package/dist/prompts/types.d.ts.map +1 -1
- package/dist/prompts/types.js.map +1 -1
- package/dist/providers/api-keys.d.ts +1 -1
- package/dist/providers/api-keys.d.ts.map +1 -1
- package/dist/providers/api-keys.js +2 -1
- package/dist/providers/api-keys.js.map +1 -1
- package/dist/providers/auth.d.ts.map +1 -1
- package/dist/providers/auth.js +48 -25
- package/dist/providers/auth.js.map +1 -1
- package/dist/remote-runner/attach-client.d.ts.map +1 -1
- package/dist/remote-runner/attach-client.js +1 -0
- package/dist/remote-runner/attach-client.js.map +1 -1
- package/dist/remote-runner/client.d.ts.map +1 -1
- package/dist/remote-runner/client.js +4 -7
- package/dist/remote-runner/client.js.map +1 -1
- package/dist/rpc/rpc-types.d.ts.map +1 -1
- package/dist/rpc/rpc-types.js +1 -0
- package/dist/rpc/rpc-types.js.map +1 -1
- package/dist/safety/action-firewall.d.ts.map +1 -1
- package/dist/safety/action-firewall.js +69 -6
- package/dist/safety/action-firewall.js.map +1 -1
- package/dist/safety/attack-patterns.d.ts.map +1 -1
- package/dist/safety/attack-patterns.js +31 -14
- package/dist/safety/attack-patterns.js.map +1 -1
- package/dist/safety/bash-parser.d.ts.map +1 -1
- package/dist/safety/bash-parser.js +4 -3
- package/dist/safety/bash-parser.js.map +1 -1
- package/dist/safety/execpolicy.d.ts +15 -3
- package/dist/safety/execpolicy.d.ts.map +1 -1
- package/dist/safety/execpolicy.js +248 -37
- package/dist/safety/execpolicy.js.map +1 -1
- package/dist/safety/governance-service-client.d.ts.map +1 -1
- package/dist/safety/governance-service-client.js +4 -7
- package/dist/safety/governance-service-client.js.map +1 -1
- package/dist/safety/guarded-files.d.ts +34 -0
- package/dist/safety/guarded-files.d.ts.map +1 -0
- package/dist/safety/guarded-files.js +372 -0
- package/dist/safety/guarded-files.js.map +1 -0
- package/dist/safety/loop-detector.d.ts.map +1 -1
- package/dist/safety/loop-detector.js +6 -1
- package/dist/safety/loop-detector.js.map +1 -1
- package/dist/safety/permission-profile.d.ts +47 -0
- package/dist/safety/permission-profile.d.ts.map +1 -0
- package/dist/safety/permission-profile.js +349 -0
- package/dist/safety/permission-profile.js.map +1 -0
- package/dist/safety/safety-middleware.d.ts +5 -1
- package/dist/safety/safety-middleware.d.ts.map +1 -1
- package/dist/safety/safety-middleware.js +3 -2
- package/dist/safety/safety-middleware.js.map +1 -1
- package/dist/safety/suspicious-patterns.d.ts.map +1 -1
- package/dist/safety/suspicious-patterns.js +12 -7
- package/dist/safety/suspicious-patterns.js.map +1 -1
- package/dist/safety/tool-categorization.js +1 -1
- package/dist/safety/tool-categorization.js.map +1 -1
- package/dist/safety/validators/path-policy-validator.d.ts.map +1 -1
- package/dist/safety/validators/path-policy-validator.js +7 -0
- package/dist/safety/validators/path-policy-validator.js.map +1 -1
- package/dist/sandbox/index.d.ts +6 -1
- package/dist/sandbox/index.d.ts.map +1 -1
- package/dist/sandbox/index.js +30 -4
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/native-sandbox.d.ts +3 -0
- package/dist/sandbox/native-sandbox.d.ts.map +1 -1
- package/dist/sandbox/native-sandbox.js +139 -18
- package/dist/sandbox/native-sandbox.js.map +1 -1
- package/dist/sentry.d.ts +17 -0
- package/dist/sentry.d.ts.map +1 -0
- package/dist/sentry.js +91 -0
- package/dist/sentry.js.map +1 -0
- package/dist/server/agent-runtime-ledger.d.ts +141 -0
- package/dist/server/agent-runtime-ledger.d.ts.map +1 -0
- package/dist/server/agent-runtime-ledger.js +334 -0
- package/dist/server/agent-runtime-ledger.js.map +1 -0
- package/dist/server/agent-trajectory-inspection.d.ts +104 -0
- package/dist/server/agent-trajectory-inspection.d.ts.map +1 -0
- package/dist/server/agent-trajectory-inspection.js +168 -0
- package/dist/server/agent-trajectory-inspection.js.map +1 -0
- package/dist/server/agent-trajectory-replay.d.ts +56 -0
- package/dist/server/agent-trajectory-replay.d.ts.map +1 -0
- package/dist/server/agent-trajectory-replay.js +214 -0
- package/dist/server/agent-trajectory-replay.js.map +1 -0
- package/dist/server/agent-trajectory-scenarios.d.ts +109 -0
- package/dist/server/agent-trajectory-scenarios.d.ts.map +1 -0
- package/dist/server/agent-trajectory-scenarios.js +822 -0
- package/dist/server/agent-trajectory-scenarios.js.map +1 -0
- package/dist/server/agent-trajectory-scorers.d.ts +61 -0
- package/dist/server/agent-trajectory-scorers.d.ts.map +1 -0
- package/dist/server/agent-trajectory-scorers.js +162 -0
- package/dist/server/agent-trajectory-scorers.js.map +1 -0
- package/dist/server/agent-trajectory-validation.d.ts +7 -0
- package/dist/server/agent-trajectory-validation.d.ts.map +1 -0
- package/dist/server/agent-trajectory-validation.js +101 -0
- package/dist/server/agent-trajectory-validation.js.map +1 -0
- package/dist/server/agent-trajectory.d.ts +50 -0
- package/dist/server/agent-trajectory.d.ts.map +1 -0
- package/dist/server/agent-trajectory.js +159 -0
- package/dist/server/agent-trajectory.js.map +1 -0
- package/dist/server/app-context.d.ts +18 -0
- package/dist/server/app-context.d.ts.map +1 -1
- package/dist/server/app-context.js.map +1 -1
- package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
- package/dist/server/handlers/headless-sessions.js +64 -27
- package/dist/server/handlers/headless-sessions.js.map +1 -1
- package/dist/server/handlers/health.d.ts +6 -0
- package/dist/server/handlers/health.d.ts.map +1 -1
- package/dist/server/handlers/health.js +6 -0
- package/dist/server/handlers/health.js.map +1 -1
- package/dist/server/handlers/hosted-runner-drain.d.ts +69 -1
- package/dist/server/handlers/hosted-runner-drain.d.ts.map +1 -1
- package/dist/server/handlers/hosted-runner-drain.js +309 -18
- package/dist/server/handlers/hosted-runner-drain.js.map +1 -1
- package/dist/server/handlers/hosted-runner-identity.d.ts +16 -0
- package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -1
- package/dist/server/handlers/hosted-runner-identity.js +43 -0
- package/dist/server/handlers/hosted-runner-identity.js.map +1 -1
- package/dist/server/handlers/mode.d.ts.map +1 -1
- package/dist/server/handlers/mode.js +3 -1
- package/dist/server/handlers/mode.js.map +1 -1
- package/dist/server/handlers/pending-requests.d.ts.map +1 -1
- package/dist/server/handlers/pending-requests.js +336 -51
- package/dist/server/handlers/pending-requests.js.map +1 -1
- package/dist/server/handlers/platform-a2a-push.d.ts +6 -0
- package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -0
- package/dist/server/handlers/platform-a2a-push.js +136 -0
- package/dist/server/handlers/platform-a2a-push.js.map +1 -0
- package/dist/server/handlers/sessions.d.ts.map +1 -1
- package/dist/server/handlers/sessions.js +21 -1
- package/dist/server/handlers/sessions.js.map +1 -1
- package/dist/server/headless-runtime-service.d.ts +9 -2
- package/dist/server/headless-runtime-service.d.ts.map +1 -1
- package/dist/server/headless-runtime-service.js +39 -0
- package/dist/server/headless-runtime-service.js.map +1 -1
- package/dist/server/hosted-agent-runtime-progress.d.ts +144 -0
- package/dist/server/hosted-agent-runtime-progress.d.ts.map +1 -0
- package/dist/server/hosted-agent-runtime-progress.js +1650 -0
- package/dist/server/hosted-agent-runtime-progress.js.map +1 -0
- package/dist/server/hosted-runner-lease.d.ts +41 -0
- package/dist/server/hosted-runner-lease.d.ts.map +1 -0
- package/dist/server/hosted-runner-lease.js +140 -0
- package/dist/server/hosted-runner-lease.js.map +1 -0
- package/dist/server/hosted-session-manager.d.ts +16 -8
- package/dist/server/hosted-session-manager.d.ts.map +1 -1
- package/dist/server/hosted-session-manager.js +98 -76
- package/dist/server/hosted-session-manager.js.map +1 -1
- package/dist/server/junit-xml.d.ts +2 -0
- package/dist/server/junit-xml.d.ts.map +1 -0
- package/dist/server/junit-xml.js +9 -0
- package/dist/server/junit-xml.js.map +1 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +6 -0
- package/dist/server/routes.js.map +1 -1
- package/dist/server/scenario-recorder.d.ts +56 -0
- package/dist/server/scenario-recorder.d.ts.map +1 -0
- package/dist/server/scenario-recorder.js +109 -0
- package/dist/server/scenario-recorder.js.map +1 -0
- package/dist/server/scripted-scenario-runner.d.ts +46 -0
- package/dist/server/scripted-scenario-runner.d.ts.map +1 -0
- package/dist/server/scripted-scenario-runner.js +190 -0
- package/dist/server/scripted-scenario-runner.js.map +1 -0
- package/dist/server/server-middlewares.d.ts +6 -2
- package/dist/server/server-middlewares.d.ts.map +1 -1
- package/dist/server/server-middlewares.js +8 -2
- package/dist/server/server-middlewares.js.map +1 -1
- package/dist/server/server-request-manager.d.ts +9 -1
- package/dist/server/server-request-manager.d.ts.map +1 -1
- package/dist/server/server-request-manager.js +49 -4
- package/dist/server/server-request-manager.js.map +1 -1
- package/dist/services/intelligent-router/service.d.ts +2 -0
- package/dist/services/intelligent-router/service.d.ts.map +1 -1
- package/dist/services/intelligent-router/service.js +4 -0
- package/dist/services/intelligent-router/service.js.map +1 -1
- package/dist/services/service-authority.d.ts +25 -0
- package/dist/services/service-authority.d.ts.map +1 -0
- package/dist/services/service-authority.js +143 -0
- package/dist/services/service-authority.js.map +1 -0
- package/dist/services/workspace-config/service.d.ts +2 -0
- package/dist/services/workspace-config/service.d.ts.map +1 -1
- package/dist/services/workspace-config/service.js +4 -0
- package/dist/services/workspace-config/service.js.map +1 -1
- package/dist/session/manager.d.ts +8 -2
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +19 -4
- package/dist/session/manager.js.map +1 -1
- package/dist/session/session-branch.d.ts.map +1 -1
- package/dist/session/session-branch.js +5 -1
- package/dist/session/session-branch.js.map +1 -1
- package/dist/session/session-catalog.d.ts +7 -2
- package/dist/session/session-catalog.d.ts.map +1 -1
- package/dist/session/session-catalog.js +13 -2
- package/dist/session/session-catalog.js.map +1 -1
- package/dist/session/session-context.d.ts +6 -2
- package/dist/session/session-context.d.ts.map +1 -1
- package/dist/session/session-context.js +44 -4
- package/dist/session/session-context.js.map +1 -1
- package/dist/session/session-graph-projection.d.ts +32 -0
- package/dist/session/session-graph-projection.d.ts.map +1 -0
- package/dist/session/session-graph-projection.js +133 -0
- package/dist/session/session-graph-projection.js.map +1 -0
- package/dist/session/types.d.ts +18 -0
- package/dist/session/types.d.ts.map +1 -1
- package/dist/session/types.js +8 -0
- package/dist/session/types.js.map +1 -1
- package/dist/session/wire-format.generated.d.ts +3 -0
- package/dist/session/wire-format.generated.d.ts.map +1 -1
- package/dist/session/wire-format.generated.js +20 -0
- package/dist/session/wire-format.generated.js.map +1 -1
- package/dist/skills/eval-harness.d.ts +38 -0
- package/dist/skills/eval-harness.d.ts.map +1 -0
- package/dist/skills/eval-harness.js +112 -0
- package/dist/skills/eval-harness.js.map +1 -0
- package/dist/skills/index.d.ts +5 -1
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +5 -1
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/linter.d.ts +36 -0
- package/dist/skills/linter.d.ts.map +1 -0
- package/dist/skills/linter.js +398 -0
- package/dist/skills/linter.js.map +1 -0
- package/dist/skills/loader.d.ts +36 -6
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +169 -86
- package/dist/skills/loader.js.map +1 -1
- package/dist/skills/package-contract.d.ts +45 -0
- package/dist/skills/package-contract.d.ts.map +1 -0
- package/dist/skills/package-contract.js +153 -0
- package/dist/skills/package-contract.js.map +1 -0
- package/dist/skills/runtime-activation.d.ts +68 -0
- package/dist/skills/runtime-activation.d.ts.map +1 -0
- package/dist/skills/runtime-activation.js +228 -0
- package/dist/skills/runtime-activation.js.map +1 -0
- package/dist/skills/service-client.d.ts.map +1 -1
- package/dist/skills/service-client.js +3 -4
- package/dist/skills/service-client.js.map +1 -1
- package/dist/skills/tool.d.ts.map +1 -1
- package/dist/skills/tool.js +2 -0
- package/dist/skills/tool.js.map +1 -1
- package/dist/skills/types.d.ts +14 -0
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/skills/types.js.map +1 -1
- package/dist/telemetry/agent-operating-plane-context.d.ts +24 -0
- package/dist/telemetry/agent-operating-plane-context.d.ts.map +1 -0
- package/dist/telemetry/agent-operating-plane-context.js +54 -0
- package/dist/telemetry/agent-operating-plane-context.js.map +1 -0
- package/dist/telemetry/beacon.d.ts +24 -0
- package/dist/telemetry/beacon.d.ts.map +1 -0
- package/dist/telemetry/beacon.js +115 -0
- package/dist/telemetry/beacon.js.map +1 -0
- package/dist/telemetry/cli-command-aggregator.d.ts +36 -0
- package/dist/telemetry/cli-command-aggregator.d.ts.map +1 -0
- package/dist/telemetry/cli-command-aggregator.js +251 -0
- package/dist/telemetry/cli-command-aggregator.js.map +1 -0
- package/dist/telemetry/cli-startup.d.ts +21 -0
- package/dist/telemetry/cli-startup.d.ts.map +1 -0
- package/dist/telemetry/cli-startup.js +83 -0
- package/dist/telemetry/cli-startup.js.map +1 -0
- package/dist/telemetry/disablement.d.ts +13 -0
- package/dist/telemetry/disablement.d.ts.map +1 -0
- package/dist/telemetry/disablement.js +19 -0
- package/dist/telemetry/disablement.js.map +1 -0
- package/dist/telemetry/index.d.ts +6 -2
- package/dist/telemetry/index.d.ts.map +1 -1
- package/dist/telemetry/index.js +6 -2
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/maestro-event-bus.d.ts +52 -0
- package/dist/telemetry/maestro-event-bus.d.ts.map +1 -1
- package/dist/telemetry/maestro-event-bus.js +179 -3
- package/dist/telemetry/maestro-event-bus.js.map +1 -1
- package/dist/telemetry/maestro-event-catalog.d.ts +3 -1
- package/dist/telemetry/maestro-event-catalog.d.ts.map +1 -1
- package/dist/telemetry/maestro-event-catalog.js +2 -0
- package/dist/telemetry/maestro-event-catalog.js.map +1 -1
- package/dist/telemetry/maestro-platform-replay-fixture.d.ts.map +1 -1
- package/dist/telemetry/maestro-platform-replay-fixture.js +74 -9
- package/dist/telemetry/maestro-platform-replay-fixture.js.map +1 -1
- package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts +1 -1
- package/dist/telemetry/maestro-publisher-conformance-fixture.d.ts.map +1 -1
- package/dist/telemetry/maestro-publisher-conformance-fixture.js +46 -11
- package/dist/telemetry/maestro-publisher-conformance-fixture.js.map +1 -1
- package/dist/telemetry/mcp-beacon.d.ts +20 -0
- package/dist/telemetry/mcp-beacon.d.ts.map +1 -0
- package/dist/telemetry/mcp-beacon.js +54 -0
- package/dist/telemetry/mcp-beacon.js.map +1 -0
- package/dist/telemetry/metadata-normalization.d.ts +7 -0
- package/dist/telemetry/metadata-normalization.d.ts.map +1 -0
- package/dist/telemetry/metadata-normalization.js +189 -0
- package/dist/telemetry/metadata-normalization.js.map +1 -0
- package/dist/telemetry/meter-service-client.d.ts.map +1 -1
- package/dist/telemetry/meter-service-client.js +5 -10
- package/dist/telemetry/meter-service-client.js.map +1 -1
- package/dist/telemetry/metrics.d.ts +123 -0
- package/dist/telemetry/metrics.d.ts.map +1 -0
- package/dist/telemetry/metrics.js +184 -0
- package/dist/telemetry/metrics.js.map +1 -0
- package/dist/telemetry/turn-tracker.d.ts +1 -0
- package/dist/telemetry/turn-tracker.d.ts.map +1 -1
- package/dist/telemetry/turn-tracker.js +22 -1
- package/dist/telemetry/turn-tracker.js.map +1 -1
- package/dist/telemetry/wide-events.d.ts +31 -1
- package/dist/telemetry/wide-events.d.ts.map +1 -1
- package/dist/telemetry/wide-events.js +229 -1
- package/dist/telemetry/wide-events.js.map +1 -1
- package/dist/telemetry.d.ts +39 -3
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +160 -3
- package/dist/telemetry.js.map +1 -1
- package/dist/testing/test-verification-hook.d.ts.map +1 -1
- package/dist/testing/test-verification-hook.js +34 -21
- package/dist/testing/test-verification-hook.js.map +1 -1
- package/dist/tools/apply-patch-parser.d.ts +26 -0
- package/dist/tools/apply-patch-parser.d.ts.map +1 -0
- package/dist/tools/apply-patch-parser.js +146 -0
- package/dist/tools/apply-patch-parser.js.map +1 -0
- package/dist/tools/apply-patch.d.ts +42 -0
- package/dist/tools/apply-patch.d.ts.map +1 -0
- package/dist/tools/apply-patch.js +648 -0
- package/dist/tools/apply-patch.js.map +1 -0
- package/dist/tools/ask-user.d.ts +1 -0
- package/dist/tools/ask-user.d.ts.map +1 -1
- package/dist/tools/background/tool-handler.d.ts +1 -0
- package/dist/tools/background/tool-handler.d.ts.map +1 -1
- package/dist/tools/bash.d.ts +1 -0
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/codesearch.d.ts +1 -0
- package/dist/tools/codesearch.d.ts.map +1 -1
- package/dist/tools/conductor-client.d.ts +1 -0
- package/dist/tools/conductor-client.d.ts.map +1 -1
- package/dist/tools/conductor-client.js +63 -0
- package/dist/tools/conductor-client.js.map +1 -1
- package/dist/tools/diff.d.ts +1 -0
- package/dist/tools/diff.d.ts.map +1 -1
- package/dist/tools/edit.d.ts +1 -0
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/extract-document.d.ts +1 -0
- package/dist/tools/extract-document.d.ts.map +1 -1
- package/dist/tools/find.d.ts +10 -0
- package/dist/tools/find.d.ts.map +1 -1
- package/dist/tools/find.js +236 -27
- package/dist/tools/find.js.map +1 -1
- package/dist/tools/gh.d.ts +3 -0
- package/dist/tools/gh.d.ts.map +1 -1
- package/dist/tools/index.d.ts +50 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list.d.ts +1 -0
- package/dist/tools/list.d.ts.map +1 -1
- package/dist/tools/notebook.d.ts +1 -0
- package/dist/tools/notebook.d.ts.map +1 -1
- package/dist/tools/oracle.d.ts +1 -0
- package/dist/tools/oracle.d.ts.map +1 -1
- package/dist/tools/oracle.js +17 -32
- package/dist/tools/oracle.js.map +1 -1
- package/dist/tools/parallel-execution.d.ts +13 -2
- package/dist/tools/parallel-execution.d.ts.map +1 -1
- package/dist/tools/parallel-execution.js +178 -7
- package/dist/tools/parallel-execution.js.map +1 -1
- package/dist/tools/parallel-ripgrep.d.ts +1 -0
- package/dist/tools/parallel-ripgrep.d.ts.map +1 -1
- package/dist/tools/pipeline.d.ts +4 -0
- package/dist/tools/pipeline.d.ts.map +1 -1
- package/dist/tools/read.d.ts +1 -0
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/search.d.ts +1 -0
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/status.d.ts +1 -0
- package/dist/tools/status.d.ts.map +1 -1
- package/dist/tools/todo.d.ts +1 -0
- package/dist/tools/todo.d.ts.map +1 -1
- package/dist/tools/tool-dsl.d.ts +5 -1
- package/dist/tools/tool-dsl.d.ts.map +1 -1
- package/dist/tools/tool-dsl.js +1 -0
- package/dist/tools/tool-dsl.js.map +1 -1
- package/dist/tools/tool-result-cache.d.ts.map +1 -1
- package/dist/tools/tool-result-cache.js +1 -0
- package/dist/tools/tool-result-cache.js.map +1 -1
- package/dist/tools/typebox-tool.d.ts.map +1 -1
- package/dist/tools/typebox-tool.js +3 -0
- package/dist/tools/typebox-tool.js.map +1 -1
- package/dist/tools/webfetch.d.ts +1 -0
- package/dist/tools/webfetch.d.ts.map +1 -1
- package/dist/tools/websearch.d.ts +1 -0
- package/dist/tools/websearch.d.ts.map +1 -1
- package/dist/tools/write.d.ts +1 -0
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/utils/abort-error.d.ts +2 -0
- package/dist/utils/abort-error.d.ts.map +1 -0
- package/dist/utils/abort-error.js +7 -0
- package/dist/utils/abort-error.js.map +1 -0
- package/dist/utils/downstream.d.ts.map +1 -1
- package/dist/utils/downstream.js +4 -0
- package/dist/utils/downstream.js.map +1 -1
- package/dist/utils/logger.d.ts +3 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +14 -3
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/path-containment.d.ts +2 -0
- package/dist/utils/path-containment.d.ts.map +1 -0
- package/dist/utils/path-containment.js +14 -0
- package/dist/utils/path-containment.js.map +1 -0
- package/dist/utils/prompt-safe-text.d.ts +7 -0
- package/dist/utils/prompt-safe-text.d.ts.map +1 -0
- package/dist/utils/prompt-safe-text.js +44 -0
- package/dist/utils/prompt-safe-text.js.map +1 -0
- package/dist/version.json +2 -2
- package/dist/web-server.d.ts.map +1 -1
- package/dist/web-server.js +32 -7
- package/dist/web-server.js.map +1 -1
- package/dist/workspace/root-resolver.d.ts +4 -1
- package/dist/workspace/root-resolver.d.ts.map +1 -1
- package/dist/workspace/root-resolver.js +16 -6
- package/dist/workspace/root-resolver.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/advisor-effort.d.ts +8 -0
- package/node_modules/@evalops/contracts/dist/advisor-effort.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/advisor-effort.js +35 -0
- package/node_modules/@evalops/contracts/dist/advisor-effort.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/delegation-prompt.d.ts +10 -0
- package/node_modules/@evalops/contracts/dist/delegation-prompt.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/delegation-prompt.js +48 -0
- package/node_modules/@evalops/contracts/dist/delegation-prompt.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/guarded-files-settings.d.ts +20 -0
- package/node_modules/@evalops/contracts/dist/guarded-files-settings.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/guarded-files-settings.js +147 -0
- package/node_modules/@evalops/contracts/dist/guarded-files-settings.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/headless-protocol-generated.d.ts +2 -0
- package/node_modules/@evalops/contracts/dist/headless-protocol-generated.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/headless-protocol-generated.js +1 -0
- package/node_modules/@evalops/contracts/dist/headless-protocol-generated.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts +280 -5
- package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js +36 -1
- package/node_modules/@evalops/contracts/dist/headless-protocol-schemas.generated.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/index.d.ts +15 -1
- package/node_modules/@evalops/contracts/dist/index.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/index.js +6 -0
- package/node_modules/@evalops/contracts/dist/index.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +593 -0
- package/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/maestro-app-server.js +218 -0
- package/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts +91 -0
- package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js +92 -61
- package/node_modules/@evalops/contracts/dist/proto/maestro/v1/headless_pb.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts +3 -0
- package/node_modules/@evalops/contracts/dist/runtime-app-server.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/runtime-constraints.d.ts +28 -0
- package/node_modules/@evalops/contracts/dist/runtime-constraints.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/runtime-constraints.js +71 -0
- package/node_modules/@evalops/contracts/dist/runtime-constraints.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts +7 -0
- package/node_modules/@evalops/contracts/dist/runtime-server-request.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/runtime-server-request.js +2 -0
- package/node_modules/@evalops/contracts/dist/runtime-server-request.js.map +1 -1
- package/node_modules/@evalops/contracts/dist/scenario.d.ts +191 -0
- package/node_modules/@evalops/contracts/dist/scenario.d.ts.map +1 -0
- package/node_modules/@evalops/contracts/dist/scenario.js +4 -0
- package/node_modules/@evalops/contracts/dist/scenario.js.map +1 -0
- package/node_modules/@evalops/contracts/dist/schemas.d.ts +17 -3
- package/node_modules/@evalops/contracts/dist/schemas.d.ts.map +1 -1
- package/node_modules/@evalops/contracts/dist/schemas.js +16 -0
- package/node_modules/@evalops/contracts/dist/schemas.js.map +1 -1
- package/node_modules/@evalops/contracts/package.json +1 -1
- package/node_modules/@evalops/tui/package.json +1 -1
- package/package.json +41 -7
- package/skills/incident-triage/SKILL.md +40 -0
- package/skills/incident-triage/mcp.json +14 -0
- package/skills/incident-triage/reference/triage.md +20 -0
- package/skills/incident-triage/toolbox/incident-timeline +22 -0
- package/skills/incident-triage/toolbox/incident-timeline.cmd +16 -0
- package/skills/pr-review/SKILL.md +40 -0
- package/skills/pr-review/mcp.json +14 -0
- package/skills/pr-review/reference/rubric.md +20 -0
- package/skills/pr-review/toolbox/review-summary +20 -0
- package/skills/pr-review/toolbox/review-summary.cmd +14 -0
- package/skills/release-verification/SKILL.md +40 -0
- package/skills/release-verification/mcp.json +15 -0
- package/skills/release-verification/reference/checklist.md +21 -0
- package/skills/release-verification/toolbox/release-readiness +18 -0
- package/skills/release-verification/toolbox/release-readiness.cmd +12 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-handlers.js","sourceRoot":"","sources":["../../../src/cli-tui/commands/mcp-handlers.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseKeyValueTokens } from \"@evalops/contracts\";\nimport chalk from \"chalk\";\nimport {\n\ttype McpAuthPresetStatus,\n\ttype McpOfficialRegistryEntry,\n\ttype McpServerConfig,\n\ttype McpServerStatus,\n\ttype WritableMcpScope,\n\taddMcpAuthPresetToConfig,\n\taddMcpServerToConfig,\n\tbuildSuggestedMcpServerName,\n\tgetOfficialMcpRegistryEntries,\n\tgetOfficialMcpRegistryMatch,\n\tgetOfficialMcpRegistryUrls,\n\tinferRemoteMcpTransport,\n\tloadMcpConfig,\n\tmcpManager,\n\tofficialMcpRegistryEntryMatchesUrl,\n\tprefetchOfficialMcpRegistry,\n\tremoveMcpAuthPresetFromConfig,\n\tremoveMcpServerFromConfig,\n\tresolveOfficialMcpRegistryEntry,\n\tsearchOfficialMcpRegistry,\n\tsetProjectMcpServerApprovalDecision,\n\tupdateMcpAuthPresetInConfig,\n\tupdateMcpServerInConfig,\n} from \"../../mcp/index.js\";\nimport { parseCommandArguments } from \"../../tools/shell-utils.js\";\n\ntype RemoteMcpTransport = \"http\" | \"sse\";\n\ntype ConfigurableMcpServer = Pick<\n\tMcpServerConfig,\n\t| \"transport\"\n\t| \"url\"\n\t| \"command\"\n\t| \"args\"\n\t| \"env\"\n\t| \"cwd\"\n\t| \"headers\"\n\t| \"headersHelper\"\n\t| \"authPreset\"\n>;\n\nexport interface McpRenderContext {\n\trawInput: string;\n\taddContent(content: string): void;\n\tshowError(message: string): void;\n\trequestRender(): void;\n}\n\ninterface ParsedMcpServerMutationCommand {\n\tscope?: WritableMcpScope;\n\tserver: {\n\t\tname: string;\n\t\ttransport: \"stdio\" | \"http\" | \"sse\";\n\t\tcommand?: string;\n\t\targs?: string[];\n\t\tenv?: Record<string, string>;\n\t\tcwd?: string;\n\t\turl?: string;\n\t\theaders?: Record<string, string>;\n\t\theadersHelper?: string;\n\t\tauthPreset?: string;\n\t};\n}\n\ninterface ParsedMcpAuthPresetMutationCommand {\n\tscope?: WritableMcpScope;\n\tpreset: {\n\t\tname: string;\n\t\theaders?: Record<string, string>;\n\t\theadersHelper?: string;\n\t};\n}\n\ninterface ParsedMcpRemoveCommand {\n\tname: string;\n\tscope?: WritableMcpScope;\n}\n\ninterface ParsedMcpProjectApprovalCommand {\n\tname: string;\n}\n\ninterface ParsedMcpImportCommand {\n\tquery: string;\n\tlocalName?: string;\n\tscope: WritableMcpScope;\n\turl?: string;\n\ttransport?: RemoteMcpTransport;\n\theaders?: Record<string, string>;\n\theadersHelper?: string;\n\tauthPreset?: string;\n}\n\nconst MCP_ADD_USAGE =\n\t\"/mcp add <name> <command-or-url> [args...] [--scope local|project|user] [--transport stdio|http|sse] [--cwd <path>] [--env KEY=value] [--header 'Name: value'] [--headers-helper <command>] [--auth-preset <name>]\";\nconst MCP_EDIT_USAGE =\n\t\"/mcp edit <name> <command-or-url> [args...] [--scope local|project|user] [--transport stdio|http|sse] [--cwd <path>] [--env KEY=value] [--header 'Name: value'] [--headers-helper <command>] [--auth-preset <name>]\";\nconst MCP_REMOVE_USAGE = \"/mcp remove <name> [--scope local|project|user]\";\nconst MCP_APPROVE_USAGE = \"/mcp approve <name>\";\nconst MCP_DENY_USAGE = \"/mcp deny <name>\";\nconst MCP_SEARCH_USAGE = \"/mcp search [query]\";\nconst MCP_IMPORT_USAGE =\n\t\"/mcp import <official-id> [name] [--scope local|project|user] [--url <https-url>] [--transport http|sse] [--header 'Name: value'] [--headers-helper <command>] [--auth-preset <name>]\";\nconst MCP_AUTH_USAGE = \"/mcp auth [list|add|edit|remove]\";\nconst MCP_AUTH_ADD_USAGE =\n\t\"/mcp auth add <name> [--scope local|project|user] [--header 'Name: value'] [--headers-helper <command>]\";\nconst MCP_AUTH_EDIT_USAGE =\n\t\"/mcp auth edit <name> [--scope local|project|user] [--header 'Name: value'] [--headers-helper <command>]\";\nconst MCP_AUTH_REMOVE_USAGE =\n\t\"/mcp auth remove <name> [--scope local|project|user]\";\n\nfunction formatMcpScopeLabel(scope: McpServerStatus[\"scope\"]): string | null {\n\tswitch (scope) {\n\t\tcase \"enterprise\":\n\t\t\treturn \"Enterprise config\";\n\t\tcase \"plugin\":\n\t\t\treturn \"Plugin config\";\n\t\tcase \"project\":\n\t\t\treturn \"Project config\";\n\t\tcase \"local\":\n\t\t\treturn \"Local config\";\n\t\tcase \"user\":\n\t\t\treturn \"User config\";\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\nfunction formatMcpTransportLabel(\n\ttransport:\n\t\t| McpServerStatus[\"transport\"]\n\t\t| McpOfficialRegistryEntry[\"transport\"],\n): string {\n\tswitch (transport) {\n\t\tcase \"http\":\n\t\t\treturn \"HTTP\";\n\t\tcase \"sse\":\n\t\t\treturn \"SSE\";\n\t\tcase \"stdio\":\n\t\t\treturn \"stdio\";\n\t\tdefault:\n\t\t\treturn \"unknown\";\n\t}\n}\n\nfunction formatMcpErrorLabel(error: string | undefined): string | null {\n\tif (typeof error !== \"string\") {\n\t\treturn null;\n\t}\n\n\treturn error.trim() || \"Connection failed.\";\n}\n\nfunction formatMcpTrustLabel(server: McpServerStatus): string | null {\n\tif (server.transport !== \"http\" && server.transport !== \"sse\") {\n\t\treturn null;\n\t}\n\n\tswitch (server.remoteTrust) {\n\t\tcase \"official\":\n\t\t\treturn server.officialRegistry?.displayName\n\t\t\t\t? `Official registry (${server.officialRegistry.displayName})`\n\t\t\t\t: \"Official registry\";\n\t\tcase \"custom\":\n\t\t\treturn \"Custom remote\";\n\t\tdefault:\n\t\t\treturn \"Unverified remote\";\n\t}\n}\n\nfunction formatMcpProjectApprovalLabel(\n\tprojectApproval: McpServerStatus[\"projectApproval\"],\n): string | null {\n\tswitch (projectApproval) {\n\t\tcase \"pending\":\n\t\t\treturn \"Pending local approval\";\n\t\tcase \"approved\":\n\t\t\treturn \"Approved locally\";\n\t\tcase \"denied\":\n\t\t\treturn \"Denied locally\";\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\nfunction getMcpConnectionState(server: McpServerStatus): {\n\ticon: string;\n\tlabel: string;\n} {\n\tswitch (server.projectApproval) {\n\t\tcase \"pending\":\n\t\t\treturn { icon: chalk.yellow(\"◐\"), label: \"Pending approval\" };\n\t\tcase \"denied\":\n\t\t\treturn { icon: chalk.red(\"■\"), label: \"Denied\" };\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\ticon: server.connected ? chalk.green(\"●\") : chalk.red(\"○\"),\n\t\t\t\tlabel: server.connected ? \"Connected\" : \"Not connected\",\n\t\t\t};\n\t}\n}\n\nfunction isWritableScope(value: string): value is WritableMcpScope {\n\treturn value === \"local\" || value === \"project\" || value === \"user\";\n}\n\nfunction isMcpTransport(value: string): value is \"stdio\" | \"http\" | \"sse\" {\n\treturn value === \"stdio\" || value === \"http\" || value === \"sse\";\n}\n\nfunction isRemoteMcpTransport(value: string): value is RemoteMcpTransport {\n\treturn value === \"http\" || value === \"sse\";\n}\n\nfunction looksLikeRemoteUrl(value: string): boolean {\n\ttry {\n\t\tconst parsed = new URL(value);\n\t\treturn parsed.protocol === \"http:\" || parsed.protocol === \"https:\";\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction parseTokens(rawInput: string): string[] {\n\ttry {\n\t\treturn parseCommandArguments(rawInput);\n\t} catch (error) {\n\t\tthrow new Error(\n\t\t\terror instanceof Error\n\t\t\t\t? `Invalid /mcp command: ${error.message}`\n\t\t\t\t: String(error),\n\t\t);\n\t}\n}\n\nfunction parseMcpPromptInvocationTokens(rawInput: string): {\n\tserverName?: string;\n\tpromptName?: string;\n\targs?: Record<string, string>;\n} {\n\tconst tokens = parseTokens(rawInput);\n\tif (tokens[0] !== \"/mcp\" || tokens[1] !== \"prompts\") {\n\t\treturn {};\n\t}\n\n\tconst serverName = tokens[2];\n\tconst promptName = tokens[3];\n\tif (!serverName || !promptName) {\n\t\treturn { serverName, promptName };\n\t}\n\n\tconst parsedArgs = parseKeyValueTokens(\n\t\ttokens.slice(4),\n\t\t\"Invalid MCP prompt argument. Use KEY=value after the prompt name.\",\n\t);\n\tif (parsedArgs.error) {\n\t\tthrow new Error(parsedArgs.error);\n\t}\n\n\treturn {\n\t\tserverName,\n\t\tpromptName,\n\t\targs: parsedArgs.values,\n\t};\n}\n\nfunction isMcpAuthAlias(value: string | undefined): boolean {\n\treturn value === \"auth\" || value === \"preset\" || value === \"presets\";\n}\n\nfunction parseMcpServerMutationCommand(\n\trawInput: string,\n\tcommand: \"add\" | \"edit\",\n\tdefaultScope?: WritableMcpScope,\n): ParsedMcpServerMutationCommand {\n\tconst usage = command === \"add\" ? MCP_ADD_USAGE : MCP_EDIT_USAGE;\n\tconst tokens = parseTokens(rawInput);\n\n\tif (tokens[0] !== \"/mcp\" || tokens[1] !== command) {\n\t\tthrow new Error(usage);\n\t}\n\n\tconst name = tokens[2];\n\tif (!name) {\n\t\tthrow new Error(usage);\n\t}\n\n\tlet scope = defaultScope;\n\tlet transport: \"stdio\" | \"http\" | \"sse\" | undefined;\n\tlet cwd: string | undefined;\n\tlet headersHelper: string | undefined;\n\tlet authPreset: string | undefined;\n\tconst headers: Record<string, string> = {};\n\tconst env: Record<string, string> = {};\n\tconst positionals: string[] = [];\n\tlet separatorIndex = -1;\n\n\tfor (let index = 3; index < tokens.length; index += 1) {\n\t\tconst token = tokens[index]!;\n\t\tif (token === \"--\") {\n\t\t\tseparatorIndex = index;\n\t\t\tbreak;\n\t\t}\n\t\tif (token === \"--scope\" || token === \"-s\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value || !isWritableScope(value)) {\n\t\t\t\tthrow new Error(\"Invalid MCP scope. Use local, project, or user.\");\n\t\t\t}\n\t\t\tscope = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--transport\" || token === \"-t\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value || !isMcpTransport(value)) {\n\t\t\t\tthrow new Error(\"Invalid MCP transport. Use stdio, http, or sse.\");\n\t\t\t}\n\t\t\ttransport = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--cwd\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value) {\n\t\t\t\tthrow new Error(\"Missing value for --cwd.\");\n\t\t\t}\n\t\t\tcwd = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--headers-helper\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value) {\n\t\t\t\tthrow new Error(\"Missing value for --headers-helper.\");\n\t\t\t}\n\t\t\theadersHelper = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--auth-preset\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value) {\n\t\t\t\tthrow new Error(\"Missing value for --auth-preset.\");\n\t\t\t}\n\t\t\tauthPreset = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--header\" || token === \"-H\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value) {\n\t\t\t\tthrow new Error(\"Missing value for --header.\");\n\t\t\t}\n\t\t\tconst [headerName, ...rest] = value.split(\":\");\n\t\t\tconst headerValue = rest.join(\":\").trim();\n\t\t\tif (!headerName?.trim() || headerValue.length === 0) {\n\t\t\t\tthrow new Error(`Invalid MCP header: ${value}`);\n\t\t\t}\n\t\t\theaders[headerName.trim()] = headerValue;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--env\" || token === \"-e\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value) {\n\t\t\t\tthrow new Error(\"Missing value for --env.\");\n\t\t\t}\n\t\t\tconst separator = value.indexOf(\"=\");\n\t\t\tif (separator <= 0) {\n\t\t\t\tthrow new Error(`Invalid MCP env var: ${value}`);\n\t\t\t}\n\t\t\tconst envName = value.slice(0, separator).trim();\n\t\t\tconst envValue = value.slice(separator + 1);\n\t\t\tif (!envName) {\n\t\t\t\tthrow new Error(`Invalid MCP env var: ${value}`);\n\t\t\t}\n\t\t\tenv[envName] = envValue;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tpositionals.push(token);\n\t}\n\n\tconst commandTokens =\n\t\tseparatorIndex >= 0 ? tokens.slice(separatorIndex + 1) : positionals;\n\tif (commandTokens.length === 0) {\n\t\tthrow new Error(usage);\n\t}\n\n\tconst target = commandTokens[0]!;\n\tconst resolvedTransport =\n\t\ttransport ??\n\t\t(looksLikeRemoteUrl(target) ? inferRemoteMcpTransport(target) : \"stdio\");\n\n\tif (resolvedTransport === \"http\" || resolvedTransport === \"sse\") {\n\t\tif (!looksLikeRemoteUrl(target)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Remote MCP servers require an http(s) URL target. Received: ${target}`,\n\t\t\t);\n\t\t}\n\t\tif (commandTokens.length > 1) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Remote MCP servers accept a single URL target. Move command arguments after -- only for stdio servers.\",\n\t\t\t);\n\t\t}\n\t\tif (cwd) {\n\t\t\tthrow new Error(\"--cwd is only supported for stdio MCP servers.\");\n\t\t}\n\t\tif (Object.keys(env).length > 0) {\n\t\t\tthrow new Error(\"--env is only supported for stdio MCP servers.\");\n\t\t}\n\t\treturn {\n\t\t\tscope,\n\t\t\tserver: {\n\t\t\t\tname,\n\t\t\t\ttransport: resolvedTransport,\n\t\t\t\turl: target,\n\t\t\t\theaders: Object.keys(headers).length > 0 ? headers : undefined,\n\t\t\t\theadersHelper,\n\t\t\t\tauthPreset,\n\t\t\t},\n\t\t};\n\t}\n\n\tif (Object.keys(headers).length > 0) {\n\t\tthrow new Error(\"--header is only supported for remote MCP servers.\");\n\t}\n\tif (headersHelper) {\n\t\tthrow new Error(\n\t\t\t\"--headers-helper is only supported for remote MCP servers.\",\n\t\t);\n\t}\n\tif (authPreset) {\n\t\tthrow new Error(\"--auth-preset is only supported for remote MCP servers.\");\n\t}\n\n\treturn {\n\t\tscope,\n\t\tserver: {\n\t\t\tname,\n\t\t\ttransport: \"stdio\",\n\t\t\tcommand: commandTokens[0],\n\t\t\targs: commandTokens.slice(1),\n\t\t\tenv: Object.keys(env).length > 0 ? env : undefined,\n\t\t\tcwd,\n\t\t},\n\t};\n}\n\nfunction parseMcpRemoveCommand(rawInput: string): ParsedMcpRemoveCommand {\n\tconst tokens = parseTokens(rawInput);\n\tif (tokens[0] !== \"/mcp\" || tokens[1] !== \"remove\") {\n\t\tthrow new Error(MCP_REMOVE_USAGE);\n\t}\n\n\tconst name = tokens[2];\n\tif (!name) {\n\t\tthrow new Error(MCP_REMOVE_USAGE);\n\t}\n\n\tlet scope: WritableMcpScope | undefined;\n\tfor (let index = 3; index < tokens.length; index += 1) {\n\t\tconst token = tokens[index]!;\n\t\tif (token === \"--scope\" || token === \"-s\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value || !isWritableScope(value)) {\n\t\t\t\tthrow new Error(\"Invalid MCP scope. Use local, project, or user.\");\n\t\t\t}\n\t\t\tscope = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new Error(MCP_REMOVE_USAGE);\n\t}\n\n\treturn { name, scope };\n}\n\nfunction parseMcpProjectApprovalCommand(\n\trawInput: string,\n\tcommand: \"approve\" | \"deny\",\n): ParsedMcpProjectApprovalCommand {\n\tconst tokens = parseTokens(rawInput);\n\tconst usage = command === \"approve\" ? MCP_APPROVE_USAGE : MCP_DENY_USAGE;\n\tif (tokens[0] !== \"/mcp\" || tokens[1] !== command) {\n\t\tthrow new Error(usage);\n\t}\n\n\tconst name = tokens[2];\n\tif (!name || tokens.length !== 3) {\n\t\tthrow new Error(usage);\n\t}\n\n\treturn { name };\n}\n\nfunction parseMcpSearchQuery(rawInput: string): string {\n\tconst tokens = parseTokens(rawInput);\n\tif (\n\t\ttokens[0] !== \"/mcp\" ||\n\t\t(tokens[1] !== \"search\" && tokens[1] !== \"registry\")\n\t) {\n\t\tthrow new Error(MCP_SEARCH_USAGE);\n\t}\n\treturn tokens.slice(2).join(\" \").trim();\n}\n\nfunction parseMcpImportCommand(rawInput: string): ParsedMcpImportCommand {\n\tconst tokens = parseTokens(rawInput);\n\tif (tokens[0] !== \"/mcp\" || tokens[1] !== \"import\") {\n\t\tthrow new Error(MCP_IMPORT_USAGE);\n\t}\n\n\tconst query = tokens[2];\n\tif (!query) {\n\t\tthrow new Error(MCP_IMPORT_USAGE);\n\t}\n\n\tlet localName: string | undefined;\n\tlet scope: WritableMcpScope = \"local\";\n\tlet url: string | undefined;\n\tlet transport: RemoteMcpTransport | undefined;\n\tlet headersHelper: string | undefined;\n\tlet authPreset: string | undefined;\n\tconst headers: Record<string, string> = {};\n\n\tfor (let index = 3; index < tokens.length; index += 1) {\n\t\tconst token = tokens[index]!;\n\t\tif (token === \"--scope\" || token === \"-s\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value || !isWritableScope(value)) {\n\t\t\t\tthrow new Error(\"Invalid MCP scope. Use local, project, or user.\");\n\t\t\t}\n\t\t\tscope = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--url\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value || !looksLikeRemoteUrl(value)) {\n\t\t\t\tthrow new Error(\"Provide a valid http(s) URL for --url.\");\n\t\t\t}\n\t\t\turl = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--transport\" || token === \"-t\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value || !isRemoteMcpTransport(value)) {\n\t\t\t\tthrow new Error(\"Invalid MCP transport. Use http or sse.\");\n\t\t\t}\n\t\t\ttransport = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--headers-helper\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value) {\n\t\t\t\tthrow new Error(\"Missing value for --headers-helper.\");\n\t\t\t}\n\t\t\theadersHelper = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--auth-preset\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value) {\n\t\t\t\tthrow new Error(\"Missing value for --auth-preset.\");\n\t\t\t}\n\t\t\tauthPreset = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--header\" || token === \"-H\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value) {\n\t\t\t\tthrow new Error(\"Missing value for --header.\");\n\t\t\t}\n\t\t\tconst [headerName, ...rest] = value.split(\":\");\n\t\t\tconst headerValue = rest.join(\":\").trim();\n\t\t\tif (!headerName?.trim() || headerValue.length === 0) {\n\t\t\t\tthrow new Error(`Invalid MCP header: ${value}`);\n\t\t\t}\n\t\t\theaders[headerName.trim()] = headerValue;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token.startsWith(\"-\")) {\n\t\t\tthrow new Error(MCP_IMPORT_USAGE);\n\t\t}\n\t\tif (!localName) {\n\t\t\tlocalName = token;\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new Error(MCP_IMPORT_USAGE);\n\t}\n\n\treturn {\n\t\tquery,\n\t\tlocalName,\n\t\tscope,\n\t\turl,\n\t\ttransport,\n\t\theaders: Object.keys(headers).length > 0 ? headers : undefined,\n\t\theadersHelper,\n\t\tauthPreset,\n\t};\n}\n\nfunction parseMcpAuthPresetMutationCommand(\n\trawInput: string,\n\tcommand: \"add\" | \"edit\",\n\tdefaultScope?: WritableMcpScope,\n): ParsedMcpAuthPresetMutationCommand {\n\tconst usage = command === \"add\" ? MCP_AUTH_ADD_USAGE : MCP_AUTH_EDIT_USAGE;\n\tconst tokens = parseTokens(rawInput);\n\n\tif (\n\t\ttokens[0] !== \"/mcp\" ||\n\t\t!isMcpAuthAlias(tokens[1]) ||\n\t\ttokens[2] !== command\n\t) {\n\t\tthrow new Error(usage);\n\t}\n\n\tconst name = tokens[3];\n\tif (!name) {\n\t\tthrow new Error(usage);\n\t}\n\n\tlet scope = defaultScope;\n\tlet headersHelper: string | undefined;\n\tconst headers: Record<string, string> = {};\n\n\tfor (let index = 4; index < tokens.length; index += 1) {\n\t\tconst token = tokens[index]!;\n\t\tif (token === \"--scope\" || token === \"-s\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value || !isWritableScope(value)) {\n\t\t\t\tthrow new Error(\"Invalid MCP scope. Use local, project, or user.\");\n\t\t\t}\n\t\t\tscope = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--headers-helper\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value) {\n\t\t\t\tthrow new Error(\"Missing value for --headers-helper.\");\n\t\t\t}\n\t\t\theadersHelper = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--header\" || token === \"-H\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value) {\n\t\t\t\tthrow new Error(\"Missing value for --header.\");\n\t\t\t}\n\t\t\tconst [headerName, ...rest] = value.split(\":\");\n\t\t\tconst headerValue = rest.join(\":\").trim();\n\t\t\tif (!headerName?.trim() || headerValue.length === 0) {\n\t\t\t\tthrow new Error(`Invalid MCP header: ${value}`);\n\t\t\t}\n\t\t\theaders[headerName.trim()] = headerValue;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new Error(usage);\n\t}\n\n\tif (Object.keys(headers).length === 0 && !headersHelper) {\n\t\tthrow new Error(\n\t\t\t\"MCP auth presets require at least one --header or --headers-helper value.\",\n\t\t);\n\t}\n\n\treturn {\n\t\tscope,\n\t\tpreset: {\n\t\t\tname,\n\t\t\theaders: Object.keys(headers).length > 0 ? headers : undefined,\n\t\t\theadersHelper,\n\t\t},\n\t};\n}\n\nfunction parseMcpAuthPresetRemoveCommand(\n\trawInput: string,\n): ParsedMcpRemoveCommand {\n\tconst tokens = parseTokens(rawInput);\n\tif (\n\t\ttokens[0] !== \"/mcp\" ||\n\t\t!isMcpAuthAlias(tokens[1]) ||\n\t\ttokens[2] !== \"remove\"\n\t) {\n\t\tthrow new Error(MCP_AUTH_REMOVE_USAGE);\n\t}\n\n\tconst name = tokens[3];\n\tif (!name) {\n\t\tthrow new Error(MCP_AUTH_REMOVE_USAGE);\n\t}\n\n\tlet scope: WritableMcpScope | undefined;\n\tfor (let index = 4; index < tokens.length; index += 1) {\n\t\tconst token = tokens[index]!;\n\t\tif (token === \"--scope\" || token === \"-s\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value || !isWritableScope(value)) {\n\t\t\t\tthrow new Error(\"Invalid MCP scope. Use local, project, or user.\");\n\t\t\t}\n\t\t\tscope = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new Error(MCP_AUTH_REMOVE_USAGE);\n\t}\n\n\treturn { name, scope };\n}\n\nfunction resolveKnownAuthPresetName(\n\tprojectRoot: string,\n\tauthPreset: string | undefined,\n): void {\n\tif (!authPreset) {\n\t\treturn;\n\t}\n\tconst existingPreset = (loadMcpConfig(projectRoot).authPresets ?? []).find(\n\t\t(preset) => preset.name === authPreset,\n\t);\n\tif (!existingPreset) {\n\t\tthrow new Error(\n\t\t\t`MCP auth preset \"${authPreset}\" not found in merged config.`,\n\t\t);\n\t}\n}\n\nasync function reloadMcpManager(projectRoot: string) {\n\tconst nextConfig = loadMcpConfig(projectRoot, { includeEnvLimits: true });\n\tawait mcpManager.configure(nextConfig);\n\treturn nextConfig;\n}\n\nasync function ensureOfficialRegistryLoaded(): Promise<\n\tMcpOfficialRegistryEntry[]\n> {\n\tawait prefetchOfficialMcpRegistry();\n\tconst entries = getOfficialMcpRegistryEntries();\n\tif (entries.length === 0) {\n\t\tthrow new Error(\"Official MCP registry metadata is unavailable right now.\");\n\t}\n\treturn entries;\n}\n\nfunction formatOfficialRegistryIdentifier(\n\tentry: Pick<McpOfficialRegistryEntry, \"slug\" | \"serverName\">,\n): string | undefined {\n\treturn entry.slug ?? entry.serverName;\n}\n\nfunction appendConfiguredServerSummary(\n\tlines: string[],\n\tserver: ConfigurableMcpServer,\n): void {\n\tlines.push(` transport: ${server.transport}`);\n\n\tif (server.url) {\n\t\tlines.push(` remote: ${server.url}`);\n\t\tconst registryMatch = getOfficialMcpRegistryMatch(server.url);\n\t\tif (registryMatch.trust === \"official\") {\n\t\t\tlines.push(\n\t\t\t\t` trust: official${registryMatch.info?.displayName ? ` (${registryMatch.info.displayName})` : \"\"}`,\n\t\t\t);\n\t\t\tif (registryMatch.info?.documentationUrl) {\n\t\t\t\tlines.push(` docs: ${registryMatch.info.documentationUrl}`);\n\t\t\t}\n\t\t} else if (registryMatch.trust === \"custom\") {\n\t\t\tlines.push(\" trust: custom\");\n\t\t}\n\t\tif (server.headers && Object.keys(server.headers).length > 0) {\n\t\t\tlines.push(` headers: ${Object.keys(server.headers).join(\", \")}`);\n\t\t}\n\t\tif (server.headersHelper) {\n\t\t\tlines.push(` headers helper: ${server.headersHelper}`);\n\t\t}\n\t\tif (server.authPreset) {\n\t\t\tlines.push(` auth preset: ${server.authPreset}`);\n\t\t}\n\t\treturn;\n\t}\n\n\tlines.push(` command: ${server.command}`);\n\tif (server.args?.length) {\n\t\tlines.push(` args: ${server.args.join(\" \")}`);\n\t}\n\tif (server.cwd) {\n\t\tlines.push(` cwd: ${server.cwd}`);\n\t}\n\tif (server.env && Object.keys(server.env).length > 0) {\n\t\tlines.push(` env: ${Object.keys(server.env).join(\", \")}`);\n\t}\n}\n\nfunction renderOfficialRegistryResults(\n\trenderCtx: McpRenderContext,\n\ttitle: string,\n\tentries: McpOfficialRegistryEntry[],\n\tfooter?: string,\n): void {\n\tconst lines: string[] = [title, \"\"];\n\n\tfor (const [index, entry] of entries.entries()) {\n\t\tlines.push(`${index + 1}. ${entry.displayName}`);\n\t\tconst registryId = formatOfficialRegistryIdentifier(entry);\n\t\tif (registryId) {\n\t\t\tlines.push(` id: ${registryId}`);\n\t\t}\n\t\tif (entry.transport) {\n\t\t\tlines.push(` transport: ${formatMcpTransportLabel(entry.transport)}`);\n\t\t}\n\t\tconst urls = getOfficialMcpRegistryUrls(entry);\n\t\tif (urls.length === 1) {\n\t\t\tlines.push(` url: ${urls[0]}`);\n\t\t} else if (urls.length > 1) {\n\t\t\tlines.push(` url: ${urls[0]} (+${urls.length - 1} more)`);\n\t\t} else if (entry.urlRegex) {\n\t\t\tlines.push(` url pattern: ${entry.urlRegex}`);\n\t\t}\n\t\tif (entry.oneLiner) {\n\t\t\tlines.push(` summary: ${entry.oneLiner}`);\n\t\t}\n\t\tif (entry.documentationUrl) {\n\t\t\tlines.push(` docs: ${entry.documentationUrl}`);\n\t\t}\n\t\tlines.push(\"\");\n\t}\n\n\tif (footer) {\n\t\tlines.push(chalk.dim(footer));\n\t}\n\n\trenderCtx.addContent(lines.join(\"\\n\").trimEnd());\n\trenderCtx.requestRender();\n}\n\nfunction appendAuthPresetSummary(\n\tlines: string[],\n\tpreset: {\n\t\tname: string;\n\t\tscope?: McpAuthPresetStatus[\"scope\"];\n\t\theaders?: Record<string, string>;\n\t\theaderKeys?: string[];\n\t\theadersHelper?: string;\n\t},\n): void {\n\tlines.push(preset.name);\n\tconst scopeLabel = formatMcpScopeLabel(preset.scope);\n\tif (scopeLabel) {\n\t\tlines.push(` Source: ${scopeLabel}`);\n\t}\n\tconst headerKeys =\n\t\tpreset.headerKeys ??\n\t\t(preset.headers ? Object.keys(preset.headers).sort() : undefined);\n\tif (headerKeys && headerKeys.length > 0) {\n\t\tlines.push(` Header keys: ${headerKeys.join(\", \")}`);\n\t}\n\tif (preset.headersHelper) {\n\t\tlines.push(` Headers helper: ${preset.headersHelper}`);\n\t}\n}\n\nfunction appendConfiguredAuthPresetDetails(\n\tlines: string[],\n\tpreset: {\n\t\theaders?: Record<string, string>;\n\t\theaderKeys?: string[];\n\t\theadersHelper?: string;\n\t},\n): void {\n\tconst headerKeys =\n\t\tpreset.headerKeys ??\n\t\t(preset.headers ? Object.keys(preset.headers).sort() : undefined);\n\tif (headerKeys && headerKeys.length > 0) {\n\t\tlines.push(` headers: ${headerKeys.join(\", \")}`);\n\t}\n\tif (preset.headersHelper) {\n\t\tlines.push(` headers helper: ${preset.headersHelper}`);\n\t}\n}\n\nfunction formatMcpPromptArgumentSummary(\n\tserver: McpServerStatus,\n\tpromptName: string,\n): string | null {\n\tconst prompt = server.promptDetails?.find(\n\t\t(entry) => entry.name === promptName,\n\t);\n\tconst promptArguments = prompt?.arguments ?? [];\n\tif (!prompt || promptArguments.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn promptArguments\n\t\t.map((argument) => {\n\t\t\tconst summary = argument.required\n\t\t\t\t? `${argument.name} (required)`\n\t\t\t\t: argument.name;\n\t\t\treturn argument.description\n\t\t\t\t? `${summary}: ${argument.description}`\n\t\t\t\t: summary;\n\t\t})\n\t\t.join(\"; \");\n}\n\nfunction appendMcpPromptSummary(\n\tlines: string[],\n\tserver: McpServerStatus,\n\tpromptName: string,\n\tindent = \" \",\n): void {\n\tlines.push(`${indent}${promptName}`);\n\tconst prompt = server.promptDetails?.find(\n\t\t(entry) => entry.name === promptName,\n\t);\n\tif (!prompt) {\n\t\treturn;\n\t}\n\n\tconst detailIndent = `${indent} `;\n\tif (prompt.title && prompt.title !== promptName) {\n\t\tlines.push(`${detailIndent}Title: ${prompt.title}`);\n\t}\n\tif (prompt.description) {\n\t\tlines.push(`${detailIndent}Description: ${prompt.description}`);\n\t}\n\tconst argumentSummary = formatMcpPromptArgumentSummary(server, promptName);\n\tif (argumentSummary) {\n\t\tlines.push(`${detailIndent}Args: ${argumentSummary}`);\n\t}\n}\n\nexport function formatMcpPromptList(\n\tservers: McpServerStatus[],\n\tserverName?: string,\n): string {\n\tconst lines: string[] = [\"MCP Prompts\", \"\"];\n\tconst visibleServers = serverName\n\t\t? servers.filter((entry) => entry.name === serverName)\n\t\t: servers;\n\n\tif (serverName && visibleServers.length === 0) {\n\t\tlines.push(`Server '${serverName}' not found`);\n\t} else if (serverName && !visibleServers[0]?.connected) {\n\t\tlines.push(`Server '${serverName}' not connected`);\n\t} else {\n\t\tconst connectedWithPrompts = visibleServers\n\t\t\t.filter((server) => server.connected)\n\t\t\t.filter((server) => server.prompts.length > 0);\n\n\t\tif (connectedWithPrompts.length === 0) {\n\t\t\tlines.push(\n\t\t\t\tserverName\n\t\t\t\t\t? `Server '${serverName}' does not expose prompts.`\n\t\t\t\t\t: \"No prompts available from connected servers.\",\n\t\t\t);\n\t\t} else {\n\t\t\tfor (const server of connectedWithPrompts) {\n\t\t\t\tlines.push(`${chalk.bold(server.name)}:`);\n\t\t\t\tfor (const prompt of server.prompts) {\n\t\t\t\t\tappendMcpPromptSummary(lines, server, prompt);\n\t\t\t\t}\n\t\t\t\tlines.push(\"\");\n\t\t\t}\n\t\t}\n\t}\n\n\tlines.push(\"\");\n\tlines.push(chalk.dim(\"Usage: /mcp prompts <server> <name> [KEY=value ...]\"));\n\treturn lines.join(\"\\n\");\n}\n\nfunction renderMcpStatus(renderCtx: McpRenderContext): void {\n\tconst status = mcpManager.getStatus();\n\tconst lines: string[] = [\"Model Context Protocol\", \"\"];\n\n\tif (status.authPresets.length > 0) {\n\t\tlines.push(\"Auth presets\", \"\");\n\t\tfor (const preset of status.authPresets) {\n\t\t\tappendAuthPresetSummary(lines, preset);\n\t\t\tlines.push(\"\");\n\t\t}\n\t}\n\n\tif (status.servers.length === 0) {\n\t\tif (status.authPresets.length > 0) {\n\t\t\tlines.push(\"Servers\", \"\");\n\t\t}\n\t\tlines.push(\n\t\t\t\"No MCP servers configured.\",\n\t\t\t\"\",\n\t\t\t\"Add servers to ~/.maestro/mcp.json, .maestro/mcp.json, or use /mcp:\",\n\t\t\t\"\",\n\t\t\t\" /mcp search linear\",\n\t\t\t\" /mcp import linear\",\n\t\t\t\" /mcp add linear https://mcp.linear.app/mcp\",\n\t\t\t\" /mcp add linear https://mcp.linear.app/mcp --auth-preset linear-auth\",\n\t\t\t\" /mcp auth add linear-auth --header 'Authorization: Bearer ...'\",\n\t\t\t\" /mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem .\",\n\t\t\t\"\",\n\t\t\t' { \"mcpServers\": { \"my-server\": { \"command\": \"npx\", \"args\": [\"-y\", \"@example/mcp-server\"] } } }',\n\t\t);\n\t} else {\n\t\tif (status.authPresets.length > 0) {\n\t\t\tlines.push(\"Servers\", \"\");\n\t\t}\n\t\tfor (const server of status.servers) {\n\t\t\tconst connectionState = getMcpConnectionState(server);\n\t\t\tlines.push(`${connectionState.icon} ${server.name}`);\n\t\t\tconst scopeLabel = formatMcpScopeLabel(server.scope);\n\t\t\tif (scopeLabel) {\n\t\t\t\tlines.push(` Source: ${scopeLabel}`);\n\t\t\t}\n\t\t\tlines.push(` Status: ${connectionState.label}`);\n\t\t\tlines.push(` Transport: ${formatMcpTransportLabel(server.transport)}`);\n\t\t\tif (server.remoteUrl) {\n\t\t\t\tlines.push(` Remote: ${server.remoteUrl}`);\n\t\t\t}\n\t\t\tif (server.authPreset) {\n\t\t\t\tlines.push(` Auth preset: ${server.authPreset}`);\n\t\t\t}\n\t\t\tif (server.headerKeys && server.headerKeys.length > 0) {\n\t\t\t\tlines.push(` Header keys: ${server.headerKeys.join(\", \")}`);\n\t\t\t}\n\t\t\tif (server.headersHelper) {\n\t\t\t\tlines.push(` Headers helper: ${server.headersHelper}`);\n\t\t\t}\n\t\t\tconst trustLabel = formatMcpTrustLabel(server);\n\t\t\tif (trustLabel) {\n\t\t\t\tlines.push(` Trust: ${trustLabel}`);\n\t\t\t}\n\t\t\tconst approvalLabel = formatMcpProjectApprovalLabel(\n\t\t\t\tserver.projectApproval,\n\t\t\t);\n\t\t\tif (approvalLabel) {\n\t\t\t\tlines.push(` Approval: ${approvalLabel}`);\n\t\t\t}\n\t\t\tif (server.officialRegistry?.documentationUrl) {\n\t\t\t\tlines.push(` Docs: ${server.officialRegistry.documentationUrl}`);\n\t\t\t}\n\t\t\tif (server.officialRegistry?.permissions) {\n\t\t\t\tlines.push(` Permissions: ${server.officialRegistry.permissions}`);\n\t\t\t}\n\t\t\tif (server.connected) {\n\t\t\t\tif (server.tools.length > 0) {\n\t\t\t\t\tlines.push(\n\t\t\t\t\t\t` Tools: ${server.tools.map((tool) => tool.name).join(\", \")}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (server.resources.length > 0) {\n\t\t\t\t\tlines.push(` Resources: ${server.resources.length}`);\n\t\t\t\t}\n\t\t\t\tif (server.prompts.length > 0) {\n\t\t\t\t\tlines.push(` Prompts: ${server.prompts.join(\", \")}`);\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tserver.projectApproval === \"pending\" ||\n\t\t\t\tserver.projectApproval === \"denied\"\n\t\t\t) {\n\t\t\t\tlines.push(\n\t\t\t\t\t` ${chalk.dim(\"Connection is blocked by local approval state\")}`,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tlines.push(` ${chalk.dim(\"Not connected\")}`);\n\t\t\t\tconst errorLabel = formatMcpErrorLabel(server.error);\n\t\t\t\tif (errorLabel) {\n\t\t\t\t\tlines.push(` ${chalk.red(`Error: ${errorLabel}`)}`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tlines.push(\"\");\n\tlines.push(\n\t\tchalk.dim(\n\t\t\t\"Subcommands: /mcp add, /mcp edit, /mcp remove, /mcp approve, /mcp deny, /mcp search, /mcp import, /mcp auth, /mcp resources, /mcp prompts\",\n\t\t),\n\t);\n\n\trenderCtx.addContent(lines.join(\"\\n\").trimEnd());\n\trenderCtx.requestRender();\n}\n\nexport function handleMcpCommand(renderCtx: McpRenderContext): void {\n\tconst args = renderCtx.rawInput.replace(/^\\/mcp\\s*/, \"\").trim();\n\tconst parts = args.split(/\\s+/);\n\tconst subcommand = parts[0]?.toLowerCase() || \"\";\n\n\tif (subcommand === \"add\") {\n\t\tvoid handleMcpAddCommand(renderCtx);\n\t\treturn;\n\t}\n\tif (subcommand === \"edit\") {\n\t\tvoid handleMcpEditCommand(renderCtx);\n\t\treturn;\n\t}\n\tif (subcommand === \"remove\") {\n\t\tvoid handleMcpRemoveCommand(renderCtx);\n\t\treturn;\n\t}\n\tif (subcommand === \"approve\") {\n\t\tvoid handleMcpProjectApprovalCommand(renderCtx, \"approve\");\n\t\treturn;\n\t}\n\tif (subcommand === \"deny\") {\n\t\tvoid handleMcpProjectApprovalCommand(renderCtx, \"deny\");\n\t\treturn;\n\t}\n\tif (subcommand === \"search\" || subcommand === \"registry\") {\n\t\tvoid handleMcpSearchCommand(renderCtx);\n\t\treturn;\n\t}\n\tif (subcommand === \"import\") {\n\t\tvoid handleMcpImportCommand(renderCtx);\n\t\treturn;\n\t}\n\tif (isMcpAuthAlias(subcommand)) {\n\t\tvoid handleMcpAuthCommand(renderCtx);\n\t\treturn;\n\t}\n\tif (subcommand === \"resources\") {\n\t\thandleMcpResourcesCommand(parts.slice(1), renderCtx);\n\t\treturn;\n\t}\n\tif (subcommand === \"prompts\") {\n\t\thandleMcpPromptsCommand(parts.slice(1), renderCtx);\n\t\treturn;\n\t}\n\n\trenderMcpStatus(renderCtx);\n}\n\nasync function handleMcpAddCommand(renderCtx: McpRenderContext): Promise<void> {\n\ttry {\n\t\tconst projectRoot = process.cwd();\n\t\tconst parsed = parseMcpServerMutationCommand(\n\t\t\trenderCtx.rawInput,\n\t\t\t\"add\",\n\t\t\t\"local\",\n\t\t);\n\t\tconst existingServer = loadMcpConfig(projectRoot).servers.find(\n\t\t\t(server) => server.name === parsed.server.name,\n\t\t);\n\t\tif (existingServer) {\n\t\t\tthrow new Error(\n\t\t\t\t`MCP server \"${parsed.server.name}\" already exists in merged config (scope: ${existingServer.scope ?? \"unknown\"}). Choose a different name.`,\n\t\t\t);\n\t\t}\n\t\tresolveKnownAuthPresetName(projectRoot, parsed.server.authPreset);\n\n\t\tif (parsed.server.url) {\n\t\t\tawait prefetchOfficialMcpRegistry();\n\t\t}\n\n\t\tconst { path } = addMcpServerToConfig({\n\t\t\tprojectRoot,\n\t\t\tscope: parsed.scope ?? \"local\",\n\t\t\tserver: parsed.server,\n\t\t});\n\t\tawait reloadMcpManager(projectRoot);\n\n\t\tconst lines = [\n\t\t\t`Added MCP server \"${parsed.server.name}\"`,\n\t\t\t` scope: ${parsed.scope ?? \"local\"}`,\n\t\t\t` path: ${path}`,\n\t\t];\n\t\tappendConfiguredServerSummary(lines, parsed.server);\n\n\t\trenderCtx.addContent(lines.join(\"\\n\"));\n\t\trenderCtx.requestRender();\n\t} catch (error) {\n\t\trenderCtx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nasync function handleMcpEditCommand(\n\trenderCtx: McpRenderContext,\n): Promise<void> {\n\ttry {\n\t\tconst projectRoot = process.cwd();\n\t\tconst parsed = parseMcpServerMutationCommand(renderCtx.rawInput, \"edit\");\n\t\tconst currentConfig = loadMcpConfig(projectRoot);\n\t\tconst existingServer = currentConfig.servers.find(\n\t\t\t(server) => server.name === parsed.server.name,\n\t\t);\n\t\tif (!existingServer) {\n\t\t\tthrow new Error(\n\t\t\t\t`MCP server \"${parsed.server.name}\" not found in merged config.`,\n\t\t\t);\n\t\t}\n\t\tresolveKnownAuthPresetName(projectRoot, parsed.server.authPreset);\n\n\t\tif (existingServer.url || parsed.server.url) {\n\t\t\tawait prefetchOfficialMcpRegistry();\n\t\t}\n\n\t\tconst { path, scope } = updateMcpServerInConfig({\n\t\t\tprojectRoot,\n\t\t\tscope: parsed.scope,\n\t\t\tname: parsed.server.name,\n\t\t\tserver: parsed.server,\n\t\t});\n\t\tconst reloadedConfig = await reloadMcpManager(projectRoot);\n\t\tconst activeServer = reloadedConfig.servers.find(\n\t\t\t(server) => server.name === parsed.server.name,\n\t\t);\n\n\t\tconst lines = [\n\t\t\t`Updated MCP server \"${parsed.server.name}\"`,\n\t\t\t` scope: ${scope}`,\n\t\t\t` path: ${path}`,\n\t\t];\n\t\tappendConfiguredServerSummary(lines, activeServer ?? parsed.server);\n\n\t\trenderCtx.addContent(lines.join(\"\\n\"));\n\t\trenderCtx.requestRender();\n\t} catch (error) {\n\t\trenderCtx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nasync function handleMcpRemoveCommand(\n\trenderCtx: McpRenderContext,\n): Promise<void> {\n\ttry {\n\t\tconst projectRoot = process.cwd();\n\t\tconst parsed = parseMcpRemoveCommand(renderCtx.rawInput);\n\t\tconst { path, scope } = removeMcpServerFromConfig({\n\t\t\tprojectRoot,\n\t\t\tscope: parsed.scope,\n\t\t\tname: parsed.name,\n\t\t});\n\t\tconst reloadedConfig = await reloadMcpManager(projectRoot);\n\t\tconst fallbackServer = reloadedConfig.servers.find(\n\t\t\t(server) => server.name === parsed.name,\n\t\t);\n\n\t\tconst lines = [\n\t\t\t`Removed MCP server \"${parsed.name}\"`,\n\t\t\t` scope: ${scope}`,\n\t\t\t` path: ${path}`,\n\t\t];\n\t\tif (fallbackServer) {\n\t\t\tlines.push(\n\t\t\t\t` fallback: now using ${formatMcpScopeLabel(fallbackServer.scope) ?? fallbackServer.scope ?? \"another\"} for \"${parsed.name}\"`,\n\t\t\t);\n\t\t} else {\n\t\t\tlines.push(\" status: removed from merged config\");\n\t\t}\n\n\t\trenderCtx.addContent(lines.join(\"\\n\"));\n\t\trenderCtx.requestRender();\n\t} catch (error) {\n\t\trenderCtx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nasync function handleMcpProjectApprovalCommand(\n\trenderCtx: McpRenderContext,\n\tcommand: \"approve\" | \"deny\",\n): Promise<void> {\n\ttry {\n\t\tconst projectRoot = process.cwd();\n\t\tconst parsed = parseMcpProjectApprovalCommand(renderCtx.rawInput, command);\n\t\tconst currentConfig = loadMcpConfig(projectRoot);\n\t\tconst existingServer = currentConfig.servers.find(\n\t\t\t(server) => server.name === parsed.name,\n\t\t);\n\t\tif (!existingServer) {\n\t\t\tthrow new Error(\n\t\t\t\t`MCP server \"${parsed.name}\" not found in merged config.`,\n\t\t\t);\n\t\t}\n\t\tif (existingServer.scope !== \"project\") {\n\t\t\tthrow new Error(\n\t\t\t\t`MCP server \"${parsed.name}\" is not loaded from project config.`,\n\t\t\t);\n\t\t}\n\n\t\tconst decision = command === \"approve\" ? \"approved\" : \"denied\";\n\t\tsetProjectMcpServerApprovalDecision({\n\t\t\tprojectRoot,\n\t\t\tserver: existingServer,\n\t\t\tauthPresets: currentConfig.authPresets,\n\t\t\tdecision,\n\t\t});\n\t\tawait reloadMcpManager(projectRoot);\n\n\t\trenderCtx.addContent(\n\t\t\tdecision === \"approved\"\n\t\t\t\t? `Approved project MCP server \"${parsed.name}\".`\n\t\t\t\t: `Denied project MCP server \"${parsed.name}\".`,\n\t\t);\n\t\trenderCtx.requestRender();\n\t} catch (error) {\n\t\trenderCtx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nasync function handleMcpSearchCommand(\n\trenderCtx: McpRenderContext,\n): Promise<void> {\n\ttry {\n\t\tawait ensureOfficialRegistryLoaded();\n\t\tconst query = parseMcpSearchQuery(renderCtx.rawInput);\n\t\tconst matches = searchOfficialMcpRegistry(query, { limit: 8 });\n\t\tif (matches.length === 0) {\n\t\t\trenderCtx.addContent(\n\t\t\t\t[\n\t\t\t\t\tquery\n\t\t\t\t\t\t? `Official MCP Registry matches for \"${query}\"`\n\t\t\t\t\t\t: \"Official MCP Registry\",\n\t\t\t\t\t\"\",\n\t\t\t\t\tquery\n\t\t\t\t\t\t? `No matches found for \"${query}\".`\n\t\t\t\t\t\t: \"No official MCP registry entries available.\",\n\t\t\t\t].join(\"\\n\"),\n\t\t\t);\n\t\t\trenderCtx.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\trenderOfficialRegistryResults(\n\t\t\trenderCtx,\n\t\t\tquery\n\t\t\t\t? `Official MCP Registry matches for \"${query}\"`\n\t\t\t\t: \"Official MCP Registry\",\n\t\t\tmatches,\n\t\t\t\"Use /mcp import <id> [name] to add one of these servers.\",\n\t\t);\n\t} catch (error) {\n\t\trenderCtx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nasync function handleMcpImportCommand(\n\trenderCtx: McpRenderContext,\n): Promise<void> {\n\ttry {\n\t\tconst projectRoot = process.cwd();\n\t\tconst parsed = parseMcpImportCommand(renderCtx.rawInput);\n\t\tawait ensureOfficialRegistryLoaded();\n\n\t\tconst { entry, matches } = resolveOfficialMcpRegistryEntry(parsed.query);\n\t\tif (!entry) {\n\t\t\tif (matches.length > 0) {\n\t\t\t\trenderOfficialRegistryResults(\n\t\t\t\t\trenderCtx,\n\t\t\t\t\t`Multiple official MCP registry matches for \"${parsed.query}\"`,\n\t\t\t\t\tmatches,\n\t\t\t\t\t\"Use a more specific id, or inspect candidates with /mcp search <query>.\",\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthrow new Error(\n\t\t\t\t`No official MCP registry match found for \"${parsed.query}\". Try /mcp search ${parsed.query}`,\n\t\t\t);\n\t\t}\n\n\t\tconst localName = parsed.localName ?? buildSuggestedMcpServerName(entry);\n\t\tconst existingServer = loadMcpConfig(projectRoot).servers.find(\n\t\t\t(server) => server.name === localName,\n\t\t);\n\t\tif (existingServer) {\n\t\t\tthrow new Error(\n\t\t\t\t`MCP server \"${localName}\" already exists in merged config (scope: ${existingServer.scope ?? \"unknown\"}). Choose a different name.`,\n\t\t\t);\n\t\t}\n\t\tresolveKnownAuthPresetName(projectRoot, parsed.authPreset);\n\n\t\tconst resolvedUrl = parsed.url ?? entry.url ?? entry.urlOptions?.[0]?.url;\n\t\tif (!resolvedUrl) {\n\t\t\tthrow new Error(\n\t\t\t\t`Official MCP registry entry \"${entry.displayName}\" requires --url because it does not publish a default remote URL.`,\n\t\t\t);\n\t\t}\n\t\tif (!looksLikeRemoteUrl(resolvedUrl)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Official MCP URL must be http(s). Received: ${resolvedUrl}`,\n\t\t\t);\n\t\t}\n\t\tif (parsed.url && !officialMcpRegistryEntryMatchesUrl(entry, parsed.url)) {\n\t\t\tthrow new Error(\n\t\t\t\t`URL does not match the official MCP registry entry \"${entry.displayName}\".`,\n\t\t\t);\n\t\t}\n\n\t\tconst transport =\n\t\t\tparsed.transport ??\n\t\t\tentry.transport ??\n\t\t\tinferRemoteMcpTransport(resolvedUrl);\n\t\tconst { path } = addMcpServerToConfig({\n\t\t\tprojectRoot,\n\t\t\tscope: parsed.scope,\n\t\t\tserver: {\n\t\t\t\tname: localName,\n\t\t\t\ttransport,\n\t\t\t\turl: resolvedUrl,\n\t\t\t\theaders: parsed.headers,\n\t\t\t\theadersHelper: parsed.headersHelper,\n\t\t\t\tauthPreset: parsed.authPreset,\n\t\t\t},\n\t\t});\n\t\tawait reloadMcpManager(projectRoot);\n\n\t\tconst lines = [\n\t\t\t`Imported official MCP server \"${localName}\"`,\n\t\t\t` scope: ${parsed.scope}`,\n\t\t\t` path: ${path}`,\n\t\t];\n\t\tconst registryId = formatOfficialRegistryIdentifier(entry);\n\t\tif (registryId) {\n\t\t\tlines.push(` registry id: ${registryId}`);\n\t\t}\n\t\tlines.push(` source: ${entry.displayName}`);\n\t\tappendConfiguredServerSummary(lines, {\n\t\t\ttransport,\n\t\t\turl: resolvedUrl,\n\t\t\theaders: parsed.headers,\n\t\t\theadersHelper: parsed.headersHelper,\n\t\t\tauthPreset: parsed.authPreset,\n\t\t});\n\n\t\trenderCtx.addContent(lines.join(\"\\n\"));\n\t\trenderCtx.requestRender();\n\t} catch (error) {\n\t\trenderCtx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nasync function handleMcpAuthCommand(\n\trenderCtx: McpRenderContext,\n): Promise<void> {\n\ttry {\n\t\tconst tokens = parseTokens(renderCtx.rawInput);\n\t\tconst subcommand = tokens[2]?.toLowerCase() ?? \"list\";\n\n\t\tif (subcommand === \"list\") {\n\t\t\tconst status = mcpManager.getStatus();\n\t\t\tconst lines: string[] = [\"MCP Auth Presets\", \"\"];\n\n\t\t\tif (status.authPresets.length === 0) {\n\t\t\t\tlines.push(\n\t\t\t\t\t\"No MCP auth presets configured.\",\n\t\t\t\t\t\"\",\n\t\t\t\t\t\"Examples:\",\n\t\t\t\t\t\" /mcp auth add linear-auth --header 'Authorization: Bearer ...'\",\n\t\t\t\t\t\" /mcp add linear https://mcp.linear.app/mcp --auth-preset linear-auth\",\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tfor (const preset of status.authPresets) {\n\t\t\t\t\tappendAuthPresetSummary(lines, preset);\n\t\t\t\t\tlines.push(\"\");\n\t\t\t\t}\n\t\t\t\tlines.push(\n\t\t\t\t\tchalk.dim(\n\t\t\t\t\t\t\"Usage: /mcp auth add|edit|remove <name> [--scope ...] [--header ...] [--headers-helper ...]\",\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\trenderCtx.addContent(lines.join(\"\\n\").trimEnd());\n\t\t\trenderCtx.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (subcommand === \"add\") {\n\t\t\tawait handleMcpAuthAddCommand(renderCtx);\n\t\t\treturn;\n\t\t}\n\t\tif (subcommand === \"edit\") {\n\t\t\tawait handleMcpAuthEditCommand(renderCtx);\n\t\t\treturn;\n\t\t}\n\t\tif (subcommand === \"remove\") {\n\t\t\tawait handleMcpAuthRemoveCommand(renderCtx);\n\t\t\treturn;\n\t\t}\n\n\t\trenderCtx.showError(MCP_AUTH_USAGE);\n\t} catch (error) {\n\t\trenderCtx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nasync function handleMcpAuthAddCommand(\n\trenderCtx: McpRenderContext,\n): Promise<void> {\n\ttry {\n\t\tconst projectRoot = process.cwd();\n\t\tconst parsed = parseMcpAuthPresetMutationCommand(\n\t\t\trenderCtx.rawInput,\n\t\t\t\"add\",\n\t\t\t\"local\",\n\t\t);\n\t\tconst existingPreset = loadMcpConfig(projectRoot).authPresets.find(\n\t\t\t(preset) => preset.name === parsed.preset.name,\n\t\t);\n\t\tif (existingPreset) {\n\t\t\tthrow new Error(\n\t\t\t\t`MCP auth preset \"${parsed.preset.name}\" already exists in merged config (scope: ${existingPreset.scope ?? \"unknown\"}). Choose a different name.`,\n\t\t\t);\n\t\t}\n\n\t\tconst { path } = addMcpAuthPresetToConfig({\n\t\t\tprojectRoot,\n\t\t\tscope: parsed.scope ?? \"local\",\n\t\t\tpreset: parsed.preset,\n\t\t});\n\t\tawait reloadMcpManager(projectRoot);\n\n\t\tconst lines = [\n\t\t\t`Added MCP auth preset \"${parsed.preset.name}\"`,\n\t\t\t` scope: ${parsed.scope ?? \"local\"}`,\n\t\t\t` path: ${path}`,\n\t\t];\n\t\tappendConfiguredAuthPresetDetails(lines, parsed.preset);\n\n\t\trenderCtx.addContent(lines.join(\"\\n\"));\n\t\trenderCtx.requestRender();\n\t} catch (error) {\n\t\trenderCtx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nasync function handleMcpAuthEditCommand(\n\trenderCtx: McpRenderContext,\n): Promise<void> {\n\ttry {\n\t\tconst projectRoot = process.cwd();\n\t\tconst parsed = parseMcpAuthPresetMutationCommand(\n\t\t\trenderCtx.rawInput,\n\t\t\t\"edit\",\n\t\t);\n\t\tconst currentConfig = loadMcpConfig(projectRoot);\n\t\tconst existingPreset = currentConfig.authPresets.find(\n\t\t\t(preset) => preset.name === parsed.preset.name,\n\t\t);\n\t\tif (!existingPreset) {\n\t\t\tthrow new Error(\n\t\t\t\t`MCP auth preset \"${parsed.preset.name}\" not found in merged config.`,\n\t\t\t);\n\t\t}\n\n\t\tconst { path, scope } = updateMcpAuthPresetInConfig({\n\t\t\tprojectRoot,\n\t\t\tscope: parsed.scope,\n\t\t\tname: parsed.preset.name,\n\t\t\tpreset: parsed.preset,\n\t\t});\n\t\tconst reloadedConfig = await reloadMcpManager(projectRoot);\n\t\tconst activePreset = reloadedConfig.authPresets.find(\n\t\t\t(preset) => preset.name === parsed.preset.name,\n\t\t);\n\n\t\tconst lines = [\n\t\t\t`Updated MCP auth preset \"${parsed.preset.name}\"`,\n\t\t\t` scope: ${scope}`,\n\t\t\t` path: ${path}`,\n\t\t];\n\t\tappendConfiguredAuthPresetDetails(lines, activePreset ?? parsed.preset);\n\n\t\trenderCtx.addContent(lines.join(\"\\n\"));\n\t\trenderCtx.requestRender();\n\t} catch (error) {\n\t\trenderCtx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nasync function handleMcpAuthRemoveCommand(\n\trenderCtx: McpRenderContext,\n): Promise<void> {\n\ttry {\n\t\tconst projectRoot = process.cwd();\n\t\tconst parsed = parseMcpAuthPresetRemoveCommand(renderCtx.rawInput);\n\t\tconst { path, scope } = removeMcpAuthPresetFromConfig({\n\t\t\tprojectRoot,\n\t\t\tscope: parsed.scope,\n\t\t\tname: parsed.name,\n\t\t});\n\t\tconst reloadedConfig = await reloadMcpManager(projectRoot);\n\t\tconst fallbackPreset = reloadedConfig.authPresets.find(\n\t\t\t(preset) => preset.name === parsed.name,\n\t\t);\n\n\t\tconst lines = [\n\t\t\t`Removed MCP auth preset \"${parsed.name}\"`,\n\t\t\t` scope: ${scope}`,\n\t\t\t` path: ${path}`,\n\t\t];\n\t\tif (fallbackPreset) {\n\t\t\tlines.push(\n\t\t\t\t` fallback: now using ${formatMcpScopeLabel(fallbackPreset.scope) ?? fallbackPreset.scope ?? \"another\"} for \"${parsed.name}\"`,\n\t\t\t);\n\t\t} else {\n\t\t\tlines.push(\" status: removed from merged config\");\n\t\t}\n\n\t\trenderCtx.addContent(lines.join(\"\\n\"));\n\t\trenderCtx.requestRender();\n\t} catch (error) {\n\t\trenderCtx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nexport function handleMcpResourcesCommand(\n\targs: string[],\n\trenderCtx: McpRenderContext,\n): void {\n\tconst status = mcpManager.getStatus();\n\tconst lines: string[] = [\"MCP Resources\", \"\"];\n\n\tif (args.length >= 2) {\n\t\tconst serverName = args[0]!;\n\t\tconst uri = args.slice(1).join(\" \");\n\t\tconst server = status.servers.find((entry) => entry.name === serverName);\n\t\tif (!server?.connected) {\n\t\t\tlines.push(`Server '${serverName}' not connected`);\n\t\t} else {\n\t\t\tmcpManager\n\t\t\t\t.readResource(serverName, uri)\n\t\t\t\t.then((result) => {\n\t\t\t\t\tconst resourceLines = [`Resource: ${uri}`, \"\"];\n\t\t\t\t\tfor (const content of result.contents) {\n\t\t\t\t\t\tif (content.text) {\n\t\t\t\t\t\t\tresourceLines.push(content.text);\n\t\t\t\t\t\t} else if (content.blob) {\n\t\t\t\t\t\t\tresourceLines.push(\n\t\t\t\t\t\t\t\t`[Binary data: ${content.mimeType || \"unknown type\"}]`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\trenderCtx.addContent(resourceLines.join(\"\\n\"));\n\t\t\t\t\trenderCtx.requestRender();\n\t\t\t\t})\n\t\t\t\t.catch((error: unknown) => {\n\t\t\t\t\tconst message =\n\t\t\t\t\t\terror instanceof Error ? error.message : String(error);\n\t\t\t\t\trenderCtx.showError(`Failed to read resource: ${message}`);\n\t\t\t\t});\n\t\t\treturn;\n\t\t}\n\t} else {\n\t\tlet hasResources = false;\n\t\tfor (const server of status.servers) {\n\t\t\tif (!server.connected || server.resources.length === 0) continue;\n\t\t\thasResources = true;\n\t\t\tlines.push(`${chalk.bold(server.name)}:`);\n\t\t\tfor (const uri of server.resources) {\n\t\t\t\tlines.push(` ${uri}`);\n\t\t\t}\n\t\t\tlines.push(\"\");\n\t\t}\n\t\tif (!hasResources) {\n\t\t\tlines.push(\"No resources available from connected servers.\");\n\t\t}\n\t\tlines.push(\"\");\n\t\tlines.push(chalk.dim(\"Usage: /mcp resources <server> <uri>\"));\n\t}\n\n\trenderCtx.addContent(lines.join(\"\\n\"));\n\trenderCtx.requestRender();\n}\n\nexport function handleMcpPromptsCommand(\n\targs: string[],\n\trenderCtx: McpRenderContext,\n): void {\n\tconst status = mcpManager.getStatus();\n\tconst lines: string[] = [\"MCP Prompts\", \"\"];\n\n\tif (args.length >= 2) {\n\t\tlet promptInvocation: ReturnType<typeof parseMcpPromptInvocationTokens>;\n\t\ttry {\n\t\t\tpromptInvocation = parseMcpPromptInvocationTokens(renderCtx.rawInput);\n\t\t} catch (error) {\n\t\t\trenderCtx.showError(\n\t\t\t\terror instanceof Error ? error.message : String(error),\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tconst serverName = promptInvocation.serverName ?? args[0]!;\n\t\tconst promptName = promptInvocation.promptName ?? args[1]!;\n\t\tconst server = status.servers.find((entry) => entry.name === serverName);\n\t\tif (!server) {\n\t\t\tlines.push(`Server '${serverName}' not found`);\n\t\t} else if (!server.connected) {\n\t\t\tlines.push(`Server '${serverName}' not connected`);\n\t\t} else if (!server.prompts.includes(promptName)) {\n\t\t\tlines.push(`Prompt '${promptName}' not found on server '${serverName}'`);\n\t\t} else {\n\t\t\tmcpManager\n\t\t\t\t.getPrompt(serverName, promptName, promptInvocation.args)\n\t\t\t\t.then((result) => {\n\t\t\t\t\tconst promptLines = [`Prompt: ${promptName}`, \"\"];\n\t\t\t\t\tif (result.description) {\n\t\t\t\t\t\tpromptLines.push(`Description: ${result.description}`, \"\");\n\t\t\t\t\t}\n\t\t\t\t\tfor (const message of result.messages) {\n\t\t\t\t\t\tpromptLines.push(`[${message.role}]`);\n\t\t\t\t\t\tpromptLines.push(message.content);\n\t\t\t\t\t\tpromptLines.push(\"\");\n\t\t\t\t\t}\n\t\t\t\t\trenderCtx.addContent(promptLines.join(\"\\n\"));\n\t\t\t\t\trenderCtx.requestRender();\n\t\t\t\t})\n\t\t\t\t.catch((error: unknown) => {\n\t\t\t\t\tconst message =\n\t\t\t\t\t\terror instanceof Error ? error.message : String(error);\n\t\t\t\t\trenderCtx.showError(`Failed to get prompt: ${message}`);\n\t\t\t\t});\n\t\t\treturn;\n\t\t}\n\t} else {\n\t\trenderCtx.addContent(formatMcpPromptList(status.servers, args[0]));\n\t\trenderCtx.requestRender();\n\t\treturn;\n\t}\n\n\trenderCtx.addContent(lines.join(\"\\n\"));\n\trenderCtx.requestRender();\n}\n"]}
|
|
1
|
+
{"version":3,"file":"mcp-handlers.js","sourceRoot":"","sources":["../../../src/cli-tui/commands/mcp-handlers.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseKeyValueTokens } from \"@evalops/contracts\";\nimport chalk from \"chalk\";\nimport {\n\ttype McpAuthPresetStatus,\n\ttype McpOfficialRegistryEntry,\n\ttype McpServerConfig,\n\ttype McpServerStatus,\n\ttype WritableMcpScope,\n\taddMcpAuthPresetToConfig,\n\taddMcpServerToConfig,\n\tbuildSuggestedMcpServerName,\n\tgetOfficialMcpRegistryEntries,\n\tgetOfficialMcpRegistryMatch,\n\tgetOfficialMcpRegistryUrls,\n\tinferRemoteMcpTransport,\n\tloadMcpConfig,\n\tmcpManager,\n\tofficialMcpRegistryEntryMatchesUrl,\n\tprefetchOfficialMcpRegistry,\n\tremoveMcpAuthPresetFromConfig,\n\tremoveMcpServerFromConfig,\n\tresolveOfficialMcpRegistryEntry,\n\tsearchOfficialMcpRegistry,\n\tsetProjectMcpServerApprovalDecision,\n\tupdateMcpAuthPresetInConfig,\n\tupdateMcpServerInConfig,\n} from \"../../mcp/index.js\";\nimport { parseCommandArguments } from \"../../tools/shell-utils.js\";\nimport { promptSafeText } from \"../../utils/prompt-safe-text.js\";\n\ntype RemoteMcpTransport = \"http\" | \"sse\";\n\ntype ConfigurableMcpServer = Pick<\n\tMcpServerConfig,\n\t| \"transport\"\n\t| \"url\"\n\t| \"command\"\n\t| \"args\"\n\t| \"env\"\n\t| \"cwd\"\n\t| \"headers\"\n\t| \"headersHelper\"\n\t| \"authPreset\"\n>;\n\nexport interface McpRenderContext {\n\trawInput: string;\n\taddContent(content: string): void;\n\tshowError(message: string): void;\n\trequestRender(): void;\n}\n\ninterface ParsedMcpServerMutationCommand {\n\tscope?: WritableMcpScope;\n\tserver: {\n\t\tname: string;\n\t\ttransport: \"stdio\" | \"http\" | \"sse\";\n\t\tcommand?: string;\n\t\targs?: string[];\n\t\tenv?: Record<string, string>;\n\t\tcwd?: string;\n\t\turl?: string;\n\t\theaders?: Record<string, string>;\n\t\theadersHelper?: string;\n\t\tauthPreset?: string;\n\t};\n}\n\ninterface ParsedMcpAuthPresetMutationCommand {\n\tscope?: WritableMcpScope;\n\tpreset: {\n\t\tname: string;\n\t\theaders?: Record<string, string>;\n\t\theadersHelper?: string;\n\t};\n}\n\ninterface ParsedMcpRemoveCommand {\n\tname: string;\n\tscope?: WritableMcpScope;\n}\n\ninterface ParsedMcpProjectApprovalCommand {\n\tname: string;\n}\n\ninterface ParsedMcpImportCommand {\n\tquery: string;\n\tlocalName?: string;\n\tscope: WritableMcpScope;\n\turl?: string;\n\ttransport?: RemoteMcpTransport;\n\theaders?: Record<string, string>;\n\theadersHelper?: string;\n\tauthPreset?: string;\n}\n\nconst MCP_ADD_USAGE =\n\t\"/mcp add <name> <command-or-url> [args...] [--scope local|project|user] [--transport stdio|http|sse] [--cwd <path>] [--env KEY=value] [--header 'Name: value'] [--headers-helper <command>] [--auth-preset <name>]\";\nconst MCP_EDIT_USAGE =\n\t\"/mcp edit <name> <command-or-url> [args...] [--scope local|project|user] [--transport stdio|http|sse] [--cwd <path>] [--env KEY=value] [--header 'Name: value'] [--headers-helper <command>] [--auth-preset <name>]\";\nconst MCP_REMOVE_USAGE = \"/mcp remove <name> [--scope local|project|user]\";\nconst MCP_APPROVE_USAGE = \"/mcp approve <name>\";\nconst MCP_DENY_USAGE = \"/mcp deny <name>\";\nconst MCP_SEARCH_USAGE = \"/mcp search [query]\";\nconst MCP_IMPORT_USAGE =\n\t\"/mcp import <official-id> [name] [--scope local|project|user] [--url <https-url>] [--transport http|sse] [--header 'Name: value'] [--headers-helper <command>] [--auth-preset <name>]\";\nconst MCP_AUTH_USAGE = \"/mcp auth [list|add|edit|remove]\";\nconst MCP_AUTH_ADD_USAGE =\n\t\"/mcp auth add <name> [--scope local|project|user] [--header 'Name: value'] [--headers-helper <command>]\";\nconst MCP_AUTH_EDIT_USAGE =\n\t\"/mcp auth edit <name> [--scope local|project|user] [--header 'Name: value'] [--headers-helper <command>]\";\nconst MCP_AUTH_REMOVE_USAGE =\n\t\"/mcp auth remove <name> [--scope local|project|user]\";\n\nfunction formatMcpScopeLabel(scope: McpServerStatus[\"scope\"]): string | null {\n\tswitch (scope) {\n\t\tcase \"enterprise\":\n\t\t\treturn \"Enterprise config\";\n\t\tcase \"plugin\":\n\t\t\treturn \"Plugin config\";\n\t\tcase \"project\":\n\t\t\treturn \"Project config\";\n\t\tcase \"local\":\n\t\t\treturn \"Local config\";\n\t\tcase \"user\":\n\t\t\treturn \"User config\";\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\nfunction formatMcpTransportLabel(\n\ttransport:\n\t\t| McpServerStatus[\"transport\"]\n\t\t| McpOfficialRegistryEntry[\"transport\"],\n): string {\n\tswitch (transport) {\n\t\tcase \"http\":\n\t\t\treturn \"HTTP\";\n\t\tcase \"sse\":\n\t\t\treturn \"SSE\";\n\t\tcase \"stdio\":\n\t\t\treturn \"stdio\";\n\t\tdefault:\n\t\t\treturn \"unknown\";\n\t}\n}\n\nfunction formatMcpErrorLabel(error: string | undefined): string | null {\n\tif (typeof error !== \"string\") {\n\t\treturn null;\n\t}\n\n\treturn error.trim() || \"Connection failed.\";\n}\n\nfunction formatMcpTrustLabel(server: McpServerStatus): string | null {\n\tif (server.transport !== \"http\" && server.transport !== \"sse\") {\n\t\treturn null;\n\t}\n\n\tswitch (server.remoteTrust) {\n\t\tcase \"official\":\n\t\t\treturn server.officialRegistry?.displayName\n\t\t\t\t? `Official registry (${server.officialRegistry.displayName})`\n\t\t\t\t: \"Official registry\";\n\t\tcase \"custom\":\n\t\t\treturn \"Custom remote\";\n\t\tdefault:\n\t\t\treturn \"Unverified remote\";\n\t}\n}\n\nfunction formatMcpProjectApprovalLabel(\n\tprojectApproval: McpServerStatus[\"projectApproval\"],\n): string | null {\n\tswitch (projectApproval) {\n\t\tcase \"pending\":\n\t\t\treturn \"Pending local approval\";\n\t\tcase \"approved\":\n\t\t\treturn \"Approved locally\";\n\t\tcase \"denied\":\n\t\t\treturn \"Denied locally\";\n\t\tdefault:\n\t\t\treturn null;\n\t}\n}\n\nfunction getMcpConnectionState(server: McpServerStatus): {\n\ticon: string;\n\tlabel: string;\n} {\n\tswitch (server.projectApproval) {\n\t\tcase \"pending\":\n\t\t\treturn { icon: chalk.yellow(\"◐\"), label: \"Pending approval\" };\n\t\tcase \"denied\":\n\t\t\treturn { icon: chalk.red(\"■\"), label: \"Denied\" };\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\ticon: server.connected ? chalk.green(\"●\") : chalk.red(\"○\"),\n\t\t\t\tlabel: server.connected ? \"Connected\" : \"Not connected\",\n\t\t\t};\n\t}\n}\n\nfunction isWritableScope(value: string): value is WritableMcpScope {\n\treturn value === \"local\" || value === \"project\" || value === \"user\";\n}\n\nfunction isMcpTransport(value: string): value is \"stdio\" | \"http\" | \"sse\" {\n\treturn value === \"stdio\" || value === \"http\" || value === \"sse\";\n}\n\nfunction isRemoteMcpTransport(value: string): value is RemoteMcpTransport {\n\treturn value === \"http\" || value === \"sse\";\n}\n\nfunction looksLikeRemoteUrl(value: string): boolean {\n\ttry {\n\t\tconst parsed = new URL(value);\n\t\treturn parsed.protocol === \"http:\" || parsed.protocol === \"https:\";\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction parseTokens(rawInput: string): string[] {\n\ttry {\n\t\treturn parseCommandArguments(rawInput);\n\t} catch (error) {\n\t\tthrow new Error(\n\t\t\terror instanceof Error\n\t\t\t\t? `Invalid /mcp command: ${error.message}`\n\t\t\t\t: String(error),\n\t\t);\n\t}\n}\n\nfunction parseMcpPromptInvocationTokens(rawInput: string): {\n\tserverName?: string;\n\tpromptName?: string;\n\targs?: Record<string, string>;\n} {\n\tconst tokens = parseTokens(rawInput);\n\tif (tokens[0] !== \"/mcp\" || tokens[1] !== \"prompts\") {\n\t\treturn {};\n\t}\n\n\tconst serverName = tokens[2];\n\tconst promptName = tokens[3];\n\tif (!serverName || !promptName) {\n\t\treturn { serverName, promptName };\n\t}\n\n\tconst parsedArgs = parseKeyValueTokens(\n\t\ttokens.slice(4),\n\t\t\"Invalid MCP prompt argument. Use KEY=value after the prompt name.\",\n\t);\n\tif (parsedArgs.error) {\n\t\tthrow new Error(parsedArgs.error);\n\t}\n\n\treturn {\n\t\tserverName,\n\t\tpromptName,\n\t\targs: parsedArgs.values,\n\t};\n}\n\nfunction isMcpAuthAlias(value: string | undefined): boolean {\n\treturn value === \"auth\" || value === \"preset\" || value === \"presets\";\n}\n\nfunction parseMcpServerMutationCommand(\n\trawInput: string,\n\tcommand: \"add\" | \"edit\",\n\tdefaultScope?: WritableMcpScope,\n): ParsedMcpServerMutationCommand {\n\tconst usage = command === \"add\" ? MCP_ADD_USAGE : MCP_EDIT_USAGE;\n\tconst tokens = parseTokens(rawInput);\n\n\tif (tokens[0] !== \"/mcp\" || tokens[1] !== command) {\n\t\tthrow new Error(usage);\n\t}\n\n\tconst name = tokens[2];\n\tif (!name) {\n\t\tthrow new Error(usage);\n\t}\n\n\tlet scope = defaultScope;\n\tlet transport: \"stdio\" | \"http\" | \"sse\" | undefined;\n\tlet cwd: string | undefined;\n\tlet headersHelper: string | undefined;\n\tlet authPreset: string | undefined;\n\tconst headers: Record<string, string> = {};\n\tconst env: Record<string, string> = {};\n\tconst positionals: string[] = [];\n\tlet separatorIndex = -1;\n\n\tfor (let index = 3; index < tokens.length; index += 1) {\n\t\tconst token = tokens[index]!;\n\t\tif (token === \"--\") {\n\t\t\tseparatorIndex = index;\n\t\t\tbreak;\n\t\t}\n\t\tif (token === \"--scope\" || token === \"-s\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value || !isWritableScope(value)) {\n\t\t\t\tthrow new Error(\"Invalid MCP scope. Use local, project, or user.\");\n\t\t\t}\n\t\t\tscope = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--transport\" || token === \"-t\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value || !isMcpTransport(value)) {\n\t\t\t\tthrow new Error(\"Invalid MCP transport. Use stdio, http, or sse.\");\n\t\t\t}\n\t\t\ttransport = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--cwd\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value) {\n\t\t\t\tthrow new Error(\"Missing value for --cwd.\");\n\t\t\t}\n\t\t\tcwd = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--headers-helper\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value) {\n\t\t\t\tthrow new Error(\"Missing value for --headers-helper.\");\n\t\t\t}\n\t\t\theadersHelper = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--auth-preset\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value) {\n\t\t\t\tthrow new Error(\"Missing value for --auth-preset.\");\n\t\t\t}\n\t\t\tauthPreset = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--header\" || token === \"-H\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value) {\n\t\t\t\tthrow new Error(\"Missing value for --header.\");\n\t\t\t}\n\t\t\tconst [headerName, ...rest] = value.split(\":\");\n\t\t\tconst headerValue = rest.join(\":\").trim();\n\t\t\tif (!headerName?.trim() || headerValue.length === 0) {\n\t\t\t\tthrow new Error(`Invalid MCP header: ${value}`);\n\t\t\t}\n\t\t\theaders[headerName.trim()] = headerValue;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--env\" || token === \"-e\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value) {\n\t\t\t\tthrow new Error(\"Missing value for --env.\");\n\t\t\t}\n\t\t\tconst separator = value.indexOf(\"=\");\n\t\t\tif (separator <= 0) {\n\t\t\t\tthrow new Error(`Invalid MCP env var: ${value}`);\n\t\t\t}\n\t\t\tconst envName = value.slice(0, separator).trim();\n\t\t\tconst envValue = value.slice(separator + 1);\n\t\t\tif (!envName) {\n\t\t\t\tthrow new Error(`Invalid MCP env var: ${value}`);\n\t\t\t}\n\t\t\tenv[envName] = envValue;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tpositionals.push(token);\n\t}\n\n\tconst commandTokens =\n\t\tseparatorIndex >= 0 ? tokens.slice(separatorIndex + 1) : positionals;\n\tif (commandTokens.length === 0) {\n\t\tthrow new Error(usage);\n\t}\n\n\tconst target = commandTokens[0]!;\n\tconst resolvedTransport =\n\t\ttransport ??\n\t\t(looksLikeRemoteUrl(target) ? inferRemoteMcpTransport(target) : \"stdio\");\n\n\tif (resolvedTransport === \"http\" || resolvedTransport === \"sse\") {\n\t\tif (!looksLikeRemoteUrl(target)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Remote MCP servers require an http(s) URL target. Received: ${target}`,\n\t\t\t);\n\t\t}\n\t\tif (commandTokens.length > 1) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Remote MCP servers accept a single URL target. Move command arguments after -- only for stdio servers.\",\n\t\t\t);\n\t\t}\n\t\tif (cwd) {\n\t\t\tthrow new Error(\"--cwd is only supported for stdio MCP servers.\");\n\t\t}\n\t\tif (Object.keys(env).length > 0) {\n\t\t\tthrow new Error(\"--env is only supported for stdio MCP servers.\");\n\t\t}\n\t\treturn {\n\t\t\tscope,\n\t\t\tserver: {\n\t\t\t\tname,\n\t\t\t\ttransport: resolvedTransport,\n\t\t\t\turl: target,\n\t\t\t\theaders: Object.keys(headers).length > 0 ? headers : undefined,\n\t\t\t\theadersHelper,\n\t\t\t\tauthPreset,\n\t\t\t},\n\t\t};\n\t}\n\n\tif (Object.keys(headers).length > 0) {\n\t\tthrow new Error(\"--header is only supported for remote MCP servers.\");\n\t}\n\tif (headersHelper) {\n\t\tthrow new Error(\n\t\t\t\"--headers-helper is only supported for remote MCP servers.\",\n\t\t);\n\t}\n\tif (authPreset) {\n\t\tthrow new Error(\"--auth-preset is only supported for remote MCP servers.\");\n\t}\n\n\treturn {\n\t\tscope,\n\t\tserver: {\n\t\t\tname,\n\t\t\ttransport: \"stdio\",\n\t\t\tcommand: commandTokens[0],\n\t\t\targs: commandTokens.slice(1),\n\t\t\tenv: Object.keys(env).length > 0 ? env : undefined,\n\t\t\tcwd,\n\t\t},\n\t};\n}\n\nfunction parseMcpRemoveCommand(rawInput: string): ParsedMcpRemoveCommand {\n\tconst tokens = parseTokens(rawInput);\n\tif (tokens[0] !== \"/mcp\" || tokens[1] !== \"remove\") {\n\t\tthrow new Error(MCP_REMOVE_USAGE);\n\t}\n\n\tconst name = tokens[2];\n\tif (!name) {\n\t\tthrow new Error(MCP_REMOVE_USAGE);\n\t}\n\n\tlet scope: WritableMcpScope | undefined;\n\tfor (let index = 3; index < tokens.length; index += 1) {\n\t\tconst token = tokens[index]!;\n\t\tif (token === \"--scope\" || token === \"-s\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value || !isWritableScope(value)) {\n\t\t\t\tthrow new Error(\"Invalid MCP scope. Use local, project, or user.\");\n\t\t\t}\n\t\t\tscope = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new Error(MCP_REMOVE_USAGE);\n\t}\n\n\treturn { name, scope };\n}\n\nfunction parseMcpProjectApprovalCommand(\n\trawInput: string,\n\tcommand: \"approve\" | \"deny\",\n): ParsedMcpProjectApprovalCommand {\n\tconst tokens = parseTokens(rawInput);\n\tconst usage = command === \"approve\" ? MCP_APPROVE_USAGE : MCP_DENY_USAGE;\n\tif (tokens[0] !== \"/mcp\" || tokens[1] !== command) {\n\t\tthrow new Error(usage);\n\t}\n\n\tconst name = tokens[2];\n\tif (!name || tokens.length !== 3) {\n\t\tthrow new Error(usage);\n\t}\n\n\treturn { name };\n}\n\nfunction parseMcpSearchQuery(rawInput: string): string {\n\tconst tokens = parseTokens(rawInput);\n\tif (\n\t\ttokens[0] !== \"/mcp\" ||\n\t\t(tokens[1] !== \"search\" && tokens[1] !== \"registry\")\n\t) {\n\t\tthrow new Error(MCP_SEARCH_USAGE);\n\t}\n\treturn tokens.slice(2).join(\" \").trim();\n}\n\nfunction parseMcpImportCommand(rawInput: string): ParsedMcpImportCommand {\n\tconst tokens = parseTokens(rawInput);\n\tif (tokens[0] !== \"/mcp\" || tokens[1] !== \"import\") {\n\t\tthrow new Error(MCP_IMPORT_USAGE);\n\t}\n\n\tconst query = tokens[2];\n\tif (!query) {\n\t\tthrow new Error(MCP_IMPORT_USAGE);\n\t}\n\n\tlet localName: string | undefined;\n\tlet scope: WritableMcpScope = \"local\";\n\tlet url: string | undefined;\n\tlet transport: RemoteMcpTransport | undefined;\n\tlet headersHelper: string | undefined;\n\tlet authPreset: string | undefined;\n\tconst headers: Record<string, string> = {};\n\n\tfor (let index = 3; index < tokens.length; index += 1) {\n\t\tconst token = tokens[index]!;\n\t\tif (token === \"--scope\" || token === \"-s\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value || !isWritableScope(value)) {\n\t\t\t\tthrow new Error(\"Invalid MCP scope. Use local, project, or user.\");\n\t\t\t}\n\t\t\tscope = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--url\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value || !looksLikeRemoteUrl(value)) {\n\t\t\t\tthrow new Error(\"Provide a valid http(s) URL for --url.\");\n\t\t\t}\n\t\t\turl = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--transport\" || token === \"-t\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value || !isRemoteMcpTransport(value)) {\n\t\t\t\tthrow new Error(\"Invalid MCP transport. Use http or sse.\");\n\t\t\t}\n\t\t\ttransport = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--headers-helper\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value) {\n\t\t\t\tthrow new Error(\"Missing value for --headers-helper.\");\n\t\t\t}\n\t\t\theadersHelper = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--auth-preset\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value) {\n\t\t\t\tthrow new Error(\"Missing value for --auth-preset.\");\n\t\t\t}\n\t\t\tauthPreset = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--header\" || token === \"-H\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value) {\n\t\t\t\tthrow new Error(\"Missing value for --header.\");\n\t\t\t}\n\t\t\tconst [headerName, ...rest] = value.split(\":\");\n\t\t\tconst headerValue = rest.join(\":\").trim();\n\t\t\tif (!headerName?.trim() || headerValue.length === 0) {\n\t\t\t\tthrow new Error(`Invalid MCP header: ${value}`);\n\t\t\t}\n\t\t\theaders[headerName.trim()] = headerValue;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token.startsWith(\"-\")) {\n\t\t\tthrow new Error(MCP_IMPORT_USAGE);\n\t\t}\n\t\tif (!localName) {\n\t\t\tlocalName = token;\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new Error(MCP_IMPORT_USAGE);\n\t}\n\n\treturn {\n\t\tquery,\n\t\tlocalName,\n\t\tscope,\n\t\turl,\n\t\ttransport,\n\t\theaders: Object.keys(headers).length > 0 ? headers : undefined,\n\t\theadersHelper,\n\t\tauthPreset,\n\t};\n}\n\nfunction parseMcpAuthPresetMutationCommand(\n\trawInput: string,\n\tcommand: \"add\" | \"edit\",\n\tdefaultScope?: WritableMcpScope,\n): ParsedMcpAuthPresetMutationCommand {\n\tconst usage = command === \"add\" ? MCP_AUTH_ADD_USAGE : MCP_AUTH_EDIT_USAGE;\n\tconst tokens = parseTokens(rawInput);\n\n\tif (\n\t\ttokens[0] !== \"/mcp\" ||\n\t\t!isMcpAuthAlias(tokens[1]) ||\n\t\ttokens[2] !== command\n\t) {\n\t\tthrow new Error(usage);\n\t}\n\n\tconst name = tokens[3];\n\tif (!name) {\n\t\tthrow new Error(usage);\n\t}\n\n\tlet scope = defaultScope;\n\tlet headersHelper: string | undefined;\n\tconst headers: Record<string, string> = {};\n\n\tfor (let index = 4; index < tokens.length; index += 1) {\n\t\tconst token = tokens[index]!;\n\t\tif (token === \"--scope\" || token === \"-s\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value || !isWritableScope(value)) {\n\t\t\t\tthrow new Error(\"Invalid MCP scope. Use local, project, or user.\");\n\t\t\t}\n\t\t\tscope = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--headers-helper\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value) {\n\t\t\t\tthrow new Error(\"Missing value for --headers-helper.\");\n\t\t\t}\n\t\t\theadersHelper = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (token === \"--header\" || token === \"-H\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value) {\n\t\t\t\tthrow new Error(\"Missing value for --header.\");\n\t\t\t}\n\t\t\tconst [headerName, ...rest] = value.split(\":\");\n\t\t\tconst headerValue = rest.join(\":\").trim();\n\t\t\tif (!headerName?.trim() || headerValue.length === 0) {\n\t\t\t\tthrow new Error(`Invalid MCP header: ${value}`);\n\t\t\t}\n\t\t\theaders[headerName.trim()] = headerValue;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new Error(usage);\n\t}\n\n\tif (Object.keys(headers).length === 0 && !headersHelper) {\n\t\tthrow new Error(\n\t\t\t\"MCP auth presets require at least one --header or --headers-helper value.\",\n\t\t);\n\t}\n\n\treturn {\n\t\tscope,\n\t\tpreset: {\n\t\t\tname,\n\t\t\theaders: Object.keys(headers).length > 0 ? headers : undefined,\n\t\t\theadersHelper,\n\t\t},\n\t};\n}\n\nfunction parseMcpAuthPresetRemoveCommand(\n\trawInput: string,\n): ParsedMcpRemoveCommand {\n\tconst tokens = parseTokens(rawInput);\n\tif (\n\t\ttokens[0] !== \"/mcp\" ||\n\t\t!isMcpAuthAlias(tokens[1]) ||\n\t\ttokens[2] !== \"remove\"\n\t) {\n\t\tthrow new Error(MCP_AUTH_REMOVE_USAGE);\n\t}\n\n\tconst name = tokens[3];\n\tif (!name) {\n\t\tthrow new Error(MCP_AUTH_REMOVE_USAGE);\n\t}\n\n\tlet scope: WritableMcpScope | undefined;\n\tfor (let index = 4; index < tokens.length; index += 1) {\n\t\tconst token = tokens[index]!;\n\t\tif (token === \"--scope\" || token === \"-s\") {\n\t\t\tconst value = tokens[index + 1];\n\t\t\tif (!value || !isWritableScope(value)) {\n\t\t\t\tthrow new Error(\"Invalid MCP scope. Use local, project, or user.\");\n\t\t\t}\n\t\t\tscope = value;\n\t\t\tindex += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tthrow new Error(MCP_AUTH_REMOVE_USAGE);\n\t}\n\n\treturn { name, scope };\n}\n\nfunction resolveKnownAuthPresetName(\n\tprojectRoot: string,\n\tauthPreset: string | undefined,\n): void {\n\tif (!authPreset) {\n\t\treturn;\n\t}\n\tconst existingPreset = (loadMcpConfig(projectRoot).authPresets ?? []).find(\n\t\t(preset) => preset.name === authPreset,\n\t);\n\tif (!existingPreset) {\n\t\tthrow new Error(\n\t\t\t`MCP auth preset \"${authPreset}\" not found in merged config.`,\n\t\t);\n\t}\n}\n\nasync function reloadMcpManager(projectRoot: string) {\n\tconst nextConfig = loadMcpConfig(projectRoot, { includeEnvLimits: true });\n\tawait mcpManager.configure(nextConfig);\n\treturn nextConfig;\n}\n\nasync function ensureOfficialRegistryLoaded(): Promise<\n\tMcpOfficialRegistryEntry[]\n> {\n\tawait prefetchOfficialMcpRegistry();\n\tconst entries = getOfficialMcpRegistryEntries();\n\tif (entries.length === 0) {\n\t\tthrow new Error(\"Official MCP registry metadata is unavailable right now.\");\n\t}\n\treturn entries;\n}\n\nfunction formatOfficialRegistryIdentifier(\n\tentry: Pick<McpOfficialRegistryEntry, \"slug\" | \"serverName\">,\n): string | undefined {\n\treturn entry.slug ?? entry.serverName;\n}\n\nfunction appendConfiguredServerSummary(\n\tlines: string[],\n\tserver: ConfigurableMcpServer,\n): void {\n\tlines.push(` transport: ${server.transport}`);\n\n\tif (server.url) {\n\t\tlines.push(` remote: ${server.url}`);\n\t\tconst registryMatch = getOfficialMcpRegistryMatch(server.url);\n\t\tif (registryMatch.trust === \"official\") {\n\t\t\tlines.push(\n\t\t\t\t` trust: official${registryMatch.info?.displayName ? ` (${registryMatch.info.displayName})` : \"\"}`,\n\t\t\t);\n\t\t\tif (registryMatch.info?.documentationUrl) {\n\t\t\t\tlines.push(` docs: ${registryMatch.info.documentationUrl}`);\n\t\t\t}\n\t\t} else if (registryMatch.trust === \"custom\") {\n\t\t\tlines.push(\" trust: custom\");\n\t\t}\n\t\tif (server.headers && Object.keys(server.headers).length > 0) {\n\t\t\tlines.push(` headers: ${Object.keys(server.headers).join(\", \")}`);\n\t\t}\n\t\tif (server.headersHelper) {\n\t\t\tlines.push(` headers helper: ${server.headersHelper}`);\n\t\t}\n\t\tif (server.authPreset) {\n\t\t\tlines.push(` auth preset: ${server.authPreset}`);\n\t\t}\n\t\treturn;\n\t}\n\n\tlines.push(` command: ${server.command}`);\n\tif (server.args?.length) {\n\t\tlines.push(` args: ${server.args.join(\" \")}`);\n\t}\n\tif (server.cwd) {\n\t\tlines.push(` cwd: ${server.cwd}`);\n\t}\n\tif (server.env && Object.keys(server.env).length > 0) {\n\t\tlines.push(` env: ${Object.keys(server.env).join(\", \")}`);\n\t}\n}\n\nfunction renderOfficialRegistryResults(\n\trenderCtx: McpRenderContext,\n\ttitle: string,\n\tentries: McpOfficialRegistryEntry[],\n\tfooter?: string,\n): void {\n\tconst lines: string[] = [title, \"\"];\n\n\tfor (const [index, entry] of entries.entries()) {\n\t\tlines.push(`${index + 1}. ${entry.displayName}`);\n\t\tconst registryId = formatOfficialRegistryIdentifier(entry);\n\t\tif (registryId) {\n\t\t\tlines.push(` id: ${registryId}`);\n\t\t}\n\t\tif (entry.transport) {\n\t\t\tlines.push(` transport: ${formatMcpTransportLabel(entry.transport)}`);\n\t\t}\n\t\tconst urls = getOfficialMcpRegistryUrls(entry);\n\t\tif (urls.length === 1) {\n\t\t\tlines.push(` url: ${urls[0]}`);\n\t\t} else if (urls.length > 1) {\n\t\t\tlines.push(` url: ${urls[0]} (+${urls.length - 1} more)`);\n\t\t} else if (entry.urlRegex) {\n\t\t\tlines.push(` url pattern: ${entry.urlRegex}`);\n\t\t}\n\t\tif (entry.oneLiner) {\n\t\t\tlines.push(` summary: ${entry.oneLiner}`);\n\t\t}\n\t\tif (entry.documentationUrl) {\n\t\t\tlines.push(` docs: ${entry.documentationUrl}`);\n\t\t}\n\t\tlines.push(\"\");\n\t}\n\n\tif (footer) {\n\t\tlines.push(chalk.dim(footer));\n\t}\n\n\trenderCtx.addContent(lines.join(\"\\n\").trimEnd());\n\trenderCtx.requestRender();\n}\n\nfunction appendAuthPresetSummary(\n\tlines: string[],\n\tpreset: {\n\t\tname: string;\n\t\tscope?: McpAuthPresetStatus[\"scope\"];\n\t\theaders?: Record<string, string>;\n\t\theaderKeys?: string[];\n\t\theadersHelper?: string;\n\t},\n): void {\n\tlines.push(preset.name);\n\tconst scopeLabel = formatMcpScopeLabel(preset.scope);\n\tif (scopeLabel) {\n\t\tlines.push(` Source: ${scopeLabel}`);\n\t}\n\tconst headerKeys =\n\t\tpreset.headerKeys ??\n\t\t(preset.headers ? Object.keys(preset.headers).sort() : undefined);\n\tif (headerKeys && headerKeys.length > 0) {\n\t\tlines.push(` Header keys: ${headerKeys.join(\", \")}`);\n\t}\n\tif (preset.headersHelper) {\n\t\tlines.push(` Headers helper: ${preset.headersHelper}`);\n\t}\n}\n\nfunction appendConfiguredAuthPresetDetails(\n\tlines: string[],\n\tpreset: {\n\t\theaders?: Record<string, string>;\n\t\theaderKeys?: string[];\n\t\theadersHelper?: string;\n\t},\n): void {\n\tconst headerKeys =\n\t\tpreset.headerKeys ??\n\t\t(preset.headers ? Object.keys(preset.headers).sort() : undefined);\n\tif (headerKeys && headerKeys.length > 0) {\n\t\tlines.push(` headers: ${headerKeys.join(\", \")}`);\n\t}\n\tif (preset.headersHelper) {\n\t\tlines.push(` headers helper: ${preset.headersHelper}`);\n\t}\n}\n\nfunction formatMcpPromptArgumentSummary(\n\tserver: McpServerStatus,\n\tpromptName: string,\n): string | null {\n\tconst prompt = server.promptDetails?.find(\n\t\t(entry) => entry.name === promptName,\n\t);\n\tconst promptArguments = prompt?.arguments ?? [];\n\tif (!prompt || promptArguments.length === 0) {\n\t\treturn null;\n\t}\n\n\treturn promptArguments\n\t\t.map((argument) => {\n\t\t\tconst summary = argument.required\n\t\t\t\t? `${argument.name} (required)`\n\t\t\t\t: argument.name;\n\t\t\tconst description = promptSafeText(argument.description);\n\t\t\treturn description ? `${summary}: ${description}` : summary;\n\t\t})\n\t\t.join(\"; \");\n}\n\nfunction appendMcpPromptSummary(\n\tlines: string[],\n\tserver: McpServerStatus,\n\tpromptName: string,\n\tindent = \" \",\n): void {\n\tlines.push(`${indent}${promptName}`);\n\tconst prompt = server.promptDetails?.find(\n\t\t(entry) => entry.name === promptName,\n\t);\n\tif (!prompt) {\n\t\treturn;\n\t}\n\n\tconst detailIndent = `${indent} `;\n\tif (prompt.title && prompt.title !== promptName) {\n\t\tlines.push(`${detailIndent}Title: ${prompt.title}`);\n\t}\n\tconst description = promptSafeText(prompt.description);\n\tif (description) {\n\t\tlines.push(`${detailIndent}Description: ${description}`);\n\t}\n\tconst argumentSummary = formatMcpPromptArgumentSummary(server, promptName);\n\tif (argumentSummary) {\n\t\tlines.push(`${detailIndent}Args: ${argumentSummary}`);\n\t}\n}\n\nexport function formatMcpPromptList(\n\tservers: McpServerStatus[],\n\tserverName?: string,\n): string {\n\tconst lines: string[] = [\"MCP Prompts\", \"\"];\n\tconst visibleServers = serverName\n\t\t? servers.filter((entry) => entry.name === serverName)\n\t\t: servers;\n\n\tif (serverName && visibleServers.length === 0) {\n\t\tlines.push(`Server '${serverName}' not found`);\n\t} else if (serverName && !visibleServers[0]?.connected) {\n\t\tlines.push(`Server '${serverName}' not connected`);\n\t} else {\n\t\tconst connectedWithPrompts = visibleServers\n\t\t\t.filter((server) => server.connected)\n\t\t\t.filter((server) => server.prompts.length > 0);\n\n\t\tif (connectedWithPrompts.length === 0) {\n\t\t\tlines.push(\n\t\t\t\tserverName\n\t\t\t\t\t? `Server '${serverName}' does not expose prompts.`\n\t\t\t\t\t: \"No prompts available from connected servers.\",\n\t\t\t);\n\t\t} else {\n\t\t\tfor (const server of connectedWithPrompts) {\n\t\t\t\tlines.push(`${chalk.bold(server.name)}:`);\n\t\t\t\tfor (const prompt of server.prompts) {\n\t\t\t\t\tappendMcpPromptSummary(lines, server, prompt);\n\t\t\t\t}\n\t\t\t\tlines.push(\"\");\n\t\t\t}\n\t\t}\n\t}\n\n\tlines.push(\"\");\n\tlines.push(chalk.dim(\"Usage: /mcp prompts <server> <name> [KEY=value ...]\"));\n\treturn lines.join(\"\\n\");\n}\n\nfunction renderMcpStatus(renderCtx: McpRenderContext): void {\n\tconst status = mcpManager.getStatus();\n\tconst lines: string[] = [\"Model Context Protocol\", \"\"];\n\n\tif (status.authPresets.length > 0) {\n\t\tlines.push(\"Auth presets\", \"\");\n\t\tfor (const preset of status.authPresets) {\n\t\t\tappendAuthPresetSummary(lines, preset);\n\t\t\tlines.push(\"\");\n\t\t}\n\t}\n\n\tif (status.servers.length === 0) {\n\t\tif (status.authPresets.length > 0) {\n\t\t\tlines.push(\"Servers\", \"\");\n\t\t}\n\t\tlines.push(\n\t\t\t\"No MCP servers configured.\",\n\t\t\t\"\",\n\t\t\t\"Add servers to ~/.maestro/mcp.json, .maestro/mcp.json, or use /mcp:\",\n\t\t\t\"\",\n\t\t\t\" /mcp search linear\",\n\t\t\t\" /mcp import linear\",\n\t\t\t\" /mcp add linear https://mcp.linear.app/mcp\",\n\t\t\t\" /mcp add linear https://mcp.linear.app/mcp --auth-preset linear-auth\",\n\t\t\t\" /mcp auth add linear-auth --header 'Authorization: Bearer ...'\",\n\t\t\t\" /mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem .\",\n\t\t\t\"\",\n\t\t\t' { \"mcpServers\": { \"my-server\": { \"command\": \"npx\", \"args\": [\"-y\", \"@example/mcp-server\"] } } }',\n\t\t);\n\t} else {\n\t\tif (status.authPresets.length > 0) {\n\t\t\tlines.push(\"Servers\", \"\");\n\t\t}\n\t\tfor (const server of status.servers) {\n\t\t\tconst connectionState = getMcpConnectionState(server);\n\t\t\tlines.push(`${connectionState.icon} ${server.name}`);\n\t\t\tconst scopeLabel = formatMcpScopeLabel(server.scope);\n\t\t\tif (scopeLabel) {\n\t\t\t\tlines.push(` Source: ${scopeLabel}`);\n\t\t\t}\n\t\t\tlines.push(` Status: ${connectionState.label}`);\n\t\t\tlines.push(` Transport: ${formatMcpTransportLabel(server.transport)}`);\n\t\t\tif (server.remoteUrl) {\n\t\t\t\tlines.push(` Remote: ${server.remoteUrl}`);\n\t\t\t}\n\t\t\tif (server.authPreset) {\n\t\t\t\tlines.push(` Auth preset: ${server.authPreset}`);\n\t\t\t}\n\t\t\tif (server.headerKeys && server.headerKeys.length > 0) {\n\t\t\t\tlines.push(` Header keys: ${server.headerKeys.join(\", \")}`);\n\t\t\t}\n\t\t\tif (server.headersHelper) {\n\t\t\t\tlines.push(` Headers helper: ${server.headersHelper}`);\n\t\t\t}\n\t\t\tconst trustLabel = formatMcpTrustLabel(server);\n\t\t\tif (trustLabel) {\n\t\t\t\tlines.push(` Trust: ${trustLabel}`);\n\t\t\t}\n\t\t\tconst approvalLabel = formatMcpProjectApprovalLabel(\n\t\t\t\tserver.projectApproval,\n\t\t\t);\n\t\t\tif (approvalLabel) {\n\t\t\t\tlines.push(` Approval: ${approvalLabel}`);\n\t\t\t}\n\t\t\tif (server.officialRegistry?.documentationUrl) {\n\t\t\t\tlines.push(` Docs: ${server.officialRegistry.documentationUrl}`);\n\t\t\t}\n\t\t\tif (server.officialRegistry?.permissions) {\n\t\t\t\tlines.push(` Permissions: ${server.officialRegistry.permissions}`);\n\t\t\t}\n\t\t\tif (server.connected) {\n\t\t\t\tif (server.tools.length > 0) {\n\t\t\t\t\tlines.push(\n\t\t\t\t\t\t` Tools: ${server.tools.map((tool) => tool.name).join(\", \")}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (server.resources.length > 0) {\n\t\t\t\t\tlines.push(` Resources: ${server.resources.length}`);\n\t\t\t\t}\n\t\t\t\tif (server.prompts.length > 0) {\n\t\t\t\t\tlines.push(` Prompts: ${server.prompts.join(\", \")}`);\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tserver.projectApproval === \"pending\" ||\n\t\t\t\tserver.projectApproval === \"denied\"\n\t\t\t) {\n\t\t\t\tlines.push(\n\t\t\t\t\t` ${chalk.dim(\"Connection is blocked by local approval state\")}`,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tlines.push(` ${chalk.dim(\"Not connected\")}`);\n\t\t\t\tconst errorLabel = formatMcpErrorLabel(server.error);\n\t\t\t\tif (errorLabel) {\n\t\t\t\t\tlines.push(` ${chalk.red(`Error: ${errorLabel}`)}`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tlines.push(\"\");\n\tlines.push(\n\t\tchalk.dim(\n\t\t\t\"Subcommands: /mcp add, /mcp edit, /mcp remove, /mcp approve, /mcp deny, /mcp search, /mcp import, /mcp auth, /mcp resources, /mcp prompts\",\n\t\t),\n\t);\n\n\trenderCtx.addContent(lines.join(\"\\n\").trimEnd());\n\trenderCtx.requestRender();\n}\n\nexport function handleMcpCommand(renderCtx: McpRenderContext): void {\n\tconst args = renderCtx.rawInput.replace(/^\\/mcp\\s*/, \"\").trim();\n\tconst parts = args.split(/\\s+/);\n\tconst subcommand = parts[0]?.toLowerCase() || \"\";\n\n\tif (subcommand === \"add\") {\n\t\tvoid handleMcpAddCommand(renderCtx);\n\t\treturn;\n\t}\n\tif (subcommand === \"edit\") {\n\t\tvoid handleMcpEditCommand(renderCtx);\n\t\treturn;\n\t}\n\tif (subcommand === \"remove\") {\n\t\tvoid handleMcpRemoveCommand(renderCtx);\n\t\treturn;\n\t}\n\tif (subcommand === \"approve\") {\n\t\tvoid handleMcpProjectApprovalCommand(renderCtx, \"approve\");\n\t\treturn;\n\t}\n\tif (subcommand === \"deny\") {\n\t\tvoid handleMcpProjectApprovalCommand(renderCtx, \"deny\");\n\t\treturn;\n\t}\n\tif (subcommand === \"search\" || subcommand === \"registry\") {\n\t\tvoid handleMcpSearchCommand(renderCtx);\n\t\treturn;\n\t}\n\tif (subcommand === \"import\") {\n\t\tvoid handleMcpImportCommand(renderCtx);\n\t\treturn;\n\t}\n\tif (isMcpAuthAlias(subcommand)) {\n\t\tvoid handleMcpAuthCommand(renderCtx);\n\t\treturn;\n\t}\n\tif (subcommand === \"resources\") {\n\t\thandleMcpResourcesCommand(parts.slice(1), renderCtx);\n\t\treturn;\n\t}\n\tif (subcommand === \"prompts\") {\n\t\thandleMcpPromptsCommand(parts.slice(1), renderCtx);\n\t\treturn;\n\t}\n\n\trenderMcpStatus(renderCtx);\n}\n\nasync function handleMcpAddCommand(renderCtx: McpRenderContext): Promise<void> {\n\ttry {\n\t\tconst projectRoot = process.cwd();\n\t\tconst parsed = parseMcpServerMutationCommand(\n\t\t\trenderCtx.rawInput,\n\t\t\t\"add\",\n\t\t\t\"local\",\n\t\t);\n\t\tconst existingServer = loadMcpConfig(projectRoot).servers.find(\n\t\t\t(server) => server.name === parsed.server.name,\n\t\t);\n\t\tif (existingServer) {\n\t\t\tthrow new Error(\n\t\t\t\t`MCP server \"${parsed.server.name}\" already exists in merged config (scope: ${existingServer.scope ?? \"unknown\"}). Choose a different name.`,\n\t\t\t);\n\t\t}\n\t\tresolveKnownAuthPresetName(projectRoot, parsed.server.authPreset);\n\n\t\tif (parsed.server.url) {\n\t\t\tawait prefetchOfficialMcpRegistry();\n\t\t}\n\n\t\tconst { path } = addMcpServerToConfig({\n\t\t\tprojectRoot,\n\t\t\tscope: parsed.scope ?? \"local\",\n\t\t\tserver: parsed.server,\n\t\t});\n\t\tawait reloadMcpManager(projectRoot);\n\n\t\tconst lines = [\n\t\t\t`Added MCP server \"${parsed.server.name}\"`,\n\t\t\t` scope: ${parsed.scope ?? \"local\"}`,\n\t\t\t` path: ${path}`,\n\t\t];\n\t\tappendConfiguredServerSummary(lines, parsed.server);\n\n\t\trenderCtx.addContent(lines.join(\"\\n\"));\n\t\trenderCtx.requestRender();\n\t} catch (error) {\n\t\trenderCtx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nasync function handleMcpEditCommand(\n\trenderCtx: McpRenderContext,\n): Promise<void> {\n\ttry {\n\t\tconst projectRoot = process.cwd();\n\t\tconst parsed = parseMcpServerMutationCommand(renderCtx.rawInput, \"edit\");\n\t\tconst currentConfig = loadMcpConfig(projectRoot);\n\t\tconst existingServer = currentConfig.servers.find(\n\t\t\t(server) => server.name === parsed.server.name,\n\t\t);\n\t\tif (!existingServer) {\n\t\t\tthrow new Error(\n\t\t\t\t`MCP server \"${parsed.server.name}\" not found in merged config.`,\n\t\t\t);\n\t\t}\n\t\tresolveKnownAuthPresetName(projectRoot, parsed.server.authPreset);\n\n\t\tif (existingServer.url || parsed.server.url) {\n\t\t\tawait prefetchOfficialMcpRegistry();\n\t\t}\n\n\t\tconst { path, scope } = updateMcpServerInConfig({\n\t\t\tprojectRoot,\n\t\t\tscope: parsed.scope,\n\t\t\tname: parsed.server.name,\n\t\t\tserver: parsed.server,\n\t\t});\n\t\tconst reloadedConfig = await reloadMcpManager(projectRoot);\n\t\tconst activeServer = reloadedConfig.servers.find(\n\t\t\t(server) => server.name === parsed.server.name,\n\t\t);\n\n\t\tconst lines = [\n\t\t\t`Updated MCP server \"${parsed.server.name}\"`,\n\t\t\t` scope: ${scope}`,\n\t\t\t` path: ${path}`,\n\t\t];\n\t\tappendConfiguredServerSummary(lines, activeServer ?? parsed.server);\n\n\t\trenderCtx.addContent(lines.join(\"\\n\"));\n\t\trenderCtx.requestRender();\n\t} catch (error) {\n\t\trenderCtx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nasync function handleMcpRemoveCommand(\n\trenderCtx: McpRenderContext,\n): Promise<void> {\n\ttry {\n\t\tconst projectRoot = process.cwd();\n\t\tconst parsed = parseMcpRemoveCommand(renderCtx.rawInput);\n\t\tconst { path, scope } = removeMcpServerFromConfig({\n\t\t\tprojectRoot,\n\t\t\tscope: parsed.scope,\n\t\t\tname: parsed.name,\n\t\t});\n\t\tconst reloadedConfig = await reloadMcpManager(projectRoot);\n\t\tconst fallbackServer = reloadedConfig.servers.find(\n\t\t\t(server) => server.name === parsed.name,\n\t\t);\n\n\t\tconst lines = [\n\t\t\t`Removed MCP server \"${parsed.name}\"`,\n\t\t\t` scope: ${scope}`,\n\t\t\t` path: ${path}`,\n\t\t];\n\t\tif (fallbackServer) {\n\t\t\tlines.push(\n\t\t\t\t` fallback: now using ${formatMcpScopeLabel(fallbackServer.scope) ?? fallbackServer.scope ?? \"another\"} for \"${parsed.name}\"`,\n\t\t\t);\n\t\t} else {\n\t\t\tlines.push(\" status: removed from merged config\");\n\t\t}\n\n\t\trenderCtx.addContent(lines.join(\"\\n\"));\n\t\trenderCtx.requestRender();\n\t} catch (error) {\n\t\trenderCtx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nasync function handleMcpProjectApprovalCommand(\n\trenderCtx: McpRenderContext,\n\tcommand: \"approve\" | \"deny\",\n): Promise<void> {\n\ttry {\n\t\tconst projectRoot = process.cwd();\n\t\tconst parsed = parseMcpProjectApprovalCommand(renderCtx.rawInput, command);\n\t\tconst currentConfig = loadMcpConfig(projectRoot);\n\t\tconst existingServer = currentConfig.servers.find(\n\t\t\t(server) => server.name === parsed.name,\n\t\t);\n\t\tif (!existingServer) {\n\t\t\tthrow new Error(\n\t\t\t\t`MCP server \"${parsed.name}\" not found in merged config.`,\n\t\t\t);\n\t\t}\n\t\tif (existingServer.scope !== \"project\") {\n\t\t\tthrow new Error(\n\t\t\t\t`MCP server \"${parsed.name}\" is not loaded from project config.`,\n\t\t\t);\n\t\t}\n\n\t\tconst decision = command === \"approve\" ? \"approved\" : \"denied\";\n\t\tsetProjectMcpServerApprovalDecision({\n\t\t\tprojectRoot,\n\t\t\tserver: existingServer,\n\t\t\tauthPresets: currentConfig.authPresets,\n\t\t\tdecision,\n\t\t});\n\t\tawait reloadMcpManager(projectRoot);\n\n\t\trenderCtx.addContent(\n\t\t\tdecision === \"approved\"\n\t\t\t\t? `Approved project MCP server \"${parsed.name}\".`\n\t\t\t\t: `Denied project MCP server \"${parsed.name}\".`,\n\t\t);\n\t\trenderCtx.requestRender();\n\t} catch (error) {\n\t\trenderCtx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nasync function handleMcpSearchCommand(\n\trenderCtx: McpRenderContext,\n): Promise<void> {\n\ttry {\n\t\tawait ensureOfficialRegistryLoaded();\n\t\tconst query = parseMcpSearchQuery(renderCtx.rawInput);\n\t\tconst matches = searchOfficialMcpRegistry(query, { limit: 8 });\n\t\tif (matches.length === 0) {\n\t\t\trenderCtx.addContent(\n\t\t\t\t[\n\t\t\t\t\tquery\n\t\t\t\t\t\t? `Official MCP Registry matches for \"${query}\"`\n\t\t\t\t\t\t: \"Official MCP Registry\",\n\t\t\t\t\t\"\",\n\t\t\t\t\tquery\n\t\t\t\t\t\t? `No matches found for \"${query}\".`\n\t\t\t\t\t\t: \"No official MCP registry entries available.\",\n\t\t\t\t].join(\"\\n\"),\n\t\t\t);\n\t\t\trenderCtx.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\trenderOfficialRegistryResults(\n\t\t\trenderCtx,\n\t\t\tquery\n\t\t\t\t? `Official MCP Registry matches for \"${query}\"`\n\t\t\t\t: \"Official MCP Registry\",\n\t\t\tmatches,\n\t\t\t\"Use /mcp import <id> [name] to add one of these servers.\",\n\t\t);\n\t} catch (error) {\n\t\trenderCtx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nasync function handleMcpImportCommand(\n\trenderCtx: McpRenderContext,\n): Promise<void> {\n\ttry {\n\t\tconst projectRoot = process.cwd();\n\t\tconst parsed = parseMcpImportCommand(renderCtx.rawInput);\n\t\tawait ensureOfficialRegistryLoaded();\n\n\t\tconst { entry, matches } = resolveOfficialMcpRegistryEntry(parsed.query);\n\t\tif (!entry) {\n\t\t\tif (matches.length > 0) {\n\t\t\t\trenderOfficialRegistryResults(\n\t\t\t\t\trenderCtx,\n\t\t\t\t\t`Multiple official MCP registry matches for \"${parsed.query}\"`,\n\t\t\t\t\tmatches,\n\t\t\t\t\t\"Use a more specific id, or inspect candidates with /mcp search <query>.\",\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthrow new Error(\n\t\t\t\t`No official MCP registry match found for \"${parsed.query}\". Try /mcp search ${parsed.query}`,\n\t\t\t);\n\t\t}\n\n\t\tconst localName = parsed.localName ?? buildSuggestedMcpServerName(entry);\n\t\tconst existingServer = loadMcpConfig(projectRoot).servers.find(\n\t\t\t(server) => server.name === localName,\n\t\t);\n\t\tif (existingServer) {\n\t\t\tthrow new Error(\n\t\t\t\t`MCP server \"${localName}\" already exists in merged config (scope: ${existingServer.scope ?? \"unknown\"}). Choose a different name.`,\n\t\t\t);\n\t\t}\n\t\tresolveKnownAuthPresetName(projectRoot, parsed.authPreset);\n\n\t\tconst resolvedUrl = parsed.url ?? entry.url ?? entry.urlOptions?.[0]?.url;\n\t\tif (!resolvedUrl) {\n\t\t\tthrow new Error(\n\t\t\t\t`Official MCP registry entry \"${entry.displayName}\" requires --url because it does not publish a default remote URL.`,\n\t\t\t);\n\t\t}\n\t\tif (!looksLikeRemoteUrl(resolvedUrl)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Official MCP URL must be http(s). Received: ${resolvedUrl}`,\n\t\t\t);\n\t\t}\n\t\tif (parsed.url && !officialMcpRegistryEntryMatchesUrl(entry, parsed.url)) {\n\t\t\tthrow new Error(\n\t\t\t\t`URL does not match the official MCP registry entry \"${entry.displayName}\".`,\n\t\t\t);\n\t\t}\n\n\t\tconst transport =\n\t\t\tparsed.transport ??\n\t\t\tentry.transport ??\n\t\t\tinferRemoteMcpTransport(resolvedUrl);\n\t\tconst { path } = addMcpServerToConfig({\n\t\t\tprojectRoot,\n\t\t\tscope: parsed.scope,\n\t\t\tserver: {\n\t\t\t\tname: localName,\n\t\t\t\ttransport,\n\t\t\t\turl: resolvedUrl,\n\t\t\t\theaders: parsed.headers,\n\t\t\t\theadersHelper: parsed.headersHelper,\n\t\t\t\tauthPreset: parsed.authPreset,\n\t\t\t},\n\t\t});\n\t\tawait reloadMcpManager(projectRoot);\n\n\t\tconst lines = [\n\t\t\t`Imported official MCP server \"${localName}\"`,\n\t\t\t` scope: ${parsed.scope}`,\n\t\t\t` path: ${path}`,\n\t\t];\n\t\tconst registryId = formatOfficialRegistryIdentifier(entry);\n\t\tif (registryId) {\n\t\t\tlines.push(` registry id: ${registryId}`);\n\t\t}\n\t\tlines.push(` source: ${entry.displayName}`);\n\t\tappendConfiguredServerSummary(lines, {\n\t\t\ttransport,\n\t\t\turl: resolvedUrl,\n\t\t\theaders: parsed.headers,\n\t\t\theadersHelper: parsed.headersHelper,\n\t\t\tauthPreset: parsed.authPreset,\n\t\t});\n\n\t\trenderCtx.addContent(lines.join(\"\\n\"));\n\t\trenderCtx.requestRender();\n\t} catch (error) {\n\t\trenderCtx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nasync function handleMcpAuthCommand(\n\trenderCtx: McpRenderContext,\n): Promise<void> {\n\ttry {\n\t\tconst tokens = parseTokens(renderCtx.rawInput);\n\t\tconst subcommand = tokens[2]?.toLowerCase() ?? \"list\";\n\n\t\tif (subcommand === \"list\") {\n\t\t\tconst status = mcpManager.getStatus();\n\t\t\tconst lines: string[] = [\"MCP Auth Presets\", \"\"];\n\n\t\t\tif (status.authPresets.length === 0) {\n\t\t\t\tlines.push(\n\t\t\t\t\t\"No MCP auth presets configured.\",\n\t\t\t\t\t\"\",\n\t\t\t\t\t\"Examples:\",\n\t\t\t\t\t\" /mcp auth add linear-auth --header 'Authorization: Bearer ...'\",\n\t\t\t\t\t\" /mcp add linear https://mcp.linear.app/mcp --auth-preset linear-auth\",\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tfor (const preset of status.authPresets) {\n\t\t\t\t\tappendAuthPresetSummary(lines, preset);\n\t\t\t\t\tlines.push(\"\");\n\t\t\t\t}\n\t\t\t\tlines.push(\n\t\t\t\t\tchalk.dim(\n\t\t\t\t\t\t\"Usage: /mcp auth add|edit|remove <name> [--scope ...] [--header ...] [--headers-helper ...]\",\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\trenderCtx.addContent(lines.join(\"\\n\").trimEnd());\n\t\t\trenderCtx.requestRender();\n\t\t\treturn;\n\t\t}\n\n\t\tif (subcommand === \"add\") {\n\t\t\tawait handleMcpAuthAddCommand(renderCtx);\n\t\t\treturn;\n\t\t}\n\t\tif (subcommand === \"edit\") {\n\t\t\tawait handleMcpAuthEditCommand(renderCtx);\n\t\t\treturn;\n\t\t}\n\t\tif (subcommand === \"remove\") {\n\t\t\tawait handleMcpAuthRemoveCommand(renderCtx);\n\t\t\treturn;\n\t\t}\n\n\t\trenderCtx.showError(MCP_AUTH_USAGE);\n\t} catch (error) {\n\t\trenderCtx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nasync function handleMcpAuthAddCommand(\n\trenderCtx: McpRenderContext,\n): Promise<void> {\n\ttry {\n\t\tconst projectRoot = process.cwd();\n\t\tconst parsed = parseMcpAuthPresetMutationCommand(\n\t\t\trenderCtx.rawInput,\n\t\t\t\"add\",\n\t\t\t\"local\",\n\t\t);\n\t\tconst existingPreset = loadMcpConfig(projectRoot).authPresets.find(\n\t\t\t(preset) => preset.name === parsed.preset.name,\n\t\t);\n\t\tif (existingPreset) {\n\t\t\tthrow new Error(\n\t\t\t\t`MCP auth preset \"${parsed.preset.name}\" already exists in merged config (scope: ${existingPreset.scope ?? \"unknown\"}). Choose a different name.`,\n\t\t\t);\n\t\t}\n\n\t\tconst { path } = addMcpAuthPresetToConfig({\n\t\t\tprojectRoot,\n\t\t\tscope: parsed.scope ?? \"local\",\n\t\t\tpreset: parsed.preset,\n\t\t});\n\t\tawait reloadMcpManager(projectRoot);\n\n\t\tconst lines = [\n\t\t\t`Added MCP auth preset \"${parsed.preset.name}\"`,\n\t\t\t` scope: ${parsed.scope ?? \"local\"}`,\n\t\t\t` path: ${path}`,\n\t\t];\n\t\tappendConfiguredAuthPresetDetails(lines, parsed.preset);\n\n\t\trenderCtx.addContent(lines.join(\"\\n\"));\n\t\trenderCtx.requestRender();\n\t} catch (error) {\n\t\trenderCtx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nasync function handleMcpAuthEditCommand(\n\trenderCtx: McpRenderContext,\n): Promise<void> {\n\ttry {\n\t\tconst projectRoot = process.cwd();\n\t\tconst parsed = parseMcpAuthPresetMutationCommand(\n\t\t\trenderCtx.rawInput,\n\t\t\t\"edit\",\n\t\t);\n\t\tconst currentConfig = loadMcpConfig(projectRoot);\n\t\tconst existingPreset = currentConfig.authPresets.find(\n\t\t\t(preset) => preset.name === parsed.preset.name,\n\t\t);\n\t\tif (!existingPreset) {\n\t\t\tthrow new Error(\n\t\t\t\t`MCP auth preset \"${parsed.preset.name}\" not found in merged config.`,\n\t\t\t);\n\t\t}\n\n\t\tconst { path, scope } = updateMcpAuthPresetInConfig({\n\t\t\tprojectRoot,\n\t\t\tscope: parsed.scope,\n\t\t\tname: parsed.preset.name,\n\t\t\tpreset: parsed.preset,\n\t\t});\n\t\tconst reloadedConfig = await reloadMcpManager(projectRoot);\n\t\tconst activePreset = reloadedConfig.authPresets.find(\n\t\t\t(preset) => preset.name === parsed.preset.name,\n\t\t);\n\n\t\tconst lines = [\n\t\t\t`Updated MCP auth preset \"${parsed.preset.name}\"`,\n\t\t\t` scope: ${scope}`,\n\t\t\t` path: ${path}`,\n\t\t];\n\t\tappendConfiguredAuthPresetDetails(lines, activePreset ?? parsed.preset);\n\n\t\trenderCtx.addContent(lines.join(\"\\n\"));\n\t\trenderCtx.requestRender();\n\t} catch (error) {\n\t\trenderCtx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nasync function handleMcpAuthRemoveCommand(\n\trenderCtx: McpRenderContext,\n): Promise<void> {\n\ttry {\n\t\tconst projectRoot = process.cwd();\n\t\tconst parsed = parseMcpAuthPresetRemoveCommand(renderCtx.rawInput);\n\t\tconst { path, scope } = removeMcpAuthPresetFromConfig({\n\t\t\tprojectRoot,\n\t\t\tscope: parsed.scope,\n\t\t\tname: parsed.name,\n\t\t});\n\t\tconst reloadedConfig = await reloadMcpManager(projectRoot);\n\t\tconst fallbackPreset = reloadedConfig.authPresets.find(\n\t\t\t(preset) => preset.name === parsed.name,\n\t\t);\n\n\t\tconst lines = [\n\t\t\t`Removed MCP auth preset \"${parsed.name}\"`,\n\t\t\t` scope: ${scope}`,\n\t\t\t` path: ${path}`,\n\t\t];\n\t\tif (fallbackPreset) {\n\t\t\tlines.push(\n\t\t\t\t` fallback: now using ${formatMcpScopeLabel(fallbackPreset.scope) ?? fallbackPreset.scope ?? \"another\"} for \"${parsed.name}\"`,\n\t\t\t);\n\t\t} else {\n\t\t\tlines.push(\" status: removed from merged config\");\n\t\t}\n\n\t\trenderCtx.addContent(lines.join(\"\\n\"));\n\t\trenderCtx.requestRender();\n\t} catch (error) {\n\t\trenderCtx.showError(error instanceof Error ? error.message : String(error));\n\t}\n}\n\nexport function handleMcpResourcesCommand(\n\targs: string[],\n\trenderCtx: McpRenderContext,\n): void {\n\tconst status = mcpManager.getStatus();\n\tconst lines: string[] = [\"MCP Resources\", \"\"];\n\n\tif (args.length >= 2) {\n\t\tconst serverName = args[0]!;\n\t\tconst uri = args.slice(1).join(\" \");\n\t\tconst server = status.servers.find((entry) => entry.name === serverName);\n\t\tif (!server?.connected) {\n\t\t\tlines.push(`Server '${serverName}' not connected`);\n\t\t} else {\n\t\t\tmcpManager\n\t\t\t\t.readResource(serverName, uri)\n\t\t\t\t.then((result) => {\n\t\t\t\t\tconst resourceLines = [`Resource: ${uri}`, \"\"];\n\t\t\t\t\tfor (const content of result.contents) {\n\t\t\t\t\t\tif (content.text) {\n\t\t\t\t\t\t\tresourceLines.push(content.text);\n\t\t\t\t\t\t} else if (content.blob) {\n\t\t\t\t\t\t\tresourceLines.push(\n\t\t\t\t\t\t\t\t`[Binary data: ${content.mimeType || \"unknown type\"}]`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\trenderCtx.addContent(resourceLines.join(\"\\n\"));\n\t\t\t\t\trenderCtx.requestRender();\n\t\t\t\t})\n\t\t\t\t.catch((error: unknown) => {\n\t\t\t\t\tconst message =\n\t\t\t\t\t\terror instanceof Error ? error.message : String(error);\n\t\t\t\t\trenderCtx.showError(`Failed to read resource: ${message}`);\n\t\t\t\t});\n\t\t\treturn;\n\t\t}\n\t} else {\n\t\tlet hasResources = false;\n\t\tfor (const server of status.servers) {\n\t\t\tif (!server.connected || server.resources.length === 0) continue;\n\t\t\thasResources = true;\n\t\t\tlines.push(`${chalk.bold(server.name)}:`);\n\t\t\tfor (const uri of server.resources) {\n\t\t\t\tlines.push(` ${uri}`);\n\t\t\t}\n\t\t\tlines.push(\"\");\n\t\t}\n\t\tif (!hasResources) {\n\t\t\tlines.push(\"No resources available from connected servers.\");\n\t\t}\n\t\tlines.push(\"\");\n\t\tlines.push(chalk.dim(\"Usage: /mcp resources <server> <uri>\"));\n\t}\n\n\trenderCtx.addContent(lines.join(\"\\n\"));\n\trenderCtx.requestRender();\n}\n\nexport function handleMcpPromptsCommand(\n\targs: string[],\n\trenderCtx: McpRenderContext,\n): void {\n\tconst status = mcpManager.getStatus();\n\tconst lines: string[] = [\"MCP Prompts\", \"\"];\n\n\tif (args.length >= 2) {\n\t\tlet promptInvocation: ReturnType<typeof parseMcpPromptInvocationTokens>;\n\t\ttry {\n\t\t\tpromptInvocation = parseMcpPromptInvocationTokens(renderCtx.rawInput);\n\t\t} catch (error) {\n\t\t\trenderCtx.showError(\n\t\t\t\terror instanceof Error ? error.message : String(error),\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tconst serverName = promptInvocation.serverName ?? args[0]!;\n\t\tconst promptName = promptInvocation.promptName ?? args[1]!;\n\t\tconst server = status.servers.find((entry) => entry.name === serverName);\n\t\tif (!server) {\n\t\t\tlines.push(`Server '${serverName}' not found`);\n\t\t} else if (!server.connected) {\n\t\t\tlines.push(`Server '${serverName}' not connected`);\n\t\t} else if (!server.prompts.includes(promptName)) {\n\t\t\tlines.push(`Prompt '${promptName}' not found on server '${serverName}'`);\n\t\t} else {\n\t\t\tmcpManager\n\t\t\t\t.getPrompt(serverName, promptName, promptInvocation.args)\n\t\t\t\t.then((result) => {\n\t\t\t\t\tconst promptLines = [`Prompt: ${promptName}`, \"\"];\n\t\t\t\t\tif (result.description) {\n\t\t\t\t\t\tpromptLines.push(`Description: ${result.description}`, \"\");\n\t\t\t\t\t}\n\t\t\t\t\tfor (const message of result.messages) {\n\t\t\t\t\t\tpromptLines.push(`[${message.role}]`);\n\t\t\t\t\t\tpromptLines.push(message.content);\n\t\t\t\t\t\tpromptLines.push(\"\");\n\t\t\t\t\t}\n\t\t\t\t\trenderCtx.addContent(promptLines.join(\"\\n\"));\n\t\t\t\t\trenderCtx.requestRender();\n\t\t\t\t})\n\t\t\t\t.catch((error: unknown) => {\n\t\t\t\t\tconst message =\n\t\t\t\t\t\terror instanceof Error ? error.message : String(error);\n\t\t\t\t\trenderCtx.showError(`Failed to get prompt: ${message}`);\n\t\t\t\t});\n\t\t\treturn;\n\t\t}\n\t} else {\n\t\trenderCtx.addContent(formatMcpPromptList(status.servers, args[0]));\n\t\trenderCtx.requestRender();\n\t\treturn;\n\t}\n\n\trenderCtx.addContent(lines.join(\"\\n\"));\n\trenderCtx.requestRender();\n}\n"]}
|
|
@@ -29,6 +29,7 @@ export interface CommandHandlers {
|
|
|
29
29
|
review(context: CommandExecutionContext): void;
|
|
30
30
|
undoChanges(context: CommandExecutionContext): void;
|
|
31
31
|
mention(context: CommandExecutionContext): void;
|
|
32
|
+
a2a(context: CommandExecutionContext): Promise<void> | void;
|
|
32
33
|
access(context: CommandExecutionContext): void;
|
|
33
34
|
pii(context: CommandExecutionContext): void;
|
|
34
35
|
audit(context: CommandExecutionContext): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli-tui/commands/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli-tui/commands/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli-tui/commands/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n\tAutocompleteItem,\n\tCommandArgumentDefinition,\n\tSlashCommand,\n} from \"@evalops/tui\";\nimport type { CommandSuiteHandlers } from \"./command-suite-handlers.js\";\n\nexport interface CommandExecutionContext<TArgs = Record<string, unknown>> {\n\tcommand: SlashCommand;\n\trawInput: string;\n\targumentText: string;\n\tparsedArgs?: TArgs;\n\tshowInfo(message: string): void;\n\tshowError(message: string): void;\n\trenderHelp(): void;\n}\n\nexport type RunScriptCompletionProvider = (\n\tprefix: string,\n) => AutocompleteItem[] | null;\n\nexport interface CommandHandlers {\n\tthinking(context: CommandExecutionContext): void;\n\tmodel(context: CommandExecutionContext): void;\n\texportSession(context: CommandExecutionContext): Promise<void> | void;\n\tshareSession(context: CommandExecutionContext): Promise<void> | void;\n\ttools(context: CommandExecutionContext): void;\n\ttoolHistory(context: CommandExecutionContext): void;\n\tskills(context: CommandExecutionContext): void;\n\timportConfig(context: CommandExecutionContext): Promise<void> | void;\n\tsession(context: CommandExecutionContext): void;\n\tsessions(context: CommandExecutionContext): void;\n\treport(context: CommandExecutionContext): void;\n\tabout(context: CommandExecutionContext): void;\n\thistory(context: CommandExecutionContext): void;\n\tclear(context: CommandExecutionContext): Promise<void> | void;\n\tstatus(context: CommandExecutionContext): void;\n\treview(context: CommandExecutionContext): void;\n\tundoChanges(context: CommandExecutionContext): void;\n\tmention(context: CommandExecutionContext): void;\n\taccess(context: CommandExecutionContext): void;\n\tpii(context: CommandExecutionContext): void;\n\taudit(context: CommandExecutionContext): void;\n\tlimits(context: CommandExecutionContext): void;\n\thelp(context: CommandExecutionContext): void;\n\tupdate(context: CommandExecutionContext): Promise<void> | void;\n\tchangelog(context: CommandExecutionContext): void;\n\thotkeys(context: CommandExecutionContext): void | Promise<void>;\n\tconfig(context: CommandExecutionContext): Promise<void> | void;\n\tcost(context: CommandExecutionContext): Promise<void> | void;\n\tquota(context: CommandExecutionContext): Promise<void> | void;\n\ttelemetry(context: CommandExecutionContext): void;\n\totel(context: CommandExecutionContext): void;\n\ttraining(context: CommandExecutionContext): void;\n\tstats(context: CommandExecutionContext): Promise<void> | void;\n\tplan(context: CommandExecutionContext): void;\n\tpreview(context: CommandExecutionContext): Promise<void> | void;\n\trun(context: CommandExecutionContext): Promise<void> | void;\n\tollama(context: CommandExecutionContext): Promise<void> | void;\n\tdiagnostics(context: CommandExecutionContext): void;\n\tbackground(context: CommandExecutionContext): void;\n\tcompact(context: CommandExecutionContext): Promise<void> | void;\n\tautocompact(context: CommandExecutionContext): void;\n\tfooter(context: CommandExecutionContext): void;\n\tcompactTools(context: CommandExecutionContext): void;\n\tsteer(context: CommandExecutionContext): void | Promise<void>;\n\tqueue(context: CommandExecutionContext): Promise<void> | void;\n\tbranch(context: CommandExecutionContext): void;\n\ttree(context: CommandExecutionContext): void;\n\tquit(context: CommandExecutionContext): Promise<void> | void;\n\tapprovals(context: CommandExecutionContext): void;\n\tplanMode(context: CommandExecutionContext): void;\n\tcommands(context: CommandExecutionContext): void | Promise<void>;\n\tnewChat(context: CommandExecutionContext): void;\n\tinitAgents(context: CommandExecutionContext): void;\n\tmcp(context: CommandExecutionContext): void;\n\tcomposer(context: CommandExecutionContext): void;\n\tlogin(context: CommandExecutionContext): void | Promise<void>;\n\tlogout(context: CommandExecutionContext): void | Promise<void>;\n\tzen(context: CommandExecutionContext): void;\n\tcontext(context: CommandExecutionContext): void;\n\tlsp(context: CommandExecutionContext): void | Promise<void>;\n\ttheme(context: CommandExecutionContext): void;\n\tframework(context: CommandExecutionContext): void;\n\tclean(context: CommandExecutionContext): void;\n\tguardian(context: CommandExecutionContext): void | Promise<void>;\n\tworkflow(context: CommandExecutionContext): void | Promise<void>;\n\tchanges(context: CommandExecutionContext): void;\n\tcheckpoint(context: CommandExecutionContext): void;\n\tmemory(context: CommandExecutionContext): void;\n\tmode(context: CommandExecutionContext): void;\n\tprompts(context: CommandExecutionContext): void;\n\tcopy(context: CommandExecutionContext): void;\n\tpackage(context: CommandExecutionContext): void | Promise<void>;\n}\n\nexport interface CommandEntry {\n\tcommand: SlashCommand;\n\tmatches: (input: string) => boolean;\n\texecute: (input: string) => void | Promise<void>;\n}\n\nexport interface CommandRegistryOptions {\n\tgetRunScriptCompletions: RunScriptCompletionProvider;\n\thandlers: CommandHandlers;\n\tgetCommandSuiteHandlers: () => CommandSuiteHandlers;\n\tcreateContext: (input: {\n\t\tcommand: SlashCommand;\n\t\trawInput: string;\n\t\targumentText: string;\n\t\tparsedArgs?: Record<string, unknown>;\n\t}) => CommandExecutionContext;\n}\n\nexport type { CommandArgumentDefinition };\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli-tui/commands/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n\tAutocompleteItem,\n\tCommandArgumentDefinition,\n\tSlashCommand,\n} from \"@evalops/tui\";\nimport type { CommandSuiteHandlers } from \"./command-suite-handlers.js\";\n\nexport interface CommandExecutionContext<TArgs = Record<string, unknown>> {\n\tcommand: SlashCommand;\n\trawInput: string;\n\targumentText: string;\n\tparsedArgs?: TArgs;\n\tshowInfo(message: string): void;\n\tshowError(message: string): void;\n\trenderHelp(): void;\n}\n\nexport type RunScriptCompletionProvider = (\n\tprefix: string,\n) => AutocompleteItem[] | null;\n\nexport interface CommandHandlers {\n\tthinking(context: CommandExecutionContext): void;\n\tmodel(context: CommandExecutionContext): void;\n\texportSession(context: CommandExecutionContext): Promise<void> | void;\n\tshareSession(context: CommandExecutionContext): Promise<void> | void;\n\ttools(context: CommandExecutionContext): void;\n\ttoolHistory(context: CommandExecutionContext): void;\n\tskills(context: CommandExecutionContext): void;\n\timportConfig(context: CommandExecutionContext): Promise<void> | void;\n\tsession(context: CommandExecutionContext): void;\n\tsessions(context: CommandExecutionContext): void;\n\treport(context: CommandExecutionContext): void;\n\tabout(context: CommandExecutionContext): void;\n\thistory(context: CommandExecutionContext): void;\n\tclear(context: CommandExecutionContext): Promise<void> | void;\n\tstatus(context: CommandExecutionContext): void;\n\treview(context: CommandExecutionContext): void;\n\tundoChanges(context: CommandExecutionContext): void;\n\tmention(context: CommandExecutionContext): void;\n\ta2a(context: CommandExecutionContext): Promise<void> | void;\n\taccess(context: CommandExecutionContext): void;\n\tpii(context: CommandExecutionContext): void;\n\taudit(context: CommandExecutionContext): void;\n\tlimits(context: CommandExecutionContext): void;\n\thelp(context: CommandExecutionContext): void;\n\tupdate(context: CommandExecutionContext): Promise<void> | void;\n\tchangelog(context: CommandExecutionContext): void;\n\thotkeys(context: CommandExecutionContext): void | Promise<void>;\n\tconfig(context: CommandExecutionContext): Promise<void> | void;\n\tcost(context: CommandExecutionContext): Promise<void> | void;\n\tquota(context: CommandExecutionContext): Promise<void> | void;\n\ttelemetry(context: CommandExecutionContext): void;\n\totel(context: CommandExecutionContext): void;\n\ttraining(context: CommandExecutionContext): void;\n\tstats(context: CommandExecutionContext): Promise<void> | void;\n\tplan(context: CommandExecutionContext): void;\n\tpreview(context: CommandExecutionContext): Promise<void> | void;\n\trun(context: CommandExecutionContext): Promise<void> | void;\n\tollama(context: CommandExecutionContext): Promise<void> | void;\n\tdiagnostics(context: CommandExecutionContext): void;\n\tbackground(context: CommandExecutionContext): void;\n\tcompact(context: CommandExecutionContext): Promise<void> | void;\n\tautocompact(context: CommandExecutionContext): void;\n\tfooter(context: CommandExecutionContext): void;\n\tcompactTools(context: CommandExecutionContext): void;\n\tsteer(context: CommandExecutionContext): void | Promise<void>;\n\tqueue(context: CommandExecutionContext): Promise<void> | void;\n\tbranch(context: CommandExecutionContext): void;\n\ttree(context: CommandExecutionContext): void;\n\tquit(context: CommandExecutionContext): Promise<void> | void;\n\tapprovals(context: CommandExecutionContext): void;\n\tplanMode(context: CommandExecutionContext): void;\n\tcommands(context: CommandExecutionContext): void | Promise<void>;\n\tnewChat(context: CommandExecutionContext): void;\n\tinitAgents(context: CommandExecutionContext): void;\n\tmcp(context: CommandExecutionContext): void;\n\tcomposer(context: CommandExecutionContext): void;\n\tlogin(context: CommandExecutionContext): void | Promise<void>;\n\tlogout(context: CommandExecutionContext): void | Promise<void>;\n\tzen(context: CommandExecutionContext): void;\n\tcontext(context: CommandExecutionContext): void;\n\tlsp(context: CommandExecutionContext): void | Promise<void>;\n\ttheme(context: CommandExecutionContext): void;\n\tframework(context: CommandExecutionContext): void;\n\tclean(context: CommandExecutionContext): void;\n\tguardian(context: CommandExecutionContext): void | Promise<void>;\n\tworkflow(context: CommandExecutionContext): void | Promise<void>;\n\tchanges(context: CommandExecutionContext): void;\n\tcheckpoint(context: CommandExecutionContext): void;\n\tmemory(context: CommandExecutionContext): void;\n\tmode(context: CommandExecutionContext): void;\n\tprompts(context: CommandExecutionContext): void;\n\tcopy(context: CommandExecutionContext): void;\n\tpackage(context: CommandExecutionContext): void | Promise<void>;\n}\n\nexport interface CommandEntry {\n\tcommand: SlashCommand;\n\tmatches: (input: string) => boolean;\n\texecute: (input: string) => void | Promise<void>;\n}\n\nexport interface CommandRegistryOptions {\n\tgetRunScriptCompletions: RunScriptCompletionProvider;\n\thandlers: CommandHandlers;\n\tgetCommandSuiteHandlers: () => CommandSuiteHandlers;\n\tcreateContext: (input: {\n\t\tcommand: SlashCommand;\n\t\trawInput: string;\n\t\targumentText: string;\n\t\tparsedArgs?: Record<string, unknown>;\n\t}) => CommandExecutionContext;\n}\n\nexport type { CommandArgumentDefinition };\n"]}
|
|
@@ -32,6 +32,10 @@ export interface InitHandlerCallbacks {
|
|
|
32
32
|
/** Request UI render */
|
|
33
33
|
requestRender: () => void;
|
|
34
34
|
}
|
|
35
|
+
export declare function parseInitArgs(argumentText: string): {
|
|
36
|
+
targetArg: string | undefined;
|
|
37
|
+
force: boolean;
|
|
38
|
+
};
|
|
35
39
|
/**
|
|
36
40
|
* Handle /init command - scaffold AGENTS.md file
|
|
37
41
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utility-handlers.d.ts","sourceRoot":"","sources":["../../../src/cli-tui/commands/utility-handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"utility-handlers.d.ts","sourceRoot":"","sources":["../../../src/cli-tui/commands/utility-handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC/B,wCAAwC;IACxC,WAAW,EAAE,MAAM,UAAU,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,oBAAoB;IACpC,wBAAwB;IACxB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,yBAAyB;IACzB,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAChC,QAAQ,EAAE,uBAAuB,EACjC,IAAI,EAAE,eAAe,EACrB,SAAS,EAAE,oBAAoB,GAC7B,IAAI,CA4CN;AAED,MAAM,WAAW,oBAAoB;IACpC,yBAAyB;IACzB,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,yBAAyB;IACzB,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,oCAAoC;IACpC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,wBAAwB;IACxB,aAAa,EAAE,MAAM,IAAI,CAAC;CAC1B;AAMD,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG;IACpD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,KAAK,EAAE,OAAO,CAAC;CACf,CAeA;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,uBAAuB,EAChC,SAAS,EAAE,oBAAoB,GAC7B,IAAI,CA4CN;AAED,MAAM,WAAW,iBAAiB;IACjC,4BAA4B;IAC5B,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,0BAA0B;IAC1B,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,gCAAgC;IAChC,kBAAkB,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,uBAAuB,EAChC,IAAI,EAAE,iBAAiB,GACrB,IAAI,CAsBN"}
|