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.
- package/README.md +179 -203
- package/dist/adapters/llm/anthropic.d.ts +27 -0
- package/dist/adapters/llm/anthropic.d.ts.map +1 -0
- package/dist/adapters/llm/anthropic.js +287 -0
- package/dist/adapters/llm/anthropic.js.map +1 -0
- package/dist/adapters/llm/base.d.ts +62 -0
- package/dist/adapters/llm/base.d.ts.map +1 -0
- package/dist/adapters/llm/base.js +140 -0
- package/dist/adapters/llm/base.js.map +1 -0
- package/dist/adapters/llm/deepseek.d.ts +24 -0
- package/dist/adapters/llm/deepseek.d.ts.map +1 -0
- package/dist/adapters/llm/deepseek.js +228 -0
- package/dist/adapters/llm/deepseek.js.map +1 -0
- package/dist/adapters/llm/groq.d.ts +25 -0
- package/dist/adapters/llm/groq.d.ts.map +1 -0
- package/dist/adapters/llm/groq.js +265 -0
- package/dist/adapters/llm/groq.js.map +1 -0
- package/dist/adapters/llm/index.d.ts +62 -0
- package/dist/adapters/llm/index.d.ts.map +1 -0
- package/dist/adapters/llm/index.js +380 -0
- package/dist/adapters/llm/index.js.map +1 -0
- package/dist/adapters/llm/ollama.d.ts +23 -0
- package/dist/adapters/llm/ollama.d.ts.map +1 -0
- package/dist/adapters/llm/ollama.js +261 -0
- package/dist/adapters/llm/ollama.js.map +1 -0
- package/dist/adapters/llm/openai.d.ts +22 -0
- package/dist/adapters/llm/openai.d.ts.map +1 -0
- package/dist/adapters/llm/openai.js +232 -0
- package/dist/adapters/llm/openai.js.map +1 -0
- package/dist/adapters/llm/openrouter.d.ts +27 -0
- package/dist/adapters/llm/openrouter.d.ts.map +1 -0
- package/dist/adapters/llm/openrouter.js +305 -0
- package/dist/adapters/llm/openrouter.js.map +1 -0
- package/dist/adapters/vector/index.d.ts.map +1 -1
- package/dist/adapters/vector/index.js +8 -0
- package/dist/adapters/vector/index.js.map +1 -1
- package/dist/adapters/vector/redis-native.d.ts +35 -0
- package/dist/adapters/vector/redis-native.d.ts.map +1 -0
- package/dist/adapters/vector/redis-native.js +170 -0
- package/dist/adapters/vector/redis-native.js.map +1 -0
- package/dist/cli/commands/chat.d.ts +4 -0
- package/dist/cli/commands/chat.d.ts.map +1 -0
- package/dist/cli/commands/chat.js +374 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/maintenance.d.ts +4 -0
- package/dist/cli/commands/maintenance.d.ts.map +1 -0
- package/dist/cli/commands/maintenance.js +237 -0
- package/dist/cli/commands/maintenance.js.map +1 -0
- package/dist/cli/commands/rules.d.ts +9 -0
- package/dist/cli/commands/rules.d.ts.map +1 -0
- package/dist/cli/commands/rules.js +639 -0
- package/dist/cli/commands/rules.js.map +1 -0
- package/dist/cli/commands/setup.js +5 -4
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/index.js +6 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/config/memoryConfig.d.ts +427 -0
- package/dist/config/memoryConfig.d.ts.map +1 -0
- package/dist/config/memoryConfig.js +258 -0
- package/dist/config/memoryConfig.js.map +1 -0
- package/dist/config/rulesConfig.d.ts +486 -0
- package/dist/config/rulesConfig.d.ts.map +1 -0
- package/dist/config/rulesConfig.js +345 -0
- package/dist/config/rulesConfig.js.map +1 -0
- package/dist/dashboard/coreTools.d.ts +14 -0
- package/dist/dashboard/coreTools.d.ts.map +1 -0
- package/dist/dashboard/coreTools.js +413 -0
- package/dist/dashboard/coreTools.js.map +1 -0
- package/dist/dashboard/public/index.html +1982 -13
- package/dist/dashboard/server.d.ts +1 -8
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +846 -13
- package/dist/dashboard/server.js.map +1 -1
- package/dist/dashboard/toolRegistry.d.ts +192 -0
- package/dist/dashboard/toolRegistry.d.ts.map +1 -0
- package/dist/dashboard/toolRegistry.js +322 -0
- package/dist/dashboard/toolRegistry.js.map +1 -0
- package/dist/proxy/index.d.ts +1 -1
- package/dist/proxy/index.d.ts.map +1 -1
- package/dist/proxy/index.js +9 -6
- package/dist/proxy/index.js.map +1 -1
- package/dist/server/index.js +21 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/tools/crawl.d.ts.map +1 -1
- package/dist/server/tools/crawl.js +8 -0
- package/dist/server/tools/crawl.js.map +1 -1
- package/dist/server/tools/index.d.ts.map +1 -1
- package/dist/server/tools/index.js +19 -1
- package/dist/server/tools/index.js.map +1 -1
- package/dist/server/tools/ingest.d.ts.map +1 -1
- package/dist/server/tools/ingest.js +5 -0
- package/dist/server/tools/ingest.js.map +1 -1
- package/dist/server/tools/memory.d.ts +250 -0
- package/dist/server/tools/memory.d.ts.map +1 -0
- package/dist/server/tools/memory.js +472 -0
- package/dist/server/tools/memory.js.map +1 -0
- package/dist/server/tools/recursive-query.d.ts.map +1 -1
- package/dist/server/tools/recursive-query.js +6 -0
- package/dist/server/tools/recursive-query.js.map +1 -1
- package/dist/server/tools/search.d.ts.map +1 -1
- package/dist/server/tools/search.js +6 -0
- package/dist/server/tools/search.js.map +1 -1
- package/dist/services/activity-log.d.ts +10 -0
- package/dist/services/activity-log.d.ts.map +1 -0
- package/dist/services/activity-log.js +53 -0
- package/dist/services/activity-log.js.map +1 -0
- package/dist/services/categoryManager.d.ts +110 -0
- package/dist/services/categoryManager.d.ts.map +1 -0
- package/dist/services/categoryManager.js +549 -0
- package/dist/services/categoryManager.js.map +1 -0
- package/dist/services/contextEnvironment.d.ts +206 -0
- package/dist/services/contextEnvironment.d.ts.map +1 -0
- package/dist/services/contextEnvironment.js +481 -0
- package/dist/services/contextEnvironment.js.map +1 -0
- package/dist/services/conversationProcessor.d.ts +99 -0
- package/dist/services/conversationProcessor.d.ts.map +1 -0
- package/dist/services/conversationProcessor.js +311 -0
- package/dist/services/conversationProcessor.js.map +1 -0
- package/dist/services/cursorChatReader.d.ts +129 -0
- package/dist/services/cursorChatReader.d.ts.map +1 -0
- package/dist/services/cursorChatReader.js +419 -0
- package/dist/services/cursorChatReader.js.map +1 -0
- package/dist/services/decayCalculator.d.ts +85 -0
- package/dist/services/decayCalculator.d.ts.map +1 -0
- package/dist/services/decayCalculator.js +182 -0
- package/dist/services/decayCalculator.js.map +1 -0
- package/dist/services/enhancedVectorStore.d.ts +102 -0
- package/dist/services/enhancedVectorStore.d.ts.map +1 -0
- package/dist/services/enhancedVectorStore.js +245 -0
- package/dist/services/enhancedVectorStore.js.map +1 -0
- package/dist/services/hybridScorer.d.ts +120 -0
- package/dist/services/hybridScorer.d.ts.map +1 -0
- package/dist/services/hybridScorer.js +334 -0
- package/dist/services/hybridScorer.js.map +1 -0
- package/dist/services/knowledgeExtractor.d.ts +45 -0
- package/dist/services/knowledgeExtractor.d.ts.map +1 -0
- package/dist/services/knowledgeExtractor.js +436 -0
- package/dist/services/knowledgeExtractor.js.map +1 -0
- package/dist/services/knowledgeStorage.d.ts +102 -0
- package/dist/services/knowledgeStorage.d.ts.map +1 -0
- package/dist/services/knowledgeStorage.js +383 -0
- package/dist/services/knowledgeStorage.js.map +1 -0
- package/dist/services/maintenanceScheduler.d.ts +89 -0
- package/dist/services/maintenanceScheduler.d.ts.map +1 -0
- package/dist/services/maintenanceScheduler.js +479 -0
- package/dist/services/maintenanceScheduler.js.map +1 -0
- package/dist/services/memoryMetadataStore.d.ts +62 -0
- package/dist/services/memoryMetadataStore.d.ts.map +1 -0
- package/dist/services/memoryMetadataStore.js +570 -0
- package/dist/services/memoryMetadataStore.js.map +1 -0
- package/dist/services/recursiveRetrieval.d.ts +122 -0
- package/dist/services/recursiveRetrieval.d.ts.map +1 -0
- package/dist/services/recursiveRetrieval.js +443 -0
- package/dist/services/recursiveRetrieval.js.map +1 -0
- package/dist/services/relationshipGraph.d.ts +77 -0
- package/dist/services/relationshipGraph.d.ts.map +1 -0
- package/dist/services/relationshipGraph.js +411 -0
- package/dist/services/relationshipGraph.js.map +1 -0
- package/dist/services/rlmSafeguards.d.ts +273 -0
- package/dist/services/rlmSafeguards.d.ts.map +1 -0
- package/dist/services/rlmSafeguards.js +705 -0
- package/dist/services/rlmSafeguards.js.map +1 -0
- package/dist/services/rulesAnalyzer.d.ts +119 -0
- package/dist/services/rulesAnalyzer.d.ts.map +1 -0
- package/dist/services/rulesAnalyzer.js +768 -0
- package/dist/services/rulesAnalyzer.js.map +1 -0
- package/dist/services/rulesMerger.d.ts +75 -0
- package/dist/services/rulesMerger.d.ts.map +1 -0
- package/dist/services/rulesMerger.js +404 -0
- package/dist/services/rulesMerger.js.map +1 -0
- package/dist/services/rulesParser.d.ts +127 -0
- package/dist/services/rulesParser.d.ts.map +1 -0
- package/dist/services/rulesParser.js +594 -0
- package/dist/services/rulesParser.js.map +1 -0
- package/dist/services/smartChunker.d.ts +110 -0
- package/dist/services/smartChunker.d.ts.map +1 -0
- package/dist/services/smartChunker.js +520 -0
- package/dist/services/smartChunker.js.map +1 -0
- package/dist/types/categories.d.ts +105 -0
- package/dist/types/categories.d.ts.map +1 -0
- package/dist/types/categories.js +108 -0
- package/dist/types/categories.js.map +1 -0
- package/dist/types/extractedKnowledge.d.ts +233 -0
- package/dist/types/extractedKnowledge.d.ts.map +1 -0
- package/dist/types/extractedKnowledge.js +56 -0
- package/dist/types/extractedKnowledge.js.map +1 -0
- package/dist/types/index.d.ts +9 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +12 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/llmProvider.d.ts +282 -0
- package/dist/types/llmProvider.d.ts.map +1 -0
- package/dist/types/llmProvider.js +48 -0
- package/dist/types/llmProvider.js.map +1 -0
- package/dist/types/memory.d.ts +227 -0
- package/dist/types/memory.d.ts.map +1 -0
- package/dist/types/memory.js +76 -0
- package/dist/types/memory.js.map +1 -0
- package/dist/types/relationships.d.ts +167 -0
- package/dist/types/relationships.d.ts.map +1 -0
- package/dist/types/relationships.js +106 -0
- package/dist/types/relationships.js.map +1 -0
- package/dist/types/rulesOptimizer.d.ts +345 -0
- package/dist/types/rulesOptimizer.d.ts.map +1 -0
- package/dist/types/rulesOptimizer.js +22 -0
- package/dist/types/rulesOptimizer.js.map +1 -0
- package/docs/cursor-recursive-rag-memory-spec.md +4569 -0
- package/docs/cursor-recursive-rag-tasks.md +1355 -0
- package/package.json +6 -3
- 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"}
|