meerkat_contracts/capability/
mod.rs1pub mod query;
8mod registry;
9
10pub use query::{CapabilitiesResponse, CapabilityEntry};
11pub use registry::{CapabilityRegistration, build_capabilities};
12
13use std::borrow::Cow;
14
15use serde::{Deserialize, Serialize};
16
17use crate::Protocol;
18
19#[derive(
22 Debug,
23 Clone,
24 Copy,
25 PartialEq,
26 Eq,
27 PartialOrd,
28 Ord,
29 Hash,
30 Serialize,
31 Deserialize,
32 strum::EnumIter,
33 strum::EnumString,
34 strum::Display,
35)]
36#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
37#[serde(rename_all = "snake_case")]
38#[strum(serialize_all = "snake_case")]
39pub enum CapabilityId {
40 Sessions,
41 Streaming,
42 StructuredOutput,
43 Hooks,
44 Builtins,
45 Shell,
46 Comms,
47 MemoryStore,
48 SessionStore,
49 SessionCompaction,
50 Skills,
51 McpLive,
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize)]
56#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
57pub enum CapabilityScope {
58 Universal,
60 Extension { protocols: Cow<'static, [Protocol]> },
62}
63
64#[derive(Debug, Clone, Serialize, Deserialize)]
66#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
67pub enum CapabilityStatus {
68 Available,
70 DisabledByPolicy { description: Cow<'static, str> },
79 NotCompiled { feature: Cow<'static, str> },
81 NotSupportedByProtocol { reason: Cow<'static, str> },
83}