mango-brain 3.2.2__tar.gz → 3.2.4__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 (53) hide show
  1. {mango_brain-3.2.2 → mango_brain-3.2.4}/PKG-INFO +3 -3
  2. {mango_brain-3.2.2 → mango_brain-3.2.4}/README.md +2 -2
  3. {mango_brain-3.2.2 → mango_brain-3.2.4}/mango_brain.egg-info/PKG-INFO +3 -3
  4. {mango_brain-3.2.2 → mango_brain-3.2.4}/pyproject.toml +1 -1
  5. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/cli.py +15 -2
  6. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/mcp_tools.py +5 -1
  7. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/models.py +5 -5
  8. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/skills/brain-init/SKILL.md +1 -1
  9. {mango_brain-3.2.2 → mango_brain-3.2.4}/mango_brain.egg-info/SOURCES.txt +0 -0
  10. {mango_brain-3.2.2 → mango_brain-3.2.4}/mango_brain.egg-info/dependency_links.txt +0 -0
  11. {mango_brain-3.2.2 → mango_brain-3.2.4}/mango_brain.egg-info/entry_points.txt +0 -0
  12. {mango_brain-3.2.2 → mango_brain-3.2.4}/mango_brain.egg-info/requires.txt +0 -0
  13. {mango_brain-3.2.2 → mango_brain-3.2.4}/mango_brain.egg-info/top_level.txt +0 -0
  14. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/__init__.py +0 -0
  15. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/__main__.py +0 -0
  16. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/agents/analyzer.md +0 -0
  17. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/agents/executor.md +0 -0
  18. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/agents/mem-manager.md +0 -0
  19. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/agents/verifier.md +0 -0
  20. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/api_routes.py +0 -0
  21. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/config.py +0 -0
  22. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/dashboard_dist/assets/index-B2dCBdj5.js +0 -0
  23. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/dashboard_dist/assets/index-C9E5pXFt.css +0 -0
  24. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/dashboard_dist/favicon.svg +0 -0
  25. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/dashboard_dist/icons.svg +0 -0
  26. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/dashboard_dist/index.html +0 -0
  27. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/database.py +0 -0
  28. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/decay.py +0 -0
  29. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/embeddings.py +0 -0
  30. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/graph.py +0 -0
  31. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/jsonl_parser.py +0 -0
  32. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/main.py +0 -0
  33. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/mangobrain.default.toml +0 -0
  34. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/prompts/init/01-doc-base.md +0 -0
  35. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/prompts/init/02-code-base.md +0 -0
  36. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/prompts/init/03-event-base.md +0 -0
  37. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/prompts/init/04-chat-base.md +0 -0
  38. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/prompts/init/05-elaborate-base.md +0 -0
  39. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/prompts/reference/memory-definition.md +0 -0
  40. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/retrieval.py +0 -0
  41. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/rules/mangobrain-remember.md +0 -0
  42. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/rules/mangobrain-workflow.md +0 -0
  43. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/skills/discuss/SKILL.md +0 -0
  44. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/skills/elaborate/SKILL.md +0 -0
  45. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/skills/health-check/SKILL.md +0 -0
  46. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/skills/memorize/SKILL.md +0 -0
  47. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/skills/smoke-test/SKILL.md +0 -0
  48. {mango_brain-3.2.2 → mango_brain-3.2.4}/server/skills/task/SKILL.md +0 -0
  49. {mango_brain-3.2.2 → mango_brain-3.2.4}/setup.cfg +0 -0
  50. {mango_brain-3.2.2 → mango_brain-3.2.4}/tests/test_core.py +0 -0
  51. {mango_brain-3.2.2 → mango_brain-3.2.4}/tests/test_init.py +0 -0
  52. {mango_brain-3.2.2 → mango_brain-3.2.4}/tests/test_phase2.py +0 -0
  53. {mango_brain-3.2.2 → mango_brain-3.2.4}/tests/test_setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mango-brain
3
- Version: 3.2.2
3
+ Version: 3.2.4
4
4
  Summary: The learning layer for Claude Code — persistent associative memory + development workflow. Claude Code gets smarter the longer you use it.
5
5
  Author-email: Federico Anastasi <federico.anastasi@outlook.com>
6
6
  License: MIT
