# Sesiones

Una sesión es una rama de git y un entorno aislado donde trabaja el agente.

Canonical page: https://beeuni.ai/docs/es/work/sessions

Una sesión es una unidad de trabajo del agente. Beeuni crea una rama de git y prepara
un entorno aislado para ella. El ID de sesión, el nombre de la rama y el ID del entorno aislado
son el mismo valor.

<a id="status"></a>

## Estado

En la práctica, una sesión puede alcanzar 4 estados.

| Estado | Significado |
|---|---|
| `provisioning` | Beeuni crea la rama y solicita el entorno aislado. |
| `running` | El entorno aislado está activo y se puede acceder a él. |
| `stopped` | La sesión está pausada, por ti o por la detención automática por inactividad. |
| `failed` | No se pudo aprovisionar. |

La base de datos define 3 valores más (`queued`, `branching`, `completed`).
Actualmente, Beeuni no los escribe para una sesión.

<a id="stop-resume-and-idle-auto-stop"></a>

## Detener, reanudar y detener automáticamente por inactividad

Puedes detener una sesión. Al reanudarla, vuelve el mismo entorno aislado con el mismo
sistema de archivos y la misma identidad de ejecución. Solo se reinician los procesos en ejecución y la memoria.
La conversación de harness estándar sigue vinculada a la sesión.

Beeuni también detiene las sesiones inactivas por ti:

- Tras 15 minutos de inactividad, en una sesión normal o una ejecución de activador.
- Tras 2 minutos de inactividad, en una sesión de trabajo iniciada por otra sesión.

Un turno activo del agente impide la detención. La tarea de mantenimiento se ejecuta cada 5 minutos.
Por eso, una detención automática normal se produce aproximadamente entre 15 y 20 minutos después del último turno en la terminal.

Un turno que espera a una persona no realiza trabajo: el agente hizo una pregunta o pide permiso para ejecutar una herramienta. Ese turno mantiene el equipo activo durante un máximo de 2 horas desde que Beeuni detecta por primera vez la espera. En una ejecución de activador o de programación, nadie recibe la solicitud y el límite es de 30 minutos. Después, Beeuni termina el turno y detiene el equipo. Envía un mensaje para continuar. Una llamada al modelo o tener abierta la página de la sesión cuenta como actividad y prolonga el tiempo del equipo, como de costumbre.

La página de una sesión que estés usando la mantiene activa. Cuenta como en uso mientras la pestaña esté visible y hayas hecho clic, escrito, desplazado la página o interactuado con ella en los últimos 10 minutos, y solo si puedes iniciar sesiones en el proyecto. Una pestaña abierta sin interacción deja de contar al cabo de 10 minutos, por lo que la sesión se detiene aproximadamente entre 15 y 20 minutos después. La pestaña abierta de un usuario con acceso de solo lectura nunca la mantiene activa.
Usar la página por sí solo mantiene activa una sesión durante un máximo de 2 horas después del último turno del agente; un mensaje nuevo inicia un turno y reinicia ese límite.

<a id="what-stop-and-delete-keep"></a>

## Qué conservan la detención y la eliminación

> **La eliminación es permanente**
>
> Eliminar una sesión destruye su entorno aislado para siempre. Beeuni conserva el registro de la sesión y la rama de git, así que aún puedes recuperar el trabajo enviado. Todo lo que no se haya enviado se pierde.

Detener y reanudar conservan la identidad y el sistema de archivos del entorno aislado. Eliminar destruye el entorno aislado. Git es el único registro duradero: el trabajo que el agente confirma y envía se conserva; todo lo demás se pierde.

<a id="labels"></a>

## Etiquetas

Una etiqueta clasifica una sesión: `bug`, `customer: eu`, `worker`. Abre el menú `⋯` de una sesión
y elige **Edit labels**. El filtro **Labels** de la lista de sesiones muestra solo las sesiones que tienen todas las etiquetas que selecciones. Las etiquetas son texto libre, de 1 a 64 caracteres, con un máximo de 20 por sesión.

Los agentes y los scripts también pueden establecer etiquetas: `beeuni sessions new --label worker`,
`beeuni sessions update --label needs-review` (dentro de una sesión, sin un ID,
etiqueta esa sesión) o `labels` en la API y el SDK. Una sesión también tiene un objeto `metadata` de texto libre para tus propias claves. Consulta
SDK sessions.

<a id="runtime"></a>

## Entorno de ejecución

Una sesión ejecuta un entorno, harness estándar o harness experimental. Consulta
[Entornos](/docs/es/work/harnesses). Beeuni guarda el agente y el modelo seleccionados
cuando se inicia la sesión. Una sesión en ejecución conserva su entorno hasta que se
reinicia o reanuda.

<a id="session-access"></a>

## Acceso a la sesión

Una sesión es privada para quien la creó. El propietario abre **Session
access** y elige una de 3 opciones.

