Spaces:
Running
Running
File size: 3,161 Bytes
a36db1b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | "use client";
import SpecialistNetwork from "./SpecialistNetwork";
import TrustTimeline from "./TrustTimeline";
import MissionBriefing from "./MissionBriefing";
import ActionCenter from "./ActionCenter";
import FlightRecorder from "./FlightRecorder";
import type { ActionType, AutoPolicy, Observation, EventItem } from "../lib/types";
export default function MissionControl({
observation,
trustDeltas,
activeSpec,
recommended,
score,
detections,
poisonings,
events,
running,
done,
lastReq,
lastRes,
onStep,
onAutoRun,
onStop,
}: {
observation: Observation | null;
trustDeltas: Record<string, number>;
activeSpec: string | null;
recommended: { action: ActionType; specialist: string; trust: number };
score: number | undefined;
detections?: number;
poisonings?: number;
events: EventItem[];
running: boolean;
done: boolean;
lastReq: Record<string, unknown> | null;
lastRes: Record<string, unknown> | null;
onStep: (action: ActionType) => void;
onAutoRun: (policy: AutoPolicy) => void;
onStop: () => void;
}) {
return (
<div className="mc">
{/* left column */}
<div className="mc-left">
<div className="panel">
<div className="panel-head">
<div className="panel-eyebrow">Specialist Network</div>
<div className="panel-title">Public Slots vs Hidden Risk</div>
</div>
<SpecialistNetwork
observation={observation}
trustDeltas={trustDeltas}
activeSpec={activeSpec}
/>
</div>
<div className="panel">
<div className="panel-head">
<div className="panel-eyebrow">Trust Timeline</div>
<div className="panel-title">Behavioral Trust Scores</div>
</div>
<TrustTimeline observation={observation} trustDeltas={trustDeltas} />
</div>
</div>
{/* right column */}
<div className="mc-right">
<div className="panel">
<div className="panel-head">
<div className="panel-eyebrow">Mission Briefing</div>
<div className="panel-title">Live Orchestrator State</div>
</div>
<MissionBriefing
observation={observation}
score={score}
detections={detections}
poisonings={poisonings}
/>
</div>
<div className="panel">
<div className="panel-head">
<div className="panel-eyebrow">Command</div>
<div className="panel-title">Run the Orchestrator</div>
</div>
<ActionCenter
recommended={recommended}
running={running}
done={done}
onStep={onStep}
onAutoRun={onAutoRun}
onStop={onStop}
/>
</div>
<div className="panel">
<div className="panel-head">
<div className="panel-eyebrow">Flight Recorder</div>
<div className="panel-title">Event Trail</div>
</div>
<FlightRecorder events={events} lastReq={lastReq} lastRes={lastRes} />
</div>
</div>
</div>
);
}
|