cursor-recursive-rag 0.2.0-alpha.2 → 0.2.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.
Files changed (210) hide show
  1. package/README.md +179 -203
  2. package/dist/adapters/llm/anthropic.d.ts +27 -0
  3. package/dist/adapters/llm/anthropic.d.ts.map +1 -0
  4. package/dist/adapters/llm/anthropic.js +287 -0
  5. package/dist/adapters/llm/anthropic.js.map +1 -0
  6. package/dist/adapters/llm/base.d.ts +62 -0
  7. package/dist/adapters/llm/base.d.ts.map +1 -0
  8. package/dist/adapters/llm/base.js +140 -0
  9. package/dist/adapters/llm/base.js.map +1 -0
  10. package/dist/adapters/llm/deepseek.d.ts +24 -0
  11. package/dist/adapters/llm/deepseek.d.ts.map +1 -0
  12. package/dist/adapters/llm/deepseek.js +228 -0
  13. package/dist/adapters/llm/deepseek.js.map +1 -0
  14. package/dist/adapters/llm/groq.d.ts +25 -0
  15. package/dist/adapters/llm/groq.d.ts.map +1 -0
  16. package/dist/adapters/llm/groq.js +265 -0
  17. package/dist/adapters/llm/groq.js.map +1 -0
  18. package/dist/adapters/llm/index.d.ts +62 -0
  19. package/dist/adapters/llm/index.d.ts.map +1 -0
  20. package/dist/adapters/llm/index.js +380 -0
  21. package/dist/adapters/llm/index.js.map +1 -0
  22. package/dist/adapters/llm/ollama.d.ts +23 -0
  23. package/dist/adapters/llm/ollama.d.ts.map +1 -0
  24. package/dist/adapters/llm/ollama.js +261 -0
  25. package/dist/adapters/llm/ollama.js.map +1 -0
  26. package/dist/adapters/llm/openai.d.ts +22 -0
  27. package/dist/adapters/llm/openai.d.ts.map +1 -0
  28. package/dist/adapters/llm/openai.js +232 -0
  29. package/dist/adapters/llm/openai.js.map +1 -0
  30. package/dist/adapters/llm/openrouter.d.ts +27 -0
  31. package/dist/adapters/llm/openrouter.d.ts.map +1 -0
  32. package/dist/adapters/llm/openrouter.js +305 -0
  33. package/dist/adapters/llm/openrouter.js.map +1 -0
  34. package/dist/adapters/vector/index.d.ts.map +1 -1
  35. package/dist/adapters/vector/index.js +8 -0
  36. package/dist/adapters/vector/index.js.map +1 -1
  37. package/dist/adapters/vector/redis-native.d.ts +35 -0
  38. package/dist/adapters/vector/redis-native.d.ts.map +1 -0
  39. package/dist/adapters/vector/redis-native.js +170 -0
  40. package/dist/adapters/vector/redis-native.js.map +1 -0
  41. package/dist/cli/commands/chat.d.ts +4 -0
  42. package/dist/cli/commands/chat.d.ts.map +1 -0
  43. package/dist/cli/commands/chat.js +374 -0
  44. package/dist/cli/commands/chat.js.map +1 -0
  45. package/dist/cli/commands/maintenance.d.ts +4 -0
  46. package/dist/cli/commands/maintenance.d.ts.map +1 -0
  47. package/dist/cli/commands/maintenance.js +237 -0
  48. package/dist/cli/commands/maintenance.js.map +1 -0
  49. package/dist/cli/commands/rules.d.ts +9 -0
  50. package/dist/cli/commands/rules.d.ts.map +1 -0
  51. package/dist/cli/commands/rules.js +639 -0
  52. package/dist/cli/commands/rules.js.map +1 -0
  53. package/dist/cli/commands/setup.js +5 -4
  54. package/dist/cli/commands/setup.js.map +1 -1
  55. package/dist/cli/index.js +6 -0
  56. package/dist/cli/index.js.map +1 -1
  57. package/dist/config/memoryConfig.d.ts +427 -0
  58. package/dist/config/memoryConfig.d.ts.map +1 -0
  59. package/dist/config/memoryConfig.js +258 -0
  60. package/dist/config/memoryConfig.js.map +1 -0
  61. package/dist/config/rulesConfig.d.ts +486 -0
  62. package/dist/config/rulesConfig.d.ts.map +1 -0
  63. package/dist/config/rulesConfig.js +345 -0
  64. package/dist/config/rulesConfig.js.map +1 -0
  65. package/dist/dashboard/coreTools.d.ts +14 -0
  66. package/dist/dashboard/coreTools.d.ts.map +1 -0
  67. package/dist/dashboard/coreTools.js +413 -0
  68. package/dist/dashboard/coreTools.js.map +1 -0
  69. package/dist/dashboard/public/index.html +1982 -13
  70. package/dist/dashboard/server.d.ts +1 -8
  71. package/dist/dashboard/server.d.ts.map +1 -1
  72. package/dist/dashboard/server.js +846 -13
  73. package/dist/dashboard/server.js.map +1 -1
  74. package/dist/dashboard/toolRegistry.d.ts +192 -0
  75. package/dist/dashboard/toolRegistry.d.ts.map +1 -0
  76. package/dist/dashboard/toolRegistry.js +322 -0
  77. package/dist/dashboard/toolRegistry.js.map +1 -0
  78. package/dist/proxy/index.d.ts +1 -1
  79. package/dist/proxy/index.d.ts.map +1 -1
  80. package/dist/proxy/index.js +9 -6
  81. package/dist/proxy/index.js.map +1 -1
  82. package/dist/server/index.js +21 -0
  83. package/dist/server/index.js.map +1 -1
  84. package/dist/server/tools/crawl.d.ts.map +1 -1
  85. package/dist/server/tools/crawl.js +8 -0
  86. package/dist/server/tools/crawl.js.map +1 -1
  87. package/dist/server/tools/index.d.ts.map +1 -1
  88. package/dist/server/tools/index.js +19 -1
  89. package/dist/server/tools/index.js.map +1 -1
  90. package/dist/server/tools/ingest.d.ts.map +1 -1
  91. package/dist/server/tools/ingest.js +5 -0
  92. package/dist/server/tools/ingest.js.map +1 -1
  93. package/dist/server/tools/memory.d.ts +250 -0
  94. package/dist/server/tools/memory.d.ts.map +1 -0
  95. package/dist/server/tools/memory.js +472 -0
  96. package/dist/server/tools/memory.js.map +1 -0
  97. package/dist/server/tools/recursive-query.d.ts.map +1 -1
  98. package/dist/server/tools/recursive-query.js +6 -0
  99. package/dist/server/tools/recursive-query.js.map +1 -1
  100. package/dist/server/tools/search.d.ts.map +1 -1
  101. package/dist/server/tools/search.js +6 -0
  102. package/dist/server/tools/search.js.map +1 -1
  103. package/dist/services/activity-log.d.ts +10 -0
  104. package/dist/services/activity-log.d.ts.map +1 -0
  105. package/dist/services/activity-log.js +53 -0
  106. package/dist/services/activity-log.js.map +1 -0
  107. package/dist/services/categoryManager.d.ts +110 -0
  108. package/dist/services/categoryManager.d.ts.map +1 -0
  109. package/dist/services/categoryManager.js +549 -0
  110. package/dist/services/categoryManager.js.map +1 -0
  111. package/dist/services/contextEnvironment.d.ts +206 -0
  112. package/dist/services/contextEnvironment.d.ts.map +1 -0
  113. package/dist/services/contextEnvironment.js +481 -0
  114. package/dist/services/contextEnvironment.js.map +1 -0
  115. package/dist/services/conversationProcessor.d.ts +99 -0
  116. package/dist/services/conversationProcessor.d.ts.map +1 -0
  117. package/dist/services/conversationProcessor.js +311 -0
  118. package/dist/services/conversationProcessor.js.map +1 -0
  119. package/dist/services/cursorChatReader.d.ts +129 -0
  120. package/dist/services/cursorChatReader.d.ts.map +1 -0
  121. package/dist/services/cursorChatReader.js +419 -0
  122. package/dist/services/cursorChatReader.js.map +1 -0
  123. package/dist/services/decayCalculator.d.ts +85 -0
  124. package/dist/services/decayCalculator.d.ts.map +1 -0
  125. package/dist/services/decayCalculator.js +182 -0
  126. package/dist/services/decayCalculator.js.map +1 -0
  127. package/dist/services/enhancedVectorStore.d.ts +102 -0
  128. package/dist/services/enhancedVectorStore.d.ts.map +1 -0
  129. package/dist/services/enhancedVectorStore.js +245 -0
  130. package/dist/services/enhancedVectorStore.js.map +1 -0
  131. package/dist/services/hybridScorer.d.ts +120 -0
  132. package/dist/services/hybridScorer.d.ts.map +1 -0
  133. package/dist/services/hybridScorer.js +334 -0
  134. package/dist/services/hybridScorer.js.map +1 -0
  135. package/dist/services/knowledgeExtractor.d.ts +45 -0
  136. package/dist/services/knowledgeExtractor.d.ts.map +1 -0
  137. package/dist/services/knowledgeExtractor.js +436 -0
  138. package/dist/services/knowledgeExtractor.js.map +1 -0
  139. package/dist/services/knowledgeStorage.d.ts +102 -0
  140. package/dist/services/knowledgeStorage.d.ts.map +1 -0
  141. package/dist/services/knowledgeStorage.js +383 -0
  142. package/dist/services/knowledgeStorage.js.map +1 -0
  143. package/dist/services/maintenanceScheduler.d.ts +89 -0
  144. package/dist/services/maintenanceScheduler.d.ts.map +1 -0
  145. package/dist/services/maintenanceScheduler.js +479 -0
  146. package/dist/services/maintenanceScheduler.js.map +1 -0
  147. package/dist/services/memoryMetadataStore.d.ts +62 -0
  148. package/dist/services/memoryMetadataStore.d.ts.map +1 -0
  149. package/dist/services/memoryMetadataStore.js +570 -0
  150. package/dist/services/memoryMetadataStore.js.map +1 -0
  151. package/dist/services/recursiveRetrieval.d.ts +122 -0
  152. package/dist/services/recursiveRetrieval.d.ts.map +1 -0
  153. package/dist/services/recursiveRetrieval.js +443 -0
  154. package/dist/services/recursiveRetrieval.js.map +1 -0
  155. package/dist/services/relationshipGraph.d.ts +77 -0
  156. package/dist/services/relationshipGraph.d.ts.map +1 -0
  157. package/dist/services/relationshipGraph.js +411 -0
  158. package/dist/services/relationshipGraph.js.map +1 -0
  159. package/dist/services/rlmSafeguards.d.ts +273 -0
  160. package/dist/services/rlmSafeguards.d.ts.map +1 -0
  161. package/dist/services/rlmSafeguards.js +705 -0
  162. package/dist/services/rlmSafeguards.js.map +1 -0
  163. package/dist/services/rulesAnalyzer.d.ts +119 -0
  164. package/dist/services/rulesAnalyzer.d.ts.map +1 -0
  165. package/dist/services/rulesAnalyzer.js +768 -0
  166. package/dist/services/rulesAnalyzer.js.map +1 -0
  167. package/dist/services/rulesMerger.d.ts +75 -0
  168. package/dist/services/rulesMerger.d.ts.map +1 -0
  169. package/dist/services/rulesMerger.js +404 -0
  170. package/dist/services/rulesMerger.js.map +1 -0
  171. package/dist/services/rulesParser.d.ts +127 -0
  172. package/dist/services/rulesParser.d.ts.map +1 -0
  173. package/dist/services/rulesParser.js +594 -0
  174. package/dist/services/rulesParser.js.map +1 -0
  175. package/dist/services/smartChunker.d.ts +110 -0
  176. package/dist/services/smartChunker.d.ts.map +1 -0
  177. package/dist/services/smartChunker.js +520 -0
  178. package/dist/services/smartChunker.js.map +1 -0
  179. package/dist/types/categories.d.ts +105 -0
  180. package/dist/types/categories.d.ts.map +1 -0
  181. package/dist/types/categories.js +108 -0
  182. package/dist/types/categories.js.map +1 -0
  183. package/dist/types/extractedKnowledge.d.ts +233 -0
  184. package/dist/types/extractedKnowledge.d.ts.map +1 -0
  185. package/dist/types/extractedKnowledge.js +56 -0
  186. package/dist/types/extractedKnowledge.js.map +1 -0
  187. package/dist/types/index.d.ts +9 -2
  188. package/dist/types/index.d.ts.map +1 -1
  189. package/dist/types/index.js +12 -1
  190. package/dist/types/index.js.map +1 -1
  191. package/dist/types/llmProvider.d.ts +282 -0
  192. package/dist/types/llmProvider.d.ts.map +1 -0
  193. package/dist/types/llmProvider.js +48 -0
  194. package/dist/types/llmProvider.js.map +1 -0
  195. package/dist/types/memory.d.ts +227 -0
  196. package/dist/types/memory.d.ts.map +1 -0
  197. package/dist/types/memory.js +76 -0
  198. package/dist/types/memory.js.map +1 -0
  199. package/dist/types/relationships.d.ts +167 -0
  200. package/dist/types/relationships.d.ts.map +1 -0
  201. package/dist/types/relationships.js +106 -0
  202. package/dist/types/relationships.js.map +1 -0
  203. package/dist/types/rulesOptimizer.d.ts +345 -0
  204. package/dist/types/rulesOptimizer.d.ts.map +1 -0
  205. package/dist/types/rulesOptimizer.js +22 -0
  206. package/dist/types/rulesOptimizer.js.map +1 -0
  207. package/docs/cursor-recursive-rag-memory-spec.md +4569 -0
  208. package/docs/cursor-recursive-rag-tasks.md +1355 -0
  209. package/package.json +6 -3
  210. package/restart-rag.sh +16 -0
