feat: add GATRA SOC integration layer#293
Conversation
Introduces a unified GATRA SOC integration layer for the World Monitor cyber variant: - src/gatra/connector.ts: Centralized connector that fetches all GATRA data sources (ADA alerts, TAA analyses, CRA actions, agent health, correlations) in parallel with pub/sub notifications - src/panels/gatra-soc-panel.ts: Enhanced dashboard panel with 6 sections — agent status, incident stats, alert feed, TAA threat analysis (actor/campaign/kill-chain), CRA response actions, and dynamic World Monitor correlation insights - src/layers/gatra-alerts-layer.ts: Standalone deck.gl layer factory with severity-colored markers and pulsing rings for critical/high alerts - Extends src/services/gatra.ts with TAA analysis, correlation, and typed CRA action mock data using Indonesian locations and IOH infrastructure references - Wires createGatraAlertsLayers() in DeckGLMap.ts and adds gatraAlerts to all variant MapLayers definitions Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@ghifiardi is attempting to deploy a commit to the Elie Team on Vercel. A member of the Team first needs to authorize it. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e782af66e4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| research: { name: 'Security Research', enabled: true, priority: 1 }, | ||
| policy: { name: 'Cyber Policy', enabled: true, priority: 2 }, | ||
| aiSecurity: { name: 'AI & Security', enabled: true, priority: 2 }, | ||
| 'gatra-soc': { name: 'GATRA SOC', enabled: true, priority: 1 }, |
There was a problem hiding this comment.
Instantiate the configured gatra-soc dashboard panel
This config enables a gatra-soc panel by default, but App.createPanels() never registers a panel instance for that key (and GatraSOCDashboardPanel has no usage sites), so the key is skipped when panel order is rendered and the SOC panel never appears in the cyber variant.
Useful? React with 👍 / 👎.
| public setGatraAlerts(alerts: GatraAlert[]): void { | ||
| this.gatraAlerts = alerts; | ||
| this.render(); |
There was a problem hiding this comment.
Wire GATRA alert data into the new map layer path
The new setGatraAlerts entry point is never called anywhere in src, so this.gatraAlerts remains empty and the added render guard (mapLayers.gatraAlerts && this.gatraAlerts.length > 0) keeps the GATRA layer from ever drawing markers even when the toggle is enabled.
Useful? React with 👍 / 👎.
| export const DEFAULT_PANELS = SITE_VARIANT === 'tech' ? TECH_PANELS : SITE_VARIANT === 'finance' ? FINANCE_PANELS : FULL_PANELS; | ||
| export const DEFAULT_MAP_LAYERS = SITE_VARIANT === 'tech' ? TECH_MAP_LAYERS : SITE_VARIANT === 'finance' ? FINANCE_MAP_LAYERS : FULL_MAP_LAYERS; | ||
| export const MOBILE_DEFAULT_MAP_LAYERS = SITE_VARIANT === 'tech' ? TECH_MOBILE_MAP_LAYERS : SITE_VARIANT === 'finance' ? FINANCE_MOBILE_MAP_LAYERS : FULL_MOBILE_MAP_LAYERS; | ||
| export const DEFAULT_PANELS = SITE_VARIANT === 'tech' ? TECH_PANELS : SITE_VARIANT === 'finance' ? FINANCE_PANELS : SITE_VARIANT === 'cyber' ? CYBER_PANELS : FULL_PANELS; |
There was a problem hiding this comment.
Align cyber panel defaults with actual feed loading
Switching SITE_VARIANT === 'cyber' to CYBER_PANELS exposes cyber-only news panels (for example indonesia, threats, malware), but news loading still iterates FEEDS from config/feeds.ts which has no cyber branch, so these default-enabled panels do not receive updates and stay empty/loading in cyber builds.
Useful? React with 👍 / 👎.
|
thank you @ghifiardi Currently this can't be merged P1 - HighBuild is currently broken. The gatra-soc panel is configured but never instantiated in the app.src/config/panels.ts:393 enables the panel, but src/App.ts:2092 creates no GATRA panel instance. GATRA map data path is incomplete, so the map layer cannot be populated.src/components/DeckGLMap.ts:3309 adds setGatraAlerts, but MapContainer has no corresponding setter around its data API (compare src/components/MapContainer.ts:320). Cyber variant is only partially wired into product flows.SITE_VARIANT persistence/recognition still only handles full|tech|finance in src/config/variant.ts:4. P2 - MediumDuplicate, unused panel implementations increase maintenance risk. Integration + Value Assessment
|
Instantiate GatraSOCDashboardPanel for cyber variant, add loadGatraData() method with 60s refresh cycle, wire gatraAlerts layer toggle, and add setGatraAlerts() proxy in MapContainer. Also adds cyber variant to the header switcher and enables local variant switching on localhost. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Summary
src/gatra/connector.ts— Unified connector that fetches all GATRA 5-agent pipeline data (ADA alerts, TAA analyses, CRA actions, agent health, correlations) in parallel with pub/sub snapshot notificationssrc/panels/gatra-soc-panel.ts— Enhanced dashboard panel with agent status dots, incident stats, severity-colored alert feed, TAA threat analysis (actor/campaign/kill-chain), CRA response actions, and dynamic World Monitor correlation insightssrc/layers/gatra-alerts-layer.ts— Standalone deck.gl layer factory with severity-colored ScatterplotLayer markers and pulsing rings for critical/high alertssrc/services/gatra.tswith TAA analysis, correlation, and typed CRA action mock data using realistic Indonesian locations (Jakarta, Surabaya, Bandung, Medan, Makassar) and IOH infrastructure referencescreateGatraAlertsLayers()method in DeckGLMap.tsgatraAlertsfield to all variant MapLayers definitions (finance, full, tech, e2e harnesses)Test plan
npx tsc --noEmitpasses with zero errorscybervariant and confirm GATRA SOC panel renders with all 6 sections🤖 Generated with Claude Code