@semacode/cli 1.5.29 → 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 (85) hide show
  1. package/dist/comandos.js +36 -0
  2. package/dist/comandos.js.map +1 -1
  3. package/dist/guard.d.ts +35 -0
  4. package/dist/guard.js +164 -0
  5. package/dist/guard.js.map +1 -0
  6. package/exemplos/.prepack-generated +1 -0
  7. package/node_modules/@sema/gerador-css/package.json +14 -7
  8. package/node_modules/@sema/gerador-css/src/index.ts +605 -0
  9. package/node_modules/@sema/gerador-css/tsconfig.json +13 -0
  10. package/node_modules/@sema/gerador-css/tsconfig.tsbuildinfo +1 -0
  11. package/node_modules/@sema/gerador-dart/package.json +14 -7
  12. package/node_modules/@sema/gerador-dart/src/index.ts +52 -0
  13. package/node_modules/@sema/gerador-dart/tsconfig.json +13 -0
  14. package/node_modules/@sema/gerador-dart/tsconfig.tsbuildinfo +1 -0
  15. package/node_modules/@sema/gerador-html/package.json +14 -7
  16. package/node_modules/@sema/gerador-html/src/index.ts +185 -0
  17. package/node_modules/@sema/gerador-html/tsconfig.json +13 -0
  18. package/node_modules/@sema/gerador-html/tsconfig.tsbuildinfo +1 -0
  19. package/node_modules/@sema/gerador-javascript/package.json +14 -7
  20. package/node_modules/@sema/gerador-javascript/src/index.ts +461 -0
  21. package/node_modules/@sema/gerador-javascript/tsconfig.json +13 -0
  22. package/node_modules/@sema/gerador-javascript/tsconfig.tsbuildinfo +1 -0
  23. package/node_modules/@sema/gerador-lua/package.json +14 -7
  24. package/node_modules/@sema/gerador-lua/src/index.ts +359 -0
  25. package/node_modules/@sema/gerador-lua/tsconfig.json +13 -0
  26. package/node_modules/@sema/gerador-lua/tsconfig.tsbuildinfo +1 -0
  27. package/node_modules/@sema/gerador-python/package.json +14 -7
  28. package/node_modules/@sema/gerador-python/src/index.ts +850 -0
  29. package/node_modules/@sema/gerador-python/tsconfig.json +13 -0
  30. package/node_modules/@sema/gerador-python/tsconfig.tsbuildinfo +1 -0
  31. package/node_modules/@sema/gerador-typescript/package.json +14 -7
  32. package/node_modules/@sema/gerador-typescript/src/index.ts +876 -0
  33. package/node_modules/@sema/gerador-typescript/tsconfig.json +13 -0
  34. package/node_modules/@sema/gerador-typescript/tsconfig.tsbuildinfo +1 -0
  35. package/node_modules/@sema/nucleo/package.json +10 -7
  36. package/node_modules/@sema/nucleo/src/ast/tipos.ts +207 -0
  37. package/node_modules/@sema/nucleo/src/diagnosticos/index.ts +43 -0
  38. package/node_modules/@sema/nucleo/src/formatador/index.ts +530 -0
  39. package/node_modules/@sema/nucleo/src/index.ts +183 -0
  40. package/node_modules/@sema/nucleo/src/ir/conversor.ts +1037 -0
  41. package/node_modules/@sema/nucleo/src/ir/modelos.ts +403 -0
  42. package/node_modules/@sema/nucleo/src/lexer/lexer.ts +166 -0
  43. package/node_modules/@sema/nucleo/src/lexer/tokens.ts +79 -0
  44. package/node_modules/@sema/nucleo/src/parser/gramatica.ebnf +41 -0
  45. package/node_modules/@sema/nucleo/src/parser/parser.ts +936 -0
  46. package/node_modules/@sema/nucleo/src/persistencia/contratos.ts +379 -0
  47. package/node_modules/@sema/nucleo/src/semantico/analisador.ts +3126 -0
  48. package/node_modules/@sema/nucleo/src/semantico/estruturas.ts +665 -0
  49. package/node_modules/@sema/nucleo/src/semantico/seguranca.ts +362 -0
  50. package/node_modules/@sema/nucleo/src/util/arquivos.ts +28 -0
  51. package/node_modules/@sema/nucleo/tsconfig.json +9 -0
  52. package/node_modules/@sema/nucleo/tsconfig.tsbuildinfo +1 -0
  53. package/node_modules/@sema/padroes/package.json +10 -7
  54. package/node_modules/@sema/padroes/src/index.ts +382 -0
  55. package/node_modules/@sema/padroes/tsconfig.json +9 -0
  56. package/node_modules/@sema/padroes/tsconfig.tsbuildinfo +1 -0
  57. package/package.json +74 -75
  58. package/AGENTS.md +0 -294
  59. package/AGENT_CONTEXT_PACK.json +0 -164
  60. package/LICENSE +0 -22
  61. package/SEMA_BRIEF.curto.txt +0 -11
  62. package/SEMA_BRIEF.md +0 -511
  63. package/SEMA_BRIEF.micro.txt +0 -9
  64. package/SEMA_INDEX.json +0 -7588
  65. package/docs/AGENT_STARTER.md +0 -109
  66. package/docs/api.md +0 -82
  67. package/docs/cli.md +0 -175
  68. package/docs/como-ensinar-a-sema-para-ia.md +0 -155
  69. package/docs/deploy.md +0 -93
  70. package/docs/documentacao.md +0 -88
  71. package/docs/env.md +0 -105
  72. package/docs/extensao-vscode.md +0 -53
  73. package/docs/fluxo-pratico-ia-sema.md +0 -187
  74. package/docs/instalacao-e-primeiro-uso.md +0 -134
  75. package/docs/integracao-com-ia.md +0 -110
  76. package/docs/mcp.md +0 -292
  77. package/docs/pagamento-ponta-a-ponta.md +0 -171
  78. package/docs/persistencia-vendor-first.md +0 -151
  79. package/docs/prompt-base-ia-sema.md +0 -111
  80. package/docs/repositories.md +0 -54
  81. package/docs/rollback.md +0 -49
  82. package/docs/seguranca.md +0 -126
  83. package/docs/sintaxe.md +0 -218
  84. package/llms-full.txt +0 -35
  85. package/llms.txt +0 -18
