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.
@@ -4964,7 +4964,13 @@ function redactSecrets(text, opts = {}) {
4964
4964
  return whole;
4965
4965
  if (opts.count)
4966
4966
  opts.count.redactions++;
4967
- return whole.slice(0, whole.length - secret.length) + `[REDACTED:${r.label}]`;
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
- out = out.slice(0, start) + "[REDACTED:secret-context]" + out.slice(end);
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
- { label: "url-password", secret: 1, pattern: /\b[a-zA-Z][a-zA-Z0-9+.-]{1,31}:\/\/[^:@\s/]{1,64}:([^@\s/]{1,256})(?=@)/g },
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/parsers/banners.js
5200
- var init_banners = __esm({
5201
- "../engine/dist/parsers/banners.js"() {
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 = 2;
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 init_codex = __esm({
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
- init_claude();
9432
+ init_claude2();
9296
9433
  init_opencode();
9297
- init_codex();
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 init_claude = __esm({
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
- init_claude();
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 = task.files.map((f) => ({
11090
- name: f.name,
11091
- text: redactSecrets(f.text, { force: true, count })
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 });
@@ -1 +1 @@
1
- {"version":3,"file":"scan-worker.js","sourceRoot":"","sources":["../src/scan-worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scan-worker.js","sourceRoot":"","sources":["../src/scan-worker.ts"],"names":[],"mappings":"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"}
@@ -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, mapContainerText, buildRawContainer, containerSrcHash, parseTranscriptFromContainer, updateShadow, shadowUncompressedBytes } from '@chat-recall/engine/transcript/index.js';
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 = mapContainerText(container, (t) => redactSecrets(t, { force: true, count: count2 }));
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) {