claude-self-reflect 1.2.0 → 1.3.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.
@@ -95,10 +95,60 @@ You have access to two tools:
95
95
  - Use semantic queries for best results
96
96
  - Can filter by project or search across all projects
97
97
  - Adjustable similarity threshold for precision
98
+ - Set `useDecay` to true/false to control time-based relevance
98
99
 
99
100
  2. **store_reflection** - Save important insights
100
101
  - Tag with relevant keywords
101
102
  - Include context about why it's important
102
103
  - Make it findable for future searches
103
104
 
105
+ ## Understanding Score Thresholds
106
+
107
+ When using `reflect_on_past`, understanding score ranges is crucial:
108
+
109
+ ### Typical Score Ranges
110
+ - **0.0 - 0.2**: Very low similarity, rarely useful
111
+ - **0.2 - 0.4**: Moderate similarity, often contains relevant results
112
+ - **0.4 - 0.6**: Good similarity, usually highly relevant
113
+ - **0.6 - 0.8**: Strong similarity, very relevant matches
114
+ - **0.8 - 1.0**: Excellent match, nearly identical content
115
+
116
+ ### Important Score Insights
117
+ - Most semantic searches return scores between 0.2 and 0.5
118
+ - Setting minScore to 0.5 often filters out all results
119
+ - Start with minScore=0 to see all results, then adjust
120
+ - With memory decay enabled, scores increase by ~68% (e.g., 0.36 → 0.60)
121
+
122
+ ## MCP Troubleshooting Guide
123
+
124
+ If the MCP tools aren't working, here's what you need to know:
125
+
126
+ ### Common Issues and Solutions
127
+
128
+ 1. **Tools Not Accessible via Standard Format**
129
+ - Issue: `mcp__server__tool` format may not work
130
+ - Solution: Use direct format: `mcp__claude-self-reflection__reflect_on_past`
131
+ - The exact tool names are: `reflect_on_past` and `store_reflection`
132
+
133
+ 2. **Environment Variables Not Loading**
134
+ - The MCP server runs via `run-mcp.sh` which sources the `.env` file
135
+ - Key variables: `ENABLE_MEMORY_DECAY`, `DECAY_WEIGHT`, `DECAY_SCALE_DAYS`
136
+ - These control memory decay behavior
137
+
138
+ 3. **Changes Not Taking Effect**
139
+ - After modifying TypeScript files, run `npm run build`
140
+ - Remove and re-add the MCP server in Claude
141
+ - Use: `claude mcp remove claude-self-reflection`
142
+ - Then: `claude mcp add claude-self-reflection /path/to/run-mcp.sh`
143
+
144
+ 4. **Debugging MCP Connection**
145
+ - Check if server is connected: `claude mcp list`
146
+ - Look for: `claude-self-reflection: ✓ Connected`
147
+ - If failed, check logs for error details
148
+
149
+ ### Memory Decay Configuration
150
+ - **ENABLE_MEMORY_DECAY**: Set to `true` to enable time-based relevance
151
+ - **DECAY_WEIGHT**: 0.3 means 30% weight on recency (0-1 range)
152
+ - **DECAY_SCALE_DAYS**: 90 means 90-day half-life for memory fade
153
+
104
154
  Remember: You're not just a search tool - you're a memory assistant that helps maintain continuity and context across all Claude conversations.
package/dist/index.js CHANGED
@@ -5,6 +5,14 @@ import { CallToolRequestSchema, ErrorCode, ListToolsRequestSchema, McpError, } f
5
5
  import { QdrantClient } from '@qdrant/js-client-rest';
6
6
  import { createEmbeddingService } from './embeddings.js';
7
7
  import { ProjectIsolationManager } from './project-isolation.js';
8
+ import * as dotenv from 'dotenv';
9
+ import * as path from 'path';
10
+ import { fileURLToPath } from 'url';
11
+ // Get __dirname equivalent for ES modules
12
+ const __filename = fileURLToPath(import.meta.url);
13
+ const __dirname = path.dirname(__filename);
14
+ // Load environment variables from parent directory
15
+ dotenv.config({ path: path.join(__dirname, '../../.env') });
8
16
  const QDRANT_URL = process.env.QDRANT_URL || 'http://localhost:6333';
