| <!doctype html> |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8" /> |
| <meta name="viewport" content="width=device-width, initial-scale=1" /> |
| <title>MindsEye — Hunting Engine</title> |
| <link rel="stylesheet" href="assets/css/base.css" /> |
| <link rel="stylesheet" href="assets/css/layout.css" /> |
| <link rel="stylesheet" href="assets/css/retro.css" /> |
| </head> |
| <body> |
| <header class="topbar"> |
| <div class="brand"> |
| <span class="brand__title">MindsEye</span> |
| <span class="brand__sub">Hunting Engine • Events / Automations / Hunts / Hunt Automations</span> |
| </div> |
| <div class="status"> |
| <span id="statusClock">--:--:--</span> |
| <span class="dot" id="statusDot"></span> |
| <span id="statusText">READY</span> |
| </div> |
| </header> |
|
|
| <main class="grid"> |
| |
| <section class="panel panel--flow"> |
| <div class="panel__head"> |
| <span>FLOW MAP</span> |
| <span class="hint">[click nodes] [inject events] [watch paths glow]</span> |
| </div> |
| <canvas id="flowCanvas" width="900" height="520"></canvas> |
| <div class="panel__foot"> |
| <span id="flowInfo">No selection.</span> |
| </div> |
| </section> |
|
|
| |
| <section class="panel panel--controls"> |
| <div class="panel__head"><span>CONTROLS</span></div> |
|
|
| <div class="group"> |
| <div class="group__title">INJECT EVENT</div> |
| <button class="btn" id="btnInjectEmail">+ email.received</button> |
| <button class="btn" id="btnInjectExternal">+ external.signal</button> |
| <button class="btn" id="btnTick">▶ tick</button> |
| </div> |
|
|
| <div class="group"> |
| <div class="group__title">AUTOMATIONS</div> |
| <label class="row"> |
| <input type="checkbox" id="toggleAuto" checked /> |
| <span>enable automations</span> |
| </label> |
| <label class="row"> |
| <span>rule strictness</span> |
| <input type="range" id="rngStrict" min="0" max="100" value="65" /> |
| <span class="mono" id="valStrict">65</span> |
| </label> |
| <label class="row"> |
| <span>confidence gate</span> |
| <input type="range" id="rngGate" min="0" max="100" value="70" /> |
| <span class="mono" id="valGate">70</span> |
| </label> |
| </div> |
|
|
| <div class="group"> |
| <div class="group__title">NOISE</div> |
| <label class="row"> |
| <span>noise ratio</span> |
| <input type="range" id="rngNoise" min="0" max="100" value="25" /> |
| <span class="mono" id="valNoise">25</span> |
| </label> |
| <label class="row"> |
| <span>mislabel rate</span> |
| <input type="range" id="rngMislabel" min="0" max="100" value="10" /> |
| <span class="mono" id="valMislabel">10</span> |
| </label> |
| </div> |
|
|
| <div class="group"> |
| <div class="group__title">HUNT</div> |
| <select id="huntObjective" class="select"> |
| <option value="lead">Objective: Lead Hunt</option> |
| <option value="compliance">Objective: Compliance Hunt</option> |
| <option value="incident">Objective: Incident Hunt</option> |
| </select> |
| <button class="btn btn--hot" id="btnStartHunt">START HUNT</button> |
| </div> |
|
|
| <div class="group"> |
| <div class="group__title">SCENE</div> |
| <select id="scenarioSelect" class="select"></select> |
| <button class="btn" id="btnReset">RESET</button> |
| </div> |
|
|
| <div class="footerNote"> |
| Tip: This is a playable ledger. Every action writes to the ledger. |
| </div> |
| </section> |
|
|
| |
| <section class="panel panel--ledger"> |
| <div class="panel__head"> |
| <span>LEDGER</span> |
| <span class="hint">append-only • time-stamped • no magic</span> |
| </div> |
| <div id="ledgerFeed" class="feed"></div> |
| </section> |
|
|
| |
| <section class="panel panel--hunt"> |
| <div class="panel__head"> |
| <span>HUNT RESULTS</span> |
| <span class="hint">ranked • explainable • confidence</span> |
| </div> |
| <div id="huntResults" class="feed"></div> |
| </section> |
| </main> |
|
|
| <script type="module" src="assets/js/main.js"></script> |
| </body> |
| </html> |
| <button class="btn" id="btnResetView">RESET VIEW</button> |
|
|