xonecode 0.23.0 → 0.26.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 (54) hide show
  1. package/THIRD_PARTY_NOTICES.md +32 -0
  2. package/apps/web/dist/assets/EditorDeFichero-BOMIz5Wx.js +38 -0
  3. package/apps/web/dist/assets/EditorDeFichero-BX_LfESa.css +1 -0
  4. package/apps/web/dist/assets/index-DICdq4UC.css +1 -0
  5. package/apps/web/dist/assets/index-DTsPoUh_.js +499 -0
  6. package/apps/web/dist/assets/{php-CQxmz2B6.js → php-BHWCwDKR.js} +1 -1
  7. package/apps/web/dist/assets/{ruby-CipCmGZU.js → ruby-D3HLU4IP.js} +1 -1
  8. package/apps/web/dist/index.html +2 -2
  9. package/dist/agent/cloudstudio/cloudstudioMcp.js +3 -2
  10. package/dist/agent/cloudstudio/cloudstudioMcp.js.map +1 -1
  11. package/dist/agent/cloudstudio/subida.js +22 -7
  12. package/dist/agent/cloudstudio/subida.js.map +1 -1
  13. package/dist/agent/conectores/conectoresEnDisco.js +3 -2
  14. package/dist/agent/conectores/conectoresEnDisco.js.map +1 -1
  15. package/dist/agent/config/configEnDisco.js +5 -2
  16. package/dist/agent/config/configEnDisco.js.map +1 -1
  17. package/dist/agent/config/settingsEnDisco.js +2 -1
  18. package/dist/agent/config/settingsEnDisco.js.map +1 -1
  19. package/dist/agent/grafo/arbolDeProyecto.js +189 -20
  20. package/dist/agent/grafo/arbolDeProyecto.js.map +1 -1
  21. package/dist/agent/motores/trueforge/memoriaTrueforge.js +2 -1
  22. package/dist/agent/motores/trueforge/memoriaTrueforge.js.map +1 -1
  23. package/dist/agent/renombrarSobre.js +72 -0
  24. package/dist/agent/renombrarSobre.js.map +1 -0
  25. package/dist/agent/sesiones/baseDeFichero.js +90 -0
  26. package/dist/agent/sesiones/baseDeFichero.js.map +1 -0
  27. package/dist/agent/sesiones/gitSync.js +166 -1
  28. package/dist/agent/sesiones/gitSync.js.map +1 -1
  29. package/dist/cli/aprobar.js.map +1 -1
  30. package/dist/cli/consola.js +58 -9
  31. package/dist/cli/consola.js.map +1 -1
  32. package/dist/cli/main.js +13 -2
  33. package/dist/cli/main.js.map +1 -1
  34. package/dist/core/actos.js.map +1 -1
  35. package/dist/core/cloudstudio.js +15 -1
  36. package/dist/core/cloudstudio.js.map +1 -1
  37. package/dist/core/descriptoresDeApp.js +27 -1
  38. package/dist/core/descriptoresDeApp.js.map +1 -1
  39. package/dist/core/imagenesDeDocumento.js +7 -0
  40. package/dist/core/imagenesDeDocumento.js.map +1 -1
  41. package/dist/core/settings.js +25 -0
  42. package/dist/core/settings.js.map +1 -1
  43. package/dist/web/servidor/arranque.js +316 -22
  44. package/dist/web/servidor/arranque.js.map +1 -1
  45. package/dist/web/servidor/consolaWeb.js +32 -0
  46. package/dist/web/servidor/consolaWeb.js.map +1 -1
  47. package/dist/web/servidor/sesiones.js +5 -4
  48. package/dist/web/servidor/sesiones.js.map +1 -1
  49. package/dist/web/servidor/transporte.js.map +1 -1
  50. package/dist/web/servidor/vestibulo.js +5 -1
  51. package/dist/web/servidor/vestibulo.js.map +1 -1
  52. package/package.json +1 -1
  53. package/apps/web/dist/assets/index-CLQDE24i.js +0 -490
  54. package/apps/web/dist/assets/index-gpgG7Ir4.css +0 -1
@@ -1,13 +1,17 @@
1
1
  import { existsSync } from "node:fs";
