expxdev 0.4.1 → 0.5.1

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 (79) hide show
  1. package/README.md +27 -9
  2. package/dist/cli/autonomo.d.ts +21 -0
  3. package/dist/cli/autonomo.js +37 -0
  4. package/dist/cli/autonomo.js.map +1 -0
  5. package/dist/cli/expx.js +6 -0
  6. package/dist/cli/expx.js.map +1 -1
  7. package/dist/cli/principal.js +39 -10
  8. package/dist/cli/principal.js.map +1 -1
  9. package/dist/cli/selecao.js +3 -0
  10. package/dist/cli/selecao.js.map +1 -1
  11. package/dist/cli/subcomandos.d.ts +4 -1
  12. package/dist/cli/subcomandos.js +9 -2
  13. package/dist/cli/subcomandos.js.map +1 -1
  14. package/dist/nucleo/caminhos.d.ts +1 -1
  15. package/dist/nucleo/catalogo.d.ts +1 -1
  16. package/dist/nucleo/catalogo.js +7 -1
  17. package/dist/nucleo/catalogo.js.map +1 -1
  18. package/dist/nucleo/layout.d.ts +2 -2
  19. package/dist/nucleo/versao.d.ts +1 -1
  20. package/dist/parser/esquema/enums.d.ts +3 -2
  21. package/dist/parser/esquema/enums.js +3 -2
  22. package/dist/parser/esquema/enums.js.map +1 -1
  23. package/dist/parser/esquema/evento.d.ts +1 -0
  24. package/dist/servidor/http.d.ts +11 -0
  25. package/dist/servidor/http.js +31 -1
  26. package/dist/servidor/http.js.map +1 -1
  27. package/dist/watch/desenho/arvore.d.ts +3 -0
  28. package/dist/watch/desenho/arvore.js +62 -0
  29. package/dist/watch/desenho/arvore.js.map +1 -0
  30. package/dist/watch/desenho/bloqueios.d.ts +5 -0
  31. package/dist/watch/desenho/bloqueios.js +41 -0
  32. package/dist/watch/desenho/bloqueios.js.map +1 -0
  33. package/dist/watch/desenho/cabecalho.d.ts +11 -0
  34. package/dist/watch/desenho/cabecalho.js +49 -0
  35. package/dist/watch/desenho/cabecalho.js.map +1 -0
  36. package/dist/watch/desenho/cor.d.ts +44 -0
  37. package/dist/watch/desenho/cor.js +66 -0
  38. package/dist/watch/desenho/cor.js.map +1 -0
  39. package/dist/watch/desenho/desenhar.d.ts +16 -0
  40. package/dist/watch/desenho/desenhar.js +54 -0
  41. package/dist/watch/desenho/desenhar.js.map +1 -0
  42. package/dist/watch/desenho/eventos.d.ts +3 -0
  43. package/dist/watch/desenho/eventos.js +37 -0
  44. package/dist/watch/desenho/eventos.js.map +1 -0
  45. package/dist/watch/desenho/largura.d.ts +23 -0
  46. package/dist/watch/desenho/largura.js +42 -0
  47. package/dist/watch/desenho/largura.js.map +1 -0
  48. package/dist/watch/desenho/lista.d.ts +9 -0
  49. package/dist/watch/desenho/lista.js +28 -0
  50. package/dist/watch/desenho/lista.js.map +1 -0
  51. package/dist/watch/fontes/estado-schema.d.ts +1 -0
  52. package/dist/watch/fontes/observar.d.ts +32 -0
  53. package/dist/watch/fontes/observar.js +101 -0
  54. package/dist/watch/fontes/observar.js.map +1 -0
  55. package/dist/watch/fontes/raiz.d.ts +12 -0
  56. package/dist/watch/fontes/raiz.js +25 -0
  57. package/dist/watch/fontes/raiz.js.map +1 -0
  58. package/dist/watch/opcoes.d.ts +25 -0
  59. package/dist/watch/opcoes.js +73 -0
  60. package/dist/watch/opcoes.js.map +1 -0
  61. package/dist/watch/principal.d.ts +12 -0
  62. package/dist/watch/principal.js +49 -0
  63. package/dist/watch/principal.js.map +1 -0
  64. package/dist/watch/terminal/restaurar.d.ts +24 -0
  65. package/dist/watch/terminal/restaurar.js +58 -0
  66. package/dist/watch/terminal/restaurar.js.map +1 -0
  67. package/dist/watch/terminal/tela.d.ts +17 -0
  68. package/dist/watch/terminal/tela.js +64 -0
  69. package/dist/watch/terminal/tela.js.map +1 -0
  70. package/dist/watch/visao/escolher.d.ts +18 -0
  71. package/dist/watch/visao/escolher.js +57 -0
  72. package/dist/watch/visao/escolher.js.map +1 -0
  73. package/dist/watch/visao/projetar.d.ts +51 -0
  74. package/dist/watch/visao/projetar.js +38 -0
  75. package/dist/watch/visao/projetar.js.map +1 -0
  76. package/dist/watch/watch.d.ts +26 -0
  77. package/dist/watch/watch.js +89 -0
  78. package/dist/watch/watch.js.map +1 -0
  79. package/package.json +1 -1
