xonecode 0.38.41 → 0.39.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/apps/web/dist/assets/{EditorDeFichero-B5qtmfKO.js → EditorDeFichero-BeWDctgN.js} +1 -1
  2. package/apps/web/dist/assets/{index-C6XoIOQg.js → index-B-6cDRAV.js} +20 -20
  3. package/apps/web/dist/assets/{php-I6JfbNBQ.js → php-D3QdOnb8.js} +1 -1
  4. package/apps/web/dist/assets/{ruby-DlqXDLOX.js → ruby-DDAcW-Z2.js} +1 -1
  5. package/apps/web/dist/index.html +1 -1
  6. package/dist/agent/cloudstudio/cloudstudioClient.d.ts +29 -0
  7. package/dist/agent/cloudstudio/cloudstudioMcp.d.ts +414 -0
  8. package/dist/agent/cloudstudio/conexionDeServidor.d.ts +37 -0
  9. package/dist/agent/cloudstudio/conexionDeServidor.js +63 -0
  10. package/dist/agent/cloudstudio/conexionDeServidor.js.map +1 -0
  11. package/dist/agent/cloudstudio/crearRama.d.ts +15 -0
  12. package/dist/agent/cloudstudio/crearRama.js +16 -0
  13. package/dist/agent/cloudstudio/crearRama.js.map +1 -0
  14. package/dist/agent/cloudstudio/descarga.d.ts +44 -0
  15. package/dist/agent/cloudstudio/manifiesto.d.ts +25 -0
  16. package/dist/agent/cloudstudio/ramaActiva.d.ts +24 -0
  17. package/dist/agent/cloudstudio/subida.d.ts +61 -0
  18. package/dist/agent/cloudstudio/subida.js +7 -1
  19. package/dist/agent/cloudstudio/subida.js.map +1 -1
  20. package/dist/agent/cloudstudio/validarTrasDescarga.d.ts +13 -0
  21. package/dist/agent/cloudstudio/zip.d.ts +13 -0
  22. package/dist/agent/conectores/conectoresEnDisco.d.ts +47 -0
  23. package/dist/agent/conectores/gestorJira.d.ts +50 -0
  24. package/dist/agent/conectores/gestorNotion.d.ts +45 -0
  25. package/dist/agent/conectores/proveedorDeConector.d.ts +43 -0
  26. package/dist/agent/conectores/servicioDeConectores.d.ts +112 -0
  27. package/dist/agent/config/authEnDisco.d.ts +43 -0
  28. package/dist/agent/config/catalogoModelos.d.ts +79 -0
  29. package/dist/agent/config/configEnDisco.d.ts +235 -0
  30. package/dist/agent/config/crearProyecto.d.ts +20 -0
  31. package/dist/agent/config/diagnosticoDeNodeEnMaquina.d.ts +44 -0
  32. package/dist/agent/config/ecoDeRazonamiento.d.ts +104 -0
  33. package/dist/agent/config/entorno.d.ts +83 -0
  34. package/dist/agent/config/fuentesEnRed.d.ts +12 -0
  35. package/dist/agent/config/gemini.d.ts +5 -0
  36. package/dist/agent/config/iconosEnRed.d.ts +10 -0
  37. package/dist/agent/config/identidadEnDisco.d.ts +27 -0
  38. package/dist/agent/config/modelos.d.ts +77 -0
  39. package/dist/agent/config/modelosDeMotor.d.ts +52 -0
  40. package/dist/agent/config/mudanzaEnDisco.d.ts +99 -0
  41. package/dist/agent/config/persona.d.ts +1 -0
  42. package/dist/agent/config/selectorEnMaquina.d.ts +35 -0
  43. package/dist/agent/config/settingsEnDisco.d.ts +206 -0
  44. package/dist/agent/config/versionEnDisco.d.ts +17 -0
  45. package/dist/agent/dispositivos/arranqueDeEmulador.d.ts +60 -0
  46. package/dist/agent/dispositivos/cajasDeMaqueta.d.ts +61 -0
  47. package/dist/agent/dispositivos/decodificarImagen.d.ts +21 -0
  48. package/dist/agent/dispositivos/descargaDeHerramientas.d.ts +44 -0
  49. package/dist/agent/dispositivos/dispositivosEnMaquina.d.ts +161 -0
  50. package/dist/agent/dispositivos/geometriaEnDisco.d.ts +17 -0
  51. package/dist/agent/dispositivos/hotswap.d.ts +194 -0
  52. package/dist/agent/dispositivos/instalacionEnMaquina.d.ts +156 -0
  53. package/dist/agent/dispositivos/juezVisual.d.ts +144 -0
  54. package/dist/agent/dispositivos/lanzamientoEnMaquina.d.ts +197 -0
  55. package/dist/agent/dispositivos/paqueteDelProyecto.d.ts +28 -0
  56. package/dist/agent/dispositivos/procesosEnMaquina.d.ts +154 -0
  57. package/dist/agent/dispositivos/recargaEnAparato.d.ts +30 -0
  58. package/dist/agent/dispositivos/sensorDeArranque.d.ts +42 -0
  59. package/dist/agent/exportarPdf.d.ts +72 -0
  60. package/dist/agent/grafo/aprendido.d.ts +28 -0
  61. package/dist/agent/grafo/arbolDeProyecto.d.ts +205 -0
  62. package/dist/agent/grafo/artefactosEnDisco.d.ts +35 -0
  63. package/dist/agent/grafo/atributosXone.d.ts +31 -0
  64. package/dist/agent/grafo/buscarIcono.d.ts +32 -0
  65. package/dist/agent/grafo/busquedaRegex.d.ts +56 -0
  66. package/dist/agent/grafo/codificacionDelProyecto.d.ts +7 -0
  67. package/dist/agent/grafo/compararCapturas.d.ts +22 -0
  68. package/dist/agent/grafo/copiarArtefacto.d.ts +64 -0
  69. package/dist/agent/grafo/criticaVisual.d.ts +60 -0
  70. package/dist/agent/grafo/describirImagen.d.ts +79 -0
  71. package/dist/agent/grafo/diferenciaDeCapturas.d.ts +33 -0
  72. package/dist/agent/grafo/ejecucionCancelable.d.ts +45 -0
  73. package/dist/agent/grafo/escriturasEnSerie.d.ts +31 -0
  74. package/dist/agent/grafo/excluirTools.d.ts +37 -0
  75. package/dist/agent/grafo/fuentesDeGoogle.d.ts +37 -0
  76. package/dist/agent/grafo/generarFondoSvg.d.ts +52 -0
  77. package/dist/agent/grafo/incorporarAdjunto.d.ts +98 -0
  78. package/dist/agent/grafo/lectorDeReferencias.d.ts +28 -0
  79. package/dist/agent/grafo/marcarCriteriosDelPlan.d.ts +47 -0
  80. package/dist/agent/grafo/memoriaDeProyecto.d.ts +15 -0
  81. package/dist/agent/grafo/navegacionXone.d.ts +60 -0
  82. package/dist/agent/grafo/opcionesDeFicheros.d.ts +23 -0
  83. package/dist/agent/grafo/perfiles.d.ts +225 -0
  84. package/dist/agent/grafo/proyecto.d.ts +450 -0
  85. package/dist/agent/grafo/skills.d.ts +181 -0
  86. package/dist/agent/grafo/traerDeLaMaquina.d.ts +60 -0
  87. package/dist/agent/grafo/unirSecciones.d.ts +20 -0
  88. package/dist/agent/grafo/validacionXone.d.ts +35 -0
  89. package/dist/agent/grafo/validarFicheroXone.d.ts +33 -0
  90. package/dist/agent/grafo/xoneAgent.d.ts +166 -0
  91. package/dist/agent/motores/motoresLocales.d.ts +87 -0
  92. package/dist/agent/motores/trueforge/capacidades.d.ts +183 -0
  93. package/dist/agent/motores/trueforge/convertirAP.d.ts +38 -0
  94. package/dist/agent/motores/trueforge/detencion.d.ts +70 -0
  95. package/dist/agent/motores/trueforge/esperas.d.ts +38 -0
  96. package/dist/agent/motores/trueforge/eventosTrueforge.d.ts +56 -0
  97. package/dist/agent/motores/trueforge/informesDeHijos.d.ts +48 -0
  98. package/dist/agent/motores/trueforge/medidaAutomatica.d.ts +37 -0
  99. package/dist/agent/motores/trueforge/medidaAutomatica.js +4 -2
  100. package/dist/agent/motores/trueforge/medidaAutomatica.js.map +1 -1
  101. package/dist/agent/motores/trueforge/memoriaDeEspecialistas.d.ts +60 -0
  102. package/dist/agent/motores/trueforge/memoriaTrueforge.d.ts +131 -0
  103. package/dist/agent/motores/trueforge/metricasTrueforge.d.ts +45 -0
  104. package/dist/agent/motores/trueforge/modeloExterno.d.ts +9 -0
  105. package/dist/agent/motores/trueforge/modeloLangchain.d.ts +69 -0
  106. package/dist/agent/motores/trueforge/notas.d.ts +48 -0
  107. package/dist/agent/motores/trueforge/proponerTareas.d.ts +30 -0
  108. package/dist/agent/motores/trueforge/recortes.d.ts +47 -0
  109. package/dist/agent/motores/trueforge/resumenSeguro.d.ts +33 -0
  110. package/dist/agent/motores/trueforge/sesionTrueforge.d.ts +273 -0
  111. package/dist/agent/motores/trueforge/sesionTrueforge.js +32 -15
  112. package/dist/agent/motores/trueforge/sesionTrueforge.js.map +1 -1
  113. package/dist/agent/motores/trueforge/skillsTrueforge.d.ts +16 -0
  114. package/dist/agent/motores/trueforge/toolsDeConectores.d.ts +36 -0
  115. package/dist/agent/motores/trueforge/toolsDeFichero.d.ts +146 -0
  116. package/dist/agent/motores/trueforge/toolsPropias.d.ts +38 -0
  117. package/dist/agent/motores/trueforge/traerDeStitch.d.ts +63 -0
  118. package/dist/agent/motores/trueforge/trueforge.d.ts +35 -0
  119. package/dist/agent/navegacion/estilosEnDisco.d.ts +41 -0
  120. package/dist/agent/navegacion/hechosEnDisco.d.ts +19 -0
  121. package/dist/agent/navegacion/indiceEnDisco.d.ts +50 -0
  122. package/dist/agent/navegacion/modeloDeProyecto.d.ts +86 -0
  123. package/dist/agent/planesEnDisco.d.ts +18 -0
  124. package/dist/agent/publicarPlan.d.ts +20 -0
  125. package/dist/agent/raizDelPaquete.d.ts +9 -0
  126. package/dist/agent/remoto/ngrokEnMaquina.d.ts +44 -0
  127. package/dist/agent/remoto/puenteWebSocket.d.ts +59 -0
  128. package/dist/agent/remoto/tunelNgrok.d.ts +31 -0
  129. package/dist/agent/renombrarSobre.d.ts +14 -0
  130. package/dist/agent/sesiones/adjuntosDeSesion.d.ts +64 -0
  131. package/dist/agent/sesiones/baseDeFichero.d.ts +9 -0
  132. package/dist/agent/sesiones/checkpointer.d.ts +146 -0
  133. package/dist/agent/sesiones/git.d.ts +66 -0
  134. package/dist/agent/sesiones/gitSync.d.ts +264 -0
  135. package/dist/agent/sesiones/memoriaDeHilo.d.ts +4 -0
  136. package/dist/agent/sesiones/modeloDelCambio.d.ts +7 -0
  137. package/dist/agent/sesiones/parcheEnTexto.d.ts +9 -0
  138. package/dist/agent/sesiones/sesionGit.d.ts +155 -0
  139. package/dist/agent/subagentes/actividadDeCodex.d.ts +8 -0
  140. package/dist/agent/subagentes/agentesEnDisco.d.ts +198 -0
  141. package/dist/agent/subagentes/consumoExterno.d.ts +83 -0
  142. package/dist/agent/subagentes/ejecutableEnWindows.d.ts +53 -0
  143. package/dist/agent/subagentes/escrituraDeCodex.d.ts +94 -0
  144. package/dist/agent/subagentes/escrituraDeOpencode.d.ts +67 -0
  145. package/dist/agent/subagentes/escrituraExterna.d.ts +419 -0
  146. package/dist/agent/subagentes/pluginDeSkills.d.ts +84 -0
  147. package/dist/agent/subagentes/subagenteCodex.d.ts +76 -0
  148. package/dist/agent/subagentes/subagenteExterno.d.ts +169 -0
  149. package/dist/agent/subagentes/subagenteOpencode.d.ts +126 -0
  150. package/dist/agent/tareas/aumentador.d.ts +99 -0
  151. package/dist/agent/tareas/juezDeTarea.d.ts +64 -0
  152. package/dist/agent/tareas/reflejoEnElGestor.d.ts +38 -0
  153. package/dist/agent/tareas/sondeoDelGestor.d.ts +49 -0
  154. package/dist/agent/tareas/tareasEnDisco.d.ts +141 -0
  155. package/dist/agent/trazaDeErroresEnDisco.d.ts +10 -0
  156. package/dist/agent/turno/depuracion.d.ts +1 -0
  157. package/dist/agent/turno/diagnosticoDeTools.d.ts +124 -0
  158. package/dist/agent/turno/ficherosDelProyecto.d.ts +10 -0
  159. package/dist/agent/turno/guionizado.d.ts +18 -0
  160. package/dist/agent/turno/informeDeTraza.d.ts +220 -0
  161. package/dist/agent/turno/inspectorDePrompt.d.ts +150 -0
  162. package/dist/agent/turno/instantanea.d.ts +16 -0
  163. package/dist/agent/turno/interrupts.d.ts +54 -0
  164. package/dist/agent/turno/juezDelTurnoConModelo.d.ts +26 -0
  165. package/dist/agent/turno/mensajes.d.ts +23 -0
  166. package/dist/agent/turno/normalizar.d.ts +15 -0
  167. package/dist/agent/turno/puente.d.ts +196 -0
  168. package/dist/agent/turno/registroDeFallos.d.ts +39 -0
  169. package/dist/agent/turno/resumenDeContexto.d.ts +269 -0
  170. package/dist/agent/turno/resumenDeTool.d.ts +33 -0
  171. package/dist/agent/turno/rubrica.d.ts +35 -0
  172. package/dist/agent/turno/sesionReal.d.ts +89 -0
  173. package/dist/agent/turno/textoDeTool.d.ts +19 -0
  174. package/dist/agent/turno/turnoReal.d.ts +210 -0
  175. package/dist/agent/turno/verificacion.d.ts +85 -0
  176. package/dist/agent/turno/verificador.d.ts +66 -0
  177. package/dist/bin.d.ts +2 -0
  178. package/dist/cli/acuseDeModelo.d.ts +18 -0
  179. package/dist/cli/aprobar.d.ts +162 -0
  180. package/dist/cli/config.d.ts +17 -0
  181. package/dist/cli/consola.d.ts +473 -0
  182. package/dist/cli/describe.d.ts +7 -0
  183. package/dist/cli/doctor.d.ts +8 -0
  184. package/dist/cli/fuentesDeDisco.d.ts +25 -0
  185. package/dist/cli/main.d.ts +291 -0
  186. package/dist/cli/markdown.d.ts +126 -0
  187. package/dist/cli/panel.d.ts +38 -0
  188. package/dist/cli/podar.d.ts +38 -0
  189. package/dist/cli/run.d.ts +30 -0
  190. package/dist/cli/spinner.d.ts +37 -0
  191. package/dist/cli/stdio.d.ts +94 -0
  192. package/dist/cli/tema.d.ts +68 -0
  193. package/dist/cli/tokens.d.ts +16 -0
  194. package/dist/cli/traza.d.ts +19 -0
  195. package/dist/cli/tui/app.d.ts +23 -0
  196. package/dist/cli/tui/aprobarTui.d.ts +46 -0
  197. package/dist/cli/tui/barra.d.ts +43 -0
  198. package/dist/cli/tui/correrTui.d.ts +119 -0
  199. package/dist/cli/tui/entrada.d.ts +14 -0
  200. package/dist/cli/tui/filas.d.ts +13 -0
  201. package/dist/cli/tui/logo.d.ts +20 -0
  202. package/dist/cli/tui/pielTui.d.ts +15 -0
  203. package/dist/cli/tui/raton.d.ts +68 -0
  204. package/dist/cli/tui/sidebar.d.ts +63 -0
  205. package/dist/cli/tui/store.d.ts +102 -0
  206. package/dist/cli/tui/tarjeta.d.ts +8 -0
  207. package/dist/cli/tui/temaInk.d.ts +67 -0
  208. package/dist/cli/tui/transcript.d.ts +32 -0
  209. package/dist/cli/verify.d.ts +9 -0
  210. package/dist/cli/wizardInicial.d.ts +59 -0
  211. package/dist/core/actos.d.ts +437 -0
  212. package/dist/core/adjuntos.d.ts +77 -0
  213. package/dist/core/agentes.d.ts +353 -0
  214. package/dist/core/analisisDeSesion.d.ts +63 -0
  215. package/dist/core/aprendido.d.ts +41 -0
  216. package/dist/core/artefactos.d.ts +74 -0
  217. package/dist/core/atributosXone.d.ts +53 -0
  218. package/dist/core/bitacora.d.ts +21 -0
  219. package/dist/core/cloudstudio.d.ts +168 -0
  220. package/dist/core/codificacion.d.ts +81 -0
  221. package/dist/core/comandoExterno.d.ts +49 -0
  222. package/dist/core/compararCapturas.d.ts +136 -0
  223. package/dist/core/conectores.d.ts +296 -0
  224. package/dist/core/config.d.ts +148 -0
  225. package/dist/core/contextos.d.ts +54 -0
  226. package/dist/core/convertirAP.d.ts +56 -0
  227. package/dist/core/copiaDeAvd.d.ts +44 -0
  228. package/dist/core/cssBienFormado.d.ts +22 -0
  229. package/dist/core/deps.d.ts +28 -0
  230. package/dist/core/descargas.d.ts +61 -0
  231. package/dist/core/descripcionDePantalla.d.ts +121 -0
  232. package/dist/core/descriptoresDeApp.d.ts +108 -0
  233. package/dist/core/diagnosticoDeNode.d.ts +51 -0
  234. package/dist/core/diff.d.ts +26 -0
  235. package/dist/core/diffDeColecciones.d.ts +54 -0
  236. package/dist/core/disenoVinculado.d.ts +17 -0
  237. package/dist/core/dispositivoDeSesion.d.ts +22 -0
  238. package/dist/core/dispositivoElegido.d.ts +17 -0
  239. package/dist/core/dispositivos.d.ts +469 -0
  240. package/dist/core/entrega.d.ts +341 -0
  241. package/dist/core/entrelazar.d.ts +48 -0
  242. package/dist/core/esfuerzo.d.ts +120 -0
  243. package/dist/core/esqueleto.d.ts +38 -0
  244. package/dist/core/estiloMedido.d.ts +70 -0
  245. package/dist/core/estilos.d.ts +76 -0
  246. package/dist/core/events.d.ts +218 -0
  247. package/dist/core/exportacion.d.ts +88 -0
  248. package/dist/core/fallos.d.ts +79 -0
  249. package/dist/core/fondosSvg.d.ts +115 -0
  250. package/dist/core/fotoDeColecciones.d.ts +45 -0
  251. package/dist/core/fuentes.d.ts +96 -0
  252. package/dist/core/geometriaDePantalla.d.ts +171 -0
  253. package/dist/core/gestorDeTareas.d.ts +295 -0
  254. package/dist/core/hechosDelProyecto.d.ts +70 -0
  255. package/dist/core/hotswap.d.ts +30 -0
  256. package/dist/core/iconos.d.ts +86 -0
  257. package/dist/core/identidadDeProveedor.d.ts +20 -0
  258. package/dist/core/idiomaDeLaRespuesta.d.ts +26 -0
  259. package/dist/core/imagenesDeDocumento.d.ts +40 -0
  260. package/dist/core/jsParaRhino.d.ts +3 -0
  261. package/dist/core/juezDelTurno.d.ts +95 -0
  262. package/dist/core/logDeDispositivo.d.ts +67 -0
  263. package/dist/core/memoria.d.ts +18 -0
  264. package/dist/core/metodoDeComparacionVisual.d.ts +20 -0
  265. package/dist/core/modelos.d.ts +198 -0
  266. package/dist/core/modoDeEscritura.d.ts +155 -0
  267. package/dist/core/motor.d.ts +43 -0
  268. package/dist/core/motoresLocales.d.ts +113 -0
  269. package/dist/core/mudanzaDeWorkspace.d.ts +112 -0
  270. package/dist/core/navegacion.d.ts +172 -0
  271. package/dist/core/notify.d.ts +77 -0
  272. package/dist/core/nucleoXone.d.ts +28 -0
  273. package/dist/core/panorama.d.ts +68 -0
  274. package/dist/core/paqueteDeSoporte.d.ts +100 -0
  275. package/dist/core/planDeSubida.d.ts +56 -0
  276. package/dist/core/planes.d.ts +53 -0
  277. package/dist/core/podaDeCheckpoint.d.ts +75 -0
  278. package/dist/core/ports.d.ts +1034 -0
  279. package/dist/core/puedeLanzarse.d.ts +181 -0
  280. package/dist/core/puertosDeAvd.d.ts +59 -0
  281. package/dist/core/recargaEnCaliente.d.ts +52 -0
  282. package/dist/core/referenciasDeImagen.d.ts +36 -0
  283. package/dist/core/remoto.d.ts +76 -0
  284. package/dist/core/repartoDeEncargo.d.ts +80 -0
  285. package/dist/core/rubrica.d.ts +78 -0
  286. package/dist/core/rutaVirtual.d.ts +29 -0
  287. package/dist/core/selectorDeCarpeta.d.ts +59 -0
  288. package/dist/core/serieDeEscrituras.d.ts +58 -0
  289. package/dist/core/settings.d.ts +421 -0
  290. package/dist/core/shellDeAgente.d.ts +177 -0
  291. package/dist/core/skills.d.ts +129 -0
  292. package/dist/core/stitch.d.ts +114 -0
  293. package/dist/core/tareas.d.ts +412 -0
  294. package/dist/core/tareasDelPlan.d.ts +123 -0
  295. package/dist/core/tareasEnElGestor.d.ts +117 -0
  296. package/dist/core/textos.d.ts +8 -0
  297. package/dist/core/topeAgotado.d.ts +55 -0
  298. package/dist/core/traerDeLaMaquina.d.ts +33 -0
  299. package/dist/core/trazaDeErrores.d.ts +83 -0
  300. package/dist/core/tunel.d.ts +45 -0
  301. package/dist/core/turno.d.ts +154 -0
  302. package/dist/core/validacionDeEscritura.d.ts +95 -0
  303. package/dist/core/verificacionDeSubida.d.ts +14 -0
  304. package/dist/core/version.d.ts +35 -0
  305. package/dist/core/xmlBienFormado.d.ts +23 -0
  306. package/dist/core/zipDeAdjunto.d.ts +28 -0
  307. package/dist/core/zipDeSkill.d.ts +74 -0
  308. package/dist/lib/tareaAutonoma.d.ts +36 -0
  309. package/dist/lib/tareaAutonoma.js +259 -0
  310. package/dist/lib/tareaAutonoma.js.map +1 -0
  311. package/dist/lib.d.ts +31 -0
  312. package/dist/lib.js +28 -0
  313. package/dist/lib.js.map +1 -0
  314. package/dist/vendor/hitl.d.ts +69 -0
  315. package/dist/vendor/skillLoaders/catalog.d.ts +27 -0
  316. package/dist/vendor/sqliteSaver.d.ts +22 -0
  317. package/dist/vendor/tokenTracking.d.ts +22 -0
  318. package/dist/web/servidor/arranque.d.ts +1372 -0
  319. package/dist/web/servidor/consolaDeTarea.d.ts +166 -0
  320. package/dist/web/servidor/consolaWeb.d.ts +142 -0
  321. package/dist/web/servidor/corredorDeTareas.d.ts +395 -0
  322. package/dist/web/servidor/datosDeCierre.d.ts +4 -0
  323. package/dist/web/servidor/interrupcion.d.ts +39 -0
  324. package/dist/web/servidor/pielWeb.d.ts +32 -0
  325. package/dist/web/servidor/puenteRemoto.d.ts +80 -0
  326. package/dist/web/servidor/servidor.d.ts +53 -0
  327. package/dist/web/servidor/sesiones.d.ts +342 -0
  328. package/dist/web/servidor/soporte.d.ts +65 -0
  329. package/dist/web/servidor/soporte.js +2 -0
  330. package/dist/web/servidor/soporte.js.map +1 -1
  331. package/dist/web/servidor/transporte.d.ts +2751 -0
  332. package/dist/web/servidor/vestibulo.d.ts +952 -0
  333. package/dist/web/servidor/visorOpenui.d.ts +33 -0
  334. package/package.json +9 -1
