namespace EAIAdminDAL.DTO
{
/// Wire shape for POST /EAIAdmin/ExecuteCapability — the one generalized entry point
/// every functional-module caller (Recruitment now, others later) uses to call gbEAI through
/// EAIAdmin's governance layer, instead of each screen hardcoding a raw external IP or a
/// capability-specific EAIAdmin endpoint. InitiativeCode/CapabilityCode resolve to a gbEAI
/// agent slug via MEAIAGENTROUTE (see IEAIAgentRouteAdminDAL.ResolveSlugForCapabilityAsync).
/// The file (when present) travels as a separate multipart part, not on this DTO — see
/// ExecuteCapability.cs's own Params record.
public class EAIExecuteCapabilityRequestDTO
{
public string InitiativeCode { get; set; } = string.Empty;
public string CapabilityCode { get; set; } = string.Empty;
/// Per-variant prompt granularity — see MEAIPROMPTTEMPLATE.VariantCode.
public string? VariantCode { get; set; }
/// Caller-supplied JSON, forwarded to gbEAI as the "input" form field verbatim.
/// Optional when a file carries the whole request (e.g. IDENTIFY_DOCUMENT).
public string? InputJson { get; set; }
}
/// Result.ResultJson is gbEAI's own {"result": {...}} envelope already unwrapped to
/// just the inner object, re-serialized as raw JSON text — deliberately not parsed into typed
/// fields here, since each capability's response shape differs and interpreting it is the
/// caller's job (e.g. a GOP Mapper step), not EAIAdmin's.
public class EAIExecuteCapabilityResultDTO
{
public string ResultJson { get; set; } = "{}";
}
}