agentic-qe 2.1.2 → 2.2.1

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 (190) hide show
  1. package/.claude/skills/agentic-quality-engineering/SKILL.md +4 -4
  2. package/.claude/skills/cicd-pipeline-qe-orchestrator/README.md +14 -11
  3. package/.claude/skills/skills-manifest.json +2 -2
  4. package/CHANGELOG.md +138 -0
  5. package/README.md +92 -214
  6. package/dist/agents/BaseAgent.d.ts +5 -1
  7. package/dist/agents/BaseAgent.d.ts.map +1 -1
  8. package/dist/agents/BaseAgent.js +32 -17
  9. package/dist/agents/BaseAgent.js.map +1 -1
  10. package/dist/agents/index.d.ts.map +1 -1
  11. package/dist/agents/index.js +5 -1
  12. package/dist/agents/index.js.map +1 -1
  13. package/dist/cli/commands/improve/index.d.ts +8 -1
  14. package/dist/cli/commands/improve/index.d.ts.map +1 -1
  15. package/dist/cli/commands/improve/index.js +18 -16
  16. package/dist/cli/commands/improve/index.js.map +1 -1
  17. package/dist/cli/commands/learn/index.d.ts +10 -2
  18. package/dist/cli/commands/learn/index.d.ts.map +1 -1
  19. package/dist/cli/commands/learn/index.js +99 -63
  20. package/dist/cli/commands/learn/index.js.map +1 -1
  21. package/dist/cli/commands/patterns/index.d.ts +8 -1
  22. package/dist/cli/commands/patterns/index.d.ts.map +1 -1
  23. package/dist/cli/commands/patterns/index.js +79 -45
  24. package/dist/cli/commands/patterns/index.js.map +1 -1
  25. package/dist/cli/commands/routing/index.d.ts +5 -0
  26. package/dist/cli/commands/routing/index.d.ts.map +1 -1
  27. package/dist/cli/commands/routing/index.js +11 -10
  28. package/dist/cli/commands/routing/index.js.map +1 -1
  29. package/dist/cli/init/agents.d.ts +1 -1
  30. package/dist/cli/init/agents.js +2 -2
  31. package/dist/cli/init/database-init.d.ts +7 -0
  32. package/dist/cli/init/database-init.d.ts.map +1 -1
  33. package/dist/cli/init/database-init.js +29 -48
  34. package/dist/cli/init/database-init.js.map +1 -1
  35. package/dist/core/di/AgentDependencies.d.ts +127 -0
  36. package/dist/core/di/AgentDependencies.d.ts.map +1 -0
  37. package/dist/core/di/AgentDependencies.js +251 -0
  38. package/dist/core/di/AgentDependencies.js.map +1 -0
  39. package/dist/core/di/DIContainer.d.ts +149 -0
  40. package/dist/core/di/DIContainer.d.ts.map +1 -0
  41. package/dist/core/di/DIContainer.js +333 -0
  42. package/dist/core/di/DIContainer.js.map +1 -0
  43. package/dist/core/di/index.d.ts +11 -0
  44. package/dist/core/di/index.d.ts.map +1 -0
  45. package/dist/core/di/index.js +22 -0
  46. package/dist/core/di/index.js.map +1 -0
  47. package/dist/core/index.d.ts +1 -0
  48. package/dist/core/index.d.ts.map +1 -1
  49. package/dist/core/index.js +11 -1
  50. package/dist/core/index.js.map +1 -1
  51. package/dist/core/memory/HNSWVectorMemory.d.ts +261 -0
  52. package/dist/core/memory/HNSWVectorMemory.d.ts.map +1 -0
  53. package/dist/core/memory/HNSWVectorMemory.js +647 -0
  54. package/dist/core/memory/HNSWVectorMemory.js.map +1 -0
  55. package/dist/core/memory/SwarmMemoryManager.d.ts +7 -0
  56. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  57. package/dist/core/memory/SwarmMemoryManager.js +9 -0
  58. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  59. package/dist/core/memory/index.d.ts +2 -0
  60. package/dist/core/memory/index.d.ts.map +1 -1
  61. package/dist/core/memory/index.js +11 -1
  62. package/dist/core/memory/index.js.map +1 -1
  63. package/dist/learning/ExperienceSharingProtocol.d.ts +243 -0
  64. package/dist/learning/ExperienceSharingProtocol.d.ts.map +1 -0
  65. package/dist/learning/ExperienceSharingProtocol.js +538 -0
  66. package/dist/learning/ExperienceSharingProtocol.js.map +1 -0
  67. package/dist/learning/ExplainableLearning.d.ts +191 -0
  68. package/dist/learning/ExplainableLearning.d.ts.map +1 -0
  69. package/dist/learning/ExplainableLearning.js +441 -0
  70. package/dist/learning/ExplainableLearning.js.map +1 -0
  71. package/dist/learning/GossipPatternSharingProtocol.d.ts +228 -0
  72. package/dist/learning/GossipPatternSharingProtocol.d.ts.map +1 -0
  73. package/dist/learning/GossipPatternSharingProtocol.js +590 -0
  74. package/dist/learning/GossipPatternSharingProtocol.js.map +1 -0
  75. package/dist/learning/LearningEngine.d.ts +104 -4
  76. package/dist/learning/LearningEngine.d.ts.map +1 -1
  77. package/dist/learning/LearningEngine.js +350 -16
  78. package/dist/learning/LearningEngine.js.map +1 -1
  79. package/dist/learning/PerformanceOptimizer.d.ts +268 -0
  80. package/dist/learning/PerformanceOptimizer.d.ts.map +1 -0
  81. package/dist/learning/PerformanceOptimizer.js +552 -0
  82. package/dist/learning/PerformanceOptimizer.js.map +1 -0
  83. package/dist/learning/PrivacyManager.d.ts +197 -0
  84. package/dist/learning/PrivacyManager.d.ts.map +1 -0
  85. package/dist/learning/PrivacyManager.js +551 -0
  86. package/dist/learning/PrivacyManager.js.map +1 -0
  87. package/dist/learning/QLearning.d.ts +38 -125
  88. package/dist/learning/QLearning.d.ts.map +1 -1
  89. package/dist/learning/QLearning.js +46 -267
  90. package/dist/learning/QLearning.js.map +1 -1
  91. package/dist/learning/QLearningLegacy.d.ts +154 -0
  92. package/dist/learning/QLearningLegacy.d.ts.map +1 -0
  93. package/dist/learning/QLearningLegacy.js +337 -0
  94. package/dist/learning/QLearningLegacy.js.map +1 -0
  95. package/dist/learning/TransferLearningManager.d.ts +212 -0
  96. package/dist/learning/TransferLearningManager.d.ts.map +1 -0
  97. package/dist/learning/TransferLearningManager.js +497 -0
  98. package/dist/learning/TransferLearningManager.js.map +1 -0
  99. package/dist/learning/algorithms/AbstractRLLearner.d.ts +162 -0
  100. package/dist/learning/algorithms/AbstractRLLearner.d.ts.map +1 -0
  101. package/dist/learning/algorithms/AbstractRLLearner.js +300 -0
  102. package/dist/learning/algorithms/AbstractRLLearner.js.map +1 -0
  103. package/dist/learning/algorithms/ActorCriticLearner.d.ts +201 -0
  104. package/dist/learning/algorithms/ActorCriticLearner.d.ts.map +1 -0
  105. package/dist/learning/algorithms/ActorCriticLearner.js +447 -0
  106. package/dist/learning/algorithms/ActorCriticLearner.js.map +1 -0
  107. package/dist/learning/algorithms/MAMLMetaLearner.d.ts +218 -0
  108. package/dist/learning/algorithms/MAMLMetaLearner.d.ts.map +1 -0
  109. package/dist/learning/algorithms/MAMLMetaLearner.js +532 -0
  110. package/dist/learning/algorithms/MAMLMetaLearner.js.map +1 -0
  111. package/dist/learning/algorithms/PPOLearner.d.ts +207 -0
  112. package/dist/learning/algorithms/PPOLearner.d.ts.map +1 -0
  113. package/dist/learning/algorithms/PPOLearner.js +490 -0
  114. package/dist/learning/algorithms/PPOLearner.js.map +1 -0
  115. package/dist/learning/algorithms/QLearning.d.ts +68 -0
  116. package/dist/learning/algorithms/QLearning.d.ts.map +1 -0
  117. package/dist/learning/algorithms/QLearning.js +116 -0
  118. package/dist/learning/algorithms/QLearning.js.map +1 -0
  119. package/dist/learning/algorithms/SARSALearner.d.ts +107 -0
  120. package/dist/learning/algorithms/SARSALearner.d.ts.map +1 -0
  121. package/dist/learning/algorithms/SARSALearner.js +252 -0
  122. package/dist/learning/algorithms/SARSALearner.js.map +1 -0
  123. package/dist/learning/algorithms/index.d.ts +32 -0
  124. package/dist/learning/algorithms/index.d.ts.map +1 -0
  125. package/dist/learning/algorithms/index.js +50 -0
  126. package/dist/learning/algorithms/index.js.map +1 -0
  127. package/dist/learning/index.d.ts +11 -0
  128. package/dist/learning/index.d.ts.map +1 -1
  129. package/dist/learning/index.js +31 -1
  130. package/dist/learning/index.js.map +1 -1
  131. package/dist/learning/types.d.ts +2 -0
  132. package/dist/learning/types.d.ts.map +1 -1
  133. package/dist/mcp/server-instructions.d.ts +1 -1
  134. package/dist/mcp/server-instructions.js +1 -1
  135. package/dist/memory/DistributedPatternLibrary.d.ts +159 -0
  136. package/dist/memory/DistributedPatternLibrary.d.ts.map +1 -0
  137. package/dist/memory/DistributedPatternLibrary.js +370 -0
  138. package/dist/memory/DistributedPatternLibrary.js.map +1 -0
  139. package/dist/memory/PatternQualityScorer.d.ts +169 -0
  140. package/dist/memory/PatternQualityScorer.d.ts.map +1 -0
  141. package/dist/memory/PatternQualityScorer.js +327 -0
  142. package/dist/memory/PatternQualityScorer.js.map +1 -0
  143. package/dist/memory/PatternReplicationService.d.ts +187 -0
  144. package/dist/memory/PatternReplicationService.d.ts.map +1 -0
  145. package/dist/memory/PatternReplicationService.js +392 -0
  146. package/dist/memory/PatternReplicationService.js.map +1 -0
  147. package/dist/providers/ClaudeProvider.d.ts +98 -0
  148. package/dist/providers/ClaudeProvider.d.ts.map +1 -0
  149. package/dist/providers/ClaudeProvider.js +418 -0
  150. package/dist/providers/ClaudeProvider.js.map +1 -0
  151. package/dist/providers/HybridRouter.d.ts +217 -0
  152. package/dist/providers/HybridRouter.d.ts.map +1 -0
  153. package/dist/providers/HybridRouter.js +679 -0
  154. package/dist/providers/HybridRouter.js.map +1 -0
  155. package/dist/providers/ILLMProvider.d.ts +287 -0
  156. package/dist/providers/ILLMProvider.d.ts.map +1 -0
  157. package/dist/providers/ILLMProvider.js +33 -0
  158. package/dist/providers/ILLMProvider.js.map +1 -0
  159. package/dist/providers/LLMProviderFactory.d.ts +154 -0
  160. package/dist/providers/LLMProviderFactory.d.ts.map +1 -0
  161. package/dist/providers/LLMProviderFactory.js +426 -0
  162. package/dist/providers/LLMProviderFactory.js.map +1 -0
  163. package/dist/providers/RuvllmProvider.d.ts +107 -0
  164. package/dist/providers/RuvllmProvider.d.ts.map +1 -0
  165. package/dist/providers/RuvllmProvider.js +417 -0
  166. package/dist/providers/RuvllmProvider.js.map +1 -0
  167. package/dist/providers/index.d.ts +32 -0
  168. package/dist/providers/index.d.ts.map +1 -0
  169. package/dist/providers/index.js +75 -0
  170. package/dist/providers/index.js.map +1 -0
  171. package/dist/telemetry/LearningTelemetry.d.ts +190 -0
  172. package/dist/telemetry/LearningTelemetry.d.ts.map +1 -0
  173. package/dist/telemetry/LearningTelemetry.js +403 -0
  174. package/dist/telemetry/LearningTelemetry.js.map +1 -0
  175. package/dist/telemetry/index.d.ts +1 -0
  176. package/dist/telemetry/index.d.ts.map +1 -1
  177. package/dist/telemetry/index.js +20 -2
  178. package/dist/telemetry/index.js.map +1 -1
  179. package/dist/telemetry/instrumentation/agent.d.ts +1 -1
  180. package/dist/telemetry/instrumentation/agent.js +1 -1
  181. package/dist/telemetry/instrumentation/index.d.ts +1 -1
  182. package/dist/telemetry/instrumentation/index.js +1 -1
  183. package/dist/utils/math.d.ts +11 -0
  184. package/dist/utils/math.d.ts.map +1 -0
  185. package/dist/utils/math.js +16 -0
  186. package/dist/utils/math.js.map +1 -0
  187. package/docs/reference/agents.md +1 -1
  188. package/docs/reference/skills.md +3 -3
  189. package/docs/reference/usage.md +4 -4
  190. package/package.json +1 -1
