open-mem 0.10.0 → 0.11.0
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.
- package/CHANGELOG.md +13 -0
- package/README.md +56 -2
- package/dist/adapters/http/server.d.ts.map +1 -1
- package/dist/ai/prompts.d.ts +3 -2
- package/dist/ai/prompts.d.ts.map +1 -1
- package/dist/claude-code.js +40 -45
- package/dist/config.d.ts.map +1 -1
- package/dist/cursor.js +40 -45
- package/dist/daemon.js +37 -42
- package/dist/hooks/compaction.d.ts +5 -1
- package/dist/hooks/compaction.d.ts.map +1 -1
- package/dist/index.js +89 -90
- package/dist/maintenance.js +34 -34
- package/dist/mcp.js +44 -44
- package/dist/modes/loader.d.ts +7 -0
- package/dist/modes/loader.d.ts.map +1 -0
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,19 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.11.0] - 2026-02-08
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **Pluggable workflow modes** — JSON-based mode definitions that customize observation types, concept vocabulary, entity types, and AI prompt templates. Ships with `code` (default) and `research` modes. Configure via `OPEN_MEM_MODE` env var. New `/v1/workflow-modes` API endpoint.
|
|
12
|
+
- **Enhanced session compaction** — compaction hook now injects compressed recent observation narratives, facts, and key decisions with smart budget allocation (40% summaries/index, 40% observation details, 20% decisions). Graceful degradation when full observations unavailable.
|
|
13
|
+
- **VitePress documentation website** — 11-page docs site covering getting started, architecture, tools reference, search guide, configuration, platforms, privacy, API, troubleshooting, and changelog. Build with `bun run docs:build`.
|
|
14
|
+
- **Dashboard documentation** in README — "Web Dashboard" section describing all 6 pages (Timeline, Sessions, Search, Stats, Operations, Settings) with enable/access instructions.
|
|
15
|
+
- **"Why open-mem?" section** in README — competitive positioning highlighting native vector search, knowledge graph, 5 AI providers, revision lineage, and MIT license.
|
|
16
|
+
- **Feature highlights comparison table** in README — side-by-side comparison vs typical alternatives.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
- CI platform worker tests now use portable bun path and project root.
|
|
20
|
+
|
|
8
21
|
## [0.10.0] - 2026-02-08
|
|
9
22
|
|
|
10
23
|
### Added
|
package/README.md
CHANGED
|
@@ -75,6 +75,19 @@ export OPEN_MEM_MODEL=google/gemini-2.5-flash-lite
|
|
|
75
75
|
|
|
76
76
|
Without any provider configured, open-mem still works — it falls back to a basic metadata extractor that captures tool names, file paths, and output snippets.
|
|
77
77
|
|
|
78
|
+
## Why open-mem?
|
|
79
|
+
|
|
80
|
+
- **Native vector search** — sqlite-vec embedded directly in SQLite, no external vector database required
|
|
81
|
+
- **Knowledge graph** — automatic entity extraction with relationships, graph-augmented search via traversal
|
|
82
|
+
- **5 AI providers + fallback chain** — Google, Anthropic, AWS Bedrock, OpenAI, OpenRouter with automatic failover
|
|
83
|
+
- **Advanced search** — FTS5 full-text + vector similarity + Reciprocal Rank Fusion + graph traversal + reranking
|
|
84
|
+
- **Revision lineage** — immutable history with audit trail; revisions never overwrite, they supersede
|
|
85
|
+
- **User-level memory** — cross-project memories stored in a separate user-scoped database
|
|
86
|
+
- **Web dashboard** — 6-page management UI with real-time SSE streaming and config control plane
|
|
87
|
+
- **Multi-platform** — native adapters for OpenCode, Claude Code, and Cursor
|
|
88
|
+
- **MIT license** — enterprise-friendly, no AGPL restrictions
|
|
89
|
+
- **Well-tested** — 71 test files covering core logic, adapters, and integration scenarios
|
|
90
|
+
|
|
78
91
|
## Key Features
|
|
79
92
|
|
|
80
93
|
- 🧠 **Automatic observation capture** from tool executions and user prompts
|
|
@@ -84,8 +97,11 @@ Without any provider configured, open-mem still works — it falls back to a bas
|
|
|
84
97
|
- 🔒 **Privacy controls** with `<private>` tag support
|
|
85
98
|
- 🛠️ **Nine custom tools**: memory.find, memory.create, memory.history, memory.get, memory.transfer.export, memory.transfer.import, memory.revise, memory.remove, memory.help
|
|
86
99
|
- 🌐 **MCP server mode** — expose memory tools to any MCP-compatible AI client
|
|
100
|
+
- 🔗 **Knowledge graph** — entity extraction with relationships, graph-augmented search
|
|
101
|
+
- 🔄 **Multi-platform** — native adapters for OpenCode, Claude Code, and Cursor
|
|
87
102
|
- 🌳 **Git worktree support** — shared memory across all worktrees
|
|
88
103
|
- 📂 **AGENTS.md generation** — auto-generated folder-level context on session end
|
|
104
|
+
- 📊 **Web dashboard** — 6-page management UI with real-time streaming
|
|
89
105
|
- 📦 **Import/export** — portable JSON for backup and transfer between machines
|
|
90
106
|
- ⚡ **Zero-config setup** — works out of the box
|
|
91
107
|
- 📁 **All data stored locally** in your project directory
|
|
@@ -197,6 +213,29 @@ Configure via `OPEN_MEM_FOLDER_CONTEXT_MODE=single` or `OPEN_MEM_FOLDER_CONTEXT_
|
|
|
197
213
|
|
|
198
214
|
The context injector includes a "Memory Economics" footer showing how much context compression saves: read cost vs. original discovery cost, with a savings percentage. This helps you understand the value of AI compression at a glance.
|
|
199
215
|
|
|
216
|
+
## Web Dashboard
|
|
217
|
+
|
|
218
|
+
open-mem includes a built-in web dashboard for memory management and observability. It provides six pages:
|
|
219
|
+
|
|
220
|
+
| Page | Description |
|
|
221
|
+
|------|-------------|
|
|
222
|
+
| **Timeline** | Chronological view of all observations with type filtering |
|
|
223
|
+
| **Sessions** | Browse past coding sessions and their observations |
|
|
224
|
+
| **Search** | Full-text and semantic search across all memories |
|
|
225
|
+
| **Stats** | Database statistics, observation counts, and memory economics |
|
|
226
|
+
| **Operations** | Queue status, maintenance actions, folder context management |
|
|
227
|
+
| **Settings** | Config control plane with live preview, mode presets, and audit log |
|
|
228
|
+
|
|
229
|
+
### Enable the Dashboard
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
export OPEN_MEM_DASHBOARD=true
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
Access at `http://localhost:3737` (configurable via `OPEN_MEM_DASHBOARD_PORT`). The dashboard streams real-time updates via Server-Sent Events — new observations appear as they are captured.
|
|
236
|
+
|
|
237
|
+
The [Config Control Plane](#config-control-plane) is accessible through the Settings page, allowing you to preview, apply, and roll back configuration changes without restarting.
|
|
238
|
+
|
|
200
239
|
## Custom Tools
|
|
201
240
|
|
|
202
241
|
### memory.find
|
|
@@ -320,9 +359,9 @@ Lifecycle behavior:
|
|
|
320
359
|
- `notifications/initialized` is supported
|
|
321
360
|
- strict mode requires initialize before `tools/list`/`tools/call`
|
|
322
361
|
|
|
323
|
-
## Platform
|
|
362
|
+
## Platform Adapters (Claude Code / Cursor)
|
|
324
363
|
|
|
325
|
-
open-mem
|
|
364
|
+
open-mem works beyond OpenCode. Dedicated adapter workers bring the same memory capabilities to Claude Code and Cursor, ingesting JSON events over stdin:
|
|
326
365
|
|
|
327
366
|
```bash
|
|
328
367
|
# Claude Code adapter worker
|
|
@@ -423,6 +462,8 @@ open-mem works out of the box with zero configuration. All settings can be custo
|
|
|
423
462
|
| `OPEN_MEM_MCP_COMPAT_MODE` | `strict` | MCP mode: `strict` or `legacy` |
|
|
424
463
|
| `OPEN_MEM_MCP_PROTOCOL_VERSION` | `2024-11-05` | Preferred MCP protocol version |
|
|
425
464
|
| `OPEN_MEM_MCP_SUPPORTED_PROTOCOLS` | `2024-11-05` | Comma-separated supported protocol versions |
|
|
465
|
+
| `OPEN_MEM_DASHBOARD` | `false` | Set to `true` to enable the web dashboard |
|
|
466
|
+
| `OPEN_MEM_DASHBOARD_PORT` | `3737` | Dashboard HTTP port |
|
|
426
467
|
|
|
427
468
|
<details>
|
|
428
469
|
<summary><strong>Programmatic Configuration Reference</strong></summary>
|
|
@@ -556,6 +597,19 @@ export OPEN_MEM_MAX_CONTEXT_TOKENS=2000
|
|
|
556
597
|
- [Getting Started](docs/getting-started.md) — installation, configuration, and first steps
|
|
557
598
|
- [Architecture](docs/architecture.md) — internal design, data flow, and source layout
|
|
558
599
|
|
|
600
|
+
## Feature Highlights
|
|
601
|
+
|
|
602
|
+
| Feature | open-mem | Typical alternatives |
|
|
603
|
+
|---------|----------|---------------------|
|
|
604
|
+
| Vector search | Native (sqlite-vec) | External service (Chroma) |
|
|
605
|
+
| AI providers | 5 with fallback chain | 1–3 |
|
|
606
|
+
| Search | FTS5 + Vector + RRF + Graph | FTS5 only |
|
|
607
|
+
| Knowledge graph | Entities + relationships | No |
|
|
608
|
+
| Revision history | Immutable lineage | No |
|
|
609
|
+
| Dashboard | 6-page web UI with SSE | No |
|
|
610
|
+
| License | MIT | AGPL / proprietary |
|
|
611
|
+
| Data locality | Project-local `.open-mem/` | Global |
|
|
612
|
+
|
|
559
613
|
## Contributing
|
|
560
614
|
|
|
561
615
|
See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, code style, and submission guidelines.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/adapters/http/server.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAS5B,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/adapters/http/server.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,IAAI,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAS5B,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAEhF,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,aAAa,CAAC;AAElE,MAAM,WAAW,aAAa;IAC7B,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,YAAY,EAAE,YAAY,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,qBAAqB,CAAC;IACpD,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAoCD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAkf5D"}
|
package/dist/ai/prompts.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import type { ModeConfig } from "../types";
|
|
1
2
|
/**
|
|
2
3
|
* Build a prompt that instructs the AI to compress raw tool output into a
|
|
3
4
|
* structured observation (type, title, facts, narrative, concepts, files).
|
|
4
5
|
*/
|
|
5
|
-
export declare function buildCompressionPrompt(toolName: string, toolOutput: string, sessionContext?: string): string;
|
|
6
|
+
export declare function buildCompressionPrompt(toolName: string, toolOutput: string, sessionContext?: string, modeConfig?: ModeConfig): string;
|
|
6
7
|
/**
|
|
7
8
|
* Build a prompt that instructs the AI to produce a session summary from
|
|
8
9
|
* a list of observations.
|
|
@@ -46,7 +47,7 @@ export interface EntityExtractionObservation {
|
|
|
46
47
|
* Build a prompt that instructs the AI to extract entities and relationships
|
|
47
48
|
* from an observation.
|
|
48
49
|
*/
|
|
49
|
-
export declare function buildEntityExtractionPrompt(obs: EntityExtractionObservation): string;
|
|
50
|
+
export declare function buildEntityExtractionPrompt(obs: EntityExtractionObservation, modeConfig?: ModeConfig): string;
|
|
50
51
|
/**
|
|
51
52
|
* Build a prompt that instructs the AI to reorder search result candidates
|
|
52
53
|
* by relevance to the query.
|
package/dist/ai/prompts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/ai/prompts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/ai/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAM3C;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,EACvB,UAAU,CAAC,EAAE,UAAU,GACrB,MAAM,CAoFR;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACvC,YAAY,EAAE,aAAa,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CAClB,CAAC,EACF,SAAS,EAAE,MAAM,GACf,MAAM,CAwCR;AAMD,gEAAgE;AAChE,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACb;AAED,yDAAyD;AACzD,MAAM,WAAW,sBAAsB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC5C,MAAM,EAAE,sBAAsB,EAC9B,UAAU,EAAE,aAAa,CAAC,iBAAiB,CAAC,GAC1C,MAAM,CAqCR;AAUD,4DAA4D;AAC5D,MAAM,WAAW,2BAA2B;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAC1C,GAAG,EAAE,2BAA2B,EAChC,UAAU,CAAC,EAAE,UAAU,GACrB,MAAM,CAuCR;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,CACnC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,aAAa,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,GAC7D,MAAM,CAuBR"}
|