xonecode 0.38.41 → 0.39.2

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