| Opción | Quién puede abrir la sesión |
|---|---|
| Only you | Solo el propietario. Es la opción predeterminada. |
| Specific people | El propietario, además de los miembros y grupos que elija. |
| Whole project | Todos los miembros del proyecto. |

Todas las personas con acceso pueden leer la conversación y continuarla.

**Una sesión compartida utiliza claves compartidas.** Una vez compartida, una sesión utiliza solo las claves de proveedor compartidas con todo el proyecto, nunca las claves personales ni la conexión de ChatGPT de alguien. Si el modelo se ejecutaba con tus propias claves, al compartirlo pasa a utilizar las claves del proyecto para ese proveedor. Si el proyecto no comparte ninguna clave que permita ejecutar el modelo, no se puede compartir y la sesión sigue siendo privada. Consulta
[Claves de proveedor y acceso de miembros](/docs/es/project/models#provider-keys-and-member-access).

**Solo el propietario puede cambiar esta opción.** Un administrador del proyecto que no haya creado la sesión puede abrirla si se comparte con él y puede detenerla, reiniciarla o eliminarla. No puede cambiar quién más puede abrirla. Compartir una sesión con un administrador no significa cederle la lista de acceso.

Hay un tipo de sesión sin propietario humano: las que crea un activador, que se ejecutan con la identidad del agente del activador. Los administradores del proyecto las administran. Establece la política para todas ellas en el propio activador, en **Session access**. Al guardar, también se actualizan las sesiones que el activador ya haya creado.

<a id="admins-can-open-every-session"></a>

### Los administradores pueden abrir todas las sesiones

El propietario de la cuenta puede permitir que los propietarios y administradores de la cuenta abran **todas** las sesiones de la cuenta, incluidas las que los miembros mantienen privadas. Activa la opción en **Account → Settings → Security → Admins can open every session**. Está desactivada de forma predeterminada.

- **Solo el propietario de la cuenta puede cambiarla.** Los administradores ven el interruptor, pero no pueden activarlo ni desactivarlo, así que ningún administrador puede concederse acceso al trabajo de todos.
- **Los administradores encuentran estas sesiones en la página Sessions del proyecto.** La barra lateral sigue mostrando solo las sesiones que hayas iniciado o que se hayan compartido contigo.
- **El acceso es completo.** Un administrador puede abrir y leer la sesión, y continuarla, igual que si se compartiera con todo el proyecto.
- **Los miembros pueden verlo.** Mientras esté activada, el cuadro de diálogo Session access indica que los propietarios y administradores pueden abrir todas las sesiones.
- **Todo queda registrado.** Cada cambio se registra como `iam.session_oversight.enable` o `iam.session_oversight.disable`, y cada sesión que abre un administrador mediante esta opción se registra como `project.admin_oversight_session_read` (como máximo una vez por administrador y sesión cada hora).
- Los tokens del agente y del entorno aislado nunca obtienen este acceso, aunque los haya iniciado un administrador.

<a id="find-a-session-by-owner-or-access"></a>

### Buscar una sesión por propietario o acceso

La página **Sessions** del proyecto muestra el propietario y el acceso en la fila de cada sesión: el avatar y el nombre del propietario (**You** en tus propias sesiones), seguidos de un icono que indica quién puede abrirla: un candado para **Only the owner**, personas para **Specific people** y un globo terráqueo para **Whole project**.

Abre **Filter** en la página Sessions para acotar la lista:

- **Owner** — una entrada por persona, con un recuento.
- **Access** — Only the owner, Specific people o Whole project.
- **Grouping → Owner** — una sección por persona, primero la tuya.

Los filtros se combinan con **Status**, **Source** y la búsqueda. **Reset** los borra todos.

> **La sesión conserva a su propietario**
>
> Quitar a alguien de la cuenta no transfiere sus sesiones a otra persona. La política de acceso queda congelada tal como estaba. Un administrador del proyecto aún puede detener o eliminar esas sesiones; eliminarlas es la forma de revocar una sesión que ya no tiene propietario.

<a id="sharing-a-preview"></a>

## Compartir una vista previa

Puedes compartir la vista previa en directo de una sesión mediante un enlace público, en modo de solo lectura o interactivo. Solo el propietario de la sesión puede generar ese enlace, por el mismo motivo: no requiere autenticación, así que cualquiera que tenga la URL puede leer la sesión sin iniciar sesión. Un administrador del proyecto puede ver y revocar los enlaces de una sesión sin ser su propietario; revocarlos solo quita el acceso.

Para ver el enum completo de estados, las variables de entorno inyectadas y los endpoints del daemon, consulta [Entorno de ejecución](/docs/es/work/runtime). Para saber cómo se elige el agente de una sesión, consulta [Agentes](/docs/es/project/agents). Para ver las sesiones que inicia una programación o un webhook, consulta [Activadores](/docs/es/connect/triggers). Para llevar el trabajo de una sesión a la rama predeterminada, consulta [Solicitudes de cambio](/docs/es/work/change-requests).