@@ -0,0 +1,296 @@
1
+ /**
2
+ * Los conectores MCP de la consola: servidores REMOTOS con los que se conecta esta máquina.
3
+ * Puro a propósito —catálogo, formas del cable y reglas—; el disco y la red viven en
4
+ * `agent/conectores/`.
5
+ *
6
+ * **Hay DOS familias y una sola forma de fila.** El CATÁLOGO son las filas que vienen por
7
+ * código (`CATALOGO_DE_CONECTORES`), y una DEFINICIÓN es una fila que escribió el usuario y
8
+ * vive en su disco. Las dos se resuelven al mismo `ConectorDeCatalogo`, así que de ahí para
9
+ * abajo —estado, prueba, autorización, botones— nada sabe de qué familia viene: es lo que
10
+ * hace que un servidor añadido a mano se comporte como Jira.
11
+ *
12
+ * **Llegan a los agentes de TrueForge** por `ConectoresPort` (`agent/motores/trueforge/
13
+ * toolsDeConectores.ts`): qué conectores (`conectoresParaElAgente`), a quién (`recibeConectores`)
14
+ * y qué ve el modelo (`esquemaParaElModelo`, `resultadoRecortado`) se decide aquí, puro.
15
+ */
16
+ import type { Agente } from "./agentes.js";
17
+ export type AutenticacionDeConector = "ninguna" | "oauth" | "api-key";
18
+ /**
19
+ * El literal, comprobado por VALOR: es lo que llega por el cable, donde puede mentir.
20
+ *
21
+ * Se usa dos veces y por eso es una función y no tres `===` repetidos: al validar la
22
+ * definición que entra, y —su copia DECLARADA, porque la frontera del cliente no deja
23
+ * importar de aquí— en la guarda del store, que descarta la fila ENTERA en silencio si no
24
+ * reconoce el literal. Añadir un carril de autenticación y no tocar esa guarda deja la fila
25
+ * invisible con todo en verde.
26
+ */
27
+ export declare function esAutenticacionDeConector(valor: unknown): valor is AutenticacionDeConector;
28
+ export interface ConectorDeCatalogo {
29
+ readonly id: string;
30
+ readonly nombre: string;
31
+ readonly url: string;
32
+ readonly descripcion: string;
33
+ readonly autenticacion: AutenticacionDeConector;
34
+ /**
35
+ * En qué cabecera viaja la clave de un `api-key`, con el valor TAL CUAL. Ausente es
36
+ * `Authorization: Bearer <clave>`, lo de siempre. Existe por Stitch, medido el 30-09-2026: su
37
+ * clave va en `X-Goog-Api-Key`, y como `Bearer` contesta 401.
38
+ */
39
+ readonly cabeceraDeClave?: string;
40
+ /**
41
+ * Una tool de LECTURA, sin argumentos, que `probar` llama después de `listTools`, para los
42
+ * servidores que listan sus tools a cualquiera. Medido en Stitch: `tools/list` contesta 200 sin
43
+ * clave y con una clave falsa, así que sin esto «Conectado · 15 tools» saldría con cualquier cosa.
44
+ */
45
+ readonly comprobacion?: string;
46
+ /**
47
+ * Tools que NO se montan en un agente, aunque el servidor las ofrezca. Medido en Stitch: sus 15
48
+ * tools son unos 11k tokens en CADA llamada del agente que las recibe, y `create_design_system`
49
+ * y `update_design_system` son dos tercios (el mismo esquema de 15 KB cada una) — el sistema de
50
+ * diseño se hace igual con `upload_design_md` + `create_design_system_from_design_md`. Y borrar
51
+ * un proyecto de la cuenta no es trabajo de un agente.
52
+ */
53
+ readonly fueraDelAgente?: readonly string[];
54
+ /**
55
+ * Por tool, los campos del resultado (JSON) que el agente NO recibe, a cualquier profundidad.
56
+ * Medido en Stitch: `list_projects` son 143 KB para 16 proyectos —el `designMd` entero de cada
57
+ * uno, sus pantallas y miniaturas— y el agente no podía ni contarlos (se desalojaba y acabó
58
+ * lanzando scripts). Sin esos campos, 4 KB. El detalle sigue a mano con `get_project`.
59
+ */
60
+ readonly camposFueraDelResultado?: Readonly<Record<string, readonly string[]>>;
61
+ }
62
+ /**
63
+ * Medido contra los tres servidores el 24-09-2026: deepwiki contesta `listTools` sin
64
+ * credenciales; Notion y Atlassian publican `registration_endpoint` y S256, y aceptan un
65
+ * cliente público con `redirect_uri` en loopback. Stitch (30-09-2026) lleva la clave en su propia
66
+ * cabecera y se comprueba con una llamada, ver `cabeceraDeClave`. El transporte NO se declara: se prueba
67
+ * `streamable-http` y, si no, `sse`, como hace TrueForge.
68
+ */
69
+ export declare const CATALOGO_DE_CONECTORES: readonly ConectorDeCatalogo[];
70
+ export declare function conectorDelCatalogo(id: string): ConectorDeCatalogo | undefined;
71
+ /**
72
+ * Lo que se puede PEDIR sobre un conector. Es una lista blanca por valor: lo que llega por el
73
+ * cable elige entre estas seis y nada más, y `crear` no es una más —es la única que no lleva
74
+ * `id`, porque el id lo DERIVA el servidor del nombre—, así que quien la lea tiene que mirar
75
+ * la acción ANTES de exigir el id.
76
+ */
77
+ export type AccionDeConector = "anadir" | "quitar" | "probar" | "autorizar" | "desconectar" | "crear";
78
+ /**
79
+ * Una fila del catálogo tal como VIAJA: los cuatro campos menos la `url`. Es la lista con la que
80
+ * el cliente pone nombre y descripción a cada `id` de un `ConectorDelCable`, y por eso tiene que
81
+ * ser `catálogo ∪ definiciones`: con solo las filas de código, un conector escrito a mano se
82
+ * quedaría sin nombre en pantalla y el cliente caería a un `?? id` que enseña el slug crudo.
83
+ *
84
+ * La `url` no está y no es un olvido: en pantalla no hace falta, y una ruta remota de más es una
85
+ * que discutir. Lo único que la cruza es la de una definición, y solo en el sentido
86
+ * cliente→servidor (`DefinicionDeConector`).
87
+ */
88
+ export interface FilaDeCatalogo {
89
+ readonly id: string;
90
+ readonly nombre: string;
91
+ readonly descripcion: string;
92
+ readonly autenticacion: AutenticacionDeConector;
93
+ }
94
+ /** Una fila resuelta, recortada a lo que viaja. Una sola función para las dos familias. */
95
+ export declare function filaDeCatalogo(c: ConectorDeCatalogo): FilaDeCatalogo;
96
+ /**
97
+ * Un conector añadido A MANO: lo que una fila del catálogo tiene por código, esto lo tiene
98
+ * por disco. Sin `id` — el id se DERIVA del nombre (`idDeConectorPropio`), y un campo que se
99
+ * deriva no se guarda.
100
+ *
101
+ * Su `url` es lo único de esta pieza que cruza el cable en el sentido cliente→servidor, y es
102
+ * inevitable: la escribió una persona en el formulario. Lo que NO cruza nunca de vuelta es la
103
+ * `url` de la fila —ni la del catálogo ni la de una definición—, por el mismo motivo que la
104
+ * del catálogo ya no viaja: en pantalla no hace falta, y una ruta remota de más es una que
105
+ * discutir.
106
+ */
107
+ export interface DefinicionDeConector {
108
+ readonly nombre: string;
109
+ readonly descripcion: string;
110
+ readonly url: string;
111
+ readonly autenticacion: AutenticacionDeConector;
112
+ }
113
+ /**
114
+ * El prefijo de un conector propio es el MISMO literal que el de un proveedor personalizado
115
+ * (`modelos.ts#PREFIJO_PERSONALIZADO`), y a propósito: en el producto `custom:` significa una
116
+ * sola cosa —«esto lo añadiste tú»— y un segundo literal sería un segundo sitio donde
117
+ * decidirla. Las dos familias NO se cruzan: un id de conector no se le pasa jamás a una
118
+ * función de proveedor, ni al revés, así que compartir el prefijo no las mezcla.
119
+ */
120
+ export declare function esConectorPropio(id: string): boolean;
121
+ export declare function slugDeConectorPropio(id: string): string;
122
+ export declare function idDeConectorPropio(slug: string): string;
123
+ /**
124
+ * El id de un conector escrito a mano, derivado de su NOMBRE. Se deriva y no se guarda —un
125
+ * campo derivado es un campo que puede contradecir a su fuente—, y sale de aquí y no de quien
126
+ * llama para que la regla del slug viva en UN sitio: quien valida una definición y quien la
127
+ * guarda tienen que derivar el MISMO id, o el rechazo por id ocupado hablaría de otro.
128
+ */
129
+ export declare function idDeConectorDesdeNombre(nombre: string): string;
130
+ /**
131
+ * Una definición como la fila que representa, para que `resolver` devuelva SIEMPRE lo mismo
132
+ * y ninguna capa de más abajo tenga que saber de qué familia viene un conector.
133
+ */
134
+ export declare function conectorDeDefinicion(id: string, def: DefinicionDeConector): ConectorDeCatalogo;
135
+ /**
136
+ * La definición tal como llega por el cable, o `undefined` si no tiene la forma.
137
+ *
138
+ * La FORMA y la SEMÁNTICA van separadas a propósito: aquí solo se comprueba que los cuatro
139
+ * campos sean cadenas del tipo que dicen ser —el JSON de un cliente puede mentir sobre lo
140
+ * que el tipo promete—, y lo que tiene que valer cada uno lo decide
141
+ * `motivoDeDefinicionInaceptable`, que es la regla y tiene sus tests.
142
+ */
143
+ export declare function definicionDelCable(valor: unknown): DefinicionDeConector | undefined;
144
+ /**
145
+ * ¿Vale eso como conector nuevo? Devuelve el MOTIVO del rechazo, o `undefined` si pasa.
146
+ *
147
+ * `idsOcupados` son los ids ya AÑADIDOS más los que tienen definición, y NO el catálogo. La
148
+ * diferencia importa y es deliberada: lo que choca es crear DOS VECES el mismo nombre —el
149
+ * segundo pisaría la definición del primero, y su URL y su clave se quedarían apuntando a otro
150
+ * servidor—, y una definición huérfana (una que se añadió a mano al fichero, o la que dejó un
151
+ * `quitar` que falló) también ocupa su sitio por eso mismo. Un conector propio llamado «Jira»
152
+ * NO choca con la fila del catálogo, que vive en `jira` y no en `custom:jira`: montar tu propio
153
+ * servidor de Jira es una razón real para darlo de alta a mano, y ahí los dos conviven cada uno
154
+ * con su fila. El id se deriva con la MISMA regla que un proveedor personalizado
155
+ * (`modelos.ts`): un segundo slug sería un segundo sitio donde divergir, y el slug acaba siendo
156
+ * clave de un fichero.
157
+ */
158
+ export declare function motivoDeDefinicionInaceptable(def: DefinicionDeConector, idsOcupados: readonly string[]): string | undefined;
159
+ /** Lo que dice el DISCO, no una medida: la medida es `PruebaDeConector`. */
160
+ export type EstadoDeConector = "sin-autorizacion" | "falta-autorizar" | "autorizado";
161
+ /**
162
+ * El segundo parámetro se llama `hayCredencial` y no `hayTokens` porque la pregunta que
163
+ * contesta es «¿hay con qué autenticarse?»: un OAuth guarda tokens y un `api-key` guarda su
164
+ * clave, y desde aquí son la misma pregunta. Quien pregunta resuelve la suya —el servicio
165
+ * mira los dos campos de su fichero de secretos— y le pasa un booleano.
166
+ */
167
+ export declare function estadoDeConector(conector: ConectorDeCatalogo, hayCredencial: boolean): EstadoDeConector;
168
+ /** Una tool tal como la enseña Ajustes. `soloLectura` ausente = el servidor no lo anota. */
169
+ export interface ToolDeConector {
170
+ nombre: string;
171
+ descripcion?: string;
172
+ soloLectura?: boolean;
173
+ }
174
+ /**
175
+ * Una tool tal como la recibe un AGENTE: la de Ajustes más su esquema de entrada (JSON Schema,
176
+ * con sus `$defs`). Es otro tipo y no un campo más de `ToolDeConector` porque aquella viaja por el
177
+ * cable en cada foto de la prueba, y los esquemas de Stitch pesan decenas de KB.
178
+ */
179
+ export interface ToolConEsquema extends ToolDeConector {
180
+ esquema: Record<string, unknown>;
181
+ }
182
+ /** La última vez que se probó: una FOTO con hora. Ausente = no se ha probado. */
183
+ export type PruebaDeConector = {
184
+ cuando: number;
185
+ ok: true;
186
+ tools: ToolDeConector[];
187
+ } | {
188
+ cuando: number;
189
+ ok: false;
190
+ motivo: string;
191
+ };
192
+ /**
193
+ * Un conector AÑADIDO, en la forma del cable. Nunca lleva tokens, ni clave, ni URL de
194
+ * autorización.
195
+ *
196
+ * **No lleva `nombre` ni `descripcion`**: esos los resuelve el cliente buscando este `id` en
197
+ * la lista que viaja como `catalogo`, y esa lista es `catálogo ∪ definiciones`. Antes esa
198
+ * búsqueda NO era total —el `catalogo` solo traía las filas de código, así que un conector
199
+ * añadido a mano se quedaba sin nombre y el cliente caía a un `?? conector.id`—; con la lista
200
+ * completa lo es, y por eso no hay aquí una segunda copia de los mismos cuatro campos.
201
+ */
202
+ export interface ConectorDelCable {
203
+ id: string;
204
+ estado: EstadoDeConector;
205
+ prueba?: PruebaDeConector;
206
+ /** Hay una autorización abierta en el navegador esperando su callback. */
207
+ autorizando?: boolean;
208
+ }
209
+ /** 10 min, el mismo plazo que TrueForge da a una autorización pendiente. */
210
+ export declare const TTL_DE_AUTORIZACION_MS: number;
211
+ /** Conectar + listar tools: más que esto es «no responde». */
212
+ export declare const TOPE_DE_CONEXION_MS: number;
213
+ /**
214
+ * Una llamada de un AGENTE a una tool: generar una pantalla en Stitch tarda minutos (medido: casi
215
+ * dos), y con el tope de conexión el agente veía un fallo de algo que sí terminaba. El SDK tiene su
216
+ * PROPIO tope por petición (60 s por omisión), así que este valor se le pasa también a él.
217
+ */
218
+ export declare const TOPE_DE_LLAMADA_MS: number;
219
+ /** La ruta del callback. PÚBLICA: la redirección llega sin cookie (`SameSite=Strict`). */
220
+ export declare const RUTA_CALLBACK_MCP = "/mcp/oauth/callback";
221
+ export interface Pendiente {
222
+ id: string;
223
+ expira: number;
224
+ }
225
+ export type ResultadoDeCallback = {
226
+ ok: true;
227
+ id: string;
228
+ code: string;
229
+ } | {
230
+ ok: false;
231
+ motivo: string;
232
+ };
233
+ /**
234
+ * La autenticación de la ruta pública ES el `state`: aleatorio, de un solo uso y con
235
+ * plazo. Se CONSUME en cuanto se reconoce, vaya bien o mal, para que no se pueda repetir.
236
+ *
237
+ * El `motivo` es siempre una frase NUESTRA: la query la escribe quien redirige, y repetirla
238
+ * en una página nuestra sería servir contenido ajeno desde el origen de la consola.
239
+ */
240
+ export declare function interpretarCallback(query: URLSearchParams, pendientes: Map<string, Pendiente>, ahora: number): ResultadoDeCallback;
241
+ /** Un conector tal como lo monta una sesión del agente: con lo que el catálogo le recorta. */
242
+ export interface ConectorParaElAgente {
243
+ id: string;
244
+ nombre: string;
245
+ fueraDelAgente: readonly string[];
246
+ camposFueraDelResultado: Readonly<Record<string, readonly string[]>>;
247
+ }
248
+ /**
249
+ * Qué conectores del proyecto llegan a un AGENTE: los marcados en su `config.json`
250
+ * (`conectores`), que sigan AÑADIDOS y que esta consola sepa nombrar — y NUNCA el del gestor de
251
+ * tareas vinculado, aunque esté en la misma lista (vincular lo marca): en Jira y en Notion escribe
252
+ * el HARNESS, con su tarjeta, nunca el agente. El orden es el de los marcados; un id repetido
253
+ * sale una vez.
254
+ */
255
+ export declare function conectoresParaElAgente(entrada: {
256
+ marcados: readonly string[];
257
+ gestor?: string | undefined;
258
+ anadidos: readonly string[];
259
+ catalogo: readonly FilaDeCatalogo[];
260
+ }): ConectorParaElAgente[];
261
+ /** Lo que admite un nombre de función en los proveedores de modelos: `^[a-zA-Z0-9_-]{1,64}$`. */
262
+ export declare const LARGO_MAXIMO_DE_NOMBRE_DE_TOOL = 64;
263
+ /**
264
+ * Cómo se llama la tool `tool` del conector `id` DENTRO del agente: `stitch__list_projects`. El
265
+ * prefijo evita que dos conectores con una tool del mismo nombre se pisen, y dice de dónde viene.
266
+ * Un `custom:acme` lleva `:`, que un proveedor rechaza como nombre de función: todo lo que no sea
267
+ * `[a-zA-Z0-9_-]` pasa a `_`. Recortado al máximo; devuelve `undefined` si ni así cabe algo que
268
+ * identifique a la tool (un prefijo que ya ocupa el máximo).
269
+ */
270
+ export declare function nombreDeToolDeConector(id: string, tool: string): string | undefined;
271
+ /**
272
+ * Qué tools de los conectores recibe un ESPECIALISTA: todas, solo quien hace los RECURSOS —su
273
+ * `escribeEn` cubre `icons/`, de los de serie `designer-xone`—, que es quien diseña; el resto,
274
+ * ninguna. Regla de DATO, no una lista de nombres. Estrecha a propósito: las tools de un conector
275
+ * viajan en CADA llamada del agente que las recibe (las de Stitch, miles de tokens). El raíz recibe
276
+ * solo las de LECTURA, y eso lo decide la sesión: es de solo lectura por permisos.
277
+ */
278
+ export declare function recibeConectores(a: Pick<Agente, "soloLectura" | "ejecucion" | "escribeEn">): boolean;
279
+ /** Cuántos `$ref` anidados se incrustan antes de cortar: un esquema recursivo no puede colgar esto. */
280
+ export declare const PROFUNDIDAD_MAXIMA_DE_REF = 8;
281
+ /**
282
+ * El esquema de una tool tal como se le puede dar a CUALQUIER proveedor de modelos. Medido con
283
+ * Stitch y Gemini: los esquemas de Google llevan claves propias (`x-google-identifier`,
284
+ * `x-google-enum-descriptions`…) y la API de Gemini RECHAZA la petición entera por una sola —el
285
+ * turno moría antes de empezar—. Se quitan las claves `x-…` (son anotaciones, no restricciones) y
286
+ * se INCRUSTA cada `$ref` local (`#/$defs/…`), que no todos los proveedores siguen; `$defs` sale
287
+ * con ellos. Dentro de `properties` las claves son NOMBRES de campo y no se tocan. Puro: no
288
+ * modifica lo que recibe.
289
+ */
290
+ export declare function esquemaParaElModelo(esquema: Record<string, unknown>): Record<string, unknown>;
291
+ /**
292
+ * El resultado de una tool sin los `campos` que el catálogo le recorta (`camposFueraDelResultado`),
293
+ * a cualquier profundidad, con una línea al final que dice cuáles faltan —que el agente no los dé
294
+ * por inexistentes—. Lo que no es JSON, o no trae ninguno, vuelve TAL CUAL.
295
+ */
296
+ export declare function resultadoRecortado(texto: string, campos: readonly string[]): string;
@@ -0,0 +1,148 @@
1
+ /**
2
+ * La validación PURA de los dos ficheros de configuración: sin tocar disco (eso es cosa
3
+ * de `agent/config/configEnDisco.ts`) y sin importar nada de langchain — la frontera de `core/`
4
+ * está probada en `imports.test.ts`.
5
+ *
6
+ * Dos ficheros con dos ciclos de vida distintos, como opencode:
7
+ *
8
+ * - `config.json` (proyecto o global): modelos y proveedores. Comiteable. NUNCA claves.
9
+ * Una clave aquí no se avisa: se RECHAZA, porque un aviso dejaría el fichero
10
+ * funcionando y la clave camino del commit. La alternativa —`~/.xonecode/auth.json`—
11
+ * está a un comando de distancia.
12
+ * - `auth.json` (solo global): las credenciales. En un proyecto se rechaza entero, y se
13
+ * comprueba el modo: un `chmod` de más, un `cp -r` o un backup restaurado dejan el
14
+ * fichero legible por otros, y eso hay que cantarlo al leerlo, no al día del incidente.
15
+ *
16
+ * Y la regla que sostiene a las dos: un aviso NUNCA contiene el valor rechazado, ni
17
+ * truncado. Un mensaje de error acaba en logs, capturas e issues; el aviso dice QUÉ
18
+ * campo, no QUÉ contenía. Por eso estos mensajes no interpolan nunca el valor de entrada.
19
+ */
20
+ import { type MotorDeAgente } from "./motor.js";
21
+ import { type Proveedor, type ProveedorDeclarado } from "./modelos.js";
22
+ import { type VinculoGuardado } from "./gestorDeTareas.js";
23
+ import type { Papel } from "./ports.js";
24
+ import { type ModoDeEscritura } from "./modoDeEscritura.js";
25
+ import { type DisenoVinculado } from "./disenoVinculado.js";
26
+ /** La configuración: modelos y proveedores. Nunca claves. */
27
+ export interface ConfigDeFichero {
28
+ /** Cómo se abrió este proyecto. Las credenciales nunca se guardan aquí. */
29
+ modo?: "offline" | "cloud";
30
+ modelo?: string;
31
+ /** El motor de agente de las sesiones NUEVAS (`core/motor.ts`). Ausente = `MOTOR_POR_OMISION`. */
32
+ motor?: MotorDeAgente;
33
+ modelos?: Partial<Record<Papel, string>>;
34
+ /** Tema visual de la consola, persistido solo cuando pertenece al proyecto. */
35
+ tema?: string;
36
+ /**
37
+ * A qué entorno de `~/.xonecode/settings.json` pertenece este proyecto.
38
+ *
39
+ * Convive con `cloudstudio.url` y no la sustituye: el `entorno` es la referencia (la que
40
+ * dice de qué juego de credenciales OAuth se lee, `porEntorno[id]` en
41
+ * `agent/cloudstudio/cloudstudioMcp.ts`) y la URL es la copia operativa que la sincronización lee
42
+ * exactamente igual que antes de que los entornos existieran. Quitar la URL habría
43
+ * obligado a tocar `crearSincronizador` y todo lo que cuelga de él, que es justo lo que
44
+ * el diseño de la consola web se comprometió a no tocar.
45
+ */
46
+ entorno?: string;
47
+ /** Endpoint MCP de CloudStudio. Las credenciales OAuth viven solo en el almacén global. */
48
+ cloudstudio?: {
49
+ url: string;
50
+ scopes?: string[];
51
+ /** Identidad no sensible del proyecto remoto elegido. */
52
+ proyecto?: {
53
+ id: string;
54
+ nombre: string;
55
+ };
56
+ /** La rama ORIGEN: de la que se baja y contra la que se compara. */
57
+ rama?: string;
58
+ };
59
+ ollama?: {
60
+ baseUrl?: string;
61
+ };
62
+ /**
63
+ * Endpoints compatibles con OpenAI dados de alta por el usuario. **Solo en el
64
+ * `config.json` GLOBAL**: en el del proyecto se rechaza, y no es purismo de ámbito.
65
+ *
66
+ * La clave de un personalizado se guarda en `auth.json` bajo su slug, así que un
67
+ * proyecto que pudiera redefinir la `baseUrl` de un slug ya existente mandaría esa clave
68
+ * al host que él dijera, sin que nadie tocara nada. Un `config.json` de proyecto es un
69
+ * fichero que puede venir de fuera; el global es del dueño de la máquina.
70
+ */
71
+ proveedores?: ProveedorDeclarado[];
72
+ /** Topes de ventana de contexto fijados a mano, por id «proveedor/modelo». */
73
+ contextos?: Record<string, number>;
74
+ /** Ids de conectores MCP (IXCODE-11, `core/conectores.ts`) que este proyecto usa. */
75
+ conectores?: string[];
76
+ /** El gestor de tareas vinculado (IXCODE-11): a qué conector, sitio y proyecto remoto. */
77
+ gestorDeTareas?: VinculoGuardado;
78
+ /** El proyecto de Stitch vinculado (`core/stitch.ts#DisenoVinculado`): de él se eligen las pantallas de una tarea. */
79
+ disenoVinculado?: DisenoVinculado;
80
+ /**
81
+ * El modo con que NACEN las sesiones nuevas de este proyecto (IXCODE-31). Pisa al global
82
+ * (`settings.json#modoDeEscritura`); ausente = el global. **Solo en el config.json del
83
+ * PROYECTO**: el global vive en `settings.json`, y uno aquí se descarta diciéndolo, porque dos
84
+ * sitios para el mismo valor global son dos valores.
85
+ */
86
+ modoDeEscritura?: ModoDeEscritura;
87
+ }
88
+ /** Las credenciales, que viven en OTRO fichero y solo global. */
89
+ export type Auth = Partial<Record<Proveedor, {
90
+ type?: string;
91
+ key: string;
92
+ }>>;
93
+ export type Procedencia = "proyecto" | "global";
94
+ export interface Aviso {
95
+ texto: string;
96
+ severidad: "aviso" | "grave";
97
+ }
98
+ /**
99
+ * Formas plausibles de colar una clave dentro de un `config.json`. El intento se rechaza
100
+ * sea cual sea el valor: lo que delata es el NOMBRE del campo, porque una clave con otro
101
+ * nombre ya no es reconocible — y estas seis cubren lo que la gente escribe a mano.
102
+ *
103
+ * Exportada porque `core/settings.ts` la reutiliza tal cual: dos listas de nombres de
104
+ * credencial que empiezan iguales y divergen con el tiempo es justo el bug que se midió
105
+ * («key» —el campo que usa `auth.json`— faltaba en la copia que tenía `settings.ts`).
106
+ */
107
+ /**
108
+ * ¿Vale eso como clave de API? Devuelve el MOTIVO del rechazo, o `undefined` si pasa.
109
+ *
110
+ * La regla no es nuestra: es la que aplica el harness de DeepSeek en su panel de modelos,
111
+ * y la razón es que una clave de API acaba siendo el valor de una cabecera HTTP — todo
112
+ * carácter ASCII imprimible (`\x21`–`\x7E`) cabe ahí y ninguno más. Un espacio, un
113
+ * tabulador, un salto de línea o una eñe no llegan al proveedor: fallan al construir la
114
+ * petición, o peor, viajan mutilados y el error que vuelve habla de autorización.
115
+ *
116
+ * Las otras dos son de pegado, no de formato, y las dos se han visto de verdad:
117
+ * - `ANTHROPIC_API_KEY=sk-…`, la línea entera del `.env` copiada de un tirón;
118
+ * - `"sk-…"`, con las comillas de la línea de la que salió.
119
+ *
120
+ * Ninguna de las dos se «arregla» por nuestra cuenta quitando lo que sobra: no se puede
121
+ * saber si el usuario quería eso, y una clave adivinada que resulta ser válida enseña a
122
+ * pegar mal. Se rechaza diciendo qué pasa, que es lo que se puede afirmar.
123
+ *
124
+ * Lo que NO comprueba es que la clave sirva — eso solo lo sabe el proveedor, y el sitio
125
+ * donde se pregunta es el catálogo (`cli/wizardInicial.ts`, que lista antes de escribir).
126
+ * Ésta es la criba de balde: la que evita gastar una llamada para que te digan lo que el
127
+ * propio campo ya decía.
128
+ */
129
+ export declare function motivoDeClaveInaceptable(clave: string): string | undefined;
130
+ export declare const CLAVES_DENEGADAS: readonly string[];
131
+ /**
132
+ * Valida un `config.json` sin tocar disco. Lo que no entiende lo descarta y lo avisa
133
+ * nombrándolo: un campo mal escrito tiene que producir un mensaje que lo diga, si no el
134
+ * usuario cree haber configurado algo y no.
135
+ */
136
+ export declare function validar(bruto: unknown, ruta: string, procedencia: Procedencia): {
137
+ config: ConfigDeFichero;
138
+ avisos: Aviso[];
139
+ };
140
+ /**
141
+ * Valida un `auth.json`. Las credenciales SOLO viven en la ruta global: en un proyecto
142
+ * se rechaza el fichero entero — no es una regla de formato, es de dónde puede vivir
143
+ * un secreto. El modo se comprueba al leerlo porque crearlo bien no basta.
144
+ */
145
+ export declare function validarAuth(bruto: unknown, ruta: string, modo: number, procedencia: Procedencia): {
146
+ auth: Auth;
147
+ avisos: Aviso[];
148
+ };
@@ -0,0 +1,54 @@
1
+ /**
2
+ * El tope de la ventana de contexto de cada modelo, con toda la honestidad de
3
+ * la que es capaz una tabla.
4
+ *
5
+ * **Lo que NO hay aquí es tan deliberado como lo que hay:**
6
+ *
7
+ * - `ollama` no aparece a propósito. Cada modelo local trae el suyo (y a veces
8
+ * lo recorta el `num_ctx` del Modelfile), así que cualquier tope sería
9
+ * inventado — y un porcentaje calculado sobre un tope inventado no es un
10
+ * indicador: es una mentira con forma de cifra.
11
+ * - Las familias de la tabla se emparejan por PREFIJO (`gpt-4o-mini` calza con
12
+ * `gpt-4o`), porque los ids son `familia-variante-fecha`.
13
+ *
14
+ * Para lo que la tabla no sabe, está el override de `config.json`
15
+ * («contextos»: {«proveedor/modelo»: tope}): el usuario sabe más de SU modelo
16
+ * que esta tabla, y se lo cree.
17
+ */
18
+ import type { Proveedor } from "./modelos.js";
19
+ /**
20
+ * El tope de contexto de un modelo, o `undefined` si no se sabe.
21
+ *
22
+ * El override se mira ANTES que la tabla y va por id completo
23
+ * («proveedor/modelo»): un tope fijado a mano describe a ESE modelo, no a la
24
+ * familia.
25
+ */
26
+ export declare function topeDeContexto(proveedor: Proveedor, modelo: string, overrides?: Record<string, number>): number | undefined;
27
+ /**
28
+ * El tope con su ORIGEN, para `/config`: lo que el usuario fijó a mano (proyecto gana
29
+ * a global, igual que con los modelos), la tabla como último recurso — o nada, que es
30
+ * una respuesta válida y se distingue del cero.
31
+ */
32
+ export declare function topeResuelto(proveedor: Proveedor, modelo: string, configs: {
33
+ proyecto?: Record<string, number>;
34
+ global?: Record<string, number>;
35
+ }): {
36
+ tope: number;
37
+ origen: "proyecto" | "global" | "tabla";
38
+ } | undefined;
39
+ /**
40
+ * Cuándo se COMPACTA el contexto del raíz en TrueForge, según la ventana del modelo.
41
+ *
42
+ * Era un 32.000 fijo heredado de deepagents, puesto por Ollama —sin tope que leer y con la
43
+ * compresión llegando tarde—. Con DeepSeek, que tiene un millón de ventana, eso es compactar al
44
+ * 3 %: medido en soporte, cada dos o tres lecturas de fichero, y la compactación de TrueForge
45
+ * SUSTITUYE el contexto entero, así que el agente releía lo que acababa de leer (13
46
+ * compactaciones en un turno de 30 min). Ahora: un cuarto de la ventana conocida, nunca menos
47
+ * del 32.000 de antes (que se queda para lo que no tiene tope, Ollama) y nunca más de 128.000,
48
+ * porque compactar también limita lo que cuesta cada llamada.
49
+ */
50
+ export declare const UMBRAL_DE_COMPACTACION_MINIMO = 32000;
51
+ export declare const UMBRAL_DE_COMPACTACION_MAXIMO = 128000;
52
+ export declare const FRACCION_DE_LA_VENTANA_PARA_COMPACTAR = 0.25;
53
+ export declare function umbralDeCompactacion(tope: number | undefined): number;
54
+ export declare function topeDeSalida(proveedor: Proveedor, modelo: string): number | undefined;
@@ -0,0 +1,56 @@
1
+ /**
2
+ * De las medidas de una MAQUETA (px CSS) a la `p` de XOne, con la cuenta de la skill
3
+ * (`references/css/de-una-maqueta-a-xone.md`, «medido»): `p = px × resolution-width / ancho_de_la_maqueta`.
4
+ *
5
+ * ## Por qué una cuenta en código y no una regla en el prompt
6
+ *
7
+ * Medido en una tarea de Maset (rediseño desde una maqueta de Stitch): el agente copió los px de la maqueta TAL CUAL
8
+ * como `p` —`width="24p"` para un icono de 24 px— y los iconos salieron unas 2,6 veces más pequeños; la regla estaba
9
+ * en la skill y no la aplicó. Aquí los dos datos que la cuenta necesita NO los pone el modelo: el `resolution-width`
10
+ * sale del `app.xml` del proyecto y el ancho de la maqueta, de su imagen (o lo dice él, si la imagen no lo deja claro).
11
+ *
12
+ * ## Lo que no se adivina
13
+ *
14
+ * - Un `app.xml` sin `resolution-width`, o con `-1` (visto en un proyecto real, sin documentar en la skill), no se
15
+ * convierte: se dice.
16
+ * - Una imagen de maqueta puede venir a 1× (Stitch: 390 o 427 de ancho) o a 2×/3× (780): solo un ancho de pantalla
17
+ * de móvil en px CSS (`ANCHO_DE_MAQUETA_MINIMO`…`ANCHO_DE_MAQUETA_MAXIMO`) se toma por bueno; otro se dice con sus
18
+ * divisiones y se pide.
19
+ */
20
+ export declare const NOMBRE_CONVERTIR_A_P = "convertir_a_p";
21
+ /** El ancho de una pantalla de móvil en px CSS: fuera de aquí, la imagen va a otra escala (o no es de un móvil). */
22
+ export declare const ANCHO_DE_MAQUETA_MINIMO = 320;
23
+ export declare const ANCHO_DE_MAQUETA_MAXIMO = 480;
24
+ /** Cuántas medidas por llamada: una pantalla entera cabe de sobra. */
25
+ export declare const TOPE_DE_MEDIDAS = 60;
26
+ export interface Resolucion {
27
+ ancho: number;
28
+ /** Ausente si el `app.xml` no lo declara (o es -1): la cuenta del ancho no lo necesita. */
29
+ alto?: number;
30
+ }
31
+ /** El `resolution-width`/`resolution-height` del nodo `<app>` de un `app.xml`, o por qué no se puede usar. */
32
+ export declare function resolucionDeAppXml(texto: string): Resolucion | {
33
+ motivo: string;
34
+ };
35
+ /** ¿Vale el ancho de esta imagen como ancho de la maqueta en px CSS? Si no, por qué, con sus divisiones a 2× y 3×. */
36
+ export declare function anchoDeMaquetaDeImagen(ancho: number, donde: string): {
37
+ ancho: number;
38
+ } | {
39
+ motivo: string;
40
+ };
41
+ /** La cuenta. Redondeada a la `p` entera: XOne no usa decimales en una medida. */
42
+ export declare function pDeMaqueta(px: number, resolucionAncho: number, anchoMaqueta: number): number;
43
+ export interface MedidaDeMaqueta {
44
+ nombre: string;
45
+ px: number;
46
+ }
47
+ /** Qué no vale de una lista de medidas, o `undefined`. */
48
+ export declare function motivoDeMedidasInaceptables(medidas: readonly MedidaDeMaqueta[]): string | undefined;
49
+ /** El informe de la tool: la tabla, la cuenta con sus dos datos y de dónde salió cada uno, y lo que NO convierte. */
50
+ export declare function informeDeConversion(opciones: {
51
+ medidas: readonly MedidaDeMaqueta[];
52
+ resolucion: Resolucion;
53
+ anchoMaqueta: number;
54
+ /** De dónde salió el ancho de la maqueta: «lo indicaste tú» o la ruta de la imagen. */
55
+ origenDelAncho: string;
56
+ }): string;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Las reglas PURAS de «Nuevo emulador a partir de uno existente»: qué se lee de un AVD base y qué
3
+ * se copia al nuevo. El disco y `avdmanager` viven en `agent/dispositivos/instalacionEnMaquina.ts`.
4
+ *
5
+ * Dos modos, y la diferencia es cuánto de la base viaja:
6
+ * - CONFIGURACIÓN: `avdmanager` crea un AVD vacío con la imagen y el perfil de la base, y se le
7
+ * pone encima el `config.ini` de la base (RAM, disco…). Vale con la base encendida.
8
+ * - CLON: se copia la carpeta entera (lo instalado), salvo lo que `seCopiaEnClon` excluye. La base
9
+ * tiene que estar apagada: sus discos están bloqueados mientras corre.
10
+ */
11
+ /** Las líneas `clave=valor` de un `.ini` de AVD. Sin `=` o en blanco se ignoran; el valor va tal cual. */
12
+ export declare function leerIni(texto: string): Map<string, string>;
13
+ /**
14
+ * El paquete de imagen para `avdmanager -k`, de `image.sysdir.1`:
15
+ * `system-images/android-35/google_apis/arm64-v8a/` → `system-images;android-35;google_apis;arm64-v8a`.
16
+ * Sin esa forma no se adivina nada: `undefined`.
17
+ */
18
+ export declare function paqueteDeImagen(config: ReadonlyMap<string, string>): string | undefined;
19
+ /** El perfil de teléfono (`-d`) de la base: `hw.device.name`, si tiene forma de un nombre de perfil. */
20
+ export declare function perfilDeTelefono(config: ReadonlyMap<string, string>): string | undefined;
21
+ /**
22
+ * El `<nombre>.ini` del clon: el de la base con `path` y `path.rel` apuntando a la carpeta nueva.
23
+ * Lo demás (`target`, codificación…) se conserva. Si la base no traía alguna de las dos claves se
24
+ * AÑADE: un `.ini` sin `path` no lo encuentra nadie.
25
+ */
26
+ export declare function iniDeClon(iniBase: string, nombre: string, carpetaAvd: string): string;
27
+ /**
28
+ * ¿Entra en el clon esta ruta, relativa a la carpeta del AVD (separada por `/` o `\`)? Lista NEGRA:
29
+ * los `.lock` en cualquier nivel (el original los tiene cogidos) y los ficheros de la última
30
+ * ejecución. `snapshots/` SÍ viaja (medido): al parar, el emulador guarda la memoria en la
31
+ * instantánea, y lo que aún no se volcó al disco solo vive ahí; sin ella, el clon ve un disco a
32
+ * medias (un fichero escrito salía con 0 bytes). Hay que reescribirles la identidad
33
+ * (`hardwareIniDeClon`) o el emulador las rechaza.
34
+ */
35
+ export declare function seCopiaEnClon(relativa: string): boolean;
36
+ /**
37
+ * El `hardware.ini` de una instantánea del clon, con la identidad del original cambiada por la del
38
+ * clon (medido: con solo las rutas el emulador rechaza la instantánea —«cannot load snapshot»—; con
39
+ * las dos cosas la carga). Formato `clave = valor`, con espacios. Solo se tocan:
40
+ * - `avd.name` y `avd.id`, si valen exactamente la base;
41
+ * - en cualquier otro valor, los segmentos de ruta `<base>.avd` EXACTOS (entre `/` o `\`, o al
42
+ * final), nunca el nombre suelto: la base podría aparecer dentro de otra palabra.
43
+ */
44
+ export declare function hardwareIniDeClon(texto: string, base: string, nombre: string): string;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * ¿Está bien formada esta hoja de estilos de XOne? Pura y sin llamar a nadie.
3
+ *
4
+ * Existe por el otro turno de soporte de APPSalud: el framework no arrancaba con un
5
+ * `CssParseException … Expected open brace character` y el agente pasó media hora contando
6
+ * comentarios a mano.
7
+ *
8
+ * **Es PRUDENTE a propósito**: solo marca lo que rompe la ESTRUCTURA de una hoja con la gramática que
9
+ * documenta la skill (`xone-development/references/css/buenas-practicas-y-parser.md` §18), y nada de
10
+ * lo que XOne pueda aceptar: un validador que avisa de algo que funciona manda a reescribir código
11
+ * bueno. Lo que comprueba:
12
+ * - comentarios `/* … *\/` cerrados, y los de línea `// …` (XOne acepta los dos);
13
+ * - llaves que abren y cierran, sin `}` de más ni bloques sin cerrar al acabar;
14
+ * - que lo que hay fuera de un bloque acaba en `{` (un selector) o es una at-rule (`@import …;`);
15
+ * - que cada declaración de un bloque tiene su `:`.
16
+ *
17
+ * NO comprueba propiedades, valores ni selectores: un atributo que XOne no conoce se ignora en
18
+ * silencio, y eso es de `xone_atributos`, no de la forma.
19
+ */
20
+ import type { ResultadoXml } from "./xmlBienFormado.js";
21
+ export type ResultadoCss = ResultadoXml;
22
+ export declare function comprobarCss(entrada: string): ResultadoCss;
@@ -0,0 +1,28 @@
1
+ import { type McpPort, type ModelosPort, type SkillsPort, type VerifierPort } from "./ports.js";
2
+ /**
3
+ * Todo lo caro, junto y pasado por argumento.
4
+ *
5
+ * La regla dura: esto se PASA al construir, nunca se importa dentro de quien lo usa. Es lo
6
+ * que hace que el lazo entero se recorra sin API, sin red y sin el simulador.
7
+ */
8
+ export interface Deps {
9
+ modelos: ModelosPort;
10
+ skills: SkillsPort;
11
+ verifier: VerifierPort;
12
+ /** Declarado y sin cablear en la v1: el proyecto está en el cwd, no en CloudStudio. */
13
+ mcp: McpPort;
14
+ }
15
+ /** Todo dobles. La suite corre con esto, y `describe` lo canta entero. */
16
+ export declare function depsOffline(): Deps;
17
+ /**
18
+ * Qué hay montado, y qué de ello es de pega.
19
+ *
20
+ * Pura y sin efectos: no llama a ningún puerto, solo mira qué son. Por eso `xonecode
21
+ * describe` no necesita ni credenciales ni red.
22
+ *
23
+ * El verificador va PRIMERO y como `grave` por un motivo: un verificador de pega dice que
24
+ * todo está bien, así que es el doble que más daño hace pasando desapercibido.
25
+ */
26
+ export declare function describir(deps: Deps): string[];
27
+ /** Para el aviso del final del turno: los nombres de los puertos caros que son dobles. */
28
+ export declare function doblesGraves(deps: Deps): string[];