cursor-recursive-rag 0.2.0-alpha.2 → 0.2.0-alpha.3

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 (36) hide show
  1. package/README.md +47 -18
  2. package/dist/adapters/vector/index.d.ts.map +1 -1
  3. package/dist/adapters/vector/index.js +8 -0
  4. package/dist/adapters/vector/index.js.map +1 -1
  5. package/dist/adapters/vector/redis-native.d.ts +35 -0
  6. package/dist/adapters/vector/redis-native.d.ts.map +1 -0
  7. package/dist/adapters/vector/redis-native.js +170 -0
  8. package/dist/adapters/vector/redis-native.js.map +1 -0
  9. package/dist/cli/commands/setup.js +5 -4
  10. package/dist/cli/commands/setup.js.map +1 -1
  11. package/dist/dashboard/public/index.html +72 -2
  12. package/dist/dashboard/server.d.ts +1 -8
  13. package/dist/dashboard/server.d.ts.map +1 -1
  14. package/dist/dashboard/server.js +4 -13
  15. package/dist/dashboard/server.js.map +1 -1
  16. package/dist/server/tools/crawl.d.ts.map +1 -1
  17. package/dist/server/tools/crawl.js +8 -0
  18. package/dist/server/tools/crawl.js.map +1 -1
  19. package/dist/server/tools/ingest.d.ts.map +1 -1
  20. package/dist/server/tools/ingest.js +5 -0
  21. package/dist/server/tools/ingest.js.map +1 -1
  22. package/dist/server/tools/recursive-query.d.ts.map +1 -1
  23. package/dist/server/tools/recursive-query.js +6 -0
  24. package/dist/server/tools/recursive-query.js.map +1 -1
  25. package/dist/server/tools/search.d.ts.map +1 -1
  26. package/dist/server/tools/search.js +6 -0
  27. package/dist/server/tools/search.js.map +1 -1
  28. package/dist/services/activity-log.d.ts +10 -0
  29. package/dist/services/activity-log.d.ts.map +1 -0
  30. package/dist/services/activity-log.js +53 -0
  31. package/dist/services/activity-log.js.map +1 -0
  32. package/dist/types/index.d.ts +2 -1
  33. package/dist/types/index.d.ts.map +1 -1
  34. package/docs/cursor-recursive-rag-memory-spec.md +4275 -0
  35. package/docs/cursor-recursive-rag-tasks.md +512 -0
  36. package/package.json +1 -1
package/README.md CHANGED
@@ -12,11 +12,12 @@ Recursive RAG MCP server for Cursor IDE with interactive setup wizard and web da
12
12
  ## Features
13
13
 
14
14
  - **Recursive Query**: Multi-hop retrieval with query decomposition and iterative refinement
15
- - **Configurable Vector Stores**: Redis Stack (recommended), Qdrant (local/cloud), ChromaDB, Cloudflare Vectorize
15
+ - **Configurable Vector Stores**: Redis Stack (Docker), Redis 8.x Native (Homebrew), Qdrant (local/cloud), ChromaDB, Cloudflare Vectorize
16
16
  - **Configurable Embeddings**: Local (Xenova/transformers.js), OpenAI, Ollama
17
17
  - **Web Crawling**: Firecrawl integration for documentation ingestion
18
18
  - **Rotating Proxy Support**: Optional PacketStream/SmartProxy integration for URL fetching
19
- - **Web Dashboard**: Real-time monitoring, search, and configuration UI (Tailwind CSS)
19
+ - **Web Dashboard**: Real-time monitoring, search, activity logging, and configuration UI (Tailwind CSS)
20
+ - **Activity Logging**: Persistent activity log across MCP tools and dashboard (stored in `~/.cursor-rag/activity.json`)
20
21
  - **Interactive Setup**: Guided configuration wizard
21
22
  - **MCP Integration**: Automatic registration with Cursor IDE
