agentic-qe 1.0.3 → 1.0.5
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/CHANGELOG.md +44 -0
- package/README.md +64 -15
- package/dist/cli/commands/init.d.ts +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +219 -3
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/routing/index.d.ts +95 -0
- package/dist/cli/commands/routing/index.d.ts.map +1 -0
- package/dist/cli/commands/routing/index.js +399 -0
- package/dist/cli/commands/routing/index.js.map +1 -0
- package/dist/cli/index.js +88 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.js +17 -37
- package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
- package/dist/core/routing/AdaptiveModelRouter.d.ts +86 -0
- package/dist/core/routing/AdaptiveModelRouter.d.ts.map +1 -0
- package/dist/core/routing/AdaptiveModelRouter.js +264 -0
- package/dist/core/routing/AdaptiveModelRouter.js.map +1 -0
- package/dist/core/routing/ComplexityAnalyzer.d.ts +49 -0
- package/dist/core/routing/ComplexityAnalyzer.d.ts.map +1 -0
- package/dist/core/routing/ComplexityAnalyzer.js +182 -0
- package/dist/core/routing/ComplexityAnalyzer.js.map +1 -0
- package/dist/core/routing/CostTracker.d.ts +55 -0
- package/dist/core/routing/CostTracker.d.ts.map +1 -0
- package/dist/core/routing/CostTracker.js +210 -0
- package/dist/core/routing/CostTracker.js.map +1 -0
- package/dist/core/routing/FleetManagerIntegration.d.ts +68 -0
- package/dist/core/routing/FleetManagerIntegration.d.ts.map +1 -0
- package/dist/core/routing/FleetManagerIntegration.js +170 -0
- package/dist/core/routing/FleetManagerIntegration.js.map +1 -0
- package/dist/core/routing/ModelRules.d.ts +38 -0
- package/dist/core/routing/ModelRules.d.ts.map +1 -0
- package/dist/core/routing/ModelRules.js +170 -0
- package/dist/core/routing/ModelRules.js.map +1 -0
- package/dist/core/routing/QETask.d.ts +12 -0
- package/dist/core/routing/QETask.d.ts.map +1 -0
- package/dist/core/routing/QETask.js +21 -0
- package/dist/core/routing/QETask.js.map +1 -0
- package/dist/core/routing/index.d.ts +19 -0
- package/dist/core/routing/index.d.ts.map +1 -0
- package/dist/core/routing/index.js +50 -0
- package/dist/core/routing/index.js.map +1 -0
- package/dist/core/routing/types.d.ts +136 -0
- package/dist/core/routing/types.d.ts.map +1 -0
- package/dist/core/routing/types.js +28 -0
- package/dist/core/routing/types.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +77 -9
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts +112 -0
- package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts.map +1 -0
- package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js +341 -0
- package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js.map +1 -0
- package/dist/mcp/streaming/StreamingMCPTool.d.ts +80 -0
- package/dist/mcp/streaming/StreamingMCPTool.d.ts.map +1 -0
- package/dist/mcp/streaming/StreamingMCPTool.js +276 -0
- package/dist/mcp/streaming/StreamingMCPTool.js.map +1 -0
- package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts +73 -0
- package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts.map +1 -0
- package/dist/mcp/streaming/TestExecuteStreamHandler.js +436 -0
- package/dist/mcp/streaming/TestExecuteStreamHandler.js.map +1 -0
- package/dist/mcp/streaming/index.d.ts +14 -0
- package/dist/mcp/streaming/index.d.ts.map +1 -0
- package/dist/mcp/streaming/index.js +30 -0
- package/dist/mcp/streaming/index.js.map +1 -0
- package/dist/mcp/streaming/types.d.ts +117 -0
- package/dist/mcp/streaming/types.d.ts.map +1 -0
- package/dist/mcp/streaming/types.js +88 -0
- package/dist/mcp/streaming/types.js.map +1 -0
- package/dist/mcp/tools.d.ts +3 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +107 -1
- package/dist/mcp/tools.js.map +1 -1
- package/dist/types/index.d.ts +16 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/Database.d.ts +2 -2
- package/dist/utils/Database.d.ts.map +1 -1
- package/dist/utils/Database.js +63 -81
- package/dist/utils/Database.js.map +1 -1
- package/package.json +3 -5
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cost Tracker
|
|
4
|
+
* Tracks model usage costs and provides analytics
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.CostTracker = void 0;
|
|
8
|
+
const types_1 = require("./types");
|
|
9
|
+
const ModelRules_1 = require("./ModelRules");
|
|
10
|
+
class CostTracker {
|
|
11
|
+
constructor(memoryStore, eventBus) {
|
|
12
|
+
this.memoryStore = memoryStore;
|
|
13
|
+
this.eventBus = eventBus;
|
|
14
|
+
this.costs = new Map();
|
|
15
|
+
this.sessionStartTime = Date.now();
|
|
16
|
+
this.initializeCosts();
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Initialize cost tracking for all models
|
|
20
|
+
*/
|
|
21
|
+
initializeCosts() {
|
|
22
|
+
Object.values(types_1.AIModel).forEach((model) => {
|
|
23
|
+
this.costs.set(model, {
|
|
24
|
+
modelId: model,
|
|
25
|
+
tokensUsed: 0,
|
|
26
|
+
estimatedCost: 0,
|
|
27
|
+
requestCount: 0,
|
|
28
|
+
avgTokensPerRequest: 0,
|
|
29
|
+
timestamp: Date.now(),
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Track cost for a model usage
|
|
35
|
+
*/
|
|
36
|
+
async trackCost(modelId, tokens) {
|
|
37
|
+
const cost = this.costs.get(modelId);
|
|
38
|
+
if (!cost) {
|
|
39
|
+
throw new Error(`Unknown model: ${modelId}`);
|
|
40
|
+
}
|
|
41
|
+
const capability = ModelRules_1.MODEL_CAPABILITIES[modelId];
|
|
42
|
+
const estimatedCost = tokens * capability.costPerToken;
|
|
43
|
+
// Update local cost tracking
|
|
44
|
+
cost.tokensUsed += tokens;
|
|
45
|
+
cost.estimatedCost += estimatedCost;
|
|
46
|
+
cost.requestCount += 1;
|
|
47
|
+
cost.avgTokensPerRequest = cost.tokensUsed / cost.requestCount;
|
|
48
|
+
cost.timestamp = Date.now();
|
|
49
|
+
this.costs.set(modelId, cost);
|
|
50
|
+
// Persist to SwarmMemoryManager
|
|
51
|
+
await this.persistCosts();
|
|
52
|
+
// Emit cost tracking event
|
|
53
|
+
this.eventBus.emit('router:cost-tracked', {
|
|
54
|
+
model: modelId,
|
|
55
|
+
tokens,
|
|
56
|
+
cost: estimatedCost,
|
|
57
|
+
totalCost: cost.estimatedCost,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Persist costs to SwarmMemoryManager
|
|
62
|
+
*/
|
|
63
|
+
async persistCosts() {
|
|
64
|
+
const costsArray = Array.from(this.costs.values());
|
|
65
|
+
await this.memoryStore.store('routing/costs', costsArray, {
|
|
66
|
+
partition: 'coordination',
|
|
67
|
+
ttl: 86400, // 24 hours
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Load costs from SwarmMemoryManager
|
|
72
|
+
*/
|
|
73
|
+
async loadCosts() {
|
|
74
|
+
try {
|
|
75
|
+
const stored = await this.memoryStore.retrieve('routing/costs', {
|
|
76
|
+
partition: 'coordination',
|
|
77
|
+
});
|
|
78
|
+
if (stored && Array.isArray(stored)) {
|
|
79
|
+
stored.forEach((cost) => {
|
|
80
|
+
this.costs.set(cost.modelId, cost);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
// No stored costs, use initialized values
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get router statistics
|
|
90
|
+
*/
|
|
91
|
+
async getStats() {
|
|
92
|
+
const costsArray = Array.from(this.costs.values());
|
|
93
|
+
const totalRequests = costsArray.reduce((sum, c) => sum + c.requestCount, 0);
|
|
94
|
+
const totalCost = costsArray.reduce((sum, c) => sum + c.estimatedCost, 0);
|
|
95
|
+
// Calculate cost savings vs single model (Claude Sonnet 4.5)
|
|
96
|
+
const baselineModel = ModelRules_1.MODEL_CAPABILITIES[types_1.AIModel.CLAUDE_SONNET_4_5];
|
|
97
|
+
const totalTokens = costsArray.reduce((sum, c) => sum + c.tokensUsed, 0);
|
|
98
|
+
const baselineCost = totalTokens * baselineModel.costPerToken;
|
|
99
|
+
const costSavings = baselineCost - totalCost;
|
|
100
|
+
// Model distribution
|
|
101
|
+
const modelDistribution = {};
|
|
102
|
+
Object.values(types_1.AIModel).forEach((model) => {
|
|
103
|
+
const cost = this.costs.get(model);
|
|
104
|
+
modelDistribution[model] = cost?.requestCount || 0;
|
|
105
|
+
});
|
|
106
|
+
// Average costs
|
|
107
|
+
const avgCostPerTask = totalRequests > 0 ? totalCost / totalRequests : 0;
|
|
108
|
+
const avgCostPerTest = await this.calculateAvgCostPerTest();
|
|
109
|
+
return {
|
|
110
|
+
totalRequests,
|
|
111
|
+
totalCost,
|
|
112
|
+
costSavings,
|
|
113
|
+
modelDistribution,
|
|
114
|
+
avgCostPerTask,
|
|
115
|
+
avgCostPerTest,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Calculate average cost per test generated
|
|
120
|
+
*/
|
|
121
|
+
async calculateAvgCostPerTest() {
|
|
122
|
+
try {
|
|
123
|
+
// Get test count from memory
|
|
124
|
+
const testMetrics = await this.memoryStore.retrieve('aqe/test-metrics', {
|
|
125
|
+
partition: 'coordination',
|
|
126
|
+
});
|
|
127
|
+
if (testMetrics && typeof testMetrics === 'object' && 'totalTests' in testMetrics) {
|
|
128
|
+
const totalTests = testMetrics.totalTests;
|
|
129
|
+
if (totalTests > 0) {
|
|
130
|
+
const stats = await this.getStats();
|
|
131
|
+
return stats.totalCost / totalTests;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
// No test metrics available
|
|
137
|
+
}
|
|
138
|
+
return 0;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Export cost dashboard data
|
|
142
|
+
*/
|
|
143
|
+
async exportCostDashboard() {
|
|
144
|
+
const stats = await this.getStats();
|
|
145
|
+
const costsArray = Array.from(this.costs.values());
|
|
146
|
+
return {
|
|
147
|
+
summary: {
|
|
148
|
+
totalCost: stats.totalCost.toFixed(4),
|
|
149
|
+
totalRequests: stats.totalRequests,
|
|
150
|
+
costSavings: stats.costSavings.toFixed(4),
|
|
151
|
+
savingsPercentage: stats.totalCost > 0
|
|
152
|
+
? ((stats.costSavings / (stats.totalCost + stats.costSavings)) * 100).toFixed(2)
|
|
153
|
+
: '0.00',
|
|
154
|
+
avgCostPerTask: stats.avgCostPerTask.toFixed(4),
|
|
155
|
+
avgCostPerTest: stats.avgCostPerTest.toFixed(4),
|
|
156
|
+
sessionDuration: this.formatDuration(Date.now() - this.sessionStartTime),
|
|
157
|
+
},
|
|
158
|
+
models: costsArray.map((cost) => {
|
|
159
|
+
const capability = ModelRules_1.MODEL_CAPABILITIES[cost.modelId];
|
|
160
|
+
return {
|
|
161
|
+
model: cost.modelId,
|
|
162
|
+
requests: cost.requestCount,
|
|
163
|
+
tokensUsed: cost.tokensUsed,
|
|
164
|
+
cost: cost.estimatedCost.toFixed(4),
|
|
165
|
+
avgTokensPerRequest: Math.round(cost.avgTokensPerRequest),
|
|
166
|
+
costPerToken: capability.costPerToken,
|
|
167
|
+
percentage: stats.totalCost > 0
|
|
168
|
+
? ((cost.estimatedCost / stats.totalCost) * 100).toFixed(2)
|
|
169
|
+
: '0.00',
|
|
170
|
+
};
|
|
171
|
+
}),
|
|
172
|
+
distribution: stats.modelDistribution,
|
|
173
|
+
timestamp: new Date().toISOString(),
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Format duration in human-readable format
|
|
178
|
+
*/
|
|
179
|
+
formatDuration(ms) {
|
|
180
|
+
const seconds = Math.floor(ms / 1000);
|
|
181
|
+
const minutes = Math.floor(seconds / 60);
|
|
182
|
+
const hours = Math.floor(minutes / 60);
|
|
183
|
+
if (hours > 0) {
|
|
184
|
+
return `${hours}h ${minutes % 60}m`;
|
|
185
|
+
}
|
|
186
|
+
else if (minutes > 0) {
|
|
187
|
+
return `${minutes}m ${seconds % 60}s`;
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
return `${seconds}s`;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Reset cost tracking (for testing)
|
|
195
|
+
*/
|
|
196
|
+
async reset() {
|
|
197
|
+
this.costs.clear();
|
|
198
|
+
this.initializeCosts();
|
|
199
|
+
this.sessionStartTime = Date.now();
|
|
200
|
+
await this.persistCosts();
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Get cost for specific model
|
|
204
|
+
*/
|
|
205
|
+
getModelCost(modelId) {
|
|
206
|
+
return this.costs.get(modelId);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
exports.CostTracker = CostTracker;
|
|
210
|
+
//# sourceMappingURL=CostTracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CostTracker.js","sourceRoot":"","sources":["../../../src/core/routing/CostTracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FleetManager Integration for Multi-Model Router
|
|
3
|
+
* Integrates the AdaptiveModelRouter with FleetManager
|
|
4
|
+
*/
|
|
5
|
+
import { FleetManager } from '../FleetManager';
|
|
6
|
+
import { AdaptiveModelRouter } from './AdaptiveModelRouter';
|
|
7
|
+
import { SwarmMemoryManager } from '../memory/SwarmMemoryManager';
|
|
8
|
+
import { EventBus } from '../EventBus';
|
|
9
|
+
import { RouterConfig } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* Extended FleetManager with routing capabilities
|
|
12
|
+
*/
|
|
13
|
+
export declare class RoutingEnabledFleetManager {
|
|
14
|
+
private fleetManager;
|
|
15
|
+
private router;
|
|
16
|
+
private memoryStore;
|
|
17
|
+
private eventBus;
|
|
18
|
+
constructor(fleetManager: FleetManager, memoryStore: SwarmMemoryManager, eventBus: EventBus, routerConfig?: Partial<RouterConfig>);
|
|
19
|
+
/**
|
|
20
|
+
* Setup event handlers for router integration
|
|
21
|
+
*/
|
|
22
|
+
private setupEventHandlers;
|
|
23
|
+
/**
|
|
24
|
+
* Handle task submission - select optimal model
|
|
25
|
+
*/
|
|
26
|
+
private handleTaskSubmitted;
|
|
27
|
+
/**
|
|
28
|
+
* Handle task completion - track actual costs
|
|
29
|
+
*/
|
|
30
|
+
private handleTaskCompleted;
|
|
31
|
+
/**
|
|
32
|
+
* Handle model failure - select fallback
|
|
33
|
+
*/
|
|
34
|
+
private handleModelFailure;
|
|
35
|
+
/**
|
|
36
|
+
* Estimate tokens from result (fallback when not provided)
|
|
37
|
+
*/
|
|
38
|
+
private estimateTokensFromResult;
|
|
39
|
+
/**
|
|
40
|
+
* Get router statistics
|
|
41
|
+
*/
|
|
42
|
+
getRouterStats(): Promise<import("./types").RouterStats>;
|
|
43
|
+
/**
|
|
44
|
+
* Export cost dashboard
|
|
45
|
+
*/
|
|
46
|
+
exportCostDashboard(): Promise<any>;
|
|
47
|
+
/**
|
|
48
|
+
* Enable or disable routing
|
|
49
|
+
*/
|
|
50
|
+
setRoutingEnabled(enabled: boolean): void;
|
|
51
|
+
/**
|
|
52
|
+
* Update router configuration
|
|
53
|
+
*/
|
|
54
|
+
updateRouterConfig(config: Partial<RouterConfig>): void;
|
|
55
|
+
/**
|
|
56
|
+
* Get underlying router instance
|
|
57
|
+
*/
|
|
58
|
+
getRouter(): AdaptiveModelRouter;
|
|
59
|
+
/**
|
|
60
|
+
* Get underlying fleet manager instance
|
|
61
|
+
*/
|
|
62
|
+
getFleetManager(): FleetManager;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Factory function to create routing-enabled fleet manager
|
|
66
|
+
*/
|
|
67
|
+
export declare function createRoutingEnabledFleetManager(fleetManager: FleetManager, memoryStore: SwarmMemoryManager, eventBus: EventBus, routerConfig?: Partial<RouterConfig>): RoutingEnabledFleetManager;
|
|
68
|
+
//# sourceMappingURL=FleetManagerIntegration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FleetManagerIntegration.d.ts","sourceRoot":"","sources":["../../../src/core/routing/FleetManagerIntegration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAA2B,YAAY,EAAE,MAAM,SAAS,CAAC;AAGhE;;GAEG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,QAAQ,CAAW;gBAGzB,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,kBAAkB,EAC/B,QAAQ,EAAE,QAAQ,EAClB,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;IAUtC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;YACW,mBAAmB;IAwBjC;;OAEG;YACW,mBAAmB;IA6BjC;;OAEG;YACW,kBAAkB;IAwBhC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAOhC;;OAEG;IACG,cAAc;IAIpB;;OAEG;IACG,mBAAmB;IAIzB;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIzC;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAIvD;;OAEG;IACH,SAAS,IAAI,mBAAmB;IAIhC;;OAEG;IACH,eAAe,IAAI,YAAY;CAGhC;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,kBAAkB,EAC/B,QAAQ,EAAE,QAAQ,EAClB,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GACnC,0BAA0B,CAO5B"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* FleetManager Integration for Multi-Model Router
|
|
4
|
+
* Integrates the AdaptiveModelRouter with FleetManager
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.RoutingEnabledFleetManager = void 0;
|
|
8
|
+
exports.createRoutingEnabledFleetManager = createRoutingEnabledFleetManager;
|
|
9
|
+
const AdaptiveModelRouter_1 = require("./AdaptiveModelRouter");
|
|
10
|
+
const QETask_1 = require("./QETask");
|
|
11
|
+
/**
|
|
12
|
+
* Extended FleetManager with routing capabilities
|
|
13
|
+
*/
|
|
14
|
+
class RoutingEnabledFleetManager {
|
|
15
|
+
constructor(fleetManager, memoryStore, eventBus, routerConfig) {
|
|
16
|
+
this.fleetManager = fleetManager;
|
|
17
|
+
this.memoryStore = memoryStore;
|
|
18
|
+
this.eventBus = eventBus;
|
|
19
|
+
this.router = new AdaptiveModelRouter_1.AdaptiveModelRouter(memoryStore, eventBus, routerConfig);
|
|
20
|
+
this.setupEventHandlers();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Setup event handlers for router integration
|
|
24
|
+
*/
|
|
25
|
+
setupEventHandlers() {
|
|
26
|
+
// Listen for task submissions to perform model selection
|
|
27
|
+
this.eventBus.on('task:submitted', async (data) => {
|
|
28
|
+
await this.handleTaskSubmitted(data.task);
|
|
29
|
+
});
|
|
30
|
+
// Listen for task completions to track costs
|
|
31
|
+
this.eventBus.on('task:completed', async (data) => {
|
|
32
|
+
await this.handleTaskCompleted(data.task, data.result);
|
|
33
|
+
});
|
|
34
|
+
// Listen for model failures to trigger fallback
|
|
35
|
+
this.eventBus.on('model:failed', async (data) => {
|
|
36
|
+
await this.handleModelFailure(data.task, data.model, data.error);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Handle task submission - select optimal model
|
|
41
|
+
*/
|
|
42
|
+
async handleTaskSubmitted(task) {
|
|
43
|
+
try {
|
|
44
|
+
const qeTask = (0, QETask_1.taskToQETask)(task);
|
|
45
|
+
const selection = await this.router.selectModel(qeTask);
|
|
46
|
+
// Store model selection in task metadata
|
|
47
|
+
task.metadata = {
|
|
48
|
+
...task.metadata,
|
|
49
|
+
modelSelection: selection,
|
|
50
|
+
};
|
|
51
|
+
// Emit model selection event
|
|
52
|
+
this.eventBus.emit('router:model-assigned', {
|
|
53
|
+
taskId: task.getId(),
|
|
54
|
+
model: selection.model,
|
|
55
|
+
complexity: selection.complexity,
|
|
56
|
+
estimatedCost: selection.estimatedCost,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
console.error('Failed to select model for task:', error);
|
|
61
|
+
// Continue with default model
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Handle task completion - track actual costs
|
|
66
|
+
*/
|
|
67
|
+
async handleTaskCompleted(task, result) {
|
|
68
|
+
try {
|
|
69
|
+
const metadata = task.metadata;
|
|
70
|
+
if (!metadata || !metadata.modelSelection) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const selection = metadata.modelSelection;
|
|
74
|
+
const actualTokens = result.tokensUsed || this.estimateTokensFromResult(result);
|
|
75
|
+
// Track actual cost
|
|
76
|
+
await this.router.trackCost(selection.model, actualTokens);
|
|
77
|
+
// Calculate accuracy of cost estimation
|
|
78
|
+
const estimatedTokens = selection.estimatedCost / 0.00005; // Rough reverse calculation
|
|
79
|
+
const accuracy = actualTokens > 0 ? Math.abs(1 - estimatedTokens / actualTokens) : 0;
|
|
80
|
+
this.eventBus.emit('router:cost-accuracy', {
|
|
81
|
+
taskId: task.getId(),
|
|
82
|
+
model: selection.model,
|
|
83
|
+
estimatedTokens,
|
|
84
|
+
actualTokens,
|
|
85
|
+
accuracy,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
console.error('Failed to track task cost:', error);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Handle model failure - select fallback
|
|
94
|
+
*/
|
|
95
|
+
async handleModelFailure(task, failedModel, error) {
|
|
96
|
+
try {
|
|
97
|
+
const qeTask = (0, QETask_1.taskToQETask)(task);
|
|
98
|
+
const fallbackModel = this.router.getFallbackModel(failedModel, qeTask);
|
|
99
|
+
// Update task metadata with fallback model
|
|
100
|
+
task.metadata = {
|
|
101
|
+
...task.metadata,
|
|
102
|
+
fallbackModel,
|
|
103
|
+
originalModel: failedModel,
|
|
104
|
+
failureReason: error.message,
|
|
105
|
+
};
|
|
106
|
+
this.eventBus.emit('router:fallback-triggered', {
|
|
107
|
+
taskId: task.getId(),
|
|
108
|
+
failedModel,
|
|
109
|
+
fallbackModel,
|
|
110
|
+
error: error.message,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
console.error('Failed to handle model failure:', error);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Estimate tokens from result (fallback when not provided)
|
|
119
|
+
*/
|
|
120
|
+
estimateTokensFromResult(result) {
|
|
121
|
+
if (!result)
|
|
122
|
+
return 0;
|
|
123
|
+
const resultStr = JSON.stringify(result);
|
|
124
|
+
return Math.round(resultStr.length / 4); // Rough estimate
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get router statistics
|
|
128
|
+
*/
|
|
129
|
+
async getRouterStats() {
|
|
130
|
+
return await this.router.getStats();
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Export cost dashboard
|
|
134
|
+
*/
|
|
135
|
+
async exportCostDashboard() {
|
|
136
|
+
return await this.router.exportCostDashboard();
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Enable or disable routing
|
|
140
|
+
*/
|
|
141
|
+
setRoutingEnabled(enabled) {
|
|
142
|
+
this.router.setEnabled(enabled);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Update router configuration
|
|
146
|
+
*/
|
|
147
|
+
updateRouterConfig(config) {
|
|
148
|
+
this.router.updateConfig(config);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get underlying router instance
|
|
152
|
+
*/
|
|
153
|
+
getRouter() {
|
|
154
|
+
return this.router;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get underlying fleet manager instance
|
|
158
|
+
*/
|
|
159
|
+
getFleetManager() {
|
|
160
|
+
return this.fleetManager;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
exports.RoutingEnabledFleetManager = RoutingEnabledFleetManager;
|
|
164
|
+
/**
|
|
165
|
+
* Factory function to create routing-enabled fleet manager
|
|
166
|
+
*/
|
|
167
|
+
function createRoutingEnabledFleetManager(fleetManager, memoryStore, eventBus, routerConfig) {
|
|
168
|
+
return new RoutingEnabledFleetManager(fleetManager, memoryStore, eventBus, routerConfig);
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=FleetManagerIntegration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FleetManagerIntegration.js","sourceRoot":"","sources":["../../../src/core/routing/FleetManagerIntegration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Selection Rules
|
|
3
|
+
* Task-specific and complexity-based model selection rules
|
|
4
|
+
*/
|
|
5
|
+
import { AIModel, TaskComplexity, ModelCapability } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* Model capabilities and pricing
|
|
8
|
+
*/
|
|
9
|
+
export declare const MODEL_CAPABILITIES: Record<AIModel, ModelCapability>;
|
|
10
|
+
/**
|
|
11
|
+
* Task-specific model selection rules by agent type and complexity
|
|
12
|
+
*/
|
|
13
|
+
export declare const MODEL_RULES: Record<string, Record<TaskComplexity, AIModel>>;
|
|
14
|
+
/**
|
|
15
|
+
* Fallback chain for each model (ordered by capability)
|
|
16
|
+
*/
|
|
17
|
+
export declare const FALLBACK_CHAINS: Record<AIModel, AIModel[]>;
|
|
18
|
+
/**
|
|
19
|
+
* Complexity detection keywords
|
|
20
|
+
*/
|
|
21
|
+
export declare const COMPLEXITY_KEYWORDS: {
|
|
22
|
+
simple: string[];
|
|
23
|
+
moderate: string[];
|
|
24
|
+
complex: string[];
|
|
25
|
+
critical: string[];
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Default router configuration
|
|
29
|
+
*/
|
|
30
|
+
export declare const DEFAULT_ROUTER_CONFIG: {
|
|
31
|
+
enabled: boolean;
|
|
32
|
+
defaultModel: AIModel;
|
|
33
|
+
enableCostTracking: boolean;
|
|
34
|
+
enableFallback: boolean;
|
|
35
|
+
maxRetries: number;
|
|
36
|
+
costThreshold: number;
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=ModelRules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelRules.d.ts","sourceRoot":"","sources":["../../../src/core/routing/ModelRules.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEnE;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,OAAO,EAAE,eAAe,CAiC/D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CA2CvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAqBtD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;CAqC/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;CAOjC,CAAC"}
|