# Anunciando os Workspace Widgets (/docs/pt/posts/announcing-workspace-widgets)



# Anunciando os Workspace Widgets [#anunciando-os-workspace-widgets]

Hoje estamos lançando os **Workspace Widgets**: uma forma de
colocar apps interativos ao vivo direto no canvas do espaço de
trabalho do Robutler, ao lado dos seus agentes e conversas.

<!-- more -->

## O que mudou [#o-que-mudou]

Até hoje o espaço de trabalho era um ótimo lugar para conversar
com seus agentes e fixar conteúdo para depois. Com os Widgets, ele
se torna uma verdadeira área de trabalho que você monta com
pequenas peças combináveis:

* Um **kernel Python** que roda na sua aba, com numpy e matplotlib
  pré-instalados. Gere um gráfico e ele aparece como um widget
  vizinho no canvas, não enterrado em um painel de terminal.
* Um **shell local** conectado a um daemon na sua própria máquina.
* Um **widget SSH** para as máquinas de produção às quais você
  sempre volta. O mesmo gerenciamento de chaves e hosts do
  terminal antigo, só mais limpo.
* Um **navegador embutido** para os painéis em que você vive.
* Um editor **CodeMirror** para edições rápidas de texto e código.
* **Notas adesivas**, **formas** e **conectores** para esboçar
  planos no canvas (como o Figjam, mas ao lado do seu agente).
* E alguns jogos estilo arcade (Snake, Tetris, Space
  Invaders), porque espaços de trabalho devem ser divertidos.

Crie um pelo botão `+` → **Widget** → busque no
catálogo.

## O que há de novo para quem cria agentes [#o-que-há-de-novo-para-quem-cria-agentes]

Os widgets não são só para pessoas. Os agentes podem:

* **Criar widgets no canvas** pela família de ferramentas
  `present.*`. `present.image`, `present.code`, `present.url`,
  `present.chart`, `present.note` e um auxiliar genérico
  `present.widget` permitem que os agentes publiquem artefatos
  visuais ao lado da conversa.
* **Controlar kernels Python** por `workspace_widgets_invoke(id,
  'eval' | 'run', ...)`. Assine os eventos `stdout` / `stderr` / `display`
  e as figuras do matplotlib voltam direto para o canvas
  em tempo real.
* **Executar comandos de shell** em widgets de daemon e SSH pela
  mesma ferramenta `workspace_widgets_invoke(id, 'run', ...)`. Todo
  comando grava uma notificação auditada `widget.agent_command`,
  para que você veja exatamente o que
  foi executado.

A fábrica de agentes já conhece essa nova superfície: ela pode
construir widgets a partir de algumas dicas no prompt, ligar
`host.kv` para guardar estado e emitir projeções em DSL para os
apps nativos do Robutler no iOS e no Android.

## Confiança por padrão, risco só se você optar [#confiança-por-padrão-risco-só-se-você-optar]

Deixar um agente executar comandos de shell é perigoso se a chave
estiver sempre ligada. Então entregamos o padrão oposto: todo
widget de daemon e SSH começa com **Permitir que agentes executem
comandos** desligado. Ligue por widget quando estiver pronto,
desligue quando terminar.

Os kernels Python vêm ligados por padrão porque ficam isolados
dentro da sua aba: mesmo um agente completamente descontrolado não
consegue escapar do Pyodide. A chave continua ali se você quiser
travar o kernel em uma sessão compartilhada.

Todo comando de agente aceito E recusado gera uma linha de
auditoria. Abra o feed de notificações e busque por
`widget.agent_command` para ver seu histórico da semana.

## Widgets multiplataforma [#widgets-multiplataforma]

Os widgets podem, opcionalmente, incluir uma **projeção**: uma
pequena árvore declarativa compilada a partir de uma função JS. As
projeções servem para três coisas:

. Uma prévia leve que aparece no canvas sem
  carregar o iframe completo (um grande ganho de desempenho com
  dezenas de widgets fixados).
. Uma renderização nativa nos apps do Robutler para iOS e Android
  que chegam ainda este ano. O app consulta a projeção
  periodicamente e a exibe como um widget nativo de iOS ou Android.
. Uma projeção na doca: fixe um widget na doca e a
  projeção assume, para que você leia o estado de relance sem
  manter o iframe completo na memória.

Se você está escrevendo um widget hoje, devolver uma projeção é
opcional, mas recomendado. Veja o
[guia do SDK do host](/guides/widgets/host-sdk/) para a
gramática da DSL.

## Experimente [#experimente]

Abra seu [espaço de trabalho](/workspace), toque no botão `+` e
escolha **Widget**. Ou simplesmente peça ao seu agente: "Mostre um
gráfico da ação da NVDA" e veja o kernel Python subir, a figura do
matplotlib aparecer e o agente comentá-la ao lado.

Estamos ansiosos para ver o que você vai construir.

A equipe do Robutler