package/dist/comandos.js CHANGED
@@ -100,11 +100,47 @@ async function comandoContextoChat(posicionais, args, emJson) {
100
100
  return 0;
101
101
  }
102
102
  // ---------------------------------------------------------------------------
103
+ // Guarda de governança
104
+ // ---------------------------------------------------------------------------
105
+ async function comandoGuard(posicionais, _args, emJson) {
106
+ const { ativarGuarda, desativarGuarda, statusGuarda } = await import("./guard.js");
107
+ const baseProjeto = process.cwd();
108
+ const subcomando = posicionais[0] ?? "status";
109
+ let resultado;
110
+ switch (subcomando) {
111
+ case "on":
112
+ resultado = await ativarGuarda(baseProjeto);
113
+ break;
114
+ case "off":
115
+ resultado = await desativarGuarda(baseProjeto);
116
+ break;
117
+ case "status":
118
+ default:
119
+ resultado = await statusGuarda(baseProjeto);
120
+ break;
121
+ }
122
+ if (emJson) {
123
+ console.log(JSON.stringify(resultado, null, 2));
124
+ }
125
+ else {
126
+ console.log(resultado.mensagem ?? `Guarda: ${resultado.sucesso ? "ok" : "falha"}`);
127
+ if (resultado.estado) {
128
+ console.log(` Ativo: ${resultado.estado.ativo ? "sim" : "nao"}`);
129
+ console.log(` Docs-impacto: ${resultado.estado.docsImpactoChamado ? "chamado" : "pendente"}`);
130
+ if (resultado.estado.intencao) {
131
+ console.log(` Intencao: ${resultado.estado.intencao}`);
132
+ }
133
+ }
134
+ }
135
+ return resultado.sucesso ? 0 : 1;
136
+ }
137
+ // ---------------------------------------------------------------------------
103
138
  // Registro
