#!/usr/bin/env bash
# dsh-data-cleaning-agent 一键安装脚本（DeepSeek Harness）
# 用法：
#   本地：  bash install.sh
#   请从完整 npm 包或源码目录运行，确保随包预检可用。
# 需要实际 dsh CLI 通过预检；脚本不会升级全局宿主。
# 幂等：重复执行不会重复注册或破坏已有配置。
set -euo pipefail

PKG="dsh-data-cleaning-agent"
DSH_HOME="${DSH_HOME:-$HOME/.dsh}"
PROFILE="${DSH_PROFILE:-web}"
PROFILE_DIR="$DSH_HOME/profiles/$PROFILE"
PJ="$PROFILE_DIR/package.json"

echo "==> 目标 profile: $PROFILE_DIR"

if [ ! -d "$PROFILE_DIR" ]; then
  echo "错误：profile 不存在：$PROFILE_DIR"
  echo "请确认 DSH_HOME 与 DSH_PROFILE（默认 ~/.dsh 与 web）。"
  exit 1
fi

# 在任何安装/配置写入前，只读检查实际 CLI 与目标 Profile 的组合。
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if [ ! -f "$SCRIPT_DIR/lib/install-preflight.js" ]; then
  echo "错误：缺少随包预检。请解压 npm pack dsh-data-cleaning-agent 的完整包后运行 bash package/install.sh；不再支持流式执行脚本。"
  exit 1
fi
node "$SCRIPT_DIR/lib/install-preflight.js" "$PROFILE_DIR"
echo "==> 基础智能体安装：不会强制安装侧栏；交互工作台需兼容 Better Sidebar，可用 --workbench 单独预检。"

# ── 1) 安装依赖 ──
if command -v dsh >/dev/null 2>&1; then
  echo "==> dsh plugin --profile $PROFILE add $PKG"
  dsh plugin --profile "$PROFILE" add "$PKG"
else
  if command -v pnpm >/dev/null 2>&1; then
    echo "==> 未找到 dsh CLI，回退 pnpm 安装（需自行确保 bundle 注册，见下）"
    (cd "$PROFILE_DIR" && pnpm add "$PKG")
  else
    echo "错误：未找到 dsh 或 pnpm，无法安装。请先安装 DeepSeek Harness。"
    exit 1
  fi
fi

# ── 2) 确保 bundle 注册（dsh CLI 通常自动注册；此处兜底） ──
if [ -f "$PJ" ]; then
  NEED=$(python3 - "$PJ" "$PKG" <<'PY' 2>/dev/null || echo "1"
import json, sys
d = json.load(open(sys.argv[1]))
print("0" if sys.argv[2] in d.get("dsh", {}).get("profile", {}).get("bundles", []) else "1")
PY
)
  if [ "$NEED" = "1" ]; then
    echo "==> 注册 bundle：$PKG"
    python3 - "$PJ" "$PKG" <<'PY'
import json, sys
p, pkg = sys.argv[1], sys.argv[2]
d = json.load(open(p))
d.setdefault("dsh", {}).setdefault("profile", {}).setdefault("bundles", []).append(pkg)
json.dump(d, open(p, "w"), indent=2)
print("已添加", pkg)
PY
  else
    echo "==> bundle 已注册"
  fi
else
  echo "警告：未找到 $PJ，请确认 profile 完整。"
fi

echo
echo "✅ 安装完成！最后一步：重启 DeepSeek Harness（停止后重新运行 dsh web）。"
echo "   重启后在对话中输入「帮我清洗这批企业名单数据」即可使用。"
echo "   详见：https://github.com/duhu2000/dsh-data-cleaning-agent"
