agentic-qe 2.6.0 → 2.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/CHANGELOG.md +156 -0
  2. package/README.md +222 -159
  3. package/dist/agents/BaseAgent.d.ts +19 -0
  4. package/dist/agents/BaseAgent.d.ts.map +1 -1
  5. package/dist/agents/BaseAgent.js +41 -1
  6. package/dist/agents/BaseAgent.js.map +1 -1
  7. package/dist/agents/CodeIntelligenceAgent.d.ts +14 -0
  8. package/dist/agents/CodeIntelligenceAgent.d.ts.map +1 -1
  9. package/dist/agents/CodeIntelligenceAgent.js +66 -0
  10. package/dist/agents/CodeIntelligenceAgent.js.map +1 -1
  11. package/dist/agents/CoverageAnalyzerAgent.d.ts +8 -0
  12. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  13. package/dist/agents/CoverageAnalyzerAgent.js +65 -1
  14. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  15. package/dist/agents/TestGeneratorAgent.d.ts +2 -2
  16. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  17. package/dist/agents/TestGeneratorAgent.js +16 -6
  18. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  19. package/dist/agents/adapters/AgentLLMAdapter.d.ts +127 -0
  20. package/dist/agents/adapters/AgentLLMAdapter.d.ts.map +1 -0
  21. package/dist/agents/adapters/AgentLLMAdapter.js +366 -0
  22. package/dist/agents/adapters/AgentLLMAdapter.js.map +1 -0
  23. package/dist/agents/adapters/index.d.ts +1 -0
  24. package/dist/agents/adapters/index.d.ts.map +1 -1
  25. package/dist/agents/adapters/index.js +5 -1
  26. package/dist/agents/adapters/index.js.map +1 -1
  27. package/dist/agents/interfaces/IAgentLLM.d.ts +257 -0
  28. package/dist/agents/interfaces/IAgentLLM.d.ts.map +1 -0
  29. package/dist/agents/interfaces/IAgentLLM.js +39 -0
  30. package/dist/agents/interfaces/IAgentLLM.js.map +1 -0
  31. package/dist/agents/interfaces/index.d.ts +10 -0
  32. package/dist/agents/interfaces/index.d.ts.map +1 -0
  33. package/dist/agents/interfaces/index.js +14 -0
  34. package/dist/agents/interfaces/index.js.map +1 -0
  35. package/dist/agents/n8n/N8nBaseAgent.d.ts +18 -0
  36. package/dist/agents/n8n/N8nBaseAgent.d.ts.map +1 -1
  37. package/dist/agents/n8n/N8nBaseAgent.js +80 -0
  38. package/dist/agents/n8n/N8nBaseAgent.js.map +1 -1
  39. package/dist/agents/pool/AgentPool.d.ts +112 -0
  40. package/dist/agents/pool/AgentPool.d.ts.map +1 -0
  41. package/dist/agents/pool/AgentPool.js +573 -0
  42. package/dist/agents/pool/AgentPool.js.map +1 -0
  43. package/dist/agents/pool/QEAgentPoolFactory.d.ts +118 -0
  44. package/dist/agents/pool/QEAgentPoolFactory.d.ts.map +1 -0
  45. package/dist/agents/pool/QEAgentPoolFactory.js +251 -0
  46. package/dist/agents/pool/QEAgentPoolFactory.js.map +1 -0
  47. package/dist/agents/pool/index.d.ts +34 -0
  48. package/dist/agents/pool/index.d.ts.map +1 -0
  49. package/dist/agents/pool/index.js +44 -0
  50. package/dist/agents/pool/index.js.map +1 -0
  51. package/dist/agents/pool/types.d.ts +227 -0
  52. package/dist/agents/pool/types.d.ts.map +1 -0
  53. package/dist/agents/pool/types.js +28 -0
  54. package/dist/agents/pool/types.js.map +1 -0
  55. package/dist/cli/commands/providers.d.ts +50 -0
  56. package/dist/cli/commands/providers.d.ts.map +1 -0
  57. package/dist/cli/commands/providers.js +403 -0
  58. package/dist/cli/commands/providers.js.map +1 -0
  59. package/dist/cli/index.js +62 -0
  60. package/dist/cli/index.js.map +1 -1
  61. package/dist/code-intelligence/indexing/FileWatcher.d.ts.map +1 -1
  62. package/dist/code-intelligence/indexing/FileWatcher.js +11 -8
  63. package/dist/code-intelligence/indexing/FileWatcher.js.map +1 -1
  64. package/dist/config/ConfigLoader.d.ts +85 -0
  65. package/dist/config/ConfigLoader.d.ts.map +1 -0
  66. package/dist/config/ConfigLoader.js +420 -0
  67. package/dist/config/ConfigLoader.js.map +1 -0
  68. package/dist/config/ProviderConfig.d.ts +153 -0
  69. package/dist/config/ProviderConfig.d.ts.map +1 -0
  70. package/dist/config/ProviderConfig.js +155 -0
  71. package/dist/config/ProviderConfig.js.map +1 -0
  72. package/dist/config/index.d.ts +35 -0
  73. package/dist/config/index.d.ts.map +1 -0
  74. package/dist/config/index.js +45 -0
  75. package/dist/config/index.js.map +1 -0
  76. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  77. package/dist/mcp/handlers/agent-spawn.d.ts +71 -5
  78. package/dist/mcp/handlers/agent-spawn.d.ts.map +1 -1
  79. package/dist/mcp/handlers/agent-spawn.js +336 -110
  80. package/dist/mcp/handlers/agent-spawn.js.map +1 -1
  81. package/dist/mcp/handlers/fleet-init.d.ts +24 -0
  82. package/dist/mcp/handlers/fleet-init.d.ts.map +1 -1
  83. package/dist/mcp/handlers/fleet-init.js +56 -4
  84. package/dist/mcp/handlers/fleet-init.js.map +1 -1
  85. package/dist/mcp/server-instructions.d.ts +1 -1
  86. package/dist/mcp/server-instructions.js +1 -1
  87. package/dist/mcp/server.d.ts +1 -0
  88. package/dist/mcp/server.d.ts.map +1 -1
  89. package/dist/memory/HNSWPatternStore.d.ts.map +1 -1
  90. package/dist/memory/HNSWPatternStore.js +23 -0
  91. package/dist/memory/HNSWPatternStore.js.map +1 -1
  92. package/dist/memory/RuVectorPatternStore.d.ts +5 -0
  93. package/dist/memory/RuVectorPatternStore.d.ts.map +1 -1
  94. package/dist/memory/RuVectorPatternStore.js +11 -0
  95. package/dist/memory/RuVectorPatternStore.js.map +1 -1
  96. package/dist/plugins/BasePlugin.d.ts +111 -0
  97. package/dist/plugins/BasePlugin.d.ts.map +1 -0
  98. package/dist/plugins/BasePlugin.js +154 -0
  99. package/dist/plugins/BasePlugin.js.map +1 -0
  100. package/dist/plugins/PluginManager.d.ts +145 -0
  101. package/dist/plugins/PluginManager.d.ts.map +1 -0
  102. package/dist/plugins/PluginManager.js +862 -0
  103. package/dist/plugins/PluginManager.js.map +1 -0
  104. package/dist/plugins/adapters/McpToolsPlugin.d.ts +98 -0
  105. package/dist/plugins/adapters/McpToolsPlugin.d.ts.map +1 -0
  106. package/dist/plugins/adapters/McpToolsPlugin.js +518 -0
  107. package/dist/plugins/adapters/McpToolsPlugin.js.map +1 -0
  108. package/dist/plugins/adapters/PlaywrightPlugin.d.ts +63 -0
  109. package/dist/plugins/adapters/PlaywrightPlugin.d.ts.map +1 -0
  110. package/dist/plugins/adapters/PlaywrightPlugin.js +451 -0
  111. package/dist/plugins/adapters/PlaywrightPlugin.js.map +1 -0
  112. package/dist/plugins/adapters/VitestPlugin.d.ts +74 -0
  113. package/dist/plugins/adapters/VitestPlugin.d.ts.map +1 -0
  114. package/dist/plugins/adapters/VitestPlugin.js +589 -0
  115. package/dist/plugins/adapters/VitestPlugin.js.map +1 -0
  116. package/dist/plugins/adapters/index.d.ts +8 -0
  117. package/dist/plugins/adapters/index.d.ts.map +1 -0
  118. package/dist/plugins/adapters/index.js +17 -0
  119. package/dist/plugins/adapters/index.js.map +1 -0
  120. package/dist/plugins/index.d.ts +32 -0
  121. package/dist/plugins/index.d.ts.map +1 -0
  122. package/dist/plugins/index.js +48 -0
  123. package/dist/plugins/index.js.map +1 -0
  124. package/dist/plugins/types.d.ts +528 -0
  125. package/dist/plugins/types.d.ts.map +1 -0
  126. package/dist/plugins/types.js +61 -0
  127. package/dist/plugins/types.js.map +1 -0
  128. package/dist/providers/CostOptimizationStrategies.d.ts +297 -0
  129. package/dist/providers/CostOptimizationStrategies.d.ts.map +1 -0
  130. package/dist/providers/CostOptimizationStrategies.js +831 -0
  131. package/dist/providers/CostOptimizationStrategies.js.map +1 -0
  132. package/dist/providers/HybridRouter.d.ts +142 -5
  133. package/dist/providers/HybridRouter.d.ts.map +1 -1
  134. package/dist/providers/HybridRouter.js +472 -6
  135. package/dist/providers/HybridRouter.js.map +1 -1
  136. package/dist/providers/HybridRouterComplexityIntegration.d.ts +169 -0
  137. package/dist/providers/HybridRouterComplexityIntegration.d.ts.map +1 -0
  138. package/dist/providers/HybridRouterComplexityIntegration.js +319 -0
  139. package/dist/providers/HybridRouterComplexityIntegration.js.map +1 -0
  140. package/dist/providers/HybridRouterModelSelection.d.ts +106 -0
  141. package/dist/providers/HybridRouterModelSelection.d.ts.map +1 -0
  142. package/dist/providers/HybridRouterModelSelection.js +420 -0
  143. package/dist/providers/HybridRouterModelSelection.js.map +1 -0
  144. package/dist/providers/LLMProviderFactory.d.ts +23 -9
  145. package/dist/providers/LLMProviderFactory.d.ts.map +1 -1
  146. package/dist/providers/LLMProviderFactory.js +54 -11
  147. package/dist/providers/LLMProviderFactory.js.map +1 -1
  148. package/dist/providers/OllamaProvider.d.ts +122 -0
  149. package/dist/providers/OllamaProvider.d.ts.map +1 -0
  150. package/dist/providers/OllamaProvider.js +425 -0
  151. package/dist/providers/OllamaProvider.js.map +1 -0
  152. package/dist/providers/index.d.ts +6 -1
  153. package/dist/providers/index.d.ts.map +1 -1
  154. package/dist/providers/index.js +17 -1
  155. package/dist/providers/index.js.map +1 -1
  156. package/dist/routing/ComplexityClassifier.d.ts +266 -0
  157. package/dist/routing/ComplexityClassifier.d.ts.map +1 -0
  158. package/dist/routing/ComplexityClassifier.js +567 -0
  159. package/dist/routing/ComplexityClassifier.js.map +1 -0
  160. package/dist/routing/ModelCapabilityRegistry.d.ts +98 -0
  161. package/dist/routing/ModelCapabilityRegistry.d.ts.map +1 -0
  162. package/dist/routing/ModelCapabilityRegistry.js +216 -0
  163. package/dist/routing/ModelCapabilityRegistry.js.map +1 -0
  164. package/dist/routing/index.d.ts +13 -0
  165. package/dist/routing/index.d.ts.map +1 -0
  166. package/dist/routing/index.js +24 -0
  167. package/dist/routing/index.js.map +1 -0
  168. package/docs/reference/model-capability-registry.md +402 -0
  169. package/docs/reference/provider-config-schema.md +608 -0
  170. package/package.json +21 -3
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Model Capability Registry
3
+ *
4
+ * Central registry for tracking LLM model capabilities, performance benchmarks,
5
+ * and intelligent model selection based on task requirements and constraints.
6
+ *
7
+ * @module routing/ModelCapabilityRegistry
8
+ */
9
+ export type TaskType = 'test-generation' | 'coverage-analysis' | 'code-review' | 'bug-detection' | 'documentation' | 'refactoring' | 'performance-testing' | 'security-scanning';
10
+ export interface ModelCapabilities {
11
+ modelId: string;
12
+ provider: 'ollama' | 'openrouter' | 'groq' | 'together' | 'claude' | 'ruvllm';
13
+ parameters: string;
14
+ contextWindow: number;
15
+ pricing?: {
16
+ inputPer1M: number;
17
+ outputPer1M: number;
18
+ };
19
+ supportedTasks: TaskType[];
20
+ strengths: string[];
21
+ weaknesses?: string[];
22
+ benchmarks?: {
23
+ humanEval?: number;
24
+ sweBench?: number;
25
+ aiderPolyglot?: number;
26
+ };
27
+ availableOn: string[];
28
+ requiresGPU: boolean;
29
+ vramRequired?: number;
30
+ qualityRatings?: Partial<Record<TaskType, number>>;
31
+ }
32
+ export interface ModelConstraints {
33
+ maxCostPer1M?: number;
34
+ requiresLocal?: boolean;
35
+ preferFree?: boolean;
36
+ minContextWindow?: number;
37
+ requiredCapabilities?: string[];
38
+ }
39
+ /**
40
+ * Registry for managing model capabilities and intelligent selection
41
+ */
42
+ export declare class ModelCapabilityRegistry {
43
+ private models;
44
+ constructor();
45
+ /**
46
+ * Load default model configurations from bundled data
47
+ */
48
+ loadDefaultModels(): void;
49
+ /**
50
+ * Register a new model or update existing model capabilities
51
+ */
52
+ registerModel(model: ModelCapabilities): void;
53
+ /**
54
+ * Get model capabilities by ID
55
+ */
56
+ getModel(modelId: string): ModelCapabilities | undefined;
57
+ /**
58
+ * Get all registered models
59
+ */
60
+ getAllModels(): ModelCapabilities[];
61
+ /**
62
+ * Get the best model for a specific task based on complexity and constraints
63
+ *
64
+ * @param task - Type of task to perform
65
+ * @param complexity - Task complexity level
66
+ * @param constraints - Optional constraints (cost, local deployment, etc.)
67
+ * @returns Model ID of the best match, or undefined if no suitable model found
68
+ */
69
+ getBestModelForTask(task: TaskType, complexity: 'simple' | 'moderate' | 'complex' | 'very_complex', constraints?: ModelConstraints): string | undefined;
70
+ /**
71
+ * Get all models available from a specific provider
72
+ */
73
+ getModelsForProvider(provider: string): ModelCapabilities[];
74
+ /**
75
+ * Update quality rating for a model on a specific task
76
+ * Used for adaptive learning based on actual performance
77
+ */
78
+ updateQualityRating(modelId: string, task: TaskType, rating: number): void;
79
+ /**
80
+ * Apply constraints to filter candidate models
81
+ */
82
+ private applyConstraints;
83
+ /**
84
+ * Calculate a score for a model based on task, complexity, and constraints
85
+ * Higher score = better match
86
+ */
87
+ private calculateModelScore;
88
+ /**
89
+ * Get complexity match score (0-1) based on model size and task complexity
90
+ */
91
+ private getComplexityMatchScore;
92
+ /**
93
+ * Get default model data
94
+ * Loads from bundled JSON file
95
+ */
96
+ private getDefaultModelData;
97
+ }
98
+ //# sourceMappingURL=ModelCapabilityRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelCapabilityRegistry.d.ts","sourceRoot":"","sources":["../../src/routing/ModelCapabilityRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,QAAQ,GAChB,iBAAiB,GACjB,mBAAmB,GACnB,aAAa,GACb,eAAe,GACf,eAAe,GACf,aAAa,GACb,qBAAqB,GACrB,mBAAmB,CAAC;AAExB,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,GAAG,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAG9E,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAGF,cAAc,EAAE,QAAQ,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAGtB,UAAU,CAAC,EAAE;QACX,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IAGF,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAAiC;;IAM/C;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAOzB;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAI7C;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIxD;;OAEG;IACH,YAAY,IAAI,iBAAiB,EAAE;IAInC;;;;;;;OAOG;IACH,mBAAmB,CACjB,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,cAAc,EAC9D,WAAW,CAAC,EAAE,gBAAgB,GAC7B,MAAM,GAAG,SAAS;IA2BrB;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAK3D;;;OAGG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAe1E;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkDxB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA2C3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA8B/B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;CAW5B"}
@@ -0,0 +1,216 @@
1
+ "use strict";
2
+ /**
3
+ * Model Capability Registry
4
+ *
5
+ * Central registry for tracking LLM model capabilities, performance benchmarks,
6
+ * and intelligent model selection based on task requirements and constraints.
7
+ *
8
+ * @module routing/ModelCapabilityRegistry
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.ModelCapabilityRegistry = void 0;
12
+ /**
13
+ * Registry for managing model capabilities and intelligent selection
14
+ */
15
+ class ModelCapabilityRegistry {
16
+ constructor() {
17
+ this.models = new Map();
18
+ }
19
+ /**
20
+ * Load default model configurations from bundled data
21
+ */
22
+ loadDefaultModels() {
23
+ // Models will be loaded from JSON file
24
+ // This method is called during initialization
25
+ const defaultModels = this.getDefaultModelData();
26
+ defaultModels.forEach(model => this.registerModel(model));
27
+ }
28
+ /**
29
+ * Register a new model or update existing model capabilities
30
+ */
31
+ registerModel(model) {
32
+ this.models.set(model.modelId, model);
33
+ }
34
+ /**
35
+ * Get model capabilities by ID
36
+ */
37
+ getModel(modelId) {
38
+ return this.models.get(modelId);
39
+ }
40
+ /**
41
+ * Get all registered models
42
+ */
43
+ getAllModels() {
44
+ return Array.from(this.models.values());
45
+ }
46
+ /**
47
+ * Get the best model for a specific task based on complexity and constraints
48
+ *
49
+ * @param task - Type of task to perform
50
+ * @param complexity - Task complexity level
51
+ * @param constraints - Optional constraints (cost, local deployment, etc.)
52
+ * @returns Model ID of the best match, or undefined if no suitable model found
53
+ */
54
+ getBestModelForTask(task, complexity, constraints) {
55
+ // Filter models that support the task
56
+ let candidates = Array.from(this.models.values())
57
+ .filter(model => model.supportedTasks.includes(task));
58
+ // Apply constraints
59
+ if (constraints) {
60
+ candidates = this.applyConstraints(candidates, constraints);
61
+ }
62
+ // If no candidates remain, return undefined
63
+ if (candidates.length === 0) {
64
+ return undefined;
65
+ }
66
+ // Score and rank candidates
67
+ const scored = candidates.map(model => ({
68
+ model,
69
+ score: this.calculateModelScore(model, task, complexity, constraints)
70
+ }));
71
+ // Sort by score descending
72
+ scored.sort((a, b) => b.score - a.score);
73
+ return scored[0]?.model.modelId;
74
+ }
75
+ /**
76
+ * Get all models available from a specific provider
77
+ */
78
+ getModelsForProvider(provider) {
79
+ return Array.from(this.models.values())
80
+ .filter(model => model.provider === provider);
81
+ }
82
+ /**
83
+ * Update quality rating for a model on a specific task
84
+ * Used for adaptive learning based on actual performance
85
+ */
86
+ updateQualityRating(modelId, task, rating) {
87
+ const model = this.models.get(modelId);
88
+ if (!model) {
89
+ throw new Error(`Model not found: ${modelId}`);
90
+ }
91
+ if (!model.qualityRatings) {
92
+ model.qualityRatings = {};
93
+ }
94
+ // Update rating with exponential moving average (0.3 weight for new rating)
95
+ const currentRating = model.qualityRatings[task] ?? 0.5;
96
+ model.qualityRatings[task] = currentRating * 0.7 + rating * 0.3;
97
+ }
98
+ /**
99
+ * Apply constraints to filter candidate models
100
+ */
101
+ applyConstraints(candidates, constraints) {
102
+ let filtered = candidates;
103
+ // Cost constraint
104
+ if (constraints.maxCostPer1M !== undefined) {
105
+ filtered = filtered.filter(model => {
106
+ if (!model.pricing)
107
+ return true; // Free models pass
108
+ const avgCost = (model.pricing.inputPer1M + model.pricing.outputPer1M) / 2;
109
+ return avgCost <= constraints.maxCostPer1M;
110
+ });
111
+ }
112
+ // Local deployment constraint
113
+ if (constraints.requiresLocal) {
114
+ filtered = filtered.filter(model => model.provider === 'ollama' || model.availableOn.includes('local'));
115
+ }
116
+ // Free tier preference
117
+ if (constraints.preferFree) {
118
+ const freeModels = filtered.filter(model => !model.pricing ||
119
+ (model.pricing.inputPer1M === 0 && model.pricing.outputPer1M === 0));
120
+ if (freeModels.length > 0) {
121
+ filtered = freeModels;
122
+ }
123
+ }
124
+ // Context window requirement
125
+ if (constraints.minContextWindow) {
126
+ filtered = filtered.filter(model => model.contextWindow >= constraints.minContextWindow);
127
+ }
128
+ // Required capabilities
129
+ if (constraints.requiredCapabilities && constraints.requiredCapabilities.length > 0) {
130
+ filtered = filtered.filter(model => constraints.requiredCapabilities.every(cap => model.strengths.includes(cap)));
131
+ }
132
+ return filtered;
133
+ }
134
+ /**
135
+ * Calculate a score for a model based on task, complexity, and constraints
136
+ * Higher score = better match
137
+ */
138
+ calculateModelScore(model, task, complexity, constraints) {
139
+ let score = 0;
140
+ // Base score from quality rating (0-40 points)
141
+ if (model.qualityRatings?.[task]) {
142
+ score += model.qualityRatings[task] * 40;
143
+ }
144
+ else {
145
+ score += 20; // Default mid-range score
146
+ }
147
+ // Benchmark scores (0-30 points)
148
+ if (model.benchmarks) {
149
+ const benchmarkScore = ((model.benchmarks.humanEval ?? 50) * 0.4 +
150
+ (model.benchmarks.sweBench ?? 50) * 0.4 +
151
+ (model.benchmarks.aiderPolyglot ?? 50) * 0.2) / 100;
152
+ score += benchmarkScore * 30;
153
+ }
154
+ // Complexity matching (0-20 points)
155
+ const complexityScore = this.getComplexityMatchScore(model, complexity);
156
+ score += complexityScore * 20;
157
+ // Cost efficiency (0-10 points)
158
+ if (constraints?.preferFree || constraints?.maxCostPer1M) {
159
+ if (!model.pricing || model.pricing.inputPer1M === 0) {
160
+ score += 10; // Free models get full points
161
+ }
162
+ else if (model.pricing) {
163
+ const avgCost = (model.pricing.inputPer1M + model.pricing.outputPer1M) / 2;
164
+ const maxCost = constraints?.maxCostPer1M ?? 10;
165
+ score += Math.max(0, 10 * (1 - avgCost / maxCost));
166
+ }
167
+ }
168
+ return score;
169
+ }
170
+ /**
171
+ * Get complexity match score (0-1) based on model size and task complexity
172
+ */
173
+ getComplexityMatchScore(model, complexity) {
174
+ // Extract parameter count (rough approximation)
175
+ const paramMatch = model.parameters.match(/(\d+)B/);
176
+ const paramCount = paramMatch ? parseInt(paramMatch[1]) : 10;
177
+ // Map complexity to ideal parameter range
178
+ const idealParams = {
179
+ simple: [1, 15], // 1B-15B ideal for simple tasks
180
+ moderate: [10, 40], // 10B-40B for moderate
181
+ complex: [30, 80], // 30B-80B for complex
182
+ very_complex: [60, 150] // 60B+ for very complex
183
+ };
184
+ const [min, max] = idealParams[complexity];
185
+ // Calculate match score based on how well param count fits range
186
+ if (paramCount >= min && paramCount <= max) {
187
+ return 1.0; // Perfect match
188
+ }
189
+ else if (paramCount < min) {
190
+ // Too small - score decreases as we get further from min
191
+ return Math.max(0, 1 - (min - paramCount) / min);
192
+ }
193
+ else {
194
+ // Too large - minor penalty for being overpowered
195
+ return Math.max(0.5, 1 - (paramCount - max) / (max * 2));
196
+ }
197
+ }
198
+ /**
199
+ * Get default model data
200
+ * Loads from bundled JSON file
201
+ */
202
+ getDefaultModelData() {
203
+ try {
204
+ // Import JSON data directly (works with resolveJsonModule)
205
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
206
+ const modelData = require('./data/model-capabilities.json');
207
+ return modelData;
208
+ }
209
+ catch (error) {
210
+ console.warn('Failed to load model capabilities data:', error);
211
+ return [];
212
+ }
213
+ }
214
+ }
215
+ exports.ModelCapabilityRegistry = ModelCapabilityRegistry;
216
+ //# sourceMappingURL=ModelCapabilityRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelCapabilityRegistry.js","sourceRoot":"","sources":["../../src/routing/ModelCapabilityRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Routing Module - Intelligent Task Routing and Classification
3
+ *
4
+ * Provides ML-based complexity classification for optimal LLM provider routing.
5
+ *
6
+ * @module routing
7
+ * @version 1.0.0
8
+ */
9
+ export { ComplexityClassifier, TaskComplexity, TaskFeatures, RoutingHistoryEntry, ComplexityClassifierConfig } from './ComplexityClassifier';
10
+ export { ModelCapabilityRegistry, type ModelCapabilities, type ModelConstraints, type TaskType } from './ModelCapabilityRegistry';
11
+ export { PromptCompressor, RequestBatcher, SmartCacheStrategy, ModelRightSizer, CostOptimizationManager } from '../providers/CostOptimizationStrategies';
12
+ export type { RequestGroup, CacheStrategy, CompressionResult, ModelRightSizingResult, BatchExecutionResult, CostOptimizationConfig } from '../providers/CostOptimizationStrategies';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,0BAA0B,EAC3B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACd,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACxB,MAAM,yCAAyC,CAAC;AACjD,YAAY,EACV,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,yCAAyC,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * Routing Module - Intelligent Task Routing and Classification
4
+ *
5
+ * Provides ML-based complexity classification for optimal LLM provider routing.
6
+ *
7
+ * @module routing
8
+ * @version 1.0.0
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.CostOptimizationManager = exports.ModelRightSizer = exports.SmartCacheStrategy = exports.RequestBatcher = exports.PromptCompressor = exports.ModelCapabilityRegistry = exports.TaskComplexity = exports.ComplexityClassifier = void 0;
12
+ var ComplexityClassifier_1 = require("./ComplexityClassifier");
13
+ Object.defineProperty(exports, "ComplexityClassifier", { enumerable: true, get: function () { return ComplexityClassifier_1.ComplexityClassifier; } });
14
+ Object.defineProperty(exports, "TaskComplexity", { enumerable: true, get: function () { return ComplexityClassifier_1.TaskComplexity; } });
15
+ var ModelCapabilityRegistry_1 = require("./ModelCapabilityRegistry");
16
+ Object.defineProperty(exports, "ModelCapabilityRegistry", { enumerable: true, get: function () { return ModelCapabilityRegistry_1.ModelCapabilityRegistry; } });
17
+ // Cost Optimization Strategies (Task 2.3.2)
18
+ var CostOptimizationStrategies_1 = require("../providers/CostOptimizationStrategies");
19
+ Object.defineProperty(exports, "PromptCompressor", { enumerable: true, get: function () { return CostOptimizationStrategies_1.PromptCompressor; } });
20
+ Object.defineProperty(exports, "RequestBatcher", { enumerable: true, get: function () { return CostOptimizationStrategies_1.RequestBatcher; } });
21
+ Object.defineProperty(exports, "SmartCacheStrategy", { enumerable: true, get: function () { return CostOptimizationStrategies_1.SmartCacheStrategy; } });
22
+ Object.defineProperty(exports, "ModelRightSizer", { enumerable: true, get: function () { return CostOptimizationStrategies_1.ModelRightSizer; } });
23
+ Object.defineProperty(exports, "CostOptimizationManager", { enumerable: true, get: function () { return CostOptimizationStrategies_1.CostOptimizationManager; } });
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,+DAMgC;AAL9B,4HAAA,oBAAoB,OAAA;AACpB,sHAAA,cAAc,OAAA;AAMhB,qEAKmC;AAJjC,kIAAA,uBAAuB,OAAA;AAMzB,4CAA4C;AAC5C,sFAMiD;AAL/C,8HAAA,gBAAgB,OAAA;AAChB,4HAAA,cAAc,OAAA;AACd,gIAAA,kBAAkB,OAAA;AAClB,6HAAA,eAAe,OAAA;AACf,qIAAA,uBAAuB,OAAA"}