xonecode 0.38.44 → 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 (323) hide show
  1. package/dist/agent/cloudstudio/cloudstudioClient.d.ts +29 -0
  2. package/dist/agent/cloudstudio/cloudstudioMcp.d.ts +414 -0
  3. package/dist/agent/cloudstudio/conexionDeServidor.d.ts +37 -0
  4. package/dist/agent/cloudstudio/conexionDeServidor.js +63 -0
  5. package/dist/agent/cloudstudio/conexionDeServidor.js.map +1 -0
  6. package/dist/agent/cloudstudio/crearRama.d.ts +15 -0
  7. package/dist/agent/cloudstudio/crearRama.js +16 -0
  8. package/dist/agent/cloudstudio/crearRama.js.map +1 -0
  9. package/dist/agent/cloudstudio/descarga.d.ts +44 -0
  10. package/dist/agent/cloudstudio/manifiesto.d.ts +25 -0
  11. package/dist/agent/cloudstudio/ramaActiva.d.ts +24 -0
  12. package/dist/agent/cloudstudio/subida.d.ts +61 -0
  13. package/dist/agent/cloudstudio/subida.js +7 -1
  14. package/dist/agent/cloudstudio/subida.js.map +1 -1
  15. package/dist/agent/cloudstudio/validarTrasDescarga.d.ts +13 -0
  16. package/dist/agent/cloudstudio/zip.d.ts +13 -0
  17. package/dist/agent/conectores/conectoresEnDisco.d.ts +47 -0
  18. package/dist/agent/conectores/gestorJira.d.ts +50 -0
  19. package/dist/agent/conectores/gestorNotion.d.ts +45 -0
  20. package/dist/agent/conectores/proveedorDeConector.d.ts +43 -0
  21. package/dist/agent/conectores/servicioDeConectores.d.ts +112 -0
  22. package/dist/agent/config/authEnDisco.d.ts +43 -0
  23. package/dist/agent/config/catalogoModelos.d.ts +79 -0
  24. package/dist/agent/config/configEnDisco.d.ts +235 -0
  25. package/dist/agent/config/crearProyecto.d.ts +20 -0
  26. package/dist/agent/config/diagnosticoDeNodeEnMaquina.d.ts +44 -0
  27. package/dist/agent/config/ecoDeRazonamiento.d.ts +104 -0
  28. package/dist/agent/config/entorno.d.ts +83 -0
  29. package/dist/agent/config/fuentesEnRed.d.ts +12 -0
  30. package/dist/agent/config/gemini.d.ts +5 -0
  31. package/dist/agent/config/iconosEnRed.d.ts +10 -0
  32. package/dist/agent/config/identidadEnDisco.d.ts +27 -0
  33. package/dist/agent/config/modelos.d.ts +77 -0
  34. package/dist/agent/config/modelosDeMotor.d.ts +52 -0
  35. package/dist/agent/config/mudanzaEnDisco.d.ts +99 -0
  36. package/dist/agent/config/persona.d.ts +1 -0
  37. package/dist/agent/config/selectorEnMaquina.d.ts +35 -0
  38. package/dist/agent/config/settingsEnDisco.d.ts +206 -0
  39. package/dist/agent/config/versionEnDisco.d.ts +17 -0
  40. package/dist/agent/dispositivos/arranqueDeEmulador.d.ts +60 -0
  41. package/dist/agent/dispositivos/cajasDeMaqueta.d.ts +61 -0
  42. package/dist/agent/dispositivos/decodificarImagen.d.ts +21 -0
  43. package/dist/agent/dispositivos/descargaDeHerramientas.d.ts +44 -0
  44. package/dist/agent/dispositivos/dispositivosEnMaquina.d.ts +161 -0
  45. package/dist/agent/dispositivos/geometriaEnDisco.d.ts +17 -0
  46. package/dist/agent/dispositivos/hotswap.d.ts +194 -0
  47. package/dist/agent/dispositivos/instalacionEnMaquina.d.ts +156 -0
  48. package/dist/agent/dispositivos/juezVisual.d.ts +144 -0
  49. package/dist/agent/dispositivos/lanzamientoEnMaquina.d.ts +197 -0
  50. package/dist/agent/dispositivos/paqueteDelProyecto.d.ts +28 -0
  51. package/dist/agent/dispositivos/procesosEnMaquina.d.ts +154 -0
  52. package/dist/agent/dispositivos/recargaEnAparato.d.ts +30 -0
  53. package/dist/agent/dispositivos/sensorDeArranque.d.ts +42 -0
  54. package/dist/agent/exportarPdf.d.ts +72 -0
  55. package/dist/agent/grafo/aprendido.d.ts +28 -0
  56. package/dist/agent/grafo/arbolDeProyecto.d.ts +205 -0
  57. package/dist/agent/grafo/artefactosEnDisco.d.ts +35 -0
  58. package/dist/agent/grafo/atributosXone.d.ts +31 -0
  59. package/dist/agent/grafo/buscarIcono.d.ts +32 -0
  60. package/dist/agent/grafo/busquedaRegex.d.ts +56 -0
  61. package/dist/agent/grafo/codificacionDelProyecto.d.ts +7 -0
  62. package/dist/agent/grafo/compararCapturas.d.ts +22 -0
  63. package/dist/agent/grafo/copiarArtefacto.d.ts +64 -0
  64. package/dist/agent/grafo/criticaVisual.d.ts +60 -0
  65. package/dist/agent/grafo/describirImagen.d.ts +79 -0
  66. package/dist/agent/grafo/diferenciaDeCapturas.d.ts +33 -0
  67. package/dist/agent/grafo/ejecucionCancelable.d.ts +45 -0
  68. package/dist/agent/grafo/escriturasEnSerie.d.ts +31 -0
  69. package/dist/agent/grafo/excluirTools.d.ts +37 -0
  70. package/dist/agent/grafo/fuentesDeGoogle.d.ts +37 -0
  71. package/dist/agent/grafo/generarFondoSvg.d.ts +52 -0
  72. package/dist/agent/grafo/incorporarAdjunto.d.ts +98 -0
  73. package/dist/agent/grafo/lectorDeReferencias.d.ts +28 -0
  74. package/dist/agent/grafo/marcarCriteriosDelPlan.d.ts +47 -0
  75. package/dist/agent/grafo/memoriaDeProyecto.d.ts +15 -0
  76. package/dist/agent/grafo/navegacionXone.d.ts +60 -0
  77. package/dist/agent/grafo/opcionesDeFicheros.d.ts +23 -0
  78. package/dist/agent/grafo/perfiles.d.ts +225 -0
  79. package/dist/agent/grafo/proyecto.d.ts +450 -0
  80. package/dist/agent/grafo/skills.d.ts +181 -0
  81. package/dist/agent/grafo/traerDeLaMaquina.d.ts +60 -0
  82. package/dist/agent/grafo/unirSecciones.d.ts +20 -0
  83. package/dist/agent/grafo/validacionXone.d.ts +35 -0
  84. package/dist/agent/grafo/validarFicheroXone.d.ts +33 -0
  85. package/dist/agent/grafo/xoneAgent.d.ts +166 -0
  86. package/dist/agent/motores/motoresLocales.d.ts +87 -0
  87. package/dist/agent/motores/trueforge/capacidades.d.ts +183 -0
  88. package/dist/agent/motores/trueforge/convertirAP.d.ts +38 -0
  89. package/dist/agent/motores/trueforge/detencion.d.ts +70 -0
  90. package/dist/agent/motores/trueforge/esperas.d.ts +38 -0
  91. package/dist/agent/motores/trueforge/eventosTrueforge.d.ts +56 -0
  92. package/dist/agent/motores/trueforge/informesDeHijos.d.ts +48 -0
  93. package/dist/agent/motores/trueforge/medidaAutomatica.d.ts +37 -0
  94. package/dist/agent/motores/trueforge/memoriaDeEspecialistas.d.ts +60 -0
  95. package/dist/agent/motores/trueforge/memoriaTrueforge.d.ts +131 -0
  96. package/dist/agent/motores/trueforge/metricasTrueforge.d.ts +45 -0
  97. package/dist/agent/motores/trueforge/modeloExterno.d.ts +9 -0
  98. package/dist/agent/motores/trueforge/modeloLangchain.d.ts +69 -0
  99. package/dist/agent/motores/trueforge/notas.d.ts +48 -0
  100. package/dist/agent/motores/trueforge/proponerTareas.d.ts +30 -0
  101. package/dist/agent/motores/trueforge/recortes.d.ts +47 -0
  102. package/dist/agent/motores/trueforge/resumenSeguro.d.ts +33 -0
  103. package/dist/agent/motores/trueforge/sesionTrueforge.d.ts +273 -0
  104. package/dist/agent/motores/trueforge/skillsTrueforge.d.ts +16 -0
  105. package/dist/agent/motores/trueforge/toolsDeConectores.d.ts +36 -0
  106. package/dist/agent/motores/trueforge/toolsDeFichero.d.ts +146 -0
  107. package/dist/agent/motores/trueforge/toolsPropias.d.ts +38 -0
  108. package/dist/agent/motores/trueforge/traerDeStitch.d.ts +63 -0
  109. package/dist/agent/motores/trueforge/trueforge.d.ts +35 -0
  110. package/dist/agent/navegacion/estilosEnDisco.d.ts +41 -0
  111. package/dist/agent/navegacion/hechosEnDisco.d.ts +19 -0
  112. package/dist/agent/navegacion/indiceEnDisco.d.ts +50 -0
  113. package/dist/agent/navegacion/modeloDeProyecto.d.ts +86 -0
  114. package/dist/agent/planesEnDisco.d.ts +18 -0
  115. package/dist/agent/publicarPlan.d.ts +20 -0
  116. package/dist/agent/raizDelPaquete.d.ts +9 -0
  117. package/dist/agent/remoto/ngrokEnMaquina.d.ts +44 -0
  118. package/dist/agent/remoto/puenteWebSocket.d.ts +59 -0
  119. package/dist/agent/remoto/tunelNgrok.d.ts +31 -0
  120. package/dist/agent/renombrarSobre.d.ts +14 -0
  121. package/dist/agent/sesiones/adjuntosDeSesion.d.ts +64 -0
  122. package/dist/agent/sesiones/baseDeFichero.d.ts +9 -0
  123. package/dist/agent/sesiones/checkpointer.d.ts +146 -0
  124. package/dist/agent/sesiones/git.d.ts +66 -0
  125. package/dist/agent/sesiones/gitSync.d.ts +264 -0
  126. package/dist/agent/sesiones/memoriaDeHilo.d.ts +4 -0
  127. package/dist/agent/sesiones/modeloDelCambio.d.ts +7 -0
  128. package/dist/agent/sesiones/parcheEnTexto.d.ts +9 -0
  129. package/dist/agent/sesiones/sesionGit.d.ts +155 -0
  130. package/dist/agent/subagentes/actividadDeCodex.d.ts +8 -0
  131. package/dist/agent/subagentes/agentesEnDisco.d.ts +198 -0
  132. package/dist/agent/subagentes/consumoExterno.d.ts +83 -0
  133. package/dist/agent/subagentes/ejecutableEnWindows.d.ts +53 -0
  134. package/dist/agent/subagentes/escrituraDeCodex.d.ts +94 -0
  135. package/dist/agent/subagentes/escrituraDeOpencode.d.ts +67 -0
  136. package/dist/agent/subagentes/escrituraExterna.d.ts +419 -0
  137. package/dist/agent/subagentes/pluginDeSkills.d.ts +84 -0
  138. package/dist/agent/subagentes/subagenteCodex.d.ts +76 -0
  139. package/dist/agent/subagentes/subagenteExterno.d.ts +169 -0
  140. package/dist/agent/subagentes/subagenteOpencode.d.ts +126 -0
  141. package/dist/agent/tareas/aumentador.d.ts +99 -0
  142. package/dist/agent/tareas/juezDeTarea.d.ts +64 -0
  143. package/dist/agent/tareas/reflejoEnElGestor.d.ts +38 -0
  144. package/dist/agent/tareas/sondeoDelGestor.d.ts +49 -0
  145. package/dist/agent/tareas/tareasEnDisco.d.ts +141 -0
  146. package/dist/agent/trazaDeErroresEnDisco.d.ts +10 -0
  147. package/dist/agent/turno/depuracion.d.ts +1 -0
  148. package/dist/agent/turno/diagnosticoDeTools.d.ts +124 -0
  149. package/dist/agent/turno/ficherosDelProyecto.d.ts +10 -0
  150. package/dist/agent/turno/guionizado.d.ts +18 -0
  151. package/dist/agent/turno/informeDeTraza.d.ts +220 -0
  152. package/dist/agent/turno/inspectorDePrompt.d.ts +150 -0
  153. package/dist/agent/turno/instantanea.d.ts +16 -0
  154. package/dist/agent/turno/interrupts.d.ts +54 -0
  155. package/dist/agent/turno/juezDelTurnoConModelo.d.ts +26 -0
  156. package/dist/agent/turno/mensajes.d.ts +23 -0
  157. package/dist/agent/turno/normalizar.d.ts +15 -0
  158. package/dist/agent/turno/puente.d.ts +196 -0
  159. package/dist/agent/turno/registroDeFallos.d.ts +39 -0
  160. package/dist/agent/turno/resumenDeContexto.d.ts +269 -0
  161. package/dist/agent/turno/resumenDeTool.d.ts +33 -0
  162. package/dist/agent/turno/rubrica.d.ts +35 -0
  163. package/dist/agent/turno/sesionReal.d.ts +89 -0
  164. package/dist/agent/turno/textoDeTool.d.ts +19 -0
  165. package/dist/agent/turno/turnoReal.d.ts +210 -0
  166. package/dist/agent/turno/verificacion.d.ts +85 -0
  167. package/dist/agent/turno/verificador.d.ts +66 -0
  168. package/dist/bin.d.ts +2 -0
  169. package/dist/cli/acuseDeModelo.d.ts +18 -0
  170. package/dist/cli/aprobar.d.ts +162 -0
  171. package/dist/cli/config.d.ts +17 -0
  172. package/dist/cli/consola.d.ts +473 -0
  173. package/dist/cli/describe.d.ts +7 -0
  174. package/dist/cli/doctor.d.ts +8 -0
  175. package/dist/cli/fuentesDeDisco.d.ts +25 -0
  176. package/dist/cli/main.d.ts +291 -0
  177. package/dist/cli/markdown.d.ts +126 -0
  178. package/dist/cli/panel.d.ts +38 -0
  179. package/dist/cli/podar.d.ts +38 -0
  180. package/dist/cli/run.d.ts +30 -0
  181. package/dist/cli/spinner.d.ts +37 -0
  182. package/dist/cli/stdio.d.ts +94 -0
  183. package/dist/cli/tema.d.ts +68 -0
  184. package/dist/cli/tokens.d.ts +16 -0
  185. package/dist/cli/traza.d.ts +19 -0
  186. package/dist/cli/tui/app.d.ts +23 -0
  187. package/dist/cli/tui/aprobarTui.d.ts +46 -0
  188. package/dist/cli/tui/barra.d.ts +43 -0
  189. package/dist/cli/tui/correrTui.d.ts +119 -0
  190. package/dist/cli/tui/entrada.d.ts +14 -0
  191. package/dist/cli/tui/filas.d.ts +13 -0
  192. package/dist/cli/tui/logo.d.ts +20 -0
  193. package/dist/cli/tui/pielTui.d.ts +15 -0
  194. package/dist/cli/tui/raton.d.ts +68 -0
  195. package/dist/cli/tui/sidebar.d.ts +63 -0
  196. package/dist/cli/tui/store.d.ts +102 -0
  197. package/dist/cli/tui/tarjeta.d.ts +8 -0
  198. package/dist/cli/tui/temaInk.d.ts +67 -0
  199. package/dist/cli/tui/transcript.d.ts +32 -0
  200. package/dist/cli/verify.d.ts +9 -0
  201. package/dist/cli/wizardInicial.d.ts +59 -0
  202. package/dist/core/actos.d.ts +437 -0
  203. package/dist/core/adjuntos.d.ts +77 -0
  204. package/dist/core/agentes.d.ts +353 -0
  205. package/dist/core/analisisDeSesion.d.ts +63 -0
  206. package/dist/core/aprendido.d.ts +41 -0
  207. package/dist/core/artefactos.d.ts +74 -0
  208. package/dist/core/atributosXone.d.ts +53 -0
  209. package/dist/core/bitacora.d.ts +21 -0
  210. package/dist/core/cloudstudio.d.ts +168 -0
  211. package/dist/core/codificacion.d.ts +81 -0
  212. package/dist/core/comandoExterno.d.ts +49 -0
  213. package/dist/core/compararCapturas.d.ts +136 -0
  214. package/dist/core/conectores.d.ts +296 -0
  215. package/dist/core/config.d.ts +148 -0
  216. package/dist/core/contextos.d.ts +54 -0
  217. package/dist/core/convertirAP.d.ts +56 -0
  218. package/dist/core/copiaDeAvd.d.ts +44 -0
  219. package/dist/core/cssBienFormado.d.ts +22 -0
  220. package/dist/core/deps.d.ts +28 -0
  221. package/dist/core/descargas.d.ts +61 -0
  222. package/dist/core/descripcionDePantalla.d.ts +121 -0
  223. package/dist/core/descriptoresDeApp.d.ts +108 -0
  224. package/dist/core/diagnosticoDeNode.d.ts +51 -0
  225. package/dist/core/diff.d.ts +26 -0
  226. package/dist/core/diffDeColecciones.d.ts +54 -0
  227. package/dist/core/disenoVinculado.d.ts +17 -0
  228. package/dist/core/dispositivoDeSesion.d.ts +22 -0
  229. package/dist/core/dispositivoElegido.d.ts +17 -0
  230. package/dist/core/dispositivos.d.ts +469 -0
  231. package/dist/core/entrega.d.ts +341 -0
  232. package/dist/core/entrelazar.d.ts +48 -0
  233. package/dist/core/esfuerzo.d.ts +120 -0
  234. package/dist/core/esqueleto.d.ts +38 -0
  235. package/dist/core/estiloMedido.d.ts +70 -0
  236. package/dist/core/estilos.d.ts +76 -0
  237. package/dist/core/events.d.ts +218 -0
  238. package/dist/core/exportacion.d.ts +88 -0
  239. package/dist/core/fallos.d.ts +79 -0
  240. package/dist/core/fondosSvg.d.ts +115 -0
  241. package/dist/core/fotoDeColecciones.d.ts +45 -0
  242. package/dist/core/fuentes.d.ts +96 -0
  243. package/dist/core/geometriaDePantalla.d.ts +171 -0
  244. package/dist/core/gestorDeTareas.d.ts +295 -0
  245. package/dist/core/hechosDelProyecto.d.ts +70 -0
  246. package/dist/core/hotswap.d.ts +30 -0
  247. package/dist/core/iconos.d.ts +86 -0
  248. package/dist/core/identidadDeProveedor.d.ts +20 -0
  249. package/dist/core/idiomaDeLaRespuesta.d.ts +26 -0
  250. package/dist/core/imagenesDeDocumento.d.ts +40 -0
  251. package/dist/core/jsParaRhino.d.ts +3 -0
  252. package/dist/core/juezDelTurno.d.ts +95 -0
  253. package/dist/core/logDeDispositivo.d.ts +67 -0
  254. package/dist/core/memoria.d.ts +18 -0
  255. package/dist/core/metodoDeComparacionVisual.d.ts +20 -0
  256. package/dist/core/modelos.d.ts +198 -0
  257. package/dist/core/modoDeEscritura.d.ts +155 -0
  258. package/dist/core/motor.d.ts +43 -0
  259. package/dist/core/motoresLocales.d.ts +113 -0
  260. package/dist/core/mudanzaDeWorkspace.d.ts +112 -0
  261. package/dist/core/navegacion.d.ts +172 -0
  262. package/dist/core/notify.d.ts +77 -0
  263. package/dist/core/nucleoXone.d.ts +28 -0
  264. package/dist/core/panorama.d.ts +68 -0
  265. package/dist/core/paqueteDeSoporte.d.ts +100 -0
  266. package/dist/core/planDeSubida.d.ts +56 -0
  267. package/dist/core/planes.d.ts +53 -0
  268. package/dist/core/podaDeCheckpoint.d.ts +75 -0
  269. package/dist/core/ports.d.ts +1034 -0
  270. package/dist/core/puedeLanzarse.d.ts +181 -0
  271. package/dist/core/puertosDeAvd.d.ts +59 -0
  272. package/dist/core/recargaEnCaliente.d.ts +52 -0
  273. package/dist/core/referenciasDeImagen.d.ts +36 -0
  274. package/dist/core/remoto.d.ts +76 -0
  275. package/dist/core/repartoDeEncargo.d.ts +80 -0
  276. package/dist/core/rubrica.d.ts +78 -0
  277. package/dist/core/rutaVirtual.d.ts +29 -0
  278. package/dist/core/selectorDeCarpeta.d.ts +59 -0
  279. package/dist/core/serieDeEscrituras.d.ts +58 -0
  280. package/dist/core/settings.d.ts +421 -0
  281. package/dist/core/shellDeAgente.d.ts +177 -0
  282. package/dist/core/skills.d.ts +129 -0
  283. package/dist/core/stitch.d.ts +114 -0
  284. package/dist/core/tareas.d.ts +412 -0
  285. package/dist/core/tareasDelPlan.d.ts +123 -0
  286. package/dist/core/tareasEnElGestor.d.ts +117 -0
  287. package/dist/core/textos.d.ts +8 -0
  288. package/dist/core/topeAgotado.d.ts +55 -0
  289. package/dist/core/traerDeLaMaquina.d.ts +33 -0
  290. package/dist/core/trazaDeErrores.d.ts +83 -0
  291. package/dist/core/tunel.d.ts +45 -0
  292. package/dist/core/turno.d.ts +154 -0
  293. package/dist/core/validacionDeEscritura.d.ts +95 -0
  294. package/dist/core/verificacionDeSubida.d.ts +14 -0
  295. package/dist/core/version.d.ts +35 -0
  296. package/dist/core/xmlBienFormado.d.ts +23 -0
  297. package/dist/core/zipDeAdjunto.d.ts +28 -0
  298. package/dist/core/zipDeSkill.d.ts +74 -0
  299. package/dist/lib/tareaAutonoma.d.ts +36 -0
  300. package/dist/lib/tareaAutonoma.js +259 -0
  301. package/dist/lib/tareaAutonoma.js.map +1 -0
  302. package/dist/lib.d.ts +31 -0
  303. package/dist/lib.js +28 -0
  304. package/dist/lib.js.map +1 -0
  305. package/dist/vendor/hitl.d.ts +69 -0
  306. package/dist/vendor/skillLoaders/catalog.d.ts +27 -0
  307. package/dist/vendor/sqliteSaver.d.ts +22 -0
  308. package/dist/vendor/tokenTracking.d.ts +22 -0
  309. package/dist/web/servidor/arranque.d.ts +1372 -0
  310. package/dist/web/servidor/consolaDeTarea.d.ts +166 -0
  311. package/dist/web/servidor/consolaWeb.d.ts +142 -0
  312. package/dist/web/servidor/corredorDeTareas.d.ts +395 -0
  313. package/dist/web/servidor/datosDeCierre.d.ts +4 -0
  314. package/dist/web/servidor/interrupcion.d.ts +39 -0
  315. package/dist/web/servidor/pielWeb.d.ts +32 -0
  316. package/dist/web/servidor/puenteRemoto.d.ts +80 -0
  317. package/dist/web/servidor/servidor.d.ts +53 -0
  318. package/dist/web/servidor/sesiones.d.ts +342 -0
  319. package/dist/web/servidor/soporte.d.ts +65 -0
  320. package/dist/web/servidor/transporte.d.ts +2751 -0
  321. package/dist/web/servidor/vestibulo.d.ts +952 -0
  322. package/dist/web/servidor/visorOpenui.d.ts +33 -0
  323. package/package.json +9 -1
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Los alias de Claude Code, tal como los documenta su SDK instalado:
3
+ * «Model alias (e.g. 'fable', 'opus', 'sonnet', 'haiku') or full model ID».
4
+ *
5
+ * Alias y no ids pinchados: es lo que el producto ofrece justamente para que sobrevivan a
6
+ * sus versiones. Un `claude-opus-4-8` escrito aquí hoy se queda viejo solo, y el campo sigue
7
+ * aceptando un id entero para quien quiera fijar uno.
8
+ */
9
+ export declare const ALIAS_DE_CLAUDE_CODE: readonly ["opus", "sonnet", "haiku", "fable"];
10
+ /** Cómo se lee un modelo por el cable: lo justo para elegirlo. */
11
+ export interface ModeloDeMotor {
12
+ id: string;
13
+ /** Para leer. Sin él se usa el id: un nombre inventado sería peor que ninguno. */
14
+ nombre: string;
15
+ }
16
+ /** Cuánto se espera a que Codex conteste su lista antes de darlo por no disponible. */
17
+ export declare const TOPE_DE_MODELOS_MS = 15000;
18
+ export interface DependenciasDeModelos {
19
+ /** Se le pregunta a Codex. Entra por parámetro: `npm test` no lanza procesos. */
20
+ preguntarACodex?: () => Promise<ModeloDeMotor[]>;
21
+ /** Y a OpenCode, por lo mismo. */
22
+ preguntarAOpencode?: () => Promise<ModeloDeMotor[]>;
23
+ }
24
+ export declare function modelosDeMotor(motor: string, deps?: DependenciasDeModelos): Promise<{
25
+ modelos: ModeloDeMotor[];
26
+ error?: string;
27
+ }>;
28
+ /**
29
+ * Lo que se guarda de la respuesta de `model/list`, y solo eso.
30
+ *
31
+ * Trae además esfuerzos de razonamiento, modalidades de entrada, tramos de servicio y avisos
32
+ * de crédito de la cuenta. Nada de eso hace falta para elegir un modelo, y arrastrarlo por
33
+ * el cable sería llevar datos de la cuenta de alguien sin ningún motivo — la misma regla con
34
+ * la que `proyectosDeResultado` se queda con dos campos y deja fuera el correo del
35
+ * propietario.
36
+ *
37
+ * Los que el propio Codex marca como `hidden` no se ofrecen: es él quien dice que no son
38
+ * para elegir.
39
+ */
40
+ export declare function modelosDeRespuestaDeCodex(respuesta: unknown): ModeloDeMotor[];
41
+ /**
42
+ * Los modelos de OpenCode: se los pregunta a él con `opencode models`.
43
+ *
44
+ * Una línea por modelo, con la forma `proveedor/id` — que es exactamente lo que su campo
45
+ * `model` de configuración espera, así que no hay que componer nada. Se le pregunta en vez de
46
+ * escribir una tabla por el mismo motivo que a Codex: su catálogo cambia con cada versión y
47
+ * con las credenciales que el usuario tenga, y una lista a mano produciría un modelo que el
48
+ * usuario elige y el hijo rechaza.
49
+ *
50
+ * No hace falta ni servidor ni sesión: es un comando que imprime y termina.
51
+ */
52
+ export declare function modelosDeSalidaDeOpencode(salida: string): ModeloDeMotor[];
@@ -0,0 +1,99 @@
1
+ /**
2
+ * La mudanza de una vez de las copias locales que siguen en el reparto VIEJO
3
+ * (`<base>/<entorno>/workspace/<proyecto>`) al de ahora (`<workspace>/<entorno>/<proyecto>`).
4
+ *
5
+ * **No es cosmética, y por eso se hace sola.** `dentroDelWorkspace` es lo que decide si el
6
+ * harness puede commitear al cerrar cada turno, y compara la raíz contra el workspace: con
7
+ * el reparto nuevo, una copia que se quedara en el sitio viejo dejaría de estar dentro y los
8
+ * commits por turno se pararían EN SILENCIO — que es exactamente el fallo mudo que este repo
9
+ * persigue en todas partes. Dejarlas donde están no era una opción; dejarlas y avisar,
10
+ * tampoco, porque el aviso saldría en cada arranque para siempre.
11
+ *
12
+ * La decisión de QUÉ se muda es pura y vive en `core/mudanzaDeWorkspace.ts`. Aquí solo está
13
+ * lo que toca disco: mover, reescribir los dos almacenes con raíces absolutas y CONTARLO.
14
+ */
15
+ import { planDeCambioDeBase, type Mudanza } from "../../core/mudanzaDeWorkspace.js";
16
+ export interface ResultadoDeMudanza {
17
+ mudadas: number;
18
+ chocadas: number;
19
+ }
20
+ export declare function mudarWorkspaceLegado(opciones: {
21
+ /** La casa donde viven `settings.json` y `tareas/indice.json`. Inyectable por los tests. */
22
+ casa?: string;
23
+ /** La base con el reparto viejo: `settings.workspace` si estaba puesto, o `~/.xonecode`. */
24
+ legado: string;
25
+ /** El workspace de ahora. */
26
+ workspace: string;
27
+ entornos: readonly string[];
28
+ /** Al TERMINAL y no al cable: por ahí viajan rutas de la máquina (`sinRutas`). */
29
+ escribir: (texto: string) => void;
30
+ /** Cómo se mueve una copia. Por omisión `renameSync`; entra por parámetro porque el fallo
31
+ * que importa —EXDEV, un workspace en otro volumen— no se puede provocar en un temporal. */
32
+ mover?: (desde: string, hacia: string) => void;
33
+ }): ResultadoDeMudanza;
34
+ /** Las carpetas que cuelgan de una ruta: la foto de disco que pide `planDeCambioDeBase`. */
35
+ export declare function planDeCambioDeBaseEnDisco(opciones: {
36
+ desde: string;
37
+ hacia: string;
38
+ casaXonecode: string;
39
+ }): ReturnType<typeof planDeCambioDeBase>;
40
+ /** En qué va una mudanza de base. Sin rutas: viaja por el cable tal cual. */
41
+ export interface ProgresoDeMudanza {
42
+ fase: "comprobar" | "copiar" | "verificar" | "borrar";
43
+ proyecto?: string;
44
+ entorno?: string;
45
+ indice?: number;
46
+ total?: number;
47
+ }
48
+ export type ResultadoDeCambioDeBase = {
49
+ estado: "hecho";
50
+ mudadas: number;
51
+ restos: string[];
52
+ avisos: string[];
53
+ } | {
54
+ estado: "rechazado";
55
+ motivo: string;
56
+ };
57
+ /** Lo que ocupa lo que se va a mudar, en megas redondeados hacia arriba: para el aviso. */
58
+ export declare function megasDeLasMudanzas(mudanzas: readonly Mudanza[]): Promise<number>;
59
+ /**
60
+ * CAMBIAR EL WORKSPACE MUDANDO lo que hay dentro: copiar, VERIFICAR y solo entonces borrar el
61
+ * origen. La decisión de QUÉ se muda es pura (`core/mudanzaDeWorkspace.ts#planDeCambioDeBase`);
62
+ * aquí está lo que toca disco, en un orden que no deja nada a medias:
63
+ *
64
+ * 1. **comprobar**: el destino se puede escribir y cabe lo que se copia, con margen;
65
+ * 2. **copiar** cada proyecto a una carpeta OCULTA hermana de su destino
66
+ * (`.<proyecto>.llegando-<uuid>`). Se COPIA siempre, también en el mismo disco: un
67
+ * `rename` entre volúmenes da EXDEV, y así el origen sigue intacto hasta el final;
68
+ * 3. **verificar** cada copia contra su original, fichero a fichero con SHA-256 — la igualdad
69
+ * byte a byte es más fuerte que cualquier comprobación de git, y `git fsck` abortaría por
70
+ * defectos que ya traía el origen. Una sola diferencia descarta TODAS las copias;
71
+ * 4. con todo verificado, las ocultas pasan a su nombre, y SOLO ENTONCES se guarda el
72
+ * workspace nuevo y se reescribe `proyecto.raiz` del índice de tareas;
73
+ * 5. **borrar** el origen por lápida (renombrar y luego borrar, el molde de
74
+ * `borrarCopiaDeProyecto`). Si algo lo bloquea, el cambio YA está hecho y se dice como
75
+ * `restos`: deshacerlo con la base nueva escrita sería peor.
76
+ *
77
+ * Hasta el paso 4 la base vieja es la válida y en el destino solo hay carpetas ocultas, que se
78
+ * limpian. Quien llama garantiza que nada escribe en la base mientras tanto
79
+ * (`vestibulo.mudarWorkspace`).
80
+ */
81
+ export declare function mudarBaseDeWorkspace(opciones: {
82
+ desde: string;
83
+ hacia: string;
84
+ mudanzas: readonly Mudanza[];
85
+ /** `~/.xonecode`: donde vive el índice de tareas. */
86
+ casaXonecode: string;
87
+ guardarWorkspace: (ruta: string) => void;
88
+ progreso?: (p: ProgresoDeMudanza) => void;
89
+ /** Cómo se copia un proyecto. Inyectable: una copia que sale MAL no se provoca a mano. */
90
+ copiar?: (desde: string, hacia: string) => Promise<void>;
91
+ /** Bytes libres en el destino, o ausente si no se sabe. Inyectable por los tests. */
92
+ espacioLibre?: (ruta: string) => Promise<number | undefined>;
93
+ /** Cómo se renombra el origen a su lápida. Inyectable: un fichero bloqueado por otro
94
+ * programa no se provoca en un temporal. */
95
+ enterrar?: (desde: string, lapida: string) => Promise<void>;
96
+ /** Cómo se retira una copia ya puesta en el destino al deshacer el paso 4. Inyectable por lo
97
+ * mismo que `enterrar`: una carpeta que no se deja borrar no se provoca en un temporal. */
98
+ retirar?: (copia: string) => Promise<void>;
99
+ }): Promise<ResultadoDeCambioDeBase>;
@@ -0,0 +1 @@
1
+ export declare function nombreDePersona(cwd: string): string | undefined;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Abrir el selector de carpeta NATIVO de esta máquina. La regla de QUÉ comando y cómo se lee
3
+ * su respuesta es pura y vive en `core/selectorDeCarpeta.ts`; aquí solo está lanzarlo.
4
+ */
5
+ import { type ComandoDeSelector } from "../../core/selectorDeCarpeta.js";
6
+ /** ¿Hay selector en este sistema? Es lo que decide si se OFRECE el botón: un botón que no
7
+ * hace nada es peor que no tenerlo, y el campo de texto ya resuelve el caso. */
8
+ export declare function haySelectorDeCarpeta(plataforma?: string): boolean;
9
+ /**
10
+ * La carpeta que la persona elija, o AUSENTE.
11
+ *
12
+ * **Ausente lo cubre todo lo que no es una elección**: cancelar, que el comando no esté, que
13
+ * falle, o que se agote el tope. No se distinguen a propósito — `osascript` sale con código 1
14
+ * tanto si cierras el diálogo como si revienta, así que afirmar cuál de las dos fue sería
15
+ * inventarlo. Lo que la pantalla necesita saber es si hay carpeta nueva, y eso sí se sabe.
16
+ *
17
+ * **Nunca LANZA.** Esto cuelga de un mensaje del cable, y una excepción aquí subiría por el
18
+ * manejador de la petición.
19
+ */
20
+ export declare function elegirCarpetaEnMaquina(opciones?: {
21
+ desde?: string;
22
+ plataforma?: string;
23
+ lanzar?: (comando: ComandoDeSelector) => Promise<string>;
24
+ }): Promise<string | undefined>;
25
+ /**
26
+ * Abre, en el explorador de ficheros de ESTA máquina, la carpeta que contiene `ruta`.
27
+ *
28
+ * Accesorio, como `abrirEnSistema` al arrancar la web: nunca lanza, no espera respuesta ni
29
+ * mira el código de salida —`explorer.exe` sale con uno no-cero también cuando funciona—, y
30
+ * `detached`+`unref` para no dejar el proceso padre esperando a una ventana del sistema.
31
+ */
32
+ export declare function abrirCarpetaDelSistema(ruta: string, plataforma?: string): void;
33
+ /** Abre ESA carpeta (no la que la contiene) en el explorador de ficheros. El mismo trato
34
+ * accesorio que `abrirCarpetaDelSistema`: nunca lanza ni espera. */
35
+ export declare function abrirDirectorioDelSistema(carpeta: string, plataforma?: string): void;
@@ -0,0 +1,206 @@
1
+ /**
2
+ * El ESCRITOR de `~/.xonecode/settings.json` (el lector puro está en `core/settings.ts`).
3
+ *
4
+ * Misma disciplina que `authEnDisco.ts`: una escritura nunca destruye lo que ya había,
5
+ * así que la base de la fusión es el objeto CRUDO tal cual (no el resultado de
6
+ * `validarSettings`, que descarta en silencio entradas raras) y ante un JSON roto se
7
+ * PARA sin escribir, en vez de recuperar el fichero por su cuenta. La mecánica de
8
+ * escritura —temporal + `renameSync`— es la de `agent/cloudstudio/cloudstudioMcp.ts#guardarEstado`:
9
+ * un `writeFileSync` a medias dejaría un `settings.json` truncado si el proceso muere a
10
+ * mitad de escritura, y el rename es atómico.
11
+ */
12
+ import type { Aviso } from "../../core/config.js";
13
+ import { type ModoDeEscritura } from "../../core/modoDeEscritura.js";
14
+ import type { DispositivoDeLaSesion } from "../../core/dispositivoElegido.js";
15
+ import { AjustesDeDispositivos, Entorno, Settings, type ViaRemota } from "../../core/settings.js";
16
+ /** Un `settings.json` existente que no se puede fusionar: no se escribe nada encima. */
17
+ export declare class SettingsRotosEnDisco extends Error {
18
+ }
19
+ /**
20
+ * `casa` es inyectable (por omisión `homedir()`) porque los tests no pueden tocar el
21
+ * `~/.xonecode` real — se resuelve en cada llamada, nunca se cachea, por la misma razón
22
+ * que `configEnDisco.ts#rutaConfigGlobal`: un test que cambia la home después del import
23
+ * vería si no la ruta vieja.
24
+ */
25
+ export declare function rutaSettings(casa?: string): string;
26
+ /**
27
+ * Sin fichero, settings vacíos y sin avisos: no hay nada que crear solo por leer.
28
+ *
29
+ * Igual que `cargar()` en `configEnDisco.ts`, devuelve `{ settings, avisos }` — el JSON
30
+ * roto y la credencial colada NO lanzan, se cuentan como aviso: un fallo del área de
31
+ * CloudStudio no puede tumbar el arranque de la consola (invariante de `CLAUDE.md`), y
32
+ * `validarSettings` ya no lanza para una credencial, solo para JSON-que-no-parsea, que
33
+ * aquí se atrapa igual que en `configEnDisco.ts`.
34
+ */
35
+ export declare function cargarSettings(casa?: string): {
36
+ settings: Settings;
37
+ avisos: Aviso[];
38
+ };
39
+ /** Registra o sustituye un entorno por `id`, sin tocar los demás ni el resto del fichero. */
40
+ export declare function guardarEntorno(casa: string | undefined, entorno: Entorno): {
41
+ ruta: string;
42
+ };
43
+ /**
44
+ * Guarda qué destinos se miran, sin tocar nada más del fichero.
45
+ *
46
+ * Se escribe el objeto ENTERO y no una fusión campo a campo: son cuatro interruptores (y las
47
+ * dos rutas) que la ventana manda juntos, y fusionar dejaría vivo un `ios: false` de una versión anterior
48
+ * que la persona acaba de apagar en la interfaz sin saber que seguía ahí. Un objeto sin
49
+ * ningún campo se guarda como ausencia —`{}` y «no lo he dicho» significan lo mismo: mirar
50
+ * todo— para no dejar basura en el fichero.
51
+ */
52
+ export declare function guardarDispositivos(casa: string | undefined, ajustes: AjustesDeDispositivos): {
53
+ ruta: string;
54
+ };
55
+ /**
56
+ * Cambia UN AVD. `sinVentana: false` y `clon: false` borran su clave; un AVD sin nada desaparece.
57
+ * `copiaDe`/`clon` son la procedencia: se guardan al crear desde «Copia de» y no se piden por el cable.
58
+ */
59
+ export declare function guardarAjusteDeAvd(casa: string | undefined, avd: string, cambio: {
60
+ puerto?: number;
61
+ sinVentana?: boolean;
62
+ copiaDe?: string;
63
+ clon?: boolean;
64
+ }): {
65
+ ruta: string;
66
+ };
67
+ /**
68
+ * Quita TODO lo que se recordaba de un AVD (puerto, sin ventana, procedencia): al eliminarlo, su
69
+ * puerto tiene que quedar libre para el siguiente. Uno que no consta no toca el fichero; lo que
70
+ * queda vacío (`avds`, `dispositivos`) desaparece, como en `guardarAjusteDeAvd`.
71
+ */
72
+ export declare function quitarAjustesDeAvd(casa: string | undefined, avd: string): {
73
+ ruta: string;
74
+ };
75
+ /** La siembra de puertos: solo AÑADE, un puerto que ya esté en disco no se mueve. */
76
+ export declare function guardarPuertosAsignados(casa: string | undefined, asignados: Record<string, number>): {
77
+ ruta: string;
78
+ };
79
+ /**
80
+ * La siembra de puertos de los móviles físicos (IXCODE-32, `core/puertosDeAvd.ts`): solo AÑADE,
81
+ * el de una serie que ya tiene uno no se mueve.
82
+ */
83
+ export declare function guardarPuertosDeFisicos(casa: string | undefined, asignados: Record<string, number>): {
84
+ ruta: string;
85
+ };
86
+ /**
87
+ * Guarda el tope de concurrencia de la cola de tareas, sin tocar nada más del fichero.
88
+ *
89
+ * Se acota a `0..TOPE_DE_CONCURRENCIA_DE_TAREAS` aquí y no solo en el cliente: el selector
90
+ * de Ajustes ya lo acota antes de mandarlo, pero `settings.json` no se fía de quien
91
+ * escribe — es el mismo criterio que `validarConcurrenciaDeTareas` aplica al LEER, aplicado
92
+ * ahora al escribir. Trunca en vez de rechazar: un decimal o un valor fuera de rango es un
93
+ * fallo de quien llama y no una razón para dejar el fichero como estaba: aquí solo hay un
94
+ * valor, así que truncarlo no puede aplastar la decisión de nadie más.
95
+ */
96
+ export declare function guardarConcurrenciaDeTareas(casa: string | undefined, concurrencia: number): {
97
+ ruta: string;
98
+ };
99
+ /**
100
+ * Guarda el interruptor de depuración, sin tocar nada más del fichero.
101
+ *
102
+ * `true` BORRA la clave en vez de escribirla: ausente y encendida significan lo mismo
103
+ * mientras dure esta etapa de pruebas (`core/settings.ts#Settings.depurar`), y guardar un
104
+ * `true` explícito solo ensuciaría el fichero de quien nunca tocó nada.
105
+ */
106
+ export declare function guardarDepurar(casa: string | undefined, depurar: boolean): {
107
+ ruta: string;
108
+ };
109
+ /**
110
+ * Guarda el modo con que nacen las sesiones nuevas (IXCODE-31), sin tocar nada más del fichero.
111
+ * `supervisado` BORRA la clave: es la omisión, y escribirla solo ensuciaría el fichero.
112
+ */
113
+ export declare function guardarModoPorDefecto(casa: string | undefined, modo: ModoDeEscritura): {
114
+ ruta: string;
115
+ };
116
+ /**
117
+ * Guarda el interruptor de la sesión remota, su vía y el dominio de ngrok, fundidos en el `remoto`
118
+ * que ya hay (lo que no se nombra, intacto). `dominio: null` lo QUITA. La forma la comprueba quien
119
+ * llama (`motivoDeDominioInaceptable`) y la vuelve a comprobar `validarSettings` al leer.
120
+ * `habilitado` solo se escribe si se PIDE (el interruptor de Ajustes): guardar la vía o el dominio
121
+ * no lo inventa, porque el interruptor puede venir de `XONECODE_REMOTO=1`.
122
+ */
123
+ export declare function guardarAjustesDeRemoto(casa: string | undefined, cambio: {
124
+ habilitado?: boolean;
125
+ via?: ViaRemota;
126
+ dominio?: string | null;
127
+ }): {
128
+ ruta: string;
129
+ };
130
+ /**
131
+ * Guarda el modelo de OpenCode de Ajustes → Motores locales, sin tocar nada más del fichero.
132
+ * `undefined` BORRA la clave («sin modelo elegido»). La forma la comprueba quien llama
133
+ * (`motivoDeModeloDeMotorInaceptable`), y la vuelve a comprobar `validarSettings` al leer.
134
+ */
135
+ export declare function guardarModeloDeOpencode(casa: string | undefined, modelo: string | undefined): {
136
+ ruta: string;
137
+ };
138
+ /**
139
+ * El modelo de OpenCode guardado, leído en CADA uso (se cambia desde Ajustes con la consola en
140
+ * marcha). Un `settings.json` roto no tumba un encargo: es «no hay modelo elegido».
141
+ */
142
+ export declare function modeloDeOpencodeGuardado(casa?: string): string | undefined;
143
+ /**
144
+ * Guarda el aparato con que nacen las sesiones nuevas (IXCODE-51), sin tocar nada más del fichero.
145
+ * `undefined` BORRA la clave: «ninguno» es la omisión.
146
+ */
147
+ export declare function guardarDispositivoPorDefecto(casa: string | undefined, dispositivo: DispositivoDeLaSesion | undefined): {
148
+ ruta: string;
149
+ };
150
+ /** Guarda solo la base del workspace, sin tocar la lista de entornos. */
151
+ export declare function guardarWorkspace(casa: string | undefined, base: string): {
152
+ ruta: string;
153
+ };
154
+ /**
155
+ * Dónde caen las copias cuando nadie ha configurado `settings.workspace`. Vive aquí y no en el
156
+ * vestíbulo desde que también la necesita `cli/` (la bajada que vacía la copia solo lo hace
157
+ * dentro del workspace), y `cli/` no importa de `web/`. El vestíbulo la reexporta, con el
158
+ * porqué de la carpeta propia.
159
+ */
160
+ export declare function baseDeWorkspacePorOmision(): string;
161
+ /** La base del workspace EN VIGOR: la de Ajustes si la hay, y si no la de omisión. Se lee en
162
+ * cada uso, nunca se captura: se cambia desde Ajustes con la consola en marcha. */
163
+ export declare function baseDeWorkspace(): string;
164
+ /**
165
+ * Quita un entorno por `id`, sin tocar los demás ni el resto del fichero: el mismo molde que
166
+ * `guardarEntorno` (leer crudo, filtrar, escritura atómica). Las copias bajadas NO se tocan.
167
+ */
168
+ export declare function olvidarEntornoDeSettings(casa: string | undefined, id: string): {
169
+ ruta: string;
170
+ };
171
+ /** Las carpetas de proyecto bajo `<workspace>/<entorno>/`, o `undefined` si no se pueden mirar
172
+ * (ausente es «no consta», que no es cero). Sin la basura del sistema. */
173
+ export declare function copiasDeEntorno(base: string, entorno: string): number | undefined;
174
+ /**
175
+ * Borra `<workspace>/<entorno>/` ENTERA: las copias de todos sus proyectos, con su trabajo sin
176
+ * subir, sus sesiones y su git. Solo lo pide quitar un entorno con la casilla marcada y el
177
+ * nombre escrito, y quien llama ya ha comprobado que no hay nada abierto ni tareas vivas.
178
+ *
179
+ * La barrera es la de siempre y va AQUÍ, no solo en quien llama: el id pasa por
180
+ * `segmentoSeguro` (un id de un solo segmento, sin `..`), y la carpeta tiene que estar dentro
181
+ * del workspace por el TEXTO y por el camino REAL — un enlace que apuntara fuera pasaría la
182
+ * primera. Devuelve cuántas carpetas de proyecto había.
183
+ */
184
+ export declare function borrarCopiasDeEntorno(base: string, entorno: string): number;
185
+ /**
186
+ * Borra la copia local de UN proyecto, `<workspace>/<entorno>/<proyecto>/`, entera: su git, su
187
+ * `.xonecode/` (sesiones, `checkpoint.sqlite`, artefactos) y lo que no se haya subido. Lo de
188
+ * CloudStudio no se toca; el proyecto vuelve a estar «sin descargar».
189
+ *
190
+ * Las barreras son las de `borrarCopiasDeEntorno`, y van AQUÍ por lo mismo: la ruta se compone
191
+ * con `rutaDeWorkspace` (dos segmentos por `segmentoSeguro`, sin `..`) y se comprueba dentro
192
+ * del workspace por el TEXTO y por el camino REAL — un enlace que apuntara fuera pasaría la
193
+ * primera. Quien llama ya ha cerrado la consola de esa raíz y comprobado que nada escribe ahí.
194
+ *
195
+ * **Primero se RENOMBRA a una lápida y después se borra**, y es lo que hace que un fallo no
196
+ * deje una copia a medias. `rmSync` borra fichero a fichero: si algo tiene un fichero abierto
197
+ * dentro —otro proceso de xonecode con su checkpointer, un editor, el antivirus—, en Windows
198
+ * revienta a mitad, con los `.xne` y el git ya borrados y la carpeta todavía en su sitio, que
199
+ * se abriría como un proyecto roto. Renombrar una carpeta con un fichero abierto dentro falla
200
+ * ANTES de tocar nada, así que la negativa es verdad. La lápida empieza por punto: ni
201
+ * `copiasDeEntorno` ni la barra la cuentan como proyecto.
202
+ *
203
+ * Devuelve `"nada"` si no había copia, `"borrada"`, o `"restos"` si ya salió de su sitio pero
204
+ * quedó algo de la lápida por borrar — el proyecto está «sin descargar» igual.
205
+ */
206
+ export declare function borrarCopiaDeProyecto(base: string, entorno: string, proyecto: string): "nada" | "borrada" | "restos";
@@ -0,0 +1,17 @@
1
+ /**
2
+ * De dónde sale lo que `core/version.ts` imprime: el `package.json` y, si esto es una copia
3
+ * de git, su commit y si hay cambios sin commitear.
4
+ *
5
+ * Vive en `agent/` y no en `core/` por la regla de siempre: aquí se toca el disco y se lanza
6
+ * un proceso. Lo que decide cómo se DICE es puro y está al otro lado.
7
+ */
8
+ import type { VersionEnMarcha } from "../../core/version.js";
9
+ /**
10
+ * Qué versión está corriendo. **Nunca lanza**: es una línea informativa, y un arranque que
11
+ * reventara por no poder leer su propio commit sería absurdo.
12
+ *
13
+ * El `git` se llama con `cwd` en la raíz del PAQUETE —no en la del usuario—, porque lo que
14
+ * se pregunta es con qué código corre xonecode y no qué hay en su proyecto. Con un tope
15
+ * corto: esto va en el camino del arranque, y un git colgado no puede retrasarlo.
16
+ */
17
+ export declare function versionEnMarcha(raiz?: string): VersionEnMarcha;
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Arrancar un emulador de Android desde xonecode.
3
+ *
4
+ * Hasta ahora la receta lo confesaba —«para arrancarlo: `emulator -avd pixel8`… arrancarlo
5
+ * desde esta ventana todavía no está cableado»— y la interfaz no prometía botón. Esto es ese
6
+ * botón, y tiene dos particularidades que lo separan de todo lo demás de esta pantalla.
7
+ *
8
+ * **1. Un emulador no TERMINA, así que no puede ocupar la ranura del único trabajo.** La
9
+ * receta de instalación corre con `crearEjecutor`, que vigila el silencio y espera el cierre
10
+ * del proceso (`TOPE_SIN_SALIDA_MS`); un emulador se queda vivo por definición, así que por
11
+ * ahí bloquearía la máquina para siempre. Se lanza DESPEGADO y no se espera su cierre: lo que
12
+ * se espera es que el aparato APAREZCA.
13
+ *
14
+ * **2. «Lanzado» y «arrancado» son dos cosas, y manda la MEDIDA.** Es la misma disciplina que
15
+ * ya aplica la receta —«la foto nueva dice si el paso quedó hecho, no el código de salida»— y
16
+ * aquí es más literal todavía: `emulator` devuelve el control enseguida y la ventana de Android
17
+ * tarda en aparecer. Así que se sondea `adb devices` hasta que el emulador contesta con SU
18
+ * nombre de AVD, que es el único dato que lo ata a lo que se pidió arrancar
19
+ * (`core/dispositivos.ts#nombreDeAvdDeConsola`). Sin esa comprobación, arrancar `pixel8`
20
+ * mientras otro emulador se levantaba diría «ya está» por el aparato equivocado.
21
+ */
22
+ import { type DependenciasDeDeteccion } from "./dispositivosEnMaquina.js";
23
+ import { type Lanzar } from "./procesosEnMaquina.js";
24
+ /**
25
+ * Cuánto se espera a que el aparato aparezca.
26
+ *
27
+ * Un arranque en frío de un AVD con `google_apis` tarda decenas de segundos en esta máquina, y
28
+ * con la caché del sistema fría bastante más. Generoso a propósito: cortar pronto diría «no
29
+ * arrancó» de un emulador que estaba arrancando, que es la mentira que este sondeo existe para
30
+ * evitar. Y el proceso sigue vivo cuando el plazo vence — lo que se acota es la ESPERA, no el
31
+ * trabajo, igual que en el resto del repo.
32
+ */
33
+ export declare const TOPE_DE_ARRANQUE_MS = 180000;
34
+ /** Cada cuánto se pregunta. `adb devices` es barato una vez que el demonio está en marcha. */
35
+ export declare const ESPERA_ENTRE_SONDEOS_MS = 2000;
36
+ export interface ResultadoDeArranque {
37
+ ok: boolean;
38
+ /** Una línea, siempre: un fallo mudo aquí sería un botón que no hace nada. */
39
+ detalle: string;
40
+ }
41
+ export interface DependenciasDeArranque extends DependenciasDeDeteccion {
42
+ /** El `spawn` despegado. Por omisión el único del repo (`procesosEnMaquina.ts#lanzarReal`). */
43
+ lanzar?: Lanzar;
44
+ /** La espera entre sondeos, inyectable: los tests no pueden tardar tres minutos. */
45
+ esperar?: (ms: number) => Promise<void>;
46
+ }
47
+ /**
48
+ * Arranca el AVD `avd` y espera a que el aparato aparezca.
49
+ *
50
+ * **Nunca lanza**: un botón de esta ventana no puede tumbar el cable, así que todo sale por
51
+ * `ResultadoDeArranque` con su línea.
52
+ */
53
+ export declare function arrancarEmulador(avd: string, deps?: DependenciasDeArranque, opciones?: {
54
+ sinVentana?: boolean;
55
+ }): Promise<ResultadoDeArranque>;
56
+ /**
57
+ * Para un emulador por su consola. Sin ventana no hay nada que cerrar: esto es lo que hace de
58
+ * botón. Nunca lanza; la serie se cierra por forma porque es un argumento de proceso.
59
+ */
60
+ export declare function pararEmulador(serie: string, deps?: DependenciasDeDeteccion): Promise<ResultadoDeArranque>;
@@ -0,0 +1,61 @@
1
+ import type { MaquetaMedida } from "../../core/geometriaDePantalla.js";
2
+ /** Lo que tarda como mucho un render: con red lenta, Tailwind y las fuentes son unos segundos. */
3
+ export declare const TOPE_DE_RENDER_MS = 45000;
4
+ /**
5
+ * Qué se mide de la maqueta: los TEXTOS que se ven, cada uno con su caja. Se ejecuta DENTRO de la página (se
6
+ * inyecta con `toString()`), así que es JavaScript que el navegador entiende tal cual y no puede usar nada de fuera.
7
+ * Exportada para probarla con un DOM de pruebas.
8
+ *
9
+ * Antes se medían solo los `<button>`, cada uno con TODO su texto pegado. En la calculadora valía —cada tecla es un
10
+ * botón con un texto—, pero en una pantalla de tarjetas (Maset) cada tarjeta es un botón con título, badge,
11
+ * subtítulo y contador dentro: salía UN elemento «ENTREGAS PRIORIDAD Reparto de pedidos… 12 pend.» que no coincide
12
+ * con ningún control del aparato (BLOQUEANTE falso), y todo lo que no es botón —cabecera, banda, sección, pie— no se
13
+ * veía. Ahora:
14
+ * - un botón con UN texto (sin contar los iconos de Material) es un elemento, con la caja del BOTÓN: su forma es la
15
+ * de la tecla, no la de las letras;
16
+ * - un botón con VARIOS textos se parte en ellos;
17
+ * - fuera de los botones, cada elemento con texto propio es uno.
18
+ * Cada uno dice si es un botón (`boton`): lo que no lo es y no tiene letras es un dato de ejemplo («12», «09:41»).
19
+ */
20
+ export declare function medirElementos(doc: any): Array<{
21
+ texto: string;
22
+ caja: {
23
+ x: number;
24
+ y: number;
25
+ ancho: number;
26
+ alto: number;
27
+ };
28
+ boton?: true;
29
+ cajaDelTexto?: {
30
+ x: number;
31
+ y: number;
32
+ ancho: number;
33
+ alto: number;
34
+ };
35
+ }>;
36
+ /** La escala de una imagen de maqueta: una exportada a 2x o 3x se mide a su tamaño en puntos. Pura. */
37
+ export declare function viewportDeMaqueta(anchoPng: number, altoPng: number): {
38
+ ancho: number;
39
+ alto: number;
40
+ };
41
+ /** El ancho y el alto de un PNG o un JPEG, de su cabecera. `undefined` si no se sabe. Pura. */
42
+ export declare function medidasDeImagen(bytes: Buffer): {
43
+ ancho: number;
44
+ alto: number;
45
+ } | undefined;
46
+ /** Saca la medida del DOM que vuelca Chrome. Pura. */
47
+ export declare function medidaDelDom(dom: string): (MaquetaMedida & {
48
+ tailwind: boolean;
49
+ pideTailwind: boolean;
50
+ }) | undefined;
51
+ export interface DependenciasDeRender {
52
+ navegador?: string;
53
+ /** Lanza el navegador y devuelve lo que imprime. Los tests no abren un Chrome. */
54
+ volcar?: (navegador: string, argumentos: readonly string[]) => Promise<string>;
55
+ }
56
+ /**
57
+ * Las cajas de `rutaDelHtml` renderizada a `ancho`×`alto`. Nunca lanza: lo que falla vuelve como motivo.
58
+ */
59
+ export declare function cajasDeMaqueta(rutaDelHtml: string, ancho: number, alto: number, deps?: DependenciasDeRender): Promise<MaquetaMedida | {
60
+ motivo: string;
61
+ }>;
@@ -0,0 +1,21 @@
1
+ import type { ImagenRgba } from "../../core/compararCapturas.js";
2
+ /**
3
+ * De un PNG o un JPEG a píxeles RGBA, para `core/compararCapturas.ts` (que no importa librerías).
4
+ *
5
+ * **Se comprueban las dimensiones ANTES de descomprimir.** Un PNG de unos cientos de bytes puede
6
+ * declarar 60.000×60.000 y agotar la memoria al abrirlo (una bomba de descompresión, la misma
7
+ * clase que el `.zip` de una skill), así que se lee la cabecera —los primeros bytes— y se rechaza
8
+ * lo que pase de `MAX_LADO`/`MAX_PIXELES` sin decodificar nada. Una captura de móvil va de
9
+ * 1080×2400 a 1440×3200 (~4,6 millones), lejos del tope.
10
+ *
11
+ * **Lanza con un mensaje sin ruta ni contenido**: quien lo llama (la tool) lo devuelve como texto.
12
+ */
13
+ export declare const MAX_LADO = 8192;
14
+ export declare const MAX_PIXELES = 40000000;
15
+ export declare const MAX_BYTES: number;
16
+ /** Solo el tamaño, de la cabecera y sin decodificar nada (`convertir_a_p` necesita el ancho de la maqueta). */
17
+ export declare function dimensionesDeImagen(bytes: Buffer): {
18
+ ancho: number;
19
+ alto: number;
20
+ };
21
+ export declare function decodificarImagen(bytes: Buffer): ImagenRgba;
@@ -0,0 +1,44 @@
1
+ /** Lo que puede ocupar el `.zip` descargado. Las cmdline-tools de hoy pesan 156 MB, el JDK
2
+ * ronda los 190 MB: deja margen sin abrir la puerta a un zip bomba servido por un host que
3
+ * dejó de ser de confianza (una URL fijada a mano, ver `core/dispositivos.ts`). */
4
+ export declare const TOPE_DE_LA_DESCARGA: number;
5
+ /** Lo que puede ocupar DESCOMPRIMIDO. El de arriba no lo ve: un zip pequeño puede
6
+ * descomprimirse en gigabytes. */
7
+ export declare const TOPE_DESCOMPRIMIDO: number;
8
+ /** Cuántas entradas puede traer. Las cmdline-tools traen unos pocos miles de ficheros. */
9
+ export declare const TOPE_DE_ENTRADAS = 8000;
10
+ export interface ResultadoDeDescarga {
11
+ estado: "ok" | "fallo" | "cancelada" | "colgada";
12
+ /** Una línea, nunca la salida entera. Ausente si fue bien. */
13
+ motivo?: string;
14
+ ms: number;
15
+ }
16
+ export interface Descarga {
17
+ cancelar: () => void;
18
+ terminado: Promise<ResultadoDeDescarga>;
19
+ }
20
+ export interface OpcionesDeDescarga {
21
+ /**
22
+ * Si el zip trae EXACTAMENTE una carpeta de primer nivel, se renombra a esta al escribir
23
+ * —sin un paso de renombrado aparte, se descomprime YA con el nombre fijo—. Se usa para el
24
+ * JDK (`jdk-17.0.20.1+1` → `jdk17`) y las cmdline-tools (`cmdline-tools` → `latest`), cuyo
25
+ * nombre de carpeta trae la versión o no es el que Google exige. `platform-tools` no la
26
+ * necesita: su zip ya trae `platform-tools/` con el nombre correcto.
27
+ */
28
+ renombrarCarpetaUnicaA?: string;
29
+ }
30
+ export interface DependenciasDeDescarga {
31
+ fetch?: typeof fetch;
32
+ crearCarpeta?: (ruta: string) => void;
33
+ escribir?: (ruta: string, datos: Uint8Array) => void;
34
+ ahora?: () => number;
35
+ /** Cada línea de progreso, en cuanto sale: es lo que hace usable una descarga de minutos. */
36
+ alSalirLinea?: (linea: string) => void;
37
+ }
38
+ /**
39
+ * Descarga `url` y la descomprime bajo `destino`. Nunca lanza: todo lo que puede ir mal
40
+ * —una URL caducada, un zip corrupto, una ruta de zip-slip, el tope de tamaño— vuelve como
41
+ * un `ResultadoDeDescarga` con su motivo de UNA línea, igual que
42
+ * `instalacionEnMaquina.ts#correrPasoDeReceta`.
43
+ */
44
+ export declare function descargarYDescomprimir(url: string, destino: string, opciones?: OpcionesDeDescarga, deps?: DependenciasDeDescarga): Descarga;