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,76 @@
1
+ /**
2
+ * Qué estilo le toca de verdad a un control, y de dónde sale.
3
+ *
4
+ * ## La medida que lo motiva
5
+ *
6
+ * Diez pasadas reales del mismo encargo visual («el título sale cortado»), 19-09-2026. En OCHO
7
+ * de ellas `xone_navegacion` es la PRIMERA tool del turno —el modelo sí empieza por donde se le
8
+ * dice— y luego deja de servirle: la usa una o dos veces y el resto del turno son **20-46
9
+ * lecturas y 30-42 `grep`**, de los cuales ~22 de cada 30 son **la misma clase con variantes**
10
+ * (`xnTituloHeaderC`, `.xnTituloHeader`, `xnHeader`, `xnLightTitle`, `font42`…). Más cinco
11
+ * ficheros CSS, varios `.xne` AJENOS buscando ejemplos, y nueve documentos de skill.
12
+ *
13
+ * El índice actual contesta sobre el MODELO `.xne` —colecciones, campos, referencias— y el
14
+ * trabajo de un arreglo visual vive en la capa de ESTILOS, que no tenía índice. Esto lo cierra.
15
+ *
16
+ * ## Lo que NO se rederiva
17
+ *
18
+ * La cascada de XOne la resuelve `xone-linter`, no este módulo: `Stylesheet.lookup` está
19
+ * anotado como fiel a `FindStylesheetByClassName` (`CXoneApplication.mm:6146-6166`), con la
20
+ * sutileza de que **un fichero posterior que redirige por `extends` gana al atributo DIRECTO de
21
+ * uno anterior** —resolución intercalada por fichero, no dos pasadas globales—, y
22
+ * `selectorsFor` implementa el orden de prioridad (`prop.clase:tipo` → `prop.clase` →
23
+ * `.clase` → `prop:tipo` → `prop`) con sus dos banderas. Reescribir eso aquí sería un segundo
24
+ * sitio donde decidir lo mismo, que es justo el argumento por el que `xone_navegacion` usa la
25
+ * librería en vez de reimplementar `CrossReferenceRule`.
26
+ *
27
+ * Aquí vive lo que se ENSEÑA y con qué topes. Puro: sin disco y sin librería.
28
+ */
29
+ /** Un atributo que acaba aplicándose, y por dónde llegó. */
30
+ export interface AtributoEfectivo {
31
+ atributo: string;
32
+ valor: string;
33
+ /** El selector que lo aportó, o la marca de que viene del XML. */
34
+ de: string;
35
+ }
36
+ export interface EstiloDeProp {
37
+ coll: string;
38
+ prop: string;
39
+ tipo?: string;
40
+ /** El `class=` del prop, tal cual. Ausente si no tiene. */
41
+ clase?: string;
42
+ /** Selectores candidatos, de MÁS a MENOS prioridad. */
43
+ selectores: readonly string[];
44
+ /** Lo que la hoja aporta, ya resuelto. */
45
+ deLaHoja: readonly AtributoEfectivo[];
46
+ /** Lo que el XML del prop pone a mano. **Gana siempre** sobre la hoja. */
47
+ delXml: readonly AtributoEfectivo[];
48
+ /** Qué fichero declara cada selector que aporta algo. */
49
+ declaradoEn: readonly {
50
+ selector: string;
51
+ fichero: string;
52
+ }[];
53
+ }
54
+ /**
55
+ * Topes de lo que se enseña.
56
+ *
57
+ * Existen porque esto viaja al contexto del modelo entero y una hoja grande tiene decenas de
58
+ * atributos por selector. **Lo que no cabe se CUENTA**, como en todas partes aquí: una lista
59
+ * recortada en silencio se lee como la lista entera, y sobre eso se concluye de más.
60
+ */
61
+ export declare const LIMITES_ESTILOS: {
62
+ readonly atributos: 30;
63
+ readonly selectores: 12;
64
+ readonly declaraciones: 12;
65
+ };
66
+ /** La marca de que un valor no viene de la hoja sino del XML del propio control. */
67
+ export declare const DEL_XML = "el XML del prop (gana a la hoja)";
68
+ /**
69
+ * La respuesta, en el formato que el turno necesitaba.
70
+ *
71
+ * Las cuatro preguntas que los greps estaban haciendo a mano —qué se aplica, de qué selector,
72
+ * qué selectores compiten y en qué fichero están— en una sola llamada. El orden no es
73
+ * cosmético: primero lo que se aplica, que es lo que se preguntó; los selectores y los ficheros
74
+ * van después, porque son el CAMINO y solo hacen falta si hay que cambiar algo.
75
+ */
76
+ export declare function pintarEstiloDeProp(e: EstiloDeProp): string;
@@ -0,0 +1,218 @@
1
+ /**
2
+ * Lo que un turno le cuenta al mundo. `agent/` los emite, `core/` decide qué se enseña,
3
+ * las pieles (TUI y stdio) los pintan.
4
+ *
5
+ * Ningún evento lleva argumentos de tool. Ni truncados: `studio_edit_file` lleva el
6
+ * contenido del fichero y una tool MCP lleva el bearer. Enseñar el progreso no puede ser
7
+ * la forma de filtrar un secreto, así que el TIPO no los puede llevar.
8
+ *
9
+ * La excepción aparente es `tool.detalle`, y no es una excepción: es lo ÚNICO que
10
+ * sale de los argumentos, un campo por tool elegido a mano en la lista blanca de
11
+ * `agent/turno/resumenDeTool.ts` — `file_path`, `path` o `pattern`, nunca contenido. Una
12
+ * tool sin entrada en la lista no lleva `detalle`, exista lo que exista en sus
13
+ * argumentos.
14
+ */
15
+ import type { Artefacto } from "./artefactos.js";
16
+ import type { TareaPropuesta } from "./repartoDeEncargo.js";
17
+ export type { Artefacto };
18
+ export type DomainEvent = {
19
+ tipo: "token";
20
+ texto: string;
21
+ msgId?: string;
22
+ }
23
+ /**
24
+ * El razonamiento del modelo, cuando lo publica (los bloques `thinking` de Gemini, y el
25
+ * equivalente de los demás). Va SEPARADO de `token` a propósito: no es la respuesta, y
26
+ * mezclarlo con ella es lo que hacía `String(content)` —volcar el `repr` de la lista con
27
+ * el razonamiento dentro— y por lo que el puente empezó a filtrar por bloques.
28
+ *
29
+ * Que exista el evento no obliga a nadie a pintarlo: `Piel.razonamiento` es opcional, y
30
+ * las pieles de terminal no lo implementan — así la salida de una tubería sigue siendo
31
+ * byte-idéntica.
32
+ */
33
+ | {
34
+ tipo: "razonamiento";
35
+ texto: string;
36
+ msgId?: string;
37
+ /** Quién pensó: el orquestador o un especialista. Ausente = no consta (deepagents). */
38
+ origen?: OrigenDeLaTool;
39
+ }
40
+ /**
41
+ * El RESUMEN con el que la librería compacta la conversación al pasar el umbral de contexto
42
+ * (`agent/turno/resumenDeContexto.ts`), en trozos. Tampoco es la respuesta: salía por el
43
+ * mismo stream que ella y se pintaba —y se guardaba— como un mensaje del asistente. Lo
44
+ * distingue una ETIQUETA de la llamada, no el texto.
45
+ *
46
+ * Opcional como `razonamiento`: las pieles de terminal no lo implementan, así que ahí deja
47
+ * de imprimirse (antes salía en inglés como si fuera la respuesta) y la tubería sigue igual.
48
+ */
49
+ | {
50
+ tipo: "resumen";
51
+ texto: string;
52
+ msgId?: string;
53
+ } | {
54
+ tipo: "fase";
55
+ fase: Fase;
56
+ detalle?: string;
57
+ } | {
58
+ tipo: "tool";
59
+ nombre: string;
60
+ detalle?: string;
61
+ error?: string;
62
+ origen?: OrigenDeLaTool;
63
+ } | {
64
+ tipo: "plan";
65
+ tareas: TareaDelPlan[];
66
+ } | {
67
+ tipo: "tarea";
68
+ id: string;
69
+ indice: number;
70
+ total: number;
71
+ estado: EstadoTarea;
72
+ }
73
+ /**
74
+ * El veredicto del simulador sobre lo que ESTE turno escribió.
75
+ *
76
+ * `verde`, `errores` y `avisos` son de los ficheros que el turno tocó. `hallazgos` los
77
+ * lista —código, fichero RELATIVO al proyecto, línea y mensaje; nunca contenido—, porque
78
+ * un «2 errores» sin decir dónde no lo puede arreglar nadie, ni el humano ni el paso de
79
+ * reparación que viene detrás. `preexistentes` cuenta los que el simulador vio en
80
+ * ficheros que el turno NO tocó: se dicen aparte porque atribuírselos al agente sería
81
+ * falso, y callarlos sería fingir que el proyecto está limpio.
82
+ */
83
+ | {
84
+ tipo: "verificacion";
85
+ verde: boolean;
86
+ errores: number;
87
+ avisos: number;
88
+ hallazgos?: HallazgoDelTurno[];
89
+ preexistentes?: number;
90
+ } | {
91
+ tipo: "reparacion";
92
+ intento: number;
93
+ tope: number;
94
+ }
95
+ /**
96
+ * El agente ha dejado un ARTEFACTO: un diagrama, un panel, una captura. No es un fichero
97
+ * del proyecto —vive en la carpeta de la sesión, ver `core/artefactos.ts`— y por eso se
98
+ * escribe SIN aprobación humana. Que se anuncie es la contrapartida: una escritura que
99
+ * nadie aprueba tiene que decirse, o es una escritura muda.
100
+ *
101
+ * Lleva la ruta VIRTUAL (`/artefactos/…`) y nunca la del disco ni el contenido: por aquí
102
+ * pasa lo que acaba en el transcript y en el cable.
103
+ */
104
+ | {
105
+ tipo: "artefacto";
106
+ artefacto: Artefacto;
107
+ }
108
+ /**
109
+ * El agente le PREGUNTA a la persona y el turno se para ahí (`ask_user_question` del motor
110
+ * TrueForge). La pregunta ya viaja como texto —con sus opciones numeradas— por `token`, que
111
+ * es lo que ven stdio y la TUI; esto lleva lo MISMO como DATO, para la piel que sabe pintar
112
+ * un botón por opción. Datos y no texto por la regla de `DecisionDeConsola`: deducir las
113
+ * opciones de «1. …» sería leer la sintaxis que la propia piel acaba de escribir. Solo se
114
+ * emite con opciones: sin ellas no hay botón que pintar y el texto basta.
115
+ */
116
+ | {
117
+ tipo: "consulta";
118
+ pregunta: string;
119
+ opciones: string[];
120
+ }
121
+ /**
122
+ * Una pregunta del agente que el HARNESS contestó solo porque la sesión está en modo autónomo
123
+ * (`sesionTrueforge.ts`, `opcionRecomendada`): `elegida` es la opción `(Recommended)`, y ausente es que no había
124
+ * ninguna y lo decide el agente. Es un evento propio y no un `aviso` porque es una DECISIÓN que la persona tiene que
125
+ * ver (IXCODE-47): como aviso caía plegada en «Verificaciones» y quien la había pedido contestaba después en el chat
126
+ * sin saber que el agente ya había seguido. No es una `consulta` con una marca: todo lo que lee una `consulta` la toma
127
+ * por pendiente —la tarjeta para contestar, el análisis de soporte, la web móvil— y esta no espera a nadie. A
128
+ * diferencia de `consulta`, no ha salido antes por `token`: quien no la pinte recibe la línea de siempre.
129
+ */
130
+ | {
131
+ tipo: "consulta-autonoma";
132
+ pregunta: string;
133
+ opciones: string[];
134
+ elegida?: string;
135
+ }
136
+ /**
137
+ * El agente PROPONE repartir un encargo grande en tareas de fondo encadenadas (`proponer_tareas`,
138
+ * `core/repartoDeEncargo.ts`). No crea nada: la persona revisa cada tarea y decide si se encolan. A diferencia de
139
+ * `consulta`, esto NO ha salido antes por `token`, así que una piel que no lo pinte recibe una línea de texto.
140
+ */
141
+ | {
142
+ tipo: "propuesta-de-tareas";
143
+ motivo: string;
144
+ tareas: TareaPropuesta[];
145
+ } | {
146
+ tipo: "bloqueado";
147
+ motivo: MotivoBloqueo;
148
+ explicacion: string;
149
+ } | {
150
+ tipo: "pausa";
151
+ pendientes: PendienteDeAprobacion[];
152
+ } | {
153
+ tipo: "aviso";
154
+ texto: string;
155
+ severidad: "info" | "aviso" | "grave";
156
+ } | {
157
+ tipo: "fin";
158
+ ms: number;
159
+ };
160
+ /**
161
+ * QUIÉN pidió una tool: el orquestador o un especialista, y cuál si se sabe.
162
+ *
163
+ * El `rol` es EXACTO en los dos motores —un especialista siempre llega por la delegación, y eso
164
+ * se ve en el namespace de deepagents y en el hilo de TrueForge—; lo que puede faltar es el
165
+ * NOMBRE. deepagents no lo da (sus segmentos son ids opacos, ver `puente.ts#origenDeTool`) y
166
+ * TrueForge sí (`quienEs`, hilo → especialista). **Ausente es «no consta»**, y por eso no hay un
167
+ * booleano de exactitud al lado: permitiría la combinación imposible de un nombre «inexacto».
168
+ *
169
+ * El nombre es el de un especialista CARGADO, nunca el texto que el modelo puso al delegar ni un
170
+ * id de hilo: un nombre inventado por el modelo o un id opaco en el cable serían un dato con
171
+ * forma de dato que no lo es. Y el orquestador no lleva nombre porque solo hay uno.
172
+ *
173
+ * Ausente entero —el evento sin `origen`— es lo de antes: el doble guionizado y las sesiones
174
+ * guardadas antes de que existiera.
175
+ */
176
+ export type OrigenDeLaTool = {
177
+ rol: "orquestador";
178
+ } | {
179
+ rol: "especialista";
180
+ nombre?: string;
181
+ };
182
+ /** Las fases del lazo. Es lo que llena los 100-300 s en que el agente no habla. */
183
+ /** Un hallazgo del simulador, ya relativo al proyecto. Sin contenido de ningún fichero. */
184
+ export interface HallazgoDelTurno {
185
+ code: string;
186
+ severidad: "error" | "warning" | "info";
187
+ mensaje: string;
188
+ fichero?: string;
189
+ linea?: number;
190
+ }
191
+ export type Fase = "entendiendo" | "planificando" | "esperando-aprobacion" | "ejecutando" | "verificando" | "juzgando" | "subiendo" | "respondiendo";
192
+ export type EstadoTarea = "pendiente" | "en-curso" | "hecha" | "fallida";
193
+ export interface TareaDelPlan {
194
+ id: string;
195
+ descripcion: string;
196
+ /** Criterios de aceptación. VACÍO es honesto; un texto de relleno haría juzgar un adorno. */
197
+ aceptacion: string[];
198
+ }
199
+ /**
200
+ * Los tres motivos por los que el lazo para sin terminar, y son DISTINTOS a propósito.
201
+ *
202
+ * `no-progreso` no es «se acabaron los intentos»: es la misma huella de error dos veces,
203
+ * y se corta ANTES de agotar el presupuesto porque seguir no va a cambiar nada.
204
+ */
205
+ export type MotivoBloqueo = "no-progreso" | "tope-reparaciones" | "tope-replanificaciones";
206
+ export interface PendienteDeAprobacion {
207
+ id: string;
208
+ /** Qué especialista lo pide. Viaja aquí porque el interrupt NO dice de dónde viene. */
209
+ origen: string;
210
+ descripcion: string;
211
+ decisionesPermitidas: string[];
212
+ /**
213
+ * Escribe FUERA de la máquina: una tool de un conector MCP que no se declara de lectura (crear
214
+ * o generar en la cuenta de Stitch). No se aplica sola ni en modo autónomo ni en una tarea de
215
+ * fondo —el mismo trato que `/sync subir`—: sin una persona que diga que sí, es un no.
216
+ */
217
+ remota?: true;
218
+ }
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Exportar un documento del proyecto a PDF: las reglas PURAS.
3
+ *
4
+ * **Por qué el harness y no el agente.** Producir un PDF es lo que las skills `pdf`/`docx`
5
+ * de Claude Code hacen ejecutando scripts, y a un motor externo no se le concede shell
6
+ * —`Bash` está denegada, y abrirla dejaría a ese hijo reescribir el proyecto sin diff ni
7
+ * aprobación—. Medido además sobre la máquina real: esas skills asumen el sandbox donde sus
8
+ * dependencias vienen puestas (`reportlab`, `pypdf`, `docx` de npm, `pandoc`), y ahí no
9
+ * estaba ninguna, así que conceder la shell no habría dado el PDF. Lo que sí hay en cualquier
10
+ * máquina que use la consola web es un navegador, y un navegador imprime — así que la
11
+ * conversión la hace el harness con un comando FIJO, y la shell del hijo sigue cerrada.
12
+ *
13
+ * Aquí solo está lo que se puede decidir sin tocar disco. Lanzar el navegador es de
14
+ * `agent/exportarPdf.ts`.
15
+ */
16
+ /**
17
+ * Lo que se sabe convertir. Lista CERRADA: lo que no está no se intenta.
18
+ *
19
+ * `.md` porque es lo que el agente escribe cuando se le pide documentación, y `.html` porque
20
+ * es lo que produce la skill de artefactos. Un `.xne` o un `.js` no entran: imprimir código
21
+ * fuente a PDF no es una necesidad que nadie haya tenido, y ofrecerlo sería un botón que
22
+ * nadie pulsa sobre cada fichero del árbol.
23
+ */
24
+ export declare const EXTENSIONES_EXPORTABLES: readonly [".md", ".html", ".htm"];
25
+ /** ¿Hace falta convertir Markdown antes, o el fichero ya es HTML? */
26
+ export declare function esMarkdown(ruta: string): boolean;
27
+ /**
28
+ * Por qué no se puede exportar esa ruta, o AUSENTE si vale.
29
+ *
30
+ * No comprueba que exista ni que se pueda leer: de eso ya hay una barrera
31
+ * (`motivoDeRutaInaceptable` y el `realpath` de `leerFicheroDeProyecto`), y duplicarla aquí
32
+ * sería un segundo sitio donde decidir sobre una ruta.
33
+ */
34
+ export declare function motivoDeExportacionInaceptable(ruta: string): string | undefined;
35
+ /**
36
+ * Dónde queda el PDF: al lado del original y con su mismo nombre.
37
+ *
38
+ * **El destino lo DERIVA el código, nunca se recibe.** Es lo que impide que quien pide la
39
+ * exportación elija dónde escribir: con un destino por parámetro, esta función sería una
40
+ * forma de escribir cualquier fichero del proyecto sin pasar por ninguna aprobación.
41
+ */
42
+ export declare function rutaDePdf(ruta: string): string;
43
+ /**
44
+ * El documento listo para imprimir: el cuerpo HTML dentro de una hoja de estilos de PÁGINA.
45
+ *
46
+ * Los estilos no son decoración, son lo que hace legible un PDF de doce páginas y se
47
+ * comprobaron imprimiendo uno de verdad: `@page` con márgenes, `break-inside: avoid` en
48
+ * tablas y bloques de código —sin eso una tabla se parte por la mitad entre dos hojas— y
49
+ * `break-after: avoid` en los encabezados, para que un título no se quede solo al pie.
50
+ *
51
+ * **Y una imagen se limita también en ALTO**, no solo en ancho. Medido con una captura de móvil
52
+ * (1080×2400): con solo `max-width: 100%` medía unos 40 cm a todo el ancho de un A4, más que la
53
+ * página, y el PDF salía con el título solo en la primera hoja y la captura partida en las dos
54
+ * siguientes. Con `max-height` se reduce entera, sin deformarse, y cabe en una página.
55
+ *
56
+ * El título va ESCAPADO: sale de un nombre de fichero del proyecto, y un `<` ahí dentro
57
+ * rompería la cabecera del documento.
58
+ */
59
+ export declare function documentoImprimible(cuerpo: string, titulo: string): string;
60
+ /**
61
+ * La política que impide que imprimir ejecute nada.
62
+ *
63
+ * **Y es una CSP y no un flag del navegador, porque los flags NO lo hacen.** Medido contra
64
+ * el Chrome instalado con un documento que reescribe su propio texto desde un `<script>`:
65
+ * con `--disable-javascript`, con `--blink-settings=scriptEnabled=false` y sin nada, el
66
+ * script se ejecutó en los tres casos; y encima el segundo hace que `--print-to-pdf` no
67
+ * escriba el fichero, en silencio y con código de salida 0. Con esta CSP el script no corre.
68
+ *
69
+ * `default-src 'none'` corta además las peticiones de RED: un documento del proyecto podría
70
+ * llevar un `<img src="https://…">` que se lleve fuera el hecho de que se está imprimiendo.
71
+ * Lo que se deja es lo que un PDF necesita: imágenes locales o embebidas, estilos en línea
72
+ * —los nuestros— y tipografías locales.
73
+ */
74
+ export declare const POLITICA_SIN_SCRIPTS: string;
75
+ /**
76
+ * El mismo blindaje para un documento que YA es HTML y no pasa por nuestra plantilla.
77
+ *
78
+ * Se inserta lo antes posible: dentro de su `<head>` si lo tiene, dentro de su `<html>` si
79
+ * no, y al principio si no hay ninguno de los dos. **Inyectarla siempre TENSA y nunca
80
+ * afloja**: cuando un documento trae su propia CSP, el navegador exige que TODAS las
81
+ * políticas permitan cada carga, así que añadir la nuestra no puede ampliar lo que el
82
+ * documento ya se permitía.
83
+ *
84
+ * **Límite declarado**: esto es una transformación de TEXTO, no un parser. Un documento
85
+ * con un `<head` dentro de un comentario o de una cadena puede recibir la meta en un sitio
86
+ * raro; el peor caso es que no aplique, que es exactamente donde estábamos antes.
87
+ */
88
+ export declare function conPoliticaSinScripts(html: string): string;
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Qué se guarda cuando un turno revienta, y por qué justo eso.
3
+ *
4
+ * ## De dónde sale la lista
5
+ *
6
+ * De una sesión entera diagnosticando fallos reales a partir de lo que el usuario podía
7
+ * pegar. Cada cosa que hay aquí es una que hizo falta y no estaba:
8
+ *
9
+ * - **La CADENA de causas.** El error que llega arriba suele ser un envoltorio:
10
+ * `MiddlewareError` guarda el de verdad en `cause`, y lo único que se veía era su
11
+ * mensaje. Saber que el envoltorio lo puso `wrapToolCall` —o sea, que reventó dentro de
12
+ * un subagente— fue lo que cerró el caso de DeepSeek, y hubo que deducirlo del prefijo
13
+ * del nombre.
14
+ * - **El MODELO de cada papel.** Tres de los fallos del día eran de un proveedor concreto
15
+ * y el informe no lo decía; se preguntó a mano cada vez.
16
+ * - **Los últimos PASOS.** Un `400` no dice nada; «tras delegar en dos subagentes» sí.
17
+ * Solo los NOMBRES, nunca los argumentos — la misma regla que `core/events.ts`.
18
+ *
19
+ * ## Lo que NO se guarda, y es deliberado
20
+ *
21
+ * Ni el contenido de un fichero, ni los argumentos de una tool, ni los mensajes mandados
22
+ * al modelo. Un registro de fallos que copie el prompt es una copia del proyecto en el
23
+ * disco, y además crece sin control. Lo que se guarda cabe en una pantalla y se puede
24
+ * pegar entero en una conversación, que es exactamente para lo que existe.
25
+ *
26
+ * **Y esto sí puede llevar rutas de la máquina**, a diferencia de todo lo que viaja por el
27
+ * cable (`sinRutas`): el fichero vive en el proyecto de quien lo genera y nunca cruza un
28
+ * túnel. La regla de las rutas es del transporte, no del disco.
29
+ */
30
+ /** Un eslabón de la cadena: el envoltorio y lo que envolvía. */
31
+ export interface CausaDeFallo {
32
+ nombre: string;
33
+ mensaje: string;
34
+ }
35
+ export interface RegistroDeFallo {
36
+ v: 1;
37
+ at: string;
38
+ /** El id de la conversación (el `thread_id`), cuando el fallo ocurrió dentro de una. */
39
+ chat?: string;
40
+ /** El encargo, recortado: sirve para reconocer el turno, no para reproducirlo. */
41
+ peticion?: string;
42
+ /** Del envoltorio hacia dentro. El PRIMERO es el que llegó arriba. */
43
+ causas: CausaDeFallo[];
44
+ /** Papel → «proveedor/modelo». Sin él, «falla con DeepSeek» hay que preguntarlo. */
45
+ modelos?: Record<string, string>;
46
+ /** Los últimos pasos, por NOMBRE. Nunca argumentos. */
47
+ pasos?: string[];
48
+ }
49
+ /** Lo que cabe de la petición: suficiente para reconocerla de un vistazo. */
50
+ export declare const TOPE_DE_PETICION = 200;
51
+ /** Cuántos eslabones se siguen. Una cadena más larga que esto es un ciclo o un bug ajeno. */
52
+ export declare const TOPE_DE_CAUSAS = 8;
53
+ /** Cuántos pasos se recuerdan: los que caben en una pantalla. */
54
+ export declare const TOPE_DE_PASOS = 20;
55
+ /**
56
+ * Desenvuelve un error hasta el fondo, siguiendo `cause`.
57
+ *
58
+ * **Con tope y con guarda de ciclo.** Una `cause` que apunte a un ancestro es raro pero
59
+ * posible —y un bucle aquí se come el proceso justo cuando ya algo ha ido mal—, así que se
60
+ * recuerdan los objetos vistos. Lo que no sea un `Error` se describe por lo que es: un
61
+ * `throw "texto"` también llega aquí, y perderlo por no ser una instancia sería tirar la
62
+ * única pista.
63
+ */
64
+ export declare function cadenaDeCausas(error: unknown): CausaDeFallo[];
65
+ /** El registro entero, listo para una línea de JSONL. Puro: el reloj entra. */
66
+ export declare function registroDeFallo(fallo: {
67
+ error: unknown;
68
+ peticion?: string;
69
+ modelos?: Record<string, string>;
70
+ pasos?: readonly string[];
71
+ }, ahora?: Date): RegistroDeFallo;
72
+ /**
73
+ * El registro en texto, para pegarlo en una conversación.
74
+ *
75
+ * Existe porque el JSONL es para las máquinas y lo que de verdad pasa es que alguien copia
76
+ * el fallo y lo pega. Una línea de JSON de 600 caracteres se pega igual pero no se LEE, y
77
+ * quien la recibe pierde el tiempo desenrollándola en vez de mirando el error.
78
+ */
79
+ export declare function falloLegible(registro: RegistroDeFallo): string;
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Fondos SVG para frames y botones: degradados, sombras y resplandores (IXCODE-18).
3
+ *
4
+ * XOne no tiene degradados ni desenfoques propios, y el `imgbk` acepta SVG. Es la parte PURA:
5
+ * una plantilla por tipo, sin red ni puerto. Lo que vuelve es texto que `write_file` escribe.
6
+ *
7
+ * ## Por qué un generador y no un SVG tecleado por el modelo
8
+ *
9
+ * Un degradado son ids, `url(#…)`, offsets y coordenadas, y un error ahí no da error: XOne
10
+ * ignora en silencio lo que no entiende y el fondo simplemente no se ve. Una plantilla no se
11
+ * equivoca en eso, y valida los colores antes de escribir nada.
12
+ *
13
+ * ## Lo que se midió en un emulador Android (`docs/DECISIONES.md`, «Fondos SVG en XOne»)
14
+ *
15
+ * - `linearGradient`, `radialGradient` y `stop-opacity` SE PINTAN. Los FILTROS (`feGaussianBlur`,
16
+ * `feDropShadow`) SE IGNORAN: por eso aquí no hay ni un `<filter>`. La sombra son rectángulos
17
+ * apilados de opacidad baja, y el resplandor un degradado que acaba transparente.
18
+ * - `border-corner-radius` NO recorta el `imgbk`: **la esquina se DIBUJA en el SVG**.
19
+ * - Con `preserveAspectRatio="none"` y una proporción distinta a la del control, la esquina sale
20
+ * achatada; con el `viewBox` de la MISMA proporción sale limpia. Por eso se pide el ancho y el
21
+ * alto del control, y el `viewBox` los lleva.
22
+ *
23
+ * Sin `preserveAspectRatio`, XOne ya estira el SVG hasta llenar el control (medido: uno 1:1 en un
24
+ * frame ancho se deformó a elipse, sin bandas). Se escribe `none` igualmente: es lo que se mide
25
+ * hoy y no depende de que otro renderizador use `meet` y deje bandas vacías.
26
+ *
27
+ * ## Todo va RELATIVO al alto
28
+ *
29
+ * El `viewBox` mide 100 de alto y `ancho/alto·100` de ancho, y el radio, el margen y la sombra
30
+ * están en esa escala. Así solo importa la PROPORCIÓN del control, no sus píxeles: el mismo SVG
31
+ * vale en cualquier densidad mientras la relación ancho/alto se mantenga.
32
+ */
33
+ /**
34
+ * ## Los colores llegan COMO EN XONE, y se convierten
35
+ *
36
+ * XOne escribe un color `#RRGGBB` o `#AARRGGBB` —el alfa PRIMERO, como Android (la documentación:
37
+ * `fillcolor: "#7F00FF00"`, «ARGB: semi-transparente»)—. SVG y CSS de HTML lo esperan al final,
38
+ * `#RRGGBBAA`. Copiar un `#7F00FF00` tal cual a un SVG lo leería como rojo 7F, azul FF y alfa 0:
39
+ * transparente y del color equivocado, sin un solo error. Por eso la tool acepta la forma de XOne
40
+ * y aquí se separa en `#RRGGBB` + opacidad (`stop-opacity`/`fill-opacity`), que es lo que SVG
41
+ * entiende en cualquier renderizador.
42
+ */
43
+ export declare const NOMBRE_GENERAR_FONDO = "generar_fondo_svg";
44
+ /**
45
+ * Las medidas de un control se declaran en XOne mezclando unidades (`width="90%" height="60p"`),
46
+ * y la tool las acepta así. **Es una ESTIMACIÓN**, sobre el aparato donde se midió: un ancho de
47
+ * pantalla de 1080 px y 1,144 px por `p` (`90%`×`90p` salieron 972×103 en el árbol de controles).
48
+ * En otro dispositivo el `%` sigue a la pantalla y la `p` a la densidad, así que la proporción
49
+ * cambia; la respuesta de la tool lo dice.
50
+ */
51
+ export declare const ANCHO_DE_PANTALLA_DE_REFERENCIA = 1080;
52
+ export declare const PIXELES_POR_P = 1.144;
53
+ /** De `90%`, `60p`, `120px` o `120` a píxeles de referencia. `%` solo en el ancho. */
54
+ export declare function medidaEnPixeles(valor: string | number, eje: "ancho" | "alto"): {
55
+ px: number;
56
+ } | {
57
+ motivo: string;
58
+ };
59
+ export declare const TIPOS_DE_FONDO: readonly ["degradado-lineal", "degradado-radial", "sombra", "glow"];
60
+ export type TipoDeFondo = (typeof TIPOS_DE_FONDO)[number];
61
+ /** Proporción ancho/alto aceptada: fuera de ella la tarjeta de la sombra no cabe o no es un botón. */
62
+ export declare const PROPORCION_MINIMA = 0.5;
63
+ export declare const PROPORCION_MAXIMA = 40;
64
+ declare const INTENSIDAD_DE_SOMBRA: {
65
+ readonly suave: 0.03;
66
+ readonly media: 0.05;
67
+ readonly fuerte: 0.08;
68
+ };
69
+ export type IntensidadDeSombra = keyof typeof INTENSIDAD_DE_SOMBRA;
70
+ export declare const INTENSIDADES: IntensidadDeSombra[];
71
+ /** Un color ya en la forma de SVG: el `#RRGGBB` y su opacidad aparte (1 = opaco). */
72
+ export interface ColorSvg {
73
+ hex: string;
74
+ opacidad: number;
75
+ }
76
+ /** Por qué no vale como color de XOne, o `undefined`. Vale `#RGB`, `#RRGGBB` y `#AARRGGBB`. */
77
+ export declare function motivoDeColorDeXoneInaceptable(color: string): string | undefined;
78
+ /**
79
+ * De un color de XOne al de SVG. **`#AARRGGBB` de XOne → `#RRGGBB` + opacidad**: el alfa es el
80
+ * PRIMER byte, no el último como en el `#RRGGBBAA` de HTML.
81
+ */
82
+ export declare function colorDeXoneASvg(color: string): ColorSvg;
83
+ export interface PeticionDeFondo {
84
+ tipo: TipoDeFondo;
85
+ /** Ancho y alto del CONTROL, en cualquier unidad: solo cuenta la proporción. */
86
+ ancho: number;
87
+ alto: number;
88
+ /** Colores de XOne (`#RRGGBB` o `#AARRGGBB`). De 2 a 4 en los degradados; 1 en `sombra` y `glow`. */
89
+ colores: string[];
90
+ /** 0 = de izquierda a derecha, 90 = de arriba abajo. Solo `degradado-lineal`. Por omisión 90. */
91
+ angulo?: number;
92
+ /** Esquina, como porcentaje del alto (0 a 50; 50 es una píldora). Por omisión 25. */
93
+ radio?: number;
94
+ /** Solo `sombra`. */
95
+ intensidad?: IntensidadDeSombra;
96
+ /** Solo `glow`: el color de detrás, también de XOne. Ausente = transparente. */
97
+ fondo?: string;
98
+ }
99
+ export interface FondoGenerado {
100
+ svg: string;
101
+ /** El ancho del `viewBox` (el alto es 100), para decirlo en la respuesta. */
102
+ anchoDelViewBox: number;
103
+ }
104
+ /** Un nombre de fichero sin ruta ni punto: el fichero será `bg_<nombre>.svg`. */
105
+ export declare function motivoDeNombreDeFondoInaceptable(nombre: string): string | undefined;
106
+ export declare function nombreDeFicheroDeFondo(nombre: string): string;
107
+ export declare function rutaDeFondo(nombre: string): string;
108
+ /** Por qué la petición no vale, o `undefined`. Las cosas que la plantilla no sabría dibujar. */
109
+ export declare function motivoDePeticionInaceptable(p: PeticionDeFondo): string | undefined;
110
+ /**
111
+ * El SVG de la petición. **Lanza si no es válida**: quien lo llama comprueba antes con
112
+ * `motivoDePeticionInaceptable` y devuelve el motivo como texto (la tool no lanza).
113
+ */
114
+ export declare function generarFondo(p: PeticionDeFondo): FondoGenerado;
115
+ export {};
@@ -0,0 +1,45 @@
1
+ /**
2
+ * La FOTO del modelo XOne de un proyecto para la pestaña Colecciones: lo mismo que contesta
3
+ * `xone_navegacion`, entero y de una vez, para que una persona lo mire.
4
+ *
5
+ * **Sale del MISMO índice que la tool** (`core/navegacion.ts#construirIndice`) y no de una
6
+ * segunda lectura del modelo: «qué apunta a qué» se decide en un sitio, y el día que la tool y
7
+ * la pestaña contestaran distinto sobre el mismo proyecto no habría forma de saber cuál miente.
8
+ *
9
+ * Todo lo que lleva son rutas VIRTUALES y nombres del proyecto —lo que ya ve el agente—, nunca
10
+ * una ruta de la máquina: viaja por el cable. Y, como el índice, **no dice qué colecciones son
11
+ * huérfanas**: se midió y el 50 % eran falsos positivos (ver `core/navegacion.ts`).
12
+ */
13
+ import { type ModeloDeNavegacion, type Referencia } from "./navegacion.js";
14
+ export interface ColeccionDeLaFoto {
15
+ nombre: string;
16
+ /** Ruta VIRTUAL del `.xne`. */
17
+ fichero: string;
18
+ campos: {
19
+ nombre: string;
20
+ tipo?: string;
21
+ }[];
22
+ eventos: string[];
23
+ nodos: string[];
24
+ conexiones: string[];
25
+ /** Lo que ELLA apunta: sus atributos y los scripts que viven dentro de ella. */
26
+ apuntaA: Referencia[];
27
+ /** Lo que apunta HACIA ella, venga de donde venga. */
28
+ leApuntan: Referencia[];
29
+ }
30
+ export interface FotoDeColecciones {
31
+ colecciones: ColeccionDeLaFoto[];
32
+ /** Cuántas colecciones tiene el proyecto: más que `colecciones.length` = se recortó. */
33
+ total: number;
34
+ /** Por dónde arranca la app, según `app.xml`. Vacío = no consta, que no es «no hay». */
35
+ entrada: string[];
36
+ login: string[];
37
+ /** Referencias a una colección que no existe. */
38
+ rotas: Referencia[];
39
+ }
40
+ /**
41
+ * Cuántas colecciones caben en una foto. Un proyecto real anda por las decenas; el tope existe
42
+ * para que uno raro no mande un mensaje sin fondo, y lo que queda fuera se CUENTA (`total`).
43
+ */
44
+ export declare const TOPE_DE_COLECCIONES_EN_LA_FOTO = 400;
45
+ export declare function fotoDeColecciones(modelo: ModeloDeNavegacion, tope?: number): FotoDeColecciones;