agentic-qe 2.6.1 → 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 (114) hide show
  1. package/CHANGELOG.md +71 -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/cli/commands/providers.d.ts +50 -0
  40. package/dist/cli/commands/providers.d.ts.map +1 -0
  41. package/dist/cli/commands/providers.js +403 -0
  42. package/dist/cli/commands/providers.js.map +1 -0
  43. package/dist/cli/index.js +62 -0
  44. package/dist/cli/index.js.map +1 -1
  45. package/dist/code-intelligence/indexing/FileWatcher.d.ts.map +1 -1
  46. package/dist/code-intelligence/indexing/FileWatcher.js +11 -8
  47. package/dist/code-intelligence/indexing/FileWatcher.js.map +1 -1
  48. package/dist/config/ConfigLoader.d.ts +85 -0
  49. package/dist/config/ConfigLoader.d.ts.map +1 -0
  50. package/dist/config/ConfigLoader.js +420 -0
  51. package/dist/config/ConfigLoader.js.map +1 -0
  52. package/dist/config/ProviderConfig.d.ts +153 -0
  53. package/dist/config/ProviderConfig.d.ts.map +1 -0
  54. package/dist/config/ProviderConfig.js +155 -0
  55. package/dist/config/ProviderConfig.js.map +1 -0
  56. package/dist/config/index.d.ts +35 -0
  57. package/dist/config/index.d.ts.map +1 -0
  58. package/dist/config/index.js +45 -0
  59. package/dist/config/index.js.map +1 -0
  60. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  61. package/dist/mcp/server-instructions.d.ts +1 -1
  62. package/dist/mcp/server-instructions.js +1 -1
  63. package/dist/mcp/server.d.ts +1 -0
  64. package/dist/mcp/server.d.ts.map +1 -1
  65. package/dist/memory/HNSWPatternStore.d.ts.map +1 -1
  66. package/dist/memory/HNSWPatternStore.js +23 -0
  67. package/dist/memory/HNSWPatternStore.js.map +1 -1
  68. package/dist/memory/RuVectorPatternStore.d.ts +5 -0
  69. package/dist/memory/RuVectorPatternStore.d.ts.map +1 -1
  70. package/dist/memory/RuVectorPatternStore.js +11 -0
  71. package/dist/memory/RuVectorPatternStore.js.map +1 -1
  72. package/dist/providers/CostOptimizationStrategies.d.ts +297 -0
  73. package/dist/providers/CostOptimizationStrategies.d.ts.map +1 -0
  74. package/dist/providers/CostOptimizationStrategies.js +831 -0
  75. package/dist/providers/CostOptimizationStrategies.js.map +1 -0
  76. package/dist/providers/HybridRouter.d.ts +142 -5
  77. package/dist/providers/HybridRouter.d.ts.map +1 -1
  78. package/dist/providers/HybridRouter.js +472 -6
  79. package/dist/providers/HybridRouter.js.map +1 -1
  80. package/dist/providers/HybridRouterComplexityIntegration.d.ts +169 -0
  81. package/dist/providers/HybridRouterComplexityIntegration.d.ts.map +1 -0
  82. package/dist/providers/HybridRouterComplexityIntegration.js +319 -0
  83. package/dist/providers/HybridRouterComplexityIntegration.js.map +1 -0
  84. package/dist/providers/HybridRouterModelSelection.d.ts +106 -0
  85. package/dist/providers/HybridRouterModelSelection.d.ts.map +1 -0
  86. package/dist/providers/HybridRouterModelSelection.js +420 -0
  87. package/dist/providers/HybridRouterModelSelection.js.map +1 -0
  88. package/dist/providers/LLMProviderFactory.d.ts +23 -9
  89. package/dist/providers/LLMProviderFactory.d.ts.map +1 -1
  90. package/dist/providers/LLMProviderFactory.js +54 -11
  91. package/dist/providers/LLMProviderFactory.js.map +1 -1
  92. package/dist/providers/OllamaProvider.d.ts +122 -0
  93. package/dist/providers/OllamaProvider.d.ts.map +1 -0
  94. package/dist/providers/OllamaProvider.js +425 -0
  95. package/dist/providers/OllamaProvider.js.map +1 -0
  96. package/dist/providers/index.d.ts +6 -1
  97. package/dist/providers/index.d.ts.map +1 -1
  98. package/dist/providers/index.js +17 -1
  99. package/dist/providers/index.js.map +1 -1
  100. package/dist/routing/ComplexityClassifier.d.ts +266 -0
  101. package/dist/routing/ComplexityClassifier.d.ts.map +1 -0
  102. package/dist/routing/ComplexityClassifier.js +567 -0
  103. package/dist/routing/ComplexityClassifier.js.map +1 -0
  104. package/dist/routing/ModelCapabilityRegistry.d.ts +98 -0
  105. package/dist/routing/ModelCapabilityRegistry.d.ts.map +1 -0
  106. package/dist/routing/ModelCapabilityRegistry.js +216 -0
  107. package/dist/routing/ModelCapabilityRegistry.js.map +1 -0
  108. package/dist/routing/index.d.ts +13 -0
  109. package/dist/routing/index.d.ts.map +1 -0
  110. package/dist/routing/index.js +24 -0
  111. package/dist/routing/index.js.map +1 -0
  112. package/docs/reference/model-capability-registry.md +402 -0
  113. package/docs/reference/provider-config-schema.md +608 -0
  114. package/package.json +19 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HybridRouterComplexityIntegration.js","sourceRoot":"","sources":["../../src/providers/HybridRouterComplexityIntegration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * HybridRouter Model Selection Module
