agentic-qe 2.6.1 → 2.6.3

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 (158) hide show
  1. package/.claude/agents/qe-code-intelligence.md +88 -1
  2. package/CHANGELOG.md +134 -0
  3. package/README.md +222 -159
  4. package/dist/agents/BaseAgent.d.ts +19 -0
  5. package/dist/agents/BaseAgent.d.ts.map +1 -1
  6. package/dist/agents/BaseAgent.js +41 -1
  7. package/dist/agents/BaseAgent.js.map +1 -1
  8. package/dist/agents/CodeIntelligenceAgent.d.ts +18 -1
  9. package/dist/agents/CodeIntelligenceAgent.d.ts.map +1 -1
  10. package/dist/agents/CodeIntelligenceAgent.js +96 -1
  11. package/dist/agents/CodeIntelligenceAgent.js.map +1 -1
  12. package/dist/agents/CoverageAnalyzerAgent.d.ts +8 -0
  13. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  14. package/dist/agents/CoverageAnalyzerAgent.js +65 -1
  15. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  16. package/dist/agents/TestGeneratorAgent.d.ts +2 -2
  17. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  18. package/dist/agents/TestGeneratorAgent.js +16 -6
  19. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  20. package/dist/agents/adapters/AgentLLMAdapter.d.ts +127 -0
  21. package/dist/agents/adapters/AgentLLMAdapter.d.ts.map +1 -0
  22. package/dist/agents/adapters/AgentLLMAdapter.js +366 -0
  23. package/dist/agents/adapters/AgentLLMAdapter.js.map +1 -0
  24. package/dist/agents/adapters/index.d.ts +1 -0
  25. package/dist/agents/adapters/index.d.ts.map +1 -1
  26. package/dist/agents/adapters/index.js +5 -1
  27. package/dist/agents/adapters/index.js.map +1 -1
  28. package/dist/agents/interfaces/IAgentLLM.d.ts +257 -0
  29. package/dist/agents/interfaces/IAgentLLM.d.ts.map +1 -0
  30. package/dist/agents/interfaces/IAgentLLM.js +39 -0
  31. package/dist/agents/interfaces/IAgentLLM.js.map +1 -0
  32. package/dist/agents/interfaces/index.d.ts +10 -0
  33. package/dist/agents/interfaces/index.d.ts.map +1 -0
  34. package/dist/agents/interfaces/index.js +14 -0
  35. package/dist/agents/interfaces/index.js.map +1 -0
  36. package/dist/agents/n8n/N8nBaseAgent.d.ts +18 -0
  37. package/dist/agents/n8n/N8nBaseAgent.d.ts.map +1 -1
  38. package/dist/agents/n8n/N8nBaseAgent.js +80 -0
  39. package/dist/agents/n8n/N8nBaseAgent.js.map +1 -1
  40. package/dist/cli/commands/knowledge-graph.d.ts +30 -0
  41. package/dist/cli/commands/knowledge-graph.d.ts.map +1 -1
  42. package/dist/cli/commands/knowledge-graph.js +206 -4
  43. package/dist/cli/commands/knowledge-graph.js.map +1 -1
  44. package/dist/cli/commands/providers.d.ts +50 -0
  45. package/dist/cli/commands/providers.d.ts.map +1 -0
  46. package/dist/cli/commands/providers.js +403 -0
  47. package/dist/cli/commands/providers.js.map +1 -0
  48. package/dist/cli/index.js +214 -0
  49. package/dist/cli/index.js.map +1 -1
  50. package/dist/code-intelligence/indexing/FileWatcher.d.ts.map +1 -1
  51. package/dist/code-intelligence/indexing/FileWatcher.js +11 -8
  52. package/dist/code-intelligence/indexing/FileWatcher.js.map +1 -1
  53. package/dist/code-intelligence/inference/ComponentBoundaryAnalyzer.d.ts +75 -0
  54. package/dist/code-intelligence/inference/ComponentBoundaryAnalyzer.d.ts.map +1 -0
  55. package/dist/code-intelligence/inference/ComponentBoundaryAnalyzer.js +400 -0
  56. package/dist/code-intelligence/inference/ComponentBoundaryAnalyzer.js.map +1 -0
  57. package/dist/code-intelligence/inference/ExternalSystemDetector.d.ts +31 -0
  58. package/dist/code-intelligence/inference/ExternalSystemDetector.d.ts.map +1 -0
  59. package/dist/code-intelligence/inference/ExternalSystemDetector.js +523 -0
  60. package/dist/code-intelligence/inference/ExternalSystemDetector.js.map +1 -0
  61. package/dist/code-intelligence/inference/ProjectMetadataAnalyzer.d.ts +78 -0
  62. package/dist/code-intelligence/inference/ProjectMetadataAnalyzer.d.ts.map +1 -0
  63. package/dist/code-intelligence/inference/ProjectMetadataAnalyzer.js +491 -0
  64. package/dist/code-intelligence/inference/ProjectMetadataAnalyzer.js.map +1 -0
  65. package/dist/code-intelligence/inference/index.d.ts +36 -0
  66. package/dist/code-intelligence/inference/index.d.ts.map +1 -0
  67. package/dist/code-intelligence/inference/index.js +65 -0
  68. package/dist/code-intelligence/inference/index.js.map +1 -0
  69. package/dist/code-intelligence/inference/types.d.ts +196 -0
  70. package/dist/code-intelligence/inference/types.d.ts.map +1 -0
  71. package/dist/code-intelligence/inference/types.js +9 -0
  72. package/dist/code-intelligence/inference/types.js.map +1 -0
  73. package/dist/code-intelligence/visualization/C4ComponentDiagramBuilder.d.ts +75 -0
  74. package/dist/code-intelligence/visualization/C4ComponentDiagramBuilder.d.ts.map +1 -0
  75. package/dist/code-intelligence/visualization/C4ComponentDiagramBuilder.js +267 -0
  76. package/dist/code-intelligence/visualization/C4ComponentDiagramBuilder.js.map +1 -0
  77. package/dist/code-intelligence/visualization/C4ContainerDiagramBuilder.d.ts +138 -0
  78. package/dist/code-intelligence/visualization/C4ContainerDiagramBuilder.d.ts.map +1 -0
  79. package/dist/code-intelligence/visualization/C4ContainerDiagramBuilder.js +343 -0
  80. package/dist/code-intelligence/visualization/C4ContainerDiagramBuilder.js.map +1 -0
  81. package/dist/code-intelligence/visualization/C4ContextDiagramBuilder.d.ts +67 -0
  82. package/dist/code-intelligence/visualization/C4ContextDiagramBuilder.d.ts.map +1 -0
  83. package/dist/code-intelligence/visualization/C4ContextDiagramBuilder.js +152 -0
  84. package/dist/code-intelligence/visualization/C4ContextDiagramBuilder.js.map +1 -0
  85. package/dist/code-intelligence/visualization/MermaidGenerator.d.ts +79 -0
  86. package/dist/code-intelligence/visualization/MermaidGenerator.d.ts.map +1 -1
  87. package/dist/code-intelligence/visualization/MermaidGenerator.js +143 -0
  88. package/dist/code-intelligence/visualization/MermaidGenerator.js.map +1 -1
  89. package/dist/config/ConfigLoader.d.ts +86 -0
  90. package/dist/config/ConfigLoader.d.ts.map +1 -0
  91. package/dist/config/ConfigLoader.js +450 -0
  92. package/dist/config/ConfigLoader.js.map +1 -0
  93. package/dist/config/ProviderConfig.d.ts +153 -0
  94. package/dist/config/ProviderConfig.d.ts.map +1 -0
  95. package/dist/config/ProviderConfig.js +155 -0
  96. package/dist/config/ProviderConfig.js.map +1 -0
  97. package/dist/config/index.d.ts +35 -0
  98. package/dist/config/index.d.ts.map +1 -0
  99. package/dist/config/index.js +45 -0
  100. package/dist/config/index.js.map +1 -0
  101. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  102. package/dist/mcp/handlers/integration/integration-test-orchestrate.d.ts.map +1 -1
  103. package/dist/mcp/handlers/integration/integration-test-orchestrate.js +6 -9
  104. package/dist/mcp/handlers/integration/integration-test-orchestrate.js.map +1 -1
  105. package/dist/mcp/server-instructions.d.ts +1 -1
  106. package/dist/mcp/server-instructions.js +1 -1
  107. package/dist/mcp/server.d.ts +1 -0
  108. package/dist/mcp/server.d.ts.map +1 -1
  109. package/dist/memory/HNSWPatternStore.d.ts.map +1 -1
  110. package/dist/memory/HNSWPatternStore.js +23 -0
  111. package/dist/memory/HNSWPatternStore.js.map +1 -1
  112. package/dist/memory/RuVectorPatternStore.d.ts +5 -0
  113. package/dist/memory/RuVectorPatternStore.d.ts.map +1 -1
  114. package/dist/memory/RuVectorPatternStore.js +11 -0
  115. package/dist/memory/RuVectorPatternStore.js.map +1 -1
  116. package/dist/providers/CostOptimizationStrategies.d.ts +297 -0
  117. package/dist/providers/CostOptimizationStrategies.d.ts.map +1 -0
  118. package/dist/providers/CostOptimizationStrategies.js +831 -0
  119. package/dist/providers/CostOptimizationStrategies.js.map +1 -0
  120. package/dist/providers/HybridRouter.d.ts +142 -5
  121. package/dist/providers/HybridRouter.d.ts.map +1 -1
  122. package/dist/providers/HybridRouter.js +472 -6
  123. package/dist/providers/HybridRouter.js.map +1 -1
  124. package/dist/providers/HybridRouterComplexityIntegration.d.ts +169 -0
  125. package/dist/providers/HybridRouterComplexityIntegration.d.ts.map +1 -0
  126. package/dist/providers/HybridRouterComplexityIntegration.js +319 -0
  127. package/dist/providers/HybridRouterComplexityIntegration.js.map +1 -0
  128. package/dist/providers/HybridRouterModelSelection.d.ts +106 -0
  129. package/dist/providers/HybridRouterModelSelection.d.ts.map +1 -0
  130. package/dist/providers/HybridRouterModelSelection.js +420 -0
  131. package/dist/providers/HybridRouterModelSelection.js.map +1 -0
  132. package/dist/providers/LLMProviderFactory.d.ts +23 -9
  133. package/dist/providers/LLMProviderFactory.d.ts.map +1 -1
  134. package/dist/providers/LLMProviderFactory.js +54 -11
  135. package/dist/providers/LLMProviderFactory.js.map +1 -1
  136. package/dist/providers/OllamaProvider.d.ts +122 -0
  137. package/dist/providers/OllamaProvider.d.ts.map +1 -0
  138. package/dist/providers/OllamaProvider.js +425 -0
  139. package/dist/providers/OllamaProvider.js.map +1 -0
  140. package/dist/providers/index.d.ts +6 -1
  141. package/dist/providers/index.d.ts.map +1 -1
  142. package/dist/providers/index.js +17 -1
  143. package/dist/providers/index.js.map +1 -1
  144. package/dist/routing/ComplexityClassifier.d.ts +266 -0
  145. package/dist/routing/ComplexityClassifier.d.ts.map +1 -0
  146. package/dist/routing/ComplexityClassifier.js +567 -0
  147. package/dist/routing/ComplexityClassifier.js.map +1 -0
  148. package/dist/routing/ModelCapabilityRegistry.d.ts +98 -0
  149. package/dist/routing/ModelCapabilityRegistry.d.ts.map +1 -0
  150. package/dist/routing/ModelCapabilityRegistry.js +216 -0
  151. package/dist/routing/ModelCapabilityRegistry.js.map +1 -0
  152. package/dist/routing/index.d.ts +13 -0
  153. package/dist/routing/index.d.ts.map +1 -0
  154. package/dist/routing/index.js +24 -0
  155. package/dist/routing/index.js.map +1 -0
  156. package/docs/reference/model-capability-registry.md +402 -0
  157. package/docs/reference/provider-config-schema.md +608 -0
  158. package/package.json +20 -4
