mnemo-dev 0.5.2__tar.gz → 0.6.0__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 (192) hide show
  1. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/PKG-INFO +103 -38
  2. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/README.md +102 -37
  3. mnemo_dev-0.6.0/mnemo/__init__.py +5 -0
  4. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/api_discovery/__init__.py +10 -0
  5. mnemo_dev-0.6.0/mnemo/breaking/__init__.py +2 -0
  6. mnemo_dev-0.6.0/mnemo/cli.py +950 -0
  7. mnemo_dev-0.6.0/mnemo/config.py +97 -0
  8. mnemo_dev-0.6.0/mnemo/conventions/__init__.py +2 -0
  9. mnemo_dev-0.6.0/mnemo/core/__init__.py +12 -0
  10. mnemo_dev-0.6.0/mnemo/core/atomic.py +71 -0
  11. mnemo_dev-0.6.0/mnemo/core/datamark.py +40 -0
  12. mnemo_dev-0.6.0/mnemo/core/injection.py +36 -0
  13. mnemo_dev-0.6.0/mnemo/core/store.py +110 -0
  14. mnemo_dev-0.6.0/mnemo/corrections/__init__.py +2 -0
  15. mnemo_dev-0.6.0/mnemo/dead_code/__init__.py +2 -0
  16. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/doctor.py +42 -0
  17. mnemo_dev-0.6.0/mnemo/drift/__init__.py +3 -0
  18. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/embeddings/__init__.py +27 -0
  19. mnemo_dev-0.6.0/mnemo/embeddings/dense.py +135 -0
  20. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/engine/clustering.py +4 -3
  21. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/engine/freshness.py +38 -25
  22. mnemo_dev-0.6.0/mnemo/engine/java_enrich.py +189 -0
  23. mnemo_dev-0.6.0/mnemo/engine/layout.py +91 -0
  24. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/engine/pipeline.py +27 -5
  25. mnemo_dev-0.6.0/mnemo/engine/query.py +51 -0
  26. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/engine/schema.py +1 -0
  27. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/engine/scope.py +104 -58
  28. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/enrichment.py +5 -5
  29. mnemo_dev-0.6.0/mnemo/errors/__init__.py +2 -0
  30. mnemo_dev-0.6.0/mnemo/health/__init__.py +2 -0
  31. mnemo_dev-0.6.0/mnemo/hooks/__init__.py +23 -0
  32. mnemo_dev-0.6.0/mnemo/hooks/claude.py +120 -0
  33. mnemo_dev-0.6.0/mnemo/hooks/discovery.py +46 -0
  34. mnemo_dev-0.6.0/mnemo/hooks/git.py +58 -0
  35. mnemo_dev-0.6.0/mnemo/hooks/kiro.py +432 -0
  36. mnemo_dev-0.6.0/mnemo/hooks/templates/__init__.py +160 -0
  37. mnemo_dev-0.6.0/mnemo/incidents/__init__.py +2 -0
  38. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/init.py +8 -1
  39. mnemo_dev-0.6.0/mnemo/intent.py +158 -0
  40. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/knowledge/__init__.py +0 -16
  41. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/mcp_server.py +1 -1
  42. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/memory/_shared.py +8 -6
  43. mnemo_dev-0.6.0/mnemo/memory/decisions.py +417 -0
  44. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/memory/episodes.py +2 -7
  45. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/memory/hierarchy.py +0 -3
  46. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/memory/indexing.py +6 -1
  47. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/memory/lessons.py +2 -7
  48. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/memory/linking.py +0 -10
  49. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/memory/retention.py +0 -2
  50. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/memory/search.py +55 -30
  51. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/memory/services.py +41 -2
  52. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/memory/slots.py +1 -1
  53. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/memory/store.py +39 -48
  54. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/memory/temporal.py +2 -7
  55. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/plan/__init__.py +95 -10
  56. mnemo_dev-0.6.0/mnemo/quality/__init__.py +19 -0
  57. mnemo_dev-0.5.2/mnemo/breaking/__init__.py → mnemo_dev-0.6.0/mnemo/quality/breaking.py +2 -7
  58. mnemo_dev-0.5.2/mnemo/conventions/__init__.py → mnemo_dev-0.6.0/mnemo/quality/conventions.py +12 -6
  59. mnemo_dev-0.6.0/mnemo/quality/gates.py +113 -0
  60. mnemo_dev-0.5.2/mnemo/security/__init__.py → mnemo_dev-0.6.0/mnemo/quality/security.py +4 -10
  61. mnemo_dev-0.6.0/mnemo/records/__init__.py +11 -0
  62. mnemo_dev-0.6.0/mnemo/regressions/__init__.py +2 -0
  63. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/repo_map/identity.py +7 -1
  64. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/repo_map/scanner.py +1 -2
  65. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/retrieval.py +24 -0
  66. mnemo_dev-0.6.0/mnemo/security/__init__.py +2 -0
  67. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/serve.py +194 -20
  68. mnemo_dev-0.6.0/mnemo/skills/__init__.py +465 -0
  69. mnemo_dev-0.6.0/mnemo/skills/orchestrator.py +189 -0
  70. mnemo_dev-0.6.0/mnemo/templates/__init__.py +141 -0
  71. mnemo_dev-0.6.0/mnemo/templates/generator.py +106 -0
  72. mnemo_dev-0.6.0/mnemo/templates/hosts/__init__.py +64 -0
  73. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/tool_registry.py +1 -0
  74. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/tools/__init__.py +2 -1
  75. mnemo_dev-0.6.0/mnemo/tools/capture.py +78 -0
  76. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/tools/code.py +15 -13
  77. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/tools/engine.py +4 -128
  78. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/tools/git.py +0 -14
  79. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/tools/graph.py +3 -3
  80. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/tools/memory.py +59 -2
  81. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/tools/meta.py +18 -7
  82. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/tools/plan.py +3 -43
  83. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/tools/safety.py +15 -15
  84. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/tools/search.py +1 -1
  85. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/tools/team.py +44 -128
  86. mnemo_dev-0.6.0/mnemo/ui_static/index.html +316 -0
  87. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/utils/__init__.py +14 -0
  88. mnemo_dev-0.6.0/mnemo/watcher.py +94 -0
  89. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/workspace/__init__.py +20 -4
  90. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo_dev.egg-info/PKG-INFO +103 -38
  91. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo_dev.egg-info/SOURCES.txt +54 -7
  92. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/pyproject.toml +20 -2
  93. mnemo_dev-0.6.0/tests/test_commit_gen.py +237 -0
  94. mnemo_dev-0.6.0/tests/test_decisions_eventsourced.py +383 -0
  95. mnemo_dev-0.6.0/tests/test_embeddings.py +298 -0
  96. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_engine_pipeline.py +54 -0
  97. mnemo_dev-0.6.0/tests/test_engine_query.py +88 -0
  98. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_full_cycle.py +3 -3
  99. mnemo_dev-0.6.0/tests/test_graph_tools.py +137 -0
  100. mnemo_dev-0.6.0/tests/test_hook_lifecycle.py +296 -0
  101. mnemo_dev-0.6.0/tests/test_hooks.py +335 -0
  102. mnemo_dev-0.6.0/tests/test_integration_pipeline.py +203 -0
  103. mnemo_dev-0.6.0/tests/test_knowledge.py +103 -0
  104. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_mcp_integration.py +1 -1
  105. mnemo_dev-0.6.0/tests/test_memory_comprehensive.py +260 -0
  106. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_memory_lifecycle.py +3 -3
  107. mnemo_dev-0.6.0/tests/test_monster_harness.py +610 -0
  108. mnemo_dev-0.6.0/tests/test_parsers_multilang.py +95 -0
  109. mnemo_dev-0.6.0/tests/test_pr_gen.py +165 -0
  110. mnemo_dev-0.6.0/tests/test_quality_modules.py +165 -0
  111. mnemo_dev-0.6.0/tests/test_remaining_modules.py +250 -0
  112. mnemo_dev-0.6.0/tests/test_retrieval.py +136 -0
  113. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_search_quality.py +1 -1
  114. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_secondary_collections.py +16 -6
  115. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_self_maintenance.py +1 -1
  116. mnemo_dev-0.6.0/tests/test_workflow_skills.py +378 -0
  117. mnemo_dev-0.6.0/tests/test_workspace.py +239 -0
  118. mnemo_dev-0.5.2/mnemo/__init__.py +0 -5
  119. mnemo_dev-0.5.2/mnemo/chunking.py +0 -36
  120. mnemo_dev-0.5.2/mnemo/cli.py +0 -503
  121. mnemo_dev-0.5.2/mnemo/code_review/__init__.py +0 -74
  122. mnemo_dev-0.5.2/mnemo/config.py +0 -56
  123. mnemo_dev-0.5.2/mnemo/embeddings/dense.py +0 -86
  124. mnemo_dev-0.5.2/mnemo/hooks/__init__.py +0 -686
  125. mnemo_dev-0.5.2/mnemo/hooks/extractor.py +0 -31
  126. mnemo_dev-0.5.2/mnemo/sprint/__init__.py +0 -102
  127. mnemo_dev-0.5.2/mnemo/test_intel/__init__.py +0 -110
  128. mnemo_dev-0.5.2/mnemo/tools/observe.py +0 -44
  129. mnemo_dev-0.5.2/mnemo/ui_static/index.html +0 -207
  130. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/LICENSE +0 -0
  131. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/analyzers/__init__.py +0 -0
  132. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/clients.py +0 -0
  133. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/commit_gen/__init__.py +0 -0
  134. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/commit_gen/mining.py +0 -0
  135. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/engine/__init__.py +0 -0
  136. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/engine/cache.py +0 -0
  137. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/engine/db.py +0 -0
  138. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/engine/memory_graph.py +0 -0
  139. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/engine/workers.py +0 -0
  140. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/memory/__init__.py +0 -0
  141. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/onboarding/__init__.py +0 -0
  142. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/persistence/__init__.py +0 -0
  143. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/persistence/export.py +0 -0
  144. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/persistence/snapshot.py +0 -0
  145. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/pr_gen/__init__.py +0 -0
  146. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/prompts/__init__.py +0 -0
  147. /mnemo_dev-0.5.2/mnemo/dead_code/__init__.py → /mnemo_dev-0.6.0/mnemo/quality/dead_code.py +0 -0
  148. /mnemo_dev-0.5.2/mnemo/drift/__init__.py → /mnemo_dev-0.6.0/mnemo/quality/drift.py +0 -0
  149. /mnemo_dev-0.5.2/mnemo/health/__init__.py → /mnemo_dev-0.6.0/mnemo/quality/health.py +0 -0
  150. /mnemo_dev-0.5.2/mnemo/regressions/__init__.py → /mnemo_dev-0.6.0/mnemo/quality/regressions.py +0 -0
  151. /mnemo_dev-0.5.2/mnemo/corrections/__init__.py → /mnemo_dev-0.6.0/mnemo/records/corrections.py +0 -0
  152. /mnemo_dev-0.5.2/mnemo/errors/__init__.py → /mnemo_dev-0.6.0/mnemo/records/errors.py +0 -0
  153. /mnemo_dev-0.5.2/mnemo/incidents/__init__.py → /mnemo_dev-0.6.0/mnemo/records/incidents.py +0 -0
  154. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/repo_map/__init__.py +0 -0
  155. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/repo_map/parsers.py +0 -0
  156. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/storage.py +0 -0
  157. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/team_graph/__init__.py +0 -0
  158. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/types.py +0 -0
  159. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/utils/audit.py +0 -0
  160. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/utils/circuit_breaker.py +0 -0
  161. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/utils/dedup.py +0 -0
  162. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/utils/logger.py +0 -0
  163. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/utils/metrics.py +0 -0
  164. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/utils/observations.py +0 -0
  165. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/utils/privacy.py +0 -0
  166. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/utils/stemmer.py +0 -0
  167. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/utils/synonyms.py +0 -0
  168. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo/velocity/__init__.py +0 -0
  169. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo_dev.egg-info/dependency_links.txt +0 -0
  170. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo_dev.egg-info/entry_points.txt +0 -0
  171. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo_dev.egg-info/requires.txt +0 -0
  172. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/mnemo_dev.egg-info/top_level.txt +0 -0
  173. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/setup.cfg +0 -0
  174. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_audit.py +0 -0
  175. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_circuit_breaker.py +0 -0
  176. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_clients.py +0 -0
  177. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_code_quality_tools.py +0 -0
  178. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_engine_db.py +0 -0
  179. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_enrichment.py +0 -0
  180. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_export.py +0 -0
  181. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_init.py +0 -0
  182. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_memory.py +0 -0
  183. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_metrics.py +0 -0
  184. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_plan_features.py +0 -0
  185. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_privacy.py +0 -0
  186. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_serve.py +0 -0
  187. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_slots.py +0 -0
  188. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_snapshot.py +0 -0
  189. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_stemmer.py +0 -0
  190. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_storage.py +0 -0
  191. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_synonyms.py +0 -0
  192. {mnemo_dev-0.5.2 → mnemo_dev-0.6.0}/tests/test_tool_routing.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mnemo-dev
