From b655389500f12d6ed5317a3674620529b2249a48 Mon Sep 17 00:00:00 2001 From: "liumingyao.marvin" Date: Sun, 16 Aug 2026 17:47:34 +0800 Subject: [PATCH] fix(sdk): skip plugin code during agent discovery --- sdk/src/__tests__/load-agents.test.ts | 18 ++++++++++++++++++ sdk/src/agents/load-agents.ts | 1 + 2 files changed, 19 insertions(+) diff --git a/sdk/src/__tests__/load-agents.test.ts b/sdk/src/__tests__/load-agents.test.ts index 3eea6cc22e..fc74880afc 100644 --- a/sdk/src/__tests__/load-agents.test.ts +++ b/sdk/src/__tests__/load-agents.test.ts @@ -271,6 +271,24 @@ describe('loadLocalAgents', () => { expect(result['real-agent']).toBeDefined() }) + test('does not execute nested MCP implementation files', async () => { + const mcpBinDir = path.join(agentsDir, 'plugins', 'example', 'mcp', 'bin') + const executionMarker = path.join(tempDir, 'mcp-module-executed') + mkdirSync(mcpBinDir, { recursive: true }) + writeAgentFile( + mcpBinDir, + 'mcp-proxy.cjs', + ` + require('fs').writeFileSync(${JSON.stringify(executionMarker)}, 'executed') + module.exports = {} + `, + ) + + await loadLocalAgents({ agentsPath: agentsDir }) + + expect(existsSync(executionMarker)).toBe(false) + }) + test('loads valid agent definitions that use shorthand required fields', async () => { mkdirSync(agentsDir, { recursive: true }) writeAgentFile( diff --git a/sdk/src/agents/load-agents.ts b/sdk/src/agents/load-agents.ts index b21985ec31..37131d09e3 100644 --- a/sdk/src/agents/load-agents.ts +++ b/sdk/src/agents/load-agents.ts @@ -111,6 +111,7 @@ const agentFileExtensions = new Set(['.ts', '.tsx', '.js', '.mjs', '.cjs']) const shouldSkipAgentDirectory = (name: string): boolean => name.startsWith('.') || name === 'node_modules' || + name === 'plugins' || name === 'scripts' || name === 'skills' || name.startsWith('skills-')