fix(core): reduce intrusive MCP errors and deduplicate diagnostics (#20232)

This commit is contained in:
Spencer
2026-02-27 15:04:36 -05:00
committed by GitHub
parent 6a0f4d3bdd
commit 20d884da2f
20 changed files with 626 additions and 191 deletions
+29 -1
View File
@@ -367,6 +367,7 @@ import {
SimpleExtensionLoader,
} from '../utils/extensionLoader.js';
import { McpClientManager } from '../tools/mcp-client-manager.js';
import { type McpContext } from '../tools/mcp-client.js';
import type { EnvironmentSanitizationConfig } from '../services/environmentSanitization.js';
import { getErrorMessage } from '../utils/errors.js';
import {
@@ -580,7 +581,7 @@ export interface ConfigParameters {
};
}
export class Config {
export class Config implements McpContext {
private toolRegistry!: ToolRegistry;
private mcpClientManager?: McpClientManager;
private allowedMcpServers: string[];
@@ -1769,6 +1770,33 @@ export class Config {
return this.mcpClientManager;
}
setUserInteractedWithMcp(): void {
this.mcpClientManager?.setUserInteractedWithMcp();
}
/** @deprecated Use getMcpClientManager().getLastError() directly */
getLastMcpError(serverName: string): string | undefined {
return this.mcpClientManager?.getLastError(serverName);
}
emitMcpDiagnostic(
severity: 'info' | 'warning' | 'error',
message: string,
error?: unknown,
serverName?: string,
): void {
if (this.mcpClientManager) {
this.mcpClientManager.emitDiagnostic(
severity,
message,
error,
serverName,
);
} else {
coreEvents.emitFeedback(severity, message, error);
}
}
getAllowedMcpServers(): string[] | undefined {
return this.allowedMcpServers;
}