From 83286379355f6e9388635e258184965d5a5ba580 Mon Sep 17 00:00:00 2001 From: Egutierrez Date: Sun, 21 Jun 2026 13:47:46 +0200 Subject: [PATCH] feat(orquestador): reanclar role=orchestrator en el hook de inyeccion de flota El modo /orquestador dependia de que su prompt siguiera en contexto. Ahora el hook UserPromptSubmit que ya filtra por role=orchestrator reinyecta tambien una linea recordatorio del rol cada turno, reanclando el modo independientemente del prompt. Se emite antes de la guarda del venv para sobrevivir a un watcher caido. El path limpio (sin goal.json o role != orchestrator) sigue saliendo con exit 0 y stdout vacio. Co-Authored-By: Claude Opus 4.8 (1M context) --- .claude/scripts/hook_fleet_state_inject.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.claude/scripts/hook_fleet_state_inject.sh b/.claude/scripts/hook_fleet_state_inject.sh index c3760dfe..7a6e0d0d 100755 --- a/.claude/scripts/hook_fleet_state_inject.sh +++ b/.claude/scripts/hook_fleet_state_inject.sh @@ -37,6 +37,14 @@ ROLE="" # Solo el orquestador recibe el feed de la flota. Resto: silencio total. [ "$ROLE" != "orchestrator" ] && exit 0 +# Reanclar el rol en cada turno: el modo /orquestador no debe depender solo de +# que su prompt (.claude/commands/orquestador.md) siga en contexto. Este +# recordatorio se reinyecta aunque el watcher este caido o falte el venv (la +# guarda de abajo saldria con exit 0 sin emitir FLEET-STATE). Se emite SOLO para +# role=orchestrator: las sesiones sin goal.json o sin ese rol ya salieron arriba +# con exit 0 y stdout vacio, asi que el path limpio queda intacto. +printf '%s\n' "MODO ORQUESTADOR activo (role=orchestrator)." + PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$HOME/fn_registry}" PY="$PROJECT_DIR/python/.venv/bin/python3" { [ -x "$PY" ] && [ -d "$PROJECT_DIR/python/functions" ]; } || exit 0