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,167 @@
1
+ /**
2
+ * Typed relationships between knowledge chunks
3
+ *
4
+ * These relationship types enable multi-hop reasoning and graph traversal
5
+ * for more intelligent knowledge retrieval.
6
+ */
7
+ import { RelationshipType } from './memory.js';
8
+ export { RelationshipType };
9
+ /**
10
+ * Categories of relationship types for filtering
11
+ */
12
+ export declare const RELATIONSHIP_CATEGORIES: {
13
+ readonly semantic: readonly [RelationshipType.RELATES_TO, RelationshipType.SIMILAR_TO];
14
+ readonly causal: readonly [RelationshipType.LEADS_TO, RelationshipType.DERIVES_FROM, RelationshipType.SOLVES];
15
+ readonly temporal: readonly [RelationshipType.SUPERSEDES, RelationshipType.OCCURRED_BEFORE, RelationshipType.EVOLVED_INTO];
16
+ readonly conflict: readonly [RelationshipType.CONTRADICTS, RelationshipType.INVALIDATED_BY];
17
+ readonly preference: readonly [RelationshipType.PREFERS_OVER];
18
+ readonly structural: readonly [RelationshipType.PART_OF, RelationshipType.DEPENDS_ON, RelationshipType.IMPLEMENTS, RelationshipType.EXEMPLIFIES, RelationshipType.EXTENDS, RelationshipType.REFERENCES, RelationshipType.EXAMPLE_OF, RelationshipType.ALTERNATIVE_TO];
19
+ };
20
+ /**
21
+ * Bidirectional relationship pairs - relationships that naturally work both ways
22
+ */
23
+ export declare const BIDIRECTIONAL_RELATIONSHIPS: Set<RelationshipType>;
24
+ /**
25
+ * Maps relationship types to their logical reverse
26
+ */
27
+ export declare const REVERSE_RELATIONSHIP_MAP: Record<RelationshipType, RelationshipType>;
28
+ /**
29
+ * A relationship between two chunks with metadata
30
+ */
31
+ export interface Relationship {
32
+ id: string;
33
+ fromChunkId: string;
34
+ toChunkId: string;
35
+ type: RelationshipType;
36
+ strength: number;
37
+ createdAt: Date;
38
+ metadata: Record<string, unknown>;
39
+ bidirectional: boolean;
40
+ }
41
+ /**
42
+ * Options for graph traversal operations
43
+ */
44
+ export interface GraphTraversalOptions {
45
+ maxDepth: number;
46
+ relationshipTypes?: RelationshipType[];
47
+ minStrength?: number;
48
+ excludeArchived?: boolean;
49
+ includeMetadata?: boolean;
50
+ direction?: 'from' | 'to' | 'both';
51
+ }
52
+ /**
53
+ * Default traversal options
54
+ */
55
+ export declare const DEFAULT_TRAVERSAL_OPTIONS: GraphTraversalOptions;
56
+ /**
57
+ * A node in the traversal result graph
58
+ */
59
+ export interface GraphNode {
60
+ chunkId: string;
61
+ depth: number;
62
+ path: string[];
63
+ relationshipType: RelationshipType;
64
+ strength: number;
65
+ metadata?: Record<string, unknown>;
66
+ }
67
+ /**
68
+ * Result of a graph traversal operation
69
+ */
70
+ export interface GraphTraversalResult {
71
+ startChunkId: string;
72
+ nodes: GraphNode[];
73
+ totalNodes: number;
74
+ maxDepthReached: number;
75
+ truncated: boolean;
76
+ }
77
+ /**
78
+ * A detected contradiction between chunks
79
+ */
80
+ export interface Contradiction {
81
+ chunkId: string;
82
+ type: 'contradiction' | 'invalidation' | 'superseded';
83
+ strength: number;
84
+ metadata?: Record<string, unknown>;
85
+ }
86
+ /**
87
+ * A potential contradiction detected automatically
88
+ */
89
+ export interface PotentialContradiction {
90
+ existingChunkId: string;
91
+ newChunkId: string;
92
+ similarity: number;
93
+ reason: string;
94
+ suggestedAction: 'review' | 'supersede' | 'merge' | 'ignore';
95
+ }
96
+ /**
97
+ * Statistics about the relationship graph
98
+ */
99
+ export interface GraphStats {
100
+ totalRelationships: number;
101
+ relationshipsByType: Record<RelationshipType, number>;
102
+ avgRelationshipsPerChunk: number;
103
+ maxDepth: number;
104
+ isolatedChunks: number;
105
+ mostConnectedChunks: Array<{
106
+ chunkId: string;
107
+ connections: number;
108
+ }>;
109
+ }
110
+ /**
111
+ * Options for finding related chunks
112
+ */
113
+ export interface FindRelatedOptions {
114
+ types?: RelationshipType[];
115
+ minStrength?: number;
116
+ maxResults?: number;
117
+ includeTransitive?: boolean;
118
+ transitiveDepth?: number;
119
+ }
120
+ /**
121
+ * A related chunk with relationship context
122
+ */
123
+ export interface RelatedChunk {
124
+ chunkId: string;
125
+ relationshipType: RelationshipType;
126
+ strength: number;
127
+ isTransitive: boolean;
128
+ path?: string[];
129
+ }
130
+ /**
131
+ * Batch operation for creating multiple relationships
132
+ */
133
+ export interface RelationshipBatch {
134
+ relationships: Array<{
135
+ fromChunkId: string;
136
+ toChunkId: string;
137
+ type: RelationshipType;
138
+ strength?: number;
139
+ bidirectional?: boolean;
140
+ metadata?: Record<string, unknown>;
141
+ }>;
142
+ }
143
+ /**
144
+ * Result of a batch relationship operation
145
+ */
146
+ export interface RelationshipBatchResult {
147
+ created: number;
148
+ updated: number;
149
+ failed: number;
150
+ errors?: Array<{
151
+ index: number;
152
+ error: string;
153
+ }>;
154
+ }
155
+ /**
156
+ * Helper function to check if a relationship type is bidirectional
157
+ */
158
+ export declare function isBidirectional(type: RelationshipType): boolean;
159
+ /**
160
+ * Get the reverse relationship type for a given type
161
+ */
162
+ export declare function getReverseType(type: RelationshipType): RelationshipType;
163
+ /**
164
+ * Get all relationship types in a category
165
+ */
166
+ export declare function getRelationshipsByCategory(category: keyof typeof RELATIONSHIP_CATEGORIES): RelationshipType[];
167
+ //# sourceMappingURL=relationships.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationships.d.ts","sourceRoot":"","sources":["../../src/types/relationships.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Typed relationships between knowledge chunks
3
+ *
4
+ * These relationship types enable multi-hop reasoning and graph traversal
5
+ * for more intelligent knowledge retrieval.
6
+ */
7
+ import { RelationshipType } from './memory.js';
8
+ // Re-export for convenience
9
+ export { RelationshipType };
10
+ /**
11
+ * Categories of relationship types for filtering
12
+ */
13
+ export const RELATIONSHIP_CATEGORIES = {
14
+ semantic: [
15
+ RelationshipType.RELATES_TO,
16
+ RelationshipType.SIMILAR_TO,
17
+ ],
18
+ causal: [
19
+ RelationshipType.LEADS_TO,
20
+ RelationshipType.DERIVES_FROM,
21
+ RelationshipType.SOLVES,
22
+ ],
23
+ temporal: [
24
+ RelationshipType.SUPERSEDES,
25
+ RelationshipType.OCCURRED_BEFORE,
26
+ RelationshipType.EVOLVED_INTO,
27
+ ],
28
+ conflict: [
29
+ RelationshipType.CONTRADICTS,
30
+ RelationshipType.INVALIDATED_BY,
31
+ ],
32
+ preference: [
33
+ RelationshipType.PREFERS_OVER,
34
+ ],
35
+ structural: [
36
+ RelationshipType.PART_OF,
37
+ RelationshipType.DEPENDS_ON,
38
+ RelationshipType.IMPLEMENTS,
39
+ RelationshipType.EXEMPLIFIES,
40
+ RelationshipType.EXTENDS,
41
+ RelationshipType.REFERENCES,
42
+ RelationshipType.EXAMPLE_OF,
43
+ RelationshipType.ALTERNATIVE_TO,
44
+ ],
45
+ };
46
+ /**
47
+ * Bidirectional relationship pairs - relationships that naturally work both ways
48
+ */
49
+ export const BIDIRECTIONAL_RELATIONSHIPS = new Set([
50
+ RelationshipType.RELATES_TO,
51
+ RelationshipType.SIMILAR_TO,
52
+ RelationshipType.CONTRADICTS,
53
+ ]);
54
+ /**
55
+ * Maps relationship types to their logical reverse
56
+ */
57
+ export const REVERSE_RELATIONSHIP_MAP = {
58
+ [RelationshipType.RELATES_TO]: RelationshipType.RELATES_TO,
59
+ [RelationshipType.SIMILAR_TO]: RelationshipType.SIMILAR_TO,
60
+ [RelationshipType.LEADS_TO]: RelationshipType.DERIVES_FROM,
61
+ [RelationshipType.DERIVES_FROM]: RelationshipType.LEADS_TO,
62
+ [RelationshipType.SOLVES]: RelationshipType.SOLVES,
63
+ [RelationshipType.SUPERSEDES]: RelationshipType.SUPERSEDES,
64
+ [RelationshipType.OCCURRED_BEFORE]: RelationshipType.OCCURRED_BEFORE,
65
+ [RelationshipType.EVOLVED_INTO]: RelationshipType.DERIVES_FROM,
66
+ [RelationshipType.CONTRADICTS]: RelationshipType.CONTRADICTS,
67
+ [RelationshipType.INVALIDATED_BY]: RelationshipType.INVALIDATED_BY,
68
+ [RelationshipType.PREFERS_OVER]: RelationshipType.PREFERS_OVER,
69
+ [RelationshipType.PART_OF]: RelationshipType.PART_OF,
70
+ [RelationshipType.DEPENDS_ON]: RelationshipType.DEPENDS_ON,
71
+ [RelationshipType.IMPLEMENTS]: RelationshipType.EXEMPLIFIES,
72
+ [RelationshipType.EXEMPLIFIES]: RelationshipType.IMPLEMENTS,
73
+ [RelationshipType.EXTENDS]: RelationshipType.EXTENDS,
74
+ [RelationshipType.REFERENCES]: RelationshipType.REFERENCES,
75
+ [RelationshipType.EXAMPLE_OF]: RelationshipType.EXAMPLE_OF,
76
+ [RelationshipType.ALTERNATIVE_TO]: RelationshipType.ALTERNATIVE_TO,
77
+ };
78
+ /**
79
+ * Default traversal options
80
+ */
81
+ export const DEFAULT_TRAVERSAL_OPTIONS = {
82
+ maxDepth: 2,
83
+ minStrength: 0.3,
84
+ excludeArchived: true,
85
+ includeMetadata: false,
86
+ direction: 'both',
87
+ };
88
+ /**
89
+ * Helper function to check if a relationship type is bidirectional
90
+ */
91
+ export function isBidirectional(type) {
92
+ return BIDIRECTIONAL_RELATIONSHIPS.has(type);
93
+ }
94
+ /**
95
+ * Get the reverse relationship type for a given type
96
+ */
97
+ export function getReverseType(type) {
98
+ return REVERSE_RELATIONSHIP_MAP[type];
99
+ }
100
+ /**
101
+ * Get all relationship types in a category
102
+ */
103
+ export function getRelationshipsByCategory(category) {
104
+ return [...RELATIONSHIP_CATEGORIES[category]];
105
+ }
106
+ //# sourceMappingURL=relationships.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationships.js","sourceRoot":"","sources":["../../src/types/relationships.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,345 @@
1
+ /**
2
+ * Rules Optimizer Types
3
+ *
4
+ * Types for parsing, analyzing, and optimizing Cursor rules and AGENTS.md files.
5
+ */
6
+ /**
7
+ * Supported rule file formats
8
+ */
9
+ export type RuleFileFormat = 'mdc' | 'md' | 'txt' | 'cursorrules';
10
+ /**
11
+ * A rule file in the filesystem
12
+ */
13
+ export interface RuleFile {
14
+ /** Absolute path to the file */
15
+ path: string;
16
+ /** File name without directory */
17
+ filename: string;
18
+ /** File format detected from extension */
19
+ format: RuleFileFormat;
20
+ /** Raw file content */
21
+ content: string;
22
+ /** File size in bytes */
23
+ size: number;
24
+ /** Last modified timestamp */
25
+ lastModified: Date;
26
+ /** Whether file is in .cursor/rules directory */
27
+ isCursorRule: boolean;
28
+ }
29
+ /**
30
+ * Metadata extracted from .mdc frontmatter
31
+ */
32
+ export interface RuleFrontmatter {
33
+ /** Rule description */
34
+ description?: string;
35
+ /** Glob patterns for file matching */
36
+ globs?: string | string[];
37
+ /** Whether rule is always applied */
38
+ alwaysApply?: boolean;
39
+ /** Rule priority/order */
40
+ priority?: number;
41
+ /** Custom tags */
42
+ tags?: string[];
43
+ /** Any additional frontmatter fields */
44
+ [key: string]: unknown;
45
+ }
46
+ /**
47
+ * A parsed rule extracted from a file
48
+ */
49
+ export interface ParsedRule {
50
+ /** Unique identifier for this rule */
51
+ id: string;
52
+ /** Rule title/name (from first heading or filename) */
53
+ title: string;
54
+ /** Rule content (markdown body) */
55
+ content: string;
56
+ /** Source file */
57
+ sourceFile: RuleFile;
58
+ /** Starting line in source file */
59
+ startLine: number;
60
+ /** Ending line in source file */
61
+ endLine: number;
62
+ /** Frontmatter metadata (for .mdc files) */
63
+ frontmatter?: RuleFrontmatter;
64
+ /** Extracted tags/categories */
65
+ tags: string[];
66
+ /** Dependencies on other rules (by ID or title) */
67
+ dependencies: string[];
68
+ /** Estimated token count */
69
+ tokenCount: number;
70
+ /** Content hash for deduplication */
71
+ contentHash: string;
72
+ /** Whether this is a section within a larger file */
73
+ isSection: boolean;
74
+ /** Parent rule ID if this is a section */
75
+ parentRuleId?: string;
76
+ }
77
+ /**
78
+ * Similarity match between two rules
79
+ */
80
+ export interface DuplicateMatch {
81
+ /** First rule */
82
+ rule1: ParsedRule;
83
+ /** Second rule */
84
+ rule2: ParsedRule;
85
+ /** Similarity score (0-1) */
86
+ similarity: number;
87
+ /** Type of match */
88
+ matchType: DuplicateMatchType;
89
+ /** Specific overlapping content/concepts */
90
+ overlappingConcepts: string[];
91
+ /** Recommendation for handling this duplicate */
92
+ recommendation: DuplicateRecommendation;
93
+ }
94
+ export type DuplicateMatchType = 'exact' | 'near_exact' | 'semantic' | 'subset' | 'contradicting';
95
+ export type DuplicateRecommendation = 'merge' | 'keep_newer' | 'keep_specific' | 'manual_review' | 'resolve_conflict';
96
+ /**
97
+ * A cluster of related rules that could be merged
98
+ */
99
+ export interface RuleCluster {
100
+ /** Cluster identifier */
101
+ id: string;
102
+ /** Suggested name for merged rule */
103
+ suggestedName: string;
104
+ /** Rules in this cluster */
105
+ rules: ParsedRule[];
106
+ /** Common tags across all rules */
107
+ commonTags: string[];
108
+ /** Topic/theme of this cluster */
109
+ topic: string;
110
+ /** Confidence score for this grouping (0-1) */
111
+ confidence: number;
112
+ /** Total tokens if kept separate */
113
+ totalTokensSeparate: number;
114
+ /** Estimated tokens after merging */
115
+ estimatedTokensMerged: number;
116
+ /** Token savings percentage */
117
+ savingsPercent: number;
118
+ }
119
+ /**
120
+ * A candidate for rule merging
121
+ */
122
+ export interface MergeCandidate {
123
+ /** Rules to be merged */
124
+ rules: ParsedRule[];
125
+ /** Proposed merged content */
126
+ mergedContent: string;
127
+ /** Proposed merged title */
128
+ mergedTitle: string;
129
+ /** Reasoning for the merge */
130
+ mergeRationale: string;
131
+ /** Confidence score (0-1) */
132
+ confidence: number;
133
+ /** Token count before merge */
134
+ tokensBefore: number;
135
+ /** Token count after merge */
136
+ tokensAfter: number;
137
+ /** What was preserved from each rule */
138
+ preservedFrom: Array<{
139
+ ruleId: string;
140
+ preservedConcepts: string[];
141
+ }>;
142
+ }
143
+ /**
144
+ * Conflict between rules
145
+ */
146
+ export interface RuleConflict {
147
+ /** First conflicting rule */
148
+ rule1: ParsedRule;
149
+ /** Second conflicting rule */
150
+ rule2: ParsedRule;
151
+ /** Type of conflict */
152
+ conflictType: ConflictType;
153
+ /** Description of the conflict */
154
+ description: string;
155
+ /** Specific conflicting statements */
156
+ conflictingStatements: Array<{
157
+ from: string;
158
+ statement1: string;
159
+ statement2: string;
160
+ }>;
161
+ /** Suggested resolution */
162
+ resolution?: ConflictResolution;
163
+ }
164
+ export type ConflictType = 'direct_contradiction' | 'implicit_contradiction' | 'scope_overlap' | 'version_mismatch' | 'preference_conflict';
165
+ export interface ConflictResolution {
166
+ /** Which rule to prefer */
167
+ preferredRuleId: string;
168
+ /** Why this rule is preferred */
169
+ reasoning: string;
170
+ /** Suggested merged content (if applicable) */
171
+ mergedContent?: string;
172
+ }
173
+ /**
174
+ * Overall optimization report
175
+ */
176
+ export interface OptimizationReport {
177
+ /** Report generation timestamp */
178
+ generatedAt: Date;
179
+ /** Directory/path that was analyzed */
180
+ analyzedPath: string;
181
+ /** Summary statistics */
182
+ summary: {
183
+ /** Total rule files found */
184
+ totalFiles: number;
185
+ /** Total individual rules extracted */
186
+ totalRules: number;
187
+ /** Total tokens before optimization */
188
+ totalTokensBefore: number;
189
+ /** Total tokens after optimization (if applied) */
190
+ totalTokensAfter: number;
191
+ /** Token savings percentage */
192
+ savingsPercent: number;
193
+ /** Number of duplicates found */
194
+ duplicatesFound: number;
195
+ /** Number of conflicts found */
196
+ conflictsFound: number;
197
+ /** Number of merge candidates */
198
+ mergeCandidates: number;
199
+ /** Number of outdated rules */
200
+ outdatedRules: number;
201
+ };
202
+ /** Detailed findings */
203
+ findings: {
204
+ /** Duplicate matches */
205
+ duplicates: DuplicateMatch[];
206
+ /** Rule clusters */
207
+ clusters: RuleCluster[];
208
+ /** Merge candidates */
209
+ merges: MergeCandidate[];
210
+ /** Conflicts */
211
+ conflicts: RuleConflict[];
212
+ /** Rules detected as outdated */
213
+ outdated: OutdatedRule[];
214
+ };
215
+ /** Optimization plan */
216
+ plan: OptimizationPlan;
217
+ /** Files that would be modified/created/deleted */
218
+ fileChanges: FileChange[];
219
+ }
220
+ /**
221
+ * A rule detected as potentially outdated
222
+ */
223
+ export interface OutdatedRule {
224
+ /** The outdated rule */
225
+ rule: ParsedRule;
226
+ /** Why it's considered outdated */
227
+ reason: string;
228
+ /** Confidence score (0-1) */
229
+ confidence: number;
230
+ /** Suggested action */
231
+ action: 'remove' | 'update' | 'review';
232
+ /** Specific outdated references */
233
+ outdatedReferences: Array<{
234
+ reference: string;
235
+ currentVersion?: string;
236
+ suggestedUpdate?: string;
237
+ }>;
238
+ }
239
+ /**
240
+ * Optimization plan with prioritized actions
241
+ */
242
+ export interface OptimizationPlan {
243
+ /** Ordered list of actions to take */
244
+ actions: OptimizationAction[];
245
+ /** Total estimated time to apply */
246
+ estimatedDuration: string;
247
+ /** Risk level of the plan */
248
+ riskLevel: 'low' | 'medium' | 'high';
249
+ /** Whether plan requires manual review */
250
+ requiresManualReview: boolean;
251
+ }
252
+ export interface OptimizationAction {
253
+ /** Action type */
254
+ type: 'merge' | 'delete' | 'update' | 'create' | 'move' | 'review';
255
+ /** Human-readable description */
256
+ description: string;
257
+ /** Rules affected */
258
+ affectedRules: string[];
259
+ /** Files affected */
260
+ affectedFiles: string[];
261
+ /** Token impact (negative = savings) */
262
+ tokenImpact: number;
263
+ /** Priority (1 = highest) */
264
+ priority: number;
265
+ /** Whether this action is safe to auto-apply */
266
+ autoApplyable: boolean;
267
+ }
268
+ /**
269
+ * File change for applying optimization
270
+ */
271
+ export interface FileChange {
272
+ /** File path */
273
+ path: string;
274
+ /** Type of change */
275
+ changeType: 'create' | 'modify' | 'delete' | 'rename';
276
+ /** Original content (for modify) */
277
+ originalContent?: string;
278
+ /** New content (for create/modify) */
279
+ newContent?: string;
280
+ /** New path (for rename) */
281
+ newPath?: string;
282
+ /** Backup path if created */
283
+ backupPath?: string;
284
+ }
285
+ /**
286
+ * Options for the rules optimizer
287
+ */
288
+ export interface RulesOptimizerOptions {
289
+ /** Minimum similarity threshold for duplicate detection (0-1) */
290
+ duplicateThreshold?: number;
291
+ /** Aggressiveness level for merging */
292
+ aggressiveness?: 'conservative' | 'balanced' | 'aggressive';
293
+ /** Whether to create backups before modifying */
294
+ createBackups?: boolean;
295
+ /** Directory for backups */
296
+ backupDir?: string;
297
+ /** Whether to detect outdated patterns */
298
+ detectOutdated?: boolean;
299
+ /** Whether to detect conflicts */
300
+ detectConflicts?: boolean;
301
+ /** Maximum token count per merged rule */
302
+ maxTokensPerRule?: number;
303
+ /** File patterns to include */
304
+ includePatterns?: string[];
305
+ /** File patterns to exclude */
306
+ excludePatterns?: string[];
307
+ /** Whether to use LLM for semantic analysis */
308
+ useLLM?: boolean;
309
+ /** Dry run mode - don't make actual changes */
310
+ dryRun?: boolean;
311
+ }
312
+ /**
313
+ * Default optimizer options
314
+ */
315
+ export declare const DEFAULT_OPTIMIZER_OPTIONS: Required<RulesOptimizerOptions>;
316
+ /**
317
+ * Result of applying optimization
318
+ */
319
+ export interface OptimizationResult {
320
+ /** Whether optimization was successful */
321
+ success: boolean;
322
+ /** Changes that were applied */
323
+ appliedChanges: FileChange[];
324
+ /** Changes that failed */
325
+ failedChanges: Array<{
326
+ change: FileChange;
327
+ error: string;
328
+ }>;
329
+ /** Backup directory if backups were created */
330
+ backupDir?: string;
331
+ /** Final statistics */
332
+ stats: {
333
+ filesModified: number;
334
+ filesCreated: number;
335
+ filesDeleted: number;
336
+ tokensSaved: number;
337
+ rulesRemoved: number;
338
+ rulesMerged: number;
339
+ };
340
+ /** Any warnings */
341
+ warnings: string[];
342
+ /** Duration of operation */
343
+ durationMs: number;
344
+ }
345
+ //# sourceMappingURL=rulesOptimizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rulesOptimizer.d.ts","sourceRoot":"","sources":["../../src/types/rulesOptimizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Rules Optimizer Types
3
+ *
4
+ * Types for parsing, analyzing, and optimizing Cursor rules and AGENTS.md files.
5
+ */
6
+ /**
7
+ * Default optimizer options
8
+ */
9
+ export const DEFAULT_OPTIMIZER_OPTIONS = {
10
+ duplicateThreshold: 0.7,
11
+ aggressiveness: 'balanced',
12
+ createBackups: true,
13
+ backupDir: '.cursor-rag/rules-backup',
14
+ detectOutdated: true,
15
+ detectConflicts: true,
16
+ maxTokensPerRule: 2000,
17
+ includePatterns: ['**/*.mdc', '**/*.md', '**/AGENTS.md', '**/.cursorrules'],
18
+ excludePatterns: ['**/node_modules/**', '**/.git/**'],
19
+ useLLM: true,
20
+ dryRun: false,
21
+ };
22
+ //# sourceMappingURL=rulesOptimizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rulesOptimizer.js","sourceRoot":"","sources":["../../src/types/rulesOptimizer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAyVH;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAoC;IACxE,kBAAkB,EAAE,GAAG;IACvB,cAAc,EAAE,UAAU;IAC1B,aAAa,EAAE,IAAI;IACnB,SAAS,EAAE,0BAA0B;IACrC,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,IAAI;IACrB,gBAAgB,EAAE,IAAI;IACtB,eAAe,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,iBAAiB,CAAC;IAC3E,eAAe,EAAE,CAAC,oBAAoB,EAAE,YAAY,CAAC;IACrD,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;CACd,CAAC"}