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,210 @@
1
+ import type { BaseCheckpointSaver } from "@langchain/langgraph-checkpoint";
2
+ import { type Decision } from "../../vendor/hitl.js";
3
+ import { type MotorDeAgente } from "../../core/motor.js";
4
+ import type { PendienteDeAprobacion } from "../../core/events.js";
5
+ import type { LineaDeDiff } from "../../core/diff.js";
6
+ import type { ConectoresPort, FuentesPort, IconosPort, ModelosPort, SkillsPort, VerifierPort } from "../../core/ports.js";
7
+ import type { SesionReal } from "./sesionReal.js";
8
+ import type { Entorno } from "../config/entorno.js";
9
+ import { type CargarIndice } from "../navegacion/indiceEnDisco.js";
10
+ import { type HechosDelTurno, type VeredictoDelTurno } from "../../core/juezDelTurno.js";
11
+ /**
12
+ * Cierra las aprobaciones que se quedaron sin contestar cuando murió el proceso anterior.
13
+ *
14
+ * Solo existe desde que el hilo se guarda en disco (`agent/sesiones/checkpointer.ts`), y arregla un
15
+ * fallo MEDIDO —y medido dos veces, porque la primera medida estaba mal—. La forma del
16
+ * grafo importa: un grafo de un solo nodo donde `START` va al nodo interrumpido reejecuta
17
+ * ese nodo con el mensaje nuevo y vuelve a preguntar, que es inofensivo. El grafo del
18
+ * agente NO tiene esa forma: `START` va al MODELO, y el nodo parado es el de tools. Así que
19
+ * al reabrir una sesión que se cerró con una aprobación delante, lo que le llega al modelo
20
+ * es `human → ai(tool_calls) → human`: un `AIMessage` con llamadas a tool y ningún
21
+ * `ToolMessage` detrás. Gemini y OpenAI rechazan exactamente eso, así que el primer mensaje
22
+ * tras reabrir se iba en un 400 — y nada lo explicaba.
23
+ *
24
+ * El remedio es una respuesta SINTÉTICA por cada llamada colgada, diciendo la verdad: no se
25
+ * aplicó, porque la sesión se cerró antes de que nadie decidiera. Con eso el historial es
26
+ * válido y además honesto — el modelo se entera de que aquella escritura no llegó a pasar,
27
+ * en vez de dar por hecho que sí. Y es cierto: el `interrupt` pausa ANTES de escribir, o
28
+ * sea que el disco no se tocó.
29
+ *
30
+ * Se hace al ABRIR y no al empezar el turno porque es un arreglo del pasado, no del turno:
31
+ * dentro de una sesión viva las aprobaciones se resuelven por su camino normal. Un fallo
32
+ * aquí no puede impedir abrir la sesión, así que se traga — lo que se pierde entonces es
33
+ * este arreglo, no la conversación.
34
+ *
35
+ * Se exporta para poder probarla sin montar un grafo de verdad, igual que `decisionDeTool`.
36
+ */
37
+ export declare function saldarAprobacionesHuerfanas(agente: unknown, hilo: string): Promise<void>;
38
+ /**
39
+ * Abre una sesión real: agente, checkpointer, hilo y tracker se construyen UNA vez aquí, y
40
+ * viven en el cierre. Todo lo que sobreviva al primer turno tiene que salir de este cierre:
41
+ * reconstruir el agente fuera (o un `MemorySaver` nuevo por llamada) tiraría la conversación.
42
+ */
43
+ export declare function abrirSesionReal(opciones: {
44
+ raiz: string;
45
+ modelos: ModelosPort;
46
+ skills: SkillsPort;
47
+ entorno: Entorno;
48
+ /** Para las aprobaciones. Sin él, una escritura pendiente termina el turno diciéndolo. */
49
+ pedirAprobacion?: (pendientes: PendienteDeAprobacion[], ficheros: Map<string, string>, diffs: Map<string, LineaDeDiff[]>) => Promise<Map<string, Decision>>;
50
+ /**
51
+ * El simulador, para verificar lo que el turno escribió. OPCIONAL, y su ausencia no se
52
+ * disimula: sin él, un turno que escribió termina con el aviso de que no se verificó y el
53
+ * motivo. Es un puerto por lo de siempre —`npm test` no puede necesitar el binario— y
54
+ * porque quien construye el turno no tiene por qué saber cómo se verifica.
55
+ */
56
+ verifier?: VerifierPort;
57
+ /**
58
+ * El `thread_id` del grafo. Entra por parámetro porque quien lo conoce es quien tiene
59
+ * IDENTIDAD para reanudar: en la web es el id de la sesión, y esa igualdad es lo que
60
+ * hace que reabrirla continúe el hilo en vez de releerlo. Sin él se genera uno, que es
61
+ * lo que hacía siempre.
62
+ *
63
+ * Antes había DOS ids para un mismo hilo —el de `EstadoDeSesion.hilo`, que es el que
64
+ * `/hilo` enseña, y el que se generaba aquí—, y solo coincidían después de un `/nuevo`.
65
+ */
66
+ hilo?: string;
67
+ /**
68
+ * Dónde se guarda la memoria del agente. Ausente = en memoria (`MemorySaver`), que es lo
69
+ * que hacía siempre y lo que sigue usando la consola de terminal: persistir un hilo que
70
+ * nadie puede volver a abrir solo engorda un fichero.
71
+ */
72
+ checkpointer?: BaseCheckpointSaver;
73
+ /**
74
+ * La carpeta donde caen los artefactos de esta sesión — lo que el agente ve como
75
+ * `/artefactos/`. Entra por parámetro porque quien sabe si hay sesión con identidad es
76
+ * quien la abrió: en la web es `.xonecode/sesiones/<id>/artefactos`, y sin sesión (la
77
+ * consola de terminal) se cae a `.xonecode/artefactos` del proyecto, que existe igual y
78
+ * no ensucia el índice con carpetas de hilos que nadie puede reabrir.
79
+ */
80
+ artefactos?: string;
81
+ /**
82
+ * El crítico visual, si esta ejecución tiene con qué preguntar.
83
+ *
84
+ * Entra por parámetro como `verifier`, así que `npm test` no le pregunta a ningún modelo, y
85
+ * su ausencia significa «esta ejecución no tiene crítico» y no «la pantalla está bien».
86
+ */
87
+ criticaVisual?: (captura: {
88
+ base64: string;
89
+ mime: string;
90
+ }, pantalla: string) => Promise<{
91
+ veredicto: string;
92
+ observaciones: string[];
93
+ }>;
94
+ /**
95
+ * El JUEZ del turno: ¿esto cumple lo que se pidió? Ausente = no se pregunta.
96
+ *
97
+ * Entra por puerto como el verificador y el crítico, y por lo mismo: llama a un modelo,
98
+ * así que `npm test` sigue sin necesitar clave. Lo puro —el prompt, el parser y qué hacer
99
+ * con cada veredicto— vive en `core/juezDelTurno.ts` y sí tiene test.
100
+ */
101
+ juezDelTurno?: (caso: {
102
+ objetivo: string;
103
+ respuesta: string;
104
+ hechos: HechosDelTurno;
105
+ }) => Promise<VeredictoDelTurno>;
106
+ /**
107
+ * La carpeta de los ADJUNTOS — lo que el agente ve como `/adjuntos/`, de solo lectura
108
+ * (`core/adjuntos.ts`). De una TAREA (`~/.xonecode/tareas/<id>/adjuntos/`) o, desde
109
+ * IXCODE-7, de una SESIÓN (`.xonecode/sesiones/<id>/adjuntos/`, los que una persona
110
+ * anexó en el CHAT): este campo no distingue el origen, es solo la ruta ya resuelta.
111
+ *
112
+ * Entra por parámetro y no se deduce, por lo mismo que `artefactos`: quien sabe qué
113
+ * carpeta corresponde es quien abrió la consola (`cli/main.ts#carpetaDeAdjuntosDelEjecutor`
114
+ * decide entre tarea y sesión), y aquí solo hay una raíz de proyecto. **Ausente en el
115
+ * terminal** (su hilo es un uuid nuevo por arranque, sin sesión que reabrir) **y en toda
116
+ * tarea sin adjuntos** — y entonces **el campo no se pone**, porque una cadena vacía
117
+ * montaría el cwd del proceso como si fueran los adjuntos de alguien.
118
+ */
119
+ adjuntos?: string;
120
+ /**
121
+ * ¿Las escrituras de ESTA sesión se aplican sin pedir aprobación?
122
+ *
123
+ * Es una FUNCIÓN y no un booleano porque se pregunta en cada ronda: el modo se cambia con
124
+ * `/aprobacion` sin cerrar la sesión, y un booleano capturado al abrir dejaría el cambio
125
+ * sin efecto hasta reabrir — justo en la dirección peligrosa la mitad de las veces.
126
+ *
127
+ * Quien decide es `core/modoDeEscritura.ts#seEscribeSinPreguntar`, y no este fichero: sus
128
+ * dos condiciones —el modo de la sesión y que haya alguien delante— dependen de quién
129
+ * montó la consola, y ninguna se puede comprobar aquí.
130
+ *
131
+ * **El MISMO predicado gobierna a los motores externos**, por el campo `modo` que este
132
+ * fichero le pasa a `opcionesDeSubagenteExterno`: sin eso valdría para la mitad de los
133
+ * agentes, y un modo que solo gobierna una mitad miente sobre lo que hace.
134
+ */
135
+ sinAprobacion?: () => boolean;
136
+ /** El raíz puede proponer tareas encadenadas (`proponer_tareas`). Solo TrueForge; ver `Consola.proponeTareas`. */
137
+ puedeProponerTareas?: boolean;
138
+ /** Una tarea de fondo: el agente decide sus dudas solo y resume al acabar. Solo TrueForge; ver `Consola.tareaDeFondo`. */
139
+ trabajoSinPersona?: boolean;
140
+ /**
141
+ * Cuántas RONDAS de aprobación admite un turno. Ausente = `MAX_APPROVAL_ROUNDS`, el de
142
+ * siempre.
143
+ *
144
+ * Existe porque el de la persona no vale para una tarea de fondo, y las dos mitades del
145
+ * argumento importan. `MAX_APPROVAL_ROUNDS` se dimensionó para alguien pulsando —«te lo
146
+ * he preguntado cinco veces, para»—; en una tarea autónoma una ronda no es una pregunta,
147
+ * es una TANDA de escrituras que se autorizan solas, y cinco tandas se agotan en un
148
+ * encargo mediano: medido, un turno se cortó con cuatro ficheros escritos y una escritura
149
+ * abandonada. Y quitarlo no vale, por el mismo argumento que el tope propio de los
150
+ * artefactos: cada pasada es una llamada al modelo y aquí no hay humano que frene el
151
+ * bucle.
152
+ *
153
+ * Gobierna los TRES sitios que miraban esa constante —el corte por rondas, el corte por
154
+ * tandas automáticas y la PREDICCIÓN de si la pasada cierra el turno—, y tiene que
155
+ * gobernar los tres: si la predicción divergiera del corte, un turno se quedaría sin
156
+ * `fin` o cerraría dos veces.
157
+ */
158
+ topeDeRondas?: number;
159
+ /**
160
+ * El cargador del índice de navegación. Ausente, se hace el de disco sobre `raiz`.
161
+ *
162
+ * Entra por parámetro por lo mismo que el verificador: toca disco y entra en la librería del
163
+ * linter, así que un test que no lo pueda doblar tendría que traerse un proyecto de verdad.
164
+ * Lo usan DOS —la tool del agente y la foto de hechos del turno— y es el mismo objeto a
165
+ * propósito: dos cargadores serían dos fuentes para la misma pregunta.
166
+ */
167
+ navegacion?: CargarIndice;
168
+ /**
169
+ * De dónde salen los iconos (IXCODE-18). Ausente = Iconify por la red, que es la composición de
170
+ * PRODUCCIÓN: un test que no la doble la tendría escrita pero no probada.
171
+ */
172
+ iconos?: IconosPort;
173
+ /**
174
+ * De dónde salen las fuentes. Ausente = Google Fonts por la red, la composición de PRODUCCIÓN,
175
+ * por lo mismo que `iconos`. Solo la usa TrueForge (deepagents es legacy y no se toca).
176
+ */
177
+ fuentes?: FuentesPort;
178
+ /**
179
+ * Los conectores MCP del proyecto, el MISMO servicio de Ajustes. Solo lo pasa la web (el único
180
+ * proceso que lo tiene); ausente, ningún agente recibe sus tools. Solo TrueForge los monta:
181
+ * deepagents es legacy.
182
+ */
183
+ conectores?: ConectoresPort;
184
+ /**
185
+ * El motor de agente (`core/motor.ts`). Ausente = el de la configuración: `XONECODE_MOTOR`, el
186
+ * `config.json` del proyecto o el global, y si no, `MOTOR_POR_OMISION`. La web lo pasa con el motor con
187
+ * el que NACIÓ la sesión; el terminal, `run`, el banco y los evals lo dejan a la configuración.
188
+ */
189
+ motor?: MotorDeAgente;
190
+ /**
191
+ * ¿Las dos trazas opt-in (tools y errores/hitos) van encendidas aunque nadie ponga una
192
+ * variable de entorno? Resuelto por quien LLAMA a partir de `Settings.depurar`
193
+ * (`core/settings.ts#depuracionActiva`) — este fichero no lee `settings.json`.
194
+ *
195
+ * **Ausente se comporta EXACTAMENTE como hoy** (`entornoConDepuracion(false, …)` devuelve el
196
+ * entorno intacto): así ningún test que no pase esto ve cambiar nada, y `npm test` sigue sin
197
+ * necesitar esto. Solo los arranques reales —CLI y consola web— resuelven la omisión de la
198
+ * fase de pruebas y la pasan aquí ya decidida.
199
+ */
200
+ depurar?: boolean;
201
+ }): Promise<SesionReal>;
202
+ /**
203
+ * Dónde caen los artefactos de una sesión: la carpeta que traiga quien la abre (la web, por sesión)
204
+ * o, sin ella —la consola de terminal, `run --real`—, `.xonecode/artefactos` del proyecto.
205
+ *
206
+ * **Una función para los DOS motores**, y es el arreglo: la caída vivía escrita dentro del camino
207
+ * de deepagents, y el de TrueForge pasaba la opción tal cual, o sea NADA cuando no venía. Sin
208
+ * carpeta no había montaje, y sin montaje `/artefactos/` era una ruta más del proyecto.
209
+ */
210
+ export declare function carpetaDeArtefactosDeLaSesion(raiz: string, pedida: string | undefined): string;
@@ -0,0 +1,85 @@
1
+ import type { HallazgoDelTurno } from "../../core/events.js";
2
+ import type { InformeVerificacion } from "../../core/ports.js";
3
+ /**
4
+ * Los hallazgos, repartidos entre los ficheros que ESTE turno tocó y los demás.
5
+ *
6
+ * El simulador mira el proyecto entero —es su API—, y un error que ya estaba en un fichero que
7
+ * el agente no abrió no es del agente. Un hallazgo sin fichero no se puede atribuir: se enseña
8
+ * con los del turno, que es el lado conservador. Las rutas salen RELATIVAS: esto viaja al cable.
9
+ */
10
+ export declare function repartirHallazgos(raiz: string, informe: InformeVerificacion, tocadosRelativos: readonly string[]): {
11
+ hallazgos: HallazgoDelTurno[];
12
+ preexistentes: number;
13
+ errores: number;
14
+ };
15
+ /**
16
+ * La huella de un veredicto rojo: sus ERRORES, no todos los hallazgos.
17
+ *
18
+ * Un aviso que va y viene no dice nada de si el error se está arreglando. Y se compara con la
19
+ * del veredicto anterior y no con «¿bajó el número?»: dos errores distintos en vez de dos
20
+ * iguales también es avance, y un modelo que arregla uno y rompe otro no debe quedarse
21
+ * bloqueado como si no hubiera hecho nada.
22
+ */
23
+ export declare function huellaDeErrores(hallazgos: readonly HallazgoDelTurno[]): string;
24
+ /** Lo que cuenta como fichero del PROYECTO para verificar: ni borrados ni `.xonecode/`. */
25
+ export declare function cambiosQueSeVerifican<T extends {
26
+ ruta: string;
27
+ clase?: string;
28
+ }>(cambios: readonly T[]): T[];
29
+ /**
30
+ * Cuántas veces se le devuelven los hallazgos al agente para que los corrija. Dos: tres
31
+ * verificaciones en total. Un modelo que no arregla algo en dos intentos con el error
32
+ * delante no lo arregla al quinto, y cada intento son escrituras que pasan por aprobación
33
+ * humana — o sea, tiempo de una persona. La guarda de «no progresa» (misma huella dos
34
+ * veces) corta antes de llegar aquí cuando el modelo repite el mismo cambio.
35
+ */
36
+ export declare const TOPE_REPARACIONES = 2;
37
+ /**
38
+ * ¿Toca criticar la pantalla en esta pasada?
39
+ *
40
+ * PURA y exportada a propósito: la condición vivía dentro de `conVerificacion`, que es un
41
+ * cierre que TODOS los tests de este fichero doblan, y ahí una regla de producción se queda
42
+ * escrita y no probada — el patrón de fallo que este repo ha pagado nueve veces.
43
+ *
44
+ * Cuatro condiciones, y cada una dice algo distinto: sin crítico esta ejecución no puede
45
+ * preguntar (y eso NO es «la pantalla está bien»); sin capturas no hay nada que mirar; una vez
46
+ * por turno porque sus observaciones no son una huella y no hay forma de saber si una segunda
47
+ * vuelta avanza; y nunca por encima del tope de reparaciones, que es de todo el turno.
48
+ */
49
+ export declare function tocaCriticarPantalla(estado: {
50
+ hayCritico: boolean;
51
+ capturas: number;
52
+ yaDisparo: boolean;
53
+ intento: number;
54
+ }): boolean;
55
+ /**
56
+ * El texto que se le devuelve al agente para que repare, de las DOS fuentes.
57
+ *
58
+ * Fuera del cierre por lo mismo que `tocaCriticarPantalla`. Y no se le dice CÓMO arreglarlo
59
+ * —eso lo sabe él o no lo sabe—, solo lo que se ha medido y lo único que importa aquí: que no
60
+ * invente nada para que el error desaparezca, que es justo lo que XOne no le reprocha.
61
+ */
62
+ /**
63
+ * Lo que se le pide al agente cuando el verificador o el crítico ven algo.
64
+ *
65
+ * **Lleva el OBJETIVO delante, y ése es el arreglo.** Esta petición entra como
66
+ * `HumanMessage` en el mismo hilo (ver abajo), así que a partir de ese momento pasa a ser
67
+ * «el último humano» — y `conservarElEncargo` protege justo ése. O sea que sin el objetivo
68
+ * dentro, el encargo del usuario deja de estar protegido y lo sustituye la lista de
69
+ * hallazgos: el agente no se despista, le hemos cambiado el encargo por debajo y encima se
70
+ * lo recordamos en cada llamada.
71
+ *
72
+ * MEDIDO en un turno real: se pidió «tengo un error al ejecutar la app, arréglalo», se
73
+ * arregló (faltaba un `;` en `funciones.js`), y entonces el crítico visual vio tres textos
74
+ * recortados en otra pantalla —rotos desde antes, y sin relación con el arreglo—. El turno
75
+ * se fue a rediseñar el menú.
76
+ *
77
+ * **Y el objetivo es lo que decide si un hallazgo es trabajo o es ruido.** El mismo
78
+ * «BASICOS PLUS se corta» es ruido si el objetivo era arrancar la app, y es EL trabajo si
79
+ * el objetivo era arreglar los fallos visuales. Eso no lo dice el fichero que se tocó —el
80
+ * heurístico que se descartó— ni lo puede decidir el harness: lo decide el objetivo, y por
81
+ * eso viaja con la petición en vez de quedarse fuera.
82
+ */
83
+ export declare function textoDeReparacion(hallazgos: readonly HallazgoDelTurno[], observaciones: readonly string[],
84
+ /** El encargo ORIGINAL de este turno. Ausente = no se pudo saber, y entonces no se afirma. */
85
+ objetivo?: string): string;
@@ -0,0 +1,66 @@
1
+ import type { InformeVerificacion, VerifierPort } from "../../core/ports.js";
2
+ /** La forma que emite `xone-simulator validate --json` (xone-linter 1.4.0). */
3
+ /**
4
+ * Cuando el simulador no pudo ni empezar. **Medido**: ante una ruta que no existe devuelve
5
+ * `{"success": false, "error": "No existe el directorio del proyecto: …"}` — sin `issues`,
6
+ * y **saliendo con código 0**, así que no lo caza ningún `catch` del proceso.
7
+ *
8
+ * Es un fallo del ENTORNO, no del proyecto, y por eso es una excepción y no un informe en
9
+ * rojo: un informe rojo dice «tu proyecto tiene errores», que aquí sería mentira.
10
+ */
11
+ export declare class ErrorDelSimulador extends Error {
12
+ }
13
+ export interface SalidaDelSimulador {
14
+ success: boolean;
15
+ path?: string;
16
+ /** Presente SOLO en la forma de fallo, y entonces `issues` no viene. */
17
+ error?: string;
18
+ summary?: {
19
+ total: number;
20
+ errors: number;
21
+ warnings: number;
22
+ };
23
+ issues?: Array<{
24
+ severity: string;
25
+ code: string;
26
+ message: string;
27
+ file?: string;
28
+ location?: {
29
+ file: string;
30
+ line?: number;
31
+ column?: number;
32
+ };
33
+ }>;
34
+ }
35
+ /**
36
+ * De la salida del simulador al informe del harness. PURA: sin subprocesos.
37
+ *
38
+ * Separada de quien invoca el binario para poder probar la traducción con el fichero de
39
+ * `__oro__/` — es el patrón del puerto aplicado dentro del puerto, igual que el harness
40
+ * Python separa la función que recibe la sesión ya lista del puerto que la construye.
41
+ */
42
+ export declare function aInforme(salida: SalidaDelSimulador): InformeVerificacion;
43
+ /**
44
+ * El verificador real. NO lleva la marca `ES_DOBLE`: es de verdad, y `describe()` lo dirá.
45
+ *
46
+ * `validate` sale con código != 0 cuando encuentra errores, así que un fallo del proceso
47
+ * NO es un fallo del harness: es el resultado. Se distingue por si hubo JSON parseable —
48
+ * confundir las dos cosas es el patrón «fallo del proyecto != fallo del harness».
49
+ */
50
+ export declare class SimuladorVerifier implements VerifierPort {
51
+ private readonly binario?;
52
+ /** Con un binario explícito se usa ESE, por el PATH; sin él, el de nuestra dependencia (`comoLanzarElSimulador`). */
53
+ constructor(binario?: string | undefined);
54
+ verificar(rutaProyecto: string): Promise<InformeVerificacion>;
55
+ }
56
+ /**
57
+ * Cómo se lanza `xone-simulator`: **el de NUESTRA dependencia** (`xone-linter`, cuyo `bin` es `dist/cli.js`), con el Node
58
+ * que corre xonecode; y solo si no se encuentra, `xone-simulator` por el PATH. Medido en la máquina Windows de un usuario
59
+ * (instalado con `npx`): el verificador lo llamaba por el PATH, donde no estaba, y cada turno cerraba con «no está
60
+ * instalado (ENOENT)» aunque el programa venía DENTRO del paquete. Aquí funcionaba porque estaba instalado global.
61
+ */
62
+ export declare function comoLanzarElSimulador(resolver?: (id: string) => string): {
63
+ programa: string;
64
+ previos: string[];
65
+ nombre: string;
66
+ };
package/dist/bin.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,18 @@
1
+ /**
2
+ * El acuse de `/modelo` — la frase tiene UN solo hogar.
3
+ *
4
+ * `consola.ts` la escribe y `tui/correrTui.ts` la re-parsea para actualizar la
5
+ * sidebar (el eco de `escribir` es la única costura que tienen los manejadores de
6
+ * consola para avisar de un cambio en caliente). Antes eran dos copias — el literal
7
+ * y un regex escrito a mano — sin nada que probara que decían lo mismo: si alguien
8
+ * retocaba la frase, la sidebar dejaba de enterarse sin que ningún test fallara.
9
+ * Escribir y leer viven aquí, y el test de ida y vuelta ata el par.
10
+ */
11
+ import type { Papel } from "../core/ports.js";
12
+ /** El acuse de un cambio de modelo: el papel ausente es «los tres papeles a la vez». */
13
+ export declare function acuseDeModelo(papel: Papel | undefined, modelo: string): string;
14
+ /** El acuse parseado: `{ modelo }` si cambiaron los tres, `{ papel, modelo }` si cambió uno. */
15
+ export declare function modeloDeAcuse(texto: string): {
16
+ papel?: Papel;
17
+ modelo: string;
18
+ } | undefined;
@@ -0,0 +1,162 @@
1
+ import { REJECT_MESSAGE, MAX_APPROVAL_ROUNDS, type Decision } from "../vendor/hitl.js";
2
+ import type { PendienteDeAprobacion } from "../core/events.js";
3
+ import { type LineaDeDiff } from "../core/diff.js";
4
+ import type { Escribir } from "./stdio.js";
5
+ export { MAX_APPROVAL_ROUNDS, REJECT_MESSAGE, type Decision };
6
+ /**
7
+ * Una línea del plan, CON lo que le pasa al fichero.
8
+ *
9
+ * `texto` es la línea entera tal como sale por el scrollback —signo y ruta, con sus dos
10
+ * espacios de sangría—: la tarjeta y el terminal enseñan lo MISMO porque es el mismo texto,
11
+ * y el día que alguien cambie el formato de uno tiene que cambiar el del otro.
12
+ *
13
+ * `cambio` es lo que el signo SIGNIFICA, y viaja aparte por la razón de siempre: `+` es
14
+ * sintaxis. Una piel que quisiera colorear lo que se añade leería el primer carácter de
15
+ * `texto`, y eso se rompe el día que la sangría cambie de ancho o que una ruta empiece por
16
+ * `-` —enseñando en verde un borrado—, sin un solo error. Es el MISMO dato que
17
+ * `CambioLocal.clase` (`core/planDeSubida.ts`), con los mismos tres valores.
18
+ *
19
+ * **Ausente = esta línea no habla de un fichero**: hoy solo pasa con la cabecera («SUBIDA A
20
+ * CLOUDSTUDIO — N operaciones»), que no es ni un añadido ni un borrado. Distinto de
21
+ * `"nuevo"`, que sí lo es.
22
+ */
23
+ export interface LineaDelPlan {
24
+ texto: string;
25
+ cambio?: "nuevo" | "modificado" | "borrado";
26
+ /**
27
+ * La ruta del fichero de la línea, relativa al proyecto, como DATO: es lo que una piel
28
+ * necesita para pintar el plan como árbol y dejar elegir qué entra. Sacarla del `texto`
29
+ * sería leer sintaxis otra vez. Ausente en la cabecera, que no habla de un fichero.
30
+ */
31
+ ruta?: string;
32
+ }
33
+ /**
34
+ * Una pregunta cuya respuesta es SÍ o NO, con lo que se decide delante.
35
+ *
36
+ * Existe porque una piel rica no puede saber si el campo de texto sobra adivinándolo del
37
+ * enunciado: el `[s/N]` es SINTAXIS, y el día que alguien reescriba el prompt —o lo
38
+ * traduzca— la tarjeta que ofrece botones se quedaría con un editor, o al revés: dos
39
+ * botones sobre una pregunta de texto libre, que es el caso que no puede pasar y no daría
40
+ * ningún error. Aquí viaja la INTENCIÓN, que es lo mismo que ya hace `LineaDeConsola`
41
+ * diciendo si una línea es prosa.
42
+ *
43
+ * `lineas` es lo que se decide, línea a línea, tal como se enseña en el terminal: quien
44
+ * pregunta ya lo escribe con `escribir`, y una piel con tarjeta lo repite DENTRO de ella
45
+ * porque es el paso donde se DECIDE — la misma razón que hace viajar el diff entero en la
46
+ * aprobación de escrituras. No es contenido nuevo por el cable: son las mismas líneas que
47
+ * ese `escribir` ya manda.
48
+ *
49
+ * **Y el enunciado va SIN la pista de tecleo.** `politicaInteractiva` pregunta «¿Subir a
50
+ * CloudStudio?», no «¿Subir a CloudStudio? [s/N]»: el `[s/N]` es la pista de una piel que
51
+ * se contesta ESCRIBIENDO, y la pone esa piel (`PISTA_DE_DECISION`, ver abajo). Una tarjeta
52
+ * con dos botones no tiene nada que teclear, y llevarlo dentro del texto dejaba al cliente
53
+ * la opción de enseñarlo —donde se lee como «escribe s o n» delante de un botón— o de
54
+ * recortarlo a ciegas, que es leer sintaxis por la puerta de atrás.
55
+ *
56
+ * La respuesta sigue siendo una cadena por la misma puerta de siempre (`interpretAnswer`:
57
+ * `"s"` autoriza, cualquier otra cosa rechaza), y las dos caras de los botones son esas
58
+ * dos, no un vocabulario nuevo.
59
+ */
60
+ export interface DecisionDeConsola {
61
+ lineas: readonly LineaDelPlan[];
62
+ /**
63
+ * `true` = quien contesta puede quedarse con PARTE de las líneas con `ruta` (la subida a
64
+ * CloudStudio en la consola web). Solo la honra una consola con `decidirConSeleccion`; las
65
+ * demás preguntan sí o no al plan entero, como siempre.
66
+ */
67
+ seleccionable?: true;
68
+ /**
69
+ * De QUÉ operación de sincronización es esta decisión, como dato: la web mantiene el diálogo
70
+ * abierto tras «Aceptar» hasta que llega el acto de ESA operación, y lo identifica por esto,
71
+ * no por el enunciado. Ausente = una decisión que no lanza ninguna operación.
72
+ */
73
+ operacion?: "subir" | "bajar";
74
+ }
75
+ /**
76
+ * La respuesta de una decisión que admite selección: la cadena de siempre
77
+ * (`interpretAnswer`) y, si la piel dejó elegir, las rutas que la persona dejó marcadas.
78
+ * `seleccion` AUSENTE es «no se eligió nada aparte»: el plan entero, como con `preguntar`.
79
+ */
80
+ export interface RespuestaConSeleccion {
81
+ respuesta: string;
82
+ seleccion?: readonly string[];
83
+ }
84
+ /**
85
+ * La pista de una pregunta que se contesta TECLEANDO: `[s/N]`, con el defecto en
86
+ * mayúscula.
87
+ *
88
+ * La pone la piel que tiene un teclado delante —stdio y la TUI—, y solo esa: son las dos
89
+ * únicas que resuelven una pregunta con lo que alguien escriba. La consola web no la pone
90
+ * porque su tarjeta no tiene campo.
91
+ *
92
+ * Es SIEMPRE `[s/N]` y nunca `[S/n]` porque el Enter a secas NO aprueba una decisión: la
93
+ * asimetría de `CLAUDE.md` —aprobar ESCRIBE— y `politicaInteractiva` llama a
94
+ * `interpretAnswer` sin `interactive`, así que la cadena vacía rechaza aquí incluso con un
95
+ * TTY de verdad. La pista de la APROBACIÓN de escrituras sí alterna, y por eso la construye
96
+ * `pedirDecisiones` en el sitio donde se sabe si hay humano (`hayHumano()`): una pista no
97
+ * puede viajar con la pregunta cuando su contenido depende de la piel que la va a enseñar.
98
+ *
99
+ * **Límite declarado**: una decisión no puede cambiar su pista por pregunta. Hoy solo hay
100
+ * una que la use —la subida— y su defecto es fijo; el día que una decisión se apruebe con
101
+ * Enter, esto tiene que bajar al que la formula, como ya hace `aprobar.ts`.
102
+ */
103
+ export declare const PISTA_DE_DECISION = " [s/N] ";
104
+ /**
105
+ * Leer una línea. Entra por parámetro: sin esto, esto no se puede probar.
106
+ *
107
+ * El segundo parámetro es la FORMA de la respuesta, y es opcional a propósito: la mayoría
108
+ * de las preguntas —«número (Enter cancela)», una URL, una clave— son texto libre, y una
109
+ * implementación que no lo declare sigue valiendo (una función con menos parámetros es
110
+ * asignable), así que stdio, la TUI y los dobles de los tests no cambian de una línea.
111
+ */
112
+ export type Preguntar = (pregunta: string, decision?: DecisionDeConsola) => Promise<string>;
113
+ /**
114
+ * Pregunta por cada pendiente y devuelve las decisiones, en el mapa por id.
115
+ *
116
+ * **Fail-closed, y no es una preferencia: es la asimetría que protege el proyecto del
117
+ * usuario.** Aprobar ESCRIBE; rechazar no toca nada. Así que lo que no se entiende es
118
+ * RECHAZO, siempre. Y el Enter a secas solo aprueba con `interactive: true` —un TTY de
119
+ * verdad detrás—: en un pipe o en CI una línea en blanco no demuestra que haya nadie
120
+ * mirando, y esto aprueba escrituras sobre un proyecto real.
121
+ *
122
+ * `interpretAnswer` ya implementa las dos reglas y está medido: se reusa, no se reescribe.
123
+ *
124
+ * **`eof` existe porque un TTY no basta para saber que hay alguien.** `crearPreguntar`
125
+ * (`cli/stdio.ts`) devuelve cadena vacía por DOS motivos distintos que llegan idénticos:
126
+ * el usuario pulsó Enter, o la entrada se acabó (Ctrl-D, un stdin agotado a mitad de
127
+ * turno). Con `interactive: true` la cadena vacía APRUEBA —el Enter vale por un sí, y es
128
+ * un rasgo querido: quien lo pulsa tiene el diff delante—, así que sin distinguirlas un
129
+ * Ctrl-D aprobaba una escritura que nadie llegó a ver. Con `eof`, un readline cerrado
130
+ * degrada la pregunta a no-interactiva y ahí la cadena vacía ya rechaza. No se cambió
131
+ * `Preguntar` a `string | null`: contados a mano hay 18 sitios que llaman a un `preguntar`
132
+ * fuera de los tests, y en 16 la cadena vacía significa «cancela / usa el valor por
133
+ * omisión» —que es lo correcto también ante un EOF—. Solo las dos PUERTAS necesitan
134
+ * distinguir: esta y la subida a CloudStudio (`consola.ts#politicaInteractiva`, que lo
135
+ * resolvió de otra forma: allí el Enter no vale por un sí y el prompt es `[s/N]` siempre).
136
+ */
137
+ export declare function pedirDecisiones(pendientes: PendienteDeAprobacion[], preguntar: Preguntar, escribir: Escribir, opciones?: {
138
+ interactive?: boolean;
139
+ /**
140
+ * ¿Se acabó la entrada? `crearDetectorDeEof` (`cli/stdio.ts`) es quien lo sabe para el
141
+ * readline de la consola; `eofDeStdin` (aquí abajo) para el stdin crudo del disparo
142
+ * único. Ausente = no se sabe, y entonces manda `interactive` a secas: los llamadores
143
+ * que no lo pasan se comportan exactamente igual que antes.
144
+ */
145
+ eof?: () => boolean;
146
+ fichero?: (id: string) => string | undefined;
147
+ /**
148
+ * Las líneas de diff del pendiente (ver `agent/turno/interrupts.ts` → `cambioDe`). Este es
149
+ * el ÚNICO sitio donde el contenido de una escritura se enseña, y es a propósito:
150
+ * aquí se DECIDE sobre ese contenido, y aprobar a ciegas es peor que no aprobar.
151
+ */
152
+ diff?: (id: string) => LineaDeDiff[] | undefined;
153
+ }): Promise<Map<string, Decision>>;
154
+ /**
155
+ * El EOF de stdin CRUDO, hermano de `crearDetectorDeEof` para quien no tiene un readline
156
+ * (el disparo único de `cli/run.ts`). `readableEnded` pasa a `true` al emitirse `end`
157
+ * — medido en este Node 22, junto con lo otro que hace falta saber aquí: un `on("end")`
158
+ * registrado DESPUÉS del EOF ya no dispara nunca.
159
+ */
160
+ export declare function eofDeStdin(): boolean;
161
+ /** El `preguntar` de producción: una línea de stdin. */
162
+ export declare function preguntarPorStdin(): Preguntar;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * `xonecode config` — diagnóstico de la configuración SIN llamar a ningún modelo.
3
+ *
4
+ * Un comando de diagnóstico no puede ser la vía por la que una clave acaba en un log o
5
+ * una captura, así que la regla dura de este fichero es: NUNCA se imprime ni un carácter
6
+ * de una credencial — ni truncada, ni los últimos cuatro. Solo «puesta»/«sin credencial»
7
+ * y de dónde sale. Por eso el JSON de salida se construye campo a campo a mano y jamás
8
+ * serializa el objeto `auth` de `cargar`, que SÍ lleva las claves en texto plano.
9
+ *
10
+ * Y al revés: un config MAL escrito no puede impedir que este comando funcione — es
11
+ * justo el que uno corre cuando la configuración está mal. Por eso siempre devuelve 0.
12
+ */
13
+ import { type FuentesDeEleccion } from "../core/modelos.js";
14
+ import { type Escribir } from "./stdio.js";
15
+ export declare function cmdConfig(fuentes: FuentesDeEleccion, opciones?: {
16
+ json?: boolean;
17
+ }, escribir?: Escribir, raiz?: string): number;