mempalace-code 1.2.0__tar.gz → 1.3.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.
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/CHANGELOG.md +57 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/PKG-INFO +29 -10
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/README.md +26 -9
- mempalace_code-1.3.0/benchmarks/results_token_delta_wh40k.json +610 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/docs/AGENT_INSTALL.md +1 -1
- mempalace_code-1.3.0/docs/BACKLOG-archived.yaml +150 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/docs/BACKLOG.yaml +160 -75
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/docs/COMPARISON_GRAPHIFY.md +5 -5
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/README.md +1 -1
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/cli.py +217 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/knowledge_graph.py +75 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/mcp_server.py +607 -4
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/miner.py +366 -16
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/room_detector_local.py +62 -13
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/searcher.py +16 -0
- mempalace_code-1.3.0/mempalace/watcher.py +240 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/pyproject.toml +2 -1
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_cli.py +234 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_kg_extract.py +365 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_mcp_server.py +631 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_miner.py +401 -1
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_searcher.py +91 -0
- mempalace_code-1.3.0/tests/test_watcher.py +490 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/prompts/codex-hardening-review.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/prompts/codex-plan-review.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/settings.json +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/_shared/commit-checkpoint.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/_shared/mode-classification.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/_shared/task-state.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/bench/SKILL.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/doc-refresh/INSTRUCTIONS.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/doc-refresh/SKILL.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/entropy-gc/INSTRUCTIONS.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/entropy-gc/SKILL.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/mine/SKILL.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/palace-health/SKILL.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/release/SKILL.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/ship/INSTRUCTIONS.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/ship/SKILL.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/start/INSTRUCTIONS.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/start/SKILL.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/status/SKILL.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/task-hardening/INSTRUCTIONS.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/task-hardening/SKILL.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/task-plan/INSTRUCTIONS.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/task-plan/SKILL.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/verify/INSTRUCTIONS.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.claude/skills/verify/SKILL.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.github/workflows/ci.yml +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.github/workflows/publish.yml +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.gitignore +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/.pre-commit-config.yaml +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/CLAUDE.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/CONTRIBUTING.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/LICENSE +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/NOTICE +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/assets/mempalace_banner.jpg +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/benchmarks/BENCHMARKS.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/benchmarks/HYBRID_MODE.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/benchmarks/README.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/benchmarks/convomem_bench.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/benchmarks/dotnet_bench.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/benchmarks/embed_ab_bench.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/benchmarks/locomo_bench.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/benchmarks/longmemeval_bench.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/benchmarks/membench_bench.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/benchmarks/results_embed_ab_2026-04-09.json +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/benchmarks/results_token_delta_mempalace.json +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/benchmarks/token_delta_bench.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/docs/BACKUP_RESTORE.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/docs/BENCH_TOKEN_DELTA.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/docs/HOW_SEARCH_WORKS.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/docs/OFFLINE_USAGE.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/docs/UPSTREAM_HARDENING.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/docs/WHY_THIS_FORK.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/examples/HOOKS_TUTORIAL.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/examples/basic_mining.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/examples/convo_import.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/examples/gemini_cli_setup.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/examples/mcp_setup.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/hooks/README.md +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/hooks/mempal_precompact_hook.sh +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/hooks/mempal_save_hook.sh +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/__init__.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/__main__.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/_chroma_store.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/backup.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/config.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/convo_miner.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/dialect.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/entity_detector.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/entity_registry.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/export.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/general_extractor.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/layers.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/migrate.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/normalize.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/onboarding.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/palace_graph.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/py.typed +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/spellcheck.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/split_mega_files.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/storage.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/treesitter.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/mempalace/version.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/scripts/bootstrap.sh +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/scripts/codex-review.sh +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/scripts/nuke_wing.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/conftest.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_backup.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_chroma_compat.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_chunking.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_config.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_convo_miner.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_dialect.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_dotnet_config.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_e2e.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_embed_ab_bench.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_export.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_knowledge_graph.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_lang_detect.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_migrate.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_normalize.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_offline.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_split_mega_files.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_storage.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_storage_lance.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_symbol_extract.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_treesitter.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/tests/test_version_consistency.py +0 -0
- {mempalace_code-1.2.0 → mempalace_code-1.3.0}/uv.lock +0 -0
|
@@ -1,5 +1,62 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v1.3.0 — 2026-04-19
|
|
4
|
+
|
|
5
|
+
First-class C#/.NET support — delivers [rergards/mempalace-code#1](https://github.com/rergards/mempalace-code/issues/1) in full.
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- **C# structural mining** — parse `.cs` files by namespace, class, interface, enum, record, method, property, event; partial class support, XML doc preservation (MINE-CSHARP)
|
|
9
|
+
- **.NET solution/project awareness** — `.sln` and `.csproj` parsing with project references, package references, target frameworks; queryable via KG (MINE-DOTNET)
|
|
10
|
+
- **F#, VB.NET, XAML mining** — `.fs`/`.fsi`, `.vb`, `.xaml` with structured symbol extraction and code-behind linking (MINE-DOTNET, MINE-XAML, MINE-XAML-NAME-ATTR)
|
|
11
|
+
- **Cross-project symbol relationships** — interface implementations, inheritance, type usage stored as KG triples (DOTNET-SYMBOL-GRAPH)
|
|
12
|
+
- **C# multi-line base-type declarations** — `class Foo :\n IBar, IBaz` now parsed correctly (DOTNET-CS-MULTILINE-BASE)
|
|
13
|
+
- **6 architecture MCP tools** — `find_implementations`, `find_references`, `show_project_graph`, `show_type_dependencies`, `explain_subsystem`, `extract_reusable` (MCP-ARCH-TOOLS, ARCH-RETRIEVAL, LOGIC-EXTRACTION)
|
|
14
|
+
- **Python type extraction to KG** — class inheritance and ABC/Protocol implementations (PY-TYPE-KG)
|
|
15
|
+
- **`mine-all` command** — batch mine all projects in a parent directory (MINE-MULTI)
|
|
16
|
+
- **`--watch` flag** — auto-incremental re-mining on file changes via watchdog (MINE-WATCH)
|
|
17
|
+
- **Auto-organize by .NET structure** — `.sln` creates wing, `.csproj` maps to room (REPO-STRUCTURE-DEFAULTS)
|
|
18
|
+
- **.NET benchmark suite** — 20-query R@5/R@10 benchmark targeting CleanArchitecture (BENCH-DOTNET)
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
- `find_implementations` now includes Python ABC/Protocol subclasses (FIND-IMPL-INHERITS)
|
|
22
|
+
- `.gitignore` patterns respected in `--watch` mode (MINE-WATCH-GITIGNORE-CACHE)
|
|
23
|
+
|
|
24
|
+
### Stats
|
|
25
|
+
- 27 MCP tools (was 18)
|
|
26
|
+
- 1002 tests (was 527)
|
|
27
|
+
|
|
28
|
+
## 2026-04-19 · REPO-STRUCTURE-DEFAULTS
|
|
29
|
+
|
|
30
|
+
Auto-organize wings/rooms by .NET solution/project structure: mining a repo with `.sln` files now creates a wing named after the solution and maps each `.csproj` to a room, using KG project info for defaults and supporting configurable folder-based room detection.
|
|
31
|
+
|
|
32
|
+
## 2026-04-18 · FIND-IMPL-INHERITS
|
|
33
|
+
|
|
34
|
+
Fix `mempalace_find_implementations` to include Python ABC/Protocol subclasses: when the queried interface is itself abstract (has an outgoing `implements → ABC/ABCMeta/Protocol` edge), incoming `inherits` triples are now included alongside `implements` triples, so concrete subclasses are returned instead of an empty list.
|
|
35
|
+
|
|
36
|
+
## 2026-04-18 · MINE-WATCH
|
|
37
|
+
|
|
38
|
+
Add `--watch` flag to `mempalace mine` for auto-incremental re-indexing: uses `watchdog` to monitor file changes, debounces updates (5s), and only re-indexes modified files — keeping the palace in sync automatically with low CPU overhead when idle.
|
|
39
|
+
|
|
40
|
+
## 2026-04-18 · PY-TYPE-KG
|
|
41
|
+
|
|
42
|
+
Add Python type extraction to the knowledge graph in `miner.py`: class inheritance (`class Foo(Bar)` → `extends` triple) and ABC/Protocol implementations are now extracted for Python codebases, making architecture retrieval tools (`find_implementations`, `find_references`, `show_type_dependencies`, `extract_reusable`) functional for Python projects.
|
|
43
|
+
|
|
44
|
+
## 2026-04-18 · MINE-MULTI
|
|
45
|
+
|
|
46
|
+
Add `mempalace mine-all <parent-dir>` command for batch multi-project mining: scans immediate subdirectories for project markers (`.git`, `pyproject.toml`, `package.json`, `*.sln`, `go.mod`, `Cargo.toml`, `go.sum`), mines each detected project into its own wing, and reports per-project results with a summary table.
|
|
47
|
+
|
|
48
|
+
## 2026-04-18 · LOGIC-EXTRACTION
|
|
49
|
+
|
|
50
|
+
Add `mempalace_extract_reusable` MCP tool: classifies transitive dependencies of a symbol/subsystem as core, platform-specific, or glue, and identifies the minimal public interface needed for safe extraction.
|
|
51
|
+
|
|
52
|
+
## 2026-04-18 · ARCH-RETRIEVAL
|
|
53
|
+
|
|
54
|
+
Add `mempalace_explain_subsystem` MCP tool: combines semantic search with KG traversal to answer "how does this subsystem work?" queries, returning entry points, extracted symbols, and expanded relationships.
|
|
55
|
+
|
|
56
|
+
## 2026-04-18 · MCP-ARCH-TOOLS
|
|
57
|
+
|
|
58
|
+
Add 4 architecture-oriented MCP tools for .NET type analysis: `mempalace_find_implementations`, `mempalace_find_references`, `mempalace_show_project_graph`, and `mempalace_show_type_dependencies`.
|
|
59
|
+
|
|
3
60
|
## 2026-04-17 · SKILLS-HOOKS
|
|
4
61
|
|
|
5
62
|
Add Claude Code skills and hooks from wh40k workflow: 12 skills (`/start`, `/status`, `/verify`, `/palace-health`, `/task-plan`, `/task-hardening`, `/doc-refresh`, `/ship`, `/release`, `/entropy-gc`, `/mine`, `/bench`), 3 shared modules (mode-classification, task-state, commit-checkpoint), Codex review integration, pre-commit verification gate, and edit logging hooks.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mempalace-code
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.0
|
|
4
4
|
Summary: Developer memory tool — mine codebases and conversations into a LanceDB-backed searchable palace. No API key required.
|
|
5
5
|
Project-URL: Homepage, https://github.com/rergards/mempalace-code
|
|
6
6
|
Project-URL: Repository, https://github.com/rergards/mempalace-code
|
|
@@ -42,6 +42,8 @@ Requires-Dist: tree-sitter-rust<0.26,>=0.23; extra == 'treesitter'
|
|
|
42
42
|
Requires-Dist: tree-sitter-typescript<0.26,>=0.23; extra == 'treesitter'
|
|
43
43
|
Requires-Dist: tree-sitter<0.24,>=0.22; (python_version < '3.10') and extra == 'treesitter'
|
|
44
44
|
Requires-Dist: tree-sitter<0.26,>=0.22; (python_version >= '3.10') and extra == 'treesitter'
|
|
45
|
+
Provides-Extra: watch
|
|
46
|
+
Requires-Dist: watchfiles>=1.0; extra == 'watch'
|
|
45
47
|
Description-Content-Type: text/markdown
|
|
46
48
|
|
|
47
49
|
<div align="center">
|
|
@@ -69,13 +71,13 @@ No cloud. No API keys. No subscription. Nothing leaves your machine.
|
|
|
69
71
|
<table>
|
|
70
72
|
<tr>
|
|
71
73
|
<td align="center"><strong>Tree-sitter AST Parsing</strong><br><sub>Chunks at function boundaries<br>not arbitrary line counts</sub></td>
|
|
72
|
-
<td align="center"><strong>
|
|
74
|
+
<td align="center"><strong>27 MCP Tools</strong><br><sub>Native Claude Code integration<br>search, store, traverse</sub></td>
|
|
73
75
|
<td align="center"><strong>Temporal Knowledge Graph</strong><br><sub>Facts that change over time<br>with validity windows</sub></td>
|
|
74
76
|
</tr>
|
|
75
77
|
<tr>
|
|
76
78
|
<td align="center"><strong>595x Token Savings</strong><br><sub>measured peak · median 80x<br><a href="docs/BENCH_TOKEN_DELTA.md">scales with project size</a></sub></td>
|
|
77
79
|
<td align="center"><strong>Cross-Project Tunnels</strong><br><sub>Search <code>auth</code> in one project<br>find it everywhere</sub></td>
|
|
78
|
-
<td align="center"><strong>
|
|
80
|
+
<td align="center"><strong>1002 Tests · $0 Cost</strong><br><sub>Every feature acceptance-gated<br>fully offline after install</sub></td>
|
|
79
81
|
</tr>
|
|
80
82
|
</table>
|
|
81
83
|
|
|
@@ -100,7 +102,7 @@ mempalace mine ~/projects/myapp # index your codebase
|
|
|
100
102
|
claude mcp add mempalace -- python -m mempalace.mcp_server # connect to Claude Code
|
|
101
103
|
```
|
|
102
104
|
|
|
103
|
-
This makes the
|
|
105
|
+
This makes the 27 tools available to your AI. For proactive search and storage (without you asking), you'll also need to add usage rules to your `CLAUDE.md` — see [`docs/AGENT_INSTALL.md`](docs/AGENT_INSTALL.md) Section 7.
|
|
104
106
|
|
|
105
107
|
</details>
|
|
106
108
|
|
|
@@ -137,7 +139,8 @@ You write code. You make decisions. You debug things. Between sessions, all that
|
|
|
137
139
|
mempalace-code **indexes it once** into a local vector store, then your AI finds it in milliseconds — using [595x fewer tokens](docs/BENCH_TOKEN_DELTA.md) than grep + read at measured peak (median 80x on a 19k-chunk project, and it keeps scaling). Think of it as `git log` for everything that *isn't* in the code: the *why*, the discussions, the dead ends, the decisions.
|
|
138
140
|
|
|
139
141
|
**What gets indexed:**
|
|
140
|
-
- Code files — functions, classes, modules (Python, TypeScript/JS, Go, Rust, C/C++, Markdown)
|
|
142
|
+
- Code files — functions, classes, modules (Python, TypeScript/JS, Go, Rust, C/C++, C#, F#, VB.NET, XAML, Java, Kotlin, Markdown)
|
|
143
|
+
- .NET solutions — `.sln`/`.csproj` project graphs, cross-project symbol relationships, interface implementations
|
|
141
144
|
- Conversation exports — Claude, ChatGPT, Slack
|
|
142
145
|
- Architecture notes, decisions, anything you store manually
|
|
143
146
|
|
|
@@ -212,7 +215,7 @@ mempalace-code organizes memories into a navigable structure — the same mental
|
|
|
212
215
|
|
|
213
216
|
---
|
|
214
217
|
|
|
215
|
-
### MCP Server —
|
|
218
|
+
### MCP Server — 27 Tools
|
|
216
219
|
|
|
217
220
|
```bash
|
|
218
221
|
claude mcp add mempalace -- python -m mempalace.mcp_server
|
|
@@ -257,6 +260,20 @@ claude mcp add mempalace -- python -m mempalace.mcp_server
|
|
|
257
260
|
|
|
258
261
|
</details>
|
|
259
262
|
|
|
263
|
+
<details>
|
|
264
|
+
<summary><strong>Architecture Retrieval</strong></summary>
|
|
265
|
+
|
|
266
|
+
| Tool | What |
|
|
267
|
+
|------|------|
|
|
268
|
+
| `mempalace_find_implementations` | Find all types implementing a given interface |
|
|
269
|
+
| `mempalace_find_references` | Find all usages of a type (implementors, subclasses, deps) |
|
|
270
|
+
| `mempalace_show_project_graph` | Project-level dependency graph, optionally filtered by solution |
|
|
271
|
+
| `mempalace_show_type_dependencies` | Inheritance/implementation chain (ancestors + descendants) |
|
|
272
|
+
| `mempalace_explain_subsystem` | Explain how a subsystem works: semantic search + KG expansion |
|
|
273
|
+
| `mempalace_extract_reusable` | Classify deps as core/platform/glue; identify extraction boundary |
|
|
274
|
+
|
|
275
|
+
</details>
|
|
276
|
+
|
|
260
277
|
<details>
|
|
261
278
|
<summary><strong>Navigation & Diary</strong></summary>
|
|
262
279
|
|
|
@@ -404,7 +421,7 @@ This is a code-first fork of [milla-jovovich/mempalace](https://github.com/milla
|
|
|
404
421
|
| ChromaDB — [silently deletes data on version bump](https://github.com/milla-jovovich/mempalace/issues/469) | LanceDB — crash-safe Arrow storage, no version-cliff |
|
|
405
422
|
| "No internet after install" — [false](https://github.com/milla-jovovich/mempalace/issues/524) | `mempalace init` downloads model explicitly; fully offline after |
|
|
406
423
|
| "100% R@5" — [unverifiable](https://github.com/milla-jovovich/mempalace/issues/27) | Number removed. Methodology caveats documented |
|
|
407
|
-
| ~30% test coverage |
|
|
424
|
+
| ~30% test coverage | 1002 tests, every feature acceptance-gated |
|
|
408
425
|
| No backup, no recovery | `backup` / `restore` / `export` / `import` |
|
|
409
426
|
| No incremental mining | Content-hash incremental: only changed files re-chunked |
|
|
410
427
|
| No code-search | `code_search` — filter by language, symbol, glob |
|
|
@@ -476,6 +493,8 @@ mempalace mine <dir> # mine code project
|
|
|
476
493
|
mempalace mine <dir> --wing myapp # tag with wing
|
|
477
494
|
mempalace mine <dir> --mode convos # mine conversations
|
|
478
495
|
mempalace mine <dir> --full # force full rebuild
|
|
496
|
+
mempalace mine <dir> --watch # auto-incremental on file changes
|
|
497
|
+
mempalace mine-all <parent-dir> # batch mine all projects in a directory
|
|
479
498
|
|
|
480
499
|
# Search
|
|
481
500
|
mempalace search "query" # search everything
|
|
@@ -529,7 +548,7 @@ Two Claude Code hooks for automatic memory saving:
|
|
|
529
548
|
mempalace/
|
|
530
549
|
├── mempalace/
|
|
531
550
|
│ ├── cli.py ← CLI entry point
|
|
532
|
-
│ ├── mcp_server.py ← MCP server (
|
|
551
|
+
│ ├── mcp_server.py ← MCP server (27 tools)
|
|
533
552
|
│ ├── storage.py ← LanceDB vector storage
|
|
534
553
|
│ ├── miner.py ← language-aware code chunking
|
|
535
554
|
│ ├── convo_miner.py ← conversation ingest
|
|
@@ -540,7 +559,7 @@ mempalace/
|
|
|
540
559
|
├── benchmarks/ ← reproducible benchmark runners
|
|
541
560
|
├── hooks/ ← Claude Code auto-save hooks
|
|
542
561
|
├── examples/ ← usage examples
|
|
543
|
-
└── tests/ ←
|
|
562
|
+
└── tests/ ← 1002 tests
|
|
544
563
|
```
|
|
545
564
|
|
|
546
565
|
</details>
|
|
@@ -560,7 +579,7 @@ python -m pytest tests/ -x -q # full suite, all local, no network
|
|
|
560
579
|
Apache 2.0 — see [LICENSE](LICENSE) and [NOTICE](NOTICE).
|
|
561
580
|
|
|
562
581
|
<!-- Link Definitions -->
|
|
563
|
-
[version-shield]: https://img.shields.io/badge/version-1.
|
|
582
|
+
[version-shield]: https://img.shields.io/badge/version-1.3.0-4dc9f6?style=flat-square&labelColor=0a0e14
|
|
564
583
|
[release-link]: https://github.com/rergards/mempalace-code/releases
|
|
565
584
|
[python-shield]: https://img.shields.io/badge/python-3.9+-7dd8f8?style=flat-square&labelColor=0a0e14&logo=python&logoColor=7dd8f8
|
|
566
585
|
[python-link]: https://www.python.org/
|
|
@@ -23,13 +23,13 @@ No cloud. No API keys. No subscription. Nothing leaves your machine.
|
|
|
23
23
|
<table>
|
|
24
24
|
<tr>
|
|
25
25
|
<td align="center"><strong>Tree-sitter AST Parsing</strong><br><sub>Chunks at function boundaries<br>not arbitrary line counts</sub></td>
|
|
26
|
-
<td align="center"><strong>
|
|
26
|
+
<td align="center"><strong>27 MCP Tools</strong><br><sub>Native Claude Code integration<br>search, store, traverse</sub></td>
|
|
27
27
|
<td align="center"><strong>Temporal Knowledge Graph</strong><br><sub>Facts that change over time<br>with validity windows</sub></td>
|
|
28
28
|
</tr>
|
|
29
29
|
<tr>
|
|
30
30
|
<td align="center"><strong>595x Token Savings</strong><br><sub>measured peak · median 80x<br><a href="docs/BENCH_TOKEN_DELTA.md">scales with project size</a></sub></td>
|
|
31
31
|
<td align="center"><strong>Cross-Project Tunnels</strong><br><sub>Search <code>auth</code> in one project<br>find it everywhere</sub></td>
|
|
32
|
-
<td align="center"><strong>
|
|
32
|
+
<td align="center"><strong>1002 Tests · $0 Cost</strong><br><sub>Every feature acceptance-gated<br>fully offline after install</sub></td>
|
|
33
33
|
</tr>
|
|
34
34
|
</table>
|
|
35
35
|
|
|
@@ -54,7 +54,7 @@ mempalace mine ~/projects/myapp # index your codebase
|
|
|
54
54
|
claude mcp add mempalace -- python -m mempalace.mcp_server # connect to Claude Code
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
-
This makes the
|
|
57
|
+
This makes the 27 tools available to your AI. For proactive search and storage (without you asking), you'll also need to add usage rules to your `CLAUDE.md` — see [`docs/AGENT_INSTALL.md`](docs/AGENT_INSTALL.md) Section 7.
|
|
58
58
|
|
|
59
59
|
</details>
|
|
60
60
|
|
|
@@ -91,7 +91,8 @@ You write code. You make decisions. You debug things. Between sessions, all that
|
|
|
91
91
|
mempalace-code **indexes it once** into a local vector store, then your AI finds it in milliseconds — using [595x fewer tokens](docs/BENCH_TOKEN_DELTA.md) than grep + read at measured peak (median 80x on a 19k-chunk project, and it keeps scaling). Think of it as `git log` for everything that *isn't* in the code: the *why*, the discussions, the dead ends, the decisions.
|
|
92
92
|
|
|
93
93
|
**What gets indexed:**
|
|
94
|
-
- Code files — functions, classes, modules (Python, TypeScript/JS, Go, Rust, C/C++, Markdown)
|
|
94
|
+
- Code files — functions, classes, modules (Python, TypeScript/JS, Go, Rust, C/C++, C#, F#, VB.NET, XAML, Java, Kotlin, Markdown)
|
|
95
|
+
- .NET solutions — `.sln`/`.csproj` project graphs, cross-project symbol relationships, interface implementations
|
|
95
96
|
- Conversation exports — Claude, ChatGPT, Slack
|
|
96
97
|
- Architecture notes, decisions, anything you store manually
|
|
97
98
|
|
|
@@ -166,7 +167,7 @@ mempalace-code organizes memories into a navigable structure — the same mental
|
|
|
166
167
|
|
|
167
168
|
---
|
|
168
169
|
|
|
169
|
-
### MCP Server —
|
|
170
|
+
### MCP Server — 27 Tools
|
|
170
171
|
|
|
171
172
|
```bash
|
|
172
173
|
claude mcp add mempalace -- python -m mempalace.mcp_server
|
|
@@ -211,6 +212,20 @@ claude mcp add mempalace -- python -m mempalace.mcp_server
|
|
|
211
212
|
|
|
212
213
|
</details>
|
|
213
214
|
|
|
215
|
+
<details>
|
|
216
|
+
<summary><strong>Architecture Retrieval</strong></summary>
|
|
217
|
+
|
|
218
|
+
| Tool | What |
|
|
219
|
+
|------|------|
|
|
220
|
+
| `mempalace_find_implementations` | Find all types implementing a given interface |
|
|
221
|
+
| `mempalace_find_references` | Find all usages of a type (implementors, subclasses, deps) |
|
|
222
|
+
| `mempalace_show_project_graph` | Project-level dependency graph, optionally filtered by solution |
|
|
223
|
+
| `mempalace_show_type_dependencies` | Inheritance/implementation chain (ancestors + descendants) |
|
|
224
|
+
| `mempalace_explain_subsystem` | Explain how a subsystem works: semantic search + KG expansion |
|
|
225
|
+
| `mempalace_extract_reusable` | Classify deps as core/platform/glue; identify extraction boundary |
|
|
226
|
+
|
|
227
|
+
</details>
|
|
228
|
+
|
|
214
229
|
<details>
|
|
215
230
|
<summary><strong>Navigation & Diary</strong></summary>
|
|
216
231
|
|
|
@@ -358,7 +373,7 @@ This is a code-first fork of [milla-jovovich/mempalace](https://github.com/milla
|
|
|
358
373
|
| ChromaDB — [silently deletes data on version bump](https://github.com/milla-jovovich/mempalace/issues/469) | LanceDB — crash-safe Arrow storage, no version-cliff |
|
|
359
374
|
| "No internet after install" — [false](https://github.com/milla-jovovich/mempalace/issues/524) | `mempalace init` downloads model explicitly; fully offline after |
|
|
360
375
|
| "100% R@5" — [unverifiable](https://github.com/milla-jovovich/mempalace/issues/27) | Number removed. Methodology caveats documented |
|
|
361
|
-
| ~30% test coverage |
|
|
376
|
+
| ~30% test coverage | 1002 tests, every feature acceptance-gated |
|
|
362
377
|
| No backup, no recovery | `backup` / `restore` / `export` / `import` |
|
|
363
378
|
| No incremental mining | Content-hash incremental: only changed files re-chunked |
|
|
364
379
|
| No code-search | `code_search` — filter by language, symbol, glob |
|
|
@@ -430,6 +445,8 @@ mempalace mine <dir> # mine code project
|
|
|
430
445
|
mempalace mine <dir> --wing myapp # tag with wing
|
|
431
446
|
mempalace mine <dir> --mode convos # mine conversations
|
|
432
447
|
mempalace mine <dir> --full # force full rebuild
|
|
448
|
+
mempalace mine <dir> --watch # auto-incremental on file changes
|
|
449
|
+
mempalace mine-all <parent-dir> # batch mine all projects in a directory
|
|
433
450
|
|
|
434
451
|
# Search
|
|
435
452
|
mempalace search "query" # search everything
|
|
@@ -483,7 +500,7 @@ Two Claude Code hooks for automatic memory saving:
|
|
|
483
500
|
mempalace/
|
|
484
501
|
├── mempalace/
|
|
485
502
|
│ ├── cli.py ← CLI entry point
|
|
486
|
-
│ ├── mcp_server.py ← MCP server (
|
|
503
|
+
│ ├── mcp_server.py ← MCP server (27 tools)
|
|
487
504
|
│ ├── storage.py ← LanceDB vector storage
|
|
488
505
|
│ ├── miner.py ← language-aware code chunking
|
|
489
506
|
│ ├── convo_miner.py ← conversation ingest
|
|
@@ -494,7 +511,7 @@ mempalace/
|
|
|
494
511
|
├── benchmarks/ ← reproducible benchmark runners
|
|
495
512
|
├── hooks/ ← Claude Code auto-save hooks
|
|
496
513
|
├── examples/ ← usage examples
|
|
497
|
-
└── tests/ ←
|
|
514
|
+
└── tests/ ← 1002 tests
|
|
498
515
|
```
|
|
499
516
|
|
|
500
517
|
</details>
|
|
@@ -514,7 +531,7 @@ python -m pytest tests/ -x -q # full suite, all local, no network
|
|
|
514
531
|
Apache 2.0 — see [LICENSE](LICENSE) and [NOTICE](NOTICE).
|
|
515
532
|
|
|
516
533
|
<!-- Link Definitions -->
|
|
517
|
-
[version-shield]: https://img.shields.io/badge/version-1.
|
|
534
|
+
[version-shield]: https://img.shields.io/badge/version-1.3.0-4dc9f6?style=flat-square&labelColor=0a0e14
|
|
518
535
|
[release-link]: https://github.com/rergards/mempalace-code/releases
|
|
519
536
|
[python-shield]: https://img.shields.io/badge/python-3.9+-7dd8f8?style=flat-square&labelColor=0a0e14&logo=python&logoColor=7dd8f8
|
|
520
537
|
[python-link]: https://www.python.org/
|