---
title:  Módulo Studio
slug: modulo-studio
docTags: 
createdAt: 2026-10-19T21:01:59.955Z
---

::Image[]{src="https://api.archbee.com/api/optimize/pu5VMc-2TW3GQX4ly5Xp7/ZkYK67l4UMhIZR8naTiHk_image.png" size="40" isUploading="false" width="897" height="170" darkWidth="897" darkHeight="170" position="flex-start" showCaption="false"}

Nesta funcionalidade é possível desenhar, depurar e publicar **Robôs** (a automação que uma **Máquina** executa) e **Orquestrações** (o encadeamento de Robôs já publicados) em uma interface visual.

A funcionalidade pode ser acessada através de: **Aplicativo CITSmart X Studio**. Para abrir o aplicativo a partir do código-fonte, execute npm run studio.

::Image[]{src="https://api.archbee.com/api/optimize/pu5VMc-2TW3GQX4ly5Xp7/bwUl4fzV_Ldbex1q51rYf_image.png" size="144" alt="Tela do CITSmart X Studio com um Robô aberto" isUploading="false" width="1440" height="860" darkWidth="1440" darkHeight="860" showCaption="false"}

Tela do CITSmart X Studio com um Robô aberto

## Vocabulário da tela

| Na tela          | O que é                                                                         |
| ---------------- | ------------------------------------------------------------------------------- |
| **Robô**         | A automação desenhada como uma árvore de passos. É o que se publica e versiona. |
| **Orquestração** | O grafo que encadeia Robôs publicados, com dependência, prazo e recurso.        |
| **Máquina**      | O computador em que um Robô executa, com o agente instalado.                    |

O seletor **Robô** / **Orquestração**, na barra superior, alterna entre os dois editores.

## Mapa da tela (modo Robô)

| Área                         | Posição               | Para que serve                                                                                                   |
| ---------------------------- | --------------------- | ---------------------------------------------------------------------------------------------------------------- |
| Barra superior               | Topo                  | Novo, Abrir, Desfazer, Refazer, nome e versão, Salvar, Depurar, Executar, Gravar web, Gravar desktop e Publicar. |
| Paleta **Atividades**        | Esquerda              | Lista as atividades por categoria, com busca.                                                                    |
| Canvas                       | Centro                | Árvore de passos do Robô.                                                                                        |
| **Propriedades**             | Direita, primeira aba | Campos do passo selecionado.                                                                                     |
| **Variaveis**                | Direita, segunda aba  | Argumentos e variáveis do Robô.                                                                                  |
| **Assistente**               | Direita, terceira aba | Pertence ao módulo de IA. Consulte IA.                                                                           |
| **Saida** e **Diagnosticos** | Inferior              | Log de execução e problemas encontrados no desenho.                                                              |

**Nota:** A tela exibe alguns rótulos sem acento, como **Variaveis**, **Saida** e **Diagnosticos**. Esta documentação usa os rótulos exatamente como aparecem na tela.

As duas colunas laterais podem ser redimensionadas arrastando o divisor e recolhidas pelo botão de recolher (**⟨** na paleta, **⟩** no painel direito). Recolhidas, aparecem como uma faixa vertical que, ao ser clicada, reabre a coluna.

## Páginas

- Entrar no Studio
- Editor de Robôs
- Paleta de atividades
- Propriedades de um passo
- Variáveis e expressões
- Seletores e Element Spy
- Gravador
- Depurar e executar
- Publicar um Robô
- Editor de Orquestrações
- Catálogo de atividades
- Runner e linha de comando

## Outros módulos

- Painel de operação (servidor, filas, cofre e Máquinas): Orquestrador.
- Assistente, provedores de IA e MCP: IA.

**Importante:** O Studio grava e publica no Orchestrator. Sem o servidor no ar, o desenho continua possível, mas salvar, abrir rascunhos, publicar e carregar o catálogo de atividades dependem dele.

## Entrar no Studio

Nesta funcionalidade é possível identificar-se no Orchestrator antes de usar o Studio. A identidade é usada ao salvar rascunhos, publicar e ler o catálogo de atividades.

A funcionalidade pode ser acessada através de: **Tela de entrada, exibida sempre que o Studio abre**.

