Pular para o conteúdo principal
Atualizado em Oct 18, 2026

Bibliotecas

Bibliotecas permitem que sua empresa escreva uma lógica uma vez e a reutilize em todo lugar: em workflows, passos de código, agentes e formulários. Cada biblioteca é publicada em versões numeradas que nunca mudam, e cada lugar que usa uma biblioteca escolhe uma versão exata. Editar ou publicar uma biblioteca nunca altera algo que já a usa; passar para uma versão mais nova é sempre uma decisão explícita.

A lista de Bibliotecas com bibliotecas CEL, JavaScript e Python

Todas as bibliotecas da sua empresa em uma lista, com a versão mais recente e o estado de cada uma.

Escolhendo CEL, JavaScript ou Python​

CELJavaScriptPython
O que você escreveFunções tipadas com corpo em expressão CELUm módulo JavaScript com exportações nomeadasUm módulo Python
Onde você usaQualquer expressão CEL: condições, templates, formulários, ferramentas de agentesPassos Executar código em JavaScriptPassos Executar código em Python
Onde rodaNo avaliador CEL, sem I/OEm um isolate V8; início rápido, até 30 s por execuçãoEm um contêiner com pacotes de dados; até 120 s por execução
Bom paraRegras pequenas e formatação usadas dentro de expressõesCódigo geral, transformação de dados, chamadas HTTPPlanilhas, PDFs, imagens e outros trabalhos com dados

Bibliotecas CEL têm editor próprio: veja Bibliotecas CEL. O restante desta página trata das bibliotecas JavaScript e Python.

Encontrar e criar uma biblioteca​

Abra Automações → Bibliotecas. A lista mostra cada biblioteca com o nome do módulo, a versão mais recente, a última atualização e o estado: Publicada, Rascunho, Mudanças não publicadas ou Arquivada. Filtre por linguagem, pesquise pelo nome e ative Mostrar arquivadas para incluir as bibliotecas arquivadas.

Para criar uma, escolha Nova biblioteca e depois CEL, JavaScript ou Python. Para JavaScript e Python:

  • Linguagem fica fixa depois que a biblioteca é criada.
  • Nome é o que as pessoas veem no app.
  • Nome do módulo é como o código se refere à biblioteca, por exemplo text_helpers. Ele é preenchido a partir do nome enquanto você digita, e você pode alterá-lo antes de criar a biblioteca. Usa letras minúsculas, dígitos e sublinhados, começa com uma letra e tem no máximo 48 caracteres; palavras-chave da linguagem e nomes do runtime são reservados. Não pode ser alterado depois, e uma biblioteca arquivada mantém o seu nome.
  • Descrição é opcional.

A prévia abaixo do nome do módulo mostra como um passo de código vai chamar a biblioteca.

O editor​

Uma biblioteca de código abre com uma linha de status no topo. Ela diz em que ponto a biblioteca está, como "Ainda sem testes", "1 teste falha" ou "Pronta para publicar a v2", e reúne três ações:

  • Verificar sintaxe confere o código e os imports sem executá-lo.
  • Executar testes roda os testes da biblioteca.
  • Publicar vN cria a próxima versão. O botão diz qual versão vai criar e, quando está indisponível, explica o motivo ao passar o mouse.

Salvar a biblioteca nunca executa código. Verificar sintaxe e Executar testes usam o sandbox de código e contam no uso de processamento.

O editor tem seis abas:

AbaPara que serve
CódigoO código do módulo. Problemas encontrados por Verificar sintaxe aparecem sublinhados na linha. Quebrar linhas quebra as linhas longas; Visão ampla dá a página inteira ao editor.
TestesTestes com nome, cada um com sua Entrada JSON, e o resultado da última execução.
ImportaçõesOutras bibliotecas que este módulo usa, cada uma fixada em uma versão exata.
VersõesCada versão publicada, com data, resultado dos testes e exportações alteradas. Compare uma versão com a anterior ou exporte o código dela.
Usada emWorkflows e outras bibliotecas que usam esta biblioteca, agrupados por versão, com quantas versões cada um está atrás.
ConfiguraçõesNome, descrição, baixar o rascunho e arquivar a biblioteca.

O editor de biblioteca de código com a linha de status, as ações e as abas

Escrevendo bibliotecas JavaScript​

