@semacode/cli 1.2.17 → 1.3.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 (128) hide show
  1. package/README.md +2 -2
  2. package/dist/index.js +58 -10
  3. package/dist/projeto.js +4 -1
  4. package/package.json +17 -34
  5. package/src/cpp-symbols.ts +82 -0
  6. package/src/dotnet-http.ts +355 -0
  7. package/src/drift.ts +2455 -0
  8. package/src/go-http.ts +118 -0
  9. package/src/importador.ts +3448 -0
  10. package/src/index.ts +4470 -0
  11. package/src/java-http.ts +247 -0
  12. package/src/projeto.ts +810 -0
  13. package/src/python-http.ts +258 -0
  14. package/src/rust-http.ts +125 -0
  15. package/src/tipos.ts +22 -0
  16. package/src/typescript-http.ts +1076 -0
  17. package/tsconfig.json +20 -0
  18. package/AGENTS.md +0 -50
  19. package/LICENSE +0 -22
  20. package/SEMA_BRIEF.curto.txt +0 -9
  21. package/SEMA_BRIEF.md +0 -49
  22. package/SEMA_BRIEF.micro.txt +0 -7
  23. package/SEMA_INDEX.json +0 -546
  24. package/dist/cpp-symbols.d.ts +0 -10
  25. package/dist/cpp-symbols.js.map +0 -1
  26. package/dist/dotnet-http.d.ts +0 -23
  27. package/dist/dotnet-http.js.map +0 -1
  28. package/dist/drift.d.ts +0 -118
  29. package/dist/drift.js.map +0 -1
  30. package/dist/go-http.d.ts +0 -23
  31. package/dist/go-http.js.map +0 -1
  32. package/dist/importador.d.ts +0 -29
  33. package/dist/importador.js.map +0 -1
  34. package/dist/index.d.ts +0 -2
  35. package/dist/index.js.map +0 -1
  36. package/dist/java-http.d.ts +0 -23
  37. package/dist/java-http.js.map +0 -1
  38. package/dist/lua-symbols.d.ts +0 -8
  39. package/dist/lua-symbols.js.map +0 -1
  40. package/dist/projeto.d.ts +0 -48
  41. package/dist/projeto.js.map +0 -1
  42. package/dist/python-http.d.ts +0 -23
  43. package/dist/python-http.js.map +0 -1
  44. package/dist/rust-http.d.ts +0 -23
  45. package/dist/rust-http.js.map +0 -1
  46. package/dist/tipos.d.ts +0 -3
  47. package/dist/tipos.js.map +0 -1
  48. package/dist/typescript-http.d.ts +0 -35
  49. package/dist/typescript-http.js.map +0 -1
  50. package/docs/AGENT_STARTER.md +0 -102
  51. package/docs/como-ensinar-a-sema-para-ia.md +0 -149
  52. package/docs/fluxo-pratico-ia-sema.md +0 -177
  53. package/docs/instalacao-e-primeiro-uso.md +0 -196
  54. package/docs/integracao-com-ia.md +0 -228
  55. package/docs/pagamento-ponta-a-ponta.md +0 -155
  56. package/docs/prompt-base-ia-sema.md +0 -104
  57. package/docs/sintaxe.md +0 -361
  58. package/exemplos/automacao.sema +0 -107
  59. package/exemplos/cadastro_usuario.sema +0 -54
  60. package/exemplos/calculadora.sema +0 -78
  61. package/exemplos/crud_simples.sema +0 -89
  62. package/exemplos/operacao_estrategia.sema +0 -402
  63. package/exemplos/pagamento.sema +0 -222
  64. package/exemplos/pagamento_dominio.sema +0 -35
  65. package/exemplos/testes_embutidos.sema +0 -45
  66. package/exemplos/tratamento_erro.sema +0 -157
  67. package/llms-full.txt +0 -34
  68. package/llms.txt +0 -17
  69. package/node_modules/@sema/gerador-dart/dist/index.d.ts +0 -3
  70. package/node_modules/@sema/gerador-dart/dist/index.js +0 -44
  71. package/node_modules/@sema/gerador-dart/dist/index.js.map +0 -1
  72. package/node_modules/@sema/gerador-dart/package.json +0 -7
  73. package/node_modules/@sema/gerador-lua/dist/index.d.ts +0 -3
  74. package/node_modules/@sema/gerador-lua/dist/index.js +0 -328
  75. package/node_modules/@sema/gerador-lua/dist/index.js.map +0 -1
  76. package/node_modules/@sema/gerador-lua/package.json +0 -7
  77. package/node_modules/@sema/gerador-python/dist/index.d.ts +0 -6
  78. package/node_modules/@sema/gerador-python/dist/index.js +0 -628
  79. package/node_modules/@sema/gerador-python/dist/index.js.map +0 -1
  80. package/node_modules/@sema/gerador-python/package.json +0 -7
  81. package/node_modules/@sema/gerador-typescript/dist/index.d.ts +0 -6
  82. package/node_modules/@sema/gerador-typescript/dist/index.js +0 -656
  83. package/node_modules/@sema/gerador-typescript/dist/index.js.map +0 -1
  84. package/node_modules/@sema/gerador-typescript/package.json +0 -7
  85. package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +0 -122
  86. package/node_modules/@sema/nucleo/dist/ast/tipos.js +0 -2
  87. package/node_modules/@sema/nucleo/dist/ast/tipos.js.map +0 -1
  88. package/node_modules/@sema/nucleo/dist/diagnosticos/index.d.ts +0 -21
  89. package/node_modules/@sema/nucleo/dist/diagnosticos/index.js +0 -12
  90. package/node_modules/@sema/nucleo/dist/diagnosticos/index.js.map +0 -1
  91. package/node_modules/@sema/nucleo/dist/formatador/index.d.ts +0 -9
  92. package/node_modules/@sema/nucleo/dist/formatador/index.js +0 -445
  93. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +0 -1
  94. package/node_modules/@sema/nucleo/dist/index.d.ts +0 -34
  95. package/node_modules/@sema/nucleo/dist/index.js +0 -95
  96. package/node_modules/@sema/nucleo/dist/index.js.map +0 -1
  97. package/node_modules/@sema/nucleo/dist/ir/conversor.d.ts +0 -5
  98. package/node_modules/@sema/nucleo/dist/ir/conversor.js +0 -781
  99. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +0 -1
  100. package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +0 -285
  101. package/node_modules/@sema/nucleo/dist/ir/modelos.js +0 -2
  102. package/node_modules/@sema/nucleo/dist/ir/modelos.js.map +0 -1
  103. package/node_modules/@sema/nucleo/dist/lexer/lexer.d.ts +0 -7
  104. package/node_modules/@sema/nucleo/dist/lexer/lexer.js +0 -122
  105. package/node_modules/@sema/nucleo/dist/lexer/lexer.js.map +0 -1
  106. package/node_modules/@sema/nucleo/dist/lexer/tokens.d.ts +0 -8
  107. package/node_modules/@sema/nucleo/dist/lexer/tokens.js +0 -46
  108. package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +0 -1
  109. package/node_modules/@sema/nucleo/dist/parser/parser.d.ts +0 -9
  110. package/node_modules/@sema/nucleo/dist/parser/parser.js +0 -656
  111. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +0 -1
  112. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +0 -57
  113. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +0 -1497
  114. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +0 -1
  115. package/node_modules/@sema/nucleo/dist/semantico/estruturas.d.ts +0 -104
  116. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js +0 -445
  117. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +0 -1
  118. package/node_modules/@sema/nucleo/dist/semantico/seguranca.d.ts +0 -91
  119. package/node_modules/@sema/nucleo/dist/semantico/seguranca.js +0 -258
  120. package/node_modules/@sema/nucleo/dist/semantico/seguranca.js.map +0 -1
  121. package/node_modules/@sema/nucleo/dist/util/arquivos.d.ts +0 -2
  122. package/node_modules/@sema/nucleo/dist/util/arquivos.js +0 -25
  123. package/node_modules/@sema/nucleo/dist/util/arquivos.js.map +0 -1
  124. package/node_modules/@sema/nucleo/package.json +0 -7
  125. package/node_modules/@sema/padroes/dist/index.d.ts +0 -21
  126. package/node_modules/@sema/padroes/dist/index.js +0 -159
  127. package/node_modules/@sema/padroes/dist/index.js.map +0 -1
  128. package/node_modules/@sema/padroes/package.json +0 -7