![](https://api.archbee.com/api/optimize/pu5VMc-2TW3GQX4ly5Xp7/luA_hoBqIc6MzmRwR1eae_image.png)

Tela de entrada do CITSmart X Studio

A tela exibe os campos conforme a configuração da instalação:

| Elemento                                                        | Quando aparece                                                                                |
| --------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| **Orchestrator**                                                | Sempre. Endereço do servidor.                                                                 |
| Botão de entrada pela conta da empresa                          | Quando a instalação tem provedor de identidade. O rótulo do botão é definido pela instalação. |
| **Token de identidade** e **Entrar com token**                  | Somente quando a instalação não tem provedor de identidade.                                   |
| Aviso de instalação **aberta** e botão **Continuar sem entrar** | Quando a instalação não tem token nem identidade cadastrada.                                  |

Para entrar pela conta da empresa é necessário:

1. Conferir o endereço no campo **Orchestrator**.
2. Clicar no botão de entrada. Uma janela do servidor é aberta.
3. Autenticar-se na janela. Ao fechá-la sem entrar, nada é alterado.

Para entrar com token é necessário:

1. Conferir o endereço no campo **Orchestrator**.
2. Preencher **Token de identidade**. Se o ambiente já informou um token, o campo vem preenchido e o botão passa a se chamar **Entrar com o token configurado**.
3. Clicar em **Entrar com token** ou pressionar Enter.

Depois de entrar, a barra superior exibe o nome de quem entrou, o papel e o link **sair**.

**Nota:** O botão **sair** encerra a sessão no servidor, e não apenas no Studio.

**Importante:** Quando a instalação está **aberta**, qualquer pessoa com acesso à rede usa a API sem credencial. Configure identidades antes de usar a instalação em produção. A administração de identidades está em Orquestrador.

## Editor de Robôs

Nesta funcionalidade é possível desenhar um Robô como uma **árvore de passos**. Cada passo é uma atividade; atividades de controle (como **Se / Senao**, **Para cada item** e **Tentar / Capturar**) contêm outros passos em blocos nomeados, como **ENTAO** e **SENAO**.

A funcionalidade pode ser acessada através de: **Barra superior > Robô**.

::Image[]{src="https://api.archbee.com/api/optimize/pu5VMc-2TW3GQX4ly5Xp7/bwUl4fzV_Ldbex1q51rYf_image.png" size="144" alt="Canvas do editor de Robôs com um Robô aberto" isUploading="false" width="1440" height="860" darkWidth="1440" darkHeight="860" showCaption="false"}

Canvas do editor de Robôs com um Robô aberto

### A árvore de fluxo

O Robô não é um grafo de caixas ligadas por setas. É uma árvore: o passo raiz (normalmente **Sequencia**) contém os passos em ordem, de cima para baixo, e os blocos aninhados mostram o que acontece dentro de uma condição ou de um laço. A ordem visual é a ordem de execução.

Cada passo exibe o rótulo, o identificador da atividade (por exemplo core.if) e um resumo dos campos preenchidos. Durante a execução, o passo ganha estado, tempo gasto e, em caso de falha, o motivo.

### Barra superior

| Controle                           | Função                                                                                                      |
| ---------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| **Robô** / **Orquestração**        | Alterna entre os editores. Consulte Editor de Orquestrações.                                                |
| **Novo**                           | Cria um Robô vazio. Se houver alterações não salvas, pede confirmação.                                      |
| **Abrir…**                         | Lista **Rascunhos** salvos e Robôs **Publicados**.                                                          |
| ↶ / ↷                              | Desfazer e refazer.                                                                                         |
| Campo de nome                      | Nome do Robô.                                                                                               |
| Campo de versão                    | Versão do Robô, por exemplo 1.0.0.                                                                          |
| **Salvar**                         | Grava o rascunho no servidor.                                                                               |
| Identificador                      | Exibe rsc\_... após salvar, ou **não salvo**. Clique para copiar. Um ponto (•) indica alterações pendentes. |
| **Depurar**, **Executar**          | Consulte Depurar e executar.                                                                                |
| **Gravar web**, **Gravar desktop** | Consulte Gravador.                                                                                          |
| **Publicar**                       | Consulte Publicar um Robô.                                                                                  |

Para criar um Robô é necessário:

1. Clicar em **Novo**.
2. Preencher o nome e a versão nos campos da barra superior.
3. Arrastar atividades da paleta **Atividades** para o canvas. Consulte Paleta de atividades.
4. Clicar em um passo e preencher os campos na aba **Propriedades**. Consulte Propriedades de um passo.
5. Clicar em **Salvar**.

Para inserir um passo em um bloco é necessário:

1. Arrastar a atividade da paleta até a zona de soltura desejada. O bloco vazio exibe "arraste uma atividade aqui".
2. Soltar quando a zona estiver destacada. A posição entre dois passos também é uma zona de soltura.

Para reordenar passos é necessário:

1. Arrastar o passo para outra zona de soltura, inclusive para dentro de outro bloco; ou
2. Selecionar o passo e usar os botões **▲** e **▼** do cabeçalho, ou Alt+↑ e Alt+↓.

### Ações em um passo

Os botões à direita do cabeçalho do passo são:

| Botão         | Ação                                                                                  |
| ------------- | ------------------------------------------------------------------------------------- |
| **⬤**         | Adiciona ou remove breakpoint.                                                        |
| **◉** / **○** | Desativa ou ativa o passo. Um passo desativado permanece no desenho, mas não executa. |
| **▲** / **▼** | Move o passo dentro do bloco.                                                         |
| **⧉**         | Duplica o passo.                                                                      |
| **✕**         | Exclui o passo.                                                                       |

O botão **▾** à esquerda do título recolhe o bloco. Recolhido, o bloco informa quantos passos escondeu e se há falha dentro.

### Selos de aviso no passo

| Selo                        | Significado                                                                                                                          |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| **desconhecida**            | A atividade não está registrada neste Studio.                                                                                        |
| **precisa de** *capacidade* | A Máquina atual não tem a capacidade exigida (por exemplo, browser). É um aviso: publicado, o passo roda em uma Máquina que a tenha. |
| **erro**                    | O passo falhou na última execução. O motivo aparece abaixo do passo.                                                                 |
| **●**                       | Breakpoint ativo.                                                                                                                    |

### Atalhos

| Atalho          | Ação                                              |
| --------------- | ------------------------------------------------- |
| Ctrl+S          | Salvar. Ctrl+Shift+S salva como um rascunho novo. |
| Ctrl+O          | Foca a lista **Abrir…**.                          |
| Ctrl+Z / Ctrl+Y | Desfazer e refazer.                               |
| F5              | Executar. Shift+F5 depura.                        |
| Delete          | Remove o passo selecionado.                       |
| Alt+↑ / Alt+↓   | Move o passo selecionado.                         |

**Nota:** **Salvar** grava no servidor, e não em arquivo. O rascunho recebe um identificador (rsc\_...) que pode ser aberto de qualquer computador. Salvar não publica: a publicação é um ato separado.

**Nota:** Se o servidor estiver fora, o Studio guarda uma cópia local de recuperação. Ao reabrir, uma faixa **Há trabalho não salvo** oferece os botões **Recuperar** e **Descartar**. A cópia nunca é restaurada sozinha e sai quando o rascunho é salvo ou descartado.

**Importante:** Os grupos de **Abrir…** são diferentes. Abrir um **Rascunho** continua o trabalho; abrir um **Publicado** traz de volta algo que já está em uso. Confira o grupo antes de abrir.

## Paleta de atividades

Nesta funcionalidade é possível localizar uma atividade e arrastá-la para o canvas, adicionando um passo ao Robô.

A funcionalidade pode ser acessada através de: **Paleta à esquerda > Atividades**.

::Image[]{src="https://api.archbee.com/api/optimize/pu5VMc-2TW3GQX4ly5Xp7/16kWUEtlYoFaopBrEKFxV_image.png" size="144" alt="Paleta de atividades com a categoria Controle expandida" isUploading="false" width="1440" height="860" darkWidth="1440" darkHeight="860" showCaption="false"}

Paleta de atividades com a categoria Controle expandida

O cabeçalho **Atividades** mostra a quantidade total de atividades disponíveis. Abaixo, a lista é agrupada por categoria; **Controle** vem sempre primeiro e as demais seguem em ordem alfabética. Cada categoria mostra a quantidade de atividades que contém, mesmo recolhida.

Para adicionar um passo é necessário:

1. Clicar no nome da categoria para expandi-la.
2. Arrastar a atividade até uma zona de soltura do canvas.
3. Soltar. O passo é criado e pode ser editado em **Propriedades**.

Para buscar uma atividade é necessário:

1. Digitar no campo **Buscar atividade...**. A busca ignora acentos e maiúsculas e considera nome, identificador, categoria e descrição.
2. Arrastar a atividade encontrada. Durante a busca, todas as categorias com resultado ficam expandidas.

Cada atividade exibe uma cor, o nome e, quando houver, selos:

| Selo                                     | Significado                                                                |
| ---------------------------------------- | -------------------------------------------------------------------------- |
| **priv**                                 | Atividade privilegiada. Exige allowlist na configuração do Robô (Máquina). |
| Nome de capacidade (por exemplo browser) | A Máquina precisa declarar essa capacidade para receber o Robô.            |

Passar o mouse sobre uma atividade mostra o identificador (por exemplo web.click) e a descrição.

**Nota:** O catálogo vem do Orchestrator. Se o servidor estiver fora, a paleta pode ficar sem atividades. Consulte Catálogo de atividades para uma visão por categoria.

**Nota:** Para ganhar espaço, recolha a paleta pelo botão **⟨**. A faixa vertical **ATIVIDADES** reabre a coluna.

## Propriedades de um passo

Nesta funcionalidade é possível configurar o passo selecionado no canvas: preencher os campos da atividade, escolher em quais variáveis gravar o resultado e definir o que fazer em caso de falha.

A funcionalidade pode ser acessada através de: **Painel direito > Propriedades**.

::Image[]{src="https://api.archbee.com/api/optimize/pu5VMc-2TW3GQX4ly5Xp7/l3fEyu4spSSNpDXN3t959_image.png" size="144" alt="Painel Propriedades com um passo selecionado" isUploading="false" width="1440" height="860" darkWidth="1440" darkHeight="860" showCaption="false"}

Painel Propriedades com um passo selecionado

Sem passo selecionado, o painel pede para selecionar um passo no fluxo. Se a atividade do passo não está registrada neste Studio, o painel avisa que o pacote correspondente precisa ser instalado.

Para editar um passo é necessário:

1. Clicar no cabeçalho do passo no canvas.
2. Preencher os campos na aba **Propriedades**.
3. Conferir a aba **Diagnosticos** do painel inferior para ver se algum campo foi recusado.

### Seções do painel

| Seção                  | Conteúdo                                                                                         |
| ---------------------- | ------------------------------------------------------------------------------------------------ |
| **Componente**         | Nome da atividade, identificador (por exemplo web.click), categoria e descrição. Não é editável. |
| **Rotulo no fluxo**    | Como o passo aparece no desenho. Vazio usa o nome da atividade.                                  |
| Campos da atividade    | Um campo por entrada da atividade. Campos obrigatórios têm asterisco (\*).                       |
| **Saidas**             | Para cada saída, o nome da variável que a recebe, em "gravar em qual variavel...".               |
| **Tratadores**         | Aparece apenas em atividades idempotentes. Campo **Notificar quando este passo mudar**.          |
| **Tratamento de erro** | **Se este passo falhar**.                                                                        |
| **Anotacao**           | Texto livre: por que o passo existe e o que verificar quando falhar.                             |
| **Identificador**      | Chave estável do passo, somente leitura. Aparece no log.                                         |

### Marcas nos campos

| Marca       | Significado                                                  |
| ----------- | ------------------------------------------------------------ |
| **fx**      | O campo inteiro é uma expressão, sem necessidade de \{\{ }}. |
| **literal** | O conteúdo chega intocado, sem interpolação.                 |
| **segredo** | Valor sensível, ocultado no log.                             |

Conforme a atividade, o campo é uma caixa de texto, número, caixa de seleção, lista de opções, texto longo ou código, seletor de arquivo (botão **...**) ou editor de seletor. Consulte Seletores e Element Spy.

### Tratamento de erro

Em **Se este passo falhar**, escolha:

| Opção                      | Efeito                                                                                                                                                 |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Interromper o processo** | Padrão. A falha interrompe o Robô.                                                                                                                     |
| **Registrar e continuar**  | Registra a falha e segue. O campo **Guardar a mensagem em** recebe o nome de uma variável para guardar a mensagem de erro.                             |
| **Tentar novamente**       | Repete o passo. Os campos **Tentativas** (padrão 3) e **Espera inicial (ms)** (padrão 1000) controlam a repetição; o intervalo dobra a cada tentativa. |

Para tratar uma falha com mais controle, use as atividades de **Controle** **Tentar / Capturar** e **Tentar novamente**. Consulte Catálogo de atividades.

**Nota:** Campos de caminho têm o botão **...** para escolher um arquivo. O campo também aceita expressão, como \{\{ pasta }}/arquivo.csv.

**Importante:** Campos obrigatórios vazios, valores fora das opções e expressões inválidas aparecem em **Diagnosticos** e impedem **Executar** e **Publicar**.

## Variáveis e expressões

Nesta funcionalidade é possível declarar os **argumentos** (contrato de entrada e saída) e as **variáveis** do Robô, e usar seus valores nos campos dos passos por meio de **expressões** entre chaves duplas, como \{\{ total \* 1.1 }}.

A funcionalidade pode ser acessada através de: **Painel direito > Variaveis**.

::Image[]{src="https://api.archbee.com/api/optimize/pu5VMc-2TW3GQX4ly5Xp7/Nc3uV9pCJvk9pvmRL-val_image.png" size="144" alt="Aba Variaveis com argumentos e variáveis declarados" isUploading="false" width="1440" height="860" darkWidth="1440" darkHeight="860" showCaption="false"}

Aba Variaveis com argumentos e variáveis declarados

### Argumentos e variáveis

A aba **Variaveis** tem duas seções.

**Argumentos** é o contrato do Robô com quem o chama. Cada linha tem nome, direção e tipo:

| Direção     | Significado                              |
| ----------- | ---------------------------------------- |
| **entrada** | O valor chega de fora ao iniciar o Robô. |
| **saida**   | O valor é devolvido a quem chamou.       |
| **ambos**   | Entra e sai.                             |

**Variaveis** guarda valores de trabalho. Cada linha tem nome, tipo e **valor inicial**. Os tipos são string, number, boolean, date, array, object e any. Em array e object, o valor inicial é escrito como JSON.

Para declarar uma variável é necessário:

1. Abrir a aba **Variaveis**.
2. Clicar em **+ variavel**.
3. Preencher o nome, escolher o tipo e informar o **valor inicial**.

Para declarar um argumento é necessário:

1. Abrir a aba **Variaveis**.
2. Clicar em **+ argumento**.
3. Preencher o nome e escolher a direção e o tipo.

Para remover, clique em **✕** na linha. Durante a execução, cada variável declarada mostra o valor corrente abaixo da linha (a seta →).

**Nota:** Os nomes aceitam letras, dígitos e \_, e não podem começar por dígito. Nomes repetidos entre argumentos e variáveis são erro. Nomes iguais aos de funções internas (como text, date, list) geram aviso, porque escondem a função.

### Escopo

- Argumentos e variáveis declarados na aba **Variaveis** valem para o Robô inteiro.
- Se um passo grava uma saída em uma variável que não foi declarada, ela passa a existir apenas no bloco atual. O Studio avisa em **Diagnosticos**: declare a variável em **Variaveis** para usá-la depois.
- Algumas atividades criam variáveis visíveis só dentro do seu bloco: **Para cada item** expõe item e index (os nomes são configuráveis), e **Tentar / Capturar** expõe error no bloco **Capturar**.
- Um passo de dentro de um bloco enxerga as variáveis dos blocos de fora. Se houver nomes iguais, vale o mais interno.

### Expressões

Qualquer campo de texto aceita expressões entre \{\{ e }}. Campos marcados com **fx** são inteiramente uma expressão e dispensam as chaves.

| Exemplo                                           | Resultado                                                                        |
| ------------------------------------------------- | -------------------------------------------------------------------------------- |
| Olá \{\{ cliente.nome }}                          | Texto com o valor interpolado.                                                   |
| \{\{ itens }}                                     | Quando o campo é só uma expressão, o valor mantém o tipo (lista continua lista). |
| \{\{ total > 1000 ? 'Gerencial' : 'Automático' }} | Condicional.                                                                     |
| \{\{ pedido?.cliente ?? 'sem cliente' }}          | Encadeamento opcional e valor padrão.                                            |

Para escrever \{\{ literalmente, use \\\{\{. Campos marcados com **literal** não passam por interpolação.

**O que a linguagem aceita:** números, textos, true, false, null; acesso a.b e a\[0]; operadores + - \* / % \*\*, == != === !==, \< > \<= >=, && || ?? (também escritos and, or, not), !, in e o ternário ? :; listas \[1, 2] e objetos \{ a: 1 }.

**Não é aceito:** atribuição, function, new, this e spread. Um passo não altera variáveis dentro de uma expressão; use a atividade **Atribuir** (core.assign).

### Funções internas

| Grupo | Funções                                                                                                                               |
| ----- | ------------------------------------------------------------------------------------------------------------------------------------- |
| Raiz  | len, isEmpty, isBlank, coalesce, toString, toNumber, toBoolean, isValidCPF, isValidCNPJ                                               |
| text  | upper, lower, trim, deaccent, digits, padLeft, padRight, split, replace, contains, startsWith, endsWith, slice, match, matchAll, test |
| num   | parse (aceita 1.234,56 e 1,234.56), round, floor, ceil, abs, min, max, format, currency                                               |
| date  | now, today, parse (aceita dd/MM/yyyy), format, addDays, addMonths, diffDays, year, month, day, weekday, isBusinessDay                 |
| list  | length, first, last, join, sum, avg, count, unique, sort, reverse, slice, where, pluck                                                |
| obj   | keys, values, has, get, merge                                                                                                         |
| json  | parse, stringify                                                                                                                      |

Exemplos: \{\{ text.upper(nome) }}, \{\{ date.format(date.today(), 'dd/MM/yyyy') }}, \{\{ list.sum(list.pluck(itens, 'valor')) }}, \{\{ num.currency(total) }}.

Também estão disponíveis alguns métodos de texto, lista e número, como toUpperCase(), includes(), join() e toFixed().

**Nota:** Uma expressão com erro de sintaxe, função inexistente ou chamada a algo que não é função é **erro** em **Diagnosticos** e bloqueia **Executar** e **Publicar**. Uma variável não declarada é **aviso**, e o Studio sugere o nome mais parecido.

**Importante:** Segredos não devem ser digitados em campos nem em variáveis. Campos marcados com **segredo** são ocultados no log. Para credenciais, use o cofre, descrito em Orquestrador.

## Seletores e Element Spy

Nesta funcionalidade é possível apontar para um elemento de uma página web ou de um aplicativo Windows e gerar o **seletor** que o Robô usará para encontrá-lo. O seletor não é um texto único: é uma **lista ordenada de candidatos**, e o Robô tenta um a um até um casar. O **Element Spy** é a captura feita pelo botão **⌖ Capturar**.

A funcionalidade pode ser acessada através de: **Painel direito > Propriedades > campo de seletor (por exemplo, Elemento)** de uma atividade das categorias **Web** ou **Desktop**.

### Partes do campo de seletor

| Elemento                                               | Função                                                                |
| ------------------------------------------------------ | --------------------------------------------------------------------- |
| Saúde (**Forte**, **Razoavel**, **Fragil**, **Vazio**) | Avaliação de robustez do seletor, com uma frase de orientação abaixo. |
| N candidatos                                           | Quantidade de candidatos do seletor.                                  |
| **⌖ Capturar**                                         | Inicia o Element Spy.                                                 |
| **▶ Testar**                                           | Valida o seletor contra a tela ao vivo.                               |
| URL para abrir ao capturar                             | Somente web. Endereço aberto no navegador de captura.                 |
| **Candidatos, na ordem em que o robo tenta**           | Lista expansível dos candidatos.                                      |

Cada candidato mostra uma barra de confiança, a estratégia (css, xpath, text, role, testid ou uia para desktop) e o valor. Elementos dentro de um iframe exibem a linha "dentro de" com o caminho dos quadros.

### Capturar na web

Para capturar um elemento web é necessário:

1. Adicionar uma atividade de **Web**, como **Clicar em elemento**.
2. No campo de seletor, preencher a URL e clicar em **⌖ Capturar**. Um navegador é aberto.
3. Passar o mouse: o elemento sob o cursor é destacado.
4. Clicar no elemento para capturar. ESC cancela.
5. Expandir **Candidatos, na ordem em que o robo tenta** para conferir a lista.

### Capturar no desktop

Para capturar um elemento de aplicativo Windows é necessário:

1. Abrir o aplicativo alvo.
2. Adicionar uma atividade de **Desktop**, como **Clicar em elemento**.
3. Clicar em **⌖ Capturar**. O Studio é minimizado.
4. Clicar no elemento no aplicativo. ESC cancela.
5. O Studio volta com os candidatos gerados pela árvore de acessibilidade (UI Automation), como automationId, name, class e tipo de controle.

**Nota:** A captura e a gravação no desktop só funcionam no Windows.

### Testar e ajustar

Para testar um seletor é necessário:

1. Clicar em **▶ Testar**.
2. Ler o resultado: "Casou pelo candidato #N" ou "Nenhum candidato casou", com a lista dos tentados. Na lista, cada candidato recebe **casou** ou **falhou**.

Para ajustar os candidatos é necessário:

1. Expandir a lista de candidatos.
2. Usar **↑** e **↓** para reordenar e **✕** para remover.

Também é possível digitar um seletor manualmente (css, //xpath, text=..., role=...) no campo "Capture o elemento ou escreva um seletor".

### Como o Studio ordena os candidatos

A confiança de cada candidato mede quanto ele sobrevive a mudanças no sistema alvo. Em ordem decrescente, na web: data-testid, id estável, papel com nome acessível, name de formulário, aria-label, placeholder, texto visível, classe semântica, caminho CSS e XPath absoluto. Identificadores que parecem gerados automaticamente (como \:r1: ou sequências longas de dígitos) recebem confiança baixa. Candidatos que casam com mais de um elemento no momento da captura não entram.

**Nota:** Se o primeiro candidato falha e o segundo casa, o Studio sugere remover os anteriores, para o Robô não perder tempo tentando-os.

**Importante:** Um seletor com saúde **Fragil** costuma ser o primeiro a quebrar quando o sistema alvo muda. Prefira capturar novamente um elemento com identificador estável ou ajustar a ordem dos candidatos.

## Gravador

Nesta funcionalidade é possível operar um sistema normalmente e transformar cliques, digitação e navegação em passos do Robô. Existem dois gravadores: **Gravar web**, que abre um navegador, e **Gravar desktop**, que acompanha um aplicativo Windows já aberto.

A funcionalidade pode ser acessada através de: **Barra superior > Gravar web** ou **Barra superior > Gravar desktop**.

::Image[]{src="https://api.archbee.com/api/optimize/pu5VMc-2TW3GQX4ly5Xp7/bwUl4fzV_Ldbex1q51rYf_image.png" size="144" alt="Barra superior com os botões de gravação" isUploading="false" width="1440" height="860" darkWidth="1440" darkHeight="860" showCaption="false"}

Barra superior com os botões de gravação

Os botões ficam desabilitados enquanto um Robô está em execução.

### Gravar web

Para gravar uma navegação web é necessário:

1. Clicar em **Gravar web**. A janela **Gravar processo web** é aberta.
2. Informar o **Endereco inicial**, por exemplo https\://sistema.empresa.com.br. O endereço precisa começar com http.
3. Clicar em **● Iniciar gravacao**. O navegador abre no endereço.
4. Operar o sistema normalmente. A janela do Studio mostra a lista de ações registradas, com o tipo e o rótulo de cada uma.
5. Voltar ao Studio e clicar em **■ Parar e inserir**.

### Gravar desktop

Para gravar a operação de um aplicativo Windows é necessário:

1. Deixar aberto o aplicativo que será operado.
2. Clicar em **Gravar desktop**. A janela **Gravar processo no desktop** é aberta.
3. Clicar em **● Iniciar gravacao**. O Studio é minimizado.
4. Operar o aplicativo. Cada clique, campo preenchido e Enter ou tecla de função vira um passo.
5. Voltar ao Studio pela barra de tarefas ou por Alt+Tab e clicar em **■ Parar e inserir**.

### Resultado

Os passos entram no **fim do bloco principal** do Robô como **rascunho**, com rótulos legíveis e seletores com candidatos de reserva. Renomeie, parametrize e agrupe os passos antes de publicar.

Para descartar a gravação, clique em **Descartar** (durante a gravação) ou **Fechar** (antes de iniciar).

**Nota:** Campos de senha não são gravados. O gravador cria um passo de leitura do cofre no lugar do valor digitado. No desktop, o gravador lê o conteúdo do campo pela árvore de acessibilidade depois de você sair dele, e não registra as teclas digitadas.

**Nota:** Marcar uma caixa de seleção vira um passo, e não dois. No desktop, trocar de janela vira um passo **Anexar a janela**.

**Nota:** Se o Chromium empacotado não subir na máquina, o gravador web usa o Google Chrome ou o Microsoft Edge instalado e avisa na janela.

**Importante:** A gravação desktop só funciona no Windows. A gravação continua enquanto a janela de gravação estiver aberta.

## Depurar e executar

Nesta funcionalidade é possível executar o Robô desenhado a partir do próprio Studio, pausar em breakpoints, avançar passo a passo, acompanhar o valor das variáveis e ler o log e os problemas do desenho.

A funcionalidade pode ser acessada através de: **Barra superior > Executar** ou **Barra superior > Depurar**, e **Painel inferior > Saida / Diagnosticos**.

::Image[]{src="https://api.archbee.com/api/optimize/pu5VMc-2TW3GQX4ly5Xp7/sqEQCFU2ot8irdVg1cW6F_image.png" size="144" alt="Painel inferior com as abas Saida e Diagnosticos" isUploading="false" width="1440" height="860" darkWidth="1440" darkHeight="860" showCaption="false"}

Painel inferior com as abas Saida e Diagnosticos

### Executar

Para executar um Robô é necessário:

1. Conferir que a aba **Diagnosticos** não tem erros. Com erro, o botão **Executar** fica desabilitado e a dica mostra a quantidade de erros.
2. Clicar em **▶ Executar** ou pressionar F5.
3. Se o Robô tem argumento de entrada obrigatório sem valor inicial, informar o valor na janela exibida.
4. Acompanhar a execução no canvas e na aba **Saida**.

Durante a execução, o botão **▶ Executar** é substituído por **■ Parar**. Cada passo mostra seu estado: em execução, concluído, com falha (selo **erro** e o motivo abaixo do passo) ou desativado. Passos com mais de 10 ms mostram o tempo gasto.

**Nota:** O Studio executa o Robô na máquina em que está instalado. Atividades que dependem de capacidades que esta máquina não tem (por exemplo, browser ou windows) recebem o selo **precisa de** e, publicadas, rodam em uma Máquina que as tenha.

### Depurar

Para depurar um Robô é necessário:

1. Clicar no botão **⬤** de um passo para adicionar um breakpoint. O passo exibe o marcador **●**. Clicar novamente remove.
2. Clicar em **⏵ Depurar** ou pressionar Shift+F5.
3. Quando a execução chegar ao breakpoint, ela pausa e a barra superior mostra **▶ Continuar** e **⤼ Passo**.
4. Consultar os valores das variáveis na aba **Variaveis**.
5. Clicar em **⤼ Passo** para executar o passo seguinte e pausar de novo, ou em **▶ Continuar** para seguir até o próximo breakpoint ou o fim.
6. Clicar em **■ Parar** para encerrar.

**Nota:** Breakpoints só têm efeito com **Depurar**. Com **Executar**, eles são ignorados.

### Saida

A aba **Saida** lista as mensagens da execução, cada uma com horário, nível (info, warn, error e outros) e texto. Clicar em uma linha seleciona o passo correspondente no canvas. O número ao lado do nome da aba é a quantidade de linhas, em vermelho quando há erro.

| Controle        | Função                                   |
| --------------- | ---------------------------------------- |
| **⌫** (Limpar)  | Apaga as linhas.                         |
| **▼** / **▲**   | Recolhe ou expande o painel.             |
| **executando…** | Indica que há uma execução em andamento. |

O painel se expande sozinho ao iniciar uma execução. Se um passo falhou sem registrar nada no log, a aba informa que o motivo está escrito no próprio passo.

### Diagnosticos

A aba **Diagnosticos** lista os problemas encontrados no desenho, atualizados enquanto você edita. Cada item mostra um ícone, a mensagem e o código, com o identificador do passo quando houver. Clicar no item seleciona o passo.

| Ícone | Gravidade  | Efeito                                                                              |
| ----- | ---------- | ----------------------------------------------------------------------------------- |
| **✕** | Erro       | Bloqueia **Executar** e **Publicar**.                                               |
| **!** | Aviso      | Não bloqueia. Exemplo: variável não declarada, ou capacidade ausente nesta máquina. |
| **i** | Informação | Não bloqueia. Exemplo: variável declarada e nunca utilizada.                        |

Exemplos de erro: atividade que não existe, campo obrigatório vazio, valor fora das opções, expressão com sintaxe inválida, bloco obrigatório vazio, **Interromper laco** fora de um laço, identificadores duplicados.

**Nota:** Um Robô sem nenhum passo gera o aviso ROBO\_VAZIO: publicado assim, ele roda, reporta sucesso e não faz nada.

**Importante:** O mesmo motor executa o Robô no Studio, na linha de comando e na Máquina. Consulte Runner e linha de comando. O acompanhamento das execuções em produção está em Orquestrador.

## Publicar um Robô

Nesta funcionalidade é possível publicar o Robô no Orchestrator. A publicação cria uma **versão imutável** (identificador proc\_...), que é o que as Máquinas executam. O rascunho continua editável e fica ligado às publicações feitas a partir dele.

A funcionalidade pode ser acessada através de: **Barra superior > Publicar**.

::Image[]{src="https://api.archbee.com/api/optimize/pu5VMc-2TW3GQX4ly5Xp7/GaYERtZ1BZnTue_KbFVGE_image.png" size="144" alt="Janela Publicar no Orchestrator" isUploading="false" width="1440" height="860" darkWidth="1440" darkHeight="860" showCaption="false"}

Janela Publicar no Orchestrator

O botão **⇧ Publicar** fica desabilitado enquanto houver erro em **Diagnosticos**.

Para publicar um Robô é necessário:

1. Corrigir os erros da aba **Diagnosticos**.
2. Conferir o nome e a **versão** nos campos da barra superior. Para uma nova publicação, incremente a versão.
3. Clicar em **Salvar**, para que a publicação fique ligada ao rascunho.
4. Clicar em **⇧ Publicar**. A janela **Publicar no Orchestrator** é aberta.
5. Conferir a linha de status. **Conectado — N robo(s) disponivel(is)** indica que o servidor respondeu. Se aparecer "Nao foi possivel falar com o Orchestrator neste endereco", o botão **Publicar** permanece desabilitado.
6. Conferir o endereço em **Orchestrator** (somente leitura) e o nome e a versão em **Sera publicado**.
7. Clicar em **Publicar**.
8. Ler o resultado: **Publicado**, com nome, versão, id e o início do hash; ou **Falhou**, com o motivo.

**Nota:** O endereço é o do servidor em que você entrou e não pode ser editado na janela. A sessão só vale para esse servidor.

**Nota:** Abrir um Robô na lista **Abrir…** > **Publicados** traz de volta uma versão já publicada, com seu nome e versão (por exemplo, Nota fiscal · v1.0.0).

**Importante:** Publicar duas vezes a mesma versão é recusado. Incremente a versão antes de publicar novamente.

**Importante:** A publicação recusa um Robô sem passos, porque ele rodaria, reportaria sucesso e não faria nada.

Depois de publicado, o Robô pode ser usado em uma Orquestração, disparado e agendado pelo painel descrito em Orquestrador.

## Editor de Orquestrações

Nesta funcionalidade é possível encadear **Robôs já publicados** em um grafo: cada nó roda um Robô, e as ligações entre nós dizem quando cada um começa (depois de quem, e em que condição). Também é possível incluir aprovações humanas, marcos, prazo final e recursos compartilhados.

A funcionalidade pode ser acessada através de: **Barra superior > Orquestração**.

::Image[]{src="https://api.archbee.com/api/optimize/pu5VMc-2TW3GQX4ly5Xp7/BXgNAS5KKk_Oc2rrG_eX2_image.png" size="144" alt="Editor de Orquestrações com a lista de Robôs publicados e o Inspetor" isUploading="false" width="1440" height="860" darkWidth="1440" darkHeight="860" showCaption="false"}

Editor de Orquestrações com a lista de Robôs publicados e o Inspetor

Diferentemente do Robô (uma árvore de passos), a Orquestração é um **grafo**. Cada nó é uma unidade que roda sozinha em uma Máquina; o desenho define a ordem e a paralelização.

### Áreas da tela

| Área                      | Função                                                                                                         |
| ------------------------- | -------------------------------------------------------------------------------------------------------------- |
| Barra superior            | Novo, Abrir…, Salvar, Duplicar salvo, desfazer, inclusão de nós, arranjo, zoom e Publicar.                     |
| Lista de Robôs (esquerda) | Robôs publicados, com campo de filtro. Arraste para a tela ou dê duplo clique para criar um nó.                |
| Tela (centro)             | O grafo, com minimapa.                                                                                         |
| **Inspetor** (direita)    | Propriedades do nó selecionado ou da Orquestração. A aba **Assistente** pertence ao módulo de IA: consulte IA. |
| Rodapé da tela            | Quantidade de nós e dependências, identificador do rascunho e dicas de navegação.                              |
| **N ponto(s) a resolver** | Lista, na coluna esquerda, de pendências do desenho. Clicar em um item seleciona o nó.                         |

### Barra superior

| Botão                      | Função                                                                                                                                                   |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Novo**                   | Cria uma Orquestração vazia.                                                                                                                             |
| **Abrir…**                 | Lista **Rascunhos** e Orquestrações **Publicadas**.                                                                                                      |
| **Salvar**                 | Grava o rascunho no servidor.                                                                                                                            |
| **Duplicar salvo**         | Salva como um rascunho novo, com outro identificador.                                                                                                    |
| ↶ / ↷                      | Desfazer e refazer.                                                                                                                                      |
| **+ Nó**                   | Adiciona um nó vazio do tipo **Robô**.                                                                                                                   |
| **+ Aprovação**            | Adiciona um nó que para e espera uma pessoa decidir.                                                                                                     |
| **+ Marco**                | Adiciona um nó que não roda nada: junta caminhos e dá nome à etapa.                                                                                      |
| **Duplicar** / **Remover** | Atuam nos nós selecionados.                                                                                                                              |
| **Arrumar**                | Refaz o arranjo automático.                                                                                                                              |
| **Enquadrar**              | Ajusta o zoom para mostrar a Orquestração inteira.                                                                                                       |
| **−** / **+**              | Zoom.                                                                                                                                                    |
| Botão de conexão           | Mostra quantos Robôs foram carregados, ou **sem catálogo**. Clique para ver e editar o endereço do **Orchestrator** e o **Token**, e use **Reconectar**. |
| **Publicar**               | Publica a Orquestração.                                                                                                                                  |

### Criar uma Orquestração

Para criar uma Orquestração é necessário:

1. Clicar em **Orquestração** no seletor da barra superior e em **Novo**.
2. Arrastar um Robô da lista da esquerda para a tela, ou dar duplo clique nele. Repetir para cada Robô.
3. Ligar os nós: puxar a alça da base de um nó até outro nó. O Studio apaga durante o arrasto os destinos inválidos (por exemplo, os que criariam um ciclo).
4. Selecionar cada nó e configurar o **Inspetor**.
5. Na aba **Orquestração** do **Inspetor**, informar o nome, a versão, a descrição e o prazo.
6. Conferir a lista **N ponto(s) a resolver**.
7. Clicar em **Salvar** e depois em **Publicar**.

Para navegar na tela: a roda do mouse rola, Ctrl+roda dá zoom, Espaço+arrastar (ou botão do meio) move a tela e arrastar o fundo seleciona vários nós. As setas movem os nós selecionados (Shift multiplica o passo). Ctrl+A seleciona todos, Ctrl+D duplica, Delete remove e Esc limpa a seleção.

### Tipos de nó

| Tipo                 | Uso                                              |
| -------------------- | ------------------------------------------------ |
| **Robô**             | Roda um Robô publicado em uma Máquina.           |
| **Aprovação**        | Para e espera a decisão de uma pessoa.           |
| **Sub-orquestração** | Roda outra Orquestração e espera o desfecho.     |
| **Marco**            | Não roda nada: junta caminhos e dá nome à etapa. |

### Inspetor, aba Nó

| Seção                 | Campos                                                                                                                                                                                                                                                                                                          |
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **O que é**           | **Nome na tela**, **Identificador** (somente leitura), **Tipo** e, conforme o tipo, o **Robô** ou a **Orquestração a rodar**.                                                                                                                                                                                   |
| **Argumentos**        | Valor de cada argumento declarado pelo Robô. Aceita expressões como \{\{ particao }} e a saída de um nó anterior, no formato \{\{ nos.\<id do nó>.saida.campo }}.                                                                                                                                               |
| **Quando roda**       | Dependências do nó (uma por nó anterior), cada uma com uma condição: **quando terminar bem**, **quando falhar**, **de qualquer jeito** ou **por código de saída** (informe os códigos, como 0, 2, 3). Com mais de uma dependência, **Combinação** define se o nó **espera TODAS (E)** ou se **basta UMA (OU)**. |
| Dependências externas | **Espera um dado (dataset)** com **Partição**, ou **Espera outra orquestração** com **Vale execução de até (horas)**.                                                                                                                                                                                           |
| **Recursos**          | O que o nó precisa deter para rodar (licença, trava, janela de sistema). Cada recurso tem quantidade e modo **compartilhado** ou **exclusivo**. Botão **+ recurso**.                                                                                                                                            |
| **Comportamento**     | **A falha deste nó não reprova a orquestração** (nó acessório); **Prioridade**; **Onde roda**.                                                                                                                                                                                                                  |

Sem dependências, o nó começa junto com a Orquestração. Para remover uma dependência, use **remover** na linha dela, ou remova a aresta na tela.

### Onde roda

| Opção                                | Efeito                                                                                                                            |
| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
| **Qualquer máquina**                 | Qualquer Máquina da frota.                                                                                                        |
| **Um grupo de máquinas**             | Máquinas dos grupos informados em **Grupos** (por exemplo, financeiro, sp).                                                       |
| **Uma máquina específica**           | A Máquina escolhida em **Máquina**.                                                                                               |
| **A mesma máquina de outro nó**      | Herda a Máquina de um nó anterior (apenas nós dos quais este depende). Útil quando o passo depende de arquivos deixados no disco. |
| **A máquina de uma pessoa (Client)** | Execução atendida na Máquina de quem autorizar.                                                                                   |

Quando o nó fixa a Máquina, aparecem **Esperar no máximo (min)** e **Se ela não aparecer** (**Falhar o nó** ou **Cair para o grupo**).

**Nota:** **Cair para o grupo** serve para trabalho que roda em qualquer lugar. Para trabalho preso a uma tela, ele poderia terminar com sucesso na Máquina errada.

### Nó de Aprovação

| Campo                   | Função                                                                                                                           |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| **O que a pessoa vê**   | Título da tarefa.                                                                                                                |
| **Instruções**          | Texto de apoio.                                                                                                                  |
| **Prazo (minutos)**     | Vencido o prazo, o nó falha em vez de esperar para sempre.                                                                       |
| **Respostas possíveis** | Cada resposta tem um rótulo e um desfecho: **segue o caminho de sucesso** ou **segue o caminho de falha**. Botão **+ resposta**. |

### Inspetor, aba Orquestração

| Seção              | Campos                                                                                     |
| ------------------ | ------------------------------------------------------------------------------------------ |
| **A orquestração** | **Nome**, **Versão** e **Descrição**.                                                      |
| **Prazo**          | **Precisa terminar até** (horário) e, preenchido, **Avisar com quantos minutos de folga**. |
| **Resumo**         | Quantidade de nós, dependências e nós sem dependência.                                     |

### Pendências do desenho

A lista **N ponto(s) a resolver** aponta, entre outros: nó **Robô** sem Robô escolhido, Robô que não está publicado, **Sub-orquestração** sem alvo, aprovação sem título ou sem respostas possíveis, recurso sem nome (graves) e nó sem ligação com os demais, quando a Orquestração tem mais de dois nós (aviso).

**Nota:** O catálogo de Robôs, recursos, datasets e Máquinas vem do Orchestrator. Sem ele é possível desenhar, mas publicar e abrir do servidor dependem do catálogo.

**Nota:** Como no editor de Robôs, se o servidor estiver fora o Studio guarda uma cópia local de recuperação e oferece **Recuperar** ou **Descartar** na próxima abertura.

**Importante:** Publicar uma Orquestração cria uma versão para o Orchestrator. Se a publicação devolver avisos, eles aparecem na mensagem após o clique em **Publicar**. A operação das Orquestrações (execução, gatilhos, agenda e falhas) está em Orquestrador.

## Catálogo de atividades

Nesta funcionalidade é possível conhecer as categorias de atividades disponíveis para montar um Robô e saber onde consultar os campos, as saídas e os blocos de cada uma.

A funcionalidade pode ser acessada através de: **Paleta à esquerda > Atividades**.

::Image[]{src="https://api.archbee.com/api/optimize/pu5VMc-2TW3GQX4ly5Xp7/16kWUEtlYoFaopBrEKFxV_image.png" size="144" alt="Paleta de atividades com as categorias" isUploading="false" width="1440" height="860" darkWidth="1440" darkHeight="860" showCaption="false"}

Paleta de atividades com as categorias

O catálogo de referência é o arquivo docs/ACTIVITIES.md, **gerado automaticamente** a partir do esquema das atividades (o mesmo que alimenta a paleta). Ele lista cada atividade com identificador, descrição, entradas, saídas e blocos. Na versão atual, são **201 atividades em 28 categorias**. Para regenerá-lo, execute npm run catalog.

**Nota:** O número exibido no cabeçalho **Atividades** da paleta é o total de atividades registradas no ambiente e pode diferir do arquivo gerado se houver pacotes adicionais instalados.

### Categorias

| Grupo                 | Categorias (quantidade de atividades)                                                                                               | Para que servem                                                                                                                                                                                                                                                                                                         |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Fluxo                 | **Controle** (19)                                                                                                                   | Estrutura do Robô: **Sequencia**, **Se / Senao**, **Escolha (Switch)**, **Para cada item**, **Enquanto**, **Repetir ate**, **Em paralelo**, **Tentar / Capturar**, **Tentar novamente**, **Atribuir**, **Registrar mensagem**, **Aguardar**, **Chamar processo**, **Encerrar processo**, **Lancar erro**, entre outras. |
| Fluxo                 | **Script** (3), **Orquestracao** (5), **Humano** (1)                                                                                | Código embutido (Python, PowerShell, JavaScript); filas e assets do Orchestrator; pedido de decisão a uma pessoa.                                                                                                                                                                                                       |
| Interface             | **Web** (14)                                                                                                                        | Navegador: abrir, navegar, clicar, digitar, ler texto, extrair tabela, capturar tela.                                                                                                                                                                                                                                   |
| Interface             | **Desktop** (14)                                                                                                                    | Aplicativos Windows: abrir, anexar janela, clicar, preencher, ler, achar imagem na tela. Só no Windows.                                                                                                                                                                                                                 |
| Interface             | **Terminal 3270** (9)                                                                                                               | Mainframe: conectar, ler tela e região, digitar em campo, enviar tecla, aguardar texto.                                                                                                                                                                                                                                 |
| Dados e arquivos      | **Arquivos** (12), **Dados** (8), **Texto** (7), **Banco de dados** (3)                                                             | Operações com arquivos e transferência (SFTP), leitura e gravação de CSV e Excel, tratamento de texto, consultas e cargas em banco.                                                                                                                                                                                     |
| Dados e arquivos      | **Documentos** (9), **HTTP** (2), **E-mail** (2)                                                                                    | Leitura, OCR, classificação e extração de campos de documentos; chamadas e downloads HTTP; envio e leitura de e-mails.                                                                                                                                                                                                  |
| IA                    | **IA** (4)                                                                                                                          | Perguntas a modelos e chamadas de ferramentas MCP. Consulte IA.                                                                                                                                                                                                                                                         |
| Nuvem                 | **AWS** (8), **Azure** (8), **Google Cloud** (8), **OCI** (8)                                                                       | Armazenamento, segredos, chamadas de API e controle de máquinas virtuais em cada nuvem.                                                                                                                                                                                                                                 |
| Infraestrutura e TI   | **Infraestrutura de TI** (12), **Active Directory** (8), **Keycloak** (10), **Kubernetes** (8), **Zabbix** (11), **ServiceNow** (3) | Automação de servidores e contas, identidade, clusters, monitoramento e ITSM.                                                                                                                                                                                                                                           |
| Sistemas corporativos | **SAP** (2), **Salesforce** (2), **Protheus** (1)                                                                                   | Conectores para sistemas corporativos.                                                                                                                                                                                                                                                                                  |

### Como ler uma atividade

Em docs/ACTIVITIES.md, cada atividade traz as mesmas marcas exibidas no painel **Propriedades**:

| Marca            | Significado                                                                           |
| ---------------- | ------------------------------------------------------------------------------------- |
| \*               | Campo obrigatório.                                                                    |
| fx               | O campo inteiro é uma expressão.                                                      |
| literal          | O conteúdo chega sem interpolação.                                                    |
| segredo          | Valor sensível, ocultado no log.                                                      |
| **privilegiada** | Sujeita a allowlist na configuração da Máquina.                                       |
| **requer**       | Capacidade que a Máquina precisa declarar para receber o Robô (por exemplo, browser). |

Atividades com **Blocos** (como then e else em **Se / Senao**) abrem zonas de soltura dentro do passo no canvas.

**Nota:** Para listar as atividades no terminal, use npm run runner -- atividades, com --categoria \<nome> para filtrar. Consulte Runner e linha de comando.

**Importante:** Atividades marcadas como **privilegiada** só funcionam em uma Máquina cuja configuração as permita. Atividades que exigem capacidade (por exemplo, navegador ou interface Windows) só rodam em Máquinas que a declarem.

## Runner e linha de comando

Nesta funcionalidade é possível executar e validar um Robô sem abrir o Studio, usando o **Runner**, o motor de execução. O Studio, a linha de comando e a Máquina usam o mesmo motor, então um Robô se comporta igual nos três.

A funcionalidade pode ser acessada através de: **Terminal, na pasta do projeto: npm run runner -- \<comando>**.

Os Robôs são arquivos .nexo.json, e os exemplos do projeto ficam em examples/.

### Executar um Robô

Para executar um Robô pelo terminal é necessário:

1. Abrir um terminal na pasta do projeto.
2. Executar, por exemplo: npm run runner -- executar examples/01-hello-world.nexo.json --arg nome=Maria
3. Acompanhar a árvore de execução, o log ao vivo e o resultado final (**Successful** ou o erro, com o código).

Opções do comando executar:

| Opção                                    | Efeito                                                                                       |
| ---------------------------------------- | -------------------------------------------------------------------------------------------- |
| --arg nome=valor                         | Argumento de entrada. Pode ser repetida e aceita JSON (por exemplo, --arg itens='\[1,2,3]'). |
| --conferir                               | Calcula o que mudaria e **não aplica**. Para atividades de infraestrutura.                   |
| --depurar                                | Ativa breakpoints e passo a passo.                                                           |
| --json                                   | Emite os eventos como JSON em linhas.                                                        |
| --log \<nivel>                           | trace, debug, info, warn ou error.                                                           |
| --saida \<arquivo>                       | Grava o resultado do job em JSON.                                                            |
| --pasta \<pasta>                         | Pasta de artefatos do job.                                                                   |
| --orquestrador \<url> e --token \<token> | Usa o Orchestrator para assets e filas.                                                      |

O código de saída é 0 quando o Robô termina com sucesso, 1 quando falha e 2 quando o comando é usado incorretamente. Ctrl+C pede a parada do job; pressionar de novo força o encerramento.

### Validar sem executar

Para validar um Robô é necessário:

1. Executar npm run runner -- validar examples/03-fila-notas-fiscais.nexo.json.
2. Ler o resumo (quantidade de passos e profundidade) e a lista de problemas, os mesmos exibidos em **Diagnosticos** no Studio.
3. Conferir a última linha: **Documento valido.** ou a quantidade de erros que impedem a execução.

### Listar atividades

Execute npm run runner -- atividades para listar as atividades por categoria, ou npm run runner -- atividades --categoria Terminal para filtrar. A opção --json emite o esquema completo.

### Outros comandos

| Comando                          | Para que serve                                                                 |
| -------------------------------- | ------------------------------------------------------------------------------ |
| fila adicionar \<fila> '\<json>' | Enfileira um item de trabalho. Opções --ref (chave de negócio) e --prioridade. |
| chaves nova e assinar \<arquivo> | Gera uma chave e assina um pacote de Robô para publicação por script.          |
| orquestracao \<sub>              | Orquestração como código: validar, comparar, aplicar e puxar.                  |
| maquina                          | Registro e execução do agente em uma Máquina. Consulte Orquestrador.           |
| ajuda                            | Mostra todos os comandos.                                                      |

**Nota:** Os nomes antigos dos comandos (por exemplo, run, validate, agent e plan) continuam aceitos, para não quebrar tarefas agendadas e scripts existentes.

**Nota:** Sem --orquestrador, filas e assets usam o armazenamento local do Runner (pasta .nexo-data). Apagar a pasta zera esse estado.

**Importante:** Atividades que dependem de capacidades que o computador não tem (por exemplo, browser ou windows) falham na execução local. Para esses casos, publique o Robô e execute em uma Máquina que as declare. Consulte Publicar um Robô.
