Expand description
Unified engine.
One Engine type, three storage backends: the engine sits
above MemBackend and routes reads / writes to the backend
named by each mount’s mem. The MCP filesystem-mem server
(memstead_mcp::filesystem_server::FilesystemMcpServer), every CLI
lean subcommand, and the macOS UniFFI consumer all reach the
engine through Engine::from_workspace_root (lean: folder +
archive backends) or memstead_git_branch::engine_from_workspace_root
(full: adds git-branch).
§Routing
Each mount holds one mem. Lookup is by mem name: the first
mount whose mem field equals the requested name wins. One mount
per mem is enforced — duplicates are a configuration bug, not a
feature, and the constructor rejects them.
Re-exports§
pub use archive::FromArchiveBytesError;pub use error::BootError;pub use error::EngineError;pub use error::INLINE_LIST_CAP;pub use error::MissingWikiLink;pub use error::ReferrerInfo;pub use error::SchemaSourceDiagnostic;pub use error::format_inline_list_overflow;pub use events::DEFAULT_BROADCAST_CAPACITY;pub use events::EventCallback;pub use events::MemChangedEvent;pub use events::SubscriptionHandle;pub use file_watcher::FileWatcherError;pub use file_watcher::MemRepoWatcher;pub use file_watcher::watch_mem_repo;pub use mutation::delete::DeleteReferrers;pub use mutation::PATCH_OLD_NOT_FOUND_CONTENT_CAP;pub use mutation::RELATIONSHIP_CYCLE_PATH_CAP;pub use outcomes::CreateEntityArgs;pub use outcomes::CreateEntityOutcome;pub use outcomes::DeleteEntityArgs;pub use outcomes::DeleteEntityOutcome;pub use outcomes::RelateAction;pub use outcomes::RelateEntityArgs;pub use outcomes::RelateEntityOutcome;pub use outcomes::RenameEntityArgs;pub use outcomes::RenameEntityOutcome;pub use outcomes::SetSchemaOutcome;pub use outcomes::SetSchemaResult;pub use outcomes::UpdateEntityArgs;pub use outcomes::UpdateEntityOutcome;pub use boot::SchemaResolver;pub use boot::resolve_builtin_schema_pin_pub;
Modules§
- apply_
commit - Apply a
CommitEnvelopeto the in-memory store. - archive
- Byte-based snapshot API: hydrate an engine from sealed
.memarchive bytes, and export a mem’s current state back to archive bytes. - boot
- Engine construction —
from_mounts*andfrom_workspace_root. - drift
- Drift detection and per-mem change synthesis.
- error
- Engine error envelopes.
- events
- Mem-change events: runtime-agnostic callback-based subscribe API.
- file_
watcher - Cross-process file-watcher convenience for the change-event surface.
- lifecycle
- Engine lifecycle — settings/workspace-root setters, runtime mem add/remove, reload, and export.
- mutation
- Engine mutation entrypoints — split per mutation kind.
- outcomes
- Argument/outcome shapes for the mutation entrypoints
(
Engine::create_entity,update_entity,delete_entity,relate_entity,rename_entity). The MCP wire envelopes and CLI command output formatters branch on these shapes; their field layouts are part of the engine’s public surface. - query
- Engine read paths — accessors and queries.
Structs§
- Engine
- Unified engine. Holds a list of mounted backends and routes mem-named operations to the right one.
- GitBranch
Ops - Bundle of git-branch-specific op dispatchers. Installed on the
engine at full boot. Each field is one ops-method that previously
lived on the
MemBackendtrait; moving them off the trait keeps the bytes-level primitive surface clean.
Type Aliases§
- Backend
Factory - Backend factory function pointer. Both flavours’ existing
instantiate_*_backendfunctions match this signature, so the type alias is what bridges the dependency direction (memstead-base can’t depend on memstead-git-branch) without an extra trait. Stateless,Send + Sync + Copy. - GitBranch
Branch Reset Fn Engine::branch_resetdispatch for git-branch mounts. Returns the outcome on success; surfacesBackendError::Othercarrying an in-band marker (UNKNOWN_REF:<raw>orPUSHED_COMMITS_PROTECTED:<sha,sha,...>) the engine layer un-marshals into typedEngineErrors.- GitBranch
Changes Since Fn Engine::changes_sincedispatch for git-branch mounts.- GitBranch
Diff Fn Engine::diffdispatch for git-branch mounts. Walks the two refs inside the workspace’s mem-repo gitdir, produces a per-entitycrate::ops::Diff. Refs are arbitrarygix::rev_parse_singleinputs — branch names, commit SHAs, tag names. Resolves each independently so cross-branch (cross-mem) diffs work uniformly.- GitBranch
Export Fn Engine::export_memdispatch for git-branch mounts.- GitBranch
Export ToBytes Fn Engine::export_mem_to_bytesdispatch for git-branch mounts.- GitBranch
Fetch Fn Engine::fetchdispatch for git-branch mounts.- GitBranch
Prune Residue Fn - Residue-prune dispatch for git-branch mounts.
The
create_memorchestrator calls this whenRecoveryAction::ForceOverwriteis selected against pre-existing storage residue. Dropsrefs/heads/<branch_full_path>and the__MEMSTEAD:mems/<branch_full_path>/config.jsonblob in one ref-edit transaction (the same call theMemBackend::delete_artifactsimpl wraps for delete-files flows). Surfaces as a function pointer somemstead-enginecan drive a prune against an unmounted gitdir without depending onmemstead-git-branch. - GitBranch
Pull Fn Engine::pulldispatch for git-branch mounts.- GitBranch
Push Fn Engine::pushdispatch for git-branch mounts.- GitBranch
Read Tree Fn - Read every
.mdblob atref_nameingitdir, returning(relative_path, utf8_content)pairs. Skips.memstead/engine-internal entries and non-blob nodes. Used by the pre-merge schema-validation passEngine::pullandEngine::pushrun before they advance the branch pointer / push to the remote. - GitBranch
Remote AddFn Engine::remote_adddispatch — configures a named remote on the mem-repo gitdir (upsert: add, or set-url when it already exists).- GitBranch
Write Schema Fn Engine::install_schemadispatch for the git-branch backend: write a schema package ((relative-path, bytes)pairs) onto the workspace’s unified__MEMSTEAD:schemas/<name>@<version>/ref and return the resulting commit sha. Mirrorsmemstead_git_branch::storage_memstead::write_schema_to_memstead_ref.