hippo-memory 1.28.0 → 1.30.0
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/README.md +15 -0
- package/dist/api.d.ts +25 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +101 -2
- package/dist/api.js.map +1 -1
- package/dist/audit.d.ts +1 -1
- package/dist/audit.d.ts.map +1 -1
- package/dist/audit.js.map +1 -1
- package/dist/capture.d.ts +49 -2
- package/dist/capture.d.ts.map +1 -1
- package/dist/capture.js +464 -1
- package/dist/capture.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +196 -3
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +21 -0
- package/dist/config.js.map +1 -1
- package/dist/consolidate.d.ts.map +1 -1
- package/dist/consolidate.js +195 -22
- package/dist/consolidate.js.map +1 -1
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +75 -1
- package/dist/db.js.map +1 -1
- package/dist/hooks.d.ts +10 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +64 -1
- package/dist/hooks.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +14 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/memory-value-weights.d.ts +22 -0
- package/dist/memory-value-weights.d.ts.map +1 -0
- package/dist/memory-value-weights.js +31 -0
- package/dist/memory-value-weights.js.map +1 -0
- package/dist/memory-value.d.ts +123 -0
- package/dist/memory-value.d.ts.map +1 -0
- package/dist/memory-value.js +255 -0
- package/dist/memory-value.js.map +1 -0
- package/dist/recall-trace.d.ts +117 -0
- package/dist/recall-trace.d.ts.map +1 -0
- package/dist/recall-trace.js +179 -0
- package/dist/recall-trace.js.map +1 -0
- package/dist/secret-detect.d.ts +8 -0
- package/dist/secret-detect.d.ts.map +1 -1
- package/dist/secret-detect.js +25 -0
- package/dist/secret-detect.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1 -0
- package/dist/server.js.map +1 -1
- package/dist/src/api.js +101 -2
- package/dist/src/api.js.map +1 -1
- package/dist/src/audit.js.map +1 -1
- package/dist/src/capture.js +464 -1
- package/dist/src/capture.js.map +1 -1
- package/dist/src/cli.js +196 -3
- package/dist/src/cli.js.map +1 -1
- package/dist/src/config.js +21 -0
- package/dist/src/config.js.map +1 -1
- package/dist/src/consolidate.js +195 -22
- package/dist/src/consolidate.js.map +1 -1
- package/dist/src/db.js +75 -1
- package/dist/src/db.js.map +1 -1
- package/dist/src/hooks.js +64 -1
- package/dist/src/hooks.js.map +1 -1
- package/dist/src/mcp/server.js +14 -1
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/memory-value-weights.js +31 -0
- package/dist/src/memory-value-weights.js.map +1 -0
- package/dist/src/memory-value.js +255 -0
- package/dist/src/memory-value.js.map +1 -0
- package/dist/src/recall-trace.js +179 -0
- package/dist/src/recall-trace.js.map +1 -0
- package/dist/src/secret-detect.js +25 -0
- package/dist/src/secret-detect.js.map +1 -1
- package/dist/src/server.js +1 -0
- package/dist/src/server.js.map +1 -1
- package/dist/src/store.js +55 -4
- package/dist/src/store.js.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/store.d.ts +15 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +55 -4
- package/dist/store.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
- package/extensions/openclaw-plugin/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
package/dist/capture.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* - Errors / gotchas ("error:", "bug:", "gotcha:", "watch out")
|
|
9
9
|
* - Preferences ("prefer", "use X instead of Y", "don't use")
|
|
10
10
|
*/
|
|
11
|
-
interface ExtractedItem {
|
|
11
|
+
export interface ExtractedItem {
|
|
12
12
|
content: string;
|
|
13
13
|
category: string;
|
|
14
14
|
tags: string[];
|
|
@@ -66,5 +66,52 @@ export declare function summariseTranscript(jsonl: string): string;
|
|
|
66
66
|
*/
|
|
67
67
|
export declare function resolveLastSessionTranscript(explicit: string | undefined, stdinText: string | undefined): string | null;
|
|
68
68
|
export declare function cmdCapture(hippoRoot: string, options: CaptureOptions): void;
|
|
69
|
-
|
|
69
|
+
/** Never read the whole transcript — PreCompact fires exactly when it's largest. */
|
|
70
|
+
export declare const PRE_COMPACT_TAIL_BYTES: number;
|
|
71
|
+
export declare const PRE_COMPACT_TASK_CAP = 200;
|
|
72
|
+
export declare const PRE_COMPACT_SUMMARY_CAP = 2000;
|
|
73
|
+
export declare const PRE_COMPACT_NEXT_STEP_CAP = 500;
|
|
74
|
+
/**
|
|
75
|
+
* Truncate `text` to at most `maxChars` UTF-16 code units without splitting
|
|
76
|
+
* a surrogate pair at the boundary. A plain `slice(0, n)` can land between a
|
|
77
|
+
* high and low surrogate, leaving an unpaired surrogate in a stored/
|
|
78
|
+
* re-injected snapshot field. If the code unit at the cut point is a high
|
|
79
|
+
* surrogate (0xD800-0xDBFF), back off one unit so the pair stays whole.
|
|
80
|
+
*/
|
|
81
|
+
export declare function truncateCodePointSafe(text: string, maxChars: number): string;
|
|
82
|
+
/**
|
|
83
|
+
* Cap from the RECENT end: summariseTranscript emits user turns oldest-to-
|
|
84
|
+
* newest with assistant responses after them, so a head-first cap keeps
|
|
85
|
+
* stale context and drops exactly the newest working state this feature
|
|
86
|
+
* exists to preserve. Keep the LAST maxChars instead, aligned forward to a
|
|
87
|
+
* nearby line start, with a trim marker (codex round 3).
|
|
88
|
+
*/
|
|
89
|
+
export declare function truncateKeepNewest(text: string, maxChars: number): string;
|
|
90
|
+
/**
|
|
91
|
+
* Positional read of the last `capBytes` of `transcriptPath`, aligned
|
|
92
|
+
* forward to the first complete JSONL line. Uses fs.openSync/readSync at a
|
|
93
|
+
* byte offset rather than reading the whole file and slicing — PreCompact
|
|
94
|
+
* fires exactly when transcripts are largest, so a whole-file read is the
|
|
95
|
+
* one thing this path cannot do.
|
|
96
|
+
*
|
|
97
|
+
* Boundary handling (X14): a seek that lands mid-line must drop that
|
|
98
|
+
* partial first line so every remaining line parses as complete JSON. A
|
|
99
|
+
* seek that lands exactly after a '\n' already starts on a complete line
|
|
100
|
+
* and must NOT drop it — doing so would silently discard one whole line on
|
|
101
|
+
* every tail read whose start offset happens to align with a line break.
|
|
102
|
+
* Distinguished by peeking at the single byte immediately before `start`.
|
|
103
|
+
*/
|
|
104
|
+
export declare function readTranscriptTail(transcriptPath: string, capBytes?: number): string;
|
|
105
|
+
export interface PreCompactOptions {
|
|
106
|
+
stdinText?: string;
|
|
107
|
+
logFile?: string;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* PreCompact hook entry point. Exit code 2 on PreCompact BLOCKS compaction,
|
|
111
|
+
* so this verb must exit 0 on every path — malformed stdin, missing
|
|
112
|
+
* transcript, and store errors all degrade to a logged no-op rather than a
|
|
113
|
+
* thrown error. Callers (src/cli.ts) must not wrap this in anything that
|
|
114
|
+
* could turn a caught-and-logged failure back into a non-zero exit.
|
|
115
|
+
*/
|
|
116
|
+
export declare function cmdPreCompact(hippoRoot: string, options: PreCompactOptions): Promise<void>;
|
|
70
117
|
//# sourceMappingURL=capture.d.ts.map
|
package/dist/capture.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../src/capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../src/capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA0BH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AA0HD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAoC7D;AA4ED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,cAAc,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAqFzD;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,MAAM,GAAG,IAAI,CAqCf;AAED,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,GACtB,IAAI,CAgBN;AAwMD,oFAAoF;AACpF,eAAO,MAAM,sBAAsB,QAAa,CAAC;AAEjD,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAC5C,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ5E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQzE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,GAAE,MAA+B,GAAG,MAAM,CA4B5G;AAwSD,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAQD;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBhG"}
|
package/dist/capture.js
CHANGED
|
@@ -12,10 +12,13 @@ import * as fs from 'fs';
|
|
|
12
12
|
import * as path from 'path';
|
|
13
13
|
import { createMemory, Layer } from './memory.js';
|
|
14
14
|
import { isContentWorthStoring } from './audit.js';
|
|
15
|
-
import { isInitialized, writeEntry, loadAllEntries, updateStats, } from './store.js';
|
|
15
|
+
import { isInitialized, writeEntry, loadAllEntries, updateStats, saveActiveTaskSnapshot, loadActiveTaskSnapshot, } from './store.js';
|
|
16
16
|
import { getGlobalRoot, initGlobal } from './shared.js';
|
|
17
17
|
import { embedMemory } from './embeddings.js';
|
|
18
18
|
import { isEmbeddingConfigured } from './embedding-provider.js';
|
|
19
|
+
import { resolveTenantId } from './tenant.js';
|
|
20
|
+
import { defaultPreCompactLogPath } from './hooks.js';
|
|
21
|
+
import { redactSecrets } from './secret-detect.js';
|
|
19
22
|
// Sentence-level patterns
|
|
20
23
|
const DECISION_PATTERNS = [
|
|
21
24
|
/(?:we(?:'ve| have)?|i(?:'ve| have)?|let's)\s+decid(?:ed|e)\s+(?:to\s+)?(.{10,200})/i,
|
|
@@ -180,6 +183,48 @@ function isDuplicate(content, existing) {
|
|
|
180
183
|
}
|
|
181
184
|
return false;
|
|
182
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Write already-extracted items to the store, deduped against existing
|
|
188
|
+
* tenant-scoped entries. Shared write path for `cmdCapture` (extracted from
|
|
189
|
+
* raw text inline) and `cmdPreCompact` (extracted from a pre-computed tail
|
|
190
|
+
* summary, no raw-text re-extraction). Mirrors the non-dry-run write loop in
|
|
191
|
+
* `cmdCaptureCore`: same layer/source/confidence, same embed-if-configured,
|
|
192
|
+
* fire-and-forget behaviour.
|
|
193
|
+
*
|
|
194
|
+
* Returns the fire-and-forget `embedMemory` promises alongside the counts
|
|
195
|
+
* (review round X6) so a caller that must not exit before embeddings settle
|
|
196
|
+
* — `cmdPreCompact`, which runs process.exit(0) right after — can await them
|
|
197
|
+
* with a bounded timeout instead of racing a detached write.
|
|
198
|
+
*/
|
|
199
|
+
function writeExtractedItems(hippoRoot, tenantId, extracted) {
|
|
200
|
+
if (extracted.length === 0)
|
|
201
|
+
return { captured: 0, skipped: 0, embeds: [] };
|
|
202
|
+
const existing = loadAllEntries(hippoRoot, tenantId);
|
|
203
|
+
const embeds = [];
|
|
204
|
+
let captured = 0;
|
|
205
|
+
let skipped = 0;
|
|
206
|
+
for (const item of extracted) {
|
|
207
|
+
if (isDuplicate(item.content, existing)) {
|
|
208
|
+
skipped++;
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
const entry = createMemory(item.content, {
|
|
212
|
+
layer: Layer.Episodic,
|
|
213
|
+
tags: item.tags,
|
|
214
|
+
source: 'capture',
|
|
215
|
+
confidence: 'observed',
|
|
216
|
+
tenantId,
|
|
217
|
+
});
|
|
218
|
+
writeEntry(hippoRoot, entry);
|
|
219
|
+
updateStats(hippoRoot, { remembered: 1 });
|
|
220
|
+
existing.push(entry); // within-batch dedup
|
|
221
|
+
if (isEmbeddingConfigured(hippoRoot)) {
|
|
222
|
+
embeds.push(embedMemory(hippoRoot, entry).catch(() => { }));
|
|
223
|
+
}
|
|
224
|
+
captured++;
|
|
225
|
+
}
|
|
226
|
+
return { captured, skipped, embeds };
|
|
227
|
+
}
|
|
183
228
|
/**
|
|
184
229
|
* Build a compact text summary from a Claude Code / OpenCode JSONL transcript.
|
|
185
230
|
* Keeps plain user messages and the final chunk of assistant text, drops
|
|
@@ -519,4 +564,422 @@ function cmdCaptureCore(hippoRoot, options) {
|
|
|
519
564
|
const globalPrefix = useGlobal ? '[global] ' : '';
|
|
520
565
|
console.log(`\n${prefix}${globalPrefix}Captured ${captured} items (${skipped} skipped as duplicates)`);
|
|
521
566
|
}
|
|
567
|
+
// ---------------------------------------------------------------------------
|
|
568
|
+
// `hippo pre-compact` — PreCompact hook producer
|
|
569
|
+
// ---------------------------------------------------------------------------
|
|
570
|
+
/** Never read the whole transcript — PreCompact fires exactly when it's largest. */
|
|
571
|
+
export const PRE_COMPACT_TAIL_BYTES = 256 * 1024;
|
|
572
|
+
export const PRE_COMPACT_TASK_CAP = 200;
|
|
573
|
+
export const PRE_COMPACT_SUMMARY_CAP = 2000;
|
|
574
|
+
export const PRE_COMPACT_NEXT_STEP_CAP = 500;
|
|
575
|
+
/**
|
|
576
|
+
* Truncate `text` to at most `maxChars` UTF-16 code units without splitting
|
|
577
|
+
* a surrogate pair at the boundary. A plain `slice(0, n)` can land between a
|
|
578
|
+
* high and low surrogate, leaving an unpaired surrogate in a stored/
|
|
579
|
+
* re-injected snapshot field. If the code unit at the cut point is a high
|
|
580
|
+
* surrogate (0xD800-0xDBFF), back off one unit so the pair stays whole.
|
|
581
|
+
*/
|
|
582
|
+
export function truncateCodePointSafe(text, maxChars) {
|
|
583
|
+
if (text.length <= maxChars)
|
|
584
|
+
return text;
|
|
585
|
+
let end = maxChars;
|
|
586
|
+
if (end > 0) {
|
|
587
|
+
const code = text.charCodeAt(end - 1);
|
|
588
|
+
if (code >= 0xd800 && code <= 0xdbff)
|
|
589
|
+
end -= 1;
|
|
590
|
+
}
|
|
591
|
+
return text.slice(0, end);
|
|
592
|
+
}
|
|
593
|
+
/**
|
|
594
|
+
* Cap from the RECENT end: summariseTranscript emits user turns oldest-to-
|
|
595
|
+
* newest with assistant responses after them, so a head-first cap keeps
|
|
596
|
+
* stale context and drops exactly the newest working state this feature
|
|
597
|
+
* exists to preserve. Keep the LAST maxChars instead, aligned forward to a
|
|
598
|
+
* nearby line start, with a trim marker (codex round 3).
|
|
599
|
+
*/
|
|
600
|
+
export function truncateKeepNewest(text, maxChars) {
|
|
601
|
+
if (text.length <= maxChars)
|
|
602
|
+
return text;
|
|
603
|
+
let start = text.length - maxChars;
|
|
604
|
+
const code = text.charCodeAt(start);
|
|
605
|
+
if (code >= 0xdc00 && code <= 0xdfff)
|
|
606
|
+
start += 1; // never start on a low surrogate
|
|
607
|
+
const nl = text.indexOf('\n', start);
|
|
608
|
+
if (nl !== -1 && nl + 1 < text.length && nl - start < 200)
|
|
609
|
+
start = nl + 1;
|
|
610
|
+
return '[...earlier turns trimmed]\n' + text.slice(start);
|
|
611
|
+
}
|
|
612
|
+
/**
|
|
613
|
+
* Positional read of the last `capBytes` of `transcriptPath`, aligned
|
|
614
|
+
* forward to the first complete JSONL line. Uses fs.openSync/readSync at a
|
|
615
|
+
* byte offset rather than reading the whole file and slicing — PreCompact
|
|
616
|
+
* fires exactly when transcripts are largest, so a whole-file read is the
|
|
617
|
+
* one thing this path cannot do.
|
|
618
|
+
*
|
|
619
|
+
* Boundary handling (X14): a seek that lands mid-line must drop that
|
|
620
|
+
* partial first line so every remaining line parses as complete JSON. A
|
|
621
|
+
* seek that lands exactly after a '\n' already starts on a complete line
|
|
622
|
+
* and must NOT drop it — doing so would silently discard one whole line on
|
|
623
|
+
* every tail read whose start offset happens to align with a line break.
|
|
624
|
+
* Distinguished by peeking at the single byte immediately before `start`.
|
|
625
|
+
*/
|
|
626
|
+
export function readTranscriptTail(transcriptPath, capBytes = PRE_COMPACT_TAIL_BYTES) {
|
|
627
|
+
const size = fs.statSync(transcriptPath).size;
|
|
628
|
+
const start = Math.max(0, size - capBytes);
|
|
629
|
+
const length = size - start;
|
|
630
|
+
if (length <= 0)
|
|
631
|
+
return '';
|
|
632
|
+
const fd = fs.openSync(transcriptPath, 'r');
|
|
633
|
+
try {
|
|
634
|
+
let onLineBoundary = start === 0;
|
|
635
|
+
if (!onLineBoundary) {
|
|
636
|
+
const prevByte = Buffer.alloc(1);
|
|
637
|
+
fs.readSync(fd, prevByte, 0, 1, start - 1);
|
|
638
|
+
onLineBoundary = prevByte[0] === 0x0a; // '\n'
|
|
639
|
+
}
|
|
640
|
+
const buf = Buffer.alloc(length);
|
|
641
|
+
fs.readSync(fd, buf, 0, length, start);
|
|
642
|
+
let text = buf.toString('utf8');
|
|
643
|
+
if (!onLineBoundary) {
|
|
644
|
+
// Landed mid-line — drop the partial first line so every remaining
|
|
645
|
+
// line parses as complete JSON.
|
|
646
|
+
const nl = text.indexOf('\n');
|
|
647
|
+
text = nl === -1 ? '' : text.slice(nl + 1);
|
|
648
|
+
}
|
|
649
|
+
return text;
|
|
650
|
+
}
|
|
651
|
+
finally {
|
|
652
|
+
fs.closeSync(fd);
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
/** Most recent plain-text user message in a JSONL tail. Claude Code transcript shape only (PreCompact is claude-code-only). */
|
|
656
|
+
function lastPlainUserMessage(jsonl) {
|
|
657
|
+
const lines = jsonl.split('\n').filter((l) => l.trim());
|
|
658
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
659
|
+
let entry;
|
|
660
|
+
try {
|
|
661
|
+
entry = JSON.parse(lines[i]);
|
|
662
|
+
}
|
|
663
|
+
catch {
|
|
664
|
+
continue;
|
|
665
|
+
}
|
|
666
|
+
if (!entry || typeof entry !== 'object')
|
|
667
|
+
continue;
|
|
668
|
+
const e = entry;
|
|
669
|
+
if (e.type !== 'user')
|
|
670
|
+
continue;
|
|
671
|
+
// Meta/sidechain lines carry type:'user' but are not the human: after a
|
|
672
|
+
// FIRST compaction the transcript holds the compact summary as an isMeta
|
|
673
|
+
// user line, and sub-agent turns are isSidechain — deriving "task" from
|
|
674
|
+
// either yields junk on every later compaction.
|
|
675
|
+
if (e.isMeta === true || e.isSidechain === true)
|
|
676
|
+
continue;
|
|
677
|
+
const message = e.message;
|
|
678
|
+
if (!message)
|
|
679
|
+
continue;
|
|
680
|
+
const content = message.content;
|
|
681
|
+
if (typeof content === 'string' && content.trim())
|
|
682
|
+
return content.trim();
|
|
683
|
+
}
|
|
684
|
+
return '';
|
|
685
|
+
}
|
|
686
|
+
/** Last assistant text block in a JSONL tail (skips thinking + tool_use, same as summariseTranscript). */
|
|
687
|
+
function lastAssistantTextBlock(jsonl) {
|
|
688
|
+
const lines = jsonl.split('\n').filter((l) => l.trim());
|
|
689
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
690
|
+
let entry;
|
|
691
|
+
try {
|
|
692
|
+
entry = JSON.parse(lines[i]);
|
|
693
|
+
}
|
|
694
|
+
catch {
|
|
695
|
+
continue;
|
|
696
|
+
}
|
|
697
|
+
if (!entry || typeof entry !== 'object')
|
|
698
|
+
continue;
|
|
699
|
+
const e = entry;
|
|
700
|
+
if (e.type !== 'assistant')
|
|
701
|
+
continue;
|
|
702
|
+
// Same meta/sidechain guard as lastPlainUserMessage: sub-agent turns
|
|
703
|
+
// (isSidechain) are not this session's next step.
|
|
704
|
+
if (e.isMeta === true || e.isSidechain === true)
|
|
705
|
+
continue;
|
|
706
|
+
const message = e.message;
|
|
707
|
+
if (!message)
|
|
708
|
+
continue;
|
|
709
|
+
const content = message.content;
|
|
710
|
+
if (!Array.isArray(content))
|
|
711
|
+
continue;
|
|
712
|
+
for (let j = content.length - 1; j >= 0; j--) {
|
|
713
|
+
const block = content[j];
|
|
714
|
+
if (block && typeof block === 'object') {
|
|
715
|
+
const b = block;
|
|
716
|
+
if (b.type === 'text' && typeof b.text === 'string' && b.text.trim()) {
|
|
717
|
+
return b.text.trim();
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
return '';
|
|
723
|
+
}
|
|
724
|
+
// Diagnostic-only log; a long-lived install must not grow it unbounded.
|
|
725
|
+
const PRE_COMPACT_LOG_MAX_BYTES = 256 * 1024;
|
|
726
|
+
/**
|
|
727
|
+
* Log-forgery guard: messages here interpolate payload-controlled values
|
|
728
|
+
* (transcript paths, session ids). Strip C0 control chars — newlines above
|
|
729
|
+
* all — so a crafted value can't inject fake `[hippo] ...` log lines.
|
|
730
|
+
*/
|
|
731
|
+
function sanitizeLogMessage(message) {
|
|
732
|
+
// eslint-disable-next-line no-control-regex
|
|
733
|
+
return message.replace(/[\x00-\x1f]/g, '');
|
|
734
|
+
}
|
|
735
|
+
function appendPreCompactLog(logFile, message) {
|
|
736
|
+
try {
|
|
737
|
+
fs.mkdirSync(path.dirname(logFile), { recursive: true });
|
|
738
|
+
const stat = fs.existsSync(logFile) ? fs.statSync(logFile) : null;
|
|
739
|
+
if (stat && stat.size > PRE_COMPACT_LOG_MAX_BYTES) {
|
|
740
|
+
fs.writeFileSync(logFile, '', 'utf8'); // start fresh — dumb cap, no rotation
|
|
741
|
+
}
|
|
742
|
+
fs.appendFileSync(logFile, `[hippo] ${new Date().toISOString()} ${sanitizeLogMessage(message)}\n`, 'utf8');
|
|
743
|
+
}
|
|
744
|
+
catch {
|
|
745
|
+
// Diagnostic-only; a log write failure must never affect the exit-0 contract.
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
/** True iff `filePath` exists and is readable — checks both in one call. */
|
|
749
|
+
function isReadableFile(filePath) {
|
|
750
|
+
try {
|
|
751
|
+
fs.accessSync(filePath, fs.constants.R_OK);
|
|
752
|
+
return true;
|
|
753
|
+
}
|
|
754
|
+
catch {
|
|
755
|
+
return false;
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
/**
|
|
759
|
+
* Runs the PreCompact producer. Returns any `embedMemory` promises kicked
|
|
760
|
+
* off along the way (empty on every skip path) so `cmdPreCompact` can await
|
|
761
|
+
* them, bounded, before it exits (X6).
|
|
762
|
+
*/
|
|
763
|
+
function runPreCompact(hippoRoot, stdinText, logFile) {
|
|
764
|
+
// X3: the PreCompact hook fires in every Claude Code project, including
|
|
765
|
+
// ones that never ran `hippo init`. Gate on the non-exiting isInitialized
|
|
766
|
+
// check BEFORE any store-opening call (saveActiveTaskSnapshot etc. all
|
|
767
|
+
// call initStore internally, which would silently create a store here).
|
|
768
|
+
if (!isInitialized(hippoRoot)) {
|
|
769
|
+
appendPreCompactLog(logFile, 'skip: store not initialized');
|
|
770
|
+
return [];
|
|
771
|
+
}
|
|
772
|
+
// A true manual invocation has no stdin at all (TTY, or a non-TTY pipe
|
|
773
|
+
// that yielded an empty read) — that's the ONLY case newest-transcript
|
|
774
|
+
// auto-discovery is allowed to run. Any other non-empty stdin must
|
|
775
|
+
// JSON-parse to an object carrying a string transcript_path, or it is
|
|
776
|
+
// treated as malformed input and skipped (X4) rather than silently
|
|
777
|
+
// falling back to discovery, which could snapshot an unrelated session's
|
|
778
|
+
// transcript under this payload's session_id.
|
|
779
|
+
const manualInvocation = !stdinText || stdinText.trim() === '';
|
|
780
|
+
let sessionId = null;
|
|
781
|
+
let payloadTranscriptPath = null;
|
|
782
|
+
if (!manualInvocation) {
|
|
783
|
+
let payload = null;
|
|
784
|
+
try {
|
|
785
|
+
payload = JSON.parse(stdinText.trim());
|
|
786
|
+
}
|
|
787
|
+
catch {
|
|
788
|
+
payload = null;
|
|
789
|
+
}
|
|
790
|
+
if (!payload || typeof payload !== 'object' || typeof payload.transcript_path !== 'string') {
|
|
791
|
+
// Covers non-JSON stdin, a JSON value that isn't an object, and
|
|
792
|
+
// `"transcript_path": null` (or the key missing entirely) — all fail
|
|
793
|
+
// typeof-string. Log and skip; never fall through to auto-discovery.
|
|
794
|
+
appendPreCompactLog(logFile, 'skip: malformed or incomplete PreCompact payload (missing string transcript_path)');
|
|
795
|
+
return [];
|
|
796
|
+
}
|
|
797
|
+
if (typeof payload.session_id === 'string')
|
|
798
|
+
sessionId = payload.session_id;
|
|
799
|
+
payloadTranscriptPath = payload.transcript_path;
|
|
800
|
+
}
|
|
801
|
+
// X11: payload transcript_path must end .jsonl. No directory-containment
|
|
802
|
+
// check is applied on top of this — CLAUDE_CONFIG_DIR can relocate the
|
|
803
|
+
// transcript root entirely, so a path-prefix allowlist would just reject
|
|
804
|
+
// legitimate relocated installs. The trust boundary here is process
|
|
805
|
+
// identity, not path shape: a local process able to feed this hook
|
|
806
|
+
// arbitrary stdin already runs as the same user who owns every transcript
|
|
807
|
+
// this check could gate on, so containment buys no real isolation.
|
|
808
|
+
if (payloadTranscriptPath !== null && !/\.jsonl$/i.test(payloadTranscriptPath)) {
|
|
809
|
+
appendPreCompactLog(logFile, `skip: payload transcript_path is not a .jsonl file: ${payloadTranscriptPath}`);
|
|
810
|
+
return [];
|
|
811
|
+
}
|
|
812
|
+
// A payload transcript_path is EXCLUSIVE: never fall back to
|
|
813
|
+
// newest-transcript auto-discovery when it's missing/unreadable. That
|
|
814
|
+
// fallback would snapshot a DIFFERENT session's transcript under THIS
|
|
815
|
+
// payload's session_id — cross-session contamination with wrong linkage
|
|
816
|
+
// (verify-stage E2E finding, 2026-08-03). Auto-discovery only applies
|
|
817
|
+
// on a true manual invocation (no payload at all).
|
|
818
|
+
let transcriptPath;
|
|
819
|
+
if (payloadTranscriptPath !== null) {
|
|
820
|
+
if (isReadableFile(payloadTranscriptPath)) {
|
|
821
|
+
transcriptPath = payloadTranscriptPath;
|
|
822
|
+
}
|
|
823
|
+
else {
|
|
824
|
+
appendPreCompactLog(logFile, `skip: payload transcript_path unreadable: ${payloadTranscriptPath}`);
|
|
825
|
+
return [];
|
|
826
|
+
}
|
|
827
|
+
}
|
|
828
|
+
else {
|
|
829
|
+
transcriptPath = resolveLastSessionTranscript(undefined, stdinText);
|
|
830
|
+
}
|
|
831
|
+
if (!transcriptPath) {
|
|
832
|
+
appendPreCompactLog(logFile, 'skip: no transcript resolved');
|
|
833
|
+
return [];
|
|
834
|
+
}
|
|
835
|
+
let tail;
|
|
836
|
+
try {
|
|
837
|
+
// CX7 (codex round 2): a final JSONL record larger than the window
|
|
838
|
+
// swallows the whole tail — the seek lands inside it and alignment
|
|
839
|
+
// drops everything up to its terminator, which is exactly the shape of
|
|
840
|
+
// a huge tool_result that itself triggered compaction. Grow the window
|
|
841
|
+
// a bounded number of times until at least one complete line survives.
|
|
842
|
+
tail = readTranscriptTail(transcriptPath, PRE_COMPACT_TAIL_BYTES);
|
|
843
|
+
let prevCap = PRE_COMPACT_TAIL_BYTES;
|
|
844
|
+
for (const grownCap of [PRE_COMPACT_TAIL_BYTES * 4, PRE_COMPACT_TAIL_BYTES * 16]) {
|
|
845
|
+
if (tail.trim() !== '')
|
|
846
|
+
break;
|
|
847
|
+
if (fs.statSync(transcriptPath).size <= prevCap)
|
|
848
|
+
break; // already read the whole file
|
|
849
|
+
appendPreCompactLog(logFile, `tail window grown to ${grownCap} bytes (oversized final record)`);
|
|
850
|
+
tail = readTranscriptTail(transcriptPath, grownCap);
|
|
851
|
+
prevCap = grownCap;
|
|
852
|
+
}
|
|
853
|
+
}
|
|
854
|
+
catch (err) {
|
|
855
|
+
appendPreCompactLog(logFile, `skip: could not read transcript tail: ${err.message}`);
|
|
856
|
+
return [];
|
|
857
|
+
}
|
|
858
|
+
const summaryFull = summariseTranscript(tail);
|
|
859
|
+
// CX5 (codex round 2): extraction runs over REDACTED text — extracted
|
|
860
|
+
// items become durable memories and must never carry raw secrets any more
|
|
861
|
+
// than the snapshot fields may. (The pre-existing SessionEnd capture path
|
|
862
|
+
// is deliberately unchanged.)
|
|
863
|
+
const scrubbedSummary = redactSecrets(summaryFull);
|
|
864
|
+
const extracted = extractFromText(scrubbedSummary);
|
|
865
|
+
const rawTask = lastPlainUserMessage(tail);
|
|
866
|
+
const rawNextStep = lastAssistantTextBlock(tail);
|
|
867
|
+
// Full skip only when EVERY derived field is empty and nothing was
|
|
868
|
+
// extracted — never clobber a user-authored active snapshot with junk.
|
|
869
|
+
if (!rawTask.trim() && !summaryFull.trim() && !rawNextStep.trim() && extracted.length === 0) {
|
|
870
|
+
appendPreCompactLog(logFile, 'skip: empty summary and no extracted items');
|
|
871
|
+
return [];
|
|
872
|
+
}
|
|
873
|
+
const tenantId = resolveTenantId({});
|
|
874
|
+
// Per-field merge (X1): a tool-heavy tail whose only user turns are
|
|
875
|
+
// tool_result arrays derives an empty task even though the summary is
|
|
876
|
+
// non-empty. Loading the existing snapshot first lets each field fall
|
|
877
|
+
// back independently instead of the whole write clobbering a
|
|
878
|
+
// user-authored field with blank text.
|
|
879
|
+
let existing = null;
|
|
880
|
+
try {
|
|
881
|
+
existing = loadActiveTaskSnapshot(hippoRoot, tenantId);
|
|
882
|
+
}
|
|
883
|
+
catch {
|
|
884
|
+
// No existing snapshot to merge against — proceed with derived-only.
|
|
885
|
+
}
|
|
886
|
+
// X9: scrub secret-shaped substrings out of freshly-derived text before it
|
|
887
|
+
// is capped/stored. These fields bypass the normal capture content gate
|
|
888
|
+
// (they're not extracted items), so this producer is the only place that
|
|
889
|
+
// ever sees them before they land in task_snapshots. Carried-over
|
|
890
|
+
// existing field values are NOT re-scrubbed here — they already passed
|
|
891
|
+
// through this same gate (or were set via `hippo snapshot save`, which is
|
|
892
|
+
// deliberately untouched, same as the caps below).
|
|
893
|
+
const scrubbedTask = redactSecrets(rawTask);
|
|
894
|
+
const scrubbedNextStep = redactSecrets(rawNextStep);
|
|
895
|
+
// CX6 (codex round 2): field fallback must never move content across
|
|
896
|
+
// sessions — session A's task carried into a snapshot saved under session
|
|
897
|
+
// B's id would pass compact-resume's session gate wearing the wrong
|
|
898
|
+
// badge. Fall back only when the existing snapshot has no session, this
|
|
899
|
+
// payload has none, or they match.
|
|
900
|
+
const fallback = existing !== null &&
|
|
901
|
+
(existing.session_id === null || sessionId === null || existing.session_id === sessionId)
|
|
902
|
+
? existing
|
|
903
|
+
: null;
|
|
904
|
+
// Field caps are enforced HERE ONLY — saveActiveTaskSnapshot and the
|
|
905
|
+
// `hippo snapshot save` CLI path stay uncapped (AGENTS.md public-API
|
|
906
|
+
// preservation). Caps protect the re-injection token budget. Code-point
|
|
907
|
+
// safe (X2): never split a surrogate pair at the cut.
|
|
908
|
+
const task = scrubbedTask.trim()
|
|
909
|
+
? truncateCodePointSafe(scrubbedTask, PRE_COMPACT_TASK_CAP)
|
|
910
|
+
: (fallback?.task ?? '');
|
|
911
|
+
const summary = scrubbedSummary.trim()
|
|
912
|
+
? truncateKeepNewest(scrubbedSummary, PRE_COMPACT_SUMMARY_CAP)
|
|
913
|
+
: (fallback?.summary ?? '');
|
|
914
|
+
const nextStep = scrubbedNextStep.trim()
|
|
915
|
+
? truncateCodePointSafe(scrubbedNextStep, PRE_COMPACT_NEXT_STEP_CAP)
|
|
916
|
+
: (fallback?.next_step ?? '');
|
|
917
|
+
// Snapshot writes FIRST: a capture-extraction failure below must never
|
|
918
|
+
// lose the headline artifact. The reverse order would risk it. All-empty
|
|
919
|
+
// fields (cross-session tail with nothing derivable) skip the write so a
|
|
920
|
+
// foreign session's junk never displaces the owning session's snapshot.
|
|
921
|
+
if (!task && !summary && !nextStep) {
|
|
922
|
+
appendPreCompactLog(logFile, 'skip: no snapshot content for this session (nothing derivable; fallback blocked or empty)');
|
|
923
|
+
}
|
|
924
|
+
else {
|
|
925
|
+
try {
|
|
926
|
+
saveActiveTaskSnapshot(hippoRoot, tenantId, {
|
|
927
|
+
task,
|
|
928
|
+
summary,
|
|
929
|
+
next_step: nextStep,
|
|
930
|
+
source: 'pre-compact',
|
|
931
|
+
session_id: sessionId,
|
|
932
|
+
});
|
|
933
|
+
appendPreCompactLog(logFile, 'snapshot saved');
|
|
934
|
+
}
|
|
935
|
+
catch (err) {
|
|
936
|
+
appendPreCompactLog(logFile, `snapshot save failed: ${err.message}`);
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
// Capture extraction SECOND, own try/catch: a failure here self-heals at
|
|
940
|
+
// the next SessionEnd capture (existing dedup absorbs the overlap).
|
|
941
|
+
try {
|
|
942
|
+
const { captured, skipped, embeds } = writeExtractedItems(hippoRoot, tenantId, extracted);
|
|
943
|
+
appendPreCompactLog(logFile, `capture: ${captured} items captured, ${skipped} skipped`);
|
|
944
|
+
return embeds;
|
|
945
|
+
}
|
|
946
|
+
catch (err) {
|
|
947
|
+
appendPreCompactLog(logFile, `capture failed: ${err.message}`);
|
|
948
|
+
return [];
|
|
949
|
+
}
|
|
950
|
+
}
|
|
951
|
+
// X6: bound how long cmdPreCompact will wait for fire-and-forget embeddings
|
|
952
|
+
// to settle before it exits. PreCompact runs under a hook timeout (30s in
|
|
953
|
+
// the installer) — 3s leaves ample headroom while still giving embeddings a
|
|
954
|
+
// real chance to finish instead of racing process.exit(0) unconditionally.
|
|
955
|
+
const EMBED_SETTLE_TIMEOUT_MS = 3000;
|
|
956
|
+
/**
|
|
957
|
+
* PreCompact hook entry point. Exit code 2 on PreCompact BLOCKS compaction,
|
|
958
|
+
* so this verb must exit 0 on every path — malformed stdin, missing
|
|
959
|
+
* transcript, and store errors all degrade to a logged no-op rather than a
|
|
960
|
+
* thrown error. Callers (src/cli.ts) must not wrap this in anything that
|
|
961
|
+
* could turn a caught-and-logged failure back into a non-zero exit.
|
|
962
|
+
*/
|
|
963
|
+
export async function cmdPreCompact(hippoRoot, options) {
|
|
964
|
+
const logFile = options.logFile ?? defaultPreCompactLogPath();
|
|
965
|
+
let embeds = [];
|
|
966
|
+
try {
|
|
967
|
+
embeds = runPreCompact(hippoRoot, options.stdinText, logFile);
|
|
968
|
+
}
|
|
969
|
+
catch (err) {
|
|
970
|
+
appendPreCompactLog(logFile, `pre-compact failed: ${err.message}`);
|
|
971
|
+
}
|
|
972
|
+
if (embeds.length > 0) {
|
|
973
|
+
let timer;
|
|
974
|
+
const timeout = new Promise((resolve) => {
|
|
975
|
+
timer = setTimeout(() => resolve('timeout'), EMBED_SETTLE_TIMEOUT_MS);
|
|
976
|
+
timer.unref?.();
|
|
977
|
+
});
|
|
978
|
+
const settled = Promise.allSettled(embeds).then(() => 'settled');
|
|
979
|
+
const outcome = await Promise.race([settled, timeout]);
|
|
980
|
+
clearTimeout(timer);
|
|
981
|
+
appendPreCompactLog(logFile, outcome === 'settled' ? 'embeddings settled' : 'embeddings timeout');
|
|
982
|
+
}
|
|
983
|
+
process.exit(0);
|
|
984
|
+
}
|
|
522
985
|
//# sourceMappingURL=capture.js.map
|
package/dist/capture.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../src/capture.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../src/capture.ts"],"names":[],"mappings":"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"}
|