edgecrab_plugins/
types.rs1use 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}