Modo elevado (directivas /elevated)

Qué hace

  • /elevated on se ejecuta en el host del gateway y mantiene las aprobaciones de ejecución (igual que /elevated ask).
  • /elevated full se ejecuta en el host del gateway y auto-aprueba la ejecución (omite las aprobaciones de ejecución).
  • /elevated ask se ejecuta en el host del gateway pero mantiene las aprobaciones de ejecución (igual que /elevated on).
  • on/ask no fuerzan exec.security=full; la política de seguridad/ask configurada sigue aplicándose.
  • Solo cambia el comportamiento cuando el agente está en sandbox (de lo contrario la ejecución ya se ejecuta en el host).
  • Formas de directiva: /elevated on|off|ask|full, /elev on|off|ask|full.
  • Solo se aceptan on|off|ask|full; cualquier otra cosa devuelve una pista y no cambia el estado.

Qué controla (y qué no)

  • Puertas de disponibilidad: tools.elevated es la línea base global. agents.list[].tools.elevated puede restringir aún más la elevación por agente (ambos deben permitir).
  • Estado por sesión: /elevated on|off|ask|full establece el nivel de elevación para la clave de sesión actual.
  • Directiva inline: /elevated on|ask|full dentro de un mensaje aplica solo a ese mensaje.
  • Grupos: En chats grupales, las directivas de elevación solo se respetan cuando el agente es mencionado. Los mensajes que son solo comandos y que evitan los requisitos de mención se tratan como mencionados.
  • Ejecución en host: elevated fuerza exec al host del gateway; full también establece security=full.
  • Aprobaciones: full omite las aprobaciones de ejecución; on/ask las respetan cuando las reglas de lista permitida/ask lo requieren.
  • Agentes sin sandbox: no-op para ubicación; solo afecta el control, registro y estado.
  • La política de herramientas sigue aplicándose: si exec está denegado por la política de herramientas, elevated no se puede usar.
  • Separado de /exec: /exec ajusta los valores por defecto por sesión para remitentes autorizados y no requiere elevated.

Orden de resolución

  1. Directiva inline en el mensaje (aplica solo a ese mensaje).
  2. Sobrecarga de sesión (establecida al enviar un mensaje que es solo directiva).
  3. Valor por defecto global (agents.defaults.elevatedDefault en la configuración).

Establecer un valor por defecto de sesión

  • Envía un mensaje que sea solo la directiva (se permite espacio en blanco), por ej. /elevated full.
  • Se envía respuesta de confirmación (Elevated mode set to full... / Elevated mode disabled.).
  • Si el acceso elevado está deshabilitado o el remitente no está en la lista aprobada, la directiva responde con un error accionable y no cambia el estado de la sesión.
  • Envía /elevated (o /elevated:) sin argumento para ver el nivel de elevación actual.

Disponibilidad + listas permitidas

  • Puerta de función: tools.elevated.enabled (el valor por defecto puede estar desactivado vía configuración aunque el código lo soporte).
  • Lista permitida de remitentes: tools.elevated.allowFrom con listas permitidas por proveedor (por ej. discord, whatsapp).
  • Las entradas de lista permitida sin prefijo coinciden solo con valores de identidad con alcance de remitente (SenderId, SenderE164, From); los campos de enrutamiento de destinatario nunca se usan para la autorización de elevación.
  • Los metadatos mutables del remitente requieren prefijos explícitos:
    • name:<value> coincide con SenderName
    • username:<value> coincide con SenderUsername
    • tag:<value> coincide con SenderTag
    • id:<value>, from:<value>, e164:<value> están disponibles para apuntar a identidad de forma explícita
  • Puerta por agente: agents.list[].tools.elevated.enabled (opcional; solo puede restringir más).
  • Lista permitida por agente: agents.list[].tools.elevated.allowFrom (opcional; cuando se establece, el remitente debe coincidir con ambas listas permitidas global + por agente).
  • Respaldo de Discord: si se omite tools.elevated.allowFrom.discord, la lista channels.discord.allowFrom se usa como respaldo (legacy: channels.discord.dm.allowFrom). Establece tools.elevated.allowFrom.discord (incluso []) para sobrecargar. Las listas permitidas por agente no usan el respaldo.
  • Todas las puertas deben pasar; de lo contrario, elevated se trata como no disponible.

Registro + estado

  • Las llamadas exec elevadas se registran a nivel info.
  • El estado de la sesión incluye el modo de elevación (por ej. elevated=ask, elevated=full).