chat-recall 0.6.4 → 0.6.6
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 +48 -3
- package/dist/auto-update.d.ts +12 -0
- package/dist/auto-update.d.ts.map +1 -1
- package/dist/auto-update.js +115 -9
- package/dist/auto-update.js.map +1 -1
- package/dist/board-hooks.d.ts +56 -0
- package/dist/board-hooks.d.ts.map +1 -0
- package/dist/board-hooks.js +144 -0
- package/dist/board-hooks.js.map +1 -0
- package/dist/cli.js +1508 -358
- package/dist/cli.js.map +1 -1
- package/dist/mcp-relay.js +1 -1
- package/dist/mcp.js +295 -42
- package/dist/star-nudge.d.ts +13 -0
- package/dist/star-nudge.d.ts.map +1 -0
- package/dist/star-nudge.js +83 -0
- package/dist/star-nudge.js.map +1 -0
- package/dist/watch.js +117 -61
- package/hooks/chat_recall_guard_hook.sh +54 -0
- 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
|
|
|
@@ -234,6 +234,51 @@ chat-recall install-hooks --uninstall # remove all of ours, leave third-part
|
|
|
234
234
|
| `PreCompact` | Before Claude Code compacts context | Emergency save so nothing is lost to compaction |
|
|
235
235
|
| `SessionEnd` | When the session closes | Escalates the session's learnings in the background, so nothing is delayed |
|
|
236
236
|
|
|
237
|
+
## The decision guard
|
|
238
|
+
|
|
239
|
+
A decision nobody reads is a suggestion. `chat-recall guard` runs before a tool
|
|
240
|
+
call and says so when the call reaches for something already ruled out:
|
|
241
|
+
|
|
242
|
+
```
|
|
243
|
+
chat-recall: this reaches for something already decided against.
|
|
244
|
+
- keycloak was ruled out — BetterAuth is the decision (2026-03-14) · session 8f2c1a4e
|
|
245
|
+
Proceed only if this is a deliberate reversal. If it is, record it:
|
|
246
|
+
recall_decision_record with the area, so the old decision is closed rather than contradicted.
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
It fires on **installs, imports and manifest edits** — `npm install auth0`, a new
|
|
250
|
+
`import` line, a name added to `package.json`. Never on prose: "we could use
|
|
251
|
+
Auth0" in a sentence must not stop anything, or the guard becomes something
|
|
252
|
+
people switch off.
|
|
253
|
+
|
|
254
|
+
**It warns; it does not block.** A wrong block costs the user a turn and gets the
|
|
255
|
+
guard uninstalled; a wrong warning costs a line of context. Set
|
|
256
|
+
`CHAT_RECALL_GUARD_ENFORCE=1` to block instead, per machine. `CHAT_RECALL_GUARD=0`
|
|
257
|
+
turns it off.
|
|
258
|
+
|
|
259
|
+
`chat-recall install-hooks` registers it in all five tools. Each one keeps its
|
|
260
|
+
pre-execution hook in its own file, so the installer writes five shapes and
|
|
261
|
+
skips any tool that is not on the machine (`--no-guard` to skip all of them):
|
|
262
|
+
|
|
263
|
+
| Tool | Where | Event |
|
|
264
|
+
|---|---|---|
|
|
265
|
+
| Claude Code | `~/.claude/hooks.json`, every profile | `PreToolUse` |
|
|
266
|
+
| Codex | `~/.codex/hooks.json` | `PreToolUse` |
|
|
267
|
+
| Antigravity | `~/.gemini/antigravity-cli/hooks.json` | `PreToolUse` — the one tool with a real `ask` verdict, so it can prompt |
|
|
268
|
+
| Cursor | `~/.cursor/hooks.json` | `beforeShellExecution` + `afterFileEdit` |
|
|
269
|
+
| OpenCode | `~/.config/opencode/plugins/chat-recall-guard.js` | `tool.execute.before` |
|
|
270
|
+
|
|
271
|
+
**Codex needs one more step.** It runs a hook only after you trust it — open
|
|
272
|
+
Codex and run `/hooks` once. `chat-recall doctor` reports the registration for
|
|
273
|
+
each tool.
|
|
274
|
+
|
|
275
|
+
Two of those are not full coverage, and the docs say so rather than implying
|
|
276
|
+
otherwise. **Cursor** exposes `beforeShellExecution` but only `afterFileEdit`, so
|
|
277
|
+
an import added in an edit is reported after the write, not prevented.
|
|
278
|
+
**OpenCode**'s plugin hooks do not fire for subagent tool calls
|
|
279
|
+
([#5894](https://github.com/anomalyco/opencode/issues/5894)), so an agent that
|
|
280
|
+
delegates routes around it.
|
|
281
|
+
|
|
237
282
|
## Companion: codeindex (auto-detected)
|
|
238
283
|
|
|
239
284
|
There's a separate MCP server called **codeindex** (Zig binary, ~56 MB) by [munhq](https://github.com/munhq/codeindex) that gives the agent code-level lookup. The two compose:
|
|
@@ -270,7 +315,7 @@ codeindex is open source (MIT) at [github.com/munhq/codeindex](https://github.co
|
|
|
270
315
|
| **Paste** | `~/.claude/paste-cache/*.txt` | Large pasted blobs |
|
|
271
316
|
| **Diary** | `~/.chat-recall/index/diary/<agent>/*.json` | What the agent told its future self via `recall_diary_write` |
|
|
272
317
|
|
|
273
|
-
## MCP tools (
|
|
318
|
+
## MCP tools (62, including 4 code-intelligence tools that register when the companion binary is installed)
|
|
274
319
|
|
|
275
320
|
**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
321
|
|
package/dist/auto-update.d.ts
CHANGED
|
@@ -89,5 +89,17 @@ export declare function executeAutoUpdate(plan: UpdatePlan, deps: UpdateDeps): P
|
|
|
89
89
|
* checkout, a bundled binary), where there is nothing to reinstall over.
|
|
90
90
|
*/
|
|
91
91
|
export declare function runningPrefix(moduleUrl?: string): string | null;
|
|
92
|
+
type UpdateState = {
|
|
93
|
+
target?: string;
|
|
94
|
+
failures?: number;
|
|
95
|
+
};
|
|
96
|
+
export declare function readUpdateState(): UpdateState;
|
|
97
|
+
/** True when this device has already given up on installing `target`. */
|
|
98
|
+
export declare function hasGivenUpOn(target: string, st?: UpdateState): boolean;
|
|
99
|
+
/** Count a failed attempt; returns the new consecutive count for `target`. */
|
|
100
|
+
export declare function noteUpdateFailure(target: string): number;
|
|
101
|
+
/** A successful install clears the brake. */
|
|
102
|
+
export declare function clearUpdateFailures(): void;
|
|
92
103
|
export declare function runAutoUpdate(base: string, authHeaders: Record<string, string>, ownVersion: string, deps?: Partial<UpdateDeps>): Promise<UpdateResult>;
|
|
104
|
+
export {};
|
|
93
105
|
//# sourceMappingURL=auto-update.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-update.d.ts","sourceRoot":"","sources":["../src/auto-update.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,UAAU;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAAE;AAChE,MAAM,WAAW,IAAI;IAAG,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAAE;AAEpE,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAInG;AAED,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,WAA0D,CAAC;AAElG,wEAAwE;AACxE,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAI3D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAUhD;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAMjH;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,SAAW,EAAE,GAAG,SAAa,GAAG,MAAM,CAyB3E;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAAG,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;CAAE;AAE/F,sEAAsE;AACtE,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CA0CjG;AASD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,SAAS,SAAkB,GAAG,MAAM,GAAG,IAAI,CAWxE;
|
|
1
|
+
{"version":3,"file":"auto-update.d.ts","sourceRoot":"","sources":["../src/auto-update.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,UAAU;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAAE;AAChE,MAAM,WAAW,IAAI;IAAG,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAAE;AAEpE,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAInG;AAED,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,WAA0D,CAAC;AAElG,wEAAwE;AACxE,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAI3D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAUhD;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAMjH;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,SAAW,EAAE,GAAG,SAAa,GAAG,MAAM,CAyB3E;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAAG,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;CAAE;AAE/F,sEAAsE;AACtE,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CA0CjG;AASD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,SAAS,SAAkB,GAAG,MAAM,GAAG,IAAI,CAWxE;AAkGD,KAAK,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D,wBAAgB,eAAe,IAAI,WAAW,CAG7C;AAUD,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAE,WAA+B,GAAG,OAAO,CAEzF;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKxD;AAED,6CAA6C;AAC7C,wBAAgB,mBAAmB,IAAI,IAAI,CAA0B;AASrE,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GACzB,OAAO,CAAC,YAAY,CAAC,CAwFvB"}
|
package/dist/auto-update.js
CHANGED
|
@@ -18,9 +18,9 @@ import { execSync } from 'node:child_process';
|
|
|
18
18
|
import { readFileSync } from 'node:fs';
|
|
19
19
|
import { fileURLToPath } from 'node:url';
|
|
20
20
|
import { fetchWithTimeout } from './http.js';
|
|
21
|
-
import { writeFileSync, mkdtempSync, rmSync, readdirSync, statSync } from 'node:fs';
|
|
21
|
+
import { writeFileSync, mkdtempSync, rmSync, readdirSync, statSync, mkdirSync } from 'node:fs';
|
|
22
22
|
import { join, dirname, sep } from 'node:path';
|
|
23
|
-
import { tmpdir } from 'node:os';
|
|
23
|
+
import { tmpdir, homedir } from 'node:os';
|
|
24
24
|
import { createHash } from 'node:crypto';
|
|
25
25
|
/** semver-ish compare: -1 (a<b), 0 (a==b), 1 (a>b). Ignores prerelease tags. */
|
|
26
26
|
export function compareVersions(a, b) {
|
|
@@ -256,17 +256,42 @@ export function runningPrefix(moduleUrl = import.meta.url) {
|
|
|
256
256
|
* So target the prefix this file was loaded from, and fall back to npm's own
|
|
257
257
|
* global only when that cannot be determined.
|
|
258
258
|
*/
|
|
259
|
+
/**
|
|
260
|
+
* Run one npm install, keeping what npm said when it fails.
|
|
261
|
+
*
|
|
262
|
+
* `stdio: 'ignore'` discarded npm's stderr, so a failing install reported
|
|
263
|
+
* `Command failed: npm install -g --prefix "/opt/homebrew" …` and nothing else.
|
|
264
|
+
* One machine repeated that 4,248 times over ten days and the reason was never
|
|
265
|
+
* once recoverable from the telemetry — the only line that could have explained
|
|
266
|
+
* it was being thrown away on purpose.
|
|
267
|
+
*
|
|
268
|
+
* stdout stays ignored; npm's progress output is noise. stderr is piped and
|
|
269
|
+
* appended to the error, trimmed, because that string is carried to the server
|
|
270
|
+
* in an `auto_update_failed` event and must stay small.
|
|
271
|
+
*/
|
|
272
|
+
function npmInstall(cmd) {
|
|
273
|
+
try {
|
|
274
|
+
execSync(cmd, { stdio: ['ignore', 'ignore', 'pipe'] });
|
|
275
|
+
}
|
|
276
|
+
catch (e) {
|
|
277
|
+
const err = e;
|
|
278
|
+
const detail = String(err.stderr ?? '').trim().split('\n')
|
|
279
|
+
.filter((l) => l.trim() && !/^npm (notice|warn)\b/i.test(l))
|
|
280
|
+
.slice(-4).join(' | ').slice(0, 400);
|
|
281
|
+
throw new Error(detail ? `${err.message ?? 'install failed'} — ${detail}` : (err.message ?? 'install failed'));
|
|
282
|
+
}
|
|
283
|
+
}
|
|
259
284
|
function realInstall(tgz) {
|
|
260
285
|
const prefix = runningPrefix();
|
|
261
286
|
if (prefix) {
|
|
262
|
-
|
|
287
|
+
npmInstall(`npm install -g --prefix "${prefix}" "${tgz}"`);
|
|
263
288
|
return;
|
|
264
289
|
}
|
|
265
290
|
try {
|
|
266
|
-
|
|
291
|
+
npmInstall(`npm install -g "${tgz}"`);
|
|
267
292
|
}
|
|
268
293
|
catch {
|
|
269
|
-
|
|
294
|
+
npmInstall(`npm install -g --prefix "${process.env.HOME}/.local" "${tgz}"`);
|
|
270
295
|
}
|
|
271
296
|
}
|
|
272
297
|
function realRestart(platform) {
|
|
@@ -277,6 +302,66 @@ function realRestart(platform) {
|
|
|
277
302
|
else if (platform === 'win32')
|
|
278
303
|
execSync('schtasks /End /TN chat-recall-watch & schtasks /Run /TN chat-recall-watch', { stdio: 'ignore' });
|
|
279
304
|
}
|
|
305
|
+
/**
|
|
306
|
+
* Give up on a target version that keeps failing to install.
|
|
307
|
+
*
|
|
308
|
+
* ── Why ─────────────────────────────────────────────────────────────────────
|
|
309
|
+
*
|
|
310
|
+
* One machine attempted 0.5.32 → 0.6.4 four thousand two hundred and forty-eight
|
|
311
|
+
* times across ten days, every few minutes, on a failure that was never going to
|
|
312
|
+
* resolve itself. Nothing anywhere applied a brake: the flow is best-effort, so
|
|
313
|
+
* each attempt returned a reason, dropped it, and the next sync tried again.
|
|
314
|
+
*
|
|
315
|
+
* The cost is not only noise. Each attempt downloads the tarball and shells out
|
|
316
|
+
* to npm, and the telemetry it generates drowned the failures table — 4,341 of
|
|
317
|
+
* 17,000 events, all one device, all one cause.
|
|
318
|
+
*
|
|
319
|
+
* ── The rule ────────────────────────────────────────────────────────────────
|
|
320
|
+
*
|
|
321
|
+
* Three consecutive failures for the SAME target version and this device stops
|
|
322
|
+
* trying that version. Keyed on the target, so the next release clears it and
|
|
323
|
+
* gets a fresh three attempts — a broken install must not strand a machine
|
|
324
|
+
* forever, and the common case (a bad build, fixed in the next patch) recovers
|
|
325
|
+
* on its own.
|
|
326
|
+
*
|
|
327
|
+
* State lives beside the other CLI bookkeeping and is best-effort in both
|
|
328
|
+
* directions: an unreadable file means "no failures recorded", which retries.
|
|
329
|
+
* Failing to brake is better than refusing to update because a file is corrupt.
|
|
330
|
+
*/
|
|
331
|
+
const GIVE_UP_AFTER = 3;
|
|
332
|
+
function updateStatePath() {
|
|
333
|
+
const dir = process.env.CHAT_RECALL_DATA_DIR || join(homedir(), '.chat-recall');
|
|
334
|
+
return join(dir, 'auto-update-state.json');
|
|
335
|
+
}
|
|
336
|
+
export function readUpdateState() {
|
|
337
|
+
try {
|
|
338
|
+
return JSON.parse(readFileSync(updateStatePath(), 'utf8'));
|
|
339
|
+
}
|
|
340
|
+
catch {
|
|
341
|
+
return {};
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
function writeUpdateState(st) {
|
|
345
|
+
try {
|
|
346
|
+
const p = updateStatePath();
|
|
347
|
+
mkdirSync(dirname(p), { recursive: true });
|
|
348
|
+
writeFileSync(p, JSON.stringify(st), 'utf8');
|
|
349
|
+
}
|
|
350
|
+
catch { /* best effort — a brake we cannot persist just means we retry */ }
|
|
351
|
+
}
|
|
352
|
+
/** True when this device has already given up on installing `target`. */
|
|
353
|
+
export function hasGivenUpOn(target, st = readUpdateState()) {
|
|
354
|
+
return st.target === target && (st.failures ?? 0) >= GIVE_UP_AFTER;
|
|
355
|
+
}
|
|
356
|
+
/** Count a failed attempt; returns the new consecutive count for `target`. */
|
|
357
|
+
export function noteUpdateFailure(target) {
|
|
358
|
+
const st = readUpdateState();
|
|
359
|
+
const failures = st.target === target ? (st.failures ?? 0) + 1 : 1;
|
|
360
|
+
writeUpdateState({ target, failures });
|
|
361
|
+
return failures;
|
|
362
|
+
}
|
|
363
|
+
/** A successful install clears the brake. */
|
|
364
|
+
export function clearUpdateFailures() { writeUpdateState({}); }
|
|
280
365
|
/**
|
|
281
366
|
* Full flow for one logged-in server. Best-effort — any failure returns a
|
|
282
367
|
* reason and never throws into the daemon loop.
|
|
@@ -332,6 +417,15 @@ export async function runAutoUpdate(base, authHeaders, ownVersion, deps) {
|
|
|
332
417
|
}
|
|
333
418
|
return { updated: false, reason: plan.reason };
|
|
334
419
|
}
|
|
420
|
+
// Stop hammering a version this device has already failed to install three
|
|
421
|
+
// times. Reported once at the moment of giving up, then silent until a new
|
|
422
|
+
// release changes the target.
|
|
423
|
+
// `to` is always set once plan.update is true, but the type allows undefined;
|
|
424
|
+
// an unknown target simply has no brake rather than an assertion here.
|
|
425
|
+
const target = plan.to ?? '';
|
|
426
|
+
if (target && hasGivenUpOn(target)) {
|
|
427
|
+
return { updated: false, reason: `gave up installing ${plan.to} after ${GIVE_UP_AFTER} failed attempts — run \`npm install -g chat-recall\` by hand` };
|
|
428
|
+
}
|
|
335
429
|
const result = await executeAutoUpdate(plan, {
|
|
336
430
|
download: deps?.download ?? realDownload,
|
|
337
431
|
install: deps?.install ?? realInstall,
|
|
@@ -346,11 +440,23 @@ export async function runAutoUpdate(base, authHeaders, ownVersion, deps) {
|
|
|
346
440
|
// Dynamic import: client-events → sync-client → auto-update is a cycle at
|
|
347
441
|
// module scope, and telemetry must never be load-order-sensitive.
|
|
348
442
|
if (!result.updated) {
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
443
|
+
const failures = target ? noteUpdateFailure(target) : 1;
|
|
444
|
+
// Report every attempt up to the brake, then the one that trips it, then
|
|
445
|
+
// nothing. A device that has given up is not news on every sync — it is one
|
|
446
|
+
// fact, and repeating it is what buried the failures table.
|
|
447
|
+
if (failures <= GIVE_UP_AFTER) {
|
|
448
|
+
try {
|
|
449
|
+
const { reportClientEvent } = await import('./client-events.js');
|
|
450
|
+
const suffix = failures >= GIVE_UP_AFTER
|
|
451
|
+
? ` — giving up after ${failures} attempts, needs a manual \`npm install -g chat-recall\``
|
|
452
|
+
: ` (attempt ${failures} of ${GIVE_UP_AFTER})`;
|
|
453
|
+
reportClientEvent('auto_update_failed', { message: `${plan.from} → ${plan.to}: ${result.reason}${suffix}` });
|
|
454
|
+
}
|
|
455
|
+
catch { /* telemetry is best-effort */ }
|
|
352
456
|
}
|
|
353
|
-
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
clearUpdateFailures();
|
|
354
460
|
}
|
|
355
461
|
return result;
|
|
356
462
|
}
|
package/dist/auto-update.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-update.js","sourceRoot":"","sources":["../src/auto-update.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auto-update.js","sourceRoot":"","sources":["../src/auto-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/** The two events the board loop needs, and the flag each one passes. */
|
|
2
|
+
export declare const BOARD_HOOKS: ReadonlyArray<{
|
|
3
|
+
event: string;
|
|
4
|
+
mode: 'claim' | 'close';
|
|
5
|
+
}>;
|
|
6
|
+
/**
|
|
7
|
+
* The command Claude Code runs for one half of the loop.
|
|
8
|
+
*
|
|
9
|
+
* Both paths are quoted because either can contain a space — a Windows home
|
|
10
|
+
* directory ("C:\\Users\\First Last") reaches here, and an unquoted command
|
|
11
|
+
* splits at it.
|
|
12
|
+
*/
|
|
13
|
+
export declare function boardHookCommand(execPath: string, cliEntry: string, mode: 'claim' | 'close'): string;
|
|
14
|
+
/**
|
|
15
|
+
* True when this hooks.json entry is one of ours.
|
|
16
|
+
*
|
|
17
|
+
* It answers for two shapes. The first is the CLI command above. The second is
|
|
18
|
+
* `chat_recall_task_hook.sh`, a wrapper that shipped briefly and did nothing
|
|
19
|
+
* but pipe stdin to that same command — a registration pointing at it survives
|
|
20
|
+
* an upgrade, and the script it names is gone, so it must be recognised to be
|
|
21
|
+
* cleaned up.
|
|
22
|
+
*/
|
|
23
|
+
export declare function isBoardHookEntry(entry: unknown): boolean;
|
|
24
|
+
/** The `[event, entry]` pairs for a hooks.json. */
|
|
25
|
+
export declare function boardHookEntries(execPath: string, cliEntry: string): Array<[string, {
|
|
26
|
+
matcher: string;
|
|
27
|
+
hooks: Array<{
|
|
28
|
+
type: string;
|
|
29
|
+
command: string;
|
|
30
|
+
}>;
|
|
31
|
+
}]>;
|
|
32
|
+
/**
|
|
33
|
+
* Merge the board hooks into one already-parsed hooks.json object.
|
|
34
|
+
*
|
|
35
|
+
* Every prior entry of ours is dropped first, so a reinstall after an upgrade
|
|
36
|
+
* replaces a stale bundle path instead of stacking a second registration.
|
|
37
|
+
* Entries that are not ours are untouched: a profile carries the resume hint on
|
|
38
|
+
* the same event.
|
|
39
|
+
*/
|
|
40
|
+
export declare function mergeBoardHooks(config: {
|
|
41
|
+
hooks?: Record<string, unknown[]>;
|
|
42
|
+
}, execPath: string, cliEntry: string): void;
|
|
43
|
+
/** Drop the board hooks from one already-parsed hooks.json object. */
|
|
44
|
+
export declare function removeBoardHooks(config: {
|
|
45
|
+
hooks?: Record<string, unknown[]>;
|
|
46
|
+
}): number;
|
|
47
|
+
/**
|
|
48
|
+
* Register the board hooks in every given hooks.json.
|
|
49
|
+
*
|
|
50
|
+
* Returns the files it wrote. A file it cannot parse is skipped rather than
|
|
51
|
+
* overwritten: another tool's config is not ours to replace.
|
|
52
|
+
*/
|
|
53
|
+
export declare function registerBoardHooks(files: string[], execPath: string, cliEntry: string): string[];
|
|
54
|
+
/** Resolve the CLI entry that a hook should run. */
|
|
55
|
+
export declare function resolveCliEntry(distDir: string): string;
|
|
56
|
+
//# sourceMappingURL=board-hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board-hooks.d.ts","sourceRoot":"","sources":["../src/board-hooks.ts"],"names":[],"mappings":"AAqBA,yEAAyE;AACzE,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAA;CAAE,CAGjF,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAEpG;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKxD;AAED,mDAAmD;AACnD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,KAAK,CAAC,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAAC,CAKvF;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;CAAE,EAC7C,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,IAAI,CASN;AAED,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;CAAE,GAAG,MAAM,CAWtF;AAYD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAehG;AAED,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGvD"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registration for the two board hooks, on every platform.
|
|
3
|
+
*
|
|
4
|
+
* The other five hooks are POSIX shell scripts, and `install-hooks` refuses to
|
|
5
|
+
* register any of them on Windows: Claude Code runs a hook command through
|
|
6
|
+
* cmd.exe, which cannot execute a `.sh`. Registering them there put an error on
|
|
7
|
+
* every interaction.
|
|
8
|
+
*
|
|
9
|
+
* These two need no shell. The work is `chat-recall task-hook`, a CLI command
|
|
10
|
+
* that reads the hook payload on stdin, so the registered command is the CLI
|
|
11
|
+
* itself — node plus the bundle path, both quoted. cmd.exe and sh run that
|
|
12
|
+
* string identically, so a Windows user gets the board loop that a mac and
|
|
13
|
+
* Linux user get.
|
|
14
|
+
*
|
|
15
|
+
* Registration is also the only reason the loop reaches anyone: `init` never
|
|
16
|
+
* installed hooks, so until now the board moved for whoever had separately run
|
|
17
|
+
* `chat-recall install-hooks`.
|
|
18
|
+
*/
|
|
19
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
20
|
+
import { dirname, join } from 'node:path';
|
|
21
|
+
/** The two events the board loop needs, and the flag each one passes. */
|
|
22
|
+
export const BOARD_HOOKS = [
|
|
23
|
+
{ event: 'UserPromptSubmit', mode: 'claim' },
|
|
24
|
+
{ event: 'SessionEnd', mode: 'close' },
|
|
25
|
+
];
|
|
26
|
+
/**
|
|
27
|
+
* The command Claude Code runs for one half of the loop.
|
|
28
|
+
*
|
|
29
|
+
* Both paths are quoted because either can contain a space — a Windows home
|
|
30
|
+
* directory ("C:\\Users\\First Last") reaches here, and an unquoted command
|
|
31
|
+
* splits at it.
|
|
32
|
+
*/
|
|
33
|
+
export function boardHookCommand(execPath, cliEntry, mode) {
|
|
34
|
+
return `"${execPath}" "${cliEntry}" task-hook --${mode}`;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* True when this hooks.json entry is one of ours.
|
|
38
|
+
*
|
|
39
|
+
* It answers for two shapes. The first is the CLI command above. The second is
|
|
40
|
+
* `chat_recall_task_hook.sh`, a wrapper that shipped briefly and did nothing
|
|
41
|
+
* but pipe stdin to that same command — a registration pointing at it survives
|
|
42
|
+
* an upgrade, and the script it names is gone, so it must be recognised to be
|
|
43
|
+
* cleaned up.
|
|
44
|
+
*/
|
|
45
|
+
export function isBoardHookEntry(entry) {
|
|
46
|
+
const cmd = entry?.hooks?.[0]?.command;
|
|
47
|
+
if (typeof cmd !== 'string')
|
|
48
|
+
return false;
|
|
49
|
+
if (cmd.includes('chat_recall_task_hook.sh'))
|
|
50
|
+
return true;
|
|
51
|
+
return cmd.includes('task-hook') && (cmd.includes('--claim') || cmd.includes('--close'));
|
|
52
|
+
}
|
|
53
|
+
/** The `[event, entry]` pairs for a hooks.json. */
|
|
54
|
+
export function boardHookEntries(execPath, cliEntry) {
|
|
55
|
+
return BOARD_HOOKS.map(({ event, mode }) => [
|
|
56
|
+
event,
|
|
57
|
+
{ matcher: '', hooks: [{ type: 'command', command: boardHookCommand(execPath, cliEntry, mode) }] },
|
|
58
|
+
]);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Merge the board hooks into one already-parsed hooks.json object.
|
|
62
|
+
*
|
|
63
|
+
* Every prior entry of ours is dropped first, so a reinstall after an upgrade
|
|
64
|
+
* replaces a stale bundle path instead of stacking a second registration.
|
|
65
|
+
* Entries that are not ours are untouched: a profile carries the resume hint on
|
|
66
|
+
* the same event.
|
|
67
|
+
*/
|
|
68
|
+
export function mergeBoardHooks(config, execPath, cliEntry) {
|
|
69
|
+
if (!config.hooks || typeof config.hooks !== 'object')
|
|
70
|
+
config.hooks = {};
|
|
71
|
+
const entries = boardHookEntries(execPath, cliEntry);
|
|
72
|
+
for (const { event } of BOARD_HOOKS) {
|
|
73
|
+
const current = Array.isArray(config.hooks[event]) ? config.hooks[event] : [];
|
|
74
|
+
const kept = current.filter((h) => !isBoardHookEntry(h));
|
|
75
|
+
for (const [ev, entry] of entries)
|
|
76
|
+
if (ev === event)
|
|
77
|
+
kept.push(entry);
|
|
78
|
+
config.hooks[event] = kept;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/** Drop the board hooks from one already-parsed hooks.json object. */
|
|
82
|
+
export function removeBoardHooks(config) {
|
|
83
|
+
if (!config.hooks)
|
|
84
|
+
return 0;
|
|
85
|
+
let removed = 0;
|
|
86
|
+
for (const { event } of BOARD_HOOKS) {
|
|
87
|
+
const current = Array.isArray(config.hooks[event]) ? config.hooks[event] : [];
|
|
88
|
+
const kept = current.filter((h) => !isBoardHookEntry(h));
|
|
89
|
+
removed += current.length - kept.length;
|
|
90
|
+
if (kept.length)
|
|
91
|
+
config.hooks[event] = kept;
|
|
92
|
+
else
|
|
93
|
+
delete config.hooks[event];
|
|
94
|
+
}
|
|
95
|
+
return removed;
|
|
96
|
+
}
|
|
97
|
+
/** Read a hooks.json, tolerating an absent or unreadable file. */
|
|
98
|
+
function readConfig(file) {
|
|
99
|
+
if (!existsSync(file))
|
|
100
|
+
return { hooks: {} };
|
|
101
|
+
try {
|
|
102
|
+
const parsed = JSON.parse(readFileSync(file, 'utf-8'));
|
|
103
|
+
if (!parsed.hooks || typeof parsed.hooks !== 'object')
|
|
104
|
+
parsed.hooks = {};
|
|
105
|
+
return parsed;
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return { hooks: {} };
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Register the board hooks in every given hooks.json.
|
|
113
|
+
*
|
|
114
|
+
* Returns the files it wrote. A file it cannot parse is skipped rather than
|
|
115
|
+
* overwritten: another tool's config is not ours to replace.
|
|
116
|
+
*/
|
|
117
|
+
export function registerBoardHooks(files, execPath, cliEntry) {
|
|
118
|
+
const written = [];
|
|
119
|
+
for (const file of files) {
|
|
120
|
+
if (existsSync(file)) {
|
|
121
|
+
try {
|
|
122
|
+
JSON.parse(readFileSync(file, 'utf-8'));
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
const config = readConfig(file);
|
|
129
|
+
mergeBoardHooks(config, execPath, cliEntry);
|
|
130
|
+
try {
|
|
131
|
+
mkdirSync(dirname(file), { recursive: true });
|
|
132
|
+
writeFileSync(file, JSON.stringify(config, null, 2) + '\n');
|
|
133
|
+
written.push(file);
|
|
134
|
+
}
|
|
135
|
+
catch { /* a read-only profile directory is not a reason to fail setup */ }
|
|
136
|
+
}
|
|
137
|
+
return written;
|
|
138
|
+
}
|
|
139
|
+
/** Resolve the CLI entry that a hook should run. */
|
|
140
|
+
export function resolveCliEntry(distDir) {
|
|
141
|
+
const bundled = join(distDir, 'cli.js');
|
|
142
|
+
return existsSync(bundled) ? bundled : join(distDir, 'cli.ts');
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=board-hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board-hooks.js","sourceRoot":"","sources":["../src/board-hooks.ts"],"names":[],"mappings":"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"}
|