#!/bin/bash
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$SCRIPT_DIR/.."
echo "========================================"
echo "开始清理缓存..."
echo "========================================"
echo "[1/7] 清除 CLI venv 缓存..."
cd "$PROJECT_ROOT/cli"
if [ -d ".venv/lib/python*/site-packages/openjiuwen_runtime" ]; then
rm -rf .venv/lib/python*/site-packages/openjiuwen_runtime
echo " - 已删除 CLI venv 中的 openjiuwen_runtime"
fi
find .venv -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
find .venv -type f -name "*.pyc" -delete 2>/dev/null || true
echo "[2/7] 清除 Server venv 缓存..."
cd "$PROJECT_ROOT/server"
if [ -d ".venv/lib/python*/site-packages/openjiuwen_runtime" ]; then
rm -rf .venv/lib/python*/site-packages/openjiuwen_runtime
echo " - 已删除 Server venv 中的 openjiuwen_runtime"
fi
find .venv -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
find .venv -type f -name "*.pyc" -delete 2>/dev/null || true
echo "[3/7] 清除 SDK 源码缓存..."
cd "$PROJECT_ROOT/sdk"
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
find . -type f -name "*.pyc" -delete 2>/dev/null || true
echo "[4/7] 卸载 CLI 旧版本包..."
cd "$PROJECT_ROOT/cli"
uv pip uninstall openjiuwen-runtime-management-sdk 2>/dev/null || true
uv pip uninstall agent-runtime-manager-cli 2>/dev/null || true
echo "[5/7] 安装 SDK 到 CLI (editable mode)..."
uv pip install -e "$PROJECT_ROOT/sdk"
echo "[6/7] 安装 CLI..."
uv pip install -e ./
echo "[7/7] 安装 SDK 到 Server (editable mode)..."
cd "$PROJECT_ROOT/server"
if [ -f ".venv/bin/python" ]; then
uv pip install --python .venv/bin/python -e "$PROJECT_ROOT/sdk"
else
echo " ! Server venv 不存在,跳过"
fi
echo "========================================"
echo "编译完成!"
echo "========================================"
echo ""
echo "验证 CLI 安装:"
cd "$PROJECT_ROOT/cli"
if .venv/bin/python -c "from openjiuwen_runtime.management.sdk import DeploymentManager; import inspect; print('SDK OK:', inspect.signature(DeploymentManager.deploy_agent))" 2>/dev/null; then
:
else
echo " ! CLI 验证失败"
fi
echo ""
echo "验证 Server 安装:"
cd "$PROJECT_ROOT/server"
if [ -f ".venv/bin/python" ]; then
if .venv/bin/python -c "
from openjiuwen_runtime.management.sdk import DeploymentManager
import inspect
src = inspect.getsource(DeploymentManager.deploy_agent)
print('SDK OK') if '\"name\"' in src and 'return' in src else print('SDK FAIL: missing name in return')
" 2>/dev/null; then
:
else
echo " ! Server 验证失败"
fi
else
echo " ! Server venv 不存在,跳过验证"
fi
echo ""
echo "========================================"
echo "注意: 如果 Server 正在运行,请重启 Server 以加载新代码"
echo "========================================"