'use strict'; const form=document.querySelector('#setup-form'); const names={mac:'macOS',win:'Windows',linux:'Linux',codex:'Codex',claude_code:'Claude Code',cursor:'Cursor',js:'JavaScript / Electron',web:'网页行为',native:'原生二进制'}; function codeBox(text){const box=document.createElement('div');box.className='codebox';const pre=document.createElement('pre');const code=document.createElement('code');code.textContent=text;pre.append(code);const button=document.createElement('button');button.type='button';button.className='copy';button.textContent='复制';button.addEventListener('click',async()=>{try{await navigator.clipboard.writeText(text);button.textContent='已复制';setTimeout(()=>button.textContent='复制',1800);}catch{button.textContent='请手动复制';}});box.append(pre,button);return box;} function guide(){const os=form.os.value,agent=form.agent.value,target=form.target.value;const out=document.querySelector('#guide');out.replaceChildren();const title=document.createElement('div');title.innerHTML=`YOUR SETUP GUIDE
${names[target]} / 命令在你的终端运行
安装 Node 22.19+(22.x)、24.11+(24.x)或 26+,并确认 npm 可用。${os==='win'?'以下命令在 PowerShell 中运行。':''}
`;out.append(title,codeBox('node --version\nnpm --version')); const dependency=document.createElement('p');dependency.textContent=target==='native'?(os==='win'?'准备可用的分析引擎。Windows Ghidra 路径仍需对照官方实验性支持文档;本页未验证该组合。':'准备 Ghidra、Hopper 或 IDA。先确认引擎能启动,再配置 REA。'):target==='web'?'准备 Chrome 系浏览器,并按官方浏览器指南建立调试连接。':'静态 JavaScript 分析无需 Ghidra 或 Hopper。准备已解包目录或受支持的 ASAR。';out.append(dependency);if(os==='linux'){const note=document.createElement('p');note.textContent='Linux:确认 PATH 中有 procps 兼容的 ps,用于相关分析路径的进程检查。';out.append(note);} const step=document.createElement('h3');step.textContent='2. 预览配置计划,再执行';out.append(step,codeBox(`npx rea-agents@6.5.0 setup --client ${agent} --dry-run`));const note=document.createElement('p');note.textContent='先查看将修改的路径。准备好后执行下面的命令,在终端确认计划,完成后重启所选代理。';out.append(note,codeBox(`npx rea-agents@6.5.0 setup --client ${agent}`));const h=document.createElement('h3');h.textContent='3. 检查注册,再开始调查';out.append(h,codeBox(`npx rea-agents@6.5.0 doctor --client ${agent} --json`));const final=document.createElement('p');final.textContent='doctor 注册检查不代表整个分析环境已经可用。接着用一个小目标验证工具调用和返回结果。';out.append(final);const a=document.createElement('a');a.href=target==='web'?'https://rea.tools/guides/':target==='native'?'https://github.com/morluto/rea/blob/main/docs/installation.md':'cases.html';a.className='text-link';a.textContent=target==='js'?'用本站 CSV 示例验证 →':'查看对应官方准备步骤 ↗';out.append(a);} if(form){form.addEventListener('submit',e=>{e.preventDefault();guide();document.querySelector('#guide').scrollIntoView({behavior:'smooth',block:'start'});});guide();} const search=document.querySelector('#problem-search');if(search)search.addEventListener('input',()=>{let count=0;document.querySelectorAll('#problems details').forEach(el=>{const match=el.textContent.toLowerCase().includes(search.value.trim().toLowerCase());el.hidden=!match;if(match)count++;});document.querySelector('#empty').hidden=count>0;});