package/src/go-http.ts ADDED
@@ -0,0 +1,118 @@
1
+ export interface ParametroRotaGo {
2
+ nome: string;
3
+ tipoSema: "Texto" | "Inteiro" | "Decimal" | "Id";
4
+ }
5
+
6
+ export interface SimboloGoExtraido {
7
+ simbolo: string;
8
+ retorno?: string;
9
+ parametros: Array<{ nome: string; tipoTexto?: string; obrigatorio: boolean }>;
10
+ }
11
+
12
+ export interface RotaGoExtraida {
13
+ origem: "go";
14
+ metodo: string;
15
+ caminho: string;
16
+ simbolo: string;
17
+ parametros: ParametroRotaGo[];
18
+ retorno?: string;
19
+ }
20
+
21
+ const METODOS_HTTP = new Set(["GET", "POST", "PUT", "PATCH", "DELETE"]);
22
+
23
+ function normalizarCaminhoGo(caminho: string): string {
24
+ return caminho
25
+ .replace(/:([A-Za-z_]\w*)/g, "{$1}")
26
+ .replace(/\{([^}:]+):[^}]+\}/g, "{$1}")
27
+ .replace(/\/+/g, "/");
28
+ }
29
+
30
+ function mapearTipoGo(tipo?: string): ParametroRotaGo["tipoSema"] {
31
+ const normalizado = (tipo ?? "").toLowerCase();
32
+ if (/^(int|int32|int64|uint|uint64)$/.test(normalizado)) {
33
+ return "Inteiro";
34
+ }
35
+ if (/^(float32|float64|decimal)$/.test(normalizado)) {
36
+ return "Decimal";
37
+ }
38
+ if (/uuid|id$/.test(normalizado)) {
39
+ return "Id";
40
+ }
41
+ return "Texto";
42
+ }
43
+
44
+ function extrairParametrosAssinaturaGo(assinatura: string): Array<{ nome: string; tipoTexto?: string; obrigatorio: boolean }> {
45
+ return assinatura.split(",").map((parametroBruto) => {
46
+ const parametro = parametroBruto.trim();
47
+ if (!parametro) {
48
+ return undefined;
49
+ }
50
+ const partes = parametro.split(/\s+/).filter(Boolean);
51
+ if (partes.length < 2) {
52
+ return undefined;
53
+ }
54
+ return {
55
+ nome: partes[0]!,
56
+ tipoTexto: partes.slice(1).join(" "),
57
+ obrigatorio: true,
58
+ };
59
+ }).filter((item): item is NonNullable<typeof item> => Boolean(item));
60
+ }
61
+
62
+ function extrairParametrosRotaGo(caminho: string, assinatura: string): ParametroRotaGo[] {
63
+ const assinaturaMap = new Map<string, string>();
64
+ for (const parametro of extrairParametrosAssinaturaGo(assinatura)) {
65
+ assinaturaMap.set(parametro.nome, parametro.tipoTexto ?? "");
66
+ }
67
+ return [...normalizarCaminhoGo(caminho).matchAll(/\{([^}]+)\}/g)].map((match) => ({
68
+ nome: match[1]!,
69
+ tipoSema: mapearTipoGo(assinaturaMap.get(match[1]!)),
70
+ }));
71
+ }
72
+
73
+ export function extrairSimbolosGo(codigo: string): SimboloGoExtraido[] {
74
+ const simbolos = new Map<string, SimboloGoExtraido>();
75
+ for (const match of codigo.matchAll(/func\s+(?:\(([^)]+)\)\s+)?([A-Za-z_]\w*)\s*\(([^)]*)\)\s*(?:\(([^)]*)\)|([A-Za-z0-9_.*\[\]]+))?\s*\{/g)) {
76
+ const receiver = match[1]?.trim();
77
+ const nome = match[2]!;
78
+ const receiverTipo = receiver?.split(/\s+/).at(-1)?.replace(/^[*]+/, "");
79
+ const simbolo = receiverTipo ? `${receiverTipo}.${nome}` : nome;
80
+ simbolos.set(simbolo, {
81
+ simbolo,
82
+ retorno: (match[4] ?? match[5] ?? "").trim() || undefined,
83
+ parametros: extrairParametrosAssinaturaGo(match[3] ?? ""),
84
+ });
85
+ }
86
+ return [...simbolos.values()];
87
+ }
88
+
89
+ export function extrairRotasGo(codigo: string): RotaGoExtraida[] {
90
+ const rotas = new Map<string, RotaGoExtraida>();
91
+
92
+ for (const match of codigo.matchAll(/\b(?:http\.HandleFunc|\w+\.HandleFunc)\(\s*"([^"]+)"\s*,\s*([A-Za-z_]\w*)/g)) {
93
+ const caminho = normalizarCaminhoGo(match[1]!);
94
+ const simbolo = match[2]!;
95
+ rotas.set(`GET:${caminho}:${simbolo}`, {
96
+ origem: "go",
97
+ metodo: "GET",
98
+ caminho,
99
+ simbolo,
100
+ parametros: extrairParametrosRotaGo(caminho, ""),
101
+ });
102
+ }
103
+
104
+ for (const match of codigo.matchAll(/\b(?:engine|router|group|\w+)\.(GET|POST|PUT|PATCH|DELETE)\(\s*"([^"]+)"\s*,\s*([A-Za-z_]\w*)/g)) {
105
+ const metodo = match[1]!.toUpperCase();
106
+ const caminho = normalizarCaminhoGo(match[2]!);
107
+ const simbolo = match[3]!;
108
+ rotas.set(`${metodo}:${caminho}:${simbolo}`, {
109
+ origem: "go",
110
+ metodo,
111
+ caminho,
112
+ simbolo,
113
+ parametros: extrairParametrosRotaGo(caminho, ""),
114
+ });
115
+ }
116
+
117
+ return [...rotas.values()];
118
+ }