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.
Files changed (46) hide show
  1. package/README.md +17 -2
  2. package/build/server.d.ts +106 -0
  3. package/build/server.d.ts.map +1 -1
  4. package/build/server.js +54 -0
  5. package/build/server.js.map +1 -1
  6. package/build/tools/select.d.ts +113 -0
  7. package/build/tools/select.d.ts.map +1 -0
  8. package/build/tools/select.js +371 -0
  9. package/build/tools/select.js.map +1 -0
  10. package/package.json +3 -2
  11. package/build/data/fal-pricing.d.ts +0 -15
  12. package/build/data/fal-pricing.d.ts.map +0 -1
  13. package/build/data/fal-pricing.js +0 -145
  14. package/build/data/fal-pricing.js.map +0 -1
  15. package/build/data/fireworks-pricing.d.ts +0 -14
  16. package/build/data/fireworks-pricing.d.ts.map +0 -1
  17. package/build/data/fireworks-pricing.js +0 -57
  18. package/build/data/fireworks-pricing.js.map +0 -1
  19. package/build/data/replicate-pricing.d.ts +0 -16
  20. package/build/data/replicate-pricing.d.ts.map +0 -1
  21. package/build/data/replicate-pricing.js +0 -71
  22. package/build/data/replicate-pricing.js.map +0 -1
  23. package/build/data/together-pricing.d.ts +0 -14
  24. package/build/data/together-pricing.d.ts.map +0 -1
  25. package/build/data/together-pricing.js +0 -73
  26. package/build/data/together-pricing.js.map +0 -1
  27. package/build/providers/fal.d.ts +0 -3
  28. package/build/providers/fal.d.ts.map +0 -1
  29. package/build/providers/fal.js +0 -168
  30. package/build/providers/fal.js.map +0 -1
  31. package/build/providers/fireworks.d.ts +0 -3
  32. package/build/providers/fireworks.d.ts.map +0 -1
  33. package/build/providers/fireworks.js +0 -75
  34. package/build/providers/fireworks.js.map +0 -1
  35. package/build/providers/openrouter.d.ts +0 -3
  36. package/build/providers/openrouter.d.ts.map +0 -1
  37. package/build/providers/openrouter.js +0 -78
  38. package/build/providers/openrouter.js.map +0 -1
  39. package/build/providers/replicate.d.ts +0 -3
  40. package/build/providers/replicate.d.ts.map +0 -1
  41. package/build/providers/replicate.js +0 -129
  42. package/build/providers/replicate.js.map +0 -1
  43. package/build/providers/together.d.ts +0 -3
  44. package/build/providers/together.d.ts.map +0 -1
  45. package/build/providers/together.js +0 -93
  46. 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"}
@@ -1,3 +0,0 @@
1
- import type { ModelProvider } from "../types.js";
2
- export declare const falProvider: ModelProvider;
3
- //# sourceMappingURL=fal.d.ts.map
@@ -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"}
@@ -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,3 +0,0 @@
1
- import type { ModelProvider } from "../types.js";
2
- export declare const fireworksProvider: ModelProvider;
3
- //# sourceMappingURL=fireworks.d.ts.map
@@ -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,3 +0,0 @@
1
- import type { ModelProvider } from "../types.js";
2
- export declare const openrouterProvider: ModelProvider;
3
- //# sourceMappingURL=openrouter.d.ts.map
@@ -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,3 +0,0 @@
1
- import type { ModelProvider } from "../types.js";
2
- export declare const replicateProvider: ModelProvider;
3
- //# sourceMappingURL=replicate.d.ts.map
@@ -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"}