agentic-qe 2.6.0 → 2.6.2
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 +156 -0
- package/README.md +222 -159
- package/dist/agents/BaseAgent.d.ts +19 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +41 -1
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/CodeIntelligenceAgent.d.ts +14 -0
- package/dist/agents/CodeIntelligenceAgent.d.ts.map +1 -1
- package/dist/agents/CodeIntelligenceAgent.js +66 -0
- package/dist/agents/CodeIntelligenceAgent.js.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.d.ts +8 -0
- package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.js +65 -1
- package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
- package/dist/agents/TestGeneratorAgent.d.ts +2 -2
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +16 -6
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/agents/adapters/AgentLLMAdapter.d.ts +127 -0
- package/dist/agents/adapters/AgentLLMAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/AgentLLMAdapter.js +366 -0
- package/dist/agents/adapters/AgentLLMAdapter.js.map +1 -0
- package/dist/agents/adapters/index.d.ts +1 -0
- package/dist/agents/adapters/index.d.ts.map +1 -1
- package/dist/agents/adapters/index.js +5 -1
- package/dist/agents/adapters/index.js.map +1 -1
- package/dist/agents/interfaces/IAgentLLM.d.ts +257 -0
- package/dist/agents/interfaces/IAgentLLM.d.ts.map +1 -0
- package/dist/agents/interfaces/IAgentLLM.js +39 -0
- package/dist/agents/interfaces/IAgentLLM.js.map +1 -0
- package/dist/agents/interfaces/index.d.ts +10 -0
- package/dist/agents/interfaces/index.d.ts.map +1 -0
- package/dist/agents/interfaces/index.js +14 -0
- package/dist/agents/interfaces/index.js.map +1 -0
- package/dist/agents/n8n/N8nBaseAgent.d.ts +18 -0
- package/dist/agents/n8n/N8nBaseAgent.d.ts.map +1 -1
- package/dist/agents/n8n/N8nBaseAgent.js +80 -0
- package/dist/agents/n8n/N8nBaseAgent.js.map +1 -1
- package/dist/agents/pool/AgentPool.d.ts +112 -0
- package/dist/agents/pool/AgentPool.d.ts.map +1 -0
- package/dist/agents/pool/AgentPool.js +573 -0
- package/dist/agents/pool/AgentPool.js.map +1 -0
- package/dist/agents/pool/QEAgentPoolFactory.d.ts +118 -0
- package/dist/agents/pool/QEAgentPoolFactory.d.ts.map +1 -0
- package/dist/agents/pool/QEAgentPoolFactory.js +251 -0
- package/dist/agents/pool/QEAgentPoolFactory.js.map +1 -0
- package/dist/agents/pool/index.d.ts +34 -0
- package/dist/agents/pool/index.d.ts.map +1 -0
- package/dist/agents/pool/index.js +44 -0
- package/dist/agents/pool/index.js.map +1 -0
- package/dist/agents/pool/types.d.ts +227 -0
- package/dist/agents/pool/types.d.ts.map +1 -0
- package/dist/agents/pool/types.js +28 -0
- package/dist/agents/pool/types.js.map +1 -0
- package/dist/cli/commands/providers.d.ts +50 -0
- package/dist/cli/commands/providers.d.ts.map +1 -0
- package/dist/cli/commands/providers.js +403 -0
- package/dist/cli/commands/providers.js.map +1 -0
- package/dist/cli/index.js +62 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/code-intelligence/indexing/FileWatcher.d.ts.map +1 -1
- package/dist/code-intelligence/indexing/FileWatcher.js +11 -8
- package/dist/code-intelligence/indexing/FileWatcher.js.map +1 -1
- package/dist/config/ConfigLoader.d.ts +85 -0
- package/dist/config/ConfigLoader.d.ts.map +1 -0
- package/dist/config/ConfigLoader.js +420 -0
- package/dist/config/ConfigLoader.js.map +1 -0
- package/dist/config/ProviderConfig.d.ts +153 -0
- package/dist/config/ProviderConfig.d.ts.map +1 -0
- package/dist/config/ProviderConfig.js +155 -0
- package/dist/config/ProviderConfig.js.map +1 -0
- package/dist/config/index.d.ts +35 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +45 -0
- package/dist/config/index.js.map +1 -0
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/mcp/handlers/agent-spawn.d.ts +71 -5
- package/dist/mcp/handlers/agent-spawn.d.ts.map +1 -1
- package/dist/mcp/handlers/agent-spawn.js +336 -110
- package/dist/mcp/handlers/agent-spawn.js.map +1 -1
- package/dist/mcp/handlers/fleet-init.d.ts +24 -0
- package/dist/mcp/handlers/fleet-init.d.ts.map +1 -1
- package/dist/mcp/handlers/fleet-init.js +56 -4
- package/dist/mcp/handlers/fleet-init.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/mcp/server.d.ts +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/memory/HNSWPatternStore.d.ts.map +1 -1
- package/dist/memory/HNSWPatternStore.js +23 -0
- package/dist/memory/HNSWPatternStore.js.map +1 -1
- package/dist/memory/RuVectorPatternStore.d.ts +5 -0
- package/dist/memory/RuVectorPatternStore.d.ts.map +1 -1
- package/dist/memory/RuVectorPatternStore.js +11 -0
- package/dist/memory/RuVectorPatternStore.js.map +1 -1
- package/dist/plugins/BasePlugin.d.ts +111 -0
- package/dist/plugins/BasePlugin.d.ts.map +1 -0
- package/dist/plugins/BasePlugin.js +154 -0
- package/dist/plugins/BasePlugin.js.map +1 -0
- package/dist/plugins/PluginManager.d.ts +145 -0
- package/dist/plugins/PluginManager.d.ts.map +1 -0
- package/dist/plugins/PluginManager.js +862 -0
- package/dist/plugins/PluginManager.js.map +1 -0
- package/dist/plugins/adapters/McpToolsPlugin.d.ts +98 -0
- package/dist/plugins/adapters/McpToolsPlugin.d.ts.map +1 -0
- package/dist/plugins/adapters/McpToolsPlugin.js +518 -0
- package/dist/plugins/adapters/McpToolsPlugin.js.map +1 -0
- package/dist/plugins/adapters/PlaywrightPlugin.d.ts +63 -0
- package/dist/plugins/adapters/PlaywrightPlugin.d.ts.map +1 -0
- package/dist/plugins/adapters/PlaywrightPlugin.js +451 -0
- package/dist/plugins/adapters/PlaywrightPlugin.js.map +1 -0
- package/dist/plugins/adapters/VitestPlugin.d.ts +74 -0
- package/dist/plugins/adapters/VitestPlugin.d.ts.map +1 -0
- package/dist/plugins/adapters/VitestPlugin.js +589 -0
- package/dist/plugins/adapters/VitestPlugin.js.map +1 -0
- package/dist/plugins/adapters/index.d.ts +8 -0
- package/dist/plugins/adapters/index.d.ts.map +1 -0
- package/dist/plugins/adapters/index.js +17 -0
- package/dist/plugins/adapters/index.js.map +1 -0
- package/dist/plugins/index.d.ts +32 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +48 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/types.d.ts +528 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +61 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/providers/CostOptimizationStrategies.d.ts +297 -0
- package/dist/providers/CostOptimizationStrategies.d.ts.map +1 -0
- package/dist/providers/CostOptimizationStrategies.js +831 -0
- package/dist/providers/CostOptimizationStrategies.js.map +1 -0
- package/dist/providers/HybridRouter.d.ts +142 -5
- package/dist/providers/HybridRouter.d.ts.map +1 -1
- package/dist/providers/HybridRouter.js +472 -6
- package/dist/providers/HybridRouter.js.map +1 -1
- package/dist/providers/HybridRouterComplexityIntegration.d.ts +169 -0
- package/dist/providers/HybridRouterComplexityIntegration.d.ts.map +1 -0
- package/dist/providers/HybridRouterComplexityIntegration.js +319 -0
- package/dist/providers/HybridRouterComplexityIntegration.js.map +1 -0
- package/dist/providers/HybridRouterModelSelection.d.ts +106 -0
- package/dist/providers/HybridRouterModelSelection.d.ts.map +1 -0
- package/dist/providers/HybridRouterModelSelection.js +420 -0
- package/dist/providers/HybridRouterModelSelection.js.map +1 -0
- package/dist/providers/LLMProviderFactory.d.ts +23 -9
- package/dist/providers/LLMProviderFactory.d.ts.map +1 -1
- package/dist/providers/LLMProviderFactory.js +54 -11
- package/dist/providers/LLMProviderFactory.js.map +1 -1
- package/dist/providers/OllamaProvider.d.ts +122 -0
- package/dist/providers/OllamaProvider.d.ts.map +1 -0
- package/dist/providers/OllamaProvider.js +425 -0
- package/dist/providers/OllamaProvider.js.map +1 -0
- package/dist/providers/index.d.ts +6 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +17 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/routing/ComplexityClassifier.d.ts +266 -0
- package/dist/routing/ComplexityClassifier.d.ts.map +1 -0
- package/dist/routing/ComplexityClassifier.js +567 -0
- package/dist/routing/ComplexityClassifier.js.map +1 -0
- package/dist/routing/ModelCapabilityRegistry.d.ts +98 -0
- package/dist/routing/ModelCapabilityRegistry.d.ts.map +1 -0
- package/dist/routing/ModelCapabilityRegistry.js +216 -0
- package/dist/routing/ModelCapabilityRegistry.js.map +1 -0
- package/dist/routing/index.d.ts +13 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +24 -0
- package/dist/routing/index.js.map +1 -0
- package/docs/reference/model-capability-registry.md +402 -0
- package/docs/reference/provider-config-schema.md +608 -0
- package/package.json +21 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentLLMAdapter.d.ts","sourceRoot":"","sources":["../../../src/agents/adapters/AgentLLMAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,YAAY,EAKb,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,8BAA8B,CAAC;AACjF,OAAO,KAAK,EACV,SAAS,EACT,sBAAsB,EACtB,eAAe,EACf,cAAc,EACf,MAAM,yBAAyB,CAAC;AAGjC;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,kCAAkC;IAClC,QAAQ,EAAE,YAAY,CAAC;IAEvB,wDAAwD;IACxD,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,2BAA2B;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,0BAA0B;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0H;IACjJ,OAAO,CAAC,YAAY,CAAS;IAG7B,OAAO,CAAC,KAAK,CASX;gBAEU,MAAM,EAAE,qBAAqB;IA+BzC;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBjF;;OAEG;IACI,cAAc,CACnB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,sBAAsB,GAC/B,qBAAqB,CAAC,MAAM,CAAC;IA2ChC;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAS5C;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAwBrD;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB/C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IASnC;;OAEG;IACH,aAAa,IAAI,eAAe;IAwBhC;;OAEG;IACH,UAAU,IAAI,IAAI;IAqBlB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAoC9B;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;OAEG;IACH,OAAO,CAAC,UAAU;IAsClB;;OAEG;IACH,OAAO,CAAC,cAAc;CAwCvB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,YAAY,EACtB,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC,GACxD,SAAS,CAKX"}
|
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Agent LLM Adapter - Bridges ILLMProvider to IAgentLLM
|
|
4
|
+
*
|
|
5
|
+
* Phase 1.2.2: Provides the implementation that wraps any ILLMProvider
|
|
6
|
+
* and presents the simplified IAgentLLM interface to agents.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Wraps any ILLMProvider (RuvllmProvider, ClaudeProvider, HybridRouter)
|
|
10
|
+
* - Tracks usage statistics per agent
|
|
11
|
+
* - Handles complexity-based routing when using HybridRouter
|
|
12
|
+
* - Integrates with RuVector caching automatically
|
|
13
|
+
* - Provides clear error handling
|
|
14
|
+
*
|
|
15
|
+
* @module agents/adapters/AgentLLMAdapter
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.AgentLLMAdapter = void 0;
|
|
19
|
+
exports.createAgentLLM = createAgentLLM;
|
|
20
|
+
const IAgentLLM_1 = require("../interfaces/IAgentLLM");
|
|
21
|
+
/**
|
|
22
|
+
* AgentLLMAdapter - Implementation of IAgentLLM
|
|
23
|
+
*
|
|
24
|
+
* This adapter wraps any ILLMProvider and exposes the simplified IAgentLLM interface.
|
|
25
|
+
* It handles:
|
|
26
|
+
* - Message construction from simple prompts
|
|
27
|
+
* - Usage statistics tracking
|
|
28
|
+
* - Complexity-based routing (when HybridRouter is available)
|
|
29
|
+
* - Error translation to AgentLLMError
|
|
30
|
+
* - Model management
|
|
31
|
+
*/
|
|
32
|
+
class AgentLLMAdapter {
|
|
33
|
+
constructor(config) {
|
|
34
|
+
this.provider = config.provider;
|
|
35
|
+
this.hybridRouter = config.hybridRouter;
|
|
36
|
+
this.agentId = config.agentId || 'unknown-agent';
|
|
37
|
+
// Get provider metadata for defaults
|
|
38
|
+
const metadata = this.provider.getMetadata();
|
|
39
|
+
this.config = {
|
|
40
|
+
defaultModel: config.defaultModel || metadata.models[0] || 'auto',
|
|
41
|
+
defaultTemperature: config.defaultTemperature ?? 0.7,
|
|
42
|
+
defaultMaxTokens: config.defaultMaxTokens ?? 2048,
|
|
43
|
+
debug: config.debug ?? false,
|
|
44
|
+
agentId: config.agentId,
|
|
45
|
+
};
|
|
46
|
+
this.currentModel = this.config.defaultModel;
|
|
47
|
+
// Initialize stats
|
|
48
|
+
this.stats = {
|
|
49
|
+
requestCount: 0,
|
|
50
|
+
tokensUsed: 0,
|
|
51
|
+
costIncurred: 0,
|
|
52
|
+
totalLatency: 0,
|
|
53
|
+
cacheHits: 0,
|
|
54
|
+
cacheMisses: 0,
|
|
55
|
+
localRequests: 0,
|
|
56
|
+
cloudRequests: 0,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Complete a prompt
|
|
61
|
+
*/
|
|
62
|
+
async complete(prompt, options) {
|
|
63
|
+
const startTime = Date.now();
|
|
64
|
+
try {
|
|
65
|
+
// Build LLM completion options
|
|
66
|
+
const completionOptions = this.buildCompletionOptions(prompt, options);
|
|
67
|
+
// Execute completion
|
|
68
|
+
const response = await this.provider.complete(completionOptions);
|
|
69
|
+
// Track usage
|
|
70
|
+
this.trackUsage(response, Date.now() - startTime);
|
|
71
|
+
// Extract and return text
|
|
72
|
+
return this.extractText(response);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
throw this.translateError(error);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Stream a completion
|
|
80
|
+
*/
|
|
81
|
+
async *streamComplete(prompt, options) {
|
|
82
|
+
const startTime = Date.now();
|
|
83
|
+
try {
|
|
84
|
+
// Build completion options with streaming enabled
|
|
85
|
+
const completionOptions = this.buildCompletionOptions(prompt, {
|
|
86
|
+
...options,
|
|
87
|
+
stream: true,
|
|
88
|
+
});
|
|
89
|
+
// Stream from provider
|
|
90
|
+
let totalTokens = 0;
|
|
91
|
+
let fullText = '';
|
|
92
|
+
for await (const event of this.provider.streamComplete(completionOptions)) {
|
|
93
|
+
// Extract text delta
|
|
94
|
+
if (event.type === 'content_block_delta' && event.delta?.type === 'text_delta') {
|
|
95
|
+
const chunk = event.delta.text;
|
|
96
|
+
fullText += chunk;
|
|
97
|
+
yield chunk;
|
|
98
|
+
}
|
|
99
|
+
// Track final usage
|
|
100
|
+
if (event.type === 'message_stop' && event.message) {
|
|
101
|
+
if (event.message.usage) {
|
|
102
|
+
totalTokens = event.message.usage.input_tokens + event.message.usage.output_tokens;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Track completion stats
|
|
107
|
+
this.stats.requestCount++;
|
|
108
|
+
this.stats.tokensUsed += totalTokens;
|
|
109
|
+
this.stats.totalLatency += Date.now() - startTime;
|
|
110
|
+
if (this.config.debug) {
|
|
111
|
+
console.log(`[${this.agentId}] Stream completed: ${totalTokens} tokens, ${Date.now() - startTime}ms`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
throw this.translateError(error);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Generate embeddings
|
|
120
|
+
*/
|
|
121
|
+
async embed(text) {
|
|
122
|
+
try {
|
|
123
|
+
const response = await this.provider.embed({ text });
|
|
124
|
+
return response.embedding;
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
throw this.translateError(error);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get available models
|
|
132
|
+
*/
|
|
133
|
+
async getAvailableModels() {
|
|
134
|
+
try {
|
|
135
|
+
const metadata = this.provider.getMetadata();
|
|
136
|
+
return metadata.models.map(modelId => ({
|
|
137
|
+
id: modelId,
|
|
138
|
+
name: modelId,
|
|
139
|
+
provider: metadata.name,
|
|
140
|
+
capabilities: {
|
|
141
|
+
maxTokens: 4096, // Default, could be model-specific
|
|
142
|
+
streaming: metadata.capabilities.streaming,
|
|
143
|
+
vision: metadata.capabilities.vision,
|
|
144
|
+
functionCalling: false, // Not exposed yet
|
|
145
|
+
},
|
|
146
|
+
cost: metadata.location === 'cloud' ? {
|
|
147
|
+
inputPerMillion: metadata.costs.inputPerMillion,
|
|
148
|
+
outputPerMillion: metadata.costs.outputPerMillion,
|
|
149
|
+
} : undefined,
|
|
150
|
+
}));
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
throw this.translateError(error);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get current model
|
|
158
|
+
*/
|
|
159
|
+
getCurrentModel() {
|
|
160
|
+
return this.currentModel;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Switch model
|
|
164
|
+
*/
|
|
165
|
+
async switchModel(model) {
|
|
166
|
+
// Validate model exists
|
|
167
|
+
const metadata = this.provider.getMetadata();
|
|
168
|
+
if (!metadata.models.includes(model)) {
|
|
169
|
+
throw new IAgentLLM_1.AgentLLMError(`Model '${model}' not available. Available models: ${metadata.models.join(', ')}`, 'MODEL_NOT_FOUND', false);
|
|
170
|
+
}
|
|
171
|
+
this.currentModel = model;
|
|
172
|
+
if (this.config.debug) {
|
|
173
|
+
console.log(`[${this.agentId}] Switched to model: ${model}`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Health check
|
|
178
|
+
*/
|
|
179
|
+
async isHealthy() {
|
|
180
|
+
try {
|
|
181
|
+
const health = await this.provider.healthCheck();
|
|
182
|
+
return health.healthy;
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get usage statistics
|
|
190
|
+
*/
|
|
191
|
+
getUsageStats() {
|
|
192
|
+
const avgLatency = this.stats.requestCount > 0
|
|
193
|
+
? this.stats.totalLatency / this.stats.requestCount
|
|
194
|
+
: 0;
|
|
195
|
+
const totalCacheRequests = this.stats.cacheHits + this.stats.cacheMisses;
|
|
196
|
+
const cacheHitRate = totalCacheRequests > 0
|
|
197
|
+
? this.stats.cacheHits / totalCacheRequests
|
|
198
|
+
: undefined;
|
|
199
|
+
return {
|
|
200
|
+
requestCount: this.stats.requestCount,
|
|
201
|
+
tokensUsed: this.stats.tokensUsed,
|
|
202
|
+
costIncurred: this.stats.costIncurred,
|
|
203
|
+
averageLatency: avgLatency,
|
|
204
|
+
cacheHitRate,
|
|
205
|
+
routingBreakdown: {
|
|
206
|
+
local: this.stats.localRequests,
|
|
207
|
+
cloud: this.stats.cloudRequests,
|
|
208
|
+
cache: this.stats.cacheHits,
|
|
209
|
+
},
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Reset statistics
|
|
214
|
+
*/
|
|
215
|
+
resetStats() {
|
|
216
|
+
this.stats = {
|
|
217
|
+
requestCount: 0,
|
|
218
|
+
tokensUsed: 0,
|
|
219
|
+
costIncurred: 0,
|
|
220
|
+
totalLatency: 0,
|
|
221
|
+
cacheHits: 0,
|
|
222
|
+
cacheMisses: 0,
|
|
223
|
+
localRequests: 0,
|
|
224
|
+
cloudRequests: 0,
|
|
225
|
+
};
|
|
226
|
+
if (this.config.debug) {
|
|
227
|
+
console.log(`[${this.agentId}] Stats reset`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
// ============================================
|
|
231
|
+
// Private Helper Methods
|
|
232
|
+
// ============================================
|
|
233
|
+
/**
|
|
234
|
+
* Build LLMCompletionOptions from simplified AgentCompletionOptions
|
|
235
|
+
*/
|
|
236
|
+
buildCompletionOptions(prompt, options) {
|
|
237
|
+
const systemPrompt = options?.systemPrompt;
|
|
238
|
+
const system = systemPrompt ? [
|
|
239
|
+
{
|
|
240
|
+
type: 'text',
|
|
241
|
+
text: systemPrompt,
|
|
242
|
+
...(options?.cacheKey ? { cache_control: { type: 'ephemeral' } } : {}),
|
|
243
|
+
},
|
|
244
|
+
] : undefined;
|
|
245
|
+
const completionOptions = {
|
|
246
|
+
model: this.currentModel,
|
|
247
|
+
system,
|
|
248
|
+
messages: [
|
|
249
|
+
{
|
|
250
|
+
role: 'user',
|
|
251
|
+
content: prompt,
|
|
252
|
+
},
|
|
253
|
+
],
|
|
254
|
+
maxTokens: options?.maxTokens ?? this.config.defaultMaxTokens,
|
|
255
|
+
temperature: options?.temperature ?? this.config.defaultTemperature,
|
|
256
|
+
stream: options?.stream ?? false,
|
|
257
|
+
metadata: {
|
|
258
|
+
agentId: this.agentId,
|
|
259
|
+
cacheKey: options?.cacheKey,
|
|
260
|
+
complexity: options?.complexity,
|
|
261
|
+
...options?.metadata,
|
|
262
|
+
},
|
|
263
|
+
};
|
|
264
|
+
return completionOptions;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Extract text from LLMCompletionResponse
|
|
268
|
+
*/
|
|
269
|
+
extractText(response) {
|
|
270
|
+
return response.content
|
|
271
|
+
.filter(block => block.type === 'text')
|
|
272
|
+
.map(block => block.text)
|
|
273
|
+
.join('\n');
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Track usage from response
|
|
277
|
+
*/
|
|
278
|
+
trackUsage(response, latency) {
|
|
279
|
+
this.stats.requestCount++;
|
|
280
|
+
this.stats.totalLatency += latency;
|
|
281
|
+
// Track tokens
|
|
282
|
+
const tokens = response.usage.input_tokens + response.usage.output_tokens;
|
|
283
|
+
this.stats.tokensUsed += tokens;
|
|
284
|
+
// Track cost (if available)
|
|
285
|
+
if (this.provider.trackCost) {
|
|
286
|
+
const cost = this.provider.trackCost(response.usage);
|
|
287
|
+
this.stats.costIncurred += cost;
|
|
288
|
+
}
|
|
289
|
+
// Track cache hits/misses
|
|
290
|
+
if (response.usage.cache_read_input_tokens && response.usage.cache_read_input_tokens > 0) {
|
|
291
|
+
this.stats.cacheHits++;
|
|
292
|
+
}
|
|
293
|
+
else if (response.usage.input_tokens > 0) {
|
|
294
|
+
this.stats.cacheMisses++;
|
|
295
|
+
}
|
|
296
|
+
// Track routing (if metadata available from HybridRouter)
|
|
297
|
+
if (response.metadata?.source === 'cache' || response.model === 'ruvector-cache') {
|
|
298
|
+
this.stats.cacheHits++;
|
|
299
|
+
}
|
|
300
|
+
else if (response.metadata?.routingDecision) {
|
|
301
|
+
const decision = response.metadata.routingDecision;
|
|
302
|
+
if (decision.provider === 'local') {
|
|
303
|
+
this.stats.localRequests++;
|
|
304
|
+
}
|
|
305
|
+
else if (decision.provider === 'cloud') {
|
|
306
|
+
this.stats.cloudRequests++;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
if (this.config.debug) {
|
|
310
|
+
console.log(`[${this.agentId}] Request completed: ${tokens} tokens, ${latency}ms, cost: $${this.stats.costIncurred.toFixed(6)}`);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Translate provider errors to AgentLLMError
|
|
315
|
+
*/
|
|
316
|
+
translateError(error) {
|
|
317
|
+
if (error instanceof IAgentLLM_1.AgentLLMError) {
|
|
318
|
+
return error;
|
|
319
|
+
}
|
|
320
|
+
// Check if it's an LLMProviderError
|
|
321
|
+
const providerError = error;
|
|
322
|
+
if (providerError.name === 'LLMProviderError') {
|
|
323
|
+
let code;
|
|
324
|
+
switch (providerError.code) {
|
|
325
|
+
case 'PROVIDER_UNAVAILABLE':
|
|
326
|
+
case 'NO_PROVIDERS':
|
|
327
|
+
case 'NOT_INITIALIZED':
|
|
328
|
+
code = 'UNAVAILABLE';
|
|
329
|
+
break;
|
|
330
|
+
case 'UNSUPPORTED':
|
|
331
|
+
code = 'UNSUPPORTED';
|
|
332
|
+
break;
|
|
333
|
+
default:
|
|
334
|
+
code = 'REQUEST_FAILED';
|
|
335
|
+
}
|
|
336
|
+
return new IAgentLLM_1.AgentLLMError(providerError.message, code, providerError.retryable, providerError.cause);
|
|
337
|
+
}
|
|
338
|
+
// Generic error
|
|
339
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
340
|
+
return new IAgentLLM_1.AgentLLMError(`LLM request failed: ${message}`, 'REQUEST_FAILED', false, error instanceof Error ? error : undefined);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
exports.AgentLLMAdapter = AgentLLMAdapter;
|
|
344
|
+
/**
|
|
345
|
+
* Factory function to create AgentLLMAdapter
|
|
346
|
+
*
|
|
347
|
+
* @param provider - The LLM provider to wrap
|
|
348
|
+
* @param config - Optional configuration
|
|
349
|
+
* @returns IAgentLLM instance
|
|
350
|
+
*
|
|
351
|
+
* @example
|
|
352
|
+
* ```typescript
|
|
353
|
+
* const llm = createAgentLLM(ruvllmProvider, {
|
|
354
|
+
* agentId: 'test-generator-1',
|
|
355
|
+
* defaultModel: 'llama-3.2-3b-instruct',
|
|
356
|
+
* defaultTemperature: 0.2
|
|
357
|
+
* });
|
|
358
|
+
* ```
|
|
359
|
+
*/
|
|
360
|
+
function createAgentLLM(provider, config) {
|
|
361
|
+
return new AgentLLMAdapter({
|
|
362
|
+
provider,
|
|
363
|
+
...config,
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
//# sourceMappingURL=AgentLLMAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentLLMAdapter.js","sourceRoot":"","sources":["../../../src/agents/adapters/AgentLLMAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,4 +11,5 @@ export { LifecycleManagerAdapter, createLifecycleAdapter, } from './LifecycleMan
|
|
|
11
11
|
export { MemoryServiceAdapter, createMemoryAdapter, type AgentLocalMemoryStrategy, } from './MemoryServiceAdapter';
|
|
12
12
|
export { LearningEngineAdapter, createLearningAdapter, } from './LearningEngineAdapter';
|
|
13
13
|
export { CoordinatorAdapter, createCoordinationAdapter, } from './CoordinatorAdapter';
|
|
14
|
+
export { AgentLLMAdapter, createAgentLLM, type AgentLLMAdapterConfig, } from './AgentLLMAdapter';
|
|
14
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,eAAe,EACf,cAAc,EACd,KAAK,qBAAqB,GAC3B,MAAM,mBAAmB,CAAC"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* @version 1.0.0
|
|
10
10
|
*/
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.createCoordinationAdapter = exports.CoordinatorAdapter = exports.createLearningAdapter = exports.LearningEngineAdapter = exports.createMemoryAdapter = exports.MemoryServiceAdapter = exports.createLifecycleAdapter = exports.LifecycleManagerAdapter = void 0;
|
|
12
|
+
exports.createAgentLLM = exports.AgentLLMAdapter = exports.createCoordinationAdapter = exports.CoordinatorAdapter = exports.createLearningAdapter = exports.LearningEngineAdapter = exports.createMemoryAdapter = exports.MemoryServiceAdapter = exports.createLifecycleAdapter = exports.LifecycleManagerAdapter = void 0;
|
|
13
13
|
var LifecycleManagerAdapter_1 = require("./LifecycleManagerAdapter");
|
|
14
14
|
Object.defineProperty(exports, "LifecycleManagerAdapter", { enumerable: true, get: function () { return LifecycleManagerAdapter_1.LifecycleManagerAdapter; } });
|
|
15
15
|
Object.defineProperty(exports, "createLifecycleAdapter", { enumerable: true, get: function () { return LifecycleManagerAdapter_1.createLifecycleAdapter; } });
|
|
@@ -22,4 +22,8 @@ Object.defineProperty(exports, "createLearningAdapter", { enumerable: true, get:
|
|
|
22
22
|
var CoordinatorAdapter_1 = require("./CoordinatorAdapter");
|
|
23
23
|
Object.defineProperty(exports, "CoordinatorAdapter", { enumerable: true, get: function () { return CoordinatorAdapter_1.CoordinatorAdapter; } });
|
|
24
24
|
Object.defineProperty(exports, "createCoordinationAdapter", { enumerable: true, get: function () { return CoordinatorAdapter_1.createCoordinationAdapter; } });
|
|
25
|
+
// LLM Adapter (Phase 1.2.2 - LLM Independence)
|
|
26
|
+
var AgentLLMAdapter_1 = require("./AgentLLMAdapter");
|
|
27
|
+
Object.defineProperty(exports, "AgentLLMAdapter", { enumerable: true, get: function () { return AgentLLMAdapter_1.AgentLLMAdapter; } });
|
|
28
|
+
Object.defineProperty(exports, "createAgentLLM", { enumerable: true, get: function () { return AgentLLMAdapter_1.createAgentLLM; } });
|
|
25
29
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/adapters/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,qEAGmC;AAFjC,kIAAA,uBAAuB,OAAA;AACvB,iIAAA,sBAAsB,OAAA;AAGxB,+DAIgC;AAH9B,4HAAA,oBAAoB,OAAA;AACpB,2HAAA,mBAAmB,OAAA;AAIrB,iEAGiC;AAF/B,8HAAA,qBAAqB,OAAA;AACrB,8HAAA,qBAAqB,OAAA;AAGvB,2DAG8B;AAF5B,wHAAA,kBAAkB,OAAA;AAClB,+HAAA,yBAAyB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/adapters/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,qEAGmC;AAFjC,kIAAA,uBAAuB,OAAA;AACvB,iIAAA,sBAAsB,OAAA;AAGxB,+DAIgC;AAH9B,4HAAA,oBAAoB,OAAA;AACpB,2HAAA,mBAAmB,OAAA;AAIrB,iEAGiC;AAF/B,8HAAA,qBAAqB,OAAA;AACrB,8HAAA,qBAAqB,OAAA;AAGvB,2DAG8B;AAF5B,wHAAA,kBAAkB,OAAA;AAClB,+HAAA,yBAAyB,OAAA;AAG3B,+CAA+C;AAC/C,qDAI2B;AAHzB,kHAAA,eAAe,OAAA;AACf,iHAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent LLM Interface - Simplified API for QE Agents
|
|
3
|
+
*
|
|
4
|
+
* Phase 1.2.2: Provides a clean, agent-friendly abstraction over LLM providers
|
|
5
|
+
* Agents should ONLY import this interface, never specific provider implementations.
|
|
6
|
+
*
|
|
7
|
+
* Benefits:
|
|
8
|
+
* - Simple, focused API for agent needs
|
|
9
|
+
* - LLM provider independence (swap providers without changing agent code)
|
|
10
|
+
* - Automatic complexity-based routing
|
|
11
|
+
* - Built-in usage tracking
|
|
12
|
+
* - Cache-aware operations
|
|
13
|
+
*
|
|
14
|
+
* @module agents/interfaces/IAgentLLM
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Agent completion options - simplified from LLMCompletionOptions
|
|
18
|
+
*/
|
|
19
|
+
export interface AgentCompletionOptions {
|
|
20
|
+
/** Sampling temperature (0.0-1.0, default: 0.7) */
|
|
21
|
+
temperature?: number;
|
|
22
|
+
/** Maximum tokens to generate (default: provider-specific) */
|
|
23
|
+
maxTokens?: number;
|
|
24
|
+
/** System prompt to set context */
|
|
25
|
+
systemPrompt?: string;
|
|
26
|
+
/** Cache key for prompt caching (improves latency) */
|
|
27
|
+
cacheKey?: string;
|
|
28
|
+
/** Task complexity hint for intelligent routing */
|
|
29
|
+
complexity?: 'simple' | 'moderate' | 'complex' | 'very_complex';
|
|
30
|
+
/** Enable streaming for long responses */
|
|
31
|
+
stream?: boolean;
|
|
32
|
+
/** Additional metadata for tracking */
|
|
33
|
+
metadata?: Record<string, any>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Agent usage statistics
|
|
37
|
+
*/
|
|
38
|
+
export interface AgentUsageStats {
|
|
39
|
+
/** Total number of requests made */
|
|
40
|
+
requestCount: number;
|
|
41
|
+
/** Total tokens used (input + output) */
|
|
42
|
+
tokensUsed: number;
|
|
43
|
+
/** Estimated cost incurred (in dollars) */
|
|
44
|
+
costIncurred: number;
|
|
45
|
+
/** Average latency per request (in milliseconds) */
|
|
46
|
+
averageLatency: number;
|
|
47
|
+
/** Cache hit rate (0-1) */
|
|
48
|
+
cacheHitRate?: number;
|
|
49
|
+
/** Local vs cloud request breakdown */
|
|
50
|
+
routingBreakdown?: {
|
|
51
|
+
local: number;
|
|
52
|
+
cloud: number;
|
|
53
|
+
cache: number;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Model information
|
|
58
|
+
*/
|
|
59
|
+
export interface AgentModelInfo {
|
|
60
|
+
/** Model identifier */
|
|
61
|
+
id: string;
|
|
62
|
+
/** Human-readable name */
|
|
63
|
+
name: string;
|
|
64
|
+
/** Model provider (local, claude, openrouter, etc.) */
|
|
65
|
+
provider: string;
|
|
66
|
+
/** Model capabilities */
|
|
67
|
+
capabilities: {
|
|
68
|
+
maxTokens: number;
|
|
69
|
+
streaming: boolean;
|
|
70
|
+
vision: boolean;
|
|
71
|
+
functionCalling: boolean;
|
|
72
|
+
};
|
|
73
|
+
/** Cost per million tokens (if applicable) */
|
|
74
|
+
cost?: {
|
|
75
|
+
inputPerMillion: number;
|
|
76
|
+
outputPerMillion: number;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* IAgentLLM - Simplified LLM interface for QE agents
|
|
81
|
+
*
|
|
82
|
+
* This interface provides a clean abstraction over complex LLM providers,
|
|
83
|
+
* allowing agents to make LLM calls without coupling to specific implementations.
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* // Agent using IAgentLLM
|
|
88
|
+
* class TestGeneratorAgent extends BaseAgent {
|
|
89
|
+
* async generateTests(sourceCode: string): Promise<string> {
|
|
90
|
+
* // Simple completion - provider abstracted away
|
|
91
|
+
* const tests = await this.llm.complete(
|
|
92
|
+
* `Generate Jest tests for:\n${sourceCode}`,
|
|
93
|
+
* { complexity: 'moderate', temperature: 0.2 }
|
|
94
|
+
* );
|
|
95
|
+
* return tests;
|
|
96
|
+
* }
|
|
97
|
+
* }
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export interface IAgentLLM {
|
|
101
|
+
/**
|
|
102
|
+
* Complete a prompt with the LLM
|
|
103
|
+
*
|
|
104
|
+
* This is the primary method agents should use for LLM interactions.
|
|
105
|
+
* The underlying provider is automatically selected based on complexity
|
|
106
|
+
* and availability.
|
|
107
|
+
*
|
|
108
|
+
* @param prompt - The prompt to complete
|
|
109
|
+
* @param options - Optional completion parameters
|
|
110
|
+
* @returns The completion text
|
|
111
|
+
* @throws {Error} If no provider is available or request fails
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```typescript
|
|
115
|
+
* const result = await llm.complete(
|
|
116
|
+
* "Explain this error: TypeError: undefined is not a function",
|
|
117
|
+
* { complexity: 'simple', maxTokens: 500 }
|
|
118
|
+
* );
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
complete(prompt: string, options?: AgentCompletionOptions): Promise<string>;
|
|
122
|
+
/**
|
|
123
|
+
* Stream a completion for long responses
|
|
124
|
+
*
|
|
125
|
+
* Useful for interactive scenarios where partial results are valuable.
|
|
126
|
+
*
|
|
127
|
+
* @param prompt - The prompt to complete
|
|
128
|
+
* @param options - Optional completion parameters
|
|
129
|
+
* @returns Async iterator yielding text chunks
|
|
130
|
+
* @throws {Error} If streaming not supported or request fails
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```typescript
|
|
134
|
+
* for await (const chunk of llm.streamComplete(prompt, { temperature: 0.7 })) {
|
|
135
|
+
* process.stdout.write(chunk);
|
|
136
|
+
* }
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
streamComplete(prompt: string, options?: AgentCompletionOptions): AsyncIterableIterator<string>;
|
|
140
|
+
/**
|
|
141
|
+
* Generate embeddings for semantic tasks
|
|
142
|
+
*
|
|
143
|
+
* Use this for similarity search, clustering, or semantic analysis.
|
|
144
|
+
* Always uses local provider for privacy and cost efficiency.
|
|
145
|
+
*
|
|
146
|
+
* @param text - Text to embed
|
|
147
|
+
* @returns Embedding vector (typically 384-1536 dimensions)
|
|
148
|
+
* @throws {Error} If embeddings not supported
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* ```typescript
|
|
152
|
+
* const embedding = await llm.embed("test pattern for login validation");
|
|
153
|
+
* await patternStore.store(embedding, metadata);
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
embed(text: string): Promise<number[]>;
|
|
157
|
+
/**
|
|
158
|
+
* Get list of available models
|
|
159
|
+
*
|
|
160
|
+
* Returns models that are currently accessible based on configured providers.
|
|
161
|
+
*
|
|
162
|
+
* @returns Array of available model information
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* ```typescript
|
|
166
|
+
* const models = await llm.getAvailableModels();
|
|
167
|
+
* console.log(`Available: ${models.map(m => m.name).join(', ')}`);
|
|
168
|
+
* ```
|
|
169
|
+
*/
|
|
170
|
+
getAvailableModels(): Promise<AgentModelInfo[]>;
|
|
171
|
+
/**
|
|
172
|
+
* Get currently selected model
|
|
173
|
+
*
|
|
174
|
+
* @returns Current model identifier
|
|
175
|
+
*
|
|
176
|
+
* @example
|
|
177
|
+
* ```typescript
|
|
178
|
+
* const current = llm.getCurrentModel();
|
|
179
|
+
* console.log(`Using model: ${current}`);
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
getCurrentModel(): string;
|
|
183
|
+
/**
|
|
184
|
+
* Switch to a different model
|
|
185
|
+
*
|
|
186
|
+
* Changes the active model for subsequent completions.
|
|
187
|
+
*
|
|
188
|
+
* @param model - Model identifier to switch to
|
|
189
|
+
* @throws {Error} If model is not available
|
|
190
|
+
*
|
|
191
|
+
* @example
|
|
192
|
+
* ```typescript
|
|
193
|
+
* await llm.switchModel('claude-sonnet-4');
|
|
194
|
+
* ```
|
|
195
|
+
*/
|
|
196
|
+
switchModel(model: string): Promise<void>;
|
|
197
|
+
/**
|
|
198
|
+
* Health check for LLM availability
|
|
199
|
+
*
|
|
200
|
+
* Verifies that at least one LLM provider is operational.
|
|
201
|
+
*
|
|
202
|
+
* @returns True if LLM is available and healthy
|
|
203
|
+
*
|
|
204
|
+
* @example
|
|
205
|
+
* ```typescript
|
|
206
|
+
* if (await llm.isHealthy()) {
|
|
207
|
+
* // Proceed with LLM-based approach
|
|
208
|
+
* } else {
|
|
209
|
+
* // Fallback to algorithmic approach
|
|
210
|
+
* }
|
|
211
|
+
* ```
|
|
212
|
+
*/
|
|
213
|
+
isHealthy(): Promise<boolean>;
|
|
214
|
+
/**
|
|
215
|
+
* Get usage statistics for this agent's LLM calls
|
|
216
|
+
*
|
|
217
|
+
* Provides insights into token usage, costs, and performance.
|
|
218
|
+
*
|
|
219
|
+
* @returns Aggregated usage statistics
|
|
220
|
+
*
|
|
221
|
+
* @example
|
|
222
|
+
* ```typescript
|
|
223
|
+
* const stats = llm.getUsageStats();
|
|
224
|
+
* console.log(`Tokens used: ${stats.tokensUsed}`);
|
|
225
|
+
* console.log(`Cost: $${stats.costIncurred.toFixed(4)}`);
|
|
226
|
+
* console.log(`Cache hit rate: ${(stats.cacheHitRate * 100).toFixed(1)}%`);
|
|
227
|
+
* ```
|
|
228
|
+
*/
|
|
229
|
+
getUsageStats(): AgentUsageStats;
|
|
230
|
+
/**
|
|
231
|
+
* Reset usage statistics
|
|
232
|
+
*
|
|
233
|
+
* Useful for per-task or per-session tracking.
|
|
234
|
+
*
|
|
235
|
+
* @example
|
|
236
|
+
* ```typescript
|
|
237
|
+
* llm.resetStats();
|
|
238
|
+
* await performTask();
|
|
239
|
+
* const taskStats = llm.getUsageStats();
|
|
240
|
+
* ```
|
|
241
|
+
*/
|
|
242
|
+
resetStats(): void;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Error thrown by AgentLLM operations
|
|
246
|
+
*/
|
|
247
|
+
export declare class AgentLLMError extends Error {
|
|
248
|
+
readonly code: 'UNAVAILABLE' | 'MODEL_NOT_FOUND' | 'REQUEST_FAILED' | 'UNSUPPORTED';
|
|
249
|
+
readonly retryable: boolean;
|
|
250
|
+
readonly cause?: Error | undefined;
|
|
251
|
+
constructor(message: string, code: 'UNAVAILABLE' | 'MODEL_NOT_FOUND' | 'REQUEST_FAILED' | 'UNSUPPORTED', retryable?: boolean, cause?: Error | undefined);
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Type guard for AgentLLMError
|
|
255
|
+
*/
|
|
256
|
+
export declare function isAgentLLMError(error: unknown): error is AgentLLMError;
|
|
257
|
+
//# sourceMappingURL=IAgentLLM.d.ts.map
|