chat-recall 0.5.7 → 0.5.8
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/dist/cli.js +53 -9
- package/dist/mcp.js +42 -8
- package/dist/watch.js +44 -10
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -18259,23 +18259,57 @@ function commandPreview(cfg) {
|
|
|
18259
18259
|
}
|
|
18260
18260
|
return "";
|
|
18261
18261
|
}
|
|
18262
|
+
function redactInlineSecrets(value) {
|
|
18263
|
+
let redacted = false;
|
|
18264
|
+
let out = value;
|
|
18265
|
+
out = out.replace(/(\w+:\/\/[^:/@\s]+:)([^@\s]{1,512})(@)/g, (_m, head, _pw, tail) => {
|
|
18266
|
+
redacted = true;
|
|
18267
|
+
return `${head}__SECRET_NOT_SYNCED__${tail}`;
|
|
18268
|
+
});
|
|
18269
|
+
const tokenShapes = [
|
|
18270
|
+
/\bsk-[A-Za-z0-9_-]{16,}\b/g,
|
|
18271
|
+
// OpenAI-style
|
|
18272
|
+
/\bgh[pousr]_[A-Za-z0-9]{16,}\b/g,
|
|
18273
|
+
// GitHub
|
|
18274
|
+
/\bAIza[0-9A-Za-z_-]{20,}\b/g,
|
|
18275
|
+
// Google
|
|
18276
|
+
/\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g
|
|
18277
|
+
// Slack
|
|
18278
|
+
];
|
|
18279
|
+
for (const re of tokenShapes) {
|
|
18280
|
+
out = out.replace(re, () => {
|
|
18281
|
+
redacted = true;
|
|
18282
|
+
return "__SECRET_NOT_SYNCED__";
|
|
18283
|
+
});
|
|
18284
|
+
}
|
|
18285
|
+
return { text: out, redacted };
|
|
18286
|
+
}
|
|
18262
18287
|
function reconstructionSpec(cfg) {
|
|
18263
18288
|
const out = {
|
|
18264
18289
|
type: cfg.type || (cfg.url ? "remote" : "local"),
|
|
18265
18290
|
enabled: cfg.enabled !== false
|
|
18266
18291
|
};
|
|
18292
|
+
let hidSecret = false;
|
|
18293
|
+
const clean = (v) => {
|
|
18294
|
+
const r = redactInlineSecrets(v);
|
|
18295
|
+
if (r.redacted)
|
|
18296
|
+
hidSecret = true;
|
|
18297
|
+
return r.text;
|
|
18298
|
+
};
|
|
18267
18299
|
if (typeof cfg.url === "string" && cfg.url)
|
|
18268
|
-
out.url = cfg.url;
|
|
18300
|
+
out.url = clean(cfg.url);
|
|
18269
18301
|
if (Array.isArray(cfg.command))
|
|
18270
|
-
out.command = cfg.command;
|
|
18302
|
+
out.command = cfg.command.map(clean);
|
|
18271
18303
|
else if (typeof cfg.command === "string")
|
|
18272
|
-
out.command = cfg.command;
|
|
18304
|
+
out.command = clean(cfg.command);
|
|
18273
18305
|
if (Array.isArray(cfg.args))
|
|
18274
|
-
out.args = cfg.args;
|
|
18306
|
+
out.args = cfg.args.map((a) => clean(String(a)));
|
|
18275
18307
|
if (Array.isArray(cfg.alwaysAllow))
|
|
18276
18308
|
out.alwaysAllow = cfg.alwaysAllow;
|
|
18277
18309
|
if (cfg.env && typeof cfg.env === "object")
|
|
18278
18310
|
out.envKeys = Object.keys(cfg.env).sort();
|
|
18311
|
+
if (hidSecret)
|
|
18312
|
+
out.secretsRedacted = true;
|
|
18279
18313
|
return out;
|
|
18280
18314
|
}
|
|
18281
18315
|
var McpsSource;
|
|
@@ -18358,7 +18392,7 @@ var init_mcps_source = __esm({
|
|
|
18358
18392
|
}
|
|
18359
18393
|
for (const [name, cfgRaw] of Object.entries(obj)) {
|
|
18360
18394
|
const cfg = cfgRaw || {};
|
|
18361
|
-
const cmd = commandPreview(cfg);
|
|
18395
|
+
const cmd = redactInlineSecrets(commandPreview(cfg)).text;
|
|
18362
18396
|
const allow = Array.isArray(cfg.alwaysAllow) ? cfg.alwaysAllow.slice(0, 8) : [];
|
|
18363
18397
|
const spec = reconstructionSpec(cfg);
|
|
18364
18398
|
yield {
|
|
@@ -19589,7 +19623,7 @@ var init_http = __esm({
|
|
|
19589
19623
|
CLI_VERSION = JSON.parse(readFileSync33(new URL("../package.json", import.meta.url), "utf-8")).version || CLI_VERSION;
|
|
19590
19624
|
} catch {
|
|
19591
19625
|
try {
|
|
19592
|
-
if (true) CLI_VERSION = "0.5.
|
|
19626
|
+
if (true) CLI_VERSION = "0.5.8";
|
|
19593
19627
|
} catch {
|
|
19594
19628
|
}
|
|
19595
19629
|
}
|
|
@@ -20101,7 +20135,7 @@ var init_telemetry = __esm({
|
|
|
20101
20135
|
init_sync_client();
|
|
20102
20136
|
cliVersion2 = () => {
|
|
20103
20137
|
try {
|
|
20104
|
-
return true ? "0.5.
|
|
20138
|
+
return true ? "0.5.8" : "dev";
|
|
20105
20139
|
} catch {
|
|
20106
20140
|
return "dev";
|
|
20107
20141
|
}
|
|
@@ -21869,7 +21903,7 @@ var init_sync_client = __esm({
|
|
|
21869
21903
|
ownVersion = JSON.parse(readFileSync36(join44(dir, "../package.json"), "utf-8")).version || ownVersion;
|
|
21870
21904
|
} catch {
|
|
21871
21905
|
try {
|
|
21872
|
-
if (true) ownVersion = "0.5.
|
|
21906
|
+
if (true) ownVersion = "0.5.8";
|
|
21873
21907
|
} catch {
|
|
21874
21908
|
}
|
|
21875
21909
|
}
|
|
@@ -23403,6 +23437,16 @@ function executePull(rows, opts = {}) {
|
|
|
23403
23437
|
outcomes.push({ type: "mcp", name, tool, status: "present" });
|
|
23404
23438
|
continue;
|
|
23405
23439
|
}
|
|
23440
|
+
if (spec.secretsRedacted) {
|
|
23441
|
+
outcomes.push({
|
|
23442
|
+
type: "mcp",
|
|
23443
|
+
name,
|
|
23444
|
+
tool,
|
|
23445
|
+
status: "skipped",
|
|
23446
|
+
reason: "its command contains a secret, which is never uploaded \u2014 register this one by hand"
|
|
23447
|
+
});
|
|
23448
|
+
continue;
|
|
23449
|
+
}
|
|
23406
23450
|
const entry = { ...built.entry };
|
|
23407
23451
|
let rewrittenCommand;
|
|
23408
23452
|
if (!entry.url) {
|
|
@@ -25325,7 +25369,7 @@ var init_intent_drain = __esm({
|
|
|
25325
25369
|
ownVersion2 = JSON.parse(readFileSync45(join55(dir, "../package.json"), "utf-8")).version || ownVersion2;
|
|
25326
25370
|
} catch {
|
|
25327
25371
|
try {
|
|
25328
|
-
if (true) ownVersion2 = "0.5.
|
|
25372
|
+
if (true) ownVersion2 = "0.5.8";
|
|
25329
25373
|
} catch {
|
|
25330
25374
|
}
|
|
25331
25375
|
}
|
package/dist/mcp.js
CHANGED
|
@@ -17597,23 +17597,57 @@ function commandPreview(cfg) {
|
|
|
17597
17597
|
}
|
|
17598
17598
|
return "";
|
|
17599
17599
|
}
|
|
17600
|
+
function redactInlineSecrets(value) {
|
|
17601
|
+
let redacted = false;
|
|
17602
|
+
let out = value;
|
|
17603
|
+
out = out.replace(/(\w+:\/\/[^:/@\s]+:)([^@\s]{1,512})(@)/g, (_m, head, _pw, tail) => {
|
|
17604
|
+
redacted = true;
|
|
17605
|
+
return `${head}__SECRET_NOT_SYNCED__${tail}`;
|
|
17606
|
+
});
|
|
17607
|
+
const tokenShapes = [
|
|
17608
|
+
/\bsk-[A-Za-z0-9_-]{16,}\b/g,
|
|
17609
|
+
// OpenAI-style
|
|
17610
|
+
/\bgh[pousr]_[A-Za-z0-9]{16,}\b/g,
|
|
17611
|
+
// GitHub
|
|
17612
|
+
/\bAIza[0-9A-Za-z_-]{20,}\b/g,
|
|
17613
|
+
// Google
|
|
17614
|
+
/\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g
|
|
17615
|
+
// Slack
|
|
17616
|
+
];
|
|
17617
|
+
for (const re of tokenShapes) {
|
|
17618
|
+
out = out.replace(re, () => {
|
|
17619
|
+
redacted = true;
|
|
17620
|
+
return "__SECRET_NOT_SYNCED__";
|
|
17621
|
+
});
|
|
17622
|
+
}
|
|
17623
|
+
return { text: out, redacted };
|
|
17624
|
+
}
|
|
17600
17625
|
function reconstructionSpec(cfg) {
|
|
17601
17626
|
const out = {
|
|
17602
17627
|
type: cfg.type || (cfg.url ? "remote" : "local"),
|
|
17603
17628
|
enabled: cfg.enabled !== false
|
|
17604
17629
|
};
|
|
17630
|
+
let hidSecret = false;
|
|
17631
|
+
const clean = (v) => {
|
|
17632
|
+
const r = redactInlineSecrets(v);
|
|
17633
|
+
if (r.redacted)
|
|
17634
|
+
hidSecret = true;
|
|
17635
|
+
return r.text;
|
|
17636
|
+
};
|
|
17605
17637
|
if (typeof cfg.url === "string" && cfg.url)
|
|
17606
|
-
out.url = cfg.url;
|
|
17638
|
+
out.url = clean(cfg.url);
|
|
17607
17639
|
if (Array.isArray(cfg.command))
|
|
17608
|
-
out.command = cfg.command;
|
|
17640
|
+
out.command = cfg.command.map(clean);
|
|
17609
17641
|
else if (typeof cfg.command === "string")
|
|
17610
|
-
out.command = cfg.command;
|
|
17642
|
+
out.command = clean(cfg.command);
|
|
17611
17643
|
if (Array.isArray(cfg.args))
|
|
17612
|
-
out.args = cfg.args;
|
|
17644
|
+
out.args = cfg.args.map((a) => clean(String(a)));
|
|
17613
17645
|
if (Array.isArray(cfg.alwaysAllow))
|
|
17614
17646
|
out.alwaysAllow = cfg.alwaysAllow;
|
|
17615
17647
|
if (cfg.env && typeof cfg.env === "object")
|
|
17616
17648
|
out.envKeys = Object.keys(cfg.env).sort();
|
|
17649
|
+
if (hidSecret)
|
|
17650
|
+
out.secretsRedacted = true;
|
|
17617
17651
|
return out;
|
|
17618
17652
|
}
|
|
17619
17653
|
var McpsSource;
|
|
@@ -17696,7 +17730,7 @@ var init_mcps_source = __esm({
|
|
|
17696
17730
|
}
|
|
17697
17731
|
for (const [name, cfgRaw] of Object.entries(obj)) {
|
|
17698
17732
|
const cfg = cfgRaw || {};
|
|
17699
|
-
const cmd = commandPreview(cfg);
|
|
17733
|
+
const cmd = redactInlineSecrets(commandPreview(cfg)).text;
|
|
17700
17734
|
const allow = Array.isArray(cfg.alwaysAllow) ? cfg.alwaysAllow.slice(0, 8) : [];
|
|
17701
17735
|
const spec = reconstructionSpec(cfg);
|
|
17702
17736
|
yield {
|
|
@@ -18901,7 +18935,7 @@ var init_http = __esm({
|
|
|
18901
18935
|
CLI_VERSION = JSON.parse(readFileSync33(new URL("../package.json", import.meta.url), "utf-8")).version || CLI_VERSION;
|
|
18902
18936
|
} catch {
|
|
18903
18937
|
try {
|
|
18904
|
-
if (true) CLI_VERSION = "0.5.
|
|
18938
|
+
if (true) CLI_VERSION = "0.5.8";
|
|
18905
18939
|
} catch {
|
|
18906
18940
|
}
|
|
18907
18941
|
}
|
|
@@ -19413,7 +19447,7 @@ var init_telemetry = __esm({
|
|
|
19413
19447
|
init_sync_client();
|
|
19414
19448
|
cliVersion2 = () => {
|
|
19415
19449
|
try {
|
|
19416
|
-
return true ? "0.5.
|
|
19450
|
+
return true ? "0.5.8" : "dev";
|
|
19417
19451
|
} catch {
|
|
19418
19452
|
return "dev";
|
|
19419
19453
|
}
|
|
@@ -21113,7 +21147,7 @@ var init_sync_client = __esm({
|
|
|
21113
21147
|
ownVersion = JSON.parse(readFileSync35(join45(dir, "../package.json"), "utf-8")).version || ownVersion;
|
|
21114
21148
|
} catch {
|
|
21115
21149
|
try {
|
|
21116
|
-
if (true) ownVersion = "0.5.
|
|
21150
|
+
if (true) ownVersion = "0.5.8";
|
|
21117
21151
|
} catch {
|
|
21118
21152
|
}
|
|
21119
21153
|
}
|
package/dist/watch.js
CHANGED
|
@@ -17701,23 +17701,57 @@ function commandPreview(cfg) {
|
|
|
17701
17701
|
}
|
|
17702
17702
|
return "";
|
|
17703
17703
|
}
|
|
17704
|
+
function redactInlineSecrets(value) {
|
|
17705
|
+
let redacted = false;
|
|
17706
|
+
let out = value;
|
|
17707
|
+
out = out.replace(/(\w+:\/\/[^:/@\s]+:)([^@\s]{1,512})(@)/g, (_m, head, _pw, tail) => {
|
|
17708
|
+
redacted = true;
|
|
17709
|
+
return `${head}__SECRET_NOT_SYNCED__${tail}`;
|
|
17710
|
+
});
|
|
17711
|
+
const tokenShapes = [
|
|
17712
|
+
/\bsk-[A-Za-z0-9_-]{16,}\b/g,
|
|
17713
|
+
// OpenAI-style
|
|
17714
|
+
/\bgh[pousr]_[A-Za-z0-9]{16,}\b/g,
|
|
17715
|
+
// GitHub
|
|
17716
|
+
/\bAIza[0-9A-Za-z_-]{20,}\b/g,
|
|
17717
|
+
// Google
|
|
17718
|
+
/\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g
|
|
17719
|
+
// Slack
|
|
17720
|
+
];
|
|
17721
|
+
for (const re of tokenShapes) {
|
|
17722
|
+
out = out.replace(re, () => {
|
|
17723
|
+
redacted = true;
|
|
17724
|
+
return "__SECRET_NOT_SYNCED__";
|
|
17725
|
+
});
|
|
17726
|
+
}
|
|
17727
|
+
return { text: out, redacted };
|
|
17728
|
+
}
|
|
17704
17729
|
function reconstructionSpec(cfg) {
|
|
17705
17730
|
const out = {
|
|
17706
17731
|
type: cfg.type || (cfg.url ? "remote" : "local"),
|
|
17707
17732
|
enabled: cfg.enabled !== false
|
|
17708
17733
|
};
|
|
17734
|
+
let hidSecret = false;
|
|
17735
|
+
const clean = (v) => {
|
|
17736
|
+
const r = redactInlineSecrets(v);
|
|
17737
|
+
if (r.redacted)
|
|
17738
|
+
hidSecret = true;
|
|
17739
|
+
return r.text;
|
|
17740
|
+
};
|
|
17709
17741
|
if (typeof cfg.url === "string" && cfg.url)
|
|
17710
|
-
out.url = cfg.url;
|
|
17742
|
+
out.url = clean(cfg.url);
|
|
17711
17743
|
if (Array.isArray(cfg.command))
|
|
17712
|
-
out.command = cfg.command;
|
|
17744
|
+
out.command = cfg.command.map(clean);
|
|
17713
17745
|
else if (typeof cfg.command === "string")
|
|
17714
|
-
out.command = cfg.command;
|
|
17746
|
+
out.command = clean(cfg.command);
|
|
17715
17747
|
if (Array.isArray(cfg.args))
|
|
17716
|
-
out.args = cfg.args;
|
|
17748
|
+
out.args = cfg.args.map((a) => clean(String(a)));
|
|
17717
17749
|
if (Array.isArray(cfg.alwaysAllow))
|
|
17718
17750
|
out.alwaysAllow = cfg.alwaysAllow;
|
|
17719
17751
|
if (cfg.env && typeof cfg.env === "object")
|
|
17720
17752
|
out.envKeys = Object.keys(cfg.env).sort();
|
|
17753
|
+
if (hidSecret)
|
|
17754
|
+
out.secretsRedacted = true;
|
|
17721
17755
|
return out;
|
|
17722
17756
|
}
|
|
17723
17757
|
var McpsSource;
|
|
@@ -17800,7 +17834,7 @@ var init_mcps_source = __esm({
|
|
|
17800
17834
|
}
|
|
17801
17835
|
for (const [name, cfgRaw] of Object.entries(obj)) {
|
|
17802
17836
|
const cfg = cfgRaw || {};
|
|
17803
|
-
const cmd = commandPreview(cfg);
|
|
17837
|
+
const cmd = redactInlineSecrets(commandPreview(cfg)).text;
|
|
17804
17838
|
const allow = Array.isArray(cfg.alwaysAllow) ? cfg.alwaysAllow.slice(0, 8) : [];
|
|
17805
17839
|
const spec = reconstructionSpec(cfg);
|
|
17806
17840
|
yield {
|
|
@@ -19072,7 +19106,7 @@ var init_http = __esm({
|
|
|
19072
19106
|
CLI_VERSION = JSON.parse(readFileSync33(new URL("../package.json", import.meta.url), "utf-8")).version || CLI_VERSION;
|
|
19073
19107
|
} catch {
|
|
19074
19108
|
try {
|
|
19075
|
-
if (true) CLI_VERSION = "0.5.
|
|
19109
|
+
if (true) CLI_VERSION = "0.5.8";
|
|
19076
19110
|
} catch {
|
|
19077
19111
|
}
|
|
19078
19112
|
}
|
|
@@ -19580,7 +19614,7 @@ var init_telemetry = __esm({
|
|
|
19580
19614
|
init_sync_client();
|
|
19581
19615
|
cliVersion = () => {
|
|
19582
19616
|
try {
|
|
19583
|
-
return true ? "0.5.
|
|
19617
|
+
return true ? "0.5.8" : "dev";
|
|
19584
19618
|
} catch {
|
|
19585
19619
|
return "dev";
|
|
19586
19620
|
}
|
|
@@ -21218,7 +21252,7 @@ var init_sync_client = __esm({
|
|
|
21218
21252
|
ownVersion = JSON.parse(readFileSync36(join44(dir, "../package.json"), "utf-8")).version || ownVersion;
|
|
21219
21253
|
} catch {
|
|
21220
21254
|
try {
|
|
21221
|
-
if (true) ownVersion = "0.5.
|
|
21255
|
+
if (true) ownVersion = "0.5.8";
|
|
21222
21256
|
} catch {
|
|
21223
21257
|
}
|
|
21224
21258
|
}
|
|
@@ -23571,7 +23605,7 @@ try {
|
|
|
23571
23605
|
ownVersion2 = JSON.parse(readFileSync40(join48(dir, "../package.json"), "utf-8")).version || ownVersion2;
|
|
23572
23606
|
} catch {
|
|
23573
23607
|
try {
|
|
23574
|
-
if (true) ownVersion2 = "0.5.
|
|
23608
|
+
if (true) ownVersion2 = "0.5.8";
|
|
23575
23609
|
} catch {
|
|
23576
23610
|
}
|
|
23577
23611
|
}
|
|
@@ -23915,7 +23949,7 @@ async function runCollectorMigration(opts) {
|
|
|
23915
23949
|
init_sync_ledger();
|
|
23916
23950
|
init_collector_health();
|
|
23917
23951
|
import { existsSync as existsSync49, readFileSync as readFileSync45 } from "fs";
|
|
23918
|
-
var CLI_VERSION3 = true ? "0.5.
|
|
23952
|
+
var CLI_VERSION3 = true ? "0.5.8" : "0.0.0";
|
|
23919
23953
|
var DEBOUNCE_MS = 5e3;
|
|
23920
23954
|
var CLAUDE_DIR = claudeBackend.projectsDir();
|
|
23921
23955
|
var PLANS_DIR = claudeBackend.plansDir();
|