@semacode/cli 1.1.0 → 1.2.0

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 (43) hide show
  1. package/README.md +2 -2
  2. package/SEMA_BRIEF.curto.txt +3 -3
  3. package/SEMA_BRIEF.md +3 -3
  4. package/SEMA_BRIEF.micro.txt +2 -2
  5. package/SEMA_INDEX.json +56 -11
  6. package/dist/drift.d.ts +2 -2
  7. package/dist/drift.js +20 -0
  8. package/dist/drift.js.map +1 -1
  9. package/dist/importador.d.ts +1 -1
  10. package/dist/importador.js +60 -0
  11. package/dist/importador.js.map +1 -1
  12. package/dist/index.js +86 -14
  13. package/dist/index.js.map +1 -1
  14. package/dist/lua-symbols.d.ts +8 -0
  15. package/dist/lua-symbols.js +68 -0
  16. package/dist/lua-symbols.js.map +1 -0
  17. package/dist/projeto.js +7 -1
  18. package/dist/projeto.js.map +1 -1
  19. package/dist/tipos.d.ts +1 -1
  20. package/docs/AGENT_STARTER.md +5 -3
  21. package/docs/instalacao-e-primeiro-uso.md +4 -2
  22. package/node_modules/@sema/gerador-dart/package.json +1 -1
  23. package/node_modules/@sema/gerador-lua/dist/index.d.ts +3 -0
  24. package/node_modules/@sema/gerador-lua/dist/index.js +360 -0
  25. package/node_modules/@sema/gerador-lua/dist/index.js.map +1 -0
  26. package/node_modules/@sema/gerador-lua/package.json +7 -0
  27. package/node_modules/@sema/gerador-python/package.json +1 -1
  28. package/node_modules/@sema/gerador-typescript/package.json +1 -1
  29. package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +1 -1
  30. package/node_modules/@sema/nucleo/dist/ir/conversor.js +4 -0
  31. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
  32. package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +3 -3
  33. package/node_modules/@sema/nucleo/dist/parser/parser.js +2 -0
  34. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
  35. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +2 -2
  36. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +3 -1
  37. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
  38. package/node_modules/@sema/nucleo/package.json +1 -1
  39. package/node_modules/@sema/padroes/dist/index.d.ts +2 -1
  40. package/node_modules/@sema/padroes/dist/index.js +17 -0
  41. package/node_modules/@sema/padroes/dist/index.js.map +1 -1
  42. package/node_modules/@sema/padroes/package.json +1 -1
  43. package/package.json +9 -7
package/README.md CHANGED
@@ -36,7 +36,7 @@ sema --help
36
36
  ## Instalacao via tarball da release
37
37
 
38
38
  ```bash
39
- npm install -g ./sema-cli-1.1.0.tgz
39
+ npm install -g ./sema-cli-1.2.0.tgz
40
40
  ```
41
41
 
42
42
  Ou direto da GitHub Release:
@@ -55,7 +55,7 @@ npx sema --help
55
55
  Ou, se voce estiver testando um tarball local:
56
56
 
57
57
  ```bash
58
- npm install ./sema-cli-1.1.0.tgz
58
+ npm install ./sema-cli-1.2.0.tgz
59
59
  npx sema --help
60
60
  ```
61
61
 
@@ -3,7 +3,7 @@ BASE: C:\GitHub\Sema
3
3
  MODULOS: 4
4
4
  ENTRADA_IA: llms.txt -> SEMA_BRIEF.curto.txt -> SEMA_INDEX.json -> AGENTS.md -> README.md
5
5
  TOP_MODULOS: app.pedidos, sema.produto.ergonomia_e_dominio, sema.produto.governanca_ia, sema.produto.linguagem_composta
6
- TOP_RISCOS: altera_persistencia, consultar_scorecard_compatibilidade:medio, converter_bloco_composto_para_ir:alto, criar_pedido:alto, efeito_critico, explicitar_variacao_e_compatibilidade:medio (+12)
6
+ TOP_RISCOS: altera_persistencia, consultar_scorecard_compatibilidade:medio, converter_bloco_composto_para_ir:alto, criar_pedido:alto, efeito_critico, explicitar_variacao_e_compatibilidade:medio (+13)
7
7
  TOP_LACUNAS: execucao_implicita, sem_impl, sem_vinculos
