xonecode 0.38.44 → 0.39.4

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 (335) hide show
  1. package/apps/web/dist/assets/{EditorDeFichero-BeWDctgN.js → EditorDeFichero-4HFwLke_.js} +1 -1
  2. package/apps/web/dist/assets/index-C57A_ylS.css +1 -0
  3. package/apps/web/dist/assets/index-CYZEmLsX.js +506 -0
  4. package/apps/web/dist/assets/{php-D3QdOnb8.js → php-CdQiFsq1.js} +1 -1
  5. package/apps/web/dist/assets/{ruby-DDAcW-Z2.js → ruby-3JrCXo0h.js} +1 -1
  6. package/apps/web/dist/index.html +2 -2
  7. package/dist/agent/cloudstudio/cloudstudioClient.d.ts +29 -0
  8. package/dist/agent/cloudstudio/cloudstudioMcp.d.ts +414 -0
  9. package/dist/agent/cloudstudio/conexionDeServidor.d.ts +37 -0
  10. package/dist/agent/cloudstudio/conexionDeServidor.js +63 -0
  11. package/dist/agent/cloudstudio/conexionDeServidor.js.map +1 -0
  12. package/dist/agent/cloudstudio/crearRama.d.ts +15 -0
  13. package/dist/agent/cloudstudio/crearRama.js +16 -0
  14. package/dist/agent/cloudstudio/crearRama.js.map +1 -0
  15. package/dist/agent/cloudstudio/descarga.d.ts +44 -0
  16. package/dist/agent/cloudstudio/manifiesto.d.ts +25 -0
  17. package/dist/agent/cloudstudio/ramaActiva.d.ts +24 -0
  18. package/dist/agent/cloudstudio/subida.d.ts +61 -0
  19. package/dist/agent/cloudstudio/subida.js +7 -1
  20. package/dist/agent/cloudstudio/subida.js.map +1 -1
  21. package/dist/agent/cloudstudio/validarTrasDescarga.d.ts +13 -0
  22. package/dist/agent/cloudstudio/zip.d.ts +13 -0
  23. package/dist/agent/conectores/conectoresEnDisco.d.ts +47 -0
  24. package/dist/agent/conectores/gestorJira.d.ts +50 -0
  25. package/dist/agent/conectores/gestorNotion.d.ts +45 -0
  26. package/dist/agent/conectores/proveedorDeConector.d.ts +43 -0
  27. package/dist/agent/conectores/servicioDeConectores.d.ts +112 -0
  28. package/dist/agent/config/authEnDisco.d.ts +43 -0
  29. package/dist/agent/config/catalogoModelos.d.ts +79 -0
  30. package/dist/agent/config/configEnDisco.d.ts +235 -0
  31. package/dist/agent/config/crearProyecto.d.ts +20 -0
  32. package/dist/agent/config/diagnosticoDeNodeEnMaquina.d.ts +44 -0
  33. package/dist/agent/config/ecoDeRazonamiento.d.ts +104 -0
  34. package/dist/agent/config/entorno.d.ts +83 -0
  35. package/dist/agent/config/fuentesEnRed.d.ts +12 -0
  36. package/dist/agent/config/gemini.d.ts +5 -0
  37. package/dist/agent/config/iconosEnRed.d.ts +10 -0
  38. package/dist/agent/config/identidadEnDisco.d.ts +27 -0
  39. package/dist/agent/config/modelos.d.ts +77 -0
  40. package/dist/agent/config/modelosDeMotor.d.ts +52 -0
  41. package/dist/agent/config/mudanzaEnDisco.d.ts +99 -0
  42. package/dist/agent/config/persona.d.ts +1 -0
  43. package/dist/agent/config/selectorEnMaquina.d.ts +35 -0
  44. package/dist/agent/config/settingsEnDisco.d.ts +206 -0
  45. package/dist/agent/config/versionEnDisco.d.ts +17 -0
  46. package/dist/agent/dispositivos/arranqueDeEmulador.d.ts +60 -0
  47. package/dist/agent/dispositivos/cajasDeMaqueta.d.ts +61 -0
  48. package/dist/agent/dispositivos/decodificarImagen.d.ts +21 -0
  49. package/dist/agent/dispositivos/descargaDeHerramientas.d.ts +44 -0
  50. package/dist/agent/dispositivos/dispositivosEnMaquina.d.ts +161 -0
  51. package/dist/agent/dispositivos/geometriaEnDisco.d.ts +17 -0
  52. package/dist/agent/dispositivos/hotswap.d.ts +194 -0
  53. package/dist/agent/dispositivos/instalacionEnMaquina.d.ts +156 -0
  54. package/dist/agent/dispositivos/juezVisual.d.ts +144 -0
  55. package/dist/agent/dispositivos/lanzamientoEnMaquina.d.ts +197 -0
  56. package/dist/agent/dispositivos/paqueteDelProyecto.d.ts +28 -0
  57. package/dist/agent/dispositivos/procesosEnMaquina.d.ts +154 -0
  58. package/dist/agent/dispositivos/recargaEnAparato.d.ts +30 -0
  59. package/dist/agent/dispositivos/sensorDeArranque.d.ts +42 -0
  60. package/dist/agent/exportarPdf.d.ts +72 -0
  61. package/dist/agent/grafo/aprendido.d.ts +28 -0
  62. package/dist/agent/grafo/arbolDeProyecto.d.ts +205 -0
  63. package/dist/agent/grafo/artefactosEnDisco.d.ts +35 -0
  64. package/dist/agent/grafo/atributosXone.d.ts +31 -0
  65. package/dist/agent/grafo/buscarIcono.d.ts +32 -0
  66. package/dist/agent/grafo/busquedaRegex.d.ts +56 -0
  67. package/dist/agent/grafo/codificacionDelProyecto.d.ts +7 -0
  68. package/dist/agent/grafo/compararCapturas.d.ts +22 -0
  69. package/dist/agent/grafo/copiarArtefacto.d.ts +64 -0
  70. package/dist/agent/grafo/criticaVisual.d.ts +60 -0
  71. package/dist/agent/grafo/describirImagen.d.ts +79 -0
  72. package/dist/agent/grafo/diferenciaDeCapturas.d.ts +33 -0
  73. package/dist/agent/grafo/ejecucionCancelable.d.ts +45 -0
  74. package/dist/agent/grafo/escriturasEnSerie.d.ts +31 -0
  75. package/dist/agent/grafo/excluirTools.d.ts +37 -0
  76. package/dist/agent/grafo/fuentesDeGoogle.d.ts +37 -0
  77. package/dist/agent/grafo/generarFondoSvg.d.ts +52 -0
  78. package/dist/agent/grafo/incorporarAdjunto.d.ts +98 -0
  79. package/dist/agent/grafo/lectorDeReferencias.d.ts +28 -0
  80. package/dist/agent/grafo/marcarCriteriosDelPlan.d.ts +47 -0
  81. package/dist/agent/grafo/memoriaDeProyecto.d.ts +15 -0
  82. package/dist/agent/grafo/navegacionXone.d.ts +60 -0
  83. package/dist/agent/grafo/opcionesDeFicheros.d.ts +23 -0
  84. package/dist/agent/grafo/perfiles.d.ts +225 -0
  85. package/dist/agent/grafo/proyecto.d.ts +450 -0
  86. package/dist/agent/grafo/skills.d.ts +181 -0
  87. package/dist/agent/grafo/traerDeLaMaquina.d.ts +60 -0
  88. package/dist/agent/grafo/unirSecciones.d.ts +20 -0
  89. package/dist/agent/grafo/validacionXone.d.ts +35 -0
  90. package/dist/agent/grafo/validarFicheroXone.d.ts +33 -0
  91. package/dist/agent/grafo/xoneAgent.d.ts +166 -0
  92. package/dist/agent/motores/motoresLocales.d.ts +87 -0
  93. package/dist/agent/motores/trueforge/capacidades.d.ts +183 -0
  94. package/dist/agent/motores/trueforge/convertirAP.d.ts +38 -0
  95. package/dist/agent/motores/trueforge/detencion.d.ts +70 -0
  96. package/dist/agent/motores/trueforge/esperas.d.ts +38 -0
  97. package/dist/agent/motores/trueforge/eventosTrueforge.d.ts +56 -0
  98. package/dist/agent/motores/trueforge/informesDeHijos.d.ts +48 -0
  99. package/dist/agent/motores/trueforge/medidaAutomatica.d.ts +37 -0
  100. package/dist/agent/motores/trueforge/memoriaDeEspecialistas.d.ts +60 -0
  101. package/dist/agent/motores/trueforge/memoriaTrueforge.d.ts +131 -0
  102. package/dist/agent/motores/trueforge/metricasTrueforge.d.ts +45 -0
  103. package/dist/agent/motores/trueforge/modeloExterno.d.ts +9 -0
  104. package/dist/agent/motores/trueforge/modeloLangchain.d.ts +69 -0
  105. package/dist/agent/motores/trueforge/notas.d.ts +48 -0
  106. package/dist/agent/motores/trueforge/proponerTareas.d.ts +30 -0
  107. package/dist/agent/motores/trueforge/recortes.d.ts +47 -0
  108. package/dist/agent/motores/trueforge/resumenSeguro.d.ts +33 -0
  109. package/dist/agent/motores/trueforge/sesionTrueforge.d.ts +273 -0
  110. package/dist/agent/motores/trueforge/skillsTrueforge.d.ts +16 -0
  111. package/dist/agent/motores/trueforge/toolsDeConectores.d.ts +36 -0
  112. package/dist/agent/motores/trueforge/toolsDeFichero.d.ts +146 -0
  113. package/dist/agent/motores/trueforge/toolsPropias.d.ts +38 -0
  114. package/dist/agent/motores/trueforge/traerDeStitch.d.ts +63 -0
  115. package/dist/agent/motores/trueforge/trueforge.d.ts +35 -0
  116. package/dist/agent/navegacion/estilosEnDisco.d.ts +41 -0
  117. package/dist/agent/navegacion/hechosEnDisco.d.ts +19 -0
  118. package/dist/agent/navegacion/indiceEnDisco.d.ts +50 -0
  119. package/dist/agent/navegacion/modeloDeProyecto.d.ts +86 -0
  120. package/dist/agent/planesEnDisco.d.ts +18 -0
  121. package/dist/agent/publicarPlan.d.ts +20 -0
  122. package/dist/agent/raizDelPaquete.d.ts +9 -0
  123. package/dist/agent/remoto/ngrokEnMaquina.d.ts +44 -0
  124. package/dist/agent/remoto/puenteWebSocket.d.ts +59 -0
  125. package/dist/agent/remoto/tunelNgrok.d.ts +31 -0
  126. package/dist/agent/renombrarSobre.d.ts +14 -0
  127. package/dist/agent/sesiones/adjuntosDeSesion.d.ts +64 -0
  128. package/dist/agent/sesiones/baseDeFichero.d.ts +9 -0
  129. package/dist/agent/sesiones/checkpointer.d.ts +146 -0
  130. package/dist/agent/sesiones/git.d.ts +66 -0
  131. package/dist/agent/sesiones/gitSync.d.ts +264 -0
  132. package/dist/agent/sesiones/memoriaDeHilo.d.ts +4 -0
  133. package/dist/agent/sesiones/modeloDelCambio.d.ts +7 -0
  134. package/dist/agent/sesiones/parcheEnTexto.d.ts +9 -0
  135. package/dist/agent/sesiones/sesionGit.d.ts +155 -0
  136. package/dist/agent/subagentes/actividadDeCodex.d.ts +8 -0
  137. package/dist/agent/subagentes/agentesEnDisco.d.ts +198 -0
  138. package/dist/agent/subagentes/consumoExterno.d.ts +83 -0
  139. package/dist/agent/subagentes/ejecutableEnWindows.d.ts +53 -0
  140. package/dist/agent/subagentes/escrituraDeCodex.d.ts +94 -0
  141. package/dist/agent/subagentes/escrituraDeOpencode.d.ts +67 -0
  142. package/dist/agent/subagentes/escrituraExterna.d.ts +419 -0
  143. package/dist/agent/subagentes/pluginDeSkills.d.ts +84 -0
  144. package/dist/agent/subagentes/subagenteCodex.d.ts +76 -0
  145. package/dist/agent/subagentes/subagenteExterno.d.ts +169 -0
  146. package/dist/agent/subagentes/subagenteOpencode.d.ts +126 -0
  147. package/dist/agent/tareas/aumentador.d.ts +99 -0
  148. package/dist/agent/tareas/juezDeTarea.d.ts +64 -0
  149. package/dist/agent/tareas/reflejoEnElGestor.d.ts +38 -0
  150. package/dist/agent/tareas/sondeoDelGestor.d.ts +49 -0
  151. package/dist/agent/tareas/tareasEnDisco.d.ts +148 -0
  152. package/dist/agent/tareas/tareasEnDisco.js +17 -0
  153. package/dist/agent/tareas/tareasEnDisco.js.map +1 -1
  154. package/dist/agent/trazaDeErroresEnDisco.d.ts +10 -0
  155. package/dist/agent/turno/depuracion.d.ts +1 -0
  156. package/dist/agent/turno/diagnosticoDeTools.d.ts +124 -0
  157. package/dist/agent/turno/ficherosDelProyecto.d.ts +10 -0
  158. package/dist/agent/turno/guionizado.d.ts +18 -0
  159. package/dist/agent/turno/informeDeTraza.d.ts +220 -0
  160. package/dist/agent/turno/inspectorDePrompt.d.ts +150 -0
  161. package/dist/agent/turno/instantanea.d.ts +16 -0
  162. package/dist/agent/turno/interrupts.d.ts +54 -0
  163. package/dist/agent/turno/juezDelTurnoConModelo.d.ts +26 -0
  164. package/dist/agent/turno/mensajes.d.ts +23 -0
  165. package/dist/agent/turno/normalizar.d.ts +15 -0
  166. package/dist/agent/turno/puente.d.ts +196 -0
  167. package/dist/agent/turno/registroDeFallos.d.ts +39 -0
  168. package/dist/agent/turno/resumenDeContexto.d.ts +269 -0
  169. package/dist/agent/turno/resumenDeTool.d.ts +33 -0
  170. package/dist/agent/turno/rubrica.d.ts +35 -0
  171. package/dist/agent/turno/sesionReal.d.ts +89 -0
  172. package/dist/agent/turno/textoDeTool.d.ts +19 -0
  173. package/dist/agent/turno/turnoReal.d.ts +210 -0
  174. package/dist/agent/turno/verificacion.d.ts +85 -0
  175. package/dist/agent/turno/verificador.d.ts +66 -0
  176. package/dist/bin.d.ts +2 -0
  177. package/dist/cli/acuseDeModelo.d.ts +18 -0
  178. package/dist/cli/aprobar.d.ts +162 -0
  179. package/dist/cli/config.d.ts +17 -0
  180. package/dist/cli/consola.d.ts +473 -0
  181. package/dist/cli/describe.d.ts +7 -0
  182. package/dist/cli/doctor.d.ts +8 -0
  183. package/dist/cli/fuentesDeDisco.d.ts +25 -0
  184. package/dist/cli/main.d.ts +291 -0
  185. package/dist/cli/markdown.d.ts +126 -0
  186. package/dist/cli/panel.d.ts +38 -0
  187. package/dist/cli/podar.d.ts +38 -0
  188. package/dist/cli/run.d.ts +30 -0
  189. package/dist/cli/spinner.d.ts +37 -0
  190. package/dist/cli/stdio.d.ts +94 -0
  191. package/dist/cli/tema.d.ts +68 -0
  192. package/dist/cli/tokens.d.ts +16 -0
  193. package/dist/cli/traza.d.ts +19 -0
  194. package/dist/cli/tui/app.d.ts +23 -0
  195. package/dist/cli/tui/aprobarTui.d.ts +46 -0
  196. package/dist/cli/tui/barra.d.ts +43 -0
  197. package/dist/cli/tui/correrTui.d.ts +119 -0
  198. package/dist/cli/tui/entrada.d.ts +14 -0
  199. package/dist/cli/tui/filas.d.ts +13 -0
  200. package/dist/cli/tui/logo.d.ts +20 -0
  201. package/dist/cli/tui/pielTui.d.ts +15 -0
  202. package/dist/cli/tui/raton.d.ts +68 -0
  203. package/dist/cli/tui/sidebar.d.ts +63 -0
  204. package/dist/cli/tui/store.d.ts +102 -0
  205. package/dist/cli/tui/tarjeta.d.ts +8 -0
  206. package/dist/cli/tui/temaInk.d.ts +67 -0
  207. package/dist/cli/tui/transcript.d.ts +32 -0
  208. package/dist/cli/verify.d.ts +9 -0
  209. package/dist/cli/wizardInicial.d.ts +59 -0
  210. package/dist/core/actos.d.ts +437 -0
  211. package/dist/core/adjuntos.d.ts +77 -0
  212. package/dist/core/agentes.d.ts +353 -0
  213. package/dist/core/analisisDeSesion.d.ts +63 -0
  214. package/dist/core/aprendido.d.ts +41 -0
  215. package/dist/core/artefactos.d.ts +74 -0
  216. package/dist/core/atributosXone.d.ts +53 -0
  217. package/dist/core/bitacora.d.ts +21 -0
  218. package/dist/core/cloudstudio.d.ts +168 -0
  219. package/dist/core/codificacion.d.ts +81 -0
  220. package/dist/core/comandoExterno.d.ts +49 -0
  221. package/dist/core/compararCapturas.d.ts +136 -0
  222. package/dist/core/conectores.d.ts +296 -0
  223. package/dist/core/config.d.ts +148 -0
  224. package/dist/core/contextos.d.ts +54 -0
  225. package/dist/core/convertirAP.d.ts +56 -0
  226. package/dist/core/copiaDeAvd.d.ts +44 -0
  227. package/dist/core/cssBienFormado.d.ts +22 -0
  228. package/dist/core/deps.d.ts +28 -0
  229. package/dist/core/descargas.d.ts +61 -0
  230. package/dist/core/descripcionDePantalla.d.ts +121 -0
  231. package/dist/core/descriptoresDeApp.d.ts +108 -0
  232. package/dist/core/diagnosticoDeNode.d.ts +51 -0
  233. package/dist/core/diff.d.ts +26 -0
  234. package/dist/core/diffDeColecciones.d.ts +54 -0
  235. package/dist/core/disenoVinculado.d.ts +17 -0
  236. package/dist/core/dispositivoDeSesion.d.ts +22 -0
  237. package/dist/core/dispositivoElegido.d.ts +17 -0
  238. package/dist/core/dispositivos.d.ts +469 -0
  239. package/dist/core/entrega.d.ts +341 -0
  240. package/dist/core/entrelazar.d.ts +48 -0
  241. package/dist/core/esfuerzo.d.ts +120 -0
  242. package/dist/core/esqueleto.d.ts +38 -0
  243. package/dist/core/estiloMedido.d.ts +70 -0
  244. package/dist/core/estilos.d.ts +76 -0
  245. package/dist/core/events.d.ts +218 -0
  246. package/dist/core/exportacion.d.ts +88 -0
  247. package/dist/core/fallos.d.ts +79 -0
  248. package/dist/core/fondosSvg.d.ts +115 -0
  249. package/dist/core/fotoDeColecciones.d.ts +45 -0
  250. package/dist/core/fuentes.d.ts +96 -0
  251. package/dist/core/geometriaDePantalla.d.ts +171 -0
  252. package/dist/core/gestorDeTareas.d.ts +295 -0
  253. package/dist/core/hechosDelProyecto.d.ts +70 -0
  254. package/dist/core/hotswap.d.ts +30 -0
  255. package/dist/core/iconos.d.ts +86 -0
  256. package/dist/core/identidadDeProveedor.d.ts +20 -0
  257. package/dist/core/idiomaDeLaRespuesta.d.ts +26 -0
  258. package/dist/core/imagenesDeDocumento.d.ts +40 -0
  259. package/dist/core/jsParaRhino.d.ts +3 -0
  260. package/dist/core/juezDelTurno.d.ts +95 -0
  261. package/dist/core/logDeDispositivo.d.ts +67 -0
  262. package/dist/core/memoria.d.ts +18 -0
  263. package/dist/core/metodoDeComparacionVisual.d.ts +20 -0
  264. package/dist/core/modelos.d.ts +198 -0
  265. package/dist/core/modoDeEscritura.d.ts +155 -0
  266. package/dist/core/motor.d.ts +43 -0
  267. package/dist/core/motoresLocales.d.ts +113 -0
  268. package/dist/core/mudanzaDeWorkspace.d.ts +112 -0
  269. package/dist/core/navegacion.d.ts +172 -0
  270. package/dist/core/notify.d.ts +77 -0
  271. package/dist/core/nucleoXone.d.ts +28 -0
  272. package/dist/core/panorama.d.ts +68 -0
  273. package/dist/core/paqueteDeSoporte.d.ts +100 -0
  274. package/dist/core/planDeSubida.d.ts +56 -0
  275. package/dist/core/planes.d.ts +53 -0
  276. package/dist/core/podaDeCheckpoint.d.ts +75 -0
  277. package/dist/core/ports.d.ts +1034 -0
  278. package/dist/core/puedeLanzarse.d.ts +181 -0
  279. package/dist/core/puertosDeAvd.d.ts +59 -0
  280. package/dist/core/recargaEnCaliente.d.ts +52 -0
  281. package/dist/core/referenciasDeImagen.d.ts +36 -0
  282. package/dist/core/remoto.d.ts +76 -0
  283. package/dist/core/repartoDeEncargo.d.ts +80 -0
  284. package/dist/core/rubrica.d.ts +78 -0
  285. package/dist/core/rutaVirtual.d.ts +29 -0
  286. package/dist/core/selectorDeCarpeta.d.ts +59 -0
  287. package/dist/core/serieDeEscrituras.d.ts +58 -0
  288. package/dist/core/settings.d.ts +421 -0
  289. package/dist/core/shellDeAgente.d.ts +177 -0
  290. package/dist/core/skills.d.ts +129 -0
  291. package/dist/core/stitch.d.ts +114 -0
  292. package/dist/core/tareas.d.ts +412 -0
  293. package/dist/core/tareasDelPlan.d.ts +123 -0
  294. package/dist/core/tareasEnElGestor.d.ts +117 -0
  295. package/dist/core/textos.d.ts +8 -0
  296. package/dist/core/topeAgotado.d.ts +55 -0
  297. package/dist/core/traerDeLaMaquina.d.ts +33 -0
  298. package/dist/core/trazaDeErrores.d.ts +83 -0
  299. package/dist/core/tunel.d.ts +45 -0
  300. package/dist/core/turno.d.ts +154 -0
  301. package/dist/core/validacionDeEscritura.d.ts +95 -0
  302. package/dist/core/verificacionDeSubida.d.ts +14 -0
  303. package/dist/core/version.d.ts +35 -0
  304. package/dist/core/xmlBienFormado.d.ts +23 -0
  305. package/dist/core/zipDeAdjunto.d.ts +28 -0
  306. package/dist/core/zipDeSkill.d.ts +74 -0
  307. package/dist/lib/tareaAutonoma.d.ts +36 -0
  308. package/dist/lib/tareaAutonoma.js +259 -0
  309. package/dist/lib/tareaAutonoma.js.map +1 -0
  310. package/dist/lib.d.ts +31 -0
  311. package/dist/lib.js +28 -0
  312. package/dist/lib.js.map +1 -0
  313. package/dist/vendor/hitl.d.ts +69 -0
  314. package/dist/vendor/skillLoaders/catalog.d.ts +27 -0
  315. package/dist/vendor/sqliteSaver.d.ts +22 -0
  316. package/dist/vendor/tokenTracking.d.ts +22 -0
  317. package/dist/web/servidor/arranque.d.ts +1372 -0
  318. package/dist/web/servidor/arranque.js +39 -0
  319. package/dist/web/servidor/arranque.js.map +1 -1
  320. package/dist/web/servidor/consolaDeTarea.d.ts +166 -0
  321. package/dist/web/servidor/consolaWeb.d.ts +142 -0
  322. package/dist/web/servidor/corredorDeTareas.d.ts +395 -0
  323. package/dist/web/servidor/datosDeCierre.d.ts +4 -0
  324. package/dist/web/servidor/interrupcion.d.ts +39 -0
  325. package/dist/web/servidor/pielWeb.d.ts +32 -0
  326. package/dist/web/servidor/puenteRemoto.d.ts +80 -0
  327. package/dist/web/servidor/servidor.d.ts +53 -0
  328. package/dist/web/servidor/sesiones.d.ts +342 -0
  329. package/dist/web/servidor/soporte.d.ts +65 -0
  330. package/dist/web/servidor/transporte.d.ts +2751 -0
  331. package/dist/web/servidor/vestibulo.d.ts +952 -0
  332. package/dist/web/servidor/visorOpenui.d.ts +33 -0
  333. package/package.json +9 -1
  334. package/apps/web/dist/assets/index-B-6cDRAV.js +0 -506
  335. package/apps/web/dist/assets/index-BQdHnRbo.css +0 -1
@@ -0,0 +1,473 @@
1
+ /**
2
+ * El lazo de la consola interactiva y los comandos de barra.
3
+ *
4
+ * La regla que gobierna este fichero: una consola no llama a `input()` ni imprime por su
5
+ * cuenta. `correrConsola` recibe de dónde leer (`consola.lineas`) y a dónde escribir
6
+ * (`consola.escribir`) — en producción stdin y el `escribir` con flush; en los tests, una
7
+ * lista de líneas y un acumulador. Sin esa costura la consola no se puede probar.
8
+ */
9
+ import type { MotorDeAgente } from "../core/motor.js";
10
+ import { type Piel } from "../core/turno.js";
11
+ import { type FuentesDeEleccion, type Proveedor } from "../core/modelos.js";
12
+ import type { Papel } from "../core/ports.js";
13
+ import type { PendienteDeAprobacion } from "../core/events.js";
14
+ import type { ResultadoDeTurno } from "../core/entrega.js";
15
+ import type { LineaDeDiff } from "../core/diff.js";
16
+ import { type Decision } from "../vendor/hitl.js";
17
+ import type { AccionDeSincronizacion, ConfirmacionDeBajada, PoliticaDeAprobacion } from "../core/cloudstudio.js";
18
+ import type { NarracionDeSincronizacion, ResultadoDeSubida } from "../core/actos.js";
19
+ import { type Escribir } from "./stdio.js";
20
+ import { type IdTema } from "./tema.js";
21
+ import type { DecisionDeConsola, Preguntar, RespuestaConSeleccion } from "./aprobar.js";
22
+ import { type ModoDeEscritura } from "../core/modoDeEscritura.js";
23
+ import { URL_CLOUDSTUDIO_POR_OMISION } from "../agent/cloudstudio/cloudstudioMcp.js";
24
+ import type { CatalogoModelosPort, ModeloDisponible } from "../core/ports.js";
25
+ import { type Esfuerzo } from "../core/esfuerzo.js";
26
+ /**
27
+ * Una línea del lazo, con su procedencia DICHA cuando hace falta decirla.
28
+ *
29
+ * El lazo mira si la línea empieza por «/» para decidir si es un comando. En las pieles de
30
+ * TERMINAL eso es exactamente lo que se quiere: el teclado es la única puerta que hay y «/»
31
+ * es la sintaxis que la abre. En la web no — allí **cada acción tiene su botón** (el modelo
32
+ * en la pastilla, el tema en Apariencia, la sincronización en su pestaña), así que «/» no
33
+ * abre nada. Y mientras estuvo abriendo comandos, teclear «/» para hablar de una ruta del
34
+ * proyecto EJECUTABA una orden en vez de mandarla al modelo.
35
+ *
36
+ * La distinción no se puede adivinar mirando la cadena, porque por la MISMA cola circulan
37
+ * las dos cosas: lo que teclea una persona y lo que pide un control de la interfaz
38
+ * (`consolaWeb.encolar`, que es como el servidor aplica `/modelo …` sin que nadie lo
39
+ * teclee). Por eso la línea lo dice:
40
+ * - `comoComando: false` — la tecleó una persona en una piel sin comandos. Es PROSA, y va
41
+ * al modelo tal cual, con su «/» delante.
42
+ * - `comoComando: true` — la pidió un control de la interfaz, o es una piel donde el
43
+ * teclado manda. La FUNCIÓN se comparte aunque la sintaxis no se exporte.
44
+ *
45
+ * Una `string` a secas se lee como siempre —comando si empieza por «/»—, que es lo que
46
+ * siguen haciendo stdio, la TUI, la consola de una tarea y los dobles de los tests: el
47
+ * contrato viejo no se mueve y ninguna de esas pieles cambia de comportamiento.
48
+ */
49
+ export type LineaDeConsola = string | {
50
+ texto: string;
51
+ comoComando: boolean;
52
+ /**
53
+ * La CLAVE de sustitución: si al encolar esta línea ya hay otra PENDIENTE con la misma
54
+ * clave, aquélla se retira. Es para los controles que reflejan un ESTADO —el modo de
55
+ * escritura, el modelo, el esfuerzo—, que se pulsan una vez por cambio de opinión y
56
+ * solo el último vale.
57
+ *
58
+ * Viaja como DATO, nunca se deduce del `texto`: comparar dos cadenas para ver si «son
59
+ * el mismo comando» sería parsear la sintaxis que el servidor acaba de componer, la
60
+ * misma trampa que `DecisionDeConsola` y `Acto.clase` ya evitan.
61
+ *
62
+ * **Ausente es lo de siempre**, y eso es la mitad de la decisión: dos `/sync subir` son
63
+ * dos operaciones, y lo que teclea una persona no se coalesce nunca.
64
+ */
65
+ sustituye?: string;
66
+ };
67
+ export interface Consola {
68
+ /** De dónde vienen las líneas del usuario. Agotarlo termina la sesión: es EOF, no cuelgue. */
69
+ lineas: AsyncIterable<LineaDeConsola>;
70
+ escribir: Escribir;
71
+ /** Para las aprobaciones dentro de un turno. */
72
+ preguntar: Preguntar;
73
+ interactivo: boolean;
74
+ /**
75
+ * ¿Se acabó la entrada? Acompaña a `preguntar`, y existe porque su cadena vacía
76
+ * significa DOS cosas —el usuario pulsó Enter, o el readline se cerró— y con
77
+ * `interactivo: true` la primera APRUEBA: sin distinguirlas, un Ctrl-D aprobaba una
78
+ * escritura de fichero (`cli/aprobar.ts` lo cuenta entero). Ausente = no se sabe; la
79
+ * TUI y la web no lo necesitan porque sus aprobaciones van por `aprobacionesTui`.
80
+ */
81
+ eof?: () => boolean;
82
+ /**
83
+ * Lee una clave SIN eco (para `provider`). El eco-off no se puede probar desde
84
+ * aquí: es la costura de test, y la implementación de producción (raw-mode de
85
+ * stdin) vive fuera — este fichero solo la usa.
86
+ */
87
+ leerSecreto: (pregunta: string) => Promise<string>;
88
+ /** El catálogo vivo entra por puerto; los tests le dan su doble determinista. */
89
+ catalogoModelos: CatalogoModelosPort;
90
+ /** Escritura global inyectada: la consola elige, pero no conoce el disco. */
91
+ guardarModeloGlobal: (papel: Papel, id: string) => {
92
+ ruta: string;
93
+ id: string;
94
+ };
95
+ /**
96
+ * Selector opcional de una piel rica. La consola conserva su flujo de preguntas y
97
+ * número cuando no existe (stdio y tests que no montan la TUI).
98
+ */
99
+ seleccionar?: (selector: SelectorDeConsola) => Promise<string | undefined>;
100
+ /**
101
+ * La piel que los turnos usan para pintarse. La consola stdio no la define (se usa
102
+ * `crearPielStdio`); la TUI la aporta — mismo contrato `Piel`, otro render.
103
+ */
104
+ piel?: () => Piel;
105
+ /**
106
+ * Las aprobaciones propias (modal TUI). Ausente = `pedirDecisiones` por readline.
107
+ * Mismo contrato que el puerto `pedirAprobacion` de `abrirSesionReal`.
108
+ */
109
+ aprobacionesTui?: (pendientes: PendienteDeAprobacion[], ficheros: Map<string, string>, diffs: Map<string, LineaDeDiff[]>) => Promise<Map<string, Decision>>;
110
+ /**
111
+ * Cuántas RONDAS de aprobación admite un turno de esta consola. Ausente = el de siempre
112
+ * (`MAX_APPROVAL_ROUNDS`).
113
+ *
114
+ * Lo pone quien monta la consola porque es quien sabe QUIÉN está detrás: el tope de
115
+ * cinco se dimensionó para una persona pulsando —«te lo he preguntado cinco veces,
116
+ * para»—, y en una tarea de fondo una ronda no es una pregunta, es una tanda de
117
+ * escrituras que se autorizan solas. Lo reenvía `crearEjecutorReal` a `abrirSesionReal`,
118
+ * que es donde vive el bucle; ver `TOPE_DE_RONDAS_DE_TAREA` (`core/tareas.ts`) para el
119
+ * valor y el porqué de que no sea infinito.
120
+ */
121
+ topeDeAprobaciones?: number;
122
+ /**
123
+ * Esta piel tiene el modo de escritura SIEMPRE a la vista. Ausente = no.
124
+ *
125
+ * Lo declara quien monta la consola, igual que `topeDeAprobaciones`, y cambia cuánto
126
+ * EXPLICA `/aprobacion` al ponerlo. En la web hay una pastilla en el compositor y una
127
+ * nota permanente arriba del chat que ya cuentan los tres detalles —que se avisará con
128
+ * los nombres, que es de esta conversación y que subir sigue preguntando—, así que
129
+ * repetirlos en el transcript era la duplicación de siempre: cuatro renglones que dicen
130
+ * lo que se está leyendo dos centímetros más arriba. En el terminal no hay ni pastilla ni
131
+ * nota, y esos tres detalles son lo único que los cuenta.
132
+ *
133
+ * Va como propiedad del DESTINO y no como una bandera de la línea, por lo mismo que
134
+ * `Piel.anotarSincronizacion?`: la misma `/aprobacion` tecleada en el terminal DEBE
135
+ * imprimir la explicación entera, y eso no lo puede decidir quien compone el texto.
136
+ */
137
+ modoALaVista?: boolean;
138
+ /**
139
+ * El agente puede PROPONER repartir un encargo en tareas de fondo encadenadas (`proponer_tareas`).
140
+ * Ausente = no. Lo declara solo la consola de una PERSONA en la web, que es la que tiene la cola de
141
+ * tareas y la tarjeta para encolarlas: la de una tarea de fondo no (encadenaría trabajo sin nadie
142
+ * delante), ni el terminal, `run` o los evals. Lo lee `crearEjecutorReal` al abrir la sesión.
143
+ */
144
+ proponeTareas?: boolean;
145
+ /**
146
+ * Es la consola de una TAREA DE FONDO: nadie delante que conteste. Ausente = no. Con ella el agente resuelve sus dudas
147
+ * solo —su opción recomendada, o la que decida— y cierra con un resumen de lo que hizo (`trabajoSinPersona` en
148
+ * TrueForge). Lo declara solo `consolaDeTarea.ts`; lo lee `crearEjecutorReal` al abrir la sesión.
149
+ */
150
+ tareaDeFondo?: boolean;
151
+ /**
152
+ * El estado de sesión ACABA de cambiar (un comando devolvió uno nuevo).
153
+ *
154
+ * Existe porque el modelo en vigor vive dentro del lazo: `/modelo` y `/modelos` cambian
155
+ * `estado.fuentes` en caliente y no tocan disco, así que nadie fuera de `correrConsola`
156
+ * puede saber cuál está puesto — y una piel que lo enseñe tiene que enterarse cuando
157
+ * cambia, no derivarlo de una frase del transcript. stdio y la TUI no la implementan: la
158
+ * TUI ya re-parsea `acuseDeModelo` para su barra lateral, y stdio no pinta estado.
159
+ */
160
+ alEstado?: (estado: EstadoDeSesion) => void;
161
+ /** Cambia la paleta de la piel actual; la TUI además fuerza un repintado completo. */
162
+ aplicarTema?: (tema: IdTema) => void;
163
+ /** Persistencia inyectada: el tema es del proyecto, no de la cuenta. */
164
+ guardarTemaDeProyecto?: (tema: IdTema) => {
165
+ ruta: string;
166
+ tema: string;
167
+ };
168
+ /** Conexión OAuth + MCP, inyectada desde agent para que esta capa siga sin SDK MCP. */
169
+ conectarCloudStudio?: (url: string, scopes: readonly string[], informar: (texto: string) => void) => Promise<{
170
+ url: string;
171
+ scopes: readonly string[];
172
+ herramientas: Array<{
173
+ nombre: string;
174
+ descripcion: string;
175
+ }>;
176
+ proyectos: Array<{
177
+ id: string;
178
+ nombre: string;
179
+ }>;
180
+ }>;
181
+ /** El endpoint es configuración de proyecto; los tokens OAuth no. */
182
+ guardarCloudStudioDeProyecto?: (url: string, scopes: readonly string[]) => {
183
+ ruta: string;
184
+ url: string;
185
+ scopes: string[];
186
+ };
187
+ /** El modo es configuración local del proyecto, inyectada desde el adaptador de disco. */
188
+ guardarModoDeProyecto?: (modo: "offline" | "cloud") => {
189
+ ruta: string;
190
+ modo: "offline" | "cloud";
191
+ };
192
+ guardarProyectoCloudStudioDeProyecto?: (proyecto: {
193
+ id: string;
194
+ nombre: string;
195
+ }) => {
196
+ ruta: string;
197
+ proyecto: {
198
+ id: string;
199
+ nombre: string;
200
+ };
201
+ };
202
+ /**
203
+ * Las ramas del proyecto remoto YA elegido, hermana de `conectarCloudStudio`: esta capa
204
+ * tampoco conoce MCP para esto. Con una sola rama disponible el alta no pregunta.
205
+ */
206
+ ramasDeCloudStudio?: (proyecto: string) => Promise<string[]>;
207
+ /** La rama ORIGEN es identidad del remoto, no una preferencia: va dentro de `cloudstudio`. */
208
+ guardarRamaDeProyecto?: (rama: string) => {
209
+ ruta: string;
210
+ rama: string;
211
+ };
212
+ /** El modelo propio del proyecto, por papel. Nunca lleva claves. */
213
+ guardarModelosDeProyecto?: (papel: Papel, id: string) => {
214
+ ruta: string;
215
+ id: string;
216
+ };
217
+ /**
218
+ * Sincronización con CloudStudio, inyectada desde `agent/`: esta capa no conoce MCP ni
219
+ * git. Su ausencia (modo guion, tests) es la que hace que `/sync` lo diga sin reventar.
220
+ *
221
+ * `politicaDeAprobacion` solo importa para «subir» (`core/cloudstudio.ts` documenta el
222
+ * hueco): quien construye el adaptador real la reenvía a `agent/cloudstudio/subida.ts#subir`, que
223
+ * la exige. Esta capa no rellena el hueco por su cuenta — eso es cosa del comando
224
+ * `/sync` (ver `politicaInteractiva` más abajo), que sí tiene `preguntar`/`escribir`.
225
+ */
226
+ sincronizar?: (accion: AccionDeSincronizacion, raiz: string, politicaDeAprobacion?: PoliticaDeAprobacion,
227
+ /**
228
+ * Los avisos DETERMINISTAS de la sincronización, tal cual los emite `agent/`: «el
229
+ * servidor truncó el listado», «el ZIP falló; bajando fichero a fichero», qué
230
+ * ficheros no se pudieron bajar, cuántos no subieron, qué configuración de git se
231
+ * conservó. En este repo los avisos son código y no prompt; sin este cable estaban
232
+ * escritos y no llegaban a ninguna parte (el `informar` por omisión es `() => {}`).
233
+ */
234
+ informar?: (texto: string) => void,
235
+ /**
236
+ * Para «bajar»: quien autoriza VACIAR la copia (`core/cloudstudio.ts#ConfirmacionDeBajada`).
237
+ * Ausente = no se vacía y se aplica la regla de antes. La rellena el comando `/sync`, que
238
+ * es quien tiene `preguntar`.
239
+ */
240
+ confirmarBajada?: ConfirmacionDeBajada) => Promise<{
241
+ tipo: "texto";
242
+ texto: string;
243
+ subida?: ResultadoDeSubida;
244
+ bajada?: {
245
+ bajados: number;
246
+ };
247
+ } | {
248
+ tipo: "arbol-sucio";
249
+ accion: "bajar" | "subir";
250
+ pendientes: string[];
251
+ }>;
252
+ /**
253
+ * Una operación de sincronización ENTERA, para la piel que tiene un sitio propio donde
254
+ * contarla.
255
+ *
256
+ * **Es OPCIONAL, y por la misma asimetría que `fase?`, `razonamiento?` y `notificacion?` en
257
+ * `Piel`**: quien no lo implemente —stdio, la TUI, la consola de una tarea, los dobles de los
258
+ * tests— sigue recibiendo el recorrido por `escribir`, al vuelo y byte a byte como siempre.
259
+ * Lo que cambia NO es por dónde pasa la sincronización: `/sync subir` y `/sync bajar` siguen
260
+ * siendo la MISMA línea encolada, con el mismo plan, la misma guarda de árbol sucio y la
261
+ * misma aprobación. Lo que cambia es DÓNDE SE CUENTA, y eso es una propiedad del destino, no
262
+ * de la línea: la misma orden en el terminal DEBE imprimir su recorrido y en el navegador no
263
+ * tiene por qué ensuciar el hilo.
264
+ *
265
+ * El nombre es el de la piel web (`anotar*`), y aquí significa «guárdalo en tu registro»: el
266
+ * comando acumula las líneas y entrega UNA operación al final, ya con su hora y su acción.
267
+ * Implementado, `/sync` no escribe ni una línea por `escribir`.
268
+ */
269
+ anotarSincronizacion?: (operacion: NarracionDeSincronizacion) => void;
270
+ /**
271
+ * Una decisión en la que quien contesta puede quedarse con PARTE del plan: la subida a
272
+ * CloudStudio en el navegador, donde el plan es un árbol con casillas.
273
+ *
274
+ * **OPCIONAL por la misma asimetría que `anotarSincronizacion?`**: stdio, la TUI, la consola
275
+ * de una tarea y los dobles no la tienen, y `politicaInteractiva` cae entonces en `preguntar`
276
+ * —todo o nada, byte a byte como siempre—. La implementa `web/servidor/consolaWeb.ts`, y un
277
+ * test de esa consola REAL comprueba que la selección llega a la política: un método opcional
278
+ * declarado y nunca implementado no da ningún error que leer.
279
+ */
280
+ decidirConSeleccion?: (pregunta: string, decision: DecisionDeConsola) => Promise<RespuestaConSeleccion>;
281
+ }
282
+ /**
283
+ * Saludo local de la consola. No procede del modelo ni se incorpora al hilo: debe hacer
284
+ * visible que xonecode está listo sin gastar tokens ni sesgar la primera petición.
285
+ */
286
+ export declare const MENSAJE_BIENVENIDA = "\u00A1Bienvenido a XOneCode! Puedo analizar, explicar y modificar tu proyecto XOne. Escribe `/` para ver los comandos o cu\u00E9ntame qu\u00E9 necesitas.\n";
287
+ /**
288
+ * Hay estado que retomar solo cuando existe la memoria del PROYECTO. Una carpeta
289
+ * `.xonecode` con `config.json` aislado no representa trabajo anterior y debe conservar
290
+ * el saludo de primera visita.
291
+ */
292
+ export declare function hayEstadoDeProyecto(raiz: string): boolean;
293
+ /**
294
+ * Petición interna de reanudación. Es deliberadamente de solo lectura y estrecha para
295
+ * que abrir una sesión existente no se convierta en otra exploración exhaustiva.
296
+ */
297
+ export declare const PETICION_REANUDAR_PROYECTO: string;
298
+ export declare const MENSAJE_REANUDANDO = "Analizando el estado guardado del repositorio\u2026\n";
299
+ export { URL_CLOUDSTUDIO_POR_OMISION };
300
+ /**
301
+ * Primer contacto con una carpeta. En pipes no se crea estado ni se pregunta: el modo
302
+ * offline histórico permanece exactamente igual. Cloud se persiste SOLO después de
303
+ * autenticar y descubrir el MCP, de modo que un login cancelado deja la carpeta virgen.
304
+ */
305
+ export declare function configurarModoInicial(raiz: string, consola: Consola): Promise<void>;
306
+ /** Datos de un selector: UI-neutral, para que `consola.ts` no conozca Ink. */
307
+ export interface SelectorDeConsola {
308
+ titulo: string;
309
+ opciones: readonly {
310
+ id: string;
311
+ etiqueta: string;
312
+ detalle?: string;
313
+ }[];
314
+ /**
315
+ * Por qué se está preguntando esto (o por qué se pregunta OTRA VEZ). Existe porque hay
316
+ * una piel que no pinta el transcript mientras pregunta: durante el alta, la consola web
317
+ * enseña solo la tarjeta con el selector (`apps/web/src/App.tsx`, rama `enAlta`), así que
318
+ * un motivo dicho con `escribir` acabaría en un acto de sistema que nadie está mirando —
319
+ * un fallo mudo justo en el paso que se repite. Las pieles de terminal lo pueden ignorar:
320
+ * ahí el `escribir` ya está a la vista, encima del selector.
321
+ */
322
+ aviso?: string;
323
+ }
324
+ export interface EstadoDeSesion {
325
+ hilo: string;
326
+ raiz: string;
327
+ fuentes: FuentesDeEleccion;
328
+ /** Overrides vivos de `/modelos`, separados de las banderas con las que arrancó la CLI. */
329
+ seleccionesDeCatalogo?: Partial<Record<Papel, string>>;
330
+ /**
331
+ * Cuánto razona el modelo en esta sesión. Ausente = no se manda el parámetro.
332
+ *
333
+ * Va FUERA de `fuentes` a propósito: `FuentesDeEleccion` contesta «qué modelo le toca a
334
+ * cada papel» y tiene su propia precedencia de seis escalones, mientras que esto es un
335
+ * ajuste DEL modelo resuelto — no compite con nada ni viene de un fichero. Meterlo ahí
336
+ * habría obligado a `resolver()` a devolverlo por papel, que es una pregunta que nadie
337
+ * hace: el esfuerzo es de la sesión, no del papel.
338
+ *
339
+ * No se valida aquí contra el modelo: eso lo hace `esfuerzoAplicable` al CONSTRUIR, que
340
+ * es el único sitio que conoce las dos mitades. Un nivel guardado que el modelo de ahora
341
+ * no admite se omite en vez de tumbar el turno — y vuelve a valer si se cambia a un
342
+ * modelo que sí lo acepte, que es justo lo que se quiere al ir probando.
343
+ */
344
+ esfuerzo?: Esfuerzo;
345
+ /** El motor de agente de esta sesión (`core/motor.ts`). Ausente = el de la configuración. */
346
+ motor?: MotorDeAgente;
347
+ /**
348
+ * Quién aprueba las escrituras en esta sesión: supervisado (cada una con su diff) o
349
+ * autónomo (se aplican solas). Ausente = supervisado, y eso NO es «no consta»: de esto
350
+ * hay que decidir algo en cada escritura, así que el hueco se resuelve, y la única
351
+ * dirección segura para resolverlo es la que enseña el diff.
352
+ *
353
+ * Vive AQUÍ y no en `settings.json` —donde vivía, indexado por ruta— porque es de la
354
+ * SESIÓN: el mando está dentro de la caja del chat y se lee como «esta conversación».
355
+ * `core/modoDeEscritura.ts` tiene el argumento entero, incluido por qué se retiró la
356
+ * condición que lo prohibía en un proyecto conectado a CloudStudio.
357
+ *
358
+ * Va fuera de `fuentes` por lo mismo que el esfuerzo: `FuentesDeEleccion` contesta «qué
359
+ * modelo le toca a cada papel» y esto no compite con nada ni viene de un fichero.
360
+ */
361
+ modo?: ModoDeEscritura;
362
+ }
363
+ /** Lo que hace un comando de barra: escribe y puede cambiar el estado de la sesión. */
364
+ export type ManejadorDeBarra = (args: string[], estado: EstadoDeSesion, consola: Consola) => Promise<{
365
+ seguir: boolean;
366
+ estado?: EstadoDeSesion;
367
+ }>;
368
+ /**
369
+ * Cómo se corre una línea de prosa. El valor por omisión usa el agente guionizado.
370
+ *
371
+ * **Devuelve lo que el turno sabe de sí mismo**, y ese retorno es una deuda que se paga
372
+ * aquí. Devolvía `Promise<void>`, así que `crearEjecutorReal` (`cli/main.ts`) tiraba el
373
+ * retorno de `sesion.turno` y con él el `cortadoPorTope` que sabe que quedaron escrituras
374
+ * sin aplicar. Medido con las tareas de fondo: cuatro ficheros escritos, una escritura
375
+ * abandonada, el verificador sin correr ni una vez, y el kanban diciendo «terminada».
376
+ *
377
+ * `void` sigue siendo válido a propósito: la mayoría de los caminos —el guionizado, las
378
+ * pieles que solo pintan— no tienen nada que informar, y **ausente no es vacío**: quien lo
379
+ * consume trata «no informó» como «no se sabe» y no como «todo bien»
380
+ * (`core/entrega.ts#medidaDeEntrega`). Con eso ninguna piel cambia y la tubería sigue
381
+ * siendo byte-idéntica.
382
+ */
383
+ export type EjecutorDeTurno = (peticion: string, estado: EstadoDeSesion, consola: Consola) => Promise<ResultadoDeTurno | void>;
384
+ /**
385
+ * Un turno con `AgenteGuionizado`, igual que el `cmdRun` sin `--real`.
386
+ *
387
+ * Es el valor por omisión de `correrConsola`: mantiene el invariante de fase 1 (todo corre
388
+ * sin API y sin red). El cableado del agente REAL va en otra tarea y se inyecta como
389
+ * tercer parámetro, mismo patrón que `cmdVerify(ruta, escribir, verificador = ...)`.
390
+ */
391
+ export declare function ejecutarTurnoGuionizado(peticion: string, _estado: EstadoDeSesion, consola: Consola): Promise<void>;
392
+ /** Filtra por id o nombre sin alterar el orden publicado por el proveedor. */
393
+ export declare function filtrarModelos(modelos: readonly ModeloDisponible[], filtro: string): ModeloDisponible[];
394
+ export type EleccionNumerada = {
395
+ tipo: "elegido";
396
+ modelo: ModeloDisponible;
397
+ } | {
398
+ tipo: "cancelado";
399
+ } | {
400
+ tipo: "invalido";
401
+ };
402
+ /** Un número visible es uno basado en uno; Enter significa cancelar, no elegir el primero. */
403
+ export declare function elegirPorNumero(modelos: readonly ModeloDisponible[], respuesta: string): EleccionNumerada;
404
+ /** Un papel vacío permite salir del flujo, pero cualquier otro texto debe ser exacto. */
405
+ export declare function elegirPapel(respuesta: string): Papel | undefined;
406
+ /** La global solo tiene efecto inmediato si no hay una fuente de rango superior para ese papel. */
407
+ export declare function fuenteQueEclipsaGlobal(papel: Papel, fuentes: FuentesDeEleccion, seleccionesDeCatalogo?: Partial<Record<Papel, string>>): "bandera" | "entorno" | "proyecto" | undefined;
408
+ /** Exportada: `main.ts` la usa para el contexto de `asistenteDeModelo` (stdio y TUI). */
409
+ export declare function hayCredencial(proveedor: Proveedor, raiz: string): boolean;
410
+ /**
411
+ * El selector de modelo de un catálogo ya elegido: la parte que `/modelos` y el alta de
412
+ * proyecto (`configurarModoInicial`) COMPARTEN, para que no haya dos copias del mismo
413
+ * flujo (rico con `seleccionar`, o numerado por `preguntar` cuando esa costura no existe).
414
+ * Devuelve el id crudo del catálogo (sin el prefijo `<proveedor>/`) o `undefined` si se
415
+ * canceló o no había nada entre lo que elegir — los mensajes de cada caso ya se escriben
416
+ * aquí, así que quien llama no repite el aviso.
417
+ */
418
+ export declare function seleccionarModelo(proveedor: Proveedor, consola: Consola): Promise<string | undefined>;
419
+ export declare function crearCompleter(escribir: Escribir, ficherosDelProyecto?: () => ReadonlySet<string>): (linea: string) => [string[], string];
420
+ /**
421
+ * La ÚNICA política de aprobación que existe hoy: rellena el hueco de
422
+ * `core/cloudstudio.ts#PoliticaDeAprobacion` con un humano que ve el plan y responde.
423
+ * Vive aquí, en `cli/`, y no en `agent/cloudstudio/subida.ts`: la política es de la piel, el hueco es
424
+ * del motor.
425
+ *
426
+ * **Es MÁS estricta que `cli/aprobar.ts`, a propósito: aquí el Enter a secas no aprueba
427
+ * ni con TTY.** No es el mismo acto. En `aprobar.ts` se autoriza una escritura con su
428
+ * diff delante, línea a línea, y el Enter que aprueba lo pulsa alguien que está mirando
429
+ * el cambio; aquí se PUBLICA en un servidor remoto, lo que hay en pantalla es una lista
430
+ * de rutas —no el contenido— y es la operación menos reversible del producto. El detalle
431
+ * que lo hace peligroso no se ve: `APPROVALS_TTY` (`vendor/hitl.ts`) contiene la cadena
432
+ * VACÍA, así que pasarle `interactive` a `interpretAnswer` convertiría en «sube» toda
433
+ * respuesta vacía — y `consola.preguntar` devuelve "" también cuando el readline ya está
434
+ * cerrado (Ctrl-D, un stdin agotado a mitad de turno). Un EOF no puede publicar. Por eso
435
+ * se llama sin opciones, contra `APPROVALS_NO_TTY`, y el prompt enseña `[s/N]` siempre:
436
+ * un default visible que no fuera el real sería mentir en el paso que sube.
437
+ *
438
+ * **Y el plan viaja CON la pregunta, no solo delante de ella** (`DecisionDeConsola`): la
439
+ * tarjeta de la consola web enseña la lista y ofrece Aceptar/Cancelar, sin campo donde
440
+ * teclear, y para eso hay que decirle que la respuesta es sí o no. Adivinarlo del `[s/N]`
441
+ * sería leer la sintaxis, y el día que ese prompt cambie la tarjeta ofrecería un editor
442
+ * para una decisión —o dos botones sobre una pregunta abierta— sin un solo error.
443
+ *
444
+ * La política AUTÓNOMA (el papel `afilado` decidiendo sin que nadie mire) todavía no
445
+ * existe — hace falta, además del veredicto del juez, que el código compruebe
446
+ * condiciones deterministas (verificador en verde, árbol limpio, plan sin pendientes):
447
+ * ver el comentario de `PoliticaDeAprobacion`.
448
+ *
449
+ * **`decir` es el sumidero de la operación**, y entra por parámetro porque el plan NO siempre
450
+ * se cuenta en el scrollback: una piel con registro propio (`anotarSincronizacion`) guarda la
451
+ * operación entera y no quiere ni una línea suelta en el hilo. Por omisión es `consola.escribir`,
452
+ * así que quien no pase nada —los tests, cualquier otro llamador— tiene el comportamiento de
453
+ * siempre.
454
+ */
455
+ export declare function politicaInteractiva(consola: Consola, decir?: (texto: string) => void): PoliticaDeAprobacion;
456
+ /**
457
+ * La confirmación de «Actualizar repo local», con lo que se pierde DELANTE — la misma forma
458
+ * que `politicaInteractiva`: las líneas que van al registro viajan también en la pregunta,
459
+ * y la tarjeta las pinta con dos botones. Fail-closed: lo que no sea un sí, no vacía nada.
460
+ */
461
+ export declare function confirmacionInteractiva(consola: Consola, decir?: (texto: string) => void): ConfirmacionDeBajada;
462
+ export declare const COMANDOS: Record<string, {
463
+ descripcion: string;
464
+ manejador: ManejadorDeBarra;
465
+ }>;
466
+ /**
467
+ * El lazo: una línea, una acción, y a la siguiente.
468
+ *
469
+ * Tres cosas NO tumban la sesión: un comando de barra que lanza, un turno que lanza y un
470
+ * comando desconocido (que jamás se manda al modelo). El hilo vive en el checkpointer, así
471
+ * que lo que falle en un turno lo pierde ese turno, no la sesión.
472
+ */
473
+ export declare function correrConsola(consola: Consola, estado: EstadoDeSesion, ejecutarTurno?: EjecutorDeTurno): Promise<number>;
@@ -0,0 +1,7 @@
1
+ import { type FuentesDeEleccion } from "../core/modelos.js";
2
+ import { type Escribir } from "./stdio.js";
3
+ /**
4
+ * Qué hay montado. **Sin red, sin claves y sin el simulador**, a propósito: existe para
5
+ * ver la deriva, y un diagnóstico que necesita credenciales no se usa cuando hace falta.
6
+ */
7
+ export declare function cmdDescribe(fuentes: FuentesDeEleccion, escribir?: Escribir, raiz?: string): number;
@@ -0,0 +1,8 @@
1
+ import { type Escribir } from "./stdio.js";
2
+ /**
3
+ * ¿Puede este sitio ser un proyecto XOne, y responde el simulador?
4
+ *
5
+ * Sale con código != 0 si falta algo imprescindible: es un diagnóstico, y uno que siempre
6
+ * dice que sí no sirve de nada en CI.
7
+ */
8
+ export declare function cmdDoctor(escribir?: Escribir): Promise<number>;
@@ -0,0 +1,25 @@
1
+ import { cargar } from "../agent/config/configEnDisco.js";
2
+ import type { FuentesDeEleccion } from "../core/modelos.js";
3
+ /**
4
+ * Lo que hay que leer del disco ANTES de elegir un modelo: la configuración —del proyecto y
5
+ * la global— y las credenciales, que se aplican al proceso.
6
+ *
7
+ * **Existe porque había DOS puertas y solo una lo hacía.** La consola hidrataba sus fuentes
8
+ * con `cargar()` y llamaba a `aplicarAuth`; `run --real` recibía únicamente lo que venía por
9
+ * bandera, así que corría con el modelo POR OMISIÓN aunque hubiera uno configurado —medido:
10
+ * el `config.json` global decía un modelo y el turno dijo otro, con su origen «(omision)» al
11
+ * lado— y, peor, sin `aplicarAuth` la clave nunca llegaba a `process.env`: un proveedor con
12
+ * credencial no se podía alcanzar desde `run` de ninguna forma. Para un comando cuyo trabajo
13
+ * es MEDIR lo que cuesta un turno, medir otro modelo del que se usa lo deja sin sentido.
14
+ *
15
+ * Un solo cuerpo de función y dos llamadores, que es la regla de siempre en este repo: dos
16
+ * copias de esto son dos sitios donde una de las dos se queda sin la mitad.
17
+ *
18
+ * **Lo que viene por bandera se conserva tal cual**: aquí no se decide ninguna precedencia
19
+ * —de eso va `core/modelos.ts#resolver`, que además recuerda el origen de cada valor—, esto
20
+ * solo rellena las dos fuentes que viven en disco.
21
+ */
22
+ export declare function hidratarFuentesDeDisco(raiz: string, fuentes: FuentesDeEleccion): {
23
+ fuentes: FuentesDeEleccion;
24
+ cargado: ReturnType<typeof cargar>;
25
+ };