3
- Version: 0.5.2
3
+ Version: 0.6.0
4
4
  Summary: Persistent memory and repo map for AI coding assistants
5
5
  Author: Mnemo Contributors
6
6
  License: AGPL-3.0
@@ -59,18 +59,18 @@ Dynamic: license-file
59
59
  <p align="center">
60
60
  <a href="https://pypi.org/project/mnemo-dev/"><img src="https://img.shields.io/pypi/v/mnemo-dev?style=flat-square&color=blue" alt="PyPI" /></a>
61
61
  <a href="https://www.npmjs.com/package/@mnemo-dev/mcp"><img src="https://img.shields.io/npm/v/@mnemo-dev/mcp?style=flat-square&color=red" alt="npm" /></a>
62
- <a href="#"><img src="https://img.shields.io/badge/tests-222%20passing-brightgreen?style=flat-square" alt="Tests" /></a>
62
+ <a href="#"><img src="https://img.shields.io/badge/tests-641%20passing-brightgreen?style=flat-square" alt="Tests" /></a>
63
63
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-AGPL--3.0-purple?style=flat-square" alt="License" /></a>
64
64
  <a href="https://pypi.org/project/mnemo-dev/"><img src="https://img.shields.io/pypi/pyversions/mnemo-dev?style=flat-square" alt="Python" /></a>
