cursor-recursive-rag 0.2.0-alpha.3 → 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 (184) hide show
  1. package/README.md +170 -223
  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/cli/commands/chat.d.ts +4 -0
  35. package/dist/cli/commands/chat.d.ts.map +1 -0
  36. package/dist/cli/commands/chat.js +374 -0
  37. package/dist/cli/commands/chat.js.map +1 -0
  38. package/dist/cli/commands/maintenance.d.ts +4 -0
  39. package/dist/cli/commands/maintenance.d.ts.map +1 -0
  40. package/dist/cli/commands/maintenance.js +237 -0
  41. package/dist/cli/commands/maintenance.js.map +1 -0
  42. package/dist/cli/commands/rules.d.ts +9 -0
  43. package/dist/cli/commands/rules.d.ts.map +1 -0
  44. package/dist/cli/commands/rules.js +639 -0
  45. package/dist/cli/commands/rules.js.map +1 -0
  46. package/dist/cli/index.js +6 -0
  47. package/dist/cli/index.js.map +1 -1
  48. package/dist/config/memoryConfig.d.ts +427 -0
  49. package/dist/config/memoryConfig.d.ts.map +1 -0
  50. package/dist/config/memoryConfig.js +258 -0
  51. package/dist/config/memoryConfig.js.map +1 -0
  52. package/dist/config/rulesConfig.d.ts +486 -0
  53. package/dist/config/rulesConfig.d.ts.map +1 -0
  54. package/dist/config/rulesConfig.js +345 -0
  55. package/dist/config/rulesConfig.js.map +1 -0
  56. package/dist/dashboard/coreTools.d.ts +14 -0
  57. package/dist/dashboard/coreTools.d.ts.map +1 -0
  58. package/dist/dashboard/coreTools.js +413 -0
  59. package/dist/dashboard/coreTools.js.map +1 -0
  60. package/dist/dashboard/public/index.html +1910 -11
  61. package/dist/dashboard/server.d.ts.map +1 -1
  62. package/dist/dashboard/server.js +842 -0
  63. package/dist/dashboard/server.js.map +1 -1
  64. package/dist/dashboard/toolRegistry.d.ts +192 -0
  65. package/dist/dashboard/toolRegistry.d.ts.map +1 -0
  66. package/dist/dashboard/toolRegistry.js +322 -0
  67. package/dist/dashboard/toolRegistry.js.map +1 -0
  68. package/dist/proxy/index.d.ts +1 -1
  69. package/dist/proxy/index.d.ts.map +1 -1
  70. package/dist/proxy/index.js +9 -6
  71. package/dist/proxy/index.js.map +1 -1
  72. package/dist/server/index.js +21 -0
  73. package/dist/server/index.js.map +1 -1
  74. package/dist/server/tools/index.d.ts.map +1 -1
  75. package/dist/server/tools/index.js +19 -1
  76. package/dist/server/tools/index.js.map +1 -1
  77. package/dist/server/tools/memory.d.ts +250 -0
  78. package/dist/server/tools/memory.d.ts.map +1 -0
  79. package/dist/server/tools/memory.js +472 -0
  80. package/dist/server/tools/memory.js.map +1 -0
  81. package/dist/services/categoryManager.d.ts +110 -0
  82. package/dist/services/categoryManager.d.ts.map +1 -0
  83. package/dist/services/categoryManager.js +549 -0
  84. package/dist/services/categoryManager.js.map +1 -0
  85. package/dist/services/contextEnvironment.d.ts +206 -0
  86. package/dist/services/contextEnvironment.d.ts.map +1 -0
  87. package/dist/services/contextEnvironment.js +481 -0
  88. package/dist/services/contextEnvironment.js.map +1 -0
  89. package/dist/services/conversationProcessor.d.ts +99 -0
  90. package/dist/services/conversationProcessor.d.ts.map +1 -0
  91. package/dist/services/conversationProcessor.js +311 -0
  92. package/dist/services/conversationProcessor.js.map +1 -0
  93. package/dist/services/cursorChatReader.d.ts +129 -0
  94. package/dist/services/cursorChatReader.d.ts.map +1 -0
  95. package/dist/services/cursorChatReader.js +419 -0
  96. package/dist/services/cursorChatReader.js.map +1 -0
  97. package/dist/services/decayCalculator.d.ts +85 -0
  98. package/dist/services/decayCalculator.d.ts.map +1 -0
  99. package/dist/services/decayCalculator.js +182 -0
  100. package/dist/services/decayCalculator.js.map +1 -0
  101. package/dist/services/enhancedVectorStore.d.ts +102 -0
  102. package/dist/services/enhancedVectorStore.d.ts.map +1 -0
  103. package/dist/services/enhancedVectorStore.js +245 -0
  104. package/dist/services/enhancedVectorStore.js.map +1 -0
  105. package/dist/services/hybridScorer.d.ts +120 -0
  106. package/dist/services/hybridScorer.d.ts.map +1 -0
  107. package/dist/services/hybridScorer.js +334 -0
  108. package/dist/services/hybridScorer.js.map +1 -0
  109. package/dist/services/knowledgeExtractor.d.ts +45 -0
  110. package/dist/services/knowledgeExtractor.d.ts.map +1 -0
  111. package/dist/services/knowledgeExtractor.js +436 -0
  112. package/dist/services/knowledgeExtractor.js.map +1 -0
  113. package/dist/services/knowledgeStorage.d.ts +102 -0
  114. package/dist/services/knowledgeStorage.d.ts.map +1 -0
  115. package/dist/services/knowledgeStorage.js +383 -0
  116. package/dist/services/knowledgeStorage.js.map +1 -0
  117. package/dist/services/maintenanceScheduler.d.ts +89 -0
  118. package/dist/services/maintenanceScheduler.d.ts.map +1 -0
  119. package/dist/services/maintenanceScheduler.js +479 -0
  120. package/dist/services/maintenanceScheduler.js.map +1 -0
  121. package/dist/services/memoryMetadataStore.d.ts +62 -0
  122. package/dist/services/memoryMetadataStore.d.ts.map +1 -0
  123. package/dist/services/memoryMetadataStore.js +570 -0
  124. package/dist/services/memoryMetadataStore.js.map +1 -0
  125. package/dist/services/recursiveRetrieval.d.ts +122 -0
  126. package/dist/services/recursiveRetrieval.d.ts.map +1 -0
  127. package/dist/services/recursiveRetrieval.js +443 -0
  128. package/dist/services/recursiveRetrieval.js.map +1 -0
  129. package/dist/services/relationshipGraph.d.ts +77 -0
  130. package/dist/services/relationshipGraph.d.ts.map +1 -0
  131. package/dist/services/relationshipGraph.js +411 -0
  132. package/dist/services/relationshipGraph.js.map +1 -0
  133. package/dist/services/rlmSafeguards.d.ts +273 -0
  134. package/dist/services/rlmSafeguards.d.ts.map +1 -0
  135. package/dist/services/rlmSafeguards.js +705 -0
  136. package/dist/services/rlmSafeguards.js.map +1 -0
  137. package/dist/services/rulesAnalyzer.d.ts +119 -0
  138. package/dist/services/rulesAnalyzer.d.ts.map +1 -0
  139. package/dist/services/rulesAnalyzer.js +768 -0
  140. package/dist/services/rulesAnalyzer.js.map +1 -0
  141. package/dist/services/rulesMerger.d.ts +75 -0
  142. package/dist/services/rulesMerger.d.ts.map +1 -0
  143. package/dist/services/rulesMerger.js +404 -0
  144. package/dist/services/rulesMerger.js.map +1 -0
  145. package/dist/services/rulesParser.d.ts +127 -0
  146. package/dist/services/rulesParser.d.ts.map +1 -0
  147. package/dist/services/rulesParser.js +594 -0
  148. package/dist/services/rulesParser.js.map +1 -0
  149. package/dist/services/smartChunker.d.ts +110 -0
  150. package/dist/services/smartChunker.d.ts.map +1 -0
  151. package/dist/services/smartChunker.js +520 -0
  152. package/dist/services/smartChunker.js.map +1 -0
  153. package/dist/types/categories.d.ts +105 -0
  154. package/dist/types/categories.d.ts.map +1 -0
  155. package/dist/types/categories.js +108 -0
  156. package/dist/types/categories.js.map +1 -0
  157. package/dist/types/extractedKnowledge.d.ts +233 -0
  158. package/dist/types/extractedKnowledge.d.ts.map +1 -0
  159. package/dist/types/extractedKnowledge.js +56 -0
  160. package/dist/types/extractedKnowledge.js.map +1 -0
  161. package/dist/types/index.d.ts +7 -1
  162. package/dist/types/index.d.ts.map +1 -1
  163. package/dist/types/index.js +12 -1
  164. package/dist/types/index.js.map +1 -1
  165. package/dist/types/llmProvider.d.ts +282 -0
  166. package/dist/types/llmProvider.d.ts.map +1 -0
  167. package/dist/types/llmProvider.js +48 -0
  168. package/dist/types/llmProvider.js.map +1 -0
  169. package/dist/types/memory.d.ts +227 -0
  170. package/dist/types/memory.d.ts.map +1 -0
  171. package/dist/types/memory.js +76 -0
  172. package/dist/types/memory.js.map +1 -0
  173. package/dist/types/relationships.d.ts +167 -0
  174. package/dist/types/relationships.d.ts.map +1 -0
  175. package/dist/types/relationships.js +106 -0
  176. package/dist/types/relationships.js.map +1 -0
  177. package/dist/types/rulesOptimizer.d.ts +345 -0
  178. package/dist/types/rulesOptimizer.d.ts.map +1 -0
  179. package/dist/types/rulesOptimizer.js +22 -0
  180. package/dist/types/rulesOptimizer.js.map +1 -0
  181. package/docs/cursor-recursive-rag-memory-spec.md +299 -5
  182. package/docs/cursor-recursive-rag-tasks.md +997 -154
  183. package/package.json +6 -3
  184. package/restart-rag.sh +16 -0
