Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e355a65b5b | |||
| d4640a0660 |
@@ -100,9 +100,18 @@ esac
|
||||
# + `dod_status` (set_dod_contract.py, sin LLM). El DoD inicial lo fija autogen
|
||||
# una vez; el usuario lo ajusta a mano con "dod: ...".
|
||||
PROV="false"
|
||||
[ -f "$F" ] && PROV=$(jq -r '.provisional // false' "$F" 2>/dev/null)
|
||||
GOAL_NOW=""
|
||||
if [ -f "$F" ]; then
|
||||
PROV=$(jq -r '.provisional // false' "$F" 2>/dev/null)
|
||||
GOAL_NOW=$(jq -r '.goal // ""' "$F" 2>/dev/null)
|
||||
fi
|
||||
|
||||
if [ -f "$F" ] && [ "$PROV" != "true" ]; then
|
||||
# "Objetivo definitivo" = archivo con goal NO vacio y no provisional. El check de
|
||||
# goal no vacio es clave para los ejecutores lanzados por spawn_fleet_agent: su
|
||||
# goal.json se PRE-CREA con solo {role, parent_orchestrator} (sin goal). Sin este
|
||||
# guard, el hook tomaria ese archivo como objetivo definitivo y nunca lanzaria
|
||||
# autogen, dejando el goal vacio para siempre (statusline y FleetView sin objetivo).
|
||||
if [ -f "$F" ] && [ "$PROV" != "true" ] && [ -n "$GOAL_NOW" ]; then
|
||||
G=$(jq -r '.goal // ""' "$F" 2>/dev/null)
|
||||
P=$(jq -r '.phase // ""' "$F" 2>/dev/null)
|
||||
D=$(jq -r '.dod // ""' "$F" 2>/dev/null)
|
||||
@@ -114,11 +123,17 @@ else
|
||||
# con el definitivo al terminar (su guard respeta .provisional).
|
||||
if [ "${#PROMPT_TRIM}" -ge 12 ]; then
|
||||
TMP="${F}.tmp.$$"
|
||||
if [ -f "$F" ]; then
|
||||
# Ya habia provisional: conserva su goal, solo acumula el prompt.
|
||||
PROV_GOAL=$(printf '%s' "$PROMPT_TRIM" | head -c 70)
|
||||
if [ -n "$GOAL_NOW" ]; then
|
||||
# Ya habia goal provisional: conserva su goal, solo acumula el prompt.
|
||||
jq --arg p "$PROMPT_TRIM" '.prompts = ((.prompts // []) + [$p])[-12:]' "$F" > "$TMP" 2>/dev/null && mv "$TMP" "$F" || rm -f "$TMP"
|
||||
elif [ -f "$F" ]; then
|
||||
# Archivo PRE-CREADO por spawn_fleet_agent ({role, parent_orchestrator})
|
||||
# sin goal: fija el provisional PRESERVANDO los campos existentes (role,
|
||||
# parent_orchestrator) y deja que autogen lo pise con el definitivo.
|
||||
jq --arg g "$PROV_GOAL" --arg p "$PROMPT_TRIM" \
|
||||
'. + {goal:$g, phase:"planificando", history:["planificando"], prompts:[$p], provisional:true}' "$F" > "$TMP" 2>/dev/null && mv "$TMP" "$F" || rm -f "$TMP"
|
||||
else
|
||||
PROV_GOAL=$(printf '%s' "$PROMPT_TRIM" | head -c 70)
|
||||
jq -n --arg g "$PROV_GOAL" --arg p "$PROMPT_TRIM" \
|
||||
'{goal:$g, phase:"planificando", history:["planificando"], prompts:[$p], provisional:true}' > "$TMP" 2>/dev/null && mv "$TMP" "$F" || rm -f "$TMP"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user