9
17
  const COLLECTION_NAME = process.env.COLLECTION_NAME || 'conversations';
10
18
  const OPENAI_API_KEY = process.env.OPENAI_API_KEY;
@@ -12,6 +20,14 @@ const VOYAGE_API_KEY = process.env.VOYAGE_KEY || process.env['VOYAGE_KEY-2'];
12
20
  const PREFER_LOCAL_EMBEDDINGS = process.env.PREFER_LOCAL_EMBEDDINGS === 'true';
13
21
  const ISOLATION_MODE = process.env.ISOLATION_MODE || 'hybrid';
14
22
  const ALLOW_CROSS_PROJECT = process.env.ALLOW_CROSS_PROJECT === 'true';
23
+ const ENABLE_MEMORY_DECAY = process.env.ENABLE_MEMORY_DECAY === 'true';
24
+ const DECAY_WEIGHT = parseFloat(process.env.DECAY_WEIGHT || '0.3');
25
+ const DECAY_SCALE_DAYS = parseFloat(process.env.DECAY_SCALE_DAYS || '90');
26
+ // Debug: Log environment variables on startup
27
+ console.error('🚀 MCP Server starting with environment:');
28
+ console.error(` - ENABLE_MEMORY_DECAY: ${ENABLE_MEMORY_DECAY} (from env: ${process.env.ENABLE_MEMORY_DECAY})`);
29
+ console.error(` - DECAY_WEIGHT: ${DECAY_WEIGHT} (from env: ${process.env.DECAY_WEIGHT})`);
30
+ console.error(` - DECAY_SCALE_DAYS: ${DECAY_SCALE_DAYS} (from env: ${process.env.DECAY_SCALE_DAYS})`);
15
31
  class SelfReflectionServer {
16
32
  server;
17
33
  qdrantClient;
@@ -89,6 +105,10 @@ class SelfReflectionServer {
89
105
  description: 'Minimum similarity score (0-1, default: 0.7)',
90
106
  default: 0.7,
91
107
  },
108
+ useDecay: {
109
+ type: 'boolean',
110
+ description: 'Apply time-based decay to prioritize recent memories (default: uses environment setting)',
111
+ },
92
112
  },
93
113
  required: ['query'],
94
114
  },
@@ -137,7 +157,24 @@ class SelfReflectionServer {
137
157
  }
138
158
  }
