const kBrowserUserAgent = 'Mozilla/5.0 (Linux; Android 14; Pixel 8 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Mobile Safari/537.36'; const kDesktopUserAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'; Map browserHeaders({ String? origin, String? referer, String? accept, String? contentType, bool desktop = false, Map? extra, }) { return { 'User-Agent': desktop ? kDesktopUserAgent : kBrowserUserAgent, 'Accept': accept ?? '*/*', 'Accept-Language': 'en-US,en;q=0.9', if (origin != null) 'Origin': origin, if (referer != null) 'Referer': referer, if (contentType != null) 'Content-Type': contentType, ...?extra, }; } /// True when a provider dumped an error page / WAF / paywall instead of model text. bool looksLikeGarbage(String text) { final t = text.trimLeft(); if (t.isEmpty) return true; final lower = t.toLowerCase(); if (t.startsWith('[]; for (final part in parts) { final nv = part.split(';').first.trim(); if (nv.isEmpty || !nv.contains('=')) continue; if (name != null && !nv.startsWith('$name=')) continue; pairs.add(nv); } if (pairs.isEmpty) return null; return pairs.join('; '); }