package/README.md CHANGED
@@ -5,22 +5,39 @@
5
5
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
6
6
  [![Node](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen.svg)](https://nodejs.org)
7
7
 
8
- Recursive RAG MCP server for Cursor IDE with interactive setup wizard and web dashboard. Build a knowledge base from your documentation and codebase, enabling multi-hop retrieval and iterative query refinement.
8
+ Recursive RAG MCP server for Cursor IDE with interactive setup wizard, web dashboard, and AI-powered rules optimizer. Build a knowledge base from your documentation and codebase, enabling multi-hop retrieval, iterative query refinement, and intelligent rule management.
9
9
 
10
- > **Status:** Alpha - Core features working, API may change
10
+ > **Status:** Beta - Core features stable, actively maintained
11
11
 
12
12
  ## Features
13
13
 
14
+ ### Core RAG
14
15
  - **Recursive Query**: Multi-hop retrieval with query decomposition and iterative refinement
15
- - **Configurable Vector Stores**: Redis Stack (recommended), Qdrant (local/cloud), ChromaDB, Cloudflare Vectorize
16
+ - **Configurable Vector Stores**: Redis Stack, Redis 8.x Native, Qdrant, ChromaDB, Cloudflare Vectorize, Memory
16
17
  - **Configurable Embeddings**: Local (Xenova/transformers.js), OpenAI, Ollama
17
18
  - **Web Crawling**: Firecrawl integration for documentation ingestion
18
- - **Rotating Proxy Support**: Optional PacketStream/SmartProxy integration for URL fetching
19
- - **Web Dashboard**: Real-time monitoring, search, and configuration UI (Tailwind CSS)
20
- - **Interactive Setup**: Guided configuration wizard
19
+ - **Rotating Proxy Support**: PacketStream/Decodo integration for URL fetching
20
+
21
+ ### Dashboard
22
+ - **Web Dashboard**: Real-time monitoring, search, activity logging, and configuration
23
+ - **Tools Panel**: 12+ built-in tools with parameter forms and execution history
24
+ - **Rules Optimizer**: Analyze, detect duplicates, and optimize Cursor rules
25
+ - **Settings**: Configure vector stores, embeddings, proxy, and LLM providers
26
+ - **Modal/Toast System**: Modern in-app notifications (no browser alerts)
27
+
28
+ ### Rules Optimizer (NEW)
29
+ - **Analyze Rules**: Detect duplicates, conflicts, and outdated patterns
30
+ - **LLM-Powered Merging**: Intelligently merge duplicate rules preserving all content
31
+ - **Natural Language Rules**: Define custom rules in plain English
32
+ - **Folder Browser**: Server-side navigation to select rules folders
33
+ - **Pattern Matching**: Version checks, deprecation patterns (works without LLM)
34
+ - **Automatic Backups**: Creates backups before applying changes
35
+
36
+ ### Integrations
21
37
  - **MCP Integration**: Automatic registration with Cursor IDE
22
- - **MCP Gateway Integration**: Connect to [MCP Gateway](https://github.com/abdullah1854/MCPGateway) for 87+ aggregated tools with token optimization
23
- - **OpenSkills Integration**: Auto-discover and ingest skills from [OpenSkills](https://github.com/numman-ali/openskills) for semantic search
38
+ - **MCP Gateway**: Connect to 87+ aggregated tools with token optimization
39
+ - **OpenSkills**: Auto-discover and ingest skills for semantic search
40
+ - **LLM Providers**: OpenAI, Anthropic, DeepSeek, Groq, Ollama, OpenRouter
24
41
 
25
42
  ## Quick Start
26
43
 
@@ -31,20 +48,14 @@ npm install -g cursor-recursive-rag
31
48
  # Run interactive setup
32
49
  cursor-rag setup
33
50
 
34
- # Ingest documentation (with Firecrawl)
51
+ # Ingest documentation
35
52
  cursor-rag ingest https://nextjs.org/docs --crawl --max-pages 200
36
53
 
37
- # Ingest a local directory
38
- cursor-rag ingest ./docs
39
-
40
- # Check status
41
- cursor-rag status
42
-
43
- # Test search from CLI
44
- cursor-rag search "how to authenticate users"
45
-
46
54
  # Start the web dashboard
47
55
  cursor-rag dashboard
56
+
57
+ # Analyze Cursor rules
58
+ cursor-rag rules analyze ~/.cursor/rules
48
59
  ```
49
60
 
50
61
  ## Installation
@@ -62,221 +73,190 @@ git clone https://github.com/garethdaine/cursor-recursive-rag.git
62
73
  cd cursor-recursive-rag
63
74
  npm install
64
75
  npm run build
65
- npm link # Makes cursor-rag available globally
76
+ npm link
66
77
  ```
67
78
 
68
- ## Setup Wizard
69
-
70
- Run `cursor-rag setup` to configure the system. The wizard will:
71
-
72
- 1. **Select Vector Store** (Redis recommended):
73
- - **Redis Stack** (default): Persistent, fast HNSW search, `docker run -p 6379:6379 redis/redis-stack-server`
74
- - **Qdrant**: Persistent, local Docker or cloud, `docker run -p 6333:6333 qdrant/qdrant`
75
- - **Memory**: In-process, non-persistent (testing only)
76
- - **ChromaDB**: Requires separate server, `docker run -p 8000:8000 chromadb/chroma`
77
- - **Cloudflare Vectorize**: Serverless (not yet implemented)
78
-
79
- 2. **Select Embedding Model**:
80
- - **Xenova (local)**: Free, private, ~384 dimensions
81
- - **Ollama**: Local, configurable models
82
- - **OpenAI**: High quality, requires API key
83
-
84
- 3. **API Keys**:
85
- - OpenAI API key (if using OpenAI embeddings)
86
- - Firecrawl API key (for web crawling)
87
- - Qdrant URL/API key (if using Qdrant)
88
- - Ollama URL/model (if using Ollama)
89
-
90
- 4. **Auto-register** the MCP server with Cursor IDE
91
-
92
79
  ## CLI Commands
93
80
 
94
- ### `cursor-rag setup`
95
-
96
- Interactive setup wizard to configure vector store, embeddings, proxy, and API keys.
81
+ ### Core Commands
97
82
 
98
83
  ```bash
99
- cursor-rag setup
100
- cursor-rag setup --vector-store chroma --embeddings xenova
84
+ cursor-rag setup # Interactive configuration wizard
85
+ cursor-rag status # Show configuration and statistics
86
+ cursor-rag dashboard # Start web dashboard (default: http://localhost:3333)
101
87
  ```
102
88
 
103
- ### `cursor-rag ingest`
104
-
105
- Add documents to the knowledge base.
89
+ ### Ingestion
106
90
 
107
91
  ```bash
108
- # Crawl a website (requires Firecrawl API key)
109
- cursor-rag ingest https://docs.example.com --crawl --max-pages 100 --max-depth 3
110
-
111
- # Ingest a single URL
112
- cursor-rag ingest https://example.com/page
113
-
114
- # Ingest a local file
115
- cursor-rag ingest ./document.md
116
-
117
- # Ingest a directory (recursive)
118
- cursor-rag ingest ./docs
92
+ cursor-rag ingest https://docs.example.com --crawl --max-pages 100
93
+ cursor-rag ingest ./docs # Local directory
94
+ cursor-rag ingest ./document.md # Single file
119
95
  ```
120
96
 
121
- ### `cursor-rag search`
122
-
123
- Test search from the command line.
97
+ ### Search
124
98
 
125
99
  ```bash
126
- cursor-rag search "how to set up authentication"
100
+ cursor-rag search "how to authenticate users"
127
101
  cursor-rag search "database queries" --top-k 10
128
102
  ```
129
103
 
130
- ### `cursor-rag status`
131
-
132
- Show current configuration and knowledge base statistics.
104
+ ### Chat History
133
105
 
134
106
  ```bash
135
- cursor-rag status
107
+ cursor-rag chat list # List Cursor conversations
108
+ cursor-rag chat ingest # Ingest chat history into RAG
109
+ cursor-rag chat watch # Watch for new conversations
110
+ cursor-rag chat stats # Show ingestion statistics
136
111
  ```
137
112
 
138
- ### `cursor-rag dashboard`
139
-
140
- Start the web dashboard for monitoring and configuration.
113
+ ### Rules Optimizer
141
114
 
142
115
  ```bash
143
- cursor-rag dashboard
144
- cursor-rag dashboard --port 8080
116
+ cursor-rag rules list <folder> # List all rules
117
+ cursor-rag rules analyze <folder> # Analyze without changes
118
+ cursor-rag rules duplicates <folder> # Show duplicates only
119
+ cursor-rag rules conflicts <folder> # Show conflicts only
120
+ cursor-rag rules outdated <folder> # Show outdated rules
121
+ cursor-rag rules optimize <folder> # Full optimization (dry-run)
122
+ cursor-rag rules merge <folder> # LLM-powered merge
123
+ cursor-rag rules rewrite <folder> # LLM-powered rewrite
145
124
  ```
146
125
 
147
- The dashboard provides:
148
- - **Overview**: Total chunks, vector store stats, recent activity
149
- - **Search**: Test queries against your knowledge base
150
- - **Activity Log**: Real-time view of ingestion and search operations
151
- - **Settings**: Configure vector store, embeddings, and proxy settings
126
+ ### Maintenance
152
127
 
153
- ## Usage in Cursor
128
+ ```bash
129
+ cursor-rag maintenance run <job> # Run maintenance job
130
+ cursor-rag maintenance start # Start scheduler
131
+ cursor-rag maintenance stats # Show statistics
132
+ cursor-rag maintenance cleanup # Clean stale data
133
+ ```
154
134
 
155
- ### Option 1: Via `@Docs` (Recommended)
135
+ ## Web Dashboard
156
136
 
157
- The dashboard serves your knowledge base as browsable documentation that Cursor can index:
137
+ Start with `cursor-rag dashboard` (default: http://localhost:3333)
158
138
 
159
- 1. Start the dashboard: `cursor-rag dashboard`
160
- 2. In Cursor, type `@Docs` and select **Add new doc**
161
- 3. Enter: `http://localhost:3333/docs`
162
- 4. Now use `@Docs cursor-recursive-rag` in your prompts!
139
+ ### Tabs
163
140
 
164
- ### Option 2: Via MCP Tools (Natural Language)
141
+ | Tab | Features |
142
+ |-----|----------|
143
+ | **Overview** | Stats, connection status, quick actions |
144
+ | **Search** | Query knowledge base with results display |
145
+ | **MCP Gateway** | Browse 87+ tools from connected backends |
146
+ | **OpenSkills** | Browse and search installed skills |
147
+ | **Tools** | Execute built-in tools with forms |
148
+ | **Activity** | Persistent log of all operations |
149
+ | **Settings** | Configure all system options |
165
150
 
166
- The MCP tools are available to the AI agent in Cursor Chat. Ask questions naturally and the AI will use the appropriate tools:
151
+ ### Rules Optimizer (Tools Tab)
167
152
 
168
- ```
169
- Search my knowledge base for authentication patterns
153
+ The Rules Optimizer panel provides one-click analysis and optimization:
170
154
 
171
- What sources are indexed in my RAG knowledge base?
155
+ 1. **Select Folder**: Browse or enter path to rules folder
156
+ 2. **Choose Mode**: Dry Run (preview) or Apply Changes
157
+ 3. **Run Optimizer**: Analyzes duplicates, conflicts, outdated rules
158
+ 4. **Review Results**: See all issues with severity indicators
172
159
 
173
- Crawl and ingest https://docs.example.com into my knowledge base with a max of 50 pages
174
- ```
160
+ **Works with or without LLM**:
161
+ - Without LLM: Pattern matching detects issues, reports for manual review
162
+ - With LLM: Automatically merges duplicates preserving all content
175
163
 
176
- > **Note:** MCP tools don't use `@` syntax - that's reserved for Cursor's built-in features (`@Codebase`, `@Docs`, `@Files`). MCP tools are called automatically by the AI when relevant to your request.
164
+ ### Settings Tab
177
165
 
178
- ### Available MCP Tools
179
-
180
- | Tool | Description |
181
- |------|-------------|
182
- | `recursive_query` | Multi-hop retrieval with query decomposition |
183
- | `search_knowledge` | Direct vector similarity search |
184
- | `ingest_document` | Add a single document (URL, file, or text) |
185
- | `crawl_and_ingest` | Crawl website with Firecrawl and index |
186
- | `list_sources` | List indexed document sources |
166
+ Configure:
167
+ - **Vector Store**: Redis Stack, Redis 8.x, Qdrant, ChromaDB, Memory, Vectorize
168
+ - **Embeddings**: Xenova (local), OpenAI, Ollama
169
+ - **Proxy**: PacketStream, Decodo with credentials
170
+ - **Rules Analyzer**: Thresholds, patterns, LLM provider
171
+ - **LLM Provider**: OpenAI, Anthropic, DeepSeek, Groq, Ollama, OpenRouter
187
172
 
188
173
  ## Configuration
189
174
 
190
- Configuration is stored in `~/.cursor-rag/config.json`:
175
+ Configuration stored in `~/.cursor-rag/config.json`:
191
176
 
192
177
  ```json
193
178
  {
194
- "vectorStore": "chroma",
179
+ "vectorStore": "redis-stack",
195
180
  "embeddings": "xenova",
196
181
  "apiKeys": {
197
- "firecrawl": "fc-..."
182
+ "firecrawl": "fc-...",
183
+ "redis": { "url": "redis://localhost:6379" }
198
184
  },
199
- "proxy": {
200
- "enabled": true,
201
- "driver": "packetstream",
202
- "host": "proxy.packetstream.io",
203
- "port": 31112,
204
- "username": "your-username",
205
- "password": "your-password"
206
- },
207
- "dashboard": {
208
- "enabled": true,
209
- "port": 3333
210
- }
185
+ "proxy": { "enabled": false },
186
+ "dashboard": { "enabled": true, "port": 3333 },
187
+ "mcpGateway": { "enabled": true, "url": "http://localhost:3010" },
188
+ "openSkills": { "enabled": true, "autoIngestSkills": true }
211
189
  }
212
190
  ```
213
191
 
214
- ### Proxy Configuration
215
-
216
- The optional rotating proxy is used for direct URL fetching (not needed when using Firecrawl, which handles proxying internally). Supported providers:
192
+ ### Vector Store Options
217
193
 
218
- - **PacketStream**: Residential proxies with country targeting
219
- - **SmartProxy**: Datacenter and residential options
194
+ | Type | Description | Setup |
195
+ |------|-------------|-------|
196
+ | `redis-stack` | Redis + RediSearch (Docker) | `docker run -d -p 6379:6379 redis/redis-stack-server` |
197
+ | `redis` | Redis 8.x native vectors | `brew install redis` |
198
+ | `qdrant` | Qdrant vector database | `docker run -d -p 6333:6333 qdrant/qdrant` |
199
+ | `chroma` | ChromaDB | `docker run -d -p 8000:8000 chromadb/chroma` |
200
+ | `memory` | In-memory with file persistence | No setup required |
201
+ | `vectorize` | Cloudflare Vectorize | Requires Cloudflare account |
220
202
 
221
- ### MCP Gateway Integration
203
+ ### Rules Analyzer Config
222
204
 
223
- Connect to [MCP Gateway](https://github.com/abdullah1854/MCPGateway) to access 87+ aggregated tools with token optimization:
205
+ Stored in `~/.cursor-rag/rules-config.json`:
224
206
 
225
207
  ```json
226
208
  {
227
- "mcpGateway": {
228
- "enabled": true,
229
- "url": "http://localhost:3010",
230
- "apiKey": "optional-api-key"
231
- }
209
+ "analysis": {
210
+ "duplicateThreshold": 0.7,
211
+ "maxAgeDays": 365,
212
+ "detectConflicts": true,
213
+ "detectOutdated": true,
214
+ "useLLM": false
215
+ },
216
+ "llm": {
217
+ "provider": "openai",
218
+ "model": "gpt-4o-mini"
219
+ },
220
+ "versionChecks": [],
221
+ "deprecationPatterns": [],
222
+ "naturalRules": []
232
223
  }
233
224
  ```
234
225
 
235
- **MCP Tools exposed:**
236
- - `gateway_search_tools` - Search available tools across all backends
237
- - `gateway_call_tool` - Call any gateway tool with result filtering
238
- - `gateway_execute_skill` - Execute gateway skills
239
- - `gateway_health` - Check gateway status
226
+ ## MCP Tools
240
227
 
241
- ### OpenSkills Integration
228
+ Available when using Cursor IDE:
229
+
230
+ | Tool | Description |
231
+ |------|-------------|
232
+ | `recursive_query` | Multi-hop retrieval with query decomposition |
233
+ | `search_knowledge` | Direct vector similarity search |
234
+ | `ingest_document` | Add document (URL, file, text) |
235
+ | `crawl_and_ingest` | Crawl website and index |
236
+ | `list_sources` | List indexed sources |
237
+ | `chat_ingest` | Ingest Cursor chat history |
238
+ | `chat_list` | List conversations |
239
+ | `memory_stats` | Memory system statistics |
240
+ | `gateway_*` | MCP Gateway tools |
241
+ | `openskills_*` | OpenSkills tools |
242
242
 
243
- Connect to [OpenSkills](https://github.com/numman-ali/openskills) for universal skills loading:
243
+ ## Usage in Cursor
244
244
 
245
- ```json
246
- {
247
- "openSkills": {
248
- "enabled": true,
249
- "autoIngestSkills": true
250
- }
251
- }
252
- ```
245
+ ### Via @Docs (Recommended)
253
246
 
254
- **MCP Tools exposed:**
255
- - `list_openskills` - List all installed skills
256
- - `read_openskill` - Read a specific skill's content
257
- - `ingest_openskills` - Ingest all skills into RAG knowledge base
258
- - `search_openskills` - Semantic search across ingested skills
247
+ 1. Start dashboard: `cursor-rag dashboard`
248
+ 2. In Cursor: `@Docs` **Add new doc**
249
+ 3. Enter: `http://localhost:3333/docs`
250
+ 4. Use: `@Docs cursor-recursive-rag` in prompts
259
251
 
260
- **Skill Discovery Paths (priority order):**
261
- 1. `./.agent/skills/` (project universal)
262
- 2. `~/.agent/skills/` (global universal)
263
- 3. `./.claude/skills/` (project Claude)
264
- 4. `~/.claude/skills/` (global Claude)
252
+ ### Via MCP Tools
265
253
 
266
- The MCP server is registered in `~/.cursor/mcp.json`:
254
+ Ask naturally and the AI will use appropriate tools:
267
255
 
268
- ```json
269
- {
270
- "mcpServers": {
271
- "recursive-rag": {
272
- "command": "node",
273
- "args": ["cursor-recursive-rag/dist/server/index.js"],
274
- "env": {
275
- "CURSOR_RAG_CONFIG": "/Users/you/.cursor-rag/config.json"
276
- }
277
- }
278
- }
279
- }
256
+ ```
257
+ Search my knowledge base for authentication patterns
258
+ Crawl and ingest https://docs.example.com with max 50 pages
259
+ What sources are indexed in my RAG?
280
260
  ```
281
261
 
282
262
  ## Architecture
@@ -284,68 +264,64 @@ The MCP server is registered in `~/.cursor/mcp.json`:
284
264
  ```
285
265
  cursor-recursive-rag/
286
266
  ├── src/
287
- │ ├── cli/ # CLI commands (setup, ingest, search, status)
288
- │ ├── server/ # MCP server and tool handlers
267
+ │ ├── cli/ # CLI commands
268
+ │ ├── server/ # MCP server and tools
269
+ │ ├── dashboard/ # Web dashboard
289
270
  │ ├── adapters/
290
- │ │ ├── vector/ # Vector store adapters (Chroma, Qdrant, Vectorize)
291
- │ │ └── embeddings/ # Embedding adapters (Xenova, OpenAI, Ollama)
292
- ├── services/ # Chunker, query decomposer, config
293
- └── types/ # TypeScript type definitions
271
+ │ │ ├── vector/ # Vector store adapters
272
+ │ │ ├── embeddings/ # Embedding adapters
273
+ │ └── llm/ # LLM provider adapters
274
+ ├── services/ # Core services
275
+ │ ├── config/ # Configuration schemas
276
+ │ └── types/ # TypeScript definitions
294
277
  ├── bin/ # CLI entry point
295
- ├── dist/ # Compiled JavaScript
296
- └── package.json
278
+ └── dist/ # Compiled JavaScript
297
279
  ```
298
280
 
299
281
  ## Requirements
300
282
 
301
283
  - Node.js >= 20.0.0
302
284
  - Cursor IDE (for MCP integration)
303
- - Optional: Docker (for Qdrant local)
304
- - Optional: Ollama (for local embeddings)
285
+ - Vector store (Docker or Redis 8.x recommended)
286
+ - Optional: Ollama (local embeddings), LLM API key (rules optimization)
305
287
 
306
288
  ## API Keys
307
289
 
308
290
  | Service | Purpose | Get Key |
309
291
  |---------|---------|---------|
310
292
  | Firecrawl | Web crawling | https://www.firecrawl.dev |
311
- | OpenAI | Embeddings | https://platform.openai.com |
293
+ | OpenAI | Embeddings/LLM | https://platform.openai.com |
294
+ | Anthropic | LLM | https://console.anthropic.com |
312
295
  | Qdrant Cloud | Vector store | https://cloud.qdrant.io |
313
296
 
314
297
  ## Troubleshooting
315
298
 
316
- ### "Config file not found"
317
-
318
- Run `cursor-rag setup` to create the configuration.
319
-
320
- ### MCP server not showing in Cursor
299
+ ### Config file not found
300
+ Run `cursor-rag setup` to create configuration.
321
301
 
322
- 1. Check `~/.cursor/mcp.json` has the `recursive-rag` entry
302
+ ### MCP server not in Cursor
303
+ 1. Check `~/.cursor/mcp.json` has `recursive-rag` entry
323
304
  2. Restart Cursor IDE
324
- 3. Check the server path is correct
305
+ 3. Verify server path is correct
325
306
 
326
- ### Firecrawl errors
307
+ ### Rules optimizer shows 0 rules
308
+ Ensure the path is absolute (e.g., `/Users/you/.cursor/rules` not `~/.cursor/rules`)
327
309
 
328
- Ensure your Firecrawl API key is valid and starts with `fc-`.
329
-
330
- ### ChromaDB permission errors
331
-
332
- The local ChromaDB stores data in `~/.cursor-rag/chroma-data`. Ensure this directory is writable.
310
+ ### LLM not configured error
311
+ Either disable "Use LLM for Analysis" in Settings, or configure an LLM provider.
333
312
 
334
313
  ## Development
335
314
 
336
315
  ```bash
337
- # Install dependencies
338
- npm install
339
-
340
- # Build
341
- npm run build
316
+ npm install # Install dependencies
317
+ npm run build # Build TypeScript
318
+ npm run dev # Watch mode
319
+ npm link # Link for testing
320
+ ```
342
321
 
343
- # Development mode (watch)
344
- npm run dev
322
+ ## Contributing
345
323
 
346
- # Link for testing
347
- npm link
348
- ```
324
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
349
325
 
350
326
  ## License
351
327
 
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Anthropic LLM Provider
3
+ *
4
+ * Supports: Claude 3.5 Sonnet, Claude 3.5 Haiku, Claude 3 Opus
5
+ */
6
+ import { BaseLLMProvider } from './base.js';
7
+ import type { LLMMessage, LLMCompletionOptions, LLMResponse, ModelInfo, ModelCapabilities, AnthropicProviderConfig } from '../../types/llmProvider.js';
8
+ export declare class AnthropicProvider extends BaseLLMProvider {
9
+ readonly type: "anthropic";
10
+ readonly name = "Anthropic";
11
+ private apiKey;
12
+ private baseUrl;
13
+ private model;
14
+ private anthropicVersion;
15
+ constructor(config: AnthropicProviderConfig);
16
+ isAvailable(): Promise<boolean>;
17
+ listModels(): Promise<ModelInfo[]>;
18
+ getModelCapabilities(model: string): ModelCapabilities | null;
19
+ chat(messages: LLMMessage[], options?: LLMCompletionOptions): Promise<LLMResponse>;
20
+ private getHeaders;
21
+ private formatMessages;
22
+ private handleStream;
23
+ private parseErrorResponse;
24
+ private handleError;
25
+ private formatModelName;
26
+ }
27
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/adapters/llm/anthropic.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EACV,UAAU,EACV,oBAAoB,EACpB,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,4BAA4B,CAAC;AAyEpC,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;IACrC,QAAQ,CAAC,IAAI,eAAe;IAE5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,EAAE,uBAAuB;IAQrC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAuB/B,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IASxC,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAIvD,IAAI,CACR,QAAQ,EAAE,UAAU,EAAE,EACtB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,WAAW,CAAC;IAwFvB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,cAAc;YAmBR,YAAY;YA6GZ,kBAAkB;IAgDhC,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,eAAe;CAQxB"}