@@ -97,7 +97,7 @@ After 500+ memories across two real projects, session 50 is genuinely better tha
97
97
  ### 1. Install
98
98
 
99
99
  ```bash
100
- pip install mangobrain
100
+ pip install mango-brain
101
101
  ```
102
102
 
103
103
  Lightweight install (~50MB). PyTorch and the embedding engine are installed in the next step, optimized for your hardware.
@@ -128,7 +128,7 @@ Open Claude Code in your project and paste:
128
128
  Install MangoBrain for this project.
129
129
  IMPORTANT: Use Python 3.11 or higher. Check available versions first (python --version,
130
130
  py -3.12 --version, python3.12 --version, etc.) and use the correct one for pip install.
131
- Run: pip install mangobrain (using Python >= 3.11's pip)
131
+ Run: pip install mango-brain (using Python >= 3.11's pip)
132
132
  Then run: mangobrain install
133
133
  Then run: mangobrain serve --api (in background)
134
134
  Then tell me to open http://localhost:3101 and to restart Claude Code.
@@ -70,7 +70,7 @@ After 500+ memories across two real projects, session 50 is genuinely better tha
70
70
  ### 1. Install
71
71
 
72
72
  ```bash
73
- pip install mangobrain
73
+ pip install mango-brain
74
74
  ```
75
75
 
76
76
  Lightweight install (~50MB). PyTorch and the embedding engine are installed in the next step, optimized for your hardware.
@@ -101,7 +101,7 @@ Open Claude Code in your project and paste:
101
101
  Install MangoBrain for this project.
102
102
  IMPORTANT: Use Python 3.11 or higher. Check available versions first (python --version,
103
103
  py -3.12 --version, python3.12 --version, etc.) and use the correct one for pip install.
104
- Run: pip install mangobrain (using Python >= 3.11's pip)
104
+ Run: pip install mango-brain (using Python >= 3.11's pip)
105
105
  Then run: mangobrain install
106
106
  Then run: mangobrain serve --api (in background)
107
107
  Then tell me to open http://localhost:3101 and to restart Claude Code.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mango-brain
3
- Version: 3.2.2
3
+ Version: 3.2.4
4
4
  Summary: The learning layer for Claude Code — persistent associative memory + development workflow. Claude Code gets smarter the longer you use it.
5
5
  Author-email: Federico Anastasi <federico.anastasi@outlook.com>
6
6
  License: MIT
@@ -97,7 +97,7 @@ After 500+ memories across two real projects, session 50 is genuinely better tha
97
97
  ### 1. Install
98
98
 
99
99
  ```bash
100
- pip install mangobrain
100
+ pip install mango-brain
101
101
  ```
102
102
 
103
103
  Lightweight install (~50MB). PyTorch and the embedding engine are installed in the next step, optimized for your hardware.
@@ -128,7 +128,7 @@ Open Claude Code in your project and paste:
128
128
  Install MangoBrain for this project.
129
129
  IMPORTANT: Use Python 3.11 or higher. Check available versions first (python --version,
130
130
  py -3.12 --version, python3.12 --version, etc.) and use the correct one for pip install.
131
- Run: pip install mangobrain (using Python >= 3.11's pip)
131
+ Run: pip install mango-brain (using Python >= 3.11's pip)
132
132
  Then run: mangobrain install
133
133
  Then run: mangobrain serve --api (in background)
134
134
  Then tell me to open http://localhost:3101 and to restart Claude Code.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mango-brain"
7
- version = "3.2.2"
7
+ version = "3.2.4"
8
8
  description = "The learning layer for Claude Code — persistent associative memory + development workflow. Claude Code gets smarter the longer you use it."
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -445,10 +445,23 @@ def _setup_mcp_json(project_path: Path) -> None:
445
445
 
446
446
 
447
447
  def _patch_claude_md(project_path: Path, project_name: str) -> None:
448
- """Add MangoBrain section to project's CLAUDE.md if not already present."""
449
- claude_md = project_path / "CLAUDE.md"
448
+ """Add MangoBrain section to project's CLAUDE.md if not already present.
449
+
450
+ Searches for CLAUDE.md in order: .claude/CLAUDE.md, then root CLAUDE.md.
451
+ Patches whichever is found first. Creates root CLAUDE.md only if neither exists.
452
+ """
453
+ claude_md_inner = project_path / ".claude" / "CLAUDE.md"
454
+ claude_md_root = project_path / "CLAUDE.md"
450
455
  marker = "## MangoBrain"
451
456
 
457
+ # Find existing CLAUDE.md — prefer .claude/ over root
458
+ if claude_md_inner.exists():
459
+ claude_md = claude_md_inner
460
+ elif claude_md_root.exists():
461
+ claude_md = claude_md_root
462
+ else:
463
+ claude_md = claude_md_root # Create at root if neither exists
464
+
452
465
  if claude_md.exists():
453
466
  content = claude_md.read_text(encoding="utf-8")
454
467
  if marker in content:
@@ -1312,8 +1312,12 @@ def register_tools(
1312
1312
  phase: Phase name (required for action="update").
1313
1313
  step: Step name (required for action="update").
1314
1314
  status: New status: pending, in_progress, completed, skipped, failed.
1315
- result: JSON string with step results/metrics.
1315
+ result: JSON string with step results/metrics. If a dict is passed, it will be auto-serialized.
1316
1316
  """
1317
+ # Auto-serialize dict result to JSON string
1318
+ if result is not None and not isinstance(result, str):
1319
+ result = json.dumps(result)
1320
+
1317
1321
  if action == "init":
1318
1322
  count = await db.init_setup_progress(project)
1319
1323
  summary = await db.get_setup_summary(project)
@@ -217,23 +217,23 @@ SETUP_STEPS_TEMPLATE: list[tuple[str, str, int, str, str, str | None]] = [
217
217
  ("init", "doc_base", 3,
218
218
  "Doc Base — Rules & Documentation",
219
219
  "Extract memories from CLAUDE.md, .claude/rules/, and any project documentation",
220
- "prompts/init/01-doc-base.md"),
220
+ ".claude/prompts/mangobrain/init/01-doc-base.md"),
221
221
  ("init", "code_base", 4,
222
222
  "Code Base — Parallel Codebase Scan",
223
223
  "Explore the codebase with 4-5 parallel analyzer agents to create reference memories",
224
- "prompts/init/02-code-base.md"),
224
+ ".claude/prompts/mangobrain/init/02-code-base.md"),
225
225
  ("init", "event_base", 5,
226
226
  "Event Base — Existing Memory Import",
227
227
  "Import from PROJECT_MEMORY.jsonl, documents, task lists, or other knowledge archives (optional)",
228
- "prompts/init/03-event-base.md"),
228
+ ".claude/prompts/mangobrain/init/03-event-base.md"),
229
229
  ("init", "chat_base", 6,
230
230
  "Chat Base — Chat History Extraction",
231
231
  "Extract memories from 5-20 recent Claude Code chat sessions",
232
- "prompts/init/04-chat-base.md"),
232
+ ".claude/prompts/mangobrain/init/04-chat-base.md"),
233
233
  ("init", "elaborate_base", 7,
234
234
  "Elaborate Base — First Elaboration Pass",
235
235
  "Run N elaboration cycles until all memories have at least one pass and unconnected nodes are linked",
236
- "prompts/init/05-elaborate-base.md"),
236
+ ".claude/prompts/mangobrain/init/05-elaborate-base.md"),
237
237
  ("smoke_test", "queries", 8,
238
238
  "Smoke Test — Query Verification",
239
239
  "Run 10-20 diverse remember queries to verify retrieval quality across different areas",
@@ -74,7 +74,7 @@ Based on which step is next, follow the appropriate logic:
74
74
  These steps have a `prompt_file` field in the setup_status response. The prompt file contains detailed instructions for that phase.
75
75
 
76
76
  1. Mark step as in_progress: `setup_status(project, action="update", phase="{phase}", step="{step}", status="in_progress")`
77
- 2. Read the prompt file using the Read tool (path is relative to the mangobrain package directory)
77
+ 2. Read the prompt file using the Read tool (path is relative to the project root, e.g. `.claude/prompts/mangobrain/init/01-doc-base.md`)
78
78
  3. Follow the instructions in the prompt file exactly
79
79
  4. When done, mark as completed: `setup_status(project, action="update", phase="{phase}", step="{step}", status="completed", result="{JSON with metrics}")`
80
80
 
File without changes
File without changes
File without changes
File without changes