adaptive-memory-multi-model-router 2.3.0 → 2.4.1
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/README.md +82 -764
- package/package.json +1 -1
- package/src/skills/__tests__/skill_manager.test.ts +328 -0
- package/assets/benchmark-results-pro.svg +0 -1857
- package/assets/benchmark-results.png +0 -0
- package/assets/complexity-scoring-v2.png +0 -0
- package/assets/complexity-scoring.png +0 -0
- package/assets/cost-comparison-chart.png +0 -0
- package/assets/cost-comparison-pro.svg +0 -2708
- package/assets/cost-comparison-v2.png +0 -0
- package/assets/feature-comparison-v2.png +0 -0
- package/assets/feature-comparison-v3.png +0 -0
- package/assets/feature-matrix-pro.svg +0 -2899
- package/assets/growth-chart-pro.svg +0 -1050
- package/assets/hero-banner.svg +0 -2033
- package/assets/logo-icon.svg +0 -99
- package/assets/provider-health-chart.png +0 -0
- package/assets/provider-health-pro.svg +0 -2710
- package/assets/provider-health-v2.png +0 -0
- package/assets/routing-flow-pro.svg +0 -2238
- package/assets/routing-flow-v2.png +0 -0
- package/assets/routing-flow-v3.png +0 -0
- package/assets/routing-flow.png +0 -0
- package/assets/social-preview-pro.svg +0 -1685
- package/assets/tier-distribution-pro.svg +0 -2110
- package/assets/tier-distribution.png +0 -0
- package/dist/cache/cacheKeyGenerator.d.ts +0 -67
- package/dist/cache/cacheKeyGenerator.d.ts.map +0 -1
- package/dist/cache/cacheKeyGenerator.js +0 -211
- package/dist/cache/cacheKeyGenerator.js.map +0 -1
- package/dist/cost/preCallCostEstimator.d.ts +0 -114
- package/dist/cost/preCallCostEstimator.d.ts.map +0 -1
- package/dist/cost/preCallCostEstimator.js +0 -256
- package/dist/cost/preCallCostEstimator.js.map +0 -1
- package/dist/inference/speculativeDecoding.d.ts +0 -133
- package/dist/inference/speculativeDecoding.d.ts.map +0 -1
- package/dist/inference/speculativeDecoding.js +0 -276
- package/dist/inference/speculativeDecoding.js.map +0 -1
- package/dist/providers/providerHealth.d.ts +0 -117
- package/dist/providers/providerHealth.d.ts.map +0 -1
- package/dist/providers/providerHealth.js +0 -309
- package/dist/providers/providerHealth.js.map +0 -1
- package/dist/routing/difficultyClassifier.d.ts +0 -79
- package/dist/routing/difficultyClassifier.d.ts.map +0 -1
- package/dist/routing/difficultyClassifier.js +0 -329
- package/dist/routing/difficultyClassifier.js.map +0 -1
- package/dist/sdk.d.ts +0 -125
- package/docs/HN_CAMPAIGN.md +0 -785
- package/src/cache/cacheKeyGenerator.ts +0 -242
- package/src/cost/preCallCostEstimator.ts +0 -345
- package/src/inference/speculativeDecoding.ts +0 -373
- package/src/providers/providerHealth.ts +0 -397
- package/src/routing/difficultyClassifier.ts +0 -420
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"preCallCostEstimator.js","sourceRoot":"","sources":["../../src/cost/preCallCostEstimator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A3M Router - Speculative Decoding Interface
|
|
3
|
-
*
|
|
4
|
-
* Interface for integrating speculative decoding.
|
|
5
|
-
* Currently a stub/interface for future Medusa/Lookahead integration.
|
|
6
|
-
*
|
|
7
|
-
* Speculative decoding uses a smaller "draft" model to predict
|
|
8
|
-
* multiple tokens ahead, which are then verified in parallel by
|
|
9
|
-
* the main model. This can provide 2-3x speedup in generation.
|
|
10
|
-
*
|
|
11
|
-
* Usage:
|
|
12
|
-
* const specDec = new SpeculativeDecoding();
|
|
13
|
-
* if (specDec.shouldUse(true)) {
|
|
14
|
-
* const draftModel = specDec.getDraftModel('medusa');
|
|
15
|
-
* // ... use draft model to generate and verify
|
|
16
|
-
* }
|
|
17
|
-
*/
|
|
18
|
-
export type DraftModelType = 'medusa' | 'lookahead' | 'eagle' | 'spark';
|
|
19
|
-
export interface SpeculativeConfig {
|
|
20
|
-
/** Enable speculative decoding */
|
|
21
|
-
enabled: boolean;
|
|
22
|
-
/** Draft model type */
|
|
23
|
-
draftModelType?: DraftModelType;
|
|
24
|
-
/** Number of speculative tokens to generate */
|
|
25
|
-
speculationWindow?: number;
|
|
26
|
-
/** Temperature for draft model */
|
|
27
|
-
temperature?: number;
|
|
28
|
-
/** Provider to use for draft model */
|
|
29
|
-
provider?: string;
|
|
30
|
-
/** Model to use for draft model */
|
|
31
|
-
model?: string;
|
|
32
|
-
}
|
|
33
|
-
export interface DraftModel {
|
|
34
|
-
/** Model identifier */
|
|
35
|
-
id: string;
|
|
36
|
-
/** Model type */
|
|
37
|
-
type: DraftModelType;
|
|
38
|
-
/** Provider for this model */
|
|
39
|
-
provider: string;
|
|
40
|
-
/** Model size description */
|
|
41
|
-
size: string;
|
|
42
|
-
/** Supported speculation windows */
|
|
43
|
-
supportedWindows: number[];
|
|
44
|
-
}
|
|
45
|
-
export interface SpeculativeResult {
|
|
46
|
-
/** Whether speculative decoding was used */
|
|
47
|
-
used: boolean;
|
|
48
|
-
/** Number of tokens in draft */
|
|
49
|
-
draftTokens: number;
|
|
50
|
-
/** Number of tokens accepted */
|
|
51
|
-
acceptedTokens: number;
|
|
52
|
-
/** Acceptance rate */
|
|
53
|
-
acceptanceRate: number;
|
|
54
|
-
/** Time saved (ms, estimated) */
|
|
55
|
-
estimatedTimeSaved: number;
|
|
56
|
-
}
|
|
57
|
-
export interface VerificationResult {
|
|
58
|
-
/** All tokens verified successfully */
|
|
59
|
-
allAccepted: boolean;
|
|
60
|
-
/** Indices of accepted tokens */
|
|
61
|
-
acceptedIndices: number[];
|
|
62
|
-
/** Indices of rejected tokens */
|
|
63
|
-
rejectedIndices: number[];
|
|
64
|
-
/** Actual tokens to use (may differ from draft) */
|
|
65
|
-
actualTokens: string[];
|
|
66
|
-
/** Number of tokens to rewind */
|
|
67
|
-
rewindCount: number;
|
|
68
|
-
}
|
|
69
|
-
export declare class SpeculativeDecoding {
|
|
70
|
-
private config;
|
|
71
|
-
private draftModels;
|
|
72
|
-
constructor(config?: Partial<SpeculativeConfig>);
|
|
73
|
-
/**
|
|
74
|
-
* Determine if speculative decoding should be used.
|
|
75
|
-
* Checks config, provider support, and model availability.
|
|
76
|
-
*/
|
|
77
|
-
shouldUse(forceEnable?: boolean): boolean;
|
|
78
|
-
/**
|
|
79
|
-
* Get the draft model configuration.
|
|
80
|
-
*/
|
|
81
|
-
getDraftModel(type?: DraftModelType): DraftModel | null;
|
|
82
|
-
/**
|
|
83
|
-
* Generate draft tokens using the draft model.
|
|
84
|
-
* This is an async method to support API-based draft models.
|
|
85
|
-
*/
|
|
86
|
-
generateDraft(prompt: string, maxTokens: number): Promise<{
|
|
87
|
-
tokens: string[];
|
|
88
|
-
scores: number[];
|
|
89
|
-
}>;
|
|
90
|
-
/**
|
|
91
|
-
* Verify draft tokens against the main model.
|
|
92
|
-
* Returns which tokens were accepted and corrections if needed.
|
|
93
|
-
*/
|
|
94
|
-
verifyDraft(prompt: string, draftTokens: string[]): Promise<VerificationResult>;
|
|
95
|
-
/**
|
|
96
|
-
* Calculate speedup from speculative decoding results.
|
|
97
|
-
*/
|
|
98
|
-
calculateSpeedup(result: SpeculativeResult): number;
|
|
99
|
-
/**
|
|
100
|
-
* Update configuration.
|
|
101
|
-
*/
|
|
102
|
-
updateConfig(updates: Partial<SpeculativeConfig>): void;
|
|
103
|
-
/**
|
|
104
|
-
* Get current configuration.
|
|
105
|
-
*/
|
|
106
|
-
getConfig(): SpeculativeConfig;
|
|
107
|
-
/**
|
|
108
|
-
* Check if a provider supports speculative decoding.
|
|
109
|
-
*/
|
|
110
|
-
supportsSpeculativeDecoding(provider: string): boolean;
|
|
111
|
-
/**
|
|
112
|
-
* Get recommended speculation window based on model size.
|
|
113
|
-
*/
|
|
114
|
-
getRecommendedWindow(modelSize: 'small' | 'medium' | 'large'): number;
|
|
115
|
-
private registerDraftModels;
|
|
116
|
-
}
|
|
117
|
-
export declare class SpeculativeDecodingWrapper {
|
|
118
|
-
private specDec;
|
|
119
|
-
private mainModelCall;
|
|
120
|
-
constructor(mainModelCall: (prompt: string, options?: any) => Promise<string>, config?: Partial<SpeculativeConfig>);
|
|
121
|
-
/**
|
|
122
|
-
* Generate with speculative decoding.
|
|
123
|
-
*/
|
|
124
|
-
generate(prompt: string, maxTokens: number, options?: {
|
|
125
|
-
temperature?: number;
|
|
126
|
-
useSpecDec?: boolean;
|
|
127
|
-
}): Promise<{
|
|
128
|
-
text: string;
|
|
129
|
-
result: SpeculativeResult;
|
|
130
|
-
}>;
|
|
131
|
-
}
|
|
132
|
-
export declare function createSpeculativeDecoding(config?: Partial<SpeculativeConfig>): SpeculativeDecoding;
|
|
133
|
-
//# sourceMappingURL=speculativeDecoding.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"speculativeDecoding.d.ts","sourceRoot":"","sources":["../../src/inference/speculativeDecoding.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,276 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* A3M Router - Speculative Decoding Interface
|
|
4
|
-
*
|
|
5
|
-
* Interface for integrating speculative decoding.
|
|
6
|
-
* Currently a stub/interface for future Medusa/Lookahead integration.
|
|
7
|
-
*
|
|
8
|
-
* Speculative decoding uses a smaller "draft" model to predict
|
|
9
|
-
* multiple tokens ahead, which are then verified in parallel by
|
|
10
|
-
* the main model. This can provide 2-3x speedup in generation.
|
|
11
|
-
*
|
|
12
|
-
* Usage:
|
|
13
|
-
* const specDec = new SpeculativeDecoding();
|
|
14
|
-
* if (specDec.shouldUse(true)) {
|
|
15
|
-
* const draftModel = specDec.getDraftModel('medusa');
|
|
16
|
-
* // ... use draft model to generate and verify
|
|
17
|
-
* }
|
|
18
|
-
*/
|
|
19
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.SpeculativeDecodingWrapper = exports.SpeculativeDecoding = void 0;
|
|
21
|
-
exports.createSpeculativeDecoding = createSpeculativeDecoding;
|
|
22
|
-
// ============================================================
|
|
23
|
-
// Speculative Decoding Interface
|
|
24
|
-
// ============================================================
|
|
25
|
-
class SpeculativeDecoding {
|
|
26
|
-
config;
|
|
27
|
-
draftModels = new Map();
|
|
28
|
-
constructor(config) {
|
|
29
|
-
this.config = {
|
|
30
|
-
enabled: config?.enabled ?? false,
|
|
31
|
-
draftModelType: config?.draftModelType ?? 'medusa',
|
|
32
|
-
speculationWindow: config?.speculationWindow ?? 4,
|
|
33
|
-
temperature: config?.temperature ?? 0.0,
|
|
34
|
-
provider: config?.provider,
|
|
35
|
-
model: config?.model,
|
|
36
|
-
};
|
|
37
|
-
// Register available draft models
|
|
38
|
-
this.registerDraftModels();
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Determine if speculative decoding should be used.
|
|
42
|
-
* Checks config, provider support, and model availability.
|
|
43
|
-
*/
|
|
44
|
-
shouldUse(forceEnable) {
|
|
45
|
-
if (forceEnable)
|
|
46
|
-
return true;
|
|
47
|
-
if (!this.config.enabled)
|
|
48
|
-
return false;
|
|
49
|
-
// Speculative decoding beneficial for longer outputs
|
|
50
|
-
// Check if provider supports it
|
|
51
|
-
return this.config.enabled;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Get the draft model configuration.
|
|
55
|
-
*/
|
|
56
|
-
getDraftModel(type) {
|
|
57
|
-
const modelType = type || this.config.draftModelType || 'medusa';
|
|
58
|
-
const model = this.draftModels.get(modelType);
|
|
59
|
-
if (!model) {
|
|
60
|
-
// Return a generic configuration
|
|
61
|
-
return {
|
|
62
|
-
id: `draft-${modelType}`,
|
|
63
|
-
type: modelType,
|
|
64
|
-
provider: this.config.provider || 'auto',
|
|
65
|
-
size: 'small',
|
|
66
|
-
supportedWindows: [2, 4, 6, 8],
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
return model;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Generate draft tokens using the draft model.
|
|
73
|
-
* This is an async method to support API-based draft models.
|
|
74
|
-
*/
|
|
75
|
-
async generateDraft(prompt, maxTokens) {
|
|
76
|
-
const draftModel = this.getDraftModel();
|
|
77
|
-
if (!draftModel) {
|
|
78
|
-
throw new Error('No draft model available');
|
|
79
|
-
}
|
|
80
|
-
// Stub: In production, this would call the draft model API
|
|
81
|
-
// For now, return empty draft
|
|
82
|
-
return {
|
|
83
|
-
tokens: [],
|
|
84
|
-
scores: [],
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Verify draft tokens against the main model.
|
|
89
|
-
* Returns which tokens were accepted and corrections if needed.
|
|
90
|
-
*/
|
|
91
|
-
async verifyDraft(prompt, draftTokens) {
|
|
92
|
-
if (draftTokens.length === 0) {
|
|
93
|
-
return {
|
|
94
|
-
allAccepted: true,
|
|
95
|
-
acceptedIndices: [],
|
|
96
|
-
rejectedIndices: [],
|
|
97
|
-
actualTokens: [],
|
|
98
|
-
rewindCount: 0,
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
// Stub: In production, this would verify each draft token
|
|
102
|
-
// For now, accept all tokens (optimistic)
|
|
103
|
-
return {
|
|
104
|
-
allAccepted: true,
|
|
105
|
-
acceptedIndices: draftTokens.map((_, i) => i),
|
|
106
|
-
rejectedIndices: [],
|
|
107
|
-
actualTokens: draftTokens,
|
|
108
|
-
rewindCount: 0,
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Calculate speedup from speculative decoding results.
|
|
113
|
-
*/
|
|
114
|
-
calculateSpeedup(result) {
|
|
115
|
-
if (!result.used || result.draftTokens === 0)
|
|
116
|
-
return 1.0;
|
|
117
|
-
// Approximate speedup based on acceptance rate
|
|
118
|
-
// Higher acceptance = more speedup
|
|
119
|
-
const acceptanceRate = result.acceptanceRate;
|
|
120
|
-
// Theoretical 2-3x speedup at 90%+ acceptance
|
|
121
|
-
if (acceptanceRate >= 0.9)
|
|
122
|
-
return 2.5;
|
|
123
|
-
if (acceptanceRate >= 0.8)
|
|
124
|
-
return 2.0;
|
|
125
|
-
if (acceptanceRate >= 0.7)
|
|
126
|
-
return 1.7;
|
|
127
|
-
if (acceptanceRate >= 0.5)
|
|
128
|
-
return 1.4;
|
|
129
|
-
if (acceptanceRate >= 0.3)
|
|
130
|
-
return 1.2;
|
|
131
|
-
return 1.1;
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Update configuration.
|
|
135
|
-
*/
|
|
136
|
-
updateConfig(updates) {
|
|
137
|
-
this.config = { ...this.config, ...updates };
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Get current configuration.
|
|
141
|
-
*/
|
|
142
|
-
getConfig() {
|
|
143
|
-
return { ...this.config };
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Check if a provider supports speculative decoding.
|
|
147
|
-
*/
|
|
148
|
-
supportsSpeculativeDecoding(provider) {
|
|
149
|
-
// Local providers (Ollama, vLLM) typically support it
|
|
150
|
-
const localProviders = ['ollama', 'lmstudio', 'vllm'];
|
|
151
|
-
if (localProviders.includes(provider))
|
|
152
|
-
return true;
|
|
153
|
-
// Check if provider has known speculative support
|
|
154
|
-
const supportedProviders = ['together', 'fireworks', 'anyscale'];
|
|
155
|
-
return supportedProviders.includes(provider);
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Get recommended speculation window based on model size.
|
|
159
|
-
*/
|
|
160
|
-
getRecommendedWindow(modelSize) {
|
|
161
|
-
switch (modelSize) {
|
|
162
|
-
case 'small': return 6;
|
|
163
|
-
case 'medium': return 4;
|
|
164
|
-
case 'large': return 2;
|
|
165
|
-
default: return 4;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
// ---- Private helpers ----
|
|
169
|
-
registerDraftModels() {
|
|
170
|
-
// Medusa-style models (multiple draft heads)
|
|
171
|
-
this.draftModels.set('medusa', {
|
|
172
|
-
id: 'medusa-7b',
|
|
173
|
-
type: 'medusa',
|
|
174
|
-
provider: 'auto',
|
|
175
|
-
size: '7B equivalent',
|
|
176
|
-
supportedWindows: [2, 4, 6, 8, 10],
|
|
177
|
-
});
|
|
178
|
-
// Lookahead decoding
|
|
179
|
-
this.draftModels.set('lookahead', {
|
|
180
|
-
id: 'lookahead-7b',
|
|
181
|
-
type: 'lookahead',
|
|
182
|
-
provider: 'auto',
|
|
183
|
-
size: '7B equivalent',
|
|
184
|
-
supportedWindows: [2, 4, 6],
|
|
185
|
-
});
|
|
186
|
-
// EAGLE decoding
|
|
187
|
-
this.draftModels.set('eagle', {
|
|
188
|
-
id: 'eagle-7b',
|
|
189
|
-
type: 'eagle',
|
|
190
|
-
provider: 'auto',
|
|
191
|
-
size: '7B equivalent',
|
|
192
|
-
supportedWindows: [2, 4, 6, 8],
|
|
193
|
-
});
|
|
194
|
-
// Spark (speculative decoding for transformers)
|
|
195
|
-
this.draftModels.set('spark', {
|
|
196
|
-
id: 'spark-7b',
|
|
197
|
-
type: 'spark',
|
|
198
|
-
provider: 'auto',
|
|
199
|
-
size: '7B equivalent',
|
|
200
|
-
supportedWindows: [2, 4, 6, 8, 10, 12],
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
exports.SpeculativeDecoding = SpeculativeDecoding;
|
|
205
|
-
// ============================================================
|
|
206
|
-
// Speculative Decoding Wrapper for LLM calls
|
|
207
|
-
// ============================================================
|
|
208
|
-
class SpeculativeDecodingWrapper {
|
|
209
|
-
specDec;
|
|
210
|
-
mainModelCall;
|
|
211
|
-
constructor(mainModelCall, config) {
|
|
212
|
-
this.mainModelCall = mainModelCall;
|
|
213
|
-
this.specDec = new SpeculativeDecoding(config);
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Generate with speculative decoding.
|
|
217
|
-
*/
|
|
218
|
-
async generate(prompt, maxTokens, options) {
|
|
219
|
-
if (!this.specDec.shouldUse(options?.useSpecDec)) {
|
|
220
|
-
// Fallback to normal generation
|
|
221
|
-
const text = await this.mainModelCall(prompt, options);
|
|
222
|
-
return {
|
|
223
|
-
text,
|
|
224
|
-
result: {
|
|
225
|
-
used: false,
|
|
226
|
-
draftTokens: 0,
|
|
227
|
-
acceptedTokens: 0,
|
|
228
|
-
acceptanceRate: 0,
|
|
229
|
-
estimatedTimeSaved: 0,
|
|
230
|
-
},
|
|
231
|
-
};
|
|
232
|
-
}
|
|
233
|
-
// Speculative generation
|
|
234
|
-
const startTime = Date.now();
|
|
235
|
-
const draftTokens = await this.specDec.generateDraft(prompt, maxTokens);
|
|
236
|
-
const verification = await this.specDec.verifyDraft(prompt, draftTokens.tokens);
|
|
237
|
-
let text;
|
|
238
|
-
if (verification.allAccepted) {
|
|
239
|
-
// All draft tokens accepted, continue with main model
|
|
240
|
-
text = verification.actualTokens.join('') +
|
|
241
|
-
await this.mainModelCall(prompt, options);
|
|
242
|
-
}
|
|
243
|
-
else {
|
|
244
|
-
// Some tokens rejected, need to rewind
|
|
245
|
-
text = verification.actualTokens.join('');
|
|
246
|
-
// Re-prompt with corrected context
|
|
247
|
-
text += await this.mainModelCall(prompt + text, options);
|
|
248
|
-
}
|
|
249
|
-
const endTime = Date.now();
|
|
250
|
-
const speedup = this.specDec.calculateSpeedup({
|
|
251
|
-
used: true,
|
|
252
|
-
draftTokens: draftTokens.tokens.length,
|
|
253
|
-
acceptedTokens: verification.acceptedIndices.length,
|
|
254
|
-
acceptanceRate: verification.acceptedIndices.length / draftTokens.tokens.length,
|
|
255
|
-
estimatedTimeSaved: endTime - startTime,
|
|
256
|
-
});
|
|
257
|
-
return {
|
|
258
|
-
text,
|
|
259
|
-
result: {
|
|
260
|
-
used: true,
|
|
261
|
-
draftTokens: draftTokens.tokens.length,
|
|
262
|
-
acceptedTokens: verification.acceptedIndices.length,
|
|
263
|
-
acceptanceRate: verification.acceptedIndices.length / draftTokens.tokens.length,
|
|
264
|
-
estimatedTimeSaved: Math.round((1 - 1 / speedup) * (endTime - startTime)),
|
|
265
|
-
},
|
|
266
|
-
};
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
exports.SpeculativeDecodingWrapper = SpeculativeDecodingWrapper;
|
|
270
|
-
// ============================================================
|
|
271
|
-
// Factory
|
|
272
|
-
// ============================================================
|
|
273
|
-
function createSpeculativeDecoding(config) {
|
|
274
|
-
return new SpeculativeDecoding(config);
|
|
275
|
-
}
|
|
276
|
-
//# sourceMappingURL=speculativeDecoding.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"speculativeDecoding.js","sourceRoot":"","sources":["../../src/inference/speculativeDecoding.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A3M Router - Provider Health Score
|
|
3
|
-
*
|
|
4
|
-
* Probabilistic health scoring (not binary up/down).
|
|
5
|
-
* Uses latency history, error rate, partial failure patterns, queue depth estimates.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* const healthMonitor = new ProviderHealthMonitor();
|
|
9
|
-
* healthMonitor.recordLatency('groq', 250);
|
|
10
|
-
* healthMonitor.recordError('groq', 'rate_limit');
|
|
11
|
-
* const score = healthMonitor.getHealthScore('groq');
|
|
12
|
-
* console.log(score); // { score: 0.85, confidence: 0.7, status: 'healthy' }
|
|
13
|
-
*/
|
|
14
|
-
import { ProviderTier } from '../providers/providerConfig';
|
|
15
|
-
export type HealthStatus = 'healthy' | 'degraded' | 'critical';
|
|
16
|
-
export interface HealthScore {
|
|
17
|
-
/** Overall health score 0-1 */
|
|
18
|
-
score: number;
|
|
19
|
-
/** Confidence in the score 0-1 */
|
|
20
|
-
confidence: number;
|
|
21
|
-
/** Human-readable status */
|
|
22
|
-
status: HealthStatus;
|
|
23
|
-
/** Component scores */
|
|
24
|
-
components: {
|
|
25
|
-
latency: number;
|
|
26
|
-
errorRate: number;
|
|
27
|
-
recentTrend: number;
|
|
28
|
-
};
|
|
29
|
-
/** Last updated timestamp */
|
|
30
|
-
lastUpdated: number;
|
|
31
|
-
/** Metadata about current state */
|
|
32
|
-
metadata: {
|
|
33
|
-
sampleSize: number;
|
|
34
|
-
isAnomaly: boolean;
|
|
35
|
-
anomalyReason?: string;
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
export interface HealthRecord {
|
|
39
|
-
timestamp: number;
|
|
40
|
-
latency?: number;
|
|
41
|
-
success?: boolean;
|
|
42
|
-
errorType?: string;
|
|
43
|
-
partialFailure?: boolean;
|
|
44
|
-
}
|
|
45
|
-
export interface HealthConfig {
|
|
46
|
-
/** EWMA alpha for latency smoothing */
|
|
47
|
-
latencyAlpha?: number;
|
|
48
|
-
/** EWMA alpha for error rate smoothing */
|
|
49
|
-
errorAlpha?: number;
|
|
50
|
-
/** Window size for anomaly detection */
|
|
51
|
-
anomalyWindow?: number;
|
|
52
|
-
/** Standard deviation threshold for anomaly */
|
|
53
|
-
anomalyThreshold?: number;
|
|
54
|
-
/** Health score thresholds */
|
|
55
|
-
healthyThreshold?: number;
|
|
56
|
-
/** Degraded threshold */
|
|
57
|
-
degradedThreshold?: number;
|
|
58
|
-
}
|
|
59
|
-
export declare class ProviderHealthMonitor {
|
|
60
|
-
private records;
|
|
61
|
-
private config;
|
|
62
|
-
private ewmaLatency;
|
|
63
|
-
private ewmaErrorRate;
|
|
64
|
-
private anomalyScores;
|
|
65
|
-
constructor(config?: HealthConfig);
|
|
66
|
-
/**
|
|
67
|
-
* Record a successful request with latency.
|
|
68
|
-
*/
|
|
69
|
-
recordSuccess(providerId: string, latencyMs: number): void;
|
|
70
|
-
/**
|
|
71
|
-
* Record a failed request.
|
|
72
|
-
*/
|
|
73
|
-
recordError(providerId: string, errorType?: string): void;
|
|
74
|
-
/**
|
|
75
|
-
* Record a partial failure (slow response, incomplete output, etc).
|
|
76
|
-
*/
|
|
77
|
-
recordPartialFailure(providerId: string, latencyMs?: number): void;
|
|
78
|
-
/**
|
|
79
|
-
* Record queue depth estimate (when available from provider metadata).
|
|
80
|
-
*/
|
|
81
|
-
recordQueueDepth(providerId: string, depth: number): void;
|
|
82
|
-
/**
|
|
83
|
-
* Get the current health score for a provider.
|
|
84
|
-
*/
|
|
85
|
-
getHealthScore(providerId: string): HealthScore;
|
|
86
|
-
/**
|
|
87
|
-
* Get health scores for all tracked providers.
|
|
88
|
-
*/
|
|
89
|
-
getAllHealthScores(): Record<string, HealthScore>;
|
|
90
|
-
/**
|
|
91
|
-
* Get the recommended provider based on health scores.
|
|
92
|
-
* Excludes providers that are 'critical'.
|
|
93
|
-
*/
|
|
94
|
-
getRecommendedProvider(providers: Array<{
|
|
95
|
-
id: string;
|
|
96
|
-
tier?: ProviderTier;
|
|
97
|
-
priority?: number;
|
|
98
|
-
}>): string | null;
|
|
99
|
-
/**
|
|
100
|
-
* Clear all records for a provider.
|
|
101
|
-
*/
|
|
102
|
-
clearProvider(providerId: string): void;
|
|
103
|
-
/**
|
|
104
|
-
* Clear all records for all providers.
|
|
105
|
-
*/
|
|
106
|
-
clearAll(): void;
|
|
107
|
-
private addRecord;
|
|
108
|
-
private getRecords;
|
|
109
|
-
private updateEwmaLatency;
|
|
110
|
-
private updateEwmaErrorRate;
|
|
111
|
-
private updateAnomalyScore;
|
|
112
|
-
private calculateLatencyScore;
|
|
113
|
-
private calculateErrorScore;
|
|
114
|
-
private calculateTrendScore;
|
|
115
|
-
}
|
|
116
|
-
export declare function createProviderHealthMonitor(config?: HealthConfig): ProviderHealthMonitor;
|
|
117
|
-
//# sourceMappingURL=providerHealth.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"providerHealth.d.ts","sourceRoot":"","sources":["../../src/providers/providerHealth.ts"],"names":[],"mappings":"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"}
|