fix: before_agent_start-Hook nur bei aktivem Coding-Workflow Persona injizieren

currentRole erhält dritten Zustand "idle" (Initialwert + Reset nach jedem Kommando).
Der Hook injiziert nur noch eine Persona wenn currentRole "coder" oder "judge" ist —
im freien Chat bleibt der System-Prompt unverändert, sodass andere Extensions
(z. B. research-web.ts) nicht durch die Coding-Persona gestört werden.

Alle Kommando-Handler (/coder, /judge, /fix, /shipit, /optimize, /patch,
/quick_check, /plan, /continue) und runUpdateDoku setzen currentRole am
Ende auf "idle" zurück.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-06-15 06:27:14 +02:00
commit bba630cbbb
2 changed files with 19 additions and 6 deletions

View file

@ -41,8 +41,11 @@ test("Loop-Erkennung greift auch ohne Blocker-Abschnitt (Fallback auf Gesamttext
assert.match(extSource, /parseBlockers\(judgeText\)\s*\|\|\s*judgeText/);
});
test("currentRole wird nach jedem optimize-Lauf auf 'coder' zurückgesetzt", () => {
assert.match(extSource, /currentRole\s*=\s*"coder"/);
test("currentRole wird nach jedem Kommando auf 'idle' zurückgesetzt (kein Persona-Leak in freien Chat)", () => {
// Initialwert und alle Reset-Stellen müssen "idle" sein, nicht "coder".
assert.match(extSource, /currentRole:\s*"coder"\s*\|\s*"judge"\s*\|\s*"idle"/);
assert.match(extSource, /=\s*"idle"/);
assert.doesNotMatch(extSource, /currentRole\s*=\s*"coder"/);
});
test("LICENCE.md: deterministisch in der Doku-Phase, nur wenn nicht vorhanden, proprietär", () => {