xonecode 0.38.38 → 0.38.41

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.
@@ -7,7 +7,7 @@
7
7
  <!-- El icono oficial, servido por Vite desde `iconos/`. Es el mismo fichero que la
8
8
  marca de la barra superior: dos copias del logo acaban siendo dos logos. -->
9
9
  <link rel="icon" type="image/png" href="./iconos/xonecode.png" />
10
- <script type="module" crossorigin src="./assets/index-CUUDueEn.js"></script>
10
+ <script type="module" crossorigin src="./assets/index-C6XoIOQg.js"></script>
11
11
  <link rel="stylesheet" crossorigin href="./assets/index-BQdHnRbo.css">
12
12
  </head>
13
13
  <!-- Sin el atributo aquí: el oscuro es SOLO del splash (el registro de entorno y
@@ -1,15 +1,17 @@
1
1
  import { exec, execFile } from "node:child_process";
2
2
  import { createRequire } from "node:module";
3
- import { mkdtempSync, rmSync } from "node:fs";
3
+ import { existsSync, mkdtempSync, rmSync } from "node:fs";
4
4
  import { tmpdir } from "node:os";
5
5
  import { join } from "node:path";
6
6
  import { promisify } from "node:util";
7
7
  import { motivoDeFallo } from "../../core/diagnosticoDeNode.js";
8
8
  import { versionDeSalida } from "../../core/motoresLocales.js";
9
+ import { entornoDeShell } from "../../core/shellDeAgente.js";
9
10
  import { scriptsConRuta } from "../grafo/proyecto.js";
10
11
  import { skillsConRuta } from "../grafo/skills.js";
11
12
  import { binarioDeClaudeDelSdk } from "../motores/motoresLocales.js";
12
13
  import { comoLanzarElSimulador } from "../turno/verificador.js";
14
+ import { navegadorParaImprimir } from "../exportarPdf.js";
13
15
  /**
14
16
  * Las medidas de `core/diagnosticoDeNode.ts` en la máquina de verdad. Cada una con su tope, y ninguna devuelve una ruta:
15
17
  * los motivos salen de `motivoDeFallo` (el `code`, nunca el mensaje de Node). Las dependencias se inyectan para que el
@@ -22,14 +24,20 @@ const SCRIPT_DE_PRUEBA = "xone-hotswap";
22
24
  const execFileP = promisify(execFile);
23
25
  const execP = promisify(exec);
24
26
  async function ejecutarReal(programa, args, opciones) {
27
+ const env = opciones.entorno;
25
28
  // `node` a secas en Windows va por la shell: es como lo encuentra quien lo teclea, y lo que el diagnóstico quiere saber.
26
29
  if (opciones.shell) {
27
- const { stdout } = await execP([programa, ...args].join(" "), { timeout: TOPE_DEL_DIAGNOSTICO_MS, windowsHide: true, encoding: "utf8" });
30
+ const { stdout } = await execP([programa, ...args].join(" "), { timeout: TOPE_DEL_DIAGNOSTICO_MS, windowsHide: true, encoding: "utf8", ...(env === undefined ? {} : { env }) });
28
31
  return { stdout: String(stdout) };
29
32
  }
30
- const { stdout } = await execFileP(programa, [...args], { timeout: TOPE_DEL_DIAGNOSTICO_MS, windowsHide: true, encoding: "utf8" });
33
+ const { stdout } = await execFileP(programa, [...args], { timeout: TOPE_DEL_DIAGNOSTICO_MS, windowsHide: true, encoding: "utf8", ...(env === undefined ? {} : { env }) });
31
34
  return { stdout: String(stdout) };
32
35
  }
36
+ /** El entorno de la shell de los agentes, sin proyecto: el MISMO `entornoDeShell` con los scripts de todas las skills. */
37
+ function entornoDeAgenteReal() {
38
+ const skills = skillsConRuta().map((m) => ({ nombre: m.nombre, dir: m.dir }));
39
+ return entornoDeShell({ entorno: process.env, skills, binarios: skills.map((s) => join(s.dir, "scripts")).filter((d) => existsSync(d)) });
40
+ }
33
41
  function leerVersion(id) {
34
42
  try {
35
43
  return createRequire(import.meta.url)(id).version;
@@ -60,14 +68,19 @@ export async function medirDiagnosticoDeNode(deps = {}) {
60
68
  return { ok: false, motivo: motivoDeFallo(e) };
61
69
  }
62
70
  };
63
- const nodeEnPath = intentar(async () => versionDeSalida((await ejecutar("node", ["--version"], { shell: windows })).stdout));
71
+ const entorno = (deps.entornoDeAgente ?? entornoDeAgenteReal)();
72
+ // «node» en el PATH DE LOS AGENTES, no en el del servidor: es el que usan sus comandos.
73
+ const nodeEnPath = intentar(async () => versionDeSalida((await ejecutar("node", ["--version"], { shell: windows, entorno })).stdout));
64
74
  const lista = (deps.scripts ?? (() => scriptsConRuta(undefined, skillsConRuta().map((s) => s.nombre), plataforma)))();
65
75
  const elegido = lista.find((s) => s.nombre === SCRIPT_DE_PRUEBA) ?? lista[0];
66
76
  const scripts = elegido === undefined
67
77
  ? Promise.resolve({ ok: false, cuantos: 0, motivo: "no se detecta ningún script en las skills" })
68
78
  : intentar(async () => {
69
79
  // La MISMA llamada que haría el agente: por su nombre fuera de Windows, con `node <ruta>` en Windows.
70
- await (windows ? ejecutar("node", [elegido.ruta, "--help"], { shell: false }) : ejecutar(elegido.ruta, ["--help"], { shell: false }));
80
+ // Como lo lanza el agente: por su nombre fuera de Windows; en Windows, con el Node del servidor (`comandoConNode`).
81
+ await (windows
82
+ ? ejecutar(deps.nodeDelServidor ?? process.execPath, [elegido.ruta, "--help"], { shell: false, entorno })
83
+ : ejecutar(elegido.ruta, ["--help"], { shell: false, entorno }));
71
84
  return `${elegido.nombre} --help`;
72
85
  }).then((l) => ({ ...l, cuantos: lista.length }));
73
86
  const simulador = intentar(async () => {
@@ -107,6 +120,13 @@ export async function medirDiagnosticoDeNode(deps = {}) {
107
120
  scripts: await scripts,
108
121
  simulador: await simulador,
109
122
  claudeCode: await claudeCode,
123
+ // Solo el NOMBRE del programa (msedge.exe, Google Chrome): la ruta no cruza.
124
+ navegador: (() => {
125
+ const n = (deps.navegador ?? (() => navegadorParaImprimir(existsSync, plataforma)))();
126
+ return n === undefined
127
+ ? { ok: false, motivo: "no hay Chrome, Edge, Chromium ni Brave: el crítico no podrá medir la maqueta" }
128
+ : { ok: true, valor: n.split(/[\\/]/).pop() ?? n };
129
+ })(),
110
130
  };
111
131
  }
112
132
  //# sourceMappingURL=diagnosticoDeNodeEnMaquina.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagnosticoDeNodeEnMaquina.js","sourceRoot":"","sources":["../../../src/agent/config/diagnosticoDeNodeEnMaquina.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnosticoDeNodeEnMaquina.js","sourceRoot":"","sources":["../../../src/agent/config/diagnosticoDeNodeEnMaquina.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAmD,MAAM,iCAAiC,CAAC;AACjH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;;GAIG;AAEH,sGAAsG;AACtG,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE9C,qFAAqF;AACrF,MAAM,gBAAgB,GAAG,cAAc,CAAC;AA0BxC,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AACtC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAE9B,KAAK,UAAU,YAAY,CACzB,QAAgB,EAChB,IAAuB,EACvB,QAA8D;IAE9D,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAwC,CAAC;IAC9D,yHAAyH;IACzH,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAChL,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IACpC,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1K,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AACpC,CAAC;AAED,0HAA0H;AAC1H,SAAS,mBAAmB;IAC1B,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC9E,OAAO,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC5I,CAAC;AAED,SAAS,WAAW,CAAC,EAAU;IAC7B,IAAI,CAAC;QACH,OAAQ,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAA0B,CAAC,OAAO,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB;IAC5B,IAAI,CAAC;QACH,OAAQ,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,6CAA6C,CAAoC,CAAC,iBAAiB,CAAC;IAC7I,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,iGAAiG;AACjG,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAAmC,EAAE;IAChF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC;IAC/C,MAAM,OAAO,GAAG,UAAU,KAAK,OAAO,CAAC;IAEvC,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAoC,EAA+B,EAAE;QAC3F,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;YACxB,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAClE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,mBAAmB,CAAC,EAAE,CAAC;IAChE,wFAAwF;IACxF,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtI,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACtH,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,gBAAgB,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,OAAO,GACX,OAAO,KAAK,SAAS;QACnB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,2CAA2C,EAAE,CAAC;QACjG,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAClB,sGAAsG;YACtG,oHAAoH;YACpH,MAAM,CAAC,OAAO;gBACZ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;gBACzG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YACnE,OAAO,GAAG,OAAO,CAAC,MAAM,SAAS,CAAC;QACpC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAExD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE;QACpC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,qBAAqB,CAAC,EAAE,CAAC;QAC1E,gHAAgH;QAChH,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACtG,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,kHAAkH;YAClH,oFAAoF;YACpF,MAAM,MAAM,GAAI,CAA0B,CAAC,MAAM,CAAC;YAClD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,MAAM,CAAC,CAAC;QAC3E,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC;QAChG,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,OAAO,EAAE,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAgC,CAAC,KAAK,IAAI,EAAE;QAC1D,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5G,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,8CAA8C,EAAE,CAAC;QACpG,0EAA0E;QAC1E,OAAO,QAAQ,CAAC,KAAK,IAAI,EAAE;YACzB,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC7F,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,qBAAqB,CAAC,EAAE,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO;QACL,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE;QAC1D,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,EAAE;QACzH,UAAU,EAAE,MAAM,UAAU;QAC5B,OAAO,EAAE,MAAM,OAAO;QACtB,SAAS,EAAE,MAAM,SAAS;QAC1B,UAAU,EAAE,MAAM,UAAU;QAC5B,6EAA6E;QAC7E,SAAS,EAAE,CAAC,GAAuB,EAAE;YACnC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,OAAO,CAAC,KAAK,SAAS;gBACpB,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,8EAA8E,EAAE;gBACvG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;QACvD,CAAC,CAAC,EAAE;KACL,CAAC;AACJ,CAAC"}
@@ -36,10 +36,26 @@ export const NAVEGADORES_CONOCIDOS = [
36
36
  "/usr/bin/google-chrome",
37
37
  "/usr/bin/google-chrome-stable",
38
38
  ];
39
+ /**
40
+ * Los de WINDOWS, por sus carpetas de programas (de las variables, nunca una letra de unidad a fuego). Edge va primero: lo
41
+ * trae todo Windows. Medido en la máquina Windows de un usuario: con solo las rutas de macOS y Linux, el crítico de pantalla
42
+ * decía «no hay Chrome ni Chromium» y comparaba contra una descripción en vez de medir las cajas de la maqueta.
43
+ */
44
+ export function navegadoresDeWindows(entorno) {
45
+ const bases = [entorno["ProgramFiles(x86)"], entorno["ProgramFiles"], entorno["LOCALAPPDATA"]].filter((b) => b !== undefined && b !== "");
46
+ const relativos = [
47
+ "Microsoft\\Edge\\Application\\msedge.exe",
48
+ "Google\\Chrome\\Application\\chrome.exe",
49
+ "Chromium\\Application\\chrome.exe",
50
+ "BraveSoftware\\Brave-Browser\\Application\\brave.exe",
51
+ ];
52
+ return relativos.flatMap((r) => bases.map((b) => `${b.replace(/[\\/]$/, "")}\\${r}`));
53
+ }
39
54
  /** El primero que exista, o AUSENTE. Ausente = aquí no se puede imprimir, y se DICE con el
40
55
  * remedio: no hay forma de adivinar que lo que falta es un navegador. */
41
- export function navegadorParaImprimir(existe = existsSync) {
42
- return NAVEGADORES_CONOCIDOS.find((ruta) => existe(ruta));
56
+ export function navegadorParaImprimir(existe = existsSync, plataforma = process.platform, entorno = process.env) {
57
+ const lista = plataforma === "win32" ? navegadoresDeWindows(entorno) : [...NAVEGADORES_CONOCIDOS];
58
+ return lista.find((ruta) => existe(ruta));
43
59
  }
44
60
  /** Qué decir cuando no hay ninguno. Vive aquí y no en quien llama para que las tres pieles
45
61
  * digan lo mismo. */
@@ -1 +1 @@
1
- {"version":3,"file":"exportarPdf.js","sourceRoot":"","sources":["../../src/agent/exportarPdf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exportarPdf.js","sourceRoot":"","sources":["../../src/agent/exportarPdf.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,7 @@ import { cambiosQueSeVerifican, huellaDeErrores, repartirHallazgos, textoDeRepar
42
42
  import { correrTurno } from "../../../core/turno.js";
43
43
  import { createTokenTracker } from "../../../vendor/tokenTracking.js";
44
44
  import { MAX_APPROVAL_ROUNDS } from "../../../vendor/hitl.js";
45
+ import { resumenDelEntorno } from "../../../core/shellDeAgente.js";
45
46
  import { artefactosNuevos, backendDeAgente, entornoDeLaShellDelProyecto, fotoDeArtefactos, lectorDelDispositivoDeSesion, scriptsConRuta } from "../../grafo/proyecto.js";
46
47
  import { carpetaDeHotswap } from "../../../core/hotswap.js";
47
48
  import { cargarAgentes } from "../../subagentes/agentesEnDisco.js";
@@ -543,6 +544,15 @@ export async function abrirSesionTrueforge(opciones) {
543
544
  // El CHAT es la sesión con la que se abrió (`opciones.hilo`, el id del índice), no el `hilo` de
544
545
  // ahora: `/nuevo` abre otro hilo huérfano pero los actos siguen yendo a la misma sesión.
545
546
  const diagnostico = opciones.diagnostico ?? crearDiagnosticoDeTools(raiz, entornoDeDiagnostico, opciones.hilo);
547
+ /** La traza del entorno de NUESTRA shell (la de quien ejecuta), una vez por sesión: es la misma para todos. */
548
+ let entornoTrazado = false;
549
+ const conTrazaDelEntorno = (entorno) => {
550
+ if (!entornoTrazado) {
551
+ entornoTrazado = true;
552
+ diagnostico?.entorno?.("shell propia", resumenDelEntorno(entorno, { plataforma: process.platform, existe: existsSync }));
553
+ }
554
+ return entorno;
555
+ };
546
556
  /**
547
557
  * La traza de EXCEPCIONES e HITOS, la MISMA de deepagents (`turnoReal.ts`) y que aquí
548
558
  * faltaba por completo: TrueForge nunca la encendía, ni siquiera con la variable de entorno
@@ -1048,10 +1058,19 @@ export async function abrirSesionTrueforge(opciones) {
1048
1058
  lecturas: [carpeta, carpetaDeHotswap(carpeta)],
1049
1059
  // En Windows un script sin extensión no se lanza por su nombre: la segunda llave lo reescribe a `node '<ruta>'`.
1050
1060
  ...(process.platform === "win32"
1051
- ? { rutasConNode: Object.fromEntries(scriptsDelHijo.map((s) => [s.nombre, s.ruta])) }
1061
+ ? { rutasConNode: Object.fromEntries(scriptsDelHijo.map((s) => [s.nombre, s.ruta])), nodeDelServidor: process.execPath }
1052
1062
  : {}),
1053
1063
  }
1054
1064
  : undefined;
1065
+ // La traza del ENTORNO de su shell (con «Depurar»): medido en Windows, el PATH estaba roto y la traza no decía nada.
1066
+ if (ejecucion !== undefined) {
1067
+ diagnostico?.entorno?.(agente.nombre, resumenDelEntorno(ejecucion.entorno, {
1068
+ plataforma: process.platform,
1069
+ existe: existsSync,
1070
+ scripts: ejecucion.scripts.length,
1071
+ ...("nodeDelServidor" in ejecucion && ejecucion.nodeDelServidor !== undefined ? { nodeDelServidor: ejecucion.nodeDelServidor } : {}),
1072
+ }));
1073
+ }
1055
1074
  // Las carpetas de la sesión se LEEN aunque no ejecute: es donde el orquestador le deja la maqueta y las capturas.
1056
1075
  const lecturasDeSesion = motor === "claude-code" && carpeta !== undefined ? [carpeta, carpetaDeHotswap(carpeta)] : undefined;
1057
1076
  /**
@@ -1103,6 +1122,8 @@ export async function abrirSesionTrueforge(opciones) {
1103
1122
  ...(lecturasDeSesion === undefined ? {} : { lecturas: lecturasDeSesion }),
1104
1123
  // El esfuerzo de su `.md`, que Claude Code aplica como `effort`; los otros dos no tienen dónde recibirlo.
1105
1124
  ...(motor === "claude-code" && agente.esfuerzo !== undefined ? { esfuerzo: agente.esfuerzo } : {}),
1125
+ // Su shell y sus negativas, a la traza (con «Depurar»).
1126
+ ...(diagnostico?.externo === undefined ? {} : { trazar: (d) => diagnostico.externo(agente.nombre, d) }),
1106
1127
  }),
1107
1128
  senal: () => aborto?.signal,
1108
1129
  }),
@@ -1184,7 +1205,7 @@ export async function abrirSesionTrueforge(opciones) {
1184
1205
  // El aparato elegido manda también en la shell (IXCODE-32): del MISMO fichero que leen los scripts.
1185
1206
  dispositivo: lectorDelDispositivoDeSesion(opciones.artefactos),
1186
1207
  conShell: () => montarBackend({
1187
- entorno: entornoDeLaShellDelProyecto(raiz, opciones.artefactos),
1208
+ entorno: conTrazaDelEntorno(entornoDeLaShellDelProyecto(raiz, opciones.artefactos)),
1188
1209
  // El MISMO patrón que ya usa `modeloParaTrueforge` un poco más arriba en este
1189
1210
  // fichero: un getter que se reevalúa en cada llamada, así siempre lee el
1190
1211
  // `AbortController` de la RONDA en curso y no uno capturado al construir.