agentic-qe 2.5.6 → 2.5.8
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/.claude/agents/n8n/n8n-base-agent.md +376 -0
- package/.claude/agents/n8n/n8n-bdd-scenario-tester.md +613 -0
- package/.claude/agents/n8n/n8n-chaos-tester.md +654 -0
- package/.claude/agents/n8n/n8n-ci-orchestrator.md +850 -0
- package/.claude/agents/n8n/n8n-compliance-validator.md +685 -0
- package/.claude/agents/n8n/n8n-expression-validator.md +560 -0
- package/.claude/agents/n8n/n8n-integration-test.md +602 -0
- package/.claude/agents/n8n/n8n-monitoring-validator.md +589 -0
- package/.claude/agents/n8n/n8n-node-validator.md +455 -0
- package/.claude/agents/n8n/n8n-performance-tester.md +630 -0
- package/.claude/agents/n8n/n8n-security-auditor.md +786 -0
- package/.claude/agents/n8n/n8n-trigger-test.md +500 -0
- package/.claude/agents/n8n/n8n-unit-tester.md +633 -0
- package/.claude/agents/n8n/n8n-version-comparator.md +567 -0
- package/.claude/agents/n8n/n8n-workflow-executor.md +392 -0
- package/.claude/skills/n8n-expression-testing/SKILL.md +434 -0
- package/.claude/skills/n8n-integration-testing-patterns/SKILL.md +540 -0
- package/.claude/skills/n8n-security-testing/SKILL.md +599 -0
- package/.claude/skills/n8n-trigger-testing-strategies/SKILL.md +541 -0
- package/.claude/skills/n8n-workflow-testing-fundamentals/SKILL.md +447 -0
- package/CHANGELOG.md +127 -0
- package/README.md +7 -4
- package/dist/agents/BaseAgent.d.ts +142 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +372 -2
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/TestGeneratorAgent.d.ts +5 -0
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +38 -0
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/agents/index.d.ts +1 -1
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/n8n/N8nAPIClient.d.ts +121 -0
- package/dist/agents/n8n/N8nAPIClient.d.ts.map +1 -0
- package/dist/agents/n8n/N8nAPIClient.js +367 -0
- package/dist/agents/n8n/N8nAPIClient.js.map +1 -0
- package/dist/agents/n8n/N8nAuditPersistence.d.ts +120 -0
- package/dist/agents/n8n/N8nAuditPersistence.d.ts.map +1 -0
- package/dist/agents/n8n/N8nAuditPersistence.js +473 -0
- package/dist/agents/n8n/N8nAuditPersistence.js.map +1 -0
- package/dist/agents/n8n/N8nBDDScenarioTesterAgent.d.ts +159 -0
- package/dist/agents/n8n/N8nBDDScenarioTesterAgent.d.ts.map +1 -0
- package/dist/agents/n8n/N8nBDDScenarioTesterAgent.js +697 -0
- package/dist/agents/n8n/N8nBDDScenarioTesterAgent.js.map +1 -0
- package/dist/agents/n8n/N8nBaseAgent.d.ts +126 -0
- package/dist/agents/n8n/N8nBaseAgent.d.ts.map +1 -0
- package/dist/agents/n8n/N8nBaseAgent.js +446 -0
- package/dist/agents/n8n/N8nBaseAgent.js.map +1 -0
- package/dist/agents/n8n/N8nCIOrchestratorAgent.d.ts +164 -0
- package/dist/agents/n8n/N8nCIOrchestratorAgent.d.ts.map +1 -0
- package/dist/agents/n8n/N8nCIOrchestratorAgent.js +610 -0
- package/dist/agents/n8n/N8nCIOrchestratorAgent.js.map +1 -0
- package/dist/agents/n8n/N8nChaosTesterAgent.d.ts +205 -0
- package/dist/agents/n8n/N8nChaosTesterAgent.d.ts.map +1 -0
- package/dist/agents/n8n/N8nChaosTesterAgent.js +729 -0
- package/dist/agents/n8n/N8nChaosTesterAgent.js.map +1 -0
- package/dist/agents/n8n/N8nComplianceValidatorAgent.d.ts +228 -0
- package/dist/agents/n8n/N8nComplianceValidatorAgent.d.ts.map +1 -0
- package/dist/agents/n8n/N8nComplianceValidatorAgent.js +986 -0
- package/dist/agents/n8n/N8nComplianceValidatorAgent.js.map +1 -0
- package/dist/agents/n8n/N8nContractTesterAgent.d.ts +213 -0
- package/dist/agents/n8n/N8nContractTesterAgent.d.ts.map +1 -0
- package/dist/agents/n8n/N8nContractTesterAgent.js +989 -0
- package/dist/agents/n8n/N8nContractTesterAgent.js.map +1 -0
- package/dist/agents/n8n/N8nExpressionValidatorAgent.d.ts +99 -0
- package/dist/agents/n8n/N8nExpressionValidatorAgent.d.ts.map +1 -0
- package/dist/agents/n8n/N8nExpressionValidatorAgent.js +632 -0
- package/dist/agents/n8n/N8nExpressionValidatorAgent.js.map +1 -0
- package/dist/agents/n8n/N8nFailureModeTesterAgent.d.ts +238 -0
- package/dist/agents/n8n/N8nFailureModeTesterAgent.d.ts.map +1 -0
- package/dist/agents/n8n/N8nFailureModeTesterAgent.js +956 -0
- package/dist/agents/n8n/N8nFailureModeTesterAgent.js.map +1 -0
- package/dist/agents/n8n/N8nIdempotencyTesterAgent.d.ts +242 -0
- package/dist/agents/n8n/N8nIdempotencyTesterAgent.d.ts.map +1 -0
- package/dist/agents/n8n/N8nIdempotencyTesterAgent.js +992 -0
- package/dist/agents/n8n/N8nIdempotencyTesterAgent.js.map +1 -0
- package/dist/agents/n8n/N8nIntegrationTestAgent.d.ts +104 -0
- package/dist/agents/n8n/N8nIntegrationTestAgent.d.ts.map +1 -0
- package/dist/agents/n8n/N8nIntegrationTestAgent.js +653 -0
- package/dist/agents/n8n/N8nIntegrationTestAgent.js.map +1 -0
- package/dist/agents/n8n/N8nMonitoringValidatorAgent.d.ts +210 -0
- package/dist/agents/n8n/N8nMonitoringValidatorAgent.d.ts.map +1 -0
- package/dist/agents/n8n/N8nMonitoringValidatorAgent.js +669 -0
- package/dist/agents/n8n/N8nMonitoringValidatorAgent.js.map +1 -0
- package/dist/agents/n8n/N8nNodeValidatorAgent.d.ts +142 -0
- package/dist/agents/n8n/N8nNodeValidatorAgent.d.ts.map +1 -0
- package/dist/agents/n8n/N8nNodeValidatorAgent.js +1090 -0
- package/dist/agents/n8n/N8nNodeValidatorAgent.js.map +1 -0
- package/dist/agents/n8n/N8nPerformanceTesterAgent.d.ts +198 -0
- package/dist/agents/n8n/N8nPerformanceTesterAgent.d.ts.map +1 -0
- package/dist/agents/n8n/N8nPerformanceTesterAgent.js +653 -0
- package/dist/agents/n8n/N8nPerformanceTesterAgent.js.map +1 -0
- package/dist/agents/n8n/N8nReplayabilityTesterAgent.d.ts +245 -0
- package/dist/agents/n8n/N8nReplayabilityTesterAgent.d.ts.map +1 -0
- package/dist/agents/n8n/N8nReplayabilityTesterAgent.js +952 -0
- package/dist/agents/n8n/N8nReplayabilityTesterAgent.js.map +1 -0
- package/dist/agents/n8n/N8nSecretsHygieneAuditorAgent.d.ts +325 -0
- package/dist/agents/n8n/N8nSecretsHygieneAuditorAgent.d.ts.map +1 -0
- package/dist/agents/n8n/N8nSecretsHygieneAuditorAgent.js +1187 -0
- package/dist/agents/n8n/N8nSecretsHygieneAuditorAgent.js.map +1 -0
- package/dist/agents/n8n/N8nSecurityAuditorAgent.d.ts +91 -0
- package/dist/agents/n8n/N8nSecurityAuditorAgent.d.ts.map +1 -0
- package/dist/agents/n8n/N8nSecurityAuditorAgent.js +825 -0
- package/dist/agents/n8n/N8nSecurityAuditorAgent.js.map +1 -0
- package/dist/agents/n8n/N8nTestHarness.d.ts +131 -0
- package/dist/agents/n8n/N8nTestHarness.d.ts.map +1 -0
- package/dist/agents/n8n/N8nTestHarness.js +456 -0
- package/dist/agents/n8n/N8nTestHarness.js.map +1 -0
- package/dist/agents/n8n/N8nTriggerTestAgent.d.ts +119 -0
- package/dist/agents/n8n/N8nTriggerTestAgent.d.ts.map +1 -0
- package/dist/agents/n8n/N8nTriggerTestAgent.js +652 -0
- package/dist/agents/n8n/N8nTriggerTestAgent.js.map +1 -0
- package/dist/agents/n8n/N8nUnitTesterAgent.d.ts +130 -0
- package/dist/agents/n8n/N8nUnitTesterAgent.d.ts.map +1 -0
- package/dist/agents/n8n/N8nUnitTesterAgent.js +522 -0
- package/dist/agents/n8n/N8nUnitTesterAgent.js.map +1 -0
- package/dist/agents/n8n/N8nVersionComparatorAgent.d.ts +201 -0
- package/dist/agents/n8n/N8nVersionComparatorAgent.d.ts.map +1 -0
- package/dist/agents/n8n/N8nVersionComparatorAgent.js +645 -0
- package/dist/agents/n8n/N8nVersionComparatorAgent.js.map +1 -0
- package/dist/agents/n8n/N8nWorkflowExecutorAgent.d.ts +120 -0
- package/dist/agents/n8n/N8nWorkflowExecutorAgent.d.ts.map +1 -0
- package/dist/agents/n8n/N8nWorkflowExecutorAgent.js +347 -0
- package/dist/agents/n8n/N8nWorkflowExecutorAgent.js.map +1 -0
- package/dist/agents/n8n/index.d.ts +119 -0
- package/dist/agents/n8n/index.d.ts.map +1 -0
- package/dist/agents/n8n/index.js +298 -0
- package/dist/agents/n8n/index.js.map +1 -0
- package/dist/agents/n8n/types.d.ts +486 -0
- package/dist/agents/n8n/types.d.ts.map +1 -0
- package/dist/agents/n8n/types.js +8 -0
- package/dist/agents/n8n/types.js.map +1 -0
- package/dist/cli/init/agents.d.ts.map +1 -1
- package/dist/cli/init/agents.js +29 -0
- package/dist/cli/init/agents.js.map +1 -1
- package/dist/cli/init/skills.d.ts.map +1 -1
- package/dist/cli/init/skills.js +7 -1
- package/dist/cli/init/skills.js.map +1 -1
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/core/memory/RuVectorPatternStore.d.ts +90 -0
- package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -1
- package/dist/core/memory/RuVectorPatternStore.js +209 -0
- package/dist/core/memory/RuVectorPatternStore.js.map +1 -1
- package/dist/learning/FederatedManager.d.ts +232 -0
- package/dist/learning/FederatedManager.d.ts.map +1 -0
- package/dist/learning/FederatedManager.js +489 -0
- package/dist/learning/FederatedManager.js.map +1 -0
- package/dist/learning/HNSWPatternAdapter.d.ts +117 -0
- package/dist/learning/HNSWPatternAdapter.d.ts.map +1 -0
- package/dist/learning/HNSWPatternAdapter.js +262 -0
- package/dist/learning/HNSWPatternAdapter.js.map +1 -0
- package/dist/learning/LearningEngine.d.ts +27 -0
- package/dist/learning/LearningEngine.d.ts.map +1 -1
- package/dist/learning/LearningEngine.js +75 -1
- package/dist/learning/LearningEngine.js.map +1 -1
- package/dist/learning/PatternCurator.d.ts +217 -0
- package/dist/learning/PatternCurator.d.ts.map +1 -0
- package/dist/learning/PatternCurator.js +393 -0
- package/dist/learning/PatternCurator.js.map +1 -0
- package/dist/learning/index.d.ts +6 -0
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js +16 -1
- package/dist/learning/index.js.map +1 -1
- package/dist/learning/types.d.ts +4 -0
- package/dist/learning/types.d.ts.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/memory/HNSWPatternStore.d.ts +176 -0
- package/dist/memory/HNSWPatternStore.d.ts.map +1 -0
- package/dist/memory/HNSWPatternStore.js +392 -0
- package/dist/memory/HNSWPatternStore.js.map +1 -0
- package/dist/memory/index.d.ts +8 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +13 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/providers/HybridRouter.d.ts +85 -4
- package/dist/providers/HybridRouter.d.ts.map +1 -1
- package/dist/providers/HybridRouter.js +332 -10
- package/dist/providers/HybridRouter.js.map +1 -1
- package/dist/providers/LLMBaselineTracker.d.ts +120 -0
- package/dist/providers/LLMBaselineTracker.d.ts.map +1 -0
- package/dist/providers/LLMBaselineTracker.js +305 -0
- package/dist/providers/LLMBaselineTracker.js.map +1 -0
- package/dist/providers/OpenRouterProvider.d.ts +26 -0
- package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/providers/OpenRouterProvider.js +75 -6
- package/dist/providers/OpenRouterProvider.js.map +1 -1
- package/dist/providers/RuVectorClient.d.ts +259 -0
- package/dist/providers/RuVectorClient.d.ts.map +1 -0
- package/dist/providers/RuVectorClient.js +416 -0
- package/dist/providers/RuVectorClient.js.map +1 -0
- package/dist/providers/RuvllmPatternCurator.d.ts +116 -0
- package/dist/providers/RuvllmPatternCurator.d.ts.map +1 -0
- package/dist/providers/RuvllmPatternCurator.js +323 -0
- package/dist/providers/RuvllmPatternCurator.js.map +1 -0
- package/dist/providers/RuvllmProvider.d.ts +233 -1
- package/dist/providers/RuvllmProvider.d.ts.map +1 -1
- package/dist/providers/RuvllmProvider.js +781 -11
- package/dist/providers/RuvllmProvider.js.map +1 -1
- package/dist/providers/index.d.ts +5 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +12 -2
- package/dist/providers/index.js.map +1 -1
- package/dist/utils/ruvllm-loader.d.ts +98 -1
- package/dist/utils/ruvllm-loader.d.ts.map +1 -1
- package/dist/utils/ruvllm-loader.js.map +1 -1
- package/docs/reference/agents.md +91 -2
- package/docs/reference/skills.md +97 -2
- package/package.json +2 -2
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* RuVectorClient - TypeScript client for RuVector Docker integration
|
|
4
|
+
*
|
|
5
|
+
* Provides GNN-enhanced vector search with LoRA learning capabilities.
|
|
6
|
+
* Part of AQE LLM Independence initiative (Phase 0.5).
|
|
7
|
+
*
|
|
8
|
+
* @module providers/RuVectorClient
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.RUVECTOR_CLIENT_VERSION = exports.RuVectorClient = exports.RuVectorError = void 0;
|
|
12
|
+
exports.createRuVectorClient = createRuVectorClient;
|
|
13
|
+
/**
|
|
14
|
+
* Custom error class for RuVector operations
|
|
15
|
+
*/
|
|
16
|
+
class RuVectorError extends Error {
|
|
17
|
+
constructor(message, code, statusCode, details) {
|
|
18
|
+
super(message);
|
|
19
|
+
this.code = code;
|
|
20
|
+
this.statusCode = statusCode;
|
|
21
|
+
this.details = details;
|
|
22
|
+
this.name = 'RuVectorError';
|
|
23
|
+
Object.setPrototypeOf(this, RuVectorError.prototype);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.RuVectorError = RuVectorError;
|
|
27
|
+
/**
|
|
28
|
+
* RuVector TypeScript Client
|
|
29
|
+
*
|
|
30
|
+
* Provides integration with RuVector Docker service for GNN-enhanced
|
|
31
|
+
* vector search with LoRA learning capabilities.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const client = new RuVectorClient({
|
|
36
|
+
* baseUrl: 'http://localhost:8080',
|
|
37
|
+
* learningEnabled: true,
|
|
38
|
+
* cacheThreshold: 0.8,
|
|
39
|
+
* loraRank: 8,
|
|
40
|
+
* ewcEnabled: true
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* // Query with automatic learning
|
|
44
|
+
* const result = await client.queryWithLearning(
|
|
45
|
+
* 'How do I test async functions?',
|
|
46
|
+
* embedding,
|
|
47
|
+
* async () => await llm.complete('How do I test async functions?')
|
|
48
|
+
* );
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
class RuVectorClient {
|
|
52
|
+
/**
|
|
53
|
+
* Creates a new RuVector client instance
|
|
54
|
+
*
|
|
55
|
+
* @param config - Configuration options
|
|
56
|
+
*/
|
|
57
|
+
constructor(config) {
|
|
58
|
+
this.queryCount = 0;
|
|
59
|
+
this.cacheHits = 0;
|
|
60
|
+
this.totalLatency = 0;
|
|
61
|
+
this.baseUrl = config.baseUrl.replace(/\/$/, ''); // Remove trailing slash
|
|
62
|
+
this.config = {
|
|
63
|
+
...config,
|
|
64
|
+
timeout: config.timeout ?? 30000,
|
|
65
|
+
maxRetries: config.maxRetries ?? 3,
|
|
66
|
+
retryDelay: config.retryDelay ?? 1000,
|
|
67
|
+
debug: config.debug ?? false
|
|
68
|
+
};
|
|
69
|
+
this.log('RuVectorClient initialized', { baseUrl: this.baseUrl });
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Search for similar patterns with GNN-enhanced ranking
|
|
73
|
+
*
|
|
74
|
+
* @param embedding - Query embedding vector
|
|
75
|
+
* @param k - Number of results to return (default: 10)
|
|
76
|
+
* @param options - Additional search options
|
|
77
|
+
* @returns Array of search results ranked by GNN confidence
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* const results = await client.search(embedding, 5);
|
|
82
|
+
* console.log(`Top result: ${results[0].content} (${results[0].confidence})`);
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
async search(embedding, k = 10, options) {
|
|
86
|
+
this.validateEmbedding(embedding);
|
|
87
|
+
const startTime = Date.now();
|
|
88
|
+
try {
|
|
89
|
+
const response = await this.fetchWithRetry(`${this.baseUrl}/v1/search`, {
|
|
90
|
+
method: 'POST',
|
|
91
|
+
headers: { 'Content-Type': 'application/json' },
|
|
92
|
+
body: JSON.stringify({
|
|
93
|
+
embedding,
|
|
94
|
+
k,
|
|
95
|
+
useGNN: options?.useGNN ?? true,
|
|
96
|
+
attentionType: options?.attentionType ?? 'multi-head',
|
|
97
|
+
minConfidence: options?.minConfidence ?? 0.0
|
|
98
|
+
})
|
|
99
|
+
});
|
|
100
|
+
const results = await this.parseJsonResponse(response);
|
|
101
|
+
const latency = Date.now() - startTime;
|
|
102
|
+
this.log('Search completed', {
|
|
103
|
+
k,
|
|
104
|
+
resultsCount: results.length,
|
|
105
|
+
latency,
|
|
106
|
+
topConfidence: results[0]?.confidence
|
|
107
|
+
});
|
|
108
|
+
return results;
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
throw this.handleError('search', error, { k, embeddingSize: embedding.length });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Store pattern with automatic LoRA learning
|
|
116
|
+
*
|
|
117
|
+
* @param pattern - Pattern to store
|
|
118
|
+
* @param options - Storage options
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* ```typescript
|
|
122
|
+
* await client.store({
|
|
123
|
+
* embedding: [0.1, 0.2, ...],
|
|
124
|
+
* content: 'Use jest.fn() for mocking',
|
|
125
|
+
* metadata: { category: 'testing', framework: 'jest' }
|
|
126
|
+
* });
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
async store(pattern, options) {
|
|
130
|
+
this.validateEmbedding(pattern.embedding);
|
|
131
|
+
try {
|
|
132
|
+
const response = await this.fetchWithRetry(`${this.baseUrl}/v1/store`, {
|
|
133
|
+
method: 'POST',
|
|
134
|
+
headers: { 'Content-Type': 'application/json' },
|
|
135
|
+
body: JSON.stringify({
|
|
136
|
+
embedding: pattern.embedding,
|
|
137
|
+
content: pattern.content,
|
|
138
|
+
metadata: pattern.metadata,
|
|
139
|
+
learningConfig: this.config.learningEnabled ? {
|
|
140
|
+
loraRank: this.config.loraRank,
|
|
141
|
+
ewcLambda: this.config.ewcEnabled ? 0.5 : 0,
|
|
142
|
+
triggerConsolidation: options?.triggerLearning ?? false
|
|
143
|
+
} : undefined,
|
|
144
|
+
priority: options?.priority ?? 'normal'
|
|
145
|
+
})
|
|
146
|
+
});
|
|
147
|
+
if (!response.ok) {
|
|
148
|
+
throw new RuVectorError(`Failed to store pattern: ${response.statusText}`, 'STORE_FAILED', response.status);
|
|
149
|
+
}
|
|
150
|
+
this.log('Pattern stored successfully', {
|
|
151
|
+
contentLength: pattern.content.length,
|
|
152
|
+
metadataKeys: Object.keys(pattern.metadata).length
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
throw this.handleError('store', error, { embeddingSize: pattern.embedding.length });
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Query with automatic learning and LLM fallback
|
|
161
|
+
*
|
|
162
|
+
* Implements intelligent routing:
|
|
163
|
+
* 1. Search vector DB for similar patterns
|
|
164
|
+
* 2. If confidence > threshold, return cached result
|
|
165
|
+
* 3. Otherwise, call LLM fallback
|
|
166
|
+
* 4. Store LLM result for future learning
|
|
167
|
+
*
|
|
168
|
+
* @param query - Query string for logging
|
|
169
|
+
* @param embedding - Query embedding vector
|
|
170
|
+
* @param llmFallback - Function to call LLM if cache misses
|
|
171
|
+
* @returns Query result with source information
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* ```typescript
|
|
175
|
+
* const result = await client.queryWithLearning(
|
|
176
|
+
* 'How to mock API calls?',
|
|
177
|
+
* embedding,
|
|
178
|
+
* async () => await anthropic.complete('How to mock API calls?')
|
|
179
|
+
* );
|
|
180
|
+
*
|
|
181
|
+
* if (result.source === 'cache') {
|
|
182
|
+
* console.log('Served from cache, saving costs!');
|
|
183
|
+
* }
|
|
184
|
+
* ```
|
|
185
|
+
*/
|
|
186
|
+
async queryWithLearning(query, embedding, llmFallback) {
|
|
187
|
+
const startTime = Date.now();
|
|
188
|
+
this.queryCount++;
|
|
189
|
+
try {
|
|
190
|
+
// Phase 1: Search for similar patterns
|
|
191
|
+
const results = await this.search(embedding, 5);
|
|
192
|
+
const topResult = results[0];
|
|
193
|
+
// Phase 2: Check confidence threshold
|
|
194
|
+
if (topResult && topResult.confidence > this.config.cacheThreshold) {
|
|
195
|
+
this.cacheHits++;
|
|
196
|
+
const latency = Date.now() - startTime;
|
|
197
|
+
this.totalLatency += latency;
|
|
198
|
+
this.log('Cache hit', {
|
|
199
|
+
query,
|
|
200
|
+
confidence: topResult.confidence,
|
|
201
|
+
threshold: this.config.cacheThreshold,
|
|
202
|
+
latency
|
|
203
|
+
});
|
|
204
|
+
return {
|
|
205
|
+
content: topResult.content,
|
|
206
|
+
source: 'cache',
|
|
207
|
+
confidence: topResult.confidence,
|
|
208
|
+
latency,
|
|
209
|
+
metadata: topResult.metadata
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
// Phase 3: Cache miss - call LLM
|
|
213
|
+
this.log('Cache miss, calling LLM fallback', {
|
|
214
|
+
query,
|
|
215
|
+
topConfidence: topResult?.confidence ?? 0,
|
|
216
|
+
threshold: this.config.cacheThreshold
|
|
217
|
+
});
|
|
218
|
+
const llmResponse = await llmFallback();
|
|
219
|
+
const latency = Date.now() - startTime;
|
|
220
|
+
this.totalLatency += latency;
|
|
221
|
+
// Phase 4: Store for future learning
|
|
222
|
+
if (this.config.learningEnabled) {
|
|
223
|
+
await this.store({
|
|
224
|
+
embedding,
|
|
225
|
+
content: llmResponse,
|
|
226
|
+
metadata: {
|
|
227
|
+
query,
|
|
228
|
+
timestamp: new Date().toISOString(),
|
|
229
|
+
source: 'llm',
|
|
230
|
+
originalConfidence: topResult?.confidence ?? 0
|
|
231
|
+
}
|
|
232
|
+
}, { triggerLearning: true });
|
|
233
|
+
}
|
|
234
|
+
return {
|
|
235
|
+
content: llmResponse,
|
|
236
|
+
source: 'llm',
|
|
237
|
+
confidence: 1.0, // LLM responses are assumed to be high quality
|
|
238
|
+
latency,
|
|
239
|
+
metadata: {
|
|
240
|
+
query,
|
|
241
|
+
cachedResultConfidence: topResult?.confidence
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
throw this.handleError('queryWithLearning', error, { query });
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Get learning metrics
|
|
251
|
+
*
|
|
252
|
+
* @returns Current learning metrics
|
|
253
|
+
*/
|
|
254
|
+
async getMetrics() {
|
|
255
|
+
try {
|
|
256
|
+
const response = await this.fetchWithRetry(`${this.baseUrl}/v1/metrics`);
|
|
257
|
+
const serverMetrics = await this.parseJsonResponse(response);
|
|
258
|
+
return {
|
|
259
|
+
cacheHitRate: this.queryCount > 0 ? this.cacheHits / this.queryCount : 0,
|
|
260
|
+
totalQueries: this.queryCount,
|
|
261
|
+
loraUpdates: serverMetrics.loraUpdates,
|
|
262
|
+
averageLatency: this.queryCount > 0 ? this.totalLatency / this.queryCount : 0,
|
|
263
|
+
patternCount: serverMetrics.patternCount,
|
|
264
|
+
memoryUsageMB: serverMetrics.memoryUsageMB,
|
|
265
|
+
gnnMetrics: serverMetrics.gnnMetrics
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
throw this.handleError('getMetrics', error);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Force learning consolidation
|
|
274
|
+
*
|
|
275
|
+
* Triggers manual LoRA parameter consolidation.
|
|
276
|
+
* Use sparingly - automatic consolidation is preferred.
|
|
277
|
+
*
|
|
278
|
+
* @returns Consolidation result with updated metrics
|
|
279
|
+
*/
|
|
280
|
+
async forceLearn() {
|
|
281
|
+
this.log('Forcing learning consolidation');
|
|
282
|
+
try {
|
|
283
|
+
const response = await this.fetchWithRetry(`${this.baseUrl}/v1/learn`, {
|
|
284
|
+
method: 'POST',
|
|
285
|
+
headers: { 'Content-Type': 'application/json' },
|
|
286
|
+
body: JSON.stringify({
|
|
287
|
+
loraRank: this.config.loraRank,
|
|
288
|
+
ewcLambda: this.config.ewcEnabled ? 0.5 : 0
|
|
289
|
+
})
|
|
290
|
+
});
|
|
291
|
+
const result = await this.parseJsonResponse(response);
|
|
292
|
+
this.log('Learning consolidation completed', result);
|
|
293
|
+
return result;
|
|
294
|
+
}
|
|
295
|
+
catch (error) {
|
|
296
|
+
throw this.handleError('forceLearn', error);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Health check
|
|
301
|
+
*
|
|
302
|
+
* @returns Health status of RuVector service
|
|
303
|
+
*/
|
|
304
|
+
async healthCheck() {
|
|
305
|
+
try {
|
|
306
|
+
const response = await this.fetchWithRetry(`${this.baseUrl}/health`, {
|
|
307
|
+
method: 'GET'
|
|
308
|
+
});
|
|
309
|
+
const health = await this.parseJsonResponse(response);
|
|
310
|
+
this.log('Health check completed', {
|
|
311
|
+
status: health.status,
|
|
312
|
+
uptime: health.uptime,
|
|
313
|
+
vectorCount: health.vectorCount
|
|
314
|
+
});
|
|
315
|
+
return health;
|
|
316
|
+
}
|
|
317
|
+
catch (error) {
|
|
318
|
+
throw this.handleError('healthCheck', error);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Reset metrics
|
|
323
|
+
*
|
|
324
|
+
* Resets client-side query metrics. Does not affect server metrics.
|
|
325
|
+
*/
|
|
326
|
+
resetMetrics() {
|
|
327
|
+
this.queryCount = 0;
|
|
328
|
+
this.cacheHits = 0;
|
|
329
|
+
this.totalLatency = 0;
|
|
330
|
+
this.log('Metrics reset');
|
|
331
|
+
}
|
|
332
|
+
// Private helper methods
|
|
333
|
+
validateEmbedding(embedding) {
|
|
334
|
+
if (!Array.isArray(embedding) || embedding.length === 0) {
|
|
335
|
+
throw new RuVectorError('Embedding must be a non-empty array', 'INVALID_EMBEDDING');
|
|
336
|
+
}
|
|
337
|
+
if (!embedding.every(v => typeof v === 'number' && !isNaN(v))) {
|
|
338
|
+
throw new RuVectorError('Embedding must contain only valid numbers', 'INVALID_EMBEDDING');
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
async fetchWithRetry(url, options, attempt = 1) {
|
|
342
|
+
const controller = new AbortController();
|
|
343
|
+
const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
|
|
344
|
+
try {
|
|
345
|
+
const response = await fetch(url, {
|
|
346
|
+
...options,
|
|
347
|
+
signal: controller.signal
|
|
348
|
+
});
|
|
349
|
+
clearTimeout(timeoutId);
|
|
350
|
+
if (!response.ok && attempt < this.config.maxRetries) {
|
|
351
|
+
const delay = this.config.retryDelay * attempt;
|
|
352
|
+
this.log(`Request failed (attempt ${attempt}), retrying in ${delay}ms`, {
|
|
353
|
+
status: response.status,
|
|
354
|
+
url
|
|
355
|
+
});
|
|
356
|
+
await this.sleep(delay);
|
|
357
|
+
return this.fetchWithRetry(url, options, attempt + 1);
|
|
358
|
+
}
|
|
359
|
+
return response;
|
|
360
|
+
}
|
|
361
|
+
catch (error) {
|
|
362
|
+
clearTimeout(timeoutId);
|
|
363
|
+
if (attempt < this.config.maxRetries) {
|
|
364
|
+
const delay = this.config.retryDelay * attempt;
|
|
365
|
+
this.log(`Request error (attempt ${attempt}), retrying in ${delay}ms`, {
|
|
366
|
+
error: error instanceof Error ? error.message : String(error),
|
|
367
|
+
url
|
|
368
|
+
});
|
|
369
|
+
await this.sleep(delay);
|
|
370
|
+
return this.fetchWithRetry(url, options, attempt + 1);
|
|
371
|
+
}
|
|
372
|
+
throw error;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
async parseJsonResponse(response) {
|
|
376
|
+
if (!response.ok) {
|
|
377
|
+
const errorText = await response.text().catch(() => 'Unknown error');
|
|
378
|
+
throw new RuVectorError(`Request failed: ${response.statusText}`, 'REQUEST_FAILED', response.status, errorText);
|
|
379
|
+
}
|
|
380
|
+
try {
|
|
381
|
+
return await response.json();
|
|
382
|
+
}
|
|
383
|
+
catch (error) {
|
|
384
|
+
throw new RuVectorError('Failed to parse JSON response', 'PARSE_ERROR', response.status, error);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
handleError(operation, error, context) {
|
|
388
|
+
if (error instanceof RuVectorError) {
|
|
389
|
+
return error;
|
|
390
|
+
}
|
|
391
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
392
|
+
const ruVectorError = new RuVectorError(`${operation} failed: ${message}`, 'OPERATION_FAILED', undefined, { originalError: error, context });
|
|
393
|
+
this.log(`Error in ${operation}`, {
|
|
394
|
+
error: message,
|
|
395
|
+
context
|
|
396
|
+
});
|
|
397
|
+
return ruVectorError;
|
|
398
|
+
}
|
|
399
|
+
sleep(ms) {
|
|
400
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
401
|
+
}
|
|
402
|
+
log(message, data) {
|
|
403
|
+
if (this.config.debug) {
|
|
404
|
+
const timestamp = new Date().toISOString();
|
|
405
|
+
console.log(`[RuVectorClient] ${timestamp} - ${message}`, data || '');
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
exports.RuVectorClient = RuVectorClient;
|
|
410
|
+
// Export default instance factory for convenience
|
|
411
|
+
function createRuVectorClient(config) {
|
|
412
|
+
return new RuVectorClient(config);
|
|
413
|
+
}
|
|
414
|
+
// Export version for compatibility checks
|
|
415
|
+
exports.RUVECTOR_CLIENT_VERSION = '1.0.0';
|
|
416
|
+
//# sourceMappingURL=RuVectorClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuVectorClient.js","sourceRoot":"","sources":["../../src/providers/RuVectorClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RuvllmPatternCurator - Integration layer between PatternCurator and RuvllmProvider
|
|
3
|
+
*
|
|
4
|
+
* Phase 0 M0.6: Wires manual pattern curation to RuvLLM's learning system
|
|
5
|
+
*
|
|
6
|
+
* This adapter:
|
|
7
|
+
* - Implements IPatternSource using HNSWPatternAdapter
|
|
8
|
+
* - Implements ILearningTrigger using RuvllmProvider
|
|
9
|
+
* - Enables manual curation to improve RuvLLM routing decisions
|
|
10
|
+
* - Provides 20% better routing through curated patterns
|
|
11
|
+
*/
|
|
12
|
+
import { EventEmitter } from 'events';
|
|
13
|
+
import { StoredPattern, CuratedPattern, CuratorConfig, CurationSession, PatternAnalytics } from '../learning/PatternCurator';
|
|
14
|
+
import { RuvllmProvider } from './RuvllmProvider';
|
|
15
|
+
import { HNSWPatternAdapter } from '../learning/HNSWPatternAdapter';
|
|
16
|
+
/**
|
|
17
|
+
* Configuration for RuvllmPatternCurator
|
|
18
|
+
*/
|
|
19
|
+
export interface RuvllmPatternCuratorConfig {
|
|
20
|
+
/** Pattern curation configuration */
|
|
21
|
+
curatorConfig?: Partial<CuratorConfig>;
|
|
22
|
+
/** RuvLLM provider instance */
|
|
23
|
+
ruvllmProvider: RuvllmProvider;
|
|
24
|
+
/** Optional HNSW adapter for pattern storage */
|
|
25
|
+
hnswAdapter?: HNSWPatternAdapter;
|
|
26
|
+
/** Enable embedding-based similarity search */
|
|
27
|
+
useEmbeddings?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* RuvllmPatternCurator - Unified pattern curation with RuvLLM integration
|
|
31
|
+
*/
|
|
32
|
+
export declare class RuvllmPatternCurator extends EventEmitter {
|
|
33
|
+
private readonly logger;
|
|
34
|
+
private readonly curator;
|
|
35
|
+
private readonly ruvllm;
|
|
36
|
+
private readonly patternSource;
|
|
37
|
+
private readonly learningTrigger;
|
|
38
|
+
constructor(config: RuvllmPatternCuratorConfig);
|
|
39
|
+
/**
|
|
40
|
+
* Start a curation session
|
|
41
|
+
*/
|
|
42
|
+
startSession(reviewerId?: string): CurationSession;
|
|
43
|
+
/**
|
|
44
|
+
* End current curation session
|
|
45
|
+
*/
|
|
46
|
+
endSession(): CurationSession | null;
|
|
47
|
+
/**
|
|
48
|
+
* Find low-confidence patterns for review
|
|
49
|
+
*/
|
|
50
|
+
findLowConfidencePatterns(limit?: number): Promise<StoredPattern[]>;
|
|
51
|
+
/**
|
|
52
|
+
* Review a pattern manually
|
|
53
|
+
*/
|
|
54
|
+
reviewPattern(pattern: StoredPattern, curation: CuratedPattern): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Auto-curate patterns based on confidence thresholds
|
|
57
|
+
*/
|
|
58
|
+
autoCurate(): Promise<{
|
|
59
|
+
autoApproved: number;
|
|
60
|
+
autoRejected: number;
|
|
61
|
+
needsReview: number;
|
|
62
|
+
}>;
|
|
63
|
+
/**
|
|
64
|
+
* Force learning consolidation
|
|
65
|
+
*/
|
|
66
|
+
forceLearning(): Promise<{
|
|
67
|
+
feedbackSubmitted: number;
|
|
68
|
+
patternsConsolidated: number;
|
|
69
|
+
newWeightVersion: number;
|
|
70
|
+
}>;
|
|
71
|
+
/**
|
|
72
|
+
* Get pattern analytics
|
|
73
|
+
*/
|
|
74
|
+
getAnalytics(): Promise<PatternAnalytics>;
|
|
75
|
+
/**
|
|
76
|
+
* Get routing improvement stats
|
|
77
|
+
*/
|
|
78
|
+
getRoutingImprovement(): Promise<{
|
|
79
|
+
beforeCuration: {
|
|
80
|
+
avgConfidence: number;
|
|
81
|
+
};
|
|
82
|
+
afterCuration: {
|
|
83
|
+
avgConfidence: number;
|
|
84
|
+
};
|
|
85
|
+
improvement: number;
|
|
86
|
+
}>;
|
|
87
|
+
/**
|
|
88
|
+
* Get curation history
|
|
89
|
+
*/
|
|
90
|
+
getCurationHistory(): CurationSession[];
|
|
91
|
+
/**
|
|
92
|
+
* Get current session
|
|
93
|
+
*/
|
|
94
|
+
getCurrentSession(): CurationSession | null;
|
|
95
|
+
/**
|
|
96
|
+
* Get pending feedback count
|
|
97
|
+
*/
|
|
98
|
+
getPendingFeedbackCount(): number;
|
|
99
|
+
/**
|
|
100
|
+
* Interactive curation generator
|
|
101
|
+
*/
|
|
102
|
+
interactiveCuration(limit?: number): AsyncGenerator<{
|
|
103
|
+
pattern: StoredPattern;
|
|
104
|
+
submit: (curation: CuratedPattern) => Promise<void>;
|
|
105
|
+
skip: () => void;
|
|
106
|
+
}>;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Create a RuvllmPatternCurator with default configuration
|
|
110
|
+
*/
|
|
111
|
+
export declare function createRuvllmPatternCurator(ruvllmProvider: RuvllmProvider, options?: {
|
|
112
|
+
curatorConfig?: Partial<CuratorConfig>;
|
|
113
|
+
useEmbeddings?: boolean;
|
|
114
|
+
hnswConfig?: any;
|
|
115
|
+
}): RuvllmPatternCurator;
|
|
116
|
+
//# sourceMappingURL=RuvllmPatternCurator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuvllmPatternCurator.d.ts","sourceRoot":"","sources":["../../src/providers/RuvllmPatternCurator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAGL,aAAa,EACb,cAAc,EAEd,aAAa,EAGb,eAAe,EACf,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAA4B,MAAM,gCAAgC,CAAC;AAI9F;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,qCAAqC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,+BAA+B;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,gDAAgD;IAChD,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,+CAA+C;IAC/C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAsND;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,YAAY;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;IACpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;gBAE5C,MAAM,EAAE,0BAA0B;IAkC9C;;OAEG;IACH,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe;IAIlD;;OAEG;IACH,UAAU,IAAI,eAAe,GAAG,IAAI;IAIpC;;OAEG;IACG,yBAAyB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAIzE;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpF;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAIF;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC;QAC7B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,oBAAoB,EAAE,MAAM,CAAC;QAC7B,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IAIF;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAI/C;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC;QACrC,cAAc,EAAE;YAAE,aAAa,EAAE,MAAM,CAAA;SAAE,CAAC;QAC1C,aAAa,EAAE;YAAE,aAAa,EAAE,MAAM,CAAA;SAAE,CAAC;QACzC,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAIF;;OAEG;IACH,kBAAkB,IAAI,eAAe,EAAE;IAIvC;;OAEG;IACH,iBAAiB,IAAI,eAAe,GAAG,IAAI;IAI3C;;OAEG;IACH,uBAAuB,IAAI,MAAM;IAIjC;;OAEG;IACI,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;QACzD,OAAO,EAAE,aAAa,CAAC;QACvB,MAAM,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,EAAE,MAAM,IAAI,CAAC;KAClB,CAAC;CAGH;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,cAAc,EAAE,cAAc,EAC9B,OAAO,CAAC,EAAE;IACR,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,GAAG,CAAC;CAClB,GACA,oBAAoB,CAatB"}
|