# Eventos en vivo

`met.events` es el feed de lo que pasa en tu workspace: runs que terminan, mensajes que entran por un canal, contactos que se crean. Puedes leerlo en vivo por **Server-Sent Events (SSE)** o consultar el historial reciente. Requiere el scope `events:read`.

## Escuchar en vivo con `stream()`

`met.events.stream()` abre una suscripción SSE **efímera** que te emite cada evento apenas ocurre. Es la misma fuente de `met listen` en la CLI: perfecta para el dev-loop y para tiempo real sin montar un endpoint.

```ts
const met = new Met(key, { workspaceId });

for await (const ev of met.events.stream()) {
  console.log(ev.type, ev.data);
}
```

Cada `ev` es un `{ id, type, created, livemode, data }` — los mismos tipos del catálogo de webhooks salientes.

### Filtrar por tipo

Pasa `types` para recibir solo lo que te interesa:

```ts
for await (const ev of met.events.stream({ types: ['run.completed', 'contact.message.received'] })) {
  if (ev.type === 'run.completed') console.log('run listo:', ev.data);
}
```

### Cortar el stream

Rompe el `for await` (con `break`) o pasa un `AbortSignal` para cerrarlo desde afuera:

```ts
const ac = new AbortController();
setTimeout(() => ac.abort(), 30_000);   // corta a los 30s

for await (const ev of met.events.stream({ signal: ac.signal })) {
  console.log(ev.type);
}
```

Algunos tipos útiles del catálogo: `run.completed`, `run.failed`, `contact.message.received`, `contact.created`, `task.completed`, `conversation.handoff`.

> **`stream()` vs. webhooks salientes.** `met.events.stream` es efímero: no reintenta y solo llega mientras tu proceso está conectado. Sirve para desarrollo y tiempo real. Para **entrega garantizada cross-instancia** (que el evento llegue aunque tu servicio esté caído y se reintente), monta un webhook persistente — ver [Webhooks](webhooks.html).

## Consultar el historial

Cuando no necesitas tiempo real, lee lo ya ocurrido:

```ts
const eventos  = await met.events.list();               // últimos eventos (default 50)
const actividad = await met.events.activity();          // actividad del workspace (default 50)
const deItem   = await met.events.itemActivity(1234);   // actividad de un item puntual
```

Ambos `list()` y `activity()` aceptan `{ limit }` para ajustar cuántos registros traer.
