@aeye/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 (74) hide show
  1. package/ReplicateScrape.md +54 -0
  2. package/dist/scripts/codegen.d.ts +21 -0
  3. package/dist/scripts/codegen.d.ts.map +1 -0
  4. package/dist/scripts/codegen.js +102 -0
  5. package/dist/scripts/codegen.js.map +1 -0
  6. package/dist/scripts/scrape.d.ts +19 -0
  7. package/dist/scripts/scrape.d.ts.map +1 -0
  8. package/dist/scripts/scrape.js +146 -0
  9. package/dist/scripts/scrape.js.map +1 -0
  10. package/dist/scripts/scrapers/__tests__/aws.test.d.ts +8 -0
  11. package/dist/scripts/scrapers/__tests__/aws.test.d.ts.map +1 -0
  12. package/dist/scripts/scrapers/__tests__/aws.test.js +73 -0
  13. package/dist/scripts/scrapers/__tests__/aws.test.js.map +1 -0
  14. package/dist/scripts/scrapers/aws.d.ts +12 -0
  15. package/dist/scripts/scrapers/aws.d.ts.map +1 -0
  16. package/dist/scripts/scrapers/aws.js +314 -0
  17. package/dist/scripts/scrapers/aws.js.map +1 -0
  18. package/dist/scripts/scrapers/openai.d.ts +12 -0
  19. package/dist/scripts/scrapers/openai.d.ts.map +1 -0
  20. package/dist/scripts/scrapers/openai.js +490 -0
  21. package/dist/scripts/scrapers/openai.js.map +1 -0
  22. package/dist/scripts/scrapers/openrouter.d.ts +13 -0
  23. package/dist/scripts/scrapers/openrouter.d.ts.map +1 -0
  24. package/dist/scripts/scrapers/openrouter.js +156 -0
  25. package/dist/scripts/scrapers/openrouter.js.map +1 -0
  26. package/dist/scripts/scrapers/replicate.d.ts +12 -0
  27. package/dist/scripts/scrapers/replicate.d.ts.map +1 -0
  28. package/dist/scripts/scrapers/replicate.js +305 -0
  29. package/dist/scripts/scrapers/replicate.js.map +1 -0
  30. package/dist/src/index.d.ts +11 -0
  31. package/dist/src/index.d.ts.map +1 -0
  32. package/dist/src/index.js +11 -0
  33. package/dist/src/index.js.map +1 -0
  34. package/dist/src/models/aws.d.ts +11 -0
  35. package/dist/src/models/aws.d.ts.map +1 -0
  36. package/dist/src/models/aws.js +2632 -0
  37. package/dist/src/models/aws.js.map +1 -0
  38. package/dist/src/models/index.d.ts +15 -0
  39. package/dist/src/models/index.d.ts.map +1 -0
  40. package/dist/src/models/index.js +18 -0
  41. package/dist/src/models/index.js.map +1 -0
  42. package/dist/src/models/openai.d.ts +11 -0
  43. package/dist/src/models/openai.d.ts.map +1 -0
  44. package/dist/src/models/openai.js +2207 -0
  45. package/dist/src/models/openai.js.map +1 -0
  46. package/dist/src/models/openrouter.d.ts +11 -0
  47. package/dist/src/models/openrouter.d.ts.map +1 -0
  48. package/dist/src/models/openrouter.js +9786 -0
  49. package/dist/src/models/openrouter.js.map +1 -0
  50. package/dist/src/models/replicate.d.ts +11 -0
  51. package/dist/src/models/replicate.d.ts.map +1 -0
  52. package/dist/src/models/replicate.js +4106 -0
  53. package/dist/src/models/replicate.js.map +1 -0
  54. package/dist/src/transformers/index.d.ts +23 -0
  55. package/dist/src/transformers/index.d.ts.map +1 -0
  56. package/dist/src/transformers/index.js +24 -0
  57. package/dist/src/transformers/index.js.map +1 -0
  58. package/package.json +50 -0
  59. package/scripts/codegen.ts +117 -0
  60. package/scripts/scrape.ts +182 -0
  61. package/scripts/scrapers/__tests__/aws.test.ts +86 -0
  62. package/scripts/scrapers/aws.ts +370 -0
  63. package/scripts/scrapers/openai.ts +619 -0
  64. package/scripts/scrapers/openrouter.ts +214 -0
  65. package/scripts/scrapers/replicate.ts +448 -0
  66. package/scripts/tsconfig.json +24 -0
  67. package/src/index.ts +11 -0
  68. package/src/models/aws.ts +2634 -0
  69. package/src/models/index.ts +21 -0
  70. package/src/models/openai.ts +2209 -0
  71. package/src/models/openrouter.ts +9788 -0
  72. package/src/models/replicate.ts +4108 -0
  73. package/src/transformers/index.ts +26 -0
  74. package/tsconfig.json +14 -0
