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.
Files changed (323) hide show
  1. package/dist/agent/cloudstudio/cloudstudioClient.d.ts +29 -0
  2. package/dist/agent/cloudstudio/cloudstudioMcp.d.ts +414 -0
  3. package/dist/agent/cloudstudio/conexionDeServidor.d.ts +37 -0
  4. package/dist/agent/cloudstudio/conexionDeServidor.js +63 -0
  5. package/dist/agent/cloudstudio/conexionDeServidor.js.map +1 -0
  6. package/dist/agent/cloudstudio/crearRama.d.ts +15 -0
  7. package/dist/agent/cloudstudio/crearRama.js +16 -0
  8. package/dist/agent/cloudstudio/crearRama.js.map +1 -0
  9. package/dist/agent/cloudstudio/descarga.d.ts +44 -0
  10. package/dist/agent/cloudstudio/manifiesto.d.ts +25 -0
  11. package/dist/agent/cloudstudio/ramaActiva.d.ts +24 -0
  12. package/dist/agent/cloudstudio/subida.d.ts +61 -0
  13. package/dist/agent/cloudstudio/subida.js +7 -1
  14. package/dist/agent/cloudstudio/subida.js.map +1 -1
  15. package/dist/agent/cloudstudio/validarTrasDescarga.d.ts +13 -0
  16. package/dist/agent/cloudstudio/zip.d.ts +13 -0
  17. package/dist/agent/conectores/conectoresEnDisco.d.ts +47 -0
  18. package/dist/agent/conectores/gestorJira.d.ts +50 -0
  19. package/dist/agent/conectores/gestorNotion.d.ts +45 -0
  20. package/dist/agent/conectores/proveedorDeConector.d.ts +43 -0
  21. package/dist/agent/conectores/servicioDeConectores.d.ts +112 -0
  22. package/dist/agent/config/authEnDisco.d.ts +43 -0
  23. package/dist/agent/config/catalogoModelos.d.ts +79 -0
  24. package/dist/agent/config/configEnDisco.d.ts +235 -0
  25. package/dist/agent/config/crearProyecto.d.ts +20 -0
  26. package/dist/agent/config/diagnosticoDeNodeEnMaquina.d.ts +44 -0
  27. package/dist/agent/config/ecoDeRazonamiento.d.ts +104 -0
  28. package/dist/agent/config/entorno.d.ts +83 -0
  29. package/dist/agent/config/fuentesEnRed.d.ts +12 -0
  30. package/dist/agent/config/gemini.d.ts +5 -0
  31. package/dist/agent/config/iconosEnRed.d.ts +10 -0
  32. package/dist/agent/config/identidadEnDisco.d.ts +27 -0
  33. package/dist/agent/config/modelos.d.ts +77 -0
  34. package/dist/agent/config/modelosDeMotor.d.ts +52 -0
  35. package/dist/agent/config/mudanzaEnDisco.d.ts +99 -0
  36. package/dist/agent/config/persona.d.ts +1 -0
  37. package/dist/agent/config/selectorEnMaquina.d.ts +35 -0
  38. package/dist/agent/config/settingsEnDisco.d.ts +206 -0
  39. package/dist/agent/config/versionEnDisco.d.ts +17 -0
  40. package/dist/agent/dispositivos/arranqueDeEmulador.d.ts +60 -0
  41. package/dist/agent/dispositivos/cajasDeMaqueta.d.ts +61 -0
  42. package/dist/agent/dispositivos/decodificarImagen.d.ts +21 -0
  43. package/dist/agent/dispositivos/descargaDeHerramientas.d.ts +44 -0
  44. package/dist/agent/dispositivos/dispositivosEnMaquina.d.ts +161 -0
  45. package/dist/agent/dispositivos/geometriaEnDisco.d.ts +17 -0
  46. package/dist/agent/dispositivos/hotswap.d.ts +194 -0
  47. package/dist/agent/dispositivos/instalacionEnMaquina.d.ts +156 -0
  48. package/dist/agent/dispositivos/juezVisual.d.ts +144 -0
  49. package/dist/agent/dispositivos/lanzamientoEnMaquina.d.ts +197 -0
  50. package/dist/agent/dispositivos/paqueteDelProyecto.d.ts +28 -0
  51. package/dist/agent/dispositivos/procesosEnMaquina.d.ts +154 -0
  52. package/dist/agent/dispositivos/recargaEnAparato.d.ts +30 -0
  53. package/dist/agent/dispositivos/sensorDeArranque.d.ts +42 -0
  54. package/dist/agent/exportarPdf.d.ts +72 -0
  55. package/dist/agent/grafo/aprendido.d.ts +28 -0
  56. package/dist/agent/grafo/arbolDeProyecto.d.ts +205 -0
  57. package/dist/agent/grafo/artefactosEnDisco.d.ts +35 -0
  58. package/dist/agent/grafo/atributosXone.d.ts +31 -0
  59. package/dist/agent/grafo/buscarIcono.d.ts +32 -0
  60. package/dist/agent/grafo/busquedaRegex.d.ts +56 -0
  61. package/dist/agent/grafo/codificacionDelProyecto.d.ts +7 -0
  62. package/dist/agent/grafo/compararCapturas.d.ts +22 -0
  63. package/dist/agent/grafo/copiarArtefacto.d.ts +64 -0
  64. package/dist/agent/grafo/criticaVisual.d.ts +60 -0
  65. package/dist/agent/grafo/describirImagen.d.ts +79 -0
  66. package/dist/agent/grafo/diferenciaDeCapturas.d.ts +33 -0
  67. package/dist/agent/grafo/ejecucionCancelable.d.ts +45 -0
  68. package/dist/agent/grafo/escriturasEnSerie.d.ts +31 -0
  69. package/dist/agent/grafo/excluirTools.d.ts +37 -0
  70. package/dist/agent/grafo/fuentesDeGoogle.d.ts +37 -0
  71. package/dist/agent/grafo/generarFondoSvg.d.ts +52 -0
  72. package/dist/agent/grafo/incorporarAdjunto.d.ts +98 -0
  73. package/dist/agent/grafo/lectorDeReferencias.d.ts +28 -0
  74. package/dist/agent/grafo/marcarCriteriosDelPlan.d.ts +47 -0
  75. package/dist/agent/grafo/memoriaDeProyecto.d.ts +15 -0
  76. package/dist/agent/grafo/navegacionXone.d.ts +60 -0
  77. package/dist/agent/grafo/opcionesDeFicheros.d.ts +23 -0
  78. package/dist/agent/grafo/perfiles.d.ts +225 -0
  79. package/dist/agent/grafo/proyecto.d.ts +450 -0
  80. package/dist/agent/grafo/skills.d.ts +181 -0
  81. package/dist/agent/grafo/traerDeLaMaquina.d.ts +60 -0
  82. package/dist/agent/grafo/unirSecciones.d.ts +20 -0
  83. package/dist/agent/grafo/validacionXone.d.ts +35 -0
  84. package/dist/agent/grafo/validarFicheroXone.d.ts +33 -0
  85. package/dist/agent/grafo/xoneAgent.d.ts +166 -0
  86. package/dist/agent/motores/motoresLocales.d.ts +87 -0
  87. package/dist/agent/motores/trueforge/capacidades.d.ts +183 -0
  88. package/dist/agent/motores/trueforge/convertirAP.d.ts +38 -0
  89. package/dist/agent/motores/trueforge/detencion.d.ts +70 -0
  90. package/dist/agent/motores/trueforge/esperas.d.ts +38 -0
  91. package/dist/agent/motores/trueforge/eventosTrueforge.d.ts +56 -0
  92. package/dist/agent/motores/trueforge/informesDeHijos.d.ts +48 -0
  93. package/dist/agent/motores/trueforge/medidaAutomatica.d.ts +37 -0
  94. package/dist/agent/motores/trueforge/memoriaDeEspecialistas.d.ts +60 -0
  95. package/dist/agent/motores/trueforge/memoriaTrueforge.d.ts +131 -0
  96. package/dist/agent/motores/trueforge/metricasTrueforge.d.ts +45 -0
  97. package/dist/agent/motores/trueforge/modeloExterno.d.ts +9 -0
  98. package/dist/agent/motores/trueforge/modeloLangchain.d.ts +69 -0
  99. package/dist/agent/motores/trueforge/notas.d.ts +48 -0
  100. package/dist/agent/motores/trueforge/proponerTareas.d.ts +30 -0
  101. package/dist/agent/motores/trueforge/recortes.d.ts +47 -0
  102. package/dist/agent/motores/trueforge/resumenSeguro.d.ts +33 -0
  103. package/dist/agent/motores/trueforge/sesionTrueforge.d.ts +273 -0
  104. package/dist/agent/motores/trueforge/skillsTrueforge.d.ts +16 -0
  105. package/dist/agent/motores/trueforge/toolsDeConectores.d.ts +36 -0
  106. package/dist/agent/motores/trueforge/toolsDeFichero.d.ts +146 -0
  107. package/dist/agent/motores/trueforge/toolsPropias.d.ts +38 -0
  108. package/dist/agent/motores/trueforge/traerDeStitch.d.ts +63 -0
  109. package/dist/agent/motores/trueforge/trueforge.d.ts +35 -0
  110. package/dist/agent/navegacion/estilosEnDisco.d.ts +41 -0
  111. package/dist/agent/navegacion/hechosEnDisco.d.ts +19 -0
  112. package/dist/agent/navegacion/indiceEnDisco.d.ts +50 -0
  113. package/dist/agent/navegacion/modeloDeProyecto.d.ts +86 -0
  114. package/dist/agent/planesEnDisco.d.ts +18 -0
  115. package/dist/agent/publicarPlan.d.ts +20 -0
  116. package/dist/agent/raizDelPaquete.d.ts +9 -0
  117. package/dist/agent/remoto/ngrokEnMaquina.d.ts +44 -0
  118. package/dist/agent/remoto/puenteWebSocket.d.ts +59 -0
  119. package/dist/agent/remoto/tunelNgrok.d.ts +31 -0
  120. package/dist/agent/renombrarSobre.d.ts +14 -0
  121. package/dist/agent/sesiones/adjuntosDeSesion.d.ts +64 -0
  122. package/dist/agent/sesiones/baseDeFichero.d.ts +9 -0
  123. package/dist/agent/sesiones/checkpointer.d.ts +146 -0
  124. package/dist/agent/sesiones/git.d.ts +66 -0
  125. package/dist/agent/sesiones/gitSync.d.ts +264 -0
  126. package/dist/agent/sesiones/memoriaDeHilo.d.ts +4 -0
  127. package/dist/agent/sesiones/modeloDelCambio.d.ts +7 -0
  128. package/dist/agent/sesiones/parcheEnTexto.d.ts +9 -0
  129. package/dist/agent/sesiones/sesionGit.d.ts +155 -0
  130. package/dist/agent/subagentes/actividadDeCodex.d.ts +8 -0
  131. package/dist/agent/subagentes/agentesEnDisco.d.ts +198 -0
  132. package/dist/agent/subagentes/consumoExterno.d.ts +83 -0
  133. package/dist/agent/subagentes/ejecutableEnWindows.d.ts +53 -0
  134. package/dist/agent/subagentes/escrituraDeCodex.d.ts +94 -0
  135. package/dist/agent/subagentes/escrituraDeOpencode.d.ts +67 -0
  136. package/dist/agent/subagentes/escrituraExterna.d.ts +419 -0
  137. package/dist/agent/subagentes/pluginDeSkills.d.ts +84 -0
  138. package/dist/agent/subagentes/subagenteCodex.d.ts +76 -0
  139. package/dist/agent/subagentes/subagenteExterno.d.ts +169 -0
  140. package/dist/agent/subagentes/subagenteOpencode.d.ts +126 -0
  141. package/dist/agent/tareas/aumentador.d.ts +99 -0
  142. package/dist/agent/tareas/juezDeTarea.d.ts +64 -0
  143. package/dist/agent/tareas/reflejoEnElGestor.d.ts +38 -0
  144. package/dist/agent/tareas/sondeoDelGestor.d.ts +49 -0
  145. package/dist/agent/tareas/tareasEnDisco.d.ts +141 -0
  146. package/dist/agent/trazaDeErroresEnDisco.d.ts +10 -0
  147. package/dist/agent/turno/depuracion.d.ts +1 -0
  148. package/dist/agent/turno/diagnosticoDeTools.d.ts +124 -0
  149. package/dist/agent/turno/ficherosDelProyecto.d.ts +10 -0
  150. package/dist/agent/turno/guionizado.d.ts +18 -0
  151. package/dist/agent/turno/informeDeTraza.d.ts +220 -0
  152. package/dist/agent/turno/inspectorDePrompt.d.ts +150 -0
  153. package/dist/agent/turno/instantanea.d.ts +16 -0
  154. package/dist/agent/turno/interrupts.d.ts +54 -0
  155. package/dist/agent/turno/juezDelTurnoConModelo.d.ts +26 -0
  156. package/dist/agent/turno/mensajes.d.ts +23 -0
  157. package/dist/agent/turno/normalizar.d.ts +15 -0
  158. package/dist/agent/turno/puente.d.ts +196 -0
  159. package/dist/agent/turno/registroDeFallos.d.ts +39 -0
  160. package/dist/agent/turno/resumenDeContexto.d.ts +269 -0
  161. package/dist/agent/turno/resumenDeTool.d.ts +33 -0
  162. package/dist/agent/turno/rubrica.d.ts +35 -0
  163. package/dist/agent/turno/sesionReal.d.ts +89 -0
  164. package/dist/agent/turno/textoDeTool.d.ts +19 -0
  165. package/dist/agent/turno/turnoReal.d.ts +210 -0
  166. package/dist/agent/turno/verificacion.d.ts +85 -0
  167. package/dist/agent/turno/verificador.d.ts +66 -0
  168. package/dist/bin.d.ts +2 -0
  169. package/dist/cli/acuseDeModelo.d.ts +18 -0
  170. package/dist/cli/aprobar.d.ts +162 -0
  171. package/dist/cli/config.d.ts +17 -0
  172. package/dist/cli/consola.d.ts +473 -0
  173. package/dist/cli/describe.d.ts +7 -0
  174. package/dist/cli/doctor.d.ts +8 -0
  175. package/dist/cli/fuentesDeDisco.d.ts +25 -0
  176. package/dist/cli/main.d.ts +291 -0
  177. package/dist/cli/markdown.d.ts +126 -0
  178. package/dist/cli/panel.d.ts +38 -0
  179. package/dist/cli/podar.d.ts +38 -0
  180. package/dist/cli/run.d.ts +30 -0
  181. package/dist/cli/spinner.d.ts +37 -0
  182. package/dist/cli/stdio.d.ts +94 -0
  183. package/dist/cli/tema.d.ts +68 -0
  184. package/dist/cli/tokens.d.ts +16 -0
  185. package/dist/cli/traza.d.ts +19 -0
  186. package/dist/cli/tui/app.d.ts +23 -0
  187. package/dist/cli/tui/aprobarTui.d.ts +46 -0
  188. package/dist/cli/tui/barra.d.ts +43 -0
  189. package/dist/cli/tui/correrTui.d.ts +119 -0
  190. package/dist/cli/tui/entrada.d.ts +14 -0
  191. package/dist/cli/tui/filas.d.ts +13 -0
  192. package/dist/cli/tui/logo.d.ts +20 -0
  193. package/dist/cli/tui/pielTui.d.ts +15 -0
  194. package/dist/cli/tui/raton.d.ts +68 -0
  195. package/dist/cli/tui/sidebar.d.ts +63 -0
  196. package/dist/cli/tui/store.d.ts +102 -0
  197. package/dist/cli/tui/tarjeta.d.ts +8 -0
  198. package/dist/cli/tui/temaInk.d.ts +67 -0
  199. package/dist/cli/tui/transcript.d.ts +32 -0
  200. package/dist/cli/verify.d.ts +9 -0
  201. package/dist/cli/wizardInicial.d.ts +59 -0
  202. package/dist/core/actos.d.ts +437 -0
  203. package/dist/core/adjuntos.d.ts +77 -0
  204. package/dist/core/agentes.d.ts +353 -0
  205. package/dist/core/analisisDeSesion.d.ts +63 -0
  206. package/dist/core/aprendido.d.ts +41 -0
  207. package/dist/core/artefactos.d.ts +74 -0
  208. package/dist/core/atributosXone.d.ts +53 -0
  209. package/dist/core/bitacora.d.ts +21 -0
  210. package/dist/core/cloudstudio.d.ts +168 -0
  211. package/dist/core/codificacion.d.ts +81 -0
  212. package/dist/core/comandoExterno.d.ts +49 -0
  213. package/dist/core/compararCapturas.d.ts +136 -0
  214. package/dist/core/conectores.d.ts +296 -0
  215. package/dist/core/config.d.ts +148 -0
  216. package/dist/core/contextos.d.ts +54 -0
  217. package/dist/core/convertirAP.d.ts +56 -0
  218. package/dist/core/copiaDeAvd.d.ts +44 -0
  219. package/dist/core/cssBienFormado.d.ts +22 -0
  220. package/dist/core/deps.d.ts +28 -0
  221. package/dist/core/descargas.d.ts +61 -0
  222. package/dist/core/descripcionDePantalla.d.ts +121 -0
  223. package/dist/core/descriptoresDeApp.d.ts +108 -0
  224. package/dist/core/diagnosticoDeNode.d.ts +51 -0
  225. package/dist/core/diff.d.ts +26 -0
  226. package/dist/core/diffDeColecciones.d.ts +54 -0
  227. package/dist/core/disenoVinculado.d.ts +17 -0
  228. package/dist/core/dispositivoDeSesion.d.ts +22 -0
  229. package/dist/core/dispositivoElegido.d.ts +17 -0
  230. package/dist/core/dispositivos.d.ts +469 -0
  231. package/dist/core/entrega.d.ts +341 -0
  232. package/dist/core/entrelazar.d.ts +48 -0
  233. package/dist/core/esfuerzo.d.ts +120 -0
  234. package/dist/core/esqueleto.d.ts +38 -0
  235. package/dist/core/estiloMedido.d.ts +70 -0
  236. package/dist/core/estilos.d.ts +76 -0
  237. package/dist/core/events.d.ts +218 -0
  238. package/dist/core/exportacion.d.ts +88 -0
  239. package/dist/core/fallos.d.ts +79 -0
  240. package/dist/core/fondosSvg.d.ts +115 -0
  241. package/dist/core/fotoDeColecciones.d.ts +45 -0
  242. package/dist/core/fuentes.d.ts +96 -0
  243. package/dist/core/geometriaDePantalla.d.ts +171 -0
  244. package/dist/core/gestorDeTareas.d.ts +295 -0
  245. package/dist/core/hechosDelProyecto.d.ts +70 -0
  246. package/dist/core/hotswap.d.ts +30 -0
  247. package/dist/core/iconos.d.ts +86 -0
  248. package/dist/core/identidadDeProveedor.d.ts +20 -0
  249. package/dist/core/idiomaDeLaRespuesta.d.ts +26 -0
  250. package/dist/core/imagenesDeDocumento.d.ts +40 -0
  251. package/dist/core/jsParaRhino.d.ts +3 -0
  252. package/dist/core/juezDelTurno.d.ts +95 -0
  253. package/dist/core/logDeDispositivo.d.ts +67 -0
  254. package/dist/core/memoria.d.ts +18 -0
  255. package/dist/core/metodoDeComparacionVisual.d.ts +20 -0
  256. package/dist/core/modelos.d.ts +198 -0
  257. package/dist/core/modoDeEscritura.d.ts +155 -0
  258. package/dist/core/motor.d.ts +43 -0
  259. package/dist/core/motoresLocales.d.ts +113 -0
  260. package/dist/core/mudanzaDeWorkspace.d.ts +112 -0
  261. package/dist/core/navegacion.d.ts +172 -0
  262. package/dist/core/notify.d.ts +77 -0
  263. package/dist/core/nucleoXone.d.ts +28 -0
  264. package/dist/core/panorama.d.ts +68 -0
  265. package/dist/core/paqueteDeSoporte.d.ts +100 -0
  266. package/dist/core/planDeSubida.d.ts +56 -0
  267. package/dist/core/planes.d.ts +53 -0
  268. package/dist/core/podaDeCheckpoint.d.ts +75 -0
  269. package/dist/core/ports.d.ts +1034 -0
  270. package/dist/core/puedeLanzarse.d.ts +181 -0
  271. package/dist/core/puertosDeAvd.d.ts +59 -0
  272. package/dist/core/recargaEnCaliente.d.ts +52 -0
  273. package/dist/core/referenciasDeImagen.d.ts +36 -0
  274. package/dist/core/remoto.d.ts +76 -0
  275. package/dist/core/repartoDeEncargo.d.ts +80 -0
  276. package/dist/core/rubrica.d.ts +78 -0
  277. package/dist/core/rutaVirtual.d.ts +29 -0
  278. package/dist/core/selectorDeCarpeta.d.ts +59 -0
  279. package/dist/core/serieDeEscrituras.d.ts +58 -0
  280. package/dist/core/settings.d.ts +421 -0
  281. package/dist/core/shellDeAgente.d.ts +177 -0
  282. package/dist/core/skills.d.ts +129 -0
  283. package/dist/core/stitch.d.ts +114 -0
  284. package/dist/core/tareas.d.ts +412 -0
  285. package/dist/core/tareasDelPlan.d.ts +123 -0
  286. package/dist/core/tareasEnElGestor.d.ts +117 -0
  287. package/dist/core/textos.d.ts +8 -0
  288. package/dist/core/topeAgotado.d.ts +55 -0
  289. package/dist/core/traerDeLaMaquina.d.ts +33 -0
  290. package/dist/core/trazaDeErrores.d.ts +83 -0
  291. package/dist/core/tunel.d.ts +45 -0
  292. package/dist/core/turno.d.ts +154 -0
  293. package/dist/core/validacionDeEscritura.d.ts +95 -0
  294. package/dist/core/verificacionDeSubida.d.ts +14 -0
  295. package/dist/core/version.d.ts +35 -0
  296. package/dist/core/xmlBienFormado.d.ts +23 -0
  297. package/dist/core/zipDeAdjunto.d.ts +28 -0
  298. package/dist/core/zipDeSkill.d.ts +74 -0
  299. package/dist/lib/tareaAutonoma.d.ts +36 -0
  300. package/dist/lib/tareaAutonoma.js +259 -0
  301. package/dist/lib/tareaAutonoma.js.map +1 -0
  302. package/dist/lib.d.ts +31 -0
  303. package/dist/lib.js +28 -0
  304. package/dist/lib.js.map +1 -0
  305. package/dist/vendor/hitl.d.ts +69 -0
  306. package/dist/vendor/skillLoaders/catalog.d.ts +27 -0
  307. package/dist/vendor/sqliteSaver.d.ts +22 -0
  308. package/dist/vendor/tokenTracking.d.ts +22 -0
  309. package/dist/web/servidor/arranque.d.ts +1372 -0
  310. package/dist/web/servidor/consolaDeTarea.d.ts +166 -0
  311. package/dist/web/servidor/consolaWeb.d.ts +142 -0
  312. package/dist/web/servidor/corredorDeTareas.d.ts +395 -0
  313. package/dist/web/servidor/datosDeCierre.d.ts +4 -0
  314. package/dist/web/servidor/interrupcion.d.ts +39 -0
  315. package/dist/web/servidor/pielWeb.d.ts +32 -0
  316. package/dist/web/servidor/puenteRemoto.d.ts +80 -0
  317. package/dist/web/servidor/servidor.d.ts +53 -0
  318. package/dist/web/servidor/sesiones.d.ts +342 -0
  319. package/dist/web/servidor/soporte.d.ts +65 -0
  320. package/dist/web/servidor/transporte.d.ts +2751 -0
  321. package/dist/web/servidor/vestibulo.d.ts +952 -0
  322. package/dist/web/servidor/visorOpenui.d.ts +33 -0
  323. 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[];