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.
Files changed (210) hide show
  1. package/README.md +179 -203
  2. package/dist/adapters/llm/anthropic.d.ts +27 -0
  3. package/dist/adapters/llm/anthropic.d.ts.map +1 -0
  4. package/dist/adapters/llm/anthropic.js +287 -0
  5. package/dist/adapters/llm/anthropic.js.map +1 -0
  6. package/dist/adapters/llm/base.d.ts +62 -0
  7. package/dist/adapters/llm/base.d.ts.map +1 -0
  8. package/dist/adapters/llm/base.js +140 -0
  9. package/dist/adapters/llm/base.js.map +1 -0
  10. package/dist/adapters/llm/deepseek.d.ts +24 -0
  11. package/dist/adapters/llm/deepseek.d.ts.map +1 -0
  12. package/dist/adapters/llm/deepseek.js +228 -0
  13. package/dist/adapters/llm/deepseek.js.map +1 -0
  14. package/dist/adapters/llm/groq.d.ts +25 -0
  15. package/dist/adapters/llm/groq.d.ts.map +1 -0
  16. package/dist/adapters/llm/groq.js +265 -0
  17. package/dist/adapters/llm/groq.js.map +1 -0
  18. package/dist/adapters/llm/index.d.ts +62 -0
  19. package/dist/adapters/llm/index.d.ts.map +1 -0
  20. package/dist/adapters/llm/index.js +380 -0
  21. package/dist/adapters/llm/index.js.map +1 -0
  22. package/dist/adapters/llm/ollama.d.ts +23 -0
  23. package/dist/adapters/llm/ollama.d.ts.map +1 -0
  24. package/dist/adapters/llm/ollama.js +261 -0
  25. package/dist/adapters/llm/ollama.js.map +1 -0
  26. package/dist/adapters/llm/openai.d.ts +22 -0
  27. package/dist/adapters/llm/openai.d.ts.map +1 -0
  28. package/dist/adapters/llm/openai.js +232 -0
  29. package/dist/adapters/llm/openai.js.map +1 -0
  30. package/dist/adapters/llm/openrouter.d.ts +27 -0
  31. package/dist/adapters/llm/openrouter.d.ts.map +1 -0
  32. package/dist/adapters/llm/openrouter.js +305 -0
  33. package/dist/adapters/llm/openrouter.js.map +1 -0
  34. package/dist/adapters/vector/index.d.ts.map +1 -1
  35. package/dist/adapters/vector/index.js +8 -0
  36. package/dist/adapters/vector/index.js.map +1 -1
  37. package/dist/adapters/vector/redis-native.d.ts +35 -0
  38. package/dist/adapters/vector/redis-native.d.ts.map +1 -0
  39. package/dist/adapters/vector/redis-native.js +170 -0
  40. package/dist/adapters/vector/redis-native.js.map +1 -0
  41. package/dist/cli/commands/chat.d.ts +4 -0
  42. package/dist/cli/commands/chat.d.ts.map +1 -0
  43. package/dist/cli/commands/chat.js +374 -0
  44. package/dist/cli/commands/chat.js.map +1 -0
  45. package/dist/cli/commands/maintenance.d.ts +4 -0
  46. package/dist/cli/commands/maintenance.d.ts.map +1 -0
  47. package/dist/cli/commands/maintenance.js +237 -0
  48. package/dist/cli/commands/maintenance.js.map +1 -0
  49. package/dist/cli/commands/rules.d.ts +9 -0
  50. package/dist/cli/commands/rules.d.ts.map +1 -0
  51. package/dist/cli/commands/rules.js +639 -0
  52. package/dist/cli/commands/rules.js.map +1 -0
  53. package/dist/cli/commands/setup.js +5 -4
  54. package/dist/cli/commands/setup.js.map +1 -1
  55. package/dist/cli/index.js +6 -0
  56. package/dist/cli/index.js.map +1 -1
  57. package/dist/config/memoryConfig.d.ts +427 -0
  58. package/dist/config/memoryConfig.d.ts.map +1 -0
  59. package/dist/config/memoryConfig.js +258 -0
  60. package/dist/config/memoryConfig.js.map +1 -0
  61. package/dist/config/rulesConfig.d.ts +486 -0
  62. package/dist/config/rulesConfig.d.ts.map +1 -0
  63. package/dist/config/rulesConfig.js +345 -0
  64. package/dist/config/rulesConfig.js.map +1 -0
  65. package/dist/dashboard/coreTools.d.ts +14 -0
  66. package/dist/dashboard/coreTools.d.ts.map +1 -0
  67. package/dist/dashboard/coreTools.js +413 -0
  68. package/dist/dashboard/coreTools.js.map +1 -0
  69. package/dist/dashboard/public/index.html +1982 -13
  70. package/dist/dashboard/server.d.ts +1 -8
  71. package/dist/dashboard/server.d.ts.map +1 -1
  72. package/dist/dashboard/server.js +846 -13
  73. package/dist/dashboard/server.js.map +1 -1
  74. package/dist/dashboard/toolRegistry.d.ts +192 -0
  75. package/dist/dashboard/toolRegistry.d.ts.map +1 -0
  76. package/dist/dashboard/toolRegistry.js +322 -0
  77. package/dist/dashboard/toolRegistry.js.map +1 -0
  78. package/dist/proxy/index.d.ts +1 -1
  79. package/dist/proxy/index.d.ts.map +1 -1
  80. package/dist/proxy/index.js +9 -6
  81. package/dist/proxy/index.js.map +1 -1
  82. package/dist/server/index.js +21 -0
  83. package/dist/server/index.js.map +1 -1
  84. package/dist/server/tools/crawl.d.ts.map +1 -1
  85. package/dist/server/tools/crawl.js +8 -0
  86. package/dist/server/tools/crawl.js.map +1 -1
  87. package/dist/server/tools/index.d.ts.map +1 -1
  88. package/dist/server/tools/index.js +19 -1
  89. package/dist/server/tools/index.js.map +1 -1
  90. package/dist/server/tools/ingest.d.ts.map +1 -1
  91. package/dist/server/tools/ingest.js +5 -0
  92. package/dist/server/tools/ingest.js.map +1 -1
  93. package/dist/server/tools/memory.d.ts +250 -0
  94. package/dist/server/tools/memory.d.ts.map +1 -0
  95. package/dist/server/tools/memory.js +472 -0
  96. package/dist/server/tools/memory.js.map +1 -0
  97. package/dist/server/tools/recursive-query.d.ts.map +1 -1
  98. package/dist/server/tools/recursive-query.js +6 -0
  99. package/dist/server/tools/recursive-query.js.map +1 -1
  100. package/dist/server/tools/search.d.ts.map +1 -1
  101. package/dist/server/tools/search.js +6 -0
  102. package/dist/server/tools/search.js.map +1 -1
  103. package/dist/services/activity-log.d.ts +10 -0
  104. package/dist/services/activity-log.d.ts.map +1 -0
  105. package/dist/services/activity-log.js +53 -0
  106. package/dist/services/activity-log.js.map +1 -0
  107. package/dist/services/categoryManager.d.ts +110 -0
  108. package/dist/services/categoryManager.d.ts.map +1 -0
  109. package/dist/services/categoryManager.js +549 -0
  110. package/dist/services/categoryManager.js.map +1 -0
  111. package/dist/services/contextEnvironment.d.ts +206 -0
  112. package/dist/services/contextEnvironment.d.ts.map +1 -0
  113. package/dist/services/contextEnvironment.js +481 -0
  114. package/dist/services/contextEnvironment.js.map +1 -0
  115. package/dist/services/conversationProcessor.d.ts +99 -0
  116. package/dist/services/conversationProcessor.d.ts.map +1 -0
  117. package/dist/services/conversationProcessor.js +311 -0
  118. package/dist/services/conversationProcessor.js.map +1 -0
  119. package/dist/services/cursorChatReader.d.ts +129 -0
  120. package/dist/services/cursorChatReader.d.ts.map +1 -0
  121. package/dist/services/cursorChatReader.js +419 -0
  122. package/dist/services/cursorChatReader.js.map +1 -0
  123. package/dist/services/decayCalculator.d.ts +85 -0
  124. package/dist/services/decayCalculator.d.ts.map +1 -0
  125. package/dist/services/decayCalculator.js +182 -0
  126. package/dist/services/decayCalculator.js.map +1 -0
  127. package/dist/services/enhancedVectorStore.d.ts +102 -0
  128. package/dist/services/enhancedVectorStore.d.ts.map +1 -0
  129. package/dist/services/enhancedVectorStore.js +245 -0
  130. package/dist/services/enhancedVectorStore.js.map +1 -0
  131. package/dist/services/hybridScorer.d.ts +120 -0
  132. package/dist/services/hybridScorer.d.ts.map +1 -0
  133. package/dist/services/hybridScorer.js +334 -0
  134. package/dist/services/hybridScorer.js.map +1 -0
  135. package/dist/services/knowledgeExtractor.d.ts +45 -0
  136. package/dist/services/knowledgeExtractor.d.ts.map +1 -0
  137. package/dist/services/knowledgeExtractor.js +436 -0
  138. package/dist/services/knowledgeExtractor.js.map +1 -0
  139. package/dist/services/knowledgeStorage.d.ts +102 -0
  140. package/dist/services/knowledgeStorage.d.ts.map +1 -0
  141. package/dist/services/knowledgeStorage.js +383 -0
  142. package/dist/services/knowledgeStorage.js.map +1 -0
  143. package/dist/services/maintenanceScheduler.d.ts +89 -0
  144. package/dist/services/maintenanceScheduler.d.ts.map +1 -0
  145. package/dist/services/maintenanceScheduler.js +479 -0
  146. package/dist/services/maintenanceScheduler.js.map +1 -0
  147. package/dist/services/memoryMetadataStore.d.ts +62 -0
  148. package/dist/services/memoryMetadataStore.d.ts.map +1 -0
  149. package/dist/services/memoryMetadataStore.js +570 -0
  150. package/dist/services/memoryMetadataStore.js.map +1 -0
  151. package/dist/services/recursiveRetrieval.d.ts +122 -0
  152. package/dist/services/recursiveRetrieval.d.ts.map +1 -0
  153. package/dist/services/recursiveRetrieval.js +443 -0
  154. package/dist/services/recursiveRetrieval.js.map +1 -0
  155. package/dist/services/relationshipGraph.d.ts +77 -0
  156. package/dist/services/relationshipGraph.d.ts.map +1 -0
  157. package/dist/services/relationshipGraph.js +411 -0
  158. package/dist/services/relationshipGraph.js.map +1 -0
  159. package/dist/services/rlmSafeguards.d.ts +273 -0
  160. package/dist/services/rlmSafeguards.d.ts.map +1 -0
  161. package/dist/services/rlmSafeguards.js +705 -0
  162. package/dist/services/rlmSafeguards.js.map +1 -0
  163. package/dist/services/rulesAnalyzer.d.ts +119 -0
  164. package/dist/services/rulesAnalyzer.d.ts.map +1 -0
  165. package/dist/services/rulesAnalyzer.js +768 -0
  166. package/dist/services/rulesAnalyzer.js.map +1 -0
  167. package/dist/services/rulesMerger.d.ts +75 -0
  168. package/dist/services/rulesMerger.d.ts.map +1 -0
  169. package/dist/services/rulesMerger.js +404 -0
  170. package/dist/services/rulesMerger.js.map +1 -0
  171. package/dist/services/rulesParser.d.ts +127 -0
  172. package/dist/services/rulesParser.d.ts.map +1 -0
  173. package/dist/services/rulesParser.js +594 -0
  174. package/dist/services/rulesParser.js.map +1 -0
  175. package/dist/services/smartChunker.d.ts +110 -0
  176. package/dist/services/smartChunker.d.ts.map +1 -0
  177. package/dist/services/smartChunker.js +520 -0
  178. package/dist/services/smartChunker.js.map +1 -0
  179. package/dist/types/categories.d.ts +105 -0
  180. package/dist/types/categories.d.ts.map +1 -0
  181. package/dist/types/categories.js +108 -0
  182. package/dist/types/categories.js.map +1 -0
  183. package/dist/types/extractedKnowledge.d.ts +233 -0
  184. package/dist/types/extractedKnowledge.d.ts.map +1 -0
  185. package/dist/types/extractedKnowledge.js +56 -0
  186. package/dist/types/extractedKnowledge.js.map +1 -0
  187. package/dist/types/index.d.ts +9 -2
  188. package/dist/types/index.d.ts.map +1 -1
  189. package/dist/types/index.js +12 -1
  190. package/dist/types/index.js.map +1 -1
  191. package/dist/types/llmProvider.d.ts +282 -0
  192. package/dist/types/llmProvider.d.ts.map +1 -0
  193. package/dist/types/llmProvider.js +48 -0
  194. package/dist/types/llmProvider.js.map +1 -0
  195. package/dist/types/memory.d.ts +227 -0
  196. package/dist/types/memory.d.ts.map +1 -0
  197. package/dist/types/memory.js +76 -0
  198. package/dist/types/memory.js.map +1 -0
  199. package/dist/types/relationships.d.ts +167 -0
  200. package/dist/types/relationships.d.ts.map +1 -0
  201. package/dist/types/relationships.js +106 -0
  202. package/dist/types/relationships.js.map +1 -0
  203. package/dist/types/rulesOptimizer.d.ts +345 -0
  204. package/dist/types/rulesOptimizer.d.ts.map +1 -0
  205. package/dist/types/rulesOptimizer.js +22 -0
  206. package/dist/types/rulesOptimizer.js.map +1 -0
  207. package/docs/cursor-recursive-rag-memory-spec.md +4569 -0
  208. package/docs/cursor-recursive-rag-tasks.md +1355 -0
  209. package/package.json +6 -3
  210. package/restart-rag.sh +16 -0
