Add WebAPI middleware for multi-instance Roslyn Bridge routing

Add RoslynBridge.WebApi - ASP.NET Core 8.0 middleware that:
- Provides a centralized REST API for accessing multiple VS instances
- Manages instance registry with discovery by port, solution, or PID
- Proxies requests to the appropriate VS instance
- Tracks request/response history for debugging
- Auto-cleanup of stale instances via background service

Features:
- Health endpoints: /api/health, /api/health/ping
- Roslyn endpoints: /api/roslyn/projects, /api/roslyn/diagnostics, etc.
- Instance management: /api/instances (register, heartbeat, unregister)
- History tracking: /api/history, /api/history/stats
- Swagger UI at root (/) for API documentation
- CORS enabled for web applications

Services:
- InstanceRegistryService: Thread-safe registry of VS instances
- HistoryService: In-memory request/response history (max 1000 entries)
- InstanceCleanupService: Background service to remove stale instances
- RoslynBridgeClient: HTTP client for proxying to VS instances

Update RoslynBridge.sln to include RoslynBridge.WebApi project.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-10-26 23:51:33 -04:00
parent 716827a665
commit 1cbfba3893
76 changed files with 4322 additions and 0 deletions

Binary file not shown.

View File

@@ -0,0 +1,834 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v8.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v8.0": {
"RoslynBridge.WebApi/1.0.0": {
"dependencies": {
"Microsoft.Extensions.Hosting.WindowsServices": "9.0.10",
"Microsoft.Extensions.Http": "8.0.0",
"Swashbuckle.AspNetCore": "6.6.2"
},
"runtime": {
"RoslynBridge.WebApi.dll": {}
}
},
"Microsoft.Extensions.ApiDescription.Server/6.0.5": {},
"Microsoft.Extensions.Configuration/9.0.10": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.Primitives": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Configuration.Abstractions/9.0.10": {
"dependencies": {
"Microsoft.Extensions.Primitives": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Configuration.Binder/9.0.10": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Configuration.CommandLine/9.0.10": {
"dependencies": {
"Microsoft.Extensions.Configuration": "9.0.10",
"Microsoft.Extensions.Configuration.Abstractions": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Configuration.EnvironmentVariables/9.0.10": {
"dependencies": {
"Microsoft.Extensions.Configuration": "9.0.10",
"Microsoft.Extensions.Configuration.Abstractions": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Configuration.FileExtensions/9.0.10": {
"dependencies": {
"Microsoft.Extensions.Configuration": "9.0.10",
"Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.FileProviders.Abstractions": "9.0.10",
"Microsoft.Extensions.FileProviders.Physical": "9.0.10",
"Microsoft.Extensions.Primitives": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Configuration.Json/9.0.10": {
"dependencies": {
"Microsoft.Extensions.Configuration": "9.0.10",
"Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.Configuration.FileExtensions": "9.0.10",
"Microsoft.Extensions.FileProviders.Abstractions": "9.0.10",
"System.Text.Json": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.Json.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Configuration.UserSecrets/9.0.10": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.Configuration.Json": "9.0.10",
"Microsoft.Extensions.FileProviders.Abstractions": "9.0.10",
"Microsoft.Extensions.FileProviders.Physical": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.DependencyInjection/9.0.10": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions/9.0.10": {
"runtime": {
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Diagnostics/9.0.10": {
"dependencies": {
"Microsoft.Extensions.Configuration": "9.0.10",
"Microsoft.Extensions.Diagnostics.Abstractions": "9.0.10",
"Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Diagnostics.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Diagnostics.Abstractions/9.0.10": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Options": "9.0.10",
"System.Diagnostics.DiagnosticSource": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.FileProviders.Abstractions/9.0.10": {
"dependencies": {
"Microsoft.Extensions.Primitives": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.FileProviders.Physical/9.0.10": {
"dependencies": {
"Microsoft.Extensions.FileProviders.Abstractions": "9.0.10",
"Microsoft.Extensions.FileSystemGlobbing": "9.0.10",
"Microsoft.Extensions.Primitives": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.FileSystemGlobbing/9.0.10": {
"runtime": {
"lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Hosting/9.0.10": {
"dependencies": {
"Microsoft.Extensions.Configuration": "9.0.10",
"Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.Configuration.Binder": "9.0.10",
"Microsoft.Extensions.Configuration.CommandLine": "9.0.10",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "9.0.10",
"Microsoft.Extensions.Configuration.FileExtensions": "9.0.10",
"Microsoft.Extensions.Configuration.Json": "9.0.10",
"Microsoft.Extensions.Configuration.UserSecrets": "9.0.10",
"Microsoft.Extensions.DependencyInjection": "9.0.10",
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Diagnostics": "9.0.10",
"Microsoft.Extensions.FileProviders.Abstractions": "9.0.10",
"Microsoft.Extensions.FileProviders.Physical": "9.0.10",
"Microsoft.Extensions.Hosting.Abstractions": "9.0.10",
"Microsoft.Extensions.Logging": "9.0.10",
"Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"Microsoft.Extensions.Logging.Configuration": "9.0.10",
"Microsoft.Extensions.Logging.Console": "9.0.10",
"Microsoft.Extensions.Logging.Debug": "9.0.10",
"Microsoft.Extensions.Logging.EventLog": "9.0.10",
"Microsoft.Extensions.Logging.EventSource": "9.0.10",
"Microsoft.Extensions.Options": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Hosting.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Hosting.Abstractions/9.0.10": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Diagnostics.Abstractions": "9.0.10",
"Microsoft.Extensions.FileProviders.Abstractions": "9.0.10",
"Microsoft.Extensions.Logging.Abstractions": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Hosting.WindowsServices/9.0.10": {
"dependencies": {
"Microsoft.Extensions.Hosting": "9.0.10",
"Microsoft.Extensions.Logging.EventLog": "9.0.10",
"System.ServiceProcess.ServiceController": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Hosting.WindowsServices.dll": {
"assemblyVersion": "9.0.0.10",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Http/8.0.0": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Diagnostics": "9.0.10",
"Microsoft.Extensions.Logging": "9.0.10",
"Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"Microsoft.Extensions.Options": "9.0.10"
}
},
"Microsoft.Extensions.Logging/9.0.10": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection": "9.0.10",
"Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"Microsoft.Extensions.Options": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Logging.Abstractions/9.0.10": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"System.Diagnostics.DiagnosticSource": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Logging.Configuration/9.0.10": {
"dependencies": {
"Microsoft.Extensions.Configuration": "9.0.10",
"Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.Configuration.Binder": "9.0.10",
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Logging": "9.0.10",
"Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"Microsoft.Extensions.Options": "9.0.10",
"Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Logging.Console/9.0.10": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Logging": "9.0.10",
"Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"Microsoft.Extensions.Logging.Configuration": "9.0.10",
"Microsoft.Extensions.Options": "9.0.10",
"System.Text.Json": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.Console.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Logging.Debug/9.0.10": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Logging": "9.0.10",
"Microsoft.Extensions.Logging.Abstractions": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.Debug.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Logging.EventLog/9.0.10": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Logging": "9.0.10",
"Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"Microsoft.Extensions.Options": "9.0.10",
"System.Diagnostics.EventLog": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Logging.EventSource/9.0.10": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Logging": "9.0.10",
"Microsoft.Extensions.Logging.Abstractions": "9.0.10",
"Microsoft.Extensions.Options": "9.0.10",
"Microsoft.Extensions.Primitives": "9.0.10",
"System.Text.Json": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Options/9.0.10": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Primitives": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Options.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Options.ConfigurationExtensions/9.0.10": {
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "9.0.10",
"Microsoft.Extensions.Configuration.Binder": "9.0.10",
"Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.10",
"Microsoft.Extensions.Options": "9.0.10",
"Microsoft.Extensions.Primitives": "9.0.10"
},
"runtime": {
"lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.Extensions.Primitives/9.0.10": {
"runtime": {
"lib/net8.0/Microsoft.Extensions.Primitives.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"Microsoft.OpenApi/1.6.14": {
"runtime": {
"lib/netstandard2.0/Microsoft.OpenApi.dll": {
"assemblyVersion": "1.6.14.0",
"fileVersion": "1.6.14.0"
}
}
},
"Swashbuckle.AspNetCore/6.6.2": {
"dependencies": {
"Microsoft.Extensions.ApiDescription.Server": "6.0.5",
"Swashbuckle.AspNetCore.Swagger": "6.6.2",
"Swashbuckle.AspNetCore.SwaggerGen": "6.6.2",
"Swashbuckle.AspNetCore.SwaggerUI": "6.6.2"
}
},
"Swashbuckle.AspNetCore.Swagger/6.6.2": {
"dependencies": {
"Microsoft.OpenApi": "1.6.14"
},
"runtime": {
"lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": {
"assemblyVersion": "6.6.2.0",
"fileVersion": "6.6.2.401"
}
}
},
"Swashbuckle.AspNetCore.SwaggerGen/6.6.2": {
"dependencies": {
"Swashbuckle.AspNetCore.Swagger": "6.6.2"
},
"runtime": {
"lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": {
"assemblyVersion": "6.6.2.0",
"fileVersion": "6.6.2.401"
}
}
},
"Swashbuckle.AspNetCore.SwaggerUI/6.6.2": {
"runtime": {
"lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": {
"assemblyVersion": "6.6.2.0",
"fileVersion": "6.6.2.401"
}
}
},
"System.Diagnostics.DiagnosticSource/9.0.10": {
"runtime": {
"lib/net8.0/System.Diagnostics.DiagnosticSource.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"System.Diagnostics.EventLog/9.0.10": {
"runtime": {
"lib/net8.0/System.Diagnostics.EventLog.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
},
"runtimeTargets": {
"runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "9.0.0.0",
"fileVersion": "0.0.0.0"
},
"runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"System.IO.Pipelines/9.0.10": {
"runtime": {
"lib/net8.0/System.IO.Pipelines.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"System.ServiceProcess.ServiceController/9.0.10": {
"dependencies": {
"System.Diagnostics.EventLog": "9.0.10"
},
"runtime": {
"lib/net8.0/System.ServiceProcess.ServiceController.dll": {
"assemblyVersion": "9.0.0.10",
"fileVersion": "9.0.1025.47515"
}
},
"runtimeTargets": {
"runtimes/win/lib/net8.0/System.ServiceProcess.ServiceController.dll": {
"rid": "win",
"assetType": "runtime",
"assemblyVersion": "9.0.0.10",
"fileVersion": "9.0.1025.47515"
}
}
},
"System.Text.Encodings.Web/9.0.10": {
"runtime": {
"lib/net8.0/System.Text.Encodings.Web.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
},
"runtimeTargets": {
"runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": {
"rid": "browser",
"assetType": "runtime",
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
},
"System.Text.Json/9.0.10": {
"dependencies": {
"System.IO.Pipelines": "9.0.10",
"System.Text.Encodings.Web": "9.0.10"
},
"runtime": {
"lib/net8.0/System.Text.Json.dll": {
"assemblyVersion": "9.0.0.0",
"fileVersion": "9.0.1025.47515"
}
}
}
}
},
"libraries": {
"RoslynBridge.WebApi/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"Microsoft.Extensions.ApiDescription.Server/6.0.5": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Ckb5EDBUNJdFWyajfXzUIMRkhf52fHZOQuuZg/oiu8y7zDCVwD0iHhew6MnThjHmevanpxL3f5ci2TtHQEN6bw==",
"path": "microsoft.extensions.apidescription.server/6.0.5",
"hashPath": "microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512"
},
"Microsoft.Extensions.Configuration/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-UAm3SLGAMlJdowbN+/xnh2UGJkdJoXVm4MsdhZ60dAMS8jteoyCx5WfIab5DKv0TCYpdhVecLJVUjEO3abs9UQ==",
"path": "microsoft.extensions.configuration/9.0.10",
"hashPath": "microsoft.extensions.configuration.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Abstractions/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ad3JxmFj0uxuFa1CT6oxTCC1lQ0xeRuOvzBRFT/I/ofIXVOnNsH/v2GZkAJWhlpZqKUvSexQZzp3EEAB2CdtJg==",
"path": "microsoft.extensions.configuration.abstractions/9.0.10",
"hashPath": "microsoft.extensions.configuration.abstractions.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Binder/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-D6Kng+9I+w1SQPxJybc6wzw9nnnyUQPutycjtI0svv1RHaWOpUk9PPlwIRfhhoQZ3yihejkEI2wNv/7VnVtkGA==",
"path": "microsoft.extensions.configuration.binder/9.0.10",
"hashPath": "microsoft.extensions.configuration.binder.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.CommandLine/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Sg400UyKl33kOpqklEg1MIM3lpY/aWi7QZTB2JfFpKgxnSRQl9J6tHiKYll+Rd603P+71YsDy/zqBYUE/3Xeag==",
"path": "microsoft.extensions.configuration.commandline/9.0.10",
"hashPath": "microsoft.extensions.configuration.commandline.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.EnvironmentVariables/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Nje8x5JDRi7uzf2q3NpXiBleRRJAxJMnHcJTi0tLyqd6eGIICRuF6qxgZssMS1r8xXDoaUr/2ZLQ6Cui1Io+Qw==",
"path": "microsoft.extensions.configuration.environmentvariables/9.0.10",
"hashPath": "microsoft.extensions.configuration.environmentvariables.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.FileExtensions/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-kYWY9VRoCKQJCLKAA4Wqn74FVnytqosF7vFq1chJ8st9mGZS6SQrkoZg7GmcpqrRRUWmWDOZI4nFdoFnxsI/Ug==",
"path": "microsoft.extensions.configuration.fileextensions/9.0.10",
"hashPath": "microsoft.extensions.configuration.fileextensions.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Json/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-bn+qnwuOaDelax8PUw30UTjLOuEd0lGWqUG4Z+oVr4D/gEWouCWOyvCVkyn+PWbftPlnmAmWxd4J+7ljwE8wVw==",
"path": "microsoft.extensions.configuration.json/9.0.10",
"hashPath": "microsoft.extensions.configuration.json.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.UserSecrets/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-l7em+qNfEdGlwRm8Qk2rkzqjT8xWb/EosoQeTvJ3kZYiRo5inMj0nNcZw51dUKwGO/LW7uNMdqNNU3P0pB5JqA==",
"path": "microsoft.extensions.configuration.usersecrets/9.0.10",
"hashPath": "microsoft.extensions.configuration.usersecrets.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.DependencyInjection/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-iEtXCkNd5XhjNJAOb/wO4IhDRdLIE2CsPxZggZQWJ/q2+sa8dmEPC393nnsiqdH8/4KV8Xn25IzgKPR1UEQ0og==",
"path": "microsoft.extensions.dependencyinjection/9.0.10",
"hashPath": "microsoft.extensions.dependencyinjection.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.DependencyInjection.Abstractions/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-r9waLiOPe9ZF1PvzUT+RDoHvpMmY8MW+lb4lqjYGObwKpnyPMLI3odVvlmshwuZcdoHynsGWOrCPA0hxZ63lIA==",
"path": "microsoft.extensions.dependencyinjection.abstractions/9.0.10",
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Diagnostics/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-01x2vz0AbIdfNUzEVYFq2HSeq1BmrSDpiG7nTmwjfd0d39sahQ8T7dhSXhH+YnZyaLWyMBudOq0vVa/voyNWjg==",
"path": "microsoft.extensions.diagnostics/9.0.10",
"hashPath": "microsoft.extensions.diagnostics.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Diagnostics.Abstractions/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-iwVnYi+gNKrr5riw8YFCoLCN4s0dmHtzfUmV99RIhrz8R4d6C/bsKzXhIhZWDIxJOhVzB+idSOQeRGj1/oMF+Q==",
"path": "microsoft.extensions.diagnostics.abstractions/9.0.10",
"hashPath": "microsoft.extensions.diagnostics.abstractions.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.FileProviders.Abstractions/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3+cLxZKUWBbpfIXLLuKcEok9C91PsV1h5xxfUsEnLSXXLNMiPDfrhpb1xajNFcejFPs9Ck/Fi3z71hYDqFBwYg==",
"path": "microsoft.extensions.fileproviders.abstractions/9.0.10",
"hashPath": "microsoft.extensions.fileproviders.abstractions.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.FileProviders.Physical/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Eg3YOEMpHWZzAgPD9YvGkQSv97AtG3II6maRQV/voDRORh4bRiyl0mVtT2PKnu1JoD9rJeYgjGCwRvVWMBaqgQ==",
"path": "microsoft.extensions.fileproviders.physical/9.0.10",
"hashPath": "microsoft.extensions.fileproviders.physical.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.FileSystemGlobbing/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-KdZAM2YMYBipVp/4tSEWPLnrocd17SL4iaXdgXjR5/nheBXbfR5QfPWYoTyh6C6IW3uKR7TRMwQr2qCvtaCTiA==",
"path": "microsoft.extensions.filesystemglobbing/9.0.10",
"hashPath": "microsoft.extensions.filesystemglobbing.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Hosting/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-63yDlitelCBNl1unJsnEWVUCZHOtxbVTbTODi7cszQJBG9bIfdPYIpB9w0UIcoqVSP1C9P6THXgukx8APWRzMw==",
"path": "microsoft.extensions.hosting/9.0.10",
"hashPath": "microsoft.extensions.hosting.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Hosting.Abstractions/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-spfXydiEQENFwxdgr3Y57wwys/FRjfmq5VjHGPh6ct1FJK7X+qNEWYbnZJCMqq0B0oJTMvnItAReOv4mi2Idog==",
"path": "microsoft.extensions.hosting.abstractions/9.0.10",
"hashPath": "microsoft.extensions.hosting.abstractions.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Hosting.WindowsServices/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-6J44fDEcblCFoc7vNwuxLQrfY9ldToc2pkfzuraCOCsRAVFg4Fajm+PdpDYQ3VzG7eh1Iqc1JMPs9LMpaIeSKA==",
"path": "microsoft.extensions.hosting.windowsservices/9.0.10",
"hashPath": "microsoft.extensions.hosting.windowsservices.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Http/8.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-cWz4caHwvx0emoYe7NkHPxII/KkTI8R/LC9qdqJqnKv2poTJ4e2qqPGQqvRoQ5kaSA4FU5IV3qFAuLuOhoqULQ==",
"path": "microsoft.extensions.http/8.0.0",
"hashPath": "microsoft.extensions.http.8.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-UBXHqE9vyptVhaFnT1R7YJKCve7TqVI10yjjUZBNGMlW2lZ4c031Slt9hxsOzWCzlpPxxIFyf1Yk4a6Iubxx7w==",
"path": "microsoft.extensions.logging/9.0.10",
"hashPath": "microsoft.extensions.logging.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Abstractions/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-MFUPv/nN1rAQ19w43smm6bbf0JDYN/1HEPHoiMYY50pvDMFpglzWAuoTavByDmZq7UuhjaxwrET3joU69ZHoHQ==",
"path": "microsoft.extensions.logging.abstractions/9.0.10",
"hashPath": "microsoft.extensions.logging.abstractions.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Configuration/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-qwTRpxrmLOXZrbgQHRZ9wS2AtVa/61DFIYk8k1rBCCgA5qW0MBxxQC4BjkaI0wSoHHOv/IUXBeFNK+Y59qe/Ug==",
"path": "microsoft.extensions.logging.configuration/9.0.10",
"hashPath": "microsoft.extensions.logging.configuration.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Console/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ponA8k4E4S0LlQ8J4ce4Yp1NND8rxww0lbADK9yL3omRpnnawiENb7W/CTgZUIZVJxKcmIwhm1IbUCRk6RLocQ==",
"path": "microsoft.extensions.logging.console/9.0.10",
"hashPath": "microsoft.extensions.logging.console.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Debug/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Uj4YMaMMLawIkpHYnDWsR2/pufV/8X3dDT1/RNhkmt8RRf6/SriyA2gxH6I6bj4gFx6yMuFWZhCgFLy3wcSGTw==",
"path": "microsoft.extensions.logging.debug/9.0.10",
"hashPath": "microsoft.extensions.logging.debug.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Logging.EventLog/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Son+9zr7gnuYv1CcuZ8b6XhZK/UQRG88Ku1iSUvAQSZ1cFjYC+lDYRD6nBVXF2QIQyv0jhjt/MPKD7sA+323TQ==",
"path": "microsoft.extensions.logging.eventlog/9.0.10",
"hashPath": "microsoft.extensions.logging.eventlog.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Logging.EventSource/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-qhqkUWsf/CVyQ9V98n5uWSQcvy7HbyRkhyhpK75OKojWuaNKoEIfBmrHRiahmdGJDuh2Qz/nDpFOjQOi/ERtZQ==",
"path": "microsoft.extensions.logging.eventsource/9.0.10",
"hashPath": "microsoft.extensions.logging.eventsource.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Options/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-zMNABt8eBv0B0XrWjFy9nZNgddavaOeq3ZdaD5IlHhRH65MrU7HM+Hd8GjWE3e2VDGFPZFfSAc6XVXC17f9fOA==",
"path": "microsoft.extensions.options/9.0.10",
"hashPath": "microsoft.extensions.options.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Options.ConfigurationExtensions/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-wLsf2TyVFFxWQPv0PRJj365it1ngIt8utlHJWSZ9OJ2k+NDa/PtBIRsGlF/NkoLwm1m+1vOePNl2MiKfk6lYfQ==",
"path": "microsoft.extensions.options.configurationextensions/9.0.10",
"hashPath": "microsoft.extensions.options.configurationextensions.9.0.10.nupkg.sha512"
},
"Microsoft.Extensions.Primitives/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3pl8D1O5ZwMpDkZAT2uXrhQ6NipkwEgDLMFuURiHTf72TvkoMP61QYH3Vk1yrzVHnHBdNZk3cQACz8Zc7YGNhQ==",
"path": "microsoft.extensions.primitives/9.0.10",
"hashPath": "microsoft.extensions.primitives.9.0.10.nupkg.sha512"
},
"Microsoft.OpenApi/1.6.14": {
"type": "package",
"serviceable": true,
"sha512": "sha512-tTaBT8qjk3xINfESyOPE2rIellPvB7qpVqiWiyA/lACVvz+xOGiXhFUfohcx82NLbi5avzLW0lx+s6oAqQijfw==",
"path": "microsoft.openapi/1.6.14",
"hashPath": "microsoft.openapi.1.6.14.nupkg.sha512"
},
"Swashbuckle.AspNetCore/6.6.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-+NB4UYVYN6AhDSjW0IJAd1AGD8V33gemFNLPaxKTtPkHB+HaKAKf9MGAEUPivEWvqeQfcKIw8lJaHq6LHljRuw==",
"path": "swashbuckle.aspnetcore/6.6.2",
"hashPath": "swashbuckle.aspnetcore.6.6.2.nupkg.sha512"
},
"Swashbuckle.AspNetCore.Swagger/6.6.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ovgPTSYX83UrQUWiS5vzDcJ8TEX1MAxBgDFMK45rC24MorHEPQlZAHlaXj/yth4Zf6xcktpUgTEBvffRQVwDKA==",
"path": "swashbuckle.aspnetcore.swagger/6.6.2",
"hashPath": "swashbuckle.aspnetcore.swagger.6.6.2.nupkg.sha512"
},
"Swashbuckle.AspNetCore.SwaggerGen/6.6.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-zv4ikn4AT1VYuOsDCpktLq4QDq08e7Utzbir86M5/ZkRaLXbCPF11E1/vTmOiDzRTl0zTZINQU2qLKwTcHgfrA==",
"path": "swashbuckle.aspnetcore.swaggergen/6.6.2",
"hashPath": "swashbuckle.aspnetcore.swaggergen.6.6.2.nupkg.sha512"
},
"Swashbuckle.AspNetCore.SwaggerUI/6.6.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-mBBb+/8Hm2Q3Wygag+hu2jj69tZW5psuv0vMRXY07Wy+Rrj40vRP8ZTbKBhs91r45/HXT4aY4z0iSBYx1h6JvA==",
"path": "swashbuckle.aspnetcore.swaggerui/6.6.2",
"hashPath": "swashbuckle.aspnetcore.swaggerui.6.6.2.nupkg.sha512"
},
"System.Diagnostics.DiagnosticSource/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-uIpKiKp7EWlYZBK71jYP+maGYjDY9YTi/FxBlZoqDzM1ZHZB7gLqUm4jHvRFwaKfR1/Lrt2rQih9LGPIKyNEow==",
"path": "system.diagnostics.diagnosticsource/9.0.10",
"hashPath": "system.diagnostics.diagnosticsource.9.0.10.nupkg.sha512"
},
"System.Diagnostics.EventLog/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Jc+az1pTMujPLDn2j5eqSfzlO7j/T1K/LB7THxdfRWOxujE4zaitUqBs7sv1t6/xmmvpU6Xx3IofCs4owYH0yQ==",
"path": "system.diagnostics.eventlog/9.0.10",
"hashPath": "system.diagnostics.eventlog.9.0.10.nupkg.sha512"
},
"System.IO.Pipelines/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-lwI0mhHcCxMtNSxB5ate9Gc9petWovRBUprtjz2yiIDDZPGBIaUiqNzQHJzjPuzTnvNbEMilpAXjDguKsU/2Fg==",
"path": "system.io.pipelines/9.0.10",
"hashPath": "system.io.pipelines.9.0.10.nupkg.sha512"
},
"System.ServiceProcess.ServiceController/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-dmH+qHQ5wMjvEI0M2s6J+vmaU9L9ID2D9DWMFa7FiTfINfo3e3zeL4ljX7Dg5gCnFIULPFip2ej2iIAC3X6MFw==",
"path": "system.serviceprocess.servicecontroller/9.0.10",
"hashPath": "system.serviceprocess.servicecontroller.9.0.10.nupkg.sha512"
},
"System.Text.Encodings.Web/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-znmiJFUa0GGwq7t6ShUKBDRlPsNJaudNFI7rVeyGnRBhiRMegBvu2GRcadThP/QX/a5UpGgZbe6tolDooobj/Q==",
"path": "system.text.encodings.web/9.0.10",
"hashPath": "system.text.encodings.web.9.0.10.nupkg.sha512"
},
"System.Text.Json/9.0.10": {
"type": "package",
"serviceable": true,
"sha512": "sha512-XM02ZBnzxk7Ti6l9YRy8Bp639wANqJzJzw4W4VYiCh+HXY9hBOWkGB4k89OLP/s/RxgM02P4a/mWcJTgFiLf1Q==",
"path": "system.text.json/9.0.10",
"hashPath": "system.text.json.9.0.10.nupkg.sha512"
}
}
}

Binary file not shown.

View File

@@ -0,0 +1,20 @@
{
"runtimeOptions": {
"tfm": "net8.0",
"frameworks": [
{
"name": "Microsoft.NETCore.App",
"version": "8.0.0"
},
{
"name": "Microsoft.AspNetCore.App",
"version": "8.0.0"
}
],
"configProperties": {
"System.GC.Server": true,
"System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}

View File

@@ -0,0 +1 @@
{"Version":1,"ManifestType":"Publish","Endpoints":[]}

View File

@@ -0,0 +1,576 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>RoslynBridge.WebApi</name>
</assembly>
<members>
<member name="T:RoslynBridge.WebApi.Controllers.HealthController">
<summary>
Health check and status controller
</summary>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.HealthController.GetHealth(System.Threading.CancellationToken)">
<summary>
Get the health status of the middleware and Visual Studio plugin
</summary>
<param name="cancellationToken">Cancellation token</param>
<returns>Health status information</returns>
<response code="200">Service is healthy</response>
<response code="503">Service is unhealthy</response>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.HealthController.Ping">
<summary>
Simple ping endpoint
</summary>
<returns>Pong response</returns>
</member>
<member name="T:RoslynBridge.WebApi.Controllers.HistoryController">
<summary>
Controller for accessing query history
</summary>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.HistoryController.GetAll">
<summary>
Get all history entries
</summary>
<returns>List of all history entries</returns>
<response code="200">Returns the list of history entries</response>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.HistoryController.GetById(System.String)">
<summary>
Get a specific history entry by ID
</summary>
<param name="id">The history entry ID</param>
<returns>The history entry</returns>
<response code="200">Returns the history entry</response>
<response code="404">Entry not found</response>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.HistoryController.GetRecent(System.Int32)">
<summary>
Get recent history entries
</summary>
<param name="count">Number of entries to return (default: 50, max: 500)</param>
<returns>List of recent history entries</returns>
<response code="200">Returns the list of recent entries</response>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.HistoryController.GetStats">
<summary>
Get history statistics
</summary>
<returns>Statistics about history entries</returns>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.HistoryController.Clear">
<summary>
Clear all history entries
</summary>
<returns>Confirmation message</returns>
<response code="200">History cleared successfully</response>
</member>
<member name="T:RoslynBridge.WebApi.Controllers.InstancesController">
<summary>
Controller for managing Visual Studio instance registrations
</summary>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.InstancesController.Register(RoslynBridge.WebApi.Models.VSInstanceInfo)">
<summary>
Register a new Visual Studio instance
</summary>
<param name="instance">Instance information</param>
<returns>Registration result</returns>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.InstancesController.Unregister(System.Int32)">
<summary>
Unregister a Visual Studio instance
</summary>
<param name="processId">Process ID of the instance to unregister</param>
<returns>Unregistration result</returns>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.InstancesController.Heartbeat(System.Int32)">
<summary>
Update heartbeat for a Visual Studio instance
</summary>
<param name="processId">Process ID of the instance</param>
<returns>Heartbeat update result</returns>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.InstancesController.GetAll">
<summary>
Get all registered Visual Studio instances
</summary>
<returns>List of registered instances</returns>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.InstancesController.GetByProcessId(System.Int32)">
<summary>
Get instance by process ID
</summary>
<param name="processId">Process ID</param>
<returns>Instance information</returns>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.InstancesController.GetBySolutionPath(System.String)">
<summary>
Get instance by solution path
</summary>
<param name="solutionPath">Solution file path</param>
<returns>Instance information</returns>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.InstancesController.GetByPort(System.Int32)">
<summary>
Get instance by port
</summary>
<param name="port">Port number</param>
<returns>Instance information</returns>
</member>
<member name="T:RoslynBridge.WebApi.Controllers.RoslynController">
<summary>
Controller for Roslyn code analysis operations
</summary>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.RoslynController.ExecuteQuery(RoslynBridge.WebApi.Models.RoslynQueryRequest,System.Nullable{System.Int32},System.Threading.CancellationToken)">
<summary>
Execute a Roslyn query
</summary>
<param name="request">The query request</param>
<param name="instancePort">Optional: specific VS instance port to target</param>
<param name="cancellationToken">Cancellation token</param>
<returns>The query result</returns>
<response code="200">Query executed successfully</response>
<response code="400">Invalid request</response>
<response code="500">Internal server error</response>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.RoslynController.GetProjects(System.Nullable{System.Int32},System.Threading.CancellationToken)">
<summary>
Get all projects in the solution
</summary>
<param name="instancePort">Optional: specific VS instance port to target</param>
<param name="cancellationToken">Cancellation token</param>
<returns>List of projects</returns>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.RoslynController.GetSolutionOverview(System.Nullable{System.Int32},System.Threading.CancellationToken)">
<summary>
Get solution overview
</summary>
<param name="instancePort">Optional: specific VS instance port to target</param>
<param name="cancellationToken">Cancellation token</param>
<returns>Solution statistics and overview</returns>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.RoslynController.GetDiagnostics(System.String,System.Nullable{System.Int32},System.Threading.CancellationToken)">
<summary>
Get diagnostics (errors and warnings)
</summary>
<param name="filePath">Optional file path to filter diagnostics</param>
<param name="instancePort">Optional: specific VS instance port to target</param>
<param name="cancellationToken">Cancellation token</param>
<returns>List of diagnostics</returns>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.RoslynController.GetSymbol(System.String,System.Int32,System.Int32,System.Nullable{System.Int32},System.Threading.CancellationToken)">
<summary>
Get symbol information at a specific position
</summary>
<param name="filePath">File path</param>
<param name="line">Line number (1-based)</param>
<param name="column">Column number (0-based)</param>
<param name="instancePort">Optional: specific VS instance port to target</param>
<param name="cancellationToken">Cancellation token</param>
<returns>Symbol information</returns>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.RoslynController.FindReferences(System.String,System.Int32,System.Int32,System.Nullable{System.Int32},System.Threading.CancellationToken)">
<summary>
Find all references to a symbol
</summary>
<param name="filePath">File path</param>
<param name="line">Line number (1-based)</param>
<param name="column">Column number (0-based)</param>
<param name="instancePort">Optional: specific VS instance port to target</param>
<param name="cancellationToken">Cancellation token</param>
<returns>List of references</returns>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.RoslynController.FindSymbol(System.String,System.String,System.Nullable{System.Int32},System.Threading.CancellationToken)">
<summary>
Search for symbols by name
</summary>
<param name="symbolName">Symbol name or pattern</param>
<param name="kind">Optional symbol kind filter</param>
<param name="instancePort">Optional: specific VS instance port to target</param>
<param name="cancellationToken">Cancellation token</param>
<returns>List of matching symbols</returns>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.RoslynController.FormatDocument(System.String,System.Nullable{System.Int32},System.Threading.CancellationToken)">
<summary>
Format a document
</summary>
<param name="filePath">File path to format</param>
<param name="instancePort">Optional: specific VS instance port to target</param>
<param name="cancellationToken">Cancellation token</param>
<returns>Format operation result</returns>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.RoslynController.AddNuGetPackage(System.String,System.String,System.String,System.Nullable{System.Int32},System.Threading.CancellationToken)">
<summary>
Add a NuGet package to a project
</summary>
<param name="projectName">Project name</param>
<param name="packageName">NuGet package name</param>
<param name="version">Optional package version</param>
<param name="instancePort">Optional: specific VS instance port to target</param>
<param name="cancellationToken">Cancellation token</param>
<returns>Operation result</returns>
</member>
<member name="M:RoslynBridge.WebApi.Controllers.RoslynController.BuildProject(System.String,System.String,System.Nullable{System.Int32},System.Threading.CancellationToken)">
<summary>
Build a project
</summary>
<param name="projectName">Project name</param>
<param name="configuration">Build configuration (Debug/Release)</param>
<param name="instancePort">Optional: specific VS instance port to target</param>
<param name="cancellationToken">Cancellation token</param>
<returns>Build result</returns>
</member>
<member name="T:RoslynBridge.WebApi.Middleware.HistoryMiddleware">
<summary>
Middleware to capture and log all Roslyn API requests and responses
</summary>
</member>
<member name="T:RoslynBridge.WebApi.Middleware.HistoryMiddlewareExtensions">
<summary>
Extension methods for adding history middleware
</summary>
</member>
<member name="T:RoslynBridge.WebApi.Models.HealthCheckResponse">
<summary>
Health check response for service status
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.HealthCheckResponse.Status">
<summary>
Overall health status
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.HealthCheckResponse.WebApiStatus">
<summary>
Web API service status
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.HealthCheckResponse.VsPluginStatus">
<summary>
Visual Studio plugin connection status
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.HealthCheckResponse.Timestamp">
<summary>
Timestamp of the health check
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.HealthCheckResponse.Version">
<summary>
API version
</summary>
</member>
<member name="T:RoslynBridge.WebApi.Models.QueryHistoryEntry">
<summary>
Represents a single query history entry with request and response information
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.QueryHistoryEntry.Id">
<summary>
Unique identifier for this history entry
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.QueryHistoryEntry.Timestamp">
<summary>
Timestamp when the request was received
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.QueryHistoryEntry.Path">
<summary>
The endpoint path that was called
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.QueryHistoryEntry.Method">
<summary>
HTTP method used
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.QueryHistoryEntry.Request">
<summary>
The Roslyn query request
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.QueryHistoryEntry.Response">
<summary>
The Roslyn query response
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.QueryHistoryEntry.DurationMs">
<summary>
Request duration in milliseconds
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.QueryHistoryEntry.Success">
<summary>
Whether the request was successful
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.QueryHistoryEntry.ClientIp">
<summary>
Client IP address
</summary>
</member>
<member name="T:RoslynBridge.WebApi.Models.RoslynQueryRequest">
<summary>
Request model for Roslyn query operations
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.RoslynQueryRequest.QueryType">
<summary>
Type of query to execute (e.g., "getsymbol", "getdocument", "findreferences")
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.RoslynQueryRequest.FilePath">
<summary>
File path for file-based operations
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.RoslynQueryRequest.SymbolName">
<summary>
Symbol name for symbol-based operations
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.RoslynQueryRequest.Line">
<summary>
Line number (1-based) for position-based operations
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.RoslynQueryRequest.Column">
<summary>
Column number (0-based) for position-based operations
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.RoslynQueryRequest.Parameters">
<summary>
Additional parameters for the query
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.RoslynQueryRequest.ProjectName">
<summary>
Project name for project operations
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.RoslynQueryRequest.PackageName">
<summary>
Package name for NuGet operations
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.RoslynQueryRequest.Version">
<summary>
Version for NuGet package operations
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.RoslynQueryRequest.Configuration">
<summary>
Build configuration (Debug/Release)
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.RoslynQueryRequest.DirectoryPath">
<summary>
Directory path for directory operations
</summary>
</member>
<member name="T:RoslynBridge.WebApi.Models.RoslynQueryResponse">
<summary>
Response model for Roslyn query operations
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.RoslynQueryResponse.Success">
<summary>
Indicates whether the operation was successful
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.RoslynQueryResponse.Message">
<summary>
Optional message providing additional context
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.RoslynQueryResponse.Data">
<summary>
The response data (structure varies by query type)
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.RoslynQueryResponse.Error">
<summary>
Error message if the operation failed
</summary>
</member>
<member name="T:RoslynBridge.WebApi.Models.VSInstanceInfo">
<summary>
Information about a registered Visual Studio instance
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.VSInstanceInfo.Port">
<summary>
The port number where this VS instance is listening
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.VSInstanceInfo.ProcessId">
<summary>
The process ID of the Visual Studio instance
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.VSInstanceInfo.SolutionPath">
<summary>
The solution file path (if any solution is open)
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.VSInstanceInfo.SolutionName">
<summary>
The solution name (if any solution is open)
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.VSInstanceInfo.RegisteredAt">
<summary>
When this instance was registered
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.VSInstanceInfo.LastHeartbeat">
<summary>
Last heartbeat time
</summary>
</member>
<member name="P:RoslynBridge.WebApi.Models.VSInstanceInfo.Projects">
<summary>
List of project names in the solution
</summary>
</member>
<member name="T:RoslynBridge.WebApi.Services.HistoryService">
<summary>
In-memory implementation of history service
</summary>
</member>
<member name="T:RoslynBridge.WebApi.Services.IHistoryService">
<summary>
Service for managing query history
</summary>
</member>
<member name="M:RoslynBridge.WebApi.Services.IHistoryService.Add(RoslynBridge.WebApi.Models.QueryHistoryEntry)">
<summary>
Add a new history entry
</summary>
<param name="entry">The history entry to add</param>
</member>
<member name="M:RoslynBridge.WebApi.Services.IHistoryService.GetAll">
<summary>
Get all history entries
</summary>
<returns>List of all history entries</returns>
</member>
<member name="M:RoslynBridge.WebApi.Services.IHistoryService.GetById(System.String)">
<summary>
Get a specific history entry by ID
</summary>
<param name="id">The entry ID</param>
<returns>The history entry, or null if not found</returns>
</member>
<member name="M:RoslynBridge.WebApi.Services.IHistoryService.GetRecent(System.Int32)">
<summary>
Get recent history entries
</summary>
<param name="count">Number of entries to return</param>
<returns>List of recent history entries</returns>
</member>
<member name="M:RoslynBridge.WebApi.Services.IHistoryService.Clear">
<summary>
Clear all history entries
</summary>
</member>
<member name="M:RoslynBridge.WebApi.Services.IHistoryService.GetCount">
<summary>
Get total count of history entries
</summary>
<returns>Total number of entries</returns>
</member>
<member name="T:RoslynBridge.WebApi.Services.IInstanceRegistryService">
<summary>
Service for managing registered Visual Studio instances
</summary>
</member>
<member name="M:RoslynBridge.WebApi.Services.IInstanceRegistryService.Register(RoslynBridge.WebApi.Models.VSInstanceInfo)">
<summary>
Register a new Visual Studio instance
</summary>
</member>
<member name="M:RoslynBridge.WebApi.Services.IInstanceRegistryService.Unregister(System.Int32)">
<summary>
Unregister a Visual Studio instance by process ID
</summary>
</member>
<member name="M:RoslynBridge.WebApi.Services.IInstanceRegistryService.UpdateHeartbeat(System.Int32)">
<summary>
Update heartbeat for an instance
</summary>
</member>
<member name="M:RoslynBridge.WebApi.Services.IInstanceRegistryService.GetAllInstances">
<summary>
Get all registered instances
</summary>
</member>
<member name="M:RoslynBridge.WebApi.Services.IInstanceRegistryService.GetByProcessId(System.Int32)">
<summary>
Get instance by process ID
</summary>
</member>
<member name="M:RoslynBridge.WebApi.Services.IInstanceRegistryService.GetBySolutionPath(System.String)">
<summary>
Get instance by solution path
</summary>
</member>
<member name="M:RoslynBridge.WebApi.Services.IInstanceRegistryService.GetByPort(System.Int32)">
<summary>
Get instance by port
</summary>
</member>
<member name="M:RoslynBridge.WebApi.Services.IInstanceRegistryService.RemoveStaleInstances(System.TimeSpan)">
<summary>
Remove stale instances (no heartbeat for specified timeout)
</summary>
</member>
<member name="T:RoslynBridge.WebApi.Services.InstanceCleanupService">
<summary>
Background service that periodically removes stale VS instances
</summary>
</member>
<member name="T:RoslynBridge.WebApi.Services.InstanceRegistryService">
<summary>
Thread-safe in-memory registry for Visual Studio instances
</summary>
</member>
<member name="T:RoslynBridge.WebApi.Services.IRoslynBridgeClient">
<summary>
Interface for communicating with the Roslyn Bridge Visual Studio plugin
</summary>
</member>
<member name="M:RoslynBridge.WebApi.Services.IRoslynBridgeClient.ExecuteQueryAsync(RoslynBridge.WebApi.Models.RoslynQueryRequest,System.Nullable{System.Int32},System.Threading.CancellationToken)">
<summary>
Execute a query against the Roslyn Bridge server
</summary>
<param name="request">The query request</param>
<param name="instancePort">Optional port of specific VS instance to target</param>
<param name="cancellationToken">Cancellation token</param>
<returns>The query response</returns>
</member>
<member name="M:RoslynBridge.WebApi.Services.IRoslynBridgeClient.IsHealthyAsync(System.Nullable{System.Int32},System.Threading.CancellationToken)">
<summary>
Check if the Roslyn Bridge server is healthy
</summary>
<param name="instancePort">Optional port of specific VS instance to check</param>
<param name="cancellationToken">Cancellation token</param>
<returns>True if healthy, false otherwise</returns>
</member>
<member name="T:RoslynBridge.WebApi.Services.RoslynBridgeClient">
<summary>
HTTP client for communicating with the Roslyn Bridge Visual Studio plugin
</summary>
</member>
<member name="M:RoslynBridge.WebApi.Services.RoslynBridgeClient.ResolveInstancePortAsync(System.Nullable{System.Int32},RoslynBridge.WebApi.Models.RoslynQueryRequest)">
<summary>
Resolves which VS instance port to use based on provided hints
</summary>
</member>
</members>
</doc>

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,12 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"RoslynBridge.WebApi": "Debug"
}
},
"RoslynBridge": {
"BaseUrl": "http://localhost:59123"
}
}

View File

@@ -0,0 +1,33 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning",
"RoslynBridge.WebApi": "Information"
},
"EventLog": {
"SourceName": "Roslyn Bridge Web API",
"LogName": "Application",
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
},
"AllowedHosts": "*",
"RoslynBridge": {
"BaseUrl": "http://localhost:59123",
"TimeoutSeconds": 30
},
"History": {
"MaxEntries": 1000,
"Enabled": true
},
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:5000"
}
}
}
}

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\RoslynBridge.WebApi.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
<!--ProjectGuid: F257A158-E5B4-569A-2B64-6EA9157F9C52-->