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.
Files changed (144) hide show
  1. package/README.md +354 -0
  2. package/bin/cursor-rag.js +18 -0
  3. package/dist/adapters/embeddings/index.d.ts +5 -0
  4. package/dist/adapters/embeddings/index.d.ts.map +1 -0
  5. package/dist/adapters/embeddings/index.js +16 -0
  6. package/dist/adapters/embeddings/index.js.map +1 -0
  7. package/dist/adapters/embeddings/ollama.d.ts +11 -0
  8. package/dist/adapters/embeddings/ollama.d.ts.map +1 -0
  9. package/dist/adapters/embeddings/ollama.js +30 -0
  10. package/dist/adapters/embeddings/ollama.js.map +1 -0
  11. package/dist/adapters/embeddings/openai.d.ts +11 -0
  12. package/dist/adapters/embeddings/openai.d.ts.map +1 -0
  13. package/dist/adapters/embeddings/openai.js +28 -0
  14. package/dist/adapters/embeddings/openai.js.map +1 -0
  15. package/dist/adapters/embeddings/types.d.ts +6 -0
  16. package/dist/adapters/embeddings/types.d.ts.map +1 -0
  17. package/dist/adapters/embeddings/types.js +2 -0
  18. package/dist/adapters/embeddings/types.js.map +1 -0
  19. package/dist/adapters/embeddings/xenova.d.ts +11 -0
  20. package/dist/adapters/embeddings/xenova.d.ts.map +1 -0
  21. package/dist/adapters/embeddings/xenova.js +26 -0
  22. package/dist/adapters/embeddings/xenova.js.map +1 -0
  23. package/dist/adapters/vector/chroma.d.ts +23 -0
  24. package/dist/adapters/vector/chroma.d.ts.map +1 -0
  25. package/dist/adapters/vector/chroma.js +91 -0
  26. package/dist/adapters/vector/chroma.js.map +1 -0
  27. package/dist/adapters/vector/index.d.ts +5 -0
  28. package/dist/adapters/vector/index.d.ts.map +1 -0
  29. package/dist/adapters/vector/index.js +22 -0
  30. package/dist/adapters/vector/index.js.map +1 -0
  31. package/dist/adapters/vector/memory.d.ts +22 -0
  32. package/dist/adapters/vector/memory.d.ts.map +1 -0
  33. package/dist/adapters/vector/memory.js +105 -0
  34. package/dist/adapters/vector/memory.js.map +1 -0
  35. package/dist/adapters/vector/qdrant.d.ts +14 -0
  36. package/dist/adapters/vector/qdrant.d.ts.map +1 -0
  37. package/dist/adapters/vector/qdrant.js +120 -0
  38. package/dist/adapters/vector/qdrant.js.map +1 -0
  39. package/dist/adapters/vector/redis.d.ts +31 -0
  40. package/dist/adapters/vector/redis.d.ts.map +1 -0
  41. package/dist/adapters/vector/redis.js +164 -0
  42. package/dist/adapters/vector/redis.js.map +1 -0
  43. package/dist/adapters/vector/vectorize.d.ts +10 -0
  44. package/dist/adapters/vector/vectorize.d.ts.map +1 -0
  45. package/dist/adapters/vector/vectorize.js +22 -0
  46. package/dist/adapters/vector/vectorize.js.map +1 -0
  47. package/dist/cli/commands/dashboard.d.ts +3 -0
  48. package/dist/cli/commands/dashboard.d.ts.map +1 -0
  49. package/dist/cli/commands/dashboard.js +23 -0
  50. package/dist/cli/commands/dashboard.js.map +1 -0
  51. package/dist/cli/commands/ingest.d.ts +3 -0
  52. package/dist/cli/commands/ingest.d.ts.map +1 -0
  53. package/dist/cli/commands/ingest.js +133 -0
  54. package/dist/cli/commands/ingest.js.map +1 -0
  55. package/dist/cli/commands/search.d.ts +3 -0
  56. package/dist/cli/commands/search.d.ts.map +1 -0
  57. package/dist/cli/commands/search.js +39 -0
  58. package/dist/cli/commands/search.js.map +1 -0
  59. package/dist/cli/commands/setup.d.ts +3 -0
  60. package/dist/cli/commands/setup.d.ts.map +1 -0
  61. package/dist/cli/commands/setup.js +311 -0
  62. package/dist/cli/commands/setup.js.map +1 -0
  63. package/dist/cli/commands/status.d.ts +3 -0
  64. package/dist/cli/commands/status.d.ts.map +1 -0
  65. package/dist/cli/commands/status.js +39 -0
  66. package/dist/cli/commands/status.js.map +1 -0
  67. package/dist/cli/index.d.ts +3 -0
  68. package/dist/cli/index.d.ts.map +1 -0
  69. package/dist/cli/index.js +34 -0
  70. package/dist/cli/index.js.map +1 -0
  71. package/dist/dashboard/public/index.html +819 -0
  72. package/dist/dashboard/server.d.ts +10 -0
  73. package/dist/dashboard/server.d.ts.map +1 -0
  74. package/dist/dashboard/server.js +397 -0
  75. package/dist/dashboard/server.js.map +1 -0
  76. package/dist/integrations/index.d.ts +3 -0
  77. package/dist/integrations/index.d.ts.map +1 -0
  78. package/dist/integrations/index.js +3 -0
  79. package/dist/integrations/index.js.map +1 -0
  80. package/dist/integrations/mcp-gateway.d.ts +91 -0
  81. package/dist/integrations/mcp-gateway.d.ts.map +1 -0
  82. package/dist/integrations/mcp-gateway.js +128 -0
  83. package/dist/integrations/mcp-gateway.js.map +1 -0
  84. package/dist/integrations/openskills.d.ts +67 -0
  85. package/dist/integrations/openskills.d.ts.map +1 -0
  86. package/dist/integrations/openskills.js +223 -0
  87. package/dist/integrations/openskills.js.map +1 -0
  88. package/dist/proxy/index.d.ts +29 -0
  89. package/dist/proxy/index.d.ts.map +1 -0
  90. package/dist/proxy/index.js +124 -0
  91. package/dist/proxy/index.js.map +1 -0
  92. package/dist/server/index.d.ts +2 -0
  93. package/dist/server/index.d.ts.map +1 -0
  94. package/dist/server/index.js +43 -0
  95. package/dist/server/index.js.map +1 -0
  96. package/dist/server/tools/crawl.d.ts +15 -0
  97. package/dist/server/tools/crawl.d.ts.map +1 -0
  98. package/dist/server/tools/crawl.js +97 -0
  99. package/dist/server/tools/crawl.js.map +1 -0
  100. package/dist/server/tools/gateway.d.ts +27 -0
  101. package/dist/server/tools/gateway.d.ts.map +1 -0
  102. package/dist/server/tools/gateway.js +58 -0
  103. package/dist/server/tools/gateway.js.map +1 -0
  104. package/dist/server/tools/index.d.ts +10 -0
  105. package/dist/server/tools/index.d.ts.map +1 -0
  106. package/dist/server/tools/index.js +302 -0
  107. package/dist/server/tools/index.js.map +1 -0
  108. package/dist/server/tools/ingest.d.ts +15 -0
  109. package/dist/server/tools/ingest.d.ts.map +1 -0
  110. package/dist/server/tools/ingest.js +84 -0
  111. package/dist/server/tools/ingest.js.map +1 -0
  112. package/dist/server/tools/list-sources.d.ts +9 -0
  113. package/dist/server/tools/list-sources.d.ts.map +1 -0
  114. package/dist/server/tools/list-sources.js +63 -0
  115. package/dist/server/tools/list-sources.js.map +1 -0
  116. package/dist/server/tools/recursive-query.d.ts +16 -0
  117. package/dist/server/tools/recursive-query.d.ts.map +1 -0
  118. package/dist/server/tools/recursive-query.js +65 -0
  119. package/dist/server/tools/recursive-query.js.map +1 -0
  120. package/dist/server/tools/search.d.ts +15 -0
  121. package/dist/server/tools/search.d.ts.map +1 -0
  122. package/dist/server/tools/search.js +20 -0
  123. package/dist/server/tools/search.js.map +1 -0
  124. package/dist/server/tools/skills.d.ts +30 -0
  125. package/dist/server/tools/skills.d.ts.map +1 -0
  126. package/dist/server/tools/skills.js +85 -0
  127. package/dist/server/tools/skills.js.map +1 -0
  128. package/dist/services/chunker.d.ts +3 -0
  129. package/dist/services/chunker.d.ts.map +1 -0
  130. package/dist/services/chunker.js +75 -0
  131. package/dist/services/chunker.js.map +1 -0
  132. package/dist/services/config.d.ts +8 -0
  133. package/dist/services/config.d.ts.map +1 -0
  134. package/dist/services/config.js +66 -0
  135. package/dist/services/config.js.map +1 -0
  136. package/dist/services/query-decomposer.d.ts +44 -0
  137. package/dist/services/query-decomposer.d.ts.map +1 -0
  138. package/dist/services/query-decomposer.js +79 -0
  139. package/dist/services/query-decomposer.js.map +1 -0
  140. package/dist/types/index.d.ts +93 -0
  141. package/dist/types/index.d.ts.map +1 -0
  142. package/dist/types/index.js +2 -0
  143. package/dist/types/index.js.map +1 -0
  144. package/package.json +56 -0