@@ -0,0 +1,156 @@
1
+ /**
2
+ * OpenRouter Model Scraper
3
+ *
4
+ * Fetches model information from OpenRouter API endpoints and scrapes performance metrics
5
+ */
6
+ import * as fs from 'fs/promises';
7
+ import * as path from 'path';
8
+ import * as puppeteer from 'puppeteer';
9
+ import * as url from 'url';
10
+ import { fetchModels, fetchZDRModels, convertOpenRouterModel } from '@aeye/openrouter';
11
+ import { writeModelTS } from '../codegen';
12
+ const __filename = url.fileURLToPath(import.meta.url);
13
+ const __dirname = path.dirname(__filename);
14
+ /**
15
+ * Scrape performance metrics from OpenRouter model page
16
+ */
17
+ async function scrapeModelMetrics(modelId, browser) {
18
+ const page = await browser.newPage();
19
+ try {
20
+ // OpenRouter model URLs use the canonical slug format
21
+ const url = `https://openrouter.ai/${modelId}`;
22
+ const response = await page.goto(url, {
23
+ waitUntil: ['domcontentloaded', 'networkidle2'],
24
+ timeout: 30000,
25
+ });
26
+ if (!response || response.status() === 404) {
27
+ return { modelId, metrics: null };
28
+ }
29
+ const bodyText = await page.$eval('body', el => el.textContent || '');
30
+ const metrics = {};
31
+ // Latency0.62sThroughput47.46tpsUptime100.0%Uptime 100.0
32
+ // Look for latency (in ms)
33
+ const latencyMatch = bodyText.match(/latency[:\s]*([0-9.]+)\s*s/i);
34
+ if (latencyMatch) {
35
+ metrics.latency = parseFloat(latencyMatch[1]);
36
+ }
37
+ // Look for throughput (tokens/second)
38
+ const throughputMatch = bodyText.match(/throughput[:\s]*([0-9.]+)\s*tps/i);
39
+ if (throughputMatch) {
40
+ metrics.throughput = parseFloat(throughputMatch[1]);
41
+ }
42
+ // Look for uptime (percentage)
43
+ const uptimeMatch = bodyText.match(/uptime[:\s]*([0-9.]+)%/i);
44
+ if (uptimeMatch) {
45
+ metrics.uptime = parseFloat(uptimeMatch[1]);
46
+ }
47
+ if (!latencyMatch || !throughputMatch || !uptimeMatch) {
48
+ console.log(`⚠ No metrics found on page ${modelId}`);
49
+ await fs.writeFile(`./data/pages/openrouter-${modelId.replace(/[^a-z]/gi, '')}.html`, bodyText);
50
+ }
51
+ return { modelId, metrics };
52
+ }
53
+ catch (error) {
54
+ console.log(` ✗ Error scraping metrics for ${modelId}:`, error instanceof Error ? error.message : error);
55
+ return { modelId, metrics: null };
56
+ }
57
+ finally {
58
+ await page.close();
59
+ }
60
+ }
61
+ /**
62
+ * Scrape metrics for multiple models in parallel with concurrency control
63
+ */
64
+ async function scrapeMetricsParallel(modelIds, concurrency = 5) {
65
+ console.log(`\nScraping performance metrics from OpenRouter model pages (concurrency: ${concurrency})...`);
66
+ const browser = await puppeteer.launch({ headless: true });
67
+ const results = new Map();
68
+ try {
69
+ // Process in batches with concurrency control
70
+ for (let i = 0; i < modelIds.length; i += concurrency) {
71
+ const batch = modelIds.slice(i, i + concurrency);
72
+ console.log(` Processing batch ${Math.floor(i / concurrency) + 1}/${Math.ceil(modelIds.length / concurrency)} (${batch.length} models)...`);
73
+ const batchResults = await Promise.all(batch.map((modelId) => scrapeModelMetrics(modelId, browser)));
74
+ // Store results
75
+ for (const { modelId, metrics } of batchResults) {
76
+ if (metrics) {
77
+ results.set(modelId, metrics);
78
+ }
79
+ }
80
+ console.log(` ✓ Scraped ${batchResults.filter((r) => r.metrics).length}/${batch.length} models`);
81
+ }
82
+ console.log(`✓ Scraped metrics for ${results.size}/${modelIds.length} models\n`);
83
+ }
84
+ finally {
85
+ await browser.close();
86
+ }
87
+ return results;
88
+ }
89
+ /**
90
+ * Main scraper function
91
+ */
92
+ export async function scrapeOpenRouter(outputDir, options = {}) {
93
+ const { metrics: scrapeMetrics = false, concurrency = 5 } = options;
94
+ console.log('\n=== OpenRouter Scraper ===\n');
95
+ // Fetch models using existing functions
96
+ const [models, zdrModelIds] = await Promise.all([
97
+ fetchModels(process.env.OPENROUTER_API_KEY),
98
+ fetchZDRModels(process.env.OPENROUTER_API_KEY),
99
+ ]);
100
+ console.log(`✓ Fetched ${models.length} OpenRouter models`);
101
+ console.log(`✓ Fetched ${zdrModelIds.size} ZDR model IDs`);
102
+ // Save raw data
103
+ await fs.mkdir(outputDir, { recursive: true });
104
+ await fs.writeFile(path.join(outputDir, 'openrouter-models.json'), JSON.stringify({ data: models }, (key, value) => {
105
+ if (value instanceof Set) {
106
+ return Array.from(value);
107
+ }
108
+ return value;
109
+ }, 2));
110
+ console.log(`✓ Saved raw OpenRouter models to openrouter-models.json`);
111
+ if (zdrModelIds.size > 0) {
112
+ await fs.writeFile(path.join(outputDir, 'openrouter-zdr.json'), JSON.stringify({ data: Array.from(zdrModelIds) }, (key, value) => {
113
+ if (value instanceof Set) {
114
+ return Array.from(value);
115
+ }
116
+ return value;
117
+ }, 2));
118
+ console.log(`✓ Saved ZDR model IDs to openrouter-zdr.json`);
119
+ }
120
+ // Scrape performance metrics if requested
121
+ let metricsMap = new Map();
122
+ if (scrapeMetrics) {
123
+ const modelIds = models.map((m) => m.id);
124
+ metricsMap = await scrapeMetricsParallel(modelIds, concurrency);
125
+ }
126
+ // Convert to ModelInfo format
127
+ const modelInfos = models.map((model) => convertOpenRouterModel(model, zdrModelIds, metricsMap.get(model.id)));
128
+ // Save JSON for reference
129
+ await fs.writeFile(path.join(outputDir, 'openrouter-modelinfo.json'), JSON.stringify(modelInfos, (key, value) => {
130
+ if (value instanceof Set) {
131
+ return Array.from(value);
132
+ }
133
+ return value;
134
+ }, 2));
135
+ console.log(`✓ Saved ${modelInfos.length} models to JSON`);
136
+ // Generate TypeScript file
137
+ const srcDir = path.join(__dirname, '../../src/models');
138
+ await writeModelTS(modelInfos, 'openrouterModels', path.join(srcDir, 'openrouter.ts'));
139
+ console.log(`✓ Generated TypeScript file: src/models/openrouter.ts`);
140
+ console.log('\n✓ OpenRouter scraping complete\n');
141
+ }
142
+ // CLI execution
143
+ if (process.argv[1].endsWith('openrouter.ts')) {
144
+ const args = process.argv.slice(2);
145
+ const outputDir = args.find((arg) => !arg.startsWith('--')) || path.join(__dirname, '../../data');
146
+ const scrapeMetrics = args.includes('--metrics');
147
+ const concurrencyArg = args.find((arg) => arg.startsWith('--concurrency='));
148
+ const concurrency = concurrencyArg
149
+ ? parseInt(concurrencyArg.split('=')[1], 10)
150
+ : 5;
151
+ scrapeOpenRouter(outputDir, { metrics: scrapeMetrics, concurrency }).catch((error) => {
152
+ console.error('✗ OpenRouter scraping failed:', error);
153
+ process.exit(1);
154
+ });
155
+ }
156
+ //# sourceMappingURL=openrouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../../scripts/scrapers/openrouter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Replicate Model Scraper
3
+ *
4
+ * Fetches model information from Replicate API using the Replicate npm module
5
+ */
6
+ /**
7
+ * Main scraper function
8
+ */
9
+ export declare function scrapeReplicate(outputDir: string, cacheDir?: string, options?: {
10
+ concurrency?: number;
11
+ }): Promise<void>;
12
+ //# sourceMappingURL=replicate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replicate.d.ts","sourceRoot":"","sources":["../../../scripts/scrapers/replicate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA4TH;;GAEG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GACrC,OAAO,CAAC,IAAI,CAAC,CAuGf"}
@@ -0,0 +1,305 @@
1
+ /**
2
+ * Replicate Model Scraper
3
+ *
4
+ * Fetches model information from Replicate API using the Replicate npm module
5
+ */
6
+ import * as fs from 'fs/promises';
7
+ import * as path from 'path';
8
+ import * as url from 'url';
9
+ import Replicate from 'replicate';
10
+ import { detectTier } from '@aeye/ai';
11
+ import { writeModelTS } from '../codegen';
12
+ const __filename = url.fileURLToPath(import.meta.url);
13
+ const __dirname = path.dirname(__filename);
14
+ /**
15
+ * Detect capabilities from model name, description, and schema
16
+ */
17
+ function detectCapabilities(model) {
18
+ const capabilities = new Set();
19
+ const lowerName = model.name.toLowerCase();
20
+ const lowerDesc = (model.description || '').toLowerCase();
21
+ // Image generation
22
+ if (lowerName.includes('stable-diffusion') ||
23
+ lowerName.includes('sdxl') ||
24
+ lowerName.includes('flux') ||
25
+ lowerName.includes('imagen') ||
26
+ lowerName.includes('midjourney') ||
27
+ lowerName.includes('dalle') ||
28
+ lowerDesc.includes('image generation') ||
29
+ lowerDesc.includes('image edit') ||
30
+ lowerDesc.includes('text-to-image')) {
31
+ capabilities.add('image');
32
+ }
33
+ // Vision/image input
34
+ if (lowerName.includes('vision') ||
35
+ lowerName.includes('image-to-text') ||
36
+ lowerDesc.includes('image analysis') ||
37
+ lowerDesc.includes('image understanding') ||
38
+ lowerDesc.includes('image edit')) {
39
+ capabilities.add('vision');
40
+ }
41
+ // Transcription/hearing
42
+ if (lowerName.includes('whisper') ||
43
+ lowerName.includes('transcribe') ||
44
+ lowerDesc.includes('speech-to-text') ||
45
+ lowerDesc.includes('transcription')) {
46
+ capabilities.add('hearing');
47
+ }
48
+ // Speech/audio output
49
+ if (lowerName.includes('tts') ||
50
+ lowerName.includes('speech') ||
51
+ lowerName.includes('voice') ||
52
+ lowerDesc.includes('text-to-speech')) {
53
+ capabilities.add('audio');
54
+ }
55
+ // Embeddings
56
+ if (lowerName.includes('embed') || lowerDesc.includes('embedding')) {
57
+ capabilities.add('embedding');
58
+ }
59
+ // Chat/language models
60
+ if (lowerName.includes('llm') ||
61
+ lowerName.includes('chat') ||
62
+ lowerName.includes('gpt') ||
63
+ lowerName.includes('llama') ||
64
+ lowerName.includes('mistral') ||
65
+ lowerName.includes('gemma') ||
66
+ lowerName.includes('vicuna') ||
67
+ lowerDesc.includes('language model') ||
68
+ lowerDesc.includes('conversational')) {
69
+ capabilities.add('chat');
70
+ capabilities.add('streaming');
71
+ }
72
+ // If no capabilities detected but has a schema, add chat as default
73
+ if (capabilities.size === 0 && model.latest_version?.openapi_schema) {
74
+ capabilities.add('chat');
75
+ }
76
+ return capabilities;
77
+ }
78
+ /**
79
+ * Convert Replicate model to ModelInfo
80
+ */
81
+ function convertReplicateModel(model) {
82
+ const modelId = `${model.owner}/${model.name}`;
83
+ const capabilities = detectCapabilities(model);
84
+ const tier = detectTier(model.name);
85
+ return {
86
+ provider: 'replicate',
87
+ id: modelId,
88
+ name: model.name,
89
+ capabilities: capabilities, // Already an array
90
+ tier,
91
+ pricing: {},
92
+ contextWindow: 0, // Not consistently available in Replicate API
93
+ maxOutputTokens: undefined,
94
+ metadata: {
95
+ owner: model.owner,
96
+ description: model.description,
97
+ runCount: model.run_count,
98
+ githubUrl: model.github_url,
99
+ // paperUrl: model.paper_url,
100
+ // coverImageUrl: model.cover_image_url,
101
+ visibility: model.visibility,
102
+ source: 'replicate',
103
+ latestVersionId: model.latest_version?.id,
104
+ cogVersion: model.latest_version?.cog_version,
105
+ // schema: model.latest_version?.openapi_schema,
106
+ },
107
+ };
108
+ }
109
+ /**
110
+ * Fetch all models from Replicate collections
111
+ */
112
+ async function fetchAllModels(apiKey) {
113
+ console.log('Fetching Replicate models...');
114
+ const client = new Replicate({
115
+ auth: apiKey || process.env.REPLICATE_API_KEY,
116
+ });
117
+ const allModels = [];
118
+ const seenModels = new Set();
119
+ // Collections to scrape
120
+ const collections = [
121
+ 'text-to-image',
122
+ 'image-to-text',
123
+ 'text-to-speech',
124
+ 'speech-to-text',
125
+ 'image-to-image',
126
+ 'text-to-video',
127
+ 'image-restoration',
128
+ 'super-resolution',
129
+ ];
130
+ console.log(`Fetching models from ${collections.length} collections...`);
131
+ for (const collectionSlug of collections) {
132
+ try {
133
+ console.log(` Fetching collection: ${collectionSlug}...`);
134
+ const collection = await client.collections.get(collectionSlug);
135
+ if (collection.models) {
136
+ for (const model of collection.models) {
137
+ const modelId = `${model.owner}/${model.name}`;
138
+ // Skip duplicates
139
+ if (seenModels.has(modelId)) {
140
+ continue;
141
+ }
142
+ seenModels.add(modelId);
143
+ allModels.push(model);
144
+ }
145
+ console.log(` ✓ Found ${collection.models.length} models in ${collectionSlug}`);
146
+ }
147
+ }
148
+ catch (error) {
149
+ console.log(` ⚠ Failed to fetch collection ${collectionSlug}:`, error instanceof Error ? error.message : error);
150
+ }
151
+ }
152
+ console.log(`\n✓ Fetched ${allModels.length} unique Replicate models`);
153
+ return allModels;
154
+ }
155
+ /**
156
+ * Fetch model details including schema (for cache)
157
+ */
158
+ async function fetchModelSchema(modelId, client) {
159
+ try {
160
+ const [owner, name] = modelId.split('/');
161
+ const model = await client.models.get(owner, name);
162
+ return { modelId, data: model };
163
+ }
164
+ catch (error) {
165
+ console.log(` ⚠ Failed to fetch model ${modelId}:`, error instanceof Error ? error.message : error);
166
+ return { modelId, data: null };
167
+ }
168
+ }
169
+ /**
170
+ * Fetch schemas in parallel with concurrency control
171
+ */
172
+ async function fetchSchemasParallel(models, apiKey, concurrency = 50) {
173
+ console.log(`\nCaching detailed model schemas (concurrency: ${concurrency})...`);
174
+ const client = new Replicate({
175
+ auth: apiKey,
176
+ });
177
+ const schemasCache = {};
178
+ // First, add models that already have schemas
179
+ for (const model of models) {
180
+ const modelId = `${model.owner}/${model.name}`;
181
+ if (model.latest_version?.openapi_schema) {
182
+ schemasCache[modelId] = model;
183
+ }
184
+ }
185
+ // Find models that need schema fetching
186
+ const modelsToFetch = models.filter((model) => {
187
+ const modelId = `${model.owner}/${model.name}`;
188
+ return !model.latest_version?.openapi_schema;
189
+ });
190
+ if (modelsToFetch.length === 0) {
191
+ console.log(`✓ All ${models.length} models already have schemas\n`);
192
+ return schemasCache;
193
+ }
194
+ console.log(` ${schemasCache.length} models already have schemas`);
195
+ console.log(` Fetching schemas for ${modelsToFetch.length} models...\n`);
196
+ // Process in batches with concurrency control
197
+ const modelIdsToFetch = modelsToFetch.map((m) => `${m.owner}/${m.name}`);
198
+ for (let i = 0; i < modelIdsToFetch.length; i += concurrency) {
199
+ const batch = modelIdsToFetch.slice(i, i + concurrency);
200
+ console.log(` Processing batch ${Math.floor(i / concurrency) + 1}/${Math.ceil(modelIdsToFetch.length / concurrency)} (${batch.length} models)...`);
201
+ const batchResults = await Promise.all(batch.map((modelId) => fetchModelSchema(modelId, client)));
202
+ // Store results
203
+ for (const { modelId, data } of batchResults) {
204
+ if (data) {
205
+ schemasCache[modelId] = data;
206
+ }
207
+ }
208
+ console.log(` ✓ Fetched ${batchResults.filter((r) => r.data).length}/${batch.length} schemas`);
209
+ }
210
+ console.log(`\n✓ Cached ${Object.keys(schemasCache).length} model schemas\n`);
211
+ return schemasCache;
212
+ }
213
+ /**
214
+ * Main scraper function
215
+ */
216
+ export async function scrapeReplicate(outputDir, cacheDir, options = {}) {
217
+ const { concurrency = 50 } = options;
218
+ console.log('\n=== Replicate Scraper ===\n');
219
+ const apiKey = process.env.REPLICATE_API_KEY;
220
+ if (!apiKey) {
221
+ console.error('✗ REPLICATE_API_KEY environment variable is required');
222
+ process.exit(1);
223
+ }
224
+ // Fetch all models from collections
225
+ const models = await fetchAllModels(apiKey);
226
+ // Create output directory
227
+ await fs.mkdir(outputDir, { recursive: true });
228
+ // Save raw models data
229
+ await fs.writeFile(path.join(outputDir, 'replicate-models.json'), JSON.stringify({ data: models }, (key, value) => {
230
+ if (value instanceof Set) {
231
+ return Array.from(value);
232
+ }
233
+ return value;
234
+ }, 2));
235
+ console.log(`✓ Saved raw Replicate models to replicate-models.json`);
236
+ // Create cache directory if specified
237
+ if (cacheDir) {
238
+ await fs.mkdir(cacheDir, { recursive: true });
239
+ // Cache detailed model schemas (for transformer generation)
240
+ const schemasCache = await fetchSchemasParallel(models, apiKey, concurrency);
241
+ // Save schemas cache
242
+ await fs.writeFile(path.join(cacheDir, 'replicate-schemas.json'), JSON.stringify(schemasCache, (key, value) => {
243
+ if (value instanceof Set) {
244
+ return Array.from(value);
245
+ }
246
+ return value;
247
+ }, 2));
248
+ console.log(`✓ Saved ${Object.keys(schemasCache).length} model schemas to ${cacheDir}/replicate-schemas.json`);
249
+ console.log(' (This cache file is for transformer generation and should not be committed)');
250
+ // Chunk it up to 80,000 character files for easier loading later
251
+ const chunkSize = 80000;
252
+ const schemaEntries = Object.entries(schemasCache);
253
+ let currentChunk = {};
254
+ let currentSize = 0;
255
+ let chunkIndex = 1;
256
+ for (const [modelId, modelData] of schemaEntries) {
257
+ const entryString = JSON.stringify({ [modelId]: modelData });
258
+ if (currentSize + entryString.length > chunkSize && Object.keys(currentChunk).length > 0) {
259
+ // Save current chunk
260
+ await fs.writeFile(path.join(cacheDir, `replicate-schemas-chunk-${chunkIndex}.json`), JSON.stringify(currentChunk, null, 2));
261
+ console.log(`✓ Saved schema chunk ${chunkIndex} with ${Object.keys(currentChunk).length} models`);
262
+ chunkIndex++;
263
+ currentChunk = {};
264
+ currentSize = 0;
265
+ }
266
+ currentChunk[modelId] = modelData;
267
+ currentSize += entryString.length;
268
+ }
269
+ // Save any remaining chunk
270
+ if (Object.keys(currentChunk).length > 0) {
271
+ await fs.writeFile(path.join(cacheDir, `replicate-schemas-chunk-${chunkIndex}.json`), JSON.stringify(currentChunk, null, 2));
272
+ console.log(`✓ Saved schema chunk ${chunkIndex} with ${Object.keys(currentChunk).length} models`);
273
+ }
274
+ }
275
+ // Convert to ModelInfo format
276
+ const modelInfos = models.map(convertReplicateModel);
277
+ // Save JSON for reference
278
+ await fs.writeFile(path.join(outputDir, 'replicate-modelinfo.json'), JSON.stringify(modelInfos, (key, value) => {
279
+ if (value instanceof Set) {
280
+ return Array.from(value);
281
+ }
282
+ return value;
283
+ }, 2));
284
+ console.log(`✓ Saved ${modelInfos.length} models to JSON`);
285
+ // Generate TypeScript file
286
+ const srcDir = path.join(__dirname, '../../src/models');
287
+ await writeModelTS(modelInfos, 'replicateModels', path.join(srcDir, 'replicate.ts'));
288
+ console.log(`✓ Generated TypeScript file: src/models/replicate.ts`);
289
+ console.log('\n✓ Replicate scraping complete\n');
290
+ }
291
+ // CLI execution
292
+ if (process.argv[1].endsWith('replicate.ts')) {
293
+ const args = process.argv.slice(2);
294
+ const outputDir = args.find((arg) => !arg.startsWith('--')) || path.join(__dirname, '../../data');
295
+ const cacheDir = args.find((arg, i) => i > 0 && !arg.startsWith('--') && !args[i - 1].startsWith('--')) || path.join(__dirname, '../../cache');
296
+ const concurrencyArg = args.find((arg) => arg.startsWith('--concurrency='));
297
+ const concurrency = concurrencyArg
298
+ ? parseInt(concurrencyArg.split('=')[1], 10)
299
+ : 50;
300
+ scrapeReplicate(outputDir, cacheDir, { concurrency }).catch((error) => {
301
+ console.error('✗ Replicate scraping failed:', error);
302
+ process.exit(1);
303
+ });
304
+ }
305
+ //# sourceMappingURL=replicate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replicate.js","sourceRoot":"","sources":["../../../scripts/scrapers/replicate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Generated main index
3
+ *
4
+ * This file is auto-generated by the scraper scripts.
5
+ * Do not edit manually - your changes will be overwritten.
6
+ *
7
+ * To regenerate, run: npm run scrape
8
+ */
9
+ export { models, openaiModels, openrouterModels, replicateModels } from './models';
10
+ export { transformers } from './transformers';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Generated main index
3
+ *
4
+ * This file is auto-generated by the scraper scripts.
5
+ * Do not edit manually - your changes will be overwritten.
6
+ *
7
+ * To regenerate, run: npm run scrape
8
+ */
9
+ export { models, openaiModels, openrouterModels, replicateModels } from './models';
10
+ export { transformers } from './transformers';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Generated model data
3
+ *
4
+ * This file is auto-generated by the scraper scripts.
5
+ * Do not edit manually - your changes will be overwritten.
6
+ *
7
+ * To regenerate, run: npm run scrape
8
+ */
9
+ import type { ModelInfo } from '@aeye/ai';
10
+ export declare const awsModels: ModelInfo[];
11
+ //# sourceMappingURL=aws.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws.d.ts","sourceRoot":"","sources":["../../../src/models/aws.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,eAAO,MAAM,SAAS,EAAE,SAAS,EA8jF/B,CAAC"}