22
23
  - **MCP Gateway Integration**: Connect to [MCP Gateway](https://github.com/abdullah1854/MCPGateway) for 87+ aggregated tools with token optimization
@@ -69,12 +70,13 @@ npm link # Makes cursor-rag available globally
69
70
 
70
71
  Run `cursor-rag setup` to configure the system. The wizard will:
71
72
 
72
- 1. **Select Vector Store** (Redis recommended):
73
- - **Redis Stack** (default): Persistent, fast HNSW search, `docker run -p 6379:6379 redis/redis-stack-server`
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`
74
76
  - **Qdrant**: Persistent, local Docker or cloud, `docker run -p 6333:6333 qdrant/qdrant`
75
- - **Memory**: In-process, non-persistent (testing only)
77
+ - **Memory**: In-process, file-based persistence (testing/development)
76
78
  - **ChromaDB**: Requires separate server, `docker run -p 8000:8000 chromadb/chroma`
77
- - **Cloudflare Vectorize**: Serverless (not yet implemented)
79
+ - **Cloudflare Vectorize**: Serverless (requires Cloudflare account)
78
80
 
79
81
  2. **Select Embedding Model**:
80
82
  - **Xenova (local)**: Free, private, ~384 dimensions
@@ -145,10 +147,12 @@ cursor-rag dashboard --port 8080
145
147
  ```
146
148
 
147
149
  The dashboard provides:
148
- - **Overview**: Total chunks, vector store stats, recent activity
150
+ - **Overview**: Total chunks, vector store stats, MCP Gateway status, OpenSkills count
149
151
  - **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
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
152
156
 
153
157
  ## Usage in Cursor
154
158
 
@@ -191,26 +195,48 @@ Configuration is stored in `~/.cursor-rag/config.json`:
191
195
 
192
196
  ```json
193
197
  {
194
- "vectorStore": "chroma",
198
+ "vectorStore": "redis-stack",
195
199
  "embeddings": "xenova",
196
200
  "apiKeys": {
197
- "firecrawl": "fc-..."
201
+ "firecrawl": "fc-...",
202
+ "redis": {
203
+ "url": "redis://localhost:6379"
204
+ }
198
205
  },
199
206
  "proxy": {
200
- "enabled": true,
201
- "driver": "packetstream",
202
- "host": "proxy.packetstream.io",
203
- "port": 31112,
204
- "username": "your-username",
205
- "password": "your-password"
207
+ "enabled": false,
208
+ "driver": "none"
206
209
  },
207
210
  "dashboard": {
208
211
  "enabled": true,
209
212
  "port": 3333
213
+ },
214
+ "mcpGateway": {
215
+ "enabled": true,
216
+ "url": "http://localhost:3010"
217
+ },
218
+ "openSkills": {
219
+ "enabled": true,
220
+ "autoIngestSkills": true
210
221
  }
211
222
  }
212
223
  ```
213
224
 
225
+ ### Vector Store Options
226
+
227
+ | Type | Description | Setup |
228
+ |------|-------------|-------|
229
+ | `redis-stack` | Redis Stack with RediSearch module (Docker) | `docker run -d -p 6379:6379 redis/redis-stack-server` |
230
+ | `redis` | Redis 8.x native vectors (Homebrew) | `brew install redis && brew services start redis` |
231
+ | `qdrant` | Qdrant vector database | `docker run -d -p 6333:6333 qdrant/qdrant` |
232
+ | `chroma` | ChromaDB | `docker run -d -p 8000:8000 chromadb/chroma` |
233
+ | `memory` | In-memory with file persistence | No setup required |
234
+ | `vectorize` | Cloudflare Vectorize | Requires Cloudflare account |
235
+
236
+ ### Activity Logging
237
+
238
+ All operations (searches, ingestions, crawls) are logged to `~/.cursor-rag/activity.json`. This log is shared between the MCP server and dashboard, so activities from Cursor IDE chats will appear in the dashboard's Activity tab.
239
+
214
240
  ### Proxy Configuration
215
241
 
216
242
  The optional rotating proxy is used for direct URL fetching (not needed when using Firecrawl, which handles proxying internally). Supported providers:
@@ -300,7 +326,10 @@ cursor-recursive-rag/
300
326
 
301
327
  - Node.js >= 20.0.0
302
328
  - Cursor IDE (for MCP integration)
303
- - Optional: Docker (for Qdrant local)
329
+ - One of the following vector stores:
330
+ - Docker (for Redis Stack, Qdrant, ChromaDB)
331
+ - Redis 8.x (via Homebrew: `brew install redis`)
332
+ - Memory adapter (no dependencies, for testing)
304
333
  - Optional: Ollama (for local embeddings)
305
334
 
306
335
  ## API Keys
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/vector/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAMrG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;AAEpE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,WAAW,CAe9E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/vector/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAOrG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;AAEpE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,WAAW,CAsB9E"}
@@ -3,6 +3,7 @@ import { QdrantAdapter } from './qdrant.js';
3
3
  import { VectorizeAdapter } from './vectorize.js';
4
4
  import { MemoryAdapter } from './memory.js';
5
5
  import { RedisAdapter } from './redis.js';
6
+ import { RedisNativeAdapter } from './redis-native.js';
6
7
  export function createVectorStore(type, config) {
7
8
  switch (type) {
8
9
  case 'memory':
@@ -12,6 +13,13 @@ export function createVectorStore(type, config) {
12
13
  case 'qdrant':
13
14
  return new QdrantAdapter(config);
14
15
  case 'redis':
16
+ // Use native Redis 8.x adapter by default, fall back to RediSearch if specified
17
+ if (config.vectorStoreConfig?.useRediSearch) {
18
+ return new RedisAdapter(config);
19
+ }
20
+ return new RedisNativeAdapter(config);
21
+ case 'redis-stack':
22
+ // Explicit Redis Stack/RediSearch adapter
15
23
  return new RedisAdapter(config);
16
24
  case 'vectorize':
17
25
  return new VectorizeAdapter(config);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/vector/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK1C,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,MAAiB;IAC/D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,QAAQ;YACX,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,QAAQ;YACX,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,OAAO;YACV,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,WAAW;YACd,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACtC;YACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/vector/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAKvD,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,MAAiB;IAC/D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,QAAQ;YACX,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,QAAQ;YACX,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,OAAO;YACV,gFAAgF;YAChF,IAAI,MAAM,CAAC,iBAAiB,EAAE,aAAa,EAAE,CAAC;gBAC5C,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;YAClC,CAAC;YACD,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACxC,KAAK,aAAa;YAChB,0CAA0C;YAC1C,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,WAAW;YACd,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACtC;YACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
@@ -0,0 +1,35 @@
1
+ import type { VectorStore, VectorDocument, SearchResult, SearchOptions } from '../../types/index.js';
2
+ import type { RAGConfig } from '../../types/index.js';
3
+ /**
4
+ * Redis 8.x Native Vector Adapter
5
+ *
6
+ * Uses Redis 8.x native vector commands (VADD, VSIM, VREM, VCARD).
7
+ * Works with standard Redis 8.x installed via Homebrew or other methods.
8
+ *
9
+ * Command syntax (Redis 8.x):
10
+ * - VADD key VALUES dim v1 v2 ... vN element [CAS] [NOQUANT|BIN|Q8]
11
+ * - VSIM key VALUES dim v1 v2 ... vN [WITHSCORES] [COUNT count]
12
+ * - VREM key element [element ...]
13
+ * - VCARD key
14
+ *
15
+ * Features:
16
+ * - Persistent storage
17
+ * - HNSW index for approximate nearest neighbor search
18
+ * - No additional modules required (uses native Redis 8.x vector support)
19
+ */
20
+ export declare class RedisNativeAdapter implements VectorStore {
21
+ private client;
22
+ private setName;
23
+ private metadataPrefix;
24
+ private vectorDim;
25
+ private isConnected;
26
+ private redisUrl;
27
+ constructor(config: RAGConfig);
28
+ private initialize;
29
+ add(docs: VectorDocument[]): Promise<void>;
30
+ search(embedding: number[], options: SearchOptions): Promise<SearchResult[]>;
31
+ delete(ids: string[]): Promise<void>;
32
+ count(): Promise<number>;
33
+ disconnect(): Promise<void>;
34
+ }
35
+ //# sourceMappingURL=redis-native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-native.d.ts","sourceRoot":"","sources":["../../../src/adapters/vector/redis-native.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAItD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IACpD,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,EAAE,SAAS;YAUf,UAAU;IAgBlB,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuC1C,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAqE5E,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAapC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAWxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAMlC"}
@@ -0,0 +1,170 @@
1
+ import { createClient } from 'redis';
2
+ /**
3
+ * Redis 8.x Native Vector Adapter
4
+ *
5
+ * Uses Redis 8.x native vector commands (VADD, VSIM, VREM, VCARD).
6
+ * Works with standard Redis 8.x installed via Homebrew or other methods.
7
+ *
8
+ * Command syntax (Redis 8.x):
9
+ * - VADD key VALUES dim v1 v2 ... vN element [CAS] [NOQUANT|BIN|Q8]
10
+ * - VSIM key VALUES dim v1 v2 ... vN [WITHSCORES] [COUNT count]
11
+ * - VREM key element [element ...]
12
+ * - VCARD key
13
+ *
14
+ * Features:
15
+ * - Persistent storage
16
+ * - HNSW index for approximate nearest neighbor search
17
+ * - No additional modules required (uses native Redis 8.x vector support)
18
+ */
19
+ export class RedisNativeAdapter {
20
+ client;
21
+ setName = 'cursor-rag-vectors';
22
+ metadataPrefix = 'cursor-rag:meta:';
23
+ vectorDim;
24
+ isConnected = false;
25
+ redisUrl;
26
+ constructor(config) {
27
+ this.redisUrl = config.apiKeys?.redis?.url || config.vectorStoreConfig?.redisUrl || 'redis://localhost:6379';
28
+ this.vectorDim = config.vectorStoreConfig?.vectorDim || 384;
29
+ this.client = createClient({ url: this.redisUrl });
30
+ this.client.on('error', (err) => {
31
+ console.error('Redis Client Error:', err.message);
32
+ });
33
+ }
34
+ async initialize() {
35
+ if (!this.isConnected) {
36
+ try {
37
+ await this.client.connect();
38
+ this.isConnected = true;
39
+ }
40
+ catch (error) {
41
+ const err = error;
42
+ throw new Error(`Failed to connect to Redis at ${this.redisUrl}. ` +
43
+ `Ensure Redis 8.x is running.\n` +
44
+ `Error: ${err.message}`);
45
+ }
46
+ }
47
+ }
48
+ async add(docs) {
49
+ await this.initialize();
50
+ for (const doc of docs) {
51
+ // VADD key VALUES dim v1 v2 ... vN element
52
+ // Build command: VADD cursor-rag-vectors VALUES 384 0.1 0.2 ... element_id
53
+ const cmd = [
54
+ 'VADD',
55
+ this.setName,
56
+ 'VALUES',
57
+ doc.embedding.length.toString(),
58
+ ...doc.embedding.map(v => v.toString()),
59
+ doc.id
60
+ ];
61
+ try {
62
+ await this.client.sendCommand(cmd);
63
+ }
64
+ catch (error) {
65
+ const err = error;
66
+ if (err.message?.includes('unknown command')) {
67
+ throw new Error('Redis native vector commands not available. ' +
68
+ 'Ensure you have Redis 8.x with vector support or use Redis Stack.');
69
+ }
70
+ throw error;
71
+ }
72
+ // Store metadata separately
73
+ const metadataKey = `${this.metadataPrefix}${doc.id}`;
74
+ await this.client.hSet(metadataKey, {
75
+ id: doc.id,
76
+ content: doc.content,
77
+ source: doc.metadata?.source || 'unknown',
78
+ metadata: JSON.stringify(doc.metadata || {})
79
+ });
80
+ }
81
+ }
82
+ async search(embedding, options) {
83
+ await this.initialize();
84
+ const topK = options.topK || 10;
85
+ try {
86
+ // VSIM key VALUES dim v1 v2 ... vN COUNT count WITHSCORES
87
+ const cmd = [
88
+ 'VSIM',
89
+ this.setName,
90
+ 'VALUES',
91
+ embedding.length.toString(),
92
+ ...embedding.map(v => v.toString()),
93
+ 'COUNT', topK.toString(),
94
+ 'WITHSCORES'
95
+ ];
96
+ const results = await this.client.sendCommand(cmd);
97
+ if (!results || results.length === 0) {
98
+ return [];
99
+ }
100
+ // Results come as [id1, score1, id2, score2, ...]
101
+ const searchResults = [];
102
+ for (let i = 0; i < results.length; i += 2) {
103
+ const id = results[i];
104
+ const score = parseFloat(results[i + 1]);
105
+ // Get metadata
106
+ const metadataKey = `${this.metadataPrefix}${id}`;
107
+ const metadataRaw = await this.client.hGetAll(metadataKey);
108
+ if (metadataRaw && metadataRaw.content) {
109
+ let metadata = { source: metadataRaw.source || 'unknown' };
110
+ try {
111
+ metadata = JSON.parse(metadataRaw.metadata || '{}');
112
+ }
113
+ catch {
114
+ // Keep default
115
+ }
116
+ // Apply source filter if specified
117
+ if (options.filter?.source) {
118
+ const allowedSources = Array.isArray(options.filter.source.$in)
119
+ ? options.filter.source.$in
120
+ : [options.filter.source];
121
+ if (!allowedSources.includes(metadata.source)) {
122
+ continue;
123
+ }
124
+ }
125
+ searchResults.push({
126
+ id,
127
+ content: metadataRaw.content,
128
+ metadata,
129
+ score // Redis 8 VSIM returns similarity score directly (1 = identical)
130
+ });
131
+ }
132
+ }
133
+ return searchResults;
134
+ }
135
+ catch (error) {
136
+ const err = error;
137
+ console.error('Redis native search error:', err.message);
138
+ return [];
139
+ }
140
+ }
141
+ async delete(ids) {
142
+ await this.initialize();
143
+ for (const id of ids) {
144
+ try {
145
+ await this.client.sendCommand(['VREM', this.setName, id]);
146
+ await this.client.del(`${this.metadataPrefix}${id}`);
147
+ }
148
+ catch (error) {
149
+ // Ignore errors for non-existent keys
150
+ }
151
+ }
152
+ }
153
+ async count() {
154
+ await this.initialize();
155
+ try {
156
+ const result = await this.client.sendCommand(['VCARD', this.setName]);
157
+ return result || 0;
158
+ }
159
+ catch {
160
+ return 0;
161
+ }
162
+ }
163
+ async disconnect() {
164
+ if (this.isConnected) {
165
+ await this.client.quit();
166
+ this.isConnected = false;
167
+ }
168
+ }
169
+ }
170
+ //# sourceMappingURL=redis-native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-native.js","sourceRoot":"","sources":["../../../src/adapters/vector/redis-native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAMrC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,kBAAkB;IACrB,MAAM,CAAkB;IACxB,OAAO,GAAG,oBAAoB,CAAC;IAC/B,cAAc,GAAG,kBAAkB,CAAC;IACpC,SAAS,CAAS;IAClB,WAAW,GAAG,KAAK,CAAC;IACpB,QAAQ,CAAS;IAEzB,YAAY,MAAiB;QAC3B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,MAAM,CAAC,iBAAiB,EAAE,QAAQ,IAAI,wBAAwB,CAAC;QAC7G,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,iBAAiB,EAAE,SAAS,IAAI,GAAG,CAAC;QAC5D,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC9B,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,GAAG,GAAG,KAAc,CAAC;gBAC3B,MAAM,IAAI,KAAK,CACb,iCAAiC,IAAI,CAAC,QAAQ,IAAI;oBAClD,gCAAgC;oBAChC,UAAU,GAAG,CAAC,OAAO,EAAE,CACxB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAsB;QAC9B,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAExB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,2CAA2C;YAC3C,2EAA2E;YAC3E,MAAM,GAAG,GAAa;gBACpB,MAAM;gBACN,IAAI,CAAC,OAAO;gBACZ,QAAQ;gBACR,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE;gBAC/B,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACvC,GAAG,CAAC,EAAE;aACP,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,GAAG,GAAG,KAAc,CAAC;gBAC3B,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAC7C,MAAM,IAAI,KAAK,CACb,8CAA8C;wBAC9C,mEAAmE,CACpE,CAAC;gBACJ,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;YAED,4BAA4B;YAC5B,MAAM,WAAW,GAAG,GAAG,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;YACtD,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE;gBAClC,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,SAAS;gBACzC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;aAC7C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAmB,EAAE,OAAsB;QACtD,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAExB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;QAEhC,IAAI,CAAC;YACH,0DAA0D;YAC1D,MAAM,GAAG,GAAa;gBACpB,MAAM;gBACN,IAAI,CAAC,OAAO;gBACZ,QAAQ;gBACR,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE;gBAC3B,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACnC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACxB,YAAY;aACb,CAAC;YAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAoB,CAAC;YAEtE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrC,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,kDAAkD;YAClD,MAAM,aAAa,GAAmB,EAAE,CAAC;YAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3C,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAW,CAAC;gBAChC,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC;gBAEnD,eAAe;gBACf,MAAM,WAAW,GAAG,GAAG,IAAI,CAAC,cAAc,GAAG,EAAE,EAAE,CAAC;gBAClD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAE3D,IAAI,WAAW,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;oBACvC,IAAI,QAAQ,GAAwB,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;oBAChF,IAAI,CAAC;wBACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;oBACtD,CAAC;oBAAC,MAAM,CAAC;wBACP,eAAe;oBACjB,CAAC;oBAED,mCAAmC;oBACnC,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;wBAC3B,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;4BAC7D,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG;4BAC3B,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBAC5B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;4BAC9C,SAAS;wBACX,CAAC;oBACH,CAAC;oBAED,aAAa,CAAC,IAAI,CAAC;wBACjB,EAAE;wBACF,OAAO,EAAE,WAAW,CAAC,OAAO;wBAC5B,QAAQ;wBACR,KAAK,CAAC,iEAAiE;qBACxE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,OAAO,aAAa,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAc,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACzD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAa;QACxB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAExB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC1D,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,EAAE,EAAE,CAAC,CAAC;YACvD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,sCAAsC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAExB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAkB,CAAC;YACvF,OAAO,MAAM,IAAI,CAAC,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC3B,CAAC;IACH,CAAC;CACF"}
@@ -65,12 +65,13 @@ async function promptVectorStore() {
65
65
  type: 'list',
66
66
  name: 'vectorStore',
67
67
  message: 'Select vector store:',
68
- default: 'redis',
68
+ default: 'redis-stack',
69
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' },
70
+ { name: 'Redis Stack (Docker, RediSearch) - docker run -p 6379:6379 redis/redis-stack-server', value: 'redis-stack' },
71
+ { name: 'Redis 8.x Native (Homebrew) - brew install redis', value: 'redis' },
72
+ { name: 'Qdrant (Docker or cloud) - docker run -p 6333:6333 qdrant/qdrant', value: 'qdrant' },
72
73
  { 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: 'ChromaDB (requires server) - docker run -p 8000:8000 chromadb/chroma', value: 'chroma' },
74
75
  { name: 'Cloudflare Vectorize (serverless, requires Cloudflare account)', value: 'vectorize' }
75
76
  ]
76
77
  }]);
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -317,13 +317,33 @@
317
317
  <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
318
318
  <div>
319
319
  <label class="block text-sm text-gray-400 mb-2">Type</label>
320
- <select id="config-vectorstore" class="w-full bg-gray-800 border border-gray-700 rounded-lg px-4 py-2">
320
+ <select id="config-vectorstore" class="w-full bg-gray-800 border border-gray-700 rounded-lg px-4 py-2" onchange="toggleVectorStoreConfig()">
321
+ <option value="redis-stack">Redis Stack (Docker/RediSearch)</option>
322
+ <option value="redis">Redis 8.x Native (Homebrew)</option>
321
323
  <option value="memory">Memory (File-based)</option>
322
324
  <option value="chroma">ChromaDB (Server)</option>
323
325
  <option value="qdrant">Qdrant</option>
324
326
  <option value="vectorize">Cloudflare Vectorize</option>
325
327
  </select>
326
328
  </div>
329
+ <div id="redis-stack-config" class="hidden">
330
+ <label class="block text-sm text-gray-400 mb-2">Redis Stack URL</label>
331
+ <input type="text" id="config-redis-stack-url" placeholder="redis://localhost:6379" class="w-full bg-gray-800 border border-gray-700 rounded-lg px-4 py-2">
332
+ <p class="text-xs text-gray-500 mt-1">Requires Redis Stack with RediSearch module (Docker recommended)</p>
333
+ </div>
334
+ <div id="redis-config" class="hidden">
335
+ <label class="block text-sm text-gray-400 mb-2">Redis URL</label>
336
+ <input type="text" id="config-redis-url" placeholder="redis://localhost:6379" class="w-full bg-gray-800 border border-gray-700 rounded-lg px-4 py-2">
337
+ <p class="text-xs text-gray-500 mt-1">Uses Redis 8.x native vector commands (VADD/VSIM)</p>
338
+ </div>
339
+ <div id="chroma-config" class="hidden">
340
+ <label class="block text-sm text-gray-400 mb-2">ChromaDB URL</label>
341
+ <input type="text" id="config-chroma-url" placeholder="http://localhost:8000" class="w-full bg-gray-800 border border-gray-700 rounded-lg px-4 py-2">
342
+ </div>
343
+ <div id="qdrant-config" class="hidden">
344
+ <label class="block text-sm text-gray-400 mb-2">Qdrant URL</label>
345
+ <input type="text" id="config-qdrant-url" placeholder="http://localhost:6333" class="w-full bg-gray-800 border border-gray-700 rounded-lg px-4 py-2">
346
+ </div>
327
347
  </div>
328
348
  </div>
329
349
 
@@ -678,6 +698,15 @@
678
698
  }
