eklavya 1.79.0 → 1.81.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 +3 -3
- package/dist/assets/dashboard.html +4 -2
- package/dist/cli-memory.js +10 -0
- package/dist/cli-memory.js.map +1 -1
- package/dist/cli.js +14 -2
- package/dist/cli.js.map +1 -1
- package/dist/config-path.js +1 -0
- package/dist/config-path.js.map +1 -1
- package/dist/config.js +3 -0
- package/dist/config.js.map +1 -1
- package/dist/dashboard.js +5 -0
- package/dist/dashboard.js.map +1 -1
- package/dist/hooks/file-context.js +80 -8
- package/dist/hooks/file-context.js.map +1 -1
- package/dist/hooks/memory-lib.js +11 -30
- package/dist/hooks/memory-lib.js.map +1 -1
- package/dist/hooks/session-start.js +18 -7
- package/dist/hooks/session-start.js.map +1 -1
- package/dist/memory/capture.js +4 -1
- package/dist/memory/capture.js.map +1 -1
- package/dist/memory/health.js +154 -0
- package/dist/memory/health.js.map +1 -0
- package/dist/memory/recall.js +77 -36
- package/dist/memory/recall.js.map +1 -1
- package/dist/memory/spool.js +45 -0
- package/dist/memory/spool.js.map +1 -1
- package/dist/memory/tokens.js +17 -1
- package/dist/memory/tokens.js.map +1 -1
- package/dist/plugin/.claude-plugin/plugin.json +1 -1
- package/dist/plugin/hooks/CLAUDE.md +2 -2
- package/dist/tools/code_tools.js +2 -0
- package/dist/tools/code_tools.js.map +1 -1
- package/dist/tools/collection_tools.js +1 -0
- package/dist/tools/collection_tools.js.map +1 -1
- package/dist/tools/config_tools.js +1 -0
- package/dist/tools/config_tools.js.map +1 -1
- package/dist/tools/index.js +6 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/memory_read_tools.js +9 -1
- package/dist/tools/memory_read_tools.js.map +1 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/user-skill/eklavya/SKILL.md +3 -0
- package/package.json +1 -1
|
@@ -16,8 +16,12 @@
|
|
|
16
16
|
* - Accounted like any recall: a receipt (`file_context`) whose id the block
|
|
17
17
|
* carries, `prepared` until the block is written, `emitted` after. Titles
|
|
18
18
|
* claim no saving, so each line is charged as sent with no source cost.
|
|
19
|
-
* - No
|
|
20
|
-
*
|
|
19
|
+
* - No `allow`. Claude Mem's hook answers `allow`, which also approves the
|
|
20
|
+
* Read; this one adds context and leaves permission to the host. The one
|
|
21
|
+
* decision it makes is a `deny` of a whole-file Read of a code file of 32 KB
|
|
22
|
+
* or more that has history (`HOLD_MIN_BYTES`), every time this session: the
|
|
23
|
+
* saving is the outline or the partial Read the model must take instead, and
|
|
24
|
+
* a retry that always went through saved nothing.
|
|
21
25
|
* - Capture-path imports only (`hook-isolation.test.ts`): it runs before every
|
|
22
26
|
* Read, and fails open like every hook.
|
|
23
27
|
*/
|
|
@@ -26,13 +30,24 @@ import { run, openExisting, config, cwdOf, sessionId } from './lib.js';
|
|
|
26
30
|
import { identityOf } from './capture-lib.js';
|
|
27
31
|
import { relativeToProject } from '../memory/identity.js';
|
|
28
32
|
import { markReceiptEmitted, recordReceipt } from '../memory/store.js';
|
|
29
|
-
import {
|
|
33
|
+
import { languageOf } from '../memory/code.js';
|
|
34
|
+
import { ESTIMATOR, RECEIPT_HINT, estimateTokens, toolSearch } from '../memory/tokens.js';
|
|
30
35
|
import { defangFence } from '../memory/privacy.js';
|
|
31
36
|
import { GLOBAL_PROJECT } from '../store.js';
|
|
32
37
|
/** Lines shown for one file: enough for its story, small enough to ignore. */
|
|
33
38
|
const FILE_CONTEXT_MAX = 8;
|
|
34
39
|
/** A file this small is read in full anyway, and is rarely where history hides. */
|
|
35
40
|
const MIN_BYTES = 1_500;
|
|
41
|
+
/**
|
|
42
|
+
* From this size a whole-file Read of a code file with history is held. Titles
|
|
43
|
+
* alone were not enough to make the agent open an entry (it never did in the
|
|
44
|
+
* ten sessions audited on 2026-10-17); a held Read makes the lookup, or the
|
|
45
|
+
* outline, the next step. A Read with an offset and a limit that stops short of
|
|
46
|
+
* the end always passes, so the hold cannot strand a session. The same 32 KB
|
|
47
|
+
* line claude-mem draws for its read gate, where a smaller file costs about
|
|
48
|
+
* what the timeline saves.
|
|
49
|
+
*/
|
|
50
|
+
const HOLD_MIN_BYTES = 32 * 1024;
|
|
36
51
|
const SEEN_PREFIX = 'filectx:';
|
|
37
52
|
await run(async (input) => {
|
|
38
53
|
if (input.tool_name !== 'Read' || input.agent_id)
|
|
@@ -53,19 +68,29 @@ await run(async (input) => {
|
|
|
53
68
|
const identity = identityOf(input, cwd, sid);
|
|
54
69
|
if (identity.project === GLOBAL_PROJECT)
|
|
55
70
|
return 0;
|
|
71
|
+
let size = 0;
|
|
56
72
|
try {
|
|
57
|
-
|
|
58
|
-
return 0;
|
|
73
|
+
size = fs.statSync(file).size;
|
|
59
74
|
}
|
|
60
75
|
catch {
|
|
61
76
|
return 0;
|
|
62
77
|
}
|
|
78
|
+
if (size < MIN_BYTES)
|
|
79
|
+
return 0;
|
|
80
|
+
// Held only where `code_outline` has something to offer instead: markdown,
|
|
81
|
+
// YAML, JSON and lockfiles have no outline, so a hold there is a dead end.
|
|
82
|
+
const hold = size >= HOLD_MIN_BYTES &&
|
|
83
|
+
resolved.config.memory.file_hold &&
|
|
84
|
+
languageOf(file) !== null &&
|
|
85
|
+
coversFile(file, size, input.tool_input?.offset, input.tool_input?.limit);
|
|
63
86
|
// Capture stores paths relative to the checkout with forward slashes; an
|
|
64
87
|
// import or a model may have kept the absolute path, and Windows history
|
|
65
88
|
// captured before forward slashes has backslashes. Exact matches only: a
|
|
66
89
|
// substring would let `src/a.ts` find `src/a.tsx`, and `_` in a name is a
|
|
67
90
|
// LIKE wildcard.
|
|
68
|
-
|
|
91
|
+
// The checkout the Read happens in, as capture files it: a worktree's own
|
|
92
|
+
// root, not the main checkout it folds into, or no file in a worktree matches.
|
|
93
|
+
const rel = relativeToProject(file, identity.checkout); // non-null: a checkout-less identity is GLOBAL_PROJECT, returned above
|
|
69
94
|
const spellings = [...new Set([rel, rel.replaceAll('/', '\\'), file, `${identity.project}/${rel}`])];
|
|
70
95
|
// Session summaries are left to session start.
|
|
71
96
|
const rows = db
|
|
@@ -97,8 +122,14 @@ await run(async (input) => {
|
|
|
97
122
|
// not both inject. Marked after the lookup, so a lookup that failed is tried
|
|
98
123
|
// again next read; remembered even when nothing was found, so it is paid once.
|
|
99
124
|
const key = `${SEEN_PREFIX}${sid}`;
|
|
100
|
-
if (!claim(db, key, rel))
|
|
125
|
+
if (!claim(db, key, rel)) {
|
|
126
|
+
// The titles went out on the first Read; a later whole-file Read is held
|
|
127
|
+
// again, briefly, until the model takes the outline or a range.
|
|
128
|
+
if (hold && rows.length) {
|
|
129
|
+
deny(`Whole-file Read of ${defangFence(rel)} (${kb(size)} KB) held again by Eklavya. ${STEER(rel)}`);
|
|
130
|
+
}
|
|
101
131
|
return 0;
|
|
132
|
+
}
|
|
102
133
|
if (!rows.length)
|
|
103
134
|
return 0;
|
|
104
135
|
let receiptId;
|
|
@@ -115,7 +146,21 @@ await run(async (input) => {
|
|
|
115
146
|
items: chosen.map((e, i) => ({ entryId: e.id, sourceTokens: 0, sentTokens: estimateTokens(lines[i]) })),
|
|
116
147
|
});
|
|
117
148
|
const context = [`${head} receipt="${receiptId}">`, note, RECEIPT_HINT(receiptId), ...lines, '</eklavya-memory>'].join('\n');
|
|
118
|
-
|
|
149
|
+
if (hold) {
|
|
150
|
+
const ids = chosen.map((e) => e.id).join(', ');
|
|
151
|
+
deny([
|
|
152
|
+
`${head} receipt="${receiptId}">`,
|
|
153
|
+
`Whole-file Read held by Eklavya: ${defangFence(rel)} (${kb(size)} KB) has past work in this project's memory, listed below. Do not read the whole file; in order:`,
|
|
154
|
+
`1. Past work: memory_get({ids: [${ids}], receipt_id: ${receiptId}}) for the entries that matter, about 300 tokens each.`,
|
|
155
|
+
`2. Structure: ${STEER(rel)}`,
|
|
156
|
+
'The titles are history from earlier sessions, not the file\'s current contents.',
|
|
157
|
+
...lines,
|
|
158
|
+
'</eklavya-memory>',
|
|
159
|
+
].join('\n'));
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
process.stdout.write(JSON.stringify({ hookSpecificOutput: { hookEventName: 'PreToolUse', additionalContext: context } }));
|
|
163
|
+
}
|
|
119
164
|
}
|
|
120
165
|
catch (err) {
|
|
121
166
|
// Not written, so not seen: the next read of this file tries again.
|
|
@@ -125,6 +170,33 @@ await run(async (input) => {
|
|
|
125
170
|
markReceiptEmitted(db, receiptId);
|
|
126
171
|
return 0;
|
|
127
172
|
});
|
|
173
|
+
function kb(bytes) {
|
|
174
|
+
return Math.round(bytes / 1024);
|
|
175
|
+
}
|
|
176
|
+
/** What to do instead of reading the whole file, with the one query that loads the tools. */
|
|
177
|
+
function STEER(rel) {
|
|
178
|
+
return `code_outline({file: "${defangFence(rel).replace(/"/g, '\\"')}"}) lists its declarations with line numbers, code_find_symbol({name}) finds where one is declared, then Read with offset and limit for only that part (load the tools first: ${toolSearch('memory_get', 'code_outline', 'code_find_symbol')}). A Read with offset and limit is never held.`;
|
|
179
|
+
}
|
|
180
|
+
function deny(reason) {
|
|
181
|
+
process.stdout.write(JSON.stringify({ hookSpecificOutput: { hookEventName: 'PreToolUse', permissionDecision: 'deny', permissionDecisionReason: reason } }));
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Whether this Read asks for the whole file: no offset (or line 1) and either
|
|
185
|
+
* no limit or one that reaches the last line. A limit is compared with the
|
|
186
|
+
* file's real line count, so `limit: 99999` is not a way around the hold.
|
|
187
|
+
* ponytail: a file over 8 MB with a limit is treated as partial rather than
|
|
188
|
+
* counted; Read refuses such files in full anyway.
|
|
189
|
+
*/
|
|
190
|
+
function coversFile(file, size, offset, limit) {
|
|
191
|
+
if (offset !== undefined && !(Number(offset) <= 1))
|
|
192
|
+
return false;
|
|
193
|
+
if (limit === undefined)
|
|
194
|
+
return true;
|
|
195
|
+
if (typeof limit !== 'number' || !(limit > 0) || size > 8 * 1024 * 1024)
|
|
196
|
+
return false;
|
|
197
|
+
// A file that cannot be read throws, and `run` fails open.
|
|
198
|
+
return limit >= fs.readFileSync(file, 'latin1').split('\n').length;
|
|
199
|
+
}
|
|
128
200
|
/** Marks `rel` seen for this session; false when another Read already had. */
|
|
129
201
|
function claim(db, key, rel) {
|
|
130
202
|
return db
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-context.js","sourceRoot":"","sources":["../../src/hooks/file-context.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"file-context.js","sourceRoot":"","sources":["../../src/hooks/file-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAW,MAAM,UAAU,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAiB,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,8EAA8E;AAC9E,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,mFAAmF;AACnF,MAAM,SAAS,GAAG,KAAK,CAAC;AACxB;;;;;;;;GAQG;AACH,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,CAAC;AACjC,MAAM,WAAW,GAAG,UAAU,CAAC;AAE/B,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;IACxB,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,QAAQ;QAAE,OAAO,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,UAAU,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/F,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IAEpB,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,CAAC;IAClB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,CAAC,CAAC;IAE9C,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG;QAAE,OAAO,CAAC,CAAC;IACnB,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,IAAI,QAAQ,CAAC,OAAO,KAAK,cAAc;QAAE,OAAO,CAAC,CAAC;IAElD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,CAAC;QACH,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,IAAI,GAAG,SAAS;QAAE,OAAO,CAAC,CAAC;IAC/B,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,IAAI,GACR,IAAI,IAAI,cAAc;QACtB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS;QAChC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI;QACzB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAE5E,yEAAyE;IACzE,yEAAyE;IACzE,yEAAyE;IACzE,0EAA0E;IAC1E,iBAAiB;IACjB,0EAA0E;IAC1E,+EAA+E;IAC/E,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAS,CAAC,CAAC,CAAC,uEAAuE;IAChI,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAErG,+CAA+C;IAC/C,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;;;;2CAIqC,CACtC;SACA,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,gBAAgB,GAAG,CAAC,CAAe,CAAC;IAExF,yEAAyE;IACzE,uEAAuE;IACvE,MAAM,KAAK,GAAG,CAAC,KAAoB,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,OAAQ,IAAI,CAAC,KAAK,CAAC,KAAM,CAAe,CAAC,MAAM,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,IAAI;SAChB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC7D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAC9C,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC;SAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SACf,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IAE9D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CACtB,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAClJ,CAAC;IAEF,0EAA0E;IAC1E,yEAAyE;IACzE,6EAA6E;IAC7E,+EAA+E;IAC/E,MAAM,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;QACzB,yEAAyE;QACzE,gEAAgE;QAChE,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC,sBAAsB,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,+BAA+B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvG,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IAE3B,IAAI,SAAiB,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,yBAAyB,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,YAAY,KAAK,CAAC,MAAM,GAAG,CAAC;QAC1G,MAAM,IAAI,GACR,kIAAkI,CAAC;QACrI,SAAS,GAAG,aAAa,CAAC,EAAE,EAAE;YAC5B,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,SAAS,EAAE,GAAG;YACd,KAAK,EAAE,cAAc;YACrB,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,UAAU;YACpB,aAAa,EAAE,cAAc,CAAC,CAAC,GAAG,IAAI,oBAAoB,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnH,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACxG,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,aAAa,SAAS,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7H,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,CACF;gBACE,GAAG,IAAI,aAAa,SAAS,IAAI;gBACjC,oCAAoC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,kGAAkG;gBACnK,mCAAmC,GAAG,kBAAkB,SAAS,wDAAwD;gBACzH,iBAAiB,KAAK,CAAC,GAAG,CAAC,EAAE;gBAC7B,iFAAiF;gBACjF,GAAG,KAAK;gBACR,mBAAmB;aACpB,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,EAAE,CAAC,CACpG,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,oEAAoE;QACpE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACtB,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,kBAAkB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAClC,OAAO,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEH,SAAS,EAAE,CAAC,KAAa;IACvB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,6FAA6F;AAC7F,SAAS,KAAK,CAAC,GAAW;IACxB,OAAO,wBAAwB,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,iLAAiL,UAAU,CAAC,YAAY,EAAE,cAAc,EAAE,kBAAkB,CAAC,gDAAgD,CAAC;AACpW,CAAC;AAED,SAAS,IAAI,CAAC,MAAc;IAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,EAAE,wBAAwB,EAAE,MAAM,EAAE,EAAE,CAAC,CACtI,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,UAAU,CAAC,IAAY,EAAE,IAAY,EAAE,MAAe,EAAE,KAAc;IAC7E,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACjE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,KAAK,CAAC;IACtF,2DAA2D;IAC3D,OAAO,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACrE,CAAC;AAED,8EAA8E;AAC9E,SAAS,KAAK,CAAC,EAAM,EAAE,GAAW,EAAE,GAAW;IAC7C,OAAO,EAAE;SACN,WAAW,CAAC,GAAG,EAAE;QAChB,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAkC,CAAC;QACzG,MAAM,IAAI,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACrC,EAAE,CAAC,OAAO,CACR,mGAAmG,CACpG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,SAAS,EAAE,CAAC;AACjB,CAAC;AAED,SAAS,OAAO,CAAC,EAAM,EAAE,GAAW,EAAE,GAAW;IAC/C,IAAI,CAAC;QACH,uCAAuC;QACvC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAsB,CAAC;QAC7F,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAa,CAAC;QAC/C,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAChH,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;IACxE,CAAC;AACH,CAAC"}
|
package/dist/hooks/memory-lib.js
CHANGED
|
@@ -5,6 +5,7 @@ import { parseStamp } from '../time.js';
|
|
|
5
5
|
import { recall } from '../memory/recall.js';
|
|
6
6
|
import { notify, queuePausedAlert, sessionWrapUp } from '../memory/notify.js';
|
|
7
7
|
import { countEntries } from '../memory/store.js';
|
|
8
|
+
import { BEHIND_AFTER_MS, memoryHealth } from '../memory/health.js';
|
|
8
9
|
import { queueDepth } from '../memory/worker.js';
|
|
9
10
|
import { GLOBAL_PROJECT } from '../store.js';
|
|
10
11
|
import { isInternalObserver, launchWorker, reserveWorker } from '../memory/reservation.js';
|
|
@@ -128,48 +129,27 @@ function drainInBackground(db, opts = {}) {
|
|
|
128
129
|
if (token)
|
|
129
130
|
launchWorker(db, token, opts);
|
|
130
131
|
}
|
|
131
|
-
|
|
132
|
-
export const BEHIND_AFTER_MS = 6 * 60 * 60_000;
|
|
133
|
-
const PAUSE_CAUSE = {
|
|
134
|
-
auth: 'claude not logged in',
|
|
135
|
-
quota: 'usage limit reached',
|
|
136
|
-
missing: 'claude not found on PATH',
|
|
137
|
-
};
|
|
132
|
+
export { BEHIND_AFTER_MS };
|
|
138
133
|
/**
|
|
139
134
|
* One line for the session-start banner when memory has stopped keeping up, or
|
|
140
|
-
* null when
|
|
135
|
+
* null when `memoryHealth` says ok (the line is never shown for a healthy
|
|
136
|
+
* memory). The verdict and its wording live in `memory/health.ts`, the same
|
|
137
|
+
* function `eklavya memory status`, `doctor` and the dashboard read.
|
|
141
138
|
*
|
|
142
139
|
* A paused queue used to be silent everywhere but `eklavya doctor`: the banner
|
|
143
140
|
* went on saying "memory on" and recalling ever-older entries while nothing new
|
|
144
141
|
* was summarised. A paused queue now rechecks itself (`resumeIfRepaired`), so
|
|
145
|
-
* this is the case where that has not worked yet
|
|
146
|
-
* let the next check find the fix.
|
|
142
|
+
* this is the case where that has not worked yet.
|
|
147
143
|
*/
|
|
148
|
-
export function memoryHealthLine(db, now = Date.now()) {
|
|
144
|
+
export function memoryHealthLine(db, now = Date.now(), project) {
|
|
149
145
|
try {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
const row = db
|
|
153
|
-
.prepare("SELECT error_class, MIN(updated_at) AS since FROM memory_jobs WHERE status = 'paused' GROUP BY error_class ORDER BY since LIMIT 1")
|
|
154
|
-
.get();
|
|
155
|
-
const cause = PAUSE_CAUSE[row?.error_class ?? ''] ?? 'provider failing';
|
|
156
|
-
const since = row?.since ? ` since ${shortDate(row.since)}` : '';
|
|
157
|
-
return `Memory paused · ${cause}${since} · local summaries meanwhile · fix it, then: eklavya memory process`;
|
|
158
|
-
}
|
|
159
|
-
const oldest = parseStamp(queue.oldest);
|
|
160
|
-
if (oldest !== null && now - oldest >= BEHIND_AFTER_MS) {
|
|
161
|
-
return `Memory behind · ${queue.pending} job${queue.pending === 1 ? '' : 's'} waiting, oldest ${Math.floor((now - oldest) / 3_600_000)}h · run: eklavya doctor`;
|
|
162
|
-
}
|
|
163
|
-
return null;
|
|
146
|
+
return memoryHealth(db, { now, project }).line;
|
|
147
|
+
/* c8 ignore next 3 -- memoryHealth degrades per probe and never throws; defensive */
|
|
164
148
|
}
|
|
165
149
|
catch {
|
|
166
150
|
return null;
|
|
167
151
|
}
|
|
168
152
|
}
|
|
169
|
-
function shortDate(iso) {
|
|
170
|
-
const d = new Date(iso);
|
|
171
|
-
return Number.isNaN(d.getTime()) ? iso.slice(0, 10) : `${d.getDate()} ${d.toLocaleString('en', { month: 'short' })}`;
|
|
172
|
-
}
|
|
173
153
|
/** Replays anything the spool holds. Idempotent; safe to call every session. */
|
|
174
154
|
export function replaySpool(db) {
|
|
175
155
|
try {
|
|
@@ -189,7 +169,7 @@ export function replaySpool(db) {
|
|
|
189
169
|
* `prepared` until the caller writes the block and calls `markEmitted`.
|
|
190
170
|
* `excludeOwnSession` leaves out what this session wrote (see `RecallOptions`).
|
|
191
171
|
*/
|
|
192
|
-
export function recallBlock(db, resolved, identity, scope, excludeOwnSession = false) {
|
|
172
|
+
export function recallBlock(db, resolved, identity, scope, excludeOwnSession = false, maxChars) {
|
|
193
173
|
try {
|
|
194
174
|
if (!resolved.config.memory.enabled)
|
|
195
175
|
return null;
|
|
@@ -199,6 +179,7 @@ export function recallBlock(db, resolved, identity, scope, excludeOwnSession = f
|
|
|
199
179
|
scope,
|
|
200
180
|
index: scope === 'session_start',
|
|
201
181
|
excludeOwnSession,
|
|
182
|
+
maxChars,
|
|
202
183
|
});
|
|
203
184
|
return result.block ? result : null;
|
|
204
185
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-lib.js","sourceRoot":"","sources":["../../src/hooks/memory-lib.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/H,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,MAAM,EAAqB,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE3F,+EAA+E;AAC/E,4EAA4E;AAC5E,6EAA6E;AAC7E,mBAAmB;AACnB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,GAAG,MAAM,CAAC;AAE3C;;;;;;;GAOG;AACH,SAAS,gBAAgB,CAAC,EAAM,EAAE,QAAwB,EAAE,OAAe,EAAE,GAAY;IACvF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,GAAG,GACP,GAAG;YACH,IAAI,CAAC,MAAM,IAAI,eAAe;YAC9B,gEAAgE;YAChE,MAAM,KAAK,IAAI;YACf,GAAG,GAAG,MAAM,IAAI,eAAe,CAAC;QAClC,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,YAAY,CAAC,EAAE,EAAE;YACf,OAAO;YACP,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,cAAc;YACtB,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB;SACnD,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,EAAM,EACN,QAAwB,EACxB,QAA0B,EAC1B,OAA0B,EAAE;IAE5B,qEAAqE;IACrE,WAAW,CAAC,EAAE,CAAC,CAAC;IAChB,IAAI,CAAC;QACH,2EAA2E;QAC3E,2EAA2E;QAC3E,4DAA4D;QAC5D,IAAI,QAAQ,CAAC,OAAO,KAAK,cAAc;YAAE,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC;IAC/G,CAAC;IAAC,MAAM,CAAC;QACP,oDAAoD;IACtD,CAAC;IACD,IAAI,CAAC;QACH,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;IAC1E,CAAC;IACD,IAAI,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvC,mEAAmE;YACnE,sEAAsE;YACtE,uEAAuE;YACvE,qEAAqE;YACrE,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,iEAAiE;gBACjE,MAAM,kBAAkB,CAAC,EAAE,CAAC,CAAC;gBAC7B,IAAI,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;oBACjB,SAAS,CAAC,EAAE,CAAC,CAAC;oBACd,iBAAiB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;iBAAM,IAAI,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC/B,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACxB,CAAC;YACD,OAAO;QACT,CAAC;QACD,MAAM,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;IACxE,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,iBAAiB,CAAC,EAAM,EAAE,OAA4B,EAAE;IAC/D,IAAI,kBAAkB,EAAE;QAAE,OAAO;IACjC,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;IAChC,IAAI,KAAK;QAAE,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"memory-lib.js","sourceRoot":"","sources":["../../src/hooks/memory-lib.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ import { recordBaseline } from './changes-lib.js';
|
|
|
15
15
|
import { sessionBlock } from './delegation-lib.js';
|
|
16
16
|
import { run, openOrDiagnose, config, cwdOf, sessionId, clearNudgeState } from './lib.js';
|
|
17
17
|
import { flushAtSeam, identityOf, memoryHealthLine, recallBlock, record, replaySpool } from './memory-lib.js';
|
|
18
|
-
import { markEmitted, startupDisplay } from '../memory/recall.js';
|
|
18
|
+
import { HOOK_CONTEXT_CHARS, markEmitted, startupDisplay } from '../memory/recall.js';
|
|
19
19
|
import { recalledLine, savingsFrom } from '../memory/tokens.js';
|
|
20
20
|
import { AMBER, dialParts, paint } from '../statusline.js';
|
|
21
21
|
import { dashboardPort } from '../paths.js';
|
|
@@ -67,6 +67,13 @@ const DIRECTIVE = `[Eklavya] Standing instruction for this session, on every tas
|
|
|
67
67
|
let updateLine = null;
|
|
68
68
|
/** The usage ping's one-time notice. Same rules as `updateLine`; the first ping waits for it. */
|
|
69
69
|
let telemetryLine = null;
|
|
70
|
+
/**
|
|
71
|
+
* The memory health line, set only when the verdict is not ok. Stale memory is
|
|
72
|
+
* recalled as confidently as fresh memory, so a stalled pipeline is said at
|
|
73
|
+
* session start whatever `quiet` says, like `updateLine`: it is a status, not a
|
|
74
|
+
* greeting. Never set for a healthy memory.
|
|
75
|
+
*/
|
|
76
|
+
let memoryLine = null;
|
|
70
77
|
/** What the greeting may say about the dashboard; settled before any early return. */
|
|
71
78
|
let dashboardState = 'down';
|
|
72
79
|
await run(async (input) => {
|
|
@@ -166,9 +173,16 @@ await run(async (input) => {
|
|
|
166
173
|
// A resume restores the whole transcript, so this session's own entries
|
|
167
174
|
// are already in front of the model (issue #117). A compaction does not:
|
|
168
175
|
// there they may be the detail the summary dropped.
|
|
169
|
-
|
|
176
|
+
// Claude Code drops a hook's whole output past 10,000 characters, and the
|
|
177
|
+
// directive (and the delegation block) ride in the same output, so the
|
|
178
|
+
// memory block gets what they leave.
|
|
179
|
+
const rest = withSurfaceNote(DIRECTIVE).length +
|
|
180
|
+
(resolved.config.delegate_work ? sessionBlock(resolved.config.cadence, resolved.config.quiz.panel).length : 0) +
|
|
181
|
+
200;
|
|
182
|
+
recalled = recallBlock(db, resolved, identity, 'session_start', input.source === 'resume', HOOK_CONTEXT_CHARS - rest);
|
|
170
183
|
if (recalled?.block)
|
|
171
184
|
memoryContext.push(recalled.block);
|
|
185
|
+
memoryLine = memoryHealthLine(db, Date.now(), identity.project);
|
|
172
186
|
}
|
|
173
187
|
// Every emit below that carries `memoryContext` passes this, so the receipt
|
|
174
188
|
// says `emitted` and the entries count as handed over only once the block
|
|
@@ -309,6 +323,8 @@ await run(async (input) => {
|
|
|
309
323
|
* silenced session: no update or telemetry line, which would be a greeting.
|
|
310
324
|
*/
|
|
311
325
|
function emit(shown, context, sent, announce = true) {
|
|
326
|
+
if (memoryLine && announce)
|
|
327
|
+
shown = [...shown, paint(memoryLine, AMBER, !process.env.NO_COLOR)];
|
|
312
328
|
if (updateLine && announce) {
|
|
313
329
|
shown = [...shown, updateLine.text];
|
|
314
330
|
if (updateLine.announces)
|
|
@@ -359,11 +375,6 @@ function banner(db, out, parts) {
|
|
|
359
375
|
}
|
|
360
376
|
if (parts.moved)
|
|
361
377
|
out.push(paint(parts.moved, parts.moved.includes(' re-filed') ? 114 : AMBER, color));
|
|
362
|
-
// Stale memory is recalled as confidently as fresh memory, so the one state
|
|
363
|
-
// worth a warning is a queue that has stopped turning evidence into entries.
|
|
364
|
-
const health = parts.memory ? memoryHealthLine(db) : null;
|
|
365
|
-
if (health)
|
|
366
|
-
out.push(paint(health, AMBER, color));
|
|
367
378
|
if (parts.quiz)
|
|
368
379
|
out.push(`Learning ${counts.learning} · Mastered ${counts.mastered} · Due ${counts.due}`);
|
|
369
380
|
if (parts.overrides.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/hooks/session-start.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/hooks/session-start.ts"],"names":[],"mappings":"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"}
|
package/dist/memory/capture.js
CHANGED
|
@@ -92,7 +92,10 @@ export function prepare(config, identity, event) {
|
|
|
92
92
|
tool: event.tool ?? null,
|
|
93
93
|
title: event.title ? redact(event.title, policy).text : null,
|
|
94
94
|
body: cleaned.text,
|
|
95
|
-
|
|
95
|
+
// Against the checkout the file was touched in, not the project: a worktree
|
|
96
|
+
// folds into its main checkout, and a path relative to that spelled the same
|
|
97
|
+
// file differently in every worktree (or kept it absolute).
|
|
98
|
+
files: files.map((f) => relativeToProject(f, identity.checkout ?? identity.project)),
|
|
96
99
|
occurredAt,
|
|
97
100
|
redacted: cleaned.redacted,
|
|
98
101
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/memory/capture.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/memory/capture.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAyB,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAsB,MAAM,cAAc,CAAC;AACjI,OAAO,EAAE,WAAW,EAAsB,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAiCrD,iFAAiF;AACjF,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,QAAQ,GAAG,CAAC,CAAC;AAEnC;;;;GAIG;AACH,MAAM,aAAa,GAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AAEhF,MAAM,UAAU,UAAU,CAAC,MAAqB;IAC9C,OAAO;QACL,YAAY,EAAE,CAAC,GAAG,eAAe,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;QAChF,YAAY,EAAE,CAAC,GAAG,eAAe,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;QAChF,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe;KAC/C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,SAAwB,eAAe;IAC9E,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IACzD,OAAO,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;AACjE,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,OAAO,CACrB,MAAqB,EACrB,QAA0B,EAC1B,KAAgB;IAEhB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAC3E,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5F,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAClD,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5D,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAChC,0EAA0E;QAC1E,4EAA4E;QAC5E,2EAA2E;QAC3E,qEAAqE;QACrE,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC7D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,0EAA0E;YAC1E,oEAAoE;YACpE,wEAAwE;YACxE,gDAAgD;YAChD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,0EAA0E;IAC1E,yEAAyE;IACzE,6EAA6E;IAC7E,kEAAkE;IAClE,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,MAAM,EAAE,CAAC;IAEhD,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC;YACjB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,UAAU;YACV,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC;QACF,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,MAAM;QAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QAC5D,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,4EAA4E;QAC5E,6EAA6E;QAC7E,4DAA4D;QAC5D,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;QACpF,UAAU;QACV,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,EAAM,EACN,MAAqB,EACrB,QAA0B,EAC1B,KAAgB;IAEhB,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK;QAAE,OAAO,UAAU,CAAC;IAC9B,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,EAAa,EACb,MAAqB,EACrB,QAA0B,EAC1B,KAAgB;IAEhB,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK;QAAE,OAAO,UAAU,CAAC;IAC9B,IAAI,EAAE,EAAE,CAAC;QACP,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC5C,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;YACxE,sBAAsB;QACxB,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,yDAAyD;AACzD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;AAE3G;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,KAAoB;IAC/C,OAAO,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC;AACzG,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,UAAU,CAAC,EAAM;IAC/B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAC1C,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAuB,CAAC;QACtC,4EAA4E;QAC5E,4EAA4E;QAC5E,oEAAoE;QACpE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3G,OAAO,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC5C,IAAI,QAAQ;gBAAE,QAAQ,EAAE,CAAC;;gBACpB,OAAO,EAAE,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,2EAA2E;YAC3E,qEAAqE;YACrE,uEAAuE;YACvE,wEAAwE;YACxE,8DAA8D;YAC9D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC;QAChF,CAAC;IACH,CAAC;IACD,uEAAuE;IACvE,oCAAoC;IACpC,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { parseStamp } from '../time.js';
|
|
2
|
+
import { DELIVERED, NOT_HELPER_RECEIPT } from './store.js';
|
|
3
|
+
import { lastDropped, droppedCount, spoolBacklog } from './spool.js';
|
|
4
|
+
import { queueDepth } from './worker.js';
|
|
5
|
+
/** A queue or backlog older than this is a stalled worker, not a busy one: a seam drains every turn. */
|
|
6
|
+
export const BEHIND_AFTER_MS = 6 * 60 * 60_000;
|
|
7
|
+
/** Behind this long while work keeps arriving, memory is stalled. */
|
|
8
|
+
export const STALLED_AFTER_MS = 24 * 60 * 60_000;
|
|
9
|
+
/** A spooled file that outlives a session start is a database refusing writes. */
|
|
10
|
+
const SPOOL_STUCK_MS = 60 * 60_000;
|
|
11
|
+
/** A permanently failed job older than this is history, not news. */
|
|
12
|
+
const FAILED_RECENT_MS = 7 * 24 * 60 * 60_000;
|
|
13
|
+
/** Recent sessions over which recall delivered is compared with reads. */
|
|
14
|
+
export const RECENT_SESSIONS = 10;
|
|
15
|
+
/** Fewer recalls than this is too little to say anything about reads. */
|
|
16
|
+
const MIN_RECALLS = 3;
|
|
17
|
+
/** Fewer answerable Reads than this is too little to say file context should have fired. */
|
|
18
|
+
const MIN_FILE_READS = 10;
|
|
19
|
+
const PAUSE_CAUSE = {
|
|
20
|
+
auth: 'claude not logged in',
|
|
21
|
+
quota: 'usage limit reached',
|
|
22
|
+
missing: 'claude not found on PATH',
|
|
23
|
+
};
|
|
24
|
+
/** Never throws: a half-built database still has to report. */
|
|
25
|
+
function safely(fn, fallback) {
|
|
26
|
+
try {
|
|
27
|
+
return fn();
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return fallback;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Why a job stopped, as a fixed phrase. The class is the provider's own
|
|
35
|
+
* vocabulary; `last_error` is only matched, never returned, because it is
|
|
36
|
+
* provider prose that has carried a URL with a token in it.
|
|
37
|
+
*/
|
|
38
|
+
function causeOf(errorClass, lastError) {
|
|
39
|
+
if (errorClass === 'auth' || /not logged in|please run \/login|\/login/i.test(lastError ?? ''))
|
|
40
|
+
return PAUSE_CAUSE.auth;
|
|
41
|
+
return PAUSE_CAUSE[errorClass ?? ''] ?? 'provider failing';
|
|
42
|
+
}
|
|
43
|
+
function shortDate(iso) {
|
|
44
|
+
const d = new Date(iso);
|
|
45
|
+
return Number.isNaN(d.getTime()) ? iso.slice(0, 10) : `${d.getDate()} ${d.toLocaleString('en', { month: 'short' })}`;
|
|
46
|
+
}
|
|
47
|
+
function hours(ms) {
|
|
48
|
+
return Math.floor(ms / 3_600_000);
|
|
49
|
+
}
|
|
50
|
+
export function memoryHealth(db, opts = {}) {
|
|
51
|
+
const now = opts.now ?? Date.now();
|
|
52
|
+
const project = opts.project ?? null;
|
|
53
|
+
const scope = project ? ' AND project = ?' : '';
|
|
54
|
+
const args = project ? [project] : [];
|
|
55
|
+
const one = (sql, ...extra) => safely(() => db.prepare(sql).get(...extra), undefined);
|
|
56
|
+
const queue = safely(() => queueDepth(db), { pending: 0, paused: 0, failed: 0, quarantined: 0, oldest: null });
|
|
57
|
+
const newestEntry = one(`SELECT MAX(created_at) AS at FROM memory_entries WHERE deleted_at IS NULL AND import_source IS NULL${scope}`, ...args)?.at ?? null;
|
|
58
|
+
const newestEvidence = one(`SELECT MAX(received_at) AS at FROM evidence_events WHERE 1=1${scope}`, ...args)?.at ?? null;
|
|
59
|
+
// Evidence the pipeline has not turned into an entry since the last entry was
|
|
60
|
+
// written. `julianday` reads both stored timestamp shapes as UTC.
|
|
61
|
+
const behindSince = one(`SELECT MIN(received_at) AS at FROM evidence_events
|
|
62
|
+
WHERE status != 'summarized' AND source != 'import'${scope}
|
|
63
|
+
AND (? IS NULL OR julianday(received_at) > julianday(?))`, ...args, newestEntry, newestEntry)?.at ?? null;
|
|
64
|
+
const evidenceMs = parseStamp(newestEvidence);
|
|
65
|
+
const active = evidenceMs !== null && now - evidenceMs < STALLED_AFTER_MS;
|
|
66
|
+
const behindMs = parseStamp(behindSince);
|
|
67
|
+
const behindFor = behindMs === null ? 0 : now - behindMs;
|
|
68
|
+
const stuck = one(`SELECT error_class, last_error, updated_at AS since FROM memory_jobs
|
|
69
|
+
WHERE status IN ('paused', 'failed') ORDER BY (status = 'paused') DESC, updated_at DESC LIMIT 1`);
|
|
70
|
+
const cause = stuck ? causeOf(stuck.error_class, stuck.last_error) : null;
|
|
71
|
+
const pausedSince = one("SELECT MIN(updated_at) AS since FROM memory_jobs WHERE status = 'paused'")?.since ?? null;
|
|
72
|
+
const failedRecent = one("SELECT COUNT(*) AS n FROM memory_jobs WHERE status = 'failed' AND julianday(updated_at) > julianday(?)", new Date(now - FAILED_RECENT_MS).toISOString())?.n ?? 0;
|
|
73
|
+
const spool = spoolBacklog();
|
|
74
|
+
const dropped = safely(() => droppedCount(), 0);
|
|
75
|
+
const droppedAt = parseStamp(safely(() => lastDropped(), null));
|
|
76
|
+
// The last RECENT_SESSIONS sessions that were handed a recall, then what the
|
|
77
|
+
// model did with it in those same sessions.
|
|
78
|
+
const sessions = safely(() => db
|
|
79
|
+
.prepare(`SELECT session_id FROM context_receipts
|
|
80
|
+
WHERE session_id IS NOT NULL AND ${NOT_HELPER_RECEIPT} AND ${DELIVERED}${scope}
|
|
81
|
+
GROUP BY session_id ORDER BY MAX(id) DESC LIMIT ${RECENT_SESSIONS}`)
|
|
82
|
+
.all(...args).map((r) => r.session_id), []);
|
|
83
|
+
const ids = JSON.stringify(sessions);
|
|
84
|
+
const inSessions = 'session_id IN (SELECT value FROM json_each(?))';
|
|
85
|
+
const count = (sql, ...extra) => one(sql, ...extra)?.n ?? 0;
|
|
86
|
+
const recallDelivered = count(`SELECT COUNT(*) AS n FROM context_receipts WHERE ${inSessions} AND ${DELIVERED} AND scope IN ('session_start', 'prompt')${scope}`, ids, ...args);
|
|
87
|
+
const fileFires = count(`SELECT COUNT(*) AS n FROM context_receipts WHERE ${inSessions} AND ${DELIVERED} AND scope = 'file_context'${scope}`, ids, ...args);
|
|
88
|
+
const memoryReads = count(`SELECT COUNT(*) AS n FROM memory_reads WHERE ${inSessions}${scope}`, ids, ...args);
|
|
89
|
+
// Reads that file context could have answered: a file the parent read (once
|
|
90
|
+
// per file per session, as the hook injects) that an entry already named
|
|
91
|
+
// before the read. A read of a file with no history is not a miss.
|
|
92
|
+
const fileReads = count(`SELECT COUNT(*) AS n FROM (
|
|
93
|
+
SELECT DISTINCT e.session_id, f.value FROM evidence_events e, json_each(e.files) f
|
|
94
|
+
WHERE e.session_id IN (SELECT value FROM json_each(?)) AND e.tool = 'Read' AND e.agent_id IS NULL${scope.replace('project', 'e.project')}
|
|
95
|
+
AND EXISTS (
|
|
96
|
+
SELECT 1 FROM memory_entries m, json_each(m.files) mf
|
|
97
|
+
WHERE m.project = e.project AND m.deleted_at IS NULL AND m.superseded_by IS NULL
|
|
98
|
+
AND m.kind != 'session_summary' AND m.files IS NOT NULL AND mf.value = f.value
|
|
99
|
+
AND julianday(m.created_at) < julianday(e.received_at))
|
|
100
|
+
)`, ids, ...args);
|
|
101
|
+
const recent = `${sessions.length} session${sessions.length === 1 ? '' : 's'}`;
|
|
102
|
+
const reasons = [];
|
|
103
|
+
const add = (level, code, text) => reasons.push({ level, code, text });
|
|
104
|
+
if (queue.paused > 0) {
|
|
105
|
+
const since = pausedSince ? ` since ${shortDate(pausedSince)}` : '';
|
|
106
|
+
const long = (parseStamp(pausedSince) ?? now) <= now - STALLED_AFTER_MS;
|
|
107
|
+
add(long ? 'stalled' : 'warn', 'paused', `Memory ${long ? 'stalled' : 'paused'} · ${cause}${since} · local summaries meanwhile · fix it, then: eklavya memory process`);
|
|
108
|
+
}
|
|
109
|
+
const oldestJob = parseStamp(queue.oldest);
|
|
110
|
+
if (oldestJob !== null && now - oldestJob >= BEHIND_AFTER_MS) {
|
|
111
|
+
const stalled = now - oldestJob >= STALLED_AFTER_MS;
|
|
112
|
+
add(stalled ? 'stalled' : 'warn', 'queue_old', `Memory ${stalled ? 'stalled' : 'behind'} · ${queue.pending} job${queue.pending === 1 ? '' : 's'} waiting, oldest ${hours(now - oldestJob)}h · run: eklavya doctor`);
|
|
113
|
+
}
|
|
114
|
+
if (behindMs !== null && behindFor >= BEHIND_AFTER_MS && !reasons.some((r) => r.code === 'paused')) {
|
|
115
|
+
const stalled = behindFor >= STALLED_AFTER_MS;
|
|
116
|
+
add(stalled ? 'stalled' : 'warn', 'no_entries', `Memory ${stalled ? 'stalled' : 'behind'} · nothing new remembered for ${hours(behindFor)}h while work was captured${cause ? ` (${cause})` : ''} · run: eklavya memory status`);
|
|
117
|
+
}
|
|
118
|
+
if (failedRecent > 0) {
|
|
119
|
+
add('warn', 'failed', `Memory · ${failedRecent} job${failedRecent === 1 ? '' : 's'} failed this week (${cause}) · run: eklavya memory status`);
|
|
120
|
+
}
|
|
121
|
+
if (spool.oldestMs !== null && now - spool.oldestMs >= SPOOL_STUCK_MS) {
|
|
122
|
+
add('warn', 'spool', `Memory · ${spool.files} spooled file${spool.files === 1 ? '' : 's'} not written to the database for ${hours(now - spool.oldestMs)}h · run: eklavya doctor`);
|
|
123
|
+
}
|
|
124
|
+
if (dropped > 0 && droppedAt !== null && now - droppedAt < FAILED_RECENT_MS) {
|
|
125
|
+
add('warn', 'dropped', `Memory · ${dropped} event${dropped === 1 ? '' : 's'} dropped before reaching the database · run: eklavya memory replay`);
|
|
126
|
+
}
|
|
127
|
+
if (recallDelivered >= MIN_RECALLS && memoryReads === 0) {
|
|
128
|
+
add('warn', 'no_reads', `Memory · recall reached Claude ${recallDelivered} times in the last ${recent} and memory_search was never called`);
|
|
129
|
+
}
|
|
130
|
+
if (fileReads >= MIN_FILE_READS && fileFires === 0) {
|
|
131
|
+
add('warn', 'no_file_context', `Memory · file context never fired across ${fileReads} reads of files with history in the last ${recent}`);
|
|
132
|
+
}
|
|
133
|
+
reasons.sort((a, b) => Number(b.level === 'stalled') - Number(a.level === 'stalled'));
|
|
134
|
+
return {
|
|
135
|
+
verdict: reasons.some((r) => r.level === 'stalled') ? 'stalled' : reasons.length ? 'warn' : 'ok',
|
|
136
|
+
reasons,
|
|
137
|
+
facts: {
|
|
138
|
+
newest_entry: newestEntry,
|
|
139
|
+
newest_evidence: newestEvidence,
|
|
140
|
+
active,
|
|
141
|
+
behind_since: behindSince,
|
|
142
|
+
queue,
|
|
143
|
+
cause,
|
|
144
|
+
spool: { bytes: spool.bytes, files: spool.files, dropped },
|
|
145
|
+
sessions_checked: sessions.length,
|
|
146
|
+
recall_delivered: recallDelivered,
|
|
147
|
+
memory_reads: memoryReads,
|
|
148
|
+
file_context_fires: fileFires,
|
|
149
|
+
file_reads: fileReads,
|
|
150
|
+
},
|
|
151
|
+
line: reasons[0]?.text ?? null,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/memory/health.ts"],"names":[],"mappings":"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"}
|