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.
Files changed (68) hide show
  1. package/README.md +459 -72
  2. package/dist/cli/expx.d.ts +2 -0
  3. package/dist/cli/expx.js +55 -6
  4. package/dist/cli/expx.js.map +1 -1
  5. package/dist/cli/init.js +6 -2
  6. package/dist/cli/init.js.map +1 -1
  7. package/dist/cli/perguntar.d.ts +37 -0
  8. package/dist/cli/perguntar.js +76 -0
  9. package/dist/cli/perguntar.js.map +1 -0
  10. package/dist/cli/wizard.d.ts +21 -0
  11. package/dist/cli/wizard.js +101 -0
  12. package/dist/cli/wizard.js.map +1 -0
  13. package/dist/doctor/verificadores.js +97 -1
  14. package/dist/doctor/verificadores.js.map +1 -1
  15. package/dist/harness/hooks.d.ts +27 -0
  16. package/dist/harness/hooks.js +36 -0
  17. package/dist/harness/hooks.js.map +1 -0
  18. package/dist/harness/settings.d.ts +2 -1
  19. package/dist/harness/settings.js +40 -2
  20. package/dist/harness/settings.js.map +1 -1
  21. package/dist/nucleo/caminhos.d.ts +1 -1
  22. package/dist/nucleo/catalogo.d.ts +1 -1
  23. package/dist/nucleo/catalogo.js +7 -1
  24. package/dist/nucleo/catalogo.js.map +1 -1
  25. package/dist/nucleo/layout.d.ts +3 -2
  26. package/dist/nucleo/layout.js +37 -1
  27. package/dist/nucleo/layout.js.map +1 -1
  28. package/dist/nucleo/versao.d.ts +1 -1
  29. package/dist/parser/conformidade/regras.d.ts +1 -0
  30. package/dist/parser/conformidade/regras.js +24 -0
  31. package/dist/parser/conformidade/regras.js.map +1 -1
  32. package/dist/parser/esquema/enums.d.ts +19 -0
  33. package/dist/parser/esquema/enums.js +18 -0
  34. package/dist/parser/esquema/enums.js.map +1 -1
  35. package/dist/parser/esquema/evento.d.ts +123 -0
  36. package/dist/parser/esquema/evento.js +141 -0
  37. package/dist/parser/esquema/evento.js.map +1 -0
  38. package/dist/parser/leitura/rejeicao.d.ts +9 -0
  39. package/dist/parser/leitura/rejeicao.js +56 -0
  40. package/dist/parser/leitura/rejeicao.js.map +1 -1
  41. package/dist/parser/memoria/ler.d.ts +38 -0
  42. package/dist/parser/memoria/ler.js +46 -0
  43. package/dist/parser/memoria/ler.js.map +1 -0
  44. package/dist/parser/memoria/projetar.d.ts +3 -0
  45. package/dist/parser/memoria/projetar.js +132 -0
  46. package/dist/parser/memoria/projetar.js.map +1 -0
  47. package/dist/parser/memoria/tipos.d.ts +155 -0
  48. package/dist/parser/memoria/tipos.js +97 -0
  49. package/dist/parser/memoria/tipos.js.map +1 -0
  50. package/dist/parser/projeto/montar.d.ts +17 -0
  51. package/dist/parser/projeto/montar.js +17 -0
  52. package/dist/parser/projeto/montar.js.map +1 -1
  53. package/dist/plugin/montagem.d.ts +7 -0
  54. package/dist/plugin/montagem.js +22 -2
  55. package/dist/plugin/montagem.js.map +1 -1
  56. package/dist/servidor/http.js +5 -0
  57. package/dist/servidor/http.js.map +1 -1
  58. package/dist/servidor/observador.js +5 -1
  59. package/dist/servidor/observador.js.map +1 -1
  60. package/dist/teste/repo-fixture.d.ts +7 -0
  61. package/dist/teste/repo-fixture.js +18 -0
  62. package/dist/teste/repo-fixture.js.map +1 -1
  63. package/nucleo/README.md +79 -0
  64. package/nucleo/hooks/expx-rastro.sh +261 -0
  65. package/package.json +2 -1
  66. package/ui/dist/assets/index-BNE_RJrV.js +15 -0
  67. package/ui/dist/index.html +1 -1
  68. 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;