@@ -0,0 +1,51 @@
1
+ import { type BloqueioSituado, type TrabalhoMontado } from "../../parser/projeto/montar.js";
2
+ import type { LinhaEvento } from "../../parser/esquema/evento.js";
3
+ import type { EstadoExpx } from "../fontes/estado-schema.js";
4
+ /**
5
+ * A visão que o desenho consome — as três fontes reunidas numa estrutura só.
6
+ *
7
+ * O parser do painel é reaproveitado inteiro, sem refatoração: `montarProjeto`
8
+ * é função pura de sistema de arquivos, sem acoplamento a HTTP ou websocket
9
+ * (base/parser-de-artefatos.md, decisão D-02). O que se acrescenta aqui é o
10
+ * que ele não sabe: o `estado.json` e o rastro.
11
+ */
12
+ export type Visao = {
13
+ /** O trabalho que o watch está seguindo, ou `null` se não há nenhum. */
14
+ trabalho: TrabalhoMontado | null;
15
+ /** Os trabalhos abertos, para `--todos` e para a tela de "nenhum trabalho". */
16
+ abertos: TrabalhoMontado[];
17
+ /** O `estado.json`, ou `null` quando ausente, inválido ou de versão futura. */
18
+ estado: EstadoExpx | null;
19
+ /**
20
+ * Estamos sem o `estado.json`?
21
+ *
22
+ * NÃO é "o arquivo não existe": a decisão D-12 trata versão ≠ 1 e JSON
23
+ * inválido do mesmo jeito. No modo degradado, `raio`, `orcamento_*`, `branch`
24
+ * e `pr_estado` não têm fonte alguma e não podem ser exibidos — nenhum kind
25
+ * do `expx-schema` os declara (base/estado-json.md, risco 2).
26
+ */
27
+ degradado: boolean;
28
+ /** Tasks concluídas e total, do estado quando há, do plano quando não há. */
29
+ concluidas: number;
30
+ total: number;
31
+ /** Só os bloqueios abertos, que são os que sobem ao topo. */
32
+ bloqueiosAbertos: BloqueioSituado[];
33
+ /** As últimas linhas do rastro, da mais recente para a mais antiga. */
34
+ eventos: LinhaEvento[];
35
+ /** Violações em modo aviso desde que o watch subiu (decisão D-07). */
36
+ violacoesAviso: number;
37
+ /** Instante da leitura, para o rodapé calcular "tempo desde o último evento". */
38
+ lidoEm: Date;
39
+ };
40
+ export type OpcoesVisao = {
41
+ /** Id pedido em `expx watch <trabalho_id>`. */
42
+ trabalhoPedido?: string;
43
+ /**
44
+ * Quando o watch subiu. É a fronteira da "sessão" no rodapé: o rastro é
45
+ * append-only e não marca sessão nenhuma (lacuna L-03, decisão D-07).
46
+ */
47
+ subiuEm?: Date;
48
+ /** Quantas linhas do rastro exibir. */
49
+ linhasRastro?: number;
50
+ };
51
+ export declare function projetarVisao(raizProjeto: string, op?: OpcoesVisao, agora?: Date): Visao;
@@ -0,0 +1,38 @@
1
+ import { montarProjeto } from "../../parser/projeto/montar.js";
2
+ import { lerEstadoExpx } from "../fontes/estado.js";
3
+ import { lerRastro } from "../fontes/rastro.js";
4
+ import { abertos, escolherTrabalho } from "./escolher.js";
5
+ export function projetarVisao(raizProjeto, op = {}, agora = new Date()) {
6
+ const projeto = montarProjeto(raizProjeto, agora);
7
+ const estado = lerEstadoExpx(raizProjeto);
8
+ const trabalho = escolherTrabalho(projeto.trabalhos, estado, op.trabalhoPedido);
9
+ const tasks = trabalho?.sprints.flatMap((s) => s.tasks) ?? [];
10
+ // O par concluídas/total tem duas fontes: o estado.json traz os inteiros
11
+ // prontos, e o plano exige contagem — `progresso` do parser é fração 0..1,
12
+ // não o par (base/parser-de-artefatos.md, risco 4).
13
+ const doEstado = estado !== null && trabalho !== null;
14
+ const concluidas = doEstado
15
+ ? estado.tasks_concluidas
16
+ : tasks.filter((t) => t.status === "concluida").length;
17
+ const total = doEstado ? estado.tasks_total : tasks.length;
18
+ const eventos = trabalho === null ? [] : lerRastro(raizProjeto, trabalho.trabalho_id, op.linhasRastro);
19
+ // "Modo aviso" é vocabulário de hook e só existe no rastro: `regra_violada` é
20
+ // gravado por hook em modo aviso, `acao_bloqueada` em modo bloqueio. Não
21
+ // confundir com as `Violacao` da conformidade, que são defeitos do método nos
22
+ // arquivos do plano (lacuna L-03).
23
+ const fronteira = op.subiuEm?.toISOString().replace(/\.\d{3}Z$/, "Z");
24
+ const violacoesAviso = eventos.filter((e) => e.evento === "regra_violada" && (fronteira === undefined || e.ts >= fronteira)).length;
25
+ return {
26
+ trabalho,
27
+ abertos: abertos(projeto.trabalhos),
28
+ estado,
29
+ degradado: estado === null,
30
+ concluidas,
31
+ total,
32
+ bloqueiosAbertos: (trabalho?.bloqueios ?? []).filter((b) => b.aberto),
33
+ eventos,
34
+ violacoesAviso,
35
+ lidoEm: agora,
36
+ };
37
+ }
38
+ //# sourceMappingURL=projetar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projetar.js","sourceRoot":"","sources":["../../../src/watch/visao/projetar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA8C,MAAM,gCAAgC,CAAC;AAG3G,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAoD1D,MAAM,UAAU,aAAa,CAC3B,WAAmB,EACnB,KAAkB,EAAE,EACpB,QAAc,IAAI,IAAI,EAAE;IAExB,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC;IAEhF,MAAM,KAAK,GAAG,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAE9D,yEAAyE;IACzE,2EAA2E;IAC3E,oDAAoD;IACpD,MAAM,QAAQ,GAAG,MAAM,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,CAAC;IACtD,MAAM,UAAU,GAAG,QAAQ;QACzB,CAAC,CAAC,MAAM,CAAC,gBAAgB;QACzB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;IACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IAE3D,MAAM,OAAO,GACX,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;IAEzF,8EAA8E;IAC9E,yEAAyE;IACzE,8EAA8E;IAC9E,mCAAmC;IACnC,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACtE,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CACnC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,eAAe,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC,CACtF,CAAC,MAAM,CAAC;IAET,OAAO;QACL,QAAQ;QACR,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;QACnC,MAAM;QACN,SAAS,EAAE,MAAM,KAAK,IAAI;QAC1B,UAAU;QACV,KAAK;QACL,gBAAgB,EAAE,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QACrE,OAAO;QACP,cAAc;QACd,MAAM,EAAE,KAAK;KACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { Opcoes } from "./opcoes.js";
2
+ /**
3
+ * O loop do watch: lê, desenha, observa, redesenha.
4
+ *
5
+ * A promessa que este arquivo existe para cumprir: "a árvore completa vem dos
6
+ * arquivos do plano, relida apenas quando eles mudam — não a cada redesenho".
7
+ * Por isso a visão é guardada e só o gatilho de plano a reconstrói; o gatilho
8
+ * de estado atualiza o barato e redesenha com a árvore que já estava em mãos.
9
+ */
10
+ export type SessaoWatch = {
11
+ parar: () => Promise<void>;
12
+ /** Código de saída, quando o watch terminou sozinho. */
13
+ codigo: number;
14
+ /** O watch encerrou por conta própria (projeto sem Expx)? */
15
+ encerrou: boolean;
16
+ };
17
+ export type OpcoesExecucao = {
18
+ raiz: string;
19
+ opcoes: Opcoes;
20
+ escrever: (texto: string) => void;
21
+ cor: boolean;
22
+ debounceMs?: number;
23
+ /** Gancho de teste: chamado toda vez que o PLANO é relido do disco. */
24
+ aoLerPlano?: () => void;
25
+ };
26
+ export declare function executarWatch(op: OpcoesExecucao): Promise<SessaoWatch>;
@@ -0,0 +1,89 @@
1
+ import { existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { desenhar } from "./desenho/desenhar.js";
4
+ import { desenharLista } from "./desenho/lista.js";
5
+ import { lerEstadoExpx } from "./fontes/estado.js";
6
+ import { observarFontes } from "./fontes/observar.js";
7
+ import { lerRastro } from "./fontes/rastro.js";
8
+ import { criarTela } from "./terminal/tela.js";
9
+ import { projetarVisao } from "./visao/projetar.js";
10
+ /** Largura de trabalho: a do terminal, o pedido explícito, ou 80. */
11
+ function larguraDe(op) {
12
+ if (op.opcoes.colunas !== undefined)
13
+ return op.opcoes.colunas;
14
+ const cols = process.stdout.columns;
15
+ // Abaixo de 80 continuamos desenhando: o corte é elegante por construção.
16
+ return typeof cols === "number" && cols > 0 ? cols : 80;
17
+ }
18
+ export async function executarWatch(op) {
19
+ // Sem `.expx/`, o projeto não tem o Expx instalado. Mensagem curta e saída
20
+ // limpa, como manda a tolerância a falha — não é erro, é ausência.
21
+ if (!existsSync(join(op.raiz, ".expx"))) {
22
+ op.escrever([
23
+ "este projeto nao tem o Expx instalado (falta a pasta .expx/).",
24
+ "",
25
+ " npx expxdev init instala as skills neste projeto",
26
+ "",
27
+ ].join("\n"));
28
+ return { parar: async () => undefined, codigo: 0, encerrou: true };
29
+ }
30
+ const subiuEm = new Date();
31
+ const colunas = larguraDe(op);
32
+ const tela = criarTela(op.escrever);
33
+ // A visão fica guardada de propósito: é ela que carrega a árvore, cara de
34
+ // montar. O gatilho de estado NÃO a reconstrói.
35
+ let visao = lerTudo();
36
+ function lerTudo() {
37
+ op.aoLerPlano?.();
38
+ return projetarVisao(op.raiz, {
39
+ ...(op.opcoes.trabalho !== undefined ? { trabalhoPedido: op.opcoes.trabalho } : {}),
40
+ subiuEm,
41
+ });
42
+ }
43
+ function redesenhar() {
44
+ const linhas = op.opcoes.todos
45
+ ? desenharLista(visao, colunas, op.cor)
46
+ : desenhar(visao, { colunas, cor: op.cor, agora: new Date() });
47
+ tela.desenhar(linhas);
48
+ }
49
+ redesenhar();
50
+ const observador = await observarFontes(op.raiz, {
51
+ // O plano mudou: reconstrói tudo. É a releitura cara, e ela só acontece
52
+ // aqui.
53
+ aoMudarPlano: () => {
54
+ visao = lerTudo();
55
+ redesenhar();
56
+ },
57
+ // Só o estado.json mudou: atualiza o barato e redesenha com a árvore
58
+ // que já estava em mãos.
59
+ aoMudarEstado: () => {
60
+ const estado = lerEstadoExpx(op.raiz);
61
+ visao = { ...visao, estado, degradado: estado === null };
62
+ redesenhar();
63
+ },
64
+ // Só o rastro cresceu: relê os eventos, que é leitura de cauda, e
65
+ // preserva a árvore. É o caminho mais percorrido durante uma execução
66
+ // autônoma — cada hook grava uma linha.
67
+ aoMudarRastro: () => {
68
+ if (visao.trabalho === null)
69
+ return;
70
+ const eventos = lerRastro(op.raiz, visao.trabalho.trabalho_id);
71
+ const fronteira = subiuEm.toISOString().replace(/\.\d{3}Z$/, "Z");
72
+ visao = {
73
+ ...visao,
74
+ eventos,
75
+ violacoesAviso: eventos.filter((e) => e.evento === "regra_violada" && e.ts >= fronteira)
76
+ .length,
77
+ };
78
+ redesenhar();
79
+ },
80
+ }, op.debounceMs ?? 150);
81
+ return {
82
+ parar: async () => {
83
+ await observador.parar();
84
+ },
85
+ codigo: 0,
86
+ encerrou: false,
87
+ };
88
+ }
89
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/watch/watch.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expxdev",
3
- "version": "0.4.1",
3
+ "version": "0.5.1",
4
4
  "description": "CLI do metodo Expx: instala, atualiza e opera o ecossistema de skills, e sobe o painel de operacao",
5
5
  "type": "module",
6
6
  "bin": {