expxdev 0.5.0 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/dist/cli/autonomo.d.ts +21 -0
  2. package/dist/cli/autonomo.js +37 -0
  3. package/dist/cli/autonomo.js.map +1 -0
  4. package/dist/cli/expx.js +4 -0
  5. package/dist/cli/expx.js.map +1 -1
  6. package/dist/cli/init.js +39 -5
  7. package/dist/cli/init.js.map +1 -1
  8. package/dist/cli/principal.js +10 -5
  9. package/dist/cli/principal.js.map +1 -1
  10. package/dist/cli/subcomandos.d.ts +3 -0
  11. package/dist/cli/subcomandos.js +6 -0
  12. package/dist/cli/subcomandos.js.map +1 -1
  13. package/dist/harness/hooks.d.ts +9 -4
  14. package/dist/harness/hooks.js +34 -3
  15. package/dist/harness/hooks.js.map +1 -1
  16. package/dist/harness/instalar.d.ts +19 -0
  17. package/dist/harness/instalar.js +42 -1
  18. package/dist/harness/instalar.js.map +1 -1
  19. package/dist/harness/settings.js +6 -0
  20. package/dist/harness/settings.js.map +1 -1
  21. package/dist/nucleo/busca.d.ts +8 -0
  22. package/dist/nucleo/busca.js +27 -2
  23. package/dist/nucleo/busca.js.map +1 -1
  24. package/dist/nucleo/catalogo.d.ts +7 -1
  25. package/dist/nucleo/catalogo.js +73 -9
  26. package/dist/nucleo/catalogo.js.map +1 -1
  27. package/dist/nucleo/layout.d.ts +8 -0
  28. package/dist/nucleo/layout.js +22 -0
  29. package/dist/nucleo/layout.js.map +1 -1
  30. package/dist/parser/descoberta/trabalhos.d.ts +14 -2
  31. package/dist/parser/descoberta/trabalhos.js +59 -0
  32. package/dist/parser/descoberta/trabalhos.js.map +1 -1
  33. package/dist/parser/esquema/cabecalho.d.ts +21 -5
  34. package/dist/parser/esquema/cabecalho.js +24 -5
  35. package/dist/parser/esquema/cabecalho.js.map +1 -1
  36. package/dist/parser/esquema/enums.d.ts +41 -4
  37. package/dist/parser/esquema/enums.js +39 -9
  38. package/dist/parser/esquema/enums.js.map +1 -1
  39. package/dist/parser/esquema/evento.d.ts +1 -0
  40. package/dist/parser/esquema/kinds.d.ts +288 -0
  41. package/dist/parser/esquema/kinds.js +84 -1
  42. package/dist/parser/esquema/kinds.js.map +1 -1
  43. package/dist/plugin/montagem.d.ts +5 -0
  44. package/dist/plugin/montagem.js +67 -1
  45. package/dist/plugin/montagem.js.map +1 -1
  46. package/dist/servidor/http.d.ts +5 -0
  47. package/dist/servidor/http.js +28 -0
  48. package/dist/servidor/http.js.map +1 -1
  49. package/dist/servidor/observador.d.ts +27 -1
  50. package/dist/servidor/observador.js +152 -19
  51. package/dist/servidor/observador.js.map +1 -1
  52. package/dist/servidor/painel.js +13 -3
  53. package/dist/servidor/painel.js.map +1 -1
  54. package/dist/update/comparar.js +2 -2
  55. package/dist/update/comparar.js.map +1 -1
  56. package/dist/watch/desenho/barra.d.ts +29 -0
  57. package/dist/watch/desenho/barra.js +111 -0
  58. package/dist/watch/desenho/barra.js.map +1 -0
  59. package/dist/watch/desenho/desenhar.d.ts +15 -2
  60. package/dist/watch/desenho/desenhar.js +65 -11
  61. package/dist/watch/desenho/desenhar.js.map +1 -1
  62. package/dist/watch/desenho/painel.d.ts +14 -0
  63. package/dist/watch/desenho/painel.js +260 -0
  64. package/dist/watch/desenho/painel.js.map +1 -0
  65. package/dist/watch/fontes/estado-schema.d.ts +7 -0
  66. package/dist/watch/opcoes.d.ts +2 -0
  67. package/dist/watch/opcoes.js +11 -4
  68. package/dist/watch/opcoes.js.map +1 -1
  69. package/dist/watch/terminal/tela.d.ts +15 -12
  70. package/dist/watch/terminal/tela.js +79 -3
  71. package/dist/watch/terminal/tela.js.map +1 -1
  72. package/dist/watch/visao/atividade.d.ts +70 -0
  73. package/dist/watch/visao/atividade.js +0 -0
  74. package/dist/watch/visao/atividade.js.map +1 -0
  75. package/dist/watch/visao/frota.d.ts +46 -0
  76. package/dist/watch/visao/frota.js +67 -0
  77. package/dist/watch/visao/frota.js.map +1 -0
  78. package/dist/watch/visao/projetar.d.ts +9 -0
  79. package/dist/watch/visao/projetar.js +55 -0
  80. package/dist/watch/visao/projetar.js.map +1 -1
  81. package/dist/watch/watch.d.ts +2 -0
  82. package/dist/watch/watch.js +48 -3
  83. package/dist/watch/watch.js.map +1 -1
  84. package/nucleo/hooks/expx-lembrete.sh +136 -0
  85. package/package.json +1 -1
