prometeu-studio/discussion/workflow/agendas/AGD-0058-multi-frontend-compiler-vs-language-services.md
2026-07-15 09:40:13 +01:00

2.8 KiB

id ticket title status created resolved decision tags
AGD-0058 multi-frontend-compiler-vs-language-services Separar compilacao de servicos editoriais de frontend accepted 2026-07-15
compiler
compiler-general
studio
lsp
editor
frontend
multi-frontend

Agenda - Separar compilacao de servicos editoriais

Objetivo

Domain owner: compiler/general, com impacto em studio/lsp.

Separar o contrato necessario para build do contrato necessario para IDE, permitindo frontends progressivos: compilacao, diagnostics/highlighting e experiencia editorial completa.

Contexto atual

O PBS fornece compilacao e varias superficies editoriais. Historicamente o Studio e o LSP podem assumir que semantic tokens, diagnostics e navegação vêm do mesmo servico PBS.

Escopo

  • Identificar interfaces atuais de compilacao e editor.
  • Definir capabilities opcionais para servicos editoriais.
  • Garantir que ausencia de completion, hover, definition ou semantic tokens nao invalide um frontend compilavel.

Fora de escopo

  • Implementar novas features editoriais.
  • Redesenhar todo o LSP.
  • Criar frontend real sem recursos editoriais.

Arquivos e componentes a inspecionar

  • prometeu-lsp/prometeu-lsp-api/...
  • prometeu-lsp/...
  • prometeu-studio/src/main/java/p/studio/...editor...
  • prometeu-compiler/frontends/prometeu-frontend-pbs/...
  • prometeu-compiler/prometeu-build-pipeline/...

Alteracoes propostas

Opcao A: FrontendProvider entrega FrontendCompiler obrigatorio e Optional<FrontendLanguageService>.

Opcao B: dividir language service em interfaces menores, como diagnostics, completion, hover, definition e semantic tokens.

Recomendacao inicial: mapear primeiro os consumidores. Se o LSP ja resolve features separadamente, usar interfaces menores; caso contrario, um language service opcional com capabilities pode ser suficiente.

Estrategia de implementacao

Caracterizar o comportamento PBS atual, definir fallback para recurso ausente e migrar chamadas editoriais para consulta de capability antes de invocar servico.

Testes necessarios

  • Frontend provider compilavel sem language service nao quebra build.
  • LSP/Studio tratam feature ausente como resposta vazia ou unsupported documentado.
  • PBS continua expondo as mesmas respostas editoriais.

Criterios de aceitacao

  • Compilacao nao depende de APIs de IDE.
  • Recursos editoriais ausentes sao opcionais.
  • O contrato permite os niveis 1, 2 e 3 descritos no alinhamento.

Riscos

  • Introduzir Optional em excesso sem uma politica consistente de fallback.
  • Acoplar diagnostics de build e diagnostics editoriais sem separar latencia e escopo.

Decisoes que devem ser registradas

  • Granularidade final das interfaces editoriais.
  • Comportamento padrao para capability ausente.
  • Relacao entre diagnostics de compilacao e diagnostics de editor.