coder(providers): fix empty picker (loading-state) + config model overrides + current Claude models
Fix: getProviderSnapshot returned synchronous installed:false 'loading' entries on a cache miss (v2.5.5/Phase 2), which AgentComposerBar filters out — with the Phase 5 client poll not yet built, a single fetch stranded on 'loading' and the picker showed no providers. It now awaits the build and returns terminal entries; the sync loading-return is deferred until Phase 5. Builds stay fast via the tier-2 cold-probe skip. Feature: wire the v2.3 config schema's models/additionalModels — buildResolvedRegistry carries them onto ResolvedProviderDef (models replace, additionalModels merge) and provider-snapshot applies them to every ready model list, so /data/coder-providers.json can edit any provider's models with no code change. Claude staticModels bumped from the stale 2-entry list to opus/sonnet/haiku latest-aliases + pinned claude-opus-4-8 / claude-sonnet-4-6 / claude-haiku-4-5-20251001 (passed verbatim to claude --model). +2 tests (109 total). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -61,6 +61,22 @@ describe('buildResolvedRegistry', () => {
|
||||
warn.mockRestore();
|
||||
});
|
||||
|
||||
it('carries config models + additionalModels onto built-in and custom defs', () => {
|
||||
const reg = buildResolvedRegistry(PROVIDERS, {
|
||||
providers: {
|
||||
claude: { models: [{ id: 'claude-opus-4-8', label: 'Opus 4.8' }] },
|
||||
'amp-acp': {
|
||||
extends: 'acp',
|
||||
label: 'Amp',
|
||||
command: ['amp-acp'],
|
||||
additionalModels: [{ id: 'amp-1', label: 'Amp 1' }],
|
||||
},
|
||||
},
|
||||
});
|
||||
expect(reg.get('claude')!.configModels).toEqual([{ id: 'claude-opus-4-8', label: 'Opus 4.8' }]);
|
||||
expect(reg.get('amp-acp')!.configAdditionalModels).toEqual([{ id: 'amp-1', label: 'Amp 1' }]);
|
||||
});
|
||||
|
||||
it('REGRESSION: empty config returns exactly the built-ins, all enabled', () => {
|
||||
const reg = buildResolvedRegistry(PROVIDERS, { providers: {} });
|
||||
expect(reg.size).toBe(PROVIDERS.length);
|
||||
|
||||
Reference in New Issue
Block a user