pub struct WorkspaceSettings {
pub mem_create_rules: Vec<CreateRuleSetting>,
pub mem_delete_rules: Vec<DeleteRuleSetting>,
pub cross_mem_links: BTreeMap<String, CrossLinkValue>,
pub mcp: McpSection,
pub mutations: MutationsSection,
pub plugin: HashMap<String, Table>,
}Expand description
Workspace-level operator policy carried alongside the mount list.
Data carriers only — the matcher compilation lives in
crate::mem_management::CreateRuleSet. The engine carries the
raw settings so MCP handlers can surface them under memstead_health { include_config: true } and memstead_overview’s
lifecycle-namespaces section.
Default::default() is a totally-empty policy: zero create rules,
zero delete rules, no cross-mem link policy. The unified engine
uses this as the bootstrap value at construction time; consumers
that load a real policy call crate::Engine::set_settings.
Fields§
§mem_create_rules: Vec<CreateRuleSetting>Raw [[mem_management.create]] rules in declaration order.
Each entry carries a gitignore-style pattern matched against
the candidate mem path, an schemas[] allowlist, and an
optional default_cross_links synthesised cross-link
permission. Empty list means “no agent-driven mem creation
allowed” — memstead_mem_create rejects every candidate.
mem_delete_rules: Vec<DeleteRuleSetting>Raw [[mem_management.delete]] rules. Same first-match
semantics as Self::mem_create_rules, minus the schema
dimension. Empty list means “no agent-driven mem deletion
allowed”.
cross_mem_links: BTreeMap<String, CrossLinkValue>[cross_mem_links] policy — workspace-level cross-mem
edge permissions keyed by source mem. Empty map means
default-deny: every cross-mem edge fails until at least one
matching entry exists or a create-rule synthesised one.
mcp: McpSection[mcp] section — MCP-binary tuning knobs that operators set
per-workspace. The MCP binary reads this off
Engine::settings() at boot to size the response chunker
(token_budget) and filter the advertised tool surface
(disabled_tools). Defaulted when the section is absent.
mutations: MutationsSection[mutations] section — engine-wide mutation policy. The
require_notes field surfaces a WarningHint::NoteMissing on
mutation calls that omit a note. Default-zeroed when absent.
plugin: HashMap<String, Table>[plugin.*] namespace — opaque pass-through map keyed by
plugin identifier (claude_code, macos, …). Values are raw
TOML tables the engine never inspects; named plugins read
their own sub-table via memstead_health { include_config: true }.
Trait Implementations§
Source§impl Clone for WorkspaceSettings
impl Clone for WorkspaceSettings
Source§fn clone(&self) -> WorkspaceSettings
fn clone(&self) -> WorkspaceSettings
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for WorkspaceSettings
impl Debug for WorkspaceSettings
Source§impl Default for WorkspaceSettings
impl Default for WorkspaceSettings
Source§fn default() -> WorkspaceSettings
fn default() -> WorkspaceSettings
Auto Trait Implementations§
impl Freeze for WorkspaceSettings
impl RefUnwindSafe for WorkspaceSettings
impl Send for WorkspaceSettings
impl Sync for WorkspaceSettings
impl Unpin for WorkspaceSettings
impl UnsafeUnpin for WorkspaceSettings
impl UnwindSafe for WorkspaceSettings
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<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> Fruit for T
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