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.
- package/.claude/agents/qe-code-intelligence.md +88 -1
- package/CHANGELOG.md +134 -0
- package/README.md +222 -159
- package/dist/agents/BaseAgent.d.ts +19 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +41 -1
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/CodeIntelligenceAgent.d.ts +18 -1
- package/dist/agents/CodeIntelligenceAgent.d.ts.map +1 -1
- package/dist/agents/CodeIntelligenceAgent.js +96 -1
- package/dist/agents/CodeIntelligenceAgent.js.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.d.ts +8 -0
- package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.js +65 -1
- package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
- package/dist/agents/TestGeneratorAgent.d.ts +2 -2
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +16 -6
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/agents/adapters/AgentLLMAdapter.d.ts +127 -0
- package/dist/agents/adapters/AgentLLMAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/AgentLLMAdapter.js +366 -0
- package/dist/agents/adapters/AgentLLMAdapter.js.map +1 -0
- package/dist/agents/adapters/index.d.ts +1 -0
- package/dist/agents/adapters/index.d.ts.map +1 -1
- package/dist/agents/adapters/index.js +5 -1
- package/dist/agents/adapters/index.js.map +1 -1
- package/dist/agents/interfaces/IAgentLLM.d.ts +257 -0
- package/dist/agents/interfaces/IAgentLLM.d.ts.map +1 -0
- package/dist/agents/interfaces/IAgentLLM.js +39 -0
- package/dist/agents/interfaces/IAgentLLM.js.map +1 -0
- package/dist/agents/interfaces/index.d.ts +10 -0
- package/dist/agents/interfaces/index.d.ts.map +1 -0
- package/dist/agents/interfaces/index.js +14 -0
- package/dist/agents/interfaces/index.js.map +1 -0
- package/dist/agents/n8n/N8nBaseAgent.d.ts +18 -0
- package/dist/agents/n8n/N8nBaseAgent.d.ts.map +1 -1
- package/dist/agents/n8n/N8nBaseAgent.js +80 -0
- package/dist/agents/n8n/N8nBaseAgent.js.map +1 -1
- package/dist/cli/commands/knowledge-graph.d.ts +30 -0
- package/dist/cli/commands/knowledge-graph.d.ts.map +1 -1
- package/dist/cli/commands/knowledge-graph.js +206 -4
- package/dist/cli/commands/knowledge-graph.js.map +1 -1
- package/dist/cli/commands/providers.d.ts +50 -0
- package/dist/cli/commands/providers.d.ts.map +1 -0
- package/dist/cli/commands/providers.js +403 -0
- package/dist/cli/commands/providers.js.map +1 -0
- package/dist/cli/index.js +214 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/code-intelligence/indexing/FileWatcher.d.ts.map +1 -1
- package/dist/code-intelligence/indexing/FileWatcher.js +11 -8
- package/dist/code-intelligence/indexing/FileWatcher.js.map +1 -1
- package/dist/code-intelligence/inference/ComponentBoundaryAnalyzer.d.ts +75 -0
- package/dist/code-intelligence/inference/ComponentBoundaryAnalyzer.d.ts.map +1 -0
- package/dist/code-intelligence/inference/ComponentBoundaryAnalyzer.js +400 -0
- package/dist/code-intelligence/inference/ComponentBoundaryAnalyzer.js.map +1 -0
- package/dist/code-intelligence/inference/ExternalSystemDetector.d.ts +31 -0
- package/dist/code-intelligence/inference/ExternalSystemDetector.d.ts.map +1 -0
- package/dist/code-intelligence/inference/ExternalSystemDetector.js +523 -0
- package/dist/code-intelligence/inference/ExternalSystemDetector.js.map +1 -0
- package/dist/code-intelligence/inference/ProjectMetadataAnalyzer.d.ts +78 -0
- package/dist/code-intelligence/inference/ProjectMetadataAnalyzer.d.ts.map +1 -0
- package/dist/code-intelligence/inference/ProjectMetadataAnalyzer.js +491 -0
- package/dist/code-intelligence/inference/ProjectMetadataAnalyzer.js.map +1 -0
- package/dist/code-intelligence/inference/index.d.ts +36 -0
- package/dist/code-intelligence/inference/index.d.ts.map +1 -0
- package/dist/code-intelligence/inference/index.js +65 -0
- package/dist/code-intelligence/inference/index.js.map +1 -0
- package/dist/code-intelligence/inference/types.d.ts +196 -0
- package/dist/code-intelligence/inference/types.d.ts.map +1 -0
- package/dist/code-intelligence/inference/types.js +9 -0
- package/dist/code-intelligence/inference/types.js.map +1 -0
- package/dist/code-intelligence/visualization/C4ComponentDiagramBuilder.d.ts +75 -0
- package/dist/code-intelligence/visualization/C4ComponentDiagramBuilder.d.ts.map +1 -0
- package/dist/code-intelligence/visualization/C4ComponentDiagramBuilder.js +267 -0
- package/dist/code-intelligence/visualization/C4ComponentDiagramBuilder.js.map +1 -0
- package/dist/code-intelligence/visualization/C4ContainerDiagramBuilder.d.ts +138 -0
- package/dist/code-intelligence/visualization/C4ContainerDiagramBuilder.d.ts.map +1 -0
- package/dist/code-intelligence/visualization/C4ContainerDiagramBuilder.js +343 -0
- package/dist/code-intelligence/visualization/C4ContainerDiagramBuilder.js.map +1 -0
- package/dist/code-intelligence/visualization/C4ContextDiagramBuilder.d.ts +67 -0
- package/dist/code-intelligence/visualization/C4ContextDiagramBuilder.d.ts.map +1 -0
- package/dist/code-intelligence/visualization/C4ContextDiagramBuilder.js +152 -0
- package/dist/code-intelligence/visualization/C4ContextDiagramBuilder.js.map +1 -0
- package/dist/code-intelligence/visualization/MermaidGenerator.d.ts +79 -0
- package/dist/code-intelligence/visualization/MermaidGenerator.d.ts.map +1 -1
- package/dist/code-intelligence/visualization/MermaidGenerator.js +143 -0
- package/dist/code-intelligence/visualization/MermaidGenerator.js.map +1 -1
- package/dist/config/ConfigLoader.d.ts +86 -0
- package/dist/config/ConfigLoader.d.ts.map +1 -0
- package/dist/config/ConfigLoader.js +450 -0
- package/dist/config/ConfigLoader.js.map +1 -0
- package/dist/config/ProviderConfig.d.ts +153 -0
- package/dist/config/ProviderConfig.d.ts.map +1 -0
- package/dist/config/ProviderConfig.js +155 -0
- package/dist/config/ProviderConfig.js.map +1 -0
- package/dist/config/index.d.ts +35 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +45 -0
- package/dist/config/index.js.map +1 -0
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/mcp/handlers/integration/integration-test-orchestrate.d.ts.map +1 -1
- package/dist/mcp/handlers/integration/integration-test-orchestrate.js +6 -9
- package/dist/mcp/handlers/integration/integration-test-orchestrate.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/mcp/server.d.ts +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/memory/HNSWPatternStore.d.ts.map +1 -1
- package/dist/memory/HNSWPatternStore.js +23 -0
- package/dist/memory/HNSWPatternStore.js.map +1 -1
- package/dist/memory/RuVectorPatternStore.d.ts +5 -0
- package/dist/memory/RuVectorPatternStore.d.ts.map +1 -1
- package/dist/memory/RuVectorPatternStore.js +11 -0
- package/dist/memory/RuVectorPatternStore.js.map +1 -1
- package/dist/providers/CostOptimizationStrategies.d.ts +297 -0
- package/dist/providers/CostOptimizationStrategies.d.ts.map +1 -0
- package/dist/providers/CostOptimizationStrategies.js +831 -0
- package/dist/providers/CostOptimizationStrategies.js.map +1 -0
- package/dist/providers/HybridRouter.d.ts +142 -5
- package/dist/providers/HybridRouter.d.ts.map +1 -1
- package/dist/providers/HybridRouter.js +472 -6
- package/dist/providers/HybridRouter.js.map +1 -1
- package/dist/providers/HybridRouterComplexityIntegration.d.ts +169 -0
- package/dist/providers/HybridRouterComplexityIntegration.d.ts.map +1 -0
- package/dist/providers/HybridRouterComplexityIntegration.js +319 -0
- package/dist/providers/HybridRouterComplexityIntegration.js.map +1 -0
- package/dist/providers/HybridRouterModelSelection.d.ts +106 -0
- package/dist/providers/HybridRouterModelSelection.d.ts.map +1 -0
- package/dist/providers/HybridRouterModelSelection.js +420 -0
- package/dist/providers/HybridRouterModelSelection.js.map +1 -0
- package/dist/providers/LLMProviderFactory.d.ts +23 -9
- package/dist/providers/LLMProviderFactory.d.ts.map +1 -1
- package/dist/providers/LLMProviderFactory.js +54 -11
- package/dist/providers/LLMProviderFactory.js.map +1 -1
- package/dist/providers/OllamaProvider.d.ts +122 -0
- package/dist/providers/OllamaProvider.d.ts.map +1 -0
- package/dist/providers/OllamaProvider.js +425 -0
- package/dist/providers/OllamaProvider.js.map +1 -0
- package/dist/providers/index.d.ts +6 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +17 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/routing/ComplexityClassifier.d.ts +266 -0
- package/dist/routing/ComplexityClassifier.d.ts.map +1 -0
- package/dist/routing/ComplexityClassifier.js +567 -0
- package/dist/routing/ComplexityClassifier.js.map +1 -0
- package/dist/routing/ModelCapabilityRegistry.d.ts +98 -0
- package/dist/routing/ModelCapabilityRegistry.d.ts.map +1 -0
- package/dist/routing/ModelCapabilityRegistry.js +216 -0
- package/dist/routing/ModelCapabilityRegistry.js.map +1 -0
- package/dist/routing/index.d.ts +13 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +24 -0
- package/dist/routing/index.js.map +1 -0
- package/docs/reference/model-capability-registry.md +402 -0
- package/docs/reference/provider-config-schema.md +608 -0
- package/package.json +20 -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 | - | - |
|
|
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":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAyC,MAAM,gBAAgB,CAAC;AAC1G,OAAO,EAAkB,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAkB,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAsB,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"LLMProviderFactory.d.ts","sourceRoot":"","sources":["../../src/providers/LLMProviderFactory.ts"],"names":[],"mappings":"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"}
|