@semacode/cli 1.5.9 → 1.5.10

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 (42) hide show
  1. package/README.md +2 -0
  2. package/SEMA_INDEX.json +1 -1
  3. package/dist/drift.d.ts +3 -3
  4. package/dist/drift.js +47 -4
  5. package/dist/drift.js.map +1 -1
  6. package/dist/importador.d.ts +1 -1
  7. package/dist/importador.js +56 -0
  8. package/dist/importador.js.map +1 -1
  9. package/dist/index.js +9 -5
  10. package/dist/index.js.map +1 -1
  11. package/dist/lua-symbols.d.ts +6 -4
  12. package/dist/lua-symbols.js +74 -54
  13. package/dist/lua-symbols.js.map +1 -1
  14. package/dist/projeto.js +6 -0
  15. package/dist/projeto.js.map +1 -1
  16. package/dist/tipos.d.ts +1 -1
  17. package/docs/AGENT_STARTER.md +3 -3
  18. package/docs/cli.md +2 -0
  19. package/docs/env.md +3 -3
  20. package/docs/fluxo-pratico-ia-sema.md +1 -1
  21. package/docs/integracao-com-ia.md +2 -0
  22. package/docs/mcp.md +2 -0
  23. package/docs/sintaxe.md +39 -0
  24. package/node_modules/@sema/gerador-css/package.json +1 -1
  25. package/node_modules/@sema/gerador-dart/package.json +1 -1
  26. package/node_modules/@sema/gerador-html/package.json +1 -1
  27. package/node_modules/@sema/gerador-javascript/package.json +1 -1
  28. package/node_modules/@sema/gerador-lua/package.json +1 -1
  29. package/node_modules/@sema/gerador-python/package.json +1 -1
  30. package/node_modules/@sema/gerador-typescript/package.json +1 -1
  31. package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +1 -1
  32. package/node_modules/@sema/nucleo/dist/ir/conversor.js +4 -0
  33. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
  34. package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +3 -3
  35. package/node_modules/@sema/nucleo/dist/parser/parser.js +2 -0
  36. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
  37. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +2 -2
  38. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +3 -1
  39. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
  40. package/node_modules/@sema/nucleo/package.json +1 -1
  41. package/node_modules/@sema/padroes/package.json +1 -1
  42. package/package.json +10 -10
package/README.md CHANGED
@@ -4,6 +4,8 @@
4
4
 
5
5
  Ela valida contratos `.sema`, mede `drift` entre contrato e codigo vivo, importa legado, gera codigo derivado, produz contexto IA-first e agora governa persistencia vendor-first para `postgres`, `mysql`, `sqlite`, `mongodb` e `redis`.
6
6
 
7
+ Lua e suportado como alvo de geracao e como origem semantica de codigo vivo em `use`, `impl`, IR, `drift` e `sema importar`.
8
+
7
9
  Tambem resolve documentacao obrigatoria por intencao para impedir IA de agir sem ler ou criar docs relacionadas.
8
10
 
9
11
  ## Instalar
package/SEMA_INDEX.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "comando": "resumo-projeto",
3
3
  "geradoEm": "2026-05-02T20:39:52.980Z",
4
- "cliVersao": "1.5.9",
4
+ "cliVersao": "1.5.10",
5
5
  "baseProjeto": "C:\\GitHub\\Sema",
6
6
  "totalModulos": 6,
