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,141 @@
|
|
|
1
|
+
import { type AdjuntoDeTarea, type PantallaElegida, type Tarea } from "../../core/tareas.js";
|
|
2
|
+
/** Bytes que se aceptan por adjunto y por tarea. */
|
|
3
|
+
export declare const TOPE_DE_ADJUNTO = 20000000;
|
|
4
|
+
export declare const TOPE_DE_ADJUNTOS_POR_TAREA = 50000000;
|
|
5
|
+
/**
|
|
6
|
+
* Reescribe las raíces ABSOLUTAS del índice cuando una copia local se ha mudado de sitio.
|
|
7
|
+
*
|
|
8
|
+
* Vive aquí y no en quien muda porque el dueño del formato de `indice.json` es este fichero:
|
|
9
|
+
* un segundo sitio que sepa escribirlo divergiría del primero en cuanto uno de los dos se
|
|
10
|
+
* corrigiera. Quien llama solo aporta la TRADUCCIÓN (ausente = «esta raíz no la mudé yo»).
|
|
11
|
+
*
|
|
12
|
+
* **Se trabaja sobre el JSON crudo**, no sobre `Tarea`: la misma disciplina de
|
|
13
|
+
* `settingsEnDisco.ts`: pasar por un tipo descartaría en silencio del fichero del usuario
|
|
14
|
+
* cualquier campo que este proceso no conozca. Y si no hay índice, o no se puede leer, no se
|
|
15
|
+
* escribe nada: una cola que no está no es una cola rota.
|
|
16
|
+
*
|
|
17
|
+
* Devuelve cuántas entradas cambiaron. Cero no escribe el fichero: reescribirlo sin que haya
|
|
18
|
+
* cambiado nada movería su mtime sin motivo.
|
|
19
|
+
*/
|
|
20
|
+
export declare function remapearRaicesDeTareas(base: string | undefined, traducir: (raiz: string) => string | undefined): number;
|
|
21
|
+
export interface ResultadoDeAdjunto {
|
|
22
|
+
ok: boolean;
|
|
23
|
+
/** Una frase, sin ninguna ruta de la máquina. */
|
|
24
|
+
motivo?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface TareasEnDisco {
|
|
27
|
+
listar(): Tarea[];
|
|
28
|
+
guardar(tareas: readonly Tarea[]): void;
|
|
29
|
+
/** Concede el cerrojo, o dice de quién es. Ver `tomarCerrojo` abajo. */
|
|
30
|
+
tomarCerrojo(): {
|
|
31
|
+
tomado: true;
|
|
32
|
+
} | {
|
|
33
|
+
tomado: false;
|
|
34
|
+
dePid: number;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* ¿El cerrojo en disco sigue siendo NUESTRO? Hay que preguntarlo antes de cada cosa
|
|
38
|
+
* consecuente —despachar una tarea—, no solo al tomarlo: `tomarCerrojo` no puede
|
|
39
|
+
* garantizar por sí solo que no haya dos dueños (ver su comentario), y esto es lo que
|
|
40
|
+
* hace que el que perdió se entere ANTES de arrancar nada.
|
|
41
|
+
*/
|
|
42
|
+
sigoSiendoDueño(): boolean;
|
|
43
|
+
soltarCerrojo(): void;
|
|
44
|
+
guardarAdjunto(tarea: string, nombre: string, datos: Buffer): ResultadoDeAdjunto;
|
|
45
|
+
/**
|
|
46
|
+
* Lo que hay en la carpeta de adjuntos de una tarea, medido del DISCO.
|
|
47
|
+
*
|
|
48
|
+
* De aquí sale el `Tarea.adjuntos` que se guarda al crear, y por eso se lee del disco y no
|
|
49
|
+
* de lo que diga el cliente: el navegador sube los bytes por `POST /adjunto` y después
|
|
50
|
+
* manda «crear», así que la única fuente que sabe qué llegó de verdad —y cuánto pesa— es
|
|
51
|
+
* la carpeta. Aceptar la lista del cliente dejaría entrar un adjunto que nadie subió.
|
|
52
|
+
*
|
|
53
|
+
* Ordenado por nombre, y solo FICHEROS llanos: una carpeta o un enlace ahí no es un
|
|
54
|
+
* adjunto, y `readdirSync` los daría igual.
|
|
55
|
+
*/
|
|
56
|
+
listarAdjuntos(tarea: string): AdjuntoDeTarea[];
|
|
57
|
+
/**
|
|
58
|
+
* La carpeta REAL de los adjuntos de una tarea, para montarla en el backend. Se queda en
|
|
59
|
+
* el host: es una ruta de la máquina.
|
|
60
|
+
*
|
|
61
|
+
* `undefined` = **no se puede montar**, y falla cerrado por TIPO para que quien la monte
|
|
62
|
+
* tenga que decidir qué hacer con eso. Dos casos: un id que no es segmento llano, y una
|
|
63
|
+
* carpeta cuyo camino REAL se sale de la cola (un enlace simbólico plantado ahí). Que la
|
|
64
|
+
* carpeta todavía no exista NO es uno de ellos: se crea al escribir el primer adjunto, y
|
|
65
|
+
* confundir «no hay» con «no vale» dejaría sin montar la carpeta buena.
|
|
66
|
+
*/
|
|
67
|
+
carpetaDeAdjuntos(tarea: string): string | undefined;
|
|
68
|
+
borrarTarea(id: string): void;
|
|
69
|
+
}
|
|
70
|
+
export declare function crearTareasEnDisco(opciones: {
|
|
71
|
+
/** La base (`~/.xonecode` por omisión). Entra por parámetro para probar sin tocar el home. */
|
|
72
|
+
base?: string;
|
|
73
|
+
pid?: number;
|
|
74
|
+
/** ¿Vive ese proceso? Por omisión, `process.kill(pid, 0)`. */
|
|
75
|
+
vivo?: (pid: number) => boolean;
|
|
76
|
+
informar?: (texto: string) => void;
|
|
77
|
+
topeDeAdjunto?: number;
|
|
78
|
+
topePorTarea?: number;
|
|
79
|
+
/**
|
|
80
|
+
* Cómo se APARTA un cerrojo caduco al recogerlo. Por omisión, `renameSync` de verdad.
|
|
81
|
+
* Entra por parámetro por lo mismo que `vivo`: un test necesita poder provocar que OTRO
|
|
82
|
+
* proceso gane esa carrera (el `rename` lanzando `ENOENT`), y eso no se puede pedir de
|
|
83
|
+
* verdad sin dos procesos reales.
|
|
84
|
+
*/
|
|
85
|
+
renombrar?: (origen: string, destino: string) => void;
|
|
86
|
+
/**
|
|
87
|
+
* Cómo se RESTITUYE un cerrojo VIVO que se apartó por error (ver `tomarCerrojo`). Por
|
|
88
|
+
* omisión, `linkSync` de verdad. Entra por el mismo motivo que `renombrar`: un test
|
|
89
|
+
* necesita poder intercalar la recogida COMPLETA de otro proceso en medio de la propia, y
|
|
90
|
+
* eso no se puede pedir de verdad sin dos procesos reales.
|
|
91
|
+
*/
|
|
92
|
+
enlazar?: (existente: string, nuevo: string) => void;
|
|
93
|
+
/**
|
|
94
|
+
* Cómo se BORRA la cuarentena al final de la recogida. Por omisión, `rmSync` de verdad.
|
|
95
|
+
* Entra por el mismo motivo que `renombrar` y `enlazar`: es el único punto desde el que se
|
|
96
|
+
* puede provocar el orden en que la cuarentena COMPARTIDA se llevaba por delante un
|
|
97
|
+
* cerrojo vivo (ver `tomarCerrojo`), y ese orden no se puede pedir de verdad sin dos
|
|
98
|
+
* procesos reales.
|
|
99
|
+
*/
|
|
100
|
+
borrar?: (ruta: string) => void;
|
|
101
|
+
}): TareasEnDisco;
|
|
102
|
+
export interface ResultadoDeFeedback {
|
|
103
|
+
hecho: boolean;
|
|
104
|
+
/** Por qué no, si `hecho` es falso. Una frase para enseñar, nunca una excepción cruda. */
|
|
105
|
+
motivo?: string;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Añade un feedback a una tarea «esperando feedback» y la devuelve al lazo (`nuevo`).
|
|
109
|
+
*
|
|
110
|
+
* §0 del diseño, textual: «se edita la tarea y se agrega el feedback del usuario». Esto es
|
|
111
|
+
* exactamente eso — y nada más: no toca el proyecto, no abre ninguna consola, solo escribe
|
|
112
|
+
* el índice. Quien lo recoge es el corredor, en su siguiente `revisar()`.
|
|
113
|
+
*
|
|
114
|
+
* Solo toma `listar`/`guardar` del puerto, no la interfaz entera: es lo mínimo que hace
|
|
115
|
+
* falta, y es lo que ya usa `atenderCrearTarea`/`atenderAccionDeTarea` en `arranque.ts`
|
|
116
|
+
* (`Pick<TareasEnDisco, "listar" | "guardar" | "borrarTarea">`) — con esto, `aplicarFeedback`
|
|
117
|
+
* encaja ahí sin ensanchar ese tipo.
|
|
118
|
+
*
|
|
119
|
+
* **El rechazo se DEVUELVE, nunca se lanza.** Es la misma regla que `write_file`
|
|
120
|
+
* (`agent/grafo/proyecto.ts`): quien llama —el cable, o un test— necesita poder decir por qué sin
|
|
121
|
+
* envolver esto en un `try`, y un `{hecho:false}` es más fácil de propagar hasta una persona
|
|
122
|
+
* que una excepción.
|
|
123
|
+
*
|
|
124
|
+
* **Dos motivos de rechazo, y los dos pasan por `conFeedback`/`conEstado` sin duplicar la
|
|
125
|
+
* lógica aquí**: un feedback en blanco —devolvería la tarea al lazo sin nada nuevo que
|
|
126
|
+
* decirle, el mismo argumento que rechaza un título vacío en `sesiones.ts#renombrarSesion`—
|
|
127
|
+
* y una tarea que no está `requiere-atencion` —no hay pregunta que este feedback esté
|
|
128
|
+
* contestando—. `conEstado` ya sabe decir la segunda (`«nuevo» no puede pasar a «nuevo»`,
|
|
129
|
+
* etc.); repetir esa comprobación aquí sería la misma regla en dos sitios que divergen.
|
|
130
|
+
*/
|
|
131
|
+
export declare function aplicarFeedback(disco: Pick<TareasEnDisco, "listar" | "guardar">, id: string, texto: string): ResultadoDeFeedback;
|
|
132
|
+
/**
|
|
133
|
+
* Cambia el encargo de una tarea que todavía no ha arrancado (IXCODE-52). La regla es la de
|
|
134
|
+
* `core/tareas.ts#conEncargo`; aquí solo se relee, se aplica y se guarda, y una negativa se
|
|
135
|
+
* DEVUELVE con su motivo, igual que el feedback.
|
|
136
|
+
*/
|
|
137
|
+
export declare function aplicarEncargo(disco: Pick<TareasEnDisco, "listar" | "guardar">, id: string, encargo: string,
|
|
138
|
+
/** También la petición, de la que sale el título (IXCODE-53). Ausente = no se toca. */
|
|
139
|
+
peticion?: string,
|
|
140
|
+
/** La pantalla de Stitch (ya comprobada): nueva, `null` para quitarla, ausente = no se toca. */
|
|
141
|
+
pantalla?: PantallaElegida | null): ResultadoDeFeedback;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const VARIABLE_TRAZA_ERRORES = "XONECODE_TRACE_ERRORES";
|
|
2
|
+
export declare const NOMBRE_TRAZA_ERRORES = "traza-errores.jsonl";
|
|
3
|
+
export declare function rutaTrazaDeErrores(raiz: string): string;
|
|
4
|
+
/**
|
|
5
|
+
* Enciende la traza si la variable está puesta, y devuelve cómo apagarla.
|
|
6
|
+
*
|
|
7
|
+
* Devuelve `undefined` cuando NO se enciende, que es el caso normal: así quien la llama puede
|
|
8
|
+
* decir si está puesta sin volver a mirar el entorno.
|
|
9
|
+
*/
|
|
10
|
+
export declare function encenderTrazaDeErrores(raiz: string, entorno?: NodeJS.ProcessEnv, escribir?: (ruta: string, linea: string) => void): (() => void) | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function entornoConDepuracion(activa: boolean, entorno?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import type { TokenTracker } from "../../vendor/tokenTracking.js";
|
|
2
|
+
import type { ParametrosSeguros } from "./resumenDeTool.js";
|
|
3
|
+
import type { OrigenDeTool } from "./puente.js";
|
|
4
|
+
/**
|
|
5
|
+
* Activa una traza local. Esta variable, por sí sola, sigue siendo la única palanca de este
|
|
6
|
+
* módulo — nunca se cablea nada aquí. Que valga "1" por OMISIÓN en una sesión normal (mientras
|
|
7
|
+
* dure esta etapa de pruebas) es una decisión de `Settings.depurar`, resuelta fuera de este
|
|
8
|
+
* fichero por `agent/turno/depuracion.ts#entornoConDepuracion` antes de que el `entorno` llegue
|
|
9
|
+
* a `crearDiagnosticoDeTools`.
|
|
10
|
+
*/
|
|
11
|
+
export declare const VARIABLE_TRAZA_TOOLS = "XONECODE_TRACE_TOOLS";
|
|
12
|
+
export declare const NOMBRE_TRAZA_TOOLS = "traza-tools.jsonl";
|
|
13
|
+
/** Cuánto de un encargo se guarda en la traza. Lo demás se cuenta en `chars`, no se guarda. */
|
|
14
|
+
export declare const TOPE_DEL_ENCARGO_EN_TRAZA = 2000;
|
|
15
|
+
export interface UsoDeModelo {
|
|
16
|
+
input: number;
|
|
17
|
+
output: number;
|
|
18
|
+
cache: number;
|
|
19
|
+
llamadas: number;
|
|
20
|
+
contexto: number;
|
|
21
|
+
/**
|
|
22
|
+
* Cuántos de los `output` fueron RAZONAMIENTO. **Opcional y ausente-no-es-cero**: un proveedor que no lo
|
|
23
|
+
* declara no piensa cero tokens, simplemente no lo dice, y un cero inventado se leería como «este agente
|
|
24
|
+
* no razona». Existe porque la salida mezcla razonamiento, texto y llamadas a tools, y sin separarlos no
|
|
25
|
+
* se puede decidir dónde bajar el esfuerzo.
|
|
26
|
+
*/
|
|
27
|
+
razonamiento?: number;
|
|
28
|
+
}
|
|
29
|
+
export interface DiagnosticoDeTools {
|
|
30
|
+
modelo(origen: string, uso: UsoDeModelo): void;
|
|
31
|
+
/**
|
|
32
|
+
* Un especialista al que se le agotó el presupuesto de llamadas.
|
|
33
|
+
*
|
|
34
|
+
* **OPCIONAL**, como los métodos nuevos de `Piel`: así ningún doble de los tests se rompe por
|
|
35
|
+
* existir esto, y quien no lo implemente sigue funcionando igual.
|
|
36
|
+
*
|
|
37
|
+
* Existe porque un corte era INDISTINGUIBLE de un agente que termina: la traza decía «15
|
|
38
|
+
* llamadas» en los dos casos. Eso costó una sesión entera de diagnóstico equivocado —se leyó
|
|
39
|
+
* como un fallo de enrutado lo que era el tope cortando— y es el tipo de dato que solo se
|
|
40
|
+
* echa de menos cuando ya te ha engañado.
|
|
41
|
+
*/
|
|
42
|
+
corte?(origen: string, limite: number): void;
|
|
43
|
+
/**
|
|
44
|
+
* `origen` distingue el orquestador de un especialista, y es EXACTO (sale del namespace del
|
|
45
|
+
* stream, ver `puente.ts#esDelPadre`). No dice CUÁL especialista: sus segmentos son ids
|
|
46
|
+
* opacos. Dos cubos ciertos en vez de cinco dudosos.
|
|
47
|
+
*/
|
|
48
|
+
herramienta(nombre: string, detalle: string | undefined, parametros: ParametrosSeguros | undefined, tracker: TokenTracker, origen?: OrigenDeTool, respuesta?: string, agente?: string): void;
|
|
49
|
+
/**
|
|
50
|
+
* **Quién le pide qué a quién.** Opcional, como `corte`: una delegación del orquestador a un especialista,
|
|
51
|
+
* con el ENCARGO. Existe porque la traza decía «un especialista» y no cuál, y de lo que el orquestador
|
|
52
|
+
* pedía solo dejaba una huella: al analizar cuántas pasadas gasta una tarea, la pregunta es qué pidió a
|
|
53
|
+
* quién y qué hizo cada uno con ello.
|
|
54
|
+
*
|
|
55
|
+
* **Es lo único de la traza que lleva TEXTO LIBRE**, y por eso está acotado: recortado a
|
|
56
|
+
* `TOPE_DEL_ENCARGO_EN_TRAZA` caracteres y solo con la traza encendida. La traza es un fichero local
|
|
57
|
+
* bajo `.xonecode/` —no viaja por el cable, no entra en git ni sube a CloudStudio—, pero un encargo
|
|
58
|
+
* puede citar contenido del proyecto, así que quien enciende «Depurar» tiene que saber que queda escrito.
|
|
59
|
+
*/
|
|
60
|
+
delegacion?(de: string, a: string, encargo: string): void;
|
|
61
|
+
/**
|
|
62
|
+
* **Lo que un especialista DEVUELVE a quien lo llamó**, la otra mitad de `delegacion`, con el mismo tope de texto. Existe
|
|
63
|
+
* porque la traza guardaba el encargo y no la respuesta: en calc15 no se podía saber si el diseñador había dicho qué
|
|
64
|
+
* fondo era de qué control, ni por qué el orquestador se puso a releer sus SVG. Opcional, como `delegacion`.
|
|
65
|
+
*/
|
|
66
|
+
devolucion?(de: string, a: string, respuesta: string): void;
|
|
67
|
+
/**
|
|
68
|
+
* La memoria de un especialista en la sesión (`memoriaDeEspecialistas.ts`): con cuántos tokens de su
|
|
69
|
+
* conversación anterior arrancó una encarnación, o por qué arrancó sin memoria, y qué se hizo con la
|
|
70
|
+
* suya al terminar. Opcional, como `corte`. Es lo que permite comparar una pasada con y sin ella.
|
|
71
|
+
*/
|
|
72
|
+
memoria?(agente: string, evento: "arranca-con" | "arranca-sin" | "cierra", dato: string, tokens?: number): void;
|
|
73
|
+
/**
|
|
74
|
+
* **Cuánto METIÓ en el contexto lo que devolvió una tool.** Opcional, como `corte`.
|
|
75
|
+
*
|
|
76
|
+
* Contar llamadas no dice a donde van los tokens: dos `read_file` son dos líneas iguales y
|
|
77
|
+
* pueden ser doscientos caracteres o veinte mil. Van los CARACTERES y nunca el contenido, y
|
|
78
|
+
* no se convierten a tokens — la razón cambia con el modelo y con lo que haya dentro, así
|
|
79
|
+
* que una cifra de tokens aquí sería una precisión inventada.
|
|
80
|
+
*/
|
|
81
|
+
resultado?(nombre: string | undefined, detalle: string | undefined, chars: number): void;
|
|
82
|
+
/**
|
|
83
|
+
* **Las cifras de un turno según NOSOTROS y según el motor**, y en qué difieren. Opcional, como
|
|
84
|
+
* `corte`: solo TrueForge lleva cuentas propias con las que contrastar
|
|
85
|
+
* (`motores/trueforge/metricasTrueforge.ts`). Es diagnóstico: una diferencia es una cuenta que
|
|
86
|
+
* se pierde en un lado, y sin esto no había forma de verla.
|
|
87
|
+
*/
|
|
88
|
+
/**
|
|
89
|
+
* **El ENTORNO de la shell de un agente** al montarla (`core/shellDeAgente.ts#resumenDelEntorno`): plataforma, la clave
|
|
90
|
+
* del PATH, cuántas carpetas, si `node` y `adb` están, cuántos scripts. Opcional, como `corte`. Existe por Windows:
|
|
91
|
+
* el PATH de los agentes estaba roto («node: command not found») y la traza no decía nada del entorno.
|
|
92
|
+
*/
|
|
93
|
+
entorno?(agente: string, resumen: Readonly<Record<string, string | number | boolean>>): void;
|
|
94
|
+
/**
|
|
95
|
+
* **Lo que hace la shell de un hijo EXTERNO** (Claude Code): cada `Bash` que pide —el comando, el que se ejecutó tras
|
|
96
|
+
* reescribirlo, y si se permitió o se denegó con su motivo— y lo que salió (tamaño y el comienzo del error). Opcional.
|
|
97
|
+
* Recortado a `TOPE_DE_TEXTO_EXTERNO`: un comando puede llevar rutas de la máquina, y la traza es un fichero local.
|
|
98
|
+
*/
|
|
99
|
+
externo?(agente: string, datos: Readonly<Record<string, string | number | boolean | undefined>>): void;
|
|
100
|
+
contraste?(contraste: {
|
|
101
|
+
nuestras: {
|
|
102
|
+
entrada: number;
|
|
103
|
+
salida: number;
|
|
104
|
+
cache: number;
|
|
105
|
+
llamadas: number;
|
|
106
|
+
};
|
|
107
|
+
motor: Record<string, number>;
|
|
108
|
+
externos: number;
|
|
109
|
+
diferencias: string[];
|
|
110
|
+
}): void;
|
|
111
|
+
}
|
|
112
|
+
/** Cuánto texto de un comando o de su salida guarda la traza de un hijo externo. */
|
|
113
|
+
export declare const TOPE_DE_TEXTO_EXTERNO = 600;
|
|
114
|
+
/** Ruta pública solo para comunicar al usuario dónde quedó su diagnóstico. */
|
|
115
|
+
export declare function rutaTrazaDeTools(raiz: string): string;
|
|
116
|
+
/**
|
|
117
|
+
* Crea un registro append-only de costes y calls, con solo argumentos de una
|
|
118
|
+
* lista blanca; nunca incluye contenido de tools.
|
|
119
|
+
*
|
|
120
|
+
* JSONL permite analizar una sesión grande sin tener que cargarla entera. Es
|
|
121
|
+
* deliberadamente síncrono: son registros minúsculos de un modo de diagnóstico
|
|
122
|
+
* y así no se pierde la última llamada si el usuario cancela el proceso.
|
|
123
|
+
*/
|
|
124
|
+
export declare function crearDiagnosticoDeTools(raiz: string, entorno?: NodeJS.ProcessEnv, chat?: string | (() => string | undefined)): DiagnosticoDeTools | undefined;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recorre la raíz y devuelve las rutas en el ESPACIO VIRTUAL del backend.
|
|
3
|
+
*
|
|
4
|
+
* Exportada porque la consola la usa para el completado de «@ficheros» (cli puede
|
|
5
|
+
* importar de agent; al revés no). El recorrido se hace EN CADA llamada a propósito:
|
|
6
|
+
* la lista no se cachea porque los ficheros cambian durante la sesión.
|
|
7
|
+
*/
|
|
8
|
+
/** Hasta dónde baja el completado del Tab. El árbol de la consola web pide más (`arbolDeProyecto.ts`). */
|
|
9
|
+
export declare const PROFUNDIDAD_DEL_TAB = 4;
|
|
10
|
+
export declare function ficherosDelProyecto(raiz: string, prof?: number, tope?: number): ReadonlySet<string>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ES_DOBLE } from "../../core/ports.js";
|
|
2
|
+
import type { DomainEvent } from "../../core/events.js";
|
|
3
|
+
/**
|
|
4
|
+
* Un turno completo de pega, para ver el motor correr sin API ni red.
|
|
5
|
+
*
|
|
6
|
+
* Lleva la marca de doble: `xonecode describe` (fase 5) tiene que poder decir que lo que
|
|
7
|
+
* está montado no es el agente de verdad. Un mock que no se declara hace creer que el
|
|
8
|
+
* sistema funciona.
|
|
9
|
+
*
|
|
10
|
+
* El guion recorre a propósito las cosas que cuestan de pintar: una racha de tools, una
|
|
11
|
+
* verificación en rojo, una reparación, y una respuesta troceada en varios mensajes.
|
|
12
|
+
*/
|
|
13
|
+
export declare class AgenteGuionizado {
|
|
14
|
+
private readonly retardoMs;
|
|
15
|
+
readonly [ES_DOBLE] = true;
|
|
16
|
+
constructor(retardoMs?: number);
|
|
17
|
+
turno(peticion: string): AsyncIterable<DomainEvent>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* El LECTOR de `.xonecode/traza-tools.jsonl`: a dónde se fueron los tokens.
|
|
3
|
+
*
|
|
4
|
+
* La traza la escribe `diagnosticoDeTools.ts` y hasta ahora no la leía nadie — un fichero
|
|
5
|
+
* que solo se escribe es un fichero que no contesta nada. Esto la agrega por ORIGEN (el
|
|
6
|
+
* orquestador y cada especialista) y por TOOL, que son las dos preguntas con las que se
|
|
7
|
+
* decide qué recortar: quién gasta, y qué se está leyendo dos veces.
|
|
8
|
+
*
|
|
9
|
+
* Es código PURO —recibe líneas, devuelve un resumen— y por eso lleva test: un contador que
|
|
10
|
+
* cuenta mal invalida en silencio todo lo que se decida mirándolo, igual que un juez de los
|
|
11
|
+
* evals. Quien toca disco es `cli/traza.ts`.
|
|
12
|
+
*
|
|
13
|
+
* **La trampa del formato, y es la razón de la primera prueba**: en una línea `modelo`,
|
|
14
|
+
* `input`, `output` y `cache` son los de ESA llamada, pero `llamadas` es el acumulado del
|
|
15
|
+
* tracker en ese instante (1, 2, 3…) y además es GLOBAL, no del origen. Sumarlo daría seis
|
|
16
|
+
* llamadas donde hubo tres. Las llamadas se cuentan por línea.
|
|
17
|
+
*/
|
|
18
|
+
import type { ConsumoDeSesionPorCuenta } from "../../core/ports.js";
|
|
19
|
+
/** Lo que gastó un origen: el orquestador, o un especialista por su nombre. */
|
|
20
|
+
export interface GastoDeOrigen {
|
|
21
|
+
origen: string;
|
|
22
|
+
llamadas: number;
|
|
23
|
+
input: number;
|
|
24
|
+
output: number;
|
|
25
|
+
cache: number;
|
|
26
|
+
/**
|
|
27
|
+
* Cuántos tokens de la salida fueron RAZONAMIENTO, sumando SOLO las llamadas que lo declararon
|
|
28
|
+
* (`conRazonamiento`). **Cero y «no consta» no son lo mismo**: un proveedor que no lo dice no piensa cero
|
|
29
|
+
* tokens, y por eso se cuenta aparte cuántas llamadas lo traían; el informe solo lo pinta si consta.
|
|
30
|
+
*/
|
|
31
|
+
razonamiento: number;
|
|
32
|
+
conRazonamiento: number;
|
|
33
|
+
/** La salida de ESAS mismas llamadas: el porcentaje se calcula sobre ella y no sobre toda la salida. */
|
|
34
|
+
salidaConRazonamiento: number;
|
|
35
|
+
/** La MAYOR ventana alcanzada, no la última: tras un resumen el contexto baja. */
|
|
36
|
+
contexto: number;
|
|
37
|
+
/**
|
|
38
|
+
* Cuántas veces a ESTE origen se le agotó el presupuesto de llamadas.
|
|
39
|
+
*
|
|
40
|
+
* Cero y ausente son lo mismo aquí a propósito: un origen que nunca se cortó no tiene nada
|
|
41
|
+
* que decir. Lo que NO puede pasar es que un corte no aparezca — «15 llamadas» se lee
|
|
42
|
+
* exactamente igual viniendo de un agente que terminó que de uno al que cortaron, y esa
|
|
43
|
+
* confusión costó una sesión entera de diagnóstico equivocado.
|
|
44
|
+
*/
|
|
45
|
+
cortes: number;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Sobre QUÉ actuó una tool: la ruta o el patrón, y el trozo que pidió.
|
|
49
|
+
*
|
|
50
|
+
* **La identidad es ruta + rango, no la ruta.** La instrucción que el agente recibe es «no
|
|
51
|
+
* releas la misma ruta y el mismo rango» (`DESCRIPCIONES_FICHEROS.read_file`), así que otra
|
|
52
|
+
* página del mismo fichero es trabajo NUEVO: colapsarla con la primera la disfrazaría de
|
|
53
|
+
* desperdicio y mandaría a arreglar lo que está bien.
|
|
54
|
+
*/
|
|
55
|
+
export interface BlancoDeTool {
|
|
56
|
+
detalle: string;
|
|
57
|
+
/** `offset+limit`, cuando la tool los lleva. Ausente si no los declaró. */
|
|
58
|
+
rango?: string;
|
|
59
|
+
veces: number;
|
|
60
|
+
}
|
|
61
|
+
/** Una tool, cuántas veces, y sobre qué. */
|
|
62
|
+
export interface UsoDeTool {
|
|
63
|
+
nombre: string;
|
|
64
|
+
veces: number;
|
|
65
|
+
/** Ordenados por veces: lo repetido primero, que es lo que se viene a buscar. */
|
|
66
|
+
blancos: BlancoDeTool[];
|
|
67
|
+
/** Cuántos blancos DISTINTOS: «seis lecturas» y «seis ficheros» no son lo mismo. */
|
|
68
|
+
distintos: number;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* **Que pidio el modelo EN LA MISMA respuesta**, que es lo unico que decide si dos tools
|
|
72
|
+
* corren a la vez: langgraph ejecuta las tool_calls de un mensaje concurrentemente.
|
|
73
|
+
*
|
|
74
|
+
* Esto existe porque la pregunta se contesto dos veces con dos metodos y dieron dos numeros.
|
|
75
|
+
* Sobre un turno real de 69 tools, agrupar por el RELOJ exacto daba 18 en rafaga —el
|
|
76
|
+
* milisegundo parte una rafaga por la mitad— y agrupar por los CONTADORES del tracker daba
|
|
77
|
+
* 38, con dos grupos de 1.000 ms de span, o sea rezagados fundidos en una respuesta ajena.
|
|
78
|
+
* Hubo que cruzar los dos criterios para defender un numero, y eso es la señal de que
|
|
79
|
+
* faltaba el dato: ahora cada tool dice de qué mensaje salió.
|
|
80
|
+
*/
|
|
81
|
+
export interface Paralelismo {
|
|
82
|
+
/** Respuestas que pidieron MAS DE UNA tool. */
|
|
83
|
+
respuestas: number;
|
|
84
|
+
/** Tools pedidas dentro de una respuesta multiple. */
|
|
85
|
+
tools: number;
|
|
86
|
+
/** El maximo pedido de una vez. */
|
|
87
|
+
maximo: number;
|
|
88
|
+
/**
|
|
89
|
+
* Tools sin `respuesta`: de una traza anterior a este campo. No se cuentan a ningun lado.
|
|
90
|
+
* Ausente no es `sola`, la misma regla que `toolsDelOrquestador`.
|
|
91
|
+
*/
|
|
92
|
+
sinRespuesta: number;
|
|
93
|
+
/**
|
|
94
|
+
* **El hallazgo que esto vino a buscar**: un fichero escrito mas de una vez en la MISMA
|
|
95
|
+
* respuesta. Son escrituras concurrentes sobre el mismo contenido, y ahi se pierden
|
|
96
|
+
* cambios — medido con el backend de verdad, cuatro ediciones simultaneas dejaron UNA.
|
|
97
|
+
*/
|
|
98
|
+
escriturasALaVez: Array<{
|
|
99
|
+
detalle: string;
|
|
100
|
+
veces: number;
|
|
101
|
+
}>;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* **Cuánto METIÓ en el contexto lo que devolvió una tool, que no es cuántas veces se llamó.**
|
|
105
|
+
*
|
|
106
|
+
* Dos `read_file` son dos líneas iguales en el reparto de arriba y pueden ser doscientos
|
|
107
|
+
* caracteres o veinte mil. Lo que se paga es esto. Salió de buscar por qué un turno costaba
|
|
108
|
+
* mucho más que el mismo turno de por la mañana: se podía contar cuántas veces se leía el
|
|
109
|
+
* `SKILL.md` de una skill, pero no lo que pesaba — y por eliminación no se llega.
|
|
110
|
+
*
|
|
111
|
+
* **Son CARACTERES y no se convierten a tokens**: la razón cambia con el modelo y con lo que
|
|
112
|
+
* haya dentro, así que dar tokens aquí sería inventarse una precisión que no se tiene. Para
|
|
113
|
+
* comparar dos turnos sirve igual.
|
|
114
|
+
*/
|
|
115
|
+
export interface PesoEnContexto {
|
|
116
|
+
/** La tool, si consta de que llamada era su resultado. */
|
|
117
|
+
nombre?: string;
|
|
118
|
+
/** El BLANCO de la lista blanca: la ruta, el patrón, el comando. */
|
|
119
|
+
detalle?: string;
|
|
120
|
+
/** Caracteres devueltos, sumados. */
|
|
121
|
+
chars: number;
|
|
122
|
+
/** Cuantas veces. `chars` entre `veces` dice si es una gorda o muchas pequeñas. */
|
|
123
|
+
veces: number;
|
|
124
|
+
}
|
|
125
|
+
export interface SesionDeTraza {
|
|
126
|
+
id: string;
|
|
127
|
+
llamadas: number;
|
|
128
|
+
input: number;
|
|
129
|
+
output: number;
|
|
130
|
+
cache: number;
|
|
131
|
+
contexto: number;
|
|
132
|
+
origenes: GastoDeOrigen[];
|
|
133
|
+
tools: UsoDeTool[];
|
|
134
|
+
/** Qué tools llamó CADA agente, por nombre. Vacío en una traza anterior a que se registrara. */
|
|
135
|
+
toolsPorAgente: Array<{
|
|
136
|
+
agente: string;
|
|
137
|
+
total: number;
|
|
138
|
+
tools: Array<{
|
|
139
|
+
nombre: string;
|
|
140
|
+
veces: number;
|
|
141
|
+
}>;
|
|
142
|
+
}>;
|
|
143
|
+
/** Lo que el orquestador pidió a cada especialista, con el encargo (acotado). */
|
|
144
|
+
delegaciones: Array<{
|
|
145
|
+
de: string;
|
|
146
|
+
a: string;
|
|
147
|
+
chars: number;
|
|
148
|
+
encargo?: string;
|
|
149
|
+
}>;
|
|
150
|
+
/** Encarnaciones de especialistas que arrancaron con memoria (tokens de su historial) y sin ella. */
|
|
151
|
+
memoria: {
|
|
152
|
+
con: number;
|
|
153
|
+
sin: number;
|
|
154
|
+
tokens: number;
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* Cuántas tools gastó el ORQUESTADOR. El resto son de los especialistas.
|
|
158
|
+
*
|
|
159
|
+
* Dos cubos y no cinco porque el dato solo da para dos: el namespace del stream dice si un
|
|
160
|
+
* chunk es del padre o de un especialista, pero no de CUÁL —sus segmentos son ids opacos—.
|
|
161
|
+
* Repartir entre los cinco pedía una heurística que ya se vio fallar (daba 21 tools a uno
|
|
162
|
+
* cuyo tope son 20), y un número que parece un dato y es una inferencia es peor que no
|
|
163
|
+
* tenerlo. El cubo que hacía falta para decidir el presupuesto del orquestador es uno de
|
|
164
|
+
* estos dos.
|
|
165
|
+
*/
|
|
166
|
+
toolsDelOrquestador: number;
|
|
167
|
+
paralelismo: Paralelismo;
|
|
168
|
+
/** De dónde sale el contexto, lo más gordo primero. Ver `PesoEnContexto`. */
|
|
169
|
+
pesos: PesoEnContexto[];
|
|
170
|
+
/** Todo lo que devolvieron las tools, sumado. */
|
|
171
|
+
charsDeTools: number;
|
|
172
|
+
/** Líneas que no se pudieron leer. Se dicen: una traza a medias no se disimula. */
|
|
173
|
+
ilegibles: number;
|
|
174
|
+
/**
|
|
175
|
+
* El contraste de NUESTRAS cifras con las del motor, turno a turno (solo TrueForge lleva cuentas
|
|
176
|
+
* propias: `motores/trueforge/metricasTrueforge.ts`). Ausente = esta sesión no se contrastó, que
|
|
177
|
+
* no es lo mismo que «coinciden».
|
|
178
|
+
*/
|
|
179
|
+
contraste?: {
|
|
180
|
+
turnos: number;
|
|
181
|
+
conDiferencias: number;
|
|
182
|
+
diferencias: string[];
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Tokens EQUIVALENTES para comparar dos ejecuciones del mismo modelo, no una factura.
|
|
187
|
+
*
|
|
188
|
+
* Asume la caché a un décimo, que es el orden de magnitud que declaran los proveedores que
|
|
189
|
+
* la cobran. La misma cuenta que imprime el corredor de evals, y vive aquí para que sea UNA:
|
|
190
|
+
* dos fórmulas para el mismo número son dos números que acaban divergiendo.
|
|
191
|
+
*/
|
|
192
|
+
export declare function costeEfectivo(uso: {
|
|
193
|
+
input: number;
|
|
194
|
+
output: number;
|
|
195
|
+
cache: number;
|
|
196
|
+
}): number;
|
|
197
|
+
/**
|
|
198
|
+
* Agrupa las líneas por sesión, en el orden en que aparece cada una.
|
|
199
|
+
*
|
|
200
|
+
* El fichero es append-only y una máquina acumula varias ejecuciones: sin partir por
|
|
201
|
+
* `sesion` el informe sumaría el turno de ayer al de ahora y nadie lo notaría, porque la
|
|
202
|
+
* cifra resultante es perfectamente plausible.
|
|
203
|
+
*/
|
|
204
|
+
export declare function resumirTraza(lineas: Iterable<string>): SesionDeTraza[];
|
|
205
|
+
export declare function pintarSesion(sesion: SesionDeTraza): string[];
|
|
206
|
+
/**
|
|
207
|
+
* Lo que costó UN turno, para cerrarlo con una cifra en vez de con un silencio.
|
|
208
|
+
*
|
|
209
|
+
* **Las dos cuentas no se suman**, y por eso son dos filas: los tokens del grafo van contra
|
|
210
|
+
* la clave de API de quien corre y los del agente EXTERNO contra su suscripción. Un token es
|
|
211
|
+
* un token, pero su precio no, así que un total sería una cifra que no significa nada.
|
|
212
|
+
*
|
|
213
|
+
* La cuenta externa **ausente se calla**: una fila de ceros afirma que se midió un agente
|
|
214
|
+
* externo que no corrió. Y una `ventana` de cero es «no se pudo medir», no «cabe todo»:
|
|
215
|
+
* misma regla que `consumoPersistible`, que tampoco la estampa.
|
|
216
|
+
*
|
|
217
|
+
* Vive aquí y no en `cli/run.ts` por el patrón de fallo de este repo: compuesta dentro de
|
|
218
|
+
* `correrReal` —que todos sus tests doblan— la regla quedaría escrita y sin nadie mirándola.
|
|
219
|
+
*/
|
|
220
|
+
export declare function pintarGasto(consumo: ConsumoDeSesionPorCuenta, llamadas: number): string[];
|