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.
- lorekeep-0.8.2/.github/workflows/auto-merge-release-please.yml +27 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/.github/workflows/release-please.yml +40 -1
- lorekeep-0.8.2/.release-please-manifest.json +3 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/CHANGELOG.md +14 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/PKG-INFO +8 -15
- {lorekeep-0.8.0 → lorekeep-0.8.2}/README.md +7 -14
- {lorekeep-0.8.0 → lorekeep-0.8.2}/pyproject.toml +1 -1
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/__init__.py +1 -1
- {lorekeep-0.8.0 → lorekeep-0.8.2}/uv.lock +1 -1
- lorekeep-0.8.0/.github/workflows/auto-merge-release-please.yml +0 -47
- lorekeep-0.8.0/.release-please-manifest.json +0 -3
- {lorekeep-0.8.0 → lorekeep-0.8.2}/.commitlintrc.json +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/.github/workflows/ci.yml +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/.github/workflows/lint-commits.yml +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/.gitignore +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/.lorekeep/config.yaml.example +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/.lorekeep/schema.json +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/.pre-commit-config.yaml +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/AGENTS.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/CLAUDE.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/LICENSE +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/SECURITY.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/cover.jpeg +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/README.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/architecture/agent.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/architecture/data-model.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/architecture/evaluation.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/architecture/journal.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/architecture/overview.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/architecture/permission.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/architecture/pipeline.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/architecture/serve-mcp.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/architecture/temporal.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/guides/backup.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/guides/compile.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/guides/data-home.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/guides/getting-started.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/guides/import.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/guides/serve.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/guides/wiki.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/superpowers/plans/2026-06-26-lorekeep-dotdir-backup.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/docs/superpowers/specs/2026-06-26-lorekeep-dotdir-layout-design.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/release-please-config.json +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/scripts/check-conventional-commit.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/agent.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/backup.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/cli.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/compile/__init__.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/compile/extract.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/compile/ingest.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/compile/providers.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/compile/resolve.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/compile/writer.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/config.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/defaults.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/eval/__init__.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/eval/construction.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/eval/gold.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/eval/locomo.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/eval/retrieval.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/facts_io.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/importer/__init__.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/importer/claude.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/importer/codex.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/importer/cursor.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/importer/opencode.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/integrations/__init__.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/integrations/claude_code.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/integrations/codex.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/integrations/common.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/integrations/cursor.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/integrations/detect.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/integrations/opencode.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/journal.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/mcp_server.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/models.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/paths.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/perm/__init__.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/perm/ns.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/pipeline.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/schema_io.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/store/__init__.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/store/fts.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/store/graph.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/src/lorekeep/wiki.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/conftest.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/fixtures/claude-session/memory/MEMORY.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/fixtures/claude-session/memory/lorekeep-design.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/fixtures/claude-session/memory/lorekeep-project-state.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/fixtures/claude-session/test.jsonl +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/fixtures/gold/payments.facts.jsonl +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/fixtures/raw/backend/payments.md +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/fixtures/retrieval/questions.json +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/fixtures/schema.json +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_agent_cli.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_agent_detect.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_backup.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_backup_cli.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_compile_cli.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_config.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_construction_eval.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_defaults.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_determinism.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_doctor_cli.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_eval_cli.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_extract.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_fts.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_graph_store.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_import_claude.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_import_codex.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_import_cursor.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_import_opencode.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_ingest.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_init_chain.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_init_cli.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_integrations.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_locomo_eval.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_mcp_add_cli.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_mcp_reload.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_mcp_server.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_mcp_write_tools.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_merge_journals.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_models.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_paths.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_perm.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_pipeline.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_providers.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_resolve.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_retrieval_eval.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_schema_io.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_scope_awareness.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_serve_cli.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_session_hook.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_smoke.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_watch_e2e.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_watch_sessions.py +0 -0
- {lorekeep-0.8.0 → lorekeep-0.8.2}/tests/test_wiki.py +0 -0
- {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@
|
|
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 }}
|
|
@@ -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.
|
|
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)
|
|
30
30
|
|
|
31
|
-
Lorekeep compiles a team's raw
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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)
|
|
8
8
|
|
|
9
|
-
Lorekeep compiles a team's raw
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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,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 }}
|
|
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
|
{lorekeep-0.8.0 → lorekeep-0.8.2}/docs/superpowers/plans/2026-06-26-lorekeep-dotdir-backup.md
RENAMED
|
File without changes
|
{lorekeep-0.8.0 → lorekeep-0.8.2}/docs/superpowers/specs/2026-06-26-lorekeep-dotdir-layout-design.md
RENAMED
|
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
|
|
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
|
{lorekeep-0.8.0 → lorekeep-0.8.2}/tests/fixtures/claude-session/memory/lorekeep-project-state.md
RENAMED
|
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
|
|
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
|