@echo off
setlocal
chcp 65001 >nul
title Instalador Qwen Code - Qwen Agente
echo.
echo  ==================================================
echo     Qwen Code + Qwen Agente - instalador para Windows
echo  ==================================================
echo.
set "QA_URL=https://qwenheretics.com/v1"
set "QA_MODEL=qwen-agente"
set "QA_KEY="
if not "%QA_KEY%"=="" goto tengo_clave
set /p "QA_KEY=Pega tu clave (sk-qa-...) y presiona Enter: "
:tengo_clave
if "%QA_KEY%"=="" (
  echo No se ingreso ninguna clave.
  pause
  exit /b 1
)

echo [1/3] Revisando Node.js...
where node >nul 2>nul
if errorlevel 1 goto instalar_node
node -e "process.exit(+process.versions.node.split('.')[0]<20?1:0)"
if errorlevel 1 goto instalar_node
echo       Node.js ya esta instalado.
goto node_ok
:instalar_node
echo       Instalando Node.js LTS con winget...
winget install -e --id OpenJS.NodeJS.LTS --accept-source-agreements --accept-package-agreements
if errorlevel 1 winget upgrade -e --id OpenJS.NodeJS.LTS --accept-source-agreements --accept-package-agreements
set "PATH=%ProgramFiles%\nodejs;%APPDATA%\npm;%PATH%"
node --version >nul 2>nul
if errorlevel 1 (
  echo       No se pudo instalar Node.js automaticamente.
  echo       Instalalo desde https://nodejs.org y vuelve a ejecutar este archivo.
  pause
  exit /b 1
)
:node_ok

echo [2/3] Revisando Qwen Code...
where qwen >nul 2>nul
if not errorlevel 1 (
  echo       Qwen Code ya esta instalado.
  goto qwen_ok
)
echo       Instalando Qwen Code...
call npm install -g @qwen-code/qwen-code@latest
if errorlevel 1 (
  echo       Error instalando Qwen Code con npm.
  pause
  exit /b 1
)
set "PATH=%APPDATA%\npm;%PATH%"
:qwen_ok

echo [3/3] Configurando Qwen Code para usar Qwen Agente...
powershell -NoProfile -ExecutionPolicy Bypass -Command "$ErrorActionPreference='Stop';$d=Join-Path $env:USERPROFILE '.qwen'; New-Item -ItemType Directory -Force $d | Out-Null;$f=Join-Path $d 'settings.json'; $s=$null;if(Test-Path $f){Copy-Item $f ($f+'.bak') -Force; try{$s=Get-Content $f -Raw | ConvertFrom-Json}catch{}};if(-not $s){$s=New-Object psobject};function P($o,$n,$v){if($o.PSObject.Properties[$n]){$o.$n=$v}else{$o | Add-Member -NotePropertyName $n -NotePropertyValue $v}};function O($o,$n){if(-not ($o.PSObject.Properties[$n] -and $o.$n -is [System.Management.Automation.PSCustomObject])){P $o $n (New-Object psobject)}; return $o.$n};$a=O (O $s 'security') 'auth'; P $a 'selectedType' 'openai'; P $a 'apiKey' $env:QA_KEY; P $a 'baseUrl' $env:QA_URL;$m=O $s 'model'; P $m 'name' $env:QA_MODEL; $g=O $m 'generationConfig';P $g 'contextWindowSize' 262144; P $g 'timeout' 1800000; P $g 'streamIdleTimeoutMs' 960000;[IO.File]::WriteAllText($f, ($s | ConvertTo-Json -Depth 30));Write-Host '      Configuracion guardada en' $f"
if errorlevel 1 (
  echo       No se pudo escribir la configuracion.
  pause
  exit /b 1
)

echo.
echo  Listo! Para usarlo:
echo    1. Abre una terminal nueva (PowerShell o CMD)
echo    2. Entra a la carpeta de tu proyecto, por ejemplo:  cd C:\proyectos\mi-app
echo    3. Escribe:  qwen
echo.
echo  Tu tiempo empieza con la primera peticion. Consulta lo que te queda en
echo    https://qwenheretics.com/estado
echo.
choice /c SN /m "Abrir Qwen Code ahora"
if errorlevel 2 goto fin
start "Qwen Code" cmd /k "cd /d %USERPROFILE% && qwen"
:fin
endlocal
