Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions src/models-dev.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
};

Expand Down
31 changes: 31 additions & 0 deletions test/provider-alias.test.mjs
Original file line number Diff line number Diff line change
@@ -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);
});
Loading