@@ -0,0 +1,608 @@
1
+ # LLM Provider Configuration Schema
2
+
3
+ ## Overview
4
+
5
+ This reference documents all configuration options for the multi-provider LLM system in Agentic QE Fleet v2.6+.
6
+
7
+ ## Factory Configuration
8
+
9
+ ### LLMProviderFactory
10
+
11
+ Main factory for creating and managing LLM providers.
12
+
13
+ ```typescript
14
+ interface LLMProviderFactoryConfig {
15
+ // Provider-specific configurations
16
+ claude?: ClaudeProviderConfig;
17
+ ruvllm?: RuvllmProviderConfig;
18
+ openrouter?: OpenRouterConfig;
19
+
20
+ // Global settings
21
+ defaultProvider?: ProviderType;
22
+ enableFallback?: boolean;
23
+ healthCheckInterval?: number;
24
+ maxConsecutiveFailures?: number;
25
+ enableSmartDetection?: boolean;
26
+ }
27
+ ```
28
+
29
+ ### Global Settings
30
+
31
+ | Property | Type | Default | Description |
32
+ |----------|------|---------|-------------|
33
+ | `defaultProvider` | `'claude' \| 'ruvllm' \| 'openrouter' \| 'auto'` | `'auto'` | Default provider to use |
34
+ | `enableFallback` | `boolean` | `true` | Enable automatic fallback on failure |
35
+ | `healthCheckInterval` | `number` | `60000` | Health check interval in ms |
36
+ | `maxConsecutiveFailures` | `number` | `3` | Max failures before marking unhealthy |
37
+ | `enableSmartDetection` | `boolean` | `true` | Auto-detect best provider |
38
+
39
+ ### Provider Types
40
+
41
+ ```typescript
42
+ type ProviderType = 'claude' | 'ruvllm' | 'openrouter' | 'auto';
43
+ ```
44
+
45
+ - **claude**: Direct Anthropic Claude API
46
+ - **ruvllm**: Local inference via Ollama/RuvLLM
47
+ - **openrouter**: OpenRouter (300+ models)
48
+ - **auto**: Automatic provider selection
49
+
50
+ ## Claude Provider Configuration
51
+
52
+ ### ClaudeProviderConfig
53
+
54
+ Configuration for Anthropic Claude API.
55
+
56
+ ```typescript
57
+ interface ClaudeProviderConfig extends LLMProviderConfig {
58
+ apiKey?: string;
59
+ defaultModel?: string;
60
+ enableCaching?: boolean;
61
+ baseUrl?: string;
62
+ }
63
+ ```
64
+
65
+ ### Properties
66
+
67
+ | Property | Type | Default | Description |
68
+ |----------|------|---------|-------------|
69
+ | `apiKey` | `string` | `process.env.ANTHROPIC_API_KEY` | Anthropic API key |
70
+ | `defaultModel` | `string` | `'claude-sonnet-4-20250514'` | Default model to use |
71
+ | `enableCaching` | `boolean` | `true` | Enable prompt caching |
72
+ | `baseUrl` | `string` | `undefined` | Custom API base URL |
73
+ | `name` | `string` | `'claude'` | Provider name |
74
+ | `debug` | `boolean` | `false` | Enable debug logging |
75
+ | `timeout` | `number` | `60000` | Request timeout (ms) |
76
+ | `maxRetries` | `number` | `3` | Maximum retry attempts |
77
+
78
+ ### Available Models
79
+
80
+ | Model | Input Cost | Output Cost | Context | Best For |
81
+ |-------|-----------|-------------|---------|----------|
82
+ | `claude-sonnet-4-20250514` | $3/M | $15/M | 200K | General purpose |
83
+ | `claude-opus-4-20250514` | $15/M | $75/M | 200K | Complex reasoning |
84
+ | `claude-3-5-haiku-20241022` | $0.8/M | $4/M | 200K | Fast, cost-effective |
85
+
86
+ ### Example
87
+
88
+ ```typescript
89
+ const factory = new LLMProviderFactory({
90
+ claude: {
91
+ apiKey: process.env.ANTHROPIC_API_KEY,
92
+ defaultModel: 'claude-sonnet-4-20250514',
93
+ enableCaching: true,
94
+ timeout: 120000,
95
+ maxRetries: 5
96
+ }
97
+ });
98
+ ```
99
+
100
+ ## OpenRouter Configuration
101
+
102
+ ### OpenRouterConfig
103
+
104
+ Configuration for OpenRouter API.
105
+
106
+ ```typescript
107
+ interface OpenRouterConfig extends LLMProviderConfig {
108
+ apiKey?: string;
109
+ defaultModel?: string;
110
+ siteUrl?: string;
111
+ siteName?: string;
112
+ fallbackModels?: string[];
113
+ enableModelDiscovery?: boolean;
114
+ baseUrl?: string;
115
+ enableAutoRoute?: boolean;
116
+ }
117
+ ```
118
+
119
+ ### Properties
120
+
121
+ | Property | Type | Default | Description |
122
+ |----------|------|---------|-------------|
123
+ | `apiKey` | `string` | `process.env.OPENROUTER_API_KEY` | OpenRouter API key |
124
+ | `defaultModel` | `string` | `'mistralai/devstral-2512:free'` | Default model |
125
+ | `siteUrl` | `string` | `process.env.OPENROUTER_SITE_URL` | Your site URL |
126
+ | `siteName` | `string` | `'Agentic-QE-Fleet'` | Your site name |
127
+ | `fallbackModels` | `string[]` | See below | Fallback model chain |
128
+ | `enableModelDiscovery` | `boolean` | `true` | Fetch available models |
129
+ | `baseUrl` | `string` | `'https://openrouter.ai/api/v1'` | API base URL |
130
+ | `enableAutoRoute` | `boolean` | `true` | Enable auto-routing |
131
+ | `name` | `string` | `'openrouter'` | Provider name |
132
+ | `debug` | `boolean` | `false` | Enable debug logging |
133
+ | `timeout` | `number` | `60000` | Request timeout (ms) |
134
+ | `maxRetries` | `number` | `3` | Maximum retry attempts |
135
+
136
+ ### Default Fallback Chain
137
+
138
+ ```typescript
139
+ fallbackModels: [
140
+ 'mistralai/devstral-small-2505', // $0.06/$0.12 per M
141
+ 'mistralai/devstral-small', // $0.07/$0.28 per M
142
+ 'mistralai/devstral-medium', // $0.40/$2.00 per M
143
+ 'openai/gpt-4o-mini', // $0.15/$0.60 per M
144
+ ]
145
+ ```
146
+
147
+ ### Recommended Models
148
+
149
+ | Constant | Model ID | Cost | Description |
150
+ |----------|----------|------|-------------|
151
+ | `AGENTIC_CODING_FREE` | `mistralai/devstral-2512:free` | FREE | Best free agentic coding (123B) |
152
+ | `CHEAPEST_PAID` | `mistralai/devstral-small-2505` | $0.06/$0.12 | Cheapest paid option |
153
+ | `LIGHTWEIGHT_CODING` | `mistralai/devstral-small` | $0.07/$0.28 | 24B, good balance |
154
+ | `COMPLEX_REASONING` | `mistralai/devstral-medium` | $0.40/$2.00 | Complex tasks |
155
+ | `QWEN_CODER` | `qwen/qwen-2.5-coder-32b-instruct` | $0.18/$0.18 | Well-tested coder |
156
+ | `HIGH_QUALITY` | `anthropic/claude-3.5-sonnet` | $3/$15 | Highest quality |
157
+ | `COST_EFFECTIVE` | `openai/gpt-4o-mini` | $0.15/$0.60 | Cost-effective vendor |
158
+
159
+ ### Example
160
+
161
+ ```typescript
162
+ import { LLMProviderFactory, RECOMMENDED_MODELS } from 'agentic-qe';
163
+
164
+ const factory = new LLMProviderFactory({
165
+ openrouter: {
166
+ apiKey: process.env.OPENROUTER_API_KEY,
167
+ defaultModel: RECOMMENDED_MODELS.AGENTIC_CODING_FREE,
168
+ fallbackModels: [
169
+ RECOMMENDED_MODELS.CHEAPEST_PAID,
170
+ RECOMMENDED_MODELS.QWEN_CODER,
171
+ RECOMMENDED_MODELS.HIGH_QUALITY
172
+ ],
173
+ enableAutoRoute: true,
174
+ siteUrl: 'https://my-project.com',
175
+ siteName: 'My Testing Project'
176
+ }
177
+ });
178
+ ```
179
+
180
+ ## RuvLLM/Ollama Configuration
181
+
182
+ ### RuvllmProviderConfig
183
+
184
+ Configuration for local LLM inference.
185
+
186
+ ```typescript
187
+ interface RuvllmProviderConfig extends LLMProviderConfig {
188
+ ruvllmPath?: string;
189
+ port?: number;
190
+ defaultModel?: string;
191
+ gpuLayers?: number;
192
+ contextSize?: number;
193
+ threads?: number;
194
+ defaultTemperature?: number;
195
+ enableEmbeddings?: boolean;
196
+ enableTRM?: boolean;
197
+ enableSONA?: boolean;
198
+ maxTRMIterations?: number;
199
+ convergenceThreshold?: number;
200
+ sonaConfig?: SONAConfig;
201
+ enableSessions?: boolean;
202
+ sessionTimeout?: number;
203
+ maxSessions?: number;
204
+ }
205
+ ```
206
+
207
+ ### Properties
208
+
209
+ | Property | Type | Default | Description |
210
+ |----------|------|---------|-------------|
211
+ | `ruvllmPath` | `string` | `'npx'` | Path to ruvllm executable |
212
+ | `port` | `number` | `8080` | Local server port |
213
+ | `defaultModel` | `string` | `'llama-3.2-3b-instruct'` | Default model |
214
+ | `gpuLayers` | `number` | `-1` | GPU layers to offload (-1 = all) |
215
+ | `contextSize` | `number` | `4096` | Context window size |
216
+ | `threads` | `number` | `4` | Number of threads |
217
+ | `defaultTemperature` | `number` | `0.7` | Default temperature |
218
+ | `enableEmbeddings` | `boolean` | `false` | Enable embeddings model |
219
+ | `enableTRM` | `boolean` | `true` | Enable test-time reasoning |
220
+ | `enableSONA` | `boolean` | `true` | Enable self-learning |
221
+ | `maxTRMIterations` | `number` | `7` | Max TRM iterations |
222
+ | `convergenceThreshold` | `number` | `0.95` | TRM convergence threshold |
223
+ | `sonaConfig` | `SONAConfig` | See below | SONA configuration |
224
+ | `enableSessions` | `boolean` | `true` | Enable session management |
225
+ | `sessionTimeout` | `number` | `1800000` | Session timeout (30 min) |
226
+ | `maxSessions` | `number` | `100` | Max concurrent sessions |
227
+
228
+ ### SONAConfig
229
+
230
+ ```typescript
231
+ interface SONAConfig {
232
+ loraRank?: number; // LoRA rank (default: 8)
233
+ loraAlpha?: number; // LoRA alpha (default: 16)
234
+ ewcLambda?: number; // EWC lambda (default: 2000)
235
+ }
236
+ ```
237
+
238
+ ### TRMConfig
239
+
240
+ ```typescript
241
+ interface TRMConfig {
242
+ maxIterations?: number; // Default: 7
243
+ convergenceThreshold?: number; // Default: 0.95
244
+ qualityMetric?: 'coherence' | 'coverage' | 'diversity';
245
+ }
246
+ ```
247
+
248
+ ### Available Models
249
+
250
+ | Model | Size | Context | Best For |
251
+ |-------|------|---------|----------|
252
+ | `qwen3-coder:30b` | 30B | 32K | Primary coding |
253
+ | `llama3.3:70b` | 70B | 128K | Large general-purpose |
254
+ | `devstral-small:24b` | 24B | 128K | Efficient coding |
255
+ | `rnj-1:8b` | 8B | 128K | Edge deployment |
256
+ | `deepseek-coder-v2:16b` | 16B | 128K | Code-specific |
257
+
258
+ ### Example
259
+
260
+ ```typescript
261
+ const factory = new LLMProviderFactory({
262
+ ruvllm: {
263
+ defaultModel: 'qwen3-coder:30b',
264
+ gpuLayers: -1, // Offload all to GPU
265
+ contextSize: 8192,
266
+ threads: 8,
267
+ enableTRM: true, // Test-time reasoning
268
+ maxTRMIterations: 5,
269
+ enableSONA: true, // Self-learning
270
+ sonaConfig: {
271
+ loraRank: 8,
272
+ loraAlpha: 16,
273
+ ewcLambda: 2000
274
+ },
275
+ enableSessions: true,
276
+ sessionTimeout: 1800000, // 30 minutes
277
+ maxSessions: 50
278
+ }
279
+ });
280
+ ```
281
+
282
+ ## Ollama Provider Configuration
283
+
284
+ ### OllamaProviderConfig
285
+
286
+ Configuration for Ollama server.
287
+
288
+ ```typescript
289
+ interface OllamaProviderConfig extends LLMProviderConfig {
290
+ baseUrl?: string;
291
+ defaultModel?: string;
292
+ keepAlive?: boolean;
293
+ keepAliveDuration?: number;
294
+ }
295
+ ```
296
+
297
+ ### Properties
298
+
299
+ | Property | Type | Default | Description |
300
+ |----------|------|---------|-------------|
301
+ | `baseUrl` | `string` | `'http://localhost:11434'` | Ollama server URL |
302
+ | `defaultModel` | `string` | `'qwen3-coder:30b'` | Default model |
303
+ | `keepAlive` | `boolean` | `true` | Keep model in memory |
304
+ | `keepAliveDuration` | `number` | `300` | Keep alive duration (seconds) |
305
+ | `timeout` | `number` | `120000` | Request timeout (ms) |
306
+ | `maxRetries` | `number` | `2` | Maximum retry attempts |
307
+
308
+ ### Example
309
+
310
+ ```typescript
311
+ const provider = new OllamaProvider({
312
+ baseUrl: 'http://localhost:11434',
313
+ defaultModel: 'qwen3-coder:30b',
314
+ keepAlive: true,
315
+ keepAliveDuration: 600, // 10 minutes
316
+ timeout: 180000, // 3 minutes
317
+ debug: false
318
+ });
319
+ ```
320
+
321
+ ## Environment Variables
322
+
323
+ ### Provider Keys
324
+
325
+ ```bash
326
+ # Claude API
327
+ export ANTHROPIC_API_KEY="sk-ant-..."
328
+
329
+ # OpenRouter
330
+ export OPENROUTER_API_KEY="sk-or-v1-..."
331
+ export OPENROUTER_SITE_URL="https://my-project.com"
332
+ export OPENROUTER_SITE_NAME="My Project"
333
+
334
+ # Groq (via OpenRouter)
335
+ export GROQ_API_KEY="gsk_..."
336
+
337
+ # Google AI Studio
338
+ export GOOGLE_AI_API_KEY="..."
339
+
340
+ # Together.ai
341
+ export TOGETHER_API_KEY="..."
342
+ ```
343
+
344
+ ### Provider Selection
345
+
346
+ ```bash
347
+ # Override automatic provider selection
348
+ export LLM_PROVIDER="claude" # Force Claude
349
+ export LLM_PROVIDER="openrouter" # Force OpenRouter
350
+ export LLM_PROVIDER="ruvllm" # Force local
351
+ export LLM_PROVIDER="auto" # Auto-detect (default)
352
+ ```
353
+
354
+ ### Ollama Configuration
355
+
356
+ ```bash
357
+ # Ollama server URL
358
+ export OLLAMA_HOST="http://localhost:11434"
359
+
360
+ # Ollama models directory
361
+ export OLLAMA_MODELS="/path/to/models"
362
+
363
+ # GPU configuration
364
+ export CUDA_VISIBLE_DEVICES="0,1" # Use GPUs 0 and 1
365
+
366
+ # Debug mode
367
+ export OLLAMA_DEBUG="1"
368
+ ```
369
+
370
+ ## Configuration File
371
+
372
+ ### YAML Configuration
373
+
374
+ ```yaml
375
+ # ~/.agentic-qe/llm-config.yaml
376
+
377
+ defaultProvider: auto
378
+ enableFallback: true
379
+ enableSmartDetection: true
380
+ healthCheckInterval: 60000
381
+ maxConsecutiveFailures: 3
382
+
383
+ claude:
384
+ defaultModel: claude-sonnet-4-20250514
385
+ enableCaching: true
386
+ timeout: 120000
387
+ maxRetries: 5
388
+
389
+ openrouter:
390
+ defaultModel: mistralai/devstral-2512:free
391
+ fallbackModels:
392
+ - mistralai/devstral-small-2505
393
+ - qwen/qwen-2.5-coder-32b-instruct
394
+ - anthropic/claude-3.5-sonnet
395
+ enableAutoRoute: true
396
+ siteUrl: https://my-project.com
397
+ siteName: My Testing Project
398
+
399
+ ruvllm:
400
+ defaultModel: qwen3-coder:30b
401
+ gpuLayers: -1
402
+ contextSize: 8192
403
+ threads: 8
404
+ enableTRM: true
405
+ maxTRMIterations: 7
406
+ enableSONA: true
407
+ sonaConfig:
408
+ loraRank: 8
409
+ loraAlpha: 16
410
+ ewcLambda: 2000
411
+ enableSessions: true
412
+ sessionTimeout: 1800000
413
+ maxSessions: 100
414
+ ```
415
+
416
+ ### JSON Configuration
417
+
418
+ ```json
419
+ {
420
+ "defaultProvider": "auto",
421
+ "enableFallback": true,
422
+ "enableSmartDetection": true,
423
+
424
+ "claude": {
425
+ "defaultModel": "claude-sonnet-4-20250514",
426
+ "enableCaching": true
427
+ },
428
+
429
+ "openrouter": {
430
+ "defaultModel": "mistralai/devstral-2512:free",
431
+ "fallbackModels": [
432
+ "mistralai/devstral-small-2505",
433
+ "qwen/qwen-2.5-coder-32b-instruct"
434
+ ],
435
+ "enableAutoRoute": true
436
+ },
437
+
438
+ "ruvllm": {
439
+ "defaultModel": "qwen3-coder:30b",
440
+ "enableTRM": true,
441
+ "enableSONA": true
442
+ }
443
+ }
444
+ ```
445
+
446
+ ## Programmatic Configuration
447
+
448
+ ### TypeScript
449
+
450
+ ```typescript
451
+ import { LLMProviderFactory, RECOMMENDED_MODELS } from 'agentic-qe';
452
+
453
+ const factory = new LLMProviderFactory({
454
+ // Global settings
455
+ defaultProvider: 'auto',
456
+ enableFallback: true,
457
+ healthCheckInterval: 60000,
458
+ maxConsecutiveFailures: 3,
459
+ enableSmartDetection: true,
460
+
461
+ // Claude configuration
462
+ claude: {
463
+ apiKey: process.env.ANTHROPIC_API_KEY,
464
+ defaultModel: 'claude-sonnet-4-20250514',
465
+ enableCaching: true,
466
+ timeout: 120000,
467
+ maxRetries: 5
468
+ },
469
+
470
+ // OpenRouter configuration
471
+ openrouter: {
472
+ apiKey: process.env.OPENROUTER_API_KEY,
473
+ defaultModel: RECOMMENDED_MODELS.AGENTIC_CODING_FREE,
474
+ fallbackModels: [
475
+ RECOMMENDED_MODELS.CHEAPEST_PAID,
476
+ RECOMMENDED_MODELS.QWEN_CODER,
477
+ RECOMMENDED_MODELS.HIGH_QUALITY
478
+ ],
479
+ enableAutoRoute: true,
480
+ siteUrl: 'https://my-project.com',
481
+ siteName: 'My Testing Project'
482
+ },
483
+
484
+ // RuvLLM configuration
485
+ ruvllm: {
486
+ defaultModel: 'qwen3-coder:30b',
487
+ gpuLayers: -1,
488
+ contextSize: 8192,
489
+ threads: 8,
490
+ enableTRM: true,
491
+ maxTRMIterations: 7,
492
+ enableSONA: true,
493
+ sonaConfig: {
494
+ loraRank: 8,
495
+ loraAlpha: 16,
496
+ ewcLambda: 2000
497
+ },
498
+ enableSessions: true,
499
+ sessionTimeout: 1800000,
500
+ maxSessions: 100
501
+ }
502
+ });
503
+
504
+ await factory.initialize();
505
+ ```
506
+
507
+ ### JavaScript (ES6)
508
+
509
+ ```javascript
510
+ const { LLMProviderFactory } = require('agentic-qe');
511
+
512
+ const factory = new LLMProviderFactory({
513
+ defaultProvider: 'auto',
514
+ enableFallback: true,
515
+
516
+ openrouter: {
517
+ apiKey: process.env.OPENROUTER_API_KEY,
518
+ defaultModel: 'mistralai/devstral-2512:free'
519
+ }
520
+ });
521
+
522
+ await factory.initialize();
523
+ ```
524
+
525
+ ## Provider Selection Criteria
526
+
527
+ ### ProviderSelectionCriteria
528
+
529
+ ```typescript
530
+ interface ProviderSelectionCriteria {
531
+ preferLocal?: boolean;
532
+ preferLowCost?: boolean;
533
+ requiredCapabilities?: Array<keyof LLMProviderMetadata['capabilities']>;
534
+ maxCostPerMillion?: number;
535
+ requiredModels?: string[];
536
+ }
537
+ ```
538
+
539
+ ### Example Usage
540
+
541
+ ```typescript
542
+ // Select cheapest provider
543
+ const cheapProvider = factory.selectBestProvider({
544
+ preferLowCost: true,
545
+ maxCostPerMillion: 1.0
546
+ });
547
+
548
+ // Select local provider
549
+ const localProvider = factory.selectBestProvider({
550
+ preferLocal: true
551
+ });
552
+
553
+ // Select by capabilities
554
+ const streamingProvider = factory.selectBestProvider({
555
+ requiredCapabilities: ['streaming', 'vision']
556
+ });
557
+
558
+ // Select by model
559
+ const claudeProvider = factory.selectBestProvider({
560
+ requiredModels: ['claude-sonnet-4-20250514']
561
+ });
562
+ ```
563
+
564
+ ## Default Values
565
+
566
+ ### Provider Defaults
567
+
568
+ | Provider | Default Model | Default Cost | Location |
569
+ |----------|--------------|--------------|----------|
570
+ | Claude | `claude-sonnet-4-20250514` | $3/$15 per M | Cloud |
571
+ | OpenRouter | `mistralai/devstral-2512:free` | FREE | Cloud |
572
+ | RuvLLM | `llama-3.2-3b-instruct` | FREE | Local |
573
+ | Ollama | `qwen3-coder:30b` | FREE | Local |
574
+
575
+ ### Global Defaults
576
+
577
+ | Setting | Default | Description |
578
+ |---------|---------|-------------|
579
+ | `defaultProvider` | `'auto'` | Auto-detect best provider |
580
+ | `enableFallback` | `true` | Enable automatic fallback |
581
+ | `healthCheckInterval` | `60000` | Health check every 1 minute |
582
+ | `maxConsecutiveFailures` | `3` | Mark unhealthy after 3 failures |
583
+ | `enableSmartDetection` | `true` | Auto-detect environment |
584
+
585
+ ## Validation
586
+
587
+ The configuration is validated at initialization:
588
+
589
+ ```typescript
590
+ // Invalid configuration will throw error
591
+ try {
592
+ const factory = new LLMProviderFactory({
593
+ claude: {
594
+ defaultModel: 'invalid-model' // ❌ Error
595
+ }
596
+ });
597
+ await factory.initialize();
598
+ } catch (error) {
599
+ console.error('Configuration error:', error.message);
600
+ }
601
+ ```
602
+
603
+ ## See Also
604
+
605
+ - [LLM Providers Guide](../guides/llm-providers-guide.md)
606
+ - [Ollama Setup Guide](../guides/ollama-setup.md)
607
+ - [Free Tier Guide](../guides/free-tier-guide.md)
608
+ - [API Reference](../API.md#llm-providers)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-qe",
3
- "version": "2.6.1",
3
+ "version": "2.6.3",
4
4
  "description": "Agentic Quality Engineering Fleet System - AI-driven quality management platform with 46 QE skills, n8n workflow testing agents, learning, pattern reuse, ML-based flaky detection, Multi-Model Router (70-81% cost savings), streaming progress updates, 91 MCP tools with lazy loading (87% context reduction), and native TypeScript hooks",
5
5
  "main": "dist/cli/index.js",
6
6
  "types": "dist/cli/index.d.ts",
@@ -10,7 +10,7 @@
10
10
  "aqe-mcp": "./bin/aqe-mcp"
11
11
  },
