LSP e ferramentas para agentes
O Catenary roda um único servidor de linguagem para o seu código e o divide entre o editor e os agentes. Ele também dá a cada agente que roda num terminal do Catenary um conjunto de ferramentas para conduzir a IDE: abrir um arquivo, dividir um terminal, começar uma tarefa, pedir a sua atenção. Não há nada para configurar.
Um servidor de linguagem, compartilhado
Os arquivos TypeScript, JavaScript e Python são atendidos por um motor local: typescript-language-server e pyright, que vêm com o app. Há um servidor por workspace, worktree e linguagem, e ele reinicia sozinho se cair. Quando o projeto tem o próprio typescript em node_modules, é esse que vale.
No editor, ele move o autocompletar, o hover, o ir para a definição, as referências, o renomear, os diagnósticos e o realce semântico.
O mesmo motor, para os agentes
Cinco ferramentas, só de leitura, põem esse servidor nas mãos do agente:
| Ferramenta | O que devolve |
|---|---|
catenary_lsp_definition | Onde um símbolo é definido, pela posição ou pelo nome |
catenary_lsp_references | Onde ele é usado |
catenary_lsp_hover | A assinatura de tipo completa e a documentação |
catenary_lsp_document_symbols | A árvore de símbolos de um arquivo |
catenary_lsp_diagnostics | Erros e avisos, de um arquivo ou do workspace inteiro |
O agente lê o que você vê. Se o arquivo está aberto no editor com mudanças não salvas, a resposta sai desse buffer, e não do disco, e cada resultado diz qual dos dois usou: source: "buffer" ou source: "disk". Enquanto o servidor ainda indexa, o resultado também avisa, e uma lista de diagnósticos vazia ainda não quer dizer que está tudo certo.
Registrado sozinho
Quando um terminal abre, o Catenary acrescenta um servidor chamado catenary à configuração MCP de cada CLI de agente instalada na máquina: Claude Code, Codex, Antigravity, Cursor e OpenCode.
- Ele só mexe nos agentes que já rodaram ali.
- Ele nunca substitui uma entrada
catenaryque você mesmo escreveu. - Fora de um terminal do Catenary o servidor não lista ferramenta nenhuma, então a entrada não custa nada em outro lugar.
O Cursor pede uma vez para aprovar o servidor. Esse pedido é do Cursor.
As ferramentas
| Ferramenta | O que faz |
|---|---|
catenary_get_environment | Descreve a sessão em que o agente está rodando |
catenary_open_file | Abre um arquivo no editor, numa linha e coluna |
catenary_split_terminal | Divide o terminal do agente; o painel novo começa na mesma pasta |
catenary_create_worktree | Cria uma branch isolada |
catenary_create_task | Uma worktree mais uma sessão de terminal; com uma instrução, também lança um agente ali |
catenary_capture_preview | Captura o navegador embutido da sessão |
catenary_get_canvas_state | Lista as sessões, os painéis, as branches e as portas abertas do workspace |
catenary_request_attention | Abre um pedido no sino. Ele pede a sua atenção; nunca concede uma aprovação |
Elas obedecem às mesmas chaves da CLI catenary, em Configurações, CLI: uma coluna Read e uma Control para cada superfície (Browser, Terminal, Panels, Editor, Notifications, Boards, Maestro). Todas vêm ligadas. Desligue Command-line control (Catenary CLI) e nenhuma ferramenta funciona.
Uma caixa de entrada estruturada
O catenary_delegate_task deixa uma mensagem na fila de outro agente do mesmo workspace: uma instrução e, se precisar, uma lista de arquivos. Nada é digitado no terminal dele. O outro agente lê com catenary_read_inbox e confirma com catenary_ack_message.
- Ler marca a mensagem como entregue, e confirmar a marca como recebida. Nenhum dos dois quer dizer que a tarefa terminou.
- Repetir com o mesmo
operationIdnunca cria uma duplicata. - Uma mensagem que ninguém lê expira em 24 horas.
Para uma pergunta que precisa de resposta agora, o catenary ask continua sendo o caminho mais curto. Veja fios de conexão.