xonecode 0.8.27 → 0.8.36

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 (44) hide show
  1. package/apps/web/dist/assets/{index-LdUr7EoT.js → index-DFnjznH1.js} +34 -34
  2. package/apps/web/dist/assets/{php-Cg-eWGpQ.js → php-CX4yaeUn.js} +1 -1
  3. package/apps/web/dist/assets/{ruby-EcV7Hon3.js → ruby-Dklcf7v6.js} +1 -1
  4. package/apps/web/dist/index.html +1 -1
  5. package/dist/agent/grafo/escriturasEnSerie.js +57 -0
  6. package/dist/agent/grafo/escriturasEnSerie.js.map +1 -0
  7. package/dist/agent/grafo/proyecto.js +69 -3
  8. package/dist/agent/grafo/proyecto.js.map +1 -1
  9. package/dist/agent/grafo/traerDeLaMaquina.js +117 -0
  10. package/dist/agent/grafo/traerDeLaMaquina.js.map +1 -0
  11. package/dist/agent/grafo/validacionXone.js +79 -4
  12. package/dist/agent/grafo/validacionXone.js.map +1 -1
  13. package/dist/agent/grafo/xoneAgent.js +33 -1
  14. package/dist/agent/grafo/xoneAgent.js.map +1 -1
  15. package/dist/agent/subagentes/agentesEnDisco.js +34 -6
  16. package/dist/agent/subagentes/agentesEnDisco.js.map +1 -1
  17. package/dist/agent/trazaDeErroresEnDisco.js +45 -0
  18. package/dist/agent/trazaDeErroresEnDisco.js.map +1 -0
  19. package/dist/agent/turno/diagnosticoDeTools.js +10 -1
  20. package/dist/agent/turno/diagnosticoDeTools.js.map +1 -1
  21. package/dist/agent/turno/informeDeTraza.js +129 -6
  22. package/dist/agent/turno/informeDeTraza.js.map +1 -1
  23. package/dist/agent/turno/puente.js +89 -5
  24. package/dist/agent/turno/puente.js.map +1 -1
  25. package/dist/agent/turno/resumenDeTool.js +28 -0
  26. package/dist/agent/turno/resumenDeTool.js.map +1 -1
  27. package/dist/agent/turno/turnoReal.js +20 -2
  28. package/dist/agent/turno/turnoReal.js.map +1 -1
  29. package/dist/core/serieDeEscrituras.js +63 -0
  30. package/dist/core/serieDeEscrituras.js.map +1 -0
  31. package/dist/core/traerDeLaMaquina.js +80 -0
  32. package/dist/core/traerDeLaMaquina.js.map +1 -0
  33. package/dist/core/trazaDeErrores.js +108 -0
  34. package/dist/core/trazaDeErrores.js.map +1 -0
  35. package/dist/web/servidor/consolaWeb.js +6 -0
  36. package/dist/web/servidor/consolaWeb.js.map +1 -1
  37. package/package.json +2 -1
  38. package/skills/xone-hotswap/SKILL.md +76 -8
  39. package/skills/xone-hotswap/references/comandos.md +33 -0
  40. package/skills/xone-hotswap/references/conexion-y-despliegue.md +61 -1
  41. package/skills/xone-hotswap/scripts/xone-arrancar-ios +1 -1
  42. package/skills/xone-hotswap/scripts/xone-captura-android +91 -3
  43. package/skills/xone-hotswap/scripts/xone-desplegar-android +80 -5
  44. package/skills/xone-hotswap/scripts/xone-hotswap +151 -8
@@ -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-LdUr7EoT.js"></script>
10
+ <script type="module" crossorigin src="./assets/index-DFnjznH1.js"></script>
11
11
  <link rel="stylesheet" crossorigin href="./assets/index-DKZqgHtg.css">
12
12
  </head>
