--- id: AGD-0058 ticket: multi-frontend-compiler-vs-language-services title: Separar compilacao de servicos editoriais de frontend status: open created: 2026-07-15 resolved: decision: tags: [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`. 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.