@semacode/cli 1.5.40 → 1.5.42

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.
Files changed (57) hide show
  1. package/AGENTS.md +34 -22
  2. package/AGENT_CONTEXT_PACK.json +9 -4
  3. package/README.md +21 -12
  4. package/SEMA_BRIEF.curto.txt +4 -4
  5. package/SEMA_BRIEF.md +97 -97
  6. package/SEMA_BRIEF.micro.txt +3 -3
  7. package/SEMA_INDEX.json +179 -321
  8. package/dist/agentContextPack.js +9 -4
  9. package/dist/agentContextPack.js.map +1 -1
  10. package/dist/agentEntryPoints.js +27 -12
  11. package/dist/agentEntryPoints.js.map +1 -1
  12. package/dist/billing/index.d.ts +28 -0
  13. package/dist/billing/index.js +189 -1
  14. package/dist/billing/index.js.map +1 -1
  15. package/dist/bridge.d.ts +1 -1
  16. package/dist/bridge.js +16 -4
  17. package/dist/bridge.js.map +1 -1
  18. package/dist/cliArgs.js +5 -0
  19. package/dist/cliArgs.js.map +1 -1
  20. package/dist/comandos.d.ts +0 -9
  21. package/dist/comandos.js +12 -17
  22. package/dist/comandos.js.map +1 -1
  23. package/dist/index.js +1 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/index.part01.d.ts +1 -1
  26. package/dist/index.part01.js +2 -1
  27. package/dist/index.part01.js.map +1 -1
  28. package/dist/index.part08.js +4 -0
  29. package/dist/index.part08.js.map +1 -1
  30. package/dist/mcpInstalarChaveCommand.js +38 -11
  31. package/dist/mcpInstalarChaveCommand.js.map +1 -1
  32. package/dist/profileArtefatoValidadores.js +2 -0
  33. package/dist/profileArtefatoValidadores.js.map +1 -1
  34. package/dist/profileI18nCatalogo.d.ts +12 -0
  35. package/dist/profileI18nCatalogo.js +92 -0
  36. package/dist/profileI18nCatalogo.js.map +1 -0
  37. package/dist/profileI18nVisivel.d.ts +11 -0
  38. package/dist/profileI18nVisivel.js +157 -0
  39. package/dist/profileI18nVisivel.js.map +1 -0
  40. package/docs/agentes-por-capacidade.md +1 -1
  41. package/docs/cli.md +21 -9
  42. package/docs/como-ensinar-a-sema-para-ia.md +3 -3
  43. package/docs/fluxo-pratico-ia-sema.md +37 -24
  44. package/docs/instalacao-e-primeiro-uso.md +21 -9
  45. package/docs/integracao-com-ia.md +12 -6
  46. package/docs/mcp.md +9 -9
  47. package/docs/repositories.md +9 -9
  48. package/node_modules/@sema/gerador-css/package.json +1 -1
  49. package/node_modules/@sema/gerador-dart/package.json +1 -1
  50. package/node_modules/@sema/gerador-html/package.json +1 -1
  51. package/node_modules/@sema/gerador-javascript/package.json +1 -1
  52. package/node_modules/@sema/gerador-lua/package.json +1 -1
  53. package/node_modules/@sema/gerador-python/package.json +1 -1
  54. package/node_modules/@sema/gerador-typescript/package.json +1 -1
  55. package/node_modules/@sema/nucleo/package.json +1 -1
  56. package/node_modules/@sema/padroes/package.json +1 -1
  57. package/package.json +10 -10
