#!/usr/bin/env bash
set -euo pipefail

EVENTS_FILE="${PI_TOOL_USAGE_FILE:-/home/sebas/runtime/tool-usage/events.jsonl}"
STATUS="${1:-}"
KIND="${2:-}"
NAME="${3:-}"
DURATION_MS="${4:-}"
EXIT_CODE="${5:-}"
ERROR_SUMMARY="${6:-}"
CWD_VALUE="${7:-${PWD:-}}"
SESSION_ID="${8:-}"
TASK_ID="${9:-}"

if [[ -z "$STATUS" || -z "$KIND" || -z "$NAME" ]]; then
  echo "usage: tool-usage-log <status> <kind> <name> [duration_ms] [exit_code] [error_summary] [cwd] [session_id] [task_id]" >&2
  exit 1
fi

mkdir -p "$(dirname "$EVENTS_FILE")"
TS="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
SCOPE="project"
HOME_DIR="${HOME:-/home/sebas}"
if [[ "$CWD_VALUE" == "$HOME_DIR" || "$CWD_VALUE" == "$HOME_DIR/.pi"* ]]; then
  SCOPE="global"
fi

json_escape() {
  python - "$1" <<'PY'
import json,sys
print(json.dumps(sys.argv[1]))
PY
}

STATUS_JSON="$(json_escape "$STATUS")"
KIND_JSON="$(json_escape "$KIND")"
NAME_JSON="$(json_escape "$NAME")"
TS_JSON="$(json_escape "$TS")"
CWD_JSON="$(json_escape "$CWD_VALUE")"
SCOPE_JSON="$(json_escape "$SCOPE")"
ERROR_JSON="null"
SESSION_JSON="null"
TASK_JSON="null"
[[ -n "$ERROR_SUMMARY" ]] && ERROR_JSON="$(json_escape "$ERROR_SUMMARY")"
[[ -n "$SESSION_ID" ]] && SESSION_JSON="$(json_escape "$SESSION_ID")"
[[ -n "$TASK_ID" ]] && TASK_JSON="$(json_escape "$TASK_ID")"

if [[ -n "$DURATION_MS" && ! "$DURATION_MS" =~ ^[0-9]+$ ]]; then DURATION_MS="null"; fi
if [[ -n "$EXIT_CODE" && ! "$EXIT_CODE" =~ ^-?[0-9]+$ ]]; then EXIT_CODE="null"; fi
[[ -n "$DURATION_MS" ]] || DURATION_MS="null"
[[ -n "$EXIT_CODE" ]] || EXIT_CODE="null"

printf '{"ts":%s,"kind":%s,"name":%s,"cwd":%s,"scope":%s,"status":%s,"duration_ms":%s,"exit_code":%s,"error_summary":%s,"session_id":%s,"task_id":%s}\n' \
  "$TS_JSON" "$KIND_JSON" "$NAME_JSON" "$CWD_JSON" "$SCOPE_JSON" "$STATUS_JSON" "$DURATION_MS" "$EXIT_CODE" "$ERROR_JSON" "$SESSION_JSON" "$TASK_JSON" >> "$EVENTS_FILE"
