#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${SCRIPT_DIR}/path-utils.sh" 2>/dev/null || true
PROJECT_ROOT="${PROJECT_ROOT:-$(detect_project_root 2>/dev/null || pwd)}"
LOG_DIR="${PROJECT_ROOT}/.claude/logs"
SUBAGENT_LOG="${LOG_DIR}/subagent-history.jsonl"
ensure_log_dir() {
mkdir -p "${LOG_DIR}" 2>/dev/null || true
}
get_timestamp() {
date -u +"%Y-%m-%dT%H:%M:%SZ"
}
action="${1:-}"
case "${action}" in
start)
ensure_log_dir
agent_id="${AGENT_ID:-unknown}"
log_entry=$(cat <<EOF
{"event":"subagent_start","timestamp":"$(get_timestamp)","agent_id":"${agent_id}"}
EOF
)
echo "${log_entry}" >> "${SUBAGENT_LOG}" 2>/dev/null || true
echo '{"decision":"approve","reason":"Subagent start tracked"}'
;;
stop)
ensure_log_dir
agent_id="${AGENT_ID:-unknown}"
transcript_path="${AGENT_TRANSCRIPT_PATH:-}"
transcript_summary=""
if [[ -n "${transcript_path}" && -f "${transcript_path}" ]]; then
transcript_summary=$(tail -50 "${transcript_path}" 2>/dev/null | head -c 500 || echo "")
transcript_summary="${transcript_summary//\"/\\\"}"
transcript_summary="${transcript_summary//$'\n'/\\n}"
fi
log_entry=$(cat <<EOF
{"event":"subagent_stop","timestamp":"$(get_timestamp)","agent_id":"${agent_id}","transcript_path":"${transcript_path}","transcript_preview":"${transcript_summary:0:200}"}
EOF
)
echo "${log_entry}" >> "${SUBAGENT_LOG}" 2>/dev/null || true
echo '{"decision":"approve","reason":"Subagent stop tracked"}'
;;
*)
echo '{"decision":"approve","reason":"Unknown action, skipping"}'
;;
esac
exit 0