12
12
  "scripts": {
13
- "build": "tsc",
13
+ "build": "tsc && node scripts/copy-json-files.js",
14
14
  "dev": "ts-node src/cli/index.ts",
15
15
  "start": "node dist/cli/index.js",
16
16
  "pretest": "node scripts/check-memory-before-test.js",
@@ -67,6 +67,7 @@
67
67
  "prepare": "npm run build",
68
68
  "prepublishOnly": "npm run typecheck && npm run build",
69
69
  "verify:release": "bash scripts/verify-release.sh",
70
+ "postrelease:index": "bash scripts/post-release-index.sh",
70
71
  "mcp:start": "node dist/mcp/start.js",
71
72
  "mcp:validate": "node scripts/validate-mcp-tools.js",
72
73
  "mcp:report": "node scripts/generate-mcp-report.js",
@@ -165,7 +166,7 @@
165
166
  "tree-sitter-javascript": "^0.23.0",
166
167
  "tree-sitter-python": "^0.23.5",
167
168
  "tree-sitter-rust": "^0.24.0",
168
- "tree-sitter-typescript": "^0.21.2",
169
+ "tree-sitter-typescript": "^0.23.2",
169
170
  "uuid": "^11.0.5",
170
171
  "winston": "^3.18.3",
171
172
  "ws": "^8.18.3",
@@ -182,7 +183,21 @@
182
183
  "stack-utils": "^2.0.6"
183
184
  },
184
185
  "overrides": {
185
- "tree-sitter": "^0.22.4"
186
+ "tree-sitter-go": {
187
+ "tree-sitter": "$tree-sitter"
188
+ },
189
+ "tree-sitter-javascript": {
190
+ "tree-sitter": "$tree-sitter"
191
+ },
192
+ "tree-sitter-typescript": {
193
+ "tree-sitter": "$tree-sitter"
194
+ },
195
+ "tree-sitter-python": {
196
+ "tree-sitter": "$tree-sitter"
197
+ },
198
+ "tree-sitter-rust": {
199
+ "tree-sitter": "$tree-sitter"
200
+ }
186
201
  },
187
202
  "devDependencies": {
188
203
  "@axe-core/playwright": "^4.11.0",
@@ -214,6 +229,7 @@
214
229
  "jest": "^30.2.0",
215
230
  "jest-extended": "^6.0.0",
216
231
  "jest-junit": "^16.0.0",
232
+ "jose": "^5.10.0",
217
233
  "nodemon": "^3.0.2",
218
234
  "react": "^18.3.1",
219
235
  "rimraf": "^6.0.1",