mempalace-code 1.0.0__py3-none-any.whl

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/version.py ADDED
@@ -0,0 +1,3 @@
1
+ """Single source of truth for the MemPalace package version."""
2
+
3
+ __version__ = "3.0.0"
@@ -0,0 +1,489 @@
1
+ Metadata-Version: 2.4
2
+ Name: mempalace-code
3
+ Version: 1.0.0
4
+ Summary: Developer memory tool — mine codebases and conversations into a LanceDB-backed searchable palace. No API key required.
5
+ Project-URL: Homepage, https://github.com/rergards/mempalace-code
6
+ Project-URL: Repository, https://github.com/rergards/mempalace-code
7
+ Project-URL: Bug Tracker, https://github.com/rergards/mempalace-code/issues
8
+ Project-URL: Upstream, https://github.com/milla-jovovich/mempalace
9
+ Author: Ben Sigman, Igor Lins e Silva, milla-jovovich
10
+ Author-email: Aleksandr Markov <rergards@gmail.com>
11
+ License-Expression: Apache-2.0
12
+ License-File: LICENSE
13
+ License-File: NOTICE
14
+ Keywords: ai,chatgpt,claude,code-mining,code-search,crash-safe,developer-tools,embeddings,lancedb,llm,mcp,memory,rag,vector-database
15
+ Classifier: Development Status :: 4 - Beta
16
+ Classifier: Environment :: Console
17
+ Classifier: Intended Audience :: Developers
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
25
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
+ Classifier: Topic :: Utilities
27
+ Requires-Python: >=3.9
28
+ Requires-Dist: lancedb>=0.17
29
+ Requires-Dist: pyyaml>=6.0
30
+ Requires-Dist: sentence-transformers>=2.2
31
+ Provides-Extra: chroma
32
+ Requires-Dist: chromadb<0.7,>=0.5.0; extra == 'chroma'
33
+ Provides-Extra: dev
34
+ Requires-Dist: pytest>=7.0; extra == 'dev'
35
+ Requires-Dist: ruff>=0.4.0; extra == 'dev'
36
+ Provides-Extra: spellcheck
37
+ Requires-Dist: autocorrect>=2.0; extra == 'spellcheck'
38
+ Description-Content-Type: text/markdown
39
+
40
+ <div align="center">
41
+
42
+ <img src="assets/mempalace_banner.jpg" alt="MemPalace" width="640">
43
+
44
+ # MemPalace
45
+
46
+ **Offline-first AI memory for coding** — vectors, temporal facts, and conversations in one palace. The embedding model ships as part of the install; after setup, nothing leaves your machine.
47
+
48
+ <br>
49
+
50
+ Mine your codebase into a searchable palace. Your AI assistant finds architecture decisions, API patterns, and past debugging sessions — across sessions and projects — without re-reading every file.
51
+
52
+ > Built by a developer for developers — no celebrity endorsement, no marketing claims,
53
+ > just a local-first memory system that does what the README says it does.
54
+
55
+ [![][version-shield]][release-link]
56
+ [![][python-shield]][python-link]
57
+ [![][license-shield]][license-link]
58
+
59
+ <br>
60
+
61
+ [Quick Start](#quick-start) · [The Palace](#the-palace) · [MCP Tools](#mcp-server) · [Knowledge Graph](#knowledge-graph) · [Benchmarks](#benchmarks)
62
+
63
+ <br>
64
+
65
+ <table>
66
+ <tr>
67
+ <td align="center"><strong>LanceDB</strong><br><sub>Crash-safe vector storage<br>no server required</sub></td>
68
+ <td align="center"><strong>18 MCP tools</strong><br><sub>Native Claude Code integration<br>search, store, traverse</sub></td>
69
+ <td align="center"><strong>$0</strong><br><sub>No subscription<br>No cloud. Local only.</sub></td>
70
+ </tr>
71
+ </table>
72
+
73
+ </div>
74
+
75
+ ---
76
+
77
+ ## Quick Start
78
+
79
+ ```bash
80
+ pip install mempalace-code
81
+
82
+ # Index a code project
83
+ mempalace init ~/projects/myapp
84
+ mempalace mine ~/projects/myapp
85
+
86
+ # Connect to Claude Code — one-time setup
87
+ claude mcp add mempalace -- python -m mempalace.mcp_server
88
+
89
+ # Search from the CLI
90
+ mempalace search "rate limiting implementation"
91
+ mempalace search "why did we choose Postgres"
92
+ ```
93
+
94
+ After `mine`, your AI assistant can call `mempalace_search` automatically during conversations. No manual search commands needed.
95
+
96
+ Installing mempalace for a coding agent? See [`docs/AGENT_INSTALL.md`](docs/AGENT_INSTALL.md) — a decision-tree runbook that handles install, MCP wiring, verification, and optionally injects usage rules into your CLAUDE.md so the assistant knows when to search, when to store, and how to organize memories.
97
+
98
+ ---
99
+
100
+ ## Why MemPalace
101
+
102
+ Every architecture decision, debugging session, and design discussion lives in your codebase and chat history. Between sessions, all of that context disappears. MemPalace indexes it once into a crash-safe local vector store, then makes it findable in milliseconds — using [13–80x fewer tokens](docs/BENCH_TOKEN_DELTA.md) than grep + read.
103
+
104
+ **What it indexes:**
105
+
106
+ - Code files — functions, classes, modules (Python, TypeScript/JS, Go, Markdown)
107
+ - Conversation exports — Claude, ChatGPT, Slack exports
108
+ - Decisions, architecture notes, and anything else you mine
109
+
110
+ **How you use it:**
111
+
112
+ After setup, your AI assistant calls MemPalace tools automatically. Ask Claude "how did we handle auth?" and it queries the palace without you typing a search command.
113
+
114
+ ---
115
+
116
+ ## The Palace
117
+
118
+ MemPalace organizes everything into a navigable structure — the same mental model ancient Greek orators used to memorize speeches by placing ideas in rooms of an imaginary building.
119
+
120
+ ```
121
+ ┌─────────────────────────────────────────────────────────────┐
122
+ │ WING: myapp │
123
+ │ │
124
+ │ ┌──────────┐ ──hall── ┌──────────┐ │
125
+ │ │ backend │ │ frontend│ │
126
+ │ └────┬─────┘ └──────────┘ │
127
+ │ │ │
128
+ │ ▼ │
129
+ │ ┌──────────┐ ┌──────────┐ │
130
+ │ │ Closet │ ───▶ │ Drawer │ │
131
+ │ └──────────┘ └──────────┘ │
132
+ └─────────┼──────────────────────────────────────────────────┘
133
+
134
+ tunnel
135
+
136
+ ┌─────────┼──────────────────────────────────────────────────┐
137
+ │ WING: otherapp │
138
+ │ │ │
139
+ │ ┌────┴─────┐ ──hall── ┌──────────┐ │
140
+ │ │ backend │ │ infra │ │
141
+ │ └────┬─────┘ └──────────┘ │
142
+ │ │ │
143
+ │ ▼ │
144
+ │ ┌──────────┐ ┌──────────┐ │
145
+ │ │ Closet │ ───▶ │ Drawer │ │
146
+ │ └──────────┘ └──────────┘ │
147
+ └─────────────────────────────────────────────────────────────┘
148
+ ```
149
+
150
+ **Wings** — a project or person. As many as you need.
151
+ **Rooms** — topics within a wing: `backend`, `auth`, `deploy`, `decisions`.
152
+ **Halls** — connections between related rooms within the same wing.
153
+ **Tunnels** — connections between wings. When `auth` appears in two projects, a tunnel links them.
154
+ **Drawers** — verbatim content. Never summarized, never rewritten.
155
+
156
+ When the same room name appears across wings, MemPalace creates a tunnel automatically. Searching `auth` in one project surfaces related `auth` content from others.
157
+
158
+ ---
159
+
160
+ ## Language-Aware Code Mining
161
+
162
+ `mempalace mine` walks your source tree and chunks files at structural boundaries — not arbitrary line counts.
163
+
164
+ | Language | Chunking strategy |
165
+ |----------|------------------|
166
+ | Python (`.py`) | Functions, classes, methods |
167
+ | TypeScript / JavaScript (`.ts`, `.tsx`, `.js`, `.jsx`) | Functions, classes, exports, import groups |
168
+ | Go (`.go`) | Functions, types |
169
+ | Markdown / plain text (`.md`, `.txt`) | Heading sections, then paragraphs |
170
+ | Other | Adaptive line-count fallback |
171
+
172
+ Leading comments and docstrings are attached to the declaration they document. Import groups are collected as a single chunk. Small fragments are merged with neighbors to stay above a minimum useful size.
173
+
174
+ ```bash
175
+ mempalace mine ~/projects/myapp # all supported file types
176
+ mempalace mine ~/projects/myapp --wing myapp # tag with a specific wing
177
+ ```
178
+
179
+ ---
180
+
181
+ ## MCP Server
182
+
183
+ ```bash
184
+ claude mcp add mempalace -- python -m mempalace.mcp_server
185
+ ```
186
+
187
+ ### 18 Tools
188
+
189
+ **Palace — read**
190
+
191
+ | Tool | What |
192
+ |------|------|
193
+ | `mempalace_status` | Palace overview — total drawers, wings, rooms |
194
+ | `mempalace_list_wings` | All wings with drawer counts |
195
+ | `mempalace_list_rooms` | Rooms within a wing |
196
+ | `mempalace_get_taxonomy` | Full wing → room → count tree |
197
+ | `mempalace_search` | Semantic search with optional wing/room filters |
198
+ | `mempalace_check_duplicate` | Check before filing — 0.9 similarity threshold |
199
+
200
+ **Palace — write**
201
+
202
+ | Tool | What |
203
+ |------|------|
204
+ | `mempalace_add_drawer` | File verbatim content into a wing/room |
205
+ | `mempalace_delete_drawer` | Remove a drawer by ID |
206
+
207
+ **Knowledge Graph**
208
+
209
+ | Tool | What |
210
+ |------|------|
211
+ | `mempalace_kg_query` | Entity relationships with time filtering |
212
+ | `mempalace_kg_add` | Add a fact with optional validity window |
213
+ | `mempalace_kg_invalidate` | Mark a fact as no longer true |
214
+ | `mempalace_kg_timeline` | Chronological story of an entity |
215
+ | `mempalace_kg_stats` | Graph overview — entities, triples, relationship types |
216
+
217
+ **Navigation**
218
+
219
+ | Tool | What |
220
+ |------|------|
221
+ | `mempalace_traverse` | Walk the graph from a room across wings |
222
+ | `mempalace_find_tunnels` | Find rooms bridging two wings |
223
+ | `mempalace_graph_stats` | Graph connectivity overview |
224
+
225
+ **Agent Diary**
226
+
227
+ | Tool | What |
228
+ |------|------|
229
+ | `mempalace_diary_write` | Write a diary entry for an agent |
230
+ | `mempalace_diary_read` | Read recent diary entries for an agent |
231
+
232
+ The AI learns the memory protocol automatically from the `mempalace_status` response on first wake-up. No manual configuration.
233
+
234
+ ---
235
+
236
+ ## Knowledge Graph
237
+
238
+ Temporal entity-relationship triples — local SQLite, no Neo4j, no cloud.
239
+
240
+ ```python
241
+ from mempalace.knowledge_graph import KnowledgeGraph
242
+
243
+ kg = KnowledgeGraph()
244
+ kg.add_triple("Kai", "works_on", "myapp", valid_from="2025-06-01")
245
+ kg.add_triple("myapp", "uses", "Postgres", valid_from="2025-11-03")
246
+ kg.add_triple("myapp", "uses", "Redis", valid_from="2026-01-15")
247
+
248
+ # What does myapp use?
249
+ kg.query_entity("myapp")
250
+ # → [myapp → uses → Postgres (current), myapp → uses → Redis (current)]
251
+
252
+ # What was true in December 2025?
253
+ kg.query_entity("myapp", as_of="2025-12-01")
254
+ # → [myapp → uses → Postgres (active)]
255
+
256
+ # Expire a fact when it changes
257
+ kg.invalidate("myapp", "uses", "Postgres", ended="2026-03-01")
258
+ ```
259
+
260
+ **Good KG candidates:** version numbers, team assignments, tech stack decisions, deployment states, deadlines.
261
+
262
+ ---
263
+
264
+ ## Memory Layers
265
+
266
+ | Layer | What | Size | When loaded |
267
+ |-------|------|------|-------------|
268
+ | **L0** | Identity — project context, AI persona | ~50 tokens | Always |
269
+ | **L1** | Critical facts — team, key decisions | ~120 tokens | Always |
270
+ | **L2** | Room recall — recent sessions, current topic | On demand | When topic comes up |
271
+ | **L3** | Deep search — semantic query across all drawers | On demand | When explicitly asked |
272
+
273
+ ```bash
274
+ mempalace wake-up # emit L0 + L1 context (~170 tokens)
275
+ mempalace wake-up --wing myapp # project-scoped
276
+ ```
277
+
278
+ For local models (Llama, Mistral) that don't speak MCP, pipe `wake-up` output into the system prompt:
279
+
280
+ ```bash
281
+ mempalace wake-up > context.txt
282
+ # Paste context.txt into your local model's system prompt
283
+ ```
284
+
285
+ ---
286
+
287
+ ## Auto-Save Hooks
288
+
289
+ Two Claude Code hooks that save memories automatically:
290
+
291
+ **Stop Hook** — after each response, triggers a structured save of topics, decisions, and code changes.
292
+
293
+ **PreCompact Hook** — fires before context compression. Emergency save before the window shrinks.
294
+
295
+ ```json
296
+ {
297
+ "hooks": {
298
+ "Stop": [{"matcher": "", "hooks": [{"type": "command", "command": "/path/to/mempalace/hooks/mempal_save_hook.sh"}]}],
299
+ "PreCompact": [{"matcher": "", "hooks": [{"type": "command", "command": "/path/to/mempalace/hooks/mempal_precompact_hook.sh"}]}]
300
+ }
301
+ }
302
+ ```
303
+
304
+ ---
305
+
306
+ ## Conversation Mining
307
+
308
+ Mining conversation exports is a secondary capability — useful for importing existing Claude/ChatGPT/Slack history.
309
+
310
+ ```bash
311
+ mempalace mine ~/chats/ --mode convos # Claude/ChatGPT/Slack exports
312
+ mempalace mine ~/chats/ --mode convos --wing myapp # tag to a specific project wing
313
+ ```
314
+
315
+ Five chat export formats are supported (Claude, ChatGPT, Slack, and two others) — `normalize.py` converts them to a standard transcript before chunking.
316
+
317
+ ---
318
+
319
+ ## This Fork vs Upstream
320
+
321
+ This fork exists because the original project shipped claims that
322
+ [didn't hold up to scrutiny](https://github.com/milla-jovovich/mempalace/issues/27).
323
+ We inherited the good parts — the palace metaphor, the MCP integration, the
324
+ LongMemEval harness — and rebuilt the foundation. Every claim in this README is
325
+ backed by code you can read, tests you can run, and benchmarks with documented
326
+ methodology.
327
+
328
+ | What upstream ships | What this fork ships |
329
+ |---|---|
330
+ | ChromaDB backend — [silently deletes palace data on version bump](https://github.com/milla-jovovich/mempalace/issues/469) | LanceDB — crash-safe columnar Arrow storage, no version-cliff risk |
331
+ | "No internet after install" — [false, downloads ONNX model silently](https://github.com/milla-jovovich/mempalace/issues/524) | `mempalace init` downloads the model explicitly during setup; after that, fully offline |
332
+ | "100% R@5 with Haiku rerank" — [unverifiable, retracted by upstream](https://github.com/milla-jovovich/mempalace/issues/27) | Number removed. Raw R@5 kept with methodology caveats |
333
+ | AAAK "lossless compression" — [actually loses 12.4pp retrieval quality](https://github.com/milla-jovovich/mempalace/issues/27) | AAAK labeled as experimental lossy format, not storage default |
334
+ | ~30% test coverage at launch | 419 tests, every feature acceptance-gated |
335
+ | No backup/export, no recovery path | `mempalace export --only-manual` + `mempalace import` |
336
+ | No incremental re-mining | Content-hash incremental: only changed files re-chunked |
337
+ | No code-search tool | `mempalace_code_search` — filter by language, symbol, file glob |
338
+
339
+ For the complete audit trail of what the fork inherits, negates, or leaves
340
+ out-of-scope, see [`docs/UPSTREAM_HARDENING.md`](docs/UPSTREAM_HARDENING.md).
341
+
342
+ ---
343
+
344
+ ## Installation
345
+
346
+ ```bash
347
+ pip install mempalace-code
348
+ # or with uv
349
+ uv pip install mempalace-code
350
+ ```
351
+
352
+ **Bootstrap script** (recommended for servers and CI — creates an isolated venv, upgrades pip, avoids system-level conflicts):
353
+
354
+ ```bash
355
+ # From PyPI (default)
356
+ curl -fsSL https://raw.githubusercontent.com/rergards/mempalace-code/main/scripts/bootstrap.sh | bash
357
+
358
+ # From git (if not yet on PyPI)
359
+ curl -fsSL https://raw.githubusercontent.com/rergards/mempalace-code/main/scripts/bootstrap.sh | MEMPALACE_SOURCE=git bash
360
+
361
+ # Custom venv location
362
+ MEMPALACE_VENV=/opt/mempalace/venv bash scripts/bootstrap.sh
363
+ ```
364
+
365
+ The script installs into `~/.mempalace/venv` and symlinks the binary to `~/.local/bin/mempalace`.
366
+
367
+ **Core dependencies** (installed automatically):
368
+
369
+ ```
370
+ lancedb>=0.17
371
+ sentence-transformers>=2.2
372
+ pyyaml>=6.0
373
+ ```
374
+
375
+ **Optional extras:**
376
+
377
+ ```bash
378
+ pip install "mempalace-code[chroma]" # ChromaDB legacy backend (deprecated)
379
+ pip install "mempalace-code[spellcheck]" # autocorrect for room/wing names
380
+ pip install "mempalace-code[dev]" # pytest + ruff (development)
381
+ ```
382
+
383
+ **Requirements:** Python 3.9+. `mempalace init` downloads the embedding model (~80 MB) once during setup as part of the project install. After that, mining, searching, and the knowledge graph run entirely offline — no API keys, no cloud calls, no network access needed.
384
+
385
+ > **Note:** Ubuntu 22.04 and similar distros ship pip 22.x, which cannot build hatchling metadata. The bootstrap script handles this automatically. If installing manually, run `python3 -m pip install --upgrade pip` first.
386
+
387
+ ---
388
+
389
+ ## All Commands
390
+
391
+ ```bash
392
+ # Setup
393
+ mempalace init <dir> # initialize palace + mine the directory
394
+
395
+ # Mining
396
+ mempalace mine <dir> # mine code project (Python, TS/JS, Go, Markdown)
397
+ mempalace mine <dir> --wing myapp # tag with a wing name
398
+ mempalace mine <dir> --mode convos # mine conversation exports
399
+ mempalace mine <dir> --mode convos --wing myapp # conversation exports, tagged
400
+
401
+ # Search
402
+ mempalace search "query" # search everything
403
+ mempalace search "query" --wing myapp # within a wing
404
+ mempalace search "query" --room auth # within a room
405
+
406
+ # Memory stack
407
+ mempalace wake-up # emit L0 + L1 context
408
+ mempalace wake-up --wing myapp # project-scoped
409
+
410
+ # Status
411
+ mempalace status # palace overview
412
+ ```
413
+
414
+ All commands accept `--palace <path>` to override the default location (`~/.mempalace/palace`).
415
+
416
+ ---
417
+
418
+ ## Project Structure
419
+
420
+ ```
421
+ mempalace/
422
+ ├── README.md
423
+ ├── mempalace/
424
+ │ ├── cli.py ← CLI entry point
425
+ │ ├── mcp_server.py ← MCP server (19 tools)
426
+ │ ├── storage.py ← LanceDB vector storage
427
+ │ ├── miner.py ← code project ingest (language-aware chunking)
428
+ │ ├── convo_miner.py ← conversation ingest
429
+ │ ├── searcher.py ← semantic search
430
+ │ ├── knowledge_graph.py ← temporal entity graph (SQLite)
431
+ │ ├── palace_graph.py ← room navigation graph
432
+ │ ├── layers.py ← 4-layer memory stack
433
+ │ └── ...
434
+ ├── benchmarks/ ← reproducible benchmark runners
435
+ │ ├── BENCHMARKS.md ← full results and methodology
436
+ │ └── ...
437
+ ├── hooks/ ← Claude Code auto-save hooks
438
+ ├── examples/ ← usage examples and MCP setup guide
439
+ └── tests/
440
+ ```
441
+
442
+ ---
443
+
444
+ ## Benchmarks
445
+
446
+ Upstream benchmark results (ChromaDB, conversation workloads — see [benchmarks/BENCHMARKS.md](benchmarks/BENCHMARKS.md)):
447
+
448
+ | Benchmark | Mode | Score |
449
+ |-----------|------|-------|
450
+ | LongMemEval R@5 | Raw verbatim (ChromaDB) | 96.6%[^1] |
451
+
452
+ [^1]: Upstream-reported result. The methodology is contested: with a corpus ≤ 50 documents, `n_results=min(n_results, len(corpus))` causes R@k evaluation to degenerate into ranking over a fully-retrieved set, making the score a near-ceiling artefact rather than a retrieval difficulty measurement (upstream issues #27, #524).
453
+
454
+ These numbers apply to the conversation retrieval use case, not code-mining. Code-mining benchmarks are tracked in the backlog (BENCH-EMBED-AB).
455
+
456
+ See also: [docs/UPSTREAM_HARDENING.md](docs/UPSTREAM_HARDENING.md) for a full audit of upstream benchmark claims.
457
+
458
+ ---
459
+
460
+ ## AAAK Dialect (experimental, disabled by default)
461
+
462
+ AAAK is an inherited **lossy** compressed memory format from upstream. Independent measurement shows a retrieval regression from 96.6% to 84.2% R@5 on LongMemEval (upstream issue #27). It is not exposed in the default MCP tool set and not used for storage. The code remains in the codebase for future experimentation.
463
+
464
+ ---
465
+
466
+ ## Contributing
467
+
468
+ PRs welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for setup and guidelines.
469
+
470
+ ### Test Coverage
471
+
472
+ 419 tests across 15 test files. Every feature is acceptance-gated — no code
473
+ merges to main without passing tests. Run the full suite:
474
+
475
+ ```bash
476
+ python -m pytest tests/ -x -q # ~8 minutes, all local, no network needed
477
+ ```
478
+
479
+ ## License
480
+
481
+ Apache 2.0 — see [LICENSE](LICENSE) and [NOTICE](NOTICE).
482
+
483
+ <!-- Link Definitions -->
484
+ [version-shield]: https://img.shields.io/badge/version-1.0.0-4dc9f6?style=flat-square&labelColor=0a0e14
485
+ [release-link]: https://github.com/rergards/mempalace-code/releases
486
+ [python-shield]: https://img.shields.io/badge/python-3.9+-7dd8f8?style=flat-square&labelColor=0a0e14&logo=python&logoColor=7dd8f8
487
+ [python-link]: https://www.python.org/
488
+ [license-shield]: https://img.shields.io/badge/license-Apache_2.0-b0e8ff?style=flat-square&labelColor=0a0e14
489
+ [license-link]: https://github.com/rergards/mempalace-code/blob/main/LICENSE
@@ -0,0 +1,32 @@
1
+ mempalace/README.md,sha256=pSkkQjql8UYnHWN4Ij7hS1A3kPcg57ISNR9G28N3IlI,2515
2
+ mempalace/__init__.py,sha256=SUiqJjqDi2aPxrGh-qDE9pUb-rJ3B09VFZpU0GJewC4,155
3
+ mempalace/__main__.py,sha256=gVn90mcZ2CO2WJkSpSikeknO04nbrQHfe3__49KrZA4,75
4
+ mempalace/cli.py,sha256=3LZ3_Qrqq8y9SAzavj9kRWdCpyt_qqXjN6UKHONsi1w,27681
5
+ mempalace/config.py,sha256=DwD3oRIhTuW9F7nlirZrVW6fCwx4vnWMz1NDH53jijw,4443
6
+ mempalace/convo_miner.py,sha256=FiUeNYc_6F8WEt2hNstMN2Uo347I_-V_zP56-s1j_f0,12400
7
+ mempalace/dialect.py,sha256=EdZi_EgY0J9aKL2oF3mXWHx4l5dHokgZTji59qNofCw,33822
8
+ mempalace/entity_detector.py,sha256=Y09Bt0qAGGqmcxfCO89sJhFjsy4CM6Q_v1Rg4wrrVbI,21874
9
+ mempalace/entity_registry.py,sha256=NNtI5aKYukCczvf6NXW5oxlUHTua46tFGltpVdoGHfg,23064
10
+ mempalace/export.py,sha256=dPMcnBSRS27b3Qq67VvytwVn9YjndaNY_bKAq1inUrw,12605
11
+ mempalace/general_extractor.py,sha256=MyapdQut1X7pDDTVXaki6UK3i8kW3QVS0pqUcnubj1I,14067
12
+ mempalace/knowledge_graph.py,sha256=WN1F9bpFW_Xja31PbqfGAf_LtaQ9anqJgOZKm5AGrVo,15725
13
+ mempalace/layers.py,sha256=-agohHyHa03xP-UQU0coompLlVvQDJGdgqHul8-jlDg,17021
14
+ mempalace/mcp_server.py,sha256=fHRHgOherVO1G6rbv8hQnXYMxrBOHL-DhZ3hE9nFGy4,32151
15
+ mempalace/migrate.py,sha256=azgOulPlW9qsfYxYhAxk7ea5CFCRwhaXMbZl8MAeVnw,5651
16
+ mempalace/miner.py,sha256=egVfYKOPVXiUoz1NlAGM9MbEwP4Z1mXWe5ROBQaGYrY,42653
17
+ mempalace/normalize.py,sha256=t_q6yXd_UyKtyyU5BSl-FEKQvES5gHKSTEJMTSagBqs,10892
18
+ mempalace/onboarding.py,sha256=8lBa-opgR9RAyvlDrOEA-vK59wAMS5swjMd3cr8dxmA,18707
19
+ mempalace/palace_graph.py,sha256=-n1Am30R2jZnyBkfKNazaWfy1phWcH1hubqzS_1BRSE,7122
20
+ mempalace/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
+ mempalace/room_detector_local.py,sha256=wsxWotHUapAlHKNRIwQXtggvps3hMfd6rzMk4ogVSU8,9911
22
+ mempalace/searcher.py,sha256=hvjaETpZCkXhPmWukLwdPxfvAkZKyogROs_Y2Brw-3E,8448
23
+ mempalace/spellcheck.py,sha256=h3czTw43kOgyIPo8uwoIalAiVZ2w9XSzjP8Ve3Rf3x0,10381
24
+ mempalace/split_mega_files.py,sha256=76d1qKdCcFrkALtkaKQlw-iPAbOf-HU8Gsb6nnaPmEQ,10251
25
+ mempalace/storage.py,sha256=EZYafBkkBuc2YhoXlRouEcfjh9hAKZrMdFJu5LXAy74,30517
26
+ mempalace/version.py,sha256=5lT0KpvNkZLIBL-Fie8tUlBNNAhj9DWm8eTA7YZbSEY,87
27
+ mempalace_code-1.0.0.dist-info/METADATA,sha256=bOR7gVte_i7rTXXG5SAfLcbc7xrLQgx04l7Uqcwdlnc,21022
28
+ mempalace_code-1.0.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
29
+ mempalace_code-1.0.0.dist-info/entry_points.txt,sha256=YNE-nx-kbSg2fSjIsxcSfEY2PrH7LigS2EjmzC1tR3Q,45
30
+ mempalace_code-1.0.0.dist-info/licenses/LICENSE,sha256=mlsDCGrl5JAf_cqWWAQ8bgfd5cmw67ODru5ItvUW1bg,10824
31
+ mempalace_code-1.0.0.dist-info/licenses/NOTICE,sha256=kpuHgB5XfF3XaXf0vqhq_Gfx1e6GkAUKuhQ2I6gbKrc,731
32
+ mempalace_code-1.0.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.29.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ mempalace = mempalace:main