diff --git a/AGENTS.md b/AGENTS.md index e798dc2b..9b553914 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -98,4 +98,7 @@ const tComponent = useTranslations('components.navigation.breadcrumb') ## Development Workflow - **Development server:** Do not start `npm run dev` automatically. User will start it manually when needed. +- **Standalone preview assets:** Before starting `.next/standalone/server.js`, sync `public/` into `.next/standalone/public/` and `.next/static/` into `.next/standalone/.next/static/`. Repeat this after every production build because Next.js regenerates `.next/standalone/`. Never start the standalone server without these assets. +- **Standalone preview host:** The standalone server `HOSTNAME` must match the hostname used in the preview URL. For a `http://localhost:` preview, start with `HOSTNAME=localhost`; do not substitute `127.0.0.1`, because locale middleware rewrites can otherwise become self-redirects. +- **Standalone preview verification:** After starting or restarting a standalone preview, verify that one default-locale URL without a locale prefix returns `200`, one locale-prefixed URL returns `200`, and a stylesheet referenced by the page returns `200` with a CSS content type. When using tmux, include the asset sync and matching `HOSTNAME` in the pane start command. - **Git commits:** Do not create commits autonomously. Always ask the user before committing changes. diff --git a/data/$schemas/model-intelligence-index.schema.json b/data/$schemas/model-intelligence-index.schema.json new file mode 100644 index 00000000..c7e61ca1 --- /dev/null +++ b/data/$schemas/model-intelligence-index.schema.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Model Intelligence Index Configuration", + "description": "Editorial display configuration for the model intelligence ranking.", + "type": "object", + "properties": { + "$schema": { + "type": "string" + }, + "hiddenVendorIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[a-z0-9-]+$" + }, + "uniqueItems": true + } + }, + "required": ["$schema", "hiddenVendorIds"], + "additionalProperties": false +} diff --git a/data/$schemas/model-price-intelligence-index.schema.json b/data/$schemas/model-price-intelligence-index.schema.json new file mode 100644 index 00000000..741d8183 --- /dev/null +++ b/data/$schemas/model-price-intelligence-index.schema.json @@ -0,0 +1,89 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "title": "Model Price Intelligence Index Configuration", + "description": "Curated model selection, price weighting, and chart-label placement for the model price-intelligence ranking.", + "type": "object", + "properties": { + "$schema": { + "type": "string" + }, + "inputShare": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "outputShare": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "models": { + "type": "array", + "items": { + "$ref": "#/$defs/selectedModel" + }, + "minItems": 1, + "uniqueItems": true + } + }, + "required": ["$schema", "inputShare", "outputShare", "models"], + "additionalProperties": false, + "$defs": { + "labelAnchor": { + "type": "string", + "enum": ["start", "middle", "end"] + }, + "selectedModel": { + "type": "object", + "properties": { + "modelId": { + "type": "string", + "pattern": "^[a-z0-9-]+$" + }, + "labelDx": { + "type": "number" + }, + "labelDy": { + "type": "number" + }, + "labelAnchor": { + "$ref": "#/$defs/labelAnchor" + }, + "linearLabelDx": { + "type": "number" + }, + "linearLabelDy": { + "type": "number" + }, + "linearLabelAnchor": { + "$ref": "#/$defs/labelAnchor" + }, + "usdPriceOverride": { + "$ref": "#/$defs/usdPriceOverride" + } + }, + "required": ["modelId", "labelDx", "labelDy", "labelAnchor"], + "additionalProperties": false + }, + "usdPriceOverride": { + "type": "object", + "properties": { + "input": { + "type": "number", + "exclusiveMinimum": 0 + }, + "output": { + "type": "number", + "exclusiveMinimum": 0 + }, + "sourceUrl": { + "type": "string", + "format": "uri", + "pattern": "^https://" + } + }, + "required": ["input", "output", "sourceUrl"], + "additionalProperties": false + } + } +} diff --git a/data/artificial-analysis-index.json b/data/artificial-analysis-index.json index 277949b3..1e18709a 100644 --- a/data/artificial-analysis-index.json +++ b/data/artificial-analysis-index.json @@ -3,7 +3,7 @@ "sourceUrl": "https://artificialanalysis.ai/leaderboards/models", "methodologyUrl": "https://artificialanalysis.ai/methodology/intelligence-benchmarking", "indexVersion": "4.1", - "observedAt": "2026-07-26", + "observedAt": "2026-07-27", "legacyMissingModelIds": ["composer", "cursor-composer-2", "cursor-composer-2-5"], "entries": [ { @@ -72,6 +72,12 @@ "estimated": false, "configuration": "Claude Opus 4.8 (max)" }, + { + "modelId": "claude-opus-5", + "score": 61, + "estimated": false, + "configuration": "Claude Opus 5 (max)" + }, { "modelId": "claude-sonnet-3", "score": 5, @@ -246,6 +252,18 @@ "estimated": true, "configuration": "Gemini 3 Pro Preview (high)" }, + { + "modelId": "gemma-4-26b-a4b", + "score": 26, + "estimated": false, + "configuration": "Gemma 4 26B A4B (Reasoning)" + }, + { + "modelId": "gemma-4-31b", + "score": 29, + "estimated": false, + "configuration": "Gemma 4 31B (Reasoning)" + }, { "modelId": "glm-4-5", "score": 19, @@ -492,6 +510,12 @@ "estimated": true, "configuration": "Grok Code Fast 1" }, + { + "modelId": "hy3", + "score": 41, + "estimated": false, + "configuration": "Hy3" + }, { "modelId": "kimi-k2-instruct", "score": 19, @@ -576,6 +600,24 @@ "estimated": false, "configuration": "MiniMax-M3" }, + { + "modelId": "mimo-v2-5", + "score": 37, + "estimated": false, + "configuration": "MiMo-V2.5" + }, + { + "modelId": "mimo-v2-5-pro", + "score": 42, + "estimated": false, + "configuration": "MiMo-V2.5-Pro" + }, + { + "modelId": "mimo-v2-flash", + "score": 25, + "estimated": false, + "configuration": "MiMo-V2-Flash (Non-reasoning)" + }, { "modelId": "mistral-medium-3-5", "score": 30, @@ -612,6 +654,24 @@ "estimated": true, "configuration": "o4-mini (high)" }, + { + "modelId": "qwen3-5-122b-a10b", + "score": 32, + "estimated": false, + "configuration": "Qwen3.5 122B A10B (Reasoning)" + }, + { + "modelId": "qwen3-5-35b-a3b", + "score": 24, + "estimated": false, + "configuration": "Qwen3.5 35B A3B (Non-reasoning)" + }, + { + "modelId": "qwen3-5-397b-a17b", + "score": 34, + "estimated": false, + "configuration": "Qwen3.5 397B A17B (Reasoning)" + }, { "modelId": "qwen3-coder-30b-a3b", "score": 14, diff --git a/data/changelogs.json b/data/changelogs.json index 9d1fc837..46b45979 100644 --- a/data/changelogs.json +++ b/data/changelogs.json @@ -1,6 +1,757 @@ { "version": 1, "entries": [ + { + "id": "2026-07-28-manifest-update", + "date": "2026-07-28", + "summary": "23 manifest records changed", + "changes": [ + { + "category": "models", + "id": "claude-opus-5", + "change": "added", + "fields": [ + "benchmarks", + "capabilities", + "confidence", + "contextWindow", + "description", + "docsUrl", + "id", + "inputModalities", + "knowledgeCutoff", + "lastVerifiedAt", + "lifecycle", + "maxOutput", + "name", + "outputModalities", + "platformUrls", + "releaseDate", + "size", + "sources", + "tokenPricing", + "translations", + "vendor", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "models", + "id": "gemma-4-26b-a4b", + "change": "added", + "fields": [ + "benchmarks", + "capabilities", + "confidence", + "contextWindow", + "description", + "docsUrl", + "id", + "inputModalities", + "knowledgeCutoff", + "lastVerifiedAt", + "lifecycle", + "maxOutput", + "name", + "outputModalities", + "platformUrls", + "releaseDate", + "size", + "sources", + "tokenPricing", + "translations", + "vendor", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "models", + "id": "gemma-4-31b", + "change": "added", + "fields": [ + "benchmarks", + "capabilities", + "confidence", + "contextWindow", + "description", + "docsUrl", + "id", + "inputModalities", + "knowledgeCutoff", + "lastVerifiedAt", + "lifecycle", + "maxOutput", + "name", + "outputModalities", + "platformUrls", + "releaseDate", + "size", + "sources", + "tokenPricing", + "translations", + "vendor", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "models", + "id": "hy3", + "change": "added", + "fields": [ + "benchmarks", + "capabilities", + "confidence", + "contextWindow", + "description", + "docsUrl", + "id", + "inputModalities", + "knowledgeCutoff", + "lastVerifiedAt", + "lifecycle", + "maxOutput", + "name", + "outputModalities", + "platformUrls", + "releaseDate", + "size", + "sources", + "tokenPricing", + "translations", + "vendor", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "models", + "id": "mimo-v2-5", + "change": "added", + "fields": [ + "benchmarks", + "capabilities", + "confidence", + "contextWindow", + "description", + "docsUrl", + "id", + "inputModalities", + "knowledgeCutoff", + "lastVerifiedAt", + "lifecycle", + "maxOutput", + "name", + "outputModalities", + "platformUrls", + "releaseDate", + "size", + "sources", + "tokenPricing", + "translations", + "vendor", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "models", + "id": "mimo-v2-5-pro", + "change": "added", + "fields": [ + "benchmarks", + "capabilities", + "confidence", + "contextWindow", + "description", + "docsUrl", + "id", + "inputModalities", + "knowledgeCutoff", + "lastVerifiedAt", + "lifecycle", + "maxOutput", + "name", + "outputModalities", + "platformUrls", + "releaseDate", + "size", + "sources", + "tokenPricing", + "translations", + "vendor", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "models", + "id": "mimo-v2-flash", + "change": "added", + "fields": [ + "benchmarks", + "capabilities", + "confidence", + "contextWindow", + "description", + "docsUrl", + "id", + "inputModalities", + "knowledgeCutoff", + "lastVerifiedAt", + "lifecycle", + "maxOutput", + "name", + "outputModalities", + "platformUrls", + "releaseDate", + "size", + "sources", + "tokenPricing", + "translations", + "vendor", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "models", + "id": "qwen3-5-122b-a10b", + "change": "added", + "fields": [ + "benchmarks", + "capabilities", + "confidence", + "contextWindow", + "description", + "docsUrl", + "id", + "inputModalities", + "knowledgeCutoff", + "lastVerifiedAt", + "lifecycle", + "maxOutput", + "name", + "outputModalities", + "platformUrls", + "releaseDate", + "size", + "sources", + "tokenPricing", + "translations", + "vendor", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "models", + "id": "qwen3-5-35b-a3b", + "change": "added", + "fields": [ + "benchmarks", + "capabilities", + "confidence", + "contextWindow", + "description", + "docsUrl", + "id", + "inputModalities", + "knowledgeCutoff", + "lastVerifiedAt", + "lifecycle", + "maxOutput", + "name", + "outputModalities", + "platformUrls", + "releaseDate", + "size", + "sources", + "tokenPricing", + "translations", + "vendor", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "models", + "id": "qwen3-5-397b-a17b", + "change": "added", + "fields": [ + "benchmarks", + "capabilities", + "confidence", + "contextWindow", + "description", + "docsUrl", + "id", + "inputModalities", + "knowledgeCutoff", + "lastVerifiedAt", + "lifecycle", + "maxOutput", + "name", + "outputModalities", + "platformUrls", + "releaseDate", + "size", + "sources", + "tokenPricing", + "translations", + "vendor", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "vendors", + "id": "alibaba", + "change": "updated", + "fields": ["modelSeries"] + }, + { + "category": "vendors", + "id": "anthropic", + "change": "updated", + "fields": ["modelSeries"] + }, + { + "category": "vendors", + "id": "deepseek", + "change": "updated", + "fields": ["modelSeries"] + }, + { + "category": "vendors", + "id": "google", + "change": "updated", + "fields": ["modelSeries"] + }, + { + "category": "vendors", + "id": "meta", + "change": "updated", + "fields": ["modelSeries"] + }, + { + "category": "vendors", + "id": "minimax", + "change": "updated", + "fields": ["modelSeries"] + }, + { + "category": "vendors", + "id": "mistral-ai", + "change": "updated", + "fields": ["modelSeries"] + }, + { + "category": "vendors", + "id": "moonshot", + "change": "updated", + "fields": ["modelSeries"] + }, + { + "category": "vendors", + "id": "openai", + "change": "updated", + "fields": ["modelSeries"] + }, + { + "category": "vendors", + "id": "tencent", + "change": "updated", + "fields": ["modelSeries", "themeColor"] + }, + { + "category": "vendors", + "id": "xai", + "change": "updated", + "fields": ["modelSeries"] + }, + { + "category": "vendors", + "id": "xiaomi", + "change": "added", + "fields": [ + "communityUrls", + "confidence", + "description", + "id", + "lastVerifiedAt", + "modelSeries", + "name", + "sources", + "themeColor", + "translations", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "vendors", + "id": "z-ai", + "change": "updated", + "fields": ["modelSeries"] + } + ] + }, + { + "id": "2026-07-27-manifest-update", + "date": "2026-07-27", + "summary": "12 manifest records changed", + "changes": [ + { + "category": "models", + "id": "claude-opus-5", + "change": "added", + "fields": [ + "benchmarks", + "capabilities", + "confidence", + "contextWindow", + "description", + "docsUrl", + "id", + "inputModalities", + "knowledgeCutoff", + "lastVerifiedAt", + "lifecycle", + "maxOutput", + "name", + "outputModalities", + "platformUrls", + "releaseDate", + "size", + "sources", + "tokenPricing", + "translations", + "vendor", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "models", + "id": "gemma-4-26b-a4b", + "change": "added", + "fields": [ + "benchmarks", + "capabilities", + "confidence", + "contextWindow", + "description", + "docsUrl", + "id", + "inputModalities", + "knowledgeCutoff", + "lastVerifiedAt", + "lifecycle", + "maxOutput", + "name", + "outputModalities", + "platformUrls", + "releaseDate", + "size", + "sources", + "tokenPricing", + "translations", + "vendor", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "models", + "id": "gemma-4-31b", + "change": "added", + "fields": [ + "benchmarks", + "capabilities", + "confidence", + "contextWindow", + "description", + "docsUrl", + "id", + "inputModalities", + "knowledgeCutoff", + "lastVerifiedAt", + "lifecycle", + "maxOutput", + "name", + "outputModalities", + "platformUrls", + "releaseDate", + "size", + "sources", + "tokenPricing", + "translations", + "vendor", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "models", + "id": "hy3", + "change": "added", + "fields": [ + "benchmarks", + "capabilities", + "confidence", + "contextWindow", + "description", + "docsUrl", + "id", + "inputModalities", + "knowledgeCutoff", + "lastVerifiedAt", + "lifecycle", + "maxOutput", + "name", + "outputModalities", + "platformUrls", + "releaseDate", + "size", + "sources", + "tokenPricing", + "translations", + "vendor", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "models", + "id": "mimo-v2-5", + "change": "added", + "fields": [ + "benchmarks", + "capabilities", + "confidence", + "contextWindow", + "description", + "docsUrl", + "id", + "inputModalities", + "knowledgeCutoff", + "lastVerifiedAt", + "lifecycle", + "maxOutput", + "name", + "outputModalities", + "platformUrls", + "releaseDate", + "size", + "sources", + "tokenPricing", + "translations", + "vendor", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "models", + "id": "mimo-v2-5-pro", + "change": "added", + "fields": [ + "benchmarks", + "capabilities", + "confidence", + "contextWindow", + "description", + "docsUrl", + "id", + "inputModalities", + "knowledgeCutoff", + "lastVerifiedAt", + "lifecycle", + "maxOutput", + "name", + "outputModalities", + "platformUrls", + "releaseDate", + "size", + "sources", + "tokenPricing", + "translations", + "vendor", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "models", + "id": "mimo-v2-flash", + "change": "added", + "fields": [ + "benchmarks", + "capabilities", + "confidence", + "contextWindow", + "description", + "docsUrl", + "id", + "inputModalities", + "knowledgeCutoff", + "lastVerifiedAt", + "lifecycle", + "maxOutput", + "name", + "outputModalities", + "platformUrls", + "releaseDate", + "size", + "sources", + "tokenPricing", + "translations", + "vendor", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "models", + "id": "qwen3-5-122b-a10b", + "change": "added", + "fields": [ + "benchmarks", + "capabilities", + "confidence", + "contextWindow", + "description", + "docsUrl", + "id", + "inputModalities", + "knowledgeCutoff", + "lastVerifiedAt", + "lifecycle", + "maxOutput", + "name", + "outputModalities", + "platformUrls", + "releaseDate", + "size", + "sources", + "tokenPricing", + "translations", + "vendor", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "models", + "id": "qwen3-5-35b-a3b", + "change": "added", + "fields": [ + "benchmarks", + "capabilities", + "confidence", + "contextWindow", + "description", + "docsUrl", + "id", + "inputModalities", + "knowledgeCutoff", + "lastVerifiedAt", + "lifecycle", + "maxOutput", + "name", + "outputModalities", + "platformUrls", + "releaseDate", + "size", + "sources", + "tokenPricing", + "translations", + "vendor", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "models", + "id": "qwen3-5-397b-a17b", + "change": "added", + "fields": [ + "benchmarks", + "capabilities", + "confidence", + "contextWindow", + "description", + "docsUrl", + "id", + "inputModalities", + "knowledgeCutoff", + "lastVerifiedAt", + "lifecycle", + "maxOutput", + "name", + "outputModalities", + "platformUrls", + "releaseDate", + "size", + "sources", + "tokenPricing", + "translations", + "vendor", + "verified", + "verifiedBy", + "websiteUrl" + ] + }, + { + "category": "vendors", + "id": "tencent", + "change": "updated", + "fields": ["themeColor"] + }, + { + "category": "vendors", + "id": "xiaomi", + "change": "added", + "fields": [ + "communityUrls", + "confidence", + "description", + "id", + "lastVerifiedAt", + "name", + "sources", + "themeColor", + "translations", + "verified", + "verifiedBy", + "websiteUrl" + ] + } + ] + }, { "id": "2026-07-26-manifest-update", "date": "2026-07-26", diff --git a/data/data-health.json b/data/data-health.json index 842d409e..8bf5d72f 100644 --- a/data/data-health.json +++ b/data/data-health.json @@ -1,5 +1,5 @@ { - "asOf": "2026-07-26", + "asOf": "2026-07-28", "thresholds": { "models": 30, "providers": 30, @@ -10,14 +10,14 @@ "vendors": 90 }, "summary": { - "totalRecords": 231, - "recordsWithSources": 140, - "verifiedRecords": 126, - "provenanceComplete": 109, + "totalRecords": 242, + "recordsWithSources": 151, + "verifiedRecords": 137, + "provenanceComplete": 120, "staleVerifiedRecords": 0, - "translationPlaceholderValues": 1520, + "translationPlaceholderValues": 1262, "danglingRelationships": 0, - "modelBenchmarkCoverage": 10.5, + "modelBenchmarkCoverage": 9.6, "productsWithPricing": 66, "productRecords": 67, "errors": 0, @@ -50,9 +50,9 @@ "stale": 0 }, "models": { - "total": 113, - "verified": 112, - "provenanceComplete": 100, + "total": 123, + "verified": 122, + "provenanceComplete": 110, "stale": 0 }, "providers": { @@ -62,67 +62,67 @@ "stale": 0 }, "vendors": { - "total": 39, - "verified": 3, - "provenanceComplete": 1, + "total": 40, + "verified": 4, + "provenanceComplete": 2, "stale": 0 } }, "translationsByLocale": { "de": { - "totalStrings": 383, - "matchingEnglish": 133, - "matchingEnglishPercent": 34.7 + "totalStrings": 411, + "matchingEnglish": 113, + "matchingEnglishPercent": 27.5 }, "es": { - "totalStrings": 383, - "matchingEnglish": 127, - "matchingEnglishPercent": 33.2 + "totalStrings": 411, + "matchingEnglish": 104, + "matchingEnglishPercent": 25.3 }, "fr": { - "totalStrings": 383, - "matchingEnglish": 137, - "matchingEnglishPercent": 35.8 + "totalStrings": 411, + "matchingEnglish": 115, + "matchingEnglishPercent": 28 }, "id": { - "totalStrings": 383, - "matchingEnglish": 171, - "matchingEnglishPercent": 44.6 + "totalStrings": 411, + "matchingEnglish": 149, + "matchingEnglishPercent": 36.3 }, "ja": { - "totalStrings": 383, - "matchingEnglish": 123, - "matchingEnglishPercent": 32.1 + "totalStrings": 411, + "matchingEnglish": 107, + "matchingEnglishPercent": 26 }, "ko": { - "totalStrings": 383, - "matchingEnglish": 143, - "matchingEnglishPercent": 37.3 + "totalStrings": 411, + "matchingEnglish": 115, + "matchingEnglishPercent": 28 }, "pt": { - "totalStrings": 383, - "matchingEnglish": 136, - "matchingEnglishPercent": 35.5 + "totalStrings": 411, + "matchingEnglish": 114, + "matchingEnglishPercent": 27.7 }, "ru": { - "totalStrings": 383, - "matchingEnglish": 150, - "matchingEnglishPercent": 39.2 + "totalStrings": 411, + "matchingEnglish": 124, + "matchingEnglishPercent": 30.2 }, "tr": { - "totalStrings": 383, - "matchingEnglish": 152, - "matchingEnglishPercent": 39.7 + "totalStrings": 411, + "matchingEnglish": 125, + "matchingEnglishPercent": 30.4 }, "zh-Hans": { - "totalStrings": 383, - "matchingEnglish": 125, - "matchingEnglishPercent": 32.6 + "totalStrings": 411, + "matchingEnglish": 98, + "matchingEnglishPercent": 23.8 }, "zh-Hant": { - "totalStrings": 383, - "matchingEnglish": 123, - "matchingEnglishPercent": 32.1 + "totalStrings": 411, + "matchingEnglish": 98, + "matchingEnglishPercent": 23.8 } }, "issues": [ diff --git a/data/model-intelligence-index.json b/data/model-intelligence-index.json new file mode 100644 index 00000000..f74dd810 --- /dev/null +++ b/data/model-intelligence-index.json @@ -0,0 +1,4 @@ +{ + "$schema": "./$schemas/model-intelligence-index.schema.json", + "hiddenVendorIds": ["mistral-ai"] +} diff --git a/data/model-price-intelligence-index.json b/data/model-price-intelligence-index.json new file mode 100644 index 00000000..0cbfff38 --- /dev/null +++ b/data/model-price-intelligence-index.json @@ -0,0 +1,154 @@ +{ + "$schema": "./$schemas/model-price-intelligence-index.schema.json", + "inputShare": 0.9, + "outputShare": 0.1, + "models": [ + { + "modelId": "deepseek-v4-flash", + "labelDx": -8, + "labelDy": 18, + "labelAnchor": "end", + "linearLabelDx": 150, + "linearLabelDy": 16, + "linearLabelAnchor": "start" + }, + { + "modelId": "deepseek-v4-pro", + "labelDx": -12, + "labelDy": -14, + "labelAnchor": "end", + "linearLabelDx": 16, + "linearLabelDy": -40, + "linearLabelAnchor": "start" + }, + { + "modelId": "hy3", + "labelDx": 12, + "labelDy": -28, + "labelAnchor": "start", + "linearLabelDx": -16, + "linearLabelDy": -46, + "linearLabelAnchor": "end", + "usdPriceOverride": { + "input": 0.14, + "output": 0.58, + "sourceUrl": "https://artificialanalysis.ai/models/hy3" + } + }, + { + "modelId": "minimax-m3", + "labelDx": -12, + "labelDy": 24, + "labelAnchor": "end", + "linearLabelDx": -20, + "linearLabelDy": 0, + "linearLabelAnchor": "end" + }, + { + "modelId": "qwen3-6-35b-a3b", + "labelDx": -10, + "labelDy": -10, + "labelAnchor": "end", + "linearLabelDx": 10, + "linearLabelDy": 22, + "linearLabelAnchor": "start" + }, + { + "modelId": "qwen3-7-plus", + "labelDx": 10, + "labelDy": -10, + "labelAnchor": "start", + "linearLabelDx": 18, + "linearLabelDy": -22, + "linearLabelAnchor": "start", + "usdPriceOverride": { + "input": 0.4, + "output": 1.6, + "sourceUrl": "https://artificialanalysis.ai/models/qwen3-7-plus" + } + }, + { + "modelId": "glm-5-2", + "labelDx": -22, + "labelDy": -18, + "labelAnchor": "end" + }, + { + "modelId": "gpt-5-6-luna", + "labelDx": 0, + "labelDy": -42, + "labelAnchor": "middle" + }, + { + "modelId": "gemini-3-5-flash-lite", + "labelDx": 14, + "labelDy": 28, + "labelAnchor": "start" + }, + { + "modelId": "gemini-3-6-flash", + "labelDx": -18, + "labelDy": 24, + "labelAnchor": "end" + }, + { + "modelId": "grok-4-5", + "labelDx": 18, + "labelDy": -24, + "labelAnchor": "start" + }, + { + "modelId": "claude-haiku-4-5", + "labelDx": -10, + "labelDy": -10, + "labelAnchor": "end" + }, + { + "modelId": "claude-sonnet-5", + "labelDx": 8, + "labelDy": 22, + "labelAnchor": "start" + }, + { + "modelId": "qwen3-7-max", + "labelDx": -10, + "labelDy": 24, + "labelAnchor": "end", + "usdPriceOverride": { + "input": 2.5, + "output": 7.5, + "sourceUrl": "https://artificialanalysis.ai/models/qwen3-7-max" + } + }, + { + "modelId": "gemini-3-1-pro-preview", + "labelDx": 8, + "labelDy": 18, + "labelAnchor": "start" + }, + { + "modelId": "gpt-5-6-terra", + "labelDx": 8, + "labelDy": -32, + "labelAnchor": "start" + }, + { + "modelId": "kimi-k3", + "labelDx": -8, + "labelDy": -42, + "labelAnchor": "end" + }, + { + "modelId": "claude-opus-5", + "labelDx": -8, + "labelDy": 34, + "labelAnchor": "end" + }, + { + "modelId": "gpt-5-6-sol", + "labelDx": 8, + "labelDy": -10, + "labelAnchor": "start" + } + ] +} diff --git a/docs/DATA-HEALTH.md b/docs/DATA-HEALTH.md index 6f3b9959..cdf7a125 100644 --- a/docs/DATA-HEALTH.md +++ b/docs/DATA-HEALTH.md @@ -1,19 +1,19 @@ # Data Health Report -Snapshot date: 2026-07-26. Regenerate with `npm run data-health:report`. +Snapshot date: 2026-07-28. Regenerate with `npm run data-health:report`. ## Scorecard | Metric | Value | | --- | ---: | -| Manifest records | 231 | -| Records with structured sources | 140 | -| Verified records | 126 | -| Verified with complete provenance | 109 | +| Manifest records | 242 | +| Records with structured sources | 151 | +| Verified records | 137 | +| Verified with complete provenance | 120 | | Stale verified records | 0 | -| Non-English values identical to English | 1520 | +| Non-English values identical to English | 1262 | | Dangling product relationships | 0 | -| Model benchmark coverage | 10.5% | +| Model benchmark coverage | 9.6% | | Products with pricing | 66/67 | | Errors / warnings / info | 0 / 17 / 91 | @@ -25,9 +25,9 @@ Snapshot date: 2026-07-26. Regenerate with `npm run data-health:report`. | clis | 27 | 4 | 3 | 0 | | desktops | 12 | 0 | 0 | 0 | | extensions | 19 | 3 | 2 | 0 | -| models | 113 | 112 | 100 | 0 | +| models | 123 | 122 | 110 | 0 | | providers | 12 | 4 | 3 | 0 | -| vendors | 39 | 3 | 1 | 0 | +| vendors | 40 | 4 | 2 | 0 | ## Translation Placeholder Proxy @@ -35,17 +35,17 @@ Exact English matches are a triage signal; product names and technical terms can | Locale | Comparable strings | Exact English matches | Match rate | | --- | ---: | ---: | ---: | -| de | 383 | 133 | 34.7% | -| es | 383 | 127 | 33.2% | -| fr | 383 | 137 | 35.8% | -| id | 383 | 171 | 44.6% | -| ja | 383 | 123 | 32.1% | -| ko | 383 | 143 | 37.3% | -| pt | 383 | 136 | 35.5% | -| ru | 383 | 150 | 39.2% | -| tr | 383 | 152 | 39.7% | -| zh-Hans | 383 | 125 | 32.6% | -| zh-Hant | 383 | 123 | 32.1% | +| de | 411 | 113 | 27.5% | +| es | 411 | 104 | 25.3% | +| fr | 411 | 115 | 28% | +| id | 411 | 149 | 36.3% | +| ja | 411 | 107 | 26% | +| ko | 411 | 115 | 28% | +| pt | 411 | 114 | 27.7% | +| ru | 411 | 124 | 30.2% | +| tr | 411 | 125 | 30.4% | +| zh-Hans | 411 | 98 | 23.8% | +| zh-Hant | 411 | 98 | 23.8% | ## Backlog by Issue Type diff --git a/manifests/$schemas/vendor.schema.json b/manifests/$schemas/vendor.schema.json index 020cd38d..8fd3605d 100644 --- a/manifests/$schemas/vendor.schema.json +++ b/manifests/$schemas/vendor.schema.json @@ -37,11 +37,49 @@ "required": ["light", "dark"], "additionalProperties": false }, + "modelSeries": { + "type": "array", + "description": "Curated model product lines in display-priority order. Each catalog model ID may belong to at most one series for this vendor.", + "items": { + "$ref": "#/$defs/modelSeries" + }, + "minItems": 1, + "uniqueItems": true + }, "communityUrls": { "$ref": "./ref/community-urls.schema.json" } }, "required": ["communityUrls"] } - ] + ], + "$defs": { + "modelSeries": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Stable vendor-scoped identifier for the model product line", + "pattern": "^[a-z0-9-]+$" + }, + "name": { + "type": "string", + "description": "Reader-facing product-line name", + "minLength": 1 + }, + "modelIds": { + "type": "array", + "description": "Catalog model IDs assigned to this product line", + "items": { + "type": "string", + "pattern": "^[a-z0-9-]+$" + }, + "minItems": 1, + "uniqueItems": true + } + }, + "required": ["id", "name", "modelIds"], + "additionalProperties": false + } + } } diff --git a/manifests/models/claude-opus-5.json b/manifests/models/claude-opus-5.json new file mode 100644 index 00000000..f914a1dc --- /dev/null +++ b/manifests/models/claude-opus-5.json @@ -0,0 +1,124 @@ +{ + "$schema": "../$schemas/model.schema.json", + "id": "claude-opus-5", + "name": "Claude Opus 5", + "description": "Anthropic's Opus model for complex agentic coding, deep reasoning, and enterprise work, with a 1M-token context window and 128K output.", + "translations": { + "de": { + "description": "Anthropics Opus-Modell für komplexes agentisches Coding, tiefes Schlussfolgern und Unternehmensarbeit mit 1 Mio. Token Kontext und 128K Ausgabe." + }, + "es": { + "description": "Modelo Opus de Anthropic para programación agéntica compleja, razonamiento profundo y trabajo empresarial, con contexto de 1M tokens y salida de 128K." + }, + "fr": { + "description": "Modèle Opus d’Anthropic pour le codage agentique complexe, le raisonnement approfondi et le travail d’entreprise, avec 1 M de jetons de contexte et 128K en sortie." + }, + "id": { + "description": "Model Opus Anthropic untuk coding agentik kompleks, penalaran mendalam, dan pekerjaan perusahaan, dengan konteks 1 juta token dan keluaran 128K." + }, + "ja": { + "description": "100万トークンのコンテキストと128K出力を備え、複雑なエージェント型コーディング、深い推論、企業業務に対応するAnthropicのOpusモデル。" + }, + "ko": { + "description": "100만 토큰 컨텍스트와 128K 출력을 갖추고 복잡한 에이전트 코딩, 심층 추론과 엔터프라이즈 업무를 지원하는 Anthropic Opus 모델입니다." + }, + "pt": { + "description": "Modelo Opus da Anthropic para programação agêntica complexa, raciocínio profundo e trabalho empresarial, com contexto de 1M tokens e saída de 128K." + }, + "ru": { + "description": "Модель Anthropic Opus для сложного агентного программирования, глубоких рассуждений и корпоративных задач с контекстом 1 млн токенов и выводом 128K." + }, + "tr": { + "description": "1 milyon token bağlam ve 128K çıktı ile karmaşık aracılı kodlama, derin akıl yürütme ve kurumsal işler için Anthropic Opus modeli." + }, + "zh-Hans": { + "description": "Anthropic 面向复杂智能体编码、深度推理和企业工作的 Opus 模型,提供 100 万 token 上下文和 128K 输出。" + }, + "zh-Hant": { + "description": "Anthropic 面向複雜智慧體編碼、深度推理和企業工作的 Opus 模型,提供 100 萬 token 上下文和 128K 輸出。" + } + }, + "verified": true, + "sources": [ + { + "url": "https://platform.claude.com/docs/en/about-claude/models/whats-new-opus-5", + "title": "What's new in Claude Opus 5", + "fields": [ + "name", + "description", + "docsUrl", + "contextWindow", + "maxOutput", + "releaseDate", + "lifecycle", + "inputModalities", + "outputModalities", + "capabilities" + ] + }, + { + "url": "https://platform.claude.com/docs/en/about-claude/pricing", + "title": "Claude Platform pricing", + "fields": ["tokenPricing"] + }, + { + "url": "https://artificialanalysis.ai/models/claude-opus-5", + "title": "Artificial Analysis Claude Opus 5 model page", + "fields": ["releaseDate", "platformUrls.artificialAnalysis"] + } + ], + "lastVerifiedAt": "2026-07-27", + "verifiedBy": "codex-agent", + "confidence": "high", + "websiteUrl": "https://www.anthropic.com", + "docsUrl": "https://platform.claude.com/docs/en/about-claude/models/whats-new-opus-5", + "vendor": "Anthropic", + "size": null, + "contextWindow": 1000000, + "maxOutput": 128000, + "tokenPricing": { + "status": "available", + "primaryOffer": "global-standard", + "offers": [ + { + "id": "global-standard", + "currency": "USD", + "region": "global", + "serviceTier": "standard", + "effectiveFrom": "2026-07-24", + "effectiveTo": null, + "tiers": [ + { + "condition": null, + "rates": { + "input": 5, + "output": 25, + "cacheRead": 0.5, + "cacheWrite": null + } + } + ] + } + ] + }, + "releaseDate": "2026-07-24", + "lifecycle": "latest", + "knowledgeCutoff": null, + "inputModalities": ["text", "image", "pdf"], + "outputModalities": ["text"], + "capabilities": ["function-calling", "tool-choice", "structured-outputs", "reasoning"], + "benchmarks": { + "sweBench": null, + "terminalBench": null, + "mmmu": null, + "mmmuPro": null, + "webDevArena": null, + "sciCode": null, + "liveCodeBench": null + }, + "platformUrls": { + "huggingface": null, + "artificialAnalysis": "https://artificialanalysis.ai/models/claude-opus-5", + "openrouter": null + } +} diff --git a/manifests/models/gemma-4-26b-a4b.json b/manifests/models/gemma-4-26b-a4b.json new file mode 100644 index 00000000..405a7552 --- /dev/null +++ b/manifests/models/gemma-4-26b-a4b.json @@ -0,0 +1,108 @@ +{ + "$schema": "../$schemas/model.schema.json", + "id": "gemma-4-26b-a4b", + "name": "Gemma 4 26B A4B", + "description": "Google DeepMind's open-weight multimodal MoE model with 26B total and 4B active parameters for efficient reasoning, coding, visual tasks, and agents.", + "translations": { + "de": { + "description": "Google DeepMinds offenes multimodales MoE-Modell mit 26B Gesamt- und 4B aktiven Parametern für effizientes Schlussfolgern, Coding, visuelle Aufgaben und Agenten." + }, + "es": { + "description": "Modelo MoE multimodal abierto de Google DeepMind con 26B parámetros totales y 4B activos para razonamiento, programación, visión y agentes eficientes." + }, + "fr": { + "description": "Modèle MoE multimodal ouvert de Google DeepMind avec 26B paramètres au total et 4B actifs pour le raisonnement, le codage, la vision et les agents efficaces." + }, + "id": { + "description": "Model MoE multimodal berbobot terbuka Google DeepMind dengan 26B parameter total dan 4B aktif untuk penalaran, coding, tugas visual, dan agen yang efisien." + }, + "ja": { + "description": "効率的な推論、コーディング、視覚タスク、エージェントに対応するGoogle DeepMindのオープンウェイト・マルチモーダルMoEモデル。総26B、アクティブ4B。" + }, + "ko": { + "description": "효율적인 추론, 코딩, 시각 작업과 에이전트를 위한 Google DeepMind의 오픈 웨이트 멀티모달 MoE 모델로, 총 26B 및 활성 4B 매개변수를 갖습니다." + }, + "pt": { + "description": "Modelo MoE multimodal aberto do Google DeepMind com 26B parâmetros totais e 4B ativos para raciocínio, programação, visão e agentes eficientes." + }, + "ru": { + "description": "Открытая мультимодальная MoE-модель Google DeepMind с 26 млрд параметров и 4 млрд активных для эффективных рассуждений, программирования, визуальных задач и агентов." + }, + "tr": { + "description": "Verimli akıl yürütme, kodlama, görsel görevler ve aracılar için Google DeepMind'ın 26B toplam ve 4B etkin parametreli açık ağırlıklı çok modlu MoE modeli." + }, + "zh-Hans": { + "description": "Google DeepMind 面向高效推理、编程、视觉任务和智能体的开放权重多模态 MoE 模型,总参数 26B、激活参数 4B。" + }, + "zh-Hant": { + "description": "Google DeepMind 面向高效推理、程式設計、視覺任務和智慧體的開放權重多模態 MoE 模型,總參數 26B、啟用參數 4B。" + } + }, + "verified": true, + "sources": [ + { + "url": "https://ai.google.dev/gemma/docs/core/model_card_4", + "title": "Gemma 4 official model card", + "fields": [ + "name", + "description", + "docsUrl", + "size", + "contextWindow", + "inputModalities", + "outputModalities", + "capabilities" + ] + }, + { + "url": "https://blog.google/innovation-and-ai/technology/developers-tools/gemma-4/", + "title": "Gemma 4 official launch announcement", + "fields": ["description", "releaseDate", "lifecycle"] + }, + { + "url": "https://huggingface.co/google/gemma-4-26B-A4B-it", + "title": "Gemma 4 26B A4B official model repository", + "fields": ["size", "platformUrls.huggingface"] + }, + { + "url": "https://artificialanalysis.ai/models/gemma-4-26b-a4b", + "title": "Artificial Analysis Gemma 4 26B A4B model page", + "fields": ["releaseDate", "platformUrls.artificialAnalysis"] + } + ], + "lastVerifiedAt": "2026-07-27", + "verifiedBy": "codex-agent", + "confidence": "high", + "websiteUrl": "https://deepmind.google", + "docsUrl": "https://ai.google.dev/gemma/docs/core/model_card_4", + "vendor": "Google", + "size": "26B (4B active)", + "contextWindow": 262144, + "maxOutput": null, + "tokenPricing": { + "status": "not-applicable", + "reason": "open-weights-only", + "primaryOffer": null, + "offers": [] + }, + "releaseDate": "2026-04-02", + "lifecycle": "latest", + "knowledgeCutoff": null, + "inputModalities": ["text", "image", "video"], + "outputModalities": ["text"], + "capabilities": ["function-calling", "reasoning"], + "benchmarks": { + "sweBench": null, + "terminalBench": null, + "mmmu": null, + "mmmuPro": null, + "webDevArena": null, + "sciCode": null, + "liveCodeBench": null + }, + "platformUrls": { + "huggingface": "https://huggingface.co/google/gemma-4-26B-A4B-it", + "artificialAnalysis": "https://artificialanalysis.ai/models/gemma-4-26b-a4b", + "openrouter": null + } +} diff --git a/manifests/models/gemma-4-31b.json b/manifests/models/gemma-4-31b.json new file mode 100644 index 00000000..4200192e --- /dev/null +++ b/manifests/models/gemma-4-31b.json @@ -0,0 +1,108 @@ +{ + "$schema": "../$schemas/model.schema.json", + "id": "gemma-4-31b", + "name": "Gemma 4 31B", + "description": "Google DeepMind's open-weight 31B multimodal model for reasoning, coding, visual understanding, function calling, and agentic workflows with 256K context.", + "translations": { + "de": { + "description": "Google DeepMinds offenes multimodales 31B-Modell für Schlussfolgern, Coding, visuelles Verstehen, Funktionsaufrufe und agentische Abläufe mit 256K Kontext." + }, + "es": { + "description": "Modelo multimodal abierto de Google DeepMind con 31B parámetros para razonamiento, programación, visión, llamadas a funciones y agentes con contexto de 256K." + }, + "fr": { + "description": "Modèle multimodal ouvert de Google DeepMind à 31B paramètres pour le raisonnement, le codage, la vision, l’appel de fonctions et les agents avec un contexte de 256K." + }, + "id": { + "description": "Model multimodal berbobot terbuka Google DeepMind dengan 31B parameter untuk penalaran, coding, pemahaman visual, pemanggilan fungsi, dan agen dengan konteks 256K." + }, + "ja": { + "description": "推論、コーディング、視覚理解、関数呼び出し、エージェントワークフローに対応し、256K文脈を備えるGoogle DeepMindの31Bオープンウェイトモデル。" + }, + "ko": { + "description": "추론, 코딩, 시각 이해, 함수 호출과 에이전트 워크플로를 지원하고 256K 컨텍스트를 제공하는 Google DeepMind의 31B 오픈 웨이트 멀티모달 모델입니다." + }, + "pt": { + "description": "Modelo multimodal aberto do Google DeepMind com 31B parâmetros para raciocínio, programação, visão, chamadas de função e agentes com contexto de 256K." + }, + "ru": { + "description": "Открытая мультимодальная модель Google DeepMind на 31 млрд параметров для рассуждений, программирования, визуального понимания, функций и агентов с контекстом 256K." + }, + "tr": { + "description": "Akıl yürütme, kodlama, görsel anlama, işlev çağırma ve aracı iş akışları için Google DeepMind'ın 256K bağlamlı 31B açık ağırlıklı çok modlu modeli." + }, + "zh-Hans": { + "description": "Google DeepMind 面向推理、编程、视觉理解、函数调用和智能体工作流的 31B 开放权重多模态模型,提供 256K 上下文。" + }, + "zh-Hant": { + "description": "Google DeepMind 面向推理、程式設計、視覺理解、函式呼叫和智慧體工作流的 31B 開放權重多模態模型,提供 256K 上下文。" + } + }, + "verified": true, + "sources": [ + { + "url": "https://ai.google.dev/gemma/docs/core/model_card_4", + "title": "Gemma 4 official model card", + "fields": [ + "name", + "description", + "docsUrl", + "size", + "contextWindow", + "inputModalities", + "outputModalities", + "capabilities" + ] + }, + { + "url": "https://blog.google/innovation-and-ai/technology/developers-tools/gemma-4/", + "title": "Gemma 4 official launch announcement", + "fields": ["description", "releaseDate", "lifecycle"] + }, + { + "url": "https://huggingface.co/google/gemma-4-31B-it", + "title": "Gemma 4 31B official model repository", + "fields": ["size", "platformUrls.huggingface"] + }, + { + "url": "https://artificialanalysis.ai/models/gemma-4-31b", + "title": "Artificial Analysis Gemma 4 31B model page", + "fields": ["releaseDate", "platformUrls.artificialAnalysis"] + } + ], + "lastVerifiedAt": "2026-07-27", + "verifiedBy": "codex-agent", + "confidence": "high", + "websiteUrl": "https://deepmind.google", + "docsUrl": "https://ai.google.dev/gemma/docs/core/model_card_4", + "vendor": "Google", + "size": "31B", + "contextWindow": 262144, + "maxOutput": null, + "tokenPricing": { + "status": "not-applicable", + "reason": "open-weights-only", + "primaryOffer": null, + "offers": [] + }, + "releaseDate": "2026-04-02", + "lifecycle": "latest", + "knowledgeCutoff": null, + "inputModalities": ["text", "image", "video"], + "outputModalities": ["text"], + "capabilities": ["function-calling", "reasoning"], + "benchmarks": { + "sweBench": null, + "terminalBench": null, + "mmmu": null, + "mmmuPro": null, + "webDevArena": null, + "sciCode": null, + "liveCodeBench": null + }, + "platformUrls": { + "huggingface": "https://huggingface.co/google/gemma-4-31B-it", + "artificialAnalysis": "https://artificialanalysis.ai/models/gemma-4-31b", + "openrouter": null + } +} diff --git a/manifests/models/hy3.json b/manifests/models/hy3.json new file mode 100644 index 00000000..7c4420a0 --- /dev/null +++ b/manifests/models/hy3.json @@ -0,0 +1,104 @@ +{ + "$schema": "../$schemas/model.schema.json", + "id": "hy3", + "name": "Hy3", + "description": "Tencent's open-weight MoE language model for reasoning, coding, tool use, and long-horizon agent tasks, with 295B parameters and a 256K context window.", + "translations": { + "de": { + "description": "Tencents offenes MoE-Sprachmodell für Schlussfolgern, Coding, Werkzeugnutzung und langfristige Agentenaufgaben mit 295B Parametern und 256K Kontext." + }, + "es": { + "description": "Modelo de lenguaje MoE abierto de Tencent para razonamiento, programación, uso de herramientas y agentes prolongados, con 295B parámetros y contexto de 256K." + }, + "fr": { + "description": "Modèle de langage MoE ouvert de Tencent pour le raisonnement, le codage, les outils et les agents de longue durée, avec 295B paramètres et un contexte de 256K." + }, + "id": { + "description": "Model bahasa MoE berbobot terbuka Tencent untuk penalaran, coding, penggunaan alat, dan tugas agen jangka panjang, dengan 295B parameter dan konteks 256K." + }, + "ja": { + "description": "推論、コーディング、ツール利用、長期エージェントタスクに対応するTencentの295BオープンウェイトMoE言語モデル。256Kコンテキストを備える。" + }, + "ko": { + "description": "추론, 코딩, 도구 사용과 장기 에이전트 작업을 위한 Tencent의 295B 오픈 웨이트 MoE 언어 모델로, 256K 컨텍스트를 제공합니다." + }, + "pt": { + "description": "Modelo de linguagem MoE aberto da Tencent para raciocínio, programação, uso de ferramentas e agentes prolongados, com 295B parâmetros e contexto de 256K." + }, + "ru": { + "description": "MoE-модель Tencent с открытыми весами и 295 млрд параметров для рассуждений, программирования, инструментов и длительных агентных задач с контекстом 256K." + }, + "tr": { + "description": "Akıl yürütme, kodlama, araç kullanımı ve uzun süreli aracı görevler için Tencent'in 295B açık ağırlıklı MoE dil modeli; 256K bağlam sunar." + }, + "zh-Hans": { + "description": "Tencent 面向推理、编程、工具使用和长周期智能体任务的 295B 开放权重 MoE 语言模型,提供 256K 上下文。" + }, + "zh-Hant": { + "description": "Tencent 面向推理、程式設計、工具使用和長週期智慧體任務的 295B 開放權重 MoE 語言模型,提供 256K 上下文。" + } + }, + "verified": true, + "sources": [ + { + "url": "https://huggingface.co/tencent/Hy3", + "title": "Tencent Hy3 official model card", + "fields": [ + "name", + "description", + "docsUrl", + "size", + "contextWindow", + "inputModalities", + "outputModalities", + "capabilities", + "platformUrls.huggingface" + ] + }, + { + "url": "https://www.tencent.com/tencent-hunyuan-officially-releases-hy3-advancing-agent-capabilities-and-deeper-product-integration/", + "title": "Tencent Hy3 official release announcement", + "fields": ["description", "releaseDate", "lifecycle"] + }, + { + "url": "https://artificialanalysis.ai/models/hy3", + "title": "Artificial Analysis Hy3 model page", + "fields": ["releaseDate", "platformUrls.artificialAnalysis"] + } + ], + "lastVerifiedAt": "2026-07-27", + "verifiedBy": "codex-agent", + "confidence": "high", + "websiteUrl": "https://www.tencent.com", + "docsUrl": "https://huggingface.co/tencent/Hy3", + "vendor": "Tencent", + "size": "295B + 3.8B MTP (21B active)", + "contextWindow": 262144, + "maxOutput": null, + "tokenPricing": { + "status": "unavailable", + "reason": "official-price-not-published", + "primaryOffer": null, + "offers": [] + }, + "releaseDate": "2026-07-06", + "lifecycle": "latest", + "knowledgeCutoff": null, + "inputModalities": ["text"], + "outputModalities": ["text"], + "capabilities": ["function-calling", "tool-choice", "reasoning"], + "benchmarks": { + "sweBench": null, + "terminalBench": null, + "mmmu": null, + "mmmuPro": null, + "webDevArena": null, + "sciCode": null, + "liveCodeBench": null + }, + "platformUrls": { + "huggingface": "https://huggingface.co/tencent/Hy3", + "artificialAnalysis": "https://artificialanalysis.ai/models/hy3", + "openrouter": null + } +} diff --git a/manifests/models/mimo-v2-5-pro.json b/manifests/models/mimo-v2-5-pro.json new file mode 100644 index 00000000..27201bf4 --- /dev/null +++ b/manifests/models/mimo-v2-5-pro.json @@ -0,0 +1,104 @@ +{ + "$schema": "../$schemas/model.schema.json", + "id": "mimo-v2-5-pro", + "name": "MiMo-V2.5-Pro", + "description": "The Xiaomi open-weight 1.02T-parameter MoE model for complex software engineering, long-horizon agents, and reasoning across a 1M-token context.", + "translations": { + "de": { + "description": "Das offene MoE-Modell von Xiaomi mit 1,02 Bio. Parametern für komplexe Softwareentwicklung, langfristige Agenten und Schlussfolgern über 1 Mio. Token Kontext." + }, + "es": { + "description": "Modelo MoE de pesos abiertos de Xiaomi con 1,02T parámetros para ingeniería de software compleja, agentes prolongados y razonamiento con contexto de 1M tokens." + }, + "fr": { + "description": "Modèle MoE à poids ouverts de Xiaomi, doté de 1,02 T de paramètres, pour l’ingénierie logicielle complexe, les agents de longue durée et le raisonnement sur 1 M de jetons." + }, + "id": { + "description": "Model MoE berbobot terbuka Xiaomi dengan 1,02T parameter untuk rekayasa perangkat lunak kompleks, agen jangka panjang, dan penalaran dalam konteks 1 juta token." + }, + "ja": { + "description": "複雑なソフトウェア開発、長期エージェント、100万トークン文脈での推論に対応する、Xiaomiの1.02兆パラメータのオープンウェイトMoEモデル。" + }, + "ko": { + "description": "복잡한 소프트웨어 엔지니어링, 장기 에이전트와 100만 토큰 컨텍스트 추론을 위한 Xiaomi의 1.02조 매개변수 오픈 웨이트 MoE 모델입니다." + }, + "pt": { + "description": "Modelo MoE de pesos abertos da Xiaomi com 1,02T parâmetros para engenharia de software complexa, agentes de longa duração e raciocínio em contexto de 1M tokens." + }, + "ru": { + "description": "MoE-модель Xiaomi с открытыми весами и 1,02 трлн параметров для сложной разработки ПО, долгих агентных задач и рассуждений в контексте 1 млн токенов." + }, + "tr": { + "description": "Karmaşık yazılım mühendisliği, uzun süreli aracılar ve 1 milyon token bağlamda akıl yürütme için Xiaomi'nin 1,02T parametreli açık ağırlıklı MoE modeli." + }, + "zh-Hans": { + "description": "Xiaomi 面向复杂软件工程、长周期智能体和 100 万 token 上下文推理的开放权重 MoE 模型,总参数 1.02 万亿。" + }, + "zh-Hant": { + "description": "Xiaomi 面向複雜軟體工程、長週期智慧體和 100 萬 token 上下文推理的開放權重 MoE 模型,總參數 1.02 兆。" + } + }, + "verified": true, + "sources": [ + { + "url": "https://huggingface.co/XiaomiMiMo/MiMo-V2.5-Pro", + "title": "MiMo-V2.5-Pro official model card", + "fields": [ + "name", + "description", + "docsUrl", + "size", + "contextWindow", + "inputModalities", + "outputModalities", + "capabilities", + "platformUrls.huggingface" + ] + }, + { + "url": "https://mimo.xiaomi.com/mimo-v2-5", + "title": "Xiaomi MiMo-V2.5 official release announcement", + "fields": ["releaseDate"] + }, + { + "url": "https://artificialanalysis.ai/models/mimo-v2-5-pro", + "title": "Artificial Analysis MiMo-V2.5-Pro model page", + "fields": ["platformUrls.artificialAnalysis"] + } + ], + "lastVerifiedAt": "2026-07-27", + "verifiedBy": "codex-agent", + "confidence": "high", + "websiteUrl": "https://mimo.xiaomi.com/", + "docsUrl": "https://huggingface.co/XiaomiMiMo/MiMo-V2.5-Pro", + "vendor": "Xiaomi", + "size": "1.02T (42B active)", + "contextWindow": 1048576, + "maxOutput": null, + "tokenPricing": { + "status": "unavailable", + "reason": "official-price-not-published", + "primaryOffer": null, + "offers": [] + }, + "releaseDate": "2026-04-22", + "lifecycle": "latest", + "knowledgeCutoff": null, + "inputModalities": ["text"], + "outputModalities": ["text"], + "capabilities": ["function-calling", "tool-choice", "reasoning"], + "benchmarks": { + "sweBench": null, + "terminalBench": null, + "mmmu": null, + "mmmuPro": null, + "webDevArena": null, + "sciCode": null, + "liveCodeBench": null + }, + "platformUrls": { + "huggingface": "https://huggingface.co/XiaomiMiMo/MiMo-V2.5-Pro", + "artificialAnalysis": "https://artificialanalysis.ai/models/mimo-v2-5-pro", + "openrouter": null + } +} diff --git a/manifests/models/mimo-v2-5.json b/manifests/models/mimo-v2-5.json new file mode 100644 index 00000000..6ba15551 --- /dev/null +++ b/manifests/models/mimo-v2-5.json @@ -0,0 +1,104 @@ +{ + "$schema": "../$schemas/model.schema.json", + "id": "mimo-v2-5", + "name": "MiMo-V2.5", + "description": "The Xiaomi open-weight 310B MoE model for multimodal understanding, long-context reasoning, and agentic workflows across text, image, video, and audio.", + "translations": { + "de": { + "description": "Das offene 310B-MoE-Modell von Xiaomi für multimodales Verstehen, Langkontext-Schlussfolgern und agentische Abläufe mit Text, Bild, Video und Audio." + }, + "es": { + "description": "Modelo MoE abierto de Xiaomi con 310B parámetros para comprensión multimodal, razonamiento de contexto largo y agentes con texto, imagen, vídeo y audio." + }, + "fr": { + "description": "Modèle MoE ouvert de Xiaomi à 310B paramètres pour la compréhension multimodale, le raisonnement long contexte et les agents sur texte, image, vidéo et audio." + }, + "id": { + "description": "Model MoE berbobot terbuka Xiaomi dengan 310B parameter untuk pemahaman multimodal, penalaran konteks panjang, dan alur agentik berbasis teks, gambar, video, dan audio." + }, + "ja": { + "description": "テキスト、画像、動画、音声のマルチモーダル理解、長文脈推論、エージェントワークフローに対応するXiaomiの310BオープンウェイトMoEモデル。" + }, + "ko": { + "description": "텍스트, 이미지, 비디오와 오디오의 멀티모달 이해, 장문맥 추론과 에이전트 워크플로를 위한 Xiaomi의 310B 오픈 웨이트 MoE 모델입니다." + }, + "pt": { + "description": "Modelo MoE aberto da Xiaomi com 310B parâmetros para compreensão multimodal, raciocínio de contexto longo e agentes com texto, imagem, vídeo e áudio." + }, + "ru": { + "description": "MoE-модель Xiaomi с открытыми весами и 310 млрд параметров для мультимодального понимания, длинного контекста и агентных процессов с текстом, изображениями, видео и аудио." + }, + "tr": { + "description": "Metin, görüntü, video ve ses üzerinde çok modlu anlama, uzun bağlamlı akıl yürütme ve aracı iş akışları için Xiaomi'nin 310B açık ağırlıklı MoE modeli." + }, + "zh-Hans": { + "description": "Xiaomi 面向文本、图像、视频和音频多模态理解、长上下文推理及智能体工作流的 310B 开放权重 MoE 模型。" + }, + "zh-Hant": { + "description": "Xiaomi 面向文字、圖像、影片和音訊多模態理解、長上下文推理及智慧體工作流的 310B 開放權重 MoE 模型。" + } + }, + "verified": true, + "sources": [ + { + "url": "https://huggingface.co/XiaomiMiMo/MiMo-V2.5", + "title": "MiMo-V2.5 official model card", + "fields": [ + "name", + "description", + "docsUrl", + "size", + "contextWindow", + "inputModalities", + "outputModalities", + "capabilities", + "platformUrls.huggingface" + ] + }, + { + "url": "https://mimo.xiaomi.com/mimo-v2-5", + "title": "Xiaomi MiMo-V2.5 official release announcement", + "fields": ["releaseDate"] + }, + { + "url": "https://artificialanalysis.ai/models/mimo-v2-5-0424", + "title": "Artificial Analysis MiMo-V2.5 model page", + "fields": ["platformUrls.artificialAnalysis"] + } + ], + "lastVerifiedAt": "2026-07-27", + "verifiedBy": "codex-agent", + "confidence": "high", + "websiteUrl": "https://mimo.xiaomi.com/", + "docsUrl": "https://huggingface.co/XiaomiMiMo/MiMo-V2.5", + "vendor": "Xiaomi", + "size": "310B (15B active)", + "contextWindow": 1048576, + "maxOutput": null, + "tokenPricing": { + "status": "unavailable", + "reason": "official-price-not-published", + "primaryOffer": null, + "offers": [] + }, + "releaseDate": "2026-04-22", + "lifecycle": "latest", + "knowledgeCutoff": null, + "inputModalities": ["text", "image", "audio", "video"], + "outputModalities": ["text"], + "capabilities": ["function-calling", "tool-choice", "reasoning"], + "benchmarks": { + "sweBench": null, + "terminalBench": null, + "mmmu": null, + "mmmuPro": null, + "webDevArena": null, + "sciCode": null, + "liveCodeBench": null + }, + "platformUrls": { + "huggingface": "https://huggingface.co/XiaomiMiMo/MiMo-V2.5", + "artificialAnalysis": "https://artificialanalysis.ai/models/mimo-v2-5-0424", + "openrouter": null + } +} diff --git a/manifests/models/mimo-v2-flash.json b/manifests/models/mimo-v2-flash.json new file mode 100644 index 00000000..855620d6 --- /dev/null +++ b/manifests/models/mimo-v2-flash.json @@ -0,0 +1,100 @@ +{ + "$schema": "../$schemas/model.schema.json", + "id": "mimo-v2-flash", + "name": "MiMo-V2-Flash", + "description": "The Xiaomi open-weight 309B MoE language model for efficient reasoning, coding, and agentic tasks, with 15B active parameters and 256K context.", + "translations": { + "de": { + "description": "Das offene 309B-MoE-Sprachmodell von Xiaomi für effizientes Schlussfolgern, Coding und agentische Aufgaben mit 15B aktiven Parametern und 256K Kontext." + }, + "es": { + "description": "Modelo de lenguaje MoE abierto de Xiaomi con 309B parámetros para razonamiento, programación y agentes eficientes, con 15B activos y contexto de 256K." + }, + "fr": { + "description": "Modèle de langage MoE ouvert de Xiaomi à 309B paramètres pour le raisonnement, le codage et les agents efficaces, avec 15B actifs et un contexte de 256K." + }, + "id": { + "description": "Model bahasa MoE berbobot terbuka Xiaomi dengan 309B parameter untuk penalaran, coding, dan tugas agentik yang efisien, dengan 15B aktif dan konteks 256K." + }, + "ja": { + "description": "効率的な推論、コーディング、エージェントタスク向けのXiaomi製309BオープンウェイトMoE言語モデル。15Bパラメータを使用し、256K文脈に対応。" + }, + "ko": { + "description": "효율적인 추론, 코딩과 에이전트 작업을 위한 Xiaomi의 309B 오픈 웨이트 MoE 언어 모델로, 15B 활성 매개변수와 256K 컨텍스트를 제공합니다." + }, + "pt": { + "description": "Modelo de linguagem MoE aberto da Xiaomi com 309B parâmetros para raciocínio, programação e agentes eficientes, com 15B ativos e contexto de 256K." + }, + "ru": { + "description": "MoE-модель Xiaomi с открытыми весами и 309 млрд параметров для эффективных рассуждений, программирования и агентов, с 15 млрд активных параметров и контекстом 256K." + }, + "tr": { + "description": "Verimli akıl yürütme, kodlama ve aracı görevler için Xiaomi'nin 309B açık ağırlıklı MoE dil modeli; 15B etkin parametre ve 256K bağlam sunar." + }, + "zh-Hans": { + "description": "Xiaomi 面向高效推理、编程和智能体任务的 309B 开放权重 MoE 语言模型,激活参数 15B,上下文 256K。" + }, + "zh-Hant": { + "description": "Xiaomi 面向高效推理、程式設計和智慧體任務的 309B 開放權重 MoE 語言模型,啟用參數 15B,上下文 256K。" + } + }, + "verified": true, + "sources": [ + { + "url": "https://huggingface.co/XiaomiMiMo/MiMo-V2-Flash", + "title": "MiMo-V2-Flash official model card", + "fields": [ + "name", + "description", + "docsUrl", + "size", + "contextWindow", + "inputModalities", + "outputModalities", + "capabilities", + "releaseDate", + "platformUrls.huggingface" + ] + }, + { + "url": "https://artificialanalysis.ai/models/mimo-v2-flash", + "title": "Artificial Analysis MiMo-V2-Flash model page", + "fields": ["releaseDate", "platformUrls.artificialAnalysis"] + } + ], + "lastVerifiedAt": "2026-07-27", + "verifiedBy": "codex-agent", + "confidence": "high", + "websiteUrl": "https://mimo.xiaomi.com/", + "docsUrl": "https://huggingface.co/XiaomiMiMo/MiMo-V2-Flash", + "vendor": "Xiaomi", + "size": "309B (15B active)", + "contextWindow": 262144, + "maxOutput": null, + "tokenPricing": { + "status": "unavailable", + "reason": "official-price-not-published", + "primaryOffer": null, + "offers": [] + }, + "releaseDate": "2025-12-16", + "lifecycle": "maintained", + "knowledgeCutoff": null, + "inputModalities": ["text"], + "outputModalities": ["text"], + "capabilities": ["function-calling", "tool-choice", "reasoning"], + "benchmarks": { + "sweBench": null, + "terminalBench": null, + "mmmu": null, + "mmmuPro": null, + "webDevArena": null, + "sciCode": null, + "liveCodeBench": null + }, + "platformUrls": { + "huggingface": "https://huggingface.co/XiaomiMiMo/MiMo-V2-Flash", + "artificialAnalysis": "https://artificialanalysis.ai/models/mimo-v2-flash", + "openrouter": null + } +} diff --git a/manifests/models/qwen3-5-122b-a10b.json b/manifests/models/qwen3-5-122b-a10b.json new file mode 100644 index 00000000..67e9abb3 --- /dev/null +++ b/manifests/models/qwen3-5-122b-a10b.json @@ -0,0 +1,137 @@ +{ + "$schema": "../$schemas/model.schema.json", + "id": "qwen3-5-122b-a10b", + "name": "Qwen3.5-122B-A10B", + "description": "Alibaba's open-weight multimodal MoE model with 122B total and 10B active parameters for efficient reasoning, coding, agents, and visual tasks.", + "translations": { + "de": { + "description": "Alibabas offenes multimodales MoE-Modell mit 122B Gesamt- und 10B aktiven Parametern für effizientes Schlussfolgern, Coding, Agenten und visuelle Aufgaben." + }, + "es": { + "description": "Modelo MoE multimodal abierto de Alibaba con 122B parámetros totales y 10B activos para razonamiento, programación, agentes y tareas visuales eficientes." + }, + "fr": { + "description": "Modèle MoE multimodal ouvert d’Alibaba avec 122B paramètres au total et 10B actifs pour le raisonnement, le codage, les agents et les tâches visuelles." + }, + "id": { + "description": "Model MoE multimodal berbobot terbuka Alibaba dengan 122B parameter total dan 10B aktif untuk penalaran, coding, agen, dan tugas visual yang efisien." + }, + "ja": { + "description": "効率的な推論、コーディング、エージェント、視覚タスクに対応するAlibabaのオープンウェイト・マルチモーダルMoEモデル。総122B、アクティブ10B。" + }, + "ko": { + "description": "효율적인 추론, 코딩, 에이전트와 시각 작업을 위한 Alibaba의 오픈 웨이트 멀티모달 MoE 모델로, 총 122B 및 활성 10B 매개변수를 갖습니다." + }, + "pt": { + "description": "Modelo MoE multimodal aberto da Alibaba com 122B parâmetros totais e 10B ativos para raciocínio, programação, agentes e tarefas visuais eficientes." + }, + "ru": { + "description": "Открытая мультимодальная MoE-модель Alibaba со 122 млрд параметров и 10 млрд активных для эффективных рассуждений, программирования, агентов и визуальных задач." + }, + "tr": { + "description": "Verimli akıl yürütme, kodlama, aracılar ve görsel görevler için Alibaba'nın 122B toplam ve 10B etkin parametreli açık ağırlıklı çok modlu MoE modeli." + }, + "zh-Hans": { + "description": "Alibaba 面向高效推理、编程、智能体和视觉任务的开放权重多模态 MoE 模型,总参数 122B、激活参数 10B。" + }, + "zh-Hant": { + "description": "Alibaba 面向高效推理、程式設計、智慧體和視覺任務的開放權重多模態 MoE 模型,總參數 122B、啟用參數 10B。" + } + }, + "verified": true, + "sources": [ + { + "url": "https://huggingface.co/Qwen/Qwen3.5-122B-A10B", + "title": "Qwen3.5-122B-A10B official model card", + "fields": [ + "name", + "description", + "docsUrl", + "size", + "contextWindow", + "inputModalities", + "outputModalities", + "capabilities", + "platformUrls.huggingface" + ] + }, + { + "url": "https://huggingface.co/api/models/Qwen/Qwen3.5-122B-A10B", + "title": "Qwen3.5-122B-A10B official repository metadata", + "fields": ["releaseDate"] + }, + { + "url": "https://www.alibabacloud.com/help/en/model-studio/model-pricing", + "title": "Alibaba Cloud Model Studio model pricing", + "fields": ["tokenPricing"] + }, + { + "url": "https://artificialanalysis.ai/models/qwen3-5-122b-a10b", + "title": "Artificial Analysis Qwen3.5 122B A10B model page", + "fields": ["platformUrls.artificialAnalysis"] + } + ], + "lastVerifiedAt": "2026-07-27", + "verifiedBy": "codex-agent", + "confidence": "high", + "websiteUrl": "https://qwen.ai", + "docsUrl": "https://huggingface.co/Qwen/Qwen3.5-122B-A10B", + "vendor": "Alibaba", + "size": "122B (10B active)", + "contextWindow": 262144, + "maxOutput": null, + "tokenPricing": { + "status": "available", + "primaryOffer": "global-standard", + "offers": [ + { + "id": "global-standard", + "currency": "USD", + "region": "global", + "serviceTier": "standard", + "effectiveFrom": null, + "effectiveTo": null, + "tiers": [ + { + "condition": { "metric": "inputTokens", "min": 1, "max": 128000 }, + "rates": { + "input": 0.115, + "output": 0.917, + "cacheRead": null, + "cacheWrite": null + } + }, + { + "condition": { "metric": "inputTokens", "min": 128001, "max": 256000 }, + "rates": { + "input": 0.287, + "output": 2.294, + "cacheRead": null, + "cacheWrite": null + } + } + ] + } + ] + }, + "releaseDate": "2026-02-24", + "lifecycle": "maintained", + "knowledgeCutoff": null, + "inputModalities": ["text", "image", "video"], + "outputModalities": ["text"], + "capabilities": ["function-calling", "tool-choice", "structured-outputs", "reasoning"], + "benchmarks": { + "sweBench": null, + "terminalBench": null, + "mmmu": null, + "mmmuPro": null, + "webDevArena": null, + "sciCode": null, + "liveCodeBench": null + }, + "platformUrls": { + "huggingface": "https://huggingface.co/Qwen/Qwen3.5-122B-A10B", + "artificialAnalysis": "https://artificialanalysis.ai/models/qwen3-5-122b-a10b", + "openrouter": null + } +} diff --git a/manifests/models/qwen3-5-35b-a3b.json b/manifests/models/qwen3-5-35b-a3b.json new file mode 100644 index 00000000..5b3e2198 --- /dev/null +++ b/manifests/models/qwen3-5-35b-a3b.json @@ -0,0 +1,137 @@ +{ + "$schema": "../$schemas/model.schema.json", + "id": "qwen3-5-35b-a3b", + "name": "Qwen3.5-35B-A3B", + "description": "Alibaba's compact open-weight multimodal MoE model with 35B total and 3B active parameters for fast coding, agent, reasoning, and visual workloads.", + "translations": { + "de": { + "description": "Alibabas kompaktes offenes multimodales MoE-Modell mit 35B Gesamt- und 3B aktiven Parametern für schnelles Coding, Agenten, Schlussfolgern und visuelle Aufgaben." + }, + "es": { + "description": "Modelo MoE multimodal abierto y compacto de Alibaba con 35B parámetros totales y 3B activos para programación, agentes, razonamiento y tareas visuales rápidas." + }, + "fr": { + "description": "Modèle MoE multimodal ouvert et compact d’Alibaba avec 35B paramètres au total et 3B actifs pour le codage, les agents, le raisonnement et les tâches visuelles rapides." + }, + "id": { + "description": "Model MoE multimodal berbobot terbuka dan ringkas dari Alibaba dengan 35B parameter total dan 3B aktif untuk coding, agen, penalaran, dan tugas visual yang cepat." + }, + "ja": { + "description": "高速なコーディング、エージェント、推論、視覚処理向けのAlibaba製コンパクトなオープンウェイト・マルチモーダルMoEモデル。総35B、アクティブ3B。" + }, + "ko": { + "description": "빠른 코딩, 에이전트, 추론과 시각 작업을 위한 Alibaba의 소형 오픈 웨이트 멀티모달 MoE 모델로, 총 35B 및 활성 3B 매개변수를 갖습니다." + }, + "pt": { + "description": "Modelo MoE multimodal aberto e compacto da Alibaba com 35B parâmetros totais e 3B ativos para programação, agentes, raciocínio e tarefas visuais rápidas." + }, + "ru": { + "description": "Компактная открытая мультимодальная MoE-модель Alibaba с 35 млрд параметров и 3 млрд активных для быстрого программирования, агентов, рассуждений и визуальных задач." + }, + "tr": { + "description": "Hızlı kodlama, aracılar, akıl yürütme ve görsel işler için Alibaba'nın 35B toplam ve 3B etkin parametreli kompakt açık ağırlıklı çok modlu MoE modeli." + }, + "zh-Hans": { + "description": "Alibaba 面向快速编程、智能体、推理和视觉任务的紧凑型开放权重多模态 MoE 模型,总参数 35B、激活参数 3B。" + }, + "zh-Hant": { + "description": "Alibaba 面向快速程式設計、智慧體、推理和視覺任務的緊湊型開放權重多模態 MoE 模型,總參數 35B、啟用參數 3B。" + } + }, + "verified": true, + "sources": [ + { + "url": "https://huggingface.co/Qwen/Qwen3.5-35B-A3B", + "title": "Qwen3.5-35B-A3B official model card", + "fields": [ + "name", + "description", + "docsUrl", + "size", + "contextWindow", + "inputModalities", + "outputModalities", + "capabilities", + "platformUrls.huggingface" + ] + }, + { + "url": "https://huggingface.co/api/models/Qwen/Qwen3.5-35B-A3B", + "title": "Qwen3.5-35B-A3B official repository metadata", + "fields": ["releaseDate"] + }, + { + "url": "https://www.alibabacloud.com/help/en/model-studio/model-pricing", + "title": "Alibaba Cloud Model Studio model pricing", + "fields": ["tokenPricing"] + }, + { + "url": "https://artificialanalysis.ai/models/qwen3-5-35b-a3b-non-reasoning", + "title": "Artificial Analysis Qwen3.5 35B A3B model page", + "fields": ["platformUrls.artificialAnalysis"] + } + ], + "lastVerifiedAt": "2026-07-27", + "verifiedBy": "codex-agent", + "confidence": "high", + "websiteUrl": "https://qwen.ai", + "docsUrl": "https://huggingface.co/Qwen/Qwen3.5-35B-A3B", + "vendor": "Alibaba", + "size": "35B (3B active)", + "contextWindow": 262144, + "maxOutput": null, + "tokenPricing": { + "status": "available", + "primaryOffer": "global-standard", + "offers": [ + { + "id": "global-standard", + "currency": "USD", + "region": "global", + "serviceTier": "standard", + "effectiveFrom": null, + "effectiveTo": null, + "tiers": [ + { + "condition": { "metric": "inputTokens", "min": 1, "max": 128000 }, + "rates": { + "input": 0.057, + "output": 0.459, + "cacheRead": null, + "cacheWrite": null + } + }, + { + "condition": { "metric": "inputTokens", "min": 128001, "max": 256000 }, + "rates": { + "input": 0.229, + "output": 1.835, + "cacheRead": null, + "cacheWrite": null + } + } + ] + } + ] + }, + "releaseDate": "2026-02-24", + "lifecycle": "maintained", + "knowledgeCutoff": null, + "inputModalities": ["text", "image", "video"], + "outputModalities": ["text"], + "capabilities": ["function-calling", "tool-choice", "structured-outputs", "reasoning"], + "benchmarks": { + "sweBench": null, + "terminalBench": null, + "mmmu": null, + "mmmuPro": null, + "webDevArena": null, + "sciCode": null, + "liveCodeBench": null + }, + "platformUrls": { + "huggingface": "https://huggingface.co/Qwen/Qwen3.5-35B-A3B", + "artificialAnalysis": "https://artificialanalysis.ai/models/qwen3-5-35b-a3b-non-reasoning", + "openrouter": null + } +} diff --git a/manifests/models/qwen3-5-397b-a17b.json b/manifests/models/qwen3-5-397b-a17b.json new file mode 100644 index 00000000..d670a2c4 --- /dev/null +++ b/manifests/models/qwen3-5-397b-a17b.json @@ -0,0 +1,137 @@ +{ + "$schema": "../$schemas/model.schema.json", + "id": "qwen3-5-397b-a17b", + "name": "Qwen3.5-397B-A17B", + "description": "Alibaba's open-weight multimodal MoE model with 397B total and 17B active parameters for reasoning, coding, agents, and visual understanding.", + "translations": { + "de": { + "description": "Alibabas offenes multimodales MoE-Modell mit 397B Gesamt- und 17B aktiven Parametern für Schlussfolgern, Coding, Agenten und visuelles Verstehen." + }, + "es": { + "description": "Modelo MoE multimodal abierto de Alibaba con 397B parámetros totales y 17B activos para razonamiento, programación, agentes y comprensión visual." + }, + "fr": { + "description": "Modèle MoE multimodal ouvert d’Alibaba avec 397B paramètres au total et 17B actifs pour le raisonnement, le codage, les agents et la compréhension visuelle." + }, + "id": { + "description": "Model MoE multimodal berbobot terbuka Alibaba dengan 397B parameter total dan 17B aktif untuk penalaran, coding, agen, dan pemahaman visual." + }, + "ja": { + "description": "推論、コーディング、エージェント、視覚理解に対応するAlibabaのオープンウェイト・マルチモーダルMoEモデル。総397B、アクティブ17Bパラメータ。" + }, + "ko": { + "description": "추론, 코딩, 에이전트와 시각 이해를 위한 Alibaba의 오픈 웨이트 멀티모달 MoE 모델로, 총 397B 및 활성 17B 매개변수를 갖습니다." + }, + "pt": { + "description": "Modelo MoE multimodal aberto da Alibaba com 397B parâmetros totais e 17B ativos para raciocínio, programação, agentes e compreensão visual." + }, + "ru": { + "description": "Открытая мультимодальная MoE-модель Alibaba с 397 млрд параметров и 17 млрд активных для рассуждений, программирования, агентов и визуального понимания." + }, + "tr": { + "description": "Akıl yürütme, kodlama, aracılar ve görsel anlama için Alibaba'nın 397B toplam ve 17B etkin parametreli açık ağırlıklı çok modlu MoE modeli." + }, + "zh-Hans": { + "description": "Alibaba 面向推理、编程、智能体和视觉理解的开放权重多模态 MoE 模型,总参数 397B、激活参数 17B。" + }, + "zh-Hant": { + "description": "Alibaba 面向推理、程式設計、智慧體和視覺理解的開放權重多模態 MoE 模型,總參數 397B、啟用參數 17B。" + } + }, + "verified": true, + "sources": [ + { + "url": "https://huggingface.co/Qwen/Qwen3.5-397B-A17B", + "title": "Qwen3.5-397B-A17B official model card", + "fields": [ + "name", + "description", + "docsUrl", + "size", + "contextWindow", + "inputModalities", + "outputModalities", + "capabilities", + "platformUrls.huggingface" + ] + }, + { + "url": "https://huggingface.co/api/models/Qwen/Qwen3.5-397B-A17B", + "title": "Qwen3.5-397B-A17B official repository metadata", + "fields": ["releaseDate"] + }, + { + "url": "https://www.alibabacloud.com/help/en/model-studio/model-pricing", + "title": "Alibaba Cloud Model Studio model pricing", + "fields": ["tokenPricing"] + }, + { + "url": "https://artificialanalysis.ai/models/qwen3-5-397b-a17b", + "title": "Artificial Analysis Qwen3.5 397B A17B model page", + "fields": ["platformUrls.artificialAnalysis"] + } + ], + "lastVerifiedAt": "2026-07-27", + "verifiedBy": "codex-agent", + "confidence": "high", + "websiteUrl": "https://qwen.ai", + "docsUrl": "https://huggingface.co/Qwen/Qwen3.5-397B-A17B", + "vendor": "Alibaba", + "size": "397B (17B active)", + "contextWindow": 262144, + "maxOutput": null, + "tokenPricing": { + "status": "available", + "primaryOffer": "global-standard", + "offers": [ + { + "id": "global-standard", + "currency": "USD", + "region": "global", + "serviceTier": "standard", + "effectiveFrom": null, + "effectiveTo": null, + "tiers": [ + { + "condition": { "metric": "inputTokens", "min": 1, "max": 128000 }, + "rates": { + "input": 0.172, + "output": 1.032, + "cacheRead": null, + "cacheWrite": null + } + }, + { + "condition": { "metric": "inputTokens", "min": 128001, "max": 256000 }, + "rates": { + "input": 0.43, + "output": 2.58, + "cacheRead": null, + "cacheWrite": null + } + } + ] + } + ] + }, + "releaseDate": "2026-02-16", + "lifecycle": "maintained", + "knowledgeCutoff": null, + "inputModalities": ["text", "image", "video"], + "outputModalities": ["text"], + "capabilities": ["function-calling", "tool-choice", "structured-outputs", "reasoning"], + "benchmarks": { + "sweBench": null, + "terminalBench": null, + "mmmu": null, + "mmmuPro": null, + "webDevArena": null, + "sciCode": null, + "liveCodeBench": null + }, + "platformUrls": { + "huggingface": "https://huggingface.co/Qwen/Qwen3.5-397B-A17B", + "artificialAnalysis": "https://artificialanalysis.ai/models/qwen3-5-397b-a17b", + "openrouter": null + } +} diff --git a/manifests/vendors/alibaba.json b/manifests/vendors/alibaba.json index 98992d19..2ae554c5 100644 --- a/manifests/vendors/alibaba.json +++ b/manifests/vendors/alibaba.json @@ -6,6 +6,34 @@ "light": "#D95F00", "dark": "#FF8A3D" }, + "modelSeries": [ + { + "id": "qwen-max", + "name": "Qwen Max", + "modelIds": ["qwen3-6-max-preview", "qwen3-7-max"] + }, + { + "id": "qwen-plus", + "name": "Qwen Plus", + "modelIds": ["qwen3-6-plus", "qwen3-7-plus"] + }, + { + "id": "qwen-coder", + "name": "Qwen Coder", + "modelIds": ["qwen3-coder-480b-a35b", "qwen3-coder-30b-a3b", "qwen3-coder-next"] + }, + { + "id": "qwen-open", + "name": "Qwen Open", + "modelIds": [ + "qwen3-5-397b-a17b", + "qwen3-5-35b-a3b", + "qwen3-5-122b-a10b", + "qwen3-6-35b-a3b", + "qwen3-6-27b" + ] + } + ], "description": "Chinese multinational technology company specializing in e-commerce, retail, cloud computing, AI, and digital services through platforms like Alibaba.com, Taobao, and Alibaba Cloud.", "translations": { "zh-Hans": { diff --git a/manifests/vendors/anthropic.json b/manifests/vendors/anthropic.json index 63a6b32e..caa12b22 100644 --- a/manifests/vendors/anthropic.json +++ b/manifests/vendors/anthropic.json @@ -6,6 +6,46 @@ "light": "#D97757", "dark": "#E58A6B" }, + "modelSeries": [ + { + "id": "claude-opus", + "name": "Claude Opus", + "modelIds": [ + "claude-opus-3", + "claude-opus-4", + "claude-opus-4-1", + "claude-opus-4-5", + "claude-opus-4-6", + "claude-opus-4-7", + "claude-opus-4-8", + "claude-opus-5" + ] + }, + { + "id": "claude-sonnet", + "name": "Claude Sonnet", + "modelIds": [ + "claude-sonnet-3", + "claude-sonnet-3-5-20240620", + "claude-sonnet-3-5-20241022", + "claude-sonnet-3-7", + "claude-sonnet-4", + "claude-sonnet-4-5", + "claude-sonnet-4-6", + "claude-sonnet-5" + ] + }, + { + "id": "claude-haiku", + "name": "Claude Haiku", + "modelIds": ["claude-haiku-3", "claude-haiku-3-5", "claude-haiku-4-5"] + }, + { + "id": "claude-fable", + "name": "Claude Fable", + "modelIds": ["claude-fable-5"] + } + ], "description": "An AI safety company focused on building reliable, interpretable, and steerable AI systems.", "translations": { "zh-Hans": { diff --git a/manifests/vendors/deepseek.json b/manifests/vendors/deepseek.json index 4a6390ae..67ac86c5 100644 --- a/manifests/vendors/deepseek.json +++ b/manifests/vendors/deepseek.json @@ -6,6 +6,27 @@ "light": "#4D6BFE", "dark": "#4D6BFE" }, + "modelSeries": [ + { + "id": "deepseek", + "name": "DeepSeek", + "modelIds": [ + "deepseek-v3", + "deepseek-r1", + "deepseek-r1-0528", + "deepseek-v3-1", + "deepseek-v3-terminus", + "deepseek-v3-2-exp", + "deepseek-3-2", + "deepseek-v4-pro" + ] + }, + { + "id": "deepseek-flash", + "name": "DeepSeek Flash", + "modelIds": ["deepseek-v4-flash"] + } + ], "description": "A leading AI research company focused on developing advanced language models and AI technology for coding and general intelligence.", "translations": { "zh-Hans": { diff --git a/manifests/vendors/google.json b/manifests/vendors/google.json index aba6d97f..c6d760f0 100644 --- a/manifests/vendors/google.json +++ b/manifests/vendors/google.json @@ -6,6 +6,34 @@ "light": "#4285F4", "dark": "#4285F4" }, + "modelSeries": [ + { + "id": "gemini-pro", + "name": "Gemini Pro", + "modelIds": ["gemini-2-5-pro", "gemini-3-pro", "gemini-3-1-pro-preview"] + }, + { + "id": "gemini-flash", + "name": "Gemini Flash", + "modelIds": [ + "gemini-2-0-flash", + "gemini-2-5-flash", + "gemini-3-flash", + "gemini-3-5-flash", + "gemini-3-6-flash" + ] + }, + { + "id": "gemini-flash-lite", + "name": "Gemini Flash-Lite", + "modelIds": ["gemini-2-5-flash-lite", "gemini-3-5-flash-lite"] + }, + { + "id": "gemma", + "name": "Gemma", + "modelIds": ["gemma-4-26b-a4b", "gemma-4-31b"] + } + ], "description": "A multinational technology company specializing in Internet-related services and products, including AI and machine learning.", "translations": { "zh-Hans": { diff --git a/manifests/vendors/meta.json b/manifests/vendors/meta.json index 6312d3a5..749a0850 100644 --- a/manifests/vendors/meta.json +++ b/manifests/vendors/meta.json @@ -6,6 +6,18 @@ "light": "#0866FF", "dark": "#0866FF" }, + "modelSeries": [ + { + "id": "llama", + "name": "Llama", + "modelIds": ["llama-4-scout", "llama-4-maverick"] + }, + { + "id": "muse", + "name": "Muse", + "modelIds": ["muse-spark-1-1"] + } + ], "description": "Technology company building AI tools and open-source models like Llama, advancing research through open science to connect people and enable innovation worldwide.", "translations": { "zh-Hans": { diff --git a/manifests/vendors/minimax.json b/manifests/vendors/minimax.json index 2fb7cbf4..c809b348 100644 --- a/manifests/vendors/minimax.json +++ b/manifests/vendors/minimax.json @@ -6,6 +6,13 @@ "light": "#E84B8A", "dark": "#E84B8A" }, + "modelSeries": [ + { + "id": "minimax-m", + "name": "MiniMax M", + "modelIds": ["minimax-m2", "minimax-m2-1", "minimax-m2-5", "minimax-m2-7", "minimax-m3"] + } + ], "description": "An AI company specializing in multimodal general large language models, offering advanced AI services including text, speech, music, image, and video generation.", "translations": { "zh-Hans": { diff --git a/manifests/vendors/mistral-ai.json b/manifests/vendors/mistral-ai.json index 79b032bb..ce2cd19c 100644 --- a/manifests/vendors/mistral-ai.json +++ b/manifests/vendors/mistral-ai.json @@ -7,6 +7,23 @@ "light": "#D95F00", "dark": "#FF8A33" }, + "modelSeries": [ + { + "id": "devstral", + "name": "Devstral", + "modelIds": ["devstral-2", "devstral-small-2"] + }, + { + "id": "mistral-medium", + "name": "Mistral Medium", + "modelIds": ["mistral-medium-3-5"] + }, + { + "id": "mistral-small", + "name": "Mistral Small", + "modelIds": ["mistral-small-4"] + } + ], "description": "European AI company developing open-weight and commercial frontier models, including Codestral and Devstral coding models, developer tools, and deployment infrastructure.", "translations": { "de": { diff --git a/manifests/vendors/moonshot.json b/manifests/vendors/moonshot.json index 3459efe9..98f5b67d 100644 --- a/manifests/vendors/moonshot.json +++ b/manifests/vendors/moonshot.json @@ -7,6 +7,25 @@ "light": "#6E5AE6", "dark": "#6E5AE6" }, + "modelSeries": [ + { + "id": "kimi", + "name": "Kimi", + "modelIds": [ + "kimi-k2-instruct", + "kimi-k2-0905", + "kimi-k2-thinking", + "kimi-k2-5", + "kimi-k2-6", + "kimi-k3" + ] + }, + { + "id": "kimi-code", + "name": "Kimi Code", + "modelIds": ["kimi-k2-7-code"] + } + ], "description": "An AI company specializing in large language models and intelligent applications, known for the Kimi AI assistant.", "translations": { "zh-Hans": { diff --git a/manifests/vendors/openai.json b/manifests/vendors/openai.json index c0f239c9..38c096d8 100644 --- a/manifests/vendors/openai.json +++ b/manifests/vendors/openai.json @@ -6,6 +6,54 @@ "light": "#10A37F", "dark": "#10A37F" }, + "modelSeries": [ + { + "id": "gpt-sol", + "name": "GPT (Sol)", + "modelIds": [ + "gpt-4o", + "gpt-4-1", + "gpt-5", + "gpt-5-1", + "gpt-5-2", + "gpt-5-4", + "gpt-5-5", + "gpt-5-6-sol" + ] + }, + { + "id": "gpt-mini-terra", + "name": "GPT mini(Terra)", + "modelIds": [ + "gpt-4o-mini", + "gpt-4-1-mini", + "gpt-5-mini", + "gpt-5-1-codex-mini", + "gpt-5-4-mini", + "gpt-5-6-terra" + ] + }, + { + "id": "gpt-nano-luna", + "name": "GPT nano(Luna)", + "modelIds": ["gpt-4-1-nano", "gpt-5-nano", "gpt-5-4-nano", "gpt-5-6-luna"] + }, + { + "id": "gpt-codex", + "name": "GPT Codex", + "modelIds": ["gpt-5-codex", "gpt-5-1-codex", "gpt-5-2-codex", "gpt-5-3-codex"] + }, + { + "id": "o-mini", + "name": "o mini", + "modelIds": ["o3-mini", "o4-mini"] + }, + { + "id": "o-series", + "name": "o-series", + "modelIds": ["o3"] + } + ], "description": "A leading AI research company focused on developing safe and beneficial artificial general intelligence.", "translations": { "zh-Hans": { diff --git a/manifests/vendors/tencent.json b/manifests/vendors/tencent.json index d617837c..a52384b3 100644 --- a/manifests/vendors/tencent.json +++ b/manifests/vendors/tencent.json @@ -2,6 +2,17 @@ "$schema": "../$schemas/vendor.schema.json", "id": "tencent", "name": "Tencent", + "themeColor": { + "light": "#0052A3", + "dark": "#66B3FF" + }, + "modelSeries": [ + { + "id": "hunyuan", + "name": "Hunyuan", + "modelIds": ["hy3"] + } + ], "description": "World's largest video game vendor and technology conglomerate offering social networks, messaging (WeChat/QQ), cloud services, payment systems, and AI technology.", "translations": { "zh-Hans": { diff --git a/manifests/vendors/xai.json b/manifests/vendors/xai.json index 137c77be..4f5827c2 100644 --- a/manifests/vendors/xai.json +++ b/manifests/vendors/xai.json @@ -6,6 +6,23 @@ "light": "#4A4A4A", "dark": "#A3A3A3" }, + "modelSeries": [ + { + "id": "grok", + "name": "Grok", + "modelIds": ["grok-4", "grok-4-20", "grok-4-3", "grok-4-5"] + }, + { + "id": "grok-code", + "name": "Grok Code", + "modelIds": ["grok-code-fast-1"] + }, + { + "id": "grok-fast", + "name": "Grok Fast", + "modelIds": ["grok-4-fast", "grok-4-1-fast"] + } + ], "description": "AI company advancing scientific discovery and understanding of the universe, creator of Grok AI models and the world's largest AI supercomputer, Colossus.", "translations": { "zh-Hans": { diff --git a/manifests/vendors/xiaomi.json b/manifests/vendors/xiaomi.json new file mode 100644 index 00000000..0595cb4f --- /dev/null +++ b/manifests/vendors/xiaomi.json @@ -0,0 +1,88 @@ +{ + "$schema": "../$schemas/vendor.schema.json", + "id": "xiaomi", + "name": "Xiaomi", + "themeColor": { + "light": "#E85D00", + "dark": "#FF7A1A" + }, + "modelSeries": [ + { + "id": "mimo-pro", + "name": "MiMo Pro", + "modelIds": ["mimo-v2-5-pro"] + }, + { + "id": "mimo", + "name": "MiMo", + "modelIds": ["mimo-v2-5"] + }, + { + "id": "mimo-flash", + "name": "MiMo Flash", + "modelIds": ["mimo-v2-flash"] + } + ], + "description": "A global technology company developing smartphones, connected devices, intelligent systems, and the Xiaomi MiMo family of AI models.", + "translations": { + "de": { + "description": "Ein globales Technologieunternehmen, das Smartphones, vernetzte Geräte, intelligente Systeme und die Xiaomi-MiMo-Familie von AI-Modellen entwickelt." + }, + "es": { + "description": "Empresa tecnológica global que desarrolla teléfonos, dispositivos conectados, sistemas inteligentes y la familia de modelos de IA Xiaomi MiMo." + }, + "fr": { + "description": "Entreprise technologique mondiale développant des smartphones, des appareils connectés, des systèmes intelligents et la famille de modèles d’IA Xiaomi MiMo." + }, + "id": { + "description": "Perusahaan teknologi global yang mengembangkan ponsel, perangkat terhubung, sistem cerdas, dan keluarga model AI Xiaomi MiMo." + }, + "ja": { + "description": "スマートフォン、コネクテッドデバイス、インテリジェントシステム、Xiaomi MiMo AIモデル群を開発するグローバルテクノロジー企業。" + }, + "ko": { + "description": "스마트폰, 연결형 기기, 지능형 시스템과 Xiaomi MiMo AI 모델 제품군을 개발하는 글로벌 기술 기업입니다." + }, + "pt": { + "description": "Empresa global de tecnologia que desenvolve smartphones, dispositivos conectados, sistemas inteligentes e a família de modelos de IA Xiaomi MiMo." + }, + "ru": { + "description": "Глобальная технологическая компания, разрабатывающая смартфоны, подключённые устройства, интеллектуальные системы и семейство AI-моделей Xiaomi MiMo." + }, + "tr": { + "description": "Akıllı telefonlar, bağlantılı cihazlar, akıllı sistemler ve Xiaomi MiMo AI model ailesini geliştiren küresel bir teknoloji şirketi." + }, + "zh-Hans": { + "description": "开发智能手机、互联设备、智能系统和 Xiaomi MiMo AI 模型系列的全球科技公司。" + }, + "zh-Hant": { + "description": "開發智慧型手機、互聯裝置、智慧系統和 Xiaomi MiMo AI 模型系列的全球科技公司。" + } + }, + "verified": true, + "sources": [ + { + "url": "https://mimo.xiaomi.com/", + "title": "Xiaomi MiMo official website", + "fields": ["name", "description", "websiteUrl"] + }, + { + "url": "https://github.com/XiaomiMiMo", + "title": "Xiaomi MiMo official GitHub organization", + "fields": ["communityUrls.github"] + } + ], + "lastVerifiedAt": "2026-07-27", + "verifiedBy": "codex-agent", + "confidence": "high", + "websiteUrl": "https://mimo.xiaomi.com/", + "communityUrls": { + "linkedin": null, + "twitter": null, + "github": "https://github.com/XiaomiMiMo", + "youtube": null, + "discord": null, + "reddit": null, + "blog": null + } +} diff --git a/manifests/vendors/z-ai.json b/manifests/vendors/z-ai.json index 9fe7c2f0..183175ee 100644 --- a/manifests/vendors/z-ai.json +++ b/manifests/vendors/z-ai.json @@ -7,6 +7,28 @@ "light": "#334155", "dark": "#94A3B8" }, + "modelSeries": [ + { + "id": "glm", + "name": "GLM", + "modelIds": ["glm-4-5", "glm-4-6", "glm-4-7", "glm-5", "glm-5-1", "glm-5-2"] + }, + { + "id": "glm-air-flash", + "name": "GLM Air / Flash", + "modelIds": ["glm-4-5-air", "glm-4-7-flash"] + }, + { + "id": "glm-vision", + "name": "GLM Vision", + "modelIds": ["glm-4-5v", "glm-4-6v", "glm-5v-turbo"] + }, + { + "id": "glm-turbo", + "name": "GLM Turbo", + "modelIds": ["glm-5-turbo"] + } + ], "description": "An AI platform offering advanced language models and AI services for various applications including coding and content generation.", "translations": { "zh-Hans": { diff --git a/src/app/[locale]/curated-collections/page.tsx b/src/app/[locale]/curated-collections/page.tsx index 9cd89981..f921440c 100644 --- a/src/app/[locale]/curated-collections/page.tsx +++ b/src/app/[locale]/curated-collections/page.tsx @@ -12,12 +12,11 @@ import type { LocalePageProps } from '@/types/locale' export async function generateMetadata({ params }: LocalePageProps) { const { locale } = await params const tPage = await getTranslations({ locale, namespace: 'pages.curatedCollections' }) - const tShared = await getTranslations({ locale, namespace: 'shared' }) const title = buildTitle({ - title: `${tShared('terms.curatedCollections')} - AI Coding Specs, Protocols & Tools`, + title: tPage('meta.title'), }) - const description = tPage('subtitle') + const description = tPage('meta.description') return generateStaticPageMetadata({ locale: locale as Locale, diff --git a/src/app/[locale]/model-intelligence-index/page.client.tsx b/src/app/[locale]/model-intelligence-index/page.client.tsx index 05430bd9..d53dff78 100644 --- a/src/app/[locale]/model-intelligence-index/page.client.tsx +++ b/src/app/[locale]/model-intelligence-index/page.client.tsx @@ -3,7 +3,6 @@ import { ArrowDown, ArrowUp, ArrowUpDown } from 'lucide-react' import { useTranslations } from 'next-intl' import { useEffect, useMemo, useRef, useState } from 'react' -import type { LabelProps } from 'recharts' import { CartesianGrid, LabelList, @@ -15,6 +14,11 @@ import { XAxis, YAxis, } from 'recharts' +import { + estimateModelChartLabelWidth, + ModelChartLabel, + ModelChartPoint, +} from '@/components/charts/ModelChartLabel' import { useTheme } from '@/components/ThemeProvider' import { Link } from '@/i18n/navigation' import type { @@ -95,15 +99,6 @@ const MODEL_LABEL_CANDIDATES: ModelLabelPlacement[] = [ ), ] -function estimateLabelWidth(label: string): number { - const width = Array.from(label).reduce( - (total, character) => total + (character.codePointAt(0)! > 0xff ? 10 : 6.5), - 0 - ) - - return Math.min(Math.max(width, 24), 180) -} - function getLabelBox( pointX: number, pointY: number, @@ -169,7 +164,7 @@ function createModelLabelPlacements( for (const point of orderedPoints) { const pointX = ((point.timestamp - xMin) / xRange) * layoutWidth const pointY = (1 - point.score / scoreRange) * LABEL_LAYOUT_HEIGHT - const labelWidth = estimateLabelWidth(point.name) + const labelWidth = estimateModelChartLabelWidth(point.name) let bestCandidate = DEFAULT_MODEL_LABEL_PLACEMENT let bestBox = getLabelBox(pointX, pointY, labelWidth, bestCandidate) let bestPenalty = Number.POSITIVE_INFINITY @@ -210,49 +205,6 @@ function formatDate(value: string | number, locale: string, includeDay = false): }).format(date) } -function ModelPointLabel({ - value, - viewBox, - placement, -}: LabelProps & { placement: ModelLabelPlacement }) { - if (!viewBox || !('x' in viewBox) || !('y' in viewBox)) return - - const pointX = viewBox.x + ('width' in viewBox ? (viewBox.width ?? 0) / 2 : 0) - const pointY = viewBox.y + ('height' in viewBox ? (viewBox.height ?? 0) / 2 : 0) - const x = pointX + placement.dx - const y = pointY + placement.dy - const showLeader = Math.abs(placement.dy) > 20 || Math.abs(placement.dx) > 12 - - return ( - - {showLeader && ( - - )} - - {String(value)} - - - ) -} - function SeriesMarker({ marker, color }: { marker: ModelIntelligenceMarker; color: string }) { return } @@ -267,6 +219,7 @@ export function ModelIntelligenceIndexPage({ const tShared = useTranslations('shared') const { theme } = useTheme() const [selectedVendors, setSelectedVendors] = useState([]) + const [selectedSeries, setSelectedSeries] = useState([]) const chartContainerRef = useRef(null) const [labelLayoutWidth, setLabelLayoutWidth] = useState(MIN_CHART_WIDTH - CHART_HORIZONTAL_INSET) const [sort, setSort] = useState<{ field: SortField; direction: SortDirection }>({ @@ -290,21 +243,37 @@ export function ModelIntelligenceIndexPage({ }, [points]) const selectedVendorSet = useMemo(() => new Set(selectedVendors), [selectedVendors]) + const selectedSeriesSet = useMemo(() => new Set(selectedSeries), [selectedSeries]) const showAllVendors = selectedVendors.length === 0 + const showAllSeries = selectedSeries.length === 0 + const showAllFilters = showAllVendors && showAllSeries const visibleSeries = useMemo( - () => (showAllVendors ? series : series.filter(item => selectedVendorSet.has(item.vendor))), + () => + series.filter( + item => + (showAllVendors || selectedVendorSet.has(item.vendor)) && + (showAllSeries || selectedSeriesSet.has(item.id)) + ), + [selectedSeriesSet, selectedVendorSet, series, showAllSeries, showAllVendors] + ) + const visibleSeriesSet = useMemo( + () => new Set(visibleSeries.map(item => item.id)), + [visibleSeries] + ) + const selectedVendorSeries = useMemo( + () => (showAllVendors ? [] : series.filter(item => selectedVendorSet.has(item.vendor))), [selectedVendorSet, series, showAllVendors] ) const visiblePoints = useMemo( - () => (showAllVendors ? points : points.filter(point => selectedVendorSet.has(point.vendor))), - [points, selectedVendorSet, showAllVendors] + () => points.filter(point => visibleSeriesSet.has(`${point.vendor}:${point.seriesId}`)), + [points, visibleSeriesSet] ) const labelPlacements = useMemo( () => - showAllVendors + showAllFilters ? new Map() : createModelLabelPlacements(visiblePoints, xDomain, yMax, labelLayoutWidth), - [visiblePoints, xDomain, yMax, labelLayoutWidth, showAllVendors] + [visiblePoints, xDomain, yMax, labelLayoutWidth, showAllFilters] ) useEffect(() => { @@ -352,13 +321,38 @@ export function ModelIntelligenceIndexPage({ return Array.from(grouped.entries()) }, [series]) + const smallGridRemainder = seriesByVendor.length % 2 + const smallLastRowStart = + seriesByVendor.length - (smallGridRemainder === 0 ? 2 : smallGridRemainder) + const largeGridRemainder = seriesByVendor.length % 4 + const largeLastRowStart = + seriesByVendor.length - (largeGridRemainder === 0 ? 4 : largeGridRemainder) function toggleVendor(vendor: string) { + const isSelected = selectedVendorSet.has(vendor) + setSelectedVendors(current => current.includes(vendor) ? current.filter(selectedVendor => selectedVendor !== vendor) : [...current, vendor] ) + + if (isSelected) { + setSelectedSeries(current => current.filter(seriesId => !seriesId.startsWith(`${vendor}:`))) + } + } + + function toggleSeries(seriesId: string) { + setSelectedSeries(current => + current.includes(seriesId) + ? current.filter(selectedSeriesId => selectedSeriesId !== seriesId) + : [...current, seriesId] + ) + } + + function clearVendorFilters() { + setSelectedVendors([]) + setSelectedSeries([]) } function toggleSort(field: SortField) { @@ -505,10 +499,10 @@ export function ModelIntelligenceIndexPage({ strokeDasharray: item.dash ?? undefined, }} lineType="joint" - shape={item.marker} + shape={} isAnimationActive={false} > - {!showAllVendors && ( + {!showAllFilters && ( { @@ -517,7 +511,15 @@ export function ModelIntelligenceIndexPage({ (point && labelPlacements.get(point.modelId)) ?? DEFAULT_MODEL_LABEL_PLACEMENT - return + if (!point) return + + return ( + + ) }} /> )} @@ -530,36 +532,87 @@ export function ModelIntelligenceIndexPage({
{tPage('filter.label')} -
- - {tPage('filter.label')} - - +
+
+ + {tPage('filter.seriesLabel')} + + {selectedVendorSeries.map(item => { + const isSelected = selectedSeriesSet.has(item.id) + + return ( + + ) + })} +
+ +
+ + {tPage('filter.label')} + + +
- {seriesByVendor.map(([vendor, vendorSeries]) => { + {seriesByVendor.map(([vendor, vendorSeries], vendorIndex) => { const isSelected = selectedVendorSet.has(vendor) + const isLastVendor = vendorIndex === seriesByVendor.length - 1 + const isInSmallLastRow = vendorIndex >= smallLastRowStart + const isInLargeLastRow = vendorIndex >= largeLastRowStart return ( + ))} +
+
+ + +
+ {tPage('filter.label')} +
+ + {tPage('filter.label')} + + +
+ +
+ {pointsByVendor.map(([vendor, vendorPoints], vendorIndex) => { + const isSelected = selectedVendorSet.has(vendor) + const isLastVendor = vendorIndex === pointsByVendor.length - 1 + const isInSmallLastRow = vendorIndex >= smallLastRowStart + const isInLargeLastRow = vendorIndex >= largeLastRowStart + + return ( + + ) + })} +
+
+ + +
+
+
+

+ {tPage('list.title')} +

+

+ {tPage('list.description')} +

+
+
+ 0—{meta.maxScore} +
+
+ +
+ + + + + + + + + + + + + {rankedPoints.map(point => ( + + + + + + + + ))} + +
{tPage('list.title')}
+ {tShared('categories.singular.model')} + + + + + + + + +
+ + {point.name} + +
+ {point.vendor} +
+
+ {formatPriceValue(point.inputPrice, locale)} + + {formatPriceValue(point.outputPrice, locale)} + + {formatPriceValue(point.blendedPrice, locale)} + +
+ + {point.score} + {point.estimated ? '*' : ''} + +
+
+
+
+
+
+
+ + + + ) +} diff --git a/src/app/[locale]/model-price-intelligence-index/page.tsx b/src/app/[locale]/model-price-intelligence-index/page.tsx new file mode 100644 index 00000000..32ee6c9d --- /dev/null +++ b/src/app/[locale]/model-price-intelligence-index/page.tsx @@ -0,0 +1,57 @@ +import { getTranslations } from 'next-intl/server' +import Footer from '@/components/Footer' +import Header from '@/components/Header' +import PageHeader from '@/components/PageHeader' +import type { Locale } from '@/i18n/config' +import { buildTitle, generateStaticPageMetadata } from '@/lib/metadata' +import { + modelPriceIntelligenceMeta, + modelPriceIntelligencePoints, +} from '@/lib/model-price-intelligence-index' +import { ModelPriceIntelligenceIndexPage } from './page.client' + +export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }) { + const { locale } = await params + const tPage = await getTranslations({ + locale, + namespace: 'pages.modelPriceIntelligenceIndex.meta', + }) + + return generateStaticPageMetadata({ + locale: locale as Locale, + basePath: 'model-price-intelligence-index', + title: buildTitle({ title: tPage('title') }), + description: tPage('description'), + keywords: tPage('keywords'), + ogType: 'website', + }) +} + +type Props = { + params: Promise<{ locale: string }> +} + +export default async function Page({ params }: Props) { + const { locale } = await params + const tPage = await getTranslations({ + locale, + namespace: 'pages.modelPriceIntelligenceIndex', + }) + + return ( + <> +
+
+
+ + +
+
+