diff --git a/scripts/servidor/claude-caja.sh b/scripts/servidor/claude-caja.sh index de463a28..939c79c6 100755 --- a/scripts/servidor/claude-caja.sh +++ b/scripts/servidor/claude-caja.sh @@ -53,12 +53,28 @@ _inst="claude" # El `cd` no es comodidad: la memoria del agente se indexa POR RUTA DE TRABAJO. Desde `/` —que es # donde `qorpa run` deja el shell— la sesión usa el proyecto `-` y el agente empieza sin saber nada -# aunque su memoria esté en disco. `PROY` permite abrir el agente sobre OTRO proyecto: +# aunque su memoria esté en disco. # -# PROY=/opt/tawasuyu claude +# ⚠ **Y ABRE DONDE ESTÁS PARADO, no en un sitio fijo** (2026-09-18). Antes el destino era +# `/opt/takana` cableado, así que `cd /work/sergio/takana && claude` abría… `/opt/takana`: el agente +# contestaba sobre OTRO árbol —el del root— y encima con la memoria de ese proyecto. Se reportó como +# «entro al repo y claude sigue en /opt/takana», y era literal. Ahora el defecto es `$PWD`; el +# cableado queda sólo para cuando no hay `PWD` utilizable. +# +# `PROY` sigue existiendo para abrirlo sobre otro árbol a propósito: +# +# PROY=/work/sergio/tawasuyu claude # ⚠ El `shift 2` no es adorno: sin él, el HOME y el proyecto que se pasan como posicionales se # cuelan COMO ARGUMENTOS del agente. Medido: la primera versión abrió la sesión con el prompt # «/home/sergio», y el agente contestó —con razón— que eso es una ruta, no un comando. +# ⚠ El `cd` de adentro FALLA RUIDOSAMENTE: la jaula sólo monta los directorios concedidos, así que +# desde una ruta no concedida el `cd` no encuentra nada. Antes eso se tragaba con `&&` y el agente +# arrancaba en `/` sin decir por qué; ahora lo dice y sale. +_proy="${PROY:-$PWD}" +[ -d "$_proy" ] || _proy=/opt/takana + exec takana qorpa run "$_inst" -- sh -c \ - 'hogar="$1"; proy="$2"; shift 2; cd "$proy" && exec env HOME="$hogar" TERM="${TERM:-xterm-256color}" /work/claude-cli/2.1.240 "$@"' \ - _ "$_hogar" "${PROY:-/opt/takana}" "$@" + 'hogar="$1"; proy="$2"; shift 2 + cd "$proy" 2>/dev/null || { echo "claude: adentro de la jaula no existe \"$proy\" — ¿está concedido ese directorio en la instancia? (ver grants.dirs)" >&2; exit 1; } + exec env HOME="$hogar" TERM="${TERM:-xterm-256color}" /work/claude-cli/2.1.240 "$@"' \ + _ "$_hogar" "$_proy" "$@"