@@ -0,0 +1,22 @@
1
+ export class VectorizeAdapter {
2
+ // Cloudflare Vectorize is accessed via environment bindings in Workers
3
+ // For a Node.js MCP server, this would need to use Cloudflare API
4
+ // This is a placeholder implementation
5
+ constructor(config) {
6
+ // TODO: Initialize Cloudflare API client or worker bindings
7
+ throw new Error('Cloudflare Vectorize adapter not yet implemented. Use ChromaDB or Qdrant for now.');
8
+ }
9
+ async add(docs) {
10
+ throw new Error('Not implemented');
11
+ }
12
+ async search(embedding, options) {
13
+ throw new Error('Not implemented');
14
+ }
15
+ async delete(ids) {
16
+ throw new Error('Not implemented');
17
+ }
18
+ async count() {
19
+ throw new Error('Not implemented');
20
+ }
21
+ }
22
+ //# sourceMappingURL=vectorize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vectorize.js","sourceRoot":"","sources":["../../../src/adapters/vector/vectorize.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,gBAAgB;IAC3B,uEAAuE;IACvE,kEAAkE;IAClE,uCAAuC;IAEvC,YAAY,MAAiB;QAC3B,4DAA4D;QAC5D,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;IACvG,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAsB;QAC9B,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAmB,EAAE,OAAsB;QACtD,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAa;QACxB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const dashboardCommand: Command;
3
+ //# sourceMappingURL=dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,gBAAgB,SAmBzB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { loadConfig } from '../../services/config.js';
4
+ import { startDashboard } from '../../dashboard/server.js';
5
+ export const dashboardCommand = new Command('dashboard')
6
+ .description('Start the web dashboard')
7
+ .option('-p, --port <number>', 'Port to run dashboard on', '3333')
8
+ .action(async (options) => {
9
+ try {
10
+ // Verify config exists
11
+ loadConfig();
12
+ }
13
+ catch (error) {
14
+ console.error(chalk.red('Configuration not found. Run "cursor-rag setup" first.'));
15
+ process.exit(1);
16
+ }
17
+ const port = parseInt(options.port, 10);
18
+ console.log(chalk.bold('\n📊 Starting Cursor RAG Dashboard\n'));
19
+ console.log(` ${chalk.cyan(`http://localhost:${port}`)}\n`);
20
+ console.log(chalk.gray('Press Ctrl+C to stop\n'));
21
+ startDashboard(port);
22
+ });
23
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../src/cli/commands/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC;KACrD,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,CAAC;KACjE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,uBAAuB;QACvB,UAAU,EAAE,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAExC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAElD,cAAc,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const ingestCommand: Command;
3
+ //# sourceMappingURL=ingest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/ingest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,eAAO,MAAM,aAAa,SA0HtB,CAAC"}
@@ -0,0 +1,133 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import ora from 'ora';
4
+ import { readFileSync, statSync, readdirSync } from 'fs';
5
+ import { join, extname } from 'path';
6
+ import { loadConfig } from '../../services/config.js';
7
+ import { createVectorStore } from '../../adapters/vector/index.js';
8
+ import { createEmbedder } from '../../adapters/embeddings/index.js';
9
+ import { crawlAndIngestTool } from '../../server/tools/crawl.js';
10
+ import { ingestDocumentTool } from '../../server/tools/ingest.js';
11
+ export const ingestCommand = new Command('ingest')
12
+ .description('Ingest documents into knowledge base')
13
+ .argument('<source>', 'URL, file path, or directory')
14
+ .option('--crawl', 'Crawl website (for URLs)')
15
+ .option('--max-pages <n>', 'Max pages to crawl', '100')
16
+ .option('--max-depth <n>', 'Max crawl depth', '3')
17
+ .action(async (source, options) => {
18
+ const spinner = ora('Loading configuration...').start();
19
+ try {
20
+ const config = loadConfig();
21
+ const vectorStore = createVectorStore(config.vectorStore, config);
22
+ const embedder = await createEmbedder(config.embeddings, config);
23
+ const deps = { vectorStore, embedder, config };
24
+ spinner.succeed('Configuration loaded');
25
+ if (source.startsWith('http') && options.crawl) {
26
+ spinner.start('Crawling and ingesting...');
27
+ const result = await crawlAndIngestTool({
28
+ url: source,
29
+ maxPages: parseInt(options.maxPages || '100', 10),
30
+ maxDepth: parseInt(options.maxDepth || '3', 10)
31
+ }, deps);
32
+ spinner.stop();
33
+ if (result.isError) {
34
+ console.error(chalk.red(result.content[0].text));
35
+ process.exit(1);
36
+ }
37
+ else {
38
+ console.log(chalk.green(result.content[0].text));
39
+ }
40
+ }
41
+ else if (source.startsWith('http')) {
42
+ spinner.start('Fetching and ingesting single page...');
43
+ try {
44
+ const response = await fetch(source);
45
+ if (!response.ok) {
46
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
47
+ }
48
+ const text = await response.text();
49
+ const result = await ingestDocumentTool({
50
+ source: text,
51
+ title: new URL(source).pathname.split('/').pop() || source,
52
+ metadata: { source, url: source }
53
+ }, deps);
54
+ spinner.stop();
55
+ if (result.isError) {
56
+ console.error(chalk.red(result.content[0].text));
57
+ process.exit(1);
58
+ }
59
+ else {
60
+ console.log(chalk.green(result.content[0].text));
61
+ }
62
+ }
63
+ catch (error) {
64
+ spinner.fail('Failed to fetch URL');
65
+ console.error(chalk.red(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`));
66
+ console.log(chalk.yellow('\nTip: Use --crawl flag for better web content extraction with Firecrawl'));
67
+ process.exit(1);
68
+ }
69
+ }
70
+ else {
71
+ spinner.start('Ingesting local files...');
72
+ try {
73
+ const stats = statSync(source);
74
+ if (stats.isDirectory()) {
75
+ const files = readdirSync(source, { recursive: true })
76
+ .map((f) => join(source, typeof f === 'string' ? f : f.toString()))
77
+ .filter(f => {
78
+ const ext = extname(f).toLowerCase();
79
+ return ['.txt', '.md', '.json', '.js', '.ts', '.jsx', '.tsx', '.py', '.java', '.cpp', '.c', '.h', '.cs', '.go', '.rs', '.rb', '.php', '.html', '.css', '.xml', '.yaml', '.yml'].includes(ext);
80
+ });
81
+ let totalChunks = 0;
82
+ for (const file of files) {
83
+ try {
84
+ const fileContent = readFileSync(file, 'utf-8');
85
+ const result = await ingestDocumentTool({
86
+ source: fileContent,
87
+ title: file,
88
+ metadata: { source: file, path: file }
89
+ }, deps);
90
+ if (!result.isError) {
91
+ const match = result.content[0].text.match(/(\d+)\s+chunks/);
92
+ if (match)
93
+ totalChunks += parseInt(match[1], 10);
94
+ }
95
+ }
96
+ catch (error) {
97
+ console.warn(chalk.yellow(`Skipped ${file}: ${error instanceof Error ? error.message : 'Unknown error'}`));
98
+ }
99
+ }
100
+ spinner.succeed(`Ingested ${files.length} files (${totalChunks} total chunks)`);
101
+ }
102
+ else {
103
+ const content = readFileSync(source, 'utf-8');
104
+ const result = await ingestDocumentTool({
105
+ source: content,
106
+ title: source,
107
+ metadata: { source, path: source }
108
+ }, deps);
109
+ spinner.stop();
110
+ if (result.isError) {
111
+ console.error(chalk.red(result.content[0].text));
112
+ process.exit(1);
113
+ }
114
+ else {
115
+ console.log(chalk.green(result.content[0].text));
116
+ }
117
+ }
118
+ }
119
+ catch (error) {
120
+ spinner.fail('Failed to read file');
121
+ console.error(chalk.red(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`));
122
+ process.exit(1);
123
+ }
124
+ }
125
+ console.log(chalk.green('\n✅ Ingestion complete!\n'));
126
+ }
127
+ catch (error) {
128
+ spinner.fail('Ingestion failed');
129
+ console.error(chalk.red(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`));
130
+ process.exit(1);
131
+ }
132
+ });
133
+ //# sourceMappingURL=ingest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../../src/cli/commands/ingest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const searchCommand: Command;
3
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,aAAa,SAoCtB,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { loadConfig } from '../../services/config.js';
4
+ import { createVectorStore } from '../../adapters/vector/index.js';
5
+ import { createEmbedder } from '../../adapters/embeddings/index.js';
6
+ export const searchCommand = new Command('search')
7
+ .description('Test search from CLI')
8
+ .argument('<query>', 'Search query')
9
+ .option('--top-k <n>', 'Number of results', '5')
10
+ .action(async (query, options) => {
11
+ try {
12
+ const config = loadConfig();
13
+ const vectorStore = createVectorStore(config.vectorStore, config);
14
+ const embedder = await createEmbedder(config.embeddings, config);
15
+ console.log(chalk.bold(`\n🔍 Searching for: "${query}"\n`));
16
+ const embedding = await embedder.embed(query);
17
+ const results = await vectorStore.search(embedding, {
18
+ topK: parseInt(options.topK || '5', 10)
19
+ });
20
+ if (results.length === 0) {
21
+ console.log(chalk.yellow('No results found.'));
22
+ console.log(chalk.gray('Try ingesting some documents first with: cursor-rag ingest <source>\n'));
23
+ return;
24
+ }
25
+ results.forEach((result, index) => {
26
+ console.log(chalk.bold(`\n${index + 1}. Score: ${result.score.toFixed(4)}`));
27
+ if (result.metadata.source) {
28
+ console.log(chalk.gray(` Source: ${result.metadata.source}`));
29
+ }
30
+ console.log(chalk.white(result.content.substring(0, 200) + (result.content.length > 200 ? '...' : '')));
31
+ });
32
+ console.log('');
33
+ }
34
+ catch (error) {
35
+ console.error(chalk.red(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`));
36
+ process.exit(1);
37
+ }
38
+ });
39
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,sBAAsB,CAAC;KACnC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;KACnC,MAAM,CAAC,aAAa,EAAE,mBAAmB,EAAE,GAAG,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAEjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,KAAK,KAAK,CAAC,CAAC,CAAC;QAE5D,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE;YAClD,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;SACxC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC,CAAC;YACjG,OAAO;QACT,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,CAAC,MAAW,EAAE,KAAa,EAAE,EAAE;YAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7E,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1G,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QAC/F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const setupCommand: Command;
3
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,YAAY,SA+DrB,CAAC"}
@@ -0,0 +1,311 @@
1
+ import { Command } from 'commander';
2
+ import inquirer from 'inquirer';
3
+ import chalk from 'chalk';
4
+ import ora from 'ora';
5
+ import { writeConfig, registerWithCursor } from '../../services/config.js';
6
+ export const setupCommand = new Command('setup')
7
+ .description('Interactive setup wizard')
8
+ .option('--vector-store <type>', 'Vector store: chroma, qdrant, vectorize')
9
+ .option('--embeddings <type>', 'Embeddings: xenova, openai, ollama')
10
+ .action(async (options) => {
11
+ console.log(chalk.bold('\n🚀 Cursor Recursive RAG Setup\n'));
12
+ // Step 1: Vector Store Selection
13
+ const vectorStore = options.vectorStore || await promptVectorStore();
14
+ // Step 2: Embedding Model Selection
15
+ const embeddings = options.embeddings || await promptEmbeddings();
16
+ // Step 3: API Keys (conditional)
17
+ const apiKeys = await promptApiKeys(vectorStore, embeddings);
18
+ // Step 4: Proxy Configuration (optional)
19
+ const proxy = await promptProxy();
20
+ // Step 5: Integrations (optional)
21
+ const { mcpGateway, openSkills } = await promptIntegrations();
22
+ // Step 6: Validate connections
23
+ const spinner = ora('Validating configuration...').start();
24
+ try {
25
+ await validateConfig({ vectorStore, embeddings, apiKeys, proxy, mcpGateway, openSkills });
26
+ spinner.succeed('Configuration validated');
27
+ }
28
+ catch (error) {
29
+ spinner.fail(`Validation failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
30
+ console.error(chalk.red('\nPlease check your configuration and try again.\n'));
31
+ process.exit(1);
32
+ }
33
+ // Step 7: Write config
34
+ const config = {
35
+ vectorStore: vectorStore,
36
+ embeddings: embeddings,
37
+ apiKeys,
38
+ proxy,
39
+ dashboard: {
40
+ enabled: true,
41
+ port: 3333
42
+ },
43
+ mcpGateway,
44
+ openSkills
45
+ };
46
+ writeConfig(config);
47
+ // Step 8: Register with Cursor
48
+ try {
49
+ await registerWithCursor();
50
+ console.log(chalk.green('✅ MCP server registered with Cursor'));
51
+ }
52
+ catch (error) {
53
+ console.warn(chalk.yellow(`⚠️ Could not auto-register with Cursor: ${error instanceof Error ? error.message : 'Unknown error'}`));
54
+ console.warn(chalk.yellow(' You may need to manually add the server to ~/.cursor/mcp.json'));
55
+ }
56
+ console.log(chalk.green('\n✅ Setup complete!\n'));
57
+ console.log('Next steps:');
58
+ console.log(' 1. Restart Cursor IDE');
59
+ console.log(' 2. Use @recursive-rag in chat');
60
+ console.log(' 3. Run: cursor-rag ingest <url> to add docs');
61
+ console.log(' 4. Run: cursor-rag dashboard to view the web UI\n');
62
+ });
63
+ async function promptVectorStore() {
64
+ const { vectorStore } = await inquirer.prompt([{
65
+ type: 'list',
66
+ name: 'vectorStore',
67
+ message: 'Select vector store:',
68
+ default: 'redis',
69
+ choices: [
70
+ { name: 'Redis Stack (recommended, persistent) - docker run -p 6379:6379 redis/redis-stack-server', value: 'redis' },
71
+ { name: 'Qdrant (persistent, local Docker or cloud) - docker run -p 6333:6333 qdrant/qdrant', value: 'qdrant' },
72
+ { name: 'Memory (in-process, non-persistent, testing only)', value: 'memory' },
73
+ { name: 'ChromaDB (requires separate server) - docker run -p 8000:8000 chromadb/chroma', value: 'chroma' },
74
+ { name: 'Cloudflare Vectorize (serverless, requires Cloudflare account)', value: 'vectorize' }
75
+ ]
76
+ }]);
77
+ return vectorStore;
78
+ }
79
+ async function promptEmbeddings() {
80
+ const { embeddings } = await inquirer.prompt([{
81
+ type: 'list',
82
+ name: 'embeddings',
83
+ message: 'Select embedding model:',
84
+ choices: [
85
+ { name: 'Local (Xenova/transformers.js) - Free, private', value: 'xenova' },
86
+ { name: 'Ollama - Local, configurable models', value: 'ollama' },
87
+ { name: 'OpenAI text-embedding-3-small - High quality', value: 'openai' }
88
+ ]
89
+ }]);
90
+ return embeddings;
91
+ }
92
+ async function promptApiKeys(vectorStore, embeddings) {
93
+ const apiKeys = {};
94
+ // OpenAI API key (for OpenAI embeddings or if needed)
95
+ if (embeddings === 'openai') {
96
+ const { openaiKey } = await inquirer.prompt([{
97
+ type: 'password',
98
+ name: 'openaiKey',
99
+ message: 'Enter OpenAI API key (starts with sk-):',
100
+ validate: (input) => {
101
+ if (!input || !input.startsWith('sk-')) {
102
+ return 'OpenAI API key must start with sk-';
103
+ }
104
+ return true;
105
+ }
106
+ }]);
107
+ apiKeys.openai = openaiKey;
108
+ }
109
+ // Firecrawl API key (optional but recommended)
110
+ const { useFirecrawl } = await inquirer.prompt([{
111
+ type: 'confirm',
112
+ name: 'useFirecrawl',
113
+ message: 'Do you want to use Firecrawl for web crawling? (recommended)',
114
+ default: true
115
+ }]);
116
+ if (useFirecrawl) {
117
+ const { firecrawlKey } = await inquirer.prompt([{
118
+ type: 'password',
119
+ name: 'firecrawlKey',
120
+ message: 'Enter Firecrawl API key (starts with fc-):',
121
+ validate: (input) => {
122
+ if (!input || !input.startsWith('fc-')) {
123
+ return 'Firecrawl API key must start with fc-';
124
+ }
125
+ return true;
126
+ }
127
+ }]);
128
+ apiKeys.firecrawl = firecrawlKey;
129
+ }
130
+ // Redis configuration (if using Redis)
131
+ if (vectorStore === 'redis') {
132
+ const { redisUrl } = await inquirer.prompt([{
133
+ type: 'input',
134
+ name: 'redisUrl',
135
+ message: 'Redis URL (default: redis://localhost:6379):',
136
+ default: 'redis://localhost:6379'
137
+ }]);
138
+ apiKeys.redis = {
139
+ url: redisUrl
140
+ };
141
+ }
142
+ // Qdrant configuration (if using Qdrant)
143
+ if (vectorStore === 'qdrant') {
144
+ const { qdrantUrl } = await inquirer.prompt([{
145
+ type: 'input',
146
+ name: 'qdrantUrl',
147
+ message: 'Qdrant URL (default: http://localhost:6333):',
148
+ default: 'http://localhost:6333'
149
+ }]);
150
+ const { qdrantApiKey } = await inquirer.prompt([{
151
+ type: 'password',
152
+ name: 'qdrantApiKey',
153
+ message: 'Qdrant API key (optional, press Enter to skip):',
154
+ default: ''
155
+ }]);
156
+ apiKeys.qdrant = {
157
+ url: qdrantUrl,
158
+ apiKey: qdrantApiKey || undefined
159
+ };
160
+ }
161
+ // Ollama configuration (if using Ollama)
162
+ if (embeddings === 'ollama') {
163
+ const { ollamaUrl } = await inquirer.prompt([{
164
+ type: 'input',
165
+ name: 'ollamaUrl',
166
+ message: 'Ollama base URL (default: http://localhost:11434):',
167
+ default: 'http://localhost:11434'
168
+ }]);
169
+ const { ollamaModel } = await inquirer.prompt([{
170
+ type: 'input',
171
+ name: 'ollamaModel',
172
+ message: 'Ollama embedding model (default: nomic-embed-text):',
173
+ default: 'nomic-embed-text'
174
+ }]);
175
+ apiKeys.ollama = {
176
+ baseUrl: ollamaUrl,
177
+ model: ollamaModel
178
+ };
179
+ }
180
+ return apiKeys;
181
+ }
182
+ async function promptProxy() {
183
+ const { useProxy } = await inquirer.prompt([{
184
+ type: 'confirm',
185
+ name: 'useProxy',
186
+ message: 'Do you want to configure a rotating proxy for URL fetching?',
187
+ default: false
188
+ }]);
189
+ if (!useProxy) {
190
+ return { enabled: false, driver: 'none' };
191
+ }
192
+ const { driver } = await inquirer.prompt([{
193
+ type: 'list',
194
+ name: 'driver',
195
+ message: 'Select proxy provider:',
196
+ choices: [
197
+ { name: 'PacketStream (residential proxies)', value: 'packetstream' },
198
+ { name: 'SmartProxy', value: 'smartproxy' }
199
+ ]
200
+ }]);
201
+ const defaults = driver === 'packetstream'
202
+ ? { host: 'proxy.packetstream.io', port: 31112 }
203
+ : { host: 'gate.smartproxy.com', port: 7000 };
204
+ const { host } = await inquirer.prompt([{
205
+ type: 'input',
206
+ name: 'host',
207
+ message: `Proxy host (default: ${defaults.host}):`,
208
+ default: defaults.host
209
+ }]);
210
+ const { port } = await inquirer.prompt([{
211
+ type: 'input',
212
+ name: 'port',
213
+ message: `Proxy port (default: ${defaults.port}):`,
214
+ default: defaults.port.toString()
215
+ }]);
216
+ const { username } = await inquirer.prompt([{
217
+ type: 'input',
218
+ name: 'username',
219
+ message: 'Proxy username:',
220
+ validate: (input) => input.trim() ? true : 'Username is required'
221
+ }]);
222
+ const { password } = await inquirer.prompt([{
223
+ type: 'password',
224
+ name: 'password',
225
+ message: 'Proxy password:',
226
+ validate: (input) => input.trim() ? true : 'Password is required'
227
+ }]);
228
+ return {
229
+ enabled: true,
230
+ driver: driver,
231
+ host,
232
+ port: parseInt(port, 10),
233
+ username,
234
+ password
235
+ };
236
+ }
237
+ async function promptIntegrations() {
238
+ console.log(chalk.cyan('\n📦 Optional Integrations\n'));
239
+ // MCP Gateway
240
+ const { useMcpGateway } = await inquirer.prompt([{
241
+ type: 'confirm',
242
+ name: 'useMcpGateway',
243
+ message: 'Enable MCP Gateway integration? (aggregates 87+ tools with token optimization)',
244
+ default: false
245
+ }]);
246
+ let mcpGateway = { enabled: false, url: 'http://localhost:3010' };
247
+ if (useMcpGateway) {
248
+ const { gatewayUrl } = await inquirer.prompt([{
249
+ type: 'input',
250
+ name: 'gatewayUrl',
251
+ message: 'MCP Gateway URL:',
252
+ default: 'http://localhost:3010'
253
+ }]);
254
+ const { gatewayApiKey } = await inquirer.prompt([{
255
+ type: 'password',
256
+ name: 'gatewayApiKey',
257
+ message: 'Gateway API key (optional, press Enter to skip):',
258
+ default: ''
259
+ }]);
260
+ mcpGateway = {
261
+ enabled: true,
262
+ url: gatewayUrl,
263
+ apiKey: gatewayApiKey || undefined
264
+ };
265
+ }
266
+ // OpenSkills
267
+ const { useOpenSkills } = await inquirer.prompt([{
268
+ type: 'confirm',
269
+ name: 'useOpenSkills',
270
+ message: 'Enable OpenSkills integration? (universal skills loader for AI agents)',
271
+ default: false
272
+ }]);
273
+ let openSkills = { enabled: false, autoIngestSkills: false };
274
+ if (useOpenSkills) {
275
+ const { autoIngest } = await inquirer.prompt([{
276
+ type: 'confirm',
277
+ name: 'autoIngest',
278
+ message: 'Auto-ingest installed skills into RAG knowledge base?',
279
+ default: true
280
+ }]);
281
+ openSkills = {
282
+ enabled: true,
283
+ autoIngestSkills: autoIngest
284
+ };
285
+ }
286
+ return { mcpGateway, openSkills };
287
+ }
288
+ async function validateConfig(config) {
289
+ // Basic validation - can be expanded later
290
+ if (!config.vectorStore || !config.embeddings) {
291
+ throw new Error('Vector store and embeddings must be specified');
292
+ }
293
+ if (config.embeddings === 'openai' && !config.apiKeys?.openai) {
294
+ throw new Error('OpenAI API key is required for OpenAI embeddings');
295
+ }
296
+ // Validate proxy config if enabled
297
+ if (config.proxy?.enabled) {
298
+ if (!config.proxy.username || !config.proxy.password) {
299
+ throw new Error('Proxy username and password are required when proxy is enabled');
300
+ }
301
+ }
302
+ // Validate MCP Gateway if enabled
303
+ if (config.mcpGateway?.enabled) {
304
+ if (!config.mcpGateway.url) {
305
+ throw new Error('MCP Gateway URL is required when integration is enabled');
306
+ }
307
+ }
308
+ // TODO: Add actual connection tests for vector stores and embeddings
309
+ // For now, just validate that required fields are present
310
+ }
311
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const statusCommand: Command;
3
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,aAAa,SAmCtB,CAAC"}