mcp-agent-foundry 1.1.0 → 1.3.0
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 +22 -2
- package/dist/cli/setup-wizard.d.ts.map +1 -1
- package/dist/cli/setup-wizard.js +873 -8
- package/dist/cli/setup-wizard.js.map +1 -1
- package/dist/cli/test-connection.d.ts +28 -0
- package/dist/cli/test-connection.d.ts.map +1 -1
- package/dist/cli/test-connection.js +335 -1
- package/dist/cli/test-connection.js.map +1 -1
- package/dist/cli.d.ts +13 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +169 -1
- package/dist/cli.js.map +1 -1
- package/dist/config/validator.d.ts +113 -0
- package/dist/config/validator.d.ts.map +1 -1
- package/dist/config/validator.js +113 -0
- package/dist/config/validator.js.map +1 -1
- package/dist/failover/health-tracker.d.ts +175 -0
- package/dist/failover/health-tracker.d.ts.map +1 -0
- package/dist/failover/health-tracker.js +350 -0
- package/dist/failover/health-tracker.js.map +1 -0
- package/dist/failover/index.d.ts +9 -0
- package/dist/failover/index.d.ts.map +1 -0
- package/dist/failover/index.js +9 -0
- package/dist/failover/index.js.map +1 -0
- package/dist/failover/orchestrator.d.ts +189 -0
- package/dist/failover/orchestrator.d.ts.map +1 -0
- package/dist/failover/orchestrator.js +488 -0
- package/dist/failover/orchestrator.js.map +1 -0
- package/dist/failover/pricing.d.ts +115 -0
- package/dist/failover/pricing.d.ts.map +1 -0
- package/dist/failover/pricing.js +283 -0
- package/dist/failover/pricing.js.map +1 -0
- package/dist/persistence/state-schema.d.ts +50 -0
- package/dist/persistence/state-schema.d.ts.map +1 -1
- package/dist/persistence/state-schema.js +2 -0
- package/dist/persistence/state-schema.js.map +1 -1
- package/dist/providers/fireworks.d.ts +23 -0
- package/dist/providers/fireworks.d.ts.map +1 -0
- package/dist/providers/fireworks.js +31 -0
- package/dist/providers/fireworks.js.map +1 -0
- package/dist/providers/groq.d.ts +23 -0
- package/dist/providers/groq.d.ts.map +1 -0
- package/dist/providers/groq.js +31 -0
- package/dist/providers/groq.js.map +1 -0
- package/dist/providers/kimi-code.d.ts +32 -0
- package/dist/providers/kimi-code.d.ts.map +1 -0
- package/dist/providers/kimi-code.js +46 -0
- package/dist/providers/kimi-code.js.map +1 -0
- package/dist/providers/kimi.d.ts +1 -1
- package/dist/providers/kimi.js +1 -1
- package/dist/providers/openrouter.d.ts +23 -0
- package/dist/providers/openrouter.d.ts.map +1 -0
- package/dist/providers/openrouter.js +31 -0
- package/dist/providers/openrouter.js.map +1 -0
- package/dist/providers/perplexity.d.ts +29 -0
- package/dist/providers/perplexity.d.ts.map +1 -0
- package/dist/providers/perplexity.js +51 -0
- package/dist/providers/perplexity.js.map +1 -0
- package/dist/providers/together.d.ts +23 -0
- package/dist/providers/together.d.ts.map +1 -0
- package/dist/providers/together.js +31 -0
- package/dist/providers/together.js.map +1 -0
- package/dist/router/engine.d.ts +21 -0
- package/dist/router/engine.d.ts.map +1 -1
- package/dist/router/engine.js +81 -21
- package/dist/router/engine.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +49 -0
- package/dist/server.js.map +1 -1
- package/dist/types.d.ts +52 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +14 -0
- package/dist/types.js.map +1 -1
- package/package.json +5 -2
- package/scripts/postinstall.js +78 -0
- package/scripts/preuninstall.js +67 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/failover/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Pricing Service
|
|
3
|
+
*
|
|
4
|
+
* Fetches and caches pricing data for LLM providers to enable cost-aware routing.
|
|
5
|
+
* Uses OpenRouter API as the primary data source for comprehensive pricing info.
|
|
6
|
+
*/
|
|
7
|
+
import type { Logger } from '../observability/logger.js';
|
|
8
|
+
/**
|
|
9
|
+
* Pricing information for a provider model.
|
|
10
|
+
*/
|
|
11
|
+
export interface ProviderPricing {
|
|
12
|
+
/** Provider name (e.g., 'openai', 'anthropic') */
|
|
13
|
+
provider: string;
|
|
14
|
+
/** Model identifier */
|
|
15
|
+
model: string;
|
|
16
|
+
/** Cost per million input tokens in USD */
|
|
17
|
+
inputPerMillion: number;
|
|
18
|
+
/** Cost per million output tokens in USD */
|
|
19
|
+
outputPerMillion: number;
|
|
20
|
+
/** Data source (e.g., 'openrouter', 'manual') */
|
|
21
|
+
source: string;
|
|
22
|
+
/** When the pricing was last updated */
|
|
23
|
+
updatedAt: Date;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Configuration for the pricing service.
|
|
27
|
+
*/
|
|
28
|
+
export interface PricingServiceConfig {
|
|
29
|
+
/** Cache TTL in ms (default: 86400000 = 24 hours) */
|
|
30
|
+
cacheTtlMs?: number;
|
|
31
|
+
/** OpenRouter API key for fetching pricing (optional, uses free endpoint) */
|
|
32
|
+
openRouterApiKey?: string;
|
|
33
|
+
/** Timeout for API requests in ms (default: 10000) */
|
|
34
|
+
timeoutMs?: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Service for fetching and managing provider pricing data.
|
|
38
|
+
*
|
|
39
|
+
* Features:
|
|
40
|
+
* - Fetches pricing from OpenRouter API
|
|
41
|
+
* - Caches pricing data with configurable TTL
|
|
42
|
+
* - Falls back to manual pricing for providers not on OpenRouter
|
|
43
|
+
* - Provides cost comparison utilities
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* const pricing = new PricingService(logger);
|
|
48
|
+
* await pricing.refresh();
|
|
49
|
+
*
|
|
50
|
+
* // Get pricing for a specific model
|
|
51
|
+
* const cost = pricing.getPricing('openai', 'gpt-4o');
|
|
52
|
+
*
|
|
53
|
+
* // Sort providers by cost
|
|
54
|
+
* const sorted = pricing.sortByCost(['openai', 'anthropic', 'deepseek']);
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare class PricingService {
|
|
58
|
+
private readonly config;
|
|
59
|
+
private readonly logger;
|
|
60
|
+
private cache;
|
|
61
|
+
private lastFetch;
|
|
62
|
+
constructor(logger: Logger, config?: PricingServiceConfig);
|
|
63
|
+
/**
|
|
64
|
+
* Fetch/refresh pricing data from OpenRouter API.
|
|
65
|
+
*/
|
|
66
|
+
refresh(): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Get pricing for a specific provider/model.
|
|
69
|
+
*/
|
|
70
|
+
getPricing(provider: string, model: string): ProviderPricing | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* Get all cached pricing data.
|
|
73
|
+
*/
|
|
74
|
+
getAllPricing(): ProviderPricing[];
|
|
75
|
+
/**
|
|
76
|
+
* Sort providers by cost (cheapest first).
|
|
77
|
+
* Uses average of input/output costs for comparison.
|
|
78
|
+
*/
|
|
79
|
+
sortByCost(providers: Array<{
|
|
80
|
+
provider: string;
|
|
81
|
+
model: string;
|
|
82
|
+
}>): Array<{
|
|
83
|
+
provider: string;
|
|
84
|
+
model: string;
|
|
85
|
+
cost: number;
|
|
86
|
+
}>;
|
|
87
|
+
/**
|
|
88
|
+
* Get cheapest provider from a list.
|
|
89
|
+
*/
|
|
90
|
+
getCheapest(providers: Array<{
|
|
91
|
+
provider: string;
|
|
92
|
+
model: string;
|
|
93
|
+
}>): {
|
|
94
|
+
provider: string;
|
|
95
|
+
model: string;
|
|
96
|
+
} | undefined;
|
|
97
|
+
/**
|
|
98
|
+
* Check if cache is stale.
|
|
99
|
+
*/
|
|
100
|
+
isCacheStale(): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Format a cost summary string for logging.
|
|
103
|
+
*/
|
|
104
|
+
formatCostSummary(providers: Array<{
|
|
105
|
+
provider: string;
|
|
106
|
+
model: string;
|
|
107
|
+
}>): string;
|
|
108
|
+
/**
|
|
109
|
+
* Calculate estimated cost for a request.
|
|
110
|
+
*/
|
|
111
|
+
estimateCost(provider: string, model: string, inputTokens: number, outputTokens: number): number | null;
|
|
112
|
+
private getCacheKey;
|
|
113
|
+
private parseOpenRouterResponse;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=pricing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/failover/pricing.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAMzD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,eAAe,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,gBAAgB,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAgFD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,SAAS,CAAqB;gBAE1B,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,oBAAoB;IAWzD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAwD9B;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAkBxE;;OAEG;IACH,aAAa,IAAI,eAAe,EAAE;IAIlC;;;OAGG;IACH,UAAU,CACR,SAAS,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GACpD,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAY3D;;OAEG;IACH,WAAW,CACT,SAAS,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GACpD;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAKlD;;OAEG;IACH,YAAY,IAAI,OAAO;IASvB;;OAEG;IACH,iBAAiB,CACf,SAAS,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,GACpD,MAAM;IAkBT;;OAEG;IACH,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI;IAgBhB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,uBAAuB;CAwChC"}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Pricing Service
|
|
3
|
+
*
|
|
4
|
+
* Fetches and caches pricing data for LLM providers to enable cost-aware routing.
|
|
5
|
+
* Uses OpenRouter API as the primary data source for comprehensive pricing info.
|
|
6
|
+
*/
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Constants
|
|
9
|
+
// ============================================================================
|
|
10
|
+
const DEFAULT_CONFIG = {
|
|
11
|
+
cacheTtlMs: 86400000, // 24 hours
|
|
12
|
+
openRouterApiKey: '',
|
|
13
|
+
timeoutMs: 10000,
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Manual pricing data for providers not on OpenRouter.
|
|
17
|
+
* Updated January 2026.
|
|
18
|
+
*/
|
|
19
|
+
const MANUAL_PRICING = [
|
|
20
|
+
// ZAI (GLM) - Very affordable Chinese provider
|
|
21
|
+
{
|
|
22
|
+
provider: 'zai',
|
|
23
|
+
model: 'glm-4.7',
|
|
24
|
+
inputPerMillion: 0.01,
|
|
25
|
+
outputPerMillion: 0.01,
|
|
26
|
+
source: 'manual',
|
|
27
|
+
updatedAt: new Date('2026-01-01'),
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
provider: 'zai',
|
|
31
|
+
model: 'glm-4',
|
|
32
|
+
inputPerMillion: 0.01,
|
|
33
|
+
outputPerMillion: 0.01,
|
|
34
|
+
source: 'manual',
|
|
35
|
+
updatedAt: new Date('2026-01-01'),
|
|
36
|
+
},
|
|
37
|
+
// Kimi (Moonshot) - Competitive pricing
|
|
38
|
+
{
|
|
39
|
+
provider: 'kimi',
|
|
40
|
+
model: 'moonshot-v1-128k',
|
|
41
|
+
inputPerMillion: 0.02,
|
|
42
|
+
outputPerMillion: 0.02,
|
|
43
|
+
source: 'manual',
|
|
44
|
+
updatedAt: new Date('2026-01-01'),
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
provider: 'kimi-code',
|
|
48
|
+
model: 'kimi-code',
|
|
49
|
+
inputPerMillion: 0.00, // Subscription-based
|
|
50
|
+
outputPerMillion: 0.00,
|
|
51
|
+
source: 'manual',
|
|
52
|
+
updatedAt: new Date('2026-01-01'),
|
|
53
|
+
},
|
|
54
|
+
// Ollama - Free (local)
|
|
55
|
+
{
|
|
56
|
+
provider: 'ollama',
|
|
57
|
+
model: 'llama3.3:70b',
|
|
58
|
+
inputPerMillion: 0.00,
|
|
59
|
+
outputPerMillion: 0.00,
|
|
60
|
+
source: 'manual',
|
|
61
|
+
updatedAt: new Date('2026-01-01'),
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
/**
|
|
65
|
+
* Mapping from Agent Foundry provider names to OpenRouter model prefixes.
|
|
66
|
+
*/
|
|
67
|
+
const PROVIDER_MODEL_PREFIXES = {
|
|
68
|
+
anthropic: ['anthropic/'],
|
|
69
|
+
openai: ['openai/'],
|
|
70
|
+
google: ['google/'],
|
|
71
|
+
deepseek: ['deepseek/'],
|
|
72
|
+
perplexity: ['perplexity/'],
|
|
73
|
+
groq: ['groq/'],
|
|
74
|
+
together: ['together/'],
|
|
75
|
+
fireworks: ['fireworks/'],
|
|
76
|
+
};
|
|
77
|
+
// ============================================================================
|
|
78
|
+
// PricingService Class
|
|
79
|
+
// ============================================================================
|
|
80
|
+
/**
|
|
81
|
+
* Service for fetching and managing provider pricing data.
|
|
82
|
+
*
|
|
83
|
+
* Features:
|
|
84
|
+
* - Fetches pricing from OpenRouter API
|
|
85
|
+
* - Caches pricing data with configurable TTL
|
|
86
|
+
* - Falls back to manual pricing for providers not on OpenRouter
|
|
87
|
+
* - Provides cost comparison utilities
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* const pricing = new PricingService(logger);
|
|
92
|
+
* await pricing.refresh();
|
|
93
|
+
*
|
|
94
|
+
* // Get pricing for a specific model
|
|
95
|
+
* const cost = pricing.getPricing('openai', 'gpt-4o');
|
|
96
|
+
*
|
|
97
|
+
* // Sort providers by cost
|
|
98
|
+
* const sorted = pricing.sortByCost(['openai', 'anthropic', 'deepseek']);
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export class PricingService {
|
|
102
|
+
config;
|
|
103
|
+
logger;
|
|
104
|
+
cache = new Map();
|
|
105
|
+
lastFetch = null;
|
|
106
|
+
constructor(logger, config) {
|
|
107
|
+
this.logger = logger;
|
|
108
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
109
|
+
// Initialize with manual pricing
|
|
110
|
+
for (const pricing of MANUAL_PRICING) {
|
|
111
|
+
const key = this.getCacheKey(pricing.provider, pricing.model);
|
|
112
|
+
this.cache.set(key, pricing);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Fetch/refresh pricing data from OpenRouter API.
|
|
117
|
+
*/
|
|
118
|
+
async refresh() {
|
|
119
|
+
try {
|
|
120
|
+
this.logger.info('Fetching pricing data from OpenRouter...');
|
|
121
|
+
const controller = new AbortController();
|
|
122
|
+
const timeout = setTimeout(() => controller.abort(), this.config.timeoutMs);
|
|
123
|
+
try {
|
|
124
|
+
const headers = {
|
|
125
|
+
'Content-Type': 'application/json',
|
|
126
|
+
};
|
|
127
|
+
if (this.config.openRouterApiKey) {
|
|
128
|
+
headers['Authorization'] = `Bearer ${this.config.openRouterApiKey}`;
|
|
129
|
+
}
|
|
130
|
+
const response = await fetch('https://openrouter.ai/api/v1/models', {
|
|
131
|
+
method: 'GET',
|
|
132
|
+
headers,
|
|
133
|
+
signal: controller.signal,
|
|
134
|
+
});
|
|
135
|
+
if (!response.ok) {
|
|
136
|
+
throw new Error(`OpenRouter API returned ${response.status}`);
|
|
137
|
+
}
|
|
138
|
+
const data = (await response.json());
|
|
139
|
+
this.parseOpenRouterResponse(data);
|
|
140
|
+
this.lastFetch = new Date();
|
|
141
|
+
this.logger.info('Pricing data refreshed', {
|
|
142
|
+
modelCount: this.cache.size,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
finally {
|
|
146
|
+
clearTimeout(timeout);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
this.logger.warn('Failed to fetch pricing from OpenRouter', {
|
|
151
|
+
error: error instanceof Error ? error.message : String(error),
|
|
152
|
+
});
|
|
153
|
+
// Continue with cached/manual data
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get pricing for a specific provider/model.
|
|
158
|
+
*/
|
|
159
|
+
getPricing(provider, model) {
|
|
160
|
+
// Try exact match first
|
|
161
|
+
const exactKey = this.getCacheKey(provider, model);
|
|
162
|
+
const exact = this.cache.get(exactKey);
|
|
163
|
+
if (exact) {
|
|
164
|
+
return exact;
|
|
165
|
+
}
|
|
166
|
+
// Try finding by model prefix for OpenRouter data
|
|
167
|
+
for (const [key, pricing] of this.cache) {
|
|
168
|
+
if (pricing.provider === provider && pricing.model.includes(model)) {
|
|
169
|
+
return pricing;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return undefined;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Get all cached pricing data.
|
|
176
|
+
*/
|
|
177
|
+
getAllPricing() {
|
|
178
|
+
return Array.from(this.cache.values());
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Sort providers by cost (cheapest first).
|
|
182
|
+
* Uses average of input/output costs for comparison.
|
|
183
|
+
*/
|
|
184
|
+
sortByCost(providers) {
|
|
185
|
+
return providers
|
|
186
|
+
.map((p) => {
|
|
187
|
+
const pricing = this.getPricing(p.provider, p.model);
|
|
188
|
+
const cost = pricing
|
|
189
|
+
? (pricing.inputPerMillion + pricing.outputPerMillion) / 2
|
|
190
|
+
: Infinity; // Unknown cost goes last
|
|
191
|
+
return { ...p, cost };
|
|
192
|
+
})
|
|
193
|
+
.sort((a, b) => a.cost - b.cost);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Get cheapest provider from a list.
|
|
197
|
+
*/
|
|
198
|
+
getCheapest(providers) {
|
|
199
|
+
const sorted = this.sortByCost(providers);
|
|
200
|
+
return sorted[0];
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Check if cache is stale.
|
|
204
|
+
*/
|
|
205
|
+
isCacheStale() {
|
|
206
|
+
if (!this.lastFetch) {
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
209
|
+
const age = Date.now() - this.lastFetch.getTime();
|
|
210
|
+
return age > this.config.cacheTtlMs;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Format a cost summary string for logging.
|
|
214
|
+
*/
|
|
215
|
+
formatCostSummary(providers) {
|
|
216
|
+
const lines = [];
|
|
217
|
+
for (const { provider, model } of providers) {
|
|
218
|
+
const pricing = this.getPricing(provider, model);
|
|
219
|
+
if (pricing) {
|
|
220
|
+
const avgCost = (pricing.inputPerMillion + pricing.outputPerMillion) / 2;
|
|
221
|
+
lines.push(` ${provider} (${model}): $${avgCost.toFixed(2)}/1M tokens`);
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
lines.push(` ${provider} (${model}): pricing unknown`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return lines.join('\n');
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Calculate estimated cost for a request.
|
|
231
|
+
*/
|
|
232
|
+
estimateCost(provider, model, inputTokens, outputTokens) {
|
|
233
|
+
const pricing = this.getPricing(provider, model);
|
|
234
|
+
if (!pricing) {
|
|
235
|
+
return null;
|
|
236
|
+
}
|
|
237
|
+
const inputCost = (inputTokens / 1_000_000) * pricing.inputPerMillion;
|
|
238
|
+
const outputCost = (outputTokens / 1_000_000) * pricing.outputPerMillion;
|
|
239
|
+
return inputCost + outputCost;
|
|
240
|
+
}
|
|
241
|
+
// ==========================================================================
|
|
242
|
+
// Private Methods
|
|
243
|
+
// ==========================================================================
|
|
244
|
+
getCacheKey(provider, model) {
|
|
245
|
+
return `${provider}:${model}`;
|
|
246
|
+
}
|
|
247
|
+
parseOpenRouterResponse(response) {
|
|
248
|
+
for (const model of response.data) {
|
|
249
|
+
// Parse provider from model ID (e.g., "anthropic/claude-3-opus")
|
|
250
|
+
const [providerPrefix, ...modelParts] = model.id.split('/');
|
|
251
|
+
const modelName = modelParts.join('/');
|
|
252
|
+
// Map OpenRouter provider prefix to our provider name
|
|
253
|
+
let ourProvider;
|
|
254
|
+
for (const [provider, prefixes] of Object.entries(PROVIDER_MODEL_PREFIXES)) {
|
|
255
|
+
if (prefixes.some((p) => model.id.startsWith(p))) {
|
|
256
|
+
ourProvider = provider;
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
if (!ourProvider) {
|
|
261
|
+
ourProvider = providerPrefix; // Use as-is if not mapped
|
|
262
|
+
}
|
|
263
|
+
// Parse pricing (OpenRouter returns string prices per token)
|
|
264
|
+
const inputPrice = model.pricing?.prompt
|
|
265
|
+
? parseFloat(model.pricing.prompt) * 1_000_000
|
|
266
|
+
: 0;
|
|
267
|
+
const outputPrice = model.pricing?.completion
|
|
268
|
+
? parseFloat(model.pricing.completion) * 1_000_000
|
|
269
|
+
: 0;
|
|
270
|
+
const pricing = {
|
|
271
|
+
provider: ourProvider,
|
|
272
|
+
model: modelName,
|
|
273
|
+
inputPerMillion: inputPrice,
|
|
274
|
+
outputPerMillion: outputPrice,
|
|
275
|
+
source: 'openrouter',
|
|
276
|
+
updatedAt: new Date(),
|
|
277
|
+
};
|
|
278
|
+
const key = this.getCacheKey(ourProvider, modelName);
|
|
279
|
+
this.cache.set(key, pricing);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=pricing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/failover/pricing.ts"],"names":[],"mappings":"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"}
|
|
@@ -84,6 +84,52 @@ export interface PersistedPipelineState {
|
|
|
84
84
|
/** Last update timestamp */
|
|
85
85
|
updatedAt: number;
|
|
86
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Persisted health state for a provider.
|
|
89
|
+
*/
|
|
90
|
+
export interface PersistedProviderHealth {
|
|
91
|
+
/** Provider name */
|
|
92
|
+
provider: string;
|
|
93
|
+
/** Current health status */
|
|
94
|
+
status: 'healthy' | 'degraded' | 'unhealthy';
|
|
95
|
+
/** Number of consecutive failures */
|
|
96
|
+
consecutiveFailures: number;
|
|
97
|
+
/** Cooldown end timestamp (null if not in cooldown) */
|
|
98
|
+
cooldownUntil: number | null;
|
|
99
|
+
/** Rolling average latency in ms */
|
|
100
|
+
latencyMs: number;
|
|
101
|
+
/** Total successful requests */
|
|
102
|
+
successCount: number;
|
|
103
|
+
/** Total failed requests */
|
|
104
|
+
failureCount: number;
|
|
105
|
+
/** Last successful request timestamp */
|
|
106
|
+
lastSuccessAt: number | null;
|
|
107
|
+
/** Last error timestamp */
|
|
108
|
+
lastErrorAt: number | null;
|
|
109
|
+
/** Last error message */
|
|
110
|
+
lastErrorMessage: string | null;
|
|
111
|
+
/** Last error HTTP status code */
|
|
112
|
+
lastErrorCode: number | null;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Persisted failover event for diagnostics.
|
|
116
|
+
*/
|
|
117
|
+
export interface PersistedFailoverEvent {
|
|
118
|
+
/** Event timestamp */
|
|
119
|
+
timestamp: number;
|
|
120
|
+
/** Role that triggered the failover */
|
|
121
|
+
role: string;
|
|
122
|
+
/** Provider that failed */
|
|
123
|
+
fromProvider: string;
|
|
124
|
+
/** Provider switched to */
|
|
125
|
+
toProvider: string;
|
|
126
|
+
/** Reason for failover */
|
|
127
|
+
reason: string;
|
|
128
|
+
/** HTTP error code if applicable */
|
|
129
|
+
errorCode?: number;
|
|
130
|
+
/** Error message */
|
|
131
|
+
errorMessage?: string;
|
|
132
|
+
}
|
|
87
133
|
/**
|
|
88
134
|
* Root persisted state structure.
|
|
89
135
|
* This is the complete state saved to .agent-foundry/state.json.
|
|
@@ -103,6 +149,10 @@ export interface PersistedState {
|
|
|
103
149
|
conflicts: PersistedConflictState[];
|
|
104
150
|
/** All persisted pipelines */
|
|
105
151
|
pipelines: PersistedPipelineState[];
|
|
152
|
+
/** Provider health states */
|
|
153
|
+
providerHealth?: PersistedProviderHealth[];
|
|
154
|
+
/** Recent failover events (last 100) */
|
|
155
|
+
failoverEvents?: PersistedFailoverEvent[];
|
|
106
156
|
}
|
|
107
157
|
/**
|
|
108
158
|
* Current state schema version.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-schema.d.ts","sourceRoot":"","sources":["../../src/persistence/state-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACvD,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,MAAM,EAAE,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC;IAClF,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,cAAc,EAAE,MAAM,CAAC;CACxB;AAMD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACvD,mCAAmC;IACnC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,8BAA8B;IAC9B,SAAS,EAAE,sBAAsB,EAAE,CAAC;IACpC,8BAA8B;IAC9B,SAAS,EAAE,sBAAsB,EAAE,CAAC;IACpC,8BAA8B;IAC9B,SAAS,EAAE,sBAAsB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"state-schema.d.ts","sourceRoot":"","sources":["../../src/persistence/state-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-schema.js","sourceRoot":"","sources":["../../src/persistence/state-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"state-schema.js","sourceRoot":"","sources":["../../src/persistence/state-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuLH,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAE7C;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;QACvB,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,EAAE;QACb,cAAc,EAAE,EAAE;QAClB,cAAc,EAAE,EAAE;KACnB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fireworks AI Provider Implementation
|
|
3
|
+
*
|
|
4
|
+
* Fireworks AI provides fast inference for DeepSeek, Llama, and other open models.
|
|
5
|
+
* It uses an OpenAI-compatible API format.
|
|
6
|
+
* This provider extends OpenAIProvider with the correct name identifier.
|
|
7
|
+
*/
|
|
8
|
+
import { OpenAIProvider } from './openai.js';
|
|
9
|
+
import type { ProviderConfig } from '../types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Fireworks AI API provider adapter.
|
|
12
|
+
*
|
|
13
|
+
* Uses OpenAI-compatible API format with Fireworks AI endpoints.
|
|
14
|
+
* Provides fast inference for DeepSeek, Llama, and other models.
|
|
15
|
+
*
|
|
16
|
+
* Default base URL: https://api.fireworks.ai/inference/v1
|
|
17
|
+
* Available models: accounts/fireworks/models/llama-v3p3-70b-instruct, accounts/fireworks/models/deepseek-v3
|
|
18
|
+
*/
|
|
19
|
+
export declare class FireworksProvider extends OpenAIProvider {
|
|
20
|
+
readonly name = "fireworks";
|
|
21
|
+
constructor(config: ProviderConfig);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=fireworks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fireworks.d.ts","sourceRoot":"","sources":["../../src/providers/fireworks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAKlD;;;;;;;;GAQG;AACH,qBAAa,iBAAkB,SAAQ,cAAc;IACnD,SAAyB,IAAI,eAAe;gBAEhC,MAAM,EAAE,cAAc;CAQnC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fireworks AI Provider Implementation
|
|
3
|
+
*
|
|
4
|
+
* Fireworks AI provides fast inference for DeepSeek, Llama, and other open models.
|
|
5
|
+
* It uses an OpenAI-compatible API format.
|
|
6
|
+
* This provider extends OpenAIProvider with the correct name identifier.
|
|
7
|
+
*/
|
|
8
|
+
import { OpenAIProvider } from './openai.js';
|
|
9
|
+
// Default base URL for Fireworks AI API
|
|
10
|
+
const FIREWORKS_BASE_URL = 'https://api.fireworks.ai/inference/v1';
|
|
11
|
+
/**
|
|
12
|
+
* Fireworks AI API provider adapter.
|
|
13
|
+
*
|
|
14
|
+
* Uses OpenAI-compatible API format with Fireworks AI endpoints.
|
|
15
|
+
* Provides fast inference for DeepSeek, Llama, and other models.
|
|
16
|
+
*
|
|
17
|
+
* Default base URL: https://api.fireworks.ai/inference/v1
|
|
18
|
+
* Available models: accounts/fireworks/models/llama-v3p3-70b-instruct, accounts/fireworks/models/deepseek-v3
|
|
19
|
+
*/
|
|
20
|
+
export class FireworksProvider extends OpenAIProvider {
|
|
21
|
+
name = 'fireworks';
|
|
22
|
+
constructor(config) {
|
|
23
|
+
// Ensure base_url defaults to Fireworks AI endpoint if not specified
|
|
24
|
+
const configWithDefaults = {
|
|
25
|
+
...config,
|
|
26
|
+
base_url: config.base_url ?? FIREWORKS_BASE_URL,
|
|
27
|
+
};
|
|
28
|
+
super(configWithDefaults);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=fireworks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fireworks.js","sourceRoot":"","sources":["../../src/providers/fireworks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,wCAAwC;AACxC,MAAM,kBAAkB,GAAG,uCAAuC,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,OAAO,iBAAkB,SAAQ,cAAc;IAC1B,IAAI,GAAG,WAAW,CAAC;IAE5C,YAAY,MAAsB;QAChC,qEAAqE;QACrE,MAAM,kBAAkB,GAAmB;YACzC,GAAG,MAAM;YACT,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,kBAAkB;SAChD,CAAC;QACF,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Groq Provider Implementation
|
|
3
|
+
*
|
|
4
|
+
* Groq provides ultra-fast LPU inference (up to 18x faster than GPU).
|
|
5
|
+
* It uses an OpenAI-compatible API format.
|
|
6
|
+
* This provider extends OpenAIProvider with the correct name identifier.
|
|
7
|
+
*/
|
|
8
|
+
import { OpenAIProvider } from './openai.js';
|
|
9
|
+
import type { ProviderConfig } from '../types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Groq API provider adapter.
|
|
12
|
+
*
|
|
13
|
+
* Uses OpenAI-compatible API format with Groq endpoints.
|
|
14
|
+
* Provides ultra-fast inference using custom LPU hardware.
|
|
15
|
+
*
|
|
16
|
+
* Default base URL: https://api.groq.com/openai/v1
|
|
17
|
+
* Available models: llama-3.3-70b-versatile, llama-3.1-8b-instant, mixtral-8x7b-32768, gemma2-9b-it
|
|
18
|
+
*/
|
|
19
|
+
export declare class GroqProvider extends OpenAIProvider {
|
|
20
|
+
readonly name = "groq";
|
|
21
|
+
constructor(config: ProviderConfig);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=groq.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groq.d.ts","sourceRoot":"","sources":["../../src/providers/groq.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAKlD;;;;;;;;GAQG;AACH,qBAAa,YAAa,SAAQ,cAAc;IAC9C,SAAyB,IAAI,UAAU;gBAE3B,MAAM,EAAE,cAAc;CAQnC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Groq Provider Implementation
|
|
3
|
+
*
|
|
4
|
+
* Groq provides ultra-fast LPU inference (up to 18x faster than GPU).
|
|
5
|
+
* It uses an OpenAI-compatible API format.
|
|
6
|
+
* This provider extends OpenAIProvider with the correct name identifier.
|
|
7
|
+
*/
|
|
8
|
+
import { OpenAIProvider } from './openai.js';
|
|
9
|
+
// Default base URL for Groq API
|
|
10
|
+
const GROQ_BASE_URL = 'https://api.groq.com/openai/v1';
|
|
11
|
+
/**
|
|
12
|
+
* Groq API provider adapter.
|
|
13
|
+
*
|
|
14
|
+
* Uses OpenAI-compatible API format with Groq endpoints.
|
|
15
|
+
* Provides ultra-fast inference using custom LPU hardware.
|
|
16
|
+
*
|
|
17
|
+
* Default base URL: https://api.groq.com/openai/v1
|
|
18
|
+
* Available models: llama-3.3-70b-versatile, llama-3.1-8b-instant, mixtral-8x7b-32768, gemma2-9b-it
|
|
19
|
+
*/
|
|
20
|
+
export class GroqProvider extends OpenAIProvider {
|
|
21
|
+
name = 'groq';
|
|
22
|
+
constructor(config) {
|
|
23
|
+
// Ensure base_url defaults to Groq endpoint if not specified
|
|
24
|
+
const configWithDefaults = {
|
|
25
|
+
...config,
|
|
26
|
+
base_url: config.base_url ?? GROQ_BASE_URL,
|
|
27
|
+
};
|
|
28
|
+
super(configWithDefaults);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=groq.js.map
|