xonecode 0.31.0 → 0.34.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/apps/web/dist/assets/{EditorDeFichero-ChyJtiiz.js → EditorDeFichero-Cj0knNmP.js} +1 -1
  2. package/apps/web/dist/assets/index-Ga8fTlWp.js +499 -0
  3. package/apps/web/dist/assets/{index-IptObD2z.css → index-R3kXj69E.css} +1 -1
  4. package/apps/web/dist/assets/{php-B91ZcS-9.js → php-MVUx_K96.js} +1 -1
  5. package/apps/web/dist/assets/{ruby-DrxrTSz0.js → ruby-n-r-AXdi.js} +1 -1
  6. package/apps/web/dist/index.html +2 -2
  7. package/dist/agent/config/fuentesEnRed.js +80 -0
  8. package/dist/agent/config/fuentesEnRed.js.map +1 -0
  9. package/dist/agent/config/modelosDeMotor.js +4 -2
  10. package/dist/agent/config/modelosDeMotor.js.map +1 -1
  11. package/dist/agent/config/settingsEnDisco.js +26 -0
  12. package/dist/agent/config/settingsEnDisco.js.map +1 -1
  13. package/dist/agent/dispositivos/cajasDeMaqueta.js +218 -0
  14. package/dist/agent/dispositivos/cajasDeMaqueta.js.map +1 -0
  15. package/dist/agent/dispositivos/geometriaEnDisco.js +107 -0
  16. package/dist/agent/dispositivos/geometriaEnDisco.js.map +1 -0
  17. package/dist/agent/dispositivos/juezVisual.js +84 -3
  18. package/dist/agent/dispositivos/juezVisual.js.map +1 -1
  19. package/dist/agent/grafo/criticaVisual.js +246 -11
  20. package/dist/agent/grafo/criticaVisual.js.map +1 -1
  21. package/dist/agent/grafo/fuentesDeGoogle.js +133 -0
  22. package/dist/agent/grafo/fuentesDeGoogle.js.map +1 -0
  23. package/dist/agent/grafo/incorporarAdjunto.js +52 -42
  24. package/dist/agent/grafo/incorporarAdjunto.js.map +1 -1
  25. package/dist/agent/grafo/lectorDeReferencias.js +21 -0
  26. package/dist/agent/grafo/lectorDeReferencias.js.map +1 -1
  27. package/dist/agent/grafo/perfiles.js +2 -0
  28. package/dist/agent/grafo/perfiles.js.map +1 -1
  29. package/dist/agent/motores/motoresLocales.js +429 -0
  30. package/dist/agent/motores/motoresLocales.js.map +1 -0
  31. package/dist/agent/motores/trueforge/capacidades.js +9 -6
  32. package/dist/agent/motores/trueforge/capacidades.js.map +1 -1
  33. package/dist/agent/motores/trueforge/informesDeHijos.js +39 -7
  34. package/dist/agent/motores/trueforge/informesDeHijos.js.map +1 -1
  35. package/dist/agent/motores/trueforge/memoriaDeEspecialistas.js +75 -37
  36. package/dist/agent/motores/trueforge/memoriaDeEspecialistas.js.map +1 -1
  37. package/dist/agent/motores/trueforge/memoriaTrueforge.js +24 -4
  38. package/dist/agent/motores/trueforge/memoriaTrueforge.js.map +1 -1
  39. package/dist/agent/motores/trueforge/modeloLangchain.js +28 -4
  40. package/dist/agent/motores/trueforge/modeloLangchain.js.map +1 -1
  41. package/dist/agent/motores/trueforge/proponerTareas.js +67 -0
  42. package/dist/agent/motores/trueforge/proponerTareas.js.map +1 -0
  43. package/dist/agent/motores/trueforge/sesionTrueforge.js +133 -13
  44. package/dist/agent/motores/trueforge/sesionTrueforge.js.map +1 -1
  45. package/dist/agent/motores/trueforge/toolsDeFichero.js +24 -6
  46. package/dist/agent/motores/trueforge/toolsDeFichero.js.map +1 -1
  47. package/dist/agent/sesiones/adjuntosDeSesion.js +192 -5
  48. package/dist/agent/sesiones/adjuntosDeSesion.js.map +1 -1
  49. package/dist/agent/subagentes/agentesEnDisco.js +12 -4
  50. package/dist/agent/subagentes/agentesEnDisco.js.map +1 -1
  51. package/dist/agent/subagentes/ejecutableEnWindows.js +139 -0
  52. package/dist/agent/subagentes/ejecutableEnWindows.js.map +1 -0
  53. package/dist/agent/subagentes/subagenteCodex.js +7 -2
  54. package/dist/agent/subagentes/subagenteCodex.js.map +1 -1
  55. package/dist/agent/subagentes/subagenteOpencode.js +12 -5
  56. package/dist/agent/subagentes/subagenteOpencode.js.map +1 -1
  57. package/dist/agent/tareas/aumentador.js +4 -3
  58. package/dist/agent/tareas/aumentador.js.map +1 -1
  59. package/dist/agent/turno/informeDeTraza.js +2 -1
  60. package/dist/agent/turno/informeDeTraza.js.map +1 -1
  61. package/dist/agent/turno/interrupts.js +12 -0
  62. package/dist/agent/turno/interrupts.js.map +1 -1
  63. package/dist/agent/turno/resumenDeTool.js +4 -0
  64. package/dist/agent/turno/resumenDeTool.js.map +1 -1
  65. package/dist/agent/turno/turnoReal.js +3 -0
  66. package/dist/agent/turno/turnoReal.js.map +1 -1
  67. package/dist/cli/consola.js.map +1 -1
  68. package/dist/cli/main.js +2 -0
  69. package/dist/cli/main.js.map +1 -1
  70. package/dist/cli/tui/transcript.js +5 -0
  71. package/dist/cli/tui/transcript.js.map +1 -1
  72. package/dist/core/actos.js.map +1 -1
  73. package/dist/core/adjuntos.js +10 -2
  74. package/dist/core/adjuntos.js.map +1 -1
  75. package/dist/core/agentes.js +10 -0
  76. package/dist/core/agentes.js.map +1 -1
  77. package/dist/core/analisisDeSesion.js +1 -1
  78. package/dist/core/analisisDeSesion.js.map +1 -1
  79. package/dist/core/descripcionDePantalla.js +367 -0
  80. package/dist/core/descripcionDePantalla.js.map +1 -0
  81. package/dist/core/estiloMedido.js +352 -0
  82. package/dist/core/estiloMedido.js.map +1 -0
  83. package/dist/core/fuentes.js +174 -0
  84. package/dist/core/fuentes.js.map +1 -0
  85. package/dist/core/geometriaDePantalla.js +537 -0
  86. package/dist/core/geometriaDePantalla.js.map +1 -0
  87. package/dist/core/motoresLocales.js +128 -0
  88. package/dist/core/motoresLocales.js.map +1 -0
  89. package/dist/core/notify.js +4 -0
  90. package/dist/core/notify.js.map +1 -1
  91. package/dist/core/nucleoXone.js +6 -6
  92. package/dist/core/nucleoXone.js.map +1 -1
  93. package/dist/core/ports.js +35 -0
  94. package/dist/core/ports.js.map +1 -1
  95. package/dist/core/repartoDeEncargo.js +87 -0
  96. package/dist/core/repartoDeEncargo.js.map +1 -0
  97. package/dist/core/settings.js +5 -0
  98. package/dist/core/settings.js.map +1 -1
  99. package/dist/core/shellDeAgente.js +36 -0
  100. package/dist/core/shellDeAgente.js.map +1 -1
  101. package/dist/core/tareas.js +7 -0
  102. package/dist/core/tareas.js.map +1 -1
  103. package/dist/core/turno.js +15 -0
  104. package/dist/core/turno.js.map +1 -1
  105. package/dist/core/zipDeAdjunto.js +79 -0
  106. package/dist/core/zipDeAdjunto.js.map +1 -0
  107. package/dist/web/servidor/arranque.js +201 -13
  108. package/dist/web/servidor/arranque.js.map +1 -1
  109. package/dist/web/servidor/consolaWeb.js +5 -0
  110. package/dist/web/servidor/consolaWeb.js.map +1 -1
  111. package/dist/web/servidor/interrupcion.js +52 -0
  112. package/dist/web/servidor/interrupcion.js.map +1 -0
  113. package/dist/web/servidor/pielWeb.js +36 -0
  114. package/dist/web/servidor/pielWeb.js.map +1 -1
  115. package/dist/web/servidor/transporte.js +1 -0
  116. package/dist/web/servidor/transporte.js.map +1 -1
  117. package/dist/web/servidor/vestibulo.js +30 -2
  118. package/dist/web/servidor/vestibulo.js.map +1 -1
  119. package/package.json +1 -1
  120. package/skills/xone-development/SKILL.md +2 -1
  121. package/skills/xone-development/references/css/buenas-practicas-y-parser.md +2 -1
  122. package/skills/xone-development/references/css/de-una-maqueta-a-xone.md +83 -0
  123. package/skills/xone-development/references/css/patrones-material-y-temas.md +15 -13
  124. package/skills/xone-development/references/css/propiedades-y-herencia.md +2 -2
  125. package/skills/xone-development/references/css/selectores-unidades-colores.md +8 -3
  126. package/skills/xone-development/references/indice-completo.md +1 -0
  127. package/skills/xone-development/references/xml-ui/atributos-coll-group-frame.md +4 -4
  128. package/skills/xone-development/references/xml-ui/nodos-group-y-frame.md +4 -4
  129. package/skills/xone-hotswap/lib/geometria.mjs +147 -0
  130. package/skills/xone-hotswap/scripts/xone-captura-android +6 -0
  131. package/skills/xone-hotswap/scripts/xone-hotswap +8 -0
  132. package/skills/xone-hotswap/scripts/xone-recargar-android +15 -0
  133. package/apps/web/dist/assets/index-CFIrUOmW.js +0 -499
