diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index b02f79a..880c7ca 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -9,7 +9,19 @@ { "name": "lean-memory", "source": "./plugin", - "description": "Observing MCP + read-only console for lean-memory: store and search agent memories from Claude Code, then verify the supersession spine, per-hit score breakdown, and provenance episodes in a local UI." + "description": "Observing MCP + read-only console for lean-memory: store and search agent memories from Claude Code, then verify the supersession spine, per-hit score breakdown, and provenance episodes in a local UI.", + "category": "productivity", + "keywords": [ + "memory", + "agent-memory", + "mcp", + "local-first", + "sqlite", + "retrieval" + ], + "homepage": "https://github.com/Wuesteon/lean-memory", + "repository": "https://github.com/Wuesteon/lean-memory", + "license": "Apache-2.0" } ] } diff --git a/CHANGELOG.md b/CHANGELOG.md index 0894f36..1adefaa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,30 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Nothing yet. +## [0.2.1] - 2026-07-21 + +Metadata-only release for the public launch — no code changes. + +### Fixed + +- **`lean-memory-console` had a blank PyPI page**: its README is now wired as + the package long description, and license, authors, keywords, classifiers, + and project URLs are declared (none were before). +- Two relative links that 404 on PyPI (README → ARCHITECTURE.md, + console README → core README) are now absolute GitHub URLs. + +### Changed + +- Core package: added Documentation / Changelog / Issues project URLs. +- Claude Code plugin marketplace manifest: added the discovery metadata + directories rank on (category, keywords, homepage, repository, license). +- Launch copy (`docs/launch/`) tightened after adversarial review: the + "no other memory product stages agent-proposed changes for approval" + superlative is replaced with a defensible differentiator, positioning vs + built-in Claude Code memory added, "no Docker" added to the + differentiation copy, measured calibration figures removed from post + bodies per the no-benchmark-numbers launch rule. + ## [0.2.0] - 2026-07-17 ### Added @@ -180,4 +204,9 @@ rerank, and ADD-only supersession queryable at any past point in time - Sparse BM25 retrieval arm now honors the `as_of` interval predicate. - Known-entities handed to the router/typer are capped at the 100 most recent. +[0.2.1]: https://github.com/Wuesteon/lean-memory/releases/tag/v0.2.1 +[0.2.0]: https://github.com/Wuesteon/lean-memory/releases/tag/v0.2.0 +[0.1.3]: https://github.com/Wuesteon/lean-memory/releases/tag/v0.1.3 +[0.1.2]: https://github.com/Wuesteon/lean-memory/releases/tag/v0.1.2 +[0.1.1]: https://github.com/Wuesteon/lean-memory/releases/tag/v0.1.1 [0.1.0]: https://github.com/Wuesteon/lean-memory/releases/tag/v0.1.0 diff --git a/README.md b/README.md index c7914bf..b16d7a1 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,12 @@ Embedded, local-first agent memory. No server, no daemon, no mandatory cloud key. -> **Status (2026-07):** working toward the first public launch (MCP-first). +> **Status (2026-07):** first public release line is live — on PyPI, the MCP +> Registry, and as a Claude Code plugin (MCP-first launch). > Roadmap and rationale: `docs/superpowers/specs/2026-07-08-strategic-direction-design.md`. -> Public benchmark runs (LongMemEval/LoCoMo) are deferred until after launch; -> the harness is complete (`bench/phase2_*.py`) and the engine flaws it exposed -> are fixed on this branch — see `docs/phase2-learnings.md`. +> Public benchmark runs (LongMemEval/LoCoMo) are deliberately deferred until +> after launch; the harness is complete (`bench/phase2_*.py`) and the engine +> flaws it exposed are fixed — see `docs/phase2-learnings.md`. ```python from lean_memory import Memory @@ -201,7 +202,7 @@ pip install 'lean-memory[models]' With `Qwen3-Embedding-0.6B` + `Ettin-32M` reranker, retrieval jumps from 1/5 to 4/5 on the internal benchmark with zero code changes. -> For benchmark results, architecture decisions, and implementation status see [ARCHITECTURE.md](ARCHITECTURE.md). +> For benchmark results, architecture decisions, and implementation status see [ARCHITECTURE.md](https://github.com/Wuesteon/lean-memory/blob/main/ARCHITECTURE.md). ## How It Works diff --git a/console/README.md b/console/README.md index 2f90fc6..708c64a 100644 --- a/console/README.md +++ b/console/README.md @@ -1,6 +1,6 @@ # lean-memory-console -A read-only verification console for [lean-memory](../README.md). +A read-only verification console for [lean-memory](https://github.com/Wuesteon/lean-memory#readme). **Agents write and search; the human verifies.** Your agent (Claude Code via the observing MCP, or any HTTP client in Docker mode) is the only writer of @@ -37,7 +37,7 @@ token drops the session. Via the Claude Code plugin (recommended), the MCP is wired automatically: ``` -/plugin marketplace add Wuesteon/lean-memory-console +/plugin marketplace add Wuesteon/lean-memory /plugin install lean-memory /memory:ui # launch + open the console /memory:status # resolved root, namespaces, connect snippets diff --git a/console/pyproject.toml b/console/pyproject.toml index d4869c3..cc7a4ea 100644 --- a/console/pyproject.toml +++ b/console/pyproject.toml @@ -4,9 +4,33 @@ build-backend = "hatchling.build" [project] name = "lean-memory-console" -version = "0.2.0" +version = "0.2.1" description = "Agent-first read-only verification console for lean-memory" +readme = "README.md" requires-python = ">=3.10" +license = { text = "Apache-2.0" } +authors = [{ name = "lean-memory" }] +keywords = [ + "agent-memory", + "memory", + "mcp", + "lean-memory", + "console", + "verification", + "local-first", +] +classifiers = [ + "Development Status :: 4 - Beta", + "License :: OSI Approved :: Apache Software License", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Topic :: Scientific/Engineering :: Artificial Intelligence", + "Intended Audience :: Developers", + "Operating System :: OS Independent", +] dependencies = [ "lean-memory", "fastapi>=0.115", @@ -17,6 +41,12 @@ dependencies = [ [project.optional-dependencies] dev = ["pytest>=8", "anyio>=4", "httpx>=0.27", "pyyaml"] +[project.urls] +Homepage = "https://github.com/Wuesteon/lean-memory" +Repository = "https://github.com/Wuesteon/lean-memory" +Changelog = "https://github.com/Wuesteon/lean-memory/blob/main/CHANGELOG.md" +Issues = "https://github.com/Wuesteon/lean-memory/issues" + [project.scripts] lean-memory-console = "lean_memory_console.cli:main" diff --git a/console/src/lean_memory_console/__init__.py b/console/src/lean_memory_console/__init__.py index 4c3fa7f..9e09489 100644 --- a/console/src/lean_memory_console/__init__.py +++ b/console/src/lean_memory_console/__init__.py @@ -1,3 +1,3 @@ """lean-memory-console — agent-first read-only verification console.""" -__version__ = "0.2.0" +__version__ = "0.2.1" diff --git a/console/tests/test_plugin_manifest.py b/console/tests/test_plugin_manifest.py index f5a9b8b..4ddd949 100644 --- a/console/tests/test_plugin_manifest.py +++ b/console/tests/test_plugin_manifest.py @@ -18,7 +18,7 @@ def test_plugin_json_identity() -> None: data = json.loads((PLUGIN / ".claude-plugin" / "plugin.json").read_text()) assert data["name"] == "lean-memory" - assert data["version"] == "0.2.0" + assert data["version"] == "0.2.1" assert data["description"] # non-empty diff --git a/docs/launch/launch-checklist.md b/docs/launch/launch-checklist.md new file mode 100644 index 0000000..c436591 --- /dev/null +++ b/docs/launch/launch-checklist.md @@ -0,0 +1,86 @@ +# WP1 launch checklist — channel-by-channel runbook + +Status as of 2026-07-21 (branch `wp1-launch`). Executes spec §3 +(`docs/superpowers/specs/2026-07-08-strategic-direction-design.md`). +One narrative everywhere: **local-first, no server, time-travel history.** +Zero benchmark numbers in any copy; every channel links the repo README +quickstart; ~2 GB model download stated wherever an install is shown. + +## Channel status + +| # | Channel | Status | Blocking action | Who | +|---|---|---|---|---| +| 1 | MCP Registry | **LIVE** (0.2.0 active, `isLatest`; `server.json` install spec verified end-to-end) | v0.2.1 republish is automatic: `publish-mcp` workflow on tag push | CI | +| 2 | PyPI (core + console) | **LIVE** (0.2.0 both) — console page blank until 0.2.1 | Merge this branch → tag `v0.2.1` → `release` workflow publishes both via Trusted Publishing | maintainer + CI | +| 3 | `awesome-mcp-servers` PR | **SUBMITTED** — [PR #9890](https://github.com/punkpeye/awesome-mcp-servers/pull/9890) open since 2026-07-12 (🤖🤖🤖 fast-track; Glama quality score live at 83%; maintainer's badge request answered 2026-07-13) | Waiting on maintainer; optional entry-text refresh (see below) | — | +| 4 | Claude Code plugin marketplace | manifest valid + discovery metadata added | Submit form (steps below) **after merge** so the reviewed manifest is on `main` | maintainer (account-bound form) | +| 5 | Show HN | copy final (`launch-copy.md` §1) | Post from own account | maintainer | +| 6 | r/ClaudeAI + r/LocalLLaMA | copy final (`launch-copy.md` §2–3) | Post from own account | maintainer | + +## Launch-day order + +1. Merge `wp1-launch` → `main` (PR; review the amended copy — see “Decisions + applied” below). +2. Tag and push `v0.2.1` → `release` + `publish-mcp` workflows fire (PyPI ×2 + + registry). Verify: console PyPI page renders; registry shows 0.2.1. +3. `awesome-mcp-servers`: **already submitted** (PR #9890, in review — the + maintainer asked for the Glama score, which is now live; last reply + 2026-07-13). Optional: push the updated §4 entry line (adds sleep-time + maintenance + “No Docker”, lighter `[mcp]` install hint) to the fork branch + `Wuesteon/awesome-mcp-servers:add-lean-memory` to refresh the open PR — + or leave the in-review entry untouched. +4. Submit the plugin: `claude plugin validate .` (passes as of this branch), + then the Console form at + pointed at `github.com/Wuesteon/lean-memory`. Notes: Anthropic’s community + marketplace has **no PR route** (`anthropics/claude-plugins-community` + auto-closes PRs); catalog sync is nightly, so expect delay; the plugin + `name` is immutable once published. Optional secondary venues: a PR to + `ComposioHQ/awesome-claude-plugins`; `claudemarketplaces.com` auto-crawls + public repos with a valid manifest — nothing to submit. +5. Show HN (§1: title + author first-comment). +6. r/ClaudeAI (§2), r/LocalLLaMA (§3). + +## Acceptance verification (packet criterion: each listing’s install snippet ends in a working `memory_add`/`memory_search`) + +Fresh-venv walkthrough against the **published** PyPI 0.2.0 artifacts, +2026-07-21 — all four advertised snippets PASS: + +1. `pip install lean-memory` → `from lean_memory import Memory`; add/search + returns the fact; supersession verified (new fact wins, old row keeps + `is_latest=0` + `superseded_by`; `as_of` time-travel returns the old fact). +2. `pip install 'lean-memory[mcp]'` → real stdio MCP client against + `lean-memory-mcp`: 7 tools listed (incl. all four maintenance tools), + `memory_add` → `memory_search` round-trip asserted. +3. `pip install lean-memory-console` → entry point serves; tokenized URL; + clean startup/shutdown. +4. Registry command `uvx --from 'lean-memory[mcp,models,extract]' + lean-memory-mcp`: the `[mcp]`-variant run end-to-end over stdio; + the full extras spec resolves cleanly (73 packages). Confirmed the bare + `uvx --from lean-memory lean-memory-mcp` form crashes — the manifest + correctly does not ship it. + +## Decisions applied on this branch (flag on PR review if you disagree) + +- **Superlative dropped** (all three posts): “no other memory product stages + agent-proposed changes for approval” was adversarially refuted (shipping + counterexamples gate agent memory saves behind approval). Replaced with a + hedged, narrowed differentiator: offline maintenance over an embedded local + store, every judgment call staged as an approvable diff. +- **r/LocalLLaMA de-numbered** (spec §1 “no number”): the measured “~15% + escalation” figure and the “real measured numbers” framing are out; the + calibration README link stays, reframed as methodology-only. Alternatives if + you want them: cut the link entirely, or deliberately restore the numbers as + an approved carve-out for that audience. +- **Positioning vs built-in Claude Code memory** added to r/ClaudeAI + (cross-client, auditable in any SQLite browser, as-of queries). +- **“No Docker”** added to the OpenMemory-differentiation triads (spec risk + list) in Show HN, r/ClaudeAI, the awesome one-liner, and the registry blurb. +- **README status note** updated to “first public release line is live”; + shipped inside the v0.2.1 PyPI description. + +## Post-launch + +Start the **six-week demand read** (spec §4): strangers filing issues/PRs +(primary), ~200+ stars / rising PyPI downloads (directional). Signal → revisit +specialization + contributor scaffolding + deferred benchmarks; silence → +iterate positioning/channels, benchmarks as the retry lever. diff --git a/docs/launch/launch-copy.md b/docs/launch/launch-copy.md index 81561e5..7483ead 100644 --- a/docs/launch/launch-copy.md +++ b/docs/launch/launch-copy.md @@ -21,8 +21,9 @@ Show HN: Lean-memory – agent memory that's just a SQLite file I built lean-memory because I wanted my coding agent's memory to live on my machine, next to my code, instead of behind a cloud API. It's an embedded Python library: `pip install lean-memory`, and each namespace is one SQLite -file (vec0 for vectors, FTS5 for text). No server, no daemon, no mandatory -cloud key. You can open the file in any SQLite browser and read what's in it. +file (vec0 for vectors, FTS5 for text). No Docker, no server, no daemon, no +mandatory cloud key. You can open the file in any SQLite browser and read +what's in it. I didn't try to build another hosted memory layer — mem0 already does the universal, framework-everywhere version well, and I have no interest in @@ -44,11 +45,13 @@ deleted — the judgment calls get staged as *proposals* you approve the next morning, either in a web console or conversationally in Claude Code via a `/review-memory` command. Only exact-duplicate retirement and a strict eviction band auto-apply; everything else waits for you, and an unreviewed proposal -expires rather than silently applying. As far as I can tell, no other shipping -memory product stages agent-proposed changes for human approval — they all -apply-then-curate — so this is the one place I'm genuinely out ahead, and I'd -love to know if it holds up. The as-of history stays bit-identical across -maintenance, pinned by tests. +expires rather than silently applying. Most memory products apply changes +first and let you curate afterwards; a few tools now gate what an agent +*saves* behind approval, but I haven't found one that runs offline +maintenance over an embedded local store and stages every judgment call — +merges, summaries, evictions — as an approvable diff. If something already +does this end-to-end, I'd genuinely like to know. The as-of history stays +bit-identical across maintenance, pinned by tests. What's missing: I have no public benchmark scores yet, on purpose. Numbers in this space swing 25+ points under independent re-evaluation, so I'd rather ship @@ -74,7 +77,7 @@ Give Claude Code / Desktop persistent local memory via MCP in about 2 minutes I made a small MCP server that gives Claude Code and Claude Desktop memory that persists across sessions — and it all stays on your machine, one SQLite file -per namespace, nothing leaves the box. +per namespace, no Docker, no server, nothing leaves the box. Install and wire it into Claude Code: @@ -92,6 +95,11 @@ the relevant ones back in a later session. Because writes are ADD-only, when something changes the old fact is superseded rather than deleted, so it can also answer "what did I tell you, and when." +Compared to CLAUDE.md or Claude's built-in memory: this store isn't tied to +one client — the same SQLite file serves Claude Code, Claude Desktop, and any +other MCP client — and it's auditable in a way a context file isn't: open it +in any SQLite browser, or ask what it believed at any past point in time. + New in v0.2.0: sleep-time maintenance with a review queue. An offline job dedupes and summarizes stored memory between sessions, but the judgment calls are staged as *proposals* — nothing changes until you approve. You review them right inside @@ -99,9 +107,9 @@ Claude Code: a `/review-memory` command (plus four MCP tools — `memory_maintenance_run`, `memory_maintenance_status`, `memory_review_queue`, `memory_review_decide`) walks you through the queue grouped by entity, recording only the verdicts you give. Unreviewed proposals expire rather than auto-applying, -and as-of history stays intact. As far as I can tell, no other memory product -lets you approve agent-proposed changes before they land — everything else -applies first and lets you clean up after. +and as-of history stays intact. Most memory tools apply changes first and let +you clean up after; here, nothing the maintenance job judges — merges, +summaries, evictions — lands without your approval. It's local-only and Apache-2.0. Repo, plus the Claude Desktop config, here: https://github.com/Wuesteon/lean-memory @@ -126,8 +134,8 @@ Everything that touches a model runs locally: - Embeddings: Qwen3-Embedding-0.6B (dense), fused with BM25 via RRF - Rerank: Ettin-32M cross-encoder - Extraction: a 4-pass pipeline — rules → GLiNER2 NER → a calibrated router → - an optional local LLM typing tier (Ollama, e.g. qwen2.5:3b) for the ~15% of - candidates that escalate + an optional local LLM typing tier (Ollama, e.g. qwen2.5:3b) for the small + fraction of candidates that escalate The default `[mcp,models,extract]` install downloads about 2 GB of open, ungated weights. Honest about the tradeoffs: the optional `[llm]` Ollama tier @@ -143,17 +151,15 @@ your machine. Nothing is deleted — the safe band (exact-duplicate retirement, a strict eviction band) auto-applies; every judgment call is staged as a *proposal* you approve, in a web console or conversationally in Claude Code via `/review-memory`. Unreviewed proposals expire rather than auto-applying, and -the as-of spine stays bit-identical across a run (pinned by tests). As far as I -can tell, no other shipping memory product gates agent-proposed changes on human -approval before they land — they all apply-then-curate — so if you care about -keeping a human in the loop on what your agent remembers, that's the pitch. - -What I do have is a calibration writeup with real measured numbers — the -escalation rate on real conversational turns, the granularity sweep, and the -BET-2 three-gate revalidation. I'd genuinely welcome scrutiny of that -methodology: +the as-of spine stays bit-identical across a run (pinned by tests). Most memory +products apply-then-curate; this one stages every judgment call for approval +before it lands — if you care about keeping a human in the loop on what your +agent remembers, that's the pitch. -https://github.com/Wuesteon/lean-memory/blob/main/bench/results/calibration/README.md +The calibration methodology — how the extraction and escalation thresholds +were set, small-goldset caveats included — is documented in the repo +(`bench/results/calibration/README.md`) if you want to scrutinize how the +defaults were chosen. The offline test suite runs with no downloads and no network at all (every backend has a deterministic stub), CI is on Linux + macOS, Apache-2.0. Repo: @@ -161,16 +167,27 @@ https://github.com/Wuesteon/lean-memory --- -## 4. awesome-mcp-servers PR (one-liner) +## 4. awesome-mcp-servers PR (punkpeye/awesome-mcp-servers) + +Exact entry line, formatted to the list's conventions (owner/repo link, Glama +score badge, legend emoji: 🐍 Python, 🏠 local, 🍎🪟🐧 cross-platform). +Insert in **Knowledge & Memory**, alphabetically after `wnbhr/being`: + +> - [Wuesteon/lean-memory](https://github.com/Wuesteon/lean-memory) [![Wuesteon/lean-memory MCP server](https://glama.ai/mcp/servers/Wuesteon/lean-memory/badges/score.svg)](https://glama.ai/mcp/servers/Wuesteon/lean-memory) 🐍 🏠 🍎 🪟 🐧 - Embedded, local-first agent memory in a single SQLite file per namespace (vec0 + FTS5 hybrid retrieval). ADD-only history queryable as-of any past time; offline sleep-time maintenance stages dedupe/summarize/evict proposals a human reviews. No Docker, no server, no cloud key. `pip install 'lean-memory[mcp]'` -> [lean-memory](https://github.com/Wuesteon/lean-memory) - Embedded, local-first agent memory in a single SQLite file per namespace (vec0 + FTS5 hybrid retrieval). ADD-only history queryable as-of any past time; offline "sleep-time" maintenance stages dedupe/summarize/evict proposals a human reviews. No server, no cloud key. +Status: [PR #9890](https://github.com/punkpeye/awesome-mcp-servers/pull/9890) +is already open (2026-07-12, 🤖🤖🤖 fast-track) with an earlier entry wording, +in review — Glama quality score is live (83%), waiting on the maintainer. The +line above is the refreshed wording; push it to the fork branch +`add-lean-memory` only if refreshing the in-review PR is worth the churn. --- ## 5. MCP registry description (server.json / listing blurb) Local-first agent memory that's just a SQLite file. Each namespace is one -file on your machine — no server, no daemon, no cloud key; runs fully offline +file on your machine — no Docker, no server, no daemon, no cloud key; runs +fully offline out of the box (real local models are an opt-in extra). Writes are ADD-only: updated facts are superseded, never overwritten, so you can query what your agent believed at any past point in time. An offline sleep-time maintenance diff --git a/docs/superpowers/workpackets.md b/docs/superpowers/workpackets.md index 40e4a4f..e3c591c 100644 --- a/docs/superpowers/workpackets.md +++ b/docs/superpowers/workpackets.md @@ -30,8 +30,8 @@ on the same files). | Packet | Branch | Lane | Blocked by | Gate | Status | |---|---|---|---|---|---| -| WP0 Launch quality gate | `launch-gate` | C | — | — | **in flight** (LG tasks 2,3,4,7,8,9 done; 1,5,6,10,11 open) | -| WP1 Launch execution | `wp1-launch` | C | WP0 | spec §3 | open | +| WP0 Launch quality gate | `launch-gate` | C | — | — | **COMPLETE** (2026-07-12: all tasks done, merged to `main` b4acb29; v0.1.3 readiness-board fixes; see section) | +| WP1 Launch execution | `wp1-launch` | C | WP0 | spec §3 | **claimed** (2026-07-21: worktree `wp1-launch`; registry listing + v0.2.0 tag/CHANGELOG already live) | | WP2 Update-integrity bench | `wp2-update-integrity` | B | — | none — start anytime | open | | WP3 Phase 2 runs + publication | `wp3-phase2-benchmarks` | B | WP0 | six-week read (spec §4) or "silence → retry lever" | open | | WP4 Read-surface API | `wp4-read-api` | A | WP0 | six-week read ("no new engine work between launch and the read") | open | @@ -81,7 +81,7 @@ packet early is a conscious strategy change — record it here if taken. --- -## WP0 — Launch quality gate (in flight) +## WP0 — Launch quality gate (complete) **Branch:** `launch-gate` (this is the existing plan, not a new worktree). **Plan:** `docs/superpowers/plans/2026-07-08-launch-quality-gate.md`. diff --git a/plugin/.claude-plugin/plugin.json b/plugin/.claude-plugin/plugin.json index eddad36..63e3f56 100644 --- a/plugin/.claude-plugin/plugin.json +++ b/plugin/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "lean-memory", - "version": "0.2.0", + "version": "0.2.1", "description": "Local-first agent memory for Claude Code: an observing MCP that stores and searches memories, plus a read-only console to verify the supersession spine, score breakdown, and provenance episodes.", "author": { "name": "lean-memory", diff --git a/pyproject.toml b/pyproject.toml index 51112b7..3e670f7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "lean-memory" -version = "0.2.0" +version = "0.2.1" description = "Embedded, local-first agent memory with hybrid retrieval and ADD-only supersession." readme = "README.md" requires-python = ">=3.10" @@ -81,6 +81,9 @@ lean-memory-maintain = "lean_memory.maintain.cli:main" [project.urls] Homepage = "https://github.com/Wuesteon/lean-memory" Repository = "https://github.com/Wuesteon/lean-memory" +Documentation = "https://github.com/Wuesteon/lean-memory/blob/main/ARCHITECTURE.md" +Changelog = "https://github.com/Wuesteon/lean-memory/blob/main/CHANGELOG.md" +Issues = "https://github.com/Wuesteon/lean-memory/issues" [build-system] requires = ["hatchling"] diff --git a/server.json b/server.json index 377a5d3..22d2836 100644 --- a/server.json +++ b/server.json @@ -7,13 +7,13 @@ "url": "https://github.com/Wuesteon/lean-memory", "source": "github" }, - "version": "0.2.0", + "version": "0.2.1", "packages": [ { "registryType": "pypi", "registryBaseUrl": "https://pypi.org", "identifier": "lean-memory", - "version": "0.2.0", + "version": "0.2.1", "runtimeHint": "uvx", "transport": { "type": "stdio" diff --git a/src/lean_memory/__init__.py b/src/lean_memory/__init__.py index 6f90c9e..6254b24 100644 --- a/src/lean_memory/__init__.py +++ b/src/lean_memory/__init__.py @@ -11,4 +11,4 @@ from .types import Entity, Episode, Fact, RetrievedFact __all__ = ["Memory", "Episode", "Entity", "Fact", "RetrievedFact"] -__version__ = "0.2.0" # keep in sync with pyproject.toml [project].version +__version__ = "0.2.1" # keep in sync with pyproject.toml [project].version