import { safeParseJSON } from './json' import { logError } from './log' import { queryQuick } from '../services/claude' export function setTerminalTitle(title: string): void { if (process.platform === 'win32') { process.title = title ? `✳ ${title}` : title } else { process.stdout.write(`\x1b]0;${title ? `✳ ${title}` : ''}\x07`) } } export async function updateTerminalTitle(message: string): Promise { try { const result = await queryQuick({ systemPrompt: [ "Analyze if this message indicates a new conversation topic. If it does, extract a 2-3 word title that captures the new topic. Format your response as a JSON object with two fields: 'isNewTopic' (boolean) and 'title' (string, or null if isNewTopic is false). Only include these fields, no other text.", ], userPrompt: message, enablePromptCaching: true, }) const content = result.message.content .filter(_ => _.type === 'text') .map(_ => _.text) .join('') const response = safeParseJSON(content) if ( response && typeof response === 'object' && 'isNewTopic' in response && 'title' in response ) { if (response.isNewTopic && response.title) { setTerminalTitle(response.title as string) } } } catch (error) { logError(error) } } export function clearTerminal(): Promise { return new Promise(resolve => { process.stdout.write('\x1b[2J\x1b[3J\x1b[H', () => { resolve() }) }) }