Files
orca/src/shared/tab-title-resolution.ts
T
Brennan Benson 18b27ac11c fix(terminal): show AI Vault conversation names in tabs (#12778)
* fix(terminal): use provider-native session titles

* refactor(terminal): source session names from AI Vault

* fix(tabs): harden AI Vault title sync
2026-08-06 13:29:06 -07:00

42 lines
1.2 KiB
TypeScript

import type { Tab, TerminalTab } from './types'
import { isMeaningfulOpenCodeTerminalTitle } from './opencode-terminal-title'
export function resolveTerminalTabTitle(
tab: Pick<
TerminalTab,
'customTitle' | 'quickCommandLabel' | 'aiVaultTitle' | 'generatedTitle' | 'title'
>,
generatedTitlesEnabled: boolean,
fallback = ''
): string {
const liveTitle = tab.title?.trim() ?? ''
return (
tab.customTitle?.trim() ||
tab.quickCommandLabel?.trim() ||
(isMeaningfulOpenCodeTerminalTitle(liveTitle) ? liveTitle : '') ||
tab.aiVaultTitle?.title.trim() ||
(generatedTitlesEnabled ? tab.generatedTitle?.trim() : '') ||
liveTitle ||
fallback
)
}
export function resolveUnifiedTabLabel(
tab:
| Pick<Tab, 'customLabel' | 'quickCommandLabel' | 'aiVaultTitle' | 'generatedLabel' | 'label'>
| undefined,
generatedTitlesEnabled: boolean,
fallback = ''
): string {
const liveLabel = tab?.label?.trim() ?? ''
return (
tab?.customLabel?.trim() ||
tab?.quickCommandLabel?.trim() ||
(isMeaningfulOpenCodeTerminalTitle(liveLabel) ? liveLabel : '') ||
tab?.aiVaultTitle?.title.trim() ||
(generatedTitlesEnabled ? tab?.generatedLabel?.trim() : '') ||
liveLabel ||
fallback
)
}