From 16553f3c36742c6e0d81b2a2d5ea82e384fe784c Mon Sep 17 00:00:00 2001 From: Viktorplus <36795799+viktorplus@users.noreply.github.com> Date: Sat, 6 Jun 2026 14:45:27 +0200 Subject: [PATCH] test(03-03): assert Kimi agent tool mapper wiring - verify generated YAML emits Kimi module paths - assert raw Claude and MCP tool names stay excluded --- tests/kimi-agent-converter.test.cjs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/kimi-agent-converter.test.cjs b/tests/kimi-agent-converter.test.cjs index e7cdb5bda..46bb4751c 100644 --- a/tests/kimi-agent-converter.test.cjs +++ b/tests/kimi-agent-converter.test.cjs @@ -65,6 +65,11 @@ describe('buildKimiAgentArtifacts', () => { assert.ok(result.root.yaml.includes('system_prompt_path: ./gsd.md'), 'root prompt path is relative'); assert.ok(result.root.yaml.includes('tools:'), 'root YAML has a tools field'); assert.ok(result.root.yaml.includes('kimi_cli.tools.agent:Agent'), 'root can call Kimi subagents'); + assert.ok( + result.root.yaml.includes('kimi_cli.tools.agent:Agent'), + 'root tools use Kimi module paths' + ); + assert.ok(!result.root.yaml.includes('- Agent'), 'root YAML does not emit raw Claude Agent tool'); assert.ok(result.root.yaml.includes('subagents:'), 'root YAML declares custom subagents'); assert.ok(result.root.yaml.includes('gsd-executor:'), 'known GSD subagent key is canonical'); assert.ok( @@ -89,6 +94,15 @@ describe('buildKimiAgentArtifacts', () => { assert.equal(executor.yamlPath, 'agents/subagents/gsd-executor.yaml'); assert.equal(executor.promptPath, 'agents/subagents/gsd-executor.md'); assert.ok(executor.yaml.includes('system_prompt_path: ./gsd-executor.md')); + assert.ok(executor.yaml.includes('kimi_cli.tools.file:ReadFile'), 'Read maps to Kimi file tool'); + assert.ok(executor.yaml.includes('kimi_cli.tools.file:WriteFile'), 'Write maps to Kimi file tool'); + assert.ok(executor.yaml.includes('kimi_cli.tools.file:StrReplaceFile'), 'Edit maps to Kimi file tool'); + assert.ok(executor.yaml.includes('kimi_cli.tools.shell:Shell'), 'Bash maps to Kimi shell tool'); + assert.ok(executor.yaml.includes('kimi_cli.tools.file:Grep'), 'Grep maps to Kimi grep tool'); + assert.ok(executor.yaml.includes('kimi_cli.tools.file:Glob'), 'Glob maps to Kimi glob tool'); + assert.ok(!executor.yaml.includes('- Read'), 'subagent YAML does not emit raw Claude Read tool'); + assert.ok(!executor.yaml.includes('- Bash'), 'subagent YAML does not emit raw Claude Bash tool'); + assert.ok(!executor.yaml.includes('kimi_cli.tools.agent:Agent'), 'subagent does not inherit nested Agent tool'); for (const prompt of [result.root.prompt, executor.prompt]) { assert.ok(!prompt.trimStart().startsWith('---'), 'source frontmatter is removed'); @@ -127,10 +141,18 @@ describe('buildKimiAgentArtifacts', () => { result.diagnostics.some((item) => item.code === 'kimi_mcp_tool_excluded'), 'MCP-managed tools are diagnosed and excluded' ); + assert.ok( + result.diagnostics.some((item) => item.reason === 'mcp_managed'), + 'MCP diagnostics expose mapper reason' + ); assert.ok( result.diagnostics.some((item) => item.code === 'kimi_unsupported_tool'), 'unsupported tools are diagnosed and excluded' ); + assert.ok( + result.diagnostics.some((item) => item.reason === 'unsupported_tool'), + 'unsupported diagnostics expose mapper reason' + ); assert.ok(!result.root.yaml.includes('mcp__github__search'), 'MCP tool names are not emitted'); assert.ok(!result.root.yaml.includes('DefinitelyUnknownTool'), 'unsupported tool names are not emitted'); });