claude-memory-store 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/atlas/indexes.d.ts.map +1 -1
- package/dist/atlas/indexes.js +4 -0
- package/dist/atlas/indexes.js.map +1 -1
- package/dist/atlas/vector.d.ts +6 -0
- package/dist/atlas/vector.d.ts.map +1 -1
- package/dist/atlas/vector.js +90 -6
- package/dist/atlas/vector.js.map +1 -1
- package/dist/bin/claude-memory.js +135 -80
- package/dist/bin/claude-memory.js.map +1 -1
- package/dist/bin/mcp-server.js +48 -8
- package/dist/bin/mcp-server.js.map +1 -1
- package/dist/config.d.ts +7 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +43 -2
- package/dist/config.js.map +1 -1
- package/dist/hooks/hook-input.d.ts +34 -0
- package/dist/hooks/hook-input.d.ts.map +1 -0
- package/dist/hooks/hook-input.js +68 -0
- package/dist/hooks/hook-input.js.map +1 -0
- package/dist/hooks/post-tool-use.d.ts +8 -2
- package/dist/hooks/post-tool-use.d.ts.map +1 -1
- package/dist/hooks/post-tool-use.js +203 -3
- package/dist/hooks/post-tool-use.js.map +1 -1
- package/dist/hooks/pre-compact.d.ts +3 -0
- package/dist/hooks/pre-compact.d.ts.map +1 -0
- package/dist/hooks/pre-compact.js +36 -0
- package/dist/hooks/pre-compact.js.map +1 -0
- package/dist/hooks/pre-tool-use.d.ts +15 -0
- package/dist/hooks/pre-tool-use.d.ts.map +1 -1
- package/dist/hooks/pre-tool-use.js +166 -8
- package/dist/hooks/pre-tool-use.js.map +1 -1
- package/dist/hooks/stop.js +6 -99
- package/dist/hooks/stop.js.map +1 -1
- package/dist/hooks/transcript-utils.d.ts +18 -0
- package/dist/hooks/transcript-utils.d.ts.map +1 -0
- package/dist/hooks/transcript-utils.js +110 -0
- package/dist/hooks/transcript-utils.js.map +1 -0
- package/dist/memory/commands.d.ts.map +1 -1
- package/dist/memory/commands.js +7 -1
- package/dist/memory/commands.js.map +1 -1
- package/dist/memory/developer.d.ts +16 -0
- package/dist/memory/developer.d.ts.map +1 -1
- package/dist/memory/developer.js +28 -0
- package/dist/memory/developer.js.map +1 -1
- package/dist/memory/project.d.ts +26 -0
- package/dist/memory/project.d.ts.map +1 -1
- package/dist/memory/project.js +79 -0
- package/dist/memory/project.js.map +1 -1
- package/dist/memory/working.d.ts.map +1 -1
- package/dist/memory/working.js +2 -1
- package/dist/memory/working.js.map +1 -1
- package/dist/modes/code.d.ts +7 -0
- package/dist/modes/code.d.ts.map +1 -0
- package/dist/modes/code.js +15 -0
- package/dist/modes/code.js.map +1 -0
- package/dist/modes/index.d.ts +16 -0
- package/dist/modes/index.d.ts.map +1 -0
- package/dist/modes/index.js +29 -0
- package/dist/modes/index.js.map +1 -0
- package/dist/modes/research.d.ts +7 -0
- package/dist/modes/research.d.ts.map +1 -0
- package/dist/modes/research.js +15 -0
- package/dist/modes/research.js.map +1 -0
- package/dist/natural-language/router.js +1 -3
- package/dist/natural-language/router.js.map +1 -1
- package/dist/startup/injector.d.ts.map +1 -1
- package/dist/startup/injector.js +64 -38
- package/dist/startup/injector.js.map +1 -1
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +10 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +33 -0
- package/dist/utils.js.map +1 -1
- package/dist/watch/event-log.d.ts.map +1 -1
- package/dist/watch/event-log.js +23 -0
- package/dist/watch/event-log.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.preCompact = preCompact;
|
|
4
|
+
/**
|
|
5
|
+
* PreCompact hook — fires before /compact or auto-compression.
|
|
6
|
+
* Reads the transcript and stores substantive content before it's lost.
|
|
7
|
+
*/
|
|
8
|
+
const client_js_1 = require("../atlas/client.js");
|
|
9
|
+
const config_js_1 = require("../config.js");
|
|
10
|
+
const project_js_1 = require("../memory/project.js");
|
|
11
|
+
const transcript_utils_js_1 = require("./transcript-utils.js");
|
|
12
|
+
async function preCompact(input) {
|
|
13
|
+
if (!(0, config_js_1.isConfigured)())
|
|
14
|
+
return null;
|
|
15
|
+
const transcriptPath = input.transcript_path;
|
|
16
|
+
if (!transcriptPath)
|
|
17
|
+
return null;
|
|
18
|
+
try {
|
|
19
|
+
await (0, client_js_1.connect)();
|
|
20
|
+
const messages = (0, transcript_utils_js_1.extractSubstantiveContent)(transcriptPath);
|
|
21
|
+
if (messages.length === 0)
|
|
22
|
+
return null;
|
|
23
|
+
let stored = 0;
|
|
24
|
+
for (const msg of messages) {
|
|
25
|
+
await (0, project_js_1.addContext)(msg);
|
|
26
|
+
stored++;
|
|
27
|
+
}
|
|
28
|
+
return stored > 0
|
|
29
|
+
? `[MEMORY] Checkpoint: ${stored} items captured before compact.`
|
|
30
|
+
: null;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=pre-compact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pre-compact.js","sourceRoot":"","sources":["../../src/hooks/pre-compact.ts"],"names":[],"mappings":";;AAUA,gCAwBC;AAlCD;;;GAGG;AACH,kDAA6C;AAC7C,4CAA4C;AAC5C,qDAAkD;AAClD,+DAAkE;AAG3D,KAAK,UAAU,UAAU,CAAC,KAAgB;IAC/C,IAAI,CAAC,IAAA,wBAAY,GAAE;QAAE,OAAO,IAAI,CAAC;IAEjC,MAAM,cAAc,GAAG,KAAK,CAAC,eAAe,CAAC;IAC7C,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IAEjC,IAAI,CAAC;QACH,MAAM,IAAA,mBAAO,GAAE,CAAC;QAEhB,MAAM,QAAQ,GAAG,IAAA,+CAAyB,EAAC,cAAc,CAAC,CAAC;QAC3D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAEvC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAA,uBAAU,EAAC,GAAG,CAAC,CAAC;YACtB,MAAM,EAAE,CAAC;QACX,CAAC;QAED,OAAO,MAAM,GAAG,CAAC;YACf,CAAC,CAAC,wBAAwB,MAAM,iCAAiC;YACjE,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
import { CommandCache } from '../cache/command-cache.js';
|
|
2
|
+
import type { HookInput } from './hook-input.js';
|
|
2
3
|
export declare function initCommandCache(): Promise<void>;
|
|
4
|
+
/**
|
|
5
|
+
* Reload the command cache from the database.
|
|
6
|
+
* Call after command mutations (store/delete) to keep the cache fresh.
|
|
7
|
+
*/
|
|
8
|
+
export declare function reloadCommandCache(): Promise<void>;
|
|
3
9
|
export declare function getCommandCache(): CommandCache | null;
|
|
10
|
+
/**
|
|
11
|
+
* New entry point: dispatches to tool-specific handlers based on the
|
|
12
|
+
* structured JSON that Claude Code sends via stdin.
|
|
13
|
+
*/
|
|
14
|
+
export declare function preToolUseDispatch(input: HookInput): Promise<string | null>;
|
|
15
|
+
/**
|
|
16
|
+
* Original entry point: semantic search on a raw text prompt.
|
|
17
|
+
* Kept for backward compatibility when stdin is not JSON.
|
|
18
|
+
*/
|
|
4
19
|
export declare function preToolUse(prompt: string): Promise<string | null>;
|
|
5
20
|
//# sourceMappingURL=pre-tool-use.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pre-tool-use.d.ts","sourceRoot":"","sources":["../../src/hooks/pre-tool-use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"pre-tool-use.d.ts","sourceRoot":"","sources":["../../src/hooks/pre-tool-use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AASzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAOjD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKtD;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAWxD;AAED,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAErD;AAID;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBjF;AAgHD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA8DvE"}
|
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.initCommandCache = initCommandCache;
|
|
4
|
+
exports.reloadCommandCache = reloadCommandCache;
|
|
4
5
|
exports.getCommandCache = getCommandCache;
|
|
6
|
+
exports.preToolUseDispatch = preToolUseDispatch;
|
|
5
7
|
exports.preToolUse = preToolUse;
|
|
6
8
|
const command_cache_js_1 = require("../cache/command-cache.js");
|
|
7
9
|
const project_js_1 = require("../memory/project.js");
|
|
8
|
-
const project_js_2 = require("../memory/project.js");
|
|
9
10
|
const vector_js_1 = require("../atlas/vector.js");
|
|
10
11
|
const project_id_js_1 = require("../project-id.js");
|
|
11
12
|
const utils_js_1 = require("../utils.js");
|
|
12
13
|
const config_js_1 = require("../config.js");
|
|
14
|
+
const index_js_1 = require("../modes/index.js");
|
|
13
15
|
const injector_js_1 = require("../startup/injector.js");
|
|
14
16
|
const event_log_js_1 = require("../watch/event-log.js");
|
|
17
|
+
const hook_input_js_1 = require("./hook-input.js");
|
|
15
18
|
let commandCache = null;
|
|
16
19
|
let cacheLoaded = false;
|
|
17
20
|
async function initCommandCache() {
|
|
@@ -20,9 +23,154 @@ async function initCommandCache() {
|
|
|
20
23
|
commandCache.load(commands);
|
|
21
24
|
cacheLoaded = true;
|
|
22
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Reload the command cache from the database.
|
|
28
|
+
* Call after command mutations (store/delete) to keep the cache fresh.
|
|
29
|
+
*/
|
|
30
|
+
async function reloadCommandCache() {
|
|
31
|
+
if (!commandCache) {
|
|
32
|
+
await initCommandCache();
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
const commands = await (0, project_js_1.getAllCommands)();
|
|
37
|
+
commandCache.load(commands);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Best-effort reload — stale cache is better than no cache
|
|
41
|
+
}
|
|
42
|
+
}
|
|
23
43
|
function getCommandCache() {
|
|
24
44
|
return commandCache;
|
|
25
45
|
}
|
|
46
|
+
// ─── Tool-Specific Dispatch ─────────────────────────────────────────────────
|
|
47
|
+
/**
|
|
48
|
+
* New entry point: dispatches to tool-specific handlers based on the
|
|
49
|
+
* structured JSON that Claude Code sends via stdin.
|
|
50
|
+
*/
|
|
51
|
+
async function preToolUseDispatch(input) {
|
|
52
|
+
const toolName = input.tool_name || '';
|
|
53
|
+
switch (toolName) {
|
|
54
|
+
case 'Edit':
|
|
55
|
+
case 'Write':
|
|
56
|
+
return preToolUseFileChange(input);
|
|
57
|
+
case 'Bash':
|
|
58
|
+
return preToolUseBash(input);
|
|
59
|
+
case 'Read':
|
|
60
|
+
case 'Glob':
|
|
61
|
+
case 'Grep':
|
|
62
|
+
// Read-only tools — no injection needed
|
|
63
|
+
return null;
|
|
64
|
+
default:
|
|
65
|
+
return preToolUseGeneric(input);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Before Edit/Write: surface file-specific memory.
|
|
70
|
+
* Uses text search (not vector) because file paths match better with regex.
|
|
71
|
+
*/
|
|
72
|
+
async function preToolUseFileChange(input) {
|
|
73
|
+
const filePath = (0, hook_input_js_1.getFilePath)(input);
|
|
74
|
+
if (!filePath)
|
|
75
|
+
return null;
|
|
76
|
+
try {
|
|
77
|
+
const fileMemory = await (0, project_js_1.searchByFilePath)(filePath);
|
|
78
|
+
if (fileMemory.length === 0)
|
|
79
|
+
return null;
|
|
80
|
+
const sections = [];
|
|
81
|
+
sections.push(`[MEMORY:FILE] Context for ${filePath.split('/').slice(-2).join('/')}:\n`);
|
|
82
|
+
for (const item of fileMemory) {
|
|
83
|
+
sections.push(` ${(0, utils_js_1.formatCompactLine)(item.type, item.id, item.content)}`);
|
|
84
|
+
}
|
|
85
|
+
sections.push('\nUse recall_detail(id) for full content.');
|
|
86
|
+
return (0, injector_js_1.trimInjection)(sections.join('\n'));
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Before Bash: check command cache and avoid rules.
|
|
94
|
+
*/
|
|
95
|
+
async function preToolUseBash(input) {
|
|
96
|
+
const command = (0, hook_input_js_1.getBashCommand)(input);
|
|
97
|
+
if (!command)
|
|
98
|
+
return null;
|
|
99
|
+
// Ensure cache is loaded
|
|
100
|
+
if (!cacheLoaded || !commandCache) {
|
|
101
|
+
try {
|
|
102
|
+
await initCommandCache();
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const sections = [];
|
|
109
|
+
// Check command cache for verified commands
|
|
110
|
+
const matchedCommand = commandCache.match(command);
|
|
111
|
+
if (matchedCommand) {
|
|
112
|
+
(0, event_log_js_1.logCacheHit)(command);
|
|
113
|
+
sections.push('[MEMORY:ACTIVE] Act on this before responding:\n');
|
|
114
|
+
sections.push(`VERIFIED COMMAND -- ${matchedCommand.triggers[0] || 'unnamed'} (confirmed ${matchedCommand.verified_count}x)`);
|
|
115
|
+
matchedCommand.steps.forEach((step, i) => {
|
|
116
|
+
sections.push(`${i + 1}. ${step}`);
|
|
117
|
+
});
|
|
118
|
+
if (matchedCommand.notes) {
|
|
119
|
+
sections.push(`Notes: ${matchedCommand.notes}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
(0, event_log_js_1.logCacheMiss)(command);
|
|
124
|
+
}
|
|
125
|
+
// Check avoid rules for known-bad command patterns
|
|
126
|
+
try {
|
|
127
|
+
const avoidRules = await (0, project_js_1.getAvoidRules)();
|
|
128
|
+
const commandLower = command.toLowerCase();
|
|
129
|
+
const matchingAvoids = avoidRules.filter((rule) => {
|
|
130
|
+
const ruleLower = rule.toLowerCase();
|
|
131
|
+
// Check if the avoid rule mentions a command fragment that appears in this command
|
|
132
|
+
const ruleWords = ruleLower.split(/\s+/).filter((w) => w.length > 3);
|
|
133
|
+
return ruleWords.some((word) => commandLower.includes(word));
|
|
134
|
+
});
|
|
135
|
+
if (matchingAvoids.length > 0) {
|
|
136
|
+
if (sections.length === 0) {
|
|
137
|
+
sections.push('[MEMORY:ACTIVE] Act on this before responding:\n');
|
|
138
|
+
}
|
|
139
|
+
sections.push('\nAVOID RULES (check before running):');
|
|
140
|
+
for (const rule of matchingAvoids) {
|
|
141
|
+
sections.push(` ! ${rule.slice(0, 200)}`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
// Avoid rule check failed — continue silently
|
|
147
|
+
}
|
|
148
|
+
return sections.length > 0 ? (0, injector_js_1.trimInjection)(sections.join('\n')) : null;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Generic fallback: semantic vector search for tools without dedicated handlers.
|
|
152
|
+
* Extracts a meaningful query from the tool input.
|
|
153
|
+
*/
|
|
154
|
+
async function preToolUseGeneric(input) {
|
|
155
|
+
const query = (0, hook_input_js_1.extractSearchQuery)(input);
|
|
156
|
+
if (!query)
|
|
157
|
+
return null;
|
|
158
|
+
// Quality gate: skip noisy/too-short/too-long queries
|
|
159
|
+
const trimmed = query.trim();
|
|
160
|
+
if (trimmed.length < 8 || trimmed.length > 500)
|
|
161
|
+
return null;
|
|
162
|
+
// Skip queries that are mostly non-alpha (paths, IDs, JSON fragments)
|
|
163
|
+
const alphaRatio = (trimmed.match(/[a-zA-Z]/g) || []).length / trimmed.length;
|
|
164
|
+
if (alphaRatio < 0.4)
|
|
165
|
+
return null;
|
|
166
|
+
// Delegate to the legacy semantic search with the extracted query
|
|
167
|
+
return preToolUse(trimmed);
|
|
168
|
+
}
|
|
169
|
+
// ─── Legacy Entry Point (backward compat) ───────────────────────────────────
|
|
170
|
+
/**
|
|
171
|
+
* Original entry point: semantic search on a raw text prompt.
|
|
172
|
+
* Kept for backward compatibility when stdin is not JSON.
|
|
173
|
+
*/
|
|
26
174
|
async function preToolUse(prompt) {
|
|
27
175
|
const projectId = (0, project_id_js_1.getProjectId)();
|
|
28
176
|
// Ensure cache is loaded
|
|
@@ -48,11 +196,14 @@ async function preToolUse(prompt) {
|
|
|
48
196
|
if (!matchedCommand) {
|
|
49
197
|
try {
|
|
50
198
|
const searchStart = Date.now();
|
|
51
|
-
const
|
|
199
|
+
const maxResults = (0, config_js_1.getContextMaxResults)();
|
|
200
|
+
const results = await (0, vector_js_1.search)(prompt, projectId, maxResults);
|
|
52
201
|
const searchMs = Date.now() - searchStart;
|
|
53
202
|
const topScore = results.length > 0 ? results[0].score : 0;
|
|
54
203
|
(0, event_log_js_1.logSearch)(prompt, results.length, searchMs, topScore);
|
|
55
|
-
relevantMemory = results
|
|
204
|
+
relevantMemory = results
|
|
205
|
+
.filter((r) => r.score >= config_js_1.VECTOR_RELEVANCE_THRESHOLD)
|
|
206
|
+
.map((r) => ({ id: r.id, type: r.type, content: r.content, score: r.score }));
|
|
56
207
|
}
|
|
57
208
|
catch {
|
|
58
209
|
// Semantic search unavailable — continue silently
|
|
@@ -61,7 +212,7 @@ async function preToolUse(prompt) {
|
|
|
61
212
|
// Step 3: Open thread relevance check
|
|
62
213
|
let relatedThreads = [];
|
|
63
214
|
try {
|
|
64
|
-
const allThreads = await (0,
|
|
215
|
+
const allThreads = await (0, project_js_1.getOpenThreads)();
|
|
65
216
|
const promptLower = prompt.toLowerCase();
|
|
66
217
|
relatedThreads = allThreads.filter((thread) => {
|
|
67
218
|
const descLower = thread.description.toLowerCase();
|
|
@@ -95,9 +246,16 @@ function buildContextInjection(command, memory, threads) {
|
|
|
95
246
|
sections.push('');
|
|
96
247
|
}
|
|
97
248
|
if (memory.length > 0) {
|
|
249
|
+
const detail = (0, config_js_1.getContextDetail)();
|
|
250
|
+
const compactMax = (0, index_js_1.getActiveMode)().compact_max_chars;
|
|
98
251
|
sections.push('RELATED MEMORY');
|
|
99
252
|
for (const item of memory) {
|
|
100
|
-
|
|
253
|
+
if (detail === 'full') {
|
|
254
|
+
sections.push(` [${item.type}] ${item.content}`);
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
sections.push(` ${(0, utils_js_1.formatCompactLine)(item.type, item.id, item.content, compactMax)}`);
|
|
258
|
+
}
|
|
101
259
|
}
|
|
102
260
|
sections.push('');
|
|
103
261
|
}
|
|
@@ -105,11 +263,11 @@ function buildContextInjection(command, memory, threads) {
|
|
|
105
263
|
sections.push('RELATED OPEN THREADS');
|
|
106
264
|
for (const thread of threads) {
|
|
107
265
|
sections.push(`! ${thread.description} -- ${thread.status} (${(0, utils_js_1.getAge)(thread.created)})`);
|
|
108
|
-
if (thread.context) {
|
|
109
|
-
sections.push(` "${thread.context}"`);
|
|
110
|
-
}
|
|
111
266
|
}
|
|
112
267
|
}
|
|
268
|
+
if (memory.length > 0 || threads.length > 0) {
|
|
269
|
+
sections.push('\nUse recall_detail(id) for full content.');
|
|
270
|
+
}
|
|
113
271
|
return sections.join('\n');
|
|
114
272
|
}
|
|
115
273
|
//# sourceMappingURL=pre-tool-use.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pre-tool-use.js","sourceRoot":"","sources":["../../src/hooks/pre-tool-use.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"pre-tool-use.js","sourceRoot":"","sources":["../../src/hooks/pre-tool-use.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks/stop.js
CHANGED
|
@@ -4,13 +4,13 @@ exports.sessionEnd = sessionEnd;
|
|
|
4
4
|
exports.processSummaryResponse = processSummaryResponse;
|
|
5
5
|
exports.handleAcknowledgement = handleAcknowledgement;
|
|
6
6
|
const uuid_1 = require("uuid");
|
|
7
|
-
const fs_1 = require("fs");
|
|
8
7
|
const working_js_1 = require("../memory/working.js");
|
|
9
8
|
const project_js_1 = require("../memory/project.js");
|
|
10
9
|
const developer_js_1 = require("../memory/developer.js");
|
|
11
10
|
const summarizer_js_1 = require("../summarizer.js");
|
|
12
11
|
const acknowledgement_js_1 = require("../acknowledgement.js");
|
|
13
12
|
const detector_js_1 = require("../detector.js");
|
|
13
|
+
const transcript_utils_js_1 = require("./transcript-utils.js");
|
|
14
14
|
/**
|
|
15
15
|
* Stop hook - fires at session end.
|
|
16
16
|
*
|
|
@@ -116,107 +116,14 @@ async function handleAcknowledgement(choice, items, individualChoices) {
|
|
|
116
116
|
return '[MEMORY] Unknown choice. Working memory was still saved.';
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
|
-
// Minimum message length to store (skip "ok", "yes", greetings)
|
|
120
|
-
const MIN_CONTENT_LENGTH = 100;
|
|
121
|
-
const MAX_CONTENT_LENGTH = 2000;
|
|
122
|
-
// Patterns that indicate noise, not real developer knowledge
|
|
123
|
-
const NOISE_PATTERNS = [
|
|
124
|
-
/^<(command-|task-|system-|local-command)/i, // XML tags from Claude Code internals
|
|
125
|
-
/^<\/?(command|task|system)/i,
|
|
126
|
-
/<task-notification>/i,
|
|
127
|
-
/<task-id>/i,
|
|
128
|
-
/toolu_[A-Za-z0-9]/, // Tool use IDs
|
|
129
|
-
/^\s*\[?(Request interrupted|Tool loaded)/i, // System messages
|
|
130
|
-
/^\/mdd\s/i, // MDD slash commands
|
|
131
|
-
/^\/recall|^\/remember|^\/threads|^\/stats/i, // Memory slash commands
|
|
132
|
-
/^\s*```/, // Code blocks (not knowledge)
|
|
133
|
-
/^(yes|no|ok|sure|y|n|go|do it|looks good)\s*$/i, // Short affirmations
|
|
134
|
-
/<system-reminder>/i,
|
|
135
|
-
/hook success|hook fail/i,
|
|
136
|
-
/^npm\s|^git\s|^npx\s/i, // Raw commands
|
|
137
|
-
/^\s*\d+\)\s/, // Numbered list fragments
|
|
138
|
-
];
|
|
139
119
|
/**
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
*/
|
|
143
|
-
function isSubstantiveContent(content) {
|
|
144
|
-
if (content.length < MIN_CONTENT_LENGTH)
|
|
145
|
-
return false;
|
|
146
|
-
if (content.length > MAX_CONTENT_LENGTH)
|
|
147
|
-
return false;
|
|
148
|
-
// Check against noise patterns
|
|
149
|
-
for (const pattern of NOISE_PATTERNS) {
|
|
150
|
-
if (pattern.test(content))
|
|
151
|
-
return false;
|
|
152
|
-
}
|
|
153
|
-
// Require at least some regular words (not just IDs/paths/XML)
|
|
154
|
-
const wordCount = content.replace(/<[^>]+>/g, '').split(/\s+/).filter(w => /^[a-zA-Z]{3,}$/.test(w)).length;
|
|
155
|
-
if (wordCount < 5)
|
|
156
|
-
return false;
|
|
157
|
-
return true;
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Clean content before storing — strip XML tags, control chars, collapse whitespace.
|
|
161
|
-
*/
|
|
162
|
-
function cleanContent(content) {
|
|
163
|
-
return content
|
|
164
|
-
.replace(/<[^>]+>/g, ' ') // Strip XML/HTML tags
|
|
165
|
-
.replace(/[\x00-\x1f]/g, ' ') // Strip control chars
|
|
166
|
-
.replace(/\s+/g, ' ') // Collapse whitespace
|
|
167
|
-
.trim();
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Read the transcript JSONL, extract the latest user message(s),
|
|
171
|
-
* and store substantive content as context memory.
|
|
120
|
+
* Read the transcript JSONL, extract substantive content, and store as context.
|
|
121
|
+
* Delegates to shared transcript-utils module.
|
|
172
122
|
*/
|
|
173
123
|
async function storeTranscriptContent(transcriptPath) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
lines = raw.trim().split('\n').filter(Boolean);
|
|
178
|
-
}
|
|
179
|
-
catch {
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
const messages = [];
|
|
183
|
-
for (const line of lines) {
|
|
184
|
-
try {
|
|
185
|
-
const entry = JSON.parse(line);
|
|
186
|
-
const role = entry.role || entry.type || '';
|
|
187
|
-
let content = '';
|
|
188
|
-
if (typeof entry.content === 'string') {
|
|
189
|
-
content = entry.content;
|
|
190
|
-
}
|
|
191
|
-
else if (Array.isArray(entry.content)) {
|
|
192
|
-
content = entry.content
|
|
193
|
-
.filter((b) => b.type === 'text')
|
|
194
|
-
.map((b) => b.text)
|
|
195
|
-
.join('\n');
|
|
196
|
-
}
|
|
197
|
-
else if (entry.message?.content) {
|
|
198
|
-
content = typeof entry.message.content === 'string'
|
|
199
|
-
? entry.message.content
|
|
200
|
-
: '';
|
|
201
|
-
}
|
|
202
|
-
if (role && content) {
|
|
203
|
-
messages.push({ role, content });
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
catch {
|
|
207
|
-
// Skip unparseable lines
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
// Filter to substantive user messages only
|
|
211
|
-
const userMessages = messages
|
|
212
|
-
.filter(m => m.role === 'human' || m.role === 'user')
|
|
213
|
-
.filter(m => isSubstantiveContent(m.content));
|
|
214
|
-
// Clean and store each message
|
|
215
|
-
for (const msg of userMessages) {
|
|
216
|
-
const cleaned = cleanContent(msg.content);
|
|
217
|
-
if (cleaned.length >= MIN_CONTENT_LENGTH) {
|
|
218
|
-
await (0, project_js_1.addContext)(cleaned);
|
|
219
|
-
}
|
|
124
|
+
const messages = (0, transcript_utils_js_1.extractSubstantiveContent)(transcriptPath);
|
|
125
|
+
for (const msg of messages) {
|
|
126
|
+
await (0, project_js_1.addContext)(msg);
|
|
220
127
|
}
|
|
221
128
|
}
|
|
222
129
|
//# sourceMappingURL=stop.js.map
|
package/dist/hooks/stop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/hooks/stop.ts"],"names":[],"mappings":";;AAgCA,gCAuDC;AAKD,wDAYC;AAKD,sDAqCC;AAlJD,+BAAoC;AACpC,
|
|
1
|
+
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/hooks/stop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const MIN_CONTENT_LENGTH = 100;
|
|
2
|
+
export declare const MAX_CONTENT_LENGTH = 2000;
|
|
3
|
+
export declare const NOISE_PATTERNS: RegExp[];
|
|
4
|
+
/**
|
|
5
|
+
* Check if a message contains actual developer knowledge worth storing,
|
|
6
|
+
* not system noise, XML tags, or tool artifacts.
|
|
7
|
+
*/
|
|
8
|
+
export declare function isSubstantiveContent(content: string): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Clean content before storing — strip XML tags, control chars, collapse whitespace.
|
|
11
|
+
*/
|
|
12
|
+
export declare function cleanContent(content: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Read a transcript JSONL file and extract substantive user messages.
|
|
15
|
+
* Returns cleaned content strings ready for storage.
|
|
16
|
+
*/
|
|
17
|
+
export declare function extractSubstantiveContent(transcriptPath: string): string[];
|
|
18
|
+
//# sourceMappingURL=transcript-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript-utils.d.ts","sourceRoot":"","sources":["../../src/hooks/transcript-utils.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAGvC,eAAO,MAAM,cAAc,UAe1B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAc7D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,CA2C1E"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NOISE_PATTERNS = exports.MAX_CONTENT_LENGTH = exports.MIN_CONTENT_LENGTH = void 0;
|
|
4
|
+
exports.isSubstantiveContent = isSubstantiveContent;
|
|
5
|
+
exports.cleanContent = cleanContent;
|
|
6
|
+
exports.extractSubstantiveContent = extractSubstantiveContent;
|
|
7
|
+
/**
|
|
8
|
+
* Shared transcript processing utilities.
|
|
9
|
+
* Used by both the Stop hook and PreCompact hook.
|
|
10
|
+
*/
|
|
11
|
+
const fs_1 = require("fs");
|
|
12
|
+
// Minimum message length to store (skip "ok", "yes", greetings)
|
|
13
|
+
exports.MIN_CONTENT_LENGTH = 100;
|
|
14
|
+
exports.MAX_CONTENT_LENGTH = 2000;
|
|
15
|
+
// Patterns that indicate noise, not real developer knowledge
|
|
16
|
+
exports.NOISE_PATTERNS = [
|
|
17
|
+
/^<(command-|task-|system-|local-command)/i, // XML tags from Claude Code internals
|
|
18
|
+
/^<\/?(command|task|system)/i,
|
|
19
|
+
/<task-notification>/i,
|
|
20
|
+
/<task-id>/i,
|
|
21
|
+
/toolu_[A-Za-z0-9]/, // Tool use IDs
|
|
22
|
+
/^\s*\[?(Request interrupted|Tool loaded)/i, // System messages
|
|
23
|
+
/^\/mdd\s/i, // MDD slash commands
|
|
24
|
+
/^\/recall|^\/remember|^\/threads|^\/stats/i, // Memory slash commands
|
|
25
|
+
/^\s*```/, // Code blocks (not knowledge)
|
|
26
|
+
/^(yes|no|ok|sure|y|n|go|do it|looks good)\s*$/i, // Short affirmations
|
|
27
|
+
/<system-reminder>/i,
|
|
28
|
+
/hook success|hook fail/i,
|
|
29
|
+
/^npm\s|^git\s|^npx\s/i, // Raw commands
|
|
30
|
+
/^\s*\d+\)\s/, // Numbered list fragments
|
|
31
|
+
];
|
|
32
|
+
/**
|
|
33
|
+
* Check if a message contains actual developer knowledge worth storing,
|
|
34
|
+
* not system noise, XML tags, or tool artifacts.
|
|
35
|
+
*/
|
|
36
|
+
function isSubstantiveContent(content) {
|
|
37
|
+
if (content.length < exports.MIN_CONTENT_LENGTH)
|
|
38
|
+
return false;
|
|
39
|
+
if (content.length > exports.MAX_CONTENT_LENGTH)
|
|
40
|
+
return false;
|
|
41
|
+
// Check against noise patterns
|
|
42
|
+
for (const pattern of exports.NOISE_PATTERNS) {
|
|
43
|
+
if (pattern.test(content))
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
// Require at least some regular words (not just IDs/paths/XML)
|
|
47
|
+
const wordCount = content.replace(/<[^>]+>/g, '').split(/\s+/).filter(w => /^[a-zA-Z]{3,}$/.test(w)).length;
|
|
48
|
+
if (wordCount < 5)
|
|
49
|
+
return false;
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Clean content before storing — strip XML tags, control chars, collapse whitespace.
|
|
54
|
+
*/
|
|
55
|
+
function cleanContent(content) {
|
|
56
|
+
return content
|
|
57
|
+
.replace(/<[^>]+>/g, ' ') // Strip XML/HTML tags
|
|
58
|
+
.replace(/[\x00-\x1f]/g, ' ') // Strip control chars
|
|
59
|
+
.replace(/\s+/g, ' ') // Collapse whitespace
|
|
60
|
+
.trim();
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Read a transcript JSONL file and extract substantive user messages.
|
|
64
|
+
* Returns cleaned content strings ready for storage.
|
|
65
|
+
*/
|
|
66
|
+
function extractSubstantiveContent(transcriptPath) {
|
|
67
|
+
let lines;
|
|
68
|
+
try {
|
|
69
|
+
const raw = (0, fs_1.readFileSync)(transcriptPath, 'utf-8');
|
|
70
|
+
lines = raw.trim().split('\n').filter(Boolean);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return [];
|
|
74
|
+
}
|
|
75
|
+
const messages = [];
|
|
76
|
+
for (const line of lines) {
|
|
77
|
+
try {
|
|
78
|
+
const entry = JSON.parse(line);
|
|
79
|
+
const role = entry.role || entry.type || '';
|
|
80
|
+
let content = '';
|
|
81
|
+
if (typeof entry.content === 'string') {
|
|
82
|
+
content = entry.content;
|
|
83
|
+
}
|
|
84
|
+
else if (Array.isArray(entry.content)) {
|
|
85
|
+
content = entry.content
|
|
86
|
+
.filter((b) => b.type === 'text')
|
|
87
|
+
.map((b) => b.text)
|
|
88
|
+
.join('\n');
|
|
89
|
+
}
|
|
90
|
+
else if (entry.message?.content) {
|
|
91
|
+
content = typeof entry.message.content === 'string'
|
|
92
|
+
? entry.message.content
|
|
93
|
+
: '';
|
|
94
|
+
}
|
|
95
|
+
if (role && content) {
|
|
96
|
+
messages.push({ role, content });
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// Skip unparseable lines
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Filter to substantive user messages, clean, and return
|
|
104
|
+
return messages
|
|
105
|
+
.filter(m => m.role === 'human' || m.role === 'user')
|
|
106
|
+
.filter(m => isSubstantiveContent(m.content))
|
|
107
|
+
.map(m => cleanContent(m.content))
|
|
108
|
+
.filter(c => c.length >= exports.MIN_CONTENT_LENGTH);
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=transcript-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript-utils.js","sourceRoot":"","sources":["../../src/hooks/transcript-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/memory/commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/memory/commands.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IACJ,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAYjF;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAIrE;AAED,wBAAsB,YAAY,IAAI,OAAO,CAC3C,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CAAC,CACrD,CAMA;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASrE"}
|