# Presentamos los widgets del espacio de trabajo (/docs/es/posts/announcing-workspace-widgets)



# Presentamos los widgets del espacio de trabajo [#presentamos-los-widgets-del-espacio-de-trabajo]

Hoy lanzamos los **widgets del espacio de trabajo**, una forma de poner
apps interactivas y en vivo directamente en el lienzo del espacio de
trabajo de Robutler, al lado de tus agentes y tus chats.

<!-- more -->

## Qué ha cambiado [#qué-ha-cambiado]

Hasta hoy el espacio de trabajo era un buen sitio para hablar con tus
agentes y guardar contenido para más tarde. Con los widgets se convierte
en un escritorio real que construyes con piezas pequeñas y combinables:

* Un **kernel de Python** que se ejecuta en tu pestaña, con numpy y
  matplotlib preinstalados. Dibuja un gráfico y aparece como un widget
  hermano en el lienzo, no enterrado en un panel de terminal.
* Un **shell local** conectado a un daemon en tu propia máquina.
* Un **widget de SSH** para las máquinas de producción a las que
  siempre vuelves. La misma gestión de claves y hosts que en la terminal
  antigua, solo más limpia.
* Un **navegador incrustado** para los paneles en los que vives.
* Un editor **CodeMirror** para ediciones rápidas de texto y código.
* **Notas adhesivas**, **formas** y **conectores** para esbozar planes
  en el lienzo (como Figjam, pero justo al lado de tu agente).
* Y un puñado de juegos de estilo arcade (Snake, Tetris, Space
  Invaders) porque los espacios de trabajo deberían ser divertidos.

Crea uno desde el botón `+` → **Widget** → busca en el
catálogo.

## Novedades para quienes crean agentes [#novedades-para-quienes-crean-agentes]

Los widgets no son solo para las personas. Los agentes pueden:

* **Crear widgets en el lienzo** con la familia de herramientas
  `present.*`. `present.image`, `present.code`, `present.url`,
  `present.chart`, `present.note` y un ayudante genérico
  `present.widget` permiten a los agentes publicar artefactos visuales
  junto a la conversación.
* **Controlar kernels de Python** con `workspace_widgets_invoke(id,
  'eval' | 'run', ...)`. Suscríbete a los eventos `stdout` / `stderr` /
  `display` y las figuras de matplotlib se transmiten directamente al
  lienzo en tiempo real.
* **Ejecutar comandos de shell** en widgets de daemon y de SSH con la
  misma herramienta `workspace_widgets_invoke(id, 'run', ...)`. Cada
  comando escribe una notificación auditada `widget.agent_command`, así
  que puedes ver exactamente qué se
  ejecutó.

La fábrica de agentes conoce esta nueva superficie: puede crear
widgets a partir de unas pocas indicaciones, conectar `host.kv` para el
estado y emitir proyecciones DSL para las apps nativas de Robutler en iOS y Android.

## Confianza por defecto, el riesgo se activa a mano [#confianza-por-defecto-el-riesgo-se-activa-a-mano]

Dejar que un agente ejecute comandos de shell es peligroso si el
interruptor está siempre activado. Así que enviamos el valor contrario:
cada widget de daemon y de SSH empieza con **Permitir que los agentes
ejecuten comandos** desactivado. Actívalo widget por widget cuando estés
listo y desactívalo cuando termines.

Los kernels de Python vienen activados porque están aislados dentro de
tu pestaña: ni el agente más descontrolado puede escapar de Pyodide. El
interruptor sigue ahí si quieres bloquear el kernel para una sesión
compartida.

Cada comando de agente aceptado Y rechazado escribe una fila de
auditoría. Abre el feed de notificaciones y busca `widget.agent_command`
para ver tu historial semanal.

## Widgets multiplataforma [#widgets-multiplataforma]

Los widgets pueden incluir opcionalmente una **proyección**: un árbol
declarativo diminuto compilado a partir de una función de JS. Las
proyecciones sirven para tres cosas:

. Una vista previa ligera que se renderiza en el lienzo sin
  cargar el iframe completo (una gran ganancia de rendimiento con
  decenas de widgets fijados).
. Un renderizado nativo del widget en las apps de Robutler para iOS y
  Android que llegarán este año. La app consulta la proyección
  periódicamente y la renderiza como un widget nativo de iOS o Android.
. Una proyección para el dock: fija un widget al dock y la
  proyección toma el relevo para que puedas ver el estado de un vistazo
  sin cargar el iframe completo en memoria.

Si estás escribiendo un widget hoy, devolver una proyección es
opcional pero recomendable. Consulta la
[guía del SDK del host](/guides/widgets/host-sdk/) para conocer la
gramática del DSL.

## Pruébalo [#pruébalo]

Abre tu [espacio de trabajo](/workspace), toca el botón `+` y elige
**Widget**. O simplemente pídeselo a tu agente: "Muéstrame un gráfico de
la cotización de NVDA" y mira cómo arranca el kernel de Python, aparece
la figura de matplotlib y el agente le pone un pie al lado.

Estamos impacientes por ver qué construyes.

El equipo de Robutler