3
+ *
4
+ * Intelligent model selection integration using ModelCapabilityRegistry.
5
+ * Provides task type detection, constraint-based model selection, and
6
+ * quality rating updates based on actual performance.
7
+ *
8
+ * @module providers/HybridRouterModelSelection
9
+ * @version 1.0.0
10
+ */
11
+ import { ModelCapabilityRegistry, ModelCapabilities, ModelConstraints, TaskType } from '../routing/ModelCapabilityRegistry';
12
+ import { LLMCompletionOptions } from './ILLMProvider';
13
+ import { TaskComplexity } from './HybridRouter';
14
+ /**
15
+ * Model selection result with primary and alternatives
16
+ */
17
+ export interface ModelSelectionResult {
18
+ /** Primary model recommendation */
19
+ primary: ModelCapabilities;
20
+ /** Alternative models (fallback options) */
21
+ alternatives: ModelCapabilities[];
22
+ /** Reasoning for selection */
23
+ reasoning: string;
24
+ /** Confidence in selection (0-1) */
25
+ confidence: number;
26
+ }
27
+ /**
28
+ * HybridRouter Model Selection
29
+ *
30
+ * Provides intelligent model selection capabilities for HybridRouter
31
+ * using ModelCapabilityRegistry for task-aware routing decisions.
32
+ */
33
+ export declare class HybridRouterModelSelection {
34
+ private registry;
35
+ constructor(registry?: ModelCapabilityRegistry);
36
+ /**
37
+ * Detect task type from completion options
38
+ *
39
+ * Analyzes message content to identify the type of task being requested.
40
+ *
41
+ * @param options - LLM completion options
42
+ * @returns Detected task type, or 'code-review' as default
43
+ */
44
+ detectTaskType(options: LLMCompletionOptions): TaskType;
45
+ /**
46
+ * Select best model for a task
47
+ *
48
+ * @param taskType - Type of task to perform
49
+ * @param complexity - Task complexity level
50
+ * @param constraints - Optional model constraints
51
+ * @returns Model selection with provider, model, and reasoning
52
+ */
53
+ selectBestModel(taskType: TaskType, complexity: TaskComplexity, constraints?: ModelConstraints): {
54
+ provider: string;
55
+ model: string;
56
+ reason: string;
57
+ };
58
+ /**
59
+ * Get model recommendation with alternatives
60
+ *
61
+ * @param options - LLM completion options
62
+ * @param constraints - Optional model constraints
63
+ * @returns Primary model and alternatives with reasoning
64
+ */
65
+ getModelRecommendation(options: LLMCompletionOptions, constraints?: ModelConstraints): ModelSelectionResult;
66
+ /**
67
+ * Update model quality rating after use
68
+ *
69
+ * Adapts quality ratings based on actual performance feedback.
70
+ *
71
+ * @param modelId - Model identifier
72
+ * @param taskType - Type of task performed
73
+ * @param success - Whether the task was successful
74
+ * @param latency - Actual latency in milliseconds
75
+ */
76
+ updateModelQuality(modelId: string, taskType: TaskType, success: boolean, latency: number): void;
77
+ /**
78
+ * Get registry for direct access
79
+ */
80
+ getRegistry(): ModelCapabilityRegistry;
81
+ /**
82
+ * Extract content from messages
83
+ */
84
+ private extractContent;
85
+ /**
86
+ * Estimate complexity from options
87
+ */
88
+ private estimateComplexity;
89
+ /**
90
+ * Apply constraints to filter models
91
+ */
92
+ private applyConstraintsToModels;
93
+ /**
94
+ * Build selection reasoning text
95
+ */
96
+ private buildSelectionReasoning;
97
+ /**
98
+ * Calculate confidence in selection
99
+ */
100
+ private calculateSelectionConfidence;
101
+ }
102
+ /**
103
+ * Create a model selection instance with default registry
104
+ */
105
+ export declare function createModelSelection(): HybridRouterModelSelection;
106
+ //# sourceMappingURL=HybridRouterModelSelection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HybridRouterModelSelection.d.ts","sourceRoot":"","sources":["../../src/providers/HybridRouterModelSelection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,EAChB,QAAQ,EACT,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,oBAAoB,EAErB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mCAAmC;IACnC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,4CAA4C;IAC5C,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;CACpB;AAqFD;;;;;GAKG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAA0B;gBAE9B,QAAQ,CAAC,EAAE,uBAAuB;IAS9C;;;;;;;OAOG;IACH,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,QAAQ;IAsCvD;;;;;;;OAOG;IACH,eAAe,CACb,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,cAAc,EAC1B,WAAW,CAAC,EAAE,gBAAgB,GAC7B;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IA+CtD;;;;;;OAMG;IACH,sBAAsB,CACpB,OAAO,EAAE,oBAAoB,EAC7B,WAAW,CAAC,EAAE,gBAAgB,GAC7B,oBAAoB;IAmEvB;;;;;;;;;OASG;IACH,kBAAkB,CAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,GACd,IAAI;IAmBP;;OAEG;IACH,WAAW,IAAI,uBAAuB;IAItC;;OAEG;IACH,OAAO,CAAC,cAAc;IActB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoC1B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAqChC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA0C/B;;OAEG;IACH,OAAO,CAAC,4BAA4B;CA+BrC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,0BAA0B,CAEjE"}
@@ -0,0 +1,420 @@
1
+ "use strict";
2
+ /**
3
+ * HybridRouter Model Selection Module
4
+ *
5
+ * Intelligent model selection integration using ModelCapabilityRegistry.
6
+ * Provides task type detection, constraint-based model selection, and
7
+ * quality rating updates based on actual performance.
8
+ *
9
+ * @module providers/HybridRouterModelSelection
10
+ * @version 1.0.0
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.HybridRouterModelSelection = void 0;
14
+ exports.createModelSelection = createModelSelection;
15
+ const ModelCapabilityRegistry_1 = require("../routing/ModelCapabilityRegistry");
16
+ const HybridRouter_1 = require("./HybridRouter");
17
+ /**
18
+ * Task type detection patterns
19
+ */
20
+ const TASK_PATTERNS = {
21
+ 'test-generation': [
22
+ /generat(e|ing)\s+(unit\s+)?test/i,
23
+ /creat(e|ing)\s+test/i,
24
+ /write\s+test/i,
25
+ /test\s+(suite|case|coverage)/i,
26
+ /jest|mocha|vitest|pytest/i,
27
+ /\bspec\b/i
28
+ ],
29
+ 'coverage-analysis': [
30
+ /coverage\s+(report|analysis|gap)/i,
31
+ /uncovered\s+(code|line)/i,
32
+ /test\s+coverage/i,
33
+ /code\s+coverage/i,
34
+ /istanbul|nyc|c8/i
35
+ ],
36
+ 'code-review': [
37
+ /code\s+review/i,
38
+ /review\s+(this|the)\s+code/i,
39
+ /pull\s+request/i,
40
+ /\bPR\b/i,
41
+ /linting|eslint|prettier/i,
42
+ /code\s+quality/i,
43
+ /best\s+practice/i
44
+ ],
45
+ 'bug-detection': [
46
+ /find\s+(bug|issue|defect)/i,
47
+ /detect\s+(bug|issue)/i,
48
+ /debug|debugging/i,
49
+ /stack\s+trace/i,
50
+ /error\s+(message|handling)/i,
51
+ /\bbug\b/i,
52
+ /\bissue\b/i
53
+ ],
54
+ 'documentation': [
55
+ /generat(e|ing)\s+doc/i,
56
+ /write\s+doc/i,
57
+ /\bREADME\b/i,
58
+ /API\s+doc/i,
59
+ /JSDoc|TSDoc|Docstring/i,
60
+ /comment\s+(this|the)\s+code/i
61
+ ],
62
+ 'refactoring': [
63
+ /refactor/i,
64
+ /clean\s+up/i,
65
+ /improve\s+(code|structure)/i,
66
+ /extract\s+(method|function|class)/i,
67
+ /rename\s+variable/i,
68
+ /\bDRY\b/i,
69
+ /design\s+pattern/i
70
+ ],
71
+ 'performance-testing': [
72
+ /performance\s+test/i,
73
+ /load\s+test/i,
74
+ /stress\s+test/i,
75
+ /benchmark/i,
76
+ /latency|throughput/i,
77
+ /response\s+time/i,
78
+ /\bperf\b/i
79
+ ],
80
+ 'security-scanning': [
81
+ /security\s+(scan|test|audit)/i,
82
+ /vulnerabilit(y|ies)/i,
83
+ /penetration\s+test/i,
84
+ /\bXSS\b|\bCSRF\b|\bSQL\s+injection/i,
85
+ /authentication|authorization/i,
86
+ /\bOWASP\b/i
87
+ ]
88
+ };
89
+ /**
90
+ * Complexity mapping from HybridRouter to ModelCapabilityRegistry format
91
+ */
92
+ const COMPLEXITY_MAP = {
93
+ [HybridRouter_1.TaskComplexity.SIMPLE]: 'simple',
94
+ [HybridRouter_1.TaskComplexity.MODERATE]: 'moderate',
95
+ [HybridRouter_1.TaskComplexity.COMPLEX]: 'complex',
96
+ [HybridRouter_1.TaskComplexity.VERY_COMPLEX]: 'very_complex'
97
+ };
98
+ /**
99
+ * HybridRouter Model Selection
100
+ *
101
+ * Provides intelligent model selection capabilities for HybridRouter
102
+ * using ModelCapabilityRegistry for task-aware routing decisions.
103
+ */
104
+ class HybridRouterModelSelection {
105
+ constructor(registry) {
106
+ this.registry = registry || new ModelCapabilityRegistry_1.ModelCapabilityRegistry();
107
+ // Load default models if no custom registry provided
108
+ if (!registry) {
109
+ this.registry.loadDefaultModels();
110
+ }
111
+ }
112
+ /**
113
+ * Detect task type from completion options
114
+ *
115
+ * Analyzes message content to identify the type of task being requested.
116
+ *
117
+ * @param options - LLM completion options
118
+ * @returns Detected task type, or 'code-review' as default
119
+ */
120
+ detectTaskType(options) {
121
+ const content = this.extractContent(options.messages);
122
+ // Track pattern matches for each task type
123
+ const matches = {
124
+ 'test-generation': 0,
125
+ 'coverage-analysis': 0,
126
+ 'code-review': 0,
127
+ 'bug-detection': 0,
128
+ 'documentation': 0,
129
+ 'refactoring': 0,
130
+ 'performance-testing': 0,
131
+ 'security-scanning': 0
132
+ };
133
+ // Test each pattern against content
134
+ for (const [taskType, patterns] of Object.entries(TASK_PATTERNS)) {
135
+ for (const pattern of patterns) {
136
+ if (pattern.test(content)) {
137
+ matches[taskType]++;
138
+ }
139
+ }
140
+ }
141
+ // Find task type with most matches
142
+ let maxMatches = 0;
143
+ let detectedType = 'code-review'; // Default
144
+ for (const [taskType, count] of Object.entries(matches)) {
145
+ if (count > maxMatches) {
146
+ maxMatches = count;
147
+ detectedType = taskType;
148
+ }
149
+ }
150
+ return detectedType;
151
+ }
152
+ /**
153
+ * Select best model for a task
154
+ *
155
+ * @param taskType - Type of task to perform
156
+ * @param complexity - Task complexity level
157
+ * @param constraints - Optional model constraints
158
+ * @returns Model selection with provider, model, and reasoning
159
+ */
160
+ selectBestModel(taskType, complexity, constraints) {
161
+ const registryComplexity = COMPLEXITY_MAP[complexity];
162
+ const modelId = this.registry.getBestModelForTask(taskType, registryComplexity, constraints);
163
+ if (!modelId) {
164
+ // No suitable model found, return default
165
+ return {
166
+ provider: 'claude',
167
+ model: 'claude-sonnet-4',
168
+ reason: `No suitable model found for ${taskType} with given constraints, using default`
169
+ };
170
+ }
171
+ const model = this.registry.getModel(modelId);
172
+ if (!model) {
173
+ throw new Error(`Model ${modelId} not found in registry`);
174
+ }
175
+ // Build reasoning
176
+ const reasons = [];
177
+ reasons.push(`Best match for ${taskType}`);
178
+ reasons.push(`Complexity: ${complexity}`);
179
+ if (model.qualityRatings?.[taskType]) {
180
+ reasons.push(`Quality rating: ${(model.qualityRatings[taskType] * 100).toFixed(0)}%`);
181
+ }
182
+ if (constraints?.requiresLocal) {
183
+ reasons.push('Local deployment required');
184
+ }
185
+ if (constraints?.maxCostPer1M) {
186
+ reasons.push(`Cost constraint: $${constraints.maxCostPer1M}/1M`);
187
+ }
188
+ return {
189
+ provider: model.provider,
190
+ model: modelId,
191
+ reason: reasons.join(', ')
192
+ };
193
+ }
194
+ /**
195
+ * Get model recommendation with alternatives
196
+ *
197
+ * @param options - LLM completion options
198
+ * @param constraints - Optional model constraints
199
+ * @returns Primary model and alternatives with reasoning
200
+ */
201
+ getModelRecommendation(options, constraints) {
202
+ // Detect task type from options
203
+ const taskType = this.detectTaskType(options);
204
+ // Analyze complexity (simplified version)
205
+ const complexity = this.estimateComplexity(options);
206
+ const registryComplexity = COMPLEXITY_MAP[complexity];
207
+ // Get primary model
208
+ const primaryId = this.registry.getBestModelForTask(taskType, registryComplexity, constraints);
209
+ if (!primaryId) {
210
+ throw new Error(`No suitable models found for task: ${taskType}`);
211
+ }
212
+ const primary = this.registry.getModel(primaryId);
213
+ if (!primary) {
214
+ throw new Error(`Model ${primaryId} not found`);
215
+ }
216
+ // Get alternatives (all models supporting this task, sorted by score)
217
+ const allModels = this.registry.getAllModels()
218
+ .filter(m => m.supportedTasks.includes(taskType) && m.modelId !== primaryId);
219
+ // Apply constraints to alternatives
220
+ let alternatives = allModels;
221
+ if (constraints) {
222
+ alternatives = this.applyConstraintsToModels(alternatives, constraints);
223
+ }
224
+ // Sort by quality rating for this task
225
+ alternatives.sort((a, b) => {
226
+ const ratingA = a.qualityRatings?.[taskType] ?? 0.5;
227
+ const ratingB = b.qualityRatings?.[taskType] ?? 0.5;
228
+ return ratingB - ratingA;
229
+ });
230
+ // Take top 3 alternatives
231
+ alternatives = alternatives.slice(0, 3);
232
+ // Build reasoning
233
+ const reasoning = this.buildSelectionReasoning(primary, taskType, complexity, constraints);
234
+ // Calculate confidence
235
+ const confidence = this.calculateSelectionConfidence(primary, taskType, alternatives.length);
236
+ return {
237
+ primary,
238
+ alternatives,
239
+ reasoning,
240
+ confidence
241
+ };
242
+ }
243
+ /**
244
+ * Update model quality rating after use
245
+ *
246
+ * Adapts quality ratings based on actual performance feedback.
247
+ *
248
+ * @param modelId - Model identifier
249
+ * @param taskType - Type of task performed
250
+ * @param success - Whether the task was successful
251
+ * @param latency - Actual latency in milliseconds
252
+ */
253
+ updateModelQuality(modelId, taskType, success, latency) {
254
+ // Convert success and latency to rating (0-1)
255
+ let rating = success ? 0.8 : 0.2;
256
+ // Adjust for latency (bonus for fast responses, penalty for slow)
257
+ const expectedLatency = 3000; // 3 seconds baseline
258
+ if (latency < expectedLatency) {
259
+ // Faster than expected: bonus up to +0.2
260
+ const bonus = Math.min(0.2, (expectedLatency - latency) / expectedLatency * 0.2);
261
+ rating = Math.min(1.0, rating + bonus);
262
+ }
263
+ else if (latency > expectedLatency * 2) {
264
+ // Much slower than expected: penalty up to -0.2
265
+ const penalty = Math.min(0.2, (latency - expectedLatency * 2) / expectedLatency * 0.2);
266
+ rating = Math.max(0.0, rating - penalty);
267
+ }
268
+ this.registry.updateQualityRating(modelId, taskType, rating);
269
+ }
270
+ /**
271
+ * Get registry for direct access
272
+ */
273
+ getRegistry() {
274
+ return this.registry;
275
+ }
276
+ /**
277
+ * Extract content from messages
278
+ */
279
+ extractContent(messages) {
280
+ return messages
281
+ .map(m => {
282
+ if (typeof m.content === 'string') {
283
+ return m.content;
284
+ }
285
+ return m.content
286
+ .filter(c => c.type === 'text')
287
+ .map(c => c.text || '')
288
+ .join(' ');
289
+ })
290
+ .join(' ');
291
+ }
292
+ /**
293
+ * Estimate complexity from options
294
+ */
295
+ estimateComplexity(options) {
296
+ const content = this.extractContent(options.messages);
297
+ const contentLength = content.length;
298
+ const maxTokens = options.maxTokens || 0;
299
+ const messageCount = options.messages.length;
300
+ let score = 0;
301
+ // Content length scoring
302
+ if (contentLength > 5000)
303
+ score += 2;
304
+ else if (contentLength > 2000)
305
+ score += 1;
306
+ // Max tokens scoring
307
+ if (maxTokens > 4000)
308
+ score += 2;
309
+ else if (maxTokens > 1000)
310
+ score += 1;
311
+ // Message count
312
+ if (messageCount > 5)
313
+ score += 1;
314
+ // Check for code patterns
315
+ if (/```|function|class|import/i.test(content)) {
316
+ score += 1;
317
+ }
318
+ // Check for complex keywords
319
+ if (/architect|design|optimize|refactor|analyze/i.test(content)) {
320
+ score += 1;
321
+ }
322
+ // Map score to complexity
323
+ if (score >= 6)
324
+ return HybridRouter_1.TaskComplexity.VERY_COMPLEX;
325
+ if (score >= 4)
326
+ return HybridRouter_1.TaskComplexity.COMPLEX;
327
+ if (score >= 2)
328
+ return HybridRouter_1.TaskComplexity.MODERATE;
329
+ return HybridRouter_1.TaskComplexity.SIMPLE;
330
+ }
331
+ /**
332
+ * Apply constraints to filter models
333
+ */
334
+ applyConstraintsToModels(models, constraints) {
335
+ let filtered = models;
336
+ if (constraints.maxCostPer1M !== undefined) {
337
+ filtered = filtered.filter(m => {
338
+ if (!m.pricing)
339
+ return true;
340
+ const avgCost = (m.pricing.inputPer1M + m.pricing.outputPer1M) / 2;
341
+ return avgCost <= constraints.maxCostPer1M;
342
+ });
343
+ }
344
+ if (constraints.requiresLocal) {
345
+ filtered = filtered.filter(m => m.provider === 'ollama' || m.availableOn.includes('local'));
346
+ }
347
+ if (constraints.minContextWindow) {
348
+ filtered = filtered.filter(m => m.contextWindow >= constraints.minContextWindow);
349
+ }
350
+ if (constraints.requiredCapabilities) {
351
+ filtered = filtered.filter(m => constraints.requiredCapabilities.every(cap => m.strengths.includes(cap)));
352
+ }
353
+ return filtered;
354
+ }
355
+ /**
356
+ * Build selection reasoning text
357
+ */
358
+ buildSelectionReasoning(model, taskType, complexity, constraints) {
359
+ const reasons = [];
360
+ reasons.push(`Selected ${model.modelId} for ${taskType}`);
361
+ reasons.push(`Task complexity: ${complexity}`);
362
+ if (model.qualityRatings?.[taskType]) {
363
+ const rating = (model.qualityRatings[taskType] * 100).toFixed(0);
364
+ reasons.push(`Quality rating: ${rating}%`);
365
+ }
366
+ if (model.benchmarks) {
367
+ const benchmarks = [];
368
+ if (model.benchmarks.humanEval) {
369
+ benchmarks.push(`HumanEval ${model.benchmarks.humanEval}%`);
370
+ }
371
+ if (model.benchmarks.sweBench) {
372
+ benchmarks.push(`SWE-bench ${model.benchmarks.sweBench}%`);
373
+ }
374
+ if (benchmarks.length > 0) {
375
+ reasons.push(`Benchmarks: ${benchmarks.join(', ')}`);
376
+ }
377
+ }
378
+ if (constraints?.requiresLocal) {
379
+ reasons.push('Local deployment required');
380
+ }
381
+ if (constraints?.maxCostPer1M) {
382
+ reasons.push(`Cost limit: $${constraints.maxCostPer1M}/1M tokens`);
383
+ }
384
+ reasons.push(`Context window: ${model.contextWindow.toLocaleString()} tokens`);
385
+ return reasons.join('. ');
386
+ }
387
+ /**
388
+ * Calculate confidence in selection
389
+ */
390
+ calculateSelectionConfidence(model, taskType, alternativeCount) {
391
+ let confidence = 0.5; // Base confidence
392
+ // Quality rating increases confidence
393
+ if (model.qualityRatings?.[taskType]) {
394
+ confidence = model.qualityRatings[taskType] * 0.6 + 0.2;
395
+ }
396
+ // Benchmarks increase confidence
397
+ if (model.benchmarks) {
398
+ const avgBenchmark = ((model.benchmarks.humanEval || 50) +
399
+ (model.benchmarks.sweBench || 50) +
400
+ (model.benchmarks.aiderPolyglot || 50)) / 300;
401
+ confidence = confidence * 0.7 + avgBenchmark * 0.3;
402
+ }
403
+ // Fewer alternatives = higher confidence in selection
404
+ if (alternativeCount === 0) {
405
+ confidence = Math.min(1.0, confidence + 0.2);
406
+ }
407
+ else if (alternativeCount > 3) {
408
+ confidence = Math.max(0.0, confidence - 0.1);
409
+ }
410
+ return Math.max(0.0, Math.min(1.0, confidence));
411
+ }
412
+ }
413
+ exports.HybridRouterModelSelection = HybridRouterModelSelection;
414
+ /**
415
+ * Create a model selection instance with default registry
416
+ */
417
+ function createModelSelection() {
418
+ return new HybridRouterModelSelection();
419
+ }
420
+ //# sourceMappingURL=HybridRouterModelSelection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HybridRouterModelSelection.js","sourceRoot":"","sources":["../../src/providers/HybridRouterModelSelection.ts"],"names":[],"mappings":"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"}
@@ -15,10 +15,11 @@ import { ILLMProvider, LLMProviderMetadata } from './ILLMProvider';
15
15
  import { ClaudeProviderConfig } from './ClaudeProvider';
16
16
  import { RuvllmProviderConfig } from './RuvllmProvider';
17
17
  import { OpenRouterConfig, OpenRouterModel } from './OpenRouterProvider';
18
+ import { OllamaProviderConfig } from './OllamaProvider';
18
19
  /**
19
20
  * Provider type enumeration
20
21
  */
21
- export type ProviderType = 'claude' | 'ruvllm' | 'openrouter' | 'auto';
22
+ export type ProviderType = 'claude' | 'ruvllm' | 'openrouter' | 'ollama' | 'auto';
22
23
  /**
23
24
  * Environment signals for smart provider detection
24
25
  */
@@ -31,6 +32,8 @@ export interface EnvironmentSignals {
31
32
  isClaudeCode: boolean;
32
33
  /** ruvLLM library is available */
33
34
  hasRuvllm: boolean;
35
+ /** Ollama running on localhost:11434 */
36
+ hasOllamaRunning: boolean;
34
37
  /** Explicit LLM_PROVIDER override */
35
38
  explicitProvider?: ProviderType;
36
39
  }
@@ -59,6 +62,8 @@ export interface LLMProviderFactoryConfig {
59
62
  ruvllm?: RuvllmProviderConfig;
60
63
  /** OpenRouter provider configuration */
61
64
  openrouter?: OpenRouterConfig;
65
+ /** Ollama provider configuration */
66
+ ollama?: OllamaProviderConfig;
62
67
  /** Default provider to use */
63
68
  defaultProvider?: ProviderType;
64
69
  /** Enable automatic fallback */
@@ -162,6 +167,14 @@ export declare class LLMProviderFactory {
162
167
  * Detect environment signals for smart provider selection
163
168
  */
164
169
  detectEnvironment(): EnvironmentSignals;
170
+ /**
171
+ * Cached Ollama check result (set during async initialization)
172
+ */
173
+ private cachedOllamaCheck;
174
+ /**
175
+ * Check if Ollama is running on localhost:11434
176
+ */
177
+ private checkOllamaAvailability;
165
178
  /**
166
179
  * Detect if running in Claude Code environment
167
180
  */
@@ -178,14 +191,15 @@ export declare class LLMProviderFactory {
178
191
  * Select default provider based on environment signals
179
192
  *
180
193
  * Provider Selection Matrix:
181
- * | Environment | ANTHROPIC_KEY | OPENROUTER_KEY | Selected Provider |
182
- * |---------------|---------------|----------------|-------------------|
183
- * | Claude Code | ✓ | - | Claude |
184
- * | Claude Code | - | ✓ | OpenRouter |
185
- * | External | ✓ | ✓ | OpenRouter |
186
- * | External | ✓ | - | Claude |
187
- * | External | - | ✓ | OpenRouter |
188
- * | Any | - | - | ruvllm (local) |
194
+ * | Environment | ANTHROPIC_KEY | OPENROUTER_KEY | OLLAMA | Selected Provider |
195
+ * |---------------|---------------|----------------|--------|-------------------|
196
+ * | Claude Code | ✓ | - | - | Claude |
197
+ * | Claude Code | - | ✓ | - | OpenRouter |
198
+ * | External | ✓ | ✓ | - | OpenRouter |
199
+ * | External | ✓ | - | - | Claude |
200
+ * | External | - | ✓ | - | OpenRouter |
201
+ * | Any | - | - | ✓ | Ollama (local) |
202
+ * | Any | - | - | - | ruvllm (local) |
189
203
  */
190
204
  private selectDefaultProvider;
191
205
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"LLMProviderFactory.d.ts","sourceRoot":"","sources":["../../src/providers/LLMProviderFactory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LLMProviderFactory.d.ts","sourceRoot":"","sources":["../../src/providers/LLMProviderFactory.ts"],"names":[],"mappings":"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"}