mirror of
https://github.com/wu736139669/hapi.git
synced 2026-10-07 19:06:11 +00:00
* fix(codex): support model-reported reasoning efforts * fix(web): prevent service worker edge caching * ci: retrigger stuck Actions run * fix(codex): accept dynamic reasoning effort values * fix(web): restore reasoning effort on model switch failure
87 lines
3.3 KiB
TypeScript
87 lines
3.3 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { getCodexComposerReasoningEffortOptions } from './codexReasoningEffortOptions'
|
|
|
|
describe('getCodexComposerReasoningEffortOptions', () => {
|
|
it('includes the default option and preset values for Codex', () => {
|
|
expect(getCodexComposerReasoningEffortOptions(null, 'codex')).toEqual([
|
|
{ value: null, label: 'Default' },
|
|
{ value: 'low', label: 'Low' },
|
|
{ value: 'medium', label: 'Medium' },
|
|
{ value: 'high', label: 'High' },
|
|
{ value: 'xhigh', label: 'XHigh' }
|
|
])
|
|
})
|
|
|
|
it('preserves non-preset current values for Codex', () => {
|
|
expect(getCodexComposerReasoningEffortOptions('minimal', 'codex')).toEqual([
|
|
{ value: null, label: 'Default' },
|
|
{ value: 'minimal', label: 'Minimal' },
|
|
{ value: 'low', label: 'Low' },
|
|
{ value: 'medium', label: 'Medium' },
|
|
{ value: 'high', label: 'High' },
|
|
{ value: 'xhigh', label: 'XHigh' }
|
|
])
|
|
})
|
|
|
|
it('uses arbitrary model-reported efforts for Codex', () => {
|
|
expect(getCodexComposerReasoningEffortOptions('extreme', 'codex', [
|
|
{ value: 'low' },
|
|
{ value: 'medium' },
|
|
{ value: 'high' },
|
|
{ value: 'xhigh' },
|
|
{ value: 'max' },
|
|
{ value: 'ultra' },
|
|
{ value: 'extreme' }
|
|
])).toEqual([
|
|
{ value: null, label: 'Default' },
|
|
{ value: 'low', label: 'Low' },
|
|
{ value: 'medium', label: 'Medium' },
|
|
{ value: 'high', label: 'High' },
|
|
{ value: 'xhigh', label: 'XHigh' },
|
|
{ value: 'max', label: 'Max' },
|
|
{ value: 'ultra', label: 'Ultra' },
|
|
{ value: 'extreme', label: 'Extreme' }
|
|
])
|
|
})
|
|
|
|
it('keeps an unsupported current Codex effort visible', () => {
|
|
expect(getCodexComposerReasoningEffortOptions('ultra', 'codex', [
|
|
{ value: 'low' },
|
|
{ value: 'max' }
|
|
])).toEqual([
|
|
{ value: null, label: 'Default' },
|
|
{ value: 'ultra', label: 'Ultra' },
|
|
{ value: 'low', label: 'Low' },
|
|
{ value: 'max', label: 'Max' }
|
|
])
|
|
})
|
|
|
|
it('returns no options for OpenCode until dynamic options are available', () => {
|
|
expect(getCodexComposerReasoningEffortOptions(null, 'opencode')).toEqual([])
|
|
expect(getCodexComposerReasoningEffortOptions(null, 'opencode', [])).toEqual([])
|
|
})
|
|
|
|
it('builds OpenCode options from ACP-reported values', () => {
|
|
expect(getCodexComposerReasoningEffortOptions('low', 'opencode', [
|
|
{ value: 'low', name: 'Low' },
|
|
{ value: 'medium', name: 'Medium' }
|
|
])).toEqual([
|
|
{ value: null, label: 'Default' },
|
|
{ value: 'low', label: 'Low' },
|
|
{ value: 'medium', label: 'Medium' }
|
|
])
|
|
})
|
|
|
|
it('preserves unsupported current OpenCode values in the dropdown', () => {
|
|
expect(getCodexComposerReasoningEffortOptions('high', 'opencode', [
|
|
{ value: 'low', name: 'Low' },
|
|
{ value: 'medium', name: 'Medium' }
|
|
])).toEqual([
|
|
{ value: null, label: 'Default' },
|
|
{ value: 'high', label: 'High' },
|
|
{ value: 'low', label: 'Low' },
|
|
{ value: 'medium', label: 'Medium' }
|
|
])
|
|
})
|
|
})
|