@@ -0,0 +1,472 @@
1
+ import { ChunkType, RelationshipType } from '../../types/memory.js';
2
+ import { getMemoryMetadataStore } from '../../services/memoryMetadataStore.js';
3
+ import { getRelationshipGraph } from '../../services/relationshipGraph.js';
4
+ import { getCategoryManager } from '../../services/categoryManager.js';
5
+ import { getHybridScorer } from '../../services/hybridScorer.js';
6
+ import { createEnhancedVectorStore } from '../../services/enhancedVectorStore.js';
7
+ import { createCursorChatReader } from '../../services/cursorChatReader.js';
8
+ import { createConversationProcessor } from '../../services/conversationProcessor.js';
9
+ import { createKnowledgeExtractor } from '../../services/knowledgeExtractor.js';
10
+ import { createKnowledgeStorageService } from '../../services/knowledgeStorage.js';
11
+ import { countExtractedItems } from '../../types/extractedKnowledge.js';
12
+ export async function searchPastSolutionsTool(args, deps) {
13
+ const { problem, topK = 5, minScore = 0.3 } = args;
14
+ const enhancedStore = createEnhancedVectorStore(deps.vectorStore);
15
+ const metadataStore = getMemoryMetadataStore();
16
+ const hybridScorer = getHybridScorer();
17
+ const embedding = await deps.embedder.embed(problem);
18
+ const results = await enhancedStore.enhancedSearch(embedding, {
19
+ topK: topK * 3,
20
+ chunkTypes: [ChunkType.SOLUTION],
21
+ minDecayScore: 0.1,
22
+ includeArchived: false,
23
+ });
24
+ const searchInputs = results.map(r => ({
25
+ id: r.id,
26
+ content: r.content,
27
+ score: r.similarityScore,
28
+ metadata: r.metadata,
29
+ }));
30
+ const scored = await hybridScorer.scoreResults(searchInputs, problem, {
31
+ preferredTypes: [ChunkType.SOLUTION],
32
+ });
33
+ const filtered = scored.filter(r => r.finalScore >= minScore).slice(0, topK);
34
+ if (filtered.length === 0) {
35
+ return {
36
+ content: [{
37
+ type: 'text',
38
+ text: 'No past solutions found for this problem. Try rephrasing or check if relevant conversations have been ingested.',
39
+ }],
40
+ };
41
+ }
42
+ const output = filtered.map((r, i) => {
43
+ return `## Solution ${i + 1} (Score: ${r.finalScore.toFixed(2)})\n\n${r.content}`;
44
+ }).join('\n\n---\n\n');
45
+ return {
46
+ content: [{
47
+ type: 'text',
48
+ text: `Found ${filtered.length} past solutions:\n\n${output}`,
49
+ }],
50
+ };
51
+ }
52
+ export async function findSimilarIssuesTool(args, deps) {
53
+ const { issue, topK = 5 } = args;
54
+ const enhancedStore = createEnhancedVectorStore(deps.vectorStore);
55
+ const hybridScorer = getHybridScorer();
56
+ const graph = getRelationshipGraph();
57
+ const embedding = await deps.embedder.embed(issue);
58
+ const results = await enhancedStore.enhancedSearch(embedding, {
59
+ topK: topK * 3,
60
+ chunkTypes: [ChunkType.SOLUTION, ChunkType.CODE, ChunkType.DOCUMENTATION],
61
+ minDecayScore: 0.05,
62
+ includeArchived: false,
63
+ });
64
+ const searchInputs = results.map(r => ({
65
+ id: r.id,
66
+ content: r.content,
67
+ score: r.similarityScore,
68
+ metadata: r.metadata,
69
+ }));
70
+ const scored = await hybridScorer.scoreResults(searchInputs, issue);
71
+ const topResults = scored.slice(0, topK);
72
+ // Find related items through graph
73
+ const relatedItems = [];
74
+ for (const result of topResults.slice(0, 3)) {
75
+ const related = graph.findRelated(result.id, {
76
+ types: [RelationshipType.RELATES_TO, RelationshipType.SIMILAR_TO, RelationshipType.SOLVES],
77
+ maxResults: 3,
78
+ minStrength: 0.4,
79
+ });
80
+ relatedItems.push(...related.map(r => r.chunkId));
81
+ }
82
+ const output = topResults.map((r, i) => {
83
+ const type = r.metadata?.chunkType || 'unknown';
84
+ return `### ${i + 1}. [${type}] Score: ${r.finalScore.toFixed(2)}\n\n${r.content.substring(0, 500)}${r.content.length > 500 ? '...' : ''}`;
85
+ }).join('\n\n');
86
+ let response = `Found ${topResults.length} similar issues:\n\n${output}`;
87
+ if (relatedItems.length > 0) {
88
+ response += `\n\n**Related items**: ${[...new Set(relatedItems)].slice(0, 5).join(', ')}`;
89
+ }
90
+ return {
91
+ content: [{
92
+ type: 'text',
93
+ text: response,
94
+ }],
95
+ };
96
+ }
97
+ export async function getProjectPatternsTool(args, deps) {
98
+ const { category, topK = 10 } = args;
99
+ const metadataStore = getMemoryMetadataStore();
100
+ const categoryManager = getCategoryManager(metadataStore);
101
+ await categoryManager.initialize();
102
+ const allPatterns = metadataStore.getAllChunkMetadata({
103
+ includeArchived: false,
104
+ chunkTypes: [ChunkType.PATTERN, ChunkType.STANDARD],
105
+ });
106
+ // Filter by category if specified
107
+ let patterns = allPatterns;
108
+ if (category) {
109
+ const categoryChunks = new Set(categoryManager.getCategoryItems(category).map(item => item.chunkId));
110
+ patterns = patterns.filter(p => categoryChunks.has(p.chunkId));
111
+ }
112
+ // Sort by importance and decay
113
+ patterns.sort((a, b) => {
114
+ const scoreA = a.importance * 0.6 + a.decayScore * 0.4;
115
+ const scoreB = b.importance * 0.6 + b.decayScore * 0.4;
116
+ return scoreB - scoreA;
117
+ });
118
+ const topPatterns = patterns.slice(0, topK);
119
+ if (topPatterns.length === 0) {
120
+ return {
121
+ content: [{
122
+ type: 'text',
123
+ text: category
124
+ ? `No patterns found for category "${category}". Try ingesting more conversations or documents.`
125
+ : 'No patterns found. Try ingesting conversations with `cursor-rag chat ingest --extract`.',
126
+ }],
127
+ };
128
+ }
129
+ const output = topPatterns.map((p, i) => {
130
+ return `${i + 1}. **${p.chunkType}** (importance: ${p.importance.toFixed(2)}, decay: ${p.decayScore.toFixed(2)})\n ID: ${p.chunkId}`;
131
+ }).join('\n');
132
+ return {
133
+ content: [{
134
+ type: 'text',
135
+ text: `Found ${topPatterns.length} patterns${category ? ` in category "${category}"` : ''}:\n\n${output}`,
136
+ }],
137
+ };
138
+ }
139
+ export async function recallDecisionTool(args, deps) {
140
+ const { topic, topK = 5 } = args;
141
+ const enhancedStore = createEnhancedVectorStore(deps.vectorStore);
142
+ const hybridScorer = getHybridScorer();
143
+ const embedding = await deps.embedder.embed(`decision about ${topic}`);
144
+ const results = await enhancedStore.enhancedSearch(embedding, {
145
+ topK: topK * 3,
146
+ chunkTypes: [ChunkType.DECISION, ChunkType.STANDARD],
147
+ minDecayScore: 0.05,
148
+ includeArchived: false,
149
+ });
150
+ const searchInputs = results.map(r => ({
151
+ id: r.id,
152
+ content: r.content,
153
+ score: r.similarityScore,
154
+ metadata: r.metadata,
155
+ }));
156
+ const scored = await hybridScorer.scoreResults(searchInputs, topic, {
157
+ preferredTypes: [ChunkType.DECISION],
158
+ });
159
+ const decisions = scored.slice(0, topK);
160
+ if (decisions.length === 0) {
161
+ return {
162
+ content: [{
163
+ type: 'text',
164
+ text: `No decisions found about "${topic}". Decisions are extracted from chat history using \`cursor-rag chat ingest --extract\`.`,
165
+ }],
166
+ };
167
+ }
168
+ const output = decisions.map((d, i) => {
169
+ const type = d.metadata?.chunkType || 'decision';
170
+ return `## Decision ${i + 1} [${type}]\n**Score**: ${d.finalScore.toFixed(2)}\n\n${d.content}`;
171
+ }).join('\n\n---\n\n');
172
+ return {
173
+ content: [{
174
+ type: 'text',
175
+ text: `Found ${decisions.length} decisions about "${topic}":\n\n${output}`,
176
+ }],
177
+ };
178
+ }
179
+ export async function getCategorySummaryTool(args, deps) {
180
+ const { category } = args;
181
+ const metadataStore = getMemoryMetadataStore();
182
+ const categoryManager = getCategoryManager(metadataStore);
183
+ await categoryManager.initialize();
184
+ const summary = categoryManager.getCategorySummary(category);
185
+ const categories = metadataStore.listCategories();
186
+ const targetCategory = categories.find(c => c.name.toLowerCase() === category.toLowerCase());
187
+ if (!targetCategory) {
188
+ const availableCategories = categories.map(c => c.name).join(', ');
189
+ return {
190
+ content: [{
191
+ type: 'text',
192
+ text: `Category "${category}" not found. Available categories: ${availableCategories}`,
193
+ }],
194
+ };
195
+ }
196
+ let response = `## ${targetCategory.name}\n\n`;
197
+ response += `**Description**: ${targetCategory.description || 'No description'}\n`;
198
+ response += `**Items**: ${targetCategory.chunkCount}\n`;
199
+ response += `**Last Updated**: ${targetCategory.lastUpdated || 'Never'}\n\n`;
200
+ if (summary) {
201
+ response += `### Summary\n\n${summary}`;
202
+ }
203
+ else {
204
+ response += '*No summary available. Run `cursor-rag maintenance run summarize` to generate summaries.*';
205
+ }
206
+ return {
207
+ content: [{
208
+ type: 'text',
209
+ text: response,
210
+ }],
211
+ };
212
+ }
213
+ export async function ingestChatHistoryTool(args, deps) {
214
+ const { limit, extract = false, since } = args;
215
+ const enhancedStore = createEnhancedVectorStore(deps.vectorStore);
216
+ const metadataStore = getMemoryMetadataStore();
217
+ const reader = createCursorChatReader();
218
+ if (!reader.isDatabaseAvailable()) {
219
+ return {
220
+ content: [{
221
+ type: 'text',
222
+ text: 'Cursor database not found. Make sure Cursor is installed and has been used at least once.',
223
+ }],
224
+ };
225
+ }
226
+ const filterOptions = {};
227
+ if (limit)
228
+ filterOptions.limit = limit;
229
+ if (since)
230
+ filterOptions.since = new Date(since);
231
+ const conversations = reader.listConversations(filterOptions);
232
+ const toProcess = conversations.filter(c => !metadataStore.isConversationProcessed(c.id));
233
+ if (toProcess.length === 0) {
234
+ return {
235
+ content: [{
236
+ type: 'text',
237
+ text: `All ${conversations.length} conversations already processed. Use --force in CLI to re-process.`,
238
+ }],
239
+ };
240
+ }
241
+ const processor = createConversationProcessor();
242
+ const knowledgeExtractor = extract ? createKnowledgeExtractor(deps.config) : null;
243
+ const knowledgeStorage = extract ? createKnowledgeStorageService(enhancedStore, deps.embedder) : null;
244
+ let totalChunks = 0;
245
+ let totalKnowledge = 0;
246
+ let processedCount = 0;
247
+ for (const summary of toProcess.slice(0, limit || 10)) {
248
+ try {
249
+ const conversation = reader.getConversation(summary.id);
250
+ if (!conversation)
251
+ continue;
252
+ const result = processor.processConversation(conversation);
253
+ if (result.chunks.length === 0)
254
+ continue;
255
+ const documents = await Promise.all(result.chunks.map(async (chunk) => {
256
+ const embedding = await deps.embedder.embed(chunk.content);
257
+ return {
258
+ id: chunk.id,
259
+ content: chunk.content,
260
+ embedding,
261
+ metadata: {
262
+ ...chunk.metadata,
263
+ source: chunk.source,
264
+ chunkType: chunk.chunkType,
265
+ importance: chunk.importance,
266
+ sourceConversationId: chunk.sourceConversationId,
267
+ },
268
+ };
269
+ }));
270
+ await enhancedStore.add(documents);
271
+ totalChunks += result.chunks.length;
272
+ if (knowledgeExtractor && knowledgeStorage) {
273
+ try {
274
+ const extracted = await knowledgeExtractor.extract(conversation);
275
+ const knowledgeCount = countExtractedItems(extracted);
276
+ if (knowledgeCount > 0) {
277
+ await knowledgeStorage.store(extracted);
278
+ totalKnowledge += knowledgeCount;
279
+ }
280
+ }
281
+ catch (e) {
282
+ // Knowledge extraction failure is not fatal
283
+ }
284
+ }
285
+ metadataStore.markConversationProcessed(summary.id, summary.messageCount, result.chunks.length, totalKnowledge);
286
+ processedCount++;
287
+ }
288
+ catch (e) {
289
+ // Continue processing other conversations
290
+ }
291
+ }
292
+ let response = `Processed ${processedCount} conversations, created ${totalChunks} chunks.`;
293
+ if (extract) {
294
+ response += ` Extracted ${totalKnowledge} knowledge items.`;
295
+ }
296
+ return {
297
+ content: [{
298
+ type: 'text',
299
+ text: response,
300
+ }],
301
+ };
302
+ }
303
+ export async function memoryStatsTool(deps) {
304
+ const metadataStore = getMemoryMetadataStore();
305
+ const graph = getRelationshipGraph(metadataStore);
306
+ const categoryManager = getCategoryManager(metadataStore);
307
+ await categoryManager.initialize();
308
+ const memoryStats = metadataStore.getMemoryStats();
309
+ const graphStats = graph.getStats();
310
+ const categories = categoryManager.getAllCategoriesWithStats();
311
+ let response = `## Memory System Statistics\n\n`;
312
+ response += `### Chunks\n`;
313
+ response += `- Total: ${memoryStats.totalChunks}\n`;
314
+ response += `- Active: ${memoryStats.activeChunks}\n`;
315
+ response += `- Archived: ${memoryStats.archivedChunks}\n`;
316
+ response += `- Avg Decay: ${memoryStats.avgDecayScore.toFixed(3)}\n`;
317
+ response += `- Avg Importance: ${memoryStats.avgImportance.toFixed(3)}\n`;
318
+ response += `- Total Accesses: ${memoryStats.totalAccesses}\n\n`;
319
+ if (Object.keys(memoryStats.chunksByType).length > 0) {
320
+ response += `### By Type\n`;
321
+ for (const [type, count] of Object.entries(memoryStats.chunksByType)) {
322
+ response += `- ${type}: ${count}\n`;
323
+ }
324
+ response += '\n';
325
+ }
326
+ response += `### Relationships\n`;
327
+ response += `- Total: ${graphStats.totalRelationships}\n`;
328
+ response += `- Avg per chunk: ${graphStats.avgRelationshipsPerChunk.toFixed(2)}\n`;
329
+ response += `- Max depth: ${graphStats.maxDepth}\n`;
330
+ response += `- Isolated chunks: ${graphStats.isolatedChunks}\n\n`;
331
+ response += `### Categories\n`;
332
+ response += `- Total: ${memoryStats.categoryCount}\n`;
333
+ const activeCategories = categories.filter(c => c.chunkCount > 0);
334
+ if (activeCategories.length > 0) {
335
+ for (const cat of activeCategories.slice(0, 5)) {
336
+ response += `- ${cat.name}: ${cat.chunkCount} items\n`;
337
+ }
338
+ }
339
+ return {
340
+ content: [{
341
+ type: 'text',
342
+ text: response,
343
+ }],
344
+ };
345
+ }
346
+ export const memoryToolDefinitions = [
347
+ {
348
+ name: 'search_past_solutions',
349
+ description: 'Search for past solutions to similar problems from ingested chat history and documents.',
350
+ inputSchema: {
351
+ type: 'object',
352
+ properties: {
353
+ problem: {
354
+ type: 'string',
355
+ description: 'Description of the problem to find solutions for',
356
+ },
357
+ topK: {
358
+ type: 'number',
359
+ description: 'Number of solutions to return (default: 5)',
360
+ default: 5,
361
+ },
362
+ minScore: {
363
+ type: 'number',
364
+ description: 'Minimum relevance score (default: 0.3)',
365
+ default: 0.3,
366
+ },
367
+ },
368
+ required: ['problem'],
369
+ },
370
+ },
371
+ {
372
+ name: 'find_similar_issues',
373
+ description: 'Find issues or discussions similar to the current one, including related items through the knowledge graph.',
374
+ inputSchema: {
375
+ type: 'object',
376
+ properties: {
377
+ issue: {
378
+ type: 'string',
379
+ description: 'Description of the issue to find similar ones for',
380
+ },
381
+ topK: {
382
+ type: 'number',
383
+ description: 'Number of results to return (default: 5)',
384
+ default: 5,
385
+ },
386
+ },
387
+ required: ['issue'],
388
+ },
389
+ },
390
+ {
391
+ name: 'get_project_patterns',
392
+ description: 'Get coding patterns and standards from the knowledge base.',
393
+ inputSchema: {
394
+ type: 'object',
395
+ properties: {
396
+ category: {
397
+ type: 'string',
398
+ description: 'Filter by category (e.g., authentication, database, api)',
399
+ },
400
+ topK: {
401
+ type: 'number',
402
+ description: 'Number of patterns to return (default: 10)',
403
+ default: 10,
404
+ },
405
+ },
406
+ },
407
+ },
408
+ {
409
+ name: 'recall_decision',
410
+ description: 'Recall past architectural or design decisions about a topic.',
411
+ inputSchema: {
412
+ type: 'object',
413
+ properties: {
414
+ topic: {
415
+ type: 'string',
416
+ description: 'Topic to recall decisions about',
417
+ },
418
+ topK: {
419
+ type: 'number',
420
+ description: 'Number of decisions to return (default: 5)',
421
+ default: 5,
422
+ },
423
+ },
424
+ required: ['topic'],
425
+ },
426
+ },
427
+ {
428
+ name: 'get_category_summary',
429
+ description: 'Get the summary for a knowledge category.',
430
+ inputSchema: {
431
+ type: 'object',
432
+ properties: {
433
+ category: {
434
+ type: 'string',
435
+ description: 'Category name (e.g., authentication, database, testing)',
436
+ },
437
+ },
438
+ required: ['category'],
439
+ },
440
+ },
441
+ {
442
+ name: 'ingest_chat_history',
443
+ description: 'Ingest Cursor chat history into the knowledge base.',
444
+ inputSchema: {
445
+ type: 'object',
446
+ properties: {
447
+ limit: {
448
+ type: 'number',
449
+ description: 'Maximum conversations to process (default: 10)',
450
+ },
451
+ extract: {
452
+ type: 'boolean',
453
+ description: 'Extract knowledge (solutions, patterns, decisions) using LLM',
454
+ default: false,
455
+ },
456
+ since: {
457
+ type: 'string',
458
+ description: 'Only process conversations since this date (YYYY-MM-DD)',
459
+ },
460
+ },
461
+ },
462
+ },
463
+ {
464
+ name: 'memory_stats',
465
+ description: 'Get statistics about the memory system.',
466
+ inputSchema: {
467
+ type: 'object',
468
+ properties: {},
469
+ },
470
+ },
471
+ ];
472
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/server/tools/memory.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"recursive-query.d.ts","sourceRoot":"","sources":["../../../src/server/tools/recursive-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,kBAAkB,EACxB,IAAI,EAAE;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,GACxE,OAAO,CAAC,GAAG,CAAC,CA+Ed"}
1
+ {"version":3,"file":"recursive-query.d.ts","sourceRoot":"","sources":["../../../src/server/tools/recursive-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAItD,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,kBAAkB,EACxB,IAAI,EAAE;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,GACxE,OAAO,CAAC,GAAG,CAAC,CAqFd"}
@@ -1,4 +1,5 @@
1
1
  import { decomposeQuery, generateFollowUps, assessConfidence } from '../../services/query-decomposer.js';
2
+ import { logActivity } from '../../services/activity-log.js';
2
3
  export async function recursiveQueryTool(args, deps) {
3
4
  const { query, maxIterations = 5, minConfidence = 0.7, sources } = args;
4
5
  const { vectorStore, embedder } = deps;
@@ -53,6 +54,11 @@ export async function recursiveQueryTool(args, deps) {
53
54
  const answer = topChunks
54
55
  .map((chunk, idx) => `[${idx + 1}] ${chunk.content}`)
55
56
  .join('\n\n');
57
+ logActivity('query', `Query: "${query.substring(0, 50)}${query.length > 50 ? '...' : ''}"`, {
58
+ subQuestions: subQuestions.length,
59
+ retrievalSteps: context.length,
60
+ chunksFound: uniqueChunks.length
61
+ });
56
62
  return {
57
63
  content: [
58
64
  {
@@ -1 +1 @@
1
- {"version":3,"file":"recursive-query.js","sourceRoot":"","sources":["../../../src/server/tools/recursive-query.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AASzG,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAwB,EACxB,IAAyE;IAEzE,MAAM,EACJ,KAAK,EACL,aAAa,GAAG,CAAC,EACjB,aAAa,GAAG,GAAG,EACnB,OAAO,EACR,GAAG,IAAI,CAAC;IAET,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAEvC,qDAAqD;IACrD,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAE3C,kDAAkD;IAClD,MAAM,OAAO,GAAmE,EAAE,CAAC;IAEnF,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,aAAa,GAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACxC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,aAAa,CAAC,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC;QACtD,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,+BAA+B;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,wDAAwD;QACxD,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QACvD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM;QAElC,0BAA0B;QAC1B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACvD,MAAM,aAAa,GAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACvC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,aAAa,CAAC,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC;YACtD,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAClE,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,QAAQ,CAAC,KAAK;gBACxB,MAAM;gBACN,SAAS,EAAE,CAAC,GAAG,CAAC;aACjB,CAAC,CAAC;QACL,CAAC;QAED,uCAAuC;QACvC,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACpD,IAAI,UAAU,IAAI,aAAa;YAAE,MAAM;IACzC,CAAC;IAED,kCAAkC;IAClC,kDAAkD;IAClD,gEAAgE;IAChE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAC7B,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAChD,CAAC;IAEF,2BAA2B;IAC3B,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;IAE7D,uCAAuC;IACvC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE5C,uCAAuC;IACvC,MAAM,MAAM,GAAG,SAAS;SACrB,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;SACpD,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,gBAAgB,MAAM,2BAA2B,YAAY,CAAC,MAAM,yBAAyB,OAAO,CAAC,MAAM,mBAAmB;aACrI;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"recursive-query.js","sourceRoot":"","sources":["../../../src/server/tools/recursive-query.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/server/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,mBAAmB,EACzB,IAAI,EAAE;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,GACxE,OAAO,CAAC,GAAG,CAAC,CAyBd"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/server/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGtD,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,mBAAmB,EACzB,IAAI,EAAE;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,GACxE,OAAO,CAAC,GAAG,CAAC,CA+Bd"}
@@ -1,3 +1,4 @@
1
+ import { logActivity } from '../../services/activity-log.js';
1
2
  export async function searchKnowledgeTool(args, deps) {
2
3
  const { query, topK = 10, sources } = args;
3
4
  const { vectorStore, embedder } = deps;
@@ -7,6 +8,11 @@ export async function searchKnowledgeTool(args, deps) {
7
8
  searchOptions.filter = { source: { $in: sources } };
8
9
  }
9
10
  const results = await vectorStore.search(embedding, searchOptions);
11
+ logActivity('search', `Search: "${query.substring(0, 50)}${query.length > 50 ? '...' : ''}"`, {
12
+ resultsCount: results.length,
13
+ topK,
14
+ sources: sources || []
15
+ });
10
16
  const formattedResults = results.map((result, idx) => `[${idx + 1}] Score: ${result.score.toFixed(4)}\nSource: ${result.metadata.source || 'unknown'}\n${result.content}`).join('\n\n---\n\n');
11
17
  return {
12
18
  content: [
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/server/tools/search.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAyB,EACzB,IAAyE;IAEzE,MAAM,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC3C,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAEvC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,aAAa,GAAQ,EAAE,IAAI,EAAE,CAAC;IACpC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,aAAa,CAAC,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC;IACtD,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAEnE,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,GAAW,EAAE,EAAE,CAChE,IAAI,GAAG,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,SAAS,KAAK,MAAM,CAAC,OAAO,EAAE,CACpH,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEtB,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS,OAAO,CAAC,MAAM,gBAAgB,gBAAgB,EAAE;aAChE;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/server/tools/search.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAQ7D,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAyB,EACzB,IAAyE;IAEzE,MAAM,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC3C,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAEvC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,aAAa,GAAQ,EAAE,IAAI,EAAE,CAAC;IACpC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,aAAa,CAAC,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC;IACtD,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAEnE,WAAW,CAAC,QAAQ,EAAE,YAAY,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;QAC5F,YAAY,EAAE,OAAO,CAAC,MAAM;QAC5B,IAAI;QACJ,OAAO,EAAE,OAAO,IAAI,EAAE;KACvB,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,GAAW,EAAE,EAAE,CAChE,IAAI,GAAG,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,SAAS,KAAK,MAAM,CAAC,OAAO,EAAE,CACpH,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEtB,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS,OAAO,CAAC,MAAM,gBAAgB,gBAAgB,EAAE;aAChE;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ export interface ActivityEntry {
2
+ timestamp: string;
3
+ type: 'ingest' | 'search' | 'crawl' | 'error' | 'query';
4
+ message: string;
5
+ details?: Record<string, any>;
6
+ }
7
+ export declare function logActivity(type: ActivityEntry['type'], message: string, details?: Record<string, any>): void;
8
+ export declare function getActivityLog(): ActivityEntry[];
9
+ export declare function clearActivityLog(): void;
10
+ //# sourceMappingURL=activity-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-log.d.ts","sourceRoot":"","sources":["../../src/services/activity-log.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAYD,wBAAgB,WAAW,CACzB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,EAC3B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC5B,IAAI,CAqBN;AAED,wBAAgB,cAAc,IAAI,aAAa,EAAE,CAahD;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAOvC"}
@@ -0,0 +1,53 @@
1
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
2
+ import { join } from 'path';
3
+ import { homedir } from 'os';
4
+ const ACTIVITY_LOG_DIR = join(homedir(), '.cursor-rag');
5
+ const ACTIVITY_LOG_FILE = join(ACTIVITY_LOG_DIR, 'activity.json');
6
+ const MAX_ENTRIES = 100;
7
+ function ensureLogDir() {
8
+ if (!existsSync(ACTIVITY_LOG_DIR)) {
9
+ mkdirSync(ACTIVITY_LOG_DIR, { recursive: true });
10
+ }
11
+ }
12
+ export function logActivity(type, message, details) {
13
+ try {
14
+ ensureLogDir();
15
+ const entries = getActivityLog();
16
+ entries.unshift({
17
+ timestamp: new Date().toISOString(),
18
+ type,
19
+ message,
20
+ details
21
+ });
22
+ // Keep only the most recent entries
23
+ const trimmed = entries.slice(0, MAX_ENTRIES);
24
+ writeFileSync(ACTIVITY_LOG_FILE, JSON.stringify(trimmed, null, 2), 'utf-8');
25
+ }
26
+ catch (error) {
27
+ // Silently fail - activity logging shouldn't break the main flow
28
+ console.error('Failed to log activity:', error);
29
+ }
30
+ }
31
+ export function getActivityLog() {
32
+ try {
33
+ ensureLogDir();
34
+ if (!existsSync(ACTIVITY_LOG_FILE)) {
35
+ return [];
36
+ }
37
+ const content = readFileSync(ACTIVITY_LOG_FILE, 'utf-8');
38
+ return JSON.parse(content);
39
+ }
40
+ catch (error) {
41
+ return [];
42
+ }
43
+ }
44
+ export function clearActivityLog() {
45
+ try {
46
+ ensureLogDir();
47
+ writeFileSync(ACTIVITY_LOG_FILE, '[]', 'utf-8');
48
+ }
49
+ catch (error) {
50
+ console.error('Failed to clear activity log:', error);
51
+ }
52
+ }
53
+ //# sourceMappingURL=activity-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-log.js","sourceRoot":"","sources":["../../src/services/activity-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAW,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAS7B,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AACxD,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;AAClE,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,SAAS,YAAY;IACnB,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,IAA2B,EAC3B,OAAe,EACf,OAA6B;IAE7B,IAAI,CAAC;QACH,YAAY,EAAE,CAAC;QAEf,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QAEjC,OAAO,CAAC,OAAO,CAAC;YACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,IAAI;YACJ,OAAO;YACP,OAAO;SACR,CAAC,CAAC;QAEH,oCAAoC;QACpC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QAE9C,aAAa,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,iEAAiE;QACjE,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC;QACH,YAAY,EAAE,CAAC;QAEf,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC;QACH,YAAY,EAAE,CAAC;QACf,aAAa,CAAC,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;AACH,CAAC"}