chat-recall 0.7.11 → 0.7.13
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 +202 -25
- package/dist/cli.js.map +1 -1
- package/dist/derived.js +2 -2
- package/dist/derived.js.map +1 -1
- package/dist/mcp-relay.js +1 -1
- package/dist/mcp.js +290 -79
- package/dist/scan-worker.d.ts.map +1 -1
- package/dist/scan-worker.js +205 -104
- 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 +189 -16
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan-worker.d.ts","sourceRoot":"","sources":["../src/scan-worker.ts"],"names":[],"mappings":"AA8BA,OAAO,EAEL,KAAK,cAAc,EAAE,KAAK,eAAe,EAC1C,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"scan-worker.d.ts","sourceRoot":"","sources":["../src/scan-worker.ts"],"names":[],"mappings":"AA8BA,OAAO,EAEL,KAAK,cAAc,EAAE,KAAK,eAAe,EAC1C,MAAM,6CAA6C,CAAC;AAGrD,oEAAoE;AACpE,MAAM,WAAW,QAAQ;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAExD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC;IACpD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAChJ,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,2EAA2E;IAC3E,SAAS,EAAE;QAAE,CAAC,EAAE,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,gEAAgE;IAChE,UAAU,EAAE,OAAO,CAAC;IACpB,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC;IACpD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
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";
|
|
@@ -5648,7 +5829,7 @@ function markersFromTurns(sessionId, turns) {
|
|
|
5648
5829
|
const prompts = turns.filter((t) => t.kind === "user" && t.text).map((t) => ({ line: t.line, ts: t.ts, tsIso: t.tsIso, ...markPrompt(t.text) }));
|
|
5649
5830
|
return { v: MARKERS_VERSION, sessionId, prompts, summary: summarizeMarkers(prompts) };
|
|
5650
5831
|
}
|
|
5651
|
-
var PROFANITY, PROFANITY_LOOSE, APPROVAL_HEAD, NEG_HEAD, QUESTION_HEAD, DIRECTIVE_HEAD, CLARIFY_PHRASES, FRUSTRATED_PHRASES, MARKERS_VERSION;
|
|
5832
|
+
var PROFANITY, PROFANITY_LOOSE, APPROVAL_HEAD, NEG_HEAD, QUESTION_HEAD, DIRECTIVE_HEAD, CLARIFY_PHRASES, FRUSTRATED_PHRASES, MARKERS_VERSION, MARKERS_TURN_OPTS;
|
|
5652
5833
|
var init_session_sentiment = __esm({
|
|
5653
5834
|
"../engine/dist/core/session-sentiment.js"() {
|
|
5654
5835
|
"use strict";
|
|
@@ -5661,7 +5842,8 @@ 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;
|
|
5846
|
+
MARKERS_TURN_OPTS = { maxTurns: 5e4, userMax: Number.POSITIVE_INFINITY };
|
|
5665
5847
|
}
|
|
5666
5848
|
});
|
|
5667
5849
|
|
|
@@ -5832,50 +6014,6 @@ var init_session_git = __esm({
|
|
|
5832
6014
|
}
|
|
5833
6015
|
});
|
|
5834
6016
|
|
|
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
6017
|
// ../engine/dist/core/sqlite-reader.js
|
|
5880
6018
|
import { createRequire as createRequire2 } from "node:module";
|
|
5881
6019
|
function filterExperimentalWarning() {
|
|
@@ -5931,6 +6069,7 @@ function shorten(text, max) {
|
|
|
5931
6069
|
function extractTurnsFromEvents(sessionId, events, opts = {}) {
|
|
5932
6070
|
const maxTurns = opts.maxTurns ?? DEFAULT_MAX_TURNS;
|
|
5933
6071
|
const assistantMax = opts.assistantMax ?? DEFAULT_ASSISTANT_MAX;
|
|
6072
|
+
const userMax = opts.userMax ?? DEFAULT_USER_MAX;
|
|
5934
6073
|
const turns = [];
|
|
5935
6074
|
let startMs = 0, endMs = 0;
|
|
5936
6075
|
let found = false;
|
|
@@ -5948,7 +6087,7 @@ function extractTurnsFromEvents(sessionId, events, opts = {}) {
|
|
|
5948
6087
|
ts: e.ts,
|
|
5949
6088
|
tsIso: e.tsIso,
|
|
5950
6089
|
line: e.line,
|
|
5951
|
-
text: shorten(e.text,
|
|
6090
|
+
text: shorten(e.text, userMax)
|
|
5952
6091
|
});
|
|
5953
6092
|
} else if (e.kind === "assistant_text" && e.text) {
|
|
5954
6093
|
turns.push({
|
|
@@ -6967,7 +7106,7 @@ function readFirstLine(path) {
|
|
|
6967
7106
|
}
|
|
6968
7107
|
}
|
|
6969
7108
|
var PREFIX2, CodexBackend, codexBackend;
|
|
6970
|
-
var
|
|
7109
|
+
var init_codex2 = __esm({
|
|
6971
7110
|
"../engine/dist/core/backends/codex.js"() {
|
|
6972
7111
|
"use strict";
|
|
6973
7112
|
init_tool_paths();
|
|
@@ -9292,9 +9431,9 @@ var init_backends = __esm({
|
|
|
9292
9431
|
"../engine/dist/core/backends/index.js"() {
|
|
9293
9432
|
"use strict";
|
|
9294
9433
|
init_tool_backend();
|
|
9295
|
-
|
|
9434
|
+
init_claude2();
|
|
9296
9435
|
init_opencode();
|
|
9297
|
-
|
|
9436
|
+
init_codex2();
|
|
9298
9437
|
init_agy();
|
|
9299
9438
|
init_cursor();
|
|
9300
9439
|
init_tool_backend();
|
|
@@ -9307,7 +9446,7 @@ function extractTurnsAny(sessionId, opts = {}) {
|
|
|
9307
9446
|
const backend = getBackendForId(sessionId);
|
|
9308
9447
|
if (!backend)
|
|
9309
9448
|
return { sessionId, found: false, turns: [], startMs: 0, endMs: 0 };
|
|
9310
|
-
return memoInSessionScope(`turns:${sessionId}:${opts.maxTurns ?? ""}:${opts.assistantMax ?? ""}`, () => backend.extractTurns(sessionId, opts));
|
|
9449
|
+
return memoInSessionScope(`turns:${sessionId}:${opts.maxTurns ?? ""}:${opts.assistantMax ?? ""}:${opts.userMax ?? ""}`, () => backend.extractTurns(sessionId, opts));
|
|
9311
9450
|
}
|
|
9312
9451
|
function replaySessionAny(sessionId) {
|
|
9313
9452
|
const backend = getBackendForId(sessionId);
|
|
@@ -9688,7 +9827,7 @@ function parseExitCode(text) {
|
|
|
9688
9827
|
return m ? Number(m[1]) : void 0;
|
|
9689
9828
|
}
|
|
9690
9829
|
var UUID_RE, ClaudeBackend, claudeBackend;
|
|
9691
|
-
var
|
|
9830
|
+
var init_claude2 = __esm({
|
|
9692
9831
|
"../engine/dist/core/backends/claude.js"() {
|
|
9693
9832
|
"use strict";
|
|
9694
9833
|
init_live_session_scan();
|
|
@@ -10340,52 +10479,13 @@ var init_session = __esm({
|
|
|
10340
10479
|
"use strict";
|
|
10341
10480
|
init_banners();
|
|
10342
10481
|
init_claude_prompt_origin();
|
|
10343
|
-
|
|
10482
|
+
init_claude2();
|
|
10344
10483
|
init_tool_paths();
|
|
10345
10484
|
init_project_dir_name();
|
|
10346
10485
|
init_model_pricing();
|
|
10347
10486
|
}
|
|
10348
10487
|
});
|
|
10349
10488
|
|
|
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
10489
|
// ../engine/dist/transcript/shadow.js
|
|
10390
10490
|
import { createHash } from "crypto";
|
|
10391
10491
|
function sha1(s) {
|
|
@@ -11016,7 +11116,7 @@ function collectDerivedRows(ref, mtime, count, maxRowBytes) {
|
|
|
11016
11116
|
if (!fullOutcome) fullOutcome = computeOutcome(id);
|
|
11017
11117
|
if (fullOutcome.found) data = fullOutcome.commits;
|
|
11018
11118
|
} else if (kind === "markers") {
|
|
11019
|
-
const turns = extractTurnsAny(id,
|
|
11119
|
+
const turns = extractTurnsAny(id, MARKERS_TURN_OPTS);
|
|
11020
11120
|
data = markersFromTurns(id, turns.turns);
|
|
11021
11121
|
}
|
|
11022
11122
|
} catch {
|
|
@@ -11069,6 +11169,7 @@ var init_derived = __esm({
|
|
|
11069
11169
|
|
|
11070
11170
|
// src/scan-worker.ts
|
|
11071
11171
|
init_secret_redactor();
|
|
11172
|
+
init_raw();
|
|
11072
11173
|
import { parentPort } from "node:worker_threads";
|
|
11073
11174
|
import { gzipSync } from "node:zlib";
|
|
11074
11175
|
var installedPackVersion = "";
|
|
@@ -11086,10 +11187,10 @@ function runTask(task) {
|
|
|
11086
11187
|
const count = { redactions: 0 };
|
|
11087
11188
|
let rawB64;
|
|
11088
11189
|
let rawSize;
|
|
11089
|
-
const redacted =
|
|
11090
|
-
|
|
11091
|
-
|
|
11092
|
-
|
|
11190
|
+
const redacted = redactContainer(
|
|
11191
|
+
{ v: 1, tool: task.container.tool, mtime: task.container.mtime, files: task.files },
|
|
11192
|
+
(t) => redactSecrets(t, { force: true, count })
|
|
11193
|
+
).files;
|
|
11093
11194
|
if (task.includeRaw) {
|
|
11094
11195
|
try {
|
|
11095
11196
|
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) {
|