chat-recall 0.7.0 → 0.7.2
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 +34 -0
- package/dist/auto-update.d.ts.map +1 -1
- package/dist/auto-update.js +51 -8
- package/dist/auto-update.js.map +1 -1
- package/dist/cli.js +463 -244
- package/dist/cli.js.map +1 -1
- package/dist/code-index-cursor.d.ts +20 -3
- package/dist/code-index-cursor.d.ts.map +1 -1
- package/dist/code-index-cursor.js +53 -8
- package/dist/code-index-cursor.js.map +1 -1
- package/dist/mcp-relay.js +76 -13
- package/dist/mcp-relay.js.map +1 -1
- package/dist/mcp.js +777 -471
- package/dist/mcp.js.map +1 -1
- package/dist/relay-lifecycle.d.ts +69 -0
- package/dist/relay-lifecycle.d.ts.map +1 -0
- package/dist/relay-lifecycle.js +117 -0
- package/dist/relay-lifecycle.js.map +1 -0
- package/dist/repair.d.ts +2 -0
- package/dist/repair.d.ts.map +1 -1
- package/dist/repair.js +23 -3
- package/dist/repair.js.map +1 -1
- package/dist/scan-worker.js +122 -65
- package/dist/service-installer.d.ts.map +1 -1
- package/dist/service-installer.js +7 -2
- package/dist/service-installer.js.map +1 -1
- package/dist/sync-client.d.ts +38 -5
- package/dist/sync-client.d.ts.map +1 -1
- package/dist/sync-client.js +194 -61
- package/dist/sync-client.js.map +1 -1
- package/dist/sync-supervisor.d.ts +43 -0
- package/dist/sync-supervisor.d.ts.map +1 -0
- package/dist/sync-supervisor.js +84 -0
- package/dist/sync-supervisor.js.map +1 -0
- package/dist/watch.js +470 -213
- package/package.json +1 -1
package/dist/scan-worker.js
CHANGED
|
@@ -6309,23 +6309,8 @@ var init_opencode = __esm({
|
|
|
6309
6309
|
const projectPath = row.project_path || row.directory || "";
|
|
6310
6310
|
if (filter && !projectPath.toLowerCase().includes(filter))
|
|
6311
6311
|
continue;
|
|
6312
|
-
const
|
|
6313
|
-
|
|
6314
|
-
FROM part p JOIN message m ON m.id = p.message_id
|
|
6315
|
-
WHERE p.session_id = ?
|
|
6316
|
-
AND p.data LIKE '%"type":"text"%'
|
|
6317
|
-
AND m.data LIKE '%"role":"user"%'
|
|
6318
|
-
ORDER BY p.time_created ASC LIMIT 1
|
|
6319
|
-
`).get(row.id);
|
|
6320
|
-
let firstPrompt = "";
|
|
6321
|
-
if (firstUser) {
|
|
6322
|
-
try {
|
|
6323
|
-
const parsed = JSON.parse(firstUser.data);
|
|
6324
|
-
firstPrompt = flatString(String(parsed?.text || "").slice(0, 200));
|
|
6325
|
-
} catch {
|
|
6326
|
-
}
|
|
6327
|
-
}
|
|
6328
|
-
const messageCount = db.prepare("SELECT COUNT(*) as c FROM message WHERE session_id = ?").get(row.id)?.c ?? 0;
|
|
6312
|
+
const firstPrompt = opts.previews === false ? "" : this.firstUserPrompt(db, row.id);
|
|
6313
|
+
const messageCount = opts.previews === false ? 0 : db.prepare("SELECT COUNT(*) as c FROM message WHERE session_id = ?").get(row.id)?.c ?? 0;
|
|
6329
6314
|
const created = new Date(row.time_created || row.time_updated).toISOString();
|
|
6330
6315
|
const modified = new Date(row.time_updated).toISOString();
|
|
6331
6316
|
out.push({
|
|
@@ -6349,6 +6334,45 @@ var init_opencode = __esm({
|
|
|
6349
6334
|
db.close();
|
|
6350
6335
|
}
|
|
6351
6336
|
}
|
|
6337
|
+
/**
|
|
6338
|
+
* The first user text part of a session.
|
|
6339
|
+
*
|
|
6340
|
+
* Walks the session's user messages oldest first through the
|
|
6341
|
+
* (session_id, time_created, id) index and stops at the first one with a
|
|
6342
|
+
* text part. The role and the text are read by SQLite: a first message can
|
|
6343
|
+
* carry whole diffs in `summary` (107 MB on one row), and parsing that in JS
|
|
6344
|
+
* to read one field took the process to 510 MB. The earlier query filtered
|
|
6345
|
+
* every part and message with LIKE and then sorted, so it read all of a
|
|
6346
|
+
* session's data: 423 MB for a 236-session listing.
|
|
6347
|
+
*/
|
|
6348
|
+
firstUserPrompt(db, sessionId) {
|
|
6349
|
+
try {
|
|
6350
|
+
const has = (table, col) => !!db.prepare(`SELECT 1 FROM pragma_table_info(?) WHERE name = ?`).get(table, col);
|
|
6351
|
+
const msgOrder = has("message", "time_created") ? "time_created, id" : "rowid";
|
|
6352
|
+
const partOrder = has("part", "time_created") ? "time_created, id" : "rowid";
|
|
6353
|
+
const nextUser = db.prepare(`SELECT id, ${msgOrder === "rowid" ? "rowid AS k1, 0 AS k2" : "time_created AS k1, id AS k2"} FROM message
|
|
6354
|
+
WHERE session_id = ? AND (${msgOrder === "rowid" ? "rowid, 0" : "time_created, id"}) > (?, ?)
|
|
6355
|
+
AND json_extract(data, '$.role') = 'user'
|
|
6356
|
+
ORDER BY ${msgOrder} LIMIT 1`);
|
|
6357
|
+
const firstText = db.prepare(`SELECT substr(json_extract(data, '$.text'), 1, 400) AS text FROM part
|
|
6358
|
+
WHERE message_id = ? AND json_extract(data, '$.type') = 'text'
|
|
6359
|
+
AND length(trim(json_extract(data, '$.text'))) > 0
|
|
6360
|
+
ORDER BY ${partOrder} LIMIT 1`);
|
|
6361
|
+
let k1 = Number.MIN_SAFE_INTEGER, k2 = msgOrder === "rowid" ? 0 : "";
|
|
6362
|
+
for (; ; ) {
|
|
6363
|
+
const m = nextUser.get(sessionId, k1, k2);
|
|
6364
|
+
if (!m)
|
|
6365
|
+
return "";
|
|
6366
|
+
k1 = m.k1;
|
|
6367
|
+
k2 = m.k2;
|
|
6368
|
+
const t = firstText.get(m.id);
|
|
6369
|
+
if (t?.text)
|
|
6370
|
+
return flatString(t.text.slice(0, 200));
|
|
6371
|
+
}
|
|
6372
|
+
} catch {
|
|
6373
|
+
return "";
|
|
6374
|
+
}
|
|
6375
|
+
}
|
|
6352
6376
|
/** OpenCode auto-generates a session title (model-written, distinct from the
|
|
6353
6377
|
* first prompt — e.g. "Replacing Claude with Gemini CLI"). It's a plain
|
|
6354
6378
|
* column on the session row. */
|
|
@@ -6666,7 +6690,7 @@ var init_opencode = __esm({
|
|
|
6666
6690
|
|
|
6667
6691
|
// ../engine/dist/core/backends/tail-read.js
|
|
6668
6692
|
import { openSync, readSync, closeSync, statSync as statSync3 } from "node:fs";
|
|
6669
|
-
function readTailFromOffset(path, offset) {
|
|
6693
|
+
function readTailFromOffset(path, offset, maxBytes = TAIL_READ_MAX_BYTES) {
|
|
6670
6694
|
let size = 0;
|
|
6671
6695
|
try {
|
|
6672
6696
|
size = statSync3(path).size;
|
|
@@ -6675,7 +6699,7 @@ function readTailFromOffset(path, offset) {
|
|
|
6675
6699
|
}
|
|
6676
6700
|
if (size <= offset)
|
|
6677
6701
|
return { text: "", newOffset: offset };
|
|
6678
|
-
const len = Math.min(size - offset,
|
|
6702
|
+
const len = Math.min(size - offset, Math.max(1, maxBytes));
|
|
6679
6703
|
const buf = Buffer.allocUnsafe(len);
|
|
6680
6704
|
let fd = null;
|
|
6681
6705
|
try {
|
|
@@ -6691,11 +6715,16 @@ function readTailFromOffset(path, offset) {
|
|
|
6691
6715
|
return { text: "", newOffset: offset };
|
|
6692
6716
|
const slice = got < len ? buf.subarray(0, got) : buf;
|
|
6693
6717
|
const lastNl = slice.lastIndexOf(10);
|
|
6694
|
-
if (lastNl
|
|
6695
|
-
|
|
6718
|
+
if (lastNl >= 0) {
|
|
6719
|
+
const text = slice.subarray(0, lastNl + 1).toString("utf-8");
|
|
6720
|
+
return { text, newOffset: offset + lastNl + 1 };
|
|
6696
6721
|
}
|
|
6697
|
-
|
|
6698
|
-
|
|
6722
|
+
if (offset + got >= size)
|
|
6723
|
+
return { text: "", newOffset: offset };
|
|
6724
|
+
const end = findNewline(fd, offset + got, size);
|
|
6725
|
+
if (end < 0)
|
|
6726
|
+
return { text: "", newOffset: offset };
|
|
6727
|
+
return { text: "", newOffset: end + 1, skippedBytes: end + 1 - offset };
|
|
6699
6728
|
} catch {
|
|
6700
6729
|
return { text: "", newOffset: offset };
|
|
6701
6730
|
} finally {
|
|
@@ -6707,9 +6736,26 @@ function readTailFromOffset(path, offset) {
|
|
|
6707
6736
|
}
|
|
6708
6737
|
}
|
|
6709
6738
|
}
|
|
6739
|
+
function findNewline(fd, from, size) {
|
|
6740
|
+
const block = Buffer.allocUnsafe(SKIP_SCAN_BYTES);
|
|
6741
|
+
let pos = from;
|
|
6742
|
+
while (pos < size) {
|
|
6743
|
+
const n = readSync(fd, block, 0, Math.min(SKIP_SCAN_BYTES, size - pos), pos);
|
|
6744
|
+
if (n <= 0)
|
|
6745
|
+
return -1;
|
|
6746
|
+
const i = block.subarray(0, n).indexOf(10);
|
|
6747
|
+
if (i >= 0)
|
|
6748
|
+
return pos + i;
|
|
6749
|
+
pos += n;
|
|
6750
|
+
}
|
|
6751
|
+
return -1;
|
|
6752
|
+
}
|
|
6753
|
+
var TAIL_READ_MAX_BYTES, SKIP_SCAN_BYTES;
|
|
6710
6754
|
var init_tail_read = __esm({
|
|
6711
6755
|
"../engine/dist/core/backends/tail-read.js"() {
|
|
6712
6756
|
"use strict";
|
|
6757
|
+
TAIL_READ_MAX_BYTES = 16 * 1024 * 1024;
|
|
6758
|
+
SKIP_SCAN_BYTES = 1024 * 1024;
|
|
6713
6759
|
}
|
|
6714
6760
|
});
|
|
6715
6761
|
|
|
@@ -6960,28 +7006,29 @@ var init_codex = __esm({
|
|
|
6960
7006
|
continue;
|
|
6961
7007
|
let firstPrompt = "";
|
|
6962
7008
|
let messageCount = 0;
|
|
6963
|
-
|
|
6964
|
-
|
|
6965
|
-
|
|
6966
|
-
|
|
6967
|
-
|
|
6968
|
-
|
|
6969
|
-
|
|
6970
|
-
|
|
6971
|
-
|
|
6972
|
-
|
|
6973
|
-
|
|
6974
|
-
|
|
6975
|
-
|
|
6976
|
-
|
|
6977
|
-
firstPrompt
|
|
7009
|
+
if (opts.previews !== false)
|
|
7010
|
+
try {
|
|
7011
|
+
const lines = readFileSync2(filePath, "utf-8").split("\n");
|
|
7012
|
+
for (const line of lines) {
|
|
7013
|
+
if (!line.trim())
|
|
7014
|
+
continue;
|
|
7015
|
+
let ev;
|
|
7016
|
+
try {
|
|
7017
|
+
ev = JSON.parse(line);
|
|
7018
|
+
} catch {
|
|
7019
|
+
continue;
|
|
7020
|
+
}
|
|
7021
|
+
if (ev.type === "event_msg" && ev.payload?.type === "user_message") {
|
|
7022
|
+
messageCount++;
|
|
7023
|
+
if (!firstPrompt && ev.payload.message) {
|
|
7024
|
+
firstPrompt = flatString(String(ev.payload.message).slice(0, 200));
|
|
7025
|
+
}
|
|
7026
|
+
} else if (ev.type === "response_item" && ev.payload?.type === "message") {
|
|
7027
|
+
messageCount++;
|
|
6978
7028
|
}
|
|
6979
|
-
} else if (ev.type === "response_item" && ev.payload?.type === "message") {
|
|
6980
|
-
messageCount++;
|
|
6981
7029
|
}
|
|
7030
|
+
} catch {
|
|
6982
7031
|
}
|
|
6983
|
-
} catch {
|
|
6984
|
-
}
|
|
6985
7032
|
const prior = seen.get(rawId);
|
|
6986
7033
|
if (prior) {
|
|
6987
7034
|
if (stat.mtimeMs > prior.mtime) {
|
|
@@ -7416,11 +7463,11 @@ var init_codex = __esm({
|
|
|
7416
7463
|
return 0;
|
|
7417
7464
|
}
|
|
7418
7465
|
}
|
|
7419
|
-
async readFromOffset(prefixedId, offset) {
|
|
7466
|
+
async readFromOffset(prefixedId, offset, maxBytes) {
|
|
7420
7467
|
const loc = this.findSession(prefixedId);
|
|
7421
7468
|
if (!loc)
|
|
7422
7469
|
return { text: "", newOffset: offset };
|
|
7423
|
-
return readTailFromOffset(loc.path, offset);
|
|
7470
|
+
return readTailFromOffset(loc.path, offset, maxBytes);
|
|
7424
7471
|
}
|
|
7425
7472
|
};
|
|
7426
7473
|
codexBackend = new CodexBackend();
|
|
@@ -7671,21 +7718,22 @@ var init_agy = __esm({
|
|
|
7671
7718
|
const projectDir = projectPath ? basename5(projectPath) : "";
|
|
7672
7719
|
let firstPrompt = "";
|
|
7673
7720
|
let messageCount = 0;
|
|
7674
|
-
|
|
7675
|
-
|
|
7676
|
-
|
|
7677
|
-
|
|
7678
|
-
const
|
|
7679
|
-
|
|
7680
|
-
|
|
7681
|
-
|
|
7682
|
-
|
|
7683
|
-
|
|
7684
|
-
|
|
7721
|
+
if (opts.previews !== false)
|
|
7722
|
+
try {
|
|
7723
|
+
const lines = readFileSync3(filePath, "utf-8").split("\n").filter(Boolean);
|
|
7724
|
+
messageCount = lines.length;
|
|
7725
|
+
for (const line of lines) {
|
|
7726
|
+
const obj = JSON.parse(line);
|
|
7727
|
+
if (obj.source === "USER_EXPLICIT" && obj.type === "USER_INPUT" && typeof obj.content === "string") {
|
|
7728
|
+
const content = obj.content;
|
|
7729
|
+
const match = content.match(/<USER_REQUEST>([\s\S]*?)<\/USER_REQUEST>/);
|
|
7730
|
+
const rawText = match ? match[1].trim() : content.trim();
|
|
7731
|
+
firstPrompt = flatString(rawText.slice(0, 200));
|
|
7732
|
+
break;
|
|
7733
|
+
}
|
|
7685
7734
|
}
|
|
7735
|
+
} catch {
|
|
7686
7736
|
}
|
|
7687
|
-
} catch {
|
|
7688
|
-
}
|
|
7689
7737
|
if (seenIds.has(rawId))
|
|
7690
7738
|
continue;
|
|
7691
7739
|
seenIds.add(rawId);
|
|
@@ -7981,11 +8029,11 @@ var init_agy = __esm({
|
|
|
7981
8029
|
return 0;
|
|
7982
8030
|
}
|
|
7983
8031
|
}
|
|
7984
|
-
async readFromOffset(prefixedId, offset) {
|
|
8032
|
+
async readFromOffset(prefixedId, offset, maxBytes) {
|
|
7985
8033
|
const loc = this.findSession(prefixedId);
|
|
7986
8034
|
if (!loc)
|
|
7987
8035
|
return { text: "", newOffset: offset };
|
|
7988
|
-
return readTailFromOffset(loc.path, offset);
|
|
8036
|
+
return readTailFromOffset(loc.path, offset, maxBytes);
|
|
7989
8037
|
}
|
|
7990
8038
|
};
|
|
7991
8039
|
agyBackend = new AgyBackend();
|
|
@@ -9682,12 +9730,12 @@ var init_claude = __esm({
|
|
|
9682
9730
|
const seen = /* @__PURE__ */ new Set();
|
|
9683
9731
|
const out = [];
|
|
9684
9732
|
for (const root of claudeProjectDirs()) {
|
|
9685
|
-
this.collectSessionsFromRoot(root, cutoff, filter, seen, out);
|
|
9733
|
+
this.collectSessionsFromRoot(root, cutoff, filter, seen, out, opts.previews !== false);
|
|
9686
9734
|
}
|
|
9687
9735
|
out.sort((a, b) => b.mtime - a.mtime);
|
|
9688
9736
|
return opts.limit ? out.slice(0, opts.limit) : out;
|
|
9689
9737
|
}
|
|
9690
|
-
collectSessionsFromRoot(root, cutoff, filter, seen, out) {
|
|
9738
|
+
collectSessionsFromRoot(root, cutoff, filter, seen, out, previews) {
|
|
9691
9739
|
if (!existsSync11(root))
|
|
9692
9740
|
return;
|
|
9693
9741
|
for (const proj of readdirSync8(root, { withFileTypes: true })) {
|
|
@@ -9746,7 +9794,7 @@ var init_claude = __esm({
|
|
|
9746
9794
|
}
|
|
9747
9795
|
if (stat.mtimeMs < cutoff)
|
|
9748
9796
|
continue;
|
|
9749
|
-
const firstPrompt = extractFirstUserPromptSync(fullPath, { maxLength: 200 });
|
|
9797
|
+
const firstPrompt = previews ? extractFirstUserPromptSync(fullPath, { maxLength: 200 }) : "";
|
|
9750
9798
|
out.push({
|
|
9751
9799
|
toolId: "claude",
|
|
9752
9800
|
rawId: sessionId,
|
|
@@ -10109,14 +10157,14 @@ var init_claude = __esm({
|
|
|
10109
10157
|
spansMultipleSources(prefixedId) {
|
|
10110
10158
|
return findSessionFiles(this.toRawId(prefixedId)).length > 1;
|
|
10111
10159
|
}
|
|
10112
|
-
async readFromOffset(prefixedId, offset) {
|
|
10160
|
+
async readFromOffset(prefixedId, offset, maxBytes) {
|
|
10113
10161
|
const rawId = this.toRawId(prefixedId);
|
|
10114
10162
|
const copies = findSessionFiles(rawId);
|
|
10115
10163
|
if (copies.length === 0)
|
|
10116
10164
|
return { text: "", newOffset: offset };
|
|
10117
10165
|
if (copies.length > 1)
|
|
10118
10166
|
return { text: "", newOffset: offset };
|
|
10119
|
-
return readTailFromOffset(copies[0].path, offset);
|
|
10167
|
+
return readTailFromOffset(copies[0].path, offset, maxBytes);
|
|
10120
10168
|
}
|
|
10121
10169
|
};
|
|
10122
10170
|
claudeBackend = new ClaudeBackend();
|
|
@@ -10302,6 +10350,15 @@ function sessionFileIndex() {
|
|
|
10302
10350
|
return indexCache;
|
|
10303
10351
|
const byId = /* @__PURE__ */ new Map();
|
|
10304
10352
|
const seenRoots = /* @__PURE__ */ new Set();
|
|
10353
|
+
const projectPaths = /* @__PURE__ */ new Map();
|
|
10354
|
+
const projectPathOf = (dirName) => {
|
|
10355
|
+
let p = projectPaths.get(dirName);
|
|
10356
|
+
if (p === void 0) {
|
|
10357
|
+
p = resolveProjectDirName(dirName);
|
|
10358
|
+
projectPaths.set(dirName, p);
|
|
10359
|
+
}
|
|
10360
|
+
return p;
|
|
10361
|
+
};
|
|
10305
10362
|
for (const root of claudeProjectDirs()) {
|
|
10306
10363
|
if (seenRoots.has(root) || !existsSync13(root))
|
|
10307
10364
|
continue;
|
|
@@ -10329,7 +10386,7 @@ function sessionFileIndex() {
|
|
|
10329
10386
|
const located = {
|
|
10330
10387
|
path: join13(dir, name),
|
|
10331
10388
|
projectDir: entry.name,
|
|
10332
|
-
projectPath:
|
|
10389
|
+
projectPath: projectPathOf(entry.name)
|
|
10333
10390
|
};
|
|
10334
10391
|
const prior = byId.get(id);
|
|
10335
10392
|
if (prior)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-installer.d.ts","sourceRoot":"","sources":["../src/service-installer.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;CACjB;AAiBD,0EAA0E;AAC1E,wBAAgB,gBAAgB,IAAI,OAAO,CAe1C;AAED;;;GAGG;AACH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CA2BlD;AAED,wBAAgB,cAAc,IAAI,YAAY,CAiB7C;AAsBD,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"service-installer.d.ts","sourceRoot":"","sources":["../src/service-installer.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;CACjB;AAiBD,0EAA0E;AAC1E,wBAAgB,gBAAgB,IAAI,OAAO,CAe1C;AAED;;;GAGG;AACH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CA2BlD;AAED,wBAAgB,cAAc,IAAI,YAAY,CAiB7C;AAsBD,wEAAwE;AACxE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAkDxF;AAmBD,6DAA6D;AAC7D,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,SAA0B,GAAG,MAAM,CAa1H;AAuBD,4DAA4D;AAC5D,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAsB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAKhI;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAoB1C;AAED,kDAAkD;AAClD,wBAAgB,YAAY,IAAI,MAAM,CAKrC;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;gBACF,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAI3C"}
|
|
@@ -45,7 +45,7 @@ export function isServiceRunning() {
|
|
|
45
45
|
if (process.platform === 'linux') {
|
|
46
46
|
// systemd is-active is authoritative; skip the pgrep fallback (it
|
|
47
47
|
// self-matches the bash -c that runs the check, causing false positives).
|
|
48
|
-
return
|
|
48
|
+
return /^active$/m.test(tryCmd('systemctl --user is-active chat-recall-watch.service 2>/dev/null'));
|
|
49
49
|
}
|
|
50
50
|
return false;
|
|
51
51
|
}
|
|
@@ -158,7 +158,12 @@ export function renderSystemdUnit(watchJs, node, logFile) {
|
|
|
158
158
|
// sawtooth. 1536MB keeps GC honest (768 OOMed on the largest subagent-fanout session) with plenty of headroom for the
|
|
159
159
|
// largest transcripts.
|
|
160
160
|
`ExecStart=${node} --max-old-space-size=1536 ${watchJs}`,
|
|
161
|
-
|
|
161
|
+
// ALWAYS: the collector never ends its own work, so any exit systemd did
|
|
162
|
+
// not ask for is a fault. Under on-failure a clean exit left it dead: on
|
|
163
|
+
// 2026-09-16 the unit went "inactive (dead) … status=0/SUCCESS" and stayed
|
|
164
|
+
// down for 8 days, so nothing synced and the auto-update tick, which runs
|
|
165
|
+
// inside the daemon, never ran. `systemctl stop` still stops it.
|
|
166
|
+
'Restart=always', 'RestartSec=10', 'Nice=10',
|
|
162
167
|
// NEVER STOP RETRYING. systemd's default start limiter gives up after a
|
|
163
168
|
// burst of restarts and leaves the unit dead until a human notices. On a
|
|
164
169
|
// developer machine here that was 53 restarts, then
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-installer.js","sourceRoot":"","sources":["../src/service-installer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAWpC,0EAA0E;AAC1E,SAAS,kBAAkB;IACzB,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC7C,CAAC;AAED,2EAA2E;AAC3E,SAAS,MAAM,CAAC,GAAW;IACzB,IAAI,CAAC;QAAC,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAAC,CAAC;IACjF,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACtB,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB;IAC9B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,yDAAyD,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACpG,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,8DAA8D,CAAC,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,2DAA2D;QAC3D,OAAO,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,kEAAkE;QAClE,0EAA0E;QAC1E,OAAO,
|
|
1
|
+
{"version":3,"file":"service-installer.js","sourceRoot":"","sources":["../src/service-installer.ts"],"names":[],"mappings":"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"}
|
package/dist/sync-client.d.ts
CHANGED
|
@@ -229,12 +229,36 @@ export interface UnchangedConversation {
|
|
|
229
229
|
unchanged: true;
|
|
230
230
|
srcHash: string;
|
|
231
231
|
}
|
|
232
|
-
/**
|
|
233
|
-
*
|
|
234
|
-
*
|
|
235
|
-
*
|
|
236
|
-
*
|
|
232
|
+
/** Build bytes (see sessionBuildBytes) beyond which a FULL sync must not
|
|
233
|
+
* materialize the session. A larger session ships in chunks instead: the head
|
|
234
|
+
* chunk as its FULL sync, then the rest as appends.
|
|
235
|
+
*
|
|
236
|
+
* The in-memory build holds the container many times over (export, container,
|
|
237
|
+
* shadow merge, parse, redacted envelope, joined raw text, and a copy in the
|
|
238
|
+
* scan worker). Measured on a 42 MB container: 840 MB peak RSS in full, 218 MB
|
|
239
|
+
* in chunks, for the same 2,392 messages, under a unit with MemoryHigh=1G and
|
|
240
|
+
* a resting RSS near 400 MB. At about 18 bytes per container byte, 24 MB
|
|
241
|
+
* stays under the limit. */
|
|
237
242
|
export declare const FULL_BUILD_MAX_BYTES: number;
|
|
243
|
+
/** Transcript bytes beyond which the derived computations (diff, outcome,
|
|
244
|
+
* commits, markers) are skipped. They run in the scan worker and read the
|
|
245
|
+
* whole transcript; a 353 MB session with 100 MB JSON lines OOMed the walk. */
|
|
246
|
+
export declare const DERIVED_MAX_BYTES: number;
|
|
247
|
+
/** Bytes of transcript one chunk of a chunked sync carries: the head of an
|
|
248
|
+
* oversized FULL sync, and each append. */
|
|
249
|
+
export declare const SYNC_CHUNK_BYTES: number;
|
|
250
|
+
/**
|
|
251
|
+
* Secret findings for a whole transcript, read one chunk at a time.
|
|
252
|
+
*
|
|
253
|
+
* A chunked session never holds its full text, so it cannot use the one-pass
|
|
254
|
+
* scan of the in-memory build. Line numbers are absolute: each chunk's
|
|
255
|
+
* findings are shifted by the lines of the chunks before it. A line longer
|
|
256
|
+
* than a chunk is skipped by the reader, and it counts as one line.
|
|
257
|
+
*/
|
|
258
|
+
export declare function scanTranscriptFindingsChunked(ref: SessionRef, tenantRules?: Array<{
|
|
259
|
+
name: string;
|
|
260
|
+
regex: string;
|
|
261
|
+
}>): Promise<BuiltConversation['findings']>;
|
|
238
262
|
/** Ceiling on PRE-REDACTION session text materialized on disk at any one moment
|
|
239
263
|
* by the optional external-detector batch scan. The batch dir is flushed and
|
|
240
264
|
* deleted every time it crosses this, so a SIGKILL/OOM mid-scan can strand at
|
|
@@ -244,6 +268,14 @@ export declare const FULL_BUILD_MAX_BYTES: number;
|
|
|
244
268
|
export declare const BATCH_SCAN_MAX_BYTES: number;
|
|
245
269
|
/** Bytes an append-only session occupies on disk (0 for non-AO backends). */
|
|
246
270
|
export declare function sessionFileBytes(ref: SessionRef): number;
|
|
271
|
+
/**
|
|
272
|
+
* Bytes a FULL build of an append-only session loads (0 for non-AO backends):
|
|
273
|
+
* the larger of the main transcript and the shadow container, which also holds
|
|
274
|
+
* the subagent transcripts and any history an upstream rewrite dropped. The
|
|
275
|
+
* main file alone under-counts: a 19 MB transcript built from a 42 MB shadow
|
|
276
|
+
* and peaked at 840 MB RSS.
|
|
277
|
+
*/
|
|
278
|
+
export declare function sessionBuildBytes(ref: SessionRef): number;
|
|
247
279
|
export declare function buildConversationSync(ref: SessionRef, mtime: number, opts?: {
|
|
248
280
|
mapPath?: (p: string) => string;
|
|
249
281
|
includeRaw?: boolean;
|
|
@@ -288,6 +320,7 @@ export declare function buildConversationTail(ref: SessionRef, fromOffset: numbe
|
|
|
288
320
|
redactions: number;
|
|
289
321
|
newOffset: number;
|
|
290
322
|
findings: BuiltConversation['findings'];
|
|
323
|
+
bytes: number;
|
|
291
324
|
} | null>;
|
|
292
325
|
/**
|
|
293
326
|
* Per-session derived payload: the four compute kinds the server's deep-dive
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-client.d.ts","sourceRoot":"","sources":["../src/sync-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sync-client.d.ts","sourceRoot":"","sources":["../src/sync-client.ts"],"names":[],"mappings":"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"}
|