lean-memory 0.1.0__tar.gz → 0.1.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 (89) hide show
  1. lean_memory-0.1.2/.github/workflows/publish-mcp.yml +52 -0
  2. {lean_memory-0.1.0 → lean_memory-0.1.2}/CHANGELOG.md +13 -0
  3. {lean_memory-0.1.0 → lean_memory-0.1.2}/PKG-INFO +4 -1
  4. {lean_memory-0.1.0 → lean_memory-0.1.2}/README.md +3 -0
  5. {lean_memory-0.1.0 → lean_memory-0.1.2}/pyproject.toml +1 -1
  6. lean_memory-0.1.2/server.json +49 -0
  7. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/__init__.py +1 -1
  8. {lean_memory-0.1.0 → lean_memory-0.1.2}/.github/workflows/release.yml +0 -0
  9. {lean_memory-0.1.0 → lean_memory-0.1.2}/.github/workflows/test.yml +0 -0
  10. {lean_memory-0.1.0 → lean_memory-0.1.2}/.gitignore +0 -0
  11. {lean_memory-0.1.0 → lean_memory-0.1.2}/ARCHITECTURE.md +0 -0
  12. {lean_memory-0.1.0 → lean_memory-0.1.2}/CLAUDE.md +0 -0
  13. {lean_memory-0.1.0 → lean_memory-0.1.2}/PERFORMANCE.md +0 -0
  14. {lean_memory-0.1.0 → lean_memory-0.1.2}/bench/bet2_ablation.py +0 -0
  15. {lean_memory-0.1.0 → lean_memory-0.1.2}/bench/bet2_goldset.py +0 -0
  16. {lean_memory-0.1.0 → lean_memory-0.1.2}/bench/phase2_escalation_probe.py +0 -0
  17. {lean_memory-0.1.0 → lean_memory-0.1.2}/bench/phase2_eval.py +0 -0
  18. {lean_memory-0.1.0 → lean_memory-0.1.2}/bench/phase2_ingest.py +0 -0
  19. {lean_memory-0.1.0 → lean_memory-0.1.2}/bench/phase2_judge.py +0 -0
  20. {lean_memory-0.1.0 → lean_memory-0.1.2}/bench/phase2_reader.py +0 -0
  21. {lean_memory-0.1.0 → lean_memory-0.1.2}/bench/results/calibration/2026-07-bet2-revalidation.txt +0 -0
  22. {lean_memory-0.1.0 → lean_memory-0.1.2}/bench/results/calibration/2026-07-escalation-baseline.json +0 -0
  23. {lean_memory-0.1.0 → lean_memory-0.1.2}/bench/results/calibration/2026-07-escalation-postdrop-p1.json +0 -0
  24. {lean_memory-0.1.0 → lean_memory-0.1.2}/bench/results/calibration/2026-07-escalation-postdrop-p2.json +0 -0
  25. {lean_memory-0.1.0 → lean_memory-0.1.2}/bench/results/calibration/2026-07-escalation-postdrop-p3.json +0 -0
  26. {lean_memory-0.1.0 → lean_memory-0.1.2}/bench/results/calibration/2026-07-escalation-postdrop-p4.json +0 -0
  27. {lean_memory-0.1.0 → lean_memory-0.1.2}/bench/results/calibration/2026-07-escalation-postfix.json +0 -0
  28. {lean_memory-0.1.0 → lean_memory-0.1.2}/bench/results/calibration/2026-07-granularity-sweep.json +0 -0
  29. {lean_memory-0.1.0 → lean_memory-0.1.2}/bench/results/calibration/README.md +0 -0
  30. {lean_memory-0.1.0 → lean_memory-0.1.2}/bench/results/phase2/.gitkeep +0 -0
  31. {lean_memory-0.1.0 → lean_memory-0.1.2}/bench/results/phase2/dataset_pins.json +0 -0
  32. {lean_memory-0.1.0 → lean_memory-0.1.2}/bench/smoke_quality.py +0 -0
  33. {lean_memory-0.1.0 → lean_memory-0.1.2}/docs/assets/quickstart.gif +0 -0
  34. {lean_memory-0.1.0 → lean_memory-0.1.2}/docs/assets/quickstart.tape +0 -0
  35. {lean_memory-0.1.0 → lean_memory-0.1.2}/docs/benchmarks.md +0 -0
  36. {lean_memory-0.1.0 → lean_memory-0.1.2}/docs/competitive-landscape.md +0 -0
  37. {lean_memory-0.1.0 → lean_memory-0.1.2}/docs/launch-fixlist.md +0 -0
  38. {lean_memory-0.1.0 → lean_memory-0.1.2}/docs/phase2-eval-plan.md +0 -0
  39. {lean_memory-0.1.0 → lean_memory-0.1.2}/docs/phase2-learnings.md +0 -0
  40. {lean_memory-0.1.0 → lean_memory-0.1.2}/docs/superpowers/phase2-HANDOFF.md +0 -0
  41. {lean_memory-0.1.0 → lean_memory-0.1.2}/docs/superpowers/plans/2026-06-21-demo-agent.md +0 -0
  42. {lean_memory-0.1.0 → lean_memory-0.1.2}/docs/superpowers/plans/2026-06-21-mcp-server.md +0 -0
  43. {lean_memory-0.1.0 → lean_memory-0.1.2}/docs/superpowers/plans/2026-07-02-phase2-eval-harness.md +0 -0
  44. {lean_memory-0.1.0 → lean_memory-0.1.2}/docs/superpowers/plans/2026-07-08-launch-quality-gate.md +0 -0
  45. {lean_memory-0.1.0 → lean_memory-0.1.2}/docs/superpowers/specs/2026-07-02-phase2-eval-harness-design.md +0 -0
  46. {lean_memory-0.1.0 → lean_memory-0.1.2}/docs/superpowers/specs/2026-07-08-strategic-direction-design.md +0 -0
  47. {lean_memory-0.1.0 → lean_memory-0.1.2}/docs/superpowers/workpackets.md +0 -0
  48. {lean_memory-0.1.0 → lean_memory-0.1.2}/examples/chat.py +0 -0
  49. {lean_memory-0.1.0 → lean_memory-0.1.2}/examples/mcp_config.json +0 -0
  50. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/embed/__init__.py +0 -0
  51. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/embed/base.py +0 -0
  52. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/embed/fake.py +0 -0
  53. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/embed/sentence_transformer.py +0 -0
  54. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/extract/__init__.py +0 -0
  55. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/extract/contradiction.py +0 -0
  56. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/extract/gliner_extractor.py +0 -0
  57. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/extract/llm_typer.py +0 -0
  58. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/extract/router.py +0 -0
  59. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/extract/rules.py +0 -0
  60. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/extract/salience.py +0 -0
  61. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/extract/taxonomy.py +0 -0
  62. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/mcp_server.py +0 -0
  63. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/memory.py +0 -0
  64. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/retrieve/__init__.py +0 -0
  65. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/retrieve/rerank.py +0 -0
  66. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/retrieve/retriever.py +0 -0
  67. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/store/__init__.py +0 -0
  68. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/store/base.py +0 -0
  69. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/store/schema.py +0 -0
  70. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/store/sqlite_store.py +0 -0
  71. {lean_memory-0.1.0 → lean_memory-0.1.2}/src/lean_memory/types.py +0 -0
  72. {lean_memory-0.1.0 → lean_memory-0.1.2}/tests/fixtures/phase2/lme_oracle_mini.json +0 -0
  73. {lean_memory-0.1.0 → lean_memory-0.1.2}/tests/fixtures/phase2/lme_s_mini.json +0 -0
  74. {lean_memory-0.1.0 → lean_memory-0.1.2}/tests/fixtures/phase2/locomo_mini.json +0 -0
  75. {lean_memory-0.1.0 → lean_memory-0.1.2}/tests/test_asof_sparse.py +0 -0
  76. {lean_memory-0.1.0 → lean_memory-0.1.2}/tests/test_chat.py +0 -0
  77. {lean_memory-0.1.0 → lean_memory-0.1.2}/tests/test_contradiction_extends.py +0 -0
  78. {lean_memory-0.1.0 → lean_memory-0.1.2}/tests/test_embedder_default.py +0 -0
  79. {lean_memory-0.1.0 → lean_memory-0.1.2}/tests/test_escalation_probe.py +0 -0
  80. {lean_memory-0.1.0 → lean_memory-0.1.2}/tests/test_known_entities_cap.py +0 -0
  81. {lean_memory-0.1.0 → lean_memory-0.1.2}/tests/test_mcp_server.py +0 -0
  82. {lean_memory-0.1.0 → lean_memory-0.1.2}/tests/test_phase1_extraction.py +0 -0
  83. {lean_memory-0.1.0 → lean_memory-0.1.2}/tests/test_phase2_eval.py +0 -0
  84. {lean_memory-0.1.0 → lean_memory-0.1.2}/tests/test_phase2_ingest.py +0 -0
  85. {lean_memory-0.1.0 → lean_memory-0.1.2}/tests/test_phase2_judge.py +0 -0
  86. {lean_memory-0.1.0 → lean_memory-0.1.2}/tests/test_phase2_reader.py +0 -0
  87. {lean_memory-0.1.0 → lean_memory-0.1.2}/tests/test_router.py +0 -0
  88. {lean_memory-0.1.0 → lean_memory-0.1.2}/tests/test_search_now.py +0 -0
  89. {lean_memory-0.1.0 → lean_memory-0.1.2}/tests/test_spine.py +0 -0