8
- TOP_ARQUIVOS: C:\GitHub\Sema\pacotes\cli\src\drift.ts, C:\GitHub\Sema\pacotes\cli\src\index.ts, C:\GitHub\Sema\pacotes\cli\src\projeto.ts, C:\GitHub\Sema\pacotes\gerador-python\src\index.ts, C:\GitHub\Sema\pacotes\gerador-typescript\src\index.ts, C:\GitHub\Sema\pacotes\nucleo\src\formatador\index.ts (+3)
9
- GERADO_EM: 2026-03-31T16:04:57.600Z
8
+ TOP_ARQUIVOS: C:\GitHub\Sema\pacotes\cli\src\drift.ts, C:\GitHub\Sema\pacotes\cli\src\index.ts, C:\GitHub\Sema\pacotes\cli\src\projeto.ts, C:\GitHub\Sema\pacotes\gerador-lua\src\index.ts, C:\GitHub\Sema\pacotes\gerador-python\src\index.ts, C:\GitHub\Sema\pacotes\gerador-typescript\src\index.ts (+4)
9
+ GERADO_EM: 2026-04-02T00:02:31.211Z
package/SEMA_BRIEF.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Sema e IA-first. Este arquivo existe para IA achar o ponto de entrada do projeto sem ter que catar o repo inteiro feito barata tonta.
4
4
 
5
- - Gerado em: `2026-03-31T16:04:57.600Z`
5
+ - Gerado em: `2026-04-02T00:02:31.211Z`
6
6
  - Modulos: `4`
7
7
 
8
8
  ## Entrada canonica para IA
@@ -42,8 +42,8 @@ Sema e IA-first. Este arquivo existe para IA achar o ponto de entrada do projeto
42
42
  - Lacunas: execucao_implicita, sem_impl, sem_vinculos
43
43
 
44
44
  ### sema.produto.linguagem_composta
45
- - Faz: governa 1 superficie(s), 5 task(s) com foco em regressao composta
45
+ - Faz: governa 1 superficie(s), 6 task(s) com foco em regressao composta
46
46
  - Publico: storage:regressao_composta
47
- - Tocar: C:\GitHub\Sema\pacotes\gerador-python\src\index.ts, C:\GitHub\Sema\pacotes\gerador-typescript\src\index.ts, C:\GitHub\Sema\pacotes\nucleo\src\formatador\index.ts, C:\GitHub\Sema\pacotes\nucleo\src\ir\conversor.ts (+1)
47
+ - Tocar: C:\GitHub\Sema\pacotes\gerador-lua\src\index.ts, C:\GitHub\Sema\pacotes\gerador-python\src\index.ts, C:\GitHub\Sema\pacotes\gerador-typescript\src\index.ts, C:\GitHub\Sema\pacotes\nucleo\src\formatador\index.ts (+2)
48
48
  - Score: 90 | Confianca: alta | Risco: alto
49
49
  - Lacunas: execucao_implicita, sem_impl, sem_vinculos
@@ -2,6 +2,6 @@ PROJETO: Sema
2
2
  MODULOS: 4
3
3
  ENTRADA_IA: llms.txt -> SEMA_BRIEF.micro.txt -> SEMA_INDEX.json -> AGENTS.md
4
4
  TOP_MODULOS: app.pedidos, sema.produto.ergonomia_e_dominio, sema.produto.governanca_ia (+1)
5
- TOP_RISCOS: altera_persistencia, consultar_scorecard_compatibilidade:medio, converter_bloco_composto_para_ir:alto (+15)
5
+ TOP_RISCOS: altera_persistencia, consultar_scorecard_compatibilidade:medio, converter_bloco_composto_para_ir:alto (+16)
6
6
  TOP_LACUNAS: execucao_implicita, sem_impl, sem_vinculos
7
- GERADO_EM: 2026-03-31T16:04:57.600Z
7
+ GERADO_EM: 2026-04-02T00:02:31.211Z
package/SEMA_INDEX.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "comando": "resumo-projeto",
3
- "geradoEm": "2026-03-31T16:04:57.600Z",
4
- "cliVersao": "1.0.0",
3
+ "geradoEm": "2026-04-02T00:02:31.211Z",
4
+ "cliVersao": "1.2.0",
5
5
  "baseProjeto": "C:\\GitHub\\Sema",
6
6
  "totalModulos": 4,
7
7
  "entradaCanonica": {
@@ -163,7 +163,7 @@
163
163
  },