2
- import { open, readFile, realpath, stat } from "node:fs/promises";
3
- import { isAbsolute, relative, resolve, sep } from "node:path";
2
+ import { createHash, randomUUID } from "node:crypto";
3
+ import { lstat, open, readFile, realpath, stat, unlink } from "node:fs/promises";
4
+ import { basename, dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
4
5
  import { ficherosDelProyecto } from "../turno/ficherosDelProyecto.js";
5
6
  import { puedeLeerRuta } from "./perfiles.js";
6
7
  import { esVistaAplanada } from "./proyecto.js";
7
8
  import { conImagenesIncrustadas, enlacesDeImagen, imagenEnProyecto, RUTA_IMAGEN_DEL_PROYECTO } from "../../core/imagenesDeDocumento.js";
9
+ import { renombrarSobre } from "../renombrarSobre.js";
10
+ import { candidatosDeIcono } from "../../core/descriptoresDeApp.js";
8
11
  /**
9
- * El proyecto tal como lo enseña la pestaña Ficheros de la consola web: el árbol y el
10
- * contenido de un fichero, de SOLO lectura.
12
+ * El proyecto tal como lo enseña la pestaña Ficheros de la consola web: el árbol, el
13
+ * contenido de un fichero y, desde el editor de la pestaña, GUARDARLO (`escribirFicheroDeProyecto`): la
14
+ * única escritura del cliente en un fichero del proyecto, con las MISMAS guardas que la lectura.
11
15
  *
12
16
  * Lo que se lista y lo que se lee es lo mismo que ve el agente, con las mismas reglas y
13
17
  * por las mismas funciones: `puedeLeerRuta` (la barrera de las tools propias) y
@@ -113,16 +117,87 @@ export function motivoDeRutaInaceptable(ruta) {
113
117
  return "esa ruta no se enseña";
114
118
  return undefined;
115
119
  }
116
- export async function leerFicheroDeProyecto(raiz, ruta) {
117
- const rechazo = (error) => ({ ruta, recortado: false, binario: false, bytes: 0, error });
120
+ /**
121
+ * ¿Se puede ENSEÑAR esta ruta? La MISMA regla que `leerFicheroDeProyecto`, para quien enseña
122
+ * algo de un fichero que no es su contenido tal cual —el diff de lo pendiente de subir—:
123
+ * criba de texto, vista aplanada, y la segunda pasada sobre el camino REAL cuando el fichero
124
+ * existe (mayúsculas en un disco que no las distingue, enlaces a un fichero denegado). Un
125
+ * fichero que ya no existe —un borrado— solo pasa la criba de texto: no hay camino que resolver,
126
+ * y su contenido sale de git, no del disco.
127
+ */
128
+ export async function motivoParaNoEnsenar(raiz, ruta) {
129
+ const motivo = motivoDeRutaInaceptable(ruta);
130
+ if (motivo !== undefined)
131
+ return motivo;
132
+ const normal = ruta.split(/[\\/]/).join("/");
133
+ if (normal.endsWith(".xml") && existsSync(resolve(raiz, `${normal.slice(0, -4)}.xne`)))
134
+ return MOTIVO_APLANADA;
135
+ // `lstat` y no `existsSync`: este último sigue los enlaces, y un enlace COLGANTE se tomaría por
136
+ // un borrado —solo criba de texto— y el diff enseñaría su destino. Con `lstat` el enlace existe
137
+ // y pasa por la cadena entera, que falla cerrado al no poder resolverlo.
138
+ try {
139
+ await lstat(resolve(raiz, normal));
140
+ }
141
+ catch {
142
+ return undefined;
143
+ }
144
+ // Si existe, la cadena ENTERA de guardas es la de leer y guardar (`resolverEnProyecto`): una
145
+ // segunda copia de la recomprobación sobre `realpath` divergiría el primer día.
146
+ const resuelta = await resolverEnProyecto(raiz, ruta);
147
+ if (!("error" in resuelta))
148
+ return undefined;
149
+ return resuelta.error === "no existe" ? "no se puede comprobar" : resuelta.error;
150
+ }
151
+ /**
152
+ * La ruta RELATIVA del icono de la app de un proyecto bajado, o `undefined` si no tiene uno que se
153
+ * pueda enseñar.
154
+ *
155
+ * El nombre sale de `app.ini` (`core/descriptoresDeApp.ts#candidatosDeIcono`) y cada candidato pasa
156
+ * la MISMA barrera que la pestaña Ficheros (`motivoParaNoEnsenar`: texto y `realpath`), además de
157
+ * ser una imagen que sabemos pintar, un fichero de verdad y caber en `TOPE_DE_IMAGEN`. Un
158
+ * `icon=../.env` o un `icon.png` enlazado a un fichero denegado se quedan en «sin icono», que en la
159
+ * barra es la carpeta de siempre. Nunca lanza: un icono es decoración y no puede tumbar un anuncio.
160
+ */
161
+ export async function iconoDelProyecto(raiz) {
162
+ try {
163
+ const ini = await readFile(resolve(raiz, "app.ini"), "utf-8");
164
+ for (const candidato of candidatosDeIcono(ini)) {
165
+ if (mimeDeImagen(candidato) === undefined)
166
+ continue;
167
+ const motivo = motivoDeRutaInaceptable(candidato);
168
+ if (motivo !== undefined)
169
+ continue;
170
+ const enDisco = resolve(raiz, candidato.split(/[\\/]/).join("/"));
171
+ if (!existsSync(enDisco))
172
+ continue;
173
+ const datos = await stat(enDisco);
174
+ if (!datos.isFile() || datos.size > TOPE_DE_IMAGEN)
175
+ continue;
176
+ if ((await motivoParaNoEnsenar(raiz, candidato)) !== undefined)
177
+ continue;
178
+ return candidato;
179
+ }
180
+ }
181
+ catch {
182
+ // Sin `app.ini`, o ilegible: sin icono.
183
+ }
184
+ return undefined;
185
+ }
186
+ /**
187
+ * La cadena ENTERA de guardas de una ruta del cable, en UN sitio: la usan leer, guardar y la base
188
+ * de las marcas del editor (`agent/sesiones/baseDeFichero.ts`). Se extrajo de la lectura cuando
189
+ * apareció la escritura: copiarla habría sido la segunda copia que diverge el primer día, y en el
190
+ * lado que escribe un agujero ya no enseña un secreto, lo pisa.
191
+ */
192
+ export async function resolverEnProyecto(raiz, ruta) {
118
193
  const motivo = motivoDeRutaInaceptable(ruta);
119
194
  if (motivo !== undefined)
120
- return rechazo(motivo);
195
+ return { error: motivo };
121
196
  // La misma regla que `esVistaAplanada` (un `.xml` con su `.xne` al lado), preguntada al
122
197
  // disco en O(1) en vez de recorrer el árbol entero por cada fichero que se abre.
123
198
  const normal = ruta.split(/[\\/]/).join("/");
124
199
  if (normal.endsWith(".xml") && existsSync(resolve(raiz, `${normal.slice(0, -4)}.xne`))) {
125
- return rechazo(MOTIVO_APLANADA);
200
+ return { error: MOTIVO_APLANADA };
126
201
  }
127
202
  let real;
128
203
  let raizReal;
@@ -135,12 +210,12 @@ export async function leerFicheroDeProyecto(raiz, ruta) {
135
210
  real = await realpath(resolve(raiz, normal));
136
211
  }
137
212
  catch {
138
- return rechazo("no existe");
213
+ return { error: "no existe" };
139
214
  }
140
215
  // Un enlace simbólico dentro del proyecto que apunte fuera se queda aquí: la lección que
141
216
  // el repo ya pagó con `virtualMode: true` en el backend del agente.
142
217
  if (!real.startsWith(raizReal + sep))
143
- return rechazo("está fuera del proyecto");
218
+ return { error: "está fuera del proyecto" };
144
219
  // **La barrera se aplica DOS veces, y una sola no basta.** La primera pasada es sobre el
145
220
  // TEXTO que teclea el cliente (`motivoDeRutaInaceptable` y la criba de aplanadas de
146
221
  // arriba): es de balde y evita tocar el disco. Esta segunda es sobre el camino que el
@@ -156,16 +231,23 @@ export async function leerFicheroDeProyecto(raiz, ruta) {
156
231
  // `realpath` canonicaliza las mayúsculas y sigue los enlaces, así que recomprobar sobre
157
232
  // su resultado cierra los tres a la vez. Y sigue siendo una recomprobación y no una
158
233
  // prohibición de enlaces: un enlace a un fichero que SÍ se enseña se lee con normalidad.
159
- const relReal = relative(raizReal, real).split(sep).join("/");
160
- if (!puedeLeerRuta(`/${relReal}`))
161
- return rechazo("esa ruta no se enseña");
162
- if (relReal.endsWith(".xml") && existsSync(`${real.slice(0, -4)}.xne`))
163
- return rechazo(MOTIVO_APLANADA);
164
- const leido = await leerContenidoDeFichero(real, ruta, mimeDeImagen(normal));
234
+ const relativa = relative(raizReal, real).split(sep).join("/");
235
+ if (!puedeLeerRuta(`/${relativa}`))
236
+ return { error: "esa ruta no se enseña" };
237
+ if (relativa.endsWith(".xml") && existsSync(`${real.slice(0, -4)}.xne`))
238
+ return { error: MOTIVO_APLANADA };
239
+ return { real, relativa, normal };
240
+ }
241
+ export async function leerFicheroDeProyecto(raiz, ruta) {
242
+ const rechazo = (error) => ({ ruta, recortado: false, binario: false, bytes: 0, error });
243
+ const resuelta = await resolverEnProyecto(raiz, ruta);
244
+ if ("error" in resuelta)
245
+ return rechazo(resuelta.error);
246
+ const leido = await leerContenidoDeFichero(resuelta.real, ruta, mimeDeImagen(resuelta.normal));
165
247
  // Un markdown con imágenes del proyecto lleva además su VISTA: enlazadas en relativo, en la página
166
248
  // de la consola salían rotas (`core/imagenesDeDocumento.ts`).
167
- if (/\.(md|markdown)$/i.test(normal) && leido.texto !== undefined && !leido.recortado) {
168
- const vista = vistaDeMarkdown(normal, leido.texto);
249
+ if (/\.(md|markdown)$/i.test(resuelta.normal) && leido.texto !== undefined && !leido.recortado) {
250
+ const vista = vistaDeMarkdown(resuelta.normal, leido.texto);
169
251
  if (vista !== undefined)
170
252
  return { ...leido, vista };
171
253
  }
@@ -276,13 +358,17 @@ export async function leerContenidoDeFichero(real, ruta, mime) {
276
358
  const recortado = bytesRead > TOPE_DE_FICHERO;
277
359
  const cuerpo = recortado ? leido.subarray(0, TOPE_DE_FICHERO) : leido;
278
360
  const { texto, codificacion } = decodificar(cuerpo, recortado);
361
+ // La huella, solo con el fichero ENTERO y en UTF-8: es la condición para editarlo, y sobre
362
+ // los BYTES (no sobre el texto decodificado, que ha perdido el BOM) para que se compare
363
+ // contra lo mismo que se volverá a leer al guardar.
364
+ const conHuella = !recortado && codificacion === "utf-8" ? { huella: huellaDeContenido(cuerpo) } : {};
279
365
  // El SVG viaja con las dos caras: la fuente que se acaba de decodificar y el dibujo
280
366
  // para pintarlo. El dibujo solo si el fichero entró ENTERO —un SVG cortado por la mitad
281
367
  // no abre— y solo desde el mismo cuerpo que ya está en memoria.
282
368
  if (mime === "image/svg+xml" && !recortado) {
283
- return { ruta, texto, recortado, binario: false, bytes, codificacion, mime, base64: Buffer.from(cuerpo).toString("base64") };
369
+ return { ruta, texto, recortado, binario: false, bytes, codificacion, mime, base64: Buffer.from(cuerpo).toString("base64"), ...conHuella };
284
370
  }
285
- return { ruta, texto, recortado, binario: false, bytes, codificacion };
371
+ return { ruta, texto, recortado, binario: false, bytes, codificacion, ...conHuella };
286
372
  }
287
373
  finally {
288
374
  await fh.close();
@@ -307,4 +393,87 @@ function decodificar(cuerpo, recortado) {
307
393
  }
308
394
  return { texto: new TextDecoder("latin1").decode(cuerpo), codificacion: "latin1" };
309
395
  }
396
+ /**
397
+ * La HUELLA de un contenido: sha256 de sus bytes. Es la concurrencia optimista del editor: viaja
398
+ * al leer y vuelve al guardar, y si el disco ya no coincide no se escribe nada. Un hash y no una
399
+ * fecha de modificación porque una fecha no distingue «lo reescribió con lo mismo» de «lo cambió»,
400
+ * y en una copia mudada o bajada de nuevo las fechas no dicen nada.
401
+ */
402
+ export function huellaDeContenido(bytes) {
403
+ return createHash("sha256").update(bytes).digest("hex");
404
+ }
405
+ const BOM = Buffer.from([0xef, 0xbb, 0xbf]);
406
+ /**
407
+ * Guarda lo que la persona editó en la pestaña Ficheros. En orden, y cualquier paso que falle
408
+ * DEVUELVE su motivo sin haber tocado el disco:
409
+ *
410
+ * 1. Las MISMAS guardas que leer (`resolverEnProyecto`), y además que sea un fichero normal —una
411
+ * carpeta no— y que no sea una imagen, que no se edita desde aquí.
412
+ * 2. La huella: si lo que hay en disco no es lo que el cliente cargó, alguien (el agente, otra
413
+ * pestaña, un editor de fuera) lo cambió, y escribir encima lo perdería sin avisar.
414
+ * 3. El tope, en BYTES: el mismo que la lectura, porque lo que no se puede leer entero no se edita.
415
+ * 4. Escritura ATÓMICA sobre el camino REAL (temporal en la misma carpeta + `rename`): un corte a
416
+ * mitad deja el fichero viejo, no uno truncado; y sobre el real porque renombrar encima de un
417
+ * enlace lo sustituiría por un fichero normal.
418
+ *
419
+ * Lo que NO hace es comprobar que nadie trabaja en el proyecto: eso es del manejador del cable
420
+ * (`arranque.ts#atenderGuardarFichero`), que es quien ve las consolas vivas.
421
+ *
422
+ * El BOM: el lector decodifica con `TextDecoder`, que lo QUITA, así que el editor nunca lo ve; si
423
+ * el fichero lo llevaba y el texto no, se le devuelve —si no, guardar un fichero sin tocar una
424
+ * coma cambiaría sus bytes—.
425
+ */
426
+ export async function escribirFicheroDeProyecto(raiz, ruta, texto, huella) {
427
+ const rechazo = (error) => ({ ruta, error });
428
+ const resuelta = await resolverEnProyecto(raiz, ruta);
429
+ if ("error" in resuelta)
430
+ return rechazo(resuelta.error);
431
+ try {
432
+ const info = await stat(resuelta.real);
433
+ if (!info.isFile())
434
+ return rechazo("no es un fichero");
435
+ if (mimeDeImagen(resuelta.normal) !== undefined)
436
+ return rechazo("una imagen no se edita desde aquí");
437
+ const actual = await readFile(resuelta.real);
438
+ if (huellaDeContenido(actual) !== huella) {
439
+ return rechazo("el fichero cambió desde que lo abriste: recárgalo antes de guardar");
440
+ }
441
+ const conBom = actual.subarray(0, BOM.length).equals(BOM) && !texto.startsWith("");
442
+ const bytes = Buffer.concat([conBom ? BOM : Buffer.alloc(0), Buffer.from(texto, "utf8")]);
443
+ if (bytes.length > TOPE_DE_FICHERO) {
444
+ return rechazo(`pasa del tope de ${Math.round(TOPE_DE_FICHERO / 1000)} KB que se edita desde aquí`);
445
+ }
446
+ await escribirAtomico(resuelta.real, bytes, info.mode & 0o7777);
447
+ return { ruta, huella: huellaDeContenido(bytes) };
448
+ }
449
+ catch (error) {
450
+ // Solo el `code`: el mensaje de Node lleva la ruta absoluta, y esto sale por el cable.
451
+ const code = error.code;
452
+ return rechazo(`no se pudo escribir el fichero${code === undefined ? "" : ` (${code})`}`);
453
+ }
454
+ }
455
+ /**
456
+ * Temporal en la MISMA carpeta + `rename`, el patrón de `settingsEnDisco.ts#escribirAtomico`. No se
457
+ * reutiliza aquella: fija 0600, crea la carpeta y nombra el temporal como el de `settings.json`, y
458
+ * aquí los permisos son los del fichero del usuario (un `.sh` ejecutable tiene que seguir
459
+ * siéndolo). El `chmod` explícito es porque el umask recorta el modo que se pide al abrir.
460
+ */
461
+ async function escribirAtomico(destino, bytes, modo) {
462
+ const temporal = join(dirname(destino), `.${basename(destino)}.${randomUUID()}.xonecode.tmp`);
463
+ let fh;
464
+ try {
465
+ fh = await open(temporal, "wx", modo);
466
+ await fh.writeFile(bytes);
467
+ await fh.chmod(modo);
468
+ await fh.sync();
469
+ await fh.close();
470
+ fh = undefined;
471
+ await renombrarSobre(temporal, destino);
472
+ }
473
+ catch (error) {
474
+ await fh?.close().catch(() => { });
475
+ await unlink(temporal).catch(() => { });
476
+ throw error;
477
+ }
478
+ }
310
479
  //# sourceMappingURL=arbolDeProyecto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"arbolDeProyecto.js","sourceRoot":"","sources":["../../../src/agent/grafo/arbolDeProyecto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arbolDeProyecto.js","sourceRoot":"","sources":["../../../src/agent/grafo/arbolDeProyecto.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,7 @@
32
32
  import { chmodSync, existsSync, mkdirSync, openSync, closeSync, readdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
33
33
  import { basename, dirname, join } from "node:path";
34
34
  import { VERSION_DE_TRUEFORGE } from "./trueforge.js";
35
+ import { renombrarSobreSync } from "../../renombrarSobre.js";
35
36
  /** Un id de sesión que se puede usar como nombre de carpeta: segmento llano y nada más. */
36
37
  const ID_VALIDO = /^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/;
37
38
  /** Dónde vive la memoria de la sesión `hilo`, o `undefined` si el id no es un segmento llano. */
@@ -246,7 +247,7 @@ export function guardarMemoria(raiz, hilo, foto) {
246
247
  closeSync(openSync(temporal, "w", 0o600));
247
248
  chmodSync(temporal, 0o600);
248
249
  writeFileSync(temporal, JSON.stringify(enDisco), { mode: 0o600 });
249
- renameSync(temporal, ruta);
250
+ renombrarSobreSync(temporal, ruta);
250
251
  }
251
252
  /**
252
253
  * La memoria de la sesión, con su estado. No tener fichero es `sin-memoria`, no un fallo; uno que
@@ -1 +1 @@
1
- {"version":3,"file":"memoriaTrueforge.js","sourceRoot":"","sources":["../../../../src/agent/motores/trueforge/memoriaTrueforge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memoriaTrueforge.js","sourceRoot":"","sources":["../../../../src/agent/motores/trueforge/memoriaTrueforge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { renameSync } from "node:fs";
2
+ import { rename } from "node:fs/promises";
3
+ /**
4
+ * Renombrar un fichero ENCIMA de otro, que es el último paso de toda escritura atómica del harness
5
+ * (temporal + rename): el índice de sesiones, `settings.json`, `config.json`, los conectores, el
6
+ * estado OAuth, la foto de memoria y el guardado del editor.
7
+ *
8
+ * **Por qué no basta `renameSync`.** En Windows, renombrar encima de un fichero falla con `EPERM`
9
+ * (o `EACCES`/`EBUSY`) si OTRO proceso lo tiene abierto en ese instante sin compartir el borrado.
10
+ * Lo abren solos, y a ráfagas, Windows Defender y el indexador de búsqueda: escanean cada fichero
11
+ * recién escrito durante unos milisegundos. Visto en una máquina real, sobre el índice de sesiones
12
+ * —que se reescribe varias veces por turno—: `EPERM: operation not permitted, rename
13
+ * '…\.indice.json.<uuid>.tmp' -> '…\indice.json'`. No es un permiso que falte: es un bloqueo
14
+ * pasajero, y reintentar un momento basta (es lo que hace `graceful-fs`, el de npm).
15
+ *
16
+ * **Solo en Windows y solo esos tres códigos.** En macOS y Linux un `EPERM` es un permiso de
17
+ * verdad, y reintentarlo solo retrasaría el mismo error. Otro código (`ENOENT`, `EXDEV`) se lanza a
18
+ * la primera. La espera crece y está ACOTADA: si el fichero no se suelta, se lanza el error
19
+ * original, nunca se cuelga la consola. Mientras tanto el temporal sigue intacto y el destino no se
20
+ * ha tocado, así que quien llama limpia como siempre.
21
+ *
22
+ * La versión síncrona duerme con `Atomics.wait`: bloquea el proceso esos milisegundos, que es lo
23
+ * que ya hacía la escritura síncrona; preferible a fallar el turno.
24
+ */
25
+ /** Los códigos que en Windows significan «alguien lo tiene abierto ahora mismo». */
26
+ const CODIGOS_PASAJEROS = new Set(["EPERM", "EACCES", "EBUSY"]);
27
+ /** Esperas entre intentos, en milisegundos: crecen y suman algo más de un segundo. */
28
+ export const ESPERAS_DE_RENOMBRADO_MS = [10, 20, 40, 80, 160, 320, 640];
29
+ function esPasajero(error, plataforma) {
30
+ const code = error?.code;
31
+ return plataforma === "win32" && typeof code === "string" && CODIGOS_PASAJEROS.has(code);
32
+ }
33
+ function dormirSync(ms) {
34
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
35
+ }
36
+ /** `renameSync` que, en Windows, aguanta el bloqueo pasajero de un antivirus o un indexador. */
37
+ export function renombrarSobreSync(origen, destino, opciones = {}) {
38
+ const plataforma = opciones.plataforma ?? process.platform;
39
+ const dormir = opciones.dormir ?? dormirSync;
40
+ const renombrar = opciones.rename ?? renameSync;
41
+ for (let intento = 0;; intento++) {
42
+ try {
43
+ void renombrar(origen, destino);
44
+ return;
45
+ }
46
+ catch (error) {
47
+ const espera = ESPERAS_DE_RENOMBRADO_MS[intento];
48
+ if (espera === undefined || !esPasajero(error, plataforma))
49
+ throw error;
50
+ void dormir(espera);
51
+ }
52
+ }
53
+ }
54
+ /** La versión asíncrona, para quien ya escribe con `node:fs/promises`. */
55
+ export async function renombrarSobre(origen, destino, opciones = {}) {
56
+ const plataforma = opciones.plataforma ?? process.platform;
57
+ const dormir = opciones.dormir ?? ((ms) => new Promise((listo) => setTimeout(listo, ms)));
58
+ const renombrar = opciones.rename ?? rename;
59
+ for (let intento = 0;; intento++) {
60
+ try {
61
+ await renombrar(origen, destino);
62
+ return;
63
+ }
64
+ catch (error) {
65
+ const espera = ESPERAS_DE_RENOMBRADO_MS[intento];
66
+ if (espera === undefined || !esPasajero(error, plataforma))
67
+ throw error;
68
+ await dormir(espera);
69
+ }
70
+ }
71
+ }
72
+ //# sourceMappingURL=renombrarSobre.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renombrarSobre.js","sourceRoot":"","sources":["../../src/agent/renombrarSobre.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,oFAAoF;AACpF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAEhE,sFAAsF;AACtF,MAAM,CAAC,MAAM,wBAAwB,GAAsB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAW3F,SAAS,UAAU,CAAC,KAAc,EAAE,UAA2B;IAC7D,MAAM,IAAI,GAAI,KAA2C,EAAE,IAAI,CAAC;IAChE,OAAO,UAAU,KAAK,OAAO,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3F,CAAC;AAED,SAAS,UAAU,CAAC,EAAU;IAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,OAAe,EAAE,WAAiC,EAAE;IACrG,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC;IAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,UAAU,CAAC;IAC7C,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,UAAU,CAAC;IAChD,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,KAAK,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC;gBAAE,MAAM,KAAK,CAAC;YACxE,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAc,EAAE,OAAe,EAAE,WAAiC,EAAE;IACvG,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC;IAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAO,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACxG,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC;IAC5C,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC;gBAAE,MAAM,KAAK,CAAC;YACxE,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * La BASE contra la que el editor de la pestaña Ficheros pinta sus marcas: el fichero como estaba
3
+ * al abrir la sesión (`refs/xonecode/sesion/<id>`, la foto de `sesionGit.ts#fotoDeApertura`) o en
4
+ * el último commit (`HEAD`). El cálculo de trozos lo hace el cliente; aquí solo se trae el texto.
5
+ *
6
+ * Tres respuestas, y son tres cosas distintas: `texto` (había una versión), `vacio` (en esa base el
7
+ * fichero no existía: todo él es nuevo) y `sinBase` con el motivo (no hay con qué comparar). Fundir
8
+ * la tercera en un texto vacío pintaría el fichero entero de verde, que es afirmar algo falso.
9
+ *
10
+ * Las guardas de ruta son las de leer (`resolverEnProyecto`) y se pasan ANTES de tocar git: una
11
+ * ruta que la pestaña no enseña tampoco sale de un commit viejo. Y a git se le da la ruta REAL
12
+ * relativa (`relativa`), no la tecleada, con `./` delante para que se resuelva desde la carpeta
13
+ * del proyecto aunque este cuelgue de un repo mayor (`instantanea.ts` sostiene ese caso).
14
+ */
15
+ import { execFile } from "node:child_process";
16
+ import { promisify } from "node:util";
17
+ import { resolverEnProyecto, TOPE_DE_FICHERO } from "../grafo/arbolDeProyecto.js";
18
+ import { refDeSesion } from "./sesionGit.js";
19
+ const ejecutar = promisify(execFile);
20
+ export async function baseDeFichero(raiz, sesion, ruta, base) {
21
+ const sin = (motivo) => ({ ruta, base, sinBase: motivo });
22
+ const resuelta = await resolverEnProyecto(raiz, ruta);
23
+ if ("error" in resuelta)
24
+ return sin(resuelta.error);
25
+ if (!(await enUnRepositorio(raiz)))
26
+ return sin("el proyecto no está en un repositorio git");
27
+ let revision;
28
+ if (base === "sesion") {
29
+ // El mismo texto que `modeloDelCambio` usa para lo mismo: sin sesión no hay «antes».
30
+ if (sesion === undefined)
31
+ return sin("la sesión todavía no ha empezado");
32
+ const ref = refDeSesion(sesion);
33
+ if (ref === undefined || !(await existeArbol(raiz, ref))) {
34
+ return sin("esta sesión no tiene foto de su inicio: se abrió sin git usable");
35
+ }
36
+ revision = ref;
37
+ }
38
+ else {
39
+ if (!(await existeArbol(raiz, "HEAD")))
40
+ return sin("el repositorio todavía no tiene ningún commit");
41
+ revision = "HEAD";
42
+ }
43
+ const objeto = `${revision}:./${resuelta.relativa}`;
44
+ try {
45
+ await ejecutar("git", ["cat-file", "-e", objeto], { cwd: raiz });
46
+ }
47
+ catch {
48
+ return { ruta, base, vacio: true };
49
+ }
50
+ let salida;
51
+ try {
52
+ // `cat-file blob` y no `show`: el contenido crudo del blob, sin textconv ni filtros. El
53
+ // `maxBuffer` un poco por encima del tope: lo que lo pasa no se compara (ver abajo).
54
+ const r = await ejecutar("git", ["cat-file", "blob", objeto], { cwd: raiz, encoding: "buffer", maxBuffer: TOPE_DE_FICHERO + 1024 });
55
+ salida = r.stdout;
56
+ }
57
+ catch {
58
+ return sin("git no pudo leer esa versión del fichero, o pasa del tope que se compara");
59
+ }
60
+ if (salida.length > TOPE_DE_FICHERO)
61
+ return sin("esa versión del fichero pasa del tope que se compara");
62
+ try {
63
+ // Estricto, y quitando el BOM igual que la lectura (`TextDecoder` por omisión): la base y el
64
+ // texto del editor tienen que haberse decodificado igual o la primera línea saldría cambiada.
65
+ return { ruta, base, texto: new TextDecoder("utf-8", { fatal: true }).decode(salida) };
66
+ }
67
+ catch {
68
+ return sin("esa versión del fichero no está en UTF-8");
69
+ }
70
+ }
71
+ async function enUnRepositorio(raiz) {
72
+ try {
73
+ await ejecutar("git", ["rev-parse", "--is-inside-work-tree"], { cwd: raiz });
74
+ return true;
75
+ }
76
+ catch {
77
+ return false;
78
+ }
79
+ }
80
+ /** `^{tree}` porque la ref de una sesión apunta a un ÁRBOL y la de `HEAD` a un commit: vale para los dos. */
81
+ async function existeArbol(raiz, revision) {
82
+ try {
83
+ await ejecutar("git", ["rev-parse", "--verify", "--quiet", `${revision}^{tree}`], { cwd: raiz });
84
+ return true;
85
+ }
86
+ catch {
87
+ return false;
88
+ }
89
+ }
90
+ //# sourceMappingURL=baseDeFichero.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseDeFichero.js","sourceRoot":"","sources":["../../../src/agent/sesiones/baseDeFichero.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAYrC,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,MAA0B,EAC1B,IAAY,EACZ,IAAuB;IAEvB,MAAM,GAAG,GAAG,CAAC,MAAc,EAAa,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtD,IAAI,OAAO,IAAI,QAAQ;QAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAE5F,IAAI,QAAgB,CAAC;IACrB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,qFAAqF;QACrF,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC,kCAAkC,CAAC,CAAC;QACzE,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YACzD,OAAO,GAAG,CAAC,iEAAiE,CAAC,CAAC;QAChF,CAAC;QACD,QAAQ,GAAG,GAAG,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC,+CAA+C,CAAC,CAAC;QACpG,QAAQ,GAAG,MAAM,CAAC;IACpB,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,QAAQ,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;IACpD,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACrC,CAAC;IACD,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,wFAAwF;QACxF,qFAAqF;QACrF,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,GAAG,IAAI,EAAE,CAAC,CAAC;QACpI,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC,0EAA0E,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,eAAe;QAAE,OAAO,GAAG,CAAC,sDAAsD,CAAC,CAAC;IACxG,IAAI,CAAC;QACH,6FAA6F;QAC7F,8FAA8F;QAC9F,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IACzF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAY;IACzC,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,uBAAuB,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,6GAA6G;AAC7G,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,QAAgB;IACvD,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,QAAQ,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QACjG,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}