@@ -0,0 +1,52 @@
1
+ name: publish-mcp
2
+
3
+ # Publishes the server.json metadata to the official MCP Registry
4
+ # (registry.modelcontextprotocol.io) using GitHub OIDC — no stored secret.
5
+ #
6
+ # This workflow ONLY publishes registry metadata. The PyPI artifact itself is
7
+ # published separately by release.yml (Trusted Publishing on the same v* tag).
8
+ # The registry validates PyPI package ownership by reading the `mcp-name:`
9
+ # marker from the package's PyPI description (README), so the PyPI release for
10
+ # this version MUST already be live — and its README MUST contain
11
+ # `mcp-name: io.github.wuesteon/lean-memory` — before this runs. Prefer
12
+ # workflow_dispatch after confirming the release, or let the tag trigger run
13
+ # once PyPI Trusted Publishing has completed.
14
+
15
+ on:
16
+ push:
17
+ tags: ["v*"]
18
+ workflow_dispatch:
19
+
20
+ jobs:
21
+ publish:
22
+ name: Publish server.json to MCP Registry
23
+ runs-on: ubuntu-latest
24
+ permissions:
25
+ id-token: write # Required for GitHub OIDC authentication
26
+ contents: read
27
+ steps:
28
+ - name: Checkout code
29
+ uses: actions/checkout@v4
30
+
31
+ - name: Install mcp-publisher
32
+ run: |
33
+ curl -L "https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher
34
+
35
+ # On a tag push, sync server.json's versions to the tag (v0.1.1 -> 0.1.1).
36
+ # No-op for workflow_dispatch (server.json is published as committed).
37
+ - name: Sync server.json version to tag
38
+ if: startsWith(github.ref, 'refs/tags/v')
39
+ run: |
40
+ VERSION="${GITHUB_REF#refs/tags/v}"
41
+ jq --arg v "$VERSION" '.version = $v | .packages[0].version = $v' server.json > server.tmp
42
+ mv server.tmp server.json
43
+ cat server.json
44
+
45
+ - name: Validate server.json
46
+ run: ./mcp-publisher validate server.json
47
+
48
+ - name: Authenticate to MCP Registry (GitHub OIDC)
49
+ run: ./mcp-publisher login github-oidc
50
+
51
+ - name: Publish server to MCP Registry
52
+ run: ./mcp-publisher publish
@@ -4,6 +4,19 @@ All notable changes to lean-memory are documented here. The format is based on
4
4
  [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project
5
5
  adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [0.1.2] - 2026-07-12
8
+
9
+ ### Fixed
10
+ - MCP Registry namespace case: `io.github.Wuesteon/lean-memory` (the registry's
11
+ PyPI ownership marker is compared case-exactly against the published README).
12
+
13
+ ## [0.1.1] - 2026-07-12
14
+
15
+ ### Added
16
+ - MCP Registry metadata: `server.json` (io.github.wuesteon/lean-memory) and an
17
+ OIDC publish workflow; `mcp-name` ownership marker in the README (required by
18
+ the registry's PyPI validation — the reason for this patch release).
19
+
7
20
  ## [0.1.0] - 2026-07-12
8
21
 
9
22
  First public release. lean-memory is an embedded, local-first agent-memory
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lean-memory
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: Embedded, local-first agent memory with hybrid retrieval and ADD-only supersession.
5
5
  Project-URL: Homepage, https://github.com/Wuesteon/lean-memory
6
6
  Project-URL: Repository, https://github.com/Wuesteon/lean-memory
@@ -226,3 +226,6 @@ bench/ Retrieval quality + BET-2 ablation harnesses
226
226
  ## License
227
227
 
228
228
  Apache-2.0
229
+
230
+ <!-- mcp-name: io.github.Wuesteon/lean-memory -->
231
+
@@ -182,3 +182,6 @@ bench/ Retrieval quality + BET-2 ablation harnesses
182
182
  ## License
183
183
 
184
184
  Apache-2.0
185
+
186
+ <!-- mcp-name: io.github.Wuesteon/lean-memory -->
187
+
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "lean-memory"
3
- version = "0.1.0"
3
+ version = "0.1.2"
4
4
  description = "Embedded, local-first agent memory with hybrid retrieval and ADD-only supersession."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -0,0 +1,49 @@
1
+ {
2
+ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
+ "name": "io.github.Wuesteon/lean-memory",
4
+ "description": "Embedded, local-first agent memory: one SQLite file per namespace, no server, no cloud.",
5
+ "title": "lean-memory",
6
+ "repository": {
7
+ "url": "https://github.com/Wuesteon/lean-memory",
8
+ "source": "github"
9
+ },
10
+ "version": "0.1.2",
11
+ "packages": [
12
+ {
13
+ "registryType": "pypi",
14
+ "registryBaseUrl": "https://pypi.org",
15
+ "identifier": "lean-memory",
16
+ "version": "0.1.2",
17
+ "runtimeHint": "uvx",
18
+ "transport": {
19
+ "type": "stdio"
20
+ },
21
+ "runtimeArguments": [
22
+ {
23
+ "type": "named",
24
+ "name": "--from",
25
+ "value": "lean-memory",
26
+ "isRequired": true,
27
+ "description": "Install the lean-memory package, then run its lean-memory-mcp console-script entry point (the package name and script name differ, so uvx needs --from)."
28
+ }
29
+ ],
30
+ "packageArguments": [
31
+ {
32
+ "type": "positional",
33
+ "value": "lean-memory-mcp",
34
+ "isRequired": true,
35
+ "description": "Console script entry point that starts the stdio MCP server."
36
+ }
37
+ ],
38
+ "environmentVariables": [
39
+ {
40
+ "name": "LM_DATA_ROOT",
41
+ "description": "Directory for per-namespace SQLite memory files. Defaults to ~/.lean_memory when unset.",
42
+ "isRequired": false,
43
+ "isSecret": false,
44
+ "default": "~/.lean_memory"
45
+ }
46
+ ]
47
+ }
48
+ ]
49
+ }
@@ -11,4 +11,4 @@ from .memory import Memory
11
11
  from .types import Entity, Episode, Fact, RetrievedFact
12
12
 
13
13
  __all__ = ["Memory", "Episode", "Entity", "Fact", "RetrievedFact"]
14
- __version__ = "0.1.0" # keep in sync with pyproject.toml [project].version
14
+ __version__ = "0.1.2" # keep in sync with pyproject.toml [project].version
File without changes
File without changes
File without changes
File without changes