Files
Entropyk/dev.ps1
sepehr 5bd180b5b8
Some checks failed
CI / check (push) Has been cancelled
Snapshot WIP: solver HP epic progress, BPHX/HX physics, BMAD skill refresh.
Capture uncommitted solver robustness work (regularization, domain errors, linear solver lifecycle, tube DP/MSH), web workbench updates, and synced BMAD skills across IDE agent folders before starting BPHX pressure-drop.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-19 16:35:31 +02:00

101 lines
4.4 KiB
PowerShell

# Entropyk dev launcher — robust, idempotent.
# Starts the Rust API server (port 3030) and the Next.js UI (port 3000),
# kills any stale instances first, waits for both to be reachable.
$ErrorActionPreference = "Continue"
$workspace = "D:\dev1405\Entropyk"
$uiDir = "$workspace\apps\web"
$apiLog = "$workspace\server.log"
$uiLog = "$workspace\apps\web\next-dev.log"
function Stop-Port($port) {
Get-NetTCPConnection -LocalPort $port -ErrorAction SilentlyContinue | ForEach-Object {
try { Stop-Process -Id $_.OwningProcess -Force -ErrorAction SilentlyContinue } catch {}
}
}
function Wait-Http($url, $timeoutSec = 60) {
$deadline = (Get-Date).AddSeconds($timeoutSec)
while ((Get-Date) -lt $deadline) {
try {
$r = Invoke-WebRequest -Uri $url -UseBasicParsing -TimeoutSec 3
if ($r.StatusCode -lt 500) { return $true }
} catch {}
Start-Sleep -Seconds 1
}
return $false
}
Write-Host "=== Entropyk launcher ===" -ForegroundColor Cyan
# 1. Kill anything stale on 3030 and 3000
Write-Host "[1/5] Killing stale processes on :3030 and :3000..." -ForegroundColor Yellow
Get-CimInstance Win32_Process | Where-Object {
$_.Name -in @("ui-server.exe") -or
($_.CommandLine -match "next dev" -and $_.CommandLine -match "apps.web") -or
($_.CommandLine -match "cargo.*entropyk-demo.*ui-server")
} | ForEach-Object {
Write-Host " killing PID $($_.ProcessId) ($($_.Name))" -ForegroundColor DarkGray
try { Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue } catch {}
}
Stop-Port 3030
Stop-Port 3000
Start-Sleep -Seconds 2
# 2. Build the API server (debug = ~10s)
Write-Host "[2/5] Building Rust API server..." -ForegroundColor Yellow
$build = Start-Process -FilePath "cargo" -ArgumentList "build","--package","entropyk-demo","--bin","ui-server" -WorkingDirectory $workspace -PassThru -NoNewWindow -Wait
if ($build.ExitCode -ne 0) {
Write-Host " BUILD FAILED (exit $($build.ExitCode))" -ForegroundColor Red
exit 1
}
Write-Host " build OK" -ForegroundColor Green
# 3. Start Rust API server (detached, with log redirect)
Write-Host "[3/5] Starting Rust API server on :3030..." -ForegroundColor Yellow
Remove-Item $apiLog -Force -ErrorAction SilentlyContinue
$apiProc = Start-Process -FilePath "$workspace\target\debug\ui-server.exe" `
-WorkingDirectory $workspace `
-RedirectStandardOutput $apiLog `
-RedirectStandardError "$workspace\server-err.log" `
-PassThru -WindowStyle Hidden
Write-Host " PID $($apiProc.Id), waiting for health..." -ForegroundColor DarkGray
if (-not (Wait-Http "http://localhost:3030/api/health" 30)) {
Write-Host " API server failed to start! Log:" -ForegroundColor Red
Get-Content $apiLog -Tail 20 -ErrorAction SilentlyContinue
exit 1
}
Write-Host " API server UP on :3030" -ForegroundColor Green
# 4. Start Next.js dev server
Write-Host "[4/5] Starting Next.js dev server on :3000..." -ForegroundColor Yellow
Remove-Item $uiLog -Force -ErrorAction SilentlyContinue
$uiProc = Start-Process -FilePath "cmd" -ArgumentList "/c","npm run dev > `"$uiLog`" 2>&1" `
-WorkingDirectory $uiDir `
-PassThru -WindowStyle Hidden
Write-Host " PID $($uiProc.Id), waiting for UI..." -ForegroundColor DarkGray
if (-not (Wait-Http "http://localhost:3000" 60)) {
Write-Host " UI failed to start! Log:" -ForegroundColor Red
Get-Content $uiLog -Tail 20 -ErrorAction SilentlyContinue
exit 1
}
Write-Host " UI UP on :3000" -ForegroundColor Green
# 5. Status
Write-Host "[5/5] Final status:" -ForegroundColor Yellow
try { $api = Invoke-WebRequest "http://localhost:3030/api/health" -UseBasicParsing -TimeoutSec 3; Write-Host " API :3030 -> HTTP $($api.StatusCode)" -ForegroundColor Green } catch { Write-Host " API :3030 -> DOWN" -ForegroundColor Red }
try { $ui = Invoke-WebRequest "http://localhost:3000" -UseBasicParsing -TimeoutSec 3; Write-Host " UI :3000 -> HTTP $($ui.StatusCode)" -ForegroundColor Green } catch { Write-Host " UI :3000 -> DOWN" -ForegroundColor Red }
Write-Host ""
Write-Host "Both servers running." -ForegroundColor Green
Write-Host " UI: http://localhost:3000" -ForegroundColor White
Write-Host " API: http://localhost:3030/api/health" -ForegroundColor White
Write-Host ""
Write-Host "Logs:" -ForegroundColor DarkGray
Write-Host " API: $apiLog" -ForegroundColor DarkGray
Write-Host " UI: $uiLog" -ForegroundColor DarkGray
Write-Host ""
Write-Host "Open http://localhost:3000 in your browser." -ForegroundColor Cyan