@semacode/cli 3.8.3 → 3.8.5
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/dist/agentEntryPoints.js +11 -8
- package/dist/docs.part01.d.ts +4 -0
- package/dist/docs.part02.js +10 -5
- package/docs/ai-workflow.md +3 -2
- package/package.json +1 -1
package/dist/agentEntryPoints.js
CHANGED
|
@@ -153,8 +153,9 @@ Você está em um projeto governado por Sema. O contrato semântico vem antes de
|
|
|
153
153
|
5. Este boot é para workspace local em disco; se não houver workspace local, pare bloqueado em vez de inventar caminho.
|
|
154
154
|
6. Antes de criar módulo, rota, task ou contrato, inspecione o contrato \`.sema\` aplicável.
|
|
155
155
|
7. Antes de editar código existente, rode \`sema drift --cache fresh\` e impacto pela CLI local.
|
|
156
|
-
8.
|
|
157
|
-
9.
|
|
156
|
+
8. Para módulo novo com contrato validado, gere o andaime com \`sema compilar\` no alvo padrão, preencha a implementação real mantendo \`impl\`/\`vinculos\` e feche com \`sema verificar\`.
|
|
157
|
+
9. Antes de criar ou corrigir \`.sema\`, use os exemplos oficiais na CLI local.
|
|
158
|
+
10. Se qualquer etapa falhar, pare e diga que está bloqueado.
|
|
158
159
|
|
|
159
160
|
Não substitua esse fluxo por leitura manual de \`AGENTS.md\`, \`README.md\`, busca local, inferência pelo nome do projeto, bom senso ou ferramenta não citada aqui.
|
|
160
161
|
|
|
@@ -446,10 +447,11 @@ Este workspace é governado por Sema. Antes de qualquer ação em código, contr
|
|
|
446
447
|
5. Não use fonte externa de workspace para substituir a CLI local quando ela estiver operacional.
|
|
447
448
|
6. Chame docs-impacto com a intenção declarada antes de agir.
|
|
448
449
|
7. Chame inspecionar no contrato \`.sema\` aplicável.
|
|
449
|
-
8.
|
|
450
|
-
9. Antes de
|
|
451
|
-
10.
|
|
452
|
-
11.
|
|
450
|
+
8. Para módulo novo com contrato validado, gere o andaime com \`sema compilar <contrato> --alvo <alvoPadrao>\`, preencha a implementação real mantendo \`impl\`/\`vinculos\` e feche com \`sema verificar\`.
|
|
451
|
+
9. Antes de editar código existente, rode \`sema drift --cache fresh\` e impacto.
|
|
452
|
+
10. Antes de criar ou editar \`.sema\`, use exemplos oficiais.
|
|
453
|
+
11. Ao concluir mudança de contrato, rode validar.
|
|
454
|
+
12. Antes de finalizar, use finalizar-mudanca com as docs lidas.
|
|
453
455
|
|
|
454
456
|
É proibido substituir esse fluxo por leitura manual de \`AGENTS.md\`, \`README.md\`, busca local por arquivos, inferência pelo nome do projeto, bom senso ou ferramenta não citada nesta lista.
|
|
455
457
|
|
|
@@ -657,8 +659,9 @@ This is the minimum workflow for Codex in a local workspace.
|
|
|
657
659
|
7. If the right capability is unclear, run \`sema descobrir recomendar --intencao "<goal>" --json\`; do not auto-run ambiguous recommendations.
|
|
658
660
|
8. Use \`exemplos/\` and \`docs/syntax.md\` before creating or editing a contract.
|
|
659
661
|
9. Run \`sema drift --cache fresh\` and \`sema impacto\` before editing existing code.
|
|
660
|
-
10.
|
|
661
|
-
11. Run \`sema
|
|
662
|
+
10. For a new module with a validated contract, scaffold with \`sema compilar <contract> --alvo <default target>\`, fill the real implementation keeping \`impl\`/\`vinculos\`, and close with \`sema verificar\`.
|
|
663
|
+
11. Run \`sema formatar\` and \`sema validar\` after changing a \`.sema\` contract.
|
|
664
|
+
12. Run \`sema finalizar-mudanca\` with the documents read before closure.
|
|
662
665
|
|
|
663
666
|
Contract edit rule: \`.sema\` has its own size budget. Above ${LIMITE_AVISO_LINHAS_CONTRATO_SEMA} lines, plan a split by domain/capability; above ${LIMITE_BLOQUEIO_LINHAS_CONTRATO_SEMA}, do not create or edit before splitting. Do not use parte_1/parte_2 and do not force a 1:1 contract-to-file relationship; several contracts can govern the same file through \`vinculos\`.
|
|
664
667
|
|
package/dist/docs.part01.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export interface DocumentoPlanejado {
|
|
|
5
5
|
tipo: TipoDocumentoMudanca;
|
|
6
6
|
motivo: string;
|
|
7
7
|
permitirCriacao: boolean;
|
|
8
|
+
obrigatoriedade?: "bloqueante" | "recomendada";
|
|
8
9
|
}
|
|
9
10
|
export interface DocumentoObrigatorioMudanca {
|
|
10
11
|
caminho: string;
|
|
@@ -20,6 +21,7 @@ export interface DocumentoObrigatorioMudanca {
|
|
|
20
21
|
template?: string;
|
|
21
22
|
templatePendente?: boolean;
|
|
22
23
|
substancia?: boolean;
|
|
24
|
+
obrigatoriedade: "bloqueante" | "recomendada";
|
|
23
25
|
}
|
|
24
26
|
export interface BloqueioDocumentacaoMudanca {
|
|
25
27
|
tipo: "documentacao_ausente" | "leitura_obrigatoria_nao_comprovada" | "documentacao_template_cru" | "documentacao_sem_substancia" | "arquivo_monolitico" | "codigo_governado_sem_cabecalho";
|
|
@@ -38,6 +40,7 @@ export interface ResultadoDocumentacaoObrigatoria {
|
|
|
38
40
|
leituraObrigatoria: DocumentoObrigatorioMudanca[];
|
|
39
41
|
docsAusentes: DocumentoObrigatorioMudanca[];
|
|
40
42
|
docsCriadas: DocumentoObrigatorioMudanca[];
|
|
43
|
+
leituraRecomendada: DocumentoObrigatorioMudanca[];
|
|
41
44
|
bloqueios: BloqueioDocumentacaoMudanca[];
|
|
42
45
|
instrucoes: string[];
|
|
43
46
|
}
|
|
@@ -45,6 +48,7 @@ export interface ResultadoVerificacaoDocumentacaoMudanca {
|
|
|
45
48
|
sucesso: boolean;
|
|
46
49
|
baseProjeto: string;
|
|
47
50
|
intencao: string;
|
|
51
|
+
leituraRecomendada: DocumentoObrigatorioMudanca[];
|
|
48
52
|
categorias: string[];
|
|
49
53
|
docsLidas: string[];
|
|
50
54
|
leituraObrigatoria: DocumentoObrigatorioMudanca[];
|
package/dist/docs.part02.js
CHANGED
|
@@ -51,7 +51,7 @@ export async function resolverDocumentacaoObrigatoria(opcoes) {
|
|
|
51
51
|
await adicionarDocsRaizExistentes(baseProjeto, registrar);
|
|
52
52
|
for (const regra of REGRAS_DOCUMENTACAO.filter((item) => categorias.includes(item.categoria))) {
|
|
53
53
|
for (const doc of regra.docs) {
|
|
54
|
-
registrar(doc);
|
|
54
|
+
registrar({ ...doc, obrigatoriedade: "recomendada" });
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
await adicionarReadmesDeArquivos(baseProjeto, arquivosAlvo, registrar);
|
|
@@ -87,6 +87,7 @@ export async function resolverDocumentacaoObrigatoria(opcoes) {
|
|
|
87
87
|
criado,
|
|
88
88
|
criacaoAutomatica: doc.permitirCriacao,
|
|
89
89
|
obrigatorio: true,
|
|
90
|
+
obrigatoriedade: doc.obrigatoriedade ?? "bloqueante",
|
|
90
91
|
template: existe ? undefined : template,
|
|
91
92
|
};
|
|
92
93
|
if (existe) {
|
|
@@ -101,7 +102,7 @@ export async function resolverDocumentacaoObrigatoria(opcoes) {
|
|
|
101
102
|
}
|
|
102
103
|
const docsAusentes = leituraObrigatoria.filter((doc) => !doc.existe);
|
|
103
104
|
const docsCriadas = leituraObrigatoria.filter((doc) => doc.criado);
|
|
104
|
-
const bloqueios = docsAusentes.map((doc) => ({
|
|
105
|
+
const bloqueios = docsAusentes.filter((doc) => doc.obrigatoriedade !== "recomendada").map((doc) => ({
|
|
105
106
|
tipo: "documentacao_ausente",
|
|
106
107
|
severidade: 4,
|
|
107
108
|
caminho: doc.relativo,
|
|
@@ -118,6 +119,9 @@ export async function resolverDocumentacaoObrigatoria(opcoes) {
|
|
|
118
119
|
leituraObrigatoria,
|
|
119
120
|
docsAusentes,
|
|
120
121
|
docsCriadas,
|
|
122
|
+
leituraRecomendada: leituraObrigatoria
|
|
123
|
+
.filter((doc) => doc.obrigatoriedade === "recomendada")
|
|
124
|
+
.map(compactarDocumentoObrigatorio),
|
|
121
125
|
bloqueios,
|
|
122
126
|
instrucoes: [
|
|
123
127
|
"A IA deve ler todos os itens de leituraObrigatoria antes de executar a mudanca.",
|
|
@@ -149,9 +153,9 @@ export async function verificarDocumentacaoMudanca(opcoes) {
|
|
|
149
153
|
});
|
|
150
154
|
const docsLidas = [...new Set((opcoes.docsLidas ?? []).map((doc) => normalizarDocLida(baseProjeto, doc)).filter(Boolean))];
|
|
151
155
|
const setDocsLidas = new Set(docsLidas);
|
|
152
|
-
const docsNaoLidas = impacto.leituraObrigatoria.filter((doc) => doc.existe && !setDocsLidas.has(doc.relativo));
|
|
153
|
-
const docsTemplatePendentes = impacto.leituraObrigatoria.filter((doc) => (doc.existe && doc.templatePendente && setDocsLidas.has(doc.relativo)));
|
|
154
|
-
const docsSemSubstancia = impacto.leituraObrigatoria.filter((doc) => (doc.existe && !doc.templatePendente && doc.substancia === false));
|
|
156
|
+
const docsNaoLidas = impacto.leituraObrigatoria.filter((doc) => (doc.existe && doc.obrigatoriedade !== "recomendada" && !setDocsLidas.has(doc.relativo)));
|
|
157
|
+
const docsTemplatePendentes = impacto.leituraObrigatoria.filter((doc) => (doc.existe && doc.obrigatoriedade !== "recomendada" && doc.templatePendente && setDocsLidas.has(doc.relativo)));
|
|
158
|
+
const docsSemSubstancia = impacto.leituraObrigatoria.filter((doc) => (doc.existe && doc.obrigatoriedade !== "recomendada" && !doc.templatePendente && doc.substancia === false));
|
|
155
159
|
const diagnosticosOrcamento = await emitirDiagnosticosArquivosOrcamento({
|
|
156
160
|
baseProjeto,
|
|
157
161
|
arquivos: opcoes.arquivosAlvo ?? [],
|
|
@@ -201,6 +205,7 @@ export async function verificarDocumentacaoMudanca(opcoes) {
|
|
|
201
205
|
intencao: opcoes.intencao,
|
|
202
206
|
categorias: impacto.categorias,
|
|
203
207
|
docsLidas,
|
|
208
|
+
leituraRecomendada: impacto.leituraRecomendada,
|
|
204
209
|
leituraObrigatoria: impacto.leituraObrigatoria.map(compactarDocumentoObrigatorio),
|
|
205
210
|
docsNaoLidas: docsNaoLidas.map(compactarDocumentoObrigatorio),
|
|
206
211
|
docsAusentes: impacto.docsAusentes.map(compactarDocumentoObrigatorio),
|
package/docs/ai-workflow.md
CHANGED
|
@@ -12,8 +12,9 @@ This is the minimum workflow for Codex in a local workspace.
|
|
|
12
12
|
7. If the right capability is unclear, run `sema descobrir recomendar --intencao "<goal>" --json`; do not auto-run ambiguous recommendations.
|
|
13
13
|
8. Use `exemplos/` and `docs/syntax.md` before creating or editing a contract.
|
|
14
14
|
9. Run `sema drift --cache fresh` and `sema impacto` before editing existing code.
|
|
15
|
-
10.
|
|
16
|
-
11. Run `sema
|
|
15
|
+
10. For a new module with a validated contract, scaffold with `sema compilar <contract> --alvo <default target>`, fill the real implementation keeping `impl`/`vinculos`, and close with `sema verificar`.
|
|
16
|
+
11. Run `sema formatar` and `sema validar` after changing a `.sema` contract.
|
|
17
|
+
12. Run `sema finalizar-mudanca` with the documents read before closure.
|
|
17
18
|
|
|
18
19
|
Contract edit rule: `.sema` has its own size budget. Above 300 lines, plan a split by domain/capability; above 500, do not create or edit before splitting. Do not use parte_1/parte_2 and do not force a 1:1 contract-to-file relationship; several contracts can govern the same file through `vinculos`.
|
|
19
20
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@semacode/cli",
|
|
3
|
-
"version": "3.8.
|
|
3
|
+
"version": "3.8.5",
|
|
4
4
|
"description": "Local-first semantic governance CLI for AI agents, proven with Claude, Codex, zCode (GLM) and Kimi: contracts, drift, impact, docs gates, and code generation.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"icon": "logo.png",
|