ruvector 0.1.50 → 0.1.52
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/bin/cli.js +401 -26
- package/bin/mcp-server.js +768 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +4 -1
- package/dist/core/intelligence-engine.d.ts +206 -0
- package/dist/core/intelligence-engine.d.ts.map +1 -0
- package/dist/core/intelligence-engine.js +822 -0
- package/package.json +2 -1
- package/ruvector.db +0 -0
package/dist/core/index.d.ts
CHANGED
|
@@ -8,8 +8,10 @@ export * from './gnn-wrapper';
|
|
|
8
8
|
export * from './attention-fallbacks';
|
|
9
9
|
export * from './agentdb-fast';
|
|
10
10
|
export * from './sona-wrapper';
|
|
11
|
+
export * from './intelligence-engine';
|
|
11
12
|
export { default as gnnWrapper } from './gnn-wrapper';
|
|
12
13
|
export { default as attentionFallbacks } from './attention-fallbacks';
|
|
13
14
|
export { default as agentdbFast } from './agentdb-fast';
|
|
14
15
|
export { default as Sona } from './sona-wrapper';
|
|
16
|
+
export { default as IntelligenceEngine } from './intelligence-engine';
|
|
15
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AAGtC,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/core/index.js
CHANGED
|
@@ -23,11 +23,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
23
23
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.Sona = exports.agentdbFast = exports.attentionFallbacks = exports.gnnWrapper = void 0;
|
|
26
|
+
exports.IntelligenceEngine = exports.Sona = exports.agentdbFast = exports.attentionFallbacks = exports.gnnWrapper = void 0;
|
|
27
27
|
__exportStar(require("./gnn-wrapper"), exports);
|
|
28
28
|
__exportStar(require("./attention-fallbacks"), exports);
|
|
29
29
|
__exportStar(require("./agentdb-fast"), exports);
|
|
30
30
|
__exportStar(require("./sona-wrapper"), exports);
|
|
31
|
+
__exportStar(require("./intelligence-engine"), exports);
|
|
31
32
|
// Re-export default objects for convenience
|
|
32
33
|
var gnn_wrapper_1 = require("./gnn-wrapper");
|
|
33
34
|
Object.defineProperty(exports, "gnnWrapper", { enumerable: true, get: function () { return __importDefault(gnn_wrapper_1).default; } });
|
|
@@ -37,3 +38,5 @@ var agentdb_fast_1 = require("./agentdb-fast");
|
|
|
37
38
|
Object.defineProperty(exports, "agentdbFast", { enumerable: true, get: function () { return __importDefault(agentdb_fast_1).default; } });
|
|
38
39
|
var sona_wrapper_1 = require("./sona-wrapper");
|
|
39
40
|
Object.defineProperty(exports, "Sona", { enumerable: true, get: function () { return __importDefault(sona_wrapper_1).default; } });
|
|
41
|
+
var intelligence_engine_1 = require("./intelligence-engine");
|
|
42
|
+
Object.defineProperty(exports, "IntelligenceEngine", { enumerable: true, get: function () { return __importDefault(intelligence_engine_1).default; } });
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IntelligenceEngine - Full RuVector Intelligence Stack
|
|
3
|
+
*
|
|
4
|
+
* Integrates all RuVector capabilities for self-learning hooks:
|
|
5
|
+
* - VectorDB with HNSW for semantic memory (150x faster)
|
|
6
|
+
* - SONA for continual learning (Micro-LoRA, EWC++)
|
|
7
|
+
* - FastAgentDB for episode/trajectory storage
|
|
8
|
+
* - Attention mechanisms for pattern recognition
|
|
9
|
+
* - ReasoningBank for pattern clustering
|
|
10
|
+
*
|
|
11
|
+
* Replaces the simple Q-learning approach with real ML-powered intelligence.
|
|
12
|
+
*/
|
|
13
|
+
import { EpisodeSearchResult } from './agentdb-fast';
|
|
14
|
+
import { SonaConfig, LearnedPattern } from './sona-wrapper';
|
|
15
|
+
export interface MemoryEntry {
|
|
16
|
+
id: string;
|
|
17
|
+
content: string;
|
|
18
|
+
type: string;
|
|
19
|
+
embedding: number[];
|
|
20
|
+
created: string;
|
|
21
|
+
accessed: number;
|
|
22
|
+
score?: number;
|
|
23
|
+
}
|
|
24
|
+
export interface AgentRoute {
|
|
25
|
+
agent: string;
|
|
26
|
+
confidence: number;
|
|
27
|
+
reason: string;
|
|
28
|
+
patterns?: LearnedPattern[];
|
|
29
|
+
alternates?: Array<{
|
|
30
|
+
agent: string;
|
|
31
|
+
confidence: number;
|
|
32
|
+
}>;
|
|
33
|
+
}
|
|
34
|
+
export interface LearningStats {
|
|
35
|
+
totalMemories: number;
|
|
36
|
+
memoryDimensions: number;
|
|
37
|
+
totalEpisodes: number;
|
|
38
|
+
totalTrajectories: number;
|
|
39
|
+
avgReward: number;
|
|
40
|
+
sonaEnabled: boolean;
|
|
41
|
+
trajectoriesRecorded: number;
|
|
42
|
+
patternsLearned: number;
|
|
43
|
+
microLoraUpdates: number;
|
|
44
|
+
baseLoraUpdates: number;
|
|
45
|
+
ewcConsolidations: number;
|
|
46
|
+
routingPatterns: number;
|
|
47
|
+
errorPatterns: number;
|
|
48
|
+
coEditPatterns: number;
|
|
49
|
+
attentionEnabled: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface IntelligenceConfig {
|
|
52
|
+
/** Embedding dimension for vectors (default: 256) */
|
|
53
|
+
embeddingDim?: number;
|
|
54
|
+
/** Maximum memories to store (default: 100000) */
|
|
55
|
+
maxMemories?: number;
|
|
56
|
+
/** Maximum episodes for trajectory storage (default: 50000) */
|
|
57
|
+
maxEpisodes?: number;
|
|
58
|
+
/** Enable SONA continual learning (default: true if available) */
|
|
59
|
+
enableSona?: boolean;
|
|
60
|
+
/** Enable attention mechanisms (default: true if available) */
|
|
61
|
+
enableAttention?: boolean;
|
|
62
|
+
/** SONA configuration */
|
|
63
|
+
sonaConfig?: Partial<SonaConfig>;
|
|
64
|
+
/** Storage path for persistence */
|
|
65
|
+
storagePath?: string;
|
|
66
|
+
/** Learning rate for pattern updates (default: 0.1) */
|
|
67
|
+
learningRate?: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Full-stack intelligence engine using all RuVector capabilities
|
|
71
|
+
*/
|
|
72
|
+
export declare class IntelligenceEngine {
|
|
73
|
+
private config;
|
|
74
|
+
private vectorDb;
|
|
75
|
+
private agentDb;
|
|
76
|
+
private sona;
|
|
77
|
+
private attention;
|
|
78
|
+
private memories;
|
|
79
|
+
private routingPatterns;
|
|
80
|
+
private errorPatterns;
|
|
81
|
+
private coEditPatterns;
|
|
82
|
+
private agentMappings;
|
|
83
|
+
private currentTrajectoryId;
|
|
84
|
+
private sessionStart;
|
|
85
|
+
private learningEnabled;
|
|
86
|
+
constructor(config?: IntelligenceConfig);
|
|
87
|
+
private initVectorDb;
|
|
88
|
+
/**
|
|
89
|
+
* Generate embedding using attention if available, otherwise use improved hash
|
|
90
|
+
*/
|
|
91
|
+
embed(text: string): number[];
|
|
92
|
+
/**
|
|
93
|
+
* Attention-based embedding using self-attention
|
|
94
|
+
*/
|
|
95
|
+
private attentionEmbed;
|
|
96
|
+
/**
|
|
97
|
+
* Improved hash-based embedding with positional encoding
|
|
98
|
+
*/
|
|
99
|
+
private hashEmbed;
|
|
100
|
+
private tokenize;
|
|
101
|
+
private tokenEmbed;
|
|
102
|
+
private meanPool;
|
|
103
|
+
/**
|
|
104
|
+
* Store content in vector memory
|
|
105
|
+
*/
|
|
106
|
+
remember(content: string, type?: string): Promise<MemoryEntry>;
|
|
107
|
+
/**
|
|
108
|
+
* Semantic search of memories
|
|
109
|
+
*/
|
|
110
|
+
recall(query: string, topK?: number): Promise<MemoryEntry[]>;
|
|
111
|
+
private cosineSimilarity;
|
|
112
|
+
/**
|
|
113
|
+
* Route a task to the best agent using learned patterns
|
|
114
|
+
*/
|
|
115
|
+
route(task: string, file?: string): Promise<AgentRoute>;
|
|
116
|
+
private getExtension;
|
|
117
|
+
private getState;
|
|
118
|
+
private getAlternates;
|
|
119
|
+
/**
|
|
120
|
+
* Begin recording a trajectory (before edit/command)
|
|
121
|
+
*/
|
|
122
|
+
beginTrajectory(context: string, file?: string): void;
|
|
123
|
+
/**
|
|
124
|
+
* Add a step to the current trajectory
|
|
125
|
+
*/
|
|
126
|
+
addTrajectoryStep(activations: number[], reward: number): void;
|
|
127
|
+
/**
|
|
128
|
+
* End the current trajectory with a quality score
|
|
129
|
+
*/
|
|
130
|
+
endTrajectory(success: boolean, quality?: number): void;
|
|
131
|
+
/**
|
|
132
|
+
* Set the agent route for current trajectory
|
|
133
|
+
*/
|
|
134
|
+
setTrajectoryRoute(agent: string): void;
|
|
135
|
+
/**
|
|
136
|
+
* Record an episode for learning
|
|
137
|
+
*/
|
|
138
|
+
recordEpisode(state: string, action: string, reward: number, nextState: string, done: boolean, metadata?: Record<string, any>): Promise<void>;
|
|
139
|
+
/**
|
|
140
|
+
* Learn from similar past episodes
|
|
141
|
+
*/
|
|
142
|
+
learnFromSimilar(state: string, k?: number): Promise<EpisodeSearchResult[]>;
|
|
143
|
+
/**
|
|
144
|
+
* Record a co-edit pattern
|
|
145
|
+
*/
|
|
146
|
+
recordCoEdit(file1: string, file2: string): void;
|
|
147
|
+
/**
|
|
148
|
+
* Get likely next files to edit
|
|
149
|
+
*/
|
|
150
|
+
getLikelyNextFiles(file: string, topK?: number): Array<{
|
|
151
|
+
file: string;
|
|
152
|
+
count: number;
|
|
153
|
+
}>;
|
|
154
|
+
/**
|
|
155
|
+
* Record an error pattern with fixes
|
|
156
|
+
*/
|
|
157
|
+
recordErrorFix(errorPattern: string, fix: string): void;
|
|
158
|
+
/**
|
|
159
|
+
* Get suggested fixes for an error
|
|
160
|
+
*/
|
|
161
|
+
getSuggestedFixes(error: string): string[];
|
|
162
|
+
/**
|
|
163
|
+
* Run background learning cycle
|
|
164
|
+
*/
|
|
165
|
+
tick(): string | null;
|
|
166
|
+
/**
|
|
167
|
+
* Force immediate learning
|
|
168
|
+
*/
|
|
169
|
+
forceLearn(): string | null;
|
|
170
|
+
/**
|
|
171
|
+
* Get comprehensive learning statistics
|
|
172
|
+
*/
|
|
173
|
+
getStats(): LearningStats;
|
|
174
|
+
/**
|
|
175
|
+
* Export all data for persistence
|
|
176
|
+
*/
|
|
177
|
+
export(): Record<string, any>;
|
|
178
|
+
/**
|
|
179
|
+
* Import data from persistence
|
|
180
|
+
*/
|
|
181
|
+
import(data: Record<string, any>, merge?: boolean): void;
|
|
182
|
+
/**
|
|
183
|
+
* Clear all data
|
|
184
|
+
*/
|
|
185
|
+
clear(): void;
|
|
186
|
+
/** Legacy: patterns object */
|
|
187
|
+
get patterns(): Record<string, Record<string, number>>;
|
|
188
|
+
/** Legacy: file_sequences array */
|
|
189
|
+
get file_sequences(): string[][];
|
|
190
|
+
/** Legacy: errors object */
|
|
191
|
+
get errors(): Record<string, string[]>;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Create a new IntelligenceEngine with default settings
|
|
195
|
+
*/
|
|
196
|
+
export declare function createIntelligenceEngine(config?: IntelligenceConfig): IntelligenceEngine;
|
|
197
|
+
/**
|
|
198
|
+
* Create a high-performance engine with all features enabled
|
|
199
|
+
*/
|
|
200
|
+
export declare function createHighPerformanceEngine(): IntelligenceEngine;
|
|
201
|
+
/**
|
|
202
|
+
* Create a lightweight engine for fast startup
|
|
203
|
+
*/
|
|
204
|
+
export declare function createLightweightEngine(): IntelligenceEngine;
|
|
205
|
+
export default IntelligenceEngine;
|
|
206
|
+
//# sourceMappingURL=intelligence-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intelligence-engine.d.ts","sourceRoot":"","sources":["../../src/core/intelligence-engine.ts"],"names":[],"mappings":"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"}
|