@@ -0,0 +1,418 @@
1
+ "use strict";
2
+ /**
3
+ * ClaudeProvider - Anthropic Claude API Implementation
4
+ *
5
+ * Provides LLM capabilities through Anthropic's Claude API with support for:
6
+ * - Prompt caching for cost optimization
7
+ * - Streaming responses
8
+ * - Token counting
9
+ * - Health checks
10
+ *
11
+ * @module providers/ClaudeProvider
12
+ * @version 1.0.0
13
+ */
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.ClaudeProvider = void 0;
19
+ const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
20
+ const ILLMProvider_1 = require("./ILLMProvider");
21
+ const Logger_1 = require("../utils/Logger");
22
+ /**
23
+ * Claude model pricing (per million tokens)
24
+ */
25
+ const CLAUDE_PRICING = {
26
+ 'claude-sonnet-4-20250514': { input: 3.0, output: 15.0 },
27
+ 'claude-opus-4-20250514': { input: 15.0, output: 75.0 },
28
+ 'claude-3-5-sonnet-20241022': { input: 3.0, output: 15.0 },
29
+ 'claude-3-5-haiku-20241022': { input: 0.8, output: 4.0 },
30
+ 'claude-3-opus-20240229': { input: 15.0, output: 75.0 },
31
+ 'claude-3-sonnet-20240229': { input: 3.0, output: 15.0 },
32
+ 'claude-3-haiku-20240307': { input: 0.25, output: 1.25 },
33
+ };
34
+ /**
35
+ * ClaudeProvider - Anthropic Claude API implementation of ILLMProvider
36
+ *
37
+ * This provider enables access to Claude models through the Anthropic API
38
+ * with full support for caching, streaming, and cost tracking.
39
+ */
40
+ class ClaudeProvider {
41
+ constructor(config = {}) {
42
+ this.logger = Logger_1.Logger.getInstance();
43
+ this.config = {
44
+ name: config.name || 'claude',
45
+ debug: config.debug ?? false,
46
+ timeout: config.timeout ?? 60000,
47
+ maxRetries: config.maxRetries ?? 3,
48
+ apiKey: config.apiKey,
49
+ defaultModel: config.defaultModel || 'claude-sonnet-4-20250514',
50
+ enableCaching: config.enableCaching ?? true,
51
+ baseUrl: config.baseUrl
52
+ };
53
+ this.isInitialized = false;
54
+ this.totalCost = 0;
55
+ this.requestCount = 0;
56
+ }
57
+ /**
58
+ * Initialize the Claude provider
59
+ */
60
+ async initialize() {
61
+ if (this.isInitialized) {
62
+ this.logger.warn('ClaudeProvider already initialized');
63
+ return;
64
+ }
65
+ const apiKey = this.config.apiKey || process.env.ANTHROPIC_API_KEY;
66
+ if (!apiKey) {
67
+ throw new ILLMProvider_1.LLMProviderError('Anthropic API key not provided', 'claude', 'AUTH_ERROR', false);
68
+ }
69
+ this.client = new sdk_1.default({
70
+ apiKey,
71
+ timeout: this.config.timeout,
72
+ maxRetries: this.config.maxRetries,
73
+ ...(this.config.baseUrl ? { baseURL: this.config.baseUrl } : {})
74
+ });
75
+ this.isInitialized = true;
76
+ this.logger.info('ClaudeProvider initialized', {
77
+ model: this.config.defaultModel,
78
+ caching: this.config.enableCaching
79
+ });
80
+ }
81
+ /**
82
+ * Complete a prompt
83
+ */
84
+ async complete(options) {
85
+ this.ensureInitialized();
86
+ const model = options.model || this.config.defaultModel;
87
+ const startTime = Date.now();
88
+ try {
89
+ // Build messages array
90
+ const messages = options.messages.map(m => {
91
+ // Handle string content directly
92
+ if (typeof m.content === 'string') {
93
+ return {
94
+ role: m.role,
95
+ content: m.content
96
+ };
97
+ }
98
+ // Handle array content - convert to string
99
+ const textContent = m.content
100
+ .filter(c => c.type === 'text')
101
+ .map(c => c.text || '')
102
+ .join('');
103
+ return {
104
+ role: m.role,
105
+ content: textContent
106
+ };
107
+ });
108
+ // Build system message if provided
109
+ let systemMessage;
110
+ if (options.system && options.system.length > 0) {
111
+ systemMessage = options.system.map(s => s.text).join('\n\n');
112
+ }
113
+ const response = await this.client.messages.create({
114
+ model,
115
+ messages,
116
+ max_tokens: options.maxTokens || 4096,
117
+ ...(systemMessage ? { system: systemMessage } : {}),
118
+ ...(options.temperature !== undefined ? { temperature: options.temperature } : {})
119
+ });
120
+ this.requestCount++;
121
+ // Extract text content from response
122
+ const content = response.content.map((block) => ({
123
+ type: 'text',
124
+ text: block.type === 'text' ? block.text : ''
125
+ }));
126
+ // Calculate cost
127
+ const cost = this.trackCost({
128
+ input_tokens: response.usage.input_tokens,
129
+ output_tokens: response.usage.output_tokens,
130
+ cache_creation_input_tokens: response.usage.cache_creation_input_tokens,
131
+ cache_read_input_tokens: response.usage.cache_read_input_tokens
132
+ });
133
+ const result = {
134
+ content,
135
+ usage: {
136
+ input_tokens: response.usage.input_tokens,
137
+ output_tokens: response.usage.output_tokens,
138
+ cache_creation_input_tokens: response.usage.cache_creation_input_tokens,
139
+ cache_read_input_tokens: response.usage.cache_read_input_tokens
140
+ },
141
+ model: response.model,
142
+ stop_reason: response.stop_reason,
143
+ id: response.id,
144
+ metadata: {
145
+ latency: Date.now() - startTime,
146
+ cost
147
+ }
148
+ };
149
+ this.logger.debug('Claude completion successful', {
150
+ model,
151
+ inputTokens: response.usage.input_tokens,
152
+ outputTokens: response.usage.output_tokens,
153
+ latency: result.metadata?.latency
154
+ });
155
+ return result;
156
+ }
157
+ catch (error) {
158
+ const err = error;
159
+ throw new ILLMProvider_1.LLMProviderError(`Claude completion failed: ${err.message}`, 'claude', this.getErrorCode(error), this.isRetryableError(error), err);
160
+ }
161
+ }
162
+ /**
163
+ * Stream a completion
164
+ */
165
+ async *streamComplete(options) {
166
+ this.ensureInitialized();
167
+ const model = options.model || this.config.defaultModel;
168
+ try {
169
+ // Build messages array
170
+ const messages = options.messages.map(m => {
171
+ if (typeof m.content === 'string') {
172
+ return {
173
+ role: m.role,
174
+ content: m.content
175
+ };
176
+ }
177
+ const textContent = m.content
178
+ .filter(c => c.type === 'text')
179
+ .map(c => c.text || '')
180
+ .join('');
181
+ return {
182
+ role: m.role,
183
+ content: textContent
184
+ };
185
+ });
186
+ let systemMessage;
187
+ if (options.system && options.system.length > 0) {
188
+ systemMessage = options.system.map(s => s.text).join('\n\n');
189
+ }
190
+ const stream = this.client.messages.stream({
191
+ model,
192
+ messages,
193
+ max_tokens: options.maxTokens || 4096,
194
+ ...(systemMessage ? { system: systemMessage } : {}),
195
+ ...(options.temperature !== undefined ? { temperature: options.temperature } : {})
196
+ });
197
+ for await (const event of stream) {
198
+ const streamEvent = this.mapStreamEvent(event);
199
+ if (streamEvent) {
200
+ yield streamEvent;
201
+ }
202
+ }
203
+ this.requestCount++;
204
+ }
205
+ catch (error) {
206
+ const err = error;
207
+ throw new ILLMProvider_1.LLMProviderError(`Claude stream failed: ${err.message}`, 'claude', this.getErrorCode(error), this.isRetryableError(error), err);
208
+ }
209
+ }
210
+ /**
211
+ * Generate embeddings (Claude doesn't natively support embeddings)
212
+ */
213
+ async embed(options) {
214
+ throw new ILLMProvider_1.LLMProviderError('Claude does not support native embeddings. Use a dedicated embedding model.', 'claude', 'UNSUPPORTED', false);
215
+ }
216
+ /**
217
+ * Count tokens in text
218
+ */
219
+ async countTokens(options) {
220
+ this.ensureInitialized();
221
+ try {
222
+ // Use Anthropic's token counting endpoint
223
+ const result = await this.client.messages.countTokens({
224
+ model: options.model || this.config.defaultModel,
225
+ messages: [{ role: 'user', content: options.text }]
226
+ });
227
+ return result.input_tokens;
228
+ }
229
+ catch {
230
+ // Fallback: estimate ~4 chars per token
231
+ return Math.ceil(options.text.length / 4);
232
+ }
233
+ }
234
+ /**
235
+ * Health check
236
+ */
237
+ async healthCheck() {
238
+ const startTime = Date.now();
239
+ try {
240
+ if (!this.isInitialized) {
241
+ await this.initialize();
242
+ }
243
+ // Simple health check with minimal tokens
244
+ await this.complete({
245
+ model: this.config.defaultModel,
246
+ messages: [{ role: 'user', content: 'ping' }],
247
+ maxTokens: 5
248
+ });
249
+ return {
250
+ healthy: true,
251
+ latency: Date.now() - startTime,
252
+ timestamp: new Date(),
253
+ metadata: {
254
+ model: this.config.defaultModel,
255
+ requestCount: this.requestCount,
256
+ totalCost: this.totalCost
257
+ }
258
+ };
259
+ }
260
+ catch (error) {
261
+ return {
262
+ healthy: false,
263
+ error: error.message,
264
+ timestamp: new Date()
265
+ };
266
+ }
267
+ }
268
+ /**
269
+ * Get provider metadata
270
+ */
271
+ getMetadata() {
272
+ const pricing = CLAUDE_PRICING[this.config.defaultModel] || { input: 3.0, output: 15.0 };
273
+ return {
274
+ name: 'claude',
275
+ version: '1.0.0',
276
+ models: Object.keys(CLAUDE_PRICING),
277
+ capabilities: {
278
+ streaming: true,
279
+ caching: true,
280
+ embeddings: false,
281
+ vision: true
282
+ },
283
+ costs: {
284
+ inputPerMillion: pricing.input,
285
+ outputPerMillion: pricing.output,
286
+ cacheWriteMultiplier: 1.25,
287
+ cacheReadMultiplier: 0.1
288
+ },
289
+ location: 'cloud'
290
+ };
291
+ }
292
+ /**
293
+ * Shutdown the provider
294
+ */
295
+ async shutdown() {
296
+ this.client = undefined;
297
+ this.isInitialized = false;
298
+ this.logger.info('ClaudeProvider shutdown', {
299
+ totalCost: this.totalCost,
300
+ requestCount: this.requestCount
301
+ });
302
+ }
303
+ /**
304
+ * Track cost for a request
305
+ */
306
+ trackCost(usage) {
307
+ const model = this.config.defaultModel;
308
+ const pricing = CLAUDE_PRICING[model] || { input: 3.0, output: 15.0 };
309
+ let inputCost = (usage.input_tokens / 1000000) * pricing.input;
310
+ const outputCost = (usage.output_tokens / 1000000) * pricing.output;
311
+ // Adjust for cache pricing
312
+ if (usage.cache_creation_input_tokens) {
313
+ const cacheWriteCost = (usage.cache_creation_input_tokens / 1000000) * pricing.input * 1.25;
314
+ inputCost += cacheWriteCost;
315
+ }
316
+ if (usage.cache_read_input_tokens) {
317
+ const cacheReadCost = (usage.cache_read_input_tokens / 1000000) * pricing.input * 0.1;
318
+ inputCost += cacheReadCost;
319
+ }
320
+ const totalCost = inputCost + outputCost;
321
+ this.totalCost += totalCost;
322
+ return totalCost;
323
+ }
324
+ /**
325
+ * Get total cost incurred
326
+ */
327
+ getTotalCost() {
328
+ return this.totalCost;
329
+ }
330
+ /**
331
+ * Ensure provider is initialized
332
+ */
333
+ ensureInitialized() {
334
+ if (!this.isInitialized || !this.client) {
335
+ throw new ILLMProvider_1.LLMProviderError('ClaudeProvider not initialized. Call initialize() first.', 'claude', 'NOT_INITIALIZED', false);
336
+ }
337
+ }
338
+ /**
339
+ * Map Anthropic stream event to LLMStreamEvent
340
+ */
341
+ mapStreamEvent(event) {
342
+ switch (event.type) {
343
+ case 'message_start':
344
+ return {
345
+ type: 'message_start',
346
+ message: {
347
+ id: event.message.id,
348
+ model: event.message.model,
349
+ stop_reason: (event.message.stop_reason ?? undefined),
350
+ usage: event.message.usage ? {
351
+ input_tokens: event.message.usage.input_tokens,
352
+ output_tokens: event.message.usage.output_tokens
353
+ } : undefined
354
+ }
355
+ };
356
+ case 'content_block_start':
357
+ // Only handle text blocks
358
+ if (event.content_block?.type === 'text') {
359
+ return {
360
+ type: 'content_block_start',
361
+ content_block: {
362
+ type: 'text',
363
+ text: event.content_block.text
364
+ }
365
+ };
366
+ }
367
+ return null;
368
+ case 'content_block_delta':
369
+ // Only handle text deltas
370
+ if ('delta' in event && event.delta?.type === 'text_delta') {
371
+ return {
372
+ type: 'content_block_delta',
373
+ delta: {
374
+ type: 'text_delta',
375
+ text: event.delta.text
376
+ }
377
+ };
378
+ }
379
+ return null;
380
+ case 'content_block_stop':
381
+ return { type: 'content_block_stop' };
382
+ case 'message_delta':
383
+ return {
384
+ type: 'message_delta',
385
+ message: {
386
+ usage: event.usage ? {
387
+ input_tokens: 0, // Not available in delta
388
+ output_tokens: event.usage.output_tokens
389
+ } : undefined
390
+ }
391
+ };
392
+ case 'message_stop':
393
+ return { type: 'message_stop' };
394
+ default:
395
+ return null;
396
+ }
397
+ }
398
+ /**
399
+ * Get error code from exception
400
+ */
401
+ getErrorCode(error) {
402
+ if (error instanceof sdk_1.default.APIError) {
403
+ return `API_${error.status}`;
404
+ }
405
+ return 'UNKNOWN';
406
+ }
407
+ /**
408
+ * Check if error is retryable
409
+ */
410
+ isRetryableError(error) {
411
+ if (error instanceof sdk_1.default.APIError) {
412
+ return [429, 500, 502, 503, 504].includes(error.status);
413
+ }
414
+ return false;
415
+ }
416
+ }
417
+ exports.ClaudeProvider = ClaudeProvider;
418
+ //# sourceMappingURL=ClaudeProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaudeProvider.js","sourceRoot":"","sources":["../../src/providers/ClaudeProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,217 @@
1
+ /**
2
+ * HybridRouter - Intelligent LLM Provider Router
3
+ *
4
+ * Provides intelligent routing between local (ruvllm) and cloud (Claude, GPT) providers
5
+ * with circuit breakers, cost optimization, and adaptive learning.
6
+ *
7
+ * Features:
8
+ * - Task complexity analysis for optimal routing
9
+ * - Latency-aware provider selection
10
+ * - Cost tracking and savings estimation
11
+ * - Circuit breaker pattern for failing providers
12
+ * - Priority queuing for urgent requests
13
+ * - Learning from routing outcomes
14
+ * - Privacy-first routing for sensitive data
15
+ *
16
+ * @module providers/HybridRouter
17
+ * @version 1.0.0
18
+ */
19
+ import { ILLMProvider, LLMProviderConfig, LLMCompletionOptions, LLMCompletionResponse, LLMStreamEvent, LLMEmbeddingOptions, LLMEmbeddingResponse, LLMTokenCountOptions, LLMHealthStatus, LLMProviderMetadata } from './ILLMProvider';
20
+ import { ClaudeProviderConfig } from './ClaudeProvider';
21
+ import { RuvllmProviderConfig } from './RuvllmProvider';
22
+ /**
23
+ * Request priority levels
24
+ */
25
+ export declare enum RequestPriority {
26
+ LOW = 0,
27
+ NORMAL = 1,
28
+ HIGH = 2,
29
+ URGENT = 3
30
+ }
31
+ /**
32
+ * Task complexity classification
33
+ */
34
+ export declare enum TaskComplexity {
35
+ SIMPLE = "simple",// Pattern matching, simple Q&A
36
+ MODERATE = "moderate",// Standard reasoning
37
+ COMPLEX = "complex",// Deep reasoning, code generation
38
+ VERY_COMPLEX = "very_complex"
39
+ }
40
+ /**
41
+ * Routing strategy
42
+ */
43
+ export declare enum RoutingStrategy {
44
+ COST_OPTIMIZED = "cost_optimized",// Minimize cost
45
+ LATENCY_OPTIMIZED = "latency_optimized",// Minimize latency
46
+ QUALITY_OPTIMIZED = "quality_optimized",// Maximize quality
47
+ BALANCED = "balanced",// Balance all factors
48
+ PRIVACY_FIRST = "privacy_first"
49
+ }
50
+ /**
51
+ * Routing decision metadata
52
+ */
53
+ export interface RoutingDecision {
54
+ provider: 'local' | 'cloud';
55
+ providerName: string;
56
+ reason: string;
57
+ estimatedCost: number;
58
+ estimatedLatency: number;
59
+ complexity: TaskComplexity;
60
+ priority: RequestPriority;
61
+ timestamp: Date;
62
+ }
63
+ /**
64
+ * Cost savings report
65
+ */
66
+ export interface CostSavingsReport {
67
+ totalRequests: number;
68
+ localRequests: number;
69
+ cloudRequests: number;
70
+ totalCost: number;
71
+ estimatedCloudCost: number;
72
+ savings: number;
73
+ savingsPercentage: number;
74
+ }
75
+ /**
76
+ * Hybrid router configuration
77
+ */
78
+ export interface HybridRouterConfig extends LLMProviderConfig {
79
+ /** Claude provider configuration */
80
+ claude?: ClaudeProviderConfig;
81
+ /** Ruvllm provider configuration */
82
+ ruvllm?: RuvllmProviderConfig;
83
+ /** Default routing strategy */
84
+ defaultStrategy?: RoutingStrategy;
85
+ /** Enable circuit breakers */
86
+ enableCircuitBreaker?: boolean;
87
+ /** Circuit breaker failure threshold */
88
+ circuitBreakerThreshold?: number;
89
+ /** Circuit breaker reset timeout (ms) */
90
+ circuitBreakerTimeout?: number;
91
+ /** Maximum latency for local provider (ms) */
92
+ maxLocalLatency?: number;
93
+ /** Enable learning from outcomes */
94
+ enableLearning?: boolean;
95
+ /** Privacy-sensitive keywords for automatic local routing */
96
+ privacyKeywords?: string[];
97
+ }
98
+ /**
99
+ * HybridRouter - Intelligent provider routing implementation
100
+ *
101
+ * Routes LLM requests between local and cloud providers based on:
102
+ * - Task complexity and required capabilities
103
+ * - Latency and cost constraints
104
+ * - Provider health and circuit breaker state
105
+ * - Request priority
106
+ * - Privacy requirements
107
+ */
108
+ export declare class HybridRouter implements ILLMProvider {
109
+ private readonly logger;
110
+ private config;
111
+ private localProvider?;
112
+ private cloudProvider?;
113
+ private circuitBreakers;
114
+ private routingHistory;
115
+ private isInitialized;
116
+ private totalCost;
117
+ private requestCount;
118
+ private localRequestCount;
119
+ private cloudRequestCount;
120
+ constructor(config?: HybridRouterConfig);
121
+ /**
122
+ * Initialize the hybrid router and its providers
123
+ */
124
+ initialize(): Promise<void>;
125
+ /**
126
+ * Complete a prompt with intelligent routing
127
+ */
128
+ complete(options: LLMCompletionOptions): Promise<LLMCompletionResponse>;
129
+ /**
130
+ * Stream completion with routing
131
+ */
132
+ streamComplete(options: LLMCompletionOptions): AsyncIterableIterator<LLMStreamEvent>;
133
+ /**
134
+ * Generate embeddings (prefer local)
135
+ */
136
+ embed(options: LLMEmbeddingOptions): Promise<LLMEmbeddingResponse>;
137
+ /**
138
+ * Count tokens
139
+ */
140
+ countTokens(options: LLMTokenCountOptions): Promise<number>;
141
+ /**
142
+ * Health check all providers
143
+ */
144
+ healthCheck(): Promise<LLMHealthStatus>;
145
+ /**
146
+ * Get metadata (aggregated from all providers)
147
+ */
148
+ getMetadata(): LLMProviderMetadata;
149
+ /**
150
+ * Shutdown all providers
151
+ */
152
+ shutdown(): Promise<void>;
153
+ /**
154
+ * Track cost (aggregated across providers)
155
+ */
156
+ trackCost(usage: LLMCompletionResponse['usage']): number;
157
+ /**
158
+ * Get cost savings report
159
+ */
160
+ getCostSavingsReport(): CostSavingsReport;
161
+ /**
162
+ * Get routing statistics
163
+ */
164
+ getRoutingStats(): {
165
+ totalDecisions: number;
166
+ localDecisions: number;
167
+ cloudDecisions: number;
168
+ averageLocalLatency: number;
169
+ averageCloudLatency: number;
170
+ successRate: number;
171
+ };
172
+ /**
173
+ * Make intelligent routing decision
174
+ */
175
+ private makeRoutingDecision;
176
+ /**
177
+ * Analyze task complexity
178
+ */
179
+ private analyzeComplexity;
180
+ /**
181
+ * Check for privacy-sensitive data
182
+ */
183
+ private containsPrivacySensitiveData;
184
+ /**
185
+ * Check if provider is available (circuit breaker check)
186
+ */
187
+ private isProviderAvailable;
188
+ /**
189
+ * Execute with circuit breaker protection
190
+ */
191
+ private executeWithCircuitBreaker;
192
+ /**
193
+ * Execute fallback to alternative provider
194
+ */
195
+ private executeFallback;
196
+ /**
197
+ * Initialize circuit breaker for a provider
198
+ */
199
+ private initCircuitBreaker;
200
+ /**
201
+ * Create routing decision object
202
+ */
203
+ private createDecision;
204
+ /**
205
+ * Calculate actual cost from response
206
+ */
207
+ private calculateCost;
208
+ /**
209
+ * Record routing outcome for learning
210
+ */
211
+ private recordOutcome;
212
+ /**
213
+ * Ensure router is initialized
214
+ */
215
+ private ensureInitialized;
216
+ }
217
+ //# sourceMappingURL=HybridRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HybridRouter.d.ts","sourceRoot":"","sources":["../../src/providers/HybridRouter.ts"],"names":[],"mappings":"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"}