cursor-recursive-rag 0.2.0-alpha.1
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 +354 -0
- package/bin/cursor-rag.js +18 -0
- package/dist/adapters/embeddings/index.d.ts +5 -0
- package/dist/adapters/embeddings/index.d.ts.map +1 -0
- package/dist/adapters/embeddings/index.js +16 -0
- package/dist/adapters/embeddings/index.js.map +1 -0
- package/dist/adapters/embeddings/ollama.d.ts +11 -0
- package/dist/adapters/embeddings/ollama.d.ts.map +1 -0
- package/dist/adapters/embeddings/ollama.js +30 -0
- package/dist/adapters/embeddings/ollama.js.map +1 -0
- package/dist/adapters/embeddings/openai.d.ts +11 -0
- package/dist/adapters/embeddings/openai.d.ts.map +1 -0
- package/dist/adapters/embeddings/openai.js +28 -0
- package/dist/adapters/embeddings/openai.js.map +1 -0
- package/dist/adapters/embeddings/types.d.ts +6 -0
- package/dist/adapters/embeddings/types.d.ts.map +1 -0
- package/dist/adapters/embeddings/types.js +2 -0
- package/dist/adapters/embeddings/types.js.map +1 -0
- package/dist/adapters/embeddings/xenova.d.ts +11 -0
- package/dist/adapters/embeddings/xenova.d.ts.map +1 -0
- package/dist/adapters/embeddings/xenova.js +26 -0
- package/dist/adapters/embeddings/xenova.js.map +1 -0
- package/dist/adapters/vector/chroma.d.ts +23 -0
- package/dist/adapters/vector/chroma.d.ts.map +1 -0
- package/dist/adapters/vector/chroma.js +91 -0
- package/dist/adapters/vector/chroma.js.map +1 -0
- package/dist/adapters/vector/index.d.ts +5 -0
- package/dist/adapters/vector/index.d.ts.map +1 -0
- package/dist/adapters/vector/index.js +22 -0
- package/dist/adapters/vector/index.js.map +1 -0
- package/dist/adapters/vector/memory.d.ts +22 -0
- package/dist/adapters/vector/memory.d.ts.map +1 -0
- package/dist/adapters/vector/memory.js +105 -0
- package/dist/adapters/vector/memory.js.map +1 -0
- package/dist/adapters/vector/qdrant.d.ts +14 -0
- package/dist/adapters/vector/qdrant.d.ts.map +1 -0
- package/dist/adapters/vector/qdrant.js +120 -0
- package/dist/adapters/vector/qdrant.js.map +1 -0
- package/dist/adapters/vector/redis.d.ts +31 -0
- package/dist/adapters/vector/redis.d.ts.map +1 -0
- package/dist/adapters/vector/redis.js +164 -0
- package/dist/adapters/vector/redis.js.map +1 -0
- package/dist/adapters/vector/vectorize.d.ts +10 -0
- package/dist/adapters/vector/vectorize.d.ts.map +1 -0
- package/dist/adapters/vector/vectorize.js +22 -0
- package/dist/adapters/vector/vectorize.js.map +1 -0
- package/dist/cli/commands/dashboard.d.ts +3 -0
- package/dist/cli/commands/dashboard.d.ts.map +1 -0
- package/dist/cli/commands/dashboard.js +23 -0
- package/dist/cli/commands/dashboard.js.map +1 -0
- package/dist/cli/commands/ingest.d.ts +3 -0
- package/dist/cli/commands/ingest.d.ts.map +1 -0
- package/dist/cli/commands/ingest.js +133 -0
- package/dist/cli/commands/ingest.js.map +1 -0
- package/dist/cli/commands/search.d.ts +3 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +39 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +3 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +311 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +39 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +34 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/dashboard/public/index.html +819 -0
- package/dist/dashboard/server.d.ts +10 -0
- package/dist/dashboard/server.d.ts.map +1 -0
- package/dist/dashboard/server.js +397 -0
- package/dist/dashboard/server.js.map +1 -0
- package/dist/integrations/index.d.ts +3 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +3 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/mcp-gateway.d.ts +91 -0
- package/dist/integrations/mcp-gateway.d.ts.map +1 -0
- package/dist/integrations/mcp-gateway.js +128 -0
- package/dist/integrations/mcp-gateway.js.map +1 -0
- package/dist/integrations/openskills.d.ts +67 -0
- package/dist/integrations/openskills.d.ts.map +1 -0
- package/dist/integrations/openskills.js +223 -0
- package/dist/integrations/openskills.js.map +1 -0
- package/dist/proxy/index.d.ts +29 -0
- package/dist/proxy/index.d.ts.map +1 -0
- package/dist/proxy/index.js +124 -0
- package/dist/proxy/index.js.map +1 -0
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +43 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/tools/crawl.d.ts +15 -0
- package/dist/server/tools/crawl.d.ts.map +1 -0
- package/dist/server/tools/crawl.js +97 -0
- package/dist/server/tools/crawl.js.map +1 -0
- package/dist/server/tools/gateway.d.ts +27 -0
- package/dist/server/tools/gateway.d.ts.map +1 -0
- package/dist/server/tools/gateway.js +58 -0
- package/dist/server/tools/gateway.js.map +1 -0
- package/dist/server/tools/index.d.ts +10 -0
- package/dist/server/tools/index.d.ts.map +1 -0
- package/dist/server/tools/index.js +302 -0
- package/dist/server/tools/index.js.map +1 -0
- package/dist/server/tools/ingest.d.ts +15 -0
- package/dist/server/tools/ingest.d.ts.map +1 -0
- package/dist/server/tools/ingest.js +84 -0
- package/dist/server/tools/ingest.js.map +1 -0
- package/dist/server/tools/list-sources.d.ts +9 -0
- package/dist/server/tools/list-sources.d.ts.map +1 -0
- package/dist/server/tools/list-sources.js +63 -0
- package/dist/server/tools/list-sources.js.map +1 -0
- package/dist/server/tools/recursive-query.d.ts +16 -0
- package/dist/server/tools/recursive-query.d.ts.map +1 -0
- package/dist/server/tools/recursive-query.js +65 -0
- package/dist/server/tools/recursive-query.js.map +1 -0
- package/dist/server/tools/search.d.ts +15 -0
- package/dist/server/tools/search.d.ts.map +1 -0
- package/dist/server/tools/search.js +20 -0
- package/dist/server/tools/search.js.map +1 -0
- package/dist/server/tools/skills.d.ts +30 -0
- package/dist/server/tools/skills.d.ts.map +1 -0
- package/dist/server/tools/skills.js +85 -0
- package/dist/server/tools/skills.js.map +1 -0
- package/dist/services/chunker.d.ts +3 -0
- package/dist/services/chunker.d.ts.map +1 -0
- package/dist/services/chunker.js +75 -0
- package/dist/services/chunker.js.map +1 -0
- package/dist/services/config.d.ts +8 -0
- package/dist/services/config.d.ts.map +1 -0
- package/dist/services/config.js +66 -0
- package/dist/services/config.js.map +1 -0
- package/dist/services/query-decomposer.d.ts +44 -0
- package/dist/services/query-decomposer.d.ts.map +1 -0
- package/dist/services/query-decomposer.js +79 -0
- package/dist/services/query-decomposer.js.map +1 -0
- package/dist/types/index.d.ts +93 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query decomposition for recursive RAG
|
|
3
|
+
*
|
|
4
|
+
* This service breaks down complex queries into sub-questions
|
|
5
|
+
* and generates follow-up questions based on retrieved context.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Decompose a complex query into sub-questions
|
|
9
|
+
*
|
|
10
|
+
* For now, uses simple heuristics. In the future, this could use
|
|
11
|
+
* an LLM to intelligently decompose queries.
|
|
12
|
+
*/
|
|
13
|
+
export function decomposeQuery(query) {
|
|
14
|
+
// Simple heuristic: split by "and" or commas if they appear to separate distinct questions
|
|
15
|
+
const parts = query.split(/\s+(?:and|,)\s+/i).filter(p => p.trim().length > 0);
|
|
16
|
+
// If query seems complex (long, multiple clauses), split it
|
|
17
|
+
if (parts.length > 1 && parts.every(p => p.includes('?'))) {
|
|
18
|
+
return parts.map(p => p.trim());
|
|
19
|
+
}
|
|
20
|
+
// Check for multiple question patterns
|
|
21
|
+
const questionMarks = (query.match(/\?/g) || []).length;
|
|
22
|
+
if (questionMarks > 1) {
|
|
23
|
+
// Split by question marks
|
|
24
|
+
return query.split(/\?+/)
|
|
25
|
+
.map(q => q.trim())
|
|
26
|
+
.filter(q => q.length > 0)
|
|
27
|
+
.map(q => q + '?');
|
|
28
|
+
}
|
|
29
|
+
// Single question - return as is
|
|
30
|
+
return [query];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Generate follow-up questions based on retrieved context and original query
|
|
34
|
+
*
|
|
35
|
+
* This is a placeholder for a more sophisticated implementation that would:
|
|
36
|
+
* 1. Analyze gaps in the retrieved context
|
|
37
|
+
* 2. Identify entities or concepts that need more detail
|
|
38
|
+
* 3. Generate targeted follow-up queries
|
|
39
|
+
*/
|
|
40
|
+
export function generateFollowUps(originalQuery, context, maxFollowUps = 3) {
|
|
41
|
+
const followUps = [];
|
|
42
|
+
// Simple heuristic: if we have few chunks, generate follow-ups
|
|
43
|
+
const totalChunks = context.reduce((sum, c) => sum + c.chunks.length, 0);
|
|
44
|
+
if (totalChunks < 5) {
|
|
45
|
+
// Try to identify what's missing
|
|
46
|
+
const lowerQuery = originalQuery.toLowerCase();
|
|
47
|
+
if (lowerQuery.includes('how')) {
|
|
48
|
+
followUps.push({
|
|
49
|
+
query: `What are the steps to ${originalQuery.replace(/how\s+/i, '')}`,
|
|
50
|
+
reasoning: 'Need more detailed steps'
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
if (lowerQuery.includes('why')) {
|
|
54
|
+
followUps.push({
|
|
55
|
+
query: `What are the reasons for ${originalQuery.replace(/why\s+/i, '')}`,
|
|
56
|
+
reasoning: 'Need more context on reasons'
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return followUps.slice(0, maxFollowUps);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Assess confidence that we have sufficient information to answer the query
|
|
64
|
+
*
|
|
65
|
+
* Simple heuristic based on number of chunks and their relevance scores
|
|
66
|
+
*/
|
|
67
|
+
export function assessConfidence(query, context) {
|
|
68
|
+
// Count relevant chunks (score > 0.7)
|
|
69
|
+
const relevantChunks = context.reduce((sum, c) => {
|
|
70
|
+
return sum + c.chunks.filter(chunk => (chunk.score || 0) > 0.7).length;
|
|
71
|
+
}, 0);
|
|
72
|
+
// More chunks = higher confidence (capped)
|
|
73
|
+
const baseConfidence = Math.min(relevantChunks / 10, 0.9);
|
|
74
|
+
// Multiple iterations = we've done some exploration
|
|
75
|
+
const maxIteration = Math.max(...context.map(c => c.iteration || 0));
|
|
76
|
+
const iterationBonus = Math.min(maxIteration * 0.1, 0.2);
|
|
77
|
+
return Math.min(baseConfidence + iterationBonus, 1.0);
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=query-decomposer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-decomposer.js","sourceRoot":"","sources":["../../src/services/query-decomposer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
export interface VectorStore {
|
|
2
|
+
add(docs: VectorDocument[]): Promise<void>;
|
|
3
|
+
search(embedding: number[], options: SearchOptions): Promise<SearchResult[]>;
|
|
4
|
+
delete(ids: string[]): Promise<void>;
|
|
5
|
+
count(): Promise<number>;
|
|
6
|
+
}
|
|
7
|
+
export interface VectorDocument {
|
|
8
|
+
id: string;
|
|
9
|
+
embedding: number[];
|
|
10
|
+
content: string;
|
|
11
|
+
metadata: Record<string, any>;
|
|
12
|
+
}
|
|
13
|
+
export interface ProxyConfig {
|
|
14
|
+
enabled: boolean;
|
|
15
|
+
driver: 'packetstream' | 'smartproxy' | 'none';
|
|
16
|
+
host?: string;
|
|
17
|
+
port?: number;
|
|
18
|
+
username?: string;
|
|
19
|
+
password?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface SearchResult {
|
|
22
|
+
id: string;
|
|
23
|
+
content: string;
|
|
24
|
+
metadata: Record<string, any>;
|
|
25
|
+
score: number;
|
|
26
|
+
}
|
|
27
|
+
export interface SearchOptions {
|
|
28
|
+
topK: number;
|
|
29
|
+
filter?: Record<string, any>;
|
|
30
|
+
}
|
|
31
|
+
export interface MCPGatewayConfig {
|
|
32
|
+
enabled: boolean;
|
|
33
|
+
url: string;
|
|
34
|
+
apiKey?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface OpenSkillsConfig {
|
|
37
|
+
enabled: boolean;
|
|
38
|
+
autoIngestSkills: boolean;
|
|
39
|
+
skillPaths?: string[];
|
|
40
|
+
}
|
|
41
|
+
export interface RAGConfig {
|
|
42
|
+
vectorStore: 'memory' | 'chroma' | 'qdrant' | 'redis' | 'vectorize';
|
|
43
|
+
embeddings: 'xenova' | 'openai' | 'ollama';
|
|
44
|
+
apiKeys?: {
|
|
45
|
+
openai?: string;
|
|
46
|
+
firecrawl?: string;
|
|
47
|
+
qdrant?: {
|
|
48
|
+
url?: string;
|
|
49
|
+
apiKey?: string;
|
|
50
|
+
};
|
|
51
|
+
redis?: {
|
|
52
|
+
url?: string;
|
|
53
|
+
};
|
|
54
|
+
ollama?: {
|
|
55
|
+
baseUrl?: string;
|
|
56
|
+
model?: string;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
vectorStoreConfig?: {
|
|
60
|
+
chromaUrl?: string;
|
|
61
|
+
redisUrl?: string;
|
|
62
|
+
vectorDim?: number;
|
|
63
|
+
[key: string]: any;
|
|
64
|
+
};
|
|
65
|
+
proxy?: ProxyConfig;
|
|
66
|
+
dashboard?: {
|
|
67
|
+
enabled: boolean;
|
|
68
|
+
port: number;
|
|
69
|
+
auth?: {
|
|
70
|
+
username: string;
|
|
71
|
+
password: string;
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
mcpGateway?: MCPGatewayConfig;
|
|
75
|
+
openSkills?: OpenSkillsConfig;
|
|
76
|
+
}
|
|
77
|
+
export interface ChunkOptions {
|
|
78
|
+
chunkSize?: number;
|
|
79
|
+
chunkOverlap?: number;
|
|
80
|
+
respectBoundaries?: boolean;
|
|
81
|
+
}
|
|
82
|
+
export interface Chunk {
|
|
83
|
+
text: string;
|
|
84
|
+
index: number;
|
|
85
|
+
metadata?: Record<string, any>;
|
|
86
|
+
}
|
|
87
|
+
export interface RecursiveQueryResult {
|
|
88
|
+
answer: string;
|
|
89
|
+
sources: SearchResult[];
|
|
90
|
+
iterations: number;
|
|
91
|
+
subQuestions: string[];
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cursor-recursive-rag",
|
|
3
|
+
"version": "0.2.0-alpha.1",
|
|
4
|
+
"description": "Recursive RAG MCP server for Cursor IDE with interactive setup",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"cursor-rag": "bin/cursor-rag.js"
|
|
8
|
+
},
|
|
9
|
+
"main": "./dist/server/index.js",
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc && npm run copy-static",
|
|
12
|
+
"copy-static": "mkdir -p dist/dashboard/public && cp -r src/dashboard/public/* dist/dashboard/public/",
|
|
13
|
+
"dev": "tsx watch src/cli/index.ts",
|
|
14
|
+
"start:server": "node dist/server/index.js",
|
|
15
|
+
"prepublishOnly": "npm run build",
|
|
16
|
+
"version:patch": "npm version patch --no-git-tag-version",
|
|
17
|
+
"version:minor": "npm version minor --no-git-tag-version",
|
|
18
|
+
"version:major": "npm version major --no-git-tag-version",
|
|
19
|
+
"release": "npm run build && git add -A && git commit -m \"chore: release v$(node -p \"require('./package.json').version\")\" && git tag v$(node -p \"require('./package.json').version\") && git push && git push --tags"
|
|
20
|
+
},
|
|
21
|
+
"keywords": [
|
|
22
|
+
"cursor",
|
|
23
|
+
"mcp",
|
|
24
|
+
"rag",
|
|
25
|
+
"recursive-rag",
|
|
26
|
+
"vector-store",
|
|
27
|
+
"embeddings"
|
|
28
|
+
],
|
|
29
|
+
"author": "garethdaine",
|
|
30
|
+
"license": "MIT",
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": ">=20.0.0"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
36
|
+
"@mendable/firecrawl-js": "^1.0.0",
|
|
37
|
+
"@qdrant/js-client-rest": "^1.9.0",
|
|
38
|
+
"@xenova/transformers": "^2.17.0",
|
|
39
|
+
"chalk": "^5.3.0",
|
|
40
|
+
"chromadb": "^1.8.0",
|
|
41
|
+
"commander": "^12.0.0",
|
|
42
|
+
"inquirer": "^9.2.0",
|
|
43
|
+
"ollama": "^0.5.0",
|
|
44
|
+
"openai": "^4.50.0",
|
|
45
|
+
"ora": "^8.0.0",
|
|
46
|
+
"redis": "^4.6.0",
|
|
47
|
+
"tiktoken": "^1.0.0",
|
|
48
|
+
"zod": "^3.23.0"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@types/inquirer": "^9.0.7",
|
|
52
|
+
"@types/node": "^20.11.0",
|
|
53
|
+
"tsx": "^4.7.1",
|
|
54
|
+
"typescript": "^5.3.3"
|
|
55
|
+
}
|
|
56
|
+
}
|