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,345 @@
1
+ /**
2
+ * Rules Analyzer Configuration
3
+ *
4
+ * User-configurable settings for the rules optimizer.
5
+ * Can be set via:
6
+ * - Config file: ~/.cursor-rag/rules-config.json
7
+ * - Dashboard UI
8
+ * - CLI flags
9
+ */
10
+ import { z } from 'zod';
11
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
12
+ import { join } from 'path';
13
+ import { homedir } from 'os';
14
+ /**
15
+ * Custom version check pattern
16
+ */
17
+ export const VersionCheckSchema = z.object({
18
+ /** Technology name (e.g., "Laravel", "React") */
19
+ name: z.string(),
20
+ /** Regex pattern to match version mentions (should have one capture group for version) */
21
+ pattern: z.string(),
22
+ /** Current/expected version number */
23
+ currentVersion: z.string(),
24
+ /** Whether this check is enabled */
25
+ enabled: z.boolean().default(true),
26
+ });
27
+ /**
28
+ * Custom deprecation pattern
29
+ */
30
+ export const DeprecationPatternSchema = z.object({
31
+ /** Pattern name/identifier */
32
+ name: z.string(),
33
+ /** Regex pattern to detect the deprecated usage */
34
+ pattern: z.string(),
35
+ /** Human-readable reason why this is deprecated */
36
+ reason: z.string(),
37
+ /** Suggested alternative */
38
+ suggestion: z.string().optional(),
39
+ /** Whether this check is enabled */
40
+ enabled: z.boolean().default(true),
41
+ });
42
+ /**
43
+ * Custom tag extraction pattern
44
+ */
45
+ export const TagPatternSchema = z.object({
46
+ /** Tag that will be applied */
47
+ tag: z.string(),
48
+ /** Regex pattern to match content */
49
+ pattern: z.string(),
50
+ /** Whether this pattern is enabled */
51
+ enabled: z.boolean().default(true),
52
+ });
53
+ /**
54
+ * LLM Provider type
55
+ */
56
+ export const LLMProviderTypeSchema = z.enum([
57
+ 'openai',
58
+ 'anthropic',
59
+ 'deepseek',
60
+ 'groq',
61
+ 'ollama',
62
+ 'openrouter',
63
+ ]);
64
+ /**
65
+ * LLM configuration for rules analyzer
66
+ */
67
+ export const LLMConfigSchema = z.object({
68
+ /** Selected provider */
69
+ provider: LLMProviderTypeSchema.optional(),
70
+ /** API key (stored securely) */
71
+ apiKey: z.string().optional(),
72
+ /** Selected model */
73
+ model: z.string().optional(),
74
+ /** Base URL override (for Ollama or custom endpoints) */
75
+ baseUrl: z.string().optional(),
76
+ }).default({});
77
+ /**
78
+ * Natural language rule (interpreted by LLM)
79
+ */
80
+ export const NaturalRuleSchema = z.object({
81
+ /** The rule description in plain English */
82
+ rule: z.string(),
83
+ /** Severity level */
84
+ severity: z.enum(['error', 'warning', 'info']).default('warning'),
85
+ /** Whether this rule is enabled */
86
+ enabled: z.boolean().default(true),
87
+ });
88
+ /**
89
+ * Full rules analyzer configuration
90
+ */
91
+ export const RulesAnalyzerConfigSchema = z.object({
92
+ /** Analysis settings */
93
+ analysis: z.object({
94
+ /** Minimum similarity threshold for duplicate detection (0-1) */
95
+ duplicateThreshold: z.number().min(0).max(1).default(0.7),
96
+ /** Maximum age in days before flagging as potentially outdated */
97
+ maxAgeDays: z.number().min(1).default(365),
98
+ /** Years back to consider as "old" when referenced */
99
+ oldYearThreshold: z.number().min(1).default(2),
100
+ /** Whether to detect conflicts */
101
+ detectConflicts: z.boolean().default(true),
102
+ /** Whether to detect outdated rules */
103
+ detectOutdated: z.boolean().default(true),
104
+ /** Whether to use LLM for enhanced analysis */
105
+ useLLM: z.boolean().default(false),
106
+ }).default({}),
107
+ /** LLM provider configuration */
108
+ llm: LLMConfigSchema.default({}),
109
+ /** Natural language rules (LLM-interpreted) */
110
+ naturalRules: z.array(NaturalRuleSchema).default([]),
111
+ /** Custom version checks */
112
+ versionChecks: z.array(VersionCheckSchema).default([]),
113
+ /** Custom deprecation patterns */
114
+ deprecationPatterns: z.array(DeprecationPatternSchema).default([]),
115
+ /** Custom tag extraction patterns */
116
+ tagPatterns: z.array(TagPatternSchema).default([]),
117
+ /** File patterns */
118
+ files: z.object({
119
+ /** Patterns to include */
120
+ include: z.array(z.string()).default(['**/*.mdc', '**/*.md', '**/AGENTS.md', '**/.cursorrules']),
121
+ /** Patterns to exclude */
122
+ exclude: z.array(z.string()).default(['**/node_modules/**', '**/.git/**', '**/dist/**']),
123
+ }).default({}),
124
+ /** Optimization settings */
125
+ optimization: z.object({
126
+ /** Aggressiveness level */
127
+ aggressiveness: z.enum(['conservative', 'balanced', 'aggressive']).default('balanced'),
128
+ /** Maximum tokens per merged rule */
129
+ maxTokensPerRule: z.number().min(100).default(2000),
130
+ /** Create backups before modifications */
131
+ createBackups: z.boolean().default(true),
132
+ /** Backup directory */
133
+ backupDir: z.string().default('.cursor-rag/rules-backup'),
134
+ }).default({}),
135
+ });
136
+ /**
137
+ * Default configuration
138
+ */
139
+ export const DEFAULT_RULES_CONFIG = {
140
+ analysis: {
141
+ duplicateThreshold: 0.7,
142
+ maxAgeDays: 365,
143
+ oldYearThreshold: 2,
144
+ detectConflicts: true,
145
+ detectOutdated: true,
146
+ useLLM: false,
147
+ },
148
+ llm: {},
149
+ naturalRules: [],
150
+ versionChecks: [],
151
+ deprecationPatterns: [],
152
+ tagPatterns: [],
153
+ files: {
154
+ include: ['**/*.mdc', '**/*.md', '**/AGENTS.md', '**/.cursorrules'],
155
+ exclude: ['**/node_modules/**', '**/.git/**', '**/dist/**'],
156
+ },
157
+ optimization: {
158
+ aggressiveness: 'balanced',
159
+ maxTokensPerRule: 2000,
160
+ createBackups: true,
161
+ backupDir: '.cursor-rag/rules-backup',
162
+ },
163
+ };
164
+ /**
165
+ * Available LLM providers with their requirements
166
+ */
167
+ export const LLM_PROVIDERS = [
168
+ { id: 'openai', name: 'OpenAI', requiresKey: true, placeholder: 'sk-...' },
169
+ { id: 'anthropic', name: 'Anthropic', requiresKey: true, placeholder: 'sk-ant-...' },
170
+ { id: 'deepseek', name: 'DeepSeek', requiresKey: true, placeholder: 'sk-...' },
171
+ { id: 'groq', name: 'Groq', requiresKey: true, placeholder: 'gsk_...' },
172
+ { id: 'ollama', name: 'Ollama (Local)', requiresKey: false, placeholder: '' },
173
+ { id: 'openrouter', name: 'OpenRouter', requiresKey: true, placeholder: 'sk-or-...' },
174
+ ];
175
+ /**
176
+ * Example configuration with common patterns (shown in dashboard as templates)
177
+ */
178
+ export const EXAMPLE_PATTERNS = {
179
+ versionChecks: [
180
+ {
181
+ name: 'Laravel',
182
+ pattern: '\\blaravel\\s+(\\d+)',
183
+ currentVersion: '11',
184
+ enabled: false,
185
+ },
186
+ {
187
+ name: 'React',
188
+ pattern: '\\breact\\s+(\\d+)',
189
+ currentVersion: '19',
190
+ enabled: false,
191
+ },
192
+ {
193
+ name: 'Vue',
194
+ pattern: '\\bvue\\s+(\\d+)',
195
+ currentVersion: '3',
196
+ enabled: false,
197
+ },
198
+ {
199
+ name: 'Node.js',
200
+ pattern: '\\bnode\\.?js?\\s+(\\d+)',
201
+ currentVersion: '22',
202
+ enabled: false,
203
+ },
204
+ {
205
+ name: 'TypeScript',
206
+ pattern: '\\btypescript\\s+(\\d+\\.?\\d*)',
207
+ currentVersion: '5.7',
208
+ enabled: false,
209
+ },
210
+ {
211
+ name: 'PHP',
212
+ pattern: '\\bphp\\s+(\\d+\\.?\\d*)',
213
+ currentVersion: '8.3',
214
+ enabled: false,
215
+ },
216
+ ],
217
+ deprecationPatterns: [
218
+ {
219
+ name: 'var-usage',
220
+ pattern: '\\bvar\\s+\\w+\\s*=',
221
+ reason: 'var is generally discouraged in modern JavaScript',
222
+ suggestion: 'Use const or let instead',
223
+ enabled: false,
224
+ },
225
+ {
226
+ name: 'react-class-components',
227
+ pattern: '\\bclass\\s+\\w+\\s+extends\\s+(React\\.)?Component\\b',
228
+ reason: 'Class components are less common in modern React',
229
+ suggestion: 'Consider using functional components with hooks',
230
+ enabled: false,
231
+ },
232
+ ],
233
+ tagPatterns: [
234
+ {
235
+ tag: 'typescript',
236
+ pattern: '\\b(typescript|\\.ts|\\.tsx)\\b',
237
+ enabled: true,
238
+ },
239
+ {
240
+ tag: 'react',
241
+ pattern: '\\breact\\b',
242
+ enabled: true,
243
+ },
244
+ {
245
+ tag: 'testing',
246
+ pattern: '\\b(test|jest|vitest|cypress|playwright)\\b',
247
+ enabled: true,
248
+ },
249
+ ],
250
+ };
251
+ /**
252
+ * Get config file path
253
+ */
254
+ function getConfigPath() {
255
+ return join(homedir(), '.cursor-rag', 'rules-config.json');
256
+ }
257
+ /**
258
+ * Load rules analyzer configuration
259
+ */
260
+ export function loadRulesConfig() {
261
+ const configPath = getConfigPath();
262
+ if (!existsSync(configPath)) {
263
+ return DEFAULT_RULES_CONFIG;
264
+ }
265
+ try {
266
+ const content = readFileSync(configPath, 'utf-8');
267
+ const parsed = JSON.parse(content);
268
+ const validated = RulesAnalyzerConfigSchema.parse(parsed);
269
+ return validated;
270
+ }
271
+ catch (error) {
272
+ console.warn(`Failed to load rules config from ${configPath}:`, error);
273
+ return DEFAULT_RULES_CONFIG;
274
+ }
275
+ }
276
+ /**
277
+ * Save rules analyzer configuration
278
+ */
279
+ export function saveRulesConfig(config) {
280
+ const configPath = getConfigPath();
281
+ const configDir = join(homedir(), '.cursor-rag');
282
+ if (!existsSync(configDir)) {
283
+ mkdirSync(configDir, { recursive: true });
284
+ }
285
+ // Validate before saving
286
+ const validated = RulesAnalyzerConfigSchema.parse(config);
287
+ writeFileSync(configPath, JSON.stringify(validated, null, 2));
288
+ }
289
+ /**
290
+ * Merge user config with defaults
291
+ */
292
+ export function mergeRulesConfig(userConfig) {
293
+ return RulesAnalyzerConfigSchema.parse({
294
+ ...DEFAULT_RULES_CONFIG,
295
+ ...userConfig,
296
+ analysis: {
297
+ ...DEFAULT_RULES_CONFIG.analysis,
298
+ ...userConfig.analysis,
299
+ },
300
+ files: {
301
+ ...DEFAULT_RULES_CONFIG.files,
302
+ ...userConfig.files,
303
+ },
304
+ optimization: {
305
+ ...DEFAULT_RULES_CONFIG.optimization,
306
+ ...userConfig.optimization,
307
+ },
308
+ });
309
+ }
310
+ /**
311
+ * Validate a single pattern (for UI validation)
312
+ */
313
+ export function validatePattern(pattern) {
314
+ try {
315
+ new RegExp(pattern, 'gi');
316
+ return { valid: true };
317
+ }
318
+ catch (error) {
319
+ return {
320
+ valid: false,
321
+ error: error instanceof Error ? error.message : 'Invalid regex pattern'
322
+ };
323
+ }
324
+ }
325
+ /**
326
+ * Test a pattern against sample content
327
+ */
328
+ export function testPattern(pattern, content) {
329
+ try {
330
+ const regex = new RegExp(pattern, 'gi');
331
+ const match = regex.exec(content);
332
+ if (match) {
333
+ return {
334
+ matches: true,
335
+ matchedText: match[0],
336
+ captureGroups: match.slice(1),
337
+ };
338
+ }
339
+ return { matches: false };
340
+ }
341
+ catch {
342
+ return { matches: false };
343
+ }
344
+ }
345
+ //# sourceMappingURL=rulesConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rulesConfig.js","sourceRoot":"","sources":["../../src/config/rulesConfig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { ToolDefinition, ToolExecutor } from './toolRegistry.js';
2
+ export declare const coreToolDefinitions: Array<{
3
+ definition: ToolDefinition;
4
+ executor: ToolExecutor;
5
+ }>;
6
+ /**
7
+ * Register all core tools with the registry
8
+ */
9
+ export declare function registerCoreTools(): void;
10
+ /**
11
+ * Get the count of registered core tools
12
+ */
13
+ export declare function getCoreToolCount(): number;
14
+ //# sourceMappingURL=coreTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coreTools.d.ts","sourceRoot":"","sources":["../../src/dashboard/coreTools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,mBAAmB,CAAC;AA2DlF,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC;IAAE,UAAU,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAA;CAAE,CAiW7F,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAQxC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}