Uma biblioteca JavaScript é um módulo ES. Exporte o que outros códigos devem usar:

/** Trims a name and collapses repeated spaces. */
export function normalizeName(name) {
return String(name ?? "").trim().replace(/\s+/g, " ");
}

export const DEFAULT_COUNTRY = "BR";
  • Funções, classes e constantes podem ser exportadas. Funções async exportadas funcionam, e um passo de código pode usar await com elas.
  • Para usar outra biblioteca, adicione-a em Importações e importe-a: import * as text_helpers from "autotalk_libraries/text_helpers"; ou import {normalizeName} from "autotalk_libraries/text_helpers";.
  • await no nível do módulo e import() dinâmico não são suportados.
  • Uma biblioteca tem as mesmas APIs de sandbox de um passo de código, incluindo fetch, e cada execução recebe instâncias novas dos módulos.
  • Um comentário /** ... */ logo acima de uma exportação vira a descrição mostrada no passo de código e no autocompletar.

Escrevendo bibliotecas Python​

Uma biblioteca Python é um módulo:

from decimal import Decimal, ROUND_HALF_UP

TAX_RATE = Decimal("0.18")

def money(value):
"""Rounds a value to cents."""
return Decimal(str(value)).quantize(Decimal("0.01"), rounding=ROUND_HALF_UP)
  • As exportações da biblioteca são as funções, classes e atribuições de nível superior. Nomes que começam com _ e nomes que o módulo apenas importa ficam de fora, então Decimal acima não é uma exportação. Para escolher as exportações você mesmo, defina __all__.
  • Para usar outra biblioteca, adicione-a em Importações e depois from autotalk_libraries import text_helpers.
  • Para HTTP, importe fetch do runtime: from autotalk_runtime import fetch, FetchError. A biblioteca padrão e os pacotes incluídos no executor Python estão disponíveis.
  • Passe os dados do chamador para suas funções como argumentos; uma biblioteca não lê a entrada do passo diretamente.
  • A docstring de uma função vira a descrição mostrada no passo de código e no autocompletar.

Testes​

Um teste é um script curto que chama a biblioteca e falha quando algo está errado: lança um erro em JavaScript ou falha um assert em Python. Cada teste pode ter uma Entrada JSON, disponível como input em JavaScript e INPUT em Python.

if (autotalk_libraries.text_helpers.normalizeName(input.name) !== "Ada Lovelace") { // input: {"name": " Ada Lovelace "}
throw new Error("Unexpected name");
}
from autotalk_libraries import order_math

assert str(order_math.money(INPUT["value"])) == "10.50" # INPUT: {"value": 10.499}

Adicionar teste começa um teste que chama a primeira função exportada, com os parâmetros vindos da entrada. Depois de uma execução, cada teste mostra Passou com a duração, ou Falhou com a linha que falhou e os logs. Editar um teste depois de uma execução marca o resultado como desatualizado.

Os testes rodam no sandbox normal, um após o outro, em sandboxes novos. Eles podem acessar a rede e gravar arquivos, e cada execução conta no uso de processamento. Até 20 testes rodam por biblioteca, em até 120 segundos no total.

Publicação e versões​

Salve a biblioteca e escolha Publicar vN. A confirmação mostra o que a nova versão muda em relação à anterior: exportações adicionadas e removidas, quantas linhas mudaram (com a diferença completa a um clique), quantos testes vão rodar e quem usa a versão atual. A publicação confere o código salvo e roda todos os testes de novo; um teste com falha impede a publicação. Uma biblioteca sem testes pode ser publicada, e a versão fica marcada como não testada.

As versões são numeradas v1, v2, v3 na ordem de publicação e nunca mudam. Publicar uma versão nova não move nada para ela: tudo que usa a biblioteca continua na sua versão até alguém atualizar.

Usando uma biblioteca em um passo de código​

Em um passo Executar código, a caixa Bibliotecas acima do código lista as bibliotecas que o passo usa:

  • Adicionar biblioteca fixa uma biblioteca publicada da mesma linguagem, na versão mais recente.
  • O seletor de versão mostra cada versão, com (mais recente) ao lado da mais nova. Quando existe uma versão mais nova, Atualizar para vN abre uma revisão das exportações e do código que mudam antes de você aplicar.
  • Abra a linha de uma biblioteca para ver as exportações com seus parâmetros e descrição. O botão de inserir ao lado de cada uma adiciona uma chamada na posição do cursor, em uma linha própria, com o primeiro parâmetro selecionado. Em Python, ele também adiciona o import no topo se estiver faltando.

