Struct PluginsConfig
pub struct PluginsConfig {
pub enabled: bool,
pub plugins_dir: String,
pub auto_discover: bool,
pub max_active_instances: usize,
pub security: PluginSecurityConfig,
pub limits: PluginLimitsConfig,
pub entries: Vec<PluginEntryConfig>,
}Expand description
Plugin system configuration.
Fields§
§enabled: boolEnable the plugin system (default: false)
plugins_dir: StringDirectory where plugins are stored
auto_discover: boolAuto-discover and load plugins on startup (default: false)
This gates the package-bound tool and skill instances the activation
plan discovers from installed manifests. Explicit
[channels.plugin.<alias>] declarations are operator-named, not
discovered, so they activate without it.
max_active_instances: usizeMaximum number of logical plugin instances admitted across capabilities.
This counts admitted instances, not installed packages: one package
that provides both a channel binding and a tool consumes two. It
replaces the never-enforced plugins.max_plugins key, which counted
packages; because the units differ, an old max_plugins value is not
carried over. See the plugin activation docs for the migration note.
security: PluginSecurityConfigPlugin signature verification security settings
limits: PluginLimitsConfigPer-call WASM execution limits
entries: Vec<PluginEntryConfig>Implementations§
Source§impl PluginsConfig
impl PluginsConfig
Sourcepub fn configurable_prefix() -> &'static str
pub fn configurable_prefix() -> &'static str
Returns the #[prefix] value for this Configurable struct.
Sourcepub fn init_requires_explicit_config() -> bool
pub fn init_requires_explicit_config() -> bool
True when this struct has a required leaf field that a
bare/ancestor-prefix init_defaults scaffold must not
materialize (it would fill the field with its Rust
Default, which prune_empty_leaves then strips on save,
leaving a partial sub-table that fails strict reload).
Explicitly targeting this section (or a descendant of it)
still scaffolds regardless of this flag, so the section can
be materialized for the operator to fill in.
Sourcepub fn secret_fields(&self) -> Vec<SecretFieldInfo>
pub fn secret_fields(&self) -> Vec<SecretFieldInfo>
Returns metadata about all #[secret] fields on this struct and nested children.
pub fn secret_field_terminals() -> Vec<&'static str>
Sourcepub fn encrypt_secrets(&mut self, store: &SecretStore) -> Result<(), Error>
pub fn encrypt_secrets(&mut self, store: &SecretStore) -> Result<(), Error>
Encrypt all secret fields in place using the provided store.
Sourcepub fn decrypt_secrets(&mut self, store: &SecretStore) -> Result<(), Error>
pub fn decrypt_secrets(&mut self, store: &SecretStore) -> Result<(), Error>
Decrypt all secret fields in place using the provided store.
Sourcepub fn set_secret(&mut self, name: &str, value: String) -> Result<(), Error>
pub fn set_secret(&mut self, name: &str, value: String) -> Result<(), Error>
Set a secret field by its full dotted name, dispatching to nested children.
Sourcepub fn prop_fields(&self) -> Vec<PropFieldInfo>
pub fn prop_fields(&self) -> Vec<PropFieldInfo>
Returns metadata about all property fields on this struct and nested children.
Sourcepub fn get_prop(&self, name: &str) -> Result<String, Error>
pub fn get_prop(&self, name: &str) -> Result<String, Error>
Get a property value by its full dotted name, returning it as a display string.
Sourcepub fn set_prop(&mut self, name: &str, value_str: &str) -> Result<(), Error>
pub fn set_prop(&mut self, name: &str, value_str: &str) -> Result<(), Error>
Set a property value by its full dotted name, parsing from string.
Sourcepub fn prop_is_secret(name: &str) -> bool
pub fn prop_is_secret(name: &str) -> bool
Check if a property name refers to a secret field (static, no instance needed).
Sourcepub fn init_defaults(&mut self, prefix: Option<&str>) -> Vec<&'static str>
pub fn init_defaults(&mut self, prefix: Option<&str>) -> Vec<&'static str>
Instantiate None nested sections whose prefix matches.
Returns the prefixes that were initialized.
Sourcepub fn map_key_sections() -> Vec<MapKeySection>
pub fn map_key_sections() -> Vec<MapKeySection>
Enumerate every map-keyed (HashMap<String, T>) and list-shaped
(Vec<T>) section discoverable from this Configurable’s tree.
The dashboard / CLI consume this to surface “+ Add” affordances
without hardcoding the section list.
Sourcepub fn nested_section_help(name: &str) -> Option<&'static str>
pub fn nested_section_help(name: &str) -> Option<&'static str>
Help blurb for a #[nested] field on this struct, sourced from
the field-level /// docstring. Returns None for unknown
names so callers can fall through to a different lookup.
pub fn nested_section_group(name: &str) -> Option<&'static str>
Sourcepub fn get_map_keys(&self, section_path: &str) -> Option<Vec<String>>
pub fn get_map_keys(&self, section_path: &str) -> Option<Vec<String>>
Return the current alias keys at section_path, or None if
the path doesn’t resolve to a map-keyed section in this tree.
pub fn nested_option_entries(&self) -> Vec<NestedOptionEntry>
pub fn create_map_key( &mut self, section_path: &str, map_key: &str, ) -> Result<bool, String>
pub fn delete_map_key( &mut self, section_path: &str, map_key: &str, ) -> Result<bool, String>
pub fn rename_map_key( &mut self, section_path: &str, map_key: &str, new_key: &str, ) -> Result<bool, String>
Source§impl PluginsConfig
impl PluginsConfig
pub fn entry_config( &self, instance_key: &str, ) -> Result<Option<&HashMap<String, String>>, DuplicatePluginConfigEntry>
Sourcepub fn entry_egress(&self, alias: &str) -> (Vec<String>, Vec<String>)
pub fn entry_egress(&self, alias: &str) -> (Vec<String>, Vec<String>)
The granted egress allowlist and private-address carveout for alias,
as (egress_hosts, egress_allow_private).
A missing entry returns two empty lists, which is deny-everything. This
is the read the plugin host performs per request, so an operator’s
edit applies without re-instantiating the guest (resolved from live
config at use time
resolution). Both lists are returned as authored; they were validated by
Config::validate at load, and the matcher re-canonicalizes nothing.
Source§impl PluginsConfig
impl PluginsConfig
Sourcepub fn resolved_plugins_dir(&self) -> PathBuf
pub fn resolved_plugins_dir(&self) -> PathBuf
Resolve plugins_dir to an absolute path, expanding a leading ~/.
This is the single source of truth for the plugin directory: the CLI,
runtime tool/skill discovery, and the gateway all resolve through it so
that zeroclaw plugin install and the agent agree on one location.
Pure — performs no filesystem I/O.
Trait Implementations§
Source§impl Clone for PluginsConfig
impl Clone for PluginsConfig
Source§fn clone(&self) -> PluginsConfig
fn clone(&self) -> PluginsConfig
1.0.0 (const: unstable) · §fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PluginsConfig
impl Debug for PluginsConfig
Source§impl Default for PluginsConfig
impl Default for PluginsConfig
Source§fn default() -> PluginsConfig
fn default() -> PluginsConfig
Source§impl<'de> Deserialize<'de> for PluginsConfig
impl<'de> Deserialize<'de> for PluginsConfig
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<PluginsConfig, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<PluginsConfig, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for PluginsConfig
impl JsonSchema for PluginsConfig
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl MaskSecrets for PluginsConfig
impl MaskSecrets for PluginsConfig
fn mask_secrets(&mut self)
fn restore_secrets_from(&mut self, current: &PluginsConfig)
Source§impl Serialize for PluginsConfig
impl Serialize for PluginsConfig
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Auto Trait Implementations§
impl Freeze for PluginsConfig
impl RefUnwindSafe for PluginsConfig
impl Send for PluginsConfig
impl Sync for PluginsConfig
impl Unpin for PluginsConfig
impl UnsafeUnpin for PluginsConfig
impl UnwindSafe for PluginsConfig
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more