mirror of
https://github.com/wu736139669/hapi.git
synced 2026-10-08 19:19:42 +00:00
* feat: add Fable model presets for Claude sessions Claude Code 2.x accepts the fable / fable[1m] model aliases for Fable 5. hapi passes the model string through verbatim, so adding the presets to CLAUDE_MODEL_LABELS surfaces them in the new-session and composer model pickers, labels, and the 1M context-window heuristic. * test: update modelOptions full-list assertions for Fable presets Addresses review feedback on #860: getModelOptionsForFlavor appends every Claude preset, so the two complete-array expectations must include the new fable entries.
36 lines
1.5 KiB
TypeScript
36 lines
1.5 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { getClaudeComposerModelOptions, getNextClaudeComposerModel } from './claudeModelOptions'
|
|
|
|
describe('getClaudeComposerModelOptions', () => {
|
|
it('includes the active non-preset Claude model in the options list', () => {
|
|
expect(getClaudeComposerModelOptions('claude-opus-4-1-20250805')).toEqual([
|
|
{ value: null, label: 'Default' },
|
|
{ value: 'claude-opus-4-1-20250805', label: 'claude-opus-4-1-20250805' },
|
|
{ value: 'sonnet', label: 'Sonnet' },
|
|
{ value: 'sonnet[1m]', label: 'Sonnet 1M' },
|
|
{ value: 'opus', label: 'Opus' },
|
|
{ value: 'opus[1m]', label: 'Opus 1M' },
|
|
{ value: 'fable', label: 'Fable' },
|
|
{ value: 'fable[1m]', label: 'Fable 1M' },
|
|
])
|
|
})
|
|
|
|
it('does not duplicate preset Claude models', () => {
|
|
expect(getClaudeComposerModelOptions('opus')).toEqual([
|
|
{ value: null, label: 'Default' },
|
|
{ value: 'sonnet', label: 'Sonnet' },
|
|
{ value: 'sonnet[1m]', label: 'Sonnet 1M' },
|
|
{ value: 'opus', label: 'Opus' },
|
|
{ value: 'opus[1m]', label: 'Opus 1M' },
|
|
{ value: 'fable', label: 'Fable' },
|
|
{ value: 'fable[1m]', label: 'Fable 1M' },
|
|
])
|
|
})
|
|
})
|
|
|
|
describe('getNextClaudeComposerModel', () => {
|
|
it('cycles from a non-preset Claude model to the next selectable model instead of auto', () => {
|
|
expect(getNextClaudeComposerModel('claude-opus-4-1-20250805')).toBe('sonnet')
|
|
})
|
|
})
|