xonecode 0.8.23 → 0.8.26
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-CtYEobZI.css → index-DKZqgHtg.css} +1 -1
- package/apps/web/dist/assets/{index-mTaG_gr6.js → index-LdUr7EoT.js} +63 -63
- package/apps/web/dist/assets/{php-BEI3vU5S.js → php-Cg-eWGpQ.js} +1 -1
- package/apps/web/dist/assets/{ruby-DCYozE_k.js → ruby-EcV7Hon3.js} +1 -1
- package/apps/web/dist/index.html +2 -2
- package/dist/agent/dispositivos/juezVisual.js +88 -4
- package/dist/agent/dispositivos/juezVisual.js.map +1 -1
- package/dist/agent/grafo/artefactosEnDisco.js +15 -4
- package/dist/agent/grafo/artefactosEnDisco.js.map +1 -1
- package/dist/agent/grafo/criticaVisual.js +134 -24
- package/dist/agent/grafo/criticaVisual.js.map +1 -1
- package/dist/agent/grafo/proyecto.js +101 -22
- package/dist/agent/grafo/proyecto.js.map +1 -1
- package/dist/agent/grafo/xoneAgent.js +1 -1
- package/dist/agent/grafo/xoneAgent.js.map +1 -1
- package/dist/agent/sesiones/checkpointer.js +183 -1
- package/dist/agent/sesiones/checkpointer.js.map +1 -1
- package/dist/agent/subagentes/agentesEnDisco.js +3 -1
- package/dist/agent/subagentes/agentesEnDisco.js.map +1 -1
- package/dist/cli/consola.js.map +1 -1
- package/dist/cli/main.js +9 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/podar.js +112 -0
- package/dist/cli/podar.js.map +1 -0
- package/dist/core/actos.js.map +1 -1
- package/dist/core/artefactos.js +47 -0
- package/dist/core/artefactos.js.map +1 -1
- package/dist/core/hotswap.js +71 -0
- package/dist/core/hotswap.js.map +1 -0
- package/dist/core/podaDeCheckpoint.js +74 -0
- package/dist/core/podaDeCheckpoint.js.map +1 -0
- package/dist/core/shellDeAgente.js +12 -0
- package/dist/core/shellDeAgente.js.map +1 -1
- package/dist/web/servidor/arranque.js +53 -5
- package/dist/web/servidor/arranque.js.map +1 -1
- package/dist/web/servidor/consolaWeb.js +42 -5
- package/dist/web/servidor/consolaWeb.js.map +1 -1
- package/dist/web/servidor/pielWeb.js +13 -4
- package/dist/web/servidor/pielWeb.js.map +1 -1
- package/dist/web/servidor/vestibulo.js +22 -0
- package/dist/web/servidor/vestibulo.js.map +1 -1
- package/package.json +1 -1
- package/skills/xone-hotswap/SKILL.md +8 -4
- package/skills/xone-hotswap/scripts/xone-hotswap +42 -7
|
@@ -61,7 +61,8 @@ import { motivoDeClaveInaceptable } from "../../core/config.js";
|
|
|
61
61
|
import { aplicarAuth, aplicarCredencialAlProceso, cargar, guardarModeloGlobal, } from "../../agent/config/configEnDisco.js";
|
|
62
62
|
import { borrarCredencial, guardarCredencial } from "../../agent/config/authEnDisco.js";
|
|
63
63
|
import { borrarProveedorPersonalizado, guardarProveedorPersonalizado, proveedoresPersonalizados, } from "../../agent/config/configEnDisco.js";
|
|
64
|
-
import { crearCheckpointerDeProyecto, hayCheckpoint, olvidarHilo, } from "../../agent/sesiones/checkpointer.js";
|
|
64
|
+
import { crearCheckpointerDeProyecto, hayCheckpoint, mantenimientoDelCheckpointer, olvidarHilo, } from "../../agent/sesiones/checkpointer.js";
|
|
65
|
+
import { resumenDePoda } from "../../core/podaDeCheckpoint.js";
|
|
65
66
|
import { cargarSettings, guardarConcurrenciaDeTareas, guardarWorkspace as guardarWorkspaceEnDisco, guardarDispositivos, guardarEntorno as guardarEntornoEnDisco, } from "../../agent/config/settingsEnDisco.js";
|
|
66
67
|
import { dentroDelWorkspace, expandirConCasa, motivoDeWorkspaceInaceptable, } from "../../core/settings.js";
|
|
67
68
|
import { esModoDeEscritura, MODO_POR_OMISION, } from "../../core/modoDeEscritura.js";
|
|
@@ -2008,6 +2009,29 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
2008
2009
|
* Si no hay escritor, se DICE que no se ha guardado en vez de callarlo: un ajuste que
|
|
2009
2010
|
* parece puesto y no lo está es peor que uno que falta.
|
|
2010
2011
|
*/
|
|
2012
|
+
/**
|
|
2013
|
+
* Las CLAVES con las que un control que refleja un ESTADO sustituye su propia línea
|
|
2014
|
+
* pendiente (`LineaDeConsola.sustituye`).
|
|
2015
|
+
*
|
|
2016
|
+
* Los tres son pastillas del compositor: se pulsan una vez por cambio de opinión, y si el
|
|
2017
|
+
* turno está en vuelo las líneas se quedan en la cola y el lazo las ejecuta seguidas al
|
|
2018
|
+
* terminar — dos acuses contiguos, con el primero ya caduco. Los tres tienen el mismo
|
|
2019
|
+
* acuse y el mismo defecto, así que llevan clave los tres: una lista que hay que acordarse
|
|
2020
|
+
* de ampliar es el patrón de fallo de este repo.
|
|
2021
|
+
*
|
|
2022
|
+
* **Hoy ninguna de las tres llega a encolarse dos veces**, y hay que decirlo: la pastilla
|
|
2023
|
+
* no manda si pulsas la que ya está puesta, y ese estado es el CONFIRMADO por el servidor,
|
|
2024
|
+
* que durante un turno no cambia. Reproducido en el navegador. Esto es el lado fail-closed
|
|
2025
|
+
* de esa guarda, que además pierde una pulsación rápida en silencio y está sin arreglar.
|
|
2026
|
+
*
|
|
2027
|
+
* **`/sync` NO está aquí, y esa ausencia es la decisión**: dos subidas son dos operaciones,
|
|
2028
|
+
* no una opinión que cambia. Y nada de lo que teclea una persona se coalesce jamás.
|
|
2029
|
+
*/
|
|
2030
|
+
const CLAVE_DE_CONTROL = {
|
|
2031
|
+
modo: "control:modo-de-escritura",
|
|
2032
|
+
modelo: "control:modelo",
|
|
2033
|
+
esfuerzo: "control:esfuerzo",
|
|
2034
|
+
};
|
|
2011
2035
|
/**
|
|
2012
2036
|
* El esfuerzo de la sesión abierta. `nivel` ausente = quitarlo.
|
|
2013
2037
|
*
|
|
@@ -2037,7 +2061,7 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
2037
2061
|
informar(`«${nivel}» no es un nivel de esfuerzo`);
|
|
2038
2062
|
return;
|
|
2039
2063
|
}
|
|
2040
|
-
abierto.consola.encolar(`/esfuerzo ${nivel}
|
|
2064
|
+
abierto.consola.encolar(`/esfuerzo ${nivel}`, CLAVE_DE_CONTROL.esfuerzo);
|
|
2041
2065
|
};
|
|
2042
2066
|
/**
|
|
2043
2067
|
* El MODO DE ESCRITURA de la sesión abierta.
|
|
@@ -2064,7 +2088,7 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
2064
2088
|
informar(`«${String(modo)}» no es un modo de escritura`);
|
|
2065
2089
|
return;
|
|
2066
2090
|
}
|
|
2067
|
-
abierto.consola.encolar(`/aprobacion ${modo}
|
|
2091
|
+
abierto.consola.encolar(`/aprobacion ${modo}`, CLAVE_DE_CONTROL.modo);
|
|
2068
2092
|
};
|
|
2069
2093
|
/**
|
|
2070
2094
|
* Pregunta a Ollama si el modelo en vigor piensa, y vuelve a emitir cuando conteste.
|
|
@@ -2115,7 +2139,7 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
2115
2139
|
informar("esta ejecución no puede guardar el modelo por defecto");
|
|
2116
2140
|
return;
|
|
2117
2141
|
}
|
|
2118
|
-
abierto.consola.encolar(`/modelo ${id}
|
|
2142
|
+
abierto.consola.encolar(`/modelo ${id}`, CLAVE_DE_CONTROL.modelo);
|
|
2119
2143
|
informar(`modelo de esta sesión: ${id} · esta ejecución no lo guarda como defecto`);
|
|
2120
2144
|
return;
|
|
2121
2145
|
}
|
|
@@ -2131,7 +2155,7 @@ export function montarRutas(servidor, vestibulo, opciones = {}) {
|
|
|
2131
2155
|
informar(`modelo por defecto: ${id} · lo usarán las sesiones nuevas`);
|
|
2132
2156
|
}
|
|
2133
2157
|
else {
|
|
2134
|
-
abierto.consola.encolar(`/modelo ${id}
|
|
2158
|
+
abierto.consola.encolar(`/modelo ${id}`, CLAVE_DE_CONTROL.modelo);
|
|
2135
2159
|
informar(`${id} guardado como modelo por defecto, además de aplicarlo a esta sesión`);
|
|
2136
2160
|
}
|
|
2137
2161
|
// El defecto acaba de cambiar, así que lo que el cliente pinta como «por defecto» se
|
|
@@ -4133,6 +4157,27 @@ export function commitDeTurnoCableado(opciones) {
|
|
|
4133
4157
|
return hecho.via === "fallo" ? `no se pudo commitear el turno: ${hecho.motivo}` : undefined;
|
|
4134
4158
|
};
|
|
4135
4159
|
}
|
|
4160
|
+
/**
|
|
4161
|
+
* El mantenimiento de la memoria del agente, cableado — y EXTRAÍDO por el motivo de siempre:
|
|
4162
|
+
* compuesto dentro del cierre de `arrancarConsolaWeb`, que todos sus tests doblan, esta regla
|
|
4163
|
+
* estaría escrita y no probada. Es la novena vez que este repo tropieza con lo mismo.
|
|
4164
|
+
*
|
|
4165
|
+
* Lo que aquí se puede caer sin que TypeScript diga nada son las DOS mitades: pedir el
|
|
4166
|
+
* checkpointer del proyecto que TOCA —`crearCheckpointerDeProyecto` devuelve la conexión
|
|
4167
|
+
* compartida, y una segunda competiría con nosotros mismos por el lock exclusivo del
|
|
4168
|
+
* `VACUUM`— y devolver el resumen en vez de tragárselo, que es lo único que hace visible que
|
|
4169
|
+
* esto corrió.
|
|
4170
|
+
*
|
|
4171
|
+
* `podar` entra por parámetro para poder mirarlo desde fuera sin una base delante.
|
|
4172
|
+
*/
|
|
4173
|
+
export function mantenimientoDeMemoriaCableado(opciones) {
|
|
4174
|
+
const podar = opciones?.podar ?? mantenimientoDelCheckpointer;
|
|
4175
|
+
const abrir = opciones?.checkpointer ?? crearCheckpointerDeProyecto;
|
|
4176
|
+
return (raiz) => {
|
|
4177
|
+
const hecho = podar(abrir(raiz), raiz);
|
|
4178
|
+
return hecho === undefined ? undefined : resumenDePoda(hecho);
|
|
4179
|
+
};
|
|
4180
|
+
}
|
|
4136
4181
|
/**
|
|
4137
4182
|
* La mudanza de una vez de las copias que siguen en el reparto viejo, cableada — y extraída
|
|
4138
4183
|
* por el motivo de siempre: compuesta dentro del cierre de `arrancarConsolaWeb`, que todos
|
|
@@ -4772,6 +4817,9 @@ function vestibuloReal(opciones, servidor, escribir, informar) {
|
|
|
4772
4817
|
commitearTurno: commitDeTurnoCableado({
|
|
4773
4818
|
base: () => cargarSettings().settings.workspace ?? baseDeWorkspacePorOmision(),
|
|
4774
4819
|
}),
|
|
4820
|
+
// Y el mantenimiento de esa memoria: pasada la cota, se poda lo que ya no reanuda. La
|
|
4821
|
+
// composición está EXTRAÍDA y probada (`mantenimientoDeMemoriaCableado`).
|
|
4822
|
+
mantenerMemoria: mantenimientoDeMemoriaCableado(),
|
|
4775
4823
|
olvidarMarcaDeSesion: olvidarSesion,
|
|
4776
4824
|
// La memoria del agente por hilo. `historica` deja de ser «se reabrió» para ser «no hay
|
|
4777
4825
|
// checkpoint que cargar», y borrar una sesión se lleva también su checkpoint.
|