From 342fe2e0dc0f8e7fed30aaa0c547e350da5ed931 Mon Sep 17 00:00:00 2001 From: Pan YANG Date: Fri, 31 Jul 2026 09:18:56 +0800 Subject: [PATCH 1/6] fix(rankings): refine model series line styles --- manifests/vendors/mistral-ai.json | 27 +++++++++------ src/lib/model-intelligence-index.ts | 2 +- tests/model-intelligence-index.test.ts | 47 +++++++++++++++++++------- 3 files changed, 52 insertions(+), 24 deletions(-) diff --git a/manifests/vendors/mistral-ai.json b/manifests/vendors/mistral-ai.json index bdfc6e9a..f8b40649 100644 --- a/manifests/vendors/mistral-ai.json +++ b/manifests/vendors/mistral-ai.json @@ -9,18 +9,23 @@ }, "modelSeries": [ { - "id": "devstral", - "name": "Devstral", - "modelIds": ["devstral-2", "devstral-small-2"] + "id": "devstral-2", + "name": "Devstral 2", + "modelIds": ["devstral-2"] }, { - "id": "mistral-medium", - "name": "Mistral Medium", + "id": "devstral-small-2", + "name": "Devstral Small 2", + "modelIds": ["devstral-small-2"] + }, + { + "id": "mistral-medium-3-5", + "name": "Mistral Medium 3.5", "modelIds": ["mistral-medium-3-5"] }, { - "id": "mistral-small", - "name": "Mistral Small", + "id": "mistral-small-4", + "name": "Mistral Small 4", "modelIds": ["mistral-small-4"] } ], @@ -68,9 +73,9 @@ "fields": ["name", "description", "websiteUrl"] }, { - "url": "https://mistral.ai/models/", - "title": "Mistral models", - "fields": ["description"] + "url": "https://docs.mistral.ai/models", + "title": "Mistral model catalog", + "fields": ["description", "modelSeries"] }, { "url": "https://github.com/mistralai", @@ -83,7 +88,7 @@ "fields": ["communityUrls.blog"] } ], - "lastVerifiedAt": "2026-07-21", + "lastVerifiedAt": "2026-07-30", "verifiedBy": "codex", "confidence": "high", "websiteUrl": "https://mistral.ai", diff --git a/src/lib/model-intelligence-index.ts b/src/lib/model-intelligence-index.ts index 78c2bac5..23d8c467 100644 --- a/src/lib/model-intelligence-index.ts +++ b/src/lib/model-intelligence-index.ts @@ -158,7 +158,7 @@ const sortedSeries = Array.from(groupedSeries.values()) ) const seriesIndexByVendor = new Map() -const DASH_PATTERNS = [null, '6 4', '10 4 2 4', '2 4'] +const DASH_PATTERNS = [null, '6 4', '2 4', '10 4 2 4'] const MARKERS: ModelIntelligenceMarker[] = [ 'circle', 'square', diff --git a/tests/model-intelligence-index.test.ts b/tests/model-intelligence-index.test.ts index d17d75ce..03321d19 100644 --- a/tests/model-intelligence-index.test.ts +++ b/tests/model-intelligence-index.test.ts @@ -150,7 +150,7 @@ describe('model intelligence index', () => { }) it('assigns each vendor series the shared line-style priority', () => { - const expectedDashPatterns = [null, '6 4', '10 4 2 4', '2 4'] + const expectedDashPatterns = [null, '6 4', '2 4', '10 4 2 4'] const seriesByVendor = new Map() for (const series of modelIntelligenceSeries) { @@ -181,8 +181,8 @@ describe('model intelligence index', () => { expect(qwenSeries.map(series => [series.marker, series.dash])).toEqual([ ['circle', null], ['square', '6 4'], - ['triangle', '10 4 2 4'], - ['diamond', '2 4'], + ['triangle', '2 4'], + ['diamond', '10 4 2 4'], ]) expect( allModelIntelligencePoints @@ -203,8 +203,8 @@ describe('model intelligence index', () => { expect(claudeSeries.map(series => [series.marker, series.dash])).toEqual([ ['circle', null], ['square', '6 4'], - ['triangle', '10 4 2 4'], - ['diamond', '2 4'], + ['triangle', '2 4'], + ['diamond', '10 4 2 4'], ]) }) @@ -219,7 +219,7 @@ describe('model intelligence index', () => { expect(openAISeries.slice(0, 3).map(series => [series.marker, series.dash])).toEqual([ ['circle', null], ['square', '6 4'], - ['triangle', '10 4 2 4'], + ['triangle', '2 4'], ]) }) @@ -256,8 +256,8 @@ describe('model intelligence index', () => { expect(geminiSeries.map(series => [series.marker, series.dash])).toEqual([ ['circle', null], ['square', '6 4'], - ['triangle', '10 4 2 4'], - ['diamond', '2 4'], + ['triangle', '2 4'], + ['diamond', '10 4 2 4'], ]) }) @@ -273,7 +273,30 @@ describe('model intelligence index', () => { expect(mimoSeries.map(series => [series.marker, series.dash])).toEqual([ ['circle', null], ['square', '6 4'], - ['triangle', '10 4 2 4'], + ['triangle', '2 4'], + ]) + }) + + it('keeps each Mistral model in its own series', () => { + const mistralSeries = modelIntelligenceSeries.filter(series => series.vendor === 'Mistral AI') + + expect(mistralSeries.map(series => series.name)).toEqual([ + 'Devstral 2', + 'Devstral Small 2', + 'Mistral Medium 3.5', + 'Mistral Small 4', + ]) + expect(mistralSeries.map(series => series.points.map(point => point.modelId))).toEqual([ + ['devstral-2'], + ['devstral-small-2'], + ['mistral-medium-3-5'], + ['mistral-small-4'], + ]) + expect(mistralSeries.map(series => [series.marker, series.dash])).toEqual([ + ['circle', null], + ['square', '6 4'], + ['triangle', '2 4'], + ['diamond', '10 4 2 4'], ]) }) @@ -284,7 +307,7 @@ describe('model intelligence index', () => { expect(tencentSeries[0]?.points.map(point => point.modelId)).toEqual(['hy3']) }) - it('connects GLM Air and Flash while keeping Vision on the dash-dot series', () => { + it('connects GLM Air and Flash while keeping Vision on the dotted series', () => { const glmSeries = modelIntelligenceSeries.filter(series => series.vendor === 'Z.ai') expect(glmSeries.map(series => series.name)).toEqual([ @@ -296,8 +319,8 @@ describe('model intelligence index', () => { expect(glmSeries.map(series => [series.marker, series.dash])).toEqual([ ['circle', null], ['square', '6 4'], - ['triangle', '10 4 2 4'], - ['diamond', '2 4'], + ['triangle', '2 4'], + ['diamond', '10 4 2 4'], ]) expect(glmSeries[1]?.points.map(point => point.modelId)).toEqual([ 'glm-4-5-air', From 1d78d12de3fd208add4b98d798d977eb283e166d Mon Sep 17 00:00:00 2001 From: Pan YANG Date: Fri, 31 Jul 2026 09:19:49 +0800 Subject: [PATCH 2/6] feat(catalog): complete product pricing and provenance --- data/data-health.json | 98 ++++-------- data/github-stars.json | 24 +-- docs/DATA-HEALTH.md | 42 ++--- manifests/clis/amazon-q-developer-cli.json | 25 +-- manifests/clis/amp-cli.json | 31 +++- manifests/clis/antigravity-cli.json | 27 +++- manifests/clis/auggie-cli.json | 131 +++++++++++++++ manifests/clis/augment-code-cli.json | 125 --------------- manifests/clis/cline-cli.json | 32 +++- manifests/clis/codebuddy-cli.json | 25 ++- manifests/clis/codex-cli.json | 12 +- manifests/clis/continue-cli.json | 11 +- manifests/clis/cursor-cli.json | 10 +- manifests/clis/droid-cli.json | 21 ++- manifests/clis/gemini-cli.json | 41 +++-- manifests/clis/github-copilot-cli.json | 19 ++- manifests/clis/gitlab-duo-cli.json | 32 +++- manifests/clis/junie-cli.json | 11 +- manifests/clis/kiro-cli.json | 29 +++- manifests/clis/mistral-vibe-cli.json | 138 ---------------- manifests/clis/opencode.json | 5 + manifests/clis/qoder-cli.json | 33 ++-- manifests/clis/rovo-dev-cli.json | 12 +- manifests/clis/vibe-cli.json | 149 ++++++++++++++++++ manifests/desktops/claude-code-desktop.json | 37 ++++- manifests/desktops/codex-app.json | 18 ++- manifests/desktops/factory-desktop.json | 18 ++- manifests/desktops/minimax-code.json | 40 +++-- manifests/desktops/opencode-desktop.json | 8 +- manifests/desktops/qoder.json | 10 +- manifests/desktops/stagewise.json | 3 +- manifests/desktops/verdent-deck.json | 47 +++++- manifests/desktops/workbuddy.json | 63 +++++++- manifests/desktops/zcode.json | 3 +- manifests/extensions/amp.json | 33 ++-- manifests/extensions/augment-code.json | 21 +-- manifests/extensions/cline.json | 12 +- manifests/extensions/codex.json | 18 ++- manifests/extensions/continue.json | 11 +- manifests/extensions/droid.json | 19 ++- manifests/extensions/github-copilot.json | 37 ++++- manifests/extensions/jetbrains-junie.json | 52 ++++-- manifests/extensions/kimi-code.json | 3 +- manifests/extensions/mistral-vibe.json | 11 +- manifests/extensions/opencode-extension.json | 8 +- manifests/extensions/qoder.json | 35 +++- manifests/extensions/roo-code.json | 11 +- manifests/extensions/rovo-dev.json | 25 ++- manifests/extensions/tabnine.json | 36 ++--- manifests/extensions/verdent.json | 48 +++++- manifests/ides/antigravity.json | 38 +++-- manifests/ides/codebuddy.json | 16 +- manifests/ides/cursor.json | 10 +- manifests/ides/intellij-idea.json | 10 +- manifests/ides/kiro.json | 17 +- manifests/ides/trae.json | 11 +- manifests/ides/vscode.json | 2 +- manifests/ides/windsurf.json | 30 +++- manifests/ides/zed.json | 23 ++- .../[locale]/clis/comparison/page.client.tsx | 17 +- .../extensions/comparison/page.client.tsx | 17 +- .../[locale]/ides/comparison/page.client.tsx | 17 +- src/components/product/ProductPricing.tsx | 62 +++++++- src/lib/generated/clis.ts | 8 +- src/lib/pricing.ts | 42 +++++ tests/pricing.test.ts | 50 ++++++ .../validate/githubStars.consistency.test.ts | 24 ++- translations/de/components/product.json | 12 +- translations/de/pages/comparison.json | 4 - translations/en/components/product.json | 12 +- translations/en/pages/comparison.json | 4 - translations/es/components/product.json | 12 +- translations/es/pages/comparison.json | 4 - translations/fr/components/product.json | 12 +- translations/fr/pages/comparison.json | 4 - translations/id/components/product.json | 12 +- translations/id/pages/comparison.json | 4 - translations/ja/components/product.json | 12 +- translations/ja/pages/comparison.json | 4 - translations/ko/components/product.json | 12 +- translations/ko/pages/comparison.json | 4 - translations/pt/components/product.json | 12 +- translations/pt/pages/comparison.json | 4 - translations/ru/components/product.json | 12 +- translations/ru/pages/comparison.json | 4 - translations/tr/components/product.json | 12 +- translations/tr/pages/comparison.json | 4 - translations/zh-Hans/components/product.json | 12 +- translations/zh-Hans/pages/comparison.json | 4 - translations/zh-Hant/components/product.json | 12 +- translations/zh-Hant/pages/comparison.json | 4 - 91 files changed, 1575 insertions(+), 721 deletions(-) create mode 100644 manifests/clis/auggie-cli.json delete mode 100644 manifests/clis/augment-code-cli.json delete mode 100644 manifests/clis/mistral-vibe-cli.json create mode 100644 manifests/clis/vibe-cli.json create mode 100644 tests/pricing.test.ts diff --git a/data/data-health.json b/data/data-health.json index 7d6a1678..919f8490 100644 --- a/data/data-health.json +++ b/data/data-health.json @@ -11,45 +11,45 @@ }, "summary": { "totalRecords": 242, - "recordsWithSources": 231, - "verifiedRecords": 176, - "provenanceComplete": 176, + "recordsWithSources": 235, + "verifiedRecords": 215, + "provenanceComplete": 215, "staleVerifiedRecords": 0, "translationPlaceholderValues": 1190, "danglingRelationships": 0, "modelBenchmarkCoverage": 9.5, - "productsWithPricing": 63, + "productsWithPricing": 67, "productRecords": 67, "communityUrlsPopulated": 302, "communityUrlsWithProvenance": 302, "duplicatedVendorCommunityUrls": 0, "errors": 0, "warnings": 0, - "info": 11 + "info": 7 }, "byCategory": { "ides": { "total": 9, - "verified": 0, - "provenanceComplete": 0, + "verified": 7, + "provenanceComplete": 7, "stale": 0 }, "clis": { "total": 27, - "verified": 5, - "provenanceComplete": 5, + "verified": 18, + "provenanceComplete": 18, "stale": 0 }, "desktops": { "total": 12, - "verified": 0, - "provenanceComplete": 0, + "verified": 7, + "provenanceComplete": 7, "stale": 0 }, "extensions": { "total": 19, - "verified": 5, - "provenanceComplete": 5, + "verified": 17, + "provenanceComplete": 17, "stale": 0 }, "models": { @@ -73,90 +73,62 @@ }, "translationsByLocale": { "de": { - "totalStrings": 416, + "totalStrings": 423, "matchingEnglish": 106, - "matchingEnglishPercent": 25.5 + "matchingEnglishPercent": 25.1 }, "es": { - "totalStrings": 416, + "totalStrings": 423, "matchingEnglish": 98, - "matchingEnglishPercent": 23.6 + "matchingEnglishPercent": 23.2 }, "fr": { - "totalStrings": 416, + "totalStrings": 423, "matchingEnglish": 108, - "matchingEnglishPercent": 26 + "matchingEnglishPercent": 25.5 }, "id": { - "totalStrings": 416, + "totalStrings": 423, "matchingEnglish": 142, - "matchingEnglishPercent": 34.1 + "matchingEnglishPercent": 33.6 }, "ja": { - "totalStrings": 416, + "totalStrings": 423, "matchingEnglish": 100, - "matchingEnglishPercent": 24 + "matchingEnglishPercent": 23.6 }, "ko": { - "totalStrings": 416, + "totalStrings": 423, "matchingEnglish": 108, - "matchingEnglishPercent": 26 + "matchingEnglishPercent": 25.5 }, "pt": { - "totalStrings": 416, + "totalStrings": 423, "matchingEnglish": 108, - "matchingEnglishPercent": 26 + "matchingEnglishPercent": 25.5 }, "ru": { - "totalStrings": 416, + "totalStrings": 423, "matchingEnglish": 117, - "matchingEnglishPercent": 28.1 + "matchingEnglishPercent": 27.7 }, "tr": { - "totalStrings": 416, + "totalStrings": 423, "matchingEnglish": 119, - "matchingEnglishPercent": 28.6 + "matchingEnglishPercent": 28.1 }, "zh-Hans": { - "totalStrings": 416, + "totalStrings": 423, "matchingEnglish": 92, - "matchingEnglishPercent": 22.1 + "matchingEnglishPercent": 21.7 }, "zh-Hant": { - "totalStrings": 416, + "totalStrings": 423, "matchingEnglish": 92, - "matchingEnglishPercent": 22.1 + "matchingEnglishPercent": 21.7 } }, "issues": [ - { - "severity": "info", - "code": "missing-sources", - "category": "clis", - "id": "droid-cli", - "message": "No structured source references are recorded." - }, - { - "severity": "info", - "code": "missing-sources", - "category": "extensions", - "id": "cline", - "message": "No structured source references are recorded." - }, - { - "severity": "info", - "code": "missing-sources", - "category": "extensions", - "id": "tabnine", - "message": "No structured source references are recorded." - }, - { - "severity": "info", - "code": "missing-sources", - "category": "ides", - "id": "zed", - "message": "No structured source references are recorded." - }, { "severity": "info", "code": "missing-sources", diff --git a/data/github-stars.json b/data/github-stars.json index 2e17b0ad..1556f213 100644 --- a/data/github-stars.json +++ b/data/github-stars.json @@ -3,20 +3,20 @@ "amp": null, "augment-code": null, "claude-code": 139.2, - "cline": 65.1, - "codex": null, + "cline": 65.3, + "codex": 102.6, "continue": 35.1, "droid": null, "gemini-code-assist": null, "github-copilot": null, - "jetbrains-junie": null, + "jetbrains-junie": 0.3, "kilo-code": 26.5, "kimi-code": 5.2, "mistral-vibe": null, "opencode-extension": 190, "qoder": null, "roo-code": 24.4, - "rovo-dev": null, + "rovo-dev": 0.1, "tabnine": 10.8, "verdent": 0 }, @@ -24,11 +24,11 @@ "amazon-q-developer-cli": 2, "amp-cli": null, "antigravity-cli": 1.7, - "augment-code-cli": 0.3, + "auggie-cli": 0.3, "claude-code-cli": 139.2, - "cline-cli": null, + "cline-cli": 65.3, "codebuddy-cli": null, - "codex-cli": 101.7, + "codex-cli": 102.6, "continue-cli": 35.1, "cursor-cli": 33.1, "droid-cli": null, @@ -36,12 +36,12 @@ "github-copilot-cli": 11, "gitlab-duo-cli": null, "grok-build": 22.8, - "junie-cli": null, + "junie-cli": 0.3, "kilo-code-cli": 26.5, "kimi-cli": 5.2, "kiro-cli": 4.1, "kode": 5.2, - "mistral-vibe-cli": null, + "vibe-cli": 4.8, "neovate-code": 1.6, "omp": 19.9, "opencode": 190, @@ -52,9 +52,9 @@ "desktops": { "air": null, "claude-code-desktop": 139.2, - "codex-app": null, + "codex-app": 102.6, "factory-desktop": null, - "minimax-code": null, + "minimax-code": 0, "opencode-desktop": 190, "qoder": null, "stagewise": 6.8, @@ -69,7 +69,7 @@ "cursor": 33.1, "intellij-idea": 20.4, "kiro": 4.1, - "trae": null, + "trae": 0.9, "vscode": 187.9, "windsurf": null, "zed": 87.6 diff --git a/docs/DATA-HEALTH.md b/docs/DATA-HEALTH.md index 954258d0..99ae456c 100644 --- a/docs/DATA-HEALTH.md +++ b/docs/DATA-HEALTH.md @@ -7,26 +7,26 @@ Snapshot date: 2026-07-30. Regenerate with `pnpm data-health:report`. | Metric | Value | | --- | ---: | | Manifest records | 242 | -| Records with structured sources | 231 | -| Verified records | 176 | -| Verified with complete provenance | 176 | +| Records with structured sources | 235 | +| Verified records | 215 | +| Verified with complete provenance | 215 | | Stale verified records | 0 | | Non-English values identical to English | 1190 | | Dangling product relationships | 0 | | Model benchmark coverage | 9.5% | -| Products with pricing | 63/67 | +| Products with pricing | 67/67 | | Community URLs with provenance | 302/302 | | Duplicated vendor community URLs | 0 | -| Errors / warnings / info | 0 / 0 / 11 | +| Errors / warnings / info | 0 / 0 / 7 | ## Category Breakdown | Category | Total | Verified | Provenance complete | Stale | | --- | ---: | ---: | ---: | ---: | -| ides | 9 | 0 | 0 | 0 | -| clis | 27 | 5 | 5 | 0 | -| desktops | 12 | 0 | 0 | 0 | -| extensions | 19 | 5 | 5 | 0 | +| ides | 9 | 7 | 7 | 0 | +| clis | 27 | 18 | 18 | 0 | +| desktops | 12 | 7 | 7 | 0 | +| extensions | 19 | 17 | 17 | 0 | | models | 123 | 122 | 122 | 0 | | providers | 12 | 4 | 4 | 0 | | vendors | 40 | 40 | 40 | 0 | @@ -37,23 +37,23 @@ Exact English matches are a triage signal; product names and technical terms can | Locale | Comparable strings | Exact English matches | Match rate | | --- | ---: | ---: | ---: | -| de | 416 | 106 | 25.5% | -| es | 416 | 98 | 23.6% | -| fr | 416 | 108 | 26% | -| id | 416 | 142 | 34.1% | -| ja | 416 | 100 | 24% | -| ko | 416 | 108 | 26% | -| pt | 416 | 108 | 26% | -| ru | 416 | 117 | 28.1% | -| tr | 416 | 119 | 28.6% | -| zh-Hans | 416 | 92 | 22.1% | -| zh-Hant | 416 | 92 | 22.1% | +| de | 423 | 106 | 25.1% | +| es | 423 | 98 | 23.2% | +| fr | 423 | 108 | 25.5% | +| id | 423 | 142 | 33.6% | +| ja | 423 | 100 | 23.6% | +| ko | 423 | 108 | 25.5% | +| pt | 423 | 108 | 25.5% | +| ru | 423 | 117 | 27.7% | +| tr | 423 | 119 | 28.1% | +| zh-Hans | 423 | 92 | 21.7% | +| zh-Hant | 423 | 92 | 21.7% | ## Backlog by Issue Type | Issue | Count | | --- | ---: | -| missing-sources | 11 | +| missing-sources | 7 | ## Priority Queue diff --git a/manifests/clis/amazon-q-developer-cli.json b/manifests/clis/amazon-q-developer-cli.json index c3146263..a59904ea 100644 --- a/manifests/clis/amazon-q-developer-cli.json +++ b/manifests/clis/amazon-q-developer-cli.json @@ -38,7 +38,10 @@ "description": "Amazon Q Developer CLI 是您命令列中的智能 AI 助手,執行任務、理解您的程式碼庫,並透過自適應自然對話加速開發。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://aws.amazon.com/q/developer", "docsUrl": "https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line.html", "vendor": "AWS", @@ -54,24 +57,17 @@ "category": "Individual" }, { - "name": "Pay-per-use", - "value": null, + "name": "Pro Tier", + "value": 19, "currency": "USD", - "per": "request", + "per": "user/month", "category": "Individual" - }, - { - "name": "Enterprise", - "value": null, - "currency": null, - "per": "custom", - "category": "Enterprise" } ], "resourceUrls": { "download": "https://aws.amazon.com/developer/learning/q-developer-cli", "changelog": "https://github.com/aws/amazon-q-developer-cli/releases", - "pricing": "https://aws.amazon.com/q/pricing", + "pricing": "https://aws.amazon.com/q/developer/pricing", "mcp": null, "issue": "https://github.com/aws/amazon-q-developer-cli/issues" }, @@ -115,6 +111,11 @@ "url": "https://aws.amazon.com/blogs/aws", "title": "Amazon Q Developer CLI blog community", "fields": ["communityUrls.blog"] + }, + { + "url": "https://aws.amazon.com/q/developer/pricing", + "title": "Amazon Q Developer pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/clis/amp-cli.json b/manifests/clis/amp-cli.json index c930056f..62f65302 100644 --- a/manifests/clis/amp-cli.json +++ b/manifests/clis/amp-cli.json @@ -38,7 +38,10 @@ "description": "Sourcegraph 的前沿編碼 Agent,執行自主推理、程式碼編輯和複雜任務。提供 CLI 版本,並在 VS Code、Cursor 和 Windsurf 中可用。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://ampcode.com", "docsUrl": "https://ampcode.com", "vendor": "Sourcegraph", @@ -47,24 +50,31 @@ "license": "Proprietary", "pricing": [ { - "name": "Free", - "value": 0, - "currency": null, - "per": null, + "name": "Megawatt", + "value": 20, + "currency": "USD", + "per": "month", "category": "Individual" }, { - "name": "Pro", - "value": null, + "name": "Gigawatt", + "value": 200, "currency": "USD", "per": "month", "category": "Individual" }, + { + "name": "Pay-as-you-go", + "value": null, + "currency": "USD", + "per": "usage-based", + "category": "Individual" + }, { "name": "Enterprise", "value": null, "currency": null, - "per": "custom", + "per": "usage-based", "category": "Enterprise" } ], @@ -112,6 +122,11 @@ "url": "https://discord.com/invite/GT742pq9rS", "title": "Amp discord community", "fields": ["communityUrls.discord"] + }, + { + "url": "https://ampcode.com/pricing", + "title": "Amp pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/clis/antigravity-cli.json b/manifests/clis/antigravity-cli.json index 4a20fb31..f2281bf9 100644 --- a/manifests/clis/antigravity-cli.json +++ b/manifests/clis/antigravity-cli.json @@ -55,7 +55,13 @@ }, { "url": "https://antigravity.google/pricing", - "title": "Google Antigravity pricing" + "title": "Google Antigravity pricing", + "fields": ["pricing", "resourceUrls.pricing"] + }, + { + "url": "https://antigravity.google/blog/changes-to-antigravity-plans", + "title": "Changes to Antigravity plans", + "fields": ["pricing"] }, { "url": "https://developers.googleblog.com/an-important-update-transitioning-gemini-cli-to-antigravity-cli/", @@ -63,7 +69,7 @@ "fields": ["relatedProducts"] } ], - "lastVerifiedAt": "2026-07-22", + "lastVerifiedAt": "2026-07-30", "verifiedBy": "codex-agent", "confidence": "high", "websiteUrl": "https://antigravity.google/product/antigravity-cli", @@ -82,15 +88,22 @@ }, { "name": "Google AI Pro", - "value": null, - "currency": null, + "value": 20, + "currency": "USD", "per": "month", "category": "Individual" }, { - "name": "Google AI Ultra", - "value": null, - "currency": null, + "name": "Google AI Ultra 100", + "value": 100, + "currency": "USD", + "per": "month", + "category": "Individual" + }, + { + "name": "Google AI Ultra 200", + "value": 200, + "currency": "USD", "per": "month", "category": "Individual" }, diff --git a/manifests/clis/auggie-cli.json b/manifests/clis/auggie-cli.json new file mode 100644 index 00000000..ae6380a8 --- /dev/null +++ b/manifests/clis/auggie-cli.json @@ -0,0 +1,131 @@ +{ + "$schema": "../$schemas/cli.schema.json", + "id": "auggie-cli", + "name": "Auggie CLI", + "description": "Auggie CLI brings autonomous AI agents to your terminal with Augment's context engine. It provides a native TUI, automated workflows, and codebase-aware assistance.", + "translations": { + "zh-Hans": { + "description": "Auggie CLI 将自主 AI Agent 带到终端,并使用 Augment 的上下文引擎,提供原生 TUI、自动化工作流和代码库感知辅助。" + }, + "de": { + "description": "Auggie CLI bringt autonome AI-Agenten mit Augments Kontext-Engine ins Terminal und bietet eine native TUI, automatisierte Workflows und codebasisbezogene Unterstützung." + }, + "ko": { + "description": "Auggie CLI는 Augment의 컨텍스트 엔진을 사용하는 자율 AI 에이전트를 터미널에 제공하며 네이티브 TUI, 자동화된 워크플로 및 코드베이스 인식 지원을 제공합니다." + }, + "es": { + "description": "Auggie CLI lleva agentes de IA autónomos al terminal con el motor de contexto de Augment, una TUI nativa, flujos automatizados y asistencia basada en el código." + }, + "fr": { + "description": "Auggie CLI apporte des agents d’IA autonomes au terminal avec le moteur de contexte d’Augment, une interface TUI native, des workflows automatisés et une assistance tenant compte du code." + }, + "id": { + "description": "Auggie CLI menghadirkan agen AI otonom ke terminal dengan mesin konteks Augment, TUI native, alur kerja otomatis, dan bantuan yang memahami basis kode." + }, + "ja": { + "description": "Auggie CLIは、Augmentのコンテキストエンジンを使う自律型AIエージェントをターミナルに提供し、ネイティブTUI、自動ワークフロー、コードベース対応支援を備えています。" + }, + "pt": { + "description": "Auggie CLI leva agentes de IA autónomos ao terminal com o motor de contexto da Augment, TUI nativa, fluxos automatizados e assistência ciente da base de código." + }, + "ru": { + "description": "Auggie CLI переносит автономных ИИ-агентов в терминал с контекстным движком Augment, нативным TUI, автоматизированными процессами и учетом кодовой базы." + }, + "tr": { + "description": "Auggie CLI, Augment'ın bağlam motoruyla otonom AI ajanlarını terminale getirir; yerel TUI, otomatik iş akışları ve kod tabanı farkındalığı sunar." + }, + "zh-Hant": { + "description": "Auggie CLI 將自主 AI Agent 帶到終端,並使用 Augment 的上下文引擎,提供原生 TUI、自動化工作流程和程式碼庫感知輔助。" + } + }, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", + "websiteUrl": "https://www.augmentcode.com", + "docsUrl": "https://docs.augmentcode.com/cli", + "vendor": "Augment", + "latestVersion": "0.7.0", + "githubUrl": "https://github.com/augmentcode/auggie", + "license": "Proprietary", + "pricing": [ + { + "name": "Business", + "value": 100, + "currency": "USD", + "per": "month", + "category": "Business" + }, + { + "name": "Enterprise", + "value": null, + "currency": null, + "per": "custom", + "category": "Enterprise" + } + ], + "resourceUrls": { + "download": "https://www.augmentcode.com", + "changelog": null, + "pricing": "https://www.augmentcode.com/pricing", + "mcp": "https://www.augmentcode.com/mcp", + "issue": null + }, + "communityUrls": { + "linkedin": null, + "twitter": null, + "github": "https://github.com/augmentcode/auggie", + "youtube": null, + "discord": null, + "reddit": null, + "blog": "https://www.augmentcode.com/blog" + }, + "relatedProducts": [ + { + "type": "extension", + "productId": "augment-code" + } + ], + "platforms": [ + { + "os": "macOS", + "installCommand": "npm install -g @augmentcode/npm i @augmentcode/auggie", + "launchCommand": "auggie", + "installPath": null + }, + { + "os": "Windows", + "installCommand": "npm install -g @augmentcode/npm i @augmentcode/auggie", + "launchCommand": "auggie", + "installPath": null + }, + { + "os": "Linux", + "installCommand": "npm install -g @augmentcode/npm i @augmentcode/auggie", + "launchCommand": "auggie", + "installPath": null + } + ], + "sources": [ + { + "url": "https://github.com/augmentcode/auggie", + "title": "Auggie CLI github community", + "fields": ["communityUrls.github"] + }, + { + "url": "https://www.augmentcode.com/blog", + "title": "Auggie CLI blog community", + "fields": ["communityUrls.blog"] + }, + { + "url": "https://docs.augmentcode.com/cli/overview", + "title": "Introducing Auggie CLI", + "fields": ["name", "description", "docsUrl"] + }, + { + "url": "https://www.augmentcode.com/pricing", + "title": "Augment pricing", + "fields": ["pricing", "resourceUrls.pricing"] + } + ] +} diff --git a/manifests/clis/augment-code-cli.json b/manifests/clis/augment-code-cli.json deleted file mode 100644 index 490ffe8d..00000000 --- a/manifests/clis/augment-code-cli.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "$schema": "../$schemas/cli.schema.json", - "id": "augment-code-cli", - "name": "Augment Code CLI", - "description": "Augment Code CLI brings autonomous AI agents to your terminal with industry-leading context engine. Features native TUI, automated workflows, and deep codebase understanding.", - "translations": { - "zh-Hans": { - "description": "Augment Code CLI 将自主 AI Agent 带到您的终端,配备行业领先的上下文引擎。具有原生 TUI、自动化工作流和深度代码库理解功能。" - }, - "de": { - "description": "Augment Code CLI bringt autonome AI-Agenten mit branchenführender Kontext-Engine in Ihr Terminal. Bietet native TUI, automatisierte Workflows und tiefes Codebasis-Verständnis." - }, - "ko": { - "description": "Augment Code CLI는 업계 최고의 컨텍스트 엔진을 갖춘 자율 AI 에이전트를 터미널로 가져옵니다. 네이티브 TUI, 자동화된 워크플로우 및 깊은 코드베이스 이해를 제공합니다." - }, - "es": { - "description": "Augment Code CLI trae agentes de IA autonomos a tu terminal con un motor de contexto lider en la industria..." - }, - "fr": { - "description": "Augment Code CLI apporte des agents d'IA autonomes a votre terminal avec un moteur de contexte de pointe dans l'industrie..." - }, - "id": { - "description": "Augment Code CLI membawa agen AI otonom ke terminal Anda dengan mesin konteks terdepan di industri. Menawarkan TUI asli, alur kerja otomatis, dan pemahaman mendalam tentang basis kode." - }, - "ja": { - "description": "Augment Code CLIは、業界をリードするコンテキストエンジンを備えた自律型AIエージェントをターミナルに提供します。ネイティブTUI、自動化されたワークフロー、深いコードベース理解を特徴としています。" - }, - "pt": { - "description": "Augment Code CLI traz agentes de IA autónomos para o seu terminal com um motor de contexto de referência na indústria..." - }, - "ru": { - "description": "Augment Code CLI привносит автономные ИИ-агенты в ваш терминал с контекстным движком, являющимся лидером отрасли..." - }, - "tr": { - "description": "Augment Code CLI, sektor lideri bir baglam motoru ile terminalinize otonom yapay zeka ajanlari getirir. Dogal TUI, otomatik is akislari ve derin kod tabani anlayisi sunar." - }, - "zh-Hant": { - "description": "Augment Code CLI 將自主 AI Agent 帶到您的終端,配備業界領先的上下文引擎。具有原生 TUI、自動化工作流程和深度程式碼庫理解功能。" - } - }, - "verified": false, - "websiteUrl": "https://www.augmentcode.com", - "docsUrl": "https://docs.augmentcode.com/cli", - "vendor": "Augment", - "latestVersion": "0.7.0", - "githubUrl": "https://github.com/augmentcode/auggie", - "license": "Proprietary", - "pricing": [ - { - "name": "Individual", - "value": 30, - "currency": "USD", - "per": "month", - "category": "Individual" - }, - { - "name": "Teams", - "value": null, - "currency": null, - "per": "custom", - "category": "Business" - }, - { - "name": "Enterprise", - "value": null, - "currency": null, - "per": "custom", - "category": "Enterprise" - } - ], - "resourceUrls": { - "download": "https://www.augmentcode.com", - "changelog": null, - "pricing": "https://www.augmentcode.com/pricing", - "mcp": "https://www.augmentcode.com/mcp", - "issue": null - }, - "communityUrls": { - "linkedin": null, - "twitter": null, - "github": "https://github.com/augmentcode/auggie", - "youtube": null, - "discord": null, - "reddit": null, - "blog": "https://www.augmentcode.com/blog" - }, - "relatedProducts": [ - { - "type": "extension", - "productId": "augment-code" - } - ], - "platforms": [ - { - "os": "macOS", - "installCommand": "npm install -g @augmentcode/npm i @augmentcode/auggie", - "launchCommand": "auggie", - "installPath": null - }, - { - "os": "Windows", - "installCommand": "npm install -g @augmentcode/npm i @augmentcode/auggie", - "launchCommand": "auggie", - "installPath": null - }, - { - "os": "Linux", - "installCommand": "npm install -g @augmentcode/npm i @augmentcode/auggie", - "launchCommand": "auggie", - "installPath": null - } - ], - "sources": [ - { - "url": "https://github.com/augmentcode/auggie", - "title": "Augment Code CLI github community", - "fields": ["communityUrls.github"] - }, - { - "url": "https://www.augmentcode.com/blog", - "title": "Augment Code CLI blog community", - "fields": ["communityUrls.blog"] - } - ] -} diff --git a/manifests/clis/cline-cli.json b/manifests/clis/cline-cli.json index cf4954b5..335e7130 100644 --- a/manifests/clis/cline-cli.json +++ b/manifests/clis/cline-cli.json @@ -38,7 +38,10 @@ "description": "Cline CLI 支援從終端無介面執行任務並將 Cline 整合到任何地方。使用它透過協作 AI 驅動 GitHub Actions、Discord 機器人和 Linear 工單。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://cline.bot/cline-cli", "docsUrl": "https://cline.bot/docs", "vendor": "Cline Bot", @@ -47,15 +50,22 @@ "provider": "npm", "identifier": "cline" }, - "githubUrl": null, - "license": "Proprietary", + "githubUrl": "https://github.com/cline/cline", + "license": "Apache-2.0", "pricing": [ { - "name": "Teams", + "name": "Open Source", + "value": 0, + "currency": null, + "per": null, + "category": "Individual" + }, + { + "name": "Enterprise", "value": null, "currency": null, "per": "custom", - "category": "Business" + "category": "Enterprise" } ], "resourceUrls": { @@ -63,7 +73,7 @@ "changelog": null, "pricing": "https://cline.bot/pricing", "mcp": "https://cline.bot/mcp-marketplace", - "issue": null + "issue": "https://github.com/cline/cline/issues" }, "communityUrls": { "linkedin": "https://www.linkedin.com/company/clinebot", @@ -105,6 +115,16 @@ "url": "https://www.reddit.com/r/cline", "title": "Cline CLI reddit community", "fields": ["communityUrls.reddit"] + }, + { + "url": "https://cline.bot/pricing", + "title": "Cline pricing", + "fields": ["pricing", "resourceUrls.pricing"] + }, + { + "url": "https://github.com/cline/cline", + "title": "Cline official repository", + "fields": ["githubUrl", "license", "resourceUrls.issue"] } ] } diff --git a/manifests/clis/codebuddy-cli.json b/manifests/clis/codebuddy-cli.json index 9634581c..3cfe5cc8 100644 --- a/manifests/clis/codebuddy-cli.json +++ b/manifests/clis/codebuddy-cli.json @@ -38,7 +38,10 @@ "description": "CodeBuddy CLI 是 AI 驅動的程式碼編輯器,將智慧程式碼生成、除錯和開發工作流程整合到您的終端。具有 TUI 模式和內聯聊天功能。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://www.codebuddy.ai/cli", "docsUrl": "https://www.codebuddy.ai/docs/cli", "vendor": "Tencent", @@ -59,11 +62,18 @@ }, { "name": "Pro", - "value": null, - "currency": null, - "per": "custom", + "value": 9.95, + "currency": "USD", + "per": "month", "category": "Individual" }, + { + "name": "Team", + "value": 40, + "currency": "USD", + "per": "user/month", + "category": "Business" + }, { "name": "Enterprise", "value": null, @@ -75,7 +85,7 @@ "resourceUrls": { "download": "https://www.codebuddy.ai/cli", "changelog": null, - "pricing": "https://www.codebuddy.ai/pricing", + "pricing": "https://www.codebuddy.ai/docs/ide/Account/pricing", "mcp": null, "issue": null }, @@ -114,6 +124,11 @@ "url": "https://www.codebuddy.ai/blog", "title": "CodeBuddy blog", "fields": ["communityUrls.blog"] + }, + { + "url": "https://www.codebuddy.ai/docs/ide/Account/pricing", + "title": "CodeBuddy pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/clis/codex-cli.json b/manifests/clis/codex-cli.json index 921d4329..d75de31d 100644 --- a/manifests/clis/codex-cli.json +++ b/manifests/clis/codex-cli.json @@ -39,7 +39,10 @@ "description": "OpenAI 的 Codex CLI 是本機編碼 Agent,透過自然語言命令讀取、修改和執行程式碼。支援建構、除錯和自動化編碼任務。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://openai.com/codex", "docsUrl": "https://developers.openai.com/codex/cli", "vendor": "OpenAI", @@ -83,7 +86,7 @@ "resourceUrls": { "download": "https://developers.openai.com/codex/cli", "changelog": "https://github.com/openai/codex/releases", - "pricing": "https://openai.com/pricing", + "pricing": "https://chatgpt.com/codex/pricing/", "mcp": null, "issue": "https://github.com/openai/codex/issues" }, @@ -136,6 +139,11 @@ "url": "https://openai.com/news", "title": "Codex CLI blog community", "fields": ["communityUrls.blog"] + }, + { + "url": "https://chatgpt.com/codex/pricing/", + "title": "Codex pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/clis/continue-cli.json b/manifests/clis/continue-cli.json index 8abf3bdb..710e3b81 100644 --- a/manifests/clis/continue-cli.json +++ b/manifests/clis/continue-cli.json @@ -55,6 +55,7 @@ "latestVersion", "githubUrl", "license", + "pricing", "resourceUrls.changelog", "resourceUrls.issue" ] @@ -80,7 +81,15 @@ "latestVersion": "2.0.0", "githubUrl": "https://github.com/continuedev/continue", "license": "Apache-2.0", - "pricing": [], + "pricing": [ + { + "name": "Open Source", + "value": 0, + "currency": null, + "per": null, + "category": "Individual" + } + ], "resourceUrls": { "download": "https://www.npmjs.com/package/@continuedev/cli", "changelog": "https://github.com/continuedev/continue/releases", diff --git a/manifests/clis/cursor-cli.json b/manifests/clis/cursor-cli.json index 0ac25135..d7e2b615 100644 --- a/manifests/clis/cursor-cli.json +++ b/manifests/clis/cursor-cli.json @@ -38,7 +38,10 @@ "description": "AI 驅動的命令列編碼代理,直接在終端中編碼。與 AI 互動以撰寫、審查和修改程式碼,支援多個提供商的前沿模型。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://cursor.com/cli", "docsUrl": "https://cursor.com/docs/cli/overview", "vendor": "Anysphere", @@ -165,6 +168,11 @@ "url": "https://cursor.com/blog", "title": "Cursor CLI blog community", "fields": ["communityUrls.blog"] + }, + { + "url": "https://cursor.com/pricing", + "title": "Cursor pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/clis/droid-cli.json b/manifests/clis/droid-cli.json index 45c34fc1..d6f94fa3 100644 --- a/manifests/clis/droid-cli.json +++ b/manifests/clis/droid-cli.json @@ -39,7 +39,10 @@ "description": "Factory AI 的 Droid CLI 是基於終端的編碼 Agent,處理從規劃到測試的完整功能開發。與企業工具整合並提供透明的差異審查。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://factory.ai", "docsUrl": "https://docs.factory.ai/cli/getting-started/overview", "vendor": "Factory AI", @@ -54,12 +57,19 @@ "per": "month", "category": "Individual" }, + { + "name": "Plus", + "value": 100, + "currency": "USD", + "per": "month", + "category": "Individual" + }, { "name": "Max", "value": 200, "currency": "USD", "per": "month", - "category": "Business" + "category": "Individual" }, { "name": "Enterprise", @@ -114,5 +124,12 @@ "launchCommand": "droid", "installPath": null } + ], + "sources": [ + { + "url": "https://docs.factory.ai/pricing/individuals", + "title": "Factory individual plans", + "fields": ["pricing", "resourceUrls.pricing"] + } ] } diff --git a/manifests/clis/gemini-cli.json b/manifests/clis/gemini-cli.json index b568c374..c3e8154c 100644 --- a/manifests/clis/gemini-cli.json +++ b/manifests/clis/gemini-cli.json @@ -44,7 +44,12 @@ { "url": "https://developers.googleblog.com/an-important-update-transitioning-gemini-cli-to-antigravity-cli/", "title": "Transitioning Gemini CLI to Antigravity CLI", - "fields": ["deprecated", "pricing", "relatedProducts"] + "fields": ["deprecated", "relatedProducts"] + }, + { + "url": "https://cloud.google.com/products/gemini/pricing", + "title": "Gemini Code Assist pricing", + "fields": ["pricing", "resourceUrls.pricing"] }, { "url": "https://geminicli.com/docs/changelogs/latest/", @@ -67,7 +72,7 @@ "fields": ["communityUrls.blog"] } ], - "lastVerifiedAt": "2026-07-22", + "lastVerifiedAt": "2026-07-30", "verifiedBy": "codex-agent", "confidence": "high", "websiteUrl": "https://geminicli.com", @@ -82,24 +87,38 @@ "license": "Apache-2.0", "pricing": [ { - "name": "Gemini Code Assist Standard", - "value": null, - "currency": null, - "per": "custom", + "name": "Gemini Code Assist Standard (monthly commitment)", + "value": 0.031232877, + "currency": "USD", + "per": "hour", + "category": "Business" + }, + { + "name": "Gemini Code Assist Standard (12-month commitment)", + "value": 0.026027397, + "currency": "USD", + "per": "hour", "category": "Business" }, { - "name": "Gemini Code Assist Enterprise", - "value": null, - "currency": null, - "per": "custom", + "name": "Gemini Code Assist Enterprise (monthly commitment)", + "value": 0.073972603, + "currency": "USD", + "per": "hour", + "category": "Enterprise" + }, + { + "name": "Gemini Code Assist Enterprise (12-month commitment)", + "value": 0.061643836, + "currency": "USD", + "per": "hour", "category": "Enterprise" } ], "resourceUrls": { "download": "https://www.npmjs.com/package/@google/gemini-cli", "changelog": "https://geminicli.com/docs/changelogs", - "pricing": "https://codeassist.google", + "pricing": "https://cloud.google.com/products/gemini/pricing", "mcp": null, "issue": "https://github.com/google-gemini/gemini-cli/issues" }, diff --git a/manifests/clis/github-copilot-cli.json b/manifests/clis/github-copilot-cli.json index 73be6122..959ae042 100644 --- a/manifests/clis/github-copilot-cli.json +++ b/manifests/clis/github-copilot-cli.json @@ -38,7 +38,10 @@ "description": "GitHub Copilot CLI 將 AI 輔助功能帶到您的終端。建議 shell 命令、生成程式碼片段,並透過自然語言與程式碼倉庫整合。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://github.com/features/copilot/cli", "docsUrl": "https://docs.github.com/en/copilot/concepts/agents/about-copilot-cli", "vendor": "GitHub", @@ -68,7 +71,14 @@ "name": "Pro+", "value": 39, "currency": "USD", - "per": "month", + "per": "user/month", + "category": "Individual" + }, + { + "name": "Max", + "value": 100, + "currency": "USD", + "per": "user/month", "category": "Individual" }, { @@ -128,6 +138,11 @@ "url": "https://github.com/github/copilot-cli", "title": "GitHub Copilot CLI github community", "fields": ["communityUrls.github"] + }, + { + "url": "https://github.com/features/copilot/plans", + "title": "GitHub Copilot plans and pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/clis/gitlab-duo-cli.json b/manifests/clis/gitlab-duo-cli.json index db341764..33709d51 100644 --- a/manifests/clis/gitlab-duo-cli.json +++ b/manifests/clis/gitlab-duo-cli.json @@ -35,7 +35,7 @@ "description": "GitLab Duo CLI is GitLab's terminal coding agent for understanding projects, editing code, running tests, and integrating AI-assisted work with GitLab development workflows." } }, - "verified": false, + "verified": true, "sources": [ { "url": "https://about.gitlab.com/blog/gitlab-duo-cli-generally-available/", @@ -44,9 +44,19 @@ { "url": "https://about.gitlab.com/blog/gitlab-duo-cli/", "title": "GitLab Duo CLI beta" + }, + { + "url": "https://docs.gitlab.com/subscriptions/gitlab_credits", + "title": "GitLab Credits and usage billing", + "fields": ["pricing", "resourceUrls.pricing"] + }, + { + "url": "https://docs.gitlab.com/subscriptions/subscription-add-ons", + "title": "GitLab Duo add-ons", + "fields": ["pricing"] } ], - "lastVerifiedAt": "2026-07-21", + "lastVerifiedAt": "2026-07-30", "verifiedBy": "codex-agent", "confidence": "high", "id": "gitlab-duo-cli", @@ -61,17 +71,31 @@ "license": "Proprietary", "pricing": [ { - "name": "GitLab Duo", + "name": "On-Demand GitLab Credits", + "value": 1, + "currency": "USD", + "per": "credit", + "category": "Business" + }, + { + "name": "GitLab Duo Pro", "value": null, "currency": null, "per": "subscription", "category": "Business" + }, + { + "name": "GitLab Duo Enterprise", + "value": null, + "currency": null, + "per": "subscription", + "category": "Enterprise" } ], "resourceUrls": { "download": null, "changelog": "https://about.gitlab.com/blog/gitlab-duo-cli-generally-available/", - "pricing": "https://about.gitlab.com/pricing", + "pricing": "https://docs.gitlab.com/subscriptions/gitlab_credits", "mcp": null, "issue": null }, diff --git a/manifests/clis/junie-cli.json b/manifests/clis/junie-cli.json index e0f87aea..ca67df63 100644 --- a/manifests/clis/junie-cli.json +++ b/manifests/clis/junie-cli.json @@ -44,9 +44,14 @@ { "url": "https://www.jetbrains.com/junie/", "title": "Junie product site" + }, + { + "url": "https://github.com/JetBrains/junie", + "title": "Junie official repository", + "fields": ["githubUrl", "resourceUrls.issue"] } ], - "lastVerifiedAt": "2026-07-21", + "lastVerifiedAt": "2026-07-30", "verifiedBy": "codex-agent", "confidence": "high", "id": "junie-cli", @@ -57,7 +62,7 @@ "docsUrl": "https://www.jetbrains.com/help/junie/junie-cli.html", "vendor": "JetBrains", "latestVersion": "Beta", - "githubUrl": null, + "githubUrl": "https://github.com/JetBrains/junie", "license": "Proprietary", "pricing": [ { @@ -73,7 +78,7 @@ "changelog": "https://blog.jetbrains.com/junie/2026/03/junie-cli-the-llm-agnostic-coding-agent-is-now-in-beta/", "pricing": null, "mcp": null, - "issue": null + "issue": "https://github.com/JetBrains/junie/issues" }, "communityUrls": { "linkedin": null, diff --git a/manifests/clis/kiro-cli.json b/manifests/clis/kiro-cli.json index 557cca31..bdedd626 100644 --- a/manifests/clis/kiro-cli.json +++ b/manifests/clis/kiro-cli.json @@ -38,7 +38,10 @@ "description": "用於從原型到生產的智慧 AI 開發 CLI。具備規範驅動開發、代理掛鉤、網絡搜尋功能,以及終端中的自然語言編碼輔助。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://kiro.dev", "docsUrl": "https://kiro.dev/docs/cli", "vendor": "AWS", @@ -48,37 +51,44 @@ "pricing": [ { "name": "Free", - "value": null, + "value": 0, "currency": "USD", - "per": "Month", + "per": "month", "category": "Individual" }, { "name": "Pro", "value": 20, "currency": "USD", - "per": "Month", + "per": "user/month", "category": "Individual" }, { "name": "Pro+", "value": 40, "currency": "USD", - "per": "Month", + "per": "user/month", + "category": "Individual" + }, + { + "name": "Pro Max", + "value": 100, + "currency": "USD", + "per": "user/month", "category": "Individual" }, { "name": "Power", "value": 200, "currency": "USD", - "per": "Month", + "per": "user/month", "category": "Individual" }, { "name": "Enterprise", "value": null, "currency": "USD", - "per": "Custom", + "per": "custom", "category": "Enterprise" } ], @@ -154,6 +164,11 @@ "url": "https://kiro.dev/blog", "title": "Kiro CLI blog community", "fields": ["communityUrls.blog"] + }, + { + "url": "https://kiro.dev/pricing", + "title": "Kiro pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/clis/mistral-vibe-cli.json b/manifests/clis/mistral-vibe-cli.json deleted file mode 100644 index 32c1ac44..00000000 --- a/manifests/clis/mistral-vibe-cli.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "$schema": "../$schemas/cli.schema.json", - "translations": { - "de": { - "description": "Mistral Vibe CLI is Mistral AI's terminal coding agent for repository exploration, planning, code editing, command execution, and configurable agent workflows." - }, - "es": { - "description": "Mistral Vibe CLI is Mistral AI's terminal coding agent for repository exploration, planning, code editing, command execution, and configurable agent workflows." - }, - "fr": { - "description": "Mistral Vibe CLI is Mistral AI's terminal coding agent for repository exploration, planning, code editing, command execution, and configurable agent workflows." - }, - "id": { - "description": "Mistral Vibe CLI is Mistral AI's terminal coding agent for repository exploration, planning, code editing, command execution, and configurable agent workflows." - }, - "ja": { - "description": "Mistral Vibe CLI is Mistral AI's terminal coding agent for repository exploration, planning, code editing, command execution, and configurable agent workflows." - }, - "ko": { - "description": "Mistral Vibe CLI is Mistral AI's terminal coding agent for repository exploration, planning, code editing, command execution, and configurable agent workflows." - }, - "pt": { - "description": "Mistral Vibe CLI is Mistral AI's terminal coding agent for repository exploration, planning, code editing, command execution, and configurable agent workflows." - }, - "ru": { - "description": "Mistral Vibe CLI is Mistral AI's terminal coding agent for repository exploration, planning, code editing, command execution, and configurable agent workflows." - }, - "tr": { - "description": "Mistral Vibe CLI is Mistral AI's terminal coding agent for repository exploration, planning, code editing, command execution, and configurable agent workflows." - }, - "zh-Hans": { - "description": "Mistral Vibe CLI is Mistral AI's terminal coding agent for repository exploration, planning, code editing, command execution, and configurable agent workflows." - }, - "zh-Hant": { - "description": "Mistral Vibe CLI is Mistral AI's terminal coding agent for repository exploration, planning, code editing, command execution, and configurable agent workflows." - } - }, - "verified": false, - "sources": [ - { - "url": "https://mistral.ai/news/vibe-agent/", - "title": "Introducing Mistral Vibe" - }, - { - "url": "https://docs.mistral.ai/vibe/code/overview", - "title": "Mistral Vibe documentation" - } - ], - "lastVerifiedAt": "2026-07-21", - "verifiedBy": "codex-agent", - "confidence": "high", - "id": "mistral-vibe-cli", - "name": "Mistral Vibe CLI", - "familyId": "mistral-vibe", - "description": "Mistral Vibe CLI is Mistral AI's terminal coding agent for repository exploration, planning, code editing, command execution, and configurable agent workflows.", - "websiteUrl": "https://mistral.ai/products/vibe", - "docsUrl": "https://docs.mistral.ai/vibe/code/overview", - "vendor": "Mistral AI", - "latestVersion": "2.23.0", - "releaseTracking": { - "provider": "pypi", - "identifier": "mistral-vibe" - }, - "githubUrl": null, - "license": "Proprietary", - "pricing": [ - { - "name": "Free", - "value": 0, - "currency": null, - "per": null, - "category": "Individual" - }, - { - "name": "Pro", - "value": 14.99, - "currency": "USD", - "per": "month", - "category": "Individual" - }, - { - "name": "Team", - "value": 24.99, - "currency": "USD", - "per": "user/month", - "category": "Business" - }, - { - "name": "Enterprise", - "value": null, - "currency": null, - "per": "custom", - "category": "Enterprise" - } - ], - "resourceUrls": { - "download": "https://docs.mistral.ai/vibe/code/installation", - "changelog": null, - "pricing": "https://mistral.ai/pricing", - "mcp": null, - "issue": null - }, - "communityUrls": { - "linkedin": null, - "twitter": "https://x.com/MistralAI", - "github": null, - "youtube": null, - "discord": null, - "reddit": null, - "blog": "https://mistral.ai/news" - }, - "relatedProducts": [ - { - "type": "extension", - "productId": "mistral-vibe" - } - ], - "platforms": [ - { - "os": "macOS", - "installPath": null, - "installCommand": "curl -LsSf https://mistral.ai/vibe/install.sh | bash", - "launchCommand": "vibe" - }, - { - "os": "Windows", - "installPath": null, - "installCommand": "uv tool install mistral-vibe", - "launchCommand": "vibe" - }, - { - "os": "Linux", - "installPath": null, - "installCommand": "curl -LsSf https://mistral.ai/vibe/install.sh | bash", - "launchCommand": "vibe" - } - ] -} diff --git a/manifests/clis/opencode.json b/manifests/clis/opencode.json index 855b39ad..27c1aea7 100644 --- a/manifests/clis/opencode.json +++ b/manifests/clis/opencode.json @@ -117,6 +117,11 @@ "url": "https://github.com/anomalyco/opencode", "title": "OpenCode github community", "fields": ["communityUrls.github"] + }, + { + "url": "https://opencode.ai/docs/zen", + "title": "OpenCode Zen pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/clis/qoder-cli.json b/manifests/clis/qoder-cli.json index 92e06572..6b1d8c86 100644 --- a/manifests/clis/qoder-cli.json +++ b/manifests/clis/qoder-cli.json @@ -39,7 +39,10 @@ "description": "Qoder CLI 是 AI 驅動的編碼助手,用於智慧程式碼生成、除錯和開發工作流程。具有 TUI 模式、內聯聊天和專案管理功能。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "medium", "websiteUrl": "https://qoder.com/cli", "docsUrl": "https://docs.qoder.com/en/cli/quick-start", "vendor": "Alibaba", @@ -60,17 +63,24 @@ }, { "name": "Pro", - "value": null, - "currency": null, - "per": "custom", + "value": 10, + "currency": "USD", + "per": "month", "category": "Individual" }, { - "name": "Enterprise", - "value": null, - "currency": null, - "per": "custom", - "category": "Enterprise" + "name": "Pro+", + "value": 30, + "currency": "USD", + "per": "month", + "category": "Individual" + }, + { + "name": "Ultra", + "value": 100, + "currency": "USD", + "per": "month", + "category": "Individual" } ], "resourceUrls": { @@ -134,6 +144,11 @@ "url": "https://qoder.com/blog", "title": "Qoder blog", "fields": ["communityUrls.blog"] + }, + { + "url": "https://qoder.com/zh/blog/qoder-subscriptions-are-here", + "title": "Qoder subscription plans", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/clis/rovo-dev-cli.json b/manifests/clis/rovo-dev-cli.json index 101e45ad..1b484f73 100644 --- a/manifests/clis/rovo-dev-cli.json +++ b/manifests/clis/rovo-dev-cli.json @@ -51,10 +51,11 @@ }, { "url": "https://www.atlassian.com/software/rovo-dev/pricing", - "title": "Rovo Dev pricing" + "title": "Rovo Dev pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ], - "lastVerifiedAt": "2026-07-21", + "lastVerifiedAt": "2026-07-30", "verifiedBy": "codex-agent", "confidence": "high", "websiteUrl": "https://www.atlassian.com/software/rovo-dev", @@ -64,13 +65,6 @@ "githubUrl": null, "license": "Proprietary", "pricing": [ - { - "name": "Rovo Dev Free", - "value": 0, - "currency": null, - "per": "month", - "category": "Individual" - }, { "name": "Rovo Dev Standard", "value": 20, diff --git a/manifests/clis/vibe-cli.json b/manifests/clis/vibe-cli.json new file mode 100644 index 00000000..093ccf67 --- /dev/null +++ b/manifests/clis/vibe-cli.json @@ -0,0 +1,149 @@ +{ + "$schema": "../$schemas/cli.schema.json", + "translations": { + "de": { + "description": "Vibe CLI ist der Terminal-Coding-Agent von Mistral AI für Repository-Erkundung, Planung, Codebearbeitung, Befehlsausführung und konfigurierbare Agent-Workflows." + }, + "es": { + "description": "Vibe CLI es el agente de programación para terminal de Mistral AI, destinado a explorar repositorios, planificar, editar código, ejecutar comandos y configurar flujos de agentes." + }, + "fr": { + "description": "Vibe CLI est l’agent de codage en terminal de Mistral AI pour explorer les dépôts, planifier, modifier le code, exécuter des commandes et configurer des workflows d’agents." + }, + "id": { + "description": "Vibe CLI adalah agen coding terminal Mistral AI untuk menjelajahi repositori, merencanakan, mengedit kode, menjalankan perintah, dan mengatur alur kerja agen." + }, + "ja": { + "description": "Vibe CLIは、リポジトリ探索、計画、コード編集、コマンド実行、設定可能なエージェントワークフローに対応するMistral AIのターミナル型コーディングエージェントです。" + }, + "ko": { + "description": "Vibe CLI는 저장소 탐색, 계획, 코드 편집, 명령 실행 및 구성 가능한 에이전트 워크플로를 위한 Mistral AI의 터미널 코딩 에이전트입니다." + }, + "pt": { + "description": "Vibe CLI é o agente de programação no terminal da Mistral AI para explorar repositórios, planear, editar código, executar comandos e configurar fluxos de agentes." + }, + "ru": { + "description": "Vibe CLI — терминальный агент Mistral AI для изучения репозиториев, планирования, редактирования кода, выполнения команд и настраиваемых рабочих процессов." + }, + "tr": { + "description": "Vibe CLI, depo keşfi, planlama, kod düzenleme, komut çalıştırma ve yapılandırılabilir ajan iş akışları için Mistral AI'ın terminal kodlama ajanıdır." + }, + "zh-Hans": { + "description": "Vibe CLI 是 Mistral AI 的终端编码 Agent,用于探索代码仓库、规划、编辑代码、执行命令和配置 Agent 工作流。" + }, + "zh-Hant": { + "description": "Vibe CLI 是 Mistral AI 的終端編碼 Agent,用於探索程式碼儲存庫、規劃、編輯程式碼、執行命令和設定 Agent 工作流程。" + } + }, + "verified": true, + "sources": [ + { + "url": "https://mistral.ai/news/vibe-agent/", + "title": "Introducing Mistral Vibe" + }, + { + "url": "https://docs.mistral.ai/vibe/code/overview", + "title": "Mistral Vibe documentation", + "fields": ["name", "description", "docsUrl"] + }, + { + "url": "https://mistral.ai/pricing", + "title": "Mistral pricing", + "fields": ["pricing", "resourceUrls.pricing"] + }, + { + "url": "https://github.com/mistralai/mistral-vibe", + "title": "Mistral Vibe official repository", + "fields": ["githubUrl", "license", "resourceUrls.issue"] + } + ], + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", + "id": "vibe-cli", + "name": "Vibe CLI", + "familyId": "mistral-vibe", + "description": "Vibe CLI is Mistral AI's terminal coding agent for repository exploration, planning, code editing, command execution, and configurable agent workflows.", + "websiteUrl": "https://mistral.ai/products/vibe", + "docsUrl": "https://docs.mistral.ai/vibe/code/overview", + "vendor": "Mistral AI", + "latestVersion": "2.23.0", + "releaseTracking": { + "provider": "pypi", + "identifier": "mistral-vibe" + }, + "githubUrl": "https://github.com/mistralai/mistral-vibe", + "license": "Apache-2.0", + "pricing": [ + { + "name": "Free", + "value": 0, + "currency": null, + "per": null, + "category": "Individual" + }, + { + "name": "Pro", + "value": 14.99, + "currency": "USD", + "per": "month", + "category": "Individual" + }, + { + "name": "Team", + "value": 24.99, + "currency": "USD", + "per": "user/month", + "category": "Business" + }, + { + "name": "Enterprise", + "value": null, + "currency": null, + "per": "custom", + "category": "Enterprise" + } + ], + "resourceUrls": { + "download": "https://docs.mistral.ai/vibe/code/installation", + "changelog": null, + "pricing": "https://mistral.ai/pricing", + "mcp": null, + "issue": "https://github.com/mistralai/mistral-vibe/issues" + }, + "communityUrls": { + "linkedin": null, + "twitter": "https://x.com/MistralAI", + "github": null, + "youtube": null, + "discord": null, + "reddit": null, + "blog": "https://mistral.ai/news" + }, + "relatedProducts": [ + { + "type": "extension", + "productId": "mistral-vibe" + } + ], + "platforms": [ + { + "os": "macOS", + "installPath": null, + "installCommand": "curl -LsSf https://mistral.ai/vibe/install.sh | bash", + "launchCommand": "vibe" + }, + { + "os": "Windows", + "installPath": null, + "installCommand": "uv tool install mistral-vibe", + "launchCommand": "vibe" + }, + { + "os": "Linux", + "installPath": null, + "installCommand": "curl -LsSf https://mistral.ai/vibe/install.sh | bash", + "launchCommand": "vibe" + } + ] +} diff --git a/manifests/desktops/claude-code-desktop.json b/manifests/desktops/claude-code-desktop.json index 9d03a7eb..80e3b7ba 100644 --- a/manifests/desktops/claude-code-desktop.json +++ b/manifests/desktops/claude-code-desktop.json @@ -35,7 +35,7 @@ "description": "Claude Code Desktop is Anthropic's standalone coding app for running parallel sessions, reviewing diffs, editing files, and working with an integrated terminal." } }, - "verified": false, + "verified": true, "sources": [ { "url": "https://claude.com/blog/claude-code-desktop-redesign", @@ -44,9 +44,14 @@ { "url": "https://code.claude.com/docs/en/desktop", "title": "Claude Code Desktop documentation" + }, + { + "url": "https://claude.com/pricing", + "title": "Claude plans and pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ], - "lastVerifiedAt": "2026-07-21", + "lastVerifiedAt": "2026-07-30", "verifiedBy": "codex-agent", "confidence": "high", "id": "claude-code-desktop", @@ -67,6 +72,13 @@ "per": "month", "category": "Individual" }, + { + "name": "Pro (Annual)", + "value": 17, + "currency": "USD", + "per": "month", + "category": "Individual" + }, { "name": "Max 5x", "value": 100, @@ -80,6 +92,27 @@ "currency": "USD", "per": "month", "category": "Individual" + }, + { + "name": "Team Standard", + "value": 25, + "currency": "USD", + "per": "user/month", + "category": "Business" + }, + { + "name": "Team Premium", + "value": 125, + "currency": "USD", + "per": "user/month", + "category": "Business" + }, + { + "name": "Enterprise", + "value": 20, + "currency": "USD", + "per": "user/month", + "category": "Enterprise" } ], "resourceUrls": { diff --git a/manifests/desktops/codex-app.json b/manifests/desktops/codex-app.json index 02d3cda9..eb1b9b39 100644 --- a/manifests/desktops/codex-app.json +++ b/manifests/desktops/codex-app.json @@ -35,7 +35,7 @@ "description": "Codex App is OpenAI's desktop command center for running coding agents in parallel, reviewing changes, using worktrees, and sharing sessions with Codex CLI and IDE integrations." } }, - "verified": false, + "verified": true, "sources": [ { "url": "https://openai.com/index/introducing-the-codex-app/", @@ -49,9 +49,19 @@ "url": "https://learn.chatgpt.com/docs/open-source", "title": "Codex open-source components", "fields": ["githubUrl", "license"] + }, + { + "url": "https://github.com/openai/codex", + "title": "Codex official repository", + "fields": ["githubUrl", "resourceUrls.issue"] + }, + { + "url": "https://chatgpt.com/codex/pricing/", + "title": "Codex pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ], - "lastVerifiedAt": "2026-07-21", + "lastVerifiedAt": "2026-07-30", "verifiedBy": "codex-agent", "confidence": "high", "id": "codex-app", @@ -62,7 +72,7 @@ "docsUrl": "https://developers.openai.com/codex/app", "vendor": "OpenAI", "latestVersion": "Latest", - "githubUrl": null, + "githubUrl": "https://github.com/openai/codex", "license": "Proprietary", "pricing": [ { @@ -90,7 +100,7 @@ "resourceUrls": { "download": "https://openai.com/codex", "changelog": "https://developers.openai.com/codex/changelog", - "pricing": "https://openai.com/pricing", + "pricing": "https://chatgpt.com/codex/pricing/", "mcp": null, "issue": "https://github.com/openai/codex/issues" }, diff --git a/manifests/desktops/factory-desktop.json b/manifests/desktops/factory-desktop.json index 5bdbe0aa..7bf34cc5 100644 --- a/manifests/desktops/factory-desktop.json +++ b/manifests/desktops/factory-desktop.json @@ -35,7 +35,7 @@ "description": "Factory Desktop is a standalone workspace for coordinating Droids, running parallel coding tasks, reviewing previews and diffs, and managing persistent development sessions." } }, - "verified": false, + "verified": true, "sources": [ { "url": "https://factory.ai/product/desktop", @@ -44,9 +44,14 @@ { "url": "https://docs.factory.ai/welcome/index", "title": "Factory documentation" + }, + { + "url": "https://docs.factory.ai/pricing/individuals", + "title": "Factory individual plans", + "fields": ["pricing", "resourceUrls.pricing"] } ], - "lastVerifiedAt": "2026-07-21", + "lastVerifiedAt": "2026-07-30", "verifiedBy": "codex-agent", "confidence": "high", "id": "factory-desktop", @@ -67,12 +72,19 @@ "per": "month", "category": "Individual" }, + { + "name": "Plus", + "value": 100, + "currency": "USD", + "per": "month", + "category": "Individual" + }, { "name": "Max", "value": 200, "currency": "USD", "per": "month", - "category": "Business" + "category": "Individual" }, { "name": "Enterprise", diff --git a/manifests/desktops/minimax-code.json b/manifests/desktops/minimax-code.json index f7d360c7..b066b17e 100644 --- a/manifests/desktops/minimax-code.json +++ b/manifests/desktops/minimax-code.json @@ -35,7 +35,7 @@ "description": "MiniMax Code is a desktop coding agent for macOS and Windows with agent teams, persistent memory, reusable skills, scheduled tasks, and workspace-level development workflows." } }, - "verified": false, + "verified": true, "sources": [ { "url": "https://agent.minimax.io/download", @@ -43,12 +43,18 @@ }, { "url": "https://platform.minimax.io/subscribe/token-plan", - "title": "MiniMax coding plans" + "title": "MiniMax Token Plan", + "fields": ["pricing", "resourceUrls.pricing"] + }, + { + "url": "https://github.com/MiniMax-AI/minimax-code", + "title": "MiniMax Code official issue repository", + "fields": ["githubUrl", "resourceUrls.issue"] } ], - "lastVerifiedAt": "2026-07-21", + "lastVerifiedAt": "2026-07-30", "verifiedBy": "codex-agent", - "confidence": "medium", + "confidence": "high", "id": "minimax-code", "name": "MiniMax Code", "familyId": "minimax-code", @@ -57,7 +63,7 @@ "docsUrl": "https://agent.minimax.io/download", "vendor": "MiniMax", "latestVersion": "Latest", - "githubUrl": null, + "githubUrl": "https://github.com/MiniMax-AI/minimax-code", "license": "Proprietary", "pricing": [ { @@ -68,10 +74,24 @@ "category": "Individual" }, { - "name": "Coding Plan", - "value": null, - "currency": null, - "per": "subscription", + "name": "Plus", + "value": 20, + "currency": "USD", + "per": "month", + "category": "Individual" + }, + { + "name": "Max", + "value": 50, + "currency": "USD", + "per": "month", + "category": "Individual" + }, + { + "name": "Ultra", + "value": 120, + "currency": "USD", + "per": "month", "category": "Individual" } ], @@ -80,7 +100,7 @@ "changelog": null, "pricing": "https://platform.minimax.io/subscribe/token-plan", "mcp": null, - "issue": null + "issue": "https://github.com/MiniMax-AI/minimax-code/issues" }, "communityUrls": { "linkedin": null, diff --git a/manifests/desktops/opencode-desktop.json b/manifests/desktops/opencode-desktop.json index c91fd8cc..79f5f531 100644 --- a/manifests/desktops/opencode-desktop.json +++ b/manifests/desktops/opencode-desktop.json @@ -43,7 +43,13 @@ }, { "url": "https://github.com/anomalyco/opencode", - "title": "OpenCode repository" + "title": "OpenCode repository", + "fields": ["pricing"] + }, + { + "url": "https://opencode.ai/zen", + "title": "OpenCode Zen pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ], "lastVerifiedAt": "2026-07-21", diff --git a/manifests/desktops/qoder.json b/manifests/desktops/qoder.json index 99f0a7e8..07db7019 100644 --- a/manifests/desktops/qoder.json +++ b/manifests/desktops/qoder.json @@ -35,7 +35,7 @@ "description": "Qoder Desktop 是一款自主開發桌面應用,具備編碼智慧代理、深度程式碼庫理解、智慧補全,以及用於協作和任務委派的 Editor 與 Quest 工作區。" } }, - "verified": false, + "verified": true, "sources": [ { "url": "https://qoder.com/desktop", @@ -62,7 +62,7 @@ "fields": ["familyId", "relatedProducts"] } ], - "lastVerifiedAt": "2026-07-21", + "lastVerifiedAt": "2026-07-30", "verifiedBy": "codex-agent", "confidence": "high", "id": "qoder", @@ -85,21 +85,21 @@ }, { "name": "Pro", - "value": 20, + "value": 10, "currency": "USD", "per": "month", "category": "Individual" }, { "name": "Pro+", - "value": 60, + "value": 30, "currency": "USD", "per": "month", "category": "Individual" }, { "name": "Ultra", - "value": 200, + "value": 100, "currency": "USD", "per": "month", "category": "Individual" diff --git a/manifests/desktops/stagewise.json b/manifests/desktops/stagewise.json index 141087aa..ec2f9577 100644 --- a/manifests/desktops/stagewise.json +++ b/manifests/desktops/stagewise.json @@ -43,7 +43,8 @@ }, { "url": "https://github.com/stagewise-io/stagewise", - "title": "stagewise repository" + "title": "stagewise repository", + "fields": ["pricing"] } ], "lastVerifiedAt": "2026-07-21", diff --git a/manifests/desktops/verdent-deck.json b/manifests/desktops/verdent-deck.json index 13661a0f..19cd3972 100644 --- a/manifests/desktops/verdent-deck.json +++ b/manifests/desktops/verdent-deck.json @@ -35,7 +35,7 @@ "description": "Verdent Deck is an AI-native desktop app for coordinating multiple coding agents in parallel, managing Git worktrees, and reviewing feature-level changes." } }, - "verified": false, + "verified": true, "sources": [ { "url": "https://www.verdent.ai/docs/verdent/getting-started/overview", @@ -44,9 +44,14 @@ { "url": "https://www.verdent.ai/docs/verdent/getting-started/installation", "title": "Verdent installation" + }, + { + "url": "https://www.verdent.ai/pricing", + "title": "Verdent pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ], - "lastVerifiedAt": "2026-07-21", + "lastVerifiedAt": "2026-07-30", "verifiedBy": "codex-agent", "confidence": "high", "id": "verdent-deck", @@ -61,18 +66,46 @@ "license": "Proprietary", "pricing": [ { - "name": "Free Trial", - "value": 0, - "currency": null, - "per": null, + "name": "Lite", + "value": 5, + "currency": "USD", + "per": "month", "category": "Individual" }, { - "name": "Pro", + "name": "Starter", "value": 19, "currency": "USD", "per": "month", "category": "Individual" + }, + { + "name": "Pro", + "value": 59, + "currency": "USD", + "per": "month", + "category": "Individual" + }, + { + "name": "Max", + "value": 179, + "currency": "USD", + "per": "month", + "category": "Individual" + }, + { + "name": "Teams", + "value": 20, + "currency": "USD", + "per": "user/month", + "category": "Business" + }, + { + "name": "Enterprise", + "value": null, + "currency": null, + "per": "custom", + "category": "Enterprise" } ], "resourceUrls": { diff --git a/manifests/desktops/workbuddy.json b/manifests/desktops/workbuddy.json index 33cc1031..bfed9990 100644 --- a/manifests/desktops/workbuddy.json +++ b/manifests/desktops/workbuddy.json @@ -35,7 +35,7 @@ "description": "Tencent WorkBuddy 是一款 AI 智慧代理桌面工作台,提供 Coding Mode,可進行程式碼生成、審查、除錯、重構及自主執行本機任務。" } }, - "verified": false, + "verified": true, "sources": [ { "url": "https://www.workbuddy.ai/docs/workbuddy/Quickstart", @@ -61,9 +61,14 @@ "url": "https://www.workbuddy.ai/document/term", "title": "Tencent WorkBuddy service agreement", "fields": ["vendor", "license"] + }, + { + "url": "https://cloud.tencent.com/document/product/1831/134333", + "title": "WorkBuddy billing overview", + "fields": ["pricing", "resourceUrls.pricing"] } ], - "lastVerifiedAt": "2026-07-21", + "lastVerifiedAt": "2026-07-30", "verifiedBy": "codex-agent", "confidence": "high", "id": "workbuddy", @@ -76,11 +81,61 @@ "latestVersion": "Latest", "githubUrl": null, "license": "Proprietary", - "pricing": [], + "pricing": [ + { + "name": "Experience", + "value": 0, + "currency": "CNY", + "per": "month", + "category": "Individual" + }, + { + "name": "Standard", + "value": 99, + "currency": "CNY", + "per": "month", + "category": "Individual" + }, + { + "name": "Advanced", + "value": 199, + "currency": "CNY", + "per": "month", + "category": "Individual" + }, + { + "name": "Flagship", + "value": 999, + "currency": "CNY", + "per": "month", + "category": "Individual" + }, + { + "name": "SaaS Enterprise", + "value": 198, + "currency": "CNY", + "per": "user/month", + "category": "Business" + }, + { + "name": "Dedicated Cloud Enterprise", + "value": 316, + "currency": "CNY", + "per": "user/month", + "category": "Enterprise" + }, + { + "name": "Private Deployment", + "value": null, + "currency": null, + "per": "custom", + "category": "Enterprise" + } + ], "resourceUrls": { "download": "https://www.workbuddy.ai/", "changelog": null, - "pricing": "https://www.workbuddy.ai/pricing/", + "pricing": "https://cloud.tencent.com/document/product/1831/134333", "mcp": null, "issue": null }, diff --git a/manifests/desktops/zcode.json b/manifests/desktops/zcode.json index 8357b3df..6c918ba3 100644 --- a/manifests/desktops/zcode.json +++ b/manifests/desktops/zcode.json @@ -39,7 +39,8 @@ "sources": [ { "url": "https://zcode.z.ai/en/docs/welcome", - "title": "ZCode documentation" + "title": "ZCode documentation", + "fields": ["pricing"] }, { "url": "https://zcode.z.ai/en/changelog", diff --git a/manifests/extensions/amp.json b/manifests/extensions/amp.json index 2bdaf6bf..80b55da3 100644 --- a/manifests/extensions/amp.json +++ b/manifests/extensions/amp.json @@ -38,7 +38,10 @@ "description": "適用於 VS Code、Cursor 和 Windsurf 的前沿編碼 Agent。具有自主推理、全面編輯和會話共享功能。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://ampcode.com", "docsUrl": "https://ampcode.com", "vendor": "Sourcegraph", @@ -47,24 +50,31 @@ "license": "Proprietary", "pricing": [ { - "name": "Amp Free", - "value": 0, - "currency": null, - "per": null, + "name": "Megawatt", + "value": 20, + "currency": "USD", + "per": "month", "category": "Individual" }, { - "name": "Pro", - "value": null, + "name": "Gigawatt", + "value": 200, "currency": "USD", "per": "month", "category": "Individual" }, + { + "name": "Pay As You Go", + "value": null, + "currency": "USD", + "per": "usage-based", + "category": "Individual" + }, { "name": "Enterprise", "value": null, - "currency": null, - "per": "custom", + "currency": "USD", + "per": "usage-based", "category": "Enterprise" } ], @@ -102,6 +112,11 @@ "url": "https://discord.com/invite/GT742pq9rS", "title": "Amp discord community", "fields": ["communityUrls.discord"] + }, + { + "url": "https://ampcode.com/pricing", + "title": "Amp pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/extensions/augment-code.json b/manifests/extensions/augment-code.json index 1e40b94f..1181d01c 100644 --- a/manifests/extensions/augment-code.json +++ b/manifests/extensions/augment-code.json @@ -38,7 +38,10 @@ "description": "由業界領先的上下文引擎支援的最強大 AI 軟體開發平台。它提供自主編碼 Agent、程式碼庫感知自動完成,以及對大型程式碼庫的深度上下文理解。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://www.augmentcode.com", "docsUrl": "https://docs.augmentcode.com", "vendor": "Augment", @@ -47,17 +50,10 @@ "license": "Proprietary", "pricing": [ { - "name": "Individual", - "value": 30, + "name": "Business", + "value": 100, "currency": "USD", "per": "month", - "category": "Individual" - }, - { - "name": "Teams", - "value": null, - "currency": null, - "per": "custom", "category": "Business" }, { @@ -102,6 +98,11 @@ "url": "https://www.augmentcode.com/blog", "title": "Augment Code blog community", "fields": ["communityUrls.blog"] + }, + { + "url": "https://www.augmentcode.com/pricing", + "title": "Augment Code pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/extensions/cline.json b/manifests/extensions/cline.json index a41b625f..9daf1fb4 100644 --- a/manifests/extensions/cline.json +++ b/manifests/extensions/cline.json @@ -38,7 +38,17 @@ "description": "Cline 是一個開源的協作式編碼 Agent,用於複雜工作。它提供計畫執行工作流程,具有完全透明性、模型自由度和企業級安全的客戶端架構。" } }, - "verified": false, + "verified": true, + "sources": [ + { + "url": "https://cline.bot/pricing", + "title": "Cline pricing", + "fields": ["pricing", "resourceUrls.pricing"] + } + ], + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://cline.bot", "docsUrl": "https://cline.bot/docs", "vendor": "Cline", diff --git a/manifests/extensions/codex.json b/manifests/extensions/codex.json index f1bc8192..5da33724 100644 --- a/manifests/extensions/codex.json +++ b/manifests/extensions/codex.json @@ -39,7 +39,7 @@ "description": "OpenAI 的 Codex 是一個整合到 IDE 中的 AI 編碼助手擴充功能。透過自然語言指令讀取、修改和執行程式碼,支援建構、除錯和自動化編碼任務。" } }, - "verified": false, + "verified": true, "sources": [ { "url": "https://developers.openai.com/codex/ide", @@ -51,13 +51,23 @@ "title": "Codex open-source components", "fields": ["githubUrl", "license", "resourceUrls.issue"] }, + { + "url": "https://github.com/openai/codex", + "title": "Codex official repository", + "fields": ["githubUrl", "resourceUrls.issue"] + }, { "url": "https://openai.com/news", "title": "Codex blog community", "fields": ["communityUrls.blog"] + }, + { + "url": "https://chatgpt.com/codex/pricing/", + "title": "Codex pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ], - "lastVerifiedAt": "2026-07-21", + "lastVerifiedAt": "2026-07-30", "verifiedBy": "codex-agent", "confidence": "high", "websiteUrl": "https://openai.com/codex", @@ -68,7 +78,7 @@ "provider": "vscode-marketplace", "identifier": "openai.chatgpt" }, - "githubUrl": null, + "githubUrl": "https://github.com/openai/codex", "license": "Proprietary", "pricing": [ { @@ -103,7 +113,7 @@ "resourceUrls": { "download": "https://developers.openai.com/codex/ide", "changelog": "https://developers.openai.com/codex/changelog", - "pricing": "https://openai.com/pricing", + "pricing": "https://chatgpt.com/codex/pricing/", "mcp": null, "issue": "https://github.com/openai/codex/issues" }, diff --git a/manifests/extensions/continue.json b/manifests/extensions/continue.json index 1b9ce927..44390b32 100644 --- a/manifests/extensions/continue.json +++ b/manifests/extensions/continue.json @@ -55,6 +55,7 @@ "latestVersion", "githubUrl", "license", + "pricing", "resourceUrls.changelog", "resourceUrls.issue" ] @@ -85,7 +86,15 @@ "latestVersion": "2.0.0", "githubUrl": "https://github.com/continuedev/continue", "license": "Apache-2.0", - "pricing": [], + "pricing": [ + { + "name": "Open Source", + "value": 0, + "currency": null, + "per": null, + "category": "Individual" + } + ], "resourceUrls": { "download": "https://marketplace.visualstudio.com/items?itemName=Continue.continue", "changelog": "https://github.com/continuedev/continue/releases", diff --git a/manifests/extensions/droid.json b/manifests/extensions/droid.json index 36890ad4..bd4fad0b 100644 --- a/manifests/extensions/droid.json +++ b/manifests/extensions/droid.json @@ -39,7 +39,10 @@ "description": "AI 開發平台,提供 Droids —— 在工作流程中自動化軟體任務的自主編碼 Agent。Droids 重構程式碼、處理除錯和測試並生成功能。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://factory.ai", "docsUrl": "https://docs.factory.ai", "vendor": "Factory.ai", @@ -65,12 +68,19 @@ "per": "month", "category": "Individual" }, + { + "name": "Plus", + "value": 100, + "currency": "USD", + "per": "month", + "category": "Individual" + }, { "name": "Max", "value": 200, "currency": "USD", "per": "month", - "category": "Business" + "category": "Individual" }, { "name": "Enterprise", @@ -118,6 +128,11 @@ "url": "https://www.linkedin.com/company/factoryai", "title": "Droid linkedin community", "fields": ["communityUrls.linkedin"] + }, + { + "url": "https://docs.factory.ai/pricing/individuals", + "title": "Factory individual plans", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/extensions/github-copilot.json b/manifests/extensions/github-copilot.json index 941268a6..c011f3d9 100644 --- a/manifests/extensions/github-copilot.json +++ b/manifests/extensions/github-copilot.json @@ -38,7 +38,10 @@ "description": "GitHub Copilot 是一個 AI 結對程式設計師,幫助您更快地編寫程式碼並減少工作量。它從註釋和程式碼中提取上下文,建議單行程式碼和整個函式。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://github.com/features/copilot", "docsUrl": "https://docs.github.com/en/copilot", "vendor": "GitHub", @@ -47,14 +50,35 @@ "license": "Proprietary", "pricing": [ { - "name": "Copilot Individual", - "value": 10, + "name": "Free", + "value": 0, "currency": "USD", "per": "month", "category": "Individual" }, { - "name": "Copilot Business", + "name": "Pro", + "value": 10, + "currency": "USD", + "per": "user/month", + "category": "Individual" + }, + { + "name": "Pro+", + "value": 39, + "currency": "USD", + "per": "user/month", + "category": "Individual" + }, + { + "name": "Max", + "value": 100, + "currency": "USD", + "per": "user/month", + "category": "Individual" + }, + { + "name": "Business", "value": 19, "currency": "USD", "per": "user/month", @@ -97,6 +121,11 @@ "url": "https://github.blog/2021-06-29-introducing-github-copilot-ai-pair-programmer", "title": "GitHub Copilot blog community", "fields": ["communityUrls.blog"] + }, + { + "url": "https://github.com/features/copilot/plans", + "title": "GitHub Copilot plans and pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/extensions/jetbrains-junie.json b/manifests/extensions/jetbrains-junie.json index 2516e21a..6c9226c7 100644 --- a/manifests/extensions/jetbrains-junie.json +++ b/manifests/extensions/jetbrains-junie.json @@ -39,40 +39,50 @@ "description": "JetBrains Junie 是一個 AI 編碼 Agent,可以自主執行工作或與開發者協作。它獨立處理例行工作,同時協助複雜工作。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://www.jetbrains.com/junie", "docsUrl": "https://www.jetbrains.com/help/junie", "vendor": "JetBrains", "latestVersion": "1.0.0", - "githubUrl": null, + "githubUrl": "https://github.com/JetBrains/junie", "license": "Proprietary", "pricing": [ { - "name": "JetBrains AI Subscription", - "value": null, - "currency": null, - "per": "custom", + "name": "AI Free", + "value": 0, + "currency": "USD", + "per": "month", "category": "Individual" }, { - "name": "JetBrains AI Business", - "value": null, - "currency": null, - "per": "custom", - "category": "Business" + "name": "AI Pro", + "value": 10, + "currency": "USD", + "per": "month", + "category": "Individual" + }, + { + "name": "AI Ultimate", + "value": 30, + "currency": "USD", + "per": "month", + "category": "Individual" }, { - "name": "JetBrains AI Enterprise", - "value": null, - "currency": null, - "per": "custom", + "name": "AI Enterprise", + "value": 60, + "currency": "USD", + "per": "user/month", "category": "Enterprise" } ], "resourceUrls": { "download": "https://plugins.jetbrains.com/plugin/26104-junie-the-ai-coding-agent-by-jetbrains", "changelog": "https://www.jetbrains.com/idea/whatsnew", - "pricing": "https://www.jetbrains.com/idea/buy", + "pricing": "https://www.jetbrains.com/ai-ides/buy/", "mcp": null, "issue": "https://youtrack.jetbrains.com/issues" }, @@ -108,6 +118,16 @@ "url": "https://blog.jetbrains.com/junie", "title": "JetBrains Junie blog community", "fields": ["communityUrls.blog"] + }, + { + "url": "https://www.jetbrains.com/help/ai-assistant/licensing-and-subscriptions.html", + "title": "JetBrains AI plans and usage", + "fields": ["pricing", "resourceUrls.pricing"] + }, + { + "url": "https://github.com/JetBrains/junie", + "title": "Junie official repository", + "fields": ["githubUrl"] } ] } diff --git a/manifests/extensions/kimi-code.json b/manifests/extensions/kimi-code.json index dc254f43..bda6a423 100644 --- a/manifests/extensions/kimi-code.json +++ b/manifests/extensions/kimi-code.json @@ -43,7 +43,8 @@ }, { "url": "https://github.com/MoonshotAI/kimi-code", - "title": "Kimi Code repository" + "title": "Kimi Code repository", + "fields": ["pricing"] } ], "lastVerifiedAt": "2026-07-21", diff --git a/manifests/extensions/mistral-vibe.json b/manifests/extensions/mistral-vibe.json index 23f8ad8d..d226b833 100644 --- a/manifests/extensions/mistral-vibe.json +++ b/manifests/extensions/mistral-vibe.json @@ -35,7 +35,7 @@ "description": "Mistral Vibe for VS Code brings Mistral's coding agent into the editor for repository-aware chat, code changes, command execution, and agentic development workflows." } }, - "verified": false, + "verified": true, "sources": [ { "url": "https://mistral.ai/news/vibe-agent/", @@ -44,9 +44,14 @@ { "url": "https://docs.mistral.ai/vibe/code/overview", "title": "Mistral Vibe documentation" + }, + { + "url": "https://mistral.ai/pricing", + "title": "Mistral pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ], - "lastVerifiedAt": "2026-07-21", + "lastVerifiedAt": "2026-07-30", "verifiedBy": "codex-agent", "confidence": "high", "id": "mistral-vibe", @@ -105,7 +110,7 @@ "relatedProducts": [ { "type": "cli", - "productId": "mistral-vibe-cli" + "productId": "vibe-cli" } ], "supportedIdes": [ diff --git a/manifests/extensions/opencode-extension.json b/manifests/extensions/opencode-extension.json index 47ca4117..c4d0304b 100644 --- a/manifests/extensions/opencode-extension.json +++ b/manifests/extensions/opencode-extension.json @@ -43,7 +43,13 @@ }, { "url": "https://github.com/anomalyco/opencode", - "title": "OpenCode repository" + "title": "OpenCode repository", + "fields": ["pricing"] + }, + { + "url": "https://opencode.ai/zen", + "title": "OpenCode Zen pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ], "lastVerifiedAt": "2026-07-21", diff --git a/manifests/extensions/qoder.json b/manifests/extensions/qoder.json index afde2fa1..be192782 100644 --- a/manifests/extensions/qoder.json +++ b/manifests/extensions/qoder.json @@ -39,7 +39,10 @@ "description": "將自主 AI 代理引入 IDE 的智能編碼平台。具備程式碼自動完成、問答模式用於除錯,以及代理模式用於複雜的多步驟開發任務。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "medium", "websiteUrl": "https://qoder.com", "docsUrl": "https://docs.qoder.com", "vendor": "Alibaba", @@ -49,9 +52,30 @@ "pricing": [ { "name": "Free", - "value": null, + "value": 0, "currency": "USD", - "per": "Month", + "per": "month", + "category": "Individual" + }, + { + "name": "Pro", + "value": 10, + "currency": "USD", + "per": "month", + "category": "Individual" + }, + { + "name": "Pro+", + "value": 30, + "currency": "USD", + "per": "month", + "category": "Individual" + }, + { + "name": "Ultra", + "value": 100, + "currency": "USD", + "per": "month", "category": "Individual" } ], @@ -118,6 +142,11 @@ "url": "https://qoder.com/blog", "title": "Qoder blog community", "fields": ["communityUrls.blog"] + }, + { + "url": "https://qoder.com/zh/blog/qoder-subscriptions-are-here", + "title": "Qoder subscriptions", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/extensions/roo-code.json b/manifests/extensions/roo-code.json index 038cce74..131be339 100644 --- a/manifests/extensions/roo-code.json +++ b/manifests/extensions/roo-code.json @@ -51,6 +51,7 @@ "websiteUrl", "githubUrl", "license", + "pricing", "resourceUrls.changelog", "resourceUrls.issue" ] @@ -80,7 +81,15 @@ "latestVersion": "3.54.0", "githubUrl": "https://github.com/RooCodeInc/Roo-Code", "license": "Apache-2.0", - "pricing": [], + "pricing": [ + { + "name": "Open Source", + "value": 0, + "currency": null, + "per": null, + "category": "Individual" + } + ], "resourceUrls": { "download": "https://marketplace.visualstudio.com/items?itemName=RooVeterinaryInc.roo-cline", "changelog": "https://github.com/RooCodeInc/Roo-Code/releases", diff --git a/manifests/extensions/rovo-dev.json b/manifests/extensions/rovo-dev.json index bb4369f8..68711ada 100644 --- a/manifests/extensions/rovo-dev.json +++ b/manifests/extensions/rovo-dev.json @@ -39,7 +39,7 @@ "description": "Rovo Dev for VS Code is Atlassian's editor coding agent for code-aware chat, planning, edits, tests, change review, and access to Jira and Confluence context." } }, - "verified": false, + "verified": true, "sources": [ { "url": "https://www.atlassian.com/blog/announcements/rovo-dev-now-generally-available-in-vs-code", @@ -51,10 +51,16 @@ }, { "url": "https://www.atlassian.com/software/rovo-dev/pricing", - "title": "Rovo Dev pricing" + "title": "Rovo Dev pricing", + "fields": ["pricing", "resourceUrls.pricing"] + }, + { + "url": "https://github.com/atlassian/atlascode", + "title": "Atlassian for VS Code official repository", + "fields": ["githubUrl", "license", "resourceUrls.issue"] } ], - "lastVerifiedAt": "2026-07-21", + "lastVerifiedAt": "2026-07-30", "verifiedBy": "codex-agent", "confidence": "high", "websiteUrl": "https://marketplace.visualstudio.com/items?itemName=Atlassian.atlascode", @@ -65,16 +71,9 @@ "provider": "vscode-marketplace", "identifier": "Atlassian.atlascode" }, - "githubUrl": null, - "license": "Proprietary", + "githubUrl": "https://github.com/atlassian/atlascode", + "license": "Apache-2.0", "pricing": [ - { - "name": "Rovo Dev Free", - "value": 0, - "currency": null, - "per": "month", - "category": "Individual" - }, { "name": "Rovo Dev Standard", "value": 20, @@ -88,7 +87,7 @@ "changelog": "https://marketplace.visualstudio.com/items/Atlassian.atlascode/changelog", "pricing": "https://www.atlassian.com/software/rovo-dev/pricing", "mcp": null, - "issue": null + "issue": "https://github.com/atlassian/atlascode/issues" }, "communityUrls": { "linkedin": null, diff --git a/manifests/extensions/tabnine.json b/manifests/extensions/tabnine.json index f25cdb9c..ce519a9a 100644 --- a/manifests/extensions/tabnine.json +++ b/manifests/extensions/tabnine.json @@ -38,7 +38,17 @@ "description": "Tabnine 是一個 AI 程式碼補全工具,協助開發者更快、更準確地撰寫程式碼。它基於上下文提供智能程式碼建議,並從您的程式碼庫中學習。" } }, - "verified": false, + "verified": true, + "sources": [ + { + "url": "https://www.tabnine.com/pricing/", + "title": "Tabnine pricing", + "fields": ["pricing", "resourceUrls.pricing"] + } + ], + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://www.tabnine.com", "docsUrl": "https://docs.tabnine.com", "vendor": "Tabnine", @@ -47,31 +57,17 @@ "license": "Proprietary", "pricing": [ { - "name": "Starter (Free)", - "value": 0, - "currency": null, - "per": null, - "category": "Individual" - }, - { - "name": "Pro", - "value": 12, - "currency": "USD", - "per": "month", - "category": "Individual" - }, - { - "name": "Business", + "name": "Code Assistant Platform", "value": 39, "currency": "USD", "per": "user/month", "category": "Business" }, { - "name": "Enterprise", - "value": null, - "currency": null, - "per": "custom", + "name": "Agentic Platform", + "value": 59, + "currency": "USD", + "per": "user/month", "category": "Enterprise" } ], diff --git a/manifests/extensions/verdent.json b/manifests/extensions/verdent.json index 4f880482..6f5ce964 100644 --- a/manifests/extensions/verdent.json +++ b/manifests/extensions/verdent.json @@ -39,7 +39,10 @@ "description": "先進的代理編碼助手,協調多個 AI 代理並行處理複雜的軟體任務,具有結構化規劃、驗證和可自訂子代理。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://www.verdent.ai", "docsUrl": "https://docs.verdent.ai", "vendor": "Verdent AI", @@ -48,18 +51,46 @@ "license": "Proprietary", "pricing": [ { - "name": "Free Trial", - "value": 0, - "currency": null, - "per": null, + "name": "Lite", + "value": 5, + "currency": "USD", + "per": "month", "category": "Individual" }, { - "name": "Pro", + "name": "Starter", "value": 19, "currency": "USD", "per": "month", "category": "Individual" + }, + { + "name": "Pro", + "value": 59, + "currency": "USD", + "per": "month", + "category": "Individual" + }, + { + "name": "Max", + "value": 179, + "currency": "USD", + "per": "month", + "category": "Individual" + }, + { + "name": "Teams", + "value": 20, + "currency": "USD", + "per": "user/month", + "category": "Business" + }, + { + "name": "Enterprise", + "value": null, + "currency": null, + "per": "custom", + "category": "Enterprise" } ], "resourceUrls": { @@ -101,6 +132,11 @@ "url": "https://x.com/verdent", "title": "Verdent twitter community", "fields": ["communityUrls.twitter"] + }, + { + "url": "https://www.verdent.ai/pricing", + "title": "Verdent pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/ides/antigravity.json b/manifests/ides/antigravity.json index 4c55a8b2..d76ea0e2 100644 --- a/manifests/ides/antigravity.json +++ b/manifests/ides/antigravity.json @@ -39,7 +39,10 @@ "description": "Google 的 AI 驅動集成開發環境(IDE),用於現代軟件開發,具有先進的 AI 功能。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://antigravity.google", "docsUrl": "https://antigravity.google/docs", "vendor": "Google", @@ -48,25 +51,25 @@ "license": "Proprietary", "pricing": [ { - "name": "Individual", - "value": 0, - "currency": null, - "per": null, + "name": "Google AI Pro", + "value": 20, + "currency": "USD", + "per": "month", "category": "Individual" }, { - "name": "Team", - "value": null, - "currency": null, - "per": "custom", - "category": "Business" + "name": "Google AI Ultra 100", + "value": 100, + "currency": "USD", + "per": "month", + "category": "Individual" }, { - "name": "Enterprise", - "value": null, - "currency": null, - "per": "custom", - "category": "Enterprise" + "name": "Google AI Ultra 200", + "value": 200, + "currency": "USD", + "per": "month", + "category": "Individual" } ], "resourceUrls": { @@ -136,6 +139,11 @@ "url": "https://antigravity.google/blog", "title": "Antigravity blog community", "fields": ["communityUrls.blog"] + }, + { + "url": "https://antigravity.google/blog/changes-to-antigravity-plans", + "title": "Changes to Antigravity plans", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/ides/codebuddy.json b/manifests/ides/codebuddy.json index d4746709..212f49db 100644 --- a/manifests/ides/codebuddy.json +++ b/manifests/ides/codebuddy.json @@ -38,7 +38,10 @@ "description": "騰訊的 AI 編碼助手,提供智能代碼補全、多文件代碼生成(Craft 模式)、設計轉代碼轉換和集成部署工具。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://www.codebuddy.ai", "docsUrl": "https://www.codebuddy.ai/docs/ide", "vendor": "Tencent", @@ -62,9 +65,9 @@ }, { "name": "Teams", - "value": null, - "currency": null, - "per": "custom", + "value": 40, + "currency": "USD", + "per": "user/month", "category": "Business" } ], @@ -104,6 +107,11 @@ "url": "https://www.codebuddy.ai/blog", "title": "CodeBuddy IDE blog community", "fields": ["communityUrls.blog"] + }, + { + "url": "https://www.codebuddy.ai/docs/ide/Account/pricing", + "title": "CodeBuddy pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/ides/cursor.json b/manifests/ides/cursor.json index b40383be..0ceac823 100644 --- a/manifests/ides/cursor.json +++ b/manifests/ides/cursor.json @@ -38,7 +38,10 @@ "description": "基於 VS Code 構建的 AI 驅動代碼編輯器,具有高級 AI 功能,用於代碼生成、編輯和理解。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://cursor.com", "docsUrl": "https://cursor.com/docs", "vendor": "Anysphere", @@ -161,6 +164,11 @@ "url": "https://cursor.com/blog", "title": "Cursor blog community", "fields": ["communityUrls.blog"] + }, + { + "url": "https://cursor.com/pricing", + "title": "Cursor pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/ides/intellij-idea.json b/manifests/ides/intellij-idea.json index b9a478ae..c1a51820 100644 --- a/manifests/ides/intellij-idea.json +++ b/manifests/ides/intellij-idea.json @@ -38,7 +38,10 @@ "description": "功能強大的 Java IDE,具有智能代碼輔助、重構工具和多語言支持。提供社區版(免費)和旗艦版(付費)兩個版本。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "medium", "websiteUrl": "https://www.jetbrains.com/idea", "docsUrl": "https://www.jetbrains.com/help/idea", "vendor": "JetBrains", @@ -125,6 +128,11 @@ "url": "https://blog.jetbrains.com/idea", "title": "IntelliJ IDEA blog community", "fields": ["communityUrls.blog"] + }, + { + "url": "https://www.jetbrains.com/idea/buy/", + "title": "IntelliJ IDEA pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/ides/kiro.json b/manifests/ides/kiro.json index d1c8880e..8ee4a864 100644 --- a/manifests/ides/kiro.json +++ b/manifests/ides/kiro.json @@ -38,7 +38,10 @@ "description": "AWS 的智能 IDE,為 VS Code 帶來規範驅動開發。使用 AI Agent 將自然語言規範轉化為代碼、自動化任務並與工作流集成。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://kiro.dev", "docsUrl": "https://kiro.dev/docs", "vendor": "AWS", @@ -67,6 +70,13 @@ "per": "month", "category": "Individual" }, + { + "name": "Pro Max", + "value": 100, + "currency": "USD", + "per": "user/month", + "category": "Individual" + }, { "name": "Power", "value": 200, @@ -129,6 +139,11 @@ "url": "https://kiro.dev/blog", "title": "Kiro blog community", "fields": ["communityUrls.blog"] + }, + { + "url": "https://kiro.dev/pricing", + "title": "Kiro pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/ides/trae.json b/manifests/ides/trae.json index e3734f7d..5bb8ae4b 100644 --- a/manifests/ides/trae.json +++ b/manifests/ides/trae.json @@ -80,16 +80,21 @@ "url": "https://www.trae.ai/blog", "title": "TRAE IDE blog community", "fields": ["communityUrls.blog"] + }, + { + "url": "https://github.com/Trae-AI/TRAE", + "title": "TRAE official repository", + "fields": ["githubUrl", "resourceUrls.issue"] } ], - "lastVerifiedAt": "2026-07-21", + "lastVerifiedAt": "2026-07-30", "verifiedBy": "codex-agent", "confidence": "high", "websiteUrl": "https://www.trae.ai/solo-code", "docsUrl": "https://docs.trae.ai", "vendor": "ByteDance", "latestVersion": "3.5.71", - "githubUrl": null, + "githubUrl": "https://github.com/Trae-AI/TRAE", "license": "Proprietary", "pricing": [ { @@ -133,7 +138,7 @@ "changelog": "https://www.trae.ai/changelog", "pricing": "https://www.trae.ai/pricing", "mcp": null, - "issue": null + "issue": "https://github.com/Trae-AI/TRAE/issues" }, "communityUrls": { "linkedin": null, diff --git a/manifests/ides/vscode.json b/manifests/ides/vscode.json index 677fb5be..7471c73c 100644 --- a/manifests/ides/vscode.json +++ b/manifests/ides/vscode.json @@ -100,7 +100,7 @@ { "url": "https://github.com/microsoft/vscode", "title": "Visual Studio Code github community", - "fields": ["communityUrls.github"] + "fields": ["communityUrls.github", "pricing"] }, { "url": "https://www.reddit.com/r/vscode", diff --git a/manifests/ides/windsurf.json b/manifests/ides/windsurf.json index cd450801..90a63b9e 100644 --- a/manifests/ides/windsurf.json +++ b/manifests/ides/windsurf.json @@ -38,7 +38,10 @@ "description": "AI 原生 IDE,具有智能助手 Cascade,可自主生成、編輯、測試和部署代碼。集成 MCP 服務器和插件鉤子,讓開發者保持心流狀態。" } }, - "verified": false, + "verified": true, + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://windsurf.com", "docsUrl": "https://docs.windsurf.com", "vendor": "Cognition", @@ -55,14 +58,28 @@ }, { "name": "Pro", - "value": 15, + "value": 20, "currency": "USD", "per": "month", "category": "Individual" }, { - "name": "Teams", - "value": 30, + "name": "Max", + "value": 200, + "currency": "USD", + "per": "month", + "category": "Individual" + }, + { + "name": "Teams Base", + "value": 80, + "currency": "USD", + "per": "month", + "category": "Business" + }, + { + "name": "Teams Full Developer Seat", + "value": 40, "currency": "USD", "per": "user/month", "category": "Business" @@ -132,6 +149,11 @@ "url": "https://windsurf.com/blog", "title": "Windsurf Editor blog community", "fields": ["communityUrls.blog"] + }, + { + "url": "https://windsurf.com/pricing", + "title": "Windsurf and Devin pricing", + "fields": ["pricing", "resourceUrls.pricing"] } ] } diff --git a/manifests/ides/zed.json b/manifests/ides/zed.json index b31a93a4..62a16573 100644 --- a/manifests/ides/zed.json +++ b/manifests/ides/zed.json @@ -38,7 +38,17 @@ "description": "用 Rust 構建的下一代代碼編輯器,專為與人類和 AI 的高性能協作而設計。具有智能編輯、多緩衝區編輯和原生 Git 支持。" } }, - "verified": false, + "verified": true, + "sources": [ + { + "url": "https://zed.dev/pricing", + "title": "Zed pricing", + "fields": ["pricing", "resourceUrls.pricing"] + } + ], + "lastVerifiedAt": "2026-07-30", + "verifiedBy": "codex-agent", + "confidence": "high", "websiteUrl": "https://zed.dev", "docsUrl": "https://zed.dev/docs", "vendor": "Zed Industries", @@ -54,8 +64,15 @@ "category": "Individual" }, { - "name": "Teams", - "value": 15, + "name": "Pro", + "value": 10, + "currency": "USD", + "per": "month", + "category": "Individual" + }, + { + "name": "Business", + "value": 30, "currency": "USD", "per": "user/month", "category": "Business" diff --git a/src/app/[locale]/clis/comparison/page.client.tsx b/src/app/[locale]/clis/comparison/page.client.tsx index a4f27568..0a9525ea 100644 --- a/src/app/[locale]/clis/comparison/page.client.tsx +++ b/src/app/[locale]/clis/comparison/page.client.tsx @@ -7,12 +7,13 @@ import Footer from '@/components/Footer' import Header from '@/components/Header' import { Breadcrumb } from '@/components/navigation/Breadcrumb' import ComparisonTable, { type ComparisonColumn } from '@/components/product/ComparisonTable' +import { PricingSummaryValue } from '@/components/product/ProductPricing' import { Link } from '@/i18n/navigation' import { withVendorCommunityUrlsForCatalog } from '@/lib/community-urls' import { clisData, vendorsData } from '@/lib/generated' import { getGithubStars } from '@/lib/generated/github-stars' import { renderLicense } from '@/lib/license' -import { formatPrice, type PricingTier } from '@/lib/pricing' +import type { PricingTier } from '@/lib/pricing' import type { ManifestCLI, ManifestVendor } from '@/types/manifests' const clis = withVendorCommunityUrlsForCatalog( @@ -252,12 +253,7 @@ export default function CLIComparisonPageClient({ locale: _locale }: Props) { label: tPage('columns.startingPrice'), render: (_: unknown, item: Record) => { const pricing = item.pricing as PricingTier[] - if (!pricing || pricing.length === 0) return '-' - const paidPlans = pricing.filter(p => p.value && p.value > 0) - if (paidPlans.length === 0) return tPage('pricingValues.freeOnly') - const minPrice = Math.min(...paidPlans.map(p => p.value as number)) - const minPlan = paidPlans.find(p => p.value === minPrice) - return minPlan ? formatPrice(minPlan) : '-' + return }, }, { @@ -265,12 +261,7 @@ export default function CLIComparisonPageClient({ locale: _locale }: Props) { label: tPage('columns.maxPrice'), render: (_: unknown, item: Record) => { const pricing = item.pricing as PricingTier[] - if (!pricing || pricing.length === 0) return '-' - const paidPlans = pricing.filter(p => p.value && p.value > 0) - if (paidPlans.length === 0) return '-' - const maxPrice = Math.max(...paidPlans.map(p => p.value as number)) - const maxPlan = paidPlans.find(p => p.value === maxPrice) - return maxPlan ? formatPrice(maxPlan) : '-' + return }, }, ] diff --git a/src/app/[locale]/extensions/comparison/page.client.tsx b/src/app/[locale]/extensions/comparison/page.client.tsx index 204f3d91..ae19c636 100644 --- a/src/app/[locale]/extensions/comparison/page.client.tsx +++ b/src/app/[locale]/extensions/comparison/page.client.tsx @@ -6,12 +6,13 @@ import Footer from '@/components/Footer' import Header from '@/components/Header' import { Breadcrumb } from '@/components/navigation/Breadcrumb' import ComparisonTable, { type ComparisonColumn } from '@/components/product/ComparisonTable' +import { PricingSummaryValue } from '@/components/product/ProductPricing' import { Link } from '@/i18n/navigation' import { withVendorCommunityUrlsForCatalog } from '@/lib/community-urls' import { extensionsData, vendorsData } from '@/lib/generated' import { getGithubStars } from '@/lib/generated/github-stars' import { renderLicense } from '@/lib/license' -import { formatPrice, type PricingTier } from '@/lib/pricing' +import type { PricingTier } from '@/lib/pricing' import type { ManifestExtension, ManifestVendor } from '@/types/manifests' const extensions = withVendorCommunityUrlsForCatalog( @@ -238,12 +239,7 @@ export default function ExtensionComparisonPageClient({ locale: _locale }: Props label: tPage('columns.startingPrice'), render: (_: unknown, item: Record) => { const pricing = item.pricing as PricingTier[] - if (!pricing || pricing.length === 0) return tPage('pricingValues.free') - const paidPlans = pricing.filter(p => p.value && p.value > 0) - if (paidPlans.length === 0) return tPage('pricingValues.freeOnly') - const minPrice = Math.min(...paidPlans.map(p => p.value as number)) - const minPlan = paidPlans.find(p => p.value === minPrice) - return minPlan ? formatPrice(minPlan) : '-' + return }, }, { @@ -251,12 +247,7 @@ export default function ExtensionComparisonPageClient({ locale: _locale }: Props label: tPage('columns.maxPrice'), render: (_: unknown, item: Record) => { const pricing = item.pricing as PricingTier[] - if (!pricing || pricing.length === 0) return '-' - const paidPlans = pricing.filter(p => p.value && p.value > 0) - if (paidPlans.length === 0) return '-' - const maxPrice = Math.max(...paidPlans.map(p => p.value as number)) - const maxPlan = paidPlans.find(p => p.value === maxPrice) - return maxPlan ? formatPrice(maxPlan) : '-' + return }, }, ] diff --git a/src/app/[locale]/ides/comparison/page.client.tsx b/src/app/[locale]/ides/comparison/page.client.tsx index 3e032d81..1acd78cd 100644 --- a/src/app/[locale]/ides/comparison/page.client.tsx +++ b/src/app/[locale]/ides/comparison/page.client.tsx @@ -7,12 +7,13 @@ import Footer from '@/components/Footer' import Header from '@/components/Header' import { Breadcrumb } from '@/components/navigation/Breadcrumb' import ComparisonTable, { type ComparisonColumn } from '@/components/product/ComparisonTable' +import { PricingSummaryValue } from '@/components/product/ProductPricing' import { Link } from '@/i18n/navigation' import { withVendorCommunityUrlsForCatalog } from '@/lib/community-urls' import { idesData, vendorsData } from '@/lib/generated' import { getGithubStars } from '@/lib/generated/github-stars' import { renderLicense } from '@/lib/license' -import { formatPrice, type PricingTier } from '@/lib/pricing' +import type { PricingTier } from '@/lib/pricing' import type { ManifestIDE, ManifestVendor } from '@/types/manifests' const ides = withVendorCommunityUrlsForCatalog( @@ -252,12 +253,7 @@ export default function IDEComparisonPageClient({ locale: _locale }: Props) { label: tPage('columns.startingPrice'), render: (_: unknown, item: Record) => { const pricing = item.pricing as PricingTier[] - if (!pricing || pricing.length === 0) return '-' - const paidPlans = pricing.filter(p => p.value && p.value > 0) - if (paidPlans.length === 0) return tPage('pricingValues.freeOnly') - const minPrice = Math.min(...paidPlans.map(p => p.value as number)) - const minPlan = paidPlans.find(p => p.value === minPrice) - return minPlan ? formatPrice(minPlan) : '-' + return }, }, { @@ -265,12 +261,7 @@ export default function IDEComparisonPageClient({ locale: _locale }: Props) { label: tPage('columns.maxPrice'), render: (_: unknown, item: Record) => { const pricing = item.pricing as PricingTier[] - if (!pricing || pricing.length === 0) return '-' - const paidPlans = pricing.filter(p => p.value && p.value > 0) - if (paidPlans.length === 0) return '-' - const maxPrice = Math.max(...paidPlans.map(p => p.value as number)) - const maxPlan = paidPlans.find(p => p.value === maxPrice) - return maxPlan ? formatPrice(maxPlan) : '-' + return }, }, ] diff --git a/src/components/product/ProductPricing.tsx b/src/components/product/ProductPricing.tsx index 9ee7c465..925b5b19 100644 --- a/src/components/product/ProductPricing.tsx +++ b/src/components/product/ProductPricing.tsx @@ -1,11 +1,67 @@ -import { useTranslations } from 'next-intl' -import { formatPrice, type PricingTier } from '@/lib/pricing' +import { useLocale, useTranslations } from 'next-intl' +import { getPricingSummary, type PricingBoundary, type PricingTier } from '@/lib/pricing' export interface ProductPricingProps { pricing: PricingTier[] pricingUrl?: string } +type PricingSummaryValueProps = { + pricing: PricingTier[] | null | undefined + boundary: PricingBoundary +} + +function NumericPricingValue({ tier }: { tier: PricingTier & { value: number } }) { + const locale = useLocale() + const tComponent = useTranslations('components.product') + const price = new Intl.NumberFormat(locale, { + style: 'currency', + currency: tier.currency ?? 'USD', + maximumFractionDigits: 2, + }).format(tier.value) + + switch (tier.per?.toLowerCase()) { + case 'month': + return tComponent('productPricing.perMonth', { price }) + case 'user/month': + return tComponent('productPricing.perUserMonth', { price }) + case 'year': + return tComponent('productPricing.perYear', { price }) + case 'hour': + return tComponent('productPricing.perHour', { price }) + case 'credit': + return tComponent('productPricing.perCredit', { price }) + default: + return price + } +} + +export function PricingSummaryValue({ pricing, boundary }: PricingSummaryValueProps) { + const tComponent = useTranslations('components.product') + const tShared = useTranslations('shared') + const summary = getPricingSummary(pricing, boundary) + + if (summary.kind === 'numeric') return + if (summary.kind === 'usage-based') return tComponent('productPricing.usageBased') + if (summary.kind === 'custom') return tComponent('productPricing.custom') + if (summary.kind === 'free-only') return tComponent('productPricing.freeOnly') + return tShared('modelPricing.notAvailable') +} + +function PricingTierValue({ tier }: { tier: PricingTier }) { + const tComponent = useTranslations('components.product') + + if (tier.value === 0) return tComponent('productPricing.free') + if (tier.value === null) { + const summary = getPricingSummary([tier], 'min') + return summary.kind === 'usage-based' + ? tComponent('productPricing.usageBased') + : tComponent('productPricing.custom') + } + + return +} + export function ProductPricing({ pricing, pricingUrl }: ProductPricingProps) { const tShared = useTranslations('shared') @@ -35,7 +91,7 @@ export function ProductPricing({ pricing, pricingUrl }: ProductPricingProps) {

{tier.name}

- {formatPrice(tier as PricingTier)} +

))} diff --git a/src/lib/generated/clis.ts b/src/lib/generated/clis.ts index 07eab7b4..9d391a2e 100644 --- a/src/lib/generated/clis.ts +++ b/src/lib/generated/clis.ts @@ -7,7 +7,7 @@ import AmazonQDeveloperCli from '../../../manifests/clis/amazon-q-developer-cli.json' import AmpCli from '../../../manifests/clis/amp-cli.json' import AntigravityCli from '../../../manifests/clis/antigravity-cli.json' -import AugmentCodeCli from '../../../manifests/clis/augment-code-cli.json' +import AuggieCli from '../../../manifests/clis/auggie-cli.json' import ClaudeCodeCli from '../../../manifests/clis/claude-code-cli.json' import ClineCli from '../../../manifests/clis/cline-cli.json' import CodebuddyCli from '../../../manifests/clis/codebuddy-cli.json' @@ -24,20 +24,20 @@ import KiloCodeCli from '../../../manifests/clis/kilo-code-cli.json' import KimiCli from '../../../manifests/clis/kimi-cli.json' import KiroCli from '../../../manifests/clis/kiro-cli.json' import Kode from '../../../manifests/clis/kode.json' -import MistralVibeCli from '../../../manifests/clis/mistral-vibe-cli.json' import NeovateCode from '../../../manifests/clis/neovate-code.json' import Omp from '../../../manifests/clis/omp.json' import Opencode from '../../../manifests/clis/opencode.json' import QoderCli from '../../../manifests/clis/qoder-cli.json' import QwenCode from '../../../manifests/clis/qwen-code.json' import RovoDevCli from '../../../manifests/clis/rovo-dev-cli.json' +import VibeCli from '../../../manifests/clis/vibe-cli.json' import type { ManifestCLI } from '../../types/manifests' export const clisData = [ AmazonQDeveloperCli, AmpCli, AntigravityCli, - AugmentCodeCli, + AuggieCli, ClaudeCodeCli, ClineCli, CodebuddyCli, @@ -54,13 +54,13 @@ export const clisData = [ KimiCli, KiroCli, Kode, - MistralVibeCli, NeovateCode, Omp, Opencode, QoderCli, QwenCode, RovoDevCli, + VibeCli, ] as unknown as ManifestCLI[] export type Cli = typeof AmazonQDeveloperCli diff --git a/src/lib/pricing.ts b/src/lib/pricing.ts index 53b9c799..67f2eddb 100644 --- a/src/lib/pricing.ts +++ b/src/lib/pricing.ts @@ -8,12 +8,54 @@ export interface PricingTier { category: string } +export type PricingBoundary = 'min' | 'max' + +export type PricingSummary = + | { kind: 'numeric'; tier: PricingTier & { value: number } } + | { kind: 'free-only' | 'custom' | 'usage-based' | 'not-available' } + const CURRENCY_SYMBOLS: Record = { USD: '$', CNY: '¥', EUR: '€', } +const NON_USAGE_PERIODS = new Set(['custom', 'subscription']) + +function isUsageBasedTier(tier: PricingTier): boolean { + if (tier.value !== null || !tier.per) return false + return !NON_USAGE_PERIODS.has(tier.per.toLowerCase()) +} + +/** + * Summarize a product's published pricing without treating custom or usage-based + * plans as missing data. + */ +export function getPricingSummary( + pricing: PricingTier[] | null | undefined, + boundary: PricingBoundary +): PricingSummary { + if (!pricing || pricing.length === 0) return { kind: 'not-available' } + + const numericPlans = pricing.filter( + (tier): tier is PricingTier & { value: number } => tier.value !== null && tier.value > 0 + ) + if (numericPlans.length > 0) { + const targetValue = + boundary === 'min' + ? Math.min(...numericPlans.map(tier => tier.value)) + : Math.max(...numericPlans.map(tier => tier.value)) + const tier = numericPlans.find(plan => plan.value === targetValue) + if (tier) return { kind: 'numeric', tier } + } + + if (pricing.some(isUsageBasedTier)) return { kind: 'usage-based' } + if (pricing.some(tier => tier.value === null)) return { kind: 'custom' } + if (pricing.some(tier => tier.value === 0)) return { kind: 'free-only' } + + return { kind: 'not-available' } +} + /** * Format pricing tier for display * Examples: diff --git a/tests/pricing.test.ts b/tests/pricing.test.ts new file mode 100644 index 00000000..a4c7ee77 --- /dev/null +++ b/tests/pricing.test.ts @@ -0,0 +1,50 @@ +import { describe, expect, it } from 'vitest' +import { getPricingSummary, type PricingTier } from '@/lib/pricing' + +describe('product pricing summaries', () => { + it('selects the lowest and highest published numeric prices', () => { + const pricing: PricingTier[] = [ + { name: 'Free', value: 0, currency: 'USD', per: 'month', category: 'Individual' }, + { name: 'Pro', value: 20, currency: 'USD', per: 'month', category: 'Individual' }, + { name: 'Max', value: 200, currency: 'USD', per: 'month', category: 'Individual' }, + { + name: 'Enterprise', + value: null, + currency: null, + per: 'custom', + category: 'Enterprise', + }, + ] + + expect(getPricingSummary(pricing, 'min')).toEqual({ kind: 'numeric', tier: pricing[1] }) + expect(getPricingSummary(pricing, 'max')).toEqual({ kind: 'numeric', tier: pricing[2] }) + }) + + it('distinguishes usage-based, custom, free-only, and unavailable pricing', () => { + expect( + getPricingSummary( + [ + { name: 'Free', value: 0, currency: null, per: null, category: 'Individual' }, + { + name: 'Usage', + value: null, + currency: 'USD', + per: 'request', + category: 'Individual', + }, + ], + 'min' + ) + ).toEqual({ kind: 'usage-based' }) + expect( + getPricingSummary( + [{ name: 'Enterprise', value: null, per: 'custom', category: 'Enterprise' }], + 'max' + ) + ).toEqual({ kind: 'custom' }) + expect( + getPricingSummary([{ name: 'Open Source', value: 0, category: 'Individual' }], 'max') + ).toEqual({ kind: 'free-only' }) + expect(getPricingSummary([], 'min')).toEqual({ kind: 'not-available' }) + }) +}) diff --git a/tests/validate/githubStars.consistency.test.ts b/tests/validate/githubStars.consistency.test.ts index acbf8fc6..fd926615 100644 --- a/tests/validate/githubStars.consistency.test.ts +++ b/tests/validate/githubStars.consistency.test.ts @@ -47,6 +47,10 @@ function getGithubStarIds(githubStars: unknown, category: string): string[] { function validateGithubStarsConsistency(rootDir: string): string[] { const failures: string[] = [] const categories = ['extensions', 'clis', 'desktops', 'ides'] as const + const starsByRepository = new Map< + string, + Array<{ category: (typeof categories)[number]; id: string; stars: number | null }> + >() const githubStarsPath = path.join(rootDir, 'data', 'github-stars.json') const githubStars = readJsonFile(githubStarsPath) @@ -76,11 +80,29 @@ function validateGithubStarsConsistency(rootDir: string): string[] { const manifestPath = path.join(rootDir, 'manifests', category, `${id}.json`) const manifest = readJsonFile(manifestPath) as Record - if (manifest.githubUrl === null && categoryStars[id] !== null) { + const stars = categoryStars[id] as number | null + if (manifest.githubUrl === null && stars !== null) { failures.push( `[${category}] ${id} has githubUrl: null but a non-null star count in data/github-stars.json` ) } + + if (typeof manifest.githubUrl === 'string') { + const repositoryEntries = starsByRepository.get(manifest.githubUrl) ?? [] + repositoryEntries.push({ category, id, stars }) + starsByRepository.set(manifest.githubUrl, repositoryEntries) + } + } + } + + for (const [repositoryUrl, entries] of starsByRepository) { + const uniqueValues = new Set(entries.map(entry => entry.stars)) + if (uniqueValues.size > 1) { + failures.push( + `${repositoryUrl} has inconsistent star counts:\n${entries + .map(entry => `- [${entry.category}] ${entry.id}: ${String(entry.stars)}`) + .join('\n')}` + ) } } diff --git a/translations/de/components/product.json b/translations/de/components/product.json index 8d1904c6..b9158faf 100644 --- a/translations/de/components/product.json +++ b/translations/de/components/product.json @@ -46,7 +46,17 @@ "productHero": { "runtime": "Laufzeit" }, - "productPricing": {}, + "productPricing": { + "custom": "Vertrieb kontaktieren", + "free": "Kostenlos", + "freeOnly": "Nur kostenlos", + "perCredit": "{price}/Guthaben", + "perHour": "{price}/Stunde", + "perMonth": "{price}/Monat", + "perUserMonth": "{price}/Nutzer/Monat", + "perYear": "{price}/Jahr", + "usageBased": "Nach Verbrauch" + }, "relatedProducts": { "title": "Verwandte Produkte", "viewProduct": "Produkt ansehen" diff --git a/translations/de/pages/comparison.json b/translations/de/pages/comparison.json index 4c581873..68b9990a 100644 --- a/translations/de/pages/comparison.json +++ b/translations/de/pages/comparison.json @@ -31,9 +31,5 @@ "backTo": "Zurück zu Modellen", "subtitle": "Vergleichen Sie Spezifikationen und Preise von AI-Coding-Modellen nebeneinander.", "title": "AI-Coding-Modell-Vergleich" - }, - "pricingValues": { - "free": "Kostenlos", - "freeOnly": "Nur kostenlos" } } diff --git a/translations/en/components/product.json b/translations/en/components/product.json index cc1cab95..a73f0b65 100644 --- a/translations/en/components/product.json +++ b/translations/en/components/product.json @@ -46,7 +46,17 @@ "productHero": { "runtime": "Runtime" }, - "productPricing": {}, + "productPricing": { + "custom": "Contact sales", + "free": "Free", + "freeOnly": "Free only", + "perCredit": "{price}/credit", + "perHour": "{price}/hour", + "perMonth": "{price}/month", + "perUserMonth": "{price}/user/month", + "perYear": "{price}/year", + "usageBased": "Usage-based" + }, "relatedProducts": { "title": "Related Products", "viewProduct": "View Product" diff --git a/translations/en/pages/comparison.json b/translations/en/pages/comparison.json index ad8db2e0..5b3f9584 100644 --- a/translations/en/pages/comparison.json +++ b/translations/en/pages/comparison.json @@ -31,9 +31,5 @@ "backTo": "Back to Models", "subtitle": "Compare specifications and pricing of AI coding models side by side.", "title": "AI Coding Model Comparison" - }, - "pricingValues": { - "free": "Free", - "freeOnly": "Free only" } } diff --git a/translations/es/components/product.json b/translations/es/components/product.json index f1b9b63b..eed0a59d 100644 --- a/translations/es/components/product.json +++ b/translations/es/components/product.json @@ -46,7 +46,17 @@ "productHero": { "runtime": "Tiempo de ejecución" }, - "productPricing": {}, + "productPricing": { + "custom": "Contactar con ventas", + "free": "Gratis", + "freeOnly": "Solo gratis", + "perCredit": "{price}/crédito", + "perHour": "{price}/hora", + "perMonth": "{price}/mes", + "perUserMonth": "{price}/usuario/mes", + "perYear": "{price}/año", + "usageBased": "Basado en el uso" + }, "relatedProducts": { "title": "Productos relacionados", "viewProduct": "Ver producto" diff --git a/translations/es/pages/comparison.json b/translations/es/pages/comparison.json index 4e8a536b..43fa6b34 100644 --- a/translations/es/pages/comparison.json +++ b/translations/es/pages/comparison.json @@ -31,9 +31,5 @@ "backTo": "Volver a Modelos", "subtitle": "Modelos de lenguaje grandes optimizados para generación y análisis de código", "title": "Comparación de Modelos de Codificación con IA" - }, - "pricingValues": { - "free": "Gratis", - "freeOnly": "Solo gratis" } } diff --git a/translations/fr/components/product.json b/translations/fr/components/product.json index 4a4557f3..f7a3db98 100644 --- a/translations/fr/components/product.json +++ b/translations/fr/components/product.json @@ -46,7 +46,17 @@ "productHero": { "runtime": "Exécution" }, - "productPricing": {}, + "productPricing": { + "custom": "Contacter le service commercial", + "free": "Gratuit", + "freeOnly": "Gratuit uniquement", + "perCredit": "{price}/crédit", + "perHour": "{price}/heure", + "perMonth": "{price}/mois", + "perUserMonth": "{price}/utilisateur/mois", + "perYear": "{price}/an", + "usageBased": "À l’usage" + }, "relatedProducts": { "title": "Produits associés", "viewProduct": "Voir le produit" diff --git a/translations/fr/pages/comparison.json b/translations/fr/pages/comparison.json index e87902b1..ab56dac9 100644 --- a/translations/fr/pages/comparison.json +++ b/translations/fr/pages/comparison.json @@ -31,9 +31,5 @@ "backTo": "Retour aux Modèles", "subtitle": "Comparez les spécifications et les tarifs des modèles de codage AI côte à côte.", "title": "Comparaison de Modèles de Codage IA" - }, - "pricingValues": { - "free": "Gratuit", - "freeOnly": "Gratuit uniquement" } } diff --git a/translations/id/components/product.json b/translations/id/components/product.json index 8df38f44..74153fe8 100644 --- a/translations/id/components/product.json +++ b/translations/id/components/product.json @@ -46,7 +46,17 @@ "productHero": { "runtime": "Runtime" }, - "productPricing": {}, + "productPricing": { + "custom": "Hubungi penjualan", + "free": "Gratis", + "freeOnly": "Hanya gratis", + "perCredit": "{price}/kredit", + "perHour": "{price}/jam", + "perMonth": "{price}/bulan", + "perUserMonth": "{price}/pengguna/bulan", + "perYear": "{price}/tahun", + "usageBased": "Berdasarkan penggunaan" + }, "relatedProducts": { "title": "Produk Terkait", "viewProduct": "Lihat Produk" diff --git a/translations/id/pages/comparison.json b/translations/id/pages/comparison.json index 7d432409..ffb42ec7 100644 --- a/translations/id/pages/comparison.json +++ b/translations/id/pages/comparison.json @@ -31,9 +31,5 @@ "backTo": "Kembali ke Model", "subtitle": "Model bahasa besar yang dioptimalkan untuk pembuatan dan analisis kode", "title": "Perbandingan Model Coding AI" - }, - "pricingValues": { - "free": "Gratis", - "freeOnly": "Hanya gratis" } } diff --git a/translations/ja/components/product.json b/translations/ja/components/product.json index 0c9bdf5b..9fd3465b 100644 --- a/translations/ja/components/product.json +++ b/translations/ja/components/product.json @@ -46,7 +46,17 @@ "productHero": { "runtime": "ランタイム" }, - "productPricing": {}, + "productPricing": { + "custom": "営業に問い合わせ", + "free": "無料", + "freeOnly": "無料のみ", + "perCredit": "{price}/クレジット", + "perHour": "{price}/時間", + "perMonth": "{price}/月", + "perUserMonth": "{price}/ユーザー/月", + "perYear": "{price}/年", + "usageBased": "従量制" + }, "relatedProducts": { "title": "関連製品", "viewProduct": "製品を表示" diff --git a/translations/ja/pages/comparison.json b/translations/ja/pages/comparison.json index 7cd30abe..4b3268d4 100644 --- a/translations/ja/pages/comparison.json +++ b/translations/ja/pages/comparison.json @@ -31,9 +31,5 @@ "backTo": "モデルに戻る", "subtitle": "コード生成と分析に最適化された大規模言語モデルの仕様と価格を並べて比較", "title": "AI コーディングモデル比較" - }, - "pricingValues": { - "free": "無料", - "freeOnly": "無料のみ" } } diff --git a/translations/ko/components/product.json b/translations/ko/components/product.json index 33d59df4..366a33f1 100644 --- a/translations/ko/components/product.json +++ b/translations/ko/components/product.json @@ -46,7 +46,17 @@ "productHero": { "runtime": "런타임" }, - "productPricing": {}, + "productPricing": { + "custom": "영업팀 문의", + "free": "무료", + "freeOnly": "무료만", + "perCredit": "{price}/크레딧", + "perHour": "{price}/시간", + "perMonth": "{price}/월", + "perUserMonth": "{price}/사용자/월", + "perYear": "{price}/년", + "usageBased": "사용량 기반" + }, "relatedProducts": { "title": "관련 제품", "viewProduct": "제품 보기" diff --git a/translations/ko/pages/comparison.json b/translations/ko/pages/comparison.json index 8bc680c9..5f6a88c2 100644 --- a/translations/ko/pages/comparison.json +++ b/translations/ko/pages/comparison.json @@ -31,9 +31,5 @@ "backTo": "모델로 돌아가기", "subtitle": "AI 코딩 모델의 사양과 가격을 나란히 비교하세요.", "title": "AI 코딩 모델 비교" - }, - "pricingValues": { - "free": "무료", - "freeOnly": "무료만" } } diff --git a/translations/pt/components/product.json b/translations/pt/components/product.json index 944f621e..0a9fd4e7 100644 --- a/translations/pt/components/product.json +++ b/translations/pt/components/product.json @@ -46,7 +46,17 @@ "productHero": { "runtime": "Runtime" }, - "productPricing": {}, + "productPricing": { + "custom": "Contactar vendas", + "free": "Grátis", + "freeOnly": "Apenas grátis", + "perCredit": "{price}/crédito", + "perHour": "{price}/hora", + "perMonth": "{price}/mês", + "perUserMonth": "{price}/utilizador/mês", + "perYear": "{price}/ano", + "usageBased": "Baseado no uso" + }, "relatedProducts": { "title": "Produtos Relacionados", "viewProduct": "Ver Produto" diff --git a/translations/pt/pages/comparison.json b/translations/pt/pages/comparison.json index 8d501a87..84fbeb1f 100644 --- a/translations/pt/pages/comparison.json +++ b/translations/pt/pages/comparison.json @@ -31,9 +31,5 @@ "backTo": "Voltar aos Modelos", "subtitle": "Compare especificações e preços de modelos de codificação de IA lado a lado.", "title": "Comparação de Modelos de Codificação IA" - }, - "pricingValues": { - "free": "Grátis", - "freeOnly": "Apenas grátis" } } diff --git a/translations/ru/components/product.json b/translations/ru/components/product.json index 20e56a72..2c28215e 100644 --- a/translations/ru/components/product.json +++ b/translations/ru/components/product.json @@ -46,7 +46,17 @@ "productHero": { "runtime": "Среда выполнения" }, - "productPricing": {}, + "productPricing": { + "custom": "Связаться с отделом продаж", + "free": "Бесплатно", + "freeOnly": "Только бесплатно", + "perCredit": "{price}/кредит", + "perHour": "{price}/час", + "perMonth": "{price}/мес.", + "perUserMonth": "{price}/пользователь/мес.", + "perYear": "{price}/год", + "usageBased": "По факту использования" + }, "relatedProducts": { "title": "Связанные продукты", "viewProduct": "Просмотреть продукт" diff --git a/translations/ru/pages/comparison.json b/translations/ru/pages/comparison.json index e1bb18aa..0a26e924 100644 --- a/translations/ru/pages/comparison.json +++ b/translations/ru/pages/comparison.json @@ -31,9 +31,5 @@ "backTo": "Назад к моделям", "subtitle": "Большие языковые модели, оптимизированные для генерации и анализа кода", "title": "Сравнение моделей ИИ-кодинга" - }, - "pricingValues": { - "free": "Бесплатно", - "freeOnly": "Только бесплатно" } } diff --git a/translations/tr/components/product.json b/translations/tr/components/product.json index a4b9c7cb..a3d59088 100644 --- a/translations/tr/components/product.json +++ b/translations/tr/components/product.json @@ -46,7 +46,17 @@ "productHero": { "runtime": "Çalışma Zamanı" }, - "productPricing": {}, + "productPricing": { + "custom": "Satış ekibiyle iletişime geçin", + "free": "Ücretsiz", + "freeOnly": "Sadece ücretsiz", + "perCredit": "{price}/kredi", + "perHour": "{price}/saat", + "perMonth": "{price}/ay", + "perUserMonth": "{price}/kullanıcı/ay", + "perYear": "{price}/yıl", + "usageBased": "Kullanıma dayalı" + }, "relatedProducts": { "title": "İlgili Ürünler", "viewProduct": "Ürünü Görüntüle" diff --git a/translations/tr/pages/comparison.json b/translations/tr/pages/comparison.json index fb9c8e34..ad9cfff7 100644 --- a/translations/tr/pages/comparison.json +++ b/translations/tr/pages/comparison.json @@ -31,9 +31,5 @@ "backTo": "Modellere Dön", "subtitle": "AI kodlama modellerinin spesifikasyonlarını ve fiyatlarını yan yana karşılaştırın.", "title": "AI Kodlama Model Karşılaştırması" - }, - "pricingValues": { - "free": " Ücretsiz", - "freeOnly": "Sadece ücretsiz" } } diff --git a/translations/zh-Hans/components/product.json b/translations/zh-Hans/components/product.json index 01c1440c..4b963dcf 100644 --- a/translations/zh-Hans/components/product.json +++ b/translations/zh-Hans/components/product.json @@ -46,7 +46,17 @@ "productHero": { "runtime": "运行时" }, - "productPricing": {}, + "productPricing": { + "custom": "联系销售", + "free": "免费", + "freeOnly": "仅免费", + "perCredit": "{price}/积分", + "perHour": "{price}/小时", + "perMonth": "{price}/月", + "perUserMonth": "{price}/用户/月", + "perYear": "{price}/年", + "usageBased": "按量计费" + }, "relatedProducts": { "title": "相关产品", "viewProduct": "查看产品" diff --git a/translations/zh-Hans/pages/comparison.json b/translations/zh-Hans/pages/comparison.json index 658a348a..25587040 100644 --- a/translations/zh-Hans/pages/comparison.json +++ b/translations/zh-Hans/pages/comparison.json @@ -31,9 +31,5 @@ "backTo": "返回模型列表", "subtitle": "并排对比 AI 编码模型的规格和定价。", "title": "AI 编码模型比较" - }, - "pricingValues": { - "free": "免费", - "freeOnly": "仅免费" } } diff --git a/translations/zh-Hant/components/product.json b/translations/zh-Hant/components/product.json index 0c31401f..df94b961 100644 --- a/translations/zh-Hant/components/product.json +++ b/translations/zh-Hant/components/product.json @@ -46,7 +46,17 @@ "productHero": { "runtime": "執行期" }, - "productPricing": {}, + "productPricing": { + "custom": "聯絡銷售", + "free": "免費", + "freeOnly": "僅免費", + "perCredit": "{price}/點數", + "perHour": "{price}/小時", + "perMonth": "{price}/月", + "perUserMonth": "{price}/使用者/月", + "perYear": "{price}/年", + "usageBased": "按量計費" + }, "relatedProducts": { "title": "相關產品", "viewProduct": "檢視產品" diff --git a/translations/zh-Hant/pages/comparison.json b/translations/zh-Hant/pages/comparison.json index a60bd9e4..cc2571d9 100644 --- a/translations/zh-Hant/pages/comparison.json +++ b/translations/zh-Hant/pages/comparison.json @@ -31,9 +31,5 @@ "backTo": "返回模型", "subtitle": "並排比較 AI 編碼模型的規格和價格。", "title": "AI 編碼模型比較" - }, - "pricingValues": { - "free": "免費", - "freeOnly": "僅免費" } } From 555b16fe8978ec442733520eedab5ed14870a5a0 Mon Sep 17 00:00:00 2001 From: Pan YANG Date: Fri, 31 Jul 2026 09:52:32 +0800 Subject: [PATCH 3/6] fix(catalog): correct Antigravity pricing tiers --- manifests/clis/antigravity-cli.json | 26 ++++++++++++++----- manifests/ides/antigravity.json | 40 ++++++++++++++++++++++++----- 2 files changed, 52 insertions(+), 14 deletions(-) diff --git a/manifests/clis/antigravity-cli.json b/manifests/clis/antigravity-cli.json index f2281bf9..b75cf027 100644 --- a/manifests/clis/antigravity-cli.json +++ b/manifests/clis/antigravity-cli.json @@ -63,13 +63,18 @@ "title": "Changes to Antigravity plans", "fields": ["pricing"] }, + { + "url": "https://one.google.com/about/google-ai-plans/", + "title": "Google AI plans", + "fields": ["pricing"] + }, { "url": "https://developers.googleblog.com/an-important-update-transitioning-gemini-cli-to-antigravity-cli/", "title": "Transitioning Gemini CLI to Antigravity CLI", "fields": ["relatedProducts"] } ], - "lastVerifiedAt": "2026-07-30", + "lastVerifiedAt": "2026-07-31", "verifiedBy": "codex-agent", "confidence": "high", "websiteUrl": "https://antigravity.google/product/antigravity-cli", @@ -87,22 +92,29 @@ "category": "Individual" }, { - "name": "Google AI Pro", - "value": 20, + "name": "Google AI Pro (5 TB)", + "value": 19.99, + "currency": "USD", + "per": "month", + "category": "Individual" + }, + { + "name": "Google AI Pro (10 TB)", + "value": 49.99, "currency": "USD", "per": "month", "category": "Individual" }, { - "name": "Google AI Ultra 100", - "value": 100, + "name": "Google AI Ultra (5x limits)", + "value": 99.99, "currency": "USD", "per": "month", "category": "Individual" }, { - "name": "Google AI Ultra 200", - "value": 200, + "name": "Google AI Ultra (20x limits)", + "value": 199.99, "currency": "USD", "per": "month", "category": "Individual" diff --git a/manifests/ides/antigravity.json b/manifests/ides/antigravity.json index d76ea0e2..02222db4 100644 --- a/manifests/ides/antigravity.json +++ b/manifests/ides/antigravity.json @@ -40,7 +40,7 @@ } }, "verified": true, - "lastVerifiedAt": "2026-07-30", + "lastVerifiedAt": "2026-07-31", "verifiedBy": "codex-agent", "confidence": "high", "websiteUrl": "https://antigravity.google", @@ -51,25 +51,46 @@ "license": "Proprietary", "pricing": [ { - "name": "Google AI Pro", - "value": 20, + "name": "Individual", + "value": 0, + "currency": null, + "per": "month", + "category": "Individual" + }, + { + "name": "Google AI Pro (5 TB)", + "value": 19.99, "currency": "USD", "per": "month", "category": "Individual" }, { - "name": "Google AI Ultra 100", - "value": 100, + "name": "Google AI Pro (10 TB)", + "value": 49.99, "currency": "USD", "per": "month", "category": "Individual" }, { - "name": "Google AI Ultra 200", - "value": 200, + "name": "Google AI Ultra (5x limits)", + "value": 99.99, "currency": "USD", "per": "month", "category": "Individual" + }, + { + "name": "Google AI Ultra (20x limits)", + "value": 199.99, + "currency": "USD", + "per": "month", + "category": "Individual" + }, + { + "name": "Organization", + "value": null, + "currency": null, + "per": "usage", + "category": "Enterprise" } ], "resourceUrls": { @@ -144,6 +165,11 @@ "url": "https://antigravity.google/blog/changes-to-antigravity-plans", "title": "Changes to Antigravity plans", "fields": ["pricing", "resourceUrls.pricing"] + }, + { + "url": "https://one.google.com/about/google-ai-plans/", + "title": "Google AI plans", + "fields": ["pricing"] } ] } From 4b3f2745621417f1283343138ef9ed1e9bf36b43 Mon Sep 17 00:00:00 2001 From: Pan YANG Date: Fri, 31 Jul 2026 09:52:58 +0800 Subject: [PATCH 4/6] fix(models): update GPT Luna pricing --- manifests/models/gpt-5-6-luna.json | 38 +++++++++++++++----- tests/model-price-intelligence-index.test.ts | 11 ++++++ 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/manifests/models/gpt-5-6-luna.json b/manifests/models/gpt-5-6-luna.json index 39535eee..7ce939ad 100644 --- a/manifests/models/gpt-5-6-luna.json +++ b/manifests/models/gpt-5-6-luna.json @@ -57,10 +57,15 @@ { "url": "https://openai.com/index/gpt-5-6", "title": "GPT-5.6: Frontier intelligence that scales with your ambition", - "fields": ["name", "description", "releaseDate", "lifecycle", "tokenPricing"] + "fields": ["name", "description", "releaseDate", "lifecycle"] + }, + { + "url": "https://developers.openai.com/api/docs/pricing", + "title": "OpenAI API pricing", + "fields": ["tokenPricing"] } ], - "lastVerifiedAt": "2026-07-20", + "lastVerifiedAt": "2026-07-31", "verifiedBy": "codex-agent", "confidence": "high", "websiteUrl": "https://openai.com", @@ -78,16 +83,33 @@ "currency": "USD", "region": "global", "serviceTier": "standard", - "effectiveFrom": null, + "effectiveFrom": "2026-07-31", "effectiveTo": null, "tiers": [ { - "condition": null, + "condition": { + "metric": "inputTokens", + "min": 1, + "max": 272000 + }, + "rates": { + "input": 0.2, + "output": 1.2, + "cacheRead": 0.02, + "cacheWrite": 0.25 + } + }, + { + "condition": { + "metric": "inputTokens", + "min": 272001, + "max": 922000 + }, "rates": { - "input": 1, - "output": 6, - "cacheRead": 0.1, - "cacheWrite": null + "input": 0.4, + "output": 1.8, + "cacheRead": 0.04, + "cacheWrite": 0.5 } } ] diff --git a/tests/model-price-intelligence-index.test.ts b/tests/model-price-intelligence-index.test.ts index 0589167e..92d8b1ff 100644 --- a/tests/model-price-intelligence-index.test.ts +++ b/tests/model-price-intelligence-index.test.ts @@ -40,6 +40,17 @@ describe('model price-intelligence index', () => { } }) + it('uses the reduced GPT-5.6 Luna short-context price', () => { + const luna = modelPriceIntelligencePoints.find(point => point.modelId === 'gpt-5-6-luna') + + expect(luna).toMatchObject({ + inputPrice: 0.2, + outputPrice: 1.2, + pricingSource: 'official', + }) + expect(luna?.blendedPrice).toBeCloseTo(0.3) + }) + it('uses reviewed USD API prices when the catalog offer is not directly comparable', () => { const fallbackPoints = modelPriceIntelligencePoints.filter( point => point.pricingSource === 'reference' From f188fbb206cf680af997f9f4842f54f3ba7ac1da Mon Sep 17 00:00:00 2001 From: Pan YANG Date: Fri, 31 Jul 2026 09:53:17 +0800 Subject: [PATCH 5/6] fix(rankings): simplify Mistral series labels --- manifests/vendors/mistral-ai.json | 10 +++++----- tests/model-intelligence-index.test.ts | 14 ++++++++++---- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/manifests/vendors/mistral-ai.json b/manifests/vendors/mistral-ai.json index f8b40649..a7726477 100644 --- a/manifests/vendors/mistral-ai.json +++ b/manifests/vendors/mistral-ai.json @@ -10,22 +10,22 @@ "modelSeries": [ { "id": "devstral-2", - "name": "Devstral 2", + "name": "Devstral", "modelIds": ["devstral-2"] }, { "id": "devstral-small-2", - "name": "Devstral Small 2", + "name": "Devstral Small", "modelIds": ["devstral-small-2"] }, { "id": "mistral-medium-3-5", - "name": "Mistral Medium 3.5", + "name": "Mistral Medium", "modelIds": ["mistral-medium-3-5"] }, { "id": "mistral-small-4", - "name": "Mistral Small 4", + "name": "Mistral Small", "modelIds": ["mistral-small-4"] } ], @@ -88,7 +88,7 @@ "fields": ["communityUrls.blog"] } ], - "lastVerifiedAt": "2026-07-30", + "lastVerifiedAt": "2026-07-31", "verifiedBy": "codex", "confidence": "high", "websiteUrl": "https://mistral.ai", diff --git a/tests/model-intelligence-index.test.ts b/tests/model-intelligence-index.test.ts index 03321d19..e160b35c 100644 --- a/tests/model-intelligence-index.test.ts +++ b/tests/model-intelligence-index.test.ts @@ -281,10 +281,16 @@ describe('model intelligence index', () => { const mistralSeries = modelIntelligenceSeries.filter(series => series.vendor === 'Mistral AI') expect(mistralSeries.map(series => series.name)).toEqual([ - 'Devstral 2', - 'Devstral Small 2', - 'Mistral Medium 3.5', - 'Mistral Small 4', + 'Devstral', + 'Devstral Small', + 'Mistral Medium', + 'Mistral Small', + ]) + expect(mistralSeries.map(series => series.id)).toEqual([ + 'Mistral AI:devstral-2', + 'Mistral AI:devstral-small-2', + 'Mistral AI:mistral-medium-3-5', + 'Mistral AI:mistral-small-4', ]) expect(mistralSeries.map(series => series.points.map(point => point.modelId))).toEqual([ ['devstral-2'], From 763f71ae6328fa2ca95ae4dba332194fe31155db Mon Sep 17 00:00:00 2001 From: Pan YANG Date: Fri, 31 Jul 2026 09:53:37 +0800 Subject: [PATCH 6/6] chore(data): refresh data health snapshot --- data/data-health.json | 2 +- docs/DATA-HEALTH.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/data-health.json b/data/data-health.json index 919f8490..7a380cfb 100644 --- a/data/data-health.json +++ b/data/data-health.json @@ -1,5 +1,5 @@ { - "asOf": "2026-07-30", + "asOf": "2026-07-31", "thresholds": { "models": 30, "providers": 30, diff --git a/docs/DATA-HEALTH.md b/docs/DATA-HEALTH.md index 99ae456c..1b18fd55 100644 --- a/docs/DATA-HEALTH.md +++ b/docs/DATA-HEALTH.md @@ -1,6 +1,6 @@ # Data Health Report -Snapshot date: 2026-07-30. Regenerate with `pnpm data-health:report`. +Snapshot date: 2026-07-31. Regenerate with `pnpm data-health:report`. ## Scorecard