@@ -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 = { ...atual, extraKnownMarketplaces: marketplaces, enabledPlugins: habilitados };
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":"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"}
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 cinco skills reais estão limpas; a verificação existe para pegar a
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 = {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * As cinco skills do ecossistema Expx.
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
@@ -1,5 +1,5 @@
1
1
  /**
2
- * As cinco skills do ecossistema Expx.
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"}
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Normaliza os layouts de repositório de skill.
3
3
  *
4
- * Os cinco repositórios reais têm DOIS layouts distintos
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;
@@ -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 { ok: true, nome, raizSkill, comandos: acharComandos(raizRepo, nome) };
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":"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"}
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/nucleo/layout.ts"],"names":[],"mappings":"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"}
@@ -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 cinco skills tem tag (`base/08-repositorios-reais.md`), então
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;CAC/B,CAAC;AAqBX,MAAM,KAAK,GAAG,CAAC,CAAU,EAAW,EAAE,CACpC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAE9E,SAAS,SAAS,CAAC,MAAc,EAAE,GAAS;IAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,YAAY,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAC9E,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;AAC1C,CAAC;AAED,gDAAgD;AAChD,SAAS,OAAO,CAAC,CAAkB;IACjC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,YAAY,CAAC,CAAkB,EAAE,KAAiB;IACzD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG;YACX,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,IAAI,EAAE,IAAI,CAAC,EAAE;YACb,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;QAEF,iEAAiE;QACjE,KAAK,MAAM,KAAK,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,CAAU,EAAE,CAAC;YACrE,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC;oBACT,GAAG,IAAI;oBACP,IAAI,EAAE,YAAY,CAAC,YAAY;oBAC/B,OAAO,EAAE,GAAG,KAAK,wBAAwB;iBAC1C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC1D,KAAK,CAAC,IAAI,CAAC;gBACT,GAAG,IAAI;gBACP,IAAI,EAAE,YAAY,CAAC,iBAAiB;gBACpC,OAAO,EAAE,4BAA4B,IAAI,CAAC,KAAK,EAAE;aAClD,CAAC,CAAC;QACL,CAAC;QAED,6CAA6C;QAC7C,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,KAAK,CAAC,IAAI,CAAC;gBACT,GAAG,IAAI;gBACP,IAAI,EAAE,YAAY,CAAC,sBAAsB;gBACzC,OAAO,EAAE,sCAAsC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aAC5E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,IAAI,CAAC,CAAC,SAAS,KAAK,MAAM,IAAI,CAAC,CAAC,eAAe,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9E,sEAAsE;QACtE,wDAAwD;QACxD,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,YAAY,CAAC,gBAAgB;gBACnC,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,IAAI,EAAE,QAAQ,CAAC,EAAE;gBACjB,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,OAAO,EAAE,6CAA6C;aACvD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAkB,EAAE,KAAiB,EAAE,EAAsB;IACtF,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,YAAY,CAAC,gBAAgB;gBACnC,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,IAAI,EAAE,CAAC,CAAC,SAAS;gBACjB,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO;gBAC/B,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,OAAO,EAAE,2BAA2B;aACrC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,YAAY,CAAC,gBAAgB;oBACnC,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,IAAI,EAAE,CAAC,CAAC,EAAE;oBACV,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,OAAO,EAAE,yBAAyB;iBACnC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,CAAC,MAAM;YAAE,SAAS;QACxB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,IAAI,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,YAAY,CAAC,cAAc;gBACjC,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,IAAI,EAAE,CAAC,CAAC,EAAE;gBACV,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,CAAC,YAAY,GAAG;aAC9D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAkB,EAAE,KAAiB;IAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClB,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,YAAY,CAAC,sBAAsB;oBACzC,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,IAAI,EAAE,IAAI,CAAC,EAAE;oBACb,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,OAAO,EAAE,qBAAqB,GAAG,iCAAiC;iBACnE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAqB,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,SAAS,MAAM,CAAC,EAAU,EAAE,KAAe;QACzC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACf,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,UAAU,IAAI,EAAE,EAAE,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC9B,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvB,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;oBAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC1E,SAAS;YACX,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;gBAAE,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YAAE,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,YAAY,CAAC,gBAAgB;YACnC,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,CAAC,CAAC,OAAO;YACnC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI;YAC1B,OAAO,EAAE,4CAA4C;SACtD,CAAC,CAAC;IACL,CAAC;IAED,8DAA8D;IAC9D,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,YAAY,CAAC,iBAAiB;YACpC,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,IAAI,EAAE,CAAC,CAAC,WAAW;YACnB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI;YACtC,OAAO,EAAE,aAAa,CAAC,CAAC,SAAS,gBAAgB,CAAC,CAAC,OAAO,EAAE;SAC7D,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAgB,EAAE,EAAsB;IAC5E,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QAClC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACvB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAChC,kBAAkB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;GAWG;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;AAGpD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC;IAC/B,SAAS;IACT,MAAM;IACN,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,OAAO;CACR,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;AAG9D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC;IACnC,KAAK;IACL,aAAa;IACb,aAAa;IACb,gBAAgB;IAChB,kBAAkB;IAClB,YAAY;IACZ,OAAO;CACR,CAAC,CAAC;AAGH,sDAAsD;AACtD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAE9E,wDAAwD;AACxD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAC;AAErE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,gBAAgB,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC;AAGvE,iEAAiE;AACjE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;AAGjG,6CAA6C;AAC7C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;AAGzF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAG7D,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC;AAGpE,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;AAG1D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAG7D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAGvE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGlE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC;KACrB,KAAK,CAAC;IACL,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;IACnE,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CACxD,CAAC,CAAC;AAEL,2DAA2D;AAC3D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;IACrF,OAAO,EAAE,uCAAuC;CACjD,CAAC,CAAC;AAEH,4EAA4E;AAC5E,MAAM,UAAU,kBAAkB,CAAC,IAAc,EAAE,OAAgB;IACjE,OAAO,IAAI,KAAK,SAAS;QACvB,CAAC,CAAE,gBAAsC,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC3D,CAAC,CAAE,aAAmC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC7D,CAAC"}
@@ -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;