65
65
  <a href="https://marketplace.visualstudio.com/items?itemName=Nikhil1057.mnemo-vscode"><img src="https://img.shields.io/badge/VS%20Code-extension-007ACC?style=flat-square&logo=visualstudiocode" alt="VS Code" /></a>
66
66
  </p>
67
67
 
68
68
  <p align="center">
69
- <code>[100% R@5]</code> <code>[2ms search]</code> <code>[58 tools]</code> <code>[16 agent-facing]</code> <code>[11 lifecycle hooks]</code> <code>[0 external DBs]</code> <code>[222 tests]</code>
69
+ <code>[100% R@5]</code> <code>[2ms search]</code> <code>[58 tools]</code> <code>[17 agent-facing]</code> <code>[11 lifecycle hooks]</code> <code>[0 external DBs]</code> <code>[641 tests]</code>
70
70
  </p>
71
71
 
72
72
  <p align="center">
73
- <a href="#install">Install</a> • <a href="#why-mnemo">Why</a> • <a href="#benchmarks">Benchmarks</a> • <a href="#how-it-works">How It Works</a> • <a href="#supported-clients">Clients</a> • <a href="#features">Features</a> • <a href="#mcp-tools-16-agent-facing">Tools</a> • <a href="#dashboard-ui">Dashboard</a> • <a href="#architecture">Architecture</a>
73
+ <a href="#install">Install</a> • <a href="#why-mnemo">Why</a> • <a href="#benchmarks">Benchmarks</a> • <a href="#how-it-works">How It Works</a> • <a href="#supported-clients">Clients</a> • <a href="#features">Features</a> • <a href="#mcp-tools-17-agent-facing">Tools</a> • <a href="#dashboard-ui">Dashboard</a> • <a href="#architecture">Architecture</a>
74
74
  </p>
75
75
 
76
76
  ---
@@ -89,7 +89,7 @@ Session 2: you ask the agent to add a new endpoint. It already knows your servic
89
89
  ```bash
90
90
  pip install mnemo-dev # or: brew tap Mnemo-mcp/tap && brew install mnemo
91
91
  cd your-project
92
- mnemo init # defaults to Amazon Q (or: --client kiro, cursor, claude-code)
92
+ mnemo init --client kiro # or: amazonq, cursor, claude-code, copilot, generic
93
93
  ```
94
94
 
95
95
  ---
@@ -141,8 +141,7 @@ Then initialize:
141
141
 
142
142
  ```bash
143
143
  cd your-project
144
- mnemo init # defaults to Amazon Q
145
- mnemo init --client kiro # or: cursor, claude-code, copilot, generic
144
+ mnemo init --client kiro # or: amazonq, cursor, claude-code, copilot, generic
146
145
  ```
147
146
 
148
147
  **That's it.** Your agent now has persistent memory, semantic search, and architectural understanding.
@@ -267,13 +266,13 @@ Works with **any** agent that speaks MCP. One server, one memory, shared across
267
266
  ## How It Works
268
267
 
