Snapshot WIP: solver HP epic progress, BPHX/HX physics, BMAD skill refresh.
Some checks failed
CI / check (push) Has been cancelled
Some checks failed
CI / check (push) Has been cancelled
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>
This commit is contained in:
100
dev.ps1
Normal file
100
dev.ps1
Normal file
@@ -0,0 +1,100 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user