@aeriondyseti/vector-memory-mcp 1.1.0-dev.2 → 1.1.0-dev.5
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 +24 -11
- package/dist/package.json +1 -2
- package/dist/src/config/index.d.ts +17 -10
- package/dist/src/config/index.d.ts.map +1 -1
- package/dist/src/config/index.js +25 -11
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/db/conversation.repository.d.ts +26 -0
- package/dist/src/db/conversation.repository.d.ts.map +1 -0
- package/dist/src/db/conversation.repository.js +72 -0
- package/dist/src/db/conversation.repository.js.map +1 -0
- package/dist/src/db/conversation.schema.d.ts +4 -0
- package/dist/src/db/conversation.schema.d.ts.map +1 -0
- package/dist/src/db/conversation.schema.js +15 -0
- package/dist/src/db/conversation.schema.js.map +1 -0
- package/dist/src/db/lancedb-utils.d.ts +13 -3
- package/dist/src/db/lancedb-utils.d.ts.map +1 -1
- package/dist/src/db/lancedb-utils.js +36 -7
- package/dist/src/db/lancedb-utils.js.map +1 -1
- package/dist/src/db/memory.repository.d.ts +1 -0
- package/dist/src/db/memory.repository.d.ts.map +1 -1
- package/dist/src/db/memory.repository.js +18 -7
- package/dist/src/db/memory.repository.js.map +1 -1
- package/dist/src/http/server.d.ts.map +1 -1
- package/dist/src/http/server.js +38 -24
- package/dist/src/http/server.js.map +1 -1
- package/dist/src/index.js +7 -6
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/handlers.d.ts +3 -3
- package/dist/src/mcp/handlers.d.ts.map +1 -1
- package/dist/src/mcp/handlers.js +128 -145
- package/dist/src/mcp/handlers.js.map +1 -1
- package/dist/src/mcp/tools.d.ts +2 -2
- package/dist/src/mcp/tools.d.ts.map +1 -1
- package/dist/src/mcp/tools.js +53 -24
- package/dist/src/mcp/tools.js.map +1 -1
- package/dist/src/services/conversation.service.d.ts +38 -0
- package/dist/src/services/conversation.service.d.ts.map +1 -0
- package/dist/src/services/conversation.service.js +252 -0
- package/dist/src/services/conversation.service.js.map +1 -0
- package/dist/src/services/memory.service.d.ts +10 -27
- package/dist/src/services/memory.service.d.ts.map +1 -1
- package/dist/src/services/memory.service.js +94 -94
- package/dist/src/services/memory.service.js.map +1 -1
- package/dist/src/services/parsers/claude-code.parser.d.ts +8 -0
- package/dist/src/services/parsers/claude-code.parser.d.ts.map +1 -0
- package/dist/src/services/parsers/claude-code.parser.js +191 -0
- package/dist/src/services/parsers/claude-code.parser.js.map +1 -0
- package/dist/src/services/parsers/types.d.ts +9 -0
- package/dist/src/services/parsers/types.d.ts.map +1 -0
- package/dist/src/services/parsers/types.js +2 -0
- package/dist/src/services/parsers/types.js.map +1 -0
- package/dist/src/types/conversation.d.ts +99 -0
- package/dist/src/types/conversation.d.ts.map +1 -0
- package/dist/src/types/conversation.js +2 -0
- package/dist/src/types/conversation.js.map +1 -0
- package/package.json +1 -2
- package/src/config/index.ts +39 -21
- package/src/db/conversation.repository.ts +120 -0
- package/src/db/conversation.schema.ts +33 -0
- package/src/db/lancedb-utils.ts +35 -7
- package/src/db/memory.repository.ts +18 -7
- package/src/http/server.ts +43 -25
- package/src/index.ts +10 -11
- package/src/mcp/handlers.ts +144 -151
- package/src/mcp/tools.ts +54 -25
- package/src/services/conversation.service.ts +354 -0
- package/src/services/memory.service.ts +136 -119
- package/src/services/parsers/claude-code.parser.ts +242 -0
- package/src/services/parsers/types.ts +14 -0
- package/src/types/conversation.ts +108 -0
- package/dist/src/db/conversation-history.repository.d.ts +0 -24
- package/dist/src/db/conversation-history.repository.d.ts.map +0 -1
- package/dist/src/db/conversation-history.repository.js +0 -184
- package/dist/src/db/conversation-history.repository.js.map +0 -1
- package/dist/src/db/conversation-history.schema.d.ts +0 -10
- package/dist/src/db/conversation-history.schema.d.ts.map +0 -1
- package/dist/src/db/conversation-history.schema.js +0 -31
- package/dist/src/db/conversation-history.schema.js.map +0 -1
- package/dist/src/services/conversation-history.service.d.ts +0 -64
- package/dist/src/services/conversation-history.service.d.ts.map +0 -1
- package/dist/src/services/conversation-history.service.js +0 -244
- package/dist/src/services/conversation-history.service.js.map +0 -1
- package/dist/src/services/session-parser.d.ts +0 -59
- package/dist/src/services/session-parser.d.ts.map +0 -1
- package/dist/src/services/session-parser.js +0 -147
- package/dist/src/services/session-parser.js.map +0 -1
- package/dist/src/types/conversation-history.d.ts +0 -74
- package/dist/src/types/conversation-history.d.ts.map +0 -1
- package/dist/src/types/conversation-history.js +0 -2
- package/dist/src/types/conversation-history.js.map +0 -1
- package/hooks/session-start.ts +0 -100
- package/src/db/conversation-history.repository.ts +0 -255
- package/src/db/conversation-history.schema.ts +0 -40
- package/src/services/conversation-history.service.ts +0 -320
- package/src/services/session-parser.ts +0 -232
- package/src/types/conversation-history.ts +0 -82
|
@@ -11,26 +11,16 @@ const sigmoid = (x) => 1 / (1 + Math.exp(-x));
|
|
|
11
11
|
export class MemoryService {
|
|
12
12
|
repository;
|
|
13
13
|
embeddings;
|
|
14
|
-
|
|
15
|
-
historyWeight = 0.5;
|
|
14
|
+
conversationService = null;
|
|
16
15
|
constructor(repository, embeddings) {
|
|
17
16
|
this.repository = repository;
|
|
18
17
|
this.embeddings = embeddings;
|
|
19
18
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
* Called from index.ts when conversationHistory.enabled is true.
|
|
23
|
-
*/
|
|
24
|
-
setConversationHistory(service, weight) {
|
|
25
|
-
this.historyService = service;
|
|
26
|
-
this.historyWeight = weight;
|
|
19
|
+
setConversationService(service) {
|
|
20
|
+
this.conversationService = service;
|
|
27
21
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
* Used by MCP handlers for index/list/reindex tools.
|
|
31
|
-
*/
|
|
32
|
-
getConversationHistory() {
|
|
33
|
-
return this.historyService;
|
|
22
|
+
getConversationService() {
|
|
23
|
+
return this.conversationService;
|
|
34
24
|
}
|
|
35
25
|
async store(content, metadata = {}, embeddingText) {
|
|
36
26
|
const id = randomUUID();
|
|
@@ -66,6 +56,20 @@ export class MemoryService {
|
|
|
66
56
|
await this.repository.upsert(updatedMemory);
|
|
67
57
|
return updatedMemory;
|
|
68
58
|
}
|
|
59
|
+
async getMultiple(ids) {
|
|
60
|
+
if (ids.length === 0)
|
|
61
|
+
return [];
|
|
62
|
+
const memories = await this.repository.findByIds(ids);
|
|
63
|
+
// Track access in bulk
|
|
64
|
+
const now = new Date();
|
|
65
|
+
const live = memories.filter((m) => !isDeleted(m));
|
|
66
|
+
await Promise.all(live.map((m) => this.repository.upsert({
|
|
67
|
+
...m,
|
|
68
|
+
accessCount: m.accessCount + 1,
|
|
69
|
+
lastAccessed: now,
|
|
70
|
+
})));
|
|
71
|
+
return live;
|
|
72
|
+
}
|
|
69
73
|
async delete(id) {
|
|
70
74
|
return await this.repository.markDeleted(id);
|
|
71
75
|
}
|
|
@@ -108,93 +112,89 @@ export class MemoryService {
|
|
|
108
112
|
await this.repository.upsert(updatedMemory);
|
|
109
113
|
return updatedMemory;
|
|
110
114
|
}
|
|
111
|
-
|
|
115
|
+
computeMemoryScore(candidate, profile, now) {
|
|
116
|
+
const relevance = candidate.rrfScore;
|
|
117
|
+
const lastAccessed = candidate.lastAccessed ?? candidate.createdAt;
|
|
118
|
+
const hoursSinceAccess = Math.max(0, (now.getTime() - lastAccessed.getTime()) / (1000 * 60 * 60));
|
|
119
|
+
const recency = Math.pow(0.995, hoursSinceAccess);
|
|
120
|
+
const utility = sigmoid((candidate.usefulness + Math.log(candidate.accessCount + 1)) / 5);
|
|
121
|
+
const { weights, jitter } = profile;
|
|
122
|
+
const score = weights.relevance * relevance +
|
|
123
|
+
weights.recency * recency +
|
|
124
|
+
weights.utility * utility;
|
|
125
|
+
return score * (1 + (Math.random() * 2 - 1) * jitter);
|
|
126
|
+
}
|
|
127
|
+
async search(query, intent, limit = 10, includeDeleted = false, options) {
|
|
112
128
|
const queryEmbedding = await this.embeddings.embed(query);
|
|
113
|
-
const fetchLimit = limit * 5; // Fetch more for re-ranking
|
|
114
|
-
const candidates = await this.repository.findHybrid(queryEmbedding, query, fetchLimit);
|
|
115
129
|
const profile = INTENT_PROFILES[intent];
|
|
116
130
|
const now = new Date();
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
131
|
+
const hasConversationService = this.conversationService !== null;
|
|
132
|
+
const historyOnly = (options?.historyOnly ?? false) && hasConversationService;
|
|
133
|
+
const includeHistory = (options?.includeHistory ?? true) && hasConversationService;
|
|
134
|
+
const historyWeight = options?.historyWeight ??
|
|
135
|
+
this.conversationService?.config.historyWeight ??
|
|
136
|
+
0.75;
|
|
137
|
+
// Run memory + history queries in parallel
|
|
138
|
+
const memoryPromise = !historyOnly
|
|
139
|
+
? this.repository
|
|
140
|
+
.findHybrid(queryEmbedding, query, limit * 5)
|
|
141
|
+
.then((candidates) => candidates
|
|
142
|
+
.filter((m) => includeDeleted || !isDeleted(m))
|
|
143
|
+
.map((candidate) => ({
|
|
144
|
+
id: candidate.id,
|
|
145
|
+
content: candidate.content,
|
|
146
|
+
metadata: candidate.metadata,
|
|
147
|
+
createdAt: candidate.createdAt,
|
|
148
|
+
updatedAt: candidate.updatedAt,
|
|
149
|
+
source: "memory",
|
|
150
|
+
score: this.computeMemoryScore(candidate, profile, now),
|
|
151
|
+
supersededBy: candidate.supersededBy,
|
|
152
|
+
usefulness: candidate.usefulness,
|
|
153
|
+
accessCount: candidate.accessCount,
|
|
154
|
+
lastAccessed: candidate.lastAccessed,
|
|
155
|
+
})))
|
|
156
|
+
: Promise.resolve([]);
|
|
157
|
+
const historyPromise = includeHistory || historyOnly
|
|
158
|
+
? this.conversationService
|
|
159
|
+
.searchHistory(query, queryEmbedding, historyOnly ? limit * 5 : limit * 3, options?.historyFilters)
|
|
160
|
+
.then((historyRows) => historyRows.map((row) => ({
|
|
161
|
+
id: row.id,
|
|
162
|
+
content: row.content,
|
|
163
|
+
metadata: row.metadata,
|
|
164
|
+
createdAt: row.createdAt,
|
|
165
|
+
updatedAt: row.createdAt,
|
|
166
|
+
source: "conversation_history",
|
|
167
|
+
score: row.rrfScore * historyWeight,
|
|
168
|
+
sessionId: row.metadata?.session_id ?? "",
|
|
169
|
+
role: row.metadata?.role ?? "unknown",
|
|
170
|
+
messageIndexStart: row.metadata?.message_index_start ?? 0,
|
|
171
|
+
messageIndexEnd: row.metadata?.message_index_end ?? 0,
|
|
172
|
+
})))
|
|
173
|
+
: Promise.resolve([]);
|
|
174
|
+
const [memoryResults, historyResults] = await Promise.all([
|
|
175
|
+
memoryPromise,
|
|
176
|
+
historyPromise,
|
|
158
177
|
]);
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
const weightedHistory = historyResults.map((h) => ({
|
|
162
|
-
...h,
|
|
163
|
-
score: h.score * this.historyWeight,
|
|
164
|
-
}));
|
|
165
|
-
// Merge, sort by score descending, take top N
|
|
166
|
-
const merged = [...memoryResults, ...weightedHistory];
|
|
178
|
+
// Merge and sort by score descending
|
|
179
|
+
const merged = [...memoryResults, ...historyResults];
|
|
167
180
|
merged.sort((a, b) => b.score - a.score);
|
|
168
181
|
return merged.slice(0, limit);
|
|
169
182
|
}
|
|
170
|
-
/** Convert pre-sorted Memory[] to MemorySearchResult[] with positional scores. */
|
|
171
|
-
toMemoryResults(memories, limit) {
|
|
172
|
-
return memories.map((m, rank) => ({
|
|
173
|
-
source: "memory",
|
|
174
|
-
id: m.id,
|
|
175
|
-
content: m.content,
|
|
176
|
-
metadata: m.metadata,
|
|
177
|
-
score: (limit - rank) / limit,
|
|
178
|
-
createdAt: m.createdAt,
|
|
179
|
-
updatedAt: m.updatedAt,
|
|
180
|
-
supersededBy: m.supersededBy,
|
|
181
|
-
}));
|
|
182
|
-
}
|
|
183
183
|
async trackAccess(ids) {
|
|
184
|
+
if (ids.length === 0)
|
|
185
|
+
return;
|
|
186
|
+
const memories = await this.repository.findByIds(ids);
|
|
184
187
|
const now = new Date();
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
}
|
|
188
|
+
await Promise.all(memories
|
|
189
|
+
.filter((m) => !isDeleted(m))
|
|
190
|
+
.map((m) => this.repository.upsert({
|
|
191
|
+
...m,
|
|
192
|
+
accessCount: m.accessCount + 1,
|
|
193
|
+
lastAccessed: now,
|
|
194
|
+
})));
|
|
195
195
|
}
|
|
196
196
|
static UUID_ZERO = "00000000-0000-0000-0000-000000000000";
|
|
197
|
-
async
|
|
197
|
+
async setWaypoint(args) {
|
|
198
198
|
// Track access for utilized memories
|
|
199
199
|
if (args.memory_ids && args.memory_ids.length > 0) {
|
|
200
200
|
await this.trackAccess(args.memory_ids);
|
|
@@ -208,7 +208,7 @@ export class MemoryService {
|
|
|
208
208
|
}
|
|
209
209
|
return items.map((i) => `- ${i}`).join("\n");
|
|
210
210
|
};
|
|
211
|
-
const content = `#
|
|
211
|
+
const content = `# Waypoint - ${args.project}
|
|
212
212
|
**Date:** ${date} ${time} | **Branch:** ${args.branch ?? "unknown"}
|
|
213
213
|
|
|
214
214
|
## Summary
|
|
@@ -230,7 +230,7 @@ ${list(args.next_steps)}
|
|
|
230
230
|
${list(args.memory_ids)}`;
|
|
231
231
|
const metadata = {
|
|
232
232
|
...(args.metadata ?? {}),
|
|
233
|
-
type: "
|
|
233
|
+
type: "waypoint",
|
|
234
234
|
project: args.project,
|
|
235
235
|
date,
|
|
236
236
|
branch: args.branch ?? "unknown",
|
|
@@ -251,7 +251,7 @@ ${list(args.memory_ids)}`;
|
|
|
251
251
|
await this.repository.upsert(memory);
|
|
252
252
|
return memory;
|
|
253
253
|
}
|
|
254
|
-
async
|
|
254
|
+
async getLatestWaypoint() {
|
|
255
255
|
return await this.get(MemoryService.UUID_ZERO);
|
|
256
256
|
}
|
|
257
257
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.service.js","sourceRoot":"","sources":["../../../src/services/memory.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAM/C,MAAM,eAAe,GAAwC;IAC3D,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;IACrF,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;IACrF,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;IACnF,WAAW,EAAE,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;IACtF,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;CACnF,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE9D,MAAM,OAAO,aAAa;
|
|
1
|
+
{"version":3,"file":"memory.service.js","sourceRoot":"","sources":["../../../src/services/memory.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ParsedMessage, SessionFileInfo } from "../../types/conversation.js";
|
|
2
|
+
import type { SessionLogParser } from "./types.js";
|
|
3
|
+
export declare class ClaudeCodeSessionParser implements SessionLogParser {
|
|
4
|
+
parse(filePath: string, indexSubagents?: boolean): Promise<ParsedMessage[]>;
|
|
5
|
+
findSessionFiles(dirPath: string, since?: Date, indexSubagents?: boolean): Promise<SessionFileInfo[]>;
|
|
6
|
+
private findSubagentFiles;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=claude-code.parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code.parser.d.ts","sourceRoot":"","sources":["../../../../src/services/parsers/claude-code.parser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA6BnD,qBAAa,uBAAwB,YAAW,gBAAgB;IACxD,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,cAAc,GAAE,OAAe,GAC9B,OAAO,CAAC,aAAa,EAAE,CAAC;IAoGrB,gBAAgB,CACpB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,IAAI,EACZ,cAAc,GAAE,OAAe,GAC9B,OAAO,CAAC,eAAe,EAAE,CAAC;YA6Df,iBAAiB;CAwChC"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { readFile, readdir, stat } from "fs/promises";
|
|
2
|
+
import { basename, dirname, join } from "path";
|
|
3
|
+
// UUID pattern for session IDs
|
|
4
|
+
const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
5
|
+
/** Extract text content from an assistant message's content array */
|
|
6
|
+
function extractAssistantText(content) {
|
|
7
|
+
return content
|
|
8
|
+
.filter((block) => block.type === "text" && block.text)
|
|
9
|
+
.map((block) => block.text)
|
|
10
|
+
.join("\n");
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Extract project name from path-encoded directory name.
|
|
14
|
+
* Claude Code encodes paths by replacing `/` with `-`, e.g. `/home/user/project` → `-home-user-project`.
|
|
15
|
+
* This is a lossy encoding: directory names containing literal dashes (e.g. `my-project`)
|
|
16
|
+
* cannot be distinguished from path separators, so `my-project` decodes as `my/project`.
|
|
17
|
+
* This is a known limitation of Claude Code's encoding scheme.
|
|
18
|
+
*/
|
|
19
|
+
function extractProjectFromDir(dirName) {
|
|
20
|
+
return dirName.startsWith("-")
|
|
21
|
+
? dirName.slice(1).replace(/-/g, "/")
|
|
22
|
+
: dirName;
|
|
23
|
+
}
|
|
24
|
+
export class ClaudeCodeSessionParser {
|
|
25
|
+
async parse(filePath, indexSubagents = false) {
|
|
26
|
+
const fileContent = await readFile(filePath, "utf-8");
|
|
27
|
+
const lines = fileContent.split("\n").filter((line) => line.trim());
|
|
28
|
+
const messages = [];
|
|
29
|
+
let messageIndex = 0;
|
|
30
|
+
// Derive session ID and project from file path
|
|
31
|
+
const fileName = basename(filePath, ".jsonl");
|
|
32
|
+
const parentDir = basename(dirname(filePath));
|
|
33
|
+
// Check if this is inside a subagents directory
|
|
34
|
+
const isSubagentFile = filePath.includes("/subagents/");
|
|
35
|
+
// For subagent files, project dir is 3 levels up: <project>/<session>/subagents/<file>
|
|
36
|
+
// For main files, project dir is direct parent
|
|
37
|
+
const projectDir = isSubagentFile
|
|
38
|
+
? basename(dirname(dirname(dirname(filePath))))
|
|
39
|
+
: parentDir;
|
|
40
|
+
const project = extractProjectFromDir(projectDir);
|
|
41
|
+
for (const line of lines) {
|
|
42
|
+
let entry;
|
|
43
|
+
try {
|
|
44
|
+
entry = JSON.parse(line);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Skip malformed lines
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
const type = entry.type;
|
|
51
|
+
// Skip non-message entries
|
|
52
|
+
if (type === "progress" || type === "file-history-snapshot") {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
// Skip subagent messages unless configured to include them
|
|
56
|
+
if (!indexSubagents && (entry.isSidechain === true || isSubagentFile)) {
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
if (type !== "user" && type !== "assistant") {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
const message = entry.message;
|
|
63
|
+
if (!message)
|
|
64
|
+
continue;
|
|
65
|
+
const role = message.role;
|
|
66
|
+
if (role !== "user" && role !== "assistant")
|
|
67
|
+
continue;
|
|
68
|
+
let content = null;
|
|
69
|
+
if (role === "user") {
|
|
70
|
+
const msgContent = message.content;
|
|
71
|
+
if (typeof msgContent === "string") {
|
|
72
|
+
content = msgContent;
|
|
73
|
+
}
|
|
74
|
+
else if (Array.isArray(msgContent)) {
|
|
75
|
+
// Array content in user messages = tool_result entries, skip
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else if (role === "assistant") {
|
|
80
|
+
const msgContent = message.content;
|
|
81
|
+
if (Array.isArray(msgContent)) {
|
|
82
|
+
content = extractAssistantText(msgContent);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Skip empty content
|
|
86
|
+
if (!content || content.trim().length === 0) {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
const sessionId = entry.sessionId ?? fileName;
|
|
90
|
+
messages.push({
|
|
91
|
+
uuid: entry.uuid ?? `${sessionId}-${messageIndex}`,
|
|
92
|
+
role: role,
|
|
93
|
+
content: content.trim(),
|
|
94
|
+
timestamp: entry.timestamp
|
|
95
|
+
? new Date(entry.timestamp)
|
|
96
|
+
: new Date(),
|
|
97
|
+
messageIndex,
|
|
98
|
+
sessionId,
|
|
99
|
+
project,
|
|
100
|
+
gitBranch: entry.gitBranch,
|
|
101
|
+
isSubagent: entry.isSidechain ?? isSubagentFile,
|
|
102
|
+
agentId: entry.agentId,
|
|
103
|
+
});
|
|
104
|
+
messageIndex++;
|
|
105
|
+
}
|
|
106
|
+
return messages;
|
|
107
|
+
}
|
|
108
|
+
async findSessionFiles(dirPath, since, indexSubagents = false) {
|
|
109
|
+
const files = [];
|
|
110
|
+
let dirents;
|
|
111
|
+
try {
|
|
112
|
+
dirents = await readdir(dirPath, { withFileTypes: true });
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
return files;
|
|
116
|
+
}
|
|
117
|
+
for (const dirent of dirents) {
|
|
118
|
+
const entryPath = join(dirPath, dirent.name);
|
|
119
|
+
if (dirent.isDirectory()) {
|
|
120
|
+
if (dirent.name === "subagents") {
|
|
121
|
+
if (indexSubagents) {
|
|
122
|
+
const subFiles = await this.findSubagentFiles(entryPath, since, basename(dirname(dirname(entryPath))));
|
|
123
|
+
files.push(...subFiles);
|
|
124
|
+
}
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
const subFiles = await this.findSessionFiles(entryPath, since, indexSubagents);
|
|
128
|
+
files.push(...subFiles);
|
|
129
|
+
}
|
|
130
|
+
else if (dirent.name.endsWith(".jsonl")) {
|
|
131
|
+
const sessionId = basename(dirent.name, ".jsonl");
|
|
132
|
+
if (!UUID_PATTERN.test(sessionId))
|
|
133
|
+
continue;
|
|
134
|
+
let entryStat;
|
|
135
|
+
try {
|
|
136
|
+
entryStat = await stat(entryPath);
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
const lastModified = entryStat.mtime;
|
|
142
|
+
if (since && lastModified <= since)
|
|
143
|
+
continue;
|
|
144
|
+
const projectDir = basename(dirPath);
|
|
145
|
+
const project = extractProjectFromDir(projectDir);
|
|
146
|
+
files.push({
|
|
147
|
+
filePath: entryPath,
|
|
148
|
+
sessionId,
|
|
149
|
+
project,
|
|
150
|
+
lastModified,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return files;
|
|
155
|
+
}
|
|
156
|
+
async findSubagentFiles(subagentsDir, since, projectDir) {
|
|
157
|
+
const files = [];
|
|
158
|
+
let entries;
|
|
159
|
+
try {
|
|
160
|
+
entries = await readdir(subagentsDir);
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
return files;
|
|
164
|
+
}
|
|
165
|
+
for (const entry of entries) {
|
|
166
|
+
if (!entry.endsWith(".jsonl"))
|
|
167
|
+
continue;
|
|
168
|
+
const entryPath = join(subagentsDir, entry);
|
|
169
|
+
let entryStat;
|
|
170
|
+
try {
|
|
171
|
+
entryStat = await stat(entryPath);
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
const lastModified = entryStat.mtime;
|
|
177
|
+
if (since && lastModified <= since)
|
|
178
|
+
continue;
|
|
179
|
+
const sessionId = basename(entry, ".jsonl");
|
|
180
|
+
const project = extractProjectFromDir(projectDir);
|
|
181
|
+
files.push({
|
|
182
|
+
filePath: entryPath,
|
|
183
|
+
sessionId,
|
|
184
|
+
project,
|
|
185
|
+
lastModified,
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
return files;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=claude-code.parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code.parser.js","sourceRoot":"","sources":["../../../../src/services/parsers/claude-code.parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ParsedMessage, SessionFileInfo } from "../../types/conversation.js";
|
|
2
|
+
/** Interface for parsing session log files into structured messages */
|
|
3
|
+
export interface SessionLogParser {
|
|
4
|
+
/** Parse a session log file into ordered messages */
|
|
5
|
+
parse(filePath: string, indexSubagents?: boolean): Promise<ParsedMessage[]>;
|
|
6
|
+
/** Discover session log files in a directory */
|
|
7
|
+
findSessionFiles(dirPath: string, since?: Date, indexSubagents?: boolean): Promise<SessionFileInfo[]>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/services/parsers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAElF,uEAAuE;AACvE,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAE5E,gDAAgD;IAChD,gBAAgB,CACd,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,IAAI,EACZ,cAAc,CAAC,EAAE,OAAO,GACvB,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;CAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/services/parsers/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/** A single parsed message from a session log */
|
|
2
|
+
export interface ParsedMessage {
|
|
3
|
+
uuid: string;
|
|
4
|
+
role: "user" | "assistant";
|
|
5
|
+
content: string;
|
|
6
|
+
timestamp: Date;
|
|
7
|
+
messageIndex: number;
|
|
8
|
+
sessionId: string;
|
|
9
|
+
project: string;
|
|
10
|
+
gitBranch?: string;
|
|
11
|
+
isSubagent: boolean;
|
|
12
|
+
agentId?: string;
|
|
13
|
+
}
|
|
14
|
+
/** Metadata stored per conversation chunk in the database */
|
|
15
|
+
export interface ConversationChunkMetadata {
|
|
16
|
+
session_id: string;
|
|
17
|
+
timestamp: string;
|
|
18
|
+
role: string;
|
|
19
|
+
message_index_start: number;
|
|
20
|
+
message_index_end: number;
|
|
21
|
+
project: string;
|
|
22
|
+
git_branch?: string;
|
|
23
|
+
is_subagent: boolean;
|
|
24
|
+
agent_id?: string;
|
|
25
|
+
}
|
|
26
|
+
/** A chunk of conversation ready for indexing */
|
|
27
|
+
export interface ConversationChunk {
|
|
28
|
+
id: string;
|
|
29
|
+
content: string;
|
|
30
|
+
sessionId: string;
|
|
31
|
+
timestamp: Date;
|
|
32
|
+
endTimestamp: Date;
|
|
33
|
+
role: string;
|
|
34
|
+
messageIndexStart: number;
|
|
35
|
+
messageIndexEnd: number;
|
|
36
|
+
project: string;
|
|
37
|
+
metadata: ConversationChunkMetadata;
|
|
38
|
+
}
|
|
39
|
+
/** Tracking record for an indexed session */
|
|
40
|
+
export interface IndexedSession {
|
|
41
|
+
sessionId: string;
|
|
42
|
+
filePath: string;
|
|
43
|
+
project: string;
|
|
44
|
+
lastModified: number;
|
|
45
|
+
chunkCount: number;
|
|
46
|
+
messageCount: number;
|
|
47
|
+
indexedAt: Date;
|
|
48
|
+
firstMessageAt: Date;
|
|
49
|
+
lastMessageAt: Date;
|
|
50
|
+
}
|
|
51
|
+
/** Raw row from conversation_history table with RRF score */
|
|
52
|
+
export interface ConversationHybridRow {
|
|
53
|
+
id: string;
|
|
54
|
+
content: string;
|
|
55
|
+
metadata: Record<string, unknown>;
|
|
56
|
+
createdAt: Date;
|
|
57
|
+
rrfScore: number;
|
|
58
|
+
}
|
|
59
|
+
/** Unified search result with source provenance */
|
|
60
|
+
export interface SearchResult {
|
|
61
|
+
id: string;
|
|
62
|
+
content: string;
|
|
63
|
+
metadata: Record<string, unknown>;
|
|
64
|
+
createdAt: Date;
|
|
65
|
+
updatedAt: Date;
|
|
66
|
+
source: "memory" | "conversation_history";
|
|
67
|
+
score: number;
|
|
68
|
+
supersededBy?: string | null;
|
|
69
|
+
usefulness?: number;
|
|
70
|
+
accessCount?: number;
|
|
71
|
+
lastAccessed?: Date | null;
|
|
72
|
+
sessionId?: string;
|
|
73
|
+
role?: string;
|
|
74
|
+
messageIndexStart?: number;
|
|
75
|
+
messageIndexEnd?: number;
|
|
76
|
+
}
|
|
77
|
+
/** Session file info returned by the parser's file discovery */
|
|
78
|
+
export interface SessionFileInfo {
|
|
79
|
+
filePath: string;
|
|
80
|
+
sessionId: string;
|
|
81
|
+
project: string;
|
|
82
|
+
lastModified: Date;
|
|
83
|
+
}
|
|
84
|
+
/** Search filter options for conversation history */
|
|
85
|
+
export interface HistoryFilters {
|
|
86
|
+
sessionId?: string;
|
|
87
|
+
role?: string;
|
|
88
|
+
project?: string;
|
|
89
|
+
after?: Date;
|
|
90
|
+
before?: Date;
|
|
91
|
+
}
|
|
92
|
+
/** Options for the integrated search across both sources */
|
|
93
|
+
export interface SearchOptions {
|
|
94
|
+
includeHistory?: boolean;
|
|
95
|
+
historyOnly?: boolean;
|
|
96
|
+
historyWeight?: number;
|
|
97
|
+
historyFilters?: HistoryFilters;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=conversation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../src/types/conversation.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,6DAA6D;AAC7D,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,iDAAiD;AACjD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,yBAAyB,CAAC;CACrC;AAED,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,cAAc,EAAE,IAAI,CAAC;IACrB,aAAa,EAAE,IAAI,CAAC;CACrB;AAED,6DAA6D;AAC7D,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,sBAAsB,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IAEd,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAE3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,gEAAgE;AAChE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,IAAI,CAAC;CACpB;AAED,qDAAqD;AACrD,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,MAAM,CAAC,EAAE,IAAI,CAAC;CACf;AAED,4DAA4D;AAC5D,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC"}
|