Files
AetherForge/server/web/src/help/cheatSheetContent.ts
drjones df81eb7744 Add fleet ops dashboard, Calibrate enforcement, and dead-code cleanup.
Ship live alerts, pool status, AI monitor, remote agent commands, build manager, and uninstall flow; wire Calibrate settings (WS ping, pool traffic log, retention limits) at runtime and exclude server/data from git.
2026-05-27 09:16:04 -07:00

194 lines
6.9 KiB
TypeScript

/** Structured content for the visual Guide / Cheat Sheet page. */
export interface CheatStep {
id: string;
title: string;
subtitle: string;
icon: string;
body: string;
route?: string;
routeLabel?: string;
tips?: string[];
}
export interface CheatSection {
id: string;
title: string;
description: string;
steps?: CheatStep[];
cards?: { title: string; body: string; accent?: string }[];
}
export const PIPELINE_STEPS: CheatStep[] = [
{
id: 'calibrate',
title: 'Calibrate',
subtitle: 'Server hub',
icon: '⚙',
body: 'Set listen port, data folder, fleet alerts, pool/wallet defaults for new Forge forms, and server limits. Does not change already-forged miners.',
route: '/settings',
routeLabel: 'Open Calibrate',
tips: ['One-time server setup', 'Public LAN URL helps Forge quick-pick chips'],
},
{
id: 'forge',
title: 'Forge',
subtitle: 'Per-miner config',
icon: '⚒',
body: 'Calibrate every worker here — wallet, pool, threads, install path, stealth, Fusion, AI. All baked into the .exe + uninstall script.',
route: '/forge',
routeLabel: 'Open Forge',
tips: ['Green badge = baked into installer', 'Preflight must pass before forge'],
},
{
id: 'deploy',
title: 'Deploy',
subtitle: 'Copy & run once',
icon: '📦',
body: 'Copy install-*.exe (or fused prep.exe) to each Windows machine. Double-click once — it embeds, persists, and connects back.',
tips: ['Keep uninstall-*.ps1 next to the exe', 'Use LAN IP in server URL, not localhost'],
},
{
id: 'connect',
title: 'Connect',
subtitle: 'WebSocket auth',
icon: '📡',
body: 'Worker reaches your control server, sends forged wallet/pool/AI config, appears on Command Deck and Fleet Roster.',
route: '/agents',
routeLabel: 'Fleet Roster',
tips: ['Signal Locked = dashboard live', 'Worker name from Forge shows in roster'],
},
{
id: 'mine',
title: 'Mine',
subtitle: 'RandomX + pool',
icon: '⛏',
body: 'Server opens Stratum to your forged pool. Jobs broadcast to agents. Shares validated against pool before accept rate updates.',
route: '/dashboard',
routeLabel: 'Command Deck',
tips: ['Hashrate wave chart = fleet total', 'Share log updates live'],
},
];
export const FORGE_VS_CALIBRATE = {
forge: {
title: 'Forge — per miner',
items: [
'Worker name & server URL',
'Wallet & pool (host, port, TLS)',
'Threads, CPU/RAM limits, schedule',
'Install path, stealth, persistence',
'Fusion prep bundling',
'AI Autonomy toggle + Ollama model',
],
},
calibrate: {
title: 'Calibrate — control server',
items: [
'Listen port & data directory',
'Dashboard subtitle',
'Fleet alert thresholds + notifications',
'Default pool/wallet for new Forge forms',
'Stats & build retention, max agents/build size',
'WebSocket ping, pool reconnect, logging toggles',
],
},
};
export const FUSION_GUIDE: CheatStep[] = [
{
id: 'f1',
title: 'Build worker config',
subtitle: 'Forge tab',
icon: '1',
body: 'Set all miner options first — Fusion wraps the same smart agent inside your prep app.',
},
{
id: 'f2',
title: 'Enable Fusion',
subtitle: 'Upload prep.exe',
icon: '2',
body: 'Toggle Fusion, upload your prep.exe, pick run order (parallel / prep first / worker first).',
},
{
id: 'f3',
title: 'Forge fused output',
subtitle: 'One file',
icon: '3',
body: 'Output is prep.exe (or custom name) containing your app + hidden worker. Uninstall script generated alongside.',
},
];
export const AI_GUIDE: CheatStep[] = [
{
id: 'a1',
title: 'Install Ollama',
subtitle: 'Control PC',
icon: '🤖',
body: 'Ollama runs on the machine hosting miner-server — not on workers. Default: http://localhost:11434',
},
{
id: 'a2',
title: 'Enable on Forge',
subtitle: 'AI Autonomy',
icon: '⚡',
body: 'Toggle AI Autonomy, set model (e.g. llama3.2). Re-forge to change after deploy.',
},
{
id: 'a3',
title: 'Agent loop',
subtitle: 'Every ~60s',
icon: '🔄',
body: 'Forged worker asks server /decide → Ollama → tool calls (self-heal, persistence check). Best with Self-healing on.',
},
];
export const TROUBLESHOOTING = [
{ problem: 'Agent never appears', fix: 'Server URL must be LAN IP (192.168.x.x), not localhost. Check Windows firewall on port 8989.' },
{ problem: '0 hashrate', fix: 'Pool must be reachable from control server. Check pool host/TLS/port in Forge match your pool docs.' },
{ problem: 'Forge blocked', fix: 'Read preflight ✕ errors. Common: missing wallet, localhost URL, Fusion without prep.exe, AI without Ollama URL.' },
{ problem: 'Shares all rejected', fix: 'Wallet address invalid or pool down. Accept rate waits for real pool validation now.' },
{ problem: 'Can\'t remove miner', fix: 'Run uninstall-*.ps1 from the same forge output folder as the installer — as the same Windows user.' },
{ problem: 'AI not doing anything', fix: 'Re-forge with AI on. Ollama must run on control PC. Check server logs for /agent/decide.' },
];
/** Shipped vs planned — shown on Guide page. */
export const ROADMAP_FEATURES = [
{ priority: 'high', title: 'Fleet alerts (live)', desc: 'Calibrate thresholds → dashboard banners + optional Telegram/email.' },
{ priority: 'high', title: 'Pool status panel', desc: 'Per-forged-pool Stratum health on Command Deck.' },
{ priority: 'high', title: 'AI activity monitor', desc: 'Ollama decide cycles and tool calls per agent.' },
{ priority: 'medium', title: 'Remote agent actions', desc: 'Pause, restart, stop, uninstall, log tail from dashboard.' },
{ priority: 'medium', title: 'Earnings estimator', desc: 'Fleet hashrate → estimated XMR/day.' },
{ priority: 'medium', title: 'Build manager', desc: 'Blueprint diff, re-forge, LAN QR downloads on Forge.' },
{ priority: 'low', title: 'Dashboard auth', desc: 'Password or API token for LAN-wide command deck access.' },
{ priority: 'low', title: 'LAN topology map', desc: 'Visual agent map by IP/subnet with fleet tags.' },
{ priority: 'low', title: 'PWA / mobile deck', desc: 'Phone-friendly Command Deck layout.' },
];
export const CHEAT_SECTIONS: CheatSection[] = [
{
id: 'pipeline',
title: 'End-to-end pipeline',
description: 'How data flows from your control PC to the pool.',
steps: PIPELINE_STEPS,
},
{
id: 'fusion',
title: 'Fusion workflow',
description: 'Bundle your prep app with the smart miner agent.',
steps: FUSION_GUIDE,
},
{
id: 'ai',
title: 'AI Autonomy workflow',
description: 'Self-healing via Ollama on the control server.',
steps: AI_GUIDE,
},
{
id: 'troubleshoot',
title: 'Troubleshooting',
description: 'Common fixes when something looks wrong.',
cards: TROUBLESHOOTING.map((t) => ({ title: t.problem, body: t.fix, accent: 'amber' })),
},
];