memem 2.9.5__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 (167) hide show
  1. memem-2.9.5/.agents/plugins/marketplace.json +20 -0
  2. memem-2.9.5/.claude-plugin/marketplace.json +35 -0
  3. memem-2.9.5/.claude-plugin/plugin.json +31 -0
  4. memem-2.9.5/.codex-plugin/.mcp.json +11 -0
  5. memem-2.9.5/.codex-plugin/marketplace.json +35 -0
  6. memem-2.9.5/.codex-plugin/plugin.json +43 -0
  7. memem-2.9.5/.dockerignore +31 -0
  8. memem-2.9.5/.github/workflows/ci.yml +66 -0
  9. memem-2.9.5/.github/workflows/publish.yml +36 -0
  10. memem-2.9.5/.gitignore +13 -0
  11. memem-2.9.5/.pre-commit-config.yaml +17 -0
  12. memem-2.9.5/CHANGELOG.md +2529 -0
  13. memem-2.9.5/CLAUDE.md +197 -0
  14. memem-2.9.5/CONTRIBUTING.md +82 -0
  15. memem-2.9.5/Dockerfile +43 -0
  16. memem-2.9.5/LICENSE +21 -0
  17. memem-2.9.5/PKG-INFO +582 -0
  18. memem-2.9.5/README.md +544 -0
  19. memem-2.9.5/SECURITY.md +57 -0
  20. memem-2.9.5/bootstrap.sh +307 -0
  21. memem-2.9.5/docs/ab-report-v2.6.0.md +118 -0
  22. memem-2.9.5/docs/awesome-list-submissions.md +97 -0
  23. memem-2.9.5/docs/improvement-plan-2026-06.md +373 -0
  24. memem-2.9.5/glama.json +4 -0
  25. memem-2.9.5/hooks/auto-recall.sh +119 -0
  26. memem-2.9.5/hooks/codex-hooks.json +27 -0
  27. memem-2.9.5/hooks/hooks.json +49 -0
  28. memem-2.9.5/hooks/post-stop-attribution.sh +18 -0
  29. memem-2.9.5/hooks/pre-tool-use.sh +78 -0
  30. memem-2.9.5/hooks/session-start.sh +184 -0
  31. memem-2.9.5/hooks/stop-mine.sh +76 -0
  32. memem-2.9.5/llms.txt +92 -0
  33. memem-2.9.5/memem/__init__.py +3 -0
  34. memem-2.9.5/memem/assembly.py +104 -0
  35. memem-2.9.5/memem/capabilities.py +153 -0
  36. memem-2.9.5/memem/cli.py +1166 -0
  37. memem-2.9.5/memem/cross_encoder_rerank.py +159 -0
  38. memem-2.9.5/memem/cross_vault.py +253 -0
  39. memem-2.9.5/memem/decay.py +141 -0
  40. memem-2.9.5/memem/dreamer.py +1439 -0
  41. memem-2.9.5/memem/embedding_index.py +411 -0
  42. memem-2.9.5/memem/eval/__init__.py +4 -0
  43. memem-2.9.5/memem/eval/canaries.py +217 -0
  44. memem-2.9.5/memem/eval/eval_set.py +211 -0
  45. memem-2.9.5/memem/eval/legacy_scorecard.py +166 -0
  46. memem-2.9.5/memem/eval_capture.py +203 -0
  47. memem-2.9.5/memem/eval_replay.py +341 -0
  48. memem-2.9.5/memem/feedback.py +174 -0
  49. memem-2.9.5/memem/graph_index.py +725 -0
  50. memem-2.9.5/memem/haiku_prompts.py +132 -0
  51. memem-2.9.5/memem/io_utils.py +103 -0
  52. memem-2.9.5/memem/lessons.py +179 -0
  53. memem-2.9.5/memem/migrate_layers.py +597 -0
  54. memem-2.9.5/memem/mine-cron.sh +14 -0
  55. memem-2.9.5/memem/mine_delta.py +1636 -0
  56. memem-2.9.5/memem/mining.py +316 -0
  57. memem-2.9.5/memem/models.py +188 -0
  58. memem-2.9.5/memem/obsidian_store.py +1636 -0
  59. memem-2.9.5/memem/operations.py +198 -0
  60. memem-2.9.5/memem/playbook.py +191 -0
  61. memem-2.9.5/memem/profiles.py +440 -0
  62. memem-2.9.5/memem/quarantine.py +64 -0
  63. memem-2.9.5/memem/recall.py +668 -0
  64. memem-2.9.5/memem/recall_log.py +230 -0
  65. memem-2.9.5/memem/render.py +73 -0
  66. memem-2.9.5/memem/retrieve.py +976 -0
  67. memem-2.9.5/memem/search_index.py +249 -0
  68. memem-2.9.5/memem/security.py +49 -0
  69. memem-2.9.5/memem/server.py +315 -0
  70. memem-2.9.5/memem/session_blocks.py +331 -0
  71. memem-2.9.5/memem/session_state.py +421 -0
  72. memem-2.9.5/memem/session_state_db.py +366 -0
  73. memem-2.9.5/memem/settings.py +32 -0
  74. memem-2.9.5/memem/status.py +221 -0
  75. memem-2.9.5/memem/telemetry.py +208 -0
  76. memem-2.9.5/memem/transcripts.py +756 -0
  77. memem-2.9.5/pyproject.toml +106 -0
  78. memem-2.9.5/scripts/ab_compare_engines.py +423 -0
  79. memem-2.9.5/scripts/migrate_bitemporal.py +107 -0
  80. memem-2.9.5/scripts/run_dreamer.sh +14 -0
  81. memem-2.9.5/scripts/run_eval.py +120 -0
  82. memem-2.9.5/skills/memem/SKILL.md +117 -0
  83. memem-2.9.5/skills/memem-doctor/SKILL.md +21 -0
  84. memem-2.9.5/skills/memem-mine/SKILL.md +21 -0
  85. memem-2.9.5/skills/memem-mine-history/SKILL.md +31 -0
  86. memem-2.9.5/skills/memem-status/SKILL.md +9 -0
  87. memem-2.9.5/skills/memem-welcome/SKILL.md +69 -0
  88. memem-2.9.5/tests/__init__.py +0 -0
  89. memem-2.9.5/tests/benchmark_18q.py +131 -0
  90. memem-2.9.5/tests/benchmark_recall.py +64 -0
  91. memem-2.9.5/tests/benchmark_v2_run.py +113 -0
  92. memem-2.9.5/tests/benchmark_v3_run.py +73 -0
  93. memem-2.9.5/tests/conftest.py +80 -0
  94. memem-2.9.5/tests/fixtures/real_session_sample.jsonl +35 -0
  95. memem-2.9.5/tests/fixtures/reconcile_integration_synthetic.jsonl +10 -0
  96. memem-2.9.5/tests/test_b4_b22_embedding_freshness.py +306 -0
  97. memem-2.9.5/tests/test_bitemporal.py +168 -0
  98. memem-2.9.5/tests/test_bootstrap.py +164 -0
  99. memem-2.9.5/tests/test_canaries.py +229 -0
  100. memem-2.9.5/tests/test_citation_attribution.py +590 -0
  101. memem-2.9.5/tests/test_cli.py +93 -0
  102. memem-2.9.5/tests/test_consolidation.py +565 -0
  103. memem-2.9.5/tests/test_cross_encoder_rerank.py +198 -0
  104. memem-2.9.5/tests/test_decay.py +566 -0
  105. memem-2.9.5/tests/test_default_mode.py +42 -0
  106. memem-2.9.5/tests/test_dreamer.py +824 -0
  107. memem-2.9.5/tests/test_dreamer_extended.py +730 -0
  108. memem-2.9.5/tests/test_episode_emission.py +836 -0
  109. memem-2.9.5/tests/test_eval.py +133 -0
  110. memem-2.9.5/tests/test_eval_replay.py +478 -0
  111. memem-2.9.5/tests/test_feedback.py +238 -0
  112. memem-2.9.5/tests/test_frontmatter_strict.py +103 -0
  113. memem-2.9.5/tests/test_graph_index.py +157 -0
  114. memem-2.9.5/tests/test_integration.py +111 -0
  115. memem-2.9.5/tests/test_io_utils.py +107 -0
  116. memem-2.9.5/tests/test_layered_save.py +150 -0
  117. memem-2.9.5/tests/test_lessons.py +220 -0
  118. memem-2.9.5/tests/test_m7_fixes.py +347 -0
  119. memem-2.9.5/tests/test_memory_save_merge.py +277 -0
  120. memem-2.9.5/tests/test_migrate_layers.py +674 -0
  121. memem-2.9.5/tests/test_mine_delta.py +436 -0
  122. memem-2.9.5/tests/test_mining.py +201 -0
  123. memem-2.9.5/tests/test_models.py +90 -0
  124. memem-2.9.5/tests/test_ngram_rapidfuzz.py +119 -0
  125. memem-2.9.5/tests/test_no_dead_fields.py +127 -0
  126. memem-2.9.5/tests/test_obsidian_store.py +623 -0
  127. memem-2.9.5/tests/test_obsidian_store_frontmatter.py +342 -0
  128. memem-2.9.5/tests/test_operations.py +204 -0
  129. memem-2.9.5/tests/test_packaging.py +196 -0
  130. memem-2.9.5/tests/test_path_extraction.py +288 -0
  131. memem-2.9.5/tests/test_playbook.py +91 -0
  132. memem-2.9.5/tests/test_procedural.py +294 -0
  133. memem-2.9.5/tests/test_profiles.py +472 -0
  134. memem-2.9.5/tests/test_purge_contaminated.py +353 -0
  135. memem-2.9.5/tests/test_recall_log.py +197 -0
  136. memem-2.9.5/tests/test_recall_slice_format.py +171 -0
  137. memem-2.9.5/tests/test_recent_paths.py +349 -0
  138. memem-2.9.5/tests/test_reconcile.py +905 -0
  139. memem-2.9.5/tests/test_reconcile_integration.py +625 -0
  140. memem-2.9.5/tests/test_reconcile_profile.py +678 -0
  141. memem-2.9.5/tests/test_retrieve_signals.py +1066 -0
  142. memem-2.9.5/tests/test_retrieve_temporal.py +1412 -0
  143. memem-2.9.5/tests/test_retrieve_unified.py +648 -0
  144. memem-2.9.5/tests/test_run_dreamer_wrapper.py +35 -0
  145. memem-2.9.5/tests/test_search_index.py +248 -0
  146. memem-2.9.5/tests/test_security.py +41 -0
  147. memem-2.9.5/tests/test_selective_recall.py +54 -0
  148. memem-2.9.5/tests/test_session_start_budgets.py +414 -0
  149. memem-2.9.5/tests/test_session_start_rules.py +334 -0
  150. memem-2.9.5/tests/test_session_state_corruption.py +112 -0
  151. memem-2.9.5/tests/test_session_state_db.py +271 -0
  152. memem-2.9.5/tests/test_stale_sweep.py +358 -0
  153. memem-2.9.5/tests/test_status_output.py +63 -0
  154. memem-2.9.5/tests/test_stop_hook_integration.py +132 -0
  155. memem-2.9.5/tests/test_stop_mine_hook.sh +187 -0
  156. memem-2.9.5/tests/test_subprocess_recursion_guard.py +212 -0
  157. memem-2.9.5/tests/test_telemetry.py +90 -0
  158. memem-2.9.5/tests/test_tool_descriptions.py +58 -0
  159. memem-2.9.5/tests/test_tool_digest.py +740 -0
  160. memem-2.9.5/tests/test_transcripts.py +554 -0
  161. memem-2.9.5/tests/test_v010.py +364 -0
  162. memem-2.9.5/tests/test_v010_fixes.py +644 -0
  163. memem-2.9.5/tests/test_v011.py +169 -0
  164. memem-2.9.5/tests/test_vault_registry.py +129 -0
  165. memem-2.9.5/tests/test_visible_recall.py +128 -0
  166. memem-2.9.5/tests/test_wal_pragmas.py +77 -0
  167. memem-2.9.5/uv.lock +2398 -0
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "memem-marketplace",
3
+ "interface": {
4
+ "displayName": "Memem Marketplace"
5
+ },
6
+ "plugins": [
7
+ {
8
+ "name": "memem",
9
+ "source": {
10
+ "source": "local",
11
+ "path": "./plugins/memem"
12
+ },
13
+ "policy": {
14
+ "installation": "AVAILABLE",
15
+ "authentication": "ON_INSTALL"
16
+ },
17
+ "category": "Productivity"
18
+ }
19
+ ]
20
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "memem-marketplace",
3
+ "owner": {
4
+ "name": "TT-Wang",
5
+ "url": "https://github.com/TT-Wang"
6
+ },
7
+ "metadata": {
8
+ "description": "memem persistent memory plugin for Claude Code",
9
+ "version": "1.0.0"
10
+ },
11
+ "plugins": [
12
+ {
13
+ "name": "memem",
14
+ "source": "./",
15
+ "description": "Persistent, self-evolving memory for Claude Code. Local-first, no cloud, browsable Obsidian vault.",
16
+ "version": "2.9.5",
17
+ "author": {
18
+ "name": "TT-Wang"
19
+ },
20
+ "homepage": "https://github.com/TT-Wang/memem",
21
+ "repository": "https://github.com/TT-Wang/memem",
22
+ "license": "MIT",
23
+ "keywords": [
24
+ "memory",
25
+ "context",
26
+ "knowledge",
27
+ "recall",
28
+ "learning",
29
+ "persistent-memory",
30
+ "obsidian"
31
+ ],
32
+ "category": "productivity"
33
+ }
34
+ ]
35
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "memem",
3
+ "version": "2.9.5",
4
+ "description": "Persistent, self-evolving memory for Claude Code. Local-first, no cloud, browsable Obsidian vault.",
5
+ "author": {
6
+ "name": "TT-Wang",
7
+ "url": "https://github.com/TT-Wang"
8
+ },
9
+ "repository": "https://github.com/TT-Wang/memem",
10
+ "license": "MIT",
11
+ "keywords": [
12
+ "memory",
13
+ "context",
14
+ "knowledge",
15
+ "recall",
16
+ "learning",
17
+ "persistent-memory",
18
+ "obsidian"
19
+ ],
20
+ "mcpServers": {
21
+ "memem": {
22
+ "command": "bash",
23
+ "args": [
24
+ "${CLAUDE_PLUGIN_ROOT}/bootstrap.sh"
25
+ ],
26
+ "env": {
27
+ "CLAUDE_PLUGIN_ROOT": "${CLAUDE_PLUGIN_ROOT}"
28
+ }
29
+ }
30
+ }
31
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "mcpServers": {
3
+ "memem": {
4
+ "command": "bash",
5
+ "args": ["${CLAUDE_PLUGIN_ROOT}/bootstrap.sh"],
6
+ "env": {
7
+ "CLAUDE_PLUGIN_ROOT": "${CLAUDE_PLUGIN_ROOT}"
8
+ }
9
+ }
10
+ }
11
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "memem-marketplace",
3
+ "owner": {
4
+ "name": "TT-Wang",
5
+ "url": "https://github.com/TT-Wang"
6
+ },
7
+ "metadata": {
8
+ "description": "memem persistent memory plugin for Codex",
9
+ "version": "1.0.0"
10
+ },
11
+ "plugins": [
12
+ {
13
+ "name": "memem",
14
+ "source": "./",
15
+ "description": "Persistent, self-evolving memory for Claude Code. Local-first, no cloud, browsable Obsidian vault.",
16
+ "version": "0.11.2",
17
+ "author": {
18
+ "name": "TT-Wang"
19
+ },
20
+ "homepage": "https://github.com/TT-Wang/memem",
21
+ "repository": "https://github.com/TT-Wang/memem",
22
+ "license": "MIT",
23
+ "keywords": [
24
+ "memory",
25
+ "context",
26
+ "knowledge",
27
+ "recall",
28
+ "learning",
29
+ "persistent-memory",
30
+ "obsidian"
31
+ ],
32
+ "category": "productivity"
33
+ }
34
+ ]
35
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "memem",
3
+ "version": "0.11.2",
4
+ "description": "Persistent, self-evolving memory for Claude Code. Local-first, no cloud, browsable Obsidian vault.",
5
+ "author": {
6
+ "name": "TT-Wang",
7
+ "url": "https://github.com/TT-Wang"
8
+ },
9
+ "homepage": "https://github.com/TT-Wang/memem",
10
+ "repository": "https://github.com/TT-Wang/memem",
11
+ "license": "MIT",
12
+ "keywords": [
13
+ "memory",
14
+ "context",
15
+ "knowledge",
16
+ "recall",
17
+ "learning",
18
+ "persistent-memory",
19
+ "obsidian"
20
+ ],
21
+ "skills": "./skills/",
22
+ "hooks": "./hooks/codex-hooks.json",
23
+ "mcpServers": "./.mcp.json",
24
+ "interface": {
25
+ "displayName": "Memem",
26
+ "shortDescription": "Persistent, self-evolving memory for Claude Code",
27
+ "longDescription": "Memem gives Claude Code durable local memory across sessions, backed by an Obsidian vault and fast recall indexes.",
28
+ "developerName": "TT-Wang",
29
+ "category": "Productivity",
30
+ "capabilities": [
31
+ "Read",
32
+ "Write",
33
+ "Interactive"
34
+ ],
35
+ "websiteURL": "https://github.com/TT-Wang/memem",
36
+ "privacyPolicyURL": "https://github.com/TT-Wang/memem",
37
+ "termsOfServiceURL": "https://github.com/TT-Wang/memem",
38
+ "defaultPrompt": [
39
+ "Use memem to recall relevant project memory before answering."
40
+ ],
41
+ "screenshots": []
42
+ }
43
+ }
@@ -0,0 +1,31 @@
1
+ # Exclude everything not needed to build the MCP server image.
2
+ # Glama only needs the Python package + deps to validate introspection.
3
+
4
+ .git
5
+ .github
6
+ .venv
7
+ .claude
8
+ .forge
9
+ .pytest_cache
10
+ __pycache__
11
+ *.pyc
12
+ *.pyo
13
+
14
+ # Dev-only assets
15
+ tests
16
+ docs
17
+ skills
18
+ hooks
19
+ bootstrap.sh
20
+ memem/miner-wrapper.sh
21
+ memem/mine-cron.sh
22
+
23
+ # Build artifacts
24
+ dist
25
+ build
26
+ *.egg-info
27
+
28
+ # Local state (should never be in the repo but defensive)
29
+ ~/.memem
30
+ ~/.cortex
31
+ obsidian-brain
@@ -0,0 +1,66 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+ pull_request:
7
+ branches: [master]
8
+
9
+ jobs:
10
+ lint:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v6
14
+ - uses: actions/setup-python@v6
15
+ with:
16
+ python-version: "3.11"
17
+ - name: Install dev deps
18
+ run: |
19
+ python -m pip install --upgrade pip
20
+ pip install -e ".[dev]"
21
+ - name: Ruff
22
+ run: ruff check .
23
+ - name: Mypy
24
+ run: mypy memem
25
+
26
+ test:
27
+ runs-on: ubuntu-latest
28
+ steps:
29
+ - uses: actions/checkout@v6
30
+ - uses: actions/setup-python@v6
31
+ with:
32
+ python-version: "3.11"
33
+ - name: Install deps
34
+ run: |
35
+ python -m pip install --upgrade pip
36
+ pip install -e ".[dev]"
37
+ - name: Pytest
38
+ run: pytest -v
39
+
40
+ build:
41
+ runs-on: ubuntu-latest
42
+ steps:
43
+ - uses: actions/checkout@v6
44
+ - uses: actions/setup-python@v6
45
+ with:
46
+ python-version: "3.11"
47
+ - name: Install build tooling
48
+ run: |
49
+ python -m pip install --upgrade pip
50
+ pip install build
51
+ - name: Build wheel + sdist
52
+ run: python -m build
53
+ - name: Install wheel in a clean venv
54
+ run: |
55
+ python -m venv /tmp/wheel-venv
56
+ /tmp/wheel-venv/bin/pip install --upgrade pip
57
+ /tmp/wheel-venv/bin/pip install dist/*.whl
58
+ - name: Smoke-test the installed wheel
59
+ run: |
60
+ /tmp/wheel-venv/bin/python -m memem.server --rebuild-index
61
+ /tmp/wheel-venv/bin/python -c "import memem; print(memem.__version__)"
62
+ - name: Upload dist
63
+ uses: actions/upload-artifact@v7
64
+ with:
65
+ name: dist
66
+ path: dist/
@@ -0,0 +1,36 @@
1
+ name: publish
2
+
3
+ # Publish to PyPI via trusted publishing (OIDC — no tokens).
4
+ # Triggers: a published GitHub release, or a manual dispatch from the Actions tab.
5
+ on:
6
+ release:
7
+ types: [published]
8
+ workflow_dispatch:
9
+
10
+ jobs:
11
+ build:
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+ - uses: actions/setup-python@v5
16
+ with:
17
+ python-version: "3.12"
18
+ - run: python -m pip install build
19
+ - run: python -m build
20
+ - uses: actions/upload-artifact@v4
21
+ with:
22
+ name: dist
23
+ path: dist/
24
+
25
+ publish:
26
+ needs: build
27
+ runs-on: ubuntu-latest
28
+ environment: pypi
29
+ permissions:
30
+ id-token: write # OIDC token for PyPI trusted publishing
31
+ steps:
32
+ - uses: actions/download-artifact@v4
33
+ with:
34
+ name: dist
35
+ path: dist/
36
+ - uses: pypa/gh-action-pypi-publish@release/v1
memem-2.9.5/.gitignore ADDED
@@ -0,0 +1,13 @@
1
+ __pycache__/
2
+ *.pyc
3
+ .env
4
+ .claude/settings.json
5
+ .claude/settings.local.json
6
+ .forge/
7
+ # Plugin-local venv created by bootstrap.sh on first run
8
+ .venv/
9
+ # Build artifacts
10
+ dist/
11
+ build/
12
+ *.egg-info/
13
+ .claude/
@@ -0,0 +1,17 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ rev: v0.6.9
4
+ hooks:
5
+ - id: ruff
6
+ args: [--fix]
7
+ - id: ruff-format
8
+
9
+ - repo: https://github.com/pre-commit/pre-commit-hooks
10
+ rev: v4.6.0
11
+ hooks:
12
+ - id: trailing-whitespace
13
+ - id: end-of-file-fixer
14
+ - id: check-yaml
15
+ - id: check-toml
16
+ - id: check-added-large-files
17
+ args: [--maxkb=500]