expxdev 0.1.1 → 0.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.
- package/README.md +459 -72
- package/dist/cli/expx.d.ts +2 -0
- package/dist/cli/expx.js +55 -6
- package/dist/cli/expx.js.map +1 -1
- package/dist/cli/init.js +6 -2
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/perguntar.d.ts +37 -0
- package/dist/cli/perguntar.js +76 -0
- package/dist/cli/perguntar.js.map +1 -0
- package/dist/cli/wizard.d.ts +21 -0
- package/dist/cli/wizard.js +101 -0
- package/dist/cli/wizard.js.map +1 -0
- package/dist/doctor/verificadores.js +97 -1
- package/dist/doctor/verificadores.js.map +1 -1
- package/dist/harness/hooks.d.ts +27 -0
- package/dist/harness/hooks.js +36 -0
- package/dist/harness/hooks.js.map +1 -0
- package/dist/harness/settings.d.ts +2 -1
- package/dist/harness/settings.js +40 -2
- package/dist/harness/settings.js.map +1 -1
- package/dist/nucleo/caminhos.d.ts +1 -1
- package/dist/nucleo/catalogo.d.ts +1 -1
- package/dist/nucleo/catalogo.js +7 -1
- package/dist/nucleo/catalogo.js.map +1 -1
- package/dist/nucleo/layout.d.ts +3 -2
- package/dist/nucleo/layout.js +37 -1
- package/dist/nucleo/layout.js.map +1 -1
- package/dist/nucleo/versao.d.ts +1 -1
- package/dist/parser/conformidade/regras.d.ts +1 -0
- package/dist/parser/conformidade/regras.js +24 -0
- package/dist/parser/conformidade/regras.js.map +1 -1
- package/dist/parser/esquema/enums.d.ts +19 -0
- package/dist/parser/esquema/enums.js +18 -0
- package/dist/parser/esquema/enums.js.map +1 -1
- package/dist/parser/esquema/evento.d.ts +123 -0
- package/dist/parser/esquema/evento.js +141 -0
- package/dist/parser/esquema/evento.js.map +1 -0
- package/dist/parser/leitura/rejeicao.d.ts +9 -0
- package/dist/parser/leitura/rejeicao.js +56 -0
- package/dist/parser/leitura/rejeicao.js.map +1 -1
- package/dist/parser/memoria/ler.d.ts +38 -0
- package/dist/parser/memoria/ler.js +46 -0
- package/dist/parser/memoria/ler.js.map +1 -0
- package/dist/parser/memoria/projetar.d.ts +3 -0
- package/dist/parser/memoria/projetar.js +132 -0
- package/dist/parser/memoria/projetar.js.map +1 -0
- package/dist/parser/memoria/tipos.d.ts +155 -0
- package/dist/parser/memoria/tipos.js +97 -0
- package/dist/parser/memoria/tipos.js.map +1 -0
- package/dist/parser/projeto/montar.d.ts +17 -0
- package/dist/parser/projeto/montar.js +17 -0
- package/dist/parser/projeto/montar.js.map +1 -1
- package/dist/plugin/montagem.d.ts +7 -0
- package/dist/plugin/montagem.js +22 -2
- package/dist/plugin/montagem.js.map +1 -1
- package/dist/servidor/http.js +5 -0
- package/dist/servidor/http.js.map +1 -1
- package/dist/servidor/observador.js +5 -1
- package/dist/servidor/observador.js.map +1 -1
- package/dist/teste/repo-fixture.d.ts +7 -0
- package/dist/teste/repo-fixture.js +18 -0
- package/dist/teste/repo-fixture.js.map +1 -1
- package/nucleo/README.md +79 -0
- package/nucleo/hooks/expx-rastro.sh +261 -0
- package/package.json +2 -1
- package/ui/dist/assets/index-BNE_RJrV.js +15 -0
- package/ui/dist/index.html +1 -1
- package/ui/dist/assets/index-BmDTogQZ.js +0 -14
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { HookInstalado } from "./hooks.js";
|
|
1
2
|
/**
|
|
2
3
|
* Merge do `.claude/settings.json` — o ponto mais fácil de errar.
|
|
3
4
|
*
|
|
@@ -33,4 +34,4 @@ export declare function caminhoDoSettings(raizProjeto: string): string;
|
|
|
33
34
|
* `caminhoMarketplace` é absoluto de propósito: é o que o `claude plugin
|
|
34
35
|
* marketplace add` grava, e um caminho relativo não é resolvido aqui.
|
|
35
36
|
*/
|
|
36
|
-
export declare function mesclarSettings(raizProjeto: string, caminhoMarketplace: string): ResultadoMerge;
|
|
37
|
+
export declare function mesclarSettings(raizProjeto: string, caminhoMarketplace: string, hooks?: readonly HookInstalado[]): ResultadoMerge;
|
package/dist/harness/settings.js
CHANGED
|
@@ -2,6 +2,28 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { NOME_DO_MARKETPLACE, NOME_DO_PLUGIN } from "../plugin/manifestos.js";
|
|
4
4
|
import { fazerBackup } from "./backup.js";
|
|
5
|
+
/**
|
|
6
|
+
* Mescla um evento de hook SEM duplicar.
|
|
7
|
+
*
|
|
8
|
+
* A comparação é pelo `command`, e a idempotência não é elegância: o `init`
|
|
9
|
+
* roda de novo a cada atualização, e uma entrada duplicada faria o memox rodar
|
|
10
|
+
* duas vezes por prompt — dobrando o custo e o ruído (decisão D-16).
|
|
11
|
+
*/
|
|
12
|
+
function mesclarEvento(atual, comando) {
|
|
13
|
+
const grupos = Array.isArray(atual) ? atual : [];
|
|
14
|
+
const jaTem = grupos.some((g) => g.hooks?.some((h) => h.command === comando) ?? false);
|
|
15
|
+
if (jaTem)
|
|
16
|
+
return grupos;
|
|
17
|
+
return [...grupos, { hooks: [{ type: "command", command: comando }] }];
|
|
18
|
+
}
|
|
19
|
+
/** O evento de cada hook, deduzido do nome do arquivo. */
|
|
20
|
+
function eventoDoHook(relativo) {
|
|
21
|
+
if (relativo.includes("injetar"))
|
|
22
|
+
return "UserPromptSubmit";
|
|
23
|
+
if (relativo.includes("reindexar"))
|
|
24
|
+
return "Stop";
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
5
27
|
/** Aceita array (documentado) ou objeto (real). Qualquer outra coisa vira `{}`. */
|
|
6
28
|
export function lerPluginsHabilitados(valor) {
|
|
7
29
|
if (Array.isArray(valor)) {
|
|
@@ -30,7 +52,7 @@ export function caminhoDoSettings(raizProjeto) {
|
|
|
30
52
|
* `caminhoMarketplace` é absoluto de propósito: é o que o `claude plugin
|
|
31
53
|
* marketplace add` grava, e um caminho relativo não é resolvido aqui.
|
|
32
54
|
*/
|
|
33
|
-
export function mesclarSettings(raizProjeto, caminhoMarketplace) {
|
|
55
|
+
export function mesclarSettings(raizProjeto, caminhoMarketplace, hooks = []) {
|
|
34
56
|
const caminho = caminhoDoSettings(raizProjeto);
|
|
35
57
|
const existe = existsSync(caminho);
|
|
36
58
|
let atual = {};
|
|
@@ -58,7 +80,23 @@ export function mesclarSettings(raizProjeto, caminhoMarketplace) {
|
|
|
58
80
|
...lerPluginsHabilitados(atual["enabledPlugins"]),
|
|
59
81
|
[`${NOME_DO_PLUGIN}@${NOME_DO_MARKETPLACE}`]: true,
|
|
60
82
|
};
|
|
61
|
-
const novo = {
|
|
83
|
+
const novo = {
|
|
84
|
+
...atual,
|
|
85
|
+
extraKnownMarketplaces: marketplaces,
|
|
86
|
+
enabledPlugins: habilitados,
|
|
87
|
+
};
|
|
88
|
+
// Sem hooks a registrar, o arquivo NÃO ganha a chave: um projeto que não
|
|
89
|
+
// instalou skill com hook não deve passar a ter `hooks: {}` do nada (D-23).
|
|
90
|
+
if (hooks.length > 0) {
|
|
91
|
+
const eventos = { ...(atual["hooks"] ?? {}) };
|
|
92
|
+
for (const h of hooks) {
|
|
93
|
+
const evento = eventoDoHook(h.relativo);
|
|
94
|
+
if (evento === null)
|
|
95
|
+
continue;
|
|
96
|
+
eventos[evento] = mesclarEvento(eventos[evento], `$CLAUDE_PROJECT_DIR/${h.relativo}`);
|
|
97
|
+
}
|
|
98
|
+
novo["hooks"] = eventos;
|
|
99
|
+
}
|
|
62
100
|
mkdirSync(join(caminho, ".."), { recursive: true });
|
|
63
101
|
writeFileSync(caminho, `${JSON.stringify(novo, null, 2)}\n`);
|
|
64
102
|
return backup === undefined ? { ok: true, criado: !existe } : { ok: true, criado: !existe, backup };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/harness/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/harness/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* para o vazio. O experimento está em
|
|
8
8
|
* `docs/expx-cli/base/09-validacao-marketplace-local.md`.
|
|
9
9
|
*
|
|
10
|
-
* Hoje as
|
|
10
|
+
* Hoje as seis skills reais estão limpas; a verificação existe para pegar a
|
|
11
11
|
* regressão futura antes que ela chegue no usuário.
|
|
12
12
|
*/
|
|
13
13
|
export type Achado = {
|
package/dist/nucleo/catalogo.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* As
|
|
2
|
+
* As seis skills do ecossistema Expx.
|
|
3
3
|
*
|
|
4
4
|
* Fonte única do que o CLI sabe instalar. `papel` é o texto mostrado na seleção
|
|
5
5
|
* do `init`; `camada` marca as skills que, sozinhas, não fazem nada — elas
|
|
@@ -37,6 +37,12 @@ export const CATALOGO = [
|
|
|
37
37
|
papel: "versionamento, entrega e revisao de pull requests",
|
|
38
38
|
camada: false,
|
|
39
39
|
},
|
|
40
|
+
{
|
|
41
|
+
nome: "memox",
|
|
42
|
+
repositorio: "https://github.com/bittencourtthulio/MemoX",
|
|
43
|
+
papel: "memoria do projeto, indexa os artefatos ja fechados",
|
|
44
|
+
camada: true,
|
|
45
|
+
},
|
|
40
46
|
];
|
|
41
47
|
/** Os nomes na ordem em que a seleção do `init` os apresenta. */
|
|
42
48
|
export const NOMES = CATALOGO.map((s) => s.nome);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalogo.js","sourceRoot":"","sources":["../../src/nucleo/catalogo.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,MAAM,CAAC,MAAM,QAAQ,GAAqB;IACxC;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,8CAA8C;QAC3D,KAAK,EAAE,kCAAkC;QACzC,MAAM,EAAE,KAAK;KACd;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,2CAA2C;QACxD,KAAK,EAAE,wCAAwC;QAC/C,MAAM,EAAE,KAAK;KACd;IACD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,8CAA8C;QAC3D,KAAK,EAAE,8BAA8B;QACrC,MAAM,EAAE,IAAI;KACb;IACD;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,6CAA6C;QAC1D,KAAK,EAAE,2CAA2C;QAClD,MAAM,EAAE,IAAI;KACb;IACD;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,6CAA6C;QAC1D,KAAK,EAAE,mDAAmD;QAC1D,MAAM,EAAE,KAAK;KACd;CACO,CAAC;AAEX,iEAAiE;AACjE,MAAM,CAAC,MAAM,KAAK,GAAsB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAEpE,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC;AACjD,CAAC"}
|
|
1
|
+
{"version":3,"file":"catalogo.js","sourceRoot":"","sources":["../../src/nucleo/catalogo.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,MAAM,CAAC,MAAM,QAAQ,GAAqB;IACxC;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,8CAA8C;QAC3D,KAAK,EAAE,kCAAkC;QACzC,MAAM,EAAE,KAAK;KACd;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,2CAA2C;QACxD,KAAK,EAAE,wCAAwC;QAC/C,MAAM,EAAE,KAAK;KACd;IACD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,8CAA8C;QAC3D,KAAK,EAAE,8BAA8B;QACrC,MAAM,EAAE,IAAI;KACb;IACD;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,6CAA6C;QAC1D,KAAK,EAAE,2CAA2C;QAClD,MAAM,EAAE,IAAI;KACb;IACD;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,6CAA6C;QAC1D,KAAK,EAAE,mDAAmD;QAC1D,MAAM,EAAE,KAAK;KACd;IACD;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,4CAA4C;QACzD,KAAK,EAAE,qDAAqD;QAC5D,MAAM,EAAE,IAAI;KACb;CACO,CAAC;AAEX,iEAAiE;AACjE,MAAM,CAAC,MAAM,KAAK,GAAsB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAEpE,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC;AACjD,CAAC"}
|
package/dist/nucleo/layout.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Normaliza os layouts de repositório de skill.
|
|
3
3
|
*
|
|
4
|
-
* Os
|
|
4
|
+
* Os seis repositórios reais têm DOIS layouts distintos
|
|
5
5
|
* (`base/08-repositorios-reais.md`):
|
|
6
6
|
*
|
|
7
|
-
* embutido — `.claude/skills/<nome>/` + `.claude/commands/` (sprintx, stackx, mergex)
|
|
7
|
+
* embutido — `.claude/skills/<nome>/` + `.claude/commands/` (sprintx, stackx, mergex, memox)
|
|
8
8
|
* plano — `skill/` + `commands/` (runx, legadox)
|
|
9
9
|
*
|
|
10
10
|
* Por isso a detecção NÃO assume caminho fixo: procura o `SKILL.md` e toma o
|
|
@@ -16,6 +16,7 @@ export type Layout = {
|
|
|
16
16
|
nome: string;
|
|
17
17
|
raizSkill: string;
|
|
18
18
|
comandos: string[];
|
|
19
|
+
hooks: string[];
|
|
19
20
|
} | {
|
|
20
21
|
ok: false;
|
|
21
22
|
erro: string;
|
package/dist/nucleo/layout.js
CHANGED
|
@@ -2,6 +2,8 @@ import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
|
2
2
|
import { basename, join } from "node:path";
|
|
3
3
|
const IGNORADAS = new Set([".git", "node_modules", ".github", "dist"]);
|
|
4
4
|
const CANDIDATAS_COMANDOS = [join(".claude", "commands"), "commands", join(".opencode", "commands"), join(".opencode", "command")];
|
|
5
|
+
/** Hooks são mecanismo do Claude Code; o OpenCode não tem equivalente mapeado. */
|
|
6
|
+
const CANDIDATAS_HOOKS = [join(".claude", "hooks"), "hooks"];
|
|
5
7
|
/** Procura o SKILL.md mais raso, ignorando pastas de infraestrutura. */
|
|
6
8
|
function acharSkillMd(raiz, profundidadeMax = 5) {
|
|
7
9
|
const fila = [{ dir: raiz, nivel: 0 }];
|
|
@@ -59,6 +61,34 @@ function acharComandos(raiz, nome) {
|
|
|
59
61
|
}
|
|
60
62
|
return [];
|
|
61
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Os hooks da skill. Mesmo PREFIXO usado para os comandos (`<nome>` ou
|
|
66
|
+
* `<nome>-*`), mas sem o filtro de extensão: hooks são `.sh`, não `.md`.
|
|
67
|
+
*/
|
|
68
|
+
function acharHooks(raiz, nome) {
|
|
69
|
+
for (const c of CANDIDATAS_HOOKS) {
|
|
70
|
+
const dir = join(raiz, c);
|
|
71
|
+
if (!existsSync(dir))
|
|
72
|
+
continue;
|
|
73
|
+
const arquivos = readdirSync(dir)
|
|
74
|
+
.filter((a) => a === nome || a.startsWith(`${nome}-`) || a.startsWith(`${nome}.`))
|
|
75
|
+
.map((a) => join(dir, a))
|
|
76
|
+
// Repositório real tem PASTA de hook (a sprintx tem `.claude/hooks/sprintx/`),
|
|
77
|
+
// e não só arquivo solto. Só arquivo é hook copiável; pasta é organização
|
|
78
|
+
// interna da skill e já viaja junto na cópia da própria skill.
|
|
79
|
+
.filter((a) => {
|
|
80
|
+
try {
|
|
81
|
+
return statSync(a).isFile();
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
if (arquivos.length > 0)
|
|
88
|
+
return arquivos;
|
|
89
|
+
}
|
|
90
|
+
return [];
|
|
91
|
+
}
|
|
62
92
|
export function detectarLayout(raizRepo, nomeEsperado) {
|
|
63
93
|
const skillMd = acharSkillMd(raizRepo);
|
|
64
94
|
if (skillMd === undefined)
|
|
@@ -68,6 +98,12 @@ export function detectarLayout(raizRepo, nomeEsperado) {
|
|
|
68
98
|
if (nome !== nomeEsperado) {
|
|
69
99
|
return { ok: false, erro: `nome da skill e "${nome}", esperado "${nomeEsperado}"` };
|
|
70
100
|
}
|
|
71
|
-
return {
|
|
101
|
+
return {
|
|
102
|
+
ok: true,
|
|
103
|
+
nome,
|
|
104
|
+
raizSkill,
|
|
105
|
+
comandos: acharComandos(raizRepo, nome),
|
|
106
|
+
hooks: acharHooks(raizRepo, nome),
|
|
107
|
+
};
|
|
72
108
|
}
|
|
73
109
|
//# sourceMappingURL=layout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/nucleo/layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAoB3C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AACvE,MAAM,mBAAmB,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/nucleo/layout.ts"],"names":[],"mappings":"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"}
|
package/dist/nucleo/versao.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* explicitamente que a skill não está travada em versão publicada — nunca
|
|
7
7
|
* segue a branch em silêncio quando existe tag.
|
|
8
8
|
*
|
|
9
|
-
* Hoje NENHUMA das
|
|
9
|
+
* Hoje NENHUMA das seis skills tem tag (`base/08-repositorios-reais.md`), então
|
|
10
10
|
* o caminho de fallback é o corrente na prática, não a exceção.
|
|
11
11
|
*/
|
|
12
12
|
export type Alvo = {
|
|
@@ -21,6 +21,7 @@ export declare const TipoViolacao: {
|
|
|
21
21
|
readonly DependenciaInexistente: "dependencia_inexistente";
|
|
22
22
|
readonly CicloDependencia: "ciclo_dependencia";
|
|
23
23
|
readonly EstagioIncoerente: "estagio_incoerente";
|
|
24
|
+
readonly ChaveOmitida: "chave_omitida";
|
|
24
25
|
};
|
|
25
26
|
export type TipoViolacao = (typeof TipoViolacao)[keyof typeof TipoViolacao];
|
|
26
27
|
export type Violacao = {
|
|
@@ -21,6 +21,7 @@ export const TipoViolacao = {
|
|
|
21
21
|
DependenciaInexistente: "dependencia_inexistente",
|
|
22
22
|
CicloDependencia: "ciclo_dependencia",
|
|
23
23
|
EstagioIncoerente: "estagio_incoerente",
|
|
24
|
+
ChaveOmitida: "chave_omitida",
|
|
24
25
|
};
|
|
25
26
|
const vazio = (v) => v === null || v === undefined || (typeof v === "string" && v.trim() === "");
|
|
26
27
|
function diasEntre(inicio, fim) {
|
|
@@ -197,6 +198,28 @@ function regrasDeReferencia(t, saida) {
|
|
|
197
198
|
});
|
|
198
199
|
}
|
|
199
200
|
}
|
|
201
|
+
/**
|
|
202
|
+
* R6 — chave nunca omitida.
|
|
203
|
+
*
|
|
204
|
+
* A omissão foi colhida na leitura, onde o dado cru ainda existia; aqui ela só
|
|
205
|
+
* vira violação. É violação e não rejeição por decisão: o painel existe para
|
|
206
|
+
* mostrar o defeito, e rejeitar faria o trabalho sumir da tela justamente
|
|
207
|
+
* quando tem um problema (D-04, lacuna L-05).
|
|
208
|
+
*/
|
|
209
|
+
function regrasDeChaveOmitida(projeto, saida) {
|
|
210
|
+
for (const o of projeto.omitidas) {
|
|
211
|
+
const partes = o.caminho.split(".");
|
|
212
|
+
const campo = partes[partes.length - 1] ?? o.caminho;
|
|
213
|
+
saida.push({
|
|
214
|
+
tipo: TipoViolacao.ChaveOmitida,
|
|
215
|
+
trabalho_id: o.trabalho_id,
|
|
216
|
+
alvo: o.caminho,
|
|
217
|
+
arquivo: o.arquivo,
|
|
218
|
+
linha: o.linha,
|
|
219
|
+
detalhe: `${campo} nao esta no arquivo; a chave e obrigatoria mesmo vazia (use null ou [])`,
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
}
|
|
200
223
|
export function verificarConformidade(projeto, op) {
|
|
201
224
|
const saida = [];
|
|
202
225
|
for (const t of projeto.trabalhos) {
|
|
@@ -204,6 +227,7 @@ export function verificarConformidade(projeto, op) {
|
|
|
204
227
|
regrasDeEstrutura(t, saida, op);
|
|
205
228
|
regrasDeReferencia(t, saida);
|
|
206
229
|
}
|
|
230
|
+
regrasDeChaveOmitida(projeto, saida);
|
|
207
231
|
return saida;
|
|
208
232
|
}
|
|
209
233
|
//# sourceMappingURL=regras.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regras.js","sourceRoot":"","sources":["../../../src/parser/conformidade/regras.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;;;;;;;;;GAWG;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,YAAY,EAAE,eAAe;IAC7B,gBAAgB,EAAE,mBAAmB;IACrC,iBAAiB,EAAE,qBAAqB;IACxC,sBAAsB,EAAE,0BAA0B;IAClD,gBAAgB,EAAE,oBAAoB;IACtC,cAAc,EAAE,iBAAiB;IACjC,sBAAsB,EAAE,yBAAyB;IACjD,gBAAgB,EAAE,mBAAmB;IACrC,iBAAiB,EAAE,oBAAoB;
|
|
1
|
+
{"version":3,"file":"regras.js","sourceRoot":"","sources":["../../../src/parser/conformidade/regras.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,11 +11,30 @@ import { z } from "zod";
|
|
|
11
11
|
* - `status` de task usa o vocabulário feminino (`concluida`, `bloqueada`);
|
|
12
12
|
* status de trabalho, sprint e fase usa o masculino (`concluido`, `bloqueado`).
|
|
13
13
|
*/
|
|
14
|
+
/**
|
|
15
|
+
* `expx_tool` — quem ESCREVEU um artefato de estado. Só a sprintx e a runx
|
|
16
|
+
* escrevem frontmatter `expx-schema`; as demais skills do método não têm kind
|
|
17
|
+
* próprio nesse contrato.
|
|
18
|
+
*
|
|
19
|
+
* Não confundir com `ferramenta`, do rastro de eventos (`Ferramenta`, abaixo),
|
|
20
|
+
* que aceita as seis. Tratar os dois como o mesmo enum rejeita o rastro de
|
|
21
|
+
* quatro skills.
|
|
22
|
+
*/
|
|
14
23
|
export declare const ExpxTool: z.ZodEnum<{
|
|
15
24
|
sprintx: "sprintx";
|
|
16
25
|
runx: "runx";
|
|
17
26
|
}>;
|
|
18
27
|
export type ExpxTool = z.infer<typeof ExpxTool>;
|
|
28
|
+
/** `ferramenta` — quem EMITIU um evento no rastro. Todas as skills emitem. */
|
|
29
|
+
export declare const Ferramenta: z.ZodEnum<{
|
|
30
|
+
sprintx: "sprintx";
|
|
31
|
+
runx: "runx";
|
|
32
|
+
mergex: "mergex";
|
|
33
|
+
legadox: "legadox";
|
|
34
|
+
stackx: "stackx";
|
|
35
|
+
memox: "memox";
|
|
36
|
+
}>;
|
|
37
|
+
export type Ferramenta = z.infer<typeof Ferramenta>;
|
|
19
38
|
export declare const TipoTrabalho: z.ZodEnum<{
|
|
20
39
|
feature: "feature";
|
|
21
40
|
ocorrencia: "ocorrencia";
|
|
@@ -11,7 +11,25 @@ import { z } from "zod";
|
|
|
11
11
|
* - `status` de task usa o vocabulário feminino (`concluida`, `bloqueada`);
|
|
12
12
|
* status de trabalho, sprint e fase usa o masculino (`concluido`, `bloqueado`).
|
|
13
13
|
*/
|
|
14
|
+
/**
|
|
15
|
+
* `expx_tool` — quem ESCREVEU um artefato de estado. Só a sprintx e a runx
|
|
16
|
+
* escrevem frontmatter `expx-schema`; as demais skills do método não têm kind
|
|
17
|
+
* próprio nesse contrato.
|
|
18
|
+
*
|
|
19
|
+
* Não confundir com `ferramenta`, do rastro de eventos (`Ferramenta`, abaixo),
|
|
20
|
+
* que aceita as seis. Tratar os dois como o mesmo enum rejeita o rastro de
|
|
21
|
+
* quatro skills.
|
|
22
|
+
*/
|
|
14
23
|
export const ExpxTool = z.enum(["sprintx", "runx"]);
|
|
24
|
+
/** `ferramenta` — quem EMITIU um evento no rastro. Todas as skills emitem. */
|
|
25
|
+
export const Ferramenta = z.enum([
|
|
26
|
+
"sprintx",
|
|
27
|
+
"runx",
|
|
28
|
+
"mergex",
|
|
29
|
+
"legadox",
|
|
30
|
+
"stackx",
|
|
31
|
+
"memox",
|
|
32
|
+
]);
|
|
15
33
|
export const TipoTrabalho = z.enum(["feature", "ocorrencia"]);
|
|
16
34
|
export const TipoOcorrencia = z.enum([
|
|
17
35
|
"bug",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/parser/esquema/enums.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/parser/esquema/enums.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Contrato `expx-eventos` v1 — a linha do rastro.
|
|
4
|
+
*
|
|
5
|
+
* Fonte única da regra das doze chaves. Ela já esteve escrita à mão em dois
|
|
6
|
+
* lugares (`runx/hooks/testes/testar.sh` e `stackx/hooks/stackx/_rastro.py`),
|
|
7
|
+
* e as duas listas divergiram do que as skills realmente gravam.
|
|
8
|
+
*/
|
|
9
|
+
/** As doze chaves obrigatórias, na ordem do contrato. */
|
|
10
|
+
export declare const CHAVES_EVENTO: readonly ["ts", "expx_eventos", "trabalho_id", "ferramenta", "origem", "evento", "fase", "task", "agente", "resultado", "detalhe", "arquivos"];
|
|
11
|
+
/**
|
|
12
|
+
* Chaves extras que o contrato declara, por skill. Extras existem porque a
|
|
13
|
+
* alternativa — espremer a informação em `detalhe` — perde o dado para sempre.
|
|
14
|
+
*/
|
|
15
|
+
export declare const EXTRAS_EVENTO: readonly ["hook", "faixa"];
|
|
16
|
+
export declare const Origem: z.ZodEnum<{
|
|
17
|
+
agente: "agente";
|
|
18
|
+
hook: "hook";
|
|
19
|
+
skill: "skill";
|
|
20
|
+
}>;
|
|
21
|
+
export declare const EventoNome: z.ZodEnum<{
|
|
22
|
+
fase_iniciada: "fase_iniciada";
|
|
23
|
+
fase_concluida: "fase_concluida";
|
|
24
|
+
task_iniciada: "task_iniciada";
|
|
25
|
+
task_concluida: "task_concluida";
|
|
26
|
+
task_bloqueada: "task_bloqueada";
|
|
27
|
+
suite_executada: "suite_executada";
|
|
28
|
+
arquivo_alterado: "arquivo_alterado";
|
|
29
|
+
regra_violada: "regra_violada";
|
|
30
|
+
acao_bloqueada: "acao_bloqueada";
|
|
31
|
+
agente_iniciado: "agente_iniciado";
|
|
32
|
+
agente_concluido: "agente_concluido";
|
|
33
|
+
veredito_emitido: "veredito_emitido";
|
|
34
|
+
commit_criado: "commit_criado";
|
|
35
|
+
pr_aberto: "pr_aberto";
|
|
36
|
+
}>;
|
|
37
|
+
export declare const Agente: z.ZodEnum<{
|
|
38
|
+
qa: "qa";
|
|
39
|
+
principal: "principal";
|
|
40
|
+
"auditor-plano": "auditor-plano";
|
|
41
|
+
"revisor-testes": "revisor-testes";
|
|
42
|
+
investigador: "investigador";
|
|
43
|
+
cartografo: "cartografo";
|
|
44
|
+
"revisor-diff": "revisor-diff";
|
|
45
|
+
"analista-de-conflito": "analista-de-conflito";
|
|
46
|
+
"avaliador-de-raio": "avaliador-de-raio";
|
|
47
|
+
}>;
|
|
48
|
+
/** Timestamp do rastro: ISO-8601 em UTC, com `Z` (R4). */
|
|
49
|
+
export declare const TimestampUtc: z.ZodString;
|
|
50
|
+
export declare const LinhaEvento: z.ZodObject<{
|
|
51
|
+
ts: z.ZodString;
|
|
52
|
+
expx_eventos: z.ZodLiteral<1>;
|
|
53
|
+
trabalho_id: z.ZodString;
|
|
54
|
+
ferramenta: z.ZodEnum<{
|
|
55
|
+
sprintx: "sprintx";
|
|
56
|
+
runx: "runx";
|
|
57
|
+
mergex: "mergex";
|
|
58
|
+
legadox: "legadox";
|
|
59
|
+
stackx: "stackx";
|
|
60
|
+
memox: "memox";
|
|
61
|
+
}>;
|
|
62
|
+
origem: z.ZodEnum<{
|
|
63
|
+
agente: "agente";
|
|
64
|
+
hook: "hook";
|
|
65
|
+
skill: "skill";
|
|
66
|
+
}>;
|
|
67
|
+
evento: z.ZodEnum<{
|
|
68
|
+
fase_iniciada: "fase_iniciada";
|
|
69
|
+
fase_concluida: "fase_concluida";
|
|
70
|
+
task_iniciada: "task_iniciada";
|
|
71
|
+
task_concluida: "task_concluida";
|
|
72
|
+
task_bloqueada: "task_bloqueada";
|
|
73
|
+
suite_executada: "suite_executada";
|
|
74
|
+
arquivo_alterado: "arquivo_alterado";
|
|
75
|
+
regra_violada: "regra_violada";
|
|
76
|
+
acao_bloqueada: "acao_bloqueada";
|
|
77
|
+
agente_iniciado: "agente_iniciado";
|
|
78
|
+
agente_concluido: "agente_concluido";
|
|
79
|
+
veredito_emitido: "veredito_emitido";
|
|
80
|
+
commit_criado: "commit_criado";
|
|
81
|
+
pr_aberto: "pr_aberto";
|
|
82
|
+
}>;
|
|
83
|
+
fase: z.ZodNullable<z.ZodString>;
|
|
84
|
+
task: z.ZodNullable<z.ZodString>;
|
|
85
|
+
agente: z.ZodEnum<{
|
|
86
|
+
qa: "qa";
|
|
87
|
+
principal: "principal";
|
|
88
|
+
"auditor-plano": "auditor-plano";
|
|
89
|
+
"revisor-testes": "revisor-testes";
|
|
90
|
+
investigador: "investigador";
|
|
91
|
+
cartografo: "cartografo";
|
|
92
|
+
"revisor-diff": "revisor-diff";
|
|
93
|
+
"analista-de-conflito": "analista-de-conflito";
|
|
94
|
+
"avaliador-de-raio": "avaliador-de-raio";
|
|
95
|
+
}>;
|
|
96
|
+
resultado: z.ZodString;
|
|
97
|
+
detalhe: z.ZodString;
|
|
98
|
+
arquivos: z.ZodArray<z.ZodString>;
|
|
99
|
+
hook: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
100
|
+
faixa: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
101
|
+
}, z.core.$loose>;
|
|
102
|
+
export type LinhaEvento = z.infer<typeof LinhaEvento>;
|
|
103
|
+
export type DefeitoEvento = {
|
|
104
|
+
linha: number;
|
|
105
|
+
motivo: string;
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* As doze chaves estão CONTIDAS na linha?
|
|
109
|
+
*
|
|
110
|
+
* Contenção, nunca igualdade de conjunto: um validador estrito reprova as
|
|
111
|
+
* skills que usam extras legítimas — foi assim que a verificação da runx
|
|
112
|
+
* passou a reprovar toda linha da mergex e da legadox.
|
|
113
|
+
*/
|
|
114
|
+
export declare function chavesFaltando(obj: Record<string, unknown>): string[];
|
|
115
|
+
/** Chaves presentes que o contrato não declara — aviso, não erro. */
|
|
116
|
+
export declare function chavesDesconhecidas(obj: Record<string, unknown>): string[];
|
|
117
|
+
export type ResultadoRastro = {
|
|
118
|
+
linhas: number;
|
|
119
|
+
defeitos: DefeitoEvento[];
|
|
120
|
+
desconhecidas: string[];
|
|
121
|
+
};
|
|
122
|
+
/** Valida um arquivo `.jsonl` inteiro. Linha em branco é ignorada. */
|
|
123
|
+
export declare function validarRastro(conteudo: string): ResultadoRastro;
|