use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum Capability {
TextGeneration,
Reasoning,
CodeGeneration,
MultilingualText,
WebSearch,
ImageUnderstanding,
StructuredOutput,
ToolUse,
Streaming,
AccessControl,
ComplianceCheck,
AuditTrail,
RuleEvaluation,
ConstraintSolving,
ResourceAllocation,
Scheduling,
MathematicalProgramming,
Embedding,
Reranking,
VectorSearch,
Clustering,
Regression,
Classification,
AnomalyDetection,
FullTextSearch,
GraphTraversal,
SemanticSearch,
KeyValue,
DocumentStore,
EventSourcing,
Replay,
Offline,
Other(String),
}
impl std::fmt::Display for Capability {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::Other(name) => write!(f, "other:{name}"),
other => write!(f, "{other:?}"),
}
}
}