kimi-code/packages/oauth/test/model-alias-merge.test.ts
Haozhe cc03816ee0
feat(oauth): parse support_efforts/default_effort in custom registry import (#1564)
* feat(oauth): parse support_efforts/default_effort in custom registry import

- parse support_efforts / default_effort from api.json model entries
- map them onto model aliases as supportEfforts / defaultEffort
- treat both fields as upstream-owned in CUSTOM_REGISTRY_MODEL_FIELDS so
  refreshes sync and stale values are dropped
2026-07-12 13:27:50 +08:00

93 lines
2.5 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import {
CUSTOM_REGISTRY_MODEL_FIELDS,
MANAGED_KIMI_MODEL_FIELDS,
mergeRefreshedModelAlias,
} from '../src/model-alias-merge';
describe('mergeRefreshedModelAlias', () => {
it('preserves overrides while refreshing managed fields', () => {
const merged = mergeRefreshedModelAlias(
{
provider: 'managed:kimi-code',
model: 'kimi-k2',
maxContextSize: 262144,
supportEfforts: ['low'],
overrides: { supportEfforts: ['low'] },
},
{
provider: 'managed:kimi-code',
model: 'kimi-k2',
maxContextSize: 262144,
supportEfforts: ['low', 'high', 'max'],
},
MANAGED_KIMI_MODEL_FIELDS,
);
expect(merged.supportEfforts).toEqual(['low', 'high', 'max']);
expect(merged.overrides).toEqual({ supportEfforts: ['low'] });
});
it('drops managed top-level fields when upstream stops declaring them', () => {
const merged = mergeRefreshedModelAlias(
{
provider: 'managed:kimi-code',
model: 'kimi-k2',
maxContextSize: 262144,
supportEfforts: ['low'],
},
{
provider: 'managed:kimi-code',
model: 'kimi-k2',
maxContextSize: 262144,
},
MANAGED_KIMI_MODEL_FIELDS,
);
expect(merged.supportEfforts).toBeUndefined();
});
it('refreshes custom-registry supportEfforts from upstream', () => {
const merged = mergeRefreshedModelAlias(
{
provider: 'registry',
model: 'gpt-5.5',
maxContextSize: 131072,
supportEfforts: ['low', 'high'],
},
{
provider: 'registry',
model: 'gpt-5.5',
maxContextSize: 131072,
supportEfforts: ['low', 'high', 'max'],
defaultEffort: 'high',
},
CUSTOM_REGISTRY_MODEL_FIELDS,
);
expect(merged.supportEfforts).toEqual(['low', 'high', 'max']);
expect(merged.defaultEffort).toBe('high');
});
it('drops custom-registry effort fields when upstream stops declaring them', () => {
const merged = mergeRefreshedModelAlias(
{
provider: 'registry',
model: 'gpt-5.5',
maxContextSize: 131072,
supportEfforts: ['low', 'high'],
defaultEffort: 'high',
},
{
provider: 'registry',
model: 'gpt-5.5',
maxContextSize: 131072,
},
CUSTOM_REGISTRY_MODEL_FIELDS,
);
expect(merged.supportEfforts).toBeUndefined();
expect(merged.defaultEffort).toBeUndefined();
});
});