expxdev 0.1.1 → 0.2.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 (59) hide show
  1. package/README.md +459 -72
  2. package/dist/cli/init.js +6 -2
  3. package/dist/cli/init.js.map +1 -1
  4. package/dist/doctor/verificadores.js +97 -1
  5. package/dist/doctor/verificadores.js.map +1 -1
  6. package/dist/harness/hooks.d.ts +27 -0
  7. package/dist/harness/hooks.js +36 -0
  8. package/dist/harness/hooks.js.map +1 -0
  9. package/dist/harness/settings.d.ts +2 -1
  10. package/dist/harness/settings.js +40 -2
  11. package/dist/harness/settings.js.map +1 -1
  12. package/dist/nucleo/caminhos.d.ts +1 -1
  13. package/dist/nucleo/catalogo.d.ts +1 -1
  14. package/dist/nucleo/catalogo.js +7 -1
  15. package/dist/nucleo/catalogo.js.map +1 -1
  16. package/dist/nucleo/layout.d.ts +3 -2
  17. package/dist/nucleo/layout.js +37 -1
  18. package/dist/nucleo/layout.js.map +1 -1
  19. package/dist/nucleo/versao.d.ts +1 -1
  20. package/dist/parser/conformidade/regras.d.ts +1 -0
  21. package/dist/parser/conformidade/regras.js +24 -0
  22. package/dist/parser/conformidade/regras.js.map +1 -1
  23. package/dist/parser/esquema/enums.d.ts +19 -0
  24. package/dist/parser/esquema/enums.js +18 -0
  25. package/dist/parser/esquema/enums.js.map +1 -1
  26. package/dist/parser/esquema/evento.d.ts +123 -0
  27. package/dist/parser/esquema/evento.js +141 -0
  28. package/dist/parser/esquema/evento.js.map +1 -0
  29. package/dist/parser/leitura/rejeicao.d.ts +9 -0
  30. package/dist/parser/leitura/rejeicao.js +56 -0
  31. package/dist/parser/leitura/rejeicao.js.map +1 -1
  32. package/dist/parser/memoria/ler.d.ts +38 -0
  33. package/dist/parser/memoria/ler.js +46 -0
  34. package/dist/parser/memoria/ler.js.map +1 -0
  35. package/dist/parser/memoria/projetar.d.ts +3 -0
  36. package/dist/parser/memoria/projetar.js +132 -0
  37. package/dist/parser/memoria/projetar.js.map +1 -0
  38. package/dist/parser/memoria/tipos.d.ts +155 -0
  39. package/dist/parser/memoria/tipos.js +97 -0
  40. package/dist/parser/memoria/tipos.js.map +1 -0
  41. package/dist/parser/projeto/montar.d.ts +17 -0
  42. package/dist/parser/projeto/montar.js +17 -0
  43. package/dist/parser/projeto/montar.js.map +1 -1
  44. package/dist/plugin/montagem.d.ts +7 -0
  45. package/dist/plugin/montagem.js +22 -2
  46. package/dist/plugin/montagem.js.map +1 -1
  47. package/dist/servidor/http.js +5 -0
  48. package/dist/servidor/http.js.map +1 -1
  49. package/dist/servidor/observador.js +5 -1
  50. package/dist/servidor/observador.js.map +1 -1
  51. package/dist/teste/repo-fixture.d.ts +7 -0
  52. package/dist/teste/repo-fixture.js +18 -0
  53. package/dist/teste/repo-fixture.js.map +1 -1
  54. package/nucleo/README.md +79 -0
  55. package/nucleo/hooks/expx-rastro.sh +261 -0
  56. package/package.json +2 -1
  57. package/ui/dist/assets/index-BNE_RJrV.js +15 -0
  58. package/ui/dist/index.html +1 -1
  59. package/ui/dist/assets/index-BmDTogQZ.js +0 -14
