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,70 @@
1
+ /**
2
+ * DETENER y replanificar (IXCODE-4): la persona pulsa el botón mientras el agente trabaja, los
3
+ * especialistas que estaban en marcha cierran con un resumen de lo hecho y lo que les quedaba, y
4
+ * el orquestador recibe esos resúmenes con el mensaje de la persona y replanifica.
5
+ *
6
+ * **No es una `Nota`, y a propósito**: una nota se entrega a CADA hilo como encargo (`notas.ts`),
7
+ * y una orden de parar repartida así haría que el hijo parase y el raíz… volviera a encargar lo
8
+ * mismo. Aquí cada destinatario recibe SU texto: el hijo, «para y resume»; el raíz, «replanifica
9
+ * sin repetir lo hecho».
10
+ *
11
+ * **A quién se detiene**: a los hijos nacidos de una llamada del raíz que empezó ANTES de pulsar.
12
+ * No basta «los vivos al pulsar»: si se pulsa mientras el raíz está decidiendo delegar, el hijo
13
+ * que sale de esa decisión nace después, pero de un plan que la persona ya no quiere. Y los que
14
+ * el raíz delegue DESPUÉS de leer la orden corren normal —son el plan nuevo—.
15
+ *
16
+ * **Cómo para un hijo, sin tocar la librería**: la orden entra por `preLLMProcessors` antes de su
17
+ * siguiente llamada, y SU modelo (`modeloParaTrueforge`, construido por hilo en `crearHijo`) tira
18
+ * las tool calls de esa respuesta: una respuesta sin tool calls cierra el hilo con normalidad
19
+ * (`AGENT_DONE`) y su texto le llega al padre como resultado de `create_sub_agent`. Se FILTRA lo
20
+ * que devuelve el modelo, no se le quitan las tools: con el historial lleno de llamadas, algún
21
+ * proveedor rechaza una petición sin la definición de tools.
22
+ *
23
+ * **Y una llamada EN CURSO se corta** (`corte`): medido con el botón, el analista estaba dentro de
24
+ * una llamada de 60 s generando un informe entero cuando se pulsó, y sin corte esa llamada acababa
25
+ * escribiéndolo. Cada hijo lleva su `AbortController`, que aborta SOLO su stream; el modelo del
26
+ * hijo lo captura y pide el resumen en el acto (`modeloLangchain.ts#corte`). Lo que NO se corta:
27
+ * un comando de shell en curso, que termina primero —la orden llega en la llamada siguiente—.
28
+ */
29
+ /** Lo que llega al padre si el hijo, tras filtrar, no dejó texto. */
30
+ export declare const RESUMEN_DE_RELLENO = "[Detenido a petici\u00F3n de la persona antes de poder resumir lo hecho.]";
31
+ export declare function textoDeDetencionParaHijo(texto: string): string;
32
+ export declare function textoDeDetencionParaRaiz(texto: string): string;
33
+ /** El estado de la detención de UN turno. Lo crea la sesión y lo vacía al cerrar el turno. */
34
+ export interface Detencion {
35
+ /** Lo que la persona escribió al pulsar; puede ir vacío. */
36
+ texto: string;
37
+ /** Se detienen los hijos nacidos de una llamada del raíz con índice ≤ éste. */
38
+ hastaLlamadaDelRaiz: number;
39
+ /** Hilos hijo que ya recibieron la orden (y cuyo modelo, desde entonces, no llama tools). */
40
+ avisados: Set<string>;
41
+ raizAvisado: boolean;
42
+ }
43
+ /** Lleva la cuenta que decide a quién se detiene: cuántas llamadas lleva el raíz, y de cuál nació
44
+ * cada hijo. Uno por sesión; `reiniciar` al empezar cada turno. */
45
+ export declare function crearControlDeDetencion(hiloRaiz: string): {
46
+ reiniciar(): void;
47
+ /**
48
+ * Cuántos hijos trabajan a la vez AHORA: los nacidos de la última llamada del raíz. Mientras un
49
+ * hijo vive, el raíz espera su resultado y no vuelve a llamar al modelo, así que lo nacido de
50
+ * llamadas anteriores ya terminó. Lo usa el reparto de notas (`notas.ts`).
51
+ */
52
+ hijosVivos(): number;
53
+ /** Al crear un hijo: nace de la llamada del raíz en curso. */
54
+ nacio(threadId: string): void;
55
+ detener(texto: string): void;
56
+ /** Para el modelo de un hijo, al empezar cada llamada: su señal de corte y la orden que se le da
57
+ * si se corta. Darla lo cuenta como avisado —no la recibe otra vez por el procesador—. */
58
+ corte(threadId: string): {
59
+ senal: AbortSignal;
60
+ orden: () => string;
61
+ } | undefined;
62
+ /** Para el modelo de un hijo: si ya recibió la orden, su respuesta no puede llamar tools. */
63
+ soloTexto(threadId: string): boolean;
64
+ /** Lo que se le mete a ESE hilo antes de su llamada, si algo. Cuenta las llamadas del raíz. */
65
+ antesDeLlamar(threadId: string): string | undefined;
66
+ /** La orden que NADIE llegó a leer —ni el raíz— sale como el turno siguiente, igual que una
67
+ * nota sobrante. Con texto vacío no queda nada que mandar. */
68
+ sobrante(): string | undefined;
69
+ };
70
+ export type ControlDeDetencion = ReturnType<typeof crearControlDeDetencion>;
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Quién no arranca hasta que otro termine, entre HIJOS que el orquestador lanzó a la vez.
3
+ *
4
+ * El orquestador delega en paralelo cuando le parece independiente, y no siempre lo es: en una pasada real lanzó a
5
+ * `developer-xone` y a `designer-xone` a la vez, el desarrollador escribió el `.xne` antes de que el diseñador
6
+ * terminara y **9 de los 26 recursos del diseñador se quedaron sin usar**. La cola por FICHERO solo evita que dos
7
+ * escriban el mismo; no sabe de dependencias.
8
+ *
9
+ * ## Por qué NO se espera bloqueando (y la primera versión lo hacía)
10
+ *
11
+ * Es un dato del `.md` (`espera: [designer-xone]`). La primera versión paraba al desarrollador ANTES de cada
12
+ * llamada al modelo mientras el diseñador estuviera vivo, y **atascó la pasada**: la librería ejecuta todos los hilos
13
+ * activos juntos y solo devuelve el control cuando TODOS terminan su paso, y una aprobación de escritura del
14
+ * diseñador solo se atiende al devolver el control. El desarrollador, parado dentro de su espera, impedía que
15
+ * volviera, y el diseñador no podía acabar sin aprobación: un bloqueo mutuo, con la CPU a cero y sin ningún error. Los
16
+ * tests con dobles no lo vieron porque el diseñador doble no pedía aprobación.
17
+ *
18
+ * Así que ahora **no bloquea nunca**: si al crear el hijo hay uno vivo —o anunciado por el mismo mensaje del
19
+ * orquestador— de los que declara, el hijo **no arranca** y su llamada se devuelve al instante diciéndolo. El
20
+ * orquestador, que ya tiene el informe del otro cuando lo recibe, vuelve a llamarlo con él en el encargo.
21
+ */
22
+ export interface Esperas {
23
+ /** El orquestador acaba de pedir un hilo de `nombre`; todavía no ha nacido. */
24
+ anunciar(nombre: string): void;
25
+ /** Nació un hilo de `nombre` (deja de estar solo anunciado). */
26
+ nacio(nombre: string, hilo: string): void;
27
+ /** El hilo terminó (bien o mal): deja de estar vivo y consta que `nombre` terminó. */
28
+ murio(hilo: string): void;
29
+ /** De esos nombres, cuáles hay vivos o anunciados ahora, sin contar `propio`. */
30
+ vivos(nombres: readonly string[], propio?: string): string[];
31
+ /** De esos nombres, cuáles han terminado en esta conversación. */
32
+ terminados(nombres: readonly string[]): string[];
33
+ /** Los hilos vivos y los anunciados se dieron por muertos (turno cortado, orquestador rehecho). Lo terminado consta. */
34
+ darPorMuertos(): void;
35
+ /** Otra conversación: se olvida todo. */
36
+ olvidar(): void;
37
+ }
38
+ export declare function crearEsperas(): Esperas;
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Los eventos de TrueForge, en los eventos de dominio de XOneCode (`core/events.ts`).
3
+ *
4
+ * Es lo que hace la interfaz transparente al motor: las pieles —web, terminal, tareas— pintan
5
+ * eventos de dominio y no saben qué los produjo. Aquí se decide qué se cuenta de un turno de
6
+ * TrueForge, con las MISMAS reglas que `puente.ts` aplica a los chunks de deepagents:
7
+ *
8
+ * - **Ningún evento lleva argumentos de tool**: la línea de una tool lleva solo el `detalle` de la
9
+ * lista blanca (`resumenDeTool.ts#detalleDe`), y el resultado de una tool no se pinta —
10
+ * `write_file` llevaría el fichero entero—.
11
+ * - **Solo el hilo RAÍZ habla**: lo que dice un subagente no es la respuesta, igual que el
12
+ * `esDelPadre` del puente. Sus tools sí se ven, que es lo que dice que está trabajando, y
13
+ * su RAZONAMIENTO también, pero entero y no a trozos (`PensamientoPorHilo`).
14
+ *
15
+ * Puro sobre los eventos: guarda lo justo entre uno y otro (el uso de la última llamada) y no
16
+ * toca nada más.
17
+ */
18
+ import type { DomainEvent } from "../../../core/events.js";
19
+ /** El uso de UNA llamada al modelo, tal como lo adjunta TrueForge al mensaje completo. */
20
+ export interface UsoDeLlamada {
21
+ input: number;
22
+ output: number;
23
+ cache: number;
24
+ /** Cuántos de los `output` fueron razonamiento. Ausente = el proveedor no lo dice (no es cero). */
25
+ razonamiento?: number;
26
+ }
27
+ /**
28
+ * El tope que agotó un hilo, si ESTE evento es ese corte; `undefined` si no. Vale para el raíz y
29
+ * para cualquier hijo, y existe para la traza: sin él, un especialista cortado por el tope era
30
+ * indistinguible de uno que terminó —medido: la traza decía «cortes: 0» con un documentador que
31
+ * se quedó en exactamente 30 llamadas a mitad de un manual—.
32
+ */
33
+ export declare function topeAgotadoDe(evento: unknown): number | undefined;
34
+ /**
35
+ * El especialista de un hilo hijo, si se sabe: lo contesta la sesión (`quienEs`), que es quien
36
+ * sabe qué hilo abrió cada delegación.
37
+ */
38
+ export type EspecialistaDeHilo = (hilo: string) => string | undefined;
39
+ /**
40
+ * El razonamiento de los HIJOS mientras llega, por hilo. El del raíz se pinta a trozos, en vivo;
41
+ * el de un especialista se guarda aquí y sale ENTERO cuando su mensaje se completa
42
+ * (`internal.agent.context.append`), delante de las tools que decidió. A trozos no se puede:
43
+ * dos especialistas en paralelo intercalan sus trozos, y la piel —que junta los trozos seguidos
44
+ * en un acto— los mezclaría en un párrafo que no pensó nadie.
45
+ *
46
+ * Uno por TURNO: lo que se quede a medias en un turno cortado no es del siguiente.
47
+ */
48
+ export type PensamientoPorHilo = Map<string, string>;
49
+ /**
50
+ * Un evento de TrueForge → cero o más eventos de dominio, y el uso si trae una llamada al modelo
51
+ * terminada (para que quien corre el turno lo sume al contador).
52
+ */
53
+ export declare function traducirEvento(evento: unknown, especialistaDe?: EspecialistaDeHilo, pensamientos?: PensamientoPorHilo): {
54
+ eventos: DomainEvent[];
55
+ uso?: UsoDeLlamada;
56
+ };
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Lo que ESCRIBIÓ un hijo, contado por el harness y entregado a quien lo llamó.
3
+ *
4
+ * Existe por una pasada real (calc10): el orquestador releyó `MenuPrincipal.xne` seis veces y la maqueta cinco tras
5
+ * las vueltas de sus especialistas, porque lo único que le volvía era el texto del hijo y no se fiaba de él. Ninguno
6
+ * de los harnesses revisados (opencode, qwen-code, aider, deepseek-harness, TrueForge) le pasa al padre qué cambió el
7
+ * hijo; aquí el harness ya lo sabe —cada `write_file`/`edit_file` que salió bien pasa por la sesión—, así que se le
8
+ * DICE: qué ficheros, cuántas ediciones y cuántas líneas entran y salen. Nunca el contenido.
9
+ *
10
+ * Llega como UN mensaje de usuario antes de la siguiente llamada del padre (`capacidadDeInformesDeHijos`), el mismo
11
+ * camino que los avisos de vueltas: la respuesta del hijo ya la entregó la librería y no se reescribe.
12
+ */
13
+ import type { Capacidad } from "./capacidades.js";
14
+ /**
15
+ * Las tools PROPIAS que escriben un BINARIO en el proyecto, con el principio de su texto de éxito. Sin contarlas, el
16
+ * informe decía «SIN escribir ningún fichero» de un diseñador que había traído siete fuentes, y el orquestador fue a
17
+ * comprobarlo al disco y mandó al de pruebas a mirar si estaban sanas (pasada real con la maqueta de la calculadora).
18
+ */
19
+ export declare const ESCRITURAS_BINARIAS: Readonly<Record<string, string>>;
20
+ export interface CambioDeFichero {
21
+ ediciones: number;
22
+ /** Lo creó `write_file` en este encargo. */
23
+ nuevo: boolean;
24
+ mas: number;
25
+ menos: number;
26
+ /** Lo escribió una tool de BINARIOS (`ESCRITURAS_BINARIAS`): no hay líneas que contar. */
27
+ binario?: boolean;
28
+ }
29
+ /** ¿Es `nombre` una tool de binarios? Por clave PROPIA: `in` daría por buena `constructor`. */
30
+ export declare function esEscrituraBinaria(nombre: string): boolean;
31
+ /** Lo que suma UNA escritura que salió bien, por sus argumentos (los de la tool, que nunca salen de aquí). */
32
+ export declare function anotarEscritura(cambios: Map<string, CambioDeFichero>, nombre: string, args: Record<string, unknown>): void;
33
+ /**
34
+ * ¿Salió bien? El texto de éxito es el de `toolsDeFichero.ts#ejecutar`, o el de la tool de binarios
35
+ * (`ESCRITURAS_BINARIAS`); un rechazo o un error no cuenta.
36
+ */
37
+ export declare function escrituraConExito(contenido: unknown, nombre?: string): boolean;
38
+ /**
39
+ * El informe para el padre. `escribe` dice si el hijo podía escribir el proyecto: a uno que no podía no se le
40
+ * atribuye nada, y a uno que podía y no escribió se le dice —un «ya está hecho» sin ninguna escritura es justo lo
41
+ * que el padre tiene que saber—.
42
+ */
43
+ export declare function textoDelInforme(quien: string, cambios: ReadonlyMap<string, CambioDeFichero>, escribe: boolean, medida?: string): string | undefined;
44
+ /**
45
+ * Entrega, antes de la siguiente llamada del hilo, los informes que le esperan (`pendientes` los CONSUME: cada uno
46
+ * sale una vez). Va en el raíz y en quien puede llamar a otros. No añade tools.
47
+ */
48
+ export declare function capacidadDeInformesDeHijos(pendientes: (hilo: string) => string[]): Capacidad;
@@ -0,0 +1,37 @@
1
+ import { type Comparacion } from "../../../core/compararCapturas.js";
2
+ /**
3
+ * Rondas VISUALES por encargo: una por captura medida. calc9, calc12 y calc13 sacaron 20-25 capturas cada una, retocando
4
+ * una o dos cosas por despliegue. Con el aviso, la última se DICE: después se devuelve con lo que falta. Eran tres, y medido
5
+ * en Maset con DeepSeek flash el desarrollador devolvía a la tercera con una fila de la maqueta sin pintar: se subieron
6
+ * a cinco. El prompt del desarrollador dice este MISMO número (`textoDelBucle`).
7
+ */
8
+ export declare const RONDAS_VISUALES = 5;
9
+ /** El criterio de aceptación por omisión del bucle (`textoDelBucle`): por debajo, en vertical Y en horizontal. */
10
+ export declare const CRITERIO_DE_DISTANCIA = 0.1;
11
+ /**
12
+ * La maqueta de la sesión. PRIMERO la traída de Stitch (`/artefactos/diseno/screen.*`, `traerDeStitch.ts`):
13
+ * traerla es un acto de ESTA sesión, así que manda sobre una carpeta del proyecto que puede ser de otro
14
+ * encargo. Después `/diseno/screen.png`, la primera imagen de `/diseno/` y la de los adjuntos.
15
+ */
16
+ export declare function buscarMaqueta(raiz: string, adjuntos?: string, artefactos?: string): {
17
+ virtual: string;
18
+ disco: string;
19
+ } | undefined;
20
+ /** La captura MÁS RECIENTE de la carpeta de artefactos escrita desde `desdeMs`, con su nombre relativo (dos niveles). */
21
+ export declare function ultimaCaptura(carpeta: string, desdeMs: number): string | undefined;
22
+ /** Mide una captura contra la maqueta. Lanza si alguna no se puede abrir o decodificar: quien llama lo traga. */
23
+ export declare function medirContraMaqueta(captura: string, maqueta: string): Comparacion;
24
+ /** ¿Cumple el criterio? En las DOS direcciones Y encajando en la pantalla: cada borde del contenido cerca del de la maqueta. */
25
+ export declare function cumpleElCriterio(c: Pick<Comparacion, "distanciaVertical" | "distanciaHorizontal" | "encaje">): boolean;
26
+ /** La cifra corta, para el informe al orquestador. */
27
+ export declare function resumenDeMedida(c: Pick<Comparacion, "distanciaVertical" | "distanciaHorizontal" | "encaje">, captura: string): string;
28
+ /** El mensaje para quien llamó a quien ejecuta. `pedirCritica`: no ha pasado el crítico desde su última escritura. */
29
+ export declare function textoDeMedidaAutomatica(opciones: {
30
+ quien: string;
31
+ captura: string;
32
+ maqueta: string;
33
+ comparacion: Comparacion;
34
+ pedirCritica: boolean;
35
+ /** Qué ronda visual es esta para quien la recibe (1, 2…). Ausente: no se cuenta. */
36
+ ronda?: number;
37
+ }): string;
@@ -0,0 +1,60 @@
1
+ /** Hasta aquí se guarda el historial ENTERO. Provisional: el orden de un conductor o un consultor. */
2
+ export declare const TOPE_COMPLETA_TOKENS = 48000;
3
+ /** Hasta aquí se guarda REDUCIDO; por encima se olvida. Provisional. */
4
+ export declare const TOPE_REDUCIDA_TOKENS = 40000;
5
+ /** Lo que se conserva de lo que devolvió cada tool en la versión reducida. */
6
+ export declare const MAX_CARACTERES_DE_RESULTADO = 500;
7
+ /** A partir de cuántos caracteres un argumento de una llamada a tool (el contenido de un `write_file`, el texto de un `edit_file`) hace que esa llamada se CUENTE en vez de guardarse (`reducirHistorial`). */
8
+ export declare const MAX_CARACTERES_DE_ARGUMENTO = 300;
9
+ /**
10
+ * Los ENCARGOS que un especialista hizo a otro (`create_sub_agent`) se conservan enteros hasta aquí. Son cortos y son
11
+ * lo que necesita recordar; y recortados le enseñaban a cortar los nuevos (ver `reducirHistorial`).
12
+ */
13
+ export declare const MAX_CARACTERES_DE_ENCARGO = 8000;
14
+ /**
15
+ * El historial sin lo voluminoso: lo que devolvió cada tool se recorta (con la marca de que se recortó, para
16
+ * que el modelo sepa que puede releerlo), los argumentos largos de sus llamadas también, y el razonamiento de
17
+ * las vueltas viejas se quita. Lo que el especialista DIJO y a qué fichero o búsqueda apuntó cada llamada se
18
+ * conservan. Puro.
19
+ */
20
+ export declare function reducirHistorial(mensajes: readonly unknown[], maxResultado?: number, maxArgumento?: number): unknown[];
21
+ /**
22
+ * La VENTANA: lo más reciente que cabe. Cada delegación empieza con un mensaje de usuario (el encargo o el «NUEVO
23
+ * ENCARGO»), así que se descartan delegaciones ENTERAS, las más antiguas primero: una llamada a tool y su respuesta
24
+ * viven dentro de la misma delegación y nunca quedan partidas. Si ni la última cabe sola, se queda con su encargo y
25
+ * lo último que dijo el especialista, que es lo que contó que había hecho.
26
+ *
27
+ * Existe porque en la primera prueba larga «olvidada-por-tope» llegó a borrar la memoria de los cuatro
28
+ * especialistas que más trabajaban, incluido lo reciente: perder lo viejo es aceptable, perder lo que acaba de
29
+ * pasar no. Puro.
30
+ */
31
+ export declare function ventanaDeHistorial(mensajes: readonly unknown[], topeTokens: number): unknown[];
32
+ export interface EncarnacionPrevia {
33
+ /** Los mensajes con los que arranca el hijo nuevo, ya saneados. */
34
+ mensajes: unknown[];
35
+ tokens: number;
36
+ }
37
+ /** Por qué una encarnación arranca sin memoria, para la traza. */
38
+ export type SinMemoria = "primera" | "hilo-vivo" | "olvidada-por-tope" | "olvidada-por-fallo";
39
+ export interface MemoriaDeEspecialistas {
40
+ /** Abre una encarnación de `nombre`: su memoria si la hay y se puede usar, o el motivo de no. */
41
+ abrir(nombre: string, hilo: string): {
42
+ previa: EncarnacionPrevia;
43
+ } | {
44
+ sin: SinMemoria;
45
+ };
46
+ /** La encarnación `hilo` terminó: guarda su historial completo (o lo olvida si falló o pasó el tope). */
47
+ cerrar(hilo: string, resultado: {
48
+ bien: boolean;
49
+ mensajes: readonly unknown[];
50
+ tokens: number;
51
+ }): SinMemoria | "guardada" | "guardada-reducida" | "guardada-ventana";
52
+ /** Los hilos vivos se dieron por muertos (turno cortado, orquestador rehecho). La memoria se queda. */
53
+ darPorMuertos(): void;
54
+ /** Otra conversación: se olvida todo. */
55
+ olvidar(): void;
56
+ }
57
+ export declare function crearMemoriaDeEspecialistas(topes?: {
58
+ completa?: number;
59
+ reducida?: number;
60
+ }): MemoriaDeEspecialistas;
@@ -0,0 +1,131 @@
1
+ /** Lo que se guarda de un hilo: lo que su constructor sabe recibir de vuelta. */
2
+ export interface FotoDeHilo {
3
+ context: unknown[];
4
+ current_context_usage?: unknown;
5
+ capability_state?: Record<string, unknown> | null;
6
+ /**
7
+ * La pregunta del orquestador (`ask_user_question`) que espera respuesta. Va CON la foto porque
8
+ * sin ella, al reabrir, la respuesta de la persona entraría como un mensaje nuevo y la pregunta
9
+ * se quedaría saldada como incompleta. Mientras esté, su tool call NO se salda.
10
+ */
11
+ pregunta_pendiente?: PreguntaPendiente;
12
+ }
13
+ /** La pregunta en espera: en qué hilo, qué tool call contesta y con qué opciones. */
14
+ export interface PreguntaPendiente {
15
+ hilo: string;
16
+ id: string;
17
+ args: Record<string, unknown>;
18
+ /** El encargo que provocó la pregunta: sin él, tras reabrir, el juez y la reparación del
19
+ * turno de la respuesta no tendrían contra qué medir. Opcional: una v1 anterior no lo trae. */
20
+ encargo?: string;
21
+ }
22
+ /** Dónde vive la memoria de la sesión `hilo`, o `undefined` si el id no es un segmento llano. */
23
+ export declare function rutaDeMemoria(raiz: string, hilo: string): string | undefined;
24
+ /** El texto con que se salda una tool call que el turno no llegó a contestar. */
25
+ export declare const RESPUESTA_A_UNA_COLGADA: string;
26
+ /**
27
+ * El texto con que se salda una tool call que una INTERRUPCIÓN dejó sin respuesta: el proceso se
28
+ * paró a mitad de turno (un corte duro, sin cierre ordenado) y la foto que se reabre es la que se
29
+ * guardó A MITAD. No puede ser `RESPUESTA_A_UNA_COLGADA`: su «vuelve a pedirlo» invita a repetir
30
+ * un encargo cuyo especialista ya pudo dejar ediciones en el disco, y repetirlo las duplicaría.
31
+ * Lo escrito es «al menos»: se cuenta por hilo y un nieto que ya devolvió no siempre consta.
32
+ */
33
+ export declare function textoDeInterrupcion(llamada: {
34
+ especialista?: string;
35
+ escritos: readonly string[];
36
+ }): string;
37
+ /**
38
+ * El contexto con las tool calls del ÚLTIMO mensaje del asistente que no tienen respuesta,
39
+ * saldadas. Solo el último: una anterior sin respuesta ya habría roto la conversación antes.
40
+ * Puro: no toca el contexto que recibe. `textoDe` da el texto de cada una (por omisión,
41
+ * `RESPUESTA_A_UNA_COLGADA`): la foto a mitad de turno salda con el de una interrupción.
42
+ */
43
+ export declare function saldarColgadas(context: readonly unknown[], excepto?: string, textoDe?: (id: string, nombre: string | undefined) => string): unknown[];
44
+ /** La foto lista para guardar o para rehacer el hilo: con las colgadas saldadas. */
45
+ export declare function fotoSaneada(foto: FotoDeHilo): FotoDeHilo;
46
+ /**
47
+ * La versión del formato de la foto en disco. Sube cuando cambia lo que se escribe, y cada subida
48
+ * trae su entrada en `MIGRACIONES`: una foto de antes se MIGRA al leerla, nunca se descarta por
49
+ * vieja. Es NUESTRA, no la de la librería: la de la librería va aparte, en `trueforge`.
50
+ *
51
+ * El formato v1, entero —y nada más, que es lo que hace estricta la lectura—:
52
+ *
53
+ * ```json
54
+ * { "version": 1, "trueforge": "0.2.1", "context": [...],
55
+ * "current_context_usage": {...}, "capability_state": {...} | null,
56
+ * "pregunta_pendiente": { "hilo": "...", "id": "...", "args": {...}, "encargo"?: "..." } }
57
+ * ```
58
+ *
59
+ * Solo `version` y `context` son obligatorios. `trueforge` es la versión de la librería que
60
+ * escribió el `toSnapshot()`: se APUNTA, no se exige —rechazar por ella tiraría todas las
61
+ * conversaciones en cada subida de la librería—, y está para que una migración futura sepa de
62
+ * dónde parte. Falta en una foto MIGRADA desde v0, porque no se inventa lo que no consta; el
63
+ * guardado siguiente la sella.
64
+ */
65
+ export declare const VERSION_DE_MEMORIA = 1;
66
+ /** Lo que se lee de disco antes de entenderlo: un objeto JSON cualquiera. */
67
+ type FotoCruda = Record<string, unknown>;
68
+ /**
69
+ * De cada versión a la SIGUIENTE: devuelve la foto migrada o el MOTIVO por el que no se puede.
70
+ * Puras, y se encadenan (`interpretarFoto`), así que una foto de hace tres versiones pasa por
71
+ * las tres. Una migración no valida el resultado final: eso lo hace UNA vez `validarV1`.
72
+ */
73
+ export declare const MIGRACIONES: Readonly<Record<number, (foto: FotoCruda) => FotoCruda | string>>;
74
+ /** Lo que devuelve leer la memoria: no hay, se entiende, o hay y no se entiende (con el porqué). */
75
+ export type LecturaDeMemoria = {
76
+ estado: "sin-memoria";
77
+ } | {
78
+ estado: "ok";
79
+ foto: FotoDeHilo;
80
+ } | {
81
+ estado: "incompatible";
82
+ motivo: string;
83
+ };
84
+ /**
85
+ * El TEXTO de una foto, entendido: migrado hasta la versión actual y validado, o el motivo por el
86
+ * que no. Pura, y es toda la regla de la lectura. El motivo nunca repite el contenido —un error de
87
+ * `JSON.parse` cita un trozo del fichero, que lleva mensajes enteros— ni ninguna ruta.
88
+ */
89
+ export declare function interpretarFoto(texto: string): Exclude<LecturaDeMemoria, {
90
+ estado: "sin-memoria";
91
+ }>;
92
+ /**
93
+ * Escribe la foto, en el formato ACTUAL: la versión y la de la librería las SELLA aquí quien
94
+ * escribe, no quien llama, y los campos van por lista cerrada —lo que `toSnapshot()` traiga de más
95
+ * no llega a disco, y así la lectura estricta no rechaza lo que este mismo código escribió—.
96
+ * El fichero se CREA con 0600 antes de tener contenido y se reemplaza con `renameSync`, para que
97
+ * un corte a mitad no deje media conversación ni un JSON roto.
98
+ */
99
+ export declare function guardarMemoria(raiz: string, hilo: string, foto: FotoDeHilo): void;
100
+ /**
101
+ * La memoria de la sesión, con su estado. No tener fichero es `sin-memoria`, no un fallo; uno que
102
+ * existe y no se puede leer es `incompatible` con el `code` de Node y nada más (su mensaje lleva
103
+ * la ruta absoluta). NO aparta ni borra nada: esto lo llama también quien solo PREGUNTA
104
+ * (`hayMemoria`, la web al reabrir), y preguntar no puede mover ficheros.
105
+ */
106
+ export declare function cargarMemoria(raiz: string, hilo: string): LecturaDeMemoria;
107
+ /** La foto guardada y entendida, o `undefined` si no hay o no se entiende (ver `cargarMemoria`). */
108
+ export declare function leerMemoria(raiz: string, hilo: string): FotoDeHilo | undefined;
109
+ /**
110
+ * ¿Hay una conversación de TrueForge que continuar en esta sesión? Solo si la foto se ENTIENDE:
111
+ * una incompatible no se va a cargar, y decir que sí haría que la web presentara como continuada
112
+ * una sesión que empieza de cero.
113
+ */
114
+ export declare function hayMemoria(raiz: string, hilo: string): boolean;
115
+ /**
116
+ * Aparta la foto que no se entiende, con otro nombre y en la MISMA carpeta, y devuelve ese nombre
117
+ * (solo el nombre: viaja a la pantalla). Apartar y no borrar, porque no la entendemos y puede que
118
+ * un XOneCode más nuevo sí; y apartar y no dejarla, porque el guardado del primer turno la pisaría.
119
+ * Un nombre que ya existe nunca se pisa. Si no se puede, devuelve `undefined` y quien llama lo
120
+ * DICE: la foto se queda donde estaba y el siguiente guardado la sustituirá.
121
+ */
122
+ export declare function apartarMemoria(raiz: string, hilo: string, ahora?: number): string | undefined;
123
+ /**
124
+ * El aviso de una memoria que no se cargó, con el motivo y con lo que se hizo con la foto. Se
125
+ * emite UNA vez, en el primer turno: es cuando importa, porque es el turno en que el modelo no
126
+ * recuerda lo que la pantalla enseña. Solo con una foto que EXISTÍA: sin foto no ha pasado nada.
127
+ */
128
+ export declare function textoDeMemoriaDescartada(motivo: string, apartada: string | undefined): string;
129
+ /** Borra la memoria de la sesión, las fotos apartadas incluidas: lo llama el borrado de una sesión. */
130
+ export declare function olvidarMemoria(raiz: string, hilo: string): void;
131
+ export {};
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Las métricas PROPIAS de TrueForge (`AgentThreadOrchestrator.getMetrics()`), puestas al lado de
3
+ * las nuestras como CONTRASTE, no como sustituto.
4
+ *
5
+ * Las nuestras salen de traducir cada evento (`eventosTrueforge.ts#traducirEvento`) y son las que
6
+ * se enseñan y se guardan, porque son las mismas cuentas que las de deepagents. Las de la librería
7
+ * las lleva ella por dentro. Si las dos divergen, una de las dos cuenta mal, y hasta ahora no había
8
+ * forma de enterarse: esto lo apunta en la traza (`XONECODE_TRACE_TOOLS=1`) y `xonecode traza` lo
9
+ * dice. Puro, para poder probar la regla sin montar un turno.
10
+ *
11
+ * Se lee al final de CADA turno y es de ESE turno: el raíz se rehace desde su foto al acabar
12
+ * (`sesionTrueforge.ts`), así que el árbol que se mide es el de un solo turno.
13
+ */
14
+ /** Lo que dice NUESTRA cuenta de un turno: el delta del tracker. */
15
+ export interface CifrasDelTurno {
16
+ entrada: number;
17
+ salida: number;
18
+ cache: number;
19
+ llamadas: number;
20
+ }
21
+ /** Lo que dice la de TrueForge, con los nombres nuestros. Ausente = la librería no lo trae. */
22
+ export interface MetricasDeTrueforge {
23
+ entrada: number;
24
+ salida: number;
25
+ cache?: number;
26
+ iteraciones: number;
27
+ tools: number;
28
+ subagentes: number;
29
+ resumenes: number;
30
+ costeUsd?: number;
31
+ }
32
+ /** De la forma de la librería (`AgentThreadMetrics`) a la nuestra; lo que no es número no consta. */
33
+ export declare function metricasDeTrueforge(m: Record<string, unknown>): MetricasDeTrueforge;
34
+ /**
35
+ * En qué difieren, dicho con las dos cifras. Vacío = coinciden.
36
+ *
37
+ * Los TOKENS se comparan tal cual: los dos lados suman el mismo `usage` de cada llamada, así que
38
+ * cualquier diferencia es una cuenta que se pierde en uno de ellos. Las LLAMADAS no se cuentan
39
+ * igual, y las dos diferencias están MEDIDAS contra la librería real: un hijo EXTERNO es una
40
+ * iteración para ella y cero llamadas para nosotros —su gasto es del producto, en la cuenta
41
+ * `externo`—; y una COMPACTACIÓN es una llamada para nosotros —se paga— y para ella no es una
42
+ * iteración, la lleva aparte en `resumenes`. Las dos se ajustan antes de comparar. Y la caché solo
43
+ * si la librería la trae: ausente no es cero.
44
+ */
45
+ export declare function diferenciasDelContraste(nuestras: CifrasDelTurno, suyas: MetricasDeTrueforge, hijosExternos: number): string[];
@@ -0,0 +1,9 @@
1
+ import type { PeticionExterna, SubagenteExternoPort } from "../../../core/ports.js";
2
+ import type { ILLM } from "./trueforge.js";
3
+ export declare function modeloExternoParaTrueforge(opciones: {
4
+ puerto: SubagenteExternoPort;
5
+ /** La petición entera menos la señal, compuesta al DELEGAR (instrucciones e inventario frescos). */
6
+ peticion: () => Omit<PeticionExterna, "senal">;
7
+ /** La cancelación del turno: se le pasa al producto para que no quede un proceso vivo. */
8
+ senal?: () => AbortSignal | undefined;
9
+ }): ILLM;
@@ -0,0 +1,69 @@
1
+ /**
2
+ * El modelo de TrueForge (`ILLM`) hecho con NUESTRO modelo de LangChain.
3
+ *
4
+ * TrueForge trae su propio cliente (`VercelAILLM`), que construye el modelo desde una
5
+ * configuración de proveedor. No se usa, y es la decisión que hace el motor intercambiable sin
6
+ * que se note: nuestros modelos salen de `Modelos.paraPapel()` ya con todo lo que se les ha ido
7
+ * poniendo —el `user_id` de DeepSeek, el eco de su razonamiento, el tope de salida y el
8
+ * pensamiento adaptativo de Claude, el esfuerzo por modelo—, y reconstruirlos con la
9
+ * configuración de TrueForge lo perdería todo en silencio.
10
+ *
11
+ * El contrato de TrueForge habla en la forma de las chat completions de OpenAI, así que esto es
12
+ * una traducción en los dos sentidos: los mensajes que manda a mensajes de LangChain, y el stream
13
+ * de LangChain a los fragmentos que espera.
14
+ *
15
+ * **La cancelación entra por aquí**: `ILLM.create` no recibe señal, así que la de la llamada en
16
+ * curso se pide a `senal()` en cada `create`, y quien corre el turno la pone.
17
+ */
18
+ import { type BaseMessage } from "@langchain/core/messages";
19
+ import type { ILLM } from "./trueforge.js";
20
+ type MensajeOpenAi = {
21
+ role: string;
22
+ content?: unknown;
23
+ tool_calls?: {
24
+ id: string;
25
+ function: {
26
+ name: string;
27
+ arguments: string;
28
+ };
29
+ }[];
30
+ tool_call_id?: string;
31
+ reasoning_content?: string;
32
+ };
33
+ /** Los mensajes que manda TrueForge, en mensajes de LangChain. */
34
+ export declare function aMensajesDeLangchain(mensajes: readonly MensajeOpenAi[]): BaseMessage[];
35
+ /**
36
+ * Un `ILLM` sobre un modelo de LangChain. `modelo` y `senal` son funciones y no valores: el modelo
37
+ * cambia con `/modelo` sin rehacer el hilo, y la señal es la de la llamada EN CURSO.
38
+ */
39
+ export declare function modeloParaTrueforge(opciones: {
40
+ modelo: () => unknown;
41
+ senal?: () => AbortSignal | undefined;
42
+ nombre?: string;
43
+ /**
44
+ * DETENER (`detencion.ts`): mientras devuelva un texto, la respuesta NO lleva tool calls —se
45
+ * tiran del stream y del mensaje final— y, si no queda texto, lleva ése. Una respuesta sin tool
46
+ * calls cierra el hilo. Se pregunta en cada llamada.
47
+ */
48
+ soloTexto?: () => string | undefined;
49
+ /** Cuántas tool calls se tiraron por `soloTexto`: la medida de si el filtro hace falta. */
50
+ alTirarLlamadas?: (cuantas: number) => void;
51
+ /**
52
+ * DETENER a MITAD de una llamada: la señal que corta SOLO el stream de este hijo —no el turno—
53
+ * y la orden con la que se le pide el resumen. Si se aborta mientras genera, la llamada no
54
+ * falla: se relanza en el acto con lo que ya había dicho y la orden al final, sin tool calls, y
55
+ * a la librería le llega UNA respuesta normal de texto —que cierra el hilo—. Se pregunta al
56
+ * empezar cada llamada; con `soloTexto` ya activo no hace falta (la orden llegó antes).
57
+ */
58
+ corte?: () => {
59
+ senal: AbortSignal;
60
+ orden: () => string;
61
+ } | undefined;
62
+ /**
63
+ * Cuántos de los tokens de salida de una llamada fueron RAZONAMIENTO. La librería reconstruye el
64
+ * uso de sus eventos sin ese campo, así que se avisa aquí, a la salida del adaptador, con los
65
+ * tokens de salida para emparejarlo con el evento.
66
+ */
67
+ alRazonar?: (salida: number, razonamiento: number) => void;
68
+ }): ILLM;
69
+ export {};
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Una nota escrita mientras el agente trabaja (IXCODE-4), con UN dueño.
3
+ *
4
+ * Se entregaba a CADA hilo como encargo, y eso se midió con una prueba real (MyAllXOne): «y créame
5
+ * un diagrama» llegó al analista, que lo dibujó, y al volver el orquestador la recibió igual de
6
+ * nueva y se lo encargó otra vez a `designer-xone` — el diagrama, dos veces. La regla ahora:
7
+ *
8
+ * - **Si trabaja UN solo hijo, la nota es suya**: la incorpora si le cabe en el encargo, y si no, la
9
+ * devuelve como pendiente (`textoDeNotaParaHijo`).
10
+ * - **Con VARIOS en paralelo no es de ninguno**: dársela a uno sería una carrera, y a todos es el
11
+ * bug de arriba. La decide el raíz al volver, como encargo.
12
+ * - **Sin hijos trabajando, es del raíz**, que es quien planifica.
13
+ * - **El raíz la ve SIEMPRE**, y si ya tenía dueño la ve como INFORMACIÓN: a quién se le pasó y que
14
+ * no la vuelva a encargar (`textoDeNotaYaEntregada`).
15
+ * - Un hijo nacido cuando la nota ya tiene dueño —o ya la vio el raíz— no la recibe: el raíz la
16
+ * tiene en cuenta al delegar.
17
+ *
18
+ * «Trabajan a la vez» = los hijos nacidos de la última llamada del raíz: mientras un hijo vive, el
19
+ * raíz espera su resultado y no llama al modelo (`detencion.ts#hijosVivos`). Un hijo EXTERNO no
20
+ * pasa por los procesadores, así que nunca se la queda: la recoge el raíz.
21
+ */
22
+ export interface Nota {
23
+ texto: string;
24
+ /** `thread_id` de quien se la quedó como encargo. Ausente: todavía de nadie. */
25
+ duenio?: string;
26
+ vistaPorElRaiz: boolean;
27
+ }
28
+ export declare function crearNota(texto: string): Nota;
29
+ /** Lo que hace falta saber del árbol en el momento de entregar. */
30
+ export interface ContextoDeEntrega {
31
+ hiloRaiz: string;
32
+ /** Cuántos hijos trabajan a la vez ahora mismo. */
33
+ hijosVivos: number;
34
+ /** El nombre con que el raíz conoce a un hilo hijo (su especialista). */
35
+ nombreDe: (threadId: string) => string;
36
+ }
37
+ /** Para el raíz: lo que la persona le dijo. */
38
+ export declare function textoDeNota(texto: string): string;
39
+ /** Para un hijo: su interlocutor normal es quien le delegó, así que se dice que viene de fuera, y
40
+ * se le da la salida si no es de su encargo. */
41
+ export declare function textoDeNotaParaHijo(texto: string): string;
42
+ /** Para el raíz, cuando la nota ya se la quedó un hijo. */
43
+ export declare function textoDeNotaYaEntregada(texto: string, quien: string): string;
44
+ /** Los textos que se le meten a ESE hilo antes de su llamada, marcando lo entregado. */
45
+ export declare function entregarNotas(notas: readonly Nota[], threadId: string, ctx: ContextoDeEntrega): string[];
46
+ /** Lo que NADIE se quedó, para mandarlo como el turno siguiente. `undefined` si no queda ninguna —
47
+ * así el llamador no confunde "sin sobrantes" con una cadena vacía. */
48
+ export declare function sobrantes(notas: readonly Nota[]): string | undefined;
@@ -0,0 +1,30 @@
1
+ import { z } from "zod";
2
+ import { NOMBRE_PROPONER_TAREAS, type PropuestaDeTareas } from "../../../core/repartoDeEncargo.js";
3
+ export { NOMBRE_PROPONER_TAREAS };
4
+ export declare function crearProponerTareas(proponer: (p: PropuestaDeTareas) => void): import("@langchain/core/tools").DynamicStructuredTool<z.ZodObject<{
5
+ motivo: z.ZodString;
6
+ tareas: z.ZodArray<z.ZodObject<{
7
+ titulo: z.ZodString;
8
+ peticion: z.ZodString;
9
+ adjuntos: z.ZodOptional<z.ZodArray<z.ZodString>>;
10
+ }, z.core.$strip>>;
11
+ }, z.core.$strip>, {
12
+ motivo: string;
13
+ tareas: {
14
+ titulo: string;
15
+ peticion: string;
16
+ adjuntos?: string[] | undefined;
17
+ }[];
18
+ }, {
19
+ motivo: string;
20
+ tareas: {
21
+ titulo: string;
22
+ peticion: string;
23
+ adjuntos?: string[] | undefined;
24
+ }[];
25
+ }, string, unknown, "proponer_tareas">;
26
+ /**
27
+ * Lo que el raíz sabe de `proponer_tareas`, solo cuando la tiene. Preguntar ANTES es petición de la persona: la tarea no
28
+ * verá esta conversación, así que lo que falte en su encargo lo adivinaría.
29
+ */
30
+ export declare const REPARTIR_EN_TAREAS: string;