269
268
  ```
270
- ┌─── INIT (one-time, ~7s for 300 files) ──────────────────────────┐
269
+ ┌─── INIT (one-time, ~7s for 300 files) ───────────────────────────┐
271
270
  │ │
272
271
  │ 1. Scan: single os.walk pass across repo │
273
272
  │ 2. Parse: tree-sitter AST (14 langs) + Roslyn (C#) │
274
273
  │ 3. Graph: LadybugDB — files, classes, methods, CALLS edges │
275
274
  │ 4. Scope: cross-file function call resolution │
276
- │ 5. Cluster: Leiden community detection
275
+ │ 5. Cluster: Louvain community detection
277
276
  │ 6. Index: ONNX vector embeddings for semantic search │
278
277
  │ 7. Detect: languages, services, key classes, frameworks │
279
278
  │ 8. Configure: MCP server + hooks for your AI client │
@@ -281,10 +280,10 @@ Works with **any** agent that speaks MCP. One server, one memory, shared across
281
280
  └──────────────────────────────────────────────────────────────────┘
282
281
 
283
282
 
284
- ┌─── SESSION START (automatic via hooks) ─────────────────────────┐
283
+ ┌─── SESSION START (automatic via hooks) ──────────────────────────┐
285
284
  │ │
286
285
  │ mnemo_recall injects into agent context: │
287
- │ • Architectural decisions (permanent, never evicted)
286
+ │ • Architectural decisions (permanent, never evicted)
288
287
  │ • Hot memories (scored by access × recency × importance) │
289
288
  │ • Active plan + next task │
290
289
  │ • Compact repo index (classes per service) │
@@ -297,7 +296,7 @@ Works with **any** agent that speaks MCP. One server, one memory, shared across
297
296
 
298
297
  ┌─── DURING SESSION (tools + freshness) ──────────────────────────┐
299
298
  │ │
300
- │ Agent has 16 MCP tools available: │
299
+ │ Agent has 17 MCP tools available: │
301
300
  │ • mnemo_lookup → full service/class architecture │
302
301
  │ • mnemo_search → semantic search (code, memory, APIs) │
303
302
  │ • mnemo_impact → blast radius if X changes │
@@ -310,7 +309,7 @@ Works with **any** agent that speaks MCP. One server, one memory, shared across
310
309
  └──────────────────────────────────────────────────────────────────┘
311
310
 
312
311
 
313
- ┌─── SESSION END (auto-capture via stop hook) ────────────────────┐
312
+ ┌─── SESSION END (auto-capture via stop hook) ─────────────────────┐
314
313
  │ │
315
314
  │ • Detects learnings (bug fixes, discoveries) │
316
315
  │ • Records session decisions │
@@ -319,11 +318,11 @@ Works with **any** agent that speaks MCP. One server, one memory, shared across
319
318
  └──────────────────────────────────────────────────────────────────┘
320
319
 
321
320
 
322
- ┌─── BETWEEN SESSIONS (decay + maintenance) ──────────────────────┐
321
+ ┌─── BETWEEN SESSIONS (decay + maintenance) ───────────────────────┐
323
322
  │ │
324
323
  │ Every 10th recall: │
325
324
  │ • Retention scored: salience × exp(-0.01 × days) + access │
326
- │ • Hot (≥0.5) → Warm (≥0.25) → Cold → Evicted
325
+ │ • Hot (≥0.5) → Warm (≥0.25) → Cold → Evicted
327
326
  │ • Contradictions auto-superseded (sim > 0.9) │
328
327
  │ • Low-value pruning (cap: 200 active memories) │
329
328
  │ • Graph synced (stale memory nodes removed) │
@@ -331,7 +330,6 @@ Works with **any** agent that speaks MCP. One server, one memory, shared across
331
330
  │ Pinned forever: architecture, decision, preference │
332
331
  │ │
333
332
  └──────────────────────────────────────────────────────────────────┘
334
- └─────────────────────────────────────────────────────────────┘
335
333
  ```
336
334
 
337
335
  ---
@@ -340,6 +338,8 @@ Works with **any** agent that speaks MCP. One server, one memory, shared across
340
338
 
341
339
  ### 🧠 Memory System
342
340
  - **Categorized storage**: architecture, pattern, bug, preference, decision, todo
341
+ - **Event-sourced decisions**: JSONL append-only event log, computed snapshots, supersede/redact operations
342
+ - **Branch-scoped decisions**: decisions tagged per branch, filtered on recall
343
343
  - **Retention scoring**: access frequency × recency × importance (Ebbinghaus-inspired decay)
344
344
  - **Branch-aware**: memories tagged with git branch, filtered on recall
345
345
  - **Contradiction detection**: new facts auto-supersede old conflicting ones (threshold: 0.6)
@@ -360,7 +360,7 @@ Works with **any** agent that speaks MCP. One server, one memory, shared across
360
360
  - **Knowledge graph**: files, folders, classes, methods, functions, projects, communities
361
361
  - **14 languages**: Python, JS/TS, C#, Go, Java, Rust, Ruby, PHP, C/C++, Kotlin, Swift, Scala
362
362
  - **Roslyn enrichment**: C# method signatures, implements, full AST detail
363
- - **Leiden community detection**: automatic functional clustering
363
+ - **Louvain community detection**: automatic functional clustering
364
364
  - **CALLS edges**: scope-resolved function call graph with confidence scoring
365
365
  - **Impact analysis**: upstream/downstream blast radius (N-hop BFS)
366
366
  - **Incremental freshness**: graph + vector index auto-update within 30s of file changes
@@ -394,9 +394,45 @@ Works with **any** agent that speaks MCP. One server, one memory, shared across
394
394
 
395
395
  ---
396
396
 
397
- ## MCP Tools (58 total: 16 agent-facing + 42 specialized)
397
+ ## Workflow Skills & Orchestrator
398
398
 
399
- Mnemo exposes **16 consolidated agent-facing tools** via MCP designed to cover every workflow in minimal tool calls. Under the hood, these route to **42 specialized internal tools** for granular operations.
399
+ Mnemo includes **6 workflow skills** that guide agents through a structured SDLC pipeline, with **quality gates** enforcing standards between phases.
400
+
401
+ ### The Pipeline
402
+
403
+ ```
404
+ investigate → plan → implement → verify → review → ship
405
+ ↑ ↑
406
+ [tests_pass] [tests_pass + plan_done + no_findings]
407
+ ```
408
+
409
+ Each phase has a dedicated skill template with explicit instructions, shell commands for mnemo tools, and persistence hooks. The orchestrator tracks state in `.mnemo/autorun_state.json` and blocks advancement when gates fail.
410
+
411
+ ### Quality Gates
412
+
413
+ | Gate | What it checks | Blocks |
414
+ |------|---------------|--------|
415
+ | `tests_pass` | Runs test suite (pytest/npm/maven/gradle) | review, ship |
416
+ | `plan_done` | All plan tasks marked complete | ship |
417
+ | `no_findings` | No unresolved critical findings in memory | ship |
418
+
419
+ ### Template Resolver System
420
+
421
+ Skills use `{{RESOLVER}}` placeholders that get expanded per-host:
422
+
423
+ | Resolver | Injects |
424
+ |----------|---------|
425
+ | `{{PREAMBLE}}` | Mandatory header — forces tool usage, DO NOT PROCEED pattern |
426
+ | `{{LEARNINGS}}` | Past learnings relevant to current skill |
427
+ | `{{CONTEXT_LOAD}}` | Shell command to load brain context at skill start |
428
+ | `{{TOOL_REFERENCE}}` | Available mnemo commands table |
429
+ | `{{PERSIST_BLOCK}}` | Shell commands for persisting knowledge at skill end |
430
+
431
+ ---
432
+
433
+ ## MCP Tools (58 total: 17 agent-facing + 42 specialized)
434
+
435
+ Mnemo exposes **17 consolidated agent-facing tools** via MCP — designed to cover every workflow in minimal tool calls. Under the hood, these route to **42 specialized internal tools** for granular operations.
400
436
 
401
437
  ### Agent-Facing Tools (what the AI calls)
402
438
 
