91 lines
2.7 KiB
Bash
Executable File
91 lines
2.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
SESSION="${SYBIL_TMUX_SESSION:-sybil-dev}"
|
|
LOG_DIR="$ROOT/.devbox/logs"
|
|
PID_DIR="$ROOT/.devbox/pids"
|
|
|
|
require_env() {
|
|
local name="$1"
|
|
if [[ -z "${!name:-}" ]]; then
|
|
echo "Missing required environment variable: $name" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
require_env OPENAI_API_KEY
|
|
require_env EXA_API_KEY
|
|
|
|
mkdir -p "$LOG_DIR" "$PID_DIR"
|
|
|
|
export HOST="${HOST:-0.0.0.0}"
|
|
export PORT="${PORT:-8787}"
|
|
export DATABASE_URL="${DATABASE_URL:-file:$ROOT/server/dev.db}"
|
|
|
|
echo "Installing server dependencies..."
|
|
npm ci --prefix "$ROOT/server" --no-audit --no-fund
|
|
|
|
echo "Installing web dependencies..."
|
|
npm ci --prefix "$ROOT/web" --no-audit --no-fund
|
|
|
|
if command -v tmux >/dev/null 2>&1; then
|
|
tmux kill-session -t "$SESSION" >/dev/null 2>&1 || true
|
|
tmux new-session -d -s "$SESSION" -n server -c "$ROOT/server" "sleep infinity"
|
|
tmux set-environment -t "$SESSION" OPENAI_API_KEY "$OPENAI_API_KEY"
|
|
tmux set-environment -t "$SESSION" EXA_API_KEY "$EXA_API_KEY"
|
|
tmux set-environment -t "$SESSION" HOST "$HOST"
|
|
tmux set-environment -t "$SESSION" PORT "$PORT"
|
|
tmux set-environment -t "$SESSION" DATABASE_URL "$DATABASE_URL"
|
|
if [[ -n "${BRIX_CLUSTER:-}" ]]; then
|
|
tmux set-environment -t "$SESSION" BRIX_CLUSTER "$BRIX_CLUSTER"
|
|
fi
|
|
for name in \
|
|
CHAT_CODEX_TOOL_ENABLED \
|
|
CHAT_CODEX_REMOTE_HOST \
|
|
CHAT_CODEX_REMOTE_USER \
|
|
CHAT_CODEX_REMOTE_PORT \
|
|
CHAT_CODEX_REMOTE_WORKDIR \
|
|
CHAT_CODEX_SSH_KEY_PATH \
|
|
CHAT_CODEX_SSH_PRIVATE_KEY_B64 \
|
|
CHAT_CODEX_EXEC_TIMEOUT_MS \
|
|
CHAT_SHELL_TOOL_ENABLED \
|
|
CHAT_SHELL_EXEC_TIMEOUT_MS; do
|
|
if [[ -n "${!name:-}" ]]; then
|
|
tmux set-environment -t "$SESSION" "$name" "${!name}"
|
|
fi
|
|
done
|
|
tmux respawn-pane -k -t "$SESSION:server.0" -c "$ROOT/server" "npm run dev"
|
|
tmux new-window -t "$SESSION" -n web -c "$ROOT/web" \
|
|
"npm run dev -- --host 0.0.0.0 --port 5173"
|
|
echo "Started Sybil in tmux session '$SESSION'."
|
|
echo "Server: http://127.0.0.1:8787"
|
|
echo "Web: http://127.0.0.1:5173"
|
|
exit 0
|
|
fi
|
|
|
|
echo "tmux not found; starting background processes with nohup."
|
|
|
|
if [[ -f "$PID_DIR/server.pid" ]]; then
|
|
kill "$(cat "$PID_DIR/server.pid")" >/dev/null 2>&1 || true
|
|
fi
|
|
if [[ -f "$PID_DIR/web.pid" ]]; then
|
|
kill "$(cat "$PID_DIR/web.pid")" >/dev/null 2>&1 || true
|
|
fi
|
|
|
|
(
|
|
cd "$ROOT/server"
|
|
exec env HOST="$HOST" PORT="$PORT" DATABASE_URL="$DATABASE_URL" npm run dev
|
|
) >"$LOG_DIR/server.log" 2>&1 &
|
|
echo "$!" >"$PID_DIR/server.pid"
|
|
|
|
(
|
|
cd "$ROOT/web"
|
|
exec npm run dev -- --host 0.0.0.0 --port 5173
|
|
) >"$LOG_DIR/web.log" 2>&1 &
|
|
echo "$!" >"$PID_DIR/web.pid"
|
|
|
|
echo "Started Sybil background processes."
|
|
echo "Server log: $LOG_DIR/server.log"
|
|
echo "Web log: $LOG_DIR/web.log"
|