using System;
namespace EAIAdminDAL.DTO
{
/// Admin CRUD DTO for MEAIAGENTROUTE — mirrors gbEAI's process-wide AGENT_ROUTES
/// tuple (app/core/agent_catalog.py). Global config, NOT tenant-scoped, despite the TenantId
/// column existing for audit/ownership — gated to a SuperAdmin-only menu grant in Angular and
/// PLATFORM_ADMIN_TENANT_IDS gbEAI-side. See EAIInitiativeAdminDTO for the shared shape.
public class EAIAgentRouteAdminDTO
{
public int AgentRouteId { get; set; }
public int TenantId { get; set; }
/// Globally unique — the route's URL segment (POST /<slug>).
public string Slug { get; set; } = string.Empty;
public string InitiativeCode { get; set; } = string.Empty;
public string DefaultCapability { get; set; } = string.Empty;
/// gbEAI adapter module path (e.g. "app.services.report_service_adapter") —
/// Angular presents this as a constrained dropdown, not free text.
public string Module { get; set; } = string.Empty;
public string? Summary { get; set; }
/// CSV, e.g. "QUESTION_ANSWER,ANALYZE_REPORT".
public string? Capabilities { get; set; }
/// CSV of alternate route slugs also registered for this agent.
public string? Aliases { get; set; }
public byte AcceptsFile { get; set; }
public byte AcceptsText { get; set; } = 1;
public byte RequiresFile { get; set; }
public long? EAIRemoteId { get; set; }
public short Version { get; set; }
public byte Status { get; set; } = 1;
public int? CreatedById { get; set; }
public string? CreatedByName { get; set; }
public DateTime CreatedOn { get; set; }
public int? ModifiedById { get; set; }
public string? ModifiedByName { get; set; }
public DateTime? ModifiedOn { get; set; }
}
}