namespace ColaFlow.Modules.Mcp.Contracts.Resources;

/// <summary>
/// Descriptor for an MCP Resource (used in resources/list)
/// Enhanced with metadata for better discovery and documentation
/// </summary>
public class McpResourceDescriptor
{
    /// <summary>
    /// Resource URI (e.g., "colaflow://projects.list")
    /// </summary>
    public string Uri { get; set; } = string.Empty;

    /// <summary>
    /// Resource display name
    /// </summary>
    public string Name { get; set; } = string.Empty;

    /// <summary>
    /// Resource description
    /// </summary>
    public string Description { get; set; } = string.Empty;

    /// <summary>
    /// MIME type (default: "application/json")
    /// </summary>
    public string MimeType { get; set; } = "application/json";

    /// <summary>
    /// Resource category for organization (e.g., "Projects", "Issues", "Sprints", "Users")
    /// </summary>
    public string Category { get; set; } = "General";

    /// <summary>
    /// Resource version (for future compatibility)
    /// </summary>
    public string Version { get; set; } = "1.0";

    /// <summary>
    /// Parameters accepted by this resource (for documentation)
    /// Key: parameter name, Value: parameter description
    /// </summary>
    public Dictionary<string, string>? Parameters { get; set; }

    /// <summary>
    /// Usage examples (for documentation)
    /// </summary>
    public List<string>? Examples { get; set; }

    /// <summary>
    /// Tags for additional categorization
    /// </summary>
    public List<string>? Tags { get; set; }

    /// <summary>
    /// Whether this resource is enabled
    /// </summary>
    public bool IsEnabled { get; set; } = true;
}
