pub mod query;
mod registry;
pub use query::{CapabilitiesResponse, CapabilityEntry};
pub use registry::{CapabilityRegistration, build_capabilities};
use std::borrow::Cow;
use serde::{Deserialize, Serialize};
use crate::Protocol;
#[derive(
Debug,
Clone,
Copy,
PartialEq,
Eq,
PartialOrd,
Ord,
Hash,
Serialize,
Deserialize,
strum::EnumIter,
strum::EnumString,
strum::Display,
)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
#[serde(rename_all = "snake_case")]
#[strum(serialize_all = "snake_case")]
pub enum CapabilityId {
Sessions,
Streaming,
StructuredOutput,
Hooks,
Builtins,
Shell,
Comms,
SubAgents,
MemoryStore,
SessionStore,
SessionCompaction,
Skills,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub enum CapabilityScope {
Universal,
Extension { protocols: Cow<'static, [Protocol]> },
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub enum CapabilityStatus {
Available,
DisabledByPolicy { description: Cow<'static, str> },
NotCompiled { feature: Cow<'static, str> },
NotSupportedByProtocol { reason: Cow<'static, str> },
}