diff --git a/CHANGELOG.md b/CHANGELOG.md index 6980c66..e261454 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project are documented in this file. +## [Unreleased] + +### Fixed + +- **GitHub Copilot models.dev provider alias** — `resolveProviderAlias()` in `src/models-dev.ts` incorrectly mapped both `gh` and `github` provider prefixes to `google` when looking up models.dev capability/context-window fallback data. GitHub Copilot proxies many upstream providers (Anthropic, OpenAI, xAI, etc.), not just Google, so this misdirected any models.dev fallback lookup for `gh/*`/`github/*` models into the wrong provider's data. Now correctly maps to `github-copilot`, models.dev's actual provider key. 5 new tests in `test/provider-alias.test.mjs`. (resolves #45) + ## [1.2.2] - 2026-05-22 ### Added diff --git a/src/models-dev.ts b/src/models-dev.ts index 429f8c7..9089b16 100644 --- a/src/models-dev.ts +++ b/src/models-dev.ts @@ -608,8 +608,8 @@ export function resolveProviderAlias( glm: 'zai-coding-plan', 'kimi-coding': 'moonshotai', kmc: 'moonshotai', - gh: 'google', - github: 'google', + gh: 'github-copilot', + github: 'github-copilot', ...config?.modelsDev?.providerAliases, }; diff --git a/test/provider-alias.test.mjs b/test/provider-alias.test.mjs new file mode 100644 index 0000000..cfbc30b --- /dev/null +++ b/test/provider-alias.test.mjs @@ -0,0 +1,31 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; + +import { resolveProviderAlias } from '../dist/src/models-dev.js'; + +test('resolveProviderAlias maps gh/github to github-copilot, not google', () => { + assert.equal(resolveProviderAlias('gh'), 'github-copilot'); + assert.equal(resolveProviderAlias('github'), 'github-copilot'); + assert.equal(resolveProviderAlias('GH'), 'github-copilot'); + assert.equal(resolveProviderAlias('GitHub'), 'github-copilot'); +}); + +test('resolveProviderAlias still maps gemini/google to google', () => { + assert.equal(resolveProviderAlias('gemini'), 'google'); + assert.equal(resolveProviderAlias('google'), 'google'); +}); + +test('resolveProviderAlias allows user config to override defaults', () => { + assert.equal( + resolveProviderAlias('gh', { modelsDev: { providerAliases: { gh: 'custom-provider' } } }), + 'custom-provider', + ); +}); + +test('resolveProviderAlias falls back to the lowercased key when unknown', () => { + assert.equal(resolveProviderAlias('SomeUnknownProvider'), 'someunknownprovider'); +}); + +test('resolveProviderAlias returns null for null input', () => { + assert.equal(resolveProviderAlias(null), null); +});