|
|
@@ -46,8 +46,12 @@ cat >"$WRAPPER" <<'WRAPPER_EOF'
|
|
|
#!/bin/bash
|
|
|
# codebase-memory-mcp wrapper — redirect stderr to log file
|
|
|
# This file is at a dedicated path and won't be overwritten by reinstall
|
|
|
+# NOTE: do NOT use `exec -a "codebase-memory-mcp"` here. Overriding argv[0]
|
|
|
+# breaks the codebase-memory-mcp >= 0.11 daemon rendezvous (the daemon is
|
|
|
+# started with the wrapper's argv[0], then cannot be reached). Plain exec
|
|
|
+# keeps the daemon healthy while still redirecting stderr.
|
|
|
BIN_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
|
-exec -a "codebase-memory-mcp" "${BIN_DIR}/codebase-memory-mcp.real" 2>/tmp/cbm-error.log
|
|
|
+exec "${BIN_DIR}/codebase-memory-mcp.real" 2>/tmp/cbm-error.log
|
|
|
WRAPPER_EOF
|
|
|
chmod +x "$WRAPPER"
|
|
|
|
|
|
@@ -59,6 +63,33 @@ if [ -f "$REAL_BIN" ]; then
|
|
|
cp "$REAL_BIN" "$DEFAULT_BIN"
|
|
|
fi
|
|
|
|
|
|
+# ------------------------------------------
|
|
|
+# 4.5 清理上游 install.sh 生成的 pi 冲突产物
|
|
|
+# ------------------------------------------
|
|
|
+# 上游 install.sh 会为 pi 生成无 cbm_ 前缀的扩展(extensions/cbmem.ts)、
|
|
|
+# 全局 AGENTS.md 与同名 skill。本项目统一走 npm:pi-codebase-memory-mcp
|
|
|
+# (cbm_* 前缀,与本仓 agent 白名单/文档一致),故移除这些冲突产物。
|
|
|
+# 重复运行本脚本会重新生成,此处每次清理即可;如确需保留上游 pi 集成,
|
|
|
+# 可设置 CBM_KEEP_UPSTREAM_PI=1 跳过。
|
|
|
+PI_DIR="${HOME}/.pi/agent"
|
|
|
+if [ "${CBM_KEEP_UPSTREAM_PI:-0}" = "1" ]; then
|
|
|
+ warn "CBM_KEEP_UPSTREAM_PI=1,跳过 pi 冲突产物清理"
|
|
|
+else
|
|
|
+ if [ -f "${PI_DIR}/extensions/cbmem.ts" ] && grep -q "codebase-memory-mcp:start" "${PI_DIR}/extensions/cbmem.ts"; then
|
|
|
+ info "移除上游 pi 扩展: ${PI_DIR}/extensions/cbmem.ts"
|
|
|
+ rm -f "${PI_DIR}/extensions/cbmem.ts"
|
|
|
+ rmdir "${PI_DIR}/extensions" 2>/dev/null || true
|
|
|
+ fi
|
|
|
+ if [ -f "${PI_DIR}/AGENTS.md" ] && grep -q "codebase-memory-mcp:start" "${PI_DIR}/AGENTS.md"; then
|
|
|
+ info "移除上游全局 AGENTS.md: ${PI_DIR}/AGENTS.md"
|
|
|
+ rm -f "${PI_DIR}/AGENTS.md"
|
|
|
+ fi
|
|
|
+ if [ -f "${PI_DIR}/skills/codebase-memory/SKILL.md" ] && ! grep -q "cbm_" "${PI_DIR}/skills/codebase-memory/SKILL.md"; then
|
|
|
+ info "移除上游 pi skill: ${PI_DIR}/skills/codebase-memory"
|
|
|
+ rm -rf "${PI_DIR}/skills/codebase-memory"
|
|
|
+ fi
|
|
|
+fi
|
|
|
+
|
|
|
# ------------------------------------------
|
|
|
# 5. 设置 CBM_MCP_BIN 环境变量
|
|
|
# ------------------------------------------
|
|
|
@@ -76,13 +107,16 @@ else
|
|
|
warn "非 root 用户,跳过 /etc/environment"
|
|
|
fi
|
|
|
|
|
|
-# 写入 ~/.bashrc(用户级,兜底)
|
|
|
-if ! grep -q "CBM_MCP_BIN" "${HOME}/.bashrc" 2>/dev/null; then
|
|
|
- info "写入 ~/.bashrc"
|
|
|
- echo "export ${ENV_VAR}" >>"${HOME}/.bashrc"
|
|
|
-else
|
|
|
- warn "~/.bashrc 已存在 CBM_MCP_BIN,跳过"
|
|
|
-fi
|
|
|
+# 写入 ~/.bashrc / ~/.zshrc(用户级,兜底;macOS 默认 zsh)
|
|
|
+for RC in "${HOME}/.bashrc" "${HOME}/.zshrc"; do
|
|
|
+ [ -e "$RC" ] || continue
|
|
|
+ if ! grep -q "CBM_MCP_BIN" "$RC" 2>/dev/null; then
|
|
|
+ info "写入 ${RC}"
|
|
|
+ echo "export ${ENV_VAR}" >>"$RC"
|
|
|
+ else
|
|
|
+ warn "${RC} 已存在 CBM_MCP_BIN,跳过"
|
|
|
+ fi
|
|
|
+done
|
|
|
|
|
|
# ------------------------------------------
|
|
|
# 6. 输出结果
|