memstead admin — admin-only moderation over the registry’s admin
endpoints. There is deliberately no web admin panel: moderation runs
from the terminal, gated server-side by the MEMSTEAD_ADMINS
allowlist (the CLI just sends the caller’s token; a non-admin gets a
403). Every action is recorded in the registry’s append-only audit
log. Like unpublish, these destructive calls never auto-trigger the
Device Flow — authenticate first with memstead login.
memstead reload — refresh the engine’s in-memory store from on-disk
branch state. CLI surface parity with the MCP memstead_reload tool:
without the Reload subcommand variant, memstead reload would refuse
with unrecognized subcommand while the same op stays reachable through
MCP. AGENTS.md’s parity rule
(“every operation reachable through the engine SHOULD be
reachable via both UniFFI and CLI”) makes this the correct
direction to close.
memstead fetch / memstead pull / memstead push CLI subcommands. The
three engine surfaces share refusal codes and an outcome shape;
the CLI front-end is a thin print of each.
Combined --help epilog for memstead create: the section-bytes-
verbatim note followed by the title→slug pipeline description.
clap’s after_long_help takes a single string, so the two
epilogs are pre-concatenated here.
--help epilog for memstead search and memstead list. Names the five
frozen named-flag shortcuts and points at --filter KEY=VALUE as
the path to any other schema-declared filterable: equality field.
--help epilog for memstead create and memstead update. The CLI
stores --section / --append / --patch flag values as bytes
verbatim — backslash escapes (\n, \t, …) are NOT interpreted.
Agents reading the help learn the multi-line-authoring escape hatch
(--from <JSON file>) before they hit the friction.
--help text describing the title→slug pipeline. Shared by
memstead create and memstead rename so an agent reading either
command’s help can predict what slug a given title will produce
(and therefore why the strict gate refuses titles outside the
pipeline’s accepted character classes).
Merge a mem_changed notice array into a --json CLI response
body. No-op when no reload happened during the operation or the
body is not a JSON object. Mirrors the MCP server’s
attach_mem_changed so the two surfaces emit the same key.
(Always compiled; on lean the engine never stashes a notice, so
notices is empty and this no-ops.)
Parse a KEY=VALUE argument supplied via --filter. Returns a
typed CliError on malformed input so the failure rides the
INVALID_INPUT envelope rather than crashing the process.
Render a human-readable mem_changed block for markdown CLI
output. Empty when no reload happened. Names memstead changes-since
(never memstead diff) for the follow-up, matching the cross-surface
recovery contract. (Always compiled; on lean notices is always
empty, so this returns the empty string.)
Render the per-entity-type guidance block surfaced on
memstead_create’s text mirror. Emits one “Type-level guidance”
section per entity_type key in the map. Returns an empty string
when the map is empty so callers can concatenate unconditionally.
The structured channel ships the same data top-level on
type_guidance.