xonecode 0.5.1 → 0.8.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.
- package/apps/web/dist/assets/{index-BB3SamhR.css → index-Boak51UP.css} +1 -1
- package/apps/web/dist/assets/index-Cg28x6nG.js +477 -0
- package/apps/web/dist/assets/{php-D_2--9WK.js → php-Cu6F_QCJ.js} +1 -1
- package/apps/web/dist/assets/{ruby-DSHSDbk1.js → ruby-BiqQPoC6.js} +1 -1
- package/apps/web/dist/index.html +2 -2
- package/dist/agent/{cloudstudioClient.js → cloudstudio/cloudstudioClient.js} +10 -0
- package/dist/agent/cloudstudio/cloudstudioClient.js.map +1 -0
- package/dist/agent/{cloudstudioMcp.js → cloudstudio/cloudstudioMcp.js} +5 -5
- package/dist/agent/cloudstudio/cloudstudioMcp.js.map +1 -0
- package/dist/agent/{descarga.js → cloudstudio/descarga.js} +17 -7
- package/dist/agent/cloudstudio/descarga.js.map +1 -0
- package/dist/agent/cloudstudio/manifiesto.js.map +1 -0
- package/dist/agent/cloudstudio/ramaActiva.js +11 -0
- package/dist/agent/cloudstudio/ramaActiva.js.map +1 -0
- package/dist/agent/{subida.js → cloudstudio/subida.js} +16 -7
- package/dist/agent/cloudstudio/subida.js.map +1 -0
- package/dist/agent/{zip.js → cloudstudio/zip.js} +1 -1
- package/dist/agent/cloudstudio/zip.js.map +1 -0
- package/dist/agent/{authEnDisco.js → config/authEnDisco.js} +3 -3
- package/dist/agent/config/authEnDisco.js.map +1 -0
- package/dist/agent/{catalogoModelos.js → config/catalogoModelos.js} +47 -1
- package/dist/agent/config/catalogoModelos.js.map +1 -0
- package/dist/agent/{configEnDisco.js → config/configEnDisco.js} +6 -6
- package/dist/agent/config/configEnDisco.js.map +1 -0
- package/dist/agent/{crearProyecto.js → config/crearProyecto.js} +2 -2
- package/dist/agent/config/crearProyecto.js.map +1 -0
- package/dist/agent/config/entorno.js.map +1 -0
- package/dist/agent/config/gemini.js.map +1 -0
- package/dist/agent/config/modelos.js +235 -0
- package/dist/agent/config/modelos.js.map +1 -0
- package/dist/agent/{modelosDeMotor.js → config/modelosDeMotor.js} +1 -1
- package/dist/agent/config/modelosDeMotor.js.map +1 -0
- package/dist/agent/config/mudanzaEnDisco.js +121 -0
- package/dist/agent/config/mudanzaEnDisco.js.map +1 -0
- package/dist/agent/{persona.js → config/persona.js} +1 -1
- package/dist/agent/config/persona.js.map +1 -0
- package/dist/agent/config/selectorEnMaquina.js +45 -0
- package/dist/agent/config/selectorEnMaquina.js.map +1 -0
- package/dist/agent/{settingsEnDisco.js → config/settingsEnDisco.js} +37 -2
- package/dist/agent/config/settingsEnDisco.js.map +1 -0
- package/dist/agent/{versionEnDisco.js → config/versionEnDisco.js} +8 -4
- package/dist/agent/config/versionEnDisco.js.map +1 -0
- package/dist/agent/dispositivos/arranqueDeEmulador.js +146 -0
- package/dist/agent/dispositivos/arranqueDeEmulador.js.map +1 -0
- package/dist/agent/{dispositivosEnMaquina.js → dispositivos/dispositivosEnMaquina.js} +93 -6
- package/dist/agent/dispositivos/dispositivosEnMaquina.js.map +1 -0
- package/dist/agent/dispositivos/hotswap.js.map +1 -0
- package/dist/agent/dispositivos/instalacionEnMaquina.js.map +1 -0
- package/dist/agent/dispositivos/juezVisual.js +152 -0
- package/dist/agent/dispositivos/juezVisual.js.map +1 -0
- package/dist/agent/{lanzamientoEnMaquina.js → dispositivos/lanzamientoEnMaquina.js} +1 -1
- package/dist/agent/dispositivos/lanzamientoEnMaquina.js.map +1 -0
- package/dist/agent/{paqueteDelProyecto.js → dispositivos/paqueteDelProyecto.js} +5 -5
- package/dist/agent/dispositivos/paqueteDelProyecto.js.map +1 -0
- package/dist/agent/dispositivos/procesosEnMaquina.js.map +1 -0
- package/dist/agent/dispositivos/sensorDeArranque.js +154 -0
- package/dist/agent/dispositivos/sensorDeArranque.js.map +1 -0
- package/dist/agent/exportarPdf.js +140 -0
- package/dist/agent/exportarPdf.js.map +1 -0
- package/dist/agent/{arbolDeProyecto.js → grafo/arbolDeProyecto.js} +2 -2
- package/dist/agent/grafo/arbolDeProyecto.js.map +1 -0
- package/dist/agent/{artefactosEnDisco.js → grafo/artefactosEnDisco.js} +2 -2
- package/dist/agent/grafo/artefactosEnDisco.js.map +1 -0
- package/dist/agent/{busquedaRegex.js → grafo/busquedaRegex.js} +41 -1
- package/dist/agent/grafo/busquedaRegex.js.map +1 -0
- package/dist/agent/grafo/criticaVisual.js +115 -0
- package/dist/agent/grafo/criticaVisual.js.map +1 -0
- package/dist/agent/grafo/excluirTools.js +82 -0
- package/dist/agent/grafo/excluirTools.js.map +1 -0
- package/dist/agent/{memoriaDeProyecto.js → grafo/memoriaDeProyecto.js} +1 -1
- package/dist/agent/grafo/memoriaDeProyecto.js.map +1 -0
- package/dist/agent/grafo/navegacionXone.js +231 -0
- package/dist/agent/grafo/navegacionXone.js.map +1 -0
- package/dist/agent/{perfiles.js → grafo/perfiles.js} +96 -10
- package/dist/agent/grafo/perfiles.js.map +1 -0
- package/dist/agent/{proyecto.js → grafo/proyecto.js} +274 -24
- package/dist/agent/grafo/proyecto.js.map +1 -0
- package/dist/agent/grafo/skills.js +425 -0
- package/dist/agent/grafo/skills.js.map +1 -0
- package/dist/agent/grafo/xoneAgent.js +566 -0
- package/dist/agent/grafo/xoneAgent.js.map +1 -0
- package/dist/agent/navegacion/estilosEnDisco.js +110 -0
- package/dist/agent/navegacion/estilosEnDisco.js.map +1 -0
- package/dist/agent/navegacion/hechosEnDisco.js +26 -0
- package/dist/agent/navegacion/hechosEnDisco.js.map +1 -0
- package/dist/agent/navegacion/indiceEnDisco.js +36 -0
- package/dist/agent/navegacion/indiceEnDisco.js.map +1 -0
- package/dist/agent/navegacion/modeloDeProyecto.js +228 -0
- package/dist/agent/navegacion/modeloDeProyecto.js.map +1 -0
- package/dist/agent/raizDelPaquete.js +56 -0
- package/dist/agent/raizDelPaquete.js.map +1 -0
- package/dist/agent/{checkpointer.js → sesiones/checkpointer.js} +1 -1
- package/dist/agent/sesiones/checkpointer.js.map +1 -0
- package/dist/agent/sesiones/git.js.map +1 -0
- package/dist/agent/{gitSync.js → sesiones/gitSync.js} +3 -3
- package/dist/agent/sesiones/gitSync.js.map +1 -0
- package/dist/agent/{sesionGit.js → sesiones/sesionGit.js} +2 -2
- package/dist/agent/sesiones/sesionGit.js.map +1 -0
- package/dist/agent/subagentes/agentesEnDisco.js +818 -0
- package/dist/agent/subagentes/agentesEnDisco.js.map +1 -0
- package/dist/agent/subagentes/consumoExterno.js.map +1 -0
- package/dist/agent/subagentes/escrituraDeCodex.js.map +1 -0
- package/dist/agent/{escrituraDeOpencode.js → subagentes/escrituraDeOpencode.js} +1 -1
- package/dist/agent/subagentes/escrituraDeOpencode.js.map +1 -0
- package/dist/agent/{escrituraExterna.js → subagentes/escrituraExterna.js} +59 -6
- package/dist/agent/subagentes/escrituraExterna.js.map +1 -0
- package/dist/agent/subagentes/pluginDeSkills.js +99 -0
- package/dist/agent/subagentes/pluginDeSkills.js.map +1 -0
- package/dist/agent/subagentes/subagenteCodex.js.map +1 -0
- package/dist/agent/{subagenteExterno.js → subagentes/subagenteExterno.js} +48 -0
- package/dist/agent/subagentes/subagenteExterno.js.map +1 -0
- package/dist/agent/{subagenteOpencode.js → subagentes/subagenteOpencode.js} +53 -1
- package/dist/agent/subagentes/subagenteOpencode.js.map +1 -0
- package/dist/agent/{aumentador.js → tareas/aumentador.js} +2 -2
- package/dist/agent/tareas/aumentador.js.map +1 -0
- package/dist/agent/{juezDeTarea.js → tareas/juezDeTarea.js} +6 -6
- package/dist/agent/tareas/juezDeTarea.js.map +1 -0
- package/dist/agent/{tareasEnDisco.js → tareas/tareasEnDisco.js} +53 -4
- package/dist/agent/tareas/tareasEnDisco.js.map +1 -0
- package/dist/agent/{diagnosticoDeTools.js → turno/diagnosticoDeTools.js} +5 -1
- package/dist/agent/turno/diagnosticoDeTools.js.map +1 -0
- package/dist/agent/{guionizado.js → turno/guionizado.js} +1 -1
- package/dist/agent/turno/guionizado.js.map +1 -0
- package/dist/agent/turno/informeDeTraza.js +245 -0
- package/dist/agent/turno/informeDeTraza.js.map +1 -0
- package/dist/agent/turno/inspectorDePrompt.js +205 -0
- package/dist/agent/turno/inspectorDePrompt.js.map +1 -0
- package/dist/agent/{instantanea.js → turno/instantanea.js} +7 -2
- package/dist/agent/turno/instantanea.js.map +1 -0
- package/dist/agent/{interrupts.js → turno/interrupts.js} +2 -2
- package/dist/agent/turno/interrupts.js.map +1 -0
- package/dist/agent/turno/mensajes.js.map +1 -0
- package/dist/agent/turno/normalizar.js.map +1 -0
- package/dist/agent/{puente.js → turno/puente.js} +71 -4
- package/dist/agent/turno/puente.js.map +1 -0
- package/dist/agent/turno/resumenDeContexto.js +260 -0
- package/dist/agent/turno/resumenDeContexto.js.map +1 -0
- package/dist/agent/{resumenDeTool.js → turno/resumenDeTool.js} +33 -0
- package/dist/agent/turno/resumenDeTool.js.map +1 -0
- package/dist/agent/turno/rubrica.js +91 -0
- package/dist/agent/turno/rubrica.js.map +1 -0
- package/dist/agent/turno/textoDeTool.js.map +1 -0
- package/dist/agent/{turnoReal.js → turno/turnoReal.js} +210 -25
- package/dist/agent/turno/turnoReal.js.map +1 -0
- package/dist/agent/turno/verificador.js.map +1 -0
- package/dist/cli/config.js +1 -1
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/consola.js +72 -9
- package/dist/cli/consola.js.map +1 -1
- package/dist/cli/describe.js +2 -2
- package/dist/cli/describe.js.map +1 -1
- package/dist/cli/doctor.js +1 -1
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/fuentesDeDisco.js +29 -0
- package/dist/cli/fuentesDeDisco.js.map +1 -0
- package/dist/cli/main.js +87 -31
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/run.js +40 -10
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/traza.js +48 -0
- package/dist/cli/traza.js.map +1 -0
- package/dist/cli/tui/correrTui.js +4 -4
- package/dist/cli/tui/correrTui.js.map +1 -1
- package/dist/cli/verify.js +1 -1
- package/dist/cli/verify.js.map +1 -1
- package/dist/core/actos.js +1 -1
- package/dist/core/adjuntos.js +2 -2
- package/dist/core/agentes.js +247 -7
- package/dist/core/agentes.js.map +1 -1
- package/dist/core/artefactos.js +4 -4
- package/dist/core/config.js +1 -1
- package/dist/core/contextos.js +12 -1
- package/dist/core/contextos.js.map +1 -1
- package/dist/core/descargas.js +1 -1
- package/dist/core/dispositivos.js +53 -3
- package/dist/core/dispositivos.js.map +1 -1
- package/dist/core/esfuerzo.js +141 -0
- package/dist/core/esfuerzo.js.map +1 -0
- package/dist/core/esqueleto.js +1 -1
- package/dist/core/estilos.js +78 -0
- package/dist/core/estilos.js.map +1 -0
- package/dist/core/exportacion.js +140 -0
- package/dist/core/exportacion.js.map +1 -0
- package/dist/core/hechosDelProyecto.js +87 -0
- package/dist/core/hechosDelProyecto.js.map +1 -0
- package/dist/core/logDeDispositivo.js +143 -0
- package/dist/core/logDeDispositivo.js.map +1 -0
- package/dist/core/modelos.js +48 -3
- package/dist/core/modelos.js.map +1 -1
- package/dist/core/mudanzaDeWorkspace.js +93 -0
- package/dist/core/mudanzaDeWorkspace.js.map +1 -0
- package/dist/core/navegacion.js +134 -0
- package/dist/core/navegacion.js.map +1 -0
- package/dist/core/notify.js +5 -0
- package/dist/core/notify.js.map +1 -1
- package/dist/core/planDeSubida.js +1 -1
- package/dist/core/planes.js +70 -0
- package/dist/core/planes.js.map +1 -0
- package/dist/core/ports.js +4 -0
- package/dist/core/ports.js.map +1 -1
- package/dist/core/rubrica.js +90 -0
- package/dist/core/rubrica.js.map +1 -0
- package/dist/core/selectorDeCarpeta.js +87 -0
- package/dist/core/selectorDeCarpeta.js.map +1 -0
- package/dist/core/settings.js +56 -7
- package/dist/core/settings.js.map +1 -1
- package/dist/core/shellDeAgente.js +144 -0
- package/dist/core/shellDeAgente.js.map +1 -0
- package/dist/core/skills.js +158 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/topeAgotado.js +69 -0
- package/dist/core/topeAgotado.js.map +1 -0
- package/dist/core/zipDeSkill.js +107 -0
- package/dist/core/zipDeSkill.js.map +1 -0
- package/dist/web/servidor/arranque.js +853 -54
- package/dist/web/servidor/arranque.js.map +1 -1
- package/dist/web/servidor/corredorDeTareas.js +3 -3
- package/dist/web/servidor/corredorDeTareas.js.map +1 -1
- package/dist/web/servidor/sesiones.js +34 -6
- package/dist/web/servidor/sesiones.js.map +1 -1
- package/dist/web/servidor/transporte.js +1 -1
- package/dist/web/servidor/transporte.js.map +1 -1
- package/dist/web/servidor/vestibulo.js +62 -13
- package/dist/web/servidor/vestibulo.js.map +1 -1
- package/package.json +7 -4
- package/skills/archify/SKILL.md +25 -2
- package/skills/artifacts-builder/SKILL.md +23 -0
- package/skills/xone-hotswap/SKILL.md +96 -0
- package/skills/xone-hotswap/scripts/xone-arrancar-android +202 -0
- package/skills/xone-hotswap/scripts/xone-arrancar-ios +85 -0
- package/skills/xone-hotswap/scripts/xone-captura-android +93 -0
- package/skills/xone-hotswap/scripts/xone-desplegar-android +439 -0
- package/skills/xone-hotswap/scripts/xone-hotswap +201 -0
- package/skills/xone-hotswap/scripts/xone-log-android +102 -0
- package/skills/xone-hotswap/scripts/xone-reiniciar-android +132 -0
- package/skills/xone-plan-builder/SKILL.md +22 -4
- package/skills/xone-spec-builder/SKILL.md +37 -7
- package/apps/web/dist/assets/index-CFYAoHdw.js +0 -477
- package/dist/agent/agentesEnDisco.js +0 -539
- package/dist/agent/agentesEnDisco.js.map +0 -1
- package/dist/agent/arbolDeProyecto.js.map +0 -1
- package/dist/agent/artefactosEnDisco.js.map +0 -1
- package/dist/agent/aumentador.js.map +0 -1
- package/dist/agent/authEnDisco.js.map +0 -1
- package/dist/agent/busquedaRegex.js.map +0 -1
- package/dist/agent/catalogoModelos.js.map +0 -1
- package/dist/agent/checkpointer.js.map +0 -1
- package/dist/agent/cloudstudioClient.js.map +0 -1
- package/dist/agent/cloudstudioMcp.js.map +0 -1
- package/dist/agent/configEnDisco.js.map +0 -1
- package/dist/agent/consumoExterno.js.map +0 -1
- package/dist/agent/crearProyecto.js.map +0 -1
- package/dist/agent/descarga.js.map +0 -1
- package/dist/agent/diagnosticoDeTools.js.map +0 -1
- package/dist/agent/dispositivosEnMaquina.js.map +0 -1
- package/dist/agent/entorno.js.map +0 -1
- package/dist/agent/escrituraDeCodex.js.map +0 -1
- package/dist/agent/escrituraDeOpencode.js.map +0 -1
- package/dist/agent/escrituraExterna.js.map +0 -1
- package/dist/agent/gemini.js.map +0 -1
- package/dist/agent/git.js.map +0 -1
- package/dist/agent/gitSync.js.map +0 -1
- package/dist/agent/guionizado.js.map +0 -1
- package/dist/agent/hotswap.js.map +0 -1
- package/dist/agent/instalacionEnMaquina.js.map +0 -1
- package/dist/agent/instantanea.js.map +0 -1
- package/dist/agent/interrupts.js.map +0 -1
- package/dist/agent/juezDeTarea.js.map +0 -1
- package/dist/agent/lanzamientoEnMaquina.js.map +0 -1
- package/dist/agent/manifiesto.js.map +0 -1
- package/dist/agent/memoriaDeProyecto.js.map +0 -1
- package/dist/agent/mensajes.js.map +0 -1
- package/dist/agent/modelos.js +0 -130
- package/dist/agent/modelos.js.map +0 -1
- package/dist/agent/modelosDeMotor.js.map +0 -1
- package/dist/agent/normalizar.js.map +0 -1
- package/dist/agent/paqueteDelProyecto.js.map +0 -1
- package/dist/agent/perfiles.js.map +0 -1
- package/dist/agent/persona.js.map +0 -1
- package/dist/agent/procesosEnMaquina.js.map +0 -1
- package/dist/agent/proyecto.js.map +0 -1
- package/dist/agent/puente.js.map +0 -1
- package/dist/agent/resumenDeContexto.js +0 -30
- package/dist/agent/resumenDeContexto.js.map +0 -1
- package/dist/agent/resumenDeTool.js.map +0 -1
- package/dist/agent/sesionGit.js.map +0 -1
- package/dist/agent/settingsEnDisco.js.map +0 -1
- package/dist/agent/skills.js +0 -65
- package/dist/agent/skills.js.map +0 -1
- package/dist/agent/subagenteCodex.js.map +0 -1
- package/dist/agent/subagenteExterno.js.map +0 -1
- package/dist/agent/subagenteOpencode.js.map +0 -1
- package/dist/agent/subida.js.map +0 -1
- package/dist/agent/tareasEnDisco.js.map +0 -1
- package/dist/agent/textoDeTool.js.map +0 -1
- package/dist/agent/turnoReal.js.map +0 -1
- package/dist/agent/verificador.js.map +0 -1
- package/dist/agent/versionEnDisco.js.map +0 -1
- package/dist/agent/xoneAgent.js +0 -347
- package/dist/agent/xoneAgent.js.map +0 -1
- package/dist/agent/zip.js.map +0 -1
- /package/dist/agent/{manifiesto.js → cloudstudio/manifiesto.js} +0 -0
- /package/dist/agent/{entorno.js → config/entorno.js} +0 -0
- /package/dist/agent/{gemini.js → config/gemini.js} +0 -0
- /package/dist/agent/{hotswap.js → dispositivos/hotswap.js} +0 -0
- /package/dist/agent/{instalacionEnMaquina.js → dispositivos/instalacionEnMaquina.js} +0 -0
- /package/dist/agent/{procesosEnMaquina.js → dispositivos/procesosEnMaquina.js} +0 -0
- /package/dist/agent/{git.js → sesiones/git.js} +0 -0
- /package/dist/agent/{consumoExterno.js → subagentes/consumoExterno.js} +0 -0
- /package/dist/agent/{escrituraDeCodex.js → subagentes/escrituraDeCodex.js} +0 -0
- /package/dist/agent/{subagenteCodex.js → subagentes/subagenteCodex.js} +0 -0
- /package/dist/agent/{mensajes.js → turno/mensajes.js} +0 -0
- /package/dist/agent/{normalizar.js → turno/normalizar.js} +0 -0
- /package/dist/agent/{textoDeTool.js → turno/textoDeTool.js} +0 -0
- /package/dist/agent/{verificador.js → turno/verificador.js} +0 -0
|
@@ -3,8 +3,8 @@ import { join, sep } from "node:path";
|
|
|
3
3
|
import { randomUUID } from "node:crypto";
|
|
4
4
|
import { HumanMessage, ToolMessage } from "@langchain/core/messages";
|
|
5
5
|
import { Command, MemorySaver } from "@langchain/langgraph";
|
|
6
|
-
import { collectPending, MAX_APPROVAL_ROUNDS } from "
|
|
7
|
-
import { esRutaDeArtefacto } from "
|
|
6
|
+
import { collectPending, MAX_APPROVAL_ROUNDS } from "../../vendor/hitl.js";
|
|
7
|
+
import { esRutaDeArtefacto } from "../../core/artefactos.js";
|
|
8
8
|
/**
|
|
9
9
|
* Cuántas veces se le devuelven los hallazgos al agente para que los corrija. Dos: tres
|
|
10
10
|
* verificaciones en total. Un modelo que no arregla algo en dos intentos con el error
|
|
@@ -13,21 +13,69 @@ import { esRutaDeArtefacto } from "../core/artefactos.js";
|
|
|
13
13
|
* veces) corta antes de llegar aquí cuando el modelo repite el mismo cambio.
|
|
14
14
|
*/
|
|
15
15
|
export const TOPE_REPARACIONES = 2;
|
|
16
|
+
/**
|
|
17
|
+
* ¿Toca criticar la pantalla en esta pasada?
|
|
18
|
+
*
|
|
19
|
+
* PURA y exportada a propósito: la condición vivía dentro de `conVerificacion`, que es un
|
|
20
|
+
* cierre que TODOS los tests de este fichero doblan, y ahí una regla de producción se queda
|
|
21
|
+
* escrita y no probada — el patrón de fallo que este repo ha pagado nueve veces.
|
|
22
|
+
*
|
|
23
|
+
* Cuatro condiciones, y cada una dice algo distinto: sin crítico esta ejecución no puede
|
|
24
|
+
* preguntar (y eso NO es «la pantalla está bien»); sin capturas no hay nada que mirar; una vez
|
|
25
|
+
* por turno porque sus observaciones no son una huella y no hay forma de saber si una segunda
|
|
26
|
+
* vuelta avanza; y nunca por encima del tope de reparaciones, que es de todo el turno.
|
|
27
|
+
*/
|
|
28
|
+
export function tocaCriticarPantalla(estado) {
|
|
29
|
+
return (estado.hayCritico &&
|
|
30
|
+
estado.capturas > 0 &&
|
|
31
|
+
!estado.yaDisparo &&
|
|
32
|
+
estado.intento < TOPE_REPARACIONES);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* El texto que se le devuelve al agente para que repare, de las DOS fuentes.
|
|
36
|
+
*
|
|
37
|
+
* Fuera del cierre por lo mismo que `tocaCriticarPantalla`. Y no se le dice CÓMO arreglarlo
|
|
38
|
+
* —eso lo sabe él o no lo sabe—, solo lo que se ha medido y lo único que importa aquí: que no
|
|
39
|
+
* invente nada para que el error desaparezca, que es justo lo que XOne no le reprocha.
|
|
40
|
+
*/
|
|
41
|
+
export function textoDeReparacion(hallazgos, observaciones) {
|
|
42
|
+
const lineas = [];
|
|
43
|
+
if (hallazgos.length > 0) {
|
|
44
|
+
const errores = hallazgos.filter((h) => h.severidad === "error").length;
|
|
45
|
+
lineas.push(`El simulador de XOne ha revisado lo que acabas de escribir y ha encontrado ${errores} error(es):`, ...hallazgos.map((h) => `- ${h.severidad === "error" ? "ERROR" : "aviso"} ${h.code}${h.fichero === undefined ? "" : ` en ${h.fichero}${h.linea === undefined ? "" : `:${h.linea}`}`}: ${h.mensaje}`));
|
|
46
|
+
}
|
|
47
|
+
if (observaciones.length > 0) {
|
|
48
|
+
if (lineas.length > 0)
|
|
49
|
+
lineas.push("");
|
|
50
|
+
/**
|
|
51
|
+
* **El aviso sobre la redacción está MEDIDO y no es cortesía.** Seis vueltas del crítico
|
|
52
|
+
* describieron un texto CORTADO como «girado 180°». A dónde apunta sí lo acertó las seis.
|
|
53
|
+
* Sin esta línea, el desarrollador busca una rotación que no existe y gasta la única
|
|
54
|
+
* vuelta que hay.
|
|
55
|
+
*/
|
|
56
|
+
lineas.push("Y mirando una captura de la pantalla en el aparato se ve esto (la REDACCIÓN no es de", "fiar: describe mal la causa. Fíate de QUÉ control señala, no de su explicación, y", "míralo tú en el código):", ...observaciones.map((o) => `- ${o}`));
|
|
57
|
+
}
|
|
58
|
+
lineas.push("", "Corrige lo que puedas. No inventes atributos, funciones ni propiedades para que", "desaparezcan: XOne ignora lo desconocido en silencio y el simulador lo detecta.", "Si algo no sabes cómo corregirlo, dilo en vez de intentar otra cosa.");
|
|
59
|
+
return lineas.join("\n");
|
|
60
|
+
}
|
|
16
61
|
import { aPendiente, ficheroDe, cambioDe, buildResume } from "./interrupts.js";
|
|
17
|
-
import { cargarAgentes } from "
|
|
18
|
-
import { crearSubagenteExterno } from "
|
|
19
|
-
import { opcionesDeSubagenteExterno } from "
|
|
20
|
-
import { ColaDeEventos, entrelazar } from "
|
|
21
|
-
import { sumarConsumo, SIN_CONSUMO } from "
|
|
22
|
-
import { rutaRealDeVirtual } from "
|
|
23
|
-
import { correrTurno } from "
|
|
62
|
+
import { cargarAgentes } from "../subagentes/agentesEnDisco.js";
|
|
63
|
+
import { crearSubagenteExterno } from "../subagentes/subagenteExterno.js";
|
|
64
|
+
import { opcionesDeSubagenteExterno } from "../subagentes/escrituraExterna.js";
|
|
65
|
+
import { ColaDeEventos, entrelazar } from "../../core/entrelazar.js";
|
|
66
|
+
import { sumarConsumo, SIN_CONSUMO } from "../subagentes/consumoExterno.js";
|
|
67
|
+
import { rutaRealDeVirtual } from "../../core/rutaVirtual.js";
|
|
68
|
+
import { correrTurno } from "../../core/turno.js";
|
|
24
69
|
import { relative, resolve as resolverRuta } from "node:path";
|
|
25
70
|
import { tomarInstantanea } from "./instantanea.js";
|
|
26
|
-
import { construirAgente } from "
|
|
27
|
-
import { asegurarMemoriaDeProyecto } from "
|
|
71
|
+
import { construirAgente } from "../grafo/xoneAgent.js";
|
|
72
|
+
import { asegurarMemoriaDeProyecto } from "../grafo/memoriaDeProyecto.js";
|
|
28
73
|
import { aEventos } from "./puente.js";
|
|
29
|
-
import { createTokenTracker } from "
|
|
74
|
+
import { createTokenTracker } from "../../vendor/tokenTracking.js";
|
|
30
75
|
import { crearDiagnosticoDeTools } from "./diagnosticoDeTools.js";
|
|
76
|
+
import { indiceEnDisco } from "../navegacion/indiceEnDisco.js";
|
|
77
|
+
import { hechosDelProyectoDe } from "../navegacion/hechosEnDisco.js";
|
|
78
|
+
import { conHechosDelProyecto } from "../../core/hechosDelProyecto.js";
|
|
31
79
|
/**
|
|
32
80
|
* Recorre la raíz y devuelve las rutas en el ESPACIO VIRTUAL del backend.
|
|
33
81
|
*
|
|
@@ -90,7 +138,7 @@ const NODO_DE_TOOLS = "tools";
|
|
|
90
138
|
/**
|
|
91
139
|
* Cierra las aprobaciones que se quedaron sin contestar cuando murió el proceso anterior.
|
|
92
140
|
*
|
|
93
|
-
* Solo existe desde que el hilo se guarda en disco (`agent/checkpointer.ts`), y arregla un
|
|
141
|
+
* Solo existe desde que el hilo se guarda en disco (`agent/sesiones/checkpointer.ts`), y arregla un
|
|
94
142
|
* fallo MEDIDO —y medido dos veces, porque la primera medida estaba mal—. La forma del
|
|
95
143
|
* grafo importa: un grafo de un solo nodo donde `START` va al nodo interrumpido reejecuta
|
|
96
144
|
* ese nodo con el mensaje nuevo y vuelve a preguntar, que es inofensivo. El grafo del
|
|
@@ -215,10 +263,34 @@ export async function abrirSesionReal(opciones) {
|
|
|
215
263
|
* diga una vez y no en cada pasada de una reparación.
|
|
216
264
|
*/
|
|
217
265
|
const artefactosDeLaPasada = [];
|
|
266
|
+
/**
|
|
267
|
+
* Las CAPTURAS que este turno dejó, sin vaciarse.
|
|
268
|
+
*
|
|
269
|
+
* `artefactosDeLaPasada` se drena al anunciarlas, así que al llegar al final del turno está
|
|
270
|
+
* vacío. Esto es lo que mira el crítico visual: **no navega ni conduce nada**, mira lo que el
|
|
271
|
+
* turno ya fotografió. Ésa es la única forma de que la crítica sea un paso del harness y no
|
|
272
|
+
* un recado que el orquestador puede olvidar — llegar a una pantalla necesita un agente
|
|
273
|
+
* (medido: el control de la Calculadora vive en un cajón cerrado), pero MIRAR lo ya
|
|
274
|
+
* capturado no.
|
|
275
|
+
*/
|
|
276
|
+
const capturasDelTurno = [];
|
|
218
277
|
const carpetaDeArtefactos = opciones.artefactos ?? join(raiz, ".xonecode", "artefactos");
|
|
278
|
+
/**
|
|
279
|
+
* El índice de navegación de esta sesión, y **es UNO solo**.
|
|
280
|
+
*
|
|
281
|
+
* Lo usan dos: la tool `xone_navegacion` que se le da al agente, y la foto de hechos que se
|
|
282
|
+
* pega al turno. Con dos cargadores serían dos fuentes para la misma pregunta, que es como
|
|
283
|
+
* el harness acaba diciendo una cosa en el prompt y otra en la tool sobre el mismo proyecto.
|
|
284
|
+
* Por eso se crea aquí y se le PASA a `construirAgente` en vez de dejar que se haga el suyo.
|
|
285
|
+
*
|
|
286
|
+
* No cachea nada: `indiceEnDisco` reconstruye en cada llamada a propósito, que es lo que
|
|
287
|
+
* deja que la foto del turno 3 no sea la del turno 1.
|
|
288
|
+
*/
|
|
289
|
+
const cargarIndice = opciones.navegacion ?? indiceEnDisco(raiz);
|
|
219
290
|
const construir = async () => construirAgente({
|
|
220
291
|
raiz,
|
|
221
292
|
ficheros: ficherosDelProyecto(raiz),
|
|
293
|
+
navegacion: cargarIndice,
|
|
222
294
|
// Se releen en CADA construcción del agente y no una vez al abrir la sesión: el
|
|
223
295
|
// usuario puede tocar un `.md` —o guardarlo desde Ajustes— con la consola abierta, y
|
|
224
296
|
// una lista congelada al arrancar le haría creer que su cambio no se aplicó.
|
|
@@ -261,7 +333,11 @@ export async function abrirSesionReal(opciones) {
|
|
|
261
333
|
diagnostico,
|
|
262
334
|
artefactos: {
|
|
263
335
|
carpeta: carpetaDeArtefactos,
|
|
264
|
-
alEscribir: (a) =>
|
|
336
|
+
alEscribir: (a) => {
|
|
337
|
+
artefactosDeLaPasada.push(a);
|
|
338
|
+
if (a.mime !== undefined && a.mime.startsWith("image/"))
|
|
339
|
+
capturasDelTurno.push(a);
|
|
340
|
+
},
|
|
265
341
|
},
|
|
266
342
|
// Ausente es «no hay», no una carpeta vacía: ver `OpcionesDeSesion.adjuntos`.
|
|
267
343
|
...(opciones.adjuntos === undefined ? {} : { adjuntos: opciones.adjuntos }),
|
|
@@ -352,7 +428,23 @@ export async function abrirSesionReal(opciones) {
|
|
|
352
428
|
// reanudación.
|
|
353
429
|
const t0 = Date.now();
|
|
354
430
|
const instantanea = await tomarInstantanea(raiz, entorno.git);
|
|
355
|
-
|
|
431
|
+
/**
|
|
432
|
+
* Los hechos baratos del proyecto, DELANTE, en vez de esperar a que alguien los busque.
|
|
433
|
+
*
|
|
434
|
+
* Medido el 19-09-2026 sobre un proyecto real: cada especialista repetía las mismas
|
|
435
|
+
* búsquedas (`grep` ×42 en un turno, `xnTituloHeaderC` ×7) y el orquestador se llevaba el
|
|
436
|
+
* 38-50 % del gasto averiguando. El prompt ya pide lo contrario y no basta.
|
|
437
|
+
*
|
|
438
|
+
* Va en la PETICIÓN y no en el prompt de sistema por una razón medida: el prompt se compone
|
|
439
|
+
* al construir el agente —dos veces por sesión— y esta foto envejecería dentro de la sesión
|
|
440
|
+
* que la usa, que es exactamente por lo que `xone_navegacion` no cachea. Aquí se rehace en
|
|
441
|
+
* cada turno, que cuesta decenas de milisegundos.
|
|
442
|
+
*
|
|
443
|
+
* Y solo en la petición ORIGINAL: el mensaje de una reparación ya lleva los hallazgos del
|
|
444
|
+
* verificador, y repetir ahí el inventario sería pagarlo dos veces por el mismo turno.
|
|
445
|
+
*/
|
|
446
|
+
const payloadInicial = conHechosDelProyecto(peticion, await hechosDelProyectoDe(cargarIndice, ficherosDelProyecto(raiz)));
|
|
447
|
+
let payload = { messages: [new HumanMessage(payloadInicial)] };
|
|
356
448
|
let bitacora = null;
|
|
357
449
|
let ronda = 0;
|
|
358
450
|
// El bucle de aprobación, tal como está en `correrReal` (`cli/run.ts`): una pausa
|
|
@@ -404,6 +496,18 @@ export async function abrirSesionReal(opciones) {
|
|
|
404
496
|
let ultimosHallazgos = [];
|
|
405
497
|
/** La huella del veredicto anterior, para detectar que reparar no avanza. */
|
|
406
498
|
let huellaPrevia;
|
|
499
|
+
/**
|
|
500
|
+
* Lo que el crítico visual vio, y si ya disparó.
|
|
501
|
+
*
|
|
502
|
+
* **Una vez por turno, y es deliberado.** Sus observaciones NO son una huella —medido:
|
|
503
|
+
* seis vueltas sobre la MISMA captura dieron 4, 2, 4, 5, 3 y 5—, así que la guarda de «no
|
|
504
|
+
* progreso» no puede decidir si una segunda vuelta avanza. Sin forma de medirlo, el tope
|
|
505
|
+
* es uno: se le devuelve al agente lo que se ve mal, y lo que pase después lo mira una
|
|
506
|
+
* persona. Y por eso tampoco entran en `huellaPrevia`: la ensuciarían con texto que cambia
|
|
507
|
+
* solo, y entonces el bucle creería que siempre avanza.
|
|
508
|
+
*/
|
|
509
|
+
let visualYaDisparo = false;
|
|
510
|
+
let observacionesVisuales = [];
|
|
407
511
|
/**
|
|
408
512
|
* El lazo de verificación, cosido al FINAL del flujo de eventos y no después del turno.
|
|
409
513
|
*
|
|
@@ -501,6 +605,70 @@ export async function abrirSesionReal(opciones) {
|
|
|
501
605
|
hallazgos,
|
|
502
606
|
...(preexistentes > 0 ? { preexistentes } : {}),
|
|
503
607
|
};
|
|
608
|
+
/**
|
|
609
|
+
* **El crítico visual, enganchado AQUÍ y no en el prompt del orquestador.**
|
|
610
|
+
*
|
|
611
|
+
* Ésta es la diferencia entre que la crítica ocurra y que ocurra cuando el modelo se
|
|
612
|
+
* acuerde. Es el mismo punto y el mismo mecanismo que el resto del lazo —y el mismo que
|
|
613
|
+
* el `RubricMiddleware` de deepagents: enganchar donde el agente iba a terminar y
|
|
614
|
+
* devolver el feedback como mensaje de USUARIO en el mismo hilo—.
|
|
615
|
+
*
|
|
616
|
+
* **No conduce nada**: mira las capturas que este turno ya dejó. Navegar hasta una
|
|
617
|
+
* pantalla necesita un agente (medido: el control que lleva a la Calculadora vive en un
|
|
618
|
+
* cajón cerrado y hay que abrirlo mirando el árbol), pero MIRAR lo ya fotografiado no.
|
|
619
|
+
* Sin capturas no opina, que es honesto: no hay nada que ver.
|
|
620
|
+
*
|
|
621
|
+
* Y que no se pueda preguntar NO es un rojo: se dice como aviso y el turno sigue, igual
|
|
622
|
+
* que con el binario del simulador.
|
|
623
|
+
*
|
|
624
|
+
* **Límite declarado**: esto cuelga del mismo bloque que el verificador, así que solo
|
|
625
|
+
* corre en un turno que ESCRIBIÓ ficheros del proyecto. Un turno de pura inspección
|
|
626
|
+
* —«ve a esa pantalla y dime qué ves»— no pasa por aquí, y no debe: la pregunta que
|
|
627
|
+
* contesta este enganche es «¿quedó bien lo que acabas de escribir?». Para mirar sin
|
|
628
|
+
* escribir está la tool `xone_critica_visual`, que el orquestador invoca cuando quiere.
|
|
629
|
+
*/
|
|
630
|
+
if (tocaCriticarPantalla({
|
|
631
|
+
hayCritico: opciones.criticaVisual !== undefined,
|
|
632
|
+
capturas: capturasDelTurno.length,
|
|
633
|
+
yaDisparo: visualYaDisparo,
|
|
634
|
+
intento,
|
|
635
|
+
})) {
|
|
636
|
+
visualYaDisparo = true;
|
|
637
|
+
// La ÚLTIMA: es el estado más reciente de la pantalla, y las anteriores pueden ser de
|
|
638
|
+
// antes del cambio que este turno acaba de hacer.
|
|
639
|
+
const captura = capturasDelTurno[capturasDelTurno.length - 1];
|
|
640
|
+
try {
|
|
641
|
+
const bytes = readFileSync(join(carpetaDeArtefactos, captura.nombre));
|
|
642
|
+
const visual = await opciones.criticaVisual({ base64: bytes.toString("base64"), mime: captura.mime ?? "image/png" }, captura.nombre);
|
|
643
|
+
if (visual.veredicto === "rojo" && visual.observaciones.length > 0) {
|
|
644
|
+
observacionesVisuales = visual.observaciones;
|
|
645
|
+
yield {
|
|
646
|
+
tipo: "aviso",
|
|
647
|
+
texto: `⚠ la captura de esta sesión enseña ${visual.observaciones.length} defecto(s) de pantalla`,
|
|
648
|
+
severidad: "aviso",
|
|
649
|
+
};
|
|
650
|
+
/**
|
|
651
|
+
* Si el simulador está en VERDE, nadie más va a disparar una ronda: la dispara
|
|
652
|
+
* esto. Si ya está en rojo, las observaciones se suman a la petición que va a
|
|
653
|
+
* salir igualmente, y no se gasta una vuelta extra.
|
|
654
|
+
*/
|
|
655
|
+
if (errores === 0) {
|
|
656
|
+
ultimosHallazgos = [];
|
|
657
|
+
intento += 1;
|
|
658
|
+
reparar = true;
|
|
659
|
+
cerrarRonda = false;
|
|
660
|
+
return;
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
catch (error) {
|
|
665
|
+
yield {
|
|
666
|
+
tipo: "aviso",
|
|
667
|
+
texto: `⚠ no se pudo criticar la pantalla: ${error instanceof Error ? error.name : "error"}`,
|
|
668
|
+
severidad: "aviso",
|
|
669
|
+
};
|
|
670
|
+
}
|
|
671
|
+
}
|
|
504
672
|
if (errores === 0)
|
|
505
673
|
return;
|
|
506
674
|
// Rojo. Tres salidas, y solo una de ellas es «inténtalo otra vez».
|
|
@@ -550,14 +718,7 @@ export async function abrirSesionReal(opciones) {
|
|
|
550
718
|
* lo único que importa aquí: que no se invente nada para que el error desaparezca, que
|
|
551
719
|
* es justo lo que XOne no le va a reprochar y el simulador sí.
|
|
552
720
|
*/
|
|
553
|
-
const peticionDeReparacion = () =>
|
|
554
|
-
`El simulador de XOne ha revisado lo que acabas de escribir y ha encontrado ${ultimosHallazgos.filter((h) => h.severidad === "error").length} error(es):`,
|
|
555
|
-
...ultimosHallazgos.map((h) => `- ${h.severidad === "error" ? "ERROR" : "aviso"} ${h.code}${h.fichero === undefined ? "" : ` en ${h.fichero}${h.linea === undefined ? "" : `:${h.linea}`}`}: ${h.mensaje}`),
|
|
556
|
-
"",
|
|
557
|
-
"Corrige los errores. No inventes atributos, funciones ni propiedades para que",
|
|
558
|
-
"desaparezcan: XOne ignora lo desconocido en silencio y el simulador lo detecta.",
|
|
559
|
-
"Si algún error no sabes cómo corregirlo, dilo en vez de intentar otra cosa.",
|
|
560
|
-
].join("\n");
|
|
721
|
+
const peticionDeReparacion = () => textoDeReparacion(ultimosHallazgos, observacionesVisuales);
|
|
561
722
|
// Dos bucles anidados y a propósito: el de dentro son las RONDAS de aprobación de una
|
|
562
723
|
// petición (una pausa termina la ronda, se reanuda con las decisiones); el de fuera son
|
|
563
724
|
// los INTENTOS de reparación, cada uno una petición nueva en el mismo hilo. Quién
|
|
@@ -587,7 +748,7 @@ export async function abrirSesionReal(opciones) {
|
|
|
587
748
|
bitacora = await correrTurno(conVerificacion(
|
|
588
749
|
// El flujo del grafo MÁS lo que el agente externo vaya haciendo en su propio
|
|
589
750
|
// proceso: sin esto, ni una de sus tools cruza y son minutos de pantalla quieta.
|
|
590
|
-
entrelazar(aEventos(stream, async () => (await leerPendientes()).lista, ({ nombre, detalle, parametros }) => diagnostico?.herramienta(nombre, detalle, parametros, tracker)), eventosExternos)), piel, {
|
|
751
|
+
entrelazar(aEventos(stream, async () => (await leerPendientes()).lista, ({ nombre, detalle, parametros, origen }) => diagnostico?.herramienta(nombre, detalle, parametros, tracker, origen)), eventosExternos)), piel, {
|
|
591
752
|
// El aviso solo si el turno ESCRIBIÓ y aun así no se verificó. Antes saltaba en
|
|
592
753
|
// todos los turnos, incluido «cuéntame un chiste» — y un aviso que salta cuando
|
|
593
754
|
// no ha pasado nada enseña a ignorarlo, que es lo contrario de lo que se compra
|
|
@@ -754,9 +915,33 @@ export async function abrirSesionReal(opciones) {
|
|
|
754
915
|
modelos = nuevos;
|
|
755
916
|
agente = await construir();
|
|
756
917
|
},
|
|
757
|
-
/**
|
|
918
|
+
/**
|
|
919
|
+
* Para `/nuevo`: cambia el hilo y **pone el contador a cero**. El agente no se reconstruye.
|
|
920
|
+
*
|
|
921
|
+
* Lo segundo no es un extra: **el `thread_id` ES la sesión** (`agent/sesiones/checkpointer.ts`),
|
|
922
|
+
* así que abrir un hilo nuevo es empezar una conversación nueva, y el gasto que se enseña
|
|
923
|
+
* es el de UNA sesión. Sin esto —medido en la caja del compositor por el usuario— la
|
|
924
|
+
* conversación recién abierta heredaba los tokens de la anterior: una cifra que nadie ha
|
|
925
|
+
* gastado ahí, y encima creciente, porque el tracker vive en el cierre de la sesión y esta
|
|
926
|
+
* no se recrea.
|
|
927
|
+
*
|
|
928
|
+
* El tracker se vacía EN SITIO en vez de sustituirse: quien lo tiene lo recibió al
|
|
929
|
+
* construirse (el middleware de conteo lo capturó en su cierre), así que cambiar la
|
|
930
|
+
* referencia dejaría al middleware sumando en un objeto que ya no lee nadie — el mismo
|
|
931
|
+
* fallo mudo de siempre, con el contador clavado para siempre.
|
|
932
|
+
*
|
|
933
|
+
* Y se AVISA, porque el contador solo se repinta cuando el consumo cambia: sin el aviso,
|
|
934
|
+
* la pantalla se quedaría con la cifra vieja hasta el primer turno del hilo nuevo.
|
|
935
|
+
*/
|
|
758
936
|
nuevoHilo(id) {
|
|
759
937
|
hilo = id ?? `xonecode-${randomUUID()}`;
|
|
938
|
+
tracker.input = 0;
|
|
939
|
+
tracker.output = 0;
|
|
940
|
+
tracker.cache = 0;
|
|
941
|
+
tracker.calls = 0;
|
|
942
|
+
tracker.contexto = 0;
|
|
943
|
+
consumoExterno = SIN_CONSUMO;
|
|
944
|
+
avisarDeConsumo();
|
|
760
945
|
},
|
|
761
946
|
tracker,
|
|
762
947
|
/**
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turnoReal.js","sourceRoot":"","sources":["../../../src/agent/turno/turnoReal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnG,OAAO,EAAE,IAAI,EAAE,GAAG,EAAW,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAoC,MAAM,0BAA0B,CAAC;AACvG,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAiB,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAkB,MAAM,0BAA0B,CAAC;AAE7E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAKpC;IACC,OAAO,CACL,MAAM,CAAC,UAAU;QACjB,MAAM,CAAC,QAAQ,GAAG,CAAC;QACnB,CAAC,MAAM,CAAC,SAAS;QACjB,MAAM,CAAC,OAAO,GAAG,iBAAiB,CACnC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAAsC,EACtC,aAAgC;IAEhC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;QACxE,MAAM,CAAC,IAAI,CACT,8EAA8E,OAAO,aAAa,EAClG,GAAG,SAAS,CAAC,GAAG,CACd,CAAC,CAAC,EAAE,EAAE,CACJ,KAAK,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAC9K,CACF,CAAC;IACJ,CAAC;IACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC;;;;;WAKG;QACH,MAAM,CAAC,IAAI,CACT,sFAAsF,EACtF,mFAAmF,EACnF,0BAA0B,EAC1B,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CACtC,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,IAAI,CACT,EAAE,EACF,iFAAiF,EACjF,iFAAiF,EACjF,sEAAsE,CACvE,CAAC;IACF,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AACD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAM5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIlD,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAAiC,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAqB,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAqB,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAyEvE;;;;;;GAMG;AACH,0GAA0G;AAC1G,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,mBAAmB;IACpF,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,IAAI,OAAO,KAAK,cAAc,IAAI,OAAO,KAAK,MAAM;YAAE,SAAS;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC;YACH,+EAA+E;YAC/E,iFAAiF;YACjF,4EAA4E;YAC5E,2EAA2E;YAC3E,oFAAoF;YACpF,gFAAgF;YAChF,4EAA4E;YAC5E,iFAAiF;YACjF,kFAAkF;YAClF,mFAAmF;YACnF,oFAAoF;YACpF,iFAAiF;YACjF,gDAAgD;YAChD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;gBAAE,SAAS;YACpE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACvB,2EAA2E;gBAC3E,8EAA8E;gBAC9E,gFAAgF;gBAChF,sBAAsB;gBACtB,KAAK,MAAM,CAAC,IAAI,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC;oBAAE,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3F,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sFAAsF;QACxF,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,aAAa,GAAG,OAAO,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,MAAe,EAAE,IAAY;IAC7E,MAAM,GAAG,GAAG,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;IAClD,8DAA8D;IAC9D,MAAM,KAAK,GAAG,MAAa,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAkB,MAAM,EAAE,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC;QAC/D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAClC,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAiB,CAAC,YAAY,CAAC,CAC3F,CAAC;QACF,MAAM,QAAQ,GAAG,QAAQ;aACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC;aACnC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAe,CAAC,UAAU,IAAI,EAAE,CAAC;aACjD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAElC,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAC7B,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,WAAW,CAAC;YACd,OAAO,EACL,sFAAsF;gBACtF,8EAA8E;YAChF,YAAY,EAAE,CAAC,CAAC,EAAG;YACnB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,MAAM,EAAE,OAAO;SAChB,CAAC,CACL,CAAC;QACF,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,aAAa,CAAC,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;IAC5C,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAuGrC;IACC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IAEnC,wFAAwF;IACxF,0DAA0D;IAC1D,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAEhC;;;;;OAKG;IACH,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,IAAI,mBAAmB,CAAC;IAElE;;;;OAIG;IACH;;;;;;;OAOG;IACH,MAAM,eAAe,GAAG,IAAI,aAAa,EAAE,CAAC;IAE5C;;;;;;;;OAQG;IACH,IAAI,cAAc,GAAoB,WAAW,CAAC;IAClD,MAAM,gBAAgB,GAAsB,EAAE,CAAC;IAC/C,MAAM,eAAe,GAAG,GAAS,EAAE;QACjC,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;YACjC,iFAAiF;YACjF,oFAAoF;YACpF,gCAAgC;YAChC,IAAI,CAAC;gBACH,CAAC,EAAE,CAAC;YACN,CAAC;YAAC,MAAM,CAAC;gBACP,6DAA6D;YAC/D,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,IAAI,IAAI,WAAW,EAAE,CAAC;IAChE,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IACrC,MAAM,WAAW,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IAC/B,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,YAAY,UAAU,EAAE,EAAE,CAAC;IACvD,IAAI,eAAyC,CAAC;IAC9C,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB;;;;OAIG;IACH,MAAM,oBAAoB,GAAgB,EAAE,CAAC;IAC7C;;;;;;;;;OASG;IACH,MAAM,gBAAgB,GAAgB,EAAE,CAAC;IACzC,MAAM,mBAAmB,GAAG,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IACzF;;;;;;;;;;OAUG;IACH,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;IAEhE,MAAM,SAAS,GAAG,KAAK,IAAsB,EAAE,CAC7C,eAAe,CAAC;QACd,IAAI;QACJ,QAAQ,EAAE,mBAAmB,CAAC,IAAI,CAAC;QACnC,UAAU,EAAE,YAAY;QACxB,gFAAgF;QAChF,qFAAqF;QACrF,6EAA6E;QAC7E,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,OAAO;QACpC,sFAAsF;QACtF,sFAAsF;QACtF,yDAAyD;QACzD,cAAc,EAAE,eAAe;QAC/B;;;;;;;;;;;;WAYG;QACH,gBAAgB,EAAE,qBAAqB,CACrC,0BAA0B,CAAC;YACzB,GAAG,CAAC,QAAQ,CAAC,eAAe,KAAK,SAAS;gBACxC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC;YAClD,gFAAgF;YAChF,+EAA+E;YAC/E,mDAAmD;YACnD,mBAAmB,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YACpD,OAAO,EAAE,eAAe;YACxB,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;gBAChB,cAAc,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;gBACjD,eAAe,EAAE,CAAC;YACpB,CAAC;SACF,CAAC,CACH;QACD,OAAO;QACP,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,YAAY,EAAE,YAAY;QAC1B,OAAO;QACP,WAAW;QACX,UAAU,EAAE;YACV,OAAO,EAAE,mBAAmB;YAC5B,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;gBAChB,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;oBAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpF,CAAC;SACF;QACD,8EAA8E;QAC9E,GAAG,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC5E,CAAC,CAAC;IAEL,IAAI,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IAC/B,MAAM,2BAA2B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEhD;;;;;;;OAOG;IACH;;;;;;;OAOG;IACH,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE;QAC3C,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,GAAG,GAAG,CAAC;gBAAE,OAAO,EAAE,CAAC;YAC3E,OAAO,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,KAAK,IAIzB,EAAE;QACH,8DAA8D;QAC9D,MAAM,MAAM,GAAG,cAAc,CAAC,MAAO,MAAc,CAAC,QAAQ,CAAC;YAC3D,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;SAClC,CAAC,CAAC,CAAC;QACJ,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;QAC/C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC;gBAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7B,iFAAiF;YACjF,2EAA2E;YAC3E,EAAE;YACF,sFAAsF;YACtF,gFAAgF;YAChF,qFAAqF;YACrF,sFAAsF;YACtF,qFAAqF;YACrF,wFAAwF;YACxF,qFAAqF;YACrF,sFAAsF;YACtF,+EAA+E;YAC/E,EAAE;YACF,qFAAqF;YACrF,uFAAuF;YACvF,wFAAwF;YACxF,wFAAwF;YACxF,sFAAsF;YACtF,4DAA4D;YAC5D,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YACvD,IAAI,KAAK;gBAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC5D,CAAC,CAAC;IAEF;;;;;OAKG;IACH,MAAM,KAAK,GAAG,KAAK,EACjB,QAAgB,EAChB,IAAU,EAGV,EAAE;QACF,uFAAuF;QACvF,8EAA8E;QAC9E,IAAI,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC1D,qFAAqF;QACrF,sFAAsF;QACtF,mFAAmF;QACnF,eAAe;QACf,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,WAAW,GAAgB,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QAE3E;;;;;;;;;;;;;;WAcG;QACH,MAAM,cAAc,GAAG,oBAAoB,CACzC,QAAQ,EACR,MAAM,mBAAmB,CAAC,YAAY,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,CACnE,CAAC;QACF,IAAI,OAAO,GAAY,EAAE,QAAQ,EAAE,CAAC,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;QACxE,IAAI,QAAQ,GAAG,IAAsD,CAAC;QACtE,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,kFAAkF;QAClF,mFAAmF;QACnF,oFAAoF;QACpF,uEAAuE;QACvE,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B;gEACwD;QACxD,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B;;oEAE4D;QAC5D,MAAM,qBAAqB,GAAa,EAAE,CAAC;QAE3C;;;;;;;WAOG;QACH,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,kBAAsC,CAAC;QAC3C;;;;;;;WAOG;QACH,IAAI,SAAS,GAAwB,WAAW,CAAC;QACjD,IAAI,iBAAiB,GAAuB,EAAE,CAAC;QAC/C;;;;;WAKG;QACH,IAAI,qBAAyC,CAAC;QAC9C,sFAAsF;QACtF,IAAI,WAAW,GAAG,IAAI,CAAC;QACvB,mEAAmE;QACnE,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,wDAAwD;QACxD,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,wFAAwF;QACxF,IAAI,gBAAgB,GAAuB,EAAE,CAAC;QAC9C,6EAA6E;QAC7E,IAAI,YAAgC,CAAC;QACrC;;;;;;;;;WASG;QACH,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,IAAI,qBAAqB,GAAa,EAAE,CAAC;QAEzC;;;;;;;;;;;;;;;;;WAiBG;QACH,KAAK,SAAS,CAAC,CAAC,eAAe,CAAC,OAAmC;YACjE,wFAAwF;YACxF,oFAAoF;YACpF,qDAAqD;YACrD,IAAI,OAAO,GAAG,CAAC;gBAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;YAChF,OAAO,GAAG,KAAK,CAAC;YAEhB,KAAK,CAAC,CAAC,OAAO,CAAC;YAEf,oFAAoF;YACpF,sFAAsF;YACtF,oFAAoF;YACpF,kEAAkE;YAClE,KAAK,MAAM,SAAS,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;gBAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;YAE/F,IAAI,CAAC,MAAM,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9C,oFAAoF;gBACpF,kFAAkF;gBAClF,+EAA+E;gBAC/E,4DAA4D;gBAC5D,WAAW,GAAG,CAAC,CAAC,KAAK,GAAG,YAAY,IAAI,QAAQ,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC;gBAChF,OAAO;YACT,CAAC;YACD,WAAW,GAAG,IAAI,CAAC;YAEnB,MAAM,OAAO,GAAG,CAAC,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAClD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAC3F,CAAC;YACF,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,+EAA+E;gBAC/E,kFAAkF;gBAClF,sEAAsE;gBACtE,kBAAkB,GAAG,kDAAkD,CAAC;gBACxE,OAAO;YACT,CAAC;YAED,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACpC,kBAAkB,GAAG,qCAAqC,CAAC;gBAC3D,OAAO;YACT,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;YAC5C,IAAI,OAAO,CAAC;YACZ,IAAI,CAAC;gBACH,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,mFAAmF;gBACnF,iFAAiF;gBACjF,kBAAkB,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAChE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,2BAA2B,kBAAkB,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;gBACpG,OAAO;YACT,CAAC;YAED,mFAAmF;YACnF,gFAAgF;YAChF,iFAAiF;YACjF,2EAA2E;YAC3E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxE,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CACvC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CACvE,CAAC;YACF,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YACjE,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;YAEvE,MAAM,SAAS,GAAuB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzD,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1E,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;aACrD,CAAC,CAAC,CAAC;YAEJ,6EAA6E;YAC7E,qFAAqF;YACrF,SAAS,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;YAC7C,iBAAiB,GAAG,SAAS,CAAC;YAC9B,qFAAqF;YACrF,iFAAiF;YACjF,8EAA8E;YAC9E,qBAAqB,GAAG,aAAa,CAAC;YACtC,MAAM;gBACJ,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,OAAO,KAAK,CAAC;gBACpB,OAAO;gBACP,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,OAAO;gBACjC,SAAS;gBACT,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChD,CAAC;YACF;;;;;;;;;;;;;;;;;;;;;eAqBG;YACH,IACE,oBAAoB,CAAC;gBACnB,UAAU,EAAE,QAAQ,CAAC,aAAa,KAAK,SAAS;gBAChD,QAAQ,EAAE,gBAAgB,CAAC,MAAM;gBACjC,SAAS,EAAE,eAAe;gBAC1B,OAAO;aACR,CAAC,EACF,CAAC;gBACD,eAAe,GAAG,IAAI,CAAC;gBACvB,sFAAsF;gBACtF,kDAAkD;gBAClD,MAAM,OAAO,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;gBAC/D,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;oBACtE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAc,CAC1C,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,WAAW,EAAE,EACvE,OAAO,CAAC,MAAM,CACf,CAAC;oBACF,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACnE,qBAAqB,GAAG,MAAM,CAAC,aAAa,CAAC;wBAC7C,MAAM;4BACJ,IAAI,EAAE,OAAO;4BACb,KAAK,EAAE,sCAAsC,MAAM,CAAC,aAAa,CAAC,MAAM,yBAAyB;4BACjG,SAAS,EAAE,OAAO;yBACnB,CAAC;wBACF;;;;2BAIG;wBACH,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;4BAClB,gBAAgB,GAAG,EAAE,CAAC;4BACtB,OAAO,IAAI,CAAC,CAAC;4BACb,OAAO,GAAG,IAAI,CAAC;4BACf,WAAW,GAAG,KAAK,CAAC;4BACpB,OAAO;wBACT,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM;wBACJ,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,sCAAsC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;wBAC5F,SAAS,EAAE,OAAO;qBACnB,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,IAAI,OAAO,KAAK,CAAC;gBAAE,OAAO;YAE1B,mEAAmE;YACnE,EAAE;YACF,qFAAqF;YACrF,qFAAqF;YACrF,sFAAsF;YACtF,sFAAsF;YACtF,yBAAyB;YACzB,MAAM,MAAM,GAAG,SAAS;iBACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC;iBACtC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;iBAC3D,IAAI,EAAE;iBACN,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;gBAC5B,kFAAkF;gBAClF,+DAA+D;gBAC/D,MAAM;oBACJ,IAAI,EAAE,WAAW;oBACjB,MAAM,EAAE,aAAa;oBACrB,WAAW,EAAE,cAAc,OAAO,oBAAoB,OAAO,iCAAiC;iBAC/F,CAAC;gBACF,OAAO;YACT,CAAC;YACD,IAAI,OAAO,IAAI,iBAAiB,EAAE,CAAC;gBACjC,MAAM;oBACJ,IAAI,EAAE,WAAW;oBACjB,MAAM,EAAE,mBAAmB;oBAC3B,WAAW,EAAE,QAAQ,OAAO,sBAAsB,OAAO,iDAAiD;iBAC3G,CAAC;gBACF,OAAO;YACT,CAAC;YAED,oFAAoF;YACpF,gDAAgD;YAChD,YAAY,GAAG,MAAM,CAAC;YACtB,gBAAgB,GAAG,SAAS,CAAC;YAC7B,OAAO,IAAI,CAAC,CAAC;YACb,OAAO,GAAG,IAAI,CAAC;YACf,WAAW,GAAG,KAAK,CAAC;QACtB,CAAC;QAED;;;;;;;;WAQG;QACH,MAAM,oBAAoB,GAAG,GAAW,EAAE,CACxC,iBAAiB,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;QAE7D,sFAAsF;QACtF,wFAAwF;QACxF,kFAAkF;QAClF,uEAAuE;QACvE,GAAG,CAAC;YACJ,IAAI,OAAO,GAAG,CAAC;gBAAE,OAAO,GAAG,EAAE,QAAQ,EAAE,CAAC,IAAI,YAAY,CAAC,oBAAoB,EAAE,CAAC,CAAC,EAAE,CAAC;YACpF,KAAK,GAAG,CAAC,CAAC;YACV,OAAO,IAAI,EAAE,CAAC;gBACZ,KAAK,IAAI,CAAC,CAAC;gBACX,aAAa,GAAG,KAAK,CAAC;gBACtB,kBAAkB,GAAG,SAAS,CAAC;gBAC/B,SAAS,GAAG,WAAW,CAAC;gBACxB,iBAAiB,GAAG,EAAE,CAAC;gBACvB,qBAAqB,GAAG,SAAS,CAAC;gBAClC,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;gBACrC,eAAe,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;gBAClF,IAAI,CAAC;oBACH,8DAA8D;oBAC9D,MAAM,MAAM,GAAG,MAAO,MAAc,CAAC,MAAM,CAAC,OAAO,EAAE;wBACnD,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;wBACjC,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,UAAU,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;wBACnC,SAAS,EAAE,IAAI;qBAChB,CAAC,CAAC;oBAEH,QAAQ,GAAG,MAAM,WAAW,CAC1B,eAAe;oBACb,6EAA6E;oBAC7E,iFAAiF;oBACjF,UAAU,CACR,QAAQ,CACN,MAAM,EACN,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,cAAc,EAAE,CAAC,CAAC,KAAK,EAC1C,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,CAC1C,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CACzE,EACD,eAAe,CAChB,CACF,EACD,IAAI,EACJ;wBACE,gFAAgF;wBAChF,gFAAgF;wBAChF,gFAAgF;wBAChF,0EAA0E;wBAC1E,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;4BACb,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa;gCACtC,CAAC,CAAC,EAAE;gCACJ,CAAC,CAAC;oCACE,+CAA+C,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,kBAAkB,GAAG,EAAE;iCACpH,CAAC;4BACN,4EAA4E;4BAC5E,6EAA6E;4BAC7E,8EAA8E;4BAC9E,yDAAyD;4BACzD,GAAG,CAAC,qBAAqB,CAAC,MAAM,KAAK,CAAC;gCACpC,CAAC,CAAC,EAAE;gCACJ,CAAC,CAAC;oCACE,KAAK,qBAAqB,CAAC,MAAM,2CAA2C,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wCAC5G,2EAA2E;iCAC9E,CAAC;yBACP;wBACD,6EAA6E;wBAC7E,oEAAoE;wBACpE,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW;wBACzB,KAAK,EAAE,EAAE;qBACV,CACF,CAAC;gBACJ,CAAC;wBAAS,CAAC;oBACT,eAAe,GAAG,SAAS,CAAC;gBAC9B,CAAC;gBAED,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,cAAc,EAAE,CAAC;gBAC1D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM;gBAE9B;;;;;;;;;;;mBAWG;gBACH,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,KAAK,IAAI,CAAC;gBAC3D,MAAM,WAAW,GAAG,IAAI,GAAG,EAAoB,CAAC;gBAChD,MAAM,OAAO,GAA4B,EAAE,CAAC;gBAC5C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;oBACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAChC,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC5B,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAc,CAAC,CAAC;oBACzD,CAAC;yBAAM,IAAI,cAAc,EAAE,CAAC;wBAC1B,iFAAiF;wBACjF,gFAAgF;wBAChF,0EAA0E;wBAC1E,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAc,CAAC,CAAC;wBACvD,qBAAqB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC;oBACpD,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC;gBACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,mFAAmF;oBACnF,+EAA+E;oBAC/E,oFAAoF;oBACpF,iFAAiF;oBACjF,EAAE;oBACF,mFAAmF;oBACnF,oFAAoF;oBACpF,kFAAkF;oBAClF,iFAAiF;oBACjF,wEAAwE;oBACxE,iBAAiB,IAAI,CAAC,CAAC;oBACvB,IAAI,iBAAiB,GAAG,YAAY,EAAE,CAAC;wBACrC,iFAAiF;wBACjF,gFAAgF;wBAChF,0DAA0D;wBAC1D,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,YAAY,CAAC;wBACxE,IAAI,CAAC,KAAK,CAAC,eAAe,YAAY,cAAc,GAAG,yBAAyB,CAAC,CAAC;wBAClF,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,MAAM,sCAAsC,CAAC,CAAC;wBAC7E,cAAc,GAAG,IAAI,CAAC;wBACtB,MAAM;oBACR,CAAC;oBACD,KAAK,IAAI,CAAC,CAAC;oBACX,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;oBAC5D,SAAS;gBACX,CAAC;gBAED,qFAAqF;gBACrF,oFAAoF;gBACpF,gDAAgD;gBAChD,IAAI,KAAK,IAAI,YAAY,EAAE,CAAC;oBAC1B,IAAI,CAAC,KAAK,CAAC,eAAe,YAAY,gCAAgC,CAAC,CAAC;oBACxE,IAAI,CAAC,KAAK,CAAC,cAAc,OAAO,CAAC,MAAM,sCAAsC,CAAC,CAAC;oBAC/E,cAAc,GAAG,IAAI,CAAC;oBACtB,MAAM;gBACR,CAAC;gBAED,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;oBAC9B,IAAI,CAAC,KAAK,CAAC,QAAQ,OAAO,CAAC,MAAM,yDAAyD,CAAC,CAAC;oBAC5F,IAAI,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;oBAC5D,MAAM;gBACR,CAAC;gBAED,IAAI,UAAiC,CAAC;gBACtC,IAAI,CAAC;oBACH,UAAU,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACxE,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,mFAAmF;oBACnF,mFAAmF;oBACnF,qFAAqF;oBACrF,4EAA4E;oBAC5E,gFAAgF;oBAChF,IAAI,CAAC,WAAW;wBAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC5C,MAAM,CAAC,CAAC;gBACV,CAAC;gBACD,oFAAoF;gBACpF,qFAAqF;gBACrF,yDAAyD;gBACzD,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3F,CAAC;QACD,CAAC,QAAQ,OAAO,EAAE;QAElB,yFAAyF;QACzF,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;QAC5C;;;;;;;;;WASG;QACH,MAAM,UAAU,GAAG,CAAC,MAAM,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QACzD,sFAAsF;QACtF,sFAAsF;QACtF,uFAAuF;QACvF,uFAAuF;QACvF,OAAO;YACL,QAAQ,EAAE,QAAS;YACnB,OAAO;YACP,cAAc;YACd,WAAW,EAAE,SAAS;YACtB,UAAU;YACV,+EAA+E;YAC/E,uCAAuC;YACvC,GAAG,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;YAC3E,GAAG,CAAC,qBAAqB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,qBAAqB,EAAE,CAAC;YACxF,GAAG,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC;SACpE,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACL,KAAK;QACL,QAAQ,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,EAAE;QACnC,MAAM,EAAE,GAAG,EAAE;YACX,OAAO,GAAG,IAAI,CAAC;YACf,eAAe,EAAE,EAAE,CAAC;QACtB,CAAC;QACD,gFAAgF;QAChF,KAAK,CAAC,cAAc,CAAC,MAAmB;YACtC,OAAO,GAAG,MAAM,CAAC;YACjB,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QAC7B,CAAC;QACD;;;;;;;;;;;;;;;;;WAiBG;QACH,SAAS,CAAC,EAAW;YACnB,IAAI,GAAG,EAAE,IAAI,YAAY,UAAU,EAAE,EAAE,CAAC;YACxC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;YAClB,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YACnB,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;YAClB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,cAAc,GAAG,WAAW,CAAC;YAC7B,eAAe,EAAE,CAAC;QACpB,CAAC;QACD,OAAO;QACP;;;WAGG;QACH,OAAO,EAAE,GAA6B,EAAE,CAAC,CAAC;YACxC,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;YAChF,OAAO,EAAE,cAAc;YACvB,kFAAkF;YAClF,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC;QACF,0FAA0F;QAC1F,gBAAgB,EAAE,CAAC,MAAkB,EAAgB,EAAE;YACrD,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9B,OAAO,GAAG,EAAE;gBACV,MAAM,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC3C,IAAI,CAAC,IAAI,CAAC;oBAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5C,CAAC,CAAC;QACJ,CAAC;QACD,IAAI,IAAI;YACN,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verificador.js","sourceRoot":"","sources":["../../../src/agent/turno/verificador.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAErC,+EAA+E;AAC/E;;;;;;;GAOG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;CAAG;AAiB/C;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,MAA0B;IACjD,uFAAuF;IACvF,kFAAkF;IAClF,iFAAiF;IACjF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,KAAK,IAAI,6CAA6C,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,SAAS,GAAe,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,SAAS,EAAE,CAAC,CAAC,QAAiC;QAC9C,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI;QACnC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI;QACvB,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM;KAC5B,CAAC,CAAC,CAAC;IACJ,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC;AAC9C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,OAAO,iBAAiB;IACC;IAA7B,YAA6B,UAAU,gBAAgB;QAA1B,YAAO,GAAP,OAAO,CAAmB;IAAG,CAAC;IAE3D,KAAK,CAAC,SAAS,CAAC,YAAoB;QAClC,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,SAAS,GAAG,CAAwB,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,MAAM;gBAAE,MAAM,CAAC,CAAC,CAAC,0CAA0C;YAC1E,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAM,mDAAmD;QACrF,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAuB,CAAC,CAAC;IAC5D,CAAC;CACF"}
|
package/dist/cli/config.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* Y al revés: un config MAL escrito no puede impedir que este comando funcione — es
|
|
11
11
|
* justo el que uno corre cuando la configuración está mal. Por eso siempre devuelve 0.
|
|
12
12
|
*/
|
|
13
|
-
import { cargar } from "../agent/configEnDisco.js";
|
|
13
|
+
import { cargar } from "../agent/config/configEnDisco.js";
|
|
14
14
|
import { ModeloMalEscrito, PAPELES, resolver, idDeProveedorPersonalizado, PROVEEDORES, VARIABLES_POR_PROVEEDOR, variableDeProveedor, } from "../core/modelos.js";
|
|
15
15
|
import { topeResuelto } from "../core/contextos.js";
|
|
16
16
|
import { escribirEnStdout } from "./stdio.js";
|
package/dist/cli/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/consola.js
CHANGED
|
@@ -14,7 +14,8 @@ import { cmdConfig } from "./config.js";
|
|
|
14
14
|
import { cmdDescribe } from "./describe.js";
|
|
15
15
|
import { cmdDoctor } from "./doctor.js";
|
|
16
16
|
import { cmdVerify } from "./verify.js";
|
|
17
|
-
import { AgenteGuionizado } from "../agent/guionizado.js";
|
|
17
|
+
import { AgenteGuionizado } from "../agent/turno/guionizado.js";
|
|
18
|
+
import { exportarAPdf } from "../agent/exportarPdf.js";
|
|
18
19
|
import { correrTurno } from "../core/turno.js";
|
|
19
20
|
import { PAPELES, POR_OMISION, ModeloMalEscrito, parsear, PROVEEDORES, VARIABLES_POR_PROVEEDOR, esProveedorPersonalizado, variableDeProveedor, } from "../core/modelos.js";
|
|
20
21
|
import { motivoDeClaveInaceptable } from "../core/config.js";
|
|
@@ -23,12 +24,13 @@ import { interpretAnswer } from "../vendor/hitl.js";
|
|
|
23
24
|
import { crearPielStdio } from "./stdio.js";
|
|
24
25
|
import { esTema, seleccionarTema, TEMAS } from "./tema.js";
|
|
25
26
|
import { acuseDeModelo } from "./acuseDeModelo.js";
|
|
26
|
-
import { guardarCredencial, AuthRotoEnDisco } from "../agent/authEnDisco.js";
|
|
27
|
-
import { cargarSettings, guardarSinAprobacion } from "../agent/settingsEnDisco.js";
|
|
27
|
+
import { guardarCredencial, AuthRotoEnDisco } from "../agent/config/authEnDisco.js";
|
|
28
|
+
import { cargarSettings, guardarSinAprobacion } from "../agent/config/settingsEnDisco.js";
|
|
28
29
|
import { seAplicaSinAprobacion } from "../core/settings.js";
|
|
29
|
-
import { URL_CLOUDSTUDIO_POR_OMISION } from "../agent/cloudstudioMcp.js";
|
|
30
|
-
import { cargar, cloudstudioDelProyecto, NOMBRE_CARPETA } from "../agent/configEnDisco.js";
|
|
31
|
-
import { rutaMemoriaDeProyecto } from "../agent/memoriaDeProyecto.js";
|
|
30
|
+
import { URL_CLOUDSTUDIO_POR_OMISION } from "../agent/cloudstudio/cloudstudioMcp.js";
|
|
31
|
+
import { cargar, cloudstudioDelProyecto, NOMBRE_CARPETA } from "../agent/config/configEnDisco.js";
|
|
32
|
+
import { rutaMemoriaDeProyecto } from "../agent/grafo/memoriaDeProyecto.js";
|
|
33
|
+
import { ESFUERZOS, esEsfuerzo } from "../core/esfuerzo.js";
|
|
32
34
|
/**
|
|
33
35
|
* Saludo local de la consola. No procede del modelo ni se incorpora al hilo: debe hacer
|
|
34
36
|
* visible que xonecode está listo sin gastar tokens ni sesgar la primera petición.
|
|
@@ -51,7 +53,7 @@ export const PETICION_REANUDAR_PROYECTO = "Reanuda el proyecto. Lee solo /MEMORI
|
|
|
51
53
|
"ni explores el código salvo que la memoria cite una ruta imprescindible para aclarar un pendiente; " +
|
|
52
54
|
"en ese caso lee solo sus primeras 50 líneas. Termina preguntando si quieres continuar ese paso.";
|
|
53
55
|
export const MENSAJE_REANUDANDO = "Analizando el estado guardado del repositorio…\n";
|
|
54
|
-
// Movida a `agent/cloudstudioMcp.ts`: es la dirección de un servidor, no un detalle de
|
|
56
|
+
// Movida a `agent/cloudstudio/cloudstudioMcp.ts`: es la dirección de un servidor, no un detalle de
|
|
55
57
|
// esta piel, y `adoptarLegadoSiProcede` (Task 4 del plan de la consola web) la necesita
|
|
56
58
|
// desde `agent/`, que no puede importar de `cli/`. Se reexporta para no romper a quien
|
|
57
59
|
// la importaba de aquí.
|
|
@@ -581,6 +583,39 @@ export function crearCompleter(escribir, ficherosDelProyecto = () => new Set())
|
|
|
581
583
|
* El estado solo cambia con un modelo VÁLIDO: un fallo de tecleo no puede dejar la sesión
|
|
582
584
|
* apuntando a algo que revienta al construir el cliente.
|
|
583
585
|
*/
|
|
586
|
+
/**
|
|
587
|
+
* `/esfuerzo <nivel>` — cuánto razona el modelo, en caliente y para esta sesión.
|
|
588
|
+
*
|
|
589
|
+
* `ninguno` lo quita, y es una palabra y no un argumento vacío: teclear `/esfuerzo` a secas
|
|
590
|
+
* es casi siempre olvidarse del nivel, y tratar ese olvido como «quítalo» apagaría en
|
|
591
|
+
* silencio algo que alguien había puesto. Sin argumento se enseña el uso, como en `/modelo`.
|
|
592
|
+
*
|
|
593
|
+
* **No se comprueba contra el modelo de ahora, y es deliberado.** El nivel es de la SESIÓN y
|
|
594
|
+
* el modelo se cambia debajo con `/modelo`; rechazar aquí un `xhigh` porque el modelo
|
|
595
|
+
* puesto en este segundo no lo admite obligaría a volver a teclearlo tras cada cambio. Lo
|
|
596
|
+
* que hace `construirModelo` es omitirlo mientras no aplique — y recuperarlo solo, sin que
|
|
597
|
+
* nadie lo vuelva a escribir, en cuanto el modelo lo admita.
|
|
598
|
+
*/
|
|
599
|
+
const manejadorDeEsfuerzo = async (args, estado, consola) => {
|
|
600
|
+
const valor = (args[0] ?? "").trim().toLowerCase();
|
|
601
|
+
if (valor === "") {
|
|
602
|
+
consola.escribir(`uso: /esfuerzo <${ESFUERZOS.join("|")}|ninguno>\n`);
|
|
603
|
+
return { seguir: true };
|
|
604
|
+
}
|
|
605
|
+
if (valor === "ninguno") {
|
|
606
|
+
consola.escribir("esfuerzo: sin fijar — lo decide el modelo\n");
|
|
607
|
+
const { esfuerzo: _quitado, ...resto } = estado;
|
|
608
|
+
return { seguir: true, estado: resto };
|
|
609
|
+
}
|
|
610
|
+
if (!esEsfuerzo(valor)) {
|
|
611
|
+
consola.escribir(`«${valor}» no es un nivel. Los que hay: ${ESFUERZOS.join(", ")} (o «ninguno»).\n`);
|
|
612
|
+
return { seguir: true };
|
|
613
|
+
}
|
|
614
|
+
// Se DICE que puede no aplicar, en vez de callarlo: el nivel se guarda igual, pero quien
|
|
615
|
+
// lo teclea tiene que saber que su modelo de ahora manda sobre esto.
|
|
616
|
+
consola.escribir(`esfuerzo: ${valor} — se aplica a los modelos que lo admitan\n`);
|
|
617
|
+
return { seguir: true, estado: { ...estado, esfuerzo: valor } };
|
|
618
|
+
};
|
|
584
619
|
function manejadorDeModelo(papel) {
|
|
585
620
|
const nombre = papel === undefined ? "/modelo" : `/modelo-${papel}`;
|
|
586
621
|
return async (args, estado, consola) => {
|
|
@@ -626,7 +661,7 @@ function manejadorDeModelo(papel) {
|
|
|
626
661
|
/**
|
|
627
662
|
* La ÚNICA política de aprobación que existe hoy: rellena el hueco de
|
|
628
663
|
* `core/cloudstudio.ts#PoliticaDeAprobacion` con un humano que ve el plan y responde.
|
|
629
|
-
* Vive aquí, en `cli/`, y no en `agent/subida.ts`: la política es de la piel, el hueco es
|
|
664
|
+
* Vive aquí, en `cli/`, y no en `agent/cloudstudio/subida.ts`: la política es de la piel, el hueco es
|
|
630
665
|
* del motor.
|
|
631
666
|
*
|
|
632
667
|
* **Es MÁS estricta que `cli/aprobar.ts`, a propósito: aquí el Enter a secas no aprueba
|
|
@@ -703,6 +738,30 @@ export const COMANDOS = {
|
|
|
703
738
|
return { seguir: true };
|
|
704
739
|
},
|
|
705
740
|
},
|
|
741
|
+
pdf: {
|
|
742
|
+
descripcion: "exporta un .md o .html del proyecto a PDF, al lado del original",
|
|
743
|
+
/**
|
|
744
|
+
* **Lo hace el HARNESS y no el agente.** Producir un PDF es lo que las skills `pdf`/`docx`
|
|
745
|
+
* hacen ejecutando scripts, y a un motor externo no se le concede shell — abrirla dejaría
|
|
746
|
+
* a ese hijo reescribir el proyecto sin diff ni aprobación. Aquí el comando es FIJO y lo
|
|
747
|
+
* escribe el código, así que no hay prompt que pueda torcerlo. El porqué entero está en
|
|
748
|
+
* `core/exportacion.ts`.
|
|
749
|
+
*
|
|
750
|
+
* **Y la autorización es teclear el comando**, como crear una tarea: no pasa por la
|
|
751
|
+
* aprobación de escritura porque no lo pide el modelo, lo pide quien está delante, y el
|
|
752
|
+
* destino lo DERIVA el código del origen (`rutaDePdf`) — no se puede elegir dónde escribe.
|
|
753
|
+
*/
|
|
754
|
+
manejador: async (args, estado, consola) => {
|
|
755
|
+
const ruta = args.join(" ").trim();
|
|
756
|
+
if (ruta === "") {
|
|
757
|
+
consola.escribir("uso: /pdf <ruta del fichero dentro del proyecto>\n");
|
|
758
|
+
return { seguir: true };
|
|
759
|
+
}
|
|
760
|
+
const hecho = await exportarAPdf({ raiz: estado.raiz, ruta });
|
|
761
|
+
consola.escribir("error" in hecho ? `${hecho.error}\n` : `PDF en ${hecho.ruta}\n`);
|
|
762
|
+
return { seguir: true };
|
|
763
|
+
},
|
|
764
|
+
},
|
|
706
765
|
config: {
|
|
707
766
|
descripcion: "config y credenciales, sin claves — como `xonecode config`",
|
|
708
767
|
manejador: async (_args, estado, consola) => {
|
|
@@ -737,6 +796,10 @@ export const COMANDOS = {
|
|
|
737
796
|
descripcion: "cambia los TRES papeles en caliente: /modelo <proveedor>/<modelo>",
|
|
738
797
|
manejador: manejadorDeModelo(undefined),
|
|
739
798
|
},
|
|
799
|
+
esfuerzo: {
|
|
800
|
+
descripcion: "cuánto razona el modelo: /esfuerzo <low|medium|high|xhigh|max|ninguno>",
|
|
801
|
+
manejador: manejadorDeEsfuerzo,
|
|
802
|
+
},
|
|
740
803
|
"modelo-rapido": {
|
|
741
804
|
descripcion: "cambia el papel `rapido` en caliente: /modelo-rapido <proveedor>/<modelo>",
|
|
742
805
|
manejador: manejadorDeModelo("rapido"),
|
|
@@ -827,7 +890,7 @@ export const COMANDOS = {
|
|
|
827
890
|
const cuando = new Date().toISOString();
|
|
828
891
|
try {
|
|
829
892
|
// El hueco de política solo se rellena para «subir»: es la única acción que
|
|
830
|
-
// escribe. `agent/subida.ts#subir` la invoca con el plan YA CONSTRUIDO, así que
|
|
893
|
+
// escribe. `agent/cloudstudio/subida.ts#subir` la invoca con el plan YA CONSTRUIDO, así que
|
|
831
894
|
// esto puede pasarse siempre — si el árbol está sucio o no hay nada que subir, ni
|
|
832
895
|
// siquiera llega a invocarse.
|
|
833
896
|
const politicaDeAprobacion = accion === "subir" ? politicaInteractiva(consola, decir) : undefined;
|