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,129 @@
1
+ /**
2
+ * Una skill: el `SKILL.md` que el agente carga bajo demanda, y de quién es.
3
+ *
4
+ * **Este módulo es PURO.** Quién lee el disco es `agent/grafo/skills.ts`; quién las monta
5
+ * para el agente, `agent/grafo/proyecto.ts#backendConSkills`. Aquí solo vive el formato del
6
+ * fichero y la regla de qué nombre vale — las dos cosas que la ventana de Ajustes, el
7
+ * cargador y los tests tienen que entender igual.
8
+ *
9
+ * **Tres orígenes y no dos**, con la misma precedencia que los subagentes y los modelos:
10
+ *
11
+ * | origen | dónde | quién la escribe |
12
+ * |---|---|---|
13
+ * | `serie` | la carpeta `skills/` del PAQUETE | xonecode, y no se toca desde la consola |
14
+ * | `global` | `~/.xonecode/skills/` | el usuario, para todos sus proyectos |
15
+ * | `proyecto` | `<raiz>/.xonecode/skills/` | el usuario, solo para ese proyecto |
16
+ *
17
+ * Las de serie son de SOLO LECTURA y no se borran ni se editan: viven dentro del paquete
18
+ * instalado, así que una edición se la llevaría por delante el siguiente `npm install` sin
19
+ * decir nada. Lo que sí se puede es COPIARLA a las tuyas y cambiarla ahí, que además deja
20
+ * ver de dónde salió. Por eso no hay `.semilla.json` como en los subagentes: nada nuestro
21
+ * se copia nunca a la casa del usuario, así que no hay marca que llevar ni nada que
22
+ * restaurar.
23
+ *
24
+ * El `SKILL.md` es el formato de Claude Code, y eso no es una coincidencia que convenga
25
+ * mantener: es lo que hace que una skill escrita para otro harness se lea aquí tal cual, y
26
+ * que `SkillsMiddleware` de deepagents —que es quien las descubre de verdad— la encuentre
27
+ * sin que xonecode traduzca nada.
28
+ */
29
+ import { motivoDeNombreInaceptable, nombreSugerido } from "./agentes.js";
30
+ /** De dónde sale una skill. No se escribe en el fichero: lo pone quien lo lee. */
31
+ export type OrigenDeSkill = "serie" | "global" | "proyecto";
32
+ /** El fichero, sin de quién es. Es lo que se escribe y lo que se lee. */
33
+ export interface Skill {
34
+ nombre: string;
35
+ descripcion: string;
36
+ /** El cuerpo del `SKILL.md`, sin el frontmatter. Son las instrucciones. */
37
+ cuerpo: string;
38
+ /**
39
+ * El frontmatter TAL COMO está en el fichero, sin los `---`.
40
+ *
41
+ * Existe por dos cosas distintas y las dos importan:
42
+ *
43
+ * - **Se ENSEÑA.** `description` no es lo único que puede haber ahí: `archify` declara
44
+ * además `license` y un bloque `metadata` anidado, y una ventana que solo enseña la
45
+ * descripción haría creer que eso es todo lo que el fichero dice.
46
+ * - **Se CONSERVA al guardar.** `escribirSkill` reescribe `name` y `description` DENTRO de
47
+ * este texto en vez de componer uno nuevo: sin eso, editar desde la ventana una skill
48
+ * escrita a mano le borraba en silencio todas las claves que no conocemos — que es la
49
+ * pérdida muda de siempre, y encima sobre un fichero que el usuario escribió él.
50
+ *
51
+ * Ausente en la que se está creando: entonces se compone el mínimo.
52
+ */
53
+ frontmatter?: string;
54
+ }
55
+ /** Una skill ya cargada: el fichero, más de dónde salió y lo que cuesta. */
56
+ export interface SkillCargada extends Skill {
57
+ origen: OrigenDeSkill;
58
+ /** Estimación de coste del `SKILL.md` ENTERO, frontmatter incluido. */
59
+ tokens: number;
60
+ /**
61
+ * Los ficheros que acompañan al `SKILL.md`, por nombre y sin contenido.
62
+ *
63
+ * Viajan porque una skill puede ser una carpeta entera —plantillas, ejemplos, un script—
64
+ * y la ventana que solo enseña el `SKILL.md` haría creer que editarlo es editarla toda.
65
+ * Lo que se puede tocar desde aquí es el `SKILL.md`; el resto se dice que está y se deja
66
+ * donde vive, que es la misma postura que `omitidas` en el plan de subida.
67
+ */
68
+ ficheros: string[];
69
+ }
70
+ /** Lo que se pudo leer, y lo que no con su motivo. Nunca se descarta nada en silencio. */
71
+ export interface LecturaDeSkills {
72
+ skills: SkillCargada[];
73
+ /** Una línea por fichero: qué skill y qué le pasa. */
74
+ problemas: string[];
75
+ }
76
+ /** 4 caracteres por token, la regla de servilleta de siempre. */
77
+ export declare const tokensDeSkill: (texto: string) => number;
78
+ /**
79
+ * El nombre de una skill es un SEGMENTO DE RUTA —la carpeta donde vive— y también lo que el
80
+ * subagente declara en su `.md`, así que vale la MISMA regla que la de un subagente y por la
81
+ * misma razón: `motivoDeNombreInaceptable` (`core/agentes.ts`). No se escribe una segunda
82
+ * aquí porque dos reglas para el mismo tipo de nombre es donde divergen.
83
+ */
84
+ export declare const motivoDeNombreDeSkillInaceptable: typeof motivoDeNombreInaceptable;
85
+ export declare const nombreDeSkillSugerido: typeof nombreSugerido;
86
+ /**
87
+ * Compone el `SKILL.md`.
88
+ *
89
+ * El frontmatter es el mínimo que `parseFrontmatter` (`vendor/skillLoaders/catalog.ts`) y
90
+ * deepagents leen: `name` y `description`, una línea cada uno. La descripción se aplana a
91
+ * una línea porque ahí un salto la partiría en dos claves y la segunda mitad se perdería en
92
+ * silencio — el mismo motivo por el que el nombre es un slug.
93
+ *
94
+ * **Y lo demás del frontmatter se CONSERVA**: las claves que no son `name` ni `description`
95
+ * se reescriben tal cual, en su orden. Componer uno nuevo desde cero le borraba a una skill
96
+ * escrita a mano su `license`, su `allowed-tools` o su bloque `metadata` en cuanto alguien
97
+ * abriera la ventana y pulsara Guardar — sin error, sin aviso y sobre un fichero suyo. Las
98
+ * líneas INDENTADAS van con la clave que las abre, que es lo que deja pasar un bloque
99
+ * anidado entero sin entender YAML.
100
+ */
101
+ export declare function escribirSkill(skill: Skill): string;
102
+ /**
103
+ * Lee un `SKILL.md`.
104
+ *
105
+ * **El nombre sale de la CARPETA, no del frontmatter**, exactamente como el de un subagente
106
+ * sale del fichero: es lo que la hace direccionable (`/skills/<nombre>/`) y lo que el
107
+ * subagente declara. Un `name:` que diga otra cosa se ignora — mandaría sobre una ruta que
108
+ * ya está decidida, y entonces `rutasDeSkills` apuntaría a una carpeta que no existe.
109
+ *
110
+ * **Sin `description` no se carga.** Es lo que el modelo lee para decidir si esta skill le
111
+ * sirve: sin ella, la skill está en el catálogo y no la usa nadie nunca, que es peor que no
112
+ * estar. Misma regla que la `descripcion` de un subagente.
113
+ */
114
+ export declare function leerSkill(texto: string, nombreDeCarpeta: string, origen: OrigenDeSkill, ficheros?: string[]): {
115
+ skill: SkillCargada;
116
+ } | {
117
+ error: string;
118
+ };
119
+ /**
120
+ * Funde las listas por nombre: la ÚLTIMA gana.
121
+ *
122
+ * Se llama con `serie`, `global`, `proyecto` en ese orden, así que una skill del proyecto
123
+ * tapa a la global del mismo nombre y las dos tapan a la de serie — la misma precedencia
124
+ * que los subagentes y que los modelos, y por lo mismo: lo particular manda sobre lo
125
+ * general. Que una tape a otra NO es un problema que reportar: es la forma de afinar una
126
+ * skill nuestra sin editarla donde el `npm install` la pisaría. Quien lo dice es la ficha,
127
+ * con su origen al lado.
128
+ */
129
+ export declare function fusionarSkills(...listas: readonly SkillCargada[][]): SkillCargada[];
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Traer una pantalla de Stitch a la sesión: lo que se decide sin red ni disco.
3
+ *
4
+ * Stitch no devuelve la imagen ni el HTML de una pantalla: devuelve ENLACES de descarga
5
+ * (`get_screen` → `screenshot.downloadUrl`, `htmlCode.downloadUrl`), y el agente no puede bajar
6
+ * una URL. Lo baja el harness (`agent/motores/trueforge/traerDeStitch.ts`), y solo URLs que vienen
7
+ * de la respuesta de Stitch —nunca una que escriba el modelo—, de los hosts MEDIDOS, con tope de
8
+ * tamaño y tipo comprobado.
9
+ *
10
+ * El destino es FIJO, `/artefactos/diseno/`: es donde el harness ya espera una maqueta (`buscarMaqueta`),
11
+ * de donde `ultimaCaptura` y el crítico de pantalla NO toman capturas del aparato, y la misma carpeta
12
+ * que deja descomprimir un export de Stitch a mano.
13
+ */
14
+ import type { DisenoVinculado } from "./disenoVinculado.js";
15
+ export { motivoDeProyectoDeStitchInaceptable, type DisenoVinculado } from "./disenoVinculado.js";
16
+ /** La carpeta, dentro de la de artefactos, donde vive la maqueta traída. */
17
+ export declare const CARPETA_DE_DISENO = "diseno";
18
+ export declare const RUTA_DE_DISENO = "/artefactos/diseno/";
19
+ /** ¿Es esta ruta virtual algo de la maqueta traída (y no una captura del aparato)? */
20
+ export declare function esDeLaMaqueta(ruta: string): boolean;
21
+ /** Medidos el 30-09-2026: la imagen viene de `lh3`, el HTML de `contribution`. Nada más se baja. */
22
+ export declare const HOSTS_DE_DESCARGA: readonly ["lh3.googleusercontent.com", "contribution.usercontent.google.com"];
23
+ /** Una pantalla de Stitch a tamaño completo son ~150 KB; el tope es holgado y es un tope. */
24
+ export declare const TOPE_DE_IMAGEN: number;
25
+ export declare const TOPE_DE_HTML: number;
26
+ /** Lo que admite la imagen: el tipo manda sobre la extensión del fichero que se escribe. */
27
+ export declare const TIPOS_DE_IMAGEN: Readonly<Record<string, string>>;
28
+ export declare function motivoDePantallaInaceptable(pantalla: string): string | undefined;
29
+ /** El proyecto de una pantalla: `projects/<id>`. */
30
+ export declare function proyectoDePantalla(pantalla: string): string;
31
+ /**
32
+ * ¿Se puede bajar esta URL? HTTPS, sin credenciales, de un host medido. Se aplica a URLs que vienen
33
+ * de la respuesta de Stitch, y aun así se comprueba: la respuesta la escribe otro.
34
+ */
35
+ export declare function motivoDeDescargaInaceptable(url: string): string | undefined;
36
+ /**
37
+ * La imagen a su tamaño REAL. Medido: el enlace de `lh3` sin sufijo da una miniatura (226×512 de una
38
+ * pantalla de 780×1768); con `=s0`, la de verdad. Solo si el enlace no trae ya su propio tamaño.
39
+ */
40
+ export declare function urlDeImagenCompleta(url: string): string;
41
+ export interface PantallaDeStitch {
42
+ titulo: string;
43
+ ancho?: number;
44
+ alto?: number;
45
+ imagen: string;
46
+ html?: string;
47
+ }
48
+ /** Lo que interesa de la respuesta de `get_screen`, o el motivo de que no se entienda. */
49
+ export declare function leerPantalla(texto: string): PantallaDeStitch | string;
50
+ /** El `DESIGN.md` del proyecto (`get_project` → `designTheme.designMd`), si lo trae. */
51
+ export declare function designMdDeProyecto(texto: string): string | undefined;
52
+ /**
53
+ * Buscar una pantalla por su TÍTULO, y no por su `name`. Medido en Maset: con solo el `name`, el orquestador listaba las
54
+ * pantallas de TODOS los proyectos de Stitch (diecinueve llamadas) para dar con la que la persona había nombrado, y esos
55
+ * listados se quedaban en su contexto el turno entero. Puro: las respuestas entran como texto.
56
+ */
57
+ export interface EntradaDeStitch {
58
+ name: string;
59
+ title: string;
60
+ }
61
+ /** Un título comparable: sin mayúsculas, sin tildes y con los espacios reducidos. */
62
+ export declare function tituloComparable(titulo: string): string;
63
+ /** Las entradas `{name, title}` de la lista `clave` (`projects` o `screens`) de una respuesta. Lo que no tiene forma, fuera. */
64
+ export declare function entradasDeStitch(texto: string, clave: "projects" | "screens"): EntradaDeStitch[];
65
+ /**
66
+ * Las que casan con el título: las de título IGUAL si hay alguna (comparable), y si no las que lo CONTIENEN. Sin título,
67
+ * todas. Una pantalla con el título exacto no se ensucia con las que solo lo contienen.
68
+ */
69
+ export declare function casanConTitulo<T extends EntradaDeStitch>(entradas: readonly T[], titulo: string | undefined): T[];
70
+ /**
71
+ * Las palabras de un título, comparables y por su RAÍZ, sin las vacías: singular y plural valen lo mismo (`entregas` y
72
+ * `entrega`, `albaranes` y `albaran`, `pendientes` y `pendiente`). Se quita `-es`/`-s` y luego una `e` final.
73
+ */
74
+ export declare function palabras(titulo: string): string[];
75
+ /**
76
+ * Las palabras de lo buscado que DISTINGUEN una pantalla de otra: sin las vacías y sin las que salen en la MAYORÍA de
77
+ * los títulos del proyecto («Maset», «Logística» en «X - Maset Logística»), que no distinguen nada.
78
+ */
79
+ export declare function palabrasQueDistinguen(titulo: string, entradas: readonly EntradaDeStitch[]): string[];
80
+ /** El id de un proyecto (`projects/<id>` → `<id>`), que es lo que pide `list_screens`. */
81
+ export declare function idDeProyecto(name: string): string;
82
+ /** Una pantalla para el selector: su `name`, su título y la miniatura (solo de los hosts medidos). */
83
+ export interface PantallaConMiniatura extends EntradaDeStitch {
84
+ miniatura?: string;
85
+ }
86
+ /**
87
+ * Las pantallas de una respuesta de `list_screens`, con su miniatura (`screenshot.downloadUrl`, medido: la traen todas).
88
+ * Una miniatura fuera de los hosts medidos no se da: la pantalla se ofrece sin imagen.
89
+ */
90
+ export declare function pantallasConMiniatura(texto: string): PantallaConMiniatura[];
91
+ /**
92
+ * La pantalla elegida para una tarea, si vale: un `name` de pantalla bien formado, DEL proyecto de Stitch vinculado, y
93
+ * un título corto. Lo que llega del cable no se cree: sin vínculo, o de otro proyecto, `undefined`.
94
+ */
95
+ export declare function pantallaElegidaValida(valor: unknown, vinculo: DisenoVinculado | undefined): {
96
+ name: string;
97
+ titulo: string;
98
+ proyecto: string;
99
+ } | undefined;
100
+ /**
101
+ * La línea que se añade al encargo de una tarea con pantalla ELEGIDA: si ya está traída, dónde está y que es LA
102
+ * referencia; si no se pudo traer antes de empezar, con qué `name` traerla. En los dos casos, que no se busque otra por
103
+ * título ni se sustituya (decisión suya: el diseño lo elige la persona).
104
+ */
105
+ export declare function textoDePantallaElegida(pantalla: {
106
+ name: string;
107
+ titulo: string;
108
+ proyecto?: string;
109
+ }, traida: {
110
+ ok: true;
111
+ } | {
112
+ ok: false;
113
+ motivo: string;
114
+ }): string;
@@ -0,0 +1,412 @@
1
+ import type { CierreDeTarea, VeredictoDeTarea } from "./entrega.js";
2
+ import type { MapeoDeEstados } from "./gestorDeTareas.js";
3
+ /**
4
+ * Los cuatro estados, y ninguno más.
5
+ *
6
+ * **No hay «fallida»**: un error del turno, un proyecto que ya no está, una escritura que
7
+ * nadie aprobó y una pregunta sin contestar acaban todos en `requiere-atencion`, porque la
8
+ * acción que piden es la misma —que alguien mire— y lo que los distingue es el `motivo`. Un
9
+ * estado «fallida» aparte obligaría a decidir en el código qué fallos son recuperables, y
10
+ * esa es justo la decisión que se le devuelve a la persona.
11
+ *
12
+ * **Tampoco hay «cancelada»**: descartar una tarea la BORRA. Un estado terminal de basura
13
+ * sería un archivo que nadie mira, la misma razón por la que «archivar» no está en el menú
14
+ * de una sesión.
15
+ */
16
+ export type EstadoDeTarea = "nuevo" | "en-proceso" | "requiere-atencion" | "terminada";
17
+ /** A dónde se puede ir desde cada estado. Lo que no esté aquí se rechaza al escribirlo. */
18
+ export declare const TRANSICIONES: Readonly<Record<EstadoDeTarea, readonly EstadoDeTarea[]>>;
19
+ /** Lo que se sabe de un adjunto. Nunca su contenido ni su ruta en la máquina. */
20
+ export interface AdjuntoDeTarea {
21
+ nombre: string;
22
+ bytes: number;
23
+ /** Por extensión, o ausente si no se sabe. Nunca se adivina. */
24
+ mime?: string;
25
+ }
26
+ /**
27
+ * Un feedback del desarrollador sobre una tarea que estaba `requiere-atencion`.
28
+ *
29
+ * §0 del diseño, textual: «esperando por feedback, se edita la tarea y se agrega el
30
+ * feedback del usuario». Es el mismo patrón que los hallazgos del verificador
31
+ * (`agent/turno/turnoReal.ts#conVerificacion`): entra al hilo que ya existe como un mensaje de
32
+ * USUARIO, nunca como un encargo nuevo que le haría perder a la tarea todo lo que ya sabe.
33
+ */
34
+ export interface FeedbackDeTarea {
35
+ texto: string;
36
+ creado: string;
37
+ /**
38
+ * Si ya se le mandó al agente. Se pone al REANUDAR el turno con este feedback —no al
39
+ * añadirlo—, o la vuelta siguiente del corredor se lo mandaría otra vez: el mismo
40
+ * argumento que separa «autorizó» de «aplicado» en `Tarea.autorizadas`, aquí dentro de
41
+ * cada entrada en vez de en el campo entero.
42
+ */
43
+ consumido: boolean;
44
+ }
45
+ export interface Tarea {
46
+ id: string;
47
+ /**
48
+ * El proyecto, con las TRES cosas y no dos: el `id` es lo que viaja por el cable y con lo
49
+ * que la interfaz filtra («las tareas de este proyecto»), el `nombre` es para leer, y la
50
+ * `raiz` es ABSOLUTA y solo se usa aquí dentro para abrirlo.
51
+ *
52
+ * Mover o renombrar la carpeta deja la tarea huérfana, y entonces NO se ejecuta — falla
53
+ * cerrado, igual que el índice de tareas, que también se indexa por ruta absoluta.
54
+ */
55
+ proyecto: {
56
+ id: string;
57
+ raiz: string;
58
+ nombre: string;
59
+ };
60
+ /** La primera frase de la petición. Para leer en el kanban. */
61
+ titulo: string;
62
+ /** Lo que escribió el usuario, tal cual. Se conserva aunque el encargo se edite. */
63
+ peticion: string;
64
+ /** El encargo augmentado y revisado: es lo que se le manda al agente. */
65
+ encargo: string;
66
+ adjuntos: AdjuntoDeTarea[];
67
+ estado: EstadoDeTarea;
68
+ /** Por qué está aparcada. Obligatorio con `requiere-atencion` y solo con él. */
69
+ motivo?: string;
70
+ /** La sesión donde corre, en cuanto existe: es lo que hace que atenderla sea abrirla. */
71
+ sesion?: string;
72
+ /**
73
+ * La tarea ANTERIOR de su cadena: esta no arranca hasta que aquella esté `terminada`. Existe porque un encargo grande
74
+ * se reparte en tareas que van EN ORDEN (`docs/superpowers/plans/2026-10-06-tareas-encadenadas.md`), y la regla de
75
+ * «nunca dos del mismo proyecto» no basta: deja de bloquear cuando la anterior queda en `requiere-atencion`, y la
76
+ * siguiente arrancaría sobre un trabajo a medias. Si la anterior ya no existe (la persona la borró), esta queda libre.
77
+ */
78
+ tras?: string;
79
+ creada: string;
80
+ empezada?: string;
81
+ acabada?: string;
82
+ /** El proceso que la tiene. Se usa para reconciliar al arrancar; se va al parar. */
83
+ pid?: number;
84
+ /**
85
+ * Cuántas veces el harness la REANUDÓ solo tras cortarse el proceso a mitad (`reanudadaTrasCorte`). Ausente = ninguna.
86
+ * Es lo que frena el bucle de una tarea que tumba el proceso cada vez. No viaja: en la pantalla no sirve de nada.
87
+ */
88
+ reanudaciones?: number;
89
+ /**
90
+ * Las escrituras que la tarea AUTORIZÓ sin que ninguna persona las aprobara, con la ruta
91
+ * RELATIVA a la raíz del proyecto.
92
+ *
93
+ * **Se llama `autorizadas` y no `aplicados`, y el nombre es la mitad del contrato.** Se
94
+ * apunta cuando se toma la decisión, que es ANTES de que el backend escriba: una ruta que
95
+ * las guardas de ruta rechazan —`/artifacts/`, una vista aplanada, `/.env`— sale aquí y
96
+ * NO aparece en el disco. Un campo llamado «aplicados» prometería un hecho sobre el disco
97
+ * que este dato no puede sostener, y de aquí sale lo que el kanban le cuenta a una
98
+ * persona: en este repo un campo mal nombrado es la misma clase de fallo que un control
99
+ * sin dato detrás. **La verdad sobre lo que cambió la tiene Revisión**, que es un diff de
100
+ * git contra la ref de la sesión; esto es una PISTA, y su nombre no puede prometer más.
101
+ *
102
+ * **Se guarda porque nadie lo aprobó.** La autorización de una tarea es el acto de
103
+ * crearla, así que el diff dejó de ser el momento en que alguien ve lo que se va a
104
+ * escribir; lo único que queda es el registro. Con los NOMBRES y no un contador, que es
105
+ * el mismo criterio del aviso de honestidad del modo autónomo — un contador a
106
+ * secas es el aviso que enseña a ignorar los avisos.
107
+ *
108
+ * **Ausente y vacío no son lo mismo**, y aquí la diferencia es la de siempre: ausente es
109
+ * «no consta» —una tarea de antes de que esto existiera, o una que nunca llegó a correr
110
+ * un turno porque su proyecto no estaba— y `[]` es «corrió y no autorizó ninguna
111
+ * escritura», que es un dato distinto y el que el juez de la entrega necesita.
112
+ */
113
+ autorizadas?: string[];
114
+ /**
115
+ * El historial de lo que el desarrollador contestó mientras la tarea esperaba feedback.
116
+ *
117
+ * **Es una LISTA y no un campo**, porque puede haber varias vueltas —una tarea aparcada
118
+ * dos veces— y la segunda no puede borrar la primera: la misma regla que `autorizadas`.
119
+ * `conFeedback` solo AÑADE.
120
+ *
121
+ * **Ausente y vacío no son lo mismo, otra vez la misma regla.** Ausente es «nunca se le
122
+ * pidió nada a esta tarea»; `conFeedback` nunca produce `[]` porque solo se llama para
123
+ * AÑADIR un feedback, así que un array presente siempre tiene al menos uno.
124
+ */
125
+ feedback?: FeedbackDeTarea[];
126
+ /**
127
+ * El veredicto del juez de QA sobre lo que hizo la tarea: resumen y hallazgos, **nunca
128
+ * contenido de ficheros** (`core/entrega.ts#VeredictoDeTarea` lo acota).
129
+ *
130
+ * Se guarda porque es la mitad de la decisión de «terminada» —la otra son las condiciones
131
+ * que comprueba el código— y porque cuando el veredicto es el motivo de que la tarea NO
132
+ * se entregue, sus palabras son lo único que dice qué falta. Se guarda **siempre que haya
133
+ * uno**, también en verde: si no, una tarea terminada no podría distinguir «el juez la
134
+ * aprobó» de «se entregó sin que nadie la juzgara», que es la duda que este campo existe
135
+ * para cerrar. Y la cierra en la PANTALLA, no solo en disco: viaja entero por el cable
136
+ * (`web/servidor/transporte.ts#filaDeTarea`) y lo pinta `EntregaDeTarea.tsx`. La cuarta
137
+ * forma de llegar a «terminada» —que la dé por buena una persona— no la puede distinguir
138
+ * este campo, porque el veredicto que hubiera se conserva: la distingue
139
+ * `terminadaAMano`.
140
+ *
141
+ * **Y este SUSTITUYE, al contrario que `autorizadas`.** Aquello acumula porque un
142
+ * fichero escrito en el primer intento sigue escrito; un veredicto, en cambio, es una
143
+ * opinión sobre el estado ACTUAL del trabajo, y conservar el del intento anterior al lado
144
+ * del nuevo enseñaría dos respuestas a una sola pregunta.
145
+ */
146
+ veredicto?: VeredictoDeTarea;
147
+ /**
148
+ * Con qué se CERRÓ, cuando la entrega no salió limpia (`core/entrega.ts#cierreDeLaEntrega`): lo crítico y las
149
+ * observaciones, que van al comentario de cierre del ticket. Ausente = se entregó sin nada que decir.
150
+ */
151
+ cierre?: CierreDeTarea;
152
+ /**
153
+ * La dio por buena una PERSONA, con el botón «Dar por bueno», en vez de la puerta de
154
+ * entrega (`core/entrega.ts#decisionDeEntrega`).
155
+ *
156
+ * **Existe porque el veredicto no basta para distinguirlo, y eso está razonado sobre el
157
+ * código y no supuesto.** Una tarea aparcada puede llegar a ese botón con un veredicto
158
+ * ROJO (el juez dijo que no y la persona lo pisa), con NINGUNO (se cortó a mitad, el turno
159
+ * falló, el proyecto ya no estaba: el juez no llegó a hablar) y también con uno VERDE —el
160
+ * camino es estrecho pero existe: la puerta la aprueba y la escritura del estado final
161
+ * revienta, así que se aparca «el corredor no pudo cerrarla» con el verde ya guardado
162
+ * (`corredorDeTareas.ts`)—. En ese último caso, sin esta marca, la tarjeta resultante
163
+ * sería byte a byte la de una entrega por la puerta completa.
164
+ *
165
+ * **Solo la pone `darPorBuenaAMano`**, nunca `conEstado`: marcar ahí una entrega del
166
+ * corredor sería la mentira simétrica. Y `undefined` es «no consta» —una tarea de antes
167
+ * de que esto existiera—, que no es lo mismo que `false`.
168
+ */
169
+ terminadaAMano?: boolean;
170
+ /**
171
+ * El ticket del GESTOR de tareas en el que vive esta tarea (Jira, Notion…), si su proyecto tenía uno vinculado al
172
+ * crearla. Se COPIA al crear y no se recalcula nunca desde el vínculo de ahora —la regla de `TicketDeSesion`—: si la
173
+ * persona revincula el proyecto, lo que se escribe sigue yendo a ESTE ticket. Ausente = tarea solo local.
174
+ */
175
+ ticket?: TicketDeTarea;
176
+ /**
177
+ * La pantalla de Stitch ELEGIDA para la tarea (una), del proyecto de Stitch vinculado. El corredor la trae a
178
+ * `/artefactos/diseno/` antes del primer turno y el encargo lo dice: no se busca por nombre (decisión suya; medido en
179
+ * Maset, «Menu Listado Entregas» no era el título de ninguna y la tarea construyó con otra maqueta).
180
+ */
181
+ pantallaDeStitch?: PantallaElegida;
182
+ }
183
+ /** Una pantalla de Stitch elegida: su `name` (`projects/<id>/screens/<id>`) y su título, para decirlo sin preguntar. */
184
+ export interface PantallaElegida {
185
+ name: string;
186
+ titulo: string;
187
+ /** El nombre del proyecto de Stitch, del vínculo al crearla; su id sale del `name`. */
188
+ proyecto?: string;
189
+ }
190
+ /** El ticket de una tarea en su gestor. `sitio` no sale del host; `aviso` es el último reflejo que FALLÓ. */
191
+ export interface TicketDeTarea {
192
+ conector: string;
193
+ sitio: string;
194
+ /** El proyecto del gestor (clave de Jira, data source de Notion): lo que el adaptador necesita en el `Vinculo`. */
195
+ proyecto: string;
196
+ clave: string;
197
+ url?: string;
198
+ /** Lo que no se pudo escribir en el gestor la última vez («no se pudo pasar a PROBAR: …»). Ausente = nada pendiente. */
199
+ aviso?: string;
200
+ /** El mapeo de estados del vínculo AL CREARLA (copiado, como el resto): a qué estado pasa al empezar y al terminar. */
201
+ estados?: MapeoDeEstados;
202
+ }
203
+ /**
204
+ * La ruta de un fichero tal como se apunta y se dice en una tarea: relativa a la raíz.
205
+ *
206
+ * Las rutas que llegan de un interrupt vienen del backend virtual del agente (`/app.xne`),
207
+ * así que nunca son de la máquina — pero la barra de delante las hace parecerlo, y estas
208
+ * cadenas acaban en el índice de tareas y en el registro que una persona lee. Vive aquí, y
209
+ * no en quien las escribe, porque la usan los dos extremos: el texto que se pinta en el
210
+ * transcript y la lista que se guarda. Dos copias de esto son dos reglas que divergen.
211
+ */
212
+ export declare const rutaRelativaDeTarea: (ruta: string) => string;
213
+ /** El título de una tarea: la primera frase de su petición, como el de una sesión. */
214
+ export declare const tituloDeTarea: (peticion: string) => string;
215
+ /** Tope de concurrencia por omisión. Dos: una corriendo y otra avanzando sin que la máquina
216
+ * se quede sin aire para lo que esté haciendo la persona delante. */
217
+ export declare const CONCURRENCIA_POR_OMISION = 2;
218
+ /**
219
+ * Cuántas RONDAS de aprobación admite el turno de una tarea. **Su propio tope, y no el de
220
+ * la persona.**
221
+ *
222
+ * `MAX_APPROVAL_ROUNDS` son cinco y se dimensionaron para alguien pulsando: «te lo he
223
+ * preguntado cinco veces, para». En una tarea autónoma una ronda no es una pregunta, es una
224
+ * TANDA de escrituras que se autorizan solas — y cinco tandas se agotan en un encargo
225
+ * mediano: medido, un turno de tarea acabó con cuatro ficheros escritos, una escritura
226
+ * abandonada y el verificador sin correr, porque cada tanda gastaba ronda.
227
+ *
228
+ * **Y no es infinito**, por el mismo argumento que el tope propio de los artefactos: cada
229
+ * pasada es una llamada al modelo y aquí no hay ningún humano que frene el bucle.
230
+ *
231
+ * **De dónde sale el 20, dicho como lo que es: una observación por cuatro, no un encargo
232
+ * grande medido.** Lo único medido es el turno que se cortó, que necesitaba cinco tandas;
233
+ * veinte deja sitio a un encargo bastante mayor y sigue cortando un bucle en un tiempo
234
+ * finito. No hay medida de un encargo de verdad grande detrás, y por eso es un número
235
+ * provisional que se puede afinar. Lo que lo hace aceptable mientras tanto es su MODO DE
236
+ * FALLO: al agotarse se dice, quedan escrituras sin aplicar, y `core/entrega.ts` no entrega
237
+ * — o sea que un tope corto aparca con un motivo VERDADERO en vez de dar por bueno un
238
+ * trabajo a medias. Un número provisional con un fallo honesto se afina luego; lo que no se
239
+ * puede es que al agotarse mienta.
240
+ *
241
+ * **Subido a 50 por una medida**: una tarea que ajustaba una pantalla contra su maqueta (Maset, Entradas/Salidas) gastó
242
+ * las 20 en un solo turno —editar, desplegar, capturar, criticar, volver a editar, una edición por fichero y ronda— y se
243
+ * cortó con tres ediciones sin aplicar y el simulador sin correr, con la ventana casi lista. Ese ciclo de diseño es el
244
+ * trabajo normal de una tarea, no un bucle; a petición de la persona, el mismo 50 que el chat.
245
+ */
246
+ export declare const TOPE_DE_RONDAS_DE_TAREA = 50;
247
+ /**
248
+ * Qué tareas pueden arrancar AHORA.
249
+ *
250
+ * Cuatro reglas, y las dos últimas son las que importan:
251
+ * - **FIFO por fecha de creación**, global: predecible y explicable. Una prioridad es un
252
+ * campo más que nadie ha pedido.
253
+ * - **Tope de concurrencia**, contando las que ya corren.
254
+ * - **Nunca dos del mismo proyecto**, ni con las que corren ni entre las elegidas en esta
255
+ * misma pasada: comparten disco, índice de git, checkpointer y `sync`, y dos turnos a la
256
+ * vez sobre eso es una carrera con escrituras de por medio.
257
+ * - **Y GANA LA PERSONA**: ver `bloqueados`.
258
+ * - **Y las ENCADENADAS esperan a su anterior** (`Tarea.tras`) hasta que esté `terminada`, también si quedó en
259
+ * `requiere-atencion`. Igual que un bloqueado: no gasta hueco ni para la cola.
260
+ */
261
+ export declare function siguientesAEjecutar(tareas: readonly Tarea[], opciones: {
262
+ concurrencia: number;
263
+ /**
264
+ * Raíces en las que NO se puede arrancar nada, aunque haya hueco.
265
+ *
266
+ * Existe por el hueco que el cerrojo del corredor no cubre: ese arbitra dos
267
+ * CORREDORES, y esto es una tarea y una PERSONA sobre el mismo árbol, que no tienen
268
+ * aislamiento de ninguna clase — se pisan las ediciones, y la foto por turno de
269
+ * `instantanea.ts` metería las escrituras de la tarea en el diff de la persona,
270
+ * atribuyéndoselas. Gana la persona: la tarea espera.
271
+ *
272
+ * La condición que se le pasa es «la consola está ABIERTA» y no «hay un turno en
273
+ * vuelo», porque solo la primera es estable en el instante de despachar: con la
274
+ * segunda, una tarea arrancaría y chocaría después, que es justo el fallo que se
275
+ * quiere evitar.
276
+ *
277
+ * **No gasta hueco de concurrencia** —no está corriendo nada— y **no para la cola**:
278
+ * el hueco se lo lleva la siguiente de otro proyecto. Ausente y vacía significan lo
279
+ * mismo aquí (nada que bloquear), al contrario que en `Entorno.proyectos`: no hay
280
+ * ninguna omisión que una lista vacía pudiera estar contradiciendo.
281
+ */
282
+ bloqueados?: readonly string[];
283
+ }): Tarea[];
284
+ /**
285
+ * La tarea con otro estado, o una excepción.
286
+ *
287
+ * Lanza en vez de devolver la tarea sin tocar: un estado imposible escrito en disco es más
288
+ * difícil de depurar que un error en el momento de escribirlo. Y `requiere-atencion` EXIGE
289
+ * motivo, porque una tarea aparcada sin decir por qué no es accionable — es la misma razón
290
+ * por la que el aviso de honestidad lleva los nombres de los ficheros y no un contador.
291
+ */
292
+ export declare function conEstado(tarea: Tarea, estado: EstadoDeTarea, motivo?: string, sello?: {
293
+ pid?: number;
294
+ ahora?: string;
295
+ }): Tarea;
296
+ /**
297
+ * La tarea con lo que AUTORIZÓ, si es que se sabe.
298
+ *
299
+ * `undefined` significa «no se sabe» y entonces no se toca el campo: una tarea que ni
300
+ * llegó a correr un turno —su proyecto se movió— no autorizó nada, pero afirmarlo con una
301
+ * lista vacía sería contar como medido algo que nadie midió. Es la misma distinción que
302
+ * `Entorno.proyectos` y la que `detalles` de un acto guardado conserva.
303
+ *
304
+ * **Se SUMA a lo que ya hubiera, no lo sustituye.** Una tarea aparcada se reintenta
305
+ * (`requiere-atencion → nuevo`) y su segundo turno es otro turno: si esto reemplazara, el
306
+ * fichero que autorizó el primer intento desaparecería del registro **cuando muy
307
+ * probablemente siga escrito**, que es justo la clase de mentira que este campo evita. Y así `[]` sigue
308
+ * queriendo decir lo que dice: «este turno no autorizó nada» — no borra lo que autorizó el
309
+ * anterior. (`sesion` NO se pierde al reintentar: el corredor reabre la MISMA —Task 12,
310
+ * `corredorDeTareas.ts#correr`—, así que el segundo turno cae en el mismo hilo y Revisión
311
+ * sigue comparando contra el «antes» de la primera apertura, no contra uno a medias.)
312
+ *
313
+ * Normaliza en un solo sitio: rutas relativas (`rutaRelativaDeTarea`), sin huecos y sin
314
+ * repetidos — el mismo fichero escrito en dos rondas del turno, o en dos intentos, es un
315
+ * fichero tocado y no dos—, conservando el orden en que se aplicaron.
316
+ */
317
+ export declare function conAutorizadas(tarea: Tarea, autorizadas: readonly string[] | undefined): Tarea;
318
+ /**
319
+ * La tarea con un feedback nuevo, sin consumir, y devuelta al lazo (`requiere-atencion →
320
+ * nuevo`).
321
+ *
322
+ * **Rechaza el vacío, lanzando.** Un feedback en blanco devolvería la tarea al lazo sin
323
+ * nada nuevo que decirle: la aparcaron por una decisión que hacía falta tomar, y «nada» no
324
+ * es una decisión. Es el mismo argumento que rechaza un título vacío en
325
+ * `sesiones.ts#renombrarSesion` — no es validación de formulario, es que aceptarlo dejaría
326
+ * la tarea «resuelta» sin haberla resuelto, y el siguiente turno correría igual de
327
+ * bloqueado que este.
328
+ *
329
+ * **Solo vale desde `requiere-atencion`, y eso lo decide `conEstado` y no una comprobación
330
+ * aparte aquí.** Si la tarea no está aparcada, no hay pregunta que este feedback esté
331
+ * contestando; `conEstado` ya lanza con un motivo legible (`«nuevo» no puede pasar a
332
+ * «nuevo»`), y repetir esa regla en dos sitios es como acaban divergiendo.
333
+ *
334
+ * **Se SUMA a lo que ya hubiera, nunca lo sustituye** — la misma regla que
335
+ * `conAutorizadas`: un segundo feedback no puede borrar el primero, porque el agente ya
336
+ * actuó sobre lo que el primero dijo y perder el registro sería fingir que nunca se dijo.
337
+ * `consumido` nace en `false`: se pone en `true` cuando el corredor de verdad lo manda al
338
+ * turno (`corredorDeTareas.ts#correr`), no aquí — hasta entonces «no consta que se haya
339
+ * mandado» es la verdad.
340
+ */
341
+ export declare function conFeedback(tarea: Tarea, texto: string, ahora?: string): Tarea;
342
+ /**
343
+ * ¿Se puede cambiar su encargo? (IXCODE-52). Solo una que NUNCA ha arrancado: `nuevo` y sin
344
+ * `empezada`. Una reintentada o con feedback también vuelve a `nuevo`, pero lo que se le manda
345
+ * entonces es su hilo y el feedback, no el encargo: dejar editarlo sería cambiar un texto que el
346
+ * agente no va a volver a leer.
347
+ */
348
+ export declare function puedeEditarEncargo(tarea: Pick<Tarea, "estado" | "empezada">): boolean;
349
+ /**
350
+ * La tarea con otro encargo, o una excepción con el motivo. Sin `peticion`, la petición y el título
351
+ * no se tocan; con ella (IXCODE-53: se edita lo que escribió la persona y se vuelve a preparar el
352
+ * encargo) se cambia, y el título sale de ella como al crear.
353
+ */
354
+ export declare function conEncargo(tarea: Tarea, encargo: string, peticion?: string,
355
+ /** La pantalla de Stitch: una nueva la sustituye, `null` la QUITA, ausente no la toca. Ya comprobada por quien llama. */
356
+ pantalla?: PantallaElegida | null): Tarea;
357
+ /**
358
+ * La tarea con el veredicto del juez, si es que hay uno.
359
+ *
360
+ * `undefined` significa «no se le preguntó» y entonces no se toca el campo: se llega aquí
361
+ * también por los caminos que aparcan antes de llegar al juez —el proyecto que ya no está,
362
+ * el turno que revienta—, y escribir ahí una ausencia borraría el veredicto del intento
363
+ * anterior, que sigue siendo lo último que se supo del trabajo.
364
+ *
365
+ * Cuando SÍ hay veredicto, sustituye: ver `Tarea.veredicto`.
366
+ */
367
+ export declare function conVeredicto(tarea: Tarea, veredicto: VeredictoDeTarea | undefined): Tarea;
368
+ /**
369
+ * La tarea que una PERSONA da por buena, con la marca puesta.
370
+ *
371
+ * `conEstado` borra el `motivo` a propósito («el motivo vive SOLO en el estado que lo
372
+ * explica»), así que después de esto no queda ni una palabra que diga que aquí no hubo ni
373
+ * verificador ni juez: eso es lo que guarda `terminadaAMano`, y de ahí sale lo que la
374
+ * tarjeta pinta. El `veredicto` que hubiera **no se toca** — la persona lo pisa, no lo
375
+ * desmiente, y lo que el juez dijo sigue siendo lo que hay que poder leer al lado.
376
+ *
377
+ * La transición la decide `conEstado`, que LANZA si no vale: repetir esa regla aquí es como
378
+ * acaban divergiendo (el mismo argumento de `conFeedback`).
379
+ */
380
+ export declare function darPorBuenaAMano(tarea: Tarea, ahora?: string): Tarea;
381
+ /**
382
+ * Cuántas veces se reanuda SOLA una tarea cortada a mitad. Una: si vuelve a cortarse, puede ser ella la que tumba el
383
+ * proceso, y reanudarla siempre sería un bucle; entonces se aparca y espera a una persona.
384
+ */
385
+ export declare const TOPE_DE_REANUDACIONES = 1;
386
+ /**
387
+ * Lo que recibe el agente al reanudar, como un mensaje más en SU hilo. El trabajo de antes del corte está en el disco
388
+ * (las tareas escriben sin aprobación) y en su memoria hasta el último paso guardado, pero la llamada en curso se perdió:
389
+ * por eso manda MIRAR antes de rehacer.
390
+ */
391
+ export declare const TEXTO_DE_REANUDACION: string;
392
+ /**
393
+ * Una tarea que el proceso dejó «en proceso» al morir, REANUDADA: vuelve a la cola con `TEXTO_DE_REANUDACION` como
394
+ * feedback pendiente, que el corredor manda en su MISMO hilo (`peticionDeFeedback` con `reanudando`). Pasa por las
395
+ * transiciones de siempre —aparcada con su motivo y devuelta con un feedback—, así que no hay un atajo nuevo que vigilar.
396
+ *
397
+ * `undefined` = NO se reanuda y se aparca como hasta ahora: sin hilo que reabrir (empezar de cero sin decírselo a nadie
398
+ * podría rehacer o pisar lo escrito) o con el tope gastado.
399
+ */
400
+ export declare function reanudadaTrasCorte(tarea: Tarea, motivo: string, ahora?: string): Tarea | undefined;
401
+ /** El motivo de aparcar una cortada que YA se reanudó sola: lo de siempre, más por qué esta vez no sigue. */
402
+ export declare const motivoTrasReanudar: (motivo: string) => string;
403
+ /**
404
+ * «Continuar» en una tarea aparcada sin escribir nada: lo que entra en SU hilo como feedback. Sin esto, seguir sin
405
+ * añadir nada era «Reintentar», que vuelve a mandar el encargo entero.
406
+ */
407
+ export declare const TEXTO_DE_CONTINUAR = "Contin\u00FAa donde lo dejaste.";
408
+ /**
409
+ * ¿Se puede «Arrancar ahora»? Una tarea `nuevo` que no espera a ninguna anterior (`tras`): las encadenadas esperan a
410
+ * que la suya termine, y saltárselo sería arrancar sobre trabajo sin aceptar. La MISMA regla que `siguientesAEjecutar`.
411
+ */
412
+ export declare function puedeArrancarYa(tarea: Pick<Tarea, "estado" | "tras">, lista: readonly Pick<Tarea, "id" | "estado">[]): boolean;