164
164
  "modulos": [
165
165
  {
166
- "geradoEm": "2026-03-31T16:04:57.600Z",
166
+ "geradoEm": "2026-04-02T00:02:31.211Z",
167
167
  "arquivo": "C:\\GitHub\\Sema\\contratos\\pedidos.sema",
168
168
  "modulo": "app.pedidos",
169
169
  "perfilCompatibilidade": "publico",
@@ -221,10 +221,15 @@
221
221
  "sema drift <arquivo> --json",
222
222
  "sema validar <arquivo> --json",
223
223
  "sema verificar <arquivo-ou-pasta> --json"
224
- ]
224
+ ],
225
+ "consumerFramework": "nextjs-consumer",
226
+ "appRoutes": [],
227
+ "consumerSurfaces": [],
228
+ "consumerBridges": [],
229
+ "arquivosProvaveisEditar": []
225
230
  },
226
231
  {
227
- "geradoEm": "2026-03-31T16:04:57.600Z",
232
+ "geradoEm": "2026-04-02T00:02:31.211Z",
228
233
  "arquivo": "C:\\GitHub\\Sema\\contratos\\sema\\ergonomia_e_dominio.sema",
229
234
  "modulo": "sema.produto.ergonomia_e_dominio",
230
235
  "perfilCompatibilidade": "interno",
@@ -312,10 +317,20 @@
312
317
  "sema drift <arquivo> --json",
313
318
  "sema validar <arquivo> --json",
314
319
  "sema verificar <arquivo-ou-pasta> --json"
320
+ ],
321
+ "consumerFramework": "nextjs-consumer",
322
+ "appRoutes": [],
323
+ "consumerSurfaces": [],
324
+ "consumerBridges": [],
325
+ "arquivosProvaveisEditar": [
326
+ "C:\\GitHub\\Sema\\pacotes\\cli\\src\\projeto.ts",
327
+ "C:\\GitHub\\Sema\\pacotes\\nucleo\\src\\formatador\\index.ts",
328
+ "C:\\GitHub\\Sema\\pacotes\\nucleo\\src\\ir\\conversor.ts",
329
+ "C:\\GitHub\\Sema\\pacotes\\nucleo\\src\\semantico\\analisador.ts"
315
330
  ]
316
331
  },
317
332
  {
318
- "geradoEm": "2026-03-31T16:04:57.600Z",
333
+ "geradoEm": "2026-04-02T00:02:31.211Z",
319
334
  "arquivo": "C:\\GitHub\\Sema\\contratos\\sema\\governanca_ia.sema",
320
335
  "modulo": "sema.produto.governanca_ia",
321
336
  "perfilCompatibilidade": "publico",
@@ -402,23 +417,38 @@
402
417
  "sema drift <arquivo> --json",
403
418
  "sema validar <arquivo> --json",
404
419
  "sema verificar <arquivo-ou-pasta> --json"
420
+ ],
421
+ "consumerFramework": "nextjs-consumer",
422
+ "appRoutes": [
423
+ "/ranking"
424
+ ],
425
+ "consumerSurfaces": [
426
+ "router:/ranking -> C:\\GitHub\\Sema\\pacotes\\cli\\src\\index.ts"
427
+ ],
428
+ "consumerBridges": [],
429
+ "arquivosProvaveisEditar": [
430
+ "C:\\GitHub\\Sema\\pacotes\\cli\\src\\drift.ts",
431
+ "C:\\GitHub\\Sema\\pacotes\\cli\\src\\index.ts",
432
+ "C:\\GitHub\\Sema\\pacotes\\cli\\src\\projeto.ts",
433
+ "C:\\GitHub\\Sema\\pacotes\\nucleo\\src\\formatador\\index.ts"
405
434
  ]
406
435
  },
