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.
Files changed (170) hide show
  1. package/CHANGELOG.md +156 -0
  2. package/README.md +222 -159
  3. package/dist/agents/BaseAgent.d.ts +19 -0
  4. package/dist/agents/BaseAgent.d.ts.map +1 -1
  5. package/dist/agents/BaseAgent.js +41 -1
  6. package/dist/agents/BaseAgent.js.map +1 -1
  7. package/dist/agents/CodeIntelligenceAgent.d.ts +14 -0
  8. package/dist/agents/CodeIntelligenceAgent.d.ts.map +1 -1
  9. package/dist/agents/CodeIntelligenceAgent.js +66 -0
  10. package/dist/agents/CodeIntelligenceAgent.js.map +1 -1
  11. package/dist/agents/CoverageAnalyzerAgent.d.ts +8 -0
  12. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  13. package/dist/agents/CoverageAnalyzerAgent.js +65 -1
  14. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  15. package/dist/agents/TestGeneratorAgent.d.ts +2 -2
  16. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  17. package/dist/agents/TestGeneratorAgent.js +16 -6
  18. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  19. package/dist/agents/adapters/AgentLLMAdapter.d.ts +127 -0
  20. package/dist/agents/adapters/AgentLLMAdapter.d.ts.map +1 -0
  21. package/dist/agents/adapters/AgentLLMAdapter.js +366 -0
  22. package/dist/agents/adapters/AgentLLMAdapter.js.map +1 -0
  23. package/dist/agents/adapters/index.d.ts +1 -0
  24. package/dist/agents/adapters/index.d.ts.map +1 -1
  25. package/dist/agents/adapters/index.js +5 -1
  26. package/dist/agents/adapters/index.js.map +1 -1
  27. package/dist/agents/interfaces/IAgentLLM.d.ts +257 -0
  28. package/dist/agents/interfaces/IAgentLLM.d.ts.map +1 -0
  29. package/dist/agents/interfaces/IAgentLLM.js +39 -0
  30. package/dist/agents/interfaces/IAgentLLM.js.map +1 -0
  31. package/dist/agents/interfaces/index.d.ts +10 -0
  32. package/dist/agents/interfaces/index.d.ts.map +1 -0
  33. package/dist/agents/interfaces/index.js +14 -0
  34. package/dist/agents/interfaces/index.js.map +1 -0
  35. package/dist/agents/n8n/N8nBaseAgent.d.ts +18 -0
  36. package/dist/agents/n8n/N8nBaseAgent.d.ts.map +1 -1
  37. package/dist/agents/n8n/N8nBaseAgent.js +80 -0
  38. package/dist/agents/n8n/N8nBaseAgent.js.map +1 -1
  39. package/dist/agents/pool/AgentPool.d.ts +112 -0
  40. package/dist/agents/pool/AgentPool.d.ts.map +1 -0
  41. package/dist/agents/pool/AgentPool.js +573 -0
  42. package/dist/agents/pool/AgentPool.js.map +1 -0
  43. package/dist/agents/pool/QEAgentPoolFactory.d.ts +118 -0
  44. package/dist/agents/pool/QEAgentPoolFactory.d.ts.map +1 -0
  45. package/dist/agents/pool/QEAgentPoolFactory.js +251 -0
  46. package/dist/agents/pool/QEAgentPoolFactory.js.map +1 -0
  47. package/dist/agents/pool/index.d.ts +34 -0
  48. package/dist/agents/pool/index.d.ts.map +1 -0
  49. package/dist/agents/pool/index.js +44 -0
  50. package/dist/agents/pool/index.js.map +1 -0
  51. package/dist/agents/pool/types.d.ts +227 -0
  52. package/dist/agents/pool/types.d.ts.map +1 -0
  53. package/dist/agents/pool/types.js +28 -0
  54. package/dist/agents/pool/types.js.map +1 -0
  55. package/dist/cli/commands/providers.d.ts +50 -0
  56. package/dist/cli/commands/providers.d.ts.map +1 -0
  57. package/dist/cli/commands/providers.js +403 -0
  58. package/dist/cli/commands/providers.js.map +1 -0
  59. package/dist/cli/index.js +62 -0
  60. package/dist/cli/index.js.map +1 -1
  61. package/dist/code-intelligence/indexing/FileWatcher.d.ts.map +1 -1
  62. package/dist/code-intelligence/indexing/FileWatcher.js +11 -8
  63. package/dist/code-intelligence/indexing/FileWatcher.js.map +1 -1
  64. package/dist/config/ConfigLoader.d.ts +85 -0
  65. package/dist/config/ConfigLoader.d.ts.map +1 -0
  66. package/dist/config/ConfigLoader.js +420 -0
  67. package/dist/config/ConfigLoader.js.map +1 -0
  68. package/dist/config/ProviderConfig.d.ts +153 -0
  69. package/dist/config/ProviderConfig.d.ts.map +1 -0
  70. package/dist/config/ProviderConfig.js +155 -0
  71. package/dist/config/ProviderConfig.js.map +1 -0
  72. package/dist/config/index.d.ts +35 -0
  73. package/dist/config/index.d.ts.map +1 -0
  74. package/dist/config/index.js +45 -0
  75. package/dist/config/index.js.map +1 -0
  76. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  77. package/dist/mcp/handlers/agent-spawn.d.ts +71 -5
  78. package/dist/mcp/handlers/agent-spawn.d.ts.map +1 -1
  79. package/dist/mcp/handlers/agent-spawn.js +336 -110
  80. package/dist/mcp/handlers/agent-spawn.js.map +1 -1
  81. package/dist/mcp/handlers/fleet-init.d.ts +24 -0
  82. package/dist/mcp/handlers/fleet-init.d.ts.map +1 -1
  83. package/dist/mcp/handlers/fleet-init.js +56 -4
  84. package/dist/mcp/handlers/fleet-init.js.map +1 -1
  85. package/dist/mcp/server-instructions.d.ts +1 -1
  86. package/dist/mcp/server-instructions.js +1 -1
  87. package/dist/mcp/server.d.ts +1 -0
  88. package/dist/mcp/server.d.ts.map +1 -1
  89. package/dist/memory/HNSWPatternStore.d.ts.map +1 -1
  90. package/dist/memory/HNSWPatternStore.js +23 -0
  91. package/dist/memory/HNSWPatternStore.js.map +1 -1
  92. package/dist/memory/RuVectorPatternStore.d.ts +5 -0
  93. package/dist/memory/RuVectorPatternStore.d.ts.map +1 -1
  94. package/dist/memory/RuVectorPatternStore.js +11 -0
  95. package/dist/memory/RuVectorPatternStore.js.map +1 -1
  96. package/dist/plugins/BasePlugin.d.ts +111 -0
  97. package/dist/plugins/BasePlugin.d.ts.map +1 -0
  98. package/dist/plugins/BasePlugin.js +154 -0
  99. package/dist/plugins/BasePlugin.js.map +1 -0
  100. package/dist/plugins/PluginManager.d.ts +145 -0
  101. package/dist/plugins/PluginManager.d.ts.map +1 -0
  102. package/dist/plugins/PluginManager.js +862 -0
  103. package/dist/plugins/PluginManager.js.map +1 -0
  104. package/dist/plugins/adapters/McpToolsPlugin.d.ts +98 -0
  105. package/dist/plugins/adapters/McpToolsPlugin.d.ts.map +1 -0
  106. package/dist/plugins/adapters/McpToolsPlugin.js +518 -0
  107. package/dist/plugins/adapters/McpToolsPlugin.js.map +1 -0
  108. package/dist/plugins/adapters/PlaywrightPlugin.d.ts +63 -0
  109. package/dist/plugins/adapters/PlaywrightPlugin.d.ts.map +1 -0
  110. package/dist/plugins/adapters/PlaywrightPlugin.js +451 -0
  111. package/dist/plugins/adapters/PlaywrightPlugin.js.map +1 -0
  112. package/dist/plugins/adapters/VitestPlugin.d.ts +74 -0
  113. package/dist/plugins/adapters/VitestPlugin.d.ts.map +1 -0
  114. package/dist/plugins/adapters/VitestPlugin.js +589 -0
  115. package/dist/plugins/adapters/VitestPlugin.js.map +1 -0
  116. package/dist/plugins/adapters/index.d.ts +8 -0
  117. package/dist/plugins/adapters/index.d.ts.map +1 -0
  118. package/dist/plugins/adapters/index.js +17 -0
  119. package/dist/plugins/adapters/index.js.map +1 -0
  120. package/dist/plugins/index.d.ts +32 -0
  121. package/dist/plugins/index.d.ts.map +1 -0
  122. package/dist/plugins/index.js +48 -0
  123. package/dist/plugins/index.js.map +1 -0
  124. package/dist/plugins/types.d.ts +528 -0
  125. package/dist/plugins/types.d.ts.map +1 -0
  126. package/dist/plugins/types.js +61 -0
  127. package/dist/plugins/types.js.map +1 -0
  128. package/dist/providers/CostOptimizationStrategies.d.ts +297 -0
  129. package/dist/providers/CostOptimizationStrategies.d.ts.map +1 -0
  130. package/dist/providers/CostOptimizationStrategies.js +831 -0
  131. package/dist/providers/CostOptimizationStrategies.js.map +1 -0
  132. package/dist/providers/HybridRouter.d.ts +142 -5
  133. package/dist/providers/HybridRouter.d.ts.map +1 -1
  134. package/dist/providers/HybridRouter.js +472 -6
  135. package/dist/providers/HybridRouter.js.map +1 -1
  136. package/dist/providers/HybridRouterComplexityIntegration.d.ts +169 -0
  137. package/dist/providers/HybridRouterComplexityIntegration.d.ts.map +1 -0
  138. package/dist/providers/HybridRouterComplexityIntegration.js +319 -0
  139. package/dist/providers/HybridRouterComplexityIntegration.js.map +1 -0
  140. package/dist/providers/HybridRouterModelSelection.d.ts +106 -0
  141. package/dist/providers/HybridRouterModelSelection.d.ts.map +1 -0
  142. package/dist/providers/HybridRouterModelSelection.js +420 -0
  143. package/dist/providers/HybridRouterModelSelection.js.map +1 -0
  144. package/dist/providers/LLMProviderFactory.d.ts +23 -9
  145. package/dist/providers/LLMProviderFactory.d.ts.map +1 -1
  146. package/dist/providers/LLMProviderFactory.js +54 -11
  147. package/dist/providers/LLMProviderFactory.js.map +1 -1
  148. package/dist/providers/OllamaProvider.d.ts +122 -0
  149. package/dist/providers/OllamaProvider.d.ts.map +1 -0
  150. package/dist/providers/OllamaProvider.js +425 -0
  151. package/dist/providers/OllamaProvider.js.map +1 -0
  152. package/dist/providers/index.d.ts +6 -1
  153. package/dist/providers/index.d.ts.map +1 -1
  154. package/dist/providers/index.js +17 -1
  155. package/dist/providers/index.js.map +1 -1
  156. package/dist/routing/ComplexityClassifier.d.ts +266 -0
  157. package/dist/routing/ComplexityClassifier.d.ts.map +1 -0
  158. package/dist/routing/ComplexityClassifier.js +567 -0
  159. package/dist/routing/ComplexityClassifier.js.map +1 -0
  160. package/dist/routing/ModelCapabilityRegistry.d.ts +98 -0
  161. package/dist/routing/ModelCapabilityRegistry.d.ts.map +1 -0
  162. package/dist/routing/ModelCapabilityRegistry.js +216 -0
  163. package/dist/routing/ModelCapabilityRegistry.js.map +1 -0
  164. package/dist/routing/index.d.ts +13 -0
  165. package/dist/routing/index.d.ts.map +1 -0
  166. package/dist/routing/index.js +24 -0
  167. package/dist/routing/index.js.map +1 -0
  168. package/docs/reference/model-capability-registry.md +402 -0
  169. package/docs/reference/provider-config-schema.md +608 -0
  170. 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