package/dist/cli/init.js CHANGED
@@ -11,6 +11,7 @@ import { escreverAtomico } from "../plugin/atomico.js";
11
11
  import { montarMarketplace } from "../plugin/montagem.js";
12
12
  import { materializarOpenCode } from "../harness/opencode.js";
13
13
  import { mesclarSettings } from "../harness/settings.js";
14
+ import { instalarHooks } from "../harness/hooks.js";
14
15
  import { ORIGEM_DO_PLUGIN } from "../plugin/manifestos.js";
15
16
  function origemDe(nome, origens) {
16
17
  return origens?.[nome] ?? CATALOGO.find((s) => s.nome === nome)?.repositorio;
@@ -58,7 +59,7 @@ export async function executarInit(op) {
58
59
  });
59
60
  continue;
60
61
  }
61
- montaveis.push({ nome, raizSkill: layout.raizSkill, comandos: layout.comandos });
62
+ montaveis.push({ nome, raizSkill: layout.raizSkill, comandos: layout.comandos, hooks: layout.hooks });
62
63
  travadas[nome] = {
63
64
  repositorio,
64
65
  referencia: alvo.referencia,
@@ -83,9 +84,12 @@ export async function executarInit(op) {
83
84
  // pasta temporária e o arquivo se perderia na troca atômica.
84
85
  writeFileSync(join(tmp, "expx-lock.json"), `${JSON.stringify(lock, null, 2)}\n`);
85
86
  });
87
+ // A cópia acontece AQUI, antes do `rmSync` dos clones lá embaixo: feita
88
+ // depois, leria pasta já apagada (decisão D-26).
89
+ const hooksInstalados = instalarHooks(op.raiz, montaveis);
86
90
  if (op.harness.includes("claude")) {
87
91
  const marketplace = join(op.raiz, ".expx", "marketplace");
88
- const r = mesclarSettings(op.raiz, marketplace);
92
+ const r = mesclarSettings(op.raiz, marketplace, hooksInstalados);
89
93
  if (!r.ok)
90
94
  avisos.push(r.erro);
91
95
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
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,6 +1,7 @@
1
- import { existsSync, readFileSync } from "node:fs";
1
+ import { existsSync, readFileSync, readdirSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { lerLock } from "../nucleo/lock.js";
4
+ import { validarRastro } from "../parser/esquema/evento.js";
4
5
  import { verificarCaminhos } from "../nucleo/caminhos.js";
5
6
  import { expxNoGitignore } from "../cli/projeto.js";
6
7
  import { verificarModificacaoLocal, pastaDaSkill } from "../update/modificacao.js";
@@ -153,6 +154,101 @@ export function diagnosticar(raiz) {
153
154
  });
154
155
  }
155
156
  }
157
+ verificarHooks(raiz, push);
158
+ verificarRastro(raiz, push);
156
159
  return { saudavel: achados.filter((a) => a.severidade === "erro").length === 0, achados };
157
160
  }