package/README.md CHANGED
@@ -5,23 +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 (Docker), Redis 8.x Native (Homebrew), 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, activity logging, and configuration UI (Tailwind CSS)
20
- - **Activity Logging**: Persistent activity log across MCP tools and dashboard (stored in `~/.cursor-rag/activity.json`)
21
- - **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
22
37
  - **MCP Integration**: Automatic registration with Cursor IDE
23
- - **MCP Gateway Integration**: Connect to [MCP Gateway](https://github.com/abdullah1854/MCPGateway) for 87+ aggregated tools with token optimization
24
- - **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
25
41
 
26
42
  ## Quick Start
27
43
 
@@ -32,20 +48,14 @@ npm install -g cursor-recursive-rag
32
48
  # Run interactive setup
33
49
  cursor-rag setup
34
50
 
35
- # Ingest documentation (with Firecrawl)
51
+ # Ingest documentation
36
52
  cursor-rag ingest https://nextjs.org/docs --crawl --max-pages 200
37
53
 
38
- # Ingest a local directory
39
- cursor-rag ingest ./docs
40
-
41
- # Check status
42
- cursor-rag status
43
-
44
- # Test search from CLI
45
- cursor-rag search "how to authenticate users"
46
-
47
54
  # Start the web dashboard
48
55
  cursor-rag dashboard
56
+
57
+ # Analyze Cursor rules
58
+ cursor-rag rules analyze ~/.cursor/rules
49
59
  ```
50
60
 
51
61
  ## Installation
@@ -63,135 +73,106 @@ git clone https://github.com/garethdaine/cursor-recursive-rag.git
63
73
  cd cursor-recursive-rag
64
74
  npm install
65
75
  npm run build
66
- npm link # Makes cursor-rag available globally
76
+ npm link
67
77
  ```
68
78
 
69
- ## Setup Wizard
70
-
71
- Run `cursor-rag setup` to configure the system. The wizard will:
72
-
73
- 1. **Select Vector Store**:
74
- - **Redis Stack** (default): Docker-based with RediSearch module, `docker run -p 6379:6379 redis/redis-stack-server`
75
- - **Redis 8.x Native**: Homebrew/native Redis 8.x with VADD/VSIM commands, `brew install redis`
76
- - **Qdrant**: Persistent, local Docker or cloud, `docker run -p 6333:6333 qdrant/qdrant`
77
- - **Memory**: In-process, file-based persistence (testing/development)
78
- - **ChromaDB**: Requires separate server, `docker run -p 8000:8000 chromadb/chroma`
79
- - **Cloudflare Vectorize**: Serverless (requires Cloudflare account)
80
-
81
- 2. **Select Embedding Model**:
82
- - **Xenova (local)**: Free, private, ~384 dimensions
83
- - **Ollama**: Local, configurable models
84
- - **OpenAI**: High quality, requires API key
85
-
86
- 3. **API Keys**:
87
- - OpenAI API key (if using OpenAI embeddings)
88
- - Firecrawl API key (for web crawling)
89
- - Qdrant URL/API key (if using Qdrant)
90
- - Ollama URL/model (if using Ollama)
91
-
92
- 4. **Auto-register** the MCP server with Cursor IDE
93
-
94
79
  ## CLI Commands
95
80
 
96
- ### `cursor-rag setup`
97
-
98
- Interactive setup wizard to configure vector store, embeddings, proxy, and API keys.
81
+ ### Core Commands
99
82
 
100
83
  ```bash
101
- cursor-rag setup
102
- 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)
103
87
  ```
104
88
 
105
- ### `cursor-rag ingest`
106
-
107
- Add documents to the knowledge base.
89
+ ### Ingestion
108
90
 
109
91
  ```bash
110
- # Crawl a website (requires Firecrawl API key)
111
- cursor-rag ingest https://docs.example.com --crawl --max-pages 100 --max-depth 3
112
-
113
- # Ingest a single URL
114
- cursor-rag ingest https://example.com/page
115
-
116
- # Ingest a local file
117
- cursor-rag ingest ./document.md
118
-
119
- # Ingest a directory (recursive)
120
- 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
121
95
  ```
122
96
 
123
- ### `cursor-rag search`
124
-
125
- Test search from the command line.
97
+ ### Search
126
98
 
127
99
  ```bash
128
- cursor-rag search "how to set up authentication"
100
+ cursor-rag search "how to authenticate users"
129
101
  cursor-rag search "database queries" --top-k 10
130
102
  ```
131
103
 
132
- ### `cursor-rag status`
133
-
134
- Show current configuration and knowledge base statistics.
104
+ ### Chat History
135
105
 
136
106
  ```bash
137
- 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
138
111
  ```
139
112
 
140
- ### `cursor-rag dashboard`
141
-
142
- Start the web dashboard for monitoring and configuration.
113
+ ### Rules Optimizer
143
114
 
144
115
  ```bash
145
- cursor-rag dashboard
146
- 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
147
124
  ```
148
125
 
149
- The dashboard provides:
150
- - **Overview**: Total chunks, vector store stats, MCP Gateway status, OpenSkills count
151
- - **Search**: Test queries against your knowledge base
152
- - **MCP Gateway**: Browse and search 87+ aggregated tools from connected backends
153
- - **OpenSkills**: Browse and search installed skills
154
- - **Activity Log**: Persistent activity log showing all searches, ingestions, and crawls (shared with MCP tools)
155
- - **Settings**: Configure vector store (Redis Stack, Redis 8.x, Qdrant, ChromaDB, etc.), embeddings, and proxy settings
126
+ ### Maintenance
156
127
 
157
- ## Usage in Cursor
158
-
159
- ### Option 1: Via `@Docs` (Recommended)
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
+ ```
160
134
 
161
- The dashboard serves your knowledge base as browsable documentation that Cursor can index:
135
+ ## Web Dashboard
162
136
 
163
- 1. Start the dashboard: `cursor-rag dashboard`
164
- 2. In Cursor, type `@Docs` and select **Add new doc**
165
- 3. Enter: `http://localhost:3333/docs`
166
- 4. Now use `@Docs cursor-recursive-rag` in your prompts!
137
+ Start with `cursor-rag dashboard` (default: http://localhost:3333)
167
138
 
168
- ### Option 2: Via MCP Tools (Natural Language)
139
+ ### Tabs
169
140
 
170
- The MCP tools are available to the AI agent in Cursor Chat. Ask questions naturally and the AI will use the appropriate tools:
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 |
171
150
 
172
- ```
173
- Search my knowledge base for authentication patterns
151
+ ### Rules Optimizer (Tools Tab)
174
152
 
175
- What sources are indexed in my RAG knowledge base?
153
+ The Rules Optimizer panel provides one-click analysis and optimization:
176
154
 
177
- Crawl and ingest https://docs.example.com into my knowledge base with a max of 50 pages
178
- ```
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
179
159
 
180
- > **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.
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
181
163
 
182
- ### Available MCP Tools
164
+ ### Settings Tab
183
165
 
184
- | Tool | Description |
185
- |------|-------------|
186
- | `recursive_query` | Multi-hop retrieval with query decomposition |
187
- | `search_knowledge` | Direct vector similarity search |
188
- | `ingest_document` | Add a single document (URL, file, or text) |
189
- | `crawl_and_ingest` | Crawl website with Firecrawl and index |
190
- | `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
191
172
 
192
173
  ## Configuration
193
174
 
194
- Configuration is stored in `~/.cursor-rag/config.json`:
175
+ Configuration stored in `~/.cursor-rag/config.json`:
195
176
 
196
177
  ```json
197
178
  {
@@ -199,26 +180,12 @@ Configuration is stored in `~/.cursor-rag/config.json`:
199
180
  "embeddings": "xenova",
200
181
  "apiKeys": {
201
182
  "firecrawl": "fc-...",
202
- "redis": {
203
- "url": "redis://localhost:6379"
204
- }
205
- },
206
- "proxy": {
207
- "enabled": false,
208
- "driver": "none"
183
+ "redis": { "url": "redis://localhost:6379" }
209
184
  },
210
- "dashboard": {
211
- "enabled": true,
212
- "port": 3333
213
- },
214
- "mcpGateway": {
215
- "enabled": true,
216
- "url": "http://localhost:3010"
217
- },
218
- "openSkills": {
219
- "enabled": true,
220
- "autoIngestSkills": true
221
- }
185
+ "proxy": { "enabled": false },
186
+ "dashboard": { "enabled": true, "port": 3333 },
187
+ "mcpGateway": { "enabled": true, "url": "http://localhost:3010" },
188
+ "openSkills": { "enabled": true, "autoIngestSkills": true }
222
189
  }
223
190
  ```
224
191
 
@@ -226,83 +193,70 @@ Configuration is stored in `~/.cursor-rag/config.json`:
226
193
 
227
194
  | Type | Description | Setup |
228
195
  |------|-------------|-------|
229
- | `redis-stack` | Redis Stack with RediSearch module (Docker) | `docker run -d -p 6379:6379 redis/redis-stack-server` |
230
- | `redis` | Redis 8.x native vectors (Homebrew) | `brew install redis && brew services start redis` |
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` |
231
198
  | `qdrant` | Qdrant vector database | `docker run -d -p 6333:6333 qdrant/qdrant` |
232
199
  | `chroma` | ChromaDB | `docker run -d -p 8000:8000 chromadb/chroma` |
233
200
  | `memory` | In-memory with file persistence | No setup required |
234
201
  | `vectorize` | Cloudflare Vectorize | Requires Cloudflare account |
235
202
 
236
- ### Activity Logging
237
-
238
- All operations (searches, ingestions, crawls) are logged to `~/.cursor-rag/activity.json`. This log is shared between the MCP server and dashboard, so activities from Cursor IDE chats will appear in the dashboard's Activity tab.
239
-
240
- ### Proxy Configuration
241
-
242
- The optional rotating proxy is used for direct URL fetching (not needed when using Firecrawl, which handles proxying internally). Supported providers:
203
+ ### Rules Analyzer Config
243
204
 
244
- - **PacketStream**: Residential proxies with country targeting
245
- - **SmartProxy**: Datacenter and residential options
246
-
247
- ### MCP Gateway Integration
248
-
249
- 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`:
250
206
 
251
207
  ```json
252
208
  {
253
- "mcpGateway": {
254
- "enabled": true,
255
- "url": "http://localhost:3010",
256
- "apiKey": "optional-api-key"
257
- }
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": []
258
223
  }
259
224
  ```
260
225
 
261
- **MCP Tools exposed:**
262
- - `gateway_search_tools` - Search available tools across all backends
263
- - `gateway_call_tool` - Call any gateway tool with result filtering
264
- - `gateway_execute_skill` - Execute gateway skills
265
- - `gateway_health` - Check gateway status
226
+ ## MCP Tools
266
227
 
267
- ### OpenSkills Integration
228
+ Available when using Cursor IDE:
268
229
 
269
- Connect to [OpenSkills](https://github.com/numman-ali/openskills) for universal skills loading:
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 |
270
242
 
271
- ```json
272
- {
273
- "openSkills": {
274
- "enabled": true,
275
- "autoIngestSkills": true
276
- }
277
- }
278
- ```
243
+ ## Usage in Cursor
279
244
 
280
- **MCP Tools exposed:**
281
- - `list_openskills` - List all installed skills
282
- - `read_openskill` - Read a specific skill's content
283
- - `ingest_openskills` - Ingest all skills into RAG knowledge base
284
- - `search_openskills` - Semantic search across ingested skills
245
+ ### Via @Docs (Recommended)
285
246
 
286
- **Skill Discovery Paths (priority order):**
287
- 1. `./.agent/skills/` (project universal)
288
- 2. `~/.agent/skills/` (global universal)
289
- 3. `./.claude/skills/` (project Claude)
290
- 4. `~/.claude/skills/` (global Claude)
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
291
251
 
292
- The MCP server is registered in `~/.cursor/mcp.json`:
252
+ ### Via MCP Tools
253
+
254
+ Ask naturally and the AI will use appropriate tools:
293
255
 
294
- ```json
295
- {
296
- "mcpServers": {
297
- "recursive-rag": {
298
- "command": "node",
299
- "args": ["cursor-recursive-rag/dist/server/index.js"],
300
- "env": {
301
- "CURSOR_RAG_CONFIG": "/Users/you/.cursor-rag/config.json"
302
- }
303
- }
304
- }
305
- }
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?
306
260
  ```
307
261
 
308
262
  ## Architecture
@@ -310,71 +264,64 @@ The MCP server is registered in `~/.cursor/mcp.json`:
310
264
  ```
311
265
  cursor-recursive-rag/
312
266
  ├── src/
313
- │ ├── cli/ # CLI commands (setup, ingest, search, status)
314
- │ ├── server/ # MCP server and tool handlers
267
+ │ ├── cli/ # CLI commands
268
+ │ ├── server/ # MCP server and tools
269
+ │ ├── dashboard/ # Web dashboard
315
270
  │ ├── adapters/
316
- │ │ ├── vector/ # Vector store adapters (Chroma, Qdrant, Vectorize)
317
- │ │ └── embeddings/ # Embedding adapters (Xenova, OpenAI, Ollama)
318
- ├── services/ # Chunker, query decomposer, config
319
- └── 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
320
277
  ├── bin/ # CLI entry point
321
- ├── dist/ # Compiled JavaScript
322
- └── package.json
278
+ └── dist/ # Compiled JavaScript
323
279
  ```
324
280
 
325
281
  ## Requirements
326
282
 
327
283
  - Node.js >= 20.0.0
328
284
  - Cursor IDE (for MCP integration)
329
- - One of the following vector stores:
330
- - Docker (for Redis Stack, Qdrant, ChromaDB)
331
- - Redis 8.x (via Homebrew: `brew install redis`)
332
- - Memory adapter (no dependencies, for testing)
333
- - Optional: Ollama (for local embeddings)
285
+ - Vector store (Docker or Redis 8.x recommended)
286
+ - Optional: Ollama (local embeddings), LLM API key (rules optimization)
334
287
 
335
288
  ## API Keys
336
289
 
337
290
  | Service | Purpose | Get Key |
338
291
  |---------|---------|---------|
339
292
  | Firecrawl | Web crawling | https://www.firecrawl.dev |
340
- | OpenAI | Embeddings | https://platform.openai.com |
293
+ | OpenAI | Embeddings/LLM | https://platform.openai.com |
294
+ | Anthropic | LLM | https://console.anthropic.com |
341
295
  | Qdrant Cloud | Vector store | https://cloud.qdrant.io |
342
296
 
343
297
  ## Troubleshooting
344
298
 
345
- ### "Config file not found"
346
-
347
- Run `cursor-rag setup` to create the configuration.
348
-
349
- ### MCP server not showing in Cursor
299
+ ### Config file not found
300
+ Run `cursor-rag setup` to create configuration.
350
301
 
351
- 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
352
304
  2. Restart Cursor IDE
353
- 3. Check the server path is correct
305
+ 3. Verify server path is correct
354
306
 
355
- ### Firecrawl errors
307
+ ### Rules optimizer shows 0 rules
308
+ Ensure the path is absolute (e.g., `/Users/you/.cursor/rules` not `~/.cursor/rules`)
356
309
 
357
- Ensure your Firecrawl API key is valid and starts with `fc-`.
358
-
359
- ### ChromaDB permission errors
360
-
361
- 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.
362
312
 
363
313
  ## Development
364
314
 
365
315
  ```bash
366
- # Install dependencies
367
- npm install
368
-
369
- # Build
370
- 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
+ ```
371
321
 
372
- # Development mode (watch)
373
- npm run dev
322
+ ## Contributing
374
323
 
375
- # Link for testing
376
- npm link
377
- ```
324
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
378
325
 
379
326
  ## License
380
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"}