// Session-title normalization shared by the agent runtime package (session // summaries read from disk) and the frontend's client-side message helpers. export function isPlaceholderSessionTitle(value: string | null | undefined): boolean { const normalized = value?.replace(/\s+/g, " ").trim(); return Boolean(normalized && /^(?:\.{3}|…)+$/.test(normalized)); } export function cleanSessionTitle(value: string | null | undefined): string { const normalized = value?.replace(/\s+/g, " ").trim() ?? ""; return normalized && !isPlaceholderSessionTitle(normalized) ? normalized : ""; } export function sessionTitleFromUserPrompt(value: string | null | undefined): string { if (!value) return ""; const marker = "\n\nUser prompt:\n"; const markerIndex = value.lastIndexOf(marker); const body = markerIndex === -1 ? value : value.slice(markerIndex + marker.length); const visible = body.replace( /^\s*(?:[\s\S]*?<\/browser_context>\s*|[\s\S]*$)/i, "", ); return cleanSessionTitle(visible); }