Skip to main content

edgecrab_plugins/
types.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
4#[serde(rename_all = "kebab-case")]
5pub enum PluginKind {
6    Skill,
7    ToolServer,
8    Script,
9    Hermes,
10}
11
12impl PluginKind {
13    pub fn as_tag(self) -> &'static str {
14        match self {
15            Self::Skill => "skill",
16            Self::ToolServer => "tool-server",
17            Self::Script => "script",
18            Self::Hermes => "hermes",
19        }
20    }
21}
22
23#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
24#[serde(rename_all = "snake_case")]
25pub enum PluginStatus {
26    Available,
27    Disabled,
28    PlatformExcluded,
29    SetupNeeded,
30    Unsupported,
31    Error,
32}
33
34#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
35#[serde(rename_all = "kebab-case")]
36pub enum TrustLevel {
37    Official,
38    Trusted,
39    Community,
40    AgentCreated,
41    #[default]
42    Unverified,
43}
44
45#[derive(Debug, Clone, PartialEq, Eq)]
46pub enum SkillReadinessStatus {
47    Available,
48    SetupNeeded { missing: Vec<String> },
49    Unsupported { reason: String },
50}
51
52#[derive(Debug, Clone, Copy, PartialEq, Eq)]
53pub enum SkillSource {
54    User,
55    Project,
56    System,
57}