@semacode/cli 1.5.54 → 2.0.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.
- package/README.md +51 -7
- package/dist/agentContext.d.ts +1 -1
- package/dist/agentContext.js +3 -3
- package/dist/agentContextPack.js +33 -92
- package/dist/agentContextTipos.d.ts +6 -9
- package/dist/agentContextTipos.js +5 -4
- package/dist/agentEntryPoints.d.ts +22 -2
- package/dist/agentEntryPoints.js +232 -129
- package/dist/docs.part01.js +1 -1
- package/dist/docs.part02.js +21 -10
- package/dist/doctorCommand.d.ts +4 -4
- package/dist/doctorCommand.js +21 -10
- package/dist/exemplosOficiais.d.ts +10 -0
- package/dist/exemplosOficiais.js +32 -22
- package/dist/fsGovernado.js +8 -6
- package/dist/geracaoCore.js +49 -2
- package/dist/iaPrompts.d.ts +2 -2
- package/dist/iaPrompts.js +5 -5
- package/dist/index.part01.d.ts +1 -1
- package/dist/index.part01.js +9 -9
- package/dist/index.part02.js +1 -1
- package/dist/index.part03.d.ts +1 -0
- package/dist/index.part03.js +26 -12
- package/dist/index.part04.d.ts +1 -0
- package/dist/index.part04.js +49 -21
- package/dist/index.part05.js +1 -1
- package/dist/index.part06.d.ts +1 -1
- package/dist/index.part06.js +28 -19
- package/dist/index.part07.js +20 -20
- package/dist/index.part08.js +4 -8
- package/dist/initCommand.d.ts +3 -1
- package/dist/initCommand.js +41 -12
- package/dist/initTemplatesBase.js +9 -11
- package/dist/projetoConfig.js +1 -1
- package/dist/workspaceWrite.d.ts +22 -0
- package/dist/workspaceWrite.js +332 -0
- package/docs/README.md +10 -4
- package/docs/ai-integration.md +31 -12
- package/docs/ai-onboarding.md +43 -14
- package/docs/ai-workflow.md +23 -40
- package/docs/auth.md +13 -3
- package/docs/cli.md +21 -8
- package/docs/commands.md +10 -11
- package/docs/deploy.md +27 -4
- package/docs/documentation.md +2 -2
- package/docs/env.md +3 -1
- package/docs/getting-started.md +27 -3
- package/docs/repositories.md +18 -2
- package/docs/rollback.md +23 -5
- package/docs/security.md +8 -0
- package/docs/syntax.md +8 -9
- package/docs/testing.md +15 -4
- package/docs/vocabulary.md +2 -1
- package/node_modules/@sema/gerador-php/dist/index.d.ts +3 -0
- package/node_modules/@sema/gerador-php/dist/index.js +538 -0
- package/node_modules/@sema/gerador-php/dist/index.js.map +1 -0
- package/node_modules/@sema/gerador-php/package.json +7 -0
- package/node_modules/@sema/padroes/dist/index.d.ts +2 -1
- package/node_modules/@sema/padroes/dist/index.js +31 -0
- package/node_modules/@sema/padroes/dist/index.js.map +1 -1
- package/package.json +22 -12
- package/dist/billing/index.d.ts +0 -17
- package/dist/billing/index.js +0 -74
package/dist/index.part03.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
// SEMA-GOVERNED: sema.governanca_ia_contexto
|
|
2
|
-
// Descricao: CLI particionada; consulte contratos/sema/governanca_ia_contexto.sema antes de editar.
|
|
3
|
-
import { writeFile } from "node:fs/promises";
|
|
4
1
|
import path from "node:path";
|
|
5
2
|
import { temErros, } from "@sema/nucleo";
|
|
6
3
|
import { carregarProjeto, } from "./projeto.js";
|
|
@@ -9,6 +6,7 @@ import { ARQUIVO_AGENT_CONTEXT_PACK, ARQUIVO_SEMA_BOOT, ARQUIVO_SEMA_SMALL_MODEL
|
|
|
9
6
|
import { criarAgentContextPack, criarGuiaCapacidadeIa } from './agentContextPack.js';
|
|
10
7
|
import { criarEntradaCanonicaProjeto } from './agentContext.js';
|
|
11
8
|
import { renderizarSemaBoot, renderizarSemaSmallModel, } from './agentEntryPoints.js';
|
|
9
|
+
import { escreverArquivoWorkspaceSeguro, validarDestinosEscritaWorkspace } from './workspaceWrite.js';
|
|
12
10
|
import { resumirListaTexto } from './textoListas.js';
|
|
13
11
|
import { coletarResumoSemanticoModulo, criarBriefingMinimo, criarPromptCurtoModulo, renderizarResumoModuloMarkdown, renderizarResumoModuloTexto } from "./index.part02.js";
|
|
14
12
|
export function renderizarResumoProjetoMarkdown(geradoEm, modulos, guiaPorCapacidade) {
|
|
@@ -325,6 +323,16 @@ export async function carregarContextoModuloIa(arquivoEntrada) {
|
|
|
325
323
|
briefing,
|
|
326
324
|
};
|
|
327
325
|
}
|
|
326
|
+
export const ARQUIVOS_RESUMO_MODULO_IA = [
|
|
327
|
+
ARQUIVO_SEMA_BOOT,
|
|
328
|
+
ARQUIVO_SEMA_SMALL_MODEL,
|
|
329
|
+
"agent-context-pack.json",
|
|
330
|
+
"resumo.micro.txt",
|
|
331
|
+
"resumo.curto.txt",
|
|
332
|
+
"resumo.md",
|
|
333
|
+
"briefing.min.json",
|
|
334
|
+
"prompt-curto.txt",
|
|
335
|
+
];
|
|
328
336
|
export async function gerarArquivosResumoModuloIa(contexto, pastaBase) {
|
|
329
337
|
const guiaPorCapacidade = criarGuiaCapacidadeIa();
|
|
330
338
|
const resumoSemantico = coletarResumoSemanticoModulo(contexto);
|
|
@@ -336,16 +344,22 @@ export async function gerarArquivosResumoModuloIa(contexto, pastaBase) {
|
|
|
336
344
|
const agentContextPack = criarAgentContextPack(guiaPorCapacidade);
|
|
337
345
|
const semaBoot = renderizarSemaBoot(agentContextPack);
|
|
338
346
|
const semaSmallModel = renderizarSemaSmallModel(agentContextPack);
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
+
const artefatos = [
|
|
348
|
+
{ caminhoRelativo: ARQUIVO_SEMA_BOOT, conteudo: semaBoot },
|
|
349
|
+
{ caminhoRelativo: ARQUIVO_SEMA_SMALL_MODEL, conteudo: semaSmallModel },
|
|
350
|
+
{ caminhoRelativo: "agent-context-pack.json", conteudo: `${JSON.stringify(agentContextPack, null, 2)}\n` },
|
|
351
|
+
{ caminhoRelativo: "resumo.micro.txt", conteudo: resumoMicro },
|
|
352
|
+
{ caminhoRelativo: "resumo.curto.txt", conteudo: resumoCurto },
|
|
353
|
+
{ caminhoRelativo: "resumo.md", conteudo: resumoMarkdown },
|
|
354
|
+
{ caminhoRelativo: "briefing.min.json", conteudo: `${JSON.stringify(briefingMinimo, null, 2)}\n` },
|
|
355
|
+
{ caminhoRelativo: "prompt-curto.txt", conteudo: promptCurto },
|
|
356
|
+
];
|
|
357
|
+
await validarDestinosEscritaWorkspace(pastaBase, artefatos.map((artefato) => artefato.caminhoRelativo));
|
|
358
|
+
for (const artefato of artefatos) {
|
|
359
|
+
await escreverArquivoWorkspaceSeguro(pastaBase, artefato.caminhoRelativo, artefato.conteudo, { sobrescrever: true });
|
|
360
|
+
}
|
|
347
361
|
return {
|
|
348
|
-
artefatosCompactos: [
|
|
362
|
+
artefatosCompactos: [...ARQUIVOS_RESUMO_MODULO_IA],
|
|
349
363
|
guiaPorCapacidade,
|
|
350
364
|
};
|
|
351
365
|
}
|
package/dist/index.part04.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type GuiaCapacidadeIaMap } from './agentContextTipos.js';
|
|
2
2
|
import { ContextoIaGerado, ResumoSemanticoModuloIa } from "./index.part01.js";
|
|
3
|
+
export declare const ARQUIVOS_RESUMO_PROJETO_IA: readonly ["SEMA_BOOT.md", "SEMA_SMALL_MODEL.md", "SEMA_BRIEF.md", "SEMA_BRIEF.micro.txt", "SEMA_BRIEF.curto.txt", "SEMA_INDEX.json", "AGENT_CONTEXT_PACK.json", "docs/ai-integration.md"];
|
|
3
4
|
export declare function gerarResumoProjetoIa(entrada: string | undefined, pastaSaidaOpcional?: string, escreverNaRaiz?: boolean): Promise<{
|
|
4
5
|
geradoEm: string;
|
|
5
6
|
baseProjeto: string;
|
package/dist/index.part04.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
// SEMA-GOVERNED: sema.governanca_ia_contexto
|
|
2
|
-
//
|
|
3
|
-
import { mkdir
|
|
1
|
+
// SEMA-GOVERNED: sema.governanca_ia_contexto, sema.produto.escrita_segura_workspace
|
|
2
|
+
// Descrição: gera contexto local e grava artefatos somente dentro da base validada.
|
|
3
|
+
import { mkdir } from "node:fs/promises";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { formatarDiagnosticos, gerarRespostaValidacao, temErros, } from "@sema/nucleo";
|
|
6
6
|
import { carregarProjeto, } from "./projeto.js";
|
|
@@ -11,13 +11,24 @@ import { ARQUIVO_AGENT_CONTEXT_PACK, ARQUIVO_DOC_AGENTES_CAPACIDADE, ARQUIVO_SEM
|
|
|
11
11
|
import { criarGuiaCapacidadeIa, LIMITE_CARACTERES_PAYLOAD_INLINE } from './agentContextPack.js';
|
|
12
12
|
import { criarEntradaCanonicaProjeto } from './agentContext.js';
|
|
13
13
|
import { renderizarDocumentoAgentesPorCapacidade, renderizarSemaBoot, renderizarSemaSmallModel, } from './agentEntryPoints.js';
|
|
14
|
+
import { escreverArquivoWorkspaceSeguro, validarDestinosEscritaWorkspace } from './workspaceWrite.js';
|
|
14
15
|
import { carregarModulos } from './carregarModulos.js';
|
|
15
16
|
import { obterOpcao, obterOpcoesRepetidas, possuiFlag } from './cliArgs.js';
|
|
16
17
|
import { resumirListaTexto, unicosOrdenados } from './textoListas.js';
|
|
17
18
|
import { EXTENSOES_CODIGO, listarArquivosRecursivosLimitado } from './projetoBusca.js';
|
|
18
19
|
import { VERSAO_CLI } from "./index.part01.js";
|
|
19
20
|
import { coletarResumoSemanticoModulo, descreverFontesConclusao, detectarFontesConclusaoSnapshot, detectarModoVerificacaoCodigo } from "./index.part02.js";
|
|
20
|
-
import { carregarContextoModuloIa, criarBriefingAgente, gerarArquivosResumoModuloIa, renderizarResumoProjetoMarkdown, resumirDriftPorModulo } from "./index.part03.js";
|
|
21
|
+
import { ARQUIVOS_RESUMO_MODULO_IA, carregarContextoModuloIa, criarBriefingAgente, gerarArquivosResumoModuloIa, renderizarResumoProjetoMarkdown, resumirDriftPorModulo } from "./index.part03.js";
|
|
22
|
+
export const ARQUIVOS_RESUMO_PROJETO_IA = [
|
|
23
|
+
ARQUIVO_SEMA_BOOT,
|
|
24
|
+
ARQUIVO_SEMA_SMALL_MODEL,
|
|
25
|
+
"SEMA_BRIEF.md",
|
|
26
|
+
"SEMA_BRIEF.micro.txt",
|
|
27
|
+
"SEMA_BRIEF.curto.txt",
|
|
28
|
+
"SEMA_INDEX.json",
|
|
29
|
+
ARQUIVO_AGENT_CONTEXT_PACK,
|
|
30
|
+
ARQUIVO_DOC_AGENTES_CAPACIDADE,
|
|
31
|
+
];
|
|
21
32
|
async function listarTopArquivosCodigoDetectados(diretoriosCodigo, limite = 24) {
|
|
22
33
|
const encontrados = new Set();
|
|
23
34
|
for (const diretorio of diretoriosCodigo.sort((a, b) => a.localeCompare(b, "pt-BR"))) {
|
|
@@ -148,21 +159,26 @@ export async function gerarResumoProjetoIa(entrada, pastaSaidaOpcional, escrever
|
|
|
148
159
|
`GERADO_EM: ${geradoEm}`,
|
|
149
160
|
"",
|
|
150
161
|
].join("\n");
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
162
|
+
const artefatosResumo = [
|
|
163
|
+
{ caminhoRelativo: "SEMA_BRIEF.md", conteudo: semaBrief },
|
|
164
|
+
{ caminhoRelativo: ARQUIVO_SEMA_BOOT, conteudo: semaBoot },
|
|
165
|
+
{ caminhoRelativo: ARQUIVO_SEMA_SMALL_MODEL, conteudo: semaSmallModel },
|
|
166
|
+
{ caminhoRelativo: "SEMA_BRIEF.micro.txt", conteudo: micro },
|
|
167
|
+
{ caminhoRelativo: "SEMA_BRIEF.curto.txt", conteudo: curto },
|
|
168
|
+
{ caminhoRelativo: "SEMA_INDEX.json", conteudo: `${JSON.stringify(indexJson, null, 2)}\n` },
|
|
169
|
+
{ caminhoRelativo: ARQUIVO_AGENT_CONTEXT_PACK, conteudo: `${JSON.stringify(agentContextPack, null, 2)}\n` },
|
|
170
|
+
{ caminhoRelativo: ARQUIVO_DOC_AGENTES_CAPACIDADE, conteudo: docAgentesCapacidade },
|
|
171
|
+
];
|
|
172
|
+
await validarDestinosEscritaWorkspace(pastaSaida, artefatosResumo.map((artefato) => artefato.caminhoRelativo));
|
|
173
|
+
for (const artefato of artefatosResumo) {
|
|
174
|
+
await escreverArquivoWorkspaceSeguro(pastaSaida, artefato.caminhoRelativo, artefato.conteudo, { sobrescrever: true });
|
|
175
|
+
}
|
|
160
176
|
return {
|
|
161
177
|
geradoEm,
|
|
162
178
|
baseProjeto,
|
|
163
179
|
pastaSaida,
|
|
164
180
|
modoVerificacaoCodigo,
|
|
165
|
-
artefatos: [
|
|
181
|
+
artefatos: [...ARQUIVOS_RESUMO_PROJETO_IA],
|
|
166
182
|
modulos,
|
|
167
183
|
guiaPorCapacidade,
|
|
168
184
|
};
|
|
@@ -173,12 +189,22 @@ export async function gerarContextoIa(arquivoEntrada, pastaSaidaOpcional) {
|
|
|
173
189
|
? path.resolve(pastaSaidaOpcional)
|
|
174
190
|
: path.resolve(process.cwd(), ".tmp", "contexto-ia", path.basename(contexto.arquivo, ".sema"));
|
|
175
191
|
await mkdir(pastaBase, { recursive: true });
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
192
|
+
const artefatosContexto = [
|
|
193
|
+
{ caminhoRelativo: "validar.json", conteudo: `${JSON.stringify(contexto.validar, null, 2)}\n` },
|
|
194
|
+
{ caminhoRelativo: "diagnosticos.json", conteudo: `${JSON.stringify(contexto.diagnosticosJson, null, 2)}\n` },
|
|
195
|
+
{ caminhoRelativo: "ast.json", conteudo: `${JSON.stringify(contexto.ast, null, 2)}\n` },
|
|
196
|
+
{ caminhoRelativo: "ir.json", conteudo: `${JSON.stringify(contexto.irJson, null, 2)}\n` },
|
|
197
|
+
{ caminhoRelativo: "drift.json", conteudo: `${JSON.stringify(contexto.drift, null, 2)}\n` },
|
|
198
|
+
{ caminhoRelativo: "briefing.json", conteudo: `${JSON.stringify(contexto.briefing, null, 2)}\n` },
|
|
199
|
+
];
|
|
200
|
+
await validarDestinosEscritaWorkspace(pastaBase, [
|
|
201
|
+
...artefatosContexto.map((artefato) => artefato.caminhoRelativo),
|
|
202
|
+
...ARQUIVOS_RESUMO_MODULO_IA,
|
|
203
|
+
"README.md",
|
|
204
|
+
]);
|
|
205
|
+
for (const artefato of artefatosContexto) {
|
|
206
|
+
await escreverArquivoWorkspaceSeguro(pastaBase, artefato.caminhoRelativo, artefato.conteudo, { sobrescrever: true });
|
|
207
|
+
}
|
|
182
208
|
const resumoGerado = await gerarArquivosResumoModuloIa(contexto, pastaBase);
|
|
183
209
|
const resumo = `# Contexto de IA para ${contexto.modulo}
|
|
184
210
|
|
|
@@ -277,7 +303,9 @@ Antes de escolher arquivo de código, leia \`${ARQUIVO_SEMA_BOOT}\` e \`agent-co
|
|
|
277
303
|
- \`sema prompt-curto "${contexto.arquivo}" --para mudanca\`
|
|
278
304
|
- \`sema prompt-ia\`
|
|
279
305
|
`;
|
|
280
|
-
await
|
|
306
|
+
await escreverArquivoWorkspaceSeguro(pastaBase, "README.md", resumo, {
|
|
307
|
+
sobrescrever: true,
|
|
308
|
+
});
|
|
281
309
|
return {
|
|
282
310
|
sucesso: contexto.sucesso,
|
|
283
311
|
arquivo: contexto.arquivo,
|
package/dist/index.part05.js
CHANGED
|
@@ -178,7 +178,7 @@ export async function comandoDrift(entrada, args, emJson, cwd = process.cwd()) {
|
|
|
178
178
|
export async function comandoImpacto(entrada, args, emJson, cwd = process.cwd()) {
|
|
179
179
|
const alvoSemantico = obterOpcao(args, "--alvo");
|
|
180
180
|
if (!alvoSemantico) {
|
|
181
|
-
console.error("Uso: sema impacto <arquivo-ou-pasta> --alvo <token-
|
|
181
|
+
console.error("Uso: sema impacto <arquivo-ou-pasta> --alvo <token-semântico> [--mudanca <descricao>] [--escopo <arquivo|modulo|projeto>] [--incluir-worktrees] [--incluir-consumidores-laterais] [--json]");
|
|
182
182
|
return 1;
|
|
183
183
|
}
|
|
184
184
|
const contextoProjeto = await carregarProjeto(entrada, cwd);
|
package/dist/index.part06.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export declare function comandoCompilar(entrada: string | undefined, alvo: AlvoG
|
|
|
4
4
|
export declare function comandoDiagnosticos(arquivo: string, emJson: boolean): Promise<number>;
|
|
5
5
|
export declare function comandoFormatar(entrada: string | undefined, verificarApenas: boolean, emJson: boolean): Promise<number>;
|
|
6
6
|
export declare function comandoStarterIa(): Promise<number>;
|
|
7
|
-
export declare function
|
|
7
|
+
export declare function comandoSyncCodex(emJson: boolean): Promise<number>;
|
|
8
8
|
export declare function comandoAjudaIa(): Promise<number>;
|
|
9
9
|
export declare function comandoPromptIa(): Promise<number>;
|
|
10
10
|
export declare function comandoPromptIaUi(): Promise<number>;
|
package/dist/index.part06.js
CHANGED
|
@@ -6,7 +6,7 @@ import { compilarCodigo, formatarCodigo, formatarDiagnosticos, lerArquivoTexto,
|
|
|
6
6
|
import { carregarProjeto, } from "./projeto.js";
|
|
7
7
|
import { ARQUIVOS_CANONICOS_IA_RAIZ, } from './agentContextTipos.js';
|
|
8
8
|
import { criarGuiaCapacidadeIa } from './agentContextPack.js';
|
|
9
|
-
import {
|
|
9
|
+
import { sincronizarEntrypointCodex, } from './agentEntryPoints.js';
|
|
10
10
|
import { escreverArquivos, formatarAvisoArtefatosGeradosAcimaDoLimite, } from './fsGovernado.js';
|
|
11
11
|
import { materializarExemplosOficiais } from './exemplosOficiais.js';
|
|
12
12
|
import { carregarModulos } from './carregarModulos.js';
|
|
@@ -120,13 +120,13 @@ export async function comandoStarterIa() {
|
|
|
120
120
|
console.log(STARTER_IA);
|
|
121
121
|
return 0;
|
|
122
122
|
}
|
|
123
|
-
export async function
|
|
123
|
+
export async function comandoSyncCodex(emJson) {
|
|
124
124
|
const resumoProjeto = await gerarResumoProjetoIa(process.cwd(), undefined, true);
|
|
125
125
|
const exemplos = await materializarExemplosOficiais(resumoProjeto.baseProjeto, true);
|
|
126
126
|
if (!exemplos.sucesso) {
|
|
127
127
|
if (emJson) {
|
|
128
128
|
console.log(JSON.stringify({
|
|
129
|
-
comando: "sync-
|
|
129
|
+
comando: "sync-codex",
|
|
130
130
|
sucesso: false,
|
|
131
131
|
baseProjeto: resumoProjeto.baseProjeto,
|
|
132
132
|
erro: exemplos.erro,
|
|
@@ -138,34 +138,43 @@ export async function comandoSyncAiEntrypoints(emJson) {
|
|
|
138
138
|
return 1;
|
|
139
139
|
}
|
|
140
140
|
const indexJson = JSON.parse(await readFile(path.join(resumoProjeto.pastaSaida, "SEMA_INDEX.json"), "utf8"));
|
|
141
|
-
const
|
|
141
|
+
const resultadosCodex = await sincronizarEntrypointCodex(resumoProjeto.baseProjeto, indexJson.agentContextPack);
|
|
142
142
|
const artefatos = [...new Set([
|
|
143
143
|
...ARQUIVOS_CANONICOS_IA_RAIZ,
|
|
144
144
|
...resumoProjeto.artefatos,
|
|
145
|
-
...
|
|
145
|
+
...resultadosCodex.arquivos.map((item) => item.caminho),
|
|
146
146
|
"exemplos",
|
|
147
147
|
])];
|
|
148
|
+
const sucesso = resultadosCodex.entrypointsLegadosLimpos;
|
|
148
149
|
if (emJson) {
|
|
149
150
|
console.log(JSON.stringify({
|
|
150
|
-
comando: "sync-
|
|
151
|
-
sucesso
|
|
151
|
+
comando: "sync-codex",
|
|
152
|
+
sucesso,
|
|
153
|
+
erro: sucesso ? undefined : "Entrypoints legados com conteudo Sema incompleto ou sem bloco gerenciado exigem revisao manual.",
|
|
152
154
|
baseProjeto: resumoProjeto.baseProjeto,
|
|
153
155
|
pastaSaida: resumoProjeto.pastaSaida,
|
|
154
156
|
artefatos,
|
|
155
157
|
entradaCanonica: indexJson.entradaCanonica,
|
|
156
|
-
|
|
158
|
+
resultadosCodex,
|
|
157
159
|
exemplos,
|
|
158
160
|
}, null, 2));
|
|
159
|
-
return 0;
|
|
161
|
+
return sucesso ? 0 : 1;
|
|
162
|
+
}
|
|
163
|
+
if (!sucesso) {
|
|
164
|
+
console.error("Entrypoints legados pendentes de revisao manual:");
|
|
165
|
+
for (const caminho of resultadosCodex.entrypointsLegadosPendentes) {
|
|
166
|
+
console.error(`- ${caminho}`);
|
|
167
|
+
}
|
|
168
|
+
return 1;
|
|
160
169
|
}
|
|
161
|
-
console.log("
|
|
170
|
+
console.log("Entrypoint do Codex sincronizado");
|
|
162
171
|
console.log("");
|
|
163
172
|
console.log(`Base do projeto: ${resumoProjeto.baseProjeto}`);
|
|
164
173
|
console.log(`Ordem canônica: ${indexJson.entradaCanonica.ordemLeitura.join(" -> ")}`);
|
|
165
174
|
console.log(`IA fraca: ${indexJson.entradaCanonica.porCapacidade.fraca.join(" -> ")}`);
|
|
166
175
|
console.log(`IA média: ${indexJson.entradaCanonica.porCapacidade.media.join(" -> ")}`);
|
|
167
176
|
console.log(`IA forte: ${indexJson.entradaCanonica.porCapacidade.forte.join(" -> ")}`);
|
|
168
|
-
console.log(`
|
|
177
|
+
console.log(`Codex: ${resultadosCodex.criados.length} criados, ${resultadosCodex.atualizados.length} atualizados, ${resultadosCodex.preservados.length} preservados`);
|
|
169
178
|
console.log(`Exemplos oficiais: ${exemplos.criados.length} criados, ${exemplos.preservados.length} preservados em ${exemplos.destino}`);
|
|
170
179
|
return 0;
|
|
171
180
|
}
|
|
@@ -187,16 +196,16 @@ export async function comandoAjudaIa() {
|
|
|
187
196
|
]));
|
|
188
197
|
console.log("");
|
|
189
198
|
console.log(renderizarSecaoAscii("Capacidade de IA", [
|
|
190
|
-
"fraca: `sema resumo --micro
|
|
191
|
-
"média: `sema resumo --curto
|
|
192
|
-
"forte: `sema contexto-ia
|
|
199
|
+
"fraca: `sema resumo <arquivo> --micro --json` usa stdout compacto",
|
|
200
|
+
"média: `sema resumo <arquivo> --curto --json` + `sema drift <arquivo> --json`",
|
|
201
|
+
"forte: `sema contexto-ia <arquivo.sema> --saida <diretorio> --json` materializa o pacote completo",
|
|
193
202
|
]));
|
|
194
203
|
console.log("");
|
|
195
204
|
console.log(renderizarSecaoAscii("Fluxo recomendado", [
|
|
196
205
|
"Use `sema starter-ia` para um texto curto de onboarding.",
|
|
197
|
-
"Use `sema sync-
|
|
206
|
+
"Use `sema sync-codex` para regenerar o contexto governado do Codex na raiz.",
|
|
198
207
|
"Use `sema instalar-exemplos` para materializar `exemplos/` oficiais sem sobrescrever arquivos locais.",
|
|
199
|
-
"Use `sema resumo <arquivo> --micro --para onboarding` para IA fraca.",
|
|
208
|
+
"Use `sema resumo <arquivo> --micro --para onboarding --json` para IA fraca; o resumo vem no stdout.",
|
|
200
209
|
"Se `sema resumo` ou outro gate estourar timeout local, aumente o timeout e tente de novo; timeout do agente nao e falha do Sema.",
|
|
201
210
|
"Use `sema prompt-curto <arquivo> --curto --para mudanca` para colar contexto em modelo gratuito.",
|
|
202
211
|
"Use `sema prompt-ia`, `sema prompt-ia-ui`, `sema prompt-ia-react` e `sema prompt-ia-sema-primeiro` conforme a tarefa.",
|
|
@@ -205,8 +214,8 @@ export async function comandoAjudaIa() {
|
|
|
205
214
|
"Use `sema drift` para medir impls, vinculos, rotas, score e lacunas.",
|
|
206
215
|
"Use `sema docs-impacto --intencao <acao>` para ler ou criar docs obrigatorias antes de agir.",
|
|
207
216
|
"Use `sema finalizar-mudanca --intencao <acao>` para bloquear conclusao sem leitura documental comprovada.",
|
|
208
|
-
"Use `sema contexto-ia <arquivo.sema
|
|
209
|
-
"Use `sema compilar <arquivo-ou-pasta> --alvo <typescript|python|dart|lua|javascript|html|css> --saida <diretorio>` quando a tarefa pedir codigo derivado.",
|
|
217
|
+
"Use `sema contexto-ia <arquivo.sema> --saida <diretorio> --json` para gerar AST, IR, drift, `briefing.json` e `briefing.min.json`.",
|
|
218
|
+
"Use `sema compilar <arquivo-ou-pasta> --alvo <typescript|python|php|dart|lua|javascript|html|css> --saida <diretorio>` quando a tarefa pedir codigo derivado.",
|
|
210
219
|
]));
|
|
211
220
|
console.log("");
|
|
212
221
|
console.log(renderizarSecaoAscii("Regras praticas", [
|
|
@@ -218,7 +227,7 @@ export async function comandoAjudaIa() {
|
|
|
218
227
|
"Se o projeto ja existe, trate `importar` como rascunho e `drift` como juiz.",
|
|
219
228
|
"IA fraca comeca no menor artefato que resolve a tarefa; nao enfie `ast.json` inteiro nela de bobeira.",
|
|
220
229
|
"Timeout local e so limite do agente: escale e tente de novo antes de chamar Sema de inativo.",
|
|
221
|
-
"Antes de editar software vivo,
|
|
230
|
+
"Antes de editar software vivo, rode os gates locais; se precisar do pacote materializado, gere-o com `sema contexto-ia ... --saida <diretorio>` antes de ler `briefing.min.json` ou `briefing.json`.",
|
|
222
231
|
"Trate `route`, `worker`, `evento`, `fila`, `cron`, `webhook`, `cache`, `storage` e `policy` como superficies de primeira classe.",
|
|
223
232
|
]));
|
|
224
233
|
return 0;
|
package/dist/index.part07.js
CHANGED
|
@@ -6,7 +6,7 @@ import { compilarCodigo, formatarDiagnosticos, lerArquivoTexto, temErros, } from
|
|
|
6
6
|
import { carregarProjeto, resolverAlvosVerificacao, } from "./projeto.js";
|
|
7
7
|
import { escreverArquivos, formatarAvisoArtefatosGeradosAcimaDoLimite, } from './fsGovernado.js';
|
|
8
8
|
import { obterOpcao } from './cliArgs.js';
|
|
9
|
-
import {
|
|
9
|
+
import { avaliarDependenciasVerificacao, imprimirFalhaDependenciasVerificacao } from './doctorCommand.js';
|
|
10
10
|
import { aplicarEstruturaSaida, executarTestesGerados, executarTestesParaVerificacao, gerarArquivosPorAlvo, garantirIr, nomeSubpastaModulo, resolverConfiguracaoVerificacaoPorAlvo, validarCompatibilidadeFramework, } from './geracaoCore.js';
|
|
11
11
|
import { normalizarModoResumo, normalizarTamanhoResumo } from "./index.part01.js";
|
|
12
12
|
import { carregarContextoModuloIa } from "./index.part03.js";
|
|
@@ -45,27 +45,27 @@ export async function comandoPromptCurto(entrada, args, emJson) {
|
|
|
45
45
|
: "SEMA_BRIEF.md";
|
|
46
46
|
const contextoProjeto = await readFile(path.join(resumoProjeto.pastaSaida, arquivoResumo), "utf8");
|
|
47
47
|
const capacidade = tamanho === "micro" ? "fraca" : tamanho === "curto" ? "media" : "forte";
|
|
48
|
-
const prompt =
|
|
48
|
+
const prompt = `⚠️ REGRA OBRIGATÓRIA DE GOVERNANÇA:
|
|
49
49
|
|
|
50
|
-
ANTES DE QUALQUER
|
|
51
|
-
1.
|
|
52
|
-
2. Aguarde a resposta com as docs
|
|
53
|
-
3. Leia as docs antes de agir
|
|
54
|
-
4.
|
|
50
|
+
ANTES DE QUALQUER AÇÃO (editar, criar, deletar, executar, consultar ou modificar):
|
|
51
|
+
1. Rode \`sema docs-impacto --intencao "<ação>" --json\` com sua intenção declarada.
|
|
52
|
+
2. Aguarde a resposta com as docs obrigatórias.
|
|
53
|
+
3. Leia as docs antes de agir.
|
|
54
|
+
4. Antes de concluir, rode \`sema finalizar-mudanca --intencao "<ação>" --doc-lida <arquivo> --json\` com todas as docs lidas.
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
Você está operando Sema em modo IA-first.
|
|
57
57
|
|
|
58
|
-
Isto
|
|
58
|
+
Isto é contexto comprimido para IA operar contrato semântico antes de tocar código vivo.
|
|
59
59
|
|
|
60
60
|
Capacidade alvo: ${capacidade}
|
|
61
61
|
Modo da tarefa: ${modo}
|
|
62
62
|
|
|
63
63
|
Regras:
|
|
64
|
-
- ANTES DE TUDO:
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
64
|
+
- ANTES DE TUDO: rode \`sema docs-impacto --intencao "<ação>" --json\`.
|
|
65
|
+
- Comece pelo resumo compacto abaixo.
|
|
66
|
+
- Se a tarefa pedir mais contexto, abra \`AGENT_CONTEXT_PACK.json\` e depois \`SEMA_INDEX.json\`.
|
|
67
|
+
- Não tente ler o repositório inteiro se o resumo já disser onde tocar.
|
|
68
|
+
- Preserve contrato, risco, lacuna e checks sugeridos.
|
|
69
69
|
|
|
70
70
|
Contexto do projeto:
|
|
71
71
|
${contextoProjeto.trim()}
|
|
@@ -157,9 +157,9 @@ export async function comandoVerificar(entrada, baseSaida, cwd = process.cwd())
|
|
|
157
157
|
console.error(incompatibilidade.incompatibilidade);
|
|
158
158
|
return 1;
|
|
159
159
|
}
|
|
160
|
-
const
|
|
161
|
-
if (!
|
|
162
|
-
|
|
160
|
+
const verificacaoDependencias = avaliarDependenciasVerificacao(configuracoesAlvo);
|
|
161
|
+
if (!verificacaoDependencias.ok) {
|
|
162
|
+
imprimirFalhaDependenciasVerificacao(verificacaoDependencias);
|
|
163
163
|
return 1;
|
|
164
164
|
}
|
|
165
165
|
const resumos = [];
|
|
@@ -235,13 +235,13 @@ export async function comandoVerificarJson(entrada, baseSaida, cwd = process.cwd
|
|
|
235
235
|
}, null, 2));
|
|
236
236
|
return 1;
|
|
237
237
|
}
|
|
238
|
-
const
|
|
239
|
-
if (!
|
|
238
|
+
const verificacaoDependencias = avaliarDependenciasVerificacao(configuracoesAlvo);
|
|
239
|
+
if (!verificacaoDependencias.ok) {
|
|
240
240
|
console.log(JSON.stringify({
|
|
241
241
|
comando: "verificar",
|
|
242
242
|
sucesso: false,
|
|
243
243
|
erro: "Dependencias obrigatorias ausentes para executar a verificacao.",
|
|
244
|
-
|
|
244
|
+
dependencias: verificacaoDependencias,
|
|
245
245
|
modulos: [],
|
|
246
246
|
totais: { modulos: 0, alvos: 0, arquivos: 0, testes: 0 },
|
|
247
247
|
}, null, 2));
|
package/dist/index.part08.js
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { carregarConfiguracaoProjeto, resolverAlvoPadrao, resolverEstruturaSaidaPadrao, resolverFrameworkPadrao, resolverSaidaPadrao, } from "./projeto.js";
|
|
5
5
|
import { REGISTRO_COMANDOS } from "./comandos.js";
|
|
6
|
-
import * as billing from "./billing/index.js";
|
|
7
6
|
import { comandoIniciar, comandoInstalarExemplos } from './initCommand.js';
|
|
8
7
|
import { obterOpcao, obterPosicionais, possuiFlag } from './cliArgs.js';
|
|
9
8
|
import { comandoAuthor, comandoProfile, criarPayloadRulePacks, normalizarProfileGovernanca, renderizarRulePacksTexto } from './profileAuthorCommand.js';
|
|
@@ -12,7 +11,7 @@ import { normalizarFonteImportacao, normalizarTemplateIniciar, } from './geracao
|
|
|
12
11
|
import { VERSAO_CLI, ajuda, obterArgumentos } from "./index.part01.js";
|
|
13
12
|
import { comandoDocsImpacto, comandoFinalizarMudanca, comandoValidar, comandoValidarJson } from "./index.part04.js";
|
|
14
13
|
import { comandoAst, comandoAstJson, comandoDrift, comandoImpacto, comandoImportar, comandoInspecionar, comandoIr, comandoIrJson, comandoRenomearSemantico } from "./index.part05.js";
|
|
15
|
-
import { comandoAjudaIa, comandoCompilar, comandoDiagnosticos, comandoExemplosPromptIa, comandoFormatar, comandoPromptIa, comandoPromptIaReact, comandoPromptIaSemaPrimeiro, comandoPromptIaUi, comandoResumo, comandoStarterIa,
|
|
14
|
+
import { comandoAjudaIa, comandoCompilar, comandoDiagnosticos, comandoExemplosPromptIa, comandoFormatar, comandoPromptIa, comandoPromptIaReact, comandoPromptIaSemaPrimeiro, comandoPromptIaUi, comandoResumo, comandoStarterIa, comandoSyncCodex } from "./index.part06.js";
|
|
16
15
|
import { comandoContextoIa, comandoPromptCurto, comandoTestar, comandoVerificar, comandoVerificarJson } from "./index.part07.js";
|
|
17
16
|
export async function principal() {
|
|
18
17
|
const { comando, resto } = obterArgumentos();
|
|
@@ -36,7 +35,7 @@ export async function principal() {
|
|
|
36
35
|
}
|
|
37
36
|
switch (comando) {
|
|
38
37
|
case "iniciar":
|
|
39
|
-
codigoSaida = await comandoIniciar(cwd, normalizarTemplateIniciar(obterOpcao(resto, "--template")));
|
|
38
|
+
codigoSaida = await comandoIniciar(cwd, normalizarTemplateIniciar(obterOpcao(resto, "--template")), { force: possuiFlag(resto, "--force") });
|
|
40
39
|
break;
|
|
41
40
|
case "author":
|
|
42
41
|
codigoSaida = await comandoAuthor(posicionais, resto, possuiFlag(resto, "--json"));
|
|
@@ -140,15 +139,12 @@ export async function principal() {
|
|
|
140
139
|
case "starter-ia":
|
|
141
140
|
codigoSaida = await comandoStarterIa();
|
|
142
141
|
break;
|
|
143
|
-
case "sync-
|
|
144
|
-
codigoSaida = await
|
|
142
|
+
case "sync-codex":
|
|
143
|
+
codigoSaida = await comandoSyncCodex(possuiFlag(resto, "--json"));
|
|
145
144
|
break;
|
|
146
145
|
case "instalar-exemplos":
|
|
147
146
|
codigoSaida = await comandoInstalarExemplos(possuiFlag(resto, "--json"));
|
|
148
147
|
break;
|
|
149
|
-
case "preflight":
|
|
150
|
-
codigoSaida = await billing.comandoPreflightCli(resto, possuiFlag(resto, "--json"));
|
|
151
|
-
break;
|
|
152
148
|
case "docs-impacto":
|
|
153
149
|
codigoSaida = await comandoDocsImpacto(posicionais, resto, possuiFlag(resto, "--json"));
|
|
154
150
|
break;
|
package/dist/initCommand.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { type TemplateIniciar } from "./initTemplatesBase.js";
|
|
2
|
-
export declare function comandoIniciar(cwd: string, template: TemplateIniciar
|
|
2
|
+
export declare function comandoIniciar(cwd: string, template: TemplateIniciar, opcoes?: {
|
|
3
|
+
force?: boolean;
|
|
4
|
+
}): Promise<number>;
|
|
3
5
|
export declare function comandoInstalarExemplos(emJson: boolean): Promise<number>;
|
package/dist/initCommand.js
CHANGED
|
@@ -1,40 +1,69 @@
|
|
|
1
|
-
// SEMA-GOVERNED
|
|
2
|
-
//
|
|
3
|
-
// Contrato: contratos/sema/orcamento_semantico.sema
|
|
4
|
-
// Descri??o: comandos de inicializa??o de projeto e sincroniza??o de exemplos oficiais da CLI.
|
|
1
|
+
// SEMA-GOVERNED: sema.produto.cli_init_templates, sema.produto.escrita_segura_workspace
|
|
2
|
+
// Descrição: inicializa projetos preservando arquivos existentes e bloqueando escapes do workspace.
|
|
5
3
|
import * as fs from "node:fs";
|
|
6
4
|
import path from "node:path";
|
|
7
5
|
import { escreverArquivos } from "./fsGovernado.js";
|
|
8
6
|
import { arquivosTemplateIniciar } from "./initTemplatesBase.js";
|
|
9
|
-
import { materializarExemplosOficiais } from "./exemplosOficiais.js";
|
|
7
|
+
import { materializarExemplosOficiais, planejarExemplosOficiais } from "./exemplosOficiais.js";
|
|
8
|
+
import { validarDestinosEscritaWorkspace } from "./workspaceWrite.js";
|
|
10
9
|
async function sincronizarKitIaInicial(cwd) {
|
|
11
|
-
const [{ gerarResumoProjetoIa }, {
|
|
10
|
+
const [{ gerarResumoProjetoIa }, { sincronizarEntrypointCodex }] = await Promise.all([
|
|
12
11
|
import("./index.part04.js"),
|
|
13
12
|
import("./agentEntryPoints.js"),
|
|
14
13
|
]);
|
|
15
14
|
const resumoProjeto = await gerarResumoProjetoIa(cwd, undefined, true);
|
|
16
15
|
const indexJson = JSON.parse(fs.readFileSync(path.join(resumoProjeto.pastaSaida, "SEMA_INDEX.json"), "utf8"));
|
|
17
|
-
const
|
|
16
|
+
const codex = await sincronizarEntrypointCodex(resumoProjeto.baseProjeto, indexJson.agentContextPack);
|
|
18
17
|
return {
|
|
19
18
|
artefatos: [...new Set([
|
|
20
19
|
...resumoProjeto.artefatos,
|
|
21
|
-
...
|
|
20
|
+
...codex.arquivos.map((item) => item.caminho),
|
|
22
21
|
])],
|
|
23
|
-
|
|
22
|
+
codex,
|
|
24
23
|
};
|
|
25
24
|
}
|
|
26
|
-
export async function comandoIniciar(cwd, template) {
|
|
25
|
+
export async function comandoIniciar(cwd, template, opcoes = {}) {
|
|
27
26
|
const arquivos = arquivosTemplateIniciar(template);
|
|
28
|
-
|
|
27
|
+
const planoExemplos = await planejarExemplosOficiais();
|
|
28
|
+
if (!planoExemplos.origem) {
|
|
29
|
+
console.error("Diretorio de exemplos oficiais nao foi encontrado no pacote da CLI.");
|
|
30
|
+
return 1;
|
|
31
|
+
}
|
|
32
|
+
const [{ ARQUIVOS_RESUMO_PROJETO_IA }, { listarDestinosEntrypointCodex }] = await Promise.all([
|
|
33
|
+
import("./index.part04.js"),
|
|
34
|
+
import("./agentEntryPoints.js"),
|
|
35
|
+
]);
|
|
36
|
+
const caminhosTemplate = new Set(arquivos.map((arquivo) => arquivo.caminhoRelativo));
|
|
37
|
+
const destinos = await validarDestinosEscritaWorkspace(cwd, [
|
|
38
|
+
...caminhosTemplate,
|
|
39
|
+
...planoExemplos.arquivos.map((arquivo) => arquivo.caminhoRelativo),
|
|
40
|
+
...ARQUIVOS_RESUMO_PROJETO_IA,
|
|
41
|
+
...listarDestinosEntrypointCodex("AGENTS.md"),
|
|
42
|
+
]);
|
|
43
|
+
const existentes = new Set(destinos
|
|
44
|
+
.filter((destino) => caminhosTemplate.has(destino.caminhoRelativo) && destino.existe)
|
|
45
|
+
.map((destino) => destino.caminhoRelativo));
|
|
46
|
+
const arquivosParaEscrever = opcoes.force
|
|
47
|
+
? arquivos
|
|
48
|
+
: arquivos.filter((arquivo) => !existentes.has(arquivo.caminhoRelativo));
|
|
49
|
+
await escreverArquivos(cwd, arquivosParaEscrever, { inserirCabecalhoGovernado: true });
|
|
29
50
|
const exemplos = await materializarExemplosOficiais(cwd, true);
|
|
30
51
|
if (!exemplos.sucesso) {
|
|
31
52
|
console.error(exemplos.erro);
|
|
32
53
|
return 1;
|
|
33
54
|
}
|
|
34
55
|
const kitIa = await sincronizarKitIaInicial(cwd);
|
|
56
|
+
if (!kitIa.codex.entrypointsLegadosLimpos) {
|
|
57
|
+
console.error("Entrypoints Sema pendentes de revisão manual:");
|
|
58
|
+
for (const caminho of kitIa.codex.entrypointsLegadosPendentes) {
|
|
59
|
+
console.error(`- ${caminho}`);
|
|
60
|
+
}
|
|
61
|
+
return 1;
|
|
62
|
+
}
|
|
35
63
|
console.log(`Projeto Sema inicializado com template ${template}.`);
|
|
64
|
+
console.log(`Arquivos do projeto: ${arquivosParaEscrever.length} escritos, ${opcoes.force ? 0 : existentes.size} preservados.`);
|
|
36
65
|
console.log(`Exemplos oficiais sincronizados em ${exemplos.destino} (${exemplos.criados.length} criados, ${exemplos.preservados.length} preservados).`);
|
|
37
|
-
console.log(`Kit IA sincronizado (${kitIa.artefatos.length} artefatos;
|
|
66
|
+
console.log(`Kit IA Codex-native sincronizado (${kitIa.artefatos.length} artefatos; entrypoint ${kitIa.codex.entrypointCodex}; ${kitIa.codex.criados.length} criados, ${kitIa.codex.atualizados.length} atualizados, ${kitIa.codex.preservados.length} preservados).`);
|
|
38
67
|
return 0;
|
|
39
68
|
}
|
|
40
69
|
export async function comandoInstalarExemplos(emJson) {
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
// SEMA-GOVERNED
|
|
2
|
-
//
|
|
3
|
-
// Contrato: contratos/sema/orcamento_semantico.sema
|
|
4
|
-
// Descri??o: contrato base e dispatcher de templates de inicializa??o.
|
|
1
|
+
// SEMA-GOVERNED: sema.produto.cli_init_templates
|
|
2
|
+
// Descrição: contrato base e dispatcher dos templates Codex-native de inicialização.
|
|
5
3
|
import { arquivosInitTemplatesBackend } from "./initTemplatesBackend.js";
|
|
6
4
|
import { arquivosInitTemplatesWeb } from "./initTemplatesWeb.js";
|
|
7
5
|
import { arquivosInitTemplatesFlutter } from "./initTemplatesFlutter.js";
|
|
@@ -70,21 +68,21 @@ function arquivosApoioIaIniciar() {
|
|
|
70
68
|
|
|
71
69
|
Este projeto foi inicializado com Sema.
|
|
72
70
|
|
|
73
|
-
## Entrada
|
|
71
|
+
## Entrada oficial do Codex
|
|
74
72
|
|
|
75
73
|
Antes de alterar codigo, contrato ou documentacao:
|
|
76
74
|
|
|
77
75
|
1. leia \`AGENTS.md\`;
|
|
78
76
|
2. rode \`sema --version\`;
|
|
79
|
-
3. rode \`sema
|
|
80
|
-
4. rode \`sema
|
|
81
|
-
5.
|
|
82
|
-
6.
|
|
83
|
-
7. use \`exemplos/\` e \`docs/syntax.md\` antes de criar ou corrigir \`.sema\`.
|
|
77
|
+
3. rode \`sema resumo\`;
|
|
78
|
+
4. rode \`sema docs-impacto --intencao "<acao>" --json\`;
|
|
79
|
+
5. leia \`docs/commands.md\` antes de escolher comando ou interpretar \`--saida\`;
|
|
80
|
+
6. use \`exemplos/\` e \`docs/syntax.md\` antes de criar ou corrigir \`.sema\`.
|
|
84
81
|
|
|
85
82
|
## Estrutura criada
|
|
86
83
|
|
|
87
84
|
- \`contratos/\`: contratos semanticamente governados.
|
|
85
|
+
- \`AGENTS.md\`: entrypoint oficial do Codex.
|
|
88
86
|
- \`exemplos/\`: exemplos oficiais da DSL Sema.
|
|
89
87
|
- \`docs/commands.md\`: catalogo de comandos, gates e regra de \`--saida\`.
|
|
90
88
|
- \`docs/syntax.md\`: referencia curta para escrever \`.sema\`.
|
|
@@ -118,7 +116,7 @@ export function arquivosTemplateIniciar(template) {
|
|
|
118
116
|
?? [
|
|
119
117
|
{
|
|
120
118
|
caminhoRelativo: "sema.config.json",
|
|
121
|
-
conteudo: "{\n \"origens\": [\"./contratos\"],\n \"saida\": \"./generated\",\n \"alvos\": [\"typescript\", \"javascript\", \"python\", \"dart\", \"lua\", \"html\", \"css\"],\n \"alvoPadrao\": \"typescript\",\n \"estruturaSaida\": \"modulos\",\n \"framework\": \"base\",\n \"modoEstrito\": true,\n \"diretoriosSaidaPorAlvo\": {\n \"typescript\": \"./generated/typescript\",\n \"javascript\": \"./generated/javascript\",\n \"python\": \"./generated/python\",\n \"dart\": \"./generated/dart\",\n \"lua\": \"./generated/lua\",\n \"html\": \"./generated/html\",\n \"css\": \"./generated/css\"\n },\n \"convencoesGeracaoPorProjeto\": \"base\"\n}\n",
|
|
119
|
+
conteudo: "{\n \"origens\": [\"./contratos\"],\n \"saida\": \"./generated\",\n \"alvos\": [\"typescript\", \"javascript\", \"python\", \"php\", \"dart\", \"lua\", \"html\", \"css\"],\n \"alvoPadrao\": \"typescript\",\n \"estruturaSaida\": \"modulos\",\n \"framework\": \"base\",\n \"modoEstrito\": true,\n \"diretoriosSaidaPorAlvo\": {\n \"typescript\": \"./generated/typescript\",\n \"javascript\": \"./generated/javascript\",\n \"python\": \"./generated/python\",\n \"php\": \"./generated/php\",\n \"dart\": \"./generated/dart\",\n \"lua\": \"./generated/lua\",\n \"html\": \"./generated/html\",\n \"css\": \"./generated/css\"\n },\n \"convencoesGeracaoPorProjeto\": \"base\"\n}\n",
|
|
122
120
|
},
|
|
123
121
|
...arquivosBase,
|
|
124
122
|
];
|
package/dist/projetoConfig.js
CHANGED
|
@@ -52,7 +52,7 @@ export function normalizarFrameworkGeracao(valor) {
|
|
|
52
52
|
return "base";
|
|
53
53
|
}
|
|
54
54
|
export function normalizarAlvo(valor) {
|
|
55
|
-
if (valor === "typescript" || valor === "python" || valor === "dart" || valor === "lua" || valor === "javascript" || valor === "html" || valor === "css") {
|
|
55
|
+
if (valor === "typescript" || valor === "python" || valor === "dart" || valor === "lua" || valor === "javascript" || valor === "html" || valor === "css" || valor === "php") {
|
|
56
56
|
return valor;
|
|
57
57
|
}
|
|
58
58
|
if (valor === "js") {
|