diff --git a/CHANGELOG.md b/CHANGELOG.md index 5595e8d..05e6405 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 0.10.23 (Preview) + +### Changed +- **Renamed package to Microsoft.AITools.BinlogMcp** — all install, update, detection, and documentation references updated to the new NuGet package ID. + ## 0.10.22 (Preview) ### Fixed @@ -8,17 +13,17 @@ ## 0.10.21 (Preview) ### Changed -- **Switched NuGet feed from dotnet-eng to dotnet-tools** — the AITools.BinlogMcp package is now published on the `dotnet-tools` feed. All install, update, and version resolution commands updated automatically. +- **Switched NuGet feed from dotnet-eng to dotnet-tools** — the Microsoft.AITools.BinlogMcp package is now published on the `dotnet-tools` feed. All install, update, and version resolution commands updated automatically. ## 0.10.20 (Preview) ### Fixed -- **Auto-migration runs on activation** — migration from BinlogInsights.Mcp to AITools.BinlogMcp now triggers immediately when the extension starts, not only when a binlog is loaded +- **Auto-migration runs on activation** — migration from BinlogInsights.Mcp to Microsoft.AITools.BinlogMcp now triggers immediately when the extension starts, not only when a binlog is loaded ## 0.10.19 (Preview) ### Changed -- **Switched MCP server to AITools.BinlogMcp** — the extension now uses [AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-tools/NuGet/AITools.BinlogMcp) from the dotnet-tools feed instead of BinlogInsights.Mcp from nuget.org. The new package is auto-installed on first use. Existing BinlogInsights.Mcp installations are automatically migrated — the extension installs the new tool and prompts to uninstall the old one. +- **Switched MCP server to Microsoft.AITools.BinlogMcp** — the extension now uses [Microsoft.AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-tools/NuGet/Microsoft.AITools.BinlogMcp) from the dotnet-tools feed instead of BinlogInsights.Mcp from nuget.org. The new package is auto-installed on first use. Existing BinlogInsights.Mcp installations are automatically migrated — the extension installs the new tool and prompts to uninstall the old one. - **Consistent project count** — the overview and tree view now show the same deduplicated project count instead of the raw evaluation count - **Search with text format** — search results from the new MCP's text format are parsed correctly for the tree view diff --git a/README.md b/README.md index b3e639c..5a3d765 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Analyze MSBuild binary logs (`.binlog`) with **GitHub Copilot Chat** and **MCP t @binlog /perf ``` -The [AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-tools/NuGet/AITools.BinlogMcp) server (28 analysis tools) is auto-installed on first use. +The [Microsoft.AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-tools/NuGet/Microsoft.AITools.BinlogMcp) server (28 analysis tools) is auto-installed on first use. ## What You Get @@ -32,7 +32,7 @@ The [AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotn | **Fix All Issues** | Copilot fixes all build errors/warnings, rebuilds, and loads before/after for comparison | | **Auto-fix Diagnostic** | Right-click any error/warning in the tree → "Auto-fix with Copilot" to fix it directly | | **Optimize Build** | Pick optimizations, Copilot applies changes, verify with A/B comparison | -| **Build Analysis Mode** | Chat mode pre-configured with AITools.BinlogMcp MCP tools — works with any agent | +| **Build Analysis Mode** | Chat mode pre-configured with Microsoft.AITools.BinlogMcp MCP tools — works with any agent | | **Language Model Tools** | `binlog_lm_overview`, `binlog_lm_errors`, `binlog_lm_search`, `binlog_lm_perf`, `binlog_lm_compare` — available to @workspace, agent mode, and custom chat modes | | **CI/CD Integration** | Download binlogs from Azure DevOps Pipelines and GitHub Actions — filter by branch or PR | | **Problems Panel** | Build diagnostics as native VS Code errors/warnings with per-project CodeLens and "Ask @binlog" CodeActions | @@ -52,12 +52,12 @@ The [AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotn ## Troubleshooting: MCP Server Installation -The extension auto-installs [AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-tools/NuGet/AITools.BinlogMcp) via `dotnet tool install -g`. In corporate environments with restricted NuGet feeds, this may fail. Here are the workarounds: +The extension auto-installs [Microsoft.AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-tools/NuGet/Microsoft.AITools.BinlogMcp) via `dotnet tool install -g`. In corporate environments with restricted NuGet feeds, this may fail. Here are the workarounds: ### 1. Install with explicit feed source ```bash -dotnet tool install -g AITools.BinlogMcp --prerelease --add-source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json +dotnet tool install -g Microsoft.AITools.BinlogMcp --prerelease --add-source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json ``` ### 2. Diagnose NuGet issues @@ -74,14 +74,14 @@ Common problems: ### 3. Verify installation ```bash -dotnet tool list -g | Select-String AITools.BinlogMcp +dotnet tool list -g | Select-String Microsoft.AITools.BinlogMcp binlog-mcp --help ``` ## Related Projects - [MSBuild Structured Log Viewer](https://github.com/KirillOsenkov/MSBuildStructuredLog) — WPF viewer with secrets redaction -- [AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-tools/NuGet/AITools.BinlogMcp) — MCP server for binlog analysis +- [Microsoft.AITools.BinlogMcp](https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-tools/NuGet/Microsoft.AITools.BinlogMcp) — MCP server for binlog analysis - [MSBuild Binary Log docs](https://learn.microsoft.com/en-us/visualstudio/msbuild/obtaining-build-logs-with-msbuild#save-a-binary-log) ## License diff --git a/package-lock.json b/package-lock.json index 52b1d5c..9fae88b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "binlog-analyzer", - "version": "0.10.18", + "version": "0.10.23", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "binlog-analyzer", - "version": "0.10.18", + "version": "0.10.23", "license": "MIT", "dependencies": { "@vscode/extension-telemetry": "^0.9.0" diff --git a/package.json b/package.json index f11cbba..bf839ab 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "binlog-analyzer", "displayName": "MSBuild Binlog Analyzer", "description": "Analyze MSBuild binary logs with Copilot Chat and MCP tools", - "version": "0.10.22", + "version": "0.10.23", "preview": true, "publisher": "dotutils", "license": "MIT", @@ -247,12 +247,12 @@ "binlogAnalyzer.mcpServerPath": { "type": "string", "default": "", - "description": "Custom path to the MCP server dotnet tool (AITools.BinlogMcp). Leave empty to use the globally installed tool." + "description": "Custom path to the MCP server dotnet tool (Microsoft.AITools.BinlogMcp). Leave empty to use the globally installed tool." }, "binlogAnalyzer.mcpServerArgs": { "type": "string", "default": "--binlog ${binlog}", - "markdownDescription": "Argument template for the MCP server. Use `${binlog}` as a placeholder for each binlog path. Repeated for each loaded binlog. Examples:\n- AITools.BinlogMcp: `--binlog ${binlog}` (default)\n- Custom: `--file ${binlog}`" + "markdownDescription": "Argument template for the MCP server. Use `${binlog}` as a placeholder for each binlog path. Repeated for each loaded binlog. Examples:\n- Microsoft.AITools.BinlogMcp: `--binlog ${binlog}` (default)\n- Custom: `--file ${binlog}`" }, "binlogAnalyzer.autoLoad": { "type": "boolean", @@ -520,14 +520,14 @@ { "slug": "build-analysis", "name": "Build Analysis", - "description": "Pre-configured for MSBuild binlog investigation with AITools.BinlogMcp MCP tools.", + "description": "Pre-configured for MSBuild binlog investigation with Microsoft.AITools.BinlogMcp MCP tools.", "toolsReferences": [ { "type": "tool", "id": "binlog_insights_mcp" } ], - "systemPrompt": "You are an MSBuild build analysis assistant with AITools.BinlogMcp MCP tools available. Begin investigations with binlog_lm_overview (or binlog_overview) unless the question is narrowly scoped, then drill in with the most specific tool. For performance: rank with binlog_expensive_targets / binlog_expensive_tasks / binlog_expensive_projects / binlog_expensive_analyzers. For errors: binlog_lm_errors (or binlog_errors) then binlog_lm_search (or binlog_search). For deeper context the @binlog chat participant exposes the same tools plus prepared playbooks (try /perf, /incremental, /summary, /errors, /buildcheck). All tools take a binlog_file path parameter — ask the user if you don't know it. Reference real file paths, line numbers and error codes from tool output; don't invent numbers." + "systemPrompt": "You are an MSBuild build analysis assistant with Microsoft.AITools.BinlogMcp MCP tools available. Begin investigations with binlog_lm_overview (or binlog_overview) unless the question is narrowly scoped, then drill in with the most specific tool. For performance: rank with binlog_expensive_targets / binlog_expensive_tasks / binlog_expensive_projects / binlog_expensive_analyzers. For errors: binlog_lm_errors (or binlog_errors) then binlog_lm_search (or binlog_search). For deeper context the @binlog chat participant exposes the same tools plus prepared playbooks (try /perf, /incremental, /summary, /errors, /buildcheck). All tools take a binlog_file path parameter — ask the user if you don't know it. Reference real file paths, line numbers and error codes from tool output; don't invent numbers." } ], "menus": { diff --git a/resources/playbooks/core.md b/resources/playbooks/core.md index f9eaf1d..4d22651 100644 --- a/resources/playbooks/core.md +++ b/resources/playbooks/core.md @@ -1,4 +1,4 @@ -You are an MSBuild build analysis assistant embedded in VS Code. The user has loaded one or more `.binlog` files (binary build logs) and you have AITools.BinlogMcp MCP tools available to inspect them. +You are an MSBuild build analysis assistant embedded in VS Code. The user has loaded one or more `.binlog` files (binary build logs) and you have Microsoft.AITools.BinlogMcp MCP tools available to inspect them. Workflow contract: - Act on the user's request immediately. Do not ask the user for permission, do not ask "would you like me to…", do not echo the request back. Just call the right tool. diff --git a/src/binlogDocumentProvider.ts b/src/binlogDocumentProvider.ts index 6d83061..05de482 100644 --- a/src/binlogDocumentProvider.ts +++ b/src/binlogDocumentProvider.ts @@ -119,12 +119,12 @@ export class BinlogDocumentProvider implements vscode.TextDocumentContentProvide // Build overview try { const overviewResult = await this.call('binlog_overview', {}, binlogPath); - // Handle both JSON (BinlogInsights) and text (AITools.BinlogMcp) formats + // Handle both JSON (BinlogInsights) and text (Microsoft.AITools.BinlogMcp) formats let ov: any; try { ov = JSON.parse(overviewResult.text); } catch { - // AITools.BinlogMcp returns human-readable text — parse it + // Microsoft.AITools.BinlogMcp returns human-readable text — parse it const text = overviewResult.text; ov = { succeeded: /SUCCEEDED/i.test(text), diff --git a/src/binlogTreeView.ts b/src/binlogTreeView.ts index 4d8e18e..d0ba1ef 100644 --- a/src/binlogTreeView.ts +++ b/src/binlogTreeView.ts @@ -929,7 +929,7 @@ export class BinlogTreeDataProvider implements vscode.TreeDataProvider { if (sel === 'Copy Command') { - vscode.env.clipboard.writeText('dotnet tool install -g AITools.BinlogMcp --prerelease --add-source ' + DOTNET_TOOLS_FEED); + vscode.env.clipboard.writeText('dotnet tool install -g Microsoft.AITools.BinlogMcp --prerelease --add-source ' + DOTNET_TOOLS_FEED); } }); } @@ -2206,14 +2206,14 @@ async function writeUserMcpJson(serverConfig: Record) { } catch { /* non-fatal */ } } -const NUGET_PACKAGE_ID = 'AITools.BinlogMcp'; +const NUGET_PACKAGE_ID = 'Microsoft.AITools.BinlogMcp'; /** Checks whether a server config entry refers to the binlog MCP server. */ function serverMatchesBinlogMcp(s: any): boolean { const cmd = typeof s?.command === 'string' ? s.command : ''; const args: string[] = Array.isArray(s?.args) ? s.args : []; const combined = [cmd, ...args].join(' ').toLowerCase(); - return combined.includes('binlog-mcp') || combined.includes('binloginsights.mcp') || combined.includes('aitools.binlogmcp'); + return combined.includes('binlog-mcp') || combined.includes('binloginsights.mcp') || combined.includes('microsoft.aitools.binlogmcp'); } /** Returns paths to mcp.json files that define the binlog-insights server. */ @@ -2272,21 +2272,21 @@ async function fetchAboutInfo(mode: 'interactive' | 'auto' | 'silent') { if ((mode === 'interactive' || mode === 'auto') && updateAvailable) { const choice = await vscode.window.showInformationMessage( - `AITools.BinlogMcp update available: v${version} → v${latestVersion}`, + `Microsoft.AITools.BinlogMcp update available: v${version} → v${latestVersion}`, 'Update Now' ); if (choice === 'Update Now') { await updateMcpServer(); } } else if (mode === 'interactive' && !updateAvailable && version) { - vscode.window.showInformationMessage(`AITools.BinlogMcp v${version} is up to date.`); + vscode.window.showInformationMessage(`Microsoft.AITools.BinlogMcp v${version} is up to date.`); } } async function getInstalledMcpVersion(toolPath: string): Promise { // Primary: read version from the .store directory (works for all versions, even old ones without --version) try { - for (const storeId of ['aitools.binlogmcp', 'binloginsights.mcp']) { + for (const storeId of ['Microsoft.AITools.BinlogMcp', 'binloginsights.mcp']) { const storeDir = path.join(os.homedir(), '.dotnet', 'tools', '.store', storeId); if (fs.existsSync(storeDir)) { const versions = fs.readdirSync(storeDir).filter(d => /^\d+\.\d+\.\d+/.test(d)); @@ -2364,16 +2364,16 @@ async function updateMcpServer() { // No binlog loaded — no MCP server running from our extension, try direct update const cp = require('child_process'); const result = await vscode.window.withProgress( - { location: vscode.ProgressLocation.Notification, title: 'Updating AITools.BinlogMcp MCP server...' }, + { location: vscode.ProgressLocation.Notification, title: 'Updating Microsoft.AITools.BinlogMcp MCP server...' }, () => new Promise<{ success: boolean; output: string }>((resolve) => { - cp.execFile('dotnet', ['tool', 'update', '-g', 'AITools.BinlogMcp', '--prerelease', '--add-source', DOTNET_TOOLS_FEED], { timeout: 60000 }, (err: Error | null, stdout: string, stderr: string) => { + cp.execFile('dotnet', ['tool', 'update', '-g', 'Microsoft.AITools.BinlogMcp', '--prerelease', '--add-source', DOTNET_TOOLS_FEED], { timeout: 60000 }, (err: Error | null, stdout: string, stderr: string) => { resolve({ success: !err, output: (stderr || stdout || '').toString() }); }); }) ); cachedMcpExePath = undefined; if (result.success) { - vscode.window.showInformationMessage('AITools.BinlogMcp MCP server updated successfully.'); + vscode.window.showInformationMessage('Microsoft.AITools.BinlogMcp MCP server updated successfully.'); await fetchAboutInfo('silent'); } else { vscode.window.showErrorMessage(`Failed to update: ${result.output.substring(0, 200)}`); @@ -2404,9 +2404,9 @@ async function applyPendingToolUpdate(): Promise { const cp = require('child_process'); const result = await vscode.window.withProgress( - { location: vscode.ProgressLocation.Notification, title: 'Updating AITools.BinlogMcp MCP server...' }, + { location: vscode.ProgressLocation.Notification, title: 'Updating Microsoft.AITools.BinlogMcp MCP server...' }, () => new Promise<{ success: boolean; output: string }>((resolve) => { - cp.execFile('dotnet', ['tool', 'update', '-g', 'AITools.BinlogMcp', '--prerelease', '--add-source', DOTNET_TOOLS_FEED], { timeout: 60000 }, (err: Error | null, stdout: string, stderr: string) => { + cp.execFile('dotnet', ['tool', 'update', '-g', 'Microsoft.AITools.BinlogMcp', '--prerelease', '--add-source', DOTNET_TOOLS_FEED], { timeout: 60000 }, (err: Error | null, stdout: string, stderr: string) => { resolve({ success: !err, output: (stderr || stdout || '').toString() }); }); }) @@ -2416,47 +2416,83 @@ async function applyPendingToolUpdate(): Promise { // or we clear it below if there are no binlogs to restore. cachedMcpExePath = undefined; if (result.success) { - vscode.window.showInformationMessage('AITools.BinlogMcp MCP server updated successfully.'); + vscode.window.showInformationMessage('Microsoft.AITools.BinlogMcp MCP server updated successfully.'); } else { - vscode.window.showErrorMessage(`Failed to update AITools.BinlogMcp: ${result.output.substring(0, 200)}`); + vscode.window.showErrorMessage(`Failed to update Microsoft.AITools.BinlogMcp: ${result.output.substring(0, 200)}`); } } /** - * Auto-migrate from BinlogInsights.Mcp to AITools.BinlogMcp. + * Auto-migrate from BinlogInsights.Mcp or old AITools.BinlogMcp to Microsoft.AITools.BinlogMcp. * Runs once on extension activation when updating from a previous version. - * If the old tool is found but the new one isn't, installs the new one - * and prompts the user to uninstall the old one. + * If an old tool is found, installs the new one and prompts the user to + * uninstall the old one. */ async function migrateToNewMcpTool(): Promise { const isWindows = process.platform === 'win32'; - const oldExe = path.join(os.homedir(), '.dotnet', 'tools', isWindows ? 'binlog-insights-mcp.exe' : 'binlog-insights-mcp'); const newExe = path.join(os.homedir(), '.dotnet', 'tools', isWindows ? 'binlog-mcp.exe' : 'binlog-mcp'); - // Only migrate if old tool exists but new one doesn't - if (!fs.existsSync(oldExe) || fs.existsSync(newExe)) { return; } + // Check if the new package is already installed by querying dotnet tool list + // (both old AITools.BinlogMcp and new Microsoft.AITools.BinlogMcp produce binlog-mcp.exe, + // so we need to check the package ID, not just the executable) + const oldPackageInstalled = await isToolInstalled('aitools.binlogmcp'); + const newPackageInstalled = await isToolInstalled('microsoft.aitools.binlogmcp'); + + // Migrate from BinlogInsights.Mcp (oldest) + const oldInsightsExe = path.join(os.homedir(), '.dotnet', 'tools', isWindows ? 'binlog-insights-mcp.exe' : 'binlog-insights-mcp'); + if (fs.existsSync(oldInsightsExe) && !newPackageInstalled) { + const migrated = await installMcpTool(); + if (migrated) { + cachedMcpExePath = migrated; + vscode.window.showInformationMessage( + '🔄 Migrated from BinlogInsights.Mcp to Microsoft.AITools.BinlogMcp. You can uninstall the old tool: `dotnet tool uninstall -g BinlogInsights.Mcp`', + 'Copy Command' + ).then(sel => { + if (sel === 'Copy Command') { + vscode.env.clipboard.writeText('dotnet tool uninstall -g BinlogInsights.Mcp'); + } + }); + } + return; + } - const migrated = await installMcpTool(); - if (migrated) { - cachedMcpExePath = migrated; - vscode.window.showInformationMessage( - '🔄 Migrated from BinlogInsights.Mcp to AITools.BinlogMcp. You can uninstall the old tool: `dotnet tool uninstall -g BinlogInsights.Mcp`', - 'Copy Command' - ).then(sel => { - if (sel === 'Copy Command') { - vscode.env.clipboard.writeText('dotnet tool uninstall -g BinlogInsights.Mcp'); - } + // Migrate from old AITools.BinlogMcp → Microsoft.AITools.BinlogMcp + if (oldPackageInstalled && !newPackageInstalled) { + // Uninstall old, install new (both produce the same binlog-mcp executable) + const cp = require('child_process'); + await new Promise((resolve) => { + cp.execFile('dotnet', ['tool', 'uninstall', '-g', 'AITools.BinlogMcp'], { timeout: 30000 }, () => { + resolve(); // ignore errors — may already be partially uninstalled + }); }); + const migrated = await installMcpTool(); + if (migrated) { + cachedMcpExePath = migrated; + vscode.window.showInformationMessage( + '🔄 Migrated from AITools.BinlogMcp to Microsoft.AITools.BinlogMcp.' + ); + } } } +/** Check if a dotnet tool is globally installed by package ID */ +function isToolInstalled(packageId: string): Promise { + const cp = require('child_process'); + return new Promise((resolve) => { + cp.execFile('dotnet', ['tool', 'list', '-g'], { timeout: 15000 }, (err: Error | null, stdout: string) => { + if (err) { resolve(false); return; } + resolve(stdout.toLowerCase().includes(packageId.toLowerCase())); + }); + }); +} + function findMcpTool(): string | null { if (cachedMcpExePath !== undefined) { return cachedMcpExePath; } const homeDir = os.homedir(); const isWindows = process.platform === 'win32'; - // Look for both the new (AITools.BinlogMcp → binlog-mcp) and old + // Look for both the new (Microsoft.AITools.BinlogMcp → binlog-mcp) and old // (BinlogInsights.Mcp → binlog-insights-mcp) executables so existing // users aren't broken on upgrade. const candidates = isWindows @@ -2496,11 +2532,11 @@ async function installMcpTool(): Promise { cachedMcpExePath = undefined; // Reset cache so findMcpTool re-scans after install const cp = require('child_process'); const result = await vscode.window.withProgress( - { location: vscode.ProgressLocation.Notification, title: 'Installing AITools.BinlogMcp MCP server (dotnet tool)...' }, + { location: vscode.ProgressLocation.Notification, title: 'Installing Microsoft.AITools.BinlogMcp MCP server (dotnet tool)...' }, () => new Promise((resolve) => { - cp.execFile('dotnet', ['tool', 'install', '-g', 'AITools.BinlogMcp', '--prerelease', '--add-source', DOTNET_TOOLS_FEED], { timeout: 60000 }, (err: Error | null) => { + cp.execFile('dotnet', ['tool', 'install', '-g', 'Microsoft.AITools.BinlogMcp', '--prerelease', '--add-source', DOTNET_TOOLS_FEED], { timeout: 60000 }, (err: Error | null) => { if (err) { - cp.execFile('dotnet', ['tool', 'update', '-g', 'AITools.BinlogMcp', '--prerelease', '--add-source', DOTNET_TOOLS_FEED], { timeout: 60000 }, () => { + cp.execFile('dotnet', ['tool', 'update', '-g', 'Microsoft.AITools.BinlogMcp', '--prerelease', '--add-source', DOTNET_TOOLS_FEED], { timeout: 60000 }, () => { const exe = findMcpTool(); telemetry.trackToolInstall(!!exe); resolve(exe); @@ -2509,7 +2545,7 @@ async function installMcpTool(): Promise { const exe = findMcpTool(); telemetry.trackToolInstall(!!exe); if (exe) { - vscode.window.showInformationMessage('✅ AITools.BinlogMcp MCP server installed successfully.'); + vscode.window.showInformationMessage('✅ Microsoft.AITools.BinlogMcp MCP server installed successfully.'); } resolve(exe); } @@ -2526,7 +2562,7 @@ function getFileName(filePath: string): string { /** * Parse binlog_search results from either JSON array (BinlogInsights) or - * human-readable text (AITools.BinlogMcp) into a uniform array of objects. + * human-readable text (Microsoft.AITools.BinlogMcp) into a uniform array of objects. */ function parseSearchResults(text: string): any[] { // Try JSON first @@ -2535,7 +2571,7 @@ function parseSearchResults(text: string): any[] { if (Array.isArray(data)) { return data; } } catch { /* not JSON */ } - // Parse AITools.BinlogMcp text format: + // Parse Microsoft.AITools.BinlogMcp text format: // Search 'query': N results // [NodeType] Message text... // Project: file.csproj Target: Name Task: Name diff --git a/src/languageModelTools.ts b/src/languageModelTools.ts index 271a6e6..9625dfe 100644 --- a/src/languageModelTools.ts +++ b/src/languageModelTools.ts @@ -2,7 +2,7 @@ import * as vscode from 'vscode'; import { McpClient } from './mcpClient'; /** - * Bridges AITools.BinlogMcp MCP tools into VS Code's `vscode.lm.tools` registry. + * Bridges Microsoft.AITools.BinlogMcp MCP tools into VS Code's `vscode.lm.tools` registry. * * Why this exists * --------------- diff --git a/src/mcpClient.ts b/src/mcpClient.ts index a73fb68..55fa238 100644 --- a/src/mcpClient.ts +++ b/src/mcpClient.ts @@ -17,7 +17,7 @@ function log(msg: string) { /** * Minimal MCP (Model Context Protocol) clientthat communicates with - * AITools.BinlogMcp over stdio using JSON-RPC 2.0 with newline-delimited JSON. + * Microsoft.AITools.BinlogMcp over stdio using JSON-RPC 2.0 with newline-delimited JSON. * * Emits: * - 'unexpected-exit' when the server process exits unexpectedly (not via dispose())