Skip to main content

mesh_llm_config/plugin_validation/
control_behavior.rs

1#[derive(Clone, Debug, PartialEq, Default)]
2pub struct PluginControlBehavior {
3    pub numeric: Option<PluginNumericControl>,
4    pub text_format: Option<PluginTextFormat>,
5    pub options_source: Option<PluginOptionsSource>,
6    pub availability: Option<PluginControlAvailability>,
7    pub enable_when: Vec<PluginControlCondition>,
8    pub disable_when: Vec<PluginConditionalDisable>,
9    pub conflicts: Vec<PluginConflictRule>,
10    pub write_policy: Option<PluginDisabledWritePolicy>,
11}
12
13#[derive(Clone, Debug, PartialEq, Default)]
14pub struct PluginNumericControl {
15    pub min: Option<f64>,
16    pub max: Option<f64>,
17    pub step: Option<f64>,
18    pub soft_min: Option<f64>,
19    pub soft_max: Option<f64>,
20    pub unit: Option<String>,
21}
22
23#[derive(Clone, Copy, Debug, PartialEq, Eq)]
24pub enum PluginTextFormat {
25    Plain,
26    Path,
27    Url,
28    SocketAddr,
29    Semver,
30    Ed25519Key,
31    CsvPositiveInts,
32}
33
34#[derive(Clone, Copy, Debug, PartialEq, Eq)]
35pub enum PluginOptionsSource {
36    Static,
37    RuntimeGpus,
38    RuntimeNativeBackends,
39    RuntimeLocalModels,
40    RuntimeInstalledPlugins,
41    RuntimeMeshPeers,
42}
43
44#[derive(Clone, Debug, PartialEq, Eq)]
45pub struct PluginControlAvailability {
46    pub enabled: bool,
47    pub reason: Option<String>,
48    pub note: Option<String>,
49    pub source: PluginControlAvailabilitySource,
50}
51
52#[derive(Clone, Copy, Debug, PartialEq, Eq)]
53pub enum PluginControlAvailabilitySource {
54    Static,
55    Runtime,
56    Dependency,
57    Conflict,
58}
59
60#[derive(Clone, Debug, PartialEq)]
61pub struct PluginControlCondition {
62    pub key: String,
63    pub operator: PluginConditionOperator,
64    pub values: Vec<PluginConditionValue>,
65}
66
67#[derive(Clone, Copy, Debug, PartialEq, Eq)]
68pub enum PluginConditionOperator {
69    Equals,
70    NotEquals,
71    In,
72    NotIn,
73    Present,
74    Absent,
75    Truthy,
76    Falsy,
77    Range,
78}
79
80#[derive(Clone, Debug, PartialEq)]
81pub enum PluginConditionValue {
82    Bool(bool),
83    Integer(i64),
84    Float(f64),
85    String(String),
86}
87
88#[derive(Clone, Debug, PartialEq)]
89pub struct PluginConditionalDisable {
90    pub condition: PluginControlCondition,
91    pub reason: String,
92    pub note: Option<String>,
93    pub write_policy: PluginDisabledWritePolicy,
94}
95
96#[derive(Clone, Debug, PartialEq)]
97pub struct PluginConflictRule {
98    pub group: String,
99    pub condition: PluginControlCondition,
100    pub reason: String,
101    pub preferred_key: Option<String>,
102}
103
104#[derive(Clone, Copy, Debug, PartialEq, Eq)]
105pub enum PluginDisabledWritePolicy {
106    PreserveExisting,
107    OmitWhenDisabled,
108    RejectWhenDisabled,
109}