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.
- package/README.md +179 -203
- 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/adapters/vector/index.d.ts.map +1 -1
- package/dist/adapters/vector/index.js +8 -0
- package/dist/adapters/vector/index.js.map +1 -1
- package/dist/adapters/vector/redis-native.d.ts +35 -0
- package/dist/adapters/vector/redis-native.d.ts.map +1 -0
- package/dist/adapters/vector/redis-native.js +170 -0
- package/dist/adapters/vector/redis-native.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/commands/setup.js +5 -4
- package/dist/cli/commands/setup.js.map +1 -1
- 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 +1982 -13
- package/dist/dashboard/server.d.ts +1 -8
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +846 -13
- 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/crawl.d.ts.map +1 -1
- package/dist/server/tools/crawl.js +8 -0
- package/dist/server/tools/crawl.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/ingest.d.ts.map +1 -1
- package/dist/server/tools/ingest.js +5 -0
- package/dist/server/tools/ingest.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/server/tools/recursive-query.d.ts.map +1 -1
- package/dist/server/tools/recursive-query.js +6 -0
- package/dist/server/tools/recursive-query.js.map +1 -1
- package/dist/server/tools/search.d.ts.map +1 -1
- package/dist/server/tools/search.js +6 -0
- package/dist/server/tools/search.js.map +1 -1
- package/dist/services/activity-log.d.ts +10 -0
- package/dist/services/activity-log.d.ts.map +1 -0
- package/dist/services/activity-log.js +53 -0
- package/dist/services/activity-log.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 +9 -2
- 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 +4569 -0
- package/docs/cursor-recursive-rag-tasks.md +1355 -0
- package/package.json +6 -3
- package/restart-rag.sh +16 -0
package/README.md
CHANGED
|
@@ -5,22 +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
|
-
|
|
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
|
|
23
|
-
- **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
|
|
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
|
|
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
|
|
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
|
-
###
|
|
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
|
|
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
|
-
###
|
|
104
|
-
|
|
105
|
-
Add documents to the knowledge base.
|
|
89
|
+
### Ingestion
|
|
106
90
|
|
|
107
91
|
```bash
|
|
108
|
-
|
|
109
|
-
cursor-rag ingest
|
|
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
|
-
###
|
|
122
|
-
|
|
123
|
-
Test search from the command line.
|
|
97
|
+
### Search
|
|
124
98
|
|
|
125
99
|
```bash
|
|
126
|
-
cursor-rag search "how to
|
|
100
|
+
cursor-rag search "how to authenticate users"
|
|
127
101
|
cursor-rag search "database queries" --top-k 10
|
|
128
102
|
```
|
|
129
103
|
|
|
130
|
-
###
|
|
131
|
-
|
|
132
|
-
Show current configuration and knowledge base statistics.
|
|
104
|
+
### Chat History
|
|
133
105
|
|
|
134
106
|
```bash
|
|
135
|
-
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
|
|
136
111
|
```
|
|
137
112
|
|
|
138
|
-
###
|
|
139
|
-
|
|
140
|
-
Start the web dashboard for monitoring and configuration.
|
|
113
|
+
### Rules Optimizer
|
|
141
114
|
|
|
142
115
|
```bash
|
|
143
|
-
cursor-rag
|
|
144
|
-
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
|
|
145
124
|
```
|
|
146
125
|
|
|
147
|
-
|
|
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
|
-
|
|
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
|
-
|
|
135
|
+
## Web Dashboard
|
|
156
136
|
|
|
157
|
-
|
|
137
|
+
Start with `cursor-rag dashboard` (default: http://localhost:3333)
|
|
158
138
|
|
|
159
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
164
|
+
### Settings Tab
|
|
177
165
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
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
|
|
175
|
+
Configuration stored in `~/.cursor-rag/config.json`:
|
|
191
176
|
|
|
192
177
|
```json
|
|
193
178
|
{
|
|
194
|
-
"vectorStore": "
|
|
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
|
-
|
|
201
|
-
|
|
202
|
-
|
|
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
|
-
###
|
|
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
|
-
|
|
219
|
-
|
|
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
|
-
###
|
|
203
|
+
### Rules Analyzer Config
|
|
222
204
|
|
|
223
|
-
|
|
205
|
+
Stored in `~/.cursor-rag/rules-config.json`:
|
|
224
206
|
|
|
225
207
|
```json
|
|
226
208
|
{
|
|
227
|
-
"
|
|
228
|
-
"
|
|
229
|
-
"
|
|
230
|
-
"
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
243
|
+
## Usage in Cursor
|
|
244
244
|
|
|
245
|
-
|
|
246
|
-
{
|
|
247
|
-
"openSkills": {
|
|
248
|
-
"enabled": true,
|
|
249
|
-
"autoIngestSkills": true
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
```
|
|
245
|
+
### Via @Docs (Recommended)
|
|
253
246
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
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
|
-
|
|
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
|
-
|
|
254
|
+
Ask naturally and the AI will use appropriate tools:
|
|
267
255
|
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
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
|
|
288
|
-
│ ├── server/ # MCP server and
|
|
267
|
+
│ ├── cli/ # CLI commands
|
|
268
|
+
│ ├── server/ # MCP server and tools
|
|
269
|
+
│ ├── dashboard/ # Web dashboard
|
|
289
270
|
│ ├── adapters/
|
|
290
|
-
│ │ ├── vector/ # Vector store adapters
|
|
291
|
-
│ │
|
|
292
|
-
│
|
|
293
|
-
│
|
|
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
|
-
|
|
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
|
-
-
|
|
304
|
-
- Optional: Ollama (
|
|
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
|
-
###
|
|
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
|
-
|
|
302
|
+
### MCP server not in Cursor
|
|
303
|
+
1. Check `~/.cursor/mcp.json` has `recursive-rag` entry
|
|
323
304
|
2. Restart Cursor IDE
|
|
324
|
-
3.
|
|
305
|
+
3. Verify server path is correct
|
|
325
306
|
|
|
326
|
-
###
|
|
307
|
+
### Rules optimizer shows 0 rules
|
|
308
|
+
Ensure the path is absolute (e.g., `/Users/you/.cursor/rules` not `~/.cursor/rules`)
|
|
327
309
|
|
|
328
|
-
|
|
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
|
|
339
|
-
|
|
340
|
-
#
|
|
341
|
-
|
|
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
|
-
|
|
344
|
-
npm run dev
|
|
322
|
+
## Contributing
|
|
345
323
|
|
|
346
|
-
|
|
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"}
|