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.
- package/README.md +170 -223
- package/dist/adapters/llm/anthropic.d.ts +27 -0
- package/dist/adapters/llm/anthropic.d.ts.map +1 -0
- package/dist/adapters/llm/anthropic.js +287 -0
- package/dist/adapters/llm/anthropic.js.map +1 -0
- package/dist/adapters/llm/base.d.ts +62 -0
- package/dist/adapters/llm/base.d.ts.map +1 -0
- package/dist/adapters/llm/base.js +140 -0
- package/dist/adapters/llm/base.js.map +1 -0
- package/dist/adapters/llm/deepseek.d.ts +24 -0
- package/dist/adapters/llm/deepseek.d.ts.map +1 -0
- package/dist/adapters/llm/deepseek.js +228 -0
- package/dist/adapters/llm/deepseek.js.map +1 -0
- package/dist/adapters/llm/groq.d.ts +25 -0
- package/dist/adapters/llm/groq.d.ts.map +1 -0
- package/dist/adapters/llm/groq.js +265 -0
- package/dist/adapters/llm/groq.js.map +1 -0
- package/dist/adapters/llm/index.d.ts +62 -0
- package/dist/adapters/llm/index.d.ts.map +1 -0
- package/dist/adapters/llm/index.js +380 -0
- package/dist/adapters/llm/index.js.map +1 -0
- package/dist/adapters/llm/ollama.d.ts +23 -0
- package/dist/adapters/llm/ollama.d.ts.map +1 -0
- package/dist/adapters/llm/ollama.js +261 -0
- package/dist/adapters/llm/ollama.js.map +1 -0
- package/dist/adapters/llm/openai.d.ts +22 -0
- package/dist/adapters/llm/openai.d.ts.map +1 -0
- package/dist/adapters/llm/openai.js +232 -0
- package/dist/adapters/llm/openai.js.map +1 -0
- package/dist/adapters/llm/openrouter.d.ts +27 -0
- package/dist/adapters/llm/openrouter.d.ts.map +1 -0
- package/dist/adapters/llm/openrouter.js +305 -0
- package/dist/adapters/llm/openrouter.js.map +1 -0
- package/dist/cli/commands/chat.d.ts +4 -0
- package/dist/cli/commands/chat.d.ts.map +1 -0
- package/dist/cli/commands/chat.js +374 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/maintenance.d.ts +4 -0
- package/dist/cli/commands/maintenance.d.ts.map +1 -0
- package/dist/cli/commands/maintenance.js +237 -0
- package/dist/cli/commands/maintenance.js.map +1 -0
- package/dist/cli/commands/rules.d.ts +9 -0
- package/dist/cli/commands/rules.d.ts.map +1 -0
- package/dist/cli/commands/rules.js +639 -0
- package/dist/cli/commands/rules.js.map +1 -0
- package/dist/cli/index.js +6 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/config/memoryConfig.d.ts +427 -0
- package/dist/config/memoryConfig.d.ts.map +1 -0
- package/dist/config/memoryConfig.js +258 -0
- package/dist/config/memoryConfig.js.map +1 -0
- package/dist/config/rulesConfig.d.ts +486 -0
- package/dist/config/rulesConfig.d.ts.map +1 -0
- package/dist/config/rulesConfig.js +345 -0
- package/dist/config/rulesConfig.js.map +1 -0
- package/dist/dashboard/coreTools.d.ts +14 -0
- package/dist/dashboard/coreTools.d.ts.map +1 -0
- package/dist/dashboard/coreTools.js +413 -0
- package/dist/dashboard/coreTools.js.map +1 -0
- package/dist/dashboard/public/index.html +1910 -11
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +842 -0
- package/dist/dashboard/server.js.map +1 -1
- package/dist/dashboard/toolRegistry.d.ts +192 -0
- package/dist/dashboard/toolRegistry.d.ts.map +1 -0
- package/dist/dashboard/toolRegistry.js +322 -0
- package/dist/dashboard/toolRegistry.js.map +1 -0
- package/dist/proxy/index.d.ts +1 -1
- package/dist/proxy/index.d.ts.map +1 -1
- package/dist/proxy/index.js +9 -6
- package/dist/proxy/index.js.map +1 -1
- package/dist/server/index.js +21 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/tools/index.d.ts.map +1 -1
- package/dist/server/tools/index.js +19 -1
- package/dist/server/tools/index.js.map +1 -1
- package/dist/server/tools/memory.d.ts +250 -0
- package/dist/server/tools/memory.d.ts.map +1 -0
- package/dist/server/tools/memory.js +472 -0
- package/dist/server/tools/memory.js.map +1 -0
- package/dist/services/categoryManager.d.ts +110 -0
- package/dist/services/categoryManager.d.ts.map +1 -0
- package/dist/services/categoryManager.js +549 -0
- package/dist/services/categoryManager.js.map +1 -0
- package/dist/services/contextEnvironment.d.ts +206 -0
- package/dist/services/contextEnvironment.d.ts.map +1 -0
- package/dist/services/contextEnvironment.js +481 -0
- package/dist/services/contextEnvironment.js.map +1 -0
- package/dist/services/conversationProcessor.d.ts +99 -0
- package/dist/services/conversationProcessor.d.ts.map +1 -0
- package/dist/services/conversationProcessor.js +311 -0
- package/dist/services/conversationProcessor.js.map +1 -0
- package/dist/services/cursorChatReader.d.ts +129 -0
- package/dist/services/cursorChatReader.d.ts.map +1 -0
- package/dist/services/cursorChatReader.js +419 -0
- package/dist/services/cursorChatReader.js.map +1 -0
- package/dist/services/decayCalculator.d.ts +85 -0
- package/dist/services/decayCalculator.d.ts.map +1 -0
- package/dist/services/decayCalculator.js +182 -0
- package/dist/services/decayCalculator.js.map +1 -0
- package/dist/services/enhancedVectorStore.d.ts +102 -0
- package/dist/services/enhancedVectorStore.d.ts.map +1 -0
- package/dist/services/enhancedVectorStore.js +245 -0
- package/dist/services/enhancedVectorStore.js.map +1 -0
- package/dist/services/hybridScorer.d.ts +120 -0
- package/dist/services/hybridScorer.d.ts.map +1 -0
- package/dist/services/hybridScorer.js +334 -0
- package/dist/services/hybridScorer.js.map +1 -0
- package/dist/services/knowledgeExtractor.d.ts +45 -0
- package/dist/services/knowledgeExtractor.d.ts.map +1 -0
- package/dist/services/knowledgeExtractor.js +436 -0
- package/dist/services/knowledgeExtractor.js.map +1 -0
- package/dist/services/knowledgeStorage.d.ts +102 -0
- package/dist/services/knowledgeStorage.d.ts.map +1 -0
- package/dist/services/knowledgeStorage.js +383 -0
- package/dist/services/knowledgeStorage.js.map +1 -0
- package/dist/services/maintenanceScheduler.d.ts +89 -0
- package/dist/services/maintenanceScheduler.d.ts.map +1 -0
- package/dist/services/maintenanceScheduler.js +479 -0
- package/dist/services/maintenanceScheduler.js.map +1 -0
- package/dist/services/memoryMetadataStore.d.ts +62 -0
- package/dist/services/memoryMetadataStore.d.ts.map +1 -0
- package/dist/services/memoryMetadataStore.js +570 -0
- package/dist/services/memoryMetadataStore.js.map +1 -0
- package/dist/services/recursiveRetrieval.d.ts +122 -0
- package/dist/services/recursiveRetrieval.d.ts.map +1 -0
- package/dist/services/recursiveRetrieval.js +443 -0
- package/dist/services/recursiveRetrieval.js.map +1 -0
- package/dist/services/relationshipGraph.d.ts +77 -0
- package/dist/services/relationshipGraph.d.ts.map +1 -0
- package/dist/services/relationshipGraph.js +411 -0
- package/dist/services/relationshipGraph.js.map +1 -0
- package/dist/services/rlmSafeguards.d.ts +273 -0
- package/dist/services/rlmSafeguards.d.ts.map +1 -0
- package/dist/services/rlmSafeguards.js +705 -0
- package/dist/services/rlmSafeguards.js.map +1 -0
- package/dist/services/rulesAnalyzer.d.ts +119 -0
- package/dist/services/rulesAnalyzer.d.ts.map +1 -0
- package/dist/services/rulesAnalyzer.js +768 -0
- package/dist/services/rulesAnalyzer.js.map +1 -0
- package/dist/services/rulesMerger.d.ts +75 -0
- package/dist/services/rulesMerger.d.ts.map +1 -0
- package/dist/services/rulesMerger.js +404 -0
- package/dist/services/rulesMerger.js.map +1 -0
- package/dist/services/rulesParser.d.ts +127 -0
- package/dist/services/rulesParser.d.ts.map +1 -0
- package/dist/services/rulesParser.js +594 -0
- package/dist/services/rulesParser.js.map +1 -0
- package/dist/services/smartChunker.d.ts +110 -0
- package/dist/services/smartChunker.d.ts.map +1 -0
- package/dist/services/smartChunker.js +520 -0
- package/dist/services/smartChunker.js.map +1 -0
- package/dist/types/categories.d.ts +105 -0
- package/dist/types/categories.d.ts.map +1 -0
- package/dist/types/categories.js +108 -0
- package/dist/types/categories.js.map +1 -0
- package/dist/types/extractedKnowledge.d.ts +233 -0
- package/dist/types/extractedKnowledge.d.ts.map +1 -0
- package/dist/types/extractedKnowledge.js +56 -0
- package/dist/types/extractedKnowledge.js.map +1 -0
- package/dist/types/index.d.ts +7 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +12 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/llmProvider.d.ts +282 -0
- package/dist/types/llmProvider.d.ts.map +1 -0
- package/dist/types/llmProvider.js +48 -0
- package/dist/types/llmProvider.js.map +1 -0
- package/dist/types/memory.d.ts +227 -0
- package/dist/types/memory.d.ts.map +1 -0
- package/dist/types/memory.js +76 -0
- package/dist/types/memory.js.map +1 -0
- package/dist/types/relationships.d.ts +167 -0
- package/dist/types/relationships.d.ts.map +1 -0
- package/dist/types/relationships.js +106 -0
- package/dist/types/relationships.js.map +1 -0
- package/dist/types/rulesOptimizer.d.ts +345 -0
- package/dist/types/rulesOptimizer.d.ts.map +1 -0
- package/dist/types/rulesOptimizer.js +22 -0
- package/dist/types/rulesOptimizer.js.map +1 -0
- package/docs/cursor-recursive-rag-memory-spec.md +299 -5
- package/docs/cursor-recursive-rag-tasks.md +997 -154
- package/package.json +6 -3
- package/restart-rag.sh +16 -0
package/README.md
CHANGED
|
@@ -5,23 +5,39 @@
|
|
|
5
5
|
[](LICENSE)
|
|
6
6
|
[](https://nodejs.org)
|
|
7
7
|
|
|
8
|
-
Recursive RAG MCP server for Cursor IDE with interactive setup wizard and
|
|
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:**
|
|
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
|
|
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**:
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
- **
|
|
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
|
|
24
|
-
- **OpenSkills
|
|
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
|
|
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
|
|
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
|
-
###
|
|
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
|
|
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
|
-
###
|
|
106
|
-
|
|
107
|
-
Add documents to the knowledge base.
|
|
89
|
+
### Ingestion
|
|
108
90
|
|
|
109
91
|
```bash
|
|
110
|
-
|
|
111
|
-
cursor-rag ingest
|
|
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
|
-
###
|
|
124
|
-
|
|
125
|
-
Test search from the command line.
|
|
97
|
+
### Search
|
|
126
98
|
|
|
127
99
|
```bash
|
|
128
|
-
cursor-rag search "how to
|
|
100
|
+
cursor-rag search "how to authenticate users"
|
|
129
101
|
cursor-rag search "database queries" --top-k 10
|
|
130
102
|
```
|
|
131
103
|
|
|
132
|
-
###
|
|
133
|
-
|
|
134
|
-
Show current configuration and knowledge base statistics.
|
|
104
|
+
### Chat History
|
|
135
105
|
|
|
136
106
|
```bash
|
|
137
|
-
cursor-rag
|
|
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
|
-
###
|
|
141
|
-
|
|
142
|
-
Start the web dashboard for monitoring and configuration.
|
|
113
|
+
### Rules Optimizer
|
|
143
114
|
|
|
144
115
|
```bash
|
|
145
|
-
cursor-rag
|
|
146
|
-
cursor-rag
|
|
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
|
-
|
|
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
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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
|
-
|
|
135
|
+
## Web Dashboard
|
|
162
136
|
|
|
163
|
-
|
|
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
|
-
###
|
|
139
|
+
### Tabs
|
|
169
140
|
|
|
170
|
-
|
|
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
|
-
|
|
153
|
+
The Rules Optimizer panel provides one-click analysis and optimization:
|
|
176
154
|
|
|
177
|
-
|
|
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
|
-
|
|
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
|
-
###
|
|
164
|
+
### Settings Tab
|
|
183
165
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
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
|
|
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
|
-
"
|
|
211
|
-
|
|
212
|
-
|
|
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
|
|
230
|
-
| `redis` | Redis 8.x native vectors
|
|
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
|
-
###
|
|
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
|
-
|
|
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
|
-
"
|
|
254
|
-
"
|
|
255
|
-
"
|
|
256
|
-
"
|
|
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
|
-
|
|
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
|
-
|
|
228
|
+
Available when using Cursor IDE:
|
|
268
229
|
|
|
269
|
-
|
|
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
|
-
|
|
272
|
-
{
|
|
273
|
-
"openSkills": {
|
|
274
|
-
"enabled": true,
|
|
275
|
-
"autoIngestSkills": true
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
```
|
|
243
|
+
## Usage in Cursor
|
|
279
244
|
|
|
280
|
-
|
|
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
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
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
|
-
|
|
252
|
+
### Via MCP Tools
|
|
253
|
+
|
|
254
|
+
Ask naturally and the AI will use appropriate tools:
|
|
293
255
|
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
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
|
|
314
|
-
│ ├── server/ # MCP server and
|
|
267
|
+
│ ├── cli/ # CLI commands
|
|
268
|
+
│ ├── server/ # MCP server and tools
|
|
269
|
+
│ ├── dashboard/ # Web dashboard
|
|
315
270
|
│ ├── adapters/
|
|
316
|
-
│ │ ├── vector/ # Vector store adapters
|
|
317
|
-
│ │
|
|
318
|
-
│
|
|
319
|
-
│
|
|
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
|
-
|
|
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
|
-
-
|
|
330
|
-
|
|
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
|
-
###
|
|
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
|
-
|
|
302
|
+
### MCP server not in Cursor
|
|
303
|
+
1. Check `~/.cursor/mcp.json` has `recursive-rag` entry
|
|
352
304
|
2. Restart Cursor IDE
|
|
353
|
-
3.
|
|
305
|
+
3. Verify server path is correct
|
|
354
306
|
|
|
355
|
-
###
|
|
307
|
+
### Rules optimizer shows 0 rules
|
|
308
|
+
Ensure the path is absolute (e.g., `/Users/you/.cursor/rules` not `~/.cursor/rules`)
|
|
356
309
|
|
|
357
|
-
|
|
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
|
|
368
|
-
|
|
369
|
-
#
|
|
370
|
-
|
|
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
|
-
|
|
373
|
-
npm run dev
|
|
322
|
+
## Contributing
|
|
374
323
|
|
|
375
|
-
|
|
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"}
|