chat-recall 0.6.4 → 0.6.5
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 +3 -3
- package/dist/cli.js +11 -9
- package/dist/cli.js.map +1 -1
- package/dist/mcp-relay.js +1 -1
- package/dist/mcp.js +214 -16
- package/dist/watch.js +11 -10
- package/package.json +1 -1
- package/skills/chat-recall/SKILL.md +2 -1
- package/skills/chat-recall-memory/SKILL.md +18 -2
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
Every coding agent you run keeps a full transcript of its work: the decisions, the
|
|
20
20
|
reasoning, the keys somebody pasted, the problems it found and never filed. Each one
|
|
21
21
|
writes to its own directory in its own format, none can read another's, and nothing
|
|
22
|
-
reads any of them. `chat-recall` does, through **
|
|
22
|
+
reads any of them. `chat-recall` does, through **62 MCP tools**.
|
|
23
23
|
|
|
24
24
|
| | What it does | Tools |
|
|
25
25
|
|---|---|---|
|
|
@@ -131,7 +131,7 @@ Exclusions live on the machine that holds the data, so the CLI owns them; they a
|
|
|
131
131
|
## Four things it actually does
|
|
132
132
|
|
|
133
133
|
1. **Cross-tool unified memory.** One index, one search, one UI over Claude Code (`~/.claude/projects/`), Codex (`~/.codex/`), OpenCode (`~/.local/share/opencode/`), Antigravity (`~/.gemini/antigravity-cli/`) and Cursor (`~/.cursor/` for the CLI, `~/.config/Cursor/` for the IDE). Sessions, plans, tasks, CLAUDE.md files, paste cache, shell history and agent diaries all share one pluggable `MemorySource` interface.
|
|
134
|
-
2. **The agent recalls itself.**
|
|
134
|
+
2. **The agent recalls itself.** 62 MCP tools, so Claude Code can `recall_smart_resume`, `recall_search` (with `like_session` to find similar work), `recall_edits_timeline`, `recall_subagent_search` and `recall_redundant_files` rather than asking you what happened last time. It writes back too, via `recall_decision_record`, `recall_kg_add` and `recall_set`.
|
|
135
135
|
3. **Warns before you redo work.** A `UserPromptSubmit` hook searches for similar past sessions on every prompt and injects a short "you have done this before, in session X" note into the agent's context.
|
|
136
136
|
4. **Temporal knowledge graph.** Decisions and tool mentions become entity-relationship triples with `valid_from`/`valid_to` windows, so you can ask what was decided in March and whether it still holds.
|
|
137
137
|
|
|
@@ -270,7 +270,7 @@ codeindex is open source (MIT) at [github.com/munhq/codeindex](https://github.co
|
|
|
270
270
|
| **Paste** | `~/.claude/paste-cache/*.txt` | Large pasted blobs |
|
|
271
271
|
| **Diary** | `~/.chat-recall/index/diary/<agent>/*.json` | What the agent told its future self via `recall_diary_write` |
|
|
272
272
|
|
|
273
|
-
## MCP tools (
|
|
273
|
+
## MCP tools (62, including 4 code-intelligence tools that register when the companion binary is installed)
|
|
274
274
|
|
|
275
275
|
**Search & retrieve** — `recall_search`, `recall_memory_search`, `recall_recent`, `recall_show`, `recall_context`, `recall_summary`, `recall_smart_resume`, `recall_project_context`, `recall_weekly_digest`, `recall_analytics_summary`, `recall_wake_up`.
|
|
276
276
|
|
package/dist/cli.js
CHANGED
|
@@ -14322,12 +14322,12 @@ function extractEntities(text, context3 = {}) {
|
|
|
14322
14322
|
if (chosen && looksLikeStrictTool(chosen) && looksLikeStrictTool(rejected)) {
|
|
14323
14323
|
const c = canonTool(chosen), r = canonTool(rejected);
|
|
14324
14324
|
if (projectName)
|
|
14325
|
-
addTriple(projectName, "chose", c,
|
|
14326
|
-
addTriple(projectName || "project", "rejected", r,
|
|
14327
|
-
addTriple(c, "chosen_over", r,
|
|
14325
|
+
addTriple(projectName, "chose", c, DECISION_GUESS_CONFIDENCE);
|
|
14326
|
+
addTriple(projectName || "project", "rejected", r, DECISION_GUESS_CONFIDENCE);
|
|
14327
|
+
addTriple(c, "chosen_over", r, DECISION_GUESS_CONFIDENCE);
|
|
14328
14328
|
}
|
|
14329
14329
|
} else if (chosen && looksLikeDecisionObject(chosen) && projectName) {
|
|
14330
|
-
addTriple(projectName, "chose", canonTool(chosen),
|
|
14330
|
+
addTriple(projectName, "chose", canonTool(chosen), DECISION_GUESS_CONFIDENCE);
|
|
14331
14331
|
}
|
|
14332
14332
|
}
|
|
14333
14333
|
}
|
|
@@ -14364,7 +14364,7 @@ function extractEntities(text, context3 = {}) {
|
|
|
14364
14364
|
}
|
|
14365
14365
|
return triples;
|
|
14366
14366
|
}
|
|
14367
|
-
var KNOWN_TOOLS, AMBIGUOUS_TOOLS, toolContextRe, TOOL_PATTERNS, DECISION_PATTERNS2, DECISION_OBJECT_STOPWORDS, KNOWN_TOOL_NAMES, CANONICAL_TOOL, canonTool, PROJECT_PATH_PATTERN, PEOPLE_PATTERNS, NOT_PEOPLE;
|
|
14367
|
+
var KNOWN_TOOLS, AMBIGUOUS_TOOLS, toolContextRe, TOOL_PATTERNS, DECISION_PATTERNS2, DECISION_OBJECT_STOPWORDS, KNOWN_TOOL_NAMES, CANONICAL_TOOL, canonTool, DECISION_GUESS_CONFIDENCE, PROJECT_PATH_PATTERN, PEOPLE_PATTERNS, NOT_PEOPLE;
|
|
14368
14368
|
var init_entity_extractor = __esm({
|
|
14369
14369
|
"../engine/dist/core/entity-extractor.js"() {
|
|
14370
14370
|
"use strict";
|
|
@@ -14585,6 +14585,7 @@ var init_entity_extractor = __esm({
|
|
|
14585
14585
|
"nextjs": "next.js"
|
|
14586
14586
|
};
|
|
14587
14587
|
canonTool = (n) => CANONICAL_TOOL[n.toLowerCase()] ?? n;
|
|
14588
|
+
DECISION_GUESS_CONFIDENCE = 0.6;
|
|
14588
14589
|
PROJECT_PATH_PATTERN = /\/(?:home|Users)\/\w+\/(?:code|projects|work|dev|src)\/(?:\w+\/)?([a-zA-Z][a-zA-Z0-9_-]{1,40})/g;
|
|
14589
14590
|
PEOPLE_PATTERNS = [
|
|
14590
14591
|
/\b(?:my name is|I'm|I am)\s+([A-Z][a-z]{1,15}(?:\s+[A-Z][a-z]{1,15})?)/g,
|
|
@@ -18816,7 +18817,7 @@ var init_http = __esm({
|
|
|
18816
18817
|
CLI_VERSION = JSON.parse(readFileSync31(new URL("../package.json", import.meta.url), "utf-8")).version || CLI_VERSION;
|
|
18817
18818
|
} catch {
|
|
18818
18819
|
try {
|
|
18819
|
-
if (true) CLI_VERSION = "0.6.
|
|
18820
|
+
if (true) CLI_VERSION = "0.6.5";
|
|
18820
18821
|
} catch {
|
|
18821
18822
|
}
|
|
18822
18823
|
}
|
|
@@ -19336,7 +19337,7 @@ var init_telemetry = __esm({
|
|
|
19336
19337
|
init_sync_client();
|
|
19337
19338
|
cliVersion2 = () => {
|
|
19338
19339
|
try {
|
|
19339
|
-
return true ? "0.6.
|
|
19340
|
+
return true ? "0.6.5" : "dev";
|
|
19340
19341
|
} catch {
|
|
19341
19342
|
return "dev";
|
|
19342
19343
|
}
|
|
@@ -21425,7 +21426,7 @@ var init_sync_client = __esm({
|
|
|
21425
21426
|
ownVersion = JSON.parse(readFileSync35(join42(dir, "../package.json"), "utf-8")).version || ownVersion;
|
|
21426
21427
|
} catch {
|
|
21427
21428
|
try {
|
|
21428
|
-
if (true) ownVersion = "0.6.
|
|
21429
|
+
if (true) ownVersion = "0.6.5";
|
|
21429
21430
|
} catch {
|
|
21430
21431
|
}
|
|
21431
21432
|
}
|
|
@@ -25227,7 +25228,7 @@ var init_intent_drain = __esm({
|
|
|
25227
25228
|
ownVersion2 = JSON.parse(readFileSync44(join53(dir, "../package.json"), "utf-8")).version || ownVersion2;
|
|
25228
25229
|
} catch {
|
|
25229
25230
|
try {
|
|
25230
|
-
if (true) ownVersion2 = "0.6.
|
|
25231
|
+
if (true) ownVersion2 = "0.6.5";
|
|
25231
25232
|
} catch {
|
|
25232
25233
|
}
|
|
25233
25234
|
}
|
|
@@ -27150,6 +27151,7 @@ var DEFAULT_ALLOW = [
|
|
|
27150
27151
|
"recall_redundant_files",
|
|
27151
27152
|
"recall_user_prompts",
|
|
27152
27153
|
"recall_decision_record",
|
|
27154
|
+
"recall_decisions",
|
|
27153
27155
|
"recall_analytics_summary",
|
|
27154
27156
|
"recall_outcome_summary",
|
|
27155
27157
|
"recall_regenerate_summary",
|