@aman_asmuei/amem 0.1.4 → 0.2.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/README.md +262 -67
- package/dist/cli.js +3 -18
- package/dist/cli.js.map +1 -1
- package/dist/embeddings.js.map +1 -1
- package/dist/index.js +34 -30
- package/dist/index.js.map +1 -1
- package/dist/schemas.d.ts +338 -0
- package/dist/schemas.js +106 -0
- package/dist/schemas.js.map +1 -0
- package/dist/tools.d.ts +3 -0
- package/dist/tools.js +647 -267
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -11,8 +11,9 @@ Your AI assistant forgets everything the moment a conversation ends.<br/>
|
|
|
11
11
|
[](LICENSE)
|
|
12
12
|
[](https://github.com/amanasmuei/amem/actions)
|
|
13
13
|
[](https://nodejs.org)
|
|
14
|
+
[](https://modelcontextprotocol.io)
|
|
14
15
|
|
|
15
|
-
[Get Started](
|
|
16
|
+
[Get Started](#get-started) · [How It Works](#how-it-works) · [Tools](#tools) · [Resources & Prompts](#resources--prompts) · [CLI](#cli) · [FAQ](#faq) · [Contributing](#contributing)
|
|
16
17
|
|
|
17
18
|
</div>
|
|
18
19
|
|
|
@@ -48,18 +49,18 @@ amem organizes memories into six types, ranked by importance:
|
|
|
48
49
|
|
|
49
50
|
| Priority | Type | What it captures | Example |
|
|
50
51
|
|:--------:|------|-----------------|---------|
|
|
51
|
-
|
|
|
52
|
-
|
|
|
53
|
-
|
|
|
54
|
-
|
|
|
55
|
-
|
|
|
56
|
-
|
|
|
52
|
+
| 1.0 | **Correction** | Mistakes to never repeat | *"Don't mock the database in integration tests"* |
|
|
53
|
+
| 0.85 | **Decision** | Architectural choices + why | *"Chose Postgres over MongoDB for ACID compliance"* |
|
|
54
|
+
| 0.7 | **Pattern** | Coding style & habits | *"Prefers early returns over nested conditionals"* |
|
|
55
|
+
| 0.7 | **Preference** | Tool & workflow choices | *"Uses pnpm, not npm"* |
|
|
56
|
+
| 0.5 | **Topology** | Where things are | *"Auth module lives in src/auth/, uses JWT"* |
|
|
57
|
+
| 0.4 | **Fact** | General project knowledge | *"API uses REST, launched January 2025"* |
|
|
57
58
|
|
|
58
59
|
Corrections always surface first. They're the "never do this" rules your AI should always follow.
|
|
59
60
|
|
|
60
61
|
---
|
|
61
62
|
|
|
62
|
-
##
|
|
63
|
+
## Get Started
|
|
63
64
|
|
|
64
65
|
### Step 1: Install
|
|
65
66
|
|
|
@@ -88,7 +89,7 @@ Add to `~/.claude/settings.json`:
|
|
|
88
89
|
}
|
|
89
90
|
```
|
|
90
91
|
|
|
91
|
-
Restart Claude Code. You'll see
|
|
92
|
+
Restart Claude Code. You'll see 8 memory tools, 4 resources, and 2 prompts available.
|
|
92
93
|
|
|
93
94
|
</details>
|
|
94
95
|
|
|
@@ -153,7 +154,7 @@ It knows.
|
|
|
153
154
|
|
|
154
155
|
---
|
|
155
156
|
|
|
156
|
-
##
|
|
157
|
+
## How It Works
|
|
157
158
|
|
|
158
159
|
```
|
|
159
160
|
┌──────────────────────────────────┐
|
|
@@ -161,10 +162,12 @@ It knows.
|
|
|
161
162
|
│ Claude · Cursor · Windsurf │
|
|
162
163
|
└──────────┬───────────────────────┘
|
|
163
164
|
│
|
|
164
|
-
MCP Protocol (
|
|
165
|
+
MCP Protocol (stdio)
|
|
165
166
|
│
|
|
166
167
|
┌──────────▼───────────────────────┐
|
|
167
|
-
│
|
|
168
|
+
│ amem-mcp-server │
|
|
169
|
+
│ │
|
|
170
|
+
│ 8 Tools · 4 Resources · 2 Prompts
|
|
168
171
|
│ │
|
|
169
172
|
│ Store → Score → Deduplicate │
|
|
170
173
|
│ Recall → Rank → Surface │
|
|
@@ -180,51 +183,59 @@ It knows.
|
|
|
180
183
|
|
|
181
184
|
### Smart ranking
|
|
182
185
|
|
|
183
|
-
Every memory gets a score:
|
|
186
|
+
Every memory gets a composite score:
|
|
184
187
|
|
|
185
188
|
```
|
|
186
189
|
score = relevance × recency × confidence × importance
|
|
187
190
|
```
|
|
188
191
|
|
|
189
|
-
- **Relevance** — How closely the memory matches what you're working on (
|
|
190
|
-
- **Recency** —
|
|
191
|
-
- **Confidence** — Memories confirmed multiple times score higher
|
|
192
|
-
- **Importance** — Corrections (1.0) > Decisions (0.85) > Patterns (0.7) > Facts (0.4)
|
|
192
|
+
- **Relevance** — How closely the memory matches what you're working on (cosine similarity via local embeddings, with keyword fallback)
|
|
193
|
+
- **Recency** — Exponential decay (0.995^hours) — recent memories score higher, old ones gradually fade
|
|
194
|
+
- **Confidence** — Memories confirmed multiple times score higher (0.0 to 1.0)
|
|
195
|
+
- **Importance** — Type-based weight: Corrections (1.0) > Decisions (0.85) > Patterns (0.7) > Facts (0.4)
|
|
193
196
|
|
|
194
197
|
### Conflict detection
|
|
195
198
|
|
|
196
199
|
Store a memory that contradicts an existing one? amem catches it:
|
|
197
200
|
|
|
198
|
-
- **>85% similar but different**
|
|
199
|
-
- **>80% similar and agreeing**
|
|
200
|
-
- **
|
|
201
|
+
- **>85% similar but different** — Flags the conflict, updates the existing memory's confidence
|
|
202
|
+
- **>80% similar and agreeing** — Reinforces the existing memory (+0.1 confidence)
|
|
203
|
+
- **60-80% related** — Touches related memories to keep them fresh
|
|
204
|
+
- **No match** — Stores as new
|
|
201
205
|
|
|
202
206
|
### Memory evolution
|
|
203
207
|
|
|
204
|
-
When you store a new memory, related existing memories get reinforced automatically
|
|
208
|
+
When you store a new memory, related existing memories (60-80% similarity) get reinforced automatically — their access timestamps update, keeping your knowledge base connected and current.
|
|
205
209
|
|
|
206
210
|
---
|
|
207
211
|
|
|
208
|
-
##
|
|
212
|
+
## Tools
|
|
213
|
+
|
|
214
|
+
amem gives your AI **8 tools** it can use during conversation. All tools include:
|
|
209
215
|
|
|
210
|
-
|
|
216
|
+
- **Strict input validation** with Zod schemas (invalid inputs are rejected with clear error messages)
|
|
217
|
+
- **Tool annotations** (`readOnlyHint`, `destructiveHint`, `idempotentHint`, `openWorldHint`) so clients understand tool behavior
|
|
218
|
+
- **Structured error handling** — errors return `isError: true` with actionable suggestions
|
|
211
219
|
|
|
212
220
|
### Core tools
|
|
213
221
|
|
|
214
|
-
| Tool | What it does |
|
|
215
|
-
|
|
216
|
-
| `memory_store` | Save a single memory with type, tags, and confidence |
|
|
217
|
-
| `memory_recall` | Search memories by meaning (
|
|
218
|
-
| `memory_context` | Load
|
|
219
|
-
| `memory_extract` | Batch-save multiple memories
|
|
220
|
-
| `memory_forget` | Delete outdated or incorrect memories |
|
|
222
|
+
| Tool | What it does | Annotations |
|
|
223
|
+
|------|-------------|-------------|
|
|
224
|
+
| `memory_store` | Save a single memory with type, tags, and confidence | write, non-destructive |
|
|
225
|
+
| `memory_recall` | Search memories by meaning (semantic + keyword fallback) | read-only, idempotent |
|
|
226
|
+
| `memory_context` | Load all relevant context for a topic, organized by type | read-only, idempotent |
|
|
227
|
+
| `memory_extract` | Batch-save multiple memories from a conversation | write, non-destructive |
|
|
228
|
+
| `memory_forget` | Delete outdated or incorrect memories (with confirmation) | write, destructive |
|
|
229
|
+
| `memory_inject` | Proactively inject corrections + decisions for a topic (use before coding) | read-only, idempotent |
|
|
221
230
|
|
|
222
231
|
### Utility tools
|
|
223
232
|
|
|
224
|
-
| Tool | What it does |
|
|
225
|
-
|
|
226
|
-
| `memory_stats` |
|
|
227
|
-
| `memory_export` | Export all memories as
|
|
233
|
+
| Tool | What it does | Annotations |
|
|
234
|
+
|------|-------------|-------------|
|
|
235
|
+
| `memory_stats` | Memory count, type breakdown, confidence distribution, embedding coverage | read-only, idempotent |
|
|
236
|
+
| `memory_export` | Export all memories as markdown (truncates at 50K chars) | read-only, idempotent |
|
|
237
|
+
|
|
238
|
+
All tools return both human-readable text (`content`) and machine-readable JSON (`structuredContent`) with validated `outputSchema`.
|
|
228
239
|
|
|
229
240
|
### Example: Storing a memory
|
|
230
241
|
|
|
@@ -237,6 +248,8 @@ memory_store({
|
|
|
237
248
|
})
|
|
238
249
|
```
|
|
239
250
|
|
|
251
|
+
> Stored correction memory (a1b2c3d4). Confidence: 1. Tags: [typescript, types]. Total memories: 42.
|
|
252
|
+
|
|
240
253
|
### Example: Recalling memories
|
|
241
254
|
|
|
242
255
|
```
|
|
@@ -244,17 +257,19 @@ memory_recall({ query: "TypeScript best practices", limit: 5 })
|
|
|
244
257
|
```
|
|
245
258
|
|
|
246
259
|
```
|
|
260
|
+
Found 2 memories for "TypeScript best practices":
|
|
261
|
+
|
|
247
262
|
1. [correction] Never use 'any' type — always define proper interfaces
|
|
248
|
-
Score: 0.892 | Confidence: 100% | Age: 2d ago
|
|
263
|
+
Score: 0.892 | Confidence: 100% | Age: 2d ago | Tags: [typescript, types]
|
|
249
264
|
|
|
250
265
|
2. [pattern] User prefers strict TypeScript with no implicit any
|
|
251
|
-
Score: 0.756 | Confidence: 85% | Age: 5d ago
|
|
266
|
+
Score: 0.756 | Confidence: 85% | Age: 5d ago | Tags: [typescript]
|
|
252
267
|
```
|
|
253
268
|
|
|
254
269
|
### Example: Loading context for a task
|
|
255
270
|
|
|
256
271
|
```
|
|
257
|
-
memory_context({ topic: "authentication system" })
|
|
272
|
+
memory_context({ topic: "authentication system", max_tokens: 2000 })
|
|
258
273
|
```
|
|
259
274
|
|
|
260
275
|
```markdown
|
|
@@ -277,43 +292,79 @@ Your AI can extract multiple memories from a single conversation:
|
|
|
277
292
|
```
|
|
278
293
|
memory_extract({
|
|
279
294
|
memories: [
|
|
280
|
-
{ content: "Don't mock the DB in integration tests", type: "correction", confidence: 1.0 },
|
|
281
|
-
{ content: "Chose event sourcing for audit trail", type: "decision", confidence: 0.9 }
|
|
295
|
+
{ content: "Don't mock the DB in integration tests", type: "correction", tags: ["testing"], confidence: 1.0 },
|
|
296
|
+
{ content: "Chose event sourcing for audit trail", type: "decision", tags: ["architecture"], confidence: 0.9 }
|
|
282
297
|
]
|
|
283
298
|
})
|
|
284
299
|
```
|
|
285
300
|
|
|
286
|
-
|
|
301
|
+
```
|
|
302
|
+
Extraction complete: 2 stored, 0 reinforced.
|
|
303
|
+
Total memories: 44.
|
|
287
304
|
|
|
288
|
-
|
|
305
|
+
+ Stored [correction]: "Don't mock the DB in integration tests" (a1b2c3d4)
|
|
306
|
+
+ Stored [decision]: "Chose event sourcing for audit trail" (e5f6g7h8)
|
|
307
|
+
```
|
|
289
308
|
|
|
290
|
-
|
|
309
|
+
### Example: Forgetting memories
|
|
291
310
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
311
|
+
Delete by ID or by query (with a safety confirmation step):
|
|
312
|
+
|
|
313
|
+
```
|
|
314
|
+
memory_forget({ query: "old project", confirm: false })
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
```
|
|
318
|
+
Found 3 memories matching "old project". Preview:
|
|
319
|
+
1. [a1b2c3d4] Old project used Express.js
|
|
320
|
+
2. [e5f6g7h8] Old project had no tests
|
|
321
|
+
|
|
322
|
+
Call again with confirm=true to delete these.
|
|
299
323
|
```
|
|
300
324
|
|
|
301
325
|
---
|
|
302
326
|
|
|
303
|
-
##
|
|
327
|
+
## Resources & Prompts
|
|
328
|
+
|
|
329
|
+
### MCP Resources
|
|
304
330
|
|
|
305
|
-
amem exposes **4 resources** that AI clients can read proactively:
|
|
331
|
+
amem exposes **4 resources** that AI clients can read proactively at the start of a conversation:
|
|
306
332
|
|
|
307
|
-
| Resource | What it provides |
|
|
308
|
-
|
|
333
|
+
| Resource URI | What it provides |
|
|
334
|
+
|-------------|-----------------|
|
|
309
335
|
| `amem://corrections` | All active corrections — hard rules the AI should always follow |
|
|
310
336
|
| `amem://decisions` | Past architectural decisions and their rationale |
|
|
311
337
|
| `amem://profile` | Your preferences and coding patterns |
|
|
312
|
-
| `amem://summary` | Quick overview
|
|
338
|
+
| `amem://summary` | Quick overview: memory count and breakdown by type |
|
|
339
|
+
|
|
340
|
+
### MCP Prompts
|
|
341
|
+
|
|
342
|
+
amem provides **2 prompts** that teach AI clients how to use the memory system effectively:
|
|
343
|
+
|
|
344
|
+
| Prompt | Purpose |
|
|
345
|
+
|--------|---------|
|
|
346
|
+
| `extraction-guide` | Guidelines for *what* to extract from conversations — when to save corrections vs. decisions vs. facts, how often, and what to avoid |
|
|
347
|
+
| `session-start` | How to load relevant context at the beginning of a conversation — load topic context, apply corrections as hard constraints, reference memories naturally |
|
|
313
348
|
|
|
314
349
|
---
|
|
315
350
|
|
|
316
|
-
##
|
|
351
|
+
## CLI
|
|
352
|
+
|
|
353
|
+
amem includes a standalone command-line interface for managing memories directly:
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
amem-cli recall "authentication" # Search memories semantically
|
|
357
|
+
amem-cli stats # Show statistics with visual bars
|
|
358
|
+
amem-cli list # List all memories
|
|
359
|
+
amem-cli list --type correction # Filter by type
|
|
360
|
+
amem-cli export # Export to stdout as markdown
|
|
361
|
+
amem-cli export --file memories.md # Export to file
|
|
362
|
+
amem-cli forget abc12345 # Delete by ID (short IDs supported)
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
## Configuration
|
|
317
368
|
|
|
318
369
|
amem works out of the box with zero configuration. For advanced use:
|
|
319
370
|
|
|
@@ -322,9 +373,59 @@ amem works out of the box with zero configuration. For advanced use:
|
|
|
322
373
|
| `AMEM_DIR` | `~/.amem` | Where amem stores data |
|
|
323
374
|
| `AMEM_DB` | `~/.amem/memory.db` | Database file path |
|
|
324
375
|
|
|
376
|
+
Set `AMEM_DB` per-project for isolated memories:
|
|
377
|
+
|
|
378
|
+
```bash
|
|
379
|
+
AMEM_DB=./project-memories.db amem
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
---
|
|
383
|
+
|
|
384
|
+
## Technical Details
|
|
385
|
+
|
|
386
|
+
### Stack
|
|
387
|
+
|
|
388
|
+
| Layer | Technology |
|
|
389
|
+
|-------|------------|
|
|
390
|
+
| Protocol | [MCP](https://modelcontextprotocol.io/) SDK ^1.25 (modern `registerTool`/`registerResource`/`registerPrompt` APIs) |
|
|
391
|
+
| Language | TypeScript 5.6+ (strict mode, ES2022, zero `any` types) |
|
|
392
|
+
| Database | SQLite via better-sqlite3 (WAL mode, prepared statements, indexed) |
|
|
393
|
+
| Embeddings | HuggingFace Transformers — Xenova/all-MiniLM-L6-v2 (384-dim, local, optional) |
|
|
394
|
+
| Validation | Zod 3.25+ (`.strict()` on all schemas, `.min()` constraints, descriptive errors) |
|
|
395
|
+
| Testing | Vitest — 33 tests across 4 suites |
|
|
396
|
+
| CI/CD | GitHub Actions — Node 18/20/22 |
|
|
397
|
+
|
|
398
|
+
### MCP Best Practices
|
|
399
|
+
|
|
400
|
+
amem follows the [MCP best practices](https://modelcontextprotocol.io/) checklist:
|
|
401
|
+
|
|
402
|
+
- All 8 tools use `server.registerTool()` with `title`, `description`, `inputSchema`, `outputSchema`, and `annotations`
|
|
403
|
+
- All tool handlers wrapped in `try-catch` with `isError: true` on failures
|
|
404
|
+
- All Zod schemas use `.strict()` to reject unknown fields
|
|
405
|
+
- All error messages are actionable (suggest next steps)
|
|
406
|
+
- Server name follows convention: `amem-mcp-server`
|
|
407
|
+
- Transport: stdio (correct for local-first tool)
|
|
408
|
+
- Logging to stderr (not stdout)
|
|
409
|
+
- Graceful shutdown on SIGINT/SIGTERM
|
|
410
|
+
|
|
411
|
+
### Architecture
|
|
412
|
+
|
|
413
|
+
```
|
|
414
|
+
src/
|
|
415
|
+
├── index.ts Entry point — server, prompts, resources, transport
|
|
416
|
+
├── tools.ts 8 MCP tools with annotations, validation, structured output
|
|
417
|
+
├── schemas.ts Zod output schemas for structuredContent responses
|
|
418
|
+
├── memory.ts Scoring engine, conflict detection, recall algorithm
|
|
419
|
+
├── database.ts SQLite schema, prepared statements, CRUD interface
|
|
420
|
+
├── embeddings.ts Local embedding pipeline + cosine similarity
|
|
421
|
+
└── cli.ts Standalone CLI for direct memory management
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
**~1,300 lines of TypeScript.** Clean separation of concerns, no circular dependencies.
|
|
425
|
+
|
|
325
426
|
---
|
|
326
427
|
|
|
327
|
-
##
|
|
428
|
+
## FAQ
|
|
328
429
|
|
|
329
430
|
<details>
|
|
330
431
|
<summary><strong>Is my data sent to the cloud?</strong></summary>
|
|
@@ -336,7 +437,7 @@ No. Everything stays on your machine. amem uses a local SQLite database at `~/.a
|
|
|
336
437
|
<details>
|
|
337
438
|
<summary><strong>Does it work offline?</strong></summary>
|
|
338
439
|
|
|
339
|
-
Yes. After the first run (which downloads the embedding model), amem works completely offline.
|
|
440
|
+
Yes. After the first run (which downloads the embedding model), amem works completely offline. If the model isn't available, amem falls back to keyword matching — it never crashes.
|
|
340
441
|
|
|
341
442
|
</details>
|
|
342
443
|
|
|
@@ -350,53 +451,147 @@ Any tool that supports the [Model Context Protocol (MCP)](https://modelcontextpr
|
|
|
350
451
|
<details>
|
|
351
452
|
<summary><strong>How much memory/disk does it use?</strong></summary>
|
|
352
453
|
|
|
353
|
-
The embedding model is ~80MB (downloaded once). The SQLite database grows with your memories — typically a few MB even after months of use. CPU usage is minimal.
|
|
454
|
+
The embedding model is ~80MB (downloaded once, cached locally). The SQLite database grows with your memories — typically a few MB even after months of use. CPU usage is minimal; the server idles at near-zero when not processing requests.
|
|
354
455
|
|
|
355
456
|
</details>
|
|
356
457
|
|
|
357
458
|
<details>
|
|
358
459
|
<summary><strong>Can I see what's stored?</strong></summary>
|
|
359
460
|
|
|
360
|
-
Yes! Use `amem-cli list` to see all memories, `amem-cli stats` for
|
|
461
|
+
Yes! Use `amem-cli list` to see all memories, `amem-cli stats` for a visual overview, or `amem-cli export --file backup.md` to export everything as readable markdown. You can also ask your AI to call `memory_stats` or `memory_export`.
|
|
361
462
|
|
|
362
463
|
</details>
|
|
363
464
|
|
|
364
465
|
<details>
|
|
365
466
|
<summary><strong>Can I delete specific memories?</strong></summary>
|
|
366
467
|
|
|
367
|
-
Yes. Use `amem-cli forget <id>` or ask your AI to call `memory_forget`.
|
|
468
|
+
Yes. Use `amem-cli forget <id>` (short IDs work — just the first 8 characters) or ask your AI to call `memory_forget`. Query-based deletion requires a confirmation step to prevent accidents: `memory_forget({ query: "old project", confirm: true })`.
|
|
368
469
|
|
|
369
470
|
</details>
|
|
370
471
|
|
|
371
472
|
<details>
|
|
372
473
|
<summary><strong>Does it slow down my AI?</strong></summary>
|
|
373
474
|
|
|
374
|
-
No. Memory operations typically take under 50ms. Embedding generation for new memories takes ~200ms. The server runs as a lightweight background process.
|
|
475
|
+
No. Memory operations typically take under 50ms. Embedding generation for new memories takes ~200ms. The server runs as a lightweight background process over stdio.
|
|
375
476
|
|
|
376
477
|
</details>
|
|
377
478
|
|
|
378
479
|
<details>
|
|
379
480
|
<summary><strong>Can I use it across multiple projects?</strong></summary>
|
|
380
481
|
|
|
381
|
-
Yes. amem stores memories globally at `~/.amem/memory.db`
|
|
482
|
+
Yes. By default, amem stores memories globally at `~/.amem/memory.db` — all your AI conversations across all projects share the same memory. Set `AMEM_DB` per-project for isolated memories.
|
|
483
|
+
|
|
484
|
+
</details>
|
|
485
|
+
|
|
486
|
+
<details>
|
|
487
|
+
<summary><strong>What happens if the embedding model isn't available?</strong></summary>
|
|
488
|
+
|
|
489
|
+
amem gracefully falls back to keyword-based matching. Semantic search won't work, but storing, recalling (by keyword), and all other operations continue normally. The server never crashes due to missing embeddings.
|
|
490
|
+
|
|
491
|
+
</details>
|
|
492
|
+
|
|
493
|
+
<details>
|
|
494
|
+
<summary><strong>How does conflict detection work?</strong></summary>
|
|
495
|
+
|
|
496
|
+
When you store a new memory, amem computes cosine similarity against all existing memories. If a match exceeds 85% similarity but the content is different, it flags a conflict and updates the existing memory's confidence instead of creating a duplicate. You get a clear message explaining what happened and how to rephrase if the memories are genuinely different.
|
|
382
497
|
|
|
383
498
|
</details>
|
|
384
499
|
|
|
385
500
|
---
|
|
386
501
|
|
|
387
|
-
##
|
|
502
|
+
## Contributing
|
|
503
|
+
|
|
504
|
+
Contributions are welcome! Here's how to get involved.
|
|
505
|
+
|
|
506
|
+
### Development setup
|
|
507
|
+
|
|
508
|
+
```bash
|
|
509
|
+
git clone https://github.com/amanasmuei/amem.git
|
|
510
|
+
cd amem
|
|
511
|
+
npm install
|
|
512
|
+
npm run build
|
|
513
|
+
npm test
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
### Scripts
|
|
517
|
+
|
|
518
|
+
| Script | What it does |
|
|
519
|
+
|--------|-------------|
|
|
520
|
+
| `npm run build` | Compile TypeScript to `dist/` |
|
|
521
|
+
| `npm run dev` | Watch mode — recompile on save |
|
|
522
|
+
| `npm test` | Run all 33 tests with Vitest |
|
|
523
|
+
| `npm run test:watch` | Run tests in watch mode |
|
|
524
|
+
| `npm start` | Start the MCP server (`node dist/index.js`) |
|
|
525
|
+
|
|
526
|
+
### Project structure
|
|
527
|
+
|
|
528
|
+
```
|
|
529
|
+
amem/
|
|
530
|
+
├── src/
|
|
531
|
+
│ ├── index.ts # MCP server entry point, prompts, resources
|
|
532
|
+
│ ├── tools.ts # 7 tool definitions with validation & error handling
|
|
533
|
+
│ ├── memory.ts # Scoring engine, conflict detection, recall
|
|
534
|
+
│ ├── database.ts # SQLite schema, prepared statements, CRUD
|
|
535
|
+
│ ├── embeddings.ts # Local embedding pipeline + cosine similarity
|
|
536
|
+
│ └── cli.ts # Standalone CLI
|
|
537
|
+
├── tests/
|
|
538
|
+
│ ├── database.test.ts
|
|
539
|
+
│ ├── embeddings.test.ts
|
|
540
|
+
│ ├── memory.test.ts
|
|
541
|
+
│ └── tools.test.ts
|
|
542
|
+
├── .github/
|
|
543
|
+
│ └── workflows/
|
|
544
|
+
│ ├── ci.yml # Test on push/PR (Node 18/20/22)
|
|
545
|
+
│ └── publish.yml # Publish to npm on GitHub Release
|
|
546
|
+
├── package.json
|
|
547
|
+
├── tsconfig.json
|
|
548
|
+
└── vitest.config.ts
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
### Making changes
|
|
552
|
+
|
|
553
|
+
1. Fork the repository
|
|
554
|
+
2. Create a feature branch: `git checkout -b feature/your-feature`
|
|
555
|
+
3. Make your changes
|
|
556
|
+
4. Ensure the build is clean: `npm run build`
|
|
557
|
+
5. Ensure all tests pass: `npm test`
|
|
558
|
+
6. Commit and push your branch
|
|
559
|
+
7. Open a Pull Request against `main`
|
|
560
|
+
|
|
561
|
+
### CI/CD
|
|
562
|
+
|
|
563
|
+
**GitHub Actions** runs automatically on every push and pull request:
|
|
564
|
+
|
|
565
|
+
- **CI workflow** (`ci.yml`) — builds and tests against Node.js 18, 20, and 22 on Ubuntu
|
|
566
|
+
- **Publish workflow** (`publish.yml`) — triggered on GitHub Release, builds, tests, and publishes to npm with `--access public`
|
|
567
|
+
|
|
568
|
+
All PRs must pass the CI pipeline before merging.
|
|
569
|
+
|
|
570
|
+
### Reporting issues
|
|
571
|
+
|
|
572
|
+
Found a bug or have a feature idea?
|
|
573
|
+
|
|
574
|
+
- **Bug reports**: [Open an issue](https://github.com/amanasmuei/amem/issues/new) with steps to reproduce, expected vs. actual behavior, and your Node.js version
|
|
575
|
+
- **Feature requests**: [Open an issue](https://github.com/amanasmuei/amem/issues/new) describing the use case and how it would improve the memory system
|
|
576
|
+
- **Questions**: [Start a discussion](https://github.com/amanasmuei/amem/discussions) (or open an issue)
|
|
577
|
+
|
|
578
|
+
---
|
|
579
|
+
|
|
580
|
+
## Roadmap
|
|
388
581
|
|
|
389
|
-
- [x]
|
|
390
|
-
- [x] Semantic search with local embeddings
|
|
582
|
+
- [x] 8 MCP tools with full annotations, validation, and error handling
|
|
583
|
+
- [x] Semantic search with local embeddings (graceful fallback to keywords)
|
|
391
584
|
- [x] Smart conflict detection and deduplication
|
|
392
585
|
- [x] Memory evolution (related memories reinforce each other)
|
|
393
586
|
- [x] CLI for direct memory management
|
|
394
587
|
- [x] MCP prompts and resources for proactive context
|
|
395
588
|
- [x] Published on npm
|
|
589
|
+
- [x] `outputSchema` + `structuredContent` for machine-readable tool responses
|
|
590
|
+
- [x] Proactive context injection (`memory_inject` tool)
|
|
591
|
+
- [x] Evaluation suite (10 standardized eval questions)
|
|
396
592
|
- [ ] Memory verification against filesystem
|
|
397
593
|
- [ ] Knowledge graph with entity relationships
|
|
398
594
|
- [ ] Team memory (shared context across developers)
|
|
399
|
-
- [ ] Proactive mid-conversation context injection
|
|
400
595
|
|
|
401
596
|
---
|
|
402
597
|
|
|
@@ -404,7 +599,7 @@ Yes. amem stores memories globally at `~/.amem/memory.db` by default. All your A
|
|
|
404
599
|
|
|
405
600
|
**Built by [Aman Asmuei](https://github.com/amanasmuei)**
|
|
406
601
|
|
|
407
|
-
[
|
|
602
|
+
[GitHub](https://github.com/amanasmuei/amem) · [npm](https://www.npmjs.com/package/@aman_asmuei/amem) · [Report Bug](https://github.com/amanasmuei/amem/issues) · [Request Feature](https://github.com/amanasmuei/amem/issues)
|
|
408
603
|
|
|
409
604
|
MIT License
|
|
410
605
|
|
package/dist/cli.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { createDatabase } from "./database.js";
|
|
3
3
|
import { recallMemories, MemoryType } from "./memory.js";
|
|
4
4
|
import { generateEmbedding } from "./embeddings.js";
|
|
5
|
+
import { formatAge, TYPE_ORDER } from "./tools.js";
|
|
5
6
|
import path from "node:path";
|
|
6
7
|
import os from "node:os";
|
|
7
8
|
import fs from "node:fs";
|
|
@@ -121,8 +122,7 @@ function handleStats() {
|
|
|
121
122
|
return;
|
|
122
123
|
}
|
|
123
124
|
console.log(" By type:");
|
|
124
|
-
const
|
|
125
|
-
for (const t of typeOrder) {
|
|
125
|
+
for (const t of TYPE_ORDER) {
|
|
126
126
|
const count = stats.byType[t] || 0;
|
|
127
127
|
if (count > 0) {
|
|
128
128
|
const bar = "\u2588".repeat(Math.min(count, 40));
|
|
@@ -163,11 +163,10 @@ function handleExport(args) {
|
|
|
163
163
|
console.log("No memories to export.");
|
|
164
164
|
return;
|
|
165
165
|
}
|
|
166
|
-
const typeOrder = ["correction", "decision", "pattern", "preference", "topology", "fact"];
|
|
167
166
|
let md = `# Amem Memory Export\n\n`;
|
|
168
167
|
md += `*Exported: ${new Date().toISOString()}*\n`;
|
|
169
168
|
md += `*Total: ${all.length} memories*\n\n`;
|
|
170
|
-
for (const t of
|
|
169
|
+
for (const t of TYPE_ORDER) {
|
|
171
170
|
const memories = all.filter(m => m.type === t);
|
|
172
171
|
if (memories.length === 0)
|
|
173
172
|
continue;
|
|
@@ -235,18 +234,4 @@ function handleForget(args) {
|
|
|
235
234
|
db.deleteMemory(match.id);
|
|
236
235
|
console.log(`Deleted: "${match.content}" (${match.type})`);
|
|
237
236
|
}
|
|
238
|
-
function formatAge(timestamp) {
|
|
239
|
-
const ms = Date.now() - timestamp;
|
|
240
|
-
const minutes = Math.floor(ms / 60000);
|
|
241
|
-
if (minutes < 60)
|
|
242
|
-
return `${minutes}m ago`;
|
|
243
|
-
const hours = Math.floor(minutes / 60);
|
|
244
|
-
if (hours < 24)
|
|
245
|
-
return `${hours}h ago`;
|
|
246
|
-
const days = Math.floor(hours / 24);
|
|
247
|
-
if (days < 30)
|
|
248
|
-
return `${days}d ago`;
|
|
249
|
-
const months = Math.floor(days / 30);
|
|
250
|
-
return `${months}mo ago`;
|
|
251
|
-
}
|
|
252
237
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/embeddings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../src/embeddings.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAC,CAAe,EAAE,CAAe;IAC/D,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,OAAO,GAAG,GAAG,KAAK,CAAC;AACrB,CAAC;AAcD,MAAM,UAAU,QAAQ,CACtB,KAAmB,EACnB,UAAmC,EACnC,CAAS;IAET,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpC,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,UAAU,EAAE,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC;QAChD,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAC,CAAC,CAAC;IACJ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,CAAC;
|
|
1
|
+
{"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../src/embeddings.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAC,CAAe,EAAE,CAAe;IAC/D,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,OAAO,GAAG,GAAG,KAAK,CAAC;AACrB,CAAC;AAcD,MAAM,UAAU,QAAQ,CACtB,KAAmB,EACnB,UAAmC,EACnC,CAAS;IAET,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpC,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,UAAU,EAAE,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC;QAChD,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAC,CAAC,CAAC;IACJ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,CAAC;AAOD,IAAI,gBAAgB,GAA4B,IAAI,CAAC;AACrD,IAAI,eAAe,GAA4C,IAAI,CAAC;AAEpE,KAAK,UAAU,oBAAoB;IACjC,IAAI,gBAAgB;QAAE,OAAO,gBAAgB,CAAC;IAC9C,IAAI,eAAe;QAAE,OAAO,eAAe,CAAC;IAE5C,eAAe,GAAG,CAAC,KAAK,IAAI,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;YACtD,gBAAgB,GAAG,MAAM,GAAG,CAAC,QAAQ,CACnC,oBAAoB,EACpB,yBAAyB,CACK,CAAC;YACjC,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAY;IAEZ,MAAM,SAAS,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC/C,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,SAAS,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC/C,OAAO,SAAS,KAAK,IAAI,CAAC;AAC5B,CAAC"}
|