const settingsCache = new Map(); export async function fetchCanvasSiteSettings(url: string) { const cached = settingsCache.get(url); const controller = new AbortController(); const timeoutId = setTimeout( () => controller.abort(), url === "/api/site-settings?scope=agent-canvas" ? 30_000 : 10_000 ); try { const response = await fetch(url, { headers: cached ? { "If-None-Match": cached.etag } : undefined, signal: controller.signal, }); if (response.status === 304 && cached) return cached.data; if (!response.ok) throw new Error("Failed to fetch canvas site settings"); const data = await response.json(); const etag = response.headers.get("ETag"); if (etag) settingsCache.set(url, { etag, data }); return data; } finally { clearTimeout(timeoutId); } }