Adiciona TaskProvider para executar/testar projetos Liquido pelo edit… - #124
Merged
leonelsanchesdasilva merged 1 commit intoJul 27, 2026
Conversation
…or (DesignLiquido#105) A extensão não tinha como executar um projeto Liquido a partir do editor: sem TaskProvider, sem terminal, sem botão. Todo o ciclo dependia de um terminal externo. Havia ainda três activationEvents apontando para comandos inexistentes (getProgramName, runEditorContents, debugEditorContents). Este commit adiciona tarefas para os comandos do CLI liquido (servidor, novo, gerar, documentar, banco iniciar, testes), com estratégias distintas por ambiente, seguindo a orientação de viabilidade Web da issue: - Desktop (fontes/tarefas/provedor-tarefas-desktop.ts): ShellExecution chamando o binário local node_modules/.bin/liquido. O servidor é marcado como tarefa de fundo, em painel dedicado; os demais são de execução curta. - Web (fontes/tarefas/provedor-tarefas-web.ts): o host Web não tem shell nem child_process, então usa CustomExecution — o callback devolve um Pseudoterminal que roda como JS no web worker (fontes/tarefas/pseudoterminal-liquido.ts). O servidor de desenvolvimento, que exige HTTP real, é omitido no Web. - Catálogo compartilhado (fontes/tarefas/comandos-liquido.ts) descreve cada comando, seus argumentos de CLI e sua disponibilidade por ambiente. Contribuições no package.json: taskDefinitions do tipo 'liquido', seis comandos de conveniência (extension.designliquido.liquido.*) que disparam a tarefa correspondente, e um botão de iniciar servidor na barra de título do editor para arquivos Delégua e Pituguês. Os três activationEvents órfãos foram removidos. Escopo honesto sobre o ambiente Web: a base já roteia as tarefas de scaffolding por CustomExecution e o servidor é corretamente tratado como indisponível no Web, mas a execução de fato dos comandos de scaffolding dentro do worker depende da API JS do Liquido publicada para Web, ainda não disponível — o pseudoterminal reporta esse estado com clareza, em vez de falhar em silêncio. A evolução do servidor no Web (Service Worker interceptando fetch, ou WebContainers) fica para um passo seguinte. Testes: novo testes/tarefas/provedores-tarefas.test.ts (12 casos) cobrindo o catálogo, o provedor desktop (ShellExecution com os argumentos corretos, servidor como background/painel dedicado, resolveTask), o provedor Web (CustomExecution, servidor omitido) e o pseudoterminal. Mock de vscode.tasks adicionado aos testes de extensão. Fixes DesignLiquido#105
leonelsanchesdasilva
merged commit Jul 27, 2026
f249146
into
DesignLiquido:principal
4 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Executar e testar projetos Liquido a partir do editor (TaskProvider)
Fixes #105
Problema
A extensão não registrava
TaskProvider, não criava terminais e não expunha botão de execução. Não havia caminho no editor para subir o servidor de desenvolvimento, criar um projeto (liquido novo), gerar código (liquido gerar), gerar documentação OpenAPI ou rodar a suíte de testes — todo o ciclo dependia de alternar para um terminal externo e decorar comandos. Havia ainda trêsactivationEventsapontando para comandos inexistentes (getProgramName,runEditorContents,debugEditorContents).Solução
Um
TaskProviderque expõe os comandos do CLIliquido(servidor, novo, gerar, documentar, banco iniciar, testes), com estratégias distintas por ambiente — seguindo diretamente a orientação de viabilidade Web dada na issue:Desktop (
fontes/tarefas/provedor-tarefas-desktop.ts) →ShellExecutionchamando o binário localnode_modules/.bin/liquido. O servidor é marcado como tarefa de fundo (isBackground), em painel dedicado; os demais são de execução curta.Web (
fontes/tarefas/provedor-tarefas-web.ts) → o host de extensão Web não tem shell nemchild_process, entãoShellExecutionnão funciona. Cada comando usaCustomExecution: o callback devolve umPseudoterminal(fontes/tarefas/pseudoterminal-liquido.ts) que roda como JS dentro do web worker. O servidor de desenvolvimento, que exige HTTP real, é corretamente omitido no Web.Catálogo compartilhado (
fontes/tarefas/comandos-liquido.ts) descreve cada comando, seus argumentos de CLI e sua disponibilidade por ambiente — a única fonte de verdade que os dois provedores consomem.Contribuições no
package.jsontaskDefinitionsdo tipoliquido(com a propriedadecomando);extension.designliquido.liquido.*que disparam a tarefa correspondente (permitindo atalhos e botões);editor/title/run) para arquivos Delégua e Pituguês;activationEventsórfãos.Correção acessória (activation events órfãos)
Os três
activationEventsque apontavam para comandos inexistentes (getProgramName,runEditorContents,debugEditorContents) — vestígios de um modelo de execução nunca implementado — foram removidos, já que este PR entrega o modelo de execução de fato. Fecha também a issue de limpeza mencionada no corpo do #105.Observação de escopo (ambiente Web)
O escopo Web foi implementado com honestidade sobre o que é verificável hoje:
CustomExecutione trata o servidor como indisponível no Web (com mensagem clara, não falha silenciosa);fetchpara um host virtual, ou WebContainers, conforme descrito na issue) fica para um passo seguinte, sobre a fundação que este PR estabelece.No desktop, todos os comandos funcionam via
ShellExecutionsem ressalvas.Testes
Novo
testes/tarefas/provedores-tarefas.test.ts(12 casos):requerServidor,comandoPorIdresolve e recusa desconhecido;ShellExecutioncom o binário local e os argumentos corretos (incluindobanco iniciarcomo dois argumentos), servidor comoisBackgroundem painel dedicado,resolveTaskreconstrói conhecida e ignora desconhecida;CustomExecution,resolveTaskrecusa o servidor;Mock de
vscode.tasksadicionado aos testes de extensão (extensao.test.tseextensao-web.test.ts), pois oactivateagora registra o provedor de tarefas.Nota sobre a suíte de LMHT
Na execução completa da suíte, dois casos da versão atual de
testes/completude/lmht-provedor-completude.test.tsnaprincipalfalham de forma sensível à ordenação de suítes (vazamento dejest.mockentre workers). É pré-existente e não causado por este PR — reproduz-se naprincipalsem esta mudança, e é justamente o que o PR do achado A4 (completude de LMHT) reescreve e elimina.Checklist
ShellExecution; Web viaCustomExecution+PseudoterminalactivationEventsórfãos removidos