agentic-qe 1.9.3 → 1.9.4
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/CHANGELOG.md +54 -0
- package/README.md +30 -5
- package/config/.env.otel.example +25 -0
- package/config/OTEL-QUICK-REFERENCE.md +137 -0
- package/config/README-OTEL.md +222 -0
- package/config/alerting-rules.yml +518 -0
- package/config/docker-compose.otel.yml +187 -0
- package/config/grafana/dashboards/agentic-qe-overview.json +286 -0
- package/config/grafana/provisioning/dashboards/dashboards.yml +19 -0
- package/config/grafana/provisioning/datasources/datasources.yml +53 -0
- package/config/otel-collector-config.yaml.example +145 -0
- package/config/prometheus.yml.example +106 -0
- package/dist/alerting/AlertManager.d.ts +120 -0
- package/dist/alerting/AlertManager.d.ts.map +1 -0
- package/dist/alerting/AlertManager.js +345 -0
- package/dist/alerting/AlertManager.js.map +1 -0
- package/dist/alerting/FeedbackRouter.d.ts +98 -0
- package/dist/alerting/FeedbackRouter.d.ts.map +1 -0
- package/dist/alerting/FeedbackRouter.js +331 -0
- package/dist/alerting/FeedbackRouter.js.map +1 -0
- package/dist/alerting/StrategyApplicator.d.ts +120 -0
- package/dist/alerting/StrategyApplicator.d.ts.map +1 -0
- package/dist/alerting/StrategyApplicator.js +299 -0
- package/dist/alerting/StrategyApplicator.js.map +1 -0
- package/dist/alerting/index.d.ts +68 -0
- package/dist/alerting/index.d.ts.map +1 -0
- package/dist/alerting/index.js +112 -0
- package/dist/alerting/index.js.map +1 -0
- package/dist/alerting/types.d.ts +118 -0
- package/dist/alerting/types.d.ts.map +1 -0
- package/dist/alerting/types.js +11 -0
- package/dist/alerting/types.js.map +1 -0
- package/dist/cli/init/claude-config.d.ts.map +1 -1
- package/dist/cli/init/claude-config.js +12 -7
- package/dist/cli/init/claude-config.js.map +1 -1
- package/dist/core/memory/IPatternStore.d.ts +209 -0
- package/dist/core/memory/IPatternStore.d.ts.map +1 -0
- package/dist/core/memory/IPatternStore.js +15 -0
- package/dist/core/memory/IPatternStore.js.map +1 -0
- package/dist/core/memory/MigrationTools.d.ts +192 -0
- package/dist/core/memory/MigrationTools.d.ts.map +1 -0
- package/dist/core/memory/MigrationTools.js +615 -0
- package/dist/core/memory/MigrationTools.js.map +1 -0
- package/dist/core/memory/NeuralEnhancement.d.ts +154 -0
- package/dist/core/memory/NeuralEnhancement.d.ts.map +1 -0
- package/dist/core/memory/NeuralEnhancement.js +598 -0
- package/dist/core/memory/NeuralEnhancement.js.map +1 -0
- package/dist/core/memory/PatternStoreFactory.d.ts +143 -0
- package/dist/core/memory/PatternStoreFactory.d.ts.map +1 -0
- package/dist/core/memory/PatternStoreFactory.js +370 -0
- package/dist/core/memory/PatternStoreFactory.js.map +1 -0
- package/dist/core/memory/RealAgentDBAdapter.d.ts +1 -0
- package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -1
- package/dist/core/memory/RealAgentDBAdapter.js +28 -20
- package/dist/core/memory/RealAgentDBAdapter.js.map +1 -1
- package/dist/core/memory/RuVectorPatternStore.d.ts +198 -0
- package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -0
- package/dist/core/memory/RuVectorPatternStore.js +605 -0
- package/dist/core/memory/RuVectorPatternStore.js.map +1 -0
- package/dist/core/memory/SelfHealingMonitor.d.ts +186 -0
- package/dist/core/memory/SelfHealingMonitor.d.ts.map +1 -0
- package/dist/core/memory/SelfHealingMonitor.js +451 -0
- package/dist/core/memory/SelfHealingMonitor.js.map +1 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts +62 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.js +97 -0
- package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
- package/dist/core/memory/index.d.ts +11 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +36 -1
- package/dist/core/memory/index.js.map +1 -1
- package/dist/reasoning/RuVectorReasoningAdapter.d.ts +232 -0
- package/dist/reasoning/RuVectorReasoningAdapter.d.ts.map +1 -0
- package/dist/reasoning/RuVectorReasoningAdapter.js +585 -0
- package/dist/reasoning/RuVectorReasoningAdapter.js.map +1 -0
- package/dist/reasoning/index.d.ts +2 -0
- package/dist/reasoning/index.d.ts.map +1 -1
- package/dist/reasoning/index.js +6 -1
- package/dist/reasoning/index.js.map +1 -1
- package/dist/reporting/ResultAggregator.d.ts +107 -0
- package/dist/reporting/ResultAggregator.d.ts.map +1 -0
- package/dist/reporting/ResultAggregator.js +435 -0
- package/dist/reporting/ResultAggregator.js.map +1 -0
- package/dist/reporting/index.d.ts +48 -0
- package/dist/reporting/index.d.ts.map +1 -0
- package/dist/reporting/index.js +154 -0
- package/dist/reporting/index.js.map +1 -0
- package/dist/reporting/reporters/ControlLoopReporter.d.ts +128 -0
- package/dist/reporting/reporters/ControlLoopReporter.d.ts.map +1 -0
- package/dist/reporting/reporters/ControlLoopReporter.js +417 -0
- package/dist/reporting/reporters/ControlLoopReporter.js.map +1 -0
- package/dist/reporting/reporters/HumanReadableReporter.d.ts +140 -0
- package/dist/reporting/reporters/HumanReadableReporter.d.ts.map +1 -0
- package/dist/reporting/reporters/HumanReadableReporter.js +524 -0
- package/dist/reporting/reporters/HumanReadableReporter.js.map +1 -0
- package/dist/reporting/reporters/JSONReporter.d.ts +193 -0
- package/dist/reporting/reporters/JSONReporter.d.ts.map +1 -0
- package/dist/reporting/reporters/JSONReporter.js +324 -0
- package/dist/reporting/reporters/JSONReporter.js.map +1 -0
- package/dist/reporting/reporters/index.d.ts +14 -0
- package/dist/reporting/reporters/index.d.ts.map +1 -0
- package/dist/reporting/reporters/index.js +19 -0
- package/dist/reporting/reporters/index.js.map +1 -0
- package/dist/reporting/types.d.ts +427 -0
- package/dist/reporting/types.d.ts.map +1 -0
- package/dist/reporting/types.js +12 -0
- package/dist/reporting/types.js.map +1 -0
- package/package.json +9 -1
|
@@ -73,7 +73,9 @@ async function generateClaudeSettings(_fleetConfig) {
|
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
// Merge AQE settings with existing settings
|
|
76
|
+
// AGENTDB_PATH ensures hooks use the same database as QE agents
|
|
76
77
|
const aqeEnv = {
|
|
78
|
+
AGENTDB_PATH: ".agentic-qe/agentdb.db",
|
|
77
79
|
AGENTDB_LEARNING_ENABLED: "true",
|
|
78
80
|
AGENTDB_REASONING_ENABLED: "true",
|
|
79
81
|
AGENTDB_AUTO_TRAIN: "true",
|
|
@@ -127,6 +129,9 @@ async function generateClaudeSettings(_fleetConfig) {
|
|
|
127
129
|
* to prevent shell injection attacks from malicious file paths/inputs.
|
|
128
130
|
*/
|
|
129
131
|
function getAQEHooks() {
|
|
132
|
+
// All hooks must export AGENTDB_PATH to ensure data is saved to the correct database
|
|
133
|
+
// The env vars in settings.json are not inherited by bash -c subshells
|
|
134
|
+
const DB_PATH_PREFIX = 'export AGENTDB_PATH=.agentic-qe/agentdb.db;';
|
|
130
135
|
return {
|
|
131
136
|
PreToolUse: [
|
|
132
137
|
{
|
|
@@ -135,12 +140,12 @@ function getAQEHooks() {
|
|
|
135
140
|
{
|
|
136
141
|
type: "command",
|
|
137
142
|
description: "Semantic Search - Query similar successful past edits",
|
|
138
|
-
command:
|
|
143
|
+
command: `cat | jq -r '.tool_input.file_path // .tool_input.path // empty' | jq -R '@sh' | xargs -I {} bash -c '${DB_PATH_PREFIX} FILE={}; npx agentdb@latest query --domain "successful-edits" --query "file:$FILE" --k 5 --min-confidence 0.8 --format json 2>/dev/null | jq -r ".memories[]? | \\"💡 Past Success: \\(.pattern.summary // \\"No similar patterns found\\")\\" " 2>/dev/null || true'`
|
|
139
144
|
},
|
|
140
145
|
{
|
|
141
146
|
type: "command",
|
|
142
147
|
description: "Failure Pattern Recognition - Warn about known failure patterns",
|
|
143
|
-
command:
|
|
148
|
+
command: `cat | jq -r '.tool_input.file_path // .tool_input.path // empty' | jq -R '@sh' | xargs -I {} bash -c '${DB_PATH_PREFIX} FILE={}; npx agentdb@latest query --domain "failed-edits" --query "file:$FILE" --k 3 --min-confidence 0.7 --format json 2>/dev/null | jq -r ".memories[]? | \\"🚨 Warning: Similar edit failed - \\(.pattern.reason // \\"unknown\\")\\" " 2>/dev/null || true'`
|
|
144
149
|
}
|
|
145
150
|
]
|
|
146
151
|
},
|
|
@@ -150,7 +155,7 @@ function getAQEHooks() {
|
|
|
150
155
|
{
|
|
151
156
|
type: "command",
|
|
152
157
|
description: "Trajectory Prediction - Predict optimal task sequence",
|
|
153
|
-
command:
|
|
158
|
+
command: `cat | jq -r '.tool_input.prompt // .tool_input.task // empty' | jq -R '@sh' | xargs -I {} bash -c '${DB_PATH_PREFIX} TASK={}; npx agentdb@latest query --domain "task-trajectories" --query "task:$TASK" --k 3 --min-confidence 0.75 --format json 2>/dev/null | jq -r ".memories[]? | \\"📋 Predicted Steps: \\(.pattern.trajectory // \\"No trajectory data\\") (Success Rate: \\(.confidence // 0))\\" " 2>/dev/null || true'`
|
|
154
159
|
}
|
|
155
160
|
]
|
|
156
161
|
}
|
|
@@ -162,12 +167,12 @@ function getAQEHooks() {
|
|
|
162
167
|
{
|
|
163
168
|
type: "command",
|
|
164
169
|
description: "Experience Replay - Capture edit as RL experience",
|
|
165
|
-
command:
|
|
170
|
+
command: `cat | jq -r '.tool_input.file_path // .tool_input.path // empty' | jq -R '@sh' | xargs -I {} bash -c '${DB_PATH_PREFIX} FILE={}; TIMESTAMP=$(date +%s); npx agentdb@latest store-pattern --type "experience" --domain "code-edits" --pattern "{\\"file\\":$FILE,\\"timestamp\\":$TIMESTAMP,\\"action\\":\\"edit\\",\\"state\\":\\"pre-test\\"}" --confidence 0.5 2>/dev/null || true'`
|
|
166
171
|
},
|
|
167
172
|
{
|
|
168
173
|
type: "command",
|
|
169
174
|
description: "Verdict-Based Quality - Async verdict assignment after tests",
|
|
170
|
-
command:
|
|
175
|
+
command: `cat | jq -r '.tool_input.file_path // .tool_input.path // empty' | jq -R '@sh' | xargs -I {} bash -c '${DB_PATH_PREFIX} FILE={}; (sleep 2; TEST_RESULT=$(npm test --silent 2>&1 | grep -q "pass" && echo "ACCEPT" || echo "REJECT"); REWARD=$([ "$TEST_RESULT" = "ACCEPT" ] && echo "1.0" || echo "-1.0"); npx agentdb@latest store-pattern --type "verdict" --domain "code-quality" --pattern "{\\"file\\":$FILE,\\"verdict\\":\\"$TEST_RESULT\\",\\"reward\\":$REWARD}" --confidence $([ "$TEST_RESULT" = "ACCEPT" ] && echo "0.95" || echo "0.3") 2>/dev/null; if [ "$TEST_RESULT" = "ACCEPT" ]; then npx agentdb@latest store-pattern --type "success" --domain "successful-edits" --pattern "{\\"file\\":$FILE,\\"summary\\":\\"Edit passed tests\\"}" --confidence 0.9 2>/dev/null; else npx agentdb@latest store-pattern --type "failure" --domain "failed-edits" --pattern "{\\"file\\":$FILE,\\"reason\\":\\"Tests failed\\"}" --confidence 0.8 2>/dev/null; fi) &'`
|
|
171
176
|
}
|
|
172
177
|
]
|
|
173
178
|
},
|
|
@@ -177,7 +182,7 @@ function getAQEHooks() {
|
|
|
177
182
|
{
|
|
178
183
|
type: "command",
|
|
179
184
|
description: "Trajectory Storage - Record task trajectory for learning",
|
|
180
|
-
command:
|
|
185
|
+
command: `cat | jq -r '.tool_input.prompt // .tool_input.task // empty, .result.success // "unknown"' | paste -d'\\n' - - | jq -Rs 'split("\\n") | {task: (.[0] | @sh), success: .[1]}' | jq -r 'CONFIDENCE=(if .success == "true" then "0.95" else "0.5" end); "export AGENTDB_PATH=.agentic-qe/agentdb.db; TASK=\\(.task); SUCCESS=\\(.success); npx agentdb@latest store-pattern --type trajectory --domain task-trajectories --pattern \\("{\\\\\\"task\\\\\\":\\" + .task + ",\\\\\\"success\\\\\\":\\(.success),\\\\\\"trajectory\\\\\\":\\\\\\"search→scaffold→test→refine\\\\\\"}" | @sh) --confidence \\(CONFIDENCE) 2>/dev/null || true"' | bash`
|
|
181
186
|
}
|
|
182
187
|
]
|
|
183
188
|
}
|
|
@@ -188,7 +193,7 @@ function getAQEHooks() {
|
|
|
188
193
|
{
|
|
189
194
|
type: "command",
|
|
190
195
|
description: "Session end - Train models and compress learnings",
|
|
191
|
-
command:
|
|
196
|
+
command: `bash -c '${DB_PATH_PREFIX} npx agentdb@latest train --domain "code-edits" --epochs 10 --batch-size 32 2>/dev/null || true; npx agentdb@latest optimize-memory --compress true --consolidate-patterns true 2>/dev/null || true'`
|
|
192
197
|
}
|
|
193
198
|
]
|
|
194
199
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-config.js","sourceRoot":"","sources":["../../../src/cli/init/claude-config.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcH,
|
|
1
|
+
{"version":3,"file":"claude-config.js","sourceRoot":"","sources":["../../../src/cli/init/claude-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IPatternStore - Unified Interface for Pattern Storage
|
|
3
|
+
*
|
|
4
|
+
* Provides a common abstraction for high-performance vector pattern storage,
|
|
5
|
+
* supporting multiple backends:
|
|
6
|
+
* - RuVector (@ruvector/core): 170x faster search, 192K QPS
|
|
7
|
+
* - AgentDB: Full-featured with learning capabilities
|
|
8
|
+
* - In-memory fallback: For platforms without native support
|
|
9
|
+
*
|
|
10
|
+
* @module core/memory/IPatternStore
|
|
11
|
+
* @version 1.0.0
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Vector entry for storage
|
|
15
|
+
*/
|
|
16
|
+
export interface VectorEntry {
|
|
17
|
+
id: string;
|
|
18
|
+
vector: number[] | Float32Array;
|
|
19
|
+
metadata?: Record<string, any>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Search query parameters
|
|
23
|
+
*/
|
|
24
|
+
export interface SearchQuery {
|
|
25
|
+
vector: number[] | Float32Array;
|
|
26
|
+
k?: number;
|
|
27
|
+
filter?: Record<string, any>;
|
|
28
|
+
threshold?: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Search result with similarity score
|
|
32
|
+
*/
|
|
33
|
+
export interface SearchResult {
|
|
34
|
+
id: string;
|
|
35
|
+
score: number;
|
|
36
|
+
vector?: number[] | Float32Array;
|
|
37
|
+
metadata?: Record<string, any>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Test pattern with embedding for vector storage
|
|
41
|
+
*/
|
|
42
|
+
export interface TestPattern {
|
|
43
|
+
id: string;
|
|
44
|
+
type: string;
|
|
45
|
+
domain: string;
|
|
46
|
+
embedding: number[];
|
|
47
|
+
content: string;
|
|
48
|
+
framework?: string;
|
|
49
|
+
coverage?: number;
|
|
50
|
+
flakinessScore?: number;
|
|
51
|
+
verdict?: 'success' | 'failure' | 'flaky';
|
|
52
|
+
createdAt?: number;
|
|
53
|
+
lastUsed?: number;
|
|
54
|
+
usageCount?: number;
|
|
55
|
+
metadata?: Record<string, any>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Search options for pattern retrieval
|
|
59
|
+
*/
|
|
60
|
+
export interface PatternSearchOptions {
|
|
61
|
+
k?: number;
|
|
62
|
+
threshold?: number;
|
|
63
|
+
domain?: string;
|
|
64
|
+
type?: string;
|
|
65
|
+
framework?: string;
|
|
66
|
+
useMMR?: boolean;
|
|
67
|
+
mmrLambda?: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Search result with pattern data
|
|
71
|
+
*/
|
|
72
|
+
export interface PatternSearchResult {
|
|
73
|
+
pattern: TestPattern;
|
|
74
|
+
score: number;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Database statistics
|
|
78
|
+
*/
|
|
79
|
+
export interface PatternStoreStats {
|
|
80
|
+
count: number;
|
|
81
|
+
dimension: number;
|
|
82
|
+
metric: string;
|
|
83
|
+
implementation: 'ruvector' | 'agentdb' | 'fallback';
|
|
84
|
+
memoryUsage?: number;
|
|
85
|
+
indexType?: string;
|
|
86
|
+
qps?: number;
|
|
87
|
+
p50Latency?: number;
|
|
88
|
+
p99Latency?: number;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Pattern store configuration
|
|
92
|
+
*/
|
|
93
|
+
export interface PatternStoreConfig {
|
|
94
|
+
dimension?: number;
|
|
95
|
+
metric?: 'cosine' | 'euclidean' | 'dot';
|
|
96
|
+
storagePath?: string;
|
|
97
|
+
autoPersist?: boolean;
|
|
98
|
+
hnsw?: {
|
|
99
|
+
m?: number;
|
|
100
|
+
efConstruction?: number;
|
|
101
|
+
efSearch?: number;
|
|
102
|
+
};
|
|
103
|
+
/** Preferred backend: 'ruvector' | 'agentdb' | 'auto' */
|
|
104
|
+
preferredBackend?: 'ruvector' | 'agentdb' | 'auto';
|
|
105
|
+
/** Enable performance tracking */
|
|
106
|
+
enableMetrics?: boolean;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* IPatternStore - Unified interface for pattern storage backends
|
|
110
|
+
*
|
|
111
|
+
* This interface enables:
|
|
112
|
+
* - Seamless switching between RuVector and AgentDB
|
|
113
|
+
* - Feature detection for platform-specific optimizations
|
|
114
|
+
* - Consistent API across all implementations
|
|
115
|
+
*/
|
|
116
|
+
export interface IPatternStore {
|
|
117
|
+
/**
|
|
118
|
+
* Initialize the pattern store
|
|
119
|
+
*/
|
|
120
|
+
initialize(): Promise<void>;
|
|
121
|
+
/**
|
|
122
|
+
* Store a single test pattern
|
|
123
|
+
*/
|
|
124
|
+
storePattern(pattern: TestPattern): Promise<void>;
|
|
125
|
+
/**
|
|
126
|
+
* Store multiple patterns in batch (optimized for high throughput)
|
|
127
|
+
*/
|
|
128
|
+
storeBatch(patterns: TestPattern[]): Promise<void>;
|
|
129
|
+
/**
|
|
130
|
+
* Search for similar patterns by embedding
|
|
131
|
+
*/
|
|
132
|
+
searchSimilar(queryEmbedding: number[], options?: PatternSearchOptions): Promise<PatternSearchResult[]>;
|
|
133
|
+
/**
|
|
134
|
+
* Get a pattern by ID
|
|
135
|
+
*/
|
|
136
|
+
getPattern(id: string): Promise<TestPattern | null>;
|
|
137
|
+
/**
|
|
138
|
+
* Delete a pattern by ID
|
|
139
|
+
*/
|
|
140
|
+
deletePattern(id: string): Promise<boolean>;
|
|
141
|
+
/**
|
|
142
|
+
* Record pattern usage (updates lastUsed and usageCount)
|
|
143
|
+
*/
|
|
144
|
+
recordUsage(id: string): Promise<void>;
|
|
145
|
+
/**
|
|
146
|
+
* Build or rebuild the search index
|
|
147
|
+
*/
|
|
148
|
+
buildIndex(): Promise<void>;
|
|
149
|
+
/**
|
|
150
|
+
* Optimize storage (compaction, reindexing)
|
|
151
|
+
*/
|
|
152
|
+
optimize(): Promise<void>;
|
|
153
|
+
/**
|
|
154
|
+
* Get database statistics
|
|
155
|
+
*/
|
|
156
|
+
getStats(): Promise<PatternStoreStats>;
|
|
157
|
+
/**
|
|
158
|
+
* Clear all patterns
|
|
159
|
+
*/
|
|
160
|
+
clear(): Promise<void>;
|
|
161
|
+
/**
|
|
162
|
+
* Shutdown and release resources
|
|
163
|
+
*/
|
|
164
|
+
shutdown(): Promise<void>;
|
|
165
|
+
/**
|
|
166
|
+
* Get implementation info
|
|
167
|
+
*/
|
|
168
|
+
getImplementationInfo(): {
|
|
169
|
+
type: 'ruvector' | 'agentdb' | 'fallback';
|
|
170
|
+
version: string;
|
|
171
|
+
features: string[];
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Pattern store event types
|
|
176
|
+
*/
|
|
177
|
+
export type PatternStoreEvent = {
|
|
178
|
+
type: 'pattern_stored';
|
|
179
|
+
id: string;
|
|
180
|
+
timestamp: number;
|
|
181
|
+
} | {
|
|
182
|
+
type: 'pattern_deleted';
|
|
183
|
+
id: string;
|
|
184
|
+
timestamp: number;
|
|
185
|
+
} | {
|
|
186
|
+
type: 'search_completed';
|
|
187
|
+
queryTime: number;
|
|
188
|
+
resultsCount: number;
|
|
189
|
+
} | {
|
|
190
|
+
type: 'index_rebuilt';
|
|
191
|
+
duration: number;
|
|
192
|
+
} | {
|
|
193
|
+
type: 'optimization_completed';
|
|
194
|
+
duration: number;
|
|
195
|
+
};
|
|
196
|
+
/**
|
|
197
|
+
* Pattern store with event support
|
|
198
|
+
*/
|
|
199
|
+
export interface IPatternStoreWithEvents extends IPatternStore {
|
|
200
|
+
/**
|
|
201
|
+
* Subscribe to pattern store events
|
|
202
|
+
*/
|
|
203
|
+
on(event: PatternStoreEvent['type'], callback: (event: PatternStoreEvent) => void): void;
|
|
204
|
+
/**
|
|
205
|
+
* Unsubscribe from pattern store events
|
|
206
|
+
*/
|
|
207
|
+
off(event: PatternStoreEvent['type'], callback: (event: PatternStoreEvent) => void): void;
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=IPatternStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IPatternStore.d.ts","sourceRoot":"","sources":["../../../src/core/memory/IPatternStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* IPatternStore - Unified Interface for Pattern Storage
|
|
4
|
+
*
|
|
5
|
+
* Provides a common abstraction for high-performance vector pattern storage,
|
|
6
|
+
* supporting multiple backends:
|
|
7
|
+
* - RuVector (@ruvector/core): 170x faster search, 192K QPS
|
|
8
|
+
* - AgentDB: Full-featured with learning capabilities
|
|
9
|
+
* - In-memory fallback: For platforms without native support
|
|
10
|
+
*
|
|
11
|
+
* @module core/memory/IPatternStore
|
|
12
|
+
* @version 1.0.0
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
//# sourceMappingURL=IPatternStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IPatternStore.js","sourceRoot":"","sources":["../../../src/core/memory/IPatternStore.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MigrationTools - AgentDB to RuVector Migration Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides comprehensive migration capabilities for transitioning test patterns
|
|
5
|
+
* from AgentDB/SQLite storage to high-performance RuVector backend.
|
|
6
|
+
*
|
|
7
|
+
* Key Features:
|
|
8
|
+
* - Export patterns from AgentDB SQLite database
|
|
9
|
+
* - Transform legacy pattern format to RuVector TestPattern interface
|
|
10
|
+
* - Batch import with progress tracking and error handling
|
|
11
|
+
* - Dry-run mode for safe migration validation
|
|
12
|
+
* - Rollback support with backup creation
|
|
13
|
+
* - Dual-write proxy for zero-downtime migration
|
|
14
|
+
* - Comprehensive validation and integrity checks
|
|
15
|
+
*
|
|
16
|
+
* Migration Performance:
|
|
17
|
+
* - Batch processing: 1000 patterns per batch (configurable)
|
|
18
|
+
* - RuVector import: 2.7M+ ops/sec (native backend)
|
|
19
|
+
* - Parallel export/import for maximum throughput
|
|
20
|
+
*
|
|
21
|
+
* @module core/memory/MigrationTools
|
|
22
|
+
* @version 1.0.0
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* // Simple migration
|
|
27
|
+
* const migrator = new PatternMigrator();
|
|
28
|
+
* const result = await migrator.migrate({
|
|
29
|
+
* sourcePath: './data/agentic-qe.db',
|
|
30
|
+
* targetPath: './data/patterns.ruvector',
|
|
31
|
+
* batchSize: 1000,
|
|
32
|
+
* verbose: true
|
|
33
|
+
* });
|
|
34
|
+
*
|
|
35
|
+
* // Dry-run validation
|
|
36
|
+
* const dryRun = await migrator.migrate({
|
|
37
|
+
* sourcePath: './data/agentic-qe.db',
|
|
38
|
+
* dryRun: true
|
|
39
|
+
* });
|
|
40
|
+
*
|
|
41
|
+
* // Dual-write for safe transition
|
|
42
|
+
* const proxy = new DualWriteProxy(agentDbStore, ruVectorStore);
|
|
43
|
+
* await proxy.initialize();
|
|
44
|
+
* await proxy.storePattern(pattern); // Writes to both
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
import type { IPatternStore, TestPattern, PatternSearchOptions, PatternSearchResult, PatternStoreStats } from './IPatternStore';
|
|
48
|
+
/**
|
|
49
|
+
* Migration configuration options
|
|
50
|
+
*/
|
|
51
|
+
export interface MigrationOptions {
|
|
52
|
+
/** Source AgentDB database path (SQLite .db file) */
|
|
53
|
+
sourcePath?: string;
|
|
54
|
+
/** Target RuVector storage path */
|
|
55
|
+
targetPath?: string;
|
|
56
|
+
/** Validate migration without writing to target (default: false) */
|
|
57
|
+
dryRun?: boolean;
|
|
58
|
+
/** Number of patterns to process per batch (default: 1000) */
|
|
59
|
+
batchSize?: number;
|
|
60
|
+
/** Enable verbose logging (default: false) */
|
|
61
|
+
verbose?: boolean;
|
|
62
|
+
/** Create backup before migration (default: true) */
|
|
63
|
+
createBackup?: boolean;
|
|
64
|
+
/** Embedding dimension (default: 384) */
|
|
65
|
+
dimension?: number;
|
|
66
|
+
/** Embedding generator function (if patterns lack embeddings) */
|
|
67
|
+
generateEmbedding?: (pattern: any) => Promise<number[]>;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Migration result summary
|
|
71
|
+
*/
|
|
72
|
+
export interface MigrationResult {
|
|
73
|
+
/** Total patterns found in source */
|
|
74
|
+
totalPatterns: number;
|
|
75
|
+
/** Successfully migrated patterns */
|
|
76
|
+
migratedCount: number;
|
|
77
|
+
/** Skipped patterns (errors, missing data, etc.) */
|
|
78
|
+
skippedCount: number;
|
|
79
|
+
/** Error messages encountered */
|
|
80
|
+
errors: string[];
|
|
81
|
+
/** Migration duration in milliseconds */
|
|
82
|
+
duration: number;
|
|
83
|
+
/** Validation results */
|
|
84
|
+
validation?: {
|
|
85
|
+
sourceValid: boolean;
|
|
86
|
+
targetValid: boolean;
|
|
87
|
+
integrityChecks: string[];
|
|
88
|
+
};
|
|
89
|
+
/** Backup file path (if created) */
|
|
90
|
+
backupPath?: string;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* PatternMigrator - Main migration orchestrator
|
|
94
|
+
*
|
|
95
|
+
* Handles the complete migration workflow from AgentDB to RuVector
|
|
96
|
+
* with comprehensive error handling and validation.
|
|
97
|
+
*/
|
|
98
|
+
export declare class PatternMigrator {
|
|
99
|
+
private backupPaths;
|
|
100
|
+
/**
|
|
101
|
+
* Execute pattern migration with full orchestration
|
|
102
|
+
*/
|
|
103
|
+
migrate(options: MigrationOptions): Promise<MigrationResult>;
|
|
104
|
+
/**
|
|
105
|
+
* Validate source database exists and is readable
|
|
106
|
+
*/
|
|
107
|
+
validateSource(sourcePath: string): Promise<boolean>;
|
|
108
|
+
/**
|
|
109
|
+
* Create backup of source database
|
|
110
|
+
*/
|
|
111
|
+
createBackup(sourcePath: string): Promise<string>;
|
|
112
|
+
/**
|
|
113
|
+
* Export patterns from AgentDB SQLite database
|
|
114
|
+
*/
|
|
115
|
+
exportFromAgentDB(sourcePath: string, generateEmbedding?: (pattern: any) => Promise<number[]>, dimension?: number): Promise<TestPattern[]>;
|
|
116
|
+
/**
|
|
117
|
+
* Transform legacy AgentDB pattern to RuVector TestPattern format
|
|
118
|
+
*/
|
|
119
|
+
private transformLegacyPattern;
|
|
120
|
+
/**
|
|
121
|
+
* Import patterns to RuVector in batches
|
|
122
|
+
*/
|
|
123
|
+
private importToRuVector;
|
|
124
|
+
/**
|
|
125
|
+
* Validate migration integrity
|
|
126
|
+
*/
|
|
127
|
+
private validateMigration;
|
|
128
|
+
/**
|
|
129
|
+
* Rollback migration by restoring from backup
|
|
130
|
+
*/
|
|
131
|
+
rollback(): Promise<void>;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* DualWriteProxy - Write to both AgentDB and RuVector during transition
|
|
135
|
+
*
|
|
136
|
+
* Enables zero-downtime migration by:
|
|
137
|
+
* - Writing to both old and new backends
|
|
138
|
+
* - Reading from new backend (RuVector) for performance
|
|
139
|
+
* - Falling back to old backend on RuVector errors
|
|
140
|
+
*
|
|
141
|
+
* Use this during the transition period to ensure data consistency
|
|
142
|
+
* and enable safe rollback if issues occur.
|
|
143
|
+
*/
|
|
144
|
+
export declare class DualWriteProxy implements IPatternStore {
|
|
145
|
+
private primaryStore;
|
|
146
|
+
private secondaryStore;
|
|
147
|
+
private initialized;
|
|
148
|
+
/**
|
|
149
|
+
* Create dual-write proxy
|
|
150
|
+
* @param primaryStore - Primary store (usually RuVector for reads)
|
|
151
|
+
* @param secondaryStore - Secondary store (usually AgentDB for backup)
|
|
152
|
+
*/
|
|
153
|
+
constructor(primaryStore: IPatternStore, secondaryStore: IPatternStore);
|
|
154
|
+
initialize(): Promise<void>;
|
|
155
|
+
storePattern(pattern: TestPattern): Promise<void>;
|
|
156
|
+
storeBatch(patterns: TestPattern[]): Promise<void>;
|
|
157
|
+
searchSimilar(queryEmbedding: number[], options?: PatternSearchOptions): Promise<PatternSearchResult[]>;
|
|
158
|
+
getPattern(id: string): Promise<TestPattern | null>;
|
|
159
|
+
deletePattern(id: string): Promise<boolean>;
|
|
160
|
+
recordUsage(id: string): Promise<void>;
|
|
161
|
+
buildIndex(): Promise<void>;
|
|
162
|
+
optimize(): Promise<void>;
|
|
163
|
+
getStats(): Promise<PatternStoreStats>;
|
|
164
|
+
clear(): Promise<void>;
|
|
165
|
+
shutdown(): Promise<void>;
|
|
166
|
+
getImplementationInfo(): {
|
|
167
|
+
type: 'ruvector' | 'agentdb' | 'fallback';
|
|
168
|
+
version: string;
|
|
169
|
+
features: string[];
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Convenience function to create a dual-write proxy
|
|
174
|
+
*/
|
|
175
|
+
export declare function createDualWriteProxy(primaryConfig: {
|
|
176
|
+
storagePath?: string;
|
|
177
|
+
dimension?: number;
|
|
178
|
+
}, secondaryConfig: {
|
|
179
|
+
storagePath?: string;
|
|
180
|
+
dimension?: number;
|
|
181
|
+
}): Promise<DualWriteProxy>;
|
|
182
|
+
/**
|
|
183
|
+
* Migration status checker - verify migration progress
|
|
184
|
+
*/
|
|
185
|
+
export declare function checkMigrationStatus(sourcePath: string, targetPath: string): Promise<{
|
|
186
|
+
sourceCount: number;
|
|
187
|
+
targetCount: number;
|
|
188
|
+
migrationComplete: boolean;
|
|
189
|
+
coverage: number;
|
|
190
|
+
}>;
|
|
191
|
+
export default PatternMigrator;
|
|
192
|
+
//# sourceMappingURL=MigrationTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrationTools.d.ts","sourceRoot":"","sources":["../../../src/core/memory/MigrationTools.ts"],"names":[],"mappings":"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"}
|