@semacode/cli 1.5.35 → 1.5.36
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/AGENTS.md +1 -1
- package/AGENT_CONTEXT_PACK.json +55 -5
- package/README.md +3 -3
- package/SEMA_BRIEF.curto.txt +2 -1
- package/SEMA_BRIEF.md +11 -2
- package/SEMA_BRIEF.micro.txt +2 -1
- package/SEMA_INDEX.json +222 -124
- package/dist/index.js +107 -2
- package/dist/index.js.map +1 -1
- package/docs/agentes-por-capacidade.md +13 -0
- package/docs/api.md +21 -21
- package/docs/cli.md +3 -3
- package/docs/env.md +20 -24
- package/docs/instalacao-e-primeiro-uso.md +3 -3
- package/docs/repositories.md +21 -21
- package/package.json +12 -16
package/dist/index.js
CHANGED
|
@@ -1613,6 +1613,54 @@ function criarPoliticaTimeoutResumoAgentContext() {
|
|
|
1613
1613
|
},
|
|
1614
1614
|
};
|
|
1615
1615
|
}
|
|
1616
|
+
function criarPoliticaDesignVisualAgentContext() {
|
|
1617
|
+
return {
|
|
1618
|
+
regra: "Quando a tarefa envolve interface, app, site, dashboard, painel, formulário, landing, jogo ou artefato visual, o Sema governa também qualidade visual. Modernidade, identidade, responsividade, estados e evidência visual não são extras opcionais.",
|
|
1619
|
+
modernoObrigatorio: true,
|
|
1620
|
+
aplicarQuando: "site, app, dashboard, painel, admin, onboarding, formulário, modal, jogo, material visual ou qualquer entrega com UI.",
|
|
1621
|
+
proibicoes: [
|
|
1622
|
+
"interface_generica_2010",
|
|
1623
|
+
"formularios_sem_hierarquia_visual",
|
|
1624
|
+
"cards_cinzas_sem_identidade",
|
|
1625
|
+
"layout_sem_responsividade_real",
|
|
1626
|
+
"texto_estourando_ou_sobreposto",
|
|
1627
|
+
"sem_estados_de_hover_focus_loading_erro_vazio",
|
|
1628
|
+
"sem_assets_quando_o_dominio_pede_visual",
|
|
1629
|
+
"copiar_estetica_do_contrato_para_ui",
|
|
1630
|
+
],
|
|
1631
|
+
porCapacidade: {
|
|
1632
|
+
fraca: "Use um padrão moderno seguro: hierarquia clara, espaçamento consistente, paleta com contraste, estados básicos, responsivo mobile/desktop e nada de formulário cinza genérico. Se não conseguir validar visualmente, pare e peça revisão.",
|
|
1633
|
+
media: "Defina intenção visual antes de codar: público, domínio, densidade, tokens, componentes, estados, responsividade e anti-2010. Rode ou peça screenshot/browser check quando houver UI.",
|
|
1634
|
+
forte: "Crie direção visual específica do domínio, use assets reais/gerados quando fizer sentido, refine microinterações e faça verificação visual em desktop/mobile com screenshot e correção de overlap.",
|
|
1635
|
+
},
|
|
1636
|
+
evidencias: {
|
|
1637
|
+
fraca: [
|
|
1638
|
+
"descrever padrão visual escolhido",
|
|
1639
|
+
"confirmar responsividade básica",
|
|
1640
|
+
"listar estados essenciais",
|
|
1641
|
+
],
|
|
1642
|
+
media: [
|
|
1643
|
+
"registrar tokens e componentes usados",
|
|
1644
|
+
"validar desktop e mobile",
|
|
1645
|
+
"corrigir texto sobreposto",
|
|
1646
|
+
],
|
|
1647
|
+
forte: [
|
|
1648
|
+
"screenshot desktop/mobile",
|
|
1649
|
+
"verificação de assets e renderização",
|
|
1650
|
+
"auditoria de contraste, hierarquia e estado vazio",
|
|
1651
|
+
],
|
|
1652
|
+
},
|
|
1653
|
+
criteriosMinimos: [
|
|
1654
|
+
"não parecer template de 2010",
|
|
1655
|
+
"hierarquia visual clara",
|
|
1656
|
+
"paleta com contraste e identidade do domínio",
|
|
1657
|
+
"responsividade mobile e desktop",
|
|
1658
|
+
"estados de hover, focus, loading, erro e vazio quando aplicáveis",
|
|
1659
|
+
"texto sem overlap ou estouro",
|
|
1660
|
+
"componentes coerentes com o workflow real",
|
|
1661
|
+
],
|
|
1662
|
+
};
|
|
1663
|
+
}
|
|
1616
1664
|
function criarEntrypointsClientesIa() {
|
|
1617
1665
|
return [
|
|
1618
1666
|
{
|
|
@@ -1656,6 +1704,7 @@ function criarFailClosedAgentContext() {
|
|
|
1656
1704
|
"Se a resposta humana estiver em PT-BR, preserve acentos e símbolos mesmo que a DSL use ASCII.",
|
|
1657
1705
|
"Se um arquivo de código tiver SEMA-GOVERNED, consulte Sema e o contrato aplicável antes de editar.",
|
|
1658
1706
|
"Se uma chamada Sema estourar por timeout local, aumente o timeout e tente de novo; timeout do agente não libera ação sem Sema.",
|
|
1707
|
+
"Se a tarefa tiver UI e você não conseguir garantir um padrão visual moderno mínimo, pare e peça revisão em vez de entregar interface genérica.",
|
|
1659
1708
|
];
|
|
1660
1709
|
}
|
|
1661
1710
|
function criarAgentContextPack(guiaPorCapacidade) {
|
|
@@ -1767,7 +1816,7 @@ function criarAgentContextPack(guiaPorCapacidade) {
|
|
|
1767
1816
|
];
|
|
1768
1817
|
return {
|
|
1769
1818
|
nome: "Agent Context Pack",
|
|
1770
|
-
versao:
|
|
1819
|
+
versao: 4,
|
|
1771
1820
|
objetivo: "Dar a agentes IA uma entrada curta, estruturada e auditável antes de abrir código cru ou inventar contexto.",
|
|
1772
1821
|
ordemLeitura: [
|
|
1773
1822
|
ARQUIVO_SEMA_BOOT,
|
|
@@ -1790,17 +1839,19 @@ function criarAgentContextPack(guiaPorCapacidade) {
|
|
|
1790
1839
|
"Responda no idioma do usuário e preserve acentos, cedilha, pontuação e símbolos humanos.",
|
|
1791
1840
|
"Mantenha o cabeçalho SEMA-GOVERNED em código gerado ou governado e volte ao contrato antes de editar.",
|
|
1792
1841
|
"Se uma chamada Sema estourar por timeout local, aumente o timeout e tente novamente; não trate lentidão como sessão inativa.",
|
|
1842
|
+
"Se a tarefa tiver UI, trate design moderno como requisito governado por capacidade.",
|
|
1793
1843
|
],
|
|
1794
1844
|
proibicoes: [
|
|
1795
1845
|
"Não inventar sintaxe Sema fora da gramática e dos exemplos oficiais.",
|
|
1796
1846
|
"Não tratar README, texto livre ou código como fonte superior ao contrato.",
|
|
1797
1847
|
"Não sincronizar segredos, .env, node_modules, builds, caches, uploads ou artefatos privados fora do escopo.",
|
|
1798
1848
|
"Não publicar, deployar ou remover capacidade sem contrato, drift e verificação.",
|
|
1799
|
-
"Não
|
|
1849
|
+
"Não assumir repositório público, GitHub Release pública ou leitura local pelo MCP; confira docs de repositórios e AGENTS.md.",
|
|
1800
1850
|
"Não usar a estética ASCII da DSL como desculpa para escrever PT-BR sem acentos.",
|
|
1801
1851
|
"Não remover SEMA-GOVERNED nem substituir drift por comentário dentro do código.",
|
|
1802
1852
|
"Não copiar o contrato inteiro para comentário de código; mantenha descrição humana curta.",
|
|
1803
1853
|
"Não tratar timeout definido pelo agente como falha do Sema ou permissão para pular gate.",
|
|
1854
|
+
"Não entregar interface genérica, cinza, com cara de template antigo ou sem estados visuais quando a tarefa envolve UI.",
|
|
1804
1855
|
],
|
|
1805
1856
|
prioridades: [
|
|
1806
1857
|
"Menor artefato suficiente primeiro.",
|
|
@@ -1808,6 +1859,7 @@ function criarAgentContextPack(guiaPorCapacidade) {
|
|
|
1808
1859
|
"Exemplos oficiais antes de nova sintaxe.",
|
|
1809
1860
|
"Diagnóstico estruturado antes de opinião livre.",
|
|
1810
1861
|
"Retry progressivo em timeout antes de declarar bloqueio.",
|
|
1862
|
+
"Design visual por capacidade quando houver UI.",
|
|
1811
1863
|
"Se risco ou escopo estiver ambíguo, parar e pedir contrato/contexto.",
|
|
1812
1864
|
],
|
|
1813
1865
|
fontes,
|
|
@@ -1825,6 +1877,7 @@ function criarAgentContextPack(guiaPorCapacidade) {
|
|
|
1825
1877
|
politicaIdioma: criarPoliticaIdiomaAgentContext(),
|
|
1826
1878
|
politicaCodigoGovernado: criarPoliticaCodigoGovernadoAgentContext(),
|
|
1827
1879
|
politicaTimeoutResumo: criarPoliticaTimeoutResumoAgentContext(),
|
|
1880
|
+
politicaDesignVisual: criarPoliticaDesignVisualAgentContext(),
|
|
1828
1881
|
failClosed: criarFailClosedAgentContext(),
|
|
1829
1882
|
};
|
|
1830
1883
|
}
|
|
@@ -1832,6 +1885,7 @@ function renderizarSemaBoot(agentContextPack) {
|
|
|
1832
1885
|
const politica = agentContextPack.politicaIdioma;
|
|
1833
1886
|
const politicaCodigo = agentContextPack.politicaCodigoGovernado;
|
|
1834
1887
|
const politicaTimeout = agentContextPack.politicaTimeoutResumo;
|
|
1888
|
+
const politicaDesign = agentContextPack.politicaDesignVisual;
|
|
1835
1889
|
return `# SEMA_BOOT
|
|
1836
1890
|
|
|
1837
1891
|
Você está em um projeto governado por Sema. O contrato semântico vem antes de qualquer ação.
|
|
@@ -1859,6 +1913,16 @@ ${politicaCodigo.regra}
|
|
|
1859
1913
|
- IA média: ${politicaCodigo.porCapacidade.media}
|
|
1860
1914
|
- IA forte: ${politicaCodigo.porCapacidade.forte}
|
|
1861
1915
|
|
|
1916
|
+
## Design visual quando houver UI
|
|
1917
|
+
|
|
1918
|
+
${politicaDesign.regra}
|
|
1919
|
+
|
|
1920
|
+
- Aplicar quando: ${politicaDesign.aplicarQuando}
|
|
1921
|
+
- IA fraca: ${politicaDesign.porCapacidade.fraca}
|
|
1922
|
+
- IA média: ${politicaDesign.porCapacidade.media}
|
|
1923
|
+
- IA forte: ${politicaDesign.porCapacidade.forte}
|
|
1924
|
+
- Proibido: ${politicaDesign.proibicoes.slice(0, 5).join(", ")}.
|
|
1925
|
+
|
|
1862
1926
|
## Timeout e retry
|
|
1863
1927
|
|
|
1864
1928
|
${politicaTimeout.regra}
|
|
@@ -1886,6 +1950,7 @@ ${agentContextPack.failClosed.map((regra) => `- ${regra}`).join("\n")}
|
|
|
1886
1950
|
}
|
|
1887
1951
|
function renderizarSemaSmallModel(agentContextPack) {
|
|
1888
1952
|
const politicaTimeout = agentContextPack.politicaTimeoutResumo;
|
|
1953
|
+
const politicaDesign = agentContextPack.politicaDesignVisual;
|
|
1889
1954
|
return `# SEMA_SMALL_MODEL
|
|
1890
1955
|
|
|
1891
1956
|
Leia isto primeiro se você tem pouco contexto, pouca memória, pouco tool use ou tendência a ignorar instruções longas.
|
|
@@ -1899,6 +1964,7 @@ Leia isto primeiro se você tem pouco contexto, pouca memória, pouco tool use o
|
|
|
1899
1964
|
7. Responda no idioma do usuário. Em PT-BR, use acentos e símbolos normais.
|
|
1900
1965
|
8. Se abrir código com \`${agentContextPack.politicaCodigoGovernado.marcador}\`: volte ao contrato, chame Sema e só então edite.
|
|
1901
1966
|
9. Se Sema estourar por timeout local: aumente o timeout e tente de novo. Não trate isso como falha do Sema.
|
|
1967
|
+
10. Se a tarefa tiver UI: aplique design moderno mínimo, responsivo, com hierarquia clara e estados visuais. Não entregue formulário cinza genérico.
|
|
1902
1968
|
|
|
1903
1969
|
Ordem curta:
|
|
1904
1970
|
|
|
@@ -1916,12 +1982,20 @@ Timeout:
|
|
|
1916
1982
|
- Se o projeto inteiro for lento, escopar para \`sema resumo <arquivo.sema> --micro --para mudanca\`.
|
|
1917
1983
|
- ${politicaTimeout.ateQuandoTentar}
|
|
1918
1984
|
|
|
1985
|
+
Design visual:
|
|
1986
|
+
|
|
1987
|
+
- ${politicaDesign.regra}
|
|
1988
|
+
- IA fraca: ${politicaDesign.porCapacidade.fraca}
|
|
1989
|
+
- Evidência mínima: ${politicaDesign.evidencias.fraca.join(", ")}.
|
|
1990
|
+
- Proibido: ${politicaDesign.proibicoes.slice(0, 5).join(", ")}.
|
|
1991
|
+
|
|
1919
1992
|
Fail-closed:
|
|
1920
1993
|
|
|
1921
1994
|
${agentContextPack.failClosed.map((regra) => `- ${regra}`).join("\n")}
|
|
1922
1995
|
`;
|
|
1923
1996
|
}
|
|
1924
1997
|
function renderizarDocumentoAgentesPorCapacidade(agentContextPack) {
|
|
1998
|
+
const politicaDesign = agentContextPack.politicaDesignVisual;
|
|
1925
1999
|
return `# Agentes por capacidade
|
|
1926
2000
|
|
|
1927
2001
|
Sema deve funcionar em agentes fortes, médios e fracos. A diferença não é só tamanho de contexto; é disciplina operacional.
|
|
@@ -1934,6 +2008,19 @@ Arquivos gerados ou governados pela Sema devem manter o marcador \`${agentContex
|
|
|
1934
2008
|
- Média: ${agentContextPack.politicaCodigoGovernado.porCapacidade.media}
|
|
1935
2009
|
- Forte: ${agentContextPack.politicaCodigoGovernado.porCapacidade.forte}
|
|
1936
2010
|
|
|
2011
|
+
## Design Visual
|
|
2012
|
+
|
|
2013
|
+
${politicaDesign.regra}
|
|
2014
|
+
|
|
2015
|
+
- Fraca: ${politicaDesign.porCapacidade.fraca}
|
|
2016
|
+
Evidência: ${politicaDesign.evidencias.fraca.join(", ")}.
|
|
2017
|
+
- Média: ${politicaDesign.porCapacidade.media}
|
|
2018
|
+
Evidência: ${politicaDesign.evidencias.media.join(", ")}.
|
|
2019
|
+
- Forte: ${politicaDesign.porCapacidade.forte}
|
|
2020
|
+
Evidência: ${politicaDesign.evidencias.forte.join(", ")}.
|
|
2021
|
+
- Proibido: ${politicaDesign.proibicoes.join(", ")}.
|
|
2022
|
+
- Critérios mínimos: ${politicaDesign.criteriosMinimos.join(", ")}.
|
|
2023
|
+
|
|
1937
2024
|
## Fraca
|
|
1938
2025
|
|
|
1939
2026
|
Use para Copilot em modo simples, Cline/Roo com pouco contexto, modelos locais pequenos e agentes que ignoram instrução longa.
|
|
@@ -1984,6 +2071,7 @@ ${agentContextPack.entrypointsClientes.map((cliente) => `- ${cliente.cliente}: $
|
|
|
1984
2071
|
function renderizarInstrucaoClienteSema(cliente, capacidade, agentContextPack) {
|
|
1985
2072
|
const guia = agentContextPack.guiaPorCapacidade[capacidade];
|
|
1986
2073
|
const politicaTimeout = agentContextPack.politicaTimeoutResumo;
|
|
2074
|
+
const politicaDesign = agentContextPack.politicaDesignVisual;
|
|
1987
2075
|
const tituloCliente = cliente === "generico" ? "agente" : cliente;
|
|
1988
2076
|
return `# Sema para ${tituloCliente}
|
|
1989
2077
|
|
|
@@ -2013,6 +2101,12 @@ Código governado:
|
|
|
2013
2101
|
- Ao encontrar esse marcador, volte ao contrato .sema aplicável e chame Sema antes de editar.
|
|
2014
2102
|
- Comentário de código é lembrete curto; não substitui drift, docs-impacto nem finalizar-mudanca.
|
|
2015
2103
|
|
|
2104
|
+
Design visual:
|
|
2105
|
+
- Se houver UI, design moderno é requisito governado, não enfeite.
|
|
2106
|
+
- Capacidade ${capacidade}: ${politicaDesign.porCapacidade[capacidade]}
|
|
2107
|
+
- Evidências: ${politicaDesign.evidencias[capacidade].join(", ")}.
|
|
2108
|
+
- Proibido: ${politicaDesign.proibicoes.slice(0, 5).join(", ")}.
|
|
2109
|
+
|
|
2016
2110
|
Idioma:
|
|
2017
2111
|
- Responda no idioma do usuário.
|
|
2018
2112
|
- Em PT-BR, use acentos, cedilha, pontuação e símbolos normais.
|
|
@@ -2396,6 +2490,15 @@ function renderizarResumoProjetoMarkdown(geradoEm, modulos, guiaPorCapacidade) {
|
|
|
2396
2490
|
`- IA média: ${agentContextPack.politicaCodigoGovernado.porCapacidade.media}`,
|
|
2397
2491
|
`- IA forte: ${agentContextPack.politicaCodigoGovernado.porCapacidade.forte}`,
|
|
2398
2492
|
"",
|
|
2493
|
+
"## Design visual",
|
|
2494
|
+
"",
|
|
2495
|
+
`- Regra: ${agentContextPack.politicaDesignVisual.regra}`,
|
|
2496
|
+
`- Aplicar quando: ${agentContextPack.politicaDesignVisual.aplicarQuando}`,
|
|
2497
|
+
`- IA fraca: ${agentContextPack.politicaDesignVisual.porCapacidade.fraca}`,
|
|
2498
|
+
`- IA média: ${agentContextPack.politicaDesignVisual.porCapacidade.media}`,
|
|
2499
|
+
`- IA forte: ${agentContextPack.politicaDesignVisual.porCapacidade.forte}`,
|
|
2500
|
+
`- Proibido: ${agentContextPack.politicaDesignVisual.proibicoes.slice(0, 5).join(", ")}`,
|
|
2501
|
+
"",
|
|
2399
2502
|
"## Timeout e retry",
|
|
2400
2503
|
"",
|
|
2401
2504
|
`- Regra: ${agentContextPack.politicaTimeoutResumo.regra}`,
|
|
@@ -2768,6 +2871,7 @@ async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escreverNaRaiz
|
|
|
2768
2871
|
`ENTRADA_IA: ${entradaCanonica.porCapacidade.fraca.join(" -> ")}`,
|
|
2769
2872
|
`TIMEOUT_SEMA: timeout local nao e falha; retry progressivo ${agentContextPack.politicaTimeoutResumo.escalonamentoSegundos.map((segundos) => `${segundos}s`).join(" -> ")}; escopar arquivo se projeto inteiro for lento`,
|
|
2770
2873
|
`CODIGO_GOVERNADO: ${agentContextPack.politicaCodigoGovernado.marcador} -> chamar Sema antes de editar codigo gerado`,
|
|
2874
|
+
`DESIGN_VISUAL: se houver UI, moderno obrigatorio; fraca=padrao seguro responsivo; media=tokens+estados; forte=screenshot+assets+microinteracoes`,
|
|
2771
2875
|
`TOP_MODULOS: ${resumirListaTexto(modulos.map((modulo) => modulo.modulo), 3)}`,
|
|
2772
2876
|
`TOP_RISCOS: ${resumirListaTexto(unicosOrdenados(modulos.flatMap((modulo) => modulo.riscosPrincipais)), 3)}`,
|
|
2773
2877
|
`TOP_LACUNAS: ${resumirListaTexto(unicosOrdenados(modulos.flatMap((modulo) => modulo.lacunas)), 3)}`,
|
|
@@ -2788,6 +2892,7 @@ async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escreverNaRaiz
|
|
|
2788
2892
|
`ENTRADA_IA: ${entradaCanonica.porCapacidade.media.join(" -> ")}`,
|
|
2789
2893
|
`TIMEOUT_SEMA: ${agentContextPack.politicaTimeoutResumo.regra} Escale ${agentContextPack.politicaTimeoutResumo.escalonamentoSegundos.map((segundos) => `${segundos}s`).join(" -> ")} antes de declarar bloqueio.`,
|
|
2790
2894
|
`CODIGO_GOVERNADO: ${agentContextPack.politicaCodigoGovernado.marcador} -> docs-impacto e drift antes de alterar comportamento`,
|
|
2895
|
+
`DESIGN_VISUAL: ${agentContextPack.politicaDesignVisual.regra} Fraca=${agentContextPack.politicaDesignVisual.porCapacidade.fraca} Media=${agentContextPack.politicaDesignVisual.porCapacidade.media} Forte=${agentContextPack.politicaDesignVisual.porCapacidade.forte}`,
|
|
2791
2896
|
`TOP_MODULOS: ${resumirListaTexto(modulos.map((modulo) => modulo.modulo), 6)}`,
|
|
2792
2897
|
`TOP_RISCOS: ${resumirListaTexto(unicosOrdenados(modulos.flatMap((modulo) => modulo.riscosPrincipais)), 6)}`,
|
|
2793
2898
|
`TOP_LACUNAS: ${resumirListaTexto(unicosOrdenados(modulos.flatMap((modulo) => modulo.lacunas)), 6)}`,
|