Um passo de código com uma biblioteca fixada e suas exportações

Chame a biblioteca no passo:

return autotalk_libraries.text_helpers.normalizeName(input.name);
import json
from autotalk_libraries import order_math

result = order_math.money(INPUT["value"])
with open("/work/out/output.json", "w") as output:
json.dump(str(result), output)
  • Um passo JavaScript só alcança as bibliotecas fixadas nele; os imports da própria biblioteca não ficam expostos ao passo.
  • Um passo Python devolve o resultado gravando /work/out/output.json.
  • Mudar a Linguagem do passo remove as bibliotecas fixadas. A confirmação lista quais são, e o código continua como está, então ajuste-o para a nova linguagem.

Usada em e arquivamento​

Usada em mostra cada workflow e biblioteca que fixa esta biblioteca, agrupados por versão, para você ver quem ainda está em uma versão antiga antes de mudar algo.

Arquivar uma biblioteca (Configurações → Arquivar biblioteca) impede novas versões e novas fixações. Tudo que já a fixa continua funcionando. O arquivamento não pode ser desfeito: o rascunho não pode mais ser editado, o nome do módulo continua ocupado e as versões publicadas são mantidas. Não coloque segredos no código de uma biblioteca.

Limites​

LimiteValor
Imports diretos por passo ou biblioteca24
Bibliotecas em um grafo de dependências32
Profundidade de imports16
Código por módulo ou teste64 KiB
Rascunho inteiro (código e testes)512 KiB
Pacote de código de uma execução2 MiB (separado dos limites de arquivos de entrada)
Testes por biblioteca20
Tempo total dos testes120 segundos

Permissões e escopos da API​

  • Quem pode ler uma biblioteca pode fixá-la e usá-la.
  • Criar, editar, verificar, testar, publicar e arquivar uma biblioteca são ações restritas ao proprietário da empresa. Os demais membros veem as bibliotecas somente para leitura.
  • Com uma chave de API, criar e editar bibliotecas, verificar, testar, publicar e arquivar exigem automation:admin. Ler bibliotecas e suas versões exige data:read.

MCP e API​

Um cliente MCP pode fazer tudo que o editor faz:

  • get_code_library_reference lista as bibliotecas publicadas que você pode ler, ou descreve versões exatas: exportações com parâmetros e descrição, como chamá-las e se existe uma versão mais nova. Exige data:read.
  • Crie e edite bibliotecas com create_document e update_document em code_libraries. Envie o draftRevision que você leu com a biblioteca, para nunca sobrescrever a edição de outra pessoa.
  • Use execute_function para validateDraft, testDraft e publish (com expectedDraftRevision), e para listReleases, getRelease, listDependents e archive.
  • Fixe versões exatas como codeLibraries: [{libraryId, releaseId}] em um passo de código, ou na ferramenta run_code para uma execução avulsa.

O guia libraries do servidor MCP (get_guide) explica quando um assistente deve reutilizar ou criar uma biblioteca.

Erros comuns​

CódigoO que significa
code_library_draft_conflictA biblioteca mudou desde que você a abriu. Recarregue e tente de novo.
code_library_owner_requiredSó o proprietário da empresa pode verificar, testar, publicar ou arquivar.
code_library_archivedA biblioteca está arquivada, então não pode ser editada, publicada nem fixada de novo.
code_library_invalid_slugO nome do módulo não segue as regras ou é reservado.
code_library_language_mismatchA linguagem de uma biblioteca fixada é diferente da do passo ou da biblioteca que a usa.
code_library_dependency_cycleBibliotecas importam umas às outras em ciclo.
code_library_syntax_errorO código não pode ser lido; o editor sublinha a linha.
code_library_suite_timeoutOs testes levaram mais de 120 segundos no total.
code_library_not_foundA biblioteca não existe ou você não pode lê-la.
code_library_operation_reusedO mesmo operationId ou Idempotency-Key já executou estas verificações. Tente de novo com uma chave nova.