679
699
  }
680
700
 
701
+ // Toggle vector store config fields visibility
702
+ function toggleVectorStoreConfig() {
703
+ const vectorStore = document.getElementById('config-vectorstore').value;
704
+ document.getElementById('redis-stack-config').classList.toggle('hidden', vectorStore !== 'redis-stack');
705
+ document.getElementById('redis-config').classList.toggle('hidden', vectorStore !== 'redis');
706
+ document.getElementById('chroma-config').classList.toggle('hidden', vectorStore !== 'chroma');
707
+ document.getElementById('qdrant-config').classList.toggle('hidden', vectorStore !== 'qdrant');
708
+ }
709
+
681
710
  // Fetch Config
682
711
  async function fetchConfig() {
683
712
  try {
@@ -689,6 +718,25 @@
689
718
  document.getElementById('config-vectorstore').value = config.vectorStore || 'memory';
690
719
  document.getElementById('config-embeddings').value = config.embeddings || 'xenova';
691
720
 
721
+ // Vector store specific configs
722
+ // For redis-stack, use same redis URL field
723
+ if (config.apiKeys?.redis?.url) {
724
+ if (config.vectorStore === 'redis-stack') {
725
+ document.getElementById('config-redis-stack-url').value = config.apiKeys.redis.url;
726
+ } else {
727
+ document.getElementById('config-redis-url').value = config.apiKeys.redis.url;
728
+ }
729
+ }
730
+ if (config.vectorStoreConfig?.chromaUrl) {
731
+ document.getElementById('config-chroma-url').value = config.vectorStoreConfig.chromaUrl;
732
+ }
733
+ if (config.apiKeys?.qdrant?.url) {
734
+ document.getElementById('config-qdrant-url').value = config.apiKeys.qdrant.url;
735
+ }
736
+
737
+ // Show/hide vector store config fields
738
+ toggleVectorStoreConfig();
739
+
692
740
  if (config.mcpGateway) {
693
741
  document.getElementById('config-gateway-enabled').checked = config.mcpGateway.enabled;
694
742
  document.getElementById('config-gateway-url').value = config.mcpGateway.url || 'http://localhost:3010';
@@ -712,9 +760,17 @@
712
760
 
713
761
  // Save Settings
714
762
  async function saveSettings() {
763
+ const vectorStore = document.getElementById('config-vectorstore').value;
764
+ const redisStackUrl = document.getElementById('config-redis-stack-url').value;
765
+ const redisUrl = document.getElementById('config-redis-url').value;
766
+ const chromaUrl = document.getElementById('config-chroma-url').value;
767
+ const qdrantUrl = document.getElementById('config-qdrant-url').value;
768
+
715
769
  const updates = {
716
- vectorStore: document.getElementById('config-vectorstore').value,
770
+ vectorStore: vectorStore,
717
771
  embeddings: document.getElementById('config-embeddings').value,
772
+ apiKeys: {},
773
+ vectorStoreConfig: {},
718
774
  mcpGateway: {
719
775
  enabled: document.getElementById('config-gateway-enabled').checked,
720
776
  url: document.getElementById('config-gateway-url').value || 'http://localhost:3010'
@@ -730,6 +786,20 @@
730
786
  }
731
787
  };
732
788
 
789
+ // Add vector store specific config
790
+ if (vectorStore === 'redis-stack' && redisStackUrl) {
791
+ updates.apiKeys.redis = { url: redisStackUrl };
792
+ }
793
+ if (vectorStore === 'redis' && redisUrl) {
794
+ updates.apiKeys.redis = { url: redisUrl };
795
+ }
796
+ if (vectorStore === 'chroma' && chromaUrl) {
797
+ updates.vectorStoreConfig.chromaUrl = chromaUrl;
798
+ }
799
+ if (vectorStore === 'qdrant' && qdrantUrl) {
800
+ updates.apiKeys.qdrant = { url: qdrantUrl };
801
+ }
802
+
733
803
  try {
734
804
  const res = await fetch(`${API_BASE}/api/config`, {
735
805
  method: 'POST',
@@ -1,10 +1,3 @@
1
- interface ActivityLog {
2
- timestamp: string;
3
- type: 'ingest' | 'search' | 'crawl' | 'error';
4
- message: string;
5
- details?: Record<string, any>;
6
- }
7
- export declare function logActivity(type: ActivityLog['type'], message: string, details?: Record<string, any>): void;
1
+ export declare function logActivity(type: 'ingest' | 'search' | 'crawl' | 'error' | 'query', message: string, details?: Record<string, any>): void;
8
2
  export declare function startDashboard(port?: number): void;
9
- export {};
10
3
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"AA2BA,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAKD,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAWpG;AA0XD,wBAAgB,cAAc,CAAC,IAAI,GAAE,MAAa,GAAG,IAAI,CA4BxD"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"AA4BA,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAElI;AA2XD,wBAAgB,cAAc,CAAC,IAAI,GAAE,MAAa,GAAG,IAAI,CA4BxD"}
@@ -7,21 +7,11 @@ import { loadConfig, writeConfig } from '../services/config.js';
7
7
  import { createVectorStore } from '../adapters/vector/index.js';
8
8
  import { createEmbedder } from '../adapters/embeddings/index.js';
9
9
  import { createOpenSkillsClient } from '../integrations/openskills.js';
10
+ import { logActivity as sharedLogActivity, getActivityLog } from '../services/activity-log.js';
10
11
  const __filename = fileURLToPath(import.meta.url);
11
12
  const __dirname = dirname(__filename);
12
- // In-memory activity log (would use a proper store in production)
13
- const activityLog = [];
14
13
  export function logActivity(type, message, details) {
15
- activityLog.unshift({
16
- timestamp: new Date().toISOString(),
17
- type,
18
- message,
19
- details
20
- });
21
- // Keep only last 100 entries
22
- if (activityLog.length > 100) {
23
- activityLog.pop();
24
- }
14
+ sharedLogActivity(type, message, details);
25
15
  }
26
16
  const MIME_TYPES = {
27
17
  '.html': 'text/html',
@@ -122,7 +112,8 @@ async function handleAPI(req, res, path) {
122
112
  return;
123
113
  }
124
114
  if (path === '/api/activity' && req.method === 'GET') {
125
- res.end(JSON.stringify(activityLog));
115
+ const activities = getActivityLog();
116
+ res.end(JSON.stringify(activities));
126
117
  return;
127
118
  }
128
119
  if (path === '/api/search' && req.method === 'POST') {