phase0: Nachtmeldungen kommen wieder an, Sicherung mit Lucys Gedaechtnis, Token-Datei raus
Ampel / ampel (push) Successful in 26s
Ampel / ampel (push) Successful in 26s
- notify.sh sammelt nachts (00-07 Uhr) wie bisher, aber jetzt liefert mc2-morgenmeldung.timer um 07:00 alles als eine Telegram-Nachricht aus. Seit dem 21.08. las niemand die Warteschlange, alle Nachtmeldungen (auch die Sonntags-Updates) gingen verloren. Dringendes (-d, Betreff Alarm/Notfall, Text beginnt mit KRITISCH) geht sofort raus; autoupdate.sh markiert seine KRITISCH-Meldungen ausdruecklich. - backup.sh sichert zusaetzlich ~/.hermes/memories, SOUL.md, skills/, scripts/, den Box-Wart-Zustand (/srv/models/mc2-*.json), User-Units, llama-swap-Drop-ins und Lucys Stimmreferenz. restore.sh spielt Gedaechtnis und Zustand nur zurueck, wenn sie fehlen oder --mit-gedaechtnis gesetzt ist. - Update-Verlauf zaehlt die Morgenmeldung nicht als eigenen Lauf. - Waechter und Flugplan kennen den neuen Timer; deploy.sh installiert ihn. - .claude/settings.local.json aus dem Repo genommen (lokal behalten), .gitignore ergaenzt. - ruff wieder gruen (4x RUF100), AGENTS.md: Deploy macht git pull, Remote ist SSH. Tests: 86 gruen (neu: Nachtruhe, Dringendes, Morgenmeldung inkl. Telegram-Ausfall). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
4a05bc2a05
commit
648be33d21
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env bash
|
||||
# Morgenmeldung (07:00, mc2-morgenmeldung.timer): schickt die nachts gesammelten Meldungen als
|
||||
# EINE Telegram-Nachricht. notify.sh parkt zwischen 00:00 und 06:59 alles Nicht-Dringende in der
|
||||
# Nacht-Warteschlange; ohne diesen Lauf käme es nie an (so geschehen vom 21.08. bis 24.09.2026).
|
||||
#
|
||||
# Scheitert Telegram dreimal, bleibt der Stapel liegen und kommt mit der nächsten Morgenmeldung —
|
||||
# verloren geht nichts. Leere Warteschlange = keine Nachricht.
|
||||
set -uo pipefail
|
||||
|
||||
QUEUE="${MC_NIGHT_QUEUE:-$HOME/.hermes/night-queue.txt}"
|
||||
ARBEIT="$QUEUE.senden"
|
||||
SRC_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
MAX_ZEICHEN="${MC_MORGENMELDUNG_MAX:-3500}" # Telegram erlaubt 4096 Zeichen je Nachricht
|
||||
VERSUCHE="${MC_MORGENMELDUNG_VERSUCHE:-3}"
|
||||
PAUSE="${MC_MORGENMELDUNG_PAUSE:-60}"
|
||||
|
||||
[ -s "$QUEUE" ] || [ -s "$ARBEIT" ] || exit 0
|
||||
|
||||
# Warteschlange übernehmen. mv ist atomar: Was notify.sh währenddessen anhängt, landet entweder
|
||||
# noch im übernommenen Stapel oder in einer frischen Warteschlange. Ein Stapel, der beim letzten
|
||||
# Mal nicht rausging, steht vorne.
|
||||
if [ -s "$QUEUE" ]; then
|
||||
mv "$QUEUE" "$QUEUE.uebernahme" && cat "$QUEUE.uebernahme" >> "$ARBEIT" && rm -f "$QUEUE.uebernahme"
|
||||
fi
|
||||
|
||||
ANZAHL="$(grep -c '^- ' "$ARBEIT" || true)"
|
||||
[ "$ANZAHL" = "1" ] && WORT="Meldung" || WORT="Meldungen"
|
||||
TEXT="$(head -c "$MAX_ZEICHEN" "$ARBEIT")"
|
||||
if [ "$(wc -c < "$ARBEIT")" -gt "$MAX_ZEICHEN" ]; then
|
||||
TEXT="$TEXT
|
||||
… gekürzt. Alle Meldungen stehen im Cockpit unter Meldungen."
|
||||
fi
|
||||
NACHRICHT="Guten Morgen, Commander. Heute Nacht gab es $ANZAHL $WORT:
|
||||
$TEXT"
|
||||
|
||||
for ((i = 1; i <= VERSUCHE; i++)); do
|
||||
# Als 07:00 senden (außerhalb der Nachtruhe); NO_ANNOUNCE, weil jede Meldung schon einzeln im
|
||||
# Briefkasten liegt.
|
||||
if MC_NOTIFY_STRICT=1 MC_NOTIFY_NO_ANNOUNCE=1 MC_NOTIFY_STUNDE=07 \
|
||||
bash "$SRC_DIR/notify.sh" -s "[Morgenmeldung]" "$NACHRICHT"; then
|
||||
mv -f "$ARBEIT" "$QUEUE.zuletzt-gesendet"
|
||||
exit 0
|
||||
fi
|
||||
[ "$i" -lt "$VERSUCHE" ] && sleep "$PAUSE"
|
||||
done
|
||||
|
||||
echo "Morgenmeldung: Telegram nicht erreichbar, $ANZAHL $WORT bleiben für den nächsten Lauf liegen." >&2
|
||||
exit 1
|
||||
Reference in New Issue
Block a user