somtum 1.3.4 → 1.5.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 +172 -78
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +12 -3
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/forget.d.ts +7 -0
- package/dist/cli/forget.d.ts.map +1 -1
- package/dist/cli/forget.js +44 -0
- package/dist/cli/forget.js.map +1 -1
- package/dist/cli/hook.d.ts.map +1 -1
- package/dist/cli/hook.js +14 -2
- package/dist/cli/hook.js.map +1 -1
- package/dist/cli/index.js +49 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +7 -1
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/list.d.ts +9 -0
- package/dist/cli/list.d.ts.map +1 -0
- package/dist/cli/list.js +54 -0
- package/dist/cli/list.js.map +1 -0
- package/dist/cli/reset.d.ts +7 -0
- package/dist/cli/reset.d.ts.map +1 -0
- package/dist/cli/reset.js +66 -0
- package/dist/cli/reset.js.map +1 -0
- package/dist/cli/suggest_claude_md.d.ts +9 -0
- package/dist/cli/suggest_claude_md.d.ts.map +1 -0
- package/dist/cli/suggest_claude_md.js +106 -0
- package/dist/cli/suggest_claude_md.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +19 -7
- package/dist/config.js.map +1 -1
- package/dist/core/schema.d.ts +51 -0
- package/dist/core/schema.d.ts.map +1 -1
- package/dist/core/schema.js +18 -0
- package/dist/core/schema.js.map +1 -1
- package/dist/core/store.d.ts +8 -1
- package/dist/core/store.d.ts.map +1 -1
- package/dist/core/store.js +61 -6
- package/dist/core/store.js.map +1 -1
- package/dist/dashboard/index.html +49 -6
- package/dist/db/migrations/004_scope_and_staleness.sql +11 -0
- package/dist/hooks/post_session.d.ts.map +1 -1
- package/dist/hooks/post_session.js +50 -2
- package/dist/hooks/post_session.js.map +1 -1
- package/dist/hooks/pre_prompt.d.ts.map +1 -1
- package/dist/hooks/pre_prompt.js +231 -48
- package/dist/hooks/pre_prompt.js.map +1 -1
- package/dist/hooks/pre_read.d.ts.map +1 -1
- package/dist/hooks/pre_read.js +7 -1
- package/dist/hooks/pre_read.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +35 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts +33 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +68 -3
- package/dist/mcp/tools.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -33,6 +33,10 @@ Zero-config: one `somtum init` and every session end is captured automatically.
|
|
|
33
33
|
- [Troubleshooting](#troubleshooting)
|
|
34
34
|
- [License](#license)
|
|
35
35
|
|
|
36
|
+
> **v1.4.0** — `somtum list`, `somtum reset`, `somtum forget --all` · embeddings timeout safety · config crash-resilience · injection.max_chars wired up · warm-start race fix · auth-error hints
|
|
37
|
+
>
|
|
38
|
+
> **v1.3.0** — Auto-inject memories on every prompt · `update` MCP tool · warm-start after compaction · false-hit detection · workspace scope · `suggest-claude-md` · stale memory detection in `doctor`
|
|
39
|
+
|
|
36
40
|
---
|
|
37
41
|
|
|
38
42
|
## Why Somtum?
|
|
@@ -63,7 +67,7 @@ Session 2: Claude suggests Session 2: Claude already knows about
|
|
|
63
67
|
|
|
64
68
|
## How it works
|
|
65
69
|
|
|
66
|
-
At the end of each Claude Code session, Somtum reads the session transcript and asks Claude Haiku to extract the parts worth keeping — decisions, bug fixes, things learned. Those observations are stored locally and
|
|
70
|
+
At the end of each Claude Code session, Somtum reads the session transcript and asks Claude Haiku to extract the parts worth keeping — decisions, bug fixes, things learned. Those observations are stored locally in SQLite. **On every subsequent prompt**, Somtum automatically retrieves the most relevant memories and injects them into context — no manual recall needed.
|
|
67
71
|
|
|
68
72
|
### Memory lifecycle
|
|
69
73
|
|
|
@@ -73,7 +77,7 @@ At the end of each Claude Code session, Somtum reads the session transcript and
|
|
|
73
77
|
│ │
|
|
74
78
|
│ you code · debug · review · make decisions │
|
|
75
79
|
└──────────────────────────────┬──────────────────────────────┘
|
|
76
|
-
│ SessionEnd
|
|
80
|
+
│ SessionEnd / PreCompact
|
|
77
81
|
▼
|
|
78
82
|
┌─────────────────────────────────────────────────────────────┐
|
|
79
83
|
│ Capture Pipeline │
|
|
@@ -81,6 +85,8 @@ At the end of each Claude Code session, Somtum reads the session transcript and
|
|
|
81
85
|
│ session transcript ──► Haiku extracts observations │
|
|
82
86
|
│ │
|
|
83
87
|
│ decisions · bug fixes · learnings · commands │
|
|
88
|
+
│ │
|
|
89
|
+
│ PreCompact ─── writes warm-start file ──► next session │
|
|
84
90
|
└──────────────────────────────┬──────────────────────────────┘
|
|
85
91
|
│ persisted locally
|
|
86
92
|
▼
|
|
@@ -92,14 +98,16 @@ At the end of each Claude Code session, Somtum reads the session transcript and
|
|
|
92
98
|
│ index.md │
|
|
93
99
|
│ memories/YYYY-MM/ │
|
|
94
100
|
└────────────┬────────────┘
|
|
95
|
-
│
|
|
101
|
+
│ every prompt (UserPromptSubmit)
|
|
96
102
|
▼
|
|
97
103
|
┌─────────────────────────────────────────────────────────────┐
|
|
98
|
-
│
|
|
104
|
+
│ Auto-Inject Pipeline (new) │
|
|
99
105
|
│ │
|
|
100
|
-
│
|
|
106
|
+
│ 1. Prompt cache lookup (exact + fuzzy match) │
|
|
107
|
+
│ 2. BM25 recall — top-k relevant memories │
|
|
108
|
+
│ 3. Warm-start context (if session just compacted) │
|
|
101
109
|
│ │
|
|
102
|
-
│ injected
|
|
110
|
+
│ all injected as additionalContext automatically │
|
|
103
111
|
└─────────────────────────────────────────────────────────────┘
|
|
104
112
|
```
|
|
105
113
|
|
|
@@ -134,37 +142,42 @@ Next session, when you ask "why are we using pnpm?" or touch `src/auth/refresh.t
|
|
|
134
142
|
└──────────┬──────────────────────────────┬───────────────────┘
|
|
135
143
|
│ hooks │ MCP tools
|
|
136
144
|
▼ ▼
|
|
137
|
-
┌─────────────────────┐
|
|
138
|
-
│
|
|
139
|
-
│ │ │
|
|
140
|
-
│ UserPromptSubmit
|
|
141
|
-
│
|
|
142
|
-
│
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
145
|
+
┌─────────────────────┐ ┌──────────────────────────┐
|
|
146
|
+
│ Hooks │ │ MCP Tools │
|
|
147
|
+
│ │ │ │
|
|
148
|
+
│ UserPromptSubmit ──┼─cache──▶│ cache_lookup │
|
|
149
|
+
│ ──┼─inject─▶│ recall / get │
|
|
150
|
+
│ SessionEnd ────────┼─capture▶│ remember / update │
|
|
151
|
+
│ PreCompact ────────┼─warmst─▶│ forget │
|
|
152
|
+
│ PreToolUse (Read) ─┼─gate───▶│ stats │
|
|
153
|
+
│ │ │ report_false_hit │
|
|
154
|
+
└──────────┬──────────┘ └────────────┬─────────────┘
|
|
155
|
+
│ │
|
|
156
|
+
▼ ▼
|
|
146
157
|
┌─────────────────────────────────────────────────────────────┐
|
|
147
158
|
│ Core (TypeScript) │
|
|
148
159
|
│ │
|
|
149
|
-
│ ┌──────────────┐
|
|
150
|
-
│ │ PromptCache │ │
|
|
151
|
-
│ │ │ │
|
|
152
|
-
│ │ exact hash │ │ observations
|
|
153
|
-
│ │ fuzzy embed │ │
|
|
154
|
-
│ │ fingerprint │ │
|
|
155
|
-
│ │
|
|
156
|
-
│ └──────────────┘
|
|
160
|
+
│ ┌──────────────┐ ┌─────────────────┐ ┌───────────────┐ │
|
|
161
|
+
│ │ PromptCache │ │ MemoryStore │ │ Retriever │ │
|
|
162
|
+
│ │ │ │ │ │ │ │
|
|
163
|
+
│ │ exact hash │ │ observations │ │ bm25(default) │ │
|
|
164
|
+
│ │ fuzzy embed │ │ scope: project │ │ embeddings │ │
|
|
165
|
+
│ │ fingerprint │ │ global │ │ index │ │
|
|
166
|
+
│ │ false_hits │ │ workspace │ │ hybrid │ │
|
|
167
|
+
│ └──────────────┘ │ last_confirmed │ └───────────────┘ │
|
|
168
|
+
│ └─────────────────┘ │
|
|
157
169
|
└─────────────────────────────────┬───────────────────────────┘
|
|
158
170
|
│
|
|
159
171
|
▼
|
|
160
|
-
|
|
161
|
-
│ SQLite WAL + ~/.somtum/
|
|
162
|
-
│ /projects/<hash>/
|
|
163
|
-
│ db.sqlite
|
|
164
|
-
│ index.md
|
|
165
|
-
│ memories/YYYY-MM
|
|
166
|
-
│
|
|
167
|
-
|
|
172
|
+
┌─────────────────────────────┐
|
|
173
|
+
│ SQLite WAL + ~/.somtum/ │
|
|
174
|
+
│ /projects/<hash>/ │
|
|
175
|
+
│ db.sqlite │
|
|
176
|
+
│ index.md │
|
|
177
|
+
│ memories/YYYY-MM/<ulid>.md│
|
|
178
|
+
│ /session/lh_<id>.json │
|
|
179
|
+
│ /warmstart/ws_<id>.json │
|
|
180
|
+
└─────────────────────────────┘
|
|
168
181
|
```
|
|
169
182
|
|
|
170
183
|
### Retrieval strategies
|
|
@@ -367,26 +380,34 @@ Press `Ctrl-C` to stop.
|
|
|
367
380
|
|
|
368
381
|
| Command | Description |
|
|
369
382
|
| --------------------------- | ------------------------------------------------------------ |
|
|
370
|
-
| `somtum init` | Install the SessionEnd capture hook
|
|
371
|
-
| `somtum init --cache` | Also install the UserPromptSubmit cache hook
|
|
372
|
-
| `somtum init --file-gating` | Also install the PreToolUse file-gating hook
|
|
373
|
-
| `somtum init --all` | Install all hooks + MCP server
|
|
374
|
-
| `somtum init --force` | Reinstall even if hooks already present
|
|
375
|
-
| `somtum doctor` | Check DB health, migrations, hooks, API key, breakeven ratio |
|
|
383
|
+
| `somtum init` | Install the SessionEnd capture hook |
|
|
384
|
+
| `somtum init --cache` | Also install the UserPromptSubmit cache + auto-inject hook |
|
|
385
|
+
| `somtum init --file-gating` | Also install the PreToolUse file-gating hook |
|
|
386
|
+
| `somtum init --all` | Install all hooks + MCP server |
|
|
387
|
+
| `somtum init --force` | Reinstall even if hooks already present |
|
|
388
|
+
| `somtum doctor` | Check DB health, migrations, hooks, API key, breakeven ratio, stale memories |
|
|
376
389
|
|
|
377
390
|
### Memory
|
|
378
391
|
|
|
379
|
-
| Command
|
|
380
|
-
|
|
|
381
|
-
| `somtum
|
|
382
|
-
| `somtum
|
|
383
|
-
| `somtum
|
|
384
|
-
| `somtum
|
|
385
|
-
| `somtum
|
|
386
|
-
| `somtum
|
|
387
|
-
| `somtum
|
|
388
|
-
| `somtum
|
|
389
|
-
| `somtum
|
|
392
|
+
| Command | Description |
|
|
393
|
+
| -------------------------------------------- | ----------------------------------------------------------------------------- |
|
|
394
|
+
| `somtum list` | List stored memories (most recent first) |
|
|
395
|
+
| `somtum list --kind decision` | Filter by kind: `decision \| learning \| bugfix \| command \| file_summary` |
|
|
396
|
+
| `somtum list --limit 20` | Limit to 20 results |
|
|
397
|
+
| `somtum list --json` | Machine-readable JSON output |
|
|
398
|
+
| `somtum search <query>` | Search observations (default: `bm25` strategy) |
|
|
399
|
+
| `somtum search <query> --strategy hybrid` | Force a specific retrieval strategy |
|
|
400
|
+
| `somtum search <query> -k 16` | Return more results |
|
|
401
|
+
| `somtum show <id>` | Print the full body of an observation |
|
|
402
|
+
| `somtum remember` | Manually store an observation |
|
|
403
|
+
| `somtum forget <id>` | Soft-delete an observation by id |
|
|
404
|
+
| `somtum forget --all` | Soft-delete **all** observations in the current project |
|
|
405
|
+
| `somtum edit <id>` | Open an observation body in `$EDITOR` |
|
|
406
|
+
| `somtum rebuild` | Regenerate `index.md` from all observations |
|
|
407
|
+
| `somtum reindex` | Recompute embeddings (after enabling embeddings or changing model) |
|
|
408
|
+
| `somtum suggest-claude-md` | Suggest CLAUDE.md additions from accumulated observations (interactive) |
|
|
409
|
+
| `somtum suggest-claude-md --dry-run` | Preview suggestions without writing |
|
|
410
|
+
| `somtum suggest-claude-md --yes --limit 20` | Auto-confirm, limit to top 20 by tokens saved |
|
|
390
411
|
|
|
391
412
|
### Stats & Visibility
|
|
392
413
|
|
|
@@ -400,15 +421,17 @@ Press `Ctrl-C` to stop.
|
|
|
400
421
|
|
|
401
422
|
### Data Management
|
|
402
423
|
|
|
403
|
-
| Command | Description
|
|
404
|
-
| ------------------------------------------------- |
|
|
405
|
-
| `somtum export` | Export observations to stdout as JSON
|
|
406
|
-
| `somtum export --format jsonl --output obs.jsonl` | Export as JSONL file
|
|
407
|
-
| `somtum export --format markdown` | Export as readable Markdown
|
|
408
|
-
| `somtum export --include-deleted` | Include soft-deleted entries
|
|
409
|
-
| `somtum import <file>` | Import observations from JSON or JSONL
|
|
410
|
-
| `somtum purge --older-than 30d` | Hard-delete soft-deleted entries older than 30 days
|
|
411
|
-
| `somtum purge --older-than 30d --dry-run` | Preview without deleting
|
|
424
|
+
| Command | Description |
|
|
425
|
+
| ------------------------------------------------- | ------------------------------------------------------------------------- |
|
|
426
|
+
| `somtum export` | Export observations to stdout as JSON |
|
|
427
|
+
| `somtum export --format jsonl --output obs.jsonl` | Export as JSONL file |
|
|
428
|
+
| `somtum export --format markdown` | Export as readable Markdown |
|
|
429
|
+
| `somtum export --include-deleted` | Include soft-deleted entries |
|
|
430
|
+
| `somtum import <file>` | Import observations from JSON or JSONL |
|
|
431
|
+
| `somtum purge --older-than 30d` | Hard-delete soft-deleted entries older than 30 days |
|
|
432
|
+
| `somtum purge --older-than 30d --dry-run` | Preview without deleting |
|
|
433
|
+
| `somtum reset` | **Permanently** wipe all memories for the current project (asks to confirm) |
|
|
434
|
+
| `somtum reset --yes` | Skip confirmation (useful in CI or scripts) |
|
|
412
435
|
|
|
413
436
|
### Configuration
|
|
414
437
|
|
|
@@ -437,32 +460,55 @@ Somtum uses hostname-aware syncing — merging observations from multiple machin
|
|
|
437
460
|
|
|
438
461
|
When you run `somtum init --all`, Somtum registers an MCP server that Claude can call autonomously during a session:
|
|
439
462
|
|
|
440
|
-
| Tool
|
|
441
|
-
|
|
|
442
|
-
| `recall`
|
|
443
|
-
| `get`
|
|
444
|
-
| `remember`
|
|
445
|
-
| `
|
|
446
|
-
| `
|
|
447
|
-
| `
|
|
463
|
+
| Tool | What Claude does with it |
|
|
464
|
+
| ------------------- | ---------------------------------------------------------------------------------------------- |
|
|
465
|
+
| `recall` | Searches memories when unsure about a project detail. Accepts `strategy` and `scope` overrides |
|
|
466
|
+
| `get` | Retrieves full observation bodies by ID. Bumps `last_confirmed_at` on each hit |
|
|
467
|
+
| `remember` | Stores an observation manually. Accepts `scope: 'project' \| 'workspace' \| 'global'` |
|
|
468
|
+
| `update` | Updates an existing observation's title, body, tags, or files. Redaction applied |
|
|
469
|
+
| `cache_lookup` | Checks the prompt cache directly |
|
|
470
|
+
| `report_false_hit` | Reports that a cached response didn't answer the question (tunes fuzzy threshold data) |
|
|
471
|
+
| `forget` | Soft-deletes an observation |
|
|
472
|
+
| `stats` | Reports tokens saved, cache hit rate, false-hit count, and corpus size |
|
|
448
473
|
|
|
449
474
|
Every MCP response includes a `tokens` field so Claude can account for retrieval cost.
|
|
450
475
|
|
|
476
|
+
### Memory scope
|
|
477
|
+
|
|
478
|
+
Observations now carry a `scope` field:
|
|
479
|
+
|
|
480
|
+
| Scope | Meaning | Use it when |
|
|
481
|
+
| ----------- | --------------------------------------------------------------- | ---------------------------------------------------- |
|
|
482
|
+
| `project` | Default. Visible only in this project. | Most decisions, bugfixes, and learnings. |
|
|
483
|
+
| `workspace` | Shared across projects via the `recall` MCP tool. | Team conventions, preferred libraries, global rules. |
|
|
484
|
+
| `global` | Same as workspace; reserved for personal preferences that span all your projects. | Your personal coding preferences. |
|
|
485
|
+
|
|
486
|
+
```
|
|
487
|
+
# Store a workspace-scoped observation from within a session:
|
|
488
|
+
remember("Always use pnpm for Node projects", body="...", scope="workspace")
|
|
489
|
+
```
|
|
490
|
+
|
|
451
491
|
---
|
|
452
492
|
|
|
453
493
|
## Storage Layout
|
|
454
494
|
|
|
455
495
|
```
|
|
456
496
|
~/.somtum/
|
|
457
|
-
├── config.json
|
|
458
|
-
├── hook.log
|
|
497
|
+
├── config.json ← global config (merged with project config)
|
|
498
|
+
├── hook.log ← timestamped log of every hook execution
|
|
499
|
+
├── session/
|
|
500
|
+
│ └── lh_<id>.json ← last cache-hit state per project (false-hit detection)
|
|
501
|
+
│ files older than 24 h are evicted automatically
|
|
502
|
+
├── warmstart/
|
|
503
|
+
│ └── ws_<id>_<timestamp>.json ← warm-start context written after PreCompact (30 min TTL)
|
|
504
|
+
│ timestamped so concurrent windows don't clobber each other
|
|
459
505
|
└── projects/
|
|
460
506
|
└── <project_id>/
|
|
461
|
-
├── db.sqlite
|
|
462
|
-
├── index.md
|
|
507
|
+
├── db.sqlite ← source of truth (SQLite WAL)
|
|
508
|
+
├── index.md ← human-readable mirror (regenerated)
|
|
463
509
|
└── memories/
|
|
464
510
|
└── YYYY-MM/
|
|
465
|
-
└── <ulid>.md
|
|
511
|
+
└── <ulid>.md ← per-observation markdown files
|
|
466
512
|
```
|
|
467
513
|
|
|
468
514
|
The project ID is derived from the git remote URL (or directory path if no remote). The same project maps to the same ID across machines as long as the remote URL matches.
|
|
@@ -494,6 +540,11 @@ somtum config set file_gating.enabled true
|
|
|
494
540
|
|
|
495
541
|
# Limit observations extracted per session (default: 10)
|
|
496
542
|
somtum config set extraction.max_observations_per_session 5
|
|
543
|
+
|
|
544
|
+
# Control automatic memory injection on every prompt (default: on)
|
|
545
|
+
somtum config set injection.enabled false # turn off auto-inject
|
|
546
|
+
somtum config set injection.k 8 # inject more memories (default: 5)
|
|
547
|
+
somtum config set injection.max_chars 5000 # raise injection size cap (default: 3000)
|
|
497
548
|
```
|
|
498
549
|
|
|
499
550
|
### Full config reference
|
|
@@ -508,7 +559,7 @@ somtum config set extraction.max_observations_per_session 5
|
|
|
508
559
|
"cache": {
|
|
509
560
|
"enabled": true,
|
|
510
561
|
"fuzzy_match": true,
|
|
511
|
-
"fuzzy_threshold": 0.92, // raise to 0.95 once you have signal
|
|
562
|
+
"fuzzy_threshold": 0.92, // raise to 0.95 once you have false-hit signal
|
|
512
563
|
"max_entries": 10000,
|
|
513
564
|
"ttl_days": 90,
|
|
514
565
|
},
|
|
@@ -526,6 +577,13 @@ somtum config set extraction.max_observations_per_session 5
|
|
|
526
577
|
"model": "claude-haiku-4-5-20251001",
|
|
527
578
|
},
|
|
528
579
|
},
|
|
580
|
+
// Auto-inject: BM25-retrieved memories prepended to every UserPromptSubmit.
|
|
581
|
+
// Uses the hot path (< 2 ms at 1k memories). Disable if you prefer pull-only.
|
|
582
|
+
"injection": {
|
|
583
|
+
"enabled": true,
|
|
584
|
+
"k": 5, // max memories injected per prompt
|
|
585
|
+
"max_chars": 3000, // hard cap on injected text
|
|
586
|
+
},
|
|
529
587
|
"file_gating": {
|
|
530
588
|
"enabled": false, // set true to intercept large file reads
|
|
531
589
|
"min_file_size_tokens": 500,
|
|
@@ -611,8 +669,11 @@ src/
|
|
|
611
669
|
doctor.ts # somtum doctor — health checks
|
|
612
670
|
hook.ts # internal: dispatches hook events by name
|
|
613
671
|
search.ts / show.ts / forget.ts / edit.ts
|
|
672
|
+
list.ts # somtum list
|
|
673
|
+
reset.ts # somtum reset — wipe project DB
|
|
614
674
|
export.ts / import.ts / purge.ts / sync.ts / rebuild.ts / reindex.ts
|
|
615
675
|
config_cmd.ts
|
|
676
|
+
suggest_claude_md.ts # somtum suggest-claude-md
|
|
616
677
|
core/
|
|
617
678
|
db.ts # SQLite setup, migration runner
|
|
618
679
|
store.ts # MemoryStore — CRUD for observations
|
|
@@ -626,8 +687,8 @@ src/
|
|
|
626
687
|
privacy.ts # redact() — runs on every capture
|
|
627
688
|
tokens.ts # gpt-tokenizer wrapper
|
|
628
689
|
hooks/
|
|
629
|
-
post_session.ts # SessionEnd: extract → store → index →
|
|
630
|
-
pre_prompt.ts # UserPromptSubmit: cache lookup
|
|
690
|
+
post_session.ts # SessionEnd/PreCompact: extract → store → index → warm-start
|
|
691
|
+
pre_prompt.ts # UserPromptSubmit: cache lookup + auto-inject + false-hit detection
|
|
631
692
|
pre_read.ts # PreToolUse: file gating
|
|
632
693
|
mcp/ # MCP server + tool implementations
|
|
633
694
|
dashboard/
|
|
@@ -752,18 +813,51 @@ BM25 works fully offline and is fast at any corpus size.
|
|
|
752
813
|
|
|
753
814
|
---
|
|
754
815
|
|
|
755
|
-
### Claude
|
|
816
|
+
### Claude doesn't seem to have context from previous sessions
|
|
817
|
+
|
|
818
|
+
**Auto-inject is the first thing to check.** Since v1.3.0, Somtum automatically injects top-k memories into every `UserPromptSubmit` via the cache hook — no manual recall step needed.
|
|
819
|
+
|
|
820
|
+
1. Confirm the cache hook is installed: `somtum doctor` → look for `hooks_installed ✓`
|
|
821
|
+
2. If not installed: `somtum init --cache` (or `somtum init --all`)
|
|
822
|
+
3. Confirm injection is enabled: `somtum config get injection.enabled` → should be `true`
|
|
823
|
+
4. Check that memories actually exist: `somtum stats` → `memories > 0`
|
|
756
824
|
|
|
757
|
-
|
|
825
|
+
**Using the MCP server** (`somtum init --all`), Claude can also call `recall` directly when uncertain. If it's not happening:
|
|
758
826
|
|
|
759
827
|
1. Confirm `.mcp.json` exists: `cat .mcp.json`
|
|
760
828
|
2. Restart Claude Code to pick up the MCP config
|
|
761
|
-
3. Prompt explicitly: _"Check your Somtum memory for anything related to our auth setup"_
|
|
762
829
|
|
|
763
|
-
|
|
830
|
+
### Stale memory warning in `somtum doctor`
|
|
764
831
|
|
|
832
|
+
`doctor` warns when memories are older than 90 days with no confirmed retrievals. These are observations that have never come up in a search. Options:
|
|
833
|
+
|
|
834
|
+
```bash
|
|
835
|
+
# Review them before deciding
|
|
836
|
+
somtum search "old topic"
|
|
837
|
+
|
|
838
|
+
# Promote useful ones to workspace scope via MCP
|
|
839
|
+
remember("...", scope="workspace")
|
|
840
|
+
|
|
841
|
+
# Remove irrelevant ones
|
|
842
|
+
somtum purge --older-than 90d
|
|
843
|
+
```
|
|
844
|
+
|
|
845
|
+
---
|
|
846
|
+
|
|
847
|
+
### Starting fresh — wiping all memories
|
|
848
|
+
|
|
849
|
+
To hard-reset a project's memory (irreversible):
|
|
850
|
+
|
|
851
|
+
```bash
|
|
852
|
+
somtum reset
|
|
853
|
+
# Permanently delete all memories for this project? [y/N] y
|
|
854
|
+
# somtum: reset complete — project <id> wiped.
|
|
765
855
|
```
|
|
766
|
-
|
|
856
|
+
|
|
857
|
+
To just clear everything softly (recoverable via `somtum export --include-deleted`):
|
|
858
|
+
|
|
859
|
+
```bash
|
|
860
|
+
somtum forget --all
|
|
767
861
|
```
|
|
768
862
|
|
|
769
863
|
---
|
package/dist/cli/doctor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,SAAS,CAAC,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,SAAS,CAAC,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,YAAY,CA0LnE;AAED,wBAAsB,aAAa,CACjC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7C,OAAO,CAAC,MAAM,CAAC,CAiBjB"}
|
package/dist/cli/doctor.js
CHANGED
|
@@ -70,7 +70,7 @@ export function runDoctor(opts = {}) {
|
|
|
70
70
|
});
|
|
71
71
|
// 6. All expected migrations applied
|
|
72
72
|
const applied = appliedVersions(db);
|
|
73
|
-
const expectedVersions = [1, 2, 3];
|
|
73
|
+
const expectedVersions = [1, 2, 3, 4];
|
|
74
74
|
const missing = expectedVersions.filter((v) => !applied.includes(v));
|
|
75
75
|
checks.push({
|
|
76
76
|
name: 'migrations',
|
|
@@ -102,11 +102,20 @@ export function runDoctor(opts = {}) {
|
|
|
102
102
|
else {
|
|
103
103
|
checks.push({ name: 'breakeven_ratio', ok: true, detail: 'n/a (no extraction cost yet)' });
|
|
104
104
|
}
|
|
105
|
-
// 9.
|
|
105
|
+
// 9. Stale memories: older than 90 days, never confirmed via retrieval
|
|
106
|
+
const staleCount = store.countStale(projectId, 90);
|
|
107
|
+
checks.push({
|
|
108
|
+
name: 'stale_memories',
|
|
109
|
+
ok: staleCount === 0,
|
|
110
|
+
detail: staleCount === 0
|
|
111
|
+
? 'no stale memories detected'
|
|
112
|
+
: `${staleCount} memor${staleCount === 1 ? 'y' : 'ies'} older than 90 days with no retrieval — consider \`somtum purge\` or reviewing with \`somtum search\``,
|
|
113
|
+
});
|
|
114
|
+
// 10. Cache entries
|
|
106
115
|
const cache = new PromptCache(db);
|
|
107
116
|
const cacheCount = cache.count();
|
|
108
117
|
checks.push({ name: 'cache_entries', ok: true, detail: `${cacheCount} entries` });
|
|
109
|
-
//
|
|
118
|
+
// 11. Embeddings status
|
|
110
119
|
checks.push({
|
|
111
120
|
name: 'embeddings',
|
|
112
121
|
ok: true,
|
package/dist/cli/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/forget.d.ts
CHANGED
|
@@ -4,6 +4,13 @@ export declare function runForget(opts: {
|
|
|
4
4
|
dbPath?: string;
|
|
5
5
|
projectId?: string;
|
|
6
6
|
}): boolean;
|
|
7
|
+
export declare function forgetAllCommand(opts?: {
|
|
8
|
+
cwd?: string;
|
|
9
|
+
json?: boolean;
|
|
10
|
+
yes?: boolean;
|
|
11
|
+
dbPath?: string;
|
|
12
|
+
projectId?: string;
|
|
13
|
+
}): Promise<number>;
|
|
7
14
|
export declare function forgetCommand(id: string, options?: {
|
|
8
15
|
json?: boolean;
|
|
9
16
|
cwd?: string;
|
package/dist/cli/forget.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forget.d.ts","sourceRoot":"","sources":["../../src/cli/forget.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"forget.d.ts","sourceRoot":"","sources":["../../src/cli/forget.ts"],"names":[],"mappings":"AAQA,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAWV;AAED,wBAAsB,gBAAgB,CAAC,IAAI,GAAE;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,MAAM,CAAC,CA0CvB;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAYhG"}
|
package/dist/cli/forget.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { join } from 'node:path';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import * as readline from 'node:readline/promises';
|
|
2
4
|
import { openDb } from '../core/db.js';
|
|
3
5
|
import { MemoryStore } from '../core/store.js';
|
|
4
6
|
import { resolveProjectId } from '../core/project_id.js';
|
|
@@ -16,6 +18,48 @@ export function runForget(opts) {
|
|
|
16
18
|
db.close();
|
|
17
19
|
}
|
|
18
20
|
}
|
|
21
|
+
export async function forgetAllCommand(opts = {}) {
|
|
22
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
23
|
+
const projectId = opts.projectId ?? resolveProjectId(cwd);
|
|
24
|
+
const dbPath = opts.dbPath ?? join(projectDir(projectId), 'db.sqlite');
|
|
25
|
+
if (!existsSync(dbPath)) {
|
|
26
|
+
console.error('somtum: no database found');
|
|
27
|
+
return 1;
|
|
28
|
+
}
|
|
29
|
+
if (!opts.yes) {
|
|
30
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
31
|
+
try {
|
|
32
|
+
const answer = await rl.question('Soft-delete all observations for this project? [y/N] ');
|
|
33
|
+
if (answer.trim().toLowerCase() !== 'y') {
|
|
34
|
+
console.log('Aborted.');
|
|
35
|
+
return 0;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
rl.close();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const db = openDb({ path: dbPath });
|
|
43
|
+
try {
|
|
44
|
+
const store = new MemoryStore(db);
|
|
45
|
+
const observations = store.listByProject(projectId);
|
|
46
|
+
let count = 0;
|
|
47
|
+
for (const o of observations) {
|
|
48
|
+
if (store.softDelete(o.id))
|
|
49
|
+
count++;
|
|
50
|
+
}
|
|
51
|
+
if (opts.json) {
|
|
52
|
+
console.log(JSON.stringify({ deleted: count }));
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
console.log(`forgotten: ${count} observation${count === 1 ? '' : 's'}`);
|
|
56
|
+
}
|
|
57
|
+
return 0;
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
db.close();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
19
63
|
export function forgetCommand(id, options = {}) {
|
|
20
64
|
const deleted = runForget({ id, cwd: options.cwd ?? process.cwd() });
|
|
21
65
|
if (options.json) {
|
package/dist/cli/forget.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forget.js","sourceRoot":"","sources":["../../src/cli/forget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,SAAS,CAAC,IAKzB;IACC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;IACvE,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QAClC,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAU,EAAE,UAA4C,EAAE;IACtF,MAAM,OAAO,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACrE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAChC,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
1
|
+
{"version":3,"file":"forget.js","sourceRoot":"","sources":["../../src/cli/forget.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/hook.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/cli/hook.ts"],"names":[],"mappings":"AAqCA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/cli/hook.ts"],"names":[],"mappings":"AAqCA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiF/D"}
|
package/dist/cli/hook.js
CHANGED
|
@@ -65,9 +65,15 @@ export async function hookCommand(name) {
|
|
|
65
65
|
}));
|
|
66
66
|
}
|
|
67
67
|
catch (err) {
|
|
68
|
-
|
|
68
|
+
const msg = err.message;
|
|
69
|
+
hookLog(`[post_session] ERROR: ${msg}`);
|
|
69
70
|
// Exit 0: hook failures must not break the user's Claude Code session.
|
|
70
|
-
|
|
71
|
+
if (/401|403|authentication|api.?key/i.test(msg)) {
|
|
72
|
+
console.error(`[somtum] post_session failed: ${msg}\n Hint: check that ANTHROPIC_API_KEY is set and valid.`);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
console.error(`[somtum] post_session failed: ${msg}`);
|
|
76
|
+
}
|
|
71
77
|
}
|
|
72
78
|
return 0;
|
|
73
79
|
}
|
|
@@ -75,6 +81,12 @@ export async function hookCommand(name) {
|
|
|
75
81
|
try {
|
|
76
82
|
const payload = PrePromptPayloadSchema.parse(parsed);
|
|
77
83
|
const output = await raceTimeout(runPrePrompt(payload), timeoutMs, 'pre_prompt');
|
|
84
|
+
if (output.hookSpecificOutput && !output.hit) {
|
|
85
|
+
hookLog('[pre_prompt] injected memories into context');
|
|
86
|
+
}
|
|
87
|
+
else if (output.hit) {
|
|
88
|
+
hookLog(`[pre_prompt] cache hit kind=${output.matchKind ?? 'exact'}`);
|
|
89
|
+
}
|
|
78
90
|
console.log(JSON.stringify(output));
|
|
79
91
|
}
|
|
80
92
|
catch (err) {
|
package/dist/cli/hook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/cli/hook.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../src/cli/hook.ts"],"names":[],"mappings":"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"}
|