@@ -0,0 +1,157 @@
1
+ // SEMA-GOVERNED: sema.produto.governanca_ia.qualidade_contrato
2
+ // Descricao: validador observavel de i18n por idioma em artefatos reais do profile Software.
3
+ import { localizacaoDoMatchProfile } from "./profileArtefatoBase.js";
4
+ import { VALIDADORES_I18N } from "./profileI18nCatalogo.js";
5
+ import { criarAchadoArtefatoProfile } from "./profileRegras.js";
6
+ const REGEX_TEXTO_TAG = />\s*([^<>{}]{1,240}?[A-Za-zÀ-ÿ][^<>{}]{0,240})\s*</g;
7
+ const REGEX_ATRIBUTO_VISIVEL = /\b(?:placeholder|aria-label|title|alt|value|label)\s*=\s*(["'])([^"']{1,240})\1/gi;
8
+ const REGEX_LITERAL_STRING = /"([^"\\\r\n]{1,240}(?:\\.[^"\\\r\n]{0,240})*)"|'([^'\\\r\n]{1,240}(?:\\.[^'\\\r\n]{0,240})*)'|`([^`\\]{1,240}(?:\\.[^`\\]{0,240})*)`/g;
9
+ function semAcentos(texto) {
10
+ return texto.normalize("NFD").replace(/\p{Diacritic}/gu, "");
11
+ }
12
+ function normalizarTokenIdioma(token) {
13
+ return token.trim().toLowerCase().replace(/_/g, "-");
14
+ }
15
+ function idiomaSuportado(token) {
16
+ const normalizado = normalizarTokenIdioma(token);
17
+ if (normalizado === "pt" || normalizado === "pt-br" || normalizado === "ptbr")
18
+ return "pt-BR";
19
+ if (normalizado === "es" || normalizado === "es-es" || normalizado === "es-mx" || normalizado === "es-419")
20
+ return "es";
21
+ if (normalizado === "fr" || normalizado === "fr-fr" || normalizado === "fr-ca")
22
+ return "fr";
23
+ return null;
24
+ }
25
+ function adicionarIdioma(idiomas, semValidador, token) {
26
+ const suportado = idiomaSuportado(token);
27
+ if (suportado) {
28
+ idiomas.add(suportado);
29
+ }
30
+ else {
31
+ semValidador.add(normalizarTokenIdioma(token));
32
+ }
33
+ }
34
+ export function detectarEscopoI18nObservavel(contrato) {
35
+ const normalizado = semAcentos(contrato).toLowerCase();
36
+ const mencionaI18n = /\bi18n\b|\bi18n[-_][a-z0-9_-]+/i.test(normalizado);
37
+ const declaraTextoVisivel = mencionaI18n || /\b(?:texto[_ -]?visivel|interface|ui|labels?|mensagens?|placeholder|aria-label|locale|idioma|language|traducao|traducoes|translation|acento|acentos|diacritico|diacriticos|cedilha|mojibake)\b/.test(normalizado);
38
+ const declaraIdiomaOuI18n = mencionaI18n || /\b(?:locale|idioma|language|traducao|traducoes|translation|pt[-_ ]?br|portugues|portuguese|espanhol|spanish|frances|french)\b/.test(normalizado);
39
+ const ativo = declaraTextoVisivel && declaraIdiomaOuI18n;
40
+ if (!ativo)
41
+ return { ativo: false, idiomaNaoDeclarado: false, idiomas: [], idiomasSemValidador: [] };
42
+ const idiomas = new Set();
43
+ const semValidador = new Set();
44
+ if (/\bi18n[-_]ptbr\b|\b(?:pt[-_ ]?br|portugues|portuguese)\b/.test(normalizado))
45
+ idiomas.add("pt-BR");
46
+ if (/\b(?:espanhol|espanol|spanish)\b/.test(normalizado))
47
+ idiomas.add("es");
48
+ if (/\b(?:frances|french)\b/.test(normalizado))
49
+ idiomas.add("fr");
50
+ for (const match of normalizado.matchAll(/\bi18n[-_]([a-z]{2,4}(?:[-_][a-z0-9]{2,3})?)\b/g)) {
51
+ adicionarIdioma(idiomas, semValidador, match[1] ?? "");
52
+ }
53
+ for (const match of normalizado.matchAll(/\b(?:locale|idioma|language)\s*[:=]?\s*["']?([a-z]{2}(?:[-_][a-z0-9]{2,3})?)\b/g)) {
54
+ adicionarIdioma(idiomas, semValidador, match[1] ?? "");
55
+ }
56
+ return {
57
+ ativo: true,
58
+ idiomaNaoDeclarado: idiomas.size === 0 && semValidador.size === 0,
59
+ idiomas: [...idiomas],
60
+ idiomasSemValidador: [...semValidador],
61
+ };
62
+ }
63
+ function limparTextoSegmento(texto) {
64
+ return texto.replace(/\s+/g, " ").trim();
65
+ }
66
+ function contextoPareceScriptOuEstilo(artefato, indice) {
67
+ const antes = artefato.slice(Math.max(0, indice - 40), indice).toLowerCase();
68
+ return /<\s*(?:script|style|template)\b/.test(antes);
69
+ }
70
+ function textoTemTermoSemDiacritico(texto, validadores) {
71
+ return validadores.some((validador) => validador.termos.some((termo) => termo.regex.test(texto)));
72
+ }
73
+ function literalPareceTecnico(texto, validadores) {
74
+ const valor = texto.trim();
75
+ if (!valor || valor.length > 240)
76
+ return true;
77
+ if (/^(?:GET|POST|PUT|PATCH|DELETE|true|false|null|undefined)$/i.test(valor))
78
+ return true;
79
+ if (/^(?:https?:\/\/|\/|\.\/|#|[A-Z_][A-Z0-9_]*$)/.test(valor))
80
+ return true;
81
+ return /^[a-z0-9_.:/#-]+$/.test(valor) && !textoTemTermoSemDiacritico(valor, validadores);
82
+ }
83
+ function coletarSegmentosTextoVisivel(artefato, validadores) {
84
+ const segmentos = [];
85
+ for (const match of artefato.matchAll(REGEX_TEXTO_TAG)) {
86
+ if (contextoPareceScriptOuEstilo(artefato, match.index ?? 0))
87
+ continue;
88
+ const texto = limparTextoSegmento(match[1] ?? "");
89
+ if (texto)
90
+ segmentos.push({ texto, inicio: (match.index ?? 0) + match[0].indexOf(match[1] ?? ""), contexto: "texto_tag_html" });
91
+ }
92
+ for (const match of artefato.matchAll(REGEX_ATRIBUTO_VISIVEL)) {
93
+ const texto = limparTextoSegmento(match[2] ?? "");
94
+ if (texto)
95
+ segmentos.push({ texto, inicio: (match.index ?? 0) + match[0].indexOf(match[2] ?? ""), contexto: "atributo_visivel_html" });
96
+ }
97
+ for (const match of artefato.matchAll(REGEX_LITERAL_STRING)) {
98
+ const texto = limparTextoSegmento(match[1] ?? match[2] ?? match[3] ?? "");
99
+ if (literalPareceTecnico(texto, validadores) || !textoTemTermoSemDiacritico(texto, validadores))
100
+ continue;
101
+ segmentos.push({ texto, inicio: (match.index ?? 0) + match[0].indexOf(texto), contexto: "literal_string_ui" });
102
+ }
103
+ return segmentos;
104
+ }
105
+ function severidadeI18n(maturidade) {
106
+ if (maturidade === "critical")
107
+ return "critical";
108
+ if (maturidade === "draft")
109
+ return "warning";
110
+ return "blocking";
111
+ }
112
+ function criarAchadoIdiomaNaoDeclarado(maturidade) {
113
+ return criarAchadoArtefatoProfile("software_i18n_idioma_nao_declarado", "contrato declara i18n observavel, mas nao declara idioma/locale verificavel", false, severidadeI18n(maturidade), undefined, "declare o idioma explicitamente, por exemplo i18n_ptbr, i18n_es ou locale: pt-BR.", "i18n sem idioma impede validar acentos, diacriticos e texto visivel de forma observavel.", { regra: "i18n_idioma_obrigatorio", risco: "garantia_i18n_ambigua" });
114
+ }
115
+ function criarAchadoIdiomaSemValidador(idioma, maturidade) {
116
+ return criarAchadoArtefatoProfile("software_i18n_idioma_sem_validador_observavel", "contrato declara idioma i18n sem validador observavel registrado", false, severidadeI18n(maturidade), undefined, `adicione validador observavel para "${idioma}" ou remova a garantia de i18n desse idioma.`, "a garantia i18n nao pode aprovar idioma sem regra de verificacao executavel.", { regra: "i18n_validador_por_idioma_obrigatorio", risco: "garantia_i18n_sem_checker" });
117
+ }
118
+ export function avaliarI18nVisivelArtefato(contrato, artefato, maturidade) {
119
+ const escopo = detectarEscopoI18nObservavel(contrato);
120
+ if (!escopo.ativo)
121
+ return [];
122
+ const achados = [];
123
+ if (escopo.idiomaNaoDeclarado)
124
+ achados.push(criarAchadoIdiomaNaoDeclarado(maturidade));
125
+ for (const idioma of escopo.idiomasSemValidador) {
126
+ achados.push(criarAchadoIdiomaSemValidador(idioma, maturidade));
127
+ }
128
+ const validadores = escopo.idiomas.map((idioma) => VALIDADORES_I18N[idioma]);
129
+ const vistos = new Set();
130
+ for (const segmento of coletarSegmentosTextoVisivel(artefato, validadores)) {
131
+ for (const validador of validadores) {
132
+ for (const termo of validador.termos) {
133
+ const match = termo.regex.exec(segmento.texto);
134
+ if (!match)
135
+ continue;
136
+ const inicio = segmento.inicio + match.index;
137
+ const chave = `${validador.idioma}:${inicio}:${match[0].toLowerCase()}`;
138
+ if (vistos.has(chave))
139
+ continue;
140
+ vistos.add(chave);
141
+ const localizacao = localizacaoDoMatchProfile(artefato, inicio, match[0].length);
142
+ achados.push(criarAchadoArtefatoProfile("software_i18n_diacritico_ausente", "texto visivel perdeu diacritico obrigatorio para idioma declarado no contrato", false, severidadeI18n(maturidade), localizacao.trecho, `troque "${match[0]}" por "${termo.esperado}" em ${validador.nome} ou remova essa garantia i18n do contrato.`, `contrato declara i18n observavel para ${validador.idioma}, mas o artefato contem literal de UI sem diacritico no contexto ${segmento.contexto}.`, {
143
+ linha: localizacao.linha,
144
+ coluna: localizacao.coluna,
145
+ inicio: localizacao.inicio,
146
+ fim: localizacao.fim,
147
+ regra: `i18n_${validador.idioma.toLowerCase()}_diacriticos_observaveis`,
148
+ risco: "garantia_i18n_nao_observada",
149
+ }));
150
+ if (achados.length >= 16)
151
+ return achados;
152
+ }
153
+ }
154
+ }
155
+ return achados;
156
+ }
157
+ //# sourceMappingURL=profileI18nVisivel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profileI18nVisivel.js","sourceRoot":"","sources":["../src/profileI18nVisivel.ts"],"names":[],"mappings":"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"}
@@ -110,7 +110,7 @@ Timeout definido pelo agente não é falha do Sema. Se `sema resumo`, `inspecion
110
110
 
111
111
  ## Idioma
112
112
 
113
- A linguagem humana da resposta deve seguir o idioma do usuário e preservar acentos, cedilha, pontuação e símbolos esperados. A DSL .sema pode ter palavras-chave ASCII; isso não autoriza PT-BR sem acentos.
113
+ A linguagem humana da resposta deve seguir o idioma do usuário e preservar acentos, cedilha, pontuação e símbolos esperados. A DSL .sema pode ter palavras-chave ASCII; isso não autoriza PT-BR sem acentos. Em PT-BR, texto humano sem acentos é entrega inválida.
114
114
 
115
115
  A gramática Sema pode ter palavras-chave ASCII. Isso não autoriza resposta humana sem acentos.
116
116
 
package/docs/cli.md CHANGED
@@ -7,10 +7,11 @@
7
7
 
8
8
  ## English
9
9
 
10
- The Sema CLI is installed from the `@semacode/cli` npm installer package. It is not the commercial coordinator and it does not publish the MCP server or product control plane.
10
+ The Sema CLI is installed from the `@semacode/cli` npm package. In local IDEs it is the complete Sema runtime: it reads the workspace, runs gates, validates contracts, checks drift/impact, and consults the SEMAS control plane before operating.
11
11
 
12
- Use it for the work the MCP authorizes:
12
+ Use it for local-agent work:
13
13
 
14
+ - run `sema preflight <command> --json` before action;
14
15
  - validate `.sema` contracts;
15
16
  - inspect modules, tasks, routes, and effects;
16
17
  - check drift against live or selected code;
@@ -20,13 +21,16 @@ Use it for the work the MCP authorizes:
20
21
  - run profile and pipeline validators;
21
22
  - execute local or VPS-side project actions.
22
23
 
23
- The private MCP decides when to charge SEMAS and which operation can continue. The CLI executes the technical work in the environment where it has file access.
24
+ The key installer from the site installs Node/npm when missing, installs the CLI, and saves `SEMA_CLI_AUTH_TOKEN`, `SEMA_CLI_CONTROL_PLANE_URL`, and compatibility MCP env vars. If `preflight` returns anything other than `decisao=use_cli_local`, stop. Do not call remote MCP, `sema_sync`, `sema_contratos_sincronizar`, or `sema mcp-client` just to read a local workspace.
25
+
26
+ Remote MCP remains the web/chat surface for ChatGPT, Lovable, GPTs, and similar clients without local workspace access. It uses the same commercial control plane and SEMAS account.
24
27
 
25
28
  ```bash
26
29
  npm install -g @semacode/cli
27
30
  ```
28
31
 
29
32
  ```bash
33
+ sema preflight resumo --json
30
34
  sema resumo . --curto
31
35
  sema validar contratos/pedidos.sema --json
32
36
  sema drift contratos/pedidos.sema --escopo modulo --json
@@ -36,10 +40,11 @@ sema finalizar-mudanca --intencao "alterar pedidos" --doc-lida README.md --json
36
40
 
37
41
  ## Português
38
42
 
39
- A CLI da Sema é instalada pelo pacote npm do instalador `@semacode/cli`. Ela não é o coordenador comercial e não publica o servidor MCP nem o control plane do produto.
43
+ A CLI da Sema é instalada pelo pacote npm `@semacode/cli`. Em IDE local, ela é o runtime completo da Sema: lê o workspace, roda gates, valida contratos, mede drift/impacto e consulta o control plane de SEMAS antes de operar.
40
44
 
41
- Use a CLI para o trabalho que o MCP autorizar:
45
+ Use a CLI para trabalho de agente local:
42
46
 
47
+ - rodar `sema preflight <comando> --json` antes de agir;
43
48
  - validar contratos `.sema`;
44
49
  - inspecionar módulos, tasks, rotas e efeitos;
45
50
  - medir drift contra código vivo ou código selecionado;
@@ -49,13 +54,16 @@ Use a CLI para o trabalho que o MCP autorizar:
49
54
  - rodar validadores de profiles e pipelines;
50
55
  - executar ações locais ou na VPS.
51
56
 
52
- O MCP privado decide quando cobrar SEMAS e qual operação pode continuar. A CLI executa o trabalho técnico no ambiente onde tem acesso aos arquivos.
57
+ O instalador do site instala Node/npm quando faltar, instala a CLI e grava `SEMA_CLI_AUTH_TOKEN`, `SEMA_CLI_CONTROL_PLANE_URL` e variáveis MCP de compatibilidade. Se o `preflight` retornar qualquer coisa diferente de `decisao=use_cli_local`, pare. Não chame MCP remoto, `sema_sync`, `sema_contratos_sincronizar` nem `sema mcp-client` só para ler workspace local.
58
+
59
+ O MCP remoto continua sendo a superfície web/chat para ChatGPT, Lovable, GPTs e clientes parecidos sem acesso ao workspace local. Ele usa o mesmo control plane comercial e a mesma conta de SEMAS.
53
60
 
54
61
  ```bash
55
62
  npm install -g @semacode/cli
56
63
  ```
57
64
 
58
65
  ```bash
66
+ sema preflight resumo --json
59
67
  sema resumo . --curto
60
68
  sema validar contratos/pedidos.sema --json
61
69
  sema drift contratos/pedidos.sema --escopo modulo --json
@@ -65,10 +73,11 @@ sema finalizar-mudanca --intencao "alterar pedidos" --doc-lida README.md --json
65
73
 
66
74
  ## Español
67
75
 
68
- La CLI de Sema se instala desde el paquete npm instalador `@semacode/cli`. No es el coordinador comercial y no publica el servidor MCP ni el control plane del producto.
76
+ La CLI de Sema se instala desde el paquete npm `@semacode/cli`. En una IDE local es el runtime completo de Sema: lee el workspace, ejecuta gates, valida contratos, mide drift/impacto y consulta el control plane de SEMAS antes de operar.
69
77
 
70
- Usa la CLI para el trabajo que el MCP autorice:
78
+ Usa la CLI para trabajo de agente local:
71
79
 
80
+ - ejecutar `sema preflight <comando> --json` antes de actuar;
72
81
  - validar contratos `.sema`;
73
82
  - inspeccionar módulos, tasks, rutas y efectos;
74
83
  - medir drift contra código vivo o código seleccionado;
@@ -78,13 +87,16 @@ Usa la CLI para el trabajo que el MCP autorice:
78
87
  - ejecutar validadores de profiles y pipelines;
79
88
  - ejecutar acciones locales o en la VPS.
80
89
 
81
- El MCP privado decide cuándo cobrar SEMAS y qué operación puede continuar. La CLI ejecuta el trabajo técnico en el entorno donde tiene acceso a los archivos.
90
+ El instalador del sitio instala Node/npm cuando falten, instala la CLI y guarda `SEMA_CLI_AUTH_TOKEN`, `SEMA_CLI_CONTROL_PLANE_URL` y variables MCP de compatibilidad. Si `preflight` devuelve algo distinto de `decisao=use_cli_local`, para. No llames el MCP remoto, `sema_sync`, `sema_contratos_sincronizar` ni `sema mcp-client` solo para leer un workspace local.
91
+
92
+ El MCP remoto sigue siendo la superficie web/chat para ChatGPT, Lovable, GPTs y clientes similares sin acceso al workspace local. Usa el mismo control plane comercial y la misma cuenta de SEMAS.
82
93
 
83
94
  ```bash
84
95
  npm install -g @semacode/cli
85
96
  ```
86
97
 
87
98
  ```bash
99
+ sema preflight resumo --json
88
100
  sema resumo . --curto
89
101
  sema validar contratos/pedidos.sema --json
90
102
  sema drift contratos/pedidos.sema --escopo modulo --json
@@ -9,7 +9,7 @@
9
9
 
10
10
  Sema is taught to an AI through operational context, not through vague explanations. The agent needs syntax, semantics, intermediate representation, examples, and the project contract before it touches code or documents.
11
11
 
12
- In local IDEs, the first step is to confirm that `AGENTS.md` exists in the project root. If it does not exist, download `https://sema.otimitare.online/AGENTS.md` into the project. In web chats, do not download files into the chat environment; use `sema_chat_contexto`, `sema_sync`, and inline content.
12
+ In local IDEs, the first step is to confirm that `AGENTS.md` exists in the project root and that the complete Sema CLI is installed. Then run `sema preflight resumo --json`; if the decision is not `use_cli_local`, stop. With CLI authorized, run `sema resumo`, `sema docs-impacto`, `sema inspecionar`, `sema drift`, and `sema impacto` locally. Do not call remote MCP, `sema_sync`, `sema_contratos_sincronizar`, or `sema mcp-client` to read a local workspace. In web chats, do not download files into the chat environment; call `sema_chat_contexto` and then `sema_sync` with contract, selected code, operational docs, and an index.
13
13
 
14
14
  The correct framing is simple: contract first, evidence before action, and no guessing from raw code when Sema can provide summary, drift, impact, and required docs.
15
15
 
@@ -17,7 +17,7 @@ The correct framing is simple: contract first, evidence before action, and no gu
17
17
 
18
18
  A Sema é ensinada para IA por contexto operacional, não por explicação vaga. O agente precisa de sintaxe, semântica, representação intermediária, exemplos e contrato do projeto antes de tocar código ou documentos.
19
19
 
20
- Em IDE local, o primeiro passo é confirmar que `AGENTS.md` existe na raiz do projeto. Se não existir, baixe `https://sema.otimitare.online/AGENTS.md` para o projeto. Em chats web, não baixe arquivos no ambiente do chat; use `sema_chat_contexto`, `sema_sync` e conteúdo inline.
20
+ Em IDE local, o primeiro passo é confirmar que `AGENTS.md` existe na raiz do projeto e que a CLI completa da Sema está instalada. Depois rode `sema preflight resumo --json`; se a decisão não for `use_cli_local`, pare. Com CLI autorizada, rode `sema resumo`, `sema docs-impacto`, `sema inspecionar`, `sema drift` e `sema impacto` localmente. Não chame MCP remoto, `sema_sync`, `sema_contratos_sincronizar` nem `sema mcp-client` para ler workspace local. Em chats web, não baixe arquivos no ambiente do chat; chame `sema_chat_contexto` e depois `sema_sync` com contrato, código selecionado, docs operacionais e índice.
21
21
 
22
22
  A moldura correta é simples: contrato primeiro, evidência antes da ação e nada de adivinhar lendo código cru quando a Sema pode entregar resumo, drift, impacto e docs obrigatórias.
23
23
 
@@ -25,6 +25,6 @@ A moldura correta é simples: contrato primeiro, evidência antes da ação e na
25
25
 
26
26
  Sema se enseña a una IA con contexto operativo, no con explicaciones vagas. El agente necesita sintaxis, semántica, representación intermedia, ejemplos y contrato del proyecto antes de tocar código o documentos.
27
27
 
28
- En IDE local, el primer paso es confirmar que `AGENTS.md` existe en la raíz del proyecto. Si no existe, descarga `https://sema.otimitare.online/AGENTS.md` en el proyecto. En chats web, no descargues archivos en el entorno del chat; usa `sema_chat_contexto`, `sema_sync` y contenido inline.
28
+ En una IDE local, el primer paso es confirmar que `AGENTS.md` existe en la raíz del proyecto y que la CLI completa de Sema está instalada. Después ejecuta `sema preflight resumo --json`; si la decisión no es `use_cli_local`, para. Con la CLI autorizada, ejecuta `sema resumo`, `sema docs-impacto`, `sema inspecionar`, `sema drift` y `sema impacto` localmente. No llames el MCP remoto, `sema_sync`, `sema_contratos_sincronizar` ni `sema mcp-client` para leer un workspace local. En chats web, no descargues archivos en el entorno del chat; llama `sema_chat_contexto` y después `sema_sync` con contrato, código seleccionado, docs operativas e índice.
29
29
 
30
30
  El encuadre correcto es simple: contrato primero, evidencia antes de la acción y nada de adivinar leyendo código crudo cuando Sema puede entregar resumen, drift, impacto y docs obligatorias.
@@ -22,16 +22,26 @@ Regra de idioma humano: responda no idioma do usuário. Em PT-BR, use acentos, c
22
22
 
23
23
  Regra de timeout: timeout local do agente não é falha do Sema. Se `sema resumo`, `drift`, `docs-impacto` ou outro gate estourar, aumente o timeout e tente de novo antes de declarar bloqueio. Para projeto grande, escopo menor vem primeiro: `sema resumo caminho/arquivo.sema --micro --para mudanca`.
24
24
 
25
+ ## Superfície obrigatória
26
+
27
+ 1. IDE local com workspace no disco: rode `sema preflight resumo --json`. Se `decisao` não for `use_cli_local`, pare bloqueado.
28
+ 2. IDE local autorizada: use somente a CLI local para `resumo`, `docs-impacto`, `inspecionar`, `drift`, `impacto`, `validar`, `verificar` e `finalizar-mudanca`.
29
+ 3. IDE local proibida: não chame MCP remoto, `sema_sync`, `sema_contratos_sincronizar` nem `sema mcp-client` para ler o workspace local.
30
+ 4. Web/chat/remoto sem workspace local: use `sema_chat_contexto`, depois `sema_sync` inline com contrato `.sema`, código selecionado, documentação operacional e índice; use o `projeto` retornado.
31
+ 5. Se a IA não consegue identificar se está em IDE local ou web/chat remoto, ela deve parar e declarar bloqueio. Não invente superfície.
32
+
25
33
  ## Fluxo curto
26
-
27
- 1. ler contexto do projeto
28
- 2. identificar a capacidade da IA
29
- 3. identificar o módulo alvo
30
- 4. consultar o menor artefato semântico suficiente
31
- 5. editar
32
- 6. formatar
33
- 7. validar
34
- 8. verificar
34
+
35
+ 1. identificar a superfície: CLI local ou MCP remoto web/chat
36
+ 2. em IDE local, rodar `sema preflight resumo --json` e parar se não retornar `use_cli_local`
37
+ 3. ler contexto do projeto
38
+ 4. identificar a capacidade da IA
39
+ 5. identificar o módulo alvo
40
+ 6. consultar o menor artefato semântico suficiente
41
+ 7. editar
42
+ 8. formatar
43
+ 9. validar
44
+ 10. verificar
35
45
 
36
46
  ## Fluxo detalhado
37
47
 
@@ -51,9 +61,9 @@ Se o trabalho estiver ligado a pagamento, ler também:
51
61
 
52
62
  Antes de despejar contexto na IA, escolha o que ela aguenta:
53
63
 
54
- - IA fraca, gratuita ou com pouca disciplina: `SEMA_BOOT.md`, `SEMA_SMALL_MODEL.md`, `sema resumo --micro` e `briefing.min.json`
55
- - IA média: `sema resumo --curto`, `briefing.min.json` e `drift.json`
56
- - IA forte: `contexto-ia`, `briefing.json`, `drift.json`, `ir.json` e `ast.json`
64
+ - IA fraca, gratuita ou com pouca disciplina: `sema preflight resumo --json`, `SEMA_BOOT.md`, `SEMA_SMALL_MODEL.md`, `sema resumo --micro` e `briefing.min.json`
65
+ - IA média: `sema preflight resumo --json`, `sema resumo --curto`, `briefing.min.json` e `drift.json`
66
+ - IA forte: `sema preflight resumo --json`, `contexto-ia`, `briefing.json`, `drift.json`, `ir.json` e `ast.json`
57
67
 
58
68
  Se qualquer comando Sema acima estourar timeout definido pela própria IA, ela deve aumentar o timeout e repetir. Timeout do agente não autoriza pular Sema nem concluir que a sessão está inativa.
59
69
 
@@ -75,10 +85,11 @@ Regra pratica:
75
85
 
76
86
  Antes de alterar, a IA deve executar:
77
87
 
78
- ```bash
79
- sema resumo caminho/arquivo.sema --curto --para mudanca
80
- sema ast caminho/arquivo.sema --json
81
- sema ir caminho/arquivo.sema --json
88
+ ```bash
89
+ sema preflight resumo --json
90
+ sema resumo caminho/arquivo.sema --curto --para mudanca
91
+ sema ast caminho/arquivo.sema --json
92
+ sema ir caminho/arquivo.sema --json
82
93
  ```
83
94
 
84
95
  Objetivo:
@@ -150,20 +161,22 @@ sema verificar arquivo-ou-pasta --json --saida ./.tmp/verificacao-ia
150
161
 
151
162
  Se voce quiser o menor fluxo aceitavel para uma IA fraca:
152
163
 
153
- ```bash
154
- sema resumo caminho/arquivo.sema --micro --para mudanca
155
- sema formatar caminho/arquivo.sema
156
- sema validar caminho/arquivo.sema --json
164
+ ```bash
165
+ sema preflight resumo --json
166
+ sema resumo caminho/arquivo.sema --micro --para mudanca
167
+ sema formatar caminho/arquivo.sema
168
+ sema validar caminho/arquivo.sema --json
157
169
  ```
158
170
 
159
171
  Mas, sendo sincero, o fluxo bom mesmo e fechar com `verificar`.
160
172
 
161
173
  Se a tarefa envolver código derivado, o fluxo mínimo aceitavel vira:
162
174
 
163
- ```bash
164
- sema ir caminho/arquivo.sema --json
165
- sema formatar caminho/arquivo.sema
166
- sema validar caminho/arquivo.sema --json
175
+ ```bash
176
+ sema preflight resumo --json
177
+ sema ir caminho/arquivo.sema --json
178
+ sema formatar caminho/arquivo.sema
179
+ sema validar caminho/arquivo.sema --json
167
180
  sema compilar caminho/arquivo.sema --alvo typescript --saida ./saida/typescript
168
181
  ```
169
182
 
@@ -7,9 +7,13 @@
7
7
 
8
8
  ## English
9
9
 
10
- Sema is private. The MCP endpoint is the primary product surface and coordinates authentication, SEMAS consumption, profiles, pipelines, and project mirrors.
10
+ Sema is private. Local IDEs use the complete Sema CLI. Web/chat clients without local workspace access use the remote MCP.
11
11
 
12
- Local IDEs should receive `AGENTS.md` first. Web chats should use `sema_chat_contexto` and `sema_sync` instead of downloading files into the chat environment.
12
+ In a local IDE, install the CLI and key, keep `AGENTS.md` in the project root, run `sema preflight resumo --json`, and stop unless `decisao` is `use_cli_local`. After that, use local CLI commands: `sema resumo`, `sema docs-impacto`, `sema inspecionar`, `sema drift`, `sema impacto`, `sema validar`, and `sema finalizar-mudanca`.
13
+
14
+ Do not call remote MCP, `sema_sync`, `sema_contratos_sincronizar`, or `sema mcp-client` to read a local workspace. Those paths are forbidden for local IDE work when the CLI is operational.
15
+
16
+ Web chats should use `sema_chat_contexto` and `sema_sync` with inline contract, selected code, operational docs, and index. Web chats must not download files into the chat environment.
13
17
 
14
18
  Install the governed CLI/client from npm when a local IDE or VPS mirror needs the `sema` command:
15
19
 
@@ -17,13 +21,17 @@ Install the governed CLI/client from npm when a local IDE or VPS mirror needs th
17
21
  npm install -g @semacode/cli
18
22
  ```
19
23
 
20
- The MCP server remains the private product surface. Do not install the MCP from the npm installer package; configure the authorized remote `/mcp` endpoint instead.
24
+ The MCP server remains the private web/chat surface. Do not install the MCP from the npm installer package; configure the authorized remote `/mcp` endpoint only for remote clients.
21
25
 
22
26
  ## Português
23
27
 
24
- A Sema é privada. O endpoint MCP é a superfície principal do produto e coordena autenticação, consumo de SEMAS, profiles, pipelines e espelhos de projeto.
28
+ A Sema é privada. IDE local usa a CLI completa da Sema. Cliente web/chat sem acesso ao workspace local usa MCP remoto.
29
+
30
+ Em IDE local, instale a CLI e a chave, mantenha `AGENTS.md` na raiz do projeto, rode `sema preflight resumo --json` e pare se `decisao` não for `use_cli_local`. Depois disso, use comandos locais da CLI: `sema resumo`, `sema docs-impacto`, `sema inspecionar`, `sema drift`, `sema impacto`, `sema validar` e `sema finalizar-mudanca`.
25
31
 
26
- IDEs locais devem receber `AGENTS.md` primeiro. Chats web devem usar `sema_chat_contexto` e `sema_sync`, não baixar arquivos no ambiente do chat.
32
+ Não chame MCP remoto, `sema_sync`, `sema_contratos_sincronizar` nem `sema mcp-client` para ler workspace local. Esses caminhos são proibidos em IDE local quando a CLI está operacional.
33
+
34
+ Chats web devem usar `sema_chat_contexto` e `sema_sync` com contrato inline, código selecionado, docs operacionais e índice. Chats web não devem baixar arquivos no ambiente do chat.
27
35
 
28
36
  Instale a CLI/cliente governada pelo npm quando uma IDE local ou espelho na VPS precisar do comando `sema`:
29
37
 
@@ -31,13 +39,17 @@ Instale a CLI/cliente governada pelo npm quando uma IDE local ou espelho na VPS
31
39
  npm install -g @semacode/cli
32
40
  ```
33
41
 
34
- O servidor MCP continua sendo a superfície privada do produto. Não instale o MCP pelo pacote npm do instalador; configure o endpoint remoto `/mcp` autorizado.
42
+ O servidor MCP continua sendo a superfície privada para web/chat. Não instale o MCP pelo pacote npm do instalador; configure o endpoint remoto `/mcp` autorizado apenas para clientes remotos.
35
43
 
36
44
  ## Español
37
45
 
38
- Sema es privada. El endpoint MCP es la superficie principal del producto y coordina autenticación, consumo de SEMAS, profiles, pipelines y espejos de proyecto.
46
+ Sema es privada. Una IDE local usa la CLI completa de Sema. Un cliente web/chat sin acceso al workspace local usa el MCP remoto.
47
+
48
+ En una IDE local, instala la CLI y la clave, deja `AGENTS.md` en la raíz del proyecto, ejecuta `sema preflight resumo --json` y para si `decisao` no es `use_cli_local`. Después usa comandos locales de la CLI: `sema resumo`, `sema docs-impacto`, `sema inspecionar`, `sema drift`, `sema impacto`, `sema validar` y `sema finalizar-mudanca`.
49
+
50
+ No llames el MCP remoto, `sema_sync`, `sema_contratos_sincronizar` ni `sema mcp-client` para leer un workspace local. Esos caminos están prohibidos en una IDE local cuando la CLI está operacional.
39
51
 
40
- Las IDEs locales deben recibir `AGENTS.md` primero. Los chats web deben usar `sema_chat_contexto` y `sema_sync`, no descargar archivos en el entorno del chat.
52
+ Los chats web deben usar `sema_chat_contexto` y `sema_sync` con contrato inline, código seleccionado, docs operativas e índice. Los chats web no deben descargar archivos en el entorno del chat.
41
53
 
42
54
  Instala la CLI/cliente gobernada desde npm cuando una IDE local o espejo en la VPS necesite el comando `sema`:
43
55
 
@@ -45,4 +57,4 @@ Instala la CLI/cliente gobernada desde npm cuando una IDE local o espejo en la V
45
57
  npm install -g @semacode/cli
46
58
  ```
47
59
 
48
- El servidor MCP sigue siendo la superficie privada del producto. No instales el MCP desde el paquete npm instalador; configura el endpoint remoto `/mcp` autorizado.
60
+ El servidor MCP sigue siendo la superficie privada para web/chat. No instales el MCP desde el paquete npm instalador; configura el endpoint remoto `/mcp` autorizado solo para clientes remotos.
@@ -21,18 +21,24 @@ Sema pode usar palavras-chave de DSL em ASCII. A IA não deve copiar essa estét
21
21
 
22
22
  ## English
23
23
 
24
- Sema exists for AI agents operating live systems. The agent should ask Sema for summary, docs impact, drift, impact, profile validation, and finalization instead of guessing from raw code.
24
+ Sema exists for AI agents operating live systems. The agent should ask Sema for preflight, summary, docs impact, drift, impact, profile validation, and finalization instead of guessing from raw code.
25
25
 
26
- In local IDEs, confirm `AGENTS.md` exists before `sema_resumo`. In web chats, use `sema_chat_contexto` first, then `sema_sync` or inline content. The MCP coordinates the flow and charges SEMAS; the CLI executes local or VPS-side checks.
26
+ In local IDEs, confirm `AGENTS.md` exists, install the complete Sema CLI, run `sema preflight resumo --json`, and stop unless the decision is `use_cli_local`. Then use local CLI commands: `sema resumo`, `sema docs-impacto`, `sema inspecionar`, `sema drift`, `sema impacto`, `sema validar`, and `sema finalizar-mudanca`. Do not call remote MCP, `sema_sync`, `sema_contratos_sincronizar`, or `sema mcp-client` to read a local workspace.
27
+
28
+ In web chats without workspace access, use `sema_chat_contexto` first, then `sema_sync` with contract, selected code, documentation, and index; then use the returned `projeto`. The CLI and MCP use the same commercial control plane and SEMAS account.
27
29
 
28
30
  ## Português
29
31
 
30
- A Sema existe para agentes de IA operarem sistemas vivos. O agente deve pedir resumo, impacto documental, drift, impacto, validação de profile e finalização para a Sema em vez de adivinhar pelo código cru.
32
+ A Sema existe para agentes de IA operarem sistemas vivos. O agente deve pedir preflight, resumo, impacto documental, drift, impacto, validação de profile e finalização para a Sema em vez de adivinhar pelo código cru.
33
+
34
+ Em IDE local, confirme que `AGENTS.md` existe, instale a CLI completa da Sema, rode `sema preflight resumo --json` e pare se a decisão não for `use_cli_local`. Depois use comandos locais da CLI: `sema resumo`, `sema docs-impacto`, `sema inspecionar`, `sema drift`, `sema impacto`, `sema validar` e `sema finalizar-mudanca`. Não chame MCP remoto, `sema_sync`, `sema_contratos_sincronizar` nem `sema mcp-client` para ler workspace local.
31
35
 
32
- Em IDE local, confirme que `AGENTS.md` existe antes de `sema_resumo`. Em chats web, use primeiro `sema_chat_contexto`, depois `sema_sync` ou conteúdo inline. O MCP coordena o fluxo e cobra SEMAS; a CLI executa checks locais ou na VPS.
36
+ Em chats web sem acesso ao workspace, use primeiro `sema_chat_contexto`, depois `sema_sync` com contrato, código selecionado, documentação e índice; depois use o `projeto` retornado. CLI e MCP usam o mesmo control plane comercial e a mesma conta de SEMAS.
33
37
 
34
38
  ## Español
35
39
 
36
- Sema existe para agentes de IA que operan sistemas vivos. El agente debe pedir resumen, impacto documental, drift, impacto, validación de profile y finalización a Sema en vez de adivinar desde código crudo.
40
+ Sema existe para agentes de IA que operan sistemas vivos. El agente debe pedir preflight, resumen, impacto documental, drift, impacto, validación de profile y finalización a Sema en vez de adivinar desde código crudo.
41
+
42
+ En una IDE local, confirma que `AGENTS.md` existe, instala la CLI completa de Sema, ejecuta `sema preflight resumo --json` y para si la decisión no es `use_cli_local`. Después usa comandos locales de la CLI: `sema resumo`, `sema docs-impacto`, `sema inspecionar`, `sema drift`, `sema impacto`, `sema validar` y `sema finalizar-mudanca`. No llames el MCP remoto, `sema_sync`, `sema_contratos_sincronizar` ni `sema mcp-client` para leer un workspace local.
37
43
 
38
- En IDE local, confirma que `AGENTS.md` existe antes de `sema_resumo`. En chats web, usa primero `sema_chat_contexto`, después `sema_sync` o contenido inline. El MCP coordina el flujo y cobra SEMAS; la CLI ejecuta checks locales o en la VPS.
44
+ En chats web sin acceso al workspace, usa primero `sema_chat_contexto`, después `sema_sync` con contrato, código seleccionado, documentación e índice; después usa el `projeto` devuelto. CLI y MCP usan el mismo control plane comercial y la misma cuenta de SEMAS.
package/docs/mcp.md CHANGED
@@ -11,11 +11,11 @@ The Sema MCP is the private coordinator for agents. It authenticates clients, se
11
11
 
12
12
  It must stay compatible with web chats. For ChatGPT, Lovable, GPTs, and similar clients, the MCP runs on the VPS and uses the governed CLI installed there against authorized mirrors such as `/srv/sema/projetos/...`.
13
13
 
14
- It must also stay compatible with local IDEs. In that mode, the client sends typed snapshots: contracts, selected code, documentation, and an index. When complete local-code drift is required, the installed CLI may run in the IDE workspace.
14
+ Local IDEs should not use remote MCP, `sema_sync`, `sema_contratos_sincronizar`, or `sema mcp-client` to read a local workspace. In that mode, install the complete Sema CLI, save the local key, run `sema preflight resumo --json`, and continue locally only when the decision is `use_cli_local`.
15
15
 
16
- The MCP must never pretend that a local Windows path exists on the Linux server. If the server cannot see the workspace, the next action is to request or create a mirror/snapshot.
16
+ The MCP must never pretend that a local Windows path exists on the Linux server. If a local IDE asks the remote MCP to read that path, the next action is to use the local CLI. If a web/chat client has no workspace, the next action is to request or create a mirror/snapshot.
17
17
 
18
- The app or connector must recognize the remote MCP from connection/authentication even when no project workspace has been synchronized. Missing workspace is not a missing active session; it only means project work must use `sema_sync`, an attachment, or inline content. The remote MCP must not ask for or try to read the user's local folder.
18
+ The app or connector must recognize the remote MCP from connection/authentication even when no project workspace has been synchronized. Missing workspace is not a missing active session. In web/chat, project work must use `sema_sync` with the applicable contract, selected code, documentation, and index. In a local IDE, project work must use CLI preflight and local CLI commands. The remote MCP must not ask for or try to read the user's local folder.
19
19
 
20
20
  Official Sema examples and grammar references must be exposed through `sema_exemplos`. Remote agents must not read `C:\GitHub\Sema\exemplos` or any other local user checkout just to learn the DSL.
21
21
 
@@ -31,11 +31,11 @@ O MCP da Sema é o coordenador privado dos agentes. Ele autentica clientes, esco
31
31
 
32
32
  Ele precisa continuar compatível com chats web. Para ChatGPT, Lovable, GPTs e clientes parecidos, o MCP roda na VPS e usa a CLI governada instalada lá contra espelhos autorizados como `/srv/sema/projetos/...`.
33
33
 
34
- Ele também precisa continuar compatível com IDEs locais. Nesse modo, o cliente envia snapshots tipados: contratos, código selecionado, documentação e índice. Quando drift completo contra código local for necessário, a CLI instalada pode rodar no workspace da IDE.
34
+ IDEs locais não devem usar MCP remoto, `sema_sync`, `sema_contratos_sincronizar` nem `sema mcp-client` para ler workspace local. Nesse modo, instale a CLI completa da Sema, grave a chave local, rode `sema preflight resumo --json` e continue localmente somente quando a decisão for `use_cli_local`.
35
35
 
36
- O MCP nunca deve fingir que um caminho Windows local existe no servidor Linux. Se o servidor não enxerga o workspace, a próxima ação é pedir ou criar um espelho/snapshot.
36
+ O MCP nunca deve fingir que um caminho Windows local existe no servidor Linux. Se uma IDE local pedir ao MCP remoto para ler esse caminho, a próxima ação é usar a CLI local. Se um cliente web/chat não tiver workspace, a próxima ação é pedir ou criar um espelho/snapshot.
37
37
 
38
- O app ou conector deve reconhecer o MCP remoto pela conexao/autenticacao, mesmo sem workspace de projeto sincronizado. Falta de workspace nao e falta de sessao ativa: e apenas o sinal de que a proxima acao de projeto deve usar `sema_sync`, anexo ou conteudo inline. O MCP remoto nao deve pedir nem tentar ler a pasta local do usuario.
38
+ O app ou conector deve reconhecer o MCP remoto pela conexão/autenticação, mesmo sem workspace de projeto sincronizado. Falta de workspace não é falta de sessão ativa. Em web/chat, trabalho de projeto deve usar `sema_sync` com contrato aplicável, código selecionado, documentação e índice. Em IDE local, trabalho de projeto deve usar preflight e comandos locais da CLI. O MCP remoto não deve pedir nem tentar ler a pasta local do usuário.
39
39
 
40
40
  Exemplos oficiais da Sema e referencias de gramatica devem ser expostos por `sema_exemplos`. Agentes remotos nao devem ler `C:\GitHub\Sema\exemplos` nem qualquer checkout local do usuario so para aprender a DSL.
41
41
 
@@ -51,11 +51,11 @@ El MCP de Sema es el coordinador privado de los agentes. Autentica clientes, eli
51
51
 
52
52
  Debe seguir compatible con chats web. Para ChatGPT, Lovable, GPTs y clientes similares, el MCP corre en la VPS y usa la CLI gobernada instalada allí contra espejos autorizados como `/srv/sema/projetos/...`.
53
53
 
54
- También debe seguir compatible con IDEs locales. En ese modo, el cliente envía snapshots tipados: contratos, código seleccionado, documentación e índice. Cuando haga falta drift completo contra código local, la CLI instalada puede correr en el workspace de la IDE.
54
+ Las IDEs locales no deben usar el MCP remoto, `sema_sync`, `sema_contratos_sincronizar` ni `sema mcp-client` para leer un workspace local. En ese modo, instala la CLI completa de Sema, guarda la clave local, ejecuta `sema preflight resumo --json` y continúa localmente solo cuando la decisión sea `use_cli_local`.
55
55
 
56
- El MCP nunca debe fingir que una ruta local de Windows existe en el servidor Linux. Si el servidor no ve el workspace, la siguiente acción es pedir o crear un espejo/snapshot.
56
+ El MCP nunca debe fingir que una ruta local de Windows existe en el servidor Linux. Si una IDE local pide al MCP remoto leer esa ruta, la siguiente acción es usar la CLI local. Si un cliente web/chat no tiene workspace, la siguiente acción es pedir o crear un espejo/snapshot.
57
57
 
58
- La app o el conector debe reconocer el MCP remoto por conexion/autenticacion, incluso sin workspace de proyecto sincronizado. Falta de workspace no es falta de sesion activa: solo indica que el trabajo de proyecto debe usar `sema_sync`, un adjunto o contenido inline. El MCP remoto no debe pedir ni intentar leer la carpeta local del usuario.
58
+ La app o el conector debe reconocer el MCP remoto por conexión/autenticación, incluso sin workspace de proyecto sincronizado. Falta de workspace no es falta de sesión activa. En web/chat, el trabajo de proyecto debe usar `sema_sync` con contrato aplicable, código seleccionado, documentación e índice. En una IDE local, el trabajo de proyecto debe usar preflight y comandos locales de la CLI. El MCP remoto no debe pedir ni intentar leer la carpeta local del usuario.
59
59
 
60
60
  Los ejemplos oficiales de Sema y las referencias de gramatica deben exponerse mediante `sema_exemplos`. Los agentes remotos no deben leer `C:\GitHub\Sema\exemplos` ni ningun checkout local del usuario solo para aprender la DSL.
61
61