cmp-memory-system 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +541 -0
- package/dist/analytics/index.d.ts +5 -0
- package/dist/analytics/index.d.ts.map +1 -0
- package/dist/analytics/index.js +5 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics/tracker.d.ts +107 -0
- package/dist/analytics/tracker.d.ts.map +1 -0
- package/dist/analytics/tracker.js +333 -0
- package/dist/analytics/tracker.js.map +1 -0
- package/dist/auto-improve/eslint-generator.d.ts +36 -0
- package/dist/auto-improve/eslint-generator.d.ts.map +1 -0
- package/dist/auto-improve/eslint-generator.js +280 -0
- package/dist/auto-improve/eslint-generator.js.map +1 -0
- package/dist/auto-improve/index.d.ts +6 -0
- package/dist/auto-improve/index.d.ts.map +1 -0
- package/dist/auto-improve/index.js +6 -0
- package/dist/auto-improve/index.js.map +1 -0
- package/dist/auto-improve/pattern-detector.d.ts +92 -0
- package/dist/auto-improve/pattern-detector.d.ts.map +1 -0
- package/dist/auto-improve/pattern-detector.js +231 -0
- package/dist/auto-improve/pattern-detector.js.map +1 -0
- package/dist/cli/index.d.ts +16 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +636 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/dashboard/index.d.ts +6 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +6 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/dashboard/server.d.ts +15 -0
- package/dist/dashboard/server.d.ts.map +1 -0
- package/dist/dashboard/server.js +373 -0
- package/dist/dashboard/server.js.map +1 -0
- package/dist/dashboard/ui.d.ts +9 -0
- package/dist/dashboard/ui.d.ts.map +1 -0
- package/dist/dashboard/ui.js +530 -0
- package/dist/dashboard/ui.js.map +1 -0
- package/dist/db/client.d.ts +66 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +159 -0
- package/dist/db/client.js.map +1 -0
- package/dist/db/drizzle-client.d.ts +302 -0
- package/dist/db/drizzle-client.d.ts.map +1 -0
- package/dist/db/drizzle-client.js +404 -0
- package/dist/db/drizzle-client.js.map +1 -0
- package/dist/db/index.d.ts +5 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +5 -0
- package/dist/db/index.js.map +1 -0
- package/dist/feedback/collector.d.ts +74 -0
- package/dist/feedback/collector.d.ts.map +1 -0
- package/dist/feedback/collector.js +231 -0
- package/dist/feedback/collector.js.map +1 -0
- package/dist/feedback/index.d.ts +5 -0
- package/dist/feedback/index.d.ts.map +1 -0
- package/dist/feedback/index.js +5 -0
- package/dist/feedback/index.js.map +1 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +8 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/memory-checkpoint.d.ts +43 -0
- package/dist/hooks/memory-checkpoint.d.ts.map +1 -0
- package/dist/hooks/memory-checkpoint.js +257 -0
- package/dist/hooks/memory-checkpoint.js.map +1 -0
- package/dist/hooks/post-tool-use.d.ts +61 -0
- package/dist/hooks/post-tool-use.d.ts.map +1 -0
- package/dist/hooks/post-tool-use.js +262 -0
- package/dist/hooks/post-tool-use.js.map +1 -0
- package/dist/hooks/pre-tool-use.d.ts +34 -0
- package/dist/hooks/pre-tool-use.d.ts.map +1 -0
- package/dist/hooks/pre-tool-use.js +358 -0
- package/dist/hooks/pre-tool-use.js.map +1 -0
- package/dist/hooks/session-start.d.ts +38 -0
- package/dist/hooks/session-start.d.ts.map +1 -0
- package/dist/hooks/session-start.js +274 -0
- package/dist/hooks/session-start.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/index.d.ts +5 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +5 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +42 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +599 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/registry/embeddings.d.ts +38 -0
- package/dist/registry/embeddings.d.ts.map +1 -0
- package/dist/registry/embeddings.js +110 -0
- package/dist/registry/embeddings.js.map +1 -0
- package/dist/registry/generator.d.ts +41 -0
- package/dist/registry/generator.d.ts.map +1 -0
- package/dist/registry/generator.js +323 -0
- package/dist/registry/generator.js.map +1 -0
- package/dist/registry/index.d.ts +6 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +6 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/services/IdeaCollector.d.ts +103 -0
- package/dist/services/IdeaCollector.d.ts.map +1 -0
- package/dist/services/IdeaCollector.js +371 -0
- package/dist/services/IdeaCollector.js.map +1 -0
- package/dist/services/TaskTracker.d.ts +89 -0
- package/dist/services/TaskTracker.d.ts.map +1 -0
- package/dist/services/TaskTracker.js +324 -0
- package/dist/services/TaskTracker.js.map +1 -0
- package/dist/services/WorkPlanManager.d.ts +107 -0
- package/dist/services/WorkPlanManager.d.ts.map +1 -0
- package/dist/services/WorkPlanManager.js +440 -0
- package/dist/services/WorkPlanManager.js.map +1 -0
- package/dist/services/auto-inject.d.ts +77 -0
- package/dist/services/auto-inject.d.ts.map +1 -0
- package/dist/services/auto-inject.js +289 -0
- package/dist/services/auto-inject.js.map +1 -0
- package/dist/services/auto-tag.d.ts +61 -0
- package/dist/services/auto-tag.d.ts.map +1 -0
- package/dist/services/auto-tag.js +203 -0
- package/dist/services/auto-tag.js.map +1 -0
- package/dist/services/cross-project-sync.d.ts +76 -0
- package/dist/services/cross-project-sync.d.ts.map +1 -0
- package/dist/services/cross-project-sync.js +235 -0
- package/dist/services/cross-project-sync.js.map +1 -0
- package/dist/services/index.d.ts +15 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +18 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/memory-consolidation.d.ts +77 -0
- package/dist/services/memory-consolidation.d.ts.map +1 -0
- package/dist/services/memory-consolidation.js +298 -0
- package/dist/services/memory-consolidation.js.map +1 -0
- package/dist/services/semantic-search.d.ts +93 -0
- package/dist/services/semantic-search.d.ts.map +1 -0
- package/dist/services/semantic-search.js +278 -0
- package/dist/services/semantic-search.js.map +1 -0
- package/dist/services/weekly-digest.d.ts +105 -0
- package/dist/services/weekly-digest.d.ts.map +1 -0
- package/dist/services/weekly-digest.js +292 -0
- package/dist/services/weekly-digest.js.map +1 -0
- package/dist/types/index.d.ts +274 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +84 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/config.d.ts +21 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +89 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/paths.d.ts +28 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +80 -0
- package/dist/utils/paths.js.map +1 -0
- package/package.json +89 -0
- package/templates/memory-config.json +82 -0
- package/templates/memory-config.schema.json +212 -0
- package/templates/settings.json +58 -0
|
@@ -0,0 +1,599 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server for Memory Tools
|
|
3
|
+
*
|
|
4
|
+
* Exposes memory operations as MCP tools that Claude can use:
|
|
5
|
+
* - memory_search: Search memories by query (with semantic search)
|
|
6
|
+
* - memory_write: Write new memory/learning (with auto-embedding)
|
|
7
|
+
* - memory_list: List recent memories
|
|
8
|
+
* - pattern_check: Check for detected patterns
|
|
9
|
+
* - pattern_report: Report a new pattern occurrence
|
|
10
|
+
* - session_context: Get current session context
|
|
11
|
+
* - memory_consolidate: Consolidate duplicate memories
|
|
12
|
+
* - memory_digest: Generate weekly digest
|
|
13
|
+
*/
|
|
14
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
15
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
16
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
17
|
+
import { createDrizzleClient } from '../db/drizzle-client.js';
|
|
18
|
+
import { loadConfig } from '../utils/config.js';
|
|
19
|
+
import { getProjectRoot } from '../utils/paths.js';
|
|
20
|
+
import { createSemanticSearchService, createAutoTagService, createConsolidationService, createWeeklyDigestService, } from '../services/index.js';
|
|
21
|
+
// =============================================================================
|
|
22
|
+
// TOOL DEFINITIONS
|
|
23
|
+
// =============================================================================
|
|
24
|
+
const TOOLS = [
|
|
25
|
+
{
|
|
26
|
+
name: 'memory_search',
|
|
27
|
+
description: 'Search memories using semantic similarity (embeddings). Returns relevant memories ranked by relevance.',
|
|
28
|
+
inputSchema: {
|
|
29
|
+
type: 'object',
|
|
30
|
+
properties: {
|
|
31
|
+
query: {
|
|
32
|
+
type: 'string',
|
|
33
|
+
description: 'Search query to find relevant memories',
|
|
34
|
+
},
|
|
35
|
+
type: {
|
|
36
|
+
type: 'string',
|
|
37
|
+
enum: ['memory', 'knowledge', 'pattern'],
|
|
38
|
+
description: 'Type of item to search (default: memory)',
|
|
39
|
+
},
|
|
40
|
+
limit: {
|
|
41
|
+
type: 'number',
|
|
42
|
+
description: 'Maximum results to return (default: 10)',
|
|
43
|
+
},
|
|
44
|
+
domain: {
|
|
45
|
+
type: 'string',
|
|
46
|
+
description: 'Filter by domain (e.g., video-studio, campaigns)',
|
|
47
|
+
},
|
|
48
|
+
semantic: {
|
|
49
|
+
type: 'boolean',
|
|
50
|
+
description: 'Use semantic search with embeddings (default: true)',
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
required: ['query'],
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'memory_write',
|
|
58
|
+
description: 'Save a new memory or learning to the knowledge base. Use this to record important patterns, decisions, or gotchas.',
|
|
59
|
+
inputSchema: {
|
|
60
|
+
type: 'object',
|
|
61
|
+
properties: {
|
|
62
|
+
title: {
|
|
63
|
+
type: 'string',
|
|
64
|
+
description: 'Brief title for the memory',
|
|
65
|
+
},
|
|
66
|
+
body: {
|
|
67
|
+
type: 'string',
|
|
68
|
+
description: 'Detailed content of the memory',
|
|
69
|
+
},
|
|
70
|
+
domain: {
|
|
71
|
+
type: 'string',
|
|
72
|
+
description: 'Domain/module this relates to (e.g., video-studio, finances)',
|
|
73
|
+
},
|
|
74
|
+
tags: {
|
|
75
|
+
type: 'array',
|
|
76
|
+
items: { type: 'string' },
|
|
77
|
+
description: 'Tags for categorization',
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
required: ['title', 'body'],
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: 'memory_list',
|
|
85
|
+
description: 'List recent memories, optionally filtered by domain.',
|
|
86
|
+
inputSchema: {
|
|
87
|
+
type: 'object',
|
|
88
|
+
properties: {
|
|
89
|
+
domain: {
|
|
90
|
+
type: 'string',
|
|
91
|
+
description: 'Filter by domain (optional)',
|
|
92
|
+
},
|
|
93
|
+
limit: {
|
|
94
|
+
type: 'number',
|
|
95
|
+
description: 'Maximum results (default: 10)',
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: 'pattern_check',
|
|
102
|
+
description: 'Check if any patterns have reached the auto-improvement threshold.',
|
|
103
|
+
inputSchema: {
|
|
104
|
+
type: 'object',
|
|
105
|
+
properties: {
|
|
106
|
+
threshold: {
|
|
107
|
+
type: 'number',
|
|
108
|
+
description: 'Minimum occurrences to trigger (default: 3)',
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: 'pattern_report',
|
|
115
|
+
description: 'Report a pattern occurrence. Used to track repeated issues for auto-improvement.',
|
|
116
|
+
inputSchema: {
|
|
117
|
+
type: 'object',
|
|
118
|
+
properties: {
|
|
119
|
+
patternId: {
|
|
120
|
+
type: 'string',
|
|
121
|
+
description: 'Unique identifier for the pattern (e.g., any-type, missing-zod)',
|
|
122
|
+
},
|
|
123
|
+
file: {
|
|
124
|
+
type: 'string',
|
|
125
|
+
description: 'File where pattern was found',
|
|
126
|
+
},
|
|
127
|
+
line: {
|
|
128
|
+
type: 'number',
|
|
129
|
+
description: 'Line number',
|
|
130
|
+
},
|
|
131
|
+
code: {
|
|
132
|
+
type: 'string',
|
|
133
|
+
description: 'Code snippet showing the pattern',
|
|
134
|
+
},
|
|
135
|
+
severity: {
|
|
136
|
+
type: 'string',
|
|
137
|
+
enum: ['critical', 'high', 'medium', 'low'],
|
|
138
|
+
description: 'Severity level',
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
required: ['patternId', 'file'],
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
name: 'session_context',
|
|
146
|
+
description: 'Get context for the current session including recent memories and detected module.',
|
|
147
|
+
inputSchema: {
|
|
148
|
+
type: 'object',
|
|
149
|
+
properties: {
|
|
150
|
+
includePatterns: {
|
|
151
|
+
type: 'boolean',
|
|
152
|
+
description: 'Include triggered patterns (default: true)',
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
name: 'feedback_submit',
|
|
159
|
+
description: 'Submit feedback on a memory or suggestion. Used for learning.',
|
|
160
|
+
inputSchema: {
|
|
161
|
+
type: 'object',
|
|
162
|
+
properties: {
|
|
163
|
+
memoryId: {
|
|
164
|
+
type: 'string',
|
|
165
|
+
description: 'ID of the memory being rated',
|
|
166
|
+
},
|
|
167
|
+
helpful: {
|
|
168
|
+
type: 'boolean',
|
|
169
|
+
description: 'Whether the memory was helpful',
|
|
170
|
+
},
|
|
171
|
+
comment: {
|
|
172
|
+
type: 'string',
|
|
173
|
+
description: 'Optional comment explaining the feedback',
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
required: ['memoryId', 'helpful'],
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
name: 'memory_consolidate',
|
|
181
|
+
description: 'Consolidate duplicate or similar memories. Merges similar memories, detects conflicts, and archives stale ones.',
|
|
182
|
+
inputSchema: {
|
|
183
|
+
type: 'object',
|
|
184
|
+
properties: {
|
|
185
|
+
dryRun: {
|
|
186
|
+
type: 'boolean',
|
|
187
|
+
description: 'If true, only analyze without making changes (default: false)',
|
|
188
|
+
},
|
|
189
|
+
similarityThreshold: {
|
|
190
|
+
type: 'number',
|
|
191
|
+
description: 'Similarity threshold for merging (0-1, default: 0.85)',
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
name: 'memory_digest',
|
|
198
|
+
description: 'Generate a weekly digest summarizing memory activity, patterns, and recommendations.',
|
|
199
|
+
inputSchema: {
|
|
200
|
+
type: 'object',
|
|
201
|
+
properties: {
|
|
202
|
+
days: {
|
|
203
|
+
type: 'number',
|
|
204
|
+
description: 'Number of days to include (default: 7)',
|
|
205
|
+
},
|
|
206
|
+
save: {
|
|
207
|
+
type: 'boolean',
|
|
208
|
+
description: 'Save the digest as a memory (default: true)',
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
name: 'memory_auto_tag',
|
|
215
|
+
description: 'Automatically tag memories based on content analysis.',
|
|
216
|
+
inputSchema: {
|
|
217
|
+
type: 'object',
|
|
218
|
+
properties: {
|
|
219
|
+
memoryId: {
|
|
220
|
+
type: 'string',
|
|
221
|
+
description: 'Specific memory ID to tag (optional, tags all untagged if not provided)',
|
|
222
|
+
},
|
|
223
|
+
batchMode: {
|
|
224
|
+
type: 'boolean',
|
|
225
|
+
description: 'Process all untagged memories (default: false)',
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
name: 'memory_embed',
|
|
232
|
+
description: 'Generate embeddings for memories to enable semantic search.',
|
|
233
|
+
inputSchema: {
|
|
234
|
+
type: 'object',
|
|
235
|
+
properties: {
|
|
236
|
+
batchMode: {
|
|
237
|
+
type: 'boolean',
|
|
238
|
+
description: 'Embed all memories without embeddings (default: false)',
|
|
239
|
+
},
|
|
240
|
+
limit: {
|
|
241
|
+
type: 'number',
|
|
242
|
+
description: 'Maximum memories to embed (default: 50)',
|
|
243
|
+
},
|
|
244
|
+
},
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
];
|
|
248
|
+
// =============================================================================
|
|
249
|
+
// MCP SERVER CLASS
|
|
250
|
+
// =============================================================================
|
|
251
|
+
export class MemoryMCPServer {
|
|
252
|
+
server;
|
|
253
|
+
client = null;
|
|
254
|
+
system = 'SWARMSCALE';
|
|
255
|
+
config = null;
|
|
256
|
+
// Services
|
|
257
|
+
searchService = null;
|
|
258
|
+
autoTagService = null;
|
|
259
|
+
consolidationService = null;
|
|
260
|
+
digestService = null;
|
|
261
|
+
constructor() {
|
|
262
|
+
this.server = new Server({ name: 'metanautical-memory', version: '1.0.0' }, { capabilities: { tools: {} } });
|
|
263
|
+
this.setupHandlers();
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Initialize with configuration
|
|
267
|
+
*/
|
|
268
|
+
async init() {
|
|
269
|
+
const projectRoot = await getProjectRoot();
|
|
270
|
+
this.config = await loadConfig(projectRoot);
|
|
271
|
+
this.system = this.config.system;
|
|
272
|
+
this.client = createDrizzleClient(this.system);
|
|
273
|
+
// Initialize services
|
|
274
|
+
this.searchService = createSemanticSearchService(this.client);
|
|
275
|
+
this.autoTagService = createAutoTagService(this.client);
|
|
276
|
+
this.consolidationService = createConsolidationService(this.client, this.searchService);
|
|
277
|
+
this.digestService = createWeeklyDigestService(this.client, this.autoTagService, this.config);
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Setup request handlers
|
|
281
|
+
*/
|
|
282
|
+
setupHandlers() {
|
|
283
|
+
// List available tools
|
|
284
|
+
this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
285
|
+
tools: TOOLS,
|
|
286
|
+
}));
|
|
287
|
+
// Handle tool calls
|
|
288
|
+
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
289
|
+
const { name, arguments: args } = request.params;
|
|
290
|
+
try {
|
|
291
|
+
const result = await this.handleToolCall(name, args);
|
|
292
|
+
return {
|
|
293
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
return {
|
|
298
|
+
content: [{ type: 'text', text: `Error: ${String(error)}` }],
|
|
299
|
+
isError: true,
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Handle individual tool calls
|
|
306
|
+
*/
|
|
307
|
+
async handleToolCall(name, args) {
|
|
308
|
+
if (!this.client) {
|
|
309
|
+
await this.init();
|
|
310
|
+
}
|
|
311
|
+
const client = this.client;
|
|
312
|
+
switch (name) {
|
|
313
|
+
case 'memory_search': {
|
|
314
|
+
const query = args.query;
|
|
315
|
+
const type = args.type ?? 'memory';
|
|
316
|
+
const limit = args.limit ?? 10;
|
|
317
|
+
const domain = args.domain;
|
|
318
|
+
const useSemantic = args.semantic ?? true;
|
|
319
|
+
// Use semantic search if available and requested
|
|
320
|
+
if (useSemantic && this.searchService) {
|
|
321
|
+
const results = await this.searchService.search(query, {
|
|
322
|
+
type,
|
|
323
|
+
limit,
|
|
324
|
+
domain,
|
|
325
|
+
threshold: 0.4,
|
|
326
|
+
});
|
|
327
|
+
return {
|
|
328
|
+
count: results.length,
|
|
329
|
+
searchType: 'semantic',
|
|
330
|
+
memories: results.map(r => ({
|
|
331
|
+
id: r.item.id,
|
|
332
|
+
title: r.content.title,
|
|
333
|
+
body: r.content.body?.slice(0, 200),
|
|
334
|
+
domain: r.content.domain,
|
|
335
|
+
relevanceScore: Math.round(r.score * 100) / 100,
|
|
336
|
+
createdAt: r.item.createdAt,
|
|
337
|
+
})),
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
// Fallback to text search
|
|
341
|
+
const results = await client.search(query, { type, limit });
|
|
342
|
+
return {
|
|
343
|
+
count: results.length,
|
|
344
|
+
searchType: 'text',
|
|
345
|
+
memories: results.map(m => ({
|
|
346
|
+
id: m.id,
|
|
347
|
+
title: m.content?.title,
|
|
348
|
+
body: m.content?.body?.slice(0, 200),
|
|
349
|
+
domain: m.content?.domain,
|
|
350
|
+
createdAt: m.createdAt,
|
|
351
|
+
})),
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
case 'memory_write': {
|
|
355
|
+
// Use semantic search service to create with embedding
|
|
356
|
+
if (this.searchService) {
|
|
357
|
+
const result = await this.searchService.createMemoryWithEmbedding(args.title, args.body, {
|
|
358
|
+
domain: args.domain,
|
|
359
|
+
source: 'claude',
|
|
360
|
+
tags: args.tags,
|
|
361
|
+
});
|
|
362
|
+
// Auto-tag if service available
|
|
363
|
+
if (this.autoTagService) {
|
|
364
|
+
await this.autoTagService.autoTag(result.id).catch(() => { });
|
|
365
|
+
}
|
|
366
|
+
return {
|
|
367
|
+
success: true,
|
|
368
|
+
id: result.id,
|
|
369
|
+
embedded: result.embedded,
|
|
370
|
+
message: `Memory saved: ${args.title}${result.embedded ? ' (with embedding)' : ''}`,
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
// Fallback to basic create
|
|
374
|
+
const content = {
|
|
375
|
+
title: args.title,
|
|
376
|
+
body: args.body,
|
|
377
|
+
domain: args.domain,
|
|
378
|
+
source: 'claude',
|
|
379
|
+
};
|
|
380
|
+
const result = await client.createMemory(content, args.tags);
|
|
381
|
+
return {
|
|
382
|
+
success: true,
|
|
383
|
+
id: result.id,
|
|
384
|
+
embedded: false,
|
|
385
|
+
message: `Memory saved: ${content.title}`,
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
case 'memory_list': {
|
|
389
|
+
const domain = args.domain;
|
|
390
|
+
const limit = args.limit ?? 10;
|
|
391
|
+
const memories = await client.getMemories(domain, limit);
|
|
392
|
+
return {
|
|
393
|
+
count: memories.length,
|
|
394
|
+
memories: memories.map(m => ({
|
|
395
|
+
id: m.id,
|
|
396
|
+
title: m.content?.title,
|
|
397
|
+
domain: m.content?.domain,
|
|
398
|
+
createdAt: m.createdAt,
|
|
399
|
+
})),
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
case 'pattern_check': {
|
|
403
|
+
const threshold = args.threshold ?? 3;
|
|
404
|
+
const patterns = await client.getTriggeredPatterns(threshold);
|
|
405
|
+
return {
|
|
406
|
+
triggered: patterns.length,
|
|
407
|
+
patterns: patterns.map(p => ({
|
|
408
|
+
id: p.id,
|
|
409
|
+
patternId: p.content?.patternId,
|
|
410
|
+
occurrences: p.content?.occurrences,
|
|
411
|
+
severity: p.priority,
|
|
412
|
+
})),
|
|
413
|
+
needsAutoImprove: patterns.length > 0,
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
case 'pattern_report': {
|
|
417
|
+
const result = await client.trackPattern(args.patternId, args.file, args.line ?? 0, args.code ?? '', args.severity ?? 'medium');
|
|
418
|
+
return {
|
|
419
|
+
success: true,
|
|
420
|
+
id: result.id,
|
|
421
|
+
count: result.count,
|
|
422
|
+
triggeredAutoImprove: result.count >= 3,
|
|
423
|
+
message: result.count >= 3
|
|
424
|
+
? `Pattern ${args.patternId} reached threshold (${result.count}x). Auto-improvement triggered.`
|
|
425
|
+
: `Pattern ${args.patternId} tracked (${result.count}x).`,
|
|
426
|
+
};
|
|
427
|
+
}
|
|
428
|
+
case 'session_context': {
|
|
429
|
+
const includePatterns = args.includePatterns ?? true;
|
|
430
|
+
const [memories, stats] = await Promise.all([
|
|
431
|
+
client.getRecentMemories(5),
|
|
432
|
+
client.getStats(),
|
|
433
|
+
]);
|
|
434
|
+
const result = {
|
|
435
|
+
system: this.system,
|
|
436
|
+
stats,
|
|
437
|
+
recentMemories: memories.map(m => ({
|
|
438
|
+
title: m.content?.title,
|
|
439
|
+
domain: m.content?.domain,
|
|
440
|
+
})),
|
|
441
|
+
};
|
|
442
|
+
if (includePatterns) {
|
|
443
|
+
const patterns = await client.getTriggeredPatterns(3);
|
|
444
|
+
result.triggeredPatterns = patterns.map(p => ({
|
|
445
|
+
patternId: p.content?.patternId,
|
|
446
|
+
occurrences: p.content?.occurrences,
|
|
447
|
+
}));
|
|
448
|
+
}
|
|
449
|
+
return result;
|
|
450
|
+
}
|
|
451
|
+
case 'feedback_submit': {
|
|
452
|
+
const memoryId = args.memoryId;
|
|
453
|
+
const helpful = args.helpful;
|
|
454
|
+
const comment = args.comment;
|
|
455
|
+
// Get the memory
|
|
456
|
+
const memory = await client.get(memoryId);
|
|
457
|
+
if (!memory) {
|
|
458
|
+
return { success: false, error: 'Memory not found' };
|
|
459
|
+
}
|
|
460
|
+
// Update with feedback
|
|
461
|
+
const content = memory.content;
|
|
462
|
+
const feedback = (content.feedback ?? []);
|
|
463
|
+
feedback.push({
|
|
464
|
+
helpful,
|
|
465
|
+
comment,
|
|
466
|
+
timestamp: new Date().toISOString(),
|
|
467
|
+
});
|
|
468
|
+
await client.update(memoryId, {
|
|
469
|
+
content: { ...content, feedback },
|
|
470
|
+
// Boost priority if helpful
|
|
471
|
+
priority: helpful ? 'high' : memory.priority ?? undefined,
|
|
472
|
+
});
|
|
473
|
+
// Record access for decay algorithm
|
|
474
|
+
if (this.consolidationService) {
|
|
475
|
+
await this.consolidationService.recordAccess(memoryId).catch(() => { });
|
|
476
|
+
}
|
|
477
|
+
return {
|
|
478
|
+
success: true,
|
|
479
|
+
message: helpful ? 'Thank you! Memory marked as helpful.' : 'Feedback recorded.',
|
|
480
|
+
};
|
|
481
|
+
}
|
|
482
|
+
case 'memory_consolidate': {
|
|
483
|
+
if (!this.consolidationService) {
|
|
484
|
+
return { success: false, error: 'Consolidation service not initialized' };
|
|
485
|
+
}
|
|
486
|
+
const dryRun = args.dryRun ?? false;
|
|
487
|
+
const similarityThreshold = args.similarityThreshold ?? 0.85;
|
|
488
|
+
const result = await this.consolidationService.consolidate({
|
|
489
|
+
dryRun,
|
|
490
|
+
similarityThreshold,
|
|
491
|
+
});
|
|
492
|
+
return {
|
|
493
|
+
success: true,
|
|
494
|
+
dryRun,
|
|
495
|
+
...result,
|
|
496
|
+
message: dryRun
|
|
497
|
+
? `Analysis complete: ${result.merged} memories would be merged, ${result.conflicts.length} conflicts detected`
|
|
498
|
+
: `Consolidation complete: ${result.merged} memories merged, ${result.archived} archived`,
|
|
499
|
+
};
|
|
500
|
+
}
|
|
501
|
+
case 'memory_digest': {
|
|
502
|
+
if (!this.digestService) {
|
|
503
|
+
return { success: false, error: 'Digest service not initialized' };
|
|
504
|
+
}
|
|
505
|
+
const days = args.days ?? 7;
|
|
506
|
+
const save = args.save ?? true;
|
|
507
|
+
const digest = await this.digestService.generate({ days });
|
|
508
|
+
if (save) {
|
|
509
|
+
await this.digestService.sendDigest(digest);
|
|
510
|
+
}
|
|
511
|
+
return {
|
|
512
|
+
success: true,
|
|
513
|
+
period: digest.period,
|
|
514
|
+
summary: digest.summary,
|
|
515
|
+
highlightCount: digest.highlights.length,
|
|
516
|
+
patternCount: digest.patterns.length,
|
|
517
|
+
recommendationCount: digest.recommendations.length,
|
|
518
|
+
markdown: this.digestService.formatAsMarkdown(digest),
|
|
519
|
+
};
|
|
520
|
+
}
|
|
521
|
+
case 'memory_auto_tag': {
|
|
522
|
+
if (!this.autoTagService) {
|
|
523
|
+
return { success: false, error: 'Auto-tag service not initialized' };
|
|
524
|
+
}
|
|
525
|
+
const memoryId = args.memoryId;
|
|
526
|
+
const batchMode = args.batchMode ?? false;
|
|
527
|
+
if (memoryId) {
|
|
528
|
+
const result = await this.autoTagService.autoTag(memoryId);
|
|
529
|
+
return {
|
|
530
|
+
success: true,
|
|
531
|
+
memoryId,
|
|
532
|
+
suggestedTags: result?.suggestedTags ?? [],
|
|
533
|
+
suggestedDomain: result?.suggestedDomain,
|
|
534
|
+
confidence: result?.confidence ?? 0,
|
|
535
|
+
};
|
|
536
|
+
}
|
|
537
|
+
if (batchMode) {
|
|
538
|
+
const result = await this.autoTagService.batchAutoTag();
|
|
539
|
+
return {
|
|
540
|
+
success: true,
|
|
541
|
+
...result,
|
|
542
|
+
message: `Tagged ${result.tagged} out of ${result.processed} memories`,
|
|
543
|
+
};
|
|
544
|
+
}
|
|
545
|
+
// Just get stats
|
|
546
|
+
const stats = await this.autoTagService.getTagStats();
|
|
547
|
+
return {
|
|
548
|
+
success: true,
|
|
549
|
+
...stats,
|
|
550
|
+
message: `${stats.untaggedCount} memories need tagging`,
|
|
551
|
+
};
|
|
552
|
+
}
|
|
553
|
+
case 'memory_embed': {
|
|
554
|
+
if (!this.searchService) {
|
|
555
|
+
return { success: false, error: 'Search service not initialized' };
|
|
556
|
+
}
|
|
557
|
+
const batchMode = args.batchMode ?? false;
|
|
558
|
+
const limit = args.limit ?? 50;
|
|
559
|
+
if (batchMode) {
|
|
560
|
+
const result = await this.searchService.batchEmbed({ limit });
|
|
561
|
+
return {
|
|
562
|
+
success: true,
|
|
563
|
+
...result,
|
|
564
|
+
message: `Embedded ${result.embedded} out of ${result.processed} memories`,
|
|
565
|
+
};
|
|
566
|
+
}
|
|
567
|
+
// Just get stats
|
|
568
|
+
const stats = await this.searchService.getEmbeddingStats();
|
|
569
|
+
return {
|
|
570
|
+
success: true,
|
|
571
|
+
...stats,
|
|
572
|
+
message: `${stats.coverage}% embedding coverage`,
|
|
573
|
+
};
|
|
574
|
+
}
|
|
575
|
+
default:
|
|
576
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
/**
|
|
580
|
+
* Start the MCP server
|
|
581
|
+
*/
|
|
582
|
+
async start() {
|
|
583
|
+
await this.init();
|
|
584
|
+
const transport = new StdioServerTransport();
|
|
585
|
+
await this.server.connect(transport);
|
|
586
|
+
console.error('MetaNautical Memory MCP Server running on stdio');
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
// =============================================================================
|
|
590
|
+
// STANDALONE EXECUTION
|
|
591
|
+
// =============================================================================
|
|
592
|
+
export async function startMCPServer() {
|
|
593
|
+
const server = new MemoryMCPServer();
|
|
594
|
+
await server.start();
|
|
595
|
+
}
|
|
596
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
597
|
+
startMCPServer().catch(console.error);
|
|
598
|
+
}
|
|
599
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding Service
|
|
3
|
+
*
|
|
4
|
+
* Generates embeddings using OpenAI or Gemini APIs.
|
|
5
|
+
*/
|
|
6
|
+
export interface EmbeddingServiceConfig {
|
|
7
|
+
providers: ('openai' | 'gemini')[];
|
|
8
|
+
openaiApiKey?: string;
|
|
9
|
+
geminiApiKey?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare class EmbeddingService {
|
|
12
|
+
private config;
|
|
13
|
+
constructor(config?: Partial<EmbeddingServiceConfig>);
|
|
14
|
+
/**
|
|
15
|
+
* Generate embedding for text
|
|
16
|
+
*/
|
|
17
|
+
embed(text: string): Promise<number[]>;
|
|
18
|
+
/**
|
|
19
|
+
* Generate embeddings for multiple texts
|
|
20
|
+
*/
|
|
21
|
+
embedBatch(texts: string[]): Promise<number[][]>;
|
|
22
|
+
/**
|
|
23
|
+
* OpenAI embedding
|
|
24
|
+
*/
|
|
25
|
+
private embedWithOpenAI;
|
|
26
|
+
/**
|
|
27
|
+
* Gemini embedding
|
|
28
|
+
*/
|
|
29
|
+
private embedWithGemini;
|
|
30
|
+
/**
|
|
31
|
+
* Get current provider info
|
|
32
|
+
*/
|
|
33
|
+
getProviderInfo(): {
|
|
34
|
+
provider: string;
|
|
35
|
+
dimension: number;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=embeddings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../src/registry/embeddings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,CAAC,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAA;IAClC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAMD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAwB;gBAE1B,MAAM,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC;IAQpD;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkB5C;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAmBtD;;OAEG;YACW,eAAe;IAuB7B;;OAEG;YACW,eAAe;IAqB7B;;OAEG;IACH,eAAe,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;CAS3D"}
|