Conversation
…age helper rename Bundles PR #491-#504 (namespace / agent_id validation across every public surface — MCP, CLI, Python adapter) and PR #505 (internal storage helper rename for disambiguation). See CHANGELOG [0.1.32] for the full BREAKING migration notes. The user-facing change is that previously-silent namespace rewrites and silent storage of malformed shapes now raise InvalidNameError instead, with a uniform "invalid namespace 'X': ..." / "invalid agent-id 'X': ..." error fragment across every entry point. Co-Authored-By: Claude <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
v0.1.32 ships the caller-supplied namespace validation series (PR #491–#504) plus a sibling internal rename (PR #505). User-facing behavior change — see Migration below.
Feature PRs in this release
validate_agent_idat session-start (CLI + MCP)mem_agent_register/mem_agent_search/mm agent registerMemtomemStore.start_agent_sessionnamespace=overrides on every session-start surfacemem_ns_*CRUD toolsmm agent share --targetCLI siblingPlus follow-up:
validate_namespace -> _is_valid_ns_chars(disambiguates from constants validator; bidirectional docstring cross-ref)Migration
Caller-supplied
namespace=/target=overrides on every public surface (MCP, CLI, Python adapter) now reject malformed shapes viavalidate_namespace. Existing in-tree shapes (default,shared,archive:summary,claude-memory:*,agent-runtime:planner,custom:scope) are unchanged.Rejected: anything containing slashes, whitespace, comma, control chars, leading dash, or more than one colon under the
agent-runtime:prefix. The bare single-segment"agent-runtime"is also rejected (shadows the multi-agent prefix). Anyone holding such a namespace should rename viamem_ns_renamebefore running session-start with the override.mem_agent_register/mem_agent_search/mm agent registernow reject malformedagent_idvalues loudly instead of silently rewriting them. TheMemtomemStore.start_agent_sessionexception narrows fromValueError("agent_id must be a non-empty string")toInvalidNameError("invalid agent-id 'X': ...")—InvalidNameErroris aValueErrorsubclass soexcept ValueError:callers keep working, but substring-matching the old message text breaks; switch to"invalid agent-id".See CHANGELOG
[0.1.32]for the full per-surface contract.Release mechanics
pyproject.toml(0.1.31 → 0.1.32) +uv.lock(workspace memtomem entry) +CHANGELOG.md([0.1.32]dated header inserted under[Unreleased]).feedback_prerelease_dry_run.mdbefore production tag.Test plan
test-v0.1.32a1tag → TestPyPI publish (env approval needed) → fresh-install smoke (uv pip install --index-url TestPyPI --extra-index-url PyPI memtomem==0.1.32) — gated bymm --version+ a one-shotmm session start --agent-id plannersanityv0.1.32tag → production PyPI (same-sha auto-skip per workflow memo, fall back to manual approve ifpending_deploymentsnon-empty)gh release create v0.1.32with notes cut from CHANGELOG[0.1.32]section🤖 Generated with Claude Code