xonecode 0.38.44 → 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/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/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/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/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,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El vocabulario de color de la TUI: las MISMAS claves semánticas que `cli/tema.ts`
|
|
3
|
+
* (`exito`, `grave`, `mudo`…), traducidas a la paleta de la TUI. La piel stdio pide
|
|
4
|
+
* ANSI a tema.ts y la TUI pide hex a aquí — un solo significado, dos renderizadores.
|
|
5
|
+
* Paleta dark-first con los azules de XOne (medidos en el CSS de xone.es: navy #00396f,
|
|
6
|
+
* azul #47abd6, cian #2ac4ea).
|
|
7
|
+
*
|
|
8
|
+
* Los tokens de CONTROL de tema.ts (`reset`, `borrar`, `limpiarLinea`, `arriba`)
|
|
9
|
+
* se reflejan como no-ops: Ink compone spans y gestiona el cursor, así que aquí no
|
|
10
|
+
* hay nada que emitir — pero la clave existe, para que el test de espejo que recorre
|
|
11
|
+
* `Object.keys(crearTema(true))` pruebe que ningún token nuevo de tema.ts se olvida.
|
|
12
|
+
*/
|
|
13
|
+
import type { IdTema } from "../tema.js";
|
|
14
|
+
export type TemaInk = {
|
|
15
|
+
texto: string;
|
|
16
|
+
mudo: string;
|
|
17
|
+
negrita: string;
|
|
18
|
+
exito: string;
|
|
19
|
+
aviso: string;
|
|
20
|
+
grave: string;
|
|
21
|
+
anadido: string;
|
|
22
|
+
quitado: string;
|
|
23
|
+
/** El `▏` del cursor. El cian de xone.es (#2ac4ea), del mismo tono frío que `acento`. */
|
|
24
|
+
prompt: string;
|
|
25
|
+
/** No-op: Ink abre y cierra sus spans solos; un reset ANSI dentro de un span lo rompería. */
|
|
26
|
+
reset: string;
|
|
27
|
+
/** No-ops de control: el render de Ink repinta; ni borra líneas ni mueve el cursor. */
|
|
28
|
+
borrar: string;
|
|
29
|
+
limpiarLinea: string;
|
|
30
|
+
arriba: () => string;
|
|
31
|
+
/** El azul claro de xone.es: cabeceras de sidebar, viñetas, el ■ del fin, el logotipo. */
|
|
32
|
+
acento: string;
|
|
33
|
+
/** Reservado: token de maqueta SIN consumidor hoy — el test de espejo lo lista. */
|
|
34
|
+
borde: string;
|
|
35
|
+
/**
|
|
36
|
+
* El fondo de la tarjeta de la Entrada, pintado fila a fila en cada `Text` (Ink 5.2.1
|
|
37
|
+
* no da fondo a `Box`). El gris de OpenCode (`backgroundElement`, darkStep3) sobre su
|
|
38
|
+
* terminal `#0a0a0a`: un escalón visible, no un matiz.
|
|
39
|
+
*/
|
|
40
|
+
fondoInput: string;
|
|
41
|
+
/** Fondo casi negro para una petición pendiente: se aparta de la conversación activa. */
|
|
42
|
+
fondoCola: string;
|
|
43
|
+
/**
|
|
44
|
+
* Superficie de la sidebar: un azul pizarra separado del transcript para que el
|
|
45
|
+
* contexto se lea como panel, no como una continuación de la conversación.
|
|
46
|
+
*/
|
|
47
|
+
fondoSidebar: string;
|
|
48
|
+
/**
|
|
49
|
+
* El navy dominante de xone.es. SOLO para barras y bordes: como color de texto sobre
|
|
50
|
+
* un terminal oscuro es casi invisible, y un color de marca que no se lee no es marca.
|
|
51
|
+
*/
|
|
52
|
+
marca: string;
|
|
53
|
+
/**
|
|
54
|
+
* El único tono cálido de la paleta: la línea «+ fase: Ns» se distingue del texto mudo
|
|
55
|
+
* sin competir con el acento azul. No es color XOne; es un token de TUI declarado.
|
|
56
|
+
*/
|
|
57
|
+
fase: string;
|
|
58
|
+
/**
|
|
59
|
+
* Un gris por debajo de `mudo`: las líneas de herramientas son paisaje y tienen que
|
|
60
|
+
* leerse como tal, más apagadas que los avisos y que el detalle de una fase.
|
|
61
|
+
*/
|
|
62
|
+
tenue: string;
|
|
63
|
+
};
|
|
64
|
+
/** Identidad estable: los componentes importan este objeto y React se repinta al cambiar la ranura de vista. */
|
|
65
|
+
export declare const temaInk: TemaInk;
|
|
66
|
+
export declare function aplicarTemaInk(id: IdTema): void;
|
|
67
|
+
export declare function temaInkActivo(): IdTema;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import { crearStore, type Acto } from "./store.js";
|
|
3
|
+
import { type EstiloDeSegmento } from "../markdown.js";
|
|
4
|
+
import type { EmisorDeRueda } from "./raton.js";
|
|
5
|
+
type Store = ReturnType<typeof crearStore>;
|
|
6
|
+
/** Cuántos actos mueve una muesca de la rueda del ratón: menos que una página, más que uno. */
|
|
7
|
+
export declare const PASO_DE_RUEDA = 3;
|
|
8
|
+
/** Cuántas líneas de un grupo de herramientas se enseñan: las últimas. Medido con el usuario: 4. */
|
|
9
|
+
export declare const LINEAS_DE_HERRAMIENTAS = 4;
|
|
10
|
+
/**
|
|
11
|
+
* Los actos visibles: los ÚLTIMOS `altura`, subidos `desfase` hacia arriba.
|
|
12
|
+
*
|
|
13
|
+
* Pura y total: un desfase mayor que el contenido da una ventana VACÍA antes que
|
|
14
|
+
* repetir o inventar actos; el acotado lo hace `moverDesfase`.
|
|
15
|
+
*/
|
|
16
|
+
export declare function ventanaDe<T extends Acto>(actos: readonly T[], altura: number, desfase: number): T[];
|
|
17
|
+
/** El desfase tras moverse `delta` actos, acotado sin vaciar nunca el transcript. */
|
|
18
|
+
export declare function moverDesfase(desfase: number, total: number, delta: number): number;
|
|
19
|
+
/** El color de un segmento inline. Pura: los tests no ven color, y esta decisión sí se prueba. */
|
|
20
|
+
export declare function colorDeSegmento(estilo: EstiloDeSegmento): string | undefined;
|
|
21
|
+
export declare function Transcript({ store, altura, rueda, ancho, }: {
|
|
22
|
+
store: Store;
|
|
23
|
+
altura: number;
|
|
24
|
+
/** Las muescas de la rueda del ratón (+ arriba, − abajo), ya filtradas de stdin por `raton.ts`. */
|
|
25
|
+
rueda?: EmisorDeRueda;
|
|
26
|
+
/**
|
|
27
|
+
* Columnas que rellena de fondo la tarjeta de usuario — el MISMO ancho que la Entrada,
|
|
28
|
+
* que es quien lo mide (`App`). Con omisión (tests que no hablan de tarjetas), 80.
|
|
29
|
+
*/
|
|
30
|
+
ancho?: number;
|
|
31
|
+
}): ReactNode;
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SimuladorVerifier } from "../agent/turno/verificador.js";
|
|
2
|
+
import { type Escribir } from "./stdio.js";
|
|
3
|
+
/**
|
|
4
|
+
* Corre el verificador REAL sobre un proyecto y cuenta lo que encuentra.
|
|
5
|
+
*
|
|
6
|
+
* Sale con 1 si hay errores. Los avisos no tumban el comando: son de otra severidad y
|
|
7
|
+
* colapsarlos con los errores es una decisión de producto que nadie ha tomado.
|
|
8
|
+
*/
|
|
9
|
+
export declare function cmdVerify(ruta: string, escribir?: Escribir, verificador?: SimuladorVerifier): Promise<number>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { type Proveedor, type Eleccion } from "../core/modelos.js";
|
|
2
|
+
import type { Consola } from "./consola.js";
|
|
3
|
+
export interface ContextoDelAsistente {
|
|
4
|
+
/**
|
|
5
|
+
* El `origen` con el que resolvió el papel `trabajo` (`Eleccion["origen"]` de
|
|
6
|
+
* `core/modelos.ts`, no una cadena suelta): así un origen mal escrito en el sitio que
|
|
7
|
+
* llama a `asistenteDeModelo` es un error de compilación y no un asistente que nunca
|
|
8
|
+
* se ofrece — el bug mudo que este repo evita en todas partes.
|
|
9
|
+
*/
|
|
10
|
+
origenDeTrabajo: Eleccion["origen"];
|
|
11
|
+
/** Proveedores que ya tienen credencial guardada. */
|
|
12
|
+
hayCredencial?: (proveedor: Proveedor) => boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Devuelve la ruta donde quedó, igual que `agent/config/authEnDisco.ts#guardarCredencial`:
|
|
15
|
+
* si cancelar más adelante (en el paso de MODELO) deja la clave ya escrita, el aviso
|
|
16
|
+
* de cancelación tiene que poder decir, justo antes, QUÉ se guardó y DÓNDE — como ya
|
|
17
|
+
* hace `/provider` (`consola.ts`, «credencial de … guardada en …») — para que ese
|
|
18
|
+
* «cancelado» no dé a entender, en silencio, que no pasó nada.
|
|
19
|
+
*/
|
|
20
|
+
guardarCredencial?: (proveedor: Proveedor, clave: string) => {
|
|
21
|
+
ruta: string;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Pone la clave en el proceso SIN escribirla en disco
|
|
25
|
+
* (`agent/config/configEnDisco.ts#aplicarCredencialAlProceso`).
|
|
26
|
+
*
|
|
27
|
+
* Es lo que permite PROBARLA antes de guardarla: el catálogo la lee de `process.env`, así
|
|
28
|
+
* que sin esta costura el único orden posible era escribir y después preguntar — y una
|
|
29
|
+
* clave mal tecleada quedaba en `auth.json` para siempre, con el asistente confesando
|
|
30
|
+
* dónde la había dejado. Ausente = no se puede probar antes, y entonces se conserva el
|
|
31
|
+
* orden viejo (escribir y luego listar), que es peor pero no miente: lo dice.
|
|
32
|
+
*/
|
|
33
|
+
aplicarCredencial?: (proveedor: Proveedor, clave: string) => void;
|
|
34
|
+
/**
|
|
35
|
+
* `true` = cancelar no sale: se vuelve a preguntar mientras haya alguien conectado. Lo
|
|
36
|
+
* pide la consola web, donde este paso es una puerta y no una comodidad. Omitido
|
|
37
|
+
* (terminal) se conserva el trato de siempre: cancelar cancela.
|
|
38
|
+
*/
|
|
39
|
+
exigirEleccion?: boolean;
|
|
40
|
+
/** Un motivo para el PRIMER selector, de quien ya sabe por qué se está preguntando otra
|
|
41
|
+
* vez (una reconexión a mitad del alta, por ejemplo). */
|
|
42
|
+
aviso?: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Qué pasó, para que quien llama no tenga que adivinarlo mirando el disco.
|
|
46
|
+
*
|
|
47
|
+
* `sin-preguntar` no es un fallo: es que no había nada que preguntar (ya hay elección, o
|
|
48
|
+
* la piel no tiene selector). Quien usa esto como puerta —`web/servidor/arranque.ts`—
|
|
49
|
+
* necesita distinguirlo de `cancelado`, o dejaría fuera para siempre a quien no puede
|
|
50
|
+
* contestar.
|
|
51
|
+
*/
|
|
52
|
+
export type ResultadoDelAsistente = "elegido" | "cancelado" | "sin-preguntar";
|
|
53
|
+
/**
|
|
54
|
+
* La opción «volver» de la lista de modelos. El id lleva una flecha a propósito: tiene que
|
|
55
|
+
* ser imposible de confundir con el id de un modelo del catálogo, que es lo único que
|
|
56
|
+
* comparte lista con ella. Va la ÚLTIMA de la lista, detrás de los modelos de verdad.
|
|
57
|
+
*/
|
|
58
|
+
export declare const ID_VOLVER = "\u2190proveedor";
|
|
59
|
+
export declare function asistenteDeModelo(consola: Consola, contexto: ContextoDelAsistente): Promise<ResultadoDelAsistente>;
|
|
@@ -0,0 +1,437 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Un acto del transcript: lo que ya no cambia y se pinta por su tipo.
|
|
3
|
+
*
|
|
4
|
+
* Vivía en `cli/tui/store.ts` porque solo lo usaba la TUI. Ahora lo usan DOS pieles —la
|
|
5
|
+
* TUI y la web—, y el servidor web no puede importar de `cli/tui/` sin romper la frontera
|
|
6
|
+
* de Ink. Así que baja a `core/`, que es donde vive lo que comparten las pieles.
|
|
7
|
+
*
|
|
8
|
+
* Ningún acto lleva argumentos de tool: `herramientas.lineas` son líneas YA resumidas por
|
|
9
|
+
* `agent/turno/resumenDeTool.ts`, con la lista blanca de campos por nombre de tool. Lo que se
|
|
10
|
+
* añadió después (`detalles`) tampoco los lleva: es el NOMBRE de la tool, su error y su blanco
|
|
11
|
+
* (la ruta o el patrón de esa misma lista blanca, que ya iba dentro de la línea), que el evento
|
|
12
|
+
* ya traía y el acto tiraba al componer la línea.
|
|
13
|
+
*/
|
|
14
|
+
import type { AccionDeSincronizacion } from "./cloudstudio.js";
|
|
15
|
+
import type { HallazgoDelTurno, OrigenDeLaTool } from "./events.js";
|
|
16
|
+
import type { TareaPropuesta } from "./repartoDeEncargo.js";
|
|
17
|
+
/**
|
|
18
|
+
* Lo que se sabe de la línea i-ésima de un acto de herramientas.
|
|
19
|
+
*
|
|
20
|
+
* Existe porque el evento `tool` lleva `{nombre, detalle, error}` y hasta ahora llegaba al
|
|
21
|
+
* cliente como UNA cadena ya compuesta: la piel podía pintarla, pero no distinguir una
|
|
22
|
+
* lectura de una escritura ni una llamada que falló de una que fue bien. No expone nada
|
|
23
|
+
* nuevo: el nombre de la tool y su blanco (la ruta o el patrón de la lista blanca) ya iban
|
|
24
|
+
* dentro del texto, y aquí van como dato.
|
|
25
|
+
*
|
|
26
|
+
* `nombre` es OPCIONAL y su ausencia significa algo: por `Piel.linea` no llegan solo tools.
|
|
27
|
+
* También pasan por ahí las líneas de plan, de tarea y de verificación (`core/turno.ts` las
|
|
28
|
+
* escribe con el mismo `escribirLinea`), y esas no son una llamada a nada. Marcarlas como
|
|
29
|
+
* tool sería la misma mentira que un contador inventado; sin nombre, quien pinte sabe que
|
|
30
|
+
* es un paso del motor y no una herramienta.
|
|
31
|
+
*/
|
|
32
|
+
export interface DetalleDeLinea {
|
|
33
|
+
/** La tool que produjo la línea. Ausente = la línea no vino de una tool. */
|
|
34
|
+
nombre?: string;
|
|
35
|
+
/** El motivo, si la llamada falló. Un error nunca se colapsa con la racha. */
|
|
36
|
+
error?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Quién la pidió: el orquestador o un especialista, y cuál si se sabe
|
|
39
|
+
* (`core/events.ts#OrigenDeLaTool`). Ausente = no consta, que es el caso de una sesión
|
|
40
|
+
* guardada antes de que existiera y de una línea que no es de ninguna tool.
|
|
41
|
+
*/
|
|
42
|
+
origen?: OrigenDeLaTool;
|
|
43
|
+
/**
|
|
44
|
+
* La ruta o el patrón de UNA llamada (`core/notify.ts#LineaDeTool.blanco`): el `detalle` de la
|
|
45
|
+
* lista blanca de `resumenDeTool.ts`, que YA iba dentro del texto de la línea. Viaja aparte para
|
|
46
|
+
* que la web pinte el verbo a su manera («Leyó /login.js») sin re-parsear la frase. No es una
|
|
47
|
+
* ruta nueva por el cable: es la misma, como dato. Ausente = no consta o la tool no tiene.
|
|
48
|
+
*/
|
|
49
|
+
blanco?: string;
|
|
50
|
+
/** En la línea que CIERRA una racha: cuántas llamadas cuenta (≥ 2). */
|
|
51
|
+
veces?: number;
|
|
52
|
+
/** En el cierre: los tres primeros blancos distintos de la racha. */
|
|
53
|
+
blancos?: string[];
|
|
54
|
+
/** En el cierre: cuántos blancos distintos más hubo. */
|
|
55
|
+
masBlancos?: number;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* La memoria del proyecto en un turno: que alguien PIDIÓ leerla, y quién si consta
|
|
59
|
+
* (`Piel.memoriaPedida?`). Presente = se pidió al menos una vez; `por` son los orígenes que
|
|
60
|
+
* constan, en orden y sin repetir, y puede ir VACÍO si ninguna petición traía origen. Ausente
|
|
61
|
+
* es «no se pidió» o «la sesión es anterior». Nunca lleva contenido de la memoria.
|
|
62
|
+
*/
|
|
63
|
+
export interface MemoriaDelTurno {
|
|
64
|
+
por: OrigenDeLaTool[];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* El veredicto del verificador sobre lo que el turno escribió, como DATO (`Piel.verificacion?`).
|
|
68
|
+
* Es el evento `verificacion` sin su `tipo`: fichero RELATIVO, línea, código y mensaje del
|
|
69
|
+
* simulador — nunca contenido de un fichero. Los `preexistentes` son solo una cifra porque el
|
|
70
|
+
* evento no los lista: atribuirlos al turno sería falso, y listarlos no se puede.
|
|
71
|
+
*/
|
|
72
|
+
export interface VeredictoDelTurno {
|
|
73
|
+
verde: boolean;
|
|
74
|
+
errores: number;
|
|
75
|
+
avisos: number;
|
|
76
|
+
hallazgos?: HallazgoDelTurno[];
|
|
77
|
+
preexistentes?: number;
|
|
78
|
+
}
|
|
79
|
+
export type Acto =
|
|
80
|
+
/** `adjuntos` (IXCODE-7): los NOMBRES que la persona anexó con este mensaje, si hubo alguno
|
|
81
|
+
* aceptable. Ausente ≠ vacío: un mensaje sin adjuntos no lleva el campo. */
|
|
82
|
+
/**
|
|
83
|
+
* `cuando` (IXCODE-24): la hora ISO en que la persona lo MANDÓ, en `usuario`, y en que la respuesta
|
|
84
|
+
* EMPEZÓ a llegar, en `asistente` —la de empezar y no la de acabar, como `sincronizacion`: una
|
|
85
|
+
* respuesta larga no se fecha por su último token—. Se estampa al crear el acto y viaja con él al
|
|
86
|
+
* disco, así que una sesión reabierta enseña la hora real y no la de reabrirla. Ausente en las
|
|
87
|
+
* sesiones de antes: «no consta», y entonces no se pinta.
|
|
88
|
+
*/
|
|
89
|
+
{
|
|
90
|
+
tipo: "usuario";
|
|
91
|
+
texto: string;
|
|
92
|
+
adjuntos?: string[];
|
|
93
|
+
cuando?: string;
|
|
94
|
+
} | {
|
|
95
|
+
tipo: "asistente";
|
|
96
|
+
texto: string;
|
|
97
|
+
cuando?: string;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* El razonamiento del modelo, si lo publica. Es un acto APARTE de `asistente` porque no
|
|
101
|
+
* es la respuesta: se pinta distinto (apagado, plegable) y quien lea el transcript tiene
|
|
102
|
+
* que poder distinguir lo que el modelo pensó de lo que dijo.
|
|
103
|
+
*/
|
|
104
|
+
| {
|
|
105
|
+
tipo: "razonamiento";
|
|
106
|
+
texto: string;
|
|
107
|
+
origen?: OrigenDeLaTool;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Las líneas de tool CONSECUTIVAS de un turno, en un solo acto: son paisaje, y el
|
|
111
|
+
* transcript enseña solo las últimas. Una línea del asistente (o de sistema) cierra el
|
|
112
|
+
* grupo; la siguiente tool abre otro.
|
|
113
|
+
*/
|
|
114
|
+
/**
|
|
115
|
+
* `detalles` corre EN PARALELO a `lineas`, misma longitud y mismo orden. Es opcional
|
|
116
|
+
* porque las sesiones guardadas antes de que existiera no lo traen: ausente significa
|
|
117
|
+
* «esta sesión es anterior», no «ninguna línea vino de una tool», y quien pinte tiene que
|
|
118
|
+
* poder distinguirlo — por eso no se rellena con un array de vacíos al leer del disco.
|
|
119
|
+
*/
|
|
120
|
+
| {
|
|
121
|
+
tipo: "herramientas";
|
|
122
|
+
lineas: string[];
|
|
123
|
+
detalles?: DetalleDeLinea[];
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Una línea del harness, no de la conversación: la respuesta a un comando, un aviso de
|
|
127
|
+
* honestidad, lo que se autorizó sin preguntar.
|
|
128
|
+
*
|
|
129
|
+
* **`clase` dice DE QUÉ es, y viaja con el acto en vez de deducirse del texto.** Es la
|
|
130
|
+
* misma regla que la FORMA de una pregunta (`DecisionDeConsola`): mirar el enunciado para
|
|
131
|
+
* decidir cómo se pinta es leer la sintaxis que la propia piel acaba de escribir, y aquí
|
|
132
|
+
* se rompería en las dos direcciones — un «hecho: …» que empieza igual que un aviso, y un
|
|
133
|
+
* aviso que mañana cambie de redacción.
|
|
134
|
+
*
|
|
135
|
+
* Solo dos clases, y las dos son lo que el HARNESS dice SOBRE el turno: `aviso` (la
|
|
136
|
+
* bitácora de honestidad, el juez, el crítico de pantalla) y `permiso` (una escritura que
|
|
137
|
+
* se aplicó sin preguntar porque la sesión está en autónomo). Esas se agrupan y se pliegan.
|
|
138
|
+
*
|
|
139
|
+
* **Ausente es lo de siempre, y eso es la decisión**: una respuesta a un comando —«hecho:
|
|
140
|
+
* cada escritura vuelve a pedir aprobación»— es el acuse de un botón que la persona acaba
|
|
141
|
+
* de pulsar, y plegarlo sería no contestarle. Sigue suelta y a la vista, como las sesiones
|
|
142
|
+
* guardadas antes de que este campo existiera.
|
|
143
|
+
*/
|
|
144
|
+
| {
|
|
145
|
+
tipo: "sistema";
|
|
146
|
+
texto: string;
|
|
147
|
+
clase?: "aviso" | "permiso" | "resumen";
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Un artefacto que el agente dejó escrito: un diagrama, un panel, una captura
|
|
151
|
+
* (`core/artefactos.ts`). Es un acto propio y no una línea de `herramientas` porque es lo
|
|
152
|
+
* único del turno que se escribió SIN pasar por la aprobación humana —no es del proyecto—
|
|
153
|
+
* y eso hay que poder decirlo, y porque desde él se abre el fichero.
|
|
154
|
+
*
|
|
155
|
+
* Lleva metadatos y NUNCA el contenido: por aquí pasa lo que se guarda en el `.jsonl` y
|
|
156
|
+
* viaja por el cable, y un panel de `artifacts-builder` son cientos de kilobytes.
|
|
157
|
+
*/
|
|
158
|
+
| {
|
|
159
|
+
tipo: "artefacto";
|
|
160
|
+
ruta: string;
|
|
161
|
+
nombre: string;
|
|
162
|
+
bytes: number;
|
|
163
|
+
mime?: string;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Una PREGUNTA del agente con opciones (`events.ts#consulta`). Se guarda en el `.jsonl`
|
|
167
|
+
* como cualquier acto, y eso es lo que hace que la tarjeta VUELVA al reabrir una sesión
|
|
168
|
+
* que se quedó esperando respuesta: sigue pendiente mientras no haya un acto de usuario
|
|
169
|
+
* detrás. El texto de la pregunta no se repite aquí como mensaje: ya está en el del
|
|
170
|
+
* asistente.
|
|
171
|
+
*/
|
|
172
|
+
| {
|
|
173
|
+
tipo: "consulta";
|
|
174
|
+
pregunta: string;
|
|
175
|
+
opciones: string[];
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Una pregunta que el harness contestó solo en modo autónomo (`events.ts#consulta-autonoma`): la misma tarjeta que una
|
|
179
|
+
* `consulta` contestada, a la vista en el hilo y no plegada entre los avisos, con lo que se eligió marcado. Nunca está
|
|
180
|
+
* pendiente: no espera a nadie.
|
|
181
|
+
*/
|
|
182
|
+
| {
|
|
183
|
+
tipo: "consulta-autonoma";
|
|
184
|
+
pregunta: string;
|
|
185
|
+
opciones: string[];
|
|
186
|
+
elegida?: string;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* El agente PROPONE repartir el encargo en tareas de fondo encadenadas (`proponer_tareas`,
|
|
190
|
+
* `core/repartoDeEncargo.ts`). `id` lo pone la piel web: es con lo que la tarjeta se encola o se
|
|
191
|
+
* descarta, y con lo que el servidor comprueba que la propuesta existe y sigue pendiente. Las
|
|
192
|
+
* tareas van como las escribió el agente —título, petición, adjuntos por nombre—; el encargo
|
|
193
|
+
* AUMENTADO no se guarda aquí: se pide al pintar la tarjeta y lo edita la persona.
|
|
194
|
+
*/
|
|
195
|
+
| {
|
|
196
|
+
tipo: "propuesta-de-tareas";
|
|
197
|
+
id: string;
|
|
198
|
+
motivo: string;
|
|
199
|
+
tareas: TareaPropuesta[];
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Cómo acabó una propuesta: `encoladas` son los ids de las tareas creadas, en orden; ausente es
|
|
203
|
+
* que se DESCARTÓ, y `enChat` que se descartó para hacerlo en la propia conversación. Es un acto aparte y no una marca en el de la propuesta porque el `.jsonl` solo
|
|
204
|
+
* crece, y la propuesta puede venir de lo releído. Con él la tarjeta no se encola dos veces.
|
|
205
|
+
*/
|
|
206
|
+
| {
|
|
207
|
+
tipo: "propuesta-resuelta";
|
|
208
|
+
propuesta: string;
|
|
209
|
+
encoladas?: string[];
|
|
210
|
+
enChat?: true;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* `fase` es el valor del enum (`core/events.ts#Fase`), que el acto tiraba al quedarse
|
|
214
|
+
* solo con su texto en español. Opcional por lo mismo que `detalles`: las sesiones
|
|
215
|
+
* viejas no lo traen. Sirve para filtrar y agrupar sin re-parsear la prosa, que es lo
|
|
216
|
+
* que habría que hacer si solo estuviera el texto — y una prosa que alguien reescriba
|
|
217
|
+
* rompería el filtro sin que nada avisara.
|
|
218
|
+
*/
|
|
219
|
+
| {
|
|
220
|
+
tipo: "fase";
|
|
221
|
+
texto: string;
|
|
222
|
+
ms: number;
|
|
223
|
+
fase?: string;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* El cierre del turno: duración, el modelo que lo corrió y lo que COSTÓ.
|
|
227
|
+
*
|
|
228
|
+
* `consumo` es el gasto de ESTE turno y va como **delta**, no como el acumulado de la
|
|
229
|
+
* sesión. Es la diferencia que hace que sobreviva a un cierre: el tracker vive en el
|
|
230
|
+
* cierre de `abrirSesionReal` y arranca de cero en cada proceso, así que un acumulado
|
|
231
|
+
* estampado aquí sería un absoluto de una escala que cada arranque reinicia — y sumar
|
|
232
|
+
* dos de esos no da nada. Los deltas, en cambio, suman lo mismo dentro de un proceso que
|
|
233
|
+
* repartidos en tres: reabrir y seguir trabajando da el mismo total que no haber cerrado.
|
|
234
|
+
*
|
|
235
|
+
* Se suman los TOKENS de las dos cuentas y nunca su coste, igual que en la pantalla
|
|
236
|
+
* (`componentes/ContadorDeTokens.tsx`): los del grafo van contra la clave de API del
|
|
237
|
+
* usuario y los del agente externo contra su suscripción del producto.
|
|
238
|
+
*
|
|
239
|
+
* `ventana` es lo que ocupaba el historial al cerrar el turno. Es un NIVEL y no un flujo
|
|
240
|
+
* —por eso no se suma—, y va aquí para que una sesión reabierta pueda decir cuánto
|
|
241
|
+
* margen quedaba antes de resumir, que es la única cifra de la que no hay otra fuente.
|
|
242
|
+
*
|
|
243
|
+
* Opcional por lo mismo que `detalles` y `fase`: las sesiones guardadas antes de que
|
|
244
|
+
* existiera no lo traen, y ausente significa «anterior» o «esta piel no lo sabe» —nunca
|
|
245
|
+
* cero—. Quien lo lea tiene que poder distinguirlo, que es lo que hace `consumoDeLosActos`.
|
|
246
|
+
*/
|
|
247
|
+
| {
|
|
248
|
+
tipo: "fin";
|
|
249
|
+
ms: number;
|
|
250
|
+
modelo?: string;
|
|
251
|
+
consumo?: ConsumoDeTurno;
|
|
252
|
+
memoria?: MemoriaDelTurno;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Un veredicto del verificador. Es PULSO del turno —vive en el tramo de trabajo—, y el ROJO
|
|
256
|
+
* con el que un turno TERMINA sale además fuera del plegado, con un botón por hallazgo.
|
|
257
|
+
*/
|
|
258
|
+
| ({
|
|
259
|
+
tipo: "verificacion";
|
|
260
|
+
} & VeredictoDelTurno) | {
|
|
261
|
+
tipo: "error";
|
|
262
|
+
texto: string;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* UNA operación de sincronización con CloudStudio —subir o bajar—, contada entera y de una
|
|
266
|
+
* pieza: las líneas que el terminal habría impreso, su hora y cuál de las tres acciones fue.
|
|
267
|
+
*
|
|
268
|
+
* **No es una conversación, y por eso no es una línea de `sistema`.** El hilo es lo que se
|
|
269
|
+
* habla con el agente; una subida es un suceso del PROYECTO, que pasó porque alguien pulsó un
|
|
270
|
+
* botón y no porque se preguntara nada. Metido en el chat eran nueve renglones de consola
|
|
271
|
+
* cruda —el plan con su sangría, el `→ APROBADO`, el recuento— entre dos mensajes, y la
|
|
272
|
+
* conversación había que buscarla alrededor; y como acto `sistema` suelto, además, cada línea
|
|
273
|
+
* era un acto MÁS que se persistía y reaparecía al reabrir. Agrupadas aquí, la pestaña
|
|
274
|
+
* Revisión las lee como lo que son: operaciones, una detrás de otra, cada una con su hora.
|
|
275
|
+
*
|
|
276
|
+
* **Las líneas van TAL CUAL las escribió la operación**, sin recomponer ni resumir: es lo
|
|
277
|
+
* mismo que se habría visto en el terminal, y recomponerlas aquí sería una segunda versión de
|
|
278
|
+
* algo que ya se cuenta en `agent/cloudstudio/subida.ts`, `agent/cloudstudio/descarga.ts` y `cli/main.ts` — dos
|
|
279
|
+
* copias de la misma frase divergen, y la que nadie vuelve a leer es la que se queda vieja.
|
|
280
|
+
*
|
|
281
|
+
* `cuando` es ISO y es la hora de EMPEZAR, no la de acabar: es el instante que se recuerda
|
|
282
|
+
* («subí aquello a las 14:32»), y así una subida larga no se fecha por su último segundo.
|
|
283
|
+
*
|
|
284
|
+
* No lleva lo que no es de la operación: ni el enunciado de la pregunta —eso es la tarjeta de
|
|
285
|
+
* `preguntar`, y el `→ APROBADO` ya dice cómo se resolvió— ni los errores de uso del comando.
|
|
286
|
+
*/
|
|
287
|
+
| {
|
|
288
|
+
tipo: "sincronizacion";
|
|
289
|
+
accion: AccionDeSincronizacion;
|
|
290
|
+
cuando: string;
|
|
291
|
+
lineas: string[];
|
|
292
|
+
/**
|
|
293
|
+
* Lo que pasó con una SUBIDA que llegó a correr, como DATO: cuántos ficheros subieron y
|
|
294
|
+
* cuántos fallaron. Es lo que lee el diálogo de la subida para decir «todo subido» o no,
|
|
295
|
+
* en vez de leer «subidos N, fallaron M» del texto de una línea. Ausente = la operación
|
|
296
|
+
* no terminó con un informe (otra acción, el árbol sucio, o una excepción).
|
|
297
|
+
*/
|
|
298
|
+
resultado?: ResultadoDeSubida;
|
|
299
|
+
/** Cuántos ficheros trajo una BAJADA que terminó. Ausente = no terminó, u otra acción. */
|
|
300
|
+
bajados?: number;
|
|
301
|
+
/**
|
|
302
|
+
* La operación LANZÓ, y esto es lo que se dijo: el MISMO texto que el bucle de comandos
|
|
303
|
+
* escribe en el hilo (`describirError`), así que no viaja nada nuevo por el cable. Va como
|
|
304
|
+
* dato para que el diálogo de la operación lo enseñe donde se pulsó Aceptar.
|
|
305
|
+
*/
|
|
306
|
+
error?: string;
|
|
307
|
+
};
|
|
308
|
+
/** El recuento de una subida que corrió. Ver `resultado` en el acto `sincronizacion`. */
|
|
309
|
+
export interface ResultadoDeSubida {
|
|
310
|
+
subidos: number;
|
|
311
|
+
fallidos: number;
|
|
312
|
+
/**
|
|
313
|
+
* Lo que no falló pero no se pudo CONFIRMAR (hoy: la rama activa de Studio antes de subir).
|
|
314
|
+
* Ausente = nada que avisar; nunca un array vacío.
|
|
315
|
+
*/
|
|
316
|
+
avisos?: string[];
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* El acto `sincronizacion` SIN su discriminante: lo que se le entrega a la piel para que lo
|
|
320
|
+
* guarde.
|
|
321
|
+
*
|
|
322
|
+
* Existe para que el `tipo` se escriba UNA vez —donde vive el acto, que es `core/`— y quien lo
|
|
323
|
+
* construye en `cli/` no tenga que repetirlo: dos sitios escribiendo el mismo literal es el que
|
|
324
|
+
* se queda atrás el día que se renombre, y este repo ya sabe cómo acaba eso.
|
|
325
|
+
*/
|
|
326
|
+
export type NarracionDeSincronizacion = Omit<Extract<Acto, {
|
|
327
|
+
tipo: "sincronizacion";
|
|
328
|
+
}>, "tipo">;
|
|
329
|
+
/** Los tokens de UNA cuenta. La forma que ya usa `ConsumoDeSesionPorCuenta` (`core/ports.ts`). */
|
|
330
|
+
export interface ConsumoDeUnaCuenta {
|
|
331
|
+
entrada: number;
|
|
332
|
+
salida: number;
|
|
333
|
+
/** Tokens leídos de caché. Va APARTE de la entrada, como en `vendor/tokenTracking.ts`:
|
|
334
|
+
* meterlo dentro inflaría la cifra que se enseña. */
|
|
335
|
+
cache: number;
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Lo que costó un turno: las DOS cuentas por SEPARADO, más lo que ocupaba la ventana al
|
|
339
|
+
* cerrarlo.
|
|
340
|
+
*
|
|
341
|
+
* Las dos cuentas viajan sin sumar hasta la pantalla, que es la regla que ya rige el
|
|
342
|
+
* mensaje `consumo` (`web/servidor/transporte.ts`): los del grafo van contra la clave de
|
|
343
|
+
* API del usuario y los del agente externo contra su suscripción del producto, así que
|
|
344
|
+
* sumarlos aquí perdería el desglose para siempre — una sesión reabierta ya no podría decir
|
|
345
|
+
* cuánto fue de un agente externo, porque de un total no se vuelve a las partes.
|
|
346
|
+
*
|
|
347
|
+
* `ventana` es lo que ocupaba el historial al cerrar el turno. Es un NIVEL y no un flujo
|
|
348
|
+
* —por eso no se suma—, y va aquí para que una sesión reabierta pueda decir cuánto margen
|
|
349
|
+
* quedaba antes de resumir, que es la única cifra de la que no hay otra fuente.
|
|
350
|
+
*/
|
|
351
|
+
export interface ConsumoDeTurno {
|
|
352
|
+
modelo: ConsumoDeUnaCuenta;
|
|
353
|
+
externo: ConsumoDeUnaCuenta;
|
|
354
|
+
/** Ocupación del historial al cerrar el turno. Ausente = no consta. */
|
|
355
|
+
ventana?: number;
|
|
356
|
+
/**
|
|
357
|
+
* Lo mismo, POR MODELO: un especialista puede correr en otro modelo que el raíz (el `modelo:` de
|
|
358
|
+
* su `.md`), y el total no dice cuál gastó qué. Cada entrada dice a qué CUENTA pertenece, porque
|
|
359
|
+
* las dos cuentan la caché distinto. Ausente = no se midió (un turno de antes de esto): al sumar
|
|
360
|
+
* cae en `SIN_DESGLOSE`, así el desglose cuadra siempre con el total sin inventar de quién fue.
|
|
361
|
+
*/
|
|
362
|
+
porModelo?: ConsumoPorModelo;
|
|
363
|
+
}
|
|
364
|
+
/** El consumo de UN modelo, y la cuenta a la que pertenece. */
|
|
365
|
+
export interface ConsumoDeUnModelo extends ConsumoDeUnaCuenta {
|
|
366
|
+
cuenta: "modelo" | "externo";
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Por id de modelo: `deepseek/deepseek-chat` en el grafo; `claude-code:claude-sonnet-4-5` (motor y,
|
|
370
|
+
* si se sabe, modelo) en uno externo.
|
|
371
|
+
*/
|
|
372
|
+
export type ConsumoPorModelo = Record<string, ConsumoDeUnModelo>;
|
|
373
|
+
/** La fila de lo que se gastó sin saber en qué modelo: turnos de antes de medirlo. */
|
|
374
|
+
export declare const SIN_DESGLOSE = "(sin desglose)";
|
|
375
|
+
/**
|
|
376
|
+
* El desglose de un consumo: el suyo si lo trae, o sus dos cuentas bajo `SIN_DESGLOSE` (sin las que
|
|
377
|
+
* van a cero). Es lo que hace que la suma de un turno viejo y uno nuevo no pierda tokens.
|
|
378
|
+
*/
|
|
379
|
+
export declare function desgloseDe(c: ConsumoDeTurno): ConsumoPorModelo;
|
|
380
|
+
/** Suma dos desgloses, modelo a modelo. Devuelve uno NUEVO. */
|
|
381
|
+
export declare function sumarPorModelo(a: ConsumoPorModelo, b: ConsumoPorModelo): ConsumoPorModelo;
|
|
382
|
+
/** Lo que va de `antes` a `despues`, modelo a modelo, sin negativos y sin los que no se movieron. */
|
|
383
|
+
export declare function restarPorModelo(despues: ConsumoPorModelo, antes: ConsumoPorModelo): ConsumoPorModelo;
|
|
384
|
+
/** Suma dos consumos, cuenta por cuenta. La ventana gana la del SEGUNDO: es la más reciente. */
|
|
385
|
+
export declare function sumarConsumo(a: ConsumoDeTurno, b: ConsumoDeTurno): ConsumoDeTurno;
|
|
386
|
+
/**
|
|
387
|
+
* Lo que costó una CONVERSACIÓN, leída de sus actos.
|
|
388
|
+
*
|
|
389
|
+
* Suma los deltas de los `fin` y se queda con la última ventana que CONSTA —la más
|
|
390
|
+
* reciente que se midió, que es la mejor respuesta a «cuánto ocupa el historial ahora»
|
|
391
|
+
* cuando el último turno no la midió—. Devuelve `undefined` cuando NINGÚN `fin` lo trae,
|
|
392
|
+
* que es lo que distingue una sesión anterior a esto de una que gastó cero: pintar un cero
|
|
393
|
+
* que nadie ha medido es la cifra inventada de siempre (`ContadorDeTokens`), y aquí se
|
|
394
|
+
* puede caer en ella con una sesión vieja delante.
|
|
395
|
+
*
|
|
396
|
+
* Vive en `core/` y no en el servidor porque es una lectura de actos, no de disco: los
|
|
397
|
+
* actos que le llegan pueden venir del `.jsonl` recién releído o de cualquier otra fuente.
|
|
398
|
+
*/
|
|
399
|
+
export declare function consumoDeLosActos(actos: readonly Acto[]): ConsumoDeTurno | undefined;
|
|
400
|
+
/**
|
|
401
|
+
* El ACUMULADO de una sesión: se suma un turno detrás de otro, y **la ventana NO viaja**.
|
|
402
|
+
*
|
|
403
|
+
* Es la diferencia con `sumarConsumo`, y es la razón de que esto exista con nombre propio en
|
|
404
|
+
* vez de ser un `sumarConsumo` más en la llamada. `consumoDeLosActos` compone los actos de UNA
|
|
405
|
+
* conversación que se está mirando AHORA, y ahí la ventana tiene sentido: «cuánto ocupa el
|
|
406
|
+
* historial» es una pregunta del momento, y la del último turno que midió es la respuesta.
|
|
407
|
+
* Un acumulado estampado en el índice es otra cosa —el gasto de una sesión ya cerrada—, y una
|
|
408
|
+
* ventana dentro sería un «ahora» congelado hace tres días que alguien leería como el de hoy.
|
|
409
|
+
* El dato no se pierde: sigue en cada `fin` del `.jsonl`, que es donde se mide.
|
|
410
|
+
*
|
|
411
|
+
* `a` ausente es el primer `fin` de la sesión: devuelve una copia del delta, no el delta —quien
|
|
412
|
+
* lo llame lo va a guardar en el índice, y los actos del lazo no son de nadie para mutarlos.
|
|
413
|
+
*/
|
|
414
|
+
export declare function acumularTotales(a: ConsumoDeTurno | undefined, delta: ConsumoDeTurno): ConsumoDeTurno;
|
|
415
|
+
/**
|
|
416
|
+
* Añadir una línea de tool al grupo: si es el cierre de la racha cuya apertura es la
|
|
417
|
+
* última línea, la SUSTITUYE. El colapsador escribe apertura y cierre porque stdio solo
|
|
418
|
+
* añade; una piel que repinta (TUI, web) no puede permitirse dos líneas para la misma
|
|
419
|
+
* racha. Pura, y vivía en `cli/tui/store.ts` hasta que la web empezó a necesitarla
|
|
420
|
+
* también: dos copias de esta sutileza es cómo divergen.
|
|
421
|
+
*/
|
|
422
|
+
export declare function conLineaDeTool(lineas: readonly string[], linea: string): string[];
|
|
423
|
+
/**
|
|
424
|
+
* La misma fusión, sobre las DOS listas a la vez.
|
|
425
|
+
*
|
|
426
|
+
* Los `detalles` van en paralelo a las `lineas`, así que aplicarles la regla por separado
|
|
427
|
+
* es cómo se desincronizan: la sustitución del cierre de una racha quita un elemento de
|
|
428
|
+
* una lista y no de la otra, y a partir de ahí cada línea lleva el detalle de su vecina.
|
|
429
|
+
* Una sola función que devuelva las dos lo hace imposible por construcción.
|
|
430
|
+
*/
|
|
431
|
+
export declare function conLlamadaDeTool(grupo: {
|
|
432
|
+
lineas: readonly string[];
|
|
433
|
+
detalles?: readonly DetalleDeLinea[];
|
|
434
|
+
}, linea: string, detalle: DetalleDeLinea): {
|
|
435
|
+
lineas: string[];
|
|
436
|
+
detalles: DetalleDeLinea[];
|
|
437
|
+
};
|