@@ -0,0 +1,429 @@
1
+ /**
2
+ * Los motores locales en la máquina: medir si están y con qué sesión, PROBARLOS con un encargo de
3
+ * verdad, e iniciar la sesión de Claude Code desde un botón. Las reglas puras están en
4
+ * `core/motoresLocales.ts`; aquí solo hay procesos.
5
+ *
6
+ * Tres decisiones que no se ven en el código:
7
+ *
8
+ * - **Se mide el binario que el SDK LANZA**, el de su paquete de plataforma, y no el `claude` del
9
+ * PATH: pueden ser versiones distintas (medido: 2.1.263 frente a 2.1.287), y medir el otro
10
+ * diría algo de un programa que los subagentes no corren. Sin respaldo al PATH, a propósito.
11
+ * - **La prueba sale por el MISMO puerto que un encargo real** (`crearSubagenteExterno().correr`),
12
+ * no por un `query()` montado aquí: una prueba con sus propias opciones mediría otra cosa —el
13
+ * patrón de fallo de siempre, una composición que solo existe donde nadie la usa—.
14
+ * - **`auth login` funciona sin TTY** (medido con el binario del SDK y un `CLAUDE_CONFIG_DIR`
15
+ * aislado): abre el navegador él solo, imprime un enlace de respaldo y espera «Paste code here
16
+ * if prompted». Así que el botón lanza el proceso y, si la web enseña un código, se le pasa
17
+ * por `stdin`. **El enlace no cruza el cable** (la regla de los conectores): si el navegador
18
+ * no se abrió, lo vuelve a abrir el SERVIDOR. Límite declarado: por un túnel no sirve.
19
+ */
20
+ import { exec, execFile, spawn } from "node:child_process";
21
+ import { mkdirSync } from "node:fs";
22
+ import { createRequire } from "node:module";
23
+ import { tmpdir } from "node:os";
24
+ import { join } from "node:path";
25
+ import { promisify } from "node:util";
26
+ import { INSTRUCCIONES_DE_PRUEBA, MOTORES_CON_MODELO, MOTORES_LOCALES, motivoDeModeloDeMotorInaceptable, TAREA_DE_PRUEBA, interpretarAuthStatusDeClaude, lineaDeSesionDeClaude, pideCodigo, recortar, respuestaDePruebaValida, sinUrls, ultimaLinea, urlDeAutorizacion, versionDeSalida, } from "../../core/motoresLocales.js";
27
+ import { entornoDeShell } from "../../core/shellDeAgente.js";
28
+ import { mensajeSeguro } from "../../core/trazaDeErrores.js";
29
+ import { describirFallo } from "../dispositivos/dispositivosEnMaquina.js";
30
+ import { abrirEnSistema } from "../cloudstudio/cloudstudioMcp.js";
31
+ import { crearSubagenteExterno } from "../subagentes/subagenteExterno.js";
32
+ import { binarioDeCodex } from "../subagentes/subagenteCodex.js";
33
+ import { binarioDeOpencode } from "../subagentes/subagenteOpencode.js";
34
+ import { guardarModeloDeOpencode, modeloDeOpencodeGuardado } from "../config/settingsEnDisco.js";
35
+ /** `--version` y `auth status`: si tardan más, el binario no está bien. */
36
+ export const TOPE_DE_MEDIDA_MS = 15_000;
37
+ /** Un primer arranque de Claude Code en frío tarda; dos minutos es «no contesta». */
38
+ export const TOPE_DE_PRUEBA_MS = 120_000;
39
+ /** Lo que se espera a que la persona termine en el navegador. */
40
+ export const TOPE_DE_LOGIN_MS = 10 * 60_000;
41
+ /**
42
+ * El `claude` del paquete de plataforma del SDK, con la MISMA regla con que lo busca el SDK
43
+ * (`sdk.mjs`): `@anthropic-ai/claude-agent-sdk-<plataforma>-<arquitectura>/claude[.exe]`, y en
44
+ * Linux las dos variantes de libc. Resuelto por el cargador de módulos, nunca contando `..`.
45
+ */
46
+ export function binarioDeClaudeDelSdk(plataforma = process.platform, arquitectura = process.arch, resolver = createRequire(import.meta.url).resolve) {
47
+ const base = "@anthropic-ai/claude-agent-sdk";
48
+ const paquetes = plataforma === "linux" ? [`${base}-linux-${arquitectura}`, `${base}-linux-${arquitectura}-musl`] : [`${base}-${plataforma}-${arquitectura}`];
49
+ const sufijo = plataforma === "win32" ? ".exe" : "";
50
+ for (const paquete of paquetes) {
51
+ try {
52
+ return resolver(`${paquete}/claude${sufijo}`);
53
+ }
54
+ catch {
55
+ // No está esta variante: la siguiente.
56
+ }
57
+ }
58
+ return undefined;
59
+ }
60
+ /** El entorno de NUESTRA shell, sin claves de API: el de un subagente con `ejecucion`. */
61
+ function limpio(entorno) {
62
+ return entornoDeShell({ entorno });
63
+ }
64
+ /** ¿El entorno heredado lleva algo de Anthropic que el limpio quita? Entonces son dos caminos. */
65
+ function heredaClaveDeAnthropic(entorno) {
66
+ const sin = limpio(entorno);
67
+ return Object.keys(entorno).some((k) => k.startsWith("ANTHROPIC_") && entorno[k] !== undefined && !(k in sin));
68
+ }
69
+ const execFileP = promisify(execFile);
70
+ const execP = promisify(exec);
71
+ /**
72
+ * Un proceso corto de verdad. Un nombre a secas en Windows va por la shell: `codex` y `opencode`
73
+ * los instala npm como `.cmd`, y `execFile` sin shell no los encuentra. Los argumentos son
74
+ * constantes de este fichero, así que componer la línea no abre ninguna inyección.
75
+ */
76
+ async function ejecutarReal(binario, args, opciones) {
77
+ const env = opciones.entorno;
78
+ if (process.platform === "win32" && !/[\\/]/.test(binario)) {
79
+ const { stdout, stderr } = await execP([binario, ...args].join(" "), { timeout: opciones.timeout, env, windowsHide: true, encoding: "utf8" });
80
+ return { stdout: String(stdout), stderr: String(stderr) };
81
+ }
82
+ const { stdout, stderr } = await execFileP(binario, [...args], { timeout: opciones.timeout, env, windowsHide: true, encoding: "utf8" });
83
+ return { stdout: String(stdout), stderr: String(stderr) };
84
+ }
85
+ function lanzarReal(binario, args, opciones) {
86
+ return spawn(binario, [...args], { env: opciones.entorno, stdio: ["pipe", "pipe", "pipe"], windowsHide: true });
87
+ }
88
+ /**
89
+ * Una terminal con el comando ya escrito: el respaldo de cuando el botón no puede (el navegador
90
+ * es de otra máquina, o la persona prefiere verlo). Solo Windows y macOS, donde se sabe qué
91
+ * terminal hay; en el resto no se ofrece, que es mejor que un botón que no hace nada.
92
+ */
93
+ function abrirTerminalReal(binario, args, entorno) {
94
+ const env = entorno;
95
+ if (process.platform === "win32") {
96
+ const comando = `& '${binario.replace(/'/g, "''")}' ${args.join(" ")}`;
97
+ const hijo = spawn("cmd.exe", ["/c", "start", "", "powershell", "-NoExit", "-Command", comando], { env, detached: true, stdio: "ignore" });
98
+ hijo.on("error", () => { });
99
+ hijo.unref();
100
+ return true;
101
+ }
102
+ if (process.platform === "darwin") {
103
+ const linea = `'${binario.replace(/'/g, `'\\''`)}' ${args.join(" ")}`;
104
+ const guion = `tell application "Terminal" to do script "${linea.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
105
+ const hijo = spawn("osascript", ["-e", guion, "-e", 'tell application "Terminal" to activate'], { env, detached: true, stdio: "ignore" });
106
+ hijo.on("error", () => { });
107
+ hijo.unref();
108
+ return true;
109
+ }
110
+ return false;
111
+ }
112
+ /**
113
+ * La prueba de producción: el MISMO puerto que corre un subagente, sin política de escritura
114
+ * (nada que escribir) y en una carpeta vacía fuera de cualquier proyecto. Con `con-ejecucion`
115
+ * lleva el entorno limpio, que es lo que recibe un agente con `ejecucion: true`.
116
+ */
117
+ async function probarReal(peticion) {
118
+ const cwd = join(tmpdir(), "xonecode-prueba-de-motor");
119
+ mkdirSync(cwd, { recursive: true });
120
+ return crearSubagenteExterno({}).correr({
121
+ motor: peticion.motor,
122
+ cwd,
123
+ instrucciones: INSTRUCCIONES_DE_PRUEBA,
124
+ tarea: TAREA_DE_PRUEBA,
125
+ permitirEscritura: false,
126
+ agente: "prueba-de-conexion",
127
+ senal: peticion.senal,
128
+ ...(peticion.camino === "con-ejecucion" ? { ejecucion: { scripts: [], entorno: peticion.entornoLimpio, lecturas: [] } } : {}),
129
+ });
130
+ }
131
+ /**
132
+ * La salida de un proceso que contesta TAMBIÉN cuando sale con otro código: `claude auth status`
133
+ * sin sesión imprime su JSON y sale con 1 (medido). Un tope o un binario que no está sí lanzan.
134
+ */
135
+ async function salidaAunqueFalle(promesa) {
136
+ try {
137
+ return (await promesa).stdout;
138
+ }
139
+ catch (error) {
140
+ const e = error;
141
+ if (e !== null && typeof e === "object" && e.killed !== true && typeof e.code === "number" && typeof e.stdout === "string") {
142
+ return e.stdout;
143
+ }
144
+ throw error;
145
+ }
146
+ }
147
+ /** Lo que se cuenta de un error: una línea, sin rutas ni enlaces. */
148
+ function motivoDe(error, topeMs) {
149
+ return recortar(sinUrls(mensajeSeguro(describirFallo(error, topeMs))));
150
+ }
151
+ export function crearServicioDeMotoresLocales(deps) {
152
+ const plataforma = deps.plataforma ?? process.platform;
153
+ const entorno = () => deps.entorno ?? process.env;
154
+ const ahora = () => (deps.ahora ?? (() => new Date()))().toISOString();
155
+ const binarioDeClaude = deps.binarioDeClaude ?? (() => binarioDeClaudeDelSdk());
156
+ const ejecutar = deps.ejecutar ?? ejecutarReal;
157
+ const lanzar = deps.lanzar ?? lanzarReal;
158
+ const probarMotor = deps.probar ?? probarReal;
159
+ const abrir = deps.abrir ?? ((url) => abrirEnSistema(new URL(url)));
160
+ const abrirTerminal = deps.abrirTerminal ?? abrirTerminalReal;
161
+ const admiteConsola = deps.abrirTerminal !== undefined || plataforma === "win32" || plataforma === "darwin";
162
+ const leerModelo = deps.leerModelo ?? ((motor) => (motor === "opencode" ? modeloDeOpencodeGuardado() : undefined));
163
+ const guardarModelo = deps.guardarModelo ??
164
+ ((motor, modelo) => {
165
+ if (motor === "opencode")
166
+ guardarModeloDeOpencode(undefined, modelo);
167
+ });
168
+ /** Lo que la tarjeta necesita para el selector: que lo admite, y cuál hay. */
169
+ const deModelo = (motor) => {
170
+ if (!MOTORES_CON_MODELO.includes(motor))
171
+ return {};
172
+ const modelo = leerModelo(motor);
173
+ return { admiteModelo: true, ...(modelo === undefined ? {} : { modelo }) };
174
+ };
175
+ const estados = new Map();
176
+ const logins = new Map();
177
+ let medida;
178
+ const poner = (motor, cambio, quitar = []) => {
179
+ const antes = estados.get(motor) ?? { motor, instalado: "fallo", medido: ahora() };
180
+ const nuevo = { ...antes, ...cambio };
181
+ for (const campo of quitar)
182
+ delete nuevo[campo];
183
+ estados.set(motor, nuevo);
184
+ deps.alCambiar();
185
+ };
186
+ async function medirClaude() {
187
+ const bin = binarioDeClaude();
188
+ if (bin === undefined) {
189
+ return { instalado: "no-encontrado", detalle: "el SDK de Claude Code no trae binario para este sistema" };
190
+ }
191
+ let version;
192
+ try {
193
+ version = versionDeSalida((await ejecutar(bin, ["--version"], { timeout: TOPE_DE_MEDIDA_MS, entorno: entorno() })).stdout);
194
+ }
195
+ catch (error) {
196
+ return { instalado: "fallo", detalle: motivoDe(error, TOPE_DE_MEDIDA_MS) };
197
+ }
198
+ const base = { instalado: "ok", admiteLogin: true, ...(admiteConsola ? { admiteConsola: true } : {}), ...(version === undefined ? {} : { version }) };
199
+ try {
200
+ const sesion = interpretarAuthStatusDeClaude(await salidaAunqueFalle(ejecutar(bin, ["auth", "status", "--json"], { timeout: TOPE_DE_MEDIDA_MS, entorno: limpio(entorno()) })));
201
+ if (sesion === undefined)
202
+ return { ...base, detalle: "no se pudo leer el estado de la sesión" };
203
+ let conClave = false;
204
+ if (heredaClaveDeAnthropic(entorno())) {
205
+ const heredada = interpretarAuthStatusDeClaude(await salidaAunqueFalle(ejecutar(bin, ["auth", "status", "--json"], { timeout: TOPE_DE_MEDIDA_MS, entorno: entorno() })));
206
+ conClave = heredada?.porClave === true;
207
+ }
208
+ return { ...base, conSesion: sesion.iniciada, sesion: lineaDeSesionDeClaude(sesion), ...(conClave ? { conClave: true } : {}) };
209
+ }
210
+ catch (error) {
211
+ return { ...base, detalle: `no se pudo leer la sesión: ${motivoDe(error, TOPE_DE_MEDIDA_MS)}` };
212
+ }
213
+ }
214
+ /**
215
+ * Codex y OpenCode: si están y qué versión. La sesión de Codex se lee de `codex login status`,
216
+ * que sale con 0 solo con sesión (y dice cuál en una línea). La de OpenCode NO se lee: `auth
217
+ * list` pinta una tabla para personas, y adivinar de ella sería afirmar sin medida — lo dice la
218
+ * prueba. Límite declarado: ninguno de los dos estaba instalado donde se escribió esto.
219
+ */
220
+ async function medirOtro(motor) {
221
+ const bin = motor === "codex" ? binarioDeCodex() : binarioDeOpencode();
222
+ let version;
223
+ try {
224
+ const s = await ejecutar(bin, ["--version"], { timeout: TOPE_DE_MEDIDA_MS, entorno: entorno() });
225
+ version = versionDeSalida(`${s.stdout}\n${s.stderr}`);
226
+ }
227
+ catch (error) {
228
+ const e = error;
229
+ const noEsta = e?.code === "ENOENT" ||
230
+ e?.code === 127 ||
231
+ (e?.code === 1 && typeof e.stderr === "string" && /not recognized|no se reconoce/i.test(e.stderr));
232
+ return noEsta
233
+ ? { instalado: "no-encontrado", detalle: `${motor} no está instalado o no está en el PATH` }
234
+ : { instalado: "fallo", detalle: motivoDe(error, TOPE_DE_MEDIDA_MS) };
235
+ }
236
+ const base = { instalado: "ok", ...(version === undefined ? {} : { version }) };
237
+ if (motor === "opencode")
238
+ return base;
239
+ try {
240
+ const s = await ejecutar(bin, ["login", "status"], { timeout: TOPE_DE_MEDIDA_MS, entorno: entorno() });
241
+ const linea = ultimaLinea(`${s.stdout}\n${s.stderr}`);
242
+ return { ...base, conSesion: true, ...(linea === undefined ? {} : { sesion: linea }) };
243
+ }
244
+ catch (error) {
245
+ const e = error;
246
+ if (e?.killed === true)
247
+ return { ...base, detalle: motivoDe(error, TOPE_DE_MEDIDA_MS) };
248
+ const linea = ultimaLinea(`${typeof e?.stdout === "string" ? e.stdout : ""}\n${typeof e?.stderr === "string" ? e.stderr : ""}`);
249
+ return { ...base, conSesion: false, sesion: linea ?? "Sin sesión iniciada" };
250
+ }
251
+ }
252
+ async function medirTodos() {
253
+ const medidas = await Promise.all(MOTORES_LOCALES.map(async (motor) => [motor, motor === "claude-code" ? await medirClaude() : await medirOtro(motor)]));
254
+ const medido = ahora();
255
+ for (const [motor, medidaDelMotor] of medidas) {
256
+ const antes = estados.get(motor);
257
+ // Lo que no es de la medida —las pruebas, el login en curso, «probando»— se conserva:
258
+ // volver a medir no borra la respuesta que se acaba de ver.
259
+ const conserva = {
260
+ ...(antes?.pruebas === undefined ? {} : { pruebas: antes.pruebas }),
261
+ ...(antes?.probando === undefined ? {} : { probando: antes.probando }),
262
+ ...(antes?.login === undefined ? {} : { login: antes.login }),
263
+ };
264
+ estados.set(motor, { motor, ...medidaDelMotor, ...deModelo(motor), ...conserva, medido });
265
+ }
266
+ deps.alCambiar();
267
+ }
268
+ const servicio = {
269
+ foto: () => (estados.size === 0 ? undefined : MOTORES_LOCALES.flatMap((m) => estados.get(m) ?? [])),
270
+ medir() {
271
+ // Dos «Volver a comprobar» seguidos esperan a la MISMA medida en vez de lanzar otra.
272
+ medida ??= medirTodos().finally(() => {
273
+ medida = undefined;
274
+ });
275
+ return medida;
276
+ },
277
+ async probar(motor) {
278
+ if (estados.get(motor)?.probando === true)
279
+ return;
280
+ const caminos = motor === "claude-code" && heredaClaveDeAnthropic(entorno()) ? ["sin-ejecucion", "con-ejecucion"] : ["unico"];
281
+ poner(motor, { probando: true });
282
+ const pruebas = [];
283
+ for (const camino of caminos) {
284
+ const controlador = new AbortController();
285
+ const tope = setTimeout(() => controlador.abort(), TOPE_DE_PRUEBA_MS);
286
+ const inicio = Date.now();
287
+ try {
288
+ const respuesta = await probarMotor({ motor, camino, entornoLimpio: limpio(entorno()), senal: controlador.signal });
289
+ const ok = respuestaDePruebaValida(respuesta);
290
+ pruebas.push({
291
+ camino,
292
+ ok,
293
+ detalle: ok ? `contestó «${recortar(sinUrls(respuesta), 60)}»` : `contestó otra cosa: «${recortar(sinUrls(respuesta), 100)}»`,
294
+ ms: Date.now() - inicio,
295
+ medido: ahora(),
296
+ });
297
+ }
298
+ catch (error) {
299
+ const detalle = controlador.signal.aborted
300
+ ? `no contestó en ${Math.round(TOPE_DE_PRUEBA_MS / 1000)} s`
301
+ : recortar(sinUrls(mensajeSeguro(error instanceof Error ? error.message : String(error))));
302
+ pruebas.push({ camino, ok: false, detalle, ms: Date.now() - inicio, medido: ahora() });
303
+ }
304
+ finally {
305
+ clearTimeout(tope);
306
+ }
307
+ }
308
+ poner(motor, { pruebas }, ["probando"]);
309
+ },
310
+ iniciarSesion(motor, modo) {
311
+ if (motor !== "claude-code" || logins.has(motor))
312
+ return false;
313
+ const bin = binarioDeClaude();
314
+ if (bin === undefined) {
315
+ poner(motor, { login: { fase: "fallo", detalle: "el SDK de Claude Code no trae binario para este sistema", desde: ahora() } });
316
+ return false;
317
+ }
318
+ let hijo;
319
+ try {
320
+ hijo = lanzar(bin, ["auth", "login", modo === "console" ? "--console" : "--claudeai"], { entorno: limpio(entorno()) });
321
+ }
322
+ catch (error) {
323
+ poner(motor, { login: { fase: "fallo", detalle: motivoDe(error, TOPE_DE_LOGIN_MS), desde: ahora() } });
324
+ return false;
325
+ }
326
+ const desde = ahora();
327
+ let salida = "";
328
+ const vivo = {
329
+ hijo,
330
+ cancelado: false,
331
+ tope: setTimeout(() => {
332
+ vivo.cancelado = true;
333
+ hijo.kill();
334
+ cerrar("fallo", `no se terminó en ${Math.round(TOPE_DE_LOGIN_MS / 60_000)} minutos`);
335
+ }, TOPE_DE_LOGIN_MS),
336
+ };
337
+ logins.set(motor, vivo);
338
+ poner(motor, { login: { fase: "esperando", desde } });
339
+ let cerrado = false;
340
+ const cerrar = (fase, detalle) => {
341
+ if (cerrado)
342
+ return;
343
+ cerrado = true;
344
+ clearTimeout(vivo.tope);
345
+ logins.delete(motor);
346
+ poner(motor, { login: { fase, desde, ...(detalle === undefined ? {} : { detalle }) } });
347
+ // La sesión acaba de cambiar (o no): la foto se rehace en vez de suponerla. DESPUÉS de la
348
+ // medida que esté en vuelo, no unida a ella: esa empezó antes del login y diría «sin
349
+ // sesión» al lado de «Sesión iniciada».
350
+ void (medida ?? Promise.resolve())
351
+ .catch(() => { })
352
+ .then(() => servicio.medir())
353
+ .catch(() => { });
354
+ };
355
+ const alSalir = (trozo) => {
356
+ salida += trozo.toString();
357
+ vivo.url ??= urlDeAutorizacion(salida);
358
+ const login = estados.get(motor)?.login;
359
+ if (pideCodigo(salida) && login?.fase === "esperando" && login.pideCodigo !== true) {
360
+ poner(motor, { login: { ...login, pideCodigo: true } });
361
+ }
362
+ };
363
+ hijo.stdout?.on("data", alSalir);
364
+ hijo.stderr?.on("data", alSalir);
365
+ hijo.on("error", (error) => cerrar("fallo", motivoDe(error, TOPE_DE_LOGIN_MS)));
366
+ hijo.on("exit", (codigo) => {
367
+ if (vivo.cancelado)
368
+ cerrar("cancelado");
369
+ else if (codigo === 0)
370
+ cerrar("hecho");
371
+ else
372
+ cerrar("fallo", ultimaLinea(salida) ?? `terminó con código ${String(codigo)}`);
373
+ });
374
+ return true;
375
+ },
376
+ enviarCodigo(motor, codigo) {
377
+ const vivo = logins.get(motor);
378
+ const limpioDeCodigo = codigo.trim();
379
+ // Un código de OAuth es una línea de texto imprimible y corta: otra cosa no se le escribe
380
+ // a un proceso, que leería un salto de línea de más como una segunda respuesta.
381
+ if (vivo === undefined || limpioDeCodigo === "" || limpioDeCodigo.length > 2000 || /[\u0000-\u001f\u007f]/.test(limpioDeCodigo)) {
382
+ return false;
383
+ }
384
+ vivo.hijo.stdin?.write(`${limpioDeCodigo}\n`);
385
+ return true;
386
+ },
387
+ cancelarSesion(motor) {
388
+ const vivo = logins.get(motor);
389
+ if (vivo === undefined)
390
+ return false;
391
+ vivo.cancelado = true;
392
+ vivo.hijo.kill();
393
+ return true;
394
+ },
395
+ abrirNavegador(motor) {
396
+ const url = logins.get(motor)?.url;
397
+ if (url === undefined)
398
+ return false;
399
+ abrir(url);
400
+ return true;
401
+ },
402
+ abrirConsola(motor) {
403
+ if (motor !== "claude-code" || !admiteConsola)
404
+ return false;
405
+ const bin = binarioDeClaude();
406
+ if (bin === undefined)
407
+ return false;
408
+ return abrirTerminal(bin, ["auth", "login"], limpio(entorno()));
409
+ },
410
+ elegirModelo(motor, modelo) {
411
+ if (!MOTORES_CON_MODELO.includes(motor))
412
+ return false;
413
+ const limpioDeModelo = modelo?.trim() === "" ? undefined : modelo?.trim();
414
+ if (limpioDeModelo !== undefined && motivoDeModeloDeMotorInaceptable(limpioDeModelo) !== undefined)
415
+ return false;
416
+ try {
417
+ guardarModelo(motor, limpioDeModelo);
418
+ }
419
+ catch {
420
+ return false;
421
+ }
422
+ // La prueba de antes era con OTRO modelo: se quita, para que nadie lea un «✓» que ya no vale.
423
+ poner(motor, deModelo(motor), ["pruebas", ...(limpioDeModelo === undefined ? ["modelo"] : [])]);
424
+ return true;
425
+ },
426
+ };
427
+ return servicio;
428
+ }
429
+ //# sourceMappingURL=motoresLocales.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motoresLocales.js","sourceRoot":"","sources":["../../../src/agent/motores/motoresLocales.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@
14
14
  import { NOOP_AGENT_TRACING, ToolSet, currentDateTime, dynamicSubAgents, openUI } from "./trueforge.js";