@@ -1,10 +1,16 @@
1
1
  /**
2
- * As sete skills do ecossistema Expx.
2
+ * As oito 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
6
6
  * modificam o comportamento da sprintx/runx em vez de agir por conta própria
7
7
  * (ver `docs/expx-cli/base/08-repositorios-reais.md`).
8
+ *
9
+ * A buildx não é camada, e também não é irmã das outras: ela ORQUESTRA a
10
+ * sprintx e a mergex feature a feature. Sem elas instaladas não roda — mas o
11
+ * `init` não modela dependência entre skills, e criar esse conceito por uma
12
+ * única aresta custaria mais do que a skill avisar em tempo de execução, que é
13
+ * o que ela faz.
8
14
  */
9
15
  export type Skill = {
10
16
  nome: string;
@@ -1,11 +1,5 @@
1
- /**
2
- * As sete skills do ecossistema Expx.
3
- *
4
- * Fonte única do que o CLI sabe instalar. `papel` é o texto mostrado na seleção
5
- * do `init`; `camada` marca as skills que, sozinhas, não fazem nada — elas
6
- * modificam o comportamento da sprintx/runx em vez de agir por conta própria
7
- * (ver `docs/expx-cli/base/08-repositorios-reais.md`).
8
- */
1
+ import { readdirSync, statSync } from "node:fs";
2
+ import { join } from "node:path";
9
3
  export const CATALOGO = [
10
4
  {
11
5
  nome: "sprintx",
@@ -49,11 +43,81 @@ export const CATALOGO = [
49
43
  papel: "camada de produto, decide se o pedido vira trabalho",
50
44
  camada: true,
51
45
  },
46
+ {
47
+ nome: "buildx",
48
+ repositorio: "https://github.com/bittencourtthulio/buildx",
49
+ papel: "orquestra um projeto inteiro, da descricao ao sistema pronto",
50
+ camada: false,
51
+ },
52
52
  ];
53
53
  /** Os nomes na ordem em que a seleção do `init` os apresenta. */
54
54
  export const NOMES = CATALOGO.map((s) => s.nome);
55
+ /**
56
+ * As pastas em que uma skill pode estar, dentro da raiz de desenvolvimento.
57
+ *
58
+ * Os repositórios reais não seguem uma capitalização só (`RunX`, `MemoX`,
59
+ * `SprintX`, mas `Legadox` e `ProdX`), e o macOS não diferencia maiúscula de
60
+ * minúscula enquanto o Linux diferencia. Tentar as variações torna o override
61
+ * previsível nos dois sistemas.
62
+ */
63
+ function candidatasLocais(nome) {
64
+ const capitalizado = nome.charAt(0).toUpperCase() + nome.slice(1);
65
+ const camelX = capitalizado.replace(/x$/, "X");
66
+ return [...new Set([nome, capitalizado, camelX])];
67
+ }
68
+ /**
69
+ * A raiz onde procurar clones locais das skills, quando definida.
70
+ *
71
+ * Serve ao desenvolvimento das próprias skills: sem isto, testar uma alteração
72
+ * num projeto real exige commitar e publicar a cada tentativa, porque o `init`
73
+ * só sabe clonar do GitHub.
74
+ *
75
+ * EXPX_SKILLS_LOCAIS=~/Documents/Projetos npx expxdev init --skills runx --yes
76
+ *
77
+ * Não é um caminho de código novo na busca: `git clone` aceita caminho de
78
+ * sistema de arquivos como origem, então a skill local percorre exatamente o
79
+ * mesmo fluxo da remota — mesmo clone, mesmo commit registrado no lock, mesma
80
+ * montagem. O que muda é só a origem.
81
+ */
82
+ function raizLocal() {
83
+ const v = process.env["EXPX_SKILLS_LOCAIS"];
84
+ return v === undefined || v.trim() === "" ? undefined : v.trim();
85
+ }
55
86
  export function buscarNoCatalogo(nome) {
56
- return CATALOGO.find((s) => s.nome === nome);
87
+ const s = CATALOGO.find((x) => x.nome === nome);
88
+ if (s === undefined)
89
+ return undefined;
90
+ const raiz = raizLocal();
91
+ if (raiz === undefined)
92
+ return s;
93
+ // A pasta é procurada na LISTAGEM, e não com `statSync` em cada candidata:
94
+ // no macOS, que não diferencia maiúscula de minúscula, `statSync("runx")`
95
+ // encontra a pasta `RunX` e devolveria um caminho com a grafia errada — que
96
+ // funciona no mac e quebra no Linux, o pior dos dois mundos.
97
+ let entradas;
98
+ try {
99
+ entradas = readdirSync(raiz);
100
+ }
101
+ catch {
102
+ return s; // raiz local inexistente: segue pelo GitHub
103
+ }
104
+ // Pasta ausente cai de volta para o GitHub em vez de falhar: a raiz local
105
+ // costuma ter só as skills em que se está mexendo, e uma origem inexistente
106
+ // produziria erro de clone — que se leria como falha de rede, escondendo a
107
+ // causa real.
108
+ for (const c of candidatasLocais(nome)) {
109
+ if (!entradas.includes(c))
110
+ continue;
111
+ const caminho = join(raiz, c);
112
+ try {
113
+ if (statSync(caminho).isDirectory())
114
+ return { ...s, repositorio: caminho };
115
+ }
116
+ catch {
117
+ continue;
118
+ }
119
+ }
120
+ return s;
57
121
  }
58
122
  /** Camada é skill que sozinha não faz nada: precisa de sprintx ou runx junto. */
59
123
  export function ehCamada(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;IACD;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,4CAA4C;QACzD,KAAK,EAAE,qDAAqD;QAC5D,MAAM,EAAE,IAAI;KACb;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
+ {"version":3,"file":"catalogo.js","sourceRoot":"","sources":["../../src/nucleo/catalogo.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,14 @@ export type Layout = {
17
17
  raizSkill: string;
18
18
  comandos: string[];
19
19
  hooks: string[];
20
+ /**
21
+ * A pasta de hooks do repositório inteira (`.claude/hooks/`), quando ela
22
+ * existe. É o que o plugin precisa levar: os hooks reais das skills vivem
23
+ * em SUBPASTAS (`hooks/runx/`, `hooks/comum/`) e são chamados por um
24
+ * despachante que referencia esses caminhos. Copiar só os arquivos soltos
25
+ * de `hooks` deixava o plugin sem nenhum hook — medido em produção.
26
+ */
27
+ arvoreHooks?: string;
20
28
  } | {
21
29
  ok: false;
22
30
  erro: string;
@@ -89,6 +89,26 @@ function acharHooks(raiz, nome) {
89
89
  }
90
90
  return [];
91
91
  }
92
+ /**
93
+ * A pasta de hooks do repositório, quando existe.
94
+ *
95
+ * Devolve o DIRETÓRIO, não os arquivos: os hooks reais são chamados por um
96
+ * despachante com caminhos relativos (`comum/rastro`, `runx/escopo-da-task`),
97
+ * então a estrutura tem que chegar inteira ao plugin ou nenhum deles resolve.
98
+ */
99
+ function acharArvoreHooks(raiz) {
100
+ for (const c of CANDIDATAS_HOOKS) {
101
+ const dir = join(raiz, c);
102
+ try {
103
+ if (statSync(dir).isDirectory())
104
+ return dir;
105
+ }
106
+ catch {
107
+ continue;
108
+ }
109
+ }
110
+ return undefined;
111
+ }
92
112
  export function detectarLayout(raizRepo, nomeEsperado) {
93
113
  const skillMd = acharSkillMd(raizRepo);
94
114
  if (skillMd === undefined)
@@ -98,12 +118,14 @@ export function detectarLayout(raizRepo, nomeEsperado) {
98
118
  if (nome !== nomeEsperado) {
99
119
  return { ok: false, erro: `nome da skill e "${nome}", esperado "${nomeEsperado}"` };
100
120
  }
121
+ const arvore = acharArvoreHooks(raizRepo);
101
122
  return {
102
123
  ok: true,
103
124
  nome,
104
125
  raizSkill,
105
126
  comandos: acharComandos(raizRepo, nome),
106
127
  hooks: acharHooks(raizRepo, nome),
128
+ ...(arvore !== undefined ? { arvoreHooks: arvore } : {}),
107
129
  };
108
130
  }
109
131
  //# 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,8 +6,20 @@ import type { ExpxTool, Estagio, StatusTrabalho, TipoTrabalho, TipoOcorrencia }
6
6
  * `docs/manutencao/<id>-<slug>/` descreve onde as skills gravam, não uma
7
7
  * restrição de busca.
8
8
  *
9
- * Pasta sem ORQUESTRADOR é ignorada em silêncio (decisão D-12): `docs/` tem
10
- * pastas legítimas que não são trabalho.
9
+ * Pasta sem ORQUESTRADOR **nem** `00-OCORRENCIA.md` é ignorada em silêncio
10
+ * (decisão D-12): `docs/` tem pastas legítimas que não são trabalho.
11
+ *
12
+ * ## Por que o `00-OCORRENCIA.md` também abre trabalho
13
+ *
14
+ * O `ORQUESTRADOR.md` só nasce no E2 (`references/02-plano.md`, passo 4). Entre
15
+ * o E1 e o E2 a ocorrência já existe em disco, já tem id, título e ferramenta —
16
+ * e era invisível ao painel e ao watch, que anunciavam "nenhum trabalho aberto"
17
+ * enquanto a investigação rodava. Essa é justamente a janela em que a pessoa
18
+ * mais olha a tela, e a que mais leva tempo.
19
+ *
20
+ * O orquestrador continua sendo a fonte autoritativa: quando ele existe, é ele
21
+ * que descreve o trabalho. A ocorrência só preenche a lacuna do período em que
22
+ * ele ainda não foi escrito, com o que o próprio `00-OCORRENCIA.md` declara.
11
23
  */
12
24
  export type Trabalho = {
13
25
  trabalho_id: string;
@@ -1,10 +1,54 @@
1
1
  import { basename, dirname } from "node:path";
2
2
  import { varrerCandidatos } from "./varredura.js";
3
3
  import { lerArquivoDeEstado } from "../leitura/arquivo.js";
4
+ /**
5
+ * O estágio de uma ocorrência ainda sem plano, deduzido do que há na pasta.
6
+ *
7
+ * Só existem dois casos possíveis aqui — com `ORQUESTRADOR.md` o trabalho nem
8
+ * chega nesta função. O `01-CAUSA-RAIZ.md` é o artefato que fecha o E1
9
+ * (`references/01-investigacao.md`), então a presença dele é a fronteira.
10
+ */
11
+ function estagioSemPlano(pasta, aceitos) {
12
+ const temCausaRaiz = aceitos.some((a) => a.kind === "causa_raiz" && dirname(a.arquivo) === pasta);
13
+ return temCausaRaiz ? "e2" : "e1";
14
+ }
15
+ /**
16
+ * Constrói o trabalho a partir do `00-OCORRENCIA.md`, para o período em que o
17
+ * `ORQUESTRADOR.md` ainda não existe.
18
+ *
19
+ * Os campos que só o plano conhece recebem o valor de "ainda não há": nenhuma
20
+ * sprint declarada, nenhum caminho crítico, nada concluído. `status` é
21
+ * `em_andamento` porque uma ocorrência registrada e sem plano é exatamente
22
+ * isso — trabalho aberto, e é o que a tela precisa dizer.
23
+ */
24
+ function daOcorrencia(a, aceitos) {
25
+ const d = a.dados;
26
+ const pasta = dirname(a.arquivo);
27
+ const recebido = d["recebido_em"] ?? "";
28
+ return {
29
+ trabalho_id: String(d["trabalho_id"] ?? ""),
30
+ titulo: String(d["titulo"] ?? ""),
31
+ pasta,
32
+ arquivo: a.arquivo,
33
+ expx_tool: d["expx_tool"] ?? "runx",
34
+ tipo_trabalho: "ocorrencia",
35
+ tipo_ocorrencia: d["tipo_ocorrencia"] ?? null,
36
+ estagio: estagioSemPlano(pasta, aceitos),
37
+ status: "em_andamento",
38
+ criado_em: recebido,
39
+ atualizado_em: d["atualizado_em"] ?? recebido,
40
+ concluido_em: null,
41
+ sprints: [],
42
+ caminho_critico: [],
43
+ linhas: a.linhas,
44
+ };
45
+ }
4
46
  export function descobrirTrabalhos(raiz) {
5
47
  const trabalhos = [];
6
48
  const rejeicoes = [];
7
49
  const aceitos = [];
50
+ /** As ocorrências vistas, para completar as pastas que não têm plano. */
51
+ const ocorrencias = [];
8
52
  for (const caminho of varrerCandidatos(raiz)) {
9
53
  const r = lerArquivoDeEstado(caminho);
10
54
  if (r.tipo === "rejeitado") {
@@ -12,6 +56,10 @@ export function descobrirTrabalhos(raiz) {
12
56
  continue;
13
57
  }
14
58
  aceitos.push(r);
59
+ if (r.kind === "ocorrencia" && basename(caminho) === "00-OCORRENCIA.md") {
60
+ ocorrencias.push(r);
61
+ continue;
62
+ }
15
63
  if (r.kind !== "orquestrador" || basename(caminho) !== "ORQUESTRADOR.md")
16
64
  continue;
17
65
  const d = r.dados;
@@ -22,6 +70,17 @@ export function descobrirTrabalhos(raiz) {
22
70
  linhas: r.linhas,
23
71
  });
24
72
  }
73
+ // O orquestrador é a fonte autoritativa: a ocorrência só entra quando a
74
+ // pasta dela ainda não tem plano. Comparar por PASTA, e não por
75
+ // `trabalho_id`, porque o id da ocorrência pode divergir do plano por erro
76
+ // de digitação — e nesse caso duplicar a linha na tela esconderia o defeito
77
+ // em vez de mostrá-lo.
78
+ const comPlano = new Set(trabalhos.map((t) => t.pasta));
79
+ for (const o of ocorrencias) {
80
+ if (comPlano.has(dirname(o.arquivo)))
81
+ continue;
82
+ trabalhos.push(daOcorrencia(o, aceitos));
83
+ }
25
84
  trabalhos.sort((a, b) => a.trabalho_id.localeCompare(b.trabalho_id));
26
85
  return { trabalhos, rejeicoes, aceitos };
27
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"trabalhos.js","sourceRoot":"","sources":["../../../src/parser/descoberta/trabalhos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAuC3D,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEhB,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,iBAAiB;YAAE,SAAS;QAEnF,MAAM,CAAC,GAAG,CAAC,CAAC,KAAkE,CAAC;QAC/E,SAAS,CAAC,IAAI,CAAC;YACb,GAAG,CAAC;YACJ,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC;YACvB,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM;SACjB,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IACrE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"trabalhos.js","sourceRoot":"","sources":["../../../src/parser/descoberta/trabalhos.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { z } from "zod";
2
2
  /** Versão do contrato que este painel sabe ler (decisão D-09). */
3
3
  export declare const VERSAO_SUPORTADA = 1;
4
- /** Os treze kinds que o painel reconhece. */
5
- export declare const KINDS: readonly ["orquestrador", "sprint", "fases", "tasks", "bloqueios", "decisoes", "ocorrencia", "causa_raiz", "qa", "base_indice", "relatorio_tecnico", "relatorio_uso", "relatorios_indice"];
4
+ /** Os dezenove kinds que o painel reconhece. */
5
+ export declare const KINDS: readonly ["orquestrador", "sprint", "fases", "tasks", "bloqueios", "decisoes", "ocorrencia", "causa_raiz", "qa", "base_indice", "relatorio_tecnico", "relatorio_uso", "relatorios_indice", "projeto", "premissas", "mapa", "recursao", "validacao", "relatorio"];
6
6
  export declare const Kind: z.ZodEnum<{
7
7
  ocorrencia: "ocorrencia";
8
8
  causa_raiz: "causa_raiz";
@@ -17,12 +17,21 @@ export declare const Kind: z.ZodEnum<{
17
17
  relatorio_tecnico: "relatorio_tecnico";
18
18
  relatorio_uso: "relatorio_uso";
19
19
  relatorios_indice: "relatorios_indice";
20
+ projeto: "projeto";
21
+ premissas: "premissas";
22
+ mapa: "mapa";
23
+ recursao: "recursao";
24
+ validacao: "validacao";
25
+ relatorio: "relatorio";
20
26
  }>;
21
27
  export type Kind = z.infer<typeof Kind>;
22
28
  /**
23
- * `relatorios_indice` é o único kind sem `trabalho_id`: o índice é do sistema
24
- * inteiro, não de um trabalho. Exigir as quatro chaves cegamente rejeitaria
25
- * justamente a fonte da linha do tempo do histórico.
29
+ * Kinds sem `trabalho_id`. Exigir as quatro chaves cegamente rejeitaria
30
+ * justamente as fontes que descrevem o sistema inteiro.
31
+ *
32
+ * Dois casos distintos: `relatorios_indice` é o índice de todos os trabalhos;
33
+ * os seis da buildx são o estado do PROJETO, um nível acima de trabalho, e
34
+ * usam `projeto_id` como chave.
26
35
  */
27
36
  export declare const KINDS_SEM_TRABALHO_ID: readonly Kind[];
28
37
  /**
@@ -35,6 +44,7 @@ export declare const Cabecalho: z.ZodObject<{
35
44
  expx_tool: z.ZodEnum<{
36
45
  sprintx: "sprintx";
37
46
  runx: "runx";
47
+ buildx: "buildx";
38
48
  }>;
39
49
  kind: z.ZodEnum<{
40
50
  ocorrencia: "ocorrencia";
@@ -50,6 +60,12 @@ export declare const Cabecalho: z.ZodObject<{
50
60
  relatorio_tecnico: "relatorio_tecnico";
51
61
  relatorio_uso: "relatorio_uso";
52
62
  relatorios_indice: "relatorios_indice";
63
+ projeto: "projeto";
64
+ premissas: "premissas";
65
+ mapa: "mapa";
66
+ recursao: "recursao";
67
+ validacao: "validacao";
68
+ relatorio: "relatorio";
53
69
  }>;
54
70
  trabalho_id: z.ZodOptional<z.ZodString>;
55
71
  }, z.core.$loose>;
@@ -2,7 +2,7 @@ import { z } from "zod";
2
2
  import { ExpxTool } from "./enums.js";
3
3
  /** Versão do contrato que este painel sabe ler (decisão D-09). */
4
4
  export const VERSAO_SUPORTADA = 1;
5
- /** Os treze kinds que o painel reconhece. */
5
+ /** Os dezenove kinds que o painel reconhece. */
6
6
  export const KINDS = [
7
7
  "orquestrador",
8
8
  "sprint",
@@ -17,14 +17,33 @@ export const KINDS = [
17
17
  "relatorio_tecnico",
18
18
  "relatorio_uso",
19
19
  "relatorios_indice",
20
+ // buildx — estado do PROJETO, não de um trabalho. Por isso nenhum deles tem
21
+ // `trabalho_id`: a chave que os costura é `projeto_id`.
22
+ "projeto",
23
+ "premissas",
24
+ "mapa",
25
+ "recursao",
26
+ "validacao",
27
+ "relatorio",
20
28
  ];
21
29
  export const Kind = z.enum(KINDS);
22
30
  /**
23
- * `relatorios_indice` é o único kind sem `trabalho_id`: o índice é do sistema
24
- * inteiro, não de um trabalho. Exigir as quatro chaves cegamente rejeitaria
25
- * justamente a fonte da linha do tempo do histórico.
31
+ * Kinds sem `trabalho_id`. Exigir as quatro chaves cegamente rejeitaria
32
+ * justamente as fontes que descrevem o sistema inteiro.
33
+ *
34
+ * Dois casos distintos: `relatorios_indice` é o índice de todos os trabalhos;
35
+ * os seis da buildx são o estado do PROJETO, um nível acima de trabalho, e
36
+ * usam `projeto_id` como chave.
26
37
  */
27
- export const KINDS_SEM_TRABALHO_ID = ["relatorios_indice"];
38
+ export const KINDS_SEM_TRABALHO_ID = [
39
+ "relatorios_indice",
40
+ "projeto",
41
+ "premissas",
42
+ "mapa",
43
+ "recursao",
44
+ "validacao",
45
+ "relatorio",
46
+ ];
28
47
  /**
29
48
  * O cabeçalho comum. `expx_schema` é validado como número; a rejeição por
30
49
  * versão futura é tratada à parte, com motivo próprio, para dar a mensagem
@@ -1 +1 @@
1
- {"version":3,"file":"cabecalho.js","sourceRoot":"","sources":["../../../src/parser/esquema/cabecalho.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,kEAAkE;AAClE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC,6CAA6C;AAC7C,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,cAAc;IACd,QAAQ;IACR,OAAO;IACP,OAAO;IACP,WAAW;IACX,UAAU;IACV,YAAY;IACZ,YAAY;IACZ,IAAI;IACJ,aAAa;IACb,mBAAmB;IACnB,eAAe;IACf,mBAAmB;CACX,CAAC;AAEX,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAGlC;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAoB,CAAC,mBAAmB,CAAC,CAAC;AAE5E;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC;KACvB,MAAM,CAAC;IACN,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC7B,SAAS,EAAE,QAAQ;IACnB,IAAI,EAAE,IAAI;IACV,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACjD,CAAC;KACD,WAAW,EAAE;KACb,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,EAClF,EAAE,OAAO,EAAE,sCAAsC,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,CAC3E,CAAC;AAIJ,qFAAqF;AACrF,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC7D,MAAM,CAAC,GAAI,KAAiC,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC7D,MAAM,CAAC,GAAI,KAAiC,CAAC,aAAa,CAAC,CAAC;IAC5D,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"cabecalho.js","sourceRoot":"","sources":["../../../src/parser/esquema/cabecalho.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,kEAAkE;AAClE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC,gDAAgD;AAChD,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,cAAc;IACd,QAAQ;IACR,OAAO;IACP,OAAO;IACP,WAAW;IACX,UAAU;IACV,YAAY;IACZ,YAAY;IACZ,IAAI;IACJ,aAAa;IACb,mBAAmB;IACnB,eAAe;IACf,mBAAmB;IACnB,4EAA4E;IAC5E,wDAAwD;IACxD,SAAS;IACT,WAAW;IACX,MAAM;IACN,UAAU;IACV,WAAW;IACX,WAAW;CACH,CAAC;AAEX,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAGlC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAoB;IACpD,mBAAmB;IACnB,SAAS;IACT,WAAW;IACX,MAAM;IACN,UAAU;IACV,WAAW;IACX,WAAW;CACZ,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC;KACvB,MAAM,CAAC;IACN,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC7B,SAAS,EAAE,QAAQ;IACnB,IAAI,EAAE,IAAI;IACV,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACjD,CAAC;KACD,WAAW,EAAE;KACb,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,EAClF,EAAE,OAAO,EAAE,sCAAsC,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,CAC3E,CAAC;AAIJ,qFAAqF;AACrF,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC7D,MAAM,CAAC,GAAI,KAAiC,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC7D,MAAM,CAAC,GAAI,KAAiC,CAAC,aAAa,CAAC,CAAC;IAC5D,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjE,CAAC"}
@@ -12,23 +12,31 @@ import { z } from "zod";
12
12
  * status de trabalho, sprint e fase usa o masculino (`concluido`, `bloqueado`).
13
13
  */
14
14
  /**
15
- * `expx_tool` — quem ESCREVEU um artefato de estado. 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.
15
+ * `expx_tool` — quem ESCREVEU um artefato de estado. A sprintx, a runx e a
16
+ * buildx escrevem frontmatter `expx-schema`; as demais skills do método não têm
17
+ * kind próprio nesse contrato.
18
+ *
19
+ * A buildx entrou depois das outras duas: ela grava o estado do PROJETO
20
+ * (`projeto`, `mapa`, `premissas`, `recursao`, `validacao`, `relatorio`),
21
+ * enquanto sprintx e runx gravam o estado de um TRABALHO. São níveis
22
+ * diferentes, e por isso a buildx tem estágios próprios (`b1`..`b6`) em vez de
23
+ * reusar os de feature ou de ocorrência.
18
24
  *
19
25
  * Não confundir com `ferramenta`, do rastro de eventos (`Ferramenta`, abaixo),
20
- * que aceita as sete. Tratar os dois como o mesmo enum rejeita o rastro de
26
+ * que aceita as oito. Tratar os dois como o mesmo enum rejeita o rastro de
21
27
  * cinco skills.
22
28
  */
23
29
  export declare const ExpxTool: z.ZodEnum<{
24
30
  sprintx: "sprintx";
25
31
  runx: "runx";
32
+ buildx: "buildx";
26
33
  }>;
27
34
  export type ExpxTool = z.infer<typeof ExpxTool>;
28
35
  /** `ferramenta` — quem EMITIU um evento no rastro. Todas as skills emitem. */
29
36
  export declare const Ferramenta: z.ZodEnum<{
30
37
  sprintx: "sprintx";
31
38
  runx: "runx";
39
+ buildx: "buildx";
32
40
  mergex: "mergex";
33
41
  legadox: "legadox";
34
42
  stackx: "stackx";
@@ -55,6 +63,8 @@ export type TipoOcorrencia = z.infer<typeof TipoOcorrencia>;
55
63
  export declare const ESTAGIOS_SPRINTX: readonly ["f1", "f2", "f3", "f4", "f5", "f6"];
56
64
  /** Estágios da runx: E1 investigação → E5 relatório. */
57
65
  export declare const ESTAGIOS_RUNX: readonly ["e1", "e2", "e3", "e4", "e5"];
66
+ /** Estágios da buildx: B1 concepção → B6 validação. */
67
+ export declare const ESTAGIOS_BUILDX: readonly ["b1", "b2", "b3", "b4", "b5", "b6"];
58
68
  export declare const Estagio: z.ZodEnum<{
59
69
  f1: "f1";
60
70
  f2: "f2";
@@ -67,6 +77,12 @@ export declare const Estagio: z.ZodEnum<{
67
77
  e3: "e3";
68
78
  e4: "e4";
69
79
  e5: "e5";
80
+ b1: "b1";
81
+ b2: "b2";
82
+ b3: "b3";
83
+ b4: "b4";
84
+ b5: "b5";
85
+ b6: "b6";
70
86
  }>;
71
87
  export type Estagio = z.infer<typeof Estagio>;
72
88
  /** Status de trabalho, sprint e fase — vocabulário masculino. */
@@ -102,6 +118,27 @@ export declare const Veredito: z.ZodEnum<{
102
118
  reprovado: "reprovado";
103
119
  }>;
104
120
  export type Veredito = z.infer<typeof Veredito>;
121
+ /**
122
+ * `modo` da buildx — como o projeto inteiro é conduzido. Escolhido na pergunta
123
+ * única, que é a única que a buildx faz ao usuário.
124
+ */
125
+ export declare const ModoBuildx: z.ZodEnum<{
126
+ autonomo: "autonomo";
127
+ briefing: "briefing";
128
+ }>;
129
+ export type ModoBuildx = z.infer<typeof ModoBuildx>;
130
+ /**
131
+ * `veredito` da validação da buildx (B6). Enum próprio, e não o `Veredito` de
132
+ * dois valores: a buildx precisa distinguir a entrega íntegra da entrega com
133
+ * pendência declarada, e apagar essa diferença esconderia justamente o que o
134
+ * relatório final existe para mostrar.
135
+ */
136
+ export declare const VereditoBuildx: z.ZodEnum<{
137
+ aprovado: "aprovado";
138
+ reprovado: "reprovado";
139
+ aprovado_com_pendencia: "aprovado_com_pendencia";
140
+ }>;
141
+ export type VereditoBuildx = z.infer<typeof VereditoBuildx>;
105
142
  export declare const Severidade: z.ZodEnum<{
106
143
  alta: "alta";
107
144
  media: "media";
@@ -12,15 +12,21 @@ import { z } from "zod";
12
12
  * status de trabalho, sprint e fase usa o masculino (`concluido`, `bloqueado`).
13
13
  */
14
14
  /**
15
- * `expx_tool` — quem ESCREVEU um artefato de estado. 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.
15
+ * `expx_tool` — quem ESCREVEU um artefato de estado. A sprintx, a runx e a
16
+ * buildx escrevem frontmatter `expx-schema`; as demais skills do método não têm
17
+ * kind próprio nesse contrato.
18
+ *
19
+ * A buildx entrou depois das outras duas: ela grava o estado do PROJETO
20
+ * (`projeto`, `mapa`, `premissas`, `recursao`, `validacao`, `relatorio`),
21
+ * enquanto sprintx e runx gravam o estado de um TRABALHO. São níveis
22
+ * diferentes, e por isso a buildx tem estágios próprios (`b1`..`b6`) em vez de
23
+ * reusar os de feature ou de ocorrência.
18
24
  *
19
25
  * Não confundir com `ferramenta`, do rastro de eventos (`Ferramenta`, abaixo),
20
- * que aceita as sete. Tratar os dois como o mesmo enum rejeita o rastro de
26
+ * que aceita as oito. Tratar os dois como o mesmo enum rejeita o rastro de
21
27
  * cinco skills.
22
28
  */
23
- export const ExpxTool = z.enum(["sprintx", "runx"]);
29
+ export const ExpxTool = z.enum(["sprintx", "runx", "buildx"]);
24
30
  /** `ferramenta` — quem EMITIU um evento no rastro. Todas as skills emitem. */
25
31
  export const Ferramenta = z.enum([
26
32
  "sprintx",
@@ -30,6 +36,7 @@ export const Ferramenta = z.enum([
30
36
  "stackx",
31
37
  "memox",
32
38
  "prodx",
39
+ "buildx",
33
40
  ]);
34
41
  export const TipoTrabalho = z.enum(["feature", "ocorrencia"]);
35
42
  export const TipoOcorrencia = z.enum([
@@ -45,7 +52,9 @@ export const TipoOcorrencia = z.enum([
45
52
  export const ESTAGIOS_SPRINTX = ["f1", "f2", "f3", "f4", "f5", "f6"];
46
53
  /** Estágios da runx: E1 investigação → E5 relatório. */
47
54
  export const ESTAGIOS_RUNX = ["e1", "e2", "e3", "e4", "e5"];
48
- export const Estagio = z.enum([...ESTAGIOS_SPRINTX, ...ESTAGIOS_RUNX]);
55
+ /** Estágios da buildx: B1 concepção → B6 validação. */
56
+ export const ESTAGIOS_BUILDX = ["b1", "b2", "b3", "b4", "b5", "b6"];
57
+ export const Estagio = z.enum([...ESTAGIOS_SPRINTX, ...ESTAGIOS_RUNX, ...ESTAGIOS_BUILDX]);
49
58
  /** Status de trabalho, sprint e fase — vocabulário masculino. */
50
59
  export const StatusTrabalho = z.enum(["nao_iniciado", "em_andamento", "bloqueado", "concluido"]);
51
60
  /** Status de task — vocabulário feminino. */
@@ -54,6 +63,18 @@ export const StatusTask = z.enum(["pendente", "em_andamento", "concluida", "bloq
54
63
  export const StatusDecisao = z.enum(["fechada", "pendente"]);
55
64
  export const Suite = z.enum(["verde", "vermelha", "nao_executada"]);
56
65
  export const Veredito = z.enum(["aprovado", "reprovado"]);
66
+ /**
67
+ * `modo` da buildx — como o projeto inteiro é conduzido. Escolhido na pergunta
68
+ * única, que é a única que a buildx faz ao usuário.
69
+ */
70
+ export const ModoBuildx = z.enum(["autonomo", "briefing"]);
71
+ /**
72
+ * `veredito` da validação da buildx (B6). Enum próprio, e não o `Veredito` de
73
+ * dois valores: a buildx precisa distinguir a entrega íntegra da entrega com
74
+ * pendência declarada, e apagar essa diferença esconderia justamente o que o
75
+ * relatório final existe para mostrar.
76
+ */
77
+ export const VereditoBuildx = z.enum(["aprovado", "aprovado_com_pendencia", "reprovado"]);
57
78
  export const Severidade = z.enum(["alta", "media", "baixa"]);
58
79
  export const ModoCausaRaiz = z.enum(["causa_raiz", "analise_impacto"]);
59
80
  export const Evidencia = z.enum(["teste_falho", "log", "codigo"]);
@@ -74,10 +95,19 @@ export const DataIso = z
74
95
  export const TextoUmaLinha = z.string().trim().min(1).refine((s) => !s.includes("\n"), {
75
96
  message: "campo de texto do YAML e de uma linha",
76
97
  });
98
+ /**
99
+ * Os estágios de cada ferramenta. Mapa explícito, e não um ternário: com três
100
+ * ferramentas, `tool === "sprintx" ? ... : ...` mandaria a buildx para os
101
+ * estágios da runx em silêncio, e a violação apareceria como estágio incoerente
102
+ * num arquivo correto.
103
+ */
104
+ const ESTAGIOS_POR_TOOL = {
105
+ sprintx: ESTAGIOS_SPRINTX,
106
+ runx: ESTAGIOS_RUNX,
107
+ buildx: ESTAGIOS_BUILDX,
108
+ };
77
109
  /** Um estágio pertence à ferramenta que gravou o arquivo? (decisão D-10) */
78
110
  export function estagioCoerenteCom(tool, estagio) {
79
- return tool === "sprintx"
80
- ? ESTAGIOS_SPRINTX.includes(estagio)
81
- : ESTAGIOS_RUNX.includes(estagio);
111
+ return ESTAGIOS_POR_TOOL[tool].includes(estagio);
82
112
  }
83
113
  //# sourceMappingURL=enums.js.map
@@ -1 +1 @@
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;IACP,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"}
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/parser/esquema/enums.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,7 @@ export declare const LinhaEvento: z.ZodObject<{
54
54
  ferramenta: z.ZodEnum<{
55
55
  sprintx: "sprintx";
56
56
  runx: "runx";
57
+ buildx: "buildx";
57
58
  mergex: "mergex";
58
59
  legadox: "legadox";
59
60
  stackx: "stackx";