139
159
  async handleReflectOnPast(args) {
140
- const { query, limit = 5, project, minScore = 0.7, crossProject = false } = args;
160
+ const { query, limit = 5, project, minScore = 0.7, crossProject = false, useDecay } = args;
161
+ const shouldUseDecay = useDecay !== undefined ? useDecay : ENABLE_MEMORY_DECAY;
162
+ // Log debug info but don't return early
163
+ console.error(`🔍 DEBUG: MCP handleReflectOnPast called!
164
+ - query: "${query}"
165
+ - useDecay: ${useDecay} (type: ${typeof useDecay})
166
+ - shouldUseDecay: ${shouldUseDecay}
167
+ - ENABLE_MEMORY_DECAY: ${ENABLE_MEMORY_DECAY}
168
+ - DECAY_WEIGHT: ${DECAY_WEIGHT}
169
+ - DECAY_SCALE_DAYS: ${DECAY_SCALE_DAYS}
170
+ - minScore: ${minScore}`);
171
+ // Extra debug for decay path
172
+ if (shouldUseDecay) {
173
+ console.error(`🔄 DECAY PATH SHOULD BE TAKEN - shouldUseDecay is true`);
174
+ }
175
+ else {
176
+ console.error(`❌ DECAY PATH NOT TAKEN - shouldUseDecay is false`);
177
+ }
141
178
  try {
142
179
  // Initialize if not already done
143
180
  if (!this.embeddingService) {
@@ -162,15 +199,97 @@ class SelfReflectionServer {
162
199
  };
163
200
  }
164
201
  console.error(`Searching across ${voyageCollections.length} Voyage collections: ${voyageCollections.slice(0, 3).join(', ')}...`);
202
+ if (voyageCollections.length === 0) {
203
+ console.error(`⚠️ WARNING: No Voyage collections found!`);
204
+ return {
205
+ content: [{
206
+ type: 'text',
207
+ text: 'No conversation collections found. Please import conversations first.'
208
+ }]
209
+ };
210
+ }
165
211
  // Search across multiple collections
166
212
  const searchPromises = voyageCollections.map(async (collectionName) => {
167
213
  try {
168
- const searchResponse = await this.qdrantClient.search(collectionName, {
169
- vector: queryEmbedding,
170
- limit: Math.ceil(limit * 1.5), // Get extra results per collection
171
- score_threshold: minScore,
172
- with_payload: true,
173
- });
214
+ let searchResponse;
215
+ if (shouldUseDecay) {
216
+ console.error(`🔄 DECAY MODE ACTIVE for collection ${collectionName}`);
217
+ console.error(` - minScore parameter: ${minScore} (will be ignored for initial search)`);
218
+ console.error(` - DECAY_WEIGHT: ${DECAY_WEIGHT}`);
219
+ console.error(` - DECAY_SCALE_DAYS: ${DECAY_SCALE_DAYS}`);
220
+ // IMPORTANT: No score_threshold for decay mode - we need all results to apply decay
221
+ searchResponse = await this.qdrantClient.search(collectionName, {
222
+ vector: queryEmbedding,
223
+ limit: Math.ceil(limit * 3), // Get more candidates for decay filtering
224
+ // NO score_threshold - we'll filter after decay is applied
225
+ with_payload: true,
226
+ });
227
+ console.error(` - Initial results from ${collectionName}: ${searchResponse.length} items`);
228
+ if (searchResponse.length > 0) {
229
+ console.error(` - Score range: ${searchResponse[searchResponse.length - 1].score.toFixed(3)} to ${searchResponse[0].score.toFixed(3)}`);
230
+ }
231
+ // Apply decay scoring with proper formula
232
+ const now = Date.now();
233
+ const scaleMs = DECAY_SCALE_DAYS * 24 * 60 * 60 * 1000;
234
+ try {
235
+ searchResponse = searchResponse.map((point, index) => {
236
+ let ageMs = 0;
237
+ let originalScore = point.score;
238
+ try {
239
+ if (point.payload?.timestamp) {
240
+ const timestamp = new Date(point.payload.timestamp).getTime();
241
+ if (!isNaN(timestamp)) {
242
+ ageMs = now - timestamp;
243
+ }
244
+ else {
245
+ console.error(` - Invalid timestamp for point ${point.id}: ${point.payload.timestamp}`);
246
+ }
247
+ }
248
+ // Calculate exponential decay factor (newer = higher factor)
249
+ const decayFactor = Math.exp(-ageMs / scaleMs);
250
+ // Apply decay formula: base_score + decay_weight * decay_factor
251
+ const adjustedScore = originalScore + (DECAY_WEIGHT * decayFactor);
252
+ if (index < 3) { // Log first 3 items for debugging
253
+ console.error(` Decay calculation for item ${index + 1}:`);
254
+ console.error(` - timestamp: ${point.payload?.timestamp || 'missing'}`);
255
+ console.error(` - age: ${(ageMs / 86400000).toFixed(1)} days`);
256
+ console.error(` - originalScore: ${originalScore.toFixed(3)}`);
257
+ console.error(` - decayFactor: ${decayFactor.toFixed(4)}`);
258
+ console.error(` - adjustedScore: ${adjustedScore.toFixed(3)} (boost: +${(adjustedScore - originalScore).toFixed(3)})`);
259
+ }
260
+ return {
261
+ ...point,
262
+ score: adjustedScore
263
+ };
264
+ }
265
+ catch (decayError) {
266
+ console.error(` Error calculating decay for point ${point.id}:`, decayError);
267
+ // Return original point with original score on error
268
+ return point;
269
+ }
270
+ });
271
+ }
272
+ catch (mapError) {
273
+ console.error(` Fatal error during decay calculation:`, mapError);
274
+ // Fall back to original search results if decay fails completely
275
+ searchResponse = searchResponse;
276
+ }
277
+ // Apply filtering and sorting
278
+ searchResponse = searchResponse
279
+ .filter(point => point.score >= minScore) // Apply minScore filter AFTER decay
280
+ .sort((a, b) => b.score - a.score)
281
+ .slice(0, limit);
282
+ console.error(` - After decay and filtering (>= ${minScore}): ${searchResponse.length} results`);
283
+ }
284
+ else {
285
+ // Standard search without decay
286
+ searchResponse = await this.qdrantClient.search(collectionName, {
287
+ vector: queryEmbedding,
288
+ limit: Math.ceil(limit * 1.5), // Get extra results per collection
289
+ score_threshold: minScore,
290
+ with_payload: true,
291
+ });
292
+ }
174
293
  if (searchResponse.length > 0) {
175
294
  console.error(`Collection ${collectionName}: Found ${searchResponse.length} results`);
176
295
  }
@@ -239,11 +358,24 @@ class SelfReflectionServer {
239
358
  .slice(0, limit);
240
359
  }
241
360
  if (results.length === 0) {
361
+ // For debugging, let's check what collections we have and what the search is actually doing
362
+ const voyageCollections = await this.getVoyageCollections();
242
363
  return {
243
364
  content: [
244
365
  {
245
366
  type: 'text',
246
- text: `No conversations found matching "${query}". Try different keywords or check if conversations have been imported.`,
367
+ text: `🔍 DECAY DEBUG: No results for "${query}"
368
+
369
+ [DEBUG INFO FROM MEMENTO STACK MCP]
370
+ - useDecay param: ${useDecay} (type: ${typeof useDecay})
371
+ - shouldUseDecay: ${shouldUseDecay}
372
+ - minScore: ${minScore}
373
+ - embeddingService exists: ${!!this.embeddingService}
374
+ - ENABLE_MEMORY_DECAY env: ${ENABLE_MEMORY_DECAY}
375
+ - DECAY_WEIGHT env: ${DECAY_WEIGHT}
376
+ - collections found: ${voyageCollections.length}
377
+ - first 3: ${voyageCollections.slice(0, 3).join(', ')}
378
+ - MODE: ${shouldUseDecay ? '🔄 DECAY ACTIVE' : '📊 STANDARD SEARCH'}`,
247
379
  },
248
380
  ],
249
381
  };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-self-reflect",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "Give Claude perfect memory of all your conversations - Semantic search across your entire Claude Desktop history",
5
5
  "keywords": [
6
6
  "claude",
@@ -56,6 +56,7 @@
56
56
  "dependencies": {
57
57
  "@modelcontextprotocol/sdk": "^0.5.0",
58
58
  "@qdrant/js-client-rest": "^1.7.0",
59
+ "dotenv": "^17.2.1",
59
60
  "node-fetch": "^3.3.2"
60
61
  },
61
62
  "devDependencies": {
@@ -322,6 +322,55 @@ async function setupPython() {
322
322
  }
323
323
  }
324
324
 
325
+ async function configureMemoryDecay() {
326
+ header('Configure Memory Decay (Optional)');
327
+
328
+ console.log('Memory Decay helps prioritize recent conversations over older ones.\n');
329
+ console.log('When enabled, search results will favor more recent memories while');
330
+ console.log('still including relevant older content.\n');
331
+
332
+ const enable = await question('Enable memory decay? (y/n) [default: n]: ');
333
+
334
+ if (enable.toLowerCase() === 'y') {
335
+ console.log('\nDecay Configuration:');
336
+ console.log('1. Light decay (30 days) - Minimal recency bias');
337
+ console.log('2. Medium decay (90 days) - Balanced approach (Recommended)');
338
+ console.log('3. Strong decay (180 days) - Strong recency preference');
339
+ console.log('4. Custom configuration\n');
340
+
341
+ const choice = await question('Choose decay configuration (1-4) [default: 2]: ') || '2';
342
+
343
+ let weight = 0.3;
344
+ let scaleDays = 90;
345
+
346
+ switch (choice) {
347
+ case '1':
348
+ weight = 0.1;
349
+ scaleDays = 30;
350
+ break;
351
+ case '2':
352
+ weight = 0.3;
353
+ scaleDays = 90;
354
+ break;
355
+ case '3':
356
+ weight = 0.5;
357
+ scaleDays = 180;
358
+ break;
359
+ case '4':
360
+ const customWeight = await question('Decay weight (0.1-1.0) [default: 0.3]: ');
361
+ const customScale = await question('Decay scale in days [default: 90]: ');
362
+ weight = parseFloat(customWeight) || 0.3;
363
+ scaleDays = parseInt(customScale) || 90;
364
+ break;
365
+ }
366
+
367
+ success(`Memory decay configured: weight=${weight}, scale=${scaleDays} days`);
368
+ return { enabled: true, weight, scaleDays };
369
+ }
370
+
371
+ return { enabled: false };
372
+ }
373
+
325
374
  async function saveConfiguration(config) {
326
375
  const envPath = join(homedir(), '.claude-self-reflect', '.env');
327
376
  const envDir = dirname(envPath);
@@ -345,6 +394,14 @@ async function saveConfiguration(config) {
345
394
 
346
395
  envContent += 'QDRANT_URL=http://localhost:6333\n';
347
396
 
397
+ // Memory decay configuration
398
+ envContent += '\n# Memory Decay Configuration\n';
399
+ envContent += `ENABLE_MEMORY_DECAY=${config.memoryDecay?.enabled ? 'true' : 'false'}\n`;
400
+ if (config.memoryDecay?.enabled) {
401
+ envContent += `DECAY_WEIGHT=${config.memoryDecay.weight}\n`;
402
+ envContent += `DECAY_SCALE_DAYS=${config.memoryDecay.scaleDays}\n`;
403
+ }
404
+
348
405
  writeFileSync(envPath, envContent);
349
406
  success(`Configuration saved to ${envPath}`);
350
407
  }
@@ -394,19 +451,28 @@ async function runImport(pythonConfig, provider, apiKey) {
394
451
  });
395
452
  }
396
453
 
397
- async function setupClaudeDesktop() {
454
+ async function setupClaudeDesktop(memoryDecayConfig) {
398
455
  header('Configure Claude Desktop (Optional)');
399
456
 
400
457
  console.log('To use this with Claude Desktop, add the following to your config:\n');
401
458
 
459
+ const env = {
460
+ QDRANT_URL: 'http://localhost:6333'
461
+ };
462
+
463
+ // Add memory decay configuration if enabled
464
+ if (memoryDecayConfig?.enabled) {
465
+ env.ENABLE_MEMORY_DECAY = 'true';
466
+ env.DECAY_WEIGHT = memoryDecayConfig.weight.toString();
467
+ env.DECAY_SCALE_DAYS = memoryDecayConfig.scaleDays.toString();
468
+ }
469
+
402
470
  const config = {
403
471
  mcpServers: {
404
472
  'claude-self-reflect': {
405
473
  command: 'npx',
406
474
  args: ['claude-self-reflect'],
407
- env: {
408
- QDRANT_URL: 'http://localhost:6333'
409
- }
475
+ env
410
476
  }
411
477
  }
412
478
  };
@@ -485,10 +551,13 @@ async function main() {
485
551
  process.exit(1);
486
552
  }
487
553
 
488
- // Step 5: Save configuration
489
- await saveConfiguration({ provider, apiKey });
554
+ // Step 5: Configure memory decay
555
+ const memoryDecay = await configureMemoryDecay();
556
+
557
+ // Step 6: Save configuration
558
+ await saveConfiguration({ provider, apiKey, memoryDecay });
490
559
 
491
- // Step 6: Run import
560
+ // Step 7: Run import
492
561
  if (apiKey || provider === 'local') {
493
562
  const runImportNow = await question('\nWould you like to import your conversation history now? (y/n): ');
494
563
  if (runImportNow.toLowerCase() === 'y') {
@@ -496,8 +565,8 @@ async function main() {
496
565
  }
497
566
  }
498
567
 
499
- // Step 7: Configure Claude Desktop
500
- await setupClaudeDesktop();
568
+ // Step 8: Configure Claude Desktop
569
+ await setupClaudeDesktop(memoryDecay);
501
570
 
502
571
  // Done!
503
572
  header('✨ Setup Complete!');
package/src/index.ts CHANGED
@@ -10,6 +10,16 @@ import {
10
10
  import { QdrantClient } from '@qdrant/js-client-rest';
11
11
  import { createEmbeddingService, detectEmbeddingModel, EmbeddingService } from './embeddings.js';
12
12
  import { ProjectIsolationManager, ProjectIsolationConfig, DEFAULT_ISOLATION_CONFIG } from './project-isolation.js';
13
+ import * as dotenv from 'dotenv';
14
+ import * as path from 'path';
15
+ import { fileURLToPath } from 'url';
16
+
17
+ // Get __dirname equivalent for ES modules
18
+ const __filename = fileURLToPath(import.meta.url);
19
+ const __dirname = path.dirname(__filename);
20
+
21
+ // Load environment variables from parent directory
22
+ dotenv.config({ path: path.join(__dirname, '../../.env') });
13
23
 
14
24
  const QDRANT_URL = process.env.QDRANT_URL || 'http://localhost:6333';
15
25
  const COLLECTION_NAME = process.env.COLLECTION_NAME || 'conversations';
@@ -18,6 +28,15 @@ const VOYAGE_API_KEY = process.env.VOYAGE_KEY || process.env['VOYAGE_KEY-2'];
18
28
  const PREFER_LOCAL_EMBEDDINGS = process.env.PREFER_LOCAL_EMBEDDINGS === 'true';
19
29
  const ISOLATION_MODE = process.env.ISOLATION_MODE || 'hybrid';
20
30
  const ALLOW_CROSS_PROJECT = process.env.ALLOW_CROSS_PROJECT === 'true';
31
+ const ENABLE_MEMORY_DECAY = process.env.ENABLE_MEMORY_DECAY === 'true';
32
+ const DECAY_WEIGHT = parseFloat(process.env.DECAY_WEIGHT || '0.3');
33
+ const DECAY_SCALE_DAYS = parseFloat(process.env.DECAY_SCALE_DAYS || '90');
34
+
35
+ // Debug: Log environment variables on startup
36
+ console.error('🚀 MCP Server starting with environment:');
37
+ console.error(` - ENABLE_MEMORY_DECAY: ${ENABLE_MEMORY_DECAY} (from env: ${process.env.ENABLE_MEMORY_DECAY})`);
38
+ console.error(` - DECAY_WEIGHT: ${DECAY_WEIGHT} (from env: ${process.env.DECAY_WEIGHT})`);
39
+ console.error(` - DECAY_SCALE_DAYS: ${DECAY_SCALE_DAYS} (from env: ${process.env.DECAY_SCALE_DAYS})`);
21
40
 
22
41
  interface SearchResult {
23
42
  id: string;
@@ -115,6 +134,10 @@ class SelfReflectionServer {
115
134
  description: 'Minimum similarity score (0-1, default: 0.7)',
116
135
  default: 0.7,
117
136
  },
137
+ useDecay: {
138
+ type: 'boolean',
139
+ description: 'Apply time-based decay to prioritize recent memories (default: uses environment setting)',
140
+ },
118
141
  },
119
142
  required: ['query'],
120
143
  },
@@ -168,7 +191,25 @@ class SelfReflectionServer {
168
191
  }
169
192
 
170
193
  private async handleReflectOnPast(args: any) {
171
- const { query, limit = 5, project, minScore = 0.7, crossProject = false } = args;
194
+ const { query, limit = 5, project, minScore = 0.7, crossProject = false, useDecay } = args;
195
+ const shouldUseDecay = useDecay !== undefined ? useDecay : ENABLE_MEMORY_DECAY;
196
+
197
+ // Log debug info but don't return early
198
+ console.error(`🔍 DEBUG: MCP handleReflectOnPast called!
199
+ - query: "${query}"
200
+ - useDecay: ${useDecay} (type: ${typeof useDecay})
201
+ - shouldUseDecay: ${shouldUseDecay}
202
+ - ENABLE_MEMORY_DECAY: ${ENABLE_MEMORY_DECAY}
203
+ - DECAY_WEIGHT: ${DECAY_WEIGHT}
204
+ - DECAY_SCALE_DAYS: ${DECAY_SCALE_DAYS}
205
+ - minScore: ${minScore}`);
206
+
207
+ // Extra debug for decay path
208
+ if (shouldUseDecay) {
209
+ console.error(`🔄 DECAY PATH SHOULD BE TAKEN - shouldUseDecay is true`);
210
+ } else {
211
+ console.error(`❌ DECAY PATH NOT TAKEN - shouldUseDecay is false`);
212
+ }
172
213
 
173
214
  try {
174
215
  // Initialize if not already done
@@ -199,16 +240,109 @@ class SelfReflectionServer {
199
240
  }
200
241
 
201
242
  console.error(`Searching across ${voyageCollections.length} Voyage collections: ${voyageCollections.slice(0, 3).join(', ')}...`);
243
+
244
+ if (voyageCollections.length === 0) {
245
+ console.error(`⚠️ WARNING: No Voyage collections found!`);
246
+ return {
247
+ content: [{
248
+ type: 'text',
249
+ text: 'No conversation collections found. Please import conversations first.'
250
+ }]
251
+ };
252
+ }
253
+
202
254
 
203
255
  // Search across multiple collections
204
256
  const searchPromises = voyageCollections.map(async (collectionName) => {
205
257
  try {
206
- const searchResponse = await this.qdrantClient.search(collectionName, {
207
- vector: queryEmbedding,
208
- limit: Math.ceil(limit * 1.5), // Get extra results per collection
209
- score_threshold: minScore,
210
- with_payload: true,
211
- });
258
+ let searchResponse;
259
+
260
+ if (shouldUseDecay) {
261
+ console.error(`🔄 DECAY MODE ACTIVE for collection ${collectionName}`);
262
+ console.error(` - minScore parameter: ${minScore} (will be ignored for initial search)`);
263
+ console.error(` - DECAY_WEIGHT: ${DECAY_WEIGHT}`);
264
+ console.error(` - DECAY_SCALE_DAYS: ${DECAY_SCALE_DAYS}`);
265
+
266
+ // IMPORTANT: No score_threshold for decay mode - we need all results to apply decay
267
+ searchResponse = await this.qdrantClient.search(collectionName, {
268
+ vector: queryEmbedding,
269
+ limit: Math.ceil(limit * 3), // Get more candidates for decay filtering
270
+ // NO score_threshold - we'll filter after decay is applied
271
+ with_payload: true,
272
+ });
273
+
274
+ console.error(` - Initial results from ${collectionName}: ${searchResponse.length} items`);
275
+ if (searchResponse.length > 0) {
276
+ console.error(` - Score range: ${searchResponse[searchResponse.length - 1].score.toFixed(3)} to ${searchResponse[0].score.toFixed(3)}`);
277
+ }
278
+
279
+ // Apply decay scoring with proper formula
280
+ const now = Date.now();
281
+ const scaleMs = DECAY_SCALE_DAYS * 24 * 60 * 60 * 1000;
282
+
283
+ try {
284
+ searchResponse = searchResponse.map((point: any, index: number) => {
285
+ let ageMs = 0;
286
+ let originalScore = point.score;
287
+
288
+ try {
289
+ if (point.payload?.timestamp) {
290
+ const timestamp = new Date(point.payload.timestamp as string).getTime();
291
+ if (!isNaN(timestamp)) {
292
+ ageMs = now - timestamp;
293
+ } else {
294
+ console.error(` - Invalid timestamp for point ${point.id}: ${point.payload.timestamp}`);
295
+ }
296
+ }
297
+
298
+ // Calculate exponential decay factor (newer = higher factor)
299
+ const decayFactor = Math.exp(-ageMs / scaleMs);
300
+
301
+ // Apply decay formula: base_score + decay_weight * decay_factor
302
+ const adjustedScore = originalScore + (DECAY_WEIGHT * decayFactor);
303
+
304
+ if (index < 3) { // Log first 3 items for debugging
305
+ console.error(` Decay calculation for item ${index + 1}:`);
306
+ console.error(` - timestamp: ${point.payload?.timestamp || 'missing'}`);
307
+ console.error(` - age: ${(ageMs / 86400000).toFixed(1)} days`);
308
+ console.error(` - originalScore: ${originalScore.toFixed(3)}`);
309
+ console.error(` - decayFactor: ${decayFactor.toFixed(4)}`);
310
+ console.error(` - adjustedScore: ${adjustedScore.toFixed(3)} (boost: +${(adjustedScore - originalScore).toFixed(3)})`);
311
+ }
312
+
313
+ return {
314
+ ...point,
315
+ score: adjustedScore
316
+ };
317
+ } catch (decayError) {
318
+ console.error(` Error calculating decay for point ${point.id}:`, decayError);
319
+ // Return original point with original score on error
320
+ return point;
321
+ }
322
+ });
323
+ } catch (mapError) {
324
+ console.error(` Fatal error during decay calculation:`, mapError);
325
+ // Fall back to original search results if decay fails completely
326
+ searchResponse = searchResponse;
327
+ }
328
+
329
+ // Apply filtering and sorting
330
+ searchResponse = searchResponse
331
+ .filter(point => point.score >= minScore) // Apply minScore filter AFTER decay
332
+ .sort((a: any, b: any) => b.score - a.score)
333
+ .slice(0, limit);
334
+
335
+ console.error(` - After decay and filtering (>= ${minScore}): ${searchResponse.length} results`);
336
+
337
+ } else {
338
+ // Standard search without decay
339
+ searchResponse = await this.qdrantClient.search(collectionName, {
340
+ vector: queryEmbedding,
341
+ limit: Math.ceil(limit * 1.5), // Get extra results per collection
342
+ score_threshold: minScore,
343
+ with_payload: true,
344
+ });
345
+ }
212
346
 
213
347
  if (searchResponse.length > 0) {
214
348
  console.error(`Collection ${collectionName}: Found ${searchResponse.length} results`);
@@ -285,11 +419,24 @@ class SelfReflectionServer {
285
419
  }
286
420
 
287
421
  if (results.length === 0) {
422
+ // For debugging, let's check what collections we have and what the search is actually doing
423
+ const voyageCollections = await this.getVoyageCollections();
288
424
  return {
289
425
  content: [
290
426
  {
291
427
  type: 'text',
292
- text: `No conversations found matching "${query}". Try different keywords or check if conversations have been imported.`,
428
+ text: `🔍 DECAY DEBUG: No results for "${query}"
429
+
430
+ [DEBUG INFO FROM MEMENTO STACK MCP]
431
+ - useDecay param: ${useDecay} (type: ${typeof useDecay})
432
+ - shouldUseDecay: ${shouldUseDecay}
433
+ - minScore: ${minScore}
434
+ - embeddingService exists: ${!!this.embeddingService}
435
+ - ENABLE_MEMORY_DECAY env: ${ENABLE_MEMORY_DECAY}
436
+ - DECAY_WEIGHT env: ${DECAY_WEIGHT}
437
+ - collections found: ${voyageCollections.length}
438
+ - first 3: ${voyageCollections.slice(0, 3).join(', ')}
439
+ - MODE: ${shouldUseDecay ? '🔄 DECAY ACTIVE' : '📊 STANDARD SEARCH'}`,
293
440
  },
294
441
  ],
295
442
  };