memorymaster 3.3.0__tar.gz → 3.3.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {memorymaster-3.3.0/memorymaster.egg-info → memorymaster-3.3.1}/PKG-INFO +1 -1
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/__init__.py +1 -1
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/mcp_server.py +15 -2
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/service.py +4 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1/memorymaster.egg-info}/PKG-INFO +1 -1
- {memorymaster-3.3.0 → memorymaster-3.3.1}/pyproject.toml +1 -1
- {memorymaster-3.3.0 → memorymaster-3.3.1}/LICENSE +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/README.md +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/benchmarks/longmemeval_runner.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/benchmarks/longmemeval_vector_runner.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/benchmarks/perf_smoke.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/__main__.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/_storage_lifecycle.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/_storage_read.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/_storage_schema.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/_storage_shared.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/_storage_write_claims.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/access_control.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/auto_extractor.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/auto_resolver.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/claim_verifier.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/cli.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/cli_handlers_basic.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/cli_handlers_curation.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/cli_helpers.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config_templates/claude-md-append.md +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config_templates/codex-agents-md-append.md +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config_templates/hooks/memorymaster-auto-ingest.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config_templates/hooks/memorymaster-classify.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config_templates/hooks/memorymaster-precompact.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config_templates/hooks/memorymaster-recall.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config_templates/hooks/memorymaster-session-start.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config_templates/hooks/memorymaster-steward-cycle.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config_templates/hooks/memorymaster-validate-wiki.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/conflict_resolver.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/context_hook.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/context_optimizer.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/daily_notes.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/dashboard.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/db_merge.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/dream_bridge.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/embeddings.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/entity_graph.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/entity_registry.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/feedback.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/jobs/__init__.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/jobs/compact_summaries.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/jobs/compactor.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/jobs/decay.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/jobs/dedup.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/jobs/deterministic.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/jobs/extractor.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/jobs/staleness.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/jobs/validator.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/lifecycle.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/llm_provider.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/llm_steward.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/metrics_exporter.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/models.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/operator.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/operator_queue.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/plugins.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/policy.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/postgres_store.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/qdrant_backend.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/qmd_bridge.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/query_classifier.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/retrieval.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/retry.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/review.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/rl_trainer.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/scheduler.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/schema.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/schema.sql +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/schema_postgres.sql +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/security.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/session_tracker.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/setup_hooks.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/skill_evolver.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/snapshot.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/steward.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/storage.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/store_factory.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/transcript_miner.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/turn_schema.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/vault_bases.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/vault_curator.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/vault_exporter.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/vault_linter.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/vault_log.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/vault_query_capture.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/vault_synthesis.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/verbatim_store.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/webhook.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/wiki_engine.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster.egg-info/SOURCES.txt +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster.egg-info/dependency_links.txt +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster.egg-info/entry_points.txt +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster.egg-info/requires.txt +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster.egg-info/top_level.txt +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/alert_operator_metrics.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/autoresearch_daemon.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/claude_to_turns.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/codex_live_to_turns.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/compaction_edge_cases.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/compaction_trace_report.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/compaction_trace_validate.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/confusion_matrix_eval.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/conversation_importer.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/conversation_to_turns.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/e2e_operator.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/email_live_to_turns.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/eval_memorymaster.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/generate_drill_signoff.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/git_to_turns.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/github_live_to_turns.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/gitnexus_to_claims.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/ingest_planning_docs.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/jira_live_to_turns.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/messages_to_turns.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/operator_metrics.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/recurring_incident_drill.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/release_readiness.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/run_codex_autologger.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/run_incident_drill.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/scheduled_ingest.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/setup-hooks.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/slack_live_to_turns.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/tickets_to_turns.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/webhook_to_turns.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/setup.cfg +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/conftest.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_access_control.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_auto_extractor.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_auto_resolver.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_auto_validate.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_claim_links.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_claude_to_turns.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_cli_json_flag.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_cli_ready.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_cli_review_queue.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_cli_subcommands.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_compact_summaries.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_compaction_trace.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_config.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_conflict_resolver.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_confusion_matrix_eval.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_connection_retry.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_connectors.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_context_hook.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_context_optimizer.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_conversation_to_turns.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_dashboard.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_dedup.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_deterministic_predicates.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_embeddings_coverage.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_entity_graph.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_events_schema.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_feedback.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_fts5_search.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_handler_regressions.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_human_id.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_incident_drill_runner.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_integration_workflows.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_lifecycle.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_llm_steward_coverage.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_llm_steward_key_rotation.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_mcp_helpers.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_metrics_exporter.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_obsidian_mind_patterns.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_operator.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_operator_queue.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_perf_smoke_config.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_plugins.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_policy_coverage.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_postgres_parity.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_qdrant_backend.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_qmd_bridge.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_query_classifier.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_reliability_hardening.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_review.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_rl_trainer.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_scheduler.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_schema.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_security_access.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_security_patterns.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_service_coverage.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_session_tracker.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_snapshot.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_sqlite_core.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_staleness.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_stealth_mode.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_steward.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_steward_resolution_parity.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_store_factory.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_tenant_isolation.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_turn_schema.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_vault_exporter.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_vector_search.py +0 -0
- {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_webhook.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: memorymaster
|
|
3
|
-
Version: 3.3.
|
|
3
|
+
Version: 3.3.1
|
|
4
4
|
Summary: Production-grade memory reliability system for AI coding agents. Lifecycle-managed claims with citations, conflict detection, steward governance, and MCP integration.
|
|
5
5
|
Author: wolverin0
|
|
6
6
|
License: MIT
|
|
@@ -89,13 +89,26 @@ def _parse_scope_allowlist(raw: str) -> list[str] | None:
|
|
|
89
89
|
|
|
90
90
|
|
|
91
91
|
def _project_scope(workspace: str) -> str:
|
|
92
|
+
"""Derive a project scope from a workspace path.
|
|
93
|
+
|
|
94
|
+
Returns the canonical ``project:<slug>`` form by default. The legacy
|
|
95
|
+
hash-suffix form ``project:<slug>:<sha1[:8]>`` is only used when the env
|
|
96
|
+
var ``MEMORYMASTER_SCOPE_DISAMBIGUATE=1`` is set — that's the escape hatch
|
|
97
|
+
for hosts that genuinely have two different workspaces with the same
|
|
98
|
+
directory name. For the common case (one workspace per slug on a host),
|
|
99
|
+
dropping the hash prevents scope fragmentation where CLI ingests write
|
|
100
|
+
``project:wezbridge`` and MCP ingests write ``project:wezbridge:a6a83c6a``
|
|
101
|
+
and nobody finds each other.
|
|
102
|
+
"""
|
|
92
103
|
if _ENV_DEFAULT_PROJECT_SCOPE:
|
|
93
104
|
return _ENV_DEFAULT_PROJECT_SCOPE
|
|
94
105
|
workspace_path = Path(_resolve_workspace(workspace)).resolve()
|
|
95
106
|
slug_base = workspace_path.name.strip().lower() or "workspace"
|
|
96
107
|
slug = _SCOPE_SAFE_RE.sub("-", slug_base).strip("-") or "workspace"
|
|
97
|
-
|
|
98
|
-
|
|
108
|
+
if os.getenv("MEMORYMASTER_SCOPE_DISAMBIGUATE", "").strip().lower() in ("1", "true", "yes"):
|
|
109
|
+
digest = hashlib.sha1(str(workspace_path).lower().encode("utf-8")).hexdigest()[:8]
|
|
110
|
+
return f"project:{slug}:{digest}"
|
|
111
|
+
return f"project:{slug}"
|
|
99
112
|
|
|
100
113
|
|
|
101
114
|
def _effective_ingest_scope(scope: str, workspace: str) -> str:
|
|
@@ -120,6 +120,10 @@ class MemoryService:
|
|
|
120
120
|
raise ValueError("Claim text cannot be empty.")
|
|
121
121
|
if not citations:
|
|
122
122
|
citations = [CitationInput(source="mcp-session", locator=scope or "project")]
|
|
123
|
+
# Normalize claim_type to lowercase so routing hints like "DECISION"
|
|
124
|
+
# from the classify hook don't create a separate type from "decision".
|
|
125
|
+
if claim_type:
|
|
126
|
+
claim_type = claim_type.strip().lower() or None
|
|
123
127
|
# Dedup by idempotency key
|
|
124
128
|
normalized_idempotency_key = (idempotency_key or "").strip() or None
|
|
125
129
|
if normalized_idempotency_key is not None and hasattr(self.store, "get_claim_by_idempotency_key"):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: memorymaster
|
|
3
|
-
Version: 3.3.
|
|
3
|
+
Version: 3.3.1
|
|
4
4
|
Summary: Production-grade memory reliability system for AI coding agents. Lifecycle-managed claims with citations, conflict detection, steward governance, and MCP integration.
|
|
5
5
|
Author: wolverin0
|
|
6
6
|
License: MIT
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "memorymaster"
|
|
7
|
-
version = "3.3.
|
|
7
|
+
version = "3.3.1"
|
|
8
8
|
description = "Production-grade memory reliability system for AI coding agents. Lifecycle-managed claims with citations, conflict detection, steward governance, and MCP integration."
|
|
9
9
|
license = {text = "MIT"}
|
|
10
10
|
authors = [{name = "wolverin0"}]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config_templates/codex-agents-md-append.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config_templates/hooks/memorymaster-recall.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|