claude-self-reflect 2.5.3 → 2.5.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 +2 -44
- package/mcp-server/pyproject.toml +2 -2
- package/mcp-server/src/server.py +8 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -93,49 +93,7 @@ Technical details exist. You don't need them to start.
|
|
|
93
93
|
|
|
94
94
|
Here's how your conversations get imported and prioritized:
|
|
95
95
|
|
|
96
|
-
|
|
97
|
-
flowchart TB
|
|
98
|
-
subgraph "Real-Time Import System"
|
|
99
|
-
NewFile([New/Modified<br/>Conversation]) --> Watcher{Streaming<br/>Watcher}
|
|
100
|
-
|
|
101
|
-
Watcher -->|Every 60s| Check[Check Files]
|
|
102
|
-
Check --> Priority{File Age?}
|
|
103
|
-
|
|
104
|
-
Priority -->|< 5 min| Hot[🔥 HOT<br/>2-sec mode]
|
|
105
|
-
Priority -->|< 24 hr| Warm[🌡️ WARM<br/>Normal]
|
|
106
|
-
Priority -->|> 24 hr| Cold[❄️ COLD<br/>Batch-5]
|
|
107
|
-
|
|
108
|
-
Hot --> FastMode[Fast Mode<br/>2-sec intervals<br/>Can interrupt]
|
|
109
|
-
Warm --> NormalMode[Normal Mode<br/>60-sec intervals]
|
|
110
|
-
Cold --> BatchMode[Batch Mode<br/>Max 5 files]
|
|
111
|
-
|
|
112
|
-
FastMode --> Import{Import<br/>Strategy}
|
|
113
|
-
NormalMode --> Import
|
|
114
|
-
BatchMode --> Import
|
|
115
|
-
|
|
116
|
-
Import -->|Never seen| Full[Baseline Import<br/>From start]
|
|
117
|
-
Import -->|Gap > 100 lines| Catchup[Catch-up Import<br/>From position]
|
|
118
|
-
Import -->|Small changes| Stream[Stream Import<br/>Continue]
|
|
119
|
-
|
|
120
|
-
Full --> Process[Process<br/>& Embed]
|
|
121
|
-
Catchup --> Process
|
|
122
|
-
Stream --> Process
|
|
123
|
-
|
|
124
|
-
Process --> Memory{Memory<br/>< 50MB?}
|
|
125
|
-
Memory -->|Yes| Store[(Qdrant<br/>Vector DB)]
|
|
126
|
-
Memory -->|No| GC[Garbage<br/>Collect]
|
|
127
|
-
|
|
128
|
-
GC --> Store
|
|
129
|
-
Store --> State[Update State]
|
|
130
|
-
State --> Wait[Wait for<br/>next cycle]
|
|
131
|
-
Wait --> Watcher
|
|
132
|
-
|
|
133
|
-
style Hot fill:#ff6b6b
|
|
134
|
-
style Warm fill:#ffd93d
|
|
135
|
-
style Cold fill:#6bcf7f
|
|
136
|
-
style FastMode stroke:#ff6b6b,stroke-width:3px
|
|
137
|
-
end
|
|
138
|
-
```
|
|
96
|
+

|
|
139
97
|
|
|
140
98
|
**The system intelligently prioritizes your conversations:**
|
|
141
99
|
- **🔥 HOT** (< 5 minutes): Switches to 2-second intervals for near real-time import
|
|
@@ -192,10 +150,10 @@ Recent conversations matter more. Old ones fade. Like your brain, but reliable.
|
|
|
192
150
|
|
|
193
151
|
## What's New
|
|
194
152
|
|
|
153
|
+
- **v2.5.3** - Streamlined README & import architecture diagram
|
|
195
154
|
- **v2.5.2** - State file compatibility fix
|
|
196
155
|
- **v2.4.5** - 10-40x performance boost
|
|
197
156
|
- **v2.4.3** - Project-scoped search
|
|
198
|
-
- **v2.3.7** - Local embeddings by default
|
|
199
157
|
|
|
200
158
|
[Full changelog](docs/release-history.md)
|
|
201
159
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "claude-self-reflect-mcp"
|
|
3
|
-
version = "2.5.
|
|
3
|
+
version = "2.5.5"
|
|
4
4
|
description = "MCP server for Claude self-reflection with memory decay"
|
|
5
5
|
# readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -12,7 +12,7 @@ dependencies = [
|
|
|
12
12
|
"qdrant-client>=1.7.0,<2.0.0",
|
|
13
13
|
"voyageai>=0.1.0,<1.0.0",
|
|
14
14
|
"python-dotenv>=1.0.0,<2.0.0",
|
|
15
|
-
"pydantic>=2.
|
|
15
|
+
"pydantic>=2.11.7,<3.0.0", # Updated for fastmcp 2.10.6 compatibility
|
|
16
16
|
"pydantic-settings>=2.0.0,<3.0.0",
|
|
17
17
|
"fastembed>=0.4.0,<1.0.0",
|
|
18
18
|
]
|
package/mcp-server/src/server.py
CHANGED
|
@@ -956,7 +956,14 @@ async def search_by_file(
|
|
|
956
956
|
files_analyzed = payload.get('files_analyzed', [])
|
|
957
957
|
files_edited = payload.get('files_edited', [])
|
|
958
958
|
|
|
959
|
-
|
|
959
|
+
# Check for exact match or if any file ends with the normalized path
|
|
960
|
+
file_match = False
|
|
961
|
+
for file in files_analyzed + files_edited:
|
|
962
|
+
if file == normalized_path or file.endswith('/' + normalized_path) or file.endswith('\\' + normalized_path):
|
|
963
|
+
file_match = True
|
|
964
|
+
break
|
|
965
|
+
|
|
966
|
+
if file_match:
|
|
960
967
|
all_results.append({
|
|
961
968
|
'score': 1.0, # File match is always 1.0
|
|
962
969
|
'payload': payload,
|