fix(trust): Update config.isTrustedFolder (#7373)

This commit is contained in:
shrutip90
2025-08-28 19:41:33 -07:00
committed by GitHub
parent 9037f25df7
commit 2a0e69d833
11 changed files with 67 additions and 135 deletions

View File

@@ -55,33 +55,6 @@ describe('McpClientManager', () => {
expect(mockedMcpClient.discover).toHaveBeenCalledOnce();
});
it('should discover tools if isTrustedFolder is undefined', async () => {
const mockedMcpClient = {
connect: vi.fn(),
discover: vi.fn(),
disconnect: vi.fn(),
getStatus: vi.fn(),
};
vi.mocked(McpClient).mockReturnValue(
mockedMcpClient as unknown as McpClient,
);
const manager = new McpClientManager(
{
'test-server': {},
},
'',
{} as ToolRegistry,
{} as PromptRegistry,
false,
{} as WorkspaceContext,
);
await manager.discoverAllMcpTools({
isTrustedFolder: () => undefined,
} as unknown as Config);
expect(mockedMcpClient.connect).toHaveBeenCalledOnce();
expect(mockedMcpClient.discover).toHaveBeenCalledOnce();
});
it('should not discover tools if folder is not trusted', async () => {
const mockedMcpClient = {
connect: vi.fn(),

View File

@@ -56,7 +56,7 @@ export class McpClientManager {
* them with the `ToolRegistry`.
*/
async discoverAllMcpTools(cliConfig: Config): Promise<void> {
if (cliConfig.isTrustedFolder() === false) {
if (!cliConfig.isTrustedFolder()) {
return;
}
await this.stop();

View File

@@ -598,6 +598,8 @@ describe('DiscoveredMCPTool', () => {
inputSchema,
undefined,
true,
undefined,
{ isTrustedFolder: () => true } as any,
);
const invocation = trustedTool.build({ param: 'mock' });
expect(
@@ -809,25 +811,6 @@ describe('DiscoveredMCPTool', () => {
expect(confirmation).not.toBe(false);
expect(confirmation).toHaveProperty('type', 'mcp');
});
it('should return false if trust is true and folder trust is undefined', async () => {
// The check is `isTrustedFolder() !== false`, so `undefined` should pass
const trustedTool = new DiscoveredMCPTool(
mockCallableToolInstance,
serverName,
serverToolName,
baseDescription,
inputSchema,
undefined,
true, // trust = true
undefined,
mockConfig(undefined) as any, // isTrustedFolder = undefined
);
const invocation = trustedTool.build({ param: 'mock' });
expect(
await invocation.shouldConfirmExecute(new AbortController().signal),
).toBe(false);
});
});
describe('DiscoveredMCPToolInvocation', () => {

View File

@@ -82,9 +82,7 @@ class DiscoveredMCPToolInvocation extends BaseToolInvocation<
const serverAllowListKey = this.serverName;
const toolAllowListKey = `${this.serverName}.${this.serverToolName}`;
const isTrustedFolder = this.cliConfig?.isTrustedFolder() !== false;
if (this.trust && isTrustedFolder) {
if (this.cliConfig?.isTrustedFolder() && this.trust) {
return false; // server is trusted, no confirmation needed
}