chat-recall 0.5.5 → 0.5.7
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 +332 -0
- package/dist/cli.js +11473 -8310
- package/dist/cli.js.map +1 -1
- package/dist/code-index-cursor.d.ts +18 -0
- package/dist/code-index-cursor.d.ts.map +1 -0
- package/dist/code-index-cursor.js +89 -0
- package/dist/code-index-cursor.js.map +1 -0
- package/dist/daemon-log.d.ts +44 -0
- package/dist/daemon-log.d.ts.map +1 -0
- package/dist/daemon-log.js +74 -0
- package/dist/daemon-log.js.map +1 -0
- package/dist/derived.d.ts +20 -0
- package/dist/derived.d.ts.map +1 -0
- package/dist/derived.js +106 -0
- package/dist/derived.js.map +1 -0
- package/dist/install-skills.d.ts.map +1 -1
- package/dist/install-skills.js +6 -1
- package/dist/install-skills.js.map +1 -1
- package/dist/log-rotate.d.ts +16 -0
- package/dist/log-rotate.d.ts.map +1 -0
- package/dist/log-rotate.js +50 -0
- package/dist/log-rotate.js.map +1 -0
- package/dist/mcp-diagnostics.d.ts.map +1 -1
- package/dist/mcp-diagnostics.js +10 -8
- package/dist/mcp-diagnostics.js.map +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +5763 -3045
- package/dist/mcp.js.map +1 -1
- package/dist/project-tasks.d.ts.map +1 -1
- package/dist/project-tasks.js +13 -8
- package/dist/project-tasks.js.map +1 -1
- package/dist/redact-deep.d.ts +4 -0
- package/dist/redact-deep.d.ts.map +1 -0
- package/dist/redact-deep.js +26 -0
- package/dist/redact-deep.js.map +1 -0
- package/dist/scan-pool.d.ts +56 -0
- package/dist/scan-pool.d.ts.map +1 -0
- package/dist/scan-pool.js +245 -0
- package/dist/scan-pool.js.map +1 -0
- package/dist/scan-worker.d.ts +78 -0
- package/dist/scan-worker.d.ts.map +1 -0
- package/dist/scan-worker.js +11175 -0
- package/dist/scan-worker.js.map +1 -0
- package/dist/self-restart.d.ts +20 -2
- package/dist/self-restart.d.ts.map +1 -1
- package/dist/self-restart.js +16 -6
- package/dist/self-restart.js.map +1 -1
- package/dist/server-probe.d.ts +76 -0
- package/dist/server-probe.d.ts.map +1 -0
- package/dist/server-probe.js +106 -0
- package/dist/server-probe.js.map +1 -0
- package/dist/service-installer.d.ts +1 -1
- package/dist/service-installer.d.ts.map +1 -1
- package/dist/service-installer.js +20 -6
- package/dist/service-installer.js.map +1 -1
- package/dist/sync-client.d.ts +25 -0
- package/dist/sync-client.d.ts.map +1 -1
- package/dist/sync-client.js +590 -176
- package/dist/sync-client.js.map +1 -1
- package/dist/sync-ledger.d.ts +22 -0
- package/dist/sync-ledger.d.ts.map +1 -1
- package/dist/sync-ledger.js +108 -1
- package/dist/sync-ledger.js.map +1 -1
- package/dist/target-breaker.d.ts +61 -0
- package/dist/target-breaker.d.ts.map +1 -0
- package/dist/target-breaker.js +85 -0
- package/dist/target-breaker.js.map +1 -0
- package/dist/telemetry-consent.d.ts +31 -0
- package/dist/telemetry-consent.d.ts.map +1 -0
- package/dist/telemetry-consent.js +115 -0
- package/dist/telemetry-consent.js.map +1 -0
- package/dist/telemetry.d.ts +22 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +125 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tick-queue.d.ts +67 -0
- package/dist/tick-queue.d.ts.map +1 -0
- package/dist/tick-queue.js +104 -0
- package/dist/tick-queue.js.map +1 -0
- package/dist/transport-safety.d.ts +43 -0
- package/dist/transport-safety.d.ts.map +1 -0
- package/dist/transport-safety.js +100 -0
- package/dist/transport-safety.js.map +1 -0
- package/dist/verify-repair.js +1 -1
- package/dist/verify-repair.js.map +1 -1
- package/dist/watch.js +8887 -6028
- package/hooks/chat_recall_escalate_hook.sh +28 -2
- package/hooks/chat_recall_save_hook.sh +17 -11
- package/hooks/chat_recall_wakeup_hook.sh +27 -1
- package/package.json +27 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tick-queue.js","sourceRoot":"","sources":["../src/tick-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Refuse to ship a transcript over a connection anyone can read.
|
|
3
|
+
*
|
|
4
|
+
* ── The hole this closes ─────────────────────────────────────────────────
|
|
5
|
+
* TLS to the hosted service was never in doubt — valid cert, HSTS for a year,
|
|
6
|
+
* plain HTTP redirected. But NOTHING in the collector required it. A user who
|
|
7
|
+
* typed `chat-recall login http://recall.mycompany.com` got exactly what they
|
|
8
|
+
* asked for: every transcript on the machine, in cleartext, over the open
|
|
9
|
+
* internet, with no warning at any point. `isLocalHost()` existed to relax
|
|
10
|
+
* upload pacing for LAN targets, not to gate the scheme, so a public host over
|
|
11
|
+
* plain HTTP passed every check.
|
|
12
|
+
*
|
|
13
|
+
* The payload makes this worse than a generic cleartext warning deserves. A sync
|
|
14
|
+
* body carries whole transcripts: source code, file paths, and — despite
|
|
15
|
+
* client-side redaction being good — whatever the detectors did not recognise as
|
|
16
|
+
* a secret. This is the single highest-value thing the product ever puts on a
|
|
17
|
+
* wire.
|
|
18
|
+
*
|
|
19
|
+
* ── Where the line is ────────────────────────────────────────────────────
|
|
20
|
+
* Plain HTTP is fine to a host only YOU can reach, and that is the whole
|
|
21
|
+
* exception. Loopback, mDNS/`.lan` names, RFC1918, IPv6 loopback and ULA, and
|
|
22
|
+
* the CGNAT range Tailscale hands out — a self-hoster on any of those has no
|
|
23
|
+
* public path to intercept. Everything else needs TLS.
|
|
24
|
+
*
|
|
25
|
+
* `CHAT_RECALL_ALLOW_INSECURE_HTTP=1` overrides it, for the real case this
|
|
26
|
+
* would otherwise break: a corporate host reached through a VPN whose name and
|
|
27
|
+
* address both look public. That is a deliberate, per-machine decision, which is
|
|
28
|
+
* exactly the bar an override like this should meet.
|
|
29
|
+
*/
|
|
30
|
+
/** Hosts only reachable from the user's own machine or network. */
|
|
31
|
+
export declare function isPrivateHost(serverUrl: string): boolean;
|
|
32
|
+
/** Explicit, per-machine opt-out for a VPN-reached host that looks public. */
|
|
33
|
+
export declare function insecureHttpAllowed(env?: NodeJS.ProcessEnv): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Why this target must not be used, or null when it is safe.
|
|
36
|
+
*
|
|
37
|
+
* Pure, so both the login gate and the sync-time gate can share one rule and a
|
|
38
|
+
* test can pin it without a network.
|
|
39
|
+
*/
|
|
40
|
+
export declare function transportRisk(serverUrl: string, env?: NodeJS.ProcessEnv): string | null;
|
|
41
|
+
/** Throwing form, for the login path. */
|
|
42
|
+
export declare function assertTransportSafe(serverUrl: string, env?: NodeJS.ProcessEnv): void;
|
|
43
|
+
//# sourceMappingURL=transport-safety.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-safety.d.ts","sourceRoot":"","sources":["../src/transport-safety.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAgBxD;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAGjF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,IAAI,CAWf;AAED,yCAAyC;AACzC,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,IAAI,CAGjG"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Refuse to ship a transcript over a connection anyone can read.
|
|
3
|
+
*
|
|
4
|
+
* ── The hole this closes ─────────────────────────────────────────────────
|
|
5
|
+
* TLS to the hosted service was never in doubt — valid cert, HSTS for a year,
|
|
6
|
+
* plain HTTP redirected. But NOTHING in the collector required it. A user who
|
|
7
|
+
* typed `chat-recall login http://recall.mycompany.com` got exactly what they
|
|
8
|
+
* asked for: every transcript on the machine, in cleartext, over the open
|
|
9
|
+
* internet, with no warning at any point. `isLocalHost()` existed to relax
|
|
10
|
+
* upload pacing for LAN targets, not to gate the scheme, so a public host over
|
|
11
|
+
* plain HTTP passed every check.
|
|
12
|
+
*
|
|
13
|
+
* The payload makes this worse than a generic cleartext warning deserves. A sync
|
|
14
|
+
* body carries whole transcripts: source code, file paths, and — despite
|
|
15
|
+
* client-side redaction being good — whatever the detectors did not recognise as
|
|
16
|
+
* a secret. This is the single highest-value thing the product ever puts on a
|
|
17
|
+
* wire.
|
|
18
|
+
*
|
|
19
|
+
* ── Where the line is ────────────────────────────────────────────────────
|
|
20
|
+
* Plain HTTP is fine to a host only YOU can reach, and that is the whole
|
|
21
|
+
* exception. Loopback, mDNS/`.lan` names, RFC1918, IPv6 loopback and ULA, and
|
|
22
|
+
* the CGNAT range Tailscale hands out — a self-hoster on any of those has no
|
|
23
|
+
* public path to intercept. Everything else needs TLS.
|
|
24
|
+
*
|
|
25
|
+
* `CHAT_RECALL_ALLOW_INSECURE_HTTP=1` overrides it, for the real case this
|
|
26
|
+
* would otherwise break: a corporate host reached through a VPN whose name and
|
|
27
|
+
* address both look public. That is a deliberate, per-machine decision, which is
|
|
28
|
+
* exactly the bar an override like this should meet.
|
|
29
|
+
*/
|
|
30
|
+
/** Hosts only reachable from the user's own machine or network. */
|
|
31
|
+
export function isPrivateHost(serverUrl) {
|
|
32
|
+
let host = '';
|
|
33
|
+
try {
|
|
34
|
+
host = new URL(serverUrl).hostname.toLowerCase();
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
// IPv6 arrives bracket-stripped from URL.hostname.
|
|
40
|
+
if (host === 'localhost' || host === '127.0.0.1' || host === '::1' || host === '0.0.0.0')
|
|
41
|
+
return true;
|
|
42
|
+
if (host.endsWith('.local') || host.endsWith('.lan') || host.endsWith('.internal'))
|
|
43
|
+
return true;
|
|
44
|
+
if (/^10\./.test(host))
|
|
45
|
+
return true; // 10.0.0.0/8
|
|
46
|
+
if (/^192\.168\./.test(host))
|
|
47
|
+
return true; // 192.168.0.0/16
|
|
48
|
+
if (/^172\.(1[6-9]|2\d|3[01])\./.test(host))
|
|
49
|
+
return true; // 172.16.0.0/12
|
|
50
|
+
if (/^127\./.test(host))
|
|
51
|
+
return true; // loopback/8
|
|
52
|
+
// 100.64.0.0/10 — CGNAT, and what Tailscale assigns. A self-hoster reaching
|
|
53
|
+
// their box over a tailnet is on a private path by construction.
|
|
54
|
+
if (/^100\.(6[4-9]|[7-9]\d|1[01]\d|12[0-7])\./.test(host))
|
|
55
|
+
return true;
|
|
56
|
+
if (/^f[cd][0-9a-f]{2}:/.test(host))
|
|
57
|
+
return true; // IPv6 ULA fc00::/7
|
|
58
|
+
if (/^fe80:/.test(host))
|
|
59
|
+
return true; // IPv6 link-local
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
/** Explicit, per-machine opt-out for a VPN-reached host that looks public. */
|
|
63
|
+
export function insecureHttpAllowed(env = process.env) {
|
|
64
|
+
const v = (env.CHAT_RECALL_ALLOW_INSECURE_HTTP || '').trim().toLowerCase();
|
|
65
|
+
return v === '1' || v === 'true' || v === 'yes';
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Why this target must not be used, or null when it is safe.
|
|
69
|
+
*
|
|
70
|
+
* Pure, so both the login gate and the sync-time gate can share one rule and a
|
|
71
|
+
* test can pin it without a network.
|
|
72
|
+
*/
|
|
73
|
+
export function transportRisk(serverUrl, env = process.env) {
|
|
74
|
+
let url;
|
|
75
|
+
try {
|
|
76
|
+
url = new URL(serverUrl);
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return `not a valid server URL: ${serverUrl}`;
|
|
80
|
+
}
|
|
81
|
+
if (url.protocol === 'https:')
|
|
82
|
+
return null;
|
|
83
|
+
if (url.protocol !== 'http:')
|
|
84
|
+
return `unsupported scheme '${url.protocol}' — use https://`;
|
|
85
|
+
if (isPrivateHost(serverUrl))
|
|
86
|
+
return null; // your own network
|
|
87
|
+
if (insecureHttpAllowed(env))
|
|
88
|
+
return null; // deliberate override
|
|
89
|
+
return `refusing to sync to ${url.host} over plain HTTP — your transcripts, `
|
|
90
|
+
+ 'file paths and any secret the redactor did not catch would cross the '
|
|
91
|
+
+ `internet in cleartext. Use https://${url.host} instead. If this host is `
|
|
92
|
+
+ 'only reachable through a VPN, set CHAT_RECALL_ALLOW_INSECURE_HTTP=1.';
|
|
93
|
+
}
|
|
94
|
+
/** Throwing form, for the login path. */
|
|
95
|
+
export function assertTransportSafe(serverUrl, env = process.env) {
|
|
96
|
+
const risk = transportRisk(serverUrl, env);
|
|
97
|
+
if (risk)
|
|
98
|
+
throw new Error(risk);
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=transport-safety.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-safety.js","sourceRoot":"","sources":["../src/transport-safety.ts"],"names":[],"mappings":"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"}
|
package/dist/verify-repair.js
CHANGED
|
@@ -35,7 +35,7 @@ export function forceFullResync(server, sessionIds) {
|
|
|
35
35
|
let cleared = 0;
|
|
36
36
|
for (const key of Object.keys(data)) {
|
|
37
37
|
// Ledger keys are prefixed ids for non-Claude tools; match either form.
|
|
38
|
-
const bare = key.replace(/^(opencode_|gemini_|codex_|agy_)/, '');
|
|
38
|
+
const bare = key.replace(/^(opencode_|gemini_|codex_|agy_|cursor_)/, '');
|
|
39
39
|
if (!wanted.has(key) && !wanted.has(bare))
|
|
40
40
|
continue;
|
|
41
41
|
const row = data[key];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-repair.js","sourceRoot":"","sources":["../src/verify-repair.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEpF;qEACqE;AACrE,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,UAAoB;IAClE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAEtC,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC;YAAC,YAAY,CAAC,IAAI,EAAE,GAAG,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,wBAAwB,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IACnC,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,wEAAwE;QACxE,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"verify-repair.js","sourceRoot":"","sources":["../src/verify-repair.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEpF;qEACqE;AACrE,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,UAAoB;IAClE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAEtC,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC;YAAC,YAAY,CAAC,IAAI,EAAE,GAAG,IAAI,QAAQ,KAAK,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,wBAAwB,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IACnC,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,wEAAwE;QACxE,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,0CAA0C,EAAE,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,OAAO,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QACvF,MAAM,CAAC,GAAG,GAAyC,CAAC;QACpD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAM,cAAc;QAC/B,OAAO,CAAC,CAAC,CAAC,CAAC,CAAM,sBAAsB;QACvC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAM,4DAA4D;QAC7E,OAAO,CAAC,CAAC,CAAC,CAAC,CAAM,sDAAsD;QACvE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,OAAO,GAAG,CAAC;QAAE,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|