Skip to main content

MemCreateParams

Struct MemCreateParams 

Source
pub struct MemCreateParams {
    pub name: String,
    pub location: PathBuf,
    pub schema_ref: SchemaRef,
    pub vcs: Option<VcsConfig>,
    pub note: Option<String>,
    pub operator_mode: bool,
    pub recovery: Option<RecoveryAction>,
    pub write_guidance: HashMap<String, Value>,
    pub storage: Option<StorageKind>,
    pub actor: Actor,
    pub client: Option<ClientId>,
}
Expand description

Parameters for create_mem. Mirrors the memstead_mem_create MCP tool’s wire shape 1:1.

Hierarchical paths are first-class mem identifiers — there is no separate path field; name carries the full path (e.g. "team/sub-mem") directly, validated via memstead_base::entity::id::validate_mem_name_grammar. The branch ref composes as refs/heads/<name> and the __MEMSTEAD config blob as __MEMSTEAD:mems/<name>/config.json with no extra composition step.

Fields§

§name: String

Name of the new mem — the full hierarchical identifier (e.g. "sub-mem" for flat layouts or "team/sub-mem" for hierarchical layouts). Must be unique across every visible mem in the current snapshot, match the basename of location (folder backend identity invariant on the trailing path segment), and satisfy the mem-name grammar ([a-z0-9-]+(/[a-z0-9-]+)*).

§location: PathBuf

Target location. Absolute or workspace-relative. Canonicalized inside the orchestrator before the allowlist check.

§schema_ref: SchemaRef

Schema pin for the new mem (name@x.y.z).

§vcs: Option<VcsConfig>

Optional vcs config override (signing keys, identity hints). Persisted into the per-mem config blob alongside schema and name. Most callers pass None — defaults come from the workspace’s .memstead/workspace.toml. Mirrors full’s memstead_git_branch::MemCreateParams.vcs.

§note: Option<String>

Agent-authored provenance note (≤NOTE_MAX_LEN chars).

§operator_mode: bool

Process-scoped operator-mode posture. When true, the orchestrator skips the [[mem_management.create]] allowlist gate and the matched-rule schema gate it derives — every other check (input validation, schema canonicalisation, basename invariant, name collision, backend instantiation) runs identically. 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.

§recovery: Option<RecoveryAction>

Explicit recovery action for the case where the storage already carries residue for the composed branch path. None is the default — the engine then routes by tombstone presence: residue with an unregistered_at tombstone (deliberate operator state from memstead mem unregister) defaults to [RecoveryAction::Reattach], residue without a tombstone refuses with MEM_STORAGE_RESIDUE_DETECTED. Setting an explicit value overrides the tombstone-driven default. A bare mem init against a name with no residue at all ignores this field (the happy path is unchanged).

§write_guidance: HashMap<String, Value>

Optional opaque per-instance writing guidance, persisted verbatim into the new mem’s config (writeGuidance) in the seed commit. The engine never inspects the map’s contents (schema-strictness D8 — writeGuidance is client-owned vocabulary); a client that read a schema package’s mem-template.json fills the instance keys and passes them here. Empty map (the default) seeds no guidance, identical to pre-parameter behaviour.

§storage: Option<StorageKind>

Explicit storage-backend override. None (default) keeps the workspace-shape heuristic — git-branch when <workspace_root>/mem-repo/.git/ exists, folder otherwise. Some(StorageKind::Folder) forces a folder mount even in a mem-repo workspace: the mem’s markdown files live at location, visible in the outer tree. Some(StorageKind::GitBranch) in a workspace WITHOUT mem-repo/.git/ refuses with EngineError::InvalidInput — there is no gitdir to host the branch.

§actor: Actor

Caller category for the seed commit’s provenance trailer. Transports pass their own: MCP Actor::Agent, the CLI Actor::Cli, application embedders (UniFFI, HTTP) Actor::App. Pre-parameter behaviour hardcoded Agent for every transport — the macOS app’s mem creations were misattributed as agent writes.

§client: Option<ClientId>

Client identity paired with actor — renders name@version in the seed commit’s Client: trailer and derives its author, exactly as entity mutations do.

Trait Implementations§

Source§

impl Clone for MemCreateParams

Source§

fn clone(&self) -> MemCreateParams

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for MemCreateParams

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts 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>

Converts 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)

Converts &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)

Converts &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
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_sync(self: Box<T>) -> Box<dyn Any + Send + Sync>

Converts Box<Trait> (where Trait: DowncastSync) to Box<dyn Any + Send + Sync>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Converts Arc<Trait> (where Trait: DowncastSync) to Arc<Any>, which can then be downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Fruit for T
where T: Send + Downcast,

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more