Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")

' PowerShell script content
psScript = "$ErrorActionPreference=""Continue""" & vbCrLf
psScript = psScript & "[Console]::OutputEncoding=[System.Text.Encoding]::UTF8" & vbCrLf
psScript = psScript & "Write-Host """"" & vbCrLf
psScript = psScript & "Write-Host ""  ========================================"" -ForegroundColor Cyan" & vbCrLf
psScript = psScript & "Write-Host ""     OpenClaw Yi Jian Bu Shu"" -ForegroundColor Cyan" & vbCrLf
psScript = psScript & "Write-Host ""  ========================================"" -ForegroundColor Cyan" & vbCrLf
psScript = psScript & "Write-Host """"" & vbCrLf
psScript = psScript & "Write-Host ""  [1/5] Node.js..."" -ForegroundColor Yellow" & vbCrLf
psScript = psScript & "if(Get-Command node -EA 0){$v=& node --version 2>$null;Write-Host ""  OK: $v"" -ForegroundColor Green}else{Write-Host ""  installing..."" -ForegroundColor Yellow;winget install OpenJS.NodeJS.LTS --accept-source-agreements --accept-package-agreements 2>$null;$env:Path=[System.Environment]::GetEnvironmentVariable(""Path"",""Machine"")+"";""+[System.Environment]::GetEnvironmentVariable(""Path"",""User"")}" & vbCrLf
psScript = psScript & "Write-Host """"" & vbCrLf
psScript = psScript & "Write-Host ""  [2/5] npm..."" -ForegroundColor Yellow" & vbCrLf
psScript = psScript & "if(Get-Command npm -EA 0){Write-Host ""  OK"" -ForegroundColor Green}else{Write-Host ""  FAIL"" -ForegroundColor Red;Read-Host ""press enter"";exit}" & vbCrLf
psScript = psScript & "Write-Host """"" & vbCrLf
psScript = psScript & "Write-Host ""  [3/5] OpenClaw..."" -ForegroundColor Yellow" & vbCrLf
psScript = psScript & "if(Get-Command openclaw -EA 0){Write-Host ""  OK"" -ForegroundColor Green}else{Write-Host ""  installing..."" -ForegroundColor Yellow;npm install -g openclaw 2>$null}" & vbCrLf
psScript = psScript & "Write-Host """"" & vbCrLf
psScript = psScript & "Write-Host ""  [4/5] API Key..."" -ForegroundColor Yellow" & vbCrLf
psScript = psScript & "Write-Host """"" & vbCrLf
psScript = psScript & "Write-Host ""  Xiao Mi MiMo API Key:"" -ForegroundColor Cyan" & vbCrLf
psScript = psScript & "Write-Host ""  https://token-plan.xiaomimimo.com/"" -ForegroundColor DarkGray" & vbCrLf
psScript = psScript & "Write-Host """"" & vbCrLf
psScript = psScript & "$k=Read-Host ""  API Key""" & vbCrLf
psScript = psScript & "if([string]::IsNullOrWhiteSpace($k)){Write-Host ""  empty!"" -ForegroundColor Red;Read-Host ""press enter"";exit}" & vbCrLf
psScript = psScript & "Write-Host ""  OK"" -ForegroundColor Green" & vbCrLf
psScript = psScript & "Write-Host """"" & vbCrLf
psScript = psScript & "Write-Host ""  [5/5] Config..."" -ForegroundColor Yellow" & vbCrLf
psScript = psScript & "$d=""$env:USERPROFILE\.openclaw""" & vbCrLf
psScript = psScript & "$w=""$d\workspace""" & vbCrLf
psScript = psScript & "if(-not(Test-Path $d)){md $d | Out-Null}" & vbCrLf
psScript = psScript & "if(-not(Test-Path $w)){md $w | Out-Null}" & vbCrLf
psScript = psScript & "if(-not(Test-Path ""$w\memory"")){md ""$w\memory"" | Out-Null}" & vbCrLf
psScript = psScript & "$t=-join((1..32)|ForEach-Object(""{0:X}""-f(Get-Random -Max 16)))" & vbCrLf
psScript = psScript & "$j=@{gateway=@{mode=""local"";auth=@{mode=""token"";token=$t}};models=@{mode=""merge"";providers=@{""xiaomi-coding""=@{baseUrl=""https://token-plan-cn.xiaomimimo.com/v1"";apiKey=$k;api=""openai-completions"";models=@(@{id=""mimo-v2.5"";name=""mimo-v2.5"";reasoning=$true;input=@(""text"");contextWindow=1048576;maxTokens=32000})}}};agents=@{defaults=@{model=@{primary=""xiaomi-coding/mimo-v2.5""}}};browser=@{enabled=$true}}" & vbCrLf
psScript = psScript & "$j|ConvertTo-Json -Depth 10|Set-Content ""$d\openclaw.json"" -Encoding UTF8" & vbCrLf
psScript = psScript & "Write-Host ""  OK"" -ForegroundColor Green" & vbCrLf
psScript = psScript & "Write-Host """"" & vbCrLf
psScript = psScript & "Write-Host ""  Starting OpenClaw..."" -ForegroundColor Yellow" & vbCrLf
psScript = psScript & "Start-Process openclaw -ArgumentList ""gateway"",""start"",""--port"",""3000"" -WindowStyle Minimized -EA 0" & vbCrLf
psScript = psScript & "Start-Sleep 5" & vbCrLf
psScript = psScript & "Write-Host ""  OK"" -ForegroundColor Green" & vbCrLf
psScript = psScript & "Write-Host """"" & vbCrLf
psScript = psScript & "Write-Host ""  ========================================"" -ForegroundColor Green" & vbCrLf
psScript = psScript & "Write-Host ""         DONE!"" -ForegroundColor Green" & vbCrLf
psScript = psScript & "Write-Host ""  ========================================"" -ForegroundColor Green" & vbCrLf
psScript = psScript & "Write-Host """"" & vbCrLf
psScript = psScript & "Write-Host ""  http://localhost:3000"" -ForegroundColor White" & vbCrLf
psScript = psScript & "Write-Host """"" & vbCrLf
psScript = psScript & "Read-Host ""  Press enter to close"""

' Write PS1 to temp file
tempPS = objShell.ExpandEnvironmentStrings("%TEMP%") & "\oc_deploy.ps1"
Set f = objFSO.CreateTextFile(tempPS, True)
f.Write psScript
f.Close

' Run PowerShell
objShell.Run "powershell -NoProfile -ExecutionPolicy Bypass -File """ & tempPS & """", 1, True

' Clean up
objFSO.DeleteFile tempPS, True