13
13
  <!-- Sin el atributo aquí: el oscuro es SOLO del splash (el registro de entorno y
@@ -0,0 +1,57 @@
1
+ import { crearSerieDeEscrituras } from "../../core/serieDeEscrituras.js";
2
+ /**
3
+ * Dos escrituras sobre el MISMO fichero no se solapan: la segunda espera a que acabe la
4
+ * primera. Sobre ficheros distintos no cambia nada.
5
+ *
6
+ * **El fallo que cierra es silencioso, que es lo que lo hace grave.** `write` y `edit` del
7
+ * backend son leer-modificar-escribir sobre el fichero entero, así que dos a la vez se pisan
8
+ * y **las dos contestan que bien**. Reproducido contra el backend real: cuatro `edit`
9
+ * concurrentes, cuatro resultados sin error, **una** aplicada. Y ocurre de verdad — en una
10
+ * sesión de MyAllXOne la traza de errores registró dos `edit` sobre `/funciones.js` entrando
11
+ * en el MISMO milisegundo, con el testigo `escrituraSolapada` disparado.
12
+ *
13
+ * **Por qué serializar basta**, que era la objeción razonable: la segunda edición calculó su
14
+ * `old_string` contra un contenido que la primera acaba de cambiar. Cierto — y por eso este
15
+ * envoltorio va POR FUERA de quien edita, no por dentro: cuando le llega el turno, el camino
16
+ * de escritura vuelve a leer el fichero y vuelve a buscar el `old_string` contra lo que hay
17
+ * AHORA. Si el ancla sigue, la edición es correcta; si desapareció, el backend contesta que
18
+ * no lo encuentra y el modelo recibe su error y reintenta. Medido: en serie, cuatro ediciones
19
+ * independientes se aplican las cuatro, y dos que se pisan dan una aplicada y **un error
20
+ * visible** — en vez de una aplicada y un cambio perdido sin que nadie se entere.
21
+ *
22
+ * **Dónde va en la pila**: por dentro de las guardas de RUTA —que contestan con una
23
+ * comparación de texto y deben seguir contestando primero, ver `proyecto.ts`— y por fuera de
24
+ * `sinContenidoInvalido`, para que leer el fichero de antes, validar y escribir sean un solo
25
+ * turno. Al revés, dos validaciones podrían intercalarse entre la lectura y la escritura, que
26
+ * es exactamente la carrera que esto viene a quitar.
27
+ *
28
+ * **No toca `read`, `ls`, `glob` ni nada que no escriba.** Serializar lecturas no arregla
29
+ * nada y convertiría en secuencial el trabajo que sí puede ir en paralelo, que es la mitad de
30
+ * lo que el agente hace.
31
+ */
32
+ export function escriturasEnSerie(backend) {
33
+ const enSerie = crearSerieDeEscrituras();
34
+ return new Proxy(backend, {
35
+ get(destino, prop) {
36
+ // El valor se lee contra el OBJETIVO y no contra el proxy: `LocalShellBackend.id` es un
37
+ // getter sobre un campo privado y `Reflect.get(o, p, receptor)` lanza al leerlo — lo
38
+ // lee el constructor de `CompositeBackend`, así que el fallo sería al MONTAR.
39
+ const valor = Reflect.get(destino, prop, destino);
40
+ if (typeof valor !== "function")
41
+ return valor;
42
+ const fn = valor.bind(destino);
43
+ if (prop !== "write" && prop !== "edit")
44
+ return fn;
45
+ return async (...args) => {
46
+ const ruta = typeof args[0] === "string" ? args[0] : undefined;
47
+ // Sin ruta no hay nada por lo que serializar, y inventar una clave común pondría en
48
+ // fila escrituras de ficheros distintos. Pasa tal cual: la dirección conservadora
49
+ // aquí es NO cambiar el comportamiento de una llamada que no se entiende.
50
+ if (ruta === undefined)
51
+ return await fn(...args);
52
+ return await enSerie(ruta, async () => await fn(...args));
53
+ };
54
+ },
55
+ });
56
+ }
57
+ //# sourceMappingURL=escriturasEnSerie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escriturasEnSerie.js","sourceRoot":"","sources":["../../../src/agent/grafo/escriturasEnSerie.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,iBAAiB,CAAmB,OAAU;IAC5D,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IACzC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;QACxB,GAAG,CAAC,OAAO,EAAE,IAAI;YACf,wFAAwF;YACxF,qFAAqF;YACrF,8EAA8E;YAC9E,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAClD,IAAI,OAAO,KAAK,KAAK,UAAU;gBAAE,OAAO,KAAK,CAAC;YAC9C,MAAM,EAAE,GAAI,KAAsC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACjE,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM;gBAAE,OAAO,EAAE,CAAC;YACnD,OAAO,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;gBAClC,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC/D,oFAAoF;gBACpF,kFAAkF;gBAClF,0EAA0E;gBAC1E,IAAI,IAAI,KAAK,SAAS;oBAAE,OAAO,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;gBACjD,OAAO,MAAM,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YAC5D,CAAC,CAAC;QACJ,CAAC;KACF,CAAM,CAAC;AACV,CAAC"}
@@ -3,9 +3,11 @@ import { join } from "node:path";
3
3
  import { CompositeBackend, FilesystemBackend, LocalShellBackend } from "deepagents";
4
4
  import { RUTA_MEMORIA_INTERNA, RUTA_MEMORIA_VIRTUAL } from "./memoriaDeProyecto.js";
5
5
  import { sinContenidoInvalido, validarConXoneLinter } from "./validacionXone.js";
6
+ import { escriturasEnSerie } from "./escriturasEnSerie.js";
6
7
  import { RAIZ_SKILLS, skillsConRuta, skillsMontables } from "./skills.js";
7
8
  import { artefactoFueraDeSitio, esBasuraDeArtefacto, esRutaDeArtefacto, mimeDeArtefacto, nombreDeArtefacto, RUTA_ARTEFACTOS, } from "../../core/artefactos.js";
8
9
  import { RUTA_ADJUNTOS } from "../../core/adjuntos.js";
10
+ import { esRutaDeMaquina, porQueNoSuelta } from "../../core/traerDeLaMaquina.js";
9
11
  import { carpetaDeHotswap, RUTA_HOTSWAP } from "../../core/hotswap.js";
10
12
  import { CARPETA_DE_PLANES, RUTA_PLANES } from "../../core/planes.js";
11
13
  import { entornoDeShell, variablesDeAndroid } from "../../core/shellDeAgente.js";
@@ -140,6 +142,47 @@ export const TOPE_DE_COMANDO_S = 600;
140
142
  * resueltas, y es así como el modelo las descubre— pero un agente que liste esa carpeta a
141
143
  * mano no las verá.
142
144
  */
145
+ /**
146
+ * Monta la máquina entera bajo `/disco/`, de solo lectura, y contesta bien a quien pegue una
147
+ * ruta absoluta a pelo.
148
+ *
149
+ * El porqué entero está en `core/discoDeLaMaquina.ts`. Aquí, las dos mitades del cableado:
150
+ *
151
+ * - **El montaje**: la misma pieza que `/skills/`, `/adjuntos/` y `/planes/` — otra raíz del
152
+ * `CompositeBackend`, con su barra final obligatoria. El «solo lectura» no lo pone esto: lo
153
+ * pone `permisosDe`, que es donde vive esa decisión para todas las raíces.
154
+ * - **La REESCRITURA**, que es lo que evita el viaje en balde. Una ruta de máquina escrita a
155
+ * pelo (`/Users/…/x.zip`) se resuelve DENTRO del proyecto y vuelve un ENOENT que dice «no
156
+ * existe» sobre un fichero que sí existe —y de paso filtra la raíz absoluta del proyecto—.
157
+ * Se intercepta antes y se devuelve la ruta buena ya escrita.
158
+ */
159
+ /**
160
+ * Contesta bien a una ruta de la MÁQUINA escrita como si fuera del proyecto.
161
+ *
162
+ * Sin esto se resuelve DENTRO del proyecto y vuelve un ENOENT que dice «no such file or
163
+ * directory» sobre un fichero que sí existe —y de paso filtra la raíz absoluta del proyecto—.
164
+ * Medido: el orquestador concluía que estaba enjaulado y se iba a delegar en el agente con
165
+ * shell. Aquí se le devuelve el paso siguiente ESCRITO, que es el patrón de `porQueNo`.
166
+ *
167
+ * No monta nada y no abre nada: solo sustituye un mensaje que engaña por uno que sirve.
168
+ */
169
+ export function conAvisoDeRutaDeMaquina(backend) {
170
+ return new Proxy(backend, {
171
+ get(destino, prop) {
172
+ const valor = Reflect.get(destino, prop, destino);
173
+ if (typeof valor !== "function")
174
+ return valor;
175
+ return (...args) => {
176
+ const ruta = args[0];
177
+ // Se DEVUELVE `{error}`, como las otras guardas: una excepción se lleva el turno.
178
+ if (typeof ruta === "string" && esRutaDeMaquina(ruta)) {
179
+ return { error: porQueNoSuelta(ruta) };
180
+ }
181
+ return valor.apply(destino, args);
182
+ };
183
+ },
184
+ });
185
+ }
143
186
  export function backendConSkills(backend, propias = []) {
144
187
  return new CompositeBackend(backend, {
145
188
  // La barra final importa: CompositeBackend la retira antes de delegar. Sin ella
@@ -398,7 +441,19 @@ export function backendDeAgente(opciones) {
398
441
  * 1» en vez de «es una vista aplanada, edita el .xne», que es lo único que le deja corregir.
399
442
  * Lo destapó un test que ya existía.
400
443
  */
401
- const delProyecto = sinDescargasEnElProyecto(sinArtefactosEnElProyecto(sinVistasAplanadas(sinContenidoInvalido(exponerMemoriaDeProyecto(base), opciones.validar ?? validarConXoneLinter()), opciones.ficheros)));
444
+ /**
445
+ * **Y la QUINTA va entre medias, porque no contesta una pregunta: espera un turno.**
446
+ *
447
+ * `escriturasEnSerie` va por DENTRO de las guardas de ruta —que siguen contestando primero,
448
+ * con su comparación de texto y sin parsear nada— y por FUERA de `sinContenidoInvalido`,
449
+ * para que leer el fichero de antes, validarlo y escribirlo sean un solo turno. Al revés,
450
+ * dos validaciones podrían intercalarse entre su lectura y su escritura, que es justo la
451
+ * carrera que esto quita.
452
+ *
453
+ * Y por eso tampoco tiene sentido más afuera: una escritura que las guardas de ruta van a
454
+ * rechazar no necesita hacer cola detrás de nadie.
455
+ */
456
+ const delProyecto = sinDescargasEnElProyecto(sinArtefactosEnElProyecto(sinVistasAplanadas(escriturasEnSerie(sinContenidoInvalido(exponerMemoriaDeProyecto(base), opciones.validar ?? validarConXoneLinter())), opciones.ficheros)));
402
457
  /**
403
458
  * Las del usuario se leen AQUÍ y no entran por parámetro, a propósito: compuesto dentro de
404
459
  * `construirAgente` —que todos sus tests doblan— el montaje quedaba escrito y no probado,
@@ -429,12 +484,23 @@ export function backendDeAgente(opciones) {
429
484
  * se implementa otro. Es la diferencia con los artefactos, que mueren con su sesión.
430
485
  */
431
486
  const conPlanes = backendConPlanes(conAdjuntos, opciones.raiz);
487
+ /**
488
+ * Y el aviso de las rutas de MÁQUINA, que no monta nada.
489
+ *
490
+ * Hubo aquí un montaje de `/` bajo `/disco/` y **rompió un turno de producción**: con la
491
+ * máquina entera dentro del `CompositeBackend`, toda operación recursiva sin ruta la
492
+ * recorría — un `grep` sobre el PROYECTO tardaba 30 s y moría con
493
+ * `EPERM … scandir '/Volumes/com.apple.TimeMachine.localsnapshots'`. Lo que hacía falta no
494
+ * era navegar el disco sino TRAERSE un fichero, y eso lo hace la tool
495
+ * `traer_de_la_maquina`. Aquí solo queda contestar bien a quien escriba la ruta a pelo.
496
+ */
497
+ const conDisco = conAvisoDeRutaDeMaquina(conPlanes);
432
498
  // Lo que deje un COMANDO en la carpeta de artefactos también se anuncia. Sin esto, la
433
499
  // captura que escribe un script existe en el disco y no existe para nadie: el evento
434
500
  // `artefacto` lo emite el Proxy de `write`/`edit`, y una shell no pasa por ahí.
435
501
  return opciones.ejecucion === undefined || opciones.artefactos === undefined
436
- ? conPlanes
437
- : anunciarArtefactosDeLaShell(conPlanes, opciones.artefactos.carpeta, opciones.artefactos.alEscribir);
502
+ ? conDisco
503
+ : anunciarArtefactosDeLaShell(conDisco, opciones.artefactos.carpeta, opciones.artefactos.alEscribir);
438
504
  }
439
505
  /**
440
506
  * Anuncia lo que un COMANDO deja en la carpeta de artefactos.
@@ -1 +1 @@
1
- {"version":3,"file":"proyecto.js","sourceRoot":"","sources":["../../../src/agent/grafo/proyecto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proyecto.js","sourceRoot":"","sources":["../../../src/agent/grafo/proyecto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ import { copyFileSync, existsSync, mkdirSync, realpathSync, statSync } from "node:fs";
2
+ import { basename, join } from "node:path";
3
+ import { tool } from "@langchain/core/tools";
4
+ import { z } from "zod";
5
+ import { mimeDeArtefacto, RUTA_ARTEFACTOS } from "../../core/artefactos.js";
6
+ import { motivoDeTraidaInaceptable, nombreParaTraer, TOPE_DE_TRAIDA } from "../../core/traerDeLaMaquina.js";
7
+ /**
8
+ * Traer al área de trabajo un fichero que la PERSONA ha nombrado por su ruta.
9
+ *
10
+ * ## El caso, medido
11
+ *
12
+ * «Usa el diseño de `/Users/…/Downloads/stitch_calculadora.zip`». Esa ruta no es del proyecto,
13
+ * y las tools de fichero van confinadas a su raíz, así que el agente no podía abrirla: la
14
+ * resolvía DENTRO del proyecto, recibía un ENOENT que decía «no existe» sobre un fichero que
15
+ * sí existe, concluía que estaba enjaulado y se iba a delegar en el único especialista con
16
+ * shell para que lo copiara. Dieciocho pasos y un `unzip` para un fichero que le acababan de
17
+ * nombrar.
18
+ *
19
+ * ## Por qué COPIAR y no montar el disco
20
+ *
21
+ * La primera versión montaba la máquina entera bajo `/disco/`, de solo lectura. **Rompió un
22
+ * turno de producción**: con `/` dentro del `CompositeBackend`, toda operación recursiva sin
23
+ * ruta lo recorre — un `grep` sobre el PROYECTO tardaba 30 segundos y moría con
24
+ * `EPERM … scandir '/Volumes/com.apple.TimeMachine.localsnapshots'`.
25
+ *
26
+ * Y al mirarlo se vio que montar era más de lo que hacía falta. Lo que se necesita no es
27
+ * navegar el disco: es **traerse un fichero concreto**. Copiar tiene tres ventajas que el
28
+ * montaje no puede dar: no hay nada recursivo que se descontrole, lo traído queda en el área
29
+ * de trabajo —donde se ANUNCIA y se puede volver a leer—, y un BINARIO sobrevive: un `.zip` o
30
+ * un `.png` no aguantan un `read_file` + `write_file`, que son de TEXTO. Es el mismo reparto
31
+ * que `copiar_artefacto` y que el PDF: lo hace el harness porque el agente no puede.
32
+ *
33
+ * ## Las guardas
34
+ *
35
+ * 1. **Lo que se acepta es una lista BLANCA de forma** (`core/traerDeLaMaquina.ts`): una ruta
36
+ * absoluta de verdad, y nada del propio harness —`auth.json` guarda las claves en claro y
37
+ * cualquier `.xonecode/` lleva la conversación entera—.
38
+ * 2. **El DESTINO no se recibe**: lo deriva el código dentro de la carpeta de artefactos. Con
39
+ * un destino por parámetro esto sería una forma de escribir donde se quisiera.
40
+ * 3. **Tope de tamaño**, porque el área de trabajo no es un almacén y un fichero enorme se
41
+ * copia igual de callado que uno pequeño.
42
+ * 4. Y la ruta se comprueba **dos veces**, por TEXTO y por `realpath`, como en
43
+ * `arbolDeProyecto.ts`: un enlace puede apuntar a otro sitio.
44
+ */
45
+ export const NOMBRE_TRAER = "traer_de_la_maquina";
46
+ const Entrada = z.object({
47
+ ruta: z
48
+ .string()
49
+ .describe("La ruta ABSOLUTA del fichero en la máquina, tal y como la escribió la persona " +
50
+ "(por ejemplo /Users/alguien/Downloads/diseno.zip). Se copia a /artefactos/ y se " +
51
+ "trabaja desde ahí."),
52
+ });
53
+ export function crearTraerDeLaMaquina(deps) {
54
+ return tool(async (entrada) => {
55
+ if (deps.carpeta === undefined) {
56
+ return "Esta sesión no tiene carpeta de artefactos, así que no hay dónde dejarlo.";
57
+ }
58
+ const motivo = motivoDeTraidaInaceptable(entrada.ruta);
59
+ if (motivo !== undefined)
60
+ return motivo;
61
+ // Dos veces, por TEXTO y por el camino REAL: un enlace puede apuntar a otro sitio.
62
+ let real;
63
+ try {
64
+ real = realpathSync(entrada.ruta);
65
+ }
66
+ catch (error) {
67
+ // De un error de Node solo el NOMBRE: su mensaje lleva la ruta absoluta.
68
+ return `No pude abrir «${entrada.ruta}» (${error instanceof Error ? error.name : "error"}).`;
69
+ }
70
+ const motivoReal = motivoDeTraidaInaceptable(real);
71
+ if (motivoReal !== undefined)
72
+ return motivoReal;
73
+ let bytes;
74
+ try {
75
+ const info = statSync(real);
76
+ if (!info.isFile())
77
+ return `«${entrada.ruta}» no es un fichero.`;
78
+ bytes = info.size;
79
+ }
80
+ catch (error) {
81
+ return `No pude mirar «${entrada.ruta}» (${error instanceof Error ? error.name : "error"}).`;
82
+ }
83
+ if (bytes > TOPE_DE_TRAIDA) {
84
+ return (`«${basename(real)}» ocupa ${Math.round(bytes / 1024 / 1024)} MB y el tope son ` +
85
+ `${Math.round(TOPE_DE_TRAIDA / 1024 / 1024)} MB. El área de trabajo no es un almacén: ` +
86
+ "si de verdad hace falta ese fichero entero, dilo y que lo decida quien te lo encargó.");
87
+ }
88
+ const nombre = nombreParaTraer(real);
89
+ const destino = join(deps.carpeta, nombre);
90
+ try {
91
+ mkdirSync(deps.carpeta, { recursive: true });
92
+ if (existsSync(destino))
93
+ return `Ya está traído: ${RUTA_ARTEFACTOS}${nombre}`;
94
+ copyFileSync(real, destino);
95
+ }
96
+ catch (error) {
97
+ return `No pude copiarlo (${error instanceof Error ? error.name : "error"}).`;
98
+ }
99
+ const mime = mimeDeArtefacto(nombre);
100
+ deps.alEscribir?.({
101
+ ruta: `${RUTA_ARTEFACTOS}${nombre}`,
102
+ nombre,
103
+ ...(mime === undefined ? {} : { mime }),
104
+ bytes,
105
+ });
106
+ return (`Copiado a ${RUTA_ARTEFACTOS}${nombre} (${bytes} bytes). Ábrelo por esa ruta. ` +
107
+ "Si es un `.zip`, quien tenga shell puede descomprimirlo ahí mismo.");
108
+ }, {
109
+ name: NOMBRE_TRAER,
110
+ description: "Copia al área de trabajo un fichero que la persona haya nombrado por su ruta " +
111
+ "absoluta de la máquina (/Users/..., /tmp/...). Esas rutas NO son del proyecto y no " +
112
+ "se pueden abrir directamente; con esto quedan en /artefactos/ y se leen desde ahí. " +
113
+ "Sirve también para binarios (.zip, .png), que no sobreviven a un read_file.",
114
+ schema: Entrada,
115
+ });
116
+ }
117
+ //# sourceMappingURL=traerDeLaMaquina.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traerDeLaMaquina.js","sourceRoot":"","sources":["../../../src/agent/grafo/traerDeLaMaquina.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,17 @@
1
+ /**
2
+ * La guarda que mira el CONTENIDO antes de escribirlo, sobre `xone-linter`.
3
+ *
4
+ * La regla —qué se rechaza— es pura y vive en `core/validacionDeEscritura.ts`. Esto es solo el
5
+ * cableado: hablar con la librería y envolver el backend.
6
+ *
7
+ * **El reparto es el mismo que el de `xone_navegacion` y por el mismo motivo**: la semántica de
8
+ * XOne la pone `xone-linter` como LIBRERÍA —ya parsea, ya sabe qué es un tipo de prop válido, ya
9
+ * decodifica ISO-8859— y reescribirla aquí sería un segundo sitio donde decidir lo mismo.
10
+ *
11
+ * **Y el import es PROFUNDO**, también por lo mismo: el barril de la librería arrastra su runtime
12
+ * con un *top-level await* que revienta bajo `tsx`, o sea bajo el lanzador de desarrollo.
13
+ */
14
+ import { anotarError, anotarPaso } from "../../core/trazaDeErrores.js";
1
15
  import { motivoDelRechazo, veredictoDeEscritura, } from "../../core/validacionDeEscritura.js";
2
16
  /**
3
17
  * El validador de PRODUCCIÓN, sobre `xone-linter`.
@@ -10,6 +24,9 @@ import { motivoDelRechazo, veredictoDeEscritura, } from "../../core/validacionDe
10
24
  */
11
25
  export function validarConXoneLinter() {
12
26
  return async (ruta, contenido) => {
27
+ // El hito envuelve la llamada ENTERA al parser: si se cuelga aquí, queda un `inicio` sin
28
+ // su `fin` con el nombre del fichero al lado.
29
+ const fin = anotarPaso("validacionXone#validar", ruta);
13
30
  try {
14
31
  const { validateContent, canValidate } = await import(
15
32
  // Import PROFUNDO: el barril trae un top-level await que revienta bajo `tsx`.
@@ -25,10 +42,15 @@ export function validarConXoneLinter() {
25
42
  ...(typeof e.location?.line === "number" ? { linea: e.location.line } : {}),
26
43
  }));
27
44
  }
28
- catch {
29
- // No está la librería, o su parser reventó. Se DEJA ESCRIBIR: ver la cabecera.
45
+ catch (e) {
46
+ // No está la librería, o su parser reventó. Se DEJA ESCRIBIR: ver la cabecera. Pero
47
+ // ahora QUEDA ANOTADO, que es la diferencia entre un fail-open y un fallo invisible.
48
+ anotarError("validacionXone#validar", e);
30
49
  return undefined;
31
50
  }
51
+ finally {
52
+ fin();
53
+ }
32
54
  };
33
55
  }
34
56
  /**
@@ -50,7 +72,8 @@ async function contenidoActual(backend, ruta) {
50
72
  return obj.content;
51
73
  return undefined;
52
74
  }
53
- catch {
75
+ catch (e) {
76
+ anotarError("validacionXone#contenidoActual", e);
54
77
  return undefined;
55
78
  }
56
79
  }
@@ -86,6 +109,8 @@ export function contenidoTrasEditar(actual, oldString, newString, replaceAll) {
86
109
  * excepción se lleva el turno por delante y el agente no reintenta.
87
110
  */
88
111
  export function sinContenidoInvalido(backend, validar) {
112
+ /** Escrituras en vuelo por ruta. Ver el testigo de abajo. */
113
+ const enVuelo = new Map();
89
114
  return new Proxy(backend, {
90
115
  get(destino, prop) {
91
116
  const valor = Reflect.get(destino, prop, destino);
@@ -95,6 +120,43 @@ export function sinContenidoInvalido(backend, validar) {
95
120
  return valor.bind(destino);
96
121
  }
97
122
  return async (...args) => {
123
+ const ruta = typeof args[0] === "string" ? args[0] : undefined;
124
+ /**
125
+ * **Dos escrituras SOLAPADAS sobre el mismo fichero pierden cambios, y no avisa nadie.**
126
+ *
127
+ * Reproducido: cuatro `edit` concurrentes sobre un fichero devuelven las cuatro
128
+ * «bien» y solo UNA llega al disco — cada una lee, sustituye sobre lo que leyó y
129
+ * escribe entero, así que la última borra a las demás. Y pasa de verdad: DeepSeek
130
+ * agrupa varias `edit_file` en un mismo mensaje y LangGraph las ejecuta a la vez;
131
+ * medido en una sesión, siete de ocho ediciones de `funciones.js` salieron en ráfaga,
132
+ * hasta tres en el mismo milisegundo.
133
+ *
134
+ * Esto solo lo ANOTA —no serializa nada—: es el testigo que dice si está ocurriendo y
135
+ * sobre qué fichero, para poder decidir el arreglo con la medida delante.
136
+ */
137
+ if (ruta !== undefined) {
138
+ const yaEnVuelo = enVuelo.get(ruta) ?? 0;
139
+ if (yaEnVuelo > 0) {
140
+ anotarError("escrituraSolapada", new Error(`${String(prop)} sobre «${ruta}» con ${yaEnVuelo} escritura(s) en vuelo sobre el MISMO fichero`));
141
+ }
142
+ enVuelo.set(ruta, yaEnVuelo + 1);
143
+ }
144
+ const fin = anotarPaso(`sinContenidoInvalido#${String(prop)}`, ruta);
145
+ try {
146
+ return await guardado(...args);
147
+ }
148
+ finally {
149
+ fin();
150
+ if (ruta !== undefined) {
151
+ const quedan = (enVuelo.get(ruta) ?? 1) - 1;
152
+ if (quedan <= 0)
153
+ enVuelo.delete(ruta);
154
+ else
155
+ enVuelo.set(ruta, quedan);
156
+ }
157
+ }
158
+ };
159
+ async function guardado(...args) {
98
160
  const seguir = () => valor.apply(destino, args);
99
161
  const ruta = args[0];
100
162
  if (typeof ruta !== "string")
@@ -117,8 +179,21 @@ export function sinContenidoInvalido(backend, validar) {
117
179
  const { introducidos } = veredictoDeEscritura(antes, despues);
118
180
  if (introducidos.length === 0)
119
181
  return seguir();
182
+ /**
183
+ * **Un rechazo se ANOTA, y no es higiene.**
184
+ *
185
+ * Devolver `{error}` es correcto —el modelo reintenta— pero deja el rechazo INVISIBLE:
186
+ * el `anotarPaso` de arriba cierra igual, así que en la traza una escritura aceptada y
187
+ * una rechazada se leen exactamente igual. Y un rechazo cuesta un viaje entero con todo
188
+ * el contexto detrás, o sea que es justo lo que hay que poder contar cuando un turno se
189
+ * dispara de precio. Se preguntó y el instrumento no sabía contestar.
190
+ *
191
+ * Va el CÓDIGO del hallazgo y la ruta, nunca el contenido ni el mensaje —que lleva el
192
+ * fragmento de código dentro—, la misma regla que `resumenDeTool.ts`.
193
+ */
194
+ anotarError("sinContenidoInvalido#rechazo", new Error(`${String(prop)} sobre «${ruta}» rechazada: ${introducidos.length} hallazgo(s) [${[...new Set(introducidos.map((h) => h.codigo))].join(", ")}]`));
120
195
  return { error: motivoDelRechazo(ruta, introducidos) };
121
- };
196
+ }
122
197
  },
123
198
  });
124
199
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validacionXone.js","sourceRoot":"","sources":["../../../src/agent/grafo/validacionXone.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validacionXone.js","sourceRoot":"","sources":["../../../src/agent/grafo/validacionXone.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ import { estilosDeDisco, indiceEnDisco } from "../navegacion/indiceEnDisco.js";
12
12
  import { readFileSync } from "node:fs";
13
13
  import { join } from "node:path";
14
14
  import { crearCriticaVisual } from "./criticaVisual.js";
15
+ import { crearTraerDeLaMaquina } from "./traerDeLaMaquina.js";
15
16
  import { invocarVisualConModelos } from "../dispositivos/juezVisual.js";
16
17
  import { inventarioDelProyecto } from "../subagentes/escrituraExterna.js";
17
18
  import { middlewareTextoDeTool } from "../turno/textoDeTool.js";
@@ -108,6 +109,25 @@ export function promptOrquestador(agentes) {
108
109
  hay("analyst-xone") && hay("developer-xone")
109
110
  ? "Si el encargo va a CAMBIAR el proyecto y no es un retoque de una línea, son DOS pasos y en este orden: `analyst-xone` averigua primero —dile QUÉ hay que averiguar y PARA QUÉ— y su `HANDOFF DE ANÁLISIS` va DENTRO del encargo a `developer-xone`, que así no redescubre nada. Si el desarrollo son varios pasos o no cabe en un turno, pídele además el PLAN: lo deja en `/planes/<nombre>/` y te dice el nombre, y ese nombre es lo que le pasas al que desarrolla. Y si el plan vuelve con decisiones PENDIENTES, pregúntaselas al usuario antes de mandar a escribir: el analista no tiene a quién preguntar y tú sí."
110
111
  : "",
112
+ /**
113
+ * **Lo que se puede MEDIR no se pregunta**, y esto salió de una sesión en vivo.
114
+ *
115
+ * El encargo era «arregla el error que me pasa al arrancar la app». El orquestador miró
116
+ * los ficheros, no lo encontró, y **paró a preguntarle a la persona cuándo pasaba** — con
117
+ * un emulador delante, la app desplegada y un conductor capaz de lanzarla y leer el log,
118
+ * que es donde XOne escribe la excepción con su fichero, su línea y su columna. La
119
+ * persona contestó «al entrar», que es exactamente lo que el aparato habría dicho solo.
120
+ *
121
+ * El modo autónomo NO cubre esto: gobierna las ESCRITURAS —si se aplican sin aprobación—
122
+ * y una pregunta no es una escritura. Así que un turno «autónomo» se queda parado
123
+ * igualmente, y quien lo dejó corriendo se lo encuentra esperando.
124
+ *
125
+ * La frontera es qué clase de cosa es lo que falta: un HECHO del proyecto o del aparato se
126
+ * va a buscar; una DECISIÓN o una preferencia, que solo vive en la cabeza de quien
127
+ * encarga, se pregunta. Por eso esta regla no contradice la del plan con decisiones
128
+ * pendientes de arriba: aquélla habla de lo segundo.
129
+ */
130
+ "Lo que puedas AVERIGUAR, no lo preguntes. Si lo que te falta se puede medir —qué error da al arrancar, en qué pantalla pasa, qué valor tiene un campo— vas y lo mides: `device-controller` lanza la app y trae el log, que es donde XOne escribe la excepción con su fichero y su línea. Preguntar a la persona es para lo que SOLO ella sabe: qué quiere, una decisión de negocio, una credencial. Y ojo, que el modo autónomo no te salva de esto: gobierna si una escritura se aplica sola, no si paras a preguntar — un turno que nadie está mirando se queda ahí.",
111
131
  /**
112
132
  * **Escribir y PROBARLO EN UN APARATO son dos encargos, y el segundo necesita un
113
133
  * destino.** Sin esta regla, «crea una pantalla y pruébala» se leía como una sola `task`
@@ -139,7 +159,7 @@ export function promptOrquestador(agentes) {
139
159
  * los fallos visuales. Por eso se decide contra el encargo y no contra el fichero.
140
160
  */
141
161
  hay("developer-xone") && hay("device-controller")
142
- ? "Si el encargo incluye PROBARLO en un móvil o emulador, son DOS pasos y en este orden: `developer-xone` escribe, y luego `device-controller` lo despliega y lo comprueba. Dile SIEMPRE a qué pantalla o colección tiene que llegar, no solo «pruébalo». Si tienes `xone_critica_visual`, pásale la captura que deje: ve fallos de pintado que ninguna comprobación estática detecta, y si te pide otra pantalla, encárgasela al conductor y vuelve. Y si el encargo traía un DISEÑO o una MAQUETA, pásasela SIEMPRE en `referencia`: sin ella su verde solo dice que nada está roto, no que la pantalla se parezca a lo que te pidieron. De lo que saque, MANDA A CORREGIR solo lo que sirva al encargo que te hicieron: un defecto que ya estaba ahí y que tu cambio no ha causado NO se arregla, se CUENTA en tu respuesta para que lo decida quien te encargó el trabajo. Y no des por buena una pantalla que nadie ha mirado."
162
+ ? "Si el encargo incluye PROBARLO en un móvil o emulador, son DOS pasos y en este orden: `developer-xone` escribe, y luego `device-controller` lo despliega y lo comprueba. Dile SIEMPRE a qué pantalla o colección tiene que llegar, no solo «pruébalo». Si la persona nombra un fichero SUYO por su ruta absoluta (`/Users/...`, `/tmp/...`), NO está en el proyecto y no hace falta delegar en nadie para leerlo: tráetelo con `traer_de_la_maquina`, que lo copia a `/artefactos/` y te dice con qué nombre queda; a partir de ahí se abre como cualquier artefacto, y si es un `.zip` quien tenga shell lo descomprime ahí mismo. Si tienes `xone_critica_visual`, pásale la captura que deje: ve fallos de pintado que ninguna comprobación estática detecta, y si te pide otra pantalla, encárgasela al conductor y vuelve. Y si el encargo traía un DISEÑO o una MAQUETA, pásasela SIEMPRE en `referencia`: sin ella su verde solo dice que nada está roto, no que la pantalla se parezca a lo que te pidieron. De lo que saque, MANDA A CORREGIR solo lo que sirva al encargo que te hicieron: un defecto que ya estaba ahí y que tu cambio no ha causado NO se arregla, se CUENTA en tu respuesta para que lo decida quien te encargó el trabajo. Y no des por buena una pantalla que nadie ha mirado."
143
163
  : "",
144
164
  "Los especialistas no comparten el transcript: al encadenarlos, incluye en la descripción",
145
165
  "de la siguiente `task` un bloque `HANDOFF DE ANÁLISIS` compacto con los hechos verificados,",
@@ -516,6 +536,18 @@ export async function construirAgente(opciones) {
516
536
  leerArtefacto: async (nombre) => readFileSync(join(opciones.artefactos.carpeta, nombre)),
517
537
  invocar: invocarVisualConModelos(opciones.modelos),
518
538
  }),
539
+ /**
540
+ * Traer al área de trabajo un fichero que la PERSONA nombró por su ruta.
541
+ *
542
+ * Va con el orquestador porque es QUIEN LEE ese mensaje: la ruta llega en el
543
+ * encargo, y sin esto la resolvía dentro del proyecto, recibía un ENOENT que
544
+ * decía «no existe» sobre un fichero que sí existe, y se iba a delegar en el
545
+ * único especialista con shell para que lo copiara.
546
+ */
547
+ crearTraerDeLaMaquina({
548
+ carpeta: opciones.artefactos.carpeta,
549
+ alEscribir: opciones.artefactos.alEscribir,
550
+ }),
519
551
  ]),
520
552
  ],
521
553
  interruptOn: hitlDe(PERFIL_DEL_ORQUESTADOR),