407
436
  {
408
- "geradoEm": "2026-03-31T16:04:57.600Z",
437
+ "geradoEm": "2026-04-02T00:02:31.211Z",
409
438
  "arquivo": "C:\\GitHub\\Sema\\contratos\\sema\\linguagem_composta.sema",
410
439
  "modulo": "sema.produto.linguagem_composta",
411
440
  "perfilCompatibilidade": "interno",
412
441
  "scoreSemantico": 90,
413
442
  "confiancaGeral": "alta",
414
443
  "riscoOperacional": "alto",
415
- "faz": "governa 1 superficie(s), 5 task(s) com foco em regressao composta",
444
+ "faz": "governa 1 superficie(s), 6 task(s) com foco em regressao composta",
416
445
  "tarefasPrincipais": [
417
446
  "interpretar_bloco_nomeado",
418
447
  "converter_bloco_composto_para_ir",
419
448
  "formatar_bloco_composto",
420
449
  "gerar_teste_python_composto",
421
- "gerar_teste_typescript_composto"
450
+ "gerar_teste_typescript_composto",
451
+ "gerar_teste_lua_composto"
422
452
  ],
423
453
  "entradasChave": [
424
454
  "interpretar_bloco_nomeado(arquivo_semantico, sinais)",
@@ -452,6 +482,7 @@
452
482
  "StatusEvolucao"
453
483
  ],
454
484
  "arquivosProvaveis": [
485
+ "C:\\GitHub\\Sema\\pacotes\\gerador-lua\\src\\index.ts",
455
486
  "C:\\GitHub\\Sema\\pacotes\\gerador-python\\src\\index.ts",
456
487
  "C:\\GitHub\\Sema\\pacotes\\gerador-typescript\\src\\index.ts",
457
488
  "C:\\GitHub\\Sema\\pacotes\\nucleo\\src\\formatador\\index.ts",
@@ -461,6 +492,7 @@
461
492
  "simbolosRelacionados": [
462
493
  "converterParaIr",
463
494
  "formatarCodigo",
495
+ "gerarLua",
464
496
  "gerarPython",
465
497
  "gerarTypeScript",
466
498
  "parsear"
@@ -468,6 +500,7 @@
468
500
  "riscosPrincipais": [
469
501
  "converter_bloco_composto_para_ir:alto",
470
502
  "formatar_bloco_composto:medio",
503
+ "gerar_teste_lua_composto:medio",
471
504
  "gerar_teste_python_composto:medio",
472
505
  "gerar_teste_typescript_composto:medio",
473
506
  "interpretar_bloco_nomeado:alto"
@@ -480,10 +513,10 @@
480
513
  "inferido": [
481
514
  "converter_bloco_composto_para_ir:pacotes/nucleo/src/ir/conversor.ts",
482
515
  "formatar_bloco_composto:pacotes/nucleo/src/formatador/index.ts",
516
+ "gerar_teste_lua_composto:pacotes/gerador-lua/src/index.ts",
483
517
  "gerar_teste_python_composto:pacotes/gerador-python/src/index.ts",
484
518
  "gerar_teste_typescript_composto:pacotes/gerador-typescript/src/index.ts",
485
- "interpretar_bloco_nomeado:pacotes/nucleo/src/parser/parser.ts",
486
- "sema.produto.linguagem_composta:pacotes/nucleo/src/parser/parser.ts"
519
+ "interpretar_bloco_nomeado:pacotes/nucleo/src/parser/parser.ts"
487
520
  ],
488
521
  "checksSugeridos": [
489
522
  "revisar efeitos operacionais",
@@ -495,6 +528,18 @@
495
528
  "sema drift <arquivo> --json",
496
529
  "sema validar <arquivo> --json",
497
530
  "sema verificar <arquivo-ou-pasta> --json"
531
+ ],
532
+ "consumerFramework": "nextjs-consumer",
533
+ "appRoutes": [],
534
+ "consumerSurfaces": [],
535
+ "consumerBridges": [],
536
+ "arquivosProvaveisEditar": [
537
+ "C:\\GitHub\\Sema\\pacotes\\gerador-lua\\src\\index.ts",
538
+ "C:\\GitHub\\Sema\\pacotes\\gerador-python\\src\\index.ts",
539
+ "C:\\GitHub\\Sema\\pacotes\\gerador-typescript\\src\\index.ts",
540
+ "C:\\GitHub\\Sema\\pacotes\\nucleo\\src\\formatador\\index.ts",
541
+ "C:\\GitHub\\Sema\\pacotes\\nucleo\\src\\ir\\conversor.ts",
542
+ "C:\\GitHub\\Sema\\pacotes\\nucleo\\src\\parser\\parser.ts"
498
543
  ]
499
544
  }
500
545
  ]
package/dist/drift.d.ts CHANGED
@@ -21,7 +21,7 @@ export interface DiagnosticoDrift {
21
21
  interface RegistroImplDrift {
22
22
  modulo: string;
23
23
  task: string;
24
- origem: "ts" | "py" | "dart" | "cs" | "java" | "go" | "rust" | "cpp";
24
+ origem: "ts" | "py" | "dart" | "lua" | "cs" | "java" | "go" | "rust" | "cpp";
25
25
  caminho: string;
26
26
  arquivo?: string;
27
27
  simbolo?: string;
@@ -47,7 +47,7 @@ interface RegistroRecursoDrift {
47
47
  status: "resolvido" | "divergente";
48
48
  }
49
49
  interface SimboloCandidatoDrift {
50
- origem: "ts" | "py" | "dart" | "cs" | "java" | "go" | "rust" | "cpp";
50
+ origem: "ts" | "py" | "dart" | "lua" | "cs" | "java" | "go" | "rust" | "cpp";
51
51
  caminho: string;
52
52
  arquivo: string;
53
53
  simbolo: string;
package/dist/drift.js CHANGED
@@ -5,6 +5,7 @@ import { extrairSimbolosCpp } from "./cpp-symbols.js";
5
5
  import { extrairRotasDotnet, extrairSimbolosDotnet } from "./dotnet-http.js";
6
6
  import { extrairRotasGo, extrairSimbolosGo } from "./go-http.js";
7
7
  import { extrairRotasJava, extrairSimbolosJava } from "./java-http.js";
8
+ import { extrairSimbolosLua } from "./lua-symbols.js";
8
9
  import { contarIndentacaoPython, extrairRotasFlaskDecoradas, normalizarCaminhoFlask } from "./python-http.js";
9
10
  import { extrairRotasRust, extrairSimbolosRust } from "./rust-http.js";
10
11
  import { extrairRotasTypeScriptHttp } from "./typescript-http.js";
@@ -978,6 +979,22 @@ async function indexarDart(diretorios) {
978
979
  || a.arquivo.localeCompare(b.arquivo, "pt-BR")),
979
980
  };
980
981
  }
982
+ async function indexarLua(diretorios) {
983
+ const simbolos = new Map();
984
+ for (const diretorio of diretorios) {
985
+ const arquivos = (await listarArquivosRecursivos(diretorio, [".lua"]))
986
+ .filter((arquivo) => !/(^|[\\/])(spec|specs|test|tests)([\\/]|$)/i.test(arquivo))
987
+ .filter((arquivo) => !/[_-](spec|test)\.lua$/i.test(arquivo));
988
+ for (const arquivo of arquivos) {
989
+ const texto = await readFile(arquivo, "utf8");
990
+ const basesSimbolicas = caminhosSimbolicos(diretorio, arquivo);
991
+ for (const simbolo of extrairSimbolosLua(texto)) {
992
+ registrarSimboloGenerico(simbolos, "lua", basesSimbolicas, arquivo, simbolo.simbolo);
993
+ }
994
+ }
995
+ }
996
+ return { simbolos: [...simbolos.values()], rotas: [] };
997
+ }
981
998
  function registrarSimboloGenerico(simbolos, origem, basesSimbolicas, arquivo, simbolo) {
982
999
  for (const baseSimbolica of basesSimbolicas) {
983
1000
  const caminho = `${baseSimbolica}.${simbolo}`;
@@ -1328,6 +1345,7 @@ export async function analisarDriftLegado(contexto) {
1328
1345
  const indexTs = await indexarTypeScript(contexto.diretoriosCodigo);
1329
1346
  const indexPy = await indexarPython(contexto.diretoriosCodigo);
1330
1347
  const indexDart = await indexarDart(contexto.diretoriosCodigo);
1348
+ const indexLua = await indexarLua(contexto.diretoriosCodigo);
1331
1349
  const indexDotnet = await indexarDotnet(contexto.diretoriosCodigo);
1332
1350
  const indexJava = await indexarJava(contexto.diretoriosCodigo);
1333
1351
  const indexGo = await indexarGo(contexto.diretoriosCodigo);
@@ -1337,6 +1355,7 @@ export async function analisarDriftLegado(contexto) {
1337
1355
  ...indexTs.simbolos,
1338
1356
  ...indexPy.simbolos,
1339
1357
  ...indexDart.simbolos,
1358
+ ...indexLua.simbolos,
1340
1359
  ...indexDotnet.simbolos,
1341
1360
  ...indexJava.simbolos,
1342
1361
  ...indexGo.simbolos,
@@ -1347,6 +1366,7 @@ export async function analisarDriftLegado(contexto) {
1347
1366
  ...indexTs.simbolos.map((item) => [item.caminho, item]),
1348
1367
  ...indexPy.simbolos.map((item) => [item.caminho, item]),
1349
1368
  ...indexDart.simbolos.map((item) => [item.caminho, item]),
1369
+ ...indexLua.simbolos.map((item) => [item.caminho, item]),
1350
1370
  ...indexDotnet.simbolos.map((item) => [item.caminho, item]),
1351
1371
  ...indexJava.simbolos.map((item) => [item.caminho, item]),
1352
1372
  ...indexGo.simbolos.map((item) => [item.caminho, item]),