crbro-memory 2.6.0 → 2.7.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 +515 -487
- package/SECURITY.md +222 -0
- package/bin/crbro.mjs +241 -6
- package/dist/engine/backup.d.ts.map +1 -1
- package/dist/engine/backup.js +5 -1
- package/dist/engine/backup.js.map +1 -1
- package/dist/engine/cortex.d.ts +61 -0
- package/dist/engine/cortex.d.ts.map +1 -1
- package/dist/engine/cortex.js +270 -24
- package/dist/engine/cortex.js.map +1 -1
- package/dist/engine/hookverify.d.ts +42 -0
- package/dist/engine/hookverify.d.ts.map +1 -0
- package/dist/engine/hookverify.js +169 -0
- package/dist/engine/hookverify.js.map +1 -0
- package/dist/engine/maintenance.d.ts.map +1 -1
- package/dist/engine/maintenance.js +15 -2
- package/dist/engine/maintenance.js.map +1 -1
- package/dist/engine/postmortem.d.ts +73 -0
- package/dist/engine/postmortem.d.ts.map +1 -0
- package/dist/engine/postmortem.js +423 -0
- package/dist/engine/postmortem.js.map +1 -0
- package/dist/engine/prefrontal.d.ts +1 -0
- package/dist/engine/prefrontal.d.ts.map +1 -1
- package/dist/engine/prefrontal.js +8 -2
- package/dist/engine/prefrontal.js.map +1 -1
- package/dist/engine/secrets.d.ts +9 -0
- package/dist/engine/secrets.d.ts.map +1 -1
- package/dist/engine/secrets.js +7 -0
- package/dist/engine/secrets.js.map +1 -1
- package/dist/engine/triggers.d.ts +8 -2
- package/dist/engine/triggers.d.ts.map +1 -1
- package/dist/engine/triggers.js +21 -11
- package/dist/engine/triggers.js.map +1 -1
- package/dist/engine/usage.d.ts +61 -0
- package/dist/engine/usage.d.ts.map +1 -0
- package/dist/engine/usage.js +252 -0
- package/dist/engine/usage.js.map +1 -0
- package/dist/search/index.d.ts +40 -0
- package/dist/search/index.d.ts.map +1 -1
- package/dist/search/index.js +186 -5
- package/dist/search/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +98 -10
- package/dist/server.js.map +1 -1
- package/dist/sync/materialize.d.ts.map +1 -1
- package/dist/sync/materialize.js +54 -1
- package/dist/sync/materialize.js.map +1 -1
- package/dist/types/index.d.ts +28 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/ids.d.ts +6 -0
- package/dist/utils/ids.d.ts.map +1 -1
- package/dist/utils/ids.js +14 -4
- package/dist/utils/ids.js.map +1 -1
- package/dist/utils/transcripts.d.ts +63 -0
- package/dist/utils/transcripts.d.ts.map +1 -0
- package/dist/utils/transcripts.js +242 -0
- package/dist/utils/transcripts.js.map +1 -0
- package/hooks/crbro-lifecycle.mjs +608 -0
- package/hooks/crbro-subagent.mjs +17 -4
- package/package.json +2 -1
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ─── Post-mortem of past sessions ───────────────────────────────
|
|
3
|
+
//
|
|
4
|
+
// `crbro postmortem`: look back over recent Claude Code sessions for the
|
|
5
|
+
// moments that usually mean a lesson was missing — the user correcting the
|
|
6
|
+
// assistant again and again, the same tool failing in a row, a request that
|
|
7
|
+
// had to be made twice (in one session, or in two), a session that ran very
|
|
8
|
+
// long — and propose them as candidate lessons, each with where it was seen.
|
|
9
|
+
//
|
|
10
|
+
// Deterministic on purpose: fixed patterns and counts, no model call. It
|
|
11
|
+
// proposes, it never stores. Saving one is the model's job, with crbro_learn,
|
|
12
|
+
// after the user says yes.
|
|
13
|
+
//
|
|
14
|
+
// What is read, and what is not:
|
|
15
|
+
// · user text blocks (what the person typed; harness lines such as system
|
|
16
|
+
// reminders, command output or task notifications are dropped);
|
|
17
|
+
// · the NAME and id of each tool the assistant called — never its input;
|
|
18
|
+
// · of each tool result, only is_error and tool_use_id — never its content;
|
|
19
|
+
// · timestamps and message ids, to measure the session.
|
|
20
|
+
// Assistant prose is not needed for any signal, so it is not read either.
|
|
21
|
+
// Only the main session log is read: in a subagent log the "user" is the
|
|
22
|
+
// orchestrating model, not the person, so its corrections are not theirs.
|
|
23
|
+
// Every string this module returns has been through redact().
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.CORRECTION_PATTERNS = exports.NOT_A_REQUEST = exports.THRESHOLDS = void 0;
|
|
26
|
+
exports.userText = userText;
|
|
27
|
+
exports.toolResults = toolResults;
|
|
28
|
+
exports.toolCalls = toolCalls;
|
|
29
|
+
exports.correctionLabel = correctionLabel;
|
|
30
|
+
exports.excerpt = excerpt;
|
|
31
|
+
exports.runPostmortem = runPostmortem;
|
|
32
|
+
exports.formatPostmortem = formatPostmortem;
|
|
33
|
+
const secrets_js_1 = require("./secrets.js");
|
|
34
|
+
const transcripts_js_1 = require("../utils/transcripts.js");
|
|
35
|
+
exports.THRESHOLDS = {
|
|
36
|
+
/** Corrections in one session before it is worth a look. */
|
|
37
|
+
corrections: 2,
|
|
38
|
+
/** The same tool failing this many times in a row. */
|
|
39
|
+
toolStreak: 3,
|
|
40
|
+
/** A session with this many requests from the person… */
|
|
41
|
+
longUserTurns: 60,
|
|
42
|
+
/** …or this many model responses, is "very long". */
|
|
43
|
+
longResponses: 600,
|
|
44
|
+
/** Word-set overlap for two requests to count as the same one. */
|
|
45
|
+
sameRequestJaccard: 0.8,
|
|
46
|
+
};
|
|
47
|
+
const EXCERPT_CHARS = 160;
|
|
48
|
+
// ─── What the person typed ───────────────────────────────────────
|
|
49
|
+
/** Lines the client writes on the person's behalf. Not requests. */
|
|
50
|
+
exports.NOT_A_REQUEST = /^(?:<local-command-|<system-reminder>|<command-stdout>|<command-message>|<bash-|<user-prompt-submit-hook>|<task-notification>|\[Request interrupted|Caveat: )/;
|
|
51
|
+
/**
|
|
52
|
+
* The text a person typed in one user entry, or '' when the entry is a tool
|
|
53
|
+
* result, a meta line, a compaction summary or a reminder. Reads only the
|
|
54
|
+
* text blocks; a tool_result block is never opened here.
|
|
55
|
+
*/
|
|
56
|
+
function userText(entry) {
|
|
57
|
+
if (!entry || entry.type !== 'user' || entry.isMeta || entry.isSidechain || entry.isCompactSummary)
|
|
58
|
+
return '';
|
|
59
|
+
// A background task's notification or another agent's message: not the person.
|
|
60
|
+
if (entry.origin && typeof entry.origin.kind === 'string' && entry.origin.kind !== 'human')
|
|
61
|
+
return '';
|
|
62
|
+
const content = entry.message?.content;
|
|
63
|
+
let text = '';
|
|
64
|
+
if (typeof content === 'string')
|
|
65
|
+
text = content;
|
|
66
|
+
else if (Array.isArray(content)) {
|
|
67
|
+
if (content.some((b) => b && b.type === 'tool_result'))
|
|
68
|
+
return '';
|
|
69
|
+
text = content.filter((b) => b && b.type === 'text' && typeof b.text === 'string').map((b) => b.text).join('\n');
|
|
70
|
+
}
|
|
71
|
+
else
|
|
72
|
+
return '';
|
|
73
|
+
text = text.replace(/<system-reminder>[\s\S]*?<\/system-reminder>/g, '').trim();
|
|
74
|
+
const name = /<command-name>([\s\S]*?)<\/command-name>/.exec(text);
|
|
75
|
+
if (name) {
|
|
76
|
+
const args = /<command-args>([\s\S]*?)<\/command-args>/.exec(text);
|
|
77
|
+
text = `${name[1].trim()} ${args ? args[1].trim() : ''}`.trim();
|
|
78
|
+
}
|
|
79
|
+
if (!text || exports.NOT_A_REQUEST.test(text))
|
|
80
|
+
return '';
|
|
81
|
+
return text;
|
|
82
|
+
}
|
|
83
|
+
/** Of a user entry's tool results: the id and the error flag. Nothing else. */
|
|
84
|
+
function toolResults(entry) {
|
|
85
|
+
if (!entry || entry.type !== 'user' || entry.isSidechain)
|
|
86
|
+
return [];
|
|
87
|
+
const content = entry.message?.content;
|
|
88
|
+
if (!Array.isArray(content))
|
|
89
|
+
return [];
|
|
90
|
+
const out = [];
|
|
91
|
+
for (const b of content) {
|
|
92
|
+
if (b && b.type === 'tool_result') {
|
|
93
|
+
out.push({ id: typeof b.tool_use_id === 'string' ? b.tool_use_id : '', isError: b.is_error === true });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return out;
|
|
97
|
+
}
|
|
98
|
+
/** Of an assistant entry's tool calls: the id and the tool's name. Never the input. */
|
|
99
|
+
function toolCalls(entry) {
|
|
100
|
+
if (!entry || entry.type !== 'assistant' || entry.isSidechain)
|
|
101
|
+
return [];
|
|
102
|
+
const content = entry.message?.content;
|
|
103
|
+
if (!Array.isArray(content))
|
|
104
|
+
return [];
|
|
105
|
+
const out = [];
|
|
106
|
+
for (const b of content) {
|
|
107
|
+
if (b && b.type === 'tool_use' && typeof b.name === 'string') {
|
|
108
|
+
out.push({ id: typeof b.id === 'string' ? b.id : '', name: b.name });
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return out;
|
|
112
|
+
}
|
|
113
|
+
// ─── Signals ─────────────────────────────────────────────────────
|
|
114
|
+
/** Fixed phrases that, in Spanish or English, usually open a correction. */
|
|
115
|
+
exports.CORRECTION_PATTERNS = [
|
|
116
|
+
{ label: '«no,»', re: /^\s*no\s*[,.!;:]/i },
|
|
117
|
+
{ label: '«te dije»', re: /\b(?:ya\s+)?te\s+(?:lo\s+)?(?:dije|he\s+dicho|hab[ií]a\s+dicho|ped[ií]|he\s+pedido)\b/i },
|
|
118
|
+
{ label: '«otra vez»', re: /\botra\s+vez\b/i },
|
|
119
|
+
{ label: '«eso no»', re: /\beso\s+no\b/i },
|
|
120
|
+
{ label: '«no es eso»', re: /\bno\s+es\s+(?:eso|as[ií]|lo\s+que\s+(?:te\s+)?(?:he\s+)?ped)/i },
|
|
121
|
+
{ label: '«mal»', re: /^\s*mal\b|\b(?:est[aá]|lo\s+has\s+hecho|has\s+hecho|sigue|queda|sale|va)\s+mal\b/i },
|
|
122
|
+
{ label: "«that's wrong»", re: /\bthat'?s\s+(?:wrong|not\s+(?:it|right|what\s+i))/i },
|
|
123
|
+
{ label: '«I said»', re: /\bi\s+(?:said|told\s+you|already\s+(?:said|told))\b/i },
|
|
124
|
+
{ label: '«not what I asked»', re: /\bnot\s+what\s+i\s+(?:asked|wanted|meant)\b/i },
|
|
125
|
+
];
|
|
126
|
+
function correctionLabel(text) {
|
|
127
|
+
for (const p of exports.CORRECTION_PATTERNS)
|
|
128
|
+
if (p.re.test(text))
|
|
129
|
+
return p.label;
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
/** Redact first, then cut: a cut first could leave half a secret the filter no longer recognises. */
|
|
133
|
+
function excerpt(text) {
|
|
134
|
+
const flat = (0, secrets_js_1.redact)(text).text.replace(/\s+/g, ' ').trim();
|
|
135
|
+
return flat.length > EXCERPT_CHARS ? flat.slice(0, EXCERPT_CHARS - 1) + '…' : flat;
|
|
136
|
+
}
|
|
137
|
+
function normalise(text) {
|
|
138
|
+
return text.normalize('NFD').replace(/[\u0300-\u036f]/g, '').toLowerCase()
|
|
139
|
+
.replace(/[^a-z0-9\s]/g, ' ').replace(/\s+/g, ' ').trim();
|
|
140
|
+
}
|
|
141
|
+
function wordSet(norm) {
|
|
142
|
+
return new Set(norm.split(' ').filter(w => w.length >= 3));
|
|
143
|
+
}
|
|
144
|
+
function jaccard(a, b) {
|
|
145
|
+
let inter = 0;
|
|
146
|
+
for (const w of a)
|
|
147
|
+
if (b.has(w))
|
|
148
|
+
inter++;
|
|
149
|
+
const union = a.size + b.size - inter;
|
|
150
|
+
return union === 0 ? 0 : inter / union;
|
|
151
|
+
}
|
|
152
|
+
/** Long enough to be a real request, not "sí" or "continúa". */
|
|
153
|
+
function repeatable(text, norm) {
|
|
154
|
+
return !text.startsWith('/') && norm.length >= 25 && norm.split(' ').length >= 4;
|
|
155
|
+
}
|
|
156
|
+
/** How many recent requests a new one is compared with for near-repeats. */
|
|
157
|
+
const NEAR_WINDOW = 40;
|
|
158
|
+
async function scanSession(s, stats) {
|
|
159
|
+
const findings = [];
|
|
160
|
+
const requests = new Map();
|
|
161
|
+
if (!s.main)
|
|
162
|
+
return { findings, requests };
|
|
163
|
+
const toolName = new Map();
|
|
164
|
+
const responses = new Set();
|
|
165
|
+
let responsesNoId = 0;
|
|
166
|
+
let userTurns = 0;
|
|
167
|
+
let first = '';
|
|
168
|
+
let last = '';
|
|
169
|
+
let toolsSinceUser = [];
|
|
170
|
+
const corrections = [];
|
|
171
|
+
let streak = null;
|
|
172
|
+
const streaks = [];
|
|
173
|
+
const closeStreak = () => {
|
|
174
|
+
if (streak && streak.lines.length >= exports.THRESHOLDS.toolStreak)
|
|
175
|
+
streaks.push(streak);
|
|
176
|
+
streak = null;
|
|
177
|
+
};
|
|
178
|
+
const groups = [];
|
|
179
|
+
const exact = new Map();
|
|
180
|
+
const recent = [];
|
|
181
|
+
for await (const { line, entry } of (0, transcripts_js_1.readJsonl)(s.main, { anyOf: ['"type":"user"', '"type":"assistant"'], stats })) {
|
|
182
|
+
if (!entry || entry.isSidechain)
|
|
183
|
+
continue;
|
|
184
|
+
if (typeof entry.timestamp === 'string') {
|
|
185
|
+
if (!first)
|
|
186
|
+
first = entry.timestamp;
|
|
187
|
+
last = entry.timestamp;
|
|
188
|
+
}
|
|
189
|
+
if (entry.type === 'assistant') {
|
|
190
|
+
const id = entry.message?.id;
|
|
191
|
+
if (typeof id === 'string')
|
|
192
|
+
responses.add(id);
|
|
193
|
+
else
|
|
194
|
+
responsesNoId++;
|
|
195
|
+
for (const c of toolCalls(entry)) {
|
|
196
|
+
if (c.id)
|
|
197
|
+
toolName.set(c.id, c.name);
|
|
198
|
+
if (!toolsSinceUser.includes(c.name) && toolsSinceUser.length < 5)
|
|
199
|
+
toolsSinceUser.push(c.name);
|
|
200
|
+
}
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
if (entry.type !== 'user')
|
|
204
|
+
continue;
|
|
205
|
+
const results = toolResults(entry);
|
|
206
|
+
if (results.length) {
|
|
207
|
+
for (const r of results) {
|
|
208
|
+
const name = toolName.get(r.id) ?? 'desconocida';
|
|
209
|
+
toolName.delete(r.id);
|
|
210
|
+
if (r.isError) {
|
|
211
|
+
if (streak && streak.name === name)
|
|
212
|
+
streak.lines.push(line);
|
|
213
|
+
else {
|
|
214
|
+
closeStreak();
|
|
215
|
+
streak = { name, lines: [line] };
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
closeStreak();
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
const text = userText(entry);
|
|
225
|
+
if (!text)
|
|
226
|
+
continue;
|
|
227
|
+
userTurns++;
|
|
228
|
+
const label = correctionLabel(text);
|
|
229
|
+
if (label)
|
|
230
|
+
corrections.push({ line, text: excerpt(text), label, tools: toolsSinceUser });
|
|
231
|
+
toolsSinceUser = [];
|
|
232
|
+
const norm = normalise(text);
|
|
233
|
+
if (repeatable(text, norm)) {
|
|
234
|
+
const key = norm.slice(0, 300);
|
|
235
|
+
if (!requests.has(key)) {
|
|
236
|
+
const uuid = typeof entry.uuid === 'string' ? entry.uuid : '';
|
|
237
|
+
requests.set(key, { session: s.sessionId, project: s.project, line, text: excerpt(text), uuid, opening: userTurns === 1 });
|
|
238
|
+
}
|
|
239
|
+
let g = exact.get(key);
|
|
240
|
+
const words = wordSet(norm);
|
|
241
|
+
if (g === undefined && words.size >= 5) {
|
|
242
|
+
for (const r of recent) {
|
|
243
|
+
if (r.words.size >= 5 && jaccard(words, r.words) >= exports.THRESHOLDS.sameRequestJaccard) {
|
|
244
|
+
g = r.group;
|
|
245
|
+
break;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
if (g === undefined) {
|
|
250
|
+
g = groups.length;
|
|
251
|
+
groups.push({ lines: [], text: excerpt(text) });
|
|
252
|
+
}
|
|
253
|
+
groups[g].lines.push(line);
|
|
254
|
+
exact.set(key, g);
|
|
255
|
+
recent.push({ words, group: g });
|
|
256
|
+
if (recent.length > NEAR_WINDOW)
|
|
257
|
+
recent.shift();
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
closeStreak();
|
|
261
|
+
const base = { project: s.project, session: s.sessionId };
|
|
262
|
+
if (corrections.length >= exports.THRESHOLDS.corrections) {
|
|
263
|
+
const clearest = corrections.find(c => c.label !== '«no,»') ?? corrections[0];
|
|
264
|
+
const tools = clearest.tools.length ? `, right after using ${clearest.tools.join(', ')}` : '';
|
|
265
|
+
findings.push({
|
|
266
|
+
...base,
|
|
267
|
+
kind: 'corrections',
|
|
268
|
+
score: corrections.length * 3,
|
|
269
|
+
evidence: corrections.slice(0, 5).map(c => ({ session: s.sessionId, line: c.line, text: c.text })),
|
|
270
|
+
lesson: `The user corrected ${corrections.length} times in this session. Candidate lesson: what the clearest correction asks for («${clearest.text}»${tools}).`,
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
for (const st of streaks) {
|
|
274
|
+
findings.push({
|
|
275
|
+
...base,
|
|
276
|
+
kind: 'failing_tool',
|
|
277
|
+
score: st.lines.length * 2,
|
|
278
|
+
evidence: st.lines.slice(0, 5).map(l => ({ session: s.sessionId, line: l })),
|
|
279
|
+
lesson: `${st.name} failed ${st.lines.length} times in a row (lines ${st.lines[0]}–${st.lines[st.lines.length - 1]}). Candidate lesson: what was wrong with the first call, so it is not repeated blindly.`,
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
for (const g of groups) {
|
|
283
|
+
if (g.lines.length < 2)
|
|
284
|
+
continue;
|
|
285
|
+
findings.push({
|
|
286
|
+
...base,
|
|
287
|
+
kind: 'repeated_request',
|
|
288
|
+
score: g.lines.length * 2,
|
|
289
|
+
evidence: g.lines.slice(0, 5).map(l => ({ session: s.sessionId, line: l, text: g.text })),
|
|
290
|
+
lesson: `The same request appears ${g.lines.length} times in the session («${g.text}»). Candidate lesson: why the first answer was not enough.`,
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
const nResponses = responses.size + responsesNoId;
|
|
294
|
+
if (userTurns >= exports.THRESHOLDS.longUserTurns || nResponses >= exports.THRESHOLDS.longResponses) {
|
|
295
|
+
const hours = first && last ? (Date.parse(last) - Date.parse(first)) / 3_600_000 : NaN;
|
|
296
|
+
const span = Number.isFinite(hours) ? ` over ${hours.toFixed(1)} h` : '';
|
|
297
|
+
findings.push({
|
|
298
|
+
...base,
|
|
299
|
+
kind: 'long_session',
|
|
300
|
+
score: 1 + Math.max(userTurns / exports.THRESHOLDS.longUserTurns, nResponses / exports.THRESHOLDS.longResponses),
|
|
301
|
+
evidence: [{ session: s.sessionId, line: 1 }],
|
|
302
|
+
lesson: `Very long session: ${userTurns} requests and ${nResponses} responses${span}. Candidate lesson: at which point it was worth closing with crbro_consolidate and going on in a new session.`,
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
return { findings, requests };
|
|
306
|
+
}
|
|
307
|
+
function redactDeep(v) {
|
|
308
|
+
if (typeof v === 'string')
|
|
309
|
+
return (0, secrets_js_1.redact)(v).text;
|
|
310
|
+
if (Array.isArray(v))
|
|
311
|
+
return v.map(redactDeep);
|
|
312
|
+
if (v && typeof v === 'object') {
|
|
313
|
+
const out = {};
|
|
314
|
+
for (const [k, x] of Object.entries(v))
|
|
315
|
+
out[k] = redactDeep(x);
|
|
316
|
+
return out;
|
|
317
|
+
}
|
|
318
|
+
return v;
|
|
319
|
+
}
|
|
320
|
+
async function runPostmortem(opts = {}) {
|
|
321
|
+
const root = opts.root ?? (0, transcripts_js_1.claudeProjectsRoot)();
|
|
322
|
+
const sessions = await (0, transcripts_js_1.findSessions)({ ...opts, root });
|
|
323
|
+
const stats = (0, transcripts_js_1.newReadStats)();
|
|
324
|
+
let findings = [];
|
|
325
|
+
const across = new Map();
|
|
326
|
+
let read = 0;
|
|
327
|
+
for (const s of sessions) {
|
|
328
|
+
if (!s.main)
|
|
329
|
+
continue;
|
|
330
|
+
read++;
|
|
331
|
+
let scan;
|
|
332
|
+
try {
|
|
333
|
+
scan = await scanSession(s, stats);
|
|
334
|
+
}
|
|
335
|
+
catch {
|
|
336
|
+
continue; // unreadable: skipped, not fatal
|
|
337
|
+
}
|
|
338
|
+
findings.push(...scan.findings);
|
|
339
|
+
for (const [key, seen] of scan.requests) {
|
|
340
|
+
const acc = across.get(key) ?? { seen: [], sessions: 0, allOpening: true };
|
|
341
|
+
// A resumed or forked session can carry the earlier messages over with
|
|
342
|
+
// their ids: the same message twice is a copy, not the person asking again.
|
|
343
|
+
if (seen.uuid && acc.seen.some(x => x.uuid === seen.uuid))
|
|
344
|
+
continue;
|
|
345
|
+
if (acc.seen.length < 5)
|
|
346
|
+
acc.seen.push(seen);
|
|
347
|
+
acc.sessions++;
|
|
348
|
+
acc.allOpening &&= seen.opening;
|
|
349
|
+
across.set(key, acc);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
for (const { seen: list, sessions, allOpening } of across.values()) {
|
|
353
|
+
if (sessions < 2)
|
|
354
|
+
continue;
|
|
355
|
+
// Sessions come newest first, so list[0] is the latest time it was asked.
|
|
356
|
+
// The very same opening line in several sessions is most often a scheduled
|
|
357
|
+
// task or a saved template: worth a mention, ranked below the rest.
|
|
358
|
+
findings.push({
|
|
359
|
+
kind: 'repeated_request',
|
|
360
|
+
project: list[0].project,
|
|
361
|
+
session: list[0].session,
|
|
362
|
+
score: allOpening ? 1 + Math.min(sessions, 10) / 10 : sessions * 2 + 2,
|
|
363
|
+
evidence: list.map(x => ({ session: x.session, line: x.line, text: x.text })),
|
|
364
|
+
lesson: allOpening
|
|
365
|
+
? `The same request opens ${sessions} different sessions («${list[0].text}»). If it is a scheduled task or a template there is no lesson; if it is typed by hand each time, what it asks for can be stored in CRBRO.`
|
|
366
|
+
: `The same request was made in ${sessions} different sessions («${list[0].text}»). Candidate lesson: store the answer or the procedure in CRBRO, so it does not have to be asked again.`,
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
findings.sort((a, b) => b.score - a.score);
|
|
370
|
+
const total = findings.length;
|
|
371
|
+
const max = opts.max !== undefined && opts.max > 0 ? opts.max : 10;
|
|
372
|
+
findings = findings.slice(0, max);
|
|
373
|
+
return redactDeep({
|
|
374
|
+
root,
|
|
375
|
+
days: opts.days ?? null,
|
|
376
|
+
sessions_read: read,
|
|
377
|
+
findings,
|
|
378
|
+
total_findings: total,
|
|
379
|
+
lines_broken: stats.broken,
|
|
380
|
+
lines_oversized: stats.oversized,
|
|
381
|
+
thresholds: exports.THRESHOLDS,
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
// ─── Text output ────────────────────────────────────────────────
|
|
385
|
+
const KIND_LABEL = {
|
|
386
|
+
corrections: 'Repeated corrections',
|
|
387
|
+
failing_tool: 'The same tool failing in a row',
|
|
388
|
+
repeated_request: 'The same request repeated',
|
|
389
|
+
long_session: 'Very long session',
|
|
390
|
+
};
|
|
391
|
+
function formatPostmortem(r) {
|
|
392
|
+
const L = [];
|
|
393
|
+
const period = r.days ? `last ${r.days} days` : 'all history';
|
|
394
|
+
L.push('');
|
|
395
|
+
L.push(` Post-mortem — ${period} · ${r.sessions_read} sessions read`);
|
|
396
|
+
L.push(' Only the user messages and the names of the tools are read; tool results are never');
|
|
397
|
+
L.push(' opened. Everything quoted goes through the secret filter.');
|
|
398
|
+
L.push('');
|
|
399
|
+
if (r.findings.length === 0) {
|
|
400
|
+
L.push(' No signal above the thresholds. Nothing to propose.');
|
|
401
|
+
L.push('');
|
|
402
|
+
return L.join('\n');
|
|
403
|
+
}
|
|
404
|
+
L.push(` ${r.findings.length === r.total_findings ? r.findings.length : `${r.findings.length} of ${r.total_findings}`} candidate lessons, strongest first:`);
|
|
405
|
+
r.findings.forEach((f, i) => {
|
|
406
|
+
L.push('');
|
|
407
|
+
L.push(` ${i + 1}. ${KIND_LABEL[f.kind]} · ${f.project}`);
|
|
408
|
+
L.push(` ${f.lesson}`);
|
|
409
|
+
for (const e of f.evidence) {
|
|
410
|
+
L.push(` - session ${e.session.slice(0, 8)} · line ${e.line}${e.text ? `: «${e.text}»` : ''}`);
|
|
411
|
+
}
|
|
412
|
+
});
|
|
413
|
+
if (r.lines_broken || r.lines_oversized) {
|
|
414
|
+
L.push('');
|
|
415
|
+
L.push(` Lines skipped: ${r.lines_broken} unreadable, ${r.lines_oversized} too long.`);
|
|
416
|
+
}
|
|
417
|
+
L.push('');
|
|
418
|
+
L.push(' Nothing has been saved. These are candidates: to store one, the model proposes it to the');
|
|
419
|
+
L.push(' user and only after a yes uses crbro_learn.');
|
|
420
|
+
L.push('');
|
|
421
|
+
return L.join('\n');
|
|
422
|
+
}
|
|
423
|
+
//# sourceMappingURL=postmortem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postmortem.js","sourceRoot":"","sources":["../../src/engine/postmortem.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefrontal.d.ts","sourceRoot":"","sources":["../../src/engine/prefrontal.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prefrontal.d.ts","sourceRoot":"","sources":["../../src/engine/prefrontal.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAA2B,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAanH,qBAAa,UAAU;IACT,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK;IAIhC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IAiB1C;;;;;;OAMG;IACG,aAAa,CAAC,OAAO,EAAE;QAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB;;;;;;;;WAQG;QACH,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,gGAAgG;QAChG,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,6FAA6F;QAC7F,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,GAAG,OAAO,CAAC,aAAa,GAAG;QAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;QAAC,SAAS,EAAE,WAAW,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IA4EzH;;;OAGG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAStD;;OAEG;IACG,YAAY,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IAa1D;;;;;;;;;OASG;IACG,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;CA8EzC"}
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
5
5
|
exports.Prefrontal = void 0;
|
|
6
6
|
const fs_js_1 = require("../utils/fs.js");
|
|
7
7
|
const hash_js_1 = require("../utils/hash.js");
|
|
8
|
+
const secrets_js_1 = require("./secrets.js");
|
|
8
9
|
/** How many resolved items to keep around as a reminder. */
|
|
9
10
|
const RECENTLY_CLOSED_CAP = 15;
|
|
10
11
|
/** Normalise a stored entry: v1 brains hold plain strings. */
|
|
@@ -64,11 +65,16 @@ class Prefrontal {
|
|
|
64
65
|
let tasks = ctx.pending_tasks.map(toTask);
|
|
65
66
|
let resolved = [];
|
|
66
67
|
let discarded = [];
|
|
68
|
+
let redacted = [];
|
|
67
69
|
if (updates.set_topics) {
|
|
68
70
|
ctx.active_topics = updates.set_topics;
|
|
69
71
|
}
|
|
70
72
|
if (updates.add_pending) {
|
|
71
|
-
|
|
73
|
+
// An open item is read back by crbro_boot in every session and copied
|
|
74
|
+
// into compaction checkpoints: it goes through the same filter as learn.
|
|
75
|
+
const filtrado = (0, secrets_js_1.redact)(updates.add_pending.trim());
|
|
76
|
+
redacted = filtrado.found;
|
|
77
|
+
const text = filtrado.text;
|
|
72
78
|
const id = (0, hash_js_1.pendingId)(text);
|
|
73
79
|
if (!tasks.some(t => t.id === id)) {
|
|
74
80
|
tasks.push({ id, text, added: (0, fs_js_1.now)() });
|
|
@@ -101,7 +107,7 @@ class Prefrontal {
|
|
|
101
107
|
ctx.pending_tasks = tasks;
|
|
102
108
|
ctx.last_updated = (0, fs_js_1.now)();
|
|
103
109
|
await (0, fs_js_1.writeJSON)(this.brain.paths.activeContext(), ctx);
|
|
104
|
-
return { ...ctx, resolved, discarded, written: true };
|
|
110
|
+
return { ...ctx, resolved, discarded, written: true, ...(redacted.length ? { redacted } : {}) };
|
|
105
111
|
}
|
|
106
112
|
/**
|
|
107
113
|
* Record which session was logged last. Nothing else in the context moves.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefrontal.js","sourceRoot":"","sources":["../../src/engine/prefrontal.ts"],"names":[],"mappings":";AAAA,oEAAoE;AACpE,oEAAoE;;;AAEpE,0CAAyE;AACzE,8CAA6C;
|
|
1
|
+
{"version":3,"file":"prefrontal.js","sourceRoot":"","sources":["../../src/engine/prefrontal.ts"],"names":[],"mappings":"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"}
|
package/dist/engine/secrets.d.ts
CHANGED
|
@@ -4,6 +4,15 @@ export interface SecretHit {
|
|
|
4
4
|
index: number;
|
|
5
5
|
length: number;
|
|
6
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* The patterns themselves, read-only. hooks/crbro-lifecycle.mjs carries a copy
|
|
9
|
+
* (a hook copied to ~/.claude cannot import the package) and its test compares
|
|
10
|
+
* both lists kind by kind, source by source.
|
|
11
|
+
*/
|
|
12
|
+
export declare const SECRET_PATTERNS: ReadonlyArray<{
|
|
13
|
+
readonly kind: string;
|
|
14
|
+
readonly re: RegExp;
|
|
15
|
+
}>;
|
|
7
16
|
/** Find credentials in a piece of text. Never returns the values themselves. */
|
|
8
17
|
export declare function findSecrets(text: string): SecretHit[];
|
|
9
18
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/engine/secrets.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AA2GD,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAcrD;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAsBtE;AAED,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAElD"}
|
|
1
|
+
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/engine/secrets.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AA2GD;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAY,CAAC;AAEvG,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAcrD;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAsBtE;AAED,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAElD"}
|
package/dist/engine/secrets.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
// knowledge by redacting it, and the user may never notice. So these patterns
|
|
13
13
|
// only match shapes that are credentials and essentially nothing else.
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.SECRET_PATTERNS = void 0;
|
|
15
16
|
exports.findSecrets = findSecrets;
|
|
16
17
|
exports.redact = redact;
|
|
17
18
|
exports.secretKinds = secretKinds;
|
|
@@ -108,6 +109,12 @@ const PATTERNS = [
|
|
|
108
109
|
// GitHub fine-grained PAT: github_pat_ + long body.
|
|
109
110
|
{ kind: 'GitHub fine-grained token', re: /\bgithub_pat_[A-Za-z0-9_]{60,}\b/g },
|
|
110
111
|
];
|
|
112
|
+
/**
|
|
113
|
+
* The patterns themselves, read-only. hooks/crbro-lifecycle.mjs carries a copy
|
|
114
|
+
* (a hook copied to ~/.claude cannot import the package) and its test compares
|
|
115
|
+
* both lists kind by kind, source by source.
|
|
116
|
+
*/
|
|
117
|
+
exports.SECRET_PATTERNS = PATTERNS;
|
|
111
118
|
/** Find credentials in a piece of text. Never returns the values themselves. */
|
|
112
119
|
function findSecrets(text) {
|
|
113
120
|
const hits = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/engine/secrets.ts"],"names":[],"mappings":";AAAA,oEAAoE;AACpE,EAAE;AACF,yEAAyE;AACzE,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,0EAA0E;AAC1E,yCAAyC;AACzC,EAAE;AACF,sEAAsE;AACtE,8EAA8E;AAC9E,uEAAuE
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/engine/secrets.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,8 +37,14 @@ export declare function buildTriggerIndex(neurons: Neuron[], builtAt?: string):
|
|
|
37
37
|
/** What the hook would say for this command: errors first, then newest first, capped. */
|
|
38
38
|
export declare function lessonsFor(index: TriggerIndex, command: string, max?: number): TriggerEntry[];
|
|
39
39
|
export declare function triggerIndexPath(brain: Brain): string;
|
|
40
|
-
/**
|
|
41
|
-
export declare function
|
|
40
|
+
/** Every readable neuron of the cortex. A corrupted file is skipped: the integrity check reports it. */
|
|
41
|
+
export declare function loadAllNeurons(brain: Brain): Promise<Neuron[]>;
|
|
42
|
+
/**
|
|
43
|
+
* Rebuild from the cortex and write. Derived data: a failure is reported,
|
|
44
|
+
* never thrown. `preloaded` lets consolidate read the cortex once for this
|
|
45
|
+
* and for promotion_candidates (2.7) instead of twice.
|
|
46
|
+
*/
|
|
47
|
+
export declare function writeTriggerIndex(brain: Brain, preloaded?: Neuron[]): Promise<{
|
|
42
48
|
entries: number;
|
|
43
49
|
keys: number;
|
|
44
50
|
} | {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggers.d.ts","sourceRoot":"","sources":["../../src/engine/triggers.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,8FAA8F;AAC9F,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B,MAAM,WAAW,YAAY;IAC3B,uGAAuG;IACvG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;CAC3F;AACD,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/B,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAsED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAsBvD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAgBlD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,MAAc,GAAG,YAAY,CAqB1F;AAED,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAoB,GAAG,YAAY,EAAE,CAO1G;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAErD;AAED,
|
|
1
|
+
{"version":3,"file":"triggers.d.ts","sourceRoot":"","sources":["../../src/engine/triggers.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,8FAA8F;AAC9F,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B,MAAM,WAAW,YAAY;IAC3B,uGAAuG;IACvG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;CAC3F;AACD,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/B,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAsED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAsBvD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAgBlD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,MAAc,GAAG,YAAY,CAqB1F;AAED,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAoB,GAAG,YAAY,EAAE,CAO1G;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAErD;AAED,wGAAwG;AACxG,wBAAsB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CASpE;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAS1I"}
|