@@ -405,6 +441,8 @@ Mnemo exposes **16 consolidated agent-facing tools** via MCP — designed to cov
405
441
  | `mnemo_recall` | Load full project context at session start (budgeted ~2000 tokens) |
406
442
  | `mnemo_remember` | Store important context with auto-categorization & dedup |
407
443
  | `mnemo_decide` | Record permanent architectural decisions (never evicted) |
444
+ | `mnemo_supersede` | Supersede (replace) an existing decision by ID |
445
+ | `mnemo_redact` | Permanently redact a decision (e.g., accidental secrets) |
408
446
  | `mnemo_forget` | Delete a specific memory by ID |
409
447
  | `mnemo_search_memory` | Semantic search across memories (3-way RRF fusion) |
410
448
  | `mnemo_lookup` | 360° detail: class methods, function signatures, or full service architecture |
@@ -569,23 +607,26 @@ mnemo serve # http://localhost:3333
569
607
 
570
608
  ```
571
609
  .mnemo/
572
- ├── memory.json Memories with retention scores & access history
573
- ├── decisions.json Permanent architectural decisions
574
- ├── plans.json Task tracking with dependencies
575
- ├── context.json Auto-detected project metadata
576
- ├── graph.lbug/ LadybugDB knowledge graph (Kuzu engine)
577
- ├── vectors_code.npy ONNX embeddings of code symbols (384-dim)
578
- ├── vectors_memory.npy ONNX embeddings of memories
579
- ├── meta_*.json Vector metadata for cosine search
580
- ├── engine-meta.json File hashes for incremental detection
581
- ├── parse-cache.json AST parse cache (skip unchanged files)
582
- ├── tree.md Compact repo index (generated from graph)
583
- ├── corrections.json Wrong→right patterns with confidence
584
- ├── lessons.json Learned patterns with reinforcement
585
- └── slots.json Pinned structured context (conventions, gotchas)
586
- ```
587
-
588
- **Stack**: Python · LadybugDB (Kuzu) · ONNX Runtime · tree-sitter · Roslyn · NetworkX (Leiden)
610
+ ├── memory.json Memories with retention scores & access history
611
+ ├── decisions.json Permanent architectural decisions (computed snapshot)
612
+ ├── decisions.events.jsonl Event-sourced decision log (source of truth)
613
+ ├── plans.json Task tracking with dependencies
614
+ ├── context.json Auto-detected project metadata
615
+ ├── learnings.json Typed learnings with confidence & key-dedup
616
+ ├── autorun_state.json SDLC orchestrator phase tracking
617
+ ├── graph.lbug/ LadybugDB knowledge graph (Kuzu engine)
618
+ ├── vectors_code.npy ONNX embeddings of code symbols (384-dim)
619
+ ├── vectors_memory.npy ONNX embeddings of memories
620
+ ├── meta_*.json Vector metadata for cosine search
621
+ ├── engine-meta.json File hashes for incremental detection
622
+ ├── parse-cache.json AST parse cache (skip unchanged files)
623
+ ├── tree.md Compact repo index (generated from graph)
624
+ ├── corrections.json Wrong→right patterns with confidence
625
+ ├── lessons.json Learned patterns with reinforcement
626
+ └── slots.json Pinned structured context (conventions, gotchas)
627
+ ```
628
+
629
+ **Stack**: Python · LadybugDB (Kuzu) · ONNX Runtime · tree-sitter · Roslyn · NetworkX (Louvain)
589
630
 
590
631
  **Zero cloud. Zero API keys. Zero telemetry. Everything runs locally.**
591
632
 
@@ -617,7 +658,7 @@ Pinned categories (never evicted): architecture, decision, preference
617
658
  ## CLI Reference
618
659
 
619
660
  ```bash
620
- mnemo init [--client CLIENT] # Initialize in a repo (kiro, cursor, claude-code, amazonq, copilot)
661
+ mnemo init --client CLIENT # Initialize in a repo (kiro, cursor, claude-code, amazonq, copilot, generic)
621
662
  mnemo recall [--tier TIER] # Show agent context (compact, standard, deep)
622
663
  mnemo map # Regenerate repo map from graph
623
664
  mnemo serve [-p PORT] # Dashboard UI (default: 3333)
@@ -625,9 +666,33 @@ mnemo doctor # Diagnose installation issues
625
666
  mnemo reset # Remove Mnemo data (safe: only Mnemo-owned files)
626
667
  mnemo link [TARGET] # Link another repo to multi-repo workspace
627
668
  mnemo remember "content" [-c CAT]# Store a memory
669
+ mnemo learn -t TYPE -k KEY -i TXT# Store a typed learning (7 types, key-dedup)
670
+ mnemo learnings [-t TYPE] # List stored learnings (sorted by confidence)
671
+ mnemo ingest [--file FILE] # ETL: extract learnings from session transcripts
628
672
  mnemo tool NAME [--args] # Call any MCP tool from CLI
629
673
  ```
630
674
 
675
+ ### Customizing What Gets Indexed
676
+
677
+ Mnemo skips a built-in set of heavy/non-source directories during indexing
678
+ (`node_modules`, `.venv`, `dist`, `build`, etc. — see `mnemo/config.py` for
679
+ the full list).
680
+
681
+ To skip additional directories in a specific repo, drop a `.mnemoignore`
682
+ file at the repo root with one directory name per line:
683
+
684
+ ```
685
+ # Heavy dirs to exclude from indexing
686
+ data
687
+ logs
688
+ backups
689
+ ```
690
+
691
+ Lines are matched by exact directory basename, anywhere in the tree (same
692
+ semantics as the built-in list). Blank lines and `#` comments are ignored.
693
+ Trailing slashes are tolerated. Glob / `.gitignore` semantics are not
694
+ supported yet — patterns are basenames only.
695
+
631
696
  ---
632
697
 
633
698
  ## Contributing
@@ -636,7 +701,7 @@ mnemo tool NAME [--args] # Call any MCP tool from CLI
636
701
  git clone https://github.com/Mnemo-mcp/Mnemo.git
637
702
  cd Mnemo
638
703
  pip install -e ".[dev]"
639
- pytest # 222 tests
704
+ pytest # 641 tests
640
705
  ruff check . # Lint
641
706
  mnemo init # Test on self
