claude-conversation-memory-mcp 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/LICENSE +21 -0
- package/README.md +223 -0
- package/dist/ConversationMemory.d.ts +80 -0
- package/dist/ConversationMemory.d.ts.map +1 -0
- package/dist/ConversationMemory.js +203 -0
- package/dist/ConversationMemory.js.map +1 -0
- package/dist/documentation/CodeAnalyzer.d.ts +29 -0
- package/dist/documentation/CodeAnalyzer.d.ts.map +1 -0
- package/dist/documentation/CodeAnalyzer.js +122 -0
- package/dist/documentation/CodeAnalyzer.js.map +1 -0
- package/dist/documentation/ConversationAnalyzer.d.ts +19 -0
- package/dist/documentation/ConversationAnalyzer.d.ts.map +1 -0
- package/dist/documentation/ConversationAnalyzer.js +156 -0
- package/dist/documentation/ConversationAnalyzer.js.map +1 -0
- package/dist/documentation/CrossReferencer.d.ts +67 -0
- package/dist/documentation/CrossReferencer.d.ts.map +1 -0
- package/dist/documentation/CrossReferencer.js +247 -0
- package/dist/documentation/CrossReferencer.js.map +1 -0
- package/dist/documentation/DocumentationGenerator.d.ts +22 -0
- package/dist/documentation/DocumentationGenerator.d.ts.map +1 -0
- package/dist/documentation/DocumentationGenerator.js +57 -0
- package/dist/documentation/DocumentationGenerator.js.map +1 -0
- package/dist/documentation/MarkdownFormatter.d.ts +26 -0
- package/dist/documentation/MarkdownFormatter.d.ts.map +1 -0
- package/dist/documentation/MarkdownFormatter.js +301 -0
- package/dist/documentation/MarkdownFormatter.js.map +1 -0
- package/dist/documentation/types.d.ts +176 -0
- package/dist/documentation/types.d.ts.map +1 -0
- package/dist/documentation/types.js +5 -0
- package/dist/documentation/types.js.map +1 -0
- package/dist/embeddings/EmbeddingConfig.d.ts +39 -0
- package/dist/embeddings/EmbeddingConfig.d.ts.map +1 -0
- package/dist/embeddings/EmbeddingConfig.js +132 -0
- package/dist/embeddings/EmbeddingConfig.js.map +1 -0
- package/dist/embeddings/EmbeddingGenerator.d.ts +45 -0
- package/dist/embeddings/EmbeddingGenerator.d.ts.map +1 -0
- package/dist/embeddings/EmbeddingGenerator.js +129 -0
- package/dist/embeddings/EmbeddingGenerator.js.map +1 -0
- package/dist/embeddings/EmbeddingProvider.d.ts +34 -0
- package/dist/embeddings/EmbeddingProvider.d.ts.map +1 -0
- package/dist/embeddings/EmbeddingProvider.js +6 -0
- package/dist/embeddings/EmbeddingProvider.js.map +1 -0
- package/dist/embeddings/VectorStore.d.ts +75 -0
- package/dist/embeddings/VectorStore.d.ts.map +1 -0
- package/dist/embeddings/VectorStore.js +220 -0
- package/dist/embeddings/VectorStore.js.map +1 -0
- package/dist/embeddings/providers/OllamaEmbeddings.d.ts +38 -0
- package/dist/embeddings/providers/OllamaEmbeddings.d.ts.map +1 -0
- package/dist/embeddings/providers/OllamaEmbeddings.js +132 -0
- package/dist/embeddings/providers/OllamaEmbeddings.js.map +1 -0
- package/dist/embeddings/providers/OpenAIEmbeddings.d.ts +40 -0
- package/dist/embeddings/providers/OpenAIEmbeddings.d.ts.map +1 -0
- package/dist/embeddings/providers/OpenAIEmbeddings.js +128 -0
- package/dist/embeddings/providers/OpenAIEmbeddings.js.map +1 -0
- package/dist/embeddings/providers/TransformersEmbeddings.d.ts +38 -0
- package/dist/embeddings/providers/TransformersEmbeddings.d.ts.map +1 -0
- package/dist/embeddings/providers/TransformersEmbeddings.js +114 -0
- package/dist/embeddings/providers/TransformersEmbeddings.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +127 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/ConversationParser.d.ts +138 -0
- package/dist/parsers/ConversationParser.d.ts.map +1 -0
- package/dist/parsers/ConversationParser.js +325 -0
- package/dist/parsers/ConversationParser.js.map +1 -0
- package/dist/parsers/DecisionExtractor.d.ts +76 -0
- package/dist/parsers/DecisionExtractor.d.ts.map +1 -0
- package/dist/parsers/DecisionExtractor.js +305 -0
- package/dist/parsers/DecisionExtractor.js.map +1 -0
- package/dist/parsers/GitIntegrator.d.ts +71 -0
- package/dist/parsers/GitIntegrator.d.ts.map +1 -0
- package/dist/parsers/GitIntegrator.js +283 -0
- package/dist/parsers/GitIntegrator.js.map +1 -0
- package/dist/parsers/MistakeExtractor.d.ts +86 -0
- package/dist/parsers/MistakeExtractor.d.ts.map +1 -0
- package/dist/parsers/MistakeExtractor.js +341 -0
- package/dist/parsers/MistakeExtractor.js.map +1 -0
- package/dist/parsers/RequirementsExtractor.d.ts +70 -0
- package/dist/parsers/RequirementsExtractor.d.ts.map +1 -0
- package/dist/parsers/RequirementsExtractor.js +252 -0
- package/dist/parsers/RequirementsExtractor.js.map +1 -0
- package/dist/search/SemanticSearch.d.ts +90 -0
- package/dist/search/SemanticSearch.d.ts.map +1 -0
- package/dist/search/SemanticSearch.js +352 -0
- package/dist/search/SemanticSearch.js.map +1 -0
- package/dist/storage/ConversationStorage.d.ts +53 -0
- package/dist/storage/ConversationStorage.d.ts.map +1 -0
- package/dist/storage/ConversationStorage.js +249 -0
- package/dist/storage/ConversationStorage.js.map +1 -0
- package/dist/storage/SQLiteManager.d.ts +88 -0
- package/dist/storage/SQLiteManager.d.ts.map +1 -0
- package/dist/storage/SQLiteManager.js +281 -0
- package/dist/storage/SQLiteManager.js.map +1 -0
- package/dist/storage/migrations.d.ts +54 -0
- package/dist/storage/migrations.d.ts.map +1 -0
- package/dist/storage/migrations.js +153 -0
- package/dist/storage/migrations.js.map +1 -0
- package/dist/storage/schema.sql +321 -0
- package/dist/tools/ToolDefinitions.d.ts +265 -0
- package/dist/tools/ToolDefinitions.d.ts.map +1 -0
- package/dist/tools/ToolDefinitions.js +261 -0
- package/dist/tools/ToolDefinitions.js.map +1 -0
- package/dist/tools/ToolHandlers.d.ts +56 -0
- package/dist/tools/ToolHandlers.d.ts.map +1 -0
- package/dist/tools/ToolHandlers.js +431 -0
- package/dist/tools/ToolHandlers.js.map +1 -0
- package/dist/types/ToolTypes.d.ts +333 -0
- package/dist/types/ToolTypes.d.ts.map +1 -0
- package/dist/types/ToolTypes.js +6 -0
- package/dist/types/ToolTypes.js.map +1 -0
- package/dist/utils/sanitization.d.ts +35 -0
- package/dist/utils/sanitization.d.ts.map +1 -0
- package/dist/utils/sanitization.js +97 -0
- package/dist/utils/sanitization.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for MCP Tool arguments and responses
|
|
3
|
+
* Replaces 'any' types with proper interfaces for type safety
|
|
4
|
+
*/
|
|
5
|
+
export interface IndexConversationsArgs {
|
|
6
|
+
project_path?: string;
|
|
7
|
+
session_id?: string;
|
|
8
|
+
include_thinking?: boolean;
|
|
9
|
+
enable_git?: boolean;
|
|
10
|
+
exclude_mcp_conversations?: boolean | 'self-only' | 'all-mcp';
|
|
11
|
+
exclude_mcp_servers?: string[];
|
|
12
|
+
}
|
|
13
|
+
export interface SearchConversationsArgs {
|
|
14
|
+
query: string;
|
|
15
|
+
limit?: number;
|
|
16
|
+
date_range?: [number, number];
|
|
17
|
+
}
|
|
18
|
+
export interface GetDecisionsArgs {
|
|
19
|
+
query: string;
|
|
20
|
+
file_path?: string;
|
|
21
|
+
limit?: number;
|
|
22
|
+
}
|
|
23
|
+
export interface CheckBeforeModifyArgs {
|
|
24
|
+
file_path: string;
|
|
25
|
+
}
|
|
26
|
+
export interface GetFileEvolutionArgs {
|
|
27
|
+
file_path: string;
|
|
28
|
+
include_decisions?: boolean;
|
|
29
|
+
include_commits?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface LinkCommitsToConversationsArgs {
|
|
32
|
+
query?: string;
|
|
33
|
+
conversation_id?: string;
|
|
34
|
+
limit?: number;
|
|
35
|
+
}
|
|
36
|
+
export interface SearchMistakesArgs {
|
|
37
|
+
query: string;
|
|
38
|
+
mistake_type?: string;
|
|
39
|
+
limit?: number;
|
|
40
|
+
}
|
|
41
|
+
export interface GetRequirementsArgs {
|
|
42
|
+
component: string;
|
|
43
|
+
type?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface GetToolHistoryArgs {
|
|
46
|
+
tool_name?: string;
|
|
47
|
+
file_path?: string;
|
|
48
|
+
limit?: number;
|
|
49
|
+
}
|
|
50
|
+
export interface FindSimilarSessionsArgs {
|
|
51
|
+
query: string;
|
|
52
|
+
limit?: number;
|
|
53
|
+
}
|
|
54
|
+
export interface GenerateDocumentationArgs {
|
|
55
|
+
project_path?: string;
|
|
56
|
+
session_id?: string;
|
|
57
|
+
scope?: 'full' | 'architecture' | 'decisions' | 'quality';
|
|
58
|
+
module_filter?: string;
|
|
59
|
+
}
|
|
60
|
+
export interface IndexConversationsResponse {
|
|
61
|
+
success: boolean;
|
|
62
|
+
project_path: string;
|
|
63
|
+
stats: {
|
|
64
|
+
conversations: {
|
|
65
|
+
count: number;
|
|
66
|
+
};
|
|
67
|
+
messages: {
|
|
68
|
+
count: number;
|
|
69
|
+
};
|
|
70
|
+
decisions: {
|
|
71
|
+
count: number;
|
|
72
|
+
};
|
|
73
|
+
mistakes: {
|
|
74
|
+
count: number;
|
|
75
|
+
};
|
|
76
|
+
git_commits: {
|
|
77
|
+
count: number;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
embeddings_generated?: boolean;
|
|
81
|
+
embedding_error?: string;
|
|
82
|
+
message: string;
|
|
83
|
+
}
|
|
84
|
+
export interface SearchResult {
|
|
85
|
+
conversation_id: string;
|
|
86
|
+
message_id: string;
|
|
87
|
+
timestamp: string;
|
|
88
|
+
similarity: number;
|
|
89
|
+
snippet: string;
|
|
90
|
+
git_branch?: string;
|
|
91
|
+
message_type: string;
|
|
92
|
+
role?: string;
|
|
93
|
+
}
|
|
94
|
+
export interface SearchConversationsResponse {
|
|
95
|
+
query: string;
|
|
96
|
+
results: SearchResult[];
|
|
97
|
+
total_found: number;
|
|
98
|
+
}
|
|
99
|
+
export interface DecisionResult {
|
|
100
|
+
decision_id: string;
|
|
101
|
+
decision_text: string;
|
|
102
|
+
rationale?: string;
|
|
103
|
+
alternatives_considered: string[];
|
|
104
|
+
rejected_reasons: Record<string, string>;
|
|
105
|
+
context?: string;
|
|
106
|
+
related_files: string[];
|
|
107
|
+
related_commits: string[];
|
|
108
|
+
timestamp: string;
|
|
109
|
+
similarity: number;
|
|
110
|
+
}
|
|
111
|
+
export interface GetDecisionsResponse {
|
|
112
|
+
query: string;
|
|
113
|
+
file_path?: string;
|
|
114
|
+
decisions: DecisionResult[];
|
|
115
|
+
total_found: number;
|
|
116
|
+
}
|
|
117
|
+
export interface EditInfo {
|
|
118
|
+
timestamp: string;
|
|
119
|
+
conversation_id: string;
|
|
120
|
+
}
|
|
121
|
+
export interface CommitInfo {
|
|
122
|
+
hash: string;
|
|
123
|
+
message: string;
|
|
124
|
+
timestamp: string;
|
|
125
|
+
}
|
|
126
|
+
export interface DecisionInfo {
|
|
127
|
+
decision_text: string;
|
|
128
|
+
rationale?: string;
|
|
129
|
+
timestamp: string;
|
|
130
|
+
}
|
|
131
|
+
export interface MistakeInfo {
|
|
132
|
+
what_went_wrong: string;
|
|
133
|
+
correction?: string;
|
|
134
|
+
mistake_type: string;
|
|
135
|
+
}
|
|
136
|
+
export interface CheckBeforeModifyResponse {
|
|
137
|
+
file_path: string;
|
|
138
|
+
warning: string;
|
|
139
|
+
recent_changes: {
|
|
140
|
+
edits: EditInfo[];
|
|
141
|
+
commits: CommitInfo[];
|
|
142
|
+
};
|
|
143
|
+
related_decisions: DecisionInfo[];
|
|
144
|
+
mistakes_to_avoid: MistakeInfo[];
|
|
145
|
+
}
|
|
146
|
+
export interface TimelineEvent {
|
|
147
|
+
type: 'edit' | 'commit' | 'decision';
|
|
148
|
+
timestamp: string;
|
|
149
|
+
data: Record<string, unknown>;
|
|
150
|
+
}
|
|
151
|
+
export interface GetFileEvolutionResponse {
|
|
152
|
+
file_path: string;
|
|
153
|
+
total_edits: number;
|
|
154
|
+
timeline: TimelineEvent[];
|
|
155
|
+
}
|
|
156
|
+
export interface CommitResult {
|
|
157
|
+
hash: string;
|
|
158
|
+
full_hash: string;
|
|
159
|
+
message: string;
|
|
160
|
+
author?: string;
|
|
161
|
+
timestamp: string;
|
|
162
|
+
branch?: string;
|
|
163
|
+
files_changed: string[];
|
|
164
|
+
conversation_id?: string;
|
|
165
|
+
}
|
|
166
|
+
export interface LinkCommitsToConversationsResponse {
|
|
167
|
+
query?: string;
|
|
168
|
+
conversation_id?: string;
|
|
169
|
+
commits: CommitResult[];
|
|
170
|
+
total_found: number;
|
|
171
|
+
}
|
|
172
|
+
export interface MistakeResult {
|
|
173
|
+
mistake_id: string;
|
|
174
|
+
mistake_type: string;
|
|
175
|
+
what_went_wrong: string;
|
|
176
|
+
correction?: string;
|
|
177
|
+
user_correction_message?: string;
|
|
178
|
+
files_affected: string[];
|
|
179
|
+
timestamp: string;
|
|
180
|
+
}
|
|
181
|
+
export interface SearchMistakesResponse {
|
|
182
|
+
query: string;
|
|
183
|
+
mistake_type?: string;
|
|
184
|
+
mistakes: MistakeResult[];
|
|
185
|
+
total_found: number;
|
|
186
|
+
}
|
|
187
|
+
export interface RequirementResult {
|
|
188
|
+
requirement_id: string;
|
|
189
|
+
type: string;
|
|
190
|
+
description: string;
|
|
191
|
+
rationale?: string;
|
|
192
|
+
affects_components: string[];
|
|
193
|
+
timestamp: string;
|
|
194
|
+
}
|
|
195
|
+
export interface GetRequirementsResponse {
|
|
196
|
+
component: string;
|
|
197
|
+
type?: string;
|
|
198
|
+
requirements: RequirementResult[];
|
|
199
|
+
total_found: number;
|
|
200
|
+
}
|
|
201
|
+
export interface ToolUseResult {
|
|
202
|
+
tool_use_id: string;
|
|
203
|
+
tool_name: string;
|
|
204
|
+
tool_input: Record<string, unknown>;
|
|
205
|
+
result: {
|
|
206
|
+
content?: string;
|
|
207
|
+
is_error: boolean;
|
|
208
|
+
stdout?: string;
|
|
209
|
+
stderr?: string;
|
|
210
|
+
};
|
|
211
|
+
timestamp: string;
|
|
212
|
+
}
|
|
213
|
+
export interface GetToolHistoryResponse {
|
|
214
|
+
tool_name?: string;
|
|
215
|
+
file_path?: string;
|
|
216
|
+
tool_uses: ToolUseResult[];
|
|
217
|
+
total_found: number;
|
|
218
|
+
}
|
|
219
|
+
export interface RelevantMessage {
|
|
220
|
+
message_id: string;
|
|
221
|
+
snippet: string;
|
|
222
|
+
similarity: number;
|
|
223
|
+
}
|
|
224
|
+
export interface SessionResult {
|
|
225
|
+
conversation_id: string;
|
|
226
|
+
project_path: string;
|
|
227
|
+
first_message_at: string;
|
|
228
|
+
message_count: number;
|
|
229
|
+
git_branch?: string;
|
|
230
|
+
relevance_score: number;
|
|
231
|
+
relevant_messages: RelevantMessage[];
|
|
232
|
+
}
|
|
233
|
+
export interface FindSimilarSessionsResponse {
|
|
234
|
+
query: string;
|
|
235
|
+
sessions: SessionResult[];
|
|
236
|
+
total_found: number;
|
|
237
|
+
}
|
|
238
|
+
export interface GenerateDocumentationResponse {
|
|
239
|
+
success: boolean;
|
|
240
|
+
project_path: string;
|
|
241
|
+
scope: string;
|
|
242
|
+
documentation: string;
|
|
243
|
+
statistics: {
|
|
244
|
+
modules: number;
|
|
245
|
+
decisions: number;
|
|
246
|
+
mistakes: number;
|
|
247
|
+
commits: number;
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
export interface ConversationRow {
|
|
251
|
+
id: string;
|
|
252
|
+
project_path: string;
|
|
253
|
+
first_message_at: number;
|
|
254
|
+
last_message_at: number;
|
|
255
|
+
message_count: number;
|
|
256
|
+
git_branch?: string;
|
|
257
|
+
claude_version?: string;
|
|
258
|
+
metadata: string;
|
|
259
|
+
created_at: number;
|
|
260
|
+
updated_at: number;
|
|
261
|
+
}
|
|
262
|
+
export interface MessageRow {
|
|
263
|
+
id: string;
|
|
264
|
+
conversation_id: string;
|
|
265
|
+
parent_id?: string;
|
|
266
|
+
message_type: string;
|
|
267
|
+
role?: string;
|
|
268
|
+
content?: string;
|
|
269
|
+
timestamp: number;
|
|
270
|
+
is_sidechain: number;
|
|
271
|
+
agent_id?: string;
|
|
272
|
+
request_id?: string;
|
|
273
|
+
git_branch?: string;
|
|
274
|
+
cwd?: string;
|
|
275
|
+
metadata: string;
|
|
276
|
+
}
|
|
277
|
+
export interface DecisionRow {
|
|
278
|
+
id: string;
|
|
279
|
+
conversation_id: string;
|
|
280
|
+
message_id: string;
|
|
281
|
+
decision_text: string;
|
|
282
|
+
rationale?: string;
|
|
283
|
+
alternatives_considered: string;
|
|
284
|
+
rejected_reasons: string;
|
|
285
|
+
context?: string;
|
|
286
|
+
related_files: string;
|
|
287
|
+
related_commits: string;
|
|
288
|
+
timestamp: number;
|
|
289
|
+
}
|
|
290
|
+
export interface MistakeRow {
|
|
291
|
+
id: string;
|
|
292
|
+
conversation_id: string;
|
|
293
|
+
message_id: string;
|
|
294
|
+
mistake_type: string;
|
|
295
|
+
what_went_wrong: string;
|
|
296
|
+
correction?: string;
|
|
297
|
+
user_correction_message?: string;
|
|
298
|
+
files_affected: string;
|
|
299
|
+
timestamp: number;
|
|
300
|
+
}
|
|
301
|
+
export interface GitCommitRow {
|
|
302
|
+
hash: string;
|
|
303
|
+
message: string;
|
|
304
|
+
author?: string;
|
|
305
|
+
timestamp: number;
|
|
306
|
+
branch?: string;
|
|
307
|
+
files_changed: string;
|
|
308
|
+
conversation_id?: string;
|
|
309
|
+
related_message_id?: string;
|
|
310
|
+
metadata: string;
|
|
311
|
+
}
|
|
312
|
+
export interface RequirementRow {
|
|
313
|
+
id: string;
|
|
314
|
+
type: string;
|
|
315
|
+
description: string;
|
|
316
|
+
rationale?: string;
|
|
317
|
+
affects_components: string;
|
|
318
|
+
conversation_id: string;
|
|
319
|
+
message_id: string;
|
|
320
|
+
timestamp: number;
|
|
321
|
+
}
|
|
322
|
+
export interface ToolUseRow {
|
|
323
|
+
id: string;
|
|
324
|
+
message_id: string;
|
|
325
|
+
tool_name: string;
|
|
326
|
+
tool_input: string;
|
|
327
|
+
timestamp: number;
|
|
328
|
+
result_content?: string;
|
|
329
|
+
is_error: number;
|
|
330
|
+
stdout?: string;
|
|
331
|
+
stderr?: string;
|
|
332
|
+
}
|
|
333
|
+
//# sourceMappingURL=ToolTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolTypes.d.ts","sourceRoot":"","sources":["../../src/types/ToolTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolTypes.js","sourceRoot":"","sources":["../../src/types/ToolTypes.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input sanitization utilities for SQL LIKE queries and path validation
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Sanitize string for use in SQL LIKE patterns
|
|
6
|
+
* Escapes special LIKE characters: %, _, "
|
|
7
|
+
*/
|
|
8
|
+
export declare function sanitizeForLike(input: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Validate and sanitize file path
|
|
11
|
+
* Cross-platform: prevents path traversal attacks and blocks system directories
|
|
12
|
+
*/
|
|
13
|
+
export declare function validateFilePath(filePath: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Validate and normalize project path
|
|
16
|
+
* Cross-platform: handles both Unix (/) and Windows (\) paths
|
|
17
|
+
* Used for converting file paths to Claude project directory names
|
|
18
|
+
*/
|
|
19
|
+
export declare function sanitizeProjectPath(path: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Sanitize SQL identifier (table/column name)
|
|
22
|
+
* Only allows alphanumeric and underscore
|
|
23
|
+
*/
|
|
24
|
+
export declare function sanitizeSQLIdentifier(identifier: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Convert a project path to Claude Code's project folder name
|
|
27
|
+
* Cross-platform compatible - handles both Unix and Windows paths
|
|
28
|
+
*
|
|
29
|
+
* Examples:
|
|
30
|
+
* - macOS/Linux: /Users/joker/github/project → -Users-joker-github-project
|
|
31
|
+
* - Windows: C:\Users\user\project → C-Users-user-project
|
|
32
|
+
* - Windows UNC: \\server\share\project → -server-share-project
|
|
33
|
+
*/
|
|
34
|
+
export declare function pathToProjectFolderName(projectPath: string): string;
|
|
35
|
+
//# sourceMappingURL=sanitization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitization.d.ts","sourceRoot":"","sources":["../../src/utils/sanitization.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiCzD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmBxD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAKhE;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAWnE"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input sanitization utilities for SQL LIKE queries and path validation
|
|
3
|
+
*/
|
|
4
|
+
import { normalize, sep } from 'path';
|
|
5
|
+
/**
|
|
6
|
+
* Sanitize string for use in SQL LIKE patterns
|
|
7
|
+
* Escapes special LIKE characters: %, _, "
|
|
8
|
+
*/
|
|
9
|
+
export function sanitizeForLike(input) {
|
|
10
|
+
return input.replace(/[%_"\\]/g, '\\$&');
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Validate and sanitize file path
|
|
14
|
+
* Cross-platform: prevents path traversal attacks and blocks system directories
|
|
15
|
+
*/
|
|
16
|
+
export function validateFilePath(filePath) {
|
|
17
|
+
// Remove any null bytes
|
|
18
|
+
const cleaned = filePath.replace(/\0/g, '');
|
|
19
|
+
// Check for path traversal attempts
|
|
20
|
+
if (cleaned.includes('..')) {
|
|
21
|
+
throw new Error('Path traversal detected: .. is not allowed in file paths');
|
|
22
|
+
}
|
|
23
|
+
// Check for absolute paths outside allowed directories (platform-specific)
|
|
24
|
+
const isWindows = process.platform === 'win32';
|
|
25
|
+
if (isWindows) {
|
|
26
|
+
// Windows system directories (case-insensitive)
|
|
27
|
+
const forbidden = [
|
|
28
|
+
/^[A-Z]:\\Windows\\/i,
|
|
29
|
+
/^[A-Z]:\\Program Files/i,
|
|
30
|
+
/^[A-Z]:\\ProgramData/i,
|
|
31
|
+
/^[A-Z]:\\System/i,
|
|
32
|
+
];
|
|
33
|
+
if (forbidden.some(pattern => pattern.test(cleaned))) {
|
|
34
|
+
throw new Error('Access to system directories is not allowed');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// Unix system directories
|
|
39
|
+
if (cleaned.startsWith('/etc') ||
|
|
40
|
+
cleaned.startsWith('/sys') ||
|
|
41
|
+
cleaned.startsWith('/proc')) {
|
|
42
|
+
throw new Error('Access to system directories is not allowed');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return cleaned;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Validate and normalize project path
|
|
49
|
+
* Cross-platform: handles both Unix (/) and Windows (\) paths
|
|
50
|
+
* Used for converting file paths to Claude project directory names
|
|
51
|
+
*/
|
|
52
|
+
export function sanitizeProjectPath(path) {
|
|
53
|
+
// Remove null bytes
|
|
54
|
+
const cleaned = path.replace(/\0/g, '');
|
|
55
|
+
// Check for path traversal
|
|
56
|
+
if (cleaned.includes('..')) {
|
|
57
|
+
throw new Error('Path traversal detected in project path');
|
|
58
|
+
}
|
|
59
|
+
// First normalize with Node's native path module for current platform
|
|
60
|
+
let normalized = normalize(cleaned);
|
|
61
|
+
// Then handle any remaining separators from other platforms
|
|
62
|
+
// Replace multiple consecutive slashes/backslashes with single separator
|
|
63
|
+
normalized = normalized.replace(/[\\/]+/g, sep);
|
|
64
|
+
// Remove trailing path separator
|
|
65
|
+
const trailingSepRegex = new RegExp(`${sep.replace(/\\/g, '\\\\')}+$`);
|
|
66
|
+
return normalized.replace(trailingSepRegex, '');
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Sanitize SQL identifier (table/column name)
|
|
70
|
+
* Only allows alphanumeric and underscore
|
|
71
|
+
*/
|
|
72
|
+
export function sanitizeSQLIdentifier(identifier) {
|
|
73
|
+
if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(identifier)) {
|
|
74
|
+
throw new Error(`Invalid SQL identifier: ${identifier}`);
|
|
75
|
+
}
|
|
76
|
+
return identifier;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Convert a project path to Claude Code's project folder name
|
|
80
|
+
* Cross-platform compatible - handles both Unix and Windows paths
|
|
81
|
+
*
|
|
82
|
+
* Examples:
|
|
83
|
+
* - macOS/Linux: /Users/joker/github/project → -Users-joker-github-project
|
|
84
|
+
* - Windows: C:\Users\user\project → C-Users-user-project
|
|
85
|
+
* - Windows UNC: \\server\share\project → -server-share-project
|
|
86
|
+
*/
|
|
87
|
+
export function pathToProjectFolderName(projectPath) {
|
|
88
|
+
// Normalize the path first
|
|
89
|
+
const normalized = sanitizeProjectPath(projectPath);
|
|
90
|
+
// Replace Windows drive letters (C: → C, D: → D)
|
|
91
|
+
// Replace both forward and backward slashes with dashes
|
|
92
|
+
const folderName = normalized
|
|
93
|
+
.replace(/^([A-Z]):/i, '$1') // Remove colon from drive letter
|
|
94
|
+
.replace(/[\\/]+/g, '-'); // Replace / or \ with -
|
|
95
|
+
return folderName;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=sanitization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitization.js","sourceRoot":"","sources":["../../src/utils/sanitization.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "claude-conversation-memory-mcp",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "MCP server for indexing and searching Claude Code conversation history with decision tracking and git integration",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"claude-conversation-memory-mcp": "dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"README.md",
|
|
13
|
+
"LICENSE"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc && npm run postbuild",
|
|
17
|
+
"postbuild": "cp src/storage/schema.sql dist/storage/",
|
|
18
|
+
"dev": "tsc --watch",
|
|
19
|
+
"start": "node dist/index.js",
|
|
20
|
+
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
|
|
21
|
+
"lint": "eslint .",
|
|
22
|
+
"lint:fix": "eslint . --fix",
|
|
23
|
+
"type-check": "tsc --noEmit",
|
|
24
|
+
"clean": "rm -rf dist",
|
|
25
|
+
"docs": "typedoc --out docs src",
|
|
26
|
+
"test:watch": "npm test -- --watch",
|
|
27
|
+
"test:coverage": "npm test -- --coverage",
|
|
28
|
+
"pre-push": "npm run type-check && npm run lint && npm run build",
|
|
29
|
+
"prepublishOnly": "npm run build",
|
|
30
|
+
"prepare": "husky"
|
|
31
|
+
},
|
|
32
|
+
"keywords": [
|
|
33
|
+
"mcp",
|
|
34
|
+
"claude",
|
|
35
|
+
"conversation",
|
|
36
|
+
"memory",
|
|
37
|
+
"semantic-search",
|
|
38
|
+
"decision-tracking"
|
|
39
|
+
],
|
|
40
|
+
"author": "xiaolai",
|
|
41
|
+
"license": "MIT",
|
|
42
|
+
"repository": {
|
|
43
|
+
"type": "git",
|
|
44
|
+
"url": "https://github.com/xiaolai/claude-conversation-memory-mcp.git"
|
|
45
|
+
},
|
|
46
|
+
"bugs": {
|
|
47
|
+
"url": "https://github.com/xiaolai/claude-conversation-memory-mcp/issues"
|
|
48
|
+
},
|
|
49
|
+
"homepage": "https://github.com/xiaolai/claude-conversation-memory-mcp#readme",
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
52
|
+
"better-sqlite3": "^11.10.0",
|
|
53
|
+
"lru-cache": "^10.0.0",
|
|
54
|
+
"nanoid": "^5.0.0",
|
|
55
|
+
"simple-git": "^3.25.0",
|
|
56
|
+
"sqlite-vec": "^0.1.6"
|
|
57
|
+
},
|
|
58
|
+
"optionalDependencies": {
|
|
59
|
+
"@xenova/transformers": "^2.17.2",
|
|
60
|
+
"openai": "^4.77.3"
|
|
61
|
+
},
|
|
62
|
+
"devDependencies": {
|
|
63
|
+
"@types/better-sqlite3": "^7.6.11",
|
|
64
|
+
"@types/jest": "^29.5.14",
|
|
65
|
+
"@types/node": "^22.10.5",
|
|
66
|
+
"@typescript-eslint/eslint-plugin": "^8.19.1",
|
|
67
|
+
"@typescript-eslint/parser": "^8.19.1",
|
|
68
|
+
"eslint": "^9.18.0",
|
|
69
|
+
"globals": "^16.5.0",
|
|
70
|
+
"husky": "^9.1.7",
|
|
71
|
+
"jest": "^29.7.0",
|
|
72
|
+
"lint-staged": "^16.2.6",
|
|
73
|
+
"prettier": "^3.6.2",
|
|
74
|
+
"ts-jest": "^29.2.5",
|
|
75
|
+
"ts-node": "^10.9.2",
|
|
76
|
+
"typescript": "^5.7.3"
|
|
77
|
+
},
|
|
78
|
+
"engines": {
|
|
79
|
+
"node": ">=18.0.0"
|
|
80
|
+
},
|
|
81
|
+
"lint-staged": {
|
|
82
|
+
"*.ts": [
|
|
83
|
+
"eslint --fix",
|
|
84
|
+
"prettier --write"
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
}
|