pub struct Capabilities {
pub fs_read: Vec<PathPattern>,
pub fs_write: Vec<PathPattern>,
pub env_read: Vec<String>,
pub net: Vec<NetPattern>,
pub stdio: StdioCapability,
}Expand description
Plugin capability declarations
Plugins declare what system resources they need access to. The host will prompt users to grant these permissions before execution.
§Example
use sen_plugin_api::{Capabilities, PathPattern, StdioCapability};
let caps = Capabilities::default()
.with_fs_read(vec![PathPattern::new("./data").recursive()])
.with_fs_write(vec![PathPattern::new("./output")])
.with_stdio(StdioCapability::stdout_stderr());Fields§
§fs_read: Vec<PathPattern>Filesystem read access paths Relative paths resolved from CWD, supports ~ expansion
fs_write: Vec<PathPattern>Filesystem write access paths
env_read: Vec<String>Environment variable access patterns Supports glob: “MY_*”, exact: “HOME”
net: Vec<NetPattern>Network access patterns (WASI Preview 2)
stdio: StdioCapabilityStandard I/O access
Implementations§
Source§impl Capabilities
impl Capabilities
Sourcepub fn none() -> Capabilities
pub fn none() -> Capabilities
Create empty capabilities (no permissions)
Sourcepub fn with_fs_read(self, paths: Vec<PathPattern>) -> Capabilities
pub fn with_fs_read(self, paths: Vec<PathPattern>) -> Capabilities
Add filesystem read paths
Sourcepub fn with_fs_write(self, paths: Vec<PathPattern>) -> Capabilities
pub fn with_fs_write(self, paths: Vec<PathPattern>) -> Capabilities
Add filesystem write paths
Sourcepub fn with_env_read(self, patterns: Vec<String>) -> Capabilities
pub fn with_env_read(self, patterns: Vec<String>) -> Capabilities
Add environment variable patterns
Sourcepub fn with_net(self, patterns: Vec<NetPattern>) -> Capabilities
pub fn with_net(self, patterns: Vec<NetPattern>) -> Capabilities
Add network patterns
Sourcepub fn with_stdio(self, stdio: StdioCapability) -> Capabilities
pub fn with_stdio(self, stdio: StdioCapability) -> Capabilities
Set stdio capabilities
Sourcepub fn is_subset_of(&self, other: &Capabilities) -> bool
pub fn is_subset_of(&self, other: &Capabilities) -> bool
Check if self is a subset of other (all requested capabilities are granted)
Sourcepub fn compute_hash(&self) -> String
pub fn compute_hash(&self) -> String
Compute hash for change detection
Uses blake3 for cross-process stability (unlike DefaultHasher which may produce different hashes across processes/runs).
Trait Implementations§
Source§impl Clone for Capabilities
impl Clone for Capabilities
Source§fn clone(&self) -> Capabilities
fn clone(&self) -> Capabilities
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for Capabilities
impl Debug for Capabilities
Source§impl Default for Capabilities
impl Default for Capabilities
Source§fn default() -> Capabilities
fn default() -> Capabilities
Source§impl<'de> Deserialize<'de> for Capabilities
impl<'de> Deserialize<'de> for Capabilities
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Capabilities, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Capabilities, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for Capabilities
impl PartialEq for Capabilities
Source§impl Serialize for Capabilities
impl Serialize for Capabilities
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,
impl Eq for Capabilities
impl StructuralPartialEq for Capabilities
Auto Trait Implementations§
impl Freeze for Capabilities
impl RefUnwindSafe for Capabilities
impl Send for Capabilities
impl Sync for Capabilities
impl Unpin for Capabilities
impl UnwindSafe for Capabilities
Blanket Implementations§
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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