642
707
  ```
@@ -7,18 +7,18 @@
7
7
  <p align="center">
8
8
  <a href="https://pypi.org/project/mnemo-dev/"><img src="https://img.shields.io/pypi/v/mnemo-dev?style=flat-square&color=blue" alt="PyPI" /></a>
9
9
  <a href="https://www.npmjs.com/package/@mnemo-dev/mcp"><img src="https://img.shields.io/npm/v/@mnemo-dev/mcp?style=flat-square&color=red" alt="npm" /></a>
10
- <a href="#"><img src="https://img.shields.io/badge/tests-222%20passing-brightgreen?style=flat-square" alt="Tests" /></a>
10
+ <a href="#"><img src="https://img.shields.io/badge/tests-641%20passing-brightgreen?style=flat-square" alt="Tests" /></a>
11
11
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-AGPL--3.0-purple?style=flat-square" alt="License" /></a>
12
12
  <a href="https://pypi.org/project/mnemo-dev/"><img src="https://img.shields.io/pypi/pyversions/mnemo-dev?style=flat-square" alt="Python" /></a>
13
13
  <a href="https://marketplace.visualstudio.com/items?itemName=Nikhil1057.mnemo-vscode"><img src="https://img.shields.io/badge/VS%20Code-extension-007ACC?style=flat-square&logo=visualstudiocode" alt="VS Code" /></a>
14
14
  </p>
15
15
 
16
16
  <p align="center">
17
- <code>[100% R@5]</code> <code>[2ms search]</code> <code>[58 tools]</code> <code>[16 agent-facing]</code> <code>[11 lifecycle hooks]</code> <code>[0 external DBs]</code> <code>[222 tests]</code>
17
+ <code>[100% R@5]</code> <code>[2ms search]</code> <code>[58 tools]</code> <code>[17 agent-facing]</code> <code>[11 lifecycle hooks]</code> <code>[0 external DBs]</code> <code>[641 tests]</code>
18
18
  </p>
19
19
 
20
20
  <p align="center">
21
- <a href="#install">Install</a> • <a href="#why-mnemo">Why</a> • <a href="#benchmarks">Benchmarks</a> • <a href="#how-it-works">How It Works</a> • <a href="#supported-clients">Clients</a> • <a href="#features">Features</a> • <a href="#mcp-tools-16-agent-facing">Tools</a> • <a href="#dashboard-ui">Dashboard</a> • <a href="#architecture">Architecture</a>
21
+ <a href="#install">Install</a> • <a href="#why-mnemo">Why</a> • <a href="#benchmarks">Benchmarks</a> • <a href="#how-it-works">How It Works</a> • <a href="#supported-clients">Clients</a> • <a href="#features">Features</a> • <a href="#mcp-tools-17-agent-facing">Tools</a> • <a href="#dashboard-ui">Dashboard</a> • <a href="#architecture">Architecture</a>
22
22
  </p>
23
23
 
24
24
  ---
@@ -37,7 +37,7 @@ Session 2: you ask the agent to add a new endpoint. It already knows your servic
37
37
  ```bash
38
38
  pip install mnemo-dev # or: brew tap Mnemo-mcp/tap && brew install mnemo
39
39
  cd your-project
40
- mnemo init # defaults to Amazon Q (or: --client kiro, cursor, claude-code)
40
+ mnemo init --client kiro # or: amazonq, cursor, claude-code, copilot, generic
41
41
  ```
42
42
 
43
43
  ---
@@ -89,8 +89,7 @@ Then initialize:
89
89
 
90
90
  ```bash
91
91
  cd your-project
92
- mnemo init # defaults to Amazon Q
93
- mnemo init --client kiro # or: cursor, claude-code, copilot, generic
92
+ mnemo init --client kiro # or: amazonq, cursor, claude-code, copilot, generic
94
93
  ```
95
94
 
96
95
  **That's it.** Your agent now has persistent memory, semantic search, and architectural understanding.
@@ -215,13 +214,13 @@ Works with **any** agent that speaks MCP. One server, one memory, shared across
215
214
  ## How It Works
216
215
 
217
216
  ```
218
- ┌─── INIT (one-time, ~7s for 300 files) ──────────────────────────┐
217
+ ┌─── INIT (one-time, ~7s for 300 files) ───────────────────────────┐
219
218
  │ │
220
219
  │ 1. Scan: single os.walk pass across repo │
