lorekeep 0.8.0__tar.gz → 0.8.2__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 (138) hide show
  1. lorekeep-0.8.2/.github/workflows/auto-merge-release-please.yml +27 -0
  2. {lorekeep-0.8.0 → lorekeep-0.8.2}/.github/workflows/release-please.yml +40 -1
  3. lorekeep-0.8.2/.release-please-manifest.json +3 -0
  4. {lorekeep-0.8.0 → lorekeep-0.8.2}/CHANGELOG.md +14 -0
  5. {lorekeep-0.8.0 → lorekeep-0.8.2}/PKG-INFO +8 -15
  6. {lorekeep-0.8.0 → lorekeep-0.8.2}/README.md +7 -14
  7. {lorekeep-0.8.0 → lorekeep-0.8.2}/pyproject.toml +1 -1
  8. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/__init__.py +1 -1
  9. {lorekeep-0.8.0 → lorekeep-0.8.2}/uv.lock +1 -1
  10. lorekeep-0.8.0/.github/workflows/auto-merge-release-please.yml +0 -47
  11. lorekeep-0.8.0/.release-please-manifest.json +0 -3
  12. {lorekeep-0.8.0 → lorekeep-0.8.2}/.commitlintrc.json +0 -0
  13. {lorekeep-0.8.0 → lorekeep-0.8.2}/.github/workflows/ci.yml +0 -0
  14. {lorekeep-0.8.0 → lorekeep-0.8.2}/.github/workflows/lint-commits.yml +0 -0
  15. {lorekeep-0.8.0 → lorekeep-0.8.2}/.gitignore +0 -0
  16. {lorekeep-0.8.0 → lorekeep-0.8.2}/.lorekeep/config.yaml.example +0 -0
  17. {lorekeep-0.8.0 → lorekeep-0.8.2}/.lorekeep/schema.json +0 -0
  18. {lorekeep-0.8.0 → lorekeep-0.8.2}/.pre-commit-config.yaml +0 -0
  19. {lorekeep-0.8.0 → lorekeep-0.8.2}/AGENTS.md +0 -0
  20. {lorekeep-0.8.0 → lorekeep-0.8.2}/CLAUDE.md +0 -0
  21. {lorekeep-0.8.0 → lorekeep-0.8.2}/LICENSE +0 -0
  22. {lorekeep-0.8.0 → lorekeep-0.8.2}/SECURITY.md +0 -0
  23. {lorekeep-0.8.0 → lorekeep-0.8.2}/cover.jpeg +0 -0
  24. {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/README.md +0 -0
  25. {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/architecture/agent.md +0 -0
  26. {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/architecture/data-model.md +0 -0
  27. {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/architecture/evaluation.md +0 -0
  28. {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/architecture/journal.md +0 -0
  29. {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/architecture/overview.md +0 -0
  30. {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/architecture/permission.md +0 -0
  31. {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/architecture/pipeline.md +0 -0
  32. {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/architecture/serve-mcp.md +0 -0
  33. {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/architecture/temporal.md +0 -0
  34. {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/guides/backup.md +0 -0
  35. {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/guides/compile.md +0 -0
  36. {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/guides/data-home.md +0 -0
  37. {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/guides/getting-started.md +0 -0
  38. {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/guides/import.md +0 -0
  39. {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/guides/serve.md +0 -0
  40. {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/guides/wiki.md +0 -0
  41. {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/superpowers/plans/2026-06-26-lorekeep-dotdir-backup.md +0 -0
  42. {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/superpowers/specs/2026-06-26-lorekeep-dotdir-layout-design.md +0 -0
  43. {lorekeep-0.8.0 → lorekeep-0.8.2}/release-please-config.json +0 -0
  44. {lorekeep-0.8.0 → lorekeep-0.8.2}/scripts/check-conventional-commit.py +0 -0
  45. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/agent.py +0 -0
  46. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/backup.py +0 -0
  47. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/cli.py +0 -0
  48. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/compile/__init__.py +0 -0
  49. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/compile/extract.py +0 -0
  50. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/compile/ingest.py +0 -0
  51. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/compile/providers.py +0 -0
  52. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/compile/resolve.py +0 -0
  53. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/compile/writer.py +0 -0
  54. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/config.py +0 -0
  55. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/defaults.py +0 -0
  56. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/eval/__init__.py +0 -0
  57. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/eval/construction.py +0 -0
  58. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/eval/gold.py +0 -0
  59. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/eval/locomo.py +0 -0
  60. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/eval/retrieval.py +0 -0
  61. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/facts_io.py +0 -0
  62. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/importer/__init__.py +0 -0
  63. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/importer/claude.py +0 -0
  64. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/importer/codex.py +0 -0
  65. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/importer/cursor.py +0 -0
  66. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/importer/opencode.py +0 -0
  67. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/integrations/__init__.py +0 -0
  68. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/integrations/claude_code.py +0 -0
  69. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/integrations/codex.py +0 -0
  70. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/integrations/common.py +0 -0
  71. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/integrations/cursor.py +0 -0
  72. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/integrations/detect.py +0 -0
  73. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/integrations/opencode.py +0 -0
  74. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/journal.py +0 -0
  75. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/mcp_server.py +0 -0
  76. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/models.py +0 -0
  77. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/paths.py +0 -0
  78. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/perm/__init__.py +0 -0
  79. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/perm/ns.py +0 -0
  80. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/pipeline.py +0 -0
  81. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/schema_io.py +0 -0
  82. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/store/__init__.py +0 -0
  83. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/store/fts.py +0 -0
  84. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/store/graph.py +0 -0
  85. {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/wiki.py +0 -0
  86. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/conftest.py +0 -0
  87. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/fixtures/claude-session/memory/MEMORY.md +0 -0
  88. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/fixtures/claude-session/memory/lorekeep-design.md +0 -0
  89. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/fixtures/claude-session/memory/lorekeep-project-state.md +0 -0
  90. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/fixtures/claude-session/test.jsonl +0 -0
  91. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/fixtures/gold/payments.facts.jsonl +0 -0
  92. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/fixtures/raw/backend/payments.md +0 -0
  93. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/fixtures/retrieval/questions.json +0 -0
  94. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/fixtures/schema.json +0 -0
  95. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_agent_cli.py +0 -0
  96. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_agent_detect.py +0 -0
  97. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_backup.py +0 -0
  98. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_backup_cli.py +0 -0
  99. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_compile_cli.py +0 -0
  100. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_config.py +0 -0
  101. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_construction_eval.py +0 -0
  102. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_defaults.py +0 -0
  103. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_determinism.py +0 -0
  104. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_doctor_cli.py +0 -0
  105. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_eval_cli.py +0 -0
  106. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_extract.py +0 -0
  107. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_fts.py +0 -0
  108. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_graph_store.py +0 -0
  109. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_import_claude.py +0 -0
  110. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_import_codex.py +0 -0
  111. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_import_cursor.py +0 -0
  112. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_import_opencode.py +0 -0
  113. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_ingest.py +0 -0
  114. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_init_chain.py +0 -0
  115. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_init_cli.py +0 -0
  116. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_integrations.py +0 -0
  117. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_locomo_eval.py +0 -0
  118. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_mcp_add_cli.py +0 -0
  119. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_mcp_reload.py +0 -0
  120. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_mcp_server.py +0 -0
  121. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_mcp_write_tools.py +0 -0
  122. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_merge_journals.py +0 -0
  123. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_models.py +0 -0
  124. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_paths.py +0 -0
  125. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_perm.py +0 -0
  126. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_pipeline.py +0 -0
  127. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_providers.py +0 -0
  128. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_resolve.py +0 -0
  129. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_retrieval_eval.py +0 -0
  130. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_schema_io.py +0 -0
  131. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_scope_awareness.py +0 -0
  132. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_serve_cli.py +0 -0
  133. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_session_hook.py +0 -0
  134. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_smoke.py +0 -0
  135. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_watch_e2e.py +0 -0
  136. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_watch_sessions.py +0 -0
  137. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_wiki.py +0 -0
  138. {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_writer.py +0 -0
@@ -0,0 +1,27 @@
1
+ name: auto-merge-release-please
2
+
3
+ # When release-please creates or updates a Release PR on the
4
+ # release-please--branches--main branch, enable auto-merge so it
5
+ # merges automatically once branch-protection checks pass.
6
+ #
7
+ # NOTE: uv.lock sync happens post-release in release-please.yml
8
+ # (sync-uv-lock job), NOT here. GITHUB_TOKEN PRs don't trigger
9
+ # pull_request workflows, so pre-merge uv lock never runs.
10
+ on:
11
+ pull_request:
12
+ types: [opened, synchronize]
13
+
14
+ permissions:
15
+ contents: write
16
+ pull-requests: write
17
+
18
+ jobs:
19
+ auto-merge:
20
+ if: startsWith(github.head_ref, 'release-please--')
21
+ runs-on: ubuntu-latest
22
+ steps:
23
+ - name: Enable auto-merge for Release PR
24
+ run: |
25
+ gh pr merge --auto --squash "${{ github.event.pull_request.html_url }}"
26
+ env:
27
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -33,7 +33,7 @@ jobs:
33
33
  tag_name: ${{ steps.rp.outputs.tag_name }}
34
34
  steps:
35
35
  - id: rp
36
- uses: googleapis/release-please-action@v4
36
+ uses: googleapis/release-please-action@v5
37
37
  with:
38
38
  token: ${{ secrets.GITHUB_TOKEN }}
39
39
 
@@ -57,3 +57,42 @@ jobs:
57
57
  - run: uv build
58
58
 
59
59
  - uses: pypa/gh-action-pypi-publish@release/v1
60
+
61
+ sync-uv-lock:
62
+ needs: release-please
63
+ if: needs.release-please.outputs.release_created == 'true'
64
+ runs-on: ubuntu-latest
65
+ permissions:
66
+ contents: write
67
+ pull-requests: write
68
+ steps:
69
+ - uses: actions/checkout@v5
70
+ with:
71
+ ref: main
72
+
73
+ - uses: astral-sh/setup-uv@v7
74
+
75
+ - run: uv lock
76
+
77
+ - name: Sync uv.lock via PR
78
+ run: |
79
+ if git diff --quiet uv.lock; then
80
+ echo "uv.lock already in sync"
81
+ exit 0
82
+ fi
83
+ git config user.name "github-actions[bot]"
84
+ git config user.email "github-actions[bot]@users.noreply.github.com"
85
+ git checkout -b chore/sync-uv-lock-${{ needs.release-please.outputs.tag_name }}
86
+ git add uv.lock
87
+ git commit -m "chore: sync uv.lock to ${{ needs.release-please.outputs.tag_name }}"
88
+ git push origin chore/sync-uv-lock-${{ needs.release-please.outputs.tag_name }}
89
+ gh pr create \
90
+ --title "chore: sync uv.lock to ${{ needs.release-please.outputs.tag_name }}" \
91
+ --body "Auto-synced after release." \
92
+ --base main \
93
+ --head chore/sync-uv-lock-${{ needs.release-please.outputs.tag_name }}
94
+ sleep 3
95
+ gh pr merge --squash --auto --delete-branch \
96
+ chore/sync-uv-lock-${{ needs.release-please.outputs.tag_name }}
97
+ env:
98
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.8.2"
3
+ }
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.8.2](https://github.com/manhhailua/lorekeep/compare/v0.8.1...v0.8.2) (2026-06-30)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * sync uv.lock via PR — branch protection blocks direct push to main ([#80](https://github.com/manhhailua/lorekeep/issues/80)) ([4b2b94f](https://github.com/manhhailua/lorekeep/commit/4b2b94fc511fd1fd2d67e01e6559224491e6931f))
9
+
10
+ ## [0.8.1](https://github.com/manhhailua/lorekeep/compare/v0.8.0...v0.8.1) (2026-06-30)
11
+
12
+
13
+ ### Documentation
14
+
15
+ * tighten Why section ([#78](https://github.com/manhhailua/lorekeep/issues/78)) ([4da2edd](https://github.com/manhhailua/lorekeep/commit/4da2edd8f0451535ac47d8318b657cc4ccca958d))
16
+
3
17
  ## [0.8.0](https://github.com/manhhailua/lorekeep/compare/v0.7.1...v0.8.0) (2026-06-30)
4
18
 
5
19
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lorekeep
3
- Version: 0.8.0
3
+ Version: 0.8.2
4
4
  Summary: Temporal knowledge graph for AI agents via MCP
5
5
  Project-URL: Homepage, https://github.com/manhhailua/lorekeep
6
6
  Project-URL: Repository, https://github.com/manhhailua/lorekeep
@@ -28,31 +28,24 @@ Description-Content-Type: text/markdown
28
28
 
29
29
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
30
30
 
31
- Lorekeep compiles a team's raw documentation into a versioned, time-aware
32
- knowledge graph (`facts.jsonl`) and exposes it to coding agents (Claude Code,
33
- Cursor, Codex, opencode) through the Model Context Protocol — with per-namespace
34
- permission and zero servers to run.
35
-
36
- It applies Andrej Karpathy's "LLM Knowledge Base" idea: raw docs are the
37
- **source code**, the compiled graph is the **executable**. Knowledge is
38
- processed once at compile time, not re-RAG'd per query — and agent
39
- conversations continuously enrich the graph through append-only journals.
31
+ Lorekeep compiles a team's raw docs into a temporal knowledge graph (`facts.jsonl`),
32
+ serves it to coding agents (Claude Code, Cursor, Codex, opencode) over MCP, and
33
+ lets agents propose new facts at zero LLM cost. Knowledge is processed once at
34
+ compile time, not re-RAG'd per query.
40
35
 
41
36
  ---
42
37
 
43
38
  ## Why
44
39
 
45
- Existing tools each miss part of what a team needs:
46
-
47
40
  | | file-based | temporal KG | compile step | team permission | MCP |
48
41
  |---|---|---|---|---|---|
49
42
  | Obsidian + MCP | ✅ | ❌ | ❌ | ❌ | ✅ |
50
43
  | mcp-knowledge-graph | ✅ | ❌ | ❌ | ❌ (local) | ✅ |
51
44
  | mem0 / cognee | ❌ (DB) | partial | ❌ | partial (DB) | ✅ |
52
45
 
53
- Lorekeep targets the gap: **strictly file-based + temporal graph + compile-once +
54
- namespace-scoped permission + MCP** — for team-level (not just single-user)
55
- knowledge.
46
+ No tool combines all five. Lorekeep does: **file-based + temporal graph +
47
+ compile-once + namespace permission + MCP** — for team-level knowledge, not
48
+ just single-user.
56
49
 
57
50
  ## Features
58
51
 
@@ -6,31 +6,24 @@
6
6
 
7
7
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
8
8
 
9
- Lorekeep compiles a team's raw documentation into a versioned, time-aware
10
- knowledge graph (`facts.jsonl`) and exposes it to coding agents (Claude Code,
11
- Cursor, Codex, opencode) through the Model Context Protocol — with per-namespace
12
- permission and zero servers to run.
13
-
14
- It applies Andrej Karpathy's "LLM Knowledge Base" idea: raw docs are the
15
- **source code**, the compiled graph is the **executable**. Knowledge is
16
- processed once at compile time, not re-RAG'd per query — and agent
17
- conversations continuously enrich the graph through append-only journals.
9
+ Lorekeep compiles a team's raw docs into a temporal knowledge graph (`facts.jsonl`),
10
+ serves it to coding agents (Claude Code, Cursor, Codex, opencode) over MCP, and
11
+ lets agents propose new facts at zero LLM cost. Knowledge is processed once at
12
+ compile time, not re-RAG'd per query.
18
13
 
19
14
  ---
20
15
 
21
16
  ## Why
22
17
 
23
- Existing tools each miss part of what a team needs:
24
-
25
18
  | | file-based | temporal KG | compile step | team permission | MCP |
26
19
  |---|---|---|---|---|---|
27
20
  | Obsidian + MCP | ✅ | ❌ | ❌ | ❌ | ✅ |
28
21
  | mcp-knowledge-graph | ✅ | ❌ | ❌ | ❌ (local) | ✅ |
29
22
  | mem0 / cognee | ❌ (DB) | partial | ❌ | partial (DB) | ✅ |
30
23
 
31
- Lorekeep targets the gap: **strictly file-based + temporal graph + compile-once +
32
- namespace-scoped permission + MCP** — for team-level (not just single-user)
33
- knowledge.
24
+ No tool combines all five. Lorekeep does: **file-based + temporal graph +
25
+ compile-once + namespace permission + MCP** — for team-level knowledge, not
26
+ just single-user.
34
27
 
35
28
  ## Features
36
29
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "lorekeep"
3
- version = "0.8.0"
3
+ version = "0.8.2"
4
4
  description = "Temporal knowledge graph for AI agents via MCP"
5
5
  readme = "README.md"
6
6
  license = {text = "MIT"}
@@ -1,3 +1,3 @@
1
1
  """Lorekeep — temporal knowledge graph for AI agents via MCP."""
2
2
 
3
- __version__ = "0.8.0"
3
+ __version__ = "0.8.2"
@@ -1024,7 +1024,7 @@ wheels = [
1024
1024
 
1025
1025
  [[package]]
1026
1026
  name = "lorekeep"
1027
- version = "0.5.0"
1027
+ version = "0.8.0"
1028
1028
  source = { editable = "." }
1029
1029
  dependencies = [
1030
1030
  { name = "litellm" },
@@ -1,47 +0,0 @@
1
- name: auto-merge-release-please
2
-
3
- # When release-please creates or updates a Release PR, this workflow:
4
- # 1. Runs `uv lock` to sync the lockfile with the bumped version in pyproject.toml
5
- # 2. Commits the updated uv.lock back to the PR branch (if changed)
6
- # 3. Enables auto-merge so the PR merges once CI passes
7
- #
8
- # This ensures uv.lock is always correct in the release commit — no stale lockfile.
9
- on:
10
- pull_request:
11
- types: [opened, synchronize]
12
-
13
- permissions:
14
- contents: write
15
- pull-requests: write
16
-
17
- jobs:
18
- prepare-and-auto-merge:
19
- if: startsWith(github.head_ref, 'release-please--')
20
- runs-on: ubuntu-latest
21
- steps:
22
- - uses: actions/checkout@v5
23
- with:
24
- ref: ${{ github.head_ref }}
25
- token: ${{ secrets.GITHUB_TOKEN }}
26
-
27
- - uses: astral-sh/setup-uv@v7
28
-
29
- - name: Sync uv.lock
30
- run: uv lock
31
- continue-on-error: true
32
-
33
- - name: Commit uv.lock if changed
34
- continue-on-error: true
35
- run: |
36
- git config user.name "github-actions[bot]"
37
- git config user.email "github-actions[bot]@users.noreply.github.com"
38
- git add uv.lock
39
- git diff --cached --quiet || git commit -m "chore: sync uv.lock"
40
- git push || true
41
-
42
- - name: Enable auto-merge for Release PR
43
- run: |
44
- sleep 3
45
- gh pr merge --auto --squash "${{ github.event.pull_request.html_url }}"
46
- env:
47
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -1,3 +0,0 @@
1
- {
2
- ".": "0.8.0"
3
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes