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,291 @@
1
+ /**
2
+ * El despachador. Cada comando expone `cmdX(...)` y se registra aquí.
3
+ *
4
+ * Sin librería de argumentos a propósito: hoy hay un comando y una bandera, y una
5
+ * dependencia más es una dependencia más que fijar y vigilar. Cuando haya cinco, se mete.
6
+ */
7
+ import { type MotorDeAgente } from "../core/motor.js";
8
+ import * as readline from "node:readline";
9
+ import type { BaseCheckpointSaver } from "@langchain/langgraph-checkpoint";
10
+ import { type FuentesDeEleccion } from "../core/modelos.js";
11
+ import { cargar } from "../agent/config/configEnDisco.js";
12
+ import { sesionCloudStudio } from "../agent/cloudstudio/cloudstudioMcp.js";
13
+ import { clienteCloudStudio } from "../agent/cloudstudio/cloudstudioClient.js";
14
+ import { cargarSettings } from "../agent/config/settingsEnDisco.js";
15
+ import { descargarProyecto } from "../agent/cloudstudio/descarga.js";
16
+ import { arbolLimpio, cambiosPendientes, esRepoPropio, prepararRepo, sinCommitear, vaciarCopia } from "../agent/sesiones/gitSync.js";
17
+ import { subir } from "../agent/cloudstudio/subida.js";
18
+ import { type Consola, type EjecutorDeTurno } from "./consola.js";
19
+ import { type Escribir } from "./stdio.js";
20
+ import type { ConectoresPort } from "../core/ports.js";
21
+ import type { SesionReal } from "../agent/turno/sesionReal.js";
22
+ /**
23
+ * Las banderas de modelo llevan valor suelto (`--modelo x`, no `--modelo=x`), y ese
24
+ * valor NO empieza por `--`: si no se quita aquí, el join de la petición en `run` lo
25
+ * comería como texto. Devuelve las fuentes ya resueltas y el argv SIN las banderas ni
26
+ * sus valores sueltos, para que `--lento` y el filtro de `--` sigan funcionando igual.
27
+ */
28
+ export declare function extraerBanderasDeModelo(argv: string[]): {
29
+ fuentes: FuentesDeEleccion;
30
+ resto: string[];
31
+ };
32
+ /**
33
+ * El formato compacto ya no vive aquí: `tokens.ts` lo comparte con la sidebar de la
34
+ * TUI, para que las dos pieles digan la misma cifra (ver el comentario de allí).
35
+ */
36
+ /** Las piezas de la barra de estado, ya resueltas: aquí solo queda darles formato. */
37
+ export interface PiezasDeBarra {
38
+ proyecto: string;
39
+ colecciones: number;
40
+ /** El modelo de la sesión, «proveedor/modelo». */
41
+ modelo: string;
42
+ /** Tokens acumulados de la sesión (input + output). */
43
+ tokens: number;
44
+ /** Cuánto ocupa AHORA la ventana del modelo; 0 antes de la primera llamada. */
45
+ contexto: number;
46
+ /** El tope de la ventana, si se sabe (`core/contextos.ts` + config). */
47
+ tope?: number;
48
+ }
49
+ /**
50
+ * La barra de estado como función PURA: la compone quien tiene los valores y
51
+ * la pinta quien tiene el color. Así la barra se puede probar sin TTY — y es
52
+ * que solo se pinta con TTY, que es justo el caso que los tests no pueden ser.
53
+ *
54
+ * La sección `ctx` solo existe si hay algo que medir, y el porcentaje solo si
55
+ * hay tope: sin tope conocido, la cifra va pelada antes que calcular un
56
+ * porcentaje sobre un número inventado.
57
+ */
58
+ export declare function formatearBarra(p: PiezasDeBarra): string;
59
+ /**
60
+ * El tope de la ventana del modelo ACTUAL: tabla de `core/contextos.ts` + lo que el
61
+ * usuario haya fijado en `config.json` (lo de proyecto gana a lo global, como los
62
+ * modelos). Fábrica PORQUE la barra lo lee en cada llamada y no en el arranque:
63
+ * /modelo cambia el modelo en caliente, y un tope del modelo equivocado es un
64
+ * porcentaje que miente. Si el id no parsea —no debería, viene de `resolver`—, no hay
65
+ * tope y no pasa nada.
66
+ *
67
+ * Exportada para que la TUI calcule su `ctx` con LA MISMA función que usa la barra de
68
+ * stdio y la que /config declara: dos pieles no pueden divergir en el tope.
69
+ */
70
+ export declare function crearTopeDelModelo(raiz: string): (id: string) => number | undefined;
71
+ /**
72
+ * ¿TUI o stdio? `--no-tui` gana siempre (el usuario pidió explícitamente la consola
73
+ * clásica); después `--tui` fuerza la TUI aunque no haya TTY (quien la pide, la tiene:
74
+ * sin TTY el raw mode no funciona y el resultado es suyo); por omisión, AMBOS lados
75
+ * TTY → TUI (solo mirar stdout monta la TUI con stdin de tubería — «echo /salir |
76
+ * xonecode» en un terminal real — y los bytes del pipe se consumen como teclas mientras
77
+ * el EOF del pipe no termina el lazo) y cualquier tubería → stdio, que es lo que
78
+ * mantiene el e2e de pipe byte-idéntico.
79
+ */
80
+ /**
81
+ * ¿Captura la TUI el ratón? Con él, la rueda mueve el transcript y no el scrollback del
82
+ * terminal, a cambio de que seleccionar texto sea Alt/Shift + arrastre. `--sin-raton` lo
83
+ * apaga. Pura, para probarla.
84
+ */
85
+ export declare function quiereRaton(argv?: string[]): boolean;
86
+ export declare function decidirTui(argv?: string[]): boolean;
87
+ /**
88
+ * Error de USO: una bandera imposible de obedecer, nunca un fallo del harness. Mismo
89
+ * tratamiento que `ModeloMalEscrito` en el `catch` de `main` — mensaje a stderr, sin
90
+ * traza, código 64 — pero con su propia clase: reusar `ModeloMalEscrito` aquí mentiría
91
+ * sobre la causa, y el contrato de códigos de salida lo lee CI.
92
+ */
93
+ export declare class ErrorDeUso extends Error {
94
+ }
95
+ export type PielElegida = "web" | "consola";
96
+ export declare function decidirPiel(argv?: string[], entorno?: {
97
+ stdinTTY?: boolean;
98
+ }): PielElegida;
99
+ export interface OpcionesWeb {
100
+ puerto: number;
101
+ abrir: boolean;
102
+ /** `--anfitrion <host>`: un nombre extra aceptado en la cabecera `Host`, para un túnel. */
103
+ anfitrion?: string;
104
+ }
105
+ export declare function parsearOpcionesWeb(argv: string[]): OpcionesWeb;
106
+ /**
107
+ * Qué carpeta ve el agente como `/adjuntos/` en ESTA consola (IXCODE-7). Pura y exportada
108
+ * para poder probar la regla sin construir una sesión de verdad — `crearEjecutorReal` no
109
+ * tenía costura para mirar las opciones que le llegan a `abrirSesionReal`.
110
+ *
111
+ * Ganan los de una TAREA (`deTarea`, la carpeta que el corredor conoce y reenvía por la
112
+ * fábrica). Sin tarea, y con carpeta de artefactos POR SESIÓN (`hayArtefactosPorSesion` —
113
+ * cierto en la web, que deriva `/artefactos/` del `hilo`), se montan los adjuntos de la
114
+ * MISMA sesión (`carpetaDeAdjuntosDeSesion`, hermana de `artefactos/`): son los que una
115
+ * persona anexó en el CHAT, y nadie más que este ejecutor sabe en qué sesión está. Sin
116
+ * carpeta de artefactos por sesión (el terminal: su `hilo` es un uuid nuevo en cada
117
+ * arranque, y una carpeta por hilo dejaría basura que nadie puede volver a abrir) no hay
118
+ * nada que montar: `undefined`, y el llamador NO pone el campo (una cadena vacía montaría
119
+ * el cwd del proceso).
120
+ */
121
+ export declare function carpetaDeAdjuntosDelEjecutor(raiz: string, hilo: string, deTarea: string | undefined, hayArtefactosPorSesion: boolean): string | undefined;
122
+ /**
123
+ * El ejecutor de turno REAL de la consola: cada línea de prosa corre sobre una `SesionReal`
124
+ * que sobrevive entre turnos (mismo agente, mismo hilo).
125
+ *
126
+ * La sesión se construye PEREZOSA, en el primer turno de prosa y no al arrancar
127
+ * `entrarEnConsola`, por dos razones:
128
+ * - El `Entorno` completo lo pide `inspeccionar` (el real de `agent/entorno.js`), no el
129
+ * doble `{colecciones}` de la cabecera, y abrir la sesión construye el grafo: hacerlo en
130
+ * el arranque gastaría en una consola que quizá solo se use para `/ayuda` o `/config`.
131
+ * - El detector de `/modelo` y `/nuevo` es la comparación de `estado` entre turnos: los
132
+ * manejadores de `consola.ts` no tocan la sesión (no la conocen), así que la única
133
+ * costura es el `estado` que este ejecutor recibe en cada llamada.
134
+ *
135
+ * `alAbrirSesion` se llama UNA vez, justo tras `abrirSesionReal`, y es la costura por la
136
+ * que `entrarEnConsola` apunta la barra de estado al tracker de la sesión (que alimenta
137
+ * el agente; el de `createTokenTracker()` de cabecera se descarta al reasignarse).
138
+ *
139
+ * Exportada porque la consola web la monta tal cual: es exactamente lo que espera la
140
+ * opción `crearEjecutor` del vestíbulo (`web/servidor/vestibulo.ts`), que usa esa misma
141
+ * costura para poder CERRAR la sesión al cambiar de proyecto. Una segunda fábrica para la
142
+ * web habría sido un segundo sitio donde arreglar cada bug del ejecutor real.
143
+ */
144
+ /**
145
+ * `checkpointerDeProyecto` entra por parámetro y no se importa aquí, y no es purismo: la
146
+ * consola de TERMINAL no lo pasa. Su hilo es un uuid nuevo en cada arranque y no hay índice
147
+ * de sesiones donde reanudarlo, así que persistirlo solo dejaría hilos que nadie puede
148
+ * volver a abrir engordando el fichero del proyecto. Persistir es de quien tiene identidad
149
+ * que reanudar — hoy, la consola web.
150
+ */
151
+ export declare function crearEjecutorReal(alAbrirSesion: (sesion: SesionReal) => void, checkpointerDeProyecto?: (raiz: string) => BaseCheckpointSaver | undefined, carpetaDeArtefactos?: (raiz: string, hilo: string) => string,
152
+ /**
153
+ * La carpeta de los ADJUNTOS de una TAREA — `/adjuntos/` para el agente, de solo lectura.
154
+ *
155
+ * Es un valor y no una función de `(raiz, hilo)` como las dos de arriba, y esa diferencia
156
+ * es el dato: los artefactos se derivan de la sesión, pero los adjuntos de una tarea son de
157
+ * la TAREA, y la tarea solo la conoce quien abrió esta consola (el corredor). Por eso llega
158
+ * a la FÁBRICA: es una propiedad de la consola, igual que su checkpointer.
159
+ *
160
+ * Ausente en toda tarea sin adjuntos. **No es «ausente en toda consola de persona»**
161
+ * (IXCODE-7): una consola de PERSONA con carpeta de artefactos por sesión —la web—
162
+ * monta los adjuntos que la persona anexó en el CHAT de ESA sesión, derivados con
163
+ * `carpetaDeAdjuntosDelEjecutor` y no reenviados por nadie (ver ahí el porqué). Sin
164
+ * carpeta de artefactos por sesión (el terminal) no hay nada que derivar.
165
+ */
166
+ carpetaDeAdjuntos?: string,
167
+ /** Misma costura que `adaptadoresDeProyecto`: los tests no pueden leer el
168
+ * `~/.xonecode/settings.json` de quien corre la suite. */
169
+ leerSettings?: typeof cargarSettings,
170
+ /** Los conectores MCP, el mismo servicio de Ajustes. Solo la web lo tiene; ver `abrirSesionReal`. */
171
+ conectores?: ConectoresPort): EjecutorDeTurno;
172
+ /**
173
+ * Los adaptadores de disco y de red que dependen SOLO de la raíz del proyecto.
174
+ *
175
+ * Existe porque estaban escritos dos veces —una en la rama TUI y otra en la stdio— y eso
176
+ * ya divergió, medido: el arreglo del `entorno` caducado de `/connect-studio` entró en la
177
+ * rama TUI y no en la de stdio, así que por la consola de terminal seguía guardándose una
178
+ * `url` nueva encima de un `entorno` que nombraba el juego de credenciales de OTRO
179
+ * servidor. Es el mismo principio que ya rige aquí para los comandos («la consola y la
180
+ * shell no divergen porque comparten función»), aplicado a los adaptadores: con una sola
181
+ * definición, «las dos ramas hacen lo mismo» deja de ser algo que haya que recordar.
182
+ */
183
+ export declare function adaptadoresDeProyecto(raiz: string,
184
+ /** Misma costura que `guardarEndpointYEntorno`: los tests no pueden leer el
185
+ * `~/.xonecode/settings.json` de quien corre la suite. */
186
+ leerSettings?: typeof cargarSettings): Pick<Consola, "guardarTemaDeProyecto" | "guardarCloudStudioDeProyecto" | "guardarModoDeProyecto" | "guardarProyectoCloudStudioDeProyecto" | "ramasDeCloudStudio" | "guardarRamaDeProyecto" | "guardarModelosDeProyecto" | "sincronizar">;
187
+ /**
188
+ * El completer que monta la consola: comandos Y, tras una «@», ficheros del proyecto.
189
+ *
190
+ * Los ficheros se piden en el momento del Tab (`() => ficherosDelProyecto(raiz)`, no la
191
+ * lista ya hecha): el completer se construye una sola vez al arrancar el rl y la lista
192
+ * quedaría congelada en el primer instante de la sesión.
193
+ */
194
+ export declare function crearCompleterDelProyecto(raiz: string, escribir?: Escribir): (linea: string) => [string[], string];
195
+ /**
196
+ * Las piezas de la sincronización, para poder probar `crearSincronizador` y
197
+ * `crearListaDeRamas` sin red ni MCP: los tests inyectan dobles y el valor por omisión es
198
+ * el adaptador real de `agent/`. `leerConfig` es literalmente `cargar` de
199
+ * `agent/config/configEnDisco.ts` — no existe (ni hace falta) un `leerCloudStudioDeProyecto`.
200
+ */
201
+ export interface PiezasDeSincronizacion {
202
+ leerConfig: typeof cargar;
203
+ /** Los entornos registrados, para resolver el `entorno` que al `config.json` le falte. */
204
+ leerSettings: typeof cargarSettings;
205
+ sesion: typeof sesionCloudStudio;
206
+ cliente: typeof clienteCloudStudio;
207
+ descargar: typeof descargarProyecto;
208
+ preparar: typeof prepararRepo;
209
+ pendientes: typeof cambiosPendientes;
210
+ limpio: typeof arbolLimpio;
211
+ sinCommitear: typeof sinCommitear;
212
+ subirProyecto: typeof subir;
213
+ /** Dejar la copia vacía para bajarla entera (`gitSync.ts#vaciarCopia`). */
214
+ vaciar: typeof vaciarCopia;
215
+ /** Si la carpeta es la raíz de su propio repo: decide si hay historia que perder. */
216
+ repoPropio: typeof esRepoPropio;
217
+ /** La base del workspace EN VIGOR, leída en cada uso. */
218
+ baseDeWorkspace: () => string;
219
+ /** Apuntar en el registro de fallos del proyecto una sincronización que REVENTÓ. */
220
+ anotarFallo: (raiz: string, fallo: {
221
+ error: unknown;
222
+ peticion: string;
223
+ }) => void;
224
+ }
225
+ /** Vive en `core/settings.ts` desde que `agent/` también la necesita (la identidad para
226
+ * DeepSeek); se reexporta aquí para que ningún llamador cambie. */
227
+ export { entornoDeUrl } from "../core/settings.js";
228
+ /**
229
+ * El adaptador de `/connect-studio`: guarda el endpoint Y vuelve a resolver el `entorno`.
230
+ *
231
+ * Las dos escrituras van juntas a propósito. Separarlas es lo que dejaba el `entorno`
232
+ * caducado apuntando al juego de credenciales de otro servidor — el fallo peor de todo
233
+ * este arreglo, porque manda un token válido a un endpoint que no lo emitió.
234
+ */
235
+ export declare function guardarEndpointYEntorno(raiz: string, url: string, scopes: readonly string[], leerSettings?: typeof cargarSettings): {
236
+ ruta: string;
237
+ url: string;
238
+ scopes: string[];
239
+ };
240
+ /**
241
+ * El adaptador real de `consola.sincronizar`: abre una sesión MCP VIVA con
242
+ * `sesionCloudStudio` —`conectarCloudStudio` cierra su transporte al terminar y sirve
243
+ * para el alta, pero no para operar— y la cierra siempre en un `finally`, tanto si la
244
+ * operación termina bien como si revienta.
245
+ *
246
+ * El orden dentro de «bajar» es crítico: `descargarProyecto` (que ya retira las vistas
247
+ * aplanadas) y DESPUÉS `prepararRepo`. Al revés, git vería esos `.xml` como borrados y la
248
+ * primera subida los borraría en Studio.
249
+ *
250
+ * Las dos direcciones se niegan con el árbol sucio ANTES de abrir sesión ni tocar
251
+ * CloudStudio: «subir» porque se sube el estado de un commit y no un borrador (para que
252
+ * mover la ref signifique algo), y «bajar» porque la descarga SOBRESCRIBE el disco y el
253
+ * baseline se construye después — sin un commit debajo, el trabajo local no se recupera.
254
+ */
255
+ export declare function crearSincronizador(piezas?: PiezasDeSincronizacion): NonNullable<Consola["sincronizar"]>;
256
+ /**
257
+ * El adaptador real de `consola.ramasDeCloudStudio`: mismo patrón de sesión VIVA +
258
+ * `finally`. Se usa durante el alta, con `proyecto` y `url` ya guardados pero la rama
259
+ * todavía sin elegir — por eso lee el config en cada llamada en vez de recibirlo cerrado.
260
+ */
261
+ export declare function crearListaDeRamas(raiz: string, piezas?: Pick<PiezasDeSincronizacion, "leerConfig" | "leerSettings" | "sesion" | "cliente">): (proyecto: string) => Promise<string[]>;
262
+ export declare function entrarEnConsola(fuentes: FuentesDeEleccion, raiz?: string, escribir?: Escribir, inspeccionarProyecto?: (raiz: string) => Promise<{
263
+ colecciones: number;
264
+ esProyectoXone: boolean;
265
+ }>, crearRl?: () => readline.Interface, guion?: boolean,
266
+ /** Costura de test del «¿hay alguien al otro lado?»: sin TTY no se pregunta nada. */
267
+ interactivo?: boolean,
268
+ /**
269
+ * ¿Arranca la TUI? Costura de test: los tests corren sin TTY y pasan `false` (o no
270
+ * la pasan, y `decidirTui` sin banderas cae en el `isTTY` del proceso). En la rama
271
+ * TUI este parámetro de `interactivo` no se usa: la TUI es interactiva por diseño.
272
+ */
273
+ usarTui?: boolean,
274
+ /** ¿Ratón en la TUI? Solo la rama TUI lo mira. */
275
+ raton?: boolean,
276
+ /** Adaptadores compartidos por stdio y TUI; `main` construye una sola instancia real. */
277
+ dependencias?: Pick<Consola, "catalogoModelos" | "guardarModeloGlobal" | "conectarCloudStudio">): Promise<number>;
278
+ /**
279
+ * `--motor <deepagents|trueforge>`, el punto de entrada para arrancar con un motor concreto sin
280
+ * tocar la configuración (`npm run web -- --motor deepagents`). Se quita del argv con su valor y se deja en
281
+ * `XONECODE_MOTOR`, que es la fuente que ya lee `resolverMotor`: una bandera no es una tercera
282
+ * regla, es otra forma de poner la variable —y la única que vale igual en Windows, donde un
283
+ * `XONECODE_MOTOR=…` delante del comando no funciona—. Un valor que no es un motor es un error de
284
+ * USO: arrancar con el de siempre callando la errata haría creer que se está probando el otro.
285
+ */
286
+ export declare function extraerMotor(argv: readonly string[]): {
287
+ resto: string[];
288
+ motor?: MotorDeAgente;
289
+ error?: string;
290
+ };
291
+ export declare function main(argvCrudo: string[]): Promise<number>;
@@ -0,0 +1,126 @@
1
+ import type { Tema } from "./tema.js";
2
+ /**
3
+ * El markdown del asistente, pintado en una consola que NO repinta.
4
+ *
5
+ * Esa es la regla que gobierna todo el módulo: **lo escrito, escrito está**. Una línea
6
+ * solo se puede renderizar cuando su texto es definitivo, y un párrafo largo que llega
7
+ * en trozos solo se puede cortar por donde el corte no rompa un marcador — de ahí
8
+ * `puntoSeguro`. No hay reflow posible: el historial vive en el scrollback del
9
+ * terminal, que no es direccionable.
10
+ *
11
+ * Se pinta lo que los modelos EMITEN de verdad (medido): negritas, `código` en línea,
12
+ * cabeceras, viñetas (anidadas y numeradas), citas, hr, cursiva, enlaces y cercos ```.
13
+ * Lo que no empareja queda literal — inventarse un cierre sería un bug mudo delante
14
+ * del usuario. Las tablas no se maquetan: pasan literales.
15
+ */
16
+ /**
17
+ * Los marcadores EN LÍNEA: `**negrita**` y `` `código` ``.
18
+ *
19
+ * Puro: recibe el tema y devuelve la línea lista para escribir. Con un tema sin color
20
+ * (pipe, CI) los tokens son cadena vacía y la salida queda limpia.
21
+ */
22
+ export declare function renderizarInline(texto: string, tema: Tema): string;
23
+ /**
24
+ * Por dónde cortar un párrafo que llega en trozos y aún no ha visto su `\n`.
25
+ *
26
+ * El streaming tiene que verse (un colchón que solo se suelta al final es un `ainvoke`
27
+ * disfrazado), pero cortar por donde sea rompe marcadores: un `**` partido entre dos
28
+ * escrituras queda literal para siempre. Así que el corte es en un ESPACIO, con los
29
+ * pares `**` y `` ` `` CERRADOS en lo escrito. Se devuelve el ÚLTIMO corte seguro
30
+ * (menos escrituras), y `undefined` si no hay ninguno — entonces se espera.
31
+ */
32
+ export declare function puntoSeguro(colchon: string, minimo: number): number | undefined;
33
+ /**
34
+ * ¿Qué líneas de una lista están DENTRO de un cerco? Una por línea, en orden: el
35
+ * estado ANTES de cada línea (así la del ```, abierta o cerrada, queda fuera).
36
+ *
37
+ * La TUI necesita saberlo POR LÍNEA y sin estado propio: sus actos asistente son líneas
38
+ * definitivas en orden, así que un pase sobre ellas basta. Un cerco sin cerrar deja el
39
+ * resto dentro — inventarse un cierre sería un bug mudo delante del usuario.
40
+ */
41
+ export declare function estadosDeCerco(lineas: readonly string[]): boolean[];
42
+ /** Una línea de markdown ya clasificada: lo que la piel pinta sin volver a parsear. */
43
+ export type LineaDeMarkdown = {
44
+ tipo: "cabecera";
45
+ nivel: 1 | 2 | 3;
46
+ texto: string;
47
+ } | {
48
+ tipo: "vineta";
49
+ nivel: number;
50
+ texto: string;
51
+ } | {
52
+ tipo: "numerada";
53
+ nivel: number;
54
+ numero: number;
55
+ texto: string;
56
+ } | {
57
+ tipo: "cita";
58
+ nivel: number;
59
+ texto: string;
60
+ } | {
61
+ tipo: "horizontal";
62
+ }
63
+ /** Abre o cierra: quien llama lo sabe por `estadosDeCerco`, no por la cadena. */
64
+ | {
65
+ tipo: "cerco";
66
+ lenguaje: string;
67
+ } | {
68
+ tipo: "texto";
69
+ texto: string;
70
+ };
71
+ /**
72
+ * Clasificar UNA línea definitiva de markdown: solo ve líneas que empiezan de verdad
73
+ * (una continuación de párrafo es el colchón, y ese se pinta por su lado). La sangría
74
+ * es 2 espacios por nivel, la medida que los modelos emiten de verdad.
75
+ */
76
+ export declare function clasificarLinea(texto: string): LineaDeMarkdown;
77
+ /** Una línea de tabla ya parseada, con los anchos que comparte con TODA su tabla. */
78
+ export interface LineaDeTabla {
79
+ celdas: string[];
80
+ anchos: number[];
81
+ rol: "cabecera" | "separador" | "fila";
82
+ /** La última línea del tramo: el skin pinta el cierre después de ella. */
83
+ esUltima: boolean;
84
+ }
85
+ /**
86
+ * Detectar las tablas de una lista de líneas (la que la TUI ya sabe que es asistente):
87
+ * una tabla es cabecera + separador + filas consecutivas que empiezan por `|`; una
88
+ * línea vacía o de otro tipo la corta. Sin separador NO hay tabla — las barras de un
89
+ * párrafo normal quedan literales. El resultado, uno por línea: qué celdas lleva, qué
90
+ * anchos comparte toda la tabla (el máximo por columna, recortado con «…» al ancho
91
+ * disponible) y si es la última del tramo (para pintar el cierre).
92
+ */
93
+ export declare function contextoDeTabla(lineas: readonly string[], ancho?: number): (LineaDeTabla | null)[];
94
+ /** El estado de bloque que sobrevive entre líneas: solo el cerco de código. */
95
+ export declare class RenderizadorDeMarkdown {
96
+ private readonly tema;
97
+ private enCerco;
98
+ constructor(tema: Tema);
99
+ /**
100
+ * Una línea (o un corte de párrafo) tal como llega del flujo, SIN su `\n`.
101
+ *
102
+ * `inicioDeLinea` dice si este trozo empieza línea de verdad: una continuación de
103
+ * párrafo no puede ser cabecera ni viñeta, aunque empiece por «##» o «- ».
104
+ *
105
+ * **Sin color (pipe, CI), la línea sale tal cual**: no se quitan «##», ni «- » se
106
+ * vuelve «•», ni el cerco desaparece. Despintar el markdown sin dar nada a cambio
107
+ * es quitarle información a quien lee la salida.
108
+ */
109
+ linea(texto: string, inicioDeLinea?: boolean): string;
110
+ }
111
+ /** Un trozo de línea con su significado: la TUI lo pinta y la stdio lo colorea. */
112
+ export type EstiloDeSegmento = "normal" | "negrita" | "mudo" | "codigo" | "cursiva" | "enlace";
113
+ export interface Segmento {
114
+ texto: string;
115
+ estilo: EstiloDeSegmento;
116
+ }
117
+ /**
118
+ * Parte una línea en segmentos inline — la MISMA gramática que `renderizarInline`
119
+ * (`**negrita**`, `` `código` ``) más lo que la TUI maqueta y la stdio no: `*cursiva*`
120
+ * y `[enlace](url)`, que se pide en DATOS y no en ANSI (un `<Text>` de Ink no puede
121
+ * llevar códigos de escape dentro). El código y el enlace llevan estilo PROPIO
122
+ * («codigo», «enlace»), que la TUI pinta en acento; la url del enlace va aparte, en
123
+ * mudo y entre paréntesis — en TUI no hay clic, y despintar la url es quitarle
124
+ * información a quien lee.
125
+ */
126
+ export declare function segmentosDe(texto: string): Segmento[];
@@ -0,0 +1,38 @@
1
+ /**
2
+ * El panel de avisos: el recinto de hasta `tope` líneas grises donde viven las
3
+ * notificaciones de sistema (pausas, avisos deterministas, el tiempo final) MIENTRAS
4
+ * dura, en vez de ir dejando un rastro en el scrollback.
5
+ *
6
+ * La regla que hereda del append-only de la consola, y su excepción a la vez: el panel
7
+ * vive POR ENCIMA del punto de escritura y se repinta en sitio — la única cosa de la
8
+ * piel que escribe por encima de la última línea, acotada a `tope` líneas. Cualquier
9
+ * contenido real la solidifica antes de escribir (la cascada de `stdio.ts`), y del
10
+ * panel solo queda entonces la última línea, como línea gris de siempre.
11
+ *
12
+ * La mecánica es de borrado EXACTO, nunca «borrar hasta el fin de pantalla»: tanto el
13
+ * repintado como el colapso limpian una a una las líneas que sobran, porque debajo del
14
+ * panel puede haber una línea viva (el spinner de fase) que no es suya y no puede
15
+ * comerse. Por lo mismo, cada línea pintada termina en `\n`: el cursor descansa en el
16
+ * punto de escritura, que siempre está DEBAJO del panel.
17
+ */
18
+ import type { Escribir } from "./stdio.js";
19
+ import type { Tema } from "./tema.js";
20
+ /** Cuántas líneas grises vive el panel como máximo antes de reciclar al más viejo. */
21
+ export declare const TOPE_DEL_PANEL = 5;
22
+ export declare class PanelDeAvisos {
23
+ private readonly escribir;
24
+ private readonly tema;
25
+ private readonly tope;
26
+ private readonly lineas;
27
+ private pintadas;
28
+ constructor(escribir: Escribir, tema: Tema, tope?: number);
29
+ /** Añade un aviso (reciclando al más viejo si se pasa del tope) y repinta el panel. */
30
+ avisa(texto: string): void;
31
+ /**
32
+ * Colapsa el panel: deja SOLO la última línea en el historial — colocada donde
33
+ * empezaba el panel— y limpia las demás. Con el panel vacío no escribe nada.
34
+ */
35
+ solidifica(): void;
36
+ /** Una línea del panel: limpia, texto en mudo, y el salto que baja al punto de escritura. */
37
+ private pintar;
38
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * `xonecode podar`: adelgazar de una vez la memoria del agente de los proyectos que ya están
3
+ * gordos.
4
+ *
5
+ * **Existe porque el mantenimiento automático no alcanza a lo que ya pasó.** La poda del
6
+ * cierre de turno (`web/servidor/vestibulo.ts`) solo corre cuando alguien vuelve a trabajar
7
+ * en ese proyecto, y cuando esto se escribió había 1,5 GB repartidos en siete copias del
8
+ * workspace, la mayoría sin tocar desde hacía días. Un comando lo resuelve hoy; el
9
+ * automático evita que vuelva.
10
+ *
11
+ * **La autorización es teclear el comando**, como `/pdf` o crear una tarea: esto borra, y lo
12
+ * pide quien está delante — no el modelo, que ni siquiera lo alcanza.
13
+ *
14
+ * Y se dice lo que se hizo POR PROYECTO, no un total: un total no deja comprobar nada.
15
+ */
16
+ import { crearCheckpointerDeProyecto, hayPendientesEnLaBase, podarCheckpointer, tamanoDelCheckpointer } from "../agent/sesiones/checkpointer.js";
17
+ export interface ProyectoQuePodar {
18
+ /** Cómo se llama para una persona. Lo que se ENSEÑA: la ruta no se pinta. */
19
+ nombre: string;
20
+ raiz: string;
21
+ }
22
+ export declare function cmdPodar(proyectos: ProyectoQuePodar[], escribirCrudo: (texto: string) => void, deps?: {
23
+ podar?: typeof podarCheckpointer;
24
+ checkpointer?: typeof crearCheckpointerDeProyecto;
25
+ tamano?: typeof tamanoDelCheckpointer;
26
+ pendientes?: typeof hayPendientesEnLaBase;
27
+ }): number;
28
+ /**
29
+ * Los proyectos que hay bajo el workspace, `<workspace>/<entorno>/<proyecto>`.
30
+ *
31
+ * Se recorre el DISCO y no el `settings.json`: lo que hay que podar es lo que está bajado,
32
+ * y un entorno dado de baja deja sus copias ahí igual. Lo que no se pueda leer se salta —
33
+ * este comando no puede fallar por una carpeta rara.
34
+ *
35
+ * El nombre que se enseña es `entorno/proyecto`, que es como el usuario los distingue, y
36
+ * NUNCA la ruta: es el mismo trato que le da el cable (`sinRutas`).
37
+ */
38
+ export declare function proyectosDelWorkspace(base: string): ProyectoQuePodar[];
@@ -0,0 +1,30 @@
1
+ import { type Escribir } from "./stdio.js";
2
+ import { hidratarFuentesDeDisco } from "./fuentesDeDisco.js";
3
+ import type { FuentesDeEleccion } from "../core/modelos.js";
4
+ export interface OpcionesRun {
5
+ peticion: string;
6
+ escribir?: Escribir;
7
+ retardoMs?: number;
8
+ /** `--real`: corre el agente real sobre el proyecto del cwd, no el guion. */
9
+ real?: boolean;
10
+ /** Las fuentes de modelo resueltas en `main.ts`, para construir los clientes reales. */
11
+ fuentes?: FuentesDeEleccion;
12
+ /**
13
+ * De dónde salen la configuración de disco y las credenciales. Entra por parámetro —con la
14
+ * de verdad por omisión— porque es la costura que ningún test alcanzaba: compuesta dentro
15
+ * de `correrReal`, que no se puede correr sin abrir una sesión real, la regla se quedaba
16
+ * escrita. El mismo trato que `verifier` en `abrirSesionReal`.
17
+ */
18
+ hidratar?: typeof hidratarFuentesDeDisco;
19
+ /** El entorno del proceso, del que se lee `XONECODE_TOPE_DE_RONDAS`. Por parámetro para poder probarlo. */
20
+ entornoDeProceso?: Record<string, string | undefined>;
21
+ }
22
+ /**
23
+ * Un disparo: una petición, un turno, y a la calle. Pipeable.
24
+ *
25
+ * Devuelve el código de salida. **Una pausa sin humano no es un éxito**: en modo un
26
+ * disparo no hay a quién preguntar, así que se sale con código distinto de cero para que
27
+ * CI no lea como «hecho» un turno que se quedó esperando una aprobación que nadie iba a
28
+ * dar. No se aprueba por omisión: aprobar EJECUTA, y ante la duda va la opción recuperable.
29
+ */
30
+ export declare function cmdRun(opciones: OpcionesRun): Promise<number>;
@@ -0,0 +1,37 @@
1
+ import type { Tema } from "./tema.js";
2
+ import type { Escribir } from "./stdio.js";
3
+ /** Los segundos que lleva la fase: vacío hasta que cumple el primer segundo. */
4
+ export declare function sufijoDeTiempo(ms: number): string;
5
+ export declare class AnimadorDeFase {
6
+ private readonly escribir;
7
+ private readonly tema;
8
+ /** Cómo de seguido repinta el fotograma. Entra por parámetro para los tests. */
9
+ private readonly intervalo;
10
+ /** El reloj, inyectado por la misma razón: un test mueve el tiempo, no lo espera. */
11
+ private readonly reloj;
12
+ private cuadro;
13
+ private texto;
14
+ private t0;
15
+ private temporizador;
16
+ constructor(escribir: Escribir, tema: Tema,
17
+ /** Cómo de seguido repinta el fotograma. Entra por parámetro para los tests. */
18
+ intervalo?: number,
19
+ /** El reloj, inyectado por la misma razón: un test mueve el tiempo, no lo espera. */
20
+ reloj?: () => number);
21
+ activo(): boolean;
22
+ /**
23
+ * Empieza a animar una fase. Sin color es la línea estática de siempre y no arranca
24
+ * nada; con color, la fase anterior (si la había) queda como línea estática.
25
+ */
26
+ empieza(texto: string): void;
27
+ /**
28
+ * Repinta el fotograma. Público a propósito: el `setInterval` llama aquí, y los
29
+ * tests también — sin esperar 120 ms de verdad.
30
+ */
31
+ pinta(): void;
32
+ /**
33
+ * Deja la fase como línea estática en el historial y para el reloj. Sin fase activa
34
+ * no escribe nada: la cascada lo llama antes de CUALQUIER otra escritura.
35
+ */
36
+ termina(): void;
37
+ }
@@ -0,0 +1,94 @@
1
+ import * as readline from "node:readline";
2
+ import type { Piel } from "../core/turno.js";
3
+ import { type Preguntar } from "./aprobar.js";
4
+ import { type Tema } from "./tema.js";
5
+ /** Escribe SIN añadir salto de línea. La implementación real hace flush. */
6
+ export type Escribir = (texto: string) => void;
7
+ /**
8
+ * La piel de terminal.
9
+ *
10
+ * El streaming del asistente se suelta por LÍNEA CONFIRMADA (y, en párrafos largos, por
11
+ * cortes que no rompen marcadores), y no por trozo: una consola que NO repinta solo
12
+ * puede escribir una línea cuando su texto es definitivo — un `**` partido entre dos
13
+ * escrituras queda literal para siempre. Sigue siendo streaming: la línea confirmada
14
+ * se pinta en el acto, y un colchón que solo se suelta al final sería un `ainvoke`
15
+ * disfrazado.
16
+ *
17
+ * Las otras dos cosas medidas, con el mismo síntoma (el streaming no se ve) y causas
18
+ * distintas:
19
+ *
20
+ * 1. **`flush` explícito** (en `escribirEnStdout`). Sin él la salida se queda en el
21
+ * buffer y no aparece hasta que se vacía sola — un fallo que solo se manifiesta en
22
+ * procesos de larga duración, o sea justo en el caso de uso real.
23
+ * 2. **Un solo `escribir` por línea confirmada**: juntar trozos en un buffer y volcar
24
+ * al final también evita frases partidas, pero deja de ser streaming.
25
+ */
26
+ export declare function crearPielStdio(escribir: Escribir, tema?: Tema): Piel;
27
+ /**
28
+ * El `escribir` de producción. El `flush` es implícito en Node —`process.stdout.write`
29
+ * escribe ya—, pero se pasa por aquí para que exista UN solo sitio que cambiar si algún
30
+ * día hace falta forzarlo.
31
+ */
32
+ export declare const escribirEnStdout: Escribir;
33
+ /**
34
+ * ¿Se acabó la entrada? Es la ÚNICA definición de «este readline ya está cerrado», y la
35
+ * comparten `crearPreguntar` (para no lanzar) y `pedirDecisiones` (para no confundir un
36
+ * EOF con un Enter). Dos definiciones de esto acabarían divergiendo, y divergir aquí es
37
+ * aprobar una escritura que nadie autorizó.
38
+ *
39
+ * `rl.closed` existe en runtime pero no está en los tipos de esta versión de @types/node
40
+ * — mismo caso que `rl.history` más abajo, y mismo cast justificado.
41
+ */
42
+ export declare function crearDetectorDeEof(rl: readline.Interface): () => boolean;
43
+ /**
44
+ * El `preguntar` de producción para la consola: usa el ÚNICO `readline.Interface`
45
+ * compartido con el lazo de líneas y con `leerSecreto`. Tres lectores de stdin no pueden
46
+ * competir por sus eventos `data`; con un solo `rl`, `rl.question` se intercala sin
47
+ * robarle líneas al `for await` del lazo (es readline quien arbitra internamente).
48
+ *
49
+ * **Si el rl ya está cerrado (o se cierra a media pregunta), resuelve con cadena vacía
50
+ * y no lanza.** Es el EOF de un pipe que se agota mientras el turno corre — medido en
51
+ * e2e: la aprobación pregunta 20 segundos después de que stdin hiciera EOF, y el
52
+ * `readline was closed` abortaba el turno con el interrupt colgado. Mismo pacto que
53
+ * `leerSecreto` con su `alCerrar`.
54
+ *
55
+ * **Y esa cadena vacía NO es segura por sí sola** —el comentario que estuvo aquí decía lo
56
+ * contrario y era falso—: `interpretAnswer` la RECHAZA sin TTY, pero CON TTY la aprueba,
57
+ * porque el Enter a secas vale por un sí (`APPROVALS_TTY`, `vendor/hitl.ts`). Con un
58
+ * terminal de verdad delante, un Ctrl-D aprobaba una escritura de fichero. Por eso quien
59
+ * decide sobre una aprobación necesita además `crearDetectorDeEof`: sirve para distinguir
60
+ * las dos cosas que aquí llegan idénticas —un humano que pulsa Enter y un stdin que se
61
+ * acabó—, que es justo lo que la cadena vacía sola no puede contar.
62
+ * **Y el enunciado de una decisión se enseña CON su pista de tecleo, que la añade aquí.**
63
+ * `politicaInteractiva` pregunta «¿Subir a CloudStudio?» a secas porque el `[s/N]` es la
64
+ * pista de una piel con teclado, y esa piel es ésta: la tarjeta de la consola web no tiene
65
+ * campo donde teclear, así que ahí la pista sobra. Se decide por `decision` —un dato— y no
66
+ * buscando un `[s/N]` dentro del texto, que sería leer la sintaxis que este mismo fichero
67
+ * acaba de escribir.
68
+ */
69
+ export declare function crearPreguntar(rl: readline.Interface): Preguntar;
70
+ /**
71
+ * `leerSecreto` de producción (para `/provider <nombre>`): mismo `rl` que el lazo y
72
+ * `preguntar`, con el eco apagado mientras dura la pregunta.
73
+ *
74
+ * **No hay API pública de readline para silenciar el eco por tecla manteniendo la edición
75
+ * de línea** (backspace, etc.): la única costura es `_writeToOutput`, un método interno y
76
+ * no documentado — verificado contra Node 22 (existe, y es la vía que usan las
77
+ * herramientas de terminal que piden contraseña sin librería aparte). Se sustituye para
78
+ * dejar pasar SOLO el propio prompt (para que se vea la pregunta) y silenciar cualquier
79
+ * otra escritura —el eco de cada tecla— hasta que la pregunta termine. `rl.history`
80
+ * tampoco está en los tipos de esta versión de @types/node aunque existe en runtime
81
+ * (documentado desde Node 15.8), así que comparte el mismo cast justificado.
82
+ *
83
+ * Se restaura SIEMPRE, y por DOS vías, porque un terminal que se queda sin eco obliga al
84
+ * usuario a cerrarlo:
85
+ * 1. En el callback de `rl.question`: el camino normal.
86
+ * 2. En un `close` de `rl` a media pregunta (Ctrl-D/EOF sin dar línea): sin esto la
87
+ * promesa no se resuelve nunca y el manejador de `/provider` se queda colgado para
88
+ * siempre dentro del lazo de la consola.
89
+ *
90
+ * Y se borra la clave de `rl.history` tras leerla: readline añade la respuesta de
91
+ * `question` al historial igual que cualquier línea, y una flecha-arriba la recuperaría
92
+ * en claro en la MISMA sesión.
93
+ */
94
+ export declare function crearLeerSecreto(rl: readline.Interface): (pregunta: string) => Promise<string>;