Commit graph

3 commits

Author SHA1 Message Date
6371fb9f60 fix/extensions: rule-enforcer — setInterval gegen uncaught exceptions härten
Pis Loader (loader.js:298-311) kapselt nur die synchrone Factory-Ausführung.
Das 30s-setInterval feuert später und läge außerhalb dieses Schutzes — eine
Exception dort wäre uncaught und könnte den Pi-Prozess beenden. Daher: gesamter
Intervall-Rumpf in try/catch.

Empirisch verifiziert (Pi-SDK createAgentSession, agentDir=~/.pi/agent):
- rule-enforcer.ts lädt mit 0 Fehlern (10/10 Extensions geladen)
- absichtlich kaputte Test-Extension crasht Pi NICHT — Fehler isoliert, gesunde
  Extensions laden weiter, Session startet normal
2026-06-02 18:40:44 +02:00
aa1539c744 fix/extensions: rule-enforcer erzwingt Invariante — Orchestrator nie idle während Subagent läuft
Root Cause (log-belegt, 36,6-min-Lücke 15:25–16:01): watch_subagents ist
ein Polling-Tool; die Überwachung lebt nur solange das LLM es neu aufruft.
Eine User-Zwischenfrage riss die Schleife ab, der Orchestrator ging idle.
Der passive Alert-File-Pfad (nur in before_agent_start gelesen) feuert bei
idle nie → Orchestrator schlief 36 min bis der Mensch tippte.

Fix: 30s-Check erkennt laufende Subagenten per Prozessbaum (lebt ein pi-Kind
unter dem tmux-Pane?), nicht per Keyword. Idle + laufender Subagent → aktive
Weckung via pi.sendUserMessage() (löst garantiert einen Turn aus) + ui.notify.
Idle-Erkennung zeitbasiert (45s, > 30s Pollintervall), ctx-unabhängig.

Verifiziert: Syntax, Modul-Load, Handler-Registrierung, Prompt-Injection,
W06, Prozessbaum-Erkennung an echten Sessions. NICHT verifiziert: Live-Weckpfad
(erfordert Orchestrator-Test). Plan: doku/fix-plan-orchestrator-wecker-v2026-06-02-18-19.md
2026-06-02 18:33:02 +02:00
fed300c170 feat/extensions: rule-enforcer.ts — before_agent_start + message_end + 30s-Check
- before_agent_start: injiziert W06/W07/W09/W10 + WATCH-Regel in jeden System-Prompt-Turn,
  Selbstkorrektur wenn letzter Turn W06 verletzt, Subagenten-Alerts prominent eingeblendet
- message_end: scannt Pi-Output auf Deliberations-Muster, setzt Korrektur-Flag
- setInterval 30s: prüft tmux-Sessions auf offene Bestätigungs-Dialoge unabhängig
  von Pi's Tool-Calls, schreibt in Alert-File für nächsten Turn
2026-06-02 16:02:03 +02:00