ai-model-advisor-mcp 2.2.2 → 2.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 +17 -2
- package/build/server.d.ts +106 -0
- package/build/server.d.ts.map +1 -1
- package/build/server.js +54 -0
- package/build/server.js.map +1 -1
- package/build/tools/select.d.ts +113 -0
- package/build/tools/select.d.ts.map +1 -0
- package/build/tools/select.js +371 -0
- package/build/tools/select.js.map +1 -0
- package/package.json +3 -2
- package/build/data/fal-pricing.d.ts +0 -15
- package/build/data/fal-pricing.d.ts.map +0 -1
- package/build/data/fal-pricing.js +0 -145
- package/build/data/fal-pricing.js.map +0 -1
- package/build/data/fireworks-pricing.d.ts +0 -14
- package/build/data/fireworks-pricing.d.ts.map +0 -1
- package/build/data/fireworks-pricing.js +0 -57
- package/build/data/fireworks-pricing.js.map +0 -1
- package/build/data/replicate-pricing.d.ts +0 -16
- package/build/data/replicate-pricing.d.ts.map +0 -1
- package/build/data/replicate-pricing.js +0 -71
- package/build/data/replicate-pricing.js.map +0 -1
- package/build/data/together-pricing.d.ts +0 -14
- package/build/data/together-pricing.d.ts.map +0 -1
- package/build/data/together-pricing.js +0 -73
- package/build/data/together-pricing.js.map +0 -1
- package/build/providers/fal.d.ts +0 -3
- package/build/providers/fal.d.ts.map +0 -1
- package/build/providers/fal.js +0 -168
- package/build/providers/fal.js.map +0 -1
- package/build/providers/fireworks.d.ts +0 -3
- package/build/providers/fireworks.d.ts.map +0 -1
- package/build/providers/fireworks.js +0 -75
- package/build/providers/fireworks.js.map +0 -1
- package/build/providers/openrouter.d.ts +0 -3
- package/build/providers/openrouter.d.ts.map +0 -1
- package/build/providers/openrouter.js +0 -78
- package/build/providers/openrouter.js.map +0 -1
- package/build/providers/replicate.d.ts +0 -3
- package/build/providers/replicate.d.ts.map +0 -1
- package/build/providers/replicate.js +0 -129
- package/build/providers/replicate.js.map +0 -1
- package/build/providers/together.d.ts +0 -3
- package/build/providers/together.d.ts.map +0 -1
- package/build/providers/together.js +0 -93
- package/build/providers/together.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fireworks-pricing.js","sourceRoot":"","sources":["../../src/data/fireworks-pricing.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,MAAM,CAAC,MAAM,wBAAwB,GAAyC;IAC5E,oEAAoE;IACpE,mDAAmD,EAAE;QACnD,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;KAChB;IACD,oDAAoD,EAAE;QACpD,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;KAChB;IACD,uCAAuC,EAAE;QACvC,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;KAChB;IACD,uCAAuC,EAAE;QACvC,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;KAChB;IACD,gDAAgD,EAAE;QAChD,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;KAChB;IACD,kDAAkD,EAAE;QAClD,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;KAChB;IAED,oEAAoE;IACpE,kDAAkD,EAAE;QAClD,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;KAChB;IACD,2DAA2D,EAAE;QAC3D,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;KAChB;IACD,wCAAwC,EAAE;QACxC,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;KAChB;CACF,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Static fallback pricing for popular Replicate models.
|
|
3
|
-
* Sourced from replicate.com/pricing — no API key needed for these.
|
|
4
|
-
* Mixed billing: per-image, per-token, per-second depending on model.
|
|
5
|
-
*
|
|
6
|
-
* Last updated: 2026-04-08
|
|
7
|
-
*/
|
|
8
|
-
export interface StaticReplicatePrice {
|
|
9
|
-
unit_price: number;
|
|
10
|
-
unit: string;
|
|
11
|
-
currency: string;
|
|
12
|
-
/** For LLMs: output token price. unit_price is input price. */
|
|
13
|
-
output_price?: number;
|
|
14
|
-
}
|
|
15
|
-
export declare const STATIC_REPLICATE_PRICING: Record<string, StaticReplicatePrice>;
|
|
16
|
-
//# sourceMappingURL=replicate-pricing.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"replicate-pricing.d.ts","sourceRoot":"","sources":["../../src/data/replicate-pricing.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAgEzE,CAAC"}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Static fallback pricing for popular Replicate models.
|
|
3
|
-
* Sourced from replicate.com/pricing — no API key needed for these.
|
|
4
|
-
* Mixed billing: per-image, per-token, per-second depending on model.
|
|
5
|
-
*
|
|
6
|
-
* Last updated: 2026-04-08
|
|
7
|
-
*/
|
|
8
|
-
export const STATIC_REPLICATE_PRICING = {
|
|
9
|
-
// ─── Image Generation ────────────────────────────────────────────
|
|
10
|
-
"black-forest-labs/flux-1.1-pro": {
|
|
11
|
-
unit_price: 0.04,
|
|
12
|
-
unit: "image",
|
|
13
|
-
currency: "USD",
|
|
14
|
-
},
|
|
15
|
-
"black-forest-labs/flux-dev": {
|
|
16
|
-
unit_price: 0.025,
|
|
17
|
-
unit: "image",
|
|
18
|
-
currency: "USD",
|
|
19
|
-
},
|
|
20
|
-
"black-forest-labs/flux-schnell": {
|
|
21
|
-
unit_price: 0.003,
|
|
22
|
-
unit: "image",
|
|
23
|
-
currency: "USD",
|
|
24
|
-
},
|
|
25
|
-
"ideogram-ai/ideogram-v3-quality": {
|
|
26
|
-
unit_price: 0.09,
|
|
27
|
-
unit: "image",
|
|
28
|
-
currency: "USD",
|
|
29
|
-
},
|
|
30
|
-
"recraft-ai/recraft-v3": {
|
|
31
|
-
unit_price: 0.04,
|
|
32
|
-
unit: "image",
|
|
33
|
-
currency: "USD",
|
|
34
|
-
},
|
|
35
|
-
"stability-ai/stable-diffusion-3.5-large": {
|
|
36
|
-
unit_price: 0.065,
|
|
37
|
-
unit: "image",
|
|
38
|
-
currency: "USD",
|
|
39
|
-
},
|
|
40
|
-
// ─── Video Generation ────────────────────────────────────────────
|
|
41
|
-
"wavespeedai/wan-2.1-i2v-720p": {
|
|
42
|
-
unit_price: 0.25,
|
|
43
|
-
unit: "second",
|
|
44
|
-
currency: "USD",
|
|
45
|
-
},
|
|
46
|
-
"wavespeedai/wan-2.1-i2v-480p": {
|
|
47
|
-
unit_price: 0.09,
|
|
48
|
-
unit: "second",
|
|
49
|
-
currency: "USD",
|
|
50
|
-
},
|
|
51
|
-
// ─── LLMs ────────────────────────────────────────────────────────
|
|
52
|
-
"anthropic/claude-3.7-sonnet": {
|
|
53
|
-
unit_price: 3.00, // per 1M input tokens
|
|
54
|
-
unit: "million_tokens",
|
|
55
|
-
currency: "USD",
|
|
56
|
-
output_price: 15.00, // per 1M output tokens
|
|
57
|
-
},
|
|
58
|
-
"deepseek-ai/deepseek-r1": {
|
|
59
|
-
unit_price: 3.75, // per 1M input tokens
|
|
60
|
-
unit: "million_tokens",
|
|
61
|
-
currency: "USD",
|
|
62
|
-
output_price: 10.00,
|
|
63
|
-
},
|
|
64
|
-
"meta/meta-llama-3-70b-instruct": {
|
|
65
|
-
unit_price: 0.65,
|
|
66
|
-
unit: "million_tokens",
|
|
67
|
-
currency: "USD",
|
|
68
|
-
output_price: 2.75,
|
|
69
|
-
},
|
|
70
|
-
};
|
|
71
|
-
//# sourceMappingURL=replicate-pricing.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"replicate-pricing.js","sourceRoot":"","sources":["../../src/data/replicate-pricing.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,MAAM,CAAC,MAAM,wBAAwB,GAAyC;IAC5E,oEAAoE;IACpE,gCAAgC,EAAE;QAChC,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;KAChB;IACD,4BAA4B,EAAE;QAC5B,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;KAChB;IACD,gCAAgC,EAAE;QAChC,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;KAChB;IACD,iCAAiC,EAAE;QACjC,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;KAChB;IACD,uBAAuB,EAAE;QACvB,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;KAChB;IACD,yCAAyC,EAAE;QACzC,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,KAAK;KAChB;IAED,oEAAoE;IACpE,8BAA8B,EAAE;QAC9B,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,KAAK;KAChB;IACD,8BAA8B,EAAE;QAC9B,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,KAAK;KAChB;IAED,oEAAoE;IACpE,6BAA6B,EAAE;QAC7B,UAAU,EAAE,IAAI,EAAE,sBAAsB;QACxC,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,KAAK,EAAE,uBAAuB;KAC7C;IACD,yBAAyB,EAAE;QACzB,UAAU,EAAE,IAAI,EAAE,sBAAsB;QACxC,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,KAAK;KACpB;IACD,gCAAgC,EAAE;QAChC,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,gBAAgB;QACtB,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,IAAI;KACnB;CACF,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Static fallback pricing for popular Together AI models.
|
|
3
|
-
* Sourced from together.ai/pricing — no API key needed for these.
|
|
4
|
-
* Prices are per 1M tokens (input/output).
|
|
5
|
-
*
|
|
6
|
-
* Last updated: 2026-04-08
|
|
7
|
-
*/
|
|
8
|
-
export interface StaticTogetherPrice {
|
|
9
|
-
input_per_million: number;
|
|
10
|
-
output_per_million: number;
|
|
11
|
-
currency: string;
|
|
12
|
-
}
|
|
13
|
-
export declare const STATIC_TOGETHER_PRICING: Record<string, StaticTogetherPrice>;
|
|
14
|
-
//# sourceMappingURL=together-pricing.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"together-pricing.d.ts","sourceRoot":"","sources":["../../src/data/together-pricing.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,mBAAmB;IAClC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAkEvE,CAAC"}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Static fallback pricing for popular Together AI models.
|
|
3
|
-
* Sourced from together.ai/pricing — no API key needed for these.
|
|
4
|
-
* Prices are per 1M tokens (input/output).
|
|
5
|
-
*
|
|
6
|
-
* Last updated: 2026-04-08
|
|
7
|
-
*/
|
|
8
|
-
export const STATIC_TOGETHER_PRICING = {
|
|
9
|
-
// ─── Frontier / Large ────────────────────────────────────────────
|
|
10
|
-
"meta-llama/Llama-3.3-70B-Instruct-Turbo": {
|
|
11
|
-
input_per_million: 0.88,
|
|
12
|
-
output_per_million: 0.88,
|
|
13
|
-
currency: "USD",
|
|
14
|
-
},
|
|
15
|
-
"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8": {
|
|
16
|
-
input_per_million: 0.27,
|
|
17
|
-
output_per_million: 0.85,
|
|
18
|
-
currency: "USD",
|
|
19
|
-
},
|
|
20
|
-
"meta-llama/Llama-4-Scout-17B-16E-Instruct": {
|
|
21
|
-
input_per_million: 0.18,
|
|
22
|
-
output_per_million: 0.59,
|
|
23
|
-
currency: "USD",
|
|
24
|
-
},
|
|
25
|
-
"deepseek-ai/DeepSeek-V3": {
|
|
26
|
-
input_per_million: 0.60,
|
|
27
|
-
output_per_million: 1.70,
|
|
28
|
-
currency: "USD",
|
|
29
|
-
},
|
|
30
|
-
"deepseek-ai/DeepSeek-R1": {
|
|
31
|
-
input_per_million: 3.00,
|
|
32
|
-
output_per_million: 7.00,
|
|
33
|
-
currency: "USD",
|
|
34
|
-
},
|
|
35
|
-
"Qwen/Qwen2.5-72B-Instruct-Turbo": {
|
|
36
|
-
input_per_million: 1.20,
|
|
37
|
-
output_per_million: 1.80,
|
|
38
|
-
currency: "USD",
|
|
39
|
-
},
|
|
40
|
-
"mistralai/Mistral-Small-24B-Instruct-2501": {
|
|
41
|
-
input_per_million: 0.10,
|
|
42
|
-
output_per_million: 0.30,
|
|
43
|
-
currency: "USD",
|
|
44
|
-
},
|
|
45
|
-
"google/gemma-2-27b-it": {
|
|
46
|
-
input_per_million: 0.80,
|
|
47
|
-
output_per_million: 0.80,
|
|
48
|
-
currency: "USD",
|
|
49
|
-
},
|
|
50
|
-
// ─── Small / Fast ────────────────────────────────────────────────
|
|
51
|
-
"meta-llama/Llama-3.2-3B-Instruct-Turbo": {
|
|
52
|
-
input_per_million: 0.06,
|
|
53
|
-
output_per_million: 0.06,
|
|
54
|
-
currency: "USD",
|
|
55
|
-
},
|
|
56
|
-
"Qwen/Qwen2.5-7B-Instruct-Turbo": {
|
|
57
|
-
input_per_million: 0.30,
|
|
58
|
-
output_per_million: 0.30,
|
|
59
|
-
currency: "USD",
|
|
60
|
-
},
|
|
61
|
-
"google/gemma-2-9b-it": {
|
|
62
|
-
input_per_million: 0.30,
|
|
63
|
-
output_per_million: 0.30,
|
|
64
|
-
currency: "USD",
|
|
65
|
-
},
|
|
66
|
-
// ─── Image ───────────────────────────────────────────────────────
|
|
67
|
-
"black-forest-labs/FLUX.1-schnell-Free": {
|
|
68
|
-
input_per_million: 0,
|
|
69
|
-
output_per_million: 0,
|
|
70
|
-
currency: "USD",
|
|
71
|
-
},
|
|
72
|
-
};
|
|
73
|
-
//# sourceMappingURL=together-pricing.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"together-pricing.js","sourceRoot":"","sources":["../../src/data/together-pricing.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,MAAM,CAAC,MAAM,uBAAuB,GAAwC;IAC1E,oEAAoE;IACpE,yCAAyC,EAAE;QACzC,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;KAChB;IACD,mDAAmD,EAAE;QACnD,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;KAChB;IACD,2CAA2C,EAAE;QAC3C,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;KAChB;IACD,yBAAyB,EAAE;QACzB,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;KAChB;IACD,yBAAyB,EAAE;QACzB,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;KAChB;IACD,iCAAiC,EAAE;QACjC,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;KAChB;IACD,2CAA2C,EAAE;QAC3C,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;KAChB;IACD,uBAAuB,EAAE;QACvB,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;KAChB;IAED,oEAAoE;IACpE,wCAAwC,EAAE;QACxC,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;KAChB;IACD,gCAAgC,EAAE;QAChC,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;KAChB;IACD,sBAAsB,EAAE;QACtB,iBAAiB,EAAE,IAAI;QACvB,kBAAkB,EAAE,IAAI;QACxB,QAAQ,EAAE,KAAK;KAChB;IAED,oEAAoE;IACpE,uCAAuC,EAAE;QACvC,iBAAiB,EAAE,CAAC;QACpB,kBAAkB,EAAE,CAAC;QACrB,QAAQ,EAAE,KAAK;KAChB;CACF,CAAC"}
|
package/build/providers/fal.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fal.d.ts","sourceRoot":"","sources":["../../src/providers/fal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgB,aAAa,EAAiB,MAAM,aAAa,CAAC;AAuM9E,eAAO,MAAM,WAAW,EAAE,aAGzB,CAAC"}
|
package/build/providers/fal.js
DELETED
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { cached } from "../cache.js";
|
|
2
|
-
import { STATIC_FAL_PRICING } from "../data/fal-pricing.js";
|
|
3
|
-
// ─── Category mapping ───────────────────────────────────────────────────────
|
|
4
|
-
const CATEGORY_MAP = {
|
|
5
|
-
"text-to-image": "text-to-image",
|
|
6
|
-
"image-to-image": "image-to-image",
|
|
7
|
-
"text-to-video": "text-to-video",
|
|
8
|
-
"image-to-video": "image-to-video",
|
|
9
|
-
"video-to-video": "video-to-video",
|
|
10
|
-
"text-to-speech": "text-to-speech",
|
|
11
|
-
"speech-to-text": "speech-to-text",
|
|
12
|
-
"text-to-audio": "text-to-audio",
|
|
13
|
-
"image-to-3d": "image-to-3d",
|
|
14
|
-
"vision": "vision",
|
|
15
|
-
"llm": "llm",
|
|
16
|
-
"training": "other",
|
|
17
|
-
};
|
|
18
|
-
function mapCategory(falCategory) {
|
|
19
|
-
return CATEGORY_MAP[falCategory] ?? "other";
|
|
20
|
-
}
|
|
21
|
-
// ─── Fetch models (no auth required) ────────────────────────────────────────
|
|
22
|
-
async function fetchAllFalModels() {
|
|
23
|
-
const allModels = [];
|
|
24
|
-
let cursor = null;
|
|
25
|
-
let hasMore = true;
|
|
26
|
-
while (hasMore) {
|
|
27
|
-
const url = new URL("https://api.fal.ai/v1/models");
|
|
28
|
-
url.searchParams.set("limit", "200");
|
|
29
|
-
if (cursor)
|
|
30
|
-
url.searchParams.set("cursor", cursor);
|
|
31
|
-
let retries = 3;
|
|
32
|
-
while (retries > 0) {
|
|
33
|
-
const response = await fetch(url.toString());
|
|
34
|
-
if (response.status === 429) {
|
|
35
|
-
retries--;
|
|
36
|
-
await new Promise(r => setTimeout(r, 1000));
|
|
37
|
-
continue;
|
|
38
|
-
}
|
|
39
|
-
if (!response.ok) {
|
|
40
|
-
throw new Error(`fal.ai API error: ${response.status} ${response.statusText}`);
|
|
41
|
-
}
|
|
42
|
-
const data = await response.json();
|
|
43
|
-
const models = data.models;
|
|
44
|
-
allModels.push(...models.filter((m) => m.metadata.status === "active"));
|
|
45
|
-
cursor = data.next_cursor ?? null;
|
|
46
|
-
hasMore = data.has_more === true && cursor !== null;
|
|
47
|
-
break;
|
|
48
|
-
}
|
|
49
|
-
if (retries === 0) {
|
|
50
|
-
// If we exhausted retries due to 429, just return what we have so far
|
|
51
|
-
break;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return allModels;
|
|
55
|
-
}
|
|
56
|
-
// ─── Fetch pricing (live API with static fallback) ──────────────────────────
|
|
57
|
-
async function fetchFalPricing(endpointIds) {
|
|
58
|
-
const priceMap = new Map();
|
|
59
|
-
// 1. Seed with static fallback pricing (always available, no key needed)
|
|
60
|
-
for (const id of endpointIds) {
|
|
61
|
-
const staticPrice = STATIC_FAL_PRICING[id];
|
|
62
|
-
if (staticPrice) {
|
|
63
|
-
priceMap.set(id, {
|
|
64
|
-
endpoint_id: id,
|
|
65
|
-
unit_price: staticPrice.unit_price,
|
|
66
|
-
unit: staticPrice.unit,
|
|
67
|
-
currency: staticPrice.currency,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
// 2. If FAL_KEY is available, override with live API data (more up-to-date)
|
|
72
|
-
const falKey = process.env.FAL_KEY;
|
|
73
|
-
if (falKey) {
|
|
74
|
-
for (let i = 0; i < endpointIds.length; i += 50) {
|
|
75
|
-
const batch = endpointIds.slice(i, i + 50);
|
|
76
|
-
const url = new URL("https://api.fal.ai/v1/models/pricing");
|
|
77
|
-
for (const id of batch) {
|
|
78
|
-
url.searchParams.append("endpoint_id", id);
|
|
79
|
-
}
|
|
80
|
-
try {
|
|
81
|
-
const response = await fetch(url.toString(), {
|
|
82
|
-
headers: { Authorization: `Key ${falKey}` },
|
|
83
|
-
});
|
|
84
|
-
if (!response.ok)
|
|
85
|
-
continue;
|
|
86
|
-
const data = await response.json();
|
|
87
|
-
for (const entry of (data.prices ?? [])) {
|
|
88
|
-
priceMap.set(entry.endpoint_id, entry);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
catch {
|
|
92
|
-
// Live API failed — static fallback is already in the map
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return priceMap;
|
|
97
|
-
}
|
|
98
|
-
// ─── Price formatting ───────────────────────────────────────────────────────
|
|
99
|
-
function formatFalPrice(price) {
|
|
100
|
-
if (!price)
|
|
101
|
-
return "Pricing unavailable";
|
|
102
|
-
if (price.unit_price === 0)
|
|
103
|
-
return "FREE";
|
|
104
|
-
return `$${price.unit_price.toFixed(4)} / ${price.unit}`;
|
|
105
|
-
}
|
|
106
|
-
// ─── Derive capabilities from category + tags ──────────────────────────────
|
|
107
|
-
function deriveCapabilities(m) {
|
|
108
|
-
const caps = [];
|
|
109
|
-
const tags = m.metadata.tags ?? [];
|
|
110
|
-
const cat = m.metadata.category;
|
|
111
|
-
// From tags
|
|
112
|
-
if (tags.includes("realism"))
|
|
113
|
-
caps.push("photorealistic");
|
|
114
|
-
if (tags.includes("typography"))
|
|
115
|
-
caps.push("typography");
|
|
116
|
-
if (tags.includes("fast"))
|
|
117
|
-
caps.push("fast");
|
|
118
|
-
if (tags.includes("hd"))
|
|
119
|
-
caps.push("high_resolution");
|
|
120
|
-
if (tags.includes("inpaint"))
|
|
121
|
-
caps.push("inpainting");
|
|
122
|
-
if (tags.includes("controlnet"))
|
|
123
|
-
caps.push("controlnet");
|
|
124
|
-
// From category
|
|
125
|
-
if (cat === "text-to-image" || cat === "image-to-image")
|
|
126
|
-
caps.push("image_generation");
|
|
127
|
-
if (cat === "text-to-video" || cat === "image-to-video" || cat === "video-to-video")
|
|
128
|
-
caps.push("video_generation");
|
|
129
|
-
if (cat === "text-to-speech")
|
|
130
|
-
caps.push("tts");
|
|
131
|
-
if (cat === "speech-to-text")
|
|
132
|
-
caps.push("stt");
|
|
133
|
-
if (cat === "text-to-audio")
|
|
134
|
-
caps.push("audio_generation");
|
|
135
|
-
if (cat === "image-to-3d")
|
|
136
|
-
caps.push("3d_generation");
|
|
137
|
-
return caps;
|
|
138
|
-
}
|
|
139
|
-
// ─── Provider ───────────────────────────────────────────────────────────────
|
|
140
|
-
async function fetchFalModels() {
|
|
141
|
-
const models = await fetchAllFalModels();
|
|
142
|
-
const endpointIds = models.map((m) => m.endpoint_id);
|
|
143
|
-
const priceMap = await fetchFalPricing(endpointIds);
|
|
144
|
-
return models.map((m) => {
|
|
145
|
-
const price = priceMap.get(m.endpoint_id);
|
|
146
|
-
return {
|
|
147
|
-
id: m.endpoint_id,
|
|
148
|
-
name: m.metadata.display_name,
|
|
149
|
-
provider: "fal",
|
|
150
|
-
description: m.metadata.description ?? "",
|
|
151
|
-
category: mapCategory(m.metadata.category),
|
|
152
|
-
pricing: {
|
|
153
|
-
unit: price?.unit ?? "unknown",
|
|
154
|
-
unitPrice: price?.unit_price ?? -1,
|
|
155
|
-
formatted: formatFalPrice(price),
|
|
156
|
-
},
|
|
157
|
-
capabilities: deriveCapabilities(m),
|
|
158
|
-
addedDate: m.metadata.date ?? m.metadata.updated_at,
|
|
159
|
-
tags: m.metadata.tags,
|
|
160
|
-
licenseType: m.metadata.license_type,
|
|
161
|
-
};
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
export const falProvider = {
|
|
165
|
-
name: "fal",
|
|
166
|
-
fetchModels: () => cached("fal", fetchFalModels),
|
|
167
|
-
};
|
|
168
|
-
//# sourceMappingURL=fal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fal.js","sourceRoot":"","sources":["../../src/providers/fal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fireworks.d.ts","sourceRoot":"","sources":["../../src/providers/fireworks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,aAAa,CAAC;AAwF/D,eAAO,MAAM,iBAAiB,EAAE,aAG/B,CAAC"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { cached } from "../cache.js";
|
|
2
|
-
import { STATIC_FIREWORKS_PRICING } from "../data/fireworks-pricing.js";
|
|
3
|
-
// ─── Format pricing ─────────────────────────────────────────────────────────
|
|
4
|
-
function formatLLMPricing(inputPerMillion, outputPerMillion) {
|
|
5
|
-
if (inputPerMillion === 0 && outputPerMillion === 0)
|
|
6
|
-
return "FREE";
|
|
7
|
-
return `$${inputPerMillion.toFixed(2)}/$${outputPerMillion.toFixed(2)} per 1M tokens (in/out)`;
|
|
8
|
-
}
|
|
9
|
-
// ─── Provider ───────────────────────────────────────────────────────────────
|
|
10
|
-
async function fetchFireworksModels() {
|
|
11
|
-
const apiKey = process.env.FIREWORKS_API_KEY;
|
|
12
|
-
if (apiKey) {
|
|
13
|
-
try {
|
|
14
|
-
const response = await fetch("https://api.fireworks.ai/v1/models", {
|
|
15
|
-
headers: { Authorization: `Bearer ${apiKey}` },
|
|
16
|
-
});
|
|
17
|
-
if (!response.ok)
|
|
18
|
-
throw new Error(`Fireworks API error: ${response.status}`);
|
|
19
|
-
const data = await response.json();
|
|
20
|
-
const models = (data.data ?? data);
|
|
21
|
-
return models
|
|
22
|
-
.filter((m) => m.id.startsWith("accounts/"))
|
|
23
|
-
.map((m) => {
|
|
24
|
-
const inputPerM = m.pricing?.input ?? -1;
|
|
25
|
-
const outputPerM = m.pricing?.output ?? -1;
|
|
26
|
-
const staticPrice = STATIC_FIREWORKS_PRICING[m.id];
|
|
27
|
-
const effectiveInput = inputPerM >= 0 ? inputPerM : staticPrice?.input_per_million ?? -1;
|
|
28
|
-
const effectiveOutput = outputPerM >= 0 ? outputPerM : staticPrice?.output_per_million ?? -1;
|
|
29
|
-
return {
|
|
30
|
-
id: m.id,
|
|
31
|
-
name: m.id.split("/").pop()?.replace(/-/g, " ") || m.id,
|
|
32
|
-
provider: "fireworks",
|
|
33
|
-
description: "",
|
|
34
|
-
category: "llm",
|
|
35
|
-
pricing: {
|
|
36
|
-
unit: "token",
|
|
37
|
-
unitPrice: effectiveInput >= 0 ? effectiveInput / 1_000_000 : -1,
|
|
38
|
-
inputPrice: effectiveInput >= 0 ? effectiveInput / 1_000_000 : undefined,
|
|
39
|
-
outputPrice: effectiveOutput >= 0 ? effectiveOutput / 1_000_000 : undefined,
|
|
40
|
-
formatted: effectiveInput >= 0
|
|
41
|
-
? formatLLMPricing(effectiveInput, effectiveOutput)
|
|
42
|
-
: "Pricing unavailable",
|
|
43
|
-
},
|
|
44
|
-
capabilities: [],
|
|
45
|
-
addedDate: m.created ? new Date(m.created * 1000).toISOString() : undefined,
|
|
46
|
-
contextLength: m.context_length,
|
|
47
|
-
};
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
catch {
|
|
51
|
-
// Fall through to static data
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
// Fallback: return static pricing data as models
|
|
55
|
-
return Object.entries(STATIC_FIREWORKS_PRICING).map(([id, price]) => ({
|
|
56
|
-
id,
|
|
57
|
-
name: id.split("/").pop()?.replace(/-/g, " ") || id,
|
|
58
|
-
provider: "fireworks",
|
|
59
|
-
description: "",
|
|
60
|
-
category: "llm",
|
|
61
|
-
pricing: {
|
|
62
|
-
unit: "token",
|
|
63
|
-
unitPrice: price.input_per_million / 1_000_000,
|
|
64
|
-
inputPrice: price.input_per_million / 1_000_000,
|
|
65
|
-
outputPrice: price.output_per_million / 1_000_000,
|
|
66
|
-
formatted: formatLLMPricing(price.input_per_million, price.output_per_million),
|
|
67
|
-
},
|
|
68
|
-
capabilities: [],
|
|
69
|
-
}));
|
|
70
|
-
}
|
|
71
|
-
export const fireworksProvider = {
|
|
72
|
-
name: "fireworks",
|
|
73
|
-
fetchModels: () => cached("fireworks", fetchFireworksModels),
|
|
74
|
-
};
|
|
75
|
-
//# sourceMappingURL=fireworks.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fireworks.js","sourceRoot":"","sources":["../../src/providers/fireworks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../src/providers/openrouter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgB,aAAa,EAAiB,MAAM,aAAa,CAAC;AAsG9E,eAAO,MAAM,kBAAkB,EAAE,aAGhC,CAAC"}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { cached } from "../cache.js";
|
|
2
|
-
// ─── Capability derivation ──────────────────────────────────────────────────
|
|
3
|
-
function deriveCapabilities(m) {
|
|
4
|
-
const caps = [];
|
|
5
|
-
const params = m.supported_parameters ?? [];
|
|
6
|
-
const inp = m.architecture?.input_modalities ?? [];
|
|
7
|
-
const out = m.architecture?.output_modalities ?? [];
|
|
8
|
-
if (params.includes("tools") || params.includes("tool_choice"))
|
|
9
|
-
caps.push("tool_use");
|
|
10
|
-
if (params.includes("reasoning") || params.includes("include_reasoning"))
|
|
11
|
-
caps.push("reasoning");
|
|
12
|
-
if (params.includes("structured_outputs") || params.includes("response_format"))
|
|
13
|
-
caps.push("structured_output");
|
|
14
|
-
if (inp.includes("image"))
|
|
15
|
-
caps.push("vision");
|
|
16
|
-
if (inp.includes("audio"))
|
|
17
|
-
caps.push("audio_input");
|
|
18
|
-
if (out.includes("audio"))
|
|
19
|
-
caps.push("audio_output");
|
|
20
|
-
if (out.includes("image"))
|
|
21
|
-
caps.push("image_output");
|
|
22
|
-
if (inp.includes("file"))
|
|
23
|
-
caps.push("file_input");
|
|
24
|
-
return caps;
|
|
25
|
-
}
|
|
26
|
-
function deriveCategory(m) {
|
|
27
|
-
const modality = m.architecture?.modality ?? "";
|
|
28
|
-
if (modality.includes("->image"))
|
|
29
|
-
return "text-to-image";
|
|
30
|
-
if (modality.includes("->audio"))
|
|
31
|
-
return "text-to-speech";
|
|
32
|
-
return "llm";
|
|
33
|
-
}
|
|
34
|
-
// ─── Cost formatting ────────────────────────────────────────────────────────
|
|
35
|
-
function formatLLMPricing(promptCost, completionCost) {
|
|
36
|
-
const p = parseFloat(promptCost) * 1_000_000;
|
|
37
|
-
const c = parseFloat(completionCost) * 1_000_000;
|
|
38
|
-
if (p === 0 && c === 0)
|
|
39
|
-
return "FREE";
|
|
40
|
-
return `$${p.toFixed(2)}/$${c.toFixed(2)} per 1M tokens (in/out)`;
|
|
41
|
-
}
|
|
42
|
-
// ─── Provider ───────────────────────────────────────────────────────────────
|
|
43
|
-
async function fetchOpenRouterModels() {
|
|
44
|
-
const headers = { "Content-Type": "application/json" };
|
|
45
|
-
const apiKey = process.env.OPENROUTER_API_KEY;
|
|
46
|
-
if (apiKey)
|
|
47
|
-
headers["Authorization"] = `Bearer ${apiKey}`;
|
|
48
|
-
const response = await fetch("https://openrouter.ai/api/v1/models", { headers });
|
|
49
|
-
if (!response.ok) {
|
|
50
|
-
throw new Error(`OpenRouter API error: ${response.status} ${response.statusText}`);
|
|
51
|
-
}
|
|
52
|
-
const data = await response.json();
|
|
53
|
-
const models = data.data;
|
|
54
|
-
return models.map((m) => ({
|
|
55
|
-
id: m.id,
|
|
56
|
-
name: m.name,
|
|
57
|
-
provider: "openrouter",
|
|
58
|
-
description: m.description ?? "",
|
|
59
|
-
category: deriveCategory(m),
|
|
60
|
-
pricing: {
|
|
61
|
-
unit: "token",
|
|
62
|
-
unitPrice: parseFloat(m.pricing.prompt),
|
|
63
|
-
inputPrice: parseFloat(m.pricing.prompt),
|
|
64
|
-
outputPrice: parseFloat(m.pricing.completion),
|
|
65
|
-
formatted: formatLLMPricing(m.pricing.prompt, m.pricing.completion),
|
|
66
|
-
},
|
|
67
|
-
capabilities: deriveCapabilities(m),
|
|
68
|
-
addedDate: m.created ? new Date(m.created * 1000).toISOString() : undefined,
|
|
69
|
-
contextLength: m.context_length,
|
|
70
|
-
maxOutputTokens: m.top_provider?.max_completion_tokens ?? undefined,
|
|
71
|
-
tags: m.supported_parameters,
|
|
72
|
-
}));
|
|
73
|
-
}
|
|
74
|
-
export const openrouterProvider = {
|
|
75
|
-
name: "openrouter",
|
|
76
|
-
fetchModels: () => cached("openrouter", fetchOpenRouterModels),
|
|
77
|
-
};
|
|
78
|
-
//# sourceMappingURL=openrouter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../src/providers/openrouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"replicate.d.ts","sourceRoot":"","sources":["../../src/providers/replicate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgB,aAAa,EAAiB,MAAM,aAAa,CAAC;AA0J9E,eAAO,MAAM,iBAAiB,EAAE,aAG/B,CAAC"}
|