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>
66 lines
1.7 KiB
C#
66 lines
1.7 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
|
|
namespace RoslynBridge.WebApi.Models;
|
|
|
|
/// <summary>
|
|
/// Request model for Roslyn query operations
|
|
/// </summary>
|
|
public class RoslynQueryRequest
|
|
{
|
|
/// <summary>
|
|
/// Type of query to execute (e.g., "getsymbol", "getdocument", "findreferences")
|
|
/// </summary>
|
|
[Required]
|
|
public string QueryType { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// File path for file-based operations
|
|
/// </summary>
|
|
public string? FilePath { get; set; }
|
|
|
|
/// <summary>
|
|
/// Symbol name for symbol-based operations
|
|
/// </summary>
|
|
public string? SymbolName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Line number (1-based) for position-based operations
|
|
/// </summary>
|
|
public int? Line { get; set; }
|
|
|
|
/// <summary>
|
|
/// Column number (0-based) for position-based operations
|
|
/// </summary>
|
|
public int? Column { get; set; }
|
|
|
|
/// <summary>
|
|
/// Additional parameters for the query
|
|
/// </summary>
|
|
public Dictionary<string, string>? Parameters { get; set; }
|
|
|
|
/// <summary>
|
|
/// Project name for project operations
|
|
/// </summary>
|
|
public string? ProjectName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Package name for NuGet operations
|
|
/// </summary>
|
|
public string? PackageName { get; set; }
|
|
|
|
/// <summary>
|
|
/// Version for NuGet package operations
|
|
/// </summary>
|
|
public string? Version { get; set; }
|
|
|
|
/// <summary>
|
|
/// Build configuration (Debug/Release)
|
|
/// </summary>
|
|
public string? Configuration { get; set; }
|
|
|
|
/// <summary>
|
|
/// Directory path for directory operations
|
|
/// </summary>
|
|
public string? DirectoryPath { get; set; }
|
|
}
|