chat-recall 0.7.10 → 0.7.12
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/auto-update.d.ts +31 -0
- package/dist/auto-update.d.ts.map +1 -1
- package/dist/auto-update.js +81 -15
- package/dist/auto-update.js.map +1 -1
- package/dist/cli.js +241 -29
- package/dist/cli.js.map +1 -1
- package/dist/mcp-relay.js +1 -1
- package/dist/mcp.js +235 -27
- package/dist/scan-worker.d.ts.map +1 -1
- package/dist/scan-worker.js +199 -100
- package/dist/scan-worker.js.map +1 -1
- package/dist/sync-client.js +2 -2
- package/dist/sync-client.js.map +1 -1
- package/dist/watch.js +241 -28
- package/package.json +1 -1
package/dist/scan-worker.js
CHANGED
|
@@ -4964,7 +4964,13 @@ function redactSecrets(text, opts = {}) {
|
|
|
4964
4964
|
return whole;
|
|
4965
4965
|
if (opts.count)
|
|
4966
4966
|
opts.count.redactions++;
|
|
4967
|
-
|
|
4967
|
+
let last = args.length - 1;
|
|
4968
|
+
if (typeof args[last] === "object")
|
|
4969
|
+
last--;
|
|
4970
|
+
const source = args[last];
|
|
4971
|
+
const secretStart = args[last - 1] + whole.length - secret.length;
|
|
4972
|
+
const head = escapeHead(source, secretStart, secret.length);
|
|
4973
|
+
return whole.slice(0, whole.length - secret.length + head) + `[REDACTED:${r.label}]` + escapeKept(whole, whole.length);
|
|
4968
4974
|
});
|
|
4969
4975
|
}
|
|
4970
4976
|
const ctx = findContextualSecrets(out);
|
|
@@ -4972,10 +4978,25 @@ function redactSecrets(text, opts = {}) {
|
|
|
4972
4978
|
const { start, end } = ctx[i];
|
|
4973
4979
|
if (opts.count)
|
|
4974
4980
|
opts.count.redactions++;
|
|
4975
|
-
|
|
4981
|
+
const head = escapeHead(out, start, end - start);
|
|
4982
|
+
out = out.slice(0, start + head) + "[REDACTED:secret-context]" + escapeKept(out, end) + out.slice(end);
|
|
4976
4983
|
}
|
|
4977
4984
|
return out;
|
|
4978
4985
|
}
|
|
4986
|
+
function escapeKept(text, end) {
|
|
4987
|
+
let run = 0;
|
|
4988
|
+
while (run < end && text.charCodeAt(end - 1 - run) === 92)
|
|
4989
|
+
run++;
|
|
4990
|
+
return run % 2 === 1 ? "\\" : "";
|
|
4991
|
+
}
|
|
4992
|
+
function escapeHead(text, start, length) {
|
|
4993
|
+
let run = 0;
|
|
4994
|
+
while (run < start && text.charCodeAt(start - 1 - run) === 92)
|
|
4995
|
+
run++;
|
|
4996
|
+
if (run % 2 === 0)
|
|
4997
|
+
return 0;
|
|
4998
|
+
return Math.min(text[start] === "u" ? 5 : 1, length);
|
|
4999
|
+
}
|
|
4979
5000
|
function maskSecret(s) {
|
|
4980
5001
|
if (!s)
|
|
4981
5002
|
return "";
|
|
@@ -5082,7 +5103,12 @@ var init_secret_redactor = __esm({
|
|
|
5082
5103
|
// userinfo URL walked through in cleartext — and a `jdbc:postgresql://…`
|
|
5083
5104
|
// prefix broke the \b anchor for the one family it did cover. Any scheme
|
|
5084
5105
|
// followed by userinfo is a credential, so match the shape, not a list.
|
|
5085
|
-
|
|
5106
|
+
//
|
|
5107
|
+
// A quote in userinfo is percent-encoded, so neither part takes a `"`. The
|
|
5108
|
+
// sync redacts JSONL text, and a match that ran on through `","is_error":`
|
|
5109
|
+
// to a later `@` replaced JSON structure: 4 lines on one machine stopped
|
|
5110
|
+
// parsing, and their records were dropped.
|
|
5111
|
+
{ label: "url-password", secret: 1, pattern: /\b[a-zA-Z][a-zA-Z0-9+.-]{1,31}:\/\/[^:@\s/"]{1,64}:([^@\s/"]{1,256})(?=@)/g },
|
|
5086
5112
|
// Bare AWS secret-access-key VALUE: EXACTLY 40 base64 chars, word-bounded,
|
|
5087
5113
|
// containing upper+lower+digit. This is the gitleaks heuristic — the mixed-case
|
|
5088
5114
|
// requirement excludes 40-char lowercase-hex git SHAs, and the exact-40 bound
|
|
@@ -5196,10 +5222,47 @@ var init_secret_redactor = __esm({
|
|
|
5196
5222
|
}
|
|
5197
5223
|
});
|
|
5198
5224
|
|
|
5199
|
-
// ../engine/dist/
|
|
5200
|
-
|
|
5201
|
-
"
|
|
5225
|
+
// ../engine/dist/core/tool-backend.js
|
|
5226
|
+
function isMultiFileDelta(d) {
|
|
5227
|
+
return !!d && "perFile" in d;
|
|
5228
|
+
}
|
|
5229
|
+
function registerBackend(backend) {
|
|
5230
|
+
REGISTRY.set(backend.id, backend);
|
|
5231
|
+
}
|
|
5232
|
+
function getBackendForId(id) {
|
|
5233
|
+
ensureBootstrapped();
|
|
5234
|
+
for (const b of REGISTRY.values()) {
|
|
5235
|
+
if (b.idPrefix && b.matchesId(id))
|
|
5236
|
+
return b;
|
|
5237
|
+
}
|
|
5238
|
+
for (const b of REGISTRY.values()) {
|
|
5239
|
+
if (b.idPrefix === "" && b.matchesId(id))
|
|
5240
|
+
return b;
|
|
5241
|
+
}
|
|
5242
|
+
return null;
|
|
5243
|
+
}
|
|
5244
|
+
function _setRegistryBootstrapper(fn) {
|
|
5245
|
+
_bootstrapper = fn;
|
|
5246
|
+
}
|
|
5247
|
+
function ensureBootstrapped() {
|
|
5248
|
+
if (_bootstrapped || REGISTRY.size > 0)
|
|
5249
|
+
return;
|
|
5250
|
+
if (_bootstrapper) {
|
|
5251
|
+
_bootstrapped = true;
|
|
5252
|
+
_bootstrapper();
|
|
5253
|
+
}
|
|
5254
|
+
}
|
|
5255
|
+
function listAvailableBackends() {
|
|
5256
|
+
ensureBootstrapped();
|
|
5257
|
+
return [...REGISTRY.values()].filter((b) => b.isAvailable());
|
|
5258
|
+
}
|
|
5259
|
+
var REGISTRY, _bootstrapper, _bootstrapped;
|
|
5260
|
+
var init_tool_backend = __esm({
|
|
5261
|
+
"../engine/dist/core/tool-backend.js"() {
|
|
5202
5262
|
"use strict";
|
|
5263
|
+
REGISTRY = /* @__PURE__ */ new Map();
|
|
5264
|
+
_bootstrapper = null;
|
|
5265
|
+
_bootstrapped = false;
|
|
5203
5266
|
}
|
|
5204
5267
|
});
|
|
5205
5268
|
|
|
@@ -5260,12 +5323,130 @@ var init_claude_prompt_origin = __esm({
|
|
|
5260
5323
|
INJECTED_PREFIXES = [
|
|
5261
5324
|
["<task-notification", "task-notification"],
|
|
5262
5325
|
["<agent-message", "peer"],
|
|
5326
|
+
["<cross-session-message", "peer"],
|
|
5327
|
+
["[Cross-session delivery notice]", "peer"],
|
|
5263
5328
|
["Another Claude session sent a message:", "peer"],
|
|
5264
|
-
["Stop hook feedback:", "hook"]
|
|
5329
|
+
["Stop hook feedback:", "hook"],
|
|
5330
|
+
["<bash-stdout>", "command-output"],
|
|
5331
|
+
["<bash-stderr>", "command-output"],
|
|
5332
|
+
["<local-command-stdout>", "command-output"],
|
|
5333
|
+
["<local-command-stderr>", "command-output"],
|
|
5334
|
+
["<<autonomous-loop", "meta"]
|
|
5265
5335
|
];
|
|
5266
5336
|
}
|
|
5267
5337
|
});
|
|
5268
5338
|
|
|
5339
|
+
// ../engine/dist/transcript/claude.js
|
|
5340
|
+
var log2;
|
|
5341
|
+
var init_claude = __esm({
|
|
5342
|
+
"../engine/dist/transcript/claude.js"() {
|
|
5343
|
+
"use strict";
|
|
5344
|
+
init_logger();
|
|
5345
|
+
init_claude_prompt_origin();
|
|
5346
|
+
log2 = createLogger("transcript-claude");
|
|
5347
|
+
}
|
|
5348
|
+
});
|
|
5349
|
+
|
|
5350
|
+
// ../engine/dist/transcript/codex.js
|
|
5351
|
+
var log3;
|
|
5352
|
+
var init_codex = __esm({
|
|
5353
|
+
"../engine/dist/transcript/codex.js"() {
|
|
5354
|
+
"use strict";
|
|
5355
|
+
init_logger();
|
|
5356
|
+
log3 = createLogger("transcript-codex");
|
|
5357
|
+
}
|
|
5358
|
+
});
|
|
5359
|
+
|
|
5360
|
+
// ../engine/dist/transcript/from-events.js
|
|
5361
|
+
var init_from_events = __esm({
|
|
5362
|
+
"../engine/dist/transcript/from-events.js"() {
|
|
5363
|
+
"use strict";
|
|
5364
|
+
}
|
|
5365
|
+
});
|
|
5366
|
+
|
|
5367
|
+
// ../engine/dist/transcript/raw.js
|
|
5368
|
+
function redactJsonLine(line, redact) {
|
|
5369
|
+
if (!line.includes('"'))
|
|
5370
|
+
return redact(line);
|
|
5371
|
+
try {
|
|
5372
|
+
JSON.parse(line);
|
|
5373
|
+
} catch {
|
|
5374
|
+
return redact(line);
|
|
5375
|
+
}
|
|
5376
|
+
const decoded = mapJsonStrings(line, redact, true);
|
|
5377
|
+
const out = redact(decoded);
|
|
5378
|
+
try {
|
|
5379
|
+
JSON.parse(out);
|
|
5380
|
+
return out;
|
|
5381
|
+
} catch {
|
|
5382
|
+
return mapJsonStrings(decoded, redact, false);
|
|
5383
|
+
}
|
|
5384
|
+
}
|
|
5385
|
+
function mapJsonStrings(line, fn, escapedOnly) {
|
|
5386
|
+
let out = "";
|
|
5387
|
+
let i = 0;
|
|
5388
|
+
for (; ; ) {
|
|
5389
|
+
const q = line.indexOf('"', i);
|
|
5390
|
+
if (q < 0)
|
|
5391
|
+
return out + line.slice(i);
|
|
5392
|
+
let j = q + 1;
|
|
5393
|
+
while (j < line.length) {
|
|
5394
|
+
const c = line.charCodeAt(j);
|
|
5395
|
+
if (c === 92)
|
|
5396
|
+
j += 2;
|
|
5397
|
+
else if (c === 34)
|
|
5398
|
+
break;
|
|
5399
|
+
else
|
|
5400
|
+
j++;
|
|
5401
|
+
}
|
|
5402
|
+
const token = line.slice(q, j + 1);
|
|
5403
|
+
out += line.slice(i, q);
|
|
5404
|
+
i = j + 1;
|
|
5405
|
+
const body = token.slice(1, -1);
|
|
5406
|
+
const escaped = body.includes("\\");
|
|
5407
|
+
if (escapedOnly && !escaped) {
|
|
5408
|
+
out += token;
|
|
5409
|
+
continue;
|
|
5410
|
+
}
|
|
5411
|
+
let value = body;
|
|
5412
|
+
if (escaped) {
|
|
5413
|
+
try {
|
|
5414
|
+
value = JSON.parse(token);
|
|
5415
|
+
} catch {
|
|
5416
|
+
out += token;
|
|
5417
|
+
continue;
|
|
5418
|
+
}
|
|
5419
|
+
}
|
|
5420
|
+
const next = fn(value);
|
|
5421
|
+
out += next === value ? token : JSON.stringify(next);
|
|
5422
|
+
}
|
|
5423
|
+
}
|
|
5424
|
+
function redactContainer(c, redact) {
|
|
5425
|
+
return {
|
|
5426
|
+
...c,
|
|
5427
|
+
files: c.files.map((f) => ({
|
|
5428
|
+
name: f.name,
|
|
5429
|
+
text: f.name.endsWith(".jsonl") ? f.text.split("\n").map((l) => l ? redactJsonLine(l, redact) : l).join("\n") : redact(f.text)
|
|
5430
|
+
}))
|
|
5431
|
+
};
|
|
5432
|
+
}
|
|
5433
|
+
var init_raw = __esm({
|
|
5434
|
+
"../engine/dist/transcript/raw.js"() {
|
|
5435
|
+
"use strict";
|
|
5436
|
+
init_tool_backend();
|
|
5437
|
+
init_claude();
|
|
5438
|
+
init_codex();
|
|
5439
|
+
init_from_events();
|
|
5440
|
+
}
|
|
5441
|
+
});
|
|
5442
|
+
|
|
5443
|
+
// ../engine/dist/parsers/banners.js
|
|
5444
|
+
var init_banners = __esm({
|
|
5445
|
+
"../engine/dist/parsers/banners.js"() {
|
|
5446
|
+
"use strict";
|
|
5447
|
+
}
|
|
5448
|
+
});
|
|
5449
|
+
|
|
5269
5450
|
// ../engine/dist/core/home-approval.js
|
|
5270
5451
|
import { existsSync as existsSync2, readdirSync, realpathSync } from "fs";
|
|
5271
5452
|
import { homedir as homedir2 } from "os";
|
|
@@ -5661,7 +5842,7 @@ var init_session_sentiment = __esm({
|
|
|
5661
5842
|
DIRECTIVE_HEAD = /^(?:please\s+)?(?:use|implement|build|make|add|create|fix|remove|delete|update|refactor|run|deploy|push|merge|test|check|investigate|find|search|show|list|generate|set\s+up|ensure)\b/i;
|
|
5662
5843
|
CLARIFY_PHRASES = /\b(?:wdym|what do you mean|explain|clarify|what is|what's|huh\??|i don'?t understand)\b/i;
|
|
5663
5844
|
FRUSTRATED_PHRASES = /\b(?:why (?:the )?(?:fuck|hell)|wtf|are you (?:kidding|serious)|stop slacking|stop making|why did you|why didn'?t you|i (?:fucking )?(?:asked|told you)|are you (?:listening|even)|come\s*on|just\s+do)\b/i;
|
|
5664
|
-
MARKERS_VERSION =
|
|
5845
|
+
MARKERS_VERSION = 3;
|
|
5665
5846
|
}
|
|
5666
5847
|
});
|
|
5667
5848
|
|
|
@@ -5832,50 +6013,6 @@ var init_session_git = __esm({
|
|
|
5832
6013
|
}
|
|
5833
6014
|
});
|
|
5834
6015
|
|
|
5835
|
-
// ../engine/dist/core/tool-backend.js
|
|
5836
|
-
function isMultiFileDelta(d) {
|
|
5837
|
-
return !!d && "perFile" in d;
|
|
5838
|
-
}
|
|
5839
|
-
function registerBackend(backend) {
|
|
5840
|
-
REGISTRY.set(backend.id, backend);
|
|
5841
|
-
}
|
|
5842
|
-
function getBackendForId(id) {
|
|
5843
|
-
ensureBootstrapped();
|
|
5844
|
-
for (const b of REGISTRY.values()) {
|
|
5845
|
-
if (b.idPrefix && b.matchesId(id))
|
|
5846
|
-
return b;
|
|
5847
|
-
}
|
|
5848
|
-
for (const b of REGISTRY.values()) {
|
|
5849
|
-
if (b.idPrefix === "" && b.matchesId(id))
|
|
5850
|
-
return b;
|
|
5851
|
-
}
|
|
5852
|
-
return null;
|
|
5853
|
-
}
|
|
5854
|
-
function _setRegistryBootstrapper(fn) {
|
|
5855
|
-
_bootstrapper = fn;
|
|
5856
|
-
}
|
|
5857
|
-
function ensureBootstrapped() {
|
|
5858
|
-
if (_bootstrapped || REGISTRY.size > 0)
|
|
5859
|
-
return;
|
|
5860
|
-
if (_bootstrapper) {
|
|
5861
|
-
_bootstrapped = true;
|
|
5862
|
-
_bootstrapper();
|
|
5863
|
-
}
|
|
5864
|
-
}
|
|
5865
|
-
function listAvailableBackends() {
|
|
5866
|
-
ensureBootstrapped();
|
|
5867
|
-
return [...REGISTRY.values()].filter((b) => b.isAvailable());
|
|
5868
|
-
}
|
|
5869
|
-
var REGISTRY, _bootstrapper, _bootstrapped;
|
|
5870
|
-
var init_tool_backend = __esm({
|
|
5871
|
-
"../engine/dist/core/tool-backend.js"() {
|
|
5872
|
-
"use strict";
|
|
5873
|
-
REGISTRY = /* @__PURE__ */ new Map();
|
|
5874
|
-
_bootstrapper = null;
|
|
5875
|
-
_bootstrapped = false;
|
|
5876
|
-
}
|
|
5877
|
-
});
|
|
5878
|
-
|
|
5879
6016
|
// ../engine/dist/core/sqlite-reader.js
|
|
5880
6017
|
import { createRequire as createRequire2 } from "node:module";
|
|
5881
6018
|
function filterExperimentalWarning() {
|
|
@@ -6967,7 +7104,7 @@ function readFirstLine(path) {
|
|
|
6967
7104
|
}
|
|
6968
7105
|
}
|
|
6969
7106
|
var PREFIX2, CodexBackend, codexBackend;
|
|
6970
|
-
var
|
|
7107
|
+
var init_codex2 = __esm({
|
|
6971
7108
|
"../engine/dist/core/backends/codex.js"() {
|
|
6972
7109
|
"use strict";
|
|
6973
7110
|
init_tool_paths();
|
|
@@ -9292,9 +9429,9 @@ var init_backends = __esm({
|
|
|
9292
9429
|
"../engine/dist/core/backends/index.js"() {
|
|
9293
9430
|
"use strict";
|
|
9294
9431
|
init_tool_backend();
|
|
9295
|
-
|
|
9432
|
+
init_claude2();
|
|
9296
9433
|
init_opencode();
|
|
9297
|
-
|
|
9434
|
+
init_codex2();
|
|
9298
9435
|
init_agy();
|
|
9299
9436
|
init_cursor();
|
|
9300
9437
|
init_tool_backend();
|
|
@@ -9688,7 +9825,7 @@ function parseExitCode(text) {
|
|
|
9688
9825
|
return m ? Number(m[1]) : void 0;
|
|
9689
9826
|
}
|
|
9690
9827
|
var UUID_RE, ClaudeBackend, claudeBackend;
|
|
9691
|
-
var
|
|
9828
|
+
var init_claude2 = __esm({
|
|
9692
9829
|
"../engine/dist/core/backends/claude.js"() {
|
|
9693
9830
|
"use strict";
|
|
9694
9831
|
init_live_session_scan();
|
|
@@ -10340,52 +10477,13 @@ var init_session = __esm({
|
|
|
10340
10477
|
"use strict";
|
|
10341
10478
|
init_banners();
|
|
10342
10479
|
init_claude_prompt_origin();
|
|
10343
|
-
|
|
10480
|
+
init_claude2();
|
|
10344
10481
|
init_tool_paths();
|
|
10345
10482
|
init_project_dir_name();
|
|
10346
10483
|
init_model_pricing();
|
|
10347
10484
|
}
|
|
10348
10485
|
});
|
|
10349
10486
|
|
|
10350
|
-
// ../engine/dist/transcript/claude.js
|
|
10351
|
-
var log2;
|
|
10352
|
-
var init_claude2 = __esm({
|
|
10353
|
-
"../engine/dist/transcript/claude.js"() {
|
|
10354
|
-
"use strict";
|
|
10355
|
-
init_logger();
|
|
10356
|
-
init_claude_prompt_origin();
|
|
10357
|
-
log2 = createLogger("transcript-claude");
|
|
10358
|
-
}
|
|
10359
|
-
});
|
|
10360
|
-
|
|
10361
|
-
// ../engine/dist/transcript/codex.js
|
|
10362
|
-
var log3;
|
|
10363
|
-
var init_codex2 = __esm({
|
|
10364
|
-
"../engine/dist/transcript/codex.js"() {
|
|
10365
|
-
"use strict";
|
|
10366
|
-
init_logger();
|
|
10367
|
-
log3 = createLogger("transcript-codex");
|
|
10368
|
-
}
|
|
10369
|
-
});
|
|
10370
|
-
|
|
10371
|
-
// ../engine/dist/transcript/from-events.js
|
|
10372
|
-
var init_from_events = __esm({
|
|
10373
|
-
"../engine/dist/transcript/from-events.js"() {
|
|
10374
|
-
"use strict";
|
|
10375
|
-
}
|
|
10376
|
-
});
|
|
10377
|
-
|
|
10378
|
-
// ../engine/dist/transcript/raw.js
|
|
10379
|
-
var init_raw = __esm({
|
|
10380
|
-
"../engine/dist/transcript/raw.js"() {
|
|
10381
|
-
"use strict";
|
|
10382
|
-
init_tool_backend();
|
|
10383
|
-
init_claude2();
|
|
10384
|
-
init_codex2();
|
|
10385
|
-
init_from_events();
|
|
10386
|
-
}
|
|
10387
|
-
});
|
|
10388
|
-
|
|
10389
10487
|
// ../engine/dist/transcript/shadow.js
|
|
10390
10488
|
import { createHash } from "crypto";
|
|
10391
10489
|
function sha1(s) {
|
|
@@ -11069,6 +11167,7 @@ var init_derived = __esm({
|
|
|
11069
11167
|
|
|
11070
11168
|
// src/scan-worker.ts
|
|
11071
11169
|
init_secret_redactor();
|
|
11170
|
+
init_raw();
|
|
11072
11171
|
import { parentPort } from "node:worker_threads";
|
|
11073
11172
|
import { gzipSync } from "node:zlib";
|
|
11074
11173
|
var installedPackVersion = "";
|
|
@@ -11086,10 +11185,10 @@ function runTask(task) {
|
|
|
11086
11185
|
const count = { redactions: 0 };
|
|
11087
11186
|
let rawB64;
|
|
11088
11187
|
let rawSize;
|
|
11089
|
-
const redacted =
|
|
11090
|
-
|
|
11091
|
-
|
|
11092
|
-
|
|
11188
|
+
const redacted = redactContainer(
|
|
11189
|
+
{ v: 1, tool: task.container.tool, mtime: task.container.mtime, files: task.files },
|
|
11190
|
+
(t) => redactSecrets(t, { force: true, count })
|
|
11191
|
+
).files;
|
|
11093
11192
|
if (task.includeRaw) {
|
|
11094
11193
|
try {
|
|
11095
11194
|
const json = JSON.stringify({ ...task.container, files: redacted });
|
package/dist/scan-worker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan-worker.js","sourceRoot":"","sources":["../src/scan-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EACL,mBAAmB,EAAE,aAAa,EAAE,qBAAqB,GAE1D,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"scan-worker.js","sourceRoot":"","sources":["../src/scan-worker.ts"],"names":[],"mappings":"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"}
|
package/dist/sync-client.js
CHANGED
|
@@ -46,7 +46,7 @@ import { dropFuzzyFindings } from '@chat-recall/engine/core/secret-precision.js'
|
|
|
46
46
|
import { loadSettings, saveSettings, isProjectSyncable } from '@chat-recall/engine/core/settings.js';
|
|
47
47
|
import { getDataDir } from '@chat-recall/engine/core/paths.js';
|
|
48
48
|
import { listAvailableBackends } from '@chat-recall/engine/core/tool-backend.js';
|
|
49
|
-
import { parseTranscript, trimTranscriptForSync, TRANSCRIPT_VERSION, gzipContainer,
|
|
49
|
+
import { parseTranscript, trimTranscriptForSync, TRANSCRIPT_VERSION, gzipContainer, redactContainer, buildRawContainer, containerSrcHash, parseTranscriptFromContainer, updateShadow, shadowUncompressedBytes } from '@chat-recall/engine/transcript/index.js';
|
|
50
50
|
import { parseClaudeTranscriptText } from '@chat-recall/engine/transcript/claude.js';
|
|
51
51
|
import { parseCodexTranscriptText } from '@chat-recall/engine/transcript/codex.js';
|
|
52
52
|
import { getBackendForId, getBackend } from '@chat-recall/engine/core/tool-backend.js';
|
|
@@ -2657,7 +2657,7 @@ export async function buildConversationSync(ref, mtime, opts = {}) {
|
|
|
2657
2657
|
else {
|
|
2658
2658
|
try {
|
|
2659
2659
|
const count2 = { redactions: 0 };
|
|
2660
|
-
const redacted =
|
|
2660
|
+
const redacted = redactContainer(container, (t) => redactSecrets(t, { force: true, count: count2 }));
|
|
2661
2661
|
count.redactions += count2.redactions;
|
|
2662
2662
|
const { gz, size } = gzipContainer(redacted);
|
|
2663
2663
|
if (gz.length <= 8 * 1024 * 1024) {
|