xonecode 0.38.41 → 0.39.2
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/{EditorDeFichero-B5qtmfKO.js → EditorDeFichero-BeWDctgN.js} +1 -1
- package/apps/web/dist/assets/{index-C6XoIOQg.js → index-B-6cDRAV.js} +20 -20
- package/apps/web/dist/assets/{php-I6JfbNBQ.js → php-D3QdOnb8.js} +1 -1
- package/apps/web/dist/assets/{ruby-DlqXDLOX.js → ruby-DDAcW-Z2.js} +1 -1
- package/apps/web/dist/index.html +1 -1
- package/dist/agent/cloudstudio/cloudstudioClient.d.ts +29 -0
- package/dist/agent/cloudstudio/cloudstudioMcp.d.ts +414 -0
- package/dist/agent/cloudstudio/conexionDeServidor.d.ts +37 -0
- package/dist/agent/cloudstudio/conexionDeServidor.js +63 -0
- package/dist/agent/cloudstudio/conexionDeServidor.js.map +1 -0
- package/dist/agent/cloudstudio/crearRama.d.ts +15 -0
- package/dist/agent/cloudstudio/crearRama.js +16 -0
- package/dist/agent/cloudstudio/crearRama.js.map +1 -0
- package/dist/agent/cloudstudio/descarga.d.ts +44 -0
- package/dist/agent/cloudstudio/manifiesto.d.ts +25 -0
- package/dist/agent/cloudstudio/ramaActiva.d.ts +24 -0
- package/dist/agent/cloudstudio/subida.d.ts +61 -0
- package/dist/agent/cloudstudio/subida.js +7 -1
- package/dist/agent/cloudstudio/subida.js.map +1 -1
- package/dist/agent/cloudstudio/validarTrasDescarga.d.ts +13 -0
- package/dist/agent/cloudstudio/zip.d.ts +13 -0
- package/dist/agent/conectores/conectoresEnDisco.d.ts +47 -0
- package/dist/agent/conectores/gestorJira.d.ts +50 -0
- package/dist/agent/conectores/gestorNotion.d.ts +45 -0
- package/dist/agent/conectores/proveedorDeConector.d.ts +43 -0
- package/dist/agent/conectores/servicioDeConectores.d.ts +112 -0
- package/dist/agent/config/authEnDisco.d.ts +43 -0
- package/dist/agent/config/catalogoModelos.d.ts +79 -0
- package/dist/agent/config/configEnDisco.d.ts +235 -0
- package/dist/agent/config/crearProyecto.d.ts +20 -0
- package/dist/agent/config/diagnosticoDeNodeEnMaquina.d.ts +44 -0
- package/dist/agent/config/ecoDeRazonamiento.d.ts +104 -0
- package/dist/agent/config/entorno.d.ts +83 -0
- package/dist/agent/config/fuentesEnRed.d.ts +12 -0
- package/dist/agent/config/gemini.d.ts +5 -0
- package/dist/agent/config/iconosEnRed.d.ts +10 -0
- package/dist/agent/config/identidadEnDisco.d.ts +27 -0
- package/dist/agent/config/modelos.d.ts +77 -0
- package/dist/agent/config/modelosDeMotor.d.ts +52 -0
- package/dist/agent/config/mudanzaEnDisco.d.ts +99 -0
- package/dist/agent/config/persona.d.ts +1 -0
- package/dist/agent/config/selectorEnMaquina.d.ts +35 -0
- package/dist/agent/config/settingsEnDisco.d.ts +206 -0
- package/dist/agent/config/versionEnDisco.d.ts +17 -0
- package/dist/agent/dispositivos/arranqueDeEmulador.d.ts +60 -0
- package/dist/agent/dispositivos/cajasDeMaqueta.d.ts +61 -0
- package/dist/agent/dispositivos/decodificarImagen.d.ts +21 -0
- package/dist/agent/dispositivos/descargaDeHerramientas.d.ts +44 -0
- package/dist/agent/dispositivos/dispositivosEnMaquina.d.ts +161 -0
- package/dist/agent/dispositivos/geometriaEnDisco.d.ts +17 -0
- package/dist/agent/dispositivos/hotswap.d.ts +194 -0
- package/dist/agent/dispositivos/instalacionEnMaquina.d.ts +156 -0
- package/dist/agent/dispositivos/juezVisual.d.ts +144 -0
- package/dist/agent/dispositivos/lanzamientoEnMaquina.d.ts +197 -0
- package/dist/agent/dispositivos/paqueteDelProyecto.d.ts +28 -0
- package/dist/agent/dispositivos/procesosEnMaquina.d.ts +154 -0
- package/dist/agent/dispositivos/recargaEnAparato.d.ts +30 -0
- package/dist/agent/dispositivos/sensorDeArranque.d.ts +42 -0
- package/dist/agent/exportarPdf.d.ts +72 -0
- package/dist/agent/grafo/aprendido.d.ts +28 -0
- package/dist/agent/grafo/arbolDeProyecto.d.ts +205 -0
- package/dist/agent/grafo/artefactosEnDisco.d.ts +35 -0
- package/dist/agent/grafo/atributosXone.d.ts +31 -0
- package/dist/agent/grafo/buscarIcono.d.ts +32 -0
- package/dist/agent/grafo/busquedaRegex.d.ts +56 -0
- package/dist/agent/grafo/codificacionDelProyecto.d.ts +7 -0
- package/dist/agent/grafo/compararCapturas.d.ts +22 -0
- package/dist/agent/grafo/copiarArtefacto.d.ts +64 -0
- package/dist/agent/grafo/criticaVisual.d.ts +60 -0
- package/dist/agent/grafo/describirImagen.d.ts +79 -0
- package/dist/agent/grafo/diferenciaDeCapturas.d.ts +33 -0
- package/dist/agent/grafo/ejecucionCancelable.d.ts +45 -0
- package/dist/agent/grafo/escriturasEnSerie.d.ts +31 -0
- package/dist/agent/grafo/excluirTools.d.ts +37 -0
- package/dist/agent/grafo/fuentesDeGoogle.d.ts +37 -0
- package/dist/agent/grafo/generarFondoSvg.d.ts +52 -0
- package/dist/agent/grafo/incorporarAdjunto.d.ts +98 -0
- package/dist/agent/grafo/lectorDeReferencias.d.ts +28 -0
- package/dist/agent/grafo/marcarCriteriosDelPlan.d.ts +47 -0
- package/dist/agent/grafo/memoriaDeProyecto.d.ts +15 -0
- package/dist/agent/grafo/navegacionXone.d.ts +60 -0
- package/dist/agent/grafo/opcionesDeFicheros.d.ts +23 -0
- package/dist/agent/grafo/perfiles.d.ts +225 -0
- package/dist/agent/grafo/proyecto.d.ts +450 -0
- package/dist/agent/grafo/skills.d.ts +181 -0
- package/dist/agent/grafo/traerDeLaMaquina.d.ts +60 -0
- package/dist/agent/grafo/unirSecciones.d.ts +20 -0
- package/dist/agent/grafo/validacionXone.d.ts +35 -0
- package/dist/agent/grafo/validarFicheroXone.d.ts +33 -0
- package/dist/agent/grafo/xoneAgent.d.ts +166 -0
- package/dist/agent/motores/motoresLocales.d.ts +87 -0
- package/dist/agent/motores/trueforge/capacidades.d.ts +183 -0
- package/dist/agent/motores/trueforge/convertirAP.d.ts +38 -0
- package/dist/agent/motores/trueforge/detencion.d.ts +70 -0
- package/dist/agent/motores/trueforge/esperas.d.ts +38 -0
- package/dist/agent/motores/trueforge/eventosTrueforge.d.ts +56 -0
- package/dist/agent/motores/trueforge/informesDeHijos.d.ts +48 -0
- package/dist/agent/motores/trueforge/medidaAutomatica.d.ts +37 -0
- package/dist/agent/motores/trueforge/medidaAutomatica.js +4 -2
- package/dist/agent/motores/trueforge/medidaAutomatica.js.map +1 -1
- package/dist/agent/motores/trueforge/memoriaDeEspecialistas.d.ts +60 -0
- package/dist/agent/motores/trueforge/memoriaTrueforge.d.ts +131 -0
- package/dist/agent/motores/trueforge/metricasTrueforge.d.ts +45 -0
- package/dist/agent/motores/trueforge/modeloExterno.d.ts +9 -0
- package/dist/agent/motores/trueforge/modeloLangchain.d.ts +69 -0
- package/dist/agent/motores/trueforge/notas.d.ts +48 -0
- package/dist/agent/motores/trueforge/proponerTareas.d.ts +30 -0
- package/dist/agent/motores/trueforge/recortes.d.ts +47 -0
- package/dist/agent/motores/trueforge/resumenSeguro.d.ts +33 -0
- package/dist/agent/motores/trueforge/sesionTrueforge.d.ts +273 -0
- package/dist/agent/motores/trueforge/sesionTrueforge.js +32 -15
- package/dist/agent/motores/trueforge/sesionTrueforge.js.map +1 -1
- package/dist/agent/motores/trueforge/skillsTrueforge.d.ts +16 -0
- package/dist/agent/motores/trueforge/toolsDeConectores.d.ts +36 -0
- package/dist/agent/motores/trueforge/toolsDeFichero.d.ts +146 -0
- package/dist/agent/motores/trueforge/toolsPropias.d.ts +38 -0
- package/dist/agent/motores/trueforge/traerDeStitch.d.ts +63 -0
- package/dist/agent/motores/trueforge/trueforge.d.ts +35 -0
- package/dist/agent/navegacion/estilosEnDisco.d.ts +41 -0
- package/dist/agent/navegacion/hechosEnDisco.d.ts +19 -0
- package/dist/agent/navegacion/indiceEnDisco.d.ts +50 -0
- package/dist/agent/navegacion/modeloDeProyecto.d.ts +86 -0
- package/dist/agent/planesEnDisco.d.ts +18 -0
- package/dist/agent/publicarPlan.d.ts +20 -0
- package/dist/agent/raizDelPaquete.d.ts +9 -0
- package/dist/agent/remoto/ngrokEnMaquina.d.ts +44 -0
- package/dist/agent/remoto/puenteWebSocket.d.ts +59 -0
- package/dist/agent/remoto/tunelNgrok.d.ts +31 -0
- package/dist/agent/renombrarSobre.d.ts +14 -0
- package/dist/agent/sesiones/adjuntosDeSesion.d.ts +64 -0
- package/dist/agent/sesiones/baseDeFichero.d.ts +9 -0
- package/dist/agent/sesiones/checkpointer.d.ts +146 -0
- package/dist/agent/sesiones/git.d.ts +66 -0
- package/dist/agent/sesiones/gitSync.d.ts +264 -0
- package/dist/agent/sesiones/memoriaDeHilo.d.ts +4 -0
- package/dist/agent/sesiones/modeloDelCambio.d.ts +7 -0
- package/dist/agent/sesiones/parcheEnTexto.d.ts +9 -0
- package/dist/agent/sesiones/sesionGit.d.ts +155 -0
- package/dist/agent/subagentes/actividadDeCodex.d.ts +8 -0
- package/dist/agent/subagentes/agentesEnDisco.d.ts +198 -0
- package/dist/agent/subagentes/consumoExterno.d.ts +83 -0
- package/dist/agent/subagentes/ejecutableEnWindows.d.ts +53 -0
- package/dist/agent/subagentes/escrituraDeCodex.d.ts +94 -0
- package/dist/agent/subagentes/escrituraDeOpencode.d.ts +67 -0
- package/dist/agent/subagentes/escrituraExterna.d.ts +419 -0
- package/dist/agent/subagentes/pluginDeSkills.d.ts +84 -0
- package/dist/agent/subagentes/subagenteCodex.d.ts +76 -0
- package/dist/agent/subagentes/subagenteExterno.d.ts +169 -0
- package/dist/agent/subagentes/subagenteOpencode.d.ts +126 -0
- package/dist/agent/tareas/aumentador.d.ts +99 -0
- package/dist/agent/tareas/juezDeTarea.d.ts +64 -0
- package/dist/agent/tareas/reflejoEnElGestor.d.ts +38 -0
- package/dist/agent/tareas/sondeoDelGestor.d.ts +49 -0
- package/dist/agent/tareas/tareasEnDisco.d.ts +141 -0
- package/dist/agent/trazaDeErroresEnDisco.d.ts +10 -0
- package/dist/agent/turno/depuracion.d.ts +1 -0
- package/dist/agent/turno/diagnosticoDeTools.d.ts +124 -0
- package/dist/agent/turno/ficherosDelProyecto.d.ts +10 -0
- package/dist/agent/turno/guionizado.d.ts +18 -0
- package/dist/agent/turno/informeDeTraza.d.ts +220 -0
- package/dist/agent/turno/inspectorDePrompt.d.ts +150 -0
- package/dist/agent/turno/instantanea.d.ts +16 -0
- package/dist/agent/turno/interrupts.d.ts +54 -0
- package/dist/agent/turno/juezDelTurnoConModelo.d.ts +26 -0
- package/dist/agent/turno/mensajes.d.ts +23 -0
- package/dist/agent/turno/normalizar.d.ts +15 -0
- package/dist/agent/turno/puente.d.ts +196 -0
- package/dist/agent/turno/registroDeFallos.d.ts +39 -0
- package/dist/agent/turno/resumenDeContexto.d.ts +269 -0
- package/dist/agent/turno/resumenDeTool.d.ts +33 -0
- package/dist/agent/turno/rubrica.d.ts +35 -0
- package/dist/agent/turno/sesionReal.d.ts +89 -0
- package/dist/agent/turno/textoDeTool.d.ts +19 -0
- package/dist/agent/turno/turnoReal.d.ts +210 -0
- package/dist/agent/turno/verificacion.d.ts +85 -0
- package/dist/agent/turno/verificador.d.ts +66 -0
- package/dist/bin.d.ts +2 -0
- package/dist/cli/acuseDeModelo.d.ts +18 -0
- package/dist/cli/aprobar.d.ts +162 -0
- package/dist/cli/config.d.ts +17 -0
- package/dist/cli/consola.d.ts +473 -0
- package/dist/cli/describe.d.ts +7 -0
- package/dist/cli/doctor.d.ts +8 -0
- package/dist/cli/fuentesDeDisco.d.ts +25 -0
- package/dist/cli/main.d.ts +291 -0
- package/dist/cli/markdown.d.ts +126 -0
- package/dist/cli/panel.d.ts +38 -0
- package/dist/cli/podar.d.ts +38 -0
- package/dist/cli/run.d.ts +30 -0
- package/dist/cli/spinner.d.ts +37 -0
- package/dist/cli/stdio.d.ts +94 -0
- package/dist/cli/tema.d.ts +68 -0
- package/dist/cli/tokens.d.ts +16 -0
- package/dist/cli/traza.d.ts +19 -0
- package/dist/cli/tui/app.d.ts +23 -0
- package/dist/cli/tui/aprobarTui.d.ts +46 -0
- package/dist/cli/tui/barra.d.ts +43 -0
- package/dist/cli/tui/correrTui.d.ts +119 -0
- package/dist/cli/tui/entrada.d.ts +14 -0
- package/dist/cli/tui/filas.d.ts +13 -0
- package/dist/cli/tui/logo.d.ts +20 -0
- package/dist/cli/tui/pielTui.d.ts +15 -0
- package/dist/cli/tui/raton.d.ts +68 -0
- package/dist/cli/tui/sidebar.d.ts +63 -0
- package/dist/cli/tui/store.d.ts +102 -0
- package/dist/cli/tui/tarjeta.d.ts +8 -0
- package/dist/cli/tui/temaInk.d.ts +67 -0
- package/dist/cli/tui/transcript.d.ts +32 -0
- package/dist/cli/verify.d.ts +9 -0
- package/dist/cli/wizardInicial.d.ts +59 -0
- package/dist/core/actos.d.ts +437 -0
- package/dist/core/adjuntos.d.ts +77 -0
- package/dist/core/agentes.d.ts +353 -0
- package/dist/core/analisisDeSesion.d.ts +63 -0
- package/dist/core/aprendido.d.ts +41 -0
- package/dist/core/artefactos.d.ts +74 -0
- package/dist/core/atributosXone.d.ts +53 -0
- package/dist/core/bitacora.d.ts +21 -0
- package/dist/core/cloudstudio.d.ts +168 -0
- package/dist/core/codificacion.d.ts +81 -0
- package/dist/core/comandoExterno.d.ts +49 -0
- package/dist/core/compararCapturas.d.ts +136 -0
- package/dist/core/conectores.d.ts +296 -0
- package/dist/core/config.d.ts +148 -0
- package/dist/core/contextos.d.ts +54 -0
- package/dist/core/convertirAP.d.ts +56 -0
- package/dist/core/copiaDeAvd.d.ts +44 -0
- package/dist/core/cssBienFormado.d.ts +22 -0
- package/dist/core/deps.d.ts +28 -0
- package/dist/core/descargas.d.ts +61 -0
- package/dist/core/descripcionDePantalla.d.ts +121 -0
- package/dist/core/descriptoresDeApp.d.ts +108 -0
- package/dist/core/diagnosticoDeNode.d.ts +51 -0
- package/dist/core/diff.d.ts +26 -0
- package/dist/core/diffDeColecciones.d.ts +54 -0
- package/dist/core/disenoVinculado.d.ts +17 -0
- package/dist/core/dispositivoDeSesion.d.ts +22 -0
- package/dist/core/dispositivoElegido.d.ts +17 -0
- package/dist/core/dispositivos.d.ts +469 -0
- package/dist/core/entrega.d.ts +341 -0
- package/dist/core/entrelazar.d.ts +48 -0
- package/dist/core/esfuerzo.d.ts +120 -0
- package/dist/core/esqueleto.d.ts +38 -0
- package/dist/core/estiloMedido.d.ts +70 -0
- package/dist/core/estilos.d.ts +76 -0
- package/dist/core/events.d.ts +218 -0
- package/dist/core/exportacion.d.ts +88 -0
- package/dist/core/fallos.d.ts +79 -0
- package/dist/core/fondosSvg.d.ts +115 -0
- package/dist/core/fotoDeColecciones.d.ts +45 -0
- package/dist/core/fuentes.d.ts +96 -0
- package/dist/core/geometriaDePantalla.d.ts +171 -0
- package/dist/core/gestorDeTareas.d.ts +295 -0
- package/dist/core/hechosDelProyecto.d.ts +70 -0
- package/dist/core/hotswap.d.ts +30 -0
- package/dist/core/iconos.d.ts +86 -0
- package/dist/core/identidadDeProveedor.d.ts +20 -0
- package/dist/core/idiomaDeLaRespuesta.d.ts +26 -0
- package/dist/core/imagenesDeDocumento.d.ts +40 -0
- package/dist/core/jsParaRhino.d.ts +3 -0
- package/dist/core/juezDelTurno.d.ts +95 -0
- package/dist/core/logDeDispositivo.d.ts +67 -0
- package/dist/core/memoria.d.ts +18 -0
- package/dist/core/metodoDeComparacionVisual.d.ts +20 -0
- package/dist/core/modelos.d.ts +198 -0
- package/dist/core/modoDeEscritura.d.ts +155 -0
- package/dist/core/motor.d.ts +43 -0
- package/dist/core/motoresLocales.d.ts +113 -0
- package/dist/core/mudanzaDeWorkspace.d.ts +112 -0
- package/dist/core/navegacion.d.ts +172 -0
- package/dist/core/notify.d.ts +77 -0
- package/dist/core/nucleoXone.d.ts +28 -0
- package/dist/core/panorama.d.ts +68 -0
- package/dist/core/paqueteDeSoporte.d.ts +100 -0
- package/dist/core/planDeSubida.d.ts +56 -0
- package/dist/core/planes.d.ts +53 -0
- package/dist/core/podaDeCheckpoint.d.ts +75 -0
- package/dist/core/ports.d.ts +1034 -0
- package/dist/core/puedeLanzarse.d.ts +181 -0
- package/dist/core/puertosDeAvd.d.ts +59 -0
- package/dist/core/recargaEnCaliente.d.ts +52 -0
- package/dist/core/referenciasDeImagen.d.ts +36 -0
- package/dist/core/remoto.d.ts +76 -0
- package/dist/core/repartoDeEncargo.d.ts +80 -0
- package/dist/core/rubrica.d.ts +78 -0
- package/dist/core/rutaVirtual.d.ts +29 -0
- package/dist/core/selectorDeCarpeta.d.ts +59 -0
- package/dist/core/serieDeEscrituras.d.ts +58 -0
- package/dist/core/settings.d.ts +421 -0
- package/dist/core/shellDeAgente.d.ts +177 -0
- package/dist/core/skills.d.ts +129 -0
- package/dist/core/stitch.d.ts +114 -0
- package/dist/core/tareas.d.ts +412 -0
- package/dist/core/tareasDelPlan.d.ts +123 -0
- package/dist/core/tareasEnElGestor.d.ts +117 -0
- package/dist/core/textos.d.ts +8 -0
- package/dist/core/topeAgotado.d.ts +55 -0
- package/dist/core/traerDeLaMaquina.d.ts +33 -0
- package/dist/core/trazaDeErrores.d.ts +83 -0
- package/dist/core/tunel.d.ts +45 -0
- package/dist/core/turno.d.ts +154 -0
- package/dist/core/validacionDeEscritura.d.ts +95 -0
- package/dist/core/verificacionDeSubida.d.ts +14 -0
- package/dist/core/version.d.ts +35 -0
- package/dist/core/xmlBienFormado.d.ts +23 -0
- package/dist/core/zipDeAdjunto.d.ts +28 -0
- package/dist/core/zipDeSkill.d.ts +74 -0
- package/dist/lib/tareaAutonoma.d.ts +36 -0
- package/dist/lib/tareaAutonoma.js +259 -0
- package/dist/lib/tareaAutonoma.js.map +1 -0
- package/dist/lib.d.ts +31 -0
- package/dist/lib.js +28 -0
- package/dist/lib.js.map +1 -0
- package/dist/vendor/hitl.d.ts +69 -0
- package/dist/vendor/skillLoaders/catalog.d.ts +27 -0
- package/dist/vendor/sqliteSaver.d.ts +22 -0
- package/dist/vendor/tokenTracking.d.ts +22 -0
- package/dist/web/servidor/arranque.d.ts +1372 -0
- package/dist/web/servidor/consolaDeTarea.d.ts +166 -0
- package/dist/web/servidor/consolaWeb.d.ts +142 -0
- package/dist/web/servidor/corredorDeTareas.d.ts +395 -0
- package/dist/web/servidor/datosDeCierre.d.ts +4 -0
- package/dist/web/servidor/interrupcion.d.ts +39 -0
- package/dist/web/servidor/pielWeb.d.ts +32 -0
- package/dist/web/servidor/puenteRemoto.d.ts +80 -0
- package/dist/web/servidor/servidor.d.ts +53 -0
- package/dist/web/servidor/sesiones.d.ts +342 -0
- package/dist/web/servidor/soporte.d.ts +65 -0
- package/dist/web/servidor/soporte.js +2 -0
- package/dist/web/servidor/soporte.js.map +1 -1
- package/dist/web/servidor/transporte.d.ts +2751 -0
- package/dist/web/servidor/vestibulo.d.ts +952 -0
- package/dist/web/servidor/visorOpenui.d.ts +33 -0
- package/package.json +9 -1
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* La política de ruido: una línea por RACHA de la misma tool, no por llamada.
|
|
3
|
+
*
|
|
4
|
+
* Es del TURNO: se construye al empezar el turno y muere con él. Un colapsador de proceso
|
|
5
|
+
* contaría las llamadas de todos los turnos juntos.
|
|
6
|
+
*
|
|
7
|
+
* La línea lleva ICONO por familia (`→` leer, `←` escribir, `✱` buscar) y VERBO en
|
|
8
|
+
* español, no el nombre crudo de la tool — «→ lee app.xne» cuenta lo mismo que
|
|
9
|
+
* «🔧 read_file» y se lee a la primera, que es lo que llena los 100-300 s de un turno.
|
|
10
|
+
* Una tool desconocida no se disfraza: `⚙` y su nombre tal cual, porque un nombre que
|
|
11
|
+
* no está en el mapa puede significar cualquier cosa (una tool MCP de Studio, por
|
|
12
|
+
* ejemplo) y inventarle un verbo sería mentir.
|
|
13
|
+
*
|
|
14
|
+
* Devuelve una LISTA de líneas, nunca una cadena con dos pegadas: cuando una racha se
|
|
15
|
+
* cierra Y otra tool arranca en el mismo evento —el caso normal de "tres read_file y luego
|
|
16
|
+
* un glob"— hay DOS cosas que decir, y quien pinta escribe tantas líneas como haya.
|
|
17
|
+
*/
|
|
18
|
+
import type { OrigenDeLaTool } from "./events.js";
|
|
19
|
+
export interface EventoTool {
|
|
20
|
+
nombre: string;
|
|
21
|
+
/**
|
|
22
|
+
* Ruta o patrón, SOLO eso: lo permite la lista blanca de `agent/turno/resumenDeTool.ts`
|
|
23
|
+
* (file_path/path/pattern según la tool). El contenido del fichero y los tokens de
|
|
24
|
+
* autenticación NO caben aquí por diseño — ver la cabecera de `core/events.ts`.
|
|
25
|
+
*/
|
|
26
|
+
detalle?: string;
|
|
27
|
+
/** Vacío si fue bien. Un error nunca se colapsa. */
|
|
28
|
+
error?: string;
|
|
29
|
+
/** Quién la pidió (`core/events.ts#OrigenDeLaTool`). Ausente = no consta. */
|
|
30
|
+
origen?: OrigenDeLaTool;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Una línea del colapsador, con la tool de la que habla.
|
|
34
|
+
*
|
|
35
|
+
* El texto ya no viaja solo porque quien pinta necesita saber DE QUÉ es la línea sin
|
|
36
|
+
* re-parsear la prosa: «→ lee» no dice `read_file` en ninguna parte, y deducirlo del icono
|
|
37
|
+
* sería reconstruir a mano el mapa que está diez líneas más arriba — con la garantía de que
|
|
38
|
+
* las dos copias divergen el día que alguien añada un verbo. El nombre ya lo tenía el
|
|
39
|
+
* evento; lo que se arregla es que dejara de estar al llegar a la piel.
|
|
40
|
+
*
|
|
41
|
+
* `nombre` es el de la tool de la RACHA que la línea cuenta, que en un cierre es la
|
|
42
|
+
* ANTERIOR y no la que acaba de llegar — es justo el caso que un `piel.tool(evento)`
|
|
43
|
+
* ingenuo habría etiquetado mal.
|
|
44
|
+
*/
|
|
45
|
+
export interface LineaDeTool {
|
|
46
|
+
texto: string;
|
|
47
|
+
nombre: string;
|
|
48
|
+
/** Presente solo en la línea de un error, que nunca se colapsa. */
|
|
49
|
+
error?: string;
|
|
50
|
+
/** El origen de la RACHA, que es uno solo: dos orígenes son dos rachas. */
|
|
51
|
+
origen?: OrigenDeLaTool;
|
|
52
|
+
/**
|
|
53
|
+
* El `detalle` del evento —la ruta o el patrón que eligió la lista blanca de
|
|
54
|
+
* `resumenDeTool.ts`— cuando la línea cuenta UNA llamada. Es lo mismo que ya va dentro de
|
|
55
|
+
* `texto`, como DATO: quien pinta lo necesita aparte para poner el verbo a su manera sin
|
|
56
|
+
* re-parsear la frase. Ausente = la tool no tiene detalle en la lista blanca.
|
|
57
|
+
*/
|
|
58
|
+
blanco?: string;
|
|
59
|
+
/** En el CIERRE de una racha: cuántas llamadas cuenta (≥ 2). */
|
|
60
|
+
veces?: number;
|
|
61
|
+
/** En el cierre: los blancos DISTINTOS de la racha, los tres primeros (los de `listaDe`). */
|
|
62
|
+
blancos?: string[];
|
|
63
|
+
/** En el cierre: cuántos blancos distintos más hubo, aparte de `blancos`. */
|
|
64
|
+
masBlancos?: number;
|
|
65
|
+
}
|
|
66
|
+
export declare class Colapsador {
|
|
67
|
+
private nombre;
|
|
68
|
+
private origen;
|
|
69
|
+
private cuenta;
|
|
70
|
+
private detalles;
|
|
71
|
+
/** Las líneas que toca escribir por este evento, EN ORDEN. 0, 1 o 2. */
|
|
72
|
+
lineas(evento: EventoTool): LineaDeTool[];
|
|
73
|
+
/** La cuenta de la última racha. Se llama al terminar el turno, incluso si reventó. */
|
|
74
|
+
cierre(): LineaDeTool | null;
|
|
75
|
+
private cerrarRacha;
|
|
76
|
+
private reiniciar;
|
|
77
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El NÚCLEO DE TRABAJO: lo fundamental que se midió sobre apps reales, en el prompt de sistema de quien
|
|
3
|
+
* ESCRIBE el proyecto o CONDUCE el aparato (IXCODE-18).
|
|
4
|
+
*
|
|
5
|
+
* ## Por qué existe, medido
|
|
6
|
+
*
|
|
7
|
+
* Nueve pasadas de una calculadora hecha por los agentes, y lo mismo se perdía una y otra vez: un display
|
|
8
|
+
* que no se repintaba vivió siete pasadas, un comentario con `--` tumbó la app, `elevation` recortaba las
|
|
9
|
+
* teclas y `getText` daba por bueno lo que no se veía. Cada hallazgo estaba en una skill, en un informe o
|
|
10
|
+
* en la cabeza de una sesión que ya no existía; **el modelo no abre la skill que no sabe que necesita**
|
|
11
|
+
* (medido: cargaba unas referencias y se saltaba justo la de la regla). Lo que tiene que cumplirse va donde el
|
|
12
|
+
* modelo mira SIEMPRE: el prompt de sistema. Cuesta tokens en cada llamada —por eso el tope duro de líneas y
|
|
13
|
+
* por eso solo lo recibe quien escribe o conduce—, y la caché absorbe casi todo.
|
|
14
|
+
*
|
|
15
|
+
* ## Qué entra y qué no
|
|
16
|
+
*
|
|
17
|
+
* Entra lo que (1) falla EN SILENCIO —`validate` en verde y la app rota—, (2) se midió y no se deduce de la
|
|
18
|
+
* documentación, o (3) es una disciplina de verificación que se saltó. No entra lo que ya dice un mensaje de
|
|
19
|
+
* error, ni lo que es de UN encargo (eso va en su plan: `## Hallazgos`), ni lo que cambia con la versión de
|
|
20
|
+
* XOne sin medirse otra vez: cada regla lleva su medida en `docs/DECISIONES.md`.
|
|
21
|
+
*
|
|
22
|
+
* **El encabezado entero —`REGLAS_XONE` más esto— tiene un tope de `TOPE_DE_LINEAS_DEL_ENCABEZADO`**, y un
|
|
23
|
+
* test lo vigila: un núcleo que crece sin freno acaba diluyendo justo lo que quería asegurar.
|
|
24
|
+
*/
|
|
25
|
+
export declare const TOPE_DE_LINEAS_DEL_ENCABEZADO = 100;
|
|
26
|
+
export declare const NUCLEO_XONE: string;
|
|
27
|
+
export declare function nucleoXoneExterno(nucleo?: string): string;
|
|
28
|
+
export declare const NUCLEO_XONE_EXTERNO: string;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El PANORAMA: lo que ve el móvil de todo el anfitrión a la vez (consolas abiertas y tareas en background).
|
|
3
|
+
* Puro: compone a partir de datos ya reducidos (sin raíces, sin rutas de la máquina). Quien lo llama pone los ids
|
|
4
|
+
* OPACOS de consola y los nombres; aquí solo se ordena, se recorta y se cuenta. Spec: `docs/superpowers/specs/2026-10-13-panel-movil-design.md`.
|
|
5
|
+
*/
|
|
6
|
+
import type { LineaDeDiff } from "./diff.js";
|
|
7
|
+
import type { PendienteDeAprobacion } from "./events.js";
|
|
8
|
+
/** Cuántas tareas terminadas viajan (las más recientes por `acabada`). */
|
|
9
|
+
export declare const TAREAS_TERMINADAS_EN_PANORAMA = 5;
|
|
10
|
+
export declare const CARACTERES_DE_TITULO = 120;
|
|
11
|
+
export declare const CARACTERES_DE_MOTIVO = 400;
|
|
12
|
+
/** Líneas de diff por fichero; pasadas esas, se recorta y se marca `recortada`. */
|
|
13
|
+
export declare const LINEAS_DE_DIFF_EN_PANORAMA = 200;
|
|
14
|
+
/** El feedback que el móvil manda a una tarea se recorta a esto. */
|
|
15
|
+
export declare const CARACTERES_DE_FEEDBACK = 4000;
|
|
16
|
+
/** Como mucho una vez por este intervalo se manda un panorama nuevo a los móviles. */
|
|
17
|
+
export declare const INTERVALO_DE_PANORAMA_MS = 1000;
|
|
18
|
+
export type EstadoDeConsola = "trabajando" | "esperando-aprobacion" | "esperando-respuesta" | "parada";
|
|
19
|
+
export type EstadoDeTareaEnPanorama = "nuevo" | "en-proceso" | "requiere-atencion" | "terminada";
|
|
20
|
+
export interface AprobacionDePanorama {
|
|
21
|
+
pendientes: PendienteDeAprobacion[];
|
|
22
|
+
ficheros: Record<string, string>;
|
|
23
|
+
diffs: Record<string, LineaDeDiff[]>;
|
|
24
|
+
recortada?: true;
|
|
25
|
+
}
|
|
26
|
+
export interface ConsolaDePanorama {
|
|
27
|
+
id: string;
|
|
28
|
+
proyecto: string;
|
|
29
|
+
sesion?: string;
|
|
30
|
+
foco: boolean;
|
|
31
|
+
estado: EstadoDeConsola;
|
|
32
|
+
ultimaActividad?: string;
|
|
33
|
+
aprobacion?: AprobacionDePanorama;
|
|
34
|
+
}
|
|
35
|
+
export interface TareaDePanorama {
|
|
36
|
+
id: string;
|
|
37
|
+
titulo: string;
|
|
38
|
+
proyecto: string;
|
|
39
|
+
estado: EstadoDeTareaEnPanorama;
|
|
40
|
+
tras?: string;
|
|
41
|
+
motivo?: string;
|
|
42
|
+
creada: string;
|
|
43
|
+
acabada?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface Panorama {
|
|
46
|
+
clase: "panorama";
|
|
47
|
+
consolas: ConsolaDePanorama[];
|
|
48
|
+
tareas: TareaDePanorama[];
|
|
49
|
+
esperando: number;
|
|
50
|
+
}
|
|
51
|
+
export interface EntradaDePanorama {
|
|
52
|
+
consolas: Array<{
|
|
53
|
+
id: string;
|
|
54
|
+
proyecto: string;
|
|
55
|
+
sesion?: string;
|
|
56
|
+
foco: boolean;
|
|
57
|
+
turnoEnVuelo: boolean;
|
|
58
|
+
aprobacion?: {
|
|
59
|
+
pendientes: PendienteDeAprobacion[];
|
|
60
|
+
ficheros: Record<string, string>;
|
|
61
|
+
diffs: Record<string, LineaDeDiff[]>;
|
|
62
|
+
};
|
|
63
|
+
preguntaPendiente: boolean;
|
|
64
|
+
ultimaActividad?: string;
|
|
65
|
+
}>;
|
|
66
|
+
tareas: TareaDePanorama[];
|
|
67
|
+
}
|
|
68
|
+
export declare function componerPanorama(entrada: EntradaDePanorama): Panorama;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El paquete de SOPORTE: lo que se exporta desde la pestaña Soporte para que alguien analice
|
|
3
|
+
* qué hizo un chat, una tarea o el proyecto entero. Las REGLAS, puras; el disco y el zip
|
|
4
|
+
* viven en `agent/soporte/paqueteEnDisco.ts`.
|
|
5
|
+
*
|
|
6
|
+
* ## Qué entra y qué no
|
|
7
|
+
*
|
|
8
|
+
* Es una LISTA NEGRA de lo que nunca viaja sobre lo que ya se recorre (el proyecto y su
|
|
9
|
+
* `.xonecode/`), y no una lista blanca de extensiones, porque la pregunta de soporte es
|
|
10
|
+
* «qué había»: una lista blanca dejaría fuera justo el fichero raro que explica el fallo.
|
|
11
|
+
* Lo que nunca viaja es lo que da acceso a algo —claves, tokens, el `.env`— y el historial
|
|
12
|
+
* de git, que el usuario no pidió (se decidió con él).
|
|
13
|
+
*
|
|
14
|
+
* Los secretos de xonecode viven en la CASA del usuario, no en el proyecto, así que aquí no
|
|
15
|
+
* deberían aparecer nunca. Los nombres se niegan igual: es la segunda llave, por si un día
|
|
16
|
+
* alguien copia uno donde no toca.
|
|
17
|
+
*
|
|
18
|
+
* ## Qué líneas de traza son de UN chat
|
|
19
|
+
*
|
|
20
|
+
* Solo las que traen su `chat`. **No se reparte nada por fechas**: las sesiones se reabren,
|
|
21
|
+
* así que la ventana `creada`→`ultimoTurno` de dos chats se solapa y la mayoría de las líneas
|
|
22
|
+
* caerían en el chat equivocado. Lo que no lleva `chat` —líneas anteriores a que existiera,
|
|
23
|
+
* y `traza-errores.jsonl`, cuyo sumidero es de todo el proceso— va solo en el paquete del
|
|
24
|
+
* PROYECTO, y el manifiesto dice por qué.
|
|
25
|
+
*
|
|
26
|
+
* ## Rutas de la máquina
|
|
27
|
+
*
|
|
28
|
+
* Los mensajes del hilo y el `detalle` de un comando de shell pueden llevar rutas absolutas.
|
|
29
|
+
* Es una excepción DECLARADA a `sinRutas`: esa regla es del cable, y esto es un fichero que la
|
|
30
|
+
* persona descarga y entrega a mano. El manifiesto lo avisa.
|
|
31
|
+
*/
|
|
32
|
+
export type TipoDePaquete = "proyecto" | "chat" | "tarea";
|
|
33
|
+
/** Lo que admite un paquete, sumado en disco. Lo que no cabe se OMITE y se dice. */
|
|
34
|
+
export declare const TOPE_DEL_PAQUETE_DE_SOPORTE: number;
|
|
35
|
+
/** Carpetas que no viajan, estén donde estén. */
|
|
36
|
+
export declare const CARPETAS_QUE_NO_VIAJAN: ReadonlySet<string>;
|
|
37
|
+
/** Ficheros de credenciales de xonecode. Viven en la casa; negarlos aquí es la segunda llave. */
|
|
38
|
+
export declare const SECRETOS_QUE_NO_VIAJAN: ReadonlySet<string>;
|
|
39
|
+
/**
|
|
40
|
+
* El checkpoint no se recorre como un fichero más: con la conexión abierta, copiar sus bytes
|
|
41
|
+
* da una base a medio escribir. Se copia aparte con la copia en caliente de SQLite, y sus
|
|
42
|
+
* auxiliares (`-wal`, `-shm`) no viajan porque la copia ya los lleva dentro.
|
|
43
|
+
*/
|
|
44
|
+
export declare const NOMBRE_DEL_CHECKPOINT = "checkpoint.sqlite";
|
|
45
|
+
/**
|
|
46
|
+
* ¿Viaja esta ruta en un paquete de soporte? `relativa` es POSIX, relativa a la raíz de lo
|
|
47
|
+
* que se recorre, sin barra delante.
|
|
48
|
+
*/
|
|
49
|
+
export declare function viajaEnSoporte(relativa: string): boolean;
|
|
50
|
+
/** Las líneas de una traza que son de ESTE chat: las que traen su id. Nada por fechas. */
|
|
51
|
+
export declare function lineasDelChat<T extends {
|
|
52
|
+
chat?: unknown;
|
|
53
|
+
}>(lineas: readonly T[], chat: string): T[];
|
|
54
|
+
/** Cuántas líneas NO llevan chat: se dice en el manifiesto del proyecto. */
|
|
55
|
+
export declare function lineasSinChat(lineas: readonly {
|
|
56
|
+
chat?: unknown;
|
|
57
|
+
}[]): number;
|
|
58
|
+
/**
|
|
59
|
+
* El nombre del zip lo DERIVA el código, nunca llega del cliente: va en una cabecera
|
|
60
|
+
* `Content-Disposition` y un nombre con comillas o barras sería otra cosa.
|
|
61
|
+
*/
|
|
62
|
+
export declare function nombreDelPaquete(tipo: TipoDePaquete, nombre: string, ahora: Date): string;
|
|
63
|
+
export interface Candidato {
|
|
64
|
+
/** La ruta DENTRO del zip. */
|
|
65
|
+
ruta: string;
|
|
66
|
+
bytes: number;
|
|
67
|
+
}
|
|
68
|
+
export interface Omitido {
|
|
69
|
+
ruta: string;
|
|
70
|
+
motivo: string;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Lo que cabe bajo el tope. Si no cabe todo, se omite empezando por lo MÁS GRANDE: una imagen
|
|
74
|
+
* de veinte megas explica menos que cien ficheros de texto, y soltar lo grande primero deja
|
|
75
|
+
* dentro el mayor número de ficheros. Lo omitido se DICE en el manifiesto, con su tamaño.
|
|
76
|
+
*/
|
|
77
|
+
export declare function repartirPorTope<T extends Candidato>(candidatos: readonly T[], tope: number): {
|
|
78
|
+
entran: T[];
|
|
79
|
+
omitidos: Omitido[];
|
|
80
|
+
};
|
|
81
|
+
export interface ManifiestoDeSoporte {
|
|
82
|
+
v: 1;
|
|
83
|
+
tipo: TipoDePaquete;
|
|
84
|
+
/** Versión de xonecode que lo generó, si se sabe. */
|
|
85
|
+
version?: string;
|
|
86
|
+
generado: string;
|
|
87
|
+
proyecto: string;
|
|
88
|
+
/** El id del chat o de la tarea exportados. */
|
|
89
|
+
id?: string;
|
|
90
|
+
motor?: string;
|
|
91
|
+
/** Había un turno o una tarea EN VUELO al exportar: la foto puede estar a medias. */
|
|
92
|
+
enVuelo?: boolean;
|
|
93
|
+
incluidos: string[];
|
|
94
|
+
omitidos: Omitido[];
|
|
95
|
+
/** Lo que el paquete NO puede afirmar, dicho en una frase cada uno. */
|
|
96
|
+
avisos: string[];
|
|
97
|
+
}
|
|
98
|
+
export declare const AVISO_DE_RUTAS = "Los mensajes del hilo y los comandos de shell pueden llevar rutas absolutas de la m\u00E1quina de quien exporta.";
|
|
99
|
+
export declare const AVISO_DE_TRAZA_SIN_CHAT = "Las l\u00EDneas de traza sin id de chat (anteriores a que existiera, y toda traza-errores.jsonl) no se pueden atribuir a un chat: solo van en el paquete del proyecto.";
|
|
100
|
+
export declare const AVISO_EN_VUELO = "Hab\u00EDa un turno o una tarea en marcha al exportar: lo \u00FAltimo puede estar a medias.";
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* De un diff de git a una lista de operaciones de subida.
|
|
3
|
+
*
|
|
4
|
+
* Es PURA a propósito: aquí vive la regla que evita una pérdida de datos, y una regla así
|
|
5
|
+
* no puede depender de que el disco o la red se porten bien para poder probarse.
|
|
6
|
+
*/
|
|
7
|
+
import type { OperacionDeSubida, OperacionOmitida } from "./cloudstudio.js";
|
|
8
|
+
/** Medido: `studio_upload_file` en modo base64 admite hasta 5 MB decodificados. */
|
|
9
|
+
export declare const TOPE_BASE64: number;
|
|
10
|
+
/**
|
|
11
|
+
* Medido contra el servidor: `studio_get_file` (y por tanto `studio_edit_file`) solo
|
|
12
|
+
* trata estas extensiones como texto. Todo lo demás es binario y va por `upload_file`.
|
|
13
|
+
*/
|
|
14
|
+
export declare const EXTENSIONES_DE_TEXTO: Set<string>;
|
|
15
|
+
export interface CambioLocal {
|
|
16
|
+
clase: "nuevo" | "modificado" | "borrado";
|
|
17
|
+
ruta: string;
|
|
18
|
+
}
|
|
19
|
+
export interface EntradaDelPlan {
|
|
20
|
+
cambios: CambioLocal[];
|
|
21
|
+
/** Lo que la descarga trajo DE VERDAD. El candado se apoya en esto. */
|
|
22
|
+
descargados: ReadonlySet<string>;
|
|
23
|
+
/** Tamaño local de cada ruta; sin él, un binario no se puede subir. */
|
|
24
|
+
tamanos: ReadonlyMap<string, number>;
|
|
25
|
+
/** Los `.xne` presentes, para reconocer las vistas aplanadas. */
|
|
26
|
+
fuentesXne?: ReadonlySet<string>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* La extensión de una ruta POSIX, en minúsculas, o `""` si no tiene.
|
|
30
|
+
*
|
|
31
|
+
* Dos trampas que la versión ingenua (`ruta.lastIndexOf(".")` sobre la ruta entera) no
|
|
32
|
+
* veía, y que se exporta para que no vuelva a haber dos copias divergentes de esta regla:
|
|
33
|
+
*
|
|
34
|
+
* - **Un punto en la posición 0 no es una extensión**: es un fichero OCULTO sin ella.
|
|
35
|
+
* `".env".lastIndexOf(".")` es 0, así que devolvía `".env"` como si `.env` fuera un tipo
|
|
36
|
+
* de fichero. No está en la lista de texto, con lo cual `.env` se clasificaba como
|
|
37
|
+
* BINARIO y podía subirse al proyecto del cliente entero.
|
|
38
|
+
* - **El punto puede estar en un DIRECTORIO**: en `iconos.v2/logo` el último punto está en
|
|
39
|
+
* el directorio, y devolvía `".v2/logo"`. Se mira solo el último segmento.
|
|
40
|
+
*/
|
|
41
|
+
export declare const extensionDe: (ruta: string) => string;
|
|
42
|
+
/**
|
|
43
|
+
* El plan: lo que SE PUEDE hacer y lo que NO, por separado.
|
|
44
|
+
*
|
|
45
|
+
* Separarlos es el camino de escape de la subida. Antes, una operación imposible (un
|
|
46
|
+
* binario de más de 5 MB, el borrado de un binario) se quedaba en el plan, fallaba contra
|
|
47
|
+
* el servidor, y como la ref solo avanza con `fallos` vacío, el siguiente `/sync`
|
|
48
|
+
* recalculaba el MISMO plan y volvía a fallar: `/sync subir` quedaba inútil para siempre
|
|
49
|
+
* a partir de la primera imagen borrada. Ahora sale del plan, se declara, y la ref avanza
|
|
50
|
+
* con el resto.
|
|
51
|
+
*/
|
|
52
|
+
export interface Plan {
|
|
53
|
+
operaciones: OperacionDeSubida[];
|
|
54
|
+
omitidas: OperacionOmitida[];
|
|
55
|
+
}
|
|
56
|
+
export declare function planDeSubida(entrada: EntradaDelPlan): Plan;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/** La ruta virtual. La barra final es obligatoria: `CompositeBackend` la retira al delegar. */
|
|
2
|
+
export declare const RUTA_PLANES = "/planes/";
|
|
3
|
+
/** Dónde caen de verdad, relativo a la raíz del proyecto. */
|
|
4
|
+
export declare const CARPETA_DE_PLANES = ".xonecode/planes";
|
|
5
|
+
/**
|
|
6
|
+
* **Un plan es una CARPETA, no un fichero**, porque dentro de una sesión puede haber varios y
|
|
7
|
+
* porque un plan son tres cosas que se acompañan (`PLAN.md`, `TASKS.md`, `CONTEXT.md`) más sus
|
|
8
|
+
* ADRs. Con ficheros sueltos, dos planes a la vez se pisan.
|
|
9
|
+
*/
|
|
10
|
+
export declare const FICHEROS_DE_UN_PLAN: readonly ["PLAN.md", "TASKS.md", "CONTEXT.md"];
|
|
11
|
+
/**
|
|
12
|
+
* Por qué un nombre de plan no vale, o `undefined` si vale.
|
|
13
|
+
*
|
|
14
|
+
* **La MISMA regla que la de un subagente o una skill**, y a propósito: el nombre se convierte
|
|
15
|
+
* en un segmento de ruta, y tres reglas distintas para lo mismo son tres sitios donde discrepar
|
|
16
|
+
* sobre qué es un nombre seguro.
|
|
17
|
+
*/
|
|
18
|
+
export declare function motivoDePlanInaceptable(nombre: string): string | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* ¿Es una ruta de plan bien formada? Lista BLANCA de forma, no un `startsWith`.
|
|
21
|
+
*
|
|
22
|
+
* Tiene que ser `/planes/<slug>/<algo>`: con el slug validado y sin salirse por un `..`, un
|
|
23
|
+
* `\` ni una barra de más. Es la misma clase de criba que `esRutaDeArtefacto`, y existe por lo
|
|
24
|
+
* mismo: lo que el modelo escribe es texto, y de ahí sale una ruta del disco.
|
|
25
|
+
*/
|
|
26
|
+
export declare function esRutaDePlan(ruta: string | undefined): boolean;
|
|
27
|
+
/** La carpeta de un plan, tal como la ve el agente. */
|
|
28
|
+
export declare function rutaDelPlan(nombre: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* Dónde cae un plan cuando se PUBLICA, y por qué publicar es un acto aparte.
|
|
31
|
+
*
|
|
32
|
+
* `.xonecode/planes/` es estado de trabajo: no entra en git, no sube a CloudStudio y no lo
|
|
33
|
+
* ve nadie más que la copia que lo escribió. Eso es lo que hace barato trabajarlo —el que
|
|
34
|
+
* desarrolla marca una tarea como hecha sin sacar un modal, y eso está medido: cuando salía,
|
|
35
|
+
* se rechazaba y el plan se quedaba viejo en silencio; en una tarea de fondo no lo pulsa
|
|
36
|
+
* nadie—. El precio es que el plan no viaja: si se borra la copia local, se fue con ella.
|
|
37
|
+
*
|
|
38
|
+
* Así que compartirlo es un PASO EXPLÍCITO y no un efecto. Se copia a `doc/planes/<nombre>`,
|
|
39
|
+
* que sí es del proyecto: entra en el commit del turno y sube a Studio con lo demás. La
|
|
40
|
+
* decisión de publicar se ve, en vez de ocurrir sola la primera vez que alguien planifica.
|
|
41
|
+
*
|
|
42
|
+
* **Y lo hace el HARNESS, no el agente** — el mismo reparto que `/pdf`: la autorización es
|
|
43
|
+
* teclear el comando, el destino lo DERIVA el código del nombre, y no hay prompt que pueda
|
|
44
|
+
* torcerlo hacia otra carpeta.
|
|
45
|
+
*/
|
|
46
|
+
export declare const CARPETA_PUBLICA_DE_PLANES = "doc/planes";
|
|
47
|
+
/**
|
|
48
|
+
* La carpeta publicada de un plan, relativa a la raíz del proyecto.
|
|
49
|
+
*
|
|
50
|
+
* Devuelve `undefined` si el nombre no vale, en vez de componer una ruta con él: de aquí sale
|
|
51
|
+
* una ruta del disco, y es la misma criba que `esRutaDePlan` aplica del otro lado.
|
|
52
|
+
*/
|
|
53
|
+
export declare function rutaPublicaDelPlan(nombre: string): string | undefined;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cuándo adelgazar el `checkpoint.sqlite` de un proyecto, y qué se queda dentro.
|
|
3
|
+
*
|
|
4
|
+
* **El problema, medido**: un fichero de un proyecto real llegó a 918 MB con UNA sesión
|
|
5
|
+
* dentro. No es basura acumulada — es que un checkpoint guarda la lista de mensajes ENTERA y
|
|
6
|
+
* se escribe uno por paso del grafo, así que el coste crece con el CUADRADO de la
|
|
7
|
+
* conversación: el primer checkpoint de esa sesión ocupaba 3 KB y el mayor 3.885 KB, con
|
|
8
|
+
* 2.794 pasos. Y el 70 % no era del hilo: eran los 21 espacios `tools:*` de los subagentes,
|
|
9
|
+
* cada delegación con su propia cadena.
|
|
10
|
+
*
|
|
11
|
+
* **Y no hay nada oficial que adoptar.** Comprobado contra el paquete instalado, no contra un
|
|
12
|
+
* blog: `BaseCheckpointSaver` declara cinco métodos —`getTuple`, `list`, `put`, `putWrites`,
|
|
13
|
+
* `deleteThread`— y ninguno poda; no existe `prune()` en JavaScript, y el único `ttl` del
|
|
14
|
+
* paquete es el de `InMemoryCache`, que es la caché de un NODO y otra cosa. La doc de
|
|
15
|
+
* persistencia reconoce el problema («prune old checkpoints periodically») sin dar una sola
|
|
16
|
+
* API ni decir qué filas hacen falta para reanudar, y el issue de langgraph.js que pregunta
|
|
17
|
+
* exactamente esto sigue abierto y sin contestar. Como el `SqliteSaver` es NUESTRO
|
|
18
|
+
* (`vendor/sqliteSaver.ts`), el SQL lo escribimos aquí y no se espera a nadie.
|
|
19
|
+
*
|
|
20
|
+
* Este módulo es la REGLA y no toca disco: decide SI se poda. El SQL vive en
|
|
21
|
+
* `agent/sesiones/checkpointer.ts`, que es quien ya tiene la conexión.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* A partir de cuánto estorba, en bytes.
|
|
25
|
+
*
|
|
26
|
+
* **Dimensionada con lo medido, no elegida**: una sesión de 2.794 pasos YA PODADA ocupa
|
|
27
|
+
* ~21 MB, así que 256 MB deja un orden de magnitud de margen y esto no puede cortar por lo
|
|
28
|
+
* sano en un proyecto que se porta bien. Es un TECHO, no un objetivo: un proyecto que nunca
|
|
29
|
+
* lo alcance no ejecuta la poda jamás.
|
|
30
|
+
*
|
|
31
|
+
* **Y la histéresis sale gratis de aquí**: podar deja el fichero en decenas de MB, o sea muy
|
|
32
|
+
* por debajo de la cota, así que no puede reengancharse turno tras turno. El propio tamaño es
|
|
33
|
+
* el estado, y por eso esto no necesita un fichero de marca ni recordar cuándo se podó — que
|
|
34
|
+
* es justo el trasto que se acumula en este repo.
|
|
35
|
+
*/
|
|
36
|
+
export declare const COTA_DE_PODA_BYTES: number;
|
|
37
|
+
export interface SituacionDeLaBase {
|
|
38
|
+
/** Lo que ocupa el fichero AHORA. */
|
|
39
|
+
bytes: number;
|
|
40
|
+
/**
|
|
41
|
+
* Si hay algo del grafo a medias: un subagente parado en una aprobación, una tarea
|
|
42
|
+
* pendiente. Ausente es «no se pudo mirar».
|
|
43
|
+
*/
|
|
44
|
+
hayPendientes?: boolean;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* ¿Toca podar?
|
|
48
|
+
*
|
|
49
|
+
* Dos condiciones, y la segunda es la que hace esto seguro:
|
|
50
|
+
*
|
|
51
|
+
* - **Pasa de la cota.** Si no, no hay nada que arreglar y mirar el tamaño cuesta un
|
|
52
|
+
* `statSync`, o sea nada.
|
|
53
|
+
* - **No hay NADA pendiente.** Un subagente parado en una aprobación vive en su espacio
|
|
54
|
+
* `tools:*`, y podarlo a media aprobación se lleva la reanudación por delante. Es un
|
|
55
|
+
* predicado sobre datos que la base ya tiene, no una heurística.
|
|
56
|
+
*
|
|
57
|
+
* **Fail-closed: lo que no se sabe NO se poda** (`hayPendientes` ausente). La dirección
|
|
58
|
+
* segura aquí es la que no borra: un fichero grande es un incordio, y una sesión que no
|
|
59
|
+
* reanuda es trabajo perdido. La misma regla que «un verificador que no corrió no es verde».
|
|
60
|
+
*/
|
|
61
|
+
export declare function debePodar(situacion: SituacionDeLaBase): boolean;
|
|
62
|
+
export interface ResultadoDePoda {
|
|
63
|
+
antes: number;
|
|
64
|
+
despues: number;
|
|
65
|
+
checkpointsBorrados: number;
|
|
66
|
+
writesBorrados: number;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Lo que se cuenta de una poda, y **solo cuando cambió algo de verdad**.
|
|
70
|
+
*
|
|
71
|
+
* Un mantenimiento que anuncia su propia rutina es un aviso que enseña a ignorar los avisos,
|
|
72
|
+
* que es lo que la bitácora existe para evitar: si no se recuperó nada, esto se calla. Y no
|
|
73
|
+
* lleva la RUTA del fichero, porque esta línea puede viajar por el cable (`sinRutas`).
|
|
74
|
+
*/
|
|
75
|
+
export declare function resumenDePoda(r: ResultadoDePoda): string | undefined;
|