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; } = "{}"; } }