mirror of
https://github.com/wu736139669/hapi.git
synced 2026-08-05 06:24:37 +00:00
unify model selection
This commit is contained in:
@@ -46,7 +46,7 @@ export default {
|
||||
'session.item.path': '路径',
|
||||
'session.item.agent': '代理',
|
||||
'session.item.model': '模型',
|
||||
'session.item.modelMode': '模型',
|
||||
'session.item.modelMode': '模式',
|
||||
'session.item.worktree': '工作树',
|
||||
'session.item.pending': '待处理',
|
||||
'session.item.thinking': '思考中',
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { getSessionModelLabel } from './sessionModelLabel'
|
||||
|
||||
describe('getSessionModelLabel', () => {
|
||||
it('prefers the explicit session model', () => {
|
||||
expect(getSessionModelLabel({ model: 'gpt-5.4', modelMode: 'default' })).toEqual({
|
||||
key: 'session.item.model',
|
||||
value: 'gpt-5.4'
|
||||
})
|
||||
})
|
||||
|
||||
it('falls back to Claude model mode when no explicit model exists', () => {
|
||||
expect(getSessionModelLabel({ modelMode: 'opus' })).toEqual({
|
||||
key: 'session.item.modelMode',
|
||||
value: 'Opus'
|
||||
})
|
||||
})
|
||||
|
||||
it('returns null when neither model nor mode is available', () => {
|
||||
expect(getSessionModelLabel({})).toBeNull()
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,28 @@
|
||||
import { getModelModeLabel } from '@hapi/protocol'
|
||||
import type { Session, SessionSummary } from '@/types/api'
|
||||
|
||||
type SessionModelSource = Pick<Session, 'model' | 'modelMode'> | Pick<SessionSummary, 'model' | 'modelMode'>
|
||||
|
||||
export type SessionModelLabel = {
|
||||
key: 'session.item.model' | 'session.item.modelMode'
|
||||
value: string
|
||||
}
|
||||
|
||||
export function getSessionModelLabel(session: SessionModelSource): SessionModelLabel | null {
|
||||
const explicitModel = typeof session.model === 'string' ? session.model.trim() : ''
|
||||
if (explicitModel) {
|
||||
return {
|
||||
key: 'session.item.model',
|
||||
value: explicitModel
|
||||
}
|
||||
}
|
||||
|
||||
if (session.modelMode) {
|
||||
return {
|
||||
key: 'session.item.modelMode',
|
||||
value: getModelModeLabel(session.modelMode)
|
||||
}
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
Reference in New Issue
Block a user