chore: initial commit of ai site platform

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
whm
2026-07-31 10:31:17 +08:00
commit 4ca82fb58a
203 changed files with 45745 additions and 0 deletions

View File

@@ -0,0 +1,102 @@
"""Hard-reset native stack ports and start host services."""
from __future__ import annotations
import os
import subprocess
import sys
import time
import urllib.request
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
LOG = ROOT / ".runtime" / "logs"
LOG.mkdir(parents=True, exist_ok=True)
PORTS = (8888, 8001, 8180, 5173)
def pids_on_port(port: int) -> list[int]:
out = subprocess.check_output(["netstat", "-ano"], text=True, errors="replace")
pids: set[int] = set()
needle = f":{port}"
for line in out.splitlines():
if needle not in line or "LISTENING" not in line.upper():
continue
parts = line.split()
try:
pids.add(int(parts[-1]))
except ValueError:
pass
return sorted(pids)
def kill_pid(pid: int) -> None:
if pid <= 0:
return
subprocess.run(["taskkill", "/F", "/T", "/PID", str(pid)], check=False, capture_output=True)
def main() -> None:
print("==> hard stop ports", PORTS)
for name in ("watchdog.pid", "ai-service.pid", "platform.pid", "gateway.pid", "web.pid"):
pf = LOG / name
if pf.is_file():
try:
kill_pid(int(pf.read_text(encoding="ascii").strip()))
except ValueError:
pass
pf.unlink(missing_ok=True)
for port in PORTS:
for pid in pids_on_port(port):
print(f" kill :{port} pid={pid}")
kill_pid(pid)
time.sleep(2)
# leftover listeners
for port in PORTS:
for pid in pids_on_port(port):
print(f" re-kill :{port} pid={pid}")
kill_pid(pid)
time.sleep(1)
print("==> start-host.ps1 -NoBrowser")
# Prefer -UseHost path without docker
ps1 = ROOT / "start-host.ps1"
proc = subprocess.run(
[
"powershell",
"-NoProfile",
"-ExecutionPolicy",
"Bypass",
"-File",
str(ps1),
"-NoBrowser",
],
cwd=str(ROOT),
check=False,
)
if proc.returncode != 0:
raise SystemExit(f"start-host failed code={proc.returncode}")
# verify
for url in (
"http://127.0.0.1:5173/",
"http://127.0.0.1:8001/health",
"http://127.0.0.1:8180/gateway/health",
):
try:
with urllib.request.urlopen(url, timeout=3) as r:
print(f"OK {url} -> {r.status}")
except Exception as e:
print(f"FAIL {url} -> {e}")
raise SystemExit(1)
# only one listener on 8001
p8001 = pids_on_port(8001)
print("listeners :8001 ->", p8001)
p5173 = pids_on_port(5173)
print("listeners :5173 ->", p5173)
if __name__ == "__main__":
main()