xonecode 0.5.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/web/dist/assets/{index-BB3SamhR.css → index-Boak51UP.css} +1 -1
- package/apps/web/dist/assets/index-Cg28x6nG.js +477 -0
- package/apps/web/dist/assets/{php-D_2--9WK.js → php-Cu6F_QCJ.js} +1 -1
- package/apps/web/dist/assets/{ruby-DSHSDbk1.js → ruby-BiqQPoC6.js} +1 -1
- package/apps/web/dist/index.html +2 -2
- package/dist/agent/{cloudstudioClient.js → cloudstudio/cloudstudioClient.js} +10 -0
- package/dist/agent/cloudstudio/cloudstudioClient.js.map +1 -0
- package/dist/agent/{cloudstudioMcp.js → cloudstudio/cloudstudioMcp.js} +5 -5
- package/dist/agent/cloudstudio/cloudstudioMcp.js.map +1 -0
- package/dist/agent/{descarga.js → cloudstudio/descarga.js} +17 -7
- package/dist/agent/cloudstudio/descarga.js.map +1 -0
- package/dist/agent/cloudstudio/manifiesto.js.map +1 -0
- package/dist/agent/cloudstudio/ramaActiva.js +11 -0
- package/dist/agent/cloudstudio/ramaActiva.js.map +1 -0
- package/dist/agent/{subida.js → cloudstudio/subida.js} +16 -7
- package/dist/agent/cloudstudio/subida.js.map +1 -0
- package/dist/agent/{zip.js → cloudstudio/zip.js} +1 -1
- package/dist/agent/cloudstudio/zip.js.map +1 -0
- package/dist/agent/{authEnDisco.js → config/authEnDisco.js} +3 -3
- package/dist/agent/config/authEnDisco.js.map +1 -0
- package/dist/agent/{catalogoModelos.js → config/catalogoModelos.js} +47 -1
- package/dist/agent/config/catalogoModelos.js.map +1 -0
- package/dist/agent/{configEnDisco.js → config/configEnDisco.js} +6 -6
- package/dist/agent/config/configEnDisco.js.map +1 -0
- package/dist/agent/{crearProyecto.js → config/crearProyecto.js} +2 -2
- package/dist/agent/config/crearProyecto.js.map +1 -0
- package/dist/agent/config/entorno.js.map +1 -0
- package/dist/agent/config/gemini.js.map +1 -0
- package/dist/agent/config/modelos.js +235 -0
- package/dist/agent/config/modelos.js.map +1 -0
- package/dist/agent/{modelosDeMotor.js → config/modelosDeMotor.js} +1 -1
- package/dist/agent/config/modelosDeMotor.js.map +1 -0
- package/dist/agent/config/mudanzaEnDisco.js +121 -0
- package/dist/agent/config/mudanzaEnDisco.js.map +1 -0
- package/dist/agent/{persona.js → config/persona.js} +1 -1
- package/dist/agent/config/persona.js.map +1 -0
- package/dist/agent/config/selectorEnMaquina.js +45 -0
- package/dist/agent/config/selectorEnMaquina.js.map +1 -0
- package/dist/agent/{settingsEnDisco.js → config/settingsEnDisco.js} +37 -2
- package/dist/agent/config/settingsEnDisco.js.map +1 -0
- package/dist/agent/{versionEnDisco.js → config/versionEnDisco.js} +8 -4
- package/dist/agent/config/versionEnDisco.js.map +1 -0
- package/dist/agent/dispositivos/arranqueDeEmulador.js +146 -0
- package/dist/agent/dispositivos/arranqueDeEmulador.js.map +1 -0
- package/dist/agent/{dispositivosEnMaquina.js → dispositivos/dispositivosEnMaquina.js} +93 -6
- package/dist/agent/dispositivos/dispositivosEnMaquina.js.map +1 -0
- package/dist/agent/dispositivos/hotswap.js.map +1 -0
- package/dist/agent/dispositivos/instalacionEnMaquina.js.map +1 -0
- package/dist/agent/dispositivos/juezVisual.js +152 -0
- package/dist/agent/dispositivos/juezVisual.js.map +1 -0
- package/dist/agent/{lanzamientoEnMaquina.js → dispositivos/lanzamientoEnMaquina.js} +1 -1
- package/dist/agent/dispositivos/lanzamientoEnMaquina.js.map +1 -0
- package/dist/agent/{paqueteDelProyecto.js → dispositivos/paqueteDelProyecto.js} +5 -5
- package/dist/agent/dispositivos/paqueteDelProyecto.js.map +1 -0
- package/dist/agent/dispositivos/procesosEnMaquina.js.map +1 -0
- package/dist/agent/dispositivos/sensorDeArranque.js +154 -0
- package/dist/agent/dispositivos/sensorDeArranque.js.map +1 -0
- package/dist/agent/exportarPdf.js +140 -0
- package/dist/agent/exportarPdf.js.map +1 -0
- package/dist/agent/{arbolDeProyecto.js → grafo/arbolDeProyecto.js} +2 -2
- package/dist/agent/grafo/arbolDeProyecto.js.map +1 -0
- package/dist/agent/{artefactosEnDisco.js → grafo/artefactosEnDisco.js} +2 -2
- package/dist/agent/grafo/artefactosEnDisco.js.map +1 -0
- package/dist/agent/{busquedaRegex.js → grafo/busquedaRegex.js} +41 -1
- package/dist/agent/grafo/busquedaRegex.js.map +1 -0
- package/dist/agent/grafo/criticaVisual.js +115 -0
- package/dist/agent/grafo/criticaVisual.js.map +1 -0
- package/dist/agent/grafo/excluirTools.js +82 -0
- package/dist/agent/grafo/excluirTools.js.map +1 -0
- package/dist/agent/{memoriaDeProyecto.js → grafo/memoriaDeProyecto.js} +1 -1
- package/dist/agent/grafo/memoriaDeProyecto.js.map +1 -0
- package/dist/agent/grafo/navegacionXone.js +231 -0
- package/dist/agent/grafo/navegacionXone.js.map +1 -0
- package/dist/agent/{perfiles.js → grafo/perfiles.js} +96 -10
- package/dist/agent/grafo/perfiles.js.map +1 -0
- package/dist/agent/{proyecto.js → grafo/proyecto.js} +274 -24
- package/dist/agent/grafo/proyecto.js.map +1 -0
- package/dist/agent/grafo/skills.js +425 -0
- package/dist/agent/grafo/skills.js.map +1 -0
- package/dist/agent/grafo/xoneAgent.js +566 -0
- package/dist/agent/grafo/xoneAgent.js.map +1 -0
- package/dist/agent/navegacion/estilosEnDisco.js +110 -0
- package/dist/agent/navegacion/estilosEnDisco.js.map +1 -0
- package/dist/agent/navegacion/hechosEnDisco.js +26 -0
- package/dist/agent/navegacion/hechosEnDisco.js.map +1 -0
- package/dist/agent/navegacion/indiceEnDisco.js +36 -0
- package/dist/agent/navegacion/indiceEnDisco.js.map +1 -0
- package/dist/agent/navegacion/modeloDeProyecto.js +228 -0
- package/dist/agent/navegacion/modeloDeProyecto.js.map +1 -0
- package/dist/agent/raizDelPaquete.js +56 -0
- package/dist/agent/raizDelPaquete.js.map +1 -0
- package/dist/agent/{checkpointer.js → sesiones/checkpointer.js} +1 -1
- package/dist/agent/sesiones/checkpointer.js.map +1 -0
- package/dist/agent/sesiones/git.js.map +1 -0
- package/dist/agent/{gitSync.js → sesiones/gitSync.js} +3 -3
- package/dist/agent/sesiones/gitSync.js.map +1 -0
- package/dist/agent/{sesionGit.js → sesiones/sesionGit.js} +2 -2
- package/dist/agent/sesiones/sesionGit.js.map +1 -0
- package/dist/agent/subagentes/agentesEnDisco.js +818 -0
- package/dist/agent/subagentes/agentesEnDisco.js.map +1 -0
- package/dist/agent/subagentes/consumoExterno.js.map +1 -0
- package/dist/agent/subagentes/escrituraDeCodex.js.map +1 -0
- package/dist/agent/{escrituraDeOpencode.js → subagentes/escrituraDeOpencode.js} +1 -1
- package/dist/agent/subagentes/escrituraDeOpencode.js.map +1 -0
- package/dist/agent/{escrituraExterna.js → subagentes/escrituraExterna.js} +59 -6
- package/dist/agent/subagentes/escrituraExterna.js.map +1 -0
- package/dist/agent/subagentes/pluginDeSkills.js +99 -0
- package/dist/agent/subagentes/pluginDeSkills.js.map +1 -0
- package/dist/agent/subagentes/subagenteCodex.js.map +1 -0
- package/dist/agent/{subagenteExterno.js → subagentes/subagenteExterno.js} +48 -0
- package/dist/agent/subagentes/subagenteExterno.js.map +1 -0
- package/dist/agent/{subagenteOpencode.js → subagentes/subagenteOpencode.js} +53 -1
- package/dist/agent/subagentes/subagenteOpencode.js.map +1 -0
- package/dist/agent/{aumentador.js → tareas/aumentador.js} +2 -2
- package/dist/agent/tareas/aumentador.js.map +1 -0
- package/dist/agent/{juezDeTarea.js → tareas/juezDeTarea.js} +6 -6
- package/dist/agent/tareas/juezDeTarea.js.map +1 -0
- package/dist/agent/{tareasEnDisco.js → tareas/tareasEnDisco.js} +53 -4
- package/dist/agent/tareas/tareasEnDisco.js.map +1 -0
- package/dist/agent/{diagnosticoDeTools.js → turno/diagnosticoDeTools.js} +5 -1
- package/dist/agent/turno/diagnosticoDeTools.js.map +1 -0
- package/dist/agent/{guionizado.js → turno/guionizado.js} +1 -1
- package/dist/agent/turno/guionizado.js.map +1 -0
- package/dist/agent/turno/informeDeTraza.js +245 -0
- package/dist/agent/turno/informeDeTraza.js.map +1 -0
- package/dist/agent/turno/inspectorDePrompt.js +205 -0
- package/dist/agent/turno/inspectorDePrompt.js.map +1 -0
- package/dist/agent/{instantanea.js → turno/instantanea.js} +7 -2
- package/dist/agent/turno/instantanea.js.map +1 -0
- package/dist/agent/{interrupts.js → turno/interrupts.js} +2 -2
- package/dist/agent/turno/interrupts.js.map +1 -0
- package/dist/agent/turno/mensajes.js.map +1 -0
- package/dist/agent/turno/normalizar.js.map +1 -0
- package/dist/agent/{puente.js → turno/puente.js} +71 -4
- package/dist/agent/turno/puente.js.map +1 -0
- package/dist/agent/turno/resumenDeContexto.js +260 -0
- package/dist/agent/turno/resumenDeContexto.js.map +1 -0
- package/dist/agent/{resumenDeTool.js → turno/resumenDeTool.js} +33 -0
- package/dist/agent/turno/resumenDeTool.js.map +1 -0
- package/dist/agent/turno/rubrica.js +91 -0
- package/dist/agent/turno/rubrica.js.map +1 -0
- package/dist/agent/turno/textoDeTool.js.map +1 -0
- package/dist/agent/{turnoReal.js → turno/turnoReal.js} +210 -25
- package/dist/agent/turno/turnoReal.js.map +1 -0
- package/dist/agent/turno/verificador.js.map +1 -0
- package/dist/cli/config.js +1 -1
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/consola.js +72 -9
- package/dist/cli/consola.js.map +1 -1
- package/dist/cli/describe.js +2 -2
- package/dist/cli/describe.js.map +1 -1
- package/dist/cli/doctor.js +1 -1
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/fuentesDeDisco.js +29 -0
- package/dist/cli/fuentesDeDisco.js.map +1 -0
- package/dist/cli/main.js +87 -31
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/run.js +40 -10
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/traza.js +48 -0
- package/dist/cli/traza.js.map +1 -0
- package/dist/cli/tui/correrTui.js +4 -4
- package/dist/cli/tui/correrTui.js.map +1 -1
- package/dist/cli/verify.js +1 -1
- package/dist/cli/verify.js.map +1 -1
- package/dist/core/actos.js +1 -1
- package/dist/core/adjuntos.js +2 -2
- package/dist/core/agentes.js +247 -7
- package/dist/core/agentes.js.map +1 -1
- package/dist/core/artefactos.js +4 -4
- package/dist/core/config.js +1 -1
- package/dist/core/contextos.js +12 -1
- package/dist/core/contextos.js.map +1 -1
- package/dist/core/descargas.js +1 -1
- package/dist/core/dispositivos.js +53 -3
- package/dist/core/dispositivos.js.map +1 -1
- package/dist/core/esfuerzo.js +141 -0
- package/dist/core/esfuerzo.js.map +1 -0
- package/dist/core/esqueleto.js +1 -1
- package/dist/core/estilos.js +78 -0
- package/dist/core/estilos.js.map +1 -0
- package/dist/core/exportacion.js +140 -0
- package/dist/core/exportacion.js.map +1 -0
- package/dist/core/hechosDelProyecto.js +87 -0
- package/dist/core/hechosDelProyecto.js.map +1 -0
- package/dist/core/logDeDispositivo.js +143 -0
- package/dist/core/logDeDispositivo.js.map +1 -0
- package/dist/core/modelos.js +48 -3
- package/dist/core/modelos.js.map +1 -1
- package/dist/core/mudanzaDeWorkspace.js +93 -0
- package/dist/core/mudanzaDeWorkspace.js.map +1 -0
- package/dist/core/navegacion.js +134 -0
- package/dist/core/navegacion.js.map +1 -0
- package/dist/core/notify.js +5 -0
- package/dist/core/notify.js.map +1 -1
- package/dist/core/planDeSubida.js +1 -1
- package/dist/core/planes.js +70 -0
- package/dist/core/planes.js.map +1 -0
- package/dist/core/ports.js +4 -0
- package/dist/core/ports.js.map +1 -1
- package/dist/core/rubrica.js +90 -0
- package/dist/core/rubrica.js.map +1 -0
- package/dist/core/selectorDeCarpeta.js +87 -0
- package/dist/core/selectorDeCarpeta.js.map +1 -0
- package/dist/core/settings.js +56 -7
- package/dist/core/settings.js.map +1 -1
- package/dist/core/shellDeAgente.js +144 -0
- package/dist/core/shellDeAgente.js.map +1 -0
- package/dist/core/skills.js +158 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/topeAgotado.js +69 -0
- package/dist/core/topeAgotado.js.map +1 -0
- package/dist/core/zipDeSkill.js +107 -0
- package/dist/core/zipDeSkill.js.map +1 -0
- package/dist/web/servidor/arranque.js +853 -54
- package/dist/web/servidor/arranque.js.map +1 -1
- package/dist/web/servidor/corredorDeTareas.js +3 -3
- package/dist/web/servidor/corredorDeTareas.js.map +1 -1
- package/dist/web/servidor/sesiones.js +34 -6
- package/dist/web/servidor/sesiones.js.map +1 -1
- package/dist/web/servidor/transporte.js +1 -1
- package/dist/web/servidor/transporte.js.map +1 -1
- package/dist/web/servidor/vestibulo.js +62 -13
- package/dist/web/servidor/vestibulo.js.map +1 -1
- package/package.json +7 -4
- package/skills/archify/SKILL.md +25 -2
- package/skills/artifacts-builder/SKILL.md +23 -0
- package/skills/xone-hotswap/SKILL.md +96 -0
- package/skills/xone-hotswap/scripts/xone-arrancar-android +202 -0
- package/skills/xone-hotswap/scripts/xone-arrancar-ios +85 -0
- package/skills/xone-hotswap/scripts/xone-captura-android +93 -0
- package/skills/xone-hotswap/scripts/xone-desplegar-android +439 -0
- package/skills/xone-hotswap/scripts/xone-hotswap +201 -0
- package/skills/xone-hotswap/scripts/xone-log-android +102 -0
- package/skills/xone-hotswap/scripts/xone-reiniciar-android +132 -0
- package/skills/xone-plan-builder/SKILL.md +22 -4
- package/skills/xone-spec-builder/SKILL.md +37 -7
- package/apps/web/dist/assets/index-CFYAoHdw.js +0 -477
- package/dist/agent/agentesEnDisco.js +0 -539
- package/dist/agent/agentesEnDisco.js.map +0 -1
- package/dist/agent/arbolDeProyecto.js.map +0 -1
- package/dist/agent/artefactosEnDisco.js.map +0 -1
- package/dist/agent/aumentador.js.map +0 -1
- package/dist/agent/authEnDisco.js.map +0 -1
- package/dist/agent/busquedaRegex.js.map +0 -1
- package/dist/agent/catalogoModelos.js.map +0 -1
- package/dist/agent/checkpointer.js.map +0 -1
- package/dist/agent/cloudstudioClient.js.map +0 -1
- package/dist/agent/cloudstudioMcp.js.map +0 -1
- package/dist/agent/configEnDisco.js.map +0 -1
- package/dist/agent/consumoExterno.js.map +0 -1
- package/dist/agent/crearProyecto.js.map +0 -1
- package/dist/agent/descarga.js.map +0 -1
- package/dist/agent/diagnosticoDeTools.js.map +0 -1
- package/dist/agent/dispositivosEnMaquina.js.map +0 -1
- package/dist/agent/entorno.js.map +0 -1
- package/dist/agent/escrituraDeCodex.js.map +0 -1
- package/dist/agent/escrituraDeOpencode.js.map +0 -1
- package/dist/agent/escrituraExterna.js.map +0 -1
- package/dist/agent/gemini.js.map +0 -1
- package/dist/agent/git.js.map +0 -1
- package/dist/agent/gitSync.js.map +0 -1
- package/dist/agent/guionizado.js.map +0 -1
- package/dist/agent/hotswap.js.map +0 -1
- package/dist/agent/instalacionEnMaquina.js.map +0 -1
- package/dist/agent/instantanea.js.map +0 -1
- package/dist/agent/interrupts.js.map +0 -1
- package/dist/agent/juezDeTarea.js.map +0 -1
- package/dist/agent/lanzamientoEnMaquina.js.map +0 -1
- package/dist/agent/manifiesto.js.map +0 -1
- package/dist/agent/memoriaDeProyecto.js.map +0 -1
- package/dist/agent/mensajes.js.map +0 -1
- package/dist/agent/modelos.js +0 -130
- package/dist/agent/modelos.js.map +0 -1
- package/dist/agent/modelosDeMotor.js.map +0 -1
- package/dist/agent/normalizar.js.map +0 -1
- package/dist/agent/paqueteDelProyecto.js.map +0 -1
- package/dist/agent/perfiles.js.map +0 -1
- package/dist/agent/persona.js.map +0 -1
- package/dist/agent/procesosEnMaquina.js.map +0 -1
- package/dist/agent/proyecto.js.map +0 -1
- package/dist/agent/puente.js.map +0 -1
- package/dist/agent/resumenDeContexto.js +0 -30
- package/dist/agent/resumenDeContexto.js.map +0 -1
- package/dist/agent/resumenDeTool.js.map +0 -1
- package/dist/agent/sesionGit.js.map +0 -1
- package/dist/agent/settingsEnDisco.js.map +0 -1
- package/dist/agent/skills.js +0 -65
- package/dist/agent/skills.js.map +0 -1
- package/dist/agent/subagenteCodex.js.map +0 -1
- package/dist/agent/subagenteExterno.js.map +0 -1
- package/dist/agent/subagenteOpencode.js.map +0 -1
- package/dist/agent/subida.js.map +0 -1
- package/dist/agent/tareasEnDisco.js.map +0 -1
- package/dist/agent/textoDeTool.js.map +0 -1
- package/dist/agent/turnoReal.js.map +0 -1
- package/dist/agent/verificador.js.map +0 -1
- package/dist/agent/versionEnDisco.js.map +0 -1
- package/dist/agent/xoneAgent.js +0 -347
- package/dist/agent/xoneAgent.js.map +0 -1
- package/dist/agent/zip.js.map +0 -1
- /package/dist/agent/{manifiesto.js → cloudstudio/manifiesto.js} +0 -0
- /package/dist/agent/{entorno.js → config/entorno.js} +0 -0
- /package/dist/agent/{gemini.js → config/gemini.js} +0 -0
- /package/dist/agent/{hotswap.js → dispositivos/hotswap.js} +0 -0
- /package/dist/agent/{instalacionEnMaquina.js → dispositivos/instalacionEnMaquina.js} +0 -0
- /package/dist/agent/{procesosEnMaquina.js → dispositivos/procesosEnMaquina.js} +0 -0
- /package/dist/agent/{git.js → sesiones/git.js} +0 -0
- /package/dist/agent/{consumoExterno.js → subagentes/consumoExterno.js} +0 -0
- /package/dist/agent/{escrituraDeCodex.js → subagentes/escrituraDeCodex.js} +0 -0
- /package/dist/agent/{subagenteCodex.js → subagentes/subagenteCodex.js} +0 -0
- /package/dist/agent/{mensajes.js → turno/mensajes.js} +0 -0
- /package/dist/agent/{normalizar.js → turno/normalizar.js} +0 -0
- /package/dist/agent/{textoDeTool.js → turno/textoDeTool.js} +0 -0
- /package/dist/agent/{verificador.js → turno/verificador.js} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { textoDe } from "
|
|
1
|
+
import { textoDe } from "../turno/puente.js";
|
|
2
2
|
/** El papel del juez, y solo del juez. Ver `core/modelos.ts`. */
|
|
3
3
|
export const PAPEL_DEL_JUEZ = "afilado";
|
|
4
4
|
/**
|
|
@@ -16,7 +16,7 @@ const TOPE_DE_HALLAZGO = 200;
|
|
|
16
16
|
* No se pudo PREGUNTAR: no hay modelo, no hay clave, no hay red.
|
|
17
17
|
*
|
|
18
18
|
* Es fallo del entorno y no del proyecto, la misma familia que `ErrorDelSimulador`
|
|
19
|
-
* (`agent/verificador.ts`), y por eso es un tipo propio: quien lo recoge tiene que poder
|
|
19
|
+
* (`agent/turno/verificador.ts`), y por eso es un tipo propio: quien lo recoge tiene que poder
|
|
20
20
|
* distinguirlo de un veredicto para aparcar la tarea con el motivo correcto.
|
|
21
21
|
*/
|
|
22
22
|
export class ErrorDelJuezDeTarea extends Error {
|
|
@@ -30,7 +30,7 @@ export class ErrorDelJuezDeTarea extends Error {
|
|
|
30
30
|
*
|
|
31
31
|
* **Dos sitios de envoltura, y la diferencia entre ellos está medida.** Construir el modelo
|
|
32
32
|
* del papel falla ANTES de tocar la red y con un mensaje escrito para leerse: medido contra
|
|
33
|
-
* `agent/modelos.ts`, un `afilado` apuntado a un proveedor sin clave lanza «falta la
|
|
33
|
+
* `agent/config/modelos.ts`, un `afilado` apuntado a un proveedor sin clave lanza «falta la
|
|
34
34
|
* credencial para nvidia (NVIDIA_API_KEY); usa /provider nvidia» —el nuestro— o «Anthropic
|
|
35
35
|
* API key not found» —el del SDK—, y ninguno de los dos lleva nada que no se pueda leer. Ese
|
|
36
36
|
* mensaje SÍ se conserva: es la única línea que dice qué hacer.
|
|
@@ -74,7 +74,7 @@ export function invocarConModelos(modelos) {
|
|
|
74
74
|
* **La severidad se dice en castellano y por su nombre**, y no era cosmético: `h.severidad`
|
|
75
75
|
* se pintaba en crudo, así que un aviso llegaba como «warning» —el enum, en inglés, al lado
|
|
76
76
|
* de un «ERROR» que sí estaba traducido y en mayúsculas—. La huella de reparación del
|
|
77
|
-
* verificador (`agent/turnoReal.ts`) usa solo los ERRORES porque «un aviso que va y viene no
|
|
77
|
+
* verificador (`agent/turno/turnoReal.ts`) usa solo los ERRORES porque «un aviso que va y viene no
|
|
78
78
|
* dice nada de si el error se arregla», y la puerta de entrega (`core/entrega.ts`) cuenta
|
|
79
79
|
* solo errores: si esa distinción manda en el código, no puede llegarle borrosa al juez.
|
|
80
80
|
*
|
|
@@ -93,7 +93,7 @@ const lineaDeHallazgo = (h) => `- ${h.severidad === "error" ? "ERROR" : h.severi
|
|
|
93
93
|
* hallazgo del rojo falso: «se modificaron ficheros de lógica JavaScript durante el turno
|
|
94
94
|
* según los hallazgos del verificador». Un hallazgo no dice quién escribió nada — dice que
|
|
95
95
|
* el proyecto tiene una inconsistencia, y el simulador mira el proyecto ENTERO porque es su
|
|
96
|
-
* API. Es la misma regla que gobierna el reparto en `agent/turnoReal.ts#conVerificacion`:
|
|
96
|
+
* API. Es la misma regla que gobierna el reparto en `agent/turno/turnoReal.ts#conVerificacion`:
|
|
97
97
|
* «un error que ya estaba en un fichero que el agente no abrió no es del agente:
|
|
98
98
|
* atribuírselo sería falso». Aquí se la dice también al juez.
|
|
99
99
|
*/
|
|
@@ -279,7 +279,7 @@ const unaFrase = (texto, tope) => texto
|
|
|
279
279
|
* se busca el primer `{` y el último `}`. Lo que no parsee no es un error: es un veredicto
|
|
280
280
|
* `indeterminado`, que no es verde.
|
|
281
281
|
*/
|
|
282
|
-
function objetoDe(texto) {
|
|
282
|
+
export function objetoDe(texto) {
|
|
283
283
|
const desde = texto.indexOf("{");
|
|
284
284
|
const hasta = texto.lastIndexOf("}");
|
|
285
285
|
if (desde === -1 || hasta <= desde)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"juezDeTarea.js","sourceRoot":"","sources":["../../../src/agent/tareas/juezDeTarea.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,11 +14,60 @@
|
|
|
14
14
|
import { chmodSync, existsSync, linkSync, lstatSync, mkdirSync, readFileSync, realpathSync, renameSync, rmSync, statSync, writeFileSync, readdirSync } from "node:fs";
|
|
15
15
|
import { homedir } from "node:os";
|
|
16
16
|
import { join } from "node:path";
|
|
17
|
-
import { conFeedback } from "
|
|
18
|
-
import { mimeDeAdjunto, nombreDeAdjuntoAceptable } from "
|
|
17
|
+
import { conFeedback } from "../../core/tareas.js";
|
|
18
|
+
import { mimeDeAdjunto, nombreDeAdjuntoAceptable } from "../../core/adjuntos.js";
|
|
19
19
|
/** Bytes que se aceptan por adjunto y por tarea. */
|
|
20
20
|
export const TOPE_DE_ADJUNTO = 20_000_000;
|
|
21
21
|
export const TOPE_DE_ADJUNTOS_POR_TAREA = 50_000_000;
|
|
22
|
+
/**
|
|
23
|
+
* Reescribe las raíces ABSOLUTAS del índice cuando una copia local se ha mudado de sitio.
|
|
24
|
+
*
|
|
25
|
+
* Vive aquí y no en quien muda porque el dueño del formato de `indice.json` es este fichero:
|
|
26
|
+
* un segundo sitio que sepa escribirlo divergiría del primero en cuanto uno de los dos se
|
|
27
|
+
* corrigiera. Quien llama solo aporta la TRADUCCIÓN (ausente = «esta raíz no la mudé yo»).
|
|
28
|
+
*
|
|
29
|
+
* **Se trabaja sobre el JSON crudo**, no sobre `Tarea`: la misma disciplina de
|
|
30
|
+
* `settingsEnDisco.ts`: pasar por un tipo descartaría en silencio del fichero del usuario
|
|
31
|
+
* cualquier campo que este proceso no conozca. Y si no hay índice, o no se puede leer, no se
|
|
32
|
+
* escribe nada: una cola que no está no es una cola rota.
|
|
33
|
+
*
|
|
34
|
+
* Devuelve cuántas entradas cambiaron. Cero no escribe el fichero: reescribirlo sin que haya
|
|
35
|
+
* cambiado nada movería su mtime sin motivo.
|
|
36
|
+
*/
|
|
37
|
+
export function remapearRaicesDeTareas(base, traducir) {
|
|
38
|
+
const indice = join(base ?? join(homedir(), ".xonecode"), "tareas", "indice.json");
|
|
39
|
+
if (!existsSync(indice))
|
|
40
|
+
return 0;
|
|
41
|
+
let bruto;
|
|
42
|
+
try {
|
|
43
|
+
bruto = JSON.parse(readFileSync(indice, "utf8"));
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return 0;
|
|
47
|
+
}
|
|
48
|
+
if (!Array.isArray(bruto))
|
|
49
|
+
return 0;
|
|
50
|
+
let cambiadas = 0;
|
|
51
|
+
const salida = bruto.map((entrada) => {
|
|
52
|
+
if (typeof entrada !== "object" || entrada === null)
|
|
53
|
+
return entrada;
|
|
54
|
+
const proyecto = entrada.proyecto;
|
|
55
|
+
if (typeof proyecto !== "object" || proyecto === null)
|
|
56
|
+
return entrada;
|
|
57
|
+
const raiz = proyecto.raiz;
|
|
58
|
+
if (typeof raiz !== "string")
|
|
59
|
+
return entrada;
|
|
60
|
+
const nueva = traducir(raiz);
|
|
61
|
+
if (nueva === undefined)
|
|
62
|
+
return entrada;
|
|
63
|
+
cambiadas += 1;
|
|
64
|
+
return { ...entrada, proyecto: { ...proyecto, raiz: nueva } };
|
|
65
|
+
});
|
|
66
|
+
if (cambiadas === 0)
|
|
67
|
+
return 0;
|
|
68
|
+
writeFileSync(indice, `${JSON.stringify(salida, null, 1)}\n`, { encoding: "utf8", mode: 0o600 });
|
|
69
|
+
return cambiadas;
|
|
70
|
+
}
|
|
22
71
|
/** Un nombre de adjunto: un segmento llano y nada más. La lista BLANCA de forma vive en
|
|
23
72
|
* `core/adjuntos.ts` —la comparten esto, la ruta de subida y el listado—, y de ella depende
|
|
24
73
|
* que esto no escriba fuera. */
|
|
@@ -39,7 +88,7 @@ export function crearTareasEnDisco(opciones) {
|
|
|
39
88
|
* La carpeta de adjuntos de una tarea, **si su camino REAL sigue dentro de la cola**.
|
|
40
89
|
*
|
|
41
90
|
* La barrera se aplica DOS veces, igual que la del lector de ficheros del proyecto
|
|
42
|
-
* (`agent/arbolDeProyecto.ts`): sobre el TEXTO del id —de balde, antes de tocar el
|
|
91
|
+
* (`agent/grafo/arbolDeProyecto.ts`): sobre el TEXTO del id —de balde, antes de tocar el
|
|
43
92
|
* disco— y sobre el camino REAL, que es lo único que caza un enlace simbólico. Y hace
|
|
44
93
|
* falta, porque estaba medido: con `<base>/<id>` apuntando a otra carpeta,
|
|
45
94
|
* `mkdirSync(…, {recursive:true})` lo SIGUE y `guardarAdjunto` escribía fuera de la cola.
|
|
@@ -412,7 +461,7 @@ export function crearTareasEnDisco(opciones) {
|
|
|
412
461
|
* encaja ahí sin ensanchar ese tipo.
|
|
413
462
|
*
|
|
414
463
|
* **El rechazo se DEVUELVE, nunca se lanza.** Es la misma regla que `write_file`
|
|
415
|
-
* (`agent/proyecto.ts`): quien llama —el cable, o un test— necesita poder decir por qué sin
|
|
464
|
+
* (`agent/grafo/proyecto.ts`): quien llama —el cable, o un test— necesita poder decir por qué sin
|
|
416
465
|
* envolver esto en un `try`, y un `{hecho:false}` es más fácil de propagar hasta una persona
|
|
417
466
|
* que una excepción.
|
|
418
467
|
*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tareasEnDisco.js","sourceRoot":"","sources":["../../../src/agent/tareas/tareasEnDisco.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,10 +35,14 @@ export function crearDiagnosticoDeTools(raiz, entorno = process.env) {
|
|
|
35
35
|
modelo(origen, uso) {
|
|
36
36
|
escribir({ tipo: "modelo", origen, ...uso });
|
|
37
37
|
},
|
|
38
|
-
|
|
38
|
+
corte(origen, limite) {
|
|
39
|
+
escribir({ tipo: "corte", origen, limite });
|
|
40
|
+
},
|
|
41
|
+
herramienta(nombre, detalle, parametros, tracker, origen) {
|
|
39
42
|
escribir({
|
|
40
43
|
tipo: "tool",
|
|
41
44
|
nombre,
|
|
45
|
+
...(origen === undefined ? {} : { origen }),
|
|
42
46
|
...(detalle === undefined ? {} : { detalle }),
|
|
43
47
|
...(parametros === undefined ? {} : { parametros }),
|
|
44
48
|
inputAcumulado: tracker.input,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticoDeTools.js","sourceRoot":"","sources":["../../../src/agent/turno/diagnosticoDeTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,iFAAiF;AACjF,MAAM,CAAC,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAC3D,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAgCtD,8EAA8E;AAC9E,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAY,EACZ,UAA6B,OAAO,CAAC,GAAG;IAExC,IAAI,OAAO,CAAC,oBAAoB,CAAC,KAAK,GAAG;QAAE,OAAO,SAAS,CAAC;IAE5D,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACzE,MAAM,QAAQ,GAAG,CAAC,MAA+B,EAAQ,EAAE;QACzD,IAAI,CAAC;YACH,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACxD,cAAc,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACjH,CAAC;QAAC,MAAM,CAAC;YACP,wEAAwE;YACxE,+DAA+D;QACjE,CAAC;IACH,CAAC,CAAC;IAEF,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7B,OAAO;QACL,MAAM,CAAC,MAAM,EAAE,GAAG;YAChB,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,KAAK,CAAC,MAAM,EAAE,MAAM;YAClB,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM;YACtD,QAAQ,CAAC;gBACP,IAAI,EAAE,MAAM;gBACZ,MAAM;gBACN,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;gBAC3C,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;gBAC7C,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;gBACnD,cAAc,EAAE,OAAO,CAAC,KAAK;gBAC7B,eAAe,EAAE,OAAO,CAAC,MAAM;gBAC/B,cAAc,EAAE,OAAO,CAAC,KAAK;aAC9B,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guionizado.js","sourceRoot":"","sources":["../../../src/agent/turno/guionizado.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C;;;;;;;;;GASG;AACH,MAAM,OAAO,gBAAgB;IAGE;IAFpB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IAE3B,YAA6B,YAAY,CAAC;QAAb,cAAS,GAAT,SAAS,CAAI;IAAG,CAAC;IAE9C,KAAK,CAAC,CAAC,KAAK,CAAC,QAAgB;QAC3B,MAAM,KAAK,GAAG,KAAK,IAAmB,EAAE;YACtC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC;gBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAClF,CAAC,CAAC;QAEF,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QAC5C,MAAM,KAAK,EAAE,CAAC;QAEd,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;QAC7C,MAAM;YACJ,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE;gBACN,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,QAAQ,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;aACjE;SACF,CAAC;QACF,MAAM,KAAK,EAAE,CAAC;QAEd,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAC3E,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;YAC5C,MAAM,KAAK,EAAE,CAAC;QAChB,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAEvC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QAC5C,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACpE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAClD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QAC5C,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACnE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAExE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;QAC7C,KAAK,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE,kBAAkB,EAAE,6BAA6B,CAAC,EAAE,CAAC;YACpG,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;YACxD,MAAM,KAAK,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,245 @@
|
|
|
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
|
+
/**
|
|
19
|
+
* Tokens EQUIVALENTES para comparar dos ejecuciones del mismo modelo, no una factura.
|
|
20
|
+
*
|
|
21
|
+
* Asume la caché a un décimo, que es el orden de magnitud que declaran los proveedores que
|
|
22
|
+
* la cobran. La misma cuenta que imprime el corredor de evals, y vive aquí para que sea UNA:
|
|
23
|
+
* dos fórmulas para el mismo número son dos números que acaban divergiendo.
|
|
24
|
+
*/
|
|
25
|
+
export function costeEfectivo(uso) {
|
|
26
|
+
return Math.round(uso.input - 0.9 * uso.cache + uso.output);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* `offset+limit` de los parámetros, o nada.
|
|
30
|
+
*
|
|
31
|
+
* Se piden los DOS: un `offset` suelto no dice cuánto se leyó, y es justo lo que hay que ver
|
|
32
|
+
* para saber si una lectura fue un fragmento o el fichero entero.
|
|
33
|
+
*/
|
|
34
|
+
function rangoDe(parametros) {
|
|
35
|
+
if (typeof parametros !== "object" || parametros === null)
|
|
36
|
+
return undefined;
|
|
37
|
+
const p = parametros;
|
|
38
|
+
if (typeof p.offset !== "number" || typeof p.limit !== "number")
|
|
39
|
+
return undefined;
|
|
40
|
+
return `${p.offset}+${p.limit}`;
|
|
41
|
+
}
|
|
42
|
+
function numero(valor) {
|
|
43
|
+
return typeof valor === "number" && Number.isFinite(valor) ? valor : 0;
|
|
44
|
+
}
|
|
45
|
+
function texto(valor) {
|
|
46
|
+
return typeof valor === "string" && valor !== "" ? valor : undefined;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Agrupa las líneas por sesión, en el orden en que aparece cada una.
|
|
50
|
+
*
|
|
51
|
+
* El fichero es append-only y una máquina acumula varias ejecuciones: sin partir por
|
|
52
|
+
* `sesion` el informe sumaría el turno de ayer al de ahora y nadie lo notaría, porque la
|
|
53
|
+
* cifra resultante es perfectamente plausible.
|
|
54
|
+
*/
|
|
55
|
+
export function resumirTraza(lineas) {
|
|
56
|
+
const sesiones = new Map();
|
|
57
|
+
let ultima;
|
|
58
|
+
/**
|
|
59
|
+
* Lo ilegible no trae `sesion`, así que se apunta en la última abierta — y si aún no hay
|
|
60
|
+
* ninguna, ESPERA a la siguiente. Abrir una sesión «?» para alojarlo metería en la lista
|
|
61
|
+
* una ejecución que nunca ocurrió, y una traza se lee contando sesiones.
|
|
62
|
+
*/
|
|
63
|
+
let ilegiblesSinDueño = 0;
|
|
64
|
+
const abrir = (id) => {
|
|
65
|
+
const ya = sesiones.get(id);
|
|
66
|
+
if (ya !== undefined)
|
|
67
|
+
return ya;
|
|
68
|
+
const nueva = {
|
|
69
|
+
sesion: { id, llamadas: 0, input: 0, output: 0, cache: 0, contexto: 0, origenes: [], tools: [], toolsDelOrquestador: 0, ilegibles: 0 },
|
|
70
|
+
porOrigen: new Map(),
|
|
71
|
+
porTool: new Map(),
|
|
72
|
+
};
|
|
73
|
+
sesiones.set(id, nueva);
|
|
74
|
+
nueva.sesion.ilegibles += ilegiblesSinDueño;
|
|
75
|
+
ilegiblesSinDueño = 0;
|
|
76
|
+
return nueva;
|
|
77
|
+
};
|
|
78
|
+
for (const linea of lineas) {
|
|
79
|
+
if (linea.trim() === "")
|
|
80
|
+
continue;
|
|
81
|
+
let evento;
|
|
82
|
+
try {
|
|
83
|
+
const leido = JSON.parse(linea);
|
|
84
|
+
if (typeof leido !== "object" || leido === null)
|
|
85
|
+
throw new Error("no es un objeto");
|
|
86
|
+
evento = leido;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
if (ultima === undefined)
|
|
90
|
+
ilegiblesSinDueño += 1;
|
|
91
|
+
else
|
|
92
|
+
ultima.sesion.ilegibles += 1;
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const actual = abrir(texto(evento.sesion) ?? ultima?.sesion.id ?? "?");
|
|
96
|
+
ultima = actual;
|
|
97
|
+
if (evento.tipo === "modelo") {
|
|
98
|
+
const input = numero(evento.input);
|
|
99
|
+
const output = numero(evento.output);
|
|
100
|
+
const cache = numero(evento.cache);
|
|
101
|
+
const contexto = numero(evento.contexto);
|
|
102
|
+
const origen = texto(evento.origen) ?? "(sin origen)";
|
|
103
|
+
actual.sesion.llamadas += 1;
|
|
104
|
+
actual.sesion.input += input;
|
|
105
|
+
actual.sesion.output += output;
|
|
106
|
+
actual.sesion.cache += cache;
|
|
107
|
+
actual.sesion.contexto = Math.max(actual.sesion.contexto, contexto);
|
|
108
|
+
const gasto = actual.porOrigen.get(origen) ?? { origen, llamadas: 0, input: 0, output: 0, cache: 0, contexto: 0, cortes: 0 };
|
|
109
|
+
gasto.llamadas += 1;
|
|
110
|
+
gasto.input += input;
|
|
111
|
+
gasto.output += output;
|
|
112
|
+
gasto.cache += cache;
|
|
113
|
+
gasto.contexto = Math.max(gasto.contexto, contexto);
|
|
114
|
+
actual.porOrigen.set(origen, gasto);
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
if (evento.tipo === "corte") {
|
|
118
|
+
// Un corte puede llegar ANTES que cualquier línea de modelo de ese origen, así que la
|
|
119
|
+
// entrada se crea aquí si falta: si no, el corte se perdería por llegar el primero.
|
|
120
|
+
const origen = texto(evento.origen) ?? "(sin origen)";
|
|
121
|
+
const gasto = actual.porOrigen.get(origen) ?? { origen, llamadas: 0, input: 0, output: 0, cache: 0, contexto: 0, cortes: 0 };
|
|
122
|
+
gasto.cortes += 1;
|
|
123
|
+
actual.porOrigen.set(origen, gasto);
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
if (evento.tipo === "tool") {
|
|
127
|
+
const nombre = texto(evento.nombre) ?? "(sin nombre)";
|
|
128
|
+
// Ausente NO se cuenta como del orquestador: una traza vieja, de antes de que esto se
|
|
129
|
+
// registrara, diría que el orquestador gastó cero — que es «no consta», no «ninguna».
|
|
130
|
+
if (texto(evento.origen) === "orquestador")
|
|
131
|
+
actual.sesion.toolsDelOrquestador += 1;
|
|
132
|
+
const entrada = actual.porTool.get(nombre) ?? {
|
|
133
|
+
uso: { nombre, veces: 0, blancos: [], distintos: 0 },
|
|
134
|
+
blancos: new Map(),
|
|
135
|
+
};
|
|
136
|
+
entrada.uso.veces += 1;
|
|
137
|
+
const detalle = texto(evento.detalle);
|
|
138
|
+
if (detalle !== undefined) {
|
|
139
|
+
const rango = rangoDe(evento.parametros);
|
|
140
|
+
const clave = `${detalle}\u0000${rango ?? ""}`;
|
|
141
|
+
const ya = entrada.blancos.get(clave);
|
|
142
|
+
if (ya === undefined)
|
|
143
|
+
entrada.blancos.set(clave, { detalle, ...(rango === undefined ? {} : { rango }), veces: 1 });
|
|
144
|
+
else
|
|
145
|
+
ya.veces += 1;
|
|
146
|
+
}
|
|
147
|
+
actual.porTool.set(nombre, entrada);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Un fichero ENTERO ilegible sí tiene que decir algo: ahí la sesión sin nombre no compite
|
|
151
|
+
// con ninguna de verdad, y devolver una lista vacía se leería como «no hay traza».
|
|
152
|
+
if (ilegiblesSinDueño > 0 && sesiones.size === 0)
|
|
153
|
+
abrir("?");
|
|
154
|
+
return [...sesiones.values()].map(({ sesion, porOrigen, porTool }) => ({
|
|
155
|
+
...sesion,
|
|
156
|
+
origenes: [...porOrigen.values()].sort((a, b) => costeEfectivo(b) - costeEfectivo(a)),
|
|
157
|
+
tools: [...porTool.values()].map(({ uso, blancos }) => ({
|
|
158
|
+
...uso,
|
|
159
|
+
// Estable: `sort` conserva el orden de llegada entre iguales, así que dentro de los
|
|
160
|
+
// que salieron una vez se leen en el orden en que ocurrieron.
|
|
161
|
+
blancos: [...blancos.values()].sort((a, b) => b.veces - a.veces),
|
|
162
|
+
distintos: blancos.size,
|
|
163
|
+
})),
|
|
164
|
+
}));
|
|
165
|
+
}
|
|
166
|
+
function cifra(n) {
|
|
167
|
+
return n.toLocaleString("es-ES");
|
|
168
|
+
}
|
|
169
|
+
/** Cuántos blancos se enseñan por tool antes de contar el resto. */
|
|
170
|
+
const TOPE_DE_BLANCOS = 10;
|
|
171
|
+
function porcentajeDeCache(uso) {
|
|
172
|
+
return uso.input === 0 ? 0 : Math.round((100 * uso.cache) / uso.input);
|
|
173
|
+
}
|
|
174
|
+
/** Una línea por origen y una por tool. Sin colores: esto es un informe, no una piel. */
|
|
175
|
+
export function pintarSesion(sesion) {
|
|
176
|
+
const lineas = [];
|
|
177
|
+
lineas.push(`--- traza ${sesion.id} ---`);
|
|
178
|
+
lineas.push(` ${sesion.llamadas} llamada(s) · entrada ${cifra(sesion.input)} · salida ${cifra(sesion.output)} · ` +
|
|
179
|
+
`caché ${porcentajeDeCache(sesion)}% · efectivo ≈${cifra(costeEfectivo(sesion))} · ventana máx ${cifra(sesion.contexto)}`);
|
|
180
|
+
if (sesion.origenes.length > 0) {
|
|
181
|
+
lineas.push(" por origen (lo que más cuesta, primero)");
|
|
182
|
+
for (const o of sesion.origenes) {
|
|
183
|
+
const parte = sesion.input + sesion.output === 0 ? 0 : Math.round((100 * costeEfectivo(o)) / costeEfectivo(sesion));
|
|
184
|
+
lineas.push(` ${o.origen.padEnd(18)} ${String(o.llamadas).padStart(3)} llam · entrada ${cifra(o.input)} · salida ${cifra(o.output)} · ` +
|
|
185
|
+
`caché ${porcentajeDeCache(o)}% · efectivo ≈${cifra(costeEfectivo(o))} (${parte}%)` +
|
|
186
|
+
// Al FINAL de su línea y no en una aparte: lo que hay que poder leer de un vistazo es
|
|
187
|
+
// «estas llamadas no son las de un agente que terminó». Separado en otra línea se lee
|
|
188
|
+
// como una nota al pie de algo que ya se dio por bueno.
|
|
189
|
+
(o.cortes > 0 ? ` ⚠ CORTADO por tope${o.cortes > 1 ? ` ×${o.cortes}` : ""}` : ""));
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (sesion.tools.length > 0) {
|
|
193
|
+
// El reparto solo se dice si CONSTA. Una traza de antes de que el origen se registrara
|
|
194
|
+
// daría cero, y un cero medido y un cero por ausencia no se distinguirían.
|
|
195
|
+
const total = sesion.tools.reduce((s, x) => s + x.veces, 0);
|
|
196
|
+
const orq = sesion.toolsDelOrquestador;
|
|
197
|
+
lineas.push(orq === 0
|
|
198
|
+
? " tools"
|
|
199
|
+
: ` tools (orquestador ${orq} de ${total}, el resto de los especialistas)`);
|
|
200
|
+
for (const t of sesion.tools) {
|
|
201
|
+
// «Seis lecturas» y «seis ficheros» no son lo mismo, así que se dicen los dos: lo
|
|
202
|
+
// primero es el trabajo y lo segundo el alcance, y solo juntos se ve una relectura.
|
|
203
|
+
const alcance = t.distintos === 0 ? "" : ` · ${t.distintos} distinto${t.distintos === 1 ? "" : "s"}`;
|
|
204
|
+
lineas.push(` ${t.nombre.padEnd(18)} ×${t.veces}${alcance}`);
|
|
205
|
+
for (const b of t.blancos.slice(0, TOPE_DE_BLANCOS)) {
|
|
206
|
+
lineas.push(` ${b.detalle}${b.rango === undefined ? "" : ` ${b.rango}`}${b.veces > 1 ? ` ×${b.veces}` : ""}`);
|
|
207
|
+
}
|
|
208
|
+
// Lo que no cabe se CUENTA, nunca se calla: una lista recortada en silencio se lee
|
|
209
|
+
// como la lista entera, y aquí eso sería «solo tocó estos diez ficheros».
|
|
210
|
+
const fuera = t.blancos.length - TOPE_DE_BLANCOS;
|
|
211
|
+
if (fuera > 0)
|
|
212
|
+
lineas.push(` … y ${fuera} más`);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
if (sesion.ilegibles > 0)
|
|
216
|
+
lineas.push(` ${sesion.ilegibles} línea(s) ilegibles, no contadas`);
|
|
217
|
+
return lineas;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Lo que costó UN turno, para cerrarlo con una cifra en vez de con un silencio.
|
|
221
|
+
*
|
|
222
|
+
* **Las dos cuentas no se suman**, y por eso son dos filas: los tokens del grafo van contra
|
|
223
|
+
* la clave de API de quien corre y los del agente EXTERNO contra su suscripción. Un token es
|
|
224
|
+
* un token, pero su precio no, así que un total sería una cifra que no significa nada.
|
|
225
|
+
*
|
|
226
|
+
* La cuenta externa **ausente se calla**: una fila de ceros afirma que se midió un agente
|
|
227
|
+
* externo que no corrió. Y una `ventana` de cero es «no se pudo medir», no «cabe todo»:
|
|
228
|
+
* misma regla que `consumoPersistible`, que tampoco la estampa.
|
|
229
|
+
*
|
|
230
|
+
* Vive aquí y no en `cli/run.ts` por el patrón de fallo de este repo: compuesta dentro de
|
|
231
|
+
* `correrReal` —que todos sus tests doblan— la regla quedaría escrita y sin nadie mirándola.
|
|
232
|
+
*/
|
|
233
|
+
export function pintarGasto(consumo, llamadas) {
|
|
234
|
+
const fila = (nombre, c, llam) => ` ${nombre.padEnd(8)}${llam === undefined ? " " : `${String(llam).padStart(3)} llam `}· ` +
|
|
235
|
+
`entrada ${cifra(c.entrada)} · salida ${cifra(c.salida)} · caché ${porcentajeDeCache({ input: c.entrada, cache: c.cache })}% · ` +
|
|
236
|
+
`efectivo ≈${cifra(costeEfectivo({ input: c.entrada, output: c.salida, cache: c.cache }))}`;
|
|
237
|
+
const lineas = ["--- gasto del turno ---", fila("modelo", consumo.modelo, llamadas)];
|
|
238
|
+
const e = consumo.externo;
|
|
239
|
+
if (e.entrada > 0 || e.salida > 0)
|
|
240
|
+
lineas.push(fila("externo", e));
|
|
241
|
+
if (consumo.contexto > 0)
|
|
242
|
+
lineas.push(` ventana ${cifra(consumo.contexto)} de entrada en la última llamada`);
|
|
243
|
+
return lineas;
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=informeDeTraza.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"informeDeTraza.js","sourceRoot":"","sources":["../../../src/agent/turno/informeDeTraza.ts"],"names":[],"mappings":"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"}
|