mirror of
https://github.com/BigBodyCobain/Shadowbroker.git
synced 2026-08-15 07:00:32 +02:00
Feat/gt analytics openclaw (#392)
* feat(telegram): auto-translate OSINT channel posts to English Cherry-picked from @Bobpick PR #391 (telegram-only slice): server-side translation during fetch, SHOW ORIGINAL toggle in TelegramOsintPopup, and on-demand /api/telegram-feed?lang=. Co-authored-by: Robert Pickett <bobpickettsr@yahoo.com> Co-authored-by: Cursor <cursoragent@cursor.com> * feat(gt): experimental Derived OSINT analytics with lean-node safeguards Cherry-picked from @Bobpick PR #391 (GT + OpenClaw slice): Bayesian strategic-risk engine, map overlay, OpenClaw commands, and telegram_rhetoric watchdog. Off by default (GT_ANALYTICS_ENABLED=false, gt_risk layer false). 1 vCPU nodes get cgroup detection, UI warning on layer toggle, and lean profile that skips scheduled ingest/Louvain unless GT_ANALYTICS_ACK_LOW_CPU=true. Backtest HUD removed from dashboard (OpenClaw/API regression only). Co-authored-by: Robert Pickett <bobpickettsr@yahoo.com> Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Robert Pickett <bobpickettsr@yahoo.com> Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
co-authored by
Robert Pickett
Cursor
parent
9c5a4054f6
commit
cfbeabda1e
@@ -966,12 +966,193 @@ export interface DashboardData {
|
||||
timestamp?: string | null;
|
||||
channels?: string[];
|
||||
};
|
||||
gt_risk?: GTRiskPayload;
|
||||
}
|
||||
|
||||
export interface GTRiskHeatmapFeature {
|
||||
type: 'Feature';
|
||||
properties: {
|
||||
region: string;
|
||||
risk: number;
|
||||
financial?: number;
|
||||
unrest?: number;
|
||||
conflict?: number;
|
||||
contagion?: number;
|
||||
updates?: number;
|
||||
risk_spot?: number;
|
||||
risk_3d_avg?: number;
|
||||
risk_delta?: number;
|
||||
micro_ignition?: boolean;
|
||||
};
|
||||
geometry: {
|
||||
type: 'Point';
|
||||
coordinates: [number, number];
|
||||
};
|
||||
}
|
||||
|
||||
export interface GTRiskPayload {
|
||||
enabled?: boolean;
|
||||
timestamp?: string | null;
|
||||
processed?: number;
|
||||
meta?: {
|
||||
tracked_regions?: number;
|
||||
engine_regions?: number;
|
||||
plotted_regions?: number;
|
||||
max_regions?: number;
|
||||
};
|
||||
heatmap?: {
|
||||
type: 'FeatureCollection';
|
||||
features: GTRiskHeatmapFeature[];
|
||||
};
|
||||
clusters?: Array<{
|
||||
cluster_id: number;
|
||||
size: number;
|
||||
mean_risk: number;
|
||||
regions?: string[];
|
||||
members?: string[];
|
||||
}>;
|
||||
}
|
||||
|
||||
export interface GtDossierSignalEntry {
|
||||
timestamp: string;
|
||||
domain: string;
|
||||
signals: Record<string, number>;
|
||||
strength: number;
|
||||
posterior: number;
|
||||
source: string;
|
||||
deviation_score?: number;
|
||||
}
|
||||
|
||||
export interface GtBacktestCaseResult {
|
||||
case_id: string;
|
||||
name: string;
|
||||
kind: string;
|
||||
correct: boolean;
|
||||
alerted: boolean;
|
||||
peak_domain_risk: number;
|
||||
peak_composite_risk: number;
|
||||
costly_signals: string[];
|
||||
}
|
||||
|
||||
export interface GtBacktestReport {
|
||||
enabled?: boolean;
|
||||
total_cases: number;
|
||||
correct: number;
|
||||
accuracy: number;
|
||||
confidence_rate: number;
|
||||
wilson_lower_95: number;
|
||||
wilson_upper_95: number;
|
||||
true_positives: number;
|
||||
true_negatives: number;
|
||||
false_positives: number;
|
||||
false_negatives: number;
|
||||
sensitivity: number;
|
||||
specificity: number;
|
||||
alert_threshold: number;
|
||||
target_confidence: number;
|
||||
meets_target: boolean;
|
||||
expanded_suite?: boolean;
|
||||
tuned?: boolean;
|
||||
recommended_alert_threshold?: number;
|
||||
cases?: GtBacktestCaseResult[];
|
||||
}
|
||||
|
||||
export interface GtRollingWeekScore {
|
||||
week_id: string;
|
||||
frozen_at?: string;
|
||||
alert_threshold: number;
|
||||
total_regions: number;
|
||||
labeled: number;
|
||||
pending: number;
|
||||
alerted: number;
|
||||
correct: number;
|
||||
accuracy: number;
|
||||
confidence_rate: number;
|
||||
wilson_lower_95: number;
|
||||
wilson_upper_95: number;
|
||||
true_positives: number;
|
||||
true_negatives: number;
|
||||
false_positives: number;
|
||||
false_negatives: number;
|
||||
sensitivity: number;
|
||||
specificity: number;
|
||||
scorable: boolean;
|
||||
}
|
||||
|
||||
export interface GtMicroRegionView {
|
||||
region: string;
|
||||
spot_risk: number;
|
||||
risk_3d_avg: number;
|
||||
risk_delta: number;
|
||||
days_in_window: number;
|
||||
day_scores: number[];
|
||||
alerted_spot: boolean;
|
||||
alerted_3d: boolean;
|
||||
ignition: boolean;
|
||||
financial: number;
|
||||
unrest: number;
|
||||
conflict: number;
|
||||
}
|
||||
|
||||
export interface GtMicroRollingReport {
|
||||
enabled?: boolean;
|
||||
mode?: string;
|
||||
window_days: number;
|
||||
alert_threshold: number;
|
||||
ignition_delta: number;
|
||||
as_of: string;
|
||||
days_stored: number;
|
||||
regions_tracked: number;
|
||||
ignition_count: number;
|
||||
alerted_3d_count: number;
|
||||
ignitions: GtMicroRegionView[];
|
||||
top_regions: GtMicroRegionView[];
|
||||
note?: string;
|
||||
message?: string;
|
||||
}
|
||||
|
||||
export interface GtRollingReport {
|
||||
enabled?: boolean;
|
||||
mode?: string;
|
||||
alert_threshold: number;
|
||||
target_confidence: number;
|
||||
weeks_requested: number;
|
||||
weeks_stored: number;
|
||||
weeks_scorable: number;
|
||||
min_labeled_per_week: number;
|
||||
latest: GtRollingWeekScore | null;
|
||||
trend: GtRollingWeekScore[];
|
||||
accuracy_series: { week_id: string; accuracy: number; labeled: number }[];
|
||||
improving_vs_prior: boolean;
|
||||
meets_target: boolean;
|
||||
note?: string;
|
||||
message?: string;
|
||||
}
|
||||
|
||||
export interface GtDossier {
|
||||
enabled?: boolean;
|
||||
region: string;
|
||||
current_risk: number;
|
||||
domain_risks?: {
|
||||
financial?: number;
|
||||
unrest?: number;
|
||||
conflict?: number;
|
||||
};
|
||||
recent_signals?: GtDossierSignalEntry[];
|
||||
contagion_risk?: number;
|
||||
interpretation?: string;
|
||||
scenarios?: Array<{ name: string; summary: string }>;
|
||||
}
|
||||
|
||||
export interface TelegramOsintPost {
|
||||
id: string;
|
||||
title?: string;
|
||||
description?: string;
|
||||
title_translated?: string;
|
||||
description_translated?: string;
|
||||
source_lang?: string;
|
||||
source_lang_label?: string;
|
||||
translate_to?: string;
|
||||
link?: string;
|
||||
published?: string;
|
||||
source?: string;
|
||||
@@ -1120,6 +1301,7 @@ export interface ActiveLayers {
|
||||
scm_suppliers: boolean;
|
||||
cyber_threats: boolean;
|
||||
telegram_osint: boolean;
|
||||
gt_risk: boolean;
|
||||
}
|
||||
|
||||
export interface SelectedEntity {
|
||||
|
||||
Reference in New Issue
Block a user