xonecode 0.12.0 → 0.14.1
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.
- package/apps/web/dist/assets/index-CWAPXNAO.css +1 -0
- package/apps/web/dist/assets/index-KJGPIrNa.js +485 -0
- package/apps/web/dist/assets/{php-DOl4aWua.js → php-KZMIPXrN.js} +1 -1
- package/apps/web/dist/assets/{ruby-DFYuLGa1.js → ruby-jf5bWc_X.js} +1 -1
- package/apps/web/dist/index.html +2 -2
- package/dist/agent/config/settingsEnDisco.js +16 -0
- package/dist/agent/config/settingsEnDisco.js.map +1 -1
- package/dist/agent/dispositivos/procesosEnMaquina.js +24 -2
- package/dist/agent/dispositivos/procesosEnMaquina.js.map +1 -1
- package/dist/agent/grafo/ejecucionCancelable.js +117 -0
- package/dist/agent/grafo/ejecucionCancelable.js.map +1 -0
- package/dist/agent/grafo/incorporarAdjunto.js +262 -0
- package/dist/agent/grafo/incorporarAdjunto.js.map +1 -0
- package/dist/agent/grafo/perfiles.js +12 -5
- package/dist/agent/grafo/perfiles.js.map +1 -1
- package/dist/agent/grafo/proyecto.js +53 -18
- package/dist/agent/grafo/proyecto.js.map +1 -1
- package/dist/agent/grafo/xoneAgent.js +25 -0
- package/dist/agent/grafo/xoneAgent.js.map +1 -1
- package/dist/agent/motores/trueforge/capacidades.js +69 -4
- package/dist/agent/motores/trueforge/capacidades.js.map +1 -1
- package/dist/agent/motores/trueforge/detencion.js +138 -0
- package/dist/agent/motores/trueforge/detencion.js.map +1 -0
- package/dist/agent/motores/trueforge/modeloLangchain.js +36 -4
- package/dist/agent/motores/trueforge/modeloLangchain.js.map +1 -1
- package/dist/agent/motores/trueforge/notas.js +49 -0
- package/dist/agent/motores/trueforge/notas.js.map +1 -0
- package/dist/agent/motores/trueforge/sesionTrueforge.js +100 -3
- package/dist/agent/motores/trueforge/sesionTrueforge.js.map +1 -1
- package/dist/agent/sesiones/adjuntosDeSesion.js +235 -0
- package/dist/agent/sesiones/adjuntosDeSesion.js.map +1 -0
- package/dist/agent/subagentes/agentesEnDisco.js +4 -0
- package/dist/agent/subagentes/agentesEnDisco.js.map +1 -1
- package/dist/agent/trazaDeErroresEnDisco.js +12 -4
- package/dist/agent/trazaDeErroresEnDisco.js.map +1 -1
- package/dist/agent/turno/depuracion.js +27 -0
- package/dist/agent/turno/depuracion.js.map +1 -0
- package/dist/agent/turno/diagnosticoDeTools.js +7 -1
- package/dist/agent/turno/diagnosticoDeTools.js.map +1 -1
- package/dist/agent/turno/informeDeTraza.js +2 -1
- package/dist/agent/turno/informeDeTraza.js.map +1 -1
- package/dist/agent/turno/interrupts.js +13 -0
- package/dist/agent/turno/interrupts.js.map +1 -1
- package/dist/agent/turno/resumenDeTool.js +4 -0
- package/dist/agent/turno/resumenDeTool.js.map +1 -1
- package/dist/agent/turno/turnoReal.js +9 -2
- package/dist/agent/turno/turnoReal.js.map +1 -1
- package/dist/cli/main.js +52 -10
- package/dist/cli/main.js.map +1 -1
- package/dist/core/actos.js.map +1 -1
- package/dist/core/adjuntos.js +72 -14
- package/dist/core/adjuntos.js.map +1 -1
- package/dist/core/entrega.js.map +1 -1
- package/dist/core/settings.js +12 -0
- package/dist/core/settings.js.map +1 -1
- package/dist/core/tareasDelPlan.js +31 -5
- package/dist/core/tareasDelPlan.js.map +1 -1
- package/dist/web/servidor/arranque.js +89 -6
- package/dist/web/servidor/arranque.js.map +1 -1
- package/dist/web/servidor/consolaWeb.js +29 -3
- package/dist/web/servidor/consolaWeb.js.map +1 -1
- package/dist/web/servidor/transporte.js.map +1 -1
- package/dist/web/servidor/vestibulo.js +77 -4
- package/dist/web/servidor/vestibulo.js.map +1 -1
- package/dist/web/servidor/visorOpenui.js +25 -3
- package/dist/web/servidor/visorOpenui.js.map +1 -1
- package/package.json +1 -1
- package/apps/web/dist/assets/index-BCO9A9PF.js +0 -485
- package/apps/web/dist/assets/index-CBbdNsze.css +0 -1
package/dist/core/entrega.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entrega.js","sourceRoot":"","sources":["../../src/core/entrega.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entrega.js","sourceRoot":"","sources":["../../src/core/entrega.ts"],"names":[],"mappings":"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"}
|
package/dist/core/settings.js
CHANGED
|
@@ -21,6 +21,16 @@ export const PLATAFORMAS_DE_DISPOSITIVO = ["android", "androidEmulador", "ios",
|
|
|
21
21
|
export function seMira(ajustes, plataforma) {
|
|
22
22
|
return ajustes?.[plataforma] !== false;
|
|
23
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* ¿Está activa la depuración? Ausente = sí, mientras dure esta etapa de pruebas.
|
|
26
|
+
*
|
|
27
|
+
* Mismo molde que `seMira`: solo `false` apaga. Vive aquí, separado del campo crudo, para que
|
|
28
|
+
* quien resuelve el valor en vigor (`agent/turno/depuracion.ts#entornoConDepuracion`, y el
|
|
29
|
+
* cliente al pintar la casilla) no reimplemente la regla de la omisión cada vez.
|
|
30
|
+
*/
|
|
31
|
+
export function depuracionActiva(depurar) {
|
|
32
|
+
return depurar !== false;
|
|
33
|
+
}
|
|
24
34
|
/**
|
|
25
35
|
* Tope máximo del selector de concurrencia de tareas en Ajustes. La omisión (sin nada
|
|
26
36
|
* guardado) es `CONCURRENCIA_POR_OMISION` de `core/tareas.ts` — 2 — y vive ahí y no aquí
|
|
@@ -114,12 +124,14 @@ export function validarSettings(bruto) {
|
|
|
114
124
|
const workspace = typeof objeto.workspace === "string" ? objeto.workspace : undefined;
|
|
115
125
|
const dispositivos = validarDispositivos(objeto.dispositivos);
|
|
116
126
|
const concurrenciaDeTareas = validarConcurrenciaDeTareas(objeto.concurrenciaDeTareas);
|
|
127
|
+
const depurar = typeof objeto.depurar === "boolean" ? objeto.depurar : undefined;
|
|
117
128
|
return {
|
|
118
129
|
settings: {
|
|
119
130
|
entornos,
|
|
120
131
|
...(workspace === undefined ? {} : { workspace }),
|
|
121
132
|
...(dispositivos === undefined ? {} : { dispositivos }),
|
|
122
133
|
...(concurrenciaDeTareas === undefined ? {} : { concurrenciaDeTareas }),
|
|
134
|
+
...(depurar === undefined ? {} : { depurar }),
|
|
123
135
|
},
|
|
124
136
|
avisos,
|
|
125
137
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/core/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAc,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAqB3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAE,cAAc,CAAU,CAAC;AAgCzG,2CAA2C;AAC3C,MAAM,UAAU,MAAM,CAAC,OAA0C,EAAE,UAAmC;IACpG,OAAO,OAAO,EAAE,CAAC,UAAU,CAAC,KAAK,KAAK,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/core/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,8 +16,15 @@
|
|
|
16
16
|
* «en curso» o un «hecha» son palabras del plan, y traducirlas sería decidir por él.
|
|
17
17
|
* - Un fichero sin ninguna sección con forma de tarea no es un plan vacío: `tareas` va vacío y
|
|
18
18
|
* quien lo pinta enseña el texto entero.
|
|
19
|
+
* - La cabecera se reconoce también en la forma que el modelo escribe a veces fuera del formato,
|
|
20
|
+
* `## T1 — Título` (nivel 2, prefijo `T`): visto en un plan real que la pestaña pintaba como
|
|
21
|
+
* «sin tareas» con siete dentro. El número se conserva TAL CUAL (`T1`), porque es lo que
|
|
22
|
+
* citan sus «Bloqueada por». Con ese prefijo solo cuenta como dependencia un número que lo
|
|
23
|
+
* lleve: «T2 (resuelta la PENDIENTE 3)» es T2, no T2 y 3.
|
|
19
24
|
*/
|
|
20
|
-
const CABECERA_DE_TAREA =
|
|
25
|
+
const CABECERA_DE_TAREA = /^#{2,3}\s+(T?\d{1,3})\s*[—–-]\s*(.+?)\s*$/;
|
|
26
|
+
/** «Ninguna …» o «nada»: la forma de decir que puede empezar ya. */
|
|
27
|
+
export const SIN_DEPENDENCIAS = /^(ninguna|nada)\b/i;
|
|
21
28
|
const ESTADO = /^\*\*Estado:\*\*\s*(.+?)\s*$/i;
|
|
22
29
|
const BLOQUEADA = /^\*\*Bloqueada por:\*\*\s*(.+?)\s*$/i;
|
|
23
30
|
const CASILLA = /^\s*[-*]\s+\[( |x|X)\]\s+/;
|
|
@@ -25,7 +32,9 @@ const CASILLA = /^\s*[-*]\s+\[( |x|X)\]\s+/;
|
|
|
25
32
|
* Los números de tarea que nombra una línea «Bloqueada por». Un rango `01–07` (con guion,
|
|
26
33
|
* raya o «a») se expande con el ancho del primero; «Ninguna» no nombra ninguno.
|
|
27
34
|
*/
|
|
28
|
-
export function dependenciasDe(linea) {
|
|
35
|
+
export function dependenciasDe(linea, conPrefijo = /\bT\d/.test(linea)) {
|
|
36
|
+
if (conPrefijo)
|
|
37
|
+
return dependenciasConPrefijo(linea);
|
|
29
38
|
const salida = [];
|
|
30
39
|
const rango = /\b(\d{1,3})\s*(?:[–—-]|\ba\b)\s*(\d{1,3})\b/g;
|
|
31
40
|
let resto = linea;
|
|
@@ -42,6 +51,22 @@ export function dependenciasDe(linea) {
|
|
|
42
51
|
salida.push(m[1]);
|
|
43
52
|
return [...new Set(salida)];
|
|
44
53
|
}
|
|
54
|
+
/** Las de un plan que numera `T1`, `T2`…: solo los números con prefijo, y `T1–T3` como rango. */
|
|
55
|
+
function dependenciasConPrefijo(linea) {
|
|
56
|
+
const salida = [];
|
|
57
|
+
let resto = linea;
|
|
58
|
+
for (const m of linea.matchAll(/\bT(\d{1,3})\s*(?:[–—-]|\ba\b)\s*T(\d{1,3})\b/g)) {
|
|
59
|
+
const desde = Number(m[1]);
|
|
60
|
+
const hasta = Number(m[2]);
|
|
61
|
+
if (hasta >= desde && hasta - desde < 100)
|
|
62
|
+
for (let n = desde; n <= hasta; n++)
|
|
63
|
+
salida.push(`T${n}`);
|
|
64
|
+
resto = resto.replace(m[0], " ");
|
|
65
|
+
}
|
|
66
|
+
for (const m of resto.matchAll(/\bT(\d{1,3})\b/g))
|
|
67
|
+
salida.push(`T${m[1]}`);
|
|
68
|
+
return [...new Set(salida)];
|
|
69
|
+
}
|
|
45
70
|
export function leerTareasDelPlan(texto) {
|
|
46
71
|
const lineas = texto.replace(/\r\n/g, "\n").split("\n");
|
|
47
72
|
const titulo = lineas.find((l) => /^#\s+/.test(l))?.replace(/^#\s+/, "").trim();
|
|
@@ -68,14 +93,15 @@ export function leerTareasDelPlan(texto) {
|
|
|
68
93
|
hechos++;
|
|
69
94
|
}
|
|
70
95
|
}
|
|
71
|
-
// «Ninguna …» es la forma del formato de decir que puede empezar ya: no nombra tareas aunque
|
|
96
|
+
// «Ninguna …» (o «nada») es la forma del formato de decir que puede empezar ya: no nombra tareas aunque
|
|
72
97
|
// la prosa de detrás lleve un número (una ruta, una línea de un fichero).
|
|
73
|
-
const nombra = bloqueadaPorTexto !== undefined &&
|
|
98
|
+
const nombra = bloqueadaPorTexto !== undefined && !SIN_DEPENDENCIAS.test(bloqueadaPorTexto);
|
|
74
99
|
tareas.push({
|
|
75
100
|
numero: actual.numero,
|
|
76
101
|
titulo: actual.titulo,
|
|
77
102
|
...(estado === undefined ? {} : { estado }),
|
|
78
|
-
|
|
103
|
+
// La numeración la fija la TAREA: en un plan de `T1`, «PENDIENTE 5» no es la tarea 5.
|
|
104
|
+
bloqueadaPor: nombra ? dependenciasDe(bloqueadaPorTexto, actual.numero.startsWith("T")) : [],
|
|
79
105
|
...(bloqueadaPorTexto === undefined ? {} : { bloqueadaPorTexto }),
|
|
80
106
|
criterios: { hechos, total },
|
|
81
107
|
cuerpo: actual.lineas.join("\n").trim(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tareasDelPlan.js","sourceRoot":"","sources":["../../src/core/tareasDelPlan.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tareasDelPlan.js","sourceRoot":"","sources":["../../src/core/tareasDelPlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,8 +65,8 @@ import { borrarCredencial, guardarCredencial } from "../../agent/config/authEnDi
|
|
|
65
65
|
import { borrarProveedorPersonalizado, guardarProveedorPersonalizado, proveedoresPersonalizados, } from "../../agent/config/configEnDisco.js";
|
|
66
66
|
import { crearCheckpointerDeProyecto, mantenimientoDelCheckpointer, } from "../../agent/sesiones/checkpointer.js";
|
|
67
67
|
import { resumenDePoda } from "../../core/podaDeCheckpoint.js";
|
|
68
|
-
import { cargarSettings, guardarConcurrenciaDeTareas, guardarWorkspace as guardarWorkspaceEnDisco, guardarDispositivos, guardarEntorno as guardarEntornoEnDisco, olvidarEntornoDeSettings, copiasDeEntorno, borrarCopiasDeEntorno, } from "../../agent/config/settingsEnDisco.js";
|
|
69
|
-
import { dentroDelWorkspace, expandirConCasa, motivoParaNoOlvidarEntorno, motivoDeNombreDeEntornoInaceptable, motivoDeWorkspaceInaceptable, } from "../../core/settings.js";
|
|
68
|
+
import { cargarSettings, guardarConcurrenciaDeTareas, guardarDepurar, guardarWorkspace as guardarWorkspaceEnDisco, guardarDispositivos, guardarEntorno as guardarEntornoEnDisco, olvidarEntornoDeSettings, copiasDeEntorno, borrarCopiasDeEntorno, } from "../../agent/config/settingsEnDisco.js";
|
|
69
|
+
import { dentroDelWorkspace, depuracionActiva, expandirConCasa, motivoParaNoOlvidarEntorno, motivoDeNombreDeEntornoInaceptable, motivoDeWorkspaceInaceptable, } from "../../core/settings.js";
|
|
70
70
|
import { esModoDeEscritura, MODO_POR_OMISION, } from "../../core/modoDeEscritura.js";
|
|
71
71
|
import { mudarWorkspaceLegado } from "../../agent/config/mudanzaEnDisco.js";
|
|
72
72
|
import { elegirCarpetaEnMaquina, haySelectorDeCarpeta } from "../../agent/config/selectorEnMaquina.js";
|
|
@@ -83,7 +83,7 @@ import { ficherosDelProyecto } from "../../agent/turno/ficherosDelProyecto.js";
|
|
|
83
83
|
import { fotoDeColecciones } from "../../core/fotoDeColecciones.js";
|
|
84
84
|
import { modeloDelCambio } from "../../agent/sesiones/modeloDelCambio.js";
|
|
85
85
|
import { planesDelProyecto } from "../../agent/planesEnDisco.js";
|
|
86
|
-
import { CSP_DE_OPENUI, documentoDeOpenui, esArtefactoOpenui } from "./visorOpenui.js";
|
|
86
|
+
import { CSP_DE_OPENUI, documentoDeOpenui, esArtefactoOpenui, temaDeVisor } from "./visorOpenui.js";
|
|
87
87
|
import { RUTA_IMAGEN_DEL_PROYECTO } from "../../core/imagenesDeDocumento.js";
|
|
88
88
|
import { leerArtefactoCrudo, leerArtefactoDeSesion, } from "../../agent/grafo/artefactosEnDisco.js";
|
|
89
89
|
import { CatalogoModelos, baseUrlDeOllama, baseUrlDeOllamaCloud, capacidadesDeOllama, } from "../../agent/config/catalogoModelos.js";
|
|
@@ -96,6 +96,7 @@ import { consolaParaTarea, crearCorredorDeTareas, revisionConGit, } from "./corr
|
|
|
96
96
|
import { CONCURRENCIA_POR_OMISION, conEstado, darPorBuenaAMano, tituloDeTarea, } from "../../core/tareas.js";
|
|
97
97
|
import { aplicarFeedback, TOPE_DE_ADJUNTO } from "../../agent/tareas/tareasEnDisco.js";
|
|
98
98
|
import { nombreDeAdjuntoAceptable } from "../../core/adjuntos.js";
|
|
99
|
+
import { guardarAdjuntoDeSesion, TOPE_DE_ADJUNTO_DE_SESION } from "../../agent/sesiones/adjuntosDeSesion.js";
|
|
99
100
|
import { rutaMemoriaDeProyecto } from "../../agent/grafo/memoriaDeProyecto.js";
|
|
100
101
|
import { crearAumentador, invocarParaAumentar } from "../../agent/tareas/aumentador.js";
|
|
101
102
|
import { baseDeWorkspaceLegada, baseDeWorkspacePorOmision, conexionDeVestibulo, crearVestibulo, escribirProyectoEnDisco, esProyectoEnDisco, } from "./vestibulo.js";
|
|
@@ -976,6 +977,9 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
976
977
|
// El workspace, por lo mismo que los subagentes y las skills: Ajustes se puede abrir en
|
|
977
978
|
// cuanto conecta, y un campo en blanco se lee como «no hay ninguno puesto».
|
|
978
979
|
const workspace = mensajeDeWorkspace();
|
|
980
|
+
// La casilla «Depurar», por lo mismo que el workspace: Ajustes se puede abrir en cuanto
|
|
981
|
+
// conecta.
|
|
982
|
+
const depuracion = mensajeDeDepuracion();
|
|
979
983
|
// Y los conectores MCP, tras el workspace y por la misma regla: solo si esta ejecución
|
|
980
984
|
// los monta, y entonces la ventana de Ajustes no se abre con la sección en blanco.
|
|
981
985
|
const conectores = mensajeDeConectores();
|
|
@@ -998,6 +1002,8 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
998
1002
|
cliente(tareas);
|
|
999
1003
|
if (workspace !== undefined)
|
|
1000
1004
|
cliente(workspace);
|
|
1005
|
+
if (depuracion !== undefined)
|
|
1006
|
+
cliente(depuracion);
|
|
1001
1007
|
if (conectores !== undefined)
|
|
1002
1008
|
cliente(conectores);
|
|
1003
1009
|
if (consumoDeLaSesion !== undefined) {
|
|
@@ -1016,7 +1022,7 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
1016
1022
|
// Y si hay turno corriendo, se dice: quien conecta a mitad no vio el mensaje que lo
|
|
1017
1023
|
// anunció, y sin esto vería el compositor encendido y sin borde —«no pasa nada»—
|
|
1018
1024
|
// mientras lo que escribiera se quedaba en la cola.
|
|
1019
|
-
cliente({ clase: "turno", activo: turnoEnVuelo() });
|
|
1025
|
+
cliente({ clase: "turno", activo: turnoEnVuelo(), ...(vestibulo.proyectoAbierto()?.turnoDetenible === true ? { detenible: true } : {}) });
|
|
1020
1026
|
/**
|
|
1021
1027
|
* Y la aprobación que esta consola tenga EN VUELO. Hace falta desde que volver a una
|
|
1022
1028
|
* sesión de segundo plano es posible: su turno pudo pararse en un modal mientras
|
|
@@ -1161,6 +1167,15 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
1161
1167
|
if (m !== undefined)
|
|
1162
1168
|
emitir(m);
|
|
1163
1169
|
};
|
|
1170
|
+
const mensajeDeDepuracion = () => {
|
|
1171
|
+
const activa = opciones.depuracionActiva?.();
|
|
1172
|
+
return activa === undefined ? undefined : { clase: "depuracion", activa };
|
|
1173
|
+
};
|
|
1174
|
+
const emitirDepuracion = () => {
|
|
1175
|
+
const m = mensajeDeDepuracion();
|
|
1176
|
+
if (m !== undefined)
|
|
1177
|
+
emitir(m);
|
|
1178
|
+
};
|
|
1164
1179
|
/**
|
|
1165
1180
|
* El servicio de conectores, construido UNA VEZ al montar — no en cada mensaje, porque es
|
|
1166
1181
|
* quien guarda en memoria las pruebas y las autorizaciones pendientes (`servicioDeConectores.ts`).
|
|
@@ -3525,7 +3540,9 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
3525
3540
|
responder(503, "el visor de OpenUI no está construido: ejecuta «npm run build:web»");
|
|
3526
3541
|
return;
|
|
3527
3542
|
}
|
|
3528
|
-
|
|
3543
|
+
// El tema de la CONSOLA (`&tema=`, solo de la lista): el iframe no lo ve por su cuenta.
|
|
3544
|
+
const tema = temaDeVisor(query.get("tema"));
|
|
3545
|
+
const documento = Buffer.from(documentoDeOpenui(leido.datos.toString("utf8"), visor, leido.nombre, tema), "utf8");
|
|
3529
3546
|
respuesta.writeHead(200, {
|
|
3530
3547
|
"Content-Type": "text/html; charset=utf-8",
|
|
3531
3548
|
"Content-Length": documento.length,
|
|
@@ -3735,8 +3752,48 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
3735
3752
|
respuesta.end(texto);
|
|
3736
3753
|
};
|
|
3737
3754
|
const query = new URLSearchParams((peticion.url ?? "").split("?")[1] ?? "");
|
|
3738
|
-
const tarea = query.get("tarea");
|
|
3739
3755
|
const nombre = query.get("nombre");
|
|
3756
|
+
// IXCODE-7: `?para=sesion` es el CHAT de la sesión abierta, no una tarea — el resto de
|
|
3757
|
+
// la ruta (`?tarea=…`) sigue intacto debajo, sin tocar.
|
|
3758
|
+
if (query.get("para") === "sesion") {
|
|
3759
|
+
if (nombre === null || nombre === "") {
|
|
3760
|
+
responder(400, "falta «nombre»");
|
|
3761
|
+
return;
|
|
3762
|
+
}
|
|
3763
|
+
if (!nombreDeAdjuntoAceptable(nombre)) {
|
|
3764
|
+
responder(403, "ese nombre no vale para un adjunto");
|
|
3765
|
+
return;
|
|
3766
|
+
}
|
|
3767
|
+
const abierto = vestibulo.proyectoAbierto();
|
|
3768
|
+
if (abierto === undefined) {
|
|
3769
|
+
responder(409, "no hay ninguna sesión abierta");
|
|
3770
|
+
return;
|
|
3771
|
+
}
|
|
3772
|
+
let datos;
|
|
3773
|
+
try {
|
|
3774
|
+
datos = await leerCuerpoCrudo(peticion, TOPE_DE_ADJUNTO_DE_SESION);
|
|
3775
|
+
}
|
|
3776
|
+
catch {
|
|
3777
|
+
responder(413, "el adjunto es demasiado grande");
|
|
3778
|
+
return;
|
|
3779
|
+
}
|
|
3780
|
+
// El id con que se montó `/adjuntos/` en el disco de ESTA conversación
|
|
3781
|
+
// (`idDeHilo`), no `sesion` — que puede ser `undefined` en una sesión recién abierta.
|
|
3782
|
+
const guardado = guardarAdjuntoDeSesion(abierto.raiz, abierto.idDeHilo, nombre, datos);
|
|
3783
|
+
if (!guardado.ok) {
|
|
3784
|
+
responder(413, guardado.motivo ?? "no se pudo guardar el adjunto");
|
|
3785
|
+
return;
|
|
3786
|
+
}
|
|
3787
|
+
// 200 con JSON y no 204 (Ronda de arreglo 2/5, IXCODE-7): el nombre final lo decide
|
|
3788
|
+
// `guardarAdjuntoDeSesion` —puede llevar sufijo `-2` si ya había un adjunto igual de
|
|
3789
|
+
// OTRO turno de la misma sesión—, y el cliente necesita saberlo para mandarlo luego
|
|
3790
|
+
// con `{clase:"prosa", adjuntos}`. El camino `?tarea=` sigue en 204: ahí el nombre no
|
|
3791
|
+
// cambia, la carpeta es NUEVA por tarea.
|
|
3792
|
+
respuesta.writeHead(200, { "Content-Type": "application/json; charset=utf-8" });
|
|
3793
|
+
respuesta.end(JSON.stringify({ nombre: guardado.nombre }));
|
|
3794
|
+
return;
|
|
3795
|
+
}
|
|
3796
|
+
const tarea = query.get("tarea");
|
|
3740
3797
|
if (tarea === null || tarea === "" || nombre === null || nombre === "") {
|
|
3741
3798
|
responder(400, "faltan «tarea» o «nombre»");
|
|
3742
3799
|
return;
|
|
@@ -4045,6 +4102,13 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
4045
4102
|
respuesta.end();
|
|
4046
4103
|
return;
|
|
4047
4104
|
}
|
|
4105
|
+
if (typeof mensaje === "object" && mensaje !== null && mensaje.clase === "depuracion" && typeof mensaje.activa === "boolean") {
|
|
4106
|
+
opciones.guardarDepuracion?.(mensaje.activa);
|
|
4107
|
+
emitirDepuracion();
|
|
4108
|
+
respuesta.writeHead(204);
|
|
4109
|
+
respuesta.end();
|
|
4110
|
+
return;
|
|
4111
|
+
}
|
|
4048
4112
|
if (typeof mensaje === "object" && mensaje !== null && mensaje.clase === "elegirCarpeta") {
|
|
4049
4113
|
/**
|
|
4050
4114
|
* El diálogo lo abre el SISTEMA donde corre la consola, así que esto tarda lo que
|
|
@@ -4771,6 +4835,22 @@ export function ajusteDeWorkspaceCableado(opciones) {
|
|
|
4771
4835
|
},
|
|
4772
4836
|
};
|
|
4773
4837
|
}
|
|
4838
|
+
/**
|
|
4839
|
+
* Las dos mitades de la casilla «Depurar», cableadas — extraídas por el MISMO motivo que
|
|
4840
|
+
* `ajusteDeWorkspaceCableado`. `leer`/`guardar` entran por parámetro, y no como en el workspace
|
|
4841
|
+
* porque una prueba no puede leer NI escribir el `settings.json` real de quien corre la suite
|
|
4842
|
+
* (compartido por todo el worker vía `casaDePruebas.ts`): a diferencia del workspace, aquí no
|
|
4843
|
+
* hay ninguna regla que aplicar sobre el valor (un booleano no se puede rechazar), así que la
|
|
4844
|
+
* única razón de existir es esta — la MISMA costura de siempre, sin la mitad de validación.
|
|
4845
|
+
*/
|
|
4846
|
+
export function ajusteDeDepuracionCableado(opciones = {}) {
|
|
4847
|
+
const leer = opciones.leer ?? (() => cargarSettings().settings.depurar);
|
|
4848
|
+
const guardar = opciones.guardar ?? ((activa) => void guardarDepurar(undefined, activa));
|
|
4849
|
+
return {
|
|
4850
|
+
depuracionActiva: () => depuracionActiva(leer()),
|
|
4851
|
+
guardarDepuracion: (activa) => guardar(activa),
|
|
4852
|
+
};
|
|
4853
|
+
}
|
|
4774
4854
|
/**
|
|
4775
4855
|
* La opción `conectores` de `montarRutas`, cableada — extraída por el MISMO motivo que
|
|
4776
4856
|
* `ajusteDeWorkspaceCableado`: un literal inline dentro de `arrancarConsolaWeb` no quedaría
|
|
@@ -5100,6 +5180,9 @@ export async function arrancarConsolaWeb(opciones) {
|
|
|
5100
5180
|
// (`ajusteDeWorkspaceCableado`) por el patrón de fallo de siempre — y aquí el escritor
|
|
5101
5181
|
// ya venía con la marca puesta: existía con su test y sin un solo llamador.
|
|
5102
5182
|
...ajusteDeWorkspaceCableado({ casa: homedir() }),
|
|
5183
|
+
// La casilla «Depurar», con la MISMA disciplina: composición extraída y probada
|
|
5184
|
+
// (`ajusteDeDepuracionCableado`).
|
|
5185
|
+
...ajusteDeDepuracionCableado(),
|
|
5103
5186
|
// Los conectores MCP, con la MISMA disciplina: la composición extraída y probada
|
|
5104
5187
|
// (`ajusteDeConectoresCableado`), nunca un literal aquí dentro.
|
|
5105
5188
|
...ajusteDeConectoresCableado({ casa: homedir() }),
|