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.
Files changed (201) hide show
  1. {memorymaster-3.3.0/memorymaster.egg-info → memorymaster-3.3.1}/PKG-INFO +1 -1
  2. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/__init__.py +1 -1
  3. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/mcp_server.py +15 -2
  4. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/service.py +4 -0
  5. {memorymaster-3.3.0 → memorymaster-3.3.1/memorymaster.egg-info}/PKG-INFO +1 -1
  6. {memorymaster-3.3.0 → memorymaster-3.3.1}/pyproject.toml +1 -1
  7. {memorymaster-3.3.0 → memorymaster-3.3.1}/LICENSE +0 -0
  8. {memorymaster-3.3.0 → memorymaster-3.3.1}/README.md +0 -0
  9. {memorymaster-3.3.0 → memorymaster-3.3.1}/benchmarks/longmemeval_runner.py +0 -0
  10. {memorymaster-3.3.0 → memorymaster-3.3.1}/benchmarks/longmemeval_vector_runner.py +0 -0
  11. {memorymaster-3.3.0 → memorymaster-3.3.1}/benchmarks/perf_smoke.py +0 -0
  12. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/__main__.py +0 -0
  13. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/_storage_lifecycle.py +0 -0
  14. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/_storage_read.py +0 -0
  15. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/_storage_schema.py +0 -0
  16. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/_storage_shared.py +0 -0
  17. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/_storage_write_claims.py +0 -0
  18. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/access_control.py +0 -0
  19. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/auto_extractor.py +0 -0
  20. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/auto_resolver.py +0 -0
  21. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/claim_verifier.py +0 -0
  22. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/cli.py +0 -0
  23. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/cli_handlers_basic.py +0 -0
  24. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/cli_handlers_curation.py +0 -0
  25. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/cli_helpers.py +0 -0
  26. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config.py +0 -0
  27. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config_templates/claude-md-append.md +0 -0
  28. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config_templates/codex-agents-md-append.md +0 -0
  29. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config_templates/hooks/memorymaster-auto-ingest.py +0 -0
  30. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config_templates/hooks/memorymaster-classify.py +0 -0
  31. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config_templates/hooks/memorymaster-precompact.py +0 -0
  32. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config_templates/hooks/memorymaster-recall.py +0 -0
  33. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config_templates/hooks/memorymaster-session-start.py +0 -0
  34. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config_templates/hooks/memorymaster-steward-cycle.py +0 -0
  35. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/config_templates/hooks/memorymaster-validate-wiki.py +0 -0
  36. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/conflict_resolver.py +0 -0
  37. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/context_hook.py +0 -0
  38. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/context_optimizer.py +0 -0
  39. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/daily_notes.py +0 -0
  40. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/dashboard.py +0 -0
  41. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/db_merge.py +0 -0
  42. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/dream_bridge.py +0 -0
  43. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/embeddings.py +0 -0
  44. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/entity_graph.py +0 -0
  45. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/entity_registry.py +0 -0
  46. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/feedback.py +0 -0
  47. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/jobs/__init__.py +0 -0
  48. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/jobs/compact_summaries.py +0 -0
  49. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/jobs/compactor.py +0 -0
  50. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/jobs/decay.py +0 -0
  51. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/jobs/dedup.py +0 -0
  52. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/jobs/deterministic.py +0 -0
  53. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/jobs/extractor.py +0 -0
  54. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/jobs/staleness.py +0 -0
  55. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/jobs/validator.py +0 -0
  56. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/lifecycle.py +0 -0
  57. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/llm_provider.py +0 -0
  58. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/llm_steward.py +0 -0
  59. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/metrics_exporter.py +0 -0
  60. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/models.py +0 -0
  61. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/operator.py +0 -0
  62. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/operator_queue.py +0 -0
  63. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/plugins.py +0 -0
  64. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/policy.py +0 -0
  65. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/postgres_store.py +0 -0
  66. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/qdrant_backend.py +0 -0
  67. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/qmd_bridge.py +0 -0
  68. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/query_classifier.py +0 -0
  69. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/retrieval.py +0 -0
  70. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/retry.py +0 -0
  71. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/review.py +0 -0
  72. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/rl_trainer.py +0 -0
  73. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/scheduler.py +0 -0
  74. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/schema.py +0 -0
  75. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/schema.sql +0 -0
  76. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/schema_postgres.sql +0 -0
  77. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/security.py +0 -0
  78. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/session_tracker.py +0 -0
  79. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/setup_hooks.py +0 -0
  80. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/skill_evolver.py +0 -0
  81. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/snapshot.py +0 -0
  82. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/steward.py +0 -0
  83. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/storage.py +0 -0
  84. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/store_factory.py +0 -0
  85. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/transcript_miner.py +0 -0
  86. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/turn_schema.py +0 -0
  87. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/vault_bases.py +0 -0
  88. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/vault_curator.py +0 -0
  89. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/vault_exporter.py +0 -0
  90. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/vault_linter.py +0 -0
  91. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/vault_log.py +0 -0
  92. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/vault_query_capture.py +0 -0
  93. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/vault_synthesis.py +0 -0
  94. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/verbatim_store.py +0 -0
  95. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/webhook.py +0 -0
  96. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster/wiki_engine.py +0 -0
  97. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster.egg-info/SOURCES.txt +0 -0
  98. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster.egg-info/dependency_links.txt +0 -0
  99. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster.egg-info/entry_points.txt +0 -0
  100. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster.egg-info/requires.txt +0 -0
  101. {memorymaster-3.3.0 → memorymaster-3.3.1}/memorymaster.egg-info/top_level.txt +0 -0
  102. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/alert_operator_metrics.py +0 -0
  103. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/autoresearch_daemon.py +0 -0
  104. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/claude_to_turns.py +0 -0
  105. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/codex_live_to_turns.py +0 -0
  106. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/compaction_edge_cases.py +0 -0
  107. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/compaction_trace_report.py +0 -0
  108. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/compaction_trace_validate.py +0 -0
  109. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/confusion_matrix_eval.py +0 -0
  110. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/conversation_importer.py +0 -0
  111. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/conversation_to_turns.py +0 -0
  112. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/e2e_operator.py +0 -0
  113. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/email_live_to_turns.py +0 -0
  114. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/eval_memorymaster.py +0 -0
  115. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/generate_drill_signoff.py +0 -0
  116. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/git_to_turns.py +0 -0
  117. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/github_live_to_turns.py +0 -0
  118. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/gitnexus_to_claims.py +0 -0
  119. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/ingest_planning_docs.py +0 -0
  120. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/jira_live_to_turns.py +0 -0
  121. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/messages_to_turns.py +0 -0
  122. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/operator_metrics.py +0 -0
  123. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/recurring_incident_drill.py +0 -0
  124. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/release_readiness.py +0 -0
  125. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/run_codex_autologger.py +0 -0
  126. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/run_incident_drill.py +0 -0
  127. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/scheduled_ingest.py +0 -0
  128. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/setup-hooks.py +0 -0
  129. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/slack_live_to_turns.py +0 -0
  130. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/tickets_to_turns.py +0 -0
  131. {memorymaster-3.3.0 → memorymaster-3.3.1}/scripts/webhook_to_turns.py +0 -0
  132. {memorymaster-3.3.0 → memorymaster-3.3.1}/setup.cfg +0 -0
  133. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/conftest.py +0 -0
  134. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_access_control.py +0 -0
  135. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_auto_extractor.py +0 -0
  136. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_auto_resolver.py +0 -0
  137. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_auto_validate.py +0 -0
  138. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_claim_links.py +0 -0
  139. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_claude_to_turns.py +0 -0
  140. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_cli_json_flag.py +0 -0
  141. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_cli_ready.py +0 -0
  142. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_cli_review_queue.py +0 -0
  143. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_cli_subcommands.py +0 -0
  144. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_compact_summaries.py +0 -0
  145. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_compaction_trace.py +0 -0
  146. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_config.py +0 -0
  147. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_conflict_resolver.py +0 -0
  148. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_confusion_matrix_eval.py +0 -0
  149. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_connection_retry.py +0 -0
  150. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_connectors.py +0 -0
  151. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_context_hook.py +0 -0
  152. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_context_optimizer.py +0 -0
  153. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_conversation_to_turns.py +0 -0
  154. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_dashboard.py +0 -0
  155. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_dedup.py +0 -0
  156. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_deterministic_predicates.py +0 -0
  157. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_embeddings_coverage.py +0 -0
  158. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_entity_graph.py +0 -0
  159. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_events_schema.py +0 -0
  160. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_feedback.py +0 -0
  161. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_fts5_search.py +0 -0
  162. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_handler_regressions.py +0 -0
  163. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_human_id.py +0 -0
  164. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_incident_drill_runner.py +0 -0
  165. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_integration_workflows.py +0 -0
  166. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_lifecycle.py +0 -0
  167. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_llm_steward_coverage.py +0 -0
  168. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_llm_steward_key_rotation.py +0 -0
  169. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_mcp_helpers.py +0 -0
  170. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_metrics_exporter.py +0 -0
  171. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_obsidian_mind_patterns.py +0 -0
  172. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_operator.py +0 -0
  173. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_operator_queue.py +0 -0
  174. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_perf_smoke_config.py +0 -0
  175. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_plugins.py +0 -0
  176. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_policy_coverage.py +0 -0
  177. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_postgres_parity.py +0 -0
  178. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_qdrant_backend.py +0 -0
  179. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_qmd_bridge.py +0 -0
  180. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_query_classifier.py +0 -0
  181. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_reliability_hardening.py +0 -0
  182. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_review.py +0 -0
  183. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_rl_trainer.py +0 -0
  184. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_scheduler.py +0 -0
  185. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_schema.py +0 -0
  186. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_security_access.py +0 -0
  187. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_security_patterns.py +0 -0
  188. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_service_coverage.py +0 -0
  189. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_session_tracker.py +0 -0
  190. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_snapshot.py +0 -0
  191. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_sqlite_core.py +0 -0
  192. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_staleness.py +0 -0
  193. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_stealth_mode.py +0 -0
  194. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_steward.py +0 -0
  195. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_steward_resolution_parity.py +0 -0
  196. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_store_factory.py +0 -0
  197. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_tenant_isolation.py +0 -0
  198. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_turn_schema.py +0 -0
  199. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_vault_exporter.py +0 -0
  200. {memorymaster-3.3.0 → memorymaster-3.3.1}/tests/test_vector_search.py +0 -0
  201. {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.0
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
@@ -2,4 +2,4 @@
2
2
 
3
3
  __all__ = ["__version__"]
4
4
 
5
- __version__ = "3.3.0"
5
+ __version__ = "3.3.1"
@@ -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
- digest = hashlib.sha1(str(workspace_path).lower().encode("utf-8")).hexdigest()[:8]
98
- return f"project:{slug}:{digest}"
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.0
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.0"
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