pub struct MemDeleteParams {
pub name: String,
pub delete_files: bool,
pub note: Option<String>,
pub operator_mode: bool,
pub detach_incoming: bool,
}Expand description
Parameters for delete_mem. Mirrors the memstead_mem_delete
MCP tool’s wire shape 1:1, plus a transport-side operator_mode
flag the wire shape does not expose.
Fields§
§name: StringName of the mem to unregister. Must resolve in the current
snapshot — unknown names surface as UnknownMem.
delete_files: boolWhen true, remove the mem’s on-disk directory (folder
backends only) after unregistering. Default false —
unregister-only.
note: Option<String>Agent-authored provenance note (≤NOTE_MAX_LEN chars).
operator_mode: boolProcess-scoped operator-mode posture. When true, the
orchestrator skips the [[mem_management.delete]] allowlist
gate. Every other check (input validation, name resolution,
MEM_REFERENCED_BY_POLICY, backend cleanup) runs
identically — the policy safeguard is now gated by
delete_files: true instead of !operator_mode, so the
CLI’s mem delete (operator-mode) still hits the refusal
when cross-mem grants point at the target. Set only by
transports that established operator intent at boot
(memstead-mcp --operator-mode); never accepted as a wire-shape
input from agents. Defaults to false — agent-mode.
detach_incoming: boolMem-replacement affordance. When true, incoming cross-mem
edges from surviving Write-Mems do not refuse the delete
(MEM_HAS_INCOMING_REFS is skipped): the referrers’ files
stay untouched, their edges degrade to unresolved stub
targets in the in-memory index, and a later same-name
re-creation re-adopts them — the intended flow when a mem is
re-homed (backend or location change) under a stable name.
The detached referrers are reported on
MemDeleteResponse::detached_referrers so the caller can
verify re-adoption after the successor mem mounts. Default
false — the refusal stands.
Trait Implementations§
Source§impl Clone for MemDeleteParams
impl Clone for MemDeleteParams
Source§fn clone(&self) -> MemDeleteParams
fn clone(&self) -> MemDeleteParams
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for MemDeleteParams
impl RefUnwindSafe for MemDeleteParams
impl Send for MemDeleteParams
impl Sync for MemDeleteParams
impl Unpin for MemDeleteParams
impl UnsafeUnpin for MemDeleteParams
impl UnwindSafe for MemDeleteParams
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