claude-self-reflect 2.4.9 → 2.4.10

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 CHANGED
@@ -26,6 +26,15 @@ Your conversations become searchable. Your decisions stay remembered. Your conte
26
26
  - **Node.js** 16+ (for the setup wizard)
27
27
  - **Claude Desktop** app
28
28
 
29
+ ## System Requirements
30
+
31
+ ### Memory
32
+ - **Docker Memory**: 2GB minimum (4GB recommended for initial setup)
33
+ - **First Import**: May take 2-7 minutes to process all conversations
34
+ - **Subsequent Imports**: <60 seconds (only processes new/changed files)
35
+
36
+ 💡 **First-Time User Note**: The initial import processes your entire conversation history. This is a one-time operation. After that, the system only imports new conversations, making it much faster and using less memory.
37
+
29
38
  ## Install
30
39
 
31
40
  ### Quick Start (Local Mode - Default)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-self-reflect",
3
- "version": "2.4.9",
3
+ "version": "2.4.10",
4
4
  "description": "Give Claude perfect memory of all your conversations - Installation wizard for Python MCP server",
5
5
  "keywords": [
6
6
  "claude",
@@ -8,6 +8,7 @@ import sys
8
8
  import json
9
9
  import glob
10
10
  import hashlib
11
+ import gc
11
12
  from datetime import datetime
12
13
  from typing import List, Dict, Any
13
14
  import logging
@@ -29,7 +30,7 @@ from tenacity import (
29
30
  QDRANT_URL = os.getenv("QDRANT_URL", "http://localhost:6333")
30
31
  LOGS_DIR = os.getenv("LOGS_DIR", "/logs")
31
32
  STATE_FILE = os.getenv("STATE_FILE", "/config/imported-files.json")
32
- BATCH_SIZE = int(os.getenv("BATCH_SIZE", "100"))
33
+ BATCH_SIZE = int(os.getenv("BATCH_SIZE", "10")) # Reduced from 100 to prevent OOM
33
34
  PREFER_LOCAL_EMBEDDINGS = os.getenv("PREFER_LOCAL_EMBEDDINGS", "false").lower() == "true"
34
35
  VOYAGE_API_KEY = os.getenv("VOYAGE_KEY")
35
36
 
@@ -305,6 +306,12 @@ def import_project(project_path: Path, collection_name: str, state: dict) -> int
305
306
  # Update state for this file
306
307
  update_file_state(jsonl_file, state, file_chunks)
307
308
 
309
+ # Save state after each file to prevent loss on OOM
310
+ save_state(state)
311
+
312
+ # Force garbage collection to free memory
313
+ gc.collect()
314
+
308
315
  except Exception as e:
309
316
  logger.error(f"Failed to import {jsonl_file}: {e}")
310
317
  import traceback