@strvmarv/total-recall 0.1.0 → 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/.claude-plugin/plugin.json +12 -11
- package/.copilot-plugin/plugin.json +2 -2
- package/.cursor-plugin/plugin.json +2 -2
- package/.mcp.json +8 -0
- package/README.md +18 -21
- package/bin/total-recall.sh +70 -0
- package/dist/defaults.toml +28 -0
- package/dist/index.js +723 -183
- package/package.json +4 -1
- package/skills/status/SKILL.md +7 -0
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "total-recall",
|
|
3
3
|
"description": "Multi-tiered memory and knowledge base with semantic search, auto-compaction, and built-in evaluation. Works across Claude Code, Copilot CLI, OpenCode, Cline, and Cursor.",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.5",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "strvmarv"
|
|
7
7
|
},
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
8
|
+
"homepage": "https://github.com/strvmarv/total-recall",
|
|
9
|
+
"repository": "https://github.com/strvmarv/total-recall",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"keywords": [
|
|
12
|
+
"memory",
|
|
13
|
+
"knowledge-base",
|
|
14
|
+
"mcp",
|
|
15
|
+
"vector-search",
|
|
16
|
+
"sqlite",
|
|
17
|
+
"embeddings"
|
|
18
|
+
]
|
|
18
19
|
}
|
package/.mcp.json
ADDED
package/README.md
CHANGED
|
@@ -119,27 +119,24 @@ All state lives in `~/.total-recall/db.sqlite`. The embedding model is cached at
|
|
|
119
119
|
|
|
120
120
|
## Commands
|
|
121
121
|
|
|
122
|
-
| Command | Description |
|
|
123
|
-
|
|
124
|
-
| `/memory status` | Dashboard overview |
|
|
125
|
-
| `/memory search <query>` | Semantic search across all tiers |
|
|
126
|
-
| `/memory ingest <path>` | Add files/dirs to knowledge base |
|
|
127
|
-
| `/memory forget <query>` | Find and delete entries |
|
|
128
|
-
| `/memory compact` | Force compaction with preview |
|
|
129
|
-
| `/memory inspect <id>` | Deep dive on single entry |
|
|
130
|
-
| `/memory promote <id>` | Move entry to higher tier |
|
|
131
|
-
| `/memory demote <id>` | Move entry to lower tier |
|
|
132
|
-
| `/memory export` | Export to portable format |
|
|
133
|
-
| `/memory import <file>` | Import from export file |
|
|
134
|
-
| `/memory eval` | Live performance metrics |
|
|
135
|
-
| `/memory eval --benchmark` | Run synthetic benchmark |
|
|
136
|
-
| `/memory
|
|
137
|
-
| `/memory
|
|
138
|
-
| `/memory
|
|
139
|
-
| `/memory
|
|
140
|
-
| `/memory config set <key> <value>` | Update config |
|
|
141
|
-
| `/memory history` | Show recent tier movements |
|
|
142
|
-
| `/memory lineage <id>` | Show compaction ancestry |
|
|
122
|
+
| Command | MCP Tool | Description |
|
|
123
|
+
|---|---|---|
|
|
124
|
+
| `/memory status` | `status` | Dashboard overview |
|
|
125
|
+
| `/memory search <query>` | `memory_search` | Semantic search across all tiers |
|
|
126
|
+
| `/memory ingest <path>` | `kb_ingest_file` / `kb_ingest_dir` | Add files/dirs to knowledge base |
|
|
127
|
+
| `/memory forget <query>` | `memory_search` + `memory_delete` | Find and delete entries |
|
|
128
|
+
| `/memory compact` | `compact_now` | Force compaction with preview |
|
|
129
|
+
| `/memory inspect <id>` | `memory_inspect` | Deep dive on single entry |
|
|
130
|
+
| `/memory promote <id>` | `memory_promote` | Move entry to higher tier |
|
|
131
|
+
| `/memory demote <id>` | `memory_demote` | Move entry to lower tier |
|
|
132
|
+
| `/memory export` | `memory_export` | Export to portable JSON format |
|
|
133
|
+
| `/memory import <file>` | `memory_import` | Import from export file |
|
|
134
|
+
| `/memory eval` | `eval_report` | Live performance metrics |
|
|
135
|
+
| `/memory eval --benchmark` | `eval_benchmark` | Run synthetic benchmark |
|
|
136
|
+
| `/memory config get <key>` | `config_get` | Read config value |
|
|
137
|
+
| `/memory config set <key> <value>` | `config_set` | Update config |
|
|
138
|
+
| `/memory history` | `memory_history` | Show recent tier movements |
|
|
139
|
+
| `/memory lineage <id>` | `memory_lineage` | Show compaction ancestry |
|
|
143
140
|
|
|
144
141
|
---
|
|
145
142
|
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# total-recall MCP server launcher
|
|
3
|
+
# Finds node in common locations even when not in PATH
|
|
4
|
+
|
|
5
|
+
find_node() {
|
|
6
|
+
# Check PATH first
|
|
7
|
+
if command -v node &>/dev/null; then
|
|
8
|
+
echo "node"
|
|
9
|
+
return 0
|
|
10
|
+
fi
|
|
11
|
+
|
|
12
|
+
# Check nvm
|
|
13
|
+
if [ -d "$HOME/.nvm/versions/node" ]; then
|
|
14
|
+
local latest=$(ls -1d "$HOME/.nvm/versions/node"/v* 2>/dev/null | sort -V | tail -1)
|
|
15
|
+
if [ -n "$latest" ] && [ -x "$latest/bin/node" ]; then
|
|
16
|
+
echo "$latest/bin/node"
|
|
17
|
+
return 0
|
|
18
|
+
fi
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
# Check fnm
|
|
22
|
+
if [ -d "$HOME/.local/share/fnm/node-versions" ]; then
|
|
23
|
+
local latest=$(ls -1d "$HOME/.local/share/fnm/node-versions"/v*/installation 2>/dev/null | sort -V | tail -1)
|
|
24
|
+
if [ -n "$latest" ] && [ -x "$latest/bin/node" ]; then
|
|
25
|
+
echo "$latest/bin/node"
|
|
26
|
+
return 0
|
|
27
|
+
fi
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
# Check Homebrew
|
|
31
|
+
if [ -x "/home/linuxbrew/.linuxbrew/bin/node" ]; then
|
|
32
|
+
echo "/home/linuxbrew/.linuxbrew/bin/node"
|
|
33
|
+
return 0
|
|
34
|
+
fi
|
|
35
|
+
if [ -x "/opt/homebrew/bin/node" ]; then
|
|
36
|
+
echo "/opt/homebrew/bin/node"
|
|
37
|
+
return 0
|
|
38
|
+
fi
|
|
39
|
+
if [ -x "/usr/local/bin/node" ]; then
|
|
40
|
+
echo "/usr/local/bin/node"
|
|
41
|
+
return 0
|
|
42
|
+
fi
|
|
43
|
+
|
|
44
|
+
# Check Volta
|
|
45
|
+
if [ -x "$HOME/.volta/bin/node" ]; then
|
|
46
|
+
echo "$HOME/.volta/bin/node"
|
|
47
|
+
return 0
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
echo ""
|
|
51
|
+
return 1
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
NODE=$(find_node)
|
|
55
|
+
if [ -z "$NODE" ]; then
|
|
56
|
+
echo "total-recall: error: node.js not found. Install Node.js 20+ via nvm, fnm, Volta, or your package manager." >&2
|
|
57
|
+
exit 1
|
|
58
|
+
fi
|
|
59
|
+
|
|
60
|
+
# Find the package entry point relative to this script
|
|
61
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
62
|
+
PACKAGE_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
63
|
+
ENTRY="$PACKAGE_DIR/dist/index.js"
|
|
64
|
+
|
|
65
|
+
if [ ! -f "$ENTRY" ]; then
|
|
66
|
+
echo "total-recall: error: dist/index.js not found. Run 'npm run build' first." >&2
|
|
67
|
+
exit 1
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
exec "$NODE" "$ENTRY" "$@"
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# total-recall default configuration
|
|
2
|
+
# Copy to ~/.total-recall/config.toml to override
|
|
3
|
+
|
|
4
|
+
[tiers.hot]
|
|
5
|
+
max_entries = 50
|
|
6
|
+
token_budget = 4000
|
|
7
|
+
carry_forward_threshold = 0.7
|
|
8
|
+
|
|
9
|
+
[tiers.warm]
|
|
10
|
+
max_entries = 10000
|
|
11
|
+
retrieval_top_k = 5
|
|
12
|
+
similarity_threshold = 0.65
|
|
13
|
+
cold_decay_days = 30
|
|
14
|
+
|
|
15
|
+
[tiers.cold]
|
|
16
|
+
chunk_max_tokens = 512
|
|
17
|
+
chunk_overlap_tokens = 50
|
|
18
|
+
lazy_summary_threshold = 5
|
|
19
|
+
|
|
20
|
+
[compaction]
|
|
21
|
+
decay_half_life_hours = 168
|
|
22
|
+
warm_threshold = 0.3
|
|
23
|
+
promote_threshold = 0.7
|
|
24
|
+
warm_sweep_interval_days = 7
|
|
25
|
+
|
|
26
|
+
[embedding]
|
|
27
|
+
model = "all-MiniLM-L6-v2"
|
|
28
|
+
dimensions = 384
|