7
7
  "entradaCanonica": {
package/dist/drift.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { EngineBanco, NivelConfiancaSemantica, NivelRiscoSemantico, TipoRecursoPersistencia } from "@sema/nucleo";
2
2
  import type { ContextoProjetoCarregado } from "./projeto.js";
3
3
  interface SimboloResolvido {
4
- origem: "ts" | "py" | "dart" | "cs" | "java" | "go" | "rust" | "cpp";
4
+ origem: "ts" | "py" | "dart" | "lua" | "cs" | "java" | "go" | "rust" | "cpp";
5
5
  caminho: string;
6
6
  arquivo: string;
7
7
  simbolo: string;
@@ -33,7 +33,7 @@ export interface DiagnosticoDrift {
33
33
  interface RegistroImplDrift {
34
34
  modulo: string;
35
35
  task: string;
36
- origem: "ts" | "py" | "dart" | "cs" | "java" | "go" | "rust" | "cpp";
36
+ origem: "ts" | "py" | "dart" | "lua" | "cs" | "java" | "go" | "rust" | "cpp";
37
37
  caminho: string;
38
38
  arquivo?: string;
39
39
  simbolo?: string;
@@ -82,7 +82,7 @@ interface RegistroRepositorioPersistenciaDrift {
82
82
  arquivo: string;
83
83
  }
84
84
  interface SimboloCandidatoDrift {
85
- origem: "ts" | "py" | "dart" | "cs" | "java" | "go" | "rust" | "cpp";
85
+ origem: "ts" | "py" | "dart" | "lua" | "cs" | "java" | "go" | "rust" | "cpp";
86
86
  caminho: string;
87
87
  arquivo: string;
88
88
  simbolo: string;
package/dist/drift.js CHANGED
@@ -6,6 +6,7 @@ import { extrairSimbolosCpp } from "./cpp-symbols.js";
6
6
  import { extrairRotasDotnet, extrairSimbolosDotnet } from "./dotnet-http.js";
7
7
  import { extrairRotasGo, extrairSimbolosGo } from "./go-http.js";
8
8
  import { extrairRotasJava, extrairSimbolosJava } from "./java-http.js";
9
+ import { extrairSimbolosLua } from "./lua-symbols.js";
9
10
  import { contarIndentacaoPython, extrairRotasFlaskDecoradas, normalizarCaminhoFlask } from "./python-http.js";
10
11
  import { extrairRotasRust, extrairSimbolosRust } from "./rust-http.js";
11
12
  import { extrairRotasTypeScriptHttp } from "./typescript-http.js";
@@ -689,7 +690,7 @@ function extrairRecursosArquivoLocal(arquivo, codigo) {
689
690
  const nomeBase = path.basename(literal, path.extname(literal));
690
691
  registrarRecursoDrift(recursos, "arquivo", "arquivo_local", nomeBase, arquivo);
691
692
  }
692
- const nomeArquivo = path.basename(arquivo).replace(/\.(?:ts|tsx|js|jsx|mjs|cjs|py|dart|cs|java|go|rs|cpp|cc|cxx|hpp|h)$/i, "");
693
+ const nomeArquivo = path.basename(arquivo).replace(/\.(?:ts|tsx|js|jsx|mjs|cjs|py|dart|lua|cs|java|go|rs|cpp|cc|cxx|hpp|h)$/i, "");
693
694
  const nomeStore = nomeArquivo
694
695
  .replace(/(?:[_.-]?(?:repository|repositories|repo|store|storage|persistencia|persistence))$/i, "")
695
696
  .trim();
@@ -1040,6 +1041,20 @@ async function listarArquivosRecursivos(diretorio, extensoes) {
1040
1041
  }
1041
1042
  return encontrados.sort((a, b) => a.localeCompare(b, "pt-BR"));
1042
1043
  }
1044
+ const EXTENSOES_ARQUIVOS_CODIGO_DRIFT = [
1045
+ ".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs",
1046
+ ".py", ".dart", ".lua", ".cs", ".java", ".go", ".rs", ".cpp", ".cc", ".cxx", ".hpp", ".h",
1047
+ ".sql", ".psql", ".ddl", ".prisma", ".json",
1048
+ ];
1049
+ async function indexarArquivosCodigo(diretorios) {
1050
+ const arquivos = new Set();
1051
+ for (const diretorio of diretorios) {
1052
+ for (const arquivo of await listarArquivosRecursivos(diretorio, EXTENSOES_ARQUIVOS_CODIGO_DRIFT)) {
1053
+ arquivos.add(arquivo);
1054
+ }
1055
+ }
1056
+ return [...arquivos].sort((a, b) => a.localeCompare(b, "pt-BR"));
1057
+ }
1043
1058
  function caminhosSimbolicos(baseDiretorio, arquivo) {
1044
1059
  const relativo = path.relative(baseDiretorio, arquivo).replace(/\.[^.]+$/, "");
1045
1060
  const semPrefixo = relativo
@@ -1878,6 +1893,28 @@ async function indexarDart(diretorios) {
1878
1893
  || a.arquivo.localeCompare(b.arquivo, "pt-BR")),
1879
1894
  };
1880
1895
  }
1896
+ async function indexarLua(diretorios) {
1897
+ const simbolos = new Map();
1898
+ const recursos = new Map();
1899
+ for (const diretorio of diretorios) {
1900
+ const arquivos = (await listarArquivosRecursivos(diretorio, [".lua"]))
1901
+ .filter((arquivo) => !/(^|[\\/])tests?([\\/]|$)|(?:^|[\\/])spec([\\/]|$)|(?:_spec|_test)\.lua$/i.test(arquivo));
1902
+ for (const arquivo of arquivos) {
1903
+ const codigo = await readFile(arquivo, "utf8");
1904
+ const basesSimbolicas = caminhosSimbolicos(diretorio, arquivo);
1905
+ for (const recurso of extrairRecursosPersistenciaCodigoVivo(arquivo, codigo)) {
1906
+ registrarRecursoDrift(recursos, recurso.origem, recurso.tipo, recurso.nome, recurso.arquivo, recurso.simbolo);
1907
+ }
1908
+ for (const simbolo of extrairSimbolosLua(codigo)) {
1909
+ registrarSimboloGenerico(simbolos, "lua", basesSimbolicas, arquivo, simbolo.simbolo);
1910
+ }
1911
+ }
1912
+ }
1913
+ return {
1914
+ simbolos: [...simbolos.values()],
1915
+ recursos: [...recursos.values()],
1916
+ };
1917
+ }
1881
1918
  function registrarSimboloGenerico(simbolos, origem, basesSimbolicas, arquivo, simbolo) {
1882
1919
  for (const baseSimbolica of basesSimbolicas) {
1883
1920
  const caminho = `${baseSimbolica}.${simbolo}`;
@@ -2043,7 +2080,7 @@ async function indexarPersistenciaDeclarativa(diretorios) {
2043
2080
  const arquivos = await listarArquivosRecursivos(diretorio, [
2044
2081
  ".sql", ".psql", ".ddl", ".prisma",
2045
2082
  ".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs",
2046
- ".py", ".dart", ".cs", ".java", ".go", ".rs", ".cpp", ".cc", ".cxx", ".hpp", ".h",
2083
+ ".py", ".dart", ".lua", ".cs", ".java", ".go", ".rs", ".cpp", ".cc", ".cxx", ".hpp", ".h",
2047
2084
  ]);
2048
2085
  for (const arquivo of arquivos) {
2049
2086
  const codigo = await readFile(arquivo, "utf8");
@@ -2247,7 +2284,7 @@ async function indexarPersistenciaDetalhada(diretorios) {
2247
2284
  for (const diretorio of diretorios) {
2248
2285
  const arquivos = await listarArquivosRecursivos(diretorio, [
2249
2286
  ".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs",
2250
- ".py", ".dart", ".cs", ".java", ".go", ".rs", ".cpp", ".cc", ".cxx", ".hpp", ".h",
2287
+ ".py", ".dart", ".lua", ".cs", ".java", ".go", ".rs", ".cpp", ".cc", ".cxx", ".hpp", ".h",
2251
2288
  ".sql", ".psql", ".ddl", ".prisma",
2252
2289
  ]);
2253
2290
  for (const arquivo of arquivos) {
@@ -2830,9 +2867,11 @@ export async function analisarDriftLegado(contexto, opcoes) {
2830
2867
  diretoriosIgnoradosAtivos = resolverDiretoriosIgnoradosAtivos(opcoesResolvidas);
2831
2868
  try {
2832
2869
  const diretoriosCodigoAtivos = resolverDiretoriosCodigoEscopoReal(contexto, configuracaoEscopo);
2870
+ const arquivosCodigo = await indexarArquivosCodigo(diretoriosCodigoAtivos);
2833
2871
  const indexTs = await indexarTypeScript(diretoriosCodigoAtivos);
2834
2872
  const indexPy = await indexarPython(diretoriosCodigoAtivos);
2835
2873
  const indexDart = await indexarDart(diretoriosCodigoAtivos);
2874
+ const indexLua = await indexarLua(diretoriosCodigoAtivos);
2836
2875
  const indexDotnet = await indexarDotnet(diretoriosCodigoAtivos);
2837
2876
  const indexJava = await indexarJava(diretoriosCodigoAtivos);
2838
2877
  const indexGo = await indexarGo(diretoriosCodigoAtivos);
@@ -2844,6 +2883,7 @@ export async function analisarDriftLegado(contexto, opcoes) {
2844
2883
  ...indexTs.simbolos,
2845
2884
  ...indexPy.simbolos,
2846
2885
  ...indexDart.simbolos,
2886
+ ...indexLua.simbolos,
2847
2887
  ...indexDotnet.simbolos,
2848
2888
  ...indexJava.simbolos,
2849
2889
  ...indexGo.simbolos,
@@ -2854,6 +2894,7 @@ export async function analisarDriftLegado(contexto, opcoes) {
2854
2894
  ...indexTs.simbolos.map((item) => [item.caminho, item]),
2855
2895
  ...indexPy.simbolos.map((item) => [item.caminho, item]),
2856
2896
  ...indexDart.simbolos.map((item) => [item.caminho, item]),
2897
+ ...indexLua.simbolos.map((item) => [item.caminho, item]),
2857
2898
  ...indexDotnet.simbolos.map((item) => [item.caminho, item]),
2858
2899
  ...indexJava.simbolos.map((item) => [item.caminho, item]),
2859
2900
  ...indexGo.simbolos.map((item) => [item.caminho, item]),
@@ -2864,6 +2905,7 @@ export async function analisarDriftLegado(contexto, opcoes) {
2864
2905
  ...indexTs.recursos,
2865
2906
  ...indexPy.recursos,
2866
2907
  ...indexDart.recursos,
2908
+ ...indexLua.recursos,
2867
2909
  ...indexDotnet.recursos,
2868
2910
  ...indexJava.recursos,
2869
2911
  ...indexGo.recursos,
@@ -2882,6 +2924,7 @@ export async function analisarDriftLegado(contexto, opcoes) {
2882
2924
  ...indexRust.rotas,
2883
2925
  ];
2884
2926
  const todosArquivosConhecidos = [...new Set([
2927
+ ...arquivosCodigo,
2885
2928
  ...todosSimbolos.map((item) => item.arquivo),
2886
2929
  ...todasRotasIndexadas.map((item) => item.arquivo),
2887
2930
  ...todosRecursos.map((item) => item.arquivo),
@@ -3508,7 +3551,7 @@ export async function analisarDriftLegado(contexto, opcoes) {
3508
3551
  const EXTENSOES_BUSCA_IMPACTO = [
3509
3552
  ".sema",
3510
3553
  ".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs",
3511
- ".py", ".dart", ".cs", ".java", ".go", ".rs", ".cpp", ".cc", ".cxx", ".hpp", ".h",
3554
+ ".py", ".dart", ".lua", ".cs", ".java", ".go", ".rs", ".cpp", ".cc", ".cxx", ".hpp", ".h",
3512
3555
  ".sql", ".psql", ".ddl", ".prisma", ".json",
3513
3556
  ];
3514
3557
  function construirVariantesSemanticas(valor) {