221
220
  │ 2. Parse: tree-sitter AST (14 langs) + Roslyn (C#) │
222
221
  │ 3. Graph: LadybugDB — files, classes, methods, CALLS edges │
223
222
  │ 4. Scope: cross-file function call resolution │
224
- │ 5. Cluster: Leiden community detection
223
+ │ 5. Cluster: Louvain community detection
225
224
  │ 6. Index: ONNX vector embeddings for semantic search │
226
225
  │ 7. Detect: languages, services, key classes, frameworks │
227
226
  │ 8. Configure: MCP server + hooks for your AI client │
@@ -229,10 +228,10 @@ Works with **any** agent that speaks MCP. One server, one memory, shared across
229
228
  └──────────────────────────────────────────────────────────────────┘
230
229
 
231
230
 
232
- ┌─── SESSION START (automatic via hooks) ─────────────────────────┐
231
+ ┌─── SESSION START (automatic via hooks) ──────────────────────────┐
233
232
  │ │
234
233
  │ mnemo_recall injects into agent context: │
235
- │ • Architectural decisions (permanent, never evicted)
234
+ │ • Architectural decisions (permanent, never evicted)
236
235
  │ • Hot memories (scored by access × recency × importance) │
237
236
  │ • Active plan + next task │
238
237
  │ • Compact repo index (classes per service) │
@@ -245,7 +244,7 @@ Works with **any** agent that speaks MCP. One server, one memory, shared across
245
244
 
246
245
  ┌─── DURING SESSION (tools + freshness) ──────────────────────────┐
247
246
  │ │
248
- │ Agent has 16 MCP tools available: │
247
+ │ Agent has 17 MCP tools available: │
249
248
  │ • mnemo_lookup → full service/class architecture │
250
249
  │ • mnemo_search → semantic search (code, memory, APIs) │
251
250
  │ • mnemo_impact → blast radius if X changes │
@@ -258,7 +257,7 @@ Works with **any** agent that speaks MCP. One server, one memory, shared across
258
257
  └──────────────────────────────────────────────────────────────────┘
259
258
 
260
259
 
261
- ┌─── SESSION END (auto-capture via stop hook) ────────────────────┐
260
+ ┌─── SESSION END (auto-capture via stop hook) ─────────────────────┐
262
261
  │ │
263
262
  │ • Detects learnings (bug fixes, discoveries) │
264
263
  │ • Records session decisions │
@@ -267,11 +266,11 @@ Works with **any** agent that speaks MCP. One server, one memory, shared across
267
266
  └──────────────────────────────────────────────────────────────────┘
268
267
 
269
268
 
270
- ┌─── BETWEEN SESSIONS (decay + maintenance) ──────────────────────┐
269
+ ┌─── BETWEEN SESSIONS (decay + maintenance) ───────────────────────┐
271
270
  │ │
272
271
  │ Every 10th recall: │
273
272
  │ • Retention scored: salience × exp(-0.01 × days) + access │
274
- │ • Hot (≥0.5) → Warm (≥0.25) → Cold → Evicted
273
+ │ • Hot (≥0.5) → Warm (≥0.25) → Cold → Evicted
275
274
  │ • Contradictions auto-superseded (sim > 0.9) │
276
275
  │ • Low-value pruning (cap: 200 active memories) │
277
276
  │ • Graph synced (stale memory nodes removed) │
@@ -279,7 +278,6 @@ Works with **any** agent that speaks MCP. One server, one memory, shared across
279
278
  │ Pinned forever: architecture, decision, preference │
280
279
  │ │
281
280
  └──────────────────────────────────────────────────────────────────┘
282
- └─────────────────────────────────────────────────────────────┘
283
281
  ```
284
282
 
285
283
  ---
@@ -288,6 +286,8 @@ Works with **any** agent that speaks MCP. One server, one memory, shared across
288
286
 
289
287
  ### 🧠 Memory System
290
288
  - **Categorized storage**: architecture, pattern, bug, preference, decision, todo
289
+ - **Event-sourced decisions**: JSONL append-only event log, computed snapshots, supersede/redact operations
290
+ - **Branch-scoped decisions**: decisions tagged per branch, filtered on recall
291
291
  - **Retention scoring**: access frequency × recency × importance (Ebbinghaus-inspired decay)
292
292
  - **Branch-aware**: memories tagged with git branch, filtered on recall
293
293
  - **Contradiction detection**: new facts auto-supersede old conflicting ones (threshold: 0.6)
@@ -308,7 +308,7 @@ Works with **any** agent that speaks MCP. One server, one memory, shared across
308
308
  - **Knowledge graph**: files, folders, classes, methods, functions, projects, communities
309
309
  - **14 languages**: Python, JS/TS, C#, Go, Java, Rust, Ruby, PHP, C/C++, Kotlin, Swift, Scala
310
310
  - **Roslyn enrichment**: C# method signatures, implements, full AST detail
311
- - **Leiden community detection**: automatic functional clustering
311
+ - **Louvain community detection**: automatic functional clustering
312
312
  - **CALLS edges**: scope-resolved function call graph with confidence scoring
313
313
  - **Impact analysis**: upstream/downstream blast radius (N-hop BFS)
314
314
  - **Incremental freshness**: graph + vector index auto-update within 30s of file changes
@@ -342,9 +342,45 @@ Works with **any** agent that speaks MCP. One server, one memory, shared across
342
342
 
343
343
  ---
344
344
 
345
- ## MCP Tools (58 total: 16 agent-facing + 42 specialized)
345
+ ## Workflow Skills & Orchestrator
346
346
 
347
- Mnemo exposes **16 consolidated agent-facing tools** via MCP designed to cover every workflow in minimal tool calls. Under the hood, these route to **42 specialized internal tools** for granular operations.
347
+ Mnemo includes **6 workflow skills** that guide agents through a structured SDLC pipeline, with **quality gates** enforcing standards between phases.
348
+
349
+ ### The Pipeline
350
+
351
+ ```
352
+ investigate → plan → implement → verify → review → ship
353
+ ↑ ↑
354
+ [tests_pass] [tests_pass + plan_done + no_findings]
355
+ ```
356
+
357
+ Each phase has a dedicated skill template with explicit instructions, shell commands for mnemo tools, and persistence hooks. The orchestrator tracks state in `.mnemo/autorun_state.json` and blocks advancement when gates fail.
358
+
359
+ ### Quality Gates
360
+
361
+ | Gate | What it checks | Blocks |
362
+ |------|---------------|--------|
363
+ | `tests_pass` | Runs test suite (pytest/npm/maven/gradle) | review, ship |
364
+ | `plan_done` | All plan tasks marked complete | ship |
365
+ | `no_findings` | No unresolved critical findings in memory | ship |
366
+
367
+ ### Template Resolver System
368
+
369
+ Skills use `{{RESOLVER}}` placeholders that get expanded per-host:
370
+
371
+ | Resolver | Injects |
372
+ |----------|---------|
373
+ | `{{PREAMBLE}}` | Mandatory header — forces tool usage, DO NOT PROCEED pattern |
374
+ | `{{LEARNINGS}}` | Past learnings relevant to current skill |
375
+ | `{{CONTEXT_LOAD}}` | Shell command to load brain context at skill start |
376
+ | `{{TOOL_REFERENCE}}` | Available mnemo commands table |
377
+ | `{{PERSIST_BLOCK}}` | Shell commands for persisting knowledge at skill end |
378
+
379
+ ---
380
+
381
+ ## MCP Tools (58 total: 17 agent-facing + 42 specialized)
382
+
383
+ Mnemo exposes **17 consolidated agent-facing tools** via MCP — designed to cover every workflow in minimal tool calls. Under the hood, these route to **42 specialized internal tools** for granular operations.
348
384
 
349
385
  ### Agent-Facing Tools (what the AI calls)
350
386
 
@@ -353,6 +389,8 @@ Mnemo exposes **16 consolidated agent-facing tools** via MCP — designed to cov
353
389
  | `mnemo_recall` | Load full project context at session start (budgeted ~2000 tokens) |
354
390
  | `mnemo_remember` | Store important context with auto-categorization & dedup |
355
391
  | `mnemo_decide` | Record permanent architectural decisions (never evicted) |
392
+ | `mnemo_supersede` | Supersede (replace) an existing decision by ID |
393
+ | `mnemo_redact` | Permanently redact a decision (e.g., accidental secrets) |
356
394
  | `mnemo_forget` | Delete a specific memory by ID |
357
395
  | `mnemo_search_memory` | Semantic search across memories (3-way RRF fusion) |
358
396
  | `mnemo_lookup` | 360° detail: class methods, function signatures, or full service architecture |
@@ -517,23 +555,26 @@ mnemo serve # http://localhost:3333
517
555
 
518
556
  ```
519
557
  .mnemo/
520
- ├── memory.json Memories with retention scores & access history
521
- ├── decisions.json Permanent architectural decisions
522
- ├── plans.json Task tracking with dependencies
523
- ├── context.json Auto-detected project metadata
524
- ├── graph.lbug/ LadybugDB knowledge graph (Kuzu engine)
525
- ├── vectors_code.npy ONNX embeddings of code symbols (384-dim)
526
- ├── vectors_memory.npy ONNX embeddings of memories
527
- ├── meta_*.json Vector metadata for cosine search
528
- ├── engine-meta.json File hashes for incremental detection
529
- ├── parse-cache.json AST parse cache (skip unchanged files)
530
- ├── tree.md Compact repo index (generated from graph)
531
- ├── corrections.json Wrong→right patterns with confidence
532
- ├── lessons.json Learned patterns with reinforcement
533
- └── slots.json Pinned structured context (conventions, gotchas)
534
- ```
535
-
536
- **Stack**: Python · LadybugDB (Kuzu) · ONNX Runtime · tree-sitter · Roslyn · NetworkX (Leiden)
558
+ ├── memory.json Memories with retention scores & access history
559
+ ├── decisions.json Permanent architectural decisions (computed snapshot)
560
+ ├── decisions.events.jsonl Event-sourced decision log (source of truth)
561
+ ├── plans.json Task tracking with dependencies
562
+ ├── context.json Auto-detected project metadata
563
+ ├── learnings.json Typed learnings with confidence & key-dedup
564
+ ├── autorun_state.json SDLC orchestrator phase tracking
565
+ ├── graph.lbug/ LadybugDB knowledge graph (Kuzu engine)
566
+ ├── vectors_code.npy ONNX embeddings of code symbols (384-dim)
567
+ ├── vectors_memory.npy ONNX embeddings of memories
568
+ ├── meta_*.json Vector metadata for cosine search
569
+ ├── engine-meta.json File hashes for incremental detection
570
+ ├── parse-cache.json AST parse cache (skip unchanged files)
571
+ ├── tree.md Compact repo index (generated from graph)
572
+ ├── corrections.json Wrong→right patterns with confidence
573
+ ├── lessons.json Learned patterns with reinforcement
574
+ └── slots.json Pinned structured context (conventions, gotchas)
575
+ ```
576
+
577
+ **Stack**: Python · LadybugDB (Kuzu) · ONNX Runtime · tree-sitter · Roslyn · NetworkX (Louvain)
537
578
 
538
579
  **Zero cloud. Zero API keys. Zero telemetry. Everything runs locally.**
539
580
 
@@ -565,7 +606,7 @@ Pinned categories (never evicted): architecture, decision, preference
565
606
  ## CLI Reference
566
607
 
567
608
  ```bash
568
- mnemo init [--client CLIENT] # Initialize in a repo (kiro, cursor, claude-code, amazonq, copilot)
609
+ mnemo init --client CLIENT # Initialize in a repo (kiro, cursor, claude-code, amazonq, copilot, generic)
569
610
  mnemo recall [--tier TIER] # Show agent context (compact, standard, deep)
570
611
  mnemo map # Regenerate repo map from graph
571
612
  mnemo serve [-p PORT] # Dashboard UI (default: 3333)
@@ -573,9 +614,33 @@ mnemo doctor # Diagnose installation issues
573
614
  mnemo reset # Remove Mnemo data (safe: only Mnemo-owned files)
574
615
  mnemo link [TARGET] # Link another repo to multi-repo workspace
575
616
  mnemo remember "content" [-c CAT]# Store a memory
617
+ mnemo learn -t TYPE -k KEY -i TXT# Store a typed learning (7 types, key-dedup)
618
+ mnemo learnings [-t TYPE] # List stored learnings (sorted by confidence)
619
+ mnemo ingest [--file FILE] # ETL: extract learnings from session transcripts
576
620
  mnemo tool NAME [--args] # Call any MCP tool from CLI
577
621
  ```
578
622
 
623
+ ### Customizing What Gets Indexed
624
+
625
+ Mnemo skips a built-in set of heavy/non-source directories during indexing
626
+ (`node_modules`, `.venv`, `dist`, `build`, etc. — see `mnemo/config.py` for
627
+ the full list).
628
+
629
+ To skip additional directories in a specific repo, drop a `.mnemoignore`
630
+ file at the repo root with one directory name per line:
631
+
632
+ ```
633
+ # Heavy dirs to exclude from indexing
634
+ data
635
+ logs
636
+ backups
637
+ ```
638
+
639
+ Lines are matched by exact directory basename, anywhere in the tree (same
640
+ semantics as the built-in list). Blank lines and `#` comments are ignored.
641
+ Trailing slashes are tolerated. Glob / `.gitignore` semantics are not
642
+ supported yet — patterns are basenames only.
643
+
579
644
  ---
580
645
 
581
646
  ## Contributing
@@ -584,7 +649,7 @@ mnemo tool NAME [--args] # Call any MCP tool from CLI
584
649
  git clone https://github.com/Mnemo-mcp/Mnemo.git
585
650
  cd Mnemo
586
651
  pip install -e ".[dev]"
587
- pytest # 222 tests
652
+ pytest # 641 tests
588
653
  ruff check . # Lint
589
654
  mnemo init # Test on self
590
655
  ```
@@ -0,0 +1,5 @@
1
+ """Mnemo – Persistent memory and Code Intelligence For AI Agents."""
2
+
3
+ from __future__ import annotations
4
+
5
+ __version__ = "0.6.0"
@@ -131,3 +131,13 @@ def discover_apis(repo_root: Path) -> str:
131
131
  if len(lines) <= 2:
132
132
  return "No APIs discovered."
133
133
  return "\n".join(lines)
134
+
135
+
136
+ def search_api(repo_root: Path, query: str) -> str:
137
+ """Search discovered APIs by query."""
138
+ full = discover_apis(repo_root)
139
+ if "No APIs" in full:
140
+ return f"No APIs matching '{query}'."
141
+ query_lower = query.lower()
142
+ lines = [ln for ln in full.split("\n") if query_lower in ln.lower() or ln.startswith("#")]
143
+ return "\n".join(lines) if any(not ln.startswith("#") for ln in lines) else f"No APIs matching '{query}'."
@@ -0,0 +1,2 @@
1
+ """Backward-compat stub — real implementation in mnemo.quality.breaking."""
2
+ from ..quality.breaking import * # noqa: F401,F403