15
15
  import { permisosDe } from "../../grafo/perfiles.js";
16
16
  import { NOMBRE_INCORPORAR_ADJUNTO } from "../../../core/adjuntos.js";
17
+ import { NOMBRE_TRAER_FUENTE } from "../../../core/fuentes.js";
17
18
  import { fuenteDeEjecucion, fuenteDeFicheros, TOOLS_DE_FICHERO, TOOLS_DE_LECTURA, TOOLS_QUE_ESCRIBEN, } from "./toolsDeFichero.js";
18
19
  import { fuenteDeLangchain } from "./toolsPropias.js";
19
20
  import { presupuestoDelPaso } from "./recortes.js";
@@ -41,10 +42,12 @@ export function capacidadDeFicheros(opciones) {
41
42
  /**
42
43
  * Las tools propias de xonecode (`xone_navegacion`, `regex_search`…), adaptadas.
43
44
  *
44
- * `conAprobacion`: las de ESTE conjunto que paran el turno como `write_file` —hoy solo
45
- * `incorporar_adjunto`, que escribe el proyecto por su cuenta y tras el «sí» copia ella—. Omitido
45
+ * `conAprobacion`: las de ESTE conjunto que paran el turno como `write_file` —`incorporar_adjunto` y
46
+ * `traer_fuente` (`PROPIAS_QUE_ESCRIBEN`), que escriben el proyecto por su cuenta tras el «sí»—. Omitido
46
47
  * es «ninguna», que es lo de siempre para las que solo leen.
47
48
  */
49
+ /** Las tools PROPIAS que escriben el proyecto por su cuenta, y por eso paran el turno a preguntar. */
50
+ export const PROPIAS_QUE_ESCRIBEN = [NOMBRE_INCORPORAR_ADJUNTO, NOMBRE_TRAER_FUENTE];
48
51
  export function capacidadDePropias(tools, backend, conAprobacion = []) {
49
52
  return {
50
53
  nombre: "propias",
@@ -295,11 +298,11 @@ export function capacidadesDelEspecialista(agente, nombrePedido, deps) {
295
298
  tools: clase === "ejecuta" ? TOOLS_DE_LECTURA : TOOLS_DE_FICHERO,
296
299
  conAprobacion: clase === "escribe",
297
300
  }),
298
- // `incorporar_adjunto` ESCRIBE el proyecto: si está entre las propias, pide aprobación como
299
- // `write_file` (el HITL de deepagents la tiene por NOMBRE, `perfiles.ts#hitlDe`). Sin esto la
300
- // tool copiaría en cuanto el modelo la pidiera.
301
+ // `incorporar_adjunto` y `traer_fuente` ESCRIBEN el proyecto: si están entre las propias, piden
302
+ // aprobación como `write_file` (el HITL de deepagents tiene la primera por NOMBRE,
303
+ // `perfiles.ts#hitlDe`). Sin esto escribirían en cuanto el modelo las pidiera.
301
304
  ...(propias.length > 0
302
- ? [capacidadDePropias(propias, deps.backend, propias.some((t) => t.name === NOMBRE_INCORPORAR_ADJUNTO) ? [NOMBRE_INCORPORAR_ADJUNTO] : [])]
305
+ ? [capacidadDePropias(propias, deps.backend, PROPIAS_QUE_ESCRIBEN.filter((n) => propias.some((t) => t.name === n)))]
303
306
  : []),
304
307
  ...(clase === "ejecuta" ? [capacidadDeEjecucion(deps.conShell(), deps.dispositivo)] : []),
305
308
  ...(deps.conectores?.(agente) ?? []),
@@ -1 +1 @@
1
- {"version":3,"file":"capacidades.js","sourceRoot":"","sources":["../../../../src/agent/motores/trueforge/capacidades.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capacidades.js","sourceRoot":"","sources":["../../../../src/agent/motores/trueforge/capacidades.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,34 @@
1
+ import { NOMBRE_INCORPORAR_ADJUNTO } from "../../../core/adjuntos.js";
2
+ import { NOMBRE_TRAER_FUENTE } from "../../../core/fuentes.js";
3
+ /**
4
+ * Las tools PROPIAS que escriben un BINARIO en el proyecto, con el principio de su texto de éxito. Sin contarlas, el
5
+ * informe decía «SIN escribir ningún fichero» de un diseñador que había traído siete fuentes, y el orquestador fue a
6
+ * comprobarlo al disco y mandó al de pruebas a mirar si estaban sanas (pasada real con la maqueta de la calculadora).
7
+ */
8
+ export const ESCRITURAS_BINARIAS = {
9
+ [NOMBRE_TRAER_FUENTE]: "Escrito ",
10
+ [NOMBRE_INCORPORAR_ADJUNTO]: "Incorporado ",
11
+ };
1
12
  const lineas = (t) => (typeof t === "string" && t !== "" ? t.replace(/\n$/, "").split("\n").length : 0);
13
+ /** ¿Es `nombre` una tool de binarios? Por clave PROPIA: `in` daría por buena `constructor`. */
14
+ export function esEscrituraBinaria(nombre) {
15
+ return Object.hasOwn(ESCRITURAS_BINARIAS, nombre);
16
+ }
2
17
  /** Lo que suma UNA escritura que salió bien, por sus argumentos (los de la tool, que nunca salen de aquí). */
3
18
  export function anotarEscritura(cambios, nombre, args) {
4
19
  const ruta = typeof args["file_path"] === "string" ? args["file_path"] : undefined;
5
- if (ruta === undefined || (nombre !== "write_file" && nombre !== "edit_file"))
20
+ if (ruta === undefined)
21
+ return;
22
+ if (esEscrituraBinaria(nombre)) {
23
+ // El destino se normaliza como lo escribe la tool (`/fonts/…`): el modelo puede pasarlo sin la barra.
24
+ const virtual = ruta.startsWith("/") ? ruta : `/${ruta}`;
25
+ const antes = cambios.get(virtual) ?? { ediciones: 0, nuevo: false, mas: 0, menos: 0 };
26
+ cambios.set(virtual, { ...antes, ediciones: antes.ediciones + 1, binario: true });
6
27
  return;
28
+ }
7
29
  const previo = cambios.get(ruta) ?? { ediciones: 0, nuevo: false, mas: 0, menos: 0 };
30
+ if (nombre !== "write_file" && nombre !== "edit_file")
31
+ return;
8
32
  if (nombre === "write_file") {
9
33
  cambios.set(ruta, { ediciones: previo.ediciones + 1, nuevo: previo.ediciones === 0 ? true : previo.nuevo, mas: previo.mas + lineas(args["content"]), menos: previo.menos });
10
34
  }
@@ -12,9 +36,15 @@ export function anotarEscritura(cambios, nombre, args) {
12
36
  cambios.set(ruta, { ...previo, ediciones: previo.ediciones + 1, mas: previo.mas + lineas(args["new_string"]), menos: previo.menos + lineas(args["old_string"]) });
13
37
  }
14
38
  }
15
- /** ¿Salió bien? El texto de éxito es el de `toolsDeFichero.ts#ejecutar`; un rechazo o un error no cuenta. */
16
- export function escrituraConExito(contenido) {
17
- return typeof contenido === "string" && contenido.startsWith("Successfully");
39
+ /**
40
+ * ¿Salió bien? El texto de éxito es el de `toolsDeFichero.ts#ejecutar`, o el de la tool de binarios
41
+ * (`ESCRITURAS_BINARIAS`); un rechazo o un error no cuenta.
42
+ */
43
+ export function escrituraConExito(contenido, nombre) {
44
+ if (typeof contenido !== "string")
45
+ return false;
46
+ const binaria = nombre !== undefined && esEscrituraBinaria(nombre) ? ESCRITURAS_BINARIAS[nombre] : undefined;
47
+ return contenido.startsWith(binaria ?? "Successfully");
18
48
  }
19
49
  /**
20
50
  * El informe para el padre. `escribe` dice si el hijo podía escribir el proyecto: a uno que no podía no se le
@@ -28,9 +58,11 @@ export function textoDelInforme(quien, cambios, escribe, medida) {
28
58
  }
29
59
  const filas = [...cambios.entries()]
30
60
  .sort(([a], [b]) => a.localeCompare(b))
31
- .map(([ruta, c]) => c.nuevo
32
- ? `- ${ruta}: nuevo${c.ediciones > 1 ? ` y ${c.ediciones - 1} edición(es) después` : ""}, +${c.mas} −${c.menos} líneas`
33
- : `- ${ruta}: ${c.ediciones} edición(es), +${c.mas} −${c.menos} líneas`);
61
+ .map(([ruta, c]) => c.binario === true
62
+ ? `- ${ruta}: fichero binario${c.ediciones > 1 ? `, escrito ${c.ediciones} veces` : ""}`
63
+ : c.nuevo
64
+ ? `- ${ruta}: nuevo${c.ediciones > 1 ? ` y ${c.ediciones - 1} edición(es) después` : ""}, +${c.mas} −${c.menos} líneas`
65
+ : `- ${ruta}: ${c.ediciones} edición(es), +${c.mas} −${c.menos} líneas`);
34
66
  return [
35
67
  `[harness] Lo que ESCRIBIÓ ${quien} en su encargo, contado por el harness (no por su informe):`,
36
68
  ...filas,
@@ -1 +1 @@
1
- {"version":3,"file":"informesDeHijos.js","sourceRoot":"","sources":["../../../../src/agent/motores/trueforge/informesDeHijos.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"informesDeHijos.js","sourceRoot":"","sources":["../../../../src/agent/motores/trueforge/informesDeHijos.ts"],"names":[],"mappings":"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"}