#!/bin/sh
set -eu

target=/opt/hermes/cron/scheduler_delivery.py
broken='env.pop("HERMES_HOME", None)'

if [ -f "$target" ] && grep -Fq "$broken" "$target"; then
    sed -i '/^[[:space:]]*env\.pop("HERMES_HOME", None)[[:space:]]*$/d' "$target"
    echo "[cron-profile-root-fix] preserved HERMES_HOME for named-profile delivery"
else
    echo "[cron-profile-root-fix] upstream code already fixed or layout changed; no action"
fi

cli_dir="${HERMES_HOME:-/opt/data}/.local/bin"
mkdir -p "$cli_dir"
ln -sfn /opt/hermes/.venv/bin/hermes "$cli_dir/hermes"
ln -sfn /opt/hermes/.venv/bin/hermes /usr/local/bin/hermes

# Hermes streams each detected sentence to TTS separately. Its generic
# sentence splitter treats the period in the German abbreviation "ca." as a
# sentence ending, causing "ca." and the following measurement to be spoken
# as two unrelated utterances. Expand the abbreviation before splitting.
tts_target=/opt/hermes/tools/tts_streaming.py
tts_old='        self.buf = _THINK_BLOCK_RE.sub("", self.buf + delta)'
tts_new='        self.buf = _THINK_BLOCK_RE.sub("", self.buf + delta)
        self.buf = re.sub(r"\bca\.(?=\s)", "circa", self.buf, flags=re.IGNORECASE)'

if [ -f "$tts_target" ] && grep -Fq "$tts_old" "$tts_target"; then
    TTS_TARGET="$tts_target" TTS_OLD="$tts_old" TTS_NEW="$tts_new" python3 -c \
        'import os; from pathlib import Path; p = Path(os.environ["TTS_TARGET"]); s = p.read_text(); p.write_text(s.replace(os.environ["TTS_OLD"], os.environ["TTS_NEW"], 1))'
    echo "[tts-streaming-fix] expanded German ca. before sentence splitting"
else
    echo "[tts-streaming-fix] upstream code already fixed or layout changed; no action"
fi
