Automatischer Push: 45 Datei(en) geändert
- .claude/agents/planer.md - .claude/agents/quorum-stimme.md - .claude/skills/bookstack-upload/SKILL.md - .claude/skills/bookstack-upload/scripts/bookstack/archiv.py - .claude/skills/bookstack-upload/scripts/bookstack/auswahl.py - .claude/skills/bookstack-upload/scripts/bookstack/beschreibung.py - .claude/skills/bookstack-upload/scripts/bookstack/bilder.py - .claude/skills/bookstack-upload/scripts/bookstack/ergebnis.py - .claude/skills/bookstack-upload/scripts/bookstack/hochladen.py - .claude/skills/bookstack-upload/scripts/bookstack/konvertierung.py - .claude/skills/bookstack-upload/scripts/bookstack/struktur.py - .claude/skills/bookstack-upload/scripts/bookstack/verweise.py - … und 33 weitere Erzeugt vom PostToolUse-Hook .vault-tools/auto-push/auto_push.py. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
1 parent
60dee0ab68
commit
deec79a6ea
45 files changed
+8645
-262
No files matched your search
@@ -9,7 +9,10 @@ GELTUNGSBEREICH
|
||||
nicht bewertet: Datum laut Maschinenuhr, Tagesnotiz, Inbox-Notizen ohne
|
||||
type: daily, Notizen mit Tag needs-review, Notizen mit Tag review ohne
|
||||
review-done, Regelwerk-Dateien mit status: pending-review, heutige
|
||||
Sitzungsdateien. Die Vault-Wurzel ist ausschließlich der Ordner zwei Ebenen
|
||||
Sitzungsdateien, dazu die Zahl der Waisen außerhalb der Ausnahmen aus
|
||||
.vault-tools/linkcheck/waisen.py (eigener Prozess, nach 15 s abgebrochen;
|
||||
Regeln und Lücken stehen im Kopf von waisen.py). Die Vault-Wurzel ist
|
||||
ausschließlich der Ordner zwei Ebenen
|
||||
über dieser Datei. Das Feld cwd der Hook-Eingabe wird nicht mehr gelesen:
|
||||
cwd folgt einem cd im Bash-Werkzeug und zeigt in einer laufenden Sitzung
|
||||
nicht zuverlässig auf die Vault-Wurzel (Prüferbefund Runde 2, gemessen
|
||||
@@ -42,11 +45,15 @@ import datetime
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
SKRIPT = Path(__file__).resolve()
|
||||
LINKCHECK = SKRIPT.parent.parent / "linkcheck"
|
||||
WAISEN = LINKCHECK / "waisen.py"
|
||||
# Das Budget des Hooks in .claude/settings.json sind 30 s für alles.
|
||||
ZEITGRENZE_WAISEN_S = 15.0
|
||||
|
||||
MAX_NAMEN = 5
|
||||
# Nur direkt unter der Vault-Wurzel ausgeschlossen, verglichen in Kleinbuchstaben.
|
||||
@@ -272,6 +279,30 @@ def punkt_sitzungen(wurzel: Path, heute: str) -> list[str]:
|
||||
return [f"- Sitzungsdateien AI/sessions/{heute}-*.md: {mit_namen(namen)}"]
|
||||
|
||||
|
||||
def punkt_waisen(wurzel: Path, heute: str) -> list[str]:
|
||||
if not WAISEN.is_file():
|
||||
raise RuntimeError(f"waisen.py fehlt unter {WAISEN}")
|
||||
umgebung = dict(os.environ)
|
||||
umgebung["PYTHONIOENCODING"] = "utf-8"
|
||||
try:
|
||||
lauf = subprocess.run(
|
||||
[sys.executable, str(WAISEN), "--vault", str(wurzel), "--zahl"],
|
||||
capture_output=True,
|
||||
stdin=subprocess.DEVNULL,
|
||||
timeout=ZEITGRENZE_WAISEN_S,
|
||||
env=umgebung,
|
||||
)
|
||||
except subprocess.TimeoutExpired:
|
||||
raise RuntimeError(
|
||||
f"waisen.py nach {ZEITGRENZE_WAISEN_S:g} s abgebrochen, nicht gezählt"
|
||||
) from None
|
||||
ausgabe = lauf.stdout.decode("utf-8", errors="replace").strip()
|
||||
if lauf.returncode in (0, 1) and ausgabe.isdigit():
|
||||
return [f"- Waisen außerhalb der Ausnahmen: {ausgabe}"]
|
||||
erste = ausgabe or lauf.stderr.decode("utf-8", errors="replace").strip()
|
||||
raise RuntimeError(f"waisen.py Exit {lauf.returncode}: {erste.split(chr(10))[0].strip()}")
|
||||
|
||||
|
||||
PUNKTE = [
|
||||
("Datum", punkt_datum),
|
||||
("Tagesnotiz", punkt_tagesnotiz),
|
||||
@@ -279,6 +310,7 @@ PUNKTE = [
|
||||
("needs-review/review", punkt_tags),
|
||||
("Regelwerk", punkt_regelwerk),
|
||||
("Sitzungen", punkt_sitzungen),
|
||||
("Waisen", punkt_waisen),
|
||||
]
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user