expxdev 0.4.0 → 0.4.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.
package/dist/cli/init.js CHANGED
@@ -98,9 +98,15 @@ export async function executarInit(op) {
98
98
  }
99
99
  for (const t of temporarios)
100
100
  rmSync(t, { recursive: true, force: true });
101
- for (const n of naoTravadas) {
102
- avisos.push(`${n} nao esta travada em versao publicada: o repositorio nao tem tag`);
103
- }
101
+ // Skill sem tag NÃO vira aviso na instalação. Hoje nenhum dos seis
102
+ // repositórios publica tag, então o aviso disparava para todas, em toda
103
+ // instalação — e um aviso que aparece sempre deixa de ser lido, levando
104
+ // junto os avisos que realmente pedem atenção (settings.json em conflito,
105
+ // skill que falhou).
106
+ //
107
+ // O fato continua registrado onde é procurado de propósito: `travado: false`
108
+ // no lock, e o achado `skill-nao-travada` do `doctor`. Some o ruído da
109
+ // instalação, não a informação.
104
110
  return { ok: instaladas.length > 0, instaladas, falhas, naoTravadas, avisos };
105
111
  }
106
112
  export { ORIGEM_DO_PLUGIN };
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAgC,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAsB,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAkC3D,SAAS,QAAQ,CAAC,IAAY,EAAE,OAAgC;IAC9D,OAAO,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,WAAW,CAAC;AAC/E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAAc;IAC/C,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAoB,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAiC,EAAE,CAAC;IAClD,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;YACtD,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,oCAAoC,EAAE,CAAC,CAAC;YAC/E,SAAS;QACX,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1C,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACxC,SAAS;QACX,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEhC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QAED,sEAAsE;QACtE,wEAAwE;QACxE,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;YAC/F,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI;gBACJ,IAAI,EAAE,qDAAqD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aAC9E,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACtG,QAAQ,CAAC,IAAI,CAAC,GAAG;YACf,WAAW;YACX,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YACnD,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC;SACzC,CAAC;QACF,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,GAAS;YACjB,YAAY,EAAE,WAAW;YACzB,WAAW,EAAE,WAAW,EAAE;YAC1B,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;YACxB,MAAM,EAAE,QAAQ;SACjB,CAAC;QAEF,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;YAC/B,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;YACtE,0EAA0E;YAC1E,uEAAuE;YACvE,6DAA6D;YAC7D,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;QAEH,wEAAwE;QACxE,iDAAiD;QACjD,MAAM,eAAe,GAAG,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAE1D,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;YAC1D,MAAM,CAAC,GAAG,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;YACjE,IAAI,CAAC,CAAC,CAAC,EAAE;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,WAAW;QAAE,MAAM,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AAChF,CAAC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Lê apenas o fim de um arquivo de texto, em linhas completas.
3
+ *
4
+ * O rastro só rotaciona em 5 MB (contrato `expx-eventos`), e o watch relê a
5
+ * cada evento novo. Ler o arquivo inteiro todas as vezes é a "chamada externa
6
+ * cara" que a especificação proíbe — daí a decisão D-09 de ler só a cauda.
7
+ *
8
+ * O preço de ler pelo fim é cortar a primeira linha ao meio. Este módulo
9
+ * DESCARTA esse fragmento: quem consome recebe só linhas íntegras, e uma linha
10
+ * perdida no começo da janela é irrelevante para "as últimas N linhas".
11
+ */
12
+ /** Teto de bytes lidos por arquivo. */
13
+ export declare const LIMITE_CAUDA: number;
14
+ export declare function lerCauda(caminho: string, limite?: number): string[];
@@ -0,0 +1,49 @@
1
+ import { closeSync, openSync, readSync, statSync } from "node:fs";
2
+ /**
3
+ * Lê apenas o fim de um arquivo de texto, em linhas completas.
4
+ *
5
+ * O rastro só rotaciona em 5 MB (contrato `expx-eventos`), e o watch relê a
6
+ * cada evento novo. Ler o arquivo inteiro todas as vezes é a "chamada externa
7
+ * cara" que a especificação proíbe — daí a decisão D-09 de ler só a cauda.
8
+ *
9
+ * O preço de ler pelo fim é cortar a primeira linha ao meio. Este módulo
10
+ * DESCARTA esse fragmento: quem consome recebe só linhas íntegras, e uma linha
11
+ * perdida no começo da janela é irrelevante para "as últimas N linhas".
12
+ */
13
+ /** Teto de bytes lidos por arquivo. */
14
+ export const LIMITE_CAUDA = 64 * 1024;
15
+ export function lerCauda(caminho, limite = LIMITE_CAUDA) {
16
+ let fd;
17
+ try {
18
+ const tamanho = statSync(caminho).size;
19
+ if (tamanho === 0)
20
+ return [];
21
+ const inicio = Math.max(0, tamanho - limite);
22
+ const bytes = tamanho - inicio;
23
+ fd = openSync(caminho, "r");
24
+ const buf = Buffer.allocUnsafe(bytes);
25
+ readSync(fd, buf, 0, bytes, inicio);
26
+ const texto = buf.toString("utf8");
27
+ const linhas = texto.split("\n");
28
+ // Cortamos no meio do arquivo? Então a primeira linha é um fragmento do
29
+ // que veio antes da janela, e não um registro. Fora.
30
+ if (inicio > 0)
31
+ linhas.shift();
32
+ return linhas.filter((l) => l.trim() !== "");
33
+ }
34
+ catch {
35
+ // arquivo ausente, sem permissão, sumiu entre o stat e o open: sem rastro
36
+ return [];
37
+ }
38
+ finally {
39
+ if (fd !== undefined) {
40
+ try {
41
+ closeSync(fd);
42
+ }
43
+ catch {
44
+ // fechar não pode derrubar quem só queria ler
45
+ }
46
+ }
47
+ }
48
+ }
49
+ //# sourceMappingURL=cauda.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cauda.js","sourceRoot":"","sources":["../../../src/watch/fontes/cauda.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAElE;;;;;;;;;;GAUG;AAEH,uCAAuC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC;AAEtC,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,SAAiB,YAAY;IACrE,IAAI,EAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;QACvC,IAAI,OAAO,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;QAE/B,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACtC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAEpC,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEjC,wEAAwE;QACxE,qDAAqD;QACrD,IAAI,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAE/B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;QAC1E,OAAO,EAAE,CAAC;IACZ,CAAC;YAAS,CAAC;QACT,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,SAAS,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC;YAAC,MAAM,CAAC;gBACP,8CAA8C;YAChD,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,78 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Contrato `expx-estado` v1 — o arquivo que a barra de status lê.
4
+ *
5
+ * Primeiro leitor deste contrato no repositório: a busca por
6
+ * `estado.json|expx_estado` em `src/`, `ui/` e `nucleo/` não devolvia nada.
7
+ *
8
+ * Os enums vêm do `expx-schema` de propósito. A regra 7 do contrato manda que
9
+ * sejam os MESMOS ("minúsculo, sem acento; `e3`, não `E3`"), e redeclará-los
10
+ * aqui criaria duas listas que divergem com o tempo — foi exatamente assim que
11
+ * as listas de chaves do rastro divergiram entre duas skills
12
+ * (ver `src/parser/esquema/evento.ts`).
13
+ */
14
+ /** A versão que este leitor entende. Diferente disso é degradado (D-12). */
15
+ export declare const VERSAO_ESTADO = 1;
16
+ /**
17
+ * As quinze chaves do contrato, na ordem do documento.
18
+ *
19
+ * Exportada porque o teste percorre a lista removendo uma por vez: sem ela, a
20
+ * verificação da R6 seria quinze blocos copiados.
21
+ */
22
+ export declare const CHAVES_ESTADO: readonly ["expx_estado", "atualizado_em", "trabalho", "ferramenta", "titulo_curto", "fase", "task", "tasks_concluidas", "tasks_total", "raio", "orcamento_arquivos", "orcamento_linhas", "branch", "pr_estado", "bloqueios"];
23
+ /** Faixa de raio do modo legado. `null` fora dele (regra 2 do contrato). */
24
+ export declare const Raio: z.ZodEnum<{
25
+ baixo: "baixo";
26
+ medio: "medio";
27
+ alto: "alto";
28
+ }>;
29
+ /**
30
+ * Nenhum campo é `.optional()`: a regra 2 do contrato ("chave nunca omitida")
31
+ * é o que permite ao leitor distinguir "não se aplica" de "esqueceram de
32
+ * escrever". Ausente é `null`, e `null` é um valor presente.
33
+ *
34
+ * Sem `.passthrough()`: ao contrário do rastro, que declara chaves extras por
35
+ * skill, o `expx-estado` fixa quinze chaves e um limite de 1 KB. Chave a mais
36
+ * aqui é sinal de escritor fora do contrato, não de extensão legítima.
37
+ */
38
+ export declare const EstadoExpx: z.ZodObject<{
39
+ expx_estado: z.ZodLiteral<1>;
40
+ atualizado_em: z.ZodString;
41
+ trabalho: z.ZodNullable<z.ZodString>;
42
+ ferramenta: z.ZodNullable<z.ZodEnum<{
43
+ sprintx: "sprintx";
44
+ runx: "runx";
45
+ mergex: "mergex";
46
+ legadox: "legadox";
47
+ stackx: "stackx";
48
+ memox: "memox";
49
+ }>>;
50
+ titulo_curto: z.ZodNullable<z.ZodString>;
51
+ fase: z.ZodNullable<z.ZodEnum<{
52
+ f1: "f1";
53
+ f2: "f2";
54
+ f3: "f3";
55
+ f4: "f4";
56
+ f5: "f5";
57
+ f6: "f6";
58
+ e1: "e1";
59
+ e2: "e2";
60
+ e3: "e3";
61
+ e4: "e4";
62
+ e5: "e5";
63
+ }>>;
64
+ task: z.ZodNullable<z.ZodString>;
65
+ tasks_concluidas: z.ZodNumber;
66
+ tasks_total: z.ZodNumber;
67
+ raio: z.ZodNullable<z.ZodEnum<{
68
+ baixo: "baixo";
69
+ medio: "medio";
70
+ alto: "alto";
71
+ }>>;
72
+ orcamento_arquivos: z.ZodNullable<z.ZodString>;
73
+ orcamento_linhas: z.ZodNullable<z.ZodString>;
74
+ branch: z.ZodNullable<z.ZodString>;
75
+ pr_estado: z.ZodNullable<z.ZodString>;
76
+ bloqueios: z.ZodNumber;
77
+ }, z.core.$strip>;
78
+ export type EstadoExpx = z.infer<typeof EstadoExpx>;
@@ -0,0 +1,72 @@
1
+ import { z } from "zod";
2
+ import { Estagio, Ferramenta } from "../../parser/esquema/enums.js";
3
+ /**
4
+ * Contrato `expx-estado` v1 — o arquivo que a barra de status lê.
5
+ *
6
+ * Primeiro leitor deste contrato no repositório: a busca por
7
+ * `estado.json|expx_estado` em `src/`, `ui/` e `nucleo/` não devolvia nada.
8
+ *
9
+ * Os enums vêm do `expx-schema` de propósito. A regra 7 do contrato manda que
10
+ * sejam os MESMOS ("minúsculo, sem acento; `e3`, não `E3`"), e redeclará-los
11
+ * aqui criaria duas listas que divergem com o tempo — foi exatamente assim que
12
+ * as listas de chaves do rastro divergiram entre duas skills
13
+ * (ver `src/parser/esquema/evento.ts`).
14
+ */
15
+ /** A versão que este leitor entende. Diferente disso é degradado (D-12). */
16
+ export const VERSAO_ESTADO = 1;
17
+ /**
18
+ * As quinze chaves do contrato, na ordem do documento.
19
+ *
20
+ * Exportada porque o teste percorre a lista removendo uma por vez: sem ela, a
21
+ * verificação da R6 seria quinze blocos copiados.
22
+ */
23
+ export const CHAVES_ESTADO = [
24
+ "expx_estado",
25
+ "atualizado_em",
26
+ "trabalho",
27
+ "ferramenta",
28
+ "titulo_curto",
29
+ "fase",
30
+ "task",
31
+ "tasks_concluidas",
32
+ "tasks_total",
33
+ "raio",
34
+ "orcamento_arquivos",
35
+ "orcamento_linhas",
36
+ "branch",
37
+ "pr_estado",
38
+ "bloqueios",
39
+ ];
40
+ /** Faixa de raio do modo legado. `null` fora dele (regra 2 do contrato). */
41
+ export const Raio = z.enum(["baixo", "medio", "alto"]);
42
+ /** Timestamp do contrato: ISO-8601 em UTC, com `Z` (R4). */
43
+ const TimestampUtc = z
44
+ .string()
45
+ .regex(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/, "atualizado_em deve ser AAAA-MM-DDTHH:MM:SSZ");
46
+ /**
47
+ * Nenhum campo é `.optional()`: a regra 2 do contrato ("chave nunca omitida")
48
+ * é o que permite ao leitor distinguir "não se aplica" de "esqueceram de
49
+ * escrever". Ausente é `null`, e `null` é um valor presente.
50
+ *
51
+ * Sem `.passthrough()`: ao contrário do rastro, que declara chaves extras por
52
+ * skill, o `expx-estado` fixa quinze chaves e um limite de 1 KB. Chave a mais
53
+ * aqui é sinal de escritor fora do contrato, não de extensão legítima.
54
+ */
55
+ export const EstadoExpx = z.object({
56
+ expx_estado: z.literal(VERSAO_ESTADO),
57
+ atualizado_em: TimestampUtc,
58
+ trabalho: z.string().min(1).nullable(),
59
+ ferramenta: Ferramenta.nullable(),
60
+ titulo_curto: z.string().nullable(),
61
+ fase: Estagio.nullable(),
62
+ task: z.string().nullable(),
63
+ tasks_concluidas: z.number().int().min(0),
64
+ tasks_total: z.number().int().min(0),
65
+ raio: Raio.nullable(),
66
+ orcamento_arquivos: z.string().nullable(),
67
+ orcamento_linhas: z.string().nullable(),
68
+ branch: z.string().nullable(),
69
+ pr_estado: z.string().nullable(),
70
+ bloqueios: z.number().int().min(0),
71
+ });
72
+ //# sourceMappingURL=estado-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"estado-schema.js","sourceRoot":"","sources":["../../../src/watch/fontes/estado-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEpE;;;;;;;;;;;GAWG;AAEH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,aAAa;IACb,eAAe;IACf,UAAU;IACV,YAAY;IACZ,cAAc;IACd,MAAM;IACN,MAAM;IACN,kBAAkB;IAClB,aAAa;IACb,MAAM;IACN,oBAAoB;IACpB,kBAAkB;IAClB,QAAQ;IACR,WAAW;IACX,WAAW;CACH,CAAC;AAEX,4EAA4E;AAC5E,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAEvD,4DAA4D;AAC5D,MAAM,YAAY,GAAG,CAAC;KACnB,MAAM,EAAE;KACR,KAAK,CACJ,wCAAwC,EACxC,6CAA6C,CAC9C,CAAC;AAEJ;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IACrC,aAAa,EAAE,YAAY;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtC,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE;IACjC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE;IACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;IACrB,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACvC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACnC,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { EstadoExpx } from "./estado-schema.js";
2
+ /**
3
+ * Lê `.expx/estado.json` a partir da raiz do projeto.
4
+ *
5
+ * Falha SEMPRE para `null`, nunca lança. A regra 1 do contrato `expx-estado`
6
+ * declara o arquivo "derivado e descartável; apagá-lo não pode quebrar nada" —
7
+ * e o watch inteiro depende disso: a tolerância a falha "estado.json inválido
8
+ * cai para leitura direta do plano" é justamente este `null`.
9
+ *
10
+ * A leitura é de uma vez só porque o contrato exige escrita atômica (regra 3:
11
+ * temporário + rename). Não existe janela de leitura parcial: ou o arquivo
12
+ * antigo inteiro, ou o novo inteiro.
13
+ *
14
+ * Versão diferente de 1 é `null` de propósito (decisão D-12): o `EstadoExpx`
15
+ * declara `expx_estado: z.literal(1)`, então um arquivo de versão futura
16
+ * reprova no parse como qualquer outro defeito, e quem chama vai para o plano.
17
+ */
18
+ export declare function lerEstadoExpx(raizProjeto: string): EstadoExpx | null;
@@ -0,0 +1,38 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { EstadoExpx } from "./estado-schema.js";
4
+ /**
5
+ * Lê `.expx/estado.json` a partir da raiz do projeto.
6
+ *
7
+ * Falha SEMPRE para `null`, nunca lança. A regra 1 do contrato `expx-estado`
8
+ * declara o arquivo "derivado e descartável; apagá-lo não pode quebrar nada" —
9
+ * e o watch inteiro depende disso: a tolerância a falha "estado.json inválido
10
+ * cai para leitura direta do plano" é justamente este `null`.
11
+ *
12
+ * A leitura é de uma vez só porque o contrato exige escrita atômica (regra 3:
13
+ * temporário + rename). Não existe janela de leitura parcial: ou o arquivo
14
+ * antigo inteiro, ou o novo inteiro.
15
+ *
16
+ * Versão diferente de 1 é `null` de propósito (decisão D-12): o `EstadoExpx`
17
+ * declara `expx_estado: z.literal(1)`, então um arquivo de versão futura
18
+ * reprova no parse como qualquer outro defeito, e quem chama vai para o plano.
19
+ */
20
+ export function lerEstadoExpx(raizProjeto) {
21
+ let bruto;
22
+ try {
23
+ bruto = readFileSync(join(raizProjeto, ".expx", "estado.json"), "utf8");
24
+ }
25
+ catch {
26
+ return null; // ausente, sem permissão, é um diretório: tudo é "não há estado"
27
+ }
28
+ let dados;
29
+ try {
30
+ dados = JSON.parse(bruto);
31
+ }
32
+ catch {
33
+ return null;
34
+ }
35
+ const r = EstadoExpx.safeParse(dados);
36
+ return r.success ? r.data : null;
37
+ }
38
+ //# sourceMappingURL=estado.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"estado.js","sourceRoot":"","sources":["../../../src/watch/fontes/estado.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC;QACH,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,CAAC,iEAAiE;IAChF,CAAC;IAED,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACtC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { LinhaEvento } from "../../parser/esquema/evento.js";
2
+ /**
3
+ * Lê as últimas linhas do rastro de um trabalho, da mais recente para a mais
4
+ * antiga.
5
+ *
6
+ * O que o repositório já tinha era `validarRastro`, que conta defeitos e não
7
+ * devolve evento nenhum. O schema `LinhaEvento` e os enums, esses sim, são
8
+ * reaproveitados inteiros: são a fonte única do vocabulário do contrato.
9
+ *
10
+ * Rotação: acima de 5 MB o arquivo corrente vira `<id>.1.jsonl` e um novo
11
+ * começa (contrato `expx-eventos`), e "o painel lê os dois". O `.1` é o mais
12
+ * ANTIGO — inverter isso mostraria o rastro fora de ordem logo após uma
13
+ * rotação, que é justamente quando ninguém está olhando com atenção.
14
+ */
15
+ /** Quantas linhas o watch exibe por padrão (decisão D-09). */
16
+ export declare const LINHAS_PADRAO = 10;
17
+ export declare function lerRastro(raizProjeto: string, trabalhoId: string, limite?: number): LinhaEvento[];
@@ -0,0 +1,43 @@
1
+ import { join } from "node:path";
2
+ import { LinhaEvento } from "../../parser/esquema/evento.js";
3
+ import { lerCauda } from "./cauda.js";
4
+ /**
5
+ * Lê as últimas linhas do rastro de um trabalho, da mais recente para a mais
6
+ * antiga.
7
+ *
8
+ * O que o repositório já tinha era `validarRastro`, que conta defeitos e não
9
+ * devolve evento nenhum. O schema `LinhaEvento` e os enums, esses sim, são
10
+ * reaproveitados inteiros: são a fonte única do vocabulário do contrato.
11
+ *
12
+ * Rotação: acima de 5 MB o arquivo corrente vira `<id>.1.jsonl` e um novo
13
+ * começa (contrato `expx-eventos`), e "o painel lê os dois". O `.1` é o mais
14
+ * ANTIGO — inverter isso mostraria o rastro fora de ordem logo após uma
15
+ * rotação, que é justamente quando ninguém está olhando com atenção.
16
+ */
17
+ /** Quantas linhas o watch exibe por padrão (decisão D-09). */
18
+ export const LINHAS_PADRAO = 10;
19
+ export function lerRastro(raizProjeto, trabalhoId, limite = LINHAS_PADRAO) {
20
+ const dir = join(raizProjeto, "docs", "eventos");
21
+ // corrente primeiro, rotacionado depois: os dois já vêm em ordem
22
+ // cronológica crescente dentro de cada arquivo.
23
+ const cronologicas = [
24
+ ...lerCauda(join(dir, `${trabalhoId}.1.jsonl`)),
25
+ ...lerCauda(join(dir, `${trabalhoId}.jsonl`)),
26
+ ];
27
+ const validas = [];
28
+ for (const bruta of cronologicas) {
29
+ let obj;
30
+ try {
31
+ obj = JSON.parse(bruta);
32
+ }
33
+ catch {
34
+ continue; // linha malformada não derruba o resto do rastro
35
+ }
36
+ const r = LinhaEvento.safeParse(obj);
37
+ if (r.success)
38
+ validas.push(r.data);
39
+ }
40
+ // as N mais recentes, já invertidas para exibição
41
+ return validas.slice(-limite).reverse();
42
+ }
43
+ //# sourceMappingURL=rastro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rastro.js","sourceRoot":"","sources":["../../../src/watch/fontes/rastro.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;;;;;;;;;GAYG;AAEH,8DAA8D;AAC9D,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAEhC,MAAM,UAAU,SAAS,CACvB,WAAmB,EACnB,UAAkB,EAClB,SAAiB,aAAa;IAE9B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAEjD,iEAAiE;IACjE,gDAAgD;IAChD,MAAM,YAAY,GAAG;QACnB,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,UAAU,CAAC,CAAC;QAC/C,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,QAAQ,CAAC,CAAC;KAC9C,CAAC;IAEF,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,IAAI,GAAY,CAAC;QACjB,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,CAAC,iDAAiD;QAC7D,CAAC;QACD,MAAM,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,CAAC,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,kDAAkD;IAClD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;AAC1C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expxdev",
3
- "version": "0.4.0",
3
+ "version": "0.4.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": {