From d914c489e1e65d0dd22a1c2f74f90ad2b662620e Mon Sep 17 00:00:00 2001 From: Narvis Bot Date: Mon, 2 Mar 2026 12:14:36 -0800 Subject: [PATCH] fix(intel): add console.warn to silent catch blocks for observability Co-Authored-By: Claude Opus 4.6 --- server/worldmonitor/intelligence/v1/classify-event.ts | 9 ++++++--- .../intelligence/v1/get-country-intel-brief.ts | 9 ++++++--- .../worldmonitor/intelligence/v1/get-pizzint-status.ts | 7 ++++--- server/worldmonitor/military/v1/list-military-bases.ts | 2 +- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/server/worldmonitor/intelligence/v1/classify-event.ts b/server/worldmonitor/intelligence/v1/classify-event.ts index 2fd11d3f9..b795e9c48 100644 --- a/server/worldmonitor/intelligence/v1/classify-event.ts +++ b/server/worldmonitor/intelligence/v1/classify-event.ts @@ -89,7 +89,8 @@ Return: {"level":"...","category":"..."}`; let parsed: { level?: string; category?: string }; try { parsed = JSON.parse(raw); - } catch { + } catch (error) { + console.warn('[classify-event] JSON.parse of LLM response failed', error); return null; } @@ -98,12 +99,14 @@ Return: {"level":"...","category":"..."}`; if (!level || !category) return null; return { level, category, timestamp: Date.now() }; - } catch { + } catch (error) { + console.warn('[classify-event] classification fetch failed', error); return null; } }, ); - } catch { + } catch (error) { + console.warn('[classify-event] cached fetch failed', error); markNoCacheResponse(ctx.request); return { classification: undefined }; } diff --git a/server/worldmonitor/intelligence/v1/get-country-intel-brief.ts b/server/worldmonitor/intelligence/v1/get-country-intel-brief.ts index da08b9cbb..3dffe6db9 100644 --- a/server/worldmonitor/intelligence/v1/get-country-intel-brief.ts +++ b/server/worldmonitor/intelligence/v1/get-country-intel-brief.ts @@ -39,7 +39,8 @@ export async function getCountryIntelBrief( try { const url = new URL(ctx.request.url); contextSnapshot = (url.searchParams.get('context') || '').trim().slice(0, 4000); - } catch { + } catch (error) { + console.warn('[get-country-intel-brief] context parse failed', error); contextSnapshot = ''; } @@ -102,11 +103,13 @@ Rules: model: GROQ_MODEL, generatedAt: Date.now(), }; - } catch { + } catch (error) { + console.warn('[get-country-intel-brief] GROQ brief generation failed', error); return null; } }); - } catch { + } catch (error) { + console.warn('[get-country-intel-brief] cached fetch failed', error); return empty; } diff --git a/server/worldmonitor/intelligence/v1/get-pizzint-status.ts b/server/worldmonitor/intelligence/v1/get-pizzint-status.ts index 3a0cf023d..ab411749c 100644 --- a/server/worldmonitor/intelligence/v1/get-pizzint-status.ts +++ b/server/worldmonitor/intelligence/v1/get-pizzint-status.ts @@ -111,7 +111,7 @@ export async function getPizzintStatus( locations, }; } - } catch (_) { /* PizzINT unavailable — continue to GDELT */ } + } catch (error) { console.warn('[get-pizzint-status] PizzINT API fetch failed', error); } // Fetch GDELT tension pairs let tensionPairs: GdeltTensionPair[] = []; @@ -146,14 +146,15 @@ export async function getPizzintStatus( }; }); } - } catch { /* gdelt unavailable */ } + } catch (error) { console.warn('[get-pizzint-status] GDELT fetch failed', error); } } // Only cache if PizzINT data was retrieved if (!pizzint) return null; return { pizzint, tensionPairs }; }); - } catch { + } catch (error) { + console.warn('[get-pizzint-status] cached fetch failed', error); return { pizzint: undefined, tensionPairs: [] }; } diff --git a/server/worldmonitor/military/v1/list-military-bases.ts b/server/worldmonitor/military/v1/list-military-bases.ts index b30bf99cd..bae286728 100644 --- a/server/worldmonitor/military/v1/list-military-bases.ts +++ b/server/worldmonitor/military/v1/list-military-bases.ts @@ -186,7 +186,7 @@ export async function listMilitaryBases( const raw = metaMap.get(id); if (!raw) continue; let meta: Record; - try { meta = JSON.parse(raw); } catch { continue; } + try { meta = JSON.parse(raw); } catch (error) { console.warn('[list-military-bases] JSON.parse failed', error); continue; } const tier = (meta.tier as number) || 2; if (zoom < 5 && tier > 1) continue;