Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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

Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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 |
Expand All @@ -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
Expand All @@ -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
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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": {
Expand Down
2 changes: 1 addition & 1 deletion resources/playbooks/core.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
4 changes: 2 additions & 2 deletions src/binlogDocumentProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down
4 changes: 2 additions & 2 deletions src/binlogTreeView.ts
Original file line number Diff line number Diff line change
Expand Up @@ -929,7 +929,7 @@ export class BinlogTreeDataProvider implements vscode.TreeDataProvider<BinlogTre
this.extractAnalyzerTiming(msg, entry.nodeType, analyzerMap);
}

// Process text lines (new AITools.BinlogMcp format)
// Process text lines (new Microsoft.AITools.BinlogMcp format)
if (entries.length === 0 && result.text && !result.text.startsWith('No results')) {
for (const line of result.text.split('\n')) {
const msgMatch = line.match(/^\s*\[(\w+)\]\s*(.+)/);
Expand Down Expand Up @@ -1471,7 +1471,7 @@ export class BinlogTreeDataProvider implements vscode.TreeDataProvider<BinlogTre
const data = this.tryParseJson(result.text);
let entries: any[] = Array.isArray(data) ? data : [];

// Parse text format from AITools.BinlogMcp:
// Parse text format from Microsoft.AITools.BinlogMcp:
// Evaluations: N total, showing N (offset 0):
// [id=10] path/to/project.csproj (109ms)
if (entries.length === 0 && result.text && !result.text.startsWith('No ')) {
Expand Down
2 changes: 1 addition & 1 deletion src/chatParticipant.ts
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ export class BinlogChatParticipant {
if (tools.length === 0 && !isBuildCheck) {
stream.markdown(
'⚠️ No binlog MCP tools found. The MCP server may not be running.\n\n' +
'1. Check `dotnet tool list -g` for `AITools.BinlogMcp`\n' +
'1. Check `dotnet tool list -g` for `Microsoft.AITools.BinlogMcp`\n' +
'2. Restart VS Code to reload MCP servers\n',
);
return;
Expand Down
Loading
Loading