export const isAbortError = (error: unknown): boolean => typeof error === 'object' && error !== null && 'name' in error && (error as { name?: string }).name === 'AbortError'; export const truncateResponseSnippet = ( value: string, maxLength: number, ): string => { if (!value) { return ''; } const compact = value.replace(/\s+/g, ' ').trim(); if (compact.length <= maxLength) { return compact; } return `${compact.slice(0, maxLength)}...`; }; export const createTimeoutController = (timeoutMs: number) => { const controller = new AbortController(); const timeoutId = setTimeout(() => controller.abort(), timeoutMs); return { controller, clear: () => { clearTimeout(timeoutId); }, }; };