104
139
  // ---------------------------------------------------------------------------
105
140
  export const REGISTRO_COMANDOS = {
106
141
  "mcp-client": comandoMcpClient,
107
142
  "bridge-config": comandoBridgeConfig,
108
143
  "contexto-chat": comandoContextoChat,
144
+ "guard": comandoGuard,
109
145
  };
110
146
  //# sourceMappingURL=comandos.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"comandos.js","sourceRoot":"","sources":["../src/comandos.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,GAGtB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,uBAAuB,GAGxB,MAAM,eAAe,CAAC;AAYvB,8EAA8E;AAC9E,8DAA8D;AAC9D,8EAA8E;AAE9E,KAAK,UAAU,gBAAgB,CAC7B,WAAqB,EACrB,IAAc,EACd,MAAe;IAEf,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,qBAAqB,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC;IACrD,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEvC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;QAC5F,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAkB;QAC7B,SAAS,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACnD,QAAQ;QACR,WAAW,EAAE,QAAQ;QACrB,KAAK;QACL,IAAI,EAAE,WAAW;KAClB,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAExD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,qBAAqB,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,WAAW,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,kBAAkB,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;IACxD,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,SAAS,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,YAAsB,EACtB,IAAc,EACd,MAAe;IAEf,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,qBAAqB,EAAE,CAAC;IAEpD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;QAC5F,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,qBAAqB,CAAC;QAC5C,WAAW,EAAE,QAAQ;QACrB,KAAK;QACL,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;IAEH,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,uBAAuB,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,UAAU,SAAS,CAAC,IAAI,IAAI,cAAc,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,WAAqB,EACrB,IAAc,EACd,MAAe;IAEf,MAAM,SAAS,GAAG,WAAW,CAAC;IAC9B,MAAM,OAAO,GAAyB,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IAElE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAC/E,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAwB;QACnC,SAAS;QACT,YAAY,EAAE,OAAO;KACtB,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAEzD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YACzB,OAAO,EAAE,eAAe;YACxB,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,YAAY,EAAE,SAAS,CAAC,YAAY;YACpC,eAAe,EAAE,SAAS,CAAC,eAAe;SAC3C,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACb,OAAO,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,SAAS,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,uBAAuB,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,kCAAkC,SAAS,CAAC,YAAY,0BAA0B,CAAC,CAAC;QAClG,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACtD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E,MAAM,CAAC,MAAM,iBAAiB,GAAmC;IAC/D,YAAY,EAAE,gBAAgB;IAC9B,eAAe,EAAE,mBAAmB;IACpC,eAAe,EAAE,mBAAmB;CACrC,CAAC"}
1
+ {"version":3,"file":"comandos.js","sourceRoot":"","sources":["../src/comandos.ts"],"names":[],"mappings":"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"}
@@ -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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"}
@@ -0,0 +1 @@
1
+ gerado pelo prepack do @semacode/cli
@@ -1,7 +1,14 @@
1
- {
2
- "name": "@sema/gerador-css",
3
- "version": "1.5.29",
4
- "type": "module",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts"
7
- }
1
+ {
2
+ "name": "@sema/gerador-css",
3
+ "version": "1.5.29",
4
+ "type": "module",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc -p tsconfig.json"
9
+ },
10
+ "dependencies": {
11
+ "@sema/nucleo": "file:../nucleo",
12
+ "@sema/padroes": "file:../padroes"
13
+ }
14
+ }