From d365bc59d62382f9d6eefb237bb73d7c5834a43b Mon Sep 17 00:00:00 2001 From: saravanakumardb1 Date: Thu, 5 Mar 2026 22:37:53 -0800 Subject: [PATCH] refactor(mcp-server): tighten MCP tool typing after review --- .../src/modules/dev/changelog-tools.ts | 29 +++++++++++++++---- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/services/mcp-server/src/modules/dev/changelog-tools.ts b/services/mcp-server/src/modules/dev/changelog-tools.ts index b10d28e1..06e19b8a 100644 --- a/services/mcp-server/src/modules/dev/changelog-tools.ts +++ b/services/mcp-server/src/modules/dev/changelog-tools.ts @@ -2,6 +2,23 @@ import { z } from 'zod'; import { registerTool } from '../tools/registry.js'; import { platformFetch } from '../../lib/platform-client.js'; +type CommitFile = { + path: string; + additions: number; + deletions: number; +}; + +type ChangelogCommit = { + sha: string; + message: string; + author: string; + date: string; + prNumber?: number; + prTitle?: string; + prBody?: string; + files: CommitFile[]; +}; + registerTool({ name: 'changelog.generate', description: @@ -117,13 +134,13 @@ registerTool({ }; const categorized = commitsResponse.commits.reduce( - (acc: Record, commit: any) => { + (acc: Record, commit: ChangelogCommit) => { const category = categorizeCommit(commit.message, commit.files); if (!acc[category]) acc[category] = []; acc[category].push(commit); return acc; }, - {} as Record + {} as Record ); // Step 4: Generate changelog content @@ -179,7 +196,7 @@ registerTool({ md += `## ${categoryEmojis[category]} ${category.charAt(0).toUpperCase() + category.slice(1)} (${commits.length})\n\n`; - commits.forEach((commit: any) => { + commits.forEach((commit: ChangelogCommit) => { md += `### ${commit.prTitle || commit.message.split('\n')[0]}\n\n`; md += `**Commit:** \`${commit.sha.substring(0, 7)}\`\n`; md += `**Author:** ${commit.author}\n`; @@ -190,15 +207,15 @@ registerTool({ } const totalChanges = commit.files.reduce( - (sum: number, file: any) => sum + file.additions + file.deletions, + (sum: number, file: CommitFile) => sum + file.additions + file.deletions, 0 ); - md += `**Changes:** +${commit.files.reduce((sum: number, f: any) => sum + f.additions, 0)} -${commit.files.reduce((sum: number, f: any) => sum + f.deletions, 0)} (${totalChanges} total)\n`; + md += `**Changes:** +${commit.files.reduce((sum: number, f: CommitFile) => sum + f.additions, 0)} -${commit.files.reduce((sum: number, f: CommitFile) => sum + f.deletions, 0)} (${totalChanges} total)\n`; // List modified files (limit to 10) const modifiedFiles = commit.files .slice(0, 10) - .map((f: any) => f.path) + .map((f: CommitFile) => f.path) .join(', '); md += `**Files:** ${modifiedFiles}${commit.files.length > 10 ? '...' : ''}\n`;