161
+ /**
162
+ * O rastro de eventos obedece ao contrato `expx-eventos`?
163
+ *
164
+ * Aviso, nunca erro: rastro malformado não impede o método de funcionar, e um
165
+ * `doctor` que reprova a instalação por causa de linha antiga em disco é um
166
+ * doctor que as pessoas param de rodar. As quatro skills que escrevem o rastro
167
+ * têm implementações independentes — é justamente onde a divergência aparece.
168
+ */
169
+ function verificarRastro(raiz, push) {
170
+ const dir = join(raiz, "docs", "eventos");
171
+ if (!existsSync(dir))
172
+ return;
173
+ let arquivos;
174
+ try {
175
+ arquivos = readdirSync(dir).filter((f) => f.endsWith(".jsonl"));
176
+ }
177
+ catch {
178
+ return;
179
+ }
180
+ for (const nome of arquivos) {
181
+ let conteudo;
182
+ try {
183
+ conteudo = readFileSync(join(dir, nome), "utf8");
184
+ }
185
+ catch {
186
+ continue;
187
+ }
188
+ const r = validarRastro(conteudo);
189
+ if (r.defeitos.length > 0) {
190
+ const primeiro = r.defeitos[0];
191
+ const resto = r.defeitos.length - 1;
192
+ push({
193
+ id: "rastro-fora-do-contrato",
194
+ severidade: "aviso",
195
+ problema: `docs/eventos/${nome}: ${r.defeitos.length} de ${r.linhas} linhas fora do ` +
196
+ `contrato expx-eventos (L${primeiro?.linha}: ${primeiro?.motivo}` +
197
+ `${resto > 0 ? `, e mais ${resto}` : ""})`,
198
+ correcao: "o rastro e append-only e nao se edita a mao: corrija quem grava (o hook da skill) " +
199
+ "e deixe as linhas antigas onde estao",
200
+ });
201
+ }
202
+ if (r.desconhecidas.length > 0) {
203
+ push({
204
+ id: "rastro-chave-nao-declarada",
205
+ severidade: "aviso",
206
+ problema: `docs/eventos/${nome}: chaves fora do contrato: ${r.desconhecidas.join(", ")}`,
207
+ correcao: "chave extra e permitida, mas precisa ser declarada em CONTRATO-expx-eventos.md " +
208
+ "e vir depois das doze obrigatorias",
209
+ });
210
+ }
211
+ }
212
+ }
213
+ /**
214
+ * Hook instalado sem o motor ao lado.
215
+ *
216
+ * Todo caminho de erro dos hooks do memox termina em `exit 0`, de propósito:
217
+ * falha aberta nunca trava o prompt de quem está trabalhando. O preço é que
218
+ * uma instalação quebrada fica indistinguível de um projeto sem artefatos —
219
+ * silêncio dos dois lados. Este verificador é o único lugar onde a diferença
220
+ * aparece (decisão D-17).
221
+ *
222
+ * O caminho conferido é exatamente o que o hook resolve por conta própria:
223
+ * `DIR_HOOK/../skills/<skill>/assets/`.
224
+ */
225
+ function verificarHooks(raiz, push) {
226
+ const dirHooks = join(raiz, ".claude", "hooks");
227
+ if (!existsSync(dirHooks))
228
+ return;
229
+ let arquivos;
230
+ try {
231
+ arquivos = readdirSync(dirHooks);
232
+ }
233
+ catch {
234
+ return;
235
+ }
236
+ // uma entrada por skill dona de hook, para não repetir o achado por arquivo
237
+ const skills = new Set(arquivos
238
+ .filter((a) => a.endsWith(".sh"))
239
+ .map((a) => a.split("-")[0] ?? "")
240
+ .filter((n) => n !== ""));
241
+ for (const skill of skills) {
242
+ const motor = join(raiz, ".claude", "skills", skill, "assets");
243
+ if (existsSync(motor))
244
+ continue;
245
+ push({
246
+ id: `${skill}-sem-motor`,
247
+ severidade: "erro",
248
+ problema: `o hook de ${skill} esta em .claude/hooks mas o motor nao esta em ` +
249
+ `.claude/skills/${skill}/assets: o hook sai 0 em silencio e nao faz nada`,
250
+ correcao: `rode \`expx init\` incluindo ${skill}: o hook e a skill precisam ser instalados juntos`,
251
+ });
252
+ }
253
+ }
158
254
  //# sourceMappingURL=verificadores.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"verificadores.js","sourceRoot":"","sources":["../../src/doctor/verificadores.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verificadores.js","sourceRoot":"","sources":["../../src/doctor/verificadores.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { SkillMontavel } from "../plugin/montagem.js";
