#!/usr/bin/env bash
# on-session-end.sh — Claude Code SessionEnd / Stop hook
# 触发：Claude 会话结束（用户退出、断网、process 死）
# 行为：如果当前 session 在某个 slot 里（$FFOA_AGENT_SLOT 已 export），调 agent-release.sh
# release 内部按 workspace 状态分级：clean → 真释放；dirty/unpushed → 转 abandoned
#
# 安装：写到 ~/.claude/settings.json 的 hooks.SessionEnd 数组里
# 示例 settings.json 片段：
# {
#   "hooks": {
#     "SessionEnd": [
#       { "command": "bash /path/to/scripts/dev/agent-pool/hooks/on-session-end.sh" }
#     ]
#   }
# }
set -uo pipefail

# 仅在 slot 内的 session 触发
if [[ -z "${FFOA_AGENT_SLOT:-}" ]]; then
  exit 0
fi

# 找 release.sh：本 hook 在 hooks/ 下，release 在上一级
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
RELEASE_SH="${SCRIPT_DIR}/../agent-release.sh"

if [[ ! -x "${RELEASE_SH}" && ! -f "${RELEASE_SH}" ]]; then
  echo "on-session-end: release.sh 找不到: ${RELEASE_SH}" >&2
  exit 0  # 不阻塞 session 退出
fi

# 调 release。失败不阻塞退出。
bash "${RELEASE_SH}" "${FFOA_AGENT_SLOT}" >&2 || true
