# Ver a tu agente en OpenMasu

> Enlaza un espacio de OpenMasu y cada sesión muestra la vista en directo y la base del agente, juntas y en directo. El token de integración se queda en nuestro lado.

Tu agente maneja el navegador. [OpenMasu](https://openmasu.com) guarda lo que decide: qué buscó, los posts que encontró, la puntuación y el motivo de cada uno, sus borradores y lo que publicó. Cuando la organización enlaza su espacio de OpenMasu, la página de cada sesión del panel tiene dos mitades:

- **Izquierda:** la vista en directo del navegador, solo para mirar.
- **Derecha:** la base del agente, incrustada y en directo. Los administradores pueden editarla, por ejemplo para aprobar un borrador. El resto solo puede verla.

En pantallas estrechas, las dos mitades van una debajo de otra.

## Enlazar OpenMasu

Necesitas el rol `admin` de toda la organización y un token personal de OpenMasu (`bpat_…`) limitado a un espacio. Para ver basta con lectura; para que los administradores editen la base, dale permiso de escritura.

1. En el panel, abre **Navegadores › Ajustes › OpenMasu**.
2. Deja el servidor `https://platform.openmasu.com`, pega el token y pulsa **Enlazar OpenMasu**. Si el token llega a más de un espacio, escribe también el id del espacio.
3. Pulsa **Crear base del agente**. Crea en ese espacio la base «Agente de redes» desde la plantilla de OpenMasu. Sus tablas son Sesiones, Búsquedas, Candidatos, Puntuaciones, Borradores, Revisiones, Publicaciones, Eventos y Config. La base se crea en el idioma del panel: en inglés es «Social media agent», con Sessions, Searches, Candidates y demás. Tu agente entiende los dos. Para incrustar una base que ya tienes, escribe su id en **Id de la base**.

OpenWAF comprueba el token con OpenMasu antes de guardarlo. Después lo guarda cifrado. No se vuelve a mostrar, tampoco a los administradores: los ajustes y la API solo enseñan una huella de 8 caracteres. Enlazar, quitar el enlace y crear la base quedan en el [registro de auditoría](https://developers.openwaf.dev/es/change-control/audit-log/) con esa huella.

## La página de la sesión

Abre **Navegadores › Sesiones** y pulsa **Abrir** junto a una sesión en marcha, o su id.

- La vista en directo es el mismo enlace firmado de solo ver que **Vista en directo**. Caduca en 1 hora. **Abrir en otra pestaña** la enseña a tamaño completo.
- **Tomar el control** (solo administradores) pide confirmación y abre en otra pestaña la vista en directo con teclado y ratón, para terminar por el agente un inicio de sesión, un segundo factor o un captcha. El enlace dura 10 minutos, queda en la auditoría y se queda en la página como **Abrir el control** hasta que caduca. Mira [tomar el control](https://developers.openwaf.dev/es/browsers/reference/#take-control).
- La base se carga con un enlace hecho para ti: `editor` si eres administrador y `viewer` si no. El enlace dura 15 minutos. Cuando caduca, OpenMasu avisa a la página y esta carga otro sin recargarse.

## Seguridad

- **El navegador nunca ve el token de integración.** Nuestro servidor pide a OpenMasu un enlace de incrustación corto para cada persona y solo devuelve ese enlace. El token de incrustación va en el fragmento de la URL, así que no llega a los registros de los servidores ni a la cabecera `Referer`.
- **Solo servidores conocidos.** El panel solo incrusta `https://browsers.openwaf.dev` y `https://platform.openmasu.com`, y nuestro servidor solo habla con los servidores de OpenMasu que admite. Cualquier otro se rechaza al enlazarlo.
- **Marcos aislados.** Los dos marcos van con `sandbox` y sin referrer. La página solo acepta el aviso de caducidad desde el origen de OpenMasu enlazado y desde ese marco.
- **Quitar el enlace** borra el token en nuestro lado. La base y el token siguen en OpenMasu: revoca el token allí para cortar el acceso.

## API

Todas las rutas van bajo `https://dash.openwaf.dev/v1/orgs/{org}`. Enlazar, quitar el enlace y crear la base piden `admin`; leer el enlace y pedir un enlace de incrustación, cualquier rol de toda la organización.

| Ruta | Qué hace |
|---|---|
| `GET /browsers/openmasu` | El enlace: `linked`, `server_url`, `workspace_id`, `base_id` y, para administradores, `token_fingerprint`, `updated_by` y `updated_at`. Nunca el token. |
| `PUT /browsers/openmasu` | Enlazar o cambiar: `{"server_url", "token", "workspace_id"?, "base_id"?}`. `token` es obligatorio la primera vez y al cambiar de servidor. Sin él se mantiene el guardado. `base_id: ""` quita la base. |
| `DELETE /browsers/openmasu` | Quitar el enlace y borrar el token (`204`) |
| `POST /browsers/openmasu/base` | Crear la base del agente desde la plantilla (`201`); cuerpo `{"lang": "es"}` o `"en"`, inglés si no se indica |
| `POST /browsers/openmasu/embed` | Un enlace de incrustación: `{"url", "expires_at", "role", "base_id", "origin"}`. Cuerpo opcional `{"view_id", "ttl_s"}` (de 60 a 900 s, 900 por defecto). `Cache-Control: no-store`. |

```bash
printf '%s' "$OPENMASU_TOKEN" | jq -Rs '{server_url: "https://platform.openmasu.com", token: .}' |
  curl -sS -X PUT "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/browsers/openmasu" \
    -H "Authorization: Bearer $OPENWAF_TOKEN" -H "X-Change-Reason: enlazar la base del agente" \
    -H "Content-Type: application/json" --data-binary @-
```

| Estado | `code` | Cuándo |
|---|---|---|
| 409 | `openmasu_not_linked` | La organización no ha enlazado OpenMasu |
| 409 | `openmasu_no_base` | Enlazado, pero aún sin base |
| 409 | `openmasu_base_exists` | La base ya se creó |
| 422 | `invalid` | Servidor no admitido, token rechazado por OpenMasu, o espacio o base fuera del alcance del token; `field` dice cuál |
| 502 | `openmasu_error` | OpenMasu no respondió, o rechazó el token guardado (revocado o caducado): enlaza otra vez con uno nuevo |
| 503 | `unavailable` | Ahora mismo el servicio no puede guardar tokens |

## CLI

El token se lee de la entrada estándar, nunca de un argumento:

```bash
printf '%s' "$OPENMASU_TOKEN" | openwaf-cloud ctl browsers openmasu link \
  --server https://platform.openmasu.com --token-stdin --reason "enlazar la base del agente" --yes
openwaf-cloud ctl browsers openmasu create-base --lang es --reason "base del agente" --yes
openwaf-cloud ctl browsers openmasu status
openwaf-cloud ctl browsers openmasu unlink --reason "…" --yes
```

No hay herramientas MCP para el enlace: el token es un secreto, como las [credenciales de proveedor de Egress](https://developers.openwaf.dev/es/egress/).
