bot contesta con e2ee

This commit is contained in:
2026-03-04 00:59:10 +00:00
parent bd8e1432e5
commit 396fc39b90
12 changed files with 316 additions and 46 deletions
+49 -16
View File
@@ -146,7 +146,7 @@ tools:
matrix:
homeserver: "${MATRIX_HOMESERVER}"
user_id: "@$ID:${MATRIX_SERVER_NAME}"
access_token_env: MATRIX_TOKEN_$(echo "$ID" | tr '[:lower:]-' '[:upper:]_')
access_token_env: MATRIX_TOKEN_$(echo "$ID" | tr '[:lower:]-' '[:upper:]_' | sed 's/_BOT$//')
device_id: "$(echo "$ID" | tr '[:lower:]-' '[:upper:]_')01"
encryption:
@@ -338,21 +338,54 @@ MD
ok "Scaffold creado en $DIR/"
echo ""
# ── Pasos siguientes ──────────────────────────────────────────────────────
echo -e "${YLW}Quedan 2 pasos manuales:${RST}"
# ── Actualizar cmd/launcher/main.go ───────────────────────────────────────
LAUNCHER="cmd/launcher/main.go"
if grep -q "\"$ID\":" "$LAUNCHER" 2>/dev/null; then
warn "$ID ya está en rulesRegistry de $LAUNCHER — saltando"
else
TAB=$'\t'
IMPORT_LINE="${TAB}${PACKAGE}agent \"github.com/enmanuel/agents/agents/$ID\""
REGISTRY_LINE="${TAB}\"$ID\": ${PACKAGE}agent.Rules,"
# Insertar import después del último import agents/agents/*
if awk -v new_import="$IMPORT_LINE" '
{
lines[NR] = $0
if ($0 ~ /[a-z_]+agent "github\.com\/enmanuel\/agents\/agents\/[^"]+"/)
last_import = NR
}
END {
if (!last_import) { for (i=1;i<=NR;i++) print lines[i]; exit 1 }
for (i = 1; i <= NR; i++) {
print lines[i]
if (i == last_import) print new_import
}
}
' "$LAUNCHER" > /tmp/_launcher_tmp; then
mv /tmp/_launcher_tmp "$LAUNCHER"
ok "Import añadido en $LAUNCHER"
else
warn "No se pudo insertar el import automáticamente — añádelo manualmente:"
echo -e " ${GRN}${IMPORT_LINE}${RST}"
fi
# Insertar entry en rulesRegistry antes del cierre }
if awk -v new_entry="$REGISTRY_LINE" '
/^var rulesRegistry/ { in_reg = 1 }
in_reg && /^\}/ { print new_entry; in_reg = 0 }
{ print }
' "$LAUNCHER" > /tmp/_launcher_tmp; then
mv /tmp/_launcher_tmp "$LAUNCHER"
ok "Registry entry añadida en $LAUNCHER"
else
warn "No se pudo insertar el registry entry — añádelo manualmente:"
echo -e " ${GRN}${REGISTRY_LINE}${RST}"
fi
fi
echo ""
echo -e " ${BLU}1.${RST} Añade una línea en ${BLU}cmd/launcher/main.go${RST}:"
echo -e "${YLW}Queda 1 paso:${RST} registrar el bot en Matrix y añadir su token a .env:"
echo ""
echo -e ' import ('
echo -e " ${GRN}${PACKAGE}agent \"github.com/enmanuel/agents/agents/$ID\"${RST}"
echo -e ' )'
echo ""
echo -e ' var rulesRegistry = map[string]func() []decision.Rule{'
echo -e " ${GRN}\"$ID\": ${PACKAGE}agent.Rules,${RST}"
echo -e ' ...'
echo -e ' }'
echo ""
echo -e " ${BLU}2.${RST} Registra el bot en Matrix y añade el token a .env:"
echo ""
echo -e " ${DIM}./dev-scripts/register.sh $ID \"$DISPLAYNAME\"${RST}"
echo -e " ${DIM}./dev-scripts/register.sh $ID \"$DISPLAYNAME\"${RST}"
echo ""
+26 -5
View File
@@ -19,7 +19,7 @@ need_arg "${1:-}"
USERNAME="$1"
DISPLAYNAME="${2:-$USERNAME}"
ENV_VAR="${3:-MATRIX_TOKEN_$(echo "$USERNAME" | tr '[:lower:]-' '[:upper:]_')}"
ENV_VAR="${3:-MATRIX_TOKEN_$(echo "$USERNAME" | tr '[:lower:]-' '[:upper:]_' | sed 's/_BOT$//')}"
[[ -n "${MATRIX_ADMIN_TOKEN:-}" ]] || fail "MATRIX_ADMIN_TOKEN no está en .env"
[[ -n "${MATRIX_HOMESERVER:-}" ]] || fail "MATRIX_HOMESERVER no está en .env"
@@ -27,12 +27,33 @@ ENV_VAR="${3:-MATRIX_TOKEN_$(echo "$USERNAME" | tr '[:lower:]-' '[:upper:]_')}"
info "Registrando @${USERNAME}:${MATRIX_SERVER_NAME:-$MATRIX_HOMESERVER}..."
echo ""
"$GO" run ./cmd/register \
# Ejecutar cmd/register y capturar su output completo
OUTPUT=$("$GO" run ./cmd/register \
--homeserver "$MATRIX_HOMESERVER" \
--username "$USERNAME" \
--displayname "$DISPLAYNAME" \
--env-var "$ENV_VAR"
--env-var "$ENV_VAR" 2>&1) || fail "cmd/register falló:\n$OUTPUT"
echo "$OUTPUT"
echo ""
# Extraer la línea ENV_VAR=token del output
TOKEN_LINE=$(echo "$OUTPUT" | grep "^${ENV_VAR}=")
[[ -n "$TOKEN_LINE" ]] || fail "No se encontró '${ENV_VAR}=' en el output de cmd/register"
TOKEN=$(echo "$TOKEN_LINE" | cut -d= -f2-)
[[ -n "$TOKEN" ]] || fail "Token vacío para $ENV_VAR"
# Actualizar .env — reemplazar si ya existe, añadir si no
if grep -q "^${ENV_VAR}=" .env; then
awk -v key="$ENV_VAR" -v val="$TOKEN" \
'index($0, key "=") == 1 { print key "=" val; next } { print }' \
.env > /tmp/_env_tmp && mv /tmp/_env_tmp .env
ok "$ENV_VAR actualizado en .env"
else
printf '\n%s=%s\n' "$ENV_VAR" "$TOKEN" >> .env
ok "$ENV_VAR añadido a .env"
fi
echo ""
dim " Copia las líneas de arriba a tu .env y luego corre:"
dim " ./dev-scripts/start.sh $USERNAME"
dim " Arranca el bot con: ./dev-scripts/start.sh $USERNAME"
+1 -1
View File
@@ -18,7 +18,7 @@ start_agent() {
info "Iniciando $id..."
# Lanza el launcher en background, desacoplado del terminal
nohup "$GO" run ./cmd/launcher -c "$cfg" \
nohup "$GO" run -tags goolm ./cmd/launcher -c "$cfg" --log-level "${LOG_LEVEL:-info}" \
>> "$log" 2>&1 &
local pid=$!