@semacode/cli 1.5.36 → 1.5.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENT_CONTEXT_PACK.json +80 -8
- package/LICENSE +1 -2
- package/SEMA_BRIEF.curto.txt +9 -6
- package/SEMA_BRIEF.md +240 -204
- package/SEMA_BRIEF.micro.txt +10 -6
- package/SEMA_INDEX.json +2087 -1907
- package/dist/agentContext.d.ts +19 -0
- package/dist/agentContext.js +26 -0
- package/dist/agentContext.js.map +1 -0
- package/dist/agentContextPack.d.ts +4 -0
- package/dist/agentContextPack.js +408 -0
- package/dist/agentContextPack.js.map +1 -0
- package/dist/agentContextTipos.d.ts +96 -0
- package/dist/agentContextTipos.js +55 -0
- package/dist/agentContextTipos.js.map +1 -0
- package/dist/agentEntryPoints.d.ts +13 -0
- package/dist/agentEntryPoints.js +435 -0
- package/dist/agentEntryPoints.js.map +1 -0
- package/dist/authorAnalise.d.ts +15 -0
- package/dist/authorAnalise.js +210 -0
- package/dist/authorAnalise.js.map +1 -0
- package/dist/authorPoliticas.d.ts +37 -0
- package/dist/authorPoliticas.js +340 -0
- package/dist/authorPoliticas.js.map +1 -0
- package/dist/billing/index.d.ts +1 -1
- package/dist/billing/index.js +6 -2
- package/dist/billing/index.js.map +1 -1
- package/dist/bridge.js +2 -0
- package/dist/bridge.js.map +1 -1
- package/dist/carregarModulos.d.ts +2 -0
- package/dist/carregarModulos.js +9 -0
- package/dist/carregarModulos.js.map +1 -0
- package/dist/cliArgs.d.ts +6 -0
- package/dist/cliArgs.js +70 -0
- package/dist/cliArgs.js.map +1 -0
- package/dist/contexto.js +2 -0
- package/dist/contexto.js.map +1 -1
- package/dist/controleComercialSupabase.js.map +1 -1
- package/dist/controleComercialSupabaseAdmin.js.map +1 -1
- package/dist/controleComercialSupabaseCadastro.js.map +1 -1
- package/dist/controleComercialSupabaseConsumo.js.map +1 -1
- package/dist/controleComercialSupabaseConta.js.map +1 -1
- package/dist/controleComercialSupabaseProfiles.js.map +1 -1
- package/dist/dev/index.js +2 -0
- package/dist/dev/index.js.map +1 -1
- package/dist/dev/watcher.d.ts +1 -0
- package/dist/dev/watcher.js +4 -0
- package/dist/dev/watcher.js.map +1 -0
- package/dist/docs/resolver.d.ts +1 -0
- package/dist/docs/resolver.js +4 -0
- package/dist/docs/resolver.js.map +1 -0
- package/dist/docs.d.ts +2 -56
- package/dist/docs.js +5 -502
- package/dist/docs.js.map +1 -1
- package/dist/docs.part01.d.ts +78 -0
- package/dist/docs.part01.js +347 -0
- package/dist/docs.part01.js.map +1 -0
- package/dist/docs.part02.d.ts +20 -0
- package/dist/docs.part02.js +181 -0
- package/dist/docs.part02.js.map +1 -0
- package/dist/doctorCommand.d.ts +27 -0
- package/dist/doctorCommand.js +160 -0
- package/dist/doctorCommand.js.map +1 -0
- package/dist/drift.contrato.d.ts +23 -0
- package/dist/drift.contrato.js +33 -0
- package/dist/drift.contrato.js.map +1 -0
- package/dist/drift.d.ts +13 -227
- package/dist/drift.js +16 -3924
- package/dist/drift.js.map +1 -1
- package/dist/drift.part01.d.ts +252 -0
- package/dist/drift.part01.js +183 -0
- package/dist/drift.part01.js.map +1 -0
- package/dist/drift.part02.d.ts +30 -0
- package/dist/drift.part02.js +342 -0
- package/dist/drift.part02.js.map +1 -0
- package/dist/drift.part03.d.ts +26 -0
- package/dist/drift.part03.js +343 -0
- package/dist/drift.part03.js.map +1 -0
- package/dist/drift.part04.d.ts +46 -0
- package/dist/drift.part04.js +354 -0
- package/dist/drift.part04.js.map +1 -0
- package/dist/drift.part05.d.ts +47 -0
- package/dist/drift.part05.js +353 -0
- package/dist/drift.part05.js.map +1 -0
- package/dist/drift.part06.d.ts +17 -0
- package/dist/drift.part06.js +381 -0
- package/dist/drift.part06.js.map +1 -0
- package/dist/drift.part07.d.ts +48 -0
- package/dist/drift.part07.js +377 -0
- package/dist/drift.part07.js.map +1 -0
- package/dist/drift.part08.d.ts +26 -0
- package/dist/drift.part08.js +333 -0
- package/dist/drift.part08.js.map +1 -0
- package/dist/drift.part09.d.ts +22 -0
- package/dist/drift.part09.js +322 -0
- package/dist/drift.part09.js.map +1 -0
- package/dist/drift.part10.d.ts +11 -0
- package/dist/drift.part10.js +116 -0
- package/dist/drift.part10.js.map +1 -0
- package/dist/drift.part11.d.ts +3 -0
- package/dist/drift.part11.js +320 -0
- package/dist/drift.part11.js.map +1 -0
- package/dist/drift.part12.d.ts +17 -0
- package/dist/drift.part12.js +289 -0
- package/dist/drift.part12.js.map +1 -0
- package/dist/drift.part13.d.ts +17 -0
- package/dist/drift.part13.js +86 -0
- package/dist/drift.part13.js.map +1 -0
- package/dist/drift.part14.d.ts +44 -0
- package/dist/drift.part14.js +402 -0
- package/dist/drift.part14.js.map +1 -0
- package/dist/driftOrcamento.d.ts +69 -0
- package/dist/driftOrcamento.js +280 -0
- package/dist/driftOrcamento.js.map +1 -0
- package/dist/execucoesExternas.d.ts +10 -0
- package/dist/execucoesExternas.js +51 -0
- package/dist/execucoesExternas.js.map +1 -0
- package/dist/exemplosOficiais.d.ts +10 -0
- package/dist/exemplosOficiais.js +63 -0
- package/dist/exemplosOficiais.js.map +1 -0
- package/dist/fsGovernado.d.ts +10 -0
- package/dist/fsGovernado.js +50 -0
- package/dist/fsGovernado.js.map +1 -0
- package/dist/geracaoCore.d.ts +64 -0
- package/dist/geracaoCore.js +381 -0
- package/dist/geracaoCore.js.map +1 -0
- package/dist/iaPrompts.d.ts +6 -0
- package/dist/iaPrompts.js +318 -0
- package/dist/iaPrompts.js.map +1 -0
- package/dist/importador.d.ts +9 -31
- package/dist/importador.js +11 -2938
- package/dist/importador.js.map +1 -1
- package/dist/importador.part01.d.ts +150 -0
- package/dist/importador.part01.js +256 -0
- package/dist/importador.part01.js.map +1 -0
- package/dist/importador.part02.d.ts +25 -0
- package/dist/importador.part02.js +359 -0
- package/dist/importador.part02.js.map +1 -0
- package/dist/importador.part03.d.ts +53 -0
- package/dist/importador.part03.js +366 -0
- package/dist/importador.part03.js.map +1 -0
- package/dist/importador.part04.d.ts +26 -0
- package/dist/importador.part04.js +374 -0
- package/dist/importador.part04.js.map +1 -0
- package/dist/importador.part05.d.ts +28 -0
- package/dist/importador.part05.js +340 -0
- package/dist/importador.part05.js.map +1 -0
- package/dist/importador.part06.d.ts +8 -0
- package/dist/importador.part06.js +327 -0
- package/dist/importador.part06.js.map +1 -0
- package/dist/importador.part07.d.ts +23 -0
- package/dist/importador.part07.js +300 -0
- package/dist/importador.part07.js.map +1 -0
- package/dist/importador.part08.d.ts +12 -0
- package/dist/importador.part08.js +378 -0
- package/dist/importador.part08.js.map +1 -0
- package/dist/importador.part09.d.ts +16 -0
- package/dist/importador.part09.js +319 -0
- package/dist/importador.part09.js.map +1 -0
- package/dist/index.d.ts +12 -1
- package/dist/index.js +16 -7945
- package/dist/index.js.map +1 -1
- package/dist/index.part01.d.ts +148 -0
- package/dist/index.part01.js +252 -0
- package/dist/index.part01.js.map +1 -0
- package/dist/index.part02.d.ts +17 -0
- package/dist/index.part02.js +344 -0
- package/dist/index.part02.js.map +1 -0
- package/dist/index.part03.d.ts +59 -0
- package/dist/index.part03.js +352 -0
- package/dist/index.part03.js.map +1 -0
- package/dist/index.part04.d.ts +20 -0
- package/dist/index.part04.js +360 -0
- package/dist/index.part04.js.map +1 -0
- package/dist/index.part05.d.ts +10 -0
- package/dist/index.part05.js +370 -0
- package/dist/index.part05.js.map +1 -0
- package/dist/index.part06.d.ts +14 -0
- package/dist/index.part06.js +336 -0
- package/dist/index.part06.js.map +1 -0
- package/dist/index.part07.d.ts +9 -0
- package/dist/index.part07.js +287 -0
- package/dist/index.part07.js.map +1 -0
- package/dist/index.part08.d.ts +1 -0
- package/dist/index.part08.js +206 -0
- package/dist/index.part08.js.map +1 -0
- package/dist/init/index.js +2 -0
- package/dist/init/index.js.map +1 -1
- package/dist/init/templates.d.ts +2 -11
- package/dist/init/templates.js +4 -659
- package/dist/init/templates.js.map +1 -1
- package/dist/init/templates.part01.d.ts +11 -0
- package/dist/init/templates.part01.js +399 -0
- package/dist/init/templates.part01.js.map +1 -0
- package/dist/init/templates.part02.d.ts +8 -0
- package/dist/init/templates.part02.js +265 -0
- package/dist/init/templates.part02.js.map +1 -0
- package/dist/initCommand.d.ts +3 -0
- package/dist/initCommand.js +41 -0
- package/dist/initCommand.js.map +1 -0
- package/dist/initTemplatesBackend.d.ts +2 -0
- package/dist/initTemplatesBackend.js +127 -0
- package/dist/initTemplatesBackend.js.map +1 -0
- package/dist/initTemplatesBase.d.ts +9 -0
- package/dist/initTemplatesBase.js +79 -0
- package/dist/initTemplatesBase.js.map +1 -0
- package/dist/initTemplatesFlutter.d.ts +2 -0
- package/dist/initTemplatesFlutter.js +185 -0
- package/dist/initTemplatesFlutter.js.map +1 -0
- package/dist/initTemplatesRuntime.d.ts +2 -0
- package/dist/initTemplatesRuntime.js +494 -0
- package/dist/initTemplatesRuntime.js.map +1 -0
- package/dist/initTemplatesWeb.d.ts +2 -0
- package/dist/initTemplatesWeb.js +429 -0
- package/dist/initTemplatesWeb.js.map +1 -0
- package/dist/mcpInstalarChaveCommand.d.ts +1 -0
- package/dist/mcpInstalarChaveCommand.js +141 -0
- package/dist/mcpInstalarChaveCommand.js.map +1 -0
- package/dist/mcpRemoto.js.map +1 -1
- package/dist/mcp_chave.d.ts +1 -0
- package/dist/mcp_chave.js +4 -0
- package/dist/mcp_chave.js.map +1 -0
- package/dist/profileArtefatoBase.d.ts +30 -0
- package/dist/profileArtefatoBase.js +129 -0
- package/dist/profileArtefatoBase.js.map +1 -0
- package/dist/profileArtefatoValidadores.d.ts +9 -0
- package/dist/profileArtefatoValidadores.js +287 -0
- package/dist/profileArtefatoValidadores.js.map +1 -0
- package/dist/profileAuthorCommand.d.ts +6 -0
- package/dist/profileAuthorCommand.js +442 -0
- package/dist/profileAuthorCommand.js.map +1 -0
- package/dist/profileAuthorTipos.d.ts +225 -0
- package/dist/profileAuthorTipos.js +6 -0
- package/dist/profileAuthorTipos.js.map +1 -0
- package/dist/profileCatalogo.d.ts +8 -0
- package/dist/profileCatalogo.js +235 -0
- package/dist/profileCatalogo.js.map +1 -0
- package/dist/profileCommand.d.ts +33 -0
- package/dist/profileCommand.js +256 -0
- package/dist/profileCommand.js.map +1 -0
- package/dist/profileOrquestracao.d.ts +33 -0
- package/dist/profileOrquestracao.js +53 -0
- package/dist/profileOrquestracao.js.map +1 -0
- package/dist/profileRegras.d.ts +19 -0
- package/dist/profileRegras.js +219 -0
- package/dist/profileRegras.js.map +1 -0
- package/dist/profileRulePacks.d.ts +3 -0
- package/dist/profileRulePacks.js +334 -0
- package/dist/profileRulePacks.js.map +1 -0
- package/dist/profiles/validate.d.ts +1 -0
- package/dist/profiles/validate.js +4 -0
- package/dist/profiles/validate.js.map +1 -0
- package/dist/projeto.d.ts +4 -53
- package/dist/projeto.js +5 -649
- package/dist/projeto.js.map +1 -1
- package/dist/projetoBusca.d.ts +7 -0
- package/dist/projetoBusca.js +142 -0
- package/dist/projetoBusca.js.map +1 -0
- package/dist/projetoCarregar.d.ts +2 -0
- package/dist/projetoCarregar.js +50 -0
- package/dist/projetoCarregar.js.map +1 -0
- package/dist/projetoConfig.d.ts +10 -0
- package/dist/projetoConfig.js +89 -0
- package/dist/projetoConfig.js.map +1 -0
- package/dist/projetoLegado.d.ts +3 -0
- package/dist/projetoLegado.js +175 -0
- package/dist/projetoLegado.js.map +1 -0
- package/dist/projetoOrigens.d.ts +6 -0
- package/dist/projetoOrigens.js +185 -0
- package/dist/projetoOrigens.js.map +1 -0
- package/dist/projetoResolucao.d.ts +8 -0
- package/dist/projetoResolucao.js +43 -0
- package/dist/projetoResolucao.js.map +1 -0
- package/dist/projetoTipos.d.ts +43 -0
- package/dist/projetoTipos.js +4 -0
- package/dist/projetoTipos.js.map +1 -0
- package/dist/runnerValidacaoRemota.js.map +1 -1
- package/dist/runnerValidacaoRemotaBateria.js +2 -0
- package/dist/runnerValidacaoRemotaBateria.js.map +1 -1
- package/dist/runnerValidacaoRemotaExecucao.js +2 -0
- package/dist/runnerValidacaoRemotaExecucao.js.map +1 -1
- package/dist/runnerValidacaoRemotaRelatorio.js +2 -0
- package/dist/runnerValidacaoRemotaRelatorio.js.map +1 -1
- package/dist/runnerValidacaoRemotaSnapshot.js +2 -0
- package/dist/runnerValidacaoRemotaSnapshot.js.map +1 -1
- package/dist/runnerValidacaoRemotaWorkspace.js +2 -0
- package/dist/runnerValidacaoRemotaWorkspace.js.map +1 -1
- package/dist/sync/index.js +2 -0
- package/dist/sync/index.js.map +1 -1
- package/dist/textoListas.d.ts +4 -0
- package/dist/textoListas.js +22 -0
- package/dist/textoListas.js.map +1 -0
- package/dist/typescript-http-body.d.ts +12 -0
- package/dist/typescript-http-body.js +145 -0
- package/dist/typescript-http-body.js.map +1 -0
- package/dist/typescript-http-expressoes.d.ts +17 -0
- package/dist/typescript-http-expressoes.js +194 -0
- package/dist/typescript-http-expressoes.js.map +1 -0
- package/dist/typescript-http-modelos.d.ts +45 -0
- package/dist/typescript-http-modelos.js +82 -0
- package/dist/typescript-http-modelos.js.map +1 -0
- package/dist/typescript-http-rotas.d.ts +9 -0
- package/dist/typescript-http-rotas.js +129 -0
- package/dist/typescript-http-rotas.js.map +1 -0
- package/dist/typescript-http-semantica.d.ts +11 -0
- package/dist/typescript-http-semantica.js +329 -0
- package/dist/typescript-http-semantica.js.map +1 -0
- package/dist/typescript-http.d.ts +3 -35
- package/dist/typescript-http.js +4 -853
- package/dist/typescript-http.js.map +1 -1
- package/docs/AGENT_STARTER.md +1 -1
- package/docs/agentes-por-capacidade.md +55 -3
- package/docs/documentacao.md +1 -1
- package/docs/fluxo-pratico-ia-sema.md +1 -1
- package/docs/mcp.md +12 -0
- package/docs/pagamento-ponta-a-ponta.md +1 -1
- package/docs/persistencia-vendor-first.md +1 -1
- package/docs/prompt-base-ia-sema.md +1 -1
- package/docs/repositories.md +2 -2
- package/docs/seguranca.md +1 -1
- package/docs/sintaxe.md +1 -1
- package/exemplos/agendamento.sema +1 -1
- package/exemplos/assinatura.sema +1 -1
- package/exemplos/auditoria.sema +1 -1
- package/exemplos/autenticacao.sema +1 -1
- package/exemplos/author_obra_comum.sema +1 -1
- package/exemplos/author_tema_sensivel.sema +1 -1
- package/exemplos/automacao.sema +1 -1
- package/exemplos/cadastro_usuario.sema +1 -1
- package/exemplos/calculadora.sema +1 -1
- package/exemplos/crud_simples.sema +1 -1
- package/exemplos/estoque.sema +1 -1
- package/exemplos/exportacao.sema +1 -1
- package/exemplos/fila.sema +1 -1
- package/exemplos/integracao_externa.sema +1 -1
- package/exemplos/multi_tenant.sema +1 -1
- package/exemplos/notificacao.sema +1 -1
- package/exemplos/operacao_estrategia.sema +132 -633
- package/exemplos/operacao_estrategia_discovery.sema +220 -0
- package/exemplos/operacao_estrategia_fluxo.sema +114 -0
- package/exemplos/operacao_estrategia_gates.sema +106 -0
- package/exemplos/operacao_estrategia_quarentena.sema +133 -0
- package/exemplos/operacao_estrategia_rollout.sema +124 -0
- package/exemplos/pagamento.sema +1 -1
- package/exemplos/pagamento_dominio.sema +1 -1
- package/exemplos/pedido.sema +1 -1
- package/exemplos/permissao.sema +1 -1
- package/exemplos/persistencia_vendor_first.sema +1 -1
- package/exemplos/profile_game.sema +1 -1
- package/exemplos/profile_legal.sema +1 -1
- package/exemplos/profile_ops.sema +1 -1
- package/exemplos/profile_research.sema +1 -1
- package/exemplos/profile_software.sema +1 -1
- package/exemplos/profile_workflow_n8n.sema +1 -1
- package/exemplos/relatorio.sema +1 -1
- package/exemplos/replica_analitica_erp.sema +1 -1
- package/exemplos/testes_embutidos.sema +1 -1
- package/exemplos/tratamento_erro.sema +1 -1
- package/exemplos/upload_arquivo.sema +1 -1
- package/exemplos/webhook.sema +1 -1
- package/llms-full.txt +13 -8
- package/llms.txt +12 -7
- package/node_modules/@sema/gerador-css/dist/index.d.ts +2 -3
- package/node_modules/@sema/gerador-css/dist/index.js +4 -599
- package/node_modules/@sema/gerador-css/dist/index.js.map +1 -1
- package/node_modules/@sema/gerador-css/dist/index.part01.d.ts +6 -0
- package/node_modules/@sema/gerador-css/dist/index.part01.js +49 -0
- package/node_modules/@sema/gerador-css/dist/index.part01.js.map +1 -0
- package/node_modules/@sema/gerador-css/dist/index.part02.d.ts +3 -0
- package/node_modules/@sema/gerador-css/dist/index.part02.js +471 -0
- package/node_modules/@sema/gerador-css/dist/index.part02.js.map +1 -0
- package/node_modules/@sema/gerador-css/package.json +1 -1
- package/node_modules/@sema/gerador-dart/package.json +1 -1
- package/node_modules/@sema/gerador-html/package.json +1 -1
- package/node_modules/@sema/gerador-javascript/package.json +1 -1
- package/node_modules/@sema/gerador-lua/package.json +1 -1
- package/node_modules/@sema/gerador-python/dist/index.d.ts +2 -6
- package/node_modules/@sema/gerador-python/dist/index.js +4 -771
- package/node_modules/@sema/gerador-python/dist/index.js.map +1 -1
- package/node_modules/@sema/gerador-python/dist/index.part01.d.ts +28 -0
- package/node_modules/@sema/gerador-python/dist/index.part01.js +383 -0
- package/node_modules/@sema/gerador-python/dist/index.part01.js.map +1 -0
- package/node_modules/@sema/gerador-python/dist/index.part02.d.ts +20 -0
- package/node_modules/@sema/gerador-python/dist/index.part02.js +396 -0
- package/node_modules/@sema/gerador-python/dist/index.part02.js.map +1 -0
- package/node_modules/@sema/gerador-python/package.json +1 -1
- package/node_modules/@sema/gerador-typescript/dist/index.d.ts +3 -6
- package/node_modules/@sema/gerador-typescript/dist/index.js +5 -810
- package/node_modules/@sema/gerador-typescript/dist/index.js.map +1 -1
- package/node_modules/@sema/gerador-typescript/dist/index.part01.d.ts +25 -0
- package/node_modules/@sema/gerador-typescript/dist/index.part01.js +358 -0
- package/node_modules/@sema/gerador-typescript/dist/index.part01.js.map +1 -0
- package/node_modules/@sema/gerador-typescript/dist/index.part02.d.ts +14 -0
- package/node_modules/@sema/gerador-typescript/dist/index.part02.js +405 -0
- package/node_modules/@sema/gerador-typescript/dist/index.part02.js.map +1 -0
- package/node_modules/@sema/gerador-typescript/dist/index.part03.d.ts +5 -0
- package/node_modules/@sema/gerador-typescript/dist/index.part03.js +60 -0
- package/node_modules/@sema/gerador-typescript/dist/index.part03.js.map +1 -0
- package/node_modules/@sema/gerador-typescript/package.json +1 -1
- package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js +2 -0
- package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/diagnosticos/snippets.d.ts +6 -0
- package/node_modules/@sema/nucleo/dist/diagnosticos/snippets.js +40 -0
- package/node_modules/@sema/nucleo/dist/diagnosticos/snippets.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/formatador/index.d.ts +2 -9
- package/node_modules/@sema/nucleo/dist/formatador/index.js +4 -467
- package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/formatador/index.part01.d.ts +39 -0
- package/node_modules/@sema/nucleo/dist/formatador/index.part01.js +385 -0
- package/node_modules/@sema/nucleo/dist/formatador/index.part01.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/formatador/index.part02.d.ts +4 -0
- package/node_modules/@sema/nucleo/dist/formatador/index.part02.js +92 -0
- package/node_modules/@sema/nucleo/dist/formatador/index.part02.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/index.d.ts +2 -0
- package/node_modules/@sema/nucleo/dist/index.js +6 -0
- package/node_modules/@sema/nucleo/dist/index.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.d.ts +3 -5
- package/node_modules/@sema/nucleo/dist/ir/conversor.js +5 -880
- package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.part01.d.ts +30 -0
- package/node_modules/@sema/nucleo/dist/ir/conversor.part01.js +398 -0
- package/node_modules/@sema/nucleo/dist/ir/conversor.part01.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/ir/conversor.part02.d.ts +41 -0
- package/node_modules/@sema/nucleo/dist/ir/conversor.part02.js +184 -0
- package/node_modules/@sema/nucleo/dist/ir/conversor.part02.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/ir/conversor.part03.d.ts +5 -0
- package/node_modules/@sema/nucleo/dist/ir/conversor.part03.js +310 -0
- package/node_modules/@sema/nucleo/dist/ir/conversor.part03.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.d.ts +3 -9
- package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.d.ts +11 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.js +150 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.js +5 -768
- package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.modulo.d.ts +3 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.modulo.js +222 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.modulo.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.part01.d.ts +9 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.part01.js +61 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.part01.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.part02.d.ts +40 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.part02.js +373 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.part02.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.part03.d.ts +4 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.part03.js +9 -0
- package/node_modules/@sema/nucleo/dist/parser/parser.part03.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/persistencia/contratos.js +2 -0
- package/node_modules/@sema/nucleo/dist/persistencia/contratos.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +3 -59
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js +2 -1682
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.d.ts +89 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js +292 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part02.d.ts +29 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part02.js +168 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part02.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part03.d.ts +11 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part03.js +185 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part03.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part04.d.ts +30 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part04.js +200 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part04.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part05.d.ts +6 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part05.js +193 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part05.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part06.d.ts +11 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part06.js +208 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part06.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part07.d.ts +11 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part07.js +247 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part07.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part08.d.ts +3 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part08.js +249 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.part08.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.d.ts +2 -106
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.js +4 -474
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.part01.d.ts +109 -0
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.part01.js +259 -0
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.part01.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.part02.d.ts +9 -0
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.part02.js +223 -0
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.part02.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.d.ts +21 -0
- package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.js +40 -0
- package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.js.map +1 -0
- package/node_modules/@sema/nucleo/package.json +1 -1
- package/node_modules/@sema/padroes/package.json +1 -1
- package/package.json +10 -10
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
// SEMA-GOVERNED: sema.software
|
|
2
|
+
// Descricao: nucleo semantico particionado; consulte contratos/sema/software.sema antes de editar.
|
|
3
|
+
import { criarDiagnostico } from "../diagnosticos/index.js";
|
|
4
|
+
import { CAMPOS_DATABASE_SUPORTADOS, CAMPOS_RECURSO_PERSISTENCIA_SUPORTADOS, classificarCompatibilidadePersistencia, nomeTipoRecursoPersistencia, normalizarConsistenciaPersistencia, normalizarDurabilidadePersistencia, normalizarEngineBanco, normalizarModeloConsultaPersistencia, normalizarModeloTransacaoPersistencia, parsearBooleanoPersistencia, recursoPersistenciaPodeSerPortavel, } from "../persistencia/contratos.js";
|
|
5
|
+
import { parsearEfeitoSemantico, } from "./estruturas.js";
|
|
6
|
+
import { efeitoEhPrivilegiado, } from "./seguranca.js";
|
|
7
|
+
import { CAMPOS_EXECUCAO_SUPORTADOS, CRITICIDADES_OPERACIONAIS, extrairPerfilCompatibilidade, localizarCampo, valorCampoCompleto } from "./analisador.part01.js";
|
|
8
|
+
export function validarCamposSuportadosPersistencia(bloco, camposSuportados, diagnosticos, contexto, codigo, dica) {
|
|
9
|
+
for (const campo of bloco.campos) {
|
|
10
|
+
if (camposSuportados.has(campo.nome)) {
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
diagnosticos.push(criarDiagnostico(codigo, `Campo de persistencia "${campo.nome}" nao e suportado em ${contexto}.`, "erro", campo.intervalo, dica));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export function validarBooleanoPersistencia(valor, intervalo, diagnosticos, codigo, mensagem) {
|
|
17
|
+
if (!valor) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (parsearBooleanoPersistencia(valor) !== undefined) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
diagnosticos.push(criarDiagnostico(codigo, mensagem, "erro", intervalo, "Use verdadeiro/falso ou true/false."));
|
|
24
|
+
}
|
|
25
|
+
export function validarRecursoPersistencia(database, recurso, diagnosticos) {
|
|
26
|
+
const engine = normalizarEngineBanco(valorCampoCompleto(localizarCampo(database, "engine")));
|
|
27
|
+
if (!engine) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
validarCamposSuportadosPersistencia(recurso, CAMPOS_RECURSO_PERSISTENCIA_SUPORTADOS, diagnosticos, `resource "${recurso.nome ?? recurso.palavraChave}" do database "${database.nome ?? "database"}"`, "SEM106", "Use apenas entity, consistency, durability, transaction_model, query_model, portavel, mode, isolation, strategy, ttl, retention, path, from, to, surface, adapter, resource_kind, collection, table ou compatibilidade.");
|
|
31
|
+
const tipoRecurso = nomeTipoRecursoPersistencia(recurso);
|
|
32
|
+
if (!tipoRecurso) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const nomeRecurso = recurso.nome ?? tipoRecurso;
|
|
36
|
+
const contexto = `resource "${nomeRecurso}" do database "${database.nome ?? "database"}"`;
|
|
37
|
+
const consistency = valorCampoCompleto(localizarCampo(recurso, "consistency"));
|
|
38
|
+
const durability = valorCampoCompleto(localizarCampo(recurso, "durability"));
|
|
39
|
+
const transactionModel = valorCampoCompleto(localizarCampo(recurso, "transaction_model"));
|
|
40
|
+
const queryModel = valorCampoCompleto(localizarCampo(recurso, "query_model"));
|
|
41
|
+
const mode = valorCampoCompleto(localizarCampo(recurso, "mode"));
|
|
42
|
+
const portavel = valorCampoCompleto(localizarCampo(recurso, "portavel"));
|
|
43
|
+
const isolation = valorCampoCompleto(localizarCampo(recurso, "isolation"));
|
|
44
|
+
if (consistency && !normalizarConsistenciaPersistencia(consistency)) {
|
|
45
|
+
diagnosticos.push(criarDiagnostico("SEM107", `${contexto} declarou consistency invalida: "${consistency}".`, "erro", localizarCampo(recurso, "consistency")?.intervalo, "Use eventual, forte, serializable, snapshot ou causal."));
|
|
46
|
+
}
|
|
47
|
+
if (durability && !normalizarDurabilidadePersistencia(durability)) {
|
|
48
|
+
diagnosticos.push(criarDiagnostico("SEM108", `${contexto} declarou durability invalida: "${durability}".`, "erro", localizarCampo(recurso, "durability")?.intervalo, "Use baixa, media ou alta."));
|
|
49
|
+
}
|
|
50
|
+
if (transactionModel && !normalizarModeloTransacaoPersistencia(transactionModel)) {
|
|
51
|
+
diagnosticos.push(criarDiagnostico("SEM109", `${contexto} declarou transaction_model invalido: "${transactionModel}".`, "erro", localizarCampo(recurso, "transaction_model")?.intervalo, "Use mvcc, bloqueio, documento, otimista ou single_thread."));
|
|
52
|
+
}
|
|
53
|
+
if (queryModel && !normalizarModeloConsultaPersistencia(queryModel)) {
|
|
54
|
+
diagnosticos.push(criarDiagnostico("SEM110", `${contexto} declarou query_model invalido: "${queryModel}".`, "erro", localizarCampo(recurso, "query_model")?.intervalo, "Use sql, documento, chave_valor, pipeline ou stream."));
|
|
55
|
+
}
|
|
56
|
+
if (mode && !normalizarModeloConsultaPersistencia(mode)) {
|
|
57
|
+
diagnosticos.push(criarDiagnostico("SEM111", `${contexto} declarou mode invalido: "${mode}".`, "erro", localizarCampo(recurso, "mode")?.intervalo, "Use sql, documento, chave_valor, pipeline ou stream."));
|
|
58
|
+
}
|
|
59
|
+
const compatibilidade = classificarCompatibilidadePersistencia(tipoRecurso, engine, { mode, isolation });
|
|
60
|
+
if (compatibilidade.status === "invalido") {
|
|
61
|
+
diagnosticos.push(criarDiagnostico("SEM112", `${contexto} nao e compativel com o engine ${engine}.`, "erro", recurso.intervalo, compatibilidade.motivo));
|
|
62
|
+
}
|
|
63
|
+
validarBooleanoPersistencia(portavel, localizarCampo(recurso, "portavel")?.intervalo ?? recurso.intervalo, diagnosticos, "SEM113", `${contexto} declarou portavel com valor invalido: "${portavel}".`);
|
|
64
|
+
if (parsearBooleanoPersistencia(portavel) && !recursoPersistenciaPodeSerPortavel(tipoRecurso, { mode, isolation })) {
|
|
65
|
+
diagnosticos.push(criarDiagnostico("SEM114", `${contexto} foi marcado como portavel, mas a compatibilidade entre os cinco bancos nao fecha sem perdas reais.`, "aviso", localizarCampo(recurso, "portavel")?.intervalo ?? recurso.intervalo, "Remova portavel ou reduza o recurso para um baseline comum entre postgres, mysql, sqlite, mongodb e redis."));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export function validarDatabase(database, diagnosticos) {
|
|
69
|
+
validarCamposSuportadosPersistencia(database, CAMPOS_DATABASE_SUPORTADOS, diagnosticos, `database "${database.nome ?? "database"}"`, "SEM100", "Use apenas engine, schema, database, consistency, durability, transaction_model, query_model, portavel, adapter, perfil ou compatibilidade.");
|
|
70
|
+
const campoEngine = localizarCampo(database, "engine");
|
|
71
|
+
const engineBruto = valorCampoCompleto(campoEngine);
|
|
72
|
+
if (!engineBruto) {
|
|
73
|
+
diagnosticos.push(criarDiagnostico("SEM101", `Database "${database.nome ?? "database"}" precisa declarar engine.`, "erro", database.intervalo, "Use postgres, mysql, sqlite, mongodb ou redis."));
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const engine = normalizarEngineBanco(engineBruto);
|
|
77
|
+
if (!engine) {
|
|
78
|
+
diagnosticos.push(criarDiagnostico("SEM102", `Database "${database.nome ?? "database"}" declarou engine invalido: "${engineBruto}".`, "erro", campoEngine?.intervalo ?? database.intervalo, "Use postgres, mysql, sqlite, mongodb ou redis."));
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const consistency = valorCampoCompleto(localizarCampo(database, "consistency"));
|
|
82
|
+
const durability = valorCampoCompleto(localizarCampo(database, "durability"));
|
|
83
|
+
const transactionModel = valorCampoCompleto(localizarCampo(database, "transaction_model"));
|
|
84
|
+
const queryModel = valorCampoCompleto(localizarCampo(database, "query_model"));
|
|
85
|
+
const portavel = valorCampoCompleto(localizarCampo(database, "portavel"));
|
|
86
|
+
if (consistency && !normalizarConsistenciaPersistencia(consistency)) {
|
|
87
|
+
diagnosticos.push(criarDiagnostico("SEM103", `Database "${database.nome ?? "database"}" declarou consistency invalida: "${consistency}".`, "erro", localizarCampo(database, "consistency")?.intervalo, "Use eventual, forte, serializable, snapshot ou causal."));
|
|
88
|
+
}
|
|
89
|
+
if (durability && !normalizarDurabilidadePersistencia(durability)) {
|
|
90
|
+
diagnosticos.push(criarDiagnostico("SEM104", `Database "${database.nome ?? "database"}" declarou durability invalida: "${durability}".`, "erro", localizarCampo(database, "durability")?.intervalo, "Use baixa, media ou alta."));
|
|
91
|
+
}
|
|
92
|
+
if (transactionModel && !normalizarModeloTransacaoPersistencia(transactionModel)) {
|
|
93
|
+
diagnosticos.push(criarDiagnostico("SEM105", `Database "${database.nome ?? "database"}" declarou transaction_model invalido: "${transactionModel}".`, "erro", localizarCampo(database, "transaction_model")?.intervalo, "Use mvcc, bloqueio, documento, otimista ou single_thread."));
|
|
94
|
+
}
|
|
95
|
+
if (queryModel && !normalizarModeloConsultaPersistencia(queryModel)) {
|
|
96
|
+
diagnosticos.push(criarDiagnostico("SEM115", `Database "${database.nome ?? "database"}" declarou query_model invalido: "${queryModel}".`, "erro", localizarCampo(database, "query_model")?.intervalo, "Use sql, documento, chave_valor, pipeline ou stream."));
|
|
97
|
+
}
|
|
98
|
+
validarBooleanoPersistencia(portavel, localizarCampo(database, "portavel")?.intervalo ?? database.intervalo, diagnosticos, "SEM116", `Database "${database.nome ?? "database"}" declarou portavel com valor invalido: "${portavel}".`);
|
|
99
|
+
for (const recurso of database.blocos) {
|
|
100
|
+
if (recurso.tipo !== "bloco_generico") {
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
validarRecursoPersistencia(database, recurso, diagnosticos);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
export function coletarSuperficiesModulo(modulo) {
|
|
107
|
+
return [
|
|
108
|
+
...modulo.workers.map((superficie) => ({ tipo: "worker", superficie })),
|
|
109
|
+
...modulo.eventos.map((superficie) => ({ tipo: "evento", superficie })),
|
|
110
|
+
...modulo.filas.map((superficie) => ({ tipo: "fila", superficie })),
|
|
111
|
+
...modulo.crons.map((superficie) => ({ tipo: "cron", superficie })),
|
|
112
|
+
...modulo.webhooks.map((superficie) => ({ tipo: "webhook", superficie })),
|
|
113
|
+
...modulo.caches.map((superficie) => ({ tipo: "cache", superficie })),
|
|
114
|
+
...modulo.storages.map((superficie) => ({ tipo: "storage", superficie })),
|
|
115
|
+
...modulo.policies.map((superficie) => ({ tipo: "policy", superficie })),
|
|
116
|
+
];
|
|
117
|
+
}
|
|
118
|
+
export function superficieEhPublica(superficie, tipoSuperficie) {
|
|
119
|
+
return extrairPerfilCompatibilidade(superficie, tipoSuperficie === "webhook" ? "publico" : "interno") === "publico";
|
|
120
|
+
}
|
|
121
|
+
export function taskEhSensivel(task) {
|
|
122
|
+
const criticidadeOperacional = task.execucao
|
|
123
|
+
? valorCampoCompleto(localizarCampo(task.execucao, "criticidade_operacional"))
|
|
124
|
+
: undefined;
|
|
125
|
+
if (criticidadeOperacional === "alta" || criticidadeOperacional === "critica") {
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
return (task.effects?.linhas ?? []).some((linha) => {
|
|
129
|
+
const efeito = parsearEfeitoSemantico(linha.conteudo);
|
|
130
|
+
if (!efeito) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
return efeito.categoria === "persistencia" || efeito.criticidade === "alta" || efeito.criticidade === "critica" || efeitoEhPrivilegiado(efeito);
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
export function taskTemRastreabilidade(task) {
|
|
137
|
+
return Boolean(task.impl || task.vinculos);
|
|
138
|
+
}
|
|
139
|
+
export function routeEhMutante(route) {
|
|
140
|
+
const metodo = (localizarCampo(route.corpo, "metodo")?.valor ?? "").toUpperCase();
|
|
141
|
+
return ["POST", "PUT", "PATCH", "DELETE"].includes(metodo);
|
|
142
|
+
}
|
|
143
|
+
export function validarExecucaoBloco(execucao, diagnosticos, contexto) {
|
|
144
|
+
if (!execucao) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
for (const campo of execucao.campos) {
|
|
148
|
+
if (!CAMPOS_EXECUCAO_SUPORTADOS.has(campo.nome)) {
|
|
149
|
+
diagnosticos.push(criarDiagnostico("SEM065", `Campo de execucao "${campo.nome}" nao e suportado em ${contexto}.`, "erro", campo.intervalo, "Use apenas idempotencia, timeout, retry, compensacao ou criticidade_operacional."));
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
if (campo.nome === "criticidade_operacional") {
|
|
153
|
+
const criticidade = valorCampoCompleto(campo);
|
|
154
|
+
if (criticidade && !CRITICIDADES_OPERACIONAIS.has(criticidade)) {
|
|
155
|
+
diagnosticos.push(criarDiagnostico("SEM066", `Execucao de ${contexto} declarou criticidade_operacional invalida: "${criticidade}".`, "erro", campo.intervalo, "Use apenas baixa, media, alta ou critica em execucao."));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
const criticidade = valorCampoCompleto(localizarCampo(execucao, "criticidade_operacional"));
|
|
160
|
+
const idempotencia = localizarCampo(execucao, "idempotencia");
|
|
161
|
+
if ((criticidade === "alta" || criticidade === "critica") && !idempotencia) {
|
|
162
|
+
diagnosticos.push(criarDiagnostico("SEM101", `Execucao critica em ${contexto} deveria declarar idempotencia explicita.`, "aviso", execucao.intervalo, "Declare idempotencia: verdadeiro ou idempotencia: falso para a IA nao assumir retry seguro no escuro."));
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
export function validarExecucao(task, diagnosticos) {
|
|
166
|
+
validarExecucaoBloco(task.execucao, diagnosticos, `task "${task.nome}"`);
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=analisador.part02.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analisador.part02.js","sourceRoot":"","sources":["../../src/semantico/analisador.part02.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type Diagnostico } from "../diagnosticos/index.js";
|
|
2
|
+
import type { BlocoGenericoAst } from "../ast/tipos.js";
|
|
3
|
+
import { extrairContratoForbidden } from "./seguranca.js";
|
|
4
|
+
import { PerfilSegurancaDeclarado } from "./analisador.part02.js";
|
|
5
|
+
export declare function validarAuthBloco(bloco: BlocoGenericoAst | undefined, diagnosticos: Diagnostico[], contexto: string): void;
|
|
6
|
+
export declare function validarAuthzBloco(bloco: BlocoGenericoAst | undefined, diagnosticos: Diagnostico[], contexto: string): void;
|
|
7
|
+
export declare function validarDadosBloco(bloco: BlocoGenericoAst | undefined, diagnosticos: Diagnostico[], contexto: string): void;
|
|
8
|
+
export declare function validarAuditBloco(bloco: BlocoGenericoAst | undefined, diagnosticos: Diagnostico[], contexto: string): void;
|
|
9
|
+
export declare function validarSegredosBloco(bloco: BlocoGenericoAst | undefined, diagnosticos: Diagnostico[], contexto: string): void;
|
|
10
|
+
export declare function validarForbiddenBloco(bloco: BlocoGenericoAst | undefined, efeitos: BlocoGenericoAst["linhas"], diagnosticos: Diagnostico[], contexto: string): ReturnType<typeof extrairContratoForbidden>;
|
|
11
|
+
export declare function coletarPerfilSegurancaDeclarado(corpo: BlocoGenericoAst, effects: BlocoGenericoAst | undefined, diagnosticos: Diagnostico[] | undefined, contexto: string): PerfilSegurancaDeclarado;
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
// SEMA-GOVERNED: sema.software
|
|
2
|
+
// Descricao: nucleo semantico particionado; consulte contratos/sema/software.sema antes de editar.
|
|
3
|
+
import { criarDiagnostico } from "../diagnosticos/index.js";
|
|
4
|
+
import { parsearEfeitoSemantico, } from "./estruturas.js";
|
|
5
|
+
import { CLASSIFICACOES_DADO_SUPORTADAS, MODOS_AUTH_SUPORTADOS, MOTIVOS_AUDIT_SUPORTADOS, ORIGENS_AUTH_SUPORTADAS, PRINCIPAIS_AUTH_SUPORTADOS, REDACOES_LOG_SUPORTADAS, TENANTS_AUTHZ_SUPORTADOS, contratoDadosTemSegredoOuCredencial, contratoDadosTemSensivel, extrairContratoAudit, extrairContratoAuth, extrairContratoAuthz, extrairContratoDados, extrairContratoForbidden, extrairContratoSegredos, efeitoEhPrivilegiado, efeitoRequerSegredo, forbiddenContemRegra, } from "./seguranca.js";
|
|
6
|
+
import { CAMPOS_AUDIT_SUPORTADOS, CAMPOS_AUTHZ_SUPORTADOS, CAMPOS_AUTH_SUPORTADOS, CAMPOS_DADOS_SUPORTADOS, CAMPOS_SEGREDO_SUPORTADOS, localizarBloco, localizarCampo, valorCampoCompleto } from "./analisador.part01.js";
|
|
7
|
+
export function validarAuthBloco(bloco, diagnosticos, contexto) {
|
|
8
|
+
if (!bloco) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
for (const campo of bloco.campos) {
|
|
12
|
+
if (!CAMPOS_AUTH_SUPORTADOS.has(campo.nome)) {
|
|
13
|
+
diagnosticos.push(criarDiagnostico("SEM074", `Campo de auth "${campo.nome}" nao e suportado em ${contexto}.`, "erro", campo.intervalo, "Use apenas modo, estrategia, principal ou origem em auth."));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
const auth = extrairContratoAuth(bloco);
|
|
17
|
+
if (auth.modo && !MODOS_AUTH_SUPORTADOS.has(auth.modo)) {
|
|
18
|
+
diagnosticos.push(criarDiagnostico("SEM075", `Auth em ${contexto} declarou modo invalido: "${auth.modo}".`, "erro", bloco.intervalo, "Use obrigatorio, opcional, anonimo, interno ou m2m."));
|
|
19
|
+
}
|
|
20
|
+
if (auth.principal && !PRINCIPAIS_AUTH_SUPORTADOS.has(auth.principal)) {
|
|
21
|
+
diagnosticos.push(criarDiagnostico("SEM076", `Auth em ${contexto} declarou principal invalido: "${auth.principal}".`, "erro", bloco.intervalo, "Use usuario, servico, sistema ou anonimo."));
|
|
22
|
+
}
|
|
23
|
+
if (auth.origem && !ORIGENS_AUTH_SUPORTADAS.has(auth.origem)) {
|
|
24
|
+
diagnosticos.push(criarDiagnostico("SEM077", `Auth em ${contexto} declarou origem invalida: "${auth.origem}".`, "erro", bloco.intervalo, "Use publica, interna, worker, webhook, fila ou cron."));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export function validarAuthzBloco(bloco, diagnosticos, contexto) {
|
|
28
|
+
if (!bloco) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
for (const campo of bloco.campos) {
|
|
32
|
+
if (!CAMPOS_AUTHZ_SUPORTADOS.has(campo.nome)) {
|
|
33
|
+
diagnosticos.push(criarDiagnostico("SEM078", `Campo de authz "${campo.nome}" nao e suportado em ${contexto}.`, "erro", campo.intervalo, "Use papel, papeis, escopo, escopos, politica ou tenant em authz."));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const authz = extrairContratoAuthz(bloco);
|
|
37
|
+
if (authz.tenant && !TENANTS_AUTHZ_SUPORTADOS.has(authz.tenant)) {
|
|
38
|
+
diagnosticos.push(criarDiagnostico("SEM079", `Authz em ${contexto} declarou tenant invalido: "${authz.tenant}".`, "erro", bloco.intervalo, "Use obrigatorio, opcional ou isolado."));
|
|
39
|
+
}
|
|
40
|
+
if (authz.papeis.length === 0 && authz.escopos.length === 0 && !authz.politica) {
|
|
41
|
+
diagnosticos.push(criarDiagnostico("SEM080", `Authz em ${contexto} precisa declarar papeis, escopos ou politica.`, "erro", bloco.intervalo, "Explicite ao menos um papel, escopo ou politica para a autorizacao nao virar enfeite."));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export function validarDadosBloco(bloco, diagnosticos, contexto) {
|
|
45
|
+
if (!bloco) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
for (const campo of bloco.campos) {
|
|
49
|
+
const valor = valorCampoCompleto(campo);
|
|
50
|
+
if (CAMPOS_DADOS_SUPORTADOS.has(campo.nome)) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (valor && !CLASSIFICACOES_DADO_SUPORTADAS.has(valor)) {
|
|
54
|
+
diagnosticos.push(criarDiagnostico("SEM081", `Dados em ${contexto} declarou classificacao invalida para "${campo.nome}": "${valor}".`, "erro", campo.intervalo, "Use publico, interno, pii, financeiro, credencial ou segredo."));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const dados = extrairContratoDados(bloco);
|
|
58
|
+
if (dados.classificacaoPadrao && !CLASSIFICACOES_DADO_SUPORTADAS.has(dados.classificacaoPadrao)) {
|
|
59
|
+
diagnosticos.push(criarDiagnostico("SEM081", `Dados em ${contexto} declarou classificacao_padrao invalida: "${dados.classificacaoPadrao}".`, "erro", bloco.intervalo, "Use publico, interno, pii, financeiro, credencial ou segredo."));
|
|
60
|
+
}
|
|
61
|
+
if (dados.redacaoLog && !REDACOES_LOG_SUPORTADAS.has(dados.redacaoLog)) {
|
|
62
|
+
diagnosticos.push(criarDiagnostico("SEM082", `Dados em ${contexto} declarou redacao_log invalida: "${dados.redacaoLog}".`, "erro", bloco.intervalo, "Use livre, parcial, obrigatoria ou proibida."));
|
|
63
|
+
}
|
|
64
|
+
for (const subbloco of bloco.blocos) {
|
|
65
|
+
if (subbloco.tipo !== "bloco_generico") {
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
const nomeSubbloco = subbloco.nome ?? subbloco.palavraChave;
|
|
69
|
+
if (nomeSubbloco !== "input" && nomeSubbloco !== "output") {
|
|
70
|
+
diagnosticos.push(criarDiagnostico("SEM083", `Dados em ${contexto} nao suporta o subbloco "${nomeSubbloco}".`, "erro", subbloco.intervalo, "Use apenas campos diretos ou subblocos input/output para classificar dados."));
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
for (const campo of subbloco.campos) {
|
|
74
|
+
const classificacao = valorCampoCompleto(campo);
|
|
75
|
+
if (classificacao && !CLASSIFICACOES_DADO_SUPORTADAS.has(classificacao)) {
|
|
76
|
+
diagnosticos.push(criarDiagnostico("SEM081", `Dados em ${contexto} declarou classificacao invalida para "${nomeSubbloco}.${campo.nome}": "${classificacao}".`, "erro", campo.intervalo, "Use publico, interno, pii, financeiro, credencial ou segredo."));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
export function validarAuditBloco(bloco, diagnosticos, contexto) {
|
|
82
|
+
if (!bloco) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
for (const campo of bloco.campos) {
|
|
86
|
+
if (!CAMPOS_AUDIT_SUPORTADOS.has(campo.nome)) {
|
|
87
|
+
diagnosticos.push(criarDiagnostico("SEM084", `Campo de audit "${campo.nome}" nao e suportado em ${contexto}.`, "erro", campo.intervalo, "Use evento, ator, correlacao, retencao ou motivo em audit."));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const audit = extrairContratoAudit(bloco);
|
|
91
|
+
if (!audit.evento) {
|
|
92
|
+
diagnosticos.push(criarDiagnostico("SEM085", `Audit em ${contexto} precisa declarar evento.`, "erro", bloco.intervalo, "Explique qual evento auditavel sera registrado para a operacao."));
|
|
93
|
+
}
|
|
94
|
+
if (audit.motivo && !MOTIVOS_AUDIT_SUPORTADOS.has(audit.motivo)) {
|
|
95
|
+
diagnosticos.push(criarDiagnostico("SEM086", `Audit em ${contexto} declarou motivo invalido: "${audit.motivo}".`, "erro", bloco.intervalo, "Use obrigatorio, opcional ou dispensado."));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
export function validarSegredosBloco(bloco, diagnosticos, contexto) {
|
|
99
|
+
if (!bloco) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const segredos = extrairContratoSegredos(bloco);
|
|
103
|
+
if (segredos.itens.length === 0) {
|
|
104
|
+
diagnosticos.push(criarDiagnostico("SEM087", `Segredos em ${contexto} precisa declarar ao menos um segredo nomeado.`, "erro", bloco.intervalo, "Use segredos { nome_do_segredo { origem: vault escopo: runtime ... } }."));
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
for (const item of bloco.blocos) {
|
|
108
|
+
if (item.tipo !== "bloco_generico") {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
for (const campo of item.campos) {
|
|
112
|
+
if (!CAMPOS_SEGREDO_SUPORTADOS.has(campo.nome)) {
|
|
113
|
+
diagnosticos.push(criarDiagnostico("SEM087", `Segredo "${item.nome ?? item.palavraChave}" em ${contexto} usa o campo "${campo.nome}", que nao e suportado.`, "erro", campo.intervalo, "Use origem, escopo, acesso, rotacao, nao_logar, nao_retornar ou mascarar."));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
const nomeSegredo = item.nome ?? item.palavraChave;
|
|
117
|
+
const origem = valorCampoCompleto(localizarCampo(item, "origem"));
|
|
118
|
+
if (!origem) {
|
|
119
|
+
diagnosticos.push(criarDiagnostico("SEM088", `Segredo "${nomeSegredo}" em ${contexto} precisa declarar origem.`, "erro", item.intervalo, "Explicite a origem do segredo, como vault, env, secret_manager ou runtime."));
|
|
120
|
+
}
|
|
121
|
+
for (const nomeBooleano of ["nao_logar", "nao_retornar", "mascarar"]) {
|
|
122
|
+
const campo = localizarCampo(item, nomeBooleano);
|
|
123
|
+
const valor = valorCampoCompleto(campo);
|
|
124
|
+
if (campo && valor !== "verdadeiro" && valor !== "true" && valor !== "falso" && valor !== "false") {
|
|
125
|
+
diagnosticos.push(criarDiagnostico("SEM089", `Segredo "${nomeSegredo}" em ${contexto} declarou "${nomeBooleano}" com valor invalido: "${valor}".`, "erro", campo.intervalo, "Use verdadeiro/falso para campos booleanos de segredos."));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
export function validarForbiddenBloco(bloco, efeitos, diagnosticos, contexto) {
|
|
131
|
+
const forbidden = extrairContratoForbidden(bloco);
|
|
132
|
+
if (!bloco) {
|
|
133
|
+
return forbidden;
|
|
134
|
+
}
|
|
135
|
+
for (const regra of forbidden.regras) {
|
|
136
|
+
if (!/^[A-Za-z_][A-Za-z0-9_.-]*$/u.test(regra)) {
|
|
137
|
+
diagnosticos.push(criarDiagnostico("SEM090", `Forbidden em ${contexto} declarou regra invalida: "${regra}".`, "erro", bloco.intervalo, "Use regras simples como network.egress, shell.exec, retorno.credencial ou log.segredo."));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
for (const linha of efeitos) {
|
|
141
|
+
const efeito = parsearEfeitoSemantico(linha.conteudo);
|
|
142
|
+
if (efeito && forbiddenContemRegra(forbidden, efeito.categoria)) {
|
|
143
|
+
diagnosticos.push(criarDiagnostico("SEM091", `Forbidden em ${contexto} proibe "${efeito.categoria}", mas effects ainda declara esse efeito.`, "erro", linha.intervalo, "Remova o efeito proibido ou ajuste o bloco forbidden para refletir a operacao permitida de verdade."));
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return forbidden;
|
|
147
|
+
}
|
|
148
|
+
export function coletarPerfilSegurancaDeclarado(corpo, effects, diagnosticos, contexto) {
|
|
149
|
+
const authBloco = localizarBloco(corpo, "auth");
|
|
150
|
+
const authzBloco = localizarBloco(corpo, "authz");
|
|
151
|
+
const dadosBloco = localizarBloco(corpo, "dados");
|
|
152
|
+
const auditBloco = localizarBloco(corpo, "audit");
|
|
153
|
+
const segredosBloco = localizarBloco(corpo, "segredos");
|
|
154
|
+
const forbiddenBloco = localizarBloco(corpo, "forbidden");
|
|
155
|
+
if (diagnosticos) {
|
|
156
|
+
validarAuthBloco(authBloco, diagnosticos, contexto);
|
|
157
|
+
validarAuthzBloco(authzBloco, diagnosticos, contexto);
|
|
158
|
+
validarDadosBloco(dadosBloco, diagnosticos, contexto);
|
|
159
|
+
validarAuditBloco(auditBloco, diagnosticos, contexto);
|
|
160
|
+
validarSegredosBloco(segredosBloco, diagnosticos, contexto);
|
|
161
|
+
}
|
|
162
|
+
const forbidden = diagnosticos
|
|
163
|
+
? validarForbiddenBloco(forbiddenBloco, effects?.linhas ?? [], diagnosticos, contexto)
|
|
164
|
+
: extrairContratoForbidden(forbiddenBloco);
|
|
165
|
+
const auth = extrairContratoAuth(authBloco);
|
|
166
|
+
const authz = extrairContratoAuthz(authzBloco);
|
|
167
|
+
const dados = extrairContratoDados(dadosBloco);
|
|
168
|
+
const audit = extrairContratoAudit(auditBloco);
|
|
169
|
+
const segredos = extrairContratoSegredos(segredosBloco);
|
|
170
|
+
const efeitosEstruturados = (effects?.linhas ?? [])
|
|
171
|
+
.map((linha) => parsearEfeitoSemantico(linha.conteudo))
|
|
172
|
+
.filter((efeito) => Boolean(efeito));
|
|
173
|
+
return {
|
|
174
|
+
auth,
|
|
175
|
+
authz,
|
|
176
|
+
dados,
|
|
177
|
+
audit,
|
|
178
|
+
segredos,
|
|
179
|
+
forbidden,
|
|
180
|
+
efeitoPrivilegiado: efeitosEstruturados.some((efeito) => efeitoEhPrivilegiado(efeito)),
|
|
181
|
+
dadosSensiveis: contratoDadosTemSensivel(dados),
|
|
182
|
+
exigeSegredos: efeitosEstruturados.some((efeito) => efeitoRequerSegredo(efeito)) || contratoDadosTemSegredoOuCredencial(dados),
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=analisador.part03.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analisador.part03.js","sourceRoot":"","sources":["../../src/semantico/analisador.part03.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type Diagnostico } from "../diagnosticos/index.js";
|
|
2
|
+
import type { BlocoGenericoAst, CampoAst, TaskAst } from "../ast/tipos.js";
|
|
3
|
+
import { PerfilSegurancaDeclarado } from "./analisador.part02.js";
|
|
4
|
+
import { ContextoSemantico, SimboloSemantico } from "./analisador.part01.js";
|
|
5
|
+
export declare function emitirGuardrailsSeguranca(contexto: string, intervalo: CampoAst["intervalo"] | undefined, perfil: PerfilSegurancaDeclarado, diagnosticos: Diagnostico[], opcoes: {
|
|
6
|
+
publico: boolean;
|
|
7
|
+
sensivel: boolean;
|
|
8
|
+
}): void;
|
|
9
|
+
export declare function validarErroOperacional(task: TaskAst, diagnosticos: Diagnostico[]): void;
|
|
10
|
+
export declare function validarSuperficie(superficie: BlocoGenericoAst, tipoSuperficie: SimboloSemantico["categoria"], tasksConhecidas: Set<string>, tiposConhecidos: Set<string>, diagnosticos: Diagnostico[]): void;
|
|
11
|
+
export declare function recomporCaminhoRoute(campo?: CampoAst): string | undefined;
|
|
12
|
+
export declare function serializarTransicao(origem: string, destino: string): string;
|
|
13
|
+
export declare function descreverSugestoes(valores: Iterable<string>, prefixo: string): string | undefined;
|
|
14
|
+
export declare function listarCandidatosUseRelativo(moduloAtual: string, caminhoImportado: string): string[];
|
|
15
|
+
export declare function resolverUseSema(moduloAtual: string, caminhoImportado: string, contextosModulos?: Map<string, ContextoSemantico>): {
|
|
16
|
+
caminhoResolvido?: string;
|
|
17
|
+
candidatosRelativos: string[];
|
|
18
|
+
};
|
|
19
|
+
export declare function descreverDicaSintaxeExpressao(texto: string, dicaPadrao: string): string;
|
|
20
|
+
export declare function validarExpressoesDeclaradas(linhas: BlocoGenericoAst["linhas"], diagnosticos: Diagnostico[], contexto: {
|
|
21
|
+
codigoErroSintaxe: string;
|
|
22
|
+
codigoErroReferencia: string;
|
|
23
|
+
nomeBloco: string;
|
|
24
|
+
simbolosPermitidos: Set<string>;
|
|
25
|
+
dicaSintaxe: string;
|
|
26
|
+
dicaReferencia: string;
|
|
27
|
+
aceitarMarcadoresSemanticos?: boolean;
|
|
28
|
+
dicaReferenciaPersonalizada?: (raiz: string, linha: string) => string | undefined;
|
|
29
|
+
}): void;
|
|
30
|
+
export declare function validarEfeitosDeclarados(linhas: BlocoGenericoAst["linhas"], diagnosticos: Diagnostico[], contexto: string): void;
|