Skip to content

Commit c8e6744

Browse files
committed
feat: Improved dev script + cleanup script
1 parent 9f2b207 commit c8e6744

File tree

4 files changed

+81
-3
lines changed

4 files changed

+81
-3
lines changed

tools/server/public/index.html.gz

-8 Bytes
Binary file not shown.

tools/server/webui/package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"version": "1.0.0",
55
"type": "module",
66
"scripts": {
7-
"dev": "vite dev --host 0.0.0.0 & storybook dev -p 6006 --ci",
7+
"dev": "bash scripts/dev.sh",
88
"build": "vite build && ./scripts/post-build.sh",
99
"preview": "vite preview",
1010
"prepare": "svelte-kit sync || echo ''",
@@ -20,7 +20,8 @@
2020
"test:ui": "vitest --project=ui",
2121
"test:unit": "vitest",
2222
"storybook": "storybook dev -p 6006",
23-
"build-storybook": "storybook build"
23+
"build-storybook": "storybook build",
24+
"cleanup": "rm -rf .svelte-kit build node_modules test-results"
2425
},
2526
"devDependencies": {
2627
"@chromatic-com/storybook": "^4.0.1",

tools/server/webui/scripts/dev.sh

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#!/bin/bash
2+
3+
cd ../../../
4+
5+
# Check if llama-server binary already exists
6+
if [ ! -f "build/bin/llama-server" ]; then
7+
echo "Building llama-server..."
8+
cmake -B build && cmake --build build --config Release -t llama-server
9+
else
10+
echo "llama-server binary already exists, skipping build."
11+
fi
12+
13+
# Start llama-server and capture output
14+
echo "Starting llama-server..."
15+
mkfifo server_output.pipe
16+
build/bin/llama-server -hf ggml-org/gpt-oss-20b-GGUF --jinja -c 0 --no-webui > server_output.pipe 2>&1 &
17+
SERVER_PID=$!
18+
19+
# Function to wait for server to be ready
20+
wait_for_server() {
21+
echo "Waiting for llama-server to be ready..."
22+
local max_wait=60
23+
local start_time=$(date +%s)
24+
25+
# Read server output in background and look for the ready message
26+
(
27+
while IFS= read -r line; do
28+
echo "🔍 Server: $line"
29+
if [[ "$line" == *"server is listening on http://127.0.0.1:8080 - starting the main loop"* ]]; then
30+
echo "✅ llama-server is ready!"
31+
echo "READY" > server_ready.flag
32+
break
33+
fi
34+
done < server_output.pipe
35+
) &
36+
37+
# Wait for ready flag or timeout
38+
while [ ! -f server_ready.flag ]; do
39+
local current_time=$(date +%s)
40+
local elapsed=$((current_time - start_time))
41+
42+
if [ $elapsed -ge $max_wait ]; then
43+
echo "❌ Server failed to start within $max_wait seconds"
44+
rm -f server_ready.flag
45+
return 1
46+
fi
47+
48+
sleep 1
49+
done
50+
51+
rm -f server_ready.flag
52+
return 0
53+
}
54+
55+
# Cleanup function
56+
cleanup() {
57+
echo "🧹 Cleaning up..."
58+
kill $SERVER_PID 2>/dev/null
59+
rm -f server_output.pipe server_ready.flag
60+
exit
61+
}
62+
63+
# Set up signal handlers
64+
trap cleanup SIGINT SIGTERM
65+
66+
# Wait for server to be ready
67+
if wait_for_server; then
68+
echo "🚀 Starting development servers..."
69+
cd tools/server/webui
70+
storybook dev -p 6006 --ci & vite dev --open --host 0.0.0.0 &
71+
72+
# Wait for all background processes
73+
wait
74+
else
75+
echo "❌ Failed to start development environment"
76+
cleanup
77+
fi
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
rm -rf ../public/_app;
22
rm ../public/favicon.svg;
3-
rm ../public/index.html;
3+
rm ../public/index.html;

0 commit comments

Comments
 (0)