mesh_llm_config/plugin_validation/
control_behavior.rs1#[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}