2
+ /**
3
+ * Materializa hooks de skill em `.claude/hooks/`, com a skill ao lado em
4
+ * `.claude/skills/`.
5
+ *
6
+ * Os dois andam juntos por imposição do próprio hook: o do memox resolve o
7
+ * motor como `DIR_HOOK/../skills/<nome>/assets/...`. Copiar o hook sem copiar a
8
+ * skill produz um hook que sai `0` em silêncio — e como TODO caminho de erro
9
+ * dele sai `0`, a instalação quebrada fica indistinguível de um projeto sem
10
+ * artefatos. É por isso que a cópia da skill aqui é incondicional, e não
11
+ * depende de o harness incluir `opencode` (decisões D-14 e D-15).
12
+ *
13
+ * Hooks são mecanismo do Claude Code. No OpenCode isso é lacuna declarada, não
14
+ * paridade garantida.
15
+ */
16
+ export type HookInstalado = {
17
+ skill: string;
18
+ /** Caminho do hook relativo à raiz do projeto, como vai para o settings.json. */
19
+ relativo: string;
20
+ };
21
+ /** As skills que trazem hook. Sem nenhuma, nada é criado — nem a pasta. */
22
+ export declare function comHooks(skills: readonly SkillMontavel[]): SkillMontavel[];
23
+ /**
24
+ * Copia hooks e skills para `.claude/`. Devolve os hooks instalados, na ordem,
25
+ * para quem for registrá-los no `settings.json`.
26
+ */
27
+ export declare function instalarHooks(raizProjeto: string, skills: readonly SkillMontavel[]): HookInstalado[];
@@ -0,0 +1,36 @@
1
+ import { chmodSync, cpSync, existsSync, mkdirSync } from "node:fs";
2
+ import { basename, join } from "node:path";
3
+ /** As skills que trazem hook. Sem nenhuma, nada é criado — nem a pasta. */
4
+ export function comHooks(skills) {
5
+ return skills.filter((s) => (s.hooks?.length ?? 0) > 0);
6
+ }
7
+ /**
8
+ * Copia hooks e skills para `.claude/`. Devolve os hooks instalados, na ordem,
9
+ * para quem for registrá-los no `settings.json`.
10
+ */
11
+ export function instalarHooks(raizProjeto, skills) {
12
+ const alvos = comHooks(skills);
13
+ if (alvos.length === 0)
14
+ return [];
15
+ const dirHooks = join(raizProjeto, ".claude", "hooks");
16
+ const dirSkills = join(raizProjeto, ".claude", "skills");
17
+ mkdirSync(dirHooks, { recursive: true });
18
+ mkdirSync(dirSkills, { recursive: true });
19
+ const instalados = [];
20
+ for (const s of alvos) {
21
+ // a skill vai junto: é o que o hook procura ao lado de si mesmo
22
+ cpSync(s.raizSkill, join(dirSkills, s.nome), { recursive: true });
23
+ for (const origem of s.hooks ?? []) {
24
+ if (!existsSync(origem))
25
+ continue;
26
+ const nome = basename(origem);
27
+ const destino = join(dirHooks, nome);
28
+ cpSync(origem, destino);
29
+ // o bit de execução não é detalhe: sem ele o hook não roda, e não avisa
30
+ chmodSync(destino, 0o755);
31
+ instalados.push({ skill: s.nome, relativo: `.claude/hooks/${nome}` });
32
+ }
33
+ }
34
+ return instalados;
35
+ }
36
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/harness/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAwB3C,2EAA2E;AAC3E,MAAM,UAAU,QAAQ,CAAC,MAAgC;IACvD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB,EAAE,MAAgC;IACjF,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzD,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1C,MAAM,UAAU,GAAoB,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,gEAAgE;QAChE,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAElE,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,SAAS;YAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACxB,wEAAwE;YACxE,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC1B,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -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":"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"}
1
+ {"version":3,"file":"regras.js","sourceRoot":"","sources":["../../../src/parser/conformidade/regras.ts"],"names":[],"mappings":"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"}