diff --git a/scripts/servidor/claude-caja.sh b/scripts/servidor/claude-caja.sh index 8d82f1e2..2807afa0 100755 --- a/scripts/servidor/claude-caja.sh +++ b/scripts/servidor/claude-caja.sh @@ -77,7 +77,12 @@ while ! _libre "$_inst"; do done if [ ! -d "$BASEDIR/$_inst" ]; then echo "claude: abro una sesión más ($_inst) — clonando la capa, ~1 s" >&2 - _sha=$(sed -n 's/^base = "sha256:\(.*\)"//p' "$BASEDIR/$_base/instance.toml") + # ⚠ SIN RETROREFERENCIAS: acá había un `sed` con `\1` y el fichero terminó guardando el + # BYTE 0x01 en su lugar, así que el sha salía como el carácter de control y `qorpa create` + # moría con «ninguna imagen empieza por "\u{1}"». `awk` parte por comillas y no tiene + # nada que una herramienta pueda reinterpretar. + _sha=$(awk -F\" '/^base *=/ {sub(/^sha256:/,"",$2); print $2; exit}' "$BASEDIR/$_base/instance.toml") + [ -n "$_sha" ] || { echo "claude: no pude leer el sha de la imagen en $BASEDIR/$_base/instance.toml" >&2; exit 1; } takana qorpa create "$_inst" --base "$_sha" >/dev/null || { echo "claude: no pude crear $_inst" >&2; exit 1; } cp "$BASEDIR/$_base/instance.toml" "$BASEDIR/$_inst/instance.toml" rm -rf "$BASEDIR/$_inst/upper"