@cogitator-ai/models 0.1.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 (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +59 -0
  3. package/dist/__tests__/registry.test.d.ts +2 -0
  4. package/dist/__tests__/registry.test.d.ts.map +1 -0
  5. package/dist/__tests__/registry.test.js +132 -0
  6. package/dist/__tests__/registry.test.js.map +1 -0
  7. package/dist/cache.d.ts +21 -0
  8. package/dist/cache.d.ts.map +1 -0
  9. package/dist/cache.js +92 -0
  10. package/dist/cache.js.map +1 -0
  11. package/dist/fetcher.d.ts +4 -0
  12. package/dist/fetcher.d.ts.map +1 -0
  13. package/dist/fetcher.js +167 -0
  14. package/dist/fetcher.js.map +1 -0
  15. package/dist/index.d.ts +6 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +5 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/providers/anthropic.d.ts +3 -0
  20. package/dist/providers/anthropic.d.ts.map +1 -0
  21. package/dist/providers/anthropic.js +95 -0
  22. package/dist/providers/anthropic.js.map +1 -0
  23. package/dist/providers/google.d.ts +3 -0
  24. package/dist/providers/google.d.ts.map +1 -0
  25. package/dist/providers/google.js +98 -0
  26. package/dist/providers/google.js.map +1 -0
  27. package/dist/providers/index.d.ts +11 -0
  28. package/dist/providers/index.d.ts.map +1 -0
  29. package/dist/providers/index.js +29 -0
  30. package/dist/providers/index.js.map +1 -0
  31. package/dist/providers/openai.d.ts +3 -0
  32. package/dist/providers/openai.d.ts.map +1 -0
  33. package/dist/providers/openai.js +121 -0
  34. package/dist/providers/openai.js.map +1 -0
  35. package/dist/registry.d.ts +40 -0
  36. package/dist/registry.d.ts.map +1 -0
  37. package/dist/registry.js +258 -0
  38. package/dist/registry.js.map +1 -0
  39. package/dist/types.d.ts +183 -0
  40. package/dist/types.d.ts.map +1 -0
  41. package/dist/types.js +32 -0
  42. package/dist/types.js.map +1 -0
  43. package/package.json +43 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Cogitator Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,59 @@
1
+ # @cogitator-ai/models
2
+
3
+ Dynamic model registry with pricing information for Cogitator. Fetches up-to-date model data from LiteLLM.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pnpm add @cogitator-ai/models
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ### Get Model Information
14
+
15
+ ```typescript
16
+ import { getModel, getPrice, listModels } from '@cogitator-ai/models';
17
+
18
+ // Get model details
19
+ const model = await getModel('gpt-4o');
20
+ console.log(model.contextWindow); // 128000
21
+
22
+ // Get pricing
23
+ const price = await getPrice('claude-sonnet-4-20250514');
24
+ console.log(price.inputPerMillion); // $3.00
25
+ console.log(price.outputPerMillion); // $15.00
26
+
27
+ // List all models
28
+ const models = await listModels({
29
+ provider: 'openai',
30
+ hasToolCalling: true,
31
+ });
32
+ ```
33
+
34
+ ### Built-in Providers
35
+
36
+ - **OpenAI**: GPT-4o, GPT-4o Mini, o1, o3-mini
37
+ - **Anthropic**: Claude Sonnet 4, Claude 3.5 Sonnet/Haiku, Claude 3 Opus
38
+ - **Google**: Gemini 2.5 Pro/Flash, Gemini 2.0 Flash, Gemini 1.5 Pro/Flash
39
+
40
+ ### Caching
41
+
42
+ Model data is cached for 24 hours with automatic refresh:
43
+
44
+ ```typescript
45
+ import { ModelRegistry } from '@cogitator-ai/models';
46
+
47
+ const registry = new ModelRegistry({
48
+ cacheTtl: 3600 * 1000, // 1 hour
49
+ cacheDir: './cache',
50
+ });
51
+ ```
52
+
53
+ ## Documentation
54
+
55
+ See the [Cogitator documentation](https://github.com/eL1fe/cogitator) for full API reference.
56
+
57
+ ## License
58
+
59
+ MIT
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=registry.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/registry.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,132 @@
1
+ import { describe, it, expect, beforeEach, vi } from 'vitest';
2
+ import { ModelRegistry, getModelRegistry, getPrice, getModel, listModels } from '../registry';
3
+ import { BUILTIN_MODELS } from '../providers/index';
4
+ describe('ModelRegistry', () => {
5
+ let registry;
6
+ beforeEach(() => {
7
+ registry = new ModelRegistry({ fallbackToBuiltin: true });
8
+ });
9
+ describe('getModel', () => {
10
+ it('should return model by exact id', () => {
11
+ const model = registry.getModel('gpt-4o');
12
+ expect(model).toBeDefined();
13
+ expect(model?.id).toBe('gpt-4o');
14
+ expect(model?.provider).toBe('openai');
15
+ });
16
+ it('should return model by alias', () => {
17
+ const model = registry.getModel('claude-3-5-sonnet');
18
+ expect(model).toBeDefined();
19
+ expect(model?.provider).toBe('anthropic');
20
+ });
21
+ it('should return null for unknown model', () => {
22
+ const model = registry.getModel('unknown-model-xyz');
23
+ expect(model).toBeNull();
24
+ });
25
+ it('should handle provider prefix in model id', () => {
26
+ const model = registry.getModel('openai/gpt-4o');
27
+ expect(model).toBeDefined();
28
+ expect(model?.id).toBe('gpt-4o');
29
+ });
30
+ it('should be case insensitive', () => {
31
+ const model = registry.getModel('GPT-4O');
32
+ expect(model).toBeDefined();
33
+ expect(model?.id).toBe('gpt-4o');
34
+ });
35
+ });
36
+ describe('getPrice', () => {
37
+ it('should return pricing for known model', () => {
38
+ const price = registry.getPrice('gpt-4o');
39
+ expect(price).toBeDefined();
40
+ expect(price?.input).toBeGreaterThan(0);
41
+ expect(price?.output).toBeGreaterThan(0);
42
+ });
43
+ it('should return null for unknown model', () => {
44
+ const price = registry.getPrice('unknown-model');
45
+ expect(price).toBeNull();
46
+ });
47
+ it('should return correct pricing for gpt-4o-mini', () => {
48
+ const price = registry.getPrice('gpt-4o-mini');
49
+ expect(price).toBeDefined();
50
+ expect(price?.input).toBe(0.15);
51
+ expect(price?.output).toBe(0.6);
52
+ });
53
+ it('should return correct pricing for claude-3-5-sonnet', () => {
54
+ const price = registry.getPrice('claude-3-5-sonnet-20241022');
55
+ expect(price).toBeDefined();
56
+ expect(price?.input).toBe(3);
57
+ expect(price?.output).toBe(15);
58
+ });
59
+ });
60
+ describe('listModels', () => {
61
+ it('should return all builtin models', () => {
62
+ const models = registry.listModels();
63
+ expect(models.length).toBeGreaterThanOrEqual(BUILTIN_MODELS.length);
64
+ });
65
+ it('should filter by provider', () => {
66
+ const openaiModels = registry.listModels({ provider: 'openai' });
67
+ expect(openaiModels.every((m) => m.provider === 'openai')).toBe(true);
68
+ expect(openaiModels.length).toBeGreaterThan(0);
69
+ });
70
+ it('should filter by tool support', () => {
71
+ const toolModels = registry.listModels({ supportsTools: true });
72
+ expect(toolModels.every((m) => m.capabilities?.supportsTools)).toBe(true);
73
+ });
74
+ it('should filter by vision support', () => {
75
+ const visionModels = registry.listModels({ supportsVision: true });
76
+ expect(visionModels.every((m) => m.capabilities?.supportsVision)).toBe(true);
77
+ });
78
+ it('should filter by context window', () => {
79
+ const largeContextModels = registry.listModels({ minContextWindow: 100000 });
80
+ expect(largeContextModels.every((m) => m.contextWindow >= 100000)).toBe(true);
81
+ });
82
+ it('should filter by max price', () => {
83
+ const cheapModels = registry.listModels({ maxPricePerMillion: 1 });
84
+ expect(cheapModels.every((m) => (m.pricing.input + m.pricing.output) / 2 <= 1)).toBe(true);
85
+ });
86
+ });
87
+ describe('listProviders', () => {
88
+ it('should return all providers', () => {
89
+ const providers = registry.listProviders();
90
+ expect(providers.length).toBeGreaterThan(0);
91
+ const providerIds = providers.map((p) => p.id);
92
+ expect(providerIds).toContain('openai');
93
+ expect(providerIds).toContain('anthropic');
94
+ expect(providerIds).toContain('google');
95
+ });
96
+ it('should include model count per provider', () => {
97
+ const providers = registry.listProviders();
98
+ const openai = providers.find((p) => p.id === 'openai');
99
+ expect(openai?.models.length).toBeGreaterThan(0);
100
+ });
101
+ });
102
+ });
103
+ describe('Global helpers', () => {
104
+ it('getModelRegistry should return singleton', () => {
105
+ const reg1 = getModelRegistry();
106
+ const reg2 = getModelRegistry();
107
+ expect(reg1).toBe(reg2);
108
+ });
109
+ it('getPrice should work without initialization', () => {
110
+ const price = getPrice('gpt-4o');
111
+ expect(price).toBeDefined();
112
+ });
113
+ it('getModel should work without initialization', () => {
114
+ const model = getModel('gpt-4o');
115
+ expect(model).toBeDefined();
116
+ });
117
+ it('listModels should work without initialization', () => {
118
+ const models = listModels();
119
+ expect(models.length).toBeGreaterThan(0);
120
+ });
121
+ });
122
+ describe('ModelRegistry initialization', () => {
123
+ it('should fallback to builtin when network fails', async () => {
124
+ const mockFetch = vi.fn().mockRejectedValue(new Error('Network error'));
125
+ global.fetch = mockFetch;
126
+ const reg = new ModelRegistry({ fallbackToBuiltin: true });
127
+ await reg.initialize();
128
+ expect(reg.isInitialized()).toBe(true);
129
+ expect(reg.getModelCount()).toBeGreaterThan(0);
130
+ });
131
+ });
132
+ //# sourceMappingURL=registry.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../src/__tests__/registry.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { ModelInfo, CacheOptions } from './types';
2
+ interface CacheEntry {
3
+ models: ModelInfo[];
4
+ timestamp: number;
5
+ version: string;
6
+ }
7
+ export declare class ModelCache {
8
+ private memoryCache;
9
+ private options;
10
+ constructor(options?: Partial<CacheOptions>);
11
+ get(): Promise<ModelInfo[] | null>;
12
+ getStale(): Promise<ModelInfo[] | null>;
13
+ set(models: ModelInfo[]): Promise<void>;
14
+ clear(): Promise<void>;
15
+ isStale(entry: CacheEntry): boolean;
16
+ private getEntry;
17
+ private readFromFile;
18
+ private writeToFile;
19
+ }
20
+ export {};
21
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAKvD,UAAU,UAAU;IAClB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,qBAAa,UAAU;IACrB,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,OAAO,CAAyB;gBAE5B,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM;IAQzC,GAAG,IAAI,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC;IAYlC,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC;IAKvC,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAW5B,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;YAKrB,QAAQ;YAgBR,YAAY;YAiBZ,WAAW;CAY1B"}
package/dist/cache.js ADDED
@@ -0,0 +1,92 @@
1
+ import { writeFile, readFile, mkdir } from 'fs/promises';
2
+ import { dirname, join } from 'path';
3
+ import { homedir } from 'os';
4
+ const CACHE_VERSION = '1.0.0';
5
+ const DEFAULT_CACHE_PATH = join(homedir(), '.cogitator', 'models-cache.json');
6
+ export class ModelCache {
7
+ memoryCache = null;
8
+ options;
9
+ constructor(options = {}) {
10
+ this.options = {
11
+ ttl: options.ttl ?? 24 * 60 * 60 * 1000,
12
+ storage: options.storage ?? 'memory',
13
+ filePath: options.filePath ?? DEFAULT_CACHE_PATH,
14
+ };
15
+ }
16
+ async get() {
17
+ const entry = await this.getEntry();
18
+ if (!entry)
19
+ return null;
20
+ if (this.isStale(entry)) {
21
+ return null;
22
+ }
23
+ return entry.models;
24
+ }
25
+ async getStale() {
26
+ const entry = await this.getEntry();
27
+ return entry?.models ?? null;
28
+ }
29
+ async set(models) {
30
+ const entry = {
31
+ models,
32
+ timestamp: Date.now(),
33
+ version: CACHE_VERSION,
34
+ };
35
+ this.memoryCache = entry;
36
+ if (this.options.storage === 'file') {
37
+ await this.writeToFile(entry);
38
+ }
39
+ }
40
+ async clear() {
41
+ this.memoryCache = null;
42
+ if (this.options.storage === 'file') {
43
+ try {
44
+ await writeFile(this.options.filePath, '', 'utf-8');
45
+ }
46
+ catch {
47
+ }
48
+ }
49
+ }
50
+ isStale(entry) {
51
+ const age = Date.now() - entry.timestamp;
52
+ return age > this.options.ttl || entry.version !== CACHE_VERSION;
53
+ }
54
+ async getEntry() {
55
+ if (this.memoryCache) {
56
+ return this.memoryCache;
57
+ }
58
+ if (this.options.storage === 'file') {
59
+ const fileEntry = await this.readFromFile();
60
+ if (fileEntry) {
61
+ this.memoryCache = fileEntry;
62
+ return fileEntry;
63
+ }
64
+ }
65
+ return null;
66
+ }
67
+ async readFromFile() {
68
+ try {
69
+ const content = await readFile(this.options.filePath, 'utf-8');
70
+ if (!content.trim())
71
+ return null;
72
+ const entry = JSON.parse(content);
73
+ if (!entry.models || !entry.timestamp || entry.version !== CACHE_VERSION) {
74
+ return null;
75
+ }
76
+ return entry;
77
+ }
78
+ catch {
79
+ return null;
80
+ }
81
+ }
82
+ async writeToFile(entry) {
83
+ try {
84
+ await mkdir(dirname(this.options.filePath), { recursive: true });
85
+ await writeFile(this.options.filePath, JSON.stringify(entry, null, 2), 'utf-8');
86
+ }
87
+ catch (error) {
88
+ console.warn('Failed to write model cache to file:', error);
89
+ }
90
+ }
91
+ }
92
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { LiteLLMModelData, ModelInfo } from './types';
2
+ export declare function fetchLiteLLMData(): Promise<LiteLLMModelData>;
3
+ export declare function transformLiteLLMData(data: LiteLLMModelData): ModelInfo[];
4
+ //# sourceMappingURL=fetcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../src/fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAqB,SAAS,EAAgB,MAAM,SAAS,CAAC;AAO5F,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAsBlE;AAqHD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS,EAAE,CA8CxE"}
@@ -0,0 +1,167 @@
1
+ const LITELLM_URL = 'https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json';
2
+ const FETCH_TIMEOUT = 10_000;
3
+ export async function fetchLiteLLMData() {
4
+ const controller = new AbortController();
5
+ const timeoutId = setTimeout(() => controller.abort(), FETCH_TIMEOUT);
6
+ try {
7
+ const response = await fetch(LITELLM_URL, {
8
+ signal: controller.signal,
9
+ headers: {
10
+ 'Accept': 'application/json',
11
+ 'User-Agent': 'Cogitator/1.0',
12
+ },
13
+ });
14
+ if (!response.ok) {
15
+ throw new Error(`Failed to fetch LiteLLM data: ${response.status} ${response.statusText}`);
16
+ }
17
+ const data = await response.json();
18
+ return data;
19
+ }
20
+ finally {
21
+ clearTimeout(timeoutId);
22
+ }
23
+ }
24
+ const PROVIDER_MAPPINGS = {
25
+ 'openai': 'openai',
26
+ 'azure': 'azure',
27
+ 'azure_ai': 'azure',
28
+ 'anthropic': 'anthropic',
29
+ 'bedrock': 'aws',
30
+ 'vertex_ai': 'google',
31
+ 'vertex_ai-': 'google',
32
+ 'gemini': 'google',
33
+ 'palm': 'google',
34
+ 'cohere': 'cohere',
35
+ 'cohere_chat': 'cohere',
36
+ 'replicate': 'replicate',
37
+ 'huggingface': 'huggingface',
38
+ 'together_ai': 'together',
39
+ 'together': 'together',
40
+ 'ollama': 'ollama',
41
+ 'ollama_chat': 'ollama',
42
+ 'deepinfra': 'deepinfra',
43
+ 'perplexity': 'perplexity',
44
+ 'groq': 'groq',
45
+ 'mistral': 'mistral',
46
+ 'text-completion-codestral': 'mistral',
47
+ 'codestral': 'mistral',
48
+ 'fireworks_ai': 'fireworks',
49
+ 'anyscale': 'anyscale',
50
+ 'cloudflare': 'cloudflare',
51
+ 'databricks': 'databricks',
52
+ 'ai21': 'ai21',
53
+ 'nlp_cloud': 'nlp_cloud',
54
+ 'aleph_alpha': 'aleph_alpha',
55
+ 'voyage': 'voyage',
56
+ 'sagemaker': 'aws',
57
+ 'xinference': 'xinference',
58
+ 'friendliai': 'friendliai',
59
+ 'github': 'github',
60
+ 'xai': 'xai',
61
+ };
62
+ function normalizeProvider(litellmProvider, modelId) {
63
+ if (litellmProvider) {
64
+ const normalized = PROVIDER_MAPPINGS[litellmProvider];
65
+ if (normalized)
66
+ return normalized;
67
+ for (const [prefix, provider] of Object.entries(PROVIDER_MAPPINGS)) {
68
+ if (litellmProvider.startsWith(prefix)) {
69
+ return provider;
70
+ }
71
+ }
72
+ }
73
+ const prefixMatch = /^([a-z_-]+)\//.exec(modelId);
74
+ if (prefixMatch) {
75
+ const prefix = prefixMatch[1];
76
+ return PROVIDER_MAPPINGS[prefix] ?? prefix;
77
+ }
78
+ if (modelId.startsWith('gpt-') || modelId.startsWith('o1') || modelId.startsWith('o3') || modelId.includes('davinci') || modelId.includes('curie')) {
79
+ return 'openai';
80
+ }
81
+ if (modelId.startsWith('claude')) {
82
+ return 'anthropic';
83
+ }
84
+ if (modelId.startsWith('gemini') || modelId.startsWith('palm')) {
85
+ return 'google';
86
+ }
87
+ if (modelId.startsWith('llama') || modelId.startsWith('mistral') || modelId.startsWith('mixtral')) {
88
+ return 'meta';
89
+ }
90
+ return 'unknown';
91
+ }
92
+ function extractModelName(modelId) {
93
+ if (modelId.includes('/')) {
94
+ return modelId.split('/').pop() ?? modelId;
95
+ }
96
+ return modelId;
97
+ }
98
+ function createDisplayName(modelId) {
99
+ const name = extractModelName(modelId);
100
+ return name
101
+ .replace(/-/g, ' ')
102
+ .replace(/_/g, ' ')
103
+ .replace(/\b\w/g, (c) => c.toUpperCase())
104
+ .replace(/Gpt/g, 'GPT')
105
+ .replace(/Ai/g, 'AI')
106
+ .replace(/(\d+)k/gi, '$1K')
107
+ .trim();
108
+ }
109
+ function calculatePricing(entry) {
110
+ let inputCost = 0;
111
+ let outputCost = 0;
112
+ if (entry.input_cost_per_token !== undefined) {
113
+ inputCost = entry.input_cost_per_token * 1_000_000;
114
+ }
115
+ else if (entry.input_cost_per_character !== undefined) {
116
+ inputCost = entry.input_cost_per_character * 4 * 1_000_000;
117
+ }
118
+ if (entry.output_cost_per_token !== undefined) {
119
+ outputCost = entry.output_cost_per_token * 1_000_000;
120
+ }
121
+ else if (entry.output_cost_per_character !== undefined) {
122
+ outputCost = entry.output_cost_per_character * 4 * 1_000_000;
123
+ }
124
+ return {
125
+ input: Math.round(inputCost * 1000) / 1000,
126
+ output: Math.round(outputCost * 1000) / 1000,
127
+ };
128
+ }
129
+ export function transformLiteLLMData(data) {
130
+ const models = [];
131
+ const seenIds = new Set();
132
+ for (const [modelId, entry] of Object.entries(data)) {
133
+ if (modelId.startsWith('sample_spec') || modelId === 'sample_spec') {
134
+ continue;
135
+ }
136
+ const normalizedId = extractModelName(modelId).toLowerCase();
137
+ if (seenIds.has(normalizedId)) {
138
+ continue;
139
+ }
140
+ seenIds.add(normalizedId);
141
+ const provider = normalizeProvider(entry.litellm_provider, modelId);
142
+ const pricing = calculatePricing(entry);
143
+ const contextWindow = entry.max_input_tokens ?? entry.max_tokens ?? 4096;
144
+ const maxOutputTokens = entry.max_output_tokens ?? entry.max_tokens;
145
+ const isDeprecated = entry.deprecation_date
146
+ ? new Date(entry.deprecation_date) < new Date()
147
+ : false;
148
+ const model = {
149
+ id: extractModelName(modelId),
150
+ provider,
151
+ displayName: createDisplayName(modelId),
152
+ pricing,
153
+ contextWindow,
154
+ maxOutputTokens,
155
+ capabilities: {
156
+ supportsTools: entry.supports_function_calling ?? entry.supports_tool_choice,
157
+ supportsVision: entry.supports_vision,
158
+ supportsFunctions: entry.supports_function_calling,
159
+ supportsJson: entry.supports_response_schema,
160
+ },
161
+ deprecated: isDeprecated || undefined,
162
+ };
163
+ models.push(model);
164
+ }
165
+ return models.sort((a, b) => a.id.localeCompare(b.id));
166
+ }
167
+ //# sourceMappingURL=fetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../src/fetcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type { ModelInfo, ModelPricing, ModelCapabilities, ModelFilter, ProviderInfo, CacheOptions, RegistryOptions, } from './types';
2
+ export { ModelRegistry, getModelRegistry, initializeModels, getPrice, getModel, listModels, } from './registry';
3
+ export { ModelCache } from './cache';
4
+ export { fetchLiteLLMData, transformLiteLLMData, } from './fetcher';
5
+ export { BUILTIN_MODELS, BUILTIN_PROVIDERS, OPENAI_MODELS, ANTHROPIC_MODELS, GOOGLE_MODELS, } from './providers/index';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EACL,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,aAAa,GACd,MAAM,mBAAmB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export { ModelRegistry, getModelRegistry, initializeModels, getPrice, getModel, listModels, } from './registry';
2
+ export { ModelCache } from './cache';
3
+ export { fetchLiteLLMData, transformLiteLLMData, } from './fetcher';
4
+ export { BUILTIN_MODELS, BUILTIN_PROVIDERS, OPENAI_MODELS, ANTHROPIC_MODELS, GOOGLE_MODELS, } from './providers/index';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EACL,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,aAAa,GACd,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ModelInfo } from '../types';
2
+ export declare const ANTHROPIC_MODELS: ModelInfo[];
3
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,eAAO,MAAM,gBAAgB,EAAE,SAAS,EA6FvC,CAAC"}