@semacode/cli 1.5.28 → 1.5.30

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 (125) hide show
  1. package/README.md +144 -144
  2. package/dist/bridge.d.ts +52 -0
  3. package/dist/bridge.js +318 -0
  4. package/dist/bridge.js.map +1 -0
  5. package/dist/comandos.d.ts +11 -0
  6. package/dist/comandos.js +146 -0
  7. package/dist/comandos.js.map +1 -0
  8. package/dist/contexto.d.ts +34 -0
  9. package/dist/contexto.js +197 -0
  10. package/dist/contexto.js.map +1 -0
  11. package/dist/drift.d.ts +1 -1
  12. package/dist/drift.js +32 -5
  13. package/dist/drift.js.map +1 -1
  14. package/dist/guard.d.ts +35 -0
  15. package/dist/guard.js +164 -0
  16. package/dist/guard.js.map +1 -0
  17. package/dist/index.js +391 -64
  18. package/dist/index.js.map +1 -1
  19. package/dist/lua-symbols.d.ts +0 -6
  20. package/dist/lua-symbols.js +11 -78
  21. package/dist/lua-symbols.js.map +1 -1
  22. package/dist/projeto.js +6 -0
  23. package/dist/projeto.js.map +1 -1
  24. package/dist/tipos.d.ts +1 -1
  25. package/exemplos/.prepack-generated +1 -0
  26. package/exemplos/author_obra_comum.sema +294 -294
  27. package/exemplos/author_tema_sensivel.sema +264 -264
  28. package/exemplos/profile_game.sema +114 -114
  29. package/exemplos/profile_legal.sema +105 -105
  30. package/exemplos/profile_ops.sema +110 -110
  31. package/exemplos/profile_research.sema +104 -104
  32. package/exemplos/profile_software.sema +123 -123
  33. package/exemplos/profile_workflow_n8n.sema +99 -99
  34. package/node_modules/@sema/gerador-css/package.json +14 -7
  35. package/node_modules/@sema/gerador-css/src/index.ts +605 -0
  36. package/node_modules/@sema/gerador-css/tsconfig.json +13 -0
  37. package/node_modules/@sema/gerador-css/tsconfig.tsbuildinfo +1 -0
  38. package/node_modules/@sema/gerador-dart/package.json +14 -7
  39. package/node_modules/@sema/gerador-dart/src/index.ts +52 -0
  40. package/node_modules/@sema/gerador-dart/tsconfig.json +13 -0
  41. package/node_modules/@sema/gerador-dart/tsconfig.tsbuildinfo +1 -0
  42. package/node_modules/@sema/gerador-html/package.json +14 -7
  43. package/node_modules/@sema/gerador-html/src/index.ts +185 -0
  44. package/node_modules/@sema/gerador-html/tsconfig.json +13 -0
  45. package/node_modules/@sema/gerador-html/tsconfig.tsbuildinfo +1 -0
  46. package/node_modules/@sema/gerador-javascript/package.json +14 -7
  47. package/node_modules/@sema/gerador-javascript/src/index.ts +461 -0
  48. package/node_modules/@sema/gerador-javascript/tsconfig.json +13 -0
  49. package/node_modules/@sema/gerador-javascript/tsconfig.tsbuildinfo +1 -0
  50. package/node_modules/@sema/gerador-lua/package.json +14 -7
  51. package/node_modules/@sema/gerador-lua/src/index.ts +359 -0
  52. package/node_modules/@sema/gerador-lua/tsconfig.json +13 -0
  53. package/node_modules/@sema/gerador-lua/tsconfig.tsbuildinfo +1 -0
  54. package/node_modules/@sema/gerador-python/package.json +14 -7
  55. package/node_modules/@sema/gerador-python/src/index.ts +850 -0
  56. package/node_modules/@sema/gerador-python/tsconfig.json +13 -0
  57. package/node_modules/@sema/gerador-python/tsconfig.tsbuildinfo +1 -0
  58. package/node_modules/@sema/gerador-typescript/package.json +14 -7
  59. package/node_modules/@sema/gerador-typescript/src/index.ts +876 -0
  60. package/node_modules/@sema/gerador-typescript/tsconfig.json +13 -0
  61. package/node_modules/@sema/gerador-typescript/tsconfig.tsbuildinfo +1 -0
  62. package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +1 -1
  63. package/node_modules/@sema/nucleo/dist/index.d.ts +17 -0
  64. package/node_modules/@sema/nucleo/dist/index.js +28 -0
  65. package/node_modules/@sema/nucleo/dist/index.js.map +1 -1
  66. package/node_modules/@sema/nucleo/dist/ir/conversor.js +4 -0
  67. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
  68. package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +3 -3
  69. package/node_modules/@sema/nucleo/dist/parser/parser.js +2 -0
  70. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
  71. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +2 -2
  72. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +3 -1
  73. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
  74. package/node_modules/@sema/nucleo/package.json +10 -7
  75. package/node_modules/@sema/nucleo/src/ast/tipos.ts +207 -0
  76. package/node_modules/@sema/nucleo/src/diagnosticos/index.ts +43 -0
  77. package/node_modules/@sema/nucleo/src/formatador/index.ts +530 -0
  78. package/node_modules/@sema/nucleo/src/index.ts +183 -0
  79. package/node_modules/@sema/nucleo/src/ir/conversor.ts +1037 -0
  80. package/node_modules/@sema/nucleo/src/ir/modelos.ts +403 -0
  81. package/node_modules/@sema/nucleo/src/lexer/lexer.ts +166 -0
  82. package/node_modules/@sema/nucleo/src/lexer/tokens.ts +79 -0
  83. package/node_modules/@sema/nucleo/src/parser/gramatica.ebnf +41 -0
  84. package/node_modules/@sema/nucleo/src/parser/parser.ts +936 -0
  85. package/node_modules/@sema/nucleo/src/persistencia/contratos.ts +379 -0
  86. package/node_modules/@sema/nucleo/src/semantico/analisador.ts +3126 -0
  87. package/node_modules/@sema/nucleo/src/semantico/estruturas.ts +665 -0
  88. package/node_modules/@sema/nucleo/src/semantico/seguranca.ts +362 -0
  89. package/node_modules/@sema/nucleo/src/util/arquivos.ts +28 -0
  90. package/node_modules/@sema/nucleo/tsconfig.json +9 -0
  91. package/node_modules/@sema/nucleo/tsconfig.tsbuildinfo +1 -0
  92. package/node_modules/@sema/padroes/package.json +10 -7
  93. package/node_modules/@sema/padroes/src/index.ts +382 -0
  94. package/node_modules/@sema/padroes/tsconfig.json +9 -0
  95. package/node_modules/@sema/padroes/tsconfig.tsbuildinfo +1 -0
  96. package/package.json +74 -74
  97. package/AGENTS.md +0 -280
  98. package/LICENSE +0 -22
  99. package/SEMA_BRIEF.curto.txt +0 -11
  100. package/SEMA_BRIEF.md +0 -112
  101. package/SEMA_BRIEF.micro.txt +0 -9
  102. package/SEMA_INDEX.json +0 -1534
  103. package/dist/php-symbols.d.ts +0 -24
  104. package/dist/php-symbols.js +0 -375
  105. package/dist/php-symbols.js.map +0 -1
  106. package/docs/AGENT_STARTER.md +0 -109
  107. package/docs/cli.md +0 -175
  108. package/docs/como-ensinar-a-sema-para-ia.md +0 -155
  109. package/docs/deploy.md +0 -93
  110. package/docs/documentacao.md +0 -88
  111. package/docs/env.md +0 -105
  112. package/docs/extensao-vscode.md +0 -53
  113. package/docs/fluxo-pratico-ia-sema.md +0 -187
  114. package/docs/instalacao-e-primeiro-uso.md +0 -134
  115. package/docs/integracao-com-ia.md +0 -110
  116. package/docs/mcp.md +0 -292
  117. package/docs/pagamento-ponta-a-ponta.md +0 -171
  118. package/docs/persistencia-vendor-first.md +0 -151
  119. package/docs/prompt-base-ia-sema.md +0 -111
  120. package/docs/repositories.md +0 -54
  121. package/docs/rollback.md +0 -49
  122. package/docs/seguranca.md +0 -126
  123. package/docs/sintaxe.md +0 -218
  124. package/llms-full.txt +0 -34
  125. package/llms.txt +0 -17
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Guarda de governança Sema.
3
+ *
4
+ * Cria um bloqueio local que obriga a chamada de `docs-impacto`
5
+ * antes de operações destrutivas (compilar, publicar, validar pesado).
6
+ *
7
+ * Arquivo de estado: .sema/guard.json
8
+ *
9
+ * Contrato: contratos/sema/guard.sema
10
+ */
11
+ export interface EstadoGuarda {
12
+ ativo: boolean;
13
+ sessaoId: string;
14
+ ativadoEm: string;
15
+ docsImpactoChamado: boolean;
16
+ intencao?: string;
17
+ docsLidas: string[];
18
+ ultimaAtualizacao: string;
19
+ }
20
+ export interface ResultadoGuarda {
21
+ comando: string;
22
+ sucesso: boolean;
23
+ estado?: EstadoGuarda;
24
+ bloqueado?: boolean;
25
+ mensagem?: string;
26
+ }
27
+ export declare function ativarGuarda(baseProjeto: string): Promise<ResultadoGuarda>;
28
+ export declare function desativarGuarda(baseProjeto: string): Promise<ResultadoGuarda>;
29
+ export declare function statusGuarda(baseProjeto: string): Promise<ResultadoGuarda>;
30
+ export declare function registrarDocsImpacto(baseProjeto: string, intencao: string): Promise<ResultadoGuarda>;
31
+ export declare function registrarDocLida(baseProjeto: string, caminhoDoc: string): Promise<ResultadoGuarda>;
32
+ export declare function verificarSePodeProsseguir(baseProjeto: string, operacao: string): Promise<{
33
+ pode: boolean;
34
+ motivo?: string;
35
+ }>;
package/dist/guard.js ADDED
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Guarda de governança Sema.
3
+ *
4
+ * Cria um bloqueio local que obriga a chamada de `docs-impacto`
5
+ * antes de operações destrutivas (compilar, publicar, validar pesado).
6
+ *
7
+ * Arquivo de estado: .sema/guard.json
8
+ *
9
+ * Contrato: contratos/sema/guard.sema
10
+ */
11
+ import { readFile, writeFile, mkdir } from "node:fs/promises";
12
+ import path from "node:path";
13
+ import { randomUUID } from "node:crypto";
14
+ // ---------------------------------------------------------------------------
15
+ // Constantes
16
+ // ---------------------------------------------------------------------------
17
+ const ARQUIVO_GUARD = path.join(".sema", "guard.json");
18
+ function caminhoGuard(baseProjeto) {
19
+ return path.resolve(baseProjeto, ARQUIVO_GUARD);
20
+ }
21
+ // ---------------------------------------------------------------------------
22
+ // Estado padrão
23
+ // ---------------------------------------------------------------------------
24
+ function estadoVazio() {
25
+ return {
26
+ ativo: false,
27
+ sessaoId: "",
28
+ ativadoEm: "",
29
+ docsImpactoChamado: false,
30
+ docsLidas: [],
31
+ ultimaAtualizacao: "",
32
+ };
33
+ }
34
+ // ---------------------------------------------------------------------------
35
+ // Ler / escrever estado do guarda
36
+ // ---------------------------------------------------------------------------
37
+ async function lerEstado(baseProjeto) {
38
+ try {
39
+ const conteudo = await readFile(caminhoGuard(baseProjeto), "utf8");
40
+ return JSON.parse(conteudo);
41
+ }
42
+ catch {
43
+ return estadoVazio();
44
+ }
45
+ }
46
+ async function escreverEstado(baseProjeto, estado) {
47
+ const dir = path.dirname(caminhoGuard(baseProjeto));
48
+ await mkdir(dir, { recursive: true });
49
+ estado.ultimaAtualizacao = new Date().toISOString();
50
+ await writeFile(caminhoGuard(baseProjeto), JSON.stringify(estado, null, 2), "utf8");
51
+ }
52
+ // ---------------------------------------------------------------------------
53
+ // Ações do guarda
54
+ // ---------------------------------------------------------------------------
55
+ export async function ativarGuarda(baseProjeto) {
56
+ const estado = await lerEstado(baseProjeto);
57
+ if (estado.ativo) {
58
+ return {
59
+ comando: "guard on",
60
+ sucesso: false,
61
+ estado,
62
+ mensagem: `Guarda ja esta ativo (sessao: ${estado.sessaoId}). Desative com 'sema guard off' primeiro.`,
63
+ };
64
+ }
65
+ const novoEstado = {
66
+ ativo: true,
67
+ sessaoId: randomUUID(),
68
+ ativadoEm: new Date().toISOString(),
69
+ docsImpactoChamado: false,
70
+ docsLidas: [],
71
+ ultimaAtualizacao: new Date().toISOString(),
72
+ };
73
+ await escreverEstado(baseProjeto, novoEstado);
74
+ return {
75
+ comando: "guard on",
76
+ sucesso: true,
77
+ estado: novoEstado,
78
+ mensagem: `Guarda ativado. Sessao: ${novoEstado.sessaoId.slice(0, 8)}...`,
79
+ };
80
+ }
81
+ export async function desativarGuarda(baseProjeto) {
82
+ const estado = await lerEstado(baseProjeto);
83
+ if (!estado.ativo) {
84
+ return {
85
+ comando: "guard off",
86
+ sucesso: false,
87
+ estado,
88
+ mensagem: "Guarda nao esta ativo.",
89
+ };
90
+ }
91
+ await escreverEstado(baseProjeto, estadoVazio());
92
+ return {
93
+ comando: "guard off",
94
+ sucesso: true,
95
+ estado: estadoVazio(),
96
+ mensagem: "Guarda desativado.",
97
+ };
98
+ }
99
+ export async function statusGuarda(baseProjeto) {
100
+ const estado = await lerEstado(baseProjeto);
101
+ return {
102
+ comando: "guard status",
103
+ sucesso: true,
104
+ estado,
105
+ bloqueado: estado.ativo && !estado.docsImpactoChamado,
106
+ mensagem: estado.ativo
107
+ ? estado.docsImpactoChamado
108
+ ? `Guarda ativo. Docs-impacto ja registrado. Sessao: ${estado.sessaoId.slice(0, 8)}...`
109
+ : `Guarda ativo. Docs-impacto pendente! Sessao: ${estado.sessaoId.slice(0, 8)}...`
110
+ : "Guarda inativo.",
111
+ };
112
+ }
113
+ export async function registrarDocsImpacto(baseProjeto, intencao) {
114
+ const estado = await lerEstado(baseProjeto);
115
+ if (!estado.ativo) {
116
+ // Guarda inativo: registrar mesmo assim (útil pra relatório)
117
+ return {
118
+ comando: "guard registrar-docs",
119
+ sucesso: true,
120
+ mensagem: "Guarda inativo. Docs-impacto registrado em cache leve.",
121
+ };
122
+ }
123
+ estado.docsImpactoChamado = true;
124
+ estado.intencao = intencao;
125
+ await escreverEstado(baseProjeto, estado);
126
+ return {
127
+ comando: "guard registrar-docs",
128
+ sucesso: true,
129
+ estado,
130
+ mensagem: `Docs-impacto registrado: "${intencao.slice(0, 60)}"`,
131
+ };
132
+ }
133
+ export async function registrarDocLida(baseProjeto, caminhoDoc) {
134
+ const estado = await lerEstado(baseProjeto);
135
+ if (!estado.ativo) {
136
+ return { comando: "guard registrar-doc", sucesso: true };
137
+ }
138
+ if (!estado.docsLidas.includes(caminhoDoc)) {
139
+ estado.docsLidas.push(caminhoDoc);
140
+ }
141
+ await escreverEstado(baseProjeto, estado);
142
+ return {
143
+ comando: "guard registrar-doc",
144
+ sucesso: true,
145
+ estado,
146
+ };
147
+ }
148
+ // ---------------------------------------------------------------------------
149
+ // Verificação: operação pode prosseguir?
150
+ // ---------------------------------------------------------------------------
151
+ export async function verificarSePodeProsseguir(baseProjeto, operacao) {
152
+ const estado = await lerEstado(baseProjeto);
153
+ if (!estado.ativo) {
154
+ return { pode: true }; // Guarda inativo: liberado
155
+ }
156
+ if (!estado.docsImpactoChamado) {
157
+ return {
158
+ pode: false,
159
+ motivo: `Guarda ativo bloqueou "${operacao}". Execute 'sema docs-impacto --intencao "${operacao}"' primeiro.`,
160
+ };
161
+ }
162
+ return { pode: true };
163
+ }
164
+ //# sourceMappingURL=guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.js","sourceRoot":"","sources":["../src/guard.ts"],"names":[],"mappings":"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"}