arkaos 2.3.1 → 2.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/VERSION +1 -1
- package/package.json +1 -1
- package/pyproject.toml +1 -1
- package/scripts/start-dashboard.sh +78 -29
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.3.
|
|
1
|
+
2.3.2
|
package/package.json
CHANGED
package/pyproject.toml
CHANGED
|
@@ -1,54 +1,103 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
# ArkaOS Dashboard — Start FastAPI + Nuxt servers
|
|
2
|
+
# ArkaOS Dashboard — Start FastAPI + Nuxt servers with dynamic ports
|
|
3
3
|
set -euo pipefail
|
|
4
4
|
|
|
5
5
|
ARKAOS_ROOT="${ARKAOS_ROOT:-$(cd "$(dirname "$0")/.." && pwd)}"
|
|
6
6
|
DASHBOARD_DIR="${ARKAOS_ROOT}/dashboard"
|
|
7
7
|
PID_FILE="$HOME/.arkaos/dashboard.pid"
|
|
8
|
-
|
|
9
|
-
UI_PORT="${ARKAOS_DASHBOARD_UI_PORT:-3333}"
|
|
8
|
+
PORT_FILE="$HOME/.arkaos/dashboard.ports"
|
|
10
9
|
|
|
11
10
|
mkdir -p "$HOME/.arkaos"
|
|
12
11
|
|
|
13
|
-
#
|
|
12
|
+
# ── Kill existing if running ──
|
|
14
13
|
if [ -f "$PID_FILE" ]; then
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
echo " UI: http://localhost:${UI_PORT}"
|
|
21
|
-
exit 0
|
|
22
|
-
fi
|
|
23
|
-
rm -f "$PID_FILE"
|
|
14
|
+
while read -r pid; do
|
|
15
|
+
kill "$pid" 2>/dev/null || true
|
|
16
|
+
done < "$PID_FILE"
|
|
17
|
+
rm -f "$PID_FILE" "$PORT_FILE"
|
|
18
|
+
sleep 1
|
|
24
19
|
fi
|
|
25
20
|
|
|
26
|
-
#
|
|
27
|
-
|
|
28
|
-
|
|
21
|
+
# ── Find available ports ──
|
|
22
|
+
find_port() {
|
|
23
|
+
local port=$1
|
|
24
|
+
while lsof -i :"$port" >/dev/null 2>&1; do
|
|
25
|
+
port=$((port + 1))
|
|
26
|
+
done
|
|
27
|
+
echo "$port"
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
API_PORT=$(find_port "${ARKAOS_DASHBOARD_API_PORT:-3334}")
|
|
31
|
+
UI_PORT=$(find_port "${ARKAOS_DASHBOARD_UI_PORT:-3333}")
|
|
32
|
+
|
|
33
|
+
echo ""
|
|
34
|
+
echo " ArkaOS Dashboard"
|
|
35
|
+
echo " ─────────────────"
|
|
36
|
+
|
|
37
|
+
# ── Start FastAPI backend ──
|
|
38
|
+
echo " Starting API on :${API_PORT}..."
|
|
39
|
+
ARKAOS_ROOT="$ARKAOS_ROOT" python3 "${ARKAOS_ROOT}/scripts/dashboard-api.py" --port "$API_PORT" >/dev/null 2>&1 &
|
|
29
40
|
API_PID=$!
|
|
41
|
+
sleep 2
|
|
42
|
+
|
|
43
|
+
# Verify API started
|
|
44
|
+
if ! kill -0 "$API_PID" 2>/dev/null; then
|
|
45
|
+
echo " ✗ API failed to start"
|
|
46
|
+
exit 1
|
|
47
|
+
fi
|
|
48
|
+
echo " ✓ API: http://localhost:${API_PORT}"
|
|
30
49
|
|
|
31
|
-
#
|
|
50
|
+
# ── Start Nuxt frontend ──
|
|
51
|
+
UI_PID=""
|
|
32
52
|
if [ -d "${DASHBOARD_DIR}/.output" ]; then
|
|
33
|
-
echo "Starting
|
|
34
|
-
PORT="$UI_PORT" node "${DASHBOARD_DIR}/.output/server/index.mjs" &
|
|
53
|
+
echo " Starting UI on :${UI_PORT}..."
|
|
54
|
+
PORT="$UI_PORT" NUXT_PUBLIC_API_BASE="http://localhost:${API_PORT}" node "${DASHBOARD_DIR}/.output/server/index.mjs" >/dev/null 2>&1 &
|
|
35
55
|
UI_PID=$!
|
|
36
56
|
elif [ -d "${DASHBOARD_DIR}/node_modules" ]; then
|
|
37
|
-
echo "Starting
|
|
38
|
-
cd "$DASHBOARD_DIR" && npx nuxt dev --port "$UI_PORT" &
|
|
57
|
+
echo " Starting UI (dev) on :${UI_PORT}..."
|
|
58
|
+
cd "$DASHBOARD_DIR" && NUXT_PUBLIC_API_BASE="http://localhost:${API_PORT}" npx nuxt dev --port "$UI_PORT" >/dev/null 2>&1 &
|
|
39
59
|
UI_PID=$!
|
|
60
|
+
cd "$ARKAOS_ROOT"
|
|
40
61
|
else
|
|
41
|
-
|
|
42
|
-
|
|
62
|
+
# Auto-install and start
|
|
63
|
+
echo " Installing dashboard dependencies..."
|
|
64
|
+
if command -v pnpm >/dev/null 2>&1; then
|
|
65
|
+
(cd "$DASHBOARD_DIR" && pnpm install --silent 2>/dev/null)
|
|
66
|
+
else
|
|
67
|
+
(cd "$DASHBOARD_DIR" && npm install --silent 2>/dev/null)
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
if [ -d "${DASHBOARD_DIR}/node_modules" ]; then
|
|
71
|
+
echo " Starting UI (dev) on :${UI_PORT}..."
|
|
72
|
+
cd "$DASHBOARD_DIR" && NUXT_PUBLIC_API_BASE="http://localhost:${API_PORT}" npx nuxt dev --port "$UI_PORT" >/dev/null 2>&1 &
|
|
73
|
+
UI_PID=$!
|
|
74
|
+
cd "$ARKAOS_ROOT"
|
|
75
|
+
else
|
|
76
|
+
echo " ⚠ Dashboard install failed. API-only mode."
|
|
77
|
+
fi
|
|
43
78
|
fi
|
|
44
79
|
|
|
45
|
-
# Save
|
|
80
|
+
# ── Save state ──
|
|
46
81
|
echo "$API_PID" > "$PID_FILE"
|
|
47
|
-
[ -n "$
|
|
82
|
+
[ -n "$UI_PID" ] && echo "$UI_PID" >> "$PID_FILE"
|
|
83
|
+
echo "API_PORT=$API_PORT" > "$PORT_FILE"
|
|
84
|
+
echo "UI_PORT=$UI_PORT" >> "$PORT_FILE"
|
|
48
85
|
|
|
49
86
|
echo ""
|
|
50
|
-
echo "
|
|
51
|
-
echo " API: http://localhost:${API_PORT}
|
|
52
|
-
[ -n "$
|
|
87
|
+
echo " ┌──────────────────────────────────────┐"
|
|
88
|
+
echo " │ API: http://localhost:${API_PORT} │"
|
|
89
|
+
[ -n "$UI_PID" ] && echo " │ UI: http://localhost:${UI_PORT} │"
|
|
90
|
+
echo " └──────────────────────────────────────┘"
|
|
91
|
+
echo ""
|
|
92
|
+
echo " Stop: npx arkaos dashboard stop"
|
|
93
|
+
echo " or kill \$(cat $PID_FILE)"
|
|
53
94
|
echo ""
|
|
54
|
-
|
|
95
|
+
|
|
96
|
+
# Wait for UI to be ready
|
|
97
|
+
if [ -n "$UI_PID" ]; then
|
|
98
|
+
sleep 5
|
|
99
|
+
# Open browser
|
|
100
|
+
if command -v open >/dev/null 2>&1; then
|
|
101
|
+
open "http://localhost:${UI_PORT}" 2>/dev/null || true
|
|
102
|
+
fi
|
|
103
|
+
fi
|