@memextend/claude-code 0.1.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/dist/hooks/index.d.ts +5 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +9 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/logger.d.ts +3 -0
- package/dist/hooks/logger.d.ts.map +1 -0
- package/dist/hooks/logger.js +62 -0
- package/dist/hooks/logger.js.map +1 -0
- package/dist/hooks/pre-compact.cjs +1115 -0
- package/dist/hooks/pre-compact.d.ts +2 -0
- package/dist/hooks/pre-compact.d.ts.map +1 -0
- package/dist/hooks/pre-compact.js +303 -0
- package/dist/hooks/pre-compact.js.map +1 -0
- package/dist/hooks/session-start.cjs +1054 -0
- package/dist/hooks/session-start.d.ts +2 -0
- package/dist/hooks/session-start.d.ts.map +1 -0
- package/dist/hooks/session-start.js +205 -0
- package/dist/hooks/session-start.js.map +1 -0
- package/dist/hooks/stop.cjs +1059 -0
- package/dist/hooks/stop.d.ts +2 -0
- package/dist/hooks/stop.d.ts.map +1 -0
- package/dist/hooks/stop.js +234 -0
- package/dist/hooks/stop.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/index.d.ts +2 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +6 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.cjs +14694 -0
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +330 -0
- package/dist/mcp/server.js.map +1 -0
- package/package.json +49 -0
- package/scripts/build-hooks.js +65 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../src/hooks/stop.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
// packages/adapters/claude-code/src/hooks/stop.ts
|
|
2
|
+
// Copyright (c) 2026 ZodTTD LLC. MIT License.
|
|
3
|
+
import { createHash, randomUUID } from 'crypto';
|
|
4
|
+
import { existsSync } from 'fs';
|
|
5
|
+
import { readFile } from 'fs/promises';
|
|
6
|
+
import { join, basename } from 'path';
|
|
7
|
+
import { homedir } from 'os';
|
|
8
|
+
import { execSync } from 'child_process';
|
|
9
|
+
import { SQLiteStorage, LanceDBStorage, TranscriptParser, formatCaptureContent, isTextCapture, isToolCapture, createEmbedFunction, cosineSimilarity } from '@memextend/core';
|
|
10
|
+
import { log, logError } from './logger.js';
|
|
11
|
+
const MEMEXTEND_DIR = join(homedir(), '.memextend');
|
|
12
|
+
const CONFIG_PATH = join(MEMEXTEND_DIR, 'config.json');
|
|
13
|
+
const DB_PATH = join(MEMEXTEND_DIR, 'memextend.db');
|
|
14
|
+
const VECTORS_PATH = join(MEMEXTEND_DIR, 'vectors');
|
|
15
|
+
const MODELS_PATH = join(MEMEXTEND_DIR, 'models');
|
|
16
|
+
async function main() {
|
|
17
|
+
// Read input from stdin
|
|
18
|
+
const chunks = [];
|
|
19
|
+
for await (const chunk of process.stdin) {
|
|
20
|
+
chunks.push(chunk);
|
|
21
|
+
}
|
|
22
|
+
const input = JSON.parse(Buffer.concat(chunks).toString());
|
|
23
|
+
log('Stop', 'Hook fired', {
|
|
24
|
+
session_id: input.session_id,
|
|
25
|
+
cwd: input.cwd,
|
|
26
|
+
has_transcript: !!input.transcript_path
|
|
27
|
+
});
|
|
28
|
+
try {
|
|
29
|
+
// Check if memextend is initialized
|
|
30
|
+
if (!existsSync(DB_PATH)) {
|
|
31
|
+
log('Stop', 'DB not found, skipping');
|
|
32
|
+
outputResult({ continue: true, suppressOutput: true });
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
// Check if transcript exists
|
|
36
|
+
if (!input.transcript_path || !existsSync(input.transcript_path)) {
|
|
37
|
+
log('Stop', 'No transcript path, skipping');
|
|
38
|
+
outputResult({ continue: true, suppressOutput: true });
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// Load config
|
|
42
|
+
const config = await loadConfig();
|
|
43
|
+
// Read and parse transcript
|
|
44
|
+
const transcriptContent = await readFile(input.transcript_path, 'utf-8');
|
|
45
|
+
// By default: capture reasoning only, all tool capture disabled
|
|
46
|
+
// Users can enable individual tools via config.capture.tools: { Edit: true, Write: true, ... }
|
|
47
|
+
const parser = new TranscriptParser({
|
|
48
|
+
toolConfig: config.capture?.tools ?? {},
|
|
49
|
+
maxReasoningLength: config.capture?.maxReasoningLength ?? 10000,
|
|
50
|
+
maxToolOutputLength: config.capture?.maxToolOutputLength ?? 2000,
|
|
51
|
+
captureReasoning: config.capture?.captureReasoning ?? true
|
|
52
|
+
});
|
|
53
|
+
const captures = parser.parse(transcriptContent);
|
|
54
|
+
if (captures.length === 0) {
|
|
55
|
+
log('Stop', 'No captures found');
|
|
56
|
+
outputResult({ continue: true, suppressOutput: true });
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const reasoningCount = captures.filter(isTextCapture).length;
|
|
60
|
+
const toolCount = captures.filter(isToolCapture).length;
|
|
61
|
+
log('Stop', `Found ${captures.length} captures to save`, { reasoning: reasoningCount, tools: toolCount });
|
|
62
|
+
// Get project ID
|
|
63
|
+
const projectId = getProjectId(input.cwd);
|
|
64
|
+
// Initialize storage
|
|
65
|
+
const sqlite = new SQLiteStorage(DB_PATH);
|
|
66
|
+
const lancedb = await LanceDBStorage.create(VECTORS_PATH);
|
|
67
|
+
// Ensure project is registered
|
|
68
|
+
const project = sqlite.getProject(projectId);
|
|
69
|
+
if (!project) {
|
|
70
|
+
sqlite.insertProject({
|
|
71
|
+
id: projectId,
|
|
72
|
+
name: basename(input.cwd),
|
|
73
|
+
path: input.cwd,
|
|
74
|
+
createdAt: new Date().toISOString()
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
// Create embedding function (uses real model if available, fallback otherwise)
|
|
78
|
+
const embedder = await createEmbedFunction(MODELS_PATH);
|
|
79
|
+
// Save each capture as a memory
|
|
80
|
+
for (const capture of captures) {
|
|
81
|
+
const content = formatCaptureContent(capture);
|
|
82
|
+
const memoryId = randomUUID();
|
|
83
|
+
let memory;
|
|
84
|
+
if (isTextCapture(capture)) {
|
|
85
|
+
memory = {
|
|
86
|
+
id: memoryId,
|
|
87
|
+
projectId,
|
|
88
|
+
content,
|
|
89
|
+
type: 'reasoning',
|
|
90
|
+
sourceTool: null,
|
|
91
|
+
createdAt: new Date().toISOString(),
|
|
92
|
+
sessionId: input.session_id,
|
|
93
|
+
metadata: null
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
memory = {
|
|
98
|
+
id: memoryId,
|
|
99
|
+
projectId,
|
|
100
|
+
content,
|
|
101
|
+
type: 'tool_capture',
|
|
102
|
+
sourceTool: capture.tool,
|
|
103
|
+
createdAt: new Date().toISOString(),
|
|
104
|
+
sessionId: input.session_id,
|
|
105
|
+
metadata: {
|
|
106
|
+
input: capture.input,
|
|
107
|
+
outputPreview: capture.output.slice(0, 200)
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
// Store in SQLite
|
|
112
|
+
sqlite.insertMemory(memory);
|
|
113
|
+
// Generate and store embedding
|
|
114
|
+
const vector = await embedder.embed(content);
|
|
115
|
+
await lancedb.insertVector(memoryId, vector);
|
|
116
|
+
}
|
|
117
|
+
// Deduplicate highly similar memories to save space
|
|
118
|
+
const dedupeOnPrune = config.storage?.deduplicateOnPrune ?? true;
|
|
119
|
+
const dedupeThreshold = config.retrieval?.deduplicationThreshold ?? 0.85;
|
|
120
|
+
if (dedupeOnPrune) {
|
|
121
|
+
const dedupedIds = await deduplicateStoredMemories(sqlite, lancedb, projectId, dedupeThreshold);
|
|
122
|
+
if (dedupedIds.length > 0) {
|
|
123
|
+
log('Stop', `Deduplicated ${dedupedIds.length} similar memories`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Prune old memories if storage limits are configured
|
|
127
|
+
const maxPerProject = config.storage?.maxMemoriesPerProject ?? 500;
|
|
128
|
+
const maxTotal = config.storage?.maxTotalMemories ?? 5000;
|
|
129
|
+
if (maxPerProject > 0 || maxTotal > 0) {
|
|
130
|
+
const pruneResult = sqlite.pruneMemories({
|
|
131
|
+
maxPerProject,
|
|
132
|
+
maxTotal,
|
|
133
|
+
projectId
|
|
134
|
+
});
|
|
135
|
+
if (pruneResult.deleted > 0) {
|
|
136
|
+
log('Stop', `Pruned ${pruneResult.deleted} old memories to stay within limits`);
|
|
137
|
+
// Also delete from vector store
|
|
138
|
+
for (const id of pruneResult.deletedIds) {
|
|
139
|
+
await lancedb.deleteVector(id);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Close storage and embedder
|
|
144
|
+
sqlite.close();
|
|
145
|
+
await lancedb.close();
|
|
146
|
+
await embedder.close();
|
|
147
|
+
log('Stop', `SUCCESS: Saved ${captures.length} memories`);
|
|
148
|
+
outputResult({ continue: true, suppressOutput: true });
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
logError('Stop', error);
|
|
152
|
+
console.error('[memextend] Stop hook error:', error);
|
|
153
|
+
outputResult({ continue: true, suppressOutput: true });
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
function getProjectId(cwd) {
|
|
157
|
+
try {
|
|
158
|
+
const gitRoot = execSync('git rev-parse --show-toplevel', {
|
|
159
|
+
cwd,
|
|
160
|
+
encoding: 'utf-8',
|
|
161
|
+
stdio: ['pipe', 'pipe', 'pipe']
|
|
162
|
+
}).trim();
|
|
163
|
+
return createHash('sha256').update(gitRoot).digest('hex').slice(0, 16);
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return createHash('sha256').update(cwd).digest('hex').slice(0, 16);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
async function loadConfig() {
|
|
170
|
+
try {
|
|
171
|
+
if (existsSync(CONFIG_PATH)) {
|
|
172
|
+
const content = await readFile(CONFIG_PATH, 'utf-8');
|
|
173
|
+
return JSON.parse(content);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
// Ignore config errors
|
|
178
|
+
}
|
|
179
|
+
return {};
|
|
180
|
+
}
|
|
181
|
+
function outputResult(result) {
|
|
182
|
+
console.log(JSON.stringify(result));
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Deduplicate stored memories by removing older ones that are highly similar to newer ones.
|
|
186
|
+
* Uses cosine similarity on embeddings. Keeps the newest memory when duplicates found.
|
|
187
|
+
*/
|
|
188
|
+
async function deduplicateStoredMemories(sqlite, lancedb, projectId, threshold) {
|
|
189
|
+
const deletedIds = [];
|
|
190
|
+
// Get all memories for this project, sorted by date (newest first)
|
|
191
|
+
const memories = sqlite.getRecentMemories(projectId, 0, 0); // 0 = unlimited
|
|
192
|
+
if (memories.length < 2)
|
|
193
|
+
return deletedIds;
|
|
194
|
+
// Get vectors for all memories
|
|
195
|
+
const memoryIds = memories.map(m => m.id);
|
|
196
|
+
const vectors = await lancedb.getVectorsByIds(memoryIds);
|
|
197
|
+
if (vectors.size < 2)
|
|
198
|
+
return deletedIds;
|
|
199
|
+
// Track which memories to keep (newest first wins)
|
|
200
|
+
const keepIds = new Set();
|
|
201
|
+
const keptVectors = [];
|
|
202
|
+
for (const memory of memories) {
|
|
203
|
+
const vector = vectors.get(memory.id);
|
|
204
|
+
if (!vector) {
|
|
205
|
+
keepIds.add(memory.id); // Keep if no vector
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
// Check if this memory is too similar to any kept memory
|
|
209
|
+
let isDuplicate = false;
|
|
210
|
+
for (const kept of keptVectors) {
|
|
211
|
+
const similarity = cosineSimilarity(vector, kept.vector);
|
|
212
|
+
if (similarity > threshold) {
|
|
213
|
+
isDuplicate = true;
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (!isDuplicate) {
|
|
218
|
+
keepIds.add(memory.id);
|
|
219
|
+
keptVectors.push({ id: memory.id, vector });
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
// Delete this duplicate
|
|
223
|
+
sqlite.deleteMemory(memory.id);
|
|
224
|
+
await lancedb.deleteVector(memory.id);
|
|
225
|
+
deletedIds.push(memory.id);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return deletedIds;
|
|
229
|
+
}
|
|
230
|
+
main().catch(error => {
|
|
231
|
+
console.error('[memextend] Fatal error:', error);
|
|
232
|
+
process.exit(0);
|
|
233
|
+
});
|
|
234
|
+
//# sourceMappingURL=stop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/hooks/stop.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,8CAA8C;AAE9C,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,UAAU,eAAe,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// packages/adapters/claude-code/src/mcp/index.ts
|
|
2
|
+
// Copyright (c) 2026 ZodTTD LLC. MIT License.
|
|
3
|
+
// MCP server is a standalone script, not a library export
|
|
4
|
+
// It is executed directly by Claude Code
|
|
5
|
+
export const MCP_SERVER = 'server.cjs';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,8CAA8C;AAE9C